[SCSI] zfcp: fix kfree handling in zfcp_init_device_setup
The pointer that is allocated with kmalloc() is passed to strsep() which modifies it. Later on the modified pointer value will be passed to kfree. Save the original pointer and pass that one to kfree instead. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
37e6ba0072
commit
d10c0858f6
1 changed files with 6 additions and 5 deletions
|
@ -128,12 +128,13 @@ static void __init zfcp_init_device_configure(char *busid, u64 wwpn, u64 lun)
|
|||
static void __init zfcp_init_device_setup(char *devstr)
|
||||
{
|
||||
char *token;
|
||||
char *str;
|
||||
char *str, *str_saved;
|
||||
char busid[ZFCP_BUS_ID_SIZE];
|
||||
u64 wwpn, lun;
|
||||
|
||||
/* duplicate devstr and keep the original for sysfs presentation*/
|
||||
str = kmalloc(strlen(devstr) + 1, GFP_KERNEL);
|
||||
str_saved = kmalloc(strlen(devstr) + 1, GFP_KERNEL);
|
||||
str = str_saved;
|
||||
if (!str)
|
||||
return;
|
||||
|
||||
|
@ -152,12 +153,12 @@ static void __init zfcp_init_device_setup(char *devstr)
|
|||
if (!token || strict_strtoull(token, 0, (unsigned long long *) &lun))
|
||||
goto err_out;
|
||||
|
||||
kfree(str);
|
||||
kfree(str_saved);
|
||||
zfcp_init_device_configure(busid, wwpn, lun);
|
||||
return;
|
||||
|
||||
err_out:
|
||||
kfree(str);
|
||||
err_out:
|
||||
kfree(str_saved);
|
||||
pr_err("%s is not a valid SCSI device\n", devstr);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue