--- /dev/null
+From stable-bounces@linux.kernel.org Fri Mar 24 13:17:43 2006
+Message-Id: <200603242116.k2OLGU1I029591@shell0.pdx.osdl.net>
+To: pazke@donpac.ru, minyard@acm.org, stable@kernel.org, mm-commits@vger.kernel.org
+From: Andrey Panin <pazke@donpac.ru>
+Date: Fri, 24 Mar 2006 13:18:52 -0800
+Cc:
+Subject: DMI: fix DMI onboard device discovery
+
+From: Andrey Panin <pazke@donpac.ru>
+
+Attached patch fixes invalid pointer arithmetic in DMI code to make onboard
+device discovery working again.
+
+akpm: bug has been present since dmi_find_device() was added in 2.6.14.
+Affects ipmi only (I think) - the symptoms weren't described.
+
+akpm: changed to use pointer arithmetic rather than open-coded sizeof.
+
+Signed-off-by: Andrey Panin <pazke@donpac.ru>
+Cc: Corey Minyard <minyard@acm.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+---
+
+ arch/i386/kernel/dmi_scan.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- linux-2.6.16.orig/arch/i386/kernel/dmi_scan.c
++++ linux-2.6.16/arch/i386/kernel/dmi_scan.c
+@@ -106,7 +106,7 @@ static void __init dmi_save_devices(stru
+ struct dmi_device *dev;
+
+ for (i = 0; i < count; i++) {
+- char *d = ((char *) dm) + (i * 2);
++ char *d = (char *)(dm + 1) + (i * 2);
+
+ /* Skip disabled device */
+ if ((*d & 0x80) == 0)