forked from luck/tmp_suning_uos_patched
udf: Ignore [ug]id=ignore mount options
Currently uid=ignore and gid=ignore make no sense without uid=<number>
and gid=<number> respectively as they result in all files having invalid
uid / gid which then doesn't allow even root to modify files and thus
causes confusion. And since commit ca76d2d803
"UDF: fix UID and GID
mount option ignorance" (from over 10 years ago) uid=<number> overrides
all uids on disk as uid=ignore does. So just silently ignore uid=ignore
mount option.
Reviewed-by: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
7b78fd02fb
commit
70260e4475
|
@ -1402,13 +1402,11 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode)
|
|||
read_lock(&sbi->s_cred_lock);
|
||||
i_uid_write(inode, le32_to_cpu(fe->uid));
|
||||
if (!uid_valid(inode->i_uid) ||
|
||||
UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_UID_IGNORE) ||
|
||||
UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_UID_SET))
|
||||
inode->i_uid = UDF_SB(inode->i_sb)->s_uid;
|
||||
|
||||
i_gid_write(inode, le32_to_cpu(fe->gid));
|
||||
if (!gid_valid(inode->i_gid) ||
|
||||
UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_GID_IGNORE) ||
|
||||
UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_GID_SET))
|
||||
inode->i_gid = UDF_SB(inode->i_sb)->s_gid;
|
||||
|
||||
|
|
|
@ -348,12 +348,8 @@ static int udf_show_options(struct seq_file *seq, struct dentry *root)
|
|||
seq_puts(seq, ",shortad");
|
||||
if (UDF_QUERY_FLAG(sb, UDF_FLAG_UID_FORGET))
|
||||
seq_puts(seq, ",uid=forget");
|
||||
if (UDF_QUERY_FLAG(sb, UDF_FLAG_UID_IGNORE))
|
||||
seq_puts(seq, ",uid=ignore");
|
||||
if (UDF_QUERY_FLAG(sb, UDF_FLAG_GID_FORGET))
|
||||
seq_puts(seq, ",gid=forget");
|
||||
if (UDF_QUERY_FLAG(sb, UDF_FLAG_GID_IGNORE))
|
||||
seq_puts(seq, ",gid=ignore");
|
||||
if (UDF_QUERY_FLAG(sb, UDF_FLAG_UID_SET))
|
||||
seq_printf(seq, ",uid=%u", from_kuid(&init_user_ns, sbi->s_uid));
|
||||
if (UDF_QUERY_FLAG(sb, UDF_FLAG_GID_SET))
|
||||
|
@ -609,14 +605,12 @@ static int udf_parse_options(char *options, struct udf_options *uopt,
|
|||
uopt->flags |= (1 << UDF_FLAG_NLS_MAP);
|
||||
break;
|
||||
#endif
|
||||
case Opt_uignore:
|
||||
uopt->flags |= (1 << UDF_FLAG_UID_IGNORE);
|
||||
break;
|
||||
case Opt_uforget:
|
||||
uopt->flags |= (1 << UDF_FLAG_UID_FORGET);
|
||||
break;
|
||||
case Opt_uignore:
|
||||
case Opt_gignore:
|
||||
uopt->flags |= (1 << UDF_FLAG_GID_IGNORE);
|
||||
/* These options are superseeded by uid=<number> */
|
||||
break;
|
||||
case Opt_gforget:
|
||||
uopt->flags |= (1 << UDF_FLAG_GID_FORGET);
|
||||
|
|
|
@ -23,14 +23,12 @@
|
|||
#define UDF_FLAG_NLS_MAP 9
|
||||
#define UDF_FLAG_UTF8 10
|
||||
#define UDF_FLAG_UID_FORGET 11 /* save -1 for uid to disk */
|
||||
#define UDF_FLAG_UID_IGNORE 12 /* use sb uid instead of on disk uid */
|
||||
#define UDF_FLAG_GID_FORGET 13
|
||||
#define UDF_FLAG_GID_IGNORE 14
|
||||
#define UDF_FLAG_UID_SET 15
|
||||
#define UDF_FLAG_GID_SET 16
|
||||
#define UDF_FLAG_SESSION_SET 17
|
||||
#define UDF_FLAG_LASTBLOCK_SET 18
|
||||
#define UDF_FLAG_BLOCKSIZE_SET 19
|
||||
#define UDF_FLAG_GID_FORGET 12
|
||||
#define UDF_FLAG_UID_SET 13
|
||||
#define UDF_FLAG_GID_SET 14
|
||||
#define UDF_FLAG_SESSION_SET 15
|
||||
#define UDF_FLAG_LASTBLOCK_SET 16
|
||||
#define UDF_FLAG_BLOCKSIZE_SET 17
|
||||
|
||||
#define UDF_PART_FLAG_UNALLOC_BITMAP 0x0001
|
||||
#define UDF_PART_FLAG_UNALLOC_TABLE 0x0002
|
||||
|
|
Loading…
Reference in New Issue
Block a user