ovl: fix NULL pointer defer when encoding non-decodable lower fid
authorAmir Goldstein <amir73il@gmail.com>
Tue, 3 Oct 2023 06:21:27 +0000 (09:21 +0300)
committerAmir Goldstein <amir73il@gmail.com>
Tue, 3 Oct 2023 06:24:11 +0000 (09:24 +0300)
A wrong return value from ovl_check_encode_origin() would cause
ovl_dentry_to_fid() to try to encode fid from NULL upper dentry.

Reported-by: syzbot+2208f82282740c1c8915@syzkaller.appspotmail.com
Fixes: 16aac5ad1fa9 ("ovl: support encoding non-decodable file handles")
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
fs/overlayfs/export.c

index c8c8588..26b782c 100644 (file)
@@ -188,7 +188,7 @@ static int ovl_check_encode_origin(struct dentry *dentry)
 
        /* Lower file handle for non-upper non-decodable */
        if (!ovl_dentry_upper(dentry) && !decodable)
-               return 0;
+               return 1;
 
        /* Upper file handle for pure upper */
        if (!ovl_dentry_lower(dentry))