]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/4.9.170/rsi-improve-kernel-thread-handling-to-fix-kernel-pan.patch
Linux 4.9.170
[thirdparty/kernel/stable-queue.git] / releases / 4.9.170 / rsi-improve-kernel-thread-handling-to-fix-kernel-pan.patch
1 From cc949b398b9ce8801eae9ff88bc7a8f860c940e7 Mon Sep 17 00:00:00 2001
2 From: Siva Rebbagondla <siva.rebbagondla@redpinesignals.com>
3 Date: Mon, 27 Aug 2018 17:05:15 +0530
4 Subject: rsi: improve kernel thread handling to fix kernel panic
5
6 [ Upstream commit 4c62764d0fc21a34ffc44eec1210038c3a2e4473 ]
7
8 While running regressions, observed below kernel panic when sdio disconnect
9 called. This is because of, kthread_stop() is taking care of
10 wait_for_completion() by default. When wait_for_completion triggered
11 in kthread_stop and as it was done already, giving kernel panic.
12 Hence, removing redundant wait_for_completion() from rsi_kill_thread().
13
14 ... skipping ...
15 BUG: unable to handle kernel NULL pointer dereference at (null)
16 IP: [<ffffffff810a63df>] exit_creds+0x1f/0x50
17 PGD 0
18 Oops: 0002 [#1] SMP
19 CPU: 0 PID: 6502 Comm: rmmod Tainted: G OE 4.15.9-Generic #154-Ubuntu
20 Hardware name: Dell Inc. Edge Gateway 3003/ , BIOS 01.00.00 04/17/2017
21 Stack:
22 ffff88007392e600 ffff880075847dc0 ffffffff8108160a 0000000000000000
23 ffff88007392e600 ffff880075847de8 ffffffff810a484b ffff880076127000
24 ffff88003cd3a800 ffff880074f12a00 ffff880075847e28 ffffffffc09bed15
25 Call Trace:
26 [<ffffffff8108160a>] __put_task_struct+0x5a/0x140
27 [<ffffffff810a484b>] kthread_stop+0x10b/0x110
28 [<ffffffffc09bed15>] rsi_disconnect+0x2f5/0x300 [ven_rsi_sdio]
29 [<ffffffff81578bcb>] ? __pm_runtime_resume+0x5b/0x80
30 [<ffffffff816f0918>] sdio_bus_remove+0x38/0x100
31 [<ffffffff8156cc64>] __device_release_driver+0xa4/0x150
32 [<ffffffff8156d7a5>] driver_detach+0xb5/0xc0
33 [<ffffffff8156c6c5>] bus_remove_driver+0x55/0xd0
34 [<ffffffff8156dfbc>] driver_unregister+0x2c/0x50
35 [<ffffffff816f0b8a>] sdio_unregister_driver+0x1a/0x20
36 [<ffffffffc09bf0f5>] rsi_module_exit+0x15/0x30 [ven_rsi_sdio]
37 [<ffffffff8110cad8>] SyS_delete_module+0x1b8/0x210
38 [<ffffffff81851dc8>] entry_SYSCALL_64_fastpath+0x1c/0xbb
39
40 Signed-off-by: Siva Rebbagondla <siva.rebbagondla@redpinesignals.com>
41 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
42 Signed-off-by: Sasha Levin <sashal@kernel.org>
43 ---
44 drivers/net/wireless/rsi/rsi_common.h | 1 -
45 1 file changed, 1 deletion(-)
46
47 diff --git a/drivers/net/wireless/rsi/rsi_common.h b/drivers/net/wireless/rsi/rsi_common.h
48 index d3fbe33d2324..a13f08fd8690 100644
49 --- a/drivers/net/wireless/rsi/rsi_common.h
50 +++ b/drivers/net/wireless/rsi/rsi_common.h
51 @@ -75,7 +75,6 @@ static inline int rsi_kill_thread(struct rsi_thread *handle)
52 atomic_inc(&handle->thread_done);
53 rsi_set_event(&handle->event);
54
55 - wait_for_completion(&handle->completion);
56 return kthread_stop(handle->task);
57 }
58
59 --
60 2.19.1
61