From: Kaushlendra Kumar <kaushlendra.kumar@intel.com>
To: rafael@kernel.org, pavel@kernel.org, gregkh@linuxfoundation.org,
dakr@kernel.org
Cc: linux-pm@vger.kernel.org,
Kaushlendra Kumar <kaushlendra.kumar@intel.com>
Subject: [PATCH] PM: Delete timer before removing wakeup source from list
Date: Sun, 21 Sep 2025 09:55:37 +0530 [thread overview]
Message-ID: <20250921042537.3118333-1-kaushlendra.kumar@intel.com> (raw)
Move timer_delete_sync() before list_del_rcu() in wakeup_source_remove()
to ensure proper cleanup ordering. This prevents the timer callback from
executing after the wakeup source has been removed from the events list.
The previous order could allow the timer callback to access the wakeup
source entry after removal but before timer deletion, potentially causing
use-after-free issues or list corruption.
Deleting the timer first ensures that no callbacks can execute during
the wakeup source removal process, providing safer cleanup semantics.
Signed-off-by: Kaushlendra Kumar <kaushlendra.kumar@intel.com>
---
drivers/base/power/wakeup.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
index d1283ff1080b..ae6ec9f04b61 100644
--- a/drivers/base/power/wakeup.c
+++ b/drivers/base/power/wakeup.c
@@ -189,12 +189,11 @@ static void wakeup_source_remove(struct wakeup_source *ws)
if (WARN_ON(!ws))
return;
+ timer_delete_sync(&ws->timer);
raw_spin_lock_irqsave(&events_lock, flags);
list_del_rcu(&ws->entry);
raw_spin_unlock_irqrestore(&events_lock, flags);
synchronize_srcu(&wakeup_srcu);
-
- timer_delete_sync(&ws->timer);
/*
* Clear timer.function to make wakeup_source_not_registered() treat
* this wakeup source as not registered.
--
2.34.1
next reply other threads:[~2025-09-21 4:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-21 4:25 Kaushlendra Kumar [this message]
2025-09-22 17:46 ` [PATCH] PM: Delete timer before removing wakeup source from list Rafael J. Wysocki
2025-09-23 4:52 ` Kumar, Kaushlendra
2025-09-23 12:31 ` Rafael J. Wysocki
2025-09-24 4:15 ` Kumar, Kaushlendra
2025-09-24 10:40 ` Rafael J. Wysocki
2025-09-24 11:44 ` Kumar, Kaushlendra
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250921042537.3118333-1-kaushlendra.kumar@intel.com \
--to=kaushlendra.kumar@intel.com \
--cc=dakr@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-pm@vger.kernel.org \
--cc=pavel@kernel.org \
--cc=rafael@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox