Page MenuHomeFreeBSD

D11782.id32139.diff
No OneTemporary

D11782.id32139.diff

Index: head/sys/net/bpf.c
===================================================================
--- head/sys/net/bpf.c
+++ head/sys/net/bpf.c
@@ -106,6 +106,7 @@
struct rwlock bif_lock; /* interface lock */
LIST_HEAD(, bpf_d) bif_wlist; /* writer-only list */
int bif_flags; /* Interface flags */
+ struct bpf_if **bif_bpf; /* Pointer to pointer to us */
};
CTASSERT(offsetof(struct bpf_if, bif_ext) == 0);
@@ -2563,6 +2564,7 @@
bp->bif_dlt = dlt;
rw_init(&bp->bif_lock, "bpf interface lock");
KASSERT(*driverp == NULL, ("bpfattach2: driverp already initialized"));
+ bp->bif_bpf = driverp;
*driverp = bp;
BPF_LOCK();
@@ -2633,6 +2635,7 @@
*/
BPFIF_WLOCK(bp);
bp->bif_flags |= BPFIF_FLAG_DYING;
+ *bp->bif_bpf = NULL;
BPFIF_WUNLOCK(bp);
CTR4(KTR_NET, "%s: sheduling free for encap %d (%p) for if %p",
@@ -2702,13 +2705,6 @@
nmatched++;
}
BPF_UNLOCK();
-
- /*
- * Note that we cannot zero other pointers to
- * custom DLTs possibly used by given interface.
- */
- if (nmatched != 0)
- ifp->if_bpf = NULL;
}
/*

File Metadata

Mime Type
text/plain
Expires
Wed, Feb 18, 4:19 AM (11 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28836792
Default Alt Text
D11782.id32139.diff (1 KB)

Event Timeline