diff options
author | Colin Ian King <colin.king@canonical.com> | 2017-01-24 14:38:38 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-01-25 11:41:44 +0100 |
commit | acf50ec773703f7043944aaf957b625a82fc9ce0 (patch) | |
tree | 62067bb44fe9eabe71330c76ee1598bfb68e47ab /drivers/misc | |
parent | 3c84dc7e79f5bd676599a79a6bfed4d30a38ae30 (diff) |
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')
-rw-r--r-- | drivers/misc/eeprom/idt_89hpesx.c | 6 |
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'; |