Merge tag 'trace-v5.1-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 26 Apr 2019 18:09:55 +0000 (11:09 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 26 Apr 2019 18:09:55 +0000 (11:09 -0700)
Pull tracing fixes from Steven Rostedt:
 "Three tracing fixes:

   - Use "nosteal" for ring buffer splice pages

   - Memory leak fix in error path of trace_pid_write()

   - Fix preempt_enable_no_resched() (use preempt_enable()) in ring
     buffer code"

* tag 'trace-v5.1-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
  trace: Fix preempt_enable_no_resched() abuse
  tracing: Fix a memory leak by early error exit in trace_pid_write()
  tracing: Fix buffer_ref pipe ops

1  2 
fs/splice.c
include/linux/pipe_fs_i.h
kernel/trace/trace.c

diff --cc fs/splice.c
Simple merge
index abb2dac3da9b9cf69b477c2d3726e019a0352b7a,a830e9a00eb9297bef42b505e2b07071af40dcf6..5c626fdc10dbd27d6f87f290cf5dbd50d0244528
@@@ -173,9 -171,10 +173,10 @@@ struct pipe_inode_info *alloc_pipe_info
  void free_pipe_info(struct pipe_inode_info *);
  
  /* Generic pipe buffer ops functions */
 -void generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *);
 +bool generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *);
  int generic_pipe_buf_confirm(struct pipe_inode_info *, struct pipe_buffer *);
  int generic_pipe_buf_steal(struct pipe_inode_info *, struct pipe_buffer *);
+ int generic_pipe_buf_nosteal(struct pipe_inode_info *, struct pipe_buffer *);
  void generic_pipe_buf_release(struct pipe_inode_info *, struct pipe_buffer *);
  void pipe_buf_mark_unmergeable(struct pipe_buffer *buf);
  
index 6c24755655c752a3bf9f4bb914ddb251d9ab0d2e,46f68fad637393fc589a62c27f3b56ad216ca367..ca1ee656d6d852952670b0e63fd19f7499c679a6
@@@ -7046,11 -7053,7 +7053,11 @@@ static bool buffer_pipe_buf_get(struct 
  {
        struct buffer_ref *ref = (struct buffer_ref *)buf->private;
  
-       if (ref->ref > INT_MAX/2)
++      if (refcount_read(&ref->refcount) > INT_MAX/2)
 +              return false;
 +
-       ref->ref++;
+       refcount_inc(&ref->refcount);
 +      return true;
  }
  
  /* Pipe buffer operations for a buffer. */