return to first page linux journal archive
keywordscontents

Listing 1

{
int fault = handle_mm_fault(tsk, vma, address, write);
if (fault < 0) goto out_of_memory;
if (!fault) goto do_sigbus;
}
...
do_sigbus:
   up(&mm->mmap_sem);
   /*
   * Send a sigbus, regardless of whether we
   * were in kernel or user mode.
   */
   tsk->thread.cr2 = address;
   tsk->thread.error_code = error_code;
   tsk->thread.trap_no = 14;
   force_sig(SIGBUS, tsk);