On 7/9/2024 11:10 AM, Bart Van Assche wrote:Hi Bart,
On 7/8/24 11:06 PM, Bao D. Nguyen wrote:Hi Bart,
+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".
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.