Messages in this thread | | | Date | Sat, 10 Nov 2012 09:00:15 +0530 | Subject | Re: [PATCH] dmatest: Fix NULL pointer dereference on ioat | From | viresh kumar <> |
| |
On Sat, Nov 10, 2012 at 2:27 AM, Jon Mason <jon.mason@intel.com> wrote: > device_control is an optional and not implemented in all DMA drivers. > Any calls to these will result in a NULL pointer dereference. dmatest > makes two of these calls when completing the kernel thread and removing > the module. These are corrected by calling the dmaengine_device_control > wrapper and checking for a non-existant device_control function pointer > there. > > Signed-off-by: Jon Mason <jon.mason@intel.com> > CC: Vinod Koul <vinod.koul@intel.com> > CC: Dan Williams <djbw@fb.com> > --- > drivers/dma/dmatest.c | 4 ++-- > include/linux/dmaengine.h | 5 ++++- > 2 files changed, 6 insertions(+), 3 deletions(-) >
> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h > index d3201e4..e0004fb 100644 > --- a/include/linux/dmaengine.h > +++ b/include/linux/dmaengine.h > @@ -608,7 +608,10 @@ static inline int dmaengine_device_control(struct dma_chan *chan, > enum dma_ctrl_cmd cmd, > unsigned long arg) > { > - return chan->device->device_control(chan, cmd, arg); > + if (chan->device->device_control) > + return chan->device->device_control(chan, cmd, arg); > + else > + return -EINVAL;
-ENOTSUPP or -ENOSYS ??
@Dan: I believe i don't have to send another version now. Correct??
-- viresh
| |