Merge branch 'x86/core' into core/percpu
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
|
||||
#include <linux/seccomp.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/compat.h>
|
||||
|
||||
/* #define SECCOMP_DEBUG 1 */
|
||||
#define NR_SECCOMP_MODES 1
|
||||
@@ -22,7 +23,7 @@ static int mode1_syscalls[] = {
|
||||
0, /* null terminated */
|
||||
};
|
||||
|
||||
#ifdef TIF_32BIT
|
||||
#ifdef CONFIG_COMPAT
|
||||
static int mode1_syscalls_32[] = {
|
||||
__NR_seccomp_read_32, __NR_seccomp_write_32, __NR_seccomp_exit_32, __NR_seccomp_sigreturn_32,
|
||||
0, /* null terminated */
|
||||
@@ -37,8 +38,8 @@ void __secure_computing(int this_syscall)
|
||||
switch (mode) {
|
||||
case 1:
|
||||
syscall = mode1_syscalls;
|
||||
#ifdef TIF_32BIT
|
||||
if (test_thread_flag(TIF_32BIT))
|
||||
#ifdef CONFIG_COMPAT
|
||||
if (is_compat_task())
|
||||
syscall = mode1_syscalls_32;
|
||||
#endif
|
||||
do {
|
||||
|
@@ -60,12 +60,25 @@ int create_user_ns(struct cred *new)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void free_user_ns(struct kref *kref)
|
||||
/*
|
||||
* Deferred destructor for a user namespace. This is required because
|
||||
* free_user_ns() may be called with uidhash_lock held, but we need to call
|
||||
* back to free_uid() which will want to take the lock again.
|
||||
*/
|
||||
static void free_user_ns_work(struct work_struct *work)
|
||||
{
|
||||
struct user_namespace *ns;
|
||||
|
||||
ns = container_of(kref, struct user_namespace, kref);
|
||||
struct user_namespace *ns =
|
||||
container_of(work, struct user_namespace, destroyer);
|
||||
free_uid(ns->creator);
|
||||
kfree(ns);
|
||||
}
|
||||
|
||||
void free_user_ns(struct kref *kref)
|
||||
{
|
||||
struct user_namespace *ns =
|
||||
container_of(kref, struct user_namespace, kref);
|
||||
|
||||
INIT_WORK(&ns->destroyer, free_user_ns_work);
|
||||
schedule_work(&ns->destroyer);
|
||||
}
|
||||
EXPORT_SYMBOL(free_user_ns);
|
||||
|
Reference in New Issue
Block a user