[prefix] Pad .text16 and .data16 segment sizes at build time
authorMichael Brown <mcb30@ipxe.org>
Fri, 12 Feb 2016 13:59:06 +0000 (13:59 +0000)
committerMichael Brown <mcb30@ipxe.org>
Fri, 12 Feb 2016 14:04:51 +0000 (14:04 +0000)
commit7ecfe7159f94193a666200a17057d4cd5981b850
tree79231c567dccb649c55bd28d7ebc0679d5c8531f
parent0588c03772d1fbbeca66362363ec866d745f95ed
[prefix] Pad .text16 and .data16 segment sizes at build time

Commit c64747d ("[librm] Speed up real-to-protected mode transition
under KVM") rounded down the .text16 segment address calculated in
alloc_basemem() to a multiple of 64 bytes in order to speed up mode
transitions under KVM.

This creates a potential discrepancy between alloc_basemem() and
free_basemem(), meaning that free_basemem() may free less memory than
was allocated by alloc_basemem().

Fix by padding the calculated sizes of both .text16 and .data16 to a
multiple of 64 bytes at build time.

Debugged-by: Yossef Efraim <yossefe@mellanox.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/i386/prefix/libprefix.S
src/arch/i386/scripts/i386.lds