From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933101AbcIFKit (ORCPT ); Tue, 6 Sep 2016 06:38:49 -0400 Received: from p3plsmtps2ded04.prod.phx3.secureserver.net ([208.109.80.198]:50556 "EHLO p3plsmtps2ded04.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932799AbcIFKir (ORCPT ); Tue, 6 Sep 2016 06:38:47 -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, sfr@canb.auug.org.au, davem@davemloft.net, sthemmin@microsoft.com, arnd@arndb.de Cc: "K. Y. Srinivasan" Subject: [PATCH] Drivers: hv: vmbus: Revert commit bb08d431a914 Date: Tue, 6 Sep 2016 05:28:12 -0700 Message-Id: <1473164892-12043-1-git-send-email-kys@exchange.microsoft.com> X-Mailer: git-send-email 1.7.4.1 Reply-To: kys@microsoft.com X-CMAE-Envelope: MS4wfGvYcnR5LQA/lDS6/hrwEGQ/0KZdPy2WAZLGwQeKE/r5UnZ7bE1QA+FWE/vFndZGsM6sTwtgajtCMdA/3QLjAG7yp4dp0aoLY+uKGbesaxdsqIj84bt/ lXZzQkZQsgqaERkx0pdrZOVRSol8O7JJy3l6Ye5Oj7VMAJuWs8eyrLtnfbrp1TsWu+0dOXkU7VghZ/qFYC8OLMaeTzoUTDA5L3orQ6GQXC7MGyJE7GP2uNa5 JbfMis3bbRIz1POJdeGX8lA+aiwGX/nnkzKiLjM8PBMhorjYus980nm1mmBfyNrqPM883K/1ouM80K9I24kp0BWTV0yWTZpcqSv9TB8MWwZ8wn0glWSQBhUq sfih29RXpzWznfftYSZFhfIChjJNVUlAgS8GpGhdnrsEce6vIT1RCpKzauwgIukPVW4HsT7dY8pB5inWONLbuqze+wb0JWFQ3SsBK4PoTXDTA+8nojTgB1wY /UI5aUqw/KAIYrfZigK/FkSIQVvtOWcW7qqh5y8KXeaGe75fZE2A2WvdrY/0v+52SrIfvMq/9oCvLwy4IRz/M9m9kpLTiQvXbXfW+Hk/JEnAcvxL8nPZ/vQV tFU= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: K. Y. Srinivasan To deal with the merge conflict between net-next and char-misc trees, revert commit bb08d431a914 from char-misc tree. This commit can be rebased and applied once net-next picks up char-misc changes. --- include/linux/hyperv.h | 32 +++++++++++++++++++++----------- 1 files changed, 21 insertions(+), 11 deletions(-) diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index c877e79..613074e 100644 --- a/include/linux/hyperv.h +++ b/include/linux/hyperv.h @@ -1492,23 +1492,31 @@ static inline struct vmpacket_descriptor * get_next_pkt_raw(struct vmbus_channel *channel) { struct hv_ring_buffer_info *ring_info = &channel->inbound; - u32 priv_read_loc = ring_info->priv_read_index; + u32 read_loc = ring_info->priv_read_index; void *ring_buffer = hv_get_ring_buffer(ring_info); + struct vmpacket_descriptor *cur_desc; + u32 packetlen; u32 dsize = ring_info->ring_datasize; - /* - * delta is the difference between what is available to read and - * what was already consumed in place. We commit read index after - * the whole batch is processed. - */ - u32 delta = priv_read_loc >= ring_info->ring_buffer->read_index ? - priv_read_loc - ring_info->ring_buffer->read_index : - (dsize - ring_info->ring_buffer->read_index) + priv_read_loc; + u32 delta = read_loc - ring_info->ring_buffer->read_index; u32 bytes_avail_toread = (hv_get_bytes_to_read(ring_info) - delta); if (bytes_avail_toread < sizeof(struct vmpacket_descriptor)) return NULL; - return ring_buffer + priv_read_loc; + if ((read_loc + sizeof(*cur_desc)) > dsize) + return NULL; + + cur_desc = ring_buffer + read_loc; + packetlen = cur_desc->len8 << 3; + + /* + * If the packet under consideration is wrapping around, + * return failure. + */ + if ((read_loc + packetlen + VMBUS_PKT_TRAILER) > (dsize - 1)) + return NULL; + + return cur_desc; } /* @@ -1520,14 +1528,16 @@ static inline void put_pkt_raw(struct vmbus_channel *channel, struct vmpacket_descriptor *desc) { struct hv_ring_buffer_info *ring_info = &channel->inbound; + u32 read_loc = ring_info->priv_read_index; u32 packetlen = desc->len8 << 3; u32 dsize = ring_info->ring_datasize; + if ((read_loc + packetlen + VMBUS_PKT_TRAILER) > dsize) + BUG(); /* * Include the packet trailer. */ ring_info->priv_read_index += packetlen + VMBUS_PKT_TRAILER; - ring_info->priv_read_index %= dsize; } /* -- 1.7.4.1