From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: [PATCH 3/3] vmbus: handle eof on irq read Date: Mon, 6 Aug 2018 11:11:08 -0700 Message-ID: <20180806181108.5913-4-stephen@networkplumber.org> References: <20180806181108.5913-1-stephen@networkplumber.org> Cc: Stephen Hemminger , Stephen Hemminger To: dev@dpdk.org Return-path: Received: from mail-pg1-f195.google.com (mail-pg1-f195.google.com [209.85.215.195]) by dpdk.org (Postfix) with ESMTP id 15BD31B3A9 for ; Mon, 6 Aug 2018 20:11:21 +0200 (CEST) Received: by mail-pg1-f195.google.com with SMTP id k3-v6so6578856pgq.5 for ; Mon, 06 Aug 2018 11:11:21 -0700 (PDT) In-Reply-To: <20180806181108.5913-1-stephen@networkplumber.org> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This function is not used by netvsc driver yet. Still the code should handle case where device driver returns zero (due to rescind). Coverity issue: 302871 Fixes: 831dba47bd36 ("bus/vmbus: add Hyper-V virtual bus support") Signed-off-by: Stephen Hemminger --- drivers/bus/vmbus/linux/vmbus_uio.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/bus/vmbus/linux/vmbus_uio.c b/drivers/bus/vmbus/linux/vmbus_uio.c index bc2c6235e6bc..856c6d66785d 100644 --- a/drivers/bus/vmbus/linux/vmbus_uio.c +++ b/drivers/bus/vmbus/linux/vmbus_uio.c @@ -39,11 +39,17 @@ void vmbus_uio_irq_control(struct rte_vmbus_device *dev, int32_t onoff) int vmbus_uio_irq_read(struct rte_vmbus_device *dev) { int32_t count; - - if (read(dev->intr_handle.fd, &count, sizeof(count)) < 0) { - VMBUS_LOG(ERR, "cannot read to %d:%s", - dev->intr_handle.fd, strerror(errno)); - count = -errno; + int cc; + + cc = read(dev->intr_handle.fd, &count, sizeof(count)); + if (cc < (int)sizeof(count)) { + if (cc < 0) { + VMBUS_LOG(ERR, "IRQ read failed %s", + strerror(errno)); + return -errno; + } + VMBUS_LOG(ERR, "can't read IRQ count"); + return -EINVAL; } return count; -- 2.18.0