linux-stable/drivers/net/bna
Shyam Iyer 8279171a5f Separate handling of irq type flags variable from the irq_flags request_irq variable
Commit 5f77898de1 does not completely
fix the problem of handling allocations with irqs disabled..  The
below patch on top of it fixes the problem completely.

Based on review by "Ivan Vecera" <ivecera@redhat.com>..
"
Small note, the root of the problem was that non-atomic allocation was requested with IRQs disabled. Your patch description does not contain wwhy were the IRQs disabled.

The function bnad_mbox_irq_alloc incorrectly uses 'flags' var for two different things, 1) to save current CPU flags and 2) for request_irq
call.
First the spin_lock_irqsave disables the IRQs and saves _all_ CPU flags (including one that enables/disables interrupts) to 'flags'. Then the 'flags' is overwritten by 0 or 0x80 (IRQF_SHARED). Finally the spin_unlock_irqrestore should restore saved flags, but these flags are now either 0x00 or 0x80. The interrupt bit value in flags register on x86 arch is 0x100.
This means that the interrupt bit is zero (IRQs disabled) after spin_unlock_irqrestore so the request_irq function is called with disabled interrupts.
"

Signed-off-by: Shyam Iyer <shyam_iyer@dell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-07-15 08:08:26 -07:00
..
bfa_cee.c drivers/net: Remove casts of void * 2011-06-21 15:48:29 -07:00
bfa_cee.h bna: Fixed build break for allyesconfig 2010-08-25 23:00:27 -07:00
bfa_defs.h bna: IOC failure auto recovery fix 2010-12-25 19:16:03 -08:00
bfa_defs_cna.h
bfa_defs_mfg_comm.h bna: IOC uninit check and misc cleanup 2010-12-25 19:16:01 -08:00
bfa_defs_status.h
bfa_ioc.c net:bna: fix compile warning of ‘bfa_ioc_smem_pgoff’ defined but not used 2011-04-19 20:11:42 -07:00
bfa_ioc.h bna: fix for clean fw re-initialization 2011-04-14 13:39:44 -07:00
bfa_ioc_ct.c bna: fix for clean fw re-initialization 2011-04-14 13:39:44 -07:00
bfa_sm.h bna: scope and dead code cleanup 2010-10-05 20:39:39 -07:00
bfa_wc.h
bfi.h bna: fix for clean fw re-initialization 2011-04-14 13:39:44 -07:00
bfi_cna.h
bfi_ctreg.h bna: IOC failure auto recovery fix 2010-12-25 19:16:03 -08:00
bfi_ll.h
bna.h bna: IOC failure auto recovery fix 2010-12-25 19:16:03 -08:00
bna_ctrl.c bna: Fix set-but-unused variables. 2011-04-17 16:54:08 -07:00
bna_hw.h Fix common misspellings 2011-03-31 11:26:23 -03:00
bna_txrx.c bna: Fix set-but-unused variables. 2011-04-17 16:54:08 -07:00
bna_types.h bna: Removed unused code 2010-12-25 19:16:02 -08:00
bnad.c Separate handling of irq type flags variable from the irq_flags request_irq variable 2011-07-15 08:08:26 -07:00
bnad.h net: bna: convert to hw_features 2011-04-12 14:50:44 -07:00
bnad_ethtool.c ethtool: cosmetic: Use ethtool ethtool_cmd_speed API 2011-04-29 14:03:01 -07:00
cna.h net: Remove unneeded version.h includes from drivers/net/ 2011-06-24 02:40:08 -07:00
cna_fwimg.c bna: scope and dead code cleanup 2010-10-05 20:39:39 -07:00
Makefile