From: David Herrmann <dh.herrmann@gmail.com>
To: ath9k-devel@lists.ath9k.org
Subject: [ath9k-devel] [PATCH] ath9k: fix NULL-deref in hw_per_calibration() for ar9002
Date: Wed, 7 May 2014 09:22:58 +0200 [thread overview]
Message-ID: <1399447378-31503-1-git-send-email-dh.herrmann@gmail.com> (raw)
ah->caldata may be NULL if no channel is selected. Check for that before
accessing it.
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
---
Hi
This is _definitely_ only a workaround, given that no-one guarantees ah->caldata
is freed while we run in hw_per_calibration(). However, this patch fixes serious
kernel panics with wifi-P2P on my machine.
I'm not sure why ah->caldata can be NULL, but it definitely is. I think the
correct fix would be to synchronously stop any running hw-calibration before
setting ah->caldata to NULL. I don't know whether/where that is done, so I wrote
this small workaround.
Thanks
David
drivers/net/wireless/ath/ath9k/ar9002_calib.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_calib.c b/drivers/net/wireless/ath/ath9k/ar9002_calib.c
index cdc7400..4667ab9 100644
--- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c
+++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c
@@ -99,14 +99,16 @@ static bool ar9002_hw_per_calibration(struct ath_hw *ah,
}
currCal->calData->calPostProc(ah, numChains);
- caldata->CalValid |= currCal->calData->calType;
+ if (caldata)
+ caldata->CalValid |= currCal->calData->calType;
+
currCal->calState = CAL_DONE;
iscaldone = true;
} else {
ar9002_hw_setup_calibration(ah, currCal);
}
}
- } else if (!(caldata->CalValid & currCal->calData->calType)) {
+ } else if (caldata && !(caldata->CalValid & currCal->calData->calType)) {
ath9k_hw_reset_calibration(ah, currCal);
}
--
1.9.2
WARNING: multiple messages have this Message-ID (diff)
From: David Herrmann <dh.herrmann@gmail.com>
To: linux-wireless@vger.kernel.org
Cc: "Luis R. Rodriguez" <mcgrof@qca.qualcomm.com>,
Jouni Malinen <jouni@qca.qualcomm.com>,
Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>,
Senthil Balasubramanian <senthilb@qca.qualcomm.com>,
"John W. Linville" <linville@tuxdriver.com>,
ath9k-devel@lists.ath9k.org,
Oleksij Rempel <linux@rempel-privat.de>,
David Herrmann <dh.herrmann@gmail.com>
Subject: [PATCH] ath9k: fix NULL-deref in hw_per_calibration() for ar9002
Date: Wed, 7 May 2014 09:22:58 +0200 [thread overview]
Message-ID: <1399447378-31503-1-git-send-email-dh.herrmann@gmail.com> (raw)
ah->caldata may be NULL if no channel is selected. Check for that before
accessing it.
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
---
Hi
This is _definitely_ only a workaround, given that no-one guarantees ah->caldata
is freed while we run in hw_per_calibration(). However, this patch fixes serious
kernel panics with wifi-P2P on my machine.
I'm not sure why ah->caldata can be NULL, but it definitely is. I think the
correct fix would be to synchronously stop any running hw-calibration before
setting ah->caldata to NULL. I don't know whether/where that is done, so I wrote
this small workaround.
Thanks
David
drivers/net/wireless/ath/ath9k/ar9002_calib.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/ar9002_calib.c b/drivers/net/wireless/ath/ath9k/ar9002_calib.c
index cdc7400..4667ab9 100644
--- a/drivers/net/wireless/ath/ath9k/ar9002_calib.c
+++ b/drivers/net/wireless/ath/ath9k/ar9002_calib.c
@@ -99,14 +99,16 @@ static bool ar9002_hw_per_calibration(struct ath_hw *ah,
}
currCal->calData->calPostProc(ah, numChains);
- caldata->CalValid |= currCal->calData->calType;
+ if (caldata)
+ caldata->CalValid |= currCal->calData->calType;
+
currCal->calState = CAL_DONE;
iscaldone = true;
} else {
ar9002_hw_setup_calibration(ah, currCal);
}
}
- } else if (!(caldata->CalValid & currCal->calData->calType)) {
+ } else if (caldata && !(caldata->CalValid & currCal->calData->calType)) {
ath9k_hw_reset_calibration(ah, currCal);
}
--
1.9.2
next reply other threads:[~2014-05-07 7:22 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-07 7:22 David Herrmann [this message]
2014-05-07 7:22 ` [PATCH] ath9k: fix NULL-deref in hw_per_calibration() for ar9002 David Herrmann
2014-05-07 19:54 ` [ath9k-devel] " John W. Linville
2014-05-07 19:54 ` John W. Linville
2014-05-07 20:03 ` [ath9k-devel] " Luis R. Rodriguez
2014-05-07 20:03 ` Luis R. Rodriguez
2014-05-07 20:38 ` John W. Linville
2014-05-07 20:38 ` John W. Linville
2014-05-07 20:15 ` Felix Fietkau
2014-05-07 20:15 ` Felix Fietkau
2014-05-12 17:49 ` John W. Linville
2014-05-12 17:49 ` John W. Linville
2014-05-12 18:43 ` Felix Fietkau
2014-05-12 18:43 ` Felix Fietkau
2014-05-13 6:50 ` David Herrmann
2014-05-13 6:50 ` David Herrmann
2014-05-13 9:00 ` Rajkumar Manoharan
2014-05-13 9:00 ` Rajkumar Manoharan
2014-05-13 9:09 ` David Herrmann
2014-05-13 9:09 ` David Herrmann
2014-05-13 10:41 ` Rajkumar Manoharan
2014-05-13 10:41 ` Rajkumar Manoharan
2014-05-13 18:21 ` David Herrmann
2014-05-13 18:21 ` David Herrmann
2014-05-08 18:18 ` Rajkumar Manoharan
2014-05-08 18:18 ` Rajkumar Manoharan
2014-05-08 20:16 ` [ath9k-devel] " David Herrmann
2014-05-08 20:16 ` David Herrmann
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=1399447378-31503-1-git-send-email-dh.herrmann@gmail.com \
--to=dh.herrmann@gmail.com \
--cc=ath9k-devel@lists.ath9k.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.