]> www.infradead.org Git - users/willy/pagecache.git/commit
net: sched: cls_api: improve the error message for ID allocation failure
authorJakub Kicinski <kuba@kernel.org>
Fri, 8 Nov 2024 01:02:54 +0000 (17:02 -0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 12 Nov 2024 11:58:31 +0000 (12:58 +0100)
commita58f00ed24b849d449f7134fd5d86f07090fe2f5
tree7b6b382c4251565ad843c65ded73851195338cae
parent12079a59ce52e72a342c49cfacf0281213fd6f32
net: sched: cls_api: improve the error message for ID allocation failure

We run into an exhaustion problem with the kernel-allocated filter IDs.
Our allocation problem can be fixed on the user space side,
but the error message in this case was quite misleading:

  "Filter with specified priority/protocol not found" (EINVAL)

Specifically when we can't allocate a _new_ ID because filter with
lowest ID already _exists_, saying "filter not found", is confusing.

Kernel allocates IDs in range of 0xc0000 -> 0x8000, giving out ID one
lower than lowest existing in that range. The error message makes sense
when tcf_chain_tp_find() gets called for GET and DEL but for NEW we
need to provide more specific error messages for all three cases:

 - user wants the ID to be auto-allocated but filter with ID 0x8000
   already exists

 - filter already exists and can be replaced, but user asked
   for a protocol change

 - filter doesn't exist

Caller of tcf_chain_tp_insert_unique() doesn't set extack today,
so don't bother plumbing it in.

Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Link: https://patch.msgid.link/20241108010254.2995438-1-kuba@kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/sched/cls_api.c