|
@@ -277,8 +277,16 @@ static void sysrq_handler(struct xenbus_watch *watch, const char *path,
|
|
|
err = xenbus_transaction_start(&xbt);
|
|
|
if (err)
|
|
|
return;
|
|
|
- if (xenbus_scanf(xbt, "control", "sysrq", "%c", &sysrq_key) < 0) {
|
|
|
- pr_err("Unable to read sysrq code in control/sysrq\n");
|
|
|
+ err = xenbus_scanf(xbt, "control", "sysrq", "%c", &sysrq_key);
|
|
|
+ if (err < 0) {
|
|
|
+ /*
|
|
|
+ * The Xenstore watch fires directly after registering it and
|
|
|
+ * after a suspend/resume cycle. So ENOENT is no error but
|
|
|
+ * might happen in those cases.
|
|
|
+ */
|
|
|
+ if (err != -ENOENT)
|
|
|
+ pr_err("Error %d reading sysrq code in control/sysrq\n",
|
|
|
+ err);
|
|
|
xenbus_transaction_end(xbt, 1);
|
|
|
return;
|
|
|
}
|