Re: [PATCH] ksmbd: potential uninitialized error code in set_file_basic_info()

Sergey Senozhatsky
2021-09-07T08:02:11Z

On (21/09/07 10:33), Dan Carpenter wrote:
>
> Smatch complains that there are some paths where "rc" is not set.
>
> Fixes: eb5784f0c6ef ("ksmbd: ensure error is surfaced in set_file_basic_info()")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
> fs/ksmbd/smb2pdu.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c
> index a350e1cef7f4..c86164dc70bb 100644
> --- a/fs/ksmbd/smb2pdu.c
> +++ b/fs/ksmbd/smb2pdu.c
> @@ -5444,7 +5444,7 @@ static int set_file_basic_info(struct ksmbd_file *fp, char *buf,
> struct file *filp;
> struct inode *inode;
> struct user_namespace *user_ns;
> - int rc;
> + int rc = 0;
>
> if (!(fp->daccess & FILE_WRITE_ATTRIBUTES_LE))
> return -EACCES;

It sort of feels like that `rc' is not needed there at all. It's being used in

rc = ksmbd_vfs_set_dos_attrib_xattr(user_ns,
filp->f_path.dentry, &da);
if (rc)
ksmbd_debug(SMB,
"failed to restore file attribute in EA\n");

and in

rc = setattr_prepare(user_ns, dentry, &attrs);
if (rc)
return -EINVAL;

Either it should be used more, and probably be a return value, or we can
just remove it.