lkml.org 
[lkml]   [2012]   [Jan]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[12/20] usb: usb-storage doesnt support dynamic id currently, the patch disables the feature to fix an oops
    2.6.32-longterm review patch.  If anyone has any objections, please let me know.

    ------------------
    From: Huajun Li <huajun.li.lee@gmail.com>

    commit 1a3a026ba1b6bbfe0b7f79ab38cf991d691e7c9a upstream.

    Echo vendor and product number of a non usb-storage device to
    usb-storage driver's new_id, then plug in the device to host and you
    will find following oops msg, the root cause is usb_stor_probe1()
    refers invalid id entry if giving a dynamic id, so just disable the
    feature.

    [ 3105.018012] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC
    [ 3105.018062] CPU 0
    [ 3105.018075] Modules linked in: usb_storage usb_libusual bluetooth
    dm_crypt binfmt_misc snd_hda_codec_analog snd_hda_intel snd_hda_codec
    snd_hwdep hp_wmi ppdev sparse_keymap snd_pcm snd_seq_midi snd_rawmidi
    snd_seq_midi_event snd_seq snd_timer snd_seq_device psmouse snd
    serio_raw tpm_infineon soundcore i915 snd_page_alloc tpm_tis
    parport_pc tpm tpm_bios drm_kms_helper drm i2c_algo_bit video lp
    parport usbhid hid sg sr_mod sd_mod ehci_hcd uhci_hcd usbcore e1000e
    usb_common floppy
    [ 3105.018408]
    [ 3105.018419] Pid: 189, comm: khubd Tainted: G I 3.2.0-rc7+
    #29 Hewlett-Packard HP Compaq dc7800p Convertible Minitower/0AACh
    [ 3105.018481] RIP: 0010:[<ffffffffa045830d>] [<ffffffffa045830d>]
    usb_stor_probe1+0x2fd/0xc20 [usb_storage]
    [ 3105.018536] RSP: 0018:ffff880056a3d830 EFLAGS: 00010286
    [ 3105.018562] RAX: ffff880065f4e648 RBX: ffff88006bb28000 RCX: 0000000000000000
    [ 3105.018597] RDX: ffff88006f23c7b0 RSI: 0000000000000001 RDI: 0000000000000206
    [ 3105.018632] RBP: ffff880056a3d900 R08: 0000000000000000 R09: ffff880067365000
    [ 3105.018665] R10: 00000000000002ac R11: 0000000000000010 R12: ffff6000b41a7340
    [ 3105.018698] R13: ffff880065f4ef60 R14: ffff88006bb28b88 R15: ffff88006f23d270
    [ 3105.018733] FS: 0000000000000000(0000) GS:ffff88007a200000(0000)
    knlGS:0000000000000000
    [ 3105.018773] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    [ 3105.018801] CR2: 00007fc99c8c4650 CR3: 0000000001e05000 CR4: 00000000000006f0
    [ 3105.018835] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 3105.018870] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    [ 3105.018906] Process khubd (pid: 189, threadinfo ffff880056a3c000,
    task ffff88005677a400)
    [ 3105.018945] Stack:
    [ 3105.018959] 0000000000000000 0000000000000000 ffff880056a3d8d0
    0000000000000002
    [ 3105.019011] 0000000000000000 ffff880056a3d918 ffff880000000000
    0000000000000002
    [ 3105.019058] ffff880056a3d8d0 0000000000000012 ffff880056a3d8d0
    0000000000000006
    [ 3105.019105] Call Trace:
    [ 3105.019128] [<ffffffffa0458cd4>] storage_probe+0xa4/0xe0 [usb_storage]
    [ 3105.019173] [<ffffffffa0097822>] usb_probe_interface+0x172/0x330 [usbcore]
    [ 3105.019211] [<ffffffff815fda67>] driver_probe_device+0x257/0x3b0
    [ 3105.019243] [<ffffffff815fdd43>] __device_attach+0x73/0x90
    [ 3105.019272] [<ffffffff815fdcd0>] ? __driver_attach+0x110/0x110
    [ 3105.019303] [<ffffffff815fb93c>] bus_for_each_drv+0x9c/0xf0
    [ 3105.019334] [<ffffffff815fd6c7>] device_attach+0xf7/0x120
    [ 3105.019364] [<ffffffff815fc905>] bus_probe_device+0x45/0x80
    [ 3105.019396] [<ffffffff815f98a6>] device_add+0x876/0x990
    [ 3105.019434] [<ffffffffa0094e42>] usb_set_configuration+0x822/0x9e0 [usbcore]
    [ 3105.019479] [<ffffffffa00a3492>] generic_probe+0x62/0xf0 [usbcore]
    [ 3105.019518] [<ffffffffa0097a46>] usb_probe_device+0x66/0xb0 [usbcore]
    [ 3105.019555] [<ffffffff815fda67>] driver_probe_device+0x257/0x3b0
    [ 3105.019589] [<ffffffff815fdd43>] __device_attach+0x73/0x90
    [ 3105.019617] [<ffffffff815fdcd0>] ? __driver_attach+0x110/0x110
    [ 3105.019648] [<ffffffff815fb93c>] bus_for_each_drv+0x9c/0xf0
    [ 3105.019680] [<ffffffff815fd6c7>] device_attach+0xf7/0x120
    [ 3105.019709] [<ffffffff815fc905>] bus_probe_device+0x45/0x80
    [ 3105.021040] usb usb6: usb auto-resume
    [ 3105.021045] usb usb6: wakeup_rh
    [ 3105.024849] [<ffffffff815f98a6>] device_add+0x876/0x990
    [ 3105.025086] [<ffffffffa0088987>] usb_new_device+0x1e7/0x2b0 [usbcore]
    [ 3105.025086] [<ffffffffa008a4d7>] hub_thread+0xb27/0x1ec0 [usbcore]
    [ 3105.025086] [<ffffffff810d5200>] ? wake_up_bit+0x50/0x50
    [ 3105.025086] [<ffffffffa00899b0>] ? usb_remote_wakeup+0xa0/0xa0 [usbcore]
    [ 3105.025086] [<ffffffff810d49b8>] kthread+0xd8/0xf0
    [ 3105.025086] [<ffffffff81939884>] kernel_thread_helper+0x4/0x10
    [ 3105.025086] [<ffffffff8192a8c0>] ? _raw_spin_unlock_irq+0x50/0x80
    [ 3105.025086] [<ffffffff8192b1b4>] ? retint_restore_args+0x13/0x13
    [ 3105.025086] [<ffffffff810d48e0>] ? __init_kthread_worker+0x80/0x80
    [ 3105.025086] [<ffffffff81939880>] ? gs_change+0x13/0x13
    [ 3105.025086] Code: 00 48 83 05 cd ad 00 00 01 48 83 05 cd ad 00 00
    01 4c 8b ab 30 0c 00 00 48 8b 50 08 48 83 c0 30 48 89 45 a0 4c 89 a3
    40 0c 00 00 <41> 0f b6 44 24 10 48 89 55 a8 3c ff 0f 84 b8 04 00 00 48
    83 05
    [ 3105.025086] RIP [<ffffffffa045830d>] usb_stor_probe1+0x2fd/0xc20
    [usb_storage]
    [ 3105.025086] RSP <ffff880056a3d830>
    [ 3105.060037] hub 6-0:1.0: hub_resume
    [ 3105.062616] usb usb5: usb auto-resume
    [ 3105.064317] ehci_hcd 0000:00:1d.7: resume root hub
    [ 3105.094809] ---[ end trace a7919e7f17c0a727 ]---
    [ 3105.130069] hub 5-0:1.0: hub_resume
    [ 3105.132131] usb usb4: usb auto-resume
    [ 3105.132136] usb usb4: wakeup_rh
    [ 3105.180059] hub 4-0:1.0: hub_resume
    [ 3106.290052] usb usb6: suspend_rh (auto-stop)
    [ 3106.290077] usb usb4: suspend_rh (auto-stop)
    Signed-off-by: Huajun Li <huajun.li.lee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/usb/storage/usb.c | 1 +
    1 file changed, 1 insertion(+)
    --- a/drivers/usb/storage/usb.c
    +++ b/drivers/usb/storage/usb.c
    @@ -1025,6 +1025,7 @@ static struct usb_driver usb_storage_dri
    .post_reset = usb_stor_post_reset,
    .id_table = usb_storage_usb_ids,
    .soft_unbind = 1,
    + .no_dynamic_id = 1,
    };

    static int __init usb_stor_init(void)



    \
     
     \ /
      Last update: 2012-01-10 21:15    [from the cache]
    ©2003-2011 Jasper Spaans