Re: [PATCH ath-next] wifi: ath9k: use kmemdup and kcalloc
From: Jeff Johnson
Date: Wed Apr 29 2026 - 10:09:48 EST
On 4/16/2026 4:42 PM, Rosen Penev wrote:
> On Thu, Apr 16, 2026 at 4:09 PM Jeff Johnson
> <jeff.johnson@xxxxxxxxxxxxxxxx> wrote:
>>
>> On 2/23/2026 2:44 PM, Rosen Penev wrote:
>>> Simplifies the code slightly by removing temporary variables.
>>> multiplication overflow is also gained for free.
>>>
>>> Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx>
>>> ---
>>> drivers/net/wireless/ath/ath9k/ar9002_hw.c | 6 +++---
>>> drivers/net/wireless/ath/ath9k/common-init.c | 8 ++------
>>> drivers/net/wireless/ath/ath9k/init.c | 8 +++-----
>>> drivers/net/wireless/ath/ath9k/recv.c | 4 +---
>>> 4 files changed, 9 insertions(+), 17 deletions(-)
>>>
>> ...
>>> diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
>>> index b52ddb237dcf..e52775dda6a7 100644
>>> --- a/drivers/net/wireless/ath/ath9k/init.c
>>> +++ b/drivers/net/wireless/ath/ath9k/init.c
>>> @@ -297,7 +297,7 @@ int ath_descdma_setup(struct ath_softc *sc, struct ath_descdma *dd,
>>> {
>>> struct ath_common *common = ath9k_hw_common(sc->sc_ah);
>>> u8 *ds;
>>> - int i, bsize, desc_len;
>>> + int i, desc_len;
>>>
>>> ath_dbg(common, CONFIG, "%s DMA: %u buffers %u desc/buf\n",
>>> name, nbuf, ndesc);
>>> @@ -351,8 +351,7 @@ int ath_descdma_setup(struct ath_softc *sc, struct ath_descdma *dd,
>>> if (is_tx) {
>>> struct ath_buf *bf;
>>>
>>> - bsize = sizeof(struct ath_buf) * nbuf;
>>> - bf = devm_kzalloc(sc->dev, bsize, GFP_KERNEL);
>>> + bf = devm_kcalloc(sc->dev, sizeof(*bf), nbuf, GFP_KERNEL);
>>> if (!bf)
>>> return -ENOMEM;
>>>
>>> @@ -382,8 +381,7 @@ int ath_descdma_setup(struct ath_softc *sc, struct ath_descdma *dd,
>>> } else {
>>> struct ath_rxbuf *bf;
>>>
>>> - bsize = sizeof(struct ath_rxbuf) * nbuf;
>>> - bf = devm_kzalloc(sc->dev, bsize, GFP_KERNEL);
>>> + bf = devm_kcalloc(sc->dev, sizeof(struct ath_rxbuf), nbuf, GFP_KERNEL);
>>
>> use sizeof(*bf) here as well?
>> If so, I can fix this in my pending branch
> Sure
>>
>>> if (!bf)
>>> return -ENOMEM;
>>>
>>> diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
>>> index 34c74ed99b7b..93b41a1bb2af 100644
>>> --- a/drivers/net/wireless/ath/ath9k/recv.c
>>> +++ b/drivers/net/wireless/ath/ath9k/recv.c
>>> @@ -202,7 +202,6 @@ static int ath_rx_edma_init(struct ath_softc *sc, int nbufs)
>>> struct sk_buff *skb;
>>> struct ath_rxbuf *bf;
>>> int error = 0, i;
>>> - u32 size;
>>>
>>> ath9k_hw_set_rx_bufsize(ah, common->rx_bufsize -
>>> ah->caps.rx_status_len);
>>> @@ -212,8 +211,7 @@ static int ath_rx_edma_init(struct ath_softc *sc, int nbufs)
>>> ath_rx_edma_init_queue(&sc->rx.rx_edma[ATH9K_RX_QUEUE_HP],
>>> ah->caps.rx_hp_qdepth);
>>>
>>> - size = sizeof(struct ath_rxbuf) * nbufs;
>>> - bf = devm_kzalloc(sc->dev, size, GFP_KERNEL);
>>> + bf = devm_kcalloc(sc->dev, sizeof(struct ath_rxbuf), nbufs, GFP_KERNEL);
>>
>> here as well?
> Sure
>>
>>> if (!bf)
>>> return -ENOMEM;
>>>
>>> --
>>> 2.53.0
>>>
>>>
>>
FYI I'm going to take your patch as-is since there are other instances of
ath9k using sizeof(type). These can be cleaned up separately.
/jeff