Message ID | 20210814191345.27221-1-ginermail@gmail.com |
---|---|
State | New |
Headers | show |
Series | watchdog: Device must be opened for writing | expand |
diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c index 3bab32485273..28b88542a4d0 100644 --- a/drivers/watchdog/watchdog_dev.c +++ b/drivers/watchdog/watchdog_dev.c @@ -835,6 +835,10 @@ static int watchdog_open(struct inode *inode, struct file *file) bool hw_running; int err; + /* Must be open for writing */ + if (!(file->f_mode & FMODE_WRITE)) + return -EINVAL; + /* Get the corresponding watchdog device */ if (imajor(inode) == MISC_MAJOR) wd_data = old_wd_data;
If userspace opens the watchdog device self-feeding stops. Sometimes opening the device happens by accident, e.g. by mistakenly running grep recursively in a wrong directory which leads to the server being reset. Watchdog device does not handle read operation therefore the issue can be prevented by requiring the device to be opened for writing: - Prevent opening the device without FMODE_WRITE Signed-off-by: Stanislav German-Evtushenko <ginermail@gmail.com> --- drivers/watchdog/watchdog_dev.c | 4 ++++ 1 file changed, 4 insertions(+) base-commit: cf813c67d9619fd474c785698cbed543b94209dd