tree 6afa99cd4d4b6908b1f0efab97ad3665d9654785
parent 9d1f9c73dfcccca7de4a9fdaec40c60c4e5497a4
parent 07906da78810dce5fd35b9449358c9208c693dca
author Linus Torvalds <torvalds@linux-foundation.org> 1415829749 -0800
committer Linus Torvalds <torvalds@linux-foundation.org> 1415829749 -0800
mergetag object 07906da78810dce5fd35b9449358c9208c693dca
 type commit
 tag trace-fixes-v3.18-rc4
 tagger Steven Rostedt <rostedt@goodmis.org> 1415710647 -0500
 
 Rabin Vincent found a way that tracing could cause an infinite loop
 in the kernel. The splice logic wants a full page from the ring buffer
 but the ring_buffer_wait() returns when there's any data in the ring buffer.
 The splice code would then continue the loop waiting for a full page.
 But if a full page never happens, the splice code will never sleep and
 just continue to loop.
 
 There's another case that Rabin fixed that could loop if there's no memory
 and kmalloc() constantly returns NULL.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQEcBAABAgAGBQJUYgiFAAoJEEjnJuOKh9ldRuoIAMHOx/TgIYSPuVQBWuljoELZ
 Mbaq5EGPkJ0fdwP9+X3JPG7pFazcP8+xZx7iVKYihazgS7BkF/khbxsgPl5ZSGOf
 j39kSoWK1ZzKIbM3MMjIBgZ2LF8wL1VoRu/dyI7GXWeBt9Dnj7vDtkoSGCYjDJ9B
 UBK2E3vjwNxc4Z9U3YRZj7U4GEKwMkpddKv0DIfAmzA4tF1CryuGmvpkRtGi6wc0
 vs6OV1jqFa300v8ckFvTrO/UdBVnisVWHmBrP6XXB/Likz/6+56pphCRvoc/LskG
 kFHCsjXXJ/tI+/RdhQt/dqgKDl7Cs3nIhXwMZ/TbaxGdFT6kbq3xbVpRk1L90/U=
 =v5/I
 -----END PGP SIGNATURE-----

Merge tag 'trace-fixes-v3.18-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace

Pull tracing fix from Steven Rostedt:
 "Rabin Vincent found a way that tracing could cause an infinite loop in
  the kernel.  The splice logic wants a full page from the ring buffer
  but the ring_buffer_wait() returns when there's any data in the ring
  buffer.  The splice code would then continue the loop waiting for a
  full page.  But if a full page never happens, the splice code will
  never sleep and just continue to loop.

  There's another case that Rabin fixed that could loop if there's no
  memory and kmalloc() constantly returns NULL"

* tag 'trace-fixes-v3.18-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
  tracing: Do not risk busy looping in buffer splice
  tracing: Do not busy wait in buffer splice
