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
This commit is contained in:
commit
f9196e7c03
@ -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)
|
|||||||
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)
|
|||||||
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 @@ out:
|
|||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user