oops in Audiowerk2 ALSA driver - Kernel

This is a discussion on oops in Audiowerk2 ALSA driver - Kernel ; Hi There's a race between registration routine and interrupt handler in aw2 driver which manifested as oops on some box [1]. When snd_aw2_create calls request_irq chip data are not yet fully initialized. If interrupt raises before snd_aw2_create call snd_aw2_saa7146_setup, driver ...

+ Reply to Thread
Results 1 to 2 of 2

Thread: oops in Audiowerk2 ALSA driver

  1. oops in Audiowerk2 ALSA driver

    Hi
    There's a race between registration routine and interrupt handler in aw2 driver
    which manifested as oops on some box [1].

    When snd_aw2_create calls request_irq chip data are not yet fully initialized.
    If interrupt raises before snd_aw2_create call snd_aw2_saa7146_setup, driver may
    oops or read/write other port than its own. (chip->base_addr is initialized in
    snd_aw2_saa7146_setup, but is used in snd_aw2_saa7146_interrupt via READREG/WRITEREG)

    The simple fix would be to move call to snd_aw2_saa7146_setup before request_irq,
    but snd_aw2_saa7146_setup enables interrupts...

    PS: I don't have this hardware.

    Marcin

    [1] http://kerneloops.org/guilty.php?gui...703&class=oops
    --
    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/

  2. Re: oops in Audiowerk2 ALSA driver

    At Sun, 22 Jun 2008 18:47:17 +0200,
    Marcin Slusarz wrote:
    >
    > Hi
    > There's a race between registration routine and interrupt handler in aw2 driver
    > which manifested as oops on some box [1].
    >
    > When snd_aw2_create calls request_irq chip data are not yet fully initialized.
    > If interrupt raises before snd_aw2_create call snd_aw2_saa7146_setup, driver may
    > oops or read/write other port than its own. (chip->base_addr is initialized in
    > snd_aw2_saa7146_setup, but is used in snd_aw2_saa7146_interrupt via READREG/WRITEREG)
    >
    > The simple fix would be to move call to snd_aw2_saa7146_setup before request_irq,
    > but snd_aw2_saa7146_setup enables interrupts...
    >
    > PS: I don't have this hardware.
    >
    > Marcin
    >
    > [1] http://kerneloops.org/guilty.php?gui...703&class=oops


    Thanks for spotting the bug.
    I fixed this on my git tree now and will post a pull request soon
    later.


    Takashi
    --
    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/

+ Reply to Thread