Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2655757pxj; Mon, 14 Jun 2021 04:10:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxxo0EpD9oWDsnvZi6nsG6VehHT/7/ci62rKGuILxlArf7QABut8Bi3ltPPn9QPEqP7VFMS X-Received: by 2002:a05:6402:34d2:: with SMTP id w18mr4137035edc.292.1623669029014; Mon, 14 Jun 2021 04:10:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623669029; cv=none; d=google.com; s=arc-20160816; b=XwpuTPdouo8ceCUqF/zBU68a1qvHihBOgfAOyJ0zOVDqYK3CXsMo//eM7sZsPv2Dzk 9WdDXN6xVteMO19m/7VhDtLRUzPWeHFjEvJvcNkokX4YHcSxyDSnPJxd+jHXzFOq+Vnh gSU+ixNUadCDelh/x+YxqKiGN8R2yEYrSnWJS5vNYUN5ECnLbi9dtYWv0IUpUAwXO3Rk u5vT8qCWJwhZxxKr5DVXr9xX6HnlUI1xANkskVE0AoQbMHRWuKdlBNNABDBBiEhmaam5 h442gi2nL4EaK9CzNnrc+gdJh77tk8l1vusUDU7/KQF/76P5v51zubqx0kvjjx7Aszmk lZuQ== 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=KBu5RhaiSAKk/P3ZN/dSV3K6SX5kd+FE2cqmVp5t0UU=; b=gaXLgmQVorkvnJkHIHXO9FtNhttD2tdxF/2bV3qcpxtN55p0DXdrsMp5ou5bvrjGyQ bL3GxwFG4n5AInVeAYQ2+9XhNUQYgvODy44oFXMc2SkJ2O16BuoJUxyyE3kggFs9TTAB AQRBSw7x81EKERiH9sjk7C0OJmXPvN8fIo2znW+ViThp/dRmTXeI3HOrjQuVipsmzAng TNTIKCkfTtXNKzp5mwP/MUMpGPeE4c3FODKdNuB+YeYh3I60fDdAaNZTvzEK37J1w11a OKdqybSPN6fuVDOw0okcfyW4CkwU4080Yyl6VEMhzWsd+uWPHZQ62S4lozH2fpAkh58B Sdvg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="y/dbJ0tg"; 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 v3si11474976ejf.18.2021.06.14.04.10.06; Mon, 14 Jun 2021 04:10:29 -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="y/dbJ0tg"; 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 S235513AbhFNLKf (ORCPT + 99 others); Mon, 14 Jun 2021 07:10:35 -0400 Received: from mail.kernel.org ([198.145.29.99]:36658 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234075AbhFNK7F (ORCPT ); Mon, 14 Jun 2021 06:59:05 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6921361440; Mon, 14 Jun 2021 10:42:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1623667326; bh=o4gimoPiJ3bHPHqjEjBBHmZXwQuE/CmhBTkx++jA4UI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=y/dbJ0tgh2bPU5Dnmhd+HvTFpJh9Nx9BvqWrVmdq155Objk7d7s/YEIa5y83LSnP8 AUm6BS9Ie/nNIqj8DRxsqrntt3oIrwUGXKY8uYENL4kRBJJWodOUAqNZ08vWCAobWo UiGdfbwQNnktA2wBlbYJshsEu7iG92nFMWQ6t9Vc= 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 5.10 027/131] scsi: vmw_pvscsi: Set correct residual data length Date: Mon, 14 Jun 2021 12:26:28 +0200 Message-Id: <20210614102653.931445493@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210614102652.964395392@linuxfoundation.org> References: <20210614102652.964395392@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 081f54ab7d86..1421b1394d81 100644 --- a/drivers/scsi/vmw_pvscsi.c +++ b/drivers/scsi/vmw_pvscsi.c @@ -587,7 +587,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