lkml.org 
[lkml]   [2002]   [Jun]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [linux-usb-devel] [PATCHlet] 2.5.23 usb, ide
    From: David Brownell <david-b@pacbell.net>

> Earlier, I reported an oops at shutdown. I just looked at
> what causes the oops and find that the call
> hcd->driver->stop()
> is executed while hcd->driver->stop is NULL.
>
> ...
> USB people may worry whether hcd->driver->stop should
> have been non-NULL.

Not supposed to be possible. All those hc_driver structures
are declared "static const", with non-null stop(). Looks like
something was zeroing some driver's readonly data segment while
it was still in use. (And who knows that else!)

Now wild pointers happen, and it took me some effort a few
weeks ago to catch one. But at first one should look at
simpler explanations.

Now that you tell me that these things are set at initialization
and never changed, the initialization must be wrong. And indeed,
it says "__devexit_p(uhci_stop)" and this yields NULL.

So, my previous stopoops patch can be replaced by

diff -r linux-2.5.23/linux/drivers/usb/host/uhci-hcd.c linux-2.5.23a/linux/drivers/usb/host/uhci-hcd.c
2431c2431
< static void __devexit uhci_stop(struct usb_hcd *hcd)
---
> static void uhci_stop(struct usb_hcd *hcd)
2512c2512
< stop: __devexit_p(uhci_stop),
---
> stop: uhci_stop,

(pasted from another window).

Andries
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:26    [W:0.040 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site