Re: PROBLEM: Kernel 2.6.26 oops if I unplug my Logitech USB 1.1 headset

From: Takashi Iwai
Date: Sun Sep 07 2008 - 05:56:27 EST


At Fri, 5 Sep 2008 10:18:06 +0200,
Vegard Nossum wrote:
>
> On Fri, Sep 5, 2008 at 10:01 AM, Vegard Nossum <vegard.nossum@xxxxxxxxx> wrote:
> > On Fri, Sep 5, 2008 at 9:58 AM, Vegard Nossum <vegard.nossum@xxxxxxxxx> wrote:
> >> On Fri, Sep 5, 2008 at 9:09 AM, Takashi Iwai <tiwai@xxxxxxx> wrote:
> >>> At Thu, 4 Sep 2008 17:28:22 -0700,
> >>> Andrew Morton wrote:
> >>>>
> >>>> On Fri, 05 Sep 2008 01:05:21 +0200
> >>>> Edgar Kalkowski <eMail@xxxxxxxxxxxxxxxxxx> wrote:
> >>>>
> >>>> > Dear kernel hackers. ;)
> >>>> >
> >>>> > [1.] One line summary of the problem: If I unplug my USB-Headset the kernel oopses.
> >>>>
> >>>> cc's added.
> >>>>
> >>>> Might be USB, might be ALSA.
> >>>
> >>> Hm, it's hard to guess...
> >>> Edgar, could you check whether it happens with 2.6.25?
> >>
> >> Hi,
> >>
> >> I recognize this address:
> >>
> >>>>> BUG: unable to handle kernel paging request at 00100100
> >>
> >> Is this a magic value? I also got it, see for example:
> >> http://lkml.org/lkml/2008/8/21/426
> >>
> >> Google will also recognize it:
> >> http://www.google.com/search?hl=en&q="unable+to+handle+kernel+paging+request"+00100100
> >>
> >> Where does it come from?
> >
> > Oh. It _is_ LIST_POISON1. Sorry for the bit of noise.
>
> Probably totally unrelated, but I couldn't help to find this bit of
> code somewhat odd. In snd_ctl_dev_disconnect():
>
> down_read(&card->controls_rwsem);
> list_for_each_entry(ctl, &card->ctl_files, list) {
> wake_up(&ctl->change_sleep);
> kill_fasync(&ctl->fasync, SIGIO, POLL_ERR);
> }
> up_read(&card->controls_rwsem);
>
> ...shouldn't that be using &card->ctl_files_rwlock instead of
> &card->controls_rwsem? That one is always used to protect the list ops
> on &card->ctl_files in all the other places. Or maybe it is already
> locked from higher ups?

I think you're right. This should be card->ctl_files_rwlock.
Will fix up the code later.


thanks,

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