]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commit6f9d68bde6d3445b9b5934c99043c93822e85c12
tree598f6fb4ac28998d9ac1101d297558199fb6e980
parent4139e1e6716d7210dd1ccb714d5aa1723b04bac7
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