--Boundary-01=_UWy3IhuNYHpFHUe
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
On Sunday 07 September 2008, H. Peter Anvin wrote:
itten is the "first principles" test that applies here.
OK I have been using this for some time. I do not actually insist on
returning "failure" for zero signature; my main concern was duplicated
signature resulted from not clearing read buffer. Still I assume that
zero signature is the same as no signature; i.e. even if disk is physically
present but zeroed out there is no point in presenting mbr_signature in
sysfs either.
--Boundary-01=_UWy3IhuNYHpFHUe
Content-Type: text/x-diff;
charset="utf-8";
name="fix-edd-detection-v2"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline;
filename="fix-edd-detection-v2"
Subject: [PATCH] Fix ghost entries under /sys/firmware/edd take 2
=46rom: Andrey Borzenkov < arvidjaar@mail.ru>
Some BIOSes do not indicate error when trying to read from non-
existing device. Zero buffer before reading and check that we
actually got some data.
This was fixed in different way for edd.S in
http://marc.info/?l=3Dlinux-kernel&m=3D114087765422490&w=3D2, but lost
again when edd.S was rewritten in C.
Signed-off-by: Andrey Borzenkov < arvidjaar@mail.ru>
=2D--
arch/x86/boot/edd.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/arch/x86/boot/edd.c b/arch/x86/boot/edd.c
index d93cbc6..0388234 100644
=2D-- a/arch/x86/boot/edd.c
+++ b/arch/x86/boot/edd.c
@@ -58,11 +58,12 @@ static u32 read_mbr_sig(u8 devno, struct edd_info *ei, =
u32 *mbrsig)
if (mbrbuf_end > (char *)(size_t)boot_params.hdr.heap_end_ptr)
return -1;
=20
+ memset(mbrbuf_ptr, 0, sector_size);
if (read_mbr(devno, mbrbuf_ptr))
return -1;
=20
*mbrsig =3D *(u32 *)&mbrbuf_ptr[EDD_MBR_SIG_OFFSET];
=2D return 0;
+ return -!*mbrsig; /* treat zero signature as no sig */
}
=20
static int get_edd_info(u8 devno, struct edd_info *ei)
--Boundary-01=_UWy3IhuNYHpFHUe--