public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [GIT PATCH] Driver Core fixes for 2.6.19-rc2
@ 2006-10-18 19:58 Greg KH
  2006-10-18 20:08 ` [PATCH 1/16] Documentation: feature-removal-schedule typo Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 19:58 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel

Here are some driver core and sysfs fixes for 2.6.19-rc2.

All of these patches have been in the -mm tree for a quite a while.

Please pull from:
	git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6.git/
or if master.kernel.org hasn't synced up yet:
	master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6.git/

Patches will be sent as a follow-on to this message to lkml for people
to see.

thanks,

greg k-h


 Documentation/HOWTO                        |   20 +++++
 Documentation/feature-removal-schedule.txt |    2 -
 drivers/base/bus.c                         |  108 +++++++++++++++++-----------
 drivers/base/class.c                       |    5 +
 drivers/base/core.c                        |   26 +++++--
 drivers/base/dd.c                          |    4 +
 drivers/base/dmapool.c                     |   13 +++
 drivers/base/topology.c                    |    3 -
 fs/sysfs/file.c                            |    7 --
 9 files changed, 123 insertions(+), 65 deletions(-)

---------------

Akinobu Mita:
      driver core: kmalloc() failure check in driver_probe_device

Alan Stern:
      Driver core: Don't ignore error returns from probing

Cornelia Huck:
      driver core fixes: sysfs_create_link() retval check in class.c
      driver core fixes: bus_add_attrs() retval check
      driver core fixes: bus_add_device() cleanup on error
      driver core fixes: device_add() cleanup on error
      driver core fixes: device_create_file() retval check in dmapool.c
      driver core fixes: sysfs_create_group() retval in topology.c

Diego Calleja:
      HOWTO: bug report addition

Dominik Brodowski:
      Documentation: feature-removal-schedule typo

Duncan Sands:
      Driver core: plug device probe memory leak

Hidetoshi Seto:
      sysfs: remove duplicated dput in sysfs_update_file
      sysfs: update obsolete comment in sysfs_update_file

Jeff Garzik:
      Driver core: bus: remove indentation level

Jesper Juhl:
      Driver core: Don't leak 'old_class_name' in drivers/base/core.c::device_rename()

Matthew Wilcox:
      Fix dev_printk() is now GPL-only


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 1/16] Documentation: feature-removal-schedule typo
  2006-10-18 19:58 [GIT PATCH] Driver Core fixes for 2.6.19-rc2 Greg KH
@ 2006-10-18 20:08 ` Greg KH
  2006-10-18 20:08   ` [PATCH 2/16] Driver core: plug device probe memory leak Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:08 UTC (permalink / raw)
  To: linux-kernel; +Cc: Dominik Brodowski, Greg Kroah-Hartman

From: Dominik Brodowski <linux@dominikbrodowski.net>

Fix typo in newly added feature remove schedule item.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Cc: Kay Sievers <kay.sievers@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 Documentation/feature-removal-schedule.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 24f3c63..1ac3c74 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -255,7 +255,7 @@ Who:	Stephen Hemminger <shemminger@osdl.
 
 
 What:	PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment
-When:	Oktober 2008
+When:	October 2008
 Why:	The stacking of class devices makes these values misleading and
 	inconsistent.
 	Class devices should not carry any of these properties, and bus
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 2/16] Driver core: plug device probe memory leak
  2006-10-18 20:08 ` [PATCH 1/16] Documentation: feature-removal-schedule typo Greg KH
@ 2006-10-18 20:08   ` Greg KH
  2006-10-18 20:08     ` [PATCH 3/16] Fix dev_printk() is now GPL-only Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:08 UTC (permalink / raw)
  To: linux-kernel; +Cc: Duncan Sands, Duncan Sands, Greg Kroah-Hartman

From: Duncan Sands <duncan.sands@free.fr>

Make sure data is freed if the kthread fails to start.

Signed-off-by: Duncan Sands <baldrick@free.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/dd.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index b5f43c3..ef7db69 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -178,7 +178,7 @@ int driver_probe_device(struct device_dr
 		probe_task = kthread_run(really_probe, data,
 					 "probe-%s", dev->bus_id);
 		if (IS_ERR(probe_task))
-			ret = PTR_ERR(probe_task);
+			ret = really_probe(data);
 	} else
 		ret = really_probe(data);
 
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 3/16] Fix dev_printk() is now GPL-only
  2006-10-18 20:08   ` [PATCH 2/16] Driver core: plug device probe memory leak Greg KH
@ 2006-10-18 20:08     ` Greg KH
  2006-10-18 20:08       ` [PATCH 4/16] HOWTO: bug report addition Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:08 UTC (permalink / raw)
  To: linux-kernel; +Cc: Matthew Wilcox, Greg Kroah-Hartman

From: Matthew Wilcox <matthew@wil.cx>

Make dev_printk usable from non-GPL modules again

dev_printk now calls dev_driver_string.  We want even proprietary modules
to be calling dev_printk, so the export of dev_driver_string needs to be
non-GPL-only.

Signed-off-by: Matthew Wilcox <matthew@wil.cx>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/core.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index b224bb4..aee3743 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -44,7 +44,7 @@ const char *dev_driver_string(struct dev
 	return dev->driver ? dev->driver->name :
 			(dev->bus ? dev->bus->name : "");
 }
-EXPORT_SYMBOL_GPL(dev_driver_string);
+EXPORT_SYMBOL(dev_driver_string);
 
 #define to_dev(obj) container_of(obj, struct device, kobj)
 #define to_dev_attr(_attr) container_of(_attr, struct device_attribute, attr)
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 4/16] HOWTO: bug report addition
  2006-10-18 20:08     ` [PATCH 3/16] Fix dev_printk() is now GPL-only Greg KH
@ 2006-10-18 20:08       ` Greg KH
  2006-10-18 20:08         ` [PATCH 5/16] sysfs: remove duplicated dput in sysfs_update_file Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:08 UTC (permalink / raw)
  To: linux-kernel; +Cc: Diego Calleja, Greg Kroah-Hartman

From: Diego Calleja <diegocg@gmail.com>

I suspect that not many people is subscribed to the bugzilla mailing list,
not surprising since the URLs doesn't seem to be in the tree :)

After fixing my english, I wonder if the following patch could be applied...

Signed-off-by: Diego Calleja <diegocg@gmail.com>
Acked-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 Documentation/HOWTO |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/Documentation/HOWTO b/Documentation/HOWTO
index d6f3dd1..8d51c14 100644
--- a/Documentation/HOWTO
+++ b/Documentation/HOWTO
@@ -395,6 +395,26 @@ bugme-janitor mailing list (every change
 
 
 
+Managing bug reports
+--------------------
+
+One of the best ways to put into practice your hacking skills is by fixing
+bugs reported by other people. Not only you will help to make the kernel
+more stable, you'll learn to fix real world problems and you will improve
+your skills, and other developers will be aware of your presence. Fixing
+bugs is one of the best ways to get merits among other developers, because
+not many people like wasting time fixing other people's bugs.
+
+To work in the already reported bug reports, go to http://bugzilla.kernel.org.
+If you want to be advised of the future bug reports, you can subscribe to the
+bugme-new mailing list (only new bug reports are mailed here) or to the
+bugme-janitor mailing list (every change in the bugzilla is mailed here)
+
+	http://lists.osdl.org/mailman/listinfo/bugme-new
+	http://lists.osdl.org/mailman/listinfo/bugme-janitors
+
+
+
 Mailing lists
 -------------
 
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 5/16] sysfs: remove duplicated dput in sysfs_update_file
  2006-10-18 20:08       ` [PATCH 4/16] HOWTO: bug report addition Greg KH
@ 2006-10-18 20:08         ` Greg KH
  2006-10-18 20:08           ` [PATCH 6/16] sysfs: update obsolete comment " Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:08 UTC (permalink / raw)
  To: linux-kernel; +Cc: Hidetoshi Seto, Greg Kroah-Hartman

From: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>

Following function can drops d_count twice against one reference
by lookup_one_len.

<SOURCE>
/**
 * sysfs_update_file - update the modified timestamp on an object attribute.
 * @kobj: object we're acting for.
 * @attr: attribute descriptor.
 */
int sysfs_update_file(struct kobject * kobj, const struct attribute * attr)
{
        struct dentry * dir = kobj->dentry;
        struct dentry * victim;
        int res = -ENOENT;

        mutex_lock(&dir->d_inode->i_mutex);
        victim = lookup_one_len(attr->name, dir, strlen(attr->name));
        if (!IS_ERR(victim)) {
                /* make sure dentry is really there */
                if (victim->d_inode &&
                    (victim->d_parent->d_inode == dir->d_inode)) {
                        victim->d_inode->i_mtime = CURRENT_TIME;
                        fsnotify_modify(victim);

                        /**
                         * Drop reference from initial sysfs_get_dentry().
                         */
                        dput(victim);
                        res = 0;
                } else
                        d_drop(victim);

                /**
                 * Drop the reference acquired from sysfs_get_dentry() above.
                 */
                dput(victim);
        }
        mutex_unlock(&dir->d_inode->i_mutex);

        return res;
}
</SOURCE>

PCI-hotplug (drivers/pci/hotplug/pci_hotplug_core.c) is only user of
this function. I confirmed that dentry of /sys/bus/pci/slots/XXX/*
have negative d_count value.

This patch removes unnecessary dput().

Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Acked-by: Maneesh Soni <maneesh@in.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 fs/sysfs/file.c |    5 -----
 1 files changed, 0 insertions(+), 5 deletions(-)

diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
index 146f1de..93218cc 100644
--- a/fs/sysfs/file.c
+++ b/fs/sysfs/file.c
@@ -483,11 +483,6 @@ int sysfs_update_file(struct kobject * k
 		    (victim->d_parent->d_inode == dir->d_inode)) {
 			victim->d_inode->i_mtime = CURRENT_TIME;
 			fsnotify_modify(victim);
-
-			/**
-			 * Drop reference from initial sysfs_get_dentry().
-			 */
-			dput(victim);
 			res = 0;
 		} else
 			d_drop(victim);
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 6/16] sysfs: update obsolete comment in sysfs_update_file
  2006-10-18 20:08         ` [PATCH 5/16] sysfs: remove duplicated dput in sysfs_update_file Greg KH
@ 2006-10-18 20:08           ` Greg KH
  2006-10-18 20:08             ` [PATCH 7/16] driver core fixes: sysfs_create_link() retval check in class.c Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:08 UTC (permalink / raw)
  To: linux-kernel; +Cc: Hidetoshi Seto, Greg Kroah-Hartman

From: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>

And the obsolete comment should be updated (or totally removed).

Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 fs/sysfs/file.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
index 93218cc..298303b 100644
--- a/fs/sysfs/file.c
+++ b/fs/sysfs/file.c
@@ -488,7 +488,7 @@ int sysfs_update_file(struct kobject * k
 			d_drop(victim);
 		
 		/**
-		 * Drop the reference acquired from sysfs_get_dentry() above.
+		 * Drop the reference acquired from lookup_one_len() above.
 		 */
 		dput(victim);
 	}
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 7/16] driver core fixes: sysfs_create_link() retval check in class.c
  2006-10-18 20:08           ` [PATCH 6/16] sysfs: update obsolete comment " Greg KH
@ 2006-10-18 20:08             ` Greg KH
  2006-10-18 20:08               ` [PATCH 8/16] driver core fixes: bus_add_attrs() retval check Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:08 UTC (permalink / raw)
  To: linux-kernel; +Cc: Cornelia Huck, Greg Kroah-Hartman

From: Cornelia Huck <cornelia.huck@de.ibm.com>

Check for return value of sysfs_create_link() in class_device_add().

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/class.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/drivers/base/class.c b/drivers/base/class.c
index b32b77f..0ff267a 100644
--- a/drivers/base/class.c
+++ b/drivers/base/class.c
@@ -562,7 +562,10 @@ int class_device_add(struct class_device
 		goto out2;
 
 	/* add the needed attributes to this device */
-	sysfs_create_link(&class_dev->kobj, &parent_class->subsys.kset.kobj, "subsystem");
+	error = sysfs_create_link(&class_dev->kobj,
+				  &parent_class->subsys.kset.kobj, "subsystem");
+	if (error)
+		goto out3;
 	class_dev->uevent_attr.attr.name = "uevent";
 	class_dev->uevent_attr.attr.mode = S_IWUSR;
 	class_dev->uevent_attr.attr.owner = parent_class->owner;
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 8/16] driver core fixes: bus_add_attrs() retval check
  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               ` Greg KH
  2006-10-18 20:09                 ` [PATCH 9/16] driver core fixes: bus_add_device() cleanup on error Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:08 UTC (permalink / raw)
  To: linux-kernel; +Cc: Cornelia Huck, Greg Kroah-Hartman

From: Cornelia Huck <cornelia.huck@de.ibm.com>

Check return value of bus_add_attrs() in bus_register().

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/bus.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index 12173d1..b90f6e6 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -732,11 +732,15 @@ int bus_register(struct bus_type * bus)
 
 	klist_init(&bus->klist_devices, klist_devices_get, klist_devices_put);
 	klist_init(&bus->klist_drivers, NULL, NULL);
-	bus_add_attrs(bus);
+	retval = bus_add_attrs(bus);
+	if (retval)
+		goto bus_attrs_fail;
 
 	pr_debug("bus type '%s' registered\n", bus->name);
 	return 0;
 
+bus_attrs_fail:
+	kset_unregister(&bus->drivers);
 bus_drivers_fail:
 	kset_unregister(&bus->devices);
 bus_devices_fail:
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 9/16] driver core fixes: bus_add_device() cleanup on error
  2006-10-18 20:08               ` [PATCH 8/16] driver core fixes: bus_add_attrs() retval check Greg KH
@ 2006-10-18 20:09                 ` Greg KH
  2006-10-18 20:09                   ` [PATCH 10/16] driver core fixes: device_add() " Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:09 UTC (permalink / raw)
  To: linux-kernel; +Cc: Cornelia Huck, Greg Kroah-Hartman

From: Cornelia Huck <cornelia.huck@de.ibm.com>

Correct cleanup in the error path of bus_add_device().

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/bus.c |   19 +++++++++++++++----
 1 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index b90f6e6..d516f7d 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -372,19 +372,30 @@ int bus_add_device(struct device * dev)
 		pr_debug("bus %s: add device %s\n", bus->name, dev->bus_id);
 		error = device_add_attrs(bus, dev);
 		if (error)
-			goto out;
+			goto out_put;
 		error = sysfs_create_link(&bus->devices.kobj,
 						&dev->kobj, dev->bus_id);
 		if (error)
-			goto out;
+			goto out_id;
 		error = sysfs_create_link(&dev->kobj,
 				&dev->bus->subsys.kset.kobj, "subsystem");
 		if (error)
-			goto out;
+			goto out_subsys;
 		error = sysfs_create_link(&dev->kobj,
 				&dev->bus->subsys.kset.kobj, "bus");
+		if (error)
+			goto out_deprecated;
 	}
-out:
+	return 0;
+
+out_deprecated:
+	sysfs_remove_link(&dev->kobj, "subsystem");
+out_subsys:
+	sysfs_remove_link(&bus->devices.kobj, dev->bus_id);
+out_id:
+	device_remove_attrs(bus, dev);
+out_put:
+	put_bus(dev->bus);
 	return error;
 }
 
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 10/16] driver core fixes: device_add() cleanup on error
  2006-10-18 20:09                 ` [PATCH 9/16] driver core fixes: bus_add_device() cleanup on error Greg KH
@ 2006-10-18 20:09                   ` Greg KH
  2006-10-18 20:09                     ` [PATCH 11/16] driver core fixes: device_create_file() retval check in dmapool.c Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:09 UTC (permalink / raw)
  To: linux-kernel; +Cc: Cornelia Huck, Greg Kroah-Hartman

From: Cornelia Huck <cornelia.huck@de.ibm.com>

Check for return code of device_create_file() and correct cleanup in
the error case in device_add().

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/core.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index aee3743..365f709 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -433,14 +433,16 @@ int device_add(struct device *dev)
 	if (dev->driver)
 		dev->uevent_attr.attr.owner = dev->driver->owner;
 	dev->uevent_attr.store = store_uevent;
-	device_create_file(dev, &dev->uevent_attr);
+	error = device_create_file(dev, &dev->uevent_attr);
+	if (error)
+		goto attrError;
 
 	if (MAJOR(dev->devt)) {
 		struct device_attribute *attr;
 		attr = kzalloc(sizeof(*attr), GFP_KERNEL);
 		if (!attr) {
 			error = -ENOMEM;
-			goto PMError;
+			goto ueventattrError;
 		}
 		attr->attr.name = "dev";
 		attr->attr.mode = S_IRUGO;
@@ -450,7 +452,7 @@ int device_add(struct device *dev)
 		error = device_create_file(dev, attr);
 		if (error) {
 			kfree(attr);
-			goto attrError;
+			goto ueventattrError;
 		}
 
 		dev->devt_attr = attr;
@@ -507,6 +509,8 @@ int device_add(struct device *dev)
 		device_remove_file(dev, dev->devt_attr);
 		kfree(dev->devt_attr);
 	}
+ ueventattrError:
+	device_remove_file(dev, &dev->uevent_attr);
  attrError:
 	kobject_uevent(&dev->kobj, KOBJ_REMOVE);
 	kobject_del(&dev->kobj);
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 11/16] driver core fixes: device_create_file() retval check in dmapool.c
  2006-10-18 20:09                   ` [PATCH 10/16] driver core fixes: device_add() " Greg KH
@ 2006-10-18 20:09                     ` Greg KH
  2006-10-18 20:09                       ` [PATCH 12/16] driver core fixes: sysfs_create_group() retval in topology.c Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:09 UTC (permalink / raw)
  To: linux-kernel; +Cc: Cornelia Huck, Greg Kroah-Hartman

From: Cornelia Huck <cornelia.huck@de.ibm.com>

Check for device_create_file() return value in dma_pool_create().

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/dmapool.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/base/dmapool.c b/drivers/base/dmapool.c
index 33c5cce..b2efbd4 100644
--- a/drivers/base/dmapool.c
+++ b/drivers/base/dmapool.c
@@ -141,11 +141,20 @@ dma_pool_create (const char *name, struc
 	init_waitqueue_head (&retval->waitq);
 
 	if (dev) {
+		int ret;
+
 		down (&pools_lock);
 		if (list_empty (&dev->dma_pools))
-			device_create_file (dev, &dev_attr_pools);
+			ret = device_create_file (dev, &dev_attr_pools);
+		else
+			ret = 0;
 		/* note:  not currently insisting "name" be unique */
-		list_add (&retval->pools, &dev->dma_pools);
+		if (!ret)
+			list_add (&retval->pools, &dev->dma_pools);
+		else {
+			kfree(retval);
+			retval = NULL;
+		}
 		up (&pools_lock);
 	} else
 		INIT_LIST_HEAD (&retval->pools);
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 12/16] driver core fixes: sysfs_create_group() retval in topology.c
  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                       ` 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
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:09 UTC (permalink / raw)
  To: linux-kernel; +Cc: Cornelia Huck, Greg Kroah-Hartman

From: Cornelia Huck <cornelia.huck@de.ibm.com>

Return the return value of sysfs_create_group() in topology_add_dev().

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/topology.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/base/topology.c b/drivers/base/topology.c
index 3ef9d51..28dccb7 100644
--- a/drivers/base/topology.c
+++ b/drivers/base/topology.c
@@ -97,8 +97,7 @@ static struct attribute_group topology_a
 /* Add/Remove cpu_topology interface for CPU device */
 static int __cpuinit topology_add_dev(struct sys_device * sys_dev)
 {
-	sysfs_create_group(&sys_dev->kobj, &topology_attr_group);
-	return 0;
+	return sysfs_create_group(&sys_dev->kobj, &topology_attr_group);
 }
 
 static int __cpuinit topology_remove_dev(struct sys_device * sys_dev)
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 13/16] Driver core: Don't leak 'old_class_name' in drivers/base/core.c::device_rename()
  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                         ` Greg KH
  2006-10-18 20:09                           ` [PATCH 14/16] Driver core: Don't ignore error returns from probing Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:09 UTC (permalink / raw)
  To: linux-kernel; +Cc: Jesper Juhl, Greg Kroah-Hartman

From: Jesper Juhl <jesper.juhl@gmail.com>

If kmalloc() fails to allocate space for 'old_symlink_name' in
drivers/base/core.c::device_rename(), then we'll leak 'old_class_name'.

Spotted by the Coverity checker.


Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/core.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index 365f709..41f3dca 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -809,8 +809,10 @@ int device_rename(struct device *dev, ch
 
 	if (dev->class) {
 		old_symlink_name = kmalloc(BUS_ID_SIZE, GFP_KERNEL);
-		if (!old_symlink_name)
-			return -ENOMEM;
+		if (!old_symlink_name) {
+			error = -ENOMEM;
+			goto out_free_old_class;
+		}
 		strlcpy(old_symlink_name, dev->bus_id, BUS_ID_SIZE);
 	}
 
@@ -834,9 +836,10 @@ int device_rename(struct device *dev, ch
 	}
 	put_device(dev);
 
-	kfree(old_class_name);
 	kfree(new_class_name);
 	kfree(old_symlink_name);
+ out_free_old_class:
+	kfree(old_class_name);
 
 	return error;
 }
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 14/16] Driver core: Don't ignore error returns from probing
  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
  2006-10-18 20:09                             ` [PATCH 15/16] Driver core: bus: remove indentation level Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:09 UTC (permalink / raw)
  To: linux-kernel; +Cc: Alan Stern, Greg Kroah-Hartman

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


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 15/16] Driver core: bus: remove indentation level
  2006-10-18 20:09                           ` [PATCH 14/16] Driver core: Don't ignore error returns from probing Greg KH
@ 2006-10-18 20:09                             ` Greg KH
  2006-10-18 20:09                               ` [PATCH 16/16] driver core: kmalloc() failure check in driver_probe_device Greg KH
  0 siblings, 1 reply; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:09 UTC (permalink / raw)
  To: linux-kernel; +Cc: Jeff Garzik, Greg Kroah-Hartman

From: Jeff Garzik <jeff@garzik.org>

Before potentially fixing up these functions, this cosmetic change
reduces the indentation level to make the code easier to read and
maintain.

No functional changes at all.

Signed-off-by: Jeff Garzik <jeff@garzik.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/bus.c |   77 +++++++++++++++++++++++++++-------------------------
 1 files changed, 40 insertions(+), 37 deletions(-)

diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index d7c5ea2..7d8a7ce 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -518,34 +518,36 @@ int bus_add_driver(struct device_driver 
 	struct bus_type * bus = get_bus(drv->bus);
 	int error = 0;
 
-	if (bus) {
-		pr_debug("bus %s: add driver %s\n", bus->name, drv->name);
-		error = kobject_set_name(&drv->kobj, "%s", drv->name);
-		if (error)
-			goto out_put_bus;
-		drv->kobj.kset = &bus->drivers;
-		if ((error = kobject_register(&drv->kobj)))
-			goto out_put_bus;
-
-		error = driver_attach(drv);
-		if (error)
-			goto out_unregister;
-		klist_add_tail(&drv->knode_bus, &bus->klist_drivers);
-		module_add_driver(drv->owner, drv);
-
-		error = driver_add_attrs(bus, drv);
-		if (error) {
-			/* How the hell do we get out of this pickle? Give up */
-			printk(KERN_ERR "%s: driver_add_attrs(%s) failed\n",
-				__FUNCTION__, drv->name);
-		}
-		error = add_bind_files(drv);
-		if (error) {
-			/* Ditto */
-			printk(KERN_ERR "%s: add_bind_files(%s) failed\n",
-				__FUNCTION__, drv->name);
-		}
+	if (!bus)
+		return 0;
+
+	pr_debug("bus %s: add driver %s\n", bus->name, drv->name);
+	error = kobject_set_name(&drv->kobj, "%s", drv->name);
+	if (error)
+		goto out_put_bus;
+	drv->kobj.kset = &bus->drivers;
+	if ((error = kobject_register(&drv->kobj)))
+		goto out_put_bus;
+
+	error = driver_attach(drv);
+	if (error)
+		goto out_unregister;
+	klist_add_tail(&drv->knode_bus, &bus->klist_drivers);
+	module_add_driver(drv->owner, drv);
+
+	error = driver_add_attrs(bus, drv);
+	if (error) {
+		/* How the hell do we get out of this pickle? Give up */
+		printk(KERN_ERR "%s: driver_add_attrs(%s) failed\n",
+			__FUNCTION__, drv->name);
+	}
+	error = add_bind_files(drv);
+	if (error) {
+		/* Ditto */
+		printk(KERN_ERR "%s: add_bind_files(%s) failed\n",
+			__FUNCTION__, drv->name);
 	}
+
 	return error;
 out_unregister:
 	kobject_unregister(&drv->kobj);
@@ -565,16 +567,17 @@ out_put_bus:
 
 void bus_remove_driver(struct device_driver * drv)
 {
-	if (drv->bus) {
-		remove_bind_files(drv);
-		driver_remove_attrs(drv->bus, drv);
-		klist_remove(&drv->knode_bus);
-		pr_debug("bus %s: remove driver %s\n", drv->bus->name, drv->name);
-		driver_detach(drv);
-		module_remove_driver(drv);
-		kobject_unregister(&drv->kobj);
-		put_bus(drv->bus);
-	}
+	if (!drv->bus)
+		return;
+
+	remove_bind_files(drv);
+	driver_remove_attrs(drv->bus, drv);
+	klist_remove(&drv->knode_bus);
+	pr_debug("bus %s: remove driver %s\n", drv->bus->name, drv->name);
+	driver_detach(drv);
+	module_remove_driver(drv);
+	kobject_unregister(&drv->kobj);
+	put_bus(drv->bus);
 }
 
 
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 16/16] driver core: kmalloc() failure check in driver_probe_device
  2006-10-18 20:09                             ` [PATCH 15/16] Driver core: bus: remove indentation level Greg KH
@ 2006-10-18 20:09                               ` Greg KH
  0 siblings, 0 replies; 17+ messages in thread
From: Greg KH @ 2006-10-18 20:09 UTC (permalink / raw)
  To: linux-kernel; +Cc: Akinobu Mita, Greg Kroah-Hartman

From: Akinobu Mita <akinobu.mita@gmail.com>

driver_probe_device() is missing kmalloc() failure check.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/dd.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index ef7db69..db01b95 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -171,6 +171,8 @@ int driver_probe_device(struct device_dr
 		 drv->bus->name, dev->bus_id, drv->name);
 
 	data = kmalloc(sizeof(*data), GFP_KERNEL);
+	if (!data)
+		return -ENOMEM;
 	data->drv = drv;
 	data->dev = dev;
 
-- 
1.4.2.4


^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2006-10-18 20:19 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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                           ` [PATCH 14/16] Driver core: Don't ignore error returns from probing Greg KH
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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox