diff options
Diffstat (limited to '0063-xen-virtual-region-Include-rodata-pointers.patch')
-rw-r--r-- | 0063-xen-virtual-region-Include-rodata-pointers.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/0063-xen-virtual-region-Include-rodata-pointers.patch b/0063-xen-virtual-region-Include-rodata-pointers.patch new file mode 100644 index 0000000..9f51d4d --- /dev/null +++ b/0063-xen-virtual-region-Include-rodata-pointers.patch @@ -0,0 +1,71 @@ +From 335cbb55567b20df8e8bd2d1b340609e272ddab6 Mon Sep 17 00:00:00 2001 +From: Andrew Cooper <andrew.cooper3@citrix.com> +Date: Tue, 2 Apr 2024 16:19:11 +0200 +Subject: [PATCH 63/67] xen/virtual-region: Include rodata pointers +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +These are optional. .init doesn't distinguish types of data like this, and +livepatches don't necesserily have any .rodata either. + +No functional change. + +Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> +Reviewed-by: Roger Pau Monné <roger.pau@citrix.com> +Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com> +master commit: ef969144a425e39f5b214a875b5713d0ea8575fb +master date: 2024-03-07 14:24:42 +0000 +--- + xen/common/livepatch.c | 6 ++++++ + xen/common/virtual_region.c | 2 ++ + xen/include/xen/virtual_region.h | 3 +++ + 3 files changed, 11 insertions(+) + +diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c +index 29395f286f..28c09ddf58 100644 +--- a/xen/common/livepatch.c ++++ b/xen/common/livepatch.c +@@ -788,6 +788,12 @@ static int prepare_payload(struct payload *payload, + region->text_start = payload->text_addr; + region->text_end = payload->text_addr + payload->text_size; + ++ if ( payload->ro_size ) ++ { ++ region->rodata_start = payload->ro_addr; ++ region->rodata_end = payload->ro_addr + payload->ro_size; ++ } ++ + /* Optional sections. */ + for ( i = 0; i < BUGFRAME_NR; i++ ) + { +diff --git a/xen/common/virtual_region.c b/xen/common/virtual_region.c +index b22ffb75c4..9c566f8ec9 100644 +--- a/xen/common/virtual_region.c ++++ b/xen/common/virtual_region.c +@@ -13,6 +13,8 @@ static struct virtual_region core = { + .list = LIST_HEAD_INIT(core.list), + .text_start = _stext, + .text_end = _etext, ++ .rodata_start = _srodata, ++ .rodata_end = _erodata, + }; + + /* Becomes irrelevant when __init sections are cleared. */ +diff --git a/xen/include/xen/virtual_region.h b/xen/include/xen/virtual_region.h +index 442a45bf1f..dcdc95ba49 100644 +--- a/xen/include/xen/virtual_region.h ++++ b/xen/include/xen/virtual_region.h +@@ -22,6 +22,9 @@ struct virtual_region + const void *text_start; /* .text virtual address start. */ + const void *text_end; /* .text virtual address end. */ + ++ const void *rodata_start; /* .rodata virtual address start (optional). */ ++ const void *rodata_end; /* .rodata virtual address end. */ ++ + /* If this is NULL the default lookup mechanism is used. */ + symbols_lookup_t *symbols_lookup; + +-- +2.44.0 + |