Skip to content

Commit

Permalink
selftests: net: more strict check in net_helper
Browse files Browse the repository at this point in the history
commit a71d090 upstream.

The helper waiting for a listener port can match any socket whose
hexadecimal representation of source or destination addresses
matches that of the given port.

Additionally, any socket state is accepted.

All the above can let the helper return successfully before the
relevant listener is actually ready, with unexpected results.

So far I could not find any related failure in the netdev CI, but
the next patch is going to make the critical event more easily
reproducible.

Address the issue matching the port hex only vs the relevant socket
field and additionally checking the socket state for TCP sockets.

Fixes: 3bdd9fd ("selftests/net: synchronize udpgro tests' tx and rx connection")
Signed-off-by: Paolo Abeni <[email protected]>
Link: https://lore.kernel.org/r/192b3dbc443d953be32991d1b0ca432bd4c65008.1707731086.git.pabeni@redhat.com
Signed-off-by: Jakub Kicinski <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
Paolo Abeni authored and gregkh committed Jun 16, 2024
1 parent 225de87 commit 50f3931
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions tools/testing/selftests/net/net_helper.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ wait_local_port_listen()
local listener_ns="${1}"
local port="${2}"
local protocol="${3}"
local port_hex
local pattern
local i

port_hex="$(printf "%04X" "${port}")"
pattern=":$(printf "%04X" "${port}") "

# for tcp protocol additionally check the socket state
[ ${protocol} = "tcp" ] && pattern="${pattern}0A"
for i in $(seq 10); do
if ip netns exec "${listener_ns}" cat /proc/net/"${protocol}"* | \
grep -q "${port_hex}"; then
if ip netns exec "${listener_ns}" awk '{print $2" "$4}' \
/proc/net/"${protocol}"* | grep -q "${pattern}"; then
break
fi
sleep 0.1
Expand Down

0 comments on commit 50f3931

Please sign in to comment.