From 742e4b630895d751812b0682750db76c8072bf37 Mon Sep 17 00:00:00 2001
From: Wim Van Sebroeck <wim@iguana.be>
Date: Sun, 16 Jan 2011 19:05:39 +0000
Subject: [PATCH] watchdog: jz4740_wdt - fix magic character checking

When writing to /dev/watchdog all characters should be checked
for the magic character 'V'.

Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
---
 drivers/watchdog/jz4740_wdt.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/watchdog/jz4740_wdt.c b/drivers/watchdog/jz4740_wdt.c
index 935562322b38..684ba01fb540 100644
--- a/drivers/watchdog/jz4740_wdt.c
+++ b/drivers/watchdog/jz4740_wdt.c
@@ -130,11 +130,18 @@ static ssize_t jz4740_wdt_write(struct file *file, const char *data,
 		size_t len, loff_t *ppos)
 {
 	if (len) {
-		if (data[len-1] == 'V')
-			set_bit(WDT_OK_TO_CLOSE, &jz4740_wdt.status);
-		else
-			clear_bit(WDT_OK_TO_CLOSE, &jz4740_wdt.status);
+		size_t i;
 
+		clear_bit(WDT_OK_TO_CLOSE, &jz4740_wdt.status);
+		for (i = 0; i != len; i++) {
+			char c;
+
+			if (get_user(c, data + i))
+				return -EFAULT;
+
+			if (c == 'V')
+				set_bit(WDT_OK_TO_CLOSE, &jz4740_wdt.status);
+		}
 		jz4740_wdt_service();
 	}
 
-- 
GitLab