2020-11-20 07:47:21

by Qinglang Miao

[permalink] [raw]
Subject: [PATCH] mips: cdmm: fix use-after-free in mips_cdmm_bus_discover

kfree(dev) has been called inside put_device so anther
kfree would cause a use-after-free bug/

Fixes: 8286ae03308c ("MIPS: Add CDMM bus support")
Reported-by: Hulk Robot <[email protected]>
Signed-off-by: Qinglang Miao <[email protected]>
---
drivers/bus/mips_cdmm.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/bus/mips_cdmm.c b/drivers/bus/mips_cdmm.c
index 9f7ed1fcd..e43786c67 100644
--- a/drivers/bus/mips_cdmm.c
+++ b/drivers/bus/mips_cdmm.c
@@ -561,7 +561,6 @@ static void mips_cdmm_bus_discover(struct mips_cdmm_bus *bus)
ret = device_register(&dev->dev);
if (ret) {
put_device(&dev->dev);
- kfree(dev);
}
}
}
--
2.23.0


2020-11-20 14:10:37

by Serge Semin

[permalink] [raw]
Subject: Re: [PATCH] mips: cdmm: fix use-after-free in mips_cdmm_bus_discover

Hello Qinglang

Thanks for the patch. Good catch. Please see a tiny nitpick below.

On Fri, Nov 20, 2020 at 03:48:47PM +0800, Qinglang Miao wrote:
> kfree(dev) has been called inside put_device so anther
> kfree would cause a use-after-free bug/
>
> Fixes: 8286ae03308c ("MIPS: Add CDMM bus support")
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: Qinglang Miao <[email protected]>
> ---
> drivers/bus/mips_cdmm.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/bus/mips_cdmm.c b/drivers/bus/mips_cdmm.c
> index 9f7ed1fcd..e43786c67 100644
> --- a/drivers/bus/mips_cdmm.c
> +++ b/drivers/bus/mips_cdmm.c
> @@ -561,7 +561,6 @@ static void mips_cdmm_bus_discover(struct mips_cdmm_bus *bus)
> ret = device_register(&dev->dev);

> if (ret) {
> put_device(&dev->dev);
> - kfree(dev);
> }

After removing kfree() from here the braces around the if clause
are no more needed in accordance with the kernel coding style.
Please remove them too. Then feel free to add the tag
Acked-by: Serge Semin <[email protected]>

-Sergey

> }
> }
> --
> 2.23.0
>

2020-11-27 10:01:18

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH] mips: cdmm: fix use-after-free in mips_cdmm_bus_discover

On Fri, Nov 20, 2020 at 03:48:47PM +0800, Qinglang Miao wrote:
> kfree(dev) has been called inside put_device so anther
> kfree would cause a use-after-free bug/
>
> Fixes: 8286ae03308c ("MIPS: Add CDMM bus support")
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: Qinglang Miao <[email protected]>
> ---
> drivers/bus/mips_cdmm.c | 1 -
> 1 file changed, 1 deletion(-)

applied with braces removal to mips-next.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]