From patchwork Wed Jan 23 04:37:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yafang Shao X-Patchwork-Id: 1029655 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; 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.b="EhDde4E/"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43kswH5N3nz9s3l for ; Wed, 23 Jan 2019 15:37:51 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725973AbfAWEho (ORCPT ); Tue, 22 Jan 2019 23:37:44 -0500 Received: from mail-pl1-f194.google.com ([209.85.214.194]:34608 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725930AbfAWEhn (ORCPT ); Tue, 22 Jan 2019 23:37:43 -0500 Received: by mail-pl1-f194.google.com with SMTP id w4so501460plz.1 for ; Tue, 22 Jan 2019 20:37:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=N+d6dzhgGbpyOA2ZU4AaJFq0/h/4uUAa5zQZ8oDhD0s=; b=EhDde4E/wCNtWI/XNt2EVARndfg16LIdBCmaWK+qF4+p6c209+04QbY7NsQQCE3mMP W0ufUDmGqkuUUohHYzFL91vqcKJb5AHFpysIBz3nimKdXVws1RRCFMwy49IIi/k4WaaR GS1cbAfHBMDA2AO/2H7SWiImJ5BHtMEY6szbC1hYJcfEb2KFcySZUqeeeibAVy6hpnsI wEeO0iUCGoI0ijI9wINOlkO70qU/Cy1xovKXfMIFY6/f9vbE0xvoRcMinx65XFcbq2vD jeqhGaE1kFoKgVwWcv3XbXfm7NLvwSpsnx/+Va25Jz7QIqARA+UMr8guoctTfu/NId0+ QJCw== 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; bh=N+d6dzhgGbpyOA2ZU4AaJFq0/h/4uUAa5zQZ8oDhD0s=; b=NDyAQYee/KLJqe6PEqiRmb7h5b9VA9rF0ezLlPD6JfRzvTVx8XDz7TfcnLQx2RXrBH 6dVt4gSyrVAVrgokTLu+r1wp0M/+VrxVNlKSxvvP3cIU9KyHOfgAHezy1IvGH9G2UqGG dADD6Vlj1EuBNdUjKcF/RwavSu9S/bYvXTFgf+lC/5iybqC/uyhN+vWMktswetWZiF/T OOdClehdj6qRmkzmh3ZD7bjAITSd786Wylr9g7SR6FaC0AXOuploQMgsAcKWKj2x/nxZ LySpgCEQTAa75plihkLOD3Y3RCr4qOrEGy9Zz+MtCKQl3GjfFFn37F7eFM0rHRRgA02J bobA== X-Gm-Message-State: AJcUukfQmk9/UQxG2D4GXJ9NHOSu5NhxEuz7dkMUpCasJXziYUMJOTzW lhD6LntOAb4SVJTyJxig/Lw= X-Google-Smtp-Source: ALg8bN5z5Ng6dnOxFQKBldXiLo9jC/KvNQusFJhtbc4tO4eSOwJM8/K2fRJCH2SjhXVMBrQZLK/6hw== X-Received: by 2002:a17:902:380c:: with SMTP id l12mr742437plc.326.1548218263298; Tue, 22 Jan 2019 20:37:43 -0800 (PST) Received: from localhost.localdomain ([203.100.54.194]) by smtp.gmail.com with ESMTPSA id b27sm23150982pfh.113.2019.01.22.20.37.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 22 Jan 2019 20:37:42 -0800 (PST) From: Yafang Shao To: kafai@fb.com, brakmo@fb.com, ast@kernel.org, daniel@iogearbox.net Cc: netdev@vger.kernel.org, shaoyafang@didiglobal.com, Yafang Shao Subject: [PATCH v2 bpf] bpf: sock recvbuff must be limited by rmem_max in bpf_setsockopt() Date: Wed, 23 Jan 2019 12:37:19 +0800 Message-Id: <1548218239-31223-1-git-send-email-laoar.shao@gmail.com> X-Mailer: git-send-email 1.8.3.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When sock recvbuff is set by bpf_setsockopt(), the value must by limited by rmem_max. It is the same with sendbuff. Fixes: 8c4b4c7e9ff0 ("bpf: Add setsockopt helper function to bpf") Acked-by: Martin KaFai Lau Acked-by: Lawrence Brakmo Signed-off-by: Yafang Shao --- net/core/filter.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/core/filter.c b/net/core/filter.c index 7559d68..7a54dc1 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -4112,10 +4112,12 @@ static unsigned long bpf_xdp_copy(void *dst_buff, const void *src_buff, /* Only some socketops are supported */ switch (optname) { case SO_RCVBUF: + val = min_t(u32, val, sysctl_rmem_max); sk->sk_userlocks |= SOCK_RCVBUF_LOCK; sk->sk_rcvbuf = max_t(int, val * 2, SOCK_MIN_RCVBUF); break; case SO_SNDBUF: + val = min_t(u32, val, sysctl_wmem_max); sk->sk_userlocks |= SOCK_SNDBUF_LOCK; sk->sk_sndbuf = max_t(int, val * 2, SOCK_MIN_SNDBUF); break;