Re: [PATCH v3 1/1] scsi: ufs: core: Support Updating UIC Command Timeout

From: Bao D. Nguyen
Date: Thu Jul 11 2024 - 01:47:25 EST


On 7/9/2024 11:10 AM, Bart Van Assche wrote:
On 7/8/24 11:06 PM, Bao D. Nguyen wrote:
+static int uic_cmd_timeout_set(const char *val, const struct kernel_param *kp)
+{
+    unsigned int n;
+    int ret;
+
+    ret = kstrtou32(val, 0, &n);
+    if (ret != 0 || n < UIC_CMD_TIMEOUT_DEFAULT || n > UIC_CMD_TIMEOUT_MAX)
+        return -EINVAL;
+
+    return param_set_int(val, kp);
+}

The above code converts 'val' twice to an integer: a first time by
calling kstrtou32() and a second time by calling param_set_int().
Please remove one of the two string-to-integer conversions, e.g. by
changing "param_set_int(val, kp)" into "uic_cmd_timeout = n" or
*(unsigned int *)kp->arg = n".
Hi Bart,
My understanding is that in the kstrtou32() function, the the result of the conversion is written to the third parameter only which is '&n' in this case. 'val' does not get updated (and it cannot be updated because of its 'const' type). Please correct me if I am wrong.

Thanks, Bao


Thanks,

Bart.