It's possible to convert the if statement into a continue early and save an indention level. Signed-off-by: Stefan Wahren <stefan.wahren@xxxxxxxx> --- .../vc04_services/interface/vchiq_arm/vchiq_core.c | 71 +++++++++++----------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c index b3e81ac..2ac3545 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c @@ -2578,42 +2578,43 @@ release_service_messages(struct vchiq_service *service) for (i = state->remote->slot_first; i <= slot_last; i++) { struct vchiq_slot_info *slot_info = SLOT_INFO_FROM_INDEX(state, i); - if (slot_info->release_count != slot_info->use_count) { - char *data = - (char *)SLOT_DATA_FROM_INDEX(state, i); - unsigned int pos, end; + unsigned int pos, end; + char *data; - end = VCHIQ_SLOT_SIZE; - if (data == state->rx_data) - /* - * This buffer is still being read from - stop - * at the current read position - */ - end = state->rx_pos & VCHIQ_SLOT_MASK; - - pos = 0; - - while (pos < end) { - struct vchiq_header *header = - (struct vchiq_header *)(data + pos); - int msgid = header->msgid; - int port = VCHIQ_MSG_DSTPORT(msgid); - - if ((port == service->localport) && - (msgid & VCHIQ_MSGID_CLAIMED)) { - vchiq_log_info(vchiq_core_log_level, - " fsi - hdr %pK", header); - release_slot(state, slot_info, header, - NULL); - } - pos += calc_stride(header->size); - if (pos > VCHIQ_SLOT_SIZE) { - vchiq_log_error(vchiq_core_log_level, - "fsi - pos %x: header %pK, msgid %x, header->msgid %x, header->size %x", - pos, header, msgid, - header->msgid, header->size); - WARN(1, "invalid slot position\n"); - } + if (slot_info->release_count == slot_info->use_count) + continue; + + data = (char *)SLOT_DATA_FROM_INDEX(state, i); + end = VCHIQ_SLOT_SIZE; + if (data == state->rx_data) + /* + * This buffer is still being read from - stop + * at the current read position + */ + end = state->rx_pos & VCHIQ_SLOT_MASK; + + pos = 0; + + while (pos < end) { + struct vchiq_header *header = + (struct vchiq_header *)(data + pos); + int msgid = header->msgid; + int port = VCHIQ_MSG_DSTPORT(msgid); + + if ((port == service->localport) && + (msgid & VCHIQ_MSGID_CLAIMED)) { + vchiq_log_info(vchiq_core_log_level, + " fsi - hdr %pK", header); + release_slot(state, slot_info, header, + NULL); + } + pos += calc_stride(header->size); + if (pos > VCHIQ_SLOT_SIZE) { + vchiq_log_error(vchiq_core_log_level, + "fsi - pos %x: header %pK, msgid %x, header->msgid %x, header->size %x", + pos, header, msgid, + header->msgid, header->size); + WARN(1, "invalid slot position\n"); } } } -- 2.7.4