docs: driver-api pinctrl cleanup
Replace FIXME comments in the pinctrl documentation example with proper cleanup code: - Add devm_pinctrl_put() calls in error paths (pinctrl_lookup_state, pinctrl_select_state) after successful devm_pinctrl_get() - Set foo->p to NULL when devm_pinctrl_get() fails - Add ret variable for cleaner error handling - provides proper example of pinctrl resource management on failure Signed-off-by: Alex Tran <alex.t.tran@gmail.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Link: https://lore.kernel.org/r/20250827074525.685863-1-alex.t.tran@gmail.com
This commit is contained in:
committed by
Jonathan Corbet
parent
ee9a669193
commit
2dddb2792b
@@ -1202,22 +1202,24 @@ default state like this:
|
||||
{
|
||||
/* Allocate a state holder named "foo" etc */
|
||||
struct foo_state *foo = ...;
|
||||
int ret;
|
||||
|
||||
foo->p = devm_pinctrl_get(&device);
|
||||
if (IS_ERR(foo->p)) {
|
||||
/* FIXME: clean up "foo" here */
|
||||
return PTR_ERR(foo->p);
|
||||
ret = PTR_ERR(foo->p);
|
||||
foo->p = NULL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
foo->s = pinctrl_lookup_state(foo->p, PINCTRL_STATE_DEFAULT);
|
||||
if (IS_ERR(foo->s)) {
|
||||
/* FIXME: clean up "foo" here */
|
||||
devm_pinctrl_put(foo->p);
|
||||
return PTR_ERR(foo->s);
|
||||
}
|
||||
|
||||
ret = pinctrl_select_state(foo->p, foo->s);
|
||||
if (ret < 0) {
|
||||
/* FIXME: clean up "foo" here */
|
||||
devm_pinctrl_put(foo->p);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user