diff mbox series

[v2] reset: hisilicon: fix potential NULL pointer dereference

Message ID 20180726004719.GA9896@embeddedor.com (mailing list archive)
State Accepted, archived
Headers show
Series [v2] reset: hisilicon: fix potential NULL pointer dereference | expand

Commit Message

Gustavo A. R. Silva July 26, 2018, 12:47 a.m. UTC
There is a potential execution path in which function
platform_get_resource() returns NULL. If this happens,
we will end up having a NULL pointer dereference.

Fix this by replacing devm_ioremap with devm_ioremap_resource,
which has the NULL check and the memory region request.

This code was detected with the help of Coccinelle.

Cc: stable@vger.kernel.org
Fixes: 97b7129cd2af ("reset: hisilicon: change the definition of hisi_reset_init")
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
Changes in v2:
 - Use devm_ioremap_resource. Thanks to Stephen Boyd for
   pointing it out.

 drivers/clk/hisilicon/reset.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Comments

Stephen Boyd Aug. 31, 2018, 5:36 p.m. UTC | #1
Quoting Gustavo A. R. Silva (2018-07-25 17:47:19)
> There is a potential execution path in which function
> platform_get_resource() returns NULL. If this happens,
> we will end up having a NULL pointer dereference.
> 
> Fix this by replacing devm_ioremap with devm_ioremap_resource,
> which has the NULL check and the memory region request.
> 
> This code was detected with the help of Coccinelle.
> 
> Cc: stable@vger.kernel.org
> Fixes: 97b7129cd2af ("reset: hisilicon: change the definition of hisi_reset_init")
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> ---

Nobody has reviewed, so I guess applied to clk-next unless someone
complains.
Gustavo A. R. Silva Aug. 31, 2018, 6:06 p.m. UTC | #2
On 8/31/18 12:36 PM, Stephen Boyd wrote:
> 
> Nobody has reviewed, so I guess applied to clk-next unless someone
> complains.
> 

Thanks, Stephen.

--
Gustavo
diff mbox series

Patch

diff --git a/drivers/clk/hisilicon/reset.c b/drivers/clk/hisilicon/reset.c
index 2a5015c..43e82fa 100644
--- a/drivers/clk/hisilicon/reset.c
+++ b/drivers/clk/hisilicon/reset.c
@@ -109,9 +109,8 @@  struct hisi_reset_controller *hisi_reset_init(struct platform_device *pdev)
 		return NULL;
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	rstc->membase = devm_ioremap(&pdev->dev,
-				res->start, resource_size(res));
-	if (!rstc->membase)
+	rstc->membase = devm_ioremap_resource(&pdev->dev, res);
+	if (IS_ERR(rstc->membase))
 		return NULL;
 
 	spin_lock_init(&rstc->lock);