14 Feb, 2015

1 commit

  • printk and friends can now format bitmaps using '%*pb[l]'. cpumask
    and nodemask also provide cpumask_pr_args() and nodemask_pr_args()
    respectively which can be used to generate the two printf arguments
    necessary to format the specified cpu/nodemask.

    Signed-off-by: Tejun Heo
    Cc: Steven Rostedt
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     

20 Nov, 2014

5 commits

  • As the seq_buf->len will soon be +1 size when there's an overflow, we
    must use trace_seq_used() or seq_buf_used() methods to get the real
    length. This will prevent buffer overflow issues if just the len
    of the seq_buf descriptor is used to copy memory.

    Link: http://lkml.kernel.org/r/20141114121911.09ba3d38@gandalf.local.home

    Reported-by: Petr Mladek
    Signed-off-by: Steven Rostedt

    Steven Rostedt (Red Hat)
     
  • 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.

    Link: http://lkml.kernel.org/r/20141104160222.048795666@goodmis.org
    Link: http://lkml.kernel.org/r/20141114011412.338523371@goodmis.org

    Tested-by: Jiri Kosina
    Acked-by: Jiri Kosina
    Reviewed-by: Petr Mladek
    Signed-off-by: Steven Rostedt

    Steven Rostedt (Red Hat)
     
  • Create a seq_buf layer that trace_seq sits on. The seq_buf will not
    be limited to page size. This will allow other usages of seq_buf
    instead of a hard set PAGE_SIZE one that trace_seq has.

    Link: http://lkml.kernel.org/r/20141104160221.864997179@goodmis.org
    Link: http://lkml.kernel.org/r/20141114011412.170377300@goodmis.org

    Tested-by: Jiri Kosina
    Acked-by: Jiri Kosina
    Reviewed-by: Petr Mladek
    Signed-off-by: Steven Rostedt

    Steven Rostedt (Red Hat)
     
  • The trace_seq_printf() and friends are used to store strings into a buffer
    that can be passed around from function to function. If the trace_seq buffer
    fills up, it will not print any more. The return values were somewhat
    inconsistant and using trace_seq_has_overflowed() was a better way to know
    if the write to the trace_seq buffer succeeded or not.

    Now that all users have removed reading the return value of the printf()
    type functions, they can safely return void and keep future users of them
    from reading the inconsistent values as well.

    Link: http://lkml.kernel.org/r/20141114011411.992510720@goodmis.org

    Signed-off-by: Steven Rostedt

    Steven Rostedt (Red Hat)
     
  • In trace_seq_bitmask() it calls bitmap_scnprintf() not from the current
    position of the trace_seq buffer (s->buffer + s->len), but instead from
    the beginning of the buffer (s->buffer).

    Luckily, the only user of this "ipi_raise tracepoint" uses it as the
    first parameter, and as such, the start of the temp buffer in
    include/trace/ftrace.h (see __get_bitmask()).

    Reported-by: Petr Mladek
    Reviewed-by: Petr Mladek
    Signed-off-by: Steven Rostedt

    Steven Rostedt (Red Hat)
     

01 Jul, 2014

4 commits

  • trace_seq_reserve() has no users in the kernel, it just wastes space.
    Remove it.

    Cc: Eduard - Gabriel Munteanu
    Signed-off-by: Steven Rostedt

    Steven Rostedt (Red Hat)
     
  • Currently trace_seq_putmem_hex() can only take as a parameter a pointer
    to something that is 8 bytes or less, otherwise it will overflow the
    buffer. This is protected by a macro that encompasses the call to
    trace_seq_putmem_hex() that has a BUILD_BUG_ON() for the variable before
    it is passed in. This is not very robust and if trace_seq_putmem_hex() ever
    gets used outside that macro it will cause issues.

    Instead of only being able to produce a hex output of memory that is for
    a single word, change it to be more robust and allow any size input.

    Signed-off-by: Steven Rostedt

    Steven Rostedt (Red Hat)
     
  • For using trace_seq_*() functions in NMI context, I posted a patch to move
    it to the lib/ directory. This caused Andrew Morton to take a look at the code.
    He went through and gave a lot of comments about missing kernel doc,
    inconsistent types for the save variable, mix match of EXPORT_SYMBOL_GPL()
    and EXPORT_SYMBOL() as well as missing EXPORT_SYMBOL*()s. There were
    a few comments about the way variables were being compared (int vs uint).

    All these were good review comments and should be implemented regardless of
    if trace_seq.c should be moved to lib/ or not.

    Signed-off-by: Steven Rostedt

    Steven Rostedt (Red Hat)
     
  • The trace_seq_*() functions are a nice utility that allows users to manipulate
    buffers with printf() like formats. It has its own trace_seq.h header in
    include/linux and should be in its own file. Being tied with trace_output.c
    is rather awkward.

    Signed-off-by: Steven Rostedt

    Steven Rostedt (Red Hat)