summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorChris Metcalf <cmetcalf@tilera.com>2013-11-14 12:09:21 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-12-08 07:29:41 -0800
commit5faa67af221bba0e3e544d4771d608dc4ef611f6 (patch)
tree1ff861bc07f37c77fb8249ea114e9a2010d03315 /net
parent0434f1641051d148682321b68ba8108ae9c52c98 (diff)
connector: improved unaligned access error fix
[ Upstream commit 1ca1a4cf59ea343a1a70084fe7cc96f37f3cf5b1 ] In af3e095a1fb4, Erik Jacobsen fixed one type of unaligned access bug for ia64 by converting a 64-bit write to use put_unaligned(). Unfortunately, since gcc will convert a short memset() to a series of appropriately-aligned stores, the problem is now visible again on tilegx, where the memset that zeros out proc_event is converted to three 64-bit stores, causing an unaligned access panic. A better fix for the original problem is to ensure that proc_event is aligned to 8 bytes here. We can do that relatively easily by arranging to start the struct cn_msg aligned to 8 bytes and then offset by 4 bytes. Doing so means that the immediately following proc_event structure is then correctly aligned to 8 bytes. The result is that the memset() stores are now aligned, and as an added benefit, we can remove the put_unaligned() calls in the code. Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
0 files changed, 0 insertions, 0 deletions