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

Commit ae0fa822 authored by David Kershner's avatar David Kershner Committed by Greg Kroah-Hartman
Browse files

staging: unisys: visorbus: add error handling for parahotplug_request_kickoff



The function kobject_uevent_env returns an error we shouldn't just drop it
on the floor but we should report it back to the caller. Since it now
returns an error, need to add proper error handling to
parahotplug_process_message.

Signed-off-by: default avatarDavid Kershner <david.kershner@unisys.com>
Reviewed-by: default avatarReviewed-by: Tim Sell <timothy.sell@unisys.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent fbc1023a
Loading
Loading
Loading
Loading
+28 −16
Original line number Diff line number Diff line
@@ -1181,7 +1181,7 @@ static const struct attribute_group *visorchipset_dev_groups[] = {
 * Cause uevent to run the user level script to do the disable/enable specified
 * in the parahotplug_request.
 */
static void
static int
parahotplug_request_kickoff(struct parahotplug_request *req)
{
	struct controlvm_message_packet *cmd = &req->msg.cmd;
@@ -1202,8 +1202,8 @@ parahotplug_request_kickoff(struct parahotplug_request *req)
	sprintf(env_func, "SPAR_PARAHOTPLUG_FUNCTION=%d",
		cmd->device_change_state.dev_no & 0x7);

	kobject_uevent_env(&chipset_dev->acpi_device->dev.kobj, KOBJ_CHANGE,
			   envp);
	return kobject_uevent_env(&chipset_dev->acpi_device->dev.kobj,
				  KOBJ_CHANGE, envp);
}

/*
@@ -1215,6 +1215,7 @@ static int
parahotplug_process_message(struct controlvm_message *inmsg)
{
	struct parahotplug_request *req;
	int err;

	req = parahotplug_request_create(inmsg);

@@ -1233,13 +1234,17 @@ parahotplug_process_message(struct controlvm_message *inmsg)
		 * devices are automatically enabled at
		 * initialization.
		 */
		parahotplug_request_kickoff(req);
		err = parahotplug_request_kickoff(req);
		if (err)
			goto err_respond;
		controlvm_respond_physdev_changestate
			(&inmsg->hdr,
			 CONTROLVM_RESP_SUCCESS,
			 inmsg->cmd.device_change_state.state);
		parahotplug_request_destroy(req);
	} else {
		return 0;
	}

	/*
	 * For disable messages, add the request to the
	 * request list before kicking off the udev script. It
@@ -1250,9 +1255,16 @@ parahotplug_process_message(struct controlvm_message *inmsg)
	list_add_tail(&req->list, &parahotplug_request_list);
	spin_unlock(&parahotplug_request_list_lock);

		parahotplug_request_kickoff(req);
	}
	err = parahotplug_request_kickoff(req);
	if (err)
		goto err_respond;
	return 0;

err_respond:
	controlvm_respond_physdev_changestate
				(&inmsg->hdr, err,
				 inmsg->cmd.device_change_state.state);
	return err;
}

/*