On Thu, Jan 07, 2021 at 07:43:54PM +0530, Anant Thazhemadam wrote: > On 04/12/20 8:11 pm, Johan Hovold wrote: > > On Mon, Nov 30, 2020 at 06:58:47AM +0530, Anant Thazhemadam wrote: > >> The newer usb_control_msg_{send|recv}() API are an improvement on the > >> existing usb_control_msg() as it ensures that a short read/write is treated > >> as an error, > > Short writes have always been treated as an error. The new send helper > > only changes the return value from the transfer size to 0. > > > > And this driver never reads. > > > > Try to describe the motivation for changing this driver which is to > > avoid the explicit kmemdup(). > >> /* thanks to drivers/usb/serial/keyspan_pda.c code */ > >> @@ -77,11 +67,7 @@ static int emi26_load_firmware (struct usb_device *dev) > >> int err = -ENOMEM; > >> int i; > >> __u32 addr; /* Address to write */ > >> - __u8 *buf; > >> - > >> - buf = kmalloc(FW_LOAD_SIZE, GFP_KERNEL); > >> - if (!buf) > >> - goto wraperr; > >> + __u8 buf[FW_LOAD_SIZE]; > > As the build bots reported, you must not put large structures like this > > on the stack. > > Understood. > But I'm considering dropping this change (and the one proposed for > emi62) altogether in v3 - since these would end up requiring memory to > dynamically allocated twice for the same purpose. However, if you > still think the pros of updating this (and emi62) outweigh the cons, > please let me know, and I'll make sure to send in another version > fixing it. The redundant memdup() is already there for the firmware buffer and changing to usb_control_msg_send() will only make it slightly harder to get rid of that, if anyone would bother. But yeah, it's probably not worth switching usb_control_msg_send() for these drivers. Johan