Description
In the Linux kernel, the following vulnerability has been resolved: smb/server: avoid deadlock when linking with ReplaceIfExists If smb2_create_link() is called with ReplaceIfExists set and the name does exist then a deadlock will happen. ksmbd_vfs_kern_path_locked() will return with success and the parent directory will be locked. ksmbd_vfs_remove_file() will then remove the file. ksmbd_vfs_link() will then be called while the parent is still locked. It will try to lock the same parent and will deadlock. This patch moves the ksmbd_vfs_kern_path_unlock() call to *before* ksmbd_vfs_link() and then simplifies the code, removing the file_present flag variable.
Product status
0626e6641f6b467447c81dd7678a69c66f7746cf (git) before 9d5012ffe14120f978ee34aef4df3d6cb026b7c4
0626e6641f6b467447c81dd7678a69c66f7746cf (git) before ac98d54630d5b52e3f684d872f0d82c06c418ea9
0626e6641f6b467447c81dd7678a69c66f7746cf (git) before 1e858a7a51c7b8b009d8f246de7ceb7743b44a71
0626e6641f6b467447c81dd7678a69c66f7746cf (git) before 814cfdb6358d9b84fcbec9918c8f938cc096a43a
0626e6641f6b467447c81dd7678a69c66f7746cf (git) before a7dddd62578c2eb6cb28b8835556a121b5157323
0626e6641f6b467447c81dd7678a69c66f7746cf (git) before a726fef6d7d4cfc365d3434e3916dbfe78991a33
0626e6641f6b467447c81dd7678a69c66f7746cf (git) before d5fc1400a34b4ea5e8f2ce296ea12bf8c8421694
5.15
Any version before 5.15
5.15.190 (semver)
6.1.149 (semver)
6.6.103 (semver)
6.12.43 (semver)
6.15.11 (semver)
6.16.2 (semver)
6.17 (original_commit_for_fix)
References
git.kernel.org/...c/9d5012ffe14120f978ee34aef4df3d6cb026b7c4
git.kernel.org/...c/ac98d54630d5b52e3f684d872f0d82c06c418ea9
git.kernel.org/...c/1e858a7a51c7b8b009d8f246de7ceb7743b44a71
git.kernel.org/...c/814cfdb6358d9b84fcbec9918c8f938cc096a43a
git.kernel.org/...c/a7dddd62578c2eb6cb28b8835556a121b5157323
git.kernel.org/...c/a726fef6d7d4cfc365d3434e3916dbfe78991a33
git.kernel.org/...c/d5fc1400a34b4ea5e8f2ce296ea12bf8c8421694