opet syscally
Dan Lukes
dan at obluda.cz
Fri May 7 02:59:23 CEST 2004
Divacky Roman wrote:
>>Jedna se mi o to, ze bych chtel ve svem modulu napichnout vsechny
>>syscally, abych mohl sledovat jak je procesy volaji. Nechal jsem se trochu
>>inspirovat systemem CerbNG (http://cerber.sourceforge.net/)
>>
>>Nejdrive si ulozim vsechny stavajici handlery syscallu a nasmeruji je na
>>vlastni obsluhu:
>>Vsechno funguje krasne az do chvile, kdy se pokusim modul odstranit - pri
>>tom nastavuji puvodni obsluhy:
>>a system spadne.
>>- proc system spadne prave pri unloadu modulu
Muj tip je, ze behem provadeni nekterych syscallu muze dojit ke
kontext-switchi (typicky wait, kdyz podminka neni splnena, zpuzobi, z
eproces ceka a mezitim probihaji procesy jine). Pokud v teto chvili
dojde k odloadovani modulu, tak sice dojde k "naprave" vsech
syscall-pointeru, ale nedojde k uprave zasobniku podobne zastavenych
procesu. Presto ale dojde k uvolneni pameti s vasim kodem.
Takze - proces, ktery cekal na "wait" skonci - a protoze do kodu "wait"
se nedostal primo, ale pres vas kod, tak se pokusi, pri navratu, skocit
na prislusne pametove misto - to ale uz neexistuje (prinejemensim ne se
smysluplnym obsahem). A v tomto okamziku dojde k padu.
Pokud je tato teorie spravna, pak si budete muset delat pro kazdy
syscal "carky" za vstup (a mazat je pri vystupu), pricemz odstraneni
"presnerovani" pro danny syscall neni mozne, pokud je pocet carek
nenulovy (a celkovy unload modulu neni mozny, pokud je jedinny syscall
presmerovany).
Podotykam, ze je to ciste teoreticky vykonstruovana teorie - takze si
to musite skutecne vyzkouset.
Dan
More information about the Users-l
mailing list