Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Mar 2000 21:42:34 -0800 (PST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/net bpf.c bpf.h
Message-ID:  <200003190542.VAA29960@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
rwatson     2000/03/18 21:42:34 PST

  Modified files:
    sys/net              bpf.c bpf.h 
  Log:
  The advent of if_detach, allowing interface removal at runtime, makes it
  possible for a panic to occur if BPF is in use on the interface at the
  time of the call to if_detach.  This happens because BPF maintains pointers
  to the struct ifnet describing the interface, which is freed by if_detach.
  
  To correct this problem, a new call, bpfdetach, is introduced.  bpfdetach
  locates BPF descriptor references to the interface, and NULLs them.  Other
  BPF code is modified so that discovery of a NULL interface results in
  ENXIO (already implemented for some calls).  Processes blocked on a BPF
  call will also be woken up so that they can receive ENXIO.
  
  Interface drivers that invoke bpfattach and if_detach must be modified to
  also call bpfattach(ifp) before calling if_detach(ifp).  This is relevant
  for buses that support hot removal, such as pccard and usb.  Patches to
  all effected devices will not be committed, only to if_wi.c, due to
  testing limitations.  To reproduce the crash, load up tcpdump on you
  favorite pccard ethernet card, and then eject the card.  As some pccard
  drivers do not invoke if_detach(ifp), this bug will not manifest itself
  for those drivers.
  
  Reviewed by:	wes
  
  Revision  Changes    Path
  1.61      +64 -1     src/sys/net/bpf.c
  1.23      +3 -1      src/sys/net/bpf.h



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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