git: 304744faa13b - stable/13 - device_attach: Invoke BUS_CHILD_DETACHED if an attach routine fails

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Sun, 01 Dec 2024 04:57:45 UTC
The branch stable/13 has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=304744faa13b521ce2de5f7817895867d4d11264

commit 304744faa13b521ce2de5f7817895867d4d11264
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2024-10-16 18:08:35 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2024-11-30 21:33:07 +0000

    device_attach: Invoke BUS_CHILD_DETACHED if an attach routine fails
    
    This gives the parent bus driver the opportunity to cleanup any
    allocated resources, etc. left behind by a failed attach attempt.
    
    Reviewed by:    imp
    Differential Revision:  https://reviews.freebsd.org/D47155
    
    (cherry picked from commit 42078dfb0f72edbf83217cc8c997c0a54d951990)
---
 sys/kern/subr_bus.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c
index 5e76bbeee2bb..1f490850579e 100644
--- a/sys/kern/subr_bus.c
+++ b/sys/kern/subr_bus.c
@@ -3036,6 +3036,7 @@ device_attach(device_t dev)
 	if ((error = DEVICE_ATTACH(dev)) != 0) {
 		printf("device_attach: %s%d attach returned %d\n",
 		    dev->driver->name, dev->unit, error);
+		BUS_CHILD_DETACHED(dev->parent, dev);
 		if (!(dev->flags & DF_FIXEDCLASS))
 			devclass_delete_device(dev->devclass, dev);
 		(void)device_set_driver(dev, NULL);