mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 04:42:12 +00:00
Staging: rspiusb: Check usb_buffer_map_sg() retval
usb_buffer_map_sg() may return -1, check this directly. Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Reviewed-by: Jiri Slaby <jirislaby@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
77943d31b7
commit
48c8276d7a
@ -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],
|
||||
pdx->maplist_numPagesMapped[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] =
|
||||
|
Loading…
Reference in New Issue
Block a user