lkml.org 
[lkml]   [2012]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subject[RFC 0/6] uprobes: kill uprobes_srcu/uprobe_srcu_id
Hello.

Not for inclusion yet, only for the early review.

I didn't even try to test these changes, and I am not expert
in this area. And even _if_ this code is correct, I need to
re-split these changes anyway, update the changelogs, etc.

Questions:

- does it make sense?

- can it work or I missed something "in general" ?

Why:

- It would be nice to remove a member from task_struct.

- Afaics, the usage of uprobes_srcu does not look right,
at least in theory, see 6/6.

The comment above delete_uprobe() says:

The current unregistering thread waits till all
other threads have hit a breakpoint, to acquire
the uprobes_treelock before the uprobe is removed
from the rbtree.

but synchronize_srcu() can only help if a thread which
have hit the breakpoint has already called srcu_read_lock().
It can't synchronize with read_lock "in future", and there
is a small window.

We could probably add another synchronize_sched() before
synchronize_srcu(), but this doesn't look very nice and

- I am not sure yet, but perhaps with these changes we can
also kill mm->uprobes_state.count.

Any review is very much appreciated.

Oleg.

include/linux/sched.h | 1 -
kernel/events/uprobes.c | 117 ++++++++++++++++++++++++++++++-----------------
2 files changed, 75 insertions(+), 43 deletions(-)



\
 
 \ /
  Last update: 2012-04-06 00:25    [W:0.133 / U:3.460 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site