From roel.kluin@gmail.com Fri Aug 7 13:34:41 2009 From: Roel Kluin Date: Fri, 07 Aug 2009 21:00:10 +0200 Subject: Staging: rspiusb: Fix buffer overflow To: Greg Kroah-Hartman , devel@driverdev.osuosl.org, Andrew Morton , richard.genoud@gmail.com Message-ID: <4A7C79BA.8030206@gmail.com> usb_buffer_map_sg() may return -1. This will result in a read from pdx->PixelUrb[frameInfo][-1] Signed-off-by: Roel Kluin Signed-off-by: Greg Kroah-Hartman --- drivers/staging/rspiusb/rspiusb.c | 2 ++ 1 file changed, 2 insertions(+) --- a/drivers/staging/rspiusb/rspiusb.c +++ b/drivers/staging/rspiusb/rspiusb.c @@ -716,6 +716,8 @@ static int MapUserBuffer(struct ioctl_st 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] =