Re: [PATCH] procfs: fix the output format in /proc/PID/wchan

From: Alexey Dobriyan
Date: Thu Nov 22 2018 - 08:38:33 EST


On Thu, Nov 22, 2018 at 09:29:52PM +0800, Yafang Shao wrote:
> On Thu, Nov 22, 2018 at 7:40 PM Alexey Dobriyan <adobriyan@xxxxxxxxx> wrote:
> >
> > On Wed, Nov 21, 2018 at 07:28:44PM -0800, Andrew Morton wrote:
> > > On Mon, 19 Nov 2018 19:17:52 +0800 Yafang Shao <laoar.shao@xxxxxxxxx> wrote:
> > >
> > > > Just add the missing newline.
> > > >
> > > > ...
> > > >
> > > > --- a/fs/proc/base.c
> > > > +++ b/fs/proc/base.c
> > > > @@ -370,11 +370,12 @@ static int proc_pid_wchan(struct seq_file *m, struct pid_namespace *ns,
> > > > wchan = get_wchan(task);
> > > > if (wchan && !lookup_symbol_name(wchan, symname)) {
> > > > seq_puts(m, symname);
> > > > + seq_putc(m, '\n');
> > > > return 0;
> > > > }
> > > >
> > > > print0:
> > > > - seq_putc(m, '0');
> > > > + seq_puts(m, "0\n");
> > > > return 0;
> > > > }
> > > > #endif /* CONFIG_KALLSYMS */
> > >
> > > What is presently wrong with the wchan output? The changelog
> > > should explain such things, please.
> >
> > It is just newline to make "cat /proc/*/wchan" output look cool.
> > But newline can break something.
>
> Could you pls. show some examples for what the newline may break ?

char buf[16];
rv = read(fd, buf, sizeof(buf));
assert(rv == 1);