rpms/kernel/devel kernel.spec, 1.965, 1.966 linux-2.6-utrace.patch, 1.97, 1.98 linux-2.6-x86-tracehook.patch, 1.8, 1.9
Roland McGrath
roland at fedoraproject.org
Mon Sep 22 20:11:25 UTC 2008
- Previous message (by thread): rpms/selinux-policy/devel policy-20080710.patch, 1.42, 1.43 selinux-policy.spec, 1.709, 1.710
- Next message (by thread): rpms/kphotoalbum/EL-5 kphotoalbum-3.0.2-dt.patch, NONE, 1.1 kphotoalbum-3.1.1-gcc43.patch, NONE, 1.1 .cvsignore, 1.3, 1.4 kphotoalbum.spec, 1.7, 1.8 sources, 1.2, 1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: roland
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv3918
Modified Files:
kernel.spec linux-2.6-utrace.patch
linux-2.6-x86-tracehook.patch
Log Message:
utrace update
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.965
retrieving revision 1.966
diff -u -r1.965 -r1.966
--- kernel.spec 22 Sep 2008 19:43:49 -0000 1.965
+++ kernel.spec 22 Sep 2008 20:10:55 -0000 1.966
@@ -1760,6 +1760,9 @@
%kernel_variant_files -k vmlinux %{with_kdump} kdump
%changelog
+* Mon Sep 22 2008 Roland McGrath <roland at redhat.com>
+- utrace update
+
* Mon Sep 22 2008 Dave Jones <davej at redhat.com>
- Readd CONFIG_IWLCORE that disappeared for no apparent reason.
linux-2.6-utrace.patch:
Index: linux-2.6-utrace.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-utrace.patch,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -r1.97 -r1.98
--- linux-2.6-utrace.patch 7 Sep 2008 18:01:05 -0000 1.97
+++ linux-2.6-utrace.patch 22 Sep 2008 20:10:55 -0000 1.98
@@ -1,17 +1,16 @@
Documentation/DocBook/Makefile | 2 +-
Documentation/DocBook/utrace.tmpl | 566 +++++++++
fs/proc/array.c | 3 +
- include/asm-generic/syscall.h | 2 +-
include/linux/ptrace.h | 21 +
include/linux/sched.h | 6 +
- include/linux/tracehook.h | 67 +-
+ include/linux/tracehook.h | 65 +-
include/linux/utrace.h | 706 +++++++++++
init/Kconfig | 26 +
kernel/Makefile | 1 +
kernel/ptrace.c | 605 +++++++++-
kernel/signal.c | 14 +-
- kernel/utrace.c | 2516 +++++++++++++++++++++++++++++++++++++
- 13 files changed, 4525 insertions(+), 10 deletions(-)
+ kernel/utrace.c | 2538 +++++++++++++++++++++++++++++++++++++
+ 12 files changed, 4545 insertions(+), 8 deletions(-)
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index 1615350..92ca631 100644
@@ -599,7 +598,7 @@
+
+</book>
diff --git a/fs/proc/array.c b/fs/proc/array.c
-index 0d6eb33..99041de 100644
+index 71c9be5..adc7a53 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -81,6 +81,7 @@
@@ -659,7 +658,7 @@
* ptrace_init_task - initialize ptrace state for a new child
* @child: new child task
diff --git a/include/linux/sched.h b/include/linux/sched.h
-index cfb0d87..581c487 100644
+index 3d9120c..e063c78 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1196,6 +1196,11 @@ struct task_struct {
@@ -674,7 +673,7 @@
/* Thread group tracking */
u32 parent_exec_id;
u32 self_exec_id;
-@@ -1768,6 +1773,7 @@ extern int kill_pgrp(struct pid *pid, in
+@@ -1772,6 +1777,7 @@ extern int kill_pgrp(struct pid *pid, in
extern int kill_pid(struct pid *pid, int sig, int priv);
extern int kill_proc_info(int, struct siginfo *, pid_t);
extern int do_notify_parent(struct task_struct *, int);
@@ -683,7 +682,7 @@
extern void force_sig_specific(int, struct task_struct *);
extern int send_sig(int, struct task_struct *, int);
diff --git a/include/linux/tracehook.h b/include/linux/tracehook.h
-index b48d819..968909d 100644
+index 6186a78..968909d 100644
--- a/include/linux/tracehook.h
+++ b/include/linux/tracehook.h
@@ -49,6 +49,7 @@
@@ -2430,10 +2429,10 @@
struct pt_regs *regs, void *cookie)
diff --git a/kernel/utrace.c b/kernel/utrace.c
new file mode 100644
-index ...5ef8fcd 100644
+index ...1b794bb 100644
--- /dev/null
+++ b/kernel/utrace.c
-@@ -0,0 +1,2516 @@
+@@ -0,0 +1,2538 @@
+/*
+ * utrace infrastructure interface for debugging user processes
+ *
@@ -2671,6 +2670,17 @@
+}
+
+/*
++ * This is called with @utrace->lock held when the task is safely
++ * quiescent, i.e. it won't consult utrace->attached without the lock.
++ * Move any engines attached asynchronously from @utrace->attaching
++ * onto the @utrace->attached list.
++ */
++static void splice_attaching(struct utrace *utrace)
++{
++ list_splice_tail_init(&utrace->attaching, &utrace->attached);
++}
++
++/*
+ * Allocate a new engine structure. It starts out with two refs:
+ * one ref for utrace_attach_task() to return, and ref for being attached.
+ */
@@ -2798,7 +2808,29 @@
+ rcu_read_unlock();
+
+ list_add_tail(&engine->entry, &utrace->attaching);
-+ utrace->report = 1;
++
++ /*
++ * Now the new engine is on the pending ->attaching list. Make
++ * sure it gets onto the ->attached list by the next time it's
++ * examined. When called on current (e.g. from inside a callback),
++ * we can do it right away. Otherwise, we set ->report to ensure
++ * that start_report() takes the lock and does it next time.
++ */
++
++ if (target == current) {
++ splice_attaching(utrace);
++ } else {
++ /*
++ * Whenever setting ->report, we must maintain the
++ * invariant that TIF_NOTIFY_RESUME is also set.
++ * Otherwise utrace_control() or utrace_do_stop()
++ * might skip setting TIF_NOTIFY_RESUME upon seeing
++ * ->report already set, and we'd miss a necessary
++ * callback.
++ */
++ utrace->report = 1;
++ set_notify_resume(target);
++ }
+ goto finish;
+
+first:
@@ -2848,17 +2880,6 @@
+EXPORT_SYMBOL_GPL(utrace_attach_pid);
+
+/*
-+ * This is called with @utrace->lock held when the task is safely
-+ * quiescent, i.e. it won't consult utrace->attached without the lock.
-+ * Move any engines attached asynchronously from @utrace->attaching
-+ * onto the @utrace->attached list.
-+ */
-+static void splice_attaching(struct utrace *utrace)
-+{
-+ list_splice_tail_init(&utrace->attaching, &utrace->attached);
-+}
-+
-+/*
+ * When an engine is detached, the target thread may still see it and
+ * make callbacks until it quiesces. We install a special ops vector
+ * with these two callbacks. When the target thread quiesces, it can
linux-2.6-x86-tracehook.patch:
Index: linux-2.6-x86-tracehook.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-x86-tracehook.patch,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- linux-2.6-x86-tracehook.patch 20 Aug 2008 20:23:16 -0000 1.8
+++ linux-2.6-x86-tracehook.patch 22 Sep 2008 20:10:55 -0000 1.9
@@ -3,12 +3,12 @@
arch/x86/kernel/signal_32.c | 11 ++-
arch/x86/kernel/signal_64.c | 49 +++-------
include/asm-x86/ptrace.h | 5 +
- include/asm-x86/syscall.h | 210 +++++++++++++++++++++++++++++++++++++++++
+ include/asm-x86/syscall.h | 211 +++++++++++++++++++++++++++++++++++++++++
include/asm-x86/thread_info.h | 4 +-
- 7 files changed, 248 insertions(+), 66 deletions(-)
+ 7 files changed, 249 insertions(+), 66 deletions(-)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index ac2fb06..2206787 100644
+index ed92864..ebfd7ff 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -29,6 +29,7 @@ config X86
@@ -134,7 +134,7 @@
clear_thread_flag(TIF_IRET);
}
diff --git a/arch/x86/kernel/signal_64.c b/arch/x86/kernel/signal_64.c
-index b45ef8d..d01e3f6 100644
+index ca316b5..1e19338 100644
--- a/arch/x86/kernel/signal_64.c
+++ b/arch/x86/kernel/signal_64.c
@@ -15,6 +15,7 @@
@@ -153,7 +153,7 @@
#include "sigframe.h"
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
-@@ -346,35 +348,6 @@ give_sigsegv:
+@@ -355,35 +357,6 @@ give_sigsegv:
}
/*
@@ -189,7 +189,7 @@
* OK, we're invoking a handler
*/
-@@ -385,9 +358,9 @@ handle_signal(unsigned long sig, siginfo
+@@ -394,9 +367,9 @@ handle_signal(unsigned long sig, siginfo
int ret;
/* Are we from a system call? */
@@ -201,7 +201,7 @@
case -ERESTART_RESTARTBLOCK:
case -ERESTARTNOHAND:
regs->ax = -EINTR;
-@@ -444,8 +417,6 @@ handle_signal(unsigned long sig, siginfo
+@@ -453,8 +426,6 @@ handle_signal(unsigned long sig, siginfo
* handler too.
*/
regs->flags &= ~X86_EFLAGS_TF;
@@ -210,7 +210,7 @@
spin_lock_irq(¤t->sighand->siglock);
sigorsets(¤t->blocked,¤t->blocked,&ka->sa.sa_mask);
-@@ -453,6 +424,9 @@ handle_signal(unsigned long sig, siginfo
+@@ -462,6 +433,9 @@ handle_signal(unsigned long sig, siginfo
sigaddset(¤t->blocked,sig);
recalc_sigpending();
spin_unlock_irq(¤t->sighand->siglock);
@@ -220,7 +220,7 @@
}
return ret;
-@@ -509,9 +483,9 @@ static void do_signal(struct pt_regs *re
+@@ -518,9 +492,9 @@ static void do_signal(struct pt_regs *re
}
/* Did we come from a system call? */
@@ -232,7 +232,7 @@
case -ERESTARTNOHAND:
case -ERESTARTSYS:
case -ERESTARTNOINTR:
-@@ -549,6 +523,11 @@ void do_notify_resume(struct pt_regs *re
+@@ -558,6 +532,11 @@ void do_notify_resume(struct pt_regs *re
/* deal with pending signal delivery */
if (thread_info_flags & _TIF_SIGPENDING)
do_signal(regs);
@@ -262,10 +262,10 @@
*/
diff --git a/include/asm-x86/syscall.h b/include/asm-x86/syscall.h
new file mode 100644
-index ...6f29389 100644
+index ...04c47dc 100644
--- /dev/null
+++ b/include/asm-x86/syscall.h
-@@ -0,0 +1,210 @@
+@@ -0,0 +1,211 @@
+/*
+ * Access to user system call parameters and results
+ *
@@ -282,6 +282,7 @@
+#define _ASM_SYSCALL_H 1
+
+#include <linux/sched.h>
++#include <linux/err.h>
+
+static inline long syscall_get_nr(struct task_struct *task,
+ struct pt_regs *regs)
@@ -315,7 +316,7 @@
+ */
+ error = (long) (int) error;
+#endif
-+ return error >= -4095L ? error : 0;
++ return IS_ERR_VALUE(error) ? error : 0;
+}
+
+static inline long syscall_get_return_value(struct task_struct *task,
- Previous message (by thread): rpms/selinux-policy/devel policy-20080710.patch, 1.42, 1.43 selinux-policy.spec, 1.709, 1.710
- Next message (by thread): rpms/kphotoalbum/EL-5 kphotoalbum-3.0.2-dt.patch, NONE, 1.1 kphotoalbum-3.1.1-gcc43.patch, NONE, 1.1 .cvsignore, 1.3, 1.4 kphotoalbum.spec, 1.7, 1.8 sources, 1.2, 1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list