f07e572f64
bcm2708: boot tested on RPi B+ v1.2 bcm2709: boot tested on RPi 3B v1.2 and RPi 4B v1.1 4G bcm2710: boot tested on RPi 3B v1.2 bcm2711: boot tested on RPi 4B v1.1 4G Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
42 lines
1.3 KiB
Diff
42 lines
1.3 KiB
Diff
From 039babe99fda6eb04a77ca29cacf98efd1a5f406 Mon Sep 17 00:00:00 2001
|
|
From: Dan Carpenter <dan.carpenter@oracle.com>
|
|
Date: Wed, 20 May 2020 15:00:19 +0300
|
|
Subject: [PATCH] w1_therm: Free the correct variable
|
|
|
|
commit e420637b81f78d0fbacf539bdb1b341eba602aea upstream.
|
|
|
|
The problem is that we change "p_args" to point to the middle of the
|
|
string so when we free it at the end of the function it's not freeing
|
|
the same pointer that we originally allocated.
|
|
|
|
Fixes: e2c94d6f5720 ("w1_therm: adding alarm sysfs entry")
|
|
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
|
|
Link: https://lore.kernel.org/r/20200520120019.GA172354@mwanda
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
drivers/w1/slaves/w1_therm.c | 5 +++--
|
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
|
|
--- a/drivers/w1/slaves/w1_therm.c
|
|
+++ b/drivers/w1/slaves/w1_therm.c
|
|
@@ -1526,8 +1526,9 @@ static ssize_t alarms_store(struct devic
|
|
int temp, ret = -EINVAL;
|
|
char *token = NULL;
|
|
s8 tl, th, tt; /* 1 byte per value + temp ring order */
|
|
- char *p_args = kmalloc(size, GFP_KERNEL);
|
|
+ char *p_args, *orig;
|
|
|
|
+ p_args = orig = kmalloc(size, GFP_KERNEL);
|
|
/* Safe string copys as buf is const */
|
|
if (!p_args) {
|
|
dev_warn(device,
|
|
@@ -1611,7 +1612,7 @@ static ssize_t alarms_store(struct devic
|
|
|
|
free_m:
|
|
/* free allocated memory */
|
|
- kfree(p_args);
|
|
+ kfree(orig);
|
|
|
|
return size;
|
|
}
|