On Wed, Oct 5, 2016 at 11:58 AM, Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> wrote: > Sorry, forgot to C/C people that are at the "Re: Problem with VMAP_STACK=y" > thread. > > Forwarded message: > > Date: Wed, 5 Oct 2016 15:54:18 -0300 > From: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> > To: Linux Doc Mailing List <linux-doc@xxxxxxxxxxxxxxx> > Cc: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>, Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxx>, Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> > Subject: [PATCH v2] cinergyT2-core: don't do DMA on stack > > > The USB control messages require DMA to work. We cannot pass > a stack-allocated buffer, as it is not warranted that the > stack would be into a DMA enabled area. > > Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> > --- > > Added the fixups made by Johannes Stezenbach > > drivers/media/usb/dvb-usb/cinergyT2-core.c | 45 ++++++++++++++++++------------ > 1 file changed, 27 insertions(+), 18 deletions(-) > > diff --git a/drivers/media/usb/dvb-usb/cinergyT2-core.c b/drivers/media/usb/dvb-usb/cinergyT2-core.c > index 9fd1527494eb..8267e3777af6 100644 > --- a/drivers/media/usb/dvb-usb/cinergyT2-core.c > +++ b/drivers/media/usb/dvb-usb/cinergyT2-core.c > @@ -41,6 +41,7 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr); > > struct cinergyt2_state { > u8 rc_counter; > + unsigned char data[64]; > }; > > /* We are missing a release hook with usb_device data */ > @@ -50,29 +51,36 @@ static struct dvb_usb_device_properties cinergyt2_properties; > > static int cinergyt2_streaming_ctrl(struct dvb_usb_adapter *adap, int enable) > { > - char buf[] = { CINERGYT2_EP1_CONTROL_STREAM_TRANSFER, enable ? 1 : 0 }; > - char result[64]; > - return dvb_usb_generic_rw(adap->dev, buf, sizeof(buf), result, > - sizeof(result), 0); > + struct dvb_usb_device *d = adap->dev; > + struct cinergyt2_state *st = d->priv; > + > + st->data[0] = CINERGYT2_EP1_CONTROL_STREAM_TRANSFER; > + st->data[1] = enable ? 1 : 0; > + > + return dvb_usb_generic_rw(d, st->data, 2, st->data, 64, 0); > } > > static int cinergyt2_power_ctrl(struct dvb_usb_device *d, int enable) > { This... > - char buf[] = { CINERGYT2_EP1_SLEEP_MODE, enable ? 0 : 1 }; > - char state[3]; > - return dvb_usb_generic_rw(d, buf, sizeof(buf), state, sizeof(state), 0); > + struct cinergyt2_state *st = d->priv; > + > + st->data[0] = CINERGYT2_EP1_SLEEP_MODE; ...does not match this: > + st->data[1] = enable ? 1 : 0; --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html