OpenCloudOS-Kernel/drivers/connector
Chris Metcalf 1ca1a4cf59 connector: improved unaligned access error fix
In af3e095a1f, 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>
2013-11-14 17:19:20 -05:00
..
Kconfig trivial: Kconfig: .ko is normally not included in module names 2009-06-12 18:01:50 +02:00
Makefile [PATCH] Process Events Connector 2005-11-07 07:53:35 -08:00
cn_proc.c connector: improved unaligned access error fix 2013-11-14 17:19:20 -05:00
cn_queue.c drivers: connector: fixed coding style issues 2012-07-16 23:23:52 -07:00
connector.c connector: use 'size' everywhere in cn_netlink_send() 2013-10-02 16:03:50 -04:00