diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2014-12-28 09:27:07 -0500 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-01-25 23:16:27 -0500 |
| commit | f4a4a8b1252a08b60cde66a6622bbca4a7f4af2e (patch) | |
| tree | 883f53870ed0ad1c9a3529e7cbfd009e2189e27f /security | |
| parent | 5e9e2040247ac19a46d6627736ece726c46f1fdf (diff) | |
file->f_path.dentry is pinned down for as long as the file is open...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'security')
| -rw-r--r-- | security/commoncap.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/security/commoncap.c b/security/commoncap.c index 2915d8503054..f66713bd7450 100644 --- a/security/commoncap.c +++ b/security/commoncap.c | |||
| @@ -434,7 +434,6 @@ int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data | |||
| 434 | */ | 434 | */ |
| 435 | static int get_file_caps(struct linux_binprm *bprm, bool *effective, bool *has_cap) | 435 | static int get_file_caps(struct linux_binprm *bprm, bool *effective, bool *has_cap) |
| 436 | { | 436 | { |
| 437 | struct dentry *dentry; | ||
| 438 | int rc = 0; | 437 | int rc = 0; |
| 439 | struct cpu_vfs_cap_data vcaps; | 438 | struct cpu_vfs_cap_data vcaps; |
| 440 | 439 | ||
| @@ -446,9 +445,7 @@ static int get_file_caps(struct linux_binprm *bprm, bool *effective, bool *has_c | |||
| 446 | if (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID) | 445 | if (bprm->file->f_path.mnt->mnt_flags & MNT_NOSUID) |
| 447 | return 0; | 446 | return 0; |
| 448 | 447 | ||
| 449 | dentry = dget(bprm->file->f_path.dentry); | 448 | rc = get_vfs_caps_from_disk(bprm->file->f_path.dentry, &vcaps); |
| 450 | |||
| 451 | rc = get_vfs_caps_from_disk(dentry, &vcaps); | ||
| 452 | if (rc < 0) { | 449 | if (rc < 0) { |
| 453 | if (rc == -EINVAL) | 450 | if (rc == -EINVAL) |
| 454 | printk(KERN_NOTICE "%s: get_vfs_caps_from_disk returned %d for %s\n", | 451 | printk(KERN_NOTICE "%s: get_vfs_caps_from_disk returned %d for %s\n", |
| @@ -464,7 +461,6 @@ static int get_file_caps(struct linux_binprm *bprm, bool *effective, bool *has_c | |||
| 464 | __func__, rc, bprm->filename); | 461 | __func__, rc, bprm->filename); |
| 465 | 462 | ||
| 466 | out: | 463 | out: |
| 467 | dput(dentry); | ||
| 468 | if (rc) | 464 | if (rc) |
| 469 | bprm_clear_caps(bprm); | 465 | bprm_clear_caps(bprm); |
| 470 | 466 | ||
