bus/platform: fix use after free

Message ID 20230824105225.822297-1-tduszynski@marvell.com (mailing list archive)
State Accepted, archived
Delegated to: David Marchand
Headers
Series bus/platform: fix use after free |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/github-robot: build success github build: passed
ci/iol-compile-amd64-testing success Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/intel-Functional success Functional PASS

Commit Message

Tomasz Duszynski Aug. 24, 2023, 10:52 a.m. UTC
  Remove device from the list before doing actual cleanup to avoid use
after free.

Bugzilla ID: 1276
Fixes: 17c839f74da3 ("bus: add platform bus")

Signed-off-by: Tomasz Duszynski <tduszynski@marvell.com>
---
 drivers/bus/platform/platform.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

David Marchand Oct. 2, 2023, 8:34 a.m. UTC | #1
On Thu, Aug 24, 2023 at 12:52 PM Tomasz Duszynski
<tduszynski@marvell.com> wrote:
>
> Remove device from the list before doing actual cleanup to avoid use
> after free.
>
> Bugzilla ID: 1276
> Fixes: 17c839f74da3 ("bus: add platform bus")
>
> Signed-off-by: Tomasz Duszynski <tduszynski@marvell.com>

Applied, thanks.
  

Patch

diff --git a/drivers/bus/platform/platform.c b/drivers/bus/platform/platform.c
index 9b6ed2832e..7e24bb96a1 100644
--- a/drivers/bus/platform/platform.c
+++ b/drivers/bus/platform/platform.c
@@ -617,8 +617,8 @@  platform_bus_cleanup(void)
 	struct rte_platform_device *pdev, *tmp;
 
 	RTE_TAILQ_FOREACH_SAFE(pdev, &platform_bus.device_list, next, tmp) {
-		platform_bus_unplug(&pdev->device);
 		TAILQ_REMOVE(&platform_bus.device_list, pdev, next);
+		platform_bus_unplug(&pdev->device);
 	}
 
 	return 0;