Protecting memory by containing pointer accesses
First Claim
Patent Images
1. An apparatus comprising:
- a computer-readable medium including instructions that enable the apparatus to organize a map including a plurality of elements each to store a value for a corresponding block of a memory, wherein the value is a random value to be arbitrarily generated and is to be used to determine access permission to the corresponding block of the memory, wherein access to a kth portion of the memory block is to be controlled by comparison of a value of the element of a location of the map that is k locations from the location of the map for the memory block, and wherein the instructions enable accessing a vector associated with at least one of the elements of the map, wherein the vector includes a plurality of portions each having a first value to identify that a corresponding portion of the corresponding block of the memory includes an object boundary, and having a second value to identify that the corresponding portion does not include an object boundary.
1 Assignment
0 Petitions
Accused Products
Abstract
In one embodiment, the present invention includes a method for associating a first identifier with a first pointer that points to a first object in a memory. The first identifier may correspond to a value in a segment of a map array for a location of the first object in the memory. Other embodiments are described and claimed.
10 Citations
24 Claims
-
1. An apparatus comprising:
- a computer-readable medium including instructions that enable the apparatus to organize a map including a plurality of elements each to store a value for a corresponding block of a memory, wherein the value is a random value to be arbitrarily generated and is to be used to determine access permission to the corresponding block of the memory, wherein access to a kth portion of the memory block is to be controlled by comparison of a value of the element of a location of the map that is k locations from the location of the map for the memory block, and wherein the instructions enable accessing a vector associated with at least one of the elements of the map, wherein the vector includes a plurality of portions each having a first value to identify that a corresponding portion of the corresponding block of the memory includes an object boundary, and having a second value to identify that the corresponding portion does not include an object boundary.
- View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 18)
-
10. A machine-readable medium having stored thereon instructions, which if executed by a machine cause the machine to perform a method comprising:
- determining if a first portion of a pointer matches a value stored in a location of a map that corresponds to a block of memory pointed to by the pointer when executing a first program on the machine, the value corresponding to a random value arbitrarily generated to provide statistical protection against type-unsafe pointer accesses; and
allowing access to the block of memory if a match occurs, otherwise preventing the access, wherein access to a kth portion of the memory block is to be controlled by comparison of a value of a location of the map that is k locations from the location of the map for the memory block; and
accessing a vector associated with at least one of the locations of the map, wherein the vector includes a plurality of portions each having a first value to identify that a corresponding portion of the corresponding block of the memory includes an object boundary, and having a second value to identify that the corresponding portion does not include an object boundary. - View Dependent Claims (11, 12, 13, 19)
- determining if a first portion of a pointer matches a value stored in a location of a map that corresponds to a block of memory pointed to by the pointer when executing a first program on the machine, the value corresponding to a random value arbitrarily generated to provide statistical protection against type-unsafe pointer accesses; and
-
14. A system comprising:
-
a map having a plurality of locations each to store an identifier to control access to a corresponding block of a memory, wherein access to a kth portion of the memory block is to be controlled by comparison of a value of the identifier of a location of the map that is k locations from the location of the map for the memory block; a vector associated with at least one of the locations of the map, wherein the vector includes a plurality of portions each having a first value to identify that a corresponding portion of the corresponding block of the memory includes an object boundary, and having a second value to identify that the corresponding portion does not include an object boundary; and a dynamic random access memory (DRAM) coupled to the map, the DRAM comprising the memory. - View Dependent Claims (15, 16, 17, 20, 21)
-
-
22. A processor comprising:
- an execution unit to execute instructions; and
a memory management unit (MMU) coupled to the execution unit, the MMU including;
a translation lookaside buffer (TLB) to store virtual address to physical address translations; and
a color lookaside buffer (CLB) including a plurality of entries, each of the entries to include a portion of a map for a region of a memory coupled to the processor, the region including a plurality of blocks, the map including a plurality of elements each to store a value for a corresponding block of the memory, wherein the value is a random value to be arbitrarily generated and used to determine access permission to provide statistical protection against type-unsafe pointer accesses by a pointer to the corresponding block of the memory; and
a vector associated with at least one of the elements of the map, wherein the vector includes a plurality of portions each having a first value to identify that a corresponding portion of the corresponding block of the memory includes an object boundary, and having a second value to identify that the corresponding portion does not include an object boundary;
wherein the processor is to determine if a first portion of the pointer matches a value stored in an entry of the CLB during execution of a first program, and allow access to the block of memory if a match occurs, otherwise to prevent the access, wherein access to a kth portion of the memory block is to be controlled by comparison of a value of the element of a location of the map that is k locations from the location of the map for the memory block. - View Dependent Claims (23, 24)
- an execution unit to execute instructions; and
Specification