Thanks, applied. On 05/16, Gabriel Krisman Bertazi wrote: > Eric Biggers <ebiggers@xxxxxxxxxx> writes: > > > From: Eric Biggers <ebiggers@xxxxxxxxxx> > > > > Tryng to rename a directory that has all following properties fails with > > EINVAL and triggers the 'WARN_ON_ONCE(!fscrypt_has_encryption_key(dir))' > > in f2fs_match_ci_name(): > > > > - The directory is casefolded > > - The directory is encrypted > > - The directory's encryption key is not yet set up > > - The parent directory is *not* encrypted > > > > The problem is incorrect handling of the lookup of ".." to get the > > parent reference to update. fscrypt_setup_filename() treats ".." (and > > ".") specially, as it's never encrypted. It's passed through as-is, and > > setting up the directory's key is not attempted. As the name isn't a > > no-key name, f2fs treats it as a "normal" name and attempts a casefolded > > comparison. That breaks the assumption of the WARN_ON_ONCE() in > > f2fs_match_ci_name() which assumes that for encrypted directories, > > casefolded comparisons only happen when the directory's key is set up. > > > > We could just remove this WARN_ON_ONCE(). However, since casefolding is > > always a no-op on "." and ".." anyway, let's instead just not casefold > > these names. This results in the standard bytewise comparison. > > > > Fixes: 7ad08a58bf67 ("f2fs: Handle casefolding with Encryption") > > Cc: <stable@xxxxxxxxxxxxxxx> # v5.11+ > > Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx> > > --- > > fs/f2fs/dir.c | 3 ++- > > fs/f2fs/f2fs.h | 10 +++++----- > > fs/f2fs/hash.c | 11 ++++++----- > > 3 files changed, 13 insertions(+), 11 deletions(-) > > Hi Eric, > > This looks good to me: > > Reviewed-by: Gabriel Krisman Bertazi <krisman@xxxxxxxxxxxxx> > > Thanks, > > -- > Gabriel Krisman Bertazi > > > _______________________________________________ > Linux-f2fs-devel mailing list > Linux-f2fs-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel