>So my question is: why did this ever work? My theory is that the
>process' page tables are still in the MMU when the driver is called, >so
>the virtual address space is technically still valid, even if the kernel
>won't admit it. Am I right? If so, are the page tables not flushed
>because it would affect performance? Is there a way I can manual >flush
>the page tables in my driver in order to find all the places in my >code
>where user virtual addresses are used?
user space virtual address are always valid even in kernel e.g sys_read( char * _user buff, pos, count); requires to access user buffer to perform read.if page tables r flushed then all info about valid pages will be lost.and again accessin those pages will cause lots of page faults.
Yahoo! India Matrimony: Find your life partner online.