summaryrefslogtreecommitdiff
path: root/net/mac80211/michael.h
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2016-01-26 23:05:31 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-04-20 15:42:10 +0900
commit9da98ac378b2aaccdaa02ba10c87123eb997ff22 (patch)
tree83b7454491990cd4037408e6209aba50599c9a54 /net/mac80211/michael.h
parent7de4ebacd23756a6862e5691f326b807ccc4da91 (diff)
mac80211: avoid excessive stack usage in sta_info
commit 0ef049dc1167fe834d0ad5d63f89eddc5c70f6e4 upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/mac80211/michael.h')
0 files changed, 0 insertions, 0 deletions