<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
[IDE] siimage.c: fix PIO settings programming

From: Ryan Earl &lt;heretic@clanhk.org&gt;.

A 32-bit argument was being passed instead of a 16-bit argument to the
function referenced by hwif-&gt;OUTW(val, port), thus clobbering the stack.

The 16 most significant bits of speedt were being used as the whole first
argument (this will always be 0) and the lower order 16-bits of speedt were
then being used as the upper order 16-bits of the address/port, while the
upper 16-bits of the real address/port were the lower 16-bits.

 drivers/ide/pci/siimage.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff -puN drivers/ide/pci/siimage.c~ide-siimage-stack-fix drivers/ide/pci/siimage.c
--- linux-2.6.0-test11/drivers/ide/pci/siimage.c~ide-siimage-stack-fix	2003-12-07 18:04:46.512116120 +0100
+++ linux-2.6.0-test11-root/drivers/ide/pci/siimage.c	2003-12-07 18:10:07.997242952 +0100
@@ -1,5 +1,5 @@
 /*
- * linux/drivers/ide/pci/siimage.c		Version 1.07	Nov 30, 2003
+ * linux/drivers/ide/pci/siimage.c		Version 1.08	Dec 7, 2003
  *
  * Copyright (C) 2001-2002	Andre Hedrick &lt;andre@linux-ide.org&gt;
  * Copyright (C) 2003		Red Hat &lt;alan@redhat.com&gt;
@@ -266,7 +266,7 @@ static byte siimage_taskfile_timing (ide
 static void siimage_tuneproc (ide_drive_t *drive, byte mode_wanted)
 {
 	ide_hwif_t *hwif	= HWIF(drive);
-	u32 speedt		= 0;
+	u16 speedt		= 0;
 	u16 speedp		= 0;
 	unsigned long addr	= siimage_seldev(drive, 0x04);
 	unsigned long tfaddr	= siimage_selreg(hwif, 0x02);

_
</pre></body></html>