Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48c8276d authored by Roel Kluin's avatar Roel Kluin Committed by Greg Kroah-Hartman
Browse files

Staging: rspiusb: Check usb_buffer_map_sg() retval



usb_buffer_map_sg() may return -1, check this directly.

Signed-off-by: default avatarRoel Kluin <roel.kluin@gmail.com>
Reviewed-by: default avatarJiri Slaby <jirislaby@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 77943d31
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -611,6 +611,7 @@ static int MapUserBuffer(struct ioctl_struct *io, struct device_extension *pdx)
	int i = 0;
	int k = 0;
	int err = 0;
	int ret;
	struct page **maplist_p;
	int numPagesRequired;

@@ -687,9 +688,16 @@ static int MapUserBuffer(struct ioctl_struct *io, struct device_extension *pdx)
	} else {
		pdx->sgl[frameInfo][0].length = count;
	}
	pdx->sgEntries[frameInfo] =
	    usb_buffer_map_sg(pdx->udev, epAddr, pdx->sgl[frameInfo],
	ret = usb_buffer_map_sg(pdx->udev, epAddr, pdx->sgl[frameInfo],
			pdx->maplist_numPagesMapped[frameInfo]);
	if (ret < 0) {
		vfree(maplist_p);
		dbg("usb_buffer_map_sg() failed");
		return -EINVAL;
	}

	pdx->sgEntries[frameInfo] = ret;

	dbg("number of sgEntries = %d", pdx->sgEntries[frameInfo]);
	pdx->userBufMapped = 1;
	vfree(maplist_p);
@@ -716,8 +724,6 @@ static int MapUserBuffer(struct ioctl_struct *io, struct device_extension *pdx)
		pdx->PixelUrb[frameInfo][i]->transfer_flags =
		    URB_NO_TRANSFER_DMA_MAP | URB_NO_INTERRUPT;
	}
	if (i == 0)
		return -EINVAL;
	/* only interrupt when last URB completes */
	pdx->PixelUrb[frameInfo][--i]->transfer_flags &= ~URB_NO_INTERRUPT;
	pdx->pendedPixelUrbs[frameInfo] =