linux/net/rds
Arnd Bergmann f862e07cf9 rds: avoid potential stack overflow
The rds_iw_update_cm_id function stores a large 'struct rds_sock' object
on the stack in order to pass a pair of addresses. This happens to just
fit withint the 1024 byte stack size warning limit on x86, but just
exceed that limit on ARM, which gives us this warning:

net/rds/iw_rdma.c:200:1: warning: the frame size of 1056 bytes is larger than 1024 bytes [-Wframe-larger-than=]

As the use of this large variable is basically bogus, we can rearrange
the code to not do that. Instead of passing an rds socket into
rds_iw_get_device, we now just pass the two addresses that we have
available in rds_iw_update_cm_id, and we change rds_iw_get_mr accordingly,
to create two address structures on the stack there.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-03-12 00:28:01 -04:00
..
af_rds.c
bind.c
cong.c rds: rds_cong_queue_updates needs to defer the congestion update transmission 2015-02-11 14:35:44 -08:00
connection.c
ib_cm.c
ib_rdma.c
ib_recv.c
ib_ring.c
ib_send.c net: rds: Remove repeated function names from debug output 2015-02-07 22:41:56 -08:00
ib_stats.c
ib_sysctl.c
ib.c
ib.h
info.c
info.h
iw_cm.c net: rds: Remove repeated function names from debug output 2015-02-07 22:41:56 -08:00
iw_rdma.c rds: avoid potential stack overflow 2015-03-12 00:28:01 -04:00
iw_recv.c
iw_ring.c
iw_send.c net: rds: Remove repeated function names from debug output 2015-02-07 22:41:56 -08:00
iw_stats.c
iw_sysctl.c
iw.c
iw.h
Kconfig
loop.c
loop.h
Makefile
message.c rds: Make rds_message_copy_from_user() return 0 on success. 2015-02-07 22:41:56 -08:00
page.c
rdma_transport.c
rdma_transport.h
rdma.c
rds.h
recv.c put iov_iter into msghdr 2014-12-09 16:29:03 -05:00
send.c net: introduce helper macro for_each_cmsghdr 2014-12-10 22:41:55 -05:00
stats.c
sysctl.c net: rds: use correct size for max unacked packets and bytes 2015-02-04 16:07:27 -08:00
tcp_connect.c
tcp_listen.c
tcp_recv.c
tcp_send.c
tcp_stats.c
tcp.c
tcp.h
threads.c
transport.c