From e6346f3d154dfb481180420b63efb59040942b3c Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sat, 21 Apr 2012 18:44:12 -0400 Subject: [PATCH] --- yaml --- r: 309979 b: refs/heads/master c: 20ba5d736f5a42abbee3e14384ff2d0fdaef2e6d h: refs/heads/master i: 309977: 8c967c8b35d2742ffb2254d7388c4039bff2c892 309975: f435809395768c06660539a094446489953f2e8d v: v3 --- [refs] | 2 +- trunk/fs/signalfd.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 39b3fa0dc6a7..049101ac16ad 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 545ec2c7945bf7d22d0779e7dc9bf16f7dd9ae34 +refs/heads/master: 20ba5d736f5a42abbee3e14384ff2d0fdaef2e6d diff --git a/trunk/fs/signalfd.c b/trunk/fs/signalfd.c index 7ae2a574cb25..9f35a37173de 100644 --- a/trunk/fs/signalfd.c +++ b/trunk/fs/signalfd.c @@ -269,12 +269,13 @@ SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask, if (ufd < 0) kfree(ctx); } else { - struct file *file = fget(ufd); + int fput_needed; + struct file *file = fget_light(ufd, &fput_needed); if (!file) return -EBADF; ctx = file->private_data; if (file->f_op != &signalfd_fops) { - fput(file); + fput_light(file, fput_needed); return -EINVAL; } spin_lock_irq(¤t->sighand->siglock); @@ -282,7 +283,7 @@ SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask, spin_unlock_irq(¤t->sighand->siglock); wake_up(¤t->sighand->signalfd_wqh); - fput(file); + fput_light(file, fput_needed); } return ufd;