* kernel panic in sg_complete
@ 2013-07-21 23:00 Marcin Ślusarz
2013-07-22 0:23 ` Greg Kroah-Hartman
0 siblings, 1 reply; 3+ messages in thread
From: Marcin Ślusarz @ 2013-07-21 23:00 UTC (permalink / raw)
To: linux-usb, linux-mmc; +Cc: Alan Stern, Greg Kroah-Hartman, Chris Ball
[-- Attachment #1: Type: text/plain, Size: 18231 bytes --]
Hi
Few days ago I fried (?) my SD card (with custom Arduino-based hw :)
and now every
time I insert it into my Linux laptop, after ~10 seconds, kernel panics:
[ 258.288466] BUG: unable to handle kernel NULL pointer dereference
at 0000000000000040
[ 258.289742] IP: [<ffffffff814d0849>] sg_complete+0xb9/0x1d0
[ 258.290997] PGD 0
[ 258.292222] Oops: 0000 [#1] PREEMPT SMP
[ 258.293443] Modules linked in: arc4 iwldvm mac80211 dm_crypt
iwlwifi snd_hda_codec_hdmi cfg80211 snd_hda_codec_idt snd_hda_intel
snd_hda_codec uvcvideo rts5139(C) snd_hwdep snd_pcm videobuf2_core
videodev snd_seq_midi snd_rawmidi bnep videobuf2_vmalloc
snd_seq_midi_event videobuf2_memops snd_seq coretemp psmouse snd_timer
snd_seq_device snd rfcomm serio_raw dell_wmi btusb lpc_ich microcode
soundcore snd_page_alloc dell_laptop dcdbas sparse_keymap bluetooth
mac_hid parport_pc ppdev lp parport binfmt_misc hid_generic i915
ghash_clmulni_intel cryptd usbhid drm_kms_helper hid drm i2c_algo_bit
video ahci libahci wmi
[ 258.299260] CPU: 3 PID: 0 Comm: swapper/3 Tainted: G C 3.10.1 #22
[ 258.300711] Hardware name: Dell Inc. Inspiron 7720/04M3YM,
BIOS A07 08/16/2012
[ 258.302190] task: ffff88013a344560 ti: ffff88013a34e000 task.ti:
ffff88013a34e000
[ 258.303681] RIP: 0010:[<ffffffff814d0849>] [<ffffffff814d0849>]
sg_complete+0xb9/0x1d0
[ 258.305204] RSP: 0018:ffff88013f2c3cc8 EFLAGS: 00010002
[ 258.306723] RAX: 00000000ffffff92 RBX: ffff88012ee30a70 RCX: 00000000000019ff
[ 258.308260] RDX: ffff880130f17400 RSI: 0000000000000000 RDI: 0000000000000001
[ 258.309807] RBP: ffff88013f2c3cf8 R08: ffffffff81a3b1a8 R09: 00000000ffffff98
[ 258.311350] R10: 0000000000000001 R11: 0000000000000036 R12: 00000000ffffff98
[ 258.312887] R13: ffff88012f86ac00 R14: ffff88012ee30a80 R15: ffff8801302a7118
[ 258.314433] FS: 0000000000000000(0000) GS:ffff88013f2c0000(0000)
knlGS:0000000000000000
[ 258.315998] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 258.317555] CR2: 0000000000000040 CR3: 0000000001c0b000 CR4: 00000000001407e0
[ 258.319138] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 258.320724] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[ 258.322298] Stack:
[ 258.323866] ffff88012f86ac00 00000000ffffff98 ffff88012f86ac00
00000000ffffff98
[ 258.325485] ffff880130e18a74 ffff880130e18800 ffff88013f2c3d18
ffffffff814cd584
[ 258.327105] ffff88012f86ac00 00000000ffffff8d ffff88013f2c3d48
ffffffff814e1742
[ 258.328724] Call Trace:
[ 258.330317] <IRQ>
[ 258.330330] [<ffffffff814cd584>] usb_hcd_giveback_urb+0x44/0xa0
[ 258.333499] [<ffffffff814e1742>] ehci_urb_done+0x72/0xb0
[ 258.335092] [<ffffffff814e1d1e>] qh_completions+0x33e/0x430
[ 258.336687] [<ffffffff814e1f58>] end_unlink_async+0x148/0x250
[ 258.338280] [<ffffffff814e47d8>] ehci_irq+0xa8/0x2e0
[ 258.339872] [<ffffffff814cc90e>] usb_hcd_irq+0x2e/0x50
[ 258.341460] [<ffffffff811164a5>] handle_irq_event_percpu+0x75/0x250
[ 258.343057] [<ffffffff811166c8>] handle_irq_event+0x48/0x70
[ 258.344642] [<ffffffff811197ea>] handle_fasteoi_irq+0x5a/0x100
[ 258.346214] [<ffffffff81047222>] handle_irq+0x22/0x40
[ 258.347784] [<ffffffff816999fa>] do_IRQ+0x5a/0xd0
[ 258.349355] [<ffffffff81690caa>] common_interrupt+0x6a/0x6a
[ 258.350909] <EOI>
[ 258.350922] [<ffffffff810aed0a>] ? __hrtimer_start_range_ns+0x16a/0x460
[ 258.354032] [<ffffffff81547bbb>] ? cpuidle_enter_state+0x5b/0xe0
[ 258.355595] [<ffffffff81547bb7>] ? cpuidle_enter_state+0x57/0xe0
[ 258.357150] [<ffffffff81547cfb>] cpuidle_idle_call+0xbb/0x260
[ 258.358698] [<ffffffff8104e0fe>] arch_cpu_idle+0xe/0x30
[ 258.360241] [<ffffffff810d70b0>] cpu_startup_entry+0xd0/0x2d0
[ 258.361758] [<ffffffff810df126>] ? clockevents_config_and_register+0x26/0x30
[ 258.363263] [<ffffffff8167efb6>] start_secondary+0x1e3/0x1ea
[ 258.364753] Code: 00 00 31 d2 45 85 c9 74 b7 41 f6 45 65 02 48 c7
c2 b7 b1 a3 81 45 89 e1 48 8b 73 18 49 c7 c0 a8 b1 a3 81 4c 0f 44 c2
49 8b 55 50 <48> 8b 7e 40 0f b6 4a 02 89 04 24 48 8d 56 04 48 8b 3f 31
c0 48
[ 258.368220] RIP [<ffffffff814d0849>] sg_complete+0xb9/0x1d0
[ 258.369869] RSP <ffff88013f2c3cc8>
[ 258.371496] CR2: 0000000000000040
[ 258.373097] ---[ end trace e81441c38e5ace26 ]---
[ 258.374690] Kernel panic - not syncing: Fatal exception in interrupt
[ 258.376291] drm_kms_helper: panic occurred, switching back to text console
It happens both with 3.10.1 and 3.9.11 kernels.
I traced it to io->dev being NULL in sg_complete.
With the attached bandage Linux survives:
[ 138.375564] sd 6:0:0:0: [sdb] 3862528 512-byte logical blocks:
(1.97 GB/1.84 GiB)
[ 138.375717] sd 6:0:0:0: [sdb] Cache data unavailable
[ 138.375721] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 138.378277] sd 6:0:0:0: [sdb] Cache data unavailable
[ 138.378279] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 138.394977] sdb: sdb1
[ 148.587252] (NULL device *): dev ??? ep2in scatterlist error -104/-110
[ 148.589748] sd 6:0:0:0: [sdb] Unhandled sense code
[ 148.589753] sd 6:0:0:0: [sdb]
[ 148.589756] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 148.589757] sd 6:0:0:0: [sdb]
[ 148.589759] Sense Key : Medium Error [current]
[ 148.589763] sd 6:0:0:0: [sdb]
[ 148.589765] Add. Sense: Unrecovered read error
[ 148.589767] sd 6:0:0:0: [sdb] CDB:
[ 148.589769] Read(10): 28 00 00 00 03 ff 00 00 08 00
[ 148.589777] end_request: critical target error, dev sdb, sector 1023
[ 148.591429] Buffer I/O error on device sdb1, logical block 888
[ 148.593007] Buffer I/O error on device sdb1, logical block 889
[ 148.594563] Buffer I/O error on device sdb1, logical block 890
[ 148.596126] Buffer I/O error on device sdb1, logical block 891
[ 148.597676] Buffer I/O error on device sdb1, logical block 892
[ 148.599231] Buffer I/O error on device sdb1, logical block 893
[ 148.600755] Buffer I/O error on device sdb1, logical block 894
[ 148.602236] Buffer I/O error on device sdb1, logical block 895
[ 161.619466] sd 6:0:0:0: [sdb] Unhandled sense code
[ 161.619473] sd 6:0:0:0: [sdb]
[ 161.619476] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 161.619480] sd 6:0:0:0: [sdb]
[ 161.619482] Sense Key : Medium Error [current]
[ 161.619488] sd 6:0:0:0: [sdb]
[ 161.619492] Add. Sense: Unrecovered read error
[ 161.619497] sd 6:0:0:0: [sdb] CDB:
[ 161.619499] Read(10): 28 00 00 00 03 ff 00 00 01 00
[ 161.619523] end_request: critical target error, dev sdb, sector 1023
[ 161.621111] Buffer I/O error on device sdb1, logical block 888
[ 164.626837] sd 6:0:0:0: [sdb] Unhandled sense code
[ 164.626843] sd 6:0:0:0: [sdb]
[ 164.626847] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 164.626850] sd 6:0:0:0: [sdb]
[ 164.626852] Sense Key : Medium Error [current]
[ 164.626857] sd 6:0:0:0: [sdb]
[ 164.626860] Add. Sense: Unrecovered read error
[ 164.626863] sd 6:0:0:0: [sdb] CDB:
[ 164.626865] Read(10): 28 00 00 00 04 00 00 00 07 00
[ 164.626878] end_request: critical target error, dev sdb, sector 1024
[ 164.628305] Buffer I/O error on device sdb1, logical block 889
[ 164.629646] Buffer I/O error on device sdb1, logical block 890
[ 164.631047] Buffer I/O error on device sdb1, logical block 891
[ 164.632357] Buffer I/O error on device sdb1, logical block 892
[ 164.633673] Buffer I/O error on device sdb1, logical block 893
[ 164.634984] Buffer I/O error on device sdb1, logical block 894
[ 164.636257] Buffer I/O error on device sdb1, logical block 895
[ 167.642260] sd 6:0:0:0: [sdb] Unhandled sense code
[ 167.642266] sd 6:0:0:0: [sdb]
[ 167.642268] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 167.642271] sd 6:0:0:0: [sdb]
[ 167.642273] Sense Key : Medium Error [current]
[ 167.642277] sd 6:0:0:0: [sdb]
[ 167.642280] Add. Sense: Unrecovered read error
[ 167.642282] sd 6:0:0:0: [sdb] CDB:
[ 167.642284] Read(10): 28 00 00 00 02 87 00 00 08 00
[ 167.642294] end_request: critical target error, dev sdb, sector 647
[ 167.643372] Buffer I/O error on device sdb1, logical block 512
[ 167.644372] Buffer I/O error on device sdb1, logical block 513
[ 170.649714] sd 6:0:0:0: [sdb] Unhandled sense code
[ 170.649720] sd 6:0:0:0: [sdb]
[ 170.649723] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 170.649725] sd 6:0:0:0: [sdb]
[ 170.649727] Sense Key : Medium Error [current]
[ 170.649730] sd 6:0:0:0: [sdb]
[ 170.649733] Add. Sense: Unrecovered read error
[ 170.649735] sd 6:0:0:0: [sdb] CDB:
[ 170.649737] Read(10): 28 00 00 00 02 87 00 00 01 00
[ 170.649746] end_request: critical target error, dev sdb, sector 647
[ 170.650734] quiet_error: 6 callbacks suppressed
[ 170.650736] Buffer I/O error on device sdb1, logical block 512
[ 173.657089] sd 6:0:0:0: [sdb] Unhandled sense code
[ 173.657096] sd 6:0:0:0: [sdb]
[ 173.657099] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 173.657101] sd 6:0:0:0: [sdb]
[ 173.657103] Sense Key : Medium Error [current]
[ 173.657107] sd 6:0:0:0: [sdb]
[ 173.657110] Add. Sense: Unrecovered read error
[ 173.657113] sd 6:0:0:0: [sdb] CDB:
[ 173.657114] Read(10): 28 00 00 00 02 88 00 00 07 00
[ 173.657124] end_request: critical target error, dev sdb, sector 648
[ 173.658243] Buffer I/O error on device sdb1, logical block 513
[ 173.659296] Buffer I/O error on device sdb1, logical block 514
[ 173.660342] Buffer I/O error on device sdb1, logical block 515
[ 173.661361] Buffer I/O error on device sdb1, logical block 516
[ 173.662339] Buffer I/O error on device sdb1, logical block 517
[ 173.663298] Buffer I/O error on device sdb1, logical block 518
[ 173.664245] Buffer I/O error on device sdb1, logical block 519
[ 176.668635] sd 6:0:0:0: [sdb] Unhandled sense code
[ 176.668642] sd 6:0:0:0: [sdb]
[ 176.668646] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 176.668649] sd 6:0:0:0: [sdb]
[ 176.668651] Sense Key : Medium Error [current]
[ 176.668656] sd 6:0:0:0: [sdb]
[ 176.668659] Add. Sense: Unrecovered read error
[ 176.668663] sd 6:0:0:0: [sdb] CDB:
[ 176.668665] Read(10): 28 00 00 00 00 a7 00 00 08 00
[ 176.668678] end_request: critical target error, dev sdb, sector 167
[ 176.669925] Buffer I/O error on device sdb1, logical block 32
[ 176.671115] Buffer I/O error on device sdb1, logical block 33
[ 179.676043] sd 6:0:0:0: [sdb] Unhandled sense code
[ 179.676049] sd 6:0:0:0: [sdb]
[ 179.676051] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 179.676052] sd 6:0:0:0: [sdb]
[ 179.676054] Sense Key : Medium Error [current]
[ 179.676058] sd 6:0:0:0: [sdb]
[ 179.676060] Add. Sense: Unrecovered read error
[ 179.676063] sd 6:0:0:0: [sdb] CDB:
[ 179.676065] Read(10): 28 00 00 00 00 a7 00 00 01 00
[ 179.676074] end_request: critical target error, dev sdb, sector 167
[ 179.677211] quiet_error: 6 callbacks suppressed
[ 179.677214] Buffer I/O error on device sdb1, logical block 32
[ 182.683472] sd 6:0:0:0: [sdb] Unhandled sense code
[ 182.683479] sd 6:0:0:0: [sdb]
[ 182.683482] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 182.683485] sd 6:0:0:0: [sdb]
[ 182.683487] Sense Key : Medium Error [current]
[ 182.683492] sd 6:0:0:0: [sdb]
[ 182.683495] Add. Sense: Unrecovered read error
[ 182.683498] sd 6:0:0:0: [sdb] CDB:
[ 182.683500] Read(10): 28 00 00 00 00 a8 00 00 07 00
[ 182.683513] end_request: critical target error, dev sdb, sector 168
[ 182.684790] Buffer I/O error on device sdb1, logical block 33
[ 182.685930] Buffer I/O error on device sdb1, logical block 34
[ 182.687095] Buffer I/O error on device sdb1, logical block 35
[ 182.688193] Buffer I/O error on device sdb1, logical block 36
[ 182.689254] Buffer I/O error on device sdb1, logical block 37
[ 182.690333] Buffer I/O error on device sdb1, logical block 38
[ 182.691365] Buffer I/O error on device sdb1, logical block 39
[ 185.694924] sd 6:0:0:0: [sdb] Unhandled sense code
[ 185.694931] sd 6:0:0:0: [sdb]
[ 185.694934] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 185.694937] sd 6:0:0:0: [sdb]
[ 185.694938] Sense Key : Medium Error [current]
[ 185.694943] sd 6:0:0:0: [sdb]
[ 185.694946] Add. Sense: Unrecovered read error
[ 185.694949] sd 6:0:0:0: [sdb] CDB:
[ 185.694950] Read(10): 28 00 00 00 10 87 00 00 01 00
[ 185.694962] end_request: critical target error, dev sdb, sector 4231
[ 185.695932] Buffer I/O error on device sdb1, logical block 4096
[ 188.702351] sd 6:0:0:0: [sdb] Unhandled sense code
[ 188.702358] sd 6:0:0:0: [sdb]
[ 188.702361] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 188.702364] sd 6:0:0:0: [sdb]
[ 188.702366] Sense Key : Medium Error [current]
[ 188.702371] sd 6:0:0:0: [sdb]
[ 188.702374] Add. Sense: Unrecovered read error
[ 188.702377] sd 6:0:0:0: [sdb] CDB:
[ 188.702379] Read(10): 28 00 00 00 10 88 00 00 07 00
[ 188.702392] end_request: critical target error, dev sdb, sector 4232
[ 188.703575] Buffer I/O error on device sdb1, logical block 4097
[ 188.704608] Buffer I/O error on device sdb1, logical block 4098
[ 188.705660] Buffer I/O error on device sdb1, logical block 4099
[ 188.706702] Buffer I/O error on device sdb1, logical block 4100
[ 188.707686] Buffer I/O error on device sdb1, logical block 4101
[ 188.708743] Buffer I/O error on device sdb1, logical block 4102
[ 188.709703] Buffer I/O error on device sdb1, logical block 4103
[ 191.717720] sd 6:0:0:0: [sdb] Unhandled sense code
[ 191.717727] sd 6:0:0:0: [sdb]
[ 191.717730] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 191.717733] sd 6:0:0:0: [sdb]
[ 191.717736] Sense Key : Medium Error [current]
[ 191.717740] sd 6:0:0:0: [sdb]
[ 191.717744] Add. Sense: Unrecovered read error
[ 191.717747] sd 6:0:0:0: [sdb] CDB:
[ 191.717749] Read(10): 28 00 00 00 00 00 00 00 08 00
[ 191.717761] end_request: critical target error, dev sdb, sector 0
[ 191.718737] Buffer I/O error on device sdb, logical block 0
[ 194.725258] sd 6:0:0:0: [sdb] Unhandled sense code
[ 194.725264] sd 6:0:0:0: [sdb]
[ 194.725267] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 194.725269] sd 6:0:0:0: [sdb]
[ 194.725271] Sense Key : Medium Error [current]
[ 194.725276] sd 6:0:0:0: [sdb]
[ 194.725278] Add. Sense: Unrecovered read error
[ 194.725281] sd 6:0:0:0: [sdb] CDB:
[ 194.725283] Read(10): 28 00 00 00 00 00 00 00 08 00
[ 194.725293] end_request: critical target error, dev sdb, sector 0
[ 194.726174] Buffer I/O error on device sdb, logical block 0
[ 197.732800] sd 6:0:0:0: [sdb] Unhandled sense code
[ 197.732807] sd 6:0:0:0: [sdb]
[ 197.732810] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 197.732812] sd 6:0:0:0: [sdb]
[ 197.732815] Sense Key : Medium Error [current]
[ 197.732819] sd 6:0:0:0: [sdb]
[ 197.732822] Add. Sense: Unrecovered read error
[ 197.732825] sd 6:0:0:0: [sdb] CDB:
[ 197.732827] Read(10): 28 00 00 00 00 00 00 00 08 00
[ 197.732839] end_request: critical target error, dev sdb, sector 0
[ 197.733830] Buffer I/O error on device sdb, logical block 0
[ 200.740099] sd 6:0:0:0: [sdb] Unhandled sense code
[ 200.740106] sd 6:0:0:0: [sdb]
[ 200.740109] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 200.740112] sd 6:0:0:0: [sdb]
[ 200.740114] Sense Key : Medium Error [current]
[ 200.740118] sd 6:0:0:0: [sdb]
[ 200.740121] Add. Sense: Unrecovered read error
[ 200.740124] sd 6:0:0:0: [sdb] CDB:
[ 200.740126] Read(10): 28 00 00 00 00 00 00 00 08 00
[ 200.740137] end_request: critical target error, dev sdb, sector 0
[ 200.741394] Buffer I/O error on device sdb, logical block 0
[ 203.751384] sd 6:0:0:0: [sdb] Unhandled sense code
[ 203.751390] sd 6:0:0:0: [sdb]
[ 203.751393] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 203.751395] sd 6:0:0:0: [sdb]
[ 203.751397] Sense Key : Medium Error [current]
[ 203.751401] sd 6:0:0:0: [sdb]
[ 203.751404] Add. Sense: Unrecovered read error
[ 203.751407] sd 6:0:0:0: [sdb] CDB:
[ 203.751409] Read(10): 28 00 00 00 00 00 00 00 08 00
[ 203.751420] end_request: critical target error, dev sdb, sector 0
[ 203.752412] Buffer I/O error on device sdb, logical block 0
What is interesting - on another box, Linux (3.9.6) survives card insertion:
[ 2446.960993] sd 8:0:0:0: [sdc] 3862528 512-byte logical blocks:
(1.97 GB/1.84 GiB)
[ 2446.963237] sd 8:0:0:0: [sdc] No Caching mode page present
[ 2446.963245] sd 8:0:0:0: [sdc] Assuming drive cache: write through
[ 2446.966369] sd 8:0:0:0: [sdc] No Caching mode page present
[ 2446.966377] sd 8:0:0:0: [sdc] Assuming drive cache: write through
[ 2446.982859] sdc: sdc1
[ 2448.463726] sd 8:0:0:0: [sdc] Device not ready
[ 2448.463737] sd 8:0:0:0: [sdc]
[ 2448.463742] Result: hostbyte=0x00 driverbyte=0x08
[ 2448.463748] sd 8:0:0:0: [sdc]
[ 2448.463752] Sense Key : 0x2 [current]
[ 2448.463765] Info fld=0x0
[ 2448.463769] sd 8:0:0:0: [sdc]
[ 2448.463773] <<vendor>> ASC=0xff ASCQ=0xffASC=0xff <<vendor>> ASCQ=0xff
[ 2448.463783] sd 8:0:0:0: [sdc] CDB:
[ 2448.463787] cdb[0]=0x28: 28 00 00 00 03 ff 00 00 08 00
[ 2448.463853] end_request: I/O error, dev sdc, sector 1023
[ 2448.463859] Buffer I/O error on device sdc1, logical block 888
[ 2448.463864] Buffer I/O error on device sdc1, logical block 889
[ 2448.463869] Buffer I/O error on device sdc1, logical block 890
[ 2448.463873] Buffer I/O error on device sdc1, logical block 891
[ 2448.463878] Buffer I/O error on device sdc1, logical block 892
[ 2448.463883] Buffer I/O error on device sdc1, logical block 893
[ 2448.463888] Buffer I/O error on device sdc1, logical block 894
[ 2448.463892] Buffer I/O error on device sdc1, logical block 895
[ 2449.491503] sd 8:0:0:0: [sdc] Device not ready
[ 2449.491512] sd 8:0:0:0: [sdc]
[ 2449.491517] Result: hostbyte=0x00 driverbyte=0x08
[ 2449.491522] sd 8:0:0:0: [sdc]
[ 2449.491526] Sense Key : 0x2 [current]
[ 2449.491538] Info fld=0x0
[ 2449.491543] sd 8:0:0:0: [sdc]
[ 2449.491547] <<vendor>> ASC=0xff ASCQ=0xffASC=0xff <<vendor>> ASCQ=0xff
[ 2449.491556] sd 8:0:0:0: [sdc] CDB:
[ 2449.491559] cdb[0]=0x28: 28 00 00 00 04 01 00 00 06 00
[ 2449.491587] end_request: I/O error, dev sdc, sector 1025
[ 2449.491592] Buffer I/O error on device sdc1, logical block 890
[ 2449.491598] Buffer I/O error on device sdc1, logical block 891
[ 2500.907374] sdc: detected capacity change from 1977614336 to 0
If you want me to test some patches, just shout ;)
Marcin
[-- Attachment #2: sg_complete_io_dev_crash_fix.patch --]
[-- Type: application/octet-stream, Size: 623 bytes --]
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index 444d30e..ee462a0 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -280,9 +280,9 @@ static void sg_complete(struct urb *urb)
&& (io->status != -ECONNRESET
|| status != -ECONNRESET)
&& urb->actual_length) {
- dev_err(io->dev->bus->controller,
+ dev_err(io->dev ? io->dev->bus->controller : NULL,
"dev %s ep%d%s scatterlist error %d/%d\n",
- io->dev->devpath,
+ io->dev ? io->dev->devpath : "???",
usb_endpoint_num(&urb->ep->desc),
usb_urb_dir_in(urb) ? "in" : "out",
status, io->status);
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: kernel panic in sg_complete
2013-07-21 23:00 kernel panic in sg_complete Marcin Ślusarz
@ 2013-07-22 0:23 ` Greg Kroah-Hartman
2013-07-22 2:07 ` Alan Stern
0 siblings, 1 reply; 3+ messages in thread
From: Greg Kroah-Hartman @ 2013-07-22 0:23 UTC (permalink / raw)
To: Marcin Ślusarz; +Cc: linux-usb, linux-mmc, Alan Stern, Chris Ball
On Mon, Jul 22, 2013 at 01:00:41AM +0200, Marcin Ślusarz wrote:
> If you want me to test some patches, just shout ;)
Interesting patch, it makes sense to have this applied. Can you resend
it with a "Signed-off-by:" line so that I can add it to the tree?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: kernel panic in sg_complete
2013-07-22 0:23 ` Greg Kroah-Hartman
@ 2013-07-22 2:07 ` Alan Stern
0 siblings, 0 replies; 3+ messages in thread
From: Alan Stern @ 2013-07-22 2:07 UTC (permalink / raw)
To: Greg Kroah-Hartman; +Cc: Marcin Ślusarz, linux-usb, linux-mmc, Chris Ball
On Sun, 21 Jul 2013, Greg Kroah-Hartman wrote:
> On Mon, Jul 22, 2013 at 01:00:41AM +0200, Marcin Ślusarz wrote:
> > If you want me to test some patches, just shout ;)
>
> Interesting patch, it makes sense to have this applied. Can you resend
> it with a "Signed-off-by:" line so that I can add it to the tree?
Wait a minute. The patch catches cases where io->dev is NULL in
sg_complete(). But how does that happen?
The only place io->dev gets set to NULL is in sg_clean(), and
sg_clean() gets called in only two places:
if an URB could not be allocated in usb_sg_init(),
or after all the URBs have completed in usb_sg_wait().
In either case, no more URBs will complete after sg_clean() is called,
so sg_complete() won't run.
A patch like this merely covers up the symptom without fixing the
underlying cause. How did this manage to go wrong in the first place?
There must be a bug in the logic of sg_complete() or usb_sg_wait().
_That_ logic bug is what needs to be fixed.
Alan Stern
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-07-22 2:07 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-21 23:00 kernel panic in sg_complete Marcin Ślusarz
2013-07-22 0:23 ` Greg Kroah-Hartman
2013-07-22 2:07 ` Alan Stern
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox