Key capability storage
AssigneeArm Limited
InventorsRuben Borisovich Ayrapetyan, Jacob Paul Bramley, Kevin Brodsky
Life of this patent
Estimating the term…
Abstract
Key capability storage circuitry 90 is provided to store a key capability specifying key bounds indicating information indicative of permissible bounds for information specified by any one or more of: a non-capability operand, a capability, or the key capability itself. For a given software compartment executed by the processing circuitry, which lacks a key capability operating privilege associated with at least a portion of the key capability storage circuitry, the processing circuitry is configured to prohibit certain manipulations of the key capability, including a transfer between key capability storage and a memory location selected by the given software compartment. This can help to support temporal safety.
Claims20
An apparatus comprising:
- processing circuitry to perform data processing in response to instructions;
- capability storage circuitry to store at least one capability specifying bounded information and bounds indicating information indicative of permissible bounds for the bounded information;
- key capability storage circuitry to store at least one key capability specifying key bounds indicating information indicative of permissible bounds for information specified by any one or more of:
- a non-capability operand, a capability stored in the capability storage circuitry, and the key capability itself;
- and
- capability checking circuitry to determine whether an operation to be performed by the processing circuitry is allowed based on bounds checking using the bounds indicating information and the key bounds indicating information;
- in which:
- for a given software compartment executed by the processing circuitry, which lacks a key capability operating privilege associated with at least a portion of the key capability storage circuitry, the processing circuitry is configured to prohibit the given software compartment from causing the processing circuitry to perform one or both of:
- a first transfer operation to transfer a key capability from said at least a portion of the key capability storage circuitry to the capability storage circuitry or a memory location selected by the given software compartment;
- and
- a second transfer operation to transfer a key capability to said at least a portion of the key capability storage circuitry from the capability storage circuitry or the memory location selected by the given software compartment.
A method comprising:
- storing, in capability storage circuitry, at least one capability specifying bounded information and bounds indicating information indicative of permissible bounds for the bounded information;
- storing, in key capability storage circuitry, at least one key capability specifying key bounds indicating information indicative of permissible bounds for information specified by any one or more of:
- a non-capability operand, a capability stored in the capability storage circuitry, and the key capability itself;
- and
- determining whether an operation to be performed by processing circuitry is allowed based on bounds checking using the bounds indicating information and the key bounds indicating information;
- in which:
- for a given software compartment executed by the processing circuitry, which lacks a key capability operating privilege associated with at least a portion of the key capability storage circuitry, the processing circuitry prohibits the given software compartment from causing the processing circuitry to perform one or both of:
- a first transfer operation to transfer a key capability from said at least a portion of the key capability storage circuitry to the capability storage circuitry or a memory location selected by the given software compartment;
- and
- a second transfer operation to transfer a key capability to said at least a portion of the key capability storage circuitry from the capability storage circuitry or the memory location selected by the given software compartment.
A non-transitory computer-readable storage medium storing a computer program to control a host data processing apparatus to provide an instruction execution environment for execution of target code;
- the computer program comprising:
- instruction decoding program logic to decode instructions of the target code to control the host data processing apparatus to perform data processing in response to the instructions of the target code;
- storage emulating program logic to maintain, in host storage circuitry of the host data processing apparatus:
- a capability storage structure to store at least one capability specifying bounded information and bounds indicating information indicative of permissible bounds for the bounded information;
- and
- a key capability storage structure to store at least one key capability specifying key bounds indicating information indicative of permissible bounds for information specified by any one or more of:
- a non-capability operand, a capability stored in the capability storage structure, and the key capability itself;
- and
- capability checking program logic to determine whether an operation to be performed in response to the instructions of the target code is allowed based on bounds checking using the bounds indicating information and the key bounds indicating information;
- in which:
- for a given software compartment of the target code, which lacks a key capability operating privilege associated with at least a portion of the key capability storage structure, the instruction decoding program logic is configured to prohibit the given software compartment from causing the host data processing apparatus to perform one or both of:
- a first transfer operation to transfer a key capability from said at least a portion of the key capability storage structure to the capability storage structure or a simulated memory location selected by the given software compartment;
- and
- a second transfer operation to transfer a key capability to said at least a portion of the key capability storage circuitry from the capability storage structure or the simulated memory location selected by the given software compartment.
Dependencies are inferred from the claim text.