forked from luck/tmp_suning_uos_patched
umd: Remove exit_umh
The bpfilter code no longer uses the umd_info.cleanup callback. This callback is what exit_umh exists to call. So remove exit_umh and all of it's associated booking. v1: https://lkml.kernel.org/r/87bll6dlte.fsf_-_@x220.int.ebiederm.org v2: https://lkml.kernel.org/r/87y2o53abg.fsf_-_@x220.int.ebiederm.org Link: https://lkml.kernel.org/r/20200702164140.4468-15-ebiederm@xmission.com Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Acked-by: Alexei Starovoitov <ast@kernel.org> Tested-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
e80eb1dc86
commit
8c2f526639
|
@ -1511,7 +1511,6 @@ extern struct pid *cad_pid;
|
|||
#define PF_KTHREAD 0x00200000 /* I am a kernel thread */
|
||||
#define PF_RANDOMIZE 0x00400000 /* Randomize virtual address space */
|
||||
#define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */
|
||||
#define PF_UMH 0x02000000 /* I'm an Usermodehelper process */
|
||||
#define PF_NO_SETAFFINITY 0x04000000 /* Userland is not allowed to meddle with cpus_mask */
|
||||
#define PF_MCE_EARLY 0x08000000 /* Early kill for mce process policy */
|
||||
#define PF_MEMALLOC_NOCMA 0x10000000 /* All allocation request will have _GFP_MOVABLE cleared */
|
||||
|
|
|
@ -4,26 +4,10 @@
|
|||
#include <linux/umh.h>
|
||||
#include <linux/path.h>
|
||||
|
||||
#ifdef CONFIG_BPFILTER
|
||||
void __exit_umh(struct task_struct *tsk);
|
||||
|
||||
static inline void exit_umh(struct task_struct *tsk)
|
||||
{
|
||||
if (unlikely(tsk->flags & PF_UMH))
|
||||
__exit_umh(tsk);
|
||||
}
|
||||
#else
|
||||
static inline void exit_umh(struct task_struct *tsk)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
struct umd_info {
|
||||
const char *driver_name;
|
||||
struct file *pipe_to_umh;
|
||||
struct file *pipe_from_umh;
|
||||
struct list_head list;
|
||||
void (*cleanup)(struct umd_info *info);
|
||||
struct path wd;
|
||||
struct pid *tgid;
|
||||
};
|
||||
|
|
|
@ -63,7 +63,6 @@
|
|||
#include <linux/random.h>
|
||||
#include <linux/rcuwait.h>
|
||||
#include <linux/compat.h>
|
||||
#include <linux/usermode_driver.h>
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/unistd.h>
|
||||
|
@ -805,8 +804,6 @@ void __noreturn do_exit(long code)
|
|||
exit_task_namespaces(tsk);
|
||||
exit_task_work(tsk);
|
||||
exit_thread(tsk);
|
||||
if (group_dead)
|
||||
exit_umh(tsk);
|
||||
|
||||
/*
|
||||
* Flush inherited counters to the parent - before the parent
|
||||
|
|
|
@ -9,9 +9,6 @@
|
|||
#include <linux/task_work.h>
|
||||
#include <linux/usermode_driver.h>
|
||||
|
||||
static LIST_HEAD(umh_list);
|
||||
static DEFINE_MUTEX(umh_list_lock);
|
||||
|
||||
static struct vfsmount *blob_to_mnt(const void *data, size_t len, const char *name)
|
||||
{
|
||||
struct file_system_type *type;
|
||||
|
@ -134,7 +131,6 @@ static int umd_setup(struct subprocess_info *info, struct cred *new)
|
|||
umd_info->pipe_to_umh = to_umh[1];
|
||||
umd_info->pipe_from_umh = from_umh[0];
|
||||
umd_info->tgid = get_pid(task_tgid(current));
|
||||
current->flags |= PF_UMH;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -182,11 +178,6 @@ int fork_usermode_driver(struct umd_info *info)
|
|||
goto out;
|
||||
|
||||
err = call_usermodehelper_exec(sub_info, UMH_WAIT_EXEC);
|
||||
if (!err) {
|
||||
mutex_lock(&umh_list_lock);
|
||||
list_add(&info->list, &umh_list);
|
||||
mutex_unlock(&umh_list_lock);
|
||||
}
|
||||
out:
|
||||
if (argv)
|
||||
argv_free(argv);
|
||||
|
@ -194,23 +185,4 @@ int fork_usermode_driver(struct umd_info *info)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(fork_usermode_driver);
|
||||
|
||||
void __exit_umh(struct task_struct *tsk)
|
||||
{
|
||||
struct umd_info *info;
|
||||
struct pid *tgid = task_tgid(tsk);
|
||||
|
||||
mutex_lock(&umh_list_lock);
|
||||
list_for_each_entry(info, &umh_list, list) {
|
||||
if (info->tgid == tgid) {
|
||||
list_del(&info->list);
|
||||
mutex_unlock(&umh_list_lock);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
mutex_unlock(&umh_list_lock);
|
||||
return;
|
||||
out:
|
||||
if (info->cleanup)
|
||||
info->cleanup(info);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user