IP Library › Granted Patent US 10,037,212
Granted Patent B2
US 10,037,212 · App. 14/395,520 · Granted Jul 31, 2018

Information processing device and method for protecting data in a call stack

Inventor: Alexandru Porosanu (Bucharest, RO)
Assignee: NXP USA, Inc.
G06F9/44G06F9/06G06F9/4423G06F9/4482G06F11/1004
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 10,037,212
App. No.
14/395,520
Granted
Jul 31, 2018
Kind
B2
Abstract

An information processing device includes a control unit, a hash unit, and a comparison unit. The control unit runs a program and to store flow control information of the program in a call stack. The hash unit generates a first hash value by applying a hash function to selected data in response to a first context change of the program. The control unit starts or resumes a second process or thread of the program only when the hash unit has generated the first hash value. The hash unit generates a second hash value by re-applying the hash function to the selected data in response to a second context change. The first and second context changes include a termination or interruption of the first process or thread and the second process or thread. The comparison unit determines whether the first hash value and the second hash value are identical.

Claims (48)

1. An information processing device, comprising:

a control circuit arranged to run a program and to store at least flow control information of said program in a call stack;

a hash circuit arranged to generate a first hash value by applying a hash function to selected data in response to a first context change of said program, said selected data comprising one or more selected items of said call stack, said first context change comprising a termination or interruption of a first process or thread of said program;

said control circuit is further arranged to start or resume a second process or thread of said program only when said hash circuit has generated said first hash value;

said hash circuit is further arranged to generate a second hash value by re-applying said hash function to selected data in response to a second context change, said second context change comprising a termination or interruption of said second process or thread; and

said information processing device further comprising:

a comparison circuit is arranged to determine whether said first hash value and said second hash value are identical; and

a backup circuit to restore an original content of said selected items, by copying a back-up copy back to said call stack, when said comparison circuit has determined that said second hash value differs from said first hash value.

2. The information processing device of claim 1 , further comprising an error handling circuit arranged to perform at least one of the following actions when said comparison circuit has determined that said second hash value differs from said first hash value:

issue an error warning; and

stop said control circuit.

3. The information processing device of claim 1 , further comprising the back-up circuit arranged to generate the back-up copy of said selected items in response to said first context change, wherein said control circuit is arranged to start or resume said second process or thread only when said back-up circuit has generated said back-up copy.

4. The information processing device of claim 1 , wherein said second process or thread is an interrupt service routine.

5. The information processing device of claim 1 , wherein said hash function is a cyclic redundancy check (CRC) function.

6. The information processing device of claim 1 , comprising a selection circuit arranged to generate selection data identifying said selected stack items.

7. The information processing device of claim 6 , wherein said selected data further comprises said selection data identifying said selected stack items.

8. The information processing device of claim 6 , wherein said hash circuit is further arranged to generate a first supplementary hash value by applying a supplementary hash function to said first hash value and said selection data in response to said first context change and to generate a second supplementary hash value by re-applying said supplementary hash function to said first hash value and said selection data in response to said second context change, and

said comparison circuit is further arranged to determine whether said first supplementary hash value and said second supplementary hash value are identical.

9. The information processing device of claim 1 , wherein said hash circuit is arranged to push copies of said selected items to said call stack such that said copies of said selected items are contiguous items of said call stack.

10. The information processing device of claim 1 , wherein said selected items comprise the entire stack at a time of said first context change.

11. The information processing device of claim 1 , wherein said program includes an operating system.

12. The information processing device of claim 1 , wherein said information processing device is an integrated circuit.

13. A method for executing a program on an information processing device, comprising:

running said program on the information processing device;

storing at least flow control information of said program in a call stack;

generating a first hash value by applying a hash function to selected data in response to a first context change of said program, said selected data comprising one or more selected items of said call stack, said first context change comprising a termination or interruption of a first process or thread of said program;

starting or resuming a second process or thread of said program only when said first hash value has been generated;

generating a second hash value by re-applying said hash function to said selected data in response to a second context change, said second context change comprising a termination or interruption of said second process or thread;

determining whether said first hash value and said second hash value are identical; and

restoring, by a back-up circuit, an original content of said selected items, by copying a back-up copy back to said call stack, when the second hash value differs from the first hash value.

14. The method of claim 13 , further comprising:

performing, by an error handling circuit, at least one of the following actions when the second hash value differs from the first hash value:

issuing an error warning; and

stopping the program.

15. The method of claim 13 , further comprising:

generating, by the back-up circuit, the back-up copy of said selected items in response to said first context change; and

starting or resuming said second process or thread only when said back-up circuit has generated said back-up copy.

16. A computer program product on tangible computer-readable medium for running on a programmable apparatus, at least including code portions for performing steps of a method when run on a programmable apparatus, the method comprising;

running said program on the information processing device;

storing at least flow control information of said program in a call stack;

generating a first hash value by applying a hash function to selected data in response to a first context change of said program, said selected data comprising one or more selected items of said call stack, said first context change comprising a termination or interruption of a first process or thread of said program;

starting or resuming a second process or thread of said program only when said first hash value has been generated;

generating a second hash value by re-applying said hash function to said selected data in response to a second context change, said second context change comprising a termination or interruption of said second process or thread;

determining whether said first hash value and said second hash value are identical; and

restoring, by a back-up circuit, an original content of said selected items, by copying a back-up copy back to said call stack, when the second hash value differs from the first hash value.

17. The computer program product on tangible computer-readable medium of claim 16 , further comprising:

generating, by the back-up circuit, the back-up copy of said selected items in response to said first context change; and

starting or resuming said second process or thread only when said back-up circuit has generated said back-up copy.

Assignments (24)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Jan 12, 2017
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 041414/0883 →
CHANGE OF NAME Recorded Nov 16, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040626/0683 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 5, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037444/0535 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 5, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037444/0444 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037358/0001 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Feb 18, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035033/0001 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Feb 18, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035034/0019 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Feb 18, 2015
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 035033/0923 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 20, 2014
From: POROSANU, ALEXANDRU
To: FREESCALE SEMICONDUCTOR INC.
Reel/Frame 033978/0491 →
Continuity (1)
Related Publication 20150135181A1 · May 14, 2015
Cited By (2)
US 12,210,609 US 12,265,608