|
Lines 455-462
static bool find_jump_target(const struct xt_table_info *t,
Link Here
|
| 455 |
const struct ip6t_entry *target) |
455 |
const struct ip6t_entry *target) |
| 456 |
{ |
456 |
{ |
| 457 |
struct ip6t_entry *iter; |
457 |
struct ip6t_entry *iter; |
|
|
458 |
void *loc_cpu_entry = t->entries[raw_smp_processor_id()]; |
| 458 |
|
459 |
|
| 459 |
xt_entry_foreach(iter, t->entries, t->size) { |
460 |
xt_entry_foreach(iter, loc_cpu_entry, t->size) { |
| 460 |
if (iter == target) |
461 |
if (iter == target) |
| 461 |
return true; |
462 |
return true; |
| 462 |
} |
463 |
} |
|
Lines 1493-1500
check_compat_entry_size_and_hooks(struct compat_ip6t_entry *e,
Link Here
|
| 1493 |
entry_offset = (void *)e - (void *)base; |
1494 |
entry_offset = (void *)e - (void *)base; |
| 1494 |
j = 0; |
1495 |
j = 0; |
| 1495 |
xt_ematch_foreach(ematch, e) { |
1496 |
xt_ematch_foreach(ematch, e) { |
| 1496 |
ret = compat_find_calc_match(ematch, &e->ipv6, e->comefrom, |
1497 |
ret = compat_find_calc_match(ematch, |
| 1497 |
&off); |
1498 |
&e->ipv6, e->comefrom, &off); |
| 1498 |
if (ret != 0) |
1499 |
if (ret != 0) |
| 1499 |
goto release_matches; |
1500 |
goto release_matches; |
| 1500 |
++j; |
1501 |
++j; |
|
Lines 1640-1645
translate_compat_table(struct net *net,
Link Here
|
| 1640 |
if (ret) |
1641 |
if (ret) |
| 1641 |
goto free_newinfo; |
1642 |
goto free_newinfo; |
| 1642 |
|
1643 |
|
|
|
1644 |
/* And one copy for every other CPU */ |
| 1645 |
for_each_possible_cpu(i) |
| 1646 |
if (newinfo->entries[i] && newinfo->entries[i] != entry1) |
| 1647 |
memcpy(newinfo->entries[i], entry1, newinfo->size); |
| 1648 |
|
| 1643 |
*pinfo = newinfo; |
1649 |
*pinfo = newinfo; |
| 1644 |
*pentry0 = entry1; |
1650 |
*pentry0 = entry1; |
| 1645 |
xt_free_table_info(info); |
1651 |
xt_free_table_info(info); |
| 1646 |
- |
|
|