diff options
author | Dan Carpenter <dan.carpenter@oracle.com> | 2013-04-16 09:51:28 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-04-22 21:20:14 +0200 |
commit | 703a4e5521dcd6624a8740c5be597c4fc8e4b9bb (patch) | |
tree | 727c0e019543dc1ad7a2117d22c0fdad1831b883 | |
parent | ath9k: change DFS logging to use ath_dbg() (diff) | |
download | linux-703a4e5521dcd6624a8740c5be597c4fc8e4b9bb.tar.xz linux-703a4e5521dcd6624a8740c5be597c4fc8e4b9bb.zip |
ath9k: use GFP_ATOMIC under spinlock
This is called with spinlocks held so we have to use GFP_ATOMIC. It's
the sc_pcu_lock in ath9k_stop() that's the issue. The call tree looks
like this:
ath9k_stop()
ath_prepare_reset()
ath_stoprecv()
ath_flushrecv()
ath_rx_tasklet()
ath9k_dfs_process_phyerr()
pd->add_pulse() => dpd_add_pulse()
channel_detector_get()
channel_detector_create()
pri_detector_init()
channel_detector_create() uses GFP_ATOMIC as well.
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Tested-by: Zefir Kurtisi <zefir.kurtisi@neratec.com>
Acked-by: Zefir Kurtisi <zefir.kurtisi@neratec.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath9k/dfs_pri_detector.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/dfs_pri_detector.c b/drivers/net/wireless/ath/ath9k/dfs_pri_detector.c index b3e7cf2da222..344b5d5d369d 100644 --- a/drivers/net/wireless/ath/ath9k/dfs_pri_detector.c +++ b/drivers/net/wireless/ath/ath9k/dfs_pri_detector.c @@ -406,7 +406,8 @@ static struct pri_sequence *pri_detector_add_pulse(struct pri_detector *de, struct pri_detector *pri_detector_init(const struct radar_detector_specs *rs) { struct pri_detector *de; - de = kzalloc(sizeof(*de), GFP_KERNEL); + + de = kzalloc(sizeof(*de), GFP_ATOMIC); if (de == NULL) return NULL; de->exit = pri_detector_exit; |