* [PATCH net v2 1/2] netdev-genl: avoid empty messages in napi get
@ 2024-12-19 3:28 Jakub Kicinski
2024-12-19 3:28 ` [PATCH net v2 2/2] selftests: drv-net: test empty queue and NAPI responses in netlink Jakub Kicinski
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Jakub Kicinski @ 2024-12-19 3:28 UTC (permalink / raw)
To: davem
Cc: netdev, edumazet, pabeni, Jakub Kicinski, jdamato, almasrymina,
sridhar.samudrala, amritha.nambiar
Empty netlink responses from do() are not correct (as opposed to
dump() where not dumping anything is perfectly fine).
We should return an error if the target object does not exist,
in this case if the netdev is down we "hide" the NAPI instances.
Fixes: 27f91aaf49b3 ("netdev-genl: Add netlink framework functions for napi")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
v2:
- fix the locking
v1: https://lore.kernel.org/20241218024305.823683-1-kuba@kernel.org
CC: jdamato@fastly.com
CC: almasrymina@google.com
CC: sridhar.samudrala@intel.com
CC: amritha.nambiar@intel.com
---
net/core/netdev-genl.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/net/core/netdev-genl.c b/net/core/netdev-genl.c
index 2d3ae0cd3ad2..b0772d135efb 100644
--- a/net/core/netdev-genl.c
+++ b/net/core/netdev-genl.c
@@ -246,8 +246,12 @@ int netdev_nl_napi_get_doit(struct sk_buff *skb, struct genl_info *info)
rcu_read_unlock();
rtnl_unlock();
- if (err)
+ if (err) {
goto err_free_msg;
+ } else if (!rsp->len) {
+ err = -ENOENT;
+ goto err_free_msg;
+ }
return genlmsg_reply(rsp, info);
--
2.47.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH net v2 2/2] selftests: drv-net: test empty queue and NAPI responses in netlink
2024-12-19 3:28 [PATCH net v2 1/2] netdev-genl: avoid empty messages in napi get Jakub Kicinski
@ 2024-12-19 3:28 ` Jakub Kicinski
2024-12-19 13:28 ` [PATCH net v2 1/2] netdev-genl: avoid empty messages in napi get Eric Dumazet
2024-12-20 21:00 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: Jakub Kicinski @ 2024-12-19 3:28 UTC (permalink / raw)
To: davem; +Cc: netdev, edumazet, pabeni, Jakub Kicinski
Make sure kernel doesn't respond to GETs for queues and NAPIs when
link is down. Not with valid data, or with empty message, we want
a ENOENT.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
tools/testing/selftests/drivers/net/queues.py | 28 ++++++++++++++++---
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/drivers/net/queues.py b/tools/testing/selftests/drivers/net/queues.py
index 9c5473abbd78..38303da957ee 100755
--- a/tools/testing/selftests/drivers/net/queues.py
+++ b/tools/testing/selftests/drivers/net/queues.py
@@ -1,10 +1,12 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: GPL-2.0
-from lib.py import ksft_run, ksft_exit, ksft_eq, KsftSkipEx
-from lib.py import EthtoolFamily, NetdevFamily
+from lib.py import ksft_disruptive, ksft_exit, ksft_run
+from lib.py import ksft_eq, ksft_raises, KsftSkipEx
+from lib.py import EthtoolFamily, NetdevFamily, NlError
from lib.py import NetDrvEnv
-from lib.py import cmd
+from lib.py import cmd, defer, ip
+import errno
import glob
@@ -59,9 +61,27 @@ import glob
ksft_eq(queues, expected)
+@ksft_disruptive
+def check_down(cfg, nl) -> None:
+ # Check the NAPI IDs before interface goes down and hides them
+ napis = nl.napi_get({'ifindex': cfg.ifindex}, dump=True)
+
+ ip(f"link set dev {cfg.dev['ifname']} down")
+ defer(ip, f"link set dev {cfg.dev['ifname']} up")
+
+ with ksft_raises(NlError) as cm:
+ nl.queue_get({'ifindex': cfg.ifindex, 'id': 0, 'type': 'rx'})
+ ksft_eq(cm.exception.nl_msg.error, -errno.ENOENT)
+
+ if napis:
+ with ksft_raises(NlError) as cm:
+ nl.napi_get({'id': napis[0]['id']})
+ ksft_eq(cm.exception.nl_msg.error, -errno.ENOENT)
+
+
def main() -> None:
with NetDrvEnv(__file__, queue_count=100) as cfg:
- ksft_run([get_queues, addremove_queues], args=(cfg, NetdevFamily()))
+ ksft_run([get_queues, addremove_queues, check_down], args=(cfg, NetdevFamily()))
ksft_exit()
--
2.47.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH net v2 1/2] netdev-genl: avoid empty messages in napi get
2024-12-19 3:28 [PATCH net v2 1/2] netdev-genl: avoid empty messages in napi get Jakub Kicinski
2024-12-19 3:28 ` [PATCH net v2 2/2] selftests: drv-net: test empty queue and NAPI responses in netlink Jakub Kicinski
@ 2024-12-19 13:28 ` Eric Dumazet
2024-12-20 21:00 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: Eric Dumazet @ 2024-12-19 13:28 UTC (permalink / raw)
To: Jakub Kicinski
Cc: davem, netdev, pabeni, jdamato, almasrymina, sridhar.samudrala,
amritha.nambiar
On Thu, Dec 19, 2024 at 4:28 AM Jakub Kicinski <kuba@kernel.org> wrote:
>
> Empty netlink responses from do() are not correct (as opposed to
> dump() where not dumping anything is perfectly fine).
> We should return an error if the target object does not exist,
> in this case if the netdev is down we "hide" the NAPI instances.
>
> Fixes: 27f91aaf49b3 ("netdev-genl: Add netlink framework functions for napi")
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Reviewed-by: Eric Dumazet <edumazet@google.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH net v2 1/2] netdev-genl: avoid empty messages in napi get
2024-12-19 3:28 [PATCH net v2 1/2] netdev-genl: avoid empty messages in napi get Jakub Kicinski
2024-12-19 3:28 ` [PATCH net v2 2/2] selftests: drv-net: test empty queue and NAPI responses in netlink Jakub Kicinski
2024-12-19 13:28 ` [PATCH net v2 1/2] netdev-genl: avoid empty messages in napi get Eric Dumazet
@ 2024-12-20 21:00 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-12-20 21:00 UTC (permalink / raw)
To: Jakub Kicinski
Cc: davem, netdev, edumazet, pabeni, jdamato, almasrymina,
sridhar.samudrala, amritha.nambiar
Hello:
This series was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Wed, 18 Dec 2024 19:28:32 -0800 you wrote:
> Empty netlink responses from do() are not correct (as opposed to
> dump() where not dumping anything is perfectly fine).
> We should return an error if the target object does not exist,
> in this case if the netdev is down we "hide" the NAPI instances.
>
> Fixes: 27f91aaf49b3 ("netdev-genl: Add netlink framework functions for napi")
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
>
> [...]
Here is the summary with links:
- [net,v2,1/2] netdev-genl: avoid empty messages in napi get
https://git.kernel.org/netdev/net/c/4a25201aa46c
- [net,v2,2/2] selftests: drv-net: test empty queue and NAPI responses in netlink
https://git.kernel.org/netdev/net/c/30b981796b94
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-12-20 21:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-19 3:28 [PATCH net v2 1/2] netdev-genl: avoid empty messages in napi get Jakub Kicinski
2024-12-19 3:28 ` [PATCH net v2 2/2] selftests: drv-net: test empty queue and NAPI responses in netlink Jakub Kicinski
2024-12-19 13:28 ` [PATCH net v2 1/2] netdev-genl: avoid empty messages in napi get Eric Dumazet
2024-12-20 21:00 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).