Re: All pages belonging to a process

From: Jiri Kosina
Date: Tue Aug 25 2009 - 08:44:37 EST


On Tue, 25 Aug 2009, Anupama Chandwani wrote:

>       /* For all vma-s of a process */
>       for (vma = task->mm->mmap; vma!=NULL; vma = vma->next)

you mean vma->vm_next?

>       {
>                pgd = pgd_offset(mm, address);
>                if (!pgd_present(*pgd))
>                     continue;
>
>                pud = pud_offset(pgd, address);
>                if (!pud_present(*pud))
>                     continue;
>
>                pmd = pmd_offset(pud, address);
>                if (!pmd_present(*pmd))
>                     continue;
>
>               pte = pte_offset_map_lock (task->mm->vm_mm, pmd, address, &ptl);
>
>               print pte_pfn(*pte) and other debug info;
>
>               pte_unmap_unlock(pte, ptl);
>       }
> }
>
> The code hangs. I do not get anything in dmesg.

Do you have mmap_sem locked?

--
Jiri Kosina
SUSE Labs