[PATCH 2/3] ARM: SAMSUNG: Modify pl330 channel filter function
thomas.abraham at linaro.org
Tue Aug 23 11:59:43 EDT 2011
On 23 August 2011 03:22, Russell King - ARM Linux
<linux at arm.linux.org.uk> wrote:
> On Tue, Aug 23, 2011 at 03:29:44AM +0530, Thomas Abraham wrote:
>> With the change in dma channels private data information, the pl330
>> channel filter function is modified to look for a simple u8 value
>> instead of the now unused 'struct dma_pl330_peri' value.
>> Signed-off-by: Thomas Abraham <thomas.abraham at linaro.org>
>> arch/arm/plat-samsung/dma-ops.c | 4 ++--
>> 1 files changed, 2 insertions(+), 2 deletions(-)
>> diff --git a/arch/arm/plat-samsung/dma-ops.c b/arch/arm/plat-samsung/dma-ops.c
>> index 6e3d9ab..4f1430b 100644
>> --- a/arch/arm/plat-samsung/dma-ops.c
>> +++ b/arch/arm/plat-samsung/dma-ops.c
>> @@ -19,8 +19,8 @@
>> static inline bool pl330_filter(struct dma_chan *chan, void *param)
>> - struct dma_pl330_peri *peri = chan->private;
>> - return peri->peri_id == (unsigned)param;
>> + u8 *peri_id = chan->private;
>> + return *peri_id == (unsigned)param;
> As a word of warning - this will fail horribly if you have mixed DMA
> engines in the system. While we wait for a better scheme, we really
> need to sort out these filter functions properly and stop poking
> about in data which may not be what we expect.
> One solution to that is to move pl330_filter() into drivers/dma/pl330.c
> and have it check chan->device->dev->driver == &pl330_driver.driver
> _before_ we start accessing chan->private.
> That's not a comment against your patch - you're not really changing
> the brokenness of this function. It would be good to see a follow up
> patch fixing it properly though.
Ok. I will prepare a patch to move the pl330_filter function into
drivers/dma/pl330.c and also add the check that you have proposed.
Thanks for your help.
More information about the linux-arm-kernel