On Tue, 24 Jan 2012 10:56:12 +0200 Felipe Balbi <balbi@xxxxxx> wrote: > On Fri, Dec 30, 2011 at 12:36:28PM +1100, NeilBrown wrote: > > > > > > This callback is on an 'atomic notificaitons' queue but is written > > as a blocking notifier. > > > > Convert to use a work-queue to run from non-atomic context. > > > > Signed-off-by: NeilBrown <neilb@xxxxxxx> > > doesn't apply. > It did 1 month ago when I sent it :-) It seems that commit 712d8efafbbcbe617f9ad706f6ca1ffea4bbf2e8 fixed the same problem already. The following patch adds a few little bits Thanks, NeilBrown musb/omap2430 minor cleanups. 1/ remove incorrect comment (it is a non-blocking notifier) 2/ Use correct symbolic return value for notifier 3/ Make sure otg_notifier_work is cancelled before module exit. Signed-off-by: NeilBrown <neilb@xxxxxxx> diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c index c27bbbf..df719ea 100644 --- a/drivers/usb/musb/omap2430.c +++ b/drivers/usb/musb/omap2430.c @@ -222,7 +222,6 @@ static inline void omap2430_low_level_init(struct musb *musb) musb_writel(musb->mregs, OTG_FORCESTDBY, l); } -/* blocking notifier support */ static int musb_otg_notifications(struct notifier_block *nb, unsigned long event, void *unused) { @@ -231,7 +230,7 @@ static int musb_otg_notifications(struct notifier_block *nb, musb->xceiv_event = event; schedule_work(&musb->otg_notifier_work); - return 0; + return NOTIFY_OK; } static void musb_otg_notifier_work(struct work_struct *data_notifier_work) @@ -386,6 +385,7 @@ static void omap2430_musb_disable(struct musb *musb) static int omap2430_musb_exit(struct musb *musb) { del_timer_sync(&musb_idle_timer); + cancel_work_sync(&musb->otg_notifier_work); omap2430_low_level_exit(musb); otg_put_transceiver(musb->xceiv);
Attachment:
signature.asc
Description: PGP signature