git: 0dd691b41276 - main - iflib: allow clone detach if not yet init

Kyle Evans kevans at FreeBSD.org
Tue Mar 9 19:49:26 UTC 2021


The branch main has been updated by kevans:

URL: https://cgit.FreeBSD.org/src/commit/?id=0dd691b41276ce13d25ffb1443af27f85038aa3f

commit 0dd691b41276ce13d25ffb1443af27f85038aa3f
Author:     Kyle Evans <kevans at FreeBSD.org>
AuthorDate: 2021-03-09 12:13:31 +0000
Commit:     Kyle Evans <kevans at FreeBSD.org>
CommitDate: 2021-03-09 19:49:13 +0000

    iflib: allow clone detach if not yet init
    
    If we hit an error during init, then we'll unwind our state and attempt
    to detach the device -- don't block it.
    
    This was discovered by creating a wg0 with missing parameters; said
    failure ended up leaving this orphaned device in place and ended up
    panicking the system upon enumeration of the dev.* sysctl space.
    
    Reviewed by:    gallatin, markj
    MFC after:      3 days
    Differential Revision:  https://reviews.freebsd.org/D29145
---
 sys/net/iflib_clone.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sys/net/iflib_clone.c b/sys/net/iflib_clone.c
index 975873c4a19c..fc4e71806926 100644
--- a/sys/net/iflib_clone.c
+++ b/sys/net/iflib_clone.c
@@ -83,7 +83,8 @@ iflib_pseudo_detach(device_t dev)
 	if_ctx_t ctx;
 
 	ctx = device_get_softc(dev);
-	if ((iflib_get_flags(ctx) & IFC_IN_DETACH) == 0)
+	if ((iflib_get_flags(ctx) & (IFC_INIT_DONE | IFC_IN_DETACH)) ==
+	    IFC_INIT_DONE)
 		return (EBUSY);
 	return (0);
 }


More information about the dev-commits-src-main mailing list