Patchwork power: charger-manager: fix a potential NULL pointer dereference

login
register
mail settings
Submitter Kangjie Lu
Date March 14, 2019, 6:02 a.m.
Message ID <20190314060247.7848-1-kjlu@umn.edu>
Download mbox | patch
Permalink /patch/748555/
State New
Headers show

Comments

Kangjie Lu - March 14, 2019, 6:02 a.m.
In case create_freezable_workqueue fails, the fix return -ENOMEM
to avoid a potential NULL pointer dereference.

Signed-off-by: Kangjie Lu <kjlu@umn.edu>
---
 drivers/power/supply/charger-manager.c | 3 +++
 1 file changed, 3 insertions(+)
Sebastian Reichel - April 5, 2019, 2 p.m.
Hi,

On Thu, Mar 14, 2019 at 01:02:47AM -0500, Kangjie Lu wrote:
> In case create_freezable_workqueue fails, the fix return -ENOMEM
> to avoid a potential NULL pointer dereference.
> 
> Signed-off-by: Kangjie Lu <kjlu@umn.edu>
> ---

Thanks, queued.

-- Sebastian

>  drivers/power/supply/charger-manager.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/power/supply/charger-manager.c b/drivers/power/supply/charger-manager.c
> index 38be91f21cc4..d29c4f338157 100644
> --- a/drivers/power/supply/charger-manager.c
> +++ b/drivers/power/supply/charger-manager.c
> @@ -1987,6 +1987,9 @@ static struct platform_driver charger_manager_driver = {
>  static int __init charger_manager_init(void)
>  {
>  	cm_wq = create_freezable_workqueue("charger_manager");
> +	if (unlikely(!cm_wq))
> +		return -ENOMEM;
> +
>  	INIT_DELAYED_WORK(&cm_monitor_work, cm_monitor_poller);
>  
>  	return platform_driver_register(&charger_manager_driver);
> -- 
> 2.17.1
>

Patch

diff --git a/drivers/power/supply/charger-manager.c b/drivers/power/supply/charger-manager.c
index 38be91f21cc4..d29c4f338157 100644
--- a/drivers/power/supply/charger-manager.c
+++ b/drivers/power/supply/charger-manager.c
@@ -1987,6 +1987,9 @@  static struct platform_driver charger_manager_driver = {
 static int __init charger_manager_init(void)
 {
 	cm_wq = create_freezable_workqueue("charger_manager");
+	if (unlikely(!cm_wq))
+		return -ENOMEM;
+
 	INIT_DELAYED_WORK(&cm_monitor_work, cm_monitor_poller);
 
 	return platform_driver_register(&charger_manager_driver);