From: Colin Ian King <colin.king@xxxxxxxxxxxxx> Currently the check for nbytes < 0 is always false because nbytes is an unsigned int and can never be less than zero. Fix this by using ret for the assignment and comparison and assigning nbytes to ret later if the check is successful. The fix also passes the error return in ret to the error handling path that caters for various values of ret. Addresses-Coverity: ("Unsigned compared against 0") Fixes: e2f34481b24d ("cifsd: add server-side procedures for SMB3") Signed-off-by: Colin Ian King <colin.king@xxxxxxxxxxxxx> --- fs/ksmbd/smb2pdu.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c index 8ceac0ebdbea..9be82d08b722 100644 --- a/fs/ksmbd/smb2pdu.c +++ b/fs/ksmbd/smb2pdu.c @@ -7537,9 +7537,10 @@ int smb2_ioctl(struct ksmbd_work *work) rsp->VolatileFileId = cpu_to_le64(SMB2_NO_FID); break; case FSCTL_QUERY_NETWORK_INTERFACE_INFO: - nbytes = fsctl_query_iface_info_ioctl(conn, rsp, out_buf_len); - if (nbytes < 0) + ret = fsctl_query_iface_info_ioctl(conn, rsp, out_buf_len); + if (ret < 0) goto out; + nbytes = ret; break; case FSCTL_REQUEST_RESUME_KEY: if (out_buf_len < sizeof(struct resume_key_ioctl_rsp)) { -- 2.32.0