• Stanislaw Gruszka's avatar
    ath9k: check ah->curchan when updating tx power · b01c9e32
    Stanislaw Gruszka authored
    When driver fail to reset card ah->curchan value stay NULL. When
    later driver try to update tx power it oops by using ah->curchan
    (calltrace is shown below).
    
    This problem were reported at various places and for some it was
    fixed by making ath9k_hw_chip_reset() do not fail. I have this bug
    report on some oldish RHEL kernel with AR9285, however it's hard to
    debug where reset fail when kernel OOPS, so I think this patch
    should be applied. Hopefully ah->curchan is not used unconditionally
    on other places until is initialized on ath9k_config().
    
    ath: phy0: Chip reset failed
    ath: phy0: Unable to reset hardware; reset status -22 (freq 2412 MHz)
    BUG: unable to handle kernel NULL pointer dereference at (null)
    IP: [<f8a35585>] ath9k_hw_set_txpowerlimit+0x25/0x80 [ath9k_hw]
    Oops: 0000 [#1] SMP
    <snip>
    Call Trace:
     [<f8aac1aa>] ? ath9k_cmn_update_txpow+0x1a/0x30 [ath9k_common]
     [<f8cf4f4e>] ? ath_complete_reset+0x4e/0x130 [ath9k]
     [<f8cf54d7>] ? ath9k_start+0x127/0x1e0 [ath9k]
     [<f8c2e52f>] ? ieee80211_do_open+0x30f/0x910 [mac80211]
     [<c07bd96d>] ? dev_open+0x8d/0xf0
    Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
    b01c9e32
common.c 10.9 KB