From: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
The usage of in_interrupt() in drivers is phased out and Linus clearly
requested that code which changes behaviour depending on context should
either be seperated or the context be conveyed in an argument passed by the
caller, which usually knows the context.
brcmf_fweh_process_event() uses in_interrupt() to select the allocation
mode GFP_KERNEL/GFP_ATOMIC. Aside of the above reasons this check is
incomplete as it cannot detect contexts which just have preemption or
interrupts disabled.
All callchains leading to brcmf_fweh_process_event() can clearly identify
the calling context. Convey a 'gfp' argument through the callchains and let
the callers hand in the appropriate GFP mode.
This has also the advantage that any change of execution context or
preemption/interrupt state in these callchains will be detected by the
memory allocator for all GFP_KERNEL allocations.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
---
V2: Adopt to the 'inirq' changes
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 10 ++++++----
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c | 8 ++------
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h | 7 ++++---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c | 2 +-
4 files changed, 13 insertions(+), 14 deletions(-)
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature