Re: NVidia glx stuff dies in sysarch(I386_SET_LDT, ...)

From: Julian Elischer <julian_at_elischer.org>
Date: Fri, 1 Aug 2003 15:25:18 -0700 (PDT)
On Fri, 1 Aug 2003, Julian Elischer wrote:

> 
> 
> On Fri, 1 Aug 2003, Daniel Eischen wrote:
> 
> > On Fri, 1 Aug 2003, Thorsten Greiner wrote:
> > 
> > > * Thorsten Greiner <thorsten.greiner_at_web.de> [2003-08-01 23:47]:
> > > > I will test wether the problem still occurs with version 1.84 of
> > > > sys_machdep.c and let you know.
> > > 
> > > Yup, reverting to 1.84 unbreaks this for me. Looking at the changes
> > > made it appears to me that the check
> > > 
> > >         if (uap->start < NLDT || uap->num <= 0)
> > >             return (EINVAL);i
> > > 
> > > causes this, because NLDT is 6 and the NVidia stuff passes
> > > uap->start == 6 to this call.
> > 
> > It can't use 6.  FreeBSD reserves 0-16 for its own use.
> > 
> > I think the bug was in the old code allowing this to
> > happen...
> 
> Looking at segments.h.....
> /*
>  * Entries in the Local Descriptor Table (LDT)
>  */
> #define LSYS5CALLS_SEL  0       /* forced by intel BCS */
> #define LSYS5SIGR_SEL   1
> #define L43BSDCALLS_SEL 2       /* notyet */
> #define LUCODE_SEL      3
> #define LSOL26CALLS_SEL 4       /* Solaris >= 2.6 system call gate */
> #define LUDATA_SEL      5
> /* separate stack, es,fs,gs sels ? */
> /* #define      LPOSIXCALLS_SEL 5*/     /* notyet */
> #define LBSDICALLS_SEL  16      /* BSDI system call gate */
> #define NLDT            (LBSDICALLS_SEL + 1)
> 
> it looks like NLDT should be save between from 6 to 15
> (though I wish they'd chosen a different value)
> 
> so we could add:

I might add that this si slightly bogus as you an't have aproces being
a BSDI binary and a SOLARIS binary and a BCS binary all at  the same
time, and we don't set any values on most (any?) of these
segments for FreeBSD binaries..



> 
> if ((uap->start == LBSDICALLS_SEL) || (uap->start <= LUDATA_SEL)) ||
>     (uap->num <= 0))
> ...
> 
> What do you think?
> 
> > 
> > -- 
> > Dan Eischen
> > 
> > 
> 
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
> 
Received on Fri Aug 01 2003 - 13:25:24 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:17 UTC