On Mon, Jun 01, 2020 at 01:05:43PM -0700, Eric Biggers wrote: > From: Eric Biggers <ebiggers@xxxxxxxxxx> > > If the dentry name passed to ->d_compare() fits in dentry::d_iname, then > it may be concurrently modified by a rename. This can cause undefined > behavior (possibly out-of-bounds memory accesses or crashes) in > utf8_strncasecmp(), since fs/unicode/ isn't written to handle strings > that may be concurrently modified. > > Fix this by first copying the filename to a stack buffer if needed. > This way we get a stable snapshot of the filename. > > Fixes: b886ee3e778e ("ext4: Support case-insensitive file name lookups") > Cc: <stable@xxxxxxxxxxxxxxx> # v5.2+ > Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> > Cc: Daniel Rosenberg <drosen@xxxxxxxxxx> > Cc: Gabriel Krisman Bertazi <krisman@xxxxxxxxxxxxxxx> > Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx> > --- > > v2: use memcpy() + barrier() instead of a byte-by-byte copy. > > fs/ext4/dir.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) Ted, could you take this through the ext4 tree as a fix for 5.8? The f2fs patch has been merged already. - Eric