On 06/12/2018 07:39 AM, Kirill A. Shutemov wrote: > +bool vma_is_encrypted(struct vm_area_struct *vma) > +{ > + return pgprot_val(vma->vm_page_prot) & mktme_keyid_mask; > +} > + > +int vma_keyid(struct vm_area_struct *vma) > +{ > + pgprotval_t prot; > + > + if (!vma_is_anonymous(vma)) > + return 0; > + > + prot = pgprot_val(vma->vm_page_prot); > + return (prot & mktme_keyid_mask) >> mktme_keyid_shift; > +} Why do we have a vma_is_anonymous() in one of these but not the other? While this reuse of ->vm_page_prot is cute, is there any downside? It's the first place I know of that we can't derive ->vm_page_prot from ->vm_flags on non-VM_IO/PFNMAP VMAs. Is that a problem?