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 AC7B4C433FE for ; Mon, 3 Oct 2022 14:09:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1F73B6B0072; Mon, 3 Oct 2022 10:09:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1A5C16B0073; Mon, 3 Oct 2022 10:09:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 06F748E0001; Mon, 3 Oct 2022 10:09:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id EC6D96B0072 for ; Mon, 3 Oct 2022 10:09:19 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id B1D51C0AFE for ; Mon, 3 Oct 2022 14:09:19 +0000 (UTC) X-FDA: 79979820438.11.5CB572C Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by imf19.hostedemail.com (Postfix) with ESMTP id 3ABAA1A001A for ; Mon, 3 Oct 2022 14:09:18 +0000 (UTC) Received: by mail-lf1-f54.google.com with SMTP id z4so16776538lft.2 for ; Mon, 03 Oct 2022 07:09:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date; bh=OkDSfRBfMfa9dHxVwKJ+wwTsdFDoWYNDFZsgi6+fnhw=; b=b44I5aVKf2QZdbcjnF3DCef/sNHnxlRPl59CirotEqe+gPg6iAqRv7GYfqX3AJJDKo BnCleimNr9v+1c8ek++HQHptK3w/zGV7ieDXGnG3A0KoTB9p7eXNEMTYhLHrowURQe0X 4dT/FB2+Dwp4yt0qtzOl4dgxbVxj3EXU5eGnanDSiMJlbSKpKMvn5sizEmsE7kuINxGt E/9S4xInFOXsoGOxRZNPImSIY10RERzzV6o4tnvrydS6Bv0vsw5czS6JWonr8KuqnLHs j5rKKBotrsFBBp9GTdBJ3WPw2m+lAxC4hA6QwR1aWMTSku8eEf7CWhMhozUaGm71TXX8 zFaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date; bh=OkDSfRBfMfa9dHxVwKJ+wwTsdFDoWYNDFZsgi6+fnhw=; b=xuXnqCFtfeREEHY+42Okxel/6AdsPZxd3B9XjoKaZgM7Lss4rQJbqbxPVLZ9KCItZE 10XMt0CXVCzwDy2cR84vbFrTsZE+OaNjGMjPtYLBYR4/Z//vqsyoIAINru9ZH4/N7V3D XG4Cdj/BsPTmU/YDAuIACHeyk/k0hCooCtHvKkIwqRFAMiiFVukF+KaTFVbuuDLPd56W 2dznAsbI3r4fJgeUe3Sq0DdSY10c+cLgI5ok/S/7p3zcm4xvsC6RIQZtwaf9YOIh7Fkz c1yRA8yvIMtgvX/7otsAhLoKi8FNEXIm49WsrrK5XNfG5Kq5WbdF8Xzbb7t/SwDkLoPq tplQ== X-Gm-Message-State: ACrzQf2l9mfipPMMQraImKAwtMM4cNpcHCScGbdYisnYiYR6W1ZLQzYQ O3Vr0nbQKHl33/hxZVCtQOI= X-Google-Smtp-Source: AMsMyM7lOvJCHYhKtvEGDxnGf+CIiYDbElv58/e74PYavgMpy3ovgyDNOWnZYem+g5hgkh82QnCwXg== X-Received: by 2002:a05:6512:1056:b0:498:efaf:5bd1 with SMTP id c22-20020a056512105600b00498efaf5bd1mr6990091lfb.64.1664806157470; Mon, 03 Oct 2022 07:09:17 -0700 (PDT) Received: from ?IPV6:2a02:2168:a11:244b::1? ([2a02:2168:a11:244b::1]) by smtp.gmail.com with ESMTPSA id b1-20020ac247e1000000b00498f51af149sm1458750lfp.308.2022.10.03.07.09.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 03 Oct 2022 07:09:16 -0700 (PDT) Message-ID: <821923d8-17c3-f1c2-4d6a-5653c88db3e8@gmail.com> Date: Mon, 3 Oct 2022 17:09:15 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Subject: Re: Possible race in obj_stock_flush_required() vs drain_obj_stock() To: Michal Hocko Cc: Roman Gushchin , Johannes Weiner , Shakeel Butt , Vladimir Davydov , Muchun Song , Sebastian Andrzej Siewior , cgroups@vger.kernel.org, linux-mm@kvack.org References: <1664546131660.1777662787.1655319815@gmail.com> From: Alexander Fedorov In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1664806159; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=OkDSfRBfMfa9dHxVwKJ+wwTsdFDoWYNDFZsgi6+fnhw=; b=6/wl6N9O3vjCkOrzmhj2FAMz6f2wBbtyORlSkq2KJ8lLERTDr1ZjQwtnJIU5xxNA7QOtSf OC3f+7OYxZCTXKDDfY1hjOT1YfASEwFi7k7JtFoHOON6bTqgLFi0L4jgda93w7Svo5YAa7 fWrSUeUbLSYnyrsl4zJUOUiI4TiPSYw= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=b44I5aVK; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf19.hostedemail.com: domain of halcien@gmail.com designates 209.85.167.54 as permitted sender) smtp.mailfrom=halcien@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1664806159; a=rsa-sha256; cv=none; b=hbvjQocQuJAhYCnfHZzwz75jtvHjBY9KJ0R6AJ3G8RQiMS0NAQwOk4ljLTExnimhj5Ph44 ZFGO3xWAlz601LIUic+qYPF9SGAW1rmZzoSZ0w8RK5nYtb7h+iU1zZqetxjuvPyrLIqpWw 74cJlT1TTVclysY7xfuAMSz5iILxPOc= X-Rspam-User: X-Stat-Signature: oa6ebhqz14b6f4t8wdusm41e1cckw9mi X-Rspamd-Queue-Id: 3ABAA1A001A Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=b44I5aVK; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf19.hostedemail.com: domain of halcien@gmail.com designates 209.85.167.54 as permitted sender) smtp.mailfrom=halcien@gmail.com X-Rspamd-Server: rspam01 X-HE-Tag: 1664806158-164000 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: On 03.10.2022 16:32, Michal Hocko wrote: > On Mon 03-10-22 15:47:10, Alexander Fedorov wrote: >> @@ -3197,17 +3197,30 @@ static void drain_obj_stock(struct memcg_stock_pcp *stock) >> stock->nr_bytes = 0; >> } >> >> - obj_cgroup_put(old); >> + /* >> + * Clear pointer before freeing memory so that >> + * drain_all_stock() -> obj_stock_flush_required() >> + * does not see a freed pointer. >> + */ >> stock->cached_objcg = NULL; >> + obj_cgroup_put(old); > > Do we need barrier() or something else to ensure there is no reordering? > I am not reallyu sure what kind of barriers are implied by the pcp ref > counting. obj_cgroup_put() -> kfree_rcu() -> synchronize_rcu() should take care of this: 3670 * Furthermore, if CPU A invoked synchronize_rcu(), which returned 3671 * to its caller on CPU B, then both CPU A and CPU B are guaranteed 3672 * to have executed a full memory barrier during the execution of 3673 * synchronize_rcu() -- even if CPU A and CPU B are the same CPU (but 3674 * again only if the system has more than one CPU). 3675 */ 3676 void synchronize_rcu(void) If I'm reading this correctly: - on SMP A==B and there will be a full memory barrier; - on UP we instead rely on the guarantee that schedule() implies a full memory barrier (and if there is no schedule() then there is no race).