OSDN Git Service

power: battery: Initialize work struct before cancelling work
authorUmang Chheda <uchheda@codeaurora.org>
Tue, 1 Oct 2019 10:33:39 +0000 (16:03 +0530)
committerUmang Chheda <uchheda@codeaurora.org>
Tue, 15 Oct 2019 06:24:11 +0000 (11:54 +0530)
Votable callback accesses work structure as part of
their callback, initialize work before creation of votables.

Change-Id: I91741b3d54c73aab5c695a31292a32752edc77cd
Signed-off-by: Umang Chheda <uchheda@codeaurora.org>
drivers/power/supply/qcom/battery.c

index 6d5308b..c19abd4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017 The Linux Foundation. All rights reserved.
+/* Copyright (c) 2017,2019 The Linux Foundation. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 and
@@ -1345,6 +1345,12 @@ int qcom_batt_init(void)
        if (!chip->pl_ws)
                goto cleanup;
 
+       INIT_DELAYED_WORK(&chip->status_change_work, status_change_work);
+       INIT_DELAYED_WORK(&chip->pl_taper_work, pl_taper_work);
+       INIT_WORK(&chip->pl_disable_forever_work, pl_disable_forever_work);
+       INIT_DELAYED_WORK(&chip->pl_awake_work, pl_awake_work);
+       INIT_DELAYED_WORK(&chip->fcc_step_update_work, fcc_step_update_work);
+
        chip->fcc_votable = create_votable("FCC", VOTE_MIN,
                                        pl_fcc_vote_callback,
                                        chip);
@@ -1399,12 +1405,6 @@ int qcom_batt_init(void)
 
        vote(chip->pl_disable_votable, PL_INDIRECT_VOTER, true, 0);
 
-       INIT_DELAYED_WORK(&chip->status_change_work, status_change_work);
-       INIT_DELAYED_WORK(&chip->pl_taper_work, pl_taper_work);
-       INIT_WORK(&chip->pl_disable_forever_work, pl_disable_forever_work);
-       INIT_DELAYED_WORK(&chip->pl_awake_work, pl_awake_work);
-       INIT_DELAYED_WORK(&chip->fcc_step_update_work, fcc_step_update_work);
-
        rc = pl_register_notifier(chip);
        if (rc < 0) {
                pr_err("Couldn't register psy notifier rc = %d\n", rc);