Date: Sat, 8 Dec 2012 01:11:55 +0000 (UTC) From: Jung-uk Kim <jkim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r244010 - in projects/bpfjit/sys: net netgraph Message-ID: <201212080111.qB81Bteq028993@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jkim Date: Sat Dec 8 01:11:55 2012 New Revision: 244010 URL: http://svnweb.freebsd.org/changeset/base/244010 Log: Disable bpfjit by default. Only allow toggling when a filter is set. Modified: projects/bpfjit/sys/net/bpf.c projects/bpfjit/sys/net/bpfjit.c projects/bpfjit/sys/net/bpfjit.h projects/bpfjit/sys/netgraph/ng_bpf.c Modified: projects/bpfjit/sys/net/bpf.c ============================================================================== --- projects/bpfjit/sys/net/bpf.c Sat Dec 8 00:47:03 2012 (r244009) +++ projects/bpfjit/sys/net/bpf.c Sat Dec 8 01:11:55 2012 (r244010) @@ -1776,10 +1776,11 @@ bpf_setf(struct bpf_d *d, struct bpf_pro } #ifdef BPFJIT /* Filter is copied inside fcode and is perfectly valid. */ - jfunc = bpfjit_generate_code(fcode, flen); - - if (jfunc == NULL && bootverbose) - printf("bpf_setf: failed to compile filter\n"); + if (bpfjit_enable != 0) { + jfunc = bpfjit_generate_code(fcode, flen); + if (jfunc == NULL && bootverbose) + printf("bpf_setf: failed to compile filter\n"); + } #endif } @@ -2062,10 +2063,10 @@ bpf_tap(struct bpf_if *bp, u_char *pkt, * the interface pointers on the mbuf to figure it out. */ #ifdef BPFJIT - bf = bpfjit_disable == 0 ? d->bd_bfilter : NULL; - if (bf != NULL) + if (d->bd_bfilter != NULL) { + bf = d->bd_bfilter; slen = bf(pkt, pktlen, pktlen); - else + } else #endif slen = bpf_filter(d->bd_rfilter, pkt, pktlen, pktlen); if (slen != 0) { @@ -2123,10 +2124,10 @@ bpf_mtap(struct bpf_if *bp, struct mbuf continue; ++d->bd_rcount; #ifdef BPFJIT - bf = bpfjit_disable == 0 ? d->bd_bfilter : NULL; - if (bf != NULL) + if (d->bd_bfilter != NULL) { + bf = d->bd_bfilter; slen = bf((u_char *)m, pktlen, 0); - else + } else #endif slen = bpf_filter(d->bd_rfilter, (u_char *)m, pktlen, 0); if (slen != 0) { @@ -2188,10 +2189,10 @@ bpf_mtap2(struct bpf_if *bp, void *data, continue; ++d->bd_rcount; #ifdef BPFJIT - bf = bpfjit_disable == 0 ? d->bd_bfilter : NULL; - if (bf != NULL) + if (d->bd_bfilter != NULL) { + bf = d->bd_bfilter; slen = bf((u_char *)&mb, pktlen, 0); - else + } else #endif slen = bpf_filter(d->bd_rfilter, (u_char *)&mb, pktlen, 0); if (slen != 0) { Modified: projects/bpfjit/sys/net/bpfjit.c ============================================================================== --- projects/bpfjit/sys/net/bpfjit.c Sat Dec 8 00:47:03 2012 (r244009) +++ projects/bpfjit/sys/net/bpfjit.c Sat Dec 8 01:11:55 2012 (r244010) @@ -58,10 +58,10 @@ uint32_t m_xword(const struct mbuf *, ui uint32_t m_xhalf(const struct mbuf *, uint32_t, int *); uint32_t m_xbyte(const struct mbuf *, uint32_t, int *); -int bpfjit_disable = 0; +int bpfjit_enable = 0; SYSCTL_NODE(_net, OID_AUTO, bpfjit, CTLFLAG_RW, 0, "BPF just-in-time compiler"); -SYSCTL_INT(_net_bpfjit, OID_AUTO, disable, CTLFLAG_RW, &bpfjit_disable, 0, - "disable BPF just-in-time compiler"); +SYSCTL_INT(_net_bpfjit, OID_AUTO, enable, CTLFLAG_RW, &bpfjit_enable, 0, + "enable BPF just-in-time compiler"); #else Modified: projects/bpfjit/sys/net/bpfjit.h ============================================================================== --- projects/bpfjit/sys/net/bpfjit.h Sat Dec 8 00:47:03 2012 (r244009) +++ projects/bpfjit/sys/net/bpfjit.h Sat Dec 8 01:11:55 2012 (r244010) @@ -49,7 +49,7 @@ #endif #ifdef _KERNEL -extern int bpfjit_disable; +extern int bpfjit_enable; #endif /* Modified: projects/bpfjit/sys/netgraph/ng_bpf.c ============================================================================== --- projects/bpfjit/sys/netgraph/ng_bpf.c Sat Dec 8 00:47:03 2012 (r244009) +++ projects/bpfjit/sys/netgraph/ng_bpf.c Sat Dec 8 01:11:55 2012 (r244010) @@ -451,7 +451,7 @@ ng_bpf_rcvdata(hook_p hook, item_p item) /* Run packet through filter */ #ifdef BPFJIT - if (bpfjit_disable == 0 && hip->jit_prog != NULL) { + if (hip->jit_prog != NULL) { if (data) len = (hip->jit_prog)(data, totlen, totlen); else @@ -545,7 +545,7 @@ ng_bpf_setprog(hook_p hook, const struct const hinfo_p hip = NG_HOOK_PRIVATE(hook); struct ng_bpf_hookprog *hp; #ifdef BPFJIT - bpfjit_function_t jit_prog; + bpfjit_function_t jit_prog = NULL; #endif int size; @@ -560,8 +560,10 @@ ng_bpf_setprog(hook_p hook, const struct if (hp == NULL) return (ENOMEM); bcopy(hp0, hp, size); + #ifdef BPFJIT - jit_prog = bpfjit_generate_code(hp->bpf_prog, hp->bpf_prog_len); + if (bpfjit_enable != 0) + jit_prog = bpfjit_generate_code(hp->bpf_prog, hp->bpf_prog_len); #endif /* Free previous program, if any, and assign new one */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201212080111.qB81Bteq028993>