• Xu Kuohai's avatar
    selftests/bpf: Fix a CI failure caused by vsock write · c1970e26
    Xu Kuohai authored
    While commit 90f0074c ("selftests/bpf: fix a CI failure caused by vsock sockmap test")
    fixes a receive failure of vsock sockmap test, there is still a write failure:
    
    Error: #211/79 sockmap_listen/sockmap VSOCK test_vsock_redir
    Error: #211/79 sockmap_listen/sockmap VSOCK test_vsock_redir
      ./test_progs:vsock_unix_redir_connectible:1501: egress: write: Transport endpoint is not connected
      vsock_unix_redir_connectible:FAIL:1501
      ./test_progs:vsock_unix_redir_connectible:1501: ingress: write: Transport endpoint is not connected
      vsock_unix_redir_connectible:FAIL:1501
      ./test_progs:vsock_unix_redir_connectible:1501: egress: write: Transport endpoint is not connected
      vsock_unix_redir_connectible:FAIL:1501
    
    The reason is that the vsock connection in the test is set to ESTABLISHED state
    by function virtio_transport_recv_pkt, which is executed in a workqueue thread,
    so when the user space test thread runs before the workqueue thread, this
    problem occurs.
    
    To fix it, before writing the connection, wait for it to be connected.
    
    Fixes: d61bd8c1 ("selftests/bpf: add a test case for vsock sockmap")
    Signed-off-by: default avatarXu Kuohai <xukuohai@huawei.com>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20230901031037.3314007-1-xukuohai@huaweicloud.com
    c1970e26
sockmap_helpers.h 13.2 KB