From: Greg Kroah-Hartman Date: Tue, 21 Feb 2012 18:41:12 +0000 (-0800) Subject: 3.2-stable patches X-Git-Tag: v3.2.8~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=681d2dba6ffc833ce3f60f9168a23cb5ac581d21;p=thirdparty%2Fkernel%2Fstable-queue.git 3.2-stable patches 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 --- 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 index 00000000000..a0a4fa6a875 --- /dev/null +++ b/queue-3.2/arm-at91-usb-at91-gadget-registration-for-module.patch @@ -0,0 +1,70 @@ +From e8c9dc93e27d891636defbc269f182a83e6abba8 Mon Sep 17 00:00:00 2001 +From: Nicolas Ferre +Date: Fri, 27 Jan 2012 11:14:44 +0100 +Subject: ARM: at91: USB AT91 gadget registration for module + +From: Nicolas Ferre + +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 +Acked-by: Karel Znamenacek +Acked-by: Jean-Christophe PLAGNIOL-VILLARD +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..b4980f55343 --- /dev/null +++ b/queue-3.2/correct-ktime-to-tod-clock-comparator-conversion.patch @@ -0,0 +1,42 @@ +From cf1eb40f8f5ea12c9e569e7282161fc7f194fd62 Mon Sep 17 00:00:00 2001 +From: Martin Schwidefsky +Date: Fri, 17 Feb 2012 10:29:23 +0100 +Subject: S390: correct ktime to tod clock comparator conversion + +From: Martin Schwidefsky + +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 +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..c3206a53f80 --- /dev/null +++ b/queue-3.2/drm-radeon-kms-fix-msi-re-arm-on-rv370.patch @@ -0,0 +1,50 @@ +From b7f5b7dec3d539a84734f2bcb7e53fbb1532a40b Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Mon, 13 Feb 2012 16:36:34 -0500 +Subject: drm/radeon/kms: fix MSI re-arm on rv370+ + +From: Alex Deucher + +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 +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..62d3fd4546d --- /dev/null +++ b/queue-3.2/ecryptfs-copy-up-lower-inode-attrs-after-setting-lower-xattr.patch @@ -0,0 +1,40 @@ +From 545d680938be1e86a6c5250701ce9abaf360c495 Mon Sep 17 00:00:00 2001 +From: Tyler Hicks +Date: Tue, 7 Feb 2012 17:55:40 -0600 +Subject: eCryptfs: Copy up lower inode attrs after setting lower xattr + +From: Tyler Hicks + +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 +Reported-by: Sebastien Bacher +Cc: John Johansen +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..2830ff5679d --- /dev/null +++ b/queue-3.2/ipheth-add-iphone-4s.patch @@ -0,0 +1,41 @@ +From 72ba009b8a159e995e40d3b4e5d7d265acead983 Mon Sep 17 00:00:00 2001 +From: Tim Gardner +Date: Wed, 15 Feb 2012 07:50:15 +0000 +Subject: ipheth: Add iPhone 4S + +From: Tim Gardner + +commit 72ba009b8a159e995e40d3b4e5d7d265acead983 upstream. + +BugLink: http://bugs.launchpad.net/bugs/900802 + +Signed-off-by: Till Kamppeter +Signed-off-by: Tim Gardner +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..b29b3bde616 --- /dev/null +++ b/queue-3.2/mac80211-fix-a-rwlock-bad-magic-bug.patch @@ -0,0 +1,89 @@ +From b57e6b560fc2a2742910ac5ca0eb2c46e45aeac2 Mon Sep 17 00:00:00 2001 +From: Mohammed Shafi Shajakhan +Date: Thu, 9 Feb 2012 19:59:43 +0530 +Subject: mac80211: Fix a rwlock bad magic bug + +From: Mohammed Shafi Shajakhan + +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 + [] tpt_trig_timer+0xc3/0x145 [mac80211] + [] ieee80211_mod_tpt_led_trig+0x152/0x174 [mac80211] + [] ieee80211_do_open+0x11e/0x42e [mac80211] + [] ? ieee80211_check_concurrent_iface+0x26/0x13c [mac80211] + [] 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 +Cc: Paul Stewart +Cc: Abhijit Pradhan +Cc: Vasanthakumar Thiagarajan +Cc: Rajkumar Manoharan +Acked-by: Johannes Berg +Tested-by: Mohammed Shafi Shajakhan +Signed-off-by: Mohammed Shafi Shajakhan +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..5c55ca55f8c --- /dev/null +++ b/queue-3.2/pci-workaround-hard-wired-bus-number-v2.patch @@ -0,0 +1,42 @@ +From 71f6bd4a23130cd2f4b036010c5790b1295290b9 Mon Sep 17 00:00:00 2001 +From: Yinghai Lu +Date: Mon, 30 Jan 2012 12:25:24 +0100 +Subject: PCI: workaround hard-wired bus number V2 + +From: Yinghai Lu + +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 +Signed-off-by: Jesse Barnes +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..8f1f3d8e53c --- /dev/null +++ b/queue-3.2/powerpc-perf-power_pmu_start-restores-incorrect-values-breaking-frequency-events.patch @@ -0,0 +1,55 @@ +From 9a45a9407c69d068500923480884661e2b9cc421 Mon Sep 17 00:00:00 2001 +From: Anton Blanchard +Date: Wed, 15 Feb 2012 18:48:22 +0000 +Subject: powerpc/perf: power_pmu_start restores incorrect values, breaking frequency events + +From: Anton Blanchard + +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 +Acked-by: Paul Mackerras +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..dfb6c784770 --- /dev/null +++ b/queue-3.2/regmap-fix-cache-defaults-initialization-from-raw-cache-defaults.patch @@ -0,0 +1,50 @@ +From 61cddc57dc14a5dffa0921d9a24fd68edbb374ac Mon Sep 17 00:00:00 2001 +From: Lars-Peter Clausen +Date: Wed, 15 Feb 2012 10:23:25 +0100 +Subject: regmap: Fix cache defaults initialization from raw cache defaults + +From: Lars-Peter Clausen + +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 +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + 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 index 00000000000..82bf52504cd --- /dev/null +++ b/queue-3.2/series @@ -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 index 00000000000..f9a04e8130b --- /dev/null +++ b/queue-3.2/vfs-fix-d_inode_lookup-dentry-ref-leak.patch @@ -0,0 +1,33 @@ +From e188dc02d3a9c911be56eca5aa114fe7e9822d53 Mon Sep 17 00:00:00 2001 +From: Miklos Szeredi +Date: Fri, 3 Feb 2012 14:25:18 +0100 +Subject: vfs: fix d_inode_lookup() dentry ref leak + +From: Miklos Szeredi + +commit e188dc02d3a9c911be56eca5aa114fe7e9822d53 upstream. + +d_inode_lookup() leaks a dentry reference on IS_DEADDIR(). + +Signed-off-by: Miklos Szeredi +Signed-off-by: Al Viro +Signed-off-by: Greg Kroah-Hartman + +--- + 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)) {