IP Library Patent Application 16539901
Patent Application
App. No. 16/539,901

Capability Space

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 None
App. No.
16/539,901
Abstract

In one embodiment, a kernel of an operating system executing on a computing system receives a system call from a process requesting to perform an operation on a kernel object. The system call includes an object handle to the kernel object. The kernel accesses, from a memory space allocated to the kernel, data associated with the object handle. The data identifies an object type of the kernel object and specifies a bit string. The kernel identifies, based on the object type and the bit string, a list of capabilities of the process. The kernel determines whether the process has permission to perform the operation on the kernel object by comparing the operation to the list of capabilities. The kernel, in response to determining the process has permission to perform the operation, allows the operation on the kernel object to be performed.

Claims (39)

1 . A method comprising, by a kernel of an operating system executing on a computing system:

receiving a system call from a process requesting to perform an operation on a kernel object, wherein the system call comprises an object handle to the kernel object;

accessing, from a memory space allocated to the kernel, data associated with the object handle, wherein the data identifies an object type of the kernel object and specifies a bit string;

identifying, based on the object type and the bit string, a list of capabilities of the process, wherein each capability in the list indicates whether the process has permission to perform a predetermined operation on the kernel object;

determining whether the process has permission to perform the operation on the kernel object by comparing the operation to the list of capabilities; and

in response to determining the process has permission to perform the operation, allowing the operation on the kernel object to be performed.

2 . The method of claim 1 , wherein the kernel object is one of a thread, a process, or an interrupt.

3 . The method of claim 1 , wherein the object handle is generated by the kernel for the process when the kernel object is generated.

4 . The method of claim 1 , further comprising:

receiving a second system call from the process requesting to perform a second operation on a second kernel object, wherein the second system call comprises a second object handle to a second kernel object;

accessing, from a second memory space allocated to the kernel, a second data associated with the second object handle, wherein the second data identifies a second object type of the second kernel object and specifies a second bit string;

identifying, based on the second object type and the second bit string, a second list of capabilities of the process;

determining whether the process has permission to perform a second operation on the second kernel object by comparing the second operation to the second list of capabilities; and

in response to determining the process has permission to perform the second operation, allowing the second operation on the second kernel object to be performed.

5 . The method of claim 4 , wherein the object type is different from the second object type, and wherein the list of capabilities for the object type is different from the second list of capabilities for the second object type.

6 . The method of claim 1 , wherein the object handle comprises one or more of a magic, a generation, and an offset, wherein the magic is a randomly generated number, and wherein the generation is a predetermined number to detect the offset.

7 . The method of claim 1 , wherein the object type is represented by a second bit string, and wherein identifying the object type is based on a comparison of the second bit string to a table of bit strings corresponding to a plurality of object types.

8 . The method of claim 1 , wherein the operation comprises one of a suspend operation, a resume operation, a query operation, or a terminate operation.

9 . The method of claim 1 , further comprising:

duplicating the object handle to generate a second object handle to pass to a second process;

allocating a second memory space to the kernel for a second data associated with the second object handle, wherein the second data identifies the object type of the kernel object and specifies a second bit string; and

sending, to the second process, the second object handle.

10 . The method of claim 9 , further comprising:

modifying the second bit string associated with the second object handle, wherein the second bit string corresponds to a second list of capabilities of the second process.

11 . The method of claim 10 , wherein modifying the second bit string associated with the second object handle comprises reducing the amount of permissions to perform operations on the kernel object.

12 . The method of claim 10 , wherein modifying the second bit string associated with the second object handle comprises increasing the amount of permissions to perform operations on the kernel object.

13 . The method of claim 10 , wherein modifying the second bit string associated with the second object handle is based on identifying one or more operations the second process requires to function.

14 . One or more computer-readable non-transitory storage media embodying software that is operable when executed to:

receive a system call from a process requesting to perform an operation on a kernel object, wherein the system call comprises an object handle to the kernel object;

access, from a memory space allocated to the kernel, data associated with the object handle, wherein the data identifies an object type of the kernel object and specifies a bit string;

identify, based on the object type and the bit string, a list of capabilities of the process, wherein each capability in the list indicates whether the process has permission to perform a predetermined operation on the kernel object;

determine whether the process has permission to perform the operation on the kernel object by comparing the operation to the list of capabilities; and

in response to determining the process has permission to perform the operation, allow the operation on the kernel object to be performed.

15 . A system comprising: one or more processors; and a non-transitory memory coupled to the processors comprising instructions executable by the processors, the processors operable when executing the instructions to:

receive a system call from a process requesting to perform an operation on a kernel object, wherein the system call comprises an object handle to the kernel object;

access, from a memory space allocated to the kernel, data associated with the object handle, wherein the data identifies an object type of the kernel object and specifies a bit string;

identify, based on the object type and the bit string, a list of capabilities of the process, wherein each capability in the list indicates whether the process has permission to perform a predetermined operation on the kernel object;

determine whether the process has permission to perform the operation on the kernel object by comparing the operation to the list of capabilities; and

in response to determining the process has permission to perform the operation, allow the operation on the kernel object to be performed.

Assignments (2)
CHANGE OF NAME Recorded Jul 6, 2022
From: FACEBOOK TECHNOLOGIES, LLC
To: META PLATFORMS TECHNOLOGIES, LLC
Reel/Frame 060591/0848 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2019
From: POESS, BERNHARD; SPIVAK, VADIM VICTOR; SALEM, MARC IHAAB
To: FACEBOOK TECHNOLOGIES, LLC
Reel/Frame 050339/0113 →