Subject: Re: double kernel page table entry for the same physical page?!

From: Pantelis Antoniou <[email-masked]>
Date: Thu, 14 Jul 2005 10:15:24 +0300

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