mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [GIT PULL] LOCKDEP and Rust locking changes for v6.15
@ 2025-02-26  4:12 Boqun Feng
  2025-02-28 18:57 ` Boqun Feng
                   ` (2 more replies)
  0 siblings, 3 replies; 32+ messages in thread
From: Boqun Feng @ 2025-02-26  4:12 UTC (permalink / raw)
  To: Peter Zijlstra, mingo
  Cc: Will Deacon, Waiman Long, linux-kernel, Miguel Ojeda,
	Alex Gaynor, Boqun Feng, Gary Guo, Björn Roy Baron,
	Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross,
	Danilo Krummrich, rust-for-linux

Hi Peter & Ingo,

Please pull the changes of lockdep and Rust locking for v6.15 into tip.

The following changes since commit 337369f8ce9e20226402cf139c4f0d3ada7d1705:

  locking/mutex: Add MUTEX_WARN_ON() into fast path (2025-02-21 20:19:12 +0100)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/boqun/linux.git tags/lockdep-for-tip.2025.02.25

for you to fetch changes up to 3b5b307cf84ca3a73abe797df31e0efe897411a9:

  rust: lockdep: Use Pin for all LockClassKey usages (2025-02-25 08:53:08 -0800)


Regards,
Boqun

----------------------------------------------------------------
Lockdep changes for v6.15:

- Fix kernel-doc for rtmutex.
- Fix lock wait context check on softirq for PREEMPT_RT.
- Disable KASAN for lockdep to improve debug kernel performance.

Miscellaneous locking changes for v6.15:

- Use wake_q for semaphore to avoid wake-up in lock critical sections.

Rust locking changes for v6.15:

- Fix the soundness issue around dynamically allocated lock class keys.
- Add CondVar::wait_interruptible_freezable() to allow freezable waits.
- Add Guard::lock_ref() to access the lock reference behind a lock
  guard.

----------------------------------------------------------------
Alice Ryhl (2):
      rust: sync: Add accessor for the lock behind a given guard
      rust: sync: condvar: Add wait_interruptible_freezable()

Boqun Feng (1):
      rust: sync: lock: Add an example for Guard::lock_ref()

Mitchell Levy (2):
      rust: lockdep: Remove support for dynamically allocated LockClassKeys
      rust: lockdep: Use Pin for all LockClassKey usages

Randy Dunlap (1):
      locking/rtmutex: Use struct keyword in kernel-doc comment

Ryo Takakura (1):
      lockdep: Fix wait context check on softirq for PREEMPT_RT

Waiman Long (5):
      locking/semaphore: Use wake_q to wake up processes outside lock critical section
      locking/lock_events: Add locking events for rtmutex slow paths
      locking/lock_events: Add locking events for lockdep
      locking/lockdep: Disable KASAN instrumentation of lockdep.c
      locking/lockdep: Add kasan_check_byte() check in lock_acquire()

 include/linux/bottom_half.h       |  8 +++++
 kernel/locking/Makefile           |  3 +-
 kernel/locking/lock_events_list.h | 28 +++++++++++++++++
 kernel/locking/lockdep.c          | 17 ++++++++++-
 kernel/locking/rtmutex.c          | 29 ++++++++++++++----
 kernel/locking/rtmutex_common.h   |  4 +--
 kernel/locking/semaphore.c        | 13 +++++---
 kernel/softirq.c                  | 12 ++++++++
 rust/helpers/helpers.c            |  1 +
 rust/helpers/sync.c               | 13 ++++++++
 rust/kernel/sync.rs               | 63 ++++++++++++++++++++++++++++++++-------
 rust/kernel/sync/condvar.rs       | 28 ++++++++++++++---
 rust/kernel/sync/lock.rs          | 35 ++++++++++++++++++++--
 rust/kernel/sync/lock/global.rs   |  5 ++--
 rust/kernel/sync/poll.rs          |  2 +-
 rust/kernel/task.rs               |  2 ++
 rust/kernel/workqueue.rs          |  2 +-
 17 files changed, 231 insertions(+), 34 deletions(-)
 create mode 100644 rust/helpers/sync.c

^ permalink raw reply	[flat|nested] 32+ messages in thread
* [PATCH v4.1 4/4] locking/lockdep: Add kasan_check_byte() check in lock_acquire()
@ 2025-02-14 19:52 Waiman Long
  2025-03-03 18:51 ` [tip: locking/core] " tip-bot2 for Waiman Long
  0 siblings, 1 reply; 32+ messages in thread
From: Waiman Long @ 2025-02-14 19:52 UTC (permalink / raw)
  To: Peter Zijlstra, Ingo Molnar, Will Deacon, Boqun Feng,
	Andrey Ryabinin, Alexander Potapenko, Andrey Konovalov,
	Dmitry Vyukov, Vincenzo Frascino, Marco Elver
  Cc: linux-kernel, kasan-dev, Waiman Long

KASAN instrumentation of lockdep has been disabled as we don't need
KASAN to check the validity of lockdep internal data structures and
incur unnecessary performance overhead. However, the lockdep_map pointer
passed in externally may not be valid (e.g. use-after-free) and we run
the risk of using garbage data resulting in false lockdep reports.

Add kasan_check_byte() call in lock_acquire() for non kernel core data
object to catch invalid lockdep_map and print out a KASAN report before
any lockdep splat, if any.

Suggested-by: Marco Elver <elver@google.com>
Signed-off-by: Waiman Long <longman@redhat.com>
---
 kernel/locking/lockdep.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index 8436f017c74d..b15757e63626 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -57,6 +57,7 @@
 #include <linux/lockdep.h>
 #include <linux/context_tracking.h>
 #include <linux/console.h>
+#include <linux/kasan.h>
 
 #include <asm/sections.h>
 
@@ -5830,6 +5831,14 @@ void lock_acquire(struct lockdep_map *lock, unsigned int subclass,
 	if (!debug_locks)
 		return;
 
+	/*
+	 * As KASAN instrumentation is disabled and lock_acquire() is usually
+	 * the first lockdep call when a task tries to acquire a lock, add
+	 * kasan_check_byte() here to check for use-after-free and other
+	 * memory errors.
+	 */
+	kasan_check_byte(lock);
+
 	if (unlikely(!lockdep_enabled())) {
 		/* XXX allow trylock from NMI ?!? */
 		if (lockdep_nmi() && !trylock) {
-- 
2.48.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2025-03-08  0:12 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-26  4:12 [GIT PULL] LOCKDEP and Rust locking changes for v6.15 Boqun Feng
2025-02-28 18:57 ` Boqun Feng
2025-03-03 16:52   ` Waiman Long
2025-03-03 18:42 ` Peter Zijlstra
2025-03-07 23:26 ` [PATCH locking 00/11] " Boqun Feng
2025-03-07 23:26   ` [PATCH locking 01/11] locking/rtmutex: Use struct keyword in kernel-doc comment Boqun Feng
2025-03-08  0:08     ` [tip: locking/core] locking/rtmutex: Use the 'struct' " tip-bot2 for Randy Dunlap
2025-03-07 23:26   ` [PATCH locking 02/11] locking/semaphore: Use wake_q to wake up processes outside lock critical section Boqun Feng
2025-03-08  0:08     ` [tip: locking/core] " tip-bot2 for Waiman Long
2025-03-07 23:26   ` [PATCH locking 03/11] locking/lock_events: Add locking events for rtmutex slow paths Boqun Feng
2025-03-08  0:08     ` [tip: locking/core] " tip-bot2 for Waiman Long
2025-03-07 23:26   ` [PATCH locking 04/11] locking/lock_events: Add locking events for lockdep Boqun Feng
2025-03-08  0:08     ` [tip: locking/core] " tip-bot2 for Waiman Long
2025-03-07 23:26   ` [PATCH locking 05/11] locking/lockdep: Disable KASAN instrumentation of lockdep.c Boqun Feng
2025-03-08  0:08     ` [tip: locking/core] " tip-bot2 for Waiman Long
2025-03-07 23:26   ` [PATCH locking 06/11] locking/lockdep: Add kasan_check_byte() check in lock_acquire() Boqun Feng
2025-03-08  0:08     ` [tip: locking/core] " tip-bot2 for Waiman Long
2025-03-07 23:26   ` [PATCH locking 07/11] rust: sync: Add accessor for the lock behind a given guard Boqun Feng
2025-03-08  0:08     ` [tip: locking/core] " tip-bot2 for Alice Ryhl
2025-03-07 23:26   ` [PATCH locking 08/11] rust: sync: lock: Add an example for Guard::lock_ref() Boqun Feng
2025-03-08  0:08     ` [tip: locking/core] rust: sync: lock: Add an example for Guard:: Lock_ref() tip-bot2 for Boqun Feng
2025-03-07 23:26   ` [PATCH locking 09/11] rust: sync: condvar: Add wait_interruptible_freezable() Boqun Feng
2025-03-08  0:08     ` [tip: locking/core] " tip-bot2 for Alice Ryhl
2025-03-07 23:27   ` [PATCH locking 10/11] rust: lockdep: Remove support for dynamically allocated LockClassKeys Boqun Feng
2025-03-08  0:08     ` [tip: locking/core] " tip-bot2 for Mitchell Levy
2025-03-07 23:27   ` [PATCH locking 11/11] rust: lockdep: Use Pin for all LockClassKey usages Boqun Feng
2025-03-08  0:08     ` [tip: locking/core] " tip-bot2 for Mitchell Levy
2025-03-08  0:01   ` [PATCH locking 00/11] LOCKDEP and Rust locking changes for v6.15 Ingo Molnar
2025-03-08  0:04     ` Boqun Feng
2025-03-08  0:11       ` Ingo Molnar
2025-03-08  0:11         ` Boqun Feng
  -- strict thread matches above, loose matches on Subject: below --
2025-02-14 19:52 [PATCH v4.1 4/4] locking/lockdep: Add kasan_check_byte() check in lock_acquire() Waiman Long
2025-03-03 18:51 ` [tip: locking/core] " tip-bot2 for Waiman Long

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®