]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 31 Jul 2017 20:52:32 +0000 (13:52 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 31 Jul 2017 20:52:32 +0000 (13:52 -0700)
added patches:
alsa-fm801-initialize-chip-after-irq-handler-is-registered.patch
alsa-hda-add-missing-nvidia-gpu-codec-ids-to-patch-table.patch
jfs-don-t-clear-sgid-when-inheriting-acls.patch
parisc-extend-disabled-preemption-in-copy_user_page.patch
parisc-prevent-tlb-speculation-on-flushed-pages-on-cpus-that-only-support-equivalent-aliases.patch
parisc-suspend-lockup-detectors-before-system-halt.patch
powerpc-pseries-fix-of_node_put-underflow-during-reconfig-remove.patch

queue-4.9/alsa-fm801-initialize-chip-after-irq-handler-is-registered.patch [new file with mode: 0644]
queue-4.9/alsa-hda-add-missing-nvidia-gpu-codec-ids-to-patch-table.patch [new file with mode: 0644]
queue-4.9/jfs-don-t-clear-sgid-when-inheriting-acls.patch [new file with mode: 0644]
queue-4.9/parisc-extend-disabled-preemption-in-copy_user_page.patch [new file with mode: 0644]
queue-4.9/parisc-prevent-tlb-speculation-on-flushed-pages-on-cpus-that-only-support-equivalent-aliases.patch [new file with mode: 0644]
queue-4.9/parisc-suspend-lockup-detectors-before-system-halt.patch [new file with mode: 0644]
queue-4.9/powerpc-pseries-fix-of_node_put-underflow-during-reconfig-remove.patch [new file with mode: 0644]
queue-4.9/series

diff --git a/queue-4.9/alsa-fm801-initialize-chip-after-irq-handler-is-registered.patch b/queue-4.9/alsa-fm801-initialize-chip-after-irq-handler-is-registered.patch
new file mode 100644 (file)
index 0000000..d9db3dc
--- /dev/null
@@ -0,0 +1,51 @@
+From 610e1ae9b533be82b3aa118b907e0a703256913d Mon Sep 17 00:00:00 2001
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Date: Sun, 16 Jul 2017 21:40:03 +0300
+Subject: ALSA: fm801: Initialize chip after IRQ handler is registered
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+
+commit 610e1ae9b533be82b3aa118b907e0a703256913d upstream.
+
+The commit b56fa687e02b ("ALSA: fm801: detect FM-only card earlier")
+rearranged initialization calls, i.e. it makes snd_fm801_chip_init() to
+be called before we register interrupt handler and set PCI bus
+mastering.
+
+Somehow it prevents FM801-AU to work properly. Thus, partially revert
+initialization order changed by commit mentioned above.
+
+Fixes: b56fa687e02b ("ALSA: fm801: detect FM-only card earlier")
+Reported-by: Émeric MASCHINO <emeric.maschino@gmail.com>
+Tested-by: Émeric MASCHINO <emeric.maschino@gmail.com>
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/fm801.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/sound/pci/fm801.c
++++ b/sound/pci/fm801.c
+@@ -1235,8 +1235,6 @@ static int snd_fm801_create(struct snd_c
+               }
+       }
+-      snd_fm801_chip_init(chip);
+-
+       if ((chip->tea575x_tuner & TUNER_ONLY) == 0) {
+               if (devm_request_irq(&pci->dev, pci->irq, snd_fm801_interrupt,
+                               IRQF_SHARED, KBUILD_MODNAME, chip)) {
+@@ -1248,6 +1246,8 @@ static int snd_fm801_create(struct snd_c
+               pci_set_master(pci);
+       }
++      snd_fm801_chip_init(chip);
++
+       if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
+               snd_fm801_free(chip);
+               return err;
diff --git a/queue-4.9/alsa-hda-add-missing-nvidia-gpu-codec-ids-to-patch-table.patch b/queue-4.9/alsa-hda-add-missing-nvidia-gpu-codec-ids-to-patch-table.patch
new file mode 100644 (file)
index 0000000..93298a9
--- /dev/null
@@ -0,0 +1,81 @@
+From 74ec118152ea494a25ebb677cbc83a75c982ac5f Mon Sep 17 00:00:00 2001
+From: Daniel Dadap <ddadap@nvidia.com>
+Date: Thu, 13 Jul 2017 19:27:39 -0500
+Subject: ALSA: hda - Add missing NVIDIA GPU codec IDs to patch table
+
+From: Daniel Dadap <ddadap@nvidia.com>
+
+commit 74ec118152ea494a25ebb677cbc83a75c982ac5f upstream.
+
+Add codec IDs for several recently released, pending, and historical
+NVIDIA GPU audio controllers to the patch table, to allow the correct
+patch functions to be selected for them.
+
+Signed-off-by: Daniel Dadap <ddadap@nvidia.com>
+Reviewed-by: Andy Ritger <aritger@nvidia.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_hdmi.c |   27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -3600,11 +3600,15 @@ HDA_CODEC_ENTRY(0x1002aa01, "R6xx HDMI",
+ HDA_CODEC_ENTRY(0x10951390, "SiI1390 HDMI",   patch_generic_hdmi),
+ HDA_CODEC_ENTRY(0x10951392, "SiI1392 HDMI",   patch_generic_hdmi),
+ HDA_CODEC_ENTRY(0x17e80047, "Chrontel HDMI",  patch_generic_hdmi),
++HDA_CODEC_ENTRY(0x10de0001, "MCP73 HDMI",     patch_nvhdmi_2ch),
+ HDA_CODEC_ENTRY(0x10de0002, "MCP77/78 HDMI",  patch_nvhdmi_8ch_7x),
+ HDA_CODEC_ENTRY(0x10de0003, "MCP77/78 HDMI",  patch_nvhdmi_8ch_7x),
++HDA_CODEC_ENTRY(0x10de0004, "GPU 04 HDMI",    patch_nvhdmi_8ch_7x),
+ HDA_CODEC_ENTRY(0x10de0005, "MCP77/78 HDMI",  patch_nvhdmi_8ch_7x),
+ HDA_CODEC_ENTRY(0x10de0006, "MCP77/78 HDMI",  patch_nvhdmi_8ch_7x),
+ HDA_CODEC_ENTRY(0x10de0007, "MCP79/7A HDMI",  patch_nvhdmi_8ch_7x),
++HDA_CODEC_ENTRY(0x10de0008, "GPU 08 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0009, "GPU 09 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de000a, "GPU 0a HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de000b, "GPU 0b HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de000c, "MCP89 HDMI",     patch_nvhdmi),
+@@ -3631,17 +3635,40 @@ HDA_CODEC_ENTRY(0x10de0041, "GPU 41 HDMI
+ HDA_CODEC_ENTRY(0x10de0042, "GPU 42 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0043, "GPU 43 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0044, "GPU 44 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0045, "GPU 45 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0050, "GPU 50 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0051, "GPU 51 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0052, "GPU 52 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0060, "GPU 60 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0061, "GPU 61 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0062, "GPU 62 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0067, "MCP67 HDMI",     patch_nvhdmi_2ch),
+ HDA_CODEC_ENTRY(0x10de0070, "GPU 70 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0071, "GPU 71 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0072, "GPU 72 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0073, "GPU 73 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0074, "GPU 74 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0076, "GPU 76 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de007b, "GPU 7b HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de007c, "GPU 7c HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de007d, "GPU 7d HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de007e, "GPU 7e HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0080, "GPU 80 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0081, "GPU 81 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0082, "GPU 82 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de0083, "GPU 83 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0084, "GPU 84 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0090, "GPU 90 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0091, "GPU 91 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0092, "GPU 92 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0093, "GPU 93 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0094, "GPU 94 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0095, "GPU 95 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0097, "GPU 97 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0098, "GPU 98 HDMI/DP", patch_nvhdmi),
++HDA_CODEC_ENTRY(0x10de0099, "GPU 99 HDMI/DP", patch_nvhdmi),
+ HDA_CODEC_ENTRY(0x10de8001, "MCP73 HDMI",     patch_nvhdmi_2ch),
++HDA_CODEC_ENTRY(0x10de8067, "MCP67/68 HDMI",  patch_nvhdmi_2ch),
+ HDA_CODEC_ENTRY(0x11069f80, "VX900 HDMI/DP",  patch_via_hdmi),
+ HDA_CODEC_ENTRY(0x11069f81, "VX900 HDMI/DP",  patch_via_hdmi),
+ HDA_CODEC_ENTRY(0x11069f84, "VX11 HDMI/DP",   patch_generic_hdmi),
diff --git a/queue-4.9/jfs-don-t-clear-sgid-when-inheriting-acls.patch b/queue-4.9/jfs-don-t-clear-sgid-when-inheriting-acls.patch
new file mode 100644 (file)
index 0000000..74e46a2
--- /dev/null
@@ -0,0 +1,65 @@
+From 9bcf66c72d726322441ec82962994e69157613e4 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Thu, 22 Jun 2017 15:31:10 +0200
+Subject: jfs: Don't clear SGID when inheriting ACLs
+
+From: Jan Kara <jack@suse.cz>
+
+commit 9bcf66c72d726322441ec82962994e69157613e4 upstream.
+
+When new directory 'DIR1' is created in a directory 'DIR0' with SGID bit
+set, DIR1 is expected to have SGID bit set (and owning group equal to
+the owning group of 'DIR0'). However when 'DIR0' also has some default
+ACLs that 'DIR1' inherits, setting these ACLs will result in SGID bit on
+'DIR1' to get cleared if user is not member of the owning group.
+
+Fix the problem by moving posix_acl_update_mode() out of
+__jfs_set_acl() into jfs_set_acl(). That way the function will not be
+called when inheriting ACLs which is what we want as it prevents SGID
+bit clearing and the mode has been properly set by posix_acl_create()
+anyway.
+
+Fixes: 073931017b49d9458aa351605b43a7e34598caef
+CC: jfs-discussion@lists.sourceforge.net
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/jfs/acl.c |   15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+--- a/fs/jfs/acl.c
++++ b/fs/jfs/acl.c
+@@ -77,13 +77,6 @@ static int __jfs_set_acl(tid_t tid, stru
+       switch (type) {
+       case ACL_TYPE_ACCESS:
+               ea_name = XATTR_NAME_POSIX_ACL_ACCESS;
+-              if (acl) {
+-                      rc = posix_acl_update_mode(inode, &inode->i_mode, &acl);
+-                      if (rc)
+-                              return rc;
+-                      inode->i_ctime = current_time(inode);
+-                      mark_inode_dirty(inode);
+-              }
+               break;
+       case ACL_TYPE_DEFAULT:
+               ea_name = XATTR_NAME_POSIX_ACL_DEFAULT;
+@@ -118,9 +111,17 @@ int jfs_set_acl(struct inode *inode, str
+       tid = txBegin(inode->i_sb, 0);
+       mutex_lock(&JFS_IP(inode)->commit_mutex);
++      if (type == ACL_TYPE_ACCESS && acl) {
++              rc = posix_acl_update_mode(inode, &inode->i_mode, &acl);
++              if (rc)
++                      goto end_tx;
++              inode->i_ctime = current_time(inode);
++              mark_inode_dirty(inode);
++      }
+       rc = __jfs_set_acl(tid, inode, type, acl);
+       if (!rc)
+               rc = txCommit(tid, 1, &inode, 0);
++end_tx:
+       txEnd(tid);
+       mutex_unlock(&JFS_IP(inode)->commit_mutex);
+       return rc;
diff --git a/queue-4.9/parisc-extend-disabled-preemption-in-copy_user_page.patch b/queue-4.9/parisc-extend-disabled-preemption-in-copy_user_page.patch
new file mode 100644 (file)
index 0000000..2da8c08
--- /dev/null
@@ -0,0 +1,33 @@
+From 56008c04ebc099940021b714da2d7779117cf6a7 Mon Sep 17 00:00:00 2001
+From: John David Anglin <dave.anglin@bell.net>
+Date: Tue, 25 Jul 2017 17:23:35 -0400
+Subject: parisc: Extend disabled preemption in copy_user_page
+
+From: John David Anglin <dave.anglin@bell.net>
+
+commit 56008c04ebc099940021b714da2d7779117cf6a7 upstream.
+
+It's always bothered me that we only disable preemption in
+copy_user_page around the call to flush_dcache_page_asm.
+This patch extends this to after the copy.
+
+Signed-off-by: John David Anglin <dave.anglin@bell.net>
+Signed-off-by: Helge Deller <deller@gmx.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/parisc/kernel/cache.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/parisc/kernel/cache.c
++++ b/arch/parisc/kernel/cache.c
+@@ -452,8 +452,8 @@ void copy_user_page(void *vto, void *vfr
+         before it can be accessed through the kernel mapping. */
+       preempt_disable();
+       flush_dcache_page_asm(__pa(vfrom), vaddr);
+-      preempt_enable();
+       copy_page_asm(vto, vfrom);
++      preempt_enable();
+ }
+ EXPORT_SYMBOL(copy_user_page);
diff --git a/queue-4.9/parisc-prevent-tlb-speculation-on-flushed-pages-on-cpus-that-only-support-equivalent-aliases.patch b/queue-4.9/parisc-prevent-tlb-speculation-on-flushed-pages-on-cpus-that-only-support-equivalent-aliases.patch
new file mode 100644 (file)
index 0000000..bad1262
--- /dev/null
@@ -0,0 +1,103 @@
+From ae7a609c34b6fb12328c553b5f9aab26ae74a28e Mon Sep 17 00:00:00 2001
+From: John David Anglin <dave.anglin@bell.net>
+Date: Tue, 25 Jul 2017 17:11:26 -0400
+Subject: parisc: Prevent TLB speculation on flushed pages on CPUs that only support equivalent aliases
+
+From: John David Anglin <dave.anglin@bell.net>
+
+commit ae7a609c34b6fb12328c553b5f9aab26ae74a28e upstream.
+
+Helge noticed that we flush the TLB page in flush_cache_page but not in
+flush_cache_range or flush_cache_mm.
+
+For a long time, we have had random segmentation faults building
+packages on machines with PA8800/8900 processors.  These machines only
+support equivalent aliases.  We don't see these faults on machines that
+don't require strict coherency.  So, it appears TLB speculation
+sometimes leads to cache corruption on machines that require coherency.
+
+This patch adds TLB flushes to flush_cache_range and flush_cache_mm when
+coherency is required.  We only flush the TLB in flush_cache_page when
+coherency is required.
+
+The patch also optimizes flush_cache_range.  It turns out we always have
+the right context to use flush_user_dcache_range_asm and
+flush_user_icache_range_asm.
+
+The patch has been tested for some time on rp3440, rp3410 and A500-44.
+It's been boot tested on c8000.  No random segmentation faults were
+observed during testing.
+
+Signed-off-by: John David Anglin <dave.anglin@bell.net>
+Signed-off-by: Helge Deller <deller@gmx.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/parisc/kernel/cache.c |   34 ++++++++++++++--------------------
+ 1 file changed, 14 insertions(+), 20 deletions(-)
+
+--- a/arch/parisc/kernel/cache.c
++++ b/arch/parisc/kernel/cache.c
+@@ -538,6 +538,10 @@ void flush_cache_mm(struct mm_struct *mm
+       struct vm_area_struct *vma;
+       pgd_t *pgd;
++      /* Flush the TLB to avoid speculation if coherency is required. */
++      if (parisc_requires_coherency())
++              flush_tlb_all();
++
+       /* Flushing the whole cache on each cpu takes forever on
+          rp3440, etc.  So, avoid it if the mm isn't too big.  */
+       if (mm_total_size(mm) >= parisc_cache_flush_threshold) {
+@@ -594,33 +598,22 @@ flush_user_icache_range(unsigned long st
+ void flush_cache_range(struct vm_area_struct *vma,
+               unsigned long start, unsigned long end)
+ {
+-      unsigned long addr;
+-      pgd_t *pgd;
+-
+       BUG_ON(!vma->vm_mm->context);
++      /* Flush the TLB to avoid speculation if coherency is required. */
++      if (parisc_requires_coherency())
++              flush_tlb_range(vma, start, end);
++
+       if ((end - start) >= parisc_cache_flush_threshold) {
+               flush_cache_all();
+               return;
+       }
+-      if (vma->vm_mm->context == mfsp(3)) {
+-              flush_user_dcache_range_asm(start, end);
+-              if (vma->vm_flags & VM_EXEC)
+-                      flush_user_icache_range_asm(start, end);
+-              return;
+-      }
++      BUG_ON(vma->vm_mm->context != mfsp(3));
+-      pgd = vma->vm_mm->pgd;
+-      for (addr = start & PAGE_MASK; addr < end; addr += PAGE_SIZE) {
+-              unsigned long pfn;
+-              pte_t *ptep = get_ptep(pgd, addr);
+-              if (!ptep)
+-                      continue;
+-              pfn = pte_pfn(*ptep);
+-              if (pfn_valid(pfn))
+-                      __flush_cache_page(vma, addr, PFN_PHYS(pfn));
+-      }
++      flush_user_dcache_range_asm(start, end);
++      if (vma->vm_flags & VM_EXEC)
++              flush_user_icache_range_asm(start, end);
+ }
+ void
+@@ -629,7 +622,8 @@ flush_cache_page(struct vm_area_struct *
+       BUG_ON(!vma->vm_mm->context);
+       if (pfn_valid(pfn)) {
+-              flush_tlb_page(vma, vmaddr);
++              if (parisc_requires_coherency())
++                      flush_tlb_page(vma, vmaddr);
+               __flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
+       }
+ }
diff --git a/queue-4.9/parisc-suspend-lockup-detectors-before-system-halt.patch b/queue-4.9/parisc-suspend-lockup-detectors-before-system-halt.patch
new file mode 100644 (file)
index 0000000..8eebf28
--- /dev/null
@@ -0,0 +1,38 @@
+From 56188832a50f09998cb570ba3771a1d25c193c0e Mon Sep 17 00:00:00 2001
+From: Helge Deller <deller@gmx.de>
+Date: Tue, 25 Jul 2017 21:41:41 +0200
+Subject: parisc: Suspend lockup detectors before system halt
+
+From: Helge Deller <deller@gmx.de>
+
+commit 56188832a50f09998cb570ba3771a1d25c193c0e upstream.
+
+Some machines can't power off the machine, so disable the lockup detectors to
+avoid this watchdog BUG to show up every few seconds:
+watchdog: BUG: soft lockup - CPU#0 stuck for 22s! [systemd-shutdow:1]
+
+Signed-off-by: Helge Deller <deller@gmx.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/parisc/kernel/process.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/arch/parisc/kernel/process.c
++++ b/arch/parisc/kernel/process.c
+@@ -50,6 +50,7 @@
+ #include <linux/uaccess.h>
+ #include <linux/rcupdate.h>
+ #include <linux/random.h>
++#include <linux/nmi.h>
+ #include <asm/io.h>
+ #include <asm/asm-offsets.h>
+@@ -142,6 +143,7 @@ void machine_power_off(void)
+       /* prevent soft lockup/stalled CPU messages for endless loop. */
+       rcu_sysrq_start();
++      lockup_detector_suspend();
+       for (;;);
+ }
diff --git a/queue-4.9/powerpc-pseries-fix-of_node_put-underflow-during-reconfig-remove.patch b/queue-4.9/powerpc-pseries-fix-of_node_put-underflow-during-reconfig-remove.patch
new file mode 100644 (file)
index 0000000..bc711ee
--- /dev/null
@@ -0,0 +1,37 @@
+From 4fd1bd443e80b12f0a01a45fb9a793206b41cb72 Mon Sep 17 00:00:00 2001
+From: Laurent Vivier <lvivier@redhat.com>
+Date: Fri, 21 Jul 2017 16:51:39 +0200
+Subject: powerpc/pseries: Fix of_node_put() underflow during reconfig remove
+
+From: Laurent Vivier <lvivier@redhat.com>
+
+commit 4fd1bd443e80b12f0a01a45fb9a793206b41cb72 upstream.
+
+As for commit 68baf692c435 ("powerpc/pseries: Fix of_node_put()
+underflow during DLPAR remove"), the call to of_node_put() must be
+removed from pSeries_reconfig_remove_node().
+
+dlpar_detach_node() and pSeries_reconfig_remove_node() both call
+of_detach_node(), and thus the node should not be released in both
+cases.
+
+Fixes: 0829f6d1f69e ("of: device_node kobject lifecycle fixes")
+Signed-off-by: Laurent Vivier <lvivier@redhat.com>
+Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/powerpc/platforms/pseries/reconfig.c |    1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/arch/powerpc/platforms/pseries/reconfig.c
++++ b/arch/powerpc/platforms/pseries/reconfig.c
+@@ -82,7 +82,6 @@ static int pSeries_reconfig_remove_node(
+       of_detach_node(np);
+       of_node_put(parent);
+-      of_node_put(np); /* Must decrement the refcount */
+       return 0;
+ }
index b7bbd66adf591b5b5841487f72a641f7ad71049e..e9a1f4b85305e7ab816103d4a8ab6f28b8d02fea 100644 (file)
@@ -1,3 +1,10 @@
 af_key-add-lock-to-key-dump.patch
 pstore-make-spinlock-per-zone-instead-of-global.patch
 net-reduce-skb_warn_bad_offload-noise.patch
+jfs-don-t-clear-sgid-when-inheriting-acls.patch
+alsa-fm801-initialize-chip-after-irq-handler-is-registered.patch
+alsa-hda-add-missing-nvidia-gpu-codec-ids-to-patch-table.patch
+parisc-prevent-tlb-speculation-on-flushed-pages-on-cpus-that-only-support-equivalent-aliases.patch
+parisc-extend-disabled-preemption-in-copy_user_page.patch
+parisc-suspend-lockup-detectors-before-system-halt.patch
+powerpc-pseries-fix-of_node_put-underflow-during-reconfig-remove.patch