Fix supermin crash with truncated vmlinuz file (RHBZ#1477758).
- Include all upstream patches since 5.1.18.
This commit is contained in:
parent
2e7b101d9a
commit
36f5331e31
@ -0,0 +1,38 @@
|
|||||||
|
From 8518865218063cb2db1e7a7ab7dfc3fc0a80561c Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Sat, 29 Jul 2017 10:39:43 +0100
|
||||||
|
Subject: [PATCH 01/10] prepare: Add some debugging of config files / creating
|
||||||
|
base.tar.gz.
|
||||||
|
|
||||||
|
---
|
||||||
|
src/mode_prepare.ml | 9 +++++++--
|
||||||
|
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/mode_prepare.ml b/src/mode_prepare.ml
|
||||||
|
index e8cf058..7c8221e 100644
|
||||||
|
--- a/src/mode_prepare.ml
|
||||||
|
+++ b/src/mode_prepare.ml
|
||||||
|
@@ -146,6 +146,10 @@ let prepare debug (copy_kernel, format, host_cpu,
|
||||||
|
with Sys_error _ -> false
|
||||||
|
) config_files in
|
||||||
|
|
||||||
|
+ if debug >= 1 then
|
||||||
|
+ printf "supermin: there are %d config files\n"
|
||||||
|
+ (List.length config_files);
|
||||||
|
+
|
||||||
|
(* Put the list of config files into a file, for tar to read. *)
|
||||||
|
let files_from = tmpdir // "files-from.txt" in
|
||||||
|
let chan = open_out files_from in
|
||||||
|
@@ -158,6 +162,7 @@ let prepare debug (copy_kernel, format, host_cpu,
|
||||||
|
let base = outputdir // "base.tar.gz" in
|
||||||
|
if debug >= 1 then printf "supermin: writing %s\n%!" base;
|
||||||
|
let cmd =
|
||||||
|
- sprintf "tar -C %s -zcf %s -T %s"
|
||||||
|
- (quote dir) (quote base) (quote files_from) in
|
||||||
|
+ sprintf "tar%s -C %s -zcf %s -T %s"
|
||||||
|
+ (if debug >=1 then " -v" else "")
|
||||||
|
+ (quote dir) (quote base) (quote files_from) in
|
||||||
|
run_command cmd;
|
||||||
|
--
|
||||||
|
2.13.1
|
||||||
|
|
178
0002-kernel-Refactor-code-for-locating-the-kernel.patch
Normal file
178
0002-kernel-Refactor-code-for-locating-the-kernel.patch
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
From 137dc8b5a0b7427cd80d774604f2f048259b7926 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Thu, 3 Aug 2017 12:19:35 +0100
|
||||||
|
Subject: [PATCH 02/10] kernel: Refactor code for locating the kernel.
|
||||||
|
|
||||||
|
Refactor the code for locating the kernel into separate functions,
|
||||||
|
making clear the purpose of each part of the code.
|
||||||
|
|
||||||
|
This is pure refactoring and doesn't change the meaning of the code.
|
||||||
|
---
|
||||||
|
src/format_ext2_kernel.ml | 126 ++++++++++++++++++++++++++--------------------
|
||||||
|
1 file changed, 72 insertions(+), 54 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
|
||||||
|
index 5d1ae66..a12fbd2 100644
|
||||||
|
--- a/src/format_ext2_kernel.ml
|
||||||
|
+++ b/src/format_ext2_kernel.ml
|
||||||
|
@@ -40,49 +40,21 @@ let patt_of_cpu host_cpu =
|
||||||
|
List.map (fun model -> sprintf "vmlinu?-*-%s" model) models
|
||||||
|
|
||||||
|
let rec build_kernel debug host_cpu copy_kernel kernel =
|
||||||
|
- (* Locate the kernel. *)
|
||||||
|
+ (* Locate the kernel.
|
||||||
|
+ * SUPERMIN_* environment variables override everything. If those
|
||||||
|
+ * are not present then we look in /lib/modules and /boot.
|
||||||
|
+ *)
|
||||||
|
let kernel_file, kernel_name, kernel_version, modpath =
|
||||||
|
- try
|
||||||
|
- let kernel_env = getenv "SUPERMIN_KERNEL" in
|
||||||
|
- if debug >= 1 then
|
||||||
|
- printf "supermin: kernel: SUPERMIN_KERNEL environment variable %s\n%!"
|
||||||
|
- kernel_env;
|
||||||
|
- let kernel_version =
|
||||||
|
- try
|
||||||
|
- let v = getenv "SUPERMIN_KERNEL_VERSION" in
|
||||||
|
- if debug >= 1 then
|
||||||
|
- printf "supermin: kernel: SUPERMIN_KERNEL_VERSION environment variable %s\n%!" v;
|
||||||
|
- v
|
||||||
|
- with Not_found -> get_kernel_version_from_file kernel_env in
|
||||||
|
- if debug >= 1 then
|
||||||
|
- printf "supermin: kernel: SUPERMIN_KERNEL version %s\n%!"
|
||||||
|
- kernel_version;
|
||||||
|
- let kernel_name = Filename.basename kernel_env in
|
||||||
|
- let modpath = find_modpath debug kernel_version in
|
||||||
|
- kernel_env, kernel_name, kernel_version, modpath
|
||||||
|
- with Not_found ->
|
||||||
|
- let kernels =
|
||||||
|
- let files = glob "/lib/modules/*/vmlinuz" [GLOB_NOSORT; GLOB_NOESCAPE] in
|
||||||
|
- let files = Array.to_list files in
|
||||||
|
- let kernels =
|
||||||
|
- List.map (
|
||||||
|
- fun f ->
|
||||||
|
- let modpath = Filename.dirname f in
|
||||||
|
- f, Filename.basename f, Filename.basename modpath, modpath
|
||||||
|
- ) files in
|
||||||
|
- List.sort (
|
||||||
|
- fun (_, _, a, _) (_, _, b, _) -> compare_version b a
|
||||||
|
- ) kernels in
|
||||||
|
-
|
||||||
|
- if kernels <> [] then (
|
||||||
|
- let kernel = List.hd kernels in
|
||||||
|
- if debug >= 1 then (
|
||||||
|
- let kernel_file, _, _, _ = kernel in
|
||||||
|
- printf "supermin: kernel: picked vmlinuz %s\n%!" kernel_file;
|
||||||
|
- );
|
||||||
|
- kernel
|
||||||
|
- ) else
|
||||||
|
- find_kernel debug host_cpu kernel in
|
||||||
|
+ match find_kernel_from_env_vars debug with
|
||||||
|
+ | Some k -> k
|
||||||
|
+ | None ->
|
||||||
|
+ match find_kernel_from_lib_modules debug with
|
||||||
|
+ | Some k -> k
|
||||||
|
+ | None ->
|
||||||
|
+ match find_kernel_from_boot debug host_cpu with
|
||||||
|
+ | Some k -> k
|
||||||
|
+ | None ->
|
||||||
|
+ error_no_kernels host_cpu in
|
||||||
|
|
||||||
|
if debug >= 1 then (
|
||||||
|
printf "supermin: kernel: kernel_version %s\n" kernel_version;
|
||||||
|
@@ -93,7 +65,52 @@ let rec build_kernel debug host_cpu copy_kernel kernel =
|
||||||
|
|
||||||
|
(kernel_version, modpath)
|
||||||
|
|
||||||
|
-and find_kernel debug host_cpu kernel =
|
||||||
|
+and find_kernel_from_env_vars debug =
|
||||||
|
+ try
|
||||||
|
+ let kernel_env = getenv "SUPERMIN_KERNEL" in
|
||||||
|
+ if debug >= 1 then
|
||||||
|
+ printf "supermin: kernel: SUPERMIN_KERNEL environment variable %s\n%!"
|
||||||
|
+ kernel_env;
|
||||||
|
+ let kernel_version =
|
||||||
|
+ try
|
||||||
|
+ let v = getenv "SUPERMIN_KERNEL_VERSION" in
|
||||||
|
+ if debug >= 1 then
|
||||||
|
+ printf "supermin: kernel: SUPERMIN_KERNEL_VERSION environment variable %s\n%!" v;
|
||||||
|
+ v
|
||||||
|
+ with Not_found -> get_kernel_version_from_file kernel_env in
|
||||||
|
+ if debug >= 1 then
|
||||||
|
+ printf "supermin: kernel: SUPERMIN_KERNEL version %s\n%!"
|
||||||
|
+ kernel_version;
|
||||||
|
+ let kernel_name = Filename.basename kernel_env in
|
||||||
|
+ let modpath = find_modpath debug kernel_version in
|
||||||
|
+ Some (kernel_env, kernel_name, kernel_version, modpath)
|
||||||
|
+ with Not_found -> None
|
||||||
|
+
|
||||||
|
+and find_kernel_from_lib_modules debug =
|
||||||
|
+ let kernels =
|
||||||
|
+ let files = glob "/lib/modules/*/vmlinuz" [GLOB_NOSORT; GLOB_NOESCAPE] in
|
||||||
|
+ let files = Array.to_list files in
|
||||||
|
+ let kernels =
|
||||||
|
+ List.map (
|
||||||
|
+ fun f ->
|
||||||
|
+ let modpath = Filename.dirname f in
|
||||||
|
+ f, Filename.basename f, Filename.basename modpath, modpath
|
||||||
|
+ ) files in
|
||||||
|
+ List.sort (
|
||||||
|
+ fun (_, _, a, _) (_, _, b, _) -> compare_version b a
|
||||||
|
+ ) kernels in
|
||||||
|
+
|
||||||
|
+ if kernels <> [] then (
|
||||||
|
+ let kernel = List.hd kernels in
|
||||||
|
+ if debug >= 1 then (
|
||||||
|
+ let kernel_file, _, _, _ = kernel in
|
||||||
|
+ printf "supermin: kernel: picked vmlinuz %s\n%!" kernel_file;
|
||||||
|
+ );
|
||||||
|
+ Some kernel
|
||||||
|
+ ) else
|
||||||
|
+ None
|
||||||
|
+
|
||||||
|
+and find_kernel_from_boot debug host_cpu =
|
||||||
|
let is_arm =
|
||||||
|
String.length host_cpu >= 3 &&
|
||||||
|
host_cpu.[0] = 'a' && host_cpu.[1] = 'r' && host_cpu.[2] = 'm' in
|
||||||
|
@@ -111,19 +128,20 @@ and find_kernel debug host_cpu kernel =
|
||||||
|
(* In original: ls -1dvr /boot/vmlinuz-* 2>/dev/null | grep -v xen *)
|
||||||
|
kernel_filter ["vmlinu?-*"] is_arm all_files in
|
||||||
|
|
||||||
|
- if files = [] then no_kernels host_cpu;
|
||||||
|
-
|
||||||
|
- let files = List.sort (fun a b -> compare_version b a) files in
|
||||||
|
- let kernel_name = List.hd files in
|
||||||
|
- let kernel_version = get_kernel_version kernel_name in
|
||||||
|
+ if files = [] then None
|
||||||
|
+ else (
|
||||||
|
+ let files = List.sort (fun a b -> compare_version b a) files in
|
||||||
|
+ let kernel_name = List.hd files in
|
||||||
|
+ let kernel_version = get_kernel_version kernel_name in
|
||||||
|
|
||||||
|
- if debug >= 1 then
|
||||||
|
- printf "supermin: kernel: picked kernel %s\n%!" kernel_name;
|
||||||
|
+ if debug >= 1 then
|
||||||
|
+ printf "supermin: kernel: picked kernel %s\n%!" kernel_name;
|
||||||
|
|
||||||
|
- (* Get the kernel modules. *)
|
||||||
|
- let modpath = find_modpath debug kernel_version in
|
||||||
|
+ (* Get the kernel modules. *)
|
||||||
|
+ let modpath = find_modpath debug kernel_version in
|
||||||
|
|
||||||
|
- ("/boot" // kernel_name), kernel_name, kernel_version, modpath
|
||||||
|
+ Some (("/boot" // kernel_name), kernel_name, kernel_version, modpath)
|
||||||
|
+ )
|
||||||
|
|
||||||
|
and kernel_filter patterns is_arm all_files =
|
||||||
|
let files =
|
||||||
|
@@ -143,7 +161,7 @@ and kernel_filter patterns is_arm all_files =
|
||||||
|
) in
|
||||||
|
List.filter (fun filename -> has_modpath filename) files
|
||||||
|
|
||||||
|
-and no_kernels host_cpu =
|
||||||
|
+and error_no_kernels host_cpu =
|
||||||
|
error "\
|
||||||
|
failed to find a suitable kernel (host_cpu=%s).
|
||||||
|
|
||||||
|
--
|
||||||
|
2.13.1
|
||||||
|
|
110
0003-kernel-Tweak-debug-messages.patch
Normal file
110
0003-kernel-Tweak-debug-messages.patch
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
From 44d0d1d9cd57feb4f6bd31c0530e90f6d7ede2f5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Thu, 3 Aug 2017 12:27:09 +0100
|
||||||
|
Subject: [PATCH 03/10] kernel: Tweak debug messages.
|
||||||
|
|
||||||
|
Rework the debug messages so it's clearer in debugging messages how
|
||||||
|
the kernel was located. Also removes duplicated debugging
|
||||||
|
information.
|
||||||
|
|
||||||
|
This is cleanup, there is no functional change.
|
||||||
|
---
|
||||||
|
src/format_ext2_kernel.ml | 35 ++++++++++++++---------------------
|
||||||
|
1 file changed, 14 insertions(+), 21 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
|
||||||
|
index a12fbd2..90fa56f 100644
|
||||||
|
--- a/src/format_ext2_kernel.ml
|
||||||
|
+++ b/src/format_ext2_kernel.ml
|
||||||
|
@@ -45,20 +45,27 @@ let rec build_kernel debug host_cpu copy_kernel kernel =
|
||||||
|
* are not present then we look in /lib/modules and /boot.
|
||||||
|
*)
|
||||||
|
let kernel_file, kernel_name, kernel_version, modpath =
|
||||||
|
+ if debug >= 1 then
|
||||||
|
+ printf "supermin: kernel: looking for kernel using environment variables ...\n%!";
|
||||||
|
match find_kernel_from_env_vars debug with
|
||||||
|
| Some k -> k
|
||||||
|
| None ->
|
||||||
|
+ if debug >= 1 then
|
||||||
|
+ printf "supermin: kernel: looking for kernels in /lib/modules/*/vmlinuz ...\n%!";
|
||||||
|
match find_kernel_from_lib_modules debug with
|
||||||
|
| Some k -> k
|
||||||
|
| None ->
|
||||||
|
+ if debug >= 1 then
|
||||||
|
+ printf "supermin: kernel: looking for kernels in /boot ...\n%!";
|
||||||
|
match find_kernel_from_boot debug host_cpu with
|
||||||
|
| Some k -> k
|
||||||
|
| None ->
|
||||||
|
error_no_kernels host_cpu in
|
||||||
|
|
||||||
|
if debug >= 1 then (
|
||||||
|
+ printf "supermin: kernel: picked vmlinuz %s\n%!" kernel_file;
|
||||||
|
printf "supermin: kernel: kernel_version %s\n" kernel_version;
|
||||||
|
- printf "supermin: kernel: modules %s\n%!" modpath;
|
||||||
|
+ printf "supermin: kernel: modpath %s\n%!" modpath;
|
||||||
|
);
|
||||||
|
|
||||||
|
copy_or_symlink_file copy_kernel kernel_file kernel;
|
||||||
|
@@ -69,18 +76,14 @@ and find_kernel_from_env_vars debug =
|
||||||
|
try
|
||||||
|
let kernel_env = getenv "SUPERMIN_KERNEL" in
|
||||||
|
if debug >= 1 then
|
||||||
|
- printf "supermin: kernel: SUPERMIN_KERNEL environment variable %s\n%!"
|
||||||
|
- kernel_env;
|
||||||
|
+ printf "supermin: kernel: SUPERMIN_KERNEL=%s\n%!" kernel_env;
|
||||||
|
let kernel_version =
|
||||||
|
try
|
||||||
|
let v = getenv "SUPERMIN_KERNEL_VERSION" in
|
||||||
|
if debug >= 1 then
|
||||||
|
- printf "supermin: kernel: SUPERMIN_KERNEL_VERSION environment variable %s\n%!" v;
|
||||||
|
+ printf "supermin: kernel: SUPERMIN_KERNEL_VERSION=%s\n%!" v;
|
||||||
|
v
|
||||||
|
with Not_found -> get_kernel_version_from_file kernel_env in
|
||||||
|
- if debug >= 1 then
|
||||||
|
- printf "supermin: kernel: SUPERMIN_KERNEL version %s\n%!"
|
||||||
|
- kernel_version;
|
||||||
|
let kernel_name = Filename.basename kernel_env in
|
||||||
|
let modpath = find_modpath debug kernel_version in
|
||||||
|
Some (kernel_env, kernel_name, kernel_version, modpath)
|
||||||
|
@@ -100,15 +103,9 @@ and find_kernel_from_lib_modules debug =
|
||||||
|
fun (_, _, a, _) (_, _, b, _) -> compare_version b a
|
||||||
|
) kernels in
|
||||||
|
|
||||||
|
- if kernels <> [] then (
|
||||||
|
- let kernel = List.hd kernels in
|
||||||
|
- if debug >= 1 then (
|
||||||
|
- let kernel_file, _, _, _ = kernel in
|
||||||
|
- printf "supermin: kernel: picked vmlinuz %s\n%!" kernel_file;
|
||||||
|
- );
|
||||||
|
- Some kernel
|
||||||
|
- ) else
|
||||||
|
- None
|
||||||
|
+ match kernels with
|
||||||
|
+ | kernel :: _ -> Some kernel
|
||||||
|
+ | [] -> None
|
||||||
|
|
||||||
|
and find_kernel_from_boot debug host_cpu =
|
||||||
|
let is_arm =
|
||||||
|
@@ -134,9 +131,6 @@ and find_kernel_from_boot debug host_cpu =
|
||||||
|
let kernel_name = List.hd files in
|
||||||
|
let kernel_version = get_kernel_version kernel_name in
|
||||||
|
|
||||||
|
- if debug >= 1 then
|
||||||
|
- printf "supermin: kernel: picked kernel %s\n%!" kernel_name;
|
||||||
|
-
|
||||||
|
(* Get the kernel modules. *)
|
||||||
|
let modpath = find_modpath debug kernel_version in
|
||||||
|
|
||||||
|
@@ -176,8 +170,7 @@ and find_modpath debug kernel_version =
|
||||||
|
try
|
||||||
|
let modpath = getenv "SUPERMIN_MODULES" in
|
||||||
|
if debug >= 1 then
|
||||||
|
- printf "supermin: kernel: SUPERMIN_MODULES environment variable = %s\n%!"
|
||||||
|
- modpath;
|
||||||
|
+ printf "supermin: kernel: SUPERMIN_MODULES=%s\n%!" modpath;
|
||||||
|
modpath
|
||||||
|
with Not_found ->
|
||||||
|
let modpath = "/lib/modules/" ^ kernel_version in
|
||||||
|
--
|
||||||
|
2.13.1
|
||||||
|
|
90
0004-kernel-Rearrange-the-order-of-functions.patch
Normal file
90
0004-kernel-Rearrange-the-order-of-functions.patch
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
From cb080ba09e0e2b78cf33d88acd510641118c07ca Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Thu, 3 Aug 2017 12:34:47 +0100
|
||||||
|
Subject: [PATCH 04/10] kernel: Rearrange the order of functions.
|
||||||
|
|
||||||
|
Rearrange the order of functions more logically.
|
||||||
|
|
||||||
|
Just code motion, no functional change.
|
||||||
|
---
|
||||||
|
src/format_ext2_kernel.ml | 50 +++++++++++++++++++++++------------------------
|
||||||
|
1 file changed, 25 insertions(+), 25 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
|
||||||
|
index 90fa56f..e2f8e4b 100644
|
||||||
|
--- a/src/format_ext2_kernel.ml
|
||||||
|
+++ b/src/format_ext2_kernel.ml
|
||||||
|
@@ -24,21 +24,6 @@ open Ext2fs
|
||||||
|
open Fnmatch
|
||||||
|
open Glob
|
||||||
|
|
||||||
|
-let patt_of_cpu host_cpu =
|
||||||
|
- let models =
|
||||||
|
- match host_cpu with
|
||||||
|
- | "mips" | "mips64" -> [host_cpu; "*-malta"]
|
||||||
|
- | "ppc" | "powerpc" | "powerpc64" -> ["ppc"; "powerpc"; "powerpc64"]
|
||||||
|
- | "sparc" | "sparc64" -> ["sparc"; "sparc64"]
|
||||||
|
- | "amd64" | "x86_64" -> ["amd64"; "x86_64"]
|
||||||
|
- | "parisc" | "parisc64" -> ["hppa"; "hppa64"]
|
||||||
|
- | "ppc64el" -> ["powerpc64le"]
|
||||||
|
- | _ when host_cpu.[0] = 'i' && host_cpu.[2] = '8' && host_cpu.[3] = '6' -> ["?86"]
|
||||||
|
- | _ when String.length host_cpu >= 5 && String.sub host_cpu 0 5 = "armv7" -> ["armmp"]
|
||||||
|
- | _ -> [host_cpu]
|
||||||
|
- in
|
||||||
|
- List.map (fun model -> sprintf "vmlinu?-*-%s" model) models
|
||||||
|
-
|
||||||
|
let rec build_kernel debug host_cpu copy_kernel kernel =
|
||||||
|
(* Locate the kernel.
|
||||||
|
* SUPERMIN_* environment variables override everything. If those
|
||||||
|
@@ -72,6 +57,17 @@ let rec build_kernel debug host_cpu copy_kernel kernel =
|
||||||
|
|
||||||
|
(kernel_version, modpath)
|
||||||
|
|
||||||
|
+and error_no_kernels host_cpu =
|
||||||
|
+ error "\
|
||||||
|
+failed to find a suitable kernel (host_cpu=%s).
|
||||||
|
+
|
||||||
|
+I looked for kernels in /boot and modules in /lib/modules.
|
||||||
|
+
|
||||||
|
+If this is a Xen guest, and you only have Xen domU kernels
|
||||||
|
+installed, try installing a fullvirt kernel (only for
|
||||||
|
+supermin use, you shouldn't boot the Xen guest with it)."
|
||||||
|
+ host_cpu
|
||||||
|
+
|
||||||
|
and find_kernel_from_env_vars debug =
|
||||||
|
try
|
||||||
|
let kernel_env = getenv "SUPERMIN_KERNEL" in
|
||||||
|
@@ -155,16 +151,20 @@ and kernel_filter patterns is_arm all_files =
|
||||||
|
) in
|
||||||
|
List.filter (fun filename -> has_modpath filename) files
|
||||||
|
|
||||||
|
-and error_no_kernels host_cpu =
|
||||||
|
- error "\
|
||||||
|
-failed to find a suitable kernel (host_cpu=%s).
|
||||||
|
-
|
||||||
|
-I looked for kernels in /boot and modules in /lib/modules.
|
||||||
|
-
|
||||||
|
-If this is a Xen guest, and you only have Xen domU kernels
|
||||||
|
-installed, try installing a fullvirt kernel (only for
|
||||||
|
-supermin use, you shouldn't boot the Xen guest with it)."
|
||||||
|
- host_cpu
|
||||||
|
+and patt_of_cpu host_cpu =
|
||||||
|
+ let models =
|
||||||
|
+ match host_cpu with
|
||||||
|
+ | "mips" | "mips64" -> [host_cpu; "*-malta"]
|
||||||
|
+ | "ppc" | "powerpc" | "powerpc64" -> ["ppc"; "powerpc"; "powerpc64"]
|
||||||
|
+ | "sparc" | "sparc64" -> ["sparc"; "sparc64"]
|
||||||
|
+ | "amd64" | "x86_64" -> ["amd64"; "x86_64"]
|
||||||
|
+ | "parisc" | "parisc64" -> ["hppa"; "hppa64"]
|
||||||
|
+ | "ppc64el" -> ["powerpc64le"]
|
||||||
|
+ | _ when host_cpu.[0] = 'i' && host_cpu.[2] = '8' && host_cpu.[3] = '6' -> ["?86"]
|
||||||
|
+ | _ when String.length host_cpu >= 5 && String.sub host_cpu 0 5 = "armv7" -> ["armmp"]
|
||||||
|
+ | _ -> [host_cpu]
|
||||||
|
+ in
|
||||||
|
+ List.map (fun model -> sprintf "vmlinu?-*-%s" model) models
|
||||||
|
|
||||||
|
and find_modpath debug kernel_version =
|
||||||
|
try
|
||||||
|
--
|
||||||
|
2.13.1
|
||||||
|
|
@ -0,0 +1,60 @@
|
|||||||
|
From fb7164c23b4e5161d22eaf266abd3e0bf55e7b1e Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Thu, 3 Aug 2017 12:47:49 +0100
|
||||||
|
Subject: [PATCH 05/10] kernel: Filter /boot kernels using has_modpath later.
|
||||||
|
|
||||||
|
/boot kernels are filtered using the has_modpath function.
|
||||||
|
This change just moves the test later, which has no effect
|
||||||
|
here but makes subsequent cleanups simpler.
|
||||||
|
---
|
||||||
|
src/format_ext2_kernel.ml | 25 +++++++++++++++----------
|
||||||
|
1 file changed, 15 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
|
||||||
|
index e2f8e4b..c44ae23 100644
|
||||||
|
--- a/src/format_ext2_kernel.ml
|
||||||
|
+++ b/src/format_ext2_kernel.ml
|
||||||
|
@@ -121,17 +121,22 @@ and find_kernel_from_boot debug host_cpu =
|
||||||
|
(* In original: ls -1dvr /boot/vmlinuz-* 2>/dev/null | grep -v xen *)
|
||||||
|
kernel_filter ["vmlinu?-*"] is_arm all_files in
|
||||||
|
|
||||||
|
- if files = [] then None
|
||||||
|
- else (
|
||||||
|
- let files = List.sort (fun a b -> compare_version b a) files in
|
||||||
|
- let kernel_name = List.hd files in
|
||||||
|
- let kernel_version = get_kernel_version kernel_name in
|
||||||
|
+ let files = List.sort (fun a b -> compare_version b a) files in
|
||||||
|
+ let kernels =
|
||||||
|
+ List.map (
|
||||||
|
+ fun kernel_name ->
|
||||||
|
+ let kernel_version = get_kernel_version kernel_name in
|
||||||
|
+ let kernel_file = "/boot" // kernel_name in
|
||||||
|
+ let modpath = find_modpath debug kernel_version in
|
||||||
|
+ (kernel_file, kernel_name, kernel_version, modpath)
|
||||||
|
+ ) files in
|
||||||
|
|
||||||
|
- (* Get the kernel modules. *)
|
||||||
|
- let modpath = find_modpath debug kernel_version in
|
||||||
|
+ let kernels =
|
||||||
|
+ List.filter (fun (_, kernel_name, _, _) -> has_modpath kernel_name) kernels in
|
||||||
|
|
||||||
|
- Some (("/boot" // kernel_name), kernel_name, kernel_version, modpath)
|
||||||
|
- )
|
||||||
|
+ match kernels with
|
||||||
|
+ | kernel :: _ -> Some kernel
|
||||||
|
+ | [] -> None
|
||||||
|
|
||||||
|
and kernel_filter patterns is_arm all_files =
|
||||||
|
let files =
|
||||||
|
@@ -149,7 +154,7 @@ and kernel_filter patterns is_arm all_files =
|
||||||
|
find filename "tegra" = -1
|
||||||
|
) files
|
||||||
|
) in
|
||||||
|
- List.filter (fun filename -> has_modpath filename) files
|
||||||
|
+ files
|
||||||
|
|
||||||
|
and patt_of_cpu host_cpu =
|
||||||
|
let models =
|
||||||
|
--
|
||||||
|
2.13.1
|
||||||
|
|
@ -0,0 +1,42 @@
|
|||||||
|
From 407bf152a24399c78eae114589100ba0923ef70a Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Thu, 3 Aug 2017 12:53:54 +0100
|
||||||
|
Subject: [PATCH 06/10] kernel: Change has_modpath function so it checks for
|
||||||
|
modpath // modules.dep.
|
||||||
|
|
||||||
|
---
|
||||||
|
src/format_ext2_kernel.ml | 11 ++++-------
|
||||||
|
1 file changed, 4 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
|
||||||
|
index c44ae23..0bb67fe 100644
|
||||||
|
--- a/src/format_ext2_kernel.ml
|
||||||
|
+++ b/src/format_ext2_kernel.ml
|
||||||
|
@@ -132,7 +132,7 @@ and find_kernel_from_boot debug host_cpu =
|
||||||
|
) files in
|
||||||
|
|
||||||
|
let kernels =
|
||||||
|
- List.filter (fun (_, kernel_name, _, _) -> has_modpath kernel_name) kernels in
|
||||||
|
+ List.filter (fun (_, _, _, modpath) -> has_modpath modpath) kernels in
|
||||||
|
|
||||||
|
match kernels with
|
||||||
|
| kernel :: _ -> Some kernel
|
||||||
|
@@ -183,12 +183,9 @@ and find_modpath debug kernel_version =
|
||||||
|
printf "supermin: kernel: picked modules path %s\n%!" modpath;
|
||||||
|
modpath
|
||||||
|
|
||||||
|
-and has_modpath kernel_name =
|
||||||
|
- try
|
||||||
|
- let kv = get_kernel_version kernel_name in
|
||||||
|
- modules_dep_exists kv
|
||||||
|
- with
|
||||||
|
- | Not_found -> false
|
||||||
|
+and has_modpath modpath =
|
||||||
|
+ try (stat (modpath // "modules.dep")).st_kind = S_REG
|
||||||
|
+ with Unix_error _ -> false
|
||||||
|
|
||||||
|
and get_kernel_version kernel_name =
|
||||||
|
if (string_prefix "vmlinuz-" kernel_name) ||
|
||||||
|
--
|
||||||
|
2.13.1
|
||||||
|
|
150
0007-kernel-Replace-how-kernel-version-information-is-fou.patch
Normal file
150
0007-kernel-Replace-how-kernel-version-information-is-fou.patch
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
From c859939113b939b5ad4237e8f4835cd33290357f Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Thu, 3 Aug 2017 13:06:41 +0100
|
||||||
|
Subject: [PATCH 07/10] kernel: Replace how kernel version information is
|
||||||
|
found.
|
||||||
|
|
||||||
|
The old code was fairly bogus. In the new code there is one "public"
|
||||||
|
function:
|
||||||
|
|
||||||
|
val get_kernel_version : bool -> string -> string option
|
||||||
|
|
||||||
|
which takes a full vmlinuz path and returns the kernel version from it
|
||||||
|
if possible (or None if not). This function first looks at the file
|
||||||
|
content to see if the version can be extracted, and if that fails
|
||||||
|
looks at the filename.
|
||||||
|
|
||||||
|
As a side effect of making this change, we also filter out kernels
|
||||||
|
from /boot where we cannot read the kernel version.
|
||||||
|
---
|
||||||
|
src/format_ext2_kernel.ml | 78 +++++++++++++++++++++++++++++++----------------
|
||||||
|
1 file changed, 51 insertions(+), 27 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
|
||||||
|
index 0bb67fe..55c5af9 100644
|
||||||
|
--- a/src/format_ext2_kernel.ml
|
||||||
|
+++ b/src/format_ext2_kernel.ml
|
||||||
|
@@ -79,7 +79,10 @@ and find_kernel_from_env_vars debug =
|
||||||
|
if debug >= 1 then
|
||||||
|
printf "supermin: kernel: SUPERMIN_KERNEL_VERSION=%s\n%!" v;
|
||||||
|
v
|
||||||
|
- with Not_found -> get_kernel_version_from_file kernel_env in
|
||||||
|
+ with Not_found ->
|
||||||
|
+ match get_kernel_version debug kernel_env with
|
||||||
|
+ | Some v -> v
|
||||||
|
+ | None -> raise Not_found in
|
||||||
|
let kernel_name = Filename.basename kernel_env in
|
||||||
|
let modpath = find_modpath debug kernel_version in
|
||||||
|
Some (kernel_env, kernel_name, kernel_version, modpath)
|
||||||
|
@@ -123,17 +126,17 @@ and find_kernel_from_boot debug host_cpu =
|
||||||
|
|
||||||
|
let files = List.sort (fun a b -> compare_version b a) files in
|
||||||
|
let kernels =
|
||||||
|
- List.map (
|
||||||
|
+ filter_map (
|
||||||
|
fun kernel_name ->
|
||||||
|
- let kernel_version = get_kernel_version kernel_name in
|
||||||
|
let kernel_file = "/boot" // kernel_name in
|
||||||
|
- let modpath = find_modpath debug kernel_version in
|
||||||
|
- (kernel_file, kernel_name, kernel_version, modpath)
|
||||||
|
+ match get_kernel_version debug kernel_file with
|
||||||
|
+ | None -> None
|
||||||
|
+ | Some kernel_version ->
|
||||||
|
+ let modpath = find_modpath debug kernel_version in
|
||||||
|
+ if not (has_modpath modpath) then None
|
||||||
|
+ else Some (kernel_file, kernel_name, kernel_version, modpath)
|
||||||
|
) files in
|
||||||
|
|
||||||
|
- let kernels =
|
||||||
|
- List.filter (fun (_, _, _, modpath) -> has_modpath modpath) kernels in
|
||||||
|
-
|
||||||
|
match kernels with
|
||||||
|
| kernel :: _ -> Some kernel
|
||||||
|
| [] -> None
|
||||||
|
@@ -187,24 +190,43 @@ and has_modpath modpath =
|
||||||
|
try (stat (modpath // "modules.dep")).st_kind = S_REG
|
||||||
|
with Unix_error _ -> false
|
||||||
|
|
||||||
|
-and get_kernel_version kernel_name =
|
||||||
|
- if (string_prefix "vmlinuz-" kernel_name) ||
|
||||||
|
- (string_prefix "vmlinux-" kernel_name) then (
|
||||||
|
- let kv = String.sub kernel_name 8 (String.length kernel_name - 8) in
|
||||||
|
- if modules_dep_exists kv then kv
|
||||||
|
- else get_kernel_version_from_name kernel_name
|
||||||
|
- ) else get_kernel_version_from_name kernel_name
|
||||||
|
-
|
||||||
|
-and modules_dep_exists kv =
|
||||||
|
- try (lstat ("/lib/modules/" ^ kv ^ "/modules.dep")).st_kind = S_REG
|
||||||
|
- with Unix_error _ -> false
|
||||||
|
-
|
||||||
|
-and get_kernel_version_from_name kernel_name =
|
||||||
|
- get_kernel_version_from_file ("/boot" // kernel_name)
|
||||||
|
+(* Extract the kernel version from a Linux kernel file.
|
||||||
|
+ *
|
||||||
|
+ * This first sees if we can get the information from the file
|
||||||
|
+ * content (see below) and if that fails tries to parse the
|
||||||
|
+ * filename.
|
||||||
|
+ *)
|
||||||
|
+and get_kernel_version debug kernel_file =
|
||||||
|
+ if debug >= 1 then
|
||||||
|
+ printf "supermin: kernel: kernel version of %s%!" kernel_file;
|
||||||
|
+ match get_kernel_version_from_file_content kernel_file with
|
||||||
|
+ | Some version ->
|
||||||
|
+ if debug >= 1 then printf " = %s (from content)\n%!" version;
|
||||||
|
+ Some version
|
||||||
|
+ | None ->
|
||||||
|
+ (* Try to work it out from the filename instead. *)
|
||||||
|
+ let basename = Filename.basename kernel_file in
|
||||||
|
+ if string_prefix "vmlinuz-" basename || string_prefix "vmlinux-" basename
|
||||||
|
+ then (
|
||||||
|
+ let version = String.sub basename 8 (String.length basename - 8) in
|
||||||
|
+ (* Does the version look reasonable? *)
|
||||||
|
+ let modpath = "/lib/modules" // version in
|
||||||
|
+ if has_modpath modpath then (
|
||||||
|
+ if debug >= 1 then printf " = %s (from filename)\n%!" version;
|
||||||
|
+ Some version
|
||||||
|
+ ) else (
|
||||||
|
+ if debug >= 1 then printf " = error, no modpath\n%!";
|
||||||
|
+ None
|
||||||
|
+ )
|
||||||
|
+ )
|
||||||
|
+ else (
|
||||||
|
+ if debug >= 1 then printf " = error, cannot parse filename\n%!";
|
||||||
|
+ None
|
||||||
|
+ )
|
||||||
|
|
||||||
|
(* Extract the kernel version from a Linux kernel file.
|
||||||
|
*
|
||||||
|
- * Returns a string containing the version or [Not_found] if the
|
||||||
|
+ * Returns a string containing the version or [None] if the
|
||||||
|
* file can't be read, is not a Linux kernel, or the version can't
|
||||||
|
* be found.
|
||||||
|
*
|
||||||
|
@@ -217,7 +239,7 @@ and get_kernel_version_from_name kernel_name =
|
||||||
|
*
|
||||||
|
* Bugs: probably limited to x86 kernels.
|
||||||
|
*)
|
||||||
|
-and get_kernel_version_from_file file =
|
||||||
|
+and get_kernel_version_from_file_content file =
|
||||||
|
try
|
||||||
|
let chan = open_in file in
|
||||||
|
let buf = read_string chan 514 4 in
|
||||||
|
@@ -247,10 +269,12 @@ and get_kernel_version_from_file file =
|
||||||
|
)
|
||||||
|
else raise Not_found
|
||||||
|
in
|
||||||
|
- loop 0
|
||||||
|
+ let version = loop 0 in
|
||||||
|
+ Some version
|
||||||
|
with
|
||||||
|
- | Sys_error _ -> raise Not_found
|
||||||
|
- | Invalid_argument _ -> raise Not_found
|
||||||
|
+ | Not_found
|
||||||
|
+ | Sys_error _
|
||||||
|
+ | Invalid_argument _ -> None
|
||||||
|
|
||||||
|
(* Read an unsigned little endian short at a specified offset in a file. *)
|
||||||
|
and read_leshort chan offset =
|
||||||
|
--
|
||||||
|
2.13.1
|
||||||
|
|
@ -0,0 +1,35 @@
|
|||||||
|
From 1cb54ab90e813e148e218cb274c97b08b610e3b9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Thu, 3 Aug 2017 13:09:06 +0100
|
||||||
|
Subject: [PATCH 08/10] kernel: Don't allow End_of_file exception to escape if
|
||||||
|
kernel is bogus (RHBZ#1477758).
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
If the kernel file is truncated (zero length or too short) then
|
||||||
|
functions such as ‘really_input’ raise End_of_file. Unfortunately
|
||||||
|
this exception could escape and kill the program. What we want to do
|
||||||
|
instead is to ignore such kernels. The combination of this commit and
|
||||||
|
the last commit ignores such kernels if they are found in /boot.
|
||||||
|
|
||||||
|
Reported by Charlie Martinez.
|
||||||
|
---
|
||||||
|
src/format_ext2_kernel.ml | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
|
||||||
|
index 55c5af9..e329adb 100644
|
||||||
|
--- a/src/format_ext2_kernel.ml
|
||||||
|
+++ b/src/format_ext2_kernel.ml
|
||||||
|
@@ -273,6 +273,7 @@ and get_kernel_version_from_file_content file =
|
||||||
|
Some version
|
||||||
|
with
|
||||||
|
| Not_found
|
||||||
|
+ | End_of_file
|
||||||
|
| Sys_error _
|
||||||
|
| Invalid_argument _ -> None
|
||||||
|
|
||||||
|
--
|
||||||
|
2.13.1
|
||||||
|
|
@ -0,0 +1,33 @@
|
|||||||
|
From bc33663a38bc401a5b5883e253cc93b0d3e67ef2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Thu, 3 Aug 2017 13:48:37 +0100
|
||||||
|
Subject: [PATCH 09/10] kernel: Simple renaming to make find_kernel_from_*
|
||||||
|
functions consistent.
|
||||||
|
|
||||||
|
No functional change, just renaming variables.
|
||||||
|
---
|
||||||
|
src/format_ext2_kernel.ml | 8 +++++---
|
||||||
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
|
||||||
|
index e329adb..44ba035 100644
|
||||||
|
--- a/src/format_ext2_kernel.ml
|
||||||
|
+++ b/src/format_ext2_kernel.ml
|
||||||
|
@@ -94,9 +94,11 @@ and find_kernel_from_lib_modules debug =
|
||||||
|
let files = Array.to_list files in
|
||||||
|
let kernels =
|
||||||
|
List.map (
|
||||||
|
- fun f ->
|
||||||
|
- let modpath = Filename.dirname f in
|
||||||
|
- f, Filename.basename f, Filename.basename modpath, modpath
|
||||||
|
+ fun kernel_file ->
|
||||||
|
+ let kernel_name = Filename.basename kernel_file in
|
||||||
|
+ let modpath = Filename.dirname kernel_file in
|
||||||
|
+ let kernel_version = Filename.basename modpath in
|
||||||
|
+ kernel_file, kernel_name, kernel_version, modpath
|
||||||
|
) files in
|
||||||
|
List.sort (
|
||||||
|
fun (_, _, a, _) (_, _, b, _) -> compare_version b a
|
||||||
|
--
|
||||||
|
2.13.1
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
From ea3b3dce6bb77dbe57f91044c30ab49693e88e2b Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||||
|
Date: Thu, 3 Aug 2017 13:09:06 +0100
|
||||||
|
Subject: [PATCH 10/10] kernel: Reject implausibly small kernels in
|
||||||
|
/lib/modules (RHBZ#1477758).
|
||||||
|
|
||||||
|
Previous changes will reject truncated / implausibly small kernel
|
||||||
|
files found under /boot, but because the code that looks for kernels
|
||||||
|
in /lib/modules works slightly differently it would not work there.
|
||||||
|
This uses a simple stat check to reject kernels there too.
|
||||||
|
|
||||||
|
Reported by Charlie Martinez.
|
||||||
|
---
|
||||||
|
src/format_ext2_kernel.ml | 14 +++++++++-----
|
||||||
|
1 file changed, 9 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/format_ext2_kernel.ml b/src/format_ext2_kernel.ml
|
||||||
|
index 44ba035..d5d529d 100644
|
||||||
|
--- a/src/format_ext2_kernel.ml
|
||||||
|
+++ b/src/format_ext2_kernel.ml
|
||||||
|
@@ -93,12 +93,16 @@ and find_kernel_from_lib_modules debug =
|
||||||
|
let files = glob "/lib/modules/*/vmlinuz" [GLOB_NOSORT; GLOB_NOESCAPE] in
|
||||||
|
let files = Array.to_list files in
|
||||||
|
let kernels =
|
||||||
|
- List.map (
|
||||||
|
+ filter_map (
|
||||||
|
fun kernel_file ->
|
||||||
|
- let kernel_name = Filename.basename kernel_file in
|
||||||
|
- let modpath = Filename.dirname kernel_file in
|
||||||
|
- let kernel_version = Filename.basename modpath in
|
||||||
|
- kernel_file, kernel_name, kernel_version, modpath
|
||||||
|
+ let size = try (stat kernel_file).st_size with Unix_error _ -> 0 in
|
||||||
|
+ if size < 10000 then None
|
||||||
|
+ else (
|
||||||
|
+ let kernel_name = Filename.basename kernel_file in
|
||||||
|
+ let modpath = Filename.dirname kernel_file in
|
||||||
|
+ let kernel_version = Filename.basename modpath in
|
||||||
|
+ Some (kernel_file, kernel_name, kernel_version, modpath)
|
||||||
|
+ )
|
||||||
|
) files in
|
||||||
|
List.sort (
|
||||||
|
fun (_, _, a, _) (_, _, b, _) -> compare_version b a
|
||||||
|
--
|
||||||
|
2.13.1
|
||||||
|
|
@ -31,7 +31,7 @@
|
|||||||
Summary: Tool for creating supermin appliances
|
Summary: Tool for creating supermin appliances
|
||||||
Name: supermin
|
Name: supermin
|
||||||
Version: 5.1.18
|
Version: 5.1.18
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
|
|
||||||
%if 0%{?rhel} >= 7
|
%if 0%{?rhel} >= 7
|
||||||
@ -49,6 +49,19 @@ Source1: http://libguestfs.org/download/supermin/%{name}-%{version}.tar.gz
|
|||||||
Source2: libguestfs.keyring
|
Source2: libguestfs.keyring
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# All upstream patches since 5.1.18.
|
||||||
|
Patch0001: 0001-prepare-Add-some-debugging-of-config-files-creating-.patch
|
||||||
|
# Fix supermin crash with truncated vmlinuz file (RHBZ#1477758).
|
||||||
|
Patch0002: 0002-kernel-Refactor-code-for-locating-the-kernel.patch
|
||||||
|
Patch0003: 0003-kernel-Tweak-debug-messages.patch
|
||||||
|
Patch0004: 0004-kernel-Rearrange-the-order-of-functions.patch
|
||||||
|
Patch0005: 0005-kernel-Filter-boot-kernels-using-has_modpath-later.patch
|
||||||
|
Patch0006: 0006-kernel-Change-has_modpath-function-so-it-checks-for-.patch
|
||||||
|
Patch0007: 0007-kernel-Replace-how-kernel-version-information-is-fou.patch
|
||||||
|
Patch0008: 0008-kernel-Don-t-allow-End_of_file-exception-to-escape-i.patch
|
||||||
|
Patch0009: 0009-kernel-Simple-renaming-to-make-find_kernel_from_-fun.patch
|
||||||
|
Patch0010: 0010-kernel-Reject-implausibly-small-kernels-in-lib-modul.patch
|
||||||
|
|
||||||
BuildRequires: /usr/bin/pod2man
|
BuildRequires: /usr/bin/pod2man
|
||||||
BuildRequires: /usr/bin/pod2html
|
BuildRequires: /usr/bin/pod2html
|
||||||
BuildRequires: rpm
|
BuildRequires: rpm
|
||||||
@ -170,6 +183,10 @@ make check || {
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Aug 03 2017 Richard W.M. Jones <rjones@redhat.com> - 5.1.18-4
|
||||||
|
- Fix supermin crash with truncated vmlinuz file (RHBZ#1477758).
|
||||||
|
- Include all upstream patches since 5.1.18.
|
||||||
|
|
||||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 5.1.18-3
|
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 5.1.18-3
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user