Module Name:    src
Committed By:   rmind
Date:           Fri Sep 20 23:19:52 UTC 2013

Modified Files:
        src/sys/net: bpfjit.c

Log Message:
bpfjit: replace malloc with kmem, KNF a little, add RCS ID.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/net/bpfjit.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/net/bpfjit.c
diff -u src/sys/net/bpfjit.c:1.2 src/sys/net/bpfjit.c:1.3
--- src/sys/net/bpfjit.c:1.2	Sat Nov 10 22:12:31 2012
+++ src/sys/net/bpfjit.c	Fri Sep 20 23:19:52 2013
@@ -1,3 +1,5 @@
+/*	$NetBSD: bpfjit.c,v 1.3 2013/09/20 23:19:52 rmind Exp $	*/
+
 /*-
  * Copyright (c) 2011-2012 Alexander Nasonov.
  * All rights reserved.
@@ -29,53 +31,41 @@
 
 #include <sys/cdefs.h>
 #ifdef _KERNEL
-__KERNEL_RCSID(0, "$NetBSD: bpfjit.c,v 1.2 2012/11/10 22:12:31 alnsn Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bpfjit.c,v 1.3 2013/09/20 23:19:52 rmind Exp $");
 #else
-__RCSID("$NetBSD: bpfjit.c,v 1.2 2012/11/10 22:12:31 alnsn Exp $");
+__RCSID("$NetBSD: bpfjit.c,v 1.3 2013/09/20 23:19:52 rmind Exp $");
 #endif
 
-#include <net/bpfjit.h>
+#include <sys/types.h>
+#include <sys/queue.h>
 
 #ifndef _KERNEL
+#include <stdlib.h>
 #include <assert.h>
+#define BPFJIT_ALLOC(sz) malloc(sz)
+#define BPFJIT_FREE(p, sz) free(p)
 #define BPFJIT_ASSERT(c) assert(c)
 #else
+#include <sys/kmem.h>
+#define BPFJIT_ALLOC(sz) kmem_alloc(sz, KM_SLEEP)
+#define BPFJIT_FREE(p, sz) kmem_free(p, sz)
 #define BPFJIT_ASSERT(c) KASSERT(c)
 #endif
 
 #ifndef _KERNEL
-#include <stdlib.h>
-#define BPFJIT_MALLOC(sz) malloc(sz)
-#define BPFJIT_FREE(p) free(p)
-#else
-#include <sys/malloc.h>
-#define BPFJIT_MALLOC(sz) kern_malloc(sz, M_WAITOK)
-#define BPFJIT_FREE(p) kern_free(p)
-#endif
-
-#ifndef _KERNEL
 #include <limits.h>
+#include <stdio.h>
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
 #else
-#include <machine/limits.h>
-#include <sys/null.h>
-#include <sys/types.h>
 #include <sys/atomic.h>
 #include <sys/module.h>
 #endif
 
-#include <sys/queue.h>
-#include <sys/types.h>
-
+#include <net/bpfjit.h>
 #include <sljitLir.h>
 
-#if !defined(_KERNEL) && defined(SLJIT_VERBOSE) && SLJIT_VERBOSE
-#include <stdio.h> /* for stderr */
-#endif
-
-
 #define BPFJIT_A	SLJIT_TEMPORARY_REG1
 #define BPFJIT_X	SLJIT_TEMPORARY_EREG1
 #define BPFJIT_TMP1	SLJIT_TEMPORARY_REG2
@@ -91,12 +81,10 @@ __RCSID("$NetBSD: bpfjit.c,v 1.2 2012/11
 #define BPFJIT_INIT_X 0x10000
 #define BPFJIT_INIT_A 0x20000
 
-
 /*
  * Node of bj_jumps list.
  */
-struct bpfjit_jump
-{
+struct bpfjit_jump {
 	struct sljit_jump *bj_jump;
 	SLIST_ENTRY(bpfjit_jump) bj_entries;
 	uint32_t bj_safe_length;
@@ -105,8 +93,7 @@ struct bpfjit_jump
 /*
  * Data for BPF_JMP instruction.
  */
-struct bpfjit_jump_data
-{
+struct bpfjit_jump_data {
 	/*
 	 * These entries make up bj_jumps list:
 	 * bj_jtf[0] - when coming from jt path,
@@ -119,8 +106,7 @@ struct bpfjit_jump_data
  * Data for "read from packet" instructions.
  * See also read_pkt_insn() function below.
  */
-struct bpfjit_read_pkt_data
-{
+struct bpfjit_read_pkt_data {
 	/*
 	 * If positive, emit "if (buflen < bj_check_length) return 0".
 	 * We assume that buflen is never equal to UINT32_MAX (otherwise,
@@ -132,8 +118,7 @@ struct bpfjit_read_pkt_data
 /*
  * Additional (optimization-related) data for bpf_insn.
  */
-struct bpfjit_insn_data
-{
+struct bpfjit_insn_data {
 	/* List of jumps to this insn. */
 	SLIST_HEAD(, bpfjit_jump) bj_jumps;
 
@@ -1223,7 +1208,7 @@ bpfjit_generate_code(struct bpf_insn *in
 
 	/* a list of jumps to out-of-bound return from a generated function */
 	struct sljit_jump **ret0;
-	size_t ret0_size, ret0_maxsize;
+	size_t ret0_size = 0, ret0_maxsize = 0;
 
 	struct bpfjit_insn_data *insn_dat;
 
@@ -1258,7 +1243,7 @@ bpfjit_generate_code(struct bpf_insn *in
 	if (returns_maxsize  == 0)
 		goto fail;
 
-	insn_dat = BPFJIT_MALLOC(insn_count * sizeof(insn_dat[0]));
+	insn_dat = BPFJIT_ALLOC(insn_count * sizeof(insn_dat[0]));
 	if (insn_dat == NULL)
 		goto fail;
 
@@ -1268,13 +1253,13 @@ bpfjit_generate_code(struct bpf_insn *in
 	ret0_size = 0;
 	ret0_maxsize = get_ret0_size(insns, insn_dat, insn_count);
 	if (ret0_maxsize > 0) {
-		ret0 = BPFJIT_MALLOC(ret0_maxsize * sizeof(ret0[0]));
+		ret0 = BPFJIT_ALLOC(ret0_maxsize * sizeof(ret0[0]));
 		if (ret0 == NULL)
 			goto fail;
 	}
 
 	returns_size = 0;
-	returns = BPFJIT_MALLOC(returns_maxsize * sizeof(returns[0]));
+	returns = BPFJIT_ALLOC(returns_maxsize * sizeof(returns[0]));
 	if (returns == NULL)
 		goto fail;
 
@@ -1734,13 +1719,13 @@ fail:
 		sljit_free_compiler(compiler);
 
 	if (insn_dat != NULL)
-		BPFJIT_FREE(insn_dat);
+		BPFJIT_FREE(insn_dat, insn_count * sizeof(insn_dat[0]));
 
 	if (returns != NULL)
-		BPFJIT_FREE(returns);
+		BPFJIT_FREE(returns, returns_maxsize * sizeof(returns[0]));
 
 	if (ret0 != NULL)
-		BPFJIT_FREE(ret0);
+		BPFJIT_FREE(ret0, ret0_maxsize * sizeof(ret0[0]));
 
 	return (bpfjit_function_t)rv;
 }

Reply via email to