linux/fs/jfs
Ernesto A. Fernández 10527cf5f3 jfs: preserve i_mode if __jfs_set_acl() fails
commit f070e5ac9b upstream.

When changing a file's acl mask, __jfs_set_acl() will first set the group
bits of i_mode to the value of the mask, and only then set the actual
extended attribute representing the new acl.

If the second part fails (due to lack of space, for example) and the file
had no acl attribute to begin with, the system will from now on assume
that the mask permission bits are actual group permission bits, potentially
granting access to the wrong users.

Prevent this by only changing the inode mode after the acl has been set.

Signed-off-by: Ernesto A. Fernández <ernesto.mnd.fernandez@gmail.com>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
[bwh: Backported to 3.16: keep using CURRENT_TIME]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2017-10-12 15:28:08 +01:00
..
acl.c jfs: preserve i_mode if __jfs_set_acl() fails 2017-10-12 15:28:08 +01:00
endian24.h JFS: Whitespace cleanup and remove some dead code 2007-06-06 15:28:35 -05:00
file.c fs: Give dentry to inode_change_ok() instead of inode 2017-02-23 03:53:52 +00:00
inode.c switch {__,}blockdev_direct_IO() to iov_iter 2014-05-06 17:32:46 -04:00
ioctl.c new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
jfs_acl.h jfs: use generic posix ACL infrastructure 2014-01-25 23:58:22 -05:00
jfs_btree.h JFS: White space cleanup 2006-10-02 09:55:27 -05:00
jfs_debug.c proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
jfs_debug.h JFS: switch to seq_files 2008-05-13 08:22:10 -05:00
jfs_dinode.h BKL-removal: Implement a compat_ioctl handler for JFS 2008-02-07 13:45:29 -06:00
jfs_discard.c jfs: Fix FITRIM argument handling 2012-10-17 09:18:38 -05:00
jfs_discard.h fs/jfs: TRIM support for JFS Filesystem 2012-09-17 11:58:19 -05:00
jfs_dmap.c fs/jfs/jfs_dmap.c: replace min/casting by min_t 2014-06-03 14:14:00 -05:00
jfs_dmap.h fs/jfs: TRIM support for JFS Filesystem 2012-09-17 11:58:19 -05:00
jfs_dtree.c jfs: fix readdir cookie incompatibility with NFSv4 2013-08-15 17:22:29 -05:00
jfs_dtree.h [readdir] convert jfs 2013-06-29 12:56:42 +04:00
jfs_extent.c jfs: Update jfs_error 2013-06-05 14:47:19 -05:00
jfs_extent.h JFS: White space cleanup 2006-10-02 09:55:27 -05:00
jfs_filsys.h fs/jfs: TRIM support for JFS Filesystem 2012-09-17 11:58:19 -05:00
jfs_imap.c jfs: Update jfs_error 2013-06-05 14:47:19 -05:00
jfs_imap.h JFS: Whitespace cleanup and remove some dead code 2007-06-06 15:28:35 -05:00
jfs_incore.h JFS TRIM support and some minor fixes 2012-10-03 08:48:21 -07:00
jfs_inode.c fs/jfs/jfs_inode.c: atomically set inode->i_flags 2014-04-14 12:56:14 -05:00
jfs_inode.h fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers 2011-07-20 20:47:59 -04:00
jfs_lock.h JFS: use __set_current_state() 2007-04-26 07:30:29 -05:00
jfs_logmgr.c fs/jfs/jfs_logmgr.c: remove NULL assignment on static 2014-06-03 14:13:58 -05:00
jfs_logmgr.h Fix common misspellings 2011-03-31 11:26:23 -03:00
jfs_metapage.c block: Abstract out bvec iterator 2013-11-23 22:33:47 -08:00
jfs_metapage.h Fix common misspellings 2011-03-31 11:26:23 -03:00
jfs_mount.c fix printk typo 'faild' 2010-08-09 11:25:17 +02:00
jfs_superblock.h jfs: Update jfs_error 2013-06-05 14:47:19 -05:00
jfs_txnmgr.c jfs: Update jfs_error 2013-06-05 14:47:19 -05:00
jfs_txnmgr.h JFS: Whitespace cleanup and remove some dead code 2007-06-06 15:28:35 -05:00
jfs_types.h jfs: remove xtLookupList() 2009-01-09 15:42:04 -06:00
jfs_umount.c jfs: flush journal completely before releasing metadata inodes 2011-08-01 12:41:00 -05:00
jfs_unicode.c JFS: White space cleanup 2006-10-02 09:55:27 -05:00
jfs_unicode.h include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
jfs_uniupr.c JFS: White space cleanup 2006-10-02 09:55:27 -05:00
jfs_xattr.h jfs: use generic posix ACL infrastructure 2014-01-25 23:58:22 -05:00
jfs_xtree.c jfs: Update jfs_error 2013-06-05 14:47:19 -05:00
jfs_xtree.h jfs: remove xtLookupList() 2009-01-09 15:42:04 -06:00
Kconfig jfs: needs crc32_le 2009-02-02 13:43:28 -06:00
Makefile fs/jfs: TRIM support for JFS Filesystem 2012-09-17 11:58:19 -05:00
namei.c jfs: use generic posix ACL infrastructure 2014-01-25 23:58:22 -05:00
resize.c jfs: Update jfs_error 2013-06-05 14:47:19 -05:00
super.c fs/jfs/super.c: convert simple_str to kstr 2014-06-03 14:14:00 -05:00
symlink.c jfs: add jfs specific ->setattr call 2010-04-16 08:05:50 -05:00
xattr.c jfs: fix generic posix ACL regression 2014-02-08 10:50:58 -06:00