Commit d244f9bb authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'for-linus-6.17-1' of https://github.com/cminyard/linux-ipmi

Pull ipmi updates from Corey Minyard:
 "Some small fixes for the IPMI driver

  Nothing huge, some rate limiting on logs, a strncpy fix where the
  source and destination could be the same, and removal of some unused
  cruft"

* tag 'for-linus-6.17-1' of https://github.com/cminyard/linux-ipmi:
  ipmi: Use dev_warn_ratelimited() for incorrect message warnings
  char: ipmi: remove redundant variable 'type' and check
  ipmi: Fix strcpy source and destination the same
parents 2095cf55 ec50ec37
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -4607,7 +4607,7 @@ static int handle_one_recv_msg(struct ipmi_smi *intf,
		 * The NetFN and Command in the response is not even
		 * marginally correct.
		 */
		dev_warn(intf->si_dev,
		dev_warn_ratelimited(intf->si_dev,
				     "BMC returned incorrect response, expected netfn %x cmd %x, got netfn %x cmd %x\n",
				     (msg->data[0] >> 2) | 1, msg->data[1],
				     msg->rsp[0] >> 2, msg->rsp[1]);
+0 −4
Original line number Diff line number Diff line
@@ -2108,7 +2108,6 @@ static bool __init ipmi_smi_info_same(struct smi_info *e1, struct smi_info *e2)
static int __init init_ipmi_si(void)
{
	struct smi_info *e, *e2;
	enum ipmi_addr_src type = SI_INVALID;

	if (initialized)
		return 0;
@@ -2190,9 +2189,6 @@ static int __init init_ipmi_si(void)
	initialized = true;
	mutex_unlock(&smi_infos_lock);

	if (type)
		return 0;

	mutex_lock(&smi_infos_lock);
	if (unload_when_empty && list_empty(&smi_infos)) {
		mutex_unlock(&smi_infos_lock);
+42 −17
Original line number Diff line number Diff line
@@ -1146,14 +1146,8 @@ static struct ipmi_smi_watcher smi_watcher = {
	.smi_gone = ipmi_smi_gone
};

static int action_op(const char *inval, char *outval)
static int action_op_set_val(const char *inval)
{
	if (outval)
		strcpy(outval, action);

	if (!inval)
		return 0;

	if (strcmp(inval, "reset") == 0)
		action_val = WDOG_TIMEOUT_RESET;
	else if (strcmp(inval, "none") == 0)
@@ -1164,18 +1158,26 @@ static int action_op(const char *inval, char *outval)
		action_val = WDOG_TIMEOUT_POWER_DOWN;
	else
		return -EINVAL;
	strcpy(action, inval);
	return 0;
}

static int preaction_op(const char *inval, char *outval)
static int action_op(const char *inval, char *outval)
{
	int rv;

	if (outval)
		strcpy(outval, preaction);
		strcpy(outval, action);

	if (!inval)
		return 0;
	rv = action_op_set_val(inval);
	if (!rv)
		strcpy(action, inval);
	return rv;
}

static int preaction_op_set_val(const char *inval)
{
	if (strcmp(inval, "pre_none") == 0)
		preaction_val = WDOG_PRETIMEOUT_NONE;
	else if (strcmp(inval, "pre_smi") == 0)
@@ -1188,18 +1190,26 @@ static int preaction_op(const char *inval, char *outval)
		preaction_val = WDOG_PRETIMEOUT_MSG_INT;
	else
		return -EINVAL;
	strcpy(preaction, inval);
	return 0;
}

static int preop_op(const char *inval, char *outval)
static int preaction_op(const char *inval, char *outval)
{
	int rv;

	if (outval)
		strcpy(outval, preop);
		strcpy(outval, preaction);

	if (!inval)
		return 0;
	rv = preaction_op_set_val(inval);
	if (!rv)
		strcpy(preaction, inval);
	return 0;
}

static int preop_op_set_val(const char *inval)
{
	if (strcmp(inval, "preop_none") == 0)
		preop_val = WDOG_PREOP_NONE;
	else if (strcmp(inval, "preop_panic") == 0)
@@ -1208,6 +1218,21 @@ static int preop_op(const char *inval, char *outval)
		preop_val = WDOG_PREOP_GIVE_DATA;
	else
		return -EINVAL;
	return 0;
}

static int preop_op(const char *inval, char *outval)
{
	int rv;

	if (outval)
		strcpy(outval, preop);

	if (!inval)
		return 0;

	rv = preop_op_set_val(inval);
	if (!rv)
		strcpy(preop, inval);
	return 0;
}
@@ -1245,18 +1270,18 @@ static int __init ipmi_wdog_init(void)
{
	int rv;

	if (action_op(action, NULL)) {
	if (action_op_set_val(action)) {
		action_op("reset", NULL);
		pr_info("Unknown action '%s', defaulting to reset\n", action);
	}

	if (preaction_op(preaction, NULL)) {
	if (preaction_op_set_val(preaction)) {
		preaction_op("pre_none", NULL);
		pr_info("Unknown preaction '%s', defaulting to none\n",
			preaction);
	}

	if (preop_op(preop, NULL)) {
	if (preop_op_set_val(preop)) {
		preop_op("preop_none", NULL);
		pr_info("Unknown preop '%s', defaulting to none\n", preop);
	}