rpms/kernel/F-7 linux-2.6-bluetooth-hangup-tty-before-rfcomm.patch, NONE, 1.1 linux-2.6-cpufreq-acpi-fix-msr-write.patch, NONE, 1.1 linux-2.6-dev-get-driver-properly.patch, NONE, 1.1 linux-2.6-input-rfkill-wrong-size-flags.patch, NONE, 1.1 linux-2.6-net_sched_fix_deadlock.patch, NONE, 1.1 kernel-2.6.spec, 1.3284, 1.3285

Chuck Ebbert (cebbert) fedora-extras-commits at redhat.com
Mon Jul 16 20:55:59 UTC 2007


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv7935

Modified Files:
	kernel-2.6.spec 
Added Files:
	linux-2.6-bluetooth-hangup-tty-before-rfcomm.patch 
	linux-2.6-cpufreq-acpi-fix-msr-write.patch 
	linux-2.6-dev-get-driver-properly.patch 
	linux-2.6-input-rfkill-wrong-size-flags.patch 
	linux-2.6-net_sched_fix_deadlock.patch 
Log Message:
* Mon Jul 16 2007 Chuck Ebbert <cebbert at redhat.com>
- bluetooth: hangup tty before releasing rfcomm
- driver core: get driver properly during release
- net scheduler: fix deadlock
- input: rfkill driver screws up the CPU flags
- acpi-cpufreq: make register write work properly again


linux-2.6-bluetooth-hangup-tty-before-rfcomm.patch:

--- NEW FILE linux-2.6-bluetooth-hangup-tty-before-rfcomm.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=84950cf0ba02fd6a5defe2511bc41f9aa2237632
Commit:     84950cf0ba02fd6a5defe2511bc41f9aa2237632
Parent:     924f0e4a06419fa1996425d1d2512030e43acbba
Author:     Mikko Rapeli <mikko.rapeli at iki.fi>
AuthorDate: Wed Jul 11 09:18:15 2007 +0200
Committer:  Marcel Holtmann <marcel at holtmann.org>
CommitDate: Wed Jul 11 07:01:26 2007 +0200

    [Bluetooth] Hangup TTY before releasing rfcomm_dev
    
    The core problem is that RFCOMM socket layer ioctl can release
    rfcomm_dev struct while RFCOMM TTY layer is still actively using
    it. Calling tty_vhangup() is needed for a synchronous hangup before
    rfcomm_dev is freed.
    
    Addresses the oops at http://bugzilla.kernel.org/show_bug.cgi?id=7509
    
    Acked-by: Alan Cox <alan at lxorguk.ukuu.org.uk>
    Signed-off-by: Marcel Holtmann <marcel at holtmann.org>
---
 net/bluetooth/rfcomm/tty.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index b2b1cce..ba469b0 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -383,6 +383,10 @@ static int rfcomm_release_dev(void __user *arg)
 	if (req.flags & (1 << RFCOMM_HANGUP_NOW))
 		rfcomm_dlc_close(dev->dlc, 0);
 
+	/* Shut down TTY synchronously before freeing rfcomm_dev */
+	if (dev->tty)
+		tty_vhangup(dev->tty);
+
 	rfcomm_dev_del(dev);
 	rfcomm_dev_put(dev);
 	return 0;

linux-2.6-cpufreq-acpi-fix-msr-write.patch:

--- NEW FILE linux-2.6-cpufreq-acpi-fix-msr-write.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=13424f6514f6444554a103362dd9d31eabbbdc54
Commit:     13424f6514f6444554a103362dd9d31eabbbdc54
Parent:     0a4b2ccc555fa2ca6873d60219047104e4805d45
Author:     Venki Pallipadi <venkatesh.pallipadi at intel.com>
AuthorDate: Wed May 23 15:42:13 2007 -0700
Committer:  Dave Jones <davej at redhat.com>
CommitDate: Tue May 29 16:56:40 2007 -0400

    [CPUFREQ] acpi-cpufreq: Proper ReadModifyWrite of PERF_CTL MSR
    
    During recent acpi-cpufreq changes, writing to PERF_CTL msr
    changed from RMW of entire 64 bit to RMW of low 32 bit and clearing of
    upper 32 bit. Fix it back to do a proper RMW of the MSR.
    
    Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi at intel.com>
    Signed-off-by: Dave Jones <davej at redhat.com>
---
 arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c |   13 +++++--------
 1 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
index 10baa35..18c8b67 100644
--- a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
+++ b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c
@@ -167,11 +167,13 @@ static void do_drv_read(struct drv_cmd *cmd)
 
 static void do_drv_write(struct drv_cmd *cmd)
 {
-	u32 h = 0;
+	u32 lo, hi;
 
 	switch (cmd->type) {
 	case SYSTEM_INTEL_MSR_CAPABLE:
-		wrmsr(cmd->addr.msr.reg, cmd->val, h);
+		rdmsr(cmd->addr.msr.reg, lo, hi);
+		lo = (lo & ~INTEL_MSR_RANGE) | (cmd->val & INTEL_MSR_RANGE);
+		wrmsr(cmd->addr.msr.reg, lo, hi);
 		break;
 	case SYSTEM_IO_CAPABLE:
 		acpi_os_write_port((acpi_io_address)cmd->addr.io.port,
@@ -372,7 +374,6 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
 	struct cpufreq_freqs freqs;
 	cpumask_t online_policy_cpus;
 	struct drv_cmd cmd;
-	unsigned int msr;
 	unsigned int next_state = 0; /* Index into freq_table */
 	unsigned int next_perf_state = 0; /* Index into perf table */
 	unsigned int i;
@@ -417,11 +418,7 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
 	case SYSTEM_INTEL_MSR_CAPABLE:
 		cmd.type = SYSTEM_INTEL_MSR_CAPABLE;
 		cmd.addr.msr.reg = MSR_IA32_PERF_CTL;
-		msr =
-		    (u32) perf->states[next_perf_state].
-		    control & INTEL_MSR_RANGE;
-		cmd.val = get_cur_val(online_policy_cpus);
-		cmd.val = (cmd.val & ~INTEL_MSR_RANGE) | msr;
+		cmd.val = (u32) perf->states[next_perf_state].control;
 		break;
 	case SYSTEM_IO_CAPABLE:
 		cmd.type = SYSTEM_IO_CAPABLE;

linux-2.6-dev-get-driver-properly.patch:

--- NEW FILE linux-2.6-dev-get-driver-properly.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1f5681aae8feadd113644c9e077152416c12b75c
Commit:     1f5681aae8feadd113644c9e077152416c12b75c
Parent:     f8916c11a4dc4cb2367e9bee1788f4e0f1b4eabc
Author:     Stefan Richter <stefanr at s5r6.in-berlin.de>
AuthorDate: Sun Jun 17 11:01:18 2007 +0200
Committer:  Greg Kroah-Hartman <gregkh at suse.de>
CommitDate: Wed Jul 11 16:09:01 2007 -0700

    driver core: properly get driver in device_release_driver
    
    Signed-off-by: Stefan Richter <stefanr at s5r6.in-berlin.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de>
---
 drivers/base/dd.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index b0088b0..3c503e1 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -296,9 +296,8 @@ static void __device_release_driver(struct device * dev)
 {
 	struct device_driver * drv;
 
-	drv = dev->driver;
+	drv = get_driver(dev->driver);
 	if (drv) {
-		get_driver(drv);
 		driver_sysfs_remove(dev);
 		sysfs_remove_link(&dev->kobj, "driver");
 		klist_remove(&dev->knode_driver);

linux-2.6-input-rfkill-wrong-size-flags.patch:

--- NEW FILE linux-2.6-input-rfkill-wrong-size-flags.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e6c9116d1dc984cb7ecf1b0fe26ca4a8ab36bb57
Commit:     e6c9116d1dc984cb7ecf1b0fe26ca4a8ab36bb57
Parent:     8d9107e8c50e1c4ff43c91c8841805833f3ecfb9
Author:     Ingo Molnar <mingo at elte.hu>
AuthorDate: Sat Jul 14 18:50:15 2007 -0700
Committer:  David S. Miller <davem at davemloft.net>
CommitDate: Sat Jul 14 18:50:15 2007 -0700

    [RFKILL]: fix net/rfkill/rfkill-input.c bug on 64-bit systems
    
    Subject: [patch] net/input: fix net/rfkill/rfkill-input.c bug on 64-bit systems
    
    this recent commit:
    
     commit cf4328cd949c2086091c62c5685f1580fe9b55e4
     Author: Ivo van Doorn <IvDoorn at gmail.com>
     Date:   Mon May 7 00:34:20 2007 -0700
    
         [NET]: rfkill: add support for input key to control wireless radio
    
    added this 64-bit bug:
    
            ....
    	unsigned int flags;
    
     	spin_lock_irqsave(&task->lock, flags);
            ....
    
    irq 'flags' must be unsigned long, not unsigned int. The -rt tree has
    strict checks about this on 64-bit so this triggered a build failure.
    
    Signed-off-by: Ingo Molnar <mingo at elte.hu>
    Signed-off-by: David S. Miller <davem at davemloft.net>
---
 net/rfkill/rfkill-input.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/rfkill/rfkill-input.c b/net/rfkill/rfkill-input.c
index e5c840c..230e35c 100644
--- a/net/rfkill/rfkill-input.c
+++ b/net/rfkill/rfkill-input.c
@@ -55,7 +55,7 @@ static void rfkill_task_handler(struct work_struct *work)
 
 static void rfkill_schedule_toggle(struct rfkill_task *task)
 {
-	unsigned int flags;
+	unsigned long flags;
 
 	spin_lock_irqsave(&task->lock, flags);
 

linux-2.6-net_sched_fix_deadlock.patch:

--- NEW FILE linux-2.6-net_sched_fix_deadlock.patch ---
Gitweb:     http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0621ed2e4edbe2f6f83dafbf85eecefae7aaf2e8
Commit:     0621ed2e4edbe2f6f83dafbf85eecefae7aaf2e8
Parent:     59eecdfb166f6846ae356ddc744abed5820ad965
Author:     Patrick McHardy <kaber at trash.net>
AuthorDate: Sat Jul 14 20:49:26 2007 -0700
Committer:  David S. Miller <davem at davemloft.net>
CommitDate: Sat Jul 14 20:49:26 2007 -0700

    [NET_SCHED]: Revert "avoid transmit softirq on watchdog wakeup" optimization
    
    As noticed by Ranko Zivojnovic <ranko at spidernet.net>, calling qdisc_run
    from the timer handler can result in deadlock:
    
    > CPU#0
    >
    > qdisc_watchdog() fires and gets dev->queue_lock
    > qdisc_run()...qdisc_restart()...
    > -> releases dev->queue_lock and enters dev_hard_start_xmit()
    >
    > CPU#1
    >
    > tc del qdisc dev ...
    > qdisc_graft()...dev_graft_qdisc()...dev_deactivate()...
    > -> grabs dev->queue_lock ...
    >
    > qdisc_reset()...{cbq,hfsc,htb,netem,tbf}_reset()...qdisc_watchdog_cancel()...
    > -> hrtimer_cancel() - waiting for the qdisc_watchdog() to exit, while still
    >		        holding dev->queue_lock
    >
    > CPU#0
    >
    > dev_hard_start_xmit() returns ...
    > -> wants to get dev->queue_lock(!)
    >
    > DEADLOCK!
    
    The entire optimization is a bit questionable IMO, it moves potentially
    large parts of NET_TX_SOFTIRQ work to TIMER_SOFTIRQ/HRTIMER_SOFTIRQ,
    which kind of defeats the separation of them.
    
    Signed-off-by: Patrick McHardy <kaber at trash.net>
    Acked-by: Ranko Zivojnovic <ranko at spidernet.net>
    Signed-off-by: David S. Miller <davem at davemloft.net>
---
 net/sched/sch_api.c |    6 +-----
 1 files changed, 1 insertions(+), 5 deletions(-)

diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index d92ea26..4fd0bec 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -278,11 +278,7 @@ static enum hrtimer_restart qdisc_watchdog(struct hrtimer *timer)
 
 	wd->qdisc->flags &= ~TCQ_F_THROTTLED;
 	smp_wmb();
-	if (spin_trylock(&dev->queue_lock)) {
-		qdisc_run(dev);
-		spin_unlock(&dev->queue_lock);
-	} else
-		netif_schedule(dev);
+	netif_schedule(dev);
 
 	return HRTIMER_NORESTART;
 }


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/kernel-2.6.spec,v
retrieving revision 1.3284
retrieving revision 1.3285
diff -u -r1.3284 -r1.3285
--- kernel-2.6.spec	16 Jul 2007 20:08:29 -0000	1.3284
+++ kernel-2.6.spec	16 Jul 2007 20:55:27 -0000	1.3285
@@ -544,14 +544,18 @@
 Patch340: linux-2.6-debug-sysfs-crash-debugging.patch
 Patch350: linux-2.6-devmem.patch
 Patch370: linux-2.6-crash-driver.patch
+Patch380: linux-2.6-bluetooth-hangup-tty-before-rfcomm.patch
+Patch390: linux-2.6-dev-get-driver-properly.patch
 Patch400: linux-2.6-scsi-cpqarray-set-master.patch
 Patch401: linux-2.6-aacraid-ioctl-security.patch
 Patch420: linux-2.6-squashfs.patch
 Patch421: linux-2.6-jbd-fix-transaction-dropping.patch
 Patch430: linux-2.6-net-silence-noisy-printks.patch
 Patch431: linux-2.6-tcp-sack-fix-leak-msgs.patch
+Patch432: linux-2.6-net_sched_fix_deadlock.patch
 Patch440: linux-2.6-sha_alignment.patch
 Patch450: linux-2.6-input-kill-stupid-messages.patch
+Patch451: linux-2.6-input-rfkill-wrong-size-flags.patch
 Patch460: linux-2.6-serial-460800.patch
 Patch480: linux-2.6-proc-self-maps-fix.patch
 Patch490: linux-2.6-softlockup-disable.patch
@@ -577,6 +581,7 @@
 Patch711: linux-2.6-sky2-restore-workarounds.patch
 #Patch780: linux-2.6-clockevents-fix-resume-logic.patch
 Patch790: linux-2.6-acpi-dock-oops.patch
+Patch791: linux-2.6-cpufreq-acpi-fix-msr-write.patch
 Patch800: linux-2.6-wakeups-hdaps.patch
 Patch801: linux-2.6-wakeups.patch
 Patch900: linux-2.6-sched-cfs.patch
@@ -1147,6 +1152,16 @@
 ApplyPatch linux-2.6-crash-driver.patch
 
 #
+# bluetooth
+#
+ApplyPatch linux-2.6-bluetooth-hangup-tty-before-rfcomm.patch
+
+#
+# driver core
+#
+ApplyPatch linux-2.6-dev-get-driver-properly.patch
+
+#
 # SCSI Bits.
 #
 # fix cpqarray pci enable
@@ -1165,12 +1180,16 @@
 ApplyPatch linux-2.6-net-silence-noisy-printks.patch
 # fix leak in tcp SACk processing
 ApplyPatch linux-2.6-tcp-sack-fix-leak-msgs.patch
+# deadlock in net scheduler(s)
+ApplyPatch linux-2.6-net_sched_fix_deadlock.patch
 
 # Misc fixes
 # Fix SHA1 alignment problem on ia64
 ApplyPatch linux-2.6-sha_alignment.patch
 # The input layer spews crap no-one cares about.
 ApplyPatch linux-2.6-input-kill-stupid-messages.patch
+# rfkill driver screws up flags
+ApplyPatch linux-2.6-input-rfkill-wrong-size-flags.patch
 # Allow to use 480600 baud on 16C950 UARTs
 ApplyPatch linux-2.6-serial-460800.patch
 # Add a safety net to softlockup so that it doesn't prevent installs.
@@ -1230,6 +1249,8 @@
 # ACPI patches
 # Fix ACPI dock oops (#238054)
 ApplyPatch linux-2.6-acpi-dock-oops.patch
+# acpi-cpufreq: fix register writes
+ApplyPatch linux-2.6-cpufreq-acpi-fix-msr-write.patch
 
 # Fix excessive wakeups
 # Make hdaps timer only tick when in use.
@@ -2180,6 +2201,13 @@
 
 %changelog
 * Mon Jul 16 2007 Chuck Ebbert <cebbert at redhat.com>
+- bluetooth: hangup tty before releasing rfcomm
+- driver core: get driver properly during release
+- net scheduler: fix deadlock
+- input: rfkill driver screws up the CPU flags
+- acpi-cpufreq: make register write work properly again
+
+* Mon Jul 16 2007 Chuck Ebbert <cebbert at redhat.com>
 - add proper caching of last_ctl to the 'unbreak SMART' fix
 
 * Mon Jul 16 2007 Dave Jones <davej at redhat.com>




More information about the fedora-extras-commits mailing list