diff options
author | Britney Fransen <brfransen@gmail.com> | 2014-10-27 20:28:27 (GMT) |
---|---|---|
committer | Britney Fransen <brfransen@gmail.com> | 2014-10-27 20:28:27 (GMT) |
commit | f7b823f55a80b1498c30e9f3a47692a2329c4f09 (patch) | |
tree | 6de557714e6336282fbc0ab16c6578386dfc6654 /abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch | |
parent | 4c2a2e3504f472628285a989c7c9a76be6855f54 (diff) | |
parent | 01c1a60f3b7f93b3ed7404196c2cf798c4d8c674 (diff) | |
download | linhes_pkgbuild-f7b823f55a80b1498c30e9f3a47692a2329c4f09.zip linhes_pkgbuild-f7b823f55a80b1498c30e9f3a47692a2329c4f09.tar.gz linhes_pkgbuild-f7b823f55a80b1498c30e9f3a47692a2329c4f09.tar.bz2 |
Merge branch 'testing'
Diffstat (limited to 'abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch')
-rw-r--r-- | abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch b/abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch new file mode 100644 index 0000000..6fd7ef4 --- /dev/null +++ b/abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch @@ -0,0 +1,47 @@ +Reported-by: Dark Raven <drdarkraven at gmail.com> +Signed-off-by: Raphael S. Carvalho <raphael.scarv at gmail.com> +--- + com32/lib/syslinux/disk.c | 22 ++++++++++++++-------- + 1 files changed, 14 insertions(+), 8 deletions(-) + +diff --git a/com32/lib/syslinux/disk.c b/com32/lib/syslinux/disk.c +index 0b0c737..47ecb52 100644 +--- a/com32/lib/syslinux/disk.c ++++ b/com32/lib/syslinux/disk.c +@@ -171,22 +171,28 @@ out: + static void *ebios_setup(const struct disk_info *const diskinfo, com32sys_t *inreg, + uint64_t lba, uint8_t count, uint8_t op_code) + { +- static __lowmem struct disk_ebios_dapa dapa; ++ static struct disk_ebios_dapa *dapa = NULL; + void *buf; + ++ if (!dapa) { ++ dapa = lmalloc(sizeof *dapa); ++ if (!dapa) ++ return NULL; ++ } ++ + buf = lmalloc(count * diskinfo->bps); + if (!buf) + return NULL; + +- dapa.len = sizeof(dapa); +- dapa.count = count; +- dapa.off = OFFS(buf); +- dapa.seg = SEG(buf); +- dapa.lba = lba; ++ dapa->len = sizeof(*dapa); ++ dapa->count = count; ++ dapa->off = OFFS(buf); ++ dapa->seg = SEG(buf); ++ dapa->lba = lba; + + inreg->eax.b[1] = op_code; +- inreg->esi.w[0] = OFFS(&dapa); +- inreg->ds = SEG(&dapa); ++ inreg->esi.w[0] = OFFS(dapa); ++ inreg->ds = SEG(dapa); + inreg->edx.b[0] = diskinfo->disk; + + return buf; |