summaryrefslogtreecommitdiffstats
path: root/drivers/misc/eeprom
diff options
context:
space:
mode:
authorColin Ian King <colin.king@canonical.com>2017-01-24 15:38:38 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-01-25 11:41:44 +0100
commitacf50ec773703f7043944aaf957b625a82fc9ce0 (patch)
tree62067bb44fe9eabe71330c76ee1598bfb68e47ab /drivers/misc/eeprom
parentchar: xilinx_hwicap: Remove pointless local variables (diff)
downloadlinux-acf50ec773703f7043944aaf957b625a82fc9ce0.tar.xz
linux-acf50ec773703f7043944aaf957b625a82fc9ce0.zip
eeprom: fix memory leak on buf when failed allocation of csraddr_str
The error return path When csraddr_str fails to free buf, causing a memory leak. Fix this by returning via the free_buf label that performs the necessary cleanup. Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc/eeprom')
-rw-r--r--drivers/misc/eeprom/idt_89hpesx.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/misc/eeprom/idt_89hpesx.c b/drivers/misc/eeprom/idt_89hpesx.c
index 25d47d09e1cb..56bc5c2dfe60 100644
--- a/drivers/misc/eeprom/idt_89hpesx.c
+++ b/drivers/misc/eeprom/idt_89hpesx.c
@@ -965,8 +965,10 @@ static ssize_t idt_dbgfs_csr_write(struct file *filep, const char __user *ubuf,
csraddr_len = colon_ch - buf;
csraddr_str =
kmalloc(sizeof(char)*(csraddr_len + 1), GFP_KERNEL);
- if (csraddr_str == NULL)
- return -ENOMEM;
+ if (csraddr_str == NULL) {
+ ret = -ENOMEM;
+ goto free_buf;
+ }
/* Copy the register address to the substring buffer */
strncpy(csraddr_str, buf, csraddr_len);
csraddr_str[csraddr_len] = '\0';