mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Carl-Daniel Hailfinger <c-d.hailfinger.kernel.2004@gmx.net>
To: Matt Domsch <Matt_Domsch@dell.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: [PATCH][RFC] Add boot sector checksums to EDD
Date: Wed, 10 Nov 2004 05:43:00 +0100	[thread overview]
Message-ID: <41919C54.8040403@gmx.net> (raw)

Hi Matt,

this first draft of a patch to implement boot sector checksums in EDD.
Since the comments in edd.S and edd.h discourage changing some offsets,
I made my code overwrite the /sys/firmware/edd/int13_dev*/mbr_signature
file contents. For a later patch I would suggest to add a mbr_checksum
file, so the two can coexist.
The patch is tested and didn't break anything on my machine so far.
Please comment.

Regards,
Carl-Daniel
http://www.hailfinger.org/

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.kernel.2004@gmx.net>

--- ./linux-2.6.9/arch/i386/boot/edd.S~	2004-11-05 14:27:08.000000000 +0100
+++ ./linux-2.6.9/arch/i386/boot/edd.S	2004-11-06 23:55:23.000000000 +0100
@@ -5,7 +5,9 @@
  *   projects 1572D, 1484D, 1386D, 1226DT
  * disk signature read by Matt Domsch <Matt_Domsch@dell.com>
  *	and Andrew Wilks <Andrew_Wilks@dell.com> September 2003, June 2004
- * legacy CHS retreival by Patrick J. LoPresti <patl@users.sourceforge.net>
+ * disk checksum computation by Carl-Daniel Hailfinger
+ *	<c-d.hailfinger.kernel.2004@gmx.net> November 2004
+ * legacy CHS retrieval by Patrick J. LoPresti <patl@users.sourceforge.net>
  *      March 2004
  * Use EXTENDED READ calls if possible, Matt Domsch, October 2004
  */
@@ -88,10 +90,21 @@
 	movb	%dl, %bl			# copy drive number to ebx
 	sub	$0x80, %bl			# subtract 80h from drive number
 	shlw	$2, %bx				# multiply by 4
+	movw	%bx, %cx			# save bx
 	addw	$EDD_MBR_SIG_BUF, %bx		# add to sig_buf
 						# bx now points to the right sig slot
 	movl	(EDDBUF+EDD_MBR_SIG_OFFSET), %eax # read sig out of the MBR
 	movl	%eax, (%bx)			# store success
+	movw	%cx, %bx			# restore bx
+	addw	$EDD_MBR_CKSUM_BUF, %bx		# add to cksum_buf
+						# bx now points to the right cksum slot
+	xorl	%eax, %eax			# clear eax
+	movl	$0x7f, %ecx			# loop counter
+edd_mbr_compute_checksum:
+	xorl	EDDBUF(,%ecx,4), %eax		# compute checksum of mbr
+	decl	%ecx
+	jns	edd_mbr_compute_checksum	# until the checksum in complete
+	movl	%eax, (%bx)			# store success
 	incb	(EDD_MBR_SIG_NR_BUF)		# note that we stored something
 edd_mbr_sig_next:
 	incb	%dl				# increment to next device
--- ./linux-2.6.9/include/linux/edd.h~	2004-11-05 14:27:47.000000000 +0100
+++ ./linux-2.6.9/include/linux/edd.h	2004-11-06 23:43:20.000000000 +0100
@@ -50,6 +50,7 @@
 #define EDD_MBR_SIG_OFFSET 0x1B8  /* offset of signature in the MBR */
 #define EDD_DEV_ADDR_PACKET_LEN 0x10  /* for int13 fn42 */
 #define EDD_MBR_SIG_BUF    0x290  /* addr in boot params */
+#define EDD_MBR_CKSUM_BUF    0x290  /* addr in boot params */
 #define EDD_MBR_SIG_MAX 16        /* max number of signatures to store */
 #define EDD_MBR_SIG_NR_BUF 0x1ea  /* addr of number of MBR signtaures at EDD_MBR_SIG_BUF
 				     in boot_params - treat this as 1 byte  */

             reply	other threads:[~2004-11-10  4:43 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-10  4:43 Carl-Daniel Hailfinger [this message]
     [not found] <4191A8D7.1030300@michaels-house.net>
     [not found] ` <4191ABE8.1060703@gmx.net>
2004-11-10 15:35   ` Matt Domsch

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=41919C54.8040403@gmx.net \
    --to=c-d.hailfinger.kernel.2004@gmx.net \
    --cc=Matt_Domsch@dell.com \
    --cc=linux-kernel@vger.kernel.org \
    /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