From patchwork Sat Jan 19 06:20:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yafang Shao X-Patchwork-Id: 1027871 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="RY/17alW"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43hSP62X11z9sBQ for ; Sat, 19 Jan 2019 17:20:57 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726829AbfASGUr (ORCPT ); Sat, 19 Jan 2019 01:20:47 -0500 Received: from mail-pl1-f196.google.com ([209.85.214.196]:40771 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726205AbfASGUr (ORCPT ); Sat, 19 Jan 2019 01:20:47 -0500 Received: by mail-pl1-f196.google.com with SMTP id u18so7297580plq.7 for ; Fri, 18 Jan 2019 22:20:47 -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=GoG1jMIZJ7xhnBJCKsJXqCiMNLnb3fvTJnAksfCy/1w=; b=RY/17alW8rQXXiBWUlq+w0ZEVH70q+v+v8aB1WOCSa/Vj9J9KTx/bW9O+Tgp2J/jus 9RvUT298u3q0gz9AAoAX5/jNTj0oKSIUiWc1zQtWQjMJW/A4c1In5Q6b7BXBEzbJY78B 0VRk7d358PBT8ELvvxh6TsAwTCe0KM8eWDgroquFdQEf4YDJRxA/a8ykMJvHavLYnLkE eloLvlWDccv7lPik/ihlnrPBJkYgHwhJ11qArz2wSIkUk/EHL/sGSMj6D5dsNofgQXt/ FzqWo4WMD7f6iAabBumscj7IirkEXqFlXmhy+72TS5V6JlNA7zo2+su1lg+s9C17TJAw tqQw== 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=GoG1jMIZJ7xhnBJCKsJXqCiMNLnb3fvTJnAksfCy/1w=; b=A7IxeukeUk0Fe4l8XnEOR/yjMTueMg9H2tq7W3/QAq/mnaJzmCxovEvVrTeWAweGjp 9C5uwBKRtmP0kEay25RTxla3/8mLayZIyRLG87oI5nF4/s7VParnoSXsnivFrX7U7Y0M beq5B+pD+y79ti1JrdKtGB3eqIdfGygsNqp//EjSaMnEHgN7Q1V02DK5iUtUh1smJaPq VDwnW0PebWNc2fkLWzY+Z1aapLcEGuuVetNWrysusbiO6HHmhZ51t38Ii7RHACQVbh0w gsLBaEOn8+smS5HKlYKHxngAUgahXJcL8ihLr3plvnfpnALRh7eqvM0GvxZ+z6a/OEwx +vmw== X-Gm-Message-State: AJcUukceu31TJXPRgf6Y6AoU5oo8x0cALRVLglhTAcdKGsdTUbt4lu26 9xig7rYd1NzlJ72aOYfO7ifptXotXdQ= X-Google-Smtp-Source: ALg8bN4oDTyFFZh2SZlP7cLRafKVYMJF7CfUnmLufz0CA5EqIhDX7VRitKKTwdaZelWJbH5V61OuzA== X-Received: by 2002:a17:902:3064:: with SMTP id u91mr21525798plb.325.1547878846756; Fri, 18 Jan 2019 22:20:46 -0800 (PST) Received: from localhost.localdomain ([203.100.54.194]) by smtp.gmail.com with ESMTPSA id h82sm16227760pfa.105.2019.01.18.22.20.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 18 Jan 2019 22:20:46 -0800 (PST) From: Yafang Shao To: ast@kernel.org, daniel@iogearbox.net Cc: netdev@vger.kernel.org, shaoyafang@didiglobal.com, Yafang Shao Subject: [PATCH bpf-next] bpf: sock recvbuff must be limited by rmem_max in bpf_setsockopt() Date: Sat, 19 Jan 2019 14:20:30 +0800 Message-Id: <1547878830-22042-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. Signed-off-by: Yafang Shao Acked-by: Martin KaFai Lau Acked-by: Lawrence Brakmo --- net/core/filter.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/core/filter.c b/net/core/filter.c index 447dd1b..f30b58a 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -4111,10 +4111,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;