Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5ef79663 authored by Alexander Usyskin's avatar Alexander Usyskin Committed by Wim Van Sebroeck
Browse files

watchdog: core: propagate ping error code to the user space



Watchdog ping return errors are ignored by watchdog core,
Whatchdog daemon should be informed about possible hardware error or
underlaying device driver get unregistered.

Signed-off-by: default avatarAlexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent bc794ac3
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -294,6 +294,7 @@ static ssize_t watchdog_write(struct file *file, const char __user *data,
	struct watchdog_device *wdd = file->private_data;
	size_t i;
	char c;
	int err;

	if (len == 0)
		return 0;
@@ -313,7 +314,9 @@ static ssize_t watchdog_write(struct file *file, const char __user *data,
	}

	/* someone wrote to us, so we send the watchdog a keepalive ping */
	watchdog_ping(wdd);
	err = watchdog_ping(wdd);
	if (err < 0)
		return err;

	return len;
}
@@ -369,8 +372,7 @@ static long watchdog_ioctl(struct file *file, unsigned int cmd,
	case WDIOC_KEEPALIVE:
		if (!(wdd->info->options & WDIOF_KEEPALIVEPING))
			return -EOPNOTSUPP;
		watchdog_ping(wdd);
		return 0;
		return watchdog_ping(wdd);
	case WDIOC_SETTIMEOUT:
		if (get_user(val, p))
			return -EFAULT;
@@ -380,7 +382,9 @@ static long watchdog_ioctl(struct file *file, unsigned int cmd,
		/* If the watchdog is active then we send a keepalive ping
		 * to make sure that the watchdog keep's running (and if
		 * possible that it takes the new timeout) */
		watchdog_ping(wdd);
		err = watchdog_ping(wdd);
		if (err < 0)
			return err;
		/* Fall */
	case WDIOC_GETTIMEOUT:
		/* timeout == 0 means that we don't know the timeout */