Hi all, as I've already described in other mails, I'm hijacking the page fault handler function. All works well but there's a little problem. To show the problem, I post the code of my handler with I replace the original handler. A preliminary statement: mtpmc_old_handler contains the address of the original handler 1. static asmlinkage void mtpmc_handler(struct pt_regs * regs,long error_code) 2. { 3. unsigned long address; 4. struct task_struct *task; 5. struct mm_struct *mm; 6. pid_t pid = current->pid; 7. int hijack = 0; 8. /* gets the address */ 9. __asm__("movl %%cr2,%0":"=r" (address)); 10. if (the error is a writing error on one of the pages that we've setted as not writable) 11. { 12. printk(KERN_DEBUG "page fault handling\n"); 13. send_sig(SIGSTOP, current, 1); 14. mtpmc_restore_page_writable(current->mm, address); 15. mtpmc_restore_page_not_writable(current->mm, address); 16. hijack = 1; 17. } 18. if (hijack != 1) 19. (*mtpmc_old_int_handler)(regs,error_code); 20. return; 21. } Note the line 14 and 15. These lines, respectively, make the page at the given address first as writable and then as not writable. The result should be the same by deleting them and let the page that cause page fault remain not writable. But if I delete lines 14 and 15,, in the moment of a page fault the system blocks. If I don't delete them, instead, all works very well. I don't understand why it happens. Vincenzo Mallozzi, ___________________________________ Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB http://mail.yahoo.it -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/