lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 14 Jan 2019 11:25:06 +0100
From:   Geert Uytterhoeven <geert@...ux-m68k.org>
To:     Andreas Dilger <adilger@...ger.ca>
Cc:     Theodore Tso <tytso@....edu>, linux-ext4@...r.kernel.org
Subject: Re: [PATCH] ext4: don't update s_rev_level if not required

Hi Andreas,

On Sun, Jan 13, 2019 at 1:36 AM Andreas Dilger <adilger@...ger.ca> wrote:
> Don't update the superblock s_rev_level during mount if it isn't
> actually necessary, only if superblock features are being set by
> the kernel.  This was originally added for ext3 since it always
> set the INCOMPAT_RECOVER and HAS_JOURNAL features during mount,
> but this is not needed since no journal mode was added to ext4.
>
> That will allow Geert to mount his 20-year-old ext2 rev 0.0 m68k
> filesystem, as a testament of the backward compatibility of ext4.
>
> Fixes: 0390131ba84f ("ext4: Allow ext4 to run without a journal")
> Signed-off-by: Andreas Dilger <adilger@...ger.ca>

Thanks for your patch!

> --- a/fs/ext4/ext4.h
> +++ b/fs/ext4/ext4.h
> @@ -1670,6 +1670,7 @@ static inline void ext4_clear_state_flags(struct ext4_inode_info *ei)
>  } \
>  static inline void ext4_set_feature_##name(struct super_block *sb) \
>  { \
> +       ext4_update_dynamic_rev(sb); \

This doesn't compile, as ext4_update_dynamic_rev() is used before its
declaration:

In file included from fs/ext4/bitmap.c:12:0:
fs/ext4/ext4.h: In function ‘ext4_set_feature_dir_prealloc’:
fs/ext4/ext4.h:1673:2: error: implicit declaration of function
‘ext4_update_dynamic_rev’ [-Werror=implicit-function-declaration]
  ext4_update_dynamic_rev(sb); \
  ^
fs/ext4/ext4.h:1719:1: note: in expansion of macro ‘EXT4_FEATURE_COMPAT_FUNCS’
 EXT4_FEATURE_COMPAT_FUNCS(dir_prealloc,  DIR_PREALLOC)
 ^~~~~~~~~~~~~~~~~~~~~~~~~
fs/ext4/ext4.h: At top level:
fs/ext4/ext4.h:2678:13: warning: conflicting types for ‘ext4_update_dynamic_rev’
 extern void ext4_update_dynamic_rev(struct super_block *sb);
             ^~~~~~~~~~~~~~~~~~~~~~~
fs/ext4/ext4.h:1673:2: note: previous implicit declaration of
‘ext4_update_dynamic_rev’ was here
  ext4_update_dynamic_rev(sb); \
  ^
fs/ext4/ext4.h:1719:1: note: in expansion of macro ‘EXT4_FEATURE_COMPAT_FUNCS’
 EXT4_FEATURE_COMPAT_FUNCS(dir_prealloc,  DIR_PREALLOC)
 ^~~~~~~~~~~~~~~~~~~~~~~~~

Moving the declaration up fixes that.

Hence with that fixed:
Tested-by: Geert Uytterhoeven <geert@...ux-m68k.org>

Thanks!

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@...ux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ