Re: [PATCH] Reset file->f_op in snd_card_file_remove()

From: Takashi Iwai
Date: Thu Sep 28 2006 - 06:08:54 EST


At Wed, 27 Sep 2006 21:27:51 +0200,
Karsten Wiese wrote:
>
> Hi
>
> This patch helps prevent an oops on 2.6.18-rt3,
> when my usb usx2y soundcard disconnects.
> Physically disconnects or "rmmod uhci_hc" both oops 1in7.
>
> With this patch still no oops after > 1000 disconnects.
>
> Please apply/comment.
>
> thanks,
> Karsten
>
> ===
>
> Reset file->f_op in snd_card_file_remove()
>
> When passing here in response to an usb disconnect,
> file->f_op has been replaced with a kmalloc()ed version,
> that would only allow releases.
>
> It will be free()ed later on in snd_card_free().
> Here it happened sometimes, that the free()ed, not NULLed file->f_op
> caused an oops in module_put() called by fops_put() still later on.
>
> Signed-off-by: Karsten Wiese <annabellesgarden@xxxxxxxx>

snd_card_file_remove() is not a right place to do that, IMO.

Could you check whether this problem still happens on post-2.6.18?
There are a lot of fixes in this area after 2.6.18.


Takashi
>
>
>
> --- rt3/sound/core/init.c 2006-09-23 20:03:18.000000000 +0200
> +++ rt3-kw/sound/core/init.c 2006-09-27 20:44:54.000000000 +0200
> @@ -722,6 +722,7 @@ int snd_card_file_remove(struct snd_card
> mfile = card->files;
> while (mfile) {
> if (mfile->file == file) {
> + file->f_op = NULL;
> if (pfile)
> pfile->next = mfile->next;
> else
>
>
>
>
>
> ___________________________________________________________
> Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de
>
-
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/