]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
cachefiles: Fix error return when vfs_mkdir() fails
authorHongling Zeng <zenghongling@kylinos.cn>
Wed, 13 May 2026 10:34:06 +0000 (18:34 +0800)
committerChristian Brauner <brauner@kernel.org>
Fri, 15 May 2026 13:32:43 +0000 (15:32 +0200)
When vfs_mkdir() fails, the error code is not extracted from the
returned error pointer. This causes mkdir_error to be reached with
ret=0, which leads to returning ERR_PTR(0) (NULL) instead of a
proper error pointer.

Fix this by extracting the error code from the error pointer when
vfs_mkdir() fails.

Fixes: 406fad7698f5 ("cachefiles: Fix oops in vfs_mkdir from cachefiles_get_directory")
Signed-off-by: Hongling Zeng <zenghongling@kylinos.cn>
Link: https://patch.msgid.link/20260513103406.202320-1-zenghongling@kylinos.cn
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/cachefiles/namei.c

index 1b83ed0e0a63fe761245d8eae09cdbc73b9cae6c..2937db690b40b56807930162ca07e62cbd70b376 100644 (file)
@@ -130,6 +130,8 @@ retry:
                ret = cachefiles_inject_write_error();
                if (ret == 0) {
                        subdir = vfs_mkdir(&nop_mnt_idmap, d_inode(dir), subdir, 0700, NULL);
+                       if (IS_ERR(subdir))
+                               ret = PTR_ERR(subdir);
                } else {
                        end_creating(subdir);
                        subdir = ERR_PTR(ret);