]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ntfs: Place check before dereference
authorEthan Tidmore <ethantidmore06@gmail.com>
Thu, 26 Feb 2026 16:09:04 +0000 (10:09 -0600)
committerNamjae Jeon <linkinjeon@kernel.org>
Fri, 27 Feb 2026 09:43:38 +0000 (18:43 +0900)
The variable ni has the possiblity of being null and is checked for it
but, only after it was dereferenced in a log message.

Put check before dereference.

Detected by Smatch:
fs/ntfs/attrib.c:2115 ntfs_resident_attr_record_add() warn:
variable dereferenced before check 'ni' (see line 2111)

fs/ntfs/attrib.c:2237 ntfs_non_resident_attr_record_add() warn:
variable dereferenced before check 'ni' (see line 2232)

Signed-off-by: Ethan Tidmore <ethantidmore06@gmail.com>
Reviewed-by: Hyunchul Lee <hyc.lee@gmail.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
fs/ntfs/attrib.c

index e8285264f619dd89559fd4422bf39e17000f4115..e260540eb7c59455441bd36bde35274f145ae6ce 100644 (file)
@@ -2108,13 +2108,13 @@ int ntfs_resident_attr_record_add(struct ntfs_inode *ni, __le32 type,
        int err, offset;
        struct ntfs_inode *base_ni;
 
+       if (!ni || (!name && name_len))
+               return -EINVAL;
+
        ntfs_debug("Entering for inode 0x%llx, attr 0x%x, flags 0x%x.\n",
                        (long long) ni->mft_no, (unsigned int) le32_to_cpu(type),
                        (unsigned int) le16_to_cpu(flags));
 
-       if (!ni || (!name && name_len))
-               return -EINVAL;
-
        err = ntfs_attr_can_be_resident(ni->vol, type);
        if (err) {
                if (err == -EPERM)
@@ -2229,14 +2229,14 @@ static int ntfs_non_resident_attr_record_add(struct ntfs_inode *ni, __le32 type,
        struct ntfs_inode *base_ni;
        int err, offset;
 
+       if (!ni || dataruns_size <= 0 || (!name && name_len))
+               return -EINVAL;
+
        ntfs_debug("Entering for inode 0x%llx, attr 0x%x, lowest_vcn %lld, dataruns_size %d, flags 0x%x.\n",
                        (long long) ni->mft_no, (unsigned int) le32_to_cpu(type),
                        (long long) lowest_vcn, dataruns_size,
                        (unsigned int) le16_to_cpu(flags));
 
-       if (!ni || dataruns_size <= 0 || (!name && name_len))
-               return -EINVAL;
-
        err = ntfs_attr_can_be_non_resident(ni->vol, type);
        if (err) {
                if (err == -EPERM)