| From matttbe@kernel.org Thu Feb 12 12:04:04 2026 |
| From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org> |
| Date: Thu, 12 Feb 2026 12:03:45 +0100 |
| Subject: selftests: mptcp: pm: ensure unknown flags are ignored |
| To: stable@vger.kernel.org, gregkh@linuxfoundation.org |
| Cc: MPTCP Upstream <mptcp@lists.linux.dev>, "Matthieu Baerts (NGI0)" <matttbe@kernel.org>, Mat Martineau <martineau@kernel.org>, Jakub Kicinski <kuba@kernel.org> |
| Message-ID: <20260212110344.781836-2-matttbe@kernel.org> |
| |
| From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org> |
| |
| commit 29f4801e9c8dfd12bdcb33b61a6ac479c7162bd7 upstream. |
| |
| This validates the previous commit: the userspace can set unknown flags |
| -- the 7th bit is currently unused -- without errors, but only the |
| supported ones are printed in the endpoints dumps. |
| |
| The 'Fixes' tag here below is the same as the one from the previous |
| commit: this patch here is not fixing anything wrong in the selftests, |
| but it validates the previous fix for an issue introduced by this commit |
| ID. |
| |
| Fixes: 01cacb00b35c ("mptcp: add netlink-based PM") |
| Cc: stable@vger.kernel.org |
| Reviewed-by: Mat Martineau <martineau@kernel.org> |
| Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> |
| Link: https://patch.msgid.link/20251205-net-mptcp-misc-fixes-6-19-rc1-v1-2-9e4781a6c1b8@kernel.org |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| [ Conflicts in pm_netlink.sh, because some refactoring have been done |
| later on: commit 0d16ed0c2e74 ("selftests: mptcp: add |
| {get,format}_endpoint(s) helpers") and commit c99d57d0007a |
| ("selftests: mptcp: use pm_nl endpoint ops") are not in this version. |
| The same operation can still be done at the same place, without using |
| the new helpers. |
| Also, commit 1dc88d241f92 ("selftests: mptcp: pm_nl_ctl: always look |
| for errors") is not in this version, and create a conflict in the |
| context which is not related to the modification here. |
| Conflicts in pm_nl_ctl.c, because commit 69c6ce7b6eca ("selftests: |
| mptcp: add implicit endpoint test case") is not in this version, and |
| caused a conflict in the context which is not related to the |
| modification here. ] |
| Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| tools/testing/selftests/net/mptcp/pm_netlink.sh | 4 ++++ |
| tools/testing/selftests/net/mptcp/pm_nl_ctl.c | 11 +++++++++++ |
| 2 files changed, 15 insertions(+) |
| |
| --- a/tools/testing/selftests/net/mptcp/pm_netlink.sh |
| +++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh |
| @@ -124,6 +124,10 @@ id 8 flags signal 10.0.1.8" "id limit" |
| ip netns exec $ns1 ./pm_nl_ctl flush |
| check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "flush addrs" |
| |
| +ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1 flags unknown |
| +check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.1.1" "ignore unknown flags" |
| +ip netns exec $ns1 ./pm_nl_ctl flush |
| + |
| ip netns exec $ns1 ./pm_nl_ctl limits 9 1 |
| check "ip netns exec $ns1 ./pm_nl_ctl limits" "$default_limits" "rcv addrs above hard limit" |
| |
| --- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c |
| +++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c |
| @@ -22,6 +22,8 @@ |
| #define MPTCP_PM_NAME "mptcp_pm" |
| #endif |
| |
| +#define MPTCP_PM_ADDR_FLAG_UNKNOWN _BITUL(7) |
| + |
| static void syntax(char *argv[]) |
| { |
| fprintf(stderr, "%s add|get|set|del|flush|dump|accept [<args>]\n", argv[0]); |
| @@ -238,6 +240,8 @@ int add_addr(int fd, int pm_family, int |
| flags |= MPTCP_PM_ADDR_FLAG_BACKUP; |
| else if (!strcmp(tok, "fullmesh")) |
| flags |= MPTCP_PM_ADDR_FLAG_FULLMESH; |
| + else if (!strcmp(tok, "unknown")) |
| + flags |= MPTCP_PM_ADDR_FLAG_UNKNOWN; |
| else |
| error(1, errno, |
| "unknown flag %s", argv[arg]); |
| @@ -435,6 +439,13 @@ static void print_addr(struct rtattr *at |
| if (flags) |
| printf(","); |
| } |
| + |
| + if (flags & MPTCP_PM_ADDR_FLAG_UNKNOWN) { |
| + printf("unknown"); |
| + flags &= ~MPTCP_PM_ADDR_FLAG_UNKNOWN; |
| + if (flags) |
| + printf(","); |
| + } |
| |
| /* bump unknown flags, if any */ |
| if (flags) |