Messages in this thread | | | Date | Mon, 16 Mar 2009 21:52:10 -0700 | Subject | Re: [PATCH 1/2] dmaengine: TXx9 Soc DMA Controller driver | From | Dan Williams <> |
| |
On Mon, Mar 16, 2009 at 7:20 PM, Atsushi Nemoto <anemo@mba.ocn.ne.jp> wrote: > On Mon, 16 Mar 2009 14:50:46 -0700, Dan Williams <dan.j.williams@intel.com> wrote: >> > And above "continue" looks buggy anyway. Keeping incomplete channels >> > in device->channels list looks very dangerous... >> >> Yes it does. Here is the proposed fix: >> -----> >> dmaengine: fail device registration if channel registration fails >> >> From: Dan Williams <dan.j.williams@intel.com> >> >> Atsushi points out: >> "If alloc_percpu or kzalloc failed, chan_id does not match with its >> position in device->channels list. >> >> And above "continue" looks buggy anyway. Keeping incomplete channels >> in device->channels list looks very dangerous..." >> >> Reported-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> >> Signed-off-by: Dan Williams <dan.j.williams@intel.com> > > Thanks, but it seems a hole sill exists. If alloc_percpu or kzalloc > for the first channel failed, when idr_ref will be freed ? >
True, we need a check like the following:
/* if we never registered a channel just release the idr */ if (atomic_read(idr_ref) == 0) { mutex_lock(&dma_list_mutex); idr_remove(&dma_idr, device->dev_id); mutex_unlock(&dma_list_mutex); kfree(idr_ref); return rc; }
> Hmm.. why idr_ref is dynamically allocated? Just putting it in > dma_device makes thing more simple, no? >
The sysfs device has a longer lifetime than dma_device. See commit 41d5e59c [1].
-- Dan
[1] http://git.kernel.org/?p=linux/kernel/git/djbw/async_tx.git;a=commitdiff;h=41d5e59c
> --- > Atsushi Nemoto > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |