From: Kalle Valo <kvalo@kernel.org>
To: Niels Dossche <dossche.niels@gmail.com>
Cc: ath11k@lists.infradead.org, linux-wireless@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Carl Huang <cjhuang@codeaurora.org>
Subject: Re: [PATCH] ath11k: acquire ab->base_lock in unassign when finding the peer by addr
Date: Mon, 21 Mar 2022 12:45:25 +0200 [thread overview]
Message-ID: <87zgljmvne.fsf@kernel.org> (raw)
In-Reply-To: <20220314215253.92658-1-dossche.niels@gmail.com> (Niels Dossche's message of "Mon, 14 Mar 2022 22:52:53 +0100")
Niels Dossche <dossche.niels@gmail.com> writes:
> ath11k_peer_find_by_addr states via lockdep that ab->base_lock must be
> held when calling that function in order to protect the list. All
> callers except ath11k_mac_op_unassign_vif_chanctx have that lock
> acquired when calling ath11k_peer_find_by_addr. That lock is also not
> transitively held by a path towards ath11k_mac_op_unassign_vif_chanctx.
> The solution is to acquire the lock when calling
> ath11k_peer_find_by_addr inside ath11k_mac_op_unassign_vif_chanctx.
>
> Fixes: 701e48a43e15 ("ath11k: add packet log support for QCA6390")
> Signed-off-by: Niels Dossche <dossche.niels@gmail.com>
> ---
> drivers/net/wireless/ath/ath11k/mac.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
> index 07f499d5ec92..5db2333478a2 100644
> --- a/drivers/net/wireless/ath/ath11k/mac.c
> +++ b/drivers/net/wireless/ath/ath11k/mac.c
> @@ -7077,9 +7077,15 @@ ath11k_mac_op_unassign_vif_chanctx(struct ieee80211_hw *hw,
> WARN_ON(!arvif->is_started);
>
> if (ab->hw_params.vdev_start_delay &&
> - arvif->vdev_type == WMI_VDEV_TYPE_MONITOR &&
> - ath11k_peer_find_by_addr(ab, ar->mac_addr))
> - ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr);
> + arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
> + struct ath11k_peer *peer;
In the pending branch I moved the declaration to the beginning of the
function and added this to the commit log:
"I am currently working on a static analyser to detect missing locks and
this was a reported case. I manually verified the report by looking at
the code, but I do not have real hardware so this is compile tested
only."
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
--
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
WARNING: multiple messages have this Message-ID (diff)
From: Kalle Valo <kvalo@kernel.org>
To: Niels Dossche <dossche.niels@gmail.com>
Cc: ath11k@lists.infradead.org, linux-wireless@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>,
Carl Huang <cjhuang@codeaurora.org>
Subject: Re: [PATCH] ath11k: acquire ab->base_lock in unassign when finding the peer by addr
Date: Mon, 21 Mar 2022 12:45:25 +0200 [thread overview]
Message-ID: <87zgljmvne.fsf@kernel.org> (raw)
In-Reply-To: <20220314215253.92658-1-dossche.niels@gmail.com> (Niels Dossche's message of "Mon, 14 Mar 2022 22:52:53 +0100")
Niels Dossche <dossche.niels@gmail.com> writes:
> ath11k_peer_find_by_addr states via lockdep that ab->base_lock must be
> held when calling that function in order to protect the list. All
> callers except ath11k_mac_op_unassign_vif_chanctx have that lock
> acquired when calling ath11k_peer_find_by_addr. That lock is also not
> transitively held by a path towards ath11k_mac_op_unassign_vif_chanctx.
> The solution is to acquire the lock when calling
> ath11k_peer_find_by_addr inside ath11k_mac_op_unassign_vif_chanctx.
>
> Fixes: 701e48a43e15 ("ath11k: add packet log support for QCA6390")
> Signed-off-by: Niels Dossche <dossche.niels@gmail.com>
> ---
> drivers/net/wireless/ath/ath11k/mac.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
> index 07f499d5ec92..5db2333478a2 100644
> --- a/drivers/net/wireless/ath/ath11k/mac.c
> +++ b/drivers/net/wireless/ath/ath11k/mac.c
> @@ -7077,9 +7077,15 @@ ath11k_mac_op_unassign_vif_chanctx(struct ieee80211_hw *hw,
> WARN_ON(!arvif->is_started);
>
> if (ab->hw_params.vdev_start_delay &&
> - arvif->vdev_type == WMI_VDEV_TYPE_MONITOR &&
> - ath11k_peer_find_by_addr(ab, ar->mac_addr))
> - ath11k_peer_delete(ar, arvif->vdev_id, ar->mac_addr);
> + arvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
> + struct ath11k_peer *peer;
In the pending branch I moved the declaration to the beginning of the
function and added this to the commit log:
"I am currently working on a static analyser to detect missing locks and
this was a reported case. I manually verified the report by looking at
the code, but I do not have real hardware so this is compile tested
only."
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
next prev parent reply other threads:[~2022-03-21 10:45 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-14 21:52 [PATCH] ath11k: acquire ab->base_lock in unassign when finding the peer by addr Niels Dossche
2022-03-14 21:52 ` Niels Dossche
2022-03-16 6:13 ` Kalle Valo
2022-03-16 6:13 ` Kalle Valo
2022-03-16 10:43 ` Niels Dossche
2022-03-16 10:43 ` Niels Dossche
2022-03-16 14:34 ` Kalle Valo
2022-03-16 14:34 ` Kalle Valo
2022-03-16 14:38 ` Niels Dossche
2022-03-16 14:38 ` Niels Dossche
2022-03-21 10:45 ` Kalle Valo [this message]
2022-03-21 10:45 ` Kalle Valo
2022-03-21 11:51 ` Niels Dossche
2022-03-21 11:51 ` Niels Dossche
2022-03-23 8:52 ` Kalle Valo
2022-03-23 8:52 ` Kalle Valo
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=87zgljmvne.fsf@kernel.org \
--to=kvalo@kernel.org \
--cc=ath11k@lists.infradead.org \
--cc=cjhuang@codeaurora.org \
--cc=davem@davemloft.net \
--cc=dossche.niels@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-wireless@vger.kernel.org \
/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.