From nobody Tue Mar 3 05:24:04 2026 Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C92B383C89 for ; Mon, 2 Mar 2026 19:53:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772481204; cv=none; b=lK8qhNuADmunbGyrpTeeFQOJ5DhKxGaOurFpvBmkUW7H+axnnPWlxp+02U5ehT456o5f5fUtaChKtO6jQEPkpopum4UlulzbnLwArEba2brNeCbOrE8yyF+zFrMr4LAt6FnnzsH/2zavKU0tt++u7y8h1dTxC7rducqSJROm5O0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772481204; c=relaxed/simple; bh=WXSj+9QejVVwAbxgamPZUuinqhgHMtGM4UaQbMwBBKI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gJ8Gr+T+C3OcgHDY0WvrMSGCcsvs1MMz6L08eHDUhBSl9m7zRPYDvwK4M0ECQqHV2Msv0JAKePWF8Hf7qK30/OrgmHkAo+DaxIGiusgCpXvRZaVmbagZ9heOYqTorunUnRxDkiGhI0nlch/S5HYUKC9Ax2Nkks6j4oYeLJuONNo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=cmpxchg.org; spf=pass smtp.mailfrom=cmpxchg.org; dkim=pass (2048-bit key) header.d=cmpxchg.org header.i=@cmpxchg.org header.b=BLk9JKh6; arc=none smtp.client-ip=209.85.222.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=cmpxchg.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cmpxchg.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=cmpxchg.org header.i=@cmpxchg.org header.b="BLk9JKh6" Received: by mail-qk1-f179.google.com with SMTP id af79cd13be357-8cb20bcff5aso474883285a.3 for ; Mon, 02 Mar 2026 11:53:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg.org; s=google; t=1772481196; x=1773085996; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9SxQ/eLtCsKDNFbOz1QdWcfhbyrBVWfPJbSjku1OsMI=; b=BLk9JKh6cH5ymvXZgtiwZtIaJiyPJ+bv2tvqf1uDd9Rm6h0AOMzjjMfHctF8d0bMzE ce7x9aeo5ebc1n9Gty19rxSf9aTsyFwy+o9lYAuKvYKSZJxxEbKeJuC+p/9WkWReftMs 2QcaFDMsM7FXJHiv6htlICaP0p8WkokiG3/5fH+G3r+mWvdKCkcg/UKdfTB8MgJUNPYS S8kQ0S6lNAgBst9sm/yXQRF500httNBcBzfpCTxe5DpVBsUGbELw4gg9egdfS3t4f+Gd xB70DJ90JjqlDS3nHfFxBK8FRl2mJjUT01PAsemzPe8cochrU6/NZDm4T/6weZ08yTmN 8Z6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772481196; x=1773085996; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=9SxQ/eLtCsKDNFbOz1QdWcfhbyrBVWfPJbSjku1OsMI=; b=KUJRctZsQEIkh1cazIIZavWc4sfVxr6E5nNHkqig3sAVIu/fs/1nG/+SmDHg2+FDnz JP7BzgrTl0Wq6GjQJZZsQodF8pA8fPSXw1omeEAvs4z6wmlHoO+lBdSZ1aNWACMHfEjd T0iY7yvCgFLKEIqN+m3lqfbTmPFxk594MLhUrTd5p036D2pyUDeCTlwPMkTRaCLDbmEy ey06ViMk7aa0aU6JyBpT4PLuW7COmG/Gas3CxHhc6uJxMF7YeIvVf7iQapyH8U/JC8a1 k5LL+2sG8PR3CXq54Pp/COP3yJls1qTOeeJ/Oq03VI0fo1AjXWYOEHYs4RSdq/wi99bF khwQ== X-Forwarded-Encrypted: i=1; AJvYcCUjdoQggKxb5nkpg44M5eEFdFvNPINmk+Wtpj+oFdiyFGRun43YIOK4/yCMGEzccYtUrzRl0ZCJ3ToipDA=@vger.kernel.org X-Gm-Message-State: AOJu0Yyz5Mgdl12qX0xn+bE9x8ZF1c7REL8xaaKM+mqbmW1v8C4iCGnG 42/ufk9a54+Adu+QcEwvyLH48wnu1HlNLF8KlGr3PUYGntOIjJ5oXXRrsU1Sm/SLFaw= X-Gm-Gg: ATEYQzyt0UkbKg9qk07+9MicELmUP0+hAhlK8fpUsK7Yq8p9Cpnmyhw+GyWBF1qp5UN OjGj9kUO8AxWMpuexj3m8rpGkVrt9h+UT7+k/HSsLGugjncnYnSxuiE7ASGpVHlrS3RXUn1ufaf 1BVmUvmwUjiHxFqKN7MsoAJm1VQfv3mWoPx9lZauE3A2oiJpV/ZzStCdDmjAv9zw1VTzx0PbNII mXXvFUCjWXqI8SaqN/jfNwidRWgBXugYQYrueE5TyEXtMpGgE+PdsMB1g44kiCu3Npd+XGJzBij nApk1moa7dwFGIsYYsgYNUSgL2oD5u94RT7aZNZnhZJxLF5GGOkLNQRpyCUP0NnoLvpmM8mIGT6 M5fpd6LtlOQUIwSYcF+SCqzQRE0zbPeNyDZHZKtuvPF3uHnYiH3RcxL8GTI4r3M3gRQrlrz0sG/ R9gKzDYGgb/f/QaFBt+LLO1w== X-Received: by 2002:a05:620a:400f:b0:8c6:ff02:d825 with SMTP id af79cd13be357-8cbc8e03048mr1741310485a.48.1772481196370; Mon, 02 Mar 2026 11:53:16 -0800 (PST) Received: from localhost ([2603:7000:c00:3a00:365a:60ff:fe62:ff29]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8cbbf6535b4sm1217544685a.9.2026.03.02.11.53.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 11:53:15 -0800 (PST) From: Johannes Weiner To: Andrew Morton Cc: Hao Li , Michal Hocko , Roman Gushchin , Shakeel Butt , Vlastimil Babka , Harry Yoo , linux-mm@kvack.org, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/5] mm: memcontrol: split out __obj_cgroup_charge() Date: Mon, 2 Mar 2026 14:50:16 -0500 Message-ID: <20260302195305.620713-4-hannes@cmpxchg.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260302195305.620713-1-hannes@cmpxchg.org> References: <20260302195305.620713-1-hannes@cmpxchg.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move the page charge and remainder calculation into its own function. It will make the slab stat refactor easier to follow. Signed-off-by: Johannes Weiner Acked-by: Shakeel Butt --- mm/memcontrol.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 0d0a77fedb00..32c09b4d520f 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3414,10 +3414,24 @@ static void refill_obj_stock(struct obj_cgroup *obj= cg, unsigned int nr_bytes, obj_cgroup_uncharge_pages(objcg, nr_pages); } =20 +static int __obj_cgroup_charge(struct obj_cgroup *objcg, gfp_t gfp, + size_t size, size_t *remainder) +{ + size_t charge_size; + int ret; + + charge_size =3D PAGE_ALIGN(size); + ret =3D obj_cgroup_charge_pages(objcg, gfp, charge_size >> PAGE_SHIFT); + if (!ret) + *remainder =3D charge_size - size; + + return ret; +} + static int obj_cgroup_charge_account(struct obj_cgroup *objcg, gfp_t gfp, = size_t size, struct pglist_data *pgdat, enum node_stat_item idx) { - size_t charge_size, remainder; + size_t remainder; int ret; =20 if (likely(consume_obj_stock(objcg, size, pgdat, idx))) @@ -3446,10 +3460,7 @@ static int obj_cgroup_charge_account(struct obj_cgro= up *objcg, gfp_t gfp, size_t * bytes is (sizeof(object) + PAGE_SIZE - 2) if there is no data * race. */ - charge_size =3D PAGE_ALIGN(size); - remainder =3D charge_size - size; - - ret =3D obj_cgroup_charge_pages(objcg, gfp, charge_size >> PAGE_SHIFT); + ret =3D __obj_cgroup_charge(objcg, gfp, size, &remainder); if (!ret && (remainder || pgdat)) refill_obj_stock(objcg, remainder, false, size, pgdat, idx); =20 --=20 2.53.0