From patchwork Thu Sep 10 19:15:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neal Cardwell X-Patchwork-Id: 1361892 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=LBKn2lbe; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BnTCm1DL0z9sR4 for ; Fri, 11 Sep 2020 05:17:08 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726683AbgIJTQs (ORCPT ); Thu, 10 Sep 2020 15:16:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726741AbgIJTPu (ORCPT ); Thu, 10 Sep 2020 15:15:50 -0400 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DE8BCC0613ED for ; Thu, 10 Sep 2020 12:15:49 -0700 (PDT) Received: by mail-qk1-x741.google.com with SMTP id n133so7195011qkn.11 for ; Thu, 10 Sep 2020 12:15:49 -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:mime-version :content-transfer-encoding; bh=qC2VWLk0/qEnHec9uRZvg0cPu4sO7p/Sao+VaNVpy7M=; b=LBKn2lbeE0P/JUyxnqZ0uA/tGUDKsRXFO8vGEoOQP5BkqUKCVkiqQj6fDNpy+Je0hK ikZJF7AODpbcrogjBSNqFrz6CaPHIOqO8AXcg+V8ZXX/5wVZMy7K7ajEMnQnQOTd2rVw JJciGaqYFBXZfnAqNE3W3p606wWPzCYxbviPIU9Edj+uLKc+C+Ewv4x47aAU7Tr8jPDJ wVS+DFsn3P2d+b5+zobyEs4/vg01CoDZ/HiIumm+WeNTT0qpk2rfpVURXVlnmsHTUxk/ bYUHKC3IxLlWJ1zf6G5WxCjGpQ/dFQZqeOFXRKmeAFsg72pH0gbywbf9r31bGeUUQPvx HJzg== 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:mime-version :content-transfer-encoding; bh=qC2VWLk0/qEnHec9uRZvg0cPu4sO7p/Sao+VaNVpy7M=; b=m3Gu+DGQGHH8JBQq5lVnqncKq5dnXjdXc5njwIqdFZLES31Mp8vEdacWQriQbFEXBc Yqjm4v+IvKsvHCpFS+wizhAopmjwsAtRnP90UhrY4NR02dy0oSS90yXdKkAC5UtRlJms VFtyqtosu+4671UkMTx1AHLOQusuKV1U2+CDllFbn3pCzrKpli3B/KDpYO3W/j/qxQOW ggudJbQ9eHSJOBawnTVa6jqW/poeQCpcYPrX7GXgD85SBB3/JnVm6Blrb0qhvY+1oiHm GQMXK4a4LYQEgc+aCDIqJ33gMaiYkYO+GVytsaTiNQ3uLyqwAv/LyXYl55A4w3SDnAd4 pEoA== X-Gm-Message-State: AOAM5335egHpb7tMndsWt0fF4nxSc/zHa6Z+KY8+mJf/nLqs6HcqzEF5 Z+KZj9Cvm/uQrLpojZeWYG8= X-Google-Smtp-Source: ABdhPJytm2i3sPS3qWBLSPYhSvQ7j0Rq86l3Q+EVC2hB51AsVOe7k0cSeuJByfEZaNmu8WlHhz6n0g== X-Received: by 2002:a37:7d87:: with SMTP id y129mr9695600qkc.108.1599765349186; Thu, 10 Sep 2020 12:15:49 -0700 (PDT) Received: from soy.nyc.corp.google.com ([2620:0:1003:312:7220:84ff:fe09:3008]) by smtp.gmail.com with ESMTPSA id j31sm8456630qta.6.2020.09.10.12.15.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2020 12:15:48 -0700 (PDT) From: Neal Cardwell To: Alexei Starovoitov Cc: netdev@vger.kernel.org, Neal Cardwell , Yuchung Cheng , Kevin Yang , Eric Dumazet , Lawrence Brakmo Subject: [PATCH bpf-next v2 3/5] tcp: simplify tcp_set_congestion_control(): always reinitialize Date: Thu, 10 Sep 2020 15:15:46 -0400 Message-Id: <20200910191546.2852195-1-ncardwell.kernel@gmail.com> X-Mailer: git-send-email 2.28.0.618.gf4bc123cb7-goog MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Neal Cardwell Now that the previous patches ensure that all call sites for tcp_set_congestion_control() want to initialize congestion control, we can simplify tcp_set_congestion_control() by removing the reinit argument and the code to support it. Signed-off-by: Neal Cardwell Acked-by: Yuchung Cheng Acked-by: Kevin Yang Signed-off-by: Eric Dumazet Cc: Lawrence Brakmo --- include/net/tcp.h | 2 +- net/core/filter.c | 3 +-- net/ipv4/tcp.c | 2 +- net/ipv4/tcp_cong.c | 11 ++--------- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/include/net/tcp.h b/include/net/tcp.h index e85d564446c6..f857146c17a5 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -1104,7 +1104,7 @@ void tcp_get_available_congestion_control(char *buf, size_t len); void tcp_get_allowed_congestion_control(char *buf, size_t len); int tcp_set_allowed_congestion_control(char *allowed); int tcp_set_congestion_control(struct sock *sk, const char *name, bool load, - bool reinit, bool cap_net_admin); + bool cap_net_admin); u32 tcp_slow_start(struct tcp_sock *tp, u32 acked); void tcp_cong_avoid_ai(struct tcp_sock *tp, u32 w, u32 acked); diff --git a/net/core/filter.c b/net/core/filter.c index 067f6759a68f..e89d6d7da03c 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -4451,8 +4451,7 @@ static int _bpf_setsockopt(struct sock *sk, int level, int optname, strncpy(name, optval, min_t(long, optlen, TCP_CA_NAME_MAX-1)); name[TCP_CA_NAME_MAX-1] = 0; - ret = tcp_set_congestion_control(sk, name, false, - true, true); + ret = tcp_set_congestion_control(sk, name, false, true); } else { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 7360d3db2b61..e58ab9db73ff 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -3050,7 +3050,7 @@ static int do_tcp_setsockopt(struct sock *sk, int level, int optname, name[val] = 0; lock_sock(sk); - err = tcp_set_congestion_control(sk, name, true, true, + err = tcp_set_congestion_control(sk, name, true, ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)); release_sock(sk); diff --git a/net/ipv4/tcp_cong.c b/net/ipv4/tcp_cong.c index d18d7a1ce4ce..a9b0fb52a1ec 100644 --- a/net/ipv4/tcp_cong.c +++ b/net/ipv4/tcp_cong.c @@ -341,7 +341,7 @@ int tcp_set_allowed_congestion_control(char *val) * already initialized. */ int tcp_set_congestion_control(struct sock *sk, const char *name, bool load, - bool reinit, bool cap_net_admin) + bool cap_net_admin) { struct inet_connection_sock *icsk = inet_csk(sk); const struct tcp_congestion_ops *ca; @@ -365,15 +365,8 @@ int tcp_set_congestion_control(struct sock *sk, const char *name, bool load, if (!ca) { err = -ENOENT; } else if (!load) { - const struct tcp_congestion_ops *old_ca = icsk->icsk_ca_ops; - if (bpf_try_module_get(ca, ca->owner)) { - if (reinit) { - tcp_reinit_congestion_control(sk, ca); - } else { - icsk->icsk_ca_ops = ca; - bpf_module_put(old_ca, old_ca->owner); - } + tcp_reinit_congestion_control(sk, ca); } else { err = -EBUSY; } From patchwork Thu Sep 10 19:18:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neal Cardwell X-Patchwork-Id: 1361893 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=RZTd/hTz; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BnTG65qxfz9sTK for ; Fri, 11 Sep 2020 05:19:10 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727113AbgIJTSz (ORCPT ); Thu, 10 Sep 2020 15:18:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44974 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727032AbgIJTSl (ORCPT ); Thu, 10 Sep 2020 15:18:41 -0400 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C5F48C061573 for ; Thu, 10 Sep 2020 12:18:40 -0700 (PDT) Received: by mail-qk1-x741.google.com with SMTP id w16so7255584qkj.7 for ; Thu, 10 Sep 2020 12:18:40 -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:mime-version :content-transfer-encoding; bh=YGm/soZLl1bn+sbVRybjYRZ/1L0c9JD9QdtdQnC5uSA=; b=RZTd/hTzvCAOXXKWq+3RHc7eTDwyVhdsrfB1xz9CONVK+V+hobTP3Vazx0ZSxxNtrc SIOhOO4LB0LKUO8b/0/j6dUMrPDSnoI5tND7ouNxwtG1NmgZaTvwfjGZ1GboE7ktoru6 qjk5G25oQjnC3iILTTdlFGJQndEuZ6YFzqGWLUKPhlZ2aQZJtwDi8pfe7Vl0+I1UjWc0 6+dzzUPst/uD8NT3xnI7afsxn7Kkw77MMIVy2gQKXIMy/VZ02PaFbOf5BtIrtr5u5uFs llsMOV5Va2Yruyj6JBlWeGLFhPce3Zg3DNNwez5gHR1PONO8d3QpVD2qRAN9uOs0zgEL sK/Q== 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:mime-version :content-transfer-encoding; bh=YGm/soZLl1bn+sbVRybjYRZ/1L0c9JD9QdtdQnC5uSA=; b=QzptseK8iTHEZEcEh4QLbO74nr0jfijiC3ko9A9Z74bRx0xM9RYahdtBGLc9bhdqn+ iC/QwUC4O78yaKOXn4PPBgKuhESmjnci1+ICvd/IpKy+tl7j6v0Qo8ngjncGeAL9R9Wx obTEESWjRD6dlo6HJJLxIzjE7Mndx0eCGnSQIN+qORvpWaXiI3wNgzTiZsrPL5eQH2PE VX7yNSIWzOvgKNer7Vv15+3fAsW9C+gBOJYoob0v4bw0QCGV9HtSS1tIFIBBKG+og21e YYRTu+w5+3GuFDnxsIq09Vjzz84MVInkGwPKwBxLEeNH9AcnMstMPpPRnNvg5Atneipe BD3g== X-Gm-Message-State: AOAM532M04fH+QR7Nj16Y/oRNYcrmNV90kfDyZ0f6lctaB5bbJRZSkI+ AiMJd51U5vBf9ldLJ3u3ntIP4hjYO5rUEnDy X-Google-Smtp-Source: ABdhPJwTeRj+TKOR65/XXRHtkYAAyWNQjucG72kH1t685JlG/yJVknwFI65siofuJjk1vPjy/FyyBA== X-Received: by 2002:a37:a88a:: with SMTP id r132mr9073929qke.270.1599765520131; Thu, 10 Sep 2020 12:18:40 -0700 (PDT) Received: from soy.nyc.corp.google.com ([2620:0:1003:312:7220:84ff:fe09:3008]) by smtp.gmail.com with ESMTPSA id v131sm1917623qkb.15.2020.09.10.12.18.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2020 12:18:39 -0700 (PDT) From: Neal Cardwell To: Alexei Starovoitov Cc: netdev@vger.kernel.org, Neal Cardwell , Yuchung Cheng , Kevin Yang , Eric Dumazet , Lawrence Brakmo Subject: [PATCH bpf-next v2 4/5] tcp: simplify _bpf_setsockopt(): remove flags argument Date: Thu, 10 Sep 2020 15:18:38 -0400 Message-Id: <20200910191838.2870445-1-ncardwell.kernel@gmail.com> X-Mailer: git-send-email 2.28.0.618.gf4bc123cb7-goog MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Neal Cardwell Now that the previous patches have removed the code that uses the flags argument to _bpf_setsockopt(), we can remove that argument. Signed-off-by: Neal Cardwell Acked-by: Yuchung Cheng Acked-by: Kevin Yang Signed-off-by: Eric Dumazet Cc: Lawrence Brakmo --- net/core/filter.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/net/core/filter.c b/net/core/filter.c index e89d6d7da03c..d266c6941967 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -4314,7 +4314,7 @@ static const struct bpf_func_proto bpf_get_socket_uid_proto = { }; static int _bpf_setsockopt(struct sock *sk, int level, int optname, - char *optval, int optlen, u32 flags) + char *optval, int optlen) { char devname[IFNAMSIZ]; int val, valbool; @@ -4611,9 +4611,7 @@ static int _bpf_getsockopt(struct sock *sk, int level, int optname, BPF_CALL_5(bpf_sock_addr_setsockopt, struct bpf_sock_addr_kern *, ctx, int, level, int, optname, char *, optval, int, optlen) { - u32 flags = 0; - return _bpf_setsockopt(ctx->sk, level, optname, optval, optlen, - flags); + return _bpf_setsockopt(ctx->sk, level, optname, optval, optlen); } static const struct bpf_func_proto bpf_sock_addr_setsockopt_proto = { @@ -4647,9 +4645,7 @@ static const struct bpf_func_proto bpf_sock_addr_getsockopt_proto = { BPF_CALL_5(bpf_sock_ops_setsockopt, struct bpf_sock_ops_kern *, bpf_sock, int, level, int, optname, char *, optval, int, optlen) { - u32 flags = 0; - return _bpf_setsockopt(bpf_sock->sk, level, optname, optval, optlen, - flags); + return _bpf_setsockopt(bpf_sock->sk, level, optname, optval, optlen); } static const struct bpf_func_proto bpf_sock_ops_setsockopt_proto = { From patchwork Thu Sep 10 19:18:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Neal Cardwell X-Patchwork-Id: 1361894 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=X81Pou8f; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BnTGt6Gkgz9sR4 for ; Fri, 11 Sep 2020 05:19:50 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727819AbgIJTT2 (ORCPT ); Thu, 10 Sep 2020 15:19:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725844AbgIJTSt (ORCPT ); Thu, 10 Sep 2020 15:18:49 -0400 Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 157D0C061756 for ; Thu, 10 Sep 2020 12:18:49 -0700 (PDT) Received: by mail-qt1-x841.google.com with SMTP id z2so5743087qtv.12 for ; Thu, 10 Sep 2020 12:18:49 -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:mime-version :content-transfer-encoding; bh=FZQMFJCPsuLKWJGu7YJd+2eHAavCNLtJCmyONTA04vw=; b=X81Pou8f3n8MyLxKV7/kTqgGOYqArIlb58D1088jv+G9mpycRBYMp+SITUy27Nzq8V 0Az7ni9d+Rla5ojZMFCxvcUx+rneiOf+oxRzFOmJEBAU0BhechQhffH70cTMRA/5MFW4 e69O2yaz+yfrEhPIqcCt67WFmcvG8CNPhTyJnbG4gkFRUZGB2E6bVsCAfIgEscw2FVz5 2/t0lOZrjpLj6jAY86I1tjZP35P+JtPmWtrkmsYIDLiouovv2cz2PJg1P1H1b7G18RVR Uv3na+OYNTwTIXcGfXRRQvGOrwLD4gjQlFx6kPIBgxKxLQGus6FFDt8Z3YFTuhxotVSn Ot6w== 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:mime-version :content-transfer-encoding; bh=FZQMFJCPsuLKWJGu7YJd+2eHAavCNLtJCmyONTA04vw=; b=l7CkIU0BbiNhpsbCcFVsgwmX3xcTUyxbzDYZNCC0n3X0bzelpiueaqPDhhmQpytxz5 Wo12U7wC+ke4uwdI08pL2bMoVGmlWU4Qvh9gOvwwd3/weaam/kMa/NaEVIjlAIZYBJcH l0aVjAJ0ZQqBAsEbr/SUtnr11sPuAmLdTXN2mFwPa6SX6XlzpXOuiV6gl5h0Yu1bSBSv KDFTRfWuD7FDhRdwwlT+co0N+gXte/ZK3ttvwRHWjYuYSgpvQ4COXS9iHCryUe3QPMzX wPrArJK8xwpONoIrjMQc5G2ZtrRj9/By9arIBDrt2dx8RgU9ycdgUSNSp4v41C3Ye/ei BM3Q== X-Gm-Message-State: AOAM532+Tsbu/j+qzF6xSZzgB2u+Oi7nPo70sV/lbH1pc1NT9S6lbSqD WIRHytNC1LN6lTXceUeZxu0= X-Google-Smtp-Source: ABdhPJy9E8T93UvBqU072ZTOj6injpniPGhjvIxoSyzoW7OLolARSU81ke1/U0iXixPukm7qQ3cVzA== X-Received: by 2002:aed:36aa:: with SMTP id f39mr9857223qtb.297.1599765528351; Thu, 10 Sep 2020 12:18:48 -0700 (PDT) Received: from soy.nyc.corp.google.com ([2620:0:1003:312:7220:84ff:fe09:3008]) by smtp.gmail.com with ESMTPSA id g131sm7089086qkb.135.2020.09.10.12.18.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2020 12:18:47 -0700 (PDT) From: Neal Cardwell To: Alexei Starovoitov Cc: netdev@vger.kernel.org, Neal Cardwell , Martin KaFai Lau , Lawrence Brakmo , Eric Dumazet , Yuchung Cheng , Kevin Yang Subject: [PATCH bpf-next v2 5/5] tcp: simplify tcp_set_congestion_control() load=false case Date: Thu, 10 Sep 2020 15:18:47 -0400 Message-Id: <20200910191847.2871574-1-ncardwell.kernel@gmail.com> X-Mailer: git-send-email 2.28.0.618.gf4bc123cb7-goog MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Neal Cardwell Simplify tcp_set_congestion_control() by removing the initialization code path for the !load case. There are only two call sites for tcp_set_congestion_control(). The EBPF call site is the only one that passes load=false; it also passes cap_net_admin=true. Because of that, the exact same behavior can be achieved by removing the special if (!load) branch of the logic. Both before and after this commit, the EBPF case will call bpf_try_module_get(), and if that succeeds then call tcp_reinit_congestion_control() or if that fails then return EBUSY. Note that this returns the logic to a structure very similar to the structure before: commit 91b5b21c7c16 ("bpf: Add support for changing congestion control") except that the CAP_NET_ADMIN status is passed in as a function argument. This clean-up was suggested by Martin KaFai Lau. Signed-off-by: Neal Cardwell Suggested-by: Martin KaFai Lau Cc: Lawrence Brakmo Cc: Eric Dumazet Cc: Yuchung Cheng Cc: Kevin Yang --- net/ipv4/tcp_cong.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/net/ipv4/tcp_cong.c b/net/ipv4/tcp_cong.c index a9b0fb52a1ec..db47ac24d057 100644 --- a/net/ipv4/tcp_cong.c +++ b/net/ipv4/tcp_cong.c @@ -362,21 +362,14 @@ int tcp_set_congestion_control(struct sock *sk, const char *name, bool load, goto out; } - if (!ca) { + if (!ca) err = -ENOENT; - } else if (!load) { - if (bpf_try_module_get(ca, ca->owner)) { - tcp_reinit_congestion_control(sk, ca); - } else { - err = -EBUSY; - } - } else if (!((ca->flags & TCP_CONG_NON_RESTRICTED) || cap_net_admin)) { + else if (!((ca->flags & TCP_CONG_NON_RESTRICTED) || cap_net_admin)) err = -EPERM; - } else if (!bpf_try_module_get(ca, ca->owner)) { + else if (!bpf_try_module_get(ca, ca->owner)) err = -EBUSY; - } else { + else tcp_reinit_congestion_control(sk, ca); - } out: rcu_read_unlock(); return err;