All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lance Yang <lance.yang@linux.dev>
To: akpm@linux-foundation.org
Cc: amaindex@outlook.com, anna.schumaker@oracle.com,
	boqun.feng@gmail.com, fthain@linux-m68k.org,
	geert@linux-m68k.org, ioworker0@gmail.com,
	joel.granados@kernel.org, jstultz@google.com,
	kent.overstreet@linux.dev, leonylgao@tencent.com,
	linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
	longman@redhat.com, mhiramat@kernel.org, mingo@redhat.com,
	mingzhe.yang@ly.com, oak@helsinkinet.fi, peterz@infradead.org,
	rostedt@goodmis.org, senozhatsky@chromium.org,
	tfiga@chromium.org, will@kernel.org, stable@vger.kernel.org,
	Lance Yang <lance.yang@linux.dev>
Subject: [PATCH v2 1/1] hung_task: fix warnings caused by unaligned lock pointers
Date: Tue,  9 Sep 2025 22:52:43 +0800	[thread overview]
Message-ID: <20250909145243.17119-1-lance.yang@linux.dev> (raw)

From: Lance Yang <lance.yang@linux.dev>

The blocker tracking mechanism assumes that lock pointers are at least
4-byte aligned to use their lower bits for type encoding.

However, as reported by Eero Tamminen, some architectures like m68k
only guarantee 2-byte alignment of 32-bit values. This breaks the
assumption and causes two related WARN_ON_ONCE checks to trigger.

To fix this, the runtime checks are adjusted to silently ignore any lock
that is not 4-byte aligned, effectively disabling the feature in such
cases and avoiding the related warnings.

Thanks to Geert Uytterhoeven for bisecting!

Reported-by: Eero Tamminen <oak@helsinkinet.fi>
Closes: https://lore.kernel.org/lkml/CAMuHMdW7Ab13DdGs2acMQcix5ObJK0O2dG_Fxzr8_g58Rc1_0g@mail.gmail.com
Fixes: e711faaafbe5 ("hung_task: replace blocker_mutex with encoded blocker")
Cc: <stable@vger.kernel.org>
Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Lance Yang <lance.yang@linux.dev>
---
v1 -> v2:
 - Pick RB from Masami - thanks!
 - Update the changelog and comments
 - https://lore.kernel.org/lkml/20250823050036.7748-1-lance.yang@linux.dev/

 include/linux/hung_task.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/include/linux/hung_task.h b/include/linux/hung_task.h
index 34e615c76ca5..c4403eeb7144 100644
--- a/include/linux/hung_task.h
+++ b/include/linux/hung_task.h
@@ -20,6 +20,10 @@
  * always zero. So we can use these bits to encode the specific blocking
  * type.
  *
+ * Note that on architectures where this is not guaranteed, or for any
+ * unaligned lock, this tracking mechanism is silently skipped for that
+ * lock.
+ *
  * Type encoding:
  * 00 - Blocked on mutex			(BLOCKER_TYPE_MUTEX)
  * 01 - Blocked on semaphore			(BLOCKER_TYPE_SEM)
@@ -45,7 +49,7 @@ static inline void hung_task_set_blocker(void *lock, unsigned long type)
 	 * If the lock pointer matches the BLOCKER_TYPE_MASK, return
 	 * without writing anything.
 	 */
-	if (WARN_ON_ONCE(lock_ptr & BLOCKER_TYPE_MASK))
+	if (lock_ptr & BLOCKER_TYPE_MASK)
 		return;
 
 	WRITE_ONCE(current->blocker, lock_ptr | type);
@@ -53,8 +57,6 @@ static inline void hung_task_set_blocker(void *lock, unsigned long type)
 
 static inline void hung_task_clear_blocker(void)
 {
-	WARN_ON_ONCE(!READ_ONCE(current->blocker));
-
 	WRITE_ONCE(current->blocker, 0UL);
 }
 
-- 
2.49.0


             reply	other threads:[~2025-09-09 14:55 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-09 14:52 Lance Yang [this message]
2025-09-09 16:46 ` [PATCH v2 1/1] hung_task: fix warnings caused by unaligned lock pointers Kent Overstreet
2025-09-09 16:55   ` John Paul Adrian Glaubitz
2025-09-09 19:02     ` Kent Overstreet
2025-09-10  0:45     ` Finn Thain
2025-09-10  7:34     ` Geert Uytterhoeven
2025-09-10  7:37       ` John Paul Adrian Glaubitz
2025-09-10  0:07   ` Finn Thain
2025-09-10  0:51     ` Kent Overstreet
2025-09-10  1:35       ` Finn Thain
2025-09-10  1:48         ` Kent Overstreet
2025-09-10  6:40           ` Finn Thain
2025-09-10  6:52     ` Andreas Schwab
2025-09-10  7:39       ` John Paul Adrian Glaubitz
2025-09-10  7:45         ` Geert Uytterhoeven
2025-09-10  8:02       ` Finn Thain
2025-09-10 11:26         ` Andreas Schwab
2025-09-10  7:36     ` Geert Uytterhoeven
2025-09-10 11:57       ` Kent Overstreet
2025-10-07 20:56         ` Andrew Morton
2025-10-08  0:40           ` Finn Thain
2025-10-08  3:03             ` Lance Yang
2025-10-08  6:14               ` Finn Thain
2025-10-08  7:09                 ` Lance Yang
2025-10-08  7:23                   ` Lance Yang
2025-10-08 10:12                     ` Finn Thain
2025-10-08 13:48                       ` Lance Yang
2025-10-08 21:55                         ` Finn Thain
2025-10-09  2:01                           ` Lance Yang
2025-10-09  4:04                             ` Andrew Morton
2025-10-09  7:11                               ` Geert Uytterhoeven
2025-10-14 10:11                                 ` David Laight
2025-10-08 12:56             ` Eero Tamminen

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=20250909145243.17119-1-lance.yang@linux.dev \
    --to=lance.yang@linux.dev \
    --cc=akpm@linux-foundation.org \
    --cc=amaindex@outlook.com \
    --cc=anna.schumaker@oracle.com \
    --cc=boqun.feng@gmail.com \
    --cc=fthain@linux-m68k.org \
    --cc=geert@linux-m68k.org \
    --cc=ioworker0@gmail.com \
    --cc=joel.granados@kernel.org \
    --cc=jstultz@google.com \
    --cc=kent.overstreet@linux.dev \
    --cc=leonylgao@tencent.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@lists.linux-m68k.org \
    --cc=longman@redhat.com \
    --cc=mhiramat@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mingzhe.yang@ly.com \
    --cc=oak@helsinkinet.fi \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    --cc=stable@vger.kernel.org \
    --cc=tfiga@chromium.org \
    --cc=will@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.