sctp: Clean up type-punning in sctp_cmd_t union
authorNeil Horman <nhorman@tuxdriver.com>
Mon, 29 Oct 2012 08:32:13 +0000 (08:32 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 3 Nov 2012 18:54:55 +0000 (14:54 -0400)
commitb26ddd813031666293c95e84c997eb8b1f97bd38
tree598f6fb4ac28998d9ac1101d297558199fb6e980
parent1a9408355e91c21eaf4626386d65988a0ad7dc21
sctp: Clean up type-punning in sctp_cmd_t union

Lots of points in the sctp_cmd_interpreter function treat the sctp_cmd_t arg as
a void pointer, even though they are written as various other types.  Theres no
need for this as doing so just leads to possible type-punning issues that could
cause crashes, and if we remain type-consistent we can actually just remove the
void * member of the union entirely.

Change Notes:

v2)
* Dropped chunk that modified SCTP_NULL to create a marker pattern
 should anyone try to use a SCTP_NULL() assigned sctp_arg_t, Assigning
 to .zero provides the same effect and should be faster, per Vlad Y.

v3)
* Reverted part of V2, opting to use memset instead of .zero, so that
 the entire union is initalized thus avoiding the i164 speculative load
 problems previously encountered, per Dave M..  Also rewrote
 SCTP_[NO]FORCE so as to use common infrastructure a little more

Signed-off-by: Neil Horman <nhorman@tuxdriver.com
CC: Vlad Yasevich <vyasevich@gmail.com>
CC: "David S. Miller" <davem@davemloft.net>
CC: linux-sctp@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/sctp/command.h
include/net/sctp/ulpqueue.h
net/sctp/sm_sideeffect.c
net/sctp/ulpqueue.c