Re: sdhci driver produces kernel oops on ejecting the card

From: Russell King
Date: Wed Apr 12 2006 - 05:31:33 EST


On Tue, Apr 11, 2006 at 12:43:56PM -0700, Mikkel Erup wrote:
> > --- Russell King <rmk+lkml@xxxxxxxxxxxxxxxx> wrote:
> >
> > > So the
> > > only place for sane
> > > refcounting seems to be genhd.c, as per the patch
> > > below.
> > >
> > > Comments?
> > >
> > > diff -up -x BitKeeper -x ChangeSet -x SCCS -x _xlk
> > -x
> > > *.orig -x *.rej -x .git a/block/genhd.c
> > > b/block/genhd.c
> > > --- a/block/genhd.c Sat Feb 18 10:31:37 2006
> > > +++ b/block/genhd.c Fri Apr 7 15:22:21 2006
> > > @@ -262,6 +262,7 @@ static int exact_lock(dev_t
> > dev,
> > > void *d
> > > */
> > > void add_disk(struct gendisk *disk)
> > > {
> > > + get_device(disk->driverfs_dev);
> > > disk->flags |= GENHD_FL_UP;
> > > blk_register_region(MKDEV(disk->major,
> > > disk->first_minor),
> > > disk->minors, NULL, exact_match,
> > exact_lock,
> > > disk);
> > > @@ -507,6 +508,7 @@ static struct attribute *
> > > default_attrs[
> > > static void disk_release(struct kobject * kobj)
> > > {
> > > struct gendisk *disk = to_disk(kobj);
> > > + put_device(disk->driverfs_dev);
> > > kfree(disk->random);
> > > kfree(disk->part);
> > > free_disk_stats(disk);
> >
> > I can confirm that this patch is working.
> > The 2.6.16-git20 kernel doesn't oops on
> > ejecting the card after the patch is applied.
> >
> > Mikkel
>
> I didn't see anything regarding this on sdchi-devel or lkml for a
> week or so, so I thought I'd just make sure it's not forgotten.
> This patch works really well for me. The kernel no longer oopses
> on ejecting the card because a NULL pointer is no longer
> dereferenced and I think the patch should be considered.

I think it needs someone like Al Viro or Jens Axboe to review it.
I sent the patch to them originally, but when you replied, your mailer
removed them from your reply.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core
-
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/