From patchwork Mon Oct 24 11:30:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 9380 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp478064wru; Mon, 24 Oct 2022 07:16:49 -0700 (PDT) X-Google-Smtp-Source: AMsMyM508arelEPfdZxjtYZJFgUZnTBfYniYPcc0FS9Poy5oFs9C4jXAe6ty/qsKD1/NZsqm+ukd X-Received: by 2002:a17:907:7d8e:b0:78d:ed30:643b with SMTP id oz14-20020a1709077d8e00b0078ded30643bmr27271829ejc.253.1666621008890; Mon, 24 Oct 2022 07:16:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666621008; cv=none; d=google.com; s=arc-20160816; b=MfJE7buhh6/jbUp/jVDSRDLKXoLNhokFQCenLAF1CQDY4ufyGz6OiLPnY89e3xa0wx iAyS+BVl7fSFt/jJ5gmOggK7+fGqCS2WlYaPT2VYNFYV/XX+GASZ5a/blRyTsuMG9law d6nrDA967ed0Dz/bYqo/LMdUCL1/U1xDHpeX8Abqasc5+EErfn5Kmq6QCsNHPj9bEFe0 CuG3M+4mSFRbPDSapSbXo5FyucgNsUuFoDWxQoWxBptDyQ9KX+NO5tKgKnhQGNGKW3Jx YZPbb0AIdcaF1+WTNW4xtond7n0NNlfvs3nHGhMTFG4tAaWr2rK7+hBa1cbC+y02xLYm Cq/w== 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=ArUaRlHegjFgg2OWVMLf+jq31N12l1OC/LUA46XZYp8=; b=OJFVg7oeYwRmZtX5UP/G0EiC6tWCHD/abbOuAS4/DO9eNyZZWvKG1WqYKVz4w+owWs Hh6u3337E3bHd/X3tu7ZVGE6zMKTQClDranwgBlzOu6LpeySRdnOJUmlOYy7DH40Uby6 GO9gO9FtCzjHWV5vVRBiCRzww0TkmSZXFbv6VNsyZaSmvxGtI+aAS7gMS3q8IhusWZH4 R6Jcdz4gZUG1w9mFg+vuIlqHhzYNuqQ1bx3SIA6JJNiuSrM5CjrKEc0tzzuCPQryZnsg 8WE37DjFwVFWmQUKTMRlhuyBbuF51yz6BLd88eCRyy2VEf9jf3MetZotOUWwlSogtzR1 vOfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=qr+eh5LP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id wu13-20020a170906eecd00b0078d93245e34si31241067ejb.793.2022.10.24.07.16.23; Mon, 24 Oct 2022 07:16:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=qr+eh5LP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S232563AbiJXODV (ORCPT + 99 others); Mon, 24 Oct 2022 10:03:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48108 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236876AbiJXOCD (ORCPT ); Mon, 24 Oct 2022 10:02:03 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DEF06BEF9E; Mon, 24 Oct 2022 05:48:07 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 5103D61337; Mon, 24 Oct 2022 12:46:40 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 67A5EC433C1; Mon, 24 Oct 2022 12:46:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1666615599; bh=0P3Ds4j0+h4YyigkIlgU7IjR7OJA8JzvCC9OSTqqAl8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qr+eh5LPRhCZmg1qT5OTNaInsFZBZlb7rV9cZGQWwfP9gNyszmG2AkgC0GKX+3YiH 57KLtg6SpdMlpOyLyhuXK5vGWCO4V/ozJSeKKqHvcxMii0U01NRidgprHn0U0DJ0Eu mnIxsnaDHWLMX7tNRwXtIwn1FtEz1MImTIPsMkAU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Niklas Cassel , Damien Le Moal , Sasha Levin Subject: [PATCH 5.15 312/530] ata: fix ata_id_sense_reporting_enabled() and ata_id_has_sense_reporting() Date: Mon, 24 Oct 2022 13:30:56 +0200 Message-Id: <20221024113059.163865650@linuxfoundation.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221024113044.976326639@linuxfoundation.org> References: <20221024113044.976326639@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747578790767876245?= X-GMAIL-MSGID: =?utf-8?q?1747578790767876245?= From: Niklas Cassel [ Upstream commit 690aa8c3ae308bc696ec8b1b357b995193927083 ] ACS-5 section 7.13.6.41 Words 85..87, 120: Commands and feature sets supported or enabled states that: If bit 15 of word 86 is set to one, bit 14 of word 119 is set to one, and bit 15 of word 119 is cleared to zero, then word 119 is valid. If bit 15 of word 86 is set to one, bit 14 of word 120 is set to one, and bit 15 of word 120 is cleared to zero, then word 120 is valid. (This text also exists in really old ACS standards, e.g. ACS-3.) Currently, ata_id_sense_reporting_enabled() and ata_id_has_sense_reporting() both check bit 15 of word 86, but neither of them check that bit 14 of word 119 is set to one, or that bit 15 of word 119 is cleared to zero. Additionally, make ata_id_sense_reporting_enabled() return false if !ata_id_has_sense_reporting(), similar to how e.g. ata_id_flush_ext_enabled() returns false if !ata_id_has_flush_ext(). Fixes: e87fd28cf9a2 ("libata: Implement support for sense data reporting") Signed-off-by: Niklas Cassel Signed-off-by: Damien Le Moal Signed-off-by: Sasha Levin --- include/linux/ata.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/include/linux/ata.h b/include/linux/ata.h index 1b44f40c7700..5d43716e5047 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h @@ -770,16 +770,21 @@ static inline bool ata_id_has_read_log_dma_ext(const u16 *id) static inline bool ata_id_has_sense_reporting(const u16 *id) { - if (!(id[ATA_ID_CFS_ENABLE_2] & (1 << 15))) + if (!(id[ATA_ID_CFS_ENABLE_2] & BIT(15))) + return false; + if ((id[ATA_ID_COMMAND_SET_3] & (BIT(15) | BIT(14))) != BIT(14)) return false; - return id[ATA_ID_COMMAND_SET_3] & (1 << 6); + return id[ATA_ID_COMMAND_SET_3] & BIT(6); } static inline bool ata_id_sense_reporting_enabled(const u16 *id) { - if (!(id[ATA_ID_CFS_ENABLE_2] & (1 << 15))) + if (!ata_id_has_sense_reporting(id)) + return false; + /* ata_id_has_sense_reporting() == true, word 86 must have bit 15 set */ + if ((id[ATA_ID_COMMAND_SET_4] & (BIT(15) | BIT(14))) != BIT(14)) return false; - return id[ATA_ID_COMMAND_SET_4] & (1 << 6); + return id[ATA_ID_COMMAND_SET_4] & BIT(6); } /**