From patchwork Tue Jun 15 02:13:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cong Wang X-Patchwork-Id: 12320449 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 641E7C48BE8 for ; Tue, 15 Jun 2021 02:36:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 501B0613F5 for ; Tue, 15 Jun 2021 02:36:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229649AbhFOCif (ORCPT ); Mon, 14 Jun 2021 22:38:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46432 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229829AbhFOCie (ORCPT ); Mon, 14 Jun 2021 22:38:34 -0400 Received: from mail-vs1-xe36.google.com (mail-vs1-xe36.google.com [IPv6:2607:f8b0:4864:20::e36]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CB307C061574; Mon, 14 Jun 2021 19:36:29 -0700 (PDT) Received: by mail-vs1-xe36.google.com with SMTP id z7so8986061vso.3; Mon, 14 Jun 2021 19:36:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2SXBq0RQ1G77Xbs0xalfygk3bDY+dvdl+rT4iV6EI+0=; b=bxVDKKcXNafEjM4mLf7H3nuwdyzdavUzpqZjeLaXS5m2kYa3bcwr7elPIXYY38MjDa lNddy/t5+cjgoFAd3x6EtatKTSaGmGDLoafCvakRSgGltJy1O1hvu2T64YhvjfpsR2FQ hFnUhmiVsJQG9NFP9AFLU7vGEbI02oBjhNECbkRKo9VQs03o04+xyhlbKG1/IIJjVMm9 M95+7N0dPiNsi+H9DNKZtLjUJ+9UPdyyrmuPk88wtzSFEMjFO0l7d0UeHwgKSjCfg9gQ W8nvWo+6kGhiSlN+h6nUjEJNV2qKc6QZJqvg90D1eAvzPRJuQUcFtpnQDlZMo0IBqfbR /BVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2SXBq0RQ1G77Xbs0xalfygk3bDY+dvdl+rT4iV6EI+0=; b=tKmH5r+q9bE2RinbT8uoEcIbbDEI0OUzv8ExPRPkfMVMrVYDmichyxKRvHLuqeB6aR pNj+QlqiQEgNxM4+2DDuACfe4fhLuT9HRmQeZXC3oiK3JnYeXs8IaKP6qX8JzVSyOEG1 oKtwU2BCc4Y5xTi4rV3oLN/D/lHnLangnjyyn7kDDZ6HmAnBapqJ/gpjdQEu61qtrZCB Q97H8UKO8RaVWjZhHYQY6VxyxYJs5PpyUoC8kEyCVSZk3k0FSuE7DAjZlM/1/Y8siy3/ +fqj02e52QnmhtepVpJGrDbdWR1Bb9iriHpzBgECLFxpVeP0d4Xc5CPsVwXIm/OgPzKI Pf/Q== X-Gm-Message-State: AOAM5335MkRwmFzI+bhrRGZJ0gjMPh7W1XGGc0QviZ4ImEjDxXJiZUcn X2JPSkc+fDfVzPDuk5PAaxCtBeEoz0lPeA== X-Google-Smtp-Source: ABdhPJxDDTdlywr/kBTcgM2ePG32jKdGTzVkMGbYphir8fgFGZRXEUdtvc8rk8sQrv8/COrfFvZgSw== X-Received: by 2002:a05:6214:20e3:: with SMTP id 3mr2458849qvk.53.1623723237701; Mon, 14 Jun 2021 19:13:57 -0700 (PDT) Received: from unknown.attlocal.net ([2600:1700:65a0:ab60:e9a1:5f1d:df88:4f3c]) by smtp.gmail.com with ESMTPSA id t15sm10774497qtr.35.2021.06.14.19.13.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Jun 2021 19:13:57 -0700 (PDT) From: Cong Wang To: netdev@vger.kernel.org Cc: bpf@vger.kernel.org, Cong Wang , Jiang Wang , John Fastabend , Daniel Borkmann , Jakub Sitnicki , Lorenz Bauer Subject: [PATCH RESEND bpf v3 2/8] selftests/bpf: Retry for EAGAIN in udp_redir_to_connected() Date: Mon, 14 Jun 2021 19:13:36 -0700 Message-Id: <20210615021342.7416-3-xiyou.wangcong@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210615021342.7416-1-xiyou.wangcong@gmail.com> References: <20210615021342.7416-1-xiyou.wangcong@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org X-Patchwork-Delegate: bpf@iogearbox.net From: Cong Wang We use non-blocking sockets for testing sockmap redirections, and got some random EAGAIN errors from UDP tests. There is no guarantee the packet would be immediately available to receive as soon as it is sent out, even on the local host. For UDP, this is especially true because it does not lock the sock during BH (unlike the TCP path). This is probably why we only saw this error in UDP cases. No matter how hard we try to make the queue empty check accurate, it is always possible for recvmsg() to beat ->sk_data_ready(). Therefore, we should just retry in case of EAGAIN. Fixes: d6378af615275 ("selftests/bpf: Add a test case for udp sockmap") Reported-by: Jiang Wang Cc: John Fastabend Cc: Daniel Borkmann Cc: Jakub Sitnicki Cc: Lorenz Bauer Signed-off-by: Cong Wang --- tools/testing/selftests/bpf/prog_tests/sockmap_listen.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c b/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c index 648d9ae898d2..01ab11259809 100644 --- a/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c +++ b/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c @@ -1610,6 +1610,7 @@ static void udp_redir_to_connected(int family, int sotype, int sock_mapfd, struct sockaddr_storage addr; int c0, c1, p0, p1; unsigned int pass; + int retries = 100; socklen_t len; int err, n; u64 value; @@ -1686,9 +1687,13 @@ static void udp_redir_to_connected(int family, int sotype, int sock_mapfd, if (pass != 1) FAIL("%s: want pass count 1, have %d", log_prefix, pass); +again: n = read(mode == REDIR_INGRESS ? p0 : c0, &b, 1); - if (n < 0) + if (n < 0) { + if (errno == EAGAIN && retries--) + goto again; FAIL_ERRNO("%s: read", log_prefix); + } if (n == 0) FAIL("%s: incomplete read", log_prefix);