usb-storage: isd200: fix initFunction error return
authorLin Ma <linma@zju.edu.cn>
Thu, 7 Apr 2022 02:21:10 +0000 (10:21 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 21 Apr 2022 17:02:42 +0000 (19:02 +0200)
The initFunction is called when probing a new device, its call relation
is like:

USB core: probe() -> usb_stor_probe2() -> usb_stor_acquire_resources()
-> isd200_init_info()

That is, the error return of the initFunction should tell USB core what
happened instead of using custom error code like ISD200_ERROR.

Signed-off-by: Lin Ma <linma@zju.edu.cn>
Link: https://lore.kernel.org/r/20220407022110.3757-1-linma@zju.edu.cn
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/storage/isd200.c

index 05429f1..4e0eef1 100644 (file)
@@ -1449,7 +1449,7 @@ static void isd200_free_info_ptrs(void *info_)
  * Allocates (if necessary) and initializes the driver structure.
  *
  * RETURNS:
- *    ISD status code
+ *    error status code
  */
 static int isd200_init_info(struct us_data *us)
 {
@@ -1457,7 +1457,7 @@ static int isd200_init_info(struct us_data *us)
 
        info = kzalloc(sizeof(struct isd200_info), GFP_KERNEL);
        if (!info)
-               return ISD200_ERROR;
+               return -ENOMEM;
 
        info->id = kzalloc(ATA_ID_WORDS * 2, GFP_KERNEL);
        info->RegsBuf = kmalloc(sizeof(info->ATARegs), GFP_KERNEL);
@@ -1466,13 +1466,13 @@ static int isd200_init_info(struct us_data *us)
        if (!info->id || !info->RegsBuf || !info->srb.sense_buffer) {
                isd200_free_info_ptrs(info);
                kfree(info);
-               return ISD200_ERROR;
+               return -ENOMEM;
        }
 
        us->extra = info;
        us->extra_destructor = isd200_free_info_ptrs;
 
-       return ISD200_GOOD;
+       return 0;
 }
 
 /**************************************************************************