• Linus Torvalds's avatar
    Merge branch 'pipe-rework' (patches from David Howells) · da73fcd8
    Linus Torvalds authored
    Merge two fixes for the pipe rework from David Howells:
     "Here are a couple of patches to fix bugs syzbot found in the pipe
      changes:
    
       - An assertion check will sometimes trip when polling a pipe because
         the ring size and indices used are approximate and may be being
         changed simultaneously.
    
         An equivalent approximate calculation was done previously, but
         without the assertion check, so I've just dropped the check. To
         make it accurate, the pipe mutex would need to be taken or the spin
         lock could be used - but usage of the spinlock would need to be
         rolled out into splice, iov_iter and other places for that.
    
       - The index mask and the max_usage values cannot be cached across
         pipe_wait() as F_SETPIPE_SZ could have been called during the wait.
         This can cause pipe_write() to break"
    
    * pipe-rework:
      pipe: Fix missing mask update after pipe_wait()
      pipe: Remove assertion from pipe_poll()
    da73fcd8
pipe.c 29 KB