From mboxrd@z Thu Jan 1 00:00:00 1970 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=-16.6 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL 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 E2D71C282C4 for ; Tue, 12 Feb 2019 20:26:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AA58621904 for ; Tue, 12 Feb 2019 20:26:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="kVhj4ykQ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730404AbfBLU0b (ORCPT ); Tue, 12 Feb 2019 15:26:31 -0500 Received: from mail-pf1-f195.google.com ([209.85.210.195]:42540 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727059AbfBLU0b (ORCPT ); Tue, 12 Feb 2019 15:26:31 -0500 Received: by mail-pf1-f195.google.com with SMTP id n74so1822527pfi.9 for ; Tue, 12 Feb 2019 12:26:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=13L4JD/Uv8WycZlOzMXhW4LHYhbZ0iC/4L8G7+8ZE3I=; b=kVhj4ykQPP/yTGFn5CpxgAAaHLeKZT57X/5/FfJLbAkTnjl88htUSrmI4KQ+bWm7DX h7qYvHK4Ut5GvY00xd0JuR7VuH7S4A6mPSHmPiozrRjONpAuoeg1XPri6EDSE8c/4wZF KEx9druBXapnKFpYoCee9KZW0BD8AaSrc+RaUhfJJF/m0GKpLq71y1AvwbDuWSoFzxx2 KevsmyLDxThAuSOmfM3EZpgq2/Prh0Smdm9To450exHMWTPdIvxDDNjvBnYefw72rhYh kfwIg76pDW/xSfSI8+8GvtHx2ZZy5gM2GjdkTxxZfFEEC8r73iF3/UkLx+Y8jv+A8nhv 1tQA== 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=13L4JD/Uv8WycZlOzMXhW4LHYhbZ0iC/4L8G7+8ZE3I=; b=HzdmdiHHbtYITNbWIYefEQMpsIQEzYd9NSKArW6x89V9F1G9e09QqwvyKmfngpUVGo 6XGi8NjX6s98XJ+a0ANgJIzvFJ1nmTlcmsiW5TXRiXiIjpH/vFYFrsHXRZMoF7h4mwd1 gV0L6T2Dz3psh9vSKUYCTiWI6Z3kMbQfNEtWZknSqBlsVcvqNclb20jWSH7Om5G5MMYj vldXnQiJQ/d0r+J6WpBa7eEhur+XBgmRThKIrYARswHy9A89EXhS5nz3d0+Pv7npn67E 8TcgO4LRPr8HaWzP+f6M7VcxG1EmwN2zSzjn5hfgVnW2+ZMmsoAcdL0S2OFmwathSodh gAfA== X-Gm-Message-State: AHQUAuZ8PdinNQe2EYVXa+7K2pnsaDlfzeaTdFe5RkhMUyyxxC/lbmhq Gpphqaux/j3FXDOnV6nO3W+DHw== X-Google-Smtp-Source: AHgI3IYuX5ETLVWnE99ymGgHUZVFj73c9J1s/5M3ZzH4zw966VwU/Hdh5IGYX/BQPPNDebdIXzUFMA== X-Received: by 2002:a63:be0a:: with SMTP id l10mr5221695pgf.292.1550003190265; Tue, 12 Feb 2019 12:26:30 -0800 (PST) Received: from localhost ([2620:15c:2c4:201:f5a:7eca:440a:3ead]) by smtp.gmail.com with ESMTPSA id n11sm1182834pff.32.2019.02.12.12.26.29 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 12 Feb 2019 12:26:29 -0800 (PST) From: Eric Dumazet To: "David S . Miller" Cc: netdev , Eric Dumazet , Eric Dumazet Subject: [PATCH net] net: fix possible overflow in __sk_mem_raise_allocated() Date: Tue, 12 Feb 2019 12:26:27 -0800 Message-Id: <20190212202627.184863-1-edumazet@google.com> X-Mailer: git-send-email 2.20.1.791.gb4d0f1c61a-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org With many active TCP sockets, fat TCP sockets could fool __sk_mem_raise_allocated() thanks to an overflow. They would increase their share of the memory, instead of decreasing it. Signed-off-by: Eric Dumazet --- include/net/sock.h | 2 +- net/core/sock.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/net/sock.h b/include/net/sock.h index 2b229f7be8ebbc160706012f7ed03db85c5689d0..f43f935cb113b73c6fc0df35b5f43103ba131ab2 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -1277,7 +1277,7 @@ static inline void sk_sockets_allocated_inc(struct sock *sk) percpu_counter_inc(sk->sk_prot->sockets_allocated); } -static inline int +static inline u64 sk_sockets_allocated_read_positive(struct sock *sk) { return percpu_counter_read_positive(sk->sk_prot->sockets_allocated); diff --git a/net/core/sock.c b/net/core/sock.c index 6aa2e7e0b4fbdbc29d43d6b61a53b8de2a7ba269..bc3512f230a304c97c519a82c69d1e86f115b651 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -2380,7 +2380,7 @@ int __sk_mem_raise_allocated(struct sock *sk, int size, int amt, int kind) } if (sk_has_memory_pressure(sk)) { - int alloc; + u64 alloc; if (!sk_under_memory_pressure(sk)) return 1; -- 2.20.1.791.gb4d0f1c61a-goog