The variable err is confirmed to be 0 and then never reassigned in the success path. The function then returns with ERR_PTR(err) which just equals NULL and can be misleading. Detected by Smatch: fs/ntfs/namei.c:1091 ntfs_mkdir() warn: passing zero to 'ERR_PTR' Signed-off-by: Ethan Tidmore --- fs/ntfs/namei.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ntfs/namei.c b/fs/ntfs/namei.c index a21eeaec57b4..cecfaabfbfe7 100644 --- a/fs/ntfs/namei.c +++ b/fs/ntfs/namei.c @@ -1088,7 +1088,7 @@ static struct dentry *ntfs_mkdir(struct mnt_idmap *idmap, struct inode *dir, } d_instantiate_new(dentry, VFS_I(ni)); - return ERR_PTR(err); + return NULL; } static int ntfs_rmdir(struct inode *dir, struct dentry *dentry) -- 2.53.0 The variable name_len is checked to see if it's larger than the macro NTFS_MAX_NAME_LEN however this condition is impossible because name_len is of type u8 and NTFS_MAX_NAME_LEN is hardcoded to be 255. Detected by Smatch: fs/ntfs/namei.c:1175 __ntfs_link() warn: impossible condition '(name_len > 255) => (0-255 > 255)' Signed-off-by: Ethan Tidmore --- fs/ntfs/namei.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/fs/ntfs/namei.c b/fs/ntfs/namei.c index cecfaabfbfe7..2952b377dda2 100644 --- a/fs/ntfs/namei.c +++ b/fs/ntfs/namei.c @@ -1172,10 +1172,7 @@ static int __ntfs_link(struct ntfs_inode *ni, struct ntfs_inode *dir_ni, /* Create FILE_NAME attribute. */ fn_len = sizeof(struct file_name_attr) + name_len * sizeof(__le16); - if (name_len > NTFS_MAX_NAME_LEN) { - err = -EIO; - goto err_out; - } + fn = kzalloc(fn_len, GFP_NOFS); if (!fn) { err = -ENOMEM; -- 2.53.0