kernel_optimize_test/net/mac80211
Felix Fietkau d8c7aae64c mac80211: add missing rcu_read_lock/unlock in agg-rx session timer
Fixes a lockdep warning:

===================================================
[ INFO: suspicious rcu_dereference_check() usage. ]
---------------------------------------------------
net/mac80211/agg-rx.c:148 invoked rcu_dereference_check() without protection!

other info that might help us debug this:

rcu_scheduler_active = 1, debug_locks = 1
1 lock held by arecord/11226:
 #0:  (&tid_agg_rx->session_timer){+.-...}, at: [<ffffffff81066bb0>] call_timer_fn+0x0/0x360

stack backtrace:
Pid: 11226, comm: arecord Not tainted 3.1.0-kml #16
Call Trace:
 <IRQ>  [<ffffffff81093454>] lockdep_rcu_dereference+0xa4/0xc0
 [<ffffffffa02778c9>] sta_rx_agg_session_timer_expired+0xc9/0x110 [mac80211]
 [<ffffffffa0277800>] ? ieee80211_process_addba_resp+0x220/0x220 [mac80211]
 [<ffffffff81066c3a>] call_timer_fn+0x8a/0x360
 [<ffffffff81066bb0>] ? init_timer_deferrable_key+0x30/0x30
 [<ffffffff81477bb0>] ? _raw_spin_unlock_irq+0x30/0x70
 [<ffffffff81067049>] run_timer_softirq+0x139/0x310
 [<ffffffff81091d5e>] ? put_lock_stats.isra.25+0xe/0x40
 [<ffffffff810922ac>] ? lock_release_holdtime.part.26+0xdc/0x160
 [<ffffffffa0277800>] ? ieee80211_process_addba_resp+0x220/0x220 [mac80211]
 [<ffffffff8105cb78>] __do_softirq+0xc8/0x3c0
 [<ffffffff8108f088>] ? tick_dev_program_event+0x48/0x110
 [<ffffffff8108f16f>] ? tick_program_event+0x1f/0x30
 [<ffffffff81153b15>] ? putname+0x35/0x50
 [<ffffffff8147a43c>] call_softirq+0x1c/0x30
 [<ffffffff81004c55>] do_softirq+0xa5/0xe0
 [<ffffffff8105d1ee>] irq_exit+0xae/0xe0
 [<ffffffff8147ac6b>] smp_apic_timer_interrupt+0x6b/0x98
 [<ffffffff81479ab3>] apic_timer_interrupt+0x73/0x80
 <EOI>  [<ffffffff8146aac6>] ? free_debug_processing+0x1a1/0x1d5
 [<ffffffff81153b15>] ? putname+0x35/0x50
 [<ffffffff8146ab2b>] __slab_free+0x31/0x2ca
 [<ffffffff81477c3a>] ? _raw_spin_unlock_irqrestore+0x4a/0x90
 [<ffffffff81253b8f>] ? __debug_check_no_obj_freed+0x15f/0x210
 [<ffffffff81097054>] ? lock_release_nested+0x84/0xc0
 [<ffffffff8113ec55>] ? kmem_cache_free+0x105/0x250
 [<ffffffff81153b15>] ? putname+0x35/0x50
 [<ffffffff81153b15>] ? putname+0x35/0x50
 [<ffffffff8113ed8f>] kmem_cache_free+0x23f/0x250
 [<ffffffff81153b15>] putname+0x35/0x50
 [<ffffffff81146d8d>] do_sys_open+0x16d/0x1d0
 [<ffffffff81146e10>] sys_open+0x20/0x30
 [<ffffffff81478f42>] system_call_fastpath+0x16/0x1b

Reported-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-06-04 15:25:41 -04:00
..
aes_ccm.c
aes_ccm.h
aes_cmac.c
aes_cmac.h
agg-rx.c mac80211: add missing rcu_read_lock/unlock in agg-rx session timer 2012-06-04 15:25:41 -04:00
agg-tx.c mac80211: fix TX aggregation session timer 2012-05-16 12:46:04 -04:00
cfg.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2012-05-14 18:00:48 -04:00
cfg.h
chan.c mac80211: remove channel type argument from rate_update 2012-04-10 14:54:08 -04:00
debugfs_key.c simple_open: automatically convert to simple_open() 2012-04-05 15:25:50 -07:00
debugfs_key.h
debugfs_netdev.c mac80211: Add debugfs entry for mesh ht_opmode 2012-05-16 13:24:25 -04:00
debugfs_netdev.h
debugfs_sta.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2012-04-12 13:49:28 -04:00
debugfs_sta.h
debugfs.c simple_open: automatically convert to simple_open() 2012-04-05 15:25:50 -07:00
debugfs.h simple_open: automatically convert to simple_open() 2012-04-05 15:25:50 -07:00
driver-ops.h mac80211: Framework to get wifi-driver stats via ethtool. 2012-05-08 21:53:51 -04:00
driver-trace.c
driver-trace.h mac80211: Framework to get wifi-driver stats via ethtool. 2012-05-08 21:53:51 -04:00
event.c
ht.c net: Convert net_ratelimit uses to net_<level>_ratelimited 2012-05-15 13:45:03 -04:00
ibss.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2012-05-22 15:18:06 -04:00
ieee80211_i.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2012-05-14 18:00:48 -04:00
iface.c mac80211: clean up remain-on-channel on interface stop 2012-06-04 15:25:26 -04:00
Kconfig mac80211: Implement mesh synchronization framework 2012-04-10 15:20:31 -04:00
key.c mac80211: clean up asm/unaligned.h inclusion 2012-02-27 14:06:32 -05:00
key.h
led.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
led.h
main.c mac80211: (selectively) add HT details in radiotap 2012-05-16 12:46:38 -04:00
Makefile mac80211: Implement mesh synchronization framework 2012-04-10 15:20:31 -04:00
mesh_hwmp.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2012-05-22 15:18:06 -04:00
mesh_pathtbl.c mac80211: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:18 -04:00
mesh_plink.c mac80211: Modify mesh_set_ht_prot_mode() to have less identation 2012-05-16 13:24:25 -04:00
mesh_sync.c mac80211: fixup for mesh TSF adjustment latency in Toffset setpoint 2012-04-23 15:37:41 -04:00
mesh.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2012-05-22 15:18:06 -04:00
mesh.h mac80211: Adds clean sdata helper 2012-04-24 14:56:10 -04:00
michael.c
michael.h
mlme.c mac80211: run scan after finish connection monitoring 2012-06-04 15:21:18 -04:00
offchannel.c mac80211: clean up remain-on-channel on interface stop 2012-06-04 15:25:26 -04:00
pm.c mac80211: add explicit monitor interface if needed 2012-04-11 16:23:49 -04:00
rate.c simple_open: automatically convert to simple_open() 2012-04-05 15:25:50 -07:00
rate.h mac80211: notify driver of rate control updates 2012-04-10 14:54:08 -04:00
rc80211_minstrel_debugfs.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
rc80211_minstrel_ht_debugfs.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
rc80211_minstrel_ht.c mac80211: remove hw.conf.channel usage where possible 2012-04-13 14:32:50 -04:00
rc80211_minstrel_ht.h
rc80211_minstrel.c mac80211: remove hw.conf.channel usage where possible 2012-04-13 14:32:50 -04:00
rc80211_minstrel.h
rc80211_pid_algo.c net: fix assignment of 0/1 to bool variables. 2011-12-19 22:27:29 -05:00
rc80211_pid_debugfs.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
rc80211_pid.h
rx.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2012-05-22 15:18:06 -04:00
scan.c mac80211: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:18 -04:00
spectmgmt.c mac80211: Remove unnecessary OOM logging messages 2011-09-13 15:45:02 -04:00
sta_info.c mac80211: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:18 -04:00
sta_info.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next 2012-05-14 18:00:48 -04:00
status.c mac80211: Convert compare_ether_addr to ether_addr_equal 2012-05-09 20:49:18 -04:00
tkip.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
tkip.h
tx.c mac80211: Fix Unreachable Mesh Station Problem when joining to another MBSS 2012-06-04 15:23:23 -04:00
util.c mac80211: fix error in station state transitions during reconfig 2012-06-04 15:24:56 -04:00
wep.c mac80211: fix network header location when adding encryption headers 2012-05-16 12:47:43 -04:00
wep.h mac80211: move RX WEP weak IV counting 2012-03-13 14:54:16 -04:00
wme.c mac80211: use IEEE80211_NUM_ACS 2012-04-10 14:56:10 -04:00
wme.h mac80211: make ieee80211_downgrade_queue static 2012-04-10 14:54:06 -04:00
work.c mac80211: protect ->scanning by mutex in ieee80211_work_work() 2012-04-13 14:31:50 -04:00
wpa.c mac80211: fix network header location when adding encryption headers 2012-05-16 12:47:43 -04:00
wpa.h mac80211: fix tx->skb NULL pointer dereference 2012-01-16 15:01:16 -05:00