rpms/kernel/devel kernel.spec, 1.719, 1.720 linux-2.6-wireless.patch, 1.42, 1.43
John W. Linville (linville)
fedora-extras-commits at redhat.com
Fri Jun 27 20:00:28 UTC 2008
- Previous message: rpms/audacious/devel audacious.spec,1.38,1.39
- Next message: rpms/libmatthew-java/F-9 classpath_fix.patch, NONE, 1.1 early_upstream.patch, NONE, 1.1 import.log, NONE, 1.1 install_doc.patch, NONE, 1.1 jpackage_compliance.patch, NONE, 1.1 libmatthew-java.spec, NONE, 1.1 makefile.patch, NONE, 1.1 openjdk.patch, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: linville
Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv8587
Modified Files:
kernel.spec linux-2.6-wireless.patch
Log Message:
Upstream wireless fixes from 2008-06-27
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.719
retrieving revision 1.720
diff -u -r1.719 -r1.720
--- kernel.spec 27 Jun 2008 18:12:26 -0000 1.719
+++ kernel.spec 27 Jun 2008 19:59:42 -0000 1.720
@@ -1788,6 +1788,10 @@
%changelog
* Fri Jun 27 2008 John W. Linville <linville at redhat.com>
+- Upstream wireless fixes from 2008-06-27
+ (http://marc.info/?l=linux-wireless&m=121459423021061&w=2)
+
+* Fri Jun 27 2008 John W. Linville <linville at redhat.com>
- Upstream wireless updates from 2008-06-27
(http://marc.info/?l=linux-wireless&m=121458164930953&w=2)
linux-2.6-wireless.patch:
Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-wireless.patch,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- linux-2.6-wireless.patch 25 Jun 2008 20:02:57 -0000 1.42
+++ linux-2.6-wireless.patch 27 Jun 2008 19:59:42 -0000 1.43
@@ -1,3 +1,53 @@
+commit 00eb7fe77eb455f807c396f9917f0f623d4c84bb
+Author: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Date: Thu Jun 26 12:13:46 2008 +0300
+
+ mac80211: fix an oops in several failure paths in key allocation
+
+ This patch fixes an oops in several failure paths in key allocation. This
+ Oops occurs when freeing a key that has not been linked yet, so the
+ key->sdata is not set.
+
+ Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+ Signed-off-by: Tomas Winkler <tomas.winkler at intel.com>
+ Acked-by: Johannes Berg <johannes at sipsolutions.net>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 5f4a6fae46a214c4dce3bd63a6219a5f1c818c78
+Author: Harvey Harrison <harvey.harrison at gmail.com>
+Date: Wed Jun 25 14:20:37 2008 -0700
+
+ prism: islpci_eth.c endianness fix
+
+ clock is already cpu-endian (see le32_to_cpu slightly before), so
+ le64_to_cpu doesn't make much sense.
+
+ Signed-off-by: Harvey Harrison <harvey.harrison at gmail.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
+commit 980dfcb93232907034a2c92d62d3a7d6ac7bef44
+Author: Ivo van Doorn <ivdoorn at gmail.com>
+Date: Wed Jun 25 21:27:00 2008 +0200
+
+ rt2x00: Fix lock dependency errror
+
+ This fixes a circular locking dependency in the workqueue handling.
+ The interface work task uses the mac80211 function
+ ieee80211_iterate_active_interfaces() which grabs the RTNL lock.
+
+ However when the interface is brough down, this happens under the RTNL
+ lock as well, this causes problems because mac80211 will flush the workqueue
+ during the ifdown event. This causes mac80211 to wait until the driver has
+ completed all work which can't finish because it is waiting on the RTNL lock.
+
+ This is fixed by moving rt2x00 workqueue tasks on a different workqueue,
+ this workqueue can be flushed when the ieee80211_hw structure is removed
+ by the driver (when the driver is unloaded) which does not happen under the
+ RTNL lock.
+
+ Signed-off-by: Ivo van Doorn <IvDoorn at gmail.com>
+ Signed-off-by: John W. Linville <linville at tuxdriver.com>
+
commit 66b5004d85164a6439d3ba1e7757734472ee2cac
Author: Ron Rindjunsky <ron.rindjunsky at intel.com>
Date: Wed Jun 25 16:46:31 2008 +0800
@@ -103,8 +153,8 @@
Signed-off-by: John W. Linville <linville at tuxdriver.com>
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c.orig 2008-06-25 15:43:36.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c 2008-06-25 15:47:15.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c.orig 2008-06-27 15:43:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/leds.c 2008-06-27 15:44:28.000000000 -0400
@@ -72,6 +72,9 @@ static void b43_led_brightness_set(struc
struct b43_wldev *dev = led->dev;
bool radio_enabled;
@@ -116,8 +166,8 @@
* but we want to avoid the locking overhead and we don't care
* whether the LED has the wrong state for a second. */
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c.orig 2008-06-25 15:46:40.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c 2008-06-25 15:47:15.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c.orig 2008-06-27 15:43:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/dma.c 2008-06-27 15:44:28.000000000 -0400
@@ -876,6 +876,7 @@ struct b43legacy_dmaring *b43legacy_setu
if (!ring)
goto out;
@@ -135,8 +185,8 @@
ring->mmio_base = b43legacy_dmacontroller_base(type, controller_index);
ring->index = controller_index;
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig 2008-06-25 15:46:40.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c 2008-06-25 15:47:15.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c.orig 2008-06-27 15:43:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43legacy/main.c 2008-06-27 15:44:28.000000000 -0400
@@ -2378,8 +2378,10 @@ static int b43legacy_op_tx(struct ieee80
} else
err = b43legacy_dma_tx(dev, skb, ctl);
@@ -151,8 +201,8 @@
}
diff -up linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig linux-2.6.25.noarch/drivers/net/wireless/b43/main.c
---- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig 2008-06-25 15:46:40.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c 2008-06-25 15:47:15.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/b43/main.c.orig 2008-06-27 15:43:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/b43/main.c 2008-06-27 15:44:28.000000000 -0400
@@ -2883,12 +2883,11 @@ static int b43_op_tx(struct ieee80211_hw
if (unlikely(skb->len < 2 + 2 + 6)) {
@@ -183,8 +233,8 @@
}
diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c
---- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2008-06-25 15:46:40.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-06-25 15:47:15.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c.orig 2008-06-27 15:43:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-06-27 15:44:28.000000000 -0400
@@ -2227,7 +2227,10 @@ static int iwl3945_scan_initiate(struct
}
@@ -264,8 +314,8 @@
IWL_DEBUG_MAC80211("leave - invalid channel\n");
spin_unlock_irqrestore(&priv->lock, flags);
diff -up linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c
---- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig 2008-06-25 15:46:40.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c 2008-06-25 15:47:15.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c.orig 2008-06-27 15:43:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/iwlwifi/iwl4965-base.c 2008-06-27 15:44:28.000000000 -0400
@@ -1774,7 +1774,10 @@ static int iwl4965_scan_initiate(struct
}
@@ -364,9 +414,21 @@
IWL_WARNING("Invalid scan band count\n");
goto done;
}
+diff -up linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c.orig linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c
+--- linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c.orig 2008-04-16 22:49:44.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/prism54/islpci_eth.c 2008-06-27 15:45:09.000000000 -0400
+@@ -290,7 +290,7 @@ islpci_monitor_rx(islpci_private *priv,
+
+ avs->version = cpu_to_be32(P80211CAPTURE_VERSION);
+ avs->length = cpu_to_be32(sizeof (struct avs_80211_1_header));
+- avs->mactime = cpu_to_be64(le64_to_cpu(clock));
++ avs->mactime = cpu_to_be64(clock);
+ avs->hosttime = cpu_to_be64(jiffies);
+ avs->phytype = cpu_to_be32(6); /*OFDM: 6 for (g), 8 for (a) */
+ avs->channel = cpu_to_be32(channel_of_freq(freq));
diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig 2008-06-25 15:46:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c 2008-06-25 15:47:15.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c.orig 2008-06-27 15:43:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2500usb.c 2008-06-27 15:44:28.000000000 -0400
@@ -138,11 +138,8 @@ static void rt2500usb_bbp_write(struct r
* Wait until the BBP becomes ready.
*/
@@ -436,9 +498,138 @@
}
static void rt2500usb_rf_write(struct rt2x00_dev *rt2x00dev,
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c.orig 2008-06-27 15:43:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00dev.c 2008-06-27 15:45:09.000000000 -0400
+@@ -75,7 +75,7 @@ static void rt2x00lib_start_link_tuner(s
+
+ rt2x00lib_reset_link_tuner(rt2x00dev);
+
+- queue_delayed_work(rt2x00dev->hw->workqueue,
++ queue_delayed_work(rt2x00dev->workqueue,
+ &rt2x00dev->link.work, LINK_TUNE_INTERVAL);
+ }
+
+@@ -137,14 +137,6 @@ void rt2x00lib_disable_radio(struct rt2x
+ return;
+
+ /*
+- * Stop all scheduled work.
+- */
+- if (work_pending(&rt2x00dev->intf_work))
+- cancel_work_sync(&rt2x00dev->intf_work);
+- if (work_pending(&rt2x00dev->filter_work))
+- cancel_work_sync(&rt2x00dev->filter_work);
+-
+- /*
+ * Stop the TX queues.
+ */
+ ieee80211_stop_queues(rt2x00dev->hw);
+@@ -398,8 +390,8 @@ static void rt2x00lib_link_tuner(struct
+ * Increase tuner counter, and reschedule the next link tuner run.
+ */
+ rt2x00dev->link.count++;
+- queue_delayed_work(rt2x00dev->hw->workqueue, &rt2x00dev->link.work,
+- LINK_TUNE_INTERVAL);
++ queue_delayed_work(rt2x00dev->workqueue,
++ &rt2x00dev->link.work, LINK_TUNE_INTERVAL);
+ }
+
+ static void rt2x00lib_packetfilter_scheduled(struct work_struct *work)
+@@ -433,6 +425,15 @@ static void rt2x00lib_intf_scheduled_ite
+
+ spin_unlock(&intf->lock);
+
++ /*
++ * It is possible the radio was disabled while the work had been
++ * scheduled. If that happens we should return here immediately,
++ * note that in the spinlock protected area above the delayed_flags
++ * have been cleared correctly.
++ */
++ if (!test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags))
++ return;
++
+ if (delayed_flags & DELAYED_UPDATE_BEACON) {
+ skb = ieee80211_beacon_get(rt2x00dev->hw, vif, &control);
+ if (skb && rt2x00dev->ops->hw->beacon_update(rt2x00dev->hw,
+@@ -441,7 +442,7 @@ static void rt2x00lib_intf_scheduled_ite
+ }
+
+ if (delayed_flags & DELAYED_CONFIG_ERP)
+- rt2x00lib_config_erp(rt2x00dev, intf, &intf->conf);
++ rt2x00lib_config_erp(rt2x00dev, intf, &conf);
+
+ if (delayed_flags & DELAYED_LED_ASSOC)
+ rt2x00leds_led_assoc(rt2x00dev, !!rt2x00dev->intf_associated);
+@@ -487,7 +488,7 @@ void rt2x00lib_beacondone(struct rt2x00_
+ rt2x00lib_beacondone_iter,
+ rt2x00dev);
+
+- queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->intf_work);
++ queue_work(rt2x00dev->workqueue, &rt2x00dev->intf_work);
+ }
+ EXPORT_SYMBOL_GPL(rt2x00lib_beacondone);
+
+@@ -1130,6 +1131,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
+ /*
+ * Initialize configuration work.
+ */
++ rt2x00dev->workqueue = create_singlethread_workqueue("rt2x00lib");
++ if (!rt2x00dev->workqueue)
++ goto exit;
++
+ INIT_WORK(&rt2x00dev->intf_work, rt2x00lib_intf_scheduled);
+ INIT_WORK(&rt2x00dev->filter_work, rt2x00lib_packetfilter_scheduled);
+ INIT_DELAYED_WORK(&rt2x00dev->link.work, rt2x00lib_link_tuner);
+@@ -1190,6 +1195,13 @@ void rt2x00lib_remove_dev(struct rt2x00_
+ rt2x00leds_unregister(rt2x00dev);
+
+ /*
++ * Stop all queued work. Note that most tasks will already be halted
++ * during rt2x00lib_disable_radio() and rt2x00lib_uninitialize().
++ */
++ flush_workqueue(rt2x00dev->workqueue);
++ destroy_workqueue(rt2x00dev->workqueue);
++
++ /*
+ * Free ieee80211_hw memory.
+ */
+ rt2x00lib_remove_hw(rt2x00dev);
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h.orig 2008-06-27 15:43:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00.h 2008-06-27 15:45:09.000000000 -0400
+@@ -821,6 +821,7 @@ struct rt2x00_dev {
+ /*
+ * Scheduled work.
+ */
++ struct workqueue_struct *workqueue;
+ struct work_struct intf_work;
+ struct work_struct filter_work;
+
+diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c.orig 2008-06-27 15:43:40.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt2x00mac.c 2008-06-27 15:45:09.000000000 -0400
+@@ -428,7 +428,7 @@ void rt2x00mac_configure_filter(struct i
+ if (!test_bit(DRIVER_REQUIRE_SCHEDULED, &rt2x00dev->flags))
+ rt2x00dev->ops->lib->config_filter(rt2x00dev, *total_flags);
+ else
+- queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->filter_work);
++ queue_work(rt2x00dev->workqueue, &rt2x00dev->filter_work);
+ }
+ EXPORT_SYMBOL_GPL(rt2x00mac_configure_filter);
+
+@@ -509,7 +509,7 @@ void rt2x00mac_bss_info_changed(struct i
+ memcpy(&intf->conf, bss_conf, sizeof(*bss_conf));
+ if (delayed) {
+ intf->delayed_flags |= delayed;
+- queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->intf_work);
++ queue_work(rt2x00dev->workqueue, &rt2x00dev->intf_work);
+ }
+ spin_unlock(&intf->lock);
+ }
diff -up linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c
---- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig 2008-06-25 15:46:41.000000000 -0400
-+++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c 2008-06-25 15:47:15.000000000 -0400
+--- linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c.orig 2008-06-27 15:43:49.000000000 -0400
++++ linux-2.6.25.noarch/drivers/net/wireless/rt2x00/rt73usb.c 2008-06-27 15:44:28.000000000 -0400
@@ -134,11 +134,8 @@ static void rt73usb_bbp_write(struct rt2
* Wait until the BBP becomes ready.
*/
@@ -506,9 +697,28 @@
}
static void rt73usb_rf_write(struct rt2x00_dev *rt2x00dev,
+diff -up linux-2.6.25.noarch/net/mac80211/key.c.orig linux-2.6.25.noarch/net/mac80211/key.c
+--- linux-2.6.25.noarch/net/mac80211/key.c.orig 2008-06-27 15:43:41.000000000 -0400
++++ linux-2.6.25.noarch/net/mac80211/key.c 2008-06-27 15:45:09.000000000 -0400
+@@ -380,6 +380,15 @@ void ieee80211_key_free(struct ieee80211
+ if (!key)
+ return;
+
++ if (!key->sdata) {
++ /* The key has not been linked yet, simply free it
++ * and don't Oops */
++ if (key->conf.alg == ALG_CCMP)
++ ieee80211_aes_key_free(key->u.ccmp.tfm);
++ kfree(key);
++ return;
++ }
++
+ spin_lock_irqsave(&key->sdata->local->key_lock, flags);
+ __ieee80211_key_free(key);
+ spin_unlock_irqrestore(&key->sdata->local->key_lock, flags);
diff -up linux-2.6.25.noarch/net/wireless/reg.c.orig linux-2.6.25.noarch/net/wireless/reg.c
---- linux-2.6.25.noarch/net/wireless/reg.c.orig 2008-06-25 15:46:41.000000000 -0400
-+++ linux-2.6.25.noarch/net/wireless/reg.c 2008-06-25 15:47:15.000000000 -0400
+--- linux-2.6.25.noarch/net/wireless/reg.c.orig 2008-06-27 15:43:49.000000000 -0400
++++ linux-2.6.25.noarch/net/wireless/reg.c 2008-06-27 15:44:28.000000000 -0400
@@ -80,6 +80,23 @@ static const struct ieee80211_channel_ra
IEEE80211_CHAN_RADAR),
};
- Previous message: rpms/audacious/devel audacious.spec,1.38,1.39
- Next message: rpms/libmatthew-java/F-9 classpath_fix.patch, NONE, 1.1 early_upstream.patch, NONE, 1.1 import.log, NONE, 1.1 install_doc.patch, NONE, 1.1 jpackage_compliance.patch, NONE, 1.1 libmatthew-java.spec, NONE, 1.1 makefile.patch, NONE, 1.1 openjdk.patch, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the scm-commits
mailing list