Commit 9849cfc
mptcp: pm: only mark 'subflow' endp as available
commit 322ea37 upstream.
Adding the following warning ...
WARN_ON_ONCE(msk->pm.local_addr_used == 0)
... before decrementing the local_addr_used counter helped to find a bug
when running the "remove single address" subtest from the mptcp_join.sh
selftests.
Removing a 'signal' endpoint will trigger the removal of all subflows
linked to this endpoint via mptcp_pm_nl_rm_addr_or_subflow() with
rm_type == MPTCP_MIB_RMSUBFLOW. This will decrement the local_addr_used
counter, which is wrong in this case because this counter is linked to
'subflow' endpoints, and here it is a 'signal' endpoint that is being
removed.
Now, the counter is decremented, only if the ID is being used outside
of mptcp_pm_nl_rm_addr_or_subflow(), only for 'subflow' endpoints, and
if the ID is not 0 -- local_addr_used is not taking into account these
ones. This marking of the ID as being available, and the decrement is
done no matter if a subflow using this ID is currently available,
because the subflow could have been closed before.
Fixes: 06faa22 ("mptcp: remove multi addresses and subflows in 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/20240819-net-mptcp-pm-reusing-id-v1-8-38035d40de5b@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>1 parent 3b82c15 commit 9849cfc
1 file changed
Lines changed: 17 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
833 | 833 | | |
834 | 834 | | |
835 | 835 | | |
836 | | - | |
837 | | - | |
838 | | - | |
| 836 | + | |
| 837 | + | |
839 | 838 | | |
| 839 | + | |
840 | 840 | | |
841 | 841 | | |
842 | 842 | | |
| |||
846 | 846 | | |
847 | 847 | | |
848 | 848 | | |
849 | | - | |
850 | | - | |
851 | 849 | | |
852 | 850 | | |
853 | 851 | | |
| |||
1441 | 1439 | | |
1442 | 1440 | | |
1443 | 1441 | | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
1444 | 1450 | | |
1445 | 1451 | | |
1446 | 1452 | | |
| |||
1474 | 1480 | | |
1475 | 1481 | | |
1476 | 1482 | | |
1477 | | - | |
1478 | | - | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
1479 | 1486 | | |
1480 | | - | |
1481 | | - | |
| 1487 | + | |
1482 | 1488 | | |
1483 | 1489 | | |
1484 | 1490 | | |
| |||
1516 | 1522 | | |
1517 | 1523 | | |
1518 | 1524 | | |
| 1525 | + | |
1519 | 1526 | | |
1520 | 1527 | | |
1521 | 1528 | | |
| |||
1917 | 1924 | | |
1918 | 1925 | | |
1919 | 1926 | | |
| 1927 | + | |
1920 | 1928 | | |
1921 | 1929 | | |
1922 | 1930 | | |
| |||
0 commit comments