Author: sephe
Date: Thu Dec  1 03:39:34 2016
New Revision: 309348
URL: https://svnweb.freebsd.org/changeset/base/309348

Log:
  hyperv/hn: Don't hold txdesc, if no BPFs are attached.
  
  MFC after:    1 week
  Sponsored by: Microsoft
  Differential Revision:        https://reviews.freebsd.org/D8675

Modified:
  head/sys/dev/hyperv/netvsc/if_hn.c

Modified: head/sys/dev/hyperv/netvsc/if_hn.c
==============================================================================
--- head/sys/dev/hyperv/netvsc/if_hn.c  Thu Dec  1 03:34:04 2016        
(r309347)
+++ head/sys/dev/hyperv/netvsc/if_hn.c  Thu Dec  1 03:39:34 2016        
(r309348)
@@ -1924,17 +1924,20 @@ done:
 static int
 hn_txpkt(struct ifnet *ifp, struct hn_tx_ring *txr, struct hn_txdesc *txd)
 {
-       int error, send_failed = 0;
+       int error, send_failed = 0, has_bpf;
 
 again:
-       /*
-        * Make sure that this txd and any aggregated txds are not freed
-        * before ETHER_BPF_MTAP.
-        */
-       hn_txdesc_hold(txd);
+       has_bpf = bpf_peers_present(ifp->if_bpf);
+       if (has_bpf) {
+               /*
+                * Make sure that this txd and any aggregated txds are not
+                * freed before ETHER_BPF_MTAP.
+                */
+               hn_txdesc_hold(txd);
+       }
        error = txr->hn_sendpkt(txr, txd);
        if (!error) {
-               if (bpf_peers_present(ifp->if_bpf)) {
+               if (has_bpf) {
                        const struct hn_txdesc *tmp_txd;
 
                        ETHER_BPF_MTAP(ifp, txd->m);
@@ -1957,7 +1960,8 @@ again:
                txr->hn_pkts += txr->hn_stat_pkts;
                txr->hn_sends++;
        }
-       hn_txdesc_put(txr, txd);
+       if (has_bpf)
+               hn_txdesc_put(txr, txd);
 
        if (__predict_false(error)) {
                int freed;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to