[PATCH v2] iio:trigger: Introduce the use of devm_kzalloc

Julia Lawall julia.lawall at lip6.fr
Mon Jul 7 12:52:02 UTC 2014


On Mon, 7 Jul 2014, Jonathan Cameron wrote:

> On 01/07/14 22:19, Himangi Saraogi wrote:
> > This patch introduces the use of the managed version of kzalloc and
> > removes the kfrees in the probe and remove functions. More return
> > paths are added and the labels are renamed to order them.
> >
> > Signed-off-by: Himangi Saraogi <himangi774 at gmail.com>
> Looks sane, but I'd like an ack or reviewed-by from someone as Analog for this
> one.
> cc'd Lars and Michael.

Should MAINTAINERS be updated somehow?

julia

>
> > ---
> > v2: add more return paths
> > Not compile tested.
> >   drivers/staging/iio/trigger/iio-trig-bfin-timer.c | 31
> > ++++++++---------------
> >   1 file changed, 11 insertions(+), 20 deletions(-)
> >
> > diff --git a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
> > b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
> > index 16f1a06..a21b7c5 100644
> > --- a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
> > +++ b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
> > @@ -182,45 +182,40 @@ static int iio_bfin_tmr_trigger_probe(struct
> > platform_device *pdev)
> >   	unsigned int config;
> >   	int ret;
> >
> > -	st = kzalloc(sizeof(*st), GFP_KERNEL);
> > -	if (st == NULL) {
> > -		ret = -ENOMEM;
> > -		goto out;
> > -	}
> > +	st = devm_kzalloc(&pdev->dev, sizeof(*st), GFP_KERNEL);
> > +	if (st == NULL)
> > +		return -ENOMEM;
> >
> >   	st->irq = platform_get_irq(pdev, 0);
> >   	if (!st->irq) {
> >   		dev_err(&pdev->dev, "No IRQs specified");
> > -		ret = -ENODEV;
> > -		goto out1;
> > +		return -ENODEV;
> >   	}
> >
> >   	ret = iio_bfin_tmr_get_number(st->irq);
> >   	if (ret < 0)
> > -		goto out1;
> > +		return ret;
> >
> >   	st->timer_num = ret;
> >   	st->t = &iio_bfin_timer_code[st->timer_num];
> >
> >   	st->trig = iio_trigger_alloc("bfintmr%d", st->timer_num);
> > -	if (!st->trig) {
> > -		ret = -ENOMEM;
> > -		goto out1;
> > -	}
> > +	if (!st->trig)
> > +		return -ENOMEM;
> >
> >   	st->trig->ops = &iio_bfin_tmr_trigger_ops;
> >   	st->trig->dev.groups = iio_bfin_tmr_trigger_attr_groups;
> >   	iio_trigger_set_drvdata(st->trig, st);
> >   	ret = iio_trigger_register(st->trig);
> >   	if (ret)
> > -		goto out2;
> > +		goto out;
> >
> >   	ret = request_irq(st->irq, iio_bfin_tmr_trigger_isr,
> >   			  0, st->trig->name, st);
> >   	if (ret) {
> >   		dev_err(&pdev->dev,
> >   			"request IRQ-%d failed", st->irq);
> > -		goto out4;
> > +		goto out1;
> >   	}
> >
> >   	config = PWM_OUT | PERIOD_CNT | IRQ_ENA;
> > @@ -260,13 +255,10 @@ static int iio_bfin_tmr_trigger_probe(struct
> > platform_device *pdev)
> >   	return 0;
> >   out_free_irq:
> >   	free_irq(st->irq, st);
> > -out4:
> > -	iio_trigger_unregister(st->trig);
> > -out2:
> > -	iio_trigger_put(st->trig);
> >   out1:
> > -	kfree(st);
> > +	iio_trigger_unregister(st->trig);
> >   out:
> > +	iio_trigger_put(st->trig);
> >   	return ret;
> >   }
> >
> > @@ -280,7 +272,6 @@ static int iio_bfin_tmr_trigger_remove(struct
> > platform_device *pdev)
> >   	free_irq(st->irq, st);
> >   	iio_trigger_unregister(st->trig);
> >   	iio_trigger_put(st->trig);
> > -	kfree(st);
> >
> >   	return 0;
> >   }
> >
>
>


More information about the devel mailing list