mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
tty: sunsu: Simplify device_node cleanup by using __free
Add `__free` function attribute to `ap` and `match` pointer initialisations which ensure that the pointers are freed as soon as they go out of scope, thus removing the need to manually free them using `of_node_put`. This also removes the need for the `goto` statement and the `rc` variable. Suggested-by: Julia Lawall <julia.lawall@inria.fr> Signed-off-by: Shresth Prasad <shresthprasad7@gmail.com> Link: https://lore.kernel.org/r/20240518114051.18125-3-shresthprasad7@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c3f38fa61a
commit
0bb17fdc67
@ -1382,44 +1382,29 @@ static inline struct console *SUNSU_CONSOLE(void)
|
||||
|
||||
static enum su_type su_get_type(struct device_node *dp)
|
||||
{
|
||||
struct device_node *ap = of_find_node_by_path("/aliases");
|
||||
enum su_type rc = SU_PORT_PORT;
|
||||
struct device_node *ap __free(device_node) =
|
||||
of_find_node_by_path("/aliases");
|
||||
|
||||
if (ap) {
|
||||
const char *keyb = of_get_property(ap, "keyboard", NULL);
|
||||
const char *ms = of_get_property(ap, "mouse", NULL);
|
||||
struct device_node *match;
|
||||
|
||||
if (keyb) {
|
||||
match = of_find_node_by_path(keyb);
|
||||
struct device_node *match __free(device_node) =
|
||||
of_find_node_by_path(keyb);
|
||||
|
||||
/*
|
||||
* The pointer is used as an identifier not
|
||||
* as a pointer, we can drop the refcount on
|
||||
* the of__node immediately after getting it.
|
||||
*/
|
||||
of_node_put(match);
|
||||
|
||||
if (dp == match) {
|
||||
rc = SU_PORT_KBD;
|
||||
goto out;
|
||||
}
|
||||
if (dp == match)
|
||||
return SU_PORT_KBD;
|
||||
}
|
||||
if (ms) {
|
||||
match = of_find_node_by_path(ms);
|
||||
struct device_node *match __free(device_node) =
|
||||
of_find_node_by_path(ms);
|
||||
|
||||
of_node_put(match);
|
||||
|
||||
if (dp == match) {
|
||||
rc = SU_PORT_MS;
|
||||
goto out;
|
||||
}
|
||||
if (dp == match)
|
||||
return SU_PORT_MS;
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
of_node_put(ap);
|
||||
return rc;
|
||||
return SU_PORT_PORT;
|
||||
}
|
||||
|
||||
static int su_probe(struct platform_device *op)
|
||||
|
Loading…
Reference in New Issue
Block a user