例のBSD本にnull(address 0)の読み書きが禁止されている為に、nullポインタにアクセスするとSEGVが起こると書いて有りました。確かにそうですね。アマノジャクぶりを発揮してこんなのを試してみました。
int main(void)
{
void *p = (void*)0;
int r = mprotect(p, 4, PROT_READ | PROT_WRITE);
assert(r >= 0);
}
結果はerrno == ENOMEMで失敗。カーネル側で弾かれているようです。vm_areaが見付からないのかな。