Commit 0bb17fdc authored by Shresth Prasad's avatar Shresth Prasad Committed by Greg Kroah-Hartman

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: default avatarJulia Lawall <julia.lawall@inria.fr>
Signed-off-by: default avatarShresth Prasad <shresthprasad7@gmail.com>
Link: https://lore.kernel.org/r/20240518114051.18125-3-shresthprasad7@gmail.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c3f38fa6
......@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment