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

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.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 88a6ab1d
...@@ -1526,19 +1526,20 @@ abort_outstanding_bulks(struct vchiq_service *service, ...@@ -1526,19 +1526,20 @@ abort_outstanding_bulks(struct vchiq_service *service,
static int static int
parse_open(struct vchiq_state *state, struct vchiq_header *header) parse_open(struct vchiq_state *state, struct vchiq_header *header)
{ {
const struct vchiq_open_payload *payload;
struct vchiq_service *service = NULL; struct vchiq_service *service = NULL;
int msgid, size; int msgid, size;
unsigned int localport, remoteport; unsigned int localport, remoteport, fourcc;
short version, version_min;
msgid = header->msgid; msgid = header->msgid;
size = header->size; size = header->size;
localport = VCHIQ_MSG_DSTPORT(msgid); localport = VCHIQ_MSG_DSTPORT(msgid);
remoteport = VCHIQ_MSG_SRCPORT(msgid); remoteport = VCHIQ_MSG_SRCPORT(msgid);
if (size >= sizeof(struct vchiq_open_payload)) { if (size < sizeof(struct vchiq_open_payload))
const struct vchiq_open_payload *payload = goto fail_open;
(struct vchiq_open_payload *)header->data;
unsigned int fourcc;
payload = (struct vchiq_open_payload *)header->data;
fourcc = payload->fourcc; fourcc = payload->fourcc;
vchiq_log_info(vchiq_core_log_level, vchiq_log_info(vchiq_core_log_level,
"%d: prs OPEN@%pK (%d->'%c%c%c%c')", "%d: prs OPEN@%pK (%d->'%c%c%c%c')",
...@@ -1546,11 +1547,12 @@ parse_open(struct vchiq_state *state, struct vchiq_header *header) ...@@ -1546,11 +1547,12 @@ parse_open(struct vchiq_state *state, struct vchiq_header *header)
VCHIQ_FOURCC_AS_4CHARS(fourcc)); VCHIQ_FOURCC_AS_4CHARS(fourcc));
service = get_listening_service(state, fourcc); service = get_listening_service(state, fourcc);
if (!service)
goto fail_open;
if (service) {
/* A matching service exists */ /* A matching service exists */
short version = payload->version; version = payload->version;
short version_min = payload->version_min; version_min = payload->version_min;
if ((service->version < version_min) || if ((service->version < version_min) ||
(version < service->version_min)) { (version < service->version_min)) {
...@@ -1581,22 +1583,16 @@ parse_open(struct vchiq_state *state, struct vchiq_header *header) ...@@ -1581,22 +1583,16 @@ parse_open(struct vchiq_state *state, struct vchiq_header *header)
/* Acknowledge the OPEN */ /* Acknowledge the OPEN */
if (service->sync) { if (service->sync) {
if (queue_message_sync( if (queue_message_sync(state, NULL,
state, MAKE_OPENACK(service->localport, remoteport),
NULL,
MAKE_OPENACK(service->localport,
remoteport),
memcpy_copy_callback, memcpy_copy_callback,
&ack_payload, &ack_payload,
sizeof(ack_payload), sizeof(ack_payload),
0) == VCHIQ_RETRY) 0) == VCHIQ_RETRY)
goto bail_not_ready; goto bail_not_ready;
} else { } else {
if (queue_message(state, if (queue_message(state, NULL,
NULL, MAKE_OPENACK(service->localport, remoteport),
MAKE_OPENACK(
service->localport,
remoteport),
memcpy_copy_callback, memcpy_copy_callback,
&ack_payload, &ack_payload,
sizeof(ack_payload), sizeof(ack_payload),
...@@ -1613,8 +1609,6 @@ parse_open(struct vchiq_state *state, struct vchiq_header *header) ...@@ -1613,8 +1609,6 @@ parse_open(struct vchiq_state *state, struct vchiq_header *header)
/* Success - the message has been dealt with */ /* Success - the message has been dealt with */
vchiq_service_put(service); vchiq_service_put(service);
return 1; return 1;
}
}
fail_open: fail_open:
/* No available service, or an invalid request - send a CLOSE */ /* No available service, or an invalid request - send a CLOSE */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment