Skip to contentSkip to conversation

driver core fixes for .35-git

PATCH New Greg KH 1 participant 4 messages Jun 4, 2010

Subsystems (3)
lore
Share & tools
lore

Greg KH

author
#0 lore raw

PATCH 1/1 driver core fixes for .35-git

Here's 3 bugfixes for your .35-rc git tree.

Please pull from:
master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-core-2.6.git/

All of these patches have been in the linux-next and mm trees.

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

thanks,

greg k-h

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

 fs/configfs/inode.c  |    9 ++++-----
 fs/sysfs/inode.c     |    6 ++++--
 lib/kobject_uevent.c |    3 +++
 3 files changed, 11 insertions(+), 7 deletions(-)

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

Andrew Morton (1):
lib/kobject_uevent.c: fix CONIG_NET=n warning

Dan Carpenter (1):
kobject: free memory if netlink_kernel_create() fails

Nick Piggin (1):
fix setattr error handling in sysfs, configfs

#1 lore raw

PATCH 1/3 lib/kobject_uevent.c: fix CONIG_NET=n warning

From: Andrew Morton <[email protected]>

lib/kobject_uevent.c:87: warning: 'kobj_bcast_filter' defined but not used

Repairs "hotplug: netns aware uevent_helper"

---
 lib/kobject_uevent.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
lib/kobject_uevent.c +2 -0
index 59c1551..e2eb989 100644
@@ -83,6 +83,7 @@ out:
 	return ret;
 }
 
+#ifdef CONFIG_NET
 static int kobj_bcast_filter(struct sock *dsk, struct sk_buff *skb, void *data)
 {
 	struct kobject *kobj = data;
@@ -98,6 +99,7 @@ static int kobj_bcast_filter(struct sock *dsk, struct sk_buff *skb, void *data)
 
 	return 0;
 }
+#endif
 
 static int kobj_usermode_filter(struct kobject *kobj)
 {
Signature · 1 line
1.7.1
#2 lore raw

PATCH 2/3 kobject: free memory if netlink_kernel_create() fails

In reply to Greg KH

From: Dan Carpenter <[email protected]>

There is a kfree(ue_sk) missing on the error path if netlink_kernel_create() fails.

---
 lib/kobject_uevent.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
lib/kobject_uevent.c +1 -0
index e2eb989..b935795 100644
@@ -380,6 +380,7 @@ static int uevent_net_init(struct net *net)
 	if (!ue_sk->sk) {
 		printk(KERN_ERR
 		       "kobject_uevent: unable to create netlink socket!\n");
+		kfree(ue_sk);
 		return -ENODEV;
 	}
 	mutex_lock(&uevent_sock_mutex);
Signature · 1 line
1.7.1
#3 lore raw

PATCH 3/3 fix setattr error handling in sysfs, configfs

In reply to Greg KH

From: Nick Piggin <[email protected]>

sysfs and configfs setattr functions have error cases after the generic inode's attributes have been changed. Fix consistency by changing the generic inode attributes only when it is guaranteed to succeed.

---
 fs/configfs/inode.c |    9 ++++-----
 fs/sysfs/inode.c    |    6 ++++--
 2 files changed, 8 insertions(+), 7 deletions(-)
fs/configfs/inode.c +4 -5
index 4164514..cf78d44 100644
@@ -72,10 +72,6 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr)
 	if (!sd)
 		return -EINVAL;
 
-	error = simple_setattr(dentry, iattr);
-	if (error)
-		return error;
-
 	sd_iattr = sd->s_iattr;
 	if (!sd_iattr) {
 		/* setting attributes for the first time, allocate now */
@@ -89,9 +85,12 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr)
 		sd_iattr->ia_atime = sd_iattr->ia_mtime = sd_iattr->ia_ctime = CURRENT_TIME;
 		sd->s_iattr = sd_iattr;
 	}
-
 	/* attributes were changed atleast once in past */
 
+	error = simple_setattr(dentry, iattr);
+	if (error)
+		return error;
+
 	if (ia_valid & ATTR_UID)
 		sd_iattr->ia_uid = iattr->ia_uid;
 	if (ia_valid & ATTR_GID)
fs/sysfs/inode.c +4 -2
index bde1a4c..0835a3b 100644
@@ -117,11 +117,13 @@ int sysfs_setattr(struct dentry *dentry, struct iattr *iattr)
 	if (error)
 		goto out;
 
+	error = sysfs_sd_setattr(sd, iattr);
+	if (error)
+		goto out;
+
 	/* this ignores size changes */
 	generic_setattr(inode, iattr);
 
-	error = sysfs_sd_setattr(sd, iattr);
-
 out:
 	mutex_unlock(&sysfs_mutex);
 	return error;
Signature · 1 line
1.7.1