Magellan Linux

Annotation of /trunk/kernel-magellan/patches-4.13/0106-4.13.7-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3010 - (hide annotations) (download)
Wed Oct 25 09:41:40 2017 UTC (6 years, 6 months ago) by niro
File size: 3381 byte(s)
-linux-4.13.7
1 niro 3010 diff --git a/Documentation/watchdog/watchdog-parameters.txt b/Documentation/watchdog/watchdog-parameters.txt
2     index b3526365ea8e..6f9d7b418917 100644
3     --- a/Documentation/watchdog/watchdog-parameters.txt
4     +++ b/Documentation/watchdog/watchdog-parameters.txt
5     @@ -117,7 +117,7 @@ nowayout: Watchdog cannot be stopped once started
6     -------------------------------------------------
7     iTCO_wdt:
8     heartbeat: Watchdog heartbeat in seconds.
9     - (5<=heartbeat<=74 (TCO v1) or 1226 (TCO v2), default=30)
10     + (2<heartbeat<39 (TCO v1) or 613 (TCO v2), default=30)
11     nowayout: Watchdog cannot be stopped once started
12     (default=kernel config parameter)
13     -------------------------------------------------
14     diff --git a/Makefile b/Makefile
15     index 9e1af1af327b..0d4f1b19869d 100644
16     --- a/Makefile
17     +++ b/Makefile
18     @@ -1,6 +1,6 @@
19     VERSION = 4
20     PATCHLEVEL = 13
21     -SUBLEVEL = 6
22     +SUBLEVEL = 7
23     EXTRAVERSION =
24     NAME = Fearless Coyote
25    
26     diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c
27     index c4f65873bfa4..347f0389b089 100644
28     --- a/drivers/watchdog/iTCO_wdt.c
29     +++ b/drivers/watchdog/iTCO_wdt.c
30     @@ -306,15 +306,16 @@ static int iTCO_wdt_ping(struct watchdog_device *wd_dev)
31    
32     iTCO_vendor_pre_keepalive(p->smi_res, wd_dev->timeout);
33    
34     - /* Reset the timeout status bit so that the timer
35     - * needs to count down twice again before rebooting */
36     - outw(0x0008, TCO1_STS(p)); /* write 1 to clear bit */
37     -
38     /* Reload the timer by writing to the TCO Timer Counter register */
39     - if (p->iTCO_version >= 2)
40     + if (p->iTCO_version >= 2) {
41     outw(0x01, TCO_RLD(p));
42     - else if (p->iTCO_version == 1)
43     + } else if (p->iTCO_version == 1) {
44     + /* Reset the timeout status bit so that the timer
45     + * needs to count down twice again before rebooting */
46     + outw(0x0008, TCO1_STS(p)); /* write 1 to clear bit */
47     +
48     outb(0x01, TCO_RLD(p));
49     + }
50    
51     spin_unlock(&p->io_lock);
52     return 0;
53     @@ -327,8 +328,11 @@ static int iTCO_wdt_set_timeout(struct watchdog_device *wd_dev, unsigned int t)
54     unsigned char val8;
55     unsigned int tmrval;
56    
57     - /* The timer counts down twice before rebooting */
58     - tmrval = seconds_to_ticks(p, t) / 2;
59     + tmrval = seconds_to_ticks(p, t);
60     +
61     + /* For TCO v1 the timer counts down twice before rebooting */
62     + if (p->iTCO_version == 1)
63     + tmrval /= 2;
64    
65     /* from the specs: */
66     /* "Values of 0h-3h are ignored and should not be attempted" */
67     @@ -381,8 +385,6 @@ static unsigned int iTCO_wdt_get_timeleft(struct watchdog_device *wd_dev)
68     spin_lock(&p->io_lock);
69     val16 = inw(TCO_RLD(p));
70     val16 &= 0x3ff;
71     - if (!(inw(TCO1_STS(p)) & 0x0008))
72     - val16 += (inw(TCOv2_TMR(p)) & 0x3ff);
73     spin_unlock(&p->io_lock);
74    
75     time_left = ticks_to_seconds(p, val16);
76     diff --git a/kernel/exit.c b/kernel/exit.c
77     index 6d31fc5ba50d..135b36985f8a 100644
78     --- a/kernel/exit.c
79     +++ b/kernel/exit.c
80     @@ -1611,6 +1611,9 @@ SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
81     if (!infop)
82     return err;
83    
84     + if (!access_ok(VERIFY_WRITE, infop, sizeof(*infop)))
85     + goto Efault;
86     +
87     user_access_begin();
88     unsafe_put_user(signo, &infop->si_signo, Efault);
89     unsafe_put_user(0, &infop->si_errno, Efault);
90     @@ -1736,6 +1739,9 @@ COMPAT_SYSCALL_DEFINE5(waitid,
91     if (!infop)
92     return err;
93    
94     + if (!access_ok(VERIFY_WRITE, infop, sizeof(*infop)))
95     + goto Efault;
96     +
97     user_access_begin();
98     unsafe_put_user(signo, &infop->si_signo, Efault);
99     unsafe_put_user(0, &infop->si_errno, Efault);