aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/305-b43-fix-NULL-pointer-dereference-in-b43_phy_copy.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/305-b43-fix-NULL-pointer-dereference-in-b43_phy_copy.patch')
-rw-r--r--package/kernel/mac80211/patches/305-b43-fix-NULL-pointer-dereference-in-b43_phy_copy.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/305-b43-fix-NULL-pointer-dereference-in-b43_phy_copy.patch b/package/kernel/mac80211/patches/305-b43-fix-NULL-pointer-dereference-in-b43_phy_copy.patch
new file mode 100644
index 0000000000..649ed6bd55
--- /dev/null
+++ b/package/kernel/mac80211/patches/305-b43-fix-NULL-pointer-dereference-in-b43_phy_copy.patch
@@ -0,0 +1,38 @@
+From: Hauke Mehrtens <hauke@hauke-m.de>
+Date: Wed, 5 Nov 2014 23:31:07 +0100
+Subject: [PATCH] b43: fix NULL pointer dereference in b43_phy_copy()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+phy_read and phy_write are not set for every phy any more sine this:
+commit d342b95dd735014a590f9051b1ba227eb54ca8f6
+Author: Rafał Miłecki <zajec5@gmail.com>
+Date: Thu Jul 31 21:59:43 2014 +0200
+
+ b43: don't duplicate common PHY read/write ops
+
+b43_phy_copy() accesses phy_read and phy_write directly and will fail
+with some phys. This patch fixes the regression by using the
+b43_phy_read() and b43_phy_write() functions which should be used for
+read and write access.
+
+This should fix this bug report:
+https://bugzilla.kernel.org/show_bug.cgi?id=87731
+
+Reported-by: Volker Kempter <v.kempter@pe.tu-clausthal.de>
+Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
+---
+
+--- a/drivers/net/wireless/b43/phy_common.c
++++ b/drivers/net/wireless/b43/phy_common.c
+@@ -301,8 +301,7 @@ void b43_phy_write(struct b43_wldev *dev
+ void b43_phy_copy(struct b43_wldev *dev, u16 destreg, u16 srcreg)
+ {
+ assert_mac_suspended(dev);
+- dev->phy.ops->phy_write(dev, destreg,
+- dev->phy.ops->phy_read(dev, srcreg));
++ b43_phy_write(dev, destreg, b43_phy_read(dev, srcreg));
+ }
+
+ void b43_phy_mask(struct b43_wldev *dev, u16 offset, u16 mask)