On Sat, Aug 17, 2024 at 11:32:48AM +0200, cem@xxxxxxxxxx wrote: > From: Carlos Maiolino <cem@xxxxxxxxxx> > > 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@xxxxxxxxxxx> > Reviewed-by: Bill O'Donnell <bodonnel@xxxxxxxxxx> > Signed-off-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx> > --- > V2: > - Remove dangling leftover comment > - define FS_IOC_GET_ENCRYPTION_POLICY_EX on it's own block. > > Bill, as the updates for the V2 are trivial, I'm keeping your RwB, > hopefuly you agree :) > > io/encrypt.c | 67 ++++++++++++++++++++++++++-------------------------- > 1 file changed, 34 insertions(+), 33 deletions(-) Reviewed-by: Eric Biggers <ebiggers@xxxxxxxxxx> - Eric