mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andi Kleen <ak@suse.de>
To: Rene Herman <rene.herman@gmail.com>, Andi Kleen <ak@suse.de>,
	Zachary Amsden <zach@vmware.com>,
	Jeremy Fitzhardinge <jeremy@goop.org>,
	linux-kernel@vger.kernel.org, patches@x86-64.org
Subject: [PATCH] [17/35] i386: probe_roms() cleanup
Date: Sat, 28 Apr 2007 19:52:41 +0200 (CEST)	[thread overview]
Message-ID: <20070428175242.050AE151D1@wotan.suse.de> (raw)
In-Reply-To: <20070428752.712152000@suse.de>


From: Rene Herman <rene.herman@gmail.com>

Remove the assumption that if the first page of a legacy ROM is mapped,
it'll all be mapped. This'll also stop people reading this code from
wondering if they're looking at a bug...

Signed-off-by: Rene Herman <rene.herman@gmail.com>
Signed-off-by: Martin Murray <murrayma@citi.umich.edu>
Signed-off-by: Andi Kleen <ak@suse.de>
Cc: Andi Kleen <ak@suse.de>
Cc: Zachary Amsden <zach@vmware.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 arch/i386/kernel/e820.c |   29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

Index: linux/arch/i386/kernel/e820.c
===================================================================
--- linux.orig/arch/i386/kernel/e820.c
+++ linux/arch/i386/kernel/e820.c
@@ -161,26 +161,27 @@ static struct resource standard_io_resou
 
 static int __init romsignature(const unsigned char *rom)
 {
+	const unsigned short * const ptr = (const unsigned short *)rom;
 	unsigned short sig;
 
-	return probe_kernel_address((const unsigned short *)rom, sig) == 0 &&
-	       sig == ROMSIGNATURE;
+	return probe_kernel_address(ptr, sig) == 0 && sig == ROMSIGNATURE;
 }
 
-static int __init romchecksum(unsigned char *rom, unsigned long length)
+static int __init romchecksum(const unsigned char *rom, unsigned long length)
 {
-	unsigned char sum;
+	unsigned char sum, c;
 
-	for (sum = 0; length; length--)
-		sum += *rom++;
-	return sum == 0;
+	for (sum = 0; length && probe_kernel_address(rom++, c) == 0; length--)
+		sum += c;
+	return !length && !sum;
 }
 
 static void __init probe_roms(void)
 {
+	const unsigned char *rom;
 	unsigned long start, length, upper;
-	unsigned char *rom;
-	int	      i;
+	unsigned char c;
+	int i;
 
 	/* video rom */
 	upper = adapter_rom_resources[0].start;
@@ -191,8 +192,11 @@ static void __init probe_roms(void)
 
 		video_rom_resource.start = start;
 
+		if (probe_kernel_address(rom + 2, c) != 0)
+			continue;
+
 		/* 0 < length <= 0x7f * 512, historically */
-		length = rom[2] * 512;
+		length = c * 512;
 
 		/* if checksum okay, trust length byte */
 		if (length && romchecksum(rom, length))
@@ -226,8 +230,11 @@ static void __init probe_roms(void)
 		if (!romsignature(rom))
 			continue;
 
+		if (probe_kernel_address(rom + 2, c) != 0)
+			continue;
+
 		/* 0 < length <= 0x7f * 512, historically */
-		length = rom[2] * 512;
+		length = c * 512;
 
 		/* but accept any length that fits if checksum okay */
 		if (!length || start + length > upper || !romchecksum(rom, length))

  parent reply	other threads:[~2007-04-28 17:55 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-28 17:52 [PATCH] [0/35] Some x86 2.6.22 candidate patches for review Andi Kleen
2007-04-28 17:52 ` [PATCH] [1/35] i386: revert i386-fix-the-verify_quirk_intel_irqbalance Andi Kleen
2007-04-28 17:52 ` [PATCH] [2/35] x86_64: revert x86_64-mm-add-genapic_force Andi Kleen
2007-04-28 17:52 ` [PATCH] [3/35] x86: revert x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 Andi Kleen
2007-04-28 17:52 ` [PATCH] [4/35] x86_64: optimize & fix APIC mode setup Andi Kleen
2007-04-28 17:52 ` [PATCH] [5/35] x86_64: always use physical delivery mode on > 8 CPUs Andi Kleen
2007-04-28 17:52 ` [PATCH] [6/35] x86_64: remove clustered APIC mode Andi Kleen
2007-04-28 17:52 ` [PATCH] [7/35] x86: default to physical mode on hotplug CPU kernels Andi Kleen
2007-04-28 17:52 ` [PATCH] [8/35] x86_64: a memcpy that tries to reduce cache pressure Andi Kleen
2007-04-30  7:26   ` [patches] [PATCH] [8/35] x86_64: a memcpy that tries to reducecache pressure Jan Beulich
2007-04-30  9:04     ` Andi Kleen
2007-04-30 16:14       ` Bryan O'Sullivan
2007-04-30 16:25         ` Andi Kleen
2007-04-28 17:52 ` [PATCH] [9/35] i386: adjustments to page table dump during oops (v4) Andi Kleen
2007-04-28 17:52 ` [PATCH] [10/35] x86: adjust inclusion of asm/fixmap.h Andi Kleen
2007-04-28 17:52 ` [PATCH] [11/35] x86_64: adjust inclusion of asm/vsyscall32.h Andi Kleen
2007-04-28 17:52 ` [PATCH] [12/35] x86: consolidate smp_send_stop() Andi Kleen
2007-04-28 17:52 ` [PATCH] [13/35] i386: No need to use -traditional for processing asm in i386/kernel/ Andi Kleen
2007-04-28 17:52 ` [PATCH] [14/35] i386: mtrr range check correction Andi Kleen
2007-04-28 17:52 ` [PATCH] [15/35] i386: pit_latch_buggy has no effect Andi Kleen
2007-04-28 17:52 ` [PATCH] [16/35] i386: Add an option for the VIA C7 which sets appropriate L1 cache Andi Kleen
2007-04-28 18:08   ` Jeff Garzik
2007-04-28 18:28     ` Dave Jones
2007-04-28 17:52 ` Andi Kleen [this message]
2007-04-28 17:52 ` [PATCH] [18/35] x86_64: a few missing entry.S annotations Andi Kleen
2007-04-28 17:52 ` [PATCH] [19/35] i386: Add dwarf2 annotations to *_user and checksum functions Andi Kleen
2007-04-28 17:52 ` [PATCH] [20/35] x86: Fix i386 and x86_64 fault information pollution Andi Kleen
2007-04-28 17:52 ` [PATCH] [21/35] x86_64: Some cleanup in time.c Andi Kleen
2007-04-28 17:52 ` [PATCH] [22/35] i386: i386 make NMI use PERFCTR1 for architectural perfmon (take 2) Andi Kleen
2007-04-28 17:52 ` [PATCH] [23/35] x86_64: x86_64 " Andi Kleen
2007-04-28 17:52 ` [PATCH] [24/35] i386: Add __init to probe_bigsmp Andi Kleen
2007-04-28 17:52 ` [PATCH] [25/35] i386: Change sysenter_setup to __cpuinit & improve __INIT, __INITDATA Andi Kleen
2007-04-28 17:52 ` [PATCH] [26/35] x86_64: Correct max number of CPUs in Kconfig Andi Kleen
2007-04-28 17:52 ` [PATCH] [27/35] i386: Support Oprofile for AMD Family 10 CPUs Andi Kleen
2007-04-28 17:52 ` [PATCH] [28/35] x86: Drop cc-options call for all options supported in gcc 3.2+ Andi Kleen
2007-04-28 17:52 ` [PATCH] [29/35] i386: Update __copy_to_user_inatomic linuxdoc description Andi Kleen
2007-04-28 17:52 ` [PATCH] [30/35] i386: clean up mach_reboot_fixups Andi Kleen
2007-04-28 17:52 ` [PATCH] [31/35] i386: Fix usage of -mtune when X86_GENERIC=y or CONFIG_MCORE2=y Andi Kleen
2007-04-28 17:52 ` [PATCH] [32/35] x86_64: Remove unused set_seg_base Andi Kleen
2007-04-28 17:52 ` [PATCH] [33/35] x86_64: Remove duplicated code for reading control registers Andi Kleen
2007-04-28 17:53 ` [PATCH] [34/35] x86_64: fix cpu MHz reporting on constant_tsc cpus Andi Kleen
2007-04-28 17:53 ` [PATCH] [35/35] i386: Simplify smp_call_function*() by using common implementation Andi Kleen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070428175242.050AE151D1@wotan.suse.de \
    --to=ak@suse.de \
    --cc=jeremy@goop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patches@x86-64.org \
    --cc=rene.herman@gmail.com \
    --cc=zach@vmware.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome