summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorChris Metcalf <cmetcalf@tilera.com>2012-06-06 19:11:05 +0200
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-06-11 17:43:16 +0200
commit8447c4d15e357a458c9051ddc84aa6c8b9c27000 (patch)
tree33377297a94e02d0a87246010c8f4c83d8119bb2 /drivers
parentmpc85xx_edac: fix error: too few arguments to function 'edac_mc_alloc' (diff)
downloadlinux-8447c4d15e357a458c9051ddc84aa6c8b9c27000.tar.xz
linux-8447c4d15e357a458c9051ddc84aa6c8b9c27000.zip
edac: Do alignment logic properly in edac_align_ptr()
The logic was checking the sizeof the structure being allocated to determine whether an alignment fixup was required. This isn't right; what we actually care about is the alignment of the actual pointer that's about to be returned. This became an issue recently because struct edac_mc_layer has a size that is not zero modulo eight, so we were taking the correctly-aligned pointer and forcing it to be misaligned. On Tile this caused an alignment exception. Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/edac/edac_mc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c
index 10f375032e96..de5ba86e8b89 100644
--- a/drivers/edac/edac_mc.c
+++ b/drivers/edac/edac_mc.c
@@ -164,7 +164,7 @@ void *edac_align_ptr(void **p, unsigned size, int n_elems)
else
return (char *)ptr;
- r = size % align;
+ r = (unsigned long)p % align;
if (r == 0)
return (char *)ptr;