OSDN Git Service

libext2: Fix EXT2_LIB_SOFTSUPP masking
authorEric Sandeen <sandeen@redhat.com>
Fri, 16 Sep 2011 20:49:16 +0000 (15:49 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 16 Sep 2011 22:43:04 +0000 (18:43 -0400)
EXT2_LIB_SOFTSUPP_INCOMPAT_* are supposed to be bitmasks
of features which can be opened even though they are
under development.  The intent is that these are masked
out of the features list, so that they will be ignored
on open.

However, the code does a logical not vs. a bitwise not:

features &= !EXT2_LIB_SOFTSUPP_INCOMPAT;

which will not have the desired effect...

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
lib/ext2fs/openfs.c

index b13db77..0b4df38 100644 (file)
@@ -214,7 +214,7 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
                features = fs->super->s_feature_incompat;
 #ifdef EXT2_LIB_SOFTSUPP_INCOMPAT
                if (flags & EXT2_FLAG_SOFTSUPP_FEATURES)
-                       features &= !EXT2_LIB_SOFTSUPP_INCOMPAT;
+                       features &= ~EXT2_LIB_SOFTSUPP_INCOMPAT;
 #endif
                if (features & ~EXT2_LIB_FEATURE_INCOMPAT_SUPP) {
                        retval = EXT2_ET_UNSUPP_FEATURE;
@@ -224,7 +224,7 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
                features = fs->super->s_feature_ro_compat;
 #ifdef EXT2_LIB_SOFTSUPP_RO_COMPAT
                if (flags & EXT2_FLAG_SOFTSUPP_FEATURES)
-                       features &= !EXT2_LIB_SOFTSUPP_RO_COMPAT;
+                       features &= ~EXT2_LIB_SOFTSUPP_RO_COMPAT;
 #endif
                if ((flags & EXT2_FLAG_RW) &&
                    (features & ~EXT2_LIB_FEATURE_RO_COMPAT_SUPP)) {