Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 2 Aug 2003 09:34:04 -0700 (PDT)
From:      Julian Elischer <julian@elischer.org>
To:        David Xu <davidxu@freebsd.org>
Cc:        cvs-all@freebsd.org
Subject:   Re: cvs commit: src/sys/i386/i386 sys_machdep.c
Message-ID:  <Pine.BSF.4.21.0308020929470.49760-100000@InterJet.elischer.org>
In-Reply-To: <002e01c358ce$6df2ecd0$0701a8c0@tiger>

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


On Sat, 2 Aug 2003, David Xu wrote:

> 
> ----- Original Message ----- 
> 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
> > 
> >   FreeBSD src repository
> > 
> >   Modified files:
> >     sys/i386/i386        sys_machdep.c 
> >   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).
> >   
> >   Reviewed by:    deischen@
> >   
> >   Revision  Changes    Path
> >   1.87      +21 -4     src/sys/i386/i386/sys_machdep.c
> > 
> 
> The code is incorrect:
> 
> dp = &((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 = NLDT + 1; i < pldt->ldt_len; ++i) {
>     if (dp->sd.sd_type == SDT_SYSNULL)
>       	break;
>     dp++;
> 		}
> 
> dp is set to start from NLDT not NLDT+1, so the 'i' and 'dp' is
> out of synchronous.

oops
If you have not already fixed it, I will after sending this..
(that's what you get from last-minute tweeks to a patch)

> 
> 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

because libthr uses it so it will always complain.
Mike has said he can not fix it for a while,
It sounds from his description that it is more work for libthr
to use the dynamic allocator.


> 
> --
> David Xu
> 
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0308020929470.49760-100000>