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

Commit 38c484fa authored by Jan Beulich's avatar Jan Beulich Committed by Wim Van Sebroeck
Browse files

watchdog: xen: don't clear is_active when xen_wdt_stop() failed



xen_wdt_release() shouldn't clear is_active even when the watchdog
didn't get stopped (which by itself shouldn't happen, but let's return
a proper error in this case rather than adding a BUG() upon hypercall
failure).

Signed-off-by: default avatarJan Beulich <jbeulich@suse.com>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent 83448bf7
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -132,15 +132,17 @@ static int xen_wdt_open(struct inode *inode, struct file *file)


static int xen_wdt_release(struct inode *inode, struct file *file)
static int xen_wdt_release(struct inode *inode, struct file *file)
{
{
	int err = 0;

	if (expect_release)
	if (expect_release)
		xen_wdt_stop();
		err = xen_wdt_stop();
	else {
	else {
		pr_crit("unexpected close, not stopping watchdog!\n");
		pr_crit("unexpected close, not stopping watchdog!\n");
		xen_wdt_kick();
		xen_wdt_kick();
	}
	}
	is_active = false;
	is_active = err;
	expect_release = false;
	expect_release = false;
	return 0;
	return err;
}
}


static ssize_t xen_wdt_write(struct file *file, const char __user *data,
static ssize_t xen_wdt_write(struct file *file, const char __user *data,