[SOS]GDT & Stack Ring0

Romain LABBE labbe.romain at wanadoo.fr
Lun 14 Nov 19:53:10 CET 2005


Salut Edouard,

Bon je vais essayer de te repondre, tu connais mon niveau, et donc j'ai
pas besoin de précisier de prendre mes info avec prudence, j'espere que
quelqu'un corrigera.

En fait dans SOS, il n'y as pas de segment de pile de déclaré,
apparament cela est optionnel dans la GDT du x86. Je me suis en fait
posé la meme question que toi, et j'ai une bribe de reponce depuis pas
longtemps apres avoir un peu avancé dans les articles SOS.

-Au debut, au chargement SOS utilise comme tous le monde une pile
temporaire, je crois que celle si est parametrée dans le .lds dans la
.rdata ou un truc comme ca, enfin je pige pas bien ou est la 1er pile si
c'est celle de grub ou une autre mais a la limite c'est pas le probleme.

-Ensuite le noyau c'est en fait un enssemble de threads noyau, et donc
chaque threads a son contexte et donc sa pile.

-Par la suite avec les threads utilisateurs c'est encore pire, le tread
à 2 piles, (1 normale et une pour les SysCall's)

-Dans l'article 6 ou 7 SOS possede un systeme de stack poisonning
(franchement j'en sais pas plus pour le moment la dessus) qui apparament
permet de detecter les débordements de pile. 
Sur Koalys, je crois, dans le switch on contrôle les limites de la pile
avant de lancer le contexte qui arrive.


Bref, avec un nombre de pile indéterminés, et d'autre mecanisme de
contrôle on se passe du segment de pile, cela doit rajouter un truc en
plus à sauvgarder dans le contexte et à modifier dans la gdt à chaque
changement de contexte et durant les syscall, je sais pas si c'est
vraiement rentable...
Surtout qu'apparament il existe d'autres mecanismes de contrôle de la
pile...
(Peut etre la gestion de ce Stack segment rendra encore plus fiable les
piles !)

Enfin j'en sais rien... C'est l'idée que je m'en fait si ca peut
t'aider...


A++


Romain



Message d'origine d'Edouard:
-----------------------------
Salut à tous !
Je vais peut surement poser une question triviale, mais en regardant la
GDT d'SOS je ne m'étais jamais rendu compte qu'il n'yavait pas de
descripteur dédié à la pile, mais qu'on donnait à SS le même selecteur
que celui des données. N'y a t il pas de ce fait un risque d'écrasement
de données ? De plus, sous Intel la pile possède en général un segment
avec une caractéristique particulière dans son descripteur non ?
(Address Expand Down positionné dans le descripteur de segment, ou
quelque chose comme ça je ne me rappelle plus trop...) Enfin voila,
c'est quelques questions banales que je me posais ! :D Merci.




Plus d'informations sur la liste de diffusion Sos