From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932511AbcGFWlc (ORCPT ); Wed, 6 Jul 2016 18:41:32 -0400 Received: from p3plsmtps2ded04.prod.phx3.secureserver.net ([208.109.80.198]:37207 "EHLO p3plsmtps2ded04.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755793AbcGFWla (ORCPT ); Wed, 6 Jul 2016 18:41:30 -0400 x-originating-ip: 72.167.245.219 From: kys@exchange.microsoft.com To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com, jasowang@redhat.com, leann.ogasawara@canonical.com Cc: "K. Y. Srinivasan" Subject: [PATCH 3/4] Drivers: hv: ring_buffer: use wrap around mappings in hv_copy{from,to}_ringbuffer() Date: Wed, 6 Jul 2016 17:25:04 -0700 Message-Id: <1467851105-8773-3-git-send-email-kys@exchange.microsoft.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1467851105-8773-1-git-send-email-kys@exchange.microsoft.com> References: <1467851057-8718-1-git-send-email-kys@exchange.microsoft.com> <1467851105-8773-1-git-send-email-kys@exchange.microsoft.com> Reply-To: kys@microsoft.com X-CMAE-Envelope: MS4wfO6UGAiEP/M0FYzsU2MqkCBE6YeUqsqC96gslTZ462lyRzDzYdODKLsBlVZC7bvUSLMO0BEUYOIxPTNuCkh9UjTkbiK4diPxopBKD4TNN+6aLCVvkUja yW6ZjUK1ybTQGsu8eQMFGtGrBgMIPzewTE/iZFO3BYYY5GzUMOrkm7EbNtP65ihv5lajK20azO/mypjjSk2enI59iwQmqS0FQTpoAQko3UdGx/j6jVvuQvsC SmhA1d9GCNSvwuyHSNjqOxNtOSsl4AMtyXd3mV4UDZZ7crrRmK2L+pXQ7iYGvBFkls7U7D1WEGB5Vy1QLJy/4r1mMgMwhEVE69t3r9h4yx3yS+qVxJmhqve+ Mn8LGlF2/GYtPmWzwAvGNYch3T39HQFhv3JfJK/qojCESy9faRSl75OxTLdwjPC7wltEVmiGk58xWdi4byvtYL9Eh/ywdKH0AQQH/pe+o9B0a/MfOe4= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vitaly Kuznetsov With wrap around mappings for ring buffers we can always use a single memcpy() to do the job. Signed-off-by: Vitaly Kuznetsov Signed-off-by: K. Y. Srinivasan Tested-by: Dexuan Cui --- drivers/hv/ring_buffer.c | 24 +++--------------------- 1 files changed, 3 insertions(+), 21 deletions(-) diff --git a/drivers/hv/ring_buffer.c b/drivers/hv/ring_buffer.c index 7e21c2c..08043da 100644 --- a/drivers/hv/ring_buffer.c +++ b/drivers/hv/ring_buffer.c @@ -172,18 +172,7 @@ static u32 hv_copyfrom_ringbuffer( void *ring_buffer = hv_get_ring_buffer(ring_info); u32 ring_buffer_size = hv_get_ring_buffersize(ring_info); - u32 frag_len; - - /* wrap-around detected at the src */ - if (destlen > ring_buffer_size - start_read_offset) { - frag_len = ring_buffer_size - start_read_offset; - - memcpy(dest, ring_buffer + start_read_offset, frag_len); - memcpy(dest + frag_len, ring_buffer, destlen - frag_len); - } else - - memcpy(dest, ring_buffer + start_read_offset, destlen); - + memcpy(dest, ring_buffer + start_read_offset, destlen); start_read_offset += destlen; start_read_offset %= ring_buffer_size; @@ -204,15 +193,8 @@ static u32 hv_copyto_ringbuffer( { void *ring_buffer = hv_get_ring_buffer(ring_info); u32 ring_buffer_size = hv_get_ring_buffersize(ring_info); - u32 frag_len; - - /* wrap-around detected! */ - if (srclen > ring_buffer_size - start_write_offset) { - frag_len = ring_buffer_size - start_write_offset; - memcpy(ring_buffer + start_write_offset, src, frag_len); - memcpy(ring_buffer, src + frag_len, srclen - frag_len); - } else - memcpy(ring_buffer + start_write_offset, src, srclen); + + memcpy(ring_buffer + start_write_offset, src, srclen); start_write_offset += srclen; start_write_offset %= ring_buffer_size; -- 1.7.4.1