Don't use stack for DMA transers on media usb drivers
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v2 Latest31 patches 7 repliesIn review
- v126 patches 14 repliesSuperseded
Patches in v2 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/31 | af9005: don't do DMA on stackdrivers/ | +180 | 0 replies | |
| 2/31 | cinergyT2-core: don't do DMA on stackdrivers/ | +61 | 2 replies | |
| 3/31 | cinergyT2-core: handle error code on RC querydrivers/ | +5 | 0 replies | |
| 3/31 | cinergyT2-core: handle error code on RC querydrivers/ | +5 | 0 replies | |
| 4/31 | cinergyT2-fe: cache stats at cinergyt2_fe_read_status()drivers/ | +7 | 0 replies | |
| 5/31 | cinergyT2-fe: don't do DMA on stackdrivers/ | +33 | 0 replies | |
| 6/31 | cxusb: don't do DMA on stackdrivers/ drivers/ | +41 | 0 replies | |
| 7/31 | dib0700: be sure that dib0700_ctrl_rd() users can do DMAdrivers/ drivers/ | +16 | 0 replies | |
| 8/31 | dib0700_core: don't use stack on I2C readsdrivers/ | +26 | 0 replies | |
| 9/31 | dibusb: don't do DMA on stackdrivers/ drivers/ | +85 | 0 replies | |
| 10/31 | dibusb: handle error code on RC querydrivers/ | +6 | 0 replies | |
| 11/31 | digitv: don't do DMA on stackdrivers/ drivers/ | +14 | 0 replies | |
| 12/31 | dtt200u-fe: don't keep waiting for lock at set_frontend()drivers/ | +0 | 0 replies | |
| 13/31 | dtt200u-fe: don't do DMA on stackdrivers/ | +65 | 0 replies | |
| 14/31 | dtt200u-fe: handle errors on USB control messagesdrivers/ | +31 | 0 replies | |
| 15/31 | dtt200u: don't do DMA on stackdrivers/ | +75 | 0 replies | |
| 16/31 | dtt200u: handle USB control message errorsdrivers/ | +18 | 0 replies | |
| 17/31 | dtv5100: don't do DMA on stackdrivers/ | +8 | 0 replies | |
| 18/31 | gp8psk: don't do DMA on stackdrivers/ | +12 | 3 replies | |
| 19/31 | gp8psk: don't go past the buffer sizedrivers/ | +11 | 0 replies | |
| 20/31 | nova-t-usb2: don't do DMA on stackdrivers/ | +13 | 0 replies | |
| 21/31 | pctv452e: don't do DMA on stackdrivers/ | +74 | 0 replies | |
| 22/31 | pctv452e: don't call BUG_ON() on non-fatal errordrivers/ | +4 | 0 replies | |
| 23/31 | technisat-usb2: use DMA buffers for I2C transfersdrivers/ | +11 | 0 replies | |
| 24/31 | dvb-usb: warn if return value for USB read/write routines is not checkeddrivers/ | +4 | 0 replies | |
| 25/31 | nova-t-usb2: handle error code on RC querydrivers/ | +6 | 0 replies | |
| 26/31 | dw2102: return error if su3000_power_ctrl() failsdrivers/ | +1 | 0 replies | |
| 27/31 | digitv: handle error code on RC querydrivers/ | +6 | 0 replies | |
| 28/31 | cpia2_usb: don't use stack for DMAdrivers/ | +29 | 2 replies | |
| 28/31 | cpia2_usb: don't use stack for DMAdrivers/ | +30 | 0 replies | |
| 29/31 | s2255drv: don't use stack for DMAdrivers/ | +13 | 0 replies | |
| 30/31 | stk-webcam: don't use stack for DMAdrivers/ | +11 | 0 replies | |
| 31/31 | flexcop-usb: don't use stack for DMAdrivers/ drivers/ | +72 | 0 replies |
Reviews trailers per patch
11 of 33 patches have a Reviewed-by or Acked-by.
| Patch | Patrick Boettcher |
|---|---|
| 1/31 | |
| 2/31 | R-b |
| 3/31 | |
| 3/31 | |
| 4/31 | |
| 5/31 | R-b |
| 6/31 | R-b |
| 7/31 | R-b |
| 8/31 | R-b |
| 9/31 | R-b |
| 10/31 | |
| 11/31 | R-b |
| 12/31 | |
| 13/31 | |
| 14/31 | |
| 15/31 | R-b |
| 16/31 | |
| 17/31 | |
| 18/31 | |
| 19/31 | |
| 20/31 | R-b |
| 21/31 | R-b |
| 22/31 | |
| 23/31 | R-b |
| 24/31 | |
| 25/31 | |
| 26/31 | |
| 27/31 | |
| 28/31 | |
| 28/31 | |
| 29/31 | |
| 30/31 | |
| 31/31 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH v2 00/31] Don't use stack for DMA transers on media usb drivers
Sending URB control messages from stack was never supported. Yet, on x86, the stack was usually at a memory region that allows DMA transfer.
So, several drivers got it wrong. On Kernel 4.9, if VMAP_STACK=y, none of those drivers will work, as the stack won't be on a DMA-able area anymore.
So, fix the media drivers that requre it. It should noticed that the vast majority are at dvb-usb.
Please notice that those patches are compile-tested only. So, I really appreciate if people with devices using those drivers could test and report if they don't break anything. I intend to send this
PS.: I didn't verify any media driver inside staging.
Version 2:
- Added other USB drivers that are out of dvb-usb. After this series, all drivers will use kmalloc'ed buffers, although I won't doubt that some implementations may still have issues.
- Be sure that, on all places where it is using a buffer allocated at the dvb-usb state structs, they'll be protected by some mutex. On some such cases, there was already a mutex at the DVB core. So, I didn't need to add a new one. Thanks to Antti that reminded me about such need.
Mauro Carvalho Chehab (31):
af9005: don't do DMA on stack
cinergyT2-core: don't do DMA on stack
cinergyT2-core: handle error code on RC query
cinergyT2-fe: cache stats at cinergyt2_fe_read_status()
cinergyT2-fe: don't do DMA on stack
cxusb: don't do DMA on stack
dib0700: be sure that dib0700_ctrl_rd() users can do DMA
dib0700_core: don't use stack on I2C reads
dibusb: don't do DMA on stack
dibusb: handle error code on RC query
digitv: don't do DMA on stack
dtt200u-fe: don't keep waiting for lock at set_frontend()
dtt200u-fe: don't do DMA on stack
dtt200u-fe: handle errors on USB control messages
dtt200u: don't do DMA on stack
dtt200u: handle USB control message errors
dtv5100: don't do DMA on stack
gp8psk: don't do DMA on stack
gp8psk: don't go past the buffer size
nova-t-usb2: don't do DMA on stack
pctv452e: don't do DMA on stack
pctv452e: don't call BUG_ON() on non-fatal error
technisat-usb2: use DMA buffers for I2C transfers
dvb-usb: warn if return value for USB read/write routines is not
checked
nova-t-usb2: handle error code on RC query
dw2102: return error if su3000_power_ctrl() fails
digitv: handle error code on RC query
cpia2_usb: don't use stack for DMA
s2255drv: don't use stack for DMA
stk-webcam: don't use stack for DMA
flexcop-usb: don't use stack for DMA
drivers/media/usb/b2c2/flexcop-usb.c | 105 +++++---- drivers/media/usb/b2c2/flexcop-usb.h | 4 + drivers/media/usb/cpia2/cpia2_usb.c | 32 ++- drivers/media/usb/dvb-usb/af9005.c | 317 ++++++++++++++++------------ drivers/media/usb/dvb-usb/cinergyT2-core.c | 90 +++++--- drivers/media/usb/dvb-usb/cinergyT2-fe.c | 100 ++++----- drivers/media/usb/dvb-usb/cxusb.c | 62 +++--- drivers/media/usb/dvb-usb/cxusb.h | 6 + drivers/media/usb/dvb-usb/dib0700_core.c | 31 ++- drivers/media/usb/dvb-usb/dib0700_devices.c | 25 +-- drivers/media/usb/dvb-usb/dibusb-common.c | 113 +++++++--- drivers/media/usb/dvb-usb/dibusb.h | 3 + drivers/media/usb/dvb-usb/digitv.c | 26 ++- drivers/media/usb/dvb-usb/digitv.h | 3 + drivers/media/usb/dvb-usb/dtt200u-fe.c | 128 +++++++---- drivers/media/usb/dvb-usb/dtt200u.c | 120 ++++++++--- drivers/media/usb/dvb-usb/dtv5100.c | 10 +- drivers/media/usb/dvb-usb/dvb-usb.h | 6 +- drivers/media/usb/dvb-usb/dw2102.c | 2 +- drivers/media/usb/dvb-usb/gp8psk.c | 25 ++- drivers/media/usb/dvb-usb/nova-t-usb2.c | 25 ++- drivers/media/usb/dvb-usb/pctv452e.c | 136 +++++++----- drivers/media/usb/dvb-usb/technisat-usb2.c | 16 +- drivers/media/usb/s2255/s2255drv.c | 15 +- drivers/media/usb/stkwebcam/stk-webcam.c | 16 +- 25 files changed, 918 insertions(+), 498 deletions(-)
Signature · 1 line
2.7.4