Hi Sara, Thank you for the patch! Yet something to improve: [auto build test ERROR on mac80211-next/master] [also build test ERROR on v4.20-rc5 next-20181207] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Jouni-Malinen/cfg80211-Parsing-of-Multiple-BSSID-information-in-scanning/20181208-040803 base: https://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next.git master config: i386-randconfig-x011-201848 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386 All errors (new ones prefixed by >>): In file included from net/wireless/nl80211.h:9:0, from net/wireless/ibss.c:14: net/wireless/core.h: In function 'cfg80211_hold_bss': >> net/wireless/core.h:184:20: error: inlining failed in call to always_inline 'cfg80211_hold_bss': recursive inlining static inline void cfg80211_hold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~ net/wireless/core.h:188:3: note: called from here cfg80211_hold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function 'cfg80211_unhold_bss': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function '__cfg80211_clear_ibss.constprop': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function '__cfg80211_ibss_joined': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ >> net/wireless/core.h:184:20: error: inlining failed in call to always_inline 'cfg80211_hold_bss': recursive inlining static inline void cfg80211_hold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~ net/wireless/core.h:188:3: note: called from here cfg80211_hold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ -- In file included from net/wireless/nl80211.h:9:0, from net/wireless/sme.c:21: net/wireless/core.h: In function 'cfg80211_hold_bss': >> net/wireless/core.h:184:20: error: inlining failed in call to always_inline 'cfg80211_hold_bss': recursive inlining static inline void cfg80211_hold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~ net/wireless/core.h:188:3: note: called from here cfg80211_hold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function 'cfg80211_unhold_bss': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function '__cfg80211_connect_result': >> net/wireless/core.h:184:20: error: inlining failed in call to always_inline 'cfg80211_hold_bss': recursive inlining static inline void cfg80211_hold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~ net/wireless/core.h:188:3: note: called from here cfg80211_hold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function 'cfg80211_connect_done': >> net/wireless/core.h:184:20: error: inlining failed in call to always_inline 'cfg80211_hold_bss': recursive inlining static inline void cfg80211_hold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~ net/wireless/core.h:188:3: note: called from here cfg80211_hold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function '__cfg80211_roamed': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ >> net/wireless/core.h:184:20: error: inlining failed in call to always_inline 'cfg80211_hold_bss': recursive inlining static inline void cfg80211_hold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~ net/wireless/core.h:188:3: note: called from here cfg80211_hold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function '__cfg80211_disconnected': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function 'cfg80211_connect': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ -- In file included from net/wireless/nl80211.h:9:0, from net/wireless/core.c:26: net/wireless/core.h: In function 'cfg80211_unhold_bss': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function 'cfg80211_netdev_notifier_call': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ -- In file included from net/wireless/mlme.c:18:0: net/wireless/core.h: In function 'cfg80211_hold_bss': >> net/wireless/core.h:184:20: error: inlining failed in call to always_inline 'cfg80211_hold_bss': recursive inlining static inline void cfg80211_hold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~ net/wireless/core.h:188:3: note: called from here cfg80211_hold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function 'cfg80211_unhold_bss': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function 'cfg80211_rx_assoc_resp': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function 'cfg80211_assoc_timeout': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function 'cfg80211_abandon_assoc': >> net/wireless/core.h:193:20: error: inlining failed in call to always_inline 'cfg80211_unhold_bss': recursive inlining static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~~~ net/wireless/core.h:198:3: note: called from here cfg80211_unhold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ net/wireless/core.h: In function 'cfg80211_mlme_assoc': >> net/wireless/core.h:184:20: error: inlining failed in call to always_inline 'cfg80211_hold_bss': recursive inlining static inline void cfg80211_hold_bss(struct cfg80211_internal_bss *bss) ^~~~~~~~~~~~~~~~~ net/wireless/core.h:188:3: note: called from here cfg80211_hold_bss(container_of(bss->transmitted_bss, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ struct cfg80211_internal_bss, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ pub)); ~~~~~ vim +/cfg80211_hold_bss +184 net/wireless/core.h 19957bb3 Johannes Berg 2009-07-02 183 19957bb3 Johannes Berg 2009-07-02 @184 static inline void cfg80211_hold_bss(struct cfg80211_internal_bss *bss) 19957bb3 Johannes Berg 2009-07-02 185 { 19957bb3 Johannes Berg 2009-07-02 186 atomic_inc(&bss->hold); ac02934e Sara Sharon 2018-12-07 187 if (bss->transmitted_bss) ac02934e Sara Sharon 2018-12-07 @188 cfg80211_hold_bss(container_of(bss->transmitted_bss, ac02934e Sara Sharon 2018-12-07 189 struct cfg80211_internal_bss, ac02934e Sara Sharon 2018-12-07 190 pub)); 19957bb3 Johannes Berg 2009-07-02 191 } 19957bb3 Johannes Berg 2009-07-02 192 19957bb3 Johannes Berg 2009-07-02 @193 static inline void cfg80211_unhold_bss(struct cfg80211_internal_bss *bss) 19957bb3 Johannes Berg 2009-07-02 194 { 19957bb3 Johannes Berg 2009-07-02 195 int r = atomic_dec_return(&bss->hold); 19957bb3 Johannes Berg 2009-07-02 196 WARN_ON(r < 0); ac02934e Sara Sharon 2018-12-07 197 if (bss->transmitted_bss) ac02934e Sara Sharon 2018-12-07 198 cfg80211_unhold_bss(container_of(bss->transmitted_bss, ac02934e Sara Sharon 2018-12-07 199 struct cfg80211_internal_bss, ac02934e Sara Sharon 2018-12-07 200 pub)); 19957bb3 Johannes Berg 2009-07-02 201 } 19957bb3 Johannes Berg 2009-07-02 202 :::::: The code at line 184 was first introduced by commit :::::: 19957bb399e2722719c0e20c9ae91cf8b6aaff04 cfg80211: keep track of BSSes :::::: TO: Johannes Berg :::::: CC: John W. Linville --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation