Re: [PATCH 11/31] dma: add channel request API that supports deferred probe

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/20/2013 01:23 PM, Williams, Dan J wrote:
...
> Why do the drivers that call dma_request_channel need to convert it to
> an ERR value?  i.e. what's problematic about the below (not compile
> tested)?
...
> diff --git a/arch/arm/plat-samsung/dma-ops.c b/arch/arm/plat-samsung/dma-ops.c
...
> @@ -22,16 +22,20 @@ static unsigned samsung_dmadev_request(enum dma_ch dma_ch,
>  				struct samsung_dma_req *param,
>  				struct device *dev, char *ch_name)
...
> +	if (dev->of_node) {
> +		chan = dma_request_slave_channel(dev, ch_name);
> +		return IS_ERR(chan) ? (unsigned) NULL : (unsigned) chan;
> +	} else {
>  		return (unsigned)dma_request_channel(mask, pl330_filter,
>  							(void *)dma_ch);
> +	}

The argument is that if a function returns errors encoded as an ERR
pointer, then callers must assume that any non-IS_ERR value that the
function returns is valid. NULL is one of those values. As such, callers
can no longer check the value against NULL, but must use IS_ERR().
Converting any IS_ERR() returns to NULL theoretically is the act of
converting one valid return value to some other completely random return
value.

The converse is true for functions that return errors encoded as NULL;
callers must check those return results against NULL.

There's no intersection between those two sets of legal tests.
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux