tree f11678902e54db1205bad348e2a6cdb2017ccfbe parent 2ba84684e8cf6f980e4e95a2300f53a505eb794e author Greg Howard <[EMAIL PROTECTED]> Tue, 16 Aug 2005 03:00:00 -0700 committer Tony Luck <[EMAIL PROTECTED]> Tue, 16 Aug 2005 04:17:49 -0700
[IA64-SGI] fix unaligned memory access in snsc_event.c It's been pointed out that environmental events from the system controllers on Altix machines cause the kernel to complain about unaligned memory accesses. This turns out to be because "be32_to_cpup()" didn't do everything I thought/hoped it did. I've added calls to pull the offending integers out of the buffers using get_unaligned() before feeding them to be32_to_cpup(). Signed-off-by: Greg Howard <[EMAIL PROTECTED]> Signed-off-by: Tony Luck <[EMAIL PROTECTED]> drivers/char/snsc_event.c | 11 ++++++++--- 1 files changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/char/snsc_event.c b/drivers/char/snsc_event.c --- a/drivers/char/snsc_event.c +++ b/drivers/char/snsc_event.c @@ -19,6 +19,7 @@ #include <linux/sched.h> #include <linux/byteorder/generic.h> #include <asm/sn/sn_sal.h> +#include <asm/unaligned.h> #include "snsc.h" static struct subch_data_s *event_sd; @@ -62,13 +63,16 @@ static int scdrv_parse_event(char *event, int *src, int *code, int *esp_code, char *desc) { char *desc_end; + __be32 from_buf; /* record event source address */ - *src = be32_to_cpup((__be32 *)event); + from_buf = get_unaligned((__be32 *)event); + *src = be32_to_cpup(&from_buf); event += 4; /* move on to event code */ /* record the system controller's event code */ - *code = be32_to_cpup((__be32 *)event); + from_buf = get_unaligned((__be32 *)event); + *code = be32_to_cpup(&from_buf); event += 4; /* move on to event arguments */ /* how many arguments are in the packet? */ @@ -82,7 +86,8 @@ scdrv_parse_event(char *event, int *src, /* not an integer argument, so give up */ return -1; } - *esp_code = be32_to_cpup((__be32 *)event); + from_buf = get_unaligned((__be32 *)event); + *esp_code = be32_to_cpup(&from_buf); event += 4; /* parse out the event description */ - To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html