Arnd Bergmann 0ef049dc11 mac80211: avoid excessive stack usage in sta_info
When CONFIG_OPTIMIZE_INLINING is set, the sta_info_insert_finish
function consumes more stack than normally, exceeding the
1024 byte limit on ARM:

net/mac80211/sta_info.c: In function 'sta_info_insert_finish':
net/mac80211/sta_info.c:561:1: error: the frame size of 1080 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]

It turns out that there are two functions that put a 'struct station_info'
on the stack: __sta_info_destroy_part2 and sta_info_insert_finish, and
this structure alone requires up to 792 bytes.

Hoping that both are called rarely enough, this replaces the
on-stack structure with a dynamic allocation, which unfortunately
requires some suboptimal error handling for out-of-memory.

The __sta_info_destroy_part2 function is actually affected by the
stack usage twice because it calls cfg80211_del_sta_sinfo(), which
has another instance of struct station_info on its stack.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: 98b6218388e3 ("mac80211/cfg80211: add station events")
Fixes: 6f7a8d26e266 ("mac80211: send statistics with delete station event")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2016-02-24 09:04:28 +01:00
..
2015-01-27 11:07:35 +01:00
2015-01-27 11:09:13 +01:00
2014-11-04 13:18:21 +01:00
2014-04-09 14:49:43 +02:00
2016-02-24 09:04:27 +01:00
2015-08-14 17:49:53 +02:00
2015-07-17 15:38:01 +02:00
2015-05-11 19:16:04 +02:00
2015-10-14 18:40:26 +02:00
2014-04-09 14:49:43 +02:00
2015-11-03 10:42:47 +01:00
2013-12-18 10:33:06 +01:00
2015-05-11 14:51:29 +02:00
2015-10-14 18:40:26 +02:00