Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 81088819 authored by Frank Munzert's avatar Frank Munzert Committed by Martin Schwidefsky
Browse files

[S390] shutdown actions: save/return rc from init function



We always returned -EINVAL when setting of a shutdown action failed. This was
misleading, if for example the hardware did not support the shutdown action.
Now we save each shutdown action's init return code and return it when the
action is being set.

Signed-off-by: default avatarFrank Munzert <munzert@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent aeec92ca
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ struct shutdown_action {
	char *name;
	void (*fn) (struct shutdown_trigger *trigger);
	int (*init) (void);
	int init_rc;
};

static char *ipl_type_str(enum ipl_type type)
@@ -1486,13 +1487,15 @@ static int set_trigger(const char *buf, struct shutdown_trigger *trigger,
	int i;

	for (i = 0; i < SHUTDOWN_ACTIONS_COUNT; i++) {
		if (!shutdown_actions_list[i])
			continue;
		if (sysfs_streq(buf, shutdown_actions_list[i]->name)) {
			if (shutdown_actions_list[i]->init_rc) {
				return shutdown_actions_list[i]->init_rc;
			} else {
				trigger->action = shutdown_actions_list[i];
				return len;
			}
		}
	}
	return -EINVAL;
}

@@ -1640,8 +1643,8 @@ static void __init shutdown_actions_init(void)
	for (i = 0; i < SHUTDOWN_ACTIONS_COUNT; i++) {
		if (!shutdown_actions_list[i]->init)
			continue;
		if (shutdown_actions_list[i]->init())
			shutdown_actions_list[i] = NULL;
		shutdown_actions_list[i]->init_rc =
			shutdown_actions_list[i]->init();
	}
}