Memory corruption detection

US9858140B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9858140-B2
Application numberUS-201414531498-A
CountryUS
Kind codeB2
Filing dateNov 3, 2014
Priority dateNov 3, 2014
Publication dateJan 2, 2018
Grant dateJan 2, 2018

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

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.

First claim

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.

Assignees

Inventors

Classifications

  • G06F11/10Primary

    Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9858140B2 cover?
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 i…
Who is the assignee on this patent?
Intel Corp
What technology area does this patent fall under?
Primary CPC classification G06F11/10. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jan 02 2018 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 9 related publications on this page (citations in our corpus or others sharing the same primary CPC).