From: Kai-Heng Feng Date: Fri, 23 Mar 2018 19:26:35 +0000 (+0800) Subject: usb: core: Copy parameter string correctly and remove superfluous null check X-Git-Tag: v4.17-rc1~126^2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a030501499b032bd218e1d01c07677bab6a0d53f;p=thirdparty%2Fkernel%2Flinux.git usb: core: Copy parameter string correctly and remove superfluous null check strsep() slices string, so the string gets copied by param_set_copystring() at the end of quirks_param_set() is not the original value. Fix that by calling param_set_copystring() earlier. The null check for val is unnecessary, the caller of quirks_param_set() does not pass null string. Remove the superfluous null check. This is found by Smatch. Fixes: 027bd6cafd9a ("usb: core: Add "quirks" parameter for usbcore") Cc: Dan Carpenter Signed-off-by: Kai-Heng Feng Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index 6fb8d54332689..29e5f32b38df6 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c @@ -31,10 +31,15 @@ static int quirks_param_set(const char *val, const struct kernel_param *kp) u16 vid, pid; u32 flags; size_t i; + int err; + + err = param_set_copystring(val, kp); + if (err) + return err; mutex_lock(&quirk_mutex); - if (!val || !*val) { + if (!*val) { quirk_count = 0; kfree(quirk_list); quirk_list = NULL; @@ -133,7 +138,7 @@ static int quirks_param_set(const char *val, const struct kernel_param *kp) unlock: mutex_unlock(&quirk_mutex); - return param_set_copystring(val, kp); + return 0; } static const struct kernel_param_ops quirks_param_ops = {