projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband
[powerpc.git]
/
fs
/
pipe.c
diff --git
a/fs/pipe.c
b/fs/pipe.c
index
9a06e8e
..
ebafde7
100644
(file)
--- a/
fs/pipe.c
+++ b/
fs/pipe.c
@@
-16,6
+16,7
@@
#include <linux/uio.h>
#include <linux/highmem.h>
#include <linux/pagemap.h>
#include <linux/uio.h>
#include <linux/highmem.h>
#include <linux/pagemap.h>
+#include <linux/audit.h>
#include <asm/uaccess.h>
#include <asm/ioctls.h>
#include <asm/uaccess.h>
#include <asm/ioctls.h>
@@
-935,8
+936,9
@@
struct file *create_write_pipe(void)
void free_write_pipe(struct file *f)
{
void free_write_pipe(struct file *f)
{
-
mntput(f->f_path.mnt
);
+
free_pipe_info(f->f_dentry->d_inode
);
dput(f->f_path.dentry);
dput(f->f_path.dentry);
+ mntput(f->f_path.mnt);
put_filp(f);
}
put_filp(f);
}
@@
-984,6
+986,10
@@
int do_pipe(int *fd)
goto err_fdr;
fdw = error;
goto err_fdr;
fdw = error;
+ error = audit_fd_pair(fdr, fdw);
+ if (error < 0)
+ goto err_fdw;
+
fd_install(fdr, fr);
fd_install(fdw, fw);
fd[0] = fdr;
fd_install(fdr, fr);
fd_install(fdw, fw);
fd[0] = fdr;
@@
-991,9
+997,13
@@
int do_pipe(int *fd)
return 0;
return 0;
+ err_fdw:
+ put_unused_fd(fdw);
err_fdr:
put_unused_fd(fdr);
err_read_pipe:
err_fdr:
put_unused_fd(fdr);
err_read_pipe:
+ dput(fr->f_dentry);
+ mntput(fr->f_vfsmnt);
put_filp(fr);
err_write_pipe:
free_write_pipe(fw);
put_filp(fr);
err_write_pipe:
free_write_pipe(fw);