]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
rds: avoid potential stack overflow
authorArnd Bergmann <arnd@arndb.de>
Wed, 11 Mar 2015 21:46:59 +0000 (22:46 +0100)
committerJiri Slaby <jslaby@suse.cz>
Thu, 9 Apr 2015 11:13:44 +0000 (13:13 +0200)
commit4ac02a11486acbceef7c02bc6796393f45af53ca
treee448292f3c1435f77f7dff31ddf5ad5c2ebf353a
parented56585d9e424130349e02446171e9d51af88a10
rds: avoid potential stack overflow

[ Upstream commit f862e07cf95d5b62a5fc5e981dd7d0dbaf33a501 ]

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>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
net/rds/iw_rdma.c