NVidia glx stuff dies in sysarch(I386_SET_LDT, ...)
Julian Elischer
julian at elischer.org
Fri Aug 1 15:25:25 PDT 2003
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"
>
More information about the freebsd-current
mailing list