From patchwork Sat Oct 22 07:25:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 7571 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4242:0:0:0:0:0 with SMTP id s2csp1106113wrr; Sat, 22 Oct 2022 01:36:59 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6l2MAFA6UJK8W0BOifoM+V2ZnBNFtBP7j1ecOmizfEJpdHsLswZfFMOuql3Rn4U+q6fizw X-Received: by 2002:a17:907:25c5:b0:782:978d:c3da with SMTP id ae5-20020a17090725c500b00782978dc3damr18860793ejc.623.1666427819425; Sat, 22 Oct 2022 01:36:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666427819; cv=none; d=google.com; s=arc-20160816; b=FSrmtIhSd9dFeHMtS11kQqmlNzI+gAyJzi2Uv4WcYKfW4bzSIXMFNsCRX+xKoWYEpi jdtXJbItoOYdCz5T3tioOmv7+KdNisqZYZ8FnzonMlY1Lxq9vTJgvO7RnKjjVe/BVUdx YGpbxNmNHi/lTIfG0HxNWVanb1CsfyY0mU5OBGJ90U3+InMPHjR8rjUQrN/rwc1NcOLQ DukWp0b24sZJatSY36FjrrCyDCnEFagxiAfs4PsS4d6g3Gfn7Rvkr5RJ9uWccd8qt7TH 0gtov3e65XpyKehuzgN3BiRGI8fiJE27pKGD6usGtXLdQUNwfRT/ggGlzWMv3XIhPfKJ tMpw== 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=t5IKKE7F2yTl0RQzm5WcZtOu1DxktQ6bENcOtZu8oM4=; b=CBQDDDKoUZRiSRtD96tk8tVe/0L/ZXEAQWmmSHejmngRwPXIqgk3A4N78/E+z/tV1L sFrV9F/fm7HEPSzGOCkwQ+irR6dl2YEe4PRT7tb+N3f7Zlk+t9DQ0KXPwXH+5ty1Pw9D NDjf7mPkuXylGygpVrCZ0RQqNUrUn8s3IGJowUx+Y26e+eyyMGo4e6Nj9EUXUlRMloHD U8j8yzh0wL/eqYloJ+XkidHGb/Uwbj+xkHVxQWzbKJfp84bVNq94t8kKRutBxtByUR8H vUhs+53v3sP+gJjOvOmRZ7qS4WnncTO+n7dlMTj4GTNmrAiNVvjA07bzmJQlua5FsRbA W4Lw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=d2pkKRPL; 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 cs20-20020a170906dc9400b00791bcf8aa61si10904456ejc.505.2022.10.22.01.36.28; Sat, 22 Oct 2022 01:36:59 -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=d2pkKRPL; 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 S233884AbiJVIbi (ORCPT + 99 others); Sat, 22 Oct 2022 04:31:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233934AbiJVI2r (ORCPT ); Sat, 22 Oct 2022 04:28:47 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DCB532E2283; Sat, 22 Oct 2022 01:01:30 -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 ams.source.kernel.org (Postfix) with ESMTPS id 9525AB82E0D; Sat, 22 Oct 2022 07:53:50 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DCA55C433D6; Sat, 22 Oct 2022 07:53:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1666425229; bh=2jLg4sorREdD9Kh2cd4WxQmBKxAsrF1D/dWByB0ETJk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=d2pkKRPLkuBrYElwNUeQnguJXqrlwx2zvNbendNgiHqi0DV46vkNKAmiZbk5rdbGs nUgfBjxOHuCefQzlp9ef4q/hOKn9Aqk9Xb1PgFq6q17LSpBq+FOjS+/rKlO0t6rYUq Nbsf0WNSN6+tr2r9zSa4aPXpA4wGv/xewG62WfMQ= 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.19 434/717] ata: fix ata_id_sense_reporting_enabled() and ata_id_has_sense_reporting() Date: Sat, 22 Oct 2022 09:25:13 +0200 Message-Id: <20221022072517.606948532@linuxfoundation.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221022072415.034382448@linuxfoundation.org> References: <20221022072415.034382448@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 X-Spam-Status: No, score=-7.3 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?1747376217041379033?= X-GMAIL-MSGID: =?utf-8?q?1747376217041379033?= 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 21292b5bbb55..868bfd503aee 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h @@ -771,16 +771,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); } /**