2011-06-25 19:25:49

by Raghavendra D Prabhu

[permalink] [raw]
Subject: Oops while modprobing uvcvideo module

Hi,

While modprobing uvcvideo I am getting the following oops. This is
on a kernel built with latest linus master
(536142f950f7ea4f3d146a138ad6938f28a34f33). I have also attached the
full dmesg.

=============================================================
[ 1985.732475] uvcvideo: Found UVC 1.00 device Laptop_Integrated_Webcam_2HDM (0408:2fb1)
[ 1985.759844] uvcvideo: No streaming interface found for terminal 6.
[ 1985.759863] BUG: unable to handle kernel NULL pointer dereference at 0000000000000050
[ 1985.759871] IP: [<ffffffffa0da23e0>] media_entity_init+0x40/0xa0 [media]
[ 1985.759884] PGD 10f9eb067 PUD 1397ce067 PMD 0
[ 1985.759892] Oops: 0002 [#1] PREEMPT SMP
[ 1985.759899] CPU 0
[ 1985.759901] Modules linked in: uvcvideo(+) videodev v4l2_compat_ioctl32 media nbd kvm_intel kvm usb_storage cls_u32 sch_sfb sch_htb max6650 coretemp usbhid snd_hda_codec_hdmi snd_hda_codec_realtek iwlagn snd_hda_intel mac80211 snd_hda_c odec nvidia(P) snd_pcm cfg80211 dell_laptop rfkill ehci_hcd snd_timer iTCO_wdt dell_wmi snd soundcore snd_page_alloc psmouse sparse_keymap mei(C) i7core_edac edac_core dcdbas intel_ips xhci_hcd iTCO_vendor_support wmi usbcore agpgart sd_mo d ahci libahci
[ 1985.759961]
[ 1985.759967] Pid: 14596, comm: modprobe Tainted: P C 3.0.0-rc4-LYM #8 Dell Inc. XPS L501X /0J1VR3
[ 1985.759975] RIP: 0010:[<ffffffffa0da23e0>] [<ffffffffa0da23e0>] media_entity_init+0x40/0xa0 [media]
[ 1985.759986] RSP: 0018:ffff88013a657bc8 EFLAGS: 00010282
[ 1985.759990] RAX: ffff880126cfd6e0 RBX: 0000000000000000 RCX: 0000000000000000
[ 1985.759995] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff880126cfd700
[ 1985.760000] RBP: ffff88013a657bf8 R08: 0000000000000000 R09: ffff880126cfd6e0
[ 1985.760004] R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000001
[ 1985.760008] R13: ffff8800b18c7d58 R14: 0000000000000001 R15: 0000000000000001
[ 1985.760014] FS: 00007f7cb0722700(0000) GS:ffff88013fc00000(0000) knlGS:0000000000000000
[ 1985.760019] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 1985.760024] CR2: 0000000000000050 CR3: 0000000132f04000 CR4: 00000000000006f0
[ 1985.760029] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 1985.760034] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[ 1985.760039] Process modprobe (pid: 14596, threadinfo ffff88013a656000, task ffff88013940c920)
[ 1985.760043] Stack:
[ 1985.760046] ffff8800b76fac00 ffff8800b18c7800 ffff8800b18c7070 ffff8800b7679d80
[ 1985.760055] ffff8800b7679d98 0000000000000000 ffff88013a657c38 ffffffffa0df211a
[ 1985.760063] ffff88013a657c38 ffff8800b7679d88 ffff8800b18c0cc0 ffff8800b18c0800
[ 1985.760072] Call Trace:
[ 1985.760086] [<ffffffffa0df211a>] uvc_mc_register_entities+0xba/0x25c [uvcvideo]
[ 1985.760100] [<ffffffffa0de8a48>] uvc_probe+0x388/0x2550 [uvcvideo]
[ 1985.760128] [<ffffffffa0047ed3>] usb_probe_interface+0xf3/0x250 [usbcore]
[ 1985.760138] [<ffffffff81425bfc>] driver_probe_device+0x9c/0x2b0
[ 1985.760144] [<ffffffff81425ebb>] __driver_attach+0xab/0xb0
[ 1985.760151] [<ffffffff81425e10>] ? driver_probe_device+0x2b0/0x2b0
[ 1985.760157] [<ffffffff81425e10>] ? driver_probe_device+0x2b0/0x2b0
[ 1985.760165] [<ffffffff81424a0c>] bus_for_each_dev+0x5c/0x90
[ 1985.760173] [<ffffffff8142580e>] driver_attach+0x1e/0x20
[ 1985.760179] [<ffffffff81425410>] bus_add_driver+0x1b0/0x2a0
[ 1985.760186] [<ffffffff814263f6>] driver_register+0x76/0x140
[ 1985.760205] [<ffffffffa0046cbd>] usb_register_driver+0x9d/0x190 [usbcore]
[ 1985.760213] [<ffffffffa0dba000>] ? 0xffffffffa0db9fff
[ 1985.760224] [<ffffffffa0dba020>] uvc_init+0x20/0x1000 [uvcvideo]
[ 1985.760234] [<ffffffff810001d0>] do_one_initcall+0x40/0x170
[ 1985.760243] [<ffffffff8108494e>] sys_init_module+0xbe/0x230
[ 1985.760252] [<ffffffff815881eb>] system_call_fastpath+0x16/0x1b
[ 1985.760256] Code: 90 44 0f b7 f6 44 0f b7 f9 48 89 fb 45 01 f7 41 89 f4 be d0 80 00 00 44 89 ff 49 89 d5 48 c1 e7 05 e8 35 60 38 e0 48 85 c0 74 56
[ 1985.760296] 89 43 50 31 c0 45 85 f6 c7 43 38 00 00 00 00 66 44 89 7b 42
[ 1985.760315] RIP [<ffffffffa0da23e0>] media_entity_init+0x40/0xa0 [media]
[ 1985.760325] RSP <ffff88013a657bc8>
[ 1985.760328] CR2: 0000000000000050
[ 1985.760383] ---[ end trace d9254fd075095138 ]---
======================================================================

I was able to observe this at boot and also reproduce it later.

Further analyzing the oops revealed this:
========================================================
perl scripts/markup_oops.pl < ~/oops

No vmlinux specified, assuming /lib/modules/3.0.0-rc4-LYM/build/vmlinux
unsigned int max_links = num_pads + extra_links;
unsigned int i;

links = kzalloc(max_links * sizeof(links[0]), GFP_KERNEL);
ffffffffa01573d2: 48 c1 e7 05 shl $0x5,%rdi | %edi => ffff88013ac31200
ffffffffa01573d6: e8 00 00 00 00 callq ffffffffa01573db <media_entity_init+0x3b>
if (links == NULL)
ffffffffa01573db: 48 85 c0 test %rax,%rax | %eax => ffff88013ac311e0
ffffffffa01573de: 74 56 je ffffffffa0157436 <media_entity_init+0x96>
entity->max_links = max_links;
entity->num_links = 0;
entity->num_backlinks = 0;
entity->num_pads = num_pads;
entity->pads = pads;
entity->links = links;
*ffffffffa01573e0: 48 89 43 50 mov %rax,0x50(%rbx) | %eax = ffff88013ac311e0 <--- faulting instruction
for (i = 0; i < num_pads; i++) {
pads[i].entity = entity;
pads[i].index = i;
}

return 0;
ffffffffa01573e4: 31 c0 xor %eax,%eax
entity->num_backlinks = 0;
entity->num_pads = num_pads;
entity->pads = pads;
entity->links = links;
==================================================================

gcc --version
==================
gcc (GCC) 4.6.0 20110603 (prerelease)
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Currently I have blacklisted the uvcvideo, so it is not hampering normal
operation of the system.

--------------------------
Raghavendra Prabhu
GPG Id : 0xD72BE977
Fingerprint: B93F EBCB 8E05 7039 CD3C A4B8 A616 DCA1 D72B E977
www: wnohang.net


Attachments:
(No filename) (0.00 B)
(No filename) (490.00 B)
Download all attachments

2011-06-27 10:08:31

by Laurent Pinchart

[permalink] [raw]
Subject: Re: Oops while modprobing uvcvideo module

Hi Raghavendra,

On Saturday 25 June 2011 21:19:29 Raghavendra D Prabhu wrote:
> Hi,
>
> While modprobing uvcvideo I am getting the following oops. This is
> on a kernel built with latest linus master
> (536142f950f7ea4f3d146a138ad6938f28a34f33). I have also attached the
> full dmesg.
>
> =============================================================
> [ 1985.732475] uvcvideo: Found UVC 1.00 device Laptop_Integrated_Webcam_2HDM
> (0408:2fb1)

Could you please send me the output of

lsusb -v -d 0408:2fb1

running as root if possible ?

> [ 1985.759844] uvcvideo: No streaming interface found for terminal 6.
> [ 1985.759863] BUG: unable to handle kernel NULL pointer dereference at
> 0000000000000050
> [ 1985.759871] IP: [<ffffffffa0da23e0>] media_entity_init+0x40/0xa0 [media]

[snip]

> I was able to observe this at boot and also reproduce it later.
>
> Further analyzing the oops revealed this:
> ========================================================
> perl scripts/markup_oops.pl < ~/oops
>
> No vmlinux specified, assuming /lib/modules/3.0.0-rc4-LYM/build/vmlinux
> unsigned int max_links = num_pads + extra_links;
> unsigned int i;
>
> links = kzalloc(max_links * sizeof(links[0]), GFP_KERNEL);
> ffffffffa01573d2: 48 c1 e7 05 shl $0x5,%rdi | %edi
> => ffff88013ac31200 ffffffffa01573d6: e8 00 00 00 00 callq
> ffffffffa01573db <media_entity_init+0x3b> if (links == NULL)
> ffffffffa01573db: 48 85 c0 test %rax,%rax | %eax
> => ffff88013ac311e0 ffffffffa01573de: 74 56 je
> ffffffffa0157436 <media_entity_init+0x96> entity->max_links = max_links;
> entity->num_links = 0;
> entity->num_backlinks = 0;
> entity->num_pads = num_pads;
> entity->pads = pads;
> entity->links = links;
> *ffffffffa01573e0: 48 89 43 50 mov %rax,0x50(%rbx) |
> %eax = ffff88013ac311e0 <--- faulting instruction

It looks like entity is NULL.

> for (i = 0; i < num_pads; i++) {
> pads[i].entity = entity;
> pads[i].index = i;
> }
>
> return 0;
> ffffffffa01573e4: 31 c0 xor %eax,%eax
> entity->num_backlinks = 0;
> entity->num_pads = num_pads;
> entity->pads = pads;
> entity->links = links;
> ==================================================================

I can't reproduce the problem with my webcams. Can you try a diagnosis patch
if needed ?

--
Regards,

Laurent Pinchart