Re: [PATCH ath-next] wifi: ath9k: use kmemdup and kcalloc

From: Jeff Johnson

Date: Thu Apr 16 2026 - 19:10:39 EST


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

> 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?

> if (!bf)
> return -ENOMEM;
>
> --
> 2.53.0
>
>