mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
nvme: fix potential memory leak in option parsing
When specifying same string type option several times, current option parsing may cause memory leak. Hence, call kfree for previous one in this case. Signed-off-by: Chengguang Xu <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: Sagi Grimberg <[email protected]> Signed-off-by: Keith Busch <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
This commit is contained in:
parent
f53823c181
commit
59a2f3f00f
1 changed files with 6 additions and 0 deletions
|
|
@ -668,6 +668,7 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
|
|||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
kfree(opts->transport);
|
||||
opts->transport = p;
|
||||
break;
|
||||
case NVMF_OPT_NQN:
|
||||
|
|
@ -676,6 +677,7 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
|
|||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
kfree(opts->subsysnqn);
|
||||
opts->subsysnqn = p;
|
||||
nqnlen = strlen(opts->subsysnqn);
|
||||
if (nqnlen >= NVMF_NQN_SIZE) {
|
||||
|
|
@ -698,6 +700,7 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
|
|||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
kfree(opts->traddr);
|
||||
opts->traddr = p;
|
||||
break;
|
||||
case NVMF_OPT_TRSVCID:
|
||||
|
|
@ -706,6 +709,7 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
|
|||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
kfree(opts->trsvcid);
|
||||
opts->trsvcid = p;
|
||||
break;
|
||||
case NVMF_OPT_QUEUE_SIZE:
|
||||
|
|
@ -792,6 +796,7 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
|
|||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
nvmf_host_put(opts->host);
|
||||
opts->host = nvmf_host_add(p);
|
||||
kfree(p);
|
||||
if (!opts->host) {
|
||||
|
|
@ -817,6 +822,7 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
|
|||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
kfree(opts->host_traddr);
|
||||
opts->host_traddr = p;
|
||||
break;
|
||||
case NVMF_OPT_HOST_ID:
|
||||
|
|
|
|||
Loading…
Reference in a new issue