diff --git a/debian/changelog b/debian/changelog index a021e2019..33c154102 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,7 @@ -linux-2.6 (3.4.1-1~experimental.2) UNRELEASED; urgency=low +linux-2.6 (3.4.2-1~experimental.1) UNRELEASED; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.4.2 [ Ben Hutchings ] * [ia64] Export to userland (fixes FTBFS) diff --git a/debian/patches/bugfix/all/acpi-battery-only-refresh-the-sysfs-files-when-pertinent.patch b/debian/patches/bugfix/all/acpi-battery-only-refresh-the-sysfs-files-when-pertinent.patch deleted file mode 100644 index 90659142b..000000000 --- a/debian/patches/bugfix/all/acpi-battery-only-refresh-the-sysfs-files-when-pertinent.patch +++ /dev/null @@ -1,49 +0,0 @@ -From: Andy Whitcroft -Date: Thu, 3 May 2012 14:48:26 +0100 -Subject: ACPI battery: only refresh the sysfs files when pertinent - information changes - -commit c5971456964290da7e98222892797b71ef793e62 upstream. - -We only need to regenerate the sysfs files when the capacity units -change, avoid the update otherwise. - -The origin of this issue is dates way back to 2.6.38: -da8aeb92d4853f37e281f11fddf61f9c7d84c3cd -(ACPI / Battery: Update information on info notification and resume) - -Signed-off-by: Andy Whitcroft -Tested-by: Ralf Jung -Signed-off-by: Len Brown ---- - drivers/acpi/battery.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - -diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c -index 86933ca..7dd3f9f 100644 ---- a/drivers/acpi/battery.c -+++ b/drivers/acpi/battery.c -@@ -643,11 +643,19 @@ static int acpi_battery_update(struct acpi_battery *battery) - - static void acpi_battery_refresh(struct acpi_battery *battery) - { -+ int power_unit; -+ - if (!battery->bat.dev) - return; - -+ power_unit = battery->power_unit; -+ - acpi_battery_get_info(battery); -- /* The battery may have changed its reporting units. */ -+ -+ if (power_unit == battery->power_unit) -+ return; -+ -+ /* The battery has changed its reporting units. */ - sysfs_remove_battery(battery); - sysfs_add_battery(battery); - } --- -1.7.10 - diff --git a/debian/patches/bugfix/all/fix-scsi_wait_scan.patch b/debian/patches/bugfix/all/fix-scsi_wait_scan.patch deleted file mode 100644 index aee0bce6e..000000000 --- a/debian/patches/bugfix/all/fix-scsi_wait_scan.patch +++ /dev/null @@ -1,40 +0,0 @@ -From: James Bottomley -Date: Wed, 30 May 2012 09:45:39 +0000 -Subject: [SCSI] fix scsi_wait_scan - -commit 1ff2f40305772b159a91c19590ee159d3a504afc upstream. - -Commit c751085943362143f84346d274e0011419c84202 -Author: Rafael J. Wysocki -Date: Sun Apr 12 20:06:56 2009 +0200 - - PM/Hibernate: Wait for SCSI devices scan to complete during resume - -Broke the scsi_wait_scan module in 2.6.30. Apparently debian still uses it so -fix it and backport to stable before removing it in 3.6. - -The breakage is caused because the function template in -include/scsi/scsi_scan.h is defined to be a nop unless SCSI is built in. -That means that in the modular case (which is every distro), the -scsi_wait_scan module does a simple async_synchronize_full() instead of -waiting for scans. - -Signed-off-by: James Bottomley -Signed-off-by: Ben Hutchings ---- - drivers/scsi/scsi_wait_scan.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/scsi/scsi_wait_scan.c b/drivers/scsi/scsi_wait_scan.c -index 74708fc..ae78148 100644 ---- a/drivers/scsi/scsi_wait_scan.c -+++ b/drivers/scsi/scsi_wait_scan.c -@@ -12,7 +12,7 @@ - - #include - #include --#include -+#include "scsi_priv.h" - - static int __init wait_scan_init(void) - { diff --git a/debian/patches/bugfix/all/hugetlb-fix-resv_map-leak-in-error-path.patch b/debian/patches/bugfix/all/hugetlb-fix-resv_map-leak-in-error-path.patch deleted file mode 100644 index 3bd31ce60..000000000 --- a/debian/patches/bugfix/all/hugetlb-fix-resv_map-leak-in-error-path.patch +++ /dev/null @@ -1,105 +0,0 @@ -From: Dave Hansen -Date: Tue, 29 May 2012 15:06:46 -0700 -Subject: hugetlb: fix resv_map leak in error path - -commit c50ac050811d6485616a193eb0f37bfbd191cc89 upstream. - -When called for anonymous (non-shared) mappings, hugetlb_reserve_pages() -does a resv_map_alloc(). It depends on code in hugetlbfs's -vm_ops->close() to release that allocation. - -However, in the mmap() failure path, we do a plain unmap_region() without -the remove_vma() which actually calls vm_ops->close(). - -This is a decent fix. This leak could get reintroduced if new code (say, -after hugetlb_reserve_pages() in hugetlbfs_file_mmap()) decides to return -an error. But, I think it would have to unroll the reservation anyway. - -Christoph's test case: - - http://marc.info/?l=linux-mm&m=133728900729735 - -This patch applies to 3.4 and later. A version for earlier kernels is at -https://lkml.org/lkml/2012/5/22/418. - -Signed-off-by: Dave Hansen -Acked-by: Mel Gorman -Acked-by: KOSAKI Motohiro -Reported-by: Christoph Lameter -Tested-by: Christoph Lameter -Cc: Andrea Arcangeli -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds ---- - mm/hugetlb.c | 28 ++++++++++++++++++++++------ - 1 file changed, 22 insertions(+), 6 deletions(-) - -diff --git a/mm/hugetlb.c b/mm/hugetlb.c -index 41a647d..285a81e 100644 ---- a/mm/hugetlb.c -+++ b/mm/hugetlb.c -@@ -2157,6 +2157,15 @@ static void hugetlb_vm_op_open(struct vm_area_struct *vma) - kref_get(&reservations->refs); - } - -+static void resv_map_put(struct vm_area_struct *vma) -+{ -+ struct resv_map *reservations = vma_resv_map(vma); -+ -+ if (!reservations) -+ return; -+ kref_put(&reservations->refs, resv_map_release); -+} -+ - static void hugetlb_vm_op_close(struct vm_area_struct *vma) - { - struct hstate *h = hstate_vma(vma); -@@ -2173,7 +2182,7 @@ static void hugetlb_vm_op_close(struct vm_area_struct *vma) - reserve = (end - start) - - region_count(&reservations->regions, start, end); - -- kref_put(&reservations->refs, resv_map_release); -+ resv_map_put(vma); - - if (reserve) { - hugetlb_acct_memory(h, -reserve); -@@ -2991,12 +3000,16 @@ int hugetlb_reserve_pages(struct inode *inode, - set_vma_resv_flags(vma, HPAGE_RESV_OWNER); - } - -- if (chg < 0) -- return chg; -+ if (chg < 0) { -+ ret = chg; -+ goto out_err; -+ } - - /* There must be enough pages in the subpool for the mapping */ -- if (hugepage_subpool_get_pages(spool, chg)) -- return -ENOSPC; -+ if (hugepage_subpool_get_pages(spool, chg)) { -+ ret = -ENOSPC; -+ goto out_err; -+ } - - /* - * Check enough hugepages are available for the reservation. -@@ -3005,7 +3018,7 @@ int hugetlb_reserve_pages(struct inode *inode, - ret = hugetlb_acct_memory(h, chg); - if (ret < 0) { - hugepage_subpool_put_pages(spool, chg); -- return ret; -+ goto out_err; - } - - /* -@@ -3022,6 +3035,9 @@ int hugetlb_reserve_pages(struct inode *inode, - if (!vma || vma->vm_flags & VM_MAYSHARE) - region_add(&inode->i_mapping->private_list, from, to); - return 0; -+out_err: -+ resv_map_put(vma); -+ return ret; - } - - void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed) diff --git a/debian/patches/bugfix/all/mm-fix-vma_resv_map-null-pointer.patch b/debian/patches/bugfix/all/mm-fix-vma_resv_map-null-pointer.patch deleted file mode 100644 index d6c0c3974..000000000 --- a/debian/patches/bugfix/all/mm-fix-vma_resv_map-null-pointer.patch +++ /dev/null @@ -1,66 +0,0 @@ -From: Dave Hansen -Date: Wed, 30 May 2012 07:51:07 -0700 -Subject: mm: fix vma_resv_map() NULL pointer - -commit 4523e1458566a0e8ecfaff90f380dd23acc44d27 upstream. - -hugetlb_reserve_pages() can be used for either normal file-backed -hugetlbfs mappings, or MAP_HUGETLB. In the MAP_HUGETLB, semi-anonymous -mode, there is not a VMA around. The new call to resv_map_put() assumed -that there was, and resulted in a NULL pointer dereference: - - BUG: unable to handle kernel NULL pointer dereference at 0000000000000030 - IP: vma_resv_map+0x9/0x30 - PGD 141453067 PUD 1421e1067 PMD 0 - Oops: 0000 [#1] PREEMPT SMP - ... - Pid: 14006, comm: trinity-child6 Not tainted 3.4.0+ #36 - RIP: vma_resv_map+0x9/0x30 - ... - Process trinity-child6 (pid: 14006, threadinfo ffff8801414e0000, task ffff8801414f26b0) - Call Trace: - resv_map_put+0xe/0x40 - hugetlb_reserve_pages+0xa6/0x1d0 - hugetlb_file_setup+0x102/0x2c0 - newseg+0x115/0x360 - ipcget+0x1ce/0x310 - sys_shmget+0x5a/0x60 - system_call_fastpath+0x16/0x1b - -This was reported by Dave Jones, but was reproducible with the -libhugetlbfs test cases, so shame on me for not running them in the -first place. - -With this, the oops is gone, and the output of libhugetlbfs's -run_tests.py is identical to plain 3.4 again. - -[ Marked for stable, since this was introduced by commit c50ac050811d - ("hugetlb: fix resv_map leak in error path") which was also marked for - stable ] - -Reported-by: Dave Jones -Cc: Mel Gorman -Cc: KOSAKI Motohiro -Cc: Christoph Lameter -Cc: Andrea Arcangeli -Cc: Andrew Morton -Signed-off-by: Linus Torvalds -Signed-off-by: Ben Hutchings ---- - mm/hugetlb.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/mm/hugetlb.c b/mm/hugetlb.c -index 285a81e..e198831 100644 ---- a/mm/hugetlb.c -+++ b/mm/hugetlb.c -@@ -3036,7 +3036,8 @@ int hugetlb_reserve_pages(struct inode *inode, - region_add(&inode->i_mapping->private_list, from, to); - return 0; - out_err: -- resv_map_put(vma); -+ if (vma) -+ resv_map_put(vma); - return ret; - } - diff --git a/debian/patches/bugfix/arm/ARM-ixp4xx-gpiolib-support.patch b/debian/patches/bugfix/arm/ARM-ixp4xx-gpiolib-support.patch deleted file mode 100644 index 9c069a481..000000000 --- a/debian/patches/bugfix/arm/ARM-ixp4xx-gpiolib-support.patch +++ /dev/null @@ -1,159 +0,0 @@ -From: Imre Kaloz -Subject: [RFC/PATCH] ARM: ixp4xx gpiolib support -Date: Mon, 5 Sep 2011 14:49:51 +0200 - -This patch adds gpiolib support for the IXP4xx platform - -Signed-off-by: Imre Kaloz -[bwh: Forward-ported to 3.4] ---- - arch/arm/Kconfig | 2 +- - arch/arm/mach-ixp4xx/common.c | 39 +++++++++++++++++++++++++ - arch/arm/mach-ixp4xx/include/mach/gpio.h | 46 ++++++++++-------------------- - 3 files changed, 55 insertions(+), 32 deletions(-) - -Index: source_armel_none/arch/arm/Kconfig -=================================================================== ---- source_armel_none.orig/arch/arm/Kconfig 2012-01-07 20:47:15.000000000 +0100 -+++ source_armel_none/arch/arm/Kconfig 2012-01-07 20:51:00.390593917 +0100 -@@ -520,7 +520,7 @@ config ARCH_IXP4XX - select ARCH_HAS_DMA_SET_COHERENT_MASK - select CLKSRC_MMIO - select CPU_XSCALE -- select GENERIC_GPIO -+ select ARCH_REQUIRE_GPIOLIB - select GENERIC_CLOCKEVENTS - select MIGHT_HAVE_PCI - select NEED_MACH_IO_H -Index: source_armel_none/arch/arm/mach-ixp4xx/common.c -=================================================================== ---- source_armel_none.orig/arch/arm/mach-ixp4xx/common.c 2012-01-07 20:47:15.000000000 +0100 -+++ source_armel_none/arch/arm/mach-ixp4xx/common.c 2012-01-07 20:51:00.390593917 +0100 -@@ -37,6 +37,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -376,12 +377,50 @@ static struct platform_device *ixp46x_de - unsigned long ixp4xx_exp_bus_size; - EXPORT_SYMBOL(ixp4xx_exp_bus_size); - -+static int ixp4xx_gpio_direction_input(struct gpio_chip *chip, unsigned gpio) -+{ -+ gpio_line_config(gpio, IXP4XX_GPIO_IN); -+ return 0; -+} -+ -+static int ixp4xx_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, int level) -+{ -+ gpio_line_set(gpio, level); -+ gpio_line_config(gpio, IXP4XX_GPIO_OUT); -+ return 0; -+} -+ -+static int ixp4xx_gpio_get_value(struct gpio_chip *chip, unsigned gpio) -+{ -+ int value; -+ -+ gpio_line_get(gpio, &value); -+ return value; -+} -+ -+static void ixp4xx_gpio_set_value(struct gpio_chip *chip, unsigned gpio, int value) -+{ -+ gpio_line_set(gpio, value); -+} -+ -+static struct gpio_chip ixp4xx_gpio_chip = { -+ .label = "IXP4XX_GPIO_CHIP", -+ .direction_input = ixp4xx_gpio_direction_input, -+ .direction_output = ixp4xx_gpio_direction_output, -+ .get = ixp4xx_gpio_get_value, -+ .set = ixp4xx_gpio_set_value, -+ .base = 0, -+ .ngpio = 16, -+}; -+ - void __init ixp4xx_sys_init(void) - { - ixp4xx_exp_bus_size = SZ_16M; - - platform_add_devices(ixp4xx_devices, ARRAY_SIZE(ixp4xx_devices)); - -+ gpiochip_add(&ixp4xx_gpio_chip); -+ - if (cpu_is_ixp46x()) { - int region; - -Index: source_armel_none/arch/arm/mach-ixp4xx/include/mach/gpio.h -=================================================================== ---- source_armel_none.orig/arch/arm/mach-ixp4xx/include/mach/gpio.h 2012-01-07 20:47:15.000000000 +0100 -+++ source_armel_none/arch/arm/mach-ixp4xx/include/mach/gpio.h 2012-01-07 20:51:00.390593917 +0100 -@@ -27,49 +27,33 @@ - - #include - #include -+#include /* cansleep wrappers */ - - #define __ARM_GPIOLIB_COMPLEX - --static inline int gpio_request(unsigned gpio, const char *label) --{ -- return 0; --} -- --static inline void gpio_free(unsigned gpio) --{ -- might_sleep(); -- -- return; --} -- --static inline int gpio_direction_input(unsigned gpio) --{ -- gpio_line_config(gpio, IXP4XX_GPIO_IN); -- return 0; --} -- --static inline int gpio_direction_output(unsigned gpio, int level) --{ -- gpio_line_set(gpio, level); -- gpio_line_config(gpio, IXP4XX_GPIO_OUT); -- return 0; --} -+#define NR_BUILTIN_GPIO 16 - - static inline int gpio_get_value(unsigned gpio) - { -- int value; -- -- gpio_line_get(gpio, &value); -- -- return value; -+ if (gpio < NR_BUILTIN_GPIO) -+ { -+ int value; -+ gpio_line_get(gpio, &value); -+ return value; -+ } -+ else -+ return __gpio_get_value(gpio); - } - - static inline void gpio_set_value(unsigned gpio, int value) - { -- gpio_line_set(gpio, value); -+ if (gpio < NR_BUILTIN_GPIO) -+ gpio_line_set(gpio, value); -+ else -+ __gpio_set_value(gpio, value); - } - --#include /* cansleep wrappers */ -+#define gpio_cansleep __gpio_cansleep - - extern int gpio_to_irq(int gpio); - #define gpio_to_irq gpio_to_irq diff --git a/debian/patches/series/base b/debian/patches/series/base index 0a1e79b36..29a5b0689 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -41,7 +41,6 @@ + bugfix/ia64/nouveau-ACPI-support-is-dependent-on-X86.patch + bugfix/arm/ixp4xx_iobe.patch + debian/x86-memtest-WARN-if-bad-RAM-found.patch -+ bugfix/arm/ARM-ixp4xx-gpiolib-support.patch + bugfix/alpha/alpha-add-io-read-write-16-32-be-functions.patch + features/all/fs-symlink-restrictions-on-sticky-directories.patch @@ -59,8 +58,6 @@ + features/all/wacom/0025-Input-wacom-add-0xE5-MT-device-support.patch + features/all/wacom/0026-Input-wacom-return-proper-error-if-usb_get_extra_des.patch -+ bugfix/all/acpi-battery-only-refresh-the-sysfs-files-when-pertinent.patch - # Update be2net driver to 3.5ish + features/all/be2net/0043-be2net-fix-ethtool-get-settings.patch + features/all/be2net/0044-be2net-Fix-VLAN-multicast-packet-reception.patch @@ -89,8 +86,5 @@ + features/all/codel/0007-fq_codel-should-use-qdisc-backlog-as-threshold.patch + bugfix/x86/mm-pmd_read_atomic-fix-32bit-pae-pmd-walk-vs-pmd_populate-smp-race.patch -+ bugfix/all/hugetlb-fix-resv_map-leak-in-error-path.patch -+ bugfix/all/mm-fix-vma_resv_map-null-pointer.patch -+ bugfix/all/fix-scsi_wait_scan.patch + bugfix/ia64/IA64-Export-asm-cmpxchg.h-to-userland.patch