Changeset bc29131ecb10 ("[media] gp8psk: don't do DMA on stack")
fixed the usage of DMA on stack, but the memcpy was wrong
for gp8psk_usb_in_op(). Fix it.

Suggested-by: Johannes Stezenbach <j...@linuxtv.org>
Fixes: bc29131ecb10 ("[media] gp8psk: don't do DMA on stack")
Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>
---
 drivers/media/usb/dvb-usb/gp8psk.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/media/usb/dvb-usb/gp8psk.c 
b/drivers/media/usb/dvb-usb/gp8psk.c
index adfd76491451..2829e3082d15 100644
--- a/drivers/media/usb/dvb-usb/gp8psk.c
+++ b/drivers/media/usb/dvb-usb/gp8psk.c
@@ -67,7 +67,6 @@ int gp8psk_usb_in_op(struct dvb_usb_device *d, u8 req, u16 
value, u16 index, u8
                return ret;
 
        while (ret >= 0 && ret != blen && try < 3) {
-               memcpy(st->data, b, blen);
                ret = usb_control_msg(d->udev,
                        usb_rcvctrlpipe(d->udev,0),
                        req,
@@ -81,8 +80,10 @@ int gp8psk_usb_in_op(struct dvb_usb_device *d, u8 req, u16 
value, u16 index, u8
        if (ret < 0 || ret != blen) {
                warn("usb in %d operation failed.", req);
                ret = -EIO;
-       } else
+       } else {
                ret = 0;
+               memcpy(b, st->data, blen);
+       }
 
        deb_xfer("in: req. %x, val: %x, ind: %x, buffer: ",req,value,index);
        debug_dump(b,blen,deb_xfer);
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to