提交 2d4bcf88 编写于 作者: E Eric W. Biederman

exit: Remove profile_task_exit & profile_munmap

When I say remove I mean remove.  All profile_task_exit and
profile_munmap do is call a blocking notifier chain.  The helpers
profile_task_register and profile_task_unregister are not called
anywhere in the tree.  Which means this is all dead code.

So remove the dead code and make it easier to read do_exit.
Reviewed-by: NChristoph Hellwig <hch@lst.de>
Link: https://lkml.kernel.org/r/20220103213312.9144-1-ebiederm@xmission.comSigned-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
上级 6410349e
...@@ -31,11 +31,6 @@ static inline int create_proc_profile(void) ...@@ -31,11 +31,6 @@ static inline int create_proc_profile(void)
} }
#endif #endif
enum profile_type {
PROFILE_TASK_EXIT,
PROFILE_MUNMAP
};
#ifdef CONFIG_PROFILING #ifdef CONFIG_PROFILING
extern int prof_on __read_mostly; extern int prof_on __read_mostly;
...@@ -66,23 +61,14 @@ static inline void profile_hit(int type, void *ip) ...@@ -66,23 +61,14 @@ static inline void profile_hit(int type, void *ip)
struct task_struct; struct task_struct;
struct mm_struct; struct mm_struct;
/* task is in do_exit() */
void profile_task_exit(struct task_struct * task);
/* task is dead, free task struct ? Returns 1 if /* task is dead, free task struct ? Returns 1 if
* the task was taken, 0 if the task should be freed. * the task was taken, 0 if the task should be freed.
*/ */
int profile_handoff_task(struct task_struct * task); int profile_handoff_task(struct task_struct * task);
/* sys_munmap */
void profile_munmap(unsigned long addr);
int task_handoff_register(struct notifier_block * n); int task_handoff_register(struct notifier_block * n);
int task_handoff_unregister(struct notifier_block * n); int task_handoff_unregister(struct notifier_block * n);
int profile_event_register(enum profile_type, struct notifier_block * n);
int profile_event_unregister(enum profile_type, struct notifier_block * n);
#else #else
#define prof_on 0 #define prof_on 0
...@@ -117,19 +103,7 @@ static inline int task_handoff_unregister(struct notifier_block * n) ...@@ -117,19 +103,7 @@ static inline int task_handoff_unregister(struct notifier_block * n)
return -ENOSYS; return -ENOSYS;
} }
static inline int profile_event_register(enum profile_type t, struct notifier_block * n)
{
return -ENOSYS;
}
static inline int profile_event_unregister(enum profile_type t, struct notifier_block * n)
{
return -ENOSYS;
}
#define profile_task_exit(a) do { } while (0)
#define profile_handoff_task(a) (0) #define profile_handoff_task(a) (0)
#define profile_munmap(a) do { } while (0)
#endif /* CONFIG_PROFILING */ #endif /* CONFIG_PROFILING */
......
...@@ -751,7 +751,6 @@ void __noreturn do_exit(long code) ...@@ -751,7 +751,6 @@ void __noreturn do_exit(long code)
*/ */
force_uaccess_begin(); force_uaccess_begin();
profile_task_exit(tsk);
kcov_task_exit(tsk); kcov_task_exit(tsk);
coredump_task_exit(tsk); coredump_task_exit(tsk);
......
...@@ -135,14 +135,7 @@ int __ref profile_init(void) ...@@ -135,14 +135,7 @@ int __ref profile_init(void)
/* Profile event notifications */ /* Profile event notifications */
static BLOCKING_NOTIFIER_HEAD(task_exit_notifier);
static ATOMIC_NOTIFIER_HEAD(task_free_notifier); static ATOMIC_NOTIFIER_HEAD(task_free_notifier);
static BLOCKING_NOTIFIER_HEAD(munmap_notifier);
void profile_task_exit(struct task_struct *task)
{
blocking_notifier_call_chain(&task_exit_notifier, 0, task);
}
int profile_handoff_task(struct task_struct *task) int profile_handoff_task(struct task_struct *task)
{ {
...@@ -151,11 +144,6 @@ int profile_handoff_task(struct task_struct *task) ...@@ -151,11 +144,6 @@ int profile_handoff_task(struct task_struct *task)
return (ret == NOTIFY_OK) ? 1 : 0; return (ret == NOTIFY_OK) ? 1 : 0;
} }
void profile_munmap(unsigned long addr)
{
blocking_notifier_call_chain(&munmap_notifier, 0, (void *)addr);
}
int task_handoff_register(struct notifier_block *n) int task_handoff_register(struct notifier_block *n)
{ {
return atomic_notifier_chain_register(&task_free_notifier, n); return atomic_notifier_chain_register(&task_free_notifier, n);
...@@ -168,44 +156,6 @@ int task_handoff_unregister(struct notifier_block *n) ...@@ -168,44 +156,6 @@ int task_handoff_unregister(struct notifier_block *n)
} }
EXPORT_SYMBOL_GPL(task_handoff_unregister); EXPORT_SYMBOL_GPL(task_handoff_unregister);
int profile_event_register(enum profile_type type, struct notifier_block *n)
{
int err = -EINVAL;
switch (type) {
case PROFILE_TASK_EXIT:
err = blocking_notifier_chain_register(
&task_exit_notifier, n);
break;
case PROFILE_MUNMAP:
err = blocking_notifier_chain_register(
&munmap_notifier, n);
break;
}
return err;
}
EXPORT_SYMBOL_GPL(profile_event_register);
int profile_event_unregister(enum profile_type type, struct notifier_block *n)
{
int err = -EINVAL;
switch (type) {
case PROFILE_TASK_EXIT:
err = blocking_notifier_chain_unregister(
&task_exit_notifier, n);
break;
case PROFILE_MUNMAP:
err = blocking_notifier_chain_unregister(
&munmap_notifier, n);
break;
}
return err;
}
EXPORT_SYMBOL_GPL(profile_event_unregister);
#if defined(CONFIG_SMP) && defined(CONFIG_PROC_FS) #if defined(CONFIG_SMP) && defined(CONFIG_PROC_FS)
/* /*
* Each cpu has a pair of open-addressed hashtables for pending * Each cpu has a pair of open-addressed hashtables for pending
......
...@@ -2928,7 +2928,6 @@ EXPORT_SYMBOL(vm_munmap); ...@@ -2928,7 +2928,6 @@ EXPORT_SYMBOL(vm_munmap);
SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
{ {
addr = untagged_addr(addr); addr = untagged_addr(addr);
profile_munmap(addr);
return __vm_munmap(addr, len, true); return __vm_munmap(addr, len, true);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册