Re: [linux-usb-devel] usb+sysfs: duplicate filename 'bInterfaceNumber'
From: Matthew Dharm
Date: Tue Oct 16 2007 - 12:35:28 EST
On Tue, Oct 16, 2007 at 10:55:54AM -0400, Alan Stern wrote:
> On Tue, 16 Oct 2007, Dave Young wrote:
>
> > > I finally duplicated this on one of my machines here at boot time, with
> > > USB built into the kernel. I'll work tomorrow on tracking this down
> > > further...
> > Hi,
> > I add some printk messages, dump_stack and some others, here is the
> > dmesg dump with debug info(lines begin with "hidave"):
>
> Okay, good, the extra printk messages show exactly where the problem
> lies.
>
> In usb_set_configuration(), each new interfaces is registered and then
> usb_create_sysfs_intf_files() gets called for that interface. This
> makes sense, because obviously we can't create sysfs files for an
> interface before it is registered.
>
> The problem is that during registration drivers get probed, and drivers
> sometimes call usb_set_interface() from their probe method. This
> routine also calls usb_create_sysfs_intf_files(), and the result is
> that the sysfs files get created twice:
>
> First by usb_set_interface, from the driver probe;
>
> Then by usb_set_configuration, when registration is
> finished.
>
> I can think of two possible ways around the problem. One is to add a
> bit to the usb_interface structure, recording whether the sysfs files
> have been created. The other is always to remove the files just before
> trying to create them.
I haven't looked at this code at all, but neither approach feels right to
me.
How does this work at all? Even if you load a driver later, wouldn't it
call usb_set_interface(), which would call usb_create_sysfs_intf_files()
and hit the same issue?
Heck, why do both call usb_create_sysfs_intf_file()? I would guess if
you're *changing* the active configuration you would need to do that, but
why in usb_set_interface() at all?
Matt
--
Matthew Dharm Home: mdharm-usb@xxxxxxxxxxxxxxxxxx
Maintainer, Linux USB Mass Storage Driver
I say, what are all those naked people doing?
-- Big client to Stef
User Friendly, 12/14/1997
Attachment:
pgp00000.pgp
Description: PGP signature