[PATCH] CLKDEV: Add helper routines to allocate and add clkdevs for given struct clk *

Russell King - ARM Linux linux at arm.linux.org.uk
Mon Apr 16 06:38:22 EDT 2012


On Mon, Apr 16, 2012 at 04:00:53PM +0530, Viresh Kumar wrote:
> On 4/16/2012 3:55 PM, Domenico Andreoli wrote:
> > On Mon, Apr 16, 2012 at 10:49:37AM +0530, Viresh Kumar wrote:
> >> From: Russell King <rmk+kernel at arm.linux.org.uk>
> >> diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c
> >> +int clk_register_single_clkdev(struct clk *clk, const char *dev_id,
> >> +		const char *con_id)
> >> +{
> >> +	struct clk_lookup *cl;
> >> +
> >> +	if (!clk || (!dev_id && !con_id))
> >> +		return -ENOMEM;
> > 
> > I would return -EINVAL here.
> 
> Will fix it.

Do we actually need this kind of check?

> >> +int clk_register_clkdevs(struct clk *clk, struct clk_lookup *cl, size_t num)
> >> +{
> >> +	unsigned i;
> >> +
> >> +	if (!clk || !cl || !num)
> >> +		return -ENOMEM;
> > 
> > I would return -EINVAL here as well.
> 
> Will fix this too.

Ditto.

I don't think these checks actually help anyone, especially if the user
forgets to check the return value (which makes them silent errors.)

If you're going to abuse the interface by passing a NULL clk_lookup or
num=0 then you deserve to get a big fat oops to tell you that you messed
up.  Same for NULL dev_id and con_id above.

Checking for NULL clk (or IS_ERR(clk)) and returning -ENOMEM does make
sense as I mentioned in my original proposal (it allows you to pass the
returned value from clk_register() directly to this function without
further checking, and you get the right error code.



More information about the linux-arm-kernel mailing list