Date: Sun, 17 Apr 2011 01:19:15 +0300 From: Kostik Belousov <kostikbel@gmail.com> To: Oliver Pinter <oliver.pntr@gmail.com> Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-8@freebsd.org Subject: Re: svn commit: r218836 - in stable/8/sys: amd64/amd64 amd64/ia32 i386/i386 kern Message-ID: <20110416221915.GR48734@deviant.kiev.zoral.com.ua> In-Reply-To: <BANLkTimOC-KrWNyDttZ_-iz4S0FH73p43Q@mail.gmail.com> References: <201102190739.p1J7dFjO087910@svn.freebsd.org> <BANLkTimOC-KrWNyDttZ_-iz4S0FH73p43Q@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--EqVOK5mkaJAMmtSx
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On Sat, Apr 16, 2011 at 11:04:38PM +0200, Oliver Pinter wrote:
> MFC this for 7-STABLE?
I do not reject the proposal, but I am quite curious why ?
I do not have any machine running 7, so please test the patch below.
It compiled for me on amd64.
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
Merged /head/sys:r218327
Index: kern/kern_context.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- kern/kern_context.c (revision 220730)
+++ kern/kern_context.c (working copy)
@@ -71,6 +71,7 @@
PROC_LOCK(td->td_proc);
uc.uc_sigmask =3D td->td_sigmask;
PROC_UNLOCK(td->td_proc);
+ bzero(uc.__spare__, sizeof(uc.__spare__));
ret =3D copyout(&uc, uap->ucp, UC_COPY_SIZE);
}
return (ret);
@@ -109,6 +110,7 @@
ret =3D EINVAL;
else {
get_mcontext(td, &uc.uc_mcontext, GET_MC_CLEAR_RET);
+ bzero(uc.__spare__, sizeof(uc.__spare__));
PROC_LOCK(td->td_proc);
uc.uc_sigmask =3D td->td_sigmask;
PROC_UNLOCK(td->td_proc);
Index: i386/i386/machdep.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- i386/i386/machdep.c (revision 220730)
+++ i386/i386/machdep.c (working copy)
@@ -342,12 +342,14 @@
/* Build the argument list for the signal handler. */
sf.sf_signum =3D sig;
sf.sf_scp =3D (register_t)&fp->sf_siginfo.si_sc;
+ bzero(&sf.sf_siginfo, sizeof(sf.sf_siginfo));
if (SIGISMEMBER(psp->ps_siginfo, sig)) {
/* Signal handler installed with SA_SIGINFO. */
sf.sf_arg2 =3D (register_t)&fp->sf_siginfo;
sf.sf_siginfo.si_signo =3D sig;
sf.sf_siginfo.si_code =3D ksi->ksi_code;
sf.sf_ahu.sf_action =3D (__osiginfohandler_t *)catcher;
+ sf.sf_addr =3D 0;
} else {
/* Old FreeBSD-style arguments. */
sf.sf_arg2 =3D ksi->ksi_code;
@@ -461,6 +463,11 @@
sf.sf_uc.uc_mcontext.mc_onstack =3D (oonstack) ? 1 : 0;
sf.sf_uc.uc_mcontext.mc_gs =3D rgs();
bcopy(regs, &sf.sf_uc.uc_mcontext.mc_fs, sizeof(*regs));
+ bzero(sf.sf_uc.uc_mcontext.mc_fpregs,
+ sizeof(sf.sf_uc.uc_mcontext.mc_fpregs));
+ bzero(sf.sf_uc.uc_mcontext.__spare__,
+ sizeof(sf.sf_uc.uc_mcontext.__spare__));
+ bzero(sf.sf_uc.__spare__, sizeof(sf.sf_uc.__spare__));
=20
/* Allocate space for the signal handler context. */
if ((td->td_pflags & TDP_ALTSTACK) !=3D 0 && !oonstack &&
@@ -480,6 +487,7 @@
/* Build the argument list for the signal handler. */
sf.sf_signum =3D sig;
sf.sf_ucontext =3D (register_t)&sfp->sf_uc;
+ bzero(&sf.sf_si, sizeof(sf.sf_si));
if (SIGISMEMBER(psp->ps_siginfo, sig)) {
/* Signal handler installed with SA_SIGINFO. */
sf.sf_siginfo =3D (register_t)&sfp->sf_si;
@@ -596,6 +604,11 @@
sf.sf_uc.uc_mcontext.mc_len =3D sizeof(sf.sf_uc.uc_mcontext); /* magic */
get_fpcontext(td, &sf.sf_uc.uc_mcontext);
fpstate_drop(td);
+ bzero(sf.sf_uc.uc_mcontext.mc_spare1,
+ sizeof(sf.sf_uc.uc_mcontext.mc_spare1));
+ bzero(sf.sf_uc.uc_mcontext.mc_spare2,
+ sizeof(sf.sf_uc.uc_mcontext.mc_spare2));
+ bzero(sf.sf_uc.__spare__, sizeof(sf.sf_uc.__spare__));
=20
/* Allocate space for the signal handler context. */
if ((td->td_pflags & TDP_ALTSTACK) !=3D 0 && !oonstack &&
@@ -617,6 +630,7 @@
/* Build the argument list for the signal handler. */
sf.sf_signum =3D sig;
sf.sf_ucontext =3D (register_t)&sfp->sf_uc;
+ bzero(&sf.sf_si, sizeof(sf.sf_si));
if (SIGISMEMBER(psp->ps_siginfo, sig)) {
/* Signal handler installed with SA_SIGINFO. */
sf.sf_siginfo =3D (register_t)&sfp->sf_si;
@@ -2716,6 +2730,8 @@
mcp->mc_ss =3D tp->tf_ss;
mcp->mc_len =3D sizeof(*mcp);
get_fpcontext(td, mcp);
+ bzero(mcp->mc_spare1, sizeof(mcp->mc_spare1));
+ bzero(mcp->mc_spare2, sizeof(mcp->mc_spare2));
return (0);
}
=20
@@ -2763,6 +2779,7 @@
#ifndef DEV_NPX
mcp->mc_fpformat =3D _MC_FPFMT_NODEV;
mcp->mc_ownedfp =3D _MC_FPOWNED_NONE;
+ bzero(mcp->mc_fpstate, sizeof(mcp->mc_fpstate));
#else
union savefpu *addr;
=20
Property changes on: contrib/pf
___________________________________________________________________
Modified: svn:mergeinfo
Merged /head/sys/contrib/pf:r218327
Property changes on: contrib/dev/acpica
___________________________________________________________________
Modified: svn:mergeinfo
Merged /head/sys/contrib/dev/acpica:r218327
Property changes on: cddl/contrib/opensolaris
___________________________________________________________________
Modified: svn:mergeinfo
Merged /head/sys/cddl/contrib/opensolaris:r218327
Index: amd64/amd64/machdep.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- amd64/amd64/machdep.c (revision 220730)
+++ amd64/amd64/machdep.c (working copy)
@@ -306,6 +306,9 @@
sf.sf_uc.uc_mcontext.mc_len =3D sizeof(sf.sf_uc.uc_mcontext); /* magic */
get_fpcontext(td, &sf.sf_uc.uc_mcontext);
fpstate_drop(td);
+ bzero(sf.sf_uc.uc_mcontext.mc_spare,
+ sizeof(sf.sf_uc.uc_mcontext.mc_spare));
+ bzero(sf.sf_uc.__spare__, sizeof(sf.sf_uc.__spare__));
=20
/* Allocate space for the signal handler context. */
if ((td->td_pflags & TDP_ALTSTACK) !=3D 0 && !oonstack &&
@@ -327,6 +330,7 @@
/* Build the argument list for the signal handler. */
regs->tf_rdi =3D sig; /* arg 1 in %rdi */
regs->tf_rdx =3D (register_t)&sfp->sf_uc; /* arg 3 in %rdx */
+ bzero(&sf.sf_si, sizeof(sf.sf_si));
if (SIGISMEMBER(psp->ps_siginfo, sig)) {
/* Signal handler installed with SA_SIGINFO. */
regs->tf_rsi =3D (register_t)&sfp->sf_si; /* arg 2 in %rsi */
@@ -1653,6 +1657,7 @@
mcp->mc_ss =3D tp->tf_ss;
mcp->mc_len =3D sizeof(*mcp);
get_fpcontext(td, mcp);
+ bzero(mcp->mc_spare, sizeof(mcp->mc_spare));
return (0);
}
=20
Index: amd64/ia32/ia32_signal.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- amd64/ia32/ia32_signal.c (revision 220730)
+++ amd64/ia32/ia32_signal.c (working copy)
@@ -158,6 +158,8 @@
mcp->mc_ss =3D tp->tf_ss;
mcp->mc_len =3D sizeof(*mcp);
ia32_get_fpcontext(td, mcp);
+ bzero(mcp->mc_spare1, sizeof(mcp->mc_spare1));
+ bzero(mcp->mc_spare2, sizeof(mcp->mc_spare2));
return (0);
}
=20
@@ -226,6 +228,7 @@
PROC_LOCK(td->td_proc);
uc.uc_sigmask =3D td->td_sigmask;
PROC_UNLOCK(td->td_proc);
+ bzero(&uc.__spare__, sizeof(uc.__spare__));
ret =3D copyout(&uc, uap->ucp, UC_COPY_SIZE);
}
return (ret);
@@ -345,6 +348,11 @@
sf.sf_uc.uc_mcontext.mc_eflags =3D regs->tf_rflags;
sf.sf_uc.uc_mcontext.mc_esp =3D regs->tf_rsp;
sf.sf_uc.uc_mcontext.mc_ss =3D regs->tf_ss;
+ bzero(sf.sf_uc.uc_mcontext.mc_fpregs,
+ sizeof(sf.sf_uc.uc_mcontext.mc_fpregs));
+ bzero(sf.sf_uc.uc_mcontext.__spare__,
+ sizeof(sf.sf_uc.uc_mcontext.__spare__));
+ bzero(sf.sf_uc.__spare__, sizeof(sf.sf_uc.__spare__));
=20
/* Allocate space for the signal handler context. */
if ((td->td_pflags & TDP_ALTSTACK) !=3D 0 && !oonstack &&
@@ -362,6 +370,7 @@
/* Build the argument list for the signal handler. */
sf.sf_signum =3D sig;
sf.sf_ucontext =3D (register_t)&sfp->sf_uc;
+ bzero(&sf.sf_si, sizeof(sf.sf_si));
if (SIGISMEMBER(psp->ps_siginfo, sig)) {
/* Signal handler installed with SA_SIGINFO. */
sf.sf_siginfo =3D (u_int32_t)(uintptr_t)&sfp->sf_si;
@@ -463,6 +472,7 @@
sf.sf_uc.uc_mcontext.mc_len =3D sizeof(sf.sf_uc.uc_mcontext); /* magic */
ia32_get_fpcontext(td, &sf.sf_uc.uc_mcontext);
fpstate_drop(td);
+ bzero(sf.sf_uc.__spare__, sizeof(sf.sf_uc.__spare__));
=20
/* Allocate space for the signal handler context. */
if ((td->td_pflags & TDP_ALTSTACK) !=3D 0 && !oonstack &&
@@ -482,6 +492,7 @@
/* Build the argument list for the signal handler. */
sf.sf_signum =3D sig;
sf.sf_ucontext =3D (register_t)&sfp->sf_uc;
+ bzero(&sf.sf_si, sizeof(sf.sf_si));
if (SIGISMEMBER(psp->ps_siginfo, sig)) {
/* Signal handler installed with SA_SIGINFO. */
sf.sf_siginfo =3D (u_int32_t)(uintptr_t)&sfp->sf_si;
--EqVOK5mkaJAMmtSx
Content-Type: application/pgp-signature
Content-Disposition: inline
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (FreeBSD)
iEYEARECAAYFAk2qFeIACgkQC3+MBN1Mb4hY7wCfbGQLZTOA0/mn4vEdbP2Yxyq4
TrwAoKw2g0eiHNk27FBA4C8WdkR8+Eq4
=Ro4W
-----END PGP SIGNATURE-----
--EqVOK5mkaJAMmtSx--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110416221915.GR48734>
