ming lei wrote: > Dan, > > No one intents to make memory corruption in kernel > space but it happens sometimes. > > Say I have a global var in my kernel module which > called test-mod, it picks up a physical page allocated > by some code with kmalloc and later kfreed(suppose > when it does, the whole page gets freed). But then > this code forgets a pointer(which maped to this > physical page) already freed and modifies the pointer, > the write gets thru since that virt address's PTE > still valid and points to the physical page currently > used by test-mod. So the memory corruption happens. > > Maybe I miss something in the linux kernel code that > prevents this double PTE thing. > > Ming >
If you want to guard against stuff like this you have some options... 1) Run different services on the same cpu on a a hypervisor like Xen. 2) Run most of the module's code in user space, and keep kernel space code to a minimum. 3) Use QNX. Regards Pantelis