Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 2 Aug 2003 16:16:50 +0800
From:      "David Xu" <davidxu@freebsd.org>
To:        "Julian Elischer" <julian@freebsd.org>, <src-committers@freebsd.org>, <cvs-src@freebsd.org>, <cvs-all@freebsd.org>
Subject:   Re: cvs commit: src/sys/i386/i386 sys_machdep.c
Message-ID:  <002e01c358ce$6df2ecd0$0701a8c0@tiger>
References:  <200308020652.h726qaUs066611@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

----- Original Message -----=20
From: "Julian Elischer" <julian@FreeBSD.org>
To: <src-committers@FreeBSD.org>; <cvs-src@FreeBSD.org>; =
<cvs-all@FreeBSD.org>
Sent: Saturday, August 02, 2003 2:52 PM
Subject: cvs commit: src/sys/i386/i386 sys_machdep.c


> julian      2003/08/01 23:52:36 PDT
>=20
>   FreeBSD src repository
>=20
>   Modified files:
>     sys/i386/i386        sys_machdep.c=20
>   Log:
>   Relax the check for bad LDTE allocations. It turns out that
>   there is code that blindly allocates LDTEs starting at slot 6
>   and I quess it doesn't really matter to us if they overwrite the =
BSDI
>   syscall slot, since it isn't a BSDI binary. Also add some code to =
help track
>   down other such users (commented out for now).
>  =20
>   Reviewed by:    deischen@
>  =20
>   Revision  Changes    Path
>   1.87      +21 -4     src/sys/i386/i386/sys_machdep.c
>=20

The code is incorrect:

dp =3D &((union descriptor *)(pldt->ldt_base))[NLDT];
		/*
 * start scanning a bit up to leave room for NVidia and
 * Wine, which still user the "Blat" method of allocation.
 */
		for (i =3D NLDT + 1; i < pldt->ldt_len; ++i) {
    if (dp->sd.sd_type =3D=3D SDT_SYSNULL)
      	break;
    dp++;
		}

dp is set to start from NLDT not NLDT+1, so the 'i' and 'dp' is
out of synchronous.

And why is complaint included in DEBUG section ?
    #ifdef	DEBUG
    		/* complain a for a while if using old methods */
    		if (ldt_warnings++ < NUM_LDT_WARNINGS) {
    			printf("Warning: pid %d used static ldt allocation.\n",
    			    td->td_proc->p_pid);
    			printf("See the i386_set_ldt man page for more info\n");
    		}
    #endif

--
David Xu



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?002e01c358ce$6df2ecd0$0701a8c0>