* Re: [CFT][PATCH] exit/bdflush: Remove the deprecated bdflush system call
@ 2021-06-29 21:55 kernel test robot
0 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2021-06-29 21:55 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 2220 bytes --]
CC: kbuild-all(a)lists.01.org
In-Reply-To: <87sg10quue.fsf_-_@disp2133>
References: <87sg10quue.fsf_-_@disp2133>
TO: "Eric W. Biederman" <ebiederm@xmission.com>
TO: Michael Schmitz <schmitzmic@gmail.com>
CC: Geert Uytterhoeven <geert@linux-m68k.org>
CC: Al Viro <viro@zeniv.linux.org.uk>
CC: "linux-arch" <linux-arch@vger.kernel.org>
CC: Jens Axboe <axboe@kernel.dk>
CC: Oleg Nesterov <oleg@redhat.com>
CC: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
CC: Richard Henderson <rth@twiddle.net>
CC: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
CC: Matt Turner <mattst88@gmail.com>
Hi "Eric,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on tip/perf/core]
[also build test WARNING on arm64/for-next/core m68k/for-next hp-parisc/for-next powerpc/next s390/features tip/x86/asm linus/master sparc/master v5.13 next-20210629]
[cannot apply to sparc-next/master]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Eric-W-Biederman/exit-bdflush-Remove-the-deprecated-bdflush-system-call/20210630-042915
base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 012669c740e6e2afa8bdb95394d06676f933dd2d
:::::: branch date: 86 minutes ago
:::::: commit date: 86 minutes ago
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
cd tools/perf && ./check-headers.sh
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
perfheadercheck warnings: (new ones prefixed by >>)
>> Warning: Kernel ABI header at 'tools/perf/arch/s390/entry/syscalls/syscall.tbl' differs from latest version at 'arch/s390/kernel/syscalls/syscall.tbl': 125< 134 common bdflush - -
>> Warning: Kernel ABI header at 'tools/perf/arch/s390/entry/syscalls/syscall.tbl' differs from latest version at 'arch/s390/kernel/syscalls/syscall.tbl': 125> 134 common bdflush sys_ni_syscall sys_ni_syscall
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Kernel stack read with PTRACE_EVENT_EXIT and io_uring threads
@ 2021-06-21 13:54 Al Viro
2021-06-21 18:59 ` Al Viro
0 siblings, 1 reply; 8+ messages in thread
From: Al Viro @ 2021-06-21 13:54 UTC (permalink / raw)
To: Linus Torvalds
Cc: Eric W. Biederman, Michael Schmitz, linux-arch, Jens Axboe,
Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson,
Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven,
linux-m68k, Arnd Bergmann, Ley Foon Tan, Tejun Heo, Kees Cook
On Tue, Jun 15, 2021 at 02:58:12PM -0700, Linus Torvalds wrote:
> And I think our horrible "kernel threads return to user space when
> done" is absolutely horrifically nasty. Maybe of the clever sort, but
> mostly of the historical horror sort.
How would you prefer to handle that, then? Separate magical path from
kernel_execve() to switch to userland? We used to have something of
that sort, and that had been a real horror...
As it is, it's "kernel thread is spawned at the point similar to
ret_from_fork(), runs the payload (which almost never returns) and
then proceeds out to userland, same way fork(2) would've done."
That way kernel_execve() doesn't have to do anything magical.
Al, digging through the old notes and current call graph...
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Kernel stack read with PTRACE_EVENT_EXIT and io_uring threads 2021-06-21 13:54 Kernel stack read with PTRACE_EVENT_EXIT and io_uring threads Al Viro @ 2021-06-21 18:59 ` Al Viro 2021-06-21 19:22 ` Linus Torvalds 0 siblings, 1 reply; 8+ messages in thread From: Al Viro @ 2021-06-21 18:59 UTC (permalink / raw) To: Linus Torvalds Cc: Eric W. Biederman, Michael Schmitz, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven, linux-m68k, Arnd Bergmann, Ley Foon Tan, Tejun Heo, Kees Cook On Mon, Jun 21, 2021 at 01:54:56PM +0000, Al Viro wrote: > On Tue, Jun 15, 2021 at 02:58:12PM -0700, Linus Torvalds wrote: > > > And I think our horrible "kernel threads return to user space when > > done" is absolutely horrifically nasty. Maybe of the clever sort, but > > mostly of the historical horror sort. > > How would you prefer to handle that, then? Separate magical path from > kernel_execve() to switch to userland? We used to have something of > that sort, and that had been a real horror... > > As it is, it's "kernel thread is spawned at the point similar to > ret_from_fork(), runs the payload (which almost never returns) and > then proceeds out to userland, same way fork(2) would've done." > That way kernel_execve() doesn't have to do anything magical. > > Al, digging through the old notes and current call graph... There's a large mess around do_exit() - we have a bunch of callers all over arch/*; if nothing else, I very much doubt that really want to let tracer play with a thread in the middle of die_if_kernel() or similar. We sure as hell do not want to arrange for anything on the kernel stack in such situations, no matter what's done in exit(2)... ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Kernel stack read with PTRACE_EVENT_EXIT and io_uring threads 2021-06-21 18:59 ` Al Viro @ 2021-06-21 19:22 ` Linus Torvalds 2021-06-21 20:03 ` Eric W. Biederman 0 siblings, 1 reply; 8+ messages in thread From: Linus Torvalds @ 2021-06-21 19:22 UTC (permalink / raw) To: Al Viro Cc: Eric W. Biederman, Michael Schmitz, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven, linux-m68k, Arnd Bergmann, Ley Foon Tan, Tejun Heo, Kees Cook On Mon, Jun 21, 2021 at 11:59 AM Al Viro <viro@zeniv.linux.org.uk> wrote: > > There's a large mess around do_exit() - we have a bunch of > callers all over arch/*; if nothing else, I very much doubt that really > want to let tracer play with a thread in the middle of die_if_kernel() > or similar. Right you are. I'm really beginning to hate ptrace_{event,notify}() and those PTRACE_EVENT_xyz things. I don't even know what uses them, honestly. How very annoying. I guess it's easy enough (famous last words) to move the ptrace_event() call out of do_exit() and into the actual exit/exit_group system calls, and the signal handling path. The paths that actually have proper pt_regs. Looks like sys_exit() and do_group_exit() would be the two places to do it (do_group_exit() would handle the signal case and sys_group_exit()). Linus ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Kernel stack read with PTRACE_EVENT_EXIT and io_uring threads 2021-06-21 19:22 ` Linus Torvalds @ 2021-06-21 20:03 ` Eric W. Biederman 2021-06-21 23:15 ` Linus Torvalds 0 siblings, 1 reply; 8+ messages in thread From: Eric W. Biederman @ 2021-06-21 20:03 UTC (permalink / raw) To: Linus Torvalds Cc: Al Viro, Michael Schmitz, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven, linux-m68k, Arnd Bergmann, Ley Foon Tan, Tejun Heo, Kees Cook Linus Torvalds <torvalds@linux-foundation.org> writes: > On Mon, Jun 21, 2021 at 11:59 AM Al Viro <viro@zeniv.linux.org.uk> wrote: >> >> There's a large mess around do_exit() - we have a bunch of >> callers all over arch/*; if nothing else, I very much doubt that really >> want to let tracer play with a thread in the middle of die_if_kernel() >> or similar. > > Right you are. > > I'm really beginning to hate ptrace_{event,notify}() and those > PTRACE_EVENT_xyz things. > > I don't even know what uses them, honestly. How very annoying. Modern strace does. Modern gdb appears not to. However strace at least does not read the exit code, or really appear to care about stopping for PTRACE_EVENT_EXIT. I completely agree with you that they are very annoying. > I guess it's easy enough (famous last words) to move the > ptrace_event() call out of do_exit() and into the actual > exit/exit_group system calls, and the signal handling path. The paths > that actually have proper pt_regs. > > Looks like sys_exit() and do_group_exit() would be the two places to > do it (do_group_exit() would handle the signal case and > sys_group_exit()). For other ptrace_event calls I am playing with seeing if I can split them in two. Like sending a signal. So that we can have perform all of the work in get_signal. I think we can even change exit_group(2) and exit(2) so that (at least when ptraced) they just send the ``event signal'' and then the signal handling path handles all of the ptrace stuff. When I started it was just going to be exit and PTRACE_EVENT_EXIT and some old architectures, and that a generic solution was going to be hard. I still think we are going to need to fix the io_uring threads on the architectures that use the caller saved register optimization like alpha and m68k. But I think we can handle the rest in generic code. Eric ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Kernel stack read with PTRACE_EVENT_EXIT and io_uring threads 2021-06-21 20:03 ` Eric W. Biederman @ 2021-06-21 23:15 ` Linus Torvalds 2021-06-22 20:52 ` Eric W. Biederman 0 siblings, 1 reply; 8+ messages in thread From: Linus Torvalds @ 2021-06-21 23:15 UTC (permalink / raw) To: Eric W. Biederman Cc: Al Viro, Michael Schmitz, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven, linux-m68k, Arnd Bergmann, Ley Foon Tan, Tejun Heo, Kees Cook On Mon, Jun 21, 2021 at 1:04 PM Eric W. Biederman <ebiederm@xmission.com> wrote: > > For other ptrace_event calls I am playing with seeing if I can split > them in two. Like sending a signal. So that we can have perform all > of the work in get_signal. That sounds like the right model, but I don't think it works. Particularly not for exit(). The second phase will never happen. Linus ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Kernel stack read with PTRACE_EVENT_EXIT and io_uring threads 2021-06-21 23:15 ` Linus Torvalds @ 2021-06-22 20:52 ` Eric W. Biederman 2021-06-23 0:41 ` Linus Torvalds 0 siblings, 1 reply; 8+ messages in thread From: Eric W. Biederman @ 2021-06-22 20:52 UTC (permalink / raw) To: Linus Torvalds Cc: Al Viro, Michael Schmitz, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven, linux-m68k, Arnd Bergmann, Ley Foon Tan, Tejun Heo, Kees Cook Linus Torvalds <torvalds@linux-foundation.org> writes: > On Mon, Jun 21, 2021 at 1:04 PM Eric W. Biederman <ebiederm@xmission.com> wrote: >> >> For other ptrace_event calls I am playing with seeing if I can split >> them in two. Like sending a signal. So that we can have perform all >> of the work in get_signal. > > That sounds like the right model, but I don't think it works. > Particularly not for exit(). The second phase will never happen. Playing with it some more I think I have everything working working except for PTRACE_EVENT_SECCOMP (which can stay ptrace_event) and group_exit(2). Basically in exit sending yourself a signal and then calling do_exit from the signal handler is not unreasonable, as exit is an ordinary system call. I haven't seen anything that ``knows'' that exit(2) or exit_group(2) will never return and adds a special case in the system call table for that case. The complications of exit_group(2) are roughly those of moving ptrace_event out of do_exit. They look doable and I am going to look at that next. This is not to say that this is the most maintainable way or that we necessarily want to implement things this way, but I need to look and see what it looks like. For purposes of discussion this is my current draft implementation. diff --git a/include/linux/sched.h b/include/linux/sched.h index d2c881384517..891812d32b90 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1087,6 +1087,7 @@ struct task_struct { struct capture_control *capture_control; #endif /* Ptrace state: */ + int stop_code; unsigned long ptrace_message; kernel_siginfo_t *last_siginfo; diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index b5ebf6c01292..33c50119b193 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h @@ -164,18 +164,29 @@ static inline void ptrace_event(int event, unsigned long message) } } +static inline bool ptrace_post_event(int event, unsigned long message) +{ + bool posted = false; + if (unlikely(ptrace_event_enabled(current, event))) { + current->ptrace_message = message; + current->stop_code = (event << 8) | SIGTRAP; + set_tsk_thread_flag(current, TIF_SIGPENDING); + posted = true; + } else if (event == PTRACE_EVENT_EXEC) { + /* legacy EXEC report via SIGTRAP */ + if ((current->ptrace & (PT_PTRACED|PT_SEIZED)) == PT_PTRACED) + send_sig(SIGTRAP, current, 0); + } + return posted; +} + /** - * ptrace_event_pid - possibly stop for a ptrace event notification - * @event: %PTRACE_EVENT_* value to report - * @pid: process identifier for %PTRACE_GETEVENTMSG to return - * - * Check whether @event is enabled and, if so, report @event and @pid - * to the ptrace parent. @pid is reported as the pid_t seen from the - * ptrace parent's pid namespace. + * pid_parent_nr - Return the number the parent knows this pid as + * @pid: The struct pid whose numerical value we want * * Called without locks. */ -static inline void ptrace_event_pid(int event, struct pid *pid) +static inline pid_t pid_parent_nr(struct pid *pid) { /* * FIXME: There's a potential race if a ptracer in a different pid @@ -183,16 +194,15 @@ static inline void ptrace_event_pid(int event, struct pid *pid) * when we acquire tasklist_lock in ptrace_stop(). If this happens, * the ptracer will get a bogus pid from PTRACE_GETEVENTMSG. */ - unsigned long message = 0; + pid_t nr = 0; struct pid_namespace *ns; rcu_read_lock(); ns = task_active_pid_ns(rcu_dereference(current->parent)); if (ns) - message = pid_nr_ns(pid, ns); + nr = pid_nr_ns(pid, ns); rcu_read_unlock(); - - ptrace_event(event, message); + return nr; } /** diff --git a/include/linux/sched/mm.h b/include/linux/sched/mm.h index e24b1fe348e3..a2eac3831369 100644 --- a/include/linux/sched/mm.h +++ b/include/linux/sched/mm.h @@ -97,6 +97,8 @@ extern void exit_mm_release(struct task_struct *, struct mm_struct *); /* Remove the current tasks stale references to the old mm_struct on exec() */ extern void exec_mm_release(struct task_struct *, struct mm_struct *); +extern int wait_for_vfork_done(struct task_struct *child, struct completion *vfork); + #ifdef CONFIG_MEMCG extern void mm_update_next_owner(struct mm_struct *mm); #else diff --git a/fs/exec.c b/fs/exec.c index 18594f11c31f..bb4751d84e2d 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -1781,7 +1781,7 @@ static int exec_binprm(struct linux_binprm *bprm) audit_bprm(bprm); trace_sched_process_exec(current, old_pid, bprm); - ptrace_event(PTRACE_EVENT_EXEC, old_vpid); + ptrace_post_event(PTRACE_EVENT_EXEC, old_vpid); proc_exec_connector(current); return 0; } diff --git a/kernel/exit.c b/kernel/exit.c index fd1c04193e18..aeb22a8e4d24 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -889,7 +889,9 @@ EXPORT_SYMBOL(complete_and_exit); SYSCALL_DEFINE1(exit, int, error_code) { - do_exit((error_code&0xff)<<8); + long code = (error_code&0xff)<<8; + if (!ptrace_post_event(PTRACE_EVENT_EXIT, code)) + do_exit((error_code&0xff)<<8); } /* diff --git a/kernel/fork.c b/kernel/fork.c index dc06afd725cb..8533e056a3d6 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -1266,8 +1266,7 @@ static void complete_vfork_done(struct task_struct *tsk) task_unlock(tsk); } -static int wait_for_vfork_done(struct task_struct *child, - struct completion *vfork) +int wait_for_vfork_done(struct task_struct *child, struct completion *vfork) { int killed; @@ -2278,7 +2277,8 @@ static __latent_entropy struct task_struct *copy_process( init_task_pid_links(p); if (likely(p->pid)) { - ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace); + ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || + (trace && ptrace_event_enabled(current, trace))); init_task_pid(p, PIDTYPE_PID, pid); if (thread_group_leader(p)) { @@ -2462,7 +2462,7 @@ struct task_struct *create_io_thread(int (*fn)(void *), void *arg, int node) pid_t kernel_clone(struct kernel_clone_args *args) { u64 clone_flags = args->flags; - struct completion vfork; + unsigned long message; struct pid *pid; struct task_struct *p; int trace = 0; @@ -2495,9 +2495,6 @@ pid_t kernel_clone(struct kernel_clone_args *args) trace = PTRACE_EVENT_CLONE; else trace = PTRACE_EVENT_FORK; - - if (likely(!ptrace_event_enabled(current, trace))) - trace = 0; } p = copy_process(NULL, trace, NUMA_NO_NODE, args); @@ -2512,30 +2509,27 @@ pid_t kernel_clone(struct kernel_clone_args *args) */ trace_sched_process_fork(current, p); - pid = get_task_pid(p, PIDTYPE_PID); + pid = task_pid(p); nr = pid_vnr(pid); + message = pid_parent_nr(pid); if (clone_flags & CLONE_PARENT_SETTID) put_user(nr, args->parent_tid); - if (clone_flags & CLONE_VFORK) { - p->vfork_done = &vfork; + if (!(clone_flags & CLONE_VFORK)) { + wake_up_new_task(p); + ptrace_post_event(trace, message); + } + else if (!ptrace_post_event(PTRACE_EVENT_VFORK, (unsigned long)p)) { + struct completion vfork; init_completion(&vfork); + p->vfork_done = &vfork; get_task_struct(p); + wake_up_new_task(p); + if (wait_for_vfork_done(p, &vfork)) + ptrace_post_event(PTRACE_EVENT_VFORK_DONE, message); } - wake_up_new_task(p); - - /* forking complete and child started to run, tell ptracer */ - if (unlikely(trace)) - ptrace_event_pid(trace, pid); - - if (clone_flags & CLONE_VFORK) { - if (!wait_for_vfork_done(p, &vfork)) - ptrace_event_pid(PTRACE_EVENT_VFORK_DONE, pid); - } - - put_pid(pid); return nr; } diff --git a/kernel/signal.c b/kernel/signal.c index f7c6ffcbd044..8ac8c4a31d88 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -155,7 +155,8 @@ static bool recalc_sigpending_tsk(struct task_struct *t) if ((t->jobctl & (JOBCTL_PENDING_MASK | JOBCTL_TRAP_FREEZE)) || PENDING(&t->pending, &t->blocked) || PENDING(&t->signal->shared_pending, &t->blocked) || - cgroup_task_frozen(t)) { + cgroup_task_frozen(t) || + t->stop_code) { set_tsk_thread_flag(t, TIF_SIGPENDING); return true; } @@ -2607,6 +2608,39 @@ bool get_signal(struct ksignal *ksig) if (unlikely(current->task_works)) task_work_run(); +ptrace_event: + /* Handle a posted ptrace event */ + if (unlikely(current->stop_code)) { + int stop_code = current->stop_code; + unsigned long message = current->ptrace_message; + struct completion vfork; + struct task_struct *p; + + current->stop_code = 0; + + if (stop_code == PTRACE_EVENT_VFORK) { + p = (struct task_struct *)message; + get_task_struct(p); + current->ptrace_message = pid_parent_nr(task_pid(p)); + init_completion(&vfork); + p->vfork_done = &vfork; + wake_up_new_task(p); + } + + spin_lock_irq(&sighand->siglock); + ptrace_do_notify(SIGTRAP, stop_code, CLD_TRAPPED); + spin_unlock_irq(&sighand->siglock); + + if ((stop_code == PTRACE_EVENT_VFORK) && + wait_for_vfork_done(p, &vfork) && + ptrace_post_event(PTRACE_EVENT_VFORK_DONE, message)) + goto ptrace_event; + + if (stop_code == PTRACE_EVENT_EXIT) { + do_exit(message); + } + } + /* * For non-generic architectures, check for TIF_NOTIFY_SIGNAL so * that the arch handlers don't all have to do it. If we get here Eric ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: Kernel stack read with PTRACE_EVENT_EXIT and io_uring threads 2021-06-22 20:52 ` Eric W. Biederman @ 2021-06-23 0:41 ` Linus Torvalds 2021-06-23 14:33 ` Eric W. Biederman 0 siblings, 1 reply; 8+ messages in thread From: Linus Torvalds @ 2021-06-23 0:41 UTC (permalink / raw) To: Eric W. Biederman Cc: Al Viro, Michael Schmitz, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven, linux-m68k, Arnd Bergmann, Ley Foon Tan, Tejun Heo, Kees Cook On Tue, Jun 22, 2021 at 1:53 PM Eric W. Biederman <ebiederm@xmission.com> wrote: > > Playing with it some more I think I have everything working working > except for PTRACE_EVENT_SECCOMP (which can stay ptrace_event) and > group_exit(2). > > Basically in exit sending yourself a signal and then calling do_exit > from the signal handler is not unreasonable, as exit is an ordinary > system call. Ok, this is a bit odd, but I do like the concept of just making ptrace_event just post a signal, and have all ptrace things always be handled at signal time (or the special system call entry/exit, which is fine too). > For purposes of discussion this is my current draft implementation. I didn't check what is so different about exit_group() that you left that as an exercise for the reader, but if that ends up then removing the whole "wait synchromously for ptrace" cases for good I don't _hate_ this. It's a bit odd, but it would be really nice to limit where ptrace picks up data. We do end up doing that stuff in "get_signal()", and that means that we have the interaction with io_uring calling it directly, but it's at least not a new thing. Linus ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Kernel stack read with PTRACE_EVENT_EXIT and io_uring threads 2021-06-23 0:41 ` Linus Torvalds @ 2021-06-23 14:33 ` Eric W. Biederman 2021-06-24 18:57 ` [PATCH 0/9] Refactoring exit Eric W. Biederman 0 siblings, 1 reply; 8+ messages in thread From: Eric W. Biederman @ 2021-06-23 14:33 UTC (permalink / raw) To: Linus Torvalds Cc: Al Viro, Michael Schmitz, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven, linux-m68k, Arnd Bergmann, Ley Foon Tan, Tejun Heo, Kees Cook Linus Torvalds <torvalds@linux-foundation.org> writes: > On Tue, Jun 22, 2021 at 1:53 PM Eric W. Biederman <ebiederm@xmission.com> wrote: >> >> Playing with it some more I think I have everything working working >> except for PTRACE_EVENT_SECCOMP (which can stay ptrace_event) and >> group_exit(2). >> >> Basically in exit sending yourself a signal and then calling do_exit >> from the signal handler is not unreasonable, as exit is an ordinary >> system call. > > Ok, this is a bit odd, but I do like the concept of just making > ptrace_event just post a signal, and have all ptrace things always be > handled at signal time (or the special system call entry/exit, which > is fine too). > >> For purposes of discussion this is my current draft implementation. > > I didn't check what is so different about exit_group() that you left > that as an exercise for the reader, but if that ends up then removing > the whole "wait synchromously for ptrace" cases for good I don't > _hate_ this. It's a bit odd, but it would be really nice to limit > where ptrace picks up data. I am still figuring out exit_group. I am hoping for sometime today. My intuition tells me I can do it, and I have a sense of what threads I need to pull to get there. I just don't know what the code is going to look like yet. Basically solving exit_group means moving ptrace_event out of do_exit. > We do end up doing that stuff in "get_signal()", and that means that > we have the interaction with io_uring calling it directly, but it's at > least not a new thing. The ugliest bit is having to repeat the wait_for_vfork_done both in fork and in get_signal. Eric ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 0/9] Refactoring exit 2021-06-23 14:33 ` Eric W. Biederman @ 2021-06-24 18:57 ` Eric W. Biederman 2021-06-24 22:45 ` Al Viro 0 siblings, 1 reply; 8+ messages in thread From: Eric W. Biederman @ 2021-06-24 18:57 UTC (permalink / raw) To: Linus Torvalds Cc: Al Viro, Michael Schmitz, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven, linux-m68k, Arnd Bergmann, Ley Foon Tan, Tejun Heo, Kees Cook I dug into exit because PTRACE_EVENT_EXIT not being guaranteed to be called with a stack where ptrace read and write all of the userspace registers can lead to unfiltered reads and writes of kernel stack contents. While looking into it I realized that there are a lot of little races between all of the ways an exit can be initiated. I don't know of a way those races are harmful, but they make the code difficult to reason about. The solution this set of changes adopts is to implement good primitives for asynchronous exit and exit_group requests and modifies exit(2) and exit_group(2) to use those primitives. The result should be more consistent determination of the reason for an exit, as well as PTRACE_EVENT_EXIT always being called from a context (get_signal) where ptrace is guaranteed to be able to read and write all of the registers. I believe the set of changes could be justified for the cleanups alone even if PTRACE_EVENT_EXIT did not need to be moved. Which makes me feel good about this approach. If a way can be found that coredumps can be started from complete_signal (needed for timely handling of fatal signals) instead of needing to start in do_coredump for proper synchronization force_siginfo_to_task and get_signal can be significantly simplified. As it is a lot of checks are duplicated to ensure that everything works properly in the presence of do_coredump. So far the code has been lightly tested, and the descriptions of some of the patches are a bit light, but I think this shows the direction I am aiming to travel for sorting out exit(2) and exit_group(2). Eric W. Biederman (9): signal/sh: Use force_sig(SIGKILL) instead of do_group_exit(SIGKILL) signal/seccomp: Refactor seccomp signal and coredump generation signal/seccomp: Dump core when there is only one live thread signal: Factor start_group_exit out of complete_signal signal/group_exit: Use start_group_exit in place of do_group_exit signal: Fold do_group_exit into get_signal fixing io_uring threads signal: Make individual tasks exiting a first class concept. signal/task_exit: Use start_task_exit in place of do_exit signal: Move PTRACE_EVENT_EXIT into get_signal arch/sh/kernel/cpu/fpu.c | 10 +-- fs/exec.c | 10 ++- include/linux/sched/jobctl.h | 2 + include/linux/sched/signal.h | 5 ++ include/linux/sched/task.h | 1 - kernel/exit.c | 41 ++--------- kernel/seccomp.c | 45 +++--------- kernel/signal.c | 166 ++++++++++++++++++++++++++++++------------- 8 files changed, 154 insertions(+), 126 deletions(-) ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/9] Refactoring exit 2021-06-24 18:57 ` [PATCH 0/9] Refactoring exit Eric W. Biederman @ 2021-06-24 22:45 ` Al Viro 2021-06-27 22:13 ` Al Viro 0 siblings, 1 reply; 8+ messages in thread From: Al Viro @ 2021-06-24 22:45 UTC (permalink / raw) To: Eric W. Biederman Cc: Linus Torvalds, Michael Schmitz, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven, linux-m68k, Arnd Bergmann, Ley Foon Tan, Tejun Heo, Kees Cook On Thu, Jun 24, 2021 at 01:57:35PM -0500, Eric W. Biederman wrote: > So far the code has been lightly tested, and the descriptions of some > of the patches are a bit light, but I think this shows the direction > I am aiming to travel for sorting out exit(2) and exit_group(2). FWIW, here's the current picture for do_exit(), aside of exit(2) and do_exit_group(): 1) stuff that is clearly oops-like - alpha:die_if_kernel() alpha:do_entUna() alpha:do_page_fault() arm:oops_end() arm:__do_kernel_fault() arm64:die() arm64:die_kernel_fault() csky:alignment() csky:die() csky:no_context() h8300:die() h8300:do_page_fault() hexagon:die() ia64:die() i64:ia64_do_page_fault() m68k:die_if_kernel() m68k:send_fault_sig() microblaze:die() mips:die() nds32:handle_fpu_exception() nds32:die() nds32:unhandled_interruption() nds32:unhandled_exceptions() nds32:do_revinsn() nds32:do_page_fault() nios:die() openrisc:die() openrisc:do_page_fault() parisc:die_if_kernel() ppc:oops_end() riscv:die() riscv:die_kernel_fault() s390:die() s390:do_no_context() s390:do_low_address() sh:die() sparc32:die_if_kernel() sparc32:do_sparc_fault() sparc64:die_if_kernel() x86:rewind_stack_do_exit() xtensa:die() xtensa:bad_page_fault() We really do not want ptrace anywhere near any of those and we do not want any of that to return; this shit would better be handled right there and there - no "post a fatal signal" would do. 2) sparc32 playing silly buggers with SIGILL in case when signal delivery can't get a valid sigframe. The regular variant for that kind of stuff is forced SIGSEGV from failure case of signal_setup_done(). We could force that SIGILL instead of do_exit() there (and report failure from sigframe setup), but I suspect that we'll get SIGSEGV override that SIGILL, with user-visible behaviour change. Triggered by altstack overflow on sparc32; sparc64 gets SIGSEGV in the same situation, just like everybody else. 3) ppc swapcontext(2). Normal syscall, on failure results in exit(SIGSEGV). Not sure if we want to post signal here - exposing the caller to results of failure might be... interesting. And I really don't know if we want to allow ptrace() to poke around in the results of such failure. That's a question for ppc maintainers. 4) sparc32:try_to_clear_window_buffer(). Probably could force SIGSEGV instead of do_exit() there, but that might need a bit of massage in asm glue - it's called on the way out of kernel, right before handling signals. I'd like comments from davem on that one, though. 5) in xtensa fast_syscall_spill_registers() stuff. Might or might not be similar to the above. 6) sparc64 in tsb_grow() - looks like "impossible case, kill the sucker dead if that ever happens". Not sure if it's reachable at all. 7) s390 copy_thread() is doing something interesting in kernel thread case - frame->childregs.gprs[11] = (unsigned long)do_exit; AFAICS, had been unused since 30dcb0996e40, when s390 switched to new kernel_execve() semantics and kernel_thread_starter stopped using r11 (or proceeding to do_exit() in the first place). Ought to be removed, if s390 folks ACK that. 8) x86:emulate_vsyscall(), x86:save_v86_state(), m68k:fpsp040_die(), mips:bad_stack(), s390:__s390_handle_mcck(), ia64:mca_handler_bh(), s390:default_trap_handler() - fuck knows. 9) seccomp stuff - this one should *NOT* be switched to posting signals; it's on syscall_trace_enter() paths and we'd better have signal-equivalent environment there. We sure as hell do have regular "stop and let tracer poke around" in the same area - that's where strace is poking around. 10) there's a (moderate) bunch of places all over the tree where we have kthread() payload hit do_exit(), with or without complete() or module_put(). No ptrace stuff is going to be hit there and I see no point in switching those to posting anything. In particular, module_put_and_exit() sure as hell does *NOT* want to return to caller - it might've been unmapped by the point we are done. This do_exit() should really be noreturn. 11) abuses in kernel/kthread.c; AFAICS, it's misused as a mechanism to return an error value to parent. No ptrace possible (parent definitely not traced) and I don't see any point in delaying the handling of that do_exit() either (same as with the execve failure in call_usermodehelper_exec_async()). 12) io-uring threads hitting do_exit(). These, apparently, can be ptraced... 13) there's bdflush(1, whatever), which is equivalent to exit(0). IMO it's long past the time to simply remove the sucker. 14) reboot(2) stuff. No idea. 15) syscall_user_dispatch(). Didn't have time to look through that stuff in details yet, so no idea at the moment. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/9] Refactoring exit 2021-06-24 22:45 ` Al Viro @ 2021-06-27 22:13 ` Al Viro 2021-06-27 22:59 ` Michael Schmitz 0 siblings, 1 reply; 8+ messages in thread From: Al Viro @ 2021-06-27 22:13 UTC (permalink / raw) To: Eric W. Biederman Cc: Linus Torvalds, Michael Schmitz, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven, linux-m68k, Arnd Bergmann, Ley Foon Tan, Tejun Heo, Kees Cook On Thu, Jun 24, 2021 at 10:45:23PM +0000, Al Viro wrote: > 13) there's bdflush(1, whatever), which is equivalent to exit(0). > IMO it's long past the time to simply remove the sucker. Incidentally, calling that from ptraced process on alpha leads to the same headache for tracer. _If_ we leave it around, this is another candidate for "hit yourself with that special signal" - both alpha and m68k have that syscall, and IMO adding an asm wrapper for that one is over the top. Said that, we really ought to bury that thing: commit 2f268ee88abb33968501a44368db55c63adaad40 Author: Andrew Morton <akpm@digeo.com> Date: Sat Dec 14 03:16:29 2002 -0800 [PATCH] deprecate use of bdflush() Patch from Robert Love <rml@tech9.net> We can never get rid of it if we do not deprecate it - so do so and print a stern warning to those who still run bdflush daemons. Deprecated for 18.5 years by now - I seriously suspect that we have some contributors younger than that... ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/9] Refactoring exit 2021-06-27 22:13 ` Al Viro @ 2021-06-27 22:59 ` Michael Schmitz 2021-06-28 7:31 ` Geert Uytterhoeven 0 siblings, 1 reply; 8+ messages in thread From: Michael Schmitz @ 2021-06-27 22:59 UTC (permalink / raw) To: Al Viro, Eric W. Biederman Cc: Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, Geert Uytterhoeven, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook On 28/06/21 10:13 am, Al Viro wrote: > On Thu, Jun 24, 2021 at 10:45:23PM +0000, Al Viro wrote: > >> 13) there's bdflush(1, whatever), which is equivalent to exit(0). >> IMO it's long past the time to simply remove the sucker. > Incidentally, calling that from ptraced process on alpha leads to > the same headache for tracer. _If_ we leave it around, this is > another candidate for "hit yourself with that special signal" - > both alpha and m68k have that syscall, and IMO adding an asm > wrapper for that one is over the top. > > Said that, we really ought to bury that thing: > > commit 2f268ee88abb33968501a44368db55c63adaad40 > Author: Andrew Morton <akpm@digeo.com> > Date: Sat Dec 14 03:16:29 2002 -0800 > > [PATCH] deprecate use of bdflush() > > Patch from Robert Love <rml@tech9.net> > > We can never get rid of it if we do not deprecate it - so do so and > print a stern warning to those who still run bdflush daemons. > > Deprecated for 18.5 years by now - I seriously suspect that we have > some contributors younger than that... Haven't found that warning in over 7 years' worth of console logs, and I'm a good candidate for running the oldest userland in existence for m68k. Time to let it go. Cheers, Michael ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/9] Refactoring exit 2021-06-27 22:59 ` Michael Schmitz @ 2021-06-28 7:31 ` Geert Uytterhoeven 2021-06-28 17:14 ` Michael Schmitz 0 siblings, 1 reply; 8+ messages in thread From: Geert Uytterhoeven @ 2021-06-28 7:31 UTC (permalink / raw) To: Michael Schmitz Cc: Al Viro, Eric W. Biederman, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook Hi Michael, On Mon, Jun 28, 2021 at 1:00 AM Michael Schmitz <schmitzmic@gmail.com> wrote: > On 28/06/21 10:13 am, Al Viro wrote: > > On Thu, Jun 24, 2021 at 10:45:23PM +0000, Al Viro wrote: > > > >> 13) there's bdflush(1, whatever), which is equivalent to exit(0). > >> IMO it's long past the time to simply remove the sucker. > > Incidentally, calling that from ptraced process on alpha leads to > > the same headache for tracer. _If_ we leave it around, this is > > another candidate for "hit yourself with that special signal" - > > both alpha and m68k have that syscall, and IMO adding an asm > > wrapper for that one is over the top. > > > > Said that, we really ought to bury that thing: > > > > commit 2f268ee88abb33968501a44368db55c63adaad40 > > Author: Andrew Morton <akpm@digeo.com> > > Date: Sat Dec 14 03:16:29 2002 -0800 > > > > [PATCH] deprecate use of bdflush() > > > > Patch from Robert Love <rml@tech9.net> > > > > We can never get rid of it if we do not deprecate it - so do so and > > print a stern warning to those who still run bdflush daemons. > > > > Deprecated for 18.5 years by now - I seriously suspect that we have > > some contributors younger than that... > > Haven't found that warning in over 7 years' worth of console logs, and > I'm a good candidate for running the oldest userland in existence for m68k. > > Time to let it go. The warning is printed when using filesys-ELF-2.0.x-1400K-2.gz, which is a very old ramdisk from right after the m68k a.out to ELF transition: warning: process `update' used the obsolete bdflush system call Fix your initscripts? I still boot it, once in a while. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/9] Refactoring exit 2021-06-28 7:31 ` Geert Uytterhoeven @ 2021-06-28 17:14 ` Michael Schmitz 2021-06-28 19:17 ` Geert Uytterhoeven 0 siblings, 1 reply; 8+ messages in thread From: Michael Schmitz @ 2021-06-28 17:14 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Al Viro, Eric W. Biederman, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook Hi Geert, Am 28.06.2021 um 19:31 schrieb Geert Uytterhoeven: >> Haven't found that warning in over 7 years' worth of console logs, and >> I'm a good candidate for running the oldest userland in existence for m68k. >> >> Time to let it go. > > The warning is printed when using filesys-ELF-2.0.x-1400K-2.gz, > which is a very old ramdisk from right after the m68k a.out to ELF > transition: > > warning: process `update' used the obsolete bdflush system call > Fix your initscripts? > > I still boot it, once in a while. OK; you take the cake. That ramdisk came to mind when I thought about where I'd last seen bdflush, but I've not used it in ages (not sure 14 MB are enough for that). The question then is - will bdflush fail gracefully, or spin retrying the syscall? Cheers, Michael > > Gr{oetje,eeting}s, > > Geert > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/9] Refactoring exit 2021-06-28 17:14 ` Michael Schmitz @ 2021-06-28 19:17 ` Geert Uytterhoeven 2021-06-28 20:13 ` Michael Schmitz 0 siblings, 1 reply; 8+ messages in thread From: Geert Uytterhoeven @ 2021-06-28 19:17 UTC (permalink / raw) To: Michael Schmitz Cc: Al Viro, Eric W. Biederman, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook Hi Michael, On Mon, Jun 28, 2021 at 7:14 PM Michael Schmitz <schmitzmic@gmail.com> wrote: > Am 28.06.2021 um 19:31 schrieb Geert Uytterhoeven: > >> Haven't found that warning in over 7 years' worth of console logs, and > >> I'm a good candidate for running the oldest userland in existence for m68k. > >> > >> Time to let it go. > > > > The warning is printed when using filesys-ELF-2.0.x-1400K-2.gz, > > which is a very old ramdisk from right after the m68k a.out to ELF > > transition: > > > > warning: process `update' used the obsolete bdflush system call > > Fix your initscripts? > > > > I still boot it, once in a while. > > OK; you take the cake. That ramdisk came to mind when I thought about > where I'd last seen bdflush, but I've not used it in ages (not sure 14 > MB are enough for that). Of course it will work on your 14 MiB machine! It fits on a floppy, _after_ decompression. It was used by people to install Linux on the hard disks of their beefy m68k machines, after they had set up the family Christmas tree, in December 1996. I also have a slightly larger one, built from OpenWRT when I did my first experiments on that. Unlike filesys-ELF-2.0.x-1400K-2.gz, it does open a shell on the serial console, so it is more useful to me. > The question then is - will bdflush fail gracefully, or spin retrying > the syscall? Will add to my todo list... BTW, you can boot this ramdisk on ARAnyM, too. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/9] Refactoring exit 2021-06-28 19:17 ` Geert Uytterhoeven @ 2021-06-28 20:13 ` Michael Schmitz 2021-06-28 21:18 ` Geert Uytterhoeven 0 siblings, 1 reply; 8+ messages in thread From: Michael Schmitz @ 2021-06-28 20:13 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Al Viro, Eric W. Biederman, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook Hi Geert, On 29/06/21 7:17 am, Geert Uytterhoeven wrote: >>> The warning is printed when using filesys-ELF-2.0.x-1400K-2.gz, >>> which is a very old ramdisk from right after the m68k a.out to ELF >>> transition: >>> >>> warning: process `update' used the obsolete bdflush system call >>> Fix your initscripts? >>> >>> I still boot it, once in a while. >> OK; you take the cake. That ramdisk came to mind when I thought about >> where I'd last seen bdflush, but I've not used it in ages (not sure 14 >> MB are enough for that). > Of course it will work on your 14 MiB machine! It fits on a floppy, _after_ > decompression. It was used by people to install Linux on the hard disks > of their beefy m68k machines, after they had set up the family Christmas > tree, in December 1996. Been there, done that. Wrote the HOWTO for ext2 filesystem byte-swapping. > I also have a slightly larger one, built from OpenWRT when I did my first > experiments on that. Unlike filesys-ELF-2.0.x-1400K-2.gz, it does open > a shell on the serial console, so it is more useful to me. > >> The question then is - will bdflush fail gracefully, or spin retrying >> the syscall? > Will add to my todo list... > BTW, you can boot this ramdisk on ARAnyM, too. True. I can't find that ramdisk image anywhere - if you can point me to some archive, I'll give that a try. Cheers, Michael > > Gr{oetje,eeting}s, > > Geert > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/9] Refactoring exit 2021-06-28 20:13 ` Michael Schmitz @ 2021-06-28 21:18 ` Geert Uytterhoeven 2021-06-28 23:42 ` Michael Schmitz 0 siblings, 1 reply; 8+ messages in thread From: Geert Uytterhoeven @ 2021-06-28 21:18 UTC (permalink / raw) To: Michael Schmitz Cc: Al Viro, Eric W. Biederman, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook Hi Michael, On Mon, Jun 28, 2021 at 10:13 PM Michael Schmitz <schmitzmic@gmail.com> wrote: > On 29/06/21 7:17 am, Geert Uytterhoeven wrote: > >>> The warning is printed when using filesys-ELF-2.0.x-1400K-2.gz, > >>> which is a very old ramdisk from right after the m68k a.out to ELF > >>> transition: > >>> > >>> warning: process `update' used the obsolete bdflush system call > >>> Fix your initscripts? > >>> > >>> I still boot it, once in a while. > >> OK; you take the cake. That ramdisk came to mind when I thought about > >> where I'd last seen bdflush, but I've not used it in ages (not sure 14 > >> MB are enough for that). > > Of course it will work on your 14 MiB machine! It fits on a floppy, _after_ > > decompression. It was used by people to install Linux on the hard disks > > of their beefy m68k machines, after they had set up the family Christmas > > tree, in December 1996. > > Been there, done that. Wrote the HOWTO for ext2 filesystem byte-swapping. I knew I could revive your memory ;-) > > I also have a slightly larger one, built from OpenWRT when I did my first > > experiments on that. Unlike filesys-ELF-2.0.x-1400K-2.gz, it does open > > a shell on the serial console, so it is more useful to me. > > > >> The question then is - will bdflush fail gracefully, or spin retrying > >> the syscall? > > Will add to my todo list... > > BTW, you can boot this ramdisk on ARAnyM, too. > > True. I can't find that ramdisk image anywhere - if you can point me to > some archive, I'll give that a try. http://ftp.mac.linux-m68k.org/pub/linux-mac68k/initrd/ Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/9] Refactoring exit 2021-06-28 21:18 ` Geert Uytterhoeven @ 2021-06-28 23:42 ` Michael Schmitz 2021-06-29 20:28 ` Eric W. Biederman 0 siblings, 1 reply; 8+ messages in thread From: Michael Schmitz @ 2021-06-28 23:42 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Al Viro, Eric W. Biederman, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook Hi Geert, On 29/06/21 9:18 am, Geert Uytterhoeven wrote: > >>>> The question then is - will bdflush fail gracefully, or spin retrying >>>> the syscall? >>> Will add to my todo list... >>> BTW, you can boot this ramdisk on ARAnyM, too. >> True. I can't find that ramdisk image anywhere - if you can point me to >> some archive, I'll give that a try. > http://ftp.mac.linux-m68k.org/pub/linux-mac68k/initrd/ Thanks - removing the if (func==1) do_exit(0); part does give similar behaviour as before - kernel warns five times, then shuts up (without change, warns twice only, and /sbin/update no longer runs). Removing the syscall from the m68k syscall table altogether still gives a working ramdisk. /sbin/update is still running, so evidently doesn't care about the invalid syscall result ... Cheers, Michael > > Gr{oetje,eeting}s, > > Geert > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [CFT][PATCH] exit/bdflush: Remove the deprecated bdflush system call 2021-06-28 23:42 ` Michael Schmitz @ 2021-06-29 20:28 ` Eric W. Biederman 0 siblings, 0 replies; 8+ messages in thread From: Eric W. Biederman @ 2021-06-29 20:28 UTC (permalink / raw) To: Michael Schmitz Cc: Geert Uytterhoeven, Al Viro, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook, linux-api The bdflush system call has been deprecated for a very long time. Recently Michael Schmitz tested[1] and found that the last known caller of of the bdflush system call is unaffected by it's removal. Since the code is not needed delete it. [1] https://lkml.kernel.org/r/36123b5d-daa0-6c2b-f2d4-a942f069fd54@gmail.com Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> --- I think we have consensus that bdflush can be removed. Can folks please verify I have removed it correctly? Michael could you give me a Tested-by on this patch? arch/alpha/kernel/syscalls/syscall.tbl | 2 +- arch/arm/tools/syscall.tbl | 2 +- arch/arm64/include/asm/unistd32.h | 2 +- arch/ia64/kernel/syscalls/syscall.tbl | 2 +- arch/m68k/kernel/syscalls/syscall.tbl | 2 +- arch/microblaze/kernel/syscalls/syscall.tbl | 2 +- arch/mips/kernel/syscalls/syscall_o32.tbl | 2 +- arch/parisc/kernel/syscalls/syscall.tbl | 2 +- arch/powerpc/kernel/syscalls/syscall.tbl | 2 +- arch/s390/kernel/syscalls/syscall.tbl | 2 +- arch/sh/kernel/syscalls/syscall.tbl | 2 +- arch/sparc/kernel/syscalls/syscall.tbl | 2 +- arch/x86/entry/syscalls/syscall_32.tbl | 2 +- arch/xtensa/kernel/syscalls/syscall.tbl | 2 +- fs/buffer.c | 27 ------------------- include/linux/syscalls.h | 1 - include/uapi/linux/capability.h | 1 - kernel/sys_ni.c | 1 - .../arch/powerpc/entry/syscalls/syscall.tbl | 2 +- .../perf/arch/s390/entry/syscalls/syscall.tbl | 2 +- 20 files changed, 16 insertions(+), 46 deletions(-) diff --git a/arch/alpha/kernel/syscalls/syscall.tbl b/arch/alpha/kernel/syscalls/syscall.tbl index 3000a2e8ee21..85d2bcd9cf36 100644 --- a/arch/alpha/kernel/syscalls/syscall.tbl +++ b/arch/alpha/kernel/syscalls/syscall.tbl @@ -230,7 +230,7 @@ 259 common osf_swapctl sys_ni_syscall 260 common osf_memcntl sys_ni_syscall 261 common osf_fdatasync sys_ni_syscall -300 common bdflush sys_bdflush +300 common bdflush sys_ni_syscall 301 common sethae sys_sethae 302 common mount sys_mount 303 common old_adjtimex sys_old_adjtimex diff --git a/arch/arm/tools/syscall.tbl b/arch/arm/tools/syscall.tbl index 28e03b5fec00..241988512648 100644 --- a/arch/arm/tools/syscall.tbl +++ b/arch/arm/tools/syscall.tbl @@ -147,7 +147,7 @@ 131 common quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 common personality sys_personality # 137 was sys_afs_syscall diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h index 5dab69d2c22b..a35cd6c4909c 100644 --- a/arch/arm64/include/asm/unistd32.h +++ b/arch/arm64/include/asm/unistd32.h @@ -279,7 +279,7 @@ __SYSCALL(__NR_getpgid, sys_getpgid) #define __NR_fchdir 133 __SYSCALL(__NR_fchdir, sys_fchdir) #define __NR_bdflush 134 -__SYSCALL(__NR_bdflush, sys_bdflush) +__SYSCALL(__NR_bdflush, sys_ni_syscall) #define __NR_sysfs 135 __SYSCALL(__NR_sysfs, sys_sysfs) #define __NR_personality 136 diff --git a/arch/ia64/kernel/syscalls/syscall.tbl b/arch/ia64/kernel/syscalls/syscall.tbl index bb11fe4c875a..7de53a9a2972 100644 --- a/arch/ia64/kernel/syscalls/syscall.tbl +++ b/arch/ia64/kernel/syscalls/syscall.tbl @@ -123,7 +123,7 @@ # 1135 was get_kernel_syms # 1136 was query_module 113 common quotactl sys_quotactl -114 common bdflush sys_bdflush +114 common bdflush sys_ni_syscall 115 common sysfs sys_sysfs 116 common personality sys_personality 117 common afs_syscall sys_ni_syscall diff --git a/arch/m68k/kernel/syscalls/syscall.tbl b/arch/m68k/kernel/syscalls/syscall.tbl index 79c2d24c89dd..be5abd9c8c07 100644 --- a/arch/m68k/kernel/syscalls/syscall.tbl +++ b/arch/m68k/kernel/syscalls/syscall.tbl @@ -141,7 +141,7 @@ 131 common quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 common personality sys_personality # 137 was afs_syscall diff --git a/arch/microblaze/kernel/syscalls/syscall.tbl b/arch/microblaze/kernel/syscalls/syscall.tbl index b11395a20c20..555fd987f4ab 100644 --- a/arch/microblaze/kernel/syscalls/syscall.tbl +++ b/arch/microblaze/kernel/syscalls/syscall.tbl @@ -141,7 +141,7 @@ 131 common quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 common personality sys_personality 137 common afs_syscall sys_ni_syscall diff --git a/arch/mips/kernel/syscalls/syscall_o32.tbl b/arch/mips/kernel/syscalls/syscall_o32.tbl index d560c467a8c6..2c6b10db3bd5 100644 --- a/arch/mips/kernel/syscalls/syscall_o32.tbl +++ b/arch/mips/kernel/syscalls/syscall_o32.tbl @@ -145,7 +145,7 @@ 131 o32 quotactl sys_quotactl 132 o32 getpgid sys_getpgid 133 o32 fchdir sys_fchdir -134 o32 bdflush sys_bdflush +134 o32 bdflush sys_ni_syscall 135 o32 sysfs sys_sysfs 136 o32 personality sys_personality sys_32_personality 137 o32 afs_syscall sys_ni_syscall diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl index aabc37f8cae3..51c156cb00f1 100644 --- a/arch/parisc/kernel/syscalls/syscall.tbl +++ b/arch/parisc/kernel/syscalls/syscall.tbl @@ -147,7 +147,7 @@ 131 common quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 32 personality parisc_personality 136 64 personality sys_personality diff --git a/arch/powerpc/kernel/syscalls/syscall.tbl b/arch/powerpc/kernel/syscalls/syscall.tbl index 8f052ff4058c..2518e4e6dccf 100644 --- a/arch/powerpc/kernel/syscalls/syscall.tbl +++ b/arch/powerpc/kernel/syscalls/syscall.tbl @@ -176,7 +176,7 @@ 131 nospu quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 32 personality sys_personality ppc64_personality 136 64 personality ppc64_personality diff --git a/arch/s390/kernel/syscalls/syscall.tbl b/arch/s390/kernel/syscalls/syscall.tbl index 0690263df1dd..ffcf03714f12 100644 --- a/arch/s390/kernel/syscalls/syscall.tbl +++ b/arch/s390/kernel/syscalls/syscall.tbl @@ -122,7 +122,7 @@ 131 common quotactl sys_quotactl sys_quotactl 132 common getpgid sys_getpgid sys_getpgid 133 common fchdir sys_fchdir sys_fchdir -134 common bdflush sys_bdflush sys_bdflush +134 common bdflush sys_ni_syscall sys_ni_syscall 135 common sysfs sys_sysfs sys_sysfs 136 common personality sys_s390_personality sys_s390_personality 137 common afs_syscall - - diff --git a/arch/sh/kernel/syscalls/syscall.tbl b/arch/sh/kernel/syscalls/syscall.tbl index 0b91499ebdcf..6e7305066a70 100644 --- a/arch/sh/kernel/syscalls/syscall.tbl +++ b/arch/sh/kernel/syscalls/syscall.tbl @@ -141,7 +141,7 @@ 131 common quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 common personality sys_personality # 137 was afs_syscall diff --git a/arch/sparc/kernel/syscalls/syscall.tbl b/arch/sparc/kernel/syscalls/syscall.tbl index e34cc30ef22c..bf330dda7c61 100644 --- a/arch/sparc/kernel/syscalls/syscall.tbl +++ b/arch/sparc/kernel/syscalls/syscall.tbl @@ -270,7 +270,7 @@ 222 common delete_module sys_delete_module 223 common get_kernel_syms sys_ni_syscall 224 common getpgid sys_getpgid -225 common bdflush sys_bdflush +225 common bdflush sys_ni_syscall 226 common sysfs sys_sysfs 227 common afs_syscall sys_nis_syscall 228 common setfsuid sys_setfsuid16 diff --git a/arch/x86/entry/syscalls/syscall_32.tbl b/arch/x86/entry/syscalls/syscall_32.tbl index 4bbc267fb36b..a21a72763d58 100644 --- a/arch/x86/entry/syscalls/syscall_32.tbl +++ b/arch/x86/entry/syscalls/syscall_32.tbl @@ -145,7 +145,7 @@ 131 i386 quotactl sys_quotactl 132 i386 getpgid sys_getpgid 133 i386 fchdir sys_fchdir -134 i386 bdflush sys_bdflush +134 i386 bdflush sys_ni_syscall 135 i386 sysfs sys_sysfs 136 i386 personality sys_personality 137 i386 afs_syscall diff --git a/arch/xtensa/kernel/syscalls/syscall.tbl b/arch/xtensa/kernel/syscalls/syscall.tbl index fd2f30227d96..db4e3d09b249 100644 --- a/arch/xtensa/kernel/syscalls/syscall.tbl +++ b/arch/xtensa/kernel/syscalls/syscall.tbl @@ -223,7 +223,7 @@ # 205 was old nfsservctl 205 common nfsservctl sys_ni_syscall 206 common _sysctl sys_ni_syscall -207 common bdflush sys_bdflush +207 common bdflush sys_ni_syscall 208 common uname sys_newuname 209 common sysinfo sys_sysinfo 210 common init_module sys_init_module diff --git a/fs/buffer.c b/fs/buffer.c index ea48c01fb76b..04ddff76c860 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -3292,33 +3292,6 @@ int try_to_free_buffers(struct page *page) } EXPORT_SYMBOL(try_to_free_buffers); -/* - * There are no bdflush tunables left. But distributions are - * still running obsolete flush daemons, so we terminate them here. - * - * Use of bdflush() is deprecated and will be removed in a future kernel. - * The `flush-X' kernel threads fully replace bdflush daemons and this call. - */ -SYSCALL_DEFINE2(bdflush, int, func, long, data) -{ - static int msg_count; - - if (!capable(CAP_SYS_ADMIN)) - return -EPERM; - - if (msg_count < 5) { - msg_count++; - printk(KERN_INFO - "warning: process `%s' used the obsolete bdflush" - " system call\n", current->comm); - printk(KERN_INFO "Fix your initscripts?\n"); - } - - if (func == 1) - do_exit(0); - return 0; -} - /* * Buffer-head allocation */ diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 050511e8f1f8..1bd6e05ea116 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -1157,7 +1157,6 @@ asmlinkage long sys_ustat(unsigned dev, struct ustat __user *ubuf); asmlinkage long sys_vfork(void); asmlinkage long sys_recv(int, void __user *, size_t, unsigned); asmlinkage long sys_send(int, void __user *, size_t, unsigned); -asmlinkage long sys_bdflush(int func, long data); asmlinkage long sys_oldumount(char __user *name); asmlinkage long sys_uselib(const char __user *library); asmlinkage long sys_sysfs(int option, diff --git a/include/uapi/linux/capability.h b/include/uapi/linux/capability.h index 2ddb4226cd23..463d1ba2232a 100644 --- a/include/uapi/linux/capability.h +++ b/include/uapi/linux/capability.h @@ -243,7 +243,6 @@ struct vfs_ns_cap_data { /* Allow examination and configuration of disk quotas */ /* Allow setting the domainname */ /* Allow setting the hostname */ -/* Allow calling bdflush() */ /* Allow mount() and umount(), setting up new smb connection */ /* Allow some autofs root ioctls */ /* Allow nfsservctl */ diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c index 0ea8128468c3..adf4d66ffae2 100644 --- a/kernel/sys_ni.c +++ b/kernel/sys_ni.c @@ -414,7 +414,6 @@ COND_SYSCALL(epoll_wait); COND_SYSCALL(recv); COND_SYSCALL_COMPAT(recv); COND_SYSCALL(send); -COND_SYSCALL(bdflush); COND_SYSCALL(uselib); /* optional: time32 */ diff --git a/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl b/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl index 2e68fbb57cc6..ab72dec9dadb 100644 --- a/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl +++ b/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl @@ -176,7 +176,7 @@ 131 nospu quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 32 personality sys_personality ppc64_personality 136 64 personality ppc64_personality diff --git a/tools/perf/arch/s390/entry/syscalls/syscall.tbl b/tools/perf/arch/s390/entry/syscalls/syscall.tbl index 7e4a2aba366d..f2eba775e676 100644 --- a/tools/perf/arch/s390/entry/syscalls/syscall.tbl +++ b/tools/perf/arch/s390/entry/syscalls/syscall.tbl @@ -122,7 +122,7 @@ 131 common quotactl sys_quotactl sys_quotactl 132 common getpgid sys_getpgid sys_getpgid 133 common fchdir sys_fchdir sys_fchdir -134 common bdflush sys_bdflush sys_bdflush +134 common bdflush - - 135 common sysfs sys_sysfs sys_sysfs 136 common personality sys_s390_personality sys_s390_personality 137 common afs_syscall - - -- 2.20.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [CFT][PATCH] exit/bdflush: Remove the deprecated bdflush system call @ 2021-06-29 20:28 ` Eric W. Biederman 0 siblings, 0 replies; 8+ messages in thread From: Eric W. Biederman @ 2021-06-29 20:28 UTC (permalink / raw) To: Michael Schmitz Cc: Geert Uytterhoeven, Al Viro, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook, linux-api The bdflush system call has been deprecated for a very long time. Recently Michael Schmitz tested[1] and found that the last known caller of of the bdflush system call is unaffected by it's removal. Since the code is not needed delete it. [1] https://lkml.kernel.org/r/36123b5d-daa0-6c2b-f2d4-a942f069fd54@gmail.com Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> --- I think we have consensus that bdflush can be removed. Can folks please verify I have removed it correctly? Michael could you give me a Tested-by on this patch? arch/alpha/kernel/syscalls/syscall.tbl | 2 +- arch/arm/tools/syscall.tbl | 2 +- arch/arm64/include/asm/unistd32.h | 2 +- arch/ia64/kernel/syscalls/syscall.tbl | 2 +- arch/m68k/kernel/syscalls/syscall.tbl | 2 +- arch/microblaze/kernel/syscalls/syscall.tbl | 2 +- arch/mips/kernel/syscalls/syscall_o32.tbl | 2 +- arch/parisc/kernel/syscalls/syscall.tbl | 2 +- arch/powerpc/kernel/syscalls/syscall.tbl | 2 +- arch/s390/kernel/syscalls/syscall.tbl | 2 +- arch/sh/kernel/syscalls/syscall.tbl | 2 +- arch/sparc/kernel/syscalls/syscall.tbl | 2 +- arch/x86/entry/syscalls/syscall_32.tbl | 2 +- arch/xtensa/kernel/syscalls/syscall.tbl | 2 +- fs/buffer.c | 27 ------------------- include/linux/syscalls.h | 1 - include/uapi/linux/capability.h | 1 - kernel/sys_ni.c | 1 - .../arch/powerpc/entry/syscalls/syscall.tbl | 2 +- .../perf/arch/s390/entry/syscalls/syscall.tbl | 2 +- 20 files changed, 16 insertions(+), 46 deletions(-) diff --git a/arch/alpha/kernel/syscalls/syscall.tbl b/arch/alpha/kernel/syscalls/syscall.tbl index 3000a2e8ee21..85d2bcd9cf36 100644 --- a/arch/alpha/kernel/syscalls/syscall.tbl +++ b/arch/alpha/kernel/syscalls/syscall.tbl @@ -230,7 +230,7 @@ 259 common osf_swapctl sys_ni_syscall 260 common osf_memcntl sys_ni_syscall 261 common osf_fdatasync sys_ni_syscall -300 common bdflush sys_bdflush +300 common bdflush sys_ni_syscall 301 common sethae sys_sethae 302 common mount sys_mount 303 common old_adjtimex sys_old_adjtimex diff --git a/arch/arm/tools/syscall.tbl b/arch/arm/tools/syscall.tbl index 28e03b5fec00..241988512648 100644 --- a/arch/arm/tools/syscall.tbl +++ b/arch/arm/tools/syscall.tbl @@ -147,7 +147,7 @@ 131 common quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 common personality sys_personality # 137 was sys_afs_syscall diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h index 5dab69d2c22b..a35cd6c4909c 100644 --- a/arch/arm64/include/asm/unistd32.h +++ b/arch/arm64/include/asm/unistd32.h @@ -279,7 +279,7 @@ __SYSCALL(__NR_getpgid, sys_getpgid) #define __NR_fchdir 133 __SYSCALL(__NR_fchdir, sys_fchdir) #define __NR_bdflush 134 -__SYSCALL(__NR_bdflush, sys_bdflush) +__SYSCALL(__NR_bdflush, sys_ni_syscall) #define __NR_sysfs 135 __SYSCALL(__NR_sysfs, sys_sysfs) #define __NR_personality 136 diff --git a/arch/ia64/kernel/syscalls/syscall.tbl b/arch/ia64/kernel/syscalls/syscall.tbl index bb11fe4c875a..7de53a9a2972 100644 --- a/arch/ia64/kernel/syscalls/syscall.tbl +++ b/arch/ia64/kernel/syscalls/syscall.tbl @@ -123,7 +123,7 @@ # 1135 was get_kernel_syms # 1136 was query_module 113 common quotactl sys_quotactl -114 common bdflush sys_bdflush +114 common bdflush sys_ni_syscall 115 common sysfs sys_sysfs 116 common personality sys_personality 117 common afs_syscall sys_ni_syscall diff --git a/arch/m68k/kernel/syscalls/syscall.tbl b/arch/m68k/kernel/syscalls/syscall.tbl index 79c2d24c89dd..be5abd9c8c07 100644 --- a/arch/m68k/kernel/syscalls/syscall.tbl +++ b/arch/m68k/kernel/syscalls/syscall.tbl @@ -141,7 +141,7 @@ 131 common quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 common personality sys_personality # 137 was afs_syscall diff --git a/arch/microblaze/kernel/syscalls/syscall.tbl b/arch/microblaze/kernel/syscalls/syscall.tbl index b11395a20c20..555fd987f4ab 100644 --- a/arch/microblaze/kernel/syscalls/syscall.tbl +++ b/arch/microblaze/kernel/syscalls/syscall.tbl @@ -141,7 +141,7 @@ 131 common quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 common personality sys_personality 137 common afs_syscall sys_ni_syscall diff --git a/arch/mips/kernel/syscalls/syscall_o32.tbl b/arch/mips/kernel/syscalls/syscall_o32.tbl index d560c467a8c6..2c6b10db3bd5 100644 --- a/arch/mips/kernel/syscalls/syscall_o32.tbl +++ b/arch/mips/kernel/syscalls/syscall_o32.tbl @@ -145,7 +145,7 @@ 131 o32 quotactl sys_quotactl 132 o32 getpgid sys_getpgid 133 o32 fchdir sys_fchdir -134 o32 bdflush sys_bdflush +134 o32 bdflush sys_ni_syscall 135 o32 sysfs sys_sysfs 136 o32 personality sys_personality sys_32_personality 137 o32 afs_syscall sys_ni_syscall diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl index aabc37f8cae3..51c156cb00f1 100644 --- a/arch/parisc/kernel/syscalls/syscall.tbl +++ b/arch/parisc/kernel/syscalls/syscall.tbl @@ -147,7 +147,7 @@ 131 common quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 32 personality parisc_personality 136 64 personality sys_personality diff --git a/arch/powerpc/kernel/syscalls/syscall.tbl b/arch/powerpc/kernel/syscalls/syscall.tbl index 8f052ff4058c..2518e4e6dccf 100644 --- a/arch/powerpc/kernel/syscalls/syscall.tbl +++ b/arch/powerpc/kernel/syscalls/syscall.tbl @@ -176,7 +176,7 @@ 131 nospu quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 32 personality sys_personality ppc64_personality 136 64 personality ppc64_personality diff --git a/arch/s390/kernel/syscalls/syscall.tbl b/arch/s390/kernel/syscalls/syscall.tbl index 0690263df1dd..ffcf03714f12 100644 --- a/arch/s390/kernel/syscalls/syscall.tbl +++ b/arch/s390/kernel/syscalls/syscall.tbl @@ -122,7 +122,7 @@ 131 common quotactl sys_quotactl sys_quotactl 132 common getpgid sys_getpgid sys_getpgid 133 common fchdir sys_fchdir sys_fchdir -134 common bdflush sys_bdflush sys_bdflush +134 common bdflush sys_ni_syscall sys_ni_syscall 135 common sysfs sys_sysfs sys_sysfs 136 common personality sys_s390_personality sys_s390_personality 137 common afs_syscall - - diff --git a/arch/sh/kernel/syscalls/syscall.tbl b/arch/sh/kernel/syscalls/syscall.tbl index 0b91499ebdcf..6e7305066a70 100644 --- a/arch/sh/kernel/syscalls/syscall.tbl +++ b/arch/sh/kernel/syscalls/syscall.tbl @@ -141,7 +141,7 @@ 131 common quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 common personality sys_personality # 137 was afs_syscall diff --git a/arch/sparc/kernel/syscalls/syscall.tbl b/arch/sparc/kernel/syscalls/syscall.tbl index e34cc30ef22c..bf330dda7c61 100644 --- a/arch/sparc/kernel/syscalls/syscall.tbl +++ b/arch/sparc/kernel/syscalls/syscall.tbl @@ -270,7 +270,7 @@ 222 common delete_module sys_delete_module 223 common get_kernel_syms sys_ni_syscall 224 common getpgid sys_getpgid -225 common bdflush sys_bdflush +225 common bdflush sys_ni_syscall 226 common sysfs sys_sysfs 227 common afs_syscall sys_nis_syscall 228 common setfsuid sys_setfsuid16 diff --git a/arch/x86/entry/syscalls/syscall_32.tbl b/arch/x86/entry/syscalls/syscall_32.tbl index 4bbc267fb36b..a21a72763d58 100644 --- a/arch/x86/entry/syscalls/syscall_32.tbl +++ b/arch/x86/entry/syscalls/syscall_32.tbl @@ -145,7 +145,7 @@ 131 i386 quotactl sys_quotactl 132 i386 getpgid sys_getpgid 133 i386 fchdir sys_fchdir -134 i386 bdflush sys_bdflush +134 i386 bdflush sys_ni_syscall 135 i386 sysfs sys_sysfs 136 i386 personality sys_personality 137 i386 afs_syscall diff --git a/arch/xtensa/kernel/syscalls/syscall.tbl b/arch/xtensa/kernel/syscalls/syscall.tbl index fd2f30227d96..db4e3d09b249 100644 --- a/arch/xtensa/kernel/syscalls/syscall.tbl +++ b/arch/xtensa/kernel/syscalls/syscall.tbl @@ -223,7 +223,7 @@ # 205 was old nfsservctl 205 common nfsservctl sys_ni_syscall 206 common _sysctl sys_ni_syscall -207 common bdflush sys_bdflush +207 common bdflush sys_ni_syscall 208 common uname sys_newuname 209 common sysinfo sys_sysinfo 210 common init_module sys_init_module diff --git a/fs/buffer.c b/fs/buffer.c index ea48c01fb76b..04ddff76c860 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -3292,33 +3292,6 @@ int try_to_free_buffers(struct page *page) } EXPORT_SYMBOL(try_to_free_buffers); -/* - * There are no bdflush tunables left. But distributions are - * still running obsolete flush daemons, so we terminate them here. - * - * Use of bdflush() is deprecated and will be removed in a future kernel. - * The `flush-X' kernel threads fully replace bdflush daemons and this call. - */ -SYSCALL_DEFINE2(bdflush, int, func, long, data) -{ - static int msg_count; - - if (!capable(CAP_SYS_ADMIN)) - return -EPERM; - - if (msg_count < 5) { - msg_count++; - printk(KERN_INFO - "warning: process `%s' used the obsolete bdflush" - " system call\n", current->comm); - printk(KERN_INFO "Fix your initscripts?\n"); - } - - if (func == 1) - do_exit(0); - return 0; -} - /* * Buffer-head allocation */ diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 050511e8f1f8..1bd6e05ea116 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -1157,7 +1157,6 @@ asmlinkage long sys_ustat(unsigned dev, struct ustat __user *ubuf); asmlinkage long sys_vfork(void); asmlinkage long sys_recv(int, void __user *, size_t, unsigned); asmlinkage long sys_send(int, void __user *, size_t, unsigned); -asmlinkage long sys_bdflush(int func, long data); asmlinkage long sys_oldumount(char __user *name); asmlinkage long sys_uselib(const char __user *library); asmlinkage long sys_sysfs(int option, diff --git a/include/uapi/linux/capability.h b/include/uapi/linux/capability.h index 2ddb4226cd23..463d1ba2232a 100644 --- a/include/uapi/linux/capability.h +++ b/include/uapi/linux/capability.h @@ -243,7 +243,6 @@ struct vfs_ns_cap_data { /* Allow examination and configuration of disk quotas */ /* Allow setting the domainname */ /* Allow setting the hostname */ -/* Allow calling bdflush() */ /* Allow mount() and umount(), setting up new smb connection */ /* Allow some autofs root ioctls */ /* Allow nfsservctl */ diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c index 0ea8128468c3..adf4d66ffae2 100644 --- a/kernel/sys_ni.c +++ b/kernel/sys_ni.c @@ -414,7 +414,6 @@ COND_SYSCALL(epoll_wait); COND_SYSCALL(recv); COND_SYSCALL_COMPAT(recv); COND_SYSCALL(send); -COND_SYSCALL(bdflush); COND_SYSCALL(uselib); /* optional: time32 */ diff --git a/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl b/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl index 2e68fbb57cc6..ab72dec9dadb 100644 --- a/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl +++ b/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl @@ -176,7 +176,7 @@ 131 nospu quotactl sys_quotactl 132 common getpgid sys_getpgid 133 common fchdir sys_fchdir -134 common bdflush sys_bdflush +134 common bdflush sys_ni_syscall 135 common sysfs sys_sysfs 136 32 personality sys_personality ppc64_personality 136 64 personality ppc64_personality diff --git a/tools/perf/arch/s390/entry/syscalls/syscall.tbl b/tools/perf/arch/s390/entry/syscalls/syscall.tbl index 7e4a2aba366d..f2eba775e676 100644 --- a/tools/perf/arch/s390/entry/syscalls/syscall.tbl +++ b/tools/perf/arch/s390/entry/syscalls/syscall.tbl @@ -122,7 +122,7 @@ 131 common quotactl sys_quotactl sys_quotactl 132 common getpgid sys_getpgid sys_getpgid 133 common fchdir sys_fchdir sys_fchdir -134 common bdflush sys_bdflush sys_bdflush +134 common bdflush - - 135 common sysfs sys_sysfs sys_sysfs 136 common personality sys_s390_personality sys_s390_personality 137 common afs_syscall - - -- 2.20.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [CFT][PATCH] exit/bdflush: Remove the deprecated bdflush system call 2021-06-29 20:28 ` Eric W. Biederman @ 2021-06-29 21:45 ` Michael Schmitz -1 siblings, 0 replies; 8+ messages in thread From: Michael Schmitz @ 2021-06-29 21:45 UTC (permalink / raw) To: Eric W. Biederman Cc: Geert Uytterhoeven, Al Viro, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook, linux-api On 30/06/21 8:28 am, Eric W. Biederman wrote: > The bdflush system call has been deprecated for a very long time. > Recently Michael Schmitz tested[1] and found that the last known > caller of of the bdflush system call is unaffected by it's removal. > > Since the code is not needed delete it. > > [1] https://lkml.kernel.org/r/36123b5d-daa0-6c2b-f2d4-a942f069fd54@gmail.com > Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Tested-by: Michael Schmitz <schmitzmic@gmail.com> > --- > > I think we have consensus that bdflush can be removed. Can folks please > verify I have removed it correctly? > > Michael could you give me a Tested-by on this patch? > > arch/alpha/kernel/syscalls/syscall.tbl | 2 +- > arch/arm/tools/syscall.tbl | 2 +- > arch/arm64/include/asm/unistd32.h | 2 +- > arch/ia64/kernel/syscalls/syscall.tbl | 2 +- > arch/m68k/kernel/syscalls/syscall.tbl | 2 +- > arch/microblaze/kernel/syscalls/syscall.tbl | 2 +- > arch/mips/kernel/syscalls/syscall_o32.tbl | 2 +- > arch/parisc/kernel/syscalls/syscall.tbl | 2 +- > arch/powerpc/kernel/syscalls/syscall.tbl | 2 +- > arch/s390/kernel/syscalls/syscall.tbl | 2 +- > arch/sh/kernel/syscalls/syscall.tbl | 2 +- > arch/sparc/kernel/syscalls/syscall.tbl | 2 +- > arch/x86/entry/syscalls/syscall_32.tbl | 2 +- > arch/xtensa/kernel/syscalls/syscall.tbl | 2 +- > fs/buffer.c | 27 ------------------- > include/linux/syscalls.h | 1 - > include/uapi/linux/capability.h | 1 - > kernel/sys_ni.c | 1 - > .../arch/powerpc/entry/syscalls/syscall.tbl | 2 +- > .../perf/arch/s390/entry/syscalls/syscall.tbl | 2 +- > 20 files changed, 16 insertions(+), 46 deletions(-) > > diff --git a/arch/alpha/kernel/syscalls/syscall.tbl b/arch/alpha/kernel/syscalls/syscall.tbl > index 3000a2e8ee21..85d2bcd9cf36 100644 > --- a/arch/alpha/kernel/syscalls/syscall.tbl > +++ b/arch/alpha/kernel/syscalls/syscall.tbl > @@ -230,7 +230,7 @@ > 259 common osf_swapctl sys_ni_syscall > 260 common osf_memcntl sys_ni_syscall > 261 common osf_fdatasync sys_ni_syscall > -300 common bdflush sys_bdflush > +300 common bdflush sys_ni_syscall > 301 common sethae sys_sethae > 302 common mount sys_mount > 303 common old_adjtimex sys_old_adjtimex > diff --git a/arch/arm/tools/syscall.tbl b/arch/arm/tools/syscall.tbl > index 28e03b5fec00..241988512648 100644 > --- a/arch/arm/tools/syscall.tbl > +++ b/arch/arm/tools/syscall.tbl > @@ -147,7 +147,7 @@ > 131 common quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 common personality sys_personality > # 137 was sys_afs_syscall > diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h > index 5dab69d2c22b..a35cd6c4909c 100644 > --- a/arch/arm64/include/asm/unistd32.h > +++ b/arch/arm64/include/asm/unistd32.h > @@ -279,7 +279,7 @@ __SYSCALL(__NR_getpgid, sys_getpgid) > #define __NR_fchdir 133 > __SYSCALL(__NR_fchdir, sys_fchdir) > #define __NR_bdflush 134 > -__SYSCALL(__NR_bdflush, sys_bdflush) > +__SYSCALL(__NR_bdflush, sys_ni_syscall) > #define __NR_sysfs 135 > __SYSCALL(__NR_sysfs, sys_sysfs) > #define __NR_personality 136 > diff --git a/arch/ia64/kernel/syscalls/syscall.tbl b/arch/ia64/kernel/syscalls/syscall.tbl > index bb11fe4c875a..7de53a9a2972 100644 > --- a/arch/ia64/kernel/syscalls/syscall.tbl > +++ b/arch/ia64/kernel/syscalls/syscall.tbl > @@ -123,7 +123,7 @@ > # 1135 was get_kernel_syms > # 1136 was query_module > 113 common quotactl sys_quotactl > -114 common bdflush sys_bdflush > +114 common bdflush sys_ni_syscall > 115 common sysfs sys_sysfs > 116 common personality sys_personality > 117 common afs_syscall sys_ni_syscall > diff --git a/arch/m68k/kernel/syscalls/syscall.tbl b/arch/m68k/kernel/syscalls/syscall.tbl > index 79c2d24c89dd..be5abd9c8c07 100644 > --- a/arch/m68k/kernel/syscalls/syscall.tbl > +++ b/arch/m68k/kernel/syscalls/syscall.tbl > @@ -141,7 +141,7 @@ > 131 common quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 common personality sys_personality > # 137 was afs_syscall > diff --git a/arch/microblaze/kernel/syscalls/syscall.tbl b/arch/microblaze/kernel/syscalls/syscall.tbl > index b11395a20c20..555fd987f4ab 100644 > --- a/arch/microblaze/kernel/syscalls/syscall.tbl > +++ b/arch/microblaze/kernel/syscalls/syscall.tbl > @@ -141,7 +141,7 @@ > 131 common quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 common personality sys_personality > 137 common afs_syscall sys_ni_syscall > diff --git a/arch/mips/kernel/syscalls/syscall_o32.tbl b/arch/mips/kernel/syscalls/syscall_o32.tbl > index d560c467a8c6..2c6b10db3bd5 100644 > --- a/arch/mips/kernel/syscalls/syscall_o32.tbl > +++ b/arch/mips/kernel/syscalls/syscall_o32.tbl > @@ -145,7 +145,7 @@ > 131 o32 quotactl sys_quotactl > 132 o32 getpgid sys_getpgid > 133 o32 fchdir sys_fchdir > -134 o32 bdflush sys_bdflush > +134 o32 bdflush sys_ni_syscall > 135 o32 sysfs sys_sysfs > 136 o32 personality sys_personality sys_32_personality > 137 o32 afs_syscall sys_ni_syscall > diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl > index aabc37f8cae3..51c156cb00f1 100644 > --- a/arch/parisc/kernel/syscalls/syscall.tbl > +++ b/arch/parisc/kernel/syscalls/syscall.tbl > @@ -147,7 +147,7 @@ > 131 common quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 32 personality parisc_personality > 136 64 personality sys_personality > diff --git a/arch/powerpc/kernel/syscalls/syscall.tbl b/arch/powerpc/kernel/syscalls/syscall.tbl > index 8f052ff4058c..2518e4e6dccf 100644 > --- a/arch/powerpc/kernel/syscalls/syscall.tbl > +++ b/arch/powerpc/kernel/syscalls/syscall.tbl > @@ -176,7 +176,7 @@ > 131 nospu quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 32 personality sys_personality ppc64_personality > 136 64 personality ppc64_personality > diff --git a/arch/s390/kernel/syscalls/syscall.tbl b/arch/s390/kernel/syscalls/syscall.tbl > index 0690263df1dd..ffcf03714f12 100644 > --- a/arch/s390/kernel/syscalls/syscall.tbl > +++ b/arch/s390/kernel/syscalls/syscall.tbl > @@ -122,7 +122,7 @@ > 131 common quotactl sys_quotactl sys_quotactl > 132 common getpgid sys_getpgid sys_getpgid > 133 common fchdir sys_fchdir sys_fchdir > -134 common bdflush sys_bdflush sys_bdflush > +134 common bdflush sys_ni_syscall sys_ni_syscall > 135 common sysfs sys_sysfs sys_sysfs > 136 common personality sys_s390_personality sys_s390_personality > 137 common afs_syscall - - > diff --git a/arch/sh/kernel/syscalls/syscall.tbl b/arch/sh/kernel/syscalls/syscall.tbl > index 0b91499ebdcf..6e7305066a70 100644 > --- a/arch/sh/kernel/syscalls/syscall.tbl > +++ b/arch/sh/kernel/syscalls/syscall.tbl > @@ -141,7 +141,7 @@ > 131 common quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 common personality sys_personality > # 137 was afs_syscall > diff --git a/arch/sparc/kernel/syscalls/syscall.tbl b/arch/sparc/kernel/syscalls/syscall.tbl > index e34cc30ef22c..bf330dda7c61 100644 > --- a/arch/sparc/kernel/syscalls/syscall.tbl > +++ b/arch/sparc/kernel/syscalls/syscall.tbl > @@ -270,7 +270,7 @@ > 222 common delete_module sys_delete_module > 223 common get_kernel_syms sys_ni_syscall > 224 common getpgid sys_getpgid > -225 common bdflush sys_bdflush > +225 common bdflush sys_ni_syscall > 226 common sysfs sys_sysfs > 227 common afs_syscall sys_nis_syscall > 228 common setfsuid sys_setfsuid16 > diff --git a/arch/x86/entry/syscalls/syscall_32.tbl b/arch/x86/entry/syscalls/syscall_32.tbl > index 4bbc267fb36b..a21a72763d58 100644 > --- a/arch/x86/entry/syscalls/syscall_32.tbl > +++ b/arch/x86/entry/syscalls/syscall_32.tbl > @@ -145,7 +145,7 @@ > 131 i386 quotactl sys_quotactl > 132 i386 getpgid sys_getpgid > 133 i386 fchdir sys_fchdir > -134 i386 bdflush sys_bdflush > +134 i386 bdflush sys_ni_syscall > 135 i386 sysfs sys_sysfs > 136 i386 personality sys_personality > 137 i386 afs_syscall > diff --git a/arch/xtensa/kernel/syscalls/syscall.tbl b/arch/xtensa/kernel/syscalls/syscall.tbl > index fd2f30227d96..db4e3d09b249 100644 > --- a/arch/xtensa/kernel/syscalls/syscall.tbl > +++ b/arch/xtensa/kernel/syscalls/syscall.tbl > @@ -223,7 +223,7 @@ > # 205 was old nfsservctl > 205 common nfsservctl sys_ni_syscall > 206 common _sysctl sys_ni_syscall > -207 common bdflush sys_bdflush > +207 common bdflush sys_ni_syscall > 208 common uname sys_newuname > 209 common sysinfo sys_sysinfo > 210 common init_module sys_init_module > diff --git a/fs/buffer.c b/fs/buffer.c > index ea48c01fb76b..04ddff76c860 100644 > --- a/fs/buffer.c > +++ b/fs/buffer.c > @@ -3292,33 +3292,6 @@ int try_to_free_buffers(struct page *page) > } > EXPORT_SYMBOL(try_to_free_buffers); > > -/* > - * There are no bdflush tunables left. But distributions are > - * still running obsolete flush daemons, so we terminate them here. > - * > - * Use of bdflush() is deprecated and will be removed in a future kernel. > - * The `flush-X' kernel threads fully replace bdflush daemons and this call. > - */ > -SYSCALL_DEFINE2(bdflush, int, func, long, data) > -{ > - static int msg_count; > - > - if (!capable(CAP_SYS_ADMIN)) > - return -EPERM; > - > - if (msg_count < 5) { > - msg_count++; > - printk(KERN_INFO > - "warning: process `%s' used the obsolete bdflush" > - " system call\n", current->comm); > - printk(KERN_INFO "Fix your initscripts?\n"); > - } > - > - if (func == 1) > - do_exit(0); > - return 0; > -} > - > /* > * Buffer-head allocation > */ > diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h > index 050511e8f1f8..1bd6e05ea116 100644 > --- a/include/linux/syscalls.h > +++ b/include/linux/syscalls.h > @@ -1157,7 +1157,6 @@ asmlinkage long sys_ustat(unsigned dev, struct ustat __user *ubuf); > asmlinkage long sys_vfork(void); > asmlinkage long sys_recv(int, void __user *, size_t, unsigned); > asmlinkage long sys_send(int, void __user *, size_t, unsigned); > -asmlinkage long sys_bdflush(int func, long data); > asmlinkage long sys_oldumount(char __user *name); > asmlinkage long sys_uselib(const char __user *library); > asmlinkage long sys_sysfs(int option, > diff --git a/include/uapi/linux/capability.h b/include/uapi/linux/capability.h > index 2ddb4226cd23..463d1ba2232a 100644 > --- a/include/uapi/linux/capability.h > +++ b/include/uapi/linux/capability.h > @@ -243,7 +243,6 @@ struct vfs_ns_cap_data { > /* Allow examination and configuration of disk quotas */ > /* Allow setting the domainname */ > /* Allow setting the hostname */ > -/* Allow calling bdflush() */ > /* Allow mount() and umount(), setting up new smb connection */ > /* Allow some autofs root ioctls */ > /* Allow nfsservctl */ > diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c > index 0ea8128468c3..adf4d66ffae2 100644 > --- a/kernel/sys_ni.c > +++ b/kernel/sys_ni.c > @@ -414,7 +414,6 @@ COND_SYSCALL(epoll_wait); > COND_SYSCALL(recv); > COND_SYSCALL_COMPAT(recv); > COND_SYSCALL(send); > -COND_SYSCALL(bdflush); > COND_SYSCALL(uselib); > > /* optional: time32 */ > diff --git a/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl b/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl > index 2e68fbb57cc6..ab72dec9dadb 100644 > --- a/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl > +++ b/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl > @@ -176,7 +176,7 @@ > 131 nospu quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 32 personality sys_personality ppc64_personality > 136 64 personality ppc64_personality > diff --git a/tools/perf/arch/s390/entry/syscalls/syscall.tbl b/tools/perf/arch/s390/entry/syscalls/syscall.tbl > index 7e4a2aba366d..f2eba775e676 100644 > --- a/tools/perf/arch/s390/entry/syscalls/syscall.tbl > +++ b/tools/perf/arch/s390/entry/syscalls/syscall.tbl > @@ -122,7 +122,7 @@ > 131 common quotactl sys_quotactl sys_quotactl > 132 common getpgid sys_getpgid sys_getpgid > 133 common fchdir sys_fchdir sys_fchdir > -134 common bdflush sys_bdflush sys_bdflush > +134 common bdflush - - > 135 common sysfs sys_sysfs sys_sysfs > 136 common personality sys_s390_personality sys_s390_personality > 137 common afs_syscall - - ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [CFT][PATCH] exit/bdflush: Remove the deprecated bdflush system call @ 2021-06-29 21:45 ` Michael Schmitz 0 siblings, 0 replies; 8+ messages in thread From: Michael Schmitz @ 2021-06-29 21:45 UTC (permalink / raw) To: Eric W. Biederman Cc: Geert Uytterhoeven, Al Viro, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook, linux-api-u79uwXL29TY76Z2rM5mHXA On 30/06/21 8:28 am, Eric W. Biederman wrote: > The bdflush system call has been deprecated for a very long time. > Recently Michael Schmitz tested[1] and found that the last known > caller of of the bdflush system call is unaffected by it's removal. > > Since the code is not needed delete it. > > [1] https://lkml.kernel.org/r/36123b5d-daa0-6c2b-f2d4-a942f069fd54-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org > Signed-off-by: "Eric W. Biederman" <ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org> Tested-by: Michael Schmitz <schmitzmic-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > --- > > I think we have consensus that bdflush can be removed. Can folks please > verify I have removed it correctly? > > Michael could you give me a Tested-by on this patch? > > arch/alpha/kernel/syscalls/syscall.tbl | 2 +- > arch/arm/tools/syscall.tbl | 2 +- > arch/arm64/include/asm/unistd32.h | 2 +- > arch/ia64/kernel/syscalls/syscall.tbl | 2 +- > arch/m68k/kernel/syscalls/syscall.tbl | 2 +- > arch/microblaze/kernel/syscalls/syscall.tbl | 2 +- > arch/mips/kernel/syscalls/syscall_o32.tbl | 2 +- > arch/parisc/kernel/syscalls/syscall.tbl | 2 +- > arch/powerpc/kernel/syscalls/syscall.tbl | 2 +- > arch/s390/kernel/syscalls/syscall.tbl | 2 +- > arch/sh/kernel/syscalls/syscall.tbl | 2 +- > arch/sparc/kernel/syscalls/syscall.tbl | 2 +- > arch/x86/entry/syscalls/syscall_32.tbl | 2 +- > arch/xtensa/kernel/syscalls/syscall.tbl | 2 +- > fs/buffer.c | 27 ------------------- > include/linux/syscalls.h | 1 - > include/uapi/linux/capability.h | 1 - > kernel/sys_ni.c | 1 - > .../arch/powerpc/entry/syscalls/syscall.tbl | 2 +- > .../perf/arch/s390/entry/syscalls/syscall.tbl | 2 +- > 20 files changed, 16 insertions(+), 46 deletions(-) > > diff --git a/arch/alpha/kernel/syscalls/syscall.tbl b/arch/alpha/kernel/syscalls/syscall.tbl > index 3000a2e8ee21..85d2bcd9cf36 100644 > --- a/arch/alpha/kernel/syscalls/syscall.tbl > +++ b/arch/alpha/kernel/syscalls/syscall.tbl > @@ -230,7 +230,7 @@ > 259 common osf_swapctl sys_ni_syscall > 260 common osf_memcntl sys_ni_syscall > 261 common osf_fdatasync sys_ni_syscall > -300 common bdflush sys_bdflush > +300 common bdflush sys_ni_syscall > 301 common sethae sys_sethae > 302 common mount sys_mount > 303 common old_adjtimex sys_old_adjtimex > diff --git a/arch/arm/tools/syscall.tbl b/arch/arm/tools/syscall.tbl > index 28e03b5fec00..241988512648 100644 > --- a/arch/arm/tools/syscall.tbl > +++ b/arch/arm/tools/syscall.tbl > @@ -147,7 +147,7 @@ > 131 common quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 common personality sys_personality > # 137 was sys_afs_syscall > diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h > index 5dab69d2c22b..a35cd6c4909c 100644 > --- a/arch/arm64/include/asm/unistd32.h > +++ b/arch/arm64/include/asm/unistd32.h > @@ -279,7 +279,7 @@ __SYSCALL(__NR_getpgid, sys_getpgid) > #define __NR_fchdir 133 > __SYSCALL(__NR_fchdir, sys_fchdir) > #define __NR_bdflush 134 > -__SYSCALL(__NR_bdflush, sys_bdflush) > +__SYSCALL(__NR_bdflush, sys_ni_syscall) > #define __NR_sysfs 135 > __SYSCALL(__NR_sysfs, sys_sysfs) > #define __NR_personality 136 > diff --git a/arch/ia64/kernel/syscalls/syscall.tbl b/arch/ia64/kernel/syscalls/syscall.tbl > index bb11fe4c875a..7de53a9a2972 100644 > --- a/arch/ia64/kernel/syscalls/syscall.tbl > +++ b/arch/ia64/kernel/syscalls/syscall.tbl > @@ -123,7 +123,7 @@ > # 1135 was get_kernel_syms > # 1136 was query_module > 113 common quotactl sys_quotactl > -114 common bdflush sys_bdflush > +114 common bdflush sys_ni_syscall > 115 common sysfs sys_sysfs > 116 common personality sys_personality > 117 common afs_syscall sys_ni_syscall > diff --git a/arch/m68k/kernel/syscalls/syscall.tbl b/arch/m68k/kernel/syscalls/syscall.tbl > index 79c2d24c89dd..be5abd9c8c07 100644 > --- a/arch/m68k/kernel/syscalls/syscall.tbl > +++ b/arch/m68k/kernel/syscalls/syscall.tbl > @@ -141,7 +141,7 @@ > 131 common quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 common personality sys_personality > # 137 was afs_syscall > diff --git a/arch/microblaze/kernel/syscalls/syscall.tbl b/arch/microblaze/kernel/syscalls/syscall.tbl > index b11395a20c20..555fd987f4ab 100644 > --- a/arch/microblaze/kernel/syscalls/syscall.tbl > +++ b/arch/microblaze/kernel/syscalls/syscall.tbl > @@ -141,7 +141,7 @@ > 131 common quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 common personality sys_personality > 137 common afs_syscall sys_ni_syscall > diff --git a/arch/mips/kernel/syscalls/syscall_o32.tbl b/arch/mips/kernel/syscalls/syscall_o32.tbl > index d560c467a8c6..2c6b10db3bd5 100644 > --- a/arch/mips/kernel/syscalls/syscall_o32.tbl > +++ b/arch/mips/kernel/syscalls/syscall_o32.tbl > @@ -145,7 +145,7 @@ > 131 o32 quotactl sys_quotactl > 132 o32 getpgid sys_getpgid > 133 o32 fchdir sys_fchdir > -134 o32 bdflush sys_bdflush > +134 o32 bdflush sys_ni_syscall > 135 o32 sysfs sys_sysfs > 136 o32 personality sys_personality sys_32_personality > 137 o32 afs_syscall sys_ni_syscall > diff --git a/arch/parisc/kernel/syscalls/syscall.tbl b/arch/parisc/kernel/syscalls/syscall.tbl > index aabc37f8cae3..51c156cb00f1 100644 > --- a/arch/parisc/kernel/syscalls/syscall.tbl > +++ b/arch/parisc/kernel/syscalls/syscall.tbl > @@ -147,7 +147,7 @@ > 131 common quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 32 personality parisc_personality > 136 64 personality sys_personality > diff --git a/arch/powerpc/kernel/syscalls/syscall.tbl b/arch/powerpc/kernel/syscalls/syscall.tbl > index 8f052ff4058c..2518e4e6dccf 100644 > --- a/arch/powerpc/kernel/syscalls/syscall.tbl > +++ b/arch/powerpc/kernel/syscalls/syscall.tbl > @@ -176,7 +176,7 @@ > 131 nospu quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 32 personality sys_personality ppc64_personality > 136 64 personality ppc64_personality > diff --git a/arch/s390/kernel/syscalls/syscall.tbl b/arch/s390/kernel/syscalls/syscall.tbl > index 0690263df1dd..ffcf03714f12 100644 > --- a/arch/s390/kernel/syscalls/syscall.tbl > +++ b/arch/s390/kernel/syscalls/syscall.tbl > @@ -122,7 +122,7 @@ > 131 common quotactl sys_quotactl sys_quotactl > 132 common getpgid sys_getpgid sys_getpgid > 133 common fchdir sys_fchdir sys_fchdir > -134 common bdflush sys_bdflush sys_bdflush > +134 common bdflush sys_ni_syscall sys_ni_syscall > 135 common sysfs sys_sysfs sys_sysfs > 136 common personality sys_s390_personality sys_s390_personality > 137 common afs_syscall - - > diff --git a/arch/sh/kernel/syscalls/syscall.tbl b/arch/sh/kernel/syscalls/syscall.tbl > index 0b91499ebdcf..6e7305066a70 100644 > --- a/arch/sh/kernel/syscalls/syscall.tbl > +++ b/arch/sh/kernel/syscalls/syscall.tbl > @@ -141,7 +141,7 @@ > 131 common quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 common personality sys_personality > # 137 was afs_syscall > diff --git a/arch/sparc/kernel/syscalls/syscall.tbl b/arch/sparc/kernel/syscalls/syscall.tbl > index e34cc30ef22c..bf330dda7c61 100644 > --- a/arch/sparc/kernel/syscalls/syscall.tbl > +++ b/arch/sparc/kernel/syscalls/syscall.tbl > @@ -270,7 +270,7 @@ > 222 common delete_module sys_delete_module > 223 common get_kernel_syms sys_ni_syscall > 224 common getpgid sys_getpgid > -225 common bdflush sys_bdflush > +225 common bdflush sys_ni_syscall > 226 common sysfs sys_sysfs > 227 common afs_syscall sys_nis_syscall > 228 common setfsuid sys_setfsuid16 > diff --git a/arch/x86/entry/syscalls/syscall_32.tbl b/arch/x86/entry/syscalls/syscall_32.tbl > index 4bbc267fb36b..a21a72763d58 100644 > --- a/arch/x86/entry/syscalls/syscall_32.tbl > +++ b/arch/x86/entry/syscalls/syscall_32.tbl > @@ -145,7 +145,7 @@ > 131 i386 quotactl sys_quotactl > 132 i386 getpgid sys_getpgid > 133 i386 fchdir sys_fchdir > -134 i386 bdflush sys_bdflush > +134 i386 bdflush sys_ni_syscall > 135 i386 sysfs sys_sysfs > 136 i386 personality sys_personality > 137 i386 afs_syscall > diff --git a/arch/xtensa/kernel/syscalls/syscall.tbl b/arch/xtensa/kernel/syscalls/syscall.tbl > index fd2f30227d96..db4e3d09b249 100644 > --- a/arch/xtensa/kernel/syscalls/syscall.tbl > +++ b/arch/xtensa/kernel/syscalls/syscall.tbl > @@ -223,7 +223,7 @@ > # 205 was old nfsservctl > 205 common nfsservctl sys_ni_syscall > 206 common _sysctl sys_ni_syscall > -207 common bdflush sys_bdflush > +207 common bdflush sys_ni_syscall > 208 common uname sys_newuname > 209 common sysinfo sys_sysinfo > 210 common init_module sys_init_module > diff --git a/fs/buffer.c b/fs/buffer.c > index ea48c01fb76b..04ddff76c860 100644 > --- a/fs/buffer.c > +++ b/fs/buffer.c > @@ -3292,33 +3292,6 @@ int try_to_free_buffers(struct page *page) > } > EXPORT_SYMBOL(try_to_free_buffers); > > -/* > - * There are no bdflush tunables left. But distributions are > - * still running obsolete flush daemons, so we terminate them here. > - * > - * Use of bdflush() is deprecated and will be removed in a future kernel. > - * The `flush-X' kernel threads fully replace bdflush daemons and this call. > - */ > -SYSCALL_DEFINE2(bdflush, int, func, long, data) > -{ > - static int msg_count; > - > - if (!capable(CAP_SYS_ADMIN)) > - return -EPERM; > - > - if (msg_count < 5) { > - msg_count++; > - printk(KERN_INFO > - "warning: process `%s' used the obsolete bdflush" > - " system call\n", current->comm); > - printk(KERN_INFO "Fix your initscripts?\n"); > - } > - > - if (func == 1) > - do_exit(0); > - return 0; > -} > - > /* > * Buffer-head allocation > */ > diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h > index 050511e8f1f8..1bd6e05ea116 100644 > --- a/include/linux/syscalls.h > +++ b/include/linux/syscalls.h > @@ -1157,7 +1157,6 @@ asmlinkage long sys_ustat(unsigned dev, struct ustat __user *ubuf); > asmlinkage long sys_vfork(void); > asmlinkage long sys_recv(int, void __user *, size_t, unsigned); > asmlinkage long sys_send(int, void __user *, size_t, unsigned); > -asmlinkage long sys_bdflush(int func, long data); > asmlinkage long sys_oldumount(char __user *name); > asmlinkage long sys_uselib(const char __user *library); > asmlinkage long sys_sysfs(int option, > diff --git a/include/uapi/linux/capability.h b/include/uapi/linux/capability.h > index 2ddb4226cd23..463d1ba2232a 100644 > --- a/include/uapi/linux/capability.h > +++ b/include/uapi/linux/capability.h > @@ -243,7 +243,6 @@ struct vfs_ns_cap_data { > /* Allow examination and configuration of disk quotas */ > /* Allow setting the domainname */ > /* Allow setting the hostname */ > -/* Allow calling bdflush() */ > /* Allow mount() and umount(), setting up new smb connection */ > /* Allow some autofs root ioctls */ > /* Allow nfsservctl */ > diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c > index 0ea8128468c3..adf4d66ffae2 100644 > --- a/kernel/sys_ni.c > +++ b/kernel/sys_ni.c > @@ -414,7 +414,6 @@ COND_SYSCALL(epoll_wait); > COND_SYSCALL(recv); > COND_SYSCALL_COMPAT(recv); > COND_SYSCALL(send); > -COND_SYSCALL(bdflush); > COND_SYSCALL(uselib); > > /* optional: time32 */ > diff --git a/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl b/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl > index 2e68fbb57cc6..ab72dec9dadb 100644 > --- a/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl > +++ b/tools/perf/arch/powerpc/entry/syscalls/syscall.tbl > @@ -176,7 +176,7 @@ > 131 nospu quotactl sys_quotactl > 132 common getpgid sys_getpgid > 133 common fchdir sys_fchdir > -134 common bdflush sys_bdflush > +134 common bdflush sys_ni_syscall > 135 common sysfs sys_sysfs > 136 32 personality sys_personality ppc64_personality > 136 64 personality ppc64_personality > diff --git a/tools/perf/arch/s390/entry/syscalls/syscall.tbl b/tools/perf/arch/s390/entry/syscalls/syscall.tbl > index 7e4a2aba366d..f2eba775e676 100644 > --- a/tools/perf/arch/s390/entry/syscalls/syscall.tbl > +++ b/tools/perf/arch/s390/entry/syscalls/syscall.tbl > @@ -122,7 +122,7 @@ > 131 common quotactl sys_quotactl sys_quotactl > 132 common getpgid sys_getpgid sys_getpgid > 133 common fchdir sys_fchdir sys_fchdir > -134 common bdflush sys_bdflush sys_bdflush > +134 common bdflush - - > 135 common sysfs sys_sysfs sys_sysfs > 136 common personality sys_s390_personality sys_s390_personality > 137 common afs_syscall - - ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [CFT][PATCH] exit/bdflush: Remove the deprecated bdflush system call 2021-06-29 20:28 ` Eric W. Biederman (?) (?) @ 2021-06-30 8:24 ` Geert Uytterhoeven -1 siblings, 0 replies; 8+ messages in thread From: Geert Uytterhoeven @ 2021-06-30 8:24 UTC (permalink / raw) To: Eric W. Biederman Cc: Michael Schmitz, Al Viro, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook, Linux API On Tue, Jun 29, 2021 at 10:28 PM Eric W. Biederman <ebiederm@xmission.com> wrote: > The bdflush system call has been deprecated for a very long time. > Recently Michael Schmitz tested[1] and found that the last known > caller of of the bdflush system call is unaffected by it's removal. > > Since the code is not needed delete it. > > [1] https://lkml.kernel.org/r/36123b5d-daa0-6c2b-f2d4-a942f069fd54@gmail.com > Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> > arch/m68k/kernel/syscalls/syscall.tbl | 2 +- Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [CFT][PATCH] exit/bdflush: Remove the deprecated bdflush system call 2021-06-29 20:28 ` Eric W. Biederman ` (2 preceding siblings ...) (?) @ 2021-06-30 8:37 ` Arnd Bergmann -1 siblings, 0 replies; 8+ messages in thread From: Arnd Bergmann @ 2021-06-30 8:37 UTC (permalink / raw) To: Eric W. Biederman Cc: Michael Schmitz, Geert Uytterhoeven, Al Viro, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Tejun Heo, Kees Cook, Linux API On Tue, Jun 29, 2021 at 10:28 PM Eric W. Biederman <ebiederm@xmission.com> wrote: > > > The bdflush system call has been deprecated for a very long time. > Recently Michael Schmitz tested[1] and found that the last known > caller of of the bdflush system call is unaffected by it's removal. > > Since the code is not needed delete it. > > [1] https://lkml.kernel.org/r/36123b5d-daa0-6c2b-f2d4-a942f069fd54@gmail.com > Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> > --- > > I think we have consensus that bdflush can be removed. Can folks please > verify I have removed it correctly? Reviewed-by: Arnd Bergmann <arnd@arndb.de> We are traditionally somewhat inconsistent about whether to leave the __NR_bdflush macro present in asm/unistd.h or to remove it when the syscall is gone. Leaving it in place as you do is probably better here. Arnd ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [CFT][PATCH] exit/bdflush: Remove the deprecated bdflush system call 2021-06-29 20:28 ` Eric W. Biederman ` (3 preceding siblings ...) (?) @ 2021-06-30 12:30 ` Cyril Hrubis -1 siblings, 0 replies; 8+ messages in thread From: Cyril Hrubis @ 2021-06-30 12:30 UTC (permalink / raw) To: Eric W. Biederman Cc: Michael Schmitz, Geert Uytterhoeven, Al Viro, Linus Torvalds, linux-arch, Jens Axboe, Oleg Nesterov, Linux Kernel Mailing List, Richard Henderson, Ivan Kokshaysky, Matt Turner, alpha, linux-m68k, Arnd Bergmann, Tejun Heo, Kees Cook, linux-api Hi! I've send a similar patch [1] a while ago when I removed bdflush tests from LTP. [1] https://lore.kernel.org/lkml/20190528101012.11402-1-chrubis@suse.cz/ Acked-by: Cyril Hrubis <chrubis@suse.cz> -- Cyril Hrubis chrubis@suse.cz ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2021-06-30 12:56 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-06-29 21:55 [CFT][PATCH] exit/bdflush: Remove the deprecated bdflush system call kernel test robot -- strict thread matches above, loose matches on Subject: below -- 2021-06-21 13:54 Kernel stack read with PTRACE_EVENT_EXIT and io_uring threads Al Viro 2021-06-21 18:59 ` Al Viro 2021-06-21 19:22 ` Linus Torvalds 2021-06-21 20:03 ` Eric W. Biederman 2021-06-21 23:15 ` Linus Torvalds 2021-06-22 20:52 ` Eric W. Biederman 2021-06-23 0:41 ` Linus Torvalds 2021-06-23 14:33 ` Eric W. Biederman 2021-06-24 18:57 ` [PATCH 0/9] Refactoring exit Eric W. Biederman 2021-06-24 22:45 ` Al Viro 2021-06-27 22:13 ` Al Viro 2021-06-27 22:59 ` Michael Schmitz 2021-06-28 7:31 ` Geert Uytterhoeven 2021-06-28 17:14 ` Michael Schmitz 2021-06-28 19:17 ` Geert Uytterhoeven 2021-06-28 20:13 ` Michael Schmitz 2021-06-28 21:18 ` Geert Uytterhoeven 2021-06-28 23:42 ` Michael Schmitz 2021-06-29 20:28 ` [CFT][PATCH] exit/bdflush: Remove the deprecated bdflush system call Eric W. Biederman 2021-06-29 20:28 ` Eric W. Biederman 2021-06-29 21:45 ` Michael Schmitz 2021-06-29 21:45 ` Michael Schmitz 2021-06-30 8:24 ` Geert Uytterhoeven 2021-06-30 8:37 ` Arnd Bergmann 2021-06-30 12:30 ` Cyril Hrubis
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.