Skip to content

Commit 40bea97

Browse files
miaoqing-pankvalo
authored andcommitted
ath9k: fix NULL pointer dereference
relay_open() may return NULL, check the return value to avoid the crash. BUG: unable to handle kernel NULL pointer dereference at 0000000000000040 IP: [<ffffffffa01a95c5>] ath_cmn_process_fft+0xd5/0x700 [ath9k_common] PGD 41cf28067 PUD 41be92067 PMD 0 Oops: 0000 [raspberrypi#1] SMP CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.8.6+ raspberrypi#35 Hardware name: Hewlett-Packard h8-1080t/2A86, BIOS 6.15 07/04/2011 task: ffffffff81e0c4c0 task.stack: ffffffff81e00000 RIP: 0010:[<ffffffffa01a95c5>] [<ffffffffa01a95c5>] ath_cmn_process_fft+0xd5/0x700 [ath9k_common] RSP: 0018:ffff88041f203ca0 EFLAGS: 00010293 RAX: 0000000000000000 RBX: 000000000000059f RCX: 0000000000000000 RDX: 0000000000000000 RSI: 0000000000000040 RDI: ffffffff81f0ca98 RBP: ffff88041f203dc8 R08: ffffffffffffffff R09: 00000000000000ff R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 R13: ffffffff81f0ca98 R14: 0000000000000000 R15: 0000000000000000 FS: 0000000000000000(0000) GS:ffff88041f200000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000040 CR3: 000000041b6ec000 CR4: 00000000000006f0 Stack: 0000000000000363 00000000000003f3 00000000000003f3 00000000000001f9 000000000000049a 0000000001252c04 ffff88041f203e44 ffff880417b4bfd0 0000000000000008 ffff88041785b9c0 0000000000000002 ffff88041613dc60 Call Trace: <IRQ> [<ffffffffa01b6441>] ath9k_tasklet+0x1b1/0x220 [ath9k] [<ffffffff8105d8dd>] tasklet_action+0x4d/0xf0 [<ffffffff8105dde2>] __do_softirq+0x92/0x2a0 Reported-by: Devin Tuchsen <[email protected]> Tested-by: Devin Tuchsen <[email protected]> Signed-off-by: Miaoqing Pan <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
1 parent 91851cc commit 40bea97

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

drivers/net/wireless/ath/ath9k/common-spectral.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,9 @@ int ath_cmn_process_fft(struct ath_spec_scan_priv *spec_priv, struct ieee80211_h
528528
if (!(radar_info->pulse_bw_info & SPECTRAL_SCAN_BITMASK))
529529
return 0;
530530

531+
if (!spec_priv->rfs_chan_spec_scan)
532+
return 1;
533+
531534
/* Output buffers are full, no need to process anything
532535
* since there is no space to put the result anyway
533536
*/
@@ -1072,7 +1075,7 @@ static struct rchan_callbacks rfs_spec_scan_cb = {
10721075

10731076
void ath9k_cmn_spectral_deinit_debug(struct ath_spec_scan_priv *spec_priv)
10741077
{
1075-
if (IS_ENABLED(CONFIG_ATH9K_DEBUGFS)) {
1078+
if (IS_ENABLED(CONFIG_ATH9K_DEBUGFS) && spec_priv->rfs_chan_spec_scan) {
10761079
relay_close(spec_priv->rfs_chan_spec_scan);
10771080
spec_priv->rfs_chan_spec_scan = NULL;
10781081
}
@@ -1086,6 +1089,9 @@ void ath9k_cmn_spectral_init_debug(struct ath_spec_scan_priv *spec_priv,
10861089
debugfs_phy,
10871090
1024, 256, &rfs_spec_scan_cb,
10881091
NULL);
1092+
if (!spec_priv->rfs_chan_spec_scan)
1093+
return;
1094+
10891095
debugfs_create_file("spectral_scan_ctl",
10901096
S_IRUSR | S_IWUSR,
10911097
debugfs_phy, spec_priv,

0 commit comments

Comments
 (0)