Skip to content

Commit

Permalink
usb: core: Copy parameter string correctly and remove superfluous nul…
Browse files Browse the repository at this point in the history
…l 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: 027bd6c ("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>
  • Loading branch information
Kai-Heng Feng authored and Greg Kroah-Hartman committed Mar 25, 2018
1 parent 73c6d3b commit a030501
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions drivers/usb/core/quirks.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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 = {
Expand Down

0 comments on commit a030501

Please sign in to comment.