It is cleaner to use the uffd_info struct.
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
struct vm_uffd_ops {
int (*copy)(struct uffd_info *info);
- int (*zeropage)(struct vm_area_struct *dst_vma, unsigned long dst_addr);
+ int (*zeropage)(struct uffd_info *info);
int (*cont)(struct vm_area_struct *dst_vma, unsigned long dst_addr,
bool wp, unsigned long increment);
int (*poison)(struct vm_area_struct *dst_vma,
unsigned long increment);
int mfill_atomic_pte_copy(struct uffd_info *info);
-int mfill_atomic_pte_zeropage(struct vm_area_struct *dst_vma,
- unsigned long dst_addr);
+int mfill_atomic_pte_zeropage(struct uffd_info *info);
static inline bool vma_can_userfault(struct vm_area_struct *vma,
vm_flags_t vm_flags,
return ret;
}
-static int shmem_mfill_atomic_pte_zeropage(struct vm_area_struct *dst_vma,
- unsigned long dst_addr)
+static int shmem_mfill_atomic_pte_zeropage(struct uffd_info *u_info)
{
+ struct vm_area_struct *dst_vma = u_info->dst_vma;
+ unsigned long dst_addr = u_info->dst_addr;
struct inode *inode = file_inode(dst_vma->vm_file);
struct shmem_inode_info *info = SHMEM_I(inode);
gfp_t gfp = mapping_gfp_mask(inode->i_mapping);
return ret;
}
-int mfill_atomic_pte_zeropage(struct vm_area_struct *dst_vma,
- unsigned long dst_addr)
+int mfill_atomic_pte_zeropage(struct uffd_info *info)
{
pte_t _dst_pte, *dst_pte;
pmd_t *dst_pmd;
spinlock_t *ptl;
+ struct vm_area_struct *dst_vma = info->dst_vma;
+ unsigned long dst_addr = info->dst_addr;
int ret;
ret = uffd_get_dst_pmd(dst_vma, dst_addr, &dst_pmd);
* the radix tree.
*/
} else {
- err = info.uffd_ops->zeropage(dst_vma, info.dst_addr);
+ err = info.uffd_ops->zeropage(&info);
}
cond_resched();