fs/pipe.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/fs/pipe.c b/fs/pipe.c index d2c45e14e6d8..719214ed5e5e 100644 --- a/fs/pipe.c +++ b/fs/pipe.c @@ -56,8 +56,8 @@ unsigned int pipe_min_size = PAGE_SIZE; static void pipe_lock_nested(struct pipe_inode_info *pipe, int subclass) { - if (pipe->files) - mutex_lock_nested(&pipe->mutex, subclass); + WARN_ON_ONCE(!pipe->files); + mutex_lock_nested(&pipe->mutex, subclass); } void pipe_lock(struct pipe_inode_info *pipe) @@ -71,8 +71,8 @@ EXPORT_SYMBOL(pipe_lock); void pipe_unlock(struct pipe_inode_info *pipe) { - if (pipe->files) - mutex_unlock(&pipe->mutex); + WARN_ON_ONCE(!pipe->files); + mutex_unlock(&pipe->mutex); } EXPORT_SYMBOL(pipe_unlock); @@ -729,9 +729,10 @@ pipe_poll(struct file *filp, poll_table *wait) static int pipe_release(struct inode *inode, struct file *file) { - struct pipe_inode_info *pipe = inode->i_pipe; + struct pipe_inode_info *pipe = file->private_data; int kill = 0; + file->private_data = NULL; __pipe_lock(pipe); if (file->f_mode & FMODE_READ) pipe->readers--;