Messages in this thread | | | Date | Thu, 28 Sep 2006 12:08:35 +0200 | From | Takashi Iwai <> | Subject | Re: [PATCH] Reset file->f_op in snd_card_file_remove() |
| |
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@yahoo.de>
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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |