]> xenbits.xensource.com Git - xen.git/commitdiff
xen/virtual-region: Include rodata pointers
authorAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 2 Apr 2024 14:19:11 +0000 (16:19 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 2 Apr 2024 14:19:11 +0000 (16:19 +0200)
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
xen/common/virtual_region.c
xen/include/xen/virtual_region.h

index 29395f286f3ed2c642b6cd4689b056bec8c46343..28c09ddf58821c163f52e6356c6c9d9bb2991843 100644 (file)
@@ -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++ )
     {
index b22ffb75c4ad7575c6fdc298489cc6e3f45511f7..9c566f8ec97c5e30b2ac19cecd040160a865c763 100644 (file)
@@ -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. */
index 442a45bf1f507f542bbb77a5fbecff8aadf1dae6..dcdc95ba494c7401a5278c66757fca75c2f5c638 100644 (file)
@@ -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;