[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

rpms/kernel/devel kernel-2.6.spec, 1.2767, 1.2768 linux-2.6-utrace.patch, 1.29, 1.30



Author: davej

Update of /cvs/dist/rpms/kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv15409

Modified Files:
	kernel-2.6.spec linux-2.6-utrace.patch 
Log Message:
utrace: fix signal deliver on ptrace_detach()


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.2767
retrieving revision 1.2768
diff -u -r1.2767 -r1.2768
--- kernel-2.6.spec	11 Oct 2006 21:55:50 -0000	1.2767
+++ kernel-2.6.spec	11 Oct 2006 21:58:10 -0000	1.2768
@@ -1986,6 +1986,7 @@
 * Wed Oct 11 2006 Dave Jones <davej redhat com>
 - Silence some useless messages that still get printed with 'quiet'
 - 2.6.18.1rc1
+- utrace: fix signal deliver on ptrace_detach()
 
 * Wed Oct 11 2006 Jon Masters <jcm redhat com>
 - kABI dep fixes.

linux-2.6-utrace.patch:
 linux-2.6.18.noarch/kernel/utrace.c               |   33 
 linux-2.6/Documentation/utrace.txt                |  455 +++++
 linux-2.6/arch/alpha/kernel/asm-offsets.c         |    2 
 linux-2.6/arch/alpha/kernel/entry.S               |    4 
 linux-2.6/arch/arm/kernel/ptrace.c                |   36 
 linux-2.6/arch/arm26/kernel/ptrace.c              |   32 
 linux-2.6/arch/frv/kernel/ptrace.c                |   15 
 linux-2.6/arch/i386/kernel/entry.S                |    7 
 linux-2.6/arch/i386/kernel/i387.c                 |  143 -
 linux-2.6/arch/i386/kernel/process.c              |    3 
 linux-2.6/arch/i386/kernel/ptrace.c               |  863 ++++++-----
 linux-2.6/arch/i386/kernel/signal.c               |   39 
 linux-2.6/arch/i386/kernel/vm86.c                 |    7 
 linux-2.6/arch/ia64/ia32/ia32_entry.S             |    2 
 linux-2.6/arch/ia64/ia32/sys_ia32.c               |   23 
 linux-2.6/arch/ia64/kernel/asm-offsets.c          |    2 
 linux-2.6/arch/ia64/kernel/fsys.S                 |   16 
 linux-2.6/arch/ia64/kernel/mca.c                  |    2 
 linux-2.6/arch/ia64/kernel/ptrace.c               | 1670 ++++++++++------------
 linux-2.6/arch/ia64/kernel/signal.c               |    4 
 linux-2.6/arch/mips/kernel/ptrace.c               |   21 
 linux-2.6/arch/mips/kernel/sysirix.c              |    2 
 linux-2.6/arch/powerpc/kernel/Makefile            |    4 
 linux-2.6/arch/powerpc/kernel/asm-offsets.c       |    2 
 linux-2.6/arch/powerpc/kernel/process.c           |    5 
 linux-2.6/arch/powerpc/kernel/ptrace-common.h     |  161 --
 linux-2.6/arch/powerpc/kernel/ptrace.c            |  959 +++++++-----
 linux-2.6/arch/powerpc/kernel/ptrace32.c          |  436 -----
 linux-2.6/arch/powerpc/kernel/signal_32.c         |   56 
 linux-2.6/arch/powerpc/kernel/signal_64.c         |    4 
 linux-2.6/arch/powerpc/kernel/sys_ppc32.c         |    5 
 linux-2.6/arch/powerpc/lib/sstep.c                |    3 
 linux-2.6/arch/powerpc/platforms/cell/spufs/run.c |    2 
 linux-2.6/arch/ppc/kernel/asm-offsets.c           |    2 
 linux-2.6/arch/s390/kernel/Makefile               |    2 
 linux-2.6/arch/s390/kernel/compat_linux.c         |    3 
 linux-2.6/arch/s390/kernel/compat_signal.c        |    5 
 linux-2.6/arch/s390/kernel/process.c              |    3 
 linux-2.6/arch/s390/kernel/ptrace.c               |  651 +++++++-
 linux-2.6/arch/s390/kernel/signal.c               |    4 
 linux-2.6/arch/s390/kernel/traps.c                |    6 
 linux-2.6/arch/sparc64/kernel/Makefile            |    2 
 linux-2.6/arch/sparc64/kernel/binfmt_aout32.c     |    2 
 linux-2.6/arch/sparc64/kernel/entry.S             |    6 
 linux-2.6/arch/sparc64/kernel/process.c           |    3 
 linux-2.6/arch/sparc64/kernel/ptrace.c            | 1221 ++++++++--------
 linux-2.6/arch/sparc64/kernel/signal.c            |    2 
 linux-2.6/arch/sparc64/kernel/signal32.c          |    2 
 linux-2.6/arch/sparc64/kernel/sys_sparc32.c       |    3 
 linux-2.6/arch/sparc64/kernel/systbls.S           |    4 
 linux-2.6/arch/x86_64/ia32/fpu32.c                |   92 -
 linux-2.6/arch/x86_64/ia32/ia32_aout.c            |    6 
 linux-2.6/arch/x86_64/ia32/ia32_signal.c          |    8 
 linux-2.6/arch/x86_64/ia32/ia32entry.S            |    2 
 linux-2.6/arch/x86_64/ia32/ptrace32.c             |  715 ++++++---
 linux-2.6/arch/x86_64/ia32/sys_ia32.c             |    5 
 linux-2.6/arch/x86_64/kernel/process.c            |    5 
 linux-2.6/arch/x86_64/kernel/ptrace.c             |  648 +++++---
 linux-2.6/arch/x86_64/kernel/signal.c             |   30 
 linux-2.6/arch/x86_64/kernel/traps.c              |    8 
 linux-2.6/arch/x86_64/mm/fault.c                  |    4 
 linux-2.6/drivers/connector/cn_proc.c             |    4 
 linux-2.6/fs/binfmt_aout.c                        |    6 
 linux-2.6/fs/binfmt_elf.c                         |    6 
 linux-2.6/fs/binfmt_elf_fdpic.c                   |    7 
 linux-2.6/fs/binfmt_flat.c                        |    3 
 linux-2.6/fs/binfmt_som.c                         |    2 
 linux-2.6/fs/exec.c                               |   11 
 linux-2.6/fs/proc/array.c                         |   14 
 linux-2.6/fs/proc/base.c                          |   17 
 linux-2.6/include/asm-i386/i387.h                 |   13 
 linux-2.6/include/asm-i386/signal.h               |    4 
 linux-2.6/include/asm-i386/thread_info.h          |    7 
 linux-2.6/include/asm-i386/tracehook.h            |   49 
 linux-2.6/include/asm-ia64/elf.h                  |   24 
 linux-2.6/include/asm-ia64/tracehook.h            |   81 +
 linux-2.6/include/asm-powerpc/tracehook.h         |   80 +
 linux-2.6/include/asm-s390/tracehook.h            |   53 
 linux-2.6/include/asm-sparc64/tracehook.h         |   44 
 linux-2.6/include/asm-x86_64/fpu32.h              |    3 
 linux-2.6/include/asm-x86_64/thread_info.h        |    2 
 linux-2.6/include/asm-x86_64/tracehook.h          |   54 
 linux-2.6/include/linux/init_task.h               |    3 
 linux-2.6/include/linux/ptrace.h                  |  224 ++
 linux-2.6/include/linux/sched.h                   |   25 
 linux-2.6/include/linux/tracehook.h               |  707 +++++++++
 linux-2.6/include/linux/utrace.h                  |  484 ++++++
 linux-2.6/init/Kconfig                            |   29 
 linux-2.6/kernel/Makefile                         |    1 
 linux-2.6/kernel/exit.c                           |  254 ---
 linux-2.6/kernel/fork.c                           |   62 
 linux-2.6/kernel/ptrace.c                         | 1632 +++++++++++++++++----
 linux-2.6/kernel/signal.c                         |  211 --
 linux-2.6/kernel/sys.c                            |    2 
 linux-2.6/kernel/timer.c                          |    4 
 linux-2.6/kernel/utrace.c                         | 1590 ++++++++++++++++++++
 linux-2.6/security/selinux/hooks.c                |   54 
 linux-2.6/security/selinux/include/objsec.h       |    1 
 98 files changed, 9649 insertions(+), 4580 deletions(-)

Index: linux-2.6-utrace.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-utrace.patch,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- linux-2.6-utrace.patch	10 Oct 2006 04:22:09 -0000	1.29
+++ linux-2.6-utrace.patch	11 Oct 2006 21:58:10 -0000	1.30
@@ -16995,3 +16995,75 @@
 -	}
 +	tracehook_report_syscall(regs, leaving);
  }
+Index: linux-2.6.18.noarch/kernel/utrace.c
+===================================================================
+--- linux-2.6.18.noarch.orig/kernel/utrace.c
++++ linux-2.6.18.noarch/kernel/utrace.c
+@@ -155,6 +155,16 @@ remove_engine(struct utrace_attached_eng
+ 	call_rcu(&engine->rhead, utrace_engine_free);
+ }
+ 
++/*
++ * This is pointed to by the utrace struct, but it's really a private
++ * structure between utrace_get_signal and utrace_inject_signal.
++ */
++struct utrace_signal
++{
++	siginfo_t *const info;
++	struct k_sigaction *return_ka;
++	int signr;
++};
+ 
+ /*
+  * Called with utrace locked, after remove_engine may have run.
+@@ -172,6 +182,11 @@ check_dead_utrace(struct task_struct *ts
+ 		return utrace;
+ 	}
+ 
++	if (utrace->u.live.signal && utrace->u.live.signal->signr != 0) {
++		utrace_unlock(utrace);
++		return utrace;
++	}
++
+ 	utrace_unlock(utrace);
+ 	rcu_utrace_free(utrace);
+ 	return NULL;
+@@ -1083,19 +1098,6 @@ utrace_report_syscall(struct pt_regs *re
+ 	check_quiescent(tsk, action);
+ }
+ 
+-
+-/*
+- * This is pointed to by the utrace struct, but it's really a private
+- * structure between utrace_get_signal and utrace_inject_signal.
+- */
+-struct utrace_signal
+-{
+-	siginfo_t *const info;
+-	struct k_sigaction *return_ka;
+-	int signr;
+-};
+-
+-
+ // XXX copied from signal.c
+ #ifdef SIGEMT
+ #define M_SIGEMT	M(SIGEMT)
+@@ -1205,7 +1207,7 @@ utrace_get_signal(struct task_struct *ts
+ 	if (tsk->utrace_flags & UTRACE_ACTION_QUIESCE) {
+ 		spin_unlock_irq(&tsk->sighand->siglock);
+ 		utrace_quiescent(tsk);
+-		if (utrace->u.live.signal != &signal || signal.signr == 0)
++		if (signal.signr == 0)
+ 			/*
+ 			 * This return value says to reacquire the siglock
+ 			 * and check again.  This will check for a pending
+@@ -1324,6 +1326,9 @@ utrace_get_signal(struct task_struct *ts
+ 		recalc_sigpending_tsk(tsk);
+ 	}
+ 
++	if (tsk->utrace != utrace)
++		rcu_utrace_free(utrace);
++
+ 	/*
+ 	 * We express the chosen action to the signals code in terms
+ 	 * of a representative signal whose default action does it.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]