Loading fs/ocfs2/file.c +2 −4 Original line number Diff line number Diff line Loading @@ -2465,8 +2465,7 @@ static ssize_t ocfs2_file_splice_write(struct pipe_inode_info *pipe, out->f_path.dentry->d_name.len, out->f_path.dentry->d_name.name, len); if (pipe->inode) mutex_lock_nested(&pipe->inode->i_mutex, I_MUTEX_PARENT); pipe_lock(pipe); splice_from_pipe_begin(&sd); do { Loading @@ -2486,8 +2485,7 @@ static ssize_t ocfs2_file_splice_write(struct pipe_inode_info *pipe, } while (ret > 0); splice_from_pipe_end(pipe, &sd); if (pipe->inode) mutex_unlock(&pipe->inode->i_mutex); pipe_unlock(pipe); if (sd.num_spliced) ret = sd.num_spliced; Loading fs/pipe.c +3 −2 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ unsigned int pipe_min_size = PAGE_SIZE; static void pipe_lock_nested(struct pipe_inode_info *pipe, int subclass) { if (pipe->inode) mutex_lock_nested(&pipe->inode->i_mutex, subclass); mutex_lock_nested(&pipe->mutex, subclass); } void pipe_lock(struct pipe_inode_info *pipe) Loading @@ -71,7 +71,7 @@ EXPORT_SYMBOL(pipe_lock); void pipe_unlock(struct pipe_inode_info *pipe) { if (pipe->inode) mutex_unlock(&pipe->inode->i_mutex); mutex_unlock(&pipe->mutex); } EXPORT_SYMBOL(pipe_unlock); Loading Loading @@ -777,6 +777,7 @@ struct pipe_inode_info * alloc_pipe_info(struct inode *inode) pipe->r_counter = pipe->w_counter = 1; pipe->inode = inode; pipe->buffers = PIPE_DEF_BUFFERS; mutex_init(&pipe->mutex); return pipe; } kfree(pipe); Loading include/linux/pipe_fs_i.h +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ struct pipe_buffer { /** * struct pipe_inode_info - a linux kernel pipe * @mutex: mutex protecting the whole thing * @wait: reader/writer wait point in case of empty/full pipe * @nrbufs: the number of non-empty pipe buffers in this pipe * @buffers: total number of buffers (should be a power of 2) Loading @@ -44,6 +45,7 @@ struct pipe_buffer { * @bufs: the circular array of pipe buffers **/ struct pipe_inode_info { struct mutex mutex; wait_queue_head_t wait; unsigned int nrbufs, curbuf, buffers; unsigned int readers; Loading Loading
fs/ocfs2/file.c +2 −4 Original line number Diff line number Diff line Loading @@ -2465,8 +2465,7 @@ static ssize_t ocfs2_file_splice_write(struct pipe_inode_info *pipe, out->f_path.dentry->d_name.len, out->f_path.dentry->d_name.name, len); if (pipe->inode) mutex_lock_nested(&pipe->inode->i_mutex, I_MUTEX_PARENT); pipe_lock(pipe); splice_from_pipe_begin(&sd); do { Loading @@ -2486,8 +2485,7 @@ static ssize_t ocfs2_file_splice_write(struct pipe_inode_info *pipe, } while (ret > 0); splice_from_pipe_end(pipe, &sd); if (pipe->inode) mutex_unlock(&pipe->inode->i_mutex); pipe_unlock(pipe); if (sd.num_spliced) ret = sd.num_spliced; Loading
fs/pipe.c +3 −2 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ unsigned int pipe_min_size = PAGE_SIZE; static void pipe_lock_nested(struct pipe_inode_info *pipe, int subclass) { if (pipe->inode) mutex_lock_nested(&pipe->inode->i_mutex, subclass); mutex_lock_nested(&pipe->mutex, subclass); } void pipe_lock(struct pipe_inode_info *pipe) Loading @@ -71,7 +71,7 @@ EXPORT_SYMBOL(pipe_lock); void pipe_unlock(struct pipe_inode_info *pipe) { if (pipe->inode) mutex_unlock(&pipe->inode->i_mutex); mutex_unlock(&pipe->mutex); } EXPORT_SYMBOL(pipe_unlock); Loading Loading @@ -777,6 +777,7 @@ struct pipe_inode_info * alloc_pipe_info(struct inode *inode) pipe->r_counter = pipe->w_counter = 1; pipe->inode = inode; pipe->buffers = PIPE_DEF_BUFFERS; mutex_init(&pipe->mutex); return pipe; } kfree(pipe); Loading
include/linux/pipe_fs_i.h +2 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ struct pipe_buffer { /** * struct pipe_inode_info - a linux kernel pipe * @mutex: mutex protecting the whole thing * @wait: reader/writer wait point in case of empty/full pipe * @nrbufs: the number of non-empty pipe buffers in this pipe * @buffers: total number of buffers (should be a power of 2) Loading @@ -44,6 +45,7 @@ struct pipe_buffer { * @bufs: the circular array of pipe buffers **/ struct pipe_inode_info { struct mutex mutex; wait_queue_head_t wait; unsigned int nrbufs, curbuf, buffers; unsigned int readers; Loading