git: 0f9544d03e89 - main - iflib: Fix detach of pseudo interfaces

Mark Johnston markj at freebsd.org
Fri Feb 19 22:14:29 UTC 2021


On Fri, Feb 19, 2021 at 10:11:31PM +0000, Mark Johnston wrote:
> The branch main has been updated by markj:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=0f9544d03e89d180f94a7a84b110ec7d2b6c625a
> 
> commit 0f9544d03e89d180f94a7a84b110ec7d2b6c625a
> Author:     Mark Johnston <markj at FreeBSD.org>
> AuthorDate: 2021-02-19 22:08:34 +0000
> Commit:     Mark Johnston <markj at FreeBSD.org>
> CommitDate: 2021-02-19 22:10:41 +0000
> 
>     iflib: Fix detach of pseudo interfaces
>     
>     In commit 38bfc6dee33b we added an IFDI_DETACH() call to
>     iflib_pseudo_deregister() since it looked like it was missing.  One is
>     present in the error-handling path of iflib_pseudo_register().  However,
>     the detach actually comes from the DEVICE_DETACH() method for the
>     above-mentioned device_t,

Sorry, missing context.  A device is instantiated for each pseudo
interface, I believe just to satisfy iflib's internal interfaces.

>     so now we're calling IFDI_DETACH() twice when
>     destroying a pseudo interface.
>     
>     Fix the problem by not calling IFDI_DETACH() from the device detach
>     routine.  This way we can ensure that iflib de-initialization always
>     happens in a consistent order.  It also ensures that you can't do silly
>     things like "devctl detach <pseudo ifnet>", which would previously
>     detach the driver without tearing down the corresponding ifnet.


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