[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#796112: jessie-pu: package syslinux/3:6.03+dfsg-5+deb8u1



Package: release.debian.org
Severity: normal
Tags: jessie
User: release.debian.org@packages.debian.org
Usertags: pu

Hi release team,

as reported on #780765, syslinux fails to boot on some Chromebooks.

This was fixed in Ubuntu, Tails and Debian unstable between March and May, with
the patches that the debdiff applies. Ubuntu and Tails users have reported that
it indeed fixed the problem for them, and I could not find any trace of
regression reports.

These patches made it to upstream Git a few months ago:

  http://repo.or.cz/w/syslinux.git/commit/0a2dbb3
  http://repo.or.cz/w/syslinux.git/commit/83aad4f

I'd like to see this fixed in Jessie. The syslinux package maintainer ack'ed the
idea on https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=780765#62

Cheers!
diff -Nru syslinux-6.03+dfsg/debian/changelog syslinux-6.03+dfsg/debian/changelog
--- syslinux-6.03+dfsg/debian/changelog	2015-01-07 07:49:34.000000000 +0100
+++ syslinux-6.03+dfsg/debian/changelog	2015-08-18 17:23:09.000000000 +0200
@@ -1,3 +1,12 @@
+syslinux (3:6.03+dfsg-5+deb8u1) jessie; urgency=low
+
+  * Cherry-pick upstream patches that fix booting on some Chromebooks
+    (Closes: #780765):
+    - 0005-load-linux-correct-type.patch
+    - 0006-load-linux-protected-mode.patch
+
+ -- intrigeri <intrigeri@debian.org>  Tue, 18 Aug 2015 17:21:55 +0200
+
 syslinux (3:6.03+dfsg-5) unstable; urgency=low
 
   * Moving source lintian-overrides to newer location.
diff -Nru syslinux-6.03+dfsg/debian/patches/0005-load-linux-correct-type.patch syslinux-6.03+dfsg/debian/patches/0005-load-linux-correct-type.patch
--- syslinux-6.03+dfsg/debian/patches/0005-load-linux-correct-type.patch	1970-01-01 01:00:00.000000000 +0100
+++ syslinux-6.03+dfsg/debian/patches/0005-load-linux-correct-type.patch	2015-08-18 17:18:52.000000000 +0200
@@ -0,0 +1,20 @@
+Author: Scot Doyle <lkml14@scotdoyle.com>
+Origin: upstream, http://repo.or.cz/w/syslinux.git/commit/83aad4f
+Description: load_linux: correct a type
+ Correct base's type to match its initialization from prot_mode_base and
+ passage to syslinux_memmap_find(). Tested with extlinux.
+
+diff -Naurp syslinux.orig/com32/lib/syslinux/load_linux.c syslinux/com32/lib/syslinux/load_linux.c
+--- syslinux.orig/com32/lib/syslinux/load_linux.c
++++ syslinux/com32/lib/syslinux/load_linux.c
+@@ -155,8 +155,8 @@ int bios_boot_linux(void *kernel_buf, si
+ 		    char *cmdline)
+ {
+     struct linux_header hdr, *whdr;
+-    size_t real_mode_size, prot_mode_size, base;
+-    addr_t real_mode_base, prot_mode_base, prot_mode_max;
++    size_t real_mode_size, prot_mode_size;
++    addr_t real_mode_base, prot_mode_base, prot_mode_max, base;
+     addr_t irf_size;
+     size_t cmdline_size, cmdline_offset;
+     struct setup_data *sdp;
diff -Nru syslinux-6.03+dfsg/debian/patches/0006-load-linux-protected-mode.patch syslinux-6.03+dfsg/debian/patches/0006-load-linux-protected-mode.patch
--- syslinux-6.03+dfsg/debian/patches/0006-load-linux-protected-mode.patch	1970-01-01 01:00:00.000000000 +0100
+++ syslinux-6.03+dfsg/debian/patches/0006-load-linux-protected-mode.patch	2015-08-18 17:18:38.000000000 +0200
@@ -0,0 +1,26 @@
+Author: Scot Doyle <lkml14@scotdoyle.com>
+Origin: upstream, http://repo.or.cz/w/syslinux.git/commit/0a2dbb3
+Description: load_linux: relocate protected-mode code as intended
+ If the kernel is relocatable and the protected mode code will not fit
+ in the initially determined location, that code will be moved to the
+ next available location. However, beginning with commit 8f470e7b, the
+ code is moved to the initially determined location instead of the next
+ available location because prot_mode_base is no longer updated to the
+ correct location. Since whdr->code32_start is updated, it is pointing
+ to the wrong execution start location, random code is executed and
+ the machine is rebooted.
+ .
+ Restore the old behavior by assigning prot_mode_base the value of
+ base. Tested on a machine that exposed this behavior.
+
+diff -Naurp syslinux.orig/com32/lib/syslinux/load_linux.c syslinux/com32/lib/syslinux/load_linux.c
+--- syslinux.orig/com32/lib/syslinux/load_linux.c
++++ syslinux/com32/lib/syslinux/load_linux.c
+@@ -323,6 +323,7 @@ int bios_boot_linux(void *kernel_buf, si
+     }
+ 
+     whdr->code32_start += base - prot_mode_base;
++    prot_mode_base = base;
+ 
+     /* Real mode code */
+     if (syslinux_memmap_find(amap, &real_mode_base,
diff -Nru syslinux-6.03+dfsg/debian/patches/series syslinux-6.03+dfsg/debian/patches/series
--- syslinux-6.03+dfsg/debian/patches/series	2014-12-07 20:51:56.000000000 +0100
+++ syslinux-6.03+dfsg/debian/patches/series	2015-08-18 17:13:25.000000000 +0200
@@ -2,3 +2,5 @@
 0002-gfxboot-menu-label.patch
 0003-extlinux-manpage.patch
 0004-gnu-efi-git.patch
+0005-load-linux-correct-type.patch
+0006-load-linux-protected-mode.patch

Reply to: