lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 23 Dec 2020 10:48:10 +0100 From: Helge Deller <deller@....de> To: Andrew Morton <akpm@...ux-foundation.org> Cc: Alexey Dobriyan <adobriyan@...il.com>, linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org Subject: Re: [PATCH] proc/wchan: Use printk format instead of lookup_symbol_name() On 12/23/20 3:18 AM, Andrew Morton wrote: > On Thu, 17 Dec 2020 17:54:13 +0100 Helge Deller <deller@....de> wrote: > >> To resolve the symbol fuction name for wchan, use the printk format >> specifier %ps instead of manually looking up the symbol function name >> via lookup_symbol_name(). >> >> Signed-off-by: Helge Deller <deller@....de> >> > > Please don't forget the "^---$" to separate the changelog from the > diff. Ok. > >> #include <linux/module.h> >> @@ -386,19 +385,17 @@ static int proc_pid_wchan(struct seq_file *m, struct pid_namespace *ns, >> struct pid *pid, struct task_struct *task) >> { >> unsigned long wchan; >> - char symname[KSYM_NAME_LEN]; >> >> - if (!ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) >> - goto print0; >> + if (ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) >> + wchan = get_wchan(task); >> + else >> + wchan = 0; >> >> - wchan = get_wchan(task); >> - if (wchan && !lookup_symbol_name(wchan, symname)) { >> - seq_puts(m, symname); >> - return 0; >> - } >> + if (wchan) >> + seq_printf(m, "%ps", (void *) wchan); >> + else >> + seq_putc(m, '0'); >> >> -print0: >> - seq_putc(m, '0'); >> return 0; >> } > > We can simplify this further? > > static int proc_pid_wchan(struct seq_file *m, struct pid_namespace *ns, > struct pid *pid, struct task_struct *task) > { > if (ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) > seq_printf(m, "%ps", (void *)get_wchan(task)); > else > seq_putc(m, '0'); > > return 0; > } > > > --- a/fs/proc/base.c~proc-wchan-use-printk-format-instead-of-lookup_symbol_name-fix > +++ a/fs/proc/base.c > @@ -384,15 +384,8 @@ static const struct file_operations proc > static int proc_pid_wchan(struct seq_file *m, struct pid_namespace *ns, > struct pid *pid, struct task_struct *task) > { > - unsigned long wchan; > - > if (ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS)) > - wchan = get_wchan(task); > - else > - wchan = 0; > - > - if (wchan) > - seq_printf(m, "%ps", (void *) wchan); > + seq_printf(m, "%ps", (void *)get_wchan(task)); > else > seq_putc(m, '0'); get_wchan() does return NULL sometimes, in which case with your change now "0x0" instead of "0" gets printed. If that's acceptable, then your patch is Ok. Helge
Powered by blists - more mailing lists