Change to a single allocation with kzalloc_flex and remove some boilerplate. Done as a FAM instead of value to keep -> usage in codebase. Signed-off-by: Rosen Penev --- .../broadcom/brcm80211/brcmsmac/main.c | 32 ++----------------- .../broadcom/brcm80211/brcmsmac/main.h | 2 +- 2 files changed, 3 insertions(+), 31 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.c index c7eaf160e1fa..4f57d64b1dd3 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.c @@ -418,21 +418,12 @@ static int brcms_chspec_bw(u16 chanspec) return BRCMS_10_MHZ; } -static void brcms_c_bsscfg_mfree(struct brcms_bss_cfg *cfg) -{ - if (cfg == NULL) - return; - - kfree(cfg->current_bss); - kfree(cfg); -} - static void brcms_c_detach_mfree(struct brcms_c_info *wlc) { if (wlc == NULL) return; - brcms_c_bsscfg_mfree(wlc->bsscfg); + kfree(wlc->bsscfg); kfree(wlc->pub); kfree(wlc->modulecb); kfree(wlc->default_bss); @@ -453,25 +444,6 @@ static void brcms_c_detach_mfree(struct brcms_c_info *wlc) kfree(wlc); } -static struct brcms_bss_cfg *brcms_c_bsscfg_malloc(uint unit) -{ - struct brcms_bss_cfg *cfg; - - cfg = kzalloc_obj(*cfg, GFP_ATOMIC); - if (cfg == NULL) - goto fail; - - cfg->current_bss = kzalloc_obj(*cfg->current_bss, GFP_ATOMIC); - if (cfg->current_bss == NULL) - goto fail; - - return cfg; - - fail: - brcms_c_bsscfg_mfree(cfg); - return NULL; -} - static struct brcms_c_info * brcms_c_attach_malloc(uint unit, uint *err, uint devid) { @@ -527,7 +499,7 @@ brcms_c_attach_malloc(uint unit, uint *err, uint devid) goto fail; } - wlc->bsscfg = brcms_c_bsscfg_malloc(unit); + wlc->bsscfg = kzalloc_flex(*wlc->bsscfg, current_bss, 1, GFP_ATOMIC); if (wlc->bsscfg == NULL) { *err = 1011; goto fail; diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.h b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.h index b7ca0d9891c4..e9cbb95a5a17 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/main.h @@ -614,7 +614,7 @@ struct brcms_bss_cfg { u8 SSID_len; u8 SSID[IEEE80211_MAX_SSID_LEN]; u8 BSSID[ETH_ALEN]; - struct brcms_bss_info *current_bss; + struct brcms_bss_info current_bss[]; }; int brcms_c_txfifo(struct brcms_c_info *wlc, uint fifo, struct sk_buff *p); -- 2.53.0