From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out-172.mta0.migadu.com (out-172.mta0.migadu.com [91.218.175.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 387AD3254A5 for ; Wed, 29 Apr 2026 02:48:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777430924; cv=none; b=frhVZ8nU/J+mo+aXahr3kROLZJ159y+dwmcl19YKVmaWt/HxYv+wTTYxgD3MbOg7sjLuDJVQ8/eYCqosjI8F4QZSh2CmVggD3aqs/WgFibKMLTGBji/nLbsb46fUQgNbmLczhKtwgYznHrD0/ismdXqV3ylKNTYqtbRx6SYJRFk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777430924; c=relaxed/simple; bh=FbA0m6+tniHcNnQeNB4xVc6aZ5BIEKYuLrm2k0G1SCk=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=lcGMBc0llEl4XaAdW5sUKeHp9edkNYnq5ocOHp0pRXXWm3cVeZYOSkD/xZtwwKWnpno3Uk+xu/FVU90qHTfoUjMZzItDCkh2wIvcC3NpRuGrVkuLH58jMTe7/vocTYsykMUl2xtENtuApVzyNmsbUQxEY9MpSxzcrxyLDbU1YBs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=aoBRpeHb; arc=none smtp.client-ip=91.218.175.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="aoBRpeHb" Message-ID: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1777430921; h=from:from: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; bh=uiMWZCTeAOPUrZJ5+1IQsZdUyxFEVinUAq4pUHwGoUs=; b=aoBRpeHboqK1C9r6RmublLyhyIrTONH3Jiry0/y/FTwvTxj5hf7xvfUTNAlqHqnsU2+cKh oEF5/o4rq6PRlBk42L0TBnNpeYXqcHBHAmYC/beOU1JzMYX297j77/H7GdIjSK07FuXu77 BU1LR6tTSDRk5Np61JNZ5LTYN77/Ryw= Date: Wed, 29 Apr 2026 10:48:34 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Subject: Re: [PATCH v2] mm: memcontrol: fix rcu unbalance in get_non_dying_memcg_end() To: Andrew Morton Cc: hannes@cmpxchg.org, mhocko@kernel.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, yosry@kernel.org, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Qi Zheng References: <20260428103108.45719-1-qi.zheng@linux.dev> <20260428151253.bdfb08401ebb74c438df0e52@linux-foundation.org> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Qi Zheng In-Reply-To: <20260428151253.bdfb08401ebb74c438df0e52@linux-foundation.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT On 4/29/26 6:12 AM, Andrew Morton wrote: > On Tue, 28 Apr 2026 18:31:08 +0800 Qi Zheng wrote: > >> Currently, get_non_dying_memcg_start() and get_non_dying_memcg_end() both >> evaluate cgroup_subsys_on_dfl(memory_cgrp_subsys) independently to >> determine whether to acquire or release the RCU read lock. > > Sashiko review > (https://sashiko.dev/#/patchset/20260428103108.45719-1-qi.zheng@linux.dev) > is correct. > > mm/memcontrol.c: In function 'mod_memcg_state': > mm/memcontrol.c:881:9: error: 'rcu_locked' is used uninitialized [-Werror=uninitialized] > 881 | get_non_dying_memcg_end(rcu_locked); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > mm/memcontrol.c:874:14: note: 'rcu_locked' was declared here > 874 | bool rcu_locked; > | ^~~~~~~~~~ > In function 'mod_memcg_lruvec_state', > inlined from 'mod_lruvec_state' at mm/memcontrol.c:973:3: > mm/memcontrol.c:952:9: error: 'rcu_locked' is used uninitialized [-Werror=uninitialized] > 952 | get_non_dying_memcg_end(rcu_locked); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > mm/memcontrol.c:944:14: note: 'rcu_locked' was declared here > 944 | bool rcu_locked; > | ^~~~~~~~~~ > In function 'mod_memcg_state', > inlined from 'mem_cgroup_sk_uncharge' at mm/memcontrol.c:5392:2: > mm/memcontrol.c:881:9: error: 'rcu_locked' is used uninitialized [-Werror=uninitialized] > 881 | get_non_dying_memcg_end(rcu_locked); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > mm/memcontrol.c:874:14: note: 'rcu_locked' was declared here > 874 | bool rcu_locked; > | ^~~~~~~~~~ In v1, I explicitly set rcu_locked in get_non_dying_memcg_start() to avoid the uninitialized warning. However, I noticed that even if I drop it, the warning doesn't actually trigger -- probably due to some GCC optimiztions. Anyway, let's explicitly initialize rcu_locked in both mod_memcg_state() and mod_memcg_lruvec_state(). Will do it in v3. Thanks!