Commit ba6df3ea authored by Lin Ma's avatar Lin Ma Committed by Greg Kroah-Hartman
Browse files

usb-storage: isd200: fix initFunction error return



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: default avatarLin Ma <linma@zju.edu.cn>
Link: https://lore.kernel.org/r/20220407022110.3757-1-linma@zju.edu.cn


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1abf6798
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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;
}

/**************************************************************************