提交 f9196e7c 编写于 作者: L Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6:
  fix setattr error handling in sysfs, configfs
  kobject: free memory if netlink_kernel_create() fails
  lib/kobject_uevent.c: fix CONIG_NET=n warning
...@@ -72,10 +72,6 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr) ...@@ -72,10 +72,6 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr)
if (!sd) if (!sd)
return -EINVAL; return -EINVAL;
error = simple_setattr(dentry, iattr);
if (error)
return error;
sd_iattr = sd->s_iattr; sd_iattr = sd->s_iattr;
if (!sd_iattr) { if (!sd_iattr) {
/* setting attributes for the first time, allocate now */ /* setting attributes for the first time, allocate now */
...@@ -89,9 +85,12 @@ int configfs_setattr(struct dentry * dentry, struct iattr * iattr) ...@@ -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_iattr->ia_atime = sd_iattr->ia_mtime = sd_iattr->ia_ctime = CURRENT_TIME;
sd->s_iattr = sd_iattr; sd->s_iattr = sd_iattr;
} }
/* attributes were changed atleast once in past */ /* attributes were changed atleast once in past */
error = simple_setattr(dentry, iattr);
if (error)
return error;
if (ia_valid & ATTR_UID) if (ia_valid & ATTR_UID)
sd_iattr->ia_uid = iattr->ia_uid; sd_iattr->ia_uid = iattr->ia_uid;
if (ia_valid & ATTR_GID) if (ia_valid & ATTR_GID)
......
...@@ -117,11 +117,13 @@ int sysfs_setattr(struct dentry *dentry, struct iattr *iattr) ...@@ -117,11 +117,13 @@ int sysfs_setattr(struct dentry *dentry, struct iattr *iattr)
if (error) if (error)
goto out; goto out;
error = sysfs_sd_setattr(sd, iattr);
if (error)
goto out;
/* this ignores size changes */ /* this ignores size changes */
generic_setattr(inode, iattr); generic_setattr(inode, iattr);
error = sysfs_sd_setattr(sd, iattr);
out: out:
mutex_unlock(&sysfs_mutex); mutex_unlock(&sysfs_mutex);
return error; return error;
......
...@@ -83,6 +83,7 @@ int kobject_action_type(const char *buf, size_t count, ...@@ -83,6 +83,7 @@ int kobject_action_type(const char *buf, size_t count,
return ret; return ret;
} }
#ifdef CONFIG_NET
static int kobj_bcast_filter(struct sock *dsk, struct sk_buff *skb, void *data) static int kobj_bcast_filter(struct sock *dsk, struct sk_buff *skb, void *data)
{ {
struct kobject *kobj = data; struct kobject *kobj = data;
...@@ -98,6 +99,7 @@ static int kobj_bcast_filter(struct sock *dsk, struct sk_buff *skb, void *data) ...@@ -98,6 +99,7 @@ static int kobj_bcast_filter(struct sock *dsk, struct sk_buff *skb, void *data)
return 0; return 0;
} }
#endif
static int kobj_usermode_filter(struct kobject *kobj) static int kobj_usermode_filter(struct kobject *kobj)
{ {
...@@ -378,6 +380,7 @@ static int uevent_net_init(struct net *net) ...@@ -378,6 +380,7 @@ static int uevent_net_init(struct net *net)
if (!ue_sk->sk) { if (!ue_sk->sk) {
printk(KERN_ERR printk(KERN_ERR
"kobject_uevent: unable to create netlink socket!\n"); "kobject_uevent: unable to create netlink socket!\n");
kfree(ue_sk);
return -ENODEV; return -ENODEV;
} }
mutex_lock(&uevent_sock_mutex); mutex_lock(&uevent_sock_mutex);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册