summaryrefslogtreecommitdiffstats
path: root/abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2014-02-17 00:07:17 (GMT)
committerJames Meyer <james.meyer@operamail.com>2014-02-19 19:03:05 (GMT)
commitf3feb9104cf0d194d6d1c3e0adbb49130aef37bd (patch)
treeb8e74a04943dd18f6d88e083bd4979f1413bbf94 /abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch
parent6b9c9d0e6335e536d3bbd990e780a710275c22de (diff)
downloadlinhes_pkgbuild-f3feb9104cf0d194d6d1c3e0adbb49130aef37bd.zip
linhes_pkgbuild-f3feb9104cf0d194d6d1c3e0adbb49130aef37bd.tar.gz
linhes_pkgbuild-f3feb9104cf0d194d6d1c3e0adbb49130aef37bd.tar.bz2
syslinux: 6.0.2
update binary path to /usr/bin refs #961
Diffstat (limited to 'abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch')
-rw-r--r--abs/extra/syslinux/syslinux-6.02-fix-chainloading.patch47
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;