Message ID | 1427456155-28990-5-git-send-email-peter.ujfalusi@ti.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On Fri, 2015-03-27 at 13:35 +0200, Peter Ujfalusi wrote: > The vd->node is removed from the lists when the transfer started so the > vchan_get_all_descriptors() will not find it. This results memory leak. > Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Though this one would go via Greg's tty tree (Cc'ed) I think. It becomes to regular work flow after 4.1-rc1. > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > CC: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- > drivers/dma/hsu/hsu.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma/hsu/hsu.c b/drivers/dma/hsu/hsu.c > index 683ba9b62795..d1864bda008f 100644 > --- a/drivers/dma/hsu/hsu.c > +++ b/drivers/dma/hsu/hsu.c > @@ -387,7 +387,10 @@ static int hsu_dma_terminate_all(struct dma_chan *chan) > spin_lock_irqsave(&hsuc->vchan.lock, flags); > > hsu_dma_stop_channel(hsuc); > - hsuc->desc = NULL; > + if (hsuc->desc) { > + hsu_dma_desc_free(&hsuc->desc->vchan); > + hsuc->desc = NULL; > + } > > vchan_get_all_descriptors(&hsuc->vchan, &head); > spin_unlock_irqrestore(&hsuc->vchan.lock, flags);
On Fri, Mar 27, 2015 at 02:01:58PM +0200, Andy Shevchenko wrote: > On Fri, 2015-03-27 at 13:35 +0200, Peter Ujfalusi wrote: > > The vd->node is removed from the lists when the transfer started so the > > vchan_get_all_descriptors() will not find it. This results memory leak. > > > > Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Acked-by: Vinod Koul <vinod.koul@intel.com> Greg, Please apply this in your queue for next
On Mon, Mar 30, 2015 at 11:07:32PM +0530, Vinod Koul wrote: > On Fri, Mar 27, 2015 at 02:01:58PM +0200, Andy Shevchenko wrote: > > On Fri, 2015-03-27 at 13:35 +0200, Peter Ujfalusi wrote: > > > The vd->node is removed from the lists when the transfer started so the > > > vchan_get_all_descriptors() will not find it. This results memory leak. > > > > > > > Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > Acked-by: Vinod Koul <vinod.koul@intel.com> > > Greg, > > Please apply this in your queue for next Apply what? Can someone resend this in a format I can apply it in? thanks, gregk -h -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Apr 28, 2015 at 01:17:08PM +0200, 'Greg Kroah-Hartman' wrote: > On Mon, Mar 30, 2015 at 11:07:32PM +0530, Vinod Koul wrote: > > On Fri, Mar 27, 2015 at 02:01:58PM +0200, Andy Shevchenko wrote: > > > On Fri, 2015-03-27 at 13:35 +0200, Peter Ujfalusi wrote: > > > > The vd->node is removed from the lists when the transfer started so the > > > > vchan_get_all_descriptors() will not find it. This results memory leak. > > > > > > > > > > Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > Acked-by: Vinod Koul <vinod.koul@intel.com> > > > > Greg, > > > > Please apply this in your queue for next > > Apply what? Can someone resend this in a format I can apply it in? Ah sorry Greg, I thought you were cced in the orignal patch as well, so.. Peter, can you resend, now that this is in my next I will apply it
On Fri, 2015-03-27 at 13:35 +0200, Peter Ujfalusi wrote: > The vd->node is removed from the lists when the transfer started so the > vchan_get_all_descriptors() will not find it. This results memory leak. > > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > CC: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- > drivers/dma/hsu/hsu.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma/hsu/hsu.c b/drivers/dma/hsu/hsu.c > index 683ba9b62795..d1864bda008f 100644 > --- a/drivers/dma/hsu/hsu.c > +++ b/drivers/dma/hsu/hsu.c > @@ -387,7 +387,10 @@ static int hsu_dma_terminate_all(struct dma_chan *chan) > spin_lock_irqsave(&hsuc->vchan.lock, flags); > > hsu_dma_stop_channel(hsuc); > - hsuc->desc = NULL; > + if (hsuc->desc) { > + hsu_dma_desc_free(&hsuc->desc->vchan); By the way, it should be 'vdesc);' at the end. > + hsuc->desc = NULL; > + } > > vchan_get_all_descriptors(&hsuc->vchan, &head); > spin_unlock_irqrestore(&hsuc->vchan.lock, flags);
On Mon, 2015-05-04 at 16:34 +0530, Vinod Koul wrote:
[]
> Peter, can you resend, now that this is in my next I will apply it
I just did this. Please, apply.
diff --git a/drivers/dma/hsu/hsu.c b/drivers/dma/hsu/hsu.c index 683ba9b62795..d1864bda008f 100644 --- a/drivers/dma/hsu/hsu.c +++ b/drivers/dma/hsu/hsu.c @@ -387,7 +387,10 @@ static int hsu_dma_terminate_all(struct dma_chan *chan) spin_lock_irqsave(&hsuc->vchan.lock, flags); hsu_dma_stop_channel(hsuc); - hsuc->desc = NULL; + if (hsuc->desc) { + hsu_dma_desc_free(&hsuc->desc->vchan); + hsuc->desc = NULL; + } vchan_get_all_descriptors(&hsuc->vchan, &head); spin_unlock_irqrestore(&hsuc->vchan.lock, flags);
The vd->node is removed from the lists when the transfer started so the vchan_get_all_descriptors() will not find it. This results memory leak. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> CC: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/dma/hsu/hsu.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)