From nobody Sat Jul 25 23:05:54 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 5A9153A874F for ; Sun, 12 Jul 2026 12:14:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783858479; cv=none; b=NX0ajGl/QppEsqtvAfHmNW9KcWy/3B7OVtBxqXMllDAMo/9Ejh/Ue2lHPwbfOPLWMsDkbwYF+/ATeACD79h7Dflj1kjITKvwxJI9ArX/GM6At/Qw2aid/KFJ0x8QMiWKx0zLCFqozc3lQQLE3u+VLIgRtwjVR7MGZUh44KR7dmQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783858479; c=relaxed/simple; bh=uQc7o3B0d6JZctTo6WHJR1OhocjVNCHR6/DSXcehs9A=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=IyVyJXNxqWW0XFjn7U3wPvHLiQRO7cnV75f2ShTw94lzfg4xcn2UPNZ8+5DXxwF+cZ9funv417NCtqvG4uCMipskiqLJlWNv1kUs25ImyZcz35fN6FJAZXldDB5h9JsKuLI8buRiNY8/4A6UuLaS6zGJMsBNEWIKTZAOXP8Antc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=N/G6Jkk5; arc=none smtp.client-ip=209.85.221.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="N/G6Jkk5" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-47122683cf3so1206523f8f.0 for ; Sun, 12 Jul 2026 05:14:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783858474; x=1784463274; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=+sx4b9MUqxuiZRrlltzahxnxgeGhnIGeRIQ3PCtTNgg=; b=N/G6Jkk53omDBML/WIRBmGY2COdZis2yp3HyEMFVLM4QzS3dU5B39u7FvzwmSy1oeH ElQf1O4df1ars2ZF9oBfylb0fUhXOWswHYlbd26QNUfYSpYbclI2+Fg/aiPVvlErq0Kv x/oGcgnVzVDuB/XMZqYB5AJF7C+mGi6gqopSxNyTEdMOqu4TYuEZUEOLlTRHqAxDsaCq GjSATeuz/xPBsp0HFAEQJ80LKAjA2acekF1wCy1gaRvOi+KL5gde+z0degt7gHl/fSV2 tjYZMQnR+I20KZPZo0I68ZJzLfofX0Z6Le1ol5Ks5uo8r/ptPrVed0AUuFBAVlLMkHSh HkQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783858474; x=1784463274; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=+sx4b9MUqxuiZRrlltzahxnxgeGhnIGeRIQ3PCtTNgg=; b=QbGcxj/Y2dNeHYaOHb58OL9XAgXJOviy7o7+ZrOa6OmNxmuKG59FH3ikYjzw4rIYU/ e5ClfjpTqe6GFk1d89avU6VyQqqCtb01EulBPXXe6UMfTifMV6d24XxOyIDjy9qumxqe yQr9/BpXmMCUFThqS0qee5QABH4+LiUWUBg1M5nQOILbBm3vyWhwIvEzLKMKTjIwbYfl QHa/w1PMckom8wayIXl9rGZ7CDyuZAUlU3O3tqenxqMGBh2oQTmxXswvv5YAbDtiWSor 3ItNV3xBKRgBHfs63D9/uVUq+fJcCvZ1kiW4MFS2gyuTLiMvWh8Pl8FpMs9fLAYpl7DG x90Q== X-Forwarded-Encrypted: i=1; AHgh+Rp09BHHX2QR5wS6Mz7fEUwrbQuieYXSm1gQSJS+fdQ75z0dEgXZAvydRMVn9LMV4SvfF2RRyMqpSGvjHSg=@vger.kernel.org X-Gm-Message-State: AOJu0YxQ9tp/OKa8AOC0/tVHAzMHDqsSiGscPplOrtJvJXtdlEGji9XV K6tngJ3Ep96TXbsBSoCl7KhRdf6PNScriVbec8XWaVNJRvykKH8c6FWx X-Gm-Gg: AfdE7cmZ7mj9ToJoLGH1s1RimxsguFyghlfZ19yJewIDqpc4g43heVkDLSUCwOkbuil ivQNQsiFP0OuqOxtRuyO2yj9T6SaUezhyI/Y+h6auMBTVvi4Jlwg2zm79QWYd5to71cppVXf59I bqYi+RwaBpjKVjZz/kBY663lHC3ZY0mU1B5WqeH6moZZYRn2adno38D3pfzFgJg+Z3oc9j6WYyM f4+Tdy6+VfYqra5Cn2IgNLaTk/o3mHZ9yKOmITYlsi1fA8VC0RpW/8V2YGNOmLeK/LazHQ/lEGy eSCsuy4yMYx3wfobjVt6UAiioef/UoiAHZwGABv7q9WI4IF3uYQagHyWPnLcSXXaE3VSGRe/JO4 JO841lHN/WwmkWz7TWZLah1gsB9KbRp3YmrEoUP+p9EtXWWA3gmY1hhIRgZDlgUQNvMLEOGDp4q LljmnRgAh6cdjMc2ryuealb/2koLCTwp4Bln5wNirG X-Received: by 2002:a05:6000:250d:b0:476:82c:b869 with SMTP id ffacd0b85a97d-47f2dcf4962mr6201615f8f.35.1783858474209; Sun, 12 Jul 2026 05:14:34 -0700 (PDT) Received: from fedora-dell-ale.Home ([2a0e:424:a465:0:bdde:db24:d709:ef36]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-47aa0f214d2sm74515699f8f.33.2026.07.12.05.14.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Jul 2026 05:14:33 -0700 (PDT) From: Alessio Maroni To: brauner@kernel.org, viro@zeniv.linux.org.uk, ojeda@kernel.org Cc: rust-for-linux@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Alessio Maroni Subject: [PATCH] rust: fs, hrtimer: replace read_volatile workarounds with atomic_load Date: Sun, 12 Jul 2026 14:14:20 +0200 Message-ID: <20260712121420.25179-1-alessiomaroni0@gmail.com> X-Mailer: git-send-email 2.55.0 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" Remove the temporary FIXME(read_once) comments and replace the read_volatile implementations with the proper native atomic_load. The generic `atomic_load` with `Relaxed` ordering maps directly to the C side `READ_ONCE()` macro, providing the intended behavior and correct hardware memory guarantees without relying on pure volatile reads. Signed-off-by: Alessio Maroni --- rust/kernel/fs/file.rs | 12 +++++++----- rust/kernel/time/hrtimer.rs | 7 ++++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/rust/kernel/fs/file.rs b/rust/kernel/fs/file.rs index 23ee689bd..63f309f5c 100644 --- a/rust/kernel/fs/file.rs +++ b/rust/kernel/fs/file.rs @@ -335,12 +335,14 @@ pub fn cred(&self) -> &Credential { /// The flags are a combination of the constants in [`flags`]. #[inline] pub fn flags(&self) -> u32 { - // This `read_volatile` is intended to correspond to a READ_ONCE c= all. - // // SAFETY: The file is valid because the shared reference guarante= es a nonzero refcount. - // - // FIXME(read_once): Replace with `read_once` when available on th= e Rust side. - unsafe { core::ptr::addr_of!((*self.as_ptr()).f_flags).read_volati= le() } + // `atomic_load` safely performs an atomic read equivalent to `REA= D_ONCE()`. + unsafe { + crate::sync::atomic::atomic_load( + core::ptr::addr_of!((*self.as_ptr()).f_flags).cast_mut(), + crate::sync::atomic::ordering::Relaxed, + ) + } } } =20 diff --git a/rust/kernel/time/hrtimer.rs b/rust/kernel/time/hrtimer.rs index 2d7f1131a..cb1b5a2ae 100644 --- a/rust/kernel/time/hrtimer.rs +++ b/rust/kernel/time/hrtimer.rs @@ -576,9 +576,10 @@ pub fn expires(&self) -> HrTimerInstant // - There's no actual locking here, a racy read is fine and expec= ted unsafe { Instant::from_ktime( - // This `read_volatile` is intended to correspond to a REA= D_ONCE call. - // FIXME(read_once): Replace with `read_once` when availab= le on the Rust side. - core::ptr::read_volatile(&raw const ((*c_timer_ptr).node.e= xpires)), + crate::sync::atomic::atomic_load( + (&raw const ((*c_timer_ptr).node.expires)) as *mut i64, + crate::sync::atomic::ordering::Relaxed, + ) ) } } --=20 2.55.0