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>
This commit is contained in:
parent
b9bc5ddb1b
commit
8447c4d15e
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue