From nobody Sun Jun 21 04:20:36 2026 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (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 6AECF2248B9 for ; Tue, 7 Apr 2026 14:36:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775572595; cv=none; b=S4SaROHy5/ecSIqi1T+RiNFo3FjmI1lMbaNBOnwOGsW7d94Ctu+p66XOsuel3yjbbrpTJg5Q7S8MI4qi+g7ygrGtX3Re9imKPT542ci7v5hd0P8ihEyIIjdB/i4vom+bBG/QHX59DZzq7nYC/oQQJ72LVmcX3RbK3OzXWUj/qwA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775572595; c=relaxed/simple; bh=dI1uKgiz1KAHIdw43Vv4nfZeT5gxg8GMGfD6QqSBFi8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=muLWR/a20ocFvnHDPPR1hTm0bXvPyK4nLDyx4PcXO90lTy7dDK/fCU/aUlTwfVgnbs1m1oeWurPxUXKU2ISwFBwt9M+BrWbBN49BghdjyL7yvhteltRpZ2qm42QZ8RC0yeiY3aGaJ6EBiteP5ljir4YULGOulUoqZh7ZAoTQiGo= 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=YiOvr+Zv; arc=none smtp.client-ip=209.85.210.172 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="YiOvr+Zv" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-82cd98be655so3465100b3a.0 for ; Tue, 07 Apr 2026 07:36:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775572594; x=1776177394; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=gnHfG3+M4dOmVO6ykmVfo0AQ6Cu4eX1PcyXSUohK0cQ=; b=YiOvr+Zvx1fHvoDaaNxO7o2T4RNd8xFv5O0y5mCYRHFrnI9PghjxixSCDbaHPyUM5N NDe0CDc+iNSNGXw1KAEzWAa8M0eJMO00UtyurGQC4anNlWCtP9qqWeQcPwYen7bN73fZ spCzIxs1D0aTDXyOOPWWBQIKb0EGERRKRT6gwlvULqZVsy8EYJNMsMpNNvM/WJAx2sU0 DvrKPVwNBP68QWn0DiII6T5W1LrzT5ejfnhuDdchcOBxf897hlUuX+Ce/EnmEyEto9nZ jsow2SlrfOHO3dYvkeC4S+Rvdqrx3axfRzz9tVTj9gshwdmKwisNmIR+muTQ2bCYX+Zy XcGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775572594; x=1776177394; h=content-transfer-encoding:mime-version: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=gnHfG3+M4dOmVO6ykmVfo0AQ6Cu4eX1PcyXSUohK0cQ=; b=g4lupdSoZ5kQ23vRBtYfwpGL5N5AUhlpxwEv/G80UBd/7PPXr9QhivCVo1jZtydRqT eTxOIUpBpUZGVol2ts/gCtlVnPa5x76W46mBOJvLfvVu1n/qiyXjeFlXEHW1ZOaRzud2 Sf7EktAV2ZIwpBVlEO+w42q0ji04G/E/cjqmcDyvbQy0oXInWQPBpRxx/RlDl58xFbgh L39U/4CX+jRNYOeQJW6O4kRxX9gHtekvuQwsmTYLah/QVO6SyL3DADT7lpnd6DLaGm2D SkvKQkfybxzdayMXinBv5dVuwUKf6VlSp67s8zBaLCrPQV1L3FY99eCrxAcYZ4NdXzWd bidg== X-Gm-Message-State: AOJu0YxUDh/ExpmmJnq4txGwN8k1P4Q7nY5AeYNTCvx7ykNq7E+Lt/5d pWonna2LjhANL0A9a7BHT+/a0r8Y5gMXLAUZYCVvvFK//8ekiWg8RUvmv+1Jww== X-Gm-Gg: AeBDiesRUjGMHp0cjZySgvgL+742mbf3XHhVzFINDjDrWeIIJZfc4dhV3A4n/4jr2oM OxJYearIPqo/ZgYzx5J1ayLzCkSC8wJfM1CQQVImyA13W27EjCC3gojfnvOWKdoAcaFHb1xeaNu lltjjd24g9njBXmIlzLjsqTl/ODvKi9EFFuBYRtk4fzud3iAztTEwTM/HpcA0eJniTMH4u84XNw jYQuY+j/XzXBF48dI7UN/9NvqGpIDv6Zm0BgiBWps2OML6gbm8/Byuc0xeq+/bvpuQaHiGXbFdr mi9abYwN2pBU6rTqI++QOcmri5TAxfsxETeUVzhg9OAYu2VKLAASKPznHPl5KqKsdfaYSSM4r7G 8mCCFANyPyviEL/o7zu8WVLCyVr/ViVW+stSzsuQ35OV2NbZONKa93gwSDB3uKSMdOKD/k2wl5y FvGf/+o9zAyWcDScgnW8tcyMbmh7pg82WRVMK02uuYxBa0b2k= X-Received: by 2002:a05:6a00:2d26:b0:82d:24f:2510 with SMTP id d2e1a72fcca58-82d0dbd310bmr17404596b3a.50.1775572593784; Tue, 07 Apr 2026 07:36:33 -0700 (PDT) Received: from DESKTOP-MOQC9AF.mioffice.cn ([43.224.245.179]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82cf9b261b6sm21551853b3a.3.2026.04.07.07.36.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 07:36:33 -0700 (PDT) From: Zhan Xusheng X-Google-Original-From: Zhan Xusheng To: Thomas Gleixner Cc: linux-kernel@vger.kernel.org, Zhan Xusheng Subject: [PATCH] alarmtimer: Access timerqueue node under lock in suspend Date: Tue, 7 Apr 2026 22:36:27 +0800 Message-ID: <20260407143627.19405-1-zhanxusheng@xiaomi.com> X-Mailer: git-send-email 2.43.0 Reply-To: <877bqi6ffm.ffs@tglx> 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" In alarmtimer_suspend(), timerqueue_getnext() is called under base->lock, but next->expires is read after the lock is released. This is safe because suspend freezes all relevant task contexts, but reading the node while holding the lock makes the code easier to reason about. Signed-off-by: Zhan Xusheng --- kernel/time/alarmtimer.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c index b64db405ba5c..6e173d70d825 100644 --- a/kernel/time/alarmtimer.c +++ b/kernel/time/alarmtimer.c @@ -234,19 +234,23 @@ static int alarmtimer_suspend(struct device *dev) if (!rtc) return 0; =20 - /* Find the soonest timer to expire*/ + /* Find the soonest timer to expire */ for (i =3D 0; i < ALARM_NUMTYPE; i++) { struct alarm_base *base =3D &alarm_bases[i]; struct timerqueue_node *next; + ktime_t next_expires; ktime_t delta; =20 - scoped_guard(spinlock_irqsave, &base->lock) + scoped_guard(spinlock_irqsave, &base->lock) { next =3D timerqueue_getnext(&base->timerqueue); + if (next) + next_expires =3D next->expires; + } if (!next) continue; - delta =3D ktime_sub(next->expires, base->get_ktime()); + delta =3D ktime_sub(next_expires, base->get_ktime()); if (!min || (delta < min)) { - expires =3D next->expires; + expires =3D next_expires; min =3D delta; type =3D i; } --=20 2.43.0