* [PATCH] libnvdimm/of_pmem: Add check and kfree for kstrdup
@ 2023-06-19 3:36 Jiasheng Jiang
2023-06-20 13:43 ` Ira Weiny
0 siblings, 1 reply; 5+ messages in thread
From: Jiasheng Jiang @ 2023-06-19 3:36 UTC (permalink / raw)
To: dan.j.williams, vishal.l.verma, dave.jiang, ira.weiny, oohall,
aneesh.kumar
Cc: nvdimm, linux-kernel, Jiasheng Jiang
Add check for the return value of kstrdup() and return the error
if it fails in order to avoid NULL pointer dereference.
Moreover, use kfree() in the later error handling in order to avoid
memory leak.
Fixes: 49bddc73d15c ("libnvdimm/of_pmem: Provide a unique name for bus provider")
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
---
drivers/nvdimm/of_pmem.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/nvdimm/of_pmem.c b/drivers/nvdimm/of_pmem.c
index 10dbdcdfb9ce..fe6edb7e6631 100644
--- a/drivers/nvdimm/of_pmem.c
+++ b/drivers/nvdimm/of_pmem.c
@@ -31,11 +31,17 @@ static int of_pmem_region_probe(struct platform_device *pdev)
return -ENOMEM;
priv->bus_desc.provider_name = kstrdup(pdev->name, GFP_KERNEL);
+ if (!priv->bus_desc.provider_name) {
+ kfree(priv);
+ return -ENOMEM;
+ }
+
priv->bus_desc.module = THIS_MODULE;
priv->bus_desc.of_node = np;
priv->bus = bus = nvdimm_bus_register(&pdev->dev, &priv->bus_desc);
if (!bus) {
+ kfree(priv->bus_desc.provider_name);
kfree(priv);
return -ENODEV;
}
--
2.25.1
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] libnvdimm/of_pmem: Add check and kfree for kstrdup
2023-06-19 3:36 [PATCH] libnvdimm/of_pmem: Add check and kfree for kstrdup Jiasheng Jiang
@ 2023-06-20 13:43 ` Ira Weiny
2023-06-20 16:04 ` Ira Weiny
0 siblings, 1 reply; 5+ messages in thread
From: Ira Weiny @ 2023-06-20 13:43 UTC (permalink / raw)
To: Jiasheng Jiang, dan.j.williams, vishal.l.verma, dave.jiang,
ira.weiny, oohall, aneesh.kumar
Cc: nvdimm, linux-kernel, Jiasheng Jiang
Jiasheng Jiang wrote:
> Add check for the return value of kstrdup() and return the error
> if it fails in order to avoid NULL pointer dereference.
> Moreover, use kfree() in the later error handling in order to avoid
> memory leak.
>
> Fixes: 49bddc73d15c ("libnvdimm/of_pmem: Provide a unique name for bus provider")
> Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
> ---
> drivers/nvdimm/of_pmem.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/nvdimm/of_pmem.c b/drivers/nvdimm/of_pmem.c
> index 10dbdcdfb9ce..fe6edb7e6631 100644
> --- a/drivers/nvdimm/of_pmem.c
> +++ b/drivers/nvdimm/of_pmem.c
> @@ -31,11 +31,17 @@ static int of_pmem_region_probe(struct platform_device *pdev)
> return -ENOMEM;
>
> priv->bus_desc.provider_name = kstrdup(pdev->name, GFP_KERNEL);
> + if (!priv->bus_desc.provider_name) {
> + kfree(priv);
> + return -ENOMEM;
> + }
> +
> priv->bus_desc.module = THIS_MODULE;
> priv->bus_desc.of_node = np;
>
> priv->bus = bus = nvdimm_bus_register(&pdev->dev, &priv->bus_desc);
> if (!bus) {
> + kfree(priv->bus_desc.provider_name);
Nice catch!
However, this free needs to happen in of_pmem_region_remove() as well.
Ira
> kfree(priv);
> return -ENODEV;
> }
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] libnvdimm/of_pmem: Add check and kfree for kstrdup
2023-06-20 13:43 ` Ira Weiny
@ 2023-06-20 16:04 ` Ira Weiny
0 siblings, 0 replies; 5+ messages in thread
From: Ira Weiny @ 2023-06-20 16:04 UTC (permalink / raw)
To: Ira Weiny, Jiasheng Jiang, dan.j.williams, vishal.l.verma,
dave.jiang, oohall, aneesh.kumar
Cc: nvdimm, linux-kernel, Jiasheng Jiang
Ira Weiny wrote:
> Jiasheng Jiang wrote:
> > Add check for the return value of kstrdup() and return the error
> > if it fails in order to avoid NULL pointer dereference.
> > Moreover, use kfree() in the later error handling in order to avoid
> > memory leak.
> >
> > Fixes: 49bddc73d15c ("libnvdimm/of_pmem: Provide a unique name for bus provider")
> > Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
> > ---
> > drivers/nvdimm/of_pmem.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/nvdimm/of_pmem.c b/drivers/nvdimm/of_pmem.c
> > index 10dbdcdfb9ce..fe6edb7e6631 100644
> > --- a/drivers/nvdimm/of_pmem.c
> > +++ b/drivers/nvdimm/of_pmem.c
> > @@ -31,11 +31,17 @@ static int of_pmem_region_probe(struct platform_device *pdev)
> > return -ENOMEM;
> >
> > priv->bus_desc.provider_name = kstrdup(pdev->name, GFP_KERNEL);
> > + if (!priv->bus_desc.provider_name) {
> > + kfree(priv);
> > + return -ENOMEM;
> > + }
> > +
> > priv->bus_desc.module = THIS_MODULE;
> > priv->bus_desc.of_node = np;
> >
> > priv->bus = bus = nvdimm_bus_register(&pdev->dev, &priv->bus_desc);
> > if (!bus) {
> > + kfree(priv->bus_desc.provider_name);
>
> Nice catch!
>
> However, this free needs to happen in of_pmem_region_remove() as well.
Looks like the mail from my phone had html in it. Sorry for that.
This would be better with devm_kstrdup() and then we don't have to worry
about the kfree at all.
Ira
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] libnvdimm/of_pmem: Add check and kfree for kstrdup
@ 2023-06-22 14:38 Jiasheng Jiang
2023-06-23 17:19 ` Ira Weiny
0 siblings, 1 reply; 5+ messages in thread
From: Jiasheng Jiang @ 2023-06-22 14:38 UTC (permalink / raw)
To: ira.weiny, dan.j.williams, vishal.l.verma, dave.jiang, oohall,
aneesh.kumar
Cc: nvdimm, linux-kernel, Jiasheng Jiang
On Wed, Jun 21, 2023 at 00:04:36 +0800, Ira Weiny wrote:
> Ira Weiny wrote:
>> Jiasheng Jiang wrote:
>> > Add check for the return value of kstrdup() and return the error
>> > if it fails in order to avoid NULL pointer dereference.
>> > Moreover, use kfree() in the later error handling in order to avoid
>> > memory leak.
>> >
>> > Fixes: 49bddc73d15c ("libnvdimm/of_pmem: Provide a unique name for bus provider")
>> > Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
>> > ---
>> > drivers/nvdimm/of_pmem.c | 6 ++++++
>> > 1 file changed, 6 insertions(+)
>> >
>> > diff --git a/drivers/nvdimm/of_pmem.c b/drivers/nvdimm/of_pmem.c
>> > index 10dbdcdfb9ce..fe6edb7e6631 100644
>> > --- a/drivers/nvdimm/of_pmem.c
>> > +++ b/drivers/nvdimm/of_pmem.c
>> > @@ -31,11 +31,17 @@ static int of_pmem_region_probe(struct platform_device *pdev)
>> > return -ENOMEM;
>> >
>> > priv->bus_desc.provider_name = kstrdup(pdev->name, GFP_KERNEL);
>> > + if (!priv->bus_desc.provider_name) {
>> > + kfree(priv);
>> > + return -ENOMEM;
>> > + }
>> > +
>> > priv->bus_desc.module = THIS_MODULE;
>> > priv->bus_desc.of_node = np;
>> >
>> > priv->bus = bus = nvdimm_bus_register(&pdev->dev, &priv->bus_desc);
>> > if (!bus) {
>> > + kfree(priv->bus_desc.provider_name);
>>
>> Nice catch!
>>
>> However, this free needs to happen in of_pmem_region_remove() as well.
>
> Looks like the mail from my phone had html in it. Sorry for that.
>
> This would be better with devm_kstrdup() and then we don't have to worry
> about the kfree at all.
Looks good.
I have submitted a new patch "libnvdimm/of_pmem: Replace kstrdup with devm_kstrdup and add check".
Since the titie has been modified, I did not submitted a v2.
- Jiasheng Jiang
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] libnvdimm/of_pmem: Add check and kfree for kstrdup
2023-06-22 14:38 Jiasheng Jiang
@ 2023-06-23 17:19 ` Ira Weiny
0 siblings, 0 replies; 5+ messages in thread
From: Ira Weiny @ 2023-06-23 17:19 UTC (permalink / raw)
To: Jiasheng Jiang, ira.weiny, dan.j.williams, vishal.l.verma,
dave.jiang, oohall, aneesh.kumar
Cc: nvdimm, linux-kernel, Jiasheng Jiang
Jiasheng Jiang wrote:
> On Wed, Jun 21, 2023 at 00:04:36 +0800, Ira Weiny wrote:
> > Ira Weiny wrote:
> >> Jiasheng Jiang wrote:
[snip]
> >>
> >> Nice catch!
> >>
> >> However, this free needs to happen in of_pmem_region_remove() as well.
> >
> > Looks like the mail from my phone had html in it. Sorry for that.
> >
> > This would be better with devm_kstrdup() and then we don't have to worry
> > about the kfree at all.
>
> Looks good.
> I have submitted a new patch "libnvdimm/of_pmem: Replace kstrdup with devm_kstrdup and add check".
> Since the titie has been modified, I did not submitted a v2.
Ah ok... But looks like we will need a v3. See the other email.
Thanks again for trying to fix this,
Ira
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-06-23 17:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-19 3:36 [PATCH] libnvdimm/of_pmem: Add check and kfree for kstrdup Jiasheng Jiang
2023-06-20 13:43 ` Ira Weiny
2023-06-20 16:04 ` Ira Weiny
2023-06-22 14:38 Jiasheng Jiang
2023-06-23 17:19 ` Ira Weiny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®