Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2501831lqp; Mon, 25 Mar 2024 00:00:09 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXyXsDg5ESqYBDSchDPp09mZNakb+pgiP8ixDQaIP8U0QkQztscwj2JcetbbwLXWDg13zWSFnIQtECBEjyzxiP6XgYIFdFp+7msPb2cHg== X-Google-Smtp-Source: AGHT+IGJbHxu0lPi2smnPgHLhzeblr4mGEODUIXTByorQ76hHlG5upqF5poLS8IW+HI/eyOcCJDu X-Received: by 2002:a05:6a20:b70a:b0:1a3:6a74:2e6a with SMTP id fg10-20020a056a20b70a00b001a36a742e6amr5951414pzb.14.1711350009487; Mon, 25 Mar 2024 00:00:09 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711350009; cv=pass; d=google.com; s=arc-20160816; b=lFZiXRKrTq6urxv4m0Z9bt2b5E6ZgOaH/kh+VyEelXQLAToqs+MoIdw/dOfrJob2NI W90xzKlj/hnm/z2uPbQWSj2HcU23gbokfzNAkmfsu9vcpZwfgRORCVfl/HZJtEgam9IZ Z++l1pGeHU8HdGphPertS1nFbuEpyiFGYmFbmsNPCIddfNKTyU7KOSVTI2cGyKXth2Mf W+V9d1R+dAalpktFCvBDZ3BwB5J+kyIR/X152/gnGPlNp0nl42FnqYRQu9kuTHHX52TI LKpOrnI2v5wwR+VBgaCkat8U0nG4MRi4+A4SkGVTGBNA14fcoATxQ5zIMKgG2oW+CyH3 pBjQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=QDqLA80796gRKWKgc1nEUAEjIpGLSdquiKSc6oFCzSA=; fh=zCJ8LEqfc7CTRaa9rC5E32DRSRbh8p5bU3ZvvXpUgB8=; b=GJPZg7qgws+XN7aBsgwYII1oAajjtPL4jxgYb2mzGvnp5CwBiS8t93DYUAXx2hzsSc 56dY5w2Oz9/BO/CmDUBlL7onjZPPfDjgowlonGZzH/95IDRhWZQUcgZXpZi5T0zhncTC UgmiMnRIsu4feZYp0bLKlvEF4vBxJEQccS0EKMZfFOsRmY6a52lEeCB8WUkv0Fgr7ExU O7tofMVICgwO2QRDsisagcwlLnrHgISGiwPU+ZY5iYr/if8BY5j4S9SzSCyjtjqslOq2 lMzT/vz6KYKF3fFiRV3AIt9+sA5hSmLoA5bakwyRlWGXSXGMxF641r8r0utLKgxn7Hee F22A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=vGhC0G1O; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-114733-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-114733-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id l12-20020a17090270cc00b001dd6bf2d4b2si4428780plt.631.2024.03.25.00.00.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 00:00:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-114733-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=vGhC0G1O; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-114733-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-114733-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 43740292D27 for ; Mon, 25 Mar 2024 07:00:08 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 109651A775F; Mon, 25 Mar 2024 00:48:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="vGhC0G1O" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 56A562733D9; Sun, 24 Mar 2024 23:35:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711323320; cv=none; b=IOEXQeMphYTU5GiABRHd8hAJrX1vF+/qF0Xl4V9fej+rce/S+f87rz6lmpJ7R2uWA4+YCEerez24QlCbBArbTFKCpiFQyTGj8ZYTISiFfawpMKdsZ05cTG4DM6CLOzZrjX7byQrERU/rB98nhZcIjyHuiKZ1LktuW+YIwqSOsME= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711323320; c=relaxed/simple; bh=/asW2tftmwjIBrAfKoCxa3oRNne3RxOit1L2BaOZ8Jg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GtaVaGm2xH2iDtVtedwmTta1Y0pQ5GCy8W0KH/niy02I7sEoOBW8vtspS90C2NmM7xb16pZyk0ZvK1Ti2eRL59zb5sk7AZcBhNeGMhOEczP+u/lJ7eHfL8iL/xRkGwJKvD59RNibQYO77mdth7slPZy0rn1tPMIzzWWfxUzZavI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=vGhC0G1O; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8C743C43394; Sun, 24 Mar 2024 23:35:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711323319; bh=/asW2tftmwjIBrAfKoCxa3oRNne3RxOit1L2BaOZ8Jg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vGhC0G1OtztXd+GQLrsRdWy1dysfG0kF1U6gxSlT/S0ypJUR1tV6gM0gXyqWEzH80 fP1da8rW439ChaGWzm8hKKgMwlVh5i5ybRSKwcs3mIg4yryFiRVr3by6jXfM4qpnts EplwHfXFzyF1P8ifK0zagVo48cpBnb3DKQjwJLypa1W3JDtkGHqijvVd87lPz+3hnF UMn4kkxnlh2bJaageWylXI6d7H6r4ogefzKAasg/N0GBVc9+/TPRRCtMJUGFQRJXTx yS1OXAHrrKcobxWFEDZsy3K98tXmWD0ENTK9C4iGyu0UvRxY1RouYqP+S5SG0cQYiI c1g0AYTX/XVlg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Greg Joyce , Jens Axboe , Sasha Levin Subject: [PATCH 5.15 019/317] block: sed-opal: handle empty atoms when parsing response Date: Sun, 24 Mar 2024 19:29:59 -0400 Message-ID: <20240324233458.1352854-20-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240324233458.1352854-1-sashal@kernel.org> References: <20240324233458.1352854-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit From: Greg Joyce [ Upstream commit 5429c8de56f6b2bd8f537df3a1e04e67b9c04282 ] The SED Opal response parsing function response_parse() does not handle the case of an empty atom in the response. This causes the entry count to be too high and the response fails to be parsed. Recognizing, but ignoring, empty atoms allows response handling to succeed. Signed-off-by: Greg Joyce Link: https://lore.kernel.org/r/20240216210417.3526064-2-gjoyce@linux.ibm.com Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- block/opal_proto.h | 1 + block/sed-opal.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/block/opal_proto.h b/block/opal_proto.h index b486b3ec7dc41..a50191bddbc26 100644 --- a/block/opal_proto.h +++ b/block/opal_proto.h @@ -66,6 +66,7 @@ enum opal_response_token { #define SHORT_ATOM_BYTE 0xBF #define MEDIUM_ATOM_BYTE 0xDF #define LONG_ATOM_BYTE 0xE3 +#define EMPTY_ATOM_BYTE 0xFF #define OPAL_INVAL_PARAM 12 #define OPAL_MANUFACTURED_INACTIVE 0x08 diff --git a/block/sed-opal.c b/block/sed-opal.c index 0ac5a4f3f2261..00e4d23ac49e7 100644 --- a/block/sed-opal.c +++ b/block/sed-opal.c @@ -895,16 +895,20 @@ static int response_parse(const u8 *buf, size_t length, token_length = response_parse_medium(iter, pos); else if (pos[0] <= LONG_ATOM_BYTE) /* long atom */ token_length = response_parse_long(iter, pos); + else if (pos[0] == EMPTY_ATOM_BYTE) /* empty atom */ + token_length = 1; else /* TOKEN */ token_length = response_parse_token(iter, pos); if (token_length < 0) return token_length; + if (pos[0] != EMPTY_ATOM_BYTE) + num_entries++; + pos += token_length; total -= token_length; iter++; - num_entries++; } resp->num = num_entries; -- 2.43.0