mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
do_mq_notify(): switch to CLASS(fd)
The only failure exit before fdget() is a return, the only thing done after fdput() is transposable with it. Reviewed-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
1aaf6a7e75
commit
54dac3dacc
@ -1317,7 +1317,6 @@ SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, char __user *, u_msg_ptr,
|
||||
static int do_mq_notify(mqd_t mqdes, const struct sigevent *notification)
|
||||
{
|
||||
int ret;
|
||||
struct fd f;
|
||||
struct sock *sock;
|
||||
struct inode *inode;
|
||||
struct mqueue_inode_info *info;
|
||||
@ -1370,8 +1369,8 @@ static int do_mq_notify(mqd_t mqdes, const struct sigevent *notification)
|
||||
}
|
||||
}
|
||||
|
||||
f = fdget(mqdes);
|
||||
if (!fd_file(f)) {
|
||||
CLASS(fd, f)(mqdes);
|
||||
if (fd_empty(f)) {
|
||||
ret = -EBADF;
|
||||
goto out;
|
||||
}
|
||||
@ -1379,7 +1378,7 @@ static int do_mq_notify(mqd_t mqdes, const struct sigevent *notification)
|
||||
inode = file_inode(fd_file(f));
|
||||
if (unlikely(fd_file(f)->f_op != &mqueue_file_operations)) {
|
||||
ret = -EBADF;
|
||||
goto out_fput;
|
||||
goto out;
|
||||
}
|
||||
info = MQUEUE_I(inode);
|
||||
|
||||
@ -1418,8 +1417,6 @@ static int do_mq_notify(mqd_t mqdes, const struct sigevent *notification)
|
||||
inode_set_atime_to_ts(inode, inode_set_ctime_current(inode));
|
||||
}
|
||||
spin_unlock(&info->lock);
|
||||
out_fput:
|
||||
fdput(f);
|
||||
out:
|
||||
if (sock)
|
||||
netlink_detachskb(sock, nc);
|
||||
|
Loading…
Reference in New Issue
Block a user