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 293DBD44148 for ; Tue, 19 Nov 2024 11:38:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B09746B0098; Tue, 19 Nov 2024 06:38:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AB9456B0099; Tue, 19 Nov 2024 06:38:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9814A6B009B; Tue, 19 Nov 2024 06:38:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 7A0B56B0098 for ; Tue, 19 Nov 2024 06:38:37 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 33AFD1403EC for ; Tue, 19 Nov 2024 11:38:37 +0000 (UTC) X-FDA: 82802646528.02.11A604D Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) by imf11.hostedemail.com (Postfix) with ESMTP id E059940006 for ; Tue, 19 Nov 2024 11:37:32 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=cLDYt1fn; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf11.hostedemail.com: domain of ptesarik@suse.com designates 209.85.128.51 as permitted sender) smtp.mailfrom=ptesarik@suse.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732016131; a=rsa-sha256; cv=none; b=q0RcF/xZFOC1cgRTAx6ASB5MNsM+oG8cpIqU+LakDMR73iPqGsg8gKzBdH6D56Pd2l7/IS nFoeIvjM/3Ov18oimw/rPyG7KXqrPSchdtAugBYRjsnckvVq1Gt9d3XzRk1toClIHh7Dr9 I9yZOUumaPk4rXcryLN+Id1FAVOoyRk= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=cLDYt1fn; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf11.hostedemail.com: domain of ptesarik@suse.com designates 209.85.128.51 as permitted sender) smtp.mailfrom=ptesarik@suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732016131; 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=/K++AUGfiOju5I7xoub4vBe8Bp33OIr9UnlWEqSXyzI=; b=NGpCPbxz+qWFKG+2SwkV+qGHbBGZWqKQ+BjQr88TitMivamWAAjl0eK/fubf2RWIlvZixt Y/K+38qVeEGzsZgRI5GonRpZfGupsyfhFAhqaaoDisx+srPiflcCNGITrlhVHFpMdWP1os dPwpIlaHTUq2knXS0IJBauicLD9kVOU= Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4315ce4d250so3574245e9.2 for ; Tue, 19 Nov 2024 03:38:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1732016314; x=1732621114; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=/K++AUGfiOju5I7xoub4vBe8Bp33OIr9UnlWEqSXyzI=; b=cLDYt1fnyJq/n57GJzf541nRg7H4C/dZo+MKyiObIOa6Bn+681CDaGYmkSLlfe2yYp ZRITQUpgkKlO5/GNS8JJp2MYcvsD5z0hBfTi5kbzugcUpoTxkrK4+g1mhRED4NwOfKkT 5k0PzYGRqCudRbZ7bIciVT2wJmWpMOsQb87b55EjvLEGWefEnzmj6eki+WOTmZKKey8P iWDAa1D8qj68iy2TD0Dg04pTuKTF2Xnm8fxk9vrPcGVW9rC8wURVCuqViH5cNUMnNaRz X5UA6ynAS5NSxF/u+Kizw9nvo+MTDV2qS07DurOWSXNiORzrczlZztttA8qbY6UlcCq+ B/DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732016314; x=1732621114; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/K++AUGfiOju5I7xoub4vBe8Bp33OIr9UnlWEqSXyzI=; b=YQvftlev1U59wui/0KXktSAVLkE+MCZApizy3o3RWOJmUmfuw973bK0rDCv0Ow3hZk MHQvB6eBJ+3s/VgqV6C+pCNrVJ2jv5OudtWqgtmvoXMQftz0B4/rdjMZ6ZYD5c1JXvS2 v+qSxD6UkA3i9dVAz0+kNWNSTgcCJWRYiymFI4UtKeKJ0qMTB5g/DmWB1SblvDydmpxP mvTl4x0WSID9IPoakzTFIN35QqZ2fSf2rnOw3SE7QJordWC4/pmt6wI2Q9V1k9EKmiuM VTs/6qvTIIZyE60T9Ot/bqeu7U+g+8UQOtWEkXEr8ZDbGK2wDoMwP0txJDPUj7KCsBhj ncsA== X-Gm-Message-State: AOJu0YxNRLVy4mFtPRkBFrVxPDr39I/RJ2V2ov1UJPfV46EQI8Vc33OU UXVzsBOzj+6M1ht2ydkuhClrmp+IMpJDxwX/i25kP9J+zOO1eNQGRtH8BDvNEA8= X-Google-Smtp-Source: AGHT+IFktYyZ/8h7IEekJtLbttjAswkGy9GG76oFQMw+rKvK9ZsE9aVx+p+KmTk5jCnq4hlA8IV7hw== X-Received: by 2002:a05:600c:19cb:b0:42c:aeee:e603 with SMTP id 5b1f17b1804b1-432df78fd8dmr58404075e9.7.1732016312314; Tue, 19 Nov 2024 03:38:32 -0800 (PST) Received: from mordecai.tesarici.cz ([193.86.92.181]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-432da2982fasm197399985e9.36.2024.11.19.03.38.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Nov 2024 03:38:32 -0800 (PST) Date: Tue, 19 Nov 2024 12:38:30 +0100 From: Petr Tesarik To: Andrew Morton , Kees Cook , Jinbum Park Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/1] mm/rodata_test: Use READ_ONCE() to read const variable Message-ID: <20241119123830.7573897a@mordecai.tesarici.cz> In-Reply-To: <20241119112009.1286675-1-ptesarik@suse.com> References: <20241119112009.1286675-1-ptesarik@suse.com> X-Mailer: Claws Mail 4.3.0 (GTK 3.24.43; x86_64-suse-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Stat-Signature: ptxcntrzt6h18miuyr6sjjz9qubsggxz X-Rspamd-Queue-Id: E059940006 X-Rspamd-Server: rspam08 X-Rspam-User: X-HE-Tag: 1732016252-678668 X-HE-Meta: U2FsdGVkX19K9Vkuo8IpoaaRCyYfmRsWMJYcd4wMCMSfrvinl4UGWwhB+7lIB2lSu6CBkI1hJURqocDgyir66/T681CiPWzetmGdr0bwNGG2YVyVuLWmAgeg62azYUW/zADuQJ2hDb7IR9rLGhEM95k52tjOt5u58U4j/hPMcwTVNG/27Ps+SP7taOYUgxmovylFtm+ObZ1rG7sXAXcRX67+T8mGRWNvCY1G9WH+vGO9dPifL0V3sBqXAKCnCntVW0FCwfMg2DApsNXDLHCN++XqSKHgIATww2pkGNe7SrZGgSu2BygyBhzeQbvvh4SII6Tpa5zC1Y4iAoLC0Za8+x/Lh7mcpuGhAlboXsW/dd3jHKL+l665mVZuT2gBFc8KQF16XsaskcpRTUpNLmlP7zMizTXEKFFk+hIAqsk7vkB5oYN/ADxPxKWF80jOaG3pp6CtBS5xsDdAnxIFuphqqo+uRDHO0dUIqX57zYRjItd+iNGVmsqf1pETzuwIvOiYlNPo1wdwAK2zJfG/vIyUO9yf7AuHLlWe4yvA0PipoqjM9XcOo3pI3uVtvMMtHB4Q0ljXi2bU9tT12z5Ce4uZX5pmtX7yMOY3GaBMe3HgDutQ1JunJ3Tl8NFcA5ynoUENvMQCGkI3WaCILjdMKR++oUO9bcIQsgeCUGUO3/W2SFyj5HkxARsGTIypKA17JO2OHPTN+jRSbCNIrZG0A/+UR43F3cm1daqcG7ISwp6ZR9Ptz+MKEEcAmBtXCPMO8vokAp5fvJdf2jM+mf5EoiYhWkSi+m7iQ/+HN2FpTHSU1bWByHYqhu7EOZUV/bguXm6uksTnPomSnhubfu/pCQBsBHtgVJqVN0Y5YbuA+22KbDH5ZoC2JyFnrjSZKfNVYl3C2JnPLTvAayucHbnNk+9R+L2bb9+/RAMyxTTY6h4+ec3tD3TxLh+P2KuiSSTz1eSvGRN0Qwi7muqEsiVMTHs vJHPxrii ys7N9LFGB9oijhkl9+MXUrrWxVwdkp/2EqV47JulxW65U7mA5G1PVxGheGQKFDkR6PaLwrAquTR1Xz8fGqfRxT9nAjvYfBaiIwZI1XbQJpqsHIxINhUMMUY9bZ2qtEhDqKox9a1e6sI9mkPV16zhxiOb58tsMbdujJM1aMqUwASbc2zQ1bewb2KPqniCunmvQ18dnlvhyrsc2V4nW0Cj5iijarfUhReLDpPftwwEQU0jW80Ad8/jFAfIBTJBwfiTUdVc+jFcsoCLAuNXoKhdJpiGwjqUnjL2fvqJtvH5vrw41Co7Mgl7vXS+H7Y7jEfa0rAGL2kru/t+5LD6pR9Sjhei+PNY97H8zYCJaNAtIklReRnVh4F0IrJRln1ZbooDW9MstTHFqtlaPIc5F74VSSm8VaqHwiiBYUzn1 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: Oops, this should have been a two-patch series. Will resend in a minute. Sorry. Petr T On Tue, 19 Nov 2024 12:20:09 +0100 Petr Tesarik wrote: > The C compiler may optimize away the memory read of a const variable if its > value is known at compile time. > > In particular, GCC14 with -O2 generates no code at all for test 1, and it > generates the following x86_64 instructions for test 3: > > cmpl $195, 4(%rsp) > je .L14 > > That is, it replaces the read of rodata_test_data with an immediate value > and compares it to the value of the local variable "zero". > > Use READ_ONCE() to undo any such compiler optimizations and enforce a > memory read. > > Fixes: 2959a5f726f6 ("mm: add arch-independent testcases for RODATA") > Signed-off-by: Petr Tesarik > --- > mm/rodata_test.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/mm/rodata_test.c b/mm/rodata_test.c > index 6d783436951f..3b60425d80fe 100644 > --- a/mm/rodata_test.c > +++ b/mm/rodata_test.c > @@ -20,7 +20,7 @@ void rodata_test(void) > > /* test 1: read the value */ > /* If this test fails, some previous testrun has clobbered the state */ > - if (!rodata_test_data) { > + if (!READ_ONCE(rodata_test_data)) { > pr_err("test 1 fails (start data)\n"); > return; > } > @@ -33,7 +33,7 @@ void rodata_test(void) > } > > /* test 3: check the value hasn't changed */ > - if (rodata_test_data == zero) { > + if (READ_ONCE(rodata_test_data) == zero) { > pr_err("test data was changed\n"); > return; > }