mirror of https://gitee.com/openkylin/linux.git
gpiolib: split error path in gpiod_request_commit()
For better maintenance and micro optimization split error path in the gpiod_request_commit(). Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
This commit is contained in:
parent
8bbff39c6c
commit
95d9f84fca
|
@ -1968,11 +1968,9 @@ static int gpiod_request_commit(struct gpio_desc *desc, const char *label)
|
||||||
|
|
||||||
if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) {
|
if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) {
|
||||||
desc_set_label(desc, label ? : "?");
|
desc_set_label(desc, label ? : "?");
|
||||||
ret = 0;
|
|
||||||
} else {
|
} else {
|
||||||
kfree_const(label);
|
|
||||||
ret = -EBUSY;
|
ret = -EBUSY;
|
||||||
goto done;
|
goto out_free_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gc->request) {
|
if (gc->request) {
|
||||||
|
@ -1987,9 +1985,8 @@ static int gpiod_request_commit(struct gpio_desc *desc, const char *label)
|
||||||
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
desc_set_label(desc, NULL);
|
desc_set_label(desc, NULL);
|
||||||
kfree_const(label);
|
|
||||||
clear_bit(FLAG_REQUESTED, &desc->flags);
|
clear_bit(FLAG_REQUESTED, &desc->flags);
|
||||||
goto done;
|
goto out_free_unlock;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (gc->get_direction) {
|
if (gc->get_direction) {
|
||||||
|
@ -1998,8 +1995,12 @@ static int gpiod_request_commit(struct gpio_desc *desc, const char *label)
|
||||||
gpiod_get_direction(desc);
|
gpiod_get_direction(desc);
|
||||||
spin_lock_irqsave(&gpio_lock, flags);
|
spin_lock_irqsave(&gpio_lock, flags);
|
||||||
}
|
}
|
||||||
done:
|
|
||||||
spin_unlock_irqrestore(&gpio_lock, flags);
|
spin_unlock_irqrestore(&gpio_lock, flags);
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
out_free_unlock:
|
||||||
|
spin_unlock_irqrestore(&gpio_lock, flags);
|
||||||
|
kfree_const(label);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue