[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 2/3] libelf: Expand ELF note printing
On 2024-03-14 09:16, Jan Beulich wrote: On 13.03.2024 20:30, Jason Andryuk wrote:@@ -217,6 +225,15 @@ elf_errorstatus elf_xen_parse_note(struct elf_binary *elf, case XEN_ELFNOTE_PHYS32_ENTRY: parms->phys_entry = val; break; + + case XEN_ELFNOTE_L1_MFN_VALID: + if ( elf_uval(elf, note, descsz) != 2 * sizeof(uint64_t) ) + return -1;elf_note_numeric() use sites don't have such a check. Why would we need one here, and even more so causing a error to be raised when in reality the supplied values (still) aren't consumed? Furthermore the documentation says "pairs" (plural) for a reason. Finally maddr_t-sized only happens to mean uint64_t on all architectures we presently support. I failed to pay attention to the definition stating plural pairs. I saw Linux stored two 64bit values and printed them. I added the size check to avoid going out of bounds. elf_note_numeric() handles 1, 2, 4 or 8 bytes and returns 0 otherwise, so it won't overrun boundaries. That's why it was getting printed as "ELF: note: L1_MFN_VALID = 0" What motivated this was seeing "PVH_RELOCATION = 0". That confusingly looks like relocation is disabled. I'm fine dropping this attempt at printing the L1_MFN_VALID note. maddr_t is not defined, and it looks the note values were 32bit in non-PAE kernels. It could just be printed as "ELF: note: L1_MFN_VALID" with no details. Regards, Jason + elf_msg(elf, "mask: %#"PRIx64" val: %#"PRIx64"\n", + elf_note_numeric_array(elf, note, 8, 0), + elf_note_numeric_array(elf, note, 8, 1)); + break; } return 0; }
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |