Geliang Tang <geliangtang@xxxxxxxxx> writes: > Use memdup_user() helper instead of open-coding to simplify the code. > > Signed-off-by: Geliang Tang <geliangtang@xxxxxxxxx> > --- > drivers/usb/class/cdc-wdm.c | 15 +++------------ > 1 file changed, 3 insertions(+), 12 deletions(-) > > diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c > index 08669fe..0e4f18c 100644 > --- a/drivers/usb/class/cdc-wdm.c > +++ b/drivers/usb/class/cdc-wdm.c > @@ -361,17 +361,9 @@ static ssize_t wdm_write > if (we < 0) > return usb_translate_errors(we); > > - buf = kmalloc(count, GFP_KERNEL); > - if (!buf) { > - rv = -ENOMEM; > - goto outnl; > - } > - > - r = copy_from_user(buf, buffer, count); > - if (r > 0) { > - rv = -EFAULT; > - goto out_free_mem; > - } > + buf = memdup_user(buffer, count); > + if (IS_ERR(buf)) > + return PTR_ERR(buf); > > /* concurrent writes and disconnect */ > r = mutex_lock_interruptible(&desc->wlock); > @@ -441,7 +433,6 @@ static ssize_t wdm_write > > usb_autopm_put_interface(desc->intf); > mutex_unlock(&desc->wlock); > -outnl: > return rv < 0 ? rv : count; > > out_free_mem_pm: Nice! Please check this, but I believe you can simplify that last return as well. There is no way to end up there with rv < 0 after you've removed the label. So return count; should do. Bjørn -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html