IP Library Granted Patent US 12,141,061
Granted Patent B2
US 12,141,061 · App. 18/102,365 · Granted Nov 12, 2024

Use after free detection with double free protection

Inventor: Michael Tsirkin (Yokneam Illit, IL)
Assignee: Red Hat, Inc.
G06F12/0292
View Patent ↗
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 12,141,061
App. No.
18/102,365
Granted
Nov 12, 2024
Kind
B2
Abstract

The technology disclosed herein may detect, avoid, or protect against “use after free” or “double free” programing logic errors. An example method may involve: receiving, by a processing device, a memory allocation request; identifying a physical memory address referencing a chunk of memory; identifying a security parameter specifying a number of virtual memory addresses comprised by a set of memory addresses that are mapped to the identified physical memory address; generating a plurality of pointers to the chunk of memory, wherein each pointer of the plurality of pointers references a corresponding virtual memory address of the set of virtual memory addresses; determining a sequential number assigned to the memory allocation request; selecting, among the plurality of pointers, a pointer corresponding to the sequential number; providing the pointer in response to the memory allocation request; and updating pointer validation data indicating validity of the pointer.

Claims (60)

1. A method comprising:

receiving, by a processing device, a memory allocation request;

identifying a physical memory address referencing a chunk of memory;

identifying a security parameter specifying a number of virtual memory addresses comprised by a set of memory addresses that are mapped to the identified physical memory address;

generating a plurality of pointers to the chunk of memory, wherein each pointer of the plurality of pointers references a corresponding virtual memory address of the set of virtual memory addresses;

determining a sequential number assigned to the memory allocation request;

selecting, among the plurality of pointers, a pointer corresponding to the sequential number;

providing the pointer in response to the memory allocation request; and

updating pointer validation data indicating validity of the pointer.

2. The method of claim 1 , further comprising:

determining the security parameter based on a priority associated with the memory allocation request.

3. The method of claim 2 , wherein the priority associated with the memory allocation request comprises at least one of: a priority of an application that generates the allocation request, a priority of a computing process that generates the allocation request, or a managerial level of a process that generates the allocation request.

4. The method of claim 1 , wherein identifying the security parameter is performed via at least one of: an application programming interface (API) endpoint, a configuration file, or a system parameter data structure.

5. The method of claim 1 , wherein selecting the pointer corresponding to the sequential number comprises:

selecting the pointer based on the security parameter and the sequential number.

6. The method of claim 1 , wherein generating the plurality of pointers comprises generating the plurality of pointers within a threshold time range.

7. The method of claim 1 , wherein generating the plurality of pointers comprises generating one or more pointers at a plurality of specific time points.

8. The method of claim 1 , wherein the pointer validation data indicates the validity of the pointer by indicating that the pointer includes an offset associated with a virtual memory address.

9. The method of claim 8 , wherein the offset comprises a predetermined bit mask and wherein a combination of the virtual memory address and the offset is based on a bitwise operation of the virtual memory address and the predetermined bit mask that sets a highest order bit of the virtual memory address.

10. The method of claim 8 , wherein the offset comprises a numeric value and a combination of the virtual memory address and the offset comprises adding or subtracting the numeric value and the virtual memory address.

11. The method of claim 1 , further comprising: storing the pointer validation data as a memory tag adjacent to the chunk of memory pointed to by the plurality of pointers, wherein the pointer validation data is used to validate the pointer and comprises one of a boolean value, a counter value, an offset value, or an address value.

12. The method of claim 1 , further comprising: storing the pointer validation data in a data structure associated with the chunk of memory, wherein the data structure is stored in a heap of a computing process that initiated the memory allocation request and further comprises a size of the chunk, the identified physical memory address of the chunk, and a plurality of virtual memory addresses corresponding to the plurality of pointers.

13. The method of claim 1 , further comprising:

receiving, from a first thread, a memory deallocation request, wherein the memory deallocation request comprises the pointer;

receiving, from a second thread, a second memory allocation request, wherein a second pointer that is provided responsive to the second memory allocation request is mapped to a same location in the chuck of memory as the pointer;

receiving, from the first thread, a second memory deallocation request, wherein the second memory deallocation request comprises the pointer;

detecting an attempt to double deallocate memory using the pointer; and

performing an action in response to the detecting.

14. The method of claim 1 , further comprising:

deallocating the chuck of memory;

receiving a memory deallocation request, wherein the memory deallocation request comprises the pointer;

accessing the pointer validation data associated with the chunk of memory; and

determining the pointer is invalid in view of the pointer validation data.

15. The method of claim 1 , further comprising:

responsive to determining that the pointer is valid, performing a memory allocation operation.

16. A system comprising:

a memory; and

a processing device communicably coupled to the memory, the processing device to perform operations comprising:

receiving a memory allocation request;

identifying a physical memory address referencing a chunk of memory;

identifying a security parameter specifying a number of virtual memory addresses comprised by a set of memory addresses that are mapped to the identified physical memory address;

generating a plurality of pointers to the chunk of memory, wherein each pointer of the plurality of pointers references a corresponding virtual memory address of the set of virtual memory addresses;

determining a sequential number assigned to the memory allocation request;

selecting, among the plurality of pointers, a pointer corresponding to the sequential number;

providing the pointer in response to the memory allocation request; and

updating pointer validation data indicating validity of the pointer.

17. The system of claim 16 , further comprising:

determining the security parameter based on a priority associated with the memory allocation request.

18. The system of claim 16 , wherein selecting the pointer corresponding to the sequential number comprises:

selecting the pointer based on the security parameter and the sequential number.

19. A non-transitory machine-readable storage medium storing instructions which, when executed, cause a processing device to perform operations comprising:

receiving a memory allocation request;

identifying a physical memory address referencing a chunk of memory;

identifying a security parameter specifying a number of virtual memory addresses comprised by a set of memory addresses that are mapped to the identified physical memory address;

generating a plurality of pointers to the chunk of memory, wherein each pointer of the plurality of pointers references a corresponding virtual memory address of the set of virtual memory addresses;

determining a sequential number assigned to the memory allocation request;

selecting, among the plurality of pointers, a pointer corresponding to the sequential number;

providing the pointer in response to the memory allocation request; and

updating pointer validation data indicating validity of the pointer.

20. The non-transitory machine-readable storage medium of claim 19 .

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2023
From: TSIRKIN, MICHAEL
To: RED HAT, INC.
Reel/Frame 063223/0932 →
Continuity (2)
Continuation In Part 17001210 · Aug 24, 2020
Related Publication 20230168999A1 · Jun 1, 2023