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,
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 */
......
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