X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fproc%2Ftask_nommu.c;h=275dedc91337032ba59d4db108e05ae6c445e3bd;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=126db9797262cfd1ff96f48452a96091fbde1ac5;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c index 126db9797..275dedc91 100644 --- a/fs/proc/task_nommu.c +++ b/fs/proc/task_nommu.c @@ -68,11 +68,12 @@ unsigned long task_vsize(struct mm_struct *mm) struct mm_tblock_struct *tbp; unsigned long vsize = 0; + down_read(&mm->mmap_sem); for (tbp = &mm->context.tblock; tbp; tbp = tbp->next) { if (tbp->rblock) vsize += kobjsize(tbp->rblock->kblock); } - + up_read(&mm->mmap_sem); return vsize; } @@ -81,7 +82,8 @@ int task_statm(struct mm_struct *mm, int *shared, int *text, { struct mm_tblock_struct *tbp; int size = kobjsize(mm); - + + down_read(&mm->mmap_sem); for (tbp = &mm->context.tblock; tbp; tbp = tbp->next) { if (tbp->next) size += kobjsize(tbp->next); @@ -93,7 +95,7 @@ int task_statm(struct mm_struct *mm, int *shared, int *text, size += (*text = mm->end_code - mm->start_code); size += (*data = mm->start_stack - mm->start_data); - + up_read(&mm->mmap_sem); *resident = size; return size; }