Re: [PATCH] tty: timbuart: Check for null res pointer

From: Jiri Slaby
Date: Mon Dec 20 2021 - 08:29:43 EST


On 20. 12. 21, 9:21, Jiasheng Jiang wrote:
The return value of platform_get_resource() needs to be checked.
To avoid use of error pointer in case that there is no suitable
resource.

Fixes: ab4382d27412 ("tty: move drivers/serial/ to drivers/tty/serial/")

Barely.

Signed-off-by: Jiasheng Jiang <jiasheng@xxxxxxxxxxx>
---
drivers/tty/serial/timbuart.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/tty/serial/timbuart.c b/drivers/tty/serial/timbuart.c
index 08941eabe7b1..262154d2f40f 100644
--- a/drivers/tty/serial/timbuart.c
+++ b/drivers/tty/serial/timbuart.c
@@ -312,9 +312,14 @@ static const char *timbuart_type(struct uart_port *port)
*/
static void timbuart_release_port(struct uart_port *port)
{
+ struct resource *res;
+ int size;
struct platform_device *pdev = to_platform_device(port->dev);
- int size =
- resource_size(platform_get_resource(pdev, IORESOURCE_MEM, 0));
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res)
+ size = 0;

How can this happen and what happens when you pass zero size to release_mem_region?

+ else
+ size = resource_size(res);
if (port->flags & UPF_IOREMAP) {
iounmap(port->membase);


--
js
suse labs