diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/open.c | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -485,14 +485,13 @@ out_unlock: | |||
485 | 485 | ||
486 | SYSCALL_DEFINE2(fchmod, unsigned int, fd, umode_t, mode) | 486 | SYSCALL_DEFINE2(fchmod, unsigned int, fd, umode_t, mode) |
487 | { | 487 | { |
488 | struct file * file; | 488 | struct fd f = fdget(fd); |
489 | int err = -EBADF; | 489 | int err = -EBADF; |
490 | 490 | ||
491 | file = fget(fd); | 491 | if (f.file) { |
492 | if (file) { | 492 | audit_inode(NULL, f.file->f_path.dentry, 0); |
493 | audit_inode(NULL, file->f_path.dentry, 0); | 493 | err = chmod_common(&f.file->f_path, mode); |
494 | err = chmod_common(&file->f_path, mode); | 494 | fdput(f); |
495 | fput(file); | ||
496 | } | 495 | } |
497 | return err; | 496 | return err; |
498 | } | 497 | } |