Merge tag 'x86_sgx_for_v5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
[linux-2.6-microblaze.git] / arch / x86 / kernel / cpu / sgx / encl.c
index 20a2dd5..7449ef3 100644 (file)
@@ -473,6 +473,9 @@ static void sgx_mmu_notifier_free(struct mmu_notifier *mn)
 {
        struct sgx_encl_mm *encl_mm = container_of(mn, struct sgx_encl_mm, mmu_notifier);
 
+       /* 'encl_mm' is going away, put encl_mm->encl reference: */
+       kref_put(&encl_mm->encl->refcount, sgx_encl_release);
+
        kfree(encl_mm);
 }
 
@@ -526,6 +529,8 @@ int sgx_encl_mm_add(struct sgx_encl *encl, struct mm_struct *mm)
        if (!encl_mm)
                return -ENOMEM;
 
+       /* Grab a refcount for the encl_mm->encl reference: */
+       kref_get(&encl->refcount);
        encl_mm->encl = encl;
        encl_mm->mm = mm;
        encl_mm->mmu_notifier.ops = &sgx_mmu_notifier_ops;