diff options
author | Kai-Heng Feng <kai.heng.feng@canonical.com> | 2018-03-24 03:26:35 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-03-25 12:50:44 +0200 |
commit | a030501499b032bd218e1d01c07677bab6a0d53f (patch) | |
tree | 9924faca7e061bc17c1f7257606a8f307bd9b32d /drivers/usb | |
parent | 73c6d3b284cf7b31c03fdaa2476f48f8da0932f8 (diff) |
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 <dan.carpenter@oracle.com>
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/core/quirks.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index 6fb8d5433268..29e5f32b38df 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 = { |