| From foo@baz Sun May 27 17:33:38 CEST 2018 |
| From: Igor Pylypiv <igor.pylypiv@gmail.com> |
| Date: Wed, 28 Feb 2018 00:59:12 -0800 |
| Subject: watchdog: f71808e_wdt: Fix magic close handling |
| |
| From: Igor Pylypiv <igor.pylypiv@gmail.com> |
| |
| [ Upstream commit 7bd3e7b743956afbec30fb525bc3c5e22e3d475c ] |
| |
| Watchdog close is "expected" when any byte is 'V' not just the last one. |
| Writing "V" to the device fails because the last byte is the end of string. |
| |
| $ echo V > /dev/watchdog |
| f71808e_wdt: Unexpected close, not stopping watchdog! |
| |
| Signed-off-by: Igor Pylypiv <igor.pylypiv@gmail.com> |
| Reviewed-by: Guenter Roeck <linux@roeck-us.net> |
| Signed-off-by: Guenter Roeck <linux@roeck-us.net> |
| Signed-off-by: Wim Van Sebroeck <wim@iguana.be> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/watchdog/f71808e_wdt.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/watchdog/f71808e_wdt.c |
| +++ b/drivers/watchdog/f71808e_wdt.c |
| @@ -566,7 +566,8 @@ static ssize_t watchdog_write(struct fil |
| char c; |
| if (get_user(c, buf + i)) |
| return -EFAULT; |
| - expect_close = (c == 'V'); |
| + if (c == 'V') |
| + expect_close = true; |
| } |
| |
| /* Properly order writes across fork()ed processes */ |