From: Cyrill Gorcunov <gorcunov@openvz.org>
To: LKML <linux-kernel@vger.kernel.org>
Cc: Andrew Vagin <avagin@openvz.org>, Pedro Alves <palves@redhat.com>,
Oleg Nesterov <oleg@redhat.com>,
Pavel Emelyanov <xemul@parallels.com>, Tejun Heo <tj@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: [RFC] c/r: prctl: Add ability to get clear_tid_address
Date: Mon, 5 Mar 2012 12:11:44 +0400 [thread overview]
Message-ID: <20120305081144.GC7366@moon> (raw)
Hi guys,
there were a converation about ability to retrieve task::clear_tid_address
(https://lkml.org/lkml/2012/2/3/116) via ptrace call, which was found as being
a bit inappropriate. So we've switched to prctl interface instead. What do
you think? Did I miss something? Comments are welcome
Cyrill
---
Subject: [RFC] c/r: prctl: Add ability to get clear_tid_address
From: Andrew Vagin <avagin@openvz.org>
Zero is written at clear_tid_address, when
the process exits. This functionality is used
by pthread_join().
We already have sys_set_tid_address() to change this
address for current task but there is no way to obtain
it from a user space.
Without ability to find this address and dump it we can't
restore pthread'ed apps which do call pthread_join() once
they have been restored.
This patch introduces PR_GET_TID_ADDRESS prctl option
which allow current process to obtain own clear_tid_address.
This feature is available iif CONFIG_CHECKPOINT_RESTORE is set.
Signed-off-by: Andrew Vagin <avagin@openvz.org>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
CC: Pedro Alves <palves@redhat.com>
CC: Oleg Nesterov <oleg@redhat.com>
CC: Pavel Emelyanov <xemul@parallels.com>
CC: Tejun Heo <tj@kernel.org>
---
include/linux/prctl.h | 2 ++
kernel/sys.c | 13 +++++++++++++
2 files changed, 15 insertions(+)
Index: linux-2.6.git/include/linux/prctl.h
===================================================================
--- linux-2.6.git.orig/include/linux/prctl.h
+++ linux-2.6.git/include/linux/prctl.h
@@ -120,4 +120,6 @@
# define PR_SET_MM_AUXV 12
# define PR_SET_MM_EXE_FILE 13
+#define PR_GET_TID_ADDRESS 36
+
#endif /* _LINUX_PRCTL_H */
Index: linux-2.6.git/kernel/sys.c
===================================================================
--- linux-2.6.git.orig/kernel/sys.c
+++ linux-2.6.git/kernel/sys.c
@@ -1903,12 +1903,22 @@ out:
up_read(&mm->mmap_sem);
return error;
}
+
+static int prctl_get_tid_address(struct task_struct *me, int __user **tid_addr)
+{
+ return put_user(me->clear_child_tid, addr);
+}
+
#else /* CONFIG_CHECKPOINT_RESTORE */
static int prctl_set_mm(int opt, unsigned long addr,
unsigned long arg4, unsigned long arg5)
{
return -EINVAL;
}
+static int prctl_get_tid_address(struct task_struct *me, int __user **tid_addr)
+{
+ return -EINVAL;
+}
#endif
SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,
@@ -2063,6 +2073,9 @@ SYSCALL_DEFINE5(prctl, int, option, unsi
case PR_SET_MM:
error = prctl_set_mm(arg2, arg3, arg4, arg5);
break;
+ case PR_GET_TID_ADDRESS:
+ error = prctl_get_tid_address(me, (int __user **)arg2);
+ break;
default:
error = -EINVAL;
break;
next reply other threads:[~2012-03-05 8:11 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-05 8:11 Cyrill Gorcunov [this message]
2012-03-07 14:56 ` [RFC] c/r: prctl: Add ability to get clear_tid_address Cyrill Gorcunov
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=20120305081144.GC7366@moon \
--to=gorcunov@openvz.org \
--cc=akpm@linux-foundation.org \
--cc=avagin@openvz.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=palves@redhat.com \
--cc=tj@kernel.org \
--cc=xemul@parallels.com \
/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.