Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

udf: propagate umode_t

note re mount options: fmask and dmask are explicitly truncated to 12bit,
UDF_INVALID_MODE just needs to be guaranteed to differ from any such value.
And umask is used only in &= with umode_t, so we ignore other bits anyway.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro faa17292 541af6a0

+15 -15
+1 -1
fs/udf/ialloc.c
··· 46 46 udf_free_blocks(sb, NULL, &UDF_I(inode)->i_location, 0, 1); 47 47 } 48 48 49 - struct inode *udf_new_inode(struct inode *dir, int mode, int *err) 49 + struct inode *udf_new_inode(struct inode *dir, umode_t mode, int *err) 50 50 { 51 51 struct super_block *sb = dir->i_sb; 52 52 struct udf_sb_info *sbi = UDF_SB(sb);
+3 -3
fs/udf/inode.c
··· 48 48 49 49 #define EXTENT_MERGE_SIZE 5 50 50 51 - static mode_t udf_convert_permissions(struct fileEntry *); 51 + static umode_t udf_convert_permissions(struct fileEntry *); 52 52 static int udf_update_inode(struct inode *, int); 53 53 static void udf_fill_inode(struct inode *, struct buffer_head *); 54 54 static int udf_sync_inode(struct inode *inode); ··· 1452 1452 return 0; 1453 1453 } 1454 1454 1455 - static mode_t udf_convert_permissions(struct fileEntry *fe) 1455 + static umode_t udf_convert_permissions(struct fileEntry *fe) 1456 1456 { 1457 - mode_t mode; 1457 + umode_t mode; 1458 1458 uint32_t permissions; 1459 1459 uint32_t flags; 1460 1460
+6 -6
fs/udf/super.c
··· 195 195 unsigned int fileset; 196 196 unsigned int rootdir; 197 197 unsigned int flags; 198 - mode_t umask; 198 + umode_t umask; 199 199 gid_t gid; 200 200 uid_t uid; 201 - mode_t fmode; 202 - mode_t dmode; 201 + umode_t fmode; 202 + umode_t dmode; 203 203 struct nls_table *nls_map; 204 204 }; 205 205 ··· 279 279 if (UDF_QUERY_FLAG(sb, UDF_FLAG_GID_SET)) 280 280 seq_printf(seq, ",gid=%u", sbi->s_gid); 281 281 if (sbi->s_umask != 0) 282 - seq_printf(seq, ",umask=%o", sbi->s_umask); 282 + seq_printf(seq, ",umask=%ho", sbi->s_umask); 283 283 if (sbi->s_fmode != UDF_INVALID_MODE) 284 - seq_printf(seq, ",mode=%o", sbi->s_fmode); 284 + seq_printf(seq, ",mode=%ho", sbi->s_fmode); 285 285 if (sbi->s_dmode != UDF_INVALID_MODE) 286 - seq_printf(seq, ",dmode=%o", sbi->s_dmode); 286 + seq_printf(seq, ",dmode=%ho", sbi->s_dmode); 287 287 if (UDF_QUERY_FLAG(sb, UDF_FLAG_SESSION_SET)) 288 288 seq_printf(seq, ",session=%u", sbi->s_session); 289 289 if (UDF_QUERY_FLAG(sb, UDF_FLAG_LASTBLOCK_SET))
+4 -4
fs/udf/udf_sb.h
··· 50 50 #define UDF_SPARABLE_MAP15 0x1522U 51 51 #define UDF_METADATA_MAP25 0x2511U 52 52 53 - #define UDF_INVALID_MODE ((mode_t)-1) 53 + #define UDF_INVALID_MODE ((umode_t)-1) 54 54 55 55 #pragma pack(1) /* XXX(hch): Why? This file just defines in-core structures */ 56 56 ··· 127 127 struct buffer_head *s_lvid_bh; 128 128 129 129 /* Default permissions */ 130 - mode_t s_umask; 130 + umode_t s_umask; 131 131 gid_t s_gid; 132 132 uid_t s_uid; 133 - mode_t s_fmode; 134 - mode_t s_dmode; 133 + umode_t s_fmode; 134 + umode_t s_dmode; 135 135 /* Lock protecting consistency of above permission settings */ 136 136 rwlock_t s_cred_lock; 137 137
+1 -1
fs/udf/udfdecl.h
··· 215 215 216 216 /* ialloc.c */ 217 217 extern void udf_free_inode(struct inode *); 218 - extern struct inode *udf_new_inode(struct inode *, int, int *); 218 + extern struct inode *udf_new_inode(struct inode *, umode_t, int *); 219 219 220 220 /* truncate.c */ 221 221 extern void udf_truncate_tail_extent(struct inode *);