All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] cleanup: Conditional locking support
@ 2023-11-02 10:44 Peter Zijlstra
  2023-11-02 10:44 ` [PATCH 1/2] cleanup: Add conditional guard support Peter Zijlstra
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Peter Zijlstra @ 2023-11-02 10:44 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: x86, linux-kernel, peterz, Jonathan Cameron, Greg Kroah-Hartman,
	Oleg Nesterov, Eric Biederman

Hi,

Two patches, the first extending the cleanup/guard stuff to better handle
conditional locks, mutex_trylock(), mutex_lock_interruptible() etc.. And the
second a small ptrace conversion that I've been using as a test-case.

The normal scoped_guard() is changed to simply skip the body when a conditional
lock fails to acquire. A new scoped_cond_guard() is added that takes an extra
statement argument to provide an explicit 'fail' action.

The ptrace patch has:

  scoped_cond_guard (mutex_intr, return -ERESTARTNOINTR,
		     &task->signal->cred_guard_mutex) {
    ...
  }
  ...
  return 0;

Where if the lock acquire fails, it does 'return -ERESTARTNOINTR'.

The crazy perf thing then becomes:

  scoped_cond_guard (rwsem_read_intr, goto no_lock,
                     task ? &task->signal->exec_update_lock : NULL) {
    if (0) {
no_lock:
      if (task)
        return -EINTR;
    }
    ... body with or without lock ...
  }


Specifically, that thing needs the lock when there is a task, but otherwise
needs to still do the body without the lock.

IIO also wanted something along these lines, although they have a custom
'trylock' thing.

Barring objections, I'm planning to merge this into tip/locking/cleanup which
I'll merge into tip/locking/core (and tip/perf/core when times comes).

My plan is to post the perf patches in 3 batches of roughly 10 patches each,
the simpler first and the more crazy ones (including the above) last.


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

end of thread, other threads:[~2023-11-03 18:53 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-02 10:44 [PATCH 0/2] cleanup: Conditional locking support Peter Zijlstra
2023-11-02 10:44 ` [PATCH 1/2] cleanup: Add conditional guard support Peter Zijlstra
2023-11-02 14:40   ` Oleg Nesterov
2023-11-02 15:55     ` Oleg Nesterov
2023-11-03  9:30     ` Peter Zijlstra
2023-11-03 18:17       ` Linus Torvalds
2023-11-03 18:51         ` Oleg Nesterov
2023-11-02 10:44 ` [PATCH 2/2] ptrace: Convert ptrace_attach() to use lock guards Peter Zijlstra
2023-11-02 15:17   ` Oleg Nesterov
2023-11-02 15:34 ` [PATCH 0/2] cleanup: Conditional locking support Peter Zijlstra

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.