Message ID | 20220505124621.1592697-1-yangyingliang@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tty/serial: digicolor: fix possible null-ptr-deref in digicolor_uart_probe() | expand |
Hi Yang, On Thu, May 05 2022, Yang Yingliang wrote: > It will cause null-ptr-deref when using 'res', if platform_get_resource() > returns NULL, so move using 'res' after devm_ioremap_resource() that > will check it to avoid null-ptr-deref. > And use devm_platform_get_and_ioremap_resource() to simplify code. > > Fixes: 5930cb3511df ("serial: driver for Conexant Digicolor USART") > Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> Reviewed-by: Baruch Siach <baruch@tkos.co.il> Thanks, baruch > --- > drivers/tty/serial/digicolor-usart.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/tty/serial/digicolor-usart.c b/drivers/tty/serial/digicolor-usart.c > index 6d70fea76bb3..e37a917b9dbb 100644 > --- a/drivers/tty/serial/digicolor-usart.c > +++ b/drivers/tty/serial/digicolor-usart.c > @@ -471,11 +471,10 @@ static int digicolor_uart_probe(struct platform_device *pdev) > if (IS_ERR(uart_clk)) > return PTR_ERR(uart_clk); > > - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > - dp->port.mapbase = res->start; > - dp->port.membase = devm_ioremap_resource(&pdev->dev, res); > + dp->port.membase = devm_platform_get_and_ioremap_resource(pdev, 0, &res); > if (IS_ERR(dp->port.membase)) > return PTR_ERR(dp->port.membase); > + dp->port.mapbase = res->start; > > irq = platform_get_irq(pdev, 0); > if (irq < 0)
diff --git a/drivers/tty/serial/digicolor-usart.c b/drivers/tty/serial/digicolor-usart.c index 6d70fea76bb3..e37a917b9dbb 100644 --- a/drivers/tty/serial/digicolor-usart.c +++ b/drivers/tty/serial/digicolor-usart.c @@ -471,11 +471,10 @@ static int digicolor_uart_probe(struct platform_device *pdev) if (IS_ERR(uart_clk)) return PTR_ERR(uart_clk); - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - dp->port.mapbase = res->start; - dp->port.membase = devm_ioremap_resource(&pdev->dev, res); + dp->port.membase = devm_platform_get_and_ioremap_resource(pdev, 0, &res); if (IS_ERR(dp->port.membase)) return PTR_ERR(dp->port.membase); + dp->port.mapbase = res->start; irq = platform_get_irq(pdev, 0); if (irq < 0)
It will cause null-ptr-deref when using 'res', if platform_get_resource() returns NULL, so move using 'res' after devm_ioremap_resource() that will check it to avoid null-ptr-deref. And use devm_platform_get_and_ioremap_resource() to simplify code. Fixes: 5930cb3511df ("serial: driver for Conexant Digicolor USART") Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> --- drivers/tty/serial/digicolor-usart.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)