]> git.ipfire.org Git - people/ms/linux.git/blobdiff - arch/x86/kernel/cpu/sgx/main.c
x86/sgx: Disconnect backing page references from dirty status
[people/ms/linux.git] / arch / x86 / kernel / cpu / sgx / main.c
index 8e4bc6453d263524493835027364f0785c37d241..e71df40a4f388dd116ba900092477a1b6c4967f1 100644 (file)
@@ -191,6 +191,8 @@ static int __sgx_encl_ewb(struct sgx_epc_page *epc_page, void *va_slot,
                          backing->pcmd_offset;
 
        ret = __ewb(&pginfo, sgx_get_epc_virt_addr(epc_page), va_slot);
+       set_page_dirty(backing->pcmd);
+       set_page_dirty(backing->contents);
 
        kunmap_atomic((void *)(unsigned long)(pginfo.metadata -
                                              backing->pcmd_offset));
@@ -320,7 +322,7 @@ static void sgx_reclaimer_write(struct sgx_epc_page *epc_page,
                sgx_encl_free_epc_page(encl->secs.epc_page);
                encl->secs.epc_page = NULL;
 
-               sgx_encl_put_backing(&secs_backing, true);
+               sgx_encl_put_backing(&secs_backing);
        }
 
 out:
@@ -411,7 +413,7 @@ skip:
 
                encl_page = epc_page->owner;
                sgx_reclaimer_write(epc_page, &backing[i]);
-               sgx_encl_put_backing(&backing[i], true);
+               sgx_encl_put_backing(&backing[i]);
 
                kref_put(&encl_page->encl->refcount, sgx_encl_release);
                epc_page->flags &= ~SGX_EPC_PAGE_RECLAIMER_TRACKED;