IP Library Granted Patent US 10,977,074
Granted Patent B2
US 10,977,074 · App. 16/102,411 · Granted Apr 13, 2021

Secure identification of execution contexts

Inventors: Xiaoxin Chen (Cupertino, CA); Carl A. Waldspurger (Palo Alto, CA); Pratap Subrahmanyam (Saratoga, CA)
G06F9/461G06F9/4486G06F9/45533G06F9/45558G06F9/4881G06F11/1451G06F11/1484G06F2009/45562G06F2009/45583G06F2201/815G06F2201/84
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,977,074
App. No.
16/102,411
Granted
Apr 13, 2021
Kind
B2
Abstract

A virtual-machine-based system that identifies an application or process in a virtual machine in order to locate resources associated with the identified application. Access to the located resources is then controlled based on a context of the identified application. Those applications without the necessary context will have a different view of the resource.

Claims (82)

1. In a computer system comprising a virtual machine monitor (VMM) running on system hardware and supporting a virtual machine (VM) having a first execution context running therein, a method of facilitating a guest operating system (OS) running in the VM to perform at least one function for the first execution context comprising:

the VMM intercepting a first event from the first execution context to the guest OS;

the VMM confirming an identity of the first execution context;

if the identity is confirmed:

the VMM saving a state of the first execution context in a memory space provided for the identified first execution context and passing a second event to the guest OS, the second event being a function of the first event and comprising control return location information;

the guest OS processing the second event and returning control as a function of the control return location information;

the VMM receiving a request to resume the first execution context;

the VMM determining if the request to resume the first execution context is valid; and

if the request to resume is valid, the VMM restoring the saved state of the first execution context; and

the first execution context resuming operation.

2. The method of claim 1 , wherein the first event comprises at least one of:

a virtual hardware interrupt;

a virtual software interrupt;

a virtual hardware fault; and

a control transfer instruction.

3. The method of claim 1 , wherein at least one of: the VMM confirming the identity of the first execution context and determining if the request to resume the first execution context is valid comprises:

the VMM receiving first identifying data corresponding to the first execution context;

the VMM retrieving second data as a function of the received first identifying data;

the VMM retrieving third data as a function of the received first identifying data; and

the VMM confirming the identity of the first execution context as a function of the retrieved second and third data.

4. The method of claim 3 , further comprising:

retrieving the second data from an address space corresponding to the first execution context; and

retrieving the third data from an address space corresponding to the VMM.

5. The method of claim 3 , wherein the first identifying data comprises a first identifier value and a first memory address associated with the first execution context, the method further comprising:

the VMM retrieving the second data as a function of the first memory address.

6. The method of claim 5 , further comprising:

the VMM retrieving the third data as a function of the first identifier value.

7. The method of claim 6 , further comprising:

the VMM retrieving the third data from an address space corresponding to the VMM; and

the VMM retrieving the second data from an address space corresponding to the first execution context.

8. The method of claim 1 , wherein the VMM saving a state of the identified first execution context comprises:

saving contents of registers associated with the identified first execution context at predetermined locations associated with the identified first execution context; and

clearing one or more registers associated with the identified first execution context.

9. The method of claim 8 , further comprising:

modifying a return instruction pointer (IP) register and a stack pointer (SP) register and providing the modified IP and SP information to the guest OS as the control return location information.

10. The method of claim 9 , further comprising:

modifying the IP and SP information with values in locations that are not associated with the identified first execution context.

11. The method of claim 8 , further comprising:

modifying one or more registers to identify control return instructions to the guest OS.

12. The method of claim 1 , further comprising:

the VMM providing the guest OS with access to first data associated with the identified first execution context in a format different from a format in which the identified first execution context accesses the first data.

13. A computer program product for use with a virtual machine monitor (VMM) running on system hardware and supporting a virtual machine (VM) having a first execution context running therein, the computer program product comprising a non-transitory computer readable medium having computer readable program code embodied thereon for performing a method of facilitating a guest operating system (OS) running in the VM to perform at least one function for the first execution context, the method comprising:

the VMM intercepting a first event from the first execution context to the guest OS;

the VMM confirming an identity of the first execution context;

if the identity is confirmed:

the VMM saving a state of the first execution context in a memory space provided for the identified first execution context and passing a second event to the guest OS, the second event being a function of the first event and comprising control return location information;

the guest OS processing the second event and returning control as a function of the control return location information;

the VMM receiving a request to resume the first execution context;

the VMM determining if the request to resume the first execution context is valid; and

if the request to resume is valid, the VMM restoring the saved state of the first execution context; and

the first execution context resuming operation.

14. The computer program product of claim 13 , wherein the first event comprises at least one of:

a virtual hardware interrupt;

a virtual software interrupt;

a virtual hardware fault; and

a control transfer instruction.

15. The computer program product of claim 13 , wherein at least one of: the VMM confirming the identity of the first execution context and determining if the request to resume the first execution context is valid comprises:

the VMM receiving first identifying data corresponding to the first execution context;

the VMM retrieving second data as a function of the received first identifying data;

the VMM retrieving third data as a function of the received first identifying data; and

the VMM confirming the identity of the first execution context as a function of the retrieved second and third data.

16. The computer program product of claim 15 , the method further comprising:

retrieving the second data from an address space corresponding to the first execution context; and

retrieving the third data from an address space corresponding to the VMM.

17. The computer program product of claim 15 , wherein the first identifying data comprises a first identifier value and a first memory address associated with the first execution context, the method further comprising:

the VMM retrieving the second data as a function of the first memory address.

18. The computer program product of claim 17 , the method further comprising:

the VMM retrieving the third data as a function of the first identifier value.

19. The computer program product of claim 18 , the method further comprising:

the VMM retrieving the third data from an address space corresponding to the VMM; and

the VMM retrieving the second data from an address space corresponding to the first execution context.

20. The computer program product of claim 13 , wherein the VMM saving a state of the identified first execution context comprises:

saving contents of registers associated with the identified first execution context at predetermined locations associated with the identified first execution context; and

clearing one or more registers associated with the identified first execution context.

21. The computer program product of claim 20 , the method further comprising:

modifying a return instruction pointer (IP) register and a stack pointer (SP) register and providing the modified IP and SP information to the guest OS as the control return location information.

22. The computer program product of claim 21 , the method further comprising:

modifying the IP and SP information with values in locations that are not associated with the identified first execution context.

23. The computer program product of claim 20 , the method further comprising:

modifying one or more registers to identify control return instructions to the guest OS.

24. The computer program product of claim 13 , the method further comprising:

the VMM providing the guest OS with access to first data associated with the identified first execution context in a format different from a format in which the identified first execution context accesses the first data.

Assignments (1)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →