[PATCH 3/3] scsi : megaraid_{mm,mbox}: a fix on "kernel unaligned access address" issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

This is a third patch which follows prevous two patches ([PATCH 1/3] and
[PATCH 2/3]).

There was an issue in the data structure defined by megaraid driver
casuing "kernel unaligned access.." messages to be displayed during
IOCTL on IA64 platform.

The issue has been reported/fixed by Sakurai Hiroomi
[[email protected]].

Thank you Sakurai for you help.

Thank you,

Seokmann

Signed-Off By: Seokmann Ju <[email protected]>
---
diff -Naur inqwithevpd/Documentation/scsi/ChangeLog.megaraid
unaligned/Documentation/scsi/ChangeLog.megaraid
--- inqwithevpd/Documentation/scsi/ChangeLog.megaraid	2006-07-24
15:35:02.000000000 -0400
+++ unaligned/Documentation/scsi/ChangeLog.megaraid	2006-07-24
15:41:49.000000000 -0400
@@ -66,6 +66,61 @@
 	Fix: MegaRAID F/W has fixed the problem and being process of
release,
 	soon. Meanwhile, driver will filter out the request.
 
+3.	One of member in the data structure of the driver leads unaligne
+	issue on 64-bit platform.
+	Customer reporeted "kernel unaligned access addrss" issue when
+	application communicates with MegaRAID HBA driver.
+	Root Cause: in uioc_t structure, one of member had misaligned
and it
+	led system to display the error message.
+	Fix: A patch submitted to community from following folk.
+
+	> -----Original Message-----
+	> From: [email protected] 
+	> [mailto:[email protected]] On Behalf Of Sakurai
Hiroomi
+	> Sent: Wednesday, July 12, 2006 4:20 AM
+	> To: [email protected]; [email protected]
+	> Subject: Re: Help: strange messages from kernel on IA64
platform
+	> 
+	> Hi,
+	> 
+	> I saw same message.
+	> 
+	> When GAM(Global Array Manager) is started, The following 
+	> message output.
+	> kernel: kernel unaligned access to 0xe0000001fe1080d4, 
+	> ip=0xa000000200053371
+	> 
+	> The uioc structure used by ioctl is defined by packed,
+	> the allignment of each member are disturbed.
+	> In a 64 bit structure, the allignment of member doesn't fit 64
bit
+	> boundary. this causes this messages.
+	> In a 32 bit structure, we don't see the message because the
allinment
+	> of member fit 32 bit boundary even if packed is specified. 
+	> 
+	> patch
+	> I Add 32 bit dummy member to fit 64 bit boundary. I tested.
+	> We confirmed this patch fix the problem by IA64 server.
+	> 
+	> **************************************************************
+	> ****************
+	> --- linux-2.6.9/drivers/scsi/megaraid/megaraid_ioctl.h.orig	
+	> 2006-04-03 17:13:03.000000000 +0900
+	> +++ linux-2.6.9/drivers/scsi/megaraid/megaraid_ioctl.h	
+	> 2006-04-03 17:14:09.000000000 +0900
+	> @@ -132,6 +132,10 @@
+	>  /* Driver Data: */
+	>          void __user *           user_data;
+	>          uint32_t                user_data_len;
+	> +
+	> +        /* 64bit alignment */
+	> +        uint32_t                pad_0xBC;
+	> +
+	>          mraid_passthru_t        __user *user_pthru;
+	>  
+	>          mraid_passthru_t        *pthru32;
+	> **************************************************************
+	> ****************
+
 Release Date	: Mon Apr 11 12:27:22 EST 2006 - Seokmann Ju
<[email protected]>
 Current Version : 2.20.4.8 (scsi module), 2.20.2.6 (cmm module)
 Older Version	: 2.20.4.7 (scsi module), 2.20.2.6 (cmm module)
diff -Naur inqwithevpd/drivers/scsi/megaraid/megaraid_ioctl.h
unaligned/drivers/scsi/megaraid/megaraid_ioctl.h
--- inqwithevpd/drivers/scsi/megaraid/megaraid_ioctl.h	2006-07-24
15:32:27.000000000 -0400
+++ unaligned/drivers/scsi/megaraid/megaraid_ioctl.h	2006-07-24
16:40:56.000000000 -0400
@@ -132,6 +132,10 @@
 /* Driver Data: */
 	void __user *		user_data;
 	uint32_t		user_data_len;
+
+	/* 64bit alignment */
+	uint32_t                pad_for_64bit_align;
+
 	mraid_passthru_t	__user *user_pthru;
 
 	mraid_passthru_t	*pthru32;
diff -Naur inqwithevpd/drivers/scsi/megaraid/megaraid_mm.c
unaligned/drivers/scsi/megaraid/megaraid_mm.c
--- inqwithevpd/drivers/scsi/megaraid/megaraid_mm.c	2006-07-24
15:32:27.000000000 -0400
+++ unaligned/drivers/scsi/megaraid/megaraid_mm.c	2006-07-24
15:44:14.000000000 -0400
@@ -10,7 +10,7 @@
  *	   2 of the License, or (at your option) any later version.
  *
  * FILE		: megaraid_mm.c
- * Version	: v2.20.2.6 (Mar 7 2005)
+ * Version	: v2.20.2.7 (Jul 16 2006)
  *
  * Common management module
  */
diff -Naur inqwithevpd/drivers/scsi/megaraid/megaraid_mm.h
unaligned/drivers/scsi/megaraid/megaraid_mm.h
--- inqwithevpd/drivers/scsi/megaraid/megaraid_mm.h	2006-07-24
15:32:27.000000000 -0400
+++ unaligned/drivers/scsi/megaraid/megaraid_mm.h	2006-07-24
15:44:44.000000000 -0400
@@ -27,9 +27,9 @@
 #include "megaraid_ioctl.h"
 
 
-#define LSI_COMMON_MOD_VERSION	"2.20.2.6"
+#define LSI_COMMON_MOD_VERSION	"2.20.2.7"
 #define LSI_COMMON_MOD_EXT_VERSION	\
-		"(Release Date: Mon Mar 7 00:01:03 EST 2005)"
+		"(Release Date: Sun Jul 16 00:01:03 EST 2006)"
 
 
 #define LSI_DBGLVL			dbglevel
---

Attachment: megaraid_unaligned.patch
Description: megaraid_unaligned.patch


[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux