Re: [PATCH 3/3] x86/boot: Refactor pvh_load_kernel() to have an initrd_len local

2024-04-29 Thread Jan Beulich
On 26.04.2024 16:01, Andrew Cooper wrote:
> The expression get more complicated when ->mod_end isn't being abused as a
> size field.  Introduce and use a initrd_len local variable.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper 

Reviewed-by: Jan Beulich 





[PATCH 3/3] x86/boot: Refactor pvh_load_kernel() to have an initrd_len local

2024-04-26 Thread Andrew Cooper
The expression get more complicated when ->mod_end isn't being abused as a
size field.  Introduce and use a initrd_len local variable.

No functional change.

Signed-off-by: Andrew Cooper 
---
CC: Jan Beulich 
CC: Roger Pau Monné 
CC: Stefano Stabellini 
CC: Daniel Smith 
CC: Christopher Clark 
---
 xen/arch/x86/hvm/dom0_build.c | 9 +
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index ac71d43a6b3f..b0cb96c3bc76 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -650,6 +650,7 @@ static int __init pvh_load_kernel(struct domain *d, const 
module_t *image,
 {
 void *image_start = image_base + image_headroom;
 unsigned long image_len = image->mod_end;
+unsigned long initrd_len = initrd ? initrd->mod_end : 0;
 struct elf_binary elf;
 struct elf_dom_parms parms;
 paddr_t last_addr;
@@ -710,7 +711,7 @@ static int __init pvh_load_kernel(struct domain *d, const 
module_t *image,
  * simplify it.
  */
 last_addr = find_memory(d, , sizeof(start_info) +
-(initrd ? ROUNDUP(initrd->mod_end, PAGE_SIZE) +
+(initrd ? ROUNDUP(initrd_len, PAGE_SIZE) +
   sizeof(mod)
 : 0) +
 (cmdline ? ROUNDUP(strlen(cmdline) + 1,
@@ -725,7 +726,7 @@ static int __init pvh_load_kernel(struct domain *d, const 
module_t *image,
 if ( initrd != NULL )
 {
 rc = hvm_copy_to_guest_phys(last_addr, mfn_to_virt(initrd->mod_start),
-initrd->mod_end, v);
+initrd_len, v);
 if ( rc )
 {
 printk("Unable to copy initrd to guest\n");
@@ -733,8 +734,8 @@ static int __init pvh_load_kernel(struct domain *d, const 
module_t *image,
 }
 
 mod.paddr = last_addr;
-mod.size = initrd->mod_end;
-last_addr += ROUNDUP(initrd->mod_end, elf_64bit() ? 8 : 4);
+mod.size = initrd_len;
+last_addr += ROUNDUP(initrd_len, elf_64bit() ? 8 : 4);
 if ( initrd->string )
 {
 char *str = __va(initrd->string);
-- 
2.30.2