Driver core: add new device to bus's list before probing
commit51451faaad9348b73a0c1e00e984a6029fca37fd
authorAlan Stern <stern@rowland.harvard.edu>
Thu, 30 Jul 2009 19:27:18 +0000 (30 15:27 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 5 Oct 2009 16:32:33 +0000 (5 09:32 -0700)
treea593227643616b6e73d0fe6053a022760b5496b7
parent956dc371fe5411ed8a22f1857df3c97f61e9c0c9
Driver core: add new device to bus's list before probing

commit 2023c610dc54a4f4130b0494309a9bd668ca3df8 upstream.

This patch (as1271) affects when new devices get linked into their
bus's list of devices.  Currently this happens after probing, and it
doesn't happen at all if probing fails.  Clearly this is wrong,
because at that point quite a few symbolic links have already been
created in sysfs.  We are committed to adding the device, so it should
be linked into the bus's list regardless.

In addition, this needs to happen before the uevent announcing the new
device gets issued.  Otherwise user programs might try to access the
device before it has been added to the bus.

To fix both these problems, the patch moves the call to
klist_add_tail() forward from bus_attach_device() to bus_add_device().
Since bus_attach_device() now does nothing but probe for drivers, it
has been renamed to bus_probe_device().  And lastly, the kerneldoc is
updated.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/base/base.h
drivers/base/bus.c
drivers/base/core.c