summaryrefslogtreecommitdiffstats
path: root/kernel/ip_set_list_set.c
diff options
context:
space:
mode:
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>2011-01-26 22:26:01 +0100
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>2011-01-26 22:26:01 +0100
commitfa7f70f8042c5fd8b64821cbfd66fdea5c1a2a67 (patch)
tree1c085313c8e52bfe64efd5f34579ea1a3eac201a /kernel/ip_set_list_set.c
parent16cfb322781f4555a2a385a3a9df8edbe5f58fe9 (diff)
Correct the error codes: use ENOENT and EMSGSIZE
Use correct error codes (Patrick McHardy's review)
Diffstat (limited to 'kernel/ip_set_list_set.c')
-rw-r--r--kernel/ip_set_list_set.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/kernel/ip_set_list_set.c b/kernel/ip_set_list_set.c
index 892a106..933d9ef 100644
--- a/kernel/ip_set_list_set.c
+++ b/kernel/ip_set_list_set.c
@@ -392,7 +392,7 @@ list_set_head(struct ip_set *set, struct sk_buff *skb)
return 0;
nla_put_failure:
- return -EFAULT;
+ return -EMSGSIZE;
}
static int
@@ -406,7 +406,7 @@ list_set_list(const struct ip_set *set,
atd = ipset_nest_start(skb, IPSET_ATTR_ADT);
if (!atd)
- return -EFAULT;
+ return -EMSGSIZE;
for (; cb->args[2] < map->size; cb->args[2]++) {
i = cb->args[2];
e = list_set_elem(map, i);
@@ -418,7 +418,7 @@ list_set_list(const struct ip_set *set,
if (!nested) {
if (i == first) {
nla_nest_cancel(skb, atd);
- return -EFAULT;
+ return -EMSGSIZE;
} else
goto nla_put_failure;
}
@@ -441,6 +441,10 @@ finish:
nla_put_failure:
nla_nest_cancel(skb, nested);
ipset_nest_end(skb, atd);
+ if (unlikely(i == first)) {
+ cb->args[2] = 0;
+ return -EMSGSIZE;
+ }
return 0;
}