Thread (5 messages) flat view 5 messages, 3 authors, 2021-06-02

Re: [PATCH net-next] xsk: Return -EINVAL instead of -EBUSY after xsk_get_pool_from_qid() fails

From: Magnus Karlsson <hidden>
Date: 2021-06-02 08:54:14
Also in: bpf, lkml

On Wed, Jun 2, 2021 at 10:38 AM Toke Høiland-Jørgensen [off-list ref] wrote:
Magnus Karlsson [off-list ref] writes:
quoted
On Wed, Jun 2, 2021 at 6:02 AM Wang Hai [off-list ref] wrote:
quoted
xsk_get_pool_from_qid() fails not because the device's queues are busy,
but because the queue_id exceeds the current number of queues.
So when it fails, it is better to return -EINVAL instead of -EBUSY.

Signed-off-by: Wang Hai <redacted>
---
 net/xdp/xsk_buff_pool.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/xdp/xsk_buff_pool.c b/net/xdp/xsk_buff_pool.c
index 8de01aaac4a0..30ece117117a 100644
--- a/net/xdp/xsk_buff_pool.c
+++ b/net/xdp/xsk_buff_pool.c
@@ -135,7 +135,7 @@ int xp_assign_dev(struct xsk_buff_pool *pool,
                return -EINVAL;

        if (xsk_get_pool_from_qid(netdev, queue_id))
-               return -EBUSY;
+               return -EINVAL;
I guess your intent here is to return -EINVAL only when the queue_id
is larger than the number of active queues. But this patch also
changes the return code when the queue id is already in use and in
that case we should continue to return -EBUSY. As this function is
used by a number of drivers, the easiest way to accomplish this is to
introduce a test for queue_id out of bounds before this if-statement
and return -EINVAL there.
Isn't the return code ABI by now, though?
You are probably right and in that case this should not change at all.
It has been returning this for quite a while too as it is nothing new.
But I leave the final decision to other people on the list.
-Toke
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help