Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cxgb4: Use the bitmap API to allocate bitmaps

Use bitmap_zalloc()/bitmap_free() instead of hand-writing them.

It is less verbose and it improves the semantic.

While at it, remove a useless bitmap_zero(). The bitmap is already zeroed
when allocated.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/8a2168ef9871bd9c4f1cf19b8d5f7530662a5d15.1656866770.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Paolo Abeni <pabeni@redhat.com>

authored by

Christophe JAILLET and committed by
Paolo Abeni
ec53d77a 55ae4652

+17 -24
+3 -3
drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
··· 3429 3429 unsigned long *t; 3430 3430 struct adapter *adap = filp->private_data; 3431 3431 3432 - t = kcalloc(BITS_TO_LONGS(adap->sge.egr_sz), sizeof(long), GFP_KERNEL); 3432 + t = bitmap_zalloc(adap->sge.egr_sz, GFP_KERNEL); 3433 3433 if (!t) 3434 3434 return -ENOMEM; 3435 3435 3436 3436 err = bitmap_parse_user(ubuf, count, t, adap->sge.egr_sz); 3437 3437 if (err) { 3438 - kfree(t); 3438 + bitmap_free(t); 3439 3439 return err; 3440 3440 } 3441 3441 3442 3442 bitmap_copy(adap->sge.blocked_fl, t, adap->sge.egr_sz); 3443 - kfree(t); 3443 + bitmap_free(t); 3444 3444 return count; 3445 3445 } 3446 3446
+3 -5
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
··· 2227 2227 if (eth_filter_info) { 2228 2228 for (i = 0; i < adap->params.nports; i++) { 2229 2229 kvfree(eth_filter_info[i].loc_array); 2230 - kfree(eth_filter_info[i].bmap); 2230 + bitmap_free(eth_filter_info[i].bmap); 2231 2231 } 2232 2232 kfree(eth_filter_info); 2233 2233 } ··· 2270 2270 goto free_eth_finfo; 2271 2271 } 2272 2272 2273 - eth_filter->port[i].bmap = kcalloc(BITS_TO_LONGS(nentries), 2274 - sizeof(unsigned long), 2275 - GFP_KERNEL); 2273 + eth_filter->port[i].bmap = bitmap_zalloc(nentries, GFP_KERNEL); 2276 2274 if (!eth_filter->port[i].bmap) { 2277 2275 ret = -ENOMEM; 2278 2276 goto free_eth_finfo; ··· 2282 2284 2283 2285 free_eth_finfo: 2284 2286 while (i-- > 0) { 2285 - kfree(eth_filter->port[i].bmap); 2287 + bitmap_free(eth_filter->port[i].bmap); 2286 2288 kvfree(eth_filter->port[i].loc_array); 2287 2289 } 2288 2290 kfree(eth_filter_info);
+11 -16
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
··· 5047 5047 /* Allocate the memory for the vaious egress queue bitmaps 5048 5048 * ie starving_fl, txq_maperr and blocked_fl. 5049 5049 */ 5050 - adap->sge.starving_fl = kcalloc(BITS_TO_LONGS(adap->sge.egr_sz), 5051 - sizeof(long), GFP_KERNEL); 5050 + adap->sge.starving_fl = bitmap_zalloc(adap->sge.egr_sz, GFP_KERNEL); 5052 5051 if (!adap->sge.starving_fl) { 5053 5052 ret = -ENOMEM; 5054 5053 goto bye; 5055 5054 } 5056 5055 5057 - adap->sge.txq_maperr = kcalloc(BITS_TO_LONGS(adap->sge.egr_sz), 5058 - sizeof(long), GFP_KERNEL); 5056 + adap->sge.txq_maperr = bitmap_zalloc(adap->sge.egr_sz, GFP_KERNEL); 5059 5057 if (!adap->sge.txq_maperr) { 5060 5058 ret = -ENOMEM; 5061 5059 goto bye; 5062 5060 } 5063 5061 5064 5062 #ifdef CONFIG_DEBUG_FS 5065 - adap->sge.blocked_fl = kcalloc(BITS_TO_LONGS(adap->sge.egr_sz), 5066 - sizeof(long), GFP_KERNEL); 5063 + adap->sge.blocked_fl = bitmap_zalloc(adap->sge.egr_sz, GFP_KERNEL); 5067 5064 if (!adap->sge.blocked_fl) { 5068 5065 ret = -ENOMEM; 5069 5066 goto bye; 5070 5067 } 5071 - bitmap_zero(adap->sge.blocked_fl, adap->sge.egr_sz); 5072 5068 #endif 5073 5069 5074 5070 params[0] = FW_PARAM_PFVF(CLIP_START); ··· 5413 5417 adap_free_hma_mem(adap); 5414 5418 kfree(adap->sge.egr_map); 5415 5419 kfree(adap->sge.ingr_map); 5416 - kfree(adap->sge.starving_fl); 5417 - kfree(adap->sge.txq_maperr); 5420 + bitmap_free(adap->sge.starving_fl); 5421 + bitmap_free(adap->sge.txq_maperr); 5418 5422 #ifdef CONFIG_DEBUG_FS 5419 - kfree(adap->sge.blocked_fl); 5423 + bitmap_free(adap->sge.blocked_fl); 5420 5424 #endif 5421 5425 if (ret != -ETIMEDOUT && ret != -EIO) 5422 5426 t4_fw_bye(adap, adap->mbox); ··· 5850 5854 if (!msix_info) 5851 5855 return -ENOMEM; 5852 5856 5853 - adap->msix_bmap.msix_bmap = kcalloc(BITS_TO_LONGS(num_vec), 5854 - sizeof(long), GFP_KERNEL); 5857 + adap->msix_bmap.msix_bmap = bitmap_zalloc(num_vec, GFP_KERNEL); 5855 5858 if (!adap->msix_bmap.msix_bmap) { 5856 5859 kfree(msix_info); 5857 5860 return -ENOMEM; ··· 5865 5870 5866 5871 static void free_msix_info(struct adapter *adap) 5867 5872 { 5868 - kfree(adap->msix_bmap.msix_bmap); 5873 + bitmap_free(adap->msix_bmap.msix_bmap); 5869 5874 kfree(adap->msix_info); 5870 5875 } 5871 5876 ··· 6184 6189 cxgb4_cleanup_ethtool_filters(adapter); 6185 6190 kfree(adapter->sge.egr_map); 6186 6191 kfree(adapter->sge.ingr_map); 6187 - kfree(adapter->sge.starving_fl); 6188 - kfree(adapter->sge.txq_maperr); 6192 + bitmap_free(adapter->sge.starving_fl); 6193 + bitmap_free(adapter->sge.txq_maperr); 6189 6194 #ifdef CONFIG_DEBUG_FS 6190 - kfree(adapter->sge.blocked_fl); 6195 + bitmap_free(adapter->sge.blocked_fl); 6191 6196 #endif 6192 6197 disable_msi(adapter); 6193 6198