]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
smb: client: fix filename matching of deferred files
authorPaulo Alcantara <pc@manguebit.org>
Wed, 17 Sep 2025 19:03:22 +0000 (16:03 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Sep 2025 09:13:49 +0000 (11:13 +0200)
commitb814660334bb9e0b097482da08c0971b5fbaf579
tree25ffaab31ccf211f4f4da56c136dd9d4f2f7dfd5
parentea5cbcecd54dd596bbca1f185d650187a4be516f
smb: client: fix filename matching of deferred files

[ Upstream commit 93ed9a2951308db374cba4562533dde97bac70d3 ]

Fix the following case where the client would end up closing both
deferred files (foo.tmp & foo) after unlink(foo) due to strstr() call
in cifs_close_deferred_file_under_dentry():

  fd1 = openat(AT_FDCWD, "foo", O_WRONLY|O_CREAT|O_TRUNC, 0666);
  fd2 = openat(AT_FDCWD, "foo.tmp", O_WRONLY|O_CREAT|O_TRUNC, 0666);
  close(fd1);
  close(fd2);
  unlink("foo");

Fixes: e3fc065682eb ("cifs: Deferred close performance improvements")
Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.org>
Reviewed-by: Enzo Matsumiya <ematsumiya@suse.de>
Cc: Frank Sorenson <sorenson@redhat.com>
Cc: David Howells <dhowells@redhat.com>
Cc: linux-cifs@vger.kernel.org
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/smb/client/cifsproto.h
fs/smb/client/inode.c
fs/smb/client/misc.c