Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp6272766imu; Mon, 21 Jan 2019 06:11:31 -0800 (PST) X-Google-Smtp-Source: ALg8bN6ULsd/WP4pCHynNyhDLwmsCWnl6lNI6IgAQxGr2k6NTaIIfUD+ejHM3Ptq7/ojoeP/oBER X-Received: by 2002:a63:e051:: with SMTP id n17mr28303839pgj.258.1548079891593; Mon, 21 Jan 2019 06:11:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548079891; cv=none; d=google.com; s=arc-20160816; b=UHzC8ATCrLYY0sxwntJ2ssrqWDoGL0K4XJgEeUn/6htZ3oma3ujn9wkN1X5eKKprcB xsd8CuGJZOfpjv61Xg8YxktnRFIqtwHfS7jVhw6yZTiz0I3jk9OAW6sqN6fckXL4op/c OA9aL02uz8y/zGdFE/I7yv/NOIT+/2E8gLMPmbRyuGEa3bzBt2lxDYESu+iHPUHWtmUv 3q/DBg9UAWrppNGXEVWRXgiv9JjSEaqtyWLlf806HFnDLOfLUpfb/JOzF38kRsNpWehj 1M2RaUTiW88hAv3Rw8JSpo1oH5NvwEOyyfi7UbvWuisrRzCapP6kzjBAkUAKC7ngPK0K yljQ== 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=PMw3YdSGBj4KmhI0ysIit3BnFAWVzxZQDWc/G6Mo0ZU=; b=0rNODlE1qO202SgR0O1CJ2j8wbhrzlLlZMroUk3X4YjksVT39sFYnBCFy01/0Z/zcQ 1gDqi+xBB4KAuDaslNCW/0HUXZmhEyJN4vdlkNhDB72Tlm0iMdFJqT7nqlgILeVzSdrJ 6csFQPAaL3l6P7q45nFmuAZY6KWNqc/MtwWosLqRE8S07rJpFR2SF9Rf3jLR+/Fk8gYf CBIuT2+4pm9yRGjc0nR2d/AyWkNNT+3eKk+eXB41OVB71g2hm+i68OhbcjDu9gusNveB 4ZgsldTYk/AOavcQ4Mjm3mTjqOhEi+n75Gb1EbSJgra+eVW1++zbBb6qB6d4af1o0urG nZOQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=LDQ8rcTK; 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 q18si7291429pls.30.2019.01.21.06.11.16; Mon, 21 Jan 2019 06:11:31 -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=LDQ8rcTK; 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 S1731667AbfAUNzH (ORCPT + 99 others); Mon, 21 Jan 2019 08:55:07 -0500 Received: from mail.kernel.org ([198.145.29.99]:39560 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731661AbfAUNzE (ORCPT ); Mon, 21 Jan 2019 08:55:04 -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 DBE5C2084C; Mon, 21 Jan 2019 13:55:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548078904; bh=yZDHvxs3zmc9KneHZ82SPkAF5Cjz6fW8RxFnmqZguic=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LDQ8rcTKU7JCRR06wSMhW3FVJy2RaTzp7Gozn/NAfKyhU8Xj/cz6rxlRWyYb5eWA+ kHqcYUVx7ib+GOasbAWUvv0OvOIDU6wySPZ54odz6WIpNKxMbvT84WDWhw2VpbN29j 0cHpDx94JyWPIUnHMo6AZeCCZB+9Q2IDG6KnHb8k= 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.9 24/51] scsi: sd: Fix cache_type_store() Date: Mon, 21 Jan 2019 14:44:20 +0100 Message-Id: <20190121122455.777256066@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190121122453.700446926@linuxfoundation.org> References: <20190121122453.700446926@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.9-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 @@ -208,6 +208,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))