Method and apparatus for patching operating systems
First Claim
1. A computer implemented method for integrating patches into a computer operating system comprising the steps of:
- providing an operating system capable of supporting a plurality of patch structures in a patch chain, each patch structure including a patch and a patch block, said patch block pointing to said patch, said patch chain including a root patch block pointing to a given function supported by said operating system, wherein each patch structure of said patch chain can process a call for said given function, each of said plurality of patch blocks pointing to either another patch block or to said root patch block;
obtaining a new patch to be associated with a patch chain for said given function;
determining whether a patch chain is already created in said operating system for said given function, said patch chain for said given function not existing unless said given function is already patched, and creating a root patch block pointing to said given function as the start of a new patch chain if a patch chain has not already been created for said given function;
creating a new patch block for said new patch; and
inserting data into said new patch block to cause said new patch block to point to said new patch, thereby forming a new patch structure, and to cause said new patch structure to be joined with said patch chain for said given function.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention discloses a variety of methods and apparatus for providing patches within a computer operating system. A patch structure in accordance with one embodiment of the present invention includes a patch block which serves to link the patch structure into a patch chain, and a patch which contains the desired functionality of the patch structure. The patch chain includes a root patch structure and a final patch structure. The root patch structure has a root patch block and a given function which has the root functionality. One aspect of the present invention teaches a method for integrating patches into a computer operating system including the steps of obtaining a new patch to be associated with a patch chain for the given function, determining whether a patch chain is already created in the operating system for the given function and creating a root patch block pointing to the given function as the start of a new patch chain if a patch chain has not already been created for the given function, creating a new patch block for the new patch, and inserting data into the new patch block to cause the new patch block to point to the new patch.
281 Citations
75 Claims
-
1. A computer implemented method for integrating patches into a computer operating system comprising the steps of:
-
providing an operating system capable of supporting a plurality of patch structures in a patch chain, each patch structure including a patch and a patch block, said patch block pointing to said patch, said patch chain including a root patch block pointing to a given function supported by said operating system, wherein each patch structure of said patch chain can process a call for said given function, each of said plurality of patch blocks pointing to either another patch block or to said root patch block; obtaining a new patch to be associated with a patch chain for said given function; determining whether a patch chain is already created in said operating system for said given function, said patch chain for said given function not existing unless said given function is already patched, and creating a root patch block pointing to said given function as the start of a new patch chain if a patch chain has not already been created for said given function; creating a new patch block for said new patch; and inserting data into said new patch block to cause said new patch block to point to said new patch, thereby forming a new patch structure, and to cause said new patch structure to be joined with said patch chain for said given function. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 26)
-
-
24. A computer implemented method for integrating patches into a computer operating system comprising the steps of:
-
providing an operating system capable of supporting a plurality of patch structures in a patch chain, each patch structure including a patch and a patch block, said patch block pointing to said patch, said patch chain including a root patch block pointing to a root function supported by said operating system, wherein each patch structure of said patch chain can process a call for said root function, each of said plurality of patch blocks pointing to either another patch block or to said root patch block; obtaining a new patch intended to modify the functionality of a given function, said given function operative to be either a root function or a patch; determining whether a patch chain including said given function is already created in said operating system, said patch chain including given function not existing unless said given function is already patched, and creating a root patch block pointing to said given function as the start of a new patch chain if a patch chain including said given function has not already been created; creating a new patch block for said new patch; and inserting data into said new patch block to cause said new patch block to point to said new patch, thereby forming a new patch structure, and to cause said new patch structure to be joined with said patch chain for said given function. - View Dependent Claims (25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46)
-
-
47. An operating system for a computer comprising:
-
means receptive to one or more patches for a given function that is capable of running on said computer; means for creating a patch chain comprising a root patch block pointing to said given function and at least one patch structure chained with said root patch block, said patch structure including a patch block pointing to an associated patch, said means for creating a patch chain not responsive to create a patch chain unless said given function is to be patched by said at least one patch structure, wherein said patch structure is capable of processing a call for said given function; and means for adding new patch structures to said patch chain, whereby a call to said given function is processed by each of said patches in said patch and by said given function. - View Dependent Claims (48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61)
-
-
62. A method for handling a call to a function having at least one patch implemented by way of a patch chain having a plurality of patch structures each having an enable flag, said patch chain not existing unless said function is patched, said method comprising the steps of:
-
diverting a call from a client for a specified function to a root patch block of said patch chain, wherein said root patch block and said specified function define a root patch structure; saving a return address of said client; finding a first patch structure in said patch chain including the substeps of; (a) selecting a patch structure, said patch structure being one link in said patch chain; (b) determining if an enable flag corresponding to said selected patch structure indicates that said selected patch structure is enabled; and (c) repeatedly performing steps (a) and (b) until said enable flag corresponding to said selected patch structure indicates that said selected patch structure is enabled, wherein the selection process of step (a) operates a first time by selecting a final patch structure located at an end of said patch chain opposite to said root patch structure and then upon subsequent repetitions of step (a) a subsequent patch structure one link closer to said root patch structure than an adjacent, previous patch structure is selected; diverting said call to said first patch structure capable of processing said call, said first patch structure selectively returning process control to said client at said return address or passing on said system call to an additional patch structure in said patch chain. - View Dependent Claims (63, 64, 65)
-
-
66. A patch chain operable to modify a functionality of a given function, said patch chain existing only when said given function is patched, said patch chain comprising:
-
a root patch structure including a root patch block and an associated given function, said root patch block pointing to said associated given function, said associated given function having a root functionality; and a final patch structure being located on an end of said patch chain which is opposite said root patch structure and when said root patch structure and said final patch structure are the only patch structures in said patch chain then said final patch structure is chained to said root patch structure, said final patch structure including a final patch block pointing to a final patch, said final patch having a final patch functionality intended to modify said root functionality; wherein a call from a client to said given function is diverted to a first time patch code of said operating system by said root patch block, said first time code operable to selectively divert said call to a first enabled patch structure, wherein the first time code selection process begins by evaluating said final patch structure and then continues by evaluating subsequent adjacent patch structures, the first time code selection process complete when an enabled patch structure is found. - View Dependent Claims (67, 68, 69, 70, 71, 72)
-
-
73. A computer system comprising:
-
a central processing unit; memory coupled to said central processing unit; a first time patch code at least partially stored in said memory and implemented on said central processing unit, said first time patch code responsive to a call from a patch chain having a plurality of patch structures to selectively redirect said call to a desired one of said plurality of patch structures; a patching system having data structures at least partially stored in said memory, said data structures including a root patch structure having a root patch block and an associated function component, said root patch block pointing to said associated function component, said root patch structure being forming one end of a first patch chain, and a final patch structure forming an opposite end of said first patch chain relative to said root patch structure and when said root patch structure and said final patch structure are the only patch structures in said first patch chain then said final patch structure is chained to said root patch structure, said final patch structure including a patch block pointing to a patch, wherein a call from a client process to said function component is diverted to said first time code by said root patch block. - View Dependent Claims (74, 75)
-
Specification