[Devel] [PATCH vz10 05/24] fence-watchdog: return count from watchdog_log_path store

Konstantin Khorenko khorenko at virtuozzo.com
Mon Jul 6 13:59:43 MSK 2026


fence_wdog_log_path_store() returned 0 on success instead of the number
of bytes consumed. A sysfs ->store() handler must return @count (or a
negative error); returning 0 tells the VFS that no bytes of the write
were consumed, so a write(2) of the new path makes no progress. A
libc/shell that loops until all bytes are written (e.g. echo > file)
then spins forever, and a single write() reports 0 rather than the
requested length. The path value itself is updated (sscanf ran), which
masks the bug on a casual read-back, but the write side is broken.

The sibling watchdog_timer and watchdog_action store handlers already
return count; do the same here.

Fixes: 9cf3dd3bae58 ("fence-watchdog: Add fence-watchdog driver")
Feature: kernel: fense watchdog driver
https://virtuozzo.atlassian.net/browse/VSTOR-137234
Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
---
 kernel/fence-watchdog.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/fence-watchdog.c b/kernel/fence-watchdog.c
index bcbd439d4981..c7a28fad1f26 100644
--- a/kernel/fence-watchdog.c
+++ b/kernel/fence-watchdog.c
@@ -279,7 +279,7 @@ static ssize_t fence_wdog_log_path_store(struct kobject *kobj,
 
 	if (sscanf(buf, format, fence_wdog_log_path) != 1)
 		return -EINVAL;
-	return 0;
+	return count;
 }
 
 static struct kobj_attribute fence_wdog_timer_attr =
-- 
2.47.1



More information about the Devel mailing list