All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <greg@kroah.com>
To: linux-kernel@vger.kernel.org
Cc: Alan Stern <stern@rowland.harvard.edu>,
	Greg Kroah-Hartman <gregkh@suse.de>
Subject: [PATCH 14/16] Driver core: Don't ignore error returns from probing
Date: Wed, 18 Oct 2006 13:09:05 -0700	[thread overview]
Message-ID: <11612021903607-git-send-email-greg@kroah.com> (raw)
In-Reply-To: <11612021872574-git-send-email-greg@kroah.com>

From: Alan Stern <stern@rowland.harvard.edu>

This patch (as797) fixes device_add() in the driver core.  It needs to
pay attention when the driver for a new device reports an error.

At the same time, since bus_remove_device() undoes the effects of both
bus_add_device() and bus_attach_device(), it needs to check whether
the bus_attach_device step failed.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/bus.c  |    6 ++++--
 drivers/base/core.c |    5 ++++-
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index d516f7d..d7c5ea2 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -439,8 +439,10 @@ void bus_remove_device(struct device * d
 		sysfs_remove_link(&dev->kobj, "bus");
 		sysfs_remove_link(&dev->bus->devices.kobj, dev->bus_id);
 		device_remove_attrs(dev->bus, dev);
-		dev->is_registered = 0;
-		klist_del(&dev->knode_bus);
+		if (dev->is_registered) {
+			dev->is_registered = 0;
+			klist_del(&dev->knode_bus);
+		}
 		pr_debug("bus %s: remove device %s\n", dev->bus->name, dev->bus_id);
 		device_release_driver(dev);
 		put_bus(dev->bus);
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 41f3dca..68ad11a 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -479,7 +479,8 @@ int device_add(struct device *dev)
 	if ((error = bus_add_device(dev)))
 		goto BusError;
 	kobject_uevent(&dev->kobj, KOBJ_ADD);
-	bus_attach_device(dev);
+	if ((error = bus_attach_device(dev)))
+		goto AttachError;
 	if (parent)
 		klist_add_tail(&dev->knode_parent, &parent->klist_children);
 
@@ -498,6 +499,8 @@ int device_add(struct device *dev)
  	kfree(class_name);
 	put_device(dev);
 	return error;
+ AttachError:
+	bus_remove_device(dev);
  BusError:
 	device_pm_remove(dev);
  PMError:
-- 
1.4.2.4


  reply	other threads:[~2006-10-18 20:13 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-18 19:58 [GIT PATCH] Driver Core fixes for 2.6.19-rc2 Greg KH
2006-10-18 20:08 ` [PATCH 1/16] Documentation: feature-removal-schedule typo Greg KH
2006-10-18 20:08   ` [PATCH 2/16] Driver core: plug device probe memory leak Greg KH
2006-10-18 20:08     ` [PATCH 3/16] Fix dev_printk() is now GPL-only Greg KH
2006-10-18 20:08       ` [PATCH 4/16] HOWTO: bug report addition Greg KH
2006-10-18 20:08         ` [PATCH 5/16] sysfs: remove duplicated dput in sysfs_update_file Greg KH
2006-10-18 20:08           ` [PATCH 6/16] sysfs: update obsolete comment " Greg KH
2006-10-18 20:08             ` [PATCH 7/16] driver core fixes: sysfs_create_link() retval check in class.c Greg KH
2006-10-18 20:08               ` [PATCH 8/16] driver core fixes: bus_add_attrs() retval check Greg KH
2006-10-18 20:09                 ` [PATCH 9/16] driver core fixes: bus_add_device() cleanup on error Greg KH
2006-10-18 20:09                   ` [PATCH 10/16] driver core fixes: device_add() " Greg KH
2006-10-18 20:09                     ` [PATCH 11/16] driver core fixes: device_create_file() retval check in dmapool.c Greg KH
2006-10-18 20:09                       ` [PATCH 12/16] driver core fixes: sysfs_create_group() retval in topology.c Greg KH
2006-10-18 20:09                         ` [PATCH 13/16] Driver core: Don't leak 'old_class_name' in drivers/base/core.c::device_rename() Greg KH
2006-10-18 20:09                           ` Greg KH [this message]
2006-10-18 20:09                             ` [PATCH 15/16] Driver core: bus: remove indentation level Greg KH
2006-10-18 20:09                               ` [PATCH 16/16] driver core: kmalloc() failure check in driver_probe_device Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=11612021903607-git-send-email-greg@kroah.com \
    --to=greg@kroah.com \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.