projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'irq-urgent-2021-05-15' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git]
/
kernel
/
seccomp.c
diff --git
a/kernel/seccomp.c
b/kernel/seccomp.c
index
1e63db4
..
6ecd3f3
100644
(file)
--- a/
kernel/seccomp.c
+++ b/
kernel/seccomp.c
@@
-119,8
+119,11
@@
struct seccomp_kaddfd {
int fd;
unsigned int flags;
int fd;
unsigned int flags;
- /* To only be set on reply */
- int ret;
+ union {
+ bool setfd;
+ /* To only be set on reply */
+ int ret;
+ };
struct completion completion;
struct list_head list;
};
struct completion completion;
struct list_head list;
};
@@
-1069,7
+1072,11
@@
static void seccomp_handle_addfd(struct seccomp_kaddfd *addfd)
* that it has been handled.
*/
list_del_init(&addfd->list);
* that it has been handled.
*/
list_del_init(&addfd->list);
- addfd->ret = receive_fd_replace(addfd->fd, addfd->file, addfd->flags);
+ if (!addfd->setfd)
+ addfd->ret = receive_fd(addfd->file, addfd->flags);
+ else
+ addfd->ret = receive_fd_replace(addfd->fd, addfd->file,
+ addfd->flags);
complete(&addfd->completion);
}
complete(&addfd->completion);
}
@@
-1583,8
+1590,8
@@
static long seccomp_notify_addfd(struct seccomp_filter *filter,
return -EBADF;
kaddfd.flags = addfd.newfd_flags;
return -EBADF;
kaddfd.flags = addfd.newfd_flags;
- kaddfd.
fd = (addfd.flags & SECCOMP_ADDFD_FLAG_SETFD) ?
-
addfd.newfd : -1
;
+ kaddfd.
setfd = addfd.flags & SECCOMP_ADDFD_FLAG_SETFD;
+
kaddfd.fd = addfd.newfd
;
init_completion(&kaddfd.completion);
ret = mutex_lock_interruptible(&filter->notify_lock);
init_completion(&kaddfd.completion);
ret = mutex_lock_interruptible(&filter->notify_lock);