nvme: fix potential memory leak in option parsing
PATCH 1/1 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 <cgxu519 at gmx.com>
--- drivers/nvme/host/fabrics.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/nvme/host/fabrics.c +6 -0
@@ -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 :
Signature · 1 line
1.8.3.1
Sagi Grimberg
maintainerPATCH 1/1 nvme: fix potential memory leak in option parsing
Looks good,
Reviewed-by Sagi Grimberg <sagi at grimberg.me>
Christoph Hellwig
maintainerPATCH 1/1 nvme: fix potential memory leak in option parsing
In reply to Chengguang XuLooks good,
Reviewed-by Christoph Hellwig <hch at lst.de>
Keith Busch
AppliedPATCH 1/1 nvme: fix potential memory leak in option parsing
Thanks, applied for 4.17-rc2