netfilter: core: return EBUSY in case NAT hook is already in use
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 10 Jan 2018 14:24:15 +0000 (15:24 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 10 Jan 2018 14:32:16 +0000 (15:32 +0100)
EEXIST is used for an object that already exists, with the same
name/handle. However, there no same object there, instead there is a
object that is using the single slot that is available for NAT hooks
since patch f92b40a8b264 ("netfilter: core: only allow one nat hook per
hook point"). Let's change this return value before this behaviour gets
exposed in the first -rc.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/core.c

index 3f8e2d06b9cc0a0003a20ed9745909cd615d42d0..0f6b8172fb9ab1bed02439b130b306b42e22adf6 100644 (file)
@@ -140,7 +140,7 @@ nf_hook_entries_grow(const struct nf_hook_entries *old,
 
                if (reg->nat_hook && orig_ops[i]->nat_hook) {
                        kvfree(new);
-                       return ERR_PTR(-EEXIST);
+                       return ERR_PTR(-EBUSY);
                }
 
                if (inserted || reg->priority > orig_ops[i]->priority) {