On Mon, Aug 08, 2005 at 05:14:45PM +0300, Pekka J Enberg wrote: if (!dumping) down_read(&mm->mmap_sem); > >+ > >+ for (vma = find_vma(mm, start); vma; vma = vma->vm_next) { > >+ if (end <= vma->vm_start) > >+ break; > >+ if (vma->vm_file && > >+ vma->vm_file->f_dentry->d_inode->i_sb == sb) { > >+ num_gh++; > >+ } > >+ } > >+ > >+ ghs = kmalloc((num_gh + 1) * sizeof(struct gfs2_holder), > >+ GFP_KERNEL); > >+ if (!ghs) { > >+ if (!dumping) > >+ up_read(&mm->mmap_sem); > >+ return -ENOMEM; > >+ } > >+ > >+ for (vma = find_vma(mm, start); vma; vma = vma->vm_next) { > > Sorry if this is an obvious question but what prevents another thread from > doing mmap() before we do the second walk and messing up num_gh? mm->mmap_sem ? -- Linux-cluster@xxxxxxxxxx http://www.redhat.com/mailman/listinfo/linux-cluster