Memory write protection for memory corruption detection architectures
US-2017185535-A1 · Jun 29, 2017 · US
US9858140B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9858140-B2 |
| Application number | US-201414531498-A |
| Country | US |
| Kind code | B2 |
| Filing date | Nov 3, 2014 |
| Priority date | Nov 3, 2014 |
| Publication date | Jan 2, 2018 |
| Grant date | Jan 2, 2018 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Systems and methods for memory corruption detection. An example processing system comprises a processing core including a register to store a base address of a memory corruption detection (MCD) table. The processing core is configured to validate a pointer referenced by a memory access instruction, by comparing a first value derived from a first portion of the pointer to a second value stored in the MCD table at an offset referenced by a second portion of the pointer.
Opening claim text (preview).
What is claimed is: 1. A processing system, comprising: a processing core including a register to store a base address of a memory corruption detection (MCD) table; wherein the processing core is to: receive a memory access instruction referencing a pointer to a memory buffer; compare a first value derived from a first sequence of bits comprising a first pre-defined number of upper bits of the pointer to a second value stored in the MCD table at an offset referenced by a second sequence of bits comprising a second pre-defined number of lower bits of the pointer; and responsive to ascertaining that the first value matches the second value, cause the memory access instruction to be executed. 2. The processing system of claim 1 , wherein the processing core is further configured to determine the offset by shifting the second sequence of bits of the pointer to the right by a pre-defined number of bit positions. 3. The processing system of claim 1 , wherein the processing core is further configured to produce the first value by applying an exclusive disjunction operation to the first sequence of bits of the pointer and a third value having each bit equal to an upper bit of the first sequence of bits of the pointer. 4. The processing system of claim 1 , wherein the processing core is further configured to omit pointer validation responsive to determining that the pointer is represented by a canonical form pointer. 5. The processing system of claim 1 , wherein the processing core is further to generate a fault responsive to determining that the first value does not match the second value. 6. The processing system of claim 1 , wherein the processing core, responsive to receiving an MCD table initialization request from an application, is further to allocate a memory for storing the MCD table. 7. The processing system of claim 1 , wherein the processing core, responsive to receiving a memory allocation request, is further to: allocate a memory buffer; generate an MCD value to be assigned to the memory buffer; initialize, using the MCD value, one or more MCD table entries corresponding to one or more memory blocks comprised by the memory buffer; produce, using the MCD value, the first sequence of bits; and store the first sequence of bits derived within pre-defined bit positions of the pointer. 8. The processing system of claim 1 , wherein the processing system comprises a system-on-chip (SoC). 9. A method, comprising: storing, in a register of a processing core, a base address of a memory corruption detection (MCD) table associated with an application being executed by the processing core; receiving, by the processing core, a memory access instruction referencing a pointer; comparing a first value derived from a first sequence of bits comprising a first pre-defined number of upper bits of the pointer to a second value stored in the MCD table at an offset referenced by a second sequence of bits comprising a second pre-defined number of lower bits of the pointer; and responsive to ascertaining that the first value matches the second value, causing the memory access instruction to be executed. 10. The method of claim 9 , wherein the validating further comprises: determining the offset by shifting the second sequence of bits of the pointer to the right by a pre-defined number of bit positions. 11. The method of claim 9 , wherein the validating further comprises: producing the first value by applying an exclusive disjunction operation to the first sequence of bits of the pointer and a third value having each bit equal to an upper bit of the first sequence of bits of the pointer. 12. The method of claim 9 , wherein the validating further comprises: determining that the pointer is not represented by a canonical form pointer. 13. The method of claim 9 , further comprising: generating a fault responsive to determining that the first value does not match the second value. 14. The method of claim 9 , further comprising: responsive to receiving an MCD table initialization request, allocating a memory for storing the MCD table. 15. The method of claim 9 , further comprising: responsive to receiving a memory allocation request, allocating a memory buffer; generating an MCD value to be assigned to the memory buffer; initializing, using the MCD value, one or more MCD table entries corresponding to one or more memory blocks comprised by the memory buffer; producing, using the MCD value, the first sequence of bits; and storing the first sequence of bits derived within pre-defined bit positions of the pointer. 16. A computer-readable non-transitory storage medium comprising executable instructions that, when executed by a processor, cause the processor to: responsive to receiving a memory allocation request, allocate a memory buffer; generate a memory corruption detection (MCD) value to be assigned to the memory buffer; initialize, using the MCD value, an MCD table entry identified by an offset referenced by a first sequence of bits comprising a first pre-defined number of lower bits of an address of the memory buffer; produce, using the MCD value, a second sequence of bits; and store the second sequence of bits derived from the MCD value within a second pre-defined number of upper bits of a pointer referencing the memory buffer.
Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.