commit:     45a997db178a0677381de56d0e6dedc59e79cbce
Author:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 14 14:28:02 2017 +0000
Commit:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
CommitDate: Sat Oct 14 14:28:02 2017 +0000
URL:        https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=45a997db

Linux patch 4.13.7

 0000_README             |  4 ++
 1006_linux-4.13.7.patch | 99 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 103 insertions(+)

diff --git a/0000_README b/0000_README
index 92f54b8..b6a0ed9 100644
--- a/0000_README
+++ b/0000_README
@@ -67,6 +67,10 @@ Patch:  1005_linux-4.13.6.patch
 From:   http://www.kernel.org
 Desc:   Linux 4.13.6
 
+Patch:  1006_linux-4.13.7.patch
+From:   http://www.kernel.org
+Desc:   Linux 4.13.7
+
 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/1006_linux-4.13.7.patch b/1006_linux-4.13.7.patch
new file mode 100644
index 0000000..038d91d
--- /dev/null
+++ b/1006_linux-4.13.7.patch
@@ -0,0 +1,99 @@
+diff --git a/Documentation/watchdog/watchdog-parameters.txt 
b/Documentation/watchdog/watchdog-parameters.txt
+index b3526365ea8e..6f9d7b418917 100644
+--- a/Documentation/watchdog/watchdog-parameters.txt
++++ b/Documentation/watchdog/watchdog-parameters.txt
+@@ -117,7 +117,7 @@ nowayout: Watchdog cannot be stopped once started
+ -------------------------------------------------
+ iTCO_wdt:
+ heartbeat: Watchdog heartbeat in seconds.
+-      (5<=heartbeat<=74 (TCO v1) or 1226 (TCO v2), default=30)
++      (2<heartbeat<39 (TCO v1) or 613 (TCO v2), default=30)
+ nowayout: Watchdog cannot be stopped once started
+       (default=kernel config parameter)
+ -------------------------------------------------
+diff --git a/Makefile b/Makefile
+index 9e1af1af327b..0d4f1b19869d 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+ VERSION = 4
+ PATCHLEVEL = 13
+-SUBLEVEL = 6
++SUBLEVEL = 7
+ EXTRAVERSION =
+ NAME = Fearless Coyote
+ 
+diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c
+index c4f65873bfa4..347f0389b089 100644
+--- a/drivers/watchdog/iTCO_wdt.c
++++ b/drivers/watchdog/iTCO_wdt.c
+@@ -306,15 +306,16 @@ static int iTCO_wdt_ping(struct watchdog_device *wd_dev)
+ 
+       iTCO_vendor_pre_keepalive(p->smi_res, wd_dev->timeout);
+ 
+-      /* Reset the timeout status bit so that the timer
+-       * needs to count down twice again before rebooting */
+-      outw(0x0008, TCO1_STS(p));      /* write 1 to clear bit */
+-
+       /* Reload the timer by writing to the TCO Timer Counter register */
+-      if (p->iTCO_version >= 2)
++      if (p->iTCO_version >= 2) {
+               outw(0x01, TCO_RLD(p));
+-      else if (p->iTCO_version == 1)
++      } else if (p->iTCO_version == 1) {
++              /* Reset the timeout status bit so that the timer
++               * needs to count down twice again before rebooting */
++              outw(0x0008, TCO1_STS(p));      /* write 1 to clear bit */
++
+               outb(0x01, TCO_RLD(p));
++      }
+ 
+       spin_unlock(&p->io_lock);
+       return 0;
+@@ -327,8 +328,11 @@ static int iTCO_wdt_set_timeout(struct watchdog_device 
*wd_dev, unsigned int t)
+       unsigned char val8;
+       unsigned int tmrval;
+ 
+-      /* The timer counts down twice before rebooting */
+-      tmrval = seconds_to_ticks(p, t) / 2;
++      tmrval = seconds_to_ticks(p, t);
++
++      /* For TCO v1 the timer counts down twice before rebooting */
++      if (p->iTCO_version == 1)
++              tmrval /= 2;
+ 
+       /* from the specs: */
+       /* "Values of 0h-3h are ignored and should not be attempted" */
+@@ -381,8 +385,6 @@ static unsigned int iTCO_wdt_get_timeleft(struct 
watchdog_device *wd_dev)
+               spin_lock(&p->io_lock);
+               val16 = inw(TCO_RLD(p));
+               val16 &= 0x3ff;
+-              if (!(inw(TCO1_STS(p)) & 0x0008))
+-                      val16 += (inw(TCOv2_TMR(p)) & 0x3ff);
+               spin_unlock(&p->io_lock);
+ 
+               time_left = ticks_to_seconds(p, val16);
+diff --git a/kernel/exit.c b/kernel/exit.c
+index 6d31fc5ba50d..135b36985f8a 100644
+--- a/kernel/exit.c
++++ b/kernel/exit.c
+@@ -1611,6 +1611,9 @@ SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct 
siginfo __user *,
+       if (!infop)
+               return err;
+ 
++      if (!access_ok(VERIFY_WRITE, infop, sizeof(*infop)))
++              goto Efault;
++
+       user_access_begin();
+       unsafe_put_user(signo, &infop->si_signo, Efault);
+       unsafe_put_user(0, &infop->si_errno, Efault);
+@@ -1736,6 +1739,9 @@ COMPAT_SYSCALL_DEFINE5(waitid,
+       if (!infop)
+               return err;
+ 
++      if (!access_ok(VERIFY_WRITE, infop, sizeof(*infop)))
++              goto Efault;
++
+       user_access_begin();
+       unsafe_put_user(signo, &infop->si_signo, Efault);
+       unsafe_put_user(0, &infop->si_errno, Efault);

Reply via email to