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) ...@@ -1382,44 +1382,29 @@ static inline struct console *SUNSU_CONSOLE(void)
static enum su_type su_get_type(struct device_node *dp) static enum su_type su_get_type(struct device_node *dp)
{ {
struct device_node *ap = of_find_node_by_path("/aliases"); struct device_node *ap __free(device_node) =
enum su_type rc = SU_PORT_PORT; of_find_node_by_path("/aliases");
if (ap) { if (ap) {
const char *keyb = of_get_property(ap, "keyboard", NULL); const char *keyb = of_get_property(ap, "keyboard", NULL);
const char *ms = of_get_property(ap, "mouse", NULL); const char *ms = of_get_property(ap, "mouse", NULL);
struct device_node *match;
if (keyb) { if (keyb) {
match = of_find_node_by_path(keyb); struct device_node *match __free(device_node) =
of_find_node_by_path(keyb);
/* if (dp == match)
* The pointer is used as an identifier not return SU_PORT_KBD;
* 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 (ms) { 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)
return SU_PORT_MS;
if (dp == match) {
rc = SU_PORT_MS;
goto out;
}
} }
} }
return SU_PORT_PORT;
out:
of_node_put(ap);
return rc;
} }
static int su_probe(struct platform_device *op) 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