All of lore.kernel.org
 help / color / mirror / Atom feed
From: Petr Mladek <pmladek@suse.cz>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Jiri Kosina <jkosina@suse.cz>, "H. Peter Anvin" <hpa@zytor.com>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [RFC][PATCH 04/12 v3] tracing: Convert seq_buf_path() to be like seq_path()
Date: Wed, 5 Nov 2014 15:45:53 +0100	[thread overview]
Message-ID: <20141105144553.GE4570@pathway.suse.cz> (raw)
In-Reply-To: <20141104160222.048795666@goodmis.org>

On Tue 2014-11-04 10:52:41, Steven Rostedt wrote:
> From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>
> 
> Rewrite seq_buf_path() like it is done in seq_path() and allow
> it to accept any escape character instead of just "\n".
> 
> Making seq_buf_path() like seq_path() will help prevent problems
> when converting seq_file to use the seq_buf logic.
> 
> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> ---
>  include/linux/seq_buf.h  |  2 +-
>  kernel/trace/seq_buf.c   | 30 ++++++++++++++++--------------
>  kernel/trace/trace_seq.c |  2 +-
>  3 files changed, 18 insertions(+), 16 deletions(-)
> 
> diff --git a/include/linux/seq_buf.h b/include/linux/seq_buf.h
> index 97872154d51c..6d1c57d6073f 100644
> --- a/include/linux/seq_buf.h
> +++ b/include/linux/seq_buf.h
> @@ -64,7 +64,7 @@ extern int seq_buf_putc(struct seq_buf *s, unsigned char c);
>  extern int seq_buf_putmem(struct seq_buf *s, const void *mem, unsigned int len);
>  extern int seq_buf_putmem_hex(struct seq_buf *s, const void *mem,
>  			      unsigned int len);
> -extern int seq_buf_path(struct seq_buf *s, const struct path *path);
> +extern int seq_buf_path(struct seq_buf *s, const struct path *path, const char *esc);
>  
>  extern int seq_buf_bitmask(struct seq_buf *s, const unsigned long *maskp,
>  			   int nmaskbits);
> diff --git a/kernel/trace/seq_buf.c b/kernel/trace/seq_buf.c
> index 2bf582753902..243123b12d16 100644
> --- a/kernel/trace/seq_buf.c
> +++ b/kernel/trace/seq_buf.c
> @@ -272,28 +272,30 @@ int seq_buf_putmem_hex(struct seq_buf *s, const void *mem,
>   * seq_buf_path - copy a path into the sequence buffer
>   * @s: seq_buf descriptor
>   * @path: path to write into the sequence buffer.
> + * @esc: set of characters to escape in the output
>   *
>   * Write a path name into the sequence buffer.
>   *
>   * Returns zero on success, -1 on overflow
>
>   */
> -int seq_buf_path(struct seq_buf *s, const struct path *path)
> +int seq_buf_path(struct seq_buf *s, const struct path *path, const char *esc)
>  {
> -	unsigned int len = SEQ_BUF_LEFT(s);
> -	unsigned char *p;
> -
> -	WARN_ON(s->size == 0);

I would keep this check.

> -	p = d_path(path, s->buffer + s->len, len);
> -	if (!IS_ERR(p)) {
> -		p = mangle_path(s->buffer + s->len, p, "\n");
> -		if (p) {
> -			s->len = p - s->buffer;
> -			return 0;
> +	char *buf = s->buffer + s->len;
> +	size_t size = SEQ_BUF_LEFT(s);

I would use the variable name "len" to make it consistent with
the other fucntions in seq_buf.c.

> +	int res = -1;
> +
> +	if (size) {
> +		char *p = d_path(path, buf, size);
> +		if (!IS_ERR(p)) {
> +			char *end = mangle_path(buf, p, esc);
> +			if (end)
> +				res = end - buf;
>  		}
>  	}
> -	seq_buf_set_overflow(s);

We still should set overflow on failure.

> -	return -1;
> +	if (res > 0)
> +		s->len += res;
> +
> +	return res;

It returns -1 on failure and the number of written characters on
success. This is incompatible with the other seq_buf functions
and with the comment above this function. Also it changes the
return value from trace_seq_path().

I do not mind about the used scheme but I think that we should
make it consistent.

Best Regards,
Petr

  reply	other threads:[~2014-11-05 14:46 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-04 15:52 [RFC][PATCH 00/12 v3] seq-buf/x86/printk: Print all stacks from NMI safely Steven Rostedt
2014-11-04 15:52 ` [RFC][PATCH 01/12 v3] x86/kvm/tracing: Use helper function trace_seq_buffer_ptr() Steven Rostedt
2014-11-04 16:27   ` Paolo Bonzini
2014-11-04 17:17   ` Rustad, Mark D
2014-11-04 19:09     ` Steven Rostedt
2014-11-04 19:35       ` Steven Rostedt
2014-11-04 20:09         ` Rustad, Mark D
2014-11-05 10:28   ` Petr Mladek
2014-11-04 15:52 ` [RFC][PATCH 02/12 v3] RAS/tracing: Use trace_seq_buffer_ptr() helper instead of open coded Steven Rostedt
2014-11-04 19:59   ` Borislav Petkov
2014-11-05 10:29   ` Petr Mladek
2014-11-04 15:52 ` [RFC][PATCH 03/12 v3] tracing: Create seq_buf layer in trace_seq Steven Rostedt
2014-11-05 14:22   ` Petr Mladek
2014-11-05 18:41     ` Steven Rostedt
2014-11-05 20:00       ` Steven Rostedt
2014-11-05 21:17         ` Steven Rostedt
2014-11-05 21:21           ` Steven Rostedt
2014-11-06 16:33             ` Petr Mladek
2014-11-07 18:30               ` Steven Rostedt
2014-11-07 18:59                 ` Joe Perches
2014-11-07 19:10                   ` Steven Rostedt
2014-11-10 13:53                 ` Petr Mladek
2014-11-10 17:37                   ` Steven Rostedt
2014-11-10 19:02                     ` Petr Mladek
2014-11-06 16:13       ` Petr Mladek
2014-11-05 14:26   ` Petr Mladek
2014-11-05 18:42     ` Steven Rostedt
2014-11-04 15:52 ` [RFC][PATCH 04/12 v3] tracing: Convert seq_buf_path() to be like seq_path() Steven Rostedt
2014-11-05 14:45   ` Petr Mladek [this message]
2014-11-05 20:10     ` Steven Rostedt
2014-11-06 14:18       ` Petr Mladek
2014-11-06 21:09         ` Steven Rostedt
2014-11-06 15:01   ` Petr Mladek
2014-11-07 18:34     ` Steven Rostedt
2014-11-10 14:03       ` Petr Mladek
2014-11-10 17:38         ` Steven Rostedt
2014-11-04 15:52 ` [RFC][PATCH 05/12 v3] tracing: Convert seq_buf fields to be like seq_file fields Steven Rostedt
2014-11-05 15:57   ` Petr Mladek
2014-11-05 20:14     ` Steven Rostedt
2014-11-06 14:24       ` Petr Mladek
2014-11-04 15:52 ` [RFC][PATCH 06/12 v3] tracing: Add a seq_buf_clear() helper and clear len and readpos in init Steven Rostedt
2014-11-05 16:00   ` Petr Mladek
2014-11-04 15:52 ` [RFC][PATCH 07/12 v3] tracing: Have seq_buf use full buffer Steven Rostedt
2014-11-05 16:31   ` Petr Mladek
2014-11-05 20:21     ` Steven Rostedt
2014-11-05 21:06       ` Steven Rostedt
2014-11-06 15:31         ` Petr Mladek
2014-11-06 19:24           ` Steven Rostedt
2014-11-07  9:11             ` Petr Mladek
2014-11-07 18:37               ` Steven Rostedt
2014-11-10 18:11                 ` Petr Mladek
2014-11-06 15:13       ` Petr Mladek
2014-11-04 15:52 ` [RFC][PATCH 08/12 v3] tracing: Add seq_buf_get_buf() and seq_buf_commit() helper functions Steven Rostedt
2014-11-05 16:51   ` Petr Mladek
2014-11-05 20:26     ` Steven Rostedt
2014-11-07 18:39     ` Steven Rostedt
2014-11-10 18:33       ` Petr Mladek
2014-11-10 19:23         ` Steven Rostedt
2014-11-04 15:52 ` [RFC][PATCH 09/12 v3] seq_buf: Move the seq_buf code to lib/ Steven Rostedt
2014-11-05 16:57   ` Petr Mladek
2014-11-05 20:32     ` Steven Rostedt
2014-11-04 15:52 ` [RFC][PATCH 10/12 v3] seq-buf: Make seq_buf_bprintf() conditional on CONFIG_BINARY_PRINTF Steven Rostedt
2014-11-05 17:06   ` Petr Mladek
2014-11-05 20:33     ` Steven Rostedt
2014-11-05 20:42       ` Steven Rostedt
2014-11-06 14:39         ` Petr Mladek
2014-11-07 20:36           ` Junio C Hamano
2014-11-07 21:49             ` Steven Rostedt
2014-11-10 18:43             ` Petr Mladek
2014-11-04 15:52 ` [RFC][PATCH 11/12 v3] printk: Add per_cpu printk func to allow printk to be diverted Steven Rostedt
2014-11-06 16:56   ` Petr Mladek
2014-11-04 15:52 ` [RFC][PATCH 12/12 v3] x86/nmi: Perform a safe NMI stack trace on all CPUs Steven Rostedt
2014-11-04 23:05   ` Jiri Kosina
2014-11-04 23:41     ` Steven Rostedt
2014-11-06 18:41   ` Petr Mladek
2014-11-07 18:56     ` Steven Rostedt
2014-11-10 18:58       ` Petr Mladek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141105144553.GE4570@pathway.suse.cz \
    --to=pmladek@suse.cz \
    --cc=akpm@linux-foundation.org \
    --cc=hpa@zytor.com \
    --cc=jkosina@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.