aboutsummaryrefslogtreecommitdiffstats
diff options
-rw-r--r--driver/uio-fix-kobject-usage.patch4
-rw-r--r--f2.patch83
2 files changed, 75 insertions, 12 deletions
diff --git a/driver/uio-fix-kobject-usage.patch b/driver/uio-fix-kobject-usage.patch
index 3ca3140e60bb31..c61df25e2539c3 100644
--- a/driver/uio-fix-kobject-usage.patch
+++ b/driver/uio-fix-kobject-usage.patch
@@ -4,14 +4,16 @@ To: Greg KH <greg@kroah.com>
From: Greg Kroah-Hartman <gregkh@suse.de>
Subject: UIO: fix kobject usage
+From: Greg Kroah-Hartman <gregkh@suse.de>
+
The uio kobject code is "wierd". This patch should hopefully fix it up
to be sane and not leak memory anymore.
Cc: Kay Sievers <kay.sievers@vrfy.org>
-Cc: Hans J. Koch <hjk@linutronix.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Benedikt Spranger <b.spranger@linutronix.de>
+Signed-off-by: Hans J. Koch <hjk@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
diff --git a/f2.patch b/f2.patch
index c3d6233591ea36..4636dc3d6625da 100644
--- a/f2.patch
+++ b/f2.patch
@@ -1,15 +1,17 @@
---
- block/elevator.c | 8 ++------
- block/ll_rw_blk.c | 9 +++------
- drivers/base/class.c | 10 +++-------
- drivers/base/core.c | 6 ++----
- fs/char_dev.c | 6 ++----
- kernel/module.c | 14 ++++++--------
- kernel/params.c | 6 ++----
- kernel/user.c | 9 ++++-----
- mm/slub.c | 9 ++++-----
- net/bridge/br_if.c | 10 +++-------
- 10 files changed, 31 insertions(+), 56 deletions(-)
+ block/elevator.c | 8 ++------
+ block/ll_rw_blk.c | 9 +++------
+ drivers/base/class.c | 10 +++-------
+ drivers/base/core.c | 6 ++----
+ drivers/md/md.c | 13 ++++---------
+ drivers/net/iseries_veth.c | 10 +++-------
+ fs/char_dev.c | 6 ++----
+ kernel/module.c | 14 ++++++--------
+ kernel/params.c | 6 ++----
+ kernel/user.c | 9 ++++-----
+ mm/slub.c | 9 ++++-----
+ net/bridge/br_if.c | 10 +++-------
+ 12 files changed, 38 insertions(+), 72 deletions(-)
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -113,6 +115,65 @@
if (error)
goto Error;
+--- a/drivers/md/md.c
++++ b/drivers/md/md.c
+@@ -1383,16 +1383,13 @@ static int bind_rdev_to_array(mdk_rdev_t
+ return -EBUSY;
+ }
+ bdevname(rdev->bdev,b);
+- if (kobject_set_name(&rdev->kobj, "dev-%s", b) < 0)
+- return -ENOMEM;
+- while ( (s=strchr(rdev->kobj.k_name, '/')) != NULL)
++ while ( (s=strchr(b, '/')) != NULL)
+ *s = '!';
+-
++
+ rdev->mddev = mddev;
+ printk(KERN_INFO "md: bind<%s>\n", b);
+
+- rdev->kobj.parent = &mddev->kobj;
+- if ((err = kobject_add(&rdev->kobj)))
++ if ((err = kobject_add_ng(&rdev->kobj, &mddev->kobj, "dev-%s", b)))
+ goto fail;
+
+ if (rdev->bdev->bd_part)
+@@ -2036,9 +2033,7 @@ static mdk_rdev_t *md_import_device(dev_
+ if (err)
+ goto abort_free;
+
+- rdev->kobj.parent = NULL;
+- rdev->kobj.ktype = &rdev_ktype;
+- kobject_init(&rdev->kobj);
++ kobject_init_ng(&rdev->kobj, &rdev_ktype);
+
+ rdev->desc_nr = -1;
+ rdev->saved_raid_disk = -1;
+--- a/drivers/net/iseries_veth.c
++++ b/drivers/net/iseries_veth.c
+@@ -844,8 +844,7 @@ static int veth_init_connection(u8 rlp)
+
+ /* This gets us 1 reference, which is held on behalf of the driver
+ * infrastructure. It's released at module unload. */
+- kobject_init(&cnx->kobject);
+- cnx->kobject.ktype = &veth_lpar_connection_ktype;
++ kobject_init_ng(&cnx->kobject, &veth_lpar_connection_ktype);
+ rc = kobject_set_name(&cnx->kobject, "cnx%.2d", rlp);
+ if (rc != 0)
+ return rc;
+@@ -1087,11 +1086,8 @@ static struct net_device * __init veth_p
+ return NULL;
+ }
+
+- kobject_init(&port->kobject);
+- port->kobject.parent = &dev->dev.kobj;
+- port->kobject.ktype = &veth_port_ktype;
+- kobject_set_name(&port->kobject, "veth_port");
+- if (0 != kobject_add(&port->kobject))
++ kobject_init_ng(&port->kobject, &veth_port_ktypeq);
++ if (0 != kobject_add_ng(&port->kobject, &dev->dev.kobj, "veth_port"))
+ veth_error("Failed adding port for %s to sysfs.\n", dev->name);
+
+ veth_info("%s attached to iSeries vlan %d (LPAR map = 0x%.4X)\n",
--- a/fs/char_dev.c
+++ b/fs/char_dev.c
@@ -510,9 +510,8 @@ struct cdev *cdev_alloc(void)