From: Johannes Berg <johannes@sipsolutions.net>
To: Michal Kazior <michal.kazior@tieto.com>
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH] mac80211: fix AP_VLAN crypto tailroom calculation
Date: Mon, 11 May 2015 15:11:02 +0200 [thread overview]
Message-ID: <1431349862.1964.28.camel@sipsolutions.net> (raw)
In-Reply-To: <1431349503-5461-1-git-send-email-michal.kazior@tieto.com> (sfid-20150511_150521_616623_361E30B9)
On Mon, 2015-05-11 at 13:05 +0000, Michal Kazior wrote:
> AP_VLANs may inherit crypto keys from parent AP.
> Moreover AP_VLANs may have PTK keys of their own.
> Hence both AP_VLAN sdata and AP sdata must be
> inspected.
>
> Some splats I was seeing:
>
> (a) WARNING: CPU: 1 PID: 0 at /devel/src/linux/net/mac80211/wep.c:102 ieee80211_wep_add_iv
> (b) WARNING: CPU: 1 PID: 0 at /devel/src/linux/net/mac80211/wpa.c:73 ieee80211_tx_h_michael_mic_add
> (c) WARNING: CPU: 3 PID: 0 at /devel/src/linux/net/mac80211/wpa.c:433 ieee80211_crypto_ccmp_encrypt
>
> I've seen (a) and (b) with ath9k hw crypto and (c)
> with ath9k sw crypto. All of them were related to
> insufficient skb tailroom and I was able to
> trigger these with ping6 program.
>
> This patch effectively fixes Tx when using
> AP_VLANs with WEP and WPA in some setups.
>
> Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
> ---
> net/mac80211/tx.c | 21 ++++++++++++++++++++-
> 1 file changed, 20 insertions(+), 1 deletion(-)
>
> diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
> index 8df134213adf..0887d6e5c424 100644
> --- a/net/mac80211/tx.c
> +++ b/net/mac80211/tx.c
> @@ -1593,6 +1593,25 @@ static bool ieee80211_tx(struct ieee80211_sub_if_data *sdata,
>
> /* device xmit handlers */
>
> +static bool
> +ieee80211_need_crypto_tx_tailroom(struct ieee80211_sub_if_data *sdata)
> +{
> + struct ieee80211_sub_if_data *parent_sdata;
> +
> + if (sdata->crypto_tx_tailroom_needed_cnt)
> + return true;
> +
> + if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN && sdata->bss) {
> + parent_sdata = container_of(sdata->bss,
> + struct ieee80211_sub_if_data,
> + u.ap);
> + if (parent_sdata->crypto_tx_tailroom_needed_cnt)
> + return true;
> + }
> +
> + return false;
> +}
> +
> static int ieee80211_skb_resize(struct ieee80211_sub_if_data *sdata,
> struct sk_buff *skb,
> int head_need, bool may_encrypt)
> @@ -1600,7 +1619,7 @@ static int ieee80211_skb_resize(struct ieee80211_sub_if_data *sdata,
> struct ieee80211_local *local = sdata->local;
> int tail_need = 0;
>
> - if (may_encrypt && sdata->crypto_tx_tailroom_needed_cnt) {
> + if (may_encrypt && ieee80211_need_crypto_tx_tailroom(sdata)) {
This makes that check far more inefficient - I think you should write it
differently and have the management code copy the value to the VLAN
interfaces so the existing check here is sufficient.
johannes
next prev parent reply other threads:[~2015-05-11 13:11 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-11 13:05 [PATCH] mac80211: fix AP_VLAN crypto tailroom calculation Michal Kazior
2015-05-11 13:11 ` Johannes Berg [this message]
2015-05-11 13:33 ` Michal Kazior
2015-05-13 9:16 ` [PATCH v2 1/2] " Michal Kazior
2015-05-13 9:16 ` [PATCH v2 2/2] mac80211: prevent possible crypto tx tailroom corruption Michal Kazior
2015-05-20 13:14 ` Johannes Berg
2015-05-21 8:16 ` Michal Kazior
2015-05-21 8:30 ` Johannes Berg
2015-05-21 8:44 ` Michal Kazior
2015-05-22 8:22 ` [PATCH v3] " Michal Kazior
2015-05-29 11:05 ` Johannes Berg
2015-05-20 13:12 ` [PATCH v2 1/2] mac80211: fix AP_VLAN crypto tailroom calculation Johannes Berg
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=1431349862.1964.28.camel@sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=michal.kazior@tieto.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).