commit:     b2af285eb4601a6aa04bd1b1d14c211a1408e39e
Author:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
AuthorDate: Fri Oct 21 11:11:37 2016 +0000
Commit:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
CommitDate: Fri Oct 21 11:11:37 2016 +0000
URL:        https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=b2af285e

Linux patch 4.8.3

 0000_README            |   4 ++
 1002_linux-4.8.3.patch | 125 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 129 insertions(+)

diff --git a/0000_README b/0000_README
index 07a39ba..f814c9e 100644
--- a/0000_README
+++ b/0000_README
@@ -51,6 +51,10 @@ Patch:  1001_linux-4.8.2.patch
 From:   http://www.kernel.org
 Desc:   Linux 4.8.2
 
+Patch:  1002_linux-4.8.3.patch
+From:   http://www.kernel.org
+Desc:   Linux 4.8.3
+
 Patch:  1500_XATTR_USER_PREFIX.patch
 From:   https://bugs.gentoo.org/show_bug.cgi?id=470644
 Desc:   Support for namespace user.pax.* on tmpfs.

diff --git a/1002_linux-4.8.3.patch b/1002_linux-4.8.3.patch
new file mode 100644
index 0000000..36a0827
--- /dev/null
+++ b/1002_linux-4.8.3.patch
@@ -0,0 +1,125 @@
+diff --git a/Makefile b/Makefile
+index bf6e44a421df..42eb45c86a42 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+ VERSION = 4
+ PATCHLEVEL = 8
+-SUBLEVEL = 2
++SUBLEVEL = 3
+ EXTRAVERSION =
+ NAME = Psychotic Stoned Sheep
+ 
+diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
+index ec6381e57eb7..258a3f9a2519 100644
+--- a/drivers/scsi/hosts.c
++++ b/drivers/scsi/hosts.c
+@@ -246,10 +246,6 @@ int scsi_add_host_with_dma(struct Scsi_Host *shost, 
struct device *dev,
+ 
+       shost->dma_dev = dma_dev;
+ 
+-      error = device_add(&shost->shost_gendev);
+-      if (error)
+-              goto out_destroy_freelist;
+-
+       /*
+        * Increase usage count temporarily here so that calling
+        * scsi_autopm_put_host() will trigger runtime idle if there is
+@@ -260,6 +256,10 @@ int scsi_add_host_with_dma(struct Scsi_Host *shost, 
struct device *dev,
+       pm_runtime_enable(&shost->shost_gendev);
+       device_enable_async_suspend(&shost->shost_gendev);
+ 
++      error = device_add(&shost->shost_gendev);
++      if (error)
++              goto out_destroy_freelist;
++
+       scsi_host_set_state(shost, SHOST_RUNNING);
+       get_device(shost->shost_gendev.parent);
+ 
+@@ -309,6 +309,10 @@ int scsi_add_host_with_dma(struct Scsi_Host *shost, 
struct device *dev,
+  out_del_gendev:
+       device_del(&shost->shost_gendev);
+  out_destroy_freelist:
++      device_disable_async_suspend(&shost->shost_gendev);
++      pm_runtime_disable(&shost->shost_gendev);
++      pm_runtime_set_suspended(&shost->shost_gendev);
++      pm_runtime_put_noidle(&shost->shost_gendev);
+       scsi_destroy_command_freelist(shost);
+  out_destroy_tags:
+       if (shost_use_blk_mq(shost))
+diff --git a/fs/xfs/xfs_xattr.c b/fs/xfs/xfs_xattr.c
+index ea62245fee26..62900938f26d 100644
+--- a/fs/xfs/xfs_xattr.c
++++ b/fs/xfs/xfs_xattr.c
+@@ -147,6 +147,7 @@ __xfs_xattr_put_listent(
+       arraytop = context->count + prefix_len + namelen + 1;
+       if (arraytop > context->firstu) {
+               context->count = -1;    /* insufficient space */
++              context->seen_enough = 1;
+               return 0;
+       }
+       offset = (char *)context->alist + context->count;
+diff --git a/include/linux/mm.h b/include/linux/mm.h
+index ef815b9cd426..277cd39a6399 100644
+--- a/include/linux/mm.h
++++ b/include/linux/mm.h
+@@ -2234,6 +2234,7 @@ static inline struct page *follow_page(struct 
vm_area_struct *vma,
+ #define FOLL_TRIED    0x800   /* a retry, previous pass started an IO */
+ #define FOLL_MLOCK    0x1000  /* lock present pages */
+ #define FOLL_REMOTE   0x2000  /* we are working on non-current tsk/mm */
++#define FOLL_COW      0x4000  /* internal GUP flag */
+ 
+ typedef int (*pte_fn_t)(pte_t *pte, pgtable_t token, unsigned long addr,
+                       void *data);
+diff --git a/include/media/rcar-fcp.h b/include/media/rcar-fcp.h
+index 4c7fc77eaf29..8723f05c6321 100644
+--- a/include/media/rcar-fcp.h
++++ b/include/media/rcar-fcp.h
+@@ -29,7 +29,7 @@ static inline struct rcar_fcp_device *rcar_fcp_get(const 
struct device_node *np)
+ static inline void rcar_fcp_put(struct rcar_fcp_device *fcp) { }
+ static inline int rcar_fcp_enable(struct rcar_fcp_device *fcp)
+ {
+-      return -ENOSYS;
++      return 0;
+ }
+ static inline void rcar_fcp_disable(struct rcar_fcp_device *fcp) { }
+ #endif
+diff --git a/mm/gup.c b/mm/gup.c
+index 96b2b2fd0fbd..22cc22e7432f 100644
+--- a/mm/gup.c
++++ b/mm/gup.c
+@@ -60,6 +60,16 @@ static int follow_pfn_pte(struct vm_area_struct *vma, 
unsigned long address,
+       return -EEXIST;
+ }
+ 
++/*
++ * FOLL_FORCE can write to even unwritable pte's, but only
++ * after we've gone through a COW cycle and they are dirty.
++ */
++static inline bool can_follow_write_pte(pte_t pte, unsigned int flags)
++{
++      return pte_write(pte) ||
++              ((flags & FOLL_FORCE) && (flags & FOLL_COW) && pte_dirty(pte));
++}
++
+ static struct page *follow_page_pte(struct vm_area_struct *vma,
+               unsigned long address, pmd_t *pmd, unsigned int flags)
+ {
+@@ -95,7 +105,7 @@ retry:
+       }
+       if ((flags & FOLL_NUMA) && pte_protnone(pte))
+               goto no_page;
+-      if ((flags & FOLL_WRITE) && !pte_write(pte)) {
++      if ((flags & FOLL_WRITE) && !can_follow_write_pte(pte, flags)) {
+               pte_unmap_unlock(ptep, ptl);
+               return NULL;
+       }
+@@ -412,7 +422,7 @@ static int faultin_page(struct task_struct *tsk, struct 
vm_area_struct *vma,
+        * reCOWed by userspace write).
+        */
+       if ((ret & VM_FAULT_WRITE) && !(vma->vm_flags & VM_WRITE))
+-              *flags &= ~FOLL_WRITE;
++              *flags |= FOLL_COW;
+       return 0;
+ }
+ 

Reply via email to