]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.2-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 21 Feb 2012 18:41:12 +0000 (10:41 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 21 Feb 2012 18:41:12 +0000 (10:41 -0800)
added patches:
arm-at91-usb-at91-gadget-registration-for-module.patch
correct-ktime-to-tod-clock-comparator-conversion.patch
drm-radeon-kms-fix-msi-re-arm-on-rv370.patch
ecryptfs-copy-up-lower-inode-attrs-after-setting-lower-xattr.patch
ipheth-add-iphone-4s.patch
mac80211-fix-a-rwlock-bad-magic-bug.patch
pci-workaround-hard-wired-bus-number-v2.patch
powerpc-perf-power_pmu_start-restores-incorrect-values-breaking-frequency-events.patch
regmap-fix-cache-defaults-initialization-from-raw-cache-defaults.patch
vfs-fix-d_inode_lookup-dentry-ref-leak.patch

queue-3.2/arm-at91-usb-at91-gadget-registration-for-module.patch [new file with mode: 0644]
queue-3.2/correct-ktime-to-tod-clock-comparator-conversion.patch [new file with mode: 0644]
queue-3.2/drm-radeon-kms-fix-msi-re-arm-on-rv370.patch [new file with mode: 0644]
queue-3.2/ecryptfs-copy-up-lower-inode-attrs-after-setting-lower-xattr.patch [new file with mode: 0644]
queue-3.2/ipheth-add-iphone-4s.patch [new file with mode: 0644]
queue-3.2/mac80211-fix-a-rwlock-bad-magic-bug.patch [new file with mode: 0644]
queue-3.2/pci-workaround-hard-wired-bus-number-v2.patch [new file with mode: 0644]
queue-3.2/powerpc-perf-power_pmu_start-restores-incorrect-values-breaking-frequency-events.patch [new file with mode: 0644]
queue-3.2/regmap-fix-cache-defaults-initialization-from-raw-cache-defaults.patch [new file with mode: 0644]
queue-3.2/series [new file with mode: 0644]
queue-3.2/vfs-fix-d_inode_lookup-dentry-ref-leak.patch [new file with mode: 0644]

diff --git a/queue-3.2/arm-at91-usb-at91-gadget-registration-for-module.patch b/queue-3.2/arm-at91-usb-at91-gadget-registration-for-module.patch
new file mode 100644 (file)
index 0000000..a0a4fa6
--- /dev/null
@@ -0,0 +1,70 @@
+From e8c9dc93e27d891636defbc269f182a83e6abba8 Mon Sep 17 00:00:00 2001
+From: Nicolas Ferre <nicolas.ferre@atmel.com>
+Date: Fri, 27 Jan 2012 11:14:44 +0100
+Subject: ARM: at91: USB AT91 gadget registration for module
+
+From: Nicolas Ferre <nicolas.ferre@atmel.com>
+
+commit e8c9dc93e27d891636defbc269f182a83e6abba8 upstream.
+
+Registration of at91_udc as a module will enable SoC
+related code.
+
+Fix following an idea from Karel Znamenacek.
+
+Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
+Acked-by: Karel Znamenacek <karel@ryston.cz>
+Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/mach-at91/at91rm9200_devices.c  |    2 +-
+ arch/arm/mach-at91/at91sam9260_devices.c |    2 +-
+ arch/arm/mach-at91/at91sam9261_devices.c |    2 +-
+ arch/arm/mach-at91/at91sam9263_devices.c |    2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+--- a/arch/arm/mach-at91/at91rm9200_devices.c
++++ b/arch/arm/mach-at91/at91rm9200_devices.c
+@@ -83,7 +83,7 @@ void __init at91_add_device_usbh(struct
+  *  USB Device (Gadget)
+  * -------------------------------------------------------------------- */
+-#ifdef CONFIG_USB_AT91
++#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
+ static struct at91_udc_data udc_data;
+ static struct resource udc_resources[] = {
+--- a/arch/arm/mach-at91/at91sam9260_devices.c
++++ b/arch/arm/mach-at91/at91sam9260_devices.c
+@@ -84,7 +84,7 @@ void __init at91_add_device_usbh(struct
+  *  USB Device (Gadget)
+  * -------------------------------------------------------------------- */
+-#ifdef CONFIG_USB_AT91
++#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
+ static struct at91_udc_data udc_data;
+ static struct resource udc_resources[] = {
+--- a/arch/arm/mach-at91/at91sam9261_devices.c
++++ b/arch/arm/mach-at91/at91sam9261_devices.c
+@@ -87,7 +87,7 @@ void __init at91_add_device_usbh(struct
+  *  USB Device (Gadget)
+  * -------------------------------------------------------------------- */
+-#ifdef CONFIG_USB_AT91
++#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
+ static struct at91_udc_data udc_data;
+ static struct resource udc_resources[] = {
+--- a/arch/arm/mach-at91/at91sam9263_devices.c
++++ b/arch/arm/mach-at91/at91sam9263_devices.c
+@@ -92,7 +92,7 @@ void __init at91_add_device_usbh(struct
+  *  USB Device (Gadget)
+  * -------------------------------------------------------------------- */
+-#ifdef CONFIG_USB_AT91
++#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
+ static struct at91_udc_data udc_data;
+ static struct resource udc_resources[] = {
diff --git a/queue-3.2/correct-ktime-to-tod-clock-comparator-conversion.patch b/queue-3.2/correct-ktime-to-tod-clock-comparator-conversion.patch
new file mode 100644 (file)
index 0000000..b4980f5
--- /dev/null
@@ -0,0 +1,42 @@
+From cf1eb40f8f5ea12c9e569e7282161fc7f194fd62 Mon Sep 17 00:00:00 2001
+From: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Date: Fri, 17 Feb 2012 10:29:23 +0100
+Subject: S390: correct ktime to tod clock comparator conversion
+
+From: Martin Schwidefsky <schwidefsky@de.ibm.com>
+
+commit cf1eb40f8f5ea12c9e569e7282161fc7f194fd62 upstream.
+
+The conversion of the ktime to a value suitable for the clock comparator
+does not take changes to wall_to_monotonic into account. In fact the
+conversion just needs the boot clock (sched_clock_base_cc) and the
+total_sleep_time.
+
+This is applicable to 3.2+ kernels.
+
+Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/s390/kernel/time.c |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/arch/s390/kernel/time.c
++++ b/arch/s390/kernel/time.c
+@@ -113,11 +113,14 @@ static void fixup_clock_comparator(unsig
+ static int s390_next_ktime(ktime_t expires,
+                          struct clock_event_device *evt)
+ {
++      struct timespec ts;
+       u64 nsecs;
+-      nsecs = ktime_to_ns(ktime_sub(expires, ktime_get_monotonic_offset()));
++      ts.tv_sec = ts.tv_nsec = 0;
++      monotonic_to_bootbased(&ts);
++      nsecs = ktime_to_ns(ktime_add(timespec_to_ktime(ts), expires));
+       do_div(nsecs, 125);
+-      S390_lowcore.clock_comparator = TOD_UNIX_EPOCH + (nsecs << 9);
++      S390_lowcore.clock_comparator = sched_clock_base_cc + (nsecs << 9);
+       set_clock_comparator(S390_lowcore.clock_comparator);
+       return 0;
+ }
diff --git a/queue-3.2/drm-radeon-kms-fix-msi-re-arm-on-rv370.patch b/queue-3.2/drm-radeon-kms-fix-msi-re-arm-on-rv370.patch
new file mode 100644 (file)
index 0000000..c3206a5
--- /dev/null
@@ -0,0 +1,50 @@
+From b7f5b7dec3d539a84734f2bcb7e53fbb1532a40b Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Mon, 13 Feb 2012 16:36:34 -0500
+Subject: drm/radeon/kms: fix MSI re-arm on rv370+
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit b7f5b7dec3d539a84734f2bcb7e53fbb1532a40b upstream.
+
+MSI_REARM_EN register is a write only trigger register.
+There is no need RMW when re-arming.
+
+May fix:
+https://bugs.freedesktop.org/show_bug.cgi?id=41668
+
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/radeon/r100.c  |    4 +---
+ drivers/gpu/drm/radeon/rs600.c |    4 +---
+ 2 files changed, 2 insertions(+), 6 deletions(-)
+
+--- a/drivers/gpu/drm/radeon/r100.c
++++ b/drivers/gpu/drm/radeon/r100.c
+@@ -789,9 +789,7 @@ int r100_irq_process(struct radeon_devic
+                       WREG32(RADEON_AIC_CNTL, msi_rearm | RS400_MSI_REARM);
+                       break;
+               default:
+-                      msi_rearm = RREG32(RADEON_MSI_REARM_EN) & ~RV370_MSI_REARM_EN;
+-                      WREG32(RADEON_MSI_REARM_EN, msi_rearm);
+-                      WREG32(RADEON_MSI_REARM_EN, msi_rearm | RV370_MSI_REARM_EN);
++                      WREG32(RADEON_MSI_REARM_EN, RV370_MSI_REARM_EN);
+                       break;
+               }
+       }
+--- a/drivers/gpu/drm/radeon/rs600.c
++++ b/drivers/gpu/drm/radeon/rs600.c
+@@ -693,9 +693,7 @@ int rs600_irq_process(struct radeon_devi
+                       WREG32(RADEON_BUS_CNTL, msi_rearm | RS600_MSI_REARM);
+                       break;
+               default:
+-                      msi_rearm = RREG32(RADEON_MSI_REARM_EN) & ~RV370_MSI_REARM_EN;
+-                      WREG32(RADEON_MSI_REARM_EN, msi_rearm);
+-                      WREG32(RADEON_MSI_REARM_EN, msi_rearm | RV370_MSI_REARM_EN);
++                      WREG32(RADEON_MSI_REARM_EN, RV370_MSI_REARM_EN);
+                       break;
+               }
+       }
diff --git a/queue-3.2/ecryptfs-copy-up-lower-inode-attrs-after-setting-lower-xattr.patch b/queue-3.2/ecryptfs-copy-up-lower-inode-attrs-after-setting-lower-xattr.patch
new file mode 100644 (file)
index 0000000..62d3fd4
--- /dev/null
@@ -0,0 +1,40 @@
+From 545d680938be1e86a6c5250701ce9abaf360c495 Mon Sep 17 00:00:00 2001
+From: Tyler Hicks <tyhicks@canonical.com>
+Date: Tue, 7 Feb 2012 17:55:40 -0600
+Subject: eCryptfs: Copy up lower inode attrs after setting lower xattr
+
+From: Tyler Hicks <tyhicks@canonical.com>
+
+commit 545d680938be1e86a6c5250701ce9abaf360c495 upstream.
+
+After passing through a ->setxattr() call, eCryptfs needs to copy the
+inode attributes from the lower inode to the eCryptfs inode, as they
+may have changed in the lower filesystem's ->setxattr() path.
+
+One example is if an extended attribute containing a POSIX Access
+Control List is being set. The new ACL may cause the lower filesystem to
+modify the mode of the lower inode and the eCryptfs inode would need to
+be updated to reflect the new mode.
+
+https://launchpad.net/bugs/926292
+
+Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
+Reported-by: Sebastien Bacher <seb128@ubuntu.com>
+Cc: John Johansen <john.johansen@canonical.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/ecryptfs/inode.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/fs/ecryptfs/inode.c
++++ b/fs/ecryptfs/inode.c
+@@ -1104,6 +1104,8 @@ ecryptfs_setxattr(struct dentry *dentry,
+       }
+       rc = vfs_setxattr(lower_dentry, name, value, size, flags);
++      if (!rc)
++              fsstack_copy_attr_all(dentry->d_inode, lower_dentry->d_inode);
+ out:
+       return rc;
+ }
diff --git a/queue-3.2/ipheth-add-iphone-4s.patch b/queue-3.2/ipheth-add-iphone-4s.patch
new file mode 100644 (file)
index 0000000..2830ff5
--- /dev/null
@@ -0,0 +1,41 @@
+From 72ba009b8a159e995e40d3b4e5d7d265acead983 Mon Sep 17 00:00:00 2001
+From: Tim Gardner <tim.gardner@canonical.com>
+Date: Wed, 15 Feb 2012 07:50:15 +0000
+Subject: ipheth: Add iPhone 4S
+
+From: Tim Gardner <tim.gardner@canonical.com>
+
+commit 72ba009b8a159e995e40d3b4e5d7d265acead983 upstream.
+
+BugLink: http://bugs.launchpad.net/bugs/900802
+
+Signed-off-by: Till Kamppeter <till.kamppeter@gmail.com>
+Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/usb/ipheth.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/net/usb/ipheth.c
++++ b/drivers/net/usb/ipheth.c
+@@ -60,6 +60,7 @@
+ #define USB_PRODUCT_IPHONE_3GS  0x1294
+ #define USB_PRODUCT_IPHONE_4  0x1297
+ #define USB_PRODUCT_IPHONE_4_VZW 0x129c
++#define USB_PRODUCT_IPHONE_4S 0x12a0
+ #define IPHETH_USBINTF_CLASS    255
+ #define IPHETH_USBINTF_SUBCLASS 253
+@@ -103,6 +104,10 @@ static struct usb_device_id ipheth_table
+               USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4_VZW,
+               IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
+               IPHETH_USBINTF_PROTO) },
++      { USB_DEVICE_AND_INTERFACE_INFO(
++              USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4S,
++              IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS,
++              IPHETH_USBINTF_PROTO) },
+       { }
+ };
+ MODULE_DEVICE_TABLE(usb, ipheth_table);
diff --git a/queue-3.2/mac80211-fix-a-rwlock-bad-magic-bug.patch b/queue-3.2/mac80211-fix-a-rwlock-bad-magic-bug.patch
new file mode 100644 (file)
index 0000000..b29b3bd
--- /dev/null
@@ -0,0 +1,89 @@
+From b57e6b560fc2a2742910ac5ca0eb2c46e45aeac2 Mon Sep 17 00:00:00 2001
+From: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
+Date: Thu, 9 Feb 2012 19:59:43 +0530
+Subject: mac80211: Fix a rwlock bad magic bug
+
+From: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
+
+commit b57e6b560fc2a2742910ac5ca0eb2c46e45aeac2 upstream.
+
+read_lock(&tpt_trig->trig.leddev_list_lock) is accessed via the path
+ieee80211_open (->) ieee80211_do_open (->) ieee80211_mod_tpt_led_trig
+(->) ieee80211_start_tpt_led_trig (->) tpt_trig_timer before initializing
+it.
+the intilization of this read/write lock happens via the path
+ieee80211_led_init (->) led_trigger_register, but we are doing
+'ieee80211_led_init'  after 'ieeee80211_if_add' where we
+register netdev_ops.
+so we access leddev_list_lock before initializing it and causes the
+following bug in chrome laptops with AR928X cards with the following
+script
+
+while true
+do
+sudo modprobe -v ath9k
+sleep 3
+sudo modprobe -r ath9k
+sleep 3
+done
+
+       BUG: rwlock bad magic on CPU#1, wpa_supplicant/358, f5b9eccc
+       Pid: 358, comm: wpa_supplicant Not tainted 3.0.13 #1
+       Call Trace:
+
+       [<8137b9df>] rwlock_bug+0x3d/0x47
+       [<81179830>] do_raw_read_lock+0x19/0x29
+       [<8137f063>] _raw_read_lock+0xd/0xf
+       [<f9081957>] tpt_trig_timer+0xc3/0x145 [mac80211]
+       [<f9081f3a>] ieee80211_mod_tpt_led_trig+0x152/0x174 [mac80211]
+       [<f9076a3f>] ieee80211_do_open+0x11e/0x42e [mac80211]
+       [<f9075390>] ? ieee80211_check_concurrent_iface+0x26/0x13c [mac80211]
+       [<f9076d97>] ieee80211_open+0x48/0x4c [mac80211]
+       [<812dbed8>] __dev_open+0x82/0xab
+       [<812dc0c9>] __dev_change_flags+0x9c/0x113
+       [<812dc1ae>] dev_change_flags+0x18/0x44
+       [<8132144f>] devinet_ioctl+0x243/0x51a
+       [<81321ba9>] inet_ioctl+0x93/0xac
+       [<812cc951>] sock_ioctl+0x1c6/0x1ea
+       [<812cc78b>] ? might_fault+0x20/0x20
+       [<810b1ebb>] do_vfs_ioctl+0x46e/0x4a2
+       [<810a6ebb>] ? fget_light+0x2f/0x70
+       [<812ce549>] ? sys_recvmsg+0x3e/0x48
+       [<810b1f35>] sys_ioctl+0x46/0x69
+       [<8137fa77>] sysenter_do_call+0x12/0x2
+
+Cc: Gary Morain <gmorain@google.com>
+Cc: Paul Stewart <pstew@google.com>
+Cc: Abhijit Pradhan <abhijit@qca.qualcomm.com>
+Cc: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
+Cc: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
+Acked-by: Johannes Berg <johannes.berg@intel.com>
+Tested-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
+Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ net/mac80211/main.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/net/mac80211/main.c
++++ b/net/mac80211/main.c
+@@ -885,6 +885,8 @@ int ieee80211_register_hw(struct ieee802
+               wiphy_debug(local->hw.wiphy, "Failed to initialize wep: %d\n",
+                           result);
++      ieee80211_led_init(local);
++
+       rtnl_lock();
+       result = ieee80211_init_rate_ctrl_alg(local,
+@@ -906,8 +908,6 @@ int ieee80211_register_hw(struct ieee802
+       rtnl_unlock();
+-      ieee80211_led_init(local);
+-
+       local->network_latency_notifier.notifier_call =
+               ieee80211_max_network_latency;
+       result = pm_qos_add_notifier(PM_QOS_NETWORK_LATENCY,
diff --git a/queue-3.2/pci-workaround-hard-wired-bus-number-v2.patch b/queue-3.2/pci-workaround-hard-wired-bus-number-v2.patch
new file mode 100644 (file)
index 0000000..5c55ca5
--- /dev/null
@@ -0,0 +1,42 @@
+From 71f6bd4a23130cd2f4b036010c5790b1295290b9 Mon Sep 17 00:00:00 2001
+From: Yinghai Lu <yinghai.lu@oracle.com>
+Date: Mon, 30 Jan 2012 12:25:24 +0100
+Subject: PCI: workaround hard-wired bus number V2
+
+From: Yinghai Lu <yinghai.lu@oracle.com>
+
+commit 71f6bd4a23130cd2f4b036010c5790b1295290b9 upstream.
+
+Fixes PCI device detection on IBM xSeries IBM 3850 M2 / x3950 M2
+when using ACPI resources (_CRS).
+This is default, a manual workaround (without this patch)
+would be pci=nocrs boot param.
+
+V2: Add dev_warn if the workaround is hit. This should reveal
+how common such setups are (via google) and point to possible
+problems if things are still not working as expected.
+-> Suggested by Jan Beulich.
+
+Tested-by: garyhade@us.ibm.com
+Signed-off-by: Yinghai Lu <yinghai.lu@oracle.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/pci/probe.c |    5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/drivers/pci/probe.c
++++ b/drivers/pci/probe.c
+@@ -651,6 +651,11 @@ int __devinit pci_scan_bridge(struct pci
+       dev_dbg(&dev->dev, "scanning [bus %02x-%02x] behind bridge, pass %d\n",
+               secondary, subordinate, pass);
++      if (!primary && (primary != bus->number) && secondary && subordinate) {
++              dev_warn(&dev->dev, "Primary bus is hard wired to 0\n");
++              primary = bus->number;
++      }
++
+       /* Check if setup is sensible at all */
+       if (!pass &&
+           (primary != bus->number || secondary <= bus->number)) {
diff --git a/queue-3.2/powerpc-perf-power_pmu_start-restores-incorrect-values-breaking-frequency-events.patch b/queue-3.2/powerpc-perf-power_pmu_start-restores-incorrect-values-breaking-frequency-events.patch
new file mode 100644 (file)
index 0000000..8f1f3d8
--- /dev/null
@@ -0,0 +1,55 @@
+From 9a45a9407c69d068500923480884661e2b9cc421 Mon Sep 17 00:00:00 2001
+From: Anton Blanchard <anton@samba.org>
+Date: Wed, 15 Feb 2012 18:48:22 +0000
+Subject: powerpc/perf: power_pmu_start restores incorrect values, breaking frequency events
+
+From: Anton Blanchard <anton@samba.org>
+
+commit 9a45a9407c69d068500923480884661e2b9cc421 upstream.
+
+perf on POWER stopped working after commit e050e3f0a71b (perf: Fix
+broken interrupt rate throttling). That patch exposed a bug in
+the POWER perf_events code.
+
+Since the PMCs count upwards and take an exception when the top bit
+is set, we want to write 0x80000000 - left in power_pmu_start. We were
+instead programming in left which effectively disables the counter
+until we eventually hit 0x80000000. This could take seconds or longer.
+
+With the patch applied I get the expected number of samples:
+
+          SAMPLE events:       9948
+
+Signed-off-by: Anton Blanchard <anton@samba.org>
+Acked-by: Paul Mackerras <paulus@samba.org>
+Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/powerpc/kernel/perf_event.c |    8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/arch/powerpc/kernel/perf_event.c
++++ b/arch/powerpc/kernel/perf_event.c
+@@ -865,6 +865,7 @@ static void power_pmu_start(struct perf_
+ {
+       unsigned long flags;
+       s64 left;
++      unsigned long val;
+       if (!event->hw.idx || !event->hw.sample_period)
+               return;
+@@ -880,7 +881,12 @@ static void power_pmu_start(struct perf_
+       event->hw.state = 0;
+       left = local64_read(&event->hw.period_left);
+-      write_pmc(event->hw.idx, left);
++
++      val = 0;
++      if (left < 0x80000000L)
++              val = 0x80000000L - left;
++
++      write_pmc(event->hw.idx, val);
+       perf_event_update_userpage(event);
+       perf_pmu_enable(event->pmu);
diff --git a/queue-3.2/regmap-fix-cache-defaults-initialization-from-raw-cache-defaults.patch b/queue-3.2/regmap-fix-cache-defaults-initialization-from-raw-cache-defaults.patch
new file mode 100644 (file)
index 0000000..dfb6c78
--- /dev/null
@@ -0,0 +1,50 @@
+From 61cddc57dc14a5dffa0921d9a24fd68edbb374ac Mon Sep 17 00:00:00 2001
+From: Lars-Peter Clausen <lars@metafoo.de>
+Date: Wed, 15 Feb 2012 10:23:25 +0100
+Subject: regmap: Fix cache defaults initialization from raw cache defaults
+
+From: Lars-Peter Clausen <lars@metafoo.de>
+
+commit 61cddc57dc14a5dffa0921d9a24fd68edbb374ac upstream.
+
+Currently registers with a value of 0 are ignored when initializing the register
+defaults from raw defaults. This worked in the past, because registers without a
+explicit default were assumed to have a default value of 0. This was changed in
+commit b03622a8 ("regmap: Ensure rbtree syncs registers set to zero properly").
+As a result registers, which have a raw default value of 0 are now assumed to
+have no default. This again can result in unnecessary writes when syncing the
+cache. It will also result in unnecessary reads for e.g. the first update
+operation. In the case where readback is not possible this will even let the
+update operation fail, if the register has not been written to before.
+
+So this patch removes the check. Instead it adds a check to ignore raw defaults
+for registers which are volatile, since those registers are not cached.
+
+Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
+Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/base/regmap/regcache.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/base/regmap/regcache.c
++++ b/drivers/base/regmap/regcache.c
+@@ -54,7 +54,7 @@ static int regcache_hw_init(struct regma
+       for (count = 0, i = 0; i < map->num_reg_defaults_raw; i++) {
+               val = regcache_get_val(map->reg_defaults_raw,
+                                      i, map->cache_word_size);
+-              if (!val)
++              if (regmap_volatile(map, i))
+                       continue;
+               count++;
+       }
+@@ -69,7 +69,7 @@ static int regcache_hw_init(struct regma
+       for (i = 0, j = 0; i < map->num_reg_defaults_raw; i++) {
+               val = regcache_get_val(map->reg_defaults_raw,
+                                      i, map->cache_word_size);
+-              if (!val)
++              if (regmap_volatile(map, i))
+                       continue;
+               map->reg_defaults[j].reg = i;
+               map->reg_defaults[j].def = val;
diff --git a/queue-3.2/series b/queue-3.2/series
new file mode 100644 (file)
index 0000000..82bf525
--- /dev/null
@@ -0,0 +1,10 @@
+powerpc-perf-power_pmu_start-restores-incorrect-values-breaking-frequency-events.patch
+arm-at91-usb-at91-gadget-registration-for-module.patch
+drm-radeon-kms-fix-msi-re-arm-on-rv370.patch
+pci-workaround-hard-wired-bus-number-v2.patch
+mac80211-fix-a-rwlock-bad-magic-bug.patch
+ipheth-add-iphone-4s.patch
+regmap-fix-cache-defaults-initialization-from-raw-cache-defaults.patch
+ecryptfs-copy-up-lower-inode-attrs-after-setting-lower-xattr.patch
+correct-ktime-to-tod-clock-comparator-conversion.patch
+vfs-fix-d_inode_lookup-dentry-ref-leak.patch
diff --git a/queue-3.2/vfs-fix-d_inode_lookup-dentry-ref-leak.patch b/queue-3.2/vfs-fix-d_inode_lookup-dentry-ref-leak.patch
new file mode 100644 (file)
index 0000000..f9a04e8
--- /dev/null
@@ -0,0 +1,33 @@
+From e188dc02d3a9c911be56eca5aa114fe7e9822d53 Mon Sep 17 00:00:00 2001
+From: Miklos Szeredi <mszeredi@suse.cz>
+Date: Fri, 3 Feb 2012 14:25:18 +0100
+Subject: vfs: fix d_inode_lookup() dentry ref leak
+
+From: Miklos Szeredi <mszeredi@suse.cz>
+
+commit e188dc02d3a9c911be56eca5aa114fe7e9822d53 upstream.
+
+d_inode_lookup() leaks a dentry reference on IS_DEADDIR().
+
+Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/namei.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/fs/namei.c
++++ b/fs/namei.c
+@@ -1094,8 +1094,10 @@ static struct dentry *d_inode_lookup(str
+       struct dentry *old;
+       /* Don't create child dentry for a dead directory. */
+-      if (unlikely(IS_DEADDIR(inode)))
++      if (unlikely(IS_DEADDIR(inode))) {
++              dput(dentry);
+               return ERR_PTR(-ENOENT);
++      }
+       old = inode->i_op->lookup(inode, dentry, nd);
+       if (unlikely(old)) {