On Mon, Apr 11, 2022 at 02:02:46PM +0800, Lin Ma wrote: > The function rio_karam_init() should return -ENOMEM instead of > value 0 (USB_STOR_TRANSPORT_GOOD) when allocation fails. > > Simlarlly, it should return -EIO when rio_karma_send_command() fails. > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: dfe0d3ba20e8 ("USB Storage: add rio karma eject support") > Signed-off-by: Lin Ma <linma@xxxxxxxxxx> > --- Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > drivers/usb/storage/karma.c | 15 ++++++++------- > 1 file changed, 8 insertions(+), 7 deletions(-) > > diff --git a/drivers/usb/storage/karma.c b/drivers/usb/storage/karma.c > index 05cec81dcd3f..38ddfedef629 100644 > --- a/drivers/usb/storage/karma.c > +++ b/drivers/usb/storage/karma.c > @@ -174,24 +174,25 @@ static void rio_karma_destructor(void *extra) > > static int rio_karma_init(struct us_data *us) > { > - int ret = 0; > struct karma_data *data = kzalloc(sizeof(struct karma_data), GFP_NOIO); > > if (!data) > - goto out; > + return -ENOMEM; > > data->recv = kmalloc(RIO_RECV_LEN, GFP_NOIO); > if (!data->recv) { > kfree(data); > - goto out; > + return -ENOMEM; > } > > us->extra = data; > us->extra_destructor = rio_karma_destructor; > - ret = rio_karma_send_command(RIO_ENTER_STORAGE, us); > - data->in_storage = (ret == 0); > -out: > - return ret; > + if (rio_karma_send_command(RIO_ENTER_STORAGE, us)) > + return -EIO; > + > + data->in_storage = 1; > + > + return 0; > } > > static struct scsi_host_template karma_host_template;