udf: Ignore [ug]id=ignore mount options
authorJan Kara <jack@suse.cz>
Wed, 21 Feb 2018 16:27:44 +0000 (17:27 +0100)
committerJan Kara <jack@suse.cz>
Tue, 27 Feb 2018 09:25:33 +0000 (10:25 +0100)
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 ca76d2d8031f "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>
fs/udf/inode.c
fs/udf/super.c
fs/udf/udf_sb.h

index c23744d5ae5c44d61c5f00201118d2d28b657bbf..9021c15cec17478a9fbff806fddb5caa6e61e9b3 100644 (file)
@@ -1402,13 +1402,11 @@ reread:
        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;
 
index 28ee2ac2503d17a9042275a925488da8bc4e623c..4d671be50059dec46ea088c151fc8ecba11a5380 100644 (file)
@@ -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);
index 68c9f1d618f5b3ee4a00dd44a9876b098b1b2498..9dcb475fc74e04238218dae1284d7a3eaf68ad51 100644 (file)
 #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