]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commit
xfs_io: Fix fscrypt macros ordering
authorCarlos Maiolino <cem@kernel.org>
Sat, 17 Aug 2024 09:32:48 +0000 (11:32 +0200)
committerCarlos Maiolino <cem@kernel.org>
Mon, 16 Sep 2024 07:13:34 +0000 (09:13 +0200)
commitaa926341398f03125af4cac094b18c64cb969319
treea1dcec6e4734ef71e43b98829cf5070813c91234
parent871d186c79f589b259b7dd38978c8c3c1cc8df54
xfs_io: Fix fscrypt macros ordering

We've been reported a failure to build xfsprogs within buildroot's
environment when they tried to upgrade xfsprogs from 6.4 to 6.9:

encrypt.c:53:36: error: 'FSCRYPT_KEY_IDENTIFIER_SIZE' undeclared
here (not in a function)
        53 |         __u8
master_key_identifier[FSCRYPT_KEY_IDENTIFIER_SIZE];
           |
^~~~~~~~~~~~~~~~~~~~~~~~~~~
     encrypt.c:61:42: error: field 'v1' has incomplete type
        61 |                 struct fscrypt_policy_v1 v1;
           |                                          ^~

They were using a kernel version without FS_IOC_GET_ENCRYPTION_POLICY_EX
set and OVERRIDE_SYSTEM_FSCRYPT_POLICY_V2 was unset.
This combination caused xfsprogs to attempt to define fscrypt_policy_v2
locally, which uses:
__u8 master_key_identifier[FSCRYPT_KEY_IDENTIFIER_SIZE];

The problem is FSCRYPT_KEY_IDENTIFIER_SIZE is only after this block of
code, so we need to define it earlier.

This also attempts to use fscrypt_policy_v1, which is defined only
later.

To fix this, just reorder both ifdef blocks, but we need to move the
definition of FS_IOC_GET_ENCRYPTION_POLICY_EX to the later, otherwise,
the later definitions won't be enabled causing havoc.

Fixes: e97caf714697a ("xfs_io/encrypt: support specifying crypto data unit size")
Reported-by: Waldemar Brodkorb <wbx@openadk.org>
Reviewed-by: Bill O'Donnell <bodonnel@redhat.com>
Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
Tested-by: Waldemar Brodkorb <wbx@openadk.org>
Reviewed-by: Eric Biggers <ebiggers@google.com>
io/encrypt.c