Stanislaw Gruszka
4237cc8ef3
ath9k: protect tid->sched check
[ Upstream commit 21f8aaee0c ]
We check tid->sched without a lock taken on ath_tx_aggr_sleep(). That
is race condition which can result of doing list_del(&tid->list) twice
(second time with poisoned list node) and cause crash like shown below:
[424271.637220] BUG: unable to handle kernel paging request at 00100104
[424271.637328] IP: [<f90fc072>] ath_tx_aggr_sleep+0x62/0xe0 [ath9k]
...
[424271.639953] Call Trace:
[424271.639998] [<f90f6900>] ? ath9k_get_survey+0x110/0x110 [ath9k]
[424271.640083] [<f90f6942>] ath9k_sta_notify+0x42/0x50 [ath9k]
[424271.640177] [<f809cfef>] sta_ps_start+0x8f/0x1c0 [mac80211]
[424271.640258] [<c10f730e>] ? free_compound_page+0x2e/0x40
[424271.640346] [<f809e915>] ieee80211_rx_handlers+0x9d5/0x2340 [mac80211]
[424271.640437] [<c112f048>] ? kmem_cache_free+0x1d8/0x1f0
[424271.640510] [<c1345a84>] ? kfree_skbmem+0x34/0x90
[424271.640578] [<c10fc23c>] ? put_page+0x2c/0x40
[424271.640640] [<c1345a84>] ? kfree_skbmem+0x34/0x90
[424271.640706] [<c1345a84>] ? kfree_skbmem+0x34/0x90
[424271.640787] [<f809dde3>] ? ieee80211_rx_handlers_result+0x73/0x1d0 [mac80211]
[424271.640897] [<f80a07a0>] ieee80211_prepare_and_rx_handle+0x520/0xad0 [mac80211]
[424271.641009] [<f809e22d>] ? ieee80211_rx_handlers+0x2ed/0x2340 [mac80211]
[424271.641104] [<c13846ce>] ? ip_output+0x7e/0xd0
[424271.641182] [<f80a1057>] ieee80211_rx+0x307/0x7c0 [mac80211]
[424271.641266] [<f90fa6ee>] ath_rx_tasklet+0x88e/0xf70 [ath9k]
[424271.641358] [<f80a0f2c>] ? ieee80211_rx+0x1dc/0x7c0 [mac80211]
[424271.641445] [<f90f82db>] ath9k_tasklet+0xcb/0x130 [ath9k]
Bug report:
https://bugzilla.kernel.org/show_bug.cgi?id=70551
Reported-and-tested-by: Max Sydorenko <maxim.stargazer@gmail.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
[ xl: backported to 3.10: adjusted context ]
Signed-off-by: Xiangyu Lu <luxiangyu@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-06-07 13:25:40 -07:00
..
2014-06-07 13:25:39 -07:00
2014-06-07 13:25:39 -07:00
2013-12-08 07:29:25 -08:00
2014-06-07 13:25:31 -07:00
2013-05-17 14:31:05 -04:00
2014-06-07 13:25:37 -07:00
2014-06-07 13:25:33 -07:00
2014-06-07 13:25:37 -07:00
2013-07-13 11:42:26 -07:00
2014-06-07 13:25:30 -07:00
2014-06-07 13:25:35 -07:00
2014-06-07 13:25:29 -07:00
2013-12-08 07:29:25 -08:00
2014-04-14 06:42:19 -07:00
2014-04-14 06:42:15 -07:00
2014-06-07 13:25:39 -07:00
2014-03-06 21:30:14 -08:00
2014-03-06 21:30:13 -08:00
2014-02-13 13:47:59 -08:00
2013-05-09 09:59:16 -07:00
2014-05-30 21:52:11 -07:00
2013-11-29 11:11:53 -08:00
2014-05-13 13:59:45 +02:00
2014-06-07 13:25:34 -07:00
2014-01-15 15:28:45 -08:00
2014-06-07 13:25:35 -07:00
2014-06-07 13:25:31 -07:00
2013-05-07 14:01:27 -07:00
2014-06-07 13:25:39 -07:00
2013-05-07 02:16:21 -04:00
2014-01-09 12:24:21 -08:00
2014-06-07 13:25:32 -07:00
2014-06-07 13:25:38 -07:00
2014-06-07 13:25:36 -07:00
2014-06-07 13:25:40 -07:00
2014-06-07 13:25:28 -07:00
2014-04-14 06:42:18 -07:00
2014-06-07 13:25:34 -07:00
2013-05-08 10:49:18 +09:30
2013-08-11 18:35:20 -07:00
2014-06-07 13:25:39 -07:00
2014-06-07 13:25:40 -07:00
2013-05-18 11:55:52 +02:00
2013-05-07 02:16:21 -04:00
2013-05-08 10:13:35 -07:00
2014-05-06 07:55:28 -07:00
2014-05-06 07:55:27 -07:00
2014-02-13 13:48:00 -08:00
2014-05-13 13:59:45 +02:00
2014-06-07 13:25:40 -07:00
2013-05-21 10:48:41 +02:00
2013-11-13 12:05:35 +09:00
2013-05-04 14:47:26 -04:00
2014-02-22 12:41:27 -08:00
2013-08-11 18:35:21 -07:00
2014-02-06 11:08:15 -08:00
2014-06-07 13:25:38 -07:00
2013-07-21 18:21:25 -07:00
2014-02-20 11:06:11 -08:00
2014-02-06 11:08:16 -08:00
2014-03-23 21:38:22 -07:00
2014-02-22 12:41:29 -08:00
2013-05-01 17:51:54 -07:00
2013-05-25 21:24:15 -07:00
2013-05-18 11:55:58 +02:00
2014-03-23 21:38:09 -07:00
2014-03-31 09:58:13 -07:00
2013-05-07 14:04:56 -07:00
2013-04-12 10:26:24 +02:00
2013-05-07 14:02:00 -07:00
2014-02-13 13:48:03 -08:00
2014-05-13 13:59:42 +02:00
2013-03-31 19:29:12 -04:00
2014-05-30 21:52:11 -07:00
2014-03-23 21:38:16 -07:00
2013-05-09 10:15:46 -07:00
2014-05-06 07:55:28 -07:00
2014-06-07 13:25:38 -07:00
2013-05-18 11:57:30 +02:00
2014-06-07 13:25:30 -07:00
2013-11-13 12:05:33 +09:00
2014-06-07 13:25:33 -07:00
2013-04-29 18:28:43 -07:00
2014-04-03 12:01:05 -07:00
2014-04-14 06:42:18 -07:00
2014-05-30 21:52:12 -07:00
2014-05-13 13:59:41 +02:00
2014-02-22 12:41:28 -08:00
2014-05-06 07:55:28 -07:00
2013-12-20 07:45:11 -08:00
2013-12-11 22:36:27 -08:00
2013-05-01 17:29:18 -04:00
2013-05-04 12:31:18 -07:00
2013-05-04 12:31:18 -07:00