Re: [2.6.26] kobject_add_internal failed for 2:0 with -EEXIST / unable to handle kernel NULL pointer dereference in sysfs_create_link

Peter Zijlstra
2008-11-03T11:55:16Z

On Mon, 2008-11-03 at 12:53 +0100, Kay Sievers wrote:
> On Fri, Oct 31, 2008 at 10:28, Peter Zijlstra <a.p.zijlstra@chello.nl> wrote:
> > On Fri, 2008-10-31 at 00:23 +0100, Kay Sievers wrote:
> >
> >> Peter, it looks like bdi does not work for devices which share a single queue.
> >> If I add:
> >> --- a/mm/backing-dev.c
> >> +++ b/mm/backing-dev.c
> >> @@ -184,6 +184,8 @@ int bdi_register(struct backing_dev_info *bdi,
> >> struct device *parent,
> >> goto exit;
> >> }
> >>
> >> + printk("XXXXXXX old bdidev is %p\n", bdi->dev);
> >> + printk("XXXXXXX new bdidev is %p\n", dev);
> >> bdi->dev = dev;
> >> bdi_debug_register(bdi, dev_name(dev));
> >>
> >> I get:
> >> $ modprobe floppy
> >> Floppy drive(s): fd0 is 1.44M, fd1 is 1.44M
> >> FDC 0 is a S82078B
> >> XXXXXXX old bdidev is 0000000000000000
> >> XXXXXXX new bdidev is ffff88001f20cd10
> >> XXXXXXX old bdidev is ffff88001f20cd10
> >> XXXXXXX new bdidev is ffff88001f20de30
> >>
> >> which very much looks like bdi will not remove any earlier registered
> >> device, only the last one, right?
> >
> > Sharing a bdi is odd to begin with, let me poke at this a little.
>
> Yeah, it's odd, but I'm not sure if you want to touch floppy.c. :)
> Any objection to this patch, until you possible fix it differently?
> http://marc.info/?l=linux-kernel&m=122541569310798&w=4

Non at all, touching floppy.c is dangerous, folks might assume you know
something about it ;-)