Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Sep 2005 13:02:41 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        jhb@FreeBSD.org
Cc:        rwatson@FreeBSD.org, src-committers@FreeBSD.org, ru@FreeBSD.org, cvs-all@FreeBSD.org, cvs-src@FreeBSD.org
Subject:   Re: cvs commit: src/sys/dev/an if_an.c src/sys/dev/arl if_arl_isa.c src/sys/dev/awi if_awi_pccard.c src/sys/dev/cm if_cm_isa.c src/sys/dev/cnw if_cnw.c src/sys/dev/cp if_cp.c src/sys/dev/cs if_cs.c src/sys/dev/ed if_ed.c src/sys/dev/em if_em.c ...
Message-ID:  <20050921.130241.102576086.imp@bsdimp.com>
In-Reply-To: <200509211455.59154.jhb@FreeBSD.org>
References:  <20050920223315.V34322@fledge.watson.org> <20050921154153.GB22964@ip.net.ua> <200509211455.59154.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <200509211455.59154.jhb@FreeBSD.org>
            John Baldwin <jhb@FreeBSD.org> writes:
: > 5.  Fix all drivers to set some flag in foo_detach() and foo_shutdown()
: >     and refuse to work in foo_ioctl() if it's set.  This should fix
: >     panics when BPF listener is attached while interface goes away or
: >     module is unloaded.

: I'd rather 5) be simpler in 
: that it only check in the flags case to not force the driver lock to be 
: acquired for all the ioctls that the driver doesn't actually handle.  
: Actually, I think I'd really prefer that we think about how to fix the BPF 
: issue in BPF itself if possible.  It may be that we don't need to set the 
: flags (i.e. skip the actual ioctl) if the interface is in the process of 
: detaching and we can make that change centrally without having to scatter 
: gone flags in all the drivers.

This would solve the race at hand.  However, it wouldn't solve the
problems with driver shutdown racing with other things in the system
(like ifconfig during detach).

I've knocked around the idea of creating a if_dead() function that one
would call before foo_stop().  if_dead would just return (possibly an
error) for all the entry points before the device is actually
detached.  This would mean that we don't need to add flags to all the
drivers, but we do need to change all the detach routine.  This would
avoid the LOCK operations that you are worried about...

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050921.130241.102576086.imp>