Cherry-pick utrace-ptrace fixes from mayoung. Thanks!
This commit is contained in:
		
							parent
							
								
									7b2f649ec2
								
							
						
					
					
						commit
						1aea2328b4
					
				| @ -3116,7 +3116,6 @@ CONFIG_USB_SE401=m | |||||||
| CONFIG_USB_ZR364XX=m | CONFIG_USB_ZR364XX=m | ||||||
| CONFIG_SOC_CAMERA=m | CONFIG_SOC_CAMERA=m | ||||||
| CONFIG_SOC_CAMERA_MT9M001=m | CONFIG_SOC_CAMERA_MT9M001=m | ||||||
| CONFIG_SOC_CAMERA_MT9M001=m |  | ||||||
| CONFIG_SOC_CAMERA_MT9V022=m | CONFIG_SOC_CAMERA_MT9V022=m | ||||||
| CONFIG_SOC_CAMERA_PLATFORM=m | CONFIG_SOC_CAMERA_PLATFORM=m | ||||||
| CONFIG_SOC_CAMERA_MT9M111=m | CONFIG_SOC_CAMERA_MT9M111=m | ||||||
|  | |||||||
| @ -1122,7 +1122,7 @@ ApplyPatch linux-2.6-hotfixes.patch | |||||||
| # Roland's utrace ptrace replacement. | # Roland's utrace ptrace replacement. | ||||||
| ApplyPatch linux-2.6-tracehook.patch | ApplyPatch linux-2.6-tracehook.patch | ||||||
| ApplyPatch linux-2.6-utrace.patch | ApplyPatch linux-2.6-utrace.patch | ||||||
| #ApplyPatch linux-2.6-utrace-ptrace.patch | ApplyPatch linux-2.6-utrace-ptrace.patch | ||||||
| 
 | 
 | ||||||
| # Architecture patches | # Architecture patches | ||||||
| # x86(-64) | # x86(-64) | ||||||
| @ -1900,6 +1900,9 @@ fi | |||||||
| #                 ||     || | #                 ||     || | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Mon Nov 08 2010 Kyle McMartin <kyle@redhat.com> | ||||||
|  | - Cherry-pick utrace-ptrace fixes from mayoung. Thanks! | ||||||
|  | 
 | ||||||
| * Tue Nov 02 2010 Kyle McMartin <kyle@redhat.com> 2.6.37-0.1.rc1.git0 | * Tue Nov 02 2010 Kyle McMartin <kyle@redhat.com> 2.6.37-0.1.rc1.git0 | ||||||
| - Linux 2.6.37-rc1 | - Linux 2.6.37-rc1 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -29,9 +29,9 @@ index a85fb41..235c1b0 100644 | |||||||
|   |   | ||||||
| -
 | -
 | ||||||
| +extern void ptrace_notify_stop(struct task_struct *tracee);
 | +extern void ptrace_notify_stop(struct task_struct *tracee);
 | ||||||
|  extern long arch_ptrace(struct task_struct *child, long request, long addr, long data); |  extern long arch_ptrace(struct task_struct *child, long request, | ||||||
|  |  			unsigned long addr, unsigned long data); | ||||||
|  extern int ptrace_traceme(void); |  extern int ptrace_traceme(void); | ||||||
|  extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len); |  | ||||||
| diff --git a/kernel/Makefile b/kernel/Makefile
 | diff --git a/kernel/Makefile b/kernel/Makefile
 | ||||||
| index 6004913..b09c9a5 100644  
 | index 6004913..b09c9a5 100644  
 | ||||||
| --- a/kernel/Makefile
 | --- a/kernel/Makefile
 | ||||||
| @ -673,7 +673,7 @@ index ...a90078d 100644 | |||||||
| +	 * under ptrace.
 | +	 * under ptrace.
 | ||||||
| +	 */
 | +	 */
 | ||||||
| +	retval = -ERESTARTNOINTR;
 | +	retval = -ERESTARTNOINTR;
 | ||||||
| +	if (mutex_lock_interruptible(&task->cred_guard_mutex))
 | +	if (mutex_lock_interruptible(&task->signal->cred_guard_mutex))
 | ||||||
| +		goto out;
 | +		goto out;
 | ||||||
| +
 | +
 | ||||||
| +	task_lock(task);
 | +	task_lock(task);
 | ||||||
| @ -703,7 +703,7 @@ index ...a90078d 100644 | |||||||
| +unlock_tasklist:
 | +unlock_tasklist:
 | ||||||
| +	write_unlock_irq(&tasklist_lock);
 | +	write_unlock_irq(&tasklist_lock);
 | ||||||
| +unlock_creds:
 | +unlock_creds:
 | ||||||
| +	mutex_unlock(&task->cred_guard_mutex);
 | +	mutex_unlock(&task->signal->cred_guard_mutex);
 | ||||||
| +out:
 | +out:
 | ||||||
| +	return retval;
 | +	return retval;
 | ||||||
| +}
 | +}
 | ||||||
| @ -1014,7 +1014,7 @@ index ...a90078d 100644 | |||||||
| +			 struct iovec *kiov);
 | +			 struct iovec *kiov);
 | ||||||
| +
 | +
 | ||||||
| +int ptrace_request(struct task_struct *child, long request,
 | +int ptrace_request(struct task_struct *child, long request,
 | ||||||
| +		   long addr, long data)
 | +		   unsigned long addr, unsigned long data)
 | ||||||
| +{
 | +{
 | ||||||
| +	struct utrace_engine *engine = ptrace_lookup_engine(child);
 | +	struct utrace_engine *engine = ptrace_lookup_engine(child);
 | ||||||
| +	siginfo_t siginfo;
 | +	siginfo_t siginfo;
 | ||||||
| @ -1412,7 +1412,7 @@ index 23bde94..daed9e8 100644 | |||||||
| +#define arch_ptrace_attach(child)	do { } while (0)
 | +#define arch_ptrace_attach(child)	do { } while (0)
 | ||||||
| +#endif
 | +#endif
 | ||||||
| +
 | +
 | ||||||
| +SYSCALL_DEFINE4(ptrace, long, request, long, pid, long, addr, long, data)
 | +SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr, unsigned long, data)
 | ||||||
| +{
 | +{
 | ||||||
| +	struct task_struct *child;
 | +	struct task_struct *child;
 | ||||||
| +	long ret;
 | +	long ret;
 | ||||||
| @ -1453,7 +1453,7 @@ index 23bde94..daed9e8 100644 | |||||||
| +	return ret;
 | +	return ret;
 | ||||||
| +}
 | +}
 | ||||||
| +
 | +
 | ||||||
| +int generic_ptrace_peekdata(struct task_struct *tsk, long addr, long data)
 | +int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr, unsigned long data)
 | ||||||
| +{
 | +{
 | ||||||
| +	unsigned long tmp;
 | +	unsigned long tmp;
 | ||||||
| +	int copied;
 | +	int copied;
 | ||||||
| @ -1464,7 +1464,7 @@ index 23bde94..daed9e8 100644 | |||||||
| +	return put_user(tmp, (unsigned long __user *)data);
 | +	return put_user(tmp, (unsigned long __user *)data);
 | ||||||
| +}
 | +}
 | ||||||
| +
 | +
 | ||||||
| +int generic_ptrace_pokedata(struct task_struct *tsk, long addr, long data)
 | +int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr, unsigned long data)
 | ||||||
| +{
 | +{
 | ||||||
| +	int copied;
 | +	int copied;
 | ||||||
| +
 | +
 | ||||||
| @ -1595,7 +1595,7 @@ index 23bde94..daed9e8 100644 | |||||||
|  unlock_tasklist: |  unlock_tasklist: | ||||||
| -	write_unlock_irq(&tasklist_lock);
 | -	write_unlock_irq(&tasklist_lock);
 | ||||||
| -unlock_creds:
 | -unlock_creds:
 | ||||||
| -	mutex_unlock(&task->cred_guard_mutex);
 | -	mutex_unlock(&task->signal->cred_guard_mutex);
 | ||||||
| -out:
 | -out:
 | ||||||
| -	return retval;
 | -	return retval;
 | ||||||
| -}
 | -}
 | ||||||
| @ -1656,7 +1656,7 @@ index 23bde94..daed9e8 100644 | |||||||
| - * If it should reap itself, return true.
 | - * If it should reap itself, return true.
 | ||||||
| +	write_unlock_irq(&tasklist_lock);
 | +	write_unlock_irq(&tasklist_lock);
 | ||||||
| +unlock_creds:
 | +unlock_creds:
 | ||||||
| +	mutex_unlock(&task->cred_guard_mutex);
 | +	mutex_unlock(&task->signal->cred_guard_mutex);
 | ||||||
| +out:
 | +out:
 | ||||||
| +	return retval;
 | +	return retval;
 | ||||||
| +}
 | +}
 | ||||||
| @ -1765,7 +1765,7 @@ index 23bde94..daed9e8 100644 | |||||||
| -	return copied;
 | -	return copied;
 | ||||||
| -}
 | -}
 | ||||||
| -
 | -
 | ||||||
|  static int ptrace_setoptions(struct task_struct *child, long data) |  static int ptrace_setoptions(struct task_struct *child, unsigned long data) | ||||||
|  { |  { | ||||||
|  	child->ptrace &= ~PT_TRACE_MASK; |  	child->ptrace &= ~PT_TRACE_MASK; | ||||||
| @@ -530,47 +677,6 @@ static int ptrace_resume(struct task_str
 | @@ -530,47 +677,6 @@ static int ptrace_resume(struct task_str
 | ||||||
| @ -1814,9 +1814,9 @@ index 23bde94..daed9e8 100644 | |||||||
| -#endif
 | -#endif
 | ||||||
| -
 | -
 | ||||||
|  int ptrace_request(struct task_struct *child, long request, |  int ptrace_request(struct task_struct *child, long request, | ||||||
|  		   long addr, long data) |  		   unsigned long addr, unsigned long data) | ||||||
|  { |  { | ||||||
| @@ -686,88 +792,7 @@ int ptrace_request(struct task_struct *c
 | @@ -686,91 +792,7 @@ int ptrace_request(struct task_struct *c
 | ||||||
|  	return ret; |  	return ret; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @ -1839,7 +1839,8 @@ index 23bde94..daed9e8 100644 | |||||||
| -#define arch_ptrace_attach(child)	do { } while (0)
 | -#define arch_ptrace_attach(child)	do { } while (0)
 | ||||||
| -#endif
 | -#endif
 | ||||||
| -
 | -
 | ||||||
| -SYSCALL_DEFINE4(ptrace, long, request, long, pid, long, addr, long, data)
 | -SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr,
 | ||||||
|  | -		unsigned long, data)
 | ||||||
| -{
 | -{
 | ||||||
| -	struct task_struct *child;
 | -	struct task_struct *child;
 | ||||||
| -	long ret;
 | -	long ret;
 | ||||||
| @ -1880,7 +1881,8 @@ index 23bde94..daed9e8 100644 | |||||||
| -	return ret;
 | -	return ret;
 | ||||||
| -}
 | -}
 | ||||||
| -
 | -
 | ||||||
| -int generic_ptrace_peekdata(struct task_struct *tsk, long addr, long data)
 | -int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr,
 | ||||||
|  | -			    unsigned long data)
 | ||||||
| -{
 | -{
 | ||||||
| -	unsigned long tmp;
 | -	unsigned long tmp;
 | ||||||
| -	int copied;
 | -	int copied;
 | ||||||
| @ -1891,7 +1893,8 @@ index 23bde94..daed9e8 100644 | |||||||
| -	return put_user(tmp, (unsigned long __user *)data);
 | -	return put_user(tmp, (unsigned long __user *)data);
 | ||||||
| -}
 | -}
 | ||||||
| -
 | -
 | ||||||
| -int generic_ptrace_pokedata(struct task_struct *tsk, long addr, long data)
 | -int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr,
 | ||||||
|  | -			    unsigned long data)
 | ||||||
| -{
 | -{
 | ||||||
| -	int copied;
 | -	int copied;
 | ||||||
| -
 | -
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user