FIXME: fold

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---
 net/bridge/netfilter/ebtables.c |   23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff -r e9ce1a43ea23 net/bridge/netfilter/ebtables.c
--- a/net/bridge/netfilter/ebtables.c	Thu Nov 20 15:36:29 2008 +1030
+++ b/net/bridge/netfilter/ebtables.c	Thu Nov 20 16:56:10 2008 +1030
@@ -170,8 +170,8 @@
 	private = table->private;
 	cb_base = COUNTER_BASE(private->counters, private->nentries,
 	   smp_processor_id());
-	if (private->chainstack)
-		cs = private->chainstack[smp_processor_id()];
+	if (private->chainstack_pcpu)
+		cs = *__get_cpu_ptr(private->chainstack_pcpu);
 	else
 		cs = NULL;
 	chaininfo = private->hook_entry[hook];
@@ -859,13 +859,14 @@
 	if (udc_cnt) {
 		/* this will get free'd in do_replace()/ebt_register_table()
 		   if an error occurs */
-		newinfo->chainstack_pcpu = alloc_percpu(struct ebt_chainstack **);
+		newinfo->chainstack_pcpu =
+			alloc_percpu(struct ebt_chainstack *);
 		if (!newinfo->chainstack_pcpu)
 			return -ENOMEM;
 		for_each_possible_cpu(i) {
-			*per_cpu_ptr(newinfo->chainstack, i) =
+			*per_cpu_ptr(newinfo->chainstack_pcpu, i) =
 			  vmalloc(udc_cnt * sizeof(*(newinfo->chainstack_pcpu[0])));
-			if (!*per_cpu_ptr(newinfo->chainstack, i)) {
+			if (!*per_cpu_ptr(newinfo->chainstack_pcpu, i)) {
 				int j;
 				for_each_possible_cpu(j) {
 					if (j == i)
@@ -1136,7 +1137,7 @@
 		memset(newinfo->counters, 0, countersize);
 
 	/* fill in newinfo and parse the entries */
-	newinfo->chainstack = NULL;
+	newinfo->chainstack_pcpu = NULL;
 	for (i = 0; i < NF_BR_NUMHOOKS; i++) {
 		if ((repl->valid_hooks & (1 << i)) == 0)
 			newinfo->hook_entry[i] = NULL;
@@ -1180,10 +1181,10 @@
 free_unlock:
 	mutex_unlock(&ebt_mutex);
 free_chainstack:
-	if (newinfo->chainstack) {
+	if (newinfo->chainstack_pcpu) {
 		for_each_possible_cpu(i)
 			vfree(*per_cpu_ptr(newinfo->chainstack_pcpu, i));
-		free_percpu(table->chainstack_pcpu);
+		free_percpu(newinfo->chainstack_pcpu);
 	}
 	vfree(newinfo->entries);
 free_newinfo:
@@ -1203,10 +1204,10 @@
 	list_del(&table->list);
 	mutex_unlock(&ebt_mutex);
 	vfree(table->private->entries);
-	if (table->private->chainstack) {
+	if (table->private->chainstack_pcpu) {
 		for_each_possible_cpu(i)
-			vfree(*per_cpu_ptr(newinfo->chainstack_pcpu, i));
-		free_percpu(table->chainstack_pcpu);
+			vfree(*per_cpu_ptr(table->private->chainstack_pcpu, i));
+		free_percpu(table->private->chainstack_pcpu);
 	}
 	vfree(table->private);
 }
