Extend livepatch_patch_func to support a new field: expect. This new
field describes the expected data, its length and whether expectation
is enabled. The expectation's data is of opaque padding size.
By default the expectation field is zero-out and the expectation is
disabled unless explicitly specified in the patch.
Signed-off-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com>
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
};
#define PATCH_INSN_SIZE 5
+#define MAX_REPLACEMENT_SIZE 31
+struct livepatch_expectation {
+ uint8_t enabled : 1;
+ uint8_t len : 5;
+ uint8_t pad : 2;
+ uint8_t data[MAX_REPLACEMENT_SIZE];
+};
+typedef struct livepatch_expectation livepatch_expectation_t;
struct livepatch_patch_func {
char *name;
uint32_t new_size;
uint32_t old_size;
uint8_t version;
- unsigned char pad[31];
+ unsigned char pad[MAX_REPLACEMENT_SIZE];
uint8_t applied;
uint8_t _pad[7];
+ livepatch_expectation_t expect;
};
struct special_section {
memset(funcs[index].pad, 0, sizeof funcs[index].pad);
funcs[index].applied = 0;
memset(funcs[index]._pad, 0, sizeof funcs[index]._pad);
+ memset(&funcs[index].expect, 0, sizeof funcs[index].expect);
/*
* Add a relocation that will populate