diff options
Diffstat (limited to 'fs/efivarfs')
| -rw-r--r-- | fs/efivarfs/file.c | 13 | ||||
| -rw-r--r-- | fs/efivarfs/super.c | 13 | 
2 files changed, 6 insertions, 20 deletions
diff --git a/fs/efivarfs/file.c b/fs/efivarfs/file.c index 8dd524f3228..cdb2971192a 100644 --- a/fs/efivarfs/file.c +++ b/fs/efivarfs/file.c @@ -21,7 +21,7 @@ static ssize_t efivarfs_file_write(struct file *file,  	u32 attributes;  	struct inode *inode = file->f_mapping->host;  	unsigned long datasize = count - sizeof(attributes); -	ssize_t bytes = 0; +	ssize_t bytes;  	bool set = false;  	if (count < sizeof(attributes)) @@ -33,14 +33,9 @@ static ssize_t efivarfs_file_write(struct file *file,  	if (attributes & ~(EFI_VARIABLE_MASK))  		return -EINVAL; -	data = kmalloc(datasize, GFP_KERNEL); -	if (!data) -		return -ENOMEM; - -	if (copy_from_user(data, userbuf + sizeof(attributes), datasize)) { -		bytes = -EFAULT; -		goto out; -	} +	data = memdup_user(userbuf + sizeof(attributes), datasize); +	if (IS_ERR(data)) +		return PTR_ERR(data);  	bytes = efivar_entry_set_get_size(var, attributes, &datasize,  					  data, &set); diff --git a/fs/efivarfs/super.c b/fs/efivarfs/super.c index a8766b880c0..0a48886e069 100644 --- a/fs/efivarfs/super.c +++ b/fs/efivarfs/super.c @@ -83,19 +83,10 @@ static int efivarfs_d_hash(const struct dentry *dentry, struct qstr *qstr)  	return 0;  } -/* - * Retaining negative dentries for an in-memory filesystem just wastes - * memory and lookup time: arrange for them to be deleted immediately. - */ -static int efivarfs_delete_dentry(const struct dentry *dentry) -{ -	return 1; -} - -static struct dentry_operations efivarfs_d_ops = { +static const struct dentry_operations efivarfs_d_ops = {  	.d_compare = efivarfs_d_compare,  	.d_hash = efivarfs_d_hash, -	.d_delete = efivarfs_delete_dentry, +	.d_delete = always_delete_dentry,  };  static struct dentry *efivarfs_alloc_dentry(struct dentry *parent, char *name)  | 
