iio: trigger: clean up viio_trigger_alloc()
1) Reverse the test for kmalloc() failure so we can pull everything back one tab. 2) Use gotos for unwinding. 3) Some of the extra line breaks for the 80 character limit are no longer needed so we can remove them. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
99a22f062b
commit
2c99f1a09d
1 changed files with 33 additions and 34 deletions
|
@ -518,46 +518,45 @@ static void iio_trig_subirqunmask(struct irq_data *d)
|
|||
static struct iio_trigger *viio_trigger_alloc(const char *fmt, va_list vargs)
|
||||
{
|
||||
struct iio_trigger *trig;
|
||||
trig = kzalloc(sizeof *trig, GFP_KERNEL);
|
||||
if (trig) {
|
||||
int i;
|
||||
|
||||
trig = kzalloc(sizeof *trig, GFP_KERNEL);
|
||||
if (!trig)
|
||||
return NULL;
|
||||
|
||||
trig->dev.type = &iio_trig_type;
|
||||
trig->dev.bus = &iio_bus_type;
|
||||
device_initialize(&trig->dev);
|
||||
|
||||
mutex_init(&trig->pool_lock);
|
||||
trig->subirq_base
|
||||
= irq_alloc_descs(-1, 0,
|
||||
trig->subirq_base = irq_alloc_descs(-1, 0,
|
||||
CONFIG_IIO_CONSUMERS_PER_TRIGGER,
|
||||
0);
|
||||
if (trig->subirq_base < 0) {
|
||||
kfree(trig);
|
||||
return NULL;
|
||||
}
|
||||
if (trig->subirq_base < 0)
|
||||
goto free_trig;
|
||||
|
||||
trig->name = kvasprintf(GFP_KERNEL, fmt, vargs);
|
||||
if (trig->name == NULL) {
|
||||
irq_free_descs(trig->subirq_base,
|
||||
CONFIG_IIO_CONSUMERS_PER_TRIGGER);
|
||||
kfree(trig);
|
||||
return NULL;
|
||||
}
|
||||
if (trig->name == NULL)
|
||||
goto free_descs;
|
||||
|
||||
trig->subirq_chip.name = trig->name;
|
||||
trig->subirq_chip.irq_mask = &iio_trig_subirqmask;
|
||||
trig->subirq_chip.irq_unmask = &iio_trig_subirqunmask;
|
||||
for (i = 0; i < CONFIG_IIO_CONSUMERS_PER_TRIGGER; i++) {
|
||||
irq_set_chip(trig->subirq_base + i,
|
||||
&trig->subirq_chip);
|
||||
irq_set_handler(trig->subirq_base + i,
|
||||
&handle_simple_irq);
|
||||
irq_set_chip(trig->subirq_base + i, &trig->subirq_chip);
|
||||
irq_set_handler(trig->subirq_base + i, &handle_simple_irq);
|
||||
irq_modify_status(trig->subirq_base + i,
|
||||
IRQ_NOREQUEST | IRQ_NOAUTOEN,
|
||||
IRQ_NOPROBE);
|
||||
IRQ_NOREQUEST | IRQ_NOAUTOEN, IRQ_NOPROBE);
|
||||
}
|
||||
get_device(&trig->dev);
|
||||
}
|
||||
|
||||
return trig;
|
||||
|
||||
free_descs:
|
||||
irq_free_descs(trig->subirq_base, CONFIG_IIO_CONSUMERS_PER_TRIGGER);
|
||||
free_trig:
|
||||
kfree(trig);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct iio_trigger *iio_trigger_alloc(const char *fmt, ...)
|
||||
|
|
Loading…
Reference in a new issue