IP Library › Granted Patent US 12,236,250
Granted Patent B2
US 12,236,250 · App. 17/581,766 · Granted Feb 25, 2025

Systems and methods for verifying program states

Inventor: Caroline D. Kahn (San Jose, CA)
Assignee: Samsung Electronics Co., Ltd.
G06F9/44589G06F9/44505G06F9/44578G06F11/3457
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,236,250
App. No.
17/581,766
Granted
Feb 25, 2025
Kind
B2
Abstract

Systems and methods for checking program code are disclosed. The method includes executing a first check of the program code, and making a first determination about the first check. Metadata is stored based on making the first determination. A second check of the program code is run based on the metadata, and a result of the second check is stored in memory. The program code is executed based on the second check. In some embodiments, the method for checking program code includes running a simulation of a check of the program code by a processing device; storing a result of the simulation in memory; executing the check of the program code outside of the simulation; making a determination about the check outside of the simulation; retrieving a result stored in the memory based on the determination; and executing the program code based on the check.

Claims (54)

1. A method for checking program code having a program instruction, the method comprising:

in response to a first command from a host computing device in communication with a computational storage device of a computing system to load the program code, executing by the host computing device a first check of the program code loaded into the computing system for execution, wherein the first check includes making a determination about availability of memory configuration data for the program instruction, wherein the memory configuration data is for configuring a memory for executing the program code;

identifying, based on the determination about the availability of the memory configuration data, metadata for accessing the memory by the program instruction; and

storing the metadata in a first data structure in the memory;

in response to a program execute command from the host computing device to execute the program code, running, by the computational storage device in an execution mode of the program code, a second check of the program code, wherein the running of the second check includes:

identifying the memory configuration data in the memory;

retrieving the metadata by accessing the memory from the first data structure;

determining validity of access to the memory by the program instruction based on the memory configuration data and the metadata;

building a second data structure in the memory; and

storing a result of the second check in the second data structure in the memory; and

executing by the computing system the program code based on the stored result of the second check determining the validity of access to the memory.

2. The method of claim 1 further comprising:

running a third check of the program code;

retrieving the result in response to running the third check; and

executing the program code.

3. The method of claim 2 , wherein the third check is in response to executing the program code, wherein the result is retrieved from the second data structure in response to the third check.

4. The method of claim 1 , wherein the program code is generated in a user space of a processing device of the computing system, and executed in a kernelspace of the processing device.

5. The method of claim 1 , wherein the first check and the second check are performed by the computational storage device.

6. The method of claim 1 , wherein the metadata for accessing the memory is retrieved from the program code.

7. A method for checking program code having a program instruction, the method comprising:

running by a computing system, in an execution environment satisfying a criterion, a simulation of checks of the program code loaded into the computing system for execution by a processing device, wherein the running of the simulation includes, in a simulation mode:

running a first check including making a first determination about availability of memory configuration data for the program instruction;

identifying metadata for accessing the memory by the program instruction;

storing the metadata in a first data structure in a memory;

identifying a trigger for executing the program code; and

based on identifying the trigger, running, in an execution mode of the program code, a second check of the program code based on the memory configuration data and the metadata stored in the first data structure, the second check checking for validity of access to the memory by the program instruction;

building a second data structure in the memory;

storing a result of the second check of the simulation in the second data structure in the memory;

executing, by the computing system, the checks of the program code outside of the simulation, wherein the executing of the checks of the program code outside of the simulation includes checking for validity of access to the memory by the program instruction outside of the simulation mode;

making, by the computing system, a second determination about the checks of the program code outside of the simulation in the execution mode of the program code;

retrieving, by the computing system, the result stored in the second data structure in the memory based on the second determination; and

executing, by the computing system, the program code based on the result stored in the second data structure.

8. The method of claim 7 , wherein the executing of the check is in response to a command to execute the program code.

9. The method of claim 7 , wherein the determination is a determination that the memory configuration data is needed for making the check.

10. The method of claim 9 , wherein the result is stored in association with the configuration data.

11. The method of claim 7 , wherein in running the simulation, a determination is made that the memory configuration data is needed for the check, the method further comprising:

selecting the memory configuration data; and

running the simulation of the check based on the memory configuration data.

12. A system for checking program code having a program instruction, the system comprising:

one or more processors; and

one or more memory devices, wherein the one or more memory devices store instructions that, when executed by respectively the one or more processors, cause the one or more processors to respectively:

in response to a first command from a host computing device in communication with a computational storage device of a computing system to load the program code, execute by the host computing device a first check of the program code loaded into the computing system for execution, wherein the first check includes instructions that cause the one or more processors to make a determination about availability of memory configuration data for the program instruction, wherein the memory configuration data is for configuring one of the one or more memory devices for executing the program code;

identify based on the determination about the availability of the memory configuration data, metadata for accessing the one of the one or more memory devices by the program instruction; and

store the metadata in a first data structure in the one or more memory devices;

in response to a program execute command from the host computing device to execute the program code, run, by the computational storage device in an execution mode of the program code, a second check of the program code, wherein the second check include instructions that cause the one or more processors to:

identify the memory configuration data in the one or more memory devices;

retrieve the metadata by accessing the one of the one or more memory devices from the first data structure;

determine validity of access to the one of the one or more memory devices by the program instruction based on the memory configuration data and the metadata;

build a second data structure in the one or more memory devices; and

store a result of the second check in the second data structure in the one or more memory devices; and

execute by the computing system the program code based on the stored result of the second check determining the validity of access to the one or more memory devices.

13. The system of claim 12 , wherein the one or more processors and the one or more memory devices are included in the computational storage device.

14. The system of claim 12 , wherein the first check is performed by a first one of the one or more processors in the host computing device, and the second check is performed by a second one of the one or more processors in the computational storage device in communication with the host computing device.

15. The system of claim 12 , wherein the metadata for accessing the one of the one or more memory devices is retrieved from the program code.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2022
From: KAHN, CAROLINE D.
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 059025/0716 →
Continuity (2)
Provisional Application 63285861 · Dec 3, 2021
Related Publication 20230176878A1 · Jun 8, 2023
References Cited (32)
US 7865586B2 · Cohn · 2011 [cited by applicant]
US 8223770B2 · Wray et al. · 2012 [cited by applicant]
US 8713545B2 · Fiorini · 2014 [cited by applicant]
US 9424419B1 · Kruse · 2016 [cited by applicant]
US 9804945B1 · Allen · 2017 [cited by examiner]
US 9804952B1 · Cohen et al. · 2017 [cited by applicant]
US 10530711B2 · Yu et al. · 2020 [cited by applicant]
US 10581729B2 · Wu et al. · 2020 [cited by applicant]
US 10742446B2 · Tillotson et al. · 2020 [cited by applicant]
US 10754707B2 · Tamir et al. · 2020 [cited by applicant]
US 10762193B2 · Lev-Ran · 2020 [cited by applicant]
US 10785146B2 · Tillotson et al. · 2020 [cited by applicant]
US 10831456B1 · Bhownani · 2020 [cited by examiner]
US 10868732B2 · Mishra et al. · 2020 [cited by applicant]
US 11048544B2 · Jain · 2021 [cited by applicant]
US 20030115553A1 · Master · 2003 [cited by examiner]
US 20110004867A1 · Holden · 2011 [cited by examiner]
US 20150046425A1 · Lin et al. · 2015 [cited by applicant]
US 20160094460A1 · Shelar et al. · 2016 [cited by applicant]
US 20160335110A1 · Paithane et al. · 2016 [cited by applicant]
US 20190324882A1 · Borello et al. · 2019 [cited by applicant]
US 20200065130A1 · He et al. · 2020 [cited by applicant]
US 20200257611A1 · Hortala et al. · 2020 [cited by applicant]
US 20200274952A1 · Waskiewicz · 2020 [cited by examiner]
US 20210064443A1 · Tsirkin · 2021 [cited by examiner]
US 20220318089A1 · Sridharan · 2022 [cited by examiner]
US 20230119536A1 · Cosentino · 2023 [cited by examiner]
CN 110618912A · 2019 [cited by applicant]
WO WO2020062981A1 · 2020 [cited by applicant]
CN 112817597 (Year: 2021). [cited by examiner]
Rediger, Jan-Erik, “Network Function Offloading in Virtualilzed Environments,” Master Thesis, RWTH Aachen University, Germany, Jul. 5, 2017, 71 pages. [cited by applicant]
EPO Extended European Search Report dated Apr. 18, 2023, issued in corresponding European Patent Application No. 22208029.3 (10 pages). [cited by applicant]