Logan, > > In preparation for unconditionally passing the > > struct tasklet_struct pointer to all tasklet > > callbacks, switch to using the new tasklet_setup() > > and from_tasklet() to pass the tasklet pointer explicitly. > > > > Signed-off-by: Allen Pais <allen.lkml@xxxxxxxxx> > > --- > > drivers/dma/plx_dma.c | 7 +++---- > > 1 file changed, 3 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/dma/plx_dma.c b/drivers/dma/plx_dma.c > > index db4c5fd453a9..f387c5bbc170 100644 > > --- a/drivers/dma/plx_dma.c > > +++ b/drivers/dma/plx_dma.c > > @@ -241,9 +241,9 @@ static void plx_dma_stop(struct plx_dma_dev *plxdev) > > rcu_read_unlock(); > > } > > > > -static void plx_dma_desc_task(unsigned long data) > > +static void plx_dma_desc_task(struct tasklet_struct *t) > > { > > - struct plx_dma_dev *plxdev = (void *)data; > > + struct plx_dma_dev *plxdev = from_tasklet(plxdev, t, desc_task); > > The discussion I saw on another thread suggested the private macro > from_tasklet() would be replaced with something generic. So isn't this > patchset a bit premature? Yes, but efforts to replace it with something generic was not well accepted. We were left with either using a private macro from_tasklet() or use well known container_of(). I have left it to the maintainers to decide which one they prefer. -- - Allen