Skip to content

Commit

Permalink
file->f_path.dentry is pinned down for as long as the file is open...
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Jan 26, 2015
1 parent 5e9e204 commit f4a4a8b
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 9 deletions.
5 changes: 1 addition & 4 deletions kernel/auditsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -2405,7 +2405,6 @@ int __audit_log_bprm_fcaps(struct linux_binprm *bprm,
struct audit_aux_data_bprm_fcaps *ax;
struct audit_context *context = current->audit_context;
struct cpu_vfs_cap_data vcaps;
struct dentry *dentry;

ax = kmalloc(sizeof(*ax), GFP_KERNEL);
if (!ax)
Expand All @@ -2415,9 +2414,7 @@ int __audit_log_bprm_fcaps(struct linux_binprm *bprm,
ax->d.next = context->aux;
context->aux = (void *)ax;

dentry = dget(bprm->file->f_path.dentry);
get_vfs_caps_from_disk(dentry, &vcaps);
dput(dentry);
get_vfs_caps_from_disk(bprm->file->f_path.dentry, &vcaps);

ax->fcap.permitted = vcaps.permitted;
ax->fcap.inheritable = vcaps.inheritable;
Expand Down
6 changes: 1 addition & 5 deletions security/commoncap.c
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,6 @@ int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data
*/
static int get_file_caps(struct linux_binprm *bprm, bool *effective, bool *has_cap)
{
struct dentry *dentry;
int rc = 0;
struct cpu_vfs_cap_data vcaps;

Expand All @@ -446,9 +445,7 @@ static int get_file_caps(struct linux_binprm *bprm, bool *effective, bool *has_c
if (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID)
return 0;

dentry = dget(bprm->file->f_path.dentry);

rc = get_vfs_caps_from_disk(dentry, &vcaps);
rc = get_vfs_caps_from_disk(bprm->file->f_path.dentry, &vcaps);
if (rc < 0) {
if (rc == -EINVAL)
printk(KERN_NOTICE "%s: get_vfs_caps_from_disk returned %d for %s\n",
Expand All @@ -464,7 +461,6 @@ static int get_file_caps(struct linux_binprm *bprm, bool *effective, bool *has_c
__func__, rc, bprm->filename);

out:
dput(dentry);
if (rc)
bprm_clear_caps(bprm);

Expand Down

0 comments on commit f4a4a8b

Please sign in to comment.