Commit 20ba5d73 authored by Al Viro's avatar Al Viro

switch signalfd4() to fget_light/fput_light

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 545ec2c7
...@@ -269,12 +269,13 @@ SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask, ...@@ -269,12 +269,13 @@ SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask,
if (ufd < 0) if (ufd < 0)
kfree(ctx); kfree(ctx);
} else { } else {
struct file *file = fget(ufd); int fput_needed;
struct file *file = fget_light(ufd, &fput_needed);
if (!file) if (!file)
return -EBADF; return -EBADF;
ctx = file->private_data; ctx = file->private_data;
if (file->f_op != &signalfd_fops) { if (file->f_op != &signalfd_fops) {
fput(file); fput_light(file, fput_needed);
return -EINVAL; return -EINVAL;
} }
spin_lock_irq(&current->sighand->siglock); spin_lock_irq(&current->sighand->siglock);
...@@ -282,7 +283,7 @@ SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask, ...@@ -282,7 +283,7 @@ SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask,
spin_unlock_irq(&current->sighand->siglock); spin_unlock_irq(&current->sighand->siglock);
wake_up(&current->sighand->signalfd_wqh); wake_up(&current->sighand->signalfd_wqh);
fput(file); fput_light(file, fput_needed);
} }
return ufd; return ufd;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment