From: Kalle Valo <kvalo@kernel.org>
To: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
Cc: <ath12k@lists.infradead.org>, <linux-wireless@vger.kernel.org>
Subject: Re: [PATCH 4/4] wifi: ath12k: Fix uninitialized variable access in ath12k_mac_allocate() function
Date: Thu, 12 Dec 2024 09:56:11 +0200 [thread overview]
Message-ID: <87v7vppc6c.fsf@kernel.org> (raw)
In-Reply-To: <20241212004906.3087425-5-quic_periyasa@quicinc.com> (Karthikeyan Periyasamy's message of "Thu, 12 Dec 2024 06:19:06 +0530")
Karthikeyan Periyasamy <quic_periyasa@quicinc.com> writes:
> Currently, the uninitialized variable 'ab' is accessed in the
> ath12k_mac_allocate() function. Initialize 'ab' with the first radio device
> present in the hardware abstraction handle (ah). Additionally, move the
> default setting procedure from the pdev mapping iteration to the total
> radio calculating iteration for better code readability. Perform the
> maximum radio validation check for total_radio to ensure that both num_hw
> and radio_per_hw are validated indirectly, as these variables are derived
> from total_radio. This also fixes the below Smatch static checker warning.
>
> Smatch warning:
> ath12k_mac_allocate() error: uninitialized symbol 'ab'
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.3.1-00173-QCAHKSWPL_SILICONZ-1
>
> Fixes: a343d97f27f5 ("wifi: ath12k: move struct ath12k_hw from per device to group")
> Signed-off-by: Karthikeyan Periyasamy <quic_periyasa@quicinc.com>
> ---
> drivers/net/wireless/ath/ath12k/mac.c | 27 +++++++++++++++++++++------
> 1 file changed, 21 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
> index 5cdc1c38b049..98b2f853d243 100644
> --- a/drivers/net/wireless/ath/ath12k/mac.c
> +++ b/drivers/net/wireless/ath/ath12k/mac.c
> @@ -10962,8 +10962,20 @@ int ath12k_mac_allocate(struct ath12k_hw_group *ag)
> u8 radio_per_hw;
>
> total_radio = 0;
> - for (i = 0; i < ag->num_devices; i++)
> - total_radio += ag->ab[i]->num_radios;
> + for (i = 0; i < ag->num_devices; i++) {
> + ab = ag->ab[i];
> + if (!ab)
> + continue;
> +
> + ath12k_mac_set_device_defaults(ab);
> + total_radio += ab->num_radios;
> + }
> +
> + if (!total_radio)
> + return -EINVAL;
'total_radio == 0' is more readable as it's a counter. Also please add ath12k_warn()
> +
> + if (WARN_ON(total_radio > ATH12K_GROUP_MAX_RADIO))
> + return -ENOSPC;
BTW ath12k_warn() is preferred over WARN_ON(), but this is just for the
future as this WARN_ON() was already there before.
>
> /* All pdev get combined and register as single wiphy based on
> * hardware group which participate in multi-link operation else
> @@ -10976,14 +10988,16 @@ int ath12k_mac_allocate(struct ath12k_hw_group *ag)
>
> num_hw = total_radio / radio_per_hw;
>
> - if (WARN_ON(num_hw >= ATH12K_GROUP_MAX_RADIO))
> - return -ENOSPC;
> -
> ag->num_hw = 0;
> device_id = 0;
> mac_id = 0;
> for (i = 0; i < num_hw; i++) {
> for (j = 0; j < radio_per_hw; j++) {
> + if (device_id >= ag->num_devices || !ag->ab[device_id]) {
> + ret = -ENOSPC;
> + goto err;
> + }
ath12k_warn()
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
next prev parent reply other threads:[~2024-12-12 7:56 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-12 0:49 [PATCH 0/4] wifi: ath12k: Fix the static checker warning Karthikeyan Periyasamy
2024-12-12 0:49 ` [PATCH 1/4] wifi: ath12k: Refactor ath12k_hw set helper function argument Karthikeyan Periyasamy
2024-12-12 7:46 ` Kalle Valo
2024-12-12 9:21 ` Karthikeyan Periyasamy
2024-12-12 0:49 ` [PATCH 2/4] wifi: ath12k: Refactor the ath12k_hw get " Karthikeyan Periyasamy
2024-12-12 7:47 ` Kalle Valo
2024-12-12 9:31 ` Karthikeyan Periyasamy
2024-12-12 0:49 ` [PATCH 3/4] wifi: ath12k: Refactor ath12k_get_num_hw() " Karthikeyan Periyasamy
2024-12-12 7:49 ` Kalle Valo
2024-12-12 10:25 ` Karthikeyan Periyasamy
2024-12-12 0:49 ` [PATCH 4/4] wifi: ath12k: Fix uninitialized variable access in ath12k_mac_allocate() function Karthikeyan Periyasamy
2024-12-12 7:56 ` Kalle Valo [this message]
2024-12-12 10:37 ` Karthikeyan Periyasamy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87v7vppc6c.fsf@kernel.org \
--to=kvalo@kernel.org \
--cc=ath12k@lists.infradead.org \
--cc=linux-wireless@vger.kernel.org \
--cc=quic_periyasa@quicinc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.