Input: i8042 add of_node_put()
Subsystems (2)
PATCH 1/1 Input: i8042 add of_node_put()
use of_node_put() to release the refcount.
Signed-off-by Yangtao Li <[email protected]>
--- drivers/input/serio/i8042-sparcio.h | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-)
drivers/input/serio/i8042-sparcio.h +17 -7
@@ -108,18 +108,21 @@ static struct platform_driver sparc_i8042_driver = {static int __init i8042_platform_init (void ) { +int rc;struct device_node *root =of_find_node_by_path ("/" );if (!strcmp (root->name,"SUNW,JavaStation-1" )) {/* Hardcoded values for MrCoffee. */ i8042_kbd_irq = i8042_aux_irq =13 |0x20 ; kbd_iobase =ioremap (0x71300060 ,8 ); -if (!kbd_iobase) -return -ENODEV ; +if (!kbd_iobase){ + rc = -ENODEV ; + goto out; + } }else { -int err =platform_driver_register (&sparc_i8042_driver); -if (err) -return err; + rc =platform_driver_register (&sparc_i8042_driver); +if (rc) + goto out;if (i8042_kbd_irq ==-1 || i8042_aux_irq ==-1 ) {
@@ -127,13 +130,18 @@ static int __init i8042_platform_init(void)of_iounmap (kbd_res, kbd_iobase,8 ); kbd_iobase = (void __iomem *)NULL ; } -return -ENODEV ; + rc = -ENODEV ; + goto out; } } i8042_reset =I8042_RESET_ALWAYS ; -return 0 ; + rc =0 ; +out: +of_node_put (root); + +return rc; }static inline void i8042_platform_exit (void )
@@ -142,6 +150,8 @@ static inline void i8042_platform_exit(void)if (strcmp (root->name,"SUNW,JavaStation-1" ))platform_driver_unregister (&sparc_i8042_driver); + + of_node_put(root); }#else /* !CONFIG_PCI */
Signature · 1 line
2.17.0
Dmitry Torokhov
maintainerHi Yangtao,
Quoted 46 lines · Yangtao Li
use
of_node_put()to release the refcount.Signed-off-by Yangtao Li <[email protected]>--- drivers/input/serio/i8042-sparcio.h | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-)drivers/input/serio/i8042-sparcio.h +10
-6@@ -108,18 +108,21 @@ static struct platform_driver sparc_i8042_driver = {static int __init i8042_platform_init (void ) { +int rc;struct device_node *root =of_find_node_by_path ("/" );if (!strcmp (root->name,"SUNW,JavaStation-1" )) {/* Hardcoded values for MrCoffee. */ i8042_kbd_irq = i8042_aux_irq =13 |0x20 ; kbd_iobase =ioremap (0x71300060 ,8 ); -if (!kbd_iobase) -return -ENODEV ; +if (!kbd_iobase){ + rc = -ENODEV ; + goto out; + } }else { -int err =platform_driver_register (&sparc_i8042_driver); -if (err) -return err; + rc =platform_driver_register (&sparc_i8042_driver); +if (rc) + goto out;if (i8042_kbd_irq ==-1 || i8042_aux_irq ==-1 ) {@@ -127,13 +130,18 @@ static int __init i8042_platform_init(void)of_iounmap (kbd_res, kbd_iobase,8 ); kbd_iobase = (void __iomem *)NULL ; } -return -ENODEV ; + rc = -ENODEV ; + goto out; }
drivers/input/serio/i8042-sparcio.h static int __init i8042_platform_init(void) · line 144
Quoted 10 lines
drivers/input/serio/i8042-sparcio.h +5
-1} i8042_reset =I8042_RESET_ALWAYS ; -return 0 ; + rc =0 ; +out: +of_node_put (root); + +return rc;
Instead of rearranging code like this, can we instead have:
static inline bool i8042_is_mr_coffee(void)
{
struct device_node *root;
bool is_mr_coffree;
root = of_find_node_by_path("/");
is_mr_coffree = !strcmp(root->name, "SUNW,JavaStation-1");
of_node_put(root);
return is_mr_coffee;
}?
Thanks.
Signature · 1 line
Dmitry
Quoted 75 lines · Dmitry Torokhov
Hi Yangtao,
Quoted 46 lines · Yangtao Li
use
of_node_put()to release the refcount.Signed-off-by Yangtao Li <[email protected]>--- drivers/input/serio/i8042-sparcio.h | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-)drivers/input/serio/i8042-sparcio.h +10
-6@@ -108,18 +108,21 @@ static struct platform_driver sparc_i8042_driver = {static int __init i8042_platform_init (void ) { +int rc;struct device_node *root =of_find_node_by_path ("/" );if (!strcmp (root->name,"SUNW,JavaStation-1" )) {/* Hardcoded values for MrCoffee. */ i8042_kbd_irq = i8042_aux_irq =13 |0x20 ; kbd_iobase =ioremap (0x71300060 ,8 ); -if (!kbd_iobase) -return -ENODEV ; +if (!kbd_iobase){ + rc = -ENODEV ; + goto out; + } }else { -int err =platform_driver_register (&sparc_i8042_driver); -if (err) -return err; + rc =platform_driver_register (&sparc_i8042_driver); +if (rc) + goto out;if (i8042_kbd_irq ==-1 || i8042_aux_irq ==-1 ) {@@ -127,13 +130,18 @@ static int __init i8042_platform_init(void)of_iounmap (kbd_res, kbd_iobase,8 ); kbd_iobase = (void __iomem *)NULL ; } -return -ENODEV ; + rc = -ENODEV ; + goto out; }drivers/input/serio/i8042-sparcio.h static int __init i8042_platform_init(void) · line 144
Quoted 10 lines
drivers/input/serio/i8042-sparcio.h +5
-1} i8042_reset =I8042_RESET_ALWAYS ; -return 0 ; + rc =0 ; +out: +of_node_put (root); + +return rc;Instead of rearranging code like this, can we instead have:
static inline bool
i8042_is_mr_coffee(void){ struct device_node *root; bool is_mr_coffree; root = of_find_node_by_path("/"); is_mr_coffree = !strcmp(root->name, "SUNW,JavaStation-1"); of_node_put(root); return is_mr_coffee; }
Quoted 1 line
?
Yes, we should do this. The modified patch has been sent. Also, I am very sorry to reply so late.
MBR,
Yangtao
Quoted 5 lines
Thanks.
--
Dmitry