watchdog: f71808e_wdt: Fix magic close handling
authorIgor Pylypiv <igor.pylypiv@gmail.com>
Wed, 28 Feb 2018 08:59:12 +0000 (00:59 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 May 2018 05:50:34 +0000 (07:50 +0200)
[ 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

index e682bf046e5040b2620ebeda51b3d74e11dac60c..88cd2a52d8d3244318c738e354129fcd3f65c8fe 100644 (file)
@@ -566,7 +566,8 @@ static ssize_t watchdog_write(struct file *file, const char __user *buf,
                                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 */