DECLARE_BITMAP(nodes, MAX_NUMNODES); get_zonemask(pol, nodes); err = copy_nodes_to_user(nmask, maxnode, nodes, sizeof(nodes)); 
nodemask_t nodes; get_zonemask(pol, &nodes); err = copy_nodes_to_user(nmask, maxnode, &nodes); 
asmlinkage long sys_get_mempolicy(int __user *policy,				  unsigned long __user *nmask,				  unsigned long maxnode,				  unsigned long addr, unsigned long flags){	int err, pval;	struct mm_struct *mm = current->mm;	struct vm_area_struct *vma = NULL;	struct mempolicy *pol = current->mempolicy;	if (flags & ~(unsigned long)(MPOL_F_NODE|MPOL_F_ADDR))		return -EINVAL;	if (nmask != NULL && maxnode < MAX_NUMNODES)		return -EINVAL;	if (flags & MPOL_F_ADDR) {		down_read(&mm->mmap_sem);		vma = find_vma_intersection(mm, addr, addr+1);		if (!vma) {			up_read(&mm->mmap_sem);			return -EFAULT;		}		if (vma->vm_ops && vma->vm_ops->get_policy)			pol = vma->vm_ops->get_policy(vma, addr);		else			pol = vma->vm_policy;	} else if (addr)		return -EINVAL;	if (!pol)		pol = &default_policy;	if (flags & MPOL_F_NODE) {		if (flags & MPOL_F_ADDR) {			err = lookup_node(mm, addr);			if (err < 0)				goto out;			pval = err;		} else if (pol == current->mempolicy &&				pol->policy == MPOL_INTERLEAVE) {			pval = current->il_next;		} else {			err = -EINVAL;			goto out;		}	} else		pval = pol->policy;	if (vma) {		up_read(&current->mm->mmap_sem);		vma = NULL;	}	if (policy && put_user(pval, policy))		return -EFAULT;	err = 0;	if (nmask) {		DECLARE_BITMAP(nodes, MAX_NUMNODES);		get_zonemask(pol, nodes);		err = copy_nodes_to_user(nmask, maxnode, nodes, sizeof(nodes));	} out:	if (vma)		up_read(&current->mm->mmap_sem);	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/dfcd3c0dc426bb75770c34b40e14f2da8845ea62/mempolicy.c/buggy/mm/mempolicy.c