Commit 60f394b5 authored by Stefan Wahren's avatar Stefan Wahren Committed by Greg Kroah-Hartman
Browse files

staging: vchiq_core: reduce indentation in parse_open



The function parse_open() already has bail out sections like fail_open.
So use a goto for the other error cases like payload size is too small
and listening service cannot be found. This avoids two indentation levels.

Signed-off-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
Link: https://lore.kernel.org/r/1622735405-9980-14-git-send-email-stefan.wahren@i2se.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 88a6ab1d
Loading
Loading
Loading
Loading
+70 −76
Original line number Diff line number Diff line
@@ -1526,19 +1526,20 @@ abort_outstanding_bulks(struct vchiq_service *service,
static int
parse_open(struct vchiq_state *state, struct vchiq_header *header)
{
	const struct vchiq_open_payload *payload;
	struct vchiq_service *service = NULL;
	int msgid, size;
	unsigned int localport, remoteport;
	unsigned int localport, remoteport, fourcc;
	short version, version_min;

	msgid = header->msgid;
	size = header->size;
	localport = VCHIQ_MSG_DSTPORT(msgid);
	remoteport = VCHIQ_MSG_SRCPORT(msgid);
	if (size >= sizeof(struct vchiq_open_payload)) {
		const struct vchiq_open_payload *payload =
			(struct vchiq_open_payload *)header->data;
		unsigned int fourcc;
	if (size < sizeof(struct vchiq_open_payload))
		goto fail_open;

	payload = (struct vchiq_open_payload *)header->data;
	fourcc = payload->fourcc;
	vchiq_log_info(vchiq_core_log_level,
		"%d: prs OPEN@%pK (%d->'%c%c%c%c')",
@@ -1546,11 +1547,12 @@ parse_open(struct vchiq_state *state, struct vchiq_header *header)
		VCHIQ_FOURCC_AS_4CHARS(fourcc));

	service = get_listening_service(state, fourcc);
	if (!service)
		goto fail_open;

		if (service) {
	/* A matching service exists */
			short version = payload->version;
			short version_min = payload->version_min;
	version = payload->version;
	version_min = payload->version_min;

	if ((service->version < version_min) ||
		(version < service->version_min)) {
@@ -1581,22 +1583,16 @@ parse_open(struct vchiq_state *state, struct vchiq_header *header)

		/* Acknowledge the OPEN */
		if (service->sync) {
					if (queue_message_sync(
						state,
						NULL,
						MAKE_OPENACK(service->localport,
							     remoteport),
			if (queue_message_sync(state, NULL,
				MAKE_OPENACK(service->localport, remoteport),
				memcpy_copy_callback,
				&ack_payload,
				sizeof(ack_payload),
				0) == VCHIQ_RETRY)
				goto bail_not_ready;
		} else {
					if (queue_message(state,
							NULL,
							MAKE_OPENACK(
							service->localport,
							remoteport),
			if (queue_message(state, NULL,
				MAKE_OPENACK(service->localport, remoteport),
				memcpy_copy_callback,
				&ack_payload,
				sizeof(ack_payload),
@@ -1613,8 +1609,6 @@ parse_open(struct vchiq_state *state, struct vchiq_header *header)
	/* Success - the message has been dealt with */
	vchiq_service_put(service);
	return 1;
		}
	}

fail_open:
	/* No available service, or an invalid request - send a CLOSE */