Loading fs/pipe.c +8 −26 Original line number Diff line number Diff line Loading @@ -744,32 +744,24 @@ static struct inode * get_pipe_inode(void) int create_pipe_files(struct file **res, int flags) { int err; struct inode *inode = get_pipe_inode(); struct file *f; struct path path; if (!inode) return -ENFILE; err = -ENOMEM; path.dentry = d_alloc_pseudo(pipe_mnt->mnt_sb, &empty_name); if (!path.dentry) goto err_inode; path.mnt = mntget(pipe_mnt); d_instantiate(path.dentry, inode); f = alloc_file(&path, O_WRONLY | (flags & (O_NONBLOCK | O_DIRECT)), f = alloc_file_pseudo(inode, pipe_mnt, "", O_WRONLY | (flags & (O_NONBLOCK | O_DIRECT)), &pipefifo_fops); if (IS_ERR(f)) { err = PTR_ERR(f); goto err_dentry; free_pipe_info(inode->i_pipe); iput(inode); return PTR_ERR(f); } f->private_data = inode->i_pipe; res[0] = alloc_file(&path, O_RDONLY | (flags & O_NONBLOCK), res[0] = alloc_file(&f->f_path, O_RDONLY | (flags & O_NONBLOCK), &pipefifo_fops); if (IS_ERR(res[0])) { put_pipe_info(inode, inode->i_pipe); Loading @@ -777,20 +769,10 @@ int create_pipe_files(struct file **res, int flags) return PTR_ERR(res[0]); } path_get(&path); path_get(&f->f_path); res[0]->private_data = inode->i_pipe; res[1] = f; return 0; err_dentry: free_pipe_info(inode->i_pipe); path_put(&path); return err; err_inode: free_pipe_info(inode->i_pipe); iput(inode); return err; } static int __do_pipe_flags(int *fd, struct file **files, int flags) Loading Loading
fs/pipe.c +8 −26 Original line number Diff line number Diff line Loading @@ -744,32 +744,24 @@ static struct inode * get_pipe_inode(void) int create_pipe_files(struct file **res, int flags) { int err; struct inode *inode = get_pipe_inode(); struct file *f; struct path path; if (!inode) return -ENFILE; err = -ENOMEM; path.dentry = d_alloc_pseudo(pipe_mnt->mnt_sb, &empty_name); if (!path.dentry) goto err_inode; path.mnt = mntget(pipe_mnt); d_instantiate(path.dentry, inode); f = alloc_file(&path, O_WRONLY | (flags & (O_NONBLOCK | O_DIRECT)), f = alloc_file_pseudo(inode, pipe_mnt, "", O_WRONLY | (flags & (O_NONBLOCK | O_DIRECT)), &pipefifo_fops); if (IS_ERR(f)) { err = PTR_ERR(f); goto err_dentry; free_pipe_info(inode->i_pipe); iput(inode); return PTR_ERR(f); } f->private_data = inode->i_pipe; res[0] = alloc_file(&path, O_RDONLY | (flags & O_NONBLOCK), res[0] = alloc_file(&f->f_path, O_RDONLY | (flags & O_NONBLOCK), &pipefifo_fops); if (IS_ERR(res[0])) { put_pipe_info(inode, inode->i_pipe); Loading @@ -777,20 +769,10 @@ int create_pipe_files(struct file **res, int flags) return PTR_ERR(res[0]); } path_get(&path); path_get(&f->f_path); res[0]->private_data = inode->i_pipe; res[1] = f; return 0; err_dentry: free_pipe_info(inode->i_pipe); path_put(&path); return err; err_inode: free_pipe_info(inode->i_pipe); iput(inode); return err; } static int __do_pipe_flags(int *fd, struct file **files, int flags) Loading