[kernel/f19] Fix system freeze due to incorrect rt2800 initialization (rhbz 1000679)

Josh Boyer jwboyer at fedoraproject.org
Mon Sep 9 12:40:58 UTC 2013


commit 72812240f1e095e85945ebc4ddfb9a884c573fb1
Author: Josh Boyer <jwboyer at fedoraproject.org>
Date:   Mon Sep 9 08:35:58 2013 -0400

    Fix system freeze due to incorrect rt2800 initialization (rhbz 1000679)

 kernel.spec                                     |    9 ++++++
 rt2800-rearrange-bbp-rfcsr-initialization.patch |   35 +++++++++++++++++++++++
 2 files changed, 44 insertions(+), 0 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 8564cc0..e259974 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -770,6 +770,9 @@ Patch25077: media-cx23885-Fix-TeVii-S471-regression-since-introduction-of-ts2020
 #CVE-2013-0343 rhbz 914664 999380
 Patch25078: ipv6-remove-max_addresses-check-from-ipv6_create_tempaddr.patch
 
+#rhbz 1000679
+Patch25079: rt2800-rearrange-bbp-rfcsr-initialization.patch
+
 #CVE-2013-2888 rhbz 1000451 1002543 CVE-2013-2889 rhbz 999890 1002548
 #CVE-2013-2891 rhbz 999960 1002555  CVE-2013-2892 rhbz 1000429 1002570
 #CVE-2013-2893 rhbz 1000414 1002575 CVE-2013-2894 rhbz 1000137 1002579
@@ -1502,6 +1505,9 @@ ApplyPatch ipv6-remove-max_addresses-check-from-ipv6_create_tempaddr.patch
 #CVE-2013-2897 rhbz 1000536 1002600 CVE-2013-2899 rhbz 1000373 1002604
 ApplyPatch HID-CVE-fixes.patch
 
+#rhbz 1000679
+ApplyPatch rt2800-rearrange-bbp-rfcsr-initialization.patch
+
 # END OF PATCH APPLICATIONS
 
 %endif
@@ -2314,6 +2320,9 @@ fi
 # and build.
 
 %changelog
+* Mon Sep 09 2013 Josh Boyer <jwboyer at fedoraproject.org>
+- Fix system freeze due to incorrect rt2800 initialization (rhbz 1000679)
+
 * Thu Sep 09 2013 Justin M. Forbes <jforbes at fedoraproject.org> 3.10.11-200
 - Linux v3.10.11
 
diff --git a/rt2800-rearrange-bbp-rfcsr-initialization.patch b/rt2800-rearrange-bbp-rfcsr-initialization.patch
new file mode 100644
index 0000000..c782fc5
--- /dev/null
+++ b/rt2800-rearrange-bbp-rfcsr-initialization.patch
@@ -0,0 +1,35 @@
+diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
+index 7e66a90..6a70c27 100644
+--- a/drivers/net/wireless/rt2x00/rt2800lib.c
++++ b/drivers/net/wireless/rt2x00/rt2800lib.c
+@@ -4041,8 +4041,7 @@ static int rt2800_init_bbp(struct rt2x00_dev *rt2x00dev)
+ 	u8 reg_id;
+ 	u8 value;
+ 
+-	if (unlikely(rt2800_wait_bbp_rf_ready(rt2x00dev) ||
+-		     rt2800_wait_bbp_ready(rt2x00dev)))
++	if (unlikely(rt2800_wait_bbp_ready(rt2x00dev)))
+ 		return -EACCES;
+ 
+ 	if (rt2x00_rt(rt2x00dev, RT5592)) {
+@@ -5185,15 +5184,17 @@ int rt2800_enable_radio(struct rt2x00_dev *rt2x00dev)
+ 		     rt2800_init_registers(rt2x00dev)))
+ 		return -EIO;
+ 
++	if (unlikely(rt2800_wait_bbp_rf_ready(rt2x00dev)))
++		return -EIO;
++
+ 	/*
+ 	 * Send signal to firmware during boot time.
+ 	 */
+ 	rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0);
+ 	rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0);
+-	if (rt2x00_is_usb(rt2x00dev)) {
++	if (rt2x00_is_usb(rt2x00dev))
+ 		rt2800_register_write(rt2x00dev, H2M_INT_SRC, 0);
+-		rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0);
+-	}
++	rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0);
+ 	msleep(1);
+ 
+ 	if (unlikely(rt2800_init_bbp(rt2x00dev)))


More information about the scm-commits mailing list