Author: jtl
Date: Mon Jun 11 23:32:06 2018
New Revision: 334983
URL: https://svnweb.freebsd.org/changeset/base/334983

Log:
  Fix a memory leak for the BIOCSETWF ioctl on kernels with the BPF_JITTER
  option.
  
  The BPF code was creating a compiled filter in the common filter-creation
  path.  However, BPF only uses compiled filters in the read direction.
  When creating a write filter, the common filter-creation code was
  creating an unneeded write filter and leaking the memory used for that.
  
  MFC after:    2 weeks
  Sponsored by: Netflix

Modified:
  head/sys/net/bpf.c

Modified: head/sys/net/bpf.c
==============================================================================
--- head/sys/net/bpf.c  Mon Jun 11 22:48:34 2018        (r334982)
+++ head/sys/net/bpf.c  Mon Jun 11 23:32:06 2018        (r334983)
@@ -1895,8 +1895,13 @@ bpf_setf(struct bpf_d *d, struct bpf_program *fp, u_lo
                        return (EINVAL);
                }
 #ifdef BPF_JITTER
-               /* Filter is copied inside fcode and is perfectly valid. */
-               jfunc = bpf_jitter(fcode, flen);
+               if (cmd != BIOCSETWF) {
+                       /*
+                        * Filter is copied inside fcode and is
+                        * perfectly valid.
+                        */
+                       jfunc = bpf_jitter(fcode, flen);
+               }
 #endif
        }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to