Date:          August 2015
 Contact:       Wim Van Sebroeck <wim@iguana.be>
 Description:
-               It is a read only file. While reading, it gives '1' if that
-               device supports nowayout feature else, it gives '0'.
+               It is a read/write file. While reading, it gives '1'
+               if the device has the nowayout feature set, otherwise
+               it gives '0'. Writing a '1' to the file enables the
+               nowayout feature. Once set, the nowayout feature
+               cannot be disabled, so writing a '0' either has no
+               effect (if the feature was already disabled) or
+               results in a permission error.
 
 What:          /sys/class/watchdog/watchdogn/state
 Date:          August 2015
 
 
        return sprintf(buf, "%d\n", !!test_bit(WDOG_NO_WAY_OUT, &wdd->status));
 }
-static DEVICE_ATTR_RO(nowayout);
+
+static ssize_t nowayout_store(struct device *dev, struct device_attribute *attr,
+                               const char *buf, size_t len)
+{
+       struct watchdog_device *wdd = dev_get_drvdata(dev);
+       unsigned int value;
+       int ret;
+
+       ret = kstrtouint(buf, 0, &value);
+       if (ret)
+               return ret;
+       if (value > 1)
+               return -EINVAL;
+       /* nowayout cannot be disabled once set */
+       if (test_bit(WDOG_NO_WAY_OUT, &wdd->status) && !value)
+               return -EPERM;
+       watchdog_set_nowayout(wdd, value);
+       return len;
+}
+static DEVICE_ATTR_RW(nowayout);
 
 static ssize_t status_show(struct device *dev, struct device_attribute *attr,
                                char *buf)