Patching of in-use functions on a running computer system
First Claim
1. In a computing environment, a method comprising:
- automatically installing a hotpatch for at least one process that is running a first instance of a software code module, the hotpatch comprising a first software code patch that includes changed code with respect to code in the first instance and location information for jumping from a location in the first instance to the first software code patch; and
providing a second mechanism by which processes that request to run an instance of the software code module and that are not running the first instance of the software code module will execute a second instance of the software code module, the second instance comprising a second software code patch and a jump mechanism for jumping from a location in the second instance to the second software code patch.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method for automatically updating software components on a running computer system without requiring any interruption of service. A software module is hotpatched by loading a patch into memory and modifying an instruction in the original module to jump to the patch. A coldpatching technique places a coldpatch version of the module on disk for subsequent loading by processes, after hotpatching occurred. The coldpatch has the entry points to its functions at the same relative locations within the module as the hotpatch, which facilitates subsequent hotpatching. A hotpatch and coldpatch are automatically generated by deriving differences between changed and original binary files, and establishing the point to insert the jump. Validation is performed to ensure that the hotpatch is applied to the correct version, and that the coldpatch is replacing the correct version. Version management is also provided to control the number of patches via support rules.
-
Citations
65 Claims
-
1. In a computing environment, a method comprising:
-
automatically installing a hotpatch for at least one process that is running a first instance of a software code module, the hotpatch comprising a first software code patch that includes changed code with respect to code in the first instance and location information for jumping from a location in the first instance to the first software code patch; and
providing a second mechanism by which processes that request to run an instance of the software code module and that are not running the first instance of the software code module will execute a second instance of the software code module, the second instance comprising a second software code patch and a jump mechanism for jumping from a location in the second instance to the second software code patch. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. In a computing environment, a method comprising:
in response to a request to patch a running instance of a software module;
(a) automatically performing a validation to determine whether a hotpatch file that may be used to patch the running instance includes data that is appropriate for patching the running instance, the data including a patch; and
(b) if the validation indicates that the data is appropriate, automatically installing the patch, including loading the patch in memory and modifying code in the running instance to jump to the patch. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
-
40. In a computing environment, a system comprising:
-
a first data structure comprising a first software module having functions at defined entry points with respect to the first software module;
a second data structure comprising a second software module having functions at defined entry points with respect to the second module, including a modified function that is changed with respect to a function in the first file; and
a patch generation tool that reads the first and second data structures to generate a patch that includes the modified function, the patch generation tool further configured to generate patching information on how to change at least one instruction in a loaded instance of the first software module to jump to the modified function in a loaded instance of the patch. - View Dependent Claims (41, 42, 43, 44, 45, 46, 47, 48, 49)
-
-
50. In a computing environment, a system comprising:
-
a memory loaded with an instance of a software module;
an automatic patch installer that receives a patch request, and in response to the patch request, the installer configured to;
access data including a patch;
access information associated with the patch;
load the patch into the memory; and
interpret the information associated with the patch to modify the loaded instance by placing an instruction therein such that when the instruction is executed, the flow of execution will transfer from the loaded instance to the patch. - View Dependent Claims (51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62)
-
-
63. In a computing environment, a method comprising:
-
performing a validation to determine whether a selected hotpatch version is appropriate for patching a first instance of a software module, and if so, installing the selected hotpatch version for processes running the first instance, including a) loading a first patch that is present in the hotpatch version, and b) modifying a routine in the first instance of the software module to jump to a routine in the patch when executed;
performing a validation to determine whether a selected coldpatch version is appropriate for replacing a stored image of a software module, and if so, storing the selected coldpatch version, the selected coldpatch version comprising an image of the patch, and an image of the software module with a routine modified therein to jump to a routine in the patch when executed; and
in response to a request to load an instance of the software module, loading the coldpatch as a second instance. - View Dependent Claims (64, 65)
-
Specification