Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2364313imu; Thu, 24 Jan 2019 11:27:00 -0800 (PST) X-Google-Smtp-Source: ALg8bN6lxM1VuzT76RPcn83n0ow6u/h17tk+wp/rIxuJFYpZ2BTEDZzIYjB+kmoe1ifIgAxj/Lro X-Received: by 2002:a65:55ca:: with SMTP id k10mr7038467pgs.448.1548358020877; Thu, 24 Jan 2019 11:27:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548358020; cv=none; d=google.com; s=arc-20160816; b=QE8L0LLjFYvcdUCHANWH/E+tFJyQN1nEC0ZHFQdbKUTZ8VLq5vumP9iK+4rqP25SWc q6cA/FXdxPWOFal9zb/9RkCpYrOWhuqKR+t/jolyBpC/Vc4GUPzbu0SQBO4PtN34Ovpg 8kXD859dS2Brq43EGkWFpjemEnRZJ+N/Zp5v4dlFLPqk3D8ad9wrGoF3XT6a82nTPvfj 0fHxxu/5PUkhjkzhoH7j//mUt8/90mrcJAf+aFRFGUaasR3EM7wuImLtHRhiSsPPJjXG XffdrySrzzui72QZI87VYs7xU/JtcEhx+eJUZ5hn8KE1hTsxR9WKTNy9RgJti0b/5/Ut 9xnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=qtEHVNekLpVzSpGh1VG6/lKFVQUOvmk9HZ0gkUUhjns=; b=Yspl60BVuR/TV70eXwtN7AzHvVZ84Ea6oAYWCtizZk2V1Eg/yGQ/m2w3eAaCCZ1hdq 4EXWJ/WnTXsrsX6icG3TXuVFSXNb6Ivn0W8yflJl6GX7MM2pi817/LWcqzR+URur5dMf zcDVkbxlWvslxWTGpL+pDR47rIyrHqGM22VLRQ8KAJc5HTHJx1dc0mv0KppcDlh0oikY 16wOc682FnlhdGJSjePS05LTw/tkxZebSVdAMDTiPtlN6mjcqO7kDVMw78qS7OYK7kFA w0m1/j/YRI8LT2p8zGj1653rv+hFbkK/MZ1RGpi4WA14JhMxFVNE8JFjqv/k+n/w8Y9W yUEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=W7E1vmOw; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x2si22140143pgi.152.2019.01.24.11.26.45; Thu, 24 Jan 2019 11:27:00 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=W7E1vmOw; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730494AbfAXT0D (ORCPT + 99 others); Thu, 24 Jan 2019 14:26:03 -0500 Received: from mail.kernel.org ([198.145.29.99]:51834 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729959AbfAXTZ7 (ORCPT ); Thu, 24 Jan 2019 14:25:59 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B7008217D7; Thu, 24 Jan 2019 19:25:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548357959; bh=FQ3dqDVZ8ByQD2nQ88azxNbH05oeXQhBWzroN1XBrXs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=W7E1vmOwSwh4qfYPGB54bhPkwQsaFE5uzkVssIpF4XJG9qcAVPylykC+IzRhx3Ira 9c1pfWhnL1BBTreGpa5v003vKw8UaVqS0+b0m/G01EphFuF9aB/QKBGi6H4jsRMGKs ebtkAM9LPW/+qg3Ur3m9RfJF1KgIV8+WQFG3JmVA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ivan Mironov , "Martin K. Petersen" Subject: [PATCH 4.4 050/104] scsi: sd: Fix cache_type_store() Date: Thu, 24 Jan 2019 20:19:39 +0100 Message-Id: <20190124190201.286955322@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190124190154.968308875@linuxfoundation.org> References: <20190124190154.968308875@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Ivan Mironov commit 44759979a49bfd2d20d789add7fa81a21eb1a4ab upstream. Changing of caching mode via /sys/devices/.../scsi_disk/.../cache_type may fail if device responds to MODE SENSE command with DPOFUA flag set, and then checks this flag to be not set on MODE SELECT command. In this scenario, when trying to change cache_type, write always fails: # echo "none" >cache_type bash: echo: write error: Invalid argument And following appears in dmesg: [13007.865745] sd 1:0:1:0: [sda] Sense Key : Illegal Request [current] [13007.865753] sd 1:0:1:0: [sda] Add. Sense: Invalid field in parameter list >From SBC-4 r15, 6.5.1 "Mode pages overview", description of DEVICE-SPECIFIC PARAMETER field in the mode parameter header: ... The write protect (WP) bit for mode data sent with a MODE SELECT command shall be ignored by the device server. ... The DPOFUA bit is reserved for mode data sent with a MODE SELECT command. ... The remaining bits in the DEVICE-SPECIFIC PARAMETER byte are also reserved and shall be set to zero. [mkp: shuffled commentary to commit description] Cc: stable@vger.kernel.org Signed-off-by: Ivan Mironov Signed-off-by: Martin K. Petersen Signed-off-by: Greg Kroah-Hartman --- drivers/scsi/sd.c | 6 ++++++ 1 file changed, 6 insertions(+) --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -207,6 +207,12 @@ cache_type_store(struct device *dev, str sp = buffer_data[0] & 0x80 ? 1 : 0; buffer_data[0] &= ~0x80; + /* + * Ensure WP, DPOFUA, and RESERVED fields are cleared in + * received mode parameter buffer before doing MODE SELECT. + */ + data.device_specific = 0; + if (scsi_mode_select(sdp, 1, sp, 8, buffer_data, len, SD_TIMEOUT, SD_MAX_RETRIES, &data, &sshdr)) { if (scsi_sense_valid(&sshdr))