diff options
author | Hans de Goede <hdegoede@redhat.com> | 2018-04-22 20:56:17 +0300 |
---|---|---|
committer | Zhang Rui <rui.zhang@intel.com> | 2018-04-24 15:50:43 +0300 |
commit | 13b86f50eaaddaea4bdd2fe476fd12e6a0951add (patch) | |
tree | fa4cdc2804d153885ed95c6fa016bcd0cbe2a8db /drivers/thermal/int340x_thermal/int3403_thermal.c | |
parent | 6d08b06e67cd117f6992c46611dfb4ce267cd71e (diff) | |
download | linux-13b86f50eaaddaea4bdd2fe476fd12e6a0951add.tar.xz |
thermal: int3403_thermal: Fix NULL pointer deref on module load / probe
Starting with kernel 4.17 thermal_cooling_device_register() will call the
get_max_state() op during register.
Since we deref priv->priv in int3403_get_max_state() this means we must
set priv->priv before calling thermal_cooling_device_register().
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Diffstat (limited to 'drivers/thermal/int340x_thermal/int3403_thermal.c')
-rw-r--r-- | drivers/thermal/int340x_thermal/int3403_thermal.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/thermal/int340x_thermal/int3403_thermal.c b/drivers/thermal/int340x_thermal/int3403_thermal.c index 8a7f24dd9315..0c19fcd56a0d 100644 --- a/drivers/thermal/int340x_thermal/int3403_thermal.c +++ b/drivers/thermal/int340x_thermal/int3403_thermal.c @@ -194,6 +194,7 @@ static int int3403_cdev_add(struct int3403_priv *priv) return -EFAULT; } + priv->priv = obj; obj->max_state = p->package.count - 1; obj->cdev = thermal_cooling_device_register(acpi_device_bid(priv->adev), @@ -201,8 +202,6 @@ static int int3403_cdev_add(struct int3403_priv *priv) if (IS_ERR(obj->cdev)) result = PTR_ERR(obj->cdev); - priv->priv = obj; - kfree(buf.pointer); /* TODO: add ACPI notification support */ |