Hi,
    I happen to find this code snippet in the kernel source :
   
    struct mm_struct *mm=current->mm;

    /* some other code */

    if(mm){ /*<==Why is this here? */
        /*read the contents by locking*/
    }

The if  checks whether the mm_struct of the current process is NULL or not. That means the mm_struct of a process can become NULL. How can that happen?