efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch
Resolves: #873629 - efibootmgr-0.5.4-Remove-device-path-padding-on-non-Itanium.patch - improve spec conformance - efibootmgr-0.5.4-fix-minor-memory-leak.patch - from upstream - efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch - from upstream - efibootmgr-0.5.4-make_boot_var-does-not-check-for-failed-status-with-.patch - from upstream
This commit is contained in:
parent
c20640d5d8
commit
6940e36b33
@ -0,0 +1,28 @@
|
|||||||
|
From 2d8f962284f40b918c0fc8385e58fcba219ddc12 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Fedora Ninjas <pjones@fedoraproject.org>
|
||||||
|
Date: Wed, 28 Nov 2012 17:13:24 -0500
|
||||||
|
Subject: [PATCH 2/5] Remove device path padding on non-Itanium
|
||||||
|
|
||||||
|
This code predates EFI support on any x86 hardware, and it's a strict
|
||||||
|
violation of the specification. Windows doesn't do it either.
|
||||||
|
---
|
||||||
|
src/include/efi.h | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/include/efi.h b/src/include/efi.h
|
||||||
|
index be667ae..c2ac853 100644
|
||||||
|
--- a/src/include/efi.h
|
||||||
|
+++ b/src/include/efi.h
|
||||||
|
@@ -294,7 +294,9 @@ typedef struct {
|
||||||
|
uint8_t signature[16];
|
||||||
|
uint8_t mbr_type;
|
||||||
|
uint8_t signature_type;
|
||||||
|
+#ifdef __ia64
|
||||||
|
uint8_t padding[6]; /* Emperically needed */
|
||||||
|
+#endif
|
||||||
|
} __attribute__((packed)) HARDDRIVE_DEVICE_PATH;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
--
|
||||||
|
1.8.0
|
||||||
|
|
30
efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch
Normal file
30
efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
From 6edc3ed5479b575f87eb51e335957b05fdd04fe8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Fedora Ninjas <pjones@fedoraproject.org>
|
||||||
|
Date: Wed, 28 Nov 2012 16:49:18 -0500
|
||||||
|
Subject: [PATCH 1/5] Work around broken Apple firmware
|
||||||
|
|
||||||
|
Alex Murray found that Apple's firmware sets an invalid EFI attribute on
|
||||||
|
BootCurrent, which newer versions of the kernel then reject. This patch
|
||||||
|
from him simply masks off the extraneous bit.
|
||||||
|
---
|
||||||
|
src/lib/efivars_sysfs.c | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/lib/efivars_sysfs.c b/src/lib/efivars_sysfs.c
|
||||||
|
index 182c70f..ea87325 100644
|
||||||
|
--- a/src/lib/efivars_sysfs.c
|
||||||
|
+++ b/src/lib/efivars_sysfs.c
|
||||||
|
@@ -55,6 +55,10 @@ sysfs_read_variable(const char *name, efi_variable_t *var)
|
||||||
|
return EFI_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
+ /* latest apple firmware sets high bit which appears invalid
|
||||||
|
+ to the linux kernel if we write it back so lets zero it out
|
||||||
|
+ if it is set since it would be invalid to set it anyway */
|
||||||
|
+ var->Attributes = var->Attributes & ~(1 << 31);
|
||||||
|
return var->Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.8.0
|
||||||
|
|
29
efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch
Normal file
29
efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
From f9f4ee75ad745637a47bf17ed968101b1ffbcc1d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Matt Domsch <Matt_Domsch@dell.com>
|
||||||
|
Date: Thu, 23 Jul 2009 14:20:19 -0500
|
||||||
|
Subject: [PATCH 4/5] fix disk minor number discovery
|
||||||
|
|
||||||
|
Raymund Will noted disk_info_from_fd() incorrectly used logical &&
|
||||||
|
instead of bitwise & when obtaining the minor number.
|
||||||
|
|
||||||
|
Reported in https://bugzilla.novell.com/show_bug.cgi?id=524529#c1
|
||||||
|
---
|
||||||
|
src/lib/disk.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/lib/disk.c b/src/lib/disk.c
|
||||||
|
index ebfe619..8ad590b 100644
|
||||||
|
--- a/src/lib/disk.c
|
||||||
|
+++ b/src/lib/disk.c
|
||||||
|
@@ -55,7 +55,7 @@ disk_info_from_fd(int fd,
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
major = buf.st_dev >> 8;
|
||||||
|
- minor = buf.st_dev && 0xFF;
|
||||||
|
+ minor = buf.st_dev & 0xFF;
|
||||||
|
|
||||||
|
/* IDE disks can have up to 64 partitions, or 6 bits worth,
|
||||||
|
* and have one bit for the disk number.
|
||||||
|
--
|
||||||
|
1.8.0
|
||||||
|
|
29
efibootmgr-0.5.4-fix-minor-memory-leak.patch
Normal file
29
efibootmgr-0.5.4-fix-minor-memory-leak.patch
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
From 36c3a19c62cc3b6841e363712c3c78ef5915122d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Matt Domsch <Matt_Domsch@dell.com>
|
||||||
|
Date: Thu, 23 Jul 2009 14:18:11 -0500
|
||||||
|
Subject: [PATCH 3/5] fix minor memory leak
|
||||||
|
|
||||||
|
David Binderman noted new_data was being allocated but not freed. Not
|
||||||
|
a big deal as the program exits soon thereafter (and is thus freed),
|
||||||
|
but worth fixing anyhow.
|
||||||
|
|
||||||
|
Fixes https://bugzilla.novell.com/show_bug.cgi?id=524529#c1
|
||||||
|
---
|
||||||
|
src/efibootmgr/efibootmgr.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/src/efibootmgr/efibootmgr.c b/src/efibootmgr/efibootmgr.c
|
||||||
|
index b984143..de67af0 100644
|
||||||
|
--- a/src/efibootmgr/efibootmgr.c
|
||||||
|
+++ b/src/efibootmgr/efibootmgr.c
|
||||||
|
@@ -328,6 +328,7 @@ add_to_boot_order(uint16_t num)
|
||||||
|
/* Now new_data has what we need */
|
||||||
|
memcpy(&(boot_order.Data), new_data, new_data_size);
|
||||||
|
boot_order.DataSize = new_data_size;
|
||||||
|
+ free(new_data);
|
||||||
|
return create_or_edit_variable(&boot_order);
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.8.0
|
||||||
|
|
@ -0,0 +1,47 @@
|
|||||||
|
From 5fcfccb39089febb89945b841f489b5acc7638ce Mon Sep 17 00:00:00 2001
|
||||||
|
From: Lane Winner <lane.winner@oracle.com>
|
||||||
|
Date: Tue, 24 Apr 2012 12:58:57 -0500
|
||||||
|
Subject: [PATCH 5/5] make_boot_var does not check for failed status with
|
||||||
|
create_variable. This can result in a memory leak.
|
||||||
|
Additionally the user should be notified of the
|
||||||
|
problem.
|
||||||
|
|
||||||
|
We encounter this issue on one system after filling up the UEFI boot list
|
||||||
|
with dummy devices.
|
||||||
|
|
||||||
|
The patch fix the problem. It was verified on a Mensa system using RHEL 6.0
|
||||||
|
|
||||||
|
Signed-off-by: Yinghai Lu<yinghai@kernel.org>
|
||||||
|
---
|
||||||
|
src/efibootmgr/efibootmgr.c | 8 +++++++-
|
||||||
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/efibootmgr/efibootmgr.c b/src/efibootmgr/efibootmgr.c
|
||||||
|
index de67af0..236365a 100644
|
||||||
|
--- a/src/efibootmgr/efibootmgr.c
|
||||||
|
+++ b/src/efibootmgr/efibootmgr.c
|
||||||
|
@@ -239,6 +239,7 @@ warn_duplicate_name(list_t *boot_list)
|
||||||
|
static var_entry_t *
|
||||||
|
make_boot_var(list_t *boot_list)
|
||||||
|
{
|
||||||
|
+ efi_status_t status;
|
||||||
|
var_entry_t *boot;
|
||||||
|
int free_number;
|
||||||
|
list_t *pos;
|
||||||
|
@@ -271,7 +272,12 @@ make_boot_var(list_t *boot_list)
|
||||||
|
free(boot);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
- create_variable(&boot->var_data);
|
||||||
|
+
|
||||||
|
+ status = create_variable(&boot->var_data);
|
||||||
|
+ if (status != EFI_SUCCESS) {
|
||||||
|
+ free(boot);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
list_add_tail(&boot->list, boot_list);
|
||||||
|
return boot;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.8.0
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
Summary: EFI Boot Manager
|
Summary: EFI Boot Manager
|
||||||
Name: efibootmgr
|
Name: efibootmgr
|
||||||
Version: 0.5.4
|
Version: 0.5.4
|
||||||
Release: 14%{?dist}
|
Release: 15%{?dist}
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: http://linux.dell.com/%{name}/
|
URL: http://linux.dell.com/%{name}/
|
||||||
@ -17,6 +17,11 @@ Obsoletes: elilo <= 3.6-5
|
|||||||
Source0: http://linux.dell.com/%{name}/permalink/%{name}-%{version}.tar.gz
|
Source0: http://linux.dell.com/%{name}/permalink/%{name}-%{version}.tar.gz
|
||||||
Patch0: efibootmgr-0.5.4-default-to-grub.patch
|
Patch0: efibootmgr-0.5.4-default-to-grub.patch
|
||||||
Patch1: efibootmgr-0.5.4-support-4k-sectors.patch
|
Patch1: efibootmgr-0.5.4-support-4k-sectors.patch
|
||||||
|
Patch2: efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch
|
||||||
|
Patch3: efibootmgr-0.5.4-Remove-device-path-padding-on-non-Itanium.patch
|
||||||
|
Patch4: efibootmgr-0.5.4-fix-minor-memory-leak.patch
|
||||||
|
Patch5: efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch
|
||||||
|
Patch6: efibootmgr-0.5.4-make_boot_var-does-not-check-for-failed-status-with-.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
%{name} displays and allows the user to edit the Intel Extensible
|
%{name} displays and allows the user to edit the Intel Extensible
|
||||||
@ -54,6 +59,17 @@ rm -rf %{buildroot}
|
|||||||
%doc README INSTALL COPYING
|
%doc README INSTALL COPYING
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
|
||||||
|
* Thu Apr 25 2013 Matthew Garrett <mjg59@srcf.ucam.org> - 0.5.4-15
|
||||||
|
- efibootmgr-0.5.4-Work-around-broken-Apple-firmware.patch
|
||||||
|
Resolves: #873629
|
||||||
|
- efibootmgr-0.5.4-Remove-device-path-padding-on-non-Itanium.patch - improve
|
||||||
|
spec conformance
|
||||||
|
- efibootmgr-0.5.4-fix-minor-memory-leak.patch - from upstream
|
||||||
|
- efibootmgr-0.5.4-fix-disk-minor-number-discovery.patch - from upstream
|
||||||
|
- efibootmgr-0.5.4-make_boot_var-does-not-check-for-failed-status-with-.patch -
|
||||||
|
from upstream
|
||||||
|
|
||||||
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.5.4-14
|
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.5.4-14
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user