On 20-09-26 07:44:57, Greg KH wrote: > On Fri, Sep 25, 2020 at 07:01:59PM +0300, Petko Manolov wrote: > > From: Petko Manolov <petko.manolov@xxxxxxxxxxxx> > > > > Move all control transfers to safer usb_control_msg_send/recv() API. > > This says _what_ the patch does, but we can see that from the diff. You > should describe _why_ we are doing what we are doing, so that everyone > understands the need for the change. Didn't want to parrot the reason for usb_control_msg_send/recv() existence, but i guess you're right. 5 years from now i would not remember anything. :) > > static int set_register(pegasus_t *pegasus, __u16 indx, __u8 data) > > { > > - u8 *buf; > > - int ret; > > - > > - buf = kmemdup(&data, 1, GFP_NOIO); > > - if (!buf) > > - return -ENOMEM; > > - > > - ret = usb_control_msg(pegasus->usb, usb_sndctrlpipe(pegasus->usb, 0), > > - PEGASUS_REQ_SET_REG, PEGASUS_REQT_WRITE, data, > > - indx, buf, 1, 1000); > > - if (ret < 0) > > - netif_dbg(pegasus, drv, pegasus->net, > > - "%s returned %d\n", __func__, ret); > > - kfree(buf); > > - return ret; > > + return usb_control_msg_send(pegasus->usb, 0, PEGASUS_REQ_SET_REG, > > + PEGASUS_REQT_WRITE, data, indx, &data, 1, > > + 1000, GFP_NOIO); > > } > > Again, why isn't set_register() now rewritten to just be: > > static int set_register(pegasus_t *pegasus, __u16 indx, __u8 data) > { > return set_registers(pegasus, indx, 1, data); > } > > Much easier to show that it's all converted properly :) There's a catch - adm8511-based devices can only write to a single register via specific control request. This request expects the register number in wIndex and the value in wValue. A bit of a brain fart which is fixed in adm8515. Admittedly, I could open code set_register() and avoid a kmemdup() call since in this case 'data' is going to be NULL. However, set_register() isn't heavily used, except for the setup phase, so i went for the prettier/simpler approach. Which reminds me that i should put a comment explaining why is that. cheers, Petko