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