Loading fs/cifs/file.c +8 −6 Original line number Original line Diff line number Diff line Loading @@ -1442,13 +1442,15 @@ ssize_t cifs_user_read(struct file *file, char __user *read_data, &bytes_read, &smb_read_data, &bytes_read, &smb_read_data, &buf_type); &buf_type); pSMBr = (struct smb_com_read_rsp *)smb_read_data; pSMBr = (struct smb_com_read_rsp *)smb_read_data; if (smb_read_data) { if (copy_to_user(current_offset, if (copy_to_user(current_offset, smb_read_data + 4 /* RFC1001 hdr */ smb_read_data + + le16_to_cpu(pSMBr->DataOffset), 4 /* RFC1001 length field */ + le16_to_cpu(pSMBr->DataOffset), bytes_read)) { bytes_read)) { rc = -EFAULT; rc = -EFAULT; } } if (smb_read_data) { if(buf_type == CIFS_SMALL_BUFFER) if(buf_type == CIFS_SMALL_BUFFER) cifs_small_buf_release(smb_read_data); cifs_small_buf_release(smb_read_data); else if(buf_type == CIFS_LARGE_BUFFER) else if(buf_type == CIFS_LARGE_BUFFER) Loading fs/exec.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -1403,7 +1403,7 @@ static void zap_threads (struct mm_struct *mm) do_each_thread(g,p) { do_each_thread(g,p) { if (mm == p->mm && p != tsk && if (mm == p->mm && p != tsk && p->ptrace && p->parent->mm == mm) { p->ptrace && p->parent->mm == mm) { __ptrace_unlink(p); __ptrace_detach(p, 0); } } } while_each_thread(g,p); } while_each_thread(g,p); write_unlock_irq(&tasklist_lock); write_unlock_irq(&tasklist_lock); Loading include/linux/netfilter_ipv4.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -79,7 +79,7 @@ enum nf_ip_hook_priorities { #ifdef __KERNEL__ #ifdef __KERNEL__ extern int ip_route_me_harder(struct sk_buff **pskb); extern int ip_route_me_harder(struct sk_buff **pskb); extern int ip_xfrm_me_harder(struct sk_buff **pskb); #endif /*__KERNEL__*/ #endif /*__KERNEL__*/ #endif /*__LINUX_IP_NETFILTER_H*/ #endif /*__LINUX_IP_NETFILTER_H*/ include/linux/ptrace.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -84,6 +84,7 @@ extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __us extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len); extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len); extern int ptrace_attach(struct task_struct *tsk); extern int ptrace_attach(struct task_struct *tsk); extern int ptrace_detach(struct task_struct *, unsigned int); extern int ptrace_detach(struct task_struct *, unsigned int); extern void __ptrace_detach(struct task_struct *, unsigned int); extern void ptrace_disable(struct task_struct *); extern void ptrace_disable(struct task_struct *); extern int ptrace_check_attach(struct task_struct *task, int kill); extern int ptrace_check_attach(struct task_struct *task, int kill); extern int ptrace_request(struct task_struct *child, long request, long addr, long data); extern int ptrace_request(struct task_struct *child, long request, long addr, long data); Loading kernel/fork.c +4 −5 Original line number Original line Diff line number Diff line Loading @@ -1123,8 +1123,8 @@ static task_t *copy_process(unsigned long clone_flags, p->real_parent = current; p->real_parent = current; p->parent = p->real_parent; p->parent = p->real_parent; if (clone_flags & CLONE_THREAD) { spin_lock(¤t->sighand->siglock); spin_lock(¤t->sighand->siglock); if (clone_flags & CLONE_THREAD) { /* /* * Important: if an exit-all has been started then * Important: if an exit-all has been started then * do not create this new thread - the whole thread * do not create this new thread - the whole thread Loading Loading @@ -1162,8 +1162,6 @@ static task_t *copy_process(unsigned long clone_flags, */ */ p->it_prof_expires = jiffies_to_cputime(1); p->it_prof_expires = jiffies_to_cputime(1); } } spin_unlock(¤t->sighand->siglock); } } /* /* Loading @@ -1175,8 +1173,6 @@ static task_t *copy_process(unsigned long clone_flags, if (unlikely(p->ptrace & PT_PTRACED)) if (unlikely(p->ptrace & PT_PTRACED)) __ptrace_link(p, current->parent); __ptrace_link(p, current->parent); attach_pid(p, PIDTYPE_PID, p->pid); attach_pid(p, PIDTYPE_TGID, p->tgid); if (thread_group_leader(p)) { if (thread_group_leader(p)) { p->signal->tty = current->signal->tty; p->signal->tty = current->signal->tty; p->signal->pgrp = process_group(current); p->signal->pgrp = process_group(current); Loading @@ -1186,9 +1182,12 @@ static task_t *copy_process(unsigned long clone_flags, if (p->pid) if (p->pid) __get_cpu_var(process_counts)++; __get_cpu_var(process_counts)++; } } attach_pid(p, PIDTYPE_TGID, p->tgid); attach_pid(p, PIDTYPE_PID, p->pid); nr_threads++; nr_threads++; total_forks++; total_forks++; spin_unlock(¤t->sighand->siglock); write_unlock_irq(&tasklist_lock); write_unlock_irq(&tasklist_lock); proc_fork_connector(p); proc_fork_connector(p); return p; return p; Loading Loading
fs/cifs/file.c +8 −6 Original line number Original line Diff line number Diff line Loading @@ -1442,13 +1442,15 @@ ssize_t cifs_user_read(struct file *file, char __user *read_data, &bytes_read, &smb_read_data, &bytes_read, &smb_read_data, &buf_type); &buf_type); pSMBr = (struct smb_com_read_rsp *)smb_read_data; pSMBr = (struct smb_com_read_rsp *)smb_read_data; if (smb_read_data) { if (copy_to_user(current_offset, if (copy_to_user(current_offset, smb_read_data + 4 /* RFC1001 hdr */ smb_read_data + + le16_to_cpu(pSMBr->DataOffset), 4 /* RFC1001 length field */ + le16_to_cpu(pSMBr->DataOffset), bytes_read)) { bytes_read)) { rc = -EFAULT; rc = -EFAULT; } } if (smb_read_data) { if(buf_type == CIFS_SMALL_BUFFER) if(buf_type == CIFS_SMALL_BUFFER) cifs_small_buf_release(smb_read_data); cifs_small_buf_release(smb_read_data); else if(buf_type == CIFS_LARGE_BUFFER) else if(buf_type == CIFS_LARGE_BUFFER) Loading
fs/exec.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -1403,7 +1403,7 @@ static void zap_threads (struct mm_struct *mm) do_each_thread(g,p) { do_each_thread(g,p) { if (mm == p->mm && p != tsk && if (mm == p->mm && p != tsk && p->ptrace && p->parent->mm == mm) { p->ptrace && p->parent->mm == mm) { __ptrace_unlink(p); __ptrace_detach(p, 0); } } } while_each_thread(g,p); } while_each_thread(g,p); write_unlock_irq(&tasklist_lock); write_unlock_irq(&tasklist_lock); Loading
include/linux/netfilter_ipv4.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -79,7 +79,7 @@ enum nf_ip_hook_priorities { #ifdef __KERNEL__ #ifdef __KERNEL__ extern int ip_route_me_harder(struct sk_buff **pskb); extern int ip_route_me_harder(struct sk_buff **pskb); extern int ip_xfrm_me_harder(struct sk_buff **pskb); #endif /*__KERNEL__*/ #endif /*__KERNEL__*/ #endif /*__LINUX_IP_NETFILTER_H*/ #endif /*__LINUX_IP_NETFILTER_H*/
include/linux/ptrace.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -84,6 +84,7 @@ extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __us extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len); extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len); extern int ptrace_attach(struct task_struct *tsk); extern int ptrace_attach(struct task_struct *tsk); extern int ptrace_detach(struct task_struct *, unsigned int); extern int ptrace_detach(struct task_struct *, unsigned int); extern void __ptrace_detach(struct task_struct *, unsigned int); extern void ptrace_disable(struct task_struct *); extern void ptrace_disable(struct task_struct *); extern int ptrace_check_attach(struct task_struct *task, int kill); extern int ptrace_check_attach(struct task_struct *task, int kill); extern int ptrace_request(struct task_struct *child, long request, long addr, long data); extern int ptrace_request(struct task_struct *child, long request, long addr, long data); Loading
kernel/fork.c +4 −5 Original line number Original line Diff line number Diff line Loading @@ -1123,8 +1123,8 @@ static task_t *copy_process(unsigned long clone_flags, p->real_parent = current; p->real_parent = current; p->parent = p->real_parent; p->parent = p->real_parent; if (clone_flags & CLONE_THREAD) { spin_lock(¤t->sighand->siglock); spin_lock(¤t->sighand->siglock); if (clone_flags & CLONE_THREAD) { /* /* * Important: if an exit-all has been started then * Important: if an exit-all has been started then * do not create this new thread - the whole thread * do not create this new thread - the whole thread Loading Loading @@ -1162,8 +1162,6 @@ static task_t *copy_process(unsigned long clone_flags, */ */ p->it_prof_expires = jiffies_to_cputime(1); p->it_prof_expires = jiffies_to_cputime(1); } } spin_unlock(¤t->sighand->siglock); } } /* /* Loading @@ -1175,8 +1173,6 @@ static task_t *copy_process(unsigned long clone_flags, if (unlikely(p->ptrace & PT_PTRACED)) if (unlikely(p->ptrace & PT_PTRACED)) __ptrace_link(p, current->parent); __ptrace_link(p, current->parent); attach_pid(p, PIDTYPE_PID, p->pid); attach_pid(p, PIDTYPE_TGID, p->tgid); if (thread_group_leader(p)) { if (thread_group_leader(p)) { p->signal->tty = current->signal->tty; p->signal->tty = current->signal->tty; p->signal->pgrp = process_group(current); p->signal->pgrp = process_group(current); Loading @@ -1186,9 +1182,12 @@ static task_t *copy_process(unsigned long clone_flags, if (p->pid) if (p->pid) __get_cpu_var(process_counts)++; __get_cpu_var(process_counts)++; } } attach_pid(p, PIDTYPE_TGID, p->tgid); attach_pid(p, PIDTYPE_PID, p->pid); nr_threads++; nr_threads++; total_forks++; total_forks++; spin_unlock(¤t->sighand->siglock); write_unlock_irq(&tasklist_lock); write_unlock_irq(&tasklist_lock); proc_fork_connector(p); proc_fork_connector(p); return p; return p; Loading