lkml.org 
[lkml]   [2018]   [Jun]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv3 08/17] x86/mm: Implement vma_is_encrypted() and vma_keyid()
    Date
    We store KeyID in upper bits for vm_page_prot that match position of
    KeyID in PTE. vma_keyid() extracts KeyID from vm_page_prot.

    VMA is encrypted if KeyID is non-zero. vma_is_encrypted() checks that.

    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    ---
    arch/x86/include/asm/mktme.h | 9 +++++++++
    arch/x86/mm/mktme.c | 17 +++++++++++++++++
    2 files changed, 26 insertions(+)

    diff --git a/arch/x86/include/asm/mktme.h b/arch/x86/include/asm/mktme.h
    index df31876ec48c..08f613953207 100644
    --- a/arch/x86/include/asm/mktme.h
    +++ b/arch/x86/include/asm/mktme.h
    @@ -3,10 +3,19 @@

    #include <linux/types.h>

    +struct vm_area_struct;
    +
    #ifdef CONFIG_X86_INTEL_MKTME
    extern phys_addr_t mktme_keyid_mask;
    extern int mktme_nr_keyids;
    extern int mktme_keyid_shift;
    +
    +#define vma_is_encrypted vma_is_encrypted
    +bool vma_is_encrypted(struct vm_area_struct *vma);
    +
    +#define vma_keyid vma_keyid
    +int vma_keyid(struct vm_area_struct *vma);
    +
    #else
    #define mktme_keyid_mask ((phys_addr_t)0)
    #define mktme_nr_keyids 0
    diff --git a/arch/x86/mm/mktme.c b/arch/x86/mm/mktme.c
    index 467f1b26c737..3b2f28a21d99 100644
    --- a/arch/x86/mm/mktme.c
    +++ b/arch/x86/mm/mktme.c
    @@ -1,5 +1,22 @@
    +#include <linux/mm.h>
    #include <asm/mktme.h>

    phys_addr_t mktme_keyid_mask;
    int mktme_nr_keyids;
    int mktme_keyid_shift;
    +
    +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;
    +}
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-06-12 16:40    [W:4.056 / U:1.716 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site