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

rpms/kernel/devel kernel-2.6.spec, 1.2485, 1.2486 linux-2.6-utrace.patch, 1.10, 1.11



Author: roland

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

Modified Files:
	kernel-2.6.spec linux-2.6-utrace.patch 
Log Message:
* Mon Jul 31 2006 Roland McGrath <roland redhat com>
- New utrace patch:
  - fix ptrace_do_wait deadlock (#200822, #200605)
  - arch cleanups




Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.2485
retrieving revision 1.2486
diff -u -r1.2485 -r1.2486
--- kernel-2.6.spec	31 Jul 2006 22:33:49 -0000	1.2485
+++ kernel-2.6.spec	31 Jul 2006 23:30:24 -0000	1.2486
@@ -1659,6 +1659,11 @@
 %endif
 
 %changelog
+* Mon Jul 31 2006 Roland McGrath <roland redhat com>
+- New utrace patch:
+  - fix ptrace_do_wait deadlock (#200822, #200605)
+  - arch cleanups
+
 * Tue Aug  1 2006 Juan Quintela <quintela redhat com>
 - disable blktap for xen-ia64 (don't compile).
 - enable ia64-xen (it compiles, but still don't boot).
@@ -1679,7 +1684,7 @@
 - Numerous GFS2/DLM fixes.
 
 * Mon Jul 31 2006 Jeremy Katz <katzj redhat com>
-- new ahci suspend patch 
+- new ahci suspend patch
 
 * Mon Jul 31 2006 Dave Jones <davej redhat com>
 - VFS: Destroy the dentries contributed by a superblock on unmounting [try #2]

linux-2.6-utrace.patch:
 Documentation/utrace.txt                |  455 +++++++++
 arch/alpha/kernel/asm-offsets.c         |    2 
 arch/alpha/kernel/entry.S               |    4 
 arch/arm/kernel/ptrace.c                |   36 
 arch/arm26/kernel/ptrace.c              |   32 
 arch/frv/kernel/ptrace.c                |   15 
 arch/i386/kernel/entry.S                |    7 
 arch/i386/kernel/i387.c                 |  143 +-
 arch/i386/kernel/process.c              |    3 
 arch/i386/kernel/ptrace.c               |  839 +++++++++--------
 arch/i386/kernel/signal.c               |   39 
 arch/i386/kernel/vm86.c                 |    7 
 arch/ia64/ia32/sys_ia32.c               |    2 
 arch/ia64/kernel/asm-offsets.c          |    2 
 arch/ia64/kernel/fsys.S                 |   16 
 arch/ia64/kernel/mca.c                  |    2 
 arch/ia64/kernel/ptrace.c               |   41 
 arch/mips/kernel/ptrace.c               |   21 
 arch/mips/kernel/sysirix.c              |    2 
 arch/powerpc/kernel/Makefile            |    4 
 arch/powerpc/kernel/asm-offsets.c       |    2 
 arch/powerpc/kernel/process.c           |    5 
 arch/powerpc/kernel/ptrace-common.h     |  161 ---
 arch/powerpc/kernel/ptrace.c            |  785 +++++++---------
 arch/powerpc/kernel/ptrace32.c          |  436 --------
 arch/powerpc/kernel/signal_32.c         |   56 +
 arch/powerpc/kernel/signal_64.c         |    4 
 arch/powerpc/kernel/sys_ppc32.c         |    5 
 arch/powerpc/lib/sstep.c                |    3 
 arch/powerpc/platforms/cell/spufs/run.c |    2 
 arch/ppc/kernel/asm-offsets.c           |    2 
 arch/s390/kernel/compat_linux.c         |    3 
 arch/s390/kernel/compat_signal.c        |    5 
 arch/s390/kernel/process.c              |    3 
 arch/s390/kernel/ptrace.c               |  551 ++++++++++-
 arch/s390/kernel/signal.c               |    4 
 arch/s390/kernel/traps.c                |    6 
 arch/sparc64/kernel/entry.S             |    6 
 arch/sparc64/kernel/process.c           |    3 
 arch/sparc64/kernel/ptrace.c            |  650 +++++++++++--
 arch/sparc64/kernel/signal.c            |    2 
 arch/sparc64/kernel/signal32.c          |    2 
 arch/sparc64/kernel/sys_sparc32.c       |    3 
 arch/sparc64/kernel/systbls.S           |    4 
 arch/x86_64/ia32/fpu32.c                |   92 +
 arch/x86_64/ia32/ia32_aout.c            |    6 
 arch/x86_64/ia32/ia32_signal.c          |    8 
 arch/x86_64/ia32/ia32entry.S            |    2 
 arch/x86_64/ia32/ptrace32.c             |  688 +++++++++-----
 arch/x86_64/ia32/sys_ia32.c             |    5 
 arch/x86_64/kernel/process.c            |    5 
 arch/x86_64/kernel/ptrace.c             |  619 +++++++-----
 arch/x86_64/kernel/signal.c             |   30 
 arch/x86_64/kernel/traps.c              |    8 
 arch/x86_64/mm/fault.c                  |    4 
 drivers/connector/cn_proc.c             |    4 
 fs/binfmt_aout.c                        |    6 
 fs/binfmt_elf.c                         |    6 
 fs/binfmt_elf_fdpic.c                   |    7 
 fs/binfmt_flat.c                        |    3 
 fs/binfmt_som.c                         |    2 
 fs/exec.c                               |   11 
 fs/proc/array.c                         |    7 
 fs/proc/base.c                          |   17 
 include/asm-i386/i387.h                 |   13 
 include/asm-i386/signal.h               |    4 
 include/asm-i386/thread_info.h          |    7 
 include/asm-i386/tracehook.h            |   74 +
 include/asm-powerpc/tracehook.h         |  303 ++++++
 include/asm-s390/tracehook.h            |  105 ++
 include/asm-sparc64/tracehook.h         |   44 
 include/asm-x86_64/fpu32.h              |    3 
 include/asm-x86_64/thread_info.h        |    2 
 include/asm-x86_64/tracehook.h          |  106 ++
 include/linux/init_task.h               |    3 
 include/linux/ptrace.h                  |   86 -
 include/linux/sched.h                   |   25 
 include/linux/tracehook.h               |  641 +++++++++++++
 include/linux/utrace.h                  |  471 +++++++++
 init/Kconfig                            |   29 
 kernel/Makefile                         |    1 
 kernel/exit.c                           |  259 +----
 kernel/fork.c                           |   60 -
 kernel/ptrace.c                         | 1562 +++++++++++++++++++++++++-------
 kernel/signal.c                         |  211 ----
 kernel/sys.c                            |    2 
 kernel/timer.c                          |    6 
 kernel/utrace.c                         | 1520 +++++++++++++++++++++++++++++++
 security/selinux/hooks.c                |    6 
 89 files changed, 8167 insertions(+), 3281 deletions(-)

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.10 -r 1.11 linux-2.6-utrace.patch
Index: linux-2.6-utrace.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/linux-2.6-utrace.patch,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- linux-2.6-utrace.patch	27 Jul 2006 22:31:59 -0000	1.10
+++ linux-2.6-utrace.patch	31 Jul 2006 23:30:24 -0000	1.11
@@ -1,13 +1,13 @@
- Documentation/utrace.txt                |  451 +++++++++
+ Documentation/utrace.txt                |  455 +++++++++
  arch/alpha/kernel/asm-offsets.c         |    2 
  arch/alpha/kernel/entry.S               |    4 
  arch/arm/kernel/ptrace.c                |   36 -
  arch/arm26/kernel/ptrace.c              |   32 -
  arch/frv/kernel/ptrace.c                |   15 
  arch/i386/kernel/entry.S                |    7 
- arch/i386/kernel/i387.c                 |  143 ++-
+ arch/i386/kernel/i387.c                 |  143 +--
  arch/i386/kernel/process.c              |    3 
- arch/i386/kernel/ptrace.c               |  862 +++++++++--------
+ arch/i386/kernel/ptrace.c               |  839 +++++++++--------
  arch/i386/kernel/signal.c               |   39 -
  arch/i386/kernel/vm86.c                 |    7 
  arch/ia64/ia32/sys_ia32.c               |    2 
@@ -21,7 +21,7 @@
  arch/powerpc/kernel/asm-offsets.c       |    2 
  arch/powerpc/kernel/process.c           |    5 
  arch/powerpc/kernel/ptrace-common.h     |  161 ---
- arch/powerpc/kernel/ptrace.c            |  842 +++++++++--------
+ arch/powerpc/kernel/ptrace.c            |  785 +++++++---------
  arch/powerpc/kernel/ptrace32.c          |  436 ---------
  arch/powerpc/kernel/signal_32.c         |   56 +
  arch/powerpc/kernel/signal_64.c         |    4 
@@ -32,18 +32,24 @@
  arch/s390/kernel/compat_linux.c         |    3 
  arch/s390/kernel/compat_signal.c        |    5 
  arch/s390/kernel/process.c              |    3 
- arch/s390/kernel/ptrace.c               |  690 +++++++++++++-
+ arch/s390/kernel/ptrace.c               |  551 ++++++++++-
  arch/s390/kernel/signal.c               |    4 
  arch/s390/kernel/traps.c                |    6 
- arch/sparc64/kernel/ptrace.c            |   18 
+ arch/sparc64/kernel/entry.S             |    6 
+ arch/sparc64/kernel/process.c           |    3 
+ arch/sparc64/kernel/ptrace.c            |  650 +++++++++++--
+ arch/sparc64/kernel/signal.c            |    2 
+ arch/sparc64/kernel/signal32.c          |    2 
+ arch/sparc64/kernel/sys_sparc32.c       |    3 
+ arch/sparc64/kernel/systbls.S           |    4 
  arch/x86_64/ia32/fpu32.c                |   92 +-
  arch/x86_64/ia32/ia32_aout.c            |    6 
  arch/x86_64/ia32/ia32_signal.c          |    8 
  arch/x86_64/ia32/ia32entry.S            |    2 
- arch/x86_64/ia32/ptrace32.c             |  699 +++++++++-----
+ arch/x86_64/ia32/ptrace32.c             |  690 +++++++++-----
  arch/x86_64/ia32/sys_ia32.c             |    5 
  arch/x86_64/kernel/process.c            |    5 
- arch/x86_64/kernel/ptrace.c             |  632 ++++++++-----
+ arch/x86_64/kernel/ptrace.c             |  619 +++++++-----
  arch/x86_64/kernel/signal.c             |   30 -
  arch/x86_64/kernel/traps.c              |    8 
  arch/x86_64/mm/fault.c                  |    4 
@@ -59,34 +65,36 @@
  include/asm-i386/i387.h                 |   13 
  include/asm-i386/signal.h               |    4 
  include/asm-i386/thread_info.h          |    7 
- include/asm-i386/tracehook.h            |   73 +
- include/asm-powerpc/tracehook.h         |  302 ++++++
- include/asm-s390/tracehook.h            |  103 ++
+ include/asm-i386/tracehook.h            |   74 +
+ include/asm-powerpc/tracehook.h         |  303 ++++++
+ include/asm-s390/tracehook.h            |  105 ++
+ include/asm-sparc64/tracehook.h         |   44 +
  include/asm-x86_64/fpu32.h              |    3 
  include/asm-x86_64/thread_info.h        |    2 
- include/asm-x86_64/tracehook.h          |  105 ++
+ include/asm-x86_64/tracehook.h          |  106 ++
  include/linux/init_task.h               |    3 
  include/linux/ptrace.h                  |   86 +-
- include/linux/sched.h                   |   25 -
- include/linux/tracehook.h               |  566 +++++++++++
- include/linux/utrace.h                  |  471 ++++++++++
+ include/linux/sched.h                   |   25 
+ include/linux/tracehook.h               |  641 +++++++++++++
+ include/linux/utrace.h                  |  471 +++++++++
  init/Kconfig                            |   29 +
  kernel/Makefile                         |    1 
- kernel/exit.c                           |  251 +----
+ kernel/exit.c                           |  259 +----
  kernel/fork.c                           |   60 -
- kernel/ptrace.c                         | 1531 ++++++++++++++++++++++++-------
+ kernel/ptrace.c                         | 1562 ++++++++++++++++++++++++-------
  kernel/signal.c                         |  211 +---
  kernel/sys.c                            |    2 
  kernel/timer.c                          |    6 
- kernel/utrace.c                         | 1501 ++++++++++++++++++++++++++++++
+ kernel/utrace.c                         | 1520 ++++++++++++++++++++++++++++++
  security/selinux/hooks.c                |    6 
- 82 files changed, 7666 insertions(+), 3187 deletions(-)
+ 89 files changed, 8168 insertions(+), 3282 deletions(-)
  create mode 100644 Documentation/utrace.txt
  delete arch/powerpc/kernel/ptrace-common.h
  delete arch/powerpc/kernel/ptrace32.c
  create mode 100644 include/asm-i386/tracehook.h
  create mode 100644 include/asm-powerpc/tracehook.h
  create mode 100644 include/asm-s390/tracehook.h
+ create mode 100644 include/asm-sparc64/tracehook.h
  create mode 100644 include/asm-x86_64/tracehook.h
  create mode 100644 include/linux/tracehook.h
  create mode 100644 include/linux/utrace.h
@@ -94,7 +102,7 @@
 
 --- linux-2.6/include/asm-powerpc/tracehook.h.utrace-ptrace-compat
 +++ linux-2.6/include/asm-powerpc/tracehook.h
-@@ -0,0 +1,302 @@
+@@ -0,0 +1,303 @@
 +/*
 + * Tracing hooks, PowerPC CPU support
 + */
@@ -109,6 +117,7 @@
 + * See linux/tracehook.h for the descriptions of what these need to do.
 + */
 +
++#define ARCH_HAS_SINGLE_STEP	(1)
 +
 +static inline void tracehook_enable_single_step(struct task_struct *task)
 +{
@@ -474,7 +483,7 @@
  
 --- linux-2.6/include/asm-i386/tracehook.h.utrace-ptrace-compat
 +++ linux-2.6/include/asm-i386/tracehook.h
-@@ -0,0 +1,73 @@
+@@ -0,0 +1,74 @@
 +/*
 + * Tracing hooks, i386 CPU support
 + */
@@ -489,6 +498,7 @@
 + * See linux/tracehook.h for the descriptions of what these need to do.
 + */
 +
++#define ARCH_HAS_SINGLE_STEP	(1)
 +
 +/* These two are defined in arch/i386/kernel/ptrace.c.  */
 +void tracehook_enable_single_step(struct task_struct *tsk);
@@ -550,7 +560,7 @@
 +#endif
 --- linux-2.6/include/asm-s390/tracehook.h.utrace-ptrace-compat
 +++ linux-2.6/include/asm-s390/tracehook.h
-@@ -0,0 +1,103 @@
+@@ -0,0 +1,105 @@
 +/*
 + * Tracing hooks, s390/s390x support.
 + */
@@ -565,6 +575,8 @@
 + * See linux/tracehook.h for the descriptions of what these need to do.
 + */
 +
++#define ARCH_HAS_SINGLE_STEP	(1)
++
 +/* These three are defined in arch/s390/kernel/ptrace.c.  */
 +void tracehook_enable_single_step(struct task_struct *tsk);
 +void tracehook_disable_single_step(struct task_struct *tsk);
@@ -684,7 +696,7 @@
  #define _TIF_WORK_MASK \
 --- linux-2.6/include/asm-x86_64/tracehook.h.utrace-ptrace-compat
 +++ linux-2.6/include/asm-x86_64/tracehook.h
-@@ -0,0 +1,105 @@
+@@ -0,0 +1,106 @@
 +/*
 + * Tracing hooks, x86-64 CPU support
 + */
@@ -700,6 +712,7 @@
 + * See linux/tracehook.h for the descriptions of what these need to do.
 + */
 +
++#define ARCH_HAS_SINGLE_STEP	(1)
 +
 +/* These two are defined in arch/x86_64/kernel/ptrace.c.  */
 +void tracehook_enable_single_step(struct task_struct *tsk);
@@ -790,6 +803,53 @@
 +
 +
 +#endif
+--- linux-2.6/include/asm-sparc64/tracehook.h.utrace-ptrace-compat
++++ linux-2.6/include/asm-sparc64/tracehook.h
+@@ -0,0 +1,44 @@
++/*
++ * Tracing hooks, SPARC64 CPU support
++ */
++
++#ifndef _ASM_TRACEHOOK_H
++#define _ASM_TRACEHOOK_H	1
++
++
++#include <linux/sched.h>
++#include <asm/ptrace.h>
++
++/*
++ * See linux/tracehook.h for the descriptions of what these need to do.
[...3696 lines suppressed...]
++		if (ret == 0)
++			ret = utrace_regset_copyin(&pos, &count, &kbuf, &ubuf,
++						   &fp, 0, -1);
  		if (ret)
  			return ret;
 -		if (copy_to_user(si, &ssi, sizeof(siginfo_t)))
-+		if (kbuf)
-+			memcpy(&u.buf[pos], kbuf, count);
-+		else if (__copy_from_user(&u.buf[pos], ubuf, count))
- 			return -EFAULT;
-+		kbuf = &u;
+-			return -EFAULT;
++		kbuf = &fp;
  	}
 -	ret = sys_ptrace(request, pid, addr, (unsigned long)si);
 -	if (ret)
@@ -12456,10 +13216,10 @@
 -	if (request == PTRACE_GETSIGINFO) {
 -		if (copy_from_user(&ssi, si, sizeof(siginfo_t)))
 +	else if (kbuf == NULL) {
-+		if (__copy_from_user(&u.fp, ubuf, sizeof u.fp))
++		if (__copy_from_user(&fp, ubuf, sizeof(fp)))
  			return -EFAULT;
 -		ret = copy_siginfo_to_user32(si32, &ssi);
-+		kbuf = &u;
++		kbuf = &fp;
  	}
 -	return ret;
 +
@@ -12470,14 +13230,39 @@
 +static int
 +ia32_fpxregs_active(struct task_struct *target,
 +		    const struct utrace_regset *regset)
++{
++	return tsk_used_math(target) ? regset->n : 0;
++}
++
++static int
++ia32_fpxregs_get(struct task_struct *target,
++		 const struct utrace_regset *regset,
++		 unsigned int pos, unsigned int count,
++		 void *kbuf, void __user *ubuf)
++{
++	if (tsk_used_math(target)) {
++		if (target == current)
++			unlazy_fpu(target);
++	}
++	else
++		init_fpu(target);
++
++	return utrace_regset_copyout(&pos, &count, &kbuf, &ubuf,
++				     &target->thread.i387.fxsave, 0, -1);
++}
++
++static int
++ia32_fpxregs_set(struct task_struct *target,
++		 const struct utrace_regset *regset,
++		 unsigned int pos, unsigned int count,
++		 const void *kbuf, const void __user *ubuf)
++
  {
 -	struct task_struct *child;
 -	struct pt_regs *childregs; 
 -	void __user *datap = compat_ptr(data);
--	int ret;
+ 	int ret;
 -	__u32 val;
-+	return tsk_used_math(target) ? regset->n : 0;
-+}
  
 -	switch (request) { 
 -	case PTRACE_TRACEME:
@@ -12489,23 +13274,20 @@
 -	case PTRACE_SYSCALL:
 -	case PTRACE_SETOPTIONS:
 -		return sys_ptrace(request, pid, addr, data); 
-+static int
-+ia32_fpxregs_get(struct task_struct *target,
-+		 const struct utrace_regset *regset,
-+		 unsigned int pos, unsigned int count,
-+		 void *kbuf, void __user *ubuf)
-+{
-+	void *tbuf = &target->thread.i387.fxsave;
- 
--	default:
--		return -EINVAL;
 +	if (tsk_used_math(target)) {
 +		if (target == current)
 +			unlazy_fpu(target);
 +	}
++	else if (pos == 0 && count == sizeof(struct i387_fxsave_struct))
++		set_stopped_child_used_math(target);
 +	else
 +		init_fpu(target);
  
+-	default:
+-		return -EINVAL;
++	ret = utrace_regset_copyin(&pos, &count, &kbuf, &ubuf,
++				   &target->thread.i387.fxsave, 0, -1);
+ 
 -	case PTRACE_PEEKTEXT:
 -	case PTRACE_PEEKDATA:
 -	case PTRACE_POKEDATA:
@@ -12545,10 +13327,7 @@
 -		else
 -			ret = put_user(val, (unsigned int __user *)datap); 
 -		break; 
-+	if (kbuf) {
-+		memcpy(kbuf, tbuf + pos, count);
-+		return 0;
-+	}
++	target->thread.i387.fxsave.mxcsr &= mxcsr_feature_mask;
  
 -	case PTRACE_POKEDATA:
 -	case PTRACE_POKETEXT:
@@ -12556,7 +13335,7 @@
 -		if (access_process_vm(child, addr, &data, sizeof(u32), 1)!=sizeof(u32))
 -			ret = -EIO; 
 -		break;
-+	return __copy_to_user(ubuf, tbuf + pos, count) ? -EFAULT : 0;
++	return ret;
 +}
  
 -	case PTRACE_PEEKUSR:
@@ -12565,33 +13344,24 @@
 -			ret = put_user(val, (__u32 __user *)datap);
 -		break;
 +static int
-+ia32_fpxregs_set(struct task_struct *target,
-+		 const struct utrace_regset *regset,
-+		 unsigned int pos, unsigned int count,
-+		 const void *kbuf, const void __user *ubuf)
++ia32_dbregs_active(struct task_struct *tsk, const struct utrace_regset *regset)
++{
++	if (tsk->thread.debugreg6 | tsk->thread.debugreg7)
++		return 8;
++	return 0;
++}
  
 -	case PTRACE_POKEUSR:
 -		ret = putreg32(child, addr, data);
 -		break;
++static int
++ia32_dbregs_get(struct task_struct *target,
++		const struct utrace_regset *regset,
++		unsigned int pos, unsigned int count,
++		void *kbuf, void __user *ubuf)
 +{
-+	union {
-+		struct i387_fxsave_struct fp;
-+		char buf[sizeof(struct i387_fxsave_struct)];
-+	} *u = (void *) &target->thread.i387.fxsave;
-+
-+	if (tsk_used_math(target)) {
-+		if (target == current)
-+			unlazy_fpu(target);
-+	}
-+	else if (pos == 0 && count == sizeof(struct i387_fxsave_struct))
-+		set_stopped_child_used_math(target);
-+	else
-+		init_fpu(target);
-+
-+	if (kbuf)
-+		memcpy(&u->buf[pos], kbuf, count);
-+	else if (__copy_from_user(&u->buf[pos], ubuf, count))
-+		return -EFAULT;
++	for (pos >>= 2, count >>= 2; count > 0; --count, ++pos) {
++		u32 val;
  
 -	case PTRACE_GETREGS: { /* Get all gp regs from the child. */
 -		int i;
@@ -12604,28 +13374,6 @@
 -			getreg32(child, i, &val);
 -			ret |= __put_user(val,(u32 __user *)datap);
 -			datap += sizeof(u32);
-+	u->fp.mxcsr &= mxcsr_feature_mask;
-+
-+	return 0;
-+}
-+
-+static int
-+ia32_dbregs_active(struct task_struct *tsk, const struct utrace_regset *regset)
-+{
-+	if (tsk->thread.debugreg6 | tsk->thread.debugreg7)
-+		return 8;
-+	return 0;
-+}
-+
-+static int
-+ia32_dbregs_get(struct task_struct *target,
-+		const struct utrace_regset *regset,
-+		unsigned int pos, unsigned int count,
-+		void *kbuf, void __user *ubuf)
-+{
-+	for (pos >>= 2, count >>= 2; count > 0; --count, ++pos) {
-+		u32 val;
-+
 +		/*
 +		 * The hardware updates the status register on a debug trap,
 +		 * but do_debug (traps.c) saves it for us when that happens.


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