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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 218F8C369D9 for ; Wed, 30 Apr 2025 08:09:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 007A76B00A9; Wed, 30 Apr 2025 04:09:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EF66A6B00AB; Wed, 30 Apr 2025 04:09:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D999C6B00B1; Wed, 30 Apr 2025 04:09:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id B1CA26B00A9 for ; Wed, 30 Apr 2025 04:09:55 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 26808160ABF for ; Wed, 30 Apr 2025 08:09:57 +0000 (UTC) X-FDA: 83389986834.06.152BEE4 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) by imf16.hostedemail.com (Postfix) with ESMTP id 53DCB18000B for ; Wed, 30 Apr 2025 08:09:55 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=dcoXUkJv; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf16.hostedemail.com: domain of dan.carpenter@linaro.org designates 209.85.221.50 as permitted sender) smtp.mailfrom=dan.carpenter@linaro.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746000595; a=rsa-sha256; cv=none; b=MKsQSeJGiRYMDoe2aKaD9lbcugbtEiG7m8TQl7M+Srv4VOgMtjZ3q/AD7+g5Y8HUlO9VY/ gTT5BKNmL49Hh6jnvgYvWattQyqKHflBJwb8xqzVXS0WhJzAhXDWfK9IzJJWmhu7P7YH8/ Va6y08Y7uy8J4AD9zvKDa2dua9sxbuk= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=dcoXUkJv; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf16.hostedemail.com: domain of dan.carpenter@linaro.org designates 209.85.221.50 as permitted sender) smtp.mailfrom=dan.carpenter@linaro.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746000595; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=17bhJA8AZQ7Vt532tDF2LwCcxcU9MVtR3GoRV0UAhKY=; b=AE+leuJROgJF/PUpOpRuUWX5B4n7ND9U1N8RMu0RPZZklMDRx68AQMHydcEYZGnHxWmM8S gfNL4QUum+Z3X/lSqCGDwiYMSG1+NCqPbj1goeS+bAph/fJdHi8Aqm+Ry1PVS18TBhN3uX wHUgJFcxXktIfwqUGGCHKfNbtaNDCEM= Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-39c31e4c3e5so4433732f8f.0 for ; Wed, 30 Apr 2025 01:09:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746000594; x=1746605394; darn=kvack.org; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=17bhJA8AZQ7Vt532tDF2LwCcxcU9MVtR3GoRV0UAhKY=; b=dcoXUkJv/NKQQ6lu6S+9ay4E+MVQEOgEuNIh5aHMwiCdhOQ5FnzTylkUkBpzM0gtWy mMjuyMgHVKh9qUO2+qWiEjVvbgwCEH6f7rCRBwKKspZ7S+CfzRfywBXlBcCu1UbTtTDQ KBloeZn3nxYhis32tx6WHnzI3URna1JTwhP3ttMfv4iuuyIawvYQtSr7jxObnU5b8w5+ LMtz3nO1gIbj9t4VKEKAJdSfwWTNVQFvT6xvqZlLI+H0nJaDdxR6Nc9NGb5NlwdmpgGq joSzsx3S+ViGpJc3PwY9DJ1IeE7eVdD9P3ArmMSLAmkE7SZnMEbxAWvlN+3lNj7XAyLa FceA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746000594; x=1746605394; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=17bhJA8AZQ7Vt532tDF2LwCcxcU9MVtR3GoRV0UAhKY=; b=e2aVZ7l5kaafpkYf/51fmC7Wc/6xywr9sHPgqlPeU8rH+wcxXMhV97QU4uaTCoaTig NVD9sZpyg5yWj3GOWL5lMOUUegw41NJ515QPBhyCjS07lHEE8ZuabrjRtR3GUDvhILsD EOF0Khfq6PW5SVgPaijTTB+rPju0KtXGwMXA86wIWGBS1bzFfZ5TtecAQL3O+eloLeU5 F69ILv/iv3SqRS3yW3jyJ6Ud5pdsRlGyPxHZqFh3VNLzEnxDlvuiDLxQgMxnCbxDWs3l 9S96qw3bp0wGhiBYsOmVm+3FCV8FVVMssq1tZuSbReKebkdxXmtSeYwf5kzRkd1ozOzP pyAw== X-Forwarded-Encrypted: i=1; AJvYcCXrF4SCY4lvsCmi6p35RHD9HYUDsDxe0aidnV79oNbshEUflbkNB6RVcyNyKrEw3EgyDgZ0ZDX69w==@kvack.org X-Gm-Message-State: AOJu0Yy7l5t/5tFoUBYwXd0YLy+H8XO9LmOK1/KzHAhzcHVfGoPogPyF zUozR3opwBmh53JksR1a/4PD23mKKIhVGnWPp1fn1PmHgf36x5ceWE3l8qUzphs= X-Gm-Gg: ASbGnctaw+nqsYfFuAhQBSNlYdiMqiipiyydV3FLLeP9tjlwsj3yAh6B+xnBKxitgQ/ nCx2icuH7qG4hm8ku83K9x4TcesH8rKPHvPBdA6GVw34gBIPwdAXfmDFWGDVkiqPlio6zqpcvoa KmUiYND3YWKE6z9Bto9H/wg2a7z5VprghU+kT1vtfogqpKqLgV1CGkRkoAM65s0+fP4RjDSm7yg OOyWlKmfMgitHuVSFDuidh12h2/A/1l0d4bvwtXJFVLsts1OYBMYwu1cYV8/RdKjP0Xl54gZ7az 9+d+pd1zLHIkbKRZ35M75EJRPmg9ryG8Ns70gsf0/yZwlg== X-Google-Smtp-Source: AGHT+IEwMjB/zU0Nrl29aazIXZVdeChuhWRO2pXfV9OFMwJ44f5w1RUnGtR1GuBexWs2MQgVEn40jQ== X-Received: by 2002:a5d:64c6:0:b0:390:e5c6:920 with SMTP id ffacd0b85a97d-3a08ff32fe8mr1273060f8f.3.1746000593758; Wed, 30 Apr 2025 01:09:53 -0700 (PDT) Received: from localhost ([196.207.164.177]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-3a073c8d495sm15920037f8f.2.2025.04.30.01.09.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Apr 2025 01:09:53 -0700 (PDT) Date: Wed, 30 Apr 2025 11:09:50 +0300 From: Dan Carpenter To: Shakeel Butt Cc: cgroups@vger.kernel.org, linux-mm@kvack.org Subject: [bug report] memcg: multi-memcg percpu charge cache - fix 2 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 53DCB18000B X-Stat-Signature: ccf4nuhfx8ubc48zasfq9khj5tzpnshs X-Rspam-User: X-HE-Tag: 1746000595-814070 X-HE-Meta: U2FsdGVkX1/Am6Y4br3tTcUj2mJ/l/yp/naQHk4sX41JV4bA2cgqIpBren58Y/MwVh/DBlXfyakrkTe5fo5dYO5w+q3h4wFwspSPHQqbhpZK8FEm6GLxUSk+qxoZOJGTBpN7sKe/yUQjSDztgcPQukaW54jTYf8iNiMft2oJ7ojv58HsSFcbzn7R1c4Qzi0N8Ue5ODZcsob1w+TaJ+HxJDhFNWpMY+XY7J8xR8wgvCxeNgWggn0PJHwetTlus2c+7ZYcFekRLOaon+r4wMqxdbXbtMna1QHv4VDjPfH57cFKscbXJoriJSmdFA9rkRQqHrUgcuPapTjsDQ7D3iCqjxBMs7e3fK0U48KvSAaOnOWU+nwSb3vq2GYCpTgDfvmIwNpuru431dpqo7hdpL5GY/VyoBP7w9qJOlkS4kRq6PIGqGHZkiHAGBGi4d1O6drq1PteD1lYo0UqwUpCRtCgVwU4gJKTnTcpTw11ufqVWP0MV1cr0b7iA8gCz6jWyB8UBjMqPWpMGd7nmjQBuw4nE9yeKv34WFk/fcoeClYX4htK6GkiJXDFmVhp0nTeSYQXfDC3ZF091JsJbZ6ZmWhKPNEP1W0DTWVWz0MP6VmKfHVU3qQFXSSCp8SGZD6q+97sDgDvGIGirvf0493hN/wniUW2w5KS2ENhxl6Q+A/tZHGinlexlpNmStDE8iOF6EDsyl9J3GJu0i56Ay1WmTlgTx1iR6XoiYMBvH2D3XMXuilszVdOhi7PJ5NMOGBxS4EudNzobrofNAVNFegv2QHxw2u4EYRB0txq16jDy1+13kX8/wczDeIiW2vMEb6k58aH75gqvDiINpVAVKIVWnnMyYvoBXKxqrv+8L0FcJVwo01051jaK+zybrD7pGfgYDRzvEdL8OYkwkGeg7zubfWEp/Dj/D6Pe220EgOAfxvYxss4xRb06EQxV4O0tYXq/11SYZ1Od9T1c4ym8xEnn1C z34OPMf3 5KDA4IGACcDoU+s9lG+qTZMxUHzXyNDkWlv0UaIpRn7mjEDMCVu7F2wjilamzwWL9t7QytsMLMOL3GHGQTJitSU0tU5rk4scr0+MxBksBqkrKPkOHA/fzfjc1h47ERfRTu0kaHbCBB2UJ0rTtw9V9LeLBsoafy5AHMT47wF8zrvCinB+TwIzjJq2+xCshvGYPmi2cXzjopOQh0BZCP2phialPVcgpDstL62wVV2lV969hEXMYRkmuRfrk1p0gr3xSSNZEB0yef+6mDCINY1DQIe3g5w== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Hello Shakeel Butt, Commit 1db4ee9862f9 ("memcg: multi-memcg percpu charge cache - fix 2") from Apr 25, 2025 (linux-next), leads to the following Smatch static checker warning: mm/memcontrol.c:1959 refill_stock() error: uninitialized symbol 'stock_pages'. mm/memcontrol.c 1907 static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages) 1908 { 1909 struct memcg_stock_pcp *stock; 1910 struct mem_cgroup *cached; 1911 uint8_t stock_pages; ^^^^^^^^^^^ 1912 unsigned long flags; 1913 bool success = false; 1914 int empty_slot = -1; 1915 int i; 1916 1917 /* 1918 * For now limit MEMCG_CHARGE_BATCH to 127 and less. In future if we 1919 * decide to increase it more than 127 then we will need more careful 1920 * handling of nr_pages[] in struct memcg_stock_pcp. 1921 */ 1922 BUILD_BUG_ON(MEMCG_CHARGE_BATCH > S8_MAX); 1923 1924 VM_WARN_ON_ONCE(mem_cgroup_is_root(memcg)); 1925 1926 if (nr_pages > MEMCG_CHARGE_BATCH || 1927 !local_trylock_irqsave(&memcg_stock.stock_lock, flags)) { 1928 /* 1929 * In case of larger than batch refill or unlikely failure to 1930 * lock the percpu stock_lock, uncharge memcg directly. 1931 */ 1932 memcg_uncharge(memcg, nr_pages); 1933 return; 1934 } 1935 1936 stock = this_cpu_ptr(&memcg_stock); 1937 for (i = 0; i < NR_MEMCG_STOCK; ++i) { 1938 cached = READ_ONCE(stock->cached[i]); 1939 if (!cached && empty_slot == -1) 1940 empty_slot = i; 1941 if (memcg == READ_ONCE(stock->cached[i])) { 1942 stock_pages = READ_ONCE(stock->nr_pages[i]) + nr_pages; 1943 WRITE_ONCE(stock->nr_pages[i], stock_pages); 1944 if (stock_pages > MEMCG_CHARGE_BATCH) 1945 drain_stock(stock, i); 1946 success = true; ^^^^^^^^^^^^^^ When stock_pages is initialized then success is true. 1947 break; 1948 } 1949 } 1950 1951 if (!success) { ^^^^^^^^ success is false. 1952 i = empty_slot; 1953 if (i == -1) { 1954 i = get_random_u32_below(NR_MEMCG_STOCK); 1955 drain_stock(stock, i); 1956 } 1957 css_get(&memcg->css); 1958 WRITE_ONCE(stock->cached[i], memcg); --> 1959 WRITE_ONCE(stock->nr_pages[i], stock_pages); ^^^^^^^^^^^ This is always uninitialized at this point. Probably on your test system you are automatically initializing stack variables to zero. 1960 } 1961 1962 local_unlock_irqrestore(&memcg_stock.stock_lock, flags); 1963 } regards, dan carpenter