Re: [OOPS] Help needed for usb semaphore lock in 2.4.20-rc1 (since 2.4.13)

From: Randy.Dunlap (
Date: Thu Nov 14 2002 - 00:20:42 EST

| Hi,

On Thu, 14 Nov 2002, Duncan Haldane wrote:

| I am the current maintainer of the cpia webcam driver.
| I am tracking down a kernel Oops in 2.4.20-rc1 that was first
| introduced in 2.4.13 by usb semaphore locking changes in usb.c,
| and which was reported a while back on this list. See:
| The Ooops occurs when the system boots if usb, video4linux ,
| cpia and cpia_usb are compiled into the kernel.
| There is no problem if they are compiled as modules.
| No changes in the cpia drivers occurred when the Ooops was
| introduced in 2.4.13. usb_cpia-init() in drivers/media/video/cpia_usb.c
| calls usb_register() in drivers/usb/usb.c to register itself. \
| usb_register() calls usb_scan_devices(). The Oops occurs when
| the usb list is locked in usb_scan_devices(), by a call to
| " down (&usb_bus_list_lock);".
| The result is: "Unable to handle kernel NULL pointer dereference at
| virtual address 00000000","Oops: 0002".

It's good to have this info, but do you also have the decoded
Oops (ksymoops output)? I'd like to see the code sequence etc.,
unless someone else just posts a patch first. :)

| If I comment out the lock, things work again. (no OOPS, cpa works).
| So the problem is isolated. Whats the fix?
| Assuming this is a usb.c problem , I'm out of my depth here.
| Or should some new entries to initialize something be added to
| the "static struct usb_driver cpia_driver" declaration in cpia_usb.c below?
| Please give me some hints on what to fix if some new initialization
| in cpia_usb.c is needed since the 2.4.13 usb semaphore changes.
| Thanks!
| Please cc me directly:

Also copying .


  "I read part of it all the way through." -- Samuel Goldwyn

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to More majordomo info at Please read the FAQ at

This archive was generated by hypermail 2b29 : Fri Nov 15 2002 - 22:00:32 EST