Gentoo Archives: gentoo-commits

From: "Naohiro Aota (naota)" <naota@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in sys-freebsd/freebsd-sources/files: freebsd-sources-9.1-ktrace.patch freebsd-sources-9.1-exec.patch
Date: Thu, 05 Jun 2014 02:33:50
Message-Id: 20140605023345.8F95E2004F@flycatcher.gentoo.org
1 naota 14/06/05 02:33:45
2
3 Added: freebsd-sources-9.1-ktrace.patch
4 freebsd-sources-9.1-exec.patch
5 Log:
6 Apply security patches #512376 #512374
7
8 (Portage version: 2.2.10/cvs/Linux x86_64, signed Manifest commit with key F8551514)
9
10 Revision Changes Path
11 1.1 sys-freebsd/freebsd-sources/files/freebsd-sources-9.1-ktrace.patch
12
13 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-freebsd/freebsd-sources/files/freebsd-sources-9.1-ktrace.patch?rev=1.1&view=markup
14 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-freebsd/freebsd-sources/files/freebsd-sources-9.1-ktrace.patch?rev=1.1&content-type=text/plain
15
16 Index: freebsd-sources-9.1-ktrace.patch
17 ===================================================================
18 Index: sys/kern/kern_ktrace.c
19 ===================================================================
20 --- sys/kern/kern_ktrace.c (revision 266771)
21 +++ sys/kern/kern_ktrace.c (working copy)
22 @@ -119,6 +119,7 @@ static int data_lengths[] = {
23 0, /* KTR_SYSCTL */
24 sizeof(struct ktr_proc_ctor), /* KTR_PROCCTOR */
25 0, /* KTR_PROCDTOR */
26 + 0, /* unused */
27 sizeof(struct ktr_fault), /* KTR_FAULT */
28 sizeof(struct ktr_faultend), /* KTR_FAULTEND */
29 };
30
31
32
33 1.1 sys-freebsd/freebsd-sources/files/freebsd-sources-9.1-exec.patch
34
35 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-freebsd/freebsd-sources/files/freebsd-sources-9.1-exec.patch?rev=1.1&view=markup
36 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-freebsd/freebsd-sources/files/freebsd-sources-9.1-exec.patch?rev=1.1&content-type=text/plain
37
38 Index: freebsd-sources-9.1-exec.patch
39 ===================================================================
40 Index: sys/kern/kern_exec.c
41 ===================================================================
42 --- sys/kern/kern_exec.c (revision 266979)
43 +++ sys/kern/kern_exec.c (working copy)
44 @@ -280,6 +280,7 @@ kern_execve(td, args, mac_p)
45 struct mac *mac_p;
46 {
47 struct proc *p = td->td_proc;
48 + struct vmspace *oldvmspace;
49 int error;
50
51 AUDIT_ARG_ARGV(args->begin_argv, args->argc,
52 @@ -296,6 +297,8 @@ kern_execve(td, args, mac_p)
53 PROC_UNLOCK(p);
54 }
55
56 + KASSERT((td->td_pflags & TDP_EXECVMSPC) == 0, ("nested execve"));
57 + oldvmspace = td->td_proc->p_vmspace;
58 error = do_execve(td, args, mac_p);
59
60 if (p->p_flag & P_HADTHREADS) {
61 @@ -310,6 +313,12 @@ kern_execve(td, args, mac_p)
62 thread_single_end();
63 PROC_UNLOCK(p);
64 }
65 + if ((td->td_pflags & TDP_EXECVMSPC) != 0) {
66 + KASSERT(td->td_proc->p_vmspace != oldvmspace,
67 + ("oldvmspace still used"));
68 + vmspace_free(oldvmspace);
69 + td->td_pflags &= ~TDP_EXECVMSPC;
70 + }
71
72 return (error);
73 }
74 Index: sys/sys/proc.h
75 ===================================================================
76 --- sys/sys/proc.h (revision 266979)
77 +++ sys/sys/proc.h (working copy)
78 @@ -968,4 +968,5 @@ curthread_pflags_restore(int save)
79
80 #endif /* _KERNEL */
81
82 +#define TDP_EXECVMSPC 0x40000000 /* Execve destroyed old vmspace */
83 #endif /* !_SYS_PROC_H_ */
84 Index: sys/vm/vm_map.c
85 ===================================================================
86 --- sys/vm/vm_map.c (revision 266979)
87 +++ sys/vm/vm_map.c (working copy)
88 @@ -3631,6 +3631,8 @@ vmspace_exec(struct proc *p, vm_offset_t minuser,
89 struct vmspace *oldvmspace = p->p_vmspace;
90 struct vmspace *newvmspace;
91
92 + KASSERT((curthread->td_pflags & TDP_EXECVMSPC) == 0,
93 + ("vmspace_exec recursed"));
94 newvmspace = vmspace_alloc(minuser, maxuser);
95 if (newvmspace == NULL)
96 return (ENOMEM);
97 @@ -3647,7 +3649,7 @@ vmspace_exec(struct proc *p, vm_offset_t minuser,
98 PROC_VMSPACE_UNLOCK(p);
99 if (p == curthread->td_proc)
100 pmap_activate(curthread);
101 - vmspace_free(oldvmspace);
102 + curthread->td_pflags |= TDP_EXECVMSPC;
103 return (0);
104 }