Loading net/ipv4/netfilter/arp_tables.c +5 −0 Original line number Diff line number Diff line Loading @@ -271,6 +271,11 @@ unsigned int arpt_do_table(struct sk_buff *skb, local_bh_disable(); addend = xt_write_recseq_begin(); private = table->private; /* * Ensure we load private-> members after we've fetched the base * pointer. */ smp_read_barrier_depends(); table_base = private->entries[smp_processor_id()]; e = get_entry(table_base, private->hook_entry[hook]); Loading net/ipv4/netfilter/ip_tables.c +5 −0 Original line number Diff line number Diff line Loading @@ -327,6 +327,11 @@ ipt_do_table(struct sk_buff *skb, addend = xt_write_recseq_begin(); private = table->private; cpu = smp_processor_id(); /* * Ensure we load private-> members after we've fetched the base * pointer. */ smp_read_barrier_depends(); table_base = private->entries[cpu]; jumpstack = (struct ipt_entry **)private->jumpstack[cpu]; stackptr = per_cpu_ptr(private->stackptr, cpu); Loading net/ipv6/netfilter/ip6_tables.c +5 −0 Original line number Diff line number Diff line Loading @@ -349,6 +349,11 @@ ip6t_do_table(struct sk_buff *skb, local_bh_disable(); addend = xt_write_recseq_begin(); private = table->private; /* * Ensure we load private-> members after we've fetched the base * pointer. */ smp_read_barrier_depends(); cpu = smp_processor_id(); table_base = private->entries[cpu]; jumpstack = (struct ip6t_entry **)private->jumpstack[cpu]; Loading net/netfilter/x_tables.c +6 −1 Original line number Diff line number Diff line Loading @@ -845,8 +845,13 @@ xt_replace_table(struct xt_table *table, return NULL; } table->private = newinfo; newinfo->initial_entries = private->initial_entries; /* * Ensure contents of newinfo are visible before assigning to * private. */ smp_wmb(); table->private = newinfo; /* * Even though table entries have now been swapped, other CPU's Loading Loading
net/ipv4/netfilter/arp_tables.c +5 −0 Original line number Diff line number Diff line Loading @@ -271,6 +271,11 @@ unsigned int arpt_do_table(struct sk_buff *skb, local_bh_disable(); addend = xt_write_recseq_begin(); private = table->private; /* * Ensure we load private-> members after we've fetched the base * pointer. */ smp_read_barrier_depends(); table_base = private->entries[smp_processor_id()]; e = get_entry(table_base, private->hook_entry[hook]); Loading
net/ipv4/netfilter/ip_tables.c +5 −0 Original line number Diff line number Diff line Loading @@ -327,6 +327,11 @@ ipt_do_table(struct sk_buff *skb, addend = xt_write_recseq_begin(); private = table->private; cpu = smp_processor_id(); /* * Ensure we load private-> members after we've fetched the base * pointer. */ smp_read_barrier_depends(); table_base = private->entries[cpu]; jumpstack = (struct ipt_entry **)private->jumpstack[cpu]; stackptr = per_cpu_ptr(private->stackptr, cpu); Loading
net/ipv6/netfilter/ip6_tables.c +5 −0 Original line number Diff line number Diff line Loading @@ -349,6 +349,11 @@ ip6t_do_table(struct sk_buff *skb, local_bh_disable(); addend = xt_write_recseq_begin(); private = table->private; /* * Ensure we load private-> members after we've fetched the base * pointer. */ smp_read_barrier_depends(); cpu = smp_processor_id(); table_base = private->entries[cpu]; jumpstack = (struct ip6t_entry **)private->jumpstack[cpu]; Loading
net/netfilter/x_tables.c +6 −1 Original line number Diff line number Diff line Loading @@ -845,8 +845,13 @@ xt_replace_table(struct xt_table *table, return NULL; } table->private = newinfo; newinfo->initial_entries = private->initial_entries; /* * Ensure contents of newinfo are visible before assigning to * private. */ smp_wmb(); table->private = newinfo; /* * Even though table entries have now been swapped, other CPU's Loading