Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2633692pxj; Mon, 14 Jun 2021 03:36:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxtagE3LzbFBB3PIf36AmV0sw6mUzktyEG6HO+Ti474dbrsSPs4wVqOli51HedlJrDWMXoA X-Received: by 2002:a05:6402:35cc:: with SMTP id z12mr3676805edc.45.1623666961784; Mon, 14 Jun 2021 03:36:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623666961; cv=none; d=google.com; s=arc-20160816; b=ZP8OaEC1Qp2BnC55YKdcHedX/yYibs5VT8IlnNIFS9ceCCncADHVRxHFJqjyC0Px5J 187WB0XT7e2mpy4QhPhVIGFnhltnHU406CQ8AHb/k+LdbdFThgigbyFoWug8b/zEll9w gc2h7GYz1S3UtytvX1uKF510HR+XAnaRM5zxL7AarCI1/onvYB0tqNYRzIKML3/NlPKM +sofDoPok+Mba05LhG9KglmVr5k+xlaZQhCaxmWjCrI/aC7IDDHwFxeTrG0aNgJKK1z9 maIM4UBUCFExxVghPuoAFCssJVwodpefYZ86otNrLppMYS/Rf/1cfLCUx8gJ+laH9CMy hE+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=YbYZpTl5K54ewAk0nv8yW06Cm8fKNfFfI87FffPjyMs=; b=hFLUxiMIZ2Yux+ar670Dor6KqdjfxWvNLfFqyz5laJOdmcBpRPoWIxFT+D/w8NFknb 5g+OJbI+EHoEsDz0yw67t3TJBxDarkZyvjmXw7kYfUVvesQUiUQ13LoH6PU4y6nZJU1O lHUviUZ/9He/oEXrjm9BjKEuWGWozc8vAIGKnfWWulplvNiP3ZTsFInLd+rKlmZBz7RD uckEI7wmDoveOizs3y/c80/xaxGjIlMzflvrpmLcfUf4aEPJtQo8A0FwBeIZrhrwUDSK bpMxV0luh8zmDvH5lreF1ILFh5g0YuCBqJQU7UkrKC3gXoj9g7jR8Qt2i93SHd38Ev5K kdTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Jg2kEWbN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id nd10si10578451ejc.600.2021.06.14.03.35.39; Mon, 14 Jun 2021 03:36:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Jg2kEWbN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233372AbhFNKeC (ORCPT + 99 others); Mon, 14 Jun 2021 06:34:02 -0400 Received: from mail.kernel.org ([198.145.29.99]:39274 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233069AbhFNKcX (ORCPT ); Mon, 14 Jun 2021 06:32:23 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 7941F61004; Mon, 14 Jun 2021 10:30:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1623666621; bh=cH/LNhVrMIFN0Ry4SOpH7La6og4M9offvEArZsoH5Bc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Jg2kEWbN3C4UZqtV1VmuGautyjKOiHexI5T+iIq7bVy+d4r6v3AUen7w4AWJCt9kN EssG0AFg/ONGGk9qdXhd57mrg1vDv3qHfMwYSZjfFg8ox+rkrJSeZqt3hXrZ37KnKN rnxtqJzG1VbTaOWAN73WnYhKo1CVKvpGuu0GGi8g= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Matt Wang , "Martin K. Petersen" , Sasha Levin Subject: [PATCH 4.9 11/42] scsi: vmw_pvscsi: Set correct residual data length Date: Mon, 14 Jun 2021 12:27:02 +0200 Message-Id: <20210614102643.071382580@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210614102642.700712386@linuxfoundation.org> References: <20210614102642.700712386@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Matt Wang [ Upstream commit e662502b3a782d479e67736a5a1c169a703d853a ] Some commands (such as INQUIRY) may return less data than the initiator requested. To avoid conducting useless information, set the right residual count to make upper layer aware of this. Before (INQUIRY PAGE 0xB0 with 128B buffer): $ sg_raw -r 128 /dev/sda 12 01 B0 00 80 00 SCSI Status: Good Received 128 bytes of data: 00 00 b0 00 3c 01 00 00 00 00 00 00 00 00 00 00 00 ...<............ 10 00 00 00 00 00 01 00 00 00 00 00 40 00 00 08 00 ...........@.... 20 80 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 .......... ..... 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ After: $ sg_raw -r 128 /dev/sda 12 01 B0 00 80 00 SCSI Status: Good Received 64 bytes of data: 00 00 b0 00 3c 01 00 00 00 00 00 00 00 00 00 00 00 ...<............ 10 00 00 00 00 00 01 00 00 00 00 00 40 00 00 08 00 ...........@.... 20 80 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 .......... ..... 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ [mkp: clarified description] Link: https://lore.kernel.org/r/03C41093-B62E-43A2-913E-CFC92F1C70C3@vmware.com Signed-off-by: Matt Wang Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/vmw_pvscsi.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/vmw_pvscsi.c b/drivers/scsi/vmw_pvscsi.c index df6fabcce4f7..4d2172c115c6 100644 --- a/drivers/scsi/vmw_pvscsi.c +++ b/drivers/scsi/vmw_pvscsi.c @@ -577,7 +577,13 @@ static void pvscsi_complete_request(struct pvscsi_adapter *adapter, case BTSTAT_SUCCESS: case BTSTAT_LINKED_COMMAND_COMPLETED: case BTSTAT_LINKED_COMMAND_COMPLETED_WITH_FLAG: - /* If everything went fine, let's move on.. */ + /* + * Commands like INQUIRY may transfer less data than + * requested by the initiator via bufflen. Set residual + * count to make upper layer aware of the actual amount + * of data returned. + */ + scsi_set_resid(cmd, scsi_bufflen(cmd) - e->dataLen); cmd->result = (DID_OK << 16); break; -- 2.30.2