Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7449af1e authored by Al Viro's avatar Al Viro
Browse files

switch xattr syscalls to fget_light/fput_light



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 863ced7f
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -399,11 +399,12 @@ SYSCALL_DEFINE5(lsetxattr, const char __user *, pathname,
SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
		const void __user *,value, size_t, size, int, flags)
{
	int fput_needed;
	struct file *f;
	struct dentry *dentry;
	int error = -EBADF;

	f = fget(fd);
	f = fget_light(fd, &fput_needed);
	if (!f)
		return error;
	dentry = f->f_path.dentry;
@@ -413,7 +414,7 @@ SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name,
		error = setxattr(dentry, name, value, size, flags);
		mnt_drop_write_file(f);
	}
	fput(f);
	fput_light(f, fput_needed);
	return error;
}

@@ -486,15 +487,16 @@ SYSCALL_DEFINE4(lgetxattr, const char __user *, pathname,
SYSCALL_DEFINE4(fgetxattr, int, fd, const char __user *, name,
		void __user *, value, size_t, size)
{
	int fput_needed;
	struct file *f;
	ssize_t error = -EBADF;

	f = fget(fd);
	f = fget_light(fd, &fput_needed);
	if (!f)
		return error;
	audit_inode(NULL, f->f_path.dentry);
	error = getxattr(f->f_path.dentry, name, value, size);
	fput(f);
	fput_light(f, fput_needed);
	return error;
}

@@ -566,15 +568,16 @@ SYSCALL_DEFINE3(llistxattr, const char __user *, pathname, char __user *, list,

SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size)
{
	int fput_needed;
	struct file *f;
	ssize_t error = -EBADF;

	f = fget(fd);
	f = fget_light(fd, &fput_needed);
	if (!f)
		return error;
	audit_inode(NULL, f->f_path.dentry);
	error = listxattr(f->f_path.dentry, list, size);
	fput(f);
	fput_light(f, fput_needed);
	return error;
}

@@ -634,11 +637,12 @@ SYSCALL_DEFINE2(lremovexattr, const char __user *, pathname,

SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
{
	int fput_needed;
	struct file *f;
	struct dentry *dentry;
	int error = -EBADF;

	f = fget(fd);
	f = fget_light(fd, &fput_needed);
	if (!f)
		return error;
	dentry = f->f_path.dentry;
@@ -648,7 +652,7 @@ SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name)
		error = removexattr(dentry, name);
		mnt_drop_write_file(f);
	}
	fput(f);
	fput_light(f, fput_needed);
	return error;
}