treewide: kmalloc() -> kmalloc_array()
The kmalloc() function has a 2-factor argument form, kmalloc_array(). This patch replaces cases of: kmalloc(a * b, gfp) with: kmalloc_array(a * b, gfp) as well as handling cases of: kmalloc(a * b * c, gfp) with: kmalloc(array3_size(a, b, c), gfp) as it's slightly less ugly than: kmalloc_array(array_size(a, b), c, gfp) This does, however, attempt to ignore constant size factors like: kmalloc(4 * 1024, gfp) though any constants defined via macros get caught up in the conversion. Any factors with a sizeof() of "unsigned char", "char", and "u8" were dropped, since they're redundant. The tools/ directory was manually excluded, since it has its own implementation of kmalloc(). The Coccinelle script used for this was: // Fix redundant parens around sizeof(). @@ type TYPE; expression THING, E; @@ ( kmalloc( - (sizeof(TYPE)) * E + sizeof(TYPE) * E , ...) | kmalloc( - (sizeof(THING)) * E + sizeof(THING) * E , ...) ) // Drop single-byte sizes and redundant parens. @@ expression COUNT; typedef u8; typedef __u8; @@ ( kmalloc( - sizeof(u8) * (COUNT) + COUNT , ...) | kmalloc( - sizeof(__u8) * (COUNT) + COUNT , ...) | kmalloc( - sizeof(char) * (COUNT) + COUNT , ...) | kmalloc( - sizeof(unsigned char) * (COUNT) + COUNT , ...) | kmalloc( - sizeof(u8) * COUNT + COUNT , ...) | kmalloc( - sizeof(__u8) * COUNT + COUNT , ...) | kmalloc( - sizeof(char) * COUNT + COUNT , ...) | kmalloc( - sizeof(unsigned char) * COUNT + COUNT , ...) ) // 2-factor product with sizeof(type/expression) and identifier or constant. @@ type TYPE; expression THING; identifier COUNT_ID; constant COUNT_CONST; @@ ( - kmalloc + kmalloc_array ( - sizeof(TYPE) * (COUNT_ID) + COUNT_ID, sizeof(TYPE) , ...) | - kmalloc + kmalloc_array ( - sizeof(TYPE) * COUNT_ID + COUNT_ID, sizeof(TYPE) , ...) | - kmalloc + kmalloc_array ( - sizeof(TYPE) * (COUNT_CONST) + COUNT_CONST, sizeof(TYPE) , ...) | - kmalloc + kmalloc_array ( - sizeof(TYPE) * COUNT_CONST + COUNT_CONST, sizeof(TYPE) , ...) | - kmalloc + kmalloc_array ( - sizeof(THING) * (COUNT_ID) + COUNT_ID, sizeof(THING) , ...) | - kmalloc + kmalloc_array ( - sizeof(THING) * COUNT_ID + COUNT_ID, sizeof(THING) , ...) | - kmalloc + kmalloc_array ( - sizeof(THING) * (COUNT_CONST) + COUNT_CONST, sizeof(THING) , ...) | - kmalloc + kmalloc_array ( - sizeof(THING) * COUNT_CONST + COUNT_CONST, sizeof(THING) , ...) ) // 2-factor product, only identifiers. @@ identifier SIZE, COUNT; @@ - kmalloc + kmalloc_array ( - SIZE * COUNT + COUNT, SIZE , ...) // 3-factor product with 1 sizeof(type) or sizeof(expression), with // redundant parens removed. @@ expression THING; identifier STRIDE, COUNT; type TYPE; @@ ( kmalloc( - sizeof(TYPE) * (COUNT) * (STRIDE) + array3_size(COUNT, STRIDE, sizeof(TYPE)) , ...) | kmalloc( - sizeof(TYPE) * (COUNT) * STRIDE + array3_size(COUNT, STRIDE, sizeof(TYPE)) , ...) | kmalloc( - sizeof(TYPE) * COUNT * (STRIDE) + array3_size(COUNT, STRIDE, sizeof(TYPE)) , ...) | kmalloc( - sizeof(TYPE) * COUNT * STRIDE + array3_size(COUNT, STRIDE, sizeof(TYPE)) , ...) | kmalloc( - sizeof(THING) * (COUNT) * (STRIDE) + array3_size(COUNT, STRIDE, sizeof(THING)) , ...) | kmalloc( - sizeof(THING) * (COUNT) * STRIDE + array3_size(COUNT, STRIDE, sizeof(THING)) , ...) | kmalloc( - sizeof(THING) * COUNT * (STRIDE) + array3_size(COUNT, STRIDE, sizeof(THING)) , ...) | kmalloc( - sizeof(THING) * COUNT * STRIDE + array3_size(COUNT, STRIDE, sizeof(THING)) , ...) ) // 3-factor product with 2 sizeof(variable), with redundant parens removed. @@ expression THING1, THING2; identifier COUNT; type TYPE1, TYPE2; @@ ( kmalloc( - sizeof(TYPE1) * sizeof(TYPE2) * COUNT + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2)) , ...) | kmalloc( - sizeof(TYPE1) * sizeof(THING2) * (COUNT) + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2)) , ...) | kmalloc( - sizeof(THING1) * sizeof(THING2) * COUNT + array3_size(COUNT, sizeof(THING1), sizeof(THING2)) , ...) | kmalloc( - sizeof(THING1) * sizeof(THING2) * (COUNT) + array3_size(COUNT, sizeof(THING1), sizeof(THING2)) , ...) | kmalloc( - sizeof(TYPE1) * sizeof(THING2) * COUNT + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2)) , ...) | kmalloc( - sizeof(TYPE1) * sizeof(THING2) * (COUNT) + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2)) , ...) ) // 3-factor product, only identifiers, with redundant parens removed. @@ identifier STRIDE, SIZE, COUNT; @@ ( kmalloc( - (COUNT) * STRIDE * SIZE + array3_size(COUNT, STRIDE, SIZE) , ...) | kmalloc( - COUNT * (STRIDE) * SIZE + array3_size(COUNT, STRIDE, SIZE) , ...) | kmalloc( - COUNT * STRIDE * (SIZE) + array3_size(COUNT, STRIDE, SIZE) , ...) | kmalloc( - (COUNT) * (STRIDE) * SIZE + array3_size(COUNT, STRIDE, SIZE) , ...) | kmalloc( - COUNT * (STRIDE) * (SIZE) + array3_size(COUNT, STRIDE, SIZE) , ...) | kmalloc( - (COUNT) * STRIDE * (SIZE) + array3_size(COUNT, STRIDE, SIZE) , ...) | kmalloc( - (COUNT) * (STRIDE) * (SIZE) + array3_size(COUNT, STRIDE, SIZE) , ...) | kmalloc( - COUNT * STRIDE * SIZE + array3_size(COUNT, STRIDE, SIZE) , ...) ) // Any remaining multi-factor products, first at least 3-factor products, // when they're not all constants... @@ expression E1, E2, E3; constant C1, C2, C3; @@ ( kmalloc(C1 * C2 * C3, ...) | kmalloc( - (E1) * E2 * E3 + array3_size(E1, E2, E3) , ...) | kmalloc( - (E1) * (E2) * E3 + array3_size(E1, E2, E3) , ...) | kmalloc( - (E1) * (E2) * (E3) + array3_size(E1, E2, E3) , ...) | kmalloc( - E1 * E2 * E3 + array3_size(E1, E2, E3) , ...) ) // And then all remaining 2 factors products when they're not all constants, // keeping sizeof() as the second factor argument. @@ expression THING, E1, E2; type TYPE; constant C1, C2, C3; @@ ( kmalloc(sizeof(THING) * C2, ...) | kmalloc(sizeof(TYPE) * C2, ...) | kmalloc(C1 * C2 * C3, ...) | kmalloc(C1 * C2, ...) | - kmalloc + kmalloc_array ( - sizeof(TYPE) * (E2) + E2, sizeof(TYPE) , ...) | - kmalloc + kmalloc_array ( - sizeof(TYPE) * E2 + E2, sizeof(TYPE) , ...) | - kmalloc + kmalloc_array ( - sizeof(THING) * (E2) + E2, sizeof(THING) , ...) | - kmalloc + kmalloc_array ( - sizeof(THING) * E2 + E2, sizeof(THING) , ...) | - kmalloc + kmalloc_array ( - (E1) * E2 + E1, E2 , ...) | - kmalloc + kmalloc_array ( - (E1) * (E2) + E1, E2 , ...) | - kmalloc + kmalloc_array ( - E1 * E2 + E1, E2 , ...) ) Signed-off-by: Kees Cook <keescook@chromium.org>
This commit is contained in:
@@ -551,13 +551,13 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int
|
||||
if (lance_debug > 6) printk(" (#0x%05lx)", (unsigned long)lp);
|
||||
dev->ml_priv = lp;
|
||||
lp->name = chipname;
|
||||
lp->rx_buffs = (unsigned long)kmalloc(PKT_BUF_SZ*RX_RING_SIZE,
|
||||
GFP_DMA | GFP_KERNEL);
|
||||
lp->rx_buffs = (unsigned long)kmalloc_array(RX_RING_SIZE, PKT_BUF_SZ,
|
||||
GFP_DMA | GFP_KERNEL);
|
||||
if (!lp->rx_buffs)
|
||||
goto out_lp;
|
||||
if (lance_need_isa_bounce_buffers) {
|
||||
lp->tx_bounce_buffs = kmalloc(PKT_BUF_SZ*TX_RING_SIZE,
|
||||
GFP_DMA | GFP_KERNEL);
|
||||
lp->tx_bounce_buffs = kmalloc_array(TX_RING_SIZE, PKT_BUF_SZ,
|
||||
GFP_DMA | GFP_KERNEL);
|
||||
if (!lp->tx_bounce_buffs)
|
||||
goto out_rx;
|
||||
} else
|
||||
|
@@ -209,8 +209,8 @@ static int atl1c_get_eeprom(struct net_device *netdev,
|
||||
first_dword = eeprom->offset >> 2;
|
||||
last_dword = (eeprom->offset + eeprom->len - 1) >> 2;
|
||||
|
||||
eeprom_buff = kmalloc(sizeof(u32) *
|
||||
(last_dword - first_dword + 1), GFP_KERNEL);
|
||||
eeprom_buff = kmalloc_array(last_dword - first_dword + 1, sizeof(u32),
|
||||
GFP_KERNEL);
|
||||
if (eeprom_buff == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -236,8 +236,8 @@ static int atl1e_get_eeprom(struct net_device *netdev,
|
||||
first_dword = eeprom->offset >> 2;
|
||||
last_dword = (eeprom->offset + eeprom->len - 1) >> 2;
|
||||
|
||||
eeprom_buff = kmalloc(sizeof(u32) *
|
||||
(last_dword - first_dword + 1), GFP_KERNEL);
|
||||
eeprom_buff = kmalloc_array(last_dword - first_dword + 1, sizeof(u32),
|
||||
GFP_KERNEL);
|
||||
if (eeprom_buff == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -1941,8 +1941,8 @@ static int atl2_get_eeprom(struct net_device *netdev,
|
||||
first_dword = eeprom->offset >> 2;
|
||||
last_dword = (eeprom->offset + eeprom->len - 1) >> 2;
|
||||
|
||||
eeprom_buff = kmalloc(sizeof(u32) * (last_dword - first_dword + 1),
|
||||
GFP_KERNEL);
|
||||
eeprom_buff = kmalloc_array(last_dword - first_dword + 1, sizeof(u32),
|
||||
GFP_KERNEL);
|
||||
if (!eeprom_buff)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -2666,7 +2666,7 @@ bnx2_alloc_bad_rbuf(struct bnx2 *bp)
|
||||
u32 good_mbuf_cnt;
|
||||
u32 val;
|
||||
|
||||
good_mbuf = kmalloc(512 * sizeof(u16), GFP_KERNEL);
|
||||
good_mbuf = kmalloc_array(512, sizeof(u16), GFP_KERNEL);
|
||||
if (!good_mbuf)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -444,8 +444,8 @@ static int bnxt_vf_reps_create(struct bnxt *bp)
|
||||
return -ENOMEM;
|
||||
|
||||
/* storage for cfa_code to vf-idx mapping */
|
||||
cfa_code_map = kmalloc(sizeof(*bp->cfa_code_map) * MAX_CFA_CODE,
|
||||
GFP_KERNEL);
|
||||
cfa_code_map = kmalloc_array(MAX_CFA_CODE, sizeof(*bp->cfa_code_map),
|
||||
GFP_KERNEL);
|
||||
if (!cfa_code_map) {
|
||||
rc = -ENOMEM;
|
||||
goto err;
|
||||
|
@@ -873,7 +873,7 @@ static int cctrl_tbl_show(struct seq_file *seq, void *v)
|
||||
u16 (*incr)[NCCTRL_WIN];
|
||||
struct adapter *adap = seq->private;
|
||||
|
||||
incr = kmalloc(sizeof(*incr) * NMTUS, GFP_KERNEL);
|
||||
incr = kmalloc_array(NMTUS, sizeof(*incr), GFP_KERNEL);
|
||||
if (!incr)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -713,7 +713,7 @@ int cxgb4_write_rss(const struct port_info *pi, const u16 *queues)
|
||||
const struct sge_eth_rxq *rxq;
|
||||
|
||||
rxq = &adapter->sge.ethrxq[pi->first_qset];
|
||||
rss = kmalloc(pi->rss_size * sizeof(u16), GFP_KERNEL);
|
||||
rss = kmalloc_array(pi->rss_size, sizeof(u16), GFP_KERNEL);
|
||||
if (!rss)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -4972,8 +4972,8 @@ static int enable_msix(struct adapter *adap)
|
||||
max_ingq += (MAX_OFLD_QSETS * adap->num_uld);
|
||||
if (is_offload(adap))
|
||||
max_ingq += (MAX_OFLD_QSETS * adap->num_ofld_uld);
|
||||
entries = kmalloc(sizeof(*entries) * (max_ingq + 1),
|
||||
GFP_KERNEL);
|
||||
entries = kmalloc_array(max_ingq + 1, sizeof(*entries),
|
||||
GFP_KERNEL);
|
||||
if (!entries)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -2253,9 +2253,9 @@ static int ucc_geth_alloc_tx(struct ucc_geth_private *ugeth)
|
||||
/* Init Tx bds */
|
||||
for (j = 0; j < ug_info->numQueuesTx; j++) {
|
||||
/* Setup the skbuff rings */
|
||||
ugeth->tx_skbuff[j] = kmalloc(sizeof(struct sk_buff *) *
|
||||
ugeth->ug_info->bdRingLenTx[j],
|
||||
GFP_KERNEL);
|
||||
ugeth->tx_skbuff[j] =
|
||||
kmalloc_array(ugeth->ug_info->bdRingLenTx[j],
|
||||
sizeof(struct sk_buff *), GFP_KERNEL);
|
||||
|
||||
if (ugeth->tx_skbuff[j] == NULL) {
|
||||
if (netif_msg_ifup(ugeth))
|
||||
@@ -2326,9 +2326,9 @@ static int ucc_geth_alloc_rx(struct ucc_geth_private *ugeth)
|
||||
/* Init Rx bds */
|
||||
for (j = 0; j < ug_info->numQueuesRx; j++) {
|
||||
/* Setup the skbuff rings */
|
||||
ugeth->rx_skbuff[j] = kmalloc(sizeof(struct sk_buff *) *
|
||||
ugeth->ug_info->bdRingLenRx[j],
|
||||
GFP_KERNEL);
|
||||
ugeth->rx_skbuff[j] =
|
||||
kmalloc_array(ugeth->ug_info->bdRingLenRx[j],
|
||||
sizeof(struct sk_buff *), GFP_KERNEL);
|
||||
|
||||
if (ugeth->rx_skbuff[j] == NULL) {
|
||||
if (netif_msg_ifup(ugeth))
|
||||
|
@@ -171,7 +171,7 @@ static int ibmveth_alloc_buffer_pool(struct ibmveth_buff_pool *pool)
|
||||
{
|
||||
int i;
|
||||
|
||||
pool->free_map = kmalloc(sizeof(u16) * pool->size, GFP_KERNEL);
|
||||
pool->free_map = kmalloc_array(pool->size, sizeof(u16), GFP_KERNEL);
|
||||
|
||||
if (!pool->free_map)
|
||||
return -1;
|
||||
|
@@ -435,8 +435,8 @@ static int e1000_get_eeprom(struct net_device *netdev,
|
||||
first_word = eeprom->offset >> 1;
|
||||
last_word = (eeprom->offset + eeprom->len - 1) >> 1;
|
||||
|
||||
eeprom_buff = kmalloc(sizeof(u16) *
|
||||
(last_word - first_word + 1), GFP_KERNEL);
|
||||
eeprom_buff = kmalloc_array(last_word - first_word + 1, sizeof(u16),
|
||||
GFP_KERNEL);
|
||||
if (!eeprom_buff)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -509,8 +509,8 @@ static int e1000_get_eeprom(struct net_device *netdev,
|
||||
first_word = eeprom->offset >> 1;
|
||||
last_word = (eeprom->offset + eeprom->len - 1) >> 1;
|
||||
|
||||
eeprom_buff = kmalloc(sizeof(u16) * (last_word - first_word + 1),
|
||||
GFP_KERNEL);
|
||||
eeprom_buff = kmalloc_array(last_word - first_word + 1, sizeof(u16),
|
||||
GFP_KERNEL);
|
||||
if (!eeprom_buff)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -736,8 +736,8 @@ static int igb_get_eeprom(struct net_device *netdev,
|
||||
first_word = eeprom->offset >> 1;
|
||||
last_word = (eeprom->offset + eeprom->len - 1) >> 1;
|
||||
|
||||
eeprom_buff = kmalloc(sizeof(u16) *
|
||||
(last_word - first_word + 1), GFP_KERNEL);
|
||||
eeprom_buff = kmalloc_array(last_word - first_word + 1, sizeof(u16),
|
||||
GFP_KERNEL);
|
||||
if (!eeprom_buff)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -3245,8 +3245,8 @@ static int igb_get_module_eeprom(struct net_device *netdev,
|
||||
first_word = ee->offset >> 1;
|
||||
last_word = (ee->offset + ee->len - 1) >> 1;
|
||||
|
||||
dataword = kmalloc(sizeof(u16) * (last_word - first_word + 1),
|
||||
GFP_KERNEL);
|
||||
dataword = kmalloc_array(last_word - first_word + 1, sizeof(u16),
|
||||
GFP_KERNEL);
|
||||
if (!dataword)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -375,8 +375,9 @@ ixgb_get_eeprom(struct net_device *netdev,
|
||||
first_word = eeprom->offset >> 1;
|
||||
last_word = (eeprom->offset + eeprom->len - 1) >> 1;
|
||||
|
||||
eeprom_buff = kmalloc(sizeof(__le16) *
|
||||
(last_word - first_word + 1), GFP_KERNEL);
|
||||
eeprom_buff = kmalloc_array(last_word - first_word + 1,
|
||||
sizeof(__le16),
|
||||
GFP_KERNEL);
|
||||
if (!eeprom_buff)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -1093,8 +1093,9 @@ ixgb_set_multi(struct net_device *netdev)
|
||||
rctl |= IXGB_RCTL_MPE;
|
||||
IXGB_WRITE_REG(hw, RCTL, rctl);
|
||||
} else {
|
||||
u8 *mta = kmalloc(IXGB_MAX_NUM_MULTICAST_ADDRESSES *
|
||||
ETH_ALEN, GFP_ATOMIC);
|
||||
u8 *mta = kmalloc_array(ETH_ALEN,
|
||||
IXGB_MAX_NUM_MULTICAST_ADDRESSES,
|
||||
GFP_ATOMIC);
|
||||
u8 *addr;
|
||||
if (!mta)
|
||||
goto alloc_failed;
|
||||
|
@@ -901,7 +901,7 @@ static int ixgbe_get_eeprom(struct net_device *netdev,
|
||||
last_word = (eeprom->offset + eeprom->len - 1) >> 1;
|
||||
eeprom_len = last_word - first_word + 1;
|
||||
|
||||
eeprom_buff = kmalloc(sizeof(u16) * eeprom_len, GFP_KERNEL);
|
||||
eeprom_buff = kmalloc_array(eeprom_len, sizeof(u16), GFP_KERNEL);
|
||||
if (!eeprom_buff)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -2636,9 +2636,9 @@ int mlx4_cmd_use_events(struct mlx4_dev *dev)
|
||||
int i;
|
||||
int err = 0;
|
||||
|
||||
priv->cmd.context = kmalloc(priv->cmd.max_cmds *
|
||||
sizeof(struct mlx4_cmd_context),
|
||||
GFP_KERNEL);
|
||||
priv->cmd.context = kmalloc_array(priv->cmd.max_cmds,
|
||||
sizeof(struct mlx4_cmd_context),
|
||||
GFP_KERNEL);
|
||||
if (!priv->cmd.context)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@@ -1211,8 +1211,9 @@ int mlx4_init_eq_table(struct mlx4_dev *dev)
|
||||
}
|
||||
|
||||
priv->eq_table.irq_names =
|
||||
kmalloc(MLX4_IRQNAME_SIZE * (dev->caps.num_comp_vectors + 1),
|
||||
GFP_KERNEL);
|
||||
kmalloc_array(MLX4_IRQNAME_SIZE,
|
||||
(dev->caps.num_comp_vectors + 1),
|
||||
GFP_KERNEL);
|
||||
if (!priv->eq_table.irq_names) {
|
||||
err = -ENOMEM;
|
||||
goto err_out_clr_int;
|
||||
|
@@ -507,10 +507,12 @@ int mlx4_init_resource_tracker(struct mlx4_dev *dev)
|
||||
for (i = 0; i < MLX4_NUM_OF_RESOURCE_TYPE; i++) {
|
||||
struct resource_allocator *res_alloc =
|
||||
&priv->mfunc.master.res_tracker.res_alloc[i];
|
||||
res_alloc->quota = kmalloc((dev->persist->num_vfs + 1) *
|
||||
sizeof(int), GFP_KERNEL);
|
||||
res_alloc->guaranteed = kmalloc((dev->persist->num_vfs + 1) *
|
||||
sizeof(int), GFP_KERNEL);
|
||||
res_alloc->quota = kmalloc_array(dev->persist->num_vfs + 1,
|
||||
sizeof(int),
|
||||
GFP_KERNEL);
|
||||
res_alloc->guaranteed = kmalloc_array(dev->persist->num_vfs + 1,
|
||||
sizeof(int),
|
||||
GFP_KERNEL);
|
||||
if (i == RES_MAC || i == RES_VLAN)
|
||||
res_alloc->allocated = kzalloc(MLX4_MAX_PORTS *
|
||||
(dev->persist->num_vfs
|
||||
|
@@ -507,15 +507,15 @@ static int moxart_mac_probe(struct platform_device *pdev)
|
||||
goto init_fail;
|
||||
}
|
||||
|
||||
priv->tx_buf_base = kmalloc(priv->tx_buf_size * TX_DESC_NUM,
|
||||
GFP_ATOMIC);
|
||||
priv->tx_buf_base = kmalloc_array(priv->tx_buf_size, TX_DESC_NUM,
|
||||
GFP_ATOMIC);
|
||||
if (!priv->tx_buf_base) {
|
||||
ret = -ENOMEM;
|
||||
goto init_fail;
|
||||
}
|
||||
|
||||
priv->rx_buf_base = kmalloc(priv->rx_buf_size * RX_DESC_NUM,
|
||||
GFP_ATOMIC);
|
||||
priv->rx_buf_base = kmalloc_array(priv->rx_buf_size, RX_DESC_NUM,
|
||||
GFP_ATOMIC);
|
||||
if (!priv->rx_buf_base) {
|
||||
ret = -ENOMEM;
|
||||
goto init_fail;
|
||||
|
@@ -4630,8 +4630,10 @@ static int nv_set_ringparam(struct net_device *dev, struct ethtool_ringparam* ri
|
||||
ring->tx_pending),
|
||||
&ring_addr, GFP_ATOMIC);
|
||||
}
|
||||
rx_skbuff = kmalloc(sizeof(struct nv_skb_map) * ring->rx_pending, GFP_KERNEL);
|
||||
tx_skbuff = kmalloc(sizeof(struct nv_skb_map) * ring->tx_pending, GFP_KERNEL);
|
||||
rx_skbuff = kmalloc_array(ring->rx_pending, sizeof(struct nv_skb_map),
|
||||
GFP_KERNEL);
|
||||
tx_skbuff = kmalloc_array(ring->tx_pending, sizeof(struct nv_skb_map),
|
||||
GFP_KERNEL);
|
||||
if (!rxtx_ring || !rx_skbuff || !tx_skbuff) {
|
||||
/* fall back to old rings */
|
||||
if (!nv_optimized(np)) {
|
||||
|
@@ -2178,7 +2178,7 @@ static void pch_gbe_set_multi(struct net_device *netdev)
|
||||
|
||||
if (mc_count >= PCH_GBE_MAR_ENTRIES)
|
||||
return;
|
||||
mta_list = kmalloc(mc_count * ETH_ALEN, GFP_ATOMIC);
|
||||
mta_list = kmalloc_array(ETH_ALEN, mc_count, GFP_ATOMIC);
|
||||
if (!mta_list)
|
||||
return;
|
||||
|
||||
|
@@ -2578,9 +2578,9 @@ int qed_mcp_nvm_info_populate(struct qed_hwfn *p_hwfn)
|
||||
goto err0;
|
||||
}
|
||||
|
||||
nvm_info->image_att = kmalloc(nvm_info->num_images *
|
||||
sizeof(struct bist_nvm_image_att),
|
||||
GFP_KERNEL);
|
||||
nvm_info->image_att = kmalloc_array(nvm_info->num_images,
|
||||
sizeof(struct bist_nvm_image_att),
|
||||
GFP_KERNEL);
|
||||
if (!nvm_info->image_att) {
|
||||
rc = -ENOMEM;
|
||||
goto err0;
|
||||
|
@@ -2810,7 +2810,8 @@ static int ql_alloc_tx_resources(struct ql_adapter *qdev,
|
||||
goto pci_alloc_err;
|
||||
|
||||
tx_ring->q =
|
||||
kmalloc(tx_ring->wq_len * sizeof(struct tx_ring_desc), GFP_KERNEL);
|
||||
kmalloc_array(tx_ring->wq_len, sizeof(struct tx_ring_desc),
|
||||
GFP_KERNEL);
|
||||
if (tx_ring->q == NULL)
|
||||
goto err;
|
||||
|
||||
|
Reference in New Issue
Block a user