projects
/
platform
/
adaptation
/
renesas_rcar
/
renesas_kernel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
5d06e3d
)
staging: usbip: stub_dev: Fixed oops during removal of usbip_host
author
navin
<navinp@cdac.in>
Wed, 19 Sep 2012 11:37:27 +0000
(17:07 +0530)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Fri, 21 Sep 2012 15:56:39 +0000
(08:56 -0700)
stub_shutdown_connection() should set kernel thread pointers to NULL after killing them.
so that at the time of usbip_host removal stub_shutdown_connection() doesn't try to kill kernel threads
which are already killed.
[ 1504.312158] BUG: unable to handle kernel NULL pointer dereference at (null)
[ 1504.315833] IP: [<
ffffffff8108186f
>] exit_creds+0x1f/0x70
[ 1504.317688] PGD
41f1c067
PUD
41d0f067
PMD 0
[ 1504.319611] Oops: 0000 [#2] SMP
[ 1504.321480] Modules linked in: vhci_hcd(O) usbip_host(O-) usbip_core(O) uas usb_storage joydev parport_pc bnep rfcomm ppdev binfmt_misc
snd_hda_codec_hdmi snd_hda_codec_conexant snd_hda_intel snd_hda_codec snd_hwdep snd_pcm snd_seq_midi arc4 snd_rawmidi snd_seq_midi_event
snd_seq ath9k mac80211 ath9k_common ath9k_hw snd_timer snd_seq_device snd ath i915 drm_kms_helper drm psmouse cfg80211 coretemp soundcore
lpc_ich i2c_algo_bit snd_page_alloc video intel_ips wmi btusb mac_hid bluetooth ideapad_laptop lp sparse_keymap serio_raw mei microcode parport r8169
[ 1504.329666] CPU 1
[ 1504.329687] Pid: 2434, comm: usbip_eh Tainted: G D O 3.6.0-rc31+ #2 LENOVO 20042 /Base Board Product Name
[ 1504.333502] RIP: 0010:[<
ffffffff8108186f
>] [<
ffffffff8108186f
>] exit_creds+0x1f/0x70
[ 1504.335371] RSP: 0018:
ffff880041c7fdd0
EFLAGS:
00010282
[ 1504.337226] RAX:
0000000000000000
RBX:
ffff880041c2db40
RCX:
ffff880041e4ae50
[ 1504.339101] RDX:
0000000000000044
RSI:
0000000000000286
RDI:
0000000000000000
[ 1504.341027] RBP:
ffff880041c7fde0
R08:
ffff880041c7e000
R09:
0000000000000000
[ 1504.342934] R10:
0000000000000001
R11:
0000000000000000
R12:
0000000000000000
[ 1504.344840] R13:
0000000000000000
R14:
ffff88004d448000
R15:
ffff880041c7fea0
[ 1504.346743] FS:
0000000000000000
(0000) GS:
ffff880077440000
(0000) knlGS:
0000000000000000
[ 1504.348671] CS: 0010 DS: 0000 ES: 0000 CR0:
000000008005003b
[ 1504.350612] CR2:
0000000000000000
CR3:
0000000041d0d000
CR4:
00000000000007e0
[ 1504.352723] DR0:
0000000000000000
DR1:
0000000000000000
DR2:
0000000000000000
[ 1504.354734] DR3:
0000000000000000
DR6:
00000000ffff0ff0
DR7:
0000000000000400
[ 1504.356737] Process usbip_eh (pid: 2434, threadinfo
ffff880041c7e000
, task
ffff88004d448000
)
[ 1504.358711] Stack:
[ 1504.360635]
ffff880041c7fde0
ffff880041c2db40
ffff880041c7fe00
ffffffff81052aaa
[ 1504.362589]
ffff880041c2db40
0000000000000000
ffff880041c7fe30
ffffffff8107a148
[ 1504.364539]
ffff880041e4ae10
ffff880041e4ae00
ffff88004d448000
ffff88004d448000
[ 1504.366470] Call Trace:
[ 1504.368368] [<
ffffffff81052aaa
>] __put_task_struct+0x4a/0x140
[ 1504.370307] [<
ffffffff8107a148
>] kthread_stop+0x108/0x110
[ 1504.370312] [<
ffffffffa040da4e
>] stub_shutdown_connection+0x3e/0x1b0 [usbip_host]
[ 1504.370315] [<
ffffffffa03fd920
>] event_handler_loop+0x70/0x140 [usbip_core]
[ 1504.370318] [<
ffffffff8107ad30
>] ? add_wait_queue+0x60/0x60
[ 1504.370320] [<
ffffffffa03fd8b0
>] ? usbip_stop_eh+0x30/0x30 [usbip_core]
[ 1504.370322] [<
ffffffff8107a453
>] kthread+0x93/0xa0
[ 1504.370327] [<
ffffffff81670e84
>] kernel_thread_helper+0x4/0x10
[ 1504.370330] [<
ffffffff8107a3c0
>] ? flush_kthread_worker+0xb0/0xb0
[ 1504.370332] [<
ffffffff81670e80
>] ? gs_change+0x13/0x13
[ 1504.370351] Code: 0b 0f 0b 66 0f 1f 84 00 00 00 00 00 55 48 89 e5 53 48 83 ec 08 66 66 66 66 90 48 8b 87 58 04 00 00 48 89 fb 48 8b bf 50 04 00 00
<8b> 00 48 c7 83 50 04 00 00 00 00 00 00 f0 ff 0f 0f 94 c0 84 c0
[ 1504.370353] RIP [<
ffffffff8108186f
>] exit_creds+0x1f/0x70
[ 1504.370353] RSP <
ffff880041c7fdd0
>
[ 1504.370354] CR2:
0000000000000000
[ 1504.401376] ---[ end trace
1971ce612a16727a
]---
Signed-off-by: navin patidar <navinp@cdac.in>
Acked-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/usbip/stub_dev.c
patch
|
blob
|
history
diff --git
a/drivers/staging/usbip/stub_dev.c
b/drivers/staging/usbip/stub_dev.c
index
92ced35
..
c8d79a7
100644
(file)
--- a/
drivers/staging/usbip/stub_dev.c
+++ b/
drivers/staging/usbip/stub_dev.c
@@
-187,10
+187,14
@@
static void stub_shutdown_connection(struct usbip_device *ud)
}
/* 1. stop threads */
- if (ud->tcp_rx)
+ if (ud->tcp_rx)
{
kthread_stop_put(ud->tcp_rx);
- if (ud->tcp_tx)
+ ud->tcp_rx = NULL;
+ }
+ if (ud->tcp_tx) {
kthread_stop_put(ud->tcp_tx);
+ ud->tcp_tx = NULL;
+ }
/*
* 2. close the socket