Staging: rspiusb: use NULL virtual address instead of a bogus one

The main problem here is that I just cannot see how this could ever
be correct:

usb_fill_bulk_urb(pdx->PixelUrb[frameInfo][i], pdx->udev, epAddr,
(dma_addr_t *) sg_dma_address(&pdx->sgl[frameInfo][i]),
sg_dma_len(&pdx->sgl[frameInfo][i]),

You cannot take a DMA address, cast it to a _pointer to_ a DMA address,
and then regard it as a virtual address of the transfer buffer.
However, finding the right virtual address was too hard for me,
so I just stubbed it with NULL. At least usbmon won't oops then
(it will not show any data but it's better than crashing).

Also, too big a buffer was allocated elsewhere.

And since we're at it, drop clearly unnecessary usb_buffer_alloc too,
leaving it where it may be useful.

Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by Pete Zaitcev and committed by Greg Kroah-Hartman aea0d43b f408adeb

+4 -10
+4 -10
drivers/staging/rspiusb/rspiusb.c
··· 444 __func__, status); 445 446 pdx->pendingWrite = 0; 447 - usb_buffer_free(urb->dev, urb->transfer_buffer_length, 448 - urb->transfer_buffer, urb->transfer_dma); 449 } 450 451 int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len, ··· 456 457 urb = usb_alloc_urb(0, GFP_KERNEL); 458 if (urb != NULL) { 459 - kbuf = 460 - usb_buffer_alloc(pdx->udev, len, GFP_KERNEL, 461 - &urb->transfer_dma); 462 if (!kbuf) { 463 dev_err(&pdx->udev->dev, "buffer_alloc failed\n"); 464 return -ENOMEM; ··· 467 } 468 usb_fill_bulk_urb(urb, pdx->udev, pdx->hEP[io->endpoint], kbuf, 469 len, piusb_write_bulk_callback, pdx); 470 - urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; 471 err = usb_submit_urb(urb, GFP_KERNEL); 472 if (err) { 473 dev_err(&pdx->udev->dev, ··· 637 numPagesRequired = 638 ((uaddr & ~PAGE_MASK) + count + ~PAGE_MASK) >> PAGE_SHIFT; 639 dbg("Number of pages needed = %d", numPagesRequired); 640 - maplist_p = vmalloc(numPagesRequired * sizeof(struct page)); 641 if (!maplist_p) { 642 dbg("Can't Allocate Memory for maplist_p"); 643 return -ENOMEM; ··· 708 usb_fill_bulk_urb(pdx->PixelUrb[frameInfo][i], 709 pdx->udev, 710 epAddr, 711 - (dma_addr_t *) sg_dma_address(&pdx-> 712 - sgl[frameInfo] 713 - [i]), 714 sg_dma_len(&pdx->sgl[frameInfo][i]), 715 piusb_readPIXEL_callback, (void *)pdx); 716 pdx->PixelUrb[frameInfo][i]->transfer_dma =
··· 444 __func__, status); 445 446 pdx->pendingWrite = 0; 447 + kfree(urb->transfer_buffer); 448 } 449 450 int piusb_output(struct ioctl_struct *io, unsigned char *uBuf, int len, ··· 457 458 urb = usb_alloc_urb(0, GFP_KERNEL); 459 if (urb != NULL) { 460 + kbuf = kmalloc(len, GFP_KERNEL); 461 if (!kbuf) { 462 dev_err(&pdx->udev->dev, "buffer_alloc failed\n"); 463 return -ENOMEM; ··· 470 } 471 usb_fill_bulk_urb(urb, pdx->udev, pdx->hEP[io->endpoint], kbuf, 472 len, piusb_write_bulk_callback, pdx); 473 err = usb_submit_urb(urb, GFP_KERNEL); 474 if (err) { 475 dev_err(&pdx->udev->dev, ··· 641 numPagesRequired = 642 ((uaddr & ~PAGE_MASK) + count + ~PAGE_MASK) >> PAGE_SHIFT; 643 dbg("Number of pages needed = %d", numPagesRequired); 644 + maplist_p = vmalloc(numPagesRequired * sizeof(struct page *)); 645 if (!maplist_p) { 646 dbg("Can't Allocate Memory for maplist_p"); 647 return -ENOMEM; ··· 712 usb_fill_bulk_urb(pdx->PixelUrb[frameInfo][i], 713 pdx->udev, 714 epAddr, 715 + NULL, // non-DMA HC? buy a better hardware 716 sg_dma_len(&pdx->sgl[frameInfo][i]), 717 piusb_readPIXEL_callback, (void *)pdx); 718 pdx->PixelUrb[frameInfo][i]->transfer_dma =