Replace the manual offset-based iteration with xt_entry_foreach(), thereby removing FIXME. The byte offset semantics and user ABI are preserved. Signed-off-by: Kshitiz Bartariya --- net/ipv4/netfilter/arp_tables.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c index 1cdd9c28ab2d..9f82ce0fcaa5 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c @@ -684,12 +684,11 @@ static int copy_entries_to_user(unsigned int total_size, loc_cpu_entry = private->entries; - /* FIXME: use iterator macros --RR */ - /* ... then go back and fix counters and names */ - for (off = 0, num = 0; off < total_size; off += e->next_offset, num++){ + num = 0; + xt_entry_foreach(e, loc_cpu_entry, total_size) { const struct xt_entry_target *t; - e = loc_cpu_entry + off; + off = (unsigned char *)e - (unsigned char *)loc_cpu_entry; if (copy_to_user(userptr + off, e, sizeof(*e))) { ret = -EFAULT; goto free_counters; @@ -707,6 +706,7 @@ static int copy_entries_to_user(unsigned int total_size, ret = -EFAULT; goto free_counters; } + num++; } free_counters: -- 2.50.1 (Apple Git-155)