Skip to content

Commit 1596c38

Browse files
mchehabtorvalds
authored andcommitted
gp8psk: fix gp8psk_usb_in_op() logic
Commit 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. From Derek's email: "Fix confirmed using 2 different Skywalker models with HD mpeg4, SD mpeg2." Suggested-by: Johannes Stezenbach <[email protected]> Fixes: bc29131ecb10 ("[media] gp8psk: don't do DMA on stack") Tested-by: Derek <[email protected]> Signed-off-by: Mauro Carvalho Chehab <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 7724325 commit 1596c38

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

drivers/media/usb/dvb-usb/gp8psk.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ int gp8psk_usb_in_op(struct dvb_usb_device *d, u8 req, u16 value, u16 index, u8
6767
return ret;
6868

6969
while (ret >= 0 && ret != blen && try < 3) {
70-
memcpy(st->data, b, blen);
7170
ret = usb_control_msg(d->udev,
7271
usb_rcvctrlpipe(d->udev,0),
7372
req,
@@ -81,8 +80,10 @@ int gp8psk_usb_in_op(struct dvb_usb_device *d, u8 req, u16 value, u16 index, u8
8180
if (ret < 0 || ret != blen) {
8281
warn("usb in %d operation failed.", req);
8382
ret = -EIO;
84-
} else
83+
} else {
8584
ret = 0;
85+
memcpy(b, st->data, blen);
86+
}
8687

8788
deb_xfer("in: req. %x, val: %x, ind: %x, buffer: ",req,value,index);
8889
debug_dump(b,blen,deb_xfer);

0 commit comments

Comments
 (0)