aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.9.21/0051-seccomp-fix-the-usage-of-get-put_seccomp_filter-in-s.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0051-seccomp-fix-the-usage-of-get-put_seccomp_filter-in-s.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.9.21/0051-seccomp-fix-the-usage-of-get-put_seccomp_filter-in-s.patch94
1 files changed, 0 insertions, 94 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0051-seccomp-fix-the-usage-of-get-put_seccomp_filter-in-s.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0051-seccomp-fix-the-usage-of-get-put_seccomp_filter-in-s.patch
deleted file mode 100644
index 7361acf3..00000000
--- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0051-seccomp-fix-the-usage-of-get-put_seccomp_filter-in-s.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 687c8baff48fb1849f5c2e8fdaeb2ff565f6554b Mon Sep 17 00:00:00 2001
-From: Oleg Nesterov <oleg@redhat.com>
-Date: Wed, 27 Sep 2017 09:25:30 -0600
-Subject: [PATCH 51/93] seccomp: fix the usage of get/put_seccomp_filter() in
- seccomp_get_filter()
-
-commit 66a733ea6b611aecf0119514d2dddab5f9d6c01e upstream.
-
-As Chris explains, get_seccomp_filter() and put_seccomp_filter() can end
-up using different filters. Once we drop ->siglock it is possible for
-task->seccomp.filter to have been replaced by SECCOMP_FILTER_FLAG_TSYNC.
-
-Fixes: f8e529ed941b ("seccomp, ptrace: add support for dumping seccomp filters")
-Reported-by: Chris Salls <chrissalls5@gmail.com>
-Signed-off-by: Oleg Nesterov <oleg@redhat.com>
-[tycho: add __get_seccomp_filter vs. open coding refcount_inc()]
-Signed-off-by: Tycho Andersen <tycho@docker.com>
-[kees: tweak commit log]
-Signed-off-by: Kees Cook <keescook@chromium.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- kernel/seccomp.c | 23 ++++++++++++++++-------
- 1 file changed, 16 insertions(+), 7 deletions(-)
-
-diff --git a/kernel/seccomp.c b/kernel/seccomp.c
-index 0db7c8a..af182a6 100644
---- a/kernel/seccomp.c
-+++ b/kernel/seccomp.c
-@@ -457,14 +457,19 @@ static long seccomp_attach_filter(unsigned int flags,
- return 0;
- }
-
-+void __get_seccomp_filter(struct seccomp_filter *filter)
-+{
-+ /* Reference count is bounded by the number of total processes. */
-+ atomic_inc(&filter->usage);
-+}
-+
- /* get_seccomp_filter - increments the reference count of the filter on @tsk */
- void get_seccomp_filter(struct task_struct *tsk)
- {
- struct seccomp_filter *orig = tsk->seccomp.filter;
- if (!orig)
- return;
-- /* Reference count is bounded by the number of total processes. */
-- atomic_inc(&orig->usage);
-+ __get_seccomp_filter(orig);
- }
-
- static inline void seccomp_filter_free(struct seccomp_filter *filter)
-@@ -475,10 +480,8 @@ static inline void seccomp_filter_free(struct seccomp_filter *filter)
- }
- }
-
--/* put_seccomp_filter - decrements the ref count of tsk->seccomp.filter */
--void put_seccomp_filter(struct task_struct *tsk)
-+static void __put_seccomp_filter(struct seccomp_filter *orig)
- {
-- struct seccomp_filter *orig = tsk->seccomp.filter;
- /* Clean up single-reference branches iteratively. */
- while (orig && atomic_dec_and_test(&orig->usage)) {
- struct seccomp_filter *freeme = orig;
-@@ -487,6 +490,12 @@ void put_seccomp_filter(struct task_struct *tsk)
- }
- }
-
-+/* put_seccomp_filter - decrements the ref count of tsk->seccomp.filter */
-+void put_seccomp_filter(struct task_struct *tsk)
-+{
-+ __put_seccomp_filter(tsk->seccomp.filter);
-+}
-+
- /**
- * seccomp_send_sigsys - signals the task to allow in-process syscall emulation
- * @syscall: syscall number to send to userland
-@@ -892,13 +901,13 @@ long seccomp_get_filter(struct task_struct *task, unsigned long filter_off,
- if (!data)
- goto out;
-
-- get_seccomp_filter(task);
-+ __get_seccomp_filter(filter);
- spin_unlock_irq(&task->sighand->siglock);
-
- if (copy_to_user(data, fprog->filter, bpf_classic_proglen(fprog)))
- ret = -EFAULT;
-
-- put_seccomp_filter(task);
-+ __put_seccomp_filter(filter);
- return ret;
-
- out:
---
-2.7.4
-