hc
2024-05-14 bedbef8ad3e75a304af6361af235302bcc61d06b
kernel/drivers/watchdog/diag288_wdt.c
....@@ -86,7 +86,7 @@
8686 "1:\n"
8787 EX_TABLE(0b, 1b)
8888 : "+d" (err) : "d"(__func), "d"(__timeout),
89
- "d"(__action), "d"(__len) : "1", "cc");
89
+ "d"(__action), "d"(__len) : "1", "cc", "memory");
9090 return err;
9191 }
9292
....@@ -272,12 +272,21 @@
272272 char ebc_begin[] = {
273273 194, 197, 199, 201, 213
274274 };
275
+ char *ebc_cmd;
275276
276277 watchdog_set_nowayout(&wdt_dev, nowayout_info);
277278
278279 if (MACHINE_IS_VM) {
279
- if (__diag288_vm(WDT_FUNC_INIT, 15,
280
- ebc_begin, sizeof(ebc_begin)) != 0) {
280
+ ebc_cmd = kmalloc(sizeof(ebc_begin), GFP_KERNEL);
281
+ if (!ebc_cmd) {
282
+ pr_err("The watchdog cannot be initialized\n");
283
+ return -ENOMEM;
284
+ }
285
+ memcpy(ebc_cmd, ebc_begin, sizeof(ebc_begin));
286
+ ret = __diag288_vm(WDT_FUNC_INIT, 15,
287
+ ebc_cmd, sizeof(ebc_begin));
288
+ kfree(ebc_cmd);
289
+ if (ret != 0) {
281290 pr_err("The watchdog cannot be initialized\n");
282291 return -EINVAL;
283292 }