>,
	Dominique Martinet <asmadeus@codewreck.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.10.y] net/9p: fix double req put in p9_fd_cancelled
Date: Mon, 13 Oct 2025 11:09:32 -0400
Message-ID: <20251013150932.3383360-1-sashal@kernel.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <2025101019-zeppelin-polymer-aadc@gregkh>
References: <2025101019-zeppelin-polymer-aadc@gregkh>
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='kernel.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -1.2 (-)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-1.2 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [142.0.200.124 listed in list.dnswl.org]
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
 -0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from
                             envelope-from domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -11

From: Nalivayko Sergey <Sergey.Nalivayko@kaspersky.com>

[ Upstream commit 674b56aa57f9379854cb6798c3bbcef7e7b51ab7 ]

Syzkaller reports a KASAN issue as below:

general protection fault, probably for non-canonical address 0xfbd59c0000000021: 0000 [#1] PREEMPT SMP KASAN NOPTI
KASAN: maybe wild-memory-access in range [0xdead000000000108-0xdead00000000010f]
CPU: 0 PID: 5083 Comm: syz-executor.2 Not tainted 6.1.134-syzkaller-00037-g855bd1d7d838 #0
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
RIP: 0010:__list_del include/linux/list.h:114 [inline]
RIP: 0010:__list_del_entry include/linux/list.h:137 [inline]
RIP: 0010:list_del include/linux/list.h:148 [inline]
RIP: 0010:p9_fd_cancelled+0xe9/0x200 net/9p/trans_fd.c:734

Call Trace:
 <TASK>
 p9_client_flush+0x351/0x440 net/9p/client.c:614
 p9_client_rpc+0xb6b/0xc70 net/9p/client.c:734
 p9_client_version net/9p/client.c:920 [inline]
 p9_client_create+0xb51/0x1240 net/9p/client.c:1027
 v9fs_session_init+0x1f0/0x18f0 fs/9p/v9fs.c:408
 v9fs_mount+0xba/0xcb0 fs/9p/vfs_super.c:126
 legacy_get_tree+0x108/0x220 fs/fs_context.c:632
 vfs_get_tree+0x8e/0x300 fs/super.c:1573
 do_new_mount fs/namespace.c:3056 [inline]
 path_mount+0x6a6/0x1e90 fs/namespace.c:3386
 do_mount fs/namespace.c:3399 [inline]
 __do_sys_mount fs/namespace.c:3607 [inline]
 __se_sys_mount fs/namespace.c:3584 [inline]
 __x64_sys_mount+0x283/0x300 fs/namespace.c:3584
 do_syscall_x64 arch/x86/entry/common.c:51 [inline]
 do_syscall_64+0x35/0x80 arch/x86/entry/common.c:81
 entry_SYSCALL_64_after_hwframe+0x6e/0xd8

This happens because of a race condition between:

- The 9p client sending an invalid flush request and later cleaning it up;
- The 9p client in p9_read_work() canceled all pending requests.

      Thread 1                              Thread 2
    ...
    p9_client_create()
    ...
    p9_fd_create()
    ...
    p9_conn_create()
    ...
    // start Thread 2
    INIT_WORK(&m->rq, p9_read_work);
                                        p9_read_work()
    ...
    p9_client_rpc()
    ...
                                        ...
                                        p9_conn_cancel()
                                        ...
                                        spin_lock(&m->req_lock);
    ...
    p9_fd_cancelled()
    ...
                                        ...
                                        spin_unlock(&m->req_lock);
                                        // status rewrite
                                        p9_client_cb(m->client, req, REQ_STATUS_ERROR)
                                        // first remove
                                        list_del(&req->req_list);
                                        ...

    spin_lock(&m->req_lock)
    ...
    // second remove
    list_del(&req->req_list);
    spin_unlock(&m->req_lock)
  ...

Commit 74d6a5d56629 ("9p/trans_fd: Fix concurrency del of req_list in
p9_fd_cancelled/p9_read_work") fixes a concurrency issue in the 9p filesystem
client where the req_list could be deleted simultaneously by both
p9_read_work and p9_fd_cancelled functions, but for the case where req->status
equals REQ_STATUS_RCVD.

Update the check for req->status in p9_fd_cancelled to skip processing not
just received requests, but anything that is not SENT, as whatever
changed the state from SENT also removed the request from its list.

Found by Linux Verification Center (linuxtesting.org) with Syzkaller.

Fixes: afd8d6541155 ("9P: Add cancelled() to the transport functions.")
Cc: stable@vger.kernel.org
Signed-off-by: Nalivayko Sergey <Sergey.Nalivayko@kaspersky.com>
Message-ID: <20250715154815.3501030-1-Sergey.Nalivayko@kaspersky.com>
[updated the check from status == RECV || status == ERROR to status != SENT]
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
[ replaced m->req_lock with client->lock ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/9p/trans_fd.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c
index 63f4d2067059e..40d458c438df1 100644
--- a/net/9p/trans_fd.c
+++ b/net/9p/trans_fd.c
@@ -711,10 +711,10 @@ static int p9_fd_cancelled(struct p9_client *client, struct p9_req_t *req)
 	p9_debug(P9_DEBUG_TRANS, "client %p req %p\n", client, req);
 
 	spin_lock(&client->lock);
-	/* Ignore cancelled request if message has been received
-	 * before lock.
-	 */
-	if (req->status == REQ_STATUS_RCVD) {
+	/* Ignore cancelled request if status changed since the request was
+	 * processed in p9_client_flush()
+	*/
+	if (req->status != REQ_STATUS_SENT) {
 		spin_unlock(&client->lock);
 		return 0;
 	}
-- 
2.51.0



From - Mon Oct 13 15:55:47 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-183866-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id QA6gDKH86GisWjUAYBR5ng
	(envelope-from <stable+bounces-183866-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Fri, 10 Oct 2025 12:31:29 +0000
Return-path: <stable+bounces-183866-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Fri, 10 Oct 2025 12:31:29 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-183866-hi=josie.lol@vger.kernel.org>)
	id 1v7CHP-0000000FV0z-3jfq
	for hi@josie.lol;
	Fri, 10 Oct 2025 12:31:29 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id 5BCA9188467D
	for <hi@josie.lol>; Fri, 10 Oct 2025 12:31:50 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 175F63594A;
	Fri, 10 Oct 2025 12:31:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="j2NzuYbF"
X-Original-To: stable@vger.kernel.org
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 E66FC25771
	for <stable@vger.kernel.org>; Fri, 10 Oct 2025 12:31:22 +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=1760099483; cv=none; b=Agm0D2ggeBpHFbr7IUWR1EO4asuVSydhfoZQWTOzGwd6sU8E1CSQKL2g9t3rKmGTKUPVxP/R+7fFa4+ycZRPmTGyRq9wYi+Gj0DFGp2xAlCmBWa48NecIDf9fz65NrHP/QltRUlBAjktZzq6p40rw34M6xVxK/LKj3vpLWNZon8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760099483; c=relaxed/simple;
	bh=DMNBg9eXTTZzI9TgFMAyZf7iN0tI7LYqrLm/nhKyF+s=;
	h=Subject:To:Cc:From:Date:Message-ID:MIME-Version:Content-Type; b=rl0y1T4uyXiV7ZhifIzegBPygbGUHydXCj3lxYxk0gJ3acKcFpSNBdfysmlUJbYAE4NvZ9suEVIKP51a84eE5Savw35QoFaGh0bZkdFdIgnQQk9OZXuMLCuxadNOqjRapz9E24/FSJFwDLeMsqRIjpCdMx2i74fb1NWHV4Gppxw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=j2NzuYbF; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C15F4C4CEF1;
	Fri, 10 Oct 2025 12:31:21 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760099482;
	bh=DMNBg9eXTTZzI9TgFMAyZf7iN0tI7LYqrLm/nhKyF+s=;
	h=Subject:To:Cc:From:Date:From;
	b=j2NzuYbFL4L2KIaKtBPyzfG7SAOWXqDgr9wvlZTigEA0qZt70TsmcORh3eEJbd/7N
	 /Qn0DF4jy+7iUXguGpqnIut1IX7SnLMZjzfN8Hlh+wS3O7/Pw8CBunppGEgDrUQL8G
	 dAg9+Dr1khw6HnQ/FyjFQCnPEoNqRIwvGDfp8Qww=
Subject: FAILED: patch "[PATCH] net/9p: fix double req put in p9_fd_cancelled" failed to apply to 5.10-stable tree
To: Sergey.Nalivayko@kaspersky.com,asmadeus@codewreck.org
Cc: <stable@vger.kernel.org>
From: <gregkh@linuxfoundation.org>
Date: Fri, 10 Oct 2025 14:31:19 +0200
Message-ID: <2025101019-zeppelin-polymer-aadc@gregkh>
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=ANSI_X3.4-1968
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -2.3 (--)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-2.3 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
                             medium trust
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.4 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -22


The patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.

To reproduce the conflict and resubmit, you may use the following commands:

git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.10.y
git checkout FETCH_HEAD
git cherry-pick -x 674b56aa57f9379854cb6798c3bbcef7e7b51ab7
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable@vger.kernel.org>' --in-reply-to '2025101019-zeppelin-polymer-aadc@gregkh' --subject-prefix 'PATCH 5.10.y' HEAD^..

Possible dependencies:



thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

>From 674b56aa57f9379854cb6798c3bbcef7e7b51ab7 Mon Sep 17 00:00:00 2001
From: Nalivayko Sergey <Sergey.Nalivayko@kaspersky.com>
Date: Tue, 15 Jul 2025 18:48:15 +0300
Subject: [PATCH] net/9p: fix double req put in p9_fd_cancelled

Syzkaller reports a KASAN issue as below:

general protection fault, probably for non-canonical address 0xfbd59c0000000021: 0000 [#1] PREEMPT SMP KASAN NOPTI
KASAN: maybe wild-memory-access in range [0xdead000000000108-0xdead00000000010f]
CPU: 0 PID: 5083 Comm: syz-executor.2 Not tainted 6.1.134-syzkaller-00037-g855bd1d7d838 #0
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
RIP: 0010:__list_del include/linux/list.h:114 [inline]
RIP: 0010:__list_del_entry include/linux/list.h:137 [inline]
RIP: 0010:list_del include/linux/list.h:148 [inline]
RIP: 0010:p9_fd_cancelled+0xe9/0x200 net/9p/trans_fd.c:734

Call Trace:
 <TASK>
 p9_client_flush+0x351/0x440 net/9p/client.c:614
 p9_client_rpc+0xb6b/0xc70 net/9p/client.c:734
 p9_client_version net/9p/client.c:920 [inline]
 p9_client_create+0xb51/0x1240 net/9p/client.c:1027
 v9fs_session_init+0x1f0/0x18f0 fs/9p/v9fs.c:408
 v9fs_mount+0xba/0xcb0 fs/9p/vfs_super.c:126
 legacy_get_tree+0x108/0x220 fs/fs_context.c:632
 vfs_get_tree+0x8e/0x300 fs/super.c:1573
 do_new_mount fs/namespace.c:3056 [inline]
 path_mount+0x6a6/0x1e90 fs/namespace.c:3386
 do_mount fs/namespace.c:3399 [inline]
 __do_sys_mount fs/namespace.c:3607 [inline]
 __se_sys_mount fs/namespace.c:3584 [inline]
 __x64_sys_mount+0x283/0x300 fs/namespace.c:3584
 do_syscall_x64 arch/x86/entry/common.c:51 [inline]
 do_syscall_64+0x35/0x80 arch/x86/entry/common.c:81
 entry_SYSCALL_64_after_hwframe+0x6e/0xd8

This happens because of a race condition between:

- The 9p client sending an invalid flush request and later cleaning it up;
- The 9p client in p9_read_work() canceled all pending requests.

      Thread 1                              Thread 2
    ...
    p9_client_create()
    ...
    p9_fd_create()
    ...
    p9_conn_create()
    ...
    // start Thread 2
    INIT_WORK(&m->rq, p9_read_work);
                                        p9_read_work()
    ...
    p9_client_rpc()
    ...
                                        ...
                                        p9_conn_cancel()
                                        ...
                                        spin_lock(&m->req_lock);
    ...
    p9_fd_cancelled()
    ...
                                        ...
                                        spin_unlock(&m->req_lock);
                                        // status rewrite
                                        p9_client_cb(m->client, req, REQ_STATUS_ERROR)
                                        // first remove
                                        list_del(&req->req_list);
                                        ...

    spin_lock(&m->req_lock)
    ...
    // second remove
    list_del(&req->req_list);
    spin_unlock(&m->req_lock)
  ...

Commit 74d6a5d56629 ("9p/trans_fd: Fix concurrency del of req_list in
p9_fd_cancelled/p9_read_work") fixes a concurrency issue in the 9p filesystem
client where the req_list could be deleted simultaneously by both
p9_read_work and p9_fd_cancelled functions, but for the case where req->status
equals REQ_STATUS_RCVD.

Update the check for req->status in p9_fd_cancelled to skip processing not
just received requests, but anything that is not SENT, as whatever
changed the state from SENT also removed the request from its list.

Found by Linux Verification Center (linuxtesting.org) with Syzkaller.

Fixes: afd8d6541155 ("9P: Add cancelled() to the transport functions.")
Cc: stable@vger.kernel.org
Signed-off-by: Nalivayko Sergey <Sergey.Nalivayko@kaspersky.com>
Message-ID: <20250715154815.3501030-1-Sergey.Nalivayko@kaspersky.com>
[updated the check from status == RECV || status == ERROR to status != SENT]
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>

diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c
index 339ec4e54778..8992d8bebbdd 100644
--- a/net/9p/trans_fd.c
+++ b/net/9p/trans_fd.c
@@ -726,10 +726,10 @@ static int p9_fd_cancelled(struct p9_client *client, struct p9_req_t *req)
 	p9_debug(P9_DEBUG_TRANS, "client %p req %p\n", client, req);
 
 	spin_lock(&m->req_lock);
-	/* Ignore cancelled request if message has been received
-	 * before lock.
-	 */
-	if (req->status == REQ_STATUS_RCVD) {
+	/* Ignore cancelled request if status changed since the request was
+	 * processed in p9_client_flush()
+	*/
+	if (req->status != REQ_STATUS_SENT) {
 		spin_unlock(&m->req_lock);
 		return 0;
 	}



From - Mon Oct 13 15:55:47 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-184719-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id yHKaKp4c7WjhQTwAYBR5ng
	(envelope-from <stable+bounces-184719-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:37:02 +0000
Return-path: <stable+bounces-184719-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:37:02 +0000
Received: from sv.mirrors.kernel.org ([139.178.88.99])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-184719-hi=josie.lol@vger.kernel.org>)
	id 1v8Kbe-0000000GhTJ-0snl
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:37:02 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by sv.mirrors.kernel.org (Postfix) with ESMTPS id 9252D3E5675
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:24:07 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 64D443126C1;
	Mon, 13 Oct 2025 15:10:41 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="htJcGqaF"
X-Original-To: stable@vger.kernel.org
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14])
	(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 592DC30BF72;
	Mon, 13 Oct 2025 15:10:39 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
	t=1760368241; cv=none; b=VAA6ZPQs/HC4NE2LhnyIPRZKb2I0azeISU3z4F3pmPjdBKrJshMFpKxC5hcMlHtgrGbbW4FscdXMOZjjXlDeLQppaW9Ld+1Ttq94xCDOnmjeSYhfaYrlahMH+OQJKWmay3NtvJs4AY1FapS8VA8Rc7KWhjTWgDtiNcrKYqw9wQI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760368241; c=relaxed/simple;
	bh=T6rkmZPK9y6R+KhcrUPhsT9aMA6EbLewStHqcb00su4=;
	h=From:To:Cc:In-Reply-To:References:Subject:Message-Id:Date:
	 MIME-Version:Content-Type; b=iCjpJtMrgHPQl7qi6/dRY0uigiLOG8sOX+zcaX78inMw6mdJUNGNP/eY6ybxYVHZl1Lv4x2B0TnpVB+P4zG6LaJnGrC6Ogj/E0isJ/t8AYCcHrioniqFU5l7hdYepF2fnRSYNGhOk85VmFevpArpogf7XYa1com5RSvoCqEKa+4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=htJcGqaF; arc=none smtp.client-ip=192.198.163.14
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1760368239; x=1791904239;
  h=from:to:cc:in-reply-to:references:subject:message-id:
   date:mime-version:content-transfer-encoding;
  bh=T6rkmZPK9y6R+KhcrUPhsT9aMA6EbLewStHqcb00su4=;
  b=htJcGqaFMHiVnQ2jZmkoSS6Bf56c3j01bILEJ2ZAvbTOhIxuVJCaxcEA
   b61TzDuC7HtSxIFsbFvBHeaL+uVCpAEMLlPR/Q98bitoKV/VcddZXwAcU
   +1HXltSJOdkxqn+fr5y+WuKXuQYOWrhyFV4bhWZ3H3G7j4qinceM2bK+s
   yygb53j2/UmY5a4+qArtWTSBfw9Mve2a/EZiYwyW/dVrYwM6PArvw/xc2
   XBKgoWHTb0w4eqKjgStIZOgLQOFETK0K7XYKK7e4M3yyxe2tjLD//sFpS
   oJxR9RZHPcAKj1m3cHlMVrKXsNK0YtbpFd3zqYiloRYMAdluG2LsTngsP
   w==;
X-CSE-ConnectionGUID: 8YOEVFqaRdiFcGXNCO4J8w==
X-CSE-MsgGUID: MnFvRrpkRDyU/Sz7OKtt3A==
X-IronPort-AV: E=McAfee;i="6800,10657,11581"; a="62546045"
X-IronPort-AV: E=Sophos;i="6.19,225,1754982000"; 
   d="scan'208";a="62546045"
Received: from fmviesa004.fm.intel.com ([10.60.135.144])
  by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Oct 2025 08:10:38 -0700
X-CSE-ConnectionGUID: KsL7c0fbTSmlIFJzzkaLcQ==
X-CSE-MsgGUID: ctslHxUvSiOYZyiW2PB8rg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.19,225,1754982000"; 
   d="scan'208";a="186915218"
Received: from ijarvine-mobl1.ger.corp.intel.com (HELO localhost) ([10.245.244.77])
  by fmviesa004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Oct 2025 08:10:35 -0700
From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>
To: Hans de Goede <hansg@kernel.org>, Armin Wolf <W_Armin@gmx.de>, 
 Kurt Borja <kuurtb@gmail.com>
Cc: platform-driver-x86@vger.kernel.org, Dell.Client.Kernel@dell.com, 
 linux-kernel@vger.kernel.org, stable@vger.kernel.org, 
 Gal Hammer <galhammer@gmail.com>
In-Reply-To: <20251013-sleep-fix-v2-1-1ad8bdb79585@gmail.com>
References: <20251013-sleep-fix-v2-1-1ad8bdb79585@gmail.com>
Subject: Re: [PATCH v2] platform/x86: alienware-wmi-wmax: Fix null pointer
 derefence in sleep handlers
Message-Id: <176036823039.2473.15648931584117338012.b4-ty@linux.intel.com>
Date: Mon, 13 Oct 2025 18:10:30 +0300
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-Mailer: b4 0.13.0
X-DKIM: signer='intel.com' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-DKIM: signer='@intel.com' status='pass' reason=''
X-Spam-Score: 0.5 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.5 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: intel.com]
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [139.178.88.99 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 5

On Mon, 13 Oct 2025 00:26:26 -0500, Kurt Borja wrote:

> Initialize `awcc` with empty quirks to avoid a null pointer dereference
> in sleep handlers for devices without the AWCC interface.
> 
> This also allows some code simplification in alienware_wmax_wmi_init().
> 
> 


Thank you for your contribution, it has been applied to my local
review-ilpo-fixes branch. Note it will show up in the public
platform-drivers-x86/review-ilpo-fixes branch only once I've pushed my
local branch there, which might take a while.

The list of commits applied:
[1/1] platform/x86: alienware-wmi-wmax: Fix null pointer derefence in sleep handlers
      commit: 5ae9382ac3c56d044ed065d0ba6d8c42139a8f98

--
 i.



From - Mon Oct 13 15:55:47 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-184128-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id 4FuVGpmN7Gj90yoAYBR5ng
	(envelope-from <stable+bounces-184128-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 05:26:49 +0000
Return-path: <stable+bounces-184128-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 05:26:49 +0000
Received: from sv.mirrors.kernel.org ([139.178.88.99])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-184128-hi=josie.lol@vger.kernel.org>)
	id 1v8B57-0000000DYEn-0UR2
	for hi@josie.lol;
	Mon, 13 Oct 2025 05:26:49 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by sv.mirrors.kernel.org (Postfix) with ESMTPS id 12E473B35E7
	for <hi@josie.lol>; Mon, 13 Oct 2025 05:26:48 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id D140A2D12EF;
	Mon, 13 Oct 2025 05:26:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="koPUogAc"
X-Original-To: stable@vger.kernel.org
Received: from mail-vk1-f176.google.com (mail-vk1-f176.google.com [209.85.221.176])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2B58D2C11E5
	for <stable@vger.kernel.org>; Mon, 13 Oct 2025 05:26:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.176
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
	t=1760333205; cv=none; b=HL+UIOOu1oiJUe9hQwyHIeT53of6xAgXGwUbOPl39i7okvgjZ6OqvvvQmD1dyAkm3fI9wwfjPsrVV0mDioQ5Astbk+/IiFKLZbqvMpWoG8j+bz34e67zGJFOLxSoIPHohmDnOY3mahZlrfMzELnj6gBbAqu46GhYS7n3rMmWrls=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760333205; c=relaxed/simple;
	bh=bte+/wVXcSwCx7MOPocExUhSsc8jEuDiXCklRhPJ27Q=;
	h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=OB1T0o+Qt1O20X3HstOTdCQvwBXLA5IR3pnI+rMoQqyBom7fEU2FcKSt3oCJ2V5ZO1uoZ1jJ7q4bNE9CirDDG6i7KcUMM4mjASsX4SmfDtijnWzgO7N49klGWBiwccmIUx2Sb2ODfd5GigjeGMLprzXaNNCMpGHFRVZVH9F+L8I=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=koPUogAc; arc=none smtp.client-ip=209.85.221.176
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-vk1-f176.google.com with SMTP id 71dfb90a1353d-54bbaca0ee5so1171911e0c.3
        for <stable@vger.kernel.org>; Sun, 12 Oct 2025 22:26:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1760333203; x=1760938003; darn=vger.kernel.org;
        h=cc:to:message-id:content-transfer-encoding:mime-version:subject
         :date:from:from:to:cc:subject:date:message-id:reply-to;
        bh=Vf/bbB2S5/yiMGyiJS9WX49wXVFc70s9KvXRbsVke5k=;
        b=koPUogAcFjaXU0mvqo1vdCrhXDgRQoj/+6lZZUDDcGugQ7pgKKYKqje597SY4/n0Qq
         1+0s9JckCGE+gJ4/V4lPquso5oWb17zVF/tJkJB/NIR0U7/pgMtXV31427CHTeWPpYqQ
         vl2M/CcInNEif7Iu3UMOl++44yrsmrS6+E4GeHcIvZCyuLCbZsrcr0eQtcnJONdtH5Lg
         GoJ/0BogwAWJHoUO9ZpiFrZEvdE4nwhI1VDHhT4iN7GvelSIaSaTYfSYZMCygYnpuZPX
         Frc0Fz98m6jR+Cve3rJaQnqyy9gNBdTvNhCRVAGY1kqNAlIcDdzp4UGPhGdcAUuG4duP
         DalA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1760333203; x=1760938003;
        h=cc:to:message-id:content-transfer-encoding:mime-version:subject
         :date:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=Vf/bbB2S5/yiMGyiJS9WX49wXVFc70s9KvXRbsVke5k=;
        b=MYISdDUJEq23oqpKXKrnjWI4D4+i+LUZ+5I3XpBag3natlekGNk6GFFcaH2j0kmWEJ
         aMYyoqXGV6pe4iQNjpZuXg0fzMgywRC2h0e0X7XLkLEeeS7pl/AnPgMInryudyOTg8CB
         vrOpvaTQpbKrc2y+P+PFE8nm+w6bQTmniiHRY1OKaFwBUF2pPAHaEj4Yx4DP8VBEBLlb
         cTz4xgPmJSuxlhjYloulYlJPaFuahO3cM7VO1OBVNywCQedhz/Ovy1C62KHdv/DuOs9U
         G2vVVp+n7a16j32SipF7ue/uLr9EaqjBN1KeCi9b7JRRgKQl41xoyIW0oKPo8AzmBBcU
         eaRw==
X-Forwarded-Encrypted: i=1; AJvYcCWp8Pb8DF5ta4QxLZHTCNNHJ7t0Z4tPwB/C22BSO5A973qtu3+ijVbCDGGoakKaNpANj8FCxWU=@vger.kernel.org
X-Gm-Message-State: AOJu0YyAUNhC+JY+PTUynrD3/zjwbQMkA3vzDv3jxKolyS4NZtt3OKXS
	ns7omCCQKTe8iBqQZ4eo4oBXX2n2TABUjSJ3Oxv7V/EHCXJ1WQgQMki6
X-Gm-Gg: ASbGnctPTAMMH3kPmg09pGZ1tBaKXiK2Gvw9COWz6MZLvpgWb7M/beEBmmzFJvQMUtr
	GA2FsY0uJXYInLHQ3PI+hLJNhYY9s9pDOWql+LM4cDjfR+rrjmx01h8mrageHhOCWw1bYJyxSfR
	zUIE+pLkJNn0nDTRwQpfDdQPk1+hkxQ6GUOQz194h56BWuJgNj9tEQDWjdUbItZMmmWz43XSega
	5gdOk8AyK+988z9grodhSkw9MhLROu20A60KbmVjqz9vFJ+bC9nxqzZg6UxKBCOoOvZP2P4p38U
	2jrRK3bSyHaFezovuZsR83JJfV8WygO2UtYHQoPw6iXE5PPFyR7u78KMmiRDRpd/WbJ661Ig5u6
	rjorlJTBgUZUaN68p2h/tXiPxIrp9tfRfr96FDNfAJPs=
X-Google-Smtp-Source: AGHT+IHxXC+pCZQx+aXV0IlhjLPkLiyhSlWgyNUpi8Iml6vF4L9jhh0Rvj5DdpwJ8PedQvRsqfXzrg==
X-Received: by 2002:a05:6122:2a0d:b0:554:afe3:1fb1 with SMTP id 71dfb90a1353d-554b8cf023dmr7141600e0c.14.1760333203045;
        Sun, 12 Oct 2025 22:26:43 -0700 (PDT)
Received: from [192.168.100.70] ([2800:bf0:82:3d2:875c:6c76:e06b:3095])
        by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-554d80a456csm2823171e0c.14.2025.10.12.22.26.41
        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
        Sun, 12 Oct 2025 22:26:42 -0700 (PDT)
From: Kurt Borja <kuurtb@gmail.com>
Date: Mon, 13 Oct 2025 00:26:26 -0500
Subject: [PATCH v2] platform/x86: alienware-wmi-wmax: Fix null pointer
 derefence in sleep handlers
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20251013-sleep-fix-v2-1-1ad8bdb79585@gmail.com>
X-B4-Tracking: v=1; b=H4sIAIGN7GgC/03MQQrDIBCF4auEWdfiGAzYVe9RsjA6TQaSGDRIS
 /DutYFCl//j8R2QKDIluDUHRMqcOKw11KUBN9l1JMG+NiipNEpUIs1Em3jyS2gvtem8N8q2UP9
 bpDqf1qOvPXHaQ3yfdMbv+lPaPyWjQGHU4BCHjpyl+7hYnq8uLNCXUj56xq9logAAAA==
X-Change-ID: 20251012-sleep-fix-5d0596dd92a3
To: Hans de Goede <hansg@kernel.org>, 
 =?utf-8?q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>, 
 Armin Wolf <W_Armin@gmx.de>
Cc: platform-driver-x86@vger.kernel.org, Dell.Client.Kernel@dell.com, 
 linux-kernel@vger.kernel.org, stable@vger.kernel.org, 
 Gal Hammer <galhammer@gmail.com>, Kurt Borja <kuurtb@gmail.com>
X-Mailer: b4 0.14.2
X-Developer-Signature: v=1; a=openpgp-sha256; l=2073; i=kuurtb@gmail.com;
 h=from:subject:message-id; bh=bte+/wVXcSwCx7MOPocExUhSsc8jEuDiXCklRhPJ27Q=;
 b=owGbwMvMwCUmluBs8WX+lTTG02pJDBlveifKcc/+nSOSsjfYylpj8yOhFKW5b119Os6ohc79N
 l93wV/mjlIWBjEuBlkxRZb2hEXfHkXlvfU7EHofZg4rE8gQBi5OAZjI52uMDCs2x3aqxHp/169R
 v/Bx8tVU/YU7ArkdNa/7VL67tj/Z0prhf4ik59GDG3/LRu/9KNXfdWJOwlGbyK9/vnYX1z5WUnd
 NYwcA
X-Developer-Key: i=kuurtb@gmail.com; a=openpgp;
 fpr=54D3BE170AEF777983C3C63B57E3B6585920A69A
X-DKIM: signer='gmail.com' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.4 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.4 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [139.178.88.99 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider
                             [kuurtb[at]gmail.com]
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
  0.0 FREEMAIL_FORGED_FROMDOMAIN 2nd level domains in From and
                             EnvelopeFrom freemail headers are
                             different
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
SpamTally: Final spam score: 4

Initialize `awcc` with empty quirks to avoid a null pointer dereference
in sleep handlers for devices without the AWCC interface.

This also allows some code simplification in alienware_wmax_wmi_init().

Cc: stable@vger.kernel.org
Reported-by: Gal Hammer <galhammer@gmail.com>
Tested-by: Gal Hammer <galhammer@gmail.com>
Fixes: 07ac275981b1 ("platform/x86: alienware-wmi-wmax: Add support for manual fan control")
Signed-off-by: Kurt Borja <kuurtb@gmail.com>
---
Changes in v2:
- Little logic mistake in the `force_gmode` path... (oops)
- Link to v1: https://lore.kernel.org/r/20251013-sleep-fix-v1-1-92bc11b6ecae@gmail.com
---
 drivers/platform/x86/dell/alienware-wmi-wmax.c | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

diff --git a/drivers/platform/x86/dell/alienware-wmi-wmax.c b/drivers/platform/x86/dell/alienware-wmi-wmax.c
index 31f9643a6a3b5c2eb74b089dc071964bd6df8b43..cefeef84d85d111e9cc15ebed35fb83f03c41c7c 100644
--- a/drivers/platform/x86/dell/alienware-wmi-wmax.c
+++ b/drivers/platform/x86/dell/alienware-wmi-wmax.c
@@ -393,7 +393,7 @@ static const enum platform_profile_option awcc_mode_to_platform_profile[AWCC_PRO
 	[AWCC_PROFILE_LEGACY_PERFORMANCE]		= PLATFORM_PROFILE_PERFORMANCE,
 };
 
-static struct awcc_quirks *awcc;
+static struct awcc_quirks *awcc = &empty_quirks;
 
 /*
  *	The HDMI mux sysfs node indicates the status of the HDMI input mux.
@@ -1680,22 +1680,14 @@ int __init alienware_wmax_wmi_init(void)
 	if (id)
 		awcc = id->driver_data;
 
-	if (force_hwmon) {
-		if (!awcc)
-			awcc = &empty_quirks;
-
+	if (force_hwmon)
 		awcc->hwmon = true;
-	}
-
-	if (force_platform_profile) {
-		if (!awcc)
-			awcc = &empty_quirks;
 
+	if (force_platform_profile)
 		awcc->pprof = true;
-	}
 
 	if (force_gmode) {
-		if (awcc)
+		if (awcc->pprof)
 			awcc->gmode = true;
 		else
 			pr_warn("force_gmode requires platform profile support\n");

---
base-commit: 3ed17349f18774c24505b0c21dfbd3cc4f126518
change-id: 20251012-sleep-fix-5d0596dd92a3
-- 
 ~ Kurt



From - Mon Oct 13 15:55:47 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-184741-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id qJHHHPEg7Wg2BT4AYBR5ng
	(envelope-from <stable+bounces-184741-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:55:29 +0000
Return-path: <stable+bounces-184741-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:55:29 +0000
Received: from dfw.mirrors.kernel.org ([142.0.200.124])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-184741-hi=josie.lol@vger.kernel.org>)
	id 1v8KtV-0000000HKAI-0Nh2
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:55:29 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by dfw.mirrors.kernel.org (Postfix) with ESMTPS id F3BEA540106
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:24:47 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 4C4D530C634;
	Mon, 13 Oct 2025 15:11:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="uO/8wLJ4"
X-Original-To: stable@vger.kernel.org
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 2410A2FF642
	for <stable@vger.kernel.org>; Mon, 13 Oct 2025 15:11:42 +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=1760368303; cv=none; b=Jn2zPVeAqChsGlClGzf8OzulOn3868x3IaQzbgI2pvLBDz5u9XW8vFp6YA/CQ/RI6WRnb30vhU5+2mo5OsH6lH3pD0lD8xJNgIzRCHe5AM0PUGTL3H8YYXC3JT0ot9Sd1PSFYA81ksdYKLPp7o75KoQq2/xhSj0jSIpjZCr4oPU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760368303; c=relaxed/simple;
	bh=Vm1mwbp59LdzZ9OFbFKl+sLTDRpySWkcCDczY030Uws=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=sT/CQ/XEcKmlb0r4HtvcwffftIBhsYQr0esQRTRXnqSZk6uZ+Pp2Uh2xXlgjALUg+kuHeSMsD0cIdesK2GAmHCy7BZocq5u4CBDzkHYZO4hTvKjeuMDy6g1sqg8m82fS7s2SVBtGPkwunDnt2xlhZYxxbnlzCUAmH+stbhCGLS0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uO/8wLJ4; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 14C2AC4CEFE;
	Mon, 13 Oct 2025 15:11:41 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1760368302;
	bh=Vm1mwbp59LdzZ9OFbFKl+sLTDRpySWkcCDczY030Uws=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=uO/8wLJ4p3kCOOsHSRvP1RzwBGn1ZwbXG3EQ5TWBbgJTqhm9HVFVaijy1Vc+iKgRO
	 O3fV56JvvoVos3QlWVUVX5pu0wrtDDP2/davwwzKH7MqnRkp8pgOPFM44P9HPNlF4N
	 rr8ocrtYYEApUH2HLOJWmgxoGZspGV9GzOfWL5ltCrPvqZOWn6cR/dOzLlzzYhkmpg
	 gBoUklzkWGXVVkFu5DZ+LR3cxK6LC7pWqsIA78L+UKq5KIoiIaNnSDX+Mb/PuzeB9w
	 G5gBcdh/hBvrEe3txPG5hyk20tUXOX9CjAPNkBym4/M8mVbZtcqJUP0IHRUvAI8C72
	 mQduXo7a/YfFg==
From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org
Cc: Sean Christopherson <seanjc@google.com>,
	syzbot+cc2032ba16cc2018ca25@syzkaller.appspotmail.com,
	Jim Mattson <jmattson@google.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.1.y] KVM: x86: Don't (re)check L1 intercepts when completing userspace I/O
Date: Mon, 13 Oct 2025 11:11:40 -0400
Message-ID: <20251013151140.3383954-1-sashal@kernel.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <2025101005-married-company-a3fc@gregkh>
References: <2025101005-married-company-a3fc@gregkh>
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='kernel.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -1.2 (-)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-1.2 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [142.0.200.124 listed in list.dnswl.org]
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
 -0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from
                             envelope-from domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -11

From: Sean Christopherson <seanjc@google.com>

[ Upstream commit e750f85391286a4c8100275516973324b621a269 ]

When completing emulation of instruction that generated a userspace exit
for I/O, don't recheck L1 intercepts as KVM has already finished that
phase of instruction execution, i.e. has already committed to allowing L2
to perform I/O.  If L1 (or host userspace) modifies the I/O permission
bitmaps during the exit to userspace,  KVM will treat the access as being
intercepted despite already having emulated the I/O access.

Pivot on EMULTYPE_NO_DECODE to detect that KVM is completing emulation.
Of the three users of EMULTYPE_NO_DECODE, only complete_emulated_io() (the
intended "recipient") can reach the code in question.  gp_interception()'s
use is mutually exclusive with is_guest_mode(), and
complete_emulated_insn_gp() unconditionally pairs EMULTYPE_NO_DECODE with
EMULTYPE_SKIP.

The bad behavior was detected by a syzkaller program that toggles port I/O
interception during the userspace I/O exit, ultimately resulting in a WARN
on vcpu->arch.pio.count being non-zero due to KVM no completing emulation
of the I/O instruction.

  WARNING: CPU: 23 PID: 1083 at arch/x86/kvm/x86.c:8039 emulator_pio_in_out+0x154/0x170 [kvm]
  Modules linked in: kvm_intel kvm irqbypass
  CPU: 23 UID: 1000 PID: 1083 Comm: repro Not tainted 6.16.0-rc5-c1610d2d66b1-next-vm #74 NONE
  Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
  RIP: 0010:emulator_pio_in_out+0x154/0x170 [kvm]
  PKRU: 55555554
  Call Trace:
   <TASK>
   kvm_fast_pio+0xd6/0x1d0 [kvm]
   vmx_handle_exit+0x149/0x610 [kvm_intel]
   kvm_arch_vcpu_ioctl_run+0xda8/0x1ac0 [kvm]
   kvm_vcpu_ioctl+0x244/0x8c0 [kvm]
   __x64_sys_ioctl+0x8a/0xd0
   do_syscall_64+0x5d/0xc60
   entry_SYSCALL_64_after_hwframe+0x4b/0x53
   </TASK>

Reported-by: syzbot+cc2032ba16cc2018ca25@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/all/68790db4.a00a0220.3af5df.0020.GAE@google.com
Fixes: 8a76d7f25f8f ("KVM: x86: Add x86 callback for intercept check")
Cc: stable@vger.kernel.org
Cc: Jim Mattson <jmattson@google.com>
Link: https://lore.kernel.org/r/20250715190638.1899116-1-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
[ is_guest_mode() was open coded ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/x86/kvm/emulate.c     | 11 ++++-------
 arch/x86/kvm/kvm_emulate.h |  2 +-
 arch/x86/kvm/x86.c         |  9 ++++++++-
 3 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 4a43261d25a2a..0cb97e570f63e 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -5478,12 +5478,11 @@ void init_decode_cache(struct x86_emulate_ctxt *ctxt)
 	ctxt->mem_read.end = 0;
 }
 
-int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
+int x86_emulate_insn(struct x86_emulate_ctxt *ctxt, bool check_intercepts)
 {
 	const struct x86_emulate_ops *ops = ctxt->ops;
 	int rc = X86EMUL_CONTINUE;
 	int saved_dst_type = ctxt->dst.type;
-	unsigned emul_flags;
 
 	ctxt->mem_read.pos = 0;
 
@@ -5497,8 +5496,6 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
 		rc = emulate_ud(ctxt);
 		goto done;
 	}
-
-	emul_flags = ctxt->ops->get_hflags(ctxt);
 	if (unlikely(ctxt->d &
 		     (No64|Undefined|Sse|Mmx|Intercept|CheckPerm|Priv|Prot|String))) {
 		if ((ctxt->mode == X86EMUL_MODE_PROT64 && (ctxt->d & No64)) ||
@@ -5532,7 +5529,7 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
 				fetch_possible_mmx_operand(&ctxt->dst);
 		}
 
-		if (unlikely(emul_flags & X86EMUL_GUEST_MASK) && ctxt->intercept) {
+		if (unlikely(check_intercepts) && ctxt->intercept) {
 			rc = emulator_check_intercept(ctxt, ctxt->intercept,
 						      X86_ICPT_PRE_EXCEPT);
 			if (rc != X86EMUL_CONTINUE)
@@ -5561,7 +5558,7 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
 				goto done;
 		}
 
-		if (unlikely(emul_flags & X86EMUL_GUEST_MASK) && (ctxt->d & Intercept)) {
+		if (unlikely(check_intercepts) && (ctxt->d & Intercept)) {
 			rc = emulator_check_intercept(ctxt, ctxt->intercept,
 						      X86_ICPT_POST_EXCEPT);
 			if (rc != X86EMUL_CONTINUE)
@@ -5615,7 +5612,7 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
 
 special_insn:
 
-	if (unlikely(emul_flags & X86EMUL_GUEST_MASK) && (ctxt->d & Intercept)) {
+	if (unlikely(check_intercepts) && (ctxt->d & Intercept)) {
 		rc = emulator_check_intercept(ctxt, ctxt->intercept,
 					      X86_ICPT_POST_MEMACCESS);
 		if (rc != X86EMUL_CONTINUE)
diff --git a/arch/x86/kvm/kvm_emulate.h b/arch/x86/kvm/kvm_emulate.h
index 89246446d6aa9..034cafba2cc62 100644
--- a/arch/x86/kvm/kvm_emulate.h
+++ b/arch/x86/kvm/kvm_emulate.h
@@ -517,7 +517,7 @@ bool x86_page_table_writing_insn(struct x86_emulate_ctxt *ctxt);
 #define EMULATION_RESTART 1
 #define EMULATION_INTERCEPTED 2
 void init_decode_cache(struct x86_emulate_ctxt *ctxt);
-int x86_emulate_insn(struct x86_emulate_ctxt *ctxt);
+int x86_emulate_insn(struct x86_emulate_ctxt *ctxt, bool check_intercepts);
 int emulator_task_switch(struct x86_emulate_ctxt *ctxt,
 			 u16 tss_selector, int idt_index, int reason,
 			 bool has_error_code, u32 error_code);
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 11ca05d830e72..b349e1fbf9dbc 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -8976,7 +8976,14 @@ int x86_emulate_instruction(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa,
 		ctxt->exception.address = 0;
 	}
 
-	r = x86_emulate_insn(ctxt);
+	/*
+	 * Check L1's instruction intercepts when emulating instructions for
+	 * L2, unless KVM is re-emulating a previously decoded instruction,
+	 * e.g. to complete userspace I/O, in which case KVM has already
+	 * checked the intercepts.
+	 */
+	r = x86_emulate_insn(ctxt, is_guest_mode(vcpu) &&
+				   !(emulation_type & EMULTYPE_NO_DECODE));
 
 	if (r == EMULATION_INTERCEPTED)
 		return 1;
-- 
2.51.0



From - Mon Oct 13 15:55:47 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-183868-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id 4CxwHn/96GimWjUAYBR5ng
	(envelope-from <stable+bounces-183868-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Fri, 10 Oct 2025 12:35:11 +0000
Return-path: <stable+bounces-183868-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Fri, 10 Oct 2025 12:35:11 +0000
Received: from sv.mirrors.kernel.org ([139.178.88.99])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-183868-hi=josie.lol@vger.kernel.org>)
	id 1v7CL0-0000000FcHv-3pgG
	for hi@josie.lol;
	Fri, 10 Oct 2025 12:35:11 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by sv.mirrors.kernel.org (Postfix) with ESMTPS id CD390425233
	for <hi@josie.lol>; Fri, 10 Oct 2025 12:35:09 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 479F51F3BAC;
	Fri, 10 Oct 2025 12:35:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="tBPVPqkL"
X-Original-To: stable@vger.kernel.org
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 2171D1BC2A
	for <stable@vger.kernel.org>; Fri, 10 Oct 2025 12:35:08 +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=1760099709; cv=none; b=AOhmPdHTXIpi4WrCudrAFVdF5OHfrF/L3VZYZ7Uojg21sVC5bhgItED/NvWnpnx+tge+LBW4t6pjVVcHYyWzH2IA+DlNlAQBarSkIN3KYw6+cKQr5dwiT1b3hHVamUKC9h8V+hmF63Hqf4+wK6IY0OeTWdUIyekOLCSWeogIRRk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760099709; c=relaxed/simple;
	bh=PvP03BF7JfcPbLCB4YW57suMHyVX9nufNxDy2eh8ntg=;
	h=Subject:To:Cc:From:Date:Message-ID:MIME-Version:Content-Type; b=YTsdOGvWzRtslec3R+C/9SbRWrQBJ9ufHEJUixQ8GvWQUczTF88gpWtYcyZw4tRLgylkx4jBpKyJf7Ykd1wx02Vk8MUtCGSiUk1191yaPBudg5VAs+p1c0fZ4FjpOVq9yRxbF42jAmlb0ROw0DqMZ04Lep5jDm0JdnVHjyTRfe4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=tBPVPqkL; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3BE3FC4CEF1;
	Fri, 10 Oct 2025 12:35:08 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760099708;
	bh=PvP03BF7JfcPbLCB4YW57suMHyVX9nufNxDy2eh8ntg=;
	h=Subject:To:Cc:From:Date:From;
	b=tBPVPqkLsTrIJlmZ4gtMEMfT8ubzVD5RzhAVMWMvHWRP6HcesAMeDmlEefLduZFHy
	 HkZdcbKJkZnm4eQSbJJ3HQctqBDGFHxXMK9Fhqh4aXXlr7blR9Ttz4LzjPj4R3WLuE
	 0bA3l55nzdEdrLXqxIMxgAOu+67B/0SBO3AELXRY=
Subject: FAILED: patch "[PATCH] KVM: x86: Don't (re)check L1 intercepts when completing" failed to apply to 6.1-stable tree
To: seanjc@google.com,jmattson@google.com
Cc: <stable@vger.kernel.org>
From: <gregkh@linuxfoundation.org>
Date: Fri, 10 Oct 2025 14:35:06 +0200
Message-ID: <2025101005-married-company-a3fc@gregkh>
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=ANSI_X3.4-1968
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -0.0 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-0.0 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [139.178.88.99 listed in list.dnswl.org]
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.4 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 0


The patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.

To reproduce the conflict and resubmit, you may use the following commands:

git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x e750f85391286a4c8100275516973324b621a269
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable@vger.kernel.org>' --in-reply-to '2025101005-married-company-a3fc@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..

Possible dependencies:



thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

>From e750f85391286a4c8100275516973324b621a269 Mon Sep 17 00:00:00 2001
From: Sean Christopherson <seanjc@google.com>
Date: Tue, 15 Jul 2025 12:06:38 -0700
Subject: [PATCH] KVM: x86: Don't (re)check L1 intercepts when completing
 userspace I/O

When completing emulation of instruction that generated a userspace exit
for I/O, don't recheck L1 intercepts as KVM has already finished that
phase of instruction execution, i.e. has already committed to allowing L2
to perform I/O.  If L1 (or host userspace) modifies the I/O permission
bitmaps during the exit to userspace,  KVM will treat the access as being
intercepted despite already having emulated the I/O access.

Pivot on EMULTYPE_NO_DECODE to detect that KVM is completing emulation.
Of the three users of EMULTYPE_NO_DECODE, only complete_emulated_io() (the
intended "recipient") can reach the code in question.  gp_interception()'s
use is mutually exclusive with is_guest_mode(), and
complete_emulated_insn_gp() unconditionally pairs EMULTYPE_NO_DECODE with
EMULTYPE_SKIP.

The bad behavior was detected by a syzkaller program that toggles port I/O
interception during the userspace I/O exit, ultimately resulting in a WARN
on vcpu->arch.pio.count being non-zero due to KVM no completing emulation
of the I/O instruction.

  WARNING: CPU: 23 PID: 1083 at arch/x86/kvm/x86.c:8039 emulator_pio_in_out+0x154/0x170 [kvm]
  Modules linked in: kvm_intel kvm irqbypass
  CPU: 23 UID: 1000 PID: 1083 Comm: repro Not tainted 6.16.0-rc5-c1610d2d66b1-next-vm #74 NONE
  Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
  RIP: 0010:emulator_pio_in_out+0x154/0x170 [kvm]
  PKRU: 55555554
  Call Trace:
   <TASK>
   kvm_fast_pio+0xd6/0x1d0 [kvm]
   vmx_handle_exit+0x149/0x610 [kvm_intel]
   kvm_arch_vcpu_ioctl_run+0xda8/0x1ac0 [kvm]
   kvm_vcpu_ioctl+0x244/0x8c0 [kvm]
   __x64_sys_ioctl+0x8a/0xd0
   do_syscall_64+0x5d/0xc60
   entry_SYSCALL_64_after_hwframe+0x4b/0x53
   </TASK>

Reported-by: syzbot+cc2032ba16cc2018ca25@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/all/68790db4.a00a0220.3af5df.0020.GAE@google.com
Fixes: 8a76d7f25f8f ("KVM: x86: Add x86 callback for intercept check")
Cc: stable@vger.kernel.org
Cc: Jim Mattson <jmattson@google.com>
Link: https://lore.kernel.org/r/20250715190638.1899116-1-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>

diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 1349e278cd2a..542d3664afa3 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -5107,12 +5107,11 @@ void init_decode_cache(struct x86_emulate_ctxt *ctxt)
 	ctxt->mem_read.end = 0;
 }
 
-int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
+int x86_emulate_insn(struct x86_emulate_ctxt *ctxt, bool check_intercepts)
 {
 	const struct x86_emulate_ops *ops = ctxt->ops;
 	int rc = X86EMUL_CONTINUE;
 	int saved_dst_type = ctxt->dst.type;
-	bool is_guest_mode = ctxt->ops->is_guest_mode(ctxt);
 
 	ctxt->mem_read.pos = 0;
 
@@ -5160,7 +5159,7 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
 				fetch_possible_mmx_operand(&ctxt->dst);
 		}
 
-		if (unlikely(is_guest_mode) && ctxt->intercept) {
+		if (unlikely(check_intercepts) && ctxt->intercept) {
 			rc = emulator_check_intercept(ctxt, ctxt->intercept,
 						      X86_ICPT_PRE_EXCEPT);
 			if (rc != X86EMUL_CONTINUE)
@@ -5189,7 +5188,7 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
 				goto done;
 		}
 
-		if (unlikely(is_guest_mode) && (ctxt->d & Intercept)) {
+		if (unlikely(check_intercepts) && (ctxt->d & Intercept)) {
 			rc = emulator_check_intercept(ctxt, ctxt->intercept,
 						      X86_ICPT_POST_EXCEPT);
 			if (rc != X86EMUL_CONTINUE)
@@ -5243,7 +5242,7 @@ int x86_emulate_insn(struct x86_emulate_ctxt *ctxt)
 
 special_insn:
 
-	if (unlikely(is_guest_mode) && (ctxt->d & Intercept)) {
+	if (unlikely(check_intercepts) && (ctxt->d & Intercept)) {
 		rc = emulator_check_intercept(ctxt, ctxt->intercept,
 					      X86_ICPT_POST_MEMACCESS);
 		if (rc != X86EMUL_CONTINUE)
diff --git a/arch/x86/kvm/kvm_emulate.h b/arch/x86/kvm/kvm_emulate.h
index c1df5acfacaf..7b5ddb787a25 100644
--- a/arch/x86/kvm/kvm_emulate.h
+++ b/arch/x86/kvm/kvm_emulate.h
@@ -235,7 +235,6 @@ struct x86_emulate_ops {
 	void (*set_nmi_mask)(struct x86_emulate_ctxt *ctxt, bool masked);
 
 	bool (*is_smm)(struct x86_emulate_ctxt *ctxt);
-	bool (*is_guest_mode)(struct x86_emulate_ctxt *ctxt);
 	int (*leave_smm)(struct x86_emulate_ctxt *ctxt);
 	void (*triple_fault)(struct x86_emulate_ctxt *ctxt);
 	int (*set_xcr)(struct x86_emulate_ctxt *ctxt, u32 index, u64 xcr);
@@ -521,7 +520,7 @@ bool x86_page_table_writing_insn(struct x86_emulate_ctxt *ctxt);
 #define EMULATION_RESTART 1
 #define EMULATION_INTERCEPTED 2
 void init_decode_cache(struct x86_emulate_ctxt *ctxt);
-int x86_emulate_insn(struct x86_emulate_ctxt *ctxt);
+int x86_emulate_insn(struct x86_emulate_ctxt *ctxt, bool check_intercepts);
 int emulator_task_switch(struct x86_emulate_ctxt *ctxt,
 			 u16 tss_selector, int idt_index, int reason,
 			 bool has_error_code, u32 error_code);
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index a1c49bc681c4..79057622fa76 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -8470,11 +8470,6 @@ static bool emulator_is_smm(struct x86_emulate_ctxt *ctxt)
 	return is_smm(emul_to_vcpu(ctxt));
 }
 
-static bool emulator_is_guest_mode(struct x86_emulate_ctxt *ctxt)
-{
-	return is_guest_mode(emul_to_vcpu(ctxt));
-}
-
 #ifndef CONFIG_KVM_SMM
 static int emulator_leave_smm(struct x86_emulate_ctxt *ctxt)
 {
@@ -8558,7 +8553,6 @@ static const struct x86_emulate_ops emulate_ops = {
 	.guest_cpuid_is_intel_compatible = emulator_guest_cpuid_is_intel_compatible,
 	.set_nmi_mask        = emulator_set_nmi_mask,
 	.is_smm              = emulator_is_smm,
-	.is_guest_mode       = emulator_is_guest_mode,
 	.leave_smm           = emulator_leave_smm,
 	.triple_fault        = emulator_triple_fault,
 	.set_xcr             = emulator_set_xcr,
@@ -9143,7 +9137,14 @@ int x86_emulate_instruction(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa,
 		ctxt->exception.address = 0;
 	}
 
-	r = x86_emulate_insn(ctxt);
+	/*
+	 * Check L1's instruction intercepts when emulating instructions for
+	 * L2, unless KVM is re-emulating a previously decoded instruction,
+	 * e.g. to complete userspace I/O, in which case KVM has already
+	 * checked the intercepts.
+	 */
+	r = x86_emulate_insn(ctxt, is_guest_mode(vcpu) &&
+				   !(emulation_type & EMULTYPE_NO_DECODE));
 
 	if (r == EMULATION_INTERCEPTED)
 		return 1;



From - Mon Oct 13 15:55:47 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <01020199de3aeee3-eb32875d-6e14-49c4-9fab-ed84971faf72-000000@mail.web.minor-hotels.com>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id 6NYtBG4d7WjdhjcAYBR5ng
	(envelope-from <01020199de3aeee3-eb32875d-6e14-49c4-9fab-ed84971faf72-000000@mail.web.minor-hotels.com>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:40:30 +0000
Return-path: <01020199de3aeee3-eb32875d-6e14-49c4-9fab-ed84971faf72-000000@mail.web.minor-hotels.com>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:40:30 +0000
Received: from a55-83.smtp-out.eu-west-1.amazonses.com ([54.240.55.83])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <01020199de3aeee3-eb32875d-6e14-49c4-9fab-ed84971faf72-000000@mail.web.minor-hotels.com>)
	id 1v8Kez-0000000Gob8-1LyW
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:40:30 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;
	s=tdec6gyzxt74klgqfnnldheyin76fnsc; d=web.minor-hotels.com;
	t=1760370028;
	h=Date:From:To:Reply-To:Subject:Content-Type:MIME-VERSION:Message-ID;
	bh=kVnSbNIKZNAiPOxikL+D/P62aokXmNAFb743wU/1L0E=;
	b=UHYTtZ+v8sZyIKGFuYd648QCdX/l2vTwr0vhghcdO4UM0f8wMc0fWGcSFA7wids0
	vXBzxU3bvuBGtrFRYvKBO4eqfu8RLlXTwzTHES038VjgMSUg6WLtNRpHRb3hetnuq5d
	w21yPPbC2xK9PFuVLUrK5zINzyuwl8Kxy3YgdDFOHpcFDEDDrgrb2ysRmhpPjcSTzmt
	7tN3vYbTghWwLe3BspxQClw6SqtowUKk7Gs+1RLwgmSZ6KwsEUW6sNWjwvn5J3s8ubi
	yBWB2mELuL//nbJEFEV2q0MV/2Bo/GAw9ldL6TqG3ZTqlVID8PCndwI1dOg5BUB9cpo
	Cg4+mrzbtw==
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple;
	s=ihchhvubuqgjsxyuhssfvqohv7z3u4hn; d=amazonses.com; t=1760370028;
	h=Date:From:To:Reply-To:Subject:Content-Type:MIME-VERSION:Message-ID:Feedback-ID;
	bh=kVnSbNIKZNAiPOxikL+D/P62aokXmNAFb743wU/1L0E=;
	b=bTuvOfzi4VJWqndXJ8E8n+AHS24M9wBQSvF5luACQos2GW5LHXEGWRxxNbmemdh4
	h9CGtQKBUXN9hH/691MSw/Uuezk4fCll8y2DTwMoT0cKFyICeCemV69HLxxr8ftlIPC
	80q2NH5sHRSlnC52veNvNlFylL6IO7gLmdrCoblY=
Date: Mon, 13 Oct 2025 15:40:28 +0000
From: Minor Hotels <info@web.minor-hotels.com>
To: hi@josie.lol
Reply-To: Minor Hotels <no-reply@news.minor-hotels.com>
Subject: =?UTF-8?B?T25jZS1pbi1hLWxpZmV0aW1lIGV4cGVyaWVuY2VzIHRvIGV4cGxvcmUgd2l0aCBNaW5vciBIb3RlbHM=?=
Content-Type: multipart/alternative;
 boundary="yMKT1508"
MIME-VERSION: 1.0
Message-ID: <01020199de3aeee3-eb32875d-6e14-49c4-9fab-ed84971faf72-000000@eu-west-1.amazonses.com>
Feedback-ID: ::1.eu-west-1.i7fTDRRRo040McA2oZ+AXJU4ikHELwlvLz343/0ysxE=:AmazonSES
X-SES-Outgoing: 2025.10.13-54.240.55.83
X-DKIM: signer='web.minor-hotels.com' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-DKIM: signer='amazonses.com' status='pass' reason=''
X-Spam-Score: 3.2 (+++)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (3.2 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: minorhotels.com]
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [54.240.55.83 listed in list.dnswl.org]
  0.0 RCVD_IN_MSPIKE_H3      RBL: Good reputation (+3)
                             [54.240.55.83 listed in wl.mailspike.net]
  0.7 MPART_ALT_DIFF         BODY: HTML and text parts are different
  0.1 MIME_HTML_MOSTLY       BODY: Multipart message mostly text/html MIME
  1.5 HTML_MESSAGE           BODY: HTML included in message
  1.0 HTML_FONT_LOW_CONTRAST BODY: HTML font color similar or
                             identical to background
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
  0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders
  0.0 T_KAM_HTML_FONT_INVALID Test for Invalidly Named or Formatted
                             Colors in HTML
SpamTally: Final spam score: 32

--yMKT1508
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64


--yMKT1508
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: base64

PCFET0NUWVBFIEhUTUw+CjxodG1sPgoKPGhlYWQ+Cgk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cgk8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwg
bWF4aW11bS1zY2FsZT0xLjAsIG1pbmltdW0tc2NhbGU9MS4wLCB1c2VyLXNjYWxhYmxlPW5vIj4K
CTxtZXRhIG5hbWU9ImZvcm1hdC1kZXRlY3Rpb24iIGNvbnRlbnQ9InRlbGVwaG9uZT1ubyI+CgoJ
PHRpdGxlPk1pbm9yIEhvdGVsczwvdGl0bGU+Cgk8IS0tU3R5bGVzLS0+CQoJPHN0eWxlIHR5cGU9
InRleHQvY3NzIj4KCi8qUkVTRVRFTyovCi8qR2VuZXJhbCovCiogewoJYm94LXNpemluZzogYm9y
ZGVyLWJveDsKCWxldHRlci1zcGFjaW5nOiBub3JtYWw7CgkvKmxpbmUtaGVpZ2h0OiAxMDAlOyov
Cgltc28tbGluZS1oZWlnaHQtcnVsZTogZXhhY3RseSFpbXBvcnRhbnQ7Cn0KYm9keSB7Cglmb250
LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IAoJZm9udC1zaXplOiAxMHB4OwkKCW1hcmdpbjog
MCAhaW1wb3J0YW50OyAKCXBhZGRpbmc6IDAgIWltcG9ydGFudDsgCgl3aWR0aDogMTAwJSAhaW1w
b3J0YW50OwoJLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQgIWltcG9ydGFudDsK
CS1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlICFpbXBvcnRhbnQ7Cn0KdGFibGUuY29udGFpbmVy
IHsKCWJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7Cglmb250LWZhbWlseTogQXJpYWwsIHNhbnMt
c2VyaWY7Cglmb250LXNpemU6MTBweDsKfQoKZGl2IHsKbWFyZ2luOiAwICFpbXBvcnRhbnQ7IApw
YWRkaW5nOiAwICFpbXBvcnRhbnQ7IAoKfQoKLypPdXRsb29rKi8KdGFibGUgewoJYm9yZGVyLWNv
bGxhcHNlOiBjb2xsYXBzZTsKCW1zby10YWJsZS1sc3BhY2U6IC0xcHg7Cgltc28tdGFibGUtcnNw
YWNlOiAtMXB4Owp9CnRhYmxlIHRkIHsKCWJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Cgltc28t
bGluZS1oZWlnaHQtcnVsZTogZXhhY3RseSAhaW1wb3J0YW50Owp9CnAsIGZvbnQsIHNwYW4gewoJ
bWFyZ2luOiAwOwoJcGFkZGluZzogMDsKfQoKLypZYWhvbyBjZW50cmFyKi8KI3lpdjAxNTgxNzI2
NTYgdGFibGUgeyBtYXJnaW46MCBhdXRvO30KI3lpdjMwMjEzMDk3NzYgdGFibGUgeyBtYXJnaW46
MCBhdXRvO30KLnRocmVhZC1pdGVtLmV4cGFuZGVkIC50aHJlYWQtYm9keSAuYm9keSwgLm1zZy1i
b2R5IHsgbWFyZ2luOiAwIGF1dG87fQoKLypHbWFpbCBsaW5lLWhlaWdodCovCi5hM3MsIC5nNiB7
CiAgICBmb250OiBzbWFsbC8xLjIgQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWY7Cn0KLypFbmxh
Y2VzIG5vIG1vcmFkb3MqLwphIHtjb2xvcjogI2ZmZmZmZjt9CgphW2hyZWZePSJ0ZWwiXSwKYVto
cmVmXj0ic21zIl0gewogICAgICAgIGNvbG9yOiAjZmZmZmZmIWltcG9ydGFudDsKICAgICAgICBj
b2xvcjogI2ZmZmZmZiFpbXBvcnRhbnQ7Cn0KCi8qRW5sYWNlcyBubyBtb3JhZG9zKi8KCgouZGF0
YXByb3RlY3Rpb24gewoJY29sb3I6ICNmZmZmZmYhaW1wb3J0YW50Owp9CgovKkNvbGxlY3Rpb24q
LwouQ08gYVtocmVmXj0idGVsIl0sCi5DTyBhW2hyZWZePSJzbXMiXSB7Cgljb2xvcjogIzlkMjIz
NSAhaW1wb3J0YW50Owp9Ci5DTyBhLmJ0bjpob3ZlcnsKCWJhY2tncm91bmQtY29sb3I6ICM3ZTE1
MzMgIWltcG9ydGFudDsKfQoKCi8qQ09OVEVOSURPIE9DVUxUTyBFTiBERVNLVE9QIC0gdmlzaWJs
ZSBtb2JpbGUqLwoqW2NsYXNzPSJkZXNrdG9wSGlkZSJdLAouZGVza3RvcEhpZGUgewogICAgbWF4
LWhlaWdodDowOyAvKiBHbWFpbCovCiAgICBkaXNwbGF5Om5vbmU7IC8qIEdlbmVyaWMqLwogICAg
bXNvLWhpZGU6YWxsOyAvKiBPdXRsb29rIGNsaWVudHMqLwogICAgb3ZlcmZsb3c6aGlkZGVuOyAv
KiBHZW5lcmljICovCgl2aXNpYmlsaXR5OiBjb2xsYXBzZTsKICAgIC8qZm9udC1zaXplOjA7ICBC
ZSBjYXJlZnVsIHdpdGggdGhpcyBvbmUsIG9ubHkgdXNlIGlmIGFic29sdXRlbHkgcmVxdWlyZWQg
Ki8KfSAKCi8qKipUSVZPTEkqKiovCi5UaXZvbGkgLmNlbnR1cnlUZXh0IHNwYW4gewoJZm9udC1m
YW1pbHk6IENlbnR1cnkgR290aGljLCBDZW50dXJ5R290aGljLCBBcHBsZUdvdGhpYywgQXJpYWws
IHNhbnMtc2VyaWY7Cglmb250LXdlaWdodDogNTAwOwoJZm9udC1zdHlsZTogbm9ybWFsOwp9Ci5U
aXZvbGkgLnNpZ25hdHVyZSB7CgkJY29sb3I6ICMxMTI2M2EgIWltcG9ydGFudDsKCX0KCQouVGl2
b2xpIC51bnN1YnNjcmliZSwKLlRpdm9saSAudW5zdWJzY3JpYmUgYXsKCWNvbG9yOiAjMTEyNjNh
ICFpbXBvcnRhbnQ7Cn0KLlRpdm9saU9yYW5nZSB7Cgljb2xvcjogI0NDNzQyQzsKfQouVGl2b2xp
Qmx1ZSB7Cgljb2xvcjogIzAwMjYzZTsKfQoKCi8qKkRldmljZSBMKiovCkBtZWRpYSBvbmx5IHNj
cmVlbiBhbmQgKG1heC13aWR0aDogNjQ5cHgpIHsKCSogeyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1
c3Q6IG5vbmUgIWltcG9ydGFudDsgfQoJCgkuZGV2aWNlV2lkdGgge3dpZHRoOjEwMCUhaW1wb3J0
YW50OyBwYWRkaW5nOjAhaW1wb3J0YW50O30KCS5kZXZpY2VXaWR0aDk1IHt3aWR0aDo5NSUgIWlt
cG9ydGFudDt9CgkuZGV2aWNlV2lkdGhUZXh0IHt3aWR0aDo5MCUgIWltcG9ydGFudDt9CiAgICAg
ICAgLmRldmljZVdpZHRoODAge3dpZHRoOjgwJSAhaW1wb3J0YW50O30KCS5kZXZpY2VDZW50ZXIg
e3RleHQtYWxpZ246Y2VudGVyICFpbXBvcnRhbnQ7fQoJLmRldmljZVdpZHRoNzB7d2lkdGg6NzAl
IWltcG9ydGFudDt9CgkuZGV2aWNlV2lkdGg1NXt3aWR0aDo1NSUhaW1wb3J0YW50O30KCS5kZXZp
Y2VXaWR0aDUwe3dpZHRoOjUwJSFpbXBvcnRhbnQ7fQoJLmRldmljZVdpZHRoMzB7d2lkdGg6MzAl
IWltcG9ydGFudDt9CgkubG9nb01vYmlsZXt3aWR0aDoyMDBweCFpbXBvcnRhbnQ7fQoJCiAgICAg
ICAgIC5kZXZpY2VDZW50ZXJCbG9jayB7ZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgd2lkdGg6
IDcwJSAhaW1wb3J0YW50OyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfQogICAgICAg
ICAudHJpYW5nbGUtbW9iaWxlIHt3aWR0aDo0cHggIWltcG9ydGFudDt9CgogICAgICAgICAuZGV2
aWNlQmxvY2syNSB7ZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgIH0KCgkvKkRpc3BsYXkgTm9u
ZSovCgkuZGV2aWNlSGlkZXsKCQlkaXNwbGF5Om5vbmUgIWltcG9ydGFudDsKCX0KCQoJaW1nLmRl
dmljZVdpZHRoIHsKCSAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwoJICAgIGRpc3BsYXk6IGJs
b2NrOwoJICAgIG1hcmdpbjogMCBhdXRvOwoJfQoKCS8qV0VCIFZFUlNJT04qLwoJLndlYnZlcnNp
b24gdGR7CgkJd2lkdGg6MTAwJSAhaW1wb3J0YW50OwkKCX0KCS53ZWJ2ZXJzaW9uIHRkLmRlc2Ny
aXB0aW9uewoJCWRpc3BsYXk6bm9uZTsJCgl9CgkKCS8qSEVBREVSCgkuaGVhZGVyQ08gdGR7CgkJ
cGFkZGluZzogMjRweCAhaW1wb3J0YW50OwoJfQoJLmhlYWRlckNPIHRkIGltZyB7CgkJbWF4LXdp
ZHRoOjEzN3B4OwoJfSovCgkKCQoJCgkuVGl2b2xpIC5oZWFkbGluZSBzcGFuIHsKCQlmb250LXNp
emU6IDIwcHggIWltcG9ydGFudDsKCQlsZXR0ZXItc3BhY2luZzogMTBweCAhaW1wb3J0YW50OwoJ
CW1hcmdpbi1yaWdodDogLTEzcHggIWltcG9ydGFudDsJCQoJfQoJLlRpdm9saSAuaGVhZGxpbmUg
dGQuaGlnaGxpZ2h0CXsKCQlsaW5lLWhlaWdodDogNDRweCAhaW1wb3J0YW50OwoJfQoJLlRpdm9s
aSAuaGVhZGxpbmUgdGQuaGlnaGxpZ2h0IHNwYW4gewoJCWZvbnQtc2l6ZTogNDBweCAhaW1wb3J0
YW50OwoJCWxldHRlci1zcGFjaW5nOiAyMHB4ICFpbXBvcnRhbnQ7CgkJbWFyZ2luLXJpZ2h0OiAt
MjNweCAhaW1wb3J0YW50OwoJfQoJLlRpdm9saSB0YWJsZS5idG4gewoJCW1heC13aWR0aDogODAl
OwoJfQoJLlRpdm9saSB0YWJsZS5idG4gYSB7CgkJZm9udC1zaXplOiAyZW0gIWltcG9ydGFudDsK
CQlsZXR0ZXItc3BhY2luZzogMTBweCAhaW1wb3J0YW50OyAKCQlwYWRkaW5nOiA4cHggMTVweCAh
aW1wb3J0YW50OwoJfQoJCgkvKiBSUlNTICovCgl0YWJsZS5kZXZpY2VTTSB7CgkJd2lkdGg6IDc1
JSFpbXBvcnRhbnQ7Cgl9Cgl0YWJsZS5kZXZpY2VTTSAuYXBwcyB0YWJsZTpmaXJzdC1jaGlsZHsK
CQltaW4td2lkdGg6IDI0MHB4ICFpbXBvcnRhbnQ7CgkJd2lkdGg6IDc1JSFpbXBvcnRhbnQ7Cgl9
CgkvKiBSUlNTIGRlc2RlIDQ1NAoJdGFibGUuZGV2aWNlU00gewoJCXdpZHRoOiA4MCUgIWltcG9y
dGFudDsKCX0KCXRhYmxlLmRldmljZVNNIC5hcHBzIHRhYmxlOmZpcnN0LWNoaWxkewoJCXdpZHRo
OiA4NSUgIWltcG9ydGFudDsKCX0qLwoJCgkKCQoJLypGT09URVIqLwoJaW1nLnNlcGFyYWRvcl9s
b2dvcyB7CgkgICAgZGlzcGxheTogbm9uZTsKCX0KfQkKCgovKipEZXZpY2UgTSoqLyAvKmZvcm1l
ciA0MTQqLwpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ4MHB4KSB7CgkKCS5k
ZXZpY2VXaWR0aC1jb2wtMiwKCS5kZXZpY2VXaWR0aDUwIHt3aWR0aDo1MCUhaW1wb3J0YW50OyBw
YWRkaW5nOjA7fQoJCgkuZGV2aWNlQmxvY2t7CgkJZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsK
CX0KCQoJLypIRUFERVIqLwkKCS5oZWFkZXJDTyB0ZCB7CgkJcGFkZGluZzogMCAxNnB4ICFpbXBv
cnRhbnQ7Cgl9CgkuaGVhZGVyQ08gdGQ6bGFzdC1jaGlsZCB7CgkJcGFkZGluZzogMTBweCAxNnB4
ICFpbXBvcnRhbnQ7Cgl9CgkvKi5oZWFkZXJDTyB0ZCB7CgkJcGFkZGluZzogNXB4IDE2cHggIWlt
cG9ydGFudDsKCX0KCS5oZWFkZXJDTyB0ZCBpbWcgewoJCW1heC13aWR0aDoxMzdweDsKCX0qLwoJ
CgkKCS8qQk9UT05FUyBSRVNQT05TSVZFKi8KCQoJdGFibGUuYnRuIGEgewoJCWZvbnQtc2l6ZTog
MjBweCAhaW1wb3J0YW50OwoJCXBhZGRpbmc6IDhweCAxNXB4ICFpbXBvcnRhbnQ7Cgl9CgoJdGFi
bGUuYnRuLWNvbHVtbnMgYSB7CgkJZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7CgkJcGFkZGlu
ZzogMnB4IDVweCAhaW1wb3J0YW50OwoJfQoJLkIyQiB0YWJsZS5idG4gewoJCXdpZHRoOiA3MCUg
IWltcG9ydGFudDsKCX0KCS5CMkIgdGFibGUuYnRuIGEgewoJCWZvbnQtc2l6ZTogMTdweCAhaW1w
b3J0YW50OwoJCXBhZGRpbmc6IDEycHggMTVweCAhaW1wb3J0YW50OwoJfQoJLkIyQiB0YWJsZS5i
dG5Mb25nIHsKCQl3aWR0aDogOTAlICFpbXBvcnRhbnQ7Cgl9CgkuZGVzdGluYXRpb24gdGFibGUu
YnRuIHsKCQl3aWR0aDogYXV0byFpbXBvcnRhbnQ7Cgl9CgkuZGVzdGluYXRpb24gdGFibGUuYnRu
IGEgewoJCWZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50OwoJCXBhZGRpbmc6IDEwcHggMTRweCA5
cHggMTBweCAhaW1wb3J0YW50OwoJfQoJdGFibGUuQ09idG4gYSB7CgkJcGFkZGluZzogNXB4IDM2
cHggIWltcG9ydGFudDsKCX0KCS5UaXZvbGkgdGFibGUuYnRuIHsKCQltYXgtd2lkdGg6IDgwJSAh
aW1wb3J0YW50OwoJfQoJCgoJLypUZXh0Ki8KCS5kZXN0aW5hdGlvbiAubmFtZSB7CgkJZm9udC1z
aXplOiA0MHB4OwoJfQoJLmhvdGVsIC5uYW1lIHsKCQkKCX0KCQoJLmRldmljZU1fdGV4dDM1IHsK
CQkJZm9udC1zaXplOiAzNXB4ICFpbXBvcnRhbnQ7Cgl9CgkuZGV2aWNlTV90ZXh0MjUgewoJCWZv
bnQtc2l6ZTogMjRweCAhaW1wb3J0YW50OwoJfQoJLmRldmljZU1fdGV4dDIwIHsKCQlmb250LXNp
emU6IDIwcHggIWltcG9ydGFudDsKCX0KCS5kZXZpY2VNX3RleHQxOCB7CgkJZm9udC1zaXplOiAx
OHB4ICFpbXBvcnRhbnQ7Cgl9CgkuZGV2aWNlTV90ZXh0MTUgewoJCWZvbnQtc2l6ZTogMTVweCAh
aW1wb3J0YW50OwoJfQoJLmRldmljZU1fdGV4dDEyIHsKCQlmb250LXNpemU6IDEycHggIWltcG9y
dGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7IAoJfQog
ICAgICAgIC5kZXZpY2VNX3RleHQxMCB7CgkJZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7Cgl9
CgkKCS5DTyAuaGVhZGxpbmUgewoJCWZvbnQtc2l6ZTogMjhweCAhaW1wb3J0YW50OwoJCWxpbmUt
aGVpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7Cgl9CgogICAgICAgIC5kZXZpY2VNX2xpbmUxNCB7CgkJ
bGluZS1oZWlnaHQ6IDE0cHggIWltcG9ydGFudDsKCX0KCS8qRk9PVEVSKi8KCS5DTyBpbWcuZmVl
bCB7CgkJd2lkdGg6IDEzMHB4ICFpbXBvcnRhbnQ7Cgl9CgkKCWltZy5zZXBhcmFkb3JfbG9nb3N7
CgkJZGlzcGxheTogbm9uZTsJCgl9CgkudGV4dG9sZWdhbHsKCQlmb250LXNpemU6IDEwcHghaW1w
b3J0YW50OwkKCX0KfQogCiAvKipEZXZpY2UgWE0qKi8KIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQg
KG1heC13aWR0aDogNDE0cHgpIHsgCgkuZGV2aWNlV2lkdGhNLCAKCS5kZXZpY2VNV2lkdGgJe3dp
ZHRoOjEwMCUhaW1wb3J0YW50OyBwYWRkaW5nOjAhaW1wb3J0YW50O30KCS5kZXZpY2VXaWR0aE1U
ZXh0LAoJLmRldmljZU1XaWR0aFRleHR7d2lkdGg6OTAlICFpbXBvcnRhbnQ7fQogCgkvKi5oZWFk
ZXJDTyB0ZDpmaXJzdC1jaGlsZCBpbWcgewoJCXdpZHRoOiAxMzdweCAhaW1wb3J0YW50OwoJfQoJ
LmhlYWRlckNPIHRkOmxhc3QtY2hpbGQgaW1nIHsKCQl3aWR0aDogNzhweCAhaW1wb3J0YW50OwoJ
fSovCiAKCS5kZXZpY2VYTV90ZXh0NTAgewoJCWZvbnQtc2l6ZTogNTBweCAhaW1wb3J0YW50OwoJ
CWxpbmUtaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkuZGV2aWNlWE1fdGV4dDQwIHsKCQlm
b250LXNpemU6IDQwcHggIWltcG9ydGFudDsKCQlsaW5lLWhlaWdodDogYXV0byAhaW1wb3J0YW50
OwoJfQoJLmRldmljZVhNX3RleHQzNSB7CgkJZm9udC1zaXplOiAzNXB4ICFpbXBvcnRhbnQ7CgkJ
bGluZS1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKCX0KCS5kZXZpY2VYTV90ZXh0MzAgewoJCWZv
bnQtc2l6ZTogMzBweCAhaW1wb3J0YW50OwoJCWxpbmUtaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7
Cgl9CgkuZGV2aWNlWE1fdGV4dDI1IHsKCQlmb250LXNpemU6IDI1cHggIWltcG9ydGFudDsKCQls
aW5lLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwoJfQoJLmRldmljZVhNX3RleHQyMCB7CgkJZm9u
dC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7CgkJbGluZS1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsK
CX0KCS5kZXZpY2VYTV90ZXh0MTYgewoJCWZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50OwoJCWxp
bmUtaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7Cgl9CgkuZGV2aWNlWE1fdGV4dDEzIHsKCQlmb250
LXNpemU6IDEzcHggIWltcG9ydGFudDsKCQlsaW5lLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwoJ
fQoJCgkKCS5UaXZvbGkgLmhlYWRsaW5lIHNwYW4gewoJCWZvbnQtc2l6ZTogMThweCAhaW1wb3J0
YW50OwoJCWxldHRlci1zcGFjaW5nOiA2cHggIWltcG9ydGFudDsKCQltYXJnaW4tcmlnaHQ6IC04
cHggIWltcG9ydGFudDsJCQoJfQoJLlRpdm9saSAuaGVhZGxpbmUgdGQuaGlnaGxpZ2h0CXsKCQls
aW5lLWhlaWdodDogMzRweCAhaW1wb3J0YW50OwoJfQoJLlRpdm9saSAuaGVhZGxpbmUgdGQuaGln
aGxpZ2h0IHNwYW4gewoJCWZvbnQtc2l6ZTogMzdweCAhaW1wb3J0YW50OwoJCWxldHRlci1zcGFj
aW5nOiAxMXB4ICFpbXBvcnRhbnQ7CgkJbWFyZ2luLXJpZ2h0OiAtMTRweCAhaW1wb3J0YW50OwoJ
fQoJLlRpdm9saSB0YWJsZS5idG4gYSB7CgkJZm9udC1zaXplOiAxLjZlbSAhaW1wb3J0YW50OwoJ
CWxldHRlci1zcGFjaW5nOiAxMHB4ICFpbXBvcnRhbnQ7CgkJcGFkZGluZzogOHB4IDEzcHggIWlt
cG9ydGFudDsKCX0KIAogfQogCi8qKkRldmljZSBTKiovCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQg
KG1heC13aWR0aDogMzYwcHgpIHsKCS5kZXZpY2VXaWR0aFMge3dpZHRoOjEwMCUhaW1wb3J0YW50
OyBwYWRkaW5nOjAhaW1wb3J0YW50O30KCS5kZXZpY2VXaWR0aFRleHRTLCAuZGV2aWNlV2lkdGhT
VGV4dCB7d2lkdGg6OTAlICFpbXBvcnRhbnQ7fQoJCgkvKkRpc3BsYXkgTm9uZSovCgkuZGV2aWNl
U0hpZGV7CgkJZGlzcGxheTpub25lICFpbXBvcnRhbnQ7Cgl9CgkKCS5kZXZpY2VTX3RleHQyMCB7
CgkJZm9udC1zaXplOiAyMHB4ICFpbXBvcnRhbnQ7Cgl9CgkuZGV2aWNlU190ZXh0MTUgewoJCWZv
bnQtc2l6ZTogMTVweCAhaW1wb3J0YW50OwoJfQoJLmRldmljZVNfdGV4dDEyIHsKCQlmb250LXNp
emU6IDEycHggIWltcG9ydGFudDsKCX0KCQoJdGFibGUuYnRuU21hbGwgYSB7CgkJZm9udC1zaXpl
OiAxNXB4ICFpbXBvcnRhbnQ7CgkJcGFkZGluZzogMCA4cHggMnB4IDhweCAhaW1wb3J0YW50OwoJ
fQoJCQoJLypIRUFERVIqLwoJdGQubG9nb19uaHIsCgl0ZC5oZWFkZXJfcmlnaHR7CgkJd2lkdGg6
IDUwJSAhaW1wb3J0YW50OwoJCXBhZGRpbmc6IDAgIWltcG9ydGFudDsKCX0KCXRkLmxvZ29fbmhy
IGltZ3sKCQl3aWR0aDogOTklICFpbXBvcnRhbnQ7CQoJfQoJLmhlYWRlcl9yaWdodCBpbWd7CgkJ
d2lkdGg6IDcwJSAhaW1wb3J0YW50OwoJfQoJCgkvKkJPVE9ORVMqLwoJLyp0YWJsZS5idG4gewoJ
CXdpZHRoOiA5MCUhaW1wb3J0YW50OwoJfSovCgl0YWJsZS5sb25nQnRuIHsKCQl3aWR0aDogOTAl
IWltcG9ydGFudDsKCX0KCS8qLmRlc3RpbmF0aW9uIHRhYmxlLmJ0biB7CgkJd2lkdGg6IDkwJSFp
bXBvcnRhbnQ7Cgl9Ki8KCQoJLyogUlJTUyAqLwoJdGFibGUuZGV2aWNlU00gewoJCXdpZHRoOiA5
MCUgIWltcG9ydGFudDsKCX0KCXRhYmxlLmRldmljZVNNIC5hcHBzIHRhYmxlOmZpcnN0LWNoaWxk
ewoJCXdpZHRoOiA5OSUgIWltcG9ydGFudDsKCX0KCQoJLypGT09URVIqLwkKCWltZy5tYXJnaW5f
bWludXN7CgkJbWFyZ2luLXRvcDogMCFpbXBvcnRhbnQ7CgkJbWFyZ2luLWJvdHRvbTogLTEwcHgh
aW1wb3J0YW50OwoJfQkKCn0KCi8qKkRldmljZSBYUyoqLwpAbWVkaWEgb25seSBzY3JlZW4gYW5k
IChtYXgtd2lkdGg6IDMyMHB4KSB7CgkuZGV2aWNlV2lkdGhYU3t3aWR0aDoxMDAlIWltcG9ydGFu
dDsgcGFkZGluZzowO30KCS5kZXZpY2VXaWR0aFRleHRYU3t3aWR0aDo5MCUhaW1wb3J0YW50OyBw
YWRkaW5nOjA7fQoJCgkvKkRpc3BsYXkgTm9uZSovCgkuZGV2aWNlSGlkZVhTewoJCWRpc3BsYXk6
IG5vbmUhaW1wb3J0YW50OwoJfQoJCgkvKkJPVE9ORVMgUkVTUE9OU0lWRSovCgl0YWJsZS5idG4g
YSB7CgkJZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7CgkJcGFkZGluZzogMHB4OwoJfQp9Cgo8
L3N0eWxlPgoKCjxzdHlsZT4KCS5zaWduYXR1cmUgewoJCWNvbG9yOiAjMDAzYTcwICFpbXBvcnRh
bnQ7IC8qSEVYIHBhcmEgTkhDb2xlY3Rpb246ICM5ZDIyMzUqLwoJfQoJCgkudW5zdWJzY3JpYmUs
CgkudW5zdWJzY3JpYmUgYXsKCQljb2xvcjogIzAwM2E3MCAhaW1wb3J0YW50OyAvKkhFWCBwYXJh
IE5IQ29sZWN0aW9uOiAjOWQyMjM1Ki8gLypIRVggZ3JpczogIzU0NzY3NyovCgl9Cjwvc3R5bGU+
CjwvaGVhZD48Ym9keT4KCjwhLS1DT05URU5ULS0+CjxkaXYgY2xhc3M9ImVtYWlsLWNvbnRlbnQt
d3JhcHBlciBCMkMiPgogICAgPGRpdiBjbGFzcz0iZW1haWwtY29udGVudCI+CgkKCQk8IS0tW2lm
IChndGUgbXNvIDkpfChJRSldPgoJCTx0YWJsZSB3aWR0aD0iNjUwIiBhbGlnbj0iY2VudGVyIiBj
ZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCI+CgkJCTx0cj4KCQkJCTx0
ZD4KCQkJPCFbZW5kaWZdLS0+CiAgICAgICAgCgkJCTx0YWJsZSBjbGFzcz0iY29udGFpbmVyIiBz
dHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBtYXgtd2lkdGg6NjUwcHg7IiB3
aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGJn
Y29sb3I9IiNmZmZmZmYiIGFsaWduPSJjZW50ZXIiPgoJCQkJPHRib2R5Pjx0cj4KCQkJCQk8dGQg
d2lkdGg9IjEwMCUiIHZhbGlnbj0idG9wIj48cCBzdHlsZT0iZGlzcGxheTpub25lIj48aW1nIHNy
Yz0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9saW5r
LzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxL3BpeGVsLmdpZiIg
V0lEVEg9IjEiIEhFSUdIVD0iMSIgQk9SREVSPSIwIiBBTFQ9IiIgLz48IS0tW2lmIG1zb10+PHRh
YmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBhbGlnbj0ibGVm
dCIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6MHB0OyAgbXNvLXRhYmxlLXJzcGFjZTowcHQ7IGJv
cmRlci1jb2xsYXBzZTogY29sbGFwc2U7IHdpZHRoOiAxMDAlIj48dHI+PHRkIHN0eWxlPSJ3aWR0
aDogMTAwJTsiPjwhW2VuZGlmXS0tPjxkaXYgc3R5bGU9ImZsb2F0OiBsZWZ0OyB3aWR0aDogMTAw
JSIgY2xhc3M9InNhcE1rdEJsb2NrIj48IS0tUFJFVklFVy0tPgo8dGFibGUgY2xhc3M9ImRldmlj
ZVdpZHRoIiB3aWR0aD0iNjUwIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5n
PSIwIiBjZWxscGFkZGluZz0iMCIgYmdjb2xvcj0iI2ZkZjZmMCI+Cjx0Ym9keT4KPHRyPgo8dGQg
aGVpZ2h0PSIxMCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5i
c3A7PC90ZD4KPC90cj4KPHRyPgo8dGQ+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGhUZXh0IiB3
aWR0aD0iNjUwIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxs
c3BhY2luZz0iMCI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQ+Cjx0YWJsZSBjbGFz
cz0iZGV2aWNlV2lkdGhUZXh0IiB3aWR0aD0iNTg1IiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iYm9y
ZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7
IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxs
c3BhY2luZz0iMCI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQgYWxpZ249ImxlZnQi
IHdpZHRoPSI3OSUiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gc3R5bGU9
ImZvbnQtZmFtaWx5OiBBcmlhbDsgbGluZS1oZWlnaHQ6IDIwcHg7IGZvbnQtc2l6ZTogMTBweDsg
Y29sb3I6ICMxMzIxM2M7Ij5UUk9QSUNBTCBST0FEIFRSSVBTLCBMT1NUIENJVFkgVFJFS1MsIFZJ
TlRBR0UgVFJBSU4gRElOSU5HIEFORCBNT1JFPC9zcGFuPjwvdGQ+Cjx0ZCBhbGlnbj0iY2VudGVy
IiB3aWR0aD0iMTAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PC90ZD4KPHRkIGFs
aWduPSJyaWdodCIgd2lkdGg9IjIwMCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48
IS0tUElYRUwgQ2FtcGHDsWEtLT48aW1nIHNyYz0iaHR0cHM6Ly9hZC5kb3VibGVjbGljay5uZXQv
ZGRtL2FkL04zNzIwNS4xOTE5MDYzTkgtSE9URUxFUy5FUzE5NzkvQjk2NzUwMzQuMjYzOTI5Mjg3
O3N6PTF4MTtvcmQ9JTVCdGltZXN0YW1wJTVEO2RjX2xhdD07ZGNfcmRpZD07dGFnX2Zvcl9jaGls
ZF9kaXJlY3RlZF90cmVhdG1lbnQ9O3RmdWE9PyIgYm9yZGVyPSIwIiBhbHQ9IkFkdmVydGlzZW1l
bnQiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIC8+IDwhLS1QSVhFTCBSZXRhcmdldGluZyAtLSBOTyBF
RElUQVItLT48aW1nIHNyYz0iIyIgYm9yZGVyPSIwIiBhbHQ9IiIgd2lkdGg9IjEiIGhlaWdodD0i
MSIgLz4gPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbDsgdGV4dC10cmFuc2Zvcm06IHVw
cGVyY2FzZTsgY29sb3I6ICMxMzIxM2M7IGxpbmUtaGVpZ2h0OiAyMHB4OyBmb250LXNpemU6IDEw
cHg7Ij48YSBocmVmPSJodHRwczovL2RpZ2l0YWwubmgtaG90ZWxzLmNvbTo0NDMvc2FwL3B1Ymxp
Yy9jdWFuL2xpbmsvMTAwL0NDRkZDQjIxMzBDRjIwNkQ1NzQzMTVDRjQzMkZBNDEzRTYwOTY0RDE/
X1ZfPTImX0sxMV89RjI4NEJFRjEwRTREQTQ0RUQ5N0EyRUFDQ0M5OUI4RUM2RDIwMkFDMCZfTDU0
QUQxRjIwNF89YzJObGJtRnlhVzg5VFV4RFVFY21kR0Z5WjJWMFBXaDBkSEJ6T2k4dlptcGlhRzFo
ZERsa2JDNWxlR1ZqZFhSbExXRndhUzVsZFMxM1pYTjBMVEV1WVcxaGVtOXVZWGR6TG1OdmJTOVRT
RkEvYzJGd0xXOTFkR0p2ZFc1a0xXbGtQVU5EUmtaRFFqSXhNekJEUmpJd05rUTFOelF6TVRWRFJq
UXpNa1pCTkRFelJUWXdPVFkwUkRFJl9LMTNfPTM2NSZfSzE0Xz0wYTNlNWJkMWQyNmVhYTI4MDA4
ZThkNTdkYWUwZjQyMWJhM2ViY2UwZjhhMTFiNTVhZTA4NTRiYTE3ZjQ4NDI5IiBzdHlsZT0iZm9u
dC1mYW1pbHk6IEFyaWFsOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogIzEzMjEz
YzsgbGluZS1oZWlnaHQ6IDIwcHg7IGZvbnQtc2l6ZTogMTBweDsgdGV4dC1kZWNvcmF0aW9uOiBu
b25lOyI+VklFVyBJTiBCUk9XU0VSPC9hPjwvc3Bhbj48L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3Rh
YmxlPgo8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8
L3RhYmxlPgo8IS0tRGl2aXNvci0tPgo8dGFibGUgY2xhc3M9ImRldmljZVdpZHRoIiB3aWR0aD0i
NjUwIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGlu
Zz0iMCIgYmdjb2xvcj0iI2ZkZjZmMCI+Cjx0Ym9keT4KPHRyPgo8dGQgaGVpZ2h0PSI4IiBzdHls
ZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8
dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIj4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aDgwIiB3aWR0
aD0iNTkxIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFk
ZGluZz0iMCIgYmdjb2xvcj0iIzEzMjEzYyI+Cjx0Ym9keT4KPHRyPgo8dGQgaGVpZ2h0PSIxIiBz
dHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3Ry
Pgo8L3Rib2R5Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBoZWlnaHQ9IjE1IiBzdHls
ZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8
L3Rib2R5Pgo8L3RhYmxlPjwvZGl2PjwhLS1baWYgbXNvXT48L3RkPjwvdHI+PC90YWJsZT48IVtl
bmRpZl0tLT48IS0tW2lmIG1zb10+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNl
bGxzcGFjaW5nPSIwIiBhbGlnbj0ibGVmdCIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6MHB0OyAg
bXNvLXRhYmxlLXJzcGFjZTowcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IHdpZHRoOiAx
MDAlIj48dHI+PHRkIHN0eWxlPSJ3aWR0aDogMTAwJTsiPjwhW2VuZGlmXS0tPjxkaXYgc3R5bGU9
ImZsb2F0OiBsZWZ0OyB3aWR0aDogMTAwJSIgY2xhc3M9InNhcE1rdEJsb2NrIj48IS0tSEVBREVS
LS0+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgiIHdpZHRoPSI2NTAiIGFsaWduPSJjZW50ZXIi
IGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBiZ2NvbG9yPSIjZmRm
NmYwIj4KPHRib2R5Pgo8dHI+Cjx0ZCBoZWlnaHQ9IjI1IiBzdHlsZT0iZm9udC1zaXplOiAxcHg7
IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4KPHRhYmxlIHdp
ZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxs
cGFkZGluZz0iMCI+Cjx0Ym9keT4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciI+CjxhIHJlbD0ibm9v
cGVuZXIgbm9yZWZlcnJlciIgaHJlZj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQz
L3NhcC9wdWJsaWMvY3Vhbi9saW5rLzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQx
M0U2MDk2NEQxP19WXz0yJl9LMTFfPTk3OUNBQzQxMEMzOUU4M0JDN0I1RDJGNTNGNTkzQzM5M0I0
NDYxNzQmX0w1NEFEMUYyMDRfPWMyTmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9p
OHZkM2QzTG0xcGJtOXlhRzkwWld4ekxtTnZiVDkxZEcxZmMyOTFjbU5sUFc1bGQzTnNaWFIwWlhJ
bWRYUnRYMjFsWkdsMWJUMWxiV0ZwYkNaMWRHMWZZMkZ0Y0dGcFoyNDlaVzFoYVd4cGJtZGZhVzUw
WlhKdVlXd21kWFJ0WDNSbGNtMDlSVlZCVFRJd01qVm9aV0ZrWlhKbWIyOTBaWEltYzJGd0xXOTFk
R0p2ZFc1a0xXbGtQVU5EUmtaRFFqSXhNekJEUmpJd05rUTFOelF6TVRWRFJqUXpNa1pCTkRFelJU
WXdPVFkwUkRFJl9LMTNfPTM2NSZfSzE0Xz1kZGYzNTMwY2FmMGQ0ZWRmN2I0NTkxYmE5YWIyNjI3
OGYyZGFhZDViNDBlMWJiNGFjNzdhZTlkYjUwOWI5ZGRhIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBj
bGFzcz0iZGV2aWNlV2lkdGg1MCIgc3JjPSJodHRwczovL2luZm8ubmgtaG90ZWxzLmNvbS9jYW1w
YWlnbi8yMDI1LzAzbWlub3JsYXVuY2gxL21pbm9yYmx1ZS5wbmciIGJvcmRlcj0iMCIgYWx0PSJN
aW5vciBIb3RlbHMiIHRpdGxlPSJNaW5vciBIb3RlbHMiIHdpZHRoPSIxNzUiIHN0eWxlPSJkaXNw
bGF5OiBibG9jazsgbWFyZ2luOiAwIGF1dG87IG9wYWNpdHk6IDE7Ij48L2E+PC90ZD4KPC90cj4K
PHRyPgo8dGQgaGVpZ2h0PSI0MCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDog
MXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPC90ZD4KPC90cj4KPC90
Ym9keT4KPC90YWJsZT48L2Rpdj48IS0tW2lmIG1zb10+PC90ZD48L3RyPjwvdGFibGU+PCFbZW5k
aWZdLS0+PCEtLVtpZiBtc29dPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxs
c3BhY2luZz0iMCIgYWxpZ249ImxlZnQiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOjBwdDsgIG1z
by10YWJsZS1yc3BhY2U6MHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyB3aWR0aDogMTAw
JSI+PHRyPjx0ZCBzdHlsZT0id2lkdGg6IDEwMCU7Ij48IVtlbmRpZl0tLT48ZGl2IHN0eWxlPSJm
bG9hdDogbGVmdDsgd2lkdGg6IDEwMCUiIGNsYXNzPSJzYXBNa3RCbG9jayI+PHRhYmxlIGNsYXNz
PSJkZXZpY2VXaWR0aCIgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2Vs
bHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBiZ2NvbG9yPSIjZmRmNmYwIiBzdHlsZT0iYm9y
ZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUt
cnNwYWNlOiAwcHQ7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsgZm9udC1zaXplOiAwOyBsaW5lLWhl
aWdodDogMDsiPgo8dGJvZHk+Cjx0cj4KPHRkIGhlaWdodD0iMTAiIHN0eWxlPSJmb250LXNpemU6
IDFweDsgbGluZS1oZWlnaHQ6IDFweDsgbXNvLWxpbmUtaGVpZ2h0LXJ1bGU6IGV4YWN0bHk7Ij4m
bmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aCIgd2lk
dGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxz
cGFjaW5nPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgcGFkZGluZzogMDsg
bWFyZ2luOiAwOyBmb250LXNpemU6IDA7IGxpbmUtaGVpZ2h0OiAwOyI+Cjx0Ym9keT4KPHRyPgo8
dGQ+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgiIHdpZHRoPSI5MCUiIGFsaWduPSJjZW50ZXIi
IGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBzdHlsZT0iYm9yZGVy
LWNvbGxhcHNlOiBjb2xsYXBzZTsgZm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7IGZv
bnQtc2l6ZTogMDsgbGluZS1oZWlnaHQ6IDA7Ij4KPHRib2R5Pgo8dHI+Cjx0ZCBhbGlnbj0ibGVm
dCIgd2lkdGg9IjQ1JSI+PGltZyBjbGFzcz0iZGV2aWNlV2lkdGgiIHNyYz0iaHR0cHM6Ly9pbmZv
Lm5oLWhvdGVscy5jb20vY2FtcGFpZ24vMjAyNS8wMG1pbm9ydGVtcGxhdGUvaGVhZGVyLWRpc2Nv
dmVyeS1ibHVlLnBuZyIgYm9yZGVyPSIwIiBhbHQ9Ik1pbm9yIERJU0NPVkVSWSIgdGl0bGU9Ik1p
bm9yIERJU0NPVkVSWSIgd2lkdGg9IjIxMCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBvcGFjaXR5
OiAxOyIgLz48L3RkPgo8dGQgd2lkdGg9IjEwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUt
aGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8dGQgYWxpZ249InJpZ2h0IiBzdHlsZT0iZm9udC1m
YW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogIzEzMjEzYzsgZm9udC1zaXplOiAxNnB4
OyBsaW5lLWhlaWdodDogMjBweDsiPjczNDQ5MzAyPC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJs
ZT4KPC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPC90ZD4KPC90cj4KPC90Ym9keT4KPC90
YWJsZT4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aCIgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50
ZXIiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBiZ2NvbG9yPSIj
ZmRmNmYwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgbXNvLXRhYmxlLWxzcGFj
ZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsgZm9u
dC1zaXplOiAwOyBsaW5lLWhlaWdodDogMDsiPgo8dGJvZHk+Cjx0cj4KPHRkIGhlaWdodD0iNSIg
c3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyBtc28tbGluZS1oZWlnaHQt
cnVsZTogZXhhY3RseTsiPiZuYnNwOzwvdGQ+CjwvdHI+Cjx0cj4KPHRkPgo8dGFibGUgY2xhc3M9
ImRldmljZVdpZHRoIiB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIwIiBjZWxs
cGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxh
cHNlOyBwYWRkaW5nOiAwOyBtYXJnaW46IDA7IGZvbnQtc2l6ZTogMDsgbGluZS1oZWlnaHQ6IDA7
Ij4KPHRib2R5Pgo8dHI+Cjx0ZD4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aCIgd2lkdGg9Ijkw
JSIgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9
IjAiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBmb250LWZhbWlseTogQ2FsaWJy
aSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAwOyBsaW5lLWhlaWdodDogMDsiPgo8dGJvZHk+Cjx0
cj4KPHRkIGFsaWduPSJsZWZ0IiB3aWR0aD0iNDklIiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFs
LCBzYW5zLXNlcmlmOyBjb2xvcjogIzEzMjEzYzsgZm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdo
dDogMjBweDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsiPlNJTFZFUjwvdGQ+Cjx0ZCB3aWR0
aD0iMTAiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwv
dGQ+Cjx0ZCBhbGlnbj0icmlnaHQiIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2Vy
aWY7IGNvbG9yOiAjMTMyMTNjOyBmb250LXNpemU6IDE2cHg7IGxpbmUtaGVpZ2h0OiAyMHB4OyI+
Sm9zZXBoaW5lIFBmZWlmZmVyPC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPC90ZD4KPC90
cj4KPC90Ym9keT4KPC90YWJsZT4KPC90ZD4KPC90cj4KPHRyPgo8dGQgaGVpZ2h0PSIxMCIgc3R5
bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyBtc28tbGluZS1oZWlnaHQtcnVs
ZTogZXhhY3RseTsiPiZuYnNwOzwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+PC9kaXY+PCEt
LVtpZiBtc29dPjwvdGQ+PC90cj48L3RhYmxlPjwhW2VuZGlmXS0tPjwhLS1baWYgbXNvXT48dGFi
bGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJsZWZ0
IiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTowcHQ7ICBtc28tdGFibGUtcnNwYWNlOjBwdDsgYm9y
ZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgd2lkdGg6IDEwMCUiPjx0cj48dGQgc3R5bGU9IndpZHRo
OiAxMDAlOyI+PCFbZW5kaWZdLS0+PGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IHdpZHRoOiAxMDAl
IiBjbGFzcz0ic2FwTWt0QmxvY2siPjwhLS1NQUlOLS0+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lk
dGggZGFya21vZGUiIHdpZHRoPSI2NTAiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHNw
YWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBzdHlsZT0icGFkZGluZzogMDsgbWFyZ2luOiAwOyBm
b250LXNpemU6IDA7IGxpbmUtaGVpZ2h0OiAwOyIgYmdjb2xvcj0iI2ZkZjZmMCI+Cjx0Ym9keT4K
PHRyPgo8dGQ+PGEgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiBocmVmPSJodHRwczovL2RpZ2l0
YWwubmgtaG90ZWxzLmNvbTo0NDMvc2FwL3B1YmxpYy9jdWFuL2xpbmsvMTAwL0NDRkZDQjIxMzBD
RjIwNkQ1NzQzMTVDRjQzMkZBNDEzRTYwOTY0RDE/X1ZfPTImX0sxMV89NjZFQ0FBRTE3QTVEODIx
RkZBNEE1MjE2N0Y1M0EzNzQ5NkQwMzVFNSZfTDU0QUQxRjIwNF89YzJObGJtRnlhVzg5VFV4RFVF
Y21kR0Z5WjJWMFBXaDBkSEJ6T2k4dmQzZDNMbTFwYm05eWFHOTBaV3h6TG1OdmJTOWxiaTlpYkc5
bkwybHVjM0JwY21GMGFXOXVMMlJsWm1sdWFYUnBkbVV0WW5WamEyVjBMV3hwYzNRdFpYaHdaWEpw
Wlc1alpYTXRZWEp2ZFc1a0xYUm9aUzEzYjNKc1pEOTFkRzFmYzI5MWNtTmxQVzVsZDNOc1pYUjBa
WEltZFhSdFgyMWxaR2wxYlQxbGJXRnBiQ1oxZEcxZlkyRnRjR0ZwWjI0OVpXMWhhV3hwYm1kZllX
MWxZVjh5TURJMVVUUXRNVE14TUY5RlZVRk5MVTlqZEMxRmVIUnlZVzl5WkdsdVlYSjVYMDFJWDBW
RVRWOUZUaVp6WVhBdGIzVjBZbTkxYm1RdGFXUTlRME5HUmtOQ01qRXpNRU5HTWpBMlJEVTNORE14
TlVOR05ETXlSa0UwTVRORk5qQTVOalJFTVEmX0sxM189MzY1Jl9LMTRfPTk1YTAxYzRiMzk4Y2M3
MjQxZmVjNTBiNDAyNDAyYWFlNDY0OGRmNzhhNDc5YzMzMjA2Yjg3MjU1YjE1ZGQwM2QiIHRhcmdl
dD0iX2JsYW5rIj48aW1nIGNsYXNzPSJkZXZpY2VXaWR0aCIgc3JjPSJodHRwczovL2luZm8ubmgt
aG90ZWxzLmNvbS9jYW1wYWlnbi8yMDI1LzEwbWluaG90ZXh0ZXhwL21haW4uZ2lmIiBib3JkZXI9
IjAiIGFsdD0iICIgdGl0bGU9IiAiIHdpZHRoPSI2NTAiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsg
bWFyZ2luOiAwOyBvcGFjaXR5OiAxOyBwYWRkaW5nOiAwOyBmb250LXNpemU6IDA7IGxpbmUtaGVp
Z2h0OiAwOyI+PC9hPjwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+CjwhLS1TRUNPTkQgSEVB
RExJTkUtLT4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aCIgYm9yZGVyPSIwIiBjZWxsc3BhY2lu
Zz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIiBiZ2NvbG9y
PSIjZmRmNmYwIj4KPHRib2R5IGFsaWduPSJjZW50ZXIiPgo8dHI+Cjx0ZD4KPHRhYmxlIGNsYXNz
PSJkZXZpY2VXaWR0aFRleHQiIHdpZHRoPSI5MCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAi
IGNlbGxwYWRkaW5nPSIwIiBhbGlnbj0iY2VudGVyIj4KPHRib2R5Pgo8dHI+Cjx0ZCBoZWlnaHQ9
IjI1IiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3Rk
Pgo8L3RyPgo8dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6
IEFyaWFsOyBjb2xvcjogIzEzMjEzYzsgZm9udC1zaXplOiAyNnB4OyB0ZXh0LWFsaWduOiBjZW50
ZXI7Ij48Yj5Zb3VyIE5leHQgR3JlYXQgRXNjYXBlOiBBbmNpZW50IFJ1aW5zLCBXaWxkbGlmZSBX
b25kZXJzLCBhbmQgU2t5LUhpZ2gmbmJzcDtXaW5lIDwvYj48L3NwYW4+PC90ZD4KPC90cj4KPC90
Ym9keT4KPC90YWJsZT4KPC90ZD4KPC90cj4KPHRyPgo8dGQgaGVpZ2h0PSIyNSIgc3R5bGU9ImZv
bnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPC90Ym9k
eT4KPC90YWJsZT4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aCIgYm9yZGVyPSIwIiBjZWxsc3Bh
Y2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIiBiZ2Nv
bG9yPSIjZmRmNmYwIj4KPHRib2R5IGFsaWduPSJjZW50ZXIiPgo8dHI+Cjx0ZD4KPHRhYmxlIGNs
YXNzPSJkZXZpY2VXaWR0aFRleHQiIHdpZHRoPSI4MCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9
IjAiIGNlbGxwYWRkaW5nPSIwIiBhbGlnbj0iY2VudGVyIj4KPHRib2R5Pgo8dHI+Cjx0ZCBoZWln
aHQ9IjAiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwv
dGQ+CjwvdHI+Cjx0cj4KPHRkIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJjb2xvcjogIzEzMjEzYzsg
Zm9udC1zaXplOiAxOHB4OyBsaW5lLWhlaWdodDogMjJweDsgdGV4dC1hbGlnbjogY2VudGVyOyIg
Y2xhc3M9ImhlYWRsaW5lIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFNpdGthIEJhbm5lciBS
ZWd1bGFyOyI+Q2xpbWIgUGVydSZyc3F1bztzIGFuY2llbnQgcnVpbnMsIHdpdG5lc3MgQWZyaWNh
JnJzcXVvO3MgR3JlYXQgTWlncmF0aW9uLCBkaW5lIGFib2FyZCBhIHZpbnRhZ2UgdHJhaW4gb3Zl
ciBWaWN0b3JpYSBGYWxscywgc29hciBhYm92ZSB2aW5leWFyZHMgaW4gSHVuZ2FyeSBhbmQmbmJz
cDttb3JlLjwvc3Bhbj48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBoZWlnaHQ9IjI1IiBzdHlsZT0iZm9u
dC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8L3Rib2R5
Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tQm90w7NuIC0tPgo8
dGFibGUgY2xhc3M9ImRldmljZVdpZHRoIiB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciIgYm9y
ZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJnY29sb3I9IiNmZGY2ZjAi
Pgo8dGJvZHkgYWxpZ249ImNlbnRlciI+Cjx0cj4KPHRkIGhlaWdodD0iMCIgc3R5bGU9ImZvbnQt
c2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQ+
Cjx0YWJsZSBjbGFzcz0iYnRuIiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iYm94LXNpemluZzogYm9y
ZGVyLWJveDsgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZSAhaW1wb3J0YW50OyBtYXJnaW4tbGVm
dDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB3aWR0aDogYXV0bzsiIGJvcmRlcj0iMCIgY2Vs
bHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KPHRib2R5Pgo8dHI+Cjx0ZCBhbGlnbj0iY2Vu
dGVyIiB2YWxpZ249ImNlbnRlciIgc3R5bGU9ImJhY2tncm91bmQ6ICMxMzIxM2M7IGJvcmRlci1y
YWRpdXM6IDFweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgdGV4dC1hbGlnbjogY2VudGVyOyB2
ZXJ0aWNhbC1hbGlnbjogdG9wOyI+PGEgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiBocmVmPSJo
dHRwczovL2RpZ2l0YWwubmgtaG90ZWxzLmNvbTo0NDMvc2FwL3B1YmxpYy9jdWFuL2xpbmsvMTAw
L0NDRkZDQjIxMzBDRjIwNkQ1NzQzMTVDRjQzMkZBNDEzRTYwOTY0RDE/X1ZfPTImX0sxMV89Q0Uy
NTNENEZGMkVFMjdFRjE4MEJBOUMzQjgzOEY5OTlDNkQ1ODZFQyZfTDU0QUQxRjIwNF89YzJObGJt
RnlhVzg5VFV4RFVFY21kR0Z5WjJWMFBXaDBkSEJ6T2k4dmQzZDNMbTFwYm05eWFHOTBaV3h6TG1O
dmJTOWxiaTlpYkc5bkwybHVjM0JwY21GMGFXOXVMMlJsWm1sdWFYUnBkbVV0WW5WamEyVjBMV3hw
YzNRdFpYaHdaWEpwWlc1alpYTXRZWEp2ZFc1a0xYUm9aUzEzYjNKc1pEOTFkRzFmYzI5MWNtTmxQ
VzVsZDNOc1pYUjBaWEltZFhSdFgyMWxaR2wxYlQxbGJXRnBiQ1oxZEcxZlkyRnRjR0ZwWjI0OVpX
MWhhV3hwYm1kZllXMWxZVjh5TURJMVVUUXRNVE14TUY5RlZVRk5MVTlqZEMxRmVIUnlZVzl5Wkds
dVlYSjVYMDFJWDBWRVRWOUZUaVp6WVhBdGIzVjBZbTkxYm1RdGFXUTlRME5HUmtOQ01qRXpNRU5H
TWpBMlJEVTNORE14TlVOR05ETXlSa0UwTVRORk5qQTVOalJFTVEmX0sxM189MzY1Jl9LMTRfPTdm
YmJkYzU5MTlkOWM3NjJiOWM2OGM4MWUyMDhjZjAzYmI4N2RhMWU4NmQ2NDk5YWJmMmY4NDg4OWY1
ZjQzMWMiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iICIgc3R5bGU9ImJhY2tncm91bmQ6ICMxMzIx
M2M7IGJvcmRlcjogNnB4IHNvbGlkICMxMzIxM2M7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNv
bG9yOiAjZmZmZmZmOyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6
IDE0cHg7IHBhZGRpbmc6IDEwcHggNTBweCAxMHB4IDUwcHg7IG1hcmdpbjogMDsgbXNvLXBhZGRp
bmctYWx0OiA4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNh
c2U7IGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij48
IS0tW2lmIG1zb10+Jm5ic3A7Jnp3bmo7Jm5ic3A7Jnp3bmo7Jm5ic3A7Jnp3bmo7Jm5ic3A7Jnp3
bmo7Jm5ic3A7Jnp3bmo7Jm5ic3A7Jnp3bmo7Jm5ic3A7Jnp3bmo7Jm5ic3A7Jnp3bmo7PCFbZW5k
aWZdLS0+U1RBUlQgWU9VUiBKT1VSTkVZPCEtLVtpZiBtc29dPiZuYnNwOyZ6d25qOyZuYnNwOyZ6
d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNw
OyZ6d25qOyZuYnNwOyZ6d25qOzwhW2VuZGlmXS0tPjwvYT48L3RkPgo8L3RyPgo8L3Rib2R5Pgo8
L3RhYmxlPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBoZWlnaHQ9IjAiIHN0eWxlPSJmb250LXNpemU6
IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFi
bGU+CjwhLS0vQm90w7NuLS0+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgiIHdpZHRoPSIxMDAl
IiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0i
MCIgYmdjb2xvcj0iI2ZkZjZmMCI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQgaGVp
Z2h0PSIzMCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7
PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPCEtLUlNRy0tPgo8dGFibGUgY2xhc3M9ImRl
dmljZVdpZHRoIGRhcmttb2RlIiB3aWR0aD0iNjUwIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAi
IGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgc3R5bGU9InBhZGRpbmc6IDA7IG1hcmdp
bjogMDsgZm9udC1zaXplOiAwOyBsaW5lLWhlaWdodDogMDsiIGJnY29sb3I9IiNmZmZmZmYiPgo8
dGJvZHk+Cjx0cj4KPHRkPjxjZW50ZXI+PGEgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiBocmVm
PSJodHRwczovL2RpZ2l0YWwubmgtaG90ZWxzLmNvbTo0NDMvc2FwL3B1YmxpYy9jdWFuL2xpbmsv
MTAwL0NDRkZDQjIxMzBDRjIwNkQ1NzQzMTVDRjQzMkZBNDEzRTYwOTY0RDE/X1ZfPTImX0sxMV89
NDlCQzQxN0Y5MUE4OTJFQzZFRUJEQkFEODczNEY1OTU2NzE5QzY2QiZfTDU0QUQxRjIwNF89YzJO
bGJtRnlhVzg5VFV4RFVFY21kR0Z5WjJWMFBXaDBkSEJ6T2k4dmQzZDNMbTFwYm05eWFHOTBaV3h6
TG1OdmJTOWxiaTlpYkc5bkwybHVjM0JwY21GMGFXOXVMM1Z1Wm05eVoyVjBkR0ZpYkdVdGRISnBj
SE10WW1WemRDMXdiR0ZqWlhNdGJHRjBhVzR0WVcxbGNtbGpZVDkxZEcxZmMyOTFjbU5sUFc1bGQz
TnNaWFIwWlhJbWRYUnRYMjFsWkdsMWJUMWxiV0ZwYkNaMWRHMWZZMkZ0Y0dGcFoyNDlaVzFoYVd4
cGJtZGZZVzFsWVY4eU1ESTFVVFF0TVRNeE1GOUZWVUZOTFU5amRDMUZlSFJ5WVc5eVpHbHVZWEo1
WDAxSVgwVkVUVjlGVGlaellYQXRiM1YwWW05MWJtUXRhV1E5UTBOR1JrTkNNakV6TUVOR01qQTJS
RFUzTkRNeE5VTkdORE15UmtFME1UTkZOakE1TmpSRU1RJl9LMTNfPTM2NSZfSzE0Xz02Y2MwNTk3
MWYxNjEzZTQ1M2Y2MTk5MjlmYzlkNzY5Y2RkZjRlZmZlMjI1MTc3YTFjMTJlZTIzNzA0MDA0NTc0
IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBjbGFzcz0iZGV2aWNlV2lkdGgiIHNyYz0iaHR0cHM6Ly9p
bmZvLm5oLWhvdGVscy5jb20vY2FtcGFpZ24vMjAyNS8xMG1pbmhvdGV4dGV4cC9lcGljLnBuZyIg
Ym9yZGVyPSIwIiBhbHQ9IiAiIHRpdGxlPSIgIiB3aWR0aD0iMzkwIiBzdHlsZT0iZGlzcGxheTog
YmxvY2s7IG1hcmdpbjogMDsgb3BhY2l0eTogMTsgcGFkZGluZzogMDsgZm9udC1zaXplOiAwOyBs
aW5lLWhlaWdodDogMDsiPjwvYT48L2NlbnRlcj48L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxl
Pgo8IS0tQkxPQ0sgRSBCT1JERVItLT4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aCIgd2lkdGg9
IjEwMCUiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRk
aW5nPSIwIj4KPHRib2R5Pgo8dHI+Cjx0ZD4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aCIgd2lk
dGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxw
YWRkaW5nPSIwIiBiZ2NvbG9yPSIjZmZmZmZmIj4KPHRib2R5Pgo8dHI+Cjx0ZCBoZWlnaHQ9IjAi
IHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+Cjwv
dHI+Cjx0cj4KPHRkIGFsaWduPSJjZW50ZXIiPjxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIg
aHJlZj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9s
aW5rLzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9L
MTFfPTlFNzFDOEVGRDM1RjhBRjIyMTRDNzQ4REQ2QUFEM0EyOEZCQzE3MTYmX0w1NEFEMUYyMDRf
PWMyTmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9pOHZkM2QzTG0xcGJtOXlhRzkw
Wld4ekxtTnZiUzlsYmk5aWJHOW5MMmx1YzNCcGNtRjBhVzl1TDNWdVptOXlaMlYwZEdGaWJHVXRk
SEpwY0hNdFltVnpkQzF3YkdGalpYTXRiR0YwYVc0dFlXMWxjbWxqWVQ5MWRHMWZjMjkxY21ObFBX
NWxkM05zWlhSMFpYSW1kWFJ0WDIxbFpHbDFiVDFsYldGcGJDWjFkRzFmWTJGdGNHRnBaMjQ5Wlcx
aGFXeHBibWRmWVcxbFlWOHlNREkxVVRRdE1UTXhNRjlGVlVGTkxVOWpkQzFGZUhSeVlXOXlaR2x1
WVhKNVgwMUlYMFZFVFY5RlRpWnpZWEF0YjNWMFltOTFibVF0YVdROVEwTkdSa05DTWpFek1FTkdN
akEyUkRVM05ETXhOVU5HTkRNeVJrRTBNVE5GTmpBNU5qUkVNUSZfSzEzXz0zNjUmX0sxNF89NWM2
YWEwZmIwMGJjODRkNzc2MDM5ODcwZGQ2YTczYWFmODFmZmY2NWU5YWMwODQ0NDVlNmE4MmRkYzYw
NTc0NSIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgY2xhc3M9ImRldmljZVdpZHRoVGV4dCIgc3JjPSJo
dHRwczovL2luZm8ubmgtaG90ZWxzLmNvbS9jYW1wYWlnbi8yMDI1LzEwbWluaG90ZXh0ZXhwL2xh
dGluLWFtZXJpY2EuanBnIiBib3JkZXI9IjAiIGFsdD0iICIgdGl0bGU9IiAiIHdpZHRoPSI2NTAi
IHN0eWxlPSJkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAwIGF1dG87IG9wYWNpdHk6IDE7Ij48L2E+
PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJs
ZT4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aCIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIg
Y2VsbHBhZGRpbmc9IjAiIHdpZHRoPSI5MCUiIGJnY29sb3I9IiNmZmZmZmYiIGFsaWduPSJjZW50
ZXIiPgo8dGJvZHk+Cjx0cj4KPHRkPgo8dGFibGUgY2xhc3M9ImRldmljZVdpZHRoVGV4dCIgd2lk
dGg9IjkwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGFsaWdu
PSJjZW50ZXIiPgo8dGJvZHk+Cjx0cj4KPHRkIGhlaWdodD0iMjUiIHN0eWxlPSJmb250LXNpemU6
IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGFsaWdu
PSJjZW50ZXIiIHN0eWxlPSJjb2xvcjogIzEzMjEzYzsgZm9udC1zaXplOiAyMnB4OyB0ZXh0LWFs
aWduOiBjZW50ZXI7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsOyBmb250LXdlaWdo
dDogYm9sZDsiPkxhdGluIEFtZXJpY2EgTGlrZSBZb3UmcnNxdW87dmUgTmV2ZXIgU2VlbjogRml2
ZSBPbmNlLWluLWEtTGlmZXRpbWUmbmJzcDtUcmlwcyA8L3NwYW4+PC90ZD4KPC90cj4KPHRyPgo8
dGQgaGVpZ2h0PSIyMCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+
Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciIgc3R5bGU9ImNvbG9yOiAj
MTMyMTNjOyBmb250LXNpemU6IDE4cHg7IGxpbmUtaGVpZ2h0OiAyMnB4OyB0ZXh0LWFsaWduOiBj
ZW50ZXI7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFNpdGthIEJhbm5lciBSZWd1bGFyOyI+
VHJlayB0aHJvdWdoIENvbG9tYmlhJnJzcXVvO3MgTG9zdCBDaXR5LCBleHBsb3JlIENoaWxlJnJz
cXVvO3Mgb3RoZXJ3b3JsZGx5IGRlc2VydCBsYW5kc2NhcGVzIGFuZCBkcmlmdCB0b3dhcmRzIHRo
ZSB1bnRvdWNoZWQmbmJzcDtHYWwmYWFjdXRlO3BhZ29zLiA8L3NwYW4+PC90ZD4KPC90cj4KPHRy
Pgo8dGQgaGVpZ2h0PSIwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7
Ij4mbmJzcDs8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8dHI+Cjx0
ZCBoZWlnaHQ9IjI1IiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4m
bmJzcDs8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8dGFibGUgY2xhc3M9ImRldmljZVdp
ZHRoVGV4dCIgd2lkdGg9IjkwJSIgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIwIiBjZWxsc3BhY2lu
Zz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJnY29sb3I9IiNmZmZmZmYiPgo8dGJvZHkgYWxpZ249ImNl
bnRlciI+Cjx0cj4KPHRkIGhlaWdodD0iMCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhl
aWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQ+Cjx0YWJsZSBjbGFzcz0iYnRu
IiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYm9yZGVyLWNv
bGxhcHNlOiBzZXBhcmF0ZSAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJp
Z2h0OiBhdXRvOyB3aWR0aDogYXV0bzsiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxw
YWRkaW5nPSIwIj4KPHRib2R5Pgo8dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249ImNlbnRl
ciIgc3R5bGU9ImJhY2tncm91bmQ6ICMxMzIxM2M7IGJvcmRlci1yYWRpdXM6IDFweDsgYm94LXNp
emluZzogYm9yZGVyLWJveDsgdGV4dC1hbGlnbjogY2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjogdG9w
OyI+PGEgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiBocmVmPSJodHRwczovL2RpZ2l0YWwubmgt
aG90ZWxzLmNvbTo0NDMvc2FwL3B1YmxpYy9jdWFuL2xpbmsvMTAwL0NDRkZDQjIxMzBDRjIwNkQ1
NzQzMTVDRjQzMkZBNDEzRTYwOTY0RDE/X1ZfPTImX0sxMV89MjdCNzkwOTgyNTU1NzM3QTM4RDgy
RjJFN0NENzY4OTIzMEVENzdDMCZfTDU0QUQxRjIwNF89YzJObGJtRnlhVzg5VFV4RFVFY21kR0Z5
WjJWMFBXaDBkSEJ6T2k4dmQzZDNMbTFwYm05eWFHOTBaV3h6TG1OdmJTOWxiaTlpYkc5bkwybHVj
M0JwY21GMGFXOXVMM1Z1Wm05eVoyVjBkR0ZpYkdVdGRISnBjSE10WW1WemRDMXdiR0ZqWlhNdGJH
RjBhVzR0WVcxbGNtbGpZVDkxZEcxZmMyOTFjbU5sUFc1bGQzTnNaWFIwWlhJbWRYUnRYMjFsWkds
MWJUMWxiV0ZwYkNaMWRHMWZZMkZ0Y0dGcFoyNDlaVzFoYVd4cGJtZGZZVzFsWVY4eU1ESTFVVFF0
TVRNeE1GOUZWVUZOTFU5amRDMUZlSFJ5WVc5eVpHbHVZWEo1WDAxSVgwVkVUVjlGVGlaellYQXRi
M1YwWW05MWJtUXRhV1E5UTBOR1JrTkNNakV6TUVOR01qQTJSRFUzTkRNeE5VTkdORE15UmtFME1U
TkZOakE1TmpSRU1RJl9LMTNfPTM2NSZfSzE0Xz02Njk0ZDk0NTZlNDAzYzQ1Y2Y3MTRhYThlYWM3
YTBlZGUzYjg5ZjJhMWZjNjM0OWEzOWUxZTE2MjdmMTVlYWMzIiB0YXJnZXQ9Il9ibGFuayIgdGl0
bGU9IiAiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjMTMyMTNjOyBib3JkZXI6IDZweCBzb2xpZCAjMTMy
MTNjOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogI2ZmZmZmZjsgY3Vyc29yOiBwb2lu
dGVyOyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxNnB4OyBwYWRkaW5nOiA1cHggMTBweCA1
cHggMTBweDsgbWFyZ2luOiAwOyBtc28tcGFkZGluZy1hbHQ6IDY7IHRleHQtZGVjb3JhdGlvbjog
bm9uZTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5z
LXNlcmlmOyI+PCEtLVtpZiBtc29dPiZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25q
OyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6
d25qOzwhW2VuZGlmXS0tPkVYUExPUkUgTEFUSU4gQU1FUklDQTwhLS1baWYgbXNvXT4mbmJzcDsm
enduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJz
cDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajs8IVtlbmRpZl0tLT48L2E+PC90ZD4KPC90
cj4KPC90Ym9keT4KPC90YWJsZT4KPC90ZD4KPC90cj4KPHRyPgo8dGQgaGVpZ2h0PSI1MCIgc3R5
bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4K
PC90Ym9keT4KPC90YWJsZT4KPCEtLUJMT0NLIEUgQk9SREVSLS0+Cjx0YWJsZSBjbGFzcz0iZGV2
aWNlV2lkdGgiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFj
aW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Cjx0Ym9keT4KPHRyPgo8dGQ+Cjx0YWJsZSBjbGFzcz0i
ZGV2aWNlV2lkdGgiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxz
cGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYmdjb2xvcj0iI2ZmZmZmZiI+Cjx0Ym9keT4KPHRy
Pgo8dGQgaGVpZ2h0PSIwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7
Ij4mbmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIj48YSByZWw9Im5vb3Bl
bmVyIG5vcmVmZXJyZXIiIGhyZWY9Imh0dHBzOi8vZGlnaXRhbC5uaC1ob3RlbHMuY29tOjQ0My9z
YXAvcHVibGljL2N1YW4vbGluay8xMDAvQ0NGRkNCMjEzMENGMjA2RDU3NDMxNUNGNDMyRkE0MTNF
NjA5NjREMT9fVl89MiZfSzExXz0zMDdCNjJCNzlENDQwMEIwRUVBODQyMUI5Q0NEMENGOTUxMERF
MzhCJl9MNTRBRDFGMjA0Xz1jMk5sYm1GeWFXODlUVXhEVUVjbWRHRnlaMlYwUFdoMGRIQnpPaTh2
ZDNkM0xtMXBibTl5YUc5MFpXeHpMbU52YlM5bGJpOWliRzluTDNSeVlYWmxiQzEwZVhCbGN5OWla
WE4wTFhKdllXUXRkSEpwY0Mxa1pYTjBhVzVoZEdsdmJuTS9kWFJ0WDNOdmRYSmpaVDF1WlhkemJH
VjBkR1Z5Sm5WMGJWOXRaV1JwZFcwOVpXMWhhV3dtZFhSdFgyTmhiWEJoYVdkdVBXVnRZV2xzYVc1
blgyRnRaV0ZmTWpBeU5WRTBMVEV6TVRCZlJWVkJUUzFQWTNRdFJYaDBjbUZ2Y21ScGJtRnllVjlO
U0Y5RlJFMWZSVTRtYzJGd0xXOTFkR0p2ZFc1a0xXbGtQVU5EUmtaRFFqSXhNekJEUmpJd05rUTFO
elF6TVRWRFJqUXpNa1pCTkRFelJUWXdPVFkwUkRFJl9LMTNfPTM2NSZfSzE0Xz05MzRiNTk5MzFh
MTFmOWEyZTU4Nzc3ZjE0NmY5MzViNWQwNDdkMjQzYjhjMjFhYmQ1YjNkM2RiYTU3NTYwNjIzIiB0
YXJnZXQ9Il9ibGFuayIgdGl0bGU9IiAiPjxpbWcgY2xhc3M9ImRldmljZVdpZHRoVGV4dCIgc3Jj
PSJodHRwczovL2luZm8ubmgtaG90ZWxzLmNvbS9jYW1wYWlnbi8yMDI1LzEwbWluaG90ZXh0ZXhw
L251ZXZhLmpwZyIgYm9yZGVyPSIwIiBhbHQ9IiAiIHRpdGxlPSIgIiB3aWR0aD0iNjUwIiBzdHls
ZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogMCBhdXRvOyBvcGFjaXR5OiAxOyI+PC9hPjwvdGQ+
CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+CjwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+Cjx0
YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxw
YWRkaW5nPSIwIiB3aWR0aD0iOTAlIiBiZ2NvbG9yPSIjZmZmZmZmIiBhbGlnbj0iY2VudGVyIj4K
PHRib2R5Pgo8dHI+Cjx0ZD4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aFRleHQiIHdpZHRoPSI5
MCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBhbGlnbj0iY2Vu
dGVyIj4KPHRib2R5Pgo8dHI+Cjx0ZCBoZWlnaHQ9IjI1IiBzdHlsZT0iZm9udC1zaXplOiAxcHg7
IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBhbGlnbj0iY2Vu
dGVyIiBzdHlsZT0iY29sb3I6ICMxMzIxM2M7IGZvbnQtc2l6ZTogMjJweDsgdGV4dC1hbGlnbjog
Y2VudGVyOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbDsgZm9udC13ZWlnaHQ6IGJv
bGQ7Ij5Zb3VyIEpvdXJuZXkgb2YgYSBMaWZldGltZTogVGhlIFdvcmxkJnJzcXVvO3MgR3JlYXRl
c3QgUm9hZCZuYnNwO1RyaXBzIDwvc3Bhbj48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBoZWlnaHQ9IjIw
IiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8
L3RyPgo8dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIiBzdHlsZT0iY29sb3I6ICMxMzIxM2M7IGZvbnQt
c2l6ZTogMThweDsgbGluZS1oZWlnaHQ6IDIycHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTogU2l0a2EgQmFubmVyIFJlZ3VsYXI7Ij5DcnVpc2UgdHJvcGlj
YWwgY29hc3RzIGluIE1hdXJpdGl1cywgd2luZCB0aHJvdWdoIEV1cm9wZSZyc3F1bztzIHN0b3J5
Ym9vayBtb3VudGFpbnMsIGFuZCBjaGFzZSB3aGFsZXMgYW5kIHdhdGVyZmFsbHMgYWNyb3NzIEF1
c3RyYWxpYSBhbmQgTmV3Jm5ic3A7WmVhbGFuZC48L3NwYW4+PC90ZD4KPC90cj4KPHRyPgo8dGQg
aGVpZ2h0PSIwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJz
cDs8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBoZWln
aHQ9IjI1IiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8
L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8dGFibGUgY2xhc3M9ImRldmljZVdpZHRoVGV4
dCIgd2lkdGg9IjkwJSIgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIg
Y2VsbHBhZGRpbmc9IjAiIGJnY29sb3I9IiNmZmZmZmYiPgo8dGJvZHkgYWxpZ249ImNlbnRlciI+
Cjx0cj4KPHRkIGhlaWdodD0iMCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDog
MXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQ+Cjx0YWJsZSBjbGFzcz0iYnRuIiBhbGln
bj0iY2VudGVyIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYm9yZGVyLWNvbGxhcHNl
OiBzZXBhcmF0ZSAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBh
dXRvOyB3aWR0aDogYXV0bzsiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5n
PSIwIj4KPHRib2R5Pgo8dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIiB2YWxpZ249ImNlbnRlciIgc3R5
bGU9ImJhY2tncm91bmQ6ICMxMzIxM2M7IGJvcmRlci1yYWRpdXM6IDFweDsgYm94LXNpemluZzog
Ym9yZGVyLWJveDsgdGV4dC1hbGlnbjogY2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyI+PGEg
cmVsPSJub29wZW5lciBub3JlZmVycmVyIiBocmVmPSJodHRwczovL2RpZ2l0YWwubmgtaG90ZWxz
LmNvbTo0NDMvc2FwL3B1YmxpYy9jdWFuL2xpbmsvMTAwL0NDRkZDQjIxMzBDRjIwNkQ1NzQzMTVD
RjQzMkZBNDEzRTYwOTY0RDE/X1ZfPTImX0sxMV89N0M2MkFCMzQ3MDhEOUQxMkU3RTgzQkMwNTM4
RUEzNEQwN0U1NTMwNSZfTDU0QUQxRjIwNF89YzJObGJtRnlhVzg5VFV4RFVFY21kR0Z5WjJWMFBX
aDBkSEJ6T2k4dmQzZDNMbTFwYm05eWFHOTBaV3h6TG1OdmJTOWxiaTlpYkc5bkwzUnlZWFpsYkMx
MGVYQmxjeTlpWlhOMExYSnZZV1F0ZEhKcGNDMWtaWE4wYVc1aGRHbHZibk0vZFhSdFgzTnZkWEpq
WlQxdVpYZHpiR1YwZEdWeUpuVjBiVjl0WldScGRXMDlaVzFoYVd3bWRYUnRYMk5oYlhCaGFXZHVQ
V1Z0WVdsc2FXNW5YMkZ0WldGZk1qQXlOVkUwTFRFek1UQmZSVlZCVFMxUFkzUXRSWGgwY21GdmNt
UnBibUZ5ZVY5TlNGOUZSRTFmUlU0bWMyRndMVzkxZEdKdmRXNWtMV2xrUFVORFJrWkRRakl4TXpC
RFJqSXdOa1ExTnpRek1UVkRSalF6TWtaQk5ERXpSVFl3T1RZMFJERSZfSzEzXz0zNjUmX0sxNF89
MDQzM2FjN2I1YzkyODg2YmYwNzcyMGEyMTE3YWNhZDEzNzMxY2FkNGY5YzY0YjlmYjg2ZGMyNjQw
ZjJhY2U5OCIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSIgIiBzdHlsZT0iYmFja2dyb3VuZDogIzEz
MjEzYzsgYm9yZGVyOiA2cHggc29saWQgIzEzMjEzYzsgYm94LXNpemluZzogYm9yZGVyLWJveDsg
Y29sb3I6ICNmZmZmZmY7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6
ZTogMTZweDsgcGFkZGluZzogNXB4IDEwcHggNXB4IDEwcHg7IG1hcmdpbjogMDsgbXNvLXBhZGRp
bmctYWx0OiA2OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNh
c2U7IGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsiPjwhLS1baWYgbXNvXT4mbmJzcDsm
enduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJz
cDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajs8IVtlbmRpZl0tLT5ISVQgVEhFIE9QRU4g
Uk9BRDwhLS1baWYgbXNvXT4mbmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJz
cDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajs8
IVtlbmRpZl0tLT48L2E+PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPC90ZD4KPC90cj4K
PHRyPgo8dGQgaGVpZ2h0PSIwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAx
cHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tSU1HLS0+Cjx0YWJs
ZSBjbGFzcz0iZGV2aWNlV2lkdGggZGFya21vZGUiIHdpZHRoPSI2NTAiIGFsaWduPSJjZW50ZXIi
IGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBzdHlsZT0icGFkZGlu
ZzogMDsgbWFyZ2luOiAwOyBmb250LXNpemU6IDA7IGxpbmUtaGVpZ2h0OiAwOyIgYmdjb2xvcj0i
I2ZmZmZmZiI+Cjx0Ym9keT4KPHRyPgo8dGQ+PGNlbnRlcj48YSByZWw9Im5vb3BlbmVyIG5vcmVm
ZXJyZXIiIGhyZWY9Imh0dHBzOi8vZGlnaXRhbC5uaC1ob3RlbHMuY29tOjQ0My9zYXAvcHVibGlj
L2N1YW4vbGluay8xMDAvQ0NGRkNCMjEzMENGMjA2RDU3NDMxNUNGNDMyRkE0MTNFNjA5NjREMT9f
Vl89MiZfSzExXz04NTIwQjgwNDlCNDg0REVCREI1QkJDRTg5NjEyODY0MDZDMUFDN0M3Jl9MNTRB
RDFGMjA0Xz1jMk5sYm1GeWFXODlUVXhEVUVjbWRHRnlaMlYwUFdoMGRIQnpPaTh2ZDNkM0xtMXBi
bTl5YUc5MFpXeHpMbU52YlM5bGJpOWliRzluTDJsdWMzQnBjbUYwYVc5dUwyUmhibU5wYm1jdGFH
OXNhV1JoZVhNdGJXOTJaUzEwY21GdWMyWnZjbTB0Wm1WbGJDMWhiR2wyWlQ5MWRHMWZjMjkxY21O
bFBXNWxkM05zWlhSMFpYSW1kWFJ0WDIxbFpHbDFiVDFsYldGcGJDWjFkRzFmWTJGdGNHRnBaMjQ5
WlcxaGFXeHBibWRmWVcxbFlWOHlNREkxVVRRdE1UTXhNRjlGVlVGTkxVOWpkQzFGZUhSeVlXOXla
R2x1WVhKNVgwMUlYMFZFVFY5RlRpWnpZWEF0YjNWMFltOTFibVF0YVdROVEwTkdSa05DTWpFek1F
TkdNakEyUkRVM05ETXhOVU5HTkRNeVJrRTBNVE5GTmpBNU5qUkVNUSZfSzEzXz0zNjUmX0sxNF89
OTQ3MDIxMTZlYTk4Zjk3YjM3ZDA3NzE0ZjMyODEwNWJmMDc4Mzk0OTQ5MGI2ODJkYTY1NGUyYmYx
NDgwMWRjZiIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgY2xhc3M9ImRldmljZVdpZHRoIiBzcmM9Imh0
dHBzOi8vaW5mby5uaC1ob3RlbHMuY29tL2NhbXBhaWduLzIwMjUvMTBtaW5ob3RleHRleHAvbW9t
ZW50cy5wbmciIGJvcmRlcj0iMCIgYWx0PSIgIiB0aXRsZT0iICIgd2lkdGg9IjM5MCIgc3R5bGU9
ImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IDA7IG9wYWNpdHk6IDE7IHBhZGRpbmc6IDA7IGZvbnQt
c2l6ZTogMDsgbGluZS1oZWlnaHQ6IDA7Ij48L2E+PC9jZW50ZXI+PC90ZD4KPC90cj4KPC90Ym9k
eT4KPC90YWJsZT4KPCEtLUJMT0NLIEMgMiBDT0xVTU5TLS0+IDwhLS1Sb3cgMS0tPgo8dGFibGUg
Y2xhc3M9ImRldmljZVdpZHRoVGV4dCIgd2lkdGg9IjY1MCIgYmdjb2xvcj0iI2ZmZmZmZiIgYWxp
Z249ImNlbnRlciIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgo8
dGJvZHk+Cjx0cj4KPHRkIGhlaWdodD0iMCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhl
aWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciI+Cjx0
YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgiIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBib3Jk
ZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Cjx0Ym9keT4KPHRyIGFsaWdu
PSJjZW50ZXIiPgo8dGQ+PCEtLSAxIGxlZnQgLS0+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgi
IGFsaWduPSJsZWZ0IiB3aWR0aD0iNDklIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxs
cGFkZGluZz0iMCIgYmdjb2xvcj0iI2ZhZjdmMiIgc3R5bGU9ImZsb2F0OiBsZWZ0OyI+Cjx0Ym9k
eT4KPHRyIGFsaWduPSJsZWZ0Ij4KPHRkPjxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJl
Zj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9saW5r
LzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9LMTFf
PUIzNTU2MTEwQjUzNkVGRDVEQzg4MUVBRTQ5OEE4NDdBMjM2Q0E4RDEmX0w1NEFEMUYyMDRfPWMy
TmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9pOHZkM2QzTG0xcGJtOXlhRzkwWld4
ekxtTnZiUzlsYmk5aWJHOW5MMmx1YzNCcGNtRjBhVzl1TDJSaGJtTnBibWN0YUc5c2FXUmhlWE10
Ylc5MlpTMTBjbUZ1YzJadmNtMHRabVZsYkMxaGJHbDJaVDkxZEcxZmMyOTFjbU5sUFc1bGQzTnNa
WFIwWlhJbWRYUnRYMjFsWkdsMWJUMWxiV0ZwYkNaMWRHMWZZMkZ0Y0dGcFoyNDlaVzFoYVd4cGJt
ZGZZVzFsWVY4eU1ESTFVVFF0TVRNeE1GOUZWVUZOTFU5amRDMUZlSFJ5WVc5eVpHbHVZWEo1WDAx
SVgwVkVUVjlGVGlaellYQXRiM1YwWW05MWJtUXRhV1E5UTBOR1JrTkNNakV6TUVOR01qQTJSRFUz
TkRNeE5VTkdORE15UmtFME1UTkZOakE1TmpSRU1RJl9LMTNfPTM2NSZfSzE0Xz0wZjI2MGJlNzlj
ZTQ2ZmNhZGYwM2M4MDA1Mzk3YzMzMTgyMjc0MGUyYmFjMjZkZTk5ZjcxNTM0YWNmNTYzODliIiB0
YXJnZXQ9Il9ibGFuayI+PGltZyBjbGFzcz0iZGV2aWNlV2lkdGgiIHNyYz0iaHR0cHM6Ly9pbmZv
Lm5oLWhvdGVscy5jb20vY2FtcGFpZ24vMjAyNS8xMG1pbmhvdGV4dGV4cC9uaG93LWZyYW5rdXJ0
LmpwZyIgYm9yZGVyPSIwIiBhbHQ9IiAiIHdpZHRoPSIxMDAlIiBzdHlsZT0iZGlzcGxheTogYmxv
Y2s7IG1hcmdpbjogMCBhdXRvOyI+PC9hPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGhlaWdodD0iMjUi
IHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+Cjwv
dHI+Cjx0cj4KPHRkPgo8dGFibGUgY2xhc3M9ImRldmljZVdpZHRoIiB3aWR0aD0iOTAlIiBiZ2Nv
bG9yPSIjZmFmN2YyIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBj
ZWxscGFkZGluZz0iMCI+Cjx0Ym9keT4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciIgc3R5bGU9ImNv
bG9yOiAjMTMyMTNjOyBmb250LXNpemU6IDIwcHg7IGxpbmUtaGVpZ2h0OiAyN3B4OyB0ZXh0LWFs
aWduOiBjZW50ZXI7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsOyBmb250LXdlaWdo
dDogYm9sZDsiPk1vdmUsIFRyYW5zZm9ybSwgYW5kIEZlZWwgQWxpdmUgd2l0aCZuYnNwO0RhbmNl
IDwvc3Bhbj48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBoZWlnaHQ9IjE1IiBzdHlsZT0iZm9udC1zaXpl
OiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBhbGln
bj0iY2VudGVyIiBzdHlsZT0iY29sb3I6ICMxMzIxM2M7IGZvbnQtc2l6ZTogMThweDsgbGluZS1o
ZWlnaHQ6IDIycHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTogU2l0a2EgQmFubmVyIFJlZ3VsYXI7Ij5FeHBlcmllbmNlIG9uZS1vZi1hLWtpbmQgc3RheXMg
aW4gbmhvdyZyc3F1bztzIG1vc3QgY3JlYXRpdmVseSBkZXNpZ25lZCBob3RlbHMsIHdoZXJlIG1v
dmVtZW50IGZ1ZWxzIGNyZWF0aXZpdHkgYW5kIGJvb3N0cyZuYnNwO3dlbGwtYmVpbmcuPC9zcGFu
PjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGhlaWdodD0iMjUiIHN0eWxlPSJmb250LXNpemU6IDFweDsg
bGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+Cjx0cj4KPHRkPgo8dGFibGUgY2xh
c3M9ImJ0biIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJv
cmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6IGF1dG87IG1h
cmdpbi1yaWdodDogYXV0bzsgd2lkdGg6IGF1dG87IiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIw
IiBjZWxscGFkZGluZz0iMCI+Cjx0Ym9keT4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciIgdmFsaWdu
PSJjZW50ZXIiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjMTMyMTNjOyBib3JkZXItcmFkaXVzOiAxcHg7
IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IHRleHQtYWxpZ246IGNlbnRlcjsgdmVydGljYWwtYWxp
Z246IHRvcDsiPjxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJlZj0iaHR0cHM6Ly9kaWdp
dGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9saW5rLzEwMC9DQ0ZGQ0IyMTMw
Q0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9LMTFfPTM4MUY3RTYxMjVDQzNE
RTI5QTBERjk3QjdBMDNEQUNCQ0EzNkU5NjkmX0w1NEFEMUYyMDRfPWMyTmxibUZ5YVc4OVRVeERV
RWNtZEdGeVoyVjBQV2gwZEhCek9pOHZkM2QzTG0xcGJtOXlhRzkwWld4ekxtTnZiUzlsYmk5aWJH
OW5MMmx1YzNCcGNtRjBhVzl1TDJSaGJtTnBibWN0YUc5c2FXUmhlWE10Ylc5MlpTMTBjbUZ1YzJa
dmNtMHRabVZsYkMxaGJHbDJaVDkxZEcxZmMyOTFjbU5sUFc1bGQzTnNaWFIwWlhJbWRYUnRYMjFs
WkdsMWJUMWxiV0ZwYkNaMWRHMWZZMkZ0Y0dGcFoyNDlaVzFoYVd4cGJtZGZZVzFsWVY4eU1ESTFV
VFF0TVRNeE1GOUZWVUZOTFU5amRDMUZlSFJ5WVc5eVpHbHVZWEo1WDAxSVgwVkVUVjlGVGlaellY
QXRiM1YwWW05MWJtUXRhV1E5UTBOR1JrTkNNakV6TUVOR01qQTJSRFUzTkRNeE5VTkdORE15UmtF
ME1UTkZOakE1TmpSRU1RJl9LMTNfPTM2NSZfSzE0Xz00ZTY3M2QxZDA4ZTJkNTNmZjcwNjI1ZWUx
YTljZWJkNzE0MWE4ZmNkYzNiYzFjNWU0NjhiODI4MDcxZDliZDQxIiB0YXJnZXQ9Il9ibGFuayIg
dGl0bGU9IkJ1dHRvbiIgY2xhc3M9ImRldmljZU1fdGV4dDEwIiBzdHlsZT0iYmFja2dyb3VuZDog
IzEzMjEzYzsgYm9yZGVyOiA2cHggc29saWQgIzEzMjEzYzsgYm94LXNpemluZzogYm9yZGVyLWJv
eDsgY29sb3I6ICNmZmZmZmY7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogYmxvY2s7IGZvbnQt
c2l6ZTogMTZweDsgcGFkZGluZzogNXB4IDEwcHggNXB4IDEwcHg7IG1hcmdpbjogMDsgbXNvLXBh
ZGRpbmctYWx0OiA2OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQtdHJhbnNmb3JtOiB1cHBl
cmNhc2U7IGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsiPjwhLS1baWYgbXNvXT4mbmJz
cDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsm
bmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajs8IVtlbmRpZl0tLT5EQU5DRSBOSE9X
PCEtLVtpZiBtc29dPiZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6
d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOzwhW2Vu
ZGlmXS0tPjwvYT48L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8dHI+
Cjx0ZCBoZWlnaHQ9IjMwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7
Ij4mbmJzcDs8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8L3Rib2R5
Pgo8L3RhYmxlPgo8IS0tIC9sZWZ0IC0tPiA8IS0tIDIgcmlnaHQgLS0+Cjx0YWJsZSBjbGFzcz0i
ZGV2aWNlV2lkdGgiIGFsaWduPSJyaWdodCIgd2lkdGg9IjQ5JSIgYm9yZGVyPSIwIiBjZWxsc3Bh
Y2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJnY29sb3I9IiNmYWY3ZjIiIHN0eWxlPSJmbG9hdDog
cmlnaHQ7Ij4KPHRib2R5Pgo8dHIgYWxpZ249InJpZ2h0Ij4KPHRkPjxhIHJlbD0ibm9vcGVuZXIg
bm9yZWZlcnJlciIgaHJlZj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9w
dWJsaWMvY3Vhbi9saW5rLzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2
NEQxP19WXz0yJl9LMTFfPUNCMjRCQTdDRDU0NTg3M0NGRTQzMzM0RTk3MDI2RjVCQjkyNjBFRTEm
X0w1NEFEMUYyMDRfPWMyTmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9pOHZkM2Qz
TG0xcGJtOXlhRzkwWld4ekxtTnZiUzlsYmk5aWJHOW5MM0JzWVdObGN5OWlZVzVuYTI5ckwyWjFi
aTEwYUdsdVozTXRkRzh0Wkc4L2RYUnRYM052ZFhKalpUMXVaWGR6YkdWMGRHVnlKblYwYlY5dFpX
UnBkVzA5WlcxaGFXd21kWFJ0WDJOaGJYQmhhV2R1UFdWdFlXbHNhVzVuWDJGdFpXRmZNakF5TlZF
MExURXpNVEJmUlZWQlRTMVBZM1F0UlhoMGNtRnZjbVJwYm1GeWVWOU5TRjlGUkUxZlJVNG1jMkZ3
TFc5MWRHSnZkVzVrTFdsa1BVTkRSa1pEUWpJeE16QkRSakl3TmtRMU56UXpNVFZEUmpRek1rWkJO
REV6UlRZd09UWTBSREUmX0sxM189MzY1Jl9LMTRfPTdlODQ4YzVkNDk3OTFiNjViNWU3MjUxMzFj
NTU2MDZhNjUyZWYzYzA5ZmIzYzk3MGNhZGZlY2RiZTIzMDc0M2IiIHRhcmdldD0iX2JsYW5rIj48
aW1nIGNsYXNzPSJkZXZpY2VXaWR0aCIgc3JjPSJodHRwczovL2luZm8ubmgtaG90ZWxzLmNvbS9j
YW1wYWlnbi8yMDI1LzEwbWluaG90ZXh0ZXhwL2Jhbmdrb2suZ2lmIiBib3JkZXI9IjAiIGFsdD0i
ICIgd2lkdGg9IjEwMCUiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAwIGF1dG87Ij48
L2E+PC90ZD4KPC90cj4KPHRyPgo8dGQgaGVpZ2h0PSIyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4
OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQ+Cjx0YWJsZSBj
bGFzcz0iZGV2aWNlV2lkdGgiIHdpZHRoPSI5MCUiIGJnY29sb3I9IiNmYWY3ZjIiIGFsaWduPSJj
ZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KPHRib2R5
Pgo8dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIiBzdHlsZT0iY29sb3I6ICMxMzIxM2M7IGZvbnQtc2l6
ZTogMjBweDsgbGluZS1oZWlnaHQ6IDI3cHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuIHN0
eWxlPSJmb250LWZhbWlseTogQXJpYWw7IGZvbnQtd2VpZ2h0OiBib2xkOyI+QmFuZ2tvayBCZXlv
bmQgPGJyIGNsYXNzPSJkZXZpY2VIaWRlIj50aGUmbmJzcDtPcmRpbmFyeSA8L3NwYW4+PC90ZD4K
PC90cj4KPHRyPgo8dGQgaGVpZ2h0PSIxNSIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhl
aWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciIgc3R5
bGU9ImNvbG9yOiAjMTMyMTNjOyBmb250LXNpemU6IDE4cHg7IGxpbmUtaGVpZ2h0OiAyMnB4OyB0
ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFNpdGthIEJhbm5l
ciBSZWd1bGFyOyI+U3RlcCBvZmYgdGhlIHRvdXJpc3QgdHJhaWwgYW5kIGRpdmUgaW50byBjcmVh
dGl2ZSB3b3Jrc2hvcHMsIGJ1enppbmcgZGlzdHJpY3RzIGFuZCByb29mdG9wIHN1cnByaXNlcyBm
b3IgYSBzaWRlIG9mIEJhbmdrb2sgZmV3IGV2ZXImbmJzcDtzZWUuPC9zcGFuPjwvdGQ+CjwvdHI+
Cjx0cj4KPHRkIGhlaWdodD0iMjUiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6
IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+Cjx0cj4KPHRkPgo8dGFibGUgY2xhc3M9ImJ0biIgYWxp
Z249ImNlbnRlciIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJvcmRlci1jb2xsYXBz
ZTogc2VwYXJhdGUgIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDog
YXV0bzsgd2lkdGg6IGF1dG87IiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGlu
Zz0iMCI+Cjx0Ym9keT4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJjZW50ZXIiIHN0
eWxlPSJiYWNrZ3JvdW5kOiAjMTMyMTNjOyBib3JkZXItcmFkaXVzOiAxcHg7IGJveC1zaXppbmc6
IGJvcmRlci1ib3g7IHRleHQtYWxpZ246IGNlbnRlcjsgdmVydGljYWwtYWxpZ246IHRvcDsiPjxh
IHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJlZj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVs
cy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9saW5rLzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1
Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9LMTFfPTdCOTI0MkU3MEM3RjIxM0Q2MTU0MUYyODRE
N0IzMDUyRjk3QTYwNjgmX0w1NEFEMUYyMDRfPWMyTmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQ
V2gwZEhCek9pOHZkM2QzTG0xcGJtOXlhRzkwWld4ekxtTnZiUzlsYmk5aWJHOW5MM0JzWVdObGN5
OWlZVzVuYTI5ckwyWjFiaTEwYUdsdVozTXRkRzh0Wkc4L2RYUnRYM052ZFhKalpUMXVaWGR6YkdW
MGRHVnlKblYwYlY5dFpXUnBkVzA5WlcxaGFXd21kWFJ0WDJOaGJYQmhhV2R1UFdWdFlXbHNhVzVu
WDJGdFpXRmZNakF5TlZFMExURXpNVEJmUlZWQlRTMVBZM1F0UlhoMGNtRnZjbVJwYm1GeWVWOU5T
RjlGUkUxZlJVNG1jMkZ3TFc5MWRHSnZkVzVrTFdsa1BVTkRSa1pEUWpJeE16QkRSakl3TmtRMU56
UXpNVFZEUmpRek1rWkJOREV6UlRZd09UWTBSREUmX0sxM189MzY1Jl9LMTRfPTNkMzVhMGQ1N2Jk
MmE2Yzg0MDU0ODM0OTFmYmIwNzM3ZGY2NDQ5ZjkwNDZlOGE5NGE4ZjViZDhlODg5MmE3M2MiIHRh
cmdldD0iX2JsYW5rIiB0aXRsZT0iQnV0dG9uIiBjbGFzcz0iZGV2aWNlTV90ZXh0MTAiIHN0eWxl
PSJiYWNrZ3JvdW5kOiAjMTMyMTNjOyBib3JkZXI6IDZweCBzb2xpZCAjMTMyMTNjOyBib3gtc2l6
aW5nOiBib3JkZXItYm94OyBjb2xvcjogI2ZmZmZmZjsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5
OiBibG9jazsgZm9udC1zaXplOiAxNnB4OyBwYWRkaW5nOiA1cHggMTBweCA1cHggMTBweDsgbWFy
Z2luOiAwOyBtc28tcGFkZGluZy1hbHQ6IDY7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC10
cmFuc2Zvcm06IHVwcGVyY2FzZTsgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyI+PCEt
LVtpZiBtc29dPiZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25q
OyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOzwhW2VuZGlm
XS0tPlRSQVZFTCBCRVlPTkQ8IS0tW2lmIG1zb10+Jm5ic3A7Jnp3bmo7Jm5ic3A7Jnp3bmo7Jm5i
c3A7Jnp3bmo7Jm5ic3A7Jnp3bmo7Jm5ic3A7Jnp3bmo7Jm5ic3A7Jnp3bmo7Jm5ic3A7Jnp3bmo7
Jm5ic3A7Jnp3bmo7PCFbZW5kaWZdLS0+PC9hPjwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+
CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGhlaWdodD0iMzAiIHN0eWxlPSJmb250LXNpemU6IDFweDsg
bGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+Cjwv
dGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+CjwhLS0gL3JpZ2h0IC0tPjwvdGQ+CjwvdHI+Cjx0
cj4KPHRkIGhlaWdodD0iMjUiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFw
eDsiPiZuYnNwOzwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+CjwvdGQ+CjwvdHI+CjwvdGJv
ZHk+CjwvdGFibGU+CjwhLS0vUm93IDEtLT4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aFRleHQi
IHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBj
ZWxscGFkZGluZz0iMCI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQgaGVpZ2h0PSIz
MCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4K
PC90cj4KPC90Ym9keT4KPC90YWJsZT4KPCEtLUJMT0NLIEUgQk9SREVSLS0+Cjx0YWJsZSBjbGFz
cz0iZGV2aWNlV2lkdGgiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNl
bGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Cjx0Ym9keT4KPHRyPgo8dGQ+Cjx0YWJsZSBj
bGFzcz0iZGV2aWNlV2lkdGgiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAi
IGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYmdjb2xvcj0iI2ZmZmZmZiI+Cjx0Ym9k
eT4KPHRyPgo8dGQgaGVpZ2h0PSIwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0
OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIj48YSByZWw9
Im5vb3BlbmVyIG5vcmVmZXJyZXIiIGhyZWY9Imh0dHBzOi8vZGlnaXRhbC5uaC1ob3RlbHMuY29t
OjQ0My9zYXAvcHVibGljL2N1YW4vbGluay8xMDAvQ0NGRkNCMjEzMENGMjA2RDU3NDMxNUNGNDMy
RkE0MTNFNjA5NjREMT9fVl89MiZfSzExXz1DOTFERjNFM0UwMTU3MzcyMTI1OTc3RTUxRDBBQ0VC
QjFFMzg2NzBCJl9MNTRBRDFGMjA0Xz1jMk5sYm1GeWFXODlUVXhEVUVjbWRHRnlaMlYwUFdoMGRI
QnpPaTh2ZDNkM0xtMXBibTl5YUc5MFpXeHpMbU52YlM5bGJpOWliRzluTDNSeVlYWmxiQzEwZVhC
bGN5OTFibWx4ZFdVdGJIVjRkWEo1TFhSeVlYWmxiQzFsZUhCbGNtbGxibU5sY3o5MWRHMWZjMjkx
Y21ObFBXNWxkM05zWlhSMFpYSW1kWFJ0WDIxbFpHbDFiVDFsYldGcGJDWjFkRzFmWTJGdGNHRnBa
MjQ5WlcxaGFXeHBibWRmWVcxbFlWOHlNREkxVVRRdE1UTXhNRjlGVlVGTkxVOWpkQzFGZUhSeVlX
OXlaR2x1WVhKNVgwMUlYMFZFVFY5RlRpWnpZWEF0YjNWMFltOTFibVF0YVdROVEwTkdSa05DTWpF
ek1FTkdNakEyUkRVM05ETXhOVU5HTkRNeVJrRTBNVE5GTmpBNU5qUkVNUSZfSzEzXz0zNjUmX0sx
NF89NjcwYmNkZmVkN2FkNWRlNzZhNmE3NWJjNGJhNjI3NTRkYmRlZWZiMmRkNjg1ZTEzM2JkOWM3
ZjlkYWI2ZTk1OCIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSIgIj48aW1nIGNsYXNzPSJkZXZpY2VX
aWR0aFRleHQiIHNyYz0iaHR0cHM6Ly9pbmZvLm5oLWhvdGVscy5jb20vY2FtcGFpZ24vMjAyNS8x
MG1pbmhvdGV4dGV4cC90aW1lLmdpZiIgYm9yZGVyPSIwIiBhbHQ9IiAiIHRpdGxlPSIgIiB3aWR0
aD0iNjUwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogMCBhdXRvOyBvcGFjaXR5OiAx
OyI+PC9hPjwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+CjwvdGQ+CjwvdHI+CjwvdGJvZHk+
CjwvdGFibGU+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgiIGJvcmRlcj0iMCIgY2VsbHNwYWNp
bmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iOTAlIiBiZ2NvbG9yPSIjZmZmZmZmIiBhbGln
bj0iY2VudGVyIj4KPHRib2R5Pgo8dHI+Cjx0ZD4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aFRl
eHQiIHdpZHRoPSI5MCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIw
IiBhbGlnbj0iY2VudGVyIj4KPHRib2R5Pgo8dHI+Cjx0ZCBoZWlnaHQ9IjI1IiBzdHlsZT0iZm9u
dC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0
ZCBhbGlnbj0iY2VudGVyIiBzdHlsZT0iY29sb3I6ICMxMzIxM2M7IGZvbnQtc2l6ZTogMjJweDsg
dGV4dC1hbGlnbjogY2VudGVyOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbDsgZm9u
dC13ZWlnaHQ6IGJvbGQ7Ij5UYWtlIFRpbWUgZm9yIGEgTGl0dGxlIEluZHVsZ2VuY2UgPC9zcGFu
PjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGhlaWdodD0iMjAiIHN0eWxlPSJmb250LXNpemU6IDFweDsg
bGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGFsaWduPSJjZW50
ZXIiIHN0eWxlPSJjb2xvcjogIzEzMjEzYzsgZm9udC1zaXplOiAxOHB4OyBsaW5lLWhlaWdodDog
MjJweDsgdGV4dC1hbGlnbjogY2VudGVyOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBTaXRr
YSBCYW5uZXIgUmVndWxhcjsiPkxpdmUgYSBsaXR0bGUgYW5kIGluZHVsZ2UgeW91cnNlbGYgaW4g
YSBiaXQgb2YgZ2xvYmFsIGRpbmluZywgdHJhdmVsIHNob3BwaW5nIGFuZCBmYW1pbHkgYWR2ZW50
dXJlcyBhcm91bmQgdGhlIHdvcmxkLjwvc3Bhbj48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBoZWlnaHQ9
IjAiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+
CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGhlaWdodD0iMjUi
IHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+Cjwv
dHI+CjwvdGJvZHk+CjwvdGFibGU+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGhUZXh0IiB3aWR0
aD0iOTAlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFk
ZGluZz0iMCIgYmdjb2xvcj0iI2ZmZmZmZiI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8
dGQgaGVpZ2h0PSIwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4m
bmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4KPHRhYmxlIGNsYXNzPSJidG4iIGFsaWduPSJjZW50
ZXIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBib3JkZXItY29sbGFwc2U6IHNlcGFy
YXRlICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IHdp
ZHRoOiBhdXRvOyIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgo8
dGJvZHk+Cjx0cj4KPHRkIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0iY2VudGVyIiBzdHlsZT0iYmFj
a2dyb3VuZDogIzEzMjEzYzsgYm9yZGVyLXJhZGl1czogMXB4OyBib3gtc2l6aW5nOiBib3JkZXIt
Ym94OyB0ZXh0LWFsaWduOiBjZW50ZXI7IHZlcnRpY2FsLWFsaWduOiB0b3A7Ij48YSByZWw9Im5v
b3BlbmVyIG5vcmVmZXJyZXIiIGhyZWY9Imh0dHBzOi8vZGlnaXRhbC5uaC1ob3RlbHMuY29tOjQ0
My9zYXAvcHVibGljL2N1YW4vbGluay8xMDAvQ0NGRkNCMjEzMENGMjA2RDU3NDMxNUNGNDMyRkE0
MTNFNjA5NjREMT9fVl89MiZfSzExXz02MUZEQTBENUYyQzYzNjVBRUQ5QUYyMTUxN0QwMzhEN0VE
RDkxOURFJl9MNTRBRDFGMjA0Xz1jMk5sYm1GeWFXODlUVXhEVUVjbWRHRnlaMlYwUFdoMGRIQnpP
aTh2ZDNkM0xtMXBibTl5YUc5MFpXeHpMbU52YlM5bGJpOWliRzluTDNSeVlYWmxiQzEwZVhCbGN5
OTFibWx4ZFdVdGJIVjRkWEo1TFhSeVlYWmxiQzFsZUhCbGNtbGxibU5sY3o5MWRHMWZjMjkxY21O
bFBXNWxkM05zWlhSMFpYSW1kWFJ0WDIxbFpHbDFiVDFsYldGcGJDWjFkRzFmWTJGdGNHRnBaMjQ5
WlcxaGFXeHBibWRmWVcxbFlWOHlNREkxVVRRdE1UTXhNRjlGVlVGTkxVOWpkQzFGZUhSeVlXOXla
R2x1WVhKNVgwMUlYMFZFVFY5RlRpWnpZWEF0YjNWMFltOTFibVF0YVdROVEwTkdSa05DTWpFek1F
TkdNakEyUkRVM05ETXhOVU5HTkRNeVJrRTBNVE5GTmpBNU5qUkVNUSZfSzEzXz0zNjUmX0sxNF89
ODk1NTQwY2UzY2RlMjI5MTU2NjEwZjZiMDk1NTM1OWRiOGE3NzA3MmIzMjBkZDNlNjllYTViMzc2
YTYxM2NiNSIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSIgIiBzdHlsZT0iYmFja2dyb3VuZDogIzEz
MjEzYzsgYm9yZGVyOiA2cHggc29saWQgIzEzMjEzYzsgYm94LXNpemluZzogYm9yZGVyLWJveDsg
Y29sb3I6ICNmZmZmZmY7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6
ZTogMTZweDsgcGFkZGluZzogNXB4IDEwcHggNXB4IDEwcHg7IG1hcmdpbjogMDsgbXNvLXBhZGRp
bmctYWx0OiA2OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNh
c2U7IGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsiPjwhLS1baWYgbXNvXT4mbmJzcDsm
enduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajsmbmJz
cDsmenduajsmbmJzcDsmenduajsmbmJzcDsmenduajs8IVtlbmRpZl0tLT5JTkRVTEdFIFlPVVJF
U0xGPCEtLVtpZiBtc29dPiZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNw
OyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOyZuYnNwOyZ6d25qOzwh
W2VuZGlmXS0tPjwvYT48L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8
dHI+Cjx0ZCBoZWlnaHQ9IjAiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFw
eDsiPiZuYnNwOzwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+CjwhLS1JTUctLT4KPHRhYmxl
IGNsYXNzPSJkZXZpY2VXaWR0aCBkYXJrbW9kZSIgd2lkdGg9IjY1MCIgYWxpZ249ImNlbnRlciIg
Ym9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHN0eWxlPSJwYWRkaW5n
OiAwOyBtYXJnaW46IDA7IGZvbnQtc2l6ZTogMDsgbGluZS1oZWlnaHQ6IDA7IiBiZ2NvbG9yPSIj
ZmZmZmZmIj4KPHRib2R5Pgo8dHI+Cjx0ZD48Y2VudGVyPjxpbWcgY2xhc3M9ImRldmljZVdpZHRo
IiBzcmM9Imh0dHBzOi8vaW5mby5uaC1ob3RlbHMuY29tL2NhbXBhaWduLzIwMjUvMTBtaW5ob3Rl
eHRleHAvbmV3LnBuZyIgYm9yZGVyPSIwIiBhbHQ9IiAiIHRpdGxlPSIgIiB3aWR0aD0iMzkwIiBz
dHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogMDsgb3BhY2l0eTogMTsgcGFkZGluZzogMDsg
Zm9udC1zaXplOiAwOyBsaW5lLWhlaWdodDogMDsiPjwvY2VudGVyPjwvdGQ+CjwvdHI+CjwvdGJv
ZHk+CjwvdGFibGU+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgiIGJvcmRlcj0iMCIgY2VsbHNw
YWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciIgYmdj
b2xvcj0iI2ZmZmZmZiI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQ+Cjx0YWJsZSBj
bGFzcz0iZGV2aWNlV2lkdGhUZXh0IiB3aWR0aD0iODAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5n
PSIwIiBjZWxscGFkZGluZz0iMCIgYWxpZ249ImNlbnRlciI+Cjx0Ym9keT4KPHRyPgo8dGQgaGVp
Z2h0PSIwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8
L3RkPgo8L3RyPgo8dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIiBzdHlsZT0iY29sb3I6ICMxMzIxM2M7
IGZvbnQtc2l6ZTogMThweDsgbGluZS1oZWlnaHQ6IDIycHg7IHRleHQtYWxpZ246IGNlbnRlcjsi
IGNsYXNzPSJoZWFkbGluZSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBTaXRrYSBCYW5uZXIg
UmVndWxhcjsiPkV4cGxvcmUgbmV3IGFkZGl0aW9ucyB0byB0aGUgZ3Jvd2luZyBNaW5vciBIb3Rl
bHMgZmFtaWx5LCBmcm9tIEJyYXppbCB0byBJdGFseSBhbmQmbmJzcDtiZXlvbmQuPC9zcGFuPjwv
dGQ+CjwvdHI+Cjx0cj4KPHRkIGhlaWdodD0iMjUiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGlu
ZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+CjwvdGQ+
CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+CjwhLS0gVFdPIENPTFVNTiBIT1RFTCBHUklEIHdpdGgg
cmVkdWNlZCBzcGFjZSBiZXR3ZWVuIGNvbHVtbnMgLS0+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lk
dGgiIHdpZHRoPSI2NTAiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIw
IiBhbGlnbj0iY2VudGVyIiBiZ2NvbG9yPSIjZmZmZmZmIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNl
OiBjb2xsYXBzZTsiPgo8dGJvZHk+Cjx0cj48IS0tIENPTFVNTkEgSVpRVUlFUkRBIC0tPgo8dGQg
d2lkdGg9IjMyMCIgdmFsaWduPSJ0b3AiIHN0eWxlPSJwYWRkaW5nLXJpZ2h0OiAxMHB4OyI+Cjx0
YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9
IjAiIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyI+Cjx0Ym9keT4KPHRyPgo8dGQg
c3R5bGU9InBhZGRpbmctdG9wOiAzcHg7Ij48YSByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIGhy
ZWY9Imh0dHBzOi8vZGlnaXRhbC5uaC1ob3RlbHMuY29tOjQ0My9zYXAvcHVibGljL2N1YW4vbGlu
ay8xMDAvQ0NGRkNCMjEzMENGMjA2RDU3NDMxNUNGNDMyRkE0MTNFNjA5NjREMT9fVl89MiZfSzEx
Xz1FM0RDMzIzMzhGNEMwMkZDQzIxMkY0NDgwOUVGQkVBQzBBQTBBRjQ1Jl9MNTRBRDFGMjA0Xz1j
Mk5sYm1GeWFXODlUVXhEVUVjbWRHRnlaMlYwUFdoMGRIQnpPaTh2ZDNkM0xtMXBibTl5YUc5MFpX
eHpMbU52YlM5bGJpOWtaWE4wYVc1aGRHbHZibk12WW5KaGVtbHNMM0JoY21FdmRHbDJiMnhwTFcx
aGFXOXlZVzVoTFdKbGJHVnRMWEJoY21FdGFHOTBaV3cvZFhSdFgzTnZkWEpqWlQxdVpYZHpiR1Yw
ZEdWeUpuVjBiVjl0WldScGRXMDlaVzFoYVd3bWRYUnRYMk5oYlhCaGFXZHVQV1Z0WVdsc2FXNW5Y
MkZ0WldGZk1qQXlOVkUwTFRFek1UQmZSVlZCVFMxUFkzUXRSWGgwY21GdmNtUnBibUZ5ZVY5TlNG
OUZSRTFmUlU0bWMyRndMVzkxZEdKdmRXNWtMV2xrUFVORFJrWkRRakl4TXpCRFJqSXdOa1ExTnpR
ek1UVkRSalF6TWtaQk5ERXpSVFl3T1RZMFJERSZfSzEzXz0zNjUmX0sxNF89NDU3YmRjMDMwOWZj
MmE1M2JiZTc0Y2EzZTk1NzRjNDE1YTM3MmJlMzZmZGJjMThkNWQ0ZGFjM2JhNmJkOWQ1OSIgdGFy
Z2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2luZm8ubmgtaG90ZWxzLmNvbS9jYW1wYWln
bi8yMDI1LzEwbWluaG90ZXh0ZXhwL2JlbGVtLmpwZyIgYWx0PSIiIHdpZHRoPSIxMDAlIiBzdHls
ZT0iZGlzcGxheTogYmxvY2s7Ij48L2E+PC90ZD4KPC90cj4KPHRyPgo8dGQgc3R5bGU9InBhZGRp
bmctdG9wOiAxMnB4OyI+PGEgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiBocmVmPSJodHRwczov
L2RpZ2l0YWwubmgtaG90ZWxzLmNvbTo0NDMvc2FwL3B1YmxpYy9jdWFuL2xpbmsvMTAwL0NDRkZD
QjIxMzBDRjIwNkQ1NzQzMTVDRjQzMkZBNDEzRTYwOTY0RDE/X1ZfPTImX0sxMV89NDBGOEZERUVC
RTA0MjA0RjRGMTI3NTA5MTc1QTM0NDYyQkVBRTM3MyZfTDU0QUQxRjIwNF89YzJObGJtRnlhVzg5
VFV4RFVFY21kR0Z5WjJWMFBXaDBkSEJ6T2k4dmQzZDNMbTFwYm05eWFHOTBaV3h6TG1OdmJTOWxi
aTlrWlhOMGFXNWhkR2x2Ym5NdmFYUmhiSGt2Y205dFpTOXVhRzkzTFhKdmJXRS9kWFJ0WDNOdmRY
SmpaVDF1WlhkemJHVjBkR1Z5Sm5WMGJWOXRaV1JwZFcwOVpXMWhhV3dtZFhSdFgyTmhiWEJoYVdk
dVBXVnRZV2xzYVc1blgyRnRaV0ZmTWpBeU5WRTBMVEV6TVRCZlJWVkJUUzFQWTNRdFJYaDBjbUZ2
Y21ScGJtRnllVjlOU0Y5RlJFMWZSVTRtYzJGd0xXOTFkR0p2ZFc1a0xXbGtQVU5EUmtaRFFqSXhN
ekJEUmpJd05rUTFOelF6TVRWRFJqUXpNa1pCTkRFelJUWXdPVFkwUkRFJl9LMTNfPTM2NSZfSzE0
Xz05NmUxNmI3YjczYjg5YjQxOTExNGIwODkwZDc4YmE1Nzg0ZDEwNjdiN2IwOWQ3OWZjNTc1N2Ji
MmE4YmIwMzUzIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vaW5mby5uaC1ob3Rl
bHMuY29tL2NhbXBhaWduLzIwMjUvMTBtaW5ob3RleHRleHAvcm9tYS5qcGciIGFsdD0iIiB3aWR0
aD0iMTAwJSIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+PC9hPjwvdGQ+CjwvdHI+Cjx0cj4KPHRk
IHN0eWxlPSJwYWRkaW5nLXRvcDogMTJweDsiPjxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIg
aHJlZj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9s
aW5rLzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9L
MTFfPTFCMUIzODRBMkQxODZDRkVERjQwQTdFMTE3MzEyMUQ0Mjg3QkVBNjcmX0w1NEFEMUYyMDRf
PWMyTmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9pOHZkM2QzTG0xcGJtOXlhRzkw
Wld4ekxtTnZiUzlsYmk5a1pYTjBhVzVoZEdsdmJuTXZibVYzTFhwbFlXeGhibVF2WVhWamEyeGhi
bVF2YjJGcmN5MWhkV05yYkdGdVpDMW9iM1JsYkQ5MWRHMWZjMjkxY21ObFBXNWxkM05zWlhSMFpY
SW1kWFJ0WDIxbFpHbDFiVDFsYldGcGJDWjFkRzFmWTJGdGNHRnBaMjQ5WlcxaGFXeHBibWRmWVcx
bFlWOHlNREkxVVRRdE1UTXhNRjlGVlVGTkxVOWpkQzFGZUhSeVlXOXlaR2x1WVhKNVgwMUlYMFZF
VFY5RlRpWnpZWEF0YjNWMFltOTFibVF0YVdROVEwTkdSa05DTWpFek1FTkdNakEyUkRVM05ETXhO
VU5HTkRNeVJrRTBNVE5GTmpBNU5qUkVNUSZfSzEzXz0zNjUmX0sxNF89NDUzZjI5YmEyNjlkM2Jm
MTk5NzExMTRhN2ZjN2Q4NTIzNzM4ZTc4MDEwYzRlNjhhNzNlMzY4MTZlY2IxMGY5ZCIgdGFyZ2V0
PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2luZm8ubmgtaG90ZWxzLmNvbS9jYW1wYWlnbi8y
MDI1LzEwbWluaG90ZXh0ZXhwL2F1Y2suanBnIiBhbHQ9IiIgd2lkdGg9IjEwMCUiIHN0eWxlPSJk
aXNwbGF5OiBibG9jazsiPjwvYT48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBzdHlsZT0icGFkZGluZy10
b3A6IDEycHg7Ij48YSByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIGhyZWY9Imh0dHBzOi8vZGln
aXRhbC5uaC1ob3RlbHMuY29tOjQ0My9zYXAvcHVibGljL2N1YW4vbGluay8xMDAvQ0NGRkNCMjEz
MENGMjA2RDU3NDMxNUNGNDMyRkE0MTNFNjA5NjREMT9fVl89MiZfSzExXz00QzQxODYwRjU2MDk2
RjBBNTFERjZCOTY5NjMxMjJCNDk2N0M0QkQ3Jl9MNTRBRDFGMjA0Xz1jMk5sYm1GeWFXODlUVXhE
VUVjbWRHRnlaMlYwUFdoMGRIQnpPaTh2ZDNkM0xtMXBibTl5YUc5MFpXeHpMbU52YlM5bGJpOWta
WE4wYVc1aGRHbHZibk12YVhSaGJIa3ZjR0ZzWlhKdGJ5OXVhQzFqYjJ4c1pXTjBhVzl1TFhCaGJH
VnliVzh0Y0dGc1lYcDZieTF6YVhSaGJtOC9kWFJ0WDNOdmRYSmpaVDF1WlhkemJHVjBkR1Z5Sm5W
MGJWOXRaV1JwZFcwOVpXMWhhV3dtZFhSdFgyTmhiWEJoYVdkdVBXVnRZV2xzYVc1blgyRnRaV0Zm
TWpBeU5WRTBMVEV6TVRCZlJWVkJUUzFQWTNRdFJYaDBjbUZ2Y21ScGJtRnllVjlOU0Y5RlJFMWZS
VTRtYzJGd0xXOTFkR0p2ZFc1a0xXbGtQVU5EUmtaRFFqSXhNekJEUmpJd05rUTFOelF6TVRWRFJq
UXpNa1pCTkRFelJUWXdPVFkwUkRFJl9LMTNfPTM2NSZfSzE0Xz1jMTYxYjJmMDA2ODkyMTNlM2Y4
ZTc2ZmMzZjAzZGFkYmFmYjRiMjdhMmM2YzQ2Yjc3NmRiZGVmYWFkNTE0MGRiIiB0YXJnZXQ9Il9i
bGFuayI+PGltZyBzcmM9Imh0dHBzOi8vaW5mby5uaC1ob3RlbHMuY29tL2NhbXBhaWduLzIwMjUv
MTBtaW5ob3RleHRleHAvcGFsZXJtby5qcGciIGFsdD0iIiB3aWR0aD0iMTAwJSIgc3R5bGU9ImRp
c3BsYXk6IGJsb2NrOyI+PC9hPjwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+CjwvdGQ+Cjwh
LS0gQ09MVU1OQSBERVJFQ0hBIC0tPgo8dGQgd2lkdGg9IjMyMCIgdmFsaWduPSJ0b3AiIHN0eWxl
PSJwYWRkaW5nLWxlZnQ6IDBweDsiPgo8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2Vs
bHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xs
YXBzZTsiPgo8dGJvZHk+Cjx0cj4KPHRkPjxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJl
Zj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9saW5r
LzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9LMTFf
PTE0MTAyMkIwMzRDRjdDQzlERDM0M0EyNjI5Q0VFOTFGMUQ1QkNCQ0EmX0w1NEFEMUYyMDRfPWMy
TmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9pOHZkM2QzTG0xcGJtOXlhRzkwWld4
ekxtTnZiUzlsYmk5a1pYTjBhVzVoZEdsdmJuTXZjMlY1WTJobGJHeGxjeTl0WVdobEwyRjJZVzVw
TFdKaGNtSmhjbTl1Y3kxelpYbGphR1ZzYkdWekxYSmxjMjl5ZEQ5MWRHMWZjMjkxY21ObFBXNWxk
M05zWlhSMFpYSW1kWFJ0WDIxbFpHbDFiVDFsYldGcGJDWjFkRzFmWTJGdGNHRnBaMjQ5WlcxaGFX
eHBibWRmWVcxbFlWOHlNREkxVVRRdE1UTXhNRjlGVlVGTkxVOWpkQzFGZUhSeVlXOXlaR2x1WVhK
NVgwMUlYMFZFVFY5RlRpWnpZWEF0YjNWMFltOTFibVF0YVdROVEwTkdSa05DTWpFek1FTkdNakEy
UkRVM05ETXhOVU5HTkRNeVJrRTBNVE5GTmpBNU5qUkVNUSZfSzEzXz0zNjUmX0sxNF89M2E2ZTZj
NDZkMDhmZTgxZGQzOGQ4NjBlNWZmNjdlOGZlYmJkYWQzOGEyMzBjZDk2NmY2NDliZDg0YTI4Y2Ix
YiIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2luZm8ubmgtaG90ZWxzLmNvbS9j
YW1wYWlnbi8yMDI1LzEwbWluaG90ZXh0ZXhwL3NleWNoZWxsZXMuanBnIiBhbHQ9IiIgd2lkdGg9
IjEwMCUiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsiPjwvYT48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBz
dHlsZT0icGFkZGluZy10b3A6IDlweDsiPjxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJl
Zj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9saW5r
LzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9LMTFf
PUQ0NTFGMTM0MkIwMjEyNzgwRjdDMjRFNzEzQzFBODM4RjYyM0Q3NzYmX0w1NEFEMUYyMDRfPWMy
TmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9pOHZkM2QzTG0xcGJtOXlhRzkwWld4
ekxtTnZiUzlsYmk5a1pYTjBhVzVoZEdsdmJuTXZZWFZ6ZEhKaGJHbGhMMk55WVdOclpXNWlZV05y
TDI5aGEzTXRiR0ZyWlMxamNtRmphMlZ1WW1GamF5MXlaWE52Y25RL2RYUnRYM052ZFhKalpUMXVa
WGR6YkdWMGRHVnlKblYwYlY5dFpXUnBkVzA5WlcxaGFXd21kWFJ0WDJOaGJYQmhhV2R1UFdWdFlX
bHNhVzVuWDJGdFpXRmZNakF5TlZFMExURXpNVEJmUlZWQlRTMVBZM1F0UlhoMGNtRnZjbVJwYm1G
eWVWOU5TRjlGUkUxZlJVNG1jMkZ3TFc5MWRHSnZkVzVrTFdsa1BVTkRSa1pEUWpJeE16QkRSakl3
TmtRMU56UXpNVFZEUmpRek1rWkJOREV6UlRZd09UWTBSREUmX0sxM189MzY1Jl9LMTRfPTkzYmM5
NzZlNWVlZjRiY2FiOTgyNTM4MDZmMjIyNDYxZDg0ZTRmMjE3M2FkYmYwY2Q3NTFjYWI3ZjNkNmRl
NmUiIHRhcmdldD0iX2JsYW5rIj48aW1nIHNyYz0iaHR0cHM6Ly9pbmZvLm5oLWhvdGVscy5jb20v
Y2FtcGFpZ24vMjAyNS8xMG1pbmhvdGV4dGV4cC9jcmFja2VuYmFjay5qcGciIGFsdD0iIiB3aWR0
aD0iMTAwJSIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+PC9hPjwvdGQ+CjwvdHI+Cjx0cj4KPHRk
IHN0eWxlPSJwYWRkaW5nLXRvcDogOXB4OyI+PGEgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiBo
cmVmPSJodHRwczovL2RpZ2l0YWwubmgtaG90ZWxzLmNvbTo0NDMvc2FwL3B1YmxpYy9jdWFuL2xp
bmsvMTAwL0NDRkZDQjIxMzBDRjIwNkQ1NzQzMTVDRjQzMkZBNDEzRTYwOTY0RDE/X1ZfPTImX0sx
MV89QURCMDIzMjgxNTU4OTFBMDVCOEQzRkY2Qzc4QzM5NTlCQkRFRERCMyZfTDU0QUQxRjIwNF89
YzJObGJtRnlhVzg5VFV4RFVFY21kR0Z5WjJWMFBXaDBkSEJ6T2k4dmQzZDNMbTFwYm05eWFHOTBa
V3h6TG1OdmJTOWxiaTlrWlhOMGFXNWhkR2x2Ym5NdlpHVnViV0Z5YXk5amIzQmxibWhoWjJWdUwy
NW9MV052Y0dWdWFHRm5aVzR0WjNKaGJtUXRhbTloYm01bFAzVjBiVjl6YjNWeVkyVTlibVYzYzJ4
bGRIUmxjaVoxZEcxZmJXVmthWFZ0UFdWdFlXbHNKblYwYlY5allXMXdZV2xuYmoxbGJXRnBiR2x1
WjE5aGJXVmhYekl3TWpWUk5DMHhNekV3WDBWVlFVMHRUMk4wTFVWNGRISmhiM0prYVc1aGNubGZU
VWhmUlVSTlgwVk9Kbk5oY0MxdmRYUmliM1Z1WkMxcFpEMURRMFpHUTBJeU1UTXdRMFl5TURaRU5U
YzBNekUxUTBZME16SkdRVFF4TTBVMk1EazJORVF4Jl9LMTNfPTM2NSZfSzE0Xz0wODQ5NWQzMWJk
NzUwYWFjZTA1Y2FlMzEzMGU5YzdhMmRlZTkyOTM4OTgwODc3ZjA3MzhkZDg0ZTRmYzdlOWM5IiB0
YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBzOi8vaW5mby5uaC1ob3RlbHMuY29tL2NhbXBh
aWduLzIwMjUvMTBtaW5ob3RleHRleHAvY29wZW5oYWdlbi5qcGciIGFsdD0iIiB3aWR0aD0iMTAw
JSIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+PC9hPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGhlaWdo
dD0iMjAiIHN0eWxlPSJmb250LXNpemU6IDA7IGxpbmUtaGVpZ2h0OiAwOyI+Jm5ic3A7PC90ZD4K
PC90cj4KPC90Ym9keT4KPC90YWJsZT4KPC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT48L2Rp
dj48IS0tW2lmIG1zb10+PC90ZD48L3RyPjwvdGFibGU+PCFbZW5kaWZdLS0+PCEtLVtpZiBtc29d
Pjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYWxpZ249
ImxlZnQiIHN0eWxlPSJtc28tdGFibGUtbHNwYWNlOjBwdDsgIG1zby10YWJsZS1yc3BhY2U6MHB0
OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyB3aWR0aDogMTAwJSI+PHRyPjx0ZCBzdHlsZT0i
d2lkdGg6IDEwMCU7Ij48IVtlbmRpZl0tLT48ZGl2IHN0eWxlPSJmbG9hdDogbGVmdDsgd2lkdGg6
IDEwMCUiIGNsYXNzPSJzYXBNa3RCbG9jayI+4oCLPCEtLU1EIEJFTkVGSVRTIFggTUVNQkVSLS0+
Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNl
bGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iI2U2ZGZjZSIgYWxpZ249ImNlbnRl
ciI+Cjx0Ym9keT4KPHRyPgo8dGQ+Cjx0YWJsZSB3aWR0aD0iOTAlIiBhbGlnbj0iY2VudGVyIiBi
b3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Cjx0Ym9keT4KPHRyPgo8
dGQgaGVpZ2h0PSI0MCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+
Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciI+PGEgcmVsPSJub29wZW5l
ciBub3JlZmVycmVyIiBocmVmPSJodHRwczovL2RpZ2l0YWwubmgtaG90ZWxzLmNvbTo0NDMvc2Fw
L3B1YmxpYy9jdWFuL2xpbmsvMTAwL0NDRkZDQjIxMzBDRjIwNkQ1NzQzMTVDRjQzMkZBNDEzRTYw
OTY0RDE/X1ZfPTImX0sxMV89N0UzNjdGMzY2NTFBRjI5RTNEQkMzMDgwNDY0NUY2NzRCQUJDMzlE
QiZfTDU0QUQxRjIwNF89YzJObGJtRnlhVzg5VFV4RFVFY21kR0Z5WjJWMFBXaDBkSEJ6T2k4dmQz
ZDNMbTFwYm05eWFHOTBaV3h6TG1OdmJTOWxiaTlzYjNsaGJIUjVQM1YwYlY5emIzVnlZMlU5Ym1W
M2MyeGxkSFJsY2laMWRHMWZiV1ZrYVhWdFBXVnRZV2xzSm5WMGJWOWpZVzF3WVdsbmJqMWxiV0Zw
YkdsdVoxOXBiblJsY201aGJDWjFkRzFmZEdWeWJUMUZWVUZOTWpBeU5XaGxZV1JsY21admIzUmxj
aVp6WVhBdGIzVjBZbTkxYm1RdGFXUTlRME5HUmtOQ01qRXpNRU5HTWpBMlJEVTNORE14TlVOR05E
TXlSa0UwTVRORk5qQTVOalJFTVEmX0sxM189MzY1Jl9LMTRfPWFkYmVmZGMxNzAxODk3Y2UwNTg5
NjVlZTA5OWQwODRmNDg4YTIyNTFjMDlhYWVjYzRkNDRkMjg3NTZjMzQzYTYiIHRhcmdldD0iX2Js
YW5rIiB0aXRsZT0iTWlub3IgRElTQ09WRVJZIj48aW1nIGNsYXNzPSJkZXZpY2VXaWR0aDcwIiBz
cmM9Imh0dHBzOi8vaW5mby5uaC1ob3RlbHMuY29tL2NhbXBhaWduLzIwMjUvMDBtaW5vcnRlbXBs
YXRlL21kLXRhZ2xpbmUtYmx1ZS5wbmciIGJvcmRlcj0iMCIgYWx0PSJNaW5vciBESVNDT1ZFUlki
IHRpdGxlPSJNaW5vciBESVNDT1ZFUlkiIHdpZHRoPSIzODAiIHN0eWxlPSJkaXNwbGF5OiBibG9j
azsgbWFyZ2luOiAwIGF1dG87IG9wYWNpdHk6IDE7IiAvPjwvYT48L3RkPgo8L3RyPgo8L3Rib2R5
Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4KPHRhYmxlIHdpZHRoPSI4NSUiIGJvcmRl
cj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBhbGlnbj0iY2VudGVyIj4KPHRi
b2R5Pgo8dHI+Cjx0ZCBoZWlnaHQ9IjI1IiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVp
Z2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIiBzdHls
ZT0iY29sb3I6ICMxMzIxM2M7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE2cHg7IHRl
eHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWw7Ij5Zb3Vy
IG5leHQgZGlyZWN0IGJvb2tpbmcgY29tZXMgd2l0aCBtb3JlIDxiciBjbGFzcz0iZGV2aWNlSGlk
ZSIgLz5tZW1iZXJzLW9ubHkgYmVuZWZpdHM8L3NwYW4+PC90ZD4KPC90cj4KPC90Ym9keT4KPC90
YWJsZT4KPC90ZD4KPC90cj4KPHRyPgo8dGQgaGVpZ2h0PSIzNSIgc3R5bGU9ImZvbnQtc2l6ZTog
MXB4OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJs
ZT4KPCEtLU1FTUJFUiBCRU5FRklUUy0tPiA8IS0tUm93IDEtLT4KPHRhYmxlIGNsYXNzPSJkZXZp
Y2VXaWR0aCIgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHNwYWNp
bmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBiZ2NvbG9yPSIjZTZkZmNlIj4KPHRib2R5Pgo8dHI+Cjx0
ZCBoZWlnaHQ9IjEwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4m
bmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aDcwIiB3
aWR0aD0iNjAlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxs
c3BhY2luZz0iMCI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQ+Cjx0YWJsZSB3aWR0
aD0iMTAwJSIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7
IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxs
c3BhY2luZz0iMCI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQgYWxpZ249ImNlbnRl
ciIgd2lkdGg9IjEyNSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48IS0tTEVGVC0t
PiA8IS0tQm90w7NuIC0tPiA8aW1nIGNsYXNzPSJkZXZpY2VXaWR0aFRleHQiIHNyYz0iaHR0cHM6
Ly9pbmZvLm5oLWhvdGVscy5jb20vY2FtcGFpZ24vMjAyNS8wM2Rpc2NvdmVyeWxhdW5jaC9TSUxW
RVIucG5nIiBib3JkZXI9IjAiIGFsdD0iSW1hZ2UiIHRpdGxlPSJJbWFnZSIgd2lkdGg9IjEyNSIg
c3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IDAgYXV0bzsgb3BhY2l0eTogMTsiIC8+Cjx0
YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGhUZXh0IiB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciIg
Ym9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgo8dGJvZHkgYWxpZ249
ImNlbnRlciI+Cjx0cj4KPHRkIGhlaWdodD0iMTAiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGlu
ZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGFsaWduPSJjZW50ZXIi
IHN0eWxlPSJjb2xvcjogIzEzMjEzYzsgZm9udC1zaXplOiAxMnB4OyBsaW5lLWhlaWdodDogMTRw
eDsgdGV4dC1hbGlnbjogY2VudGVyOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbDsi
PlNJTFZFUiBUaWVyPC9zcGFuPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGhlaWdodD0iMjUiIHN0eWxl
PSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+Cjwv
dGJvZHk+CjwvdGFibGU+CjwhLS0vQm90w7NuLS0+PC90ZD4KPHRkIGFsaWduPSJjZW50ZXIiIHdp
ZHRoPSIyMCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48L3RkPgo8dGQgYWxpZ249
ImNlbnRlciIgd2lkdGg9IjEyNSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48IS0t
UklHSFQtLT4gPCEtLUJvdMOzbiAtLT4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aFRleHQiIHdp
ZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxs
cGFkZGluZz0iMCI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQgYWxpZ249ImNlbnRl
ciIgc3R5bGU9ImNvbG9yOiAjMTMyMTNjOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3BhbiBjbGFz
cz0iZGV2aWNlTV90ZXh0MzUiIHN0eWxlPSJmb250LWZhbWlseTogQXJpYWw7IGZvbnQtd2VpZ2h0
OiBib2xkOyBmb250LXNpemU6IDQwcHg7IGxpbmUtaGVpZ2h0OiA0MHB4OyI+IEQkMjA8L3NwYW4+
PC90ZD4KPC90cj4KPHRyPgo8dGQgaGVpZ2h0PSIxMCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBs
aW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQgYWxpZ249ImNlbnRl
ciIgc3R5bGU9ImNvbG9yOiAjMTMyMTNjOyBmb250LXNpemU6IDEycHg7IGxpbmUtaGVpZ2h0OiAx
NHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFs
OyI+WW91ciBESVNDT1ZFUlkgRG9sbGFycyBiYWxhbmNlIDxiciAvPihEJDEgPSAxIFVTRCk8L3Nw
YW4+PC90ZD4KPC90cj4KPHRyPgo8dGQgaGVpZ2h0PSIyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4
OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4K
PCEtLS9Cb3TDs24tLT48L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8
L3Rib2R5Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tL1JvdyAx
LS0+IDwhLS1Sb3cgMi0tPgo8dGFibGUgY2xhc3M9ImRldmljZVdpZHRoIiB3aWR0aD0iMTAwJSIg
YWxpZ249ImNlbnRlciIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAi
IGJnY29sb3I9IiNlNmRmY2UiPgo8dGJvZHk+Cjx0cj4KPHRkIGhlaWdodD0iMTAiIHN0eWxlPSJm
b250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+Cjx0cj4K
PHRkPgo8dGFibGUgY2xhc3M9ImRldmljZVdpZHRoNzAiIHdpZHRoPSI2MCUiIGFsaWduPSJjZW50
ZXIiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KPHRib2R5IGFs
aWduPSJjZW50ZXIiPgo8dHI+Cjx0ZD4KPHRhYmxlIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVy
IiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgYm94LXNpemluZzogYm9yZGVyLWJv
eDsiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KPHRib2R5IGFs
aWduPSJjZW50ZXIiPgo8dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTI1IiBzdHlsZT0i
Ym94LXNpemluZzogYm9yZGVyLWJveDsiPjwhLS1MRUZULS0+IDwhLS1Cb3TDs24gLS0+IDxpbWcg
Y2xhc3M9ImRldmljZVdpZHRoNTUiIHNyYz0iaHR0cHM6Ly9pbmZvLm5oLWhvdGVscy5jb20vY2Ft
cGFpZ24vMjAyNS8wMG1pbm9ydGVtcGxhdGUvbW9iaWxlLWJsdWUucG5nIiBib3JkZXI9IjAiIGFs
dD0iSW1hZ2UiIHRpdGxlPSJJbWFnZSIgd2lkdGg9IjUwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7
IG1hcmdpbjogMCBhdXRvOyBvcGFjaXR5OiAxOyIgLz4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0
aFRleHQiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5n
PSIwIiBjZWxscGFkZGluZz0iMCI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQgaGVp
Z2h0PSIxMCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7
PC90ZD4KPC90cj4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciIgc3R5bGU9ImNvbG9yOiAjMTMyMTNj
OyBmb250LXNpemU6IDEycHg7IGxpbmUtaGVpZ2h0OiAxNHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7
Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsOyI+VW5sb2NrIG1vcmUgYmVuZWZpdHM6
IEJvb2sgZGlyZWN0IGFuZCBsZXZlbCB1cDwvc3Bhbj48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBoZWln
aHQ9IjI1IiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8
L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tL0JvdMOzbi0tPjwvdGQ+Cjx0ZCBhbGln
bj0iY2VudGVyIiB3aWR0aD0iMjAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PC90
ZD4KPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMjUiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
ZXItYm94OyI+PCEtLVJJR0hULS0+IDwhLS1Cb3TDs24gLS0+IDxpbWcgY2xhc3M9ImRldmljZVdp
ZHRoNTUiIHNyYz0iaHR0cHM6Ly9pbmZvLm5oLWhvdGVscy5jb20vY2FtcGFpZ24vMjAyNS8wMG1p
bm9ydGVtcGxhdGUvYmVkLWJsdWUucG5nIiBib3JkZXI9IjAiIGFsdD0iSW1hZ2UiIHRpdGxlPSJJ
bWFnZSIgd2lkdGg9IjUwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogMCBhdXRvOyBv
cGFjaXR5OiAxOyIgLz4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aFRleHQiIHdpZHRoPSIxMDAl
IiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0i
MCI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQgaGVpZ2h0PSIxMCIgc3R5bGU9ImZv
bnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8
dGQgYWxpZ249ImNlbnRlciIgc3R5bGU9ImNvbG9yOiAjMTMyMTNjOyBmb250LXNpemU6IDEycHg7
IGxpbmUtaGVpZ2h0OiAxNHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3BhbiBzdHlsZT0iZm9u
dC1mYW1pbHk6IEFyaWFsOyI+UGVyc29uYWxpc2UgZWFjaCBzdGF5IHdpdGggeW91ciBwcmVmZXJl
bmNlcyBhbmQgaW50ZXJlc3RzPC9zcGFuPjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGhlaWdodD0iMjUi
IHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+Cjwv
dHI+CjwvdGJvZHk+CjwvdGFibGU+CjwhLS0vQm90w7NuLS0+PC90ZD4KPC90cj4KPC90Ym9keT4K
PC90YWJsZT4KPC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPC90ZD4KPC90cj4KPC90Ym9k
eT4KPC90YWJsZT4KPCEtLS9Sb3cgMi0tPgo8dGFibGUgY2xhc3M9ImRldmljZVdpZHRoIiBib3Jk
ZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiIGJnY29s
b3I9IiNlNmRmY2UiIGFsaWduPSJjZW50ZXIiPgo8dGJvZHk+Cjx0cj4KPHRkIGhlaWdodD0iMzUi
IHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+Cjwv
dHI+CjwvdGJvZHk+CjwvdGFibGU+Cjx0YWJsZSBjbGFzcz0iZGV2aWNld2lkdGgiIHdpZHRoPSIx
MDAlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGlu
Zz0iMCIgYmdjb2xvcj0iI2U2ZGZjZSI+PCEtLUJvdMOzbi0tPgo8dGJvZHk+Cjx0cj4KPHRkPgo8
dGFibGUgY2xhc3M9ImJ0biIgYWxpZ249ImNlbnRlciIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
ci1ib3g7IGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6
IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsgd2lkdGg6IGF1dG87IiBib3JkZXI9IjAiIGNlbGxz
cGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYmdjb2xvcj0iI2Y5ZjVmMyI+Cjx0Ym9keT4KPHRy
Pgo8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPSJ0b3AiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjMTMy
MTNjOyBib3JkZXItcmFkaXVzOiAxcHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IHRleHQtYWxp
Z246IGNlbnRlcjsgdmVydGljYWwtYWxpZ246IHRvcDsiPjxhIHJlbD0ibm9vcGVuZXIgbm9yZWZl
cnJlciIgaHJlZj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMv
Y3Vhbi9saW5rLzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19W
Xz0yJl9LMTFfPTQwMDU1RUM2OURFNEJDQjYxNEVFRDVENEFGRjBEMDNCOTVEODg4REQmX0w1NEFE
MUYyMDRfPWMyTmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9pOHZkM2QzTG0xcGJt
OXlhRzkwWld4ekxtTnZiUzlsYmk5c2IzbGhiSFI1UDNWMGJWOXpiM1Z5WTJVOWJtVjNjMnhsZEhS
bGNpWjFkRzFmYldWa2FYVnRQV1Z0WVdsc0puVjBiVjlqWVcxd1lXbG5iajFsYldGcGJHbHVaMTlw
Ym5SbGNtNWhiQ1oxZEcxZmRHVnliVDFGVlVGTk1qQXlOV1JwYzJOdmRtVnllWEpsWTNWeWNtVnVk
R0pzYjJOckpuTmhjQzF2ZFhSaWIzVnVaQzFwWkQxRFEwWkdRMEl5TVRNd1EwWXlNRFpFTlRjME16
RTFRMFkwTXpKR1FUUXhNMFUyTURrMk5FUXgmX0sxM189MzY1Jl9LMTRfPTAxYjU2Mzg3OTRlODAz
ZTQwNjQzYmU5ZDI4MTI4ZGViYWRiZDQ2MGY2ZGZhZjU1MzlhZmIyOTNkMjEyZDY0OGYiIHRhcmdl
dD0iX2JsYW5rIiB0aXRsZT0i4pa4Jm5ic3A7TE9HIElOIiBzdHlsZT0iYm94LXNpemluZzogYm9y
ZGVyLWJveDsgY29sb3I6ICNmZmZmZmY7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogYmxvY2s7
IGZvbnQtZmFtaWx5OiBBcmlhbCAgLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE1cHg7IGZvbnQt
d2VpZ2h0OiBib2xkOyBwYWRkaW5nOiA1cHggMjVweCA1cHggMjVweDsgYm9yZGVyOiA2cHggc29s
aWQgIzEzMjEzYzsgbWFyZ2luOiAwOyBtc28tcGFkZGluZy1hbHQ6IDY7IHRleHQtZGVjb3JhdGlv
bjogbm9uZTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGluZS1oZWlnaHQ6IDI1cHg7Ij5M
T0cgSU48L2E+PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPC90ZD4KPC90cj4KPCEtLS9C
b3TDs24tLT4KPHRyPgo8dGQgaGVpZ2h0PSIzMiIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5l
LWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPHRhYmxl
Pgo8dGJvZHk+Cjx0cj4KPHRkIGhlaWdodD0iNDAiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGlu
ZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+PC9kaXY+
PCEtLVtpZiBtc29dPjwvdGQ+PC90cj48L3RhYmxlPjwhW2VuZGlmXS0tPjwhLS1baWYgbXNvXT48
dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJs
ZWZ0IiBzdHlsZT0ibXNvLXRhYmxlLWxzcGFjZTowcHQ7ICBtc28tdGFibGUtcnNwYWNlOjBwdDsg
Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgd2lkdGg6IDEwMCUiPjx0cj48dGQgc3R5bGU9Indp
ZHRoOiAxMDAlOyI+PCFbZW5kaWZdLS0+PGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IHdpZHRoOiAx
MDAlIiBjbGFzcz0ic2FwTWt0QmxvY2siPjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGggZGFya21v
ZGUiIHdpZHRoPSI2NTAiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAi
IGNlbGxwYWRkaW5nPSIwIj4KPHRib2R5Pgo8dHI+Cjx0ZD48YSByZWw9Im5vb3BlbmVyIG5vcmVm
ZXJyZXIiIGhyZWY9Imh0dHBzOi8vZGlnaXRhbC5uaC1ob3RlbHMuY29tOjQ0My9zYXAvcHVibGlj
L2N1YW4vbGluay8xMDAvQ0NGRkNCMjEzMENGMjA2RDU3NDMxNUNGNDMyRkE0MTNFNjA5NjREMT9f
Vl89MiZfSzExXz03QjFCQUMyMjM0ODM0QzVEMzYzRUQyNzMyMEUyNTE4NEY1ODBDNDQ2Jl9MNTRB
RDFGMjA0Xz1jMk5sYm1GeWFXODlUVXhEVUVjbWRHRnlaMlYwUFdoMGRIQnpPaTh2ZDNkM0xtNW9M
V052Ykd4bFkzUnBiMjR1WTI5dEwyVnVQM1YwYlY5emIzVnlZMlU5Ym1WM2MyeGxkSFJsY2laMWRH
MWZiV1ZrYVhWdFBXVnRZV2xzSm5WMGJWOWpZVzF3WVdsbmJqMWxiV0ZwYkdsdVoxOWhiV1ZoWHpJ
d01qVlJOQzB4TXpFd1gwVlZRVTB0VDJOMExVVjRkSEpoYjNKa2FXNWhjbmxmVFVoZlJVUk5YMFZP
Sm5OaGNDMXZkWFJpYjNWdVpDMXBaRDFEUTBaR1EwSXlNVE13UTBZeU1EWkVOVGMwTXpFMVEwWTBN
ekpHUVRReE0wVTJNRGsyTkVReCZfSzEzXz0zNjUmX0sxNF89MWY0MTI1ODdjNTJjMWJjMWJhMWNl
ZDk2MTBiNzUyNDBlODAyYmUwYjg0OWMwYjhhZDg5ZDgyMjhjMmYxNGYzOSIgdGFyZ2V0PSJfYmxh
bmsiPjxpbWcgY2xhc3M9ImRldmljZVdpZHRoIiBzcmM9Imh0dHBzOi8vaW5mby5uaC1ob3RlbHMu
Y29tL2NhbXBhaWduLzIwMjUvMTBtaW5ob3RleHRleHAvYmFubmVyX25oY19lbi5qcGciIGJvcmRl
cj0iMCIgYWx0PSIgIiB0aXRsZT0iICIgd2lkdGg9IjY1MCIgc3R5bGU9ImRpc3BsYXk6IGJsb2Nr
OyBtYXJnaW46IDAgYXV0bzsgb3BhY2l0eTogMTsiIC8+PC9hPjwvdGQ+CjwvdHI+CjwvdGJvZHk+
CjwvdGFibGU+Cjx0YWJsZT4KPHRib2R5Pgo8dHI+Cjx0ZCBoZWlnaHQ9IjI1IiBzdHlsZT0iZm9u
dC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8L3Rib2R5
Pgo8L3RhYmxlPjwvZGl2PjwhLS1baWYgbXNvXT48L3RkPjwvdHI+PC90YWJsZT48IVtlbmRpZl0t
LT48IS0tW2lmIG1zb10+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFj
aW5nPSIwIiBhbGlnbj0ibGVmdCIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6MHB0OyAgbXNvLXRh
YmxlLXJzcGFjZTowcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IHdpZHRoOiAxMDAlIj48
dHI+PHRkIHN0eWxlPSJ3aWR0aDogMTAwJTsiPjwhW2VuZGlmXS0tPjxkaXYgc3R5bGU9ImZsb2F0
OiBsZWZ0OyB3aWR0aDogMTAwJSIgY2xhc3M9InNhcE1rdEJsb2NrIj48IS0tTWlub3IgQVBQLS0+
Cjx0YWJsZSB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIwIiBjZWxsc3BhY2lu
Zz0iMCIgY2VsbHBhZGRpbmc9IjAiPgo8dGJvZHk+Cjx0cj4KPHRkIGhlaWdodD0iMTUiIHN0eWxl
PSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+Cjx0
cj4KPHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSIxMDAlIiBzdHlsZT0icGFkZGluZzogMDsiPjxh
IHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJlZj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVs
cy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9saW5rLzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1
Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9LMTFfPTBCRjA0NEFCQzM1REI3MDc4QjAxRUYwMzk2
NzdCOTU0NzEwNjA3MkImX0w1NEFEMUYyMDRfPWMyTmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQ
V2gwZEhCek9pOHZkM2QzTG0xcGJtOXlhRzkwWld4ekxtTnZiUzlsYmk5dGIySnBiR1V0WVhCd1Az
VjBiVjl6YjNWeVkyVTlibVYzYzJ4bGRIUmxjaVoxZEcxZmJXVmthWFZ0UFdWdFlXbHNKblYwYlY5
allXMXdZV2xuYmoxbGJXRnBiR2x1WjE5cGJuUmxjbTVoYkNaMWRHMWZkR1Z5YlQxRlZVRk5NakF5
TldobFlXUmxjbVp2YjNSbGNpWnpZWEF0YjNWMFltOTFibVF0YVdROVEwTkdSa05DTWpFek1FTkdN
akEyUkRVM05ETXhOVU5HTkRNeVJrRTBNVE5GTmpBNU5qUkVNUSZfSzEzXz0zNjUmX0sxNF89MzFh
ZDA2N2VlMWJhYjQwZDBlMDNiOGEyMDlkYWFiYWYxN2JiODUxYTE4NGFkMzdmMDAzNWE2YTVlZDdl
YmJjNiIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogIzY2NjY2NjsgZm9udC1mYW1pbHk6
IEFyaWFsLCBzYW5zLXNlcmlmOyI+PGltZyBzcmM9Imh0dHBzOi8vaW5mby5uaC1ob3RlbHMuY29t
L3JlY3VycmluZy9taW5vci9hcHAtZW4uanBnIiBib3JkZXI9IjAiIGFsdD0iTWlub3IgSG90ZWxz
IiB0aXRsZT0iTWlub3IgSG90ZWxzIiB3aWR0aD0iMTAwJSIgc3R5bGU9ImNvbG9yOiAjZmZmZmZm
OyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAyMHB4OyBtYXJnaW46IDA7IG1heC13aWR0aDog
NjUwcHg7IHBhZGRpbmc6IDA7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC10cmFuc2Zvcm06
IHVwcGVyY2FzZTsiPjwvYT48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBoZWlnaHQ9IjE1IiBzdHlsZT0i
Zm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8L3Ri
b2R5Pgo8L3RhYmxlPjwvZGl2PjwhLS1baWYgbXNvXT48L3RkPjwvdHI+PC90YWJsZT48IVtlbmRp
Zl0tLT48IS0tW2lmIG1zb10+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxz
cGFjaW5nPSIwIiBhbGlnbj0ibGVmdCIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6MHB0OyAgbXNv
LXRhYmxlLXJzcGFjZTowcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IHdpZHRoOiAxMDAl
Ij48dHI+PHRkIHN0eWxlPSJ3aWR0aDogMTAwJTsiPjwhW2VuZGlmXS0tPjxkaXYgc3R5bGU9ImZs
b2F0OiBsZWZ0OyB3aWR0aDogMTAwJSIgY2xhc3M9InNhcE1rdEJsb2NrIj48IS0tTUlOT1IgQlJB
TkRTLS0+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2Vu
dGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYmdjb2xvcj0i
IzEzMjEzYyI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQgaGVpZ2h0PSIzNSIgc3R5
bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4K
PHRyPgo8dGQ+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGhUZXh0IiB3aWR0aD0iOTAlIiBhbGln
bj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Cjx0
Ym9keT4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciI+PGEgcmVsPSJub29wZW5lciBub3JlZmVycmVy
IiBocmVmPSJodHRwczovL2RpZ2l0YWwubmgtaG90ZWxzLmNvbTo0NDMvc2FwL3B1YmxpYy9jdWFu
L2xpbmsvMTAwL0NDRkZDQjIxMzBDRjIwNkQ1NzQzMTVDRjQzMkZBNDEzRTYwOTY0RDE/X1ZfPTIm
X0sxMV89NEE5RDE1NDQ1RDc4MEEyMDBBNDc5RUJCQjk2OEVERjMxMjIwNDA0NyZfTDU0QUQxRjIw
NF89YzJObGJtRnlhVzg5VFV4RFVFY21kR0Z5WjJWMFBXaDBkSEJ6T2k4dmQzZDNMbTFwYm05eWFH
OTBaV3h6TG1OdmJTOWxiaTlpY21GdVpITS9kWFJ0WDNOdmRYSmpaVDF1WlhkemJHVjBkR1Z5Sm5W
MGJWOXRaV1JwZFcwOVpXMWhhV3dtZFhSdFgyTmhiWEJoYVdkdVBXVnRZV2xzYVc1blgybHVkR1Z5
Ym1Gc0puVjBiVjkwWlhKdFBVVlZRVTB5TURJMWFHVmhaR1Z5Wm05dmRHVnlKbk5oY0MxdmRYUmli
M1Z1WkMxcFpEMURRMFpHUTBJeU1UTXdRMFl5TURaRU5UYzBNekUxUTBZME16SkdRVFF4TTBVMk1E
azJORVF4Jl9LMTNfPTM2NSZfSzE0Xz1kNzhjMGM2OGRmYWJhODNjMzg1MzA1YzFmOWRiZGJkMDI3
MDRjYzEzNTQxZTZjNjdjZmI3ZTdmYzhiYzA3OTQ3IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBjbGFz
cz0iZGV2aWNlV2lkdGgiIHNyYz0iaHR0cHM6Ly9pbmZvLm5oLWhvdGVscy5jb20vY2FtcGFpZ24v
bG9nb3MvMjAyNS1taW5vci1icmFuZHMtbG9nby5wbmciIGJvcmRlcj0iMCIgYWx0PSJNaW5vciBI
b3RlbHMiIHRpdGxlPSJNaW5vciBIb3RlbHMiIHdpZHRoPSI1ODUiIHN0eWxlPSJkaXNwbGF5OiBi
bG9jazsgbWFyZ2luOiAwIGF1dG87IG1heC13aWR0aDogNjUwcHg7IG9wYWNpdHk6IDE7Ij48L2E+
PC90ZD4KPC90cj4KPHRyPgo8dGQgaGVpZ2h0PSIzNSIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBs
aW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPC90
ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT48L2Rpdj48IS0tW2lmIG1zb10+PC90ZD48L3RyPjwv
dGFibGU+PCFbZW5kaWZdLS0+PCEtLVtpZiBtc29dPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRk
aW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYWxpZ249ImxlZnQiIHN0eWxlPSJtc28tdGFibGUtbHNw
YWNlOjBwdDsgIG1zby10YWJsZS1yc3BhY2U6MHB0OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNl
OyB3aWR0aDogMTAwJSI+PHRyPjx0ZCBzdHlsZT0id2lkdGg6IDEwMCU7Ij48IVtlbmRpZl0tLT48
ZGl2IHN0eWxlPSJmbG9hdDogbGVmdDsgd2lkdGg6IDEwMCUiIGNsYXNzPSJzYXBNa3RCbG9jayI+
PCEtLVBST01PIExFR0FMLS0+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgiIGJvcmRlcj0iMCIg
Y2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iIzEz
MjEzYyIgYWxpZ249ImNlbnRlciI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQ+Cjx0
YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGhUZXh0IiB3aWR0aD0iODAlIiBib3JkZXI9IjAiIGNlbGxz
cGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYWxpZ249ImNlbnRlciI+Cjx0Ym9keT4KPHRyPgo8
dGQgaGVpZ2h0PSIyMCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDogMXB4OyI+
Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciIgc3R5bGU9ImNvbG9yOiAj
ZmZmZmZmOyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxOHB4OyB0ZXh0LWFsaWduOiBj
ZW50ZXI7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFNpdGthIEJhbm5lciBSZWd1bGFyOyI+
TWlub3IgRElTQ09WRVJZIGlzIHBhcnQgb2YgR0hBIERJU0NPVkVSWSwgcmV3YXJkaW5nIGd1ZXN0
cyBpbiA4NTArIGhvdGVscyBhbmQgcmVzb3J0cyBhY3Jvc3MgMTAwKyBjb3VudHJpZXMuPC9zcGFu
PjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGhlaWdodD0iMjAiIHN0eWxlPSJmb250LXNpemU6IDFweDsg
bGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+Cjwv
dGQ+CjwvdHI+CjwvdGJvZHk+CjwvdGFibGU+PC9kaXY+PCEtLVtpZiBtc29dPjwvdGQ+PC90cj48
L3RhYmxlPjwhW2VuZGlmXS0tPjwhLS1baWYgbXNvXT48dGFibGUgYm9yZGVyPSIwIiBjZWxscGFk
ZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGFsaWduPSJsZWZ0IiBzdHlsZT0ibXNvLXRhYmxlLWxz
cGFjZTowcHQ7ICBtc28tdGFibGUtcnNwYWNlOjBwdDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBz
ZTsgd2lkdGg6IDEwMCUiPjx0cj48dGQgc3R5bGU9IndpZHRoOiAxMDAlOyI+PCFbZW5kaWZdLS0+
PGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQ7IHdpZHRoOiAxMDAlIiBjbGFzcz0ic2FwTWt0QmxvY2si
Pjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGgiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIiBi
b3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgYmdjb2xvcj0iIzEzMjEz
YyI+Cjx0Ym9keT4KPHRyPgo8dGQgaGVpZ2h0PSIyNSIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBs
aW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQgYWxpZ249ImNlbnRl
ciI+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lkdGg4MCIgd2lkdGg9IjkxJSIgYWxpZ249ImNlbnRl
ciIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJnY29sb3I9IiNj
Y2NjY2MiPgo8dGJvZHk+Cjx0cj4KPHRkIGhlaWdodD0iMSIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4
OyBsaW5lLWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4K
PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPHRhYmxlIGJnY29sb3I9IiMxMzIxM2MiIGNs
YXNzPSJkZXZpY2VXaWR0aCIgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIg
Y2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIj4KPHRib2R5IGFsaWduPSJjZW50ZXIiPgo8
dHI+Cjx0ZCBoZWlnaHQ9IjMwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAx
cHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZD4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0
aFRleHQiIHdpZHRoPSI5NSUiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9
IjAiIGNlbGxwYWRkaW5nPSIwIj4KPHRib2R5Pgo8dHI+Cjx0ZCBhbGlnbj0iY2VudGVyIiBzdHls
ZT0ibGluZS1oZWlnaHQ6IDIwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuIGNsYXNzPSJk
ZXZpY2VNX3RleHQxNSIgc3R5bGU9ImNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDE2cHg7IGZv
bnQtZmFtaWx5OiBBcmlhbDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij5Gb2xsb3cgdXM8L3NwYW4+PC90
ZD4KPC90cj4KPHRyPgo8dGQgaGVpZ2h0PSIzMCIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5l
LWhlaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT4KPC90ZD4K
PC90cj4KPC90Ym9keT4KPC90YWJsZT4KPHRhYmxlIGJnY29sb3I9IiMxMzIxM2MiIGNsYXNzPSJk
ZXZpY2VXaWR0aCIgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMCIgY2VsbHBh
ZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KPHRib2R5IGFsaWduPSJjZW50ZXIiPgo8dHI+Cjx0
ZD4KPHRhYmxlIGNsYXNzPSJkZXZpY2VXaWR0aDcwIiB3aWR0aD0iMjAwIiBhbGlnbj0iY2VudGVy
IiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgZm9udC1mYW1pbHk6IENhbGlicmks
IHNhbnMtc2VyaWY7IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+
Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4KPHRyPgo8dGQgYWxpZ249ImNlbnRlciIgaGVpZ2h0PSIz
MCIgd2lkdGg9IjIwIj48IS0tIGZhY2Vib29rIC0tPiA8YSByZWw9Im5vb3BlbmVyIG5vcmVmZXJy
ZXIiIGhyZWY9Imh0dHBzOi8vZGlnaXRhbC5uaC1ob3RlbHMuY29tOjQ0My9zYXAvcHVibGljL2N1
YW4vbGluay8xMDAvQ0NGRkNCMjEzMENGMjA2RDU3NDMxNUNGNDMyRkE0MTNFNjA5NjREMT9fVl89
MiZfSzExXz1BMzYxOUY5NTQ1OUYyNkUyMzhFRTVGNTQ4RTM1MTkyMjI5RTE4NzEwJl9MNTRBRDFG
MjA0Xz1jMk5sYm1GeWFXODlUVXhEVUVjbWRHRnlaMlYwUFdoMGRIQnpPaTh2ZDNkM0xtWmhZMlZp
YjI5ckxtTnZiUzl0YVc1dmNtaHZkR1ZzY3k4L2MyRndMVzkxZEdKdmRXNWtMV2xrUFVORFJrWkRR
akl4TXpCRFJqSXdOa1ExTnpRek1UVkRSalF6TWtaQk5ERXpSVFl3T1RZMFJERSZfSzEzXz0zNjUm
X0sxNF89YzQyNWYxOWViZjE1MmZmMTc2MTY1NGZiMjUwZTUzMzA4MGNmNDhjMWM0OWY0OWQ1OThm
M2MzM2IzNzhmY2JmYiIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2luZm8ubmgt
aG90ZWxzLmNvbS9jYW1wYWlnbi9sb2dvcy8yMDI0LW1pbm9yLWZhY2Vib29rLnBuZyIgYm9yZGVy
PSIwIiBhbHQ9IiIgd2lkdGg9IjIwIiBzdHlsZT0ib3V0bGluZS1zdHlsZTogbm9uZTsgb3V0bGlu
ZS1jb2xvcjogaW52ZXJ0OyBvdXRsaW5lLXdpZHRoOiBtZWRpdW07IGRpc3BsYXk6IGJsb2NrOyB0
ZXh0LWRlY29yYXRpb246IG5vbmU7Ij48L2E+PC90ZD4KPHRkIGFsaWduPSJsZWZ0IiB3aWR0aD0i
NzUiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZuYnNwOzwvdGQ+
Cjx0ZCBhbGlnbj0iY2VudGVyIiBoZWlnaHQ9IjMwIiB3aWR0aD0iMjAiPjwhLS0gaW5zdGFnZXJh
bSAtLT4gPGEgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiBocmVmPSJodHRwczovL2RpZ2l0YWwu
bmgtaG90ZWxzLmNvbTo0NDMvc2FwL3B1YmxpYy9jdWFuL2xpbmsvMTAwL0NDRkZDQjIxMzBDRjIw
NkQ1NzQzMTVDRjQzMkZBNDEzRTYwOTY0RDE/X1ZfPTImX0sxMV89RkQ1OTNGNEY4MjlFRkJGNjcy
NTJDNjQ1NDg0ODI0RDU5NzY3MzgyQSZfTDU0QUQxRjIwNF89YzJObGJtRnlhVzg5VFV4RFVFY21k
R0Z5WjJWMFBXaDBkSEJ6T2k4dmVDNWpiMjB2VFdsdWIzSkliM1JsYkhORlZVRk5QM05oY0MxdmRY
UmliM1Z1WkMxcFpEMURRMFpHUTBJeU1UTXdRMFl5TURaRU5UYzBNekUxUTBZME16SkdRVFF4TTBV
Mk1EazJORVF4Jl9LMTNfPTM2NSZfSzE0Xz03YzMzOGEwYzhkYWI5OGE0OTFjYjJlMDBkYjU0NDE4
MDMwNjJjNWVkM2YwYzc5OGEzNTVhOTk4NjE0NjAxYzJlIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBz
cmM9Imh0dHBzOi8vaW5mby5uaC1ob3RlbHMuY29tL2NhbXBhaWduL2xvZ29zLzIwMjQtbWlub3It
eC5wbmciIGJvcmRlcj0iMCIgYWx0PSIiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgc3R5bGU9Im91
dGxpbmUtc3R5bGU6IG5vbmU7IG91dGxpbmUtY29sb3I6IGludmVydDsgb3V0bGluZS13aWR0aDog
bWVkaXVtOyBkaXNwbGF5OiBibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+PC9hPjwvdGQ+
Cjx0ZCBhbGlnbj0ibGVmdCIgd2lkdGg9Ijc1IiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUt
aGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8dGQgYWxpZ249ImNlbnRlciIgaGVpZ2h0PSIzMCIg
d2lkdGg9IjIwIj48IS0tIHlvdXR1YmUgLS0+IDxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIg
aHJlZj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9s
aW5rLzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9L
MTFfPTM2RDhGQkM4RDREMEUwMDlFQ0UyRjk5NjVGNUQ0NkIzODU0QTVFRkUmX0w1NEFEMUYyMDRf
PWMyTmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9pOHZkM2QzTG5sdmRYUjFZbVV1
WTI5dEwyTm9ZVzV1Wld3dlZVTnJNekJwWjBaRVh6ZDBNVk0zYTJWQlFUbDRXbHBuUDNOaGNDMXZk
WFJpYjNWdVpDMXBaRDFEUTBaR1EwSXlNVE13UTBZeU1EWkVOVGMwTXpFMVEwWTBNekpHUVRReE0w
VTJNRGsyTkVReCZfSzEzXz0zNjUmX0sxNF89Mzc5NzUzZDJlNzliMTU1N2FkYzgzODMyMTgyMmNm
NjBmYzZkNDQwMDlkNzMxZmY5ZmUzOGYyNWE4YzRmZTA1MCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcg
c3JjPSJodHRwczovL2luZm8ubmgtaG90ZWxzLmNvbS9jYW1wYWlnbi9sb2dvcy8yMDI0LW1pbm9y
LXlvdXR1YmUucG5nIiBib3JkZXI9IjAiIGFsdD0iIiB3aWR0aD0iMjAiIHN0eWxlPSJvdXRsaW5l
LXN0eWxlOiBub25lOyBvdXRsaW5lLWNvbG9yOiBpbnZlcnQ7IG91dGxpbmUtd2lkdGg6IG1lZGl1
bTsgZGlzcGxheTogYmxvY2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPjwvYT48L3RkPgo8dGQg
YWxpZ249ImxlZnQiIHdpZHRoPSI3NSIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdo
dDogMXB4OyI+Jm5ic3A7PC90ZD4KPHRkIGFsaWduPSJjZW50ZXIiIGhlaWdodD0iMzAiIHdpZHRo
PSIyMCI+PCEtLSB5b3V0dWJlIC0tPiA8YSByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIGhyZWY9
Imh0dHBzOi8vZGlnaXRhbC5uaC1ob3RlbHMuY29tOjQ0My9zYXAvcHVibGljL2N1YW4vbGluay8x
MDAvQ0NGRkNCMjEzMENGMjA2RDU3NDMxNUNGNDMyRkE0MTNFNjA5NjREMT9fVl89MiZfSzExXz02
NEZEOERFNDIwQTAwNjhBMUQxQTlEOTc3MDJBNkQ2NTJEOEQ2ODdEJl9MNTRBRDFGMjA0Xz1jMk5s
Ym1GeWFXODlUVXhEVUVjbWRHRnlaMlYwUFdoMGRIQnpPaTh2ZDNkM0xuUnBhM1J2YXk1amIyMHZR
RzFwYm05eWFHOTBaV3h6UDNOaGNDMXZkWFJpYjNWdVpDMXBaRDFEUTBaR1EwSXlNVE13UTBZeU1E
WkVOVGMwTXpFMVEwWTBNekpHUVRReE0wVTJNRGsyTkVReCZfSzEzXz0zNjUmX0sxNF89NmQyYTBm
MzY2YzZmN2Y4OWIyZjNlM2Q5YzMxNDY0OWY5MGZhMDJlZWFkMDc4YWFmOTExMmJiZWU3MjBkYWE0
NCIgdGFyZ2V0PSJfYmxhbmsiPjxpbWcgc3JjPSJodHRwczovL2luZm8ubmgtaG90ZWxzLmNvbS9j
YW1wYWlnbi9sb2dvcy8yMDI0LW1pbm9yLXRpay5wbmciIGJvcmRlcj0iMCIgYWx0PSIiIHdpZHRo
PSIyMCIgc3R5bGU9Im91dGxpbmUtc3R5bGU6IG5vbmU7IG91dGxpbmUtY29sb3I6IGludmVydDsg
b3V0bGluZS13aWR0aDogbWVkaXVtOyBkaXNwbGF5OiBibG9jazsgdGV4dC1kZWNvcmF0aW9uOiBu
b25lOyI+PC9hPjwvdGQ+Cjx0ZCBhbGlnbj0ibGVmdCIgd2lkdGg9Ijc1IiBzdHlsZT0iZm9udC1z
aXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8dGQgYWxpZ249ImNlbnRl
ciIgaGVpZ2h0PSIzMCIgd2lkdGg9IjIwIj48IS0tIHlvdXR1YmUgLS0+IDxhIHJlbD0ibm9vcGVu
ZXIgbm9yZWZlcnJlciIgaHJlZj0iaHR0cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3Nh
cC9wdWJsaWMvY3Vhbi9saW5rLzEwMC9DQ0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2
MDk2NEQxP19WXz0yJl9LMTFfPUMzNDdBNjRBQjYyMkJFRDhFRjhFNTIzRkRDQkUwMzFDNzBCNEIy
RTYmX0w1NEFEMUYyMDRfPWMyTmxibUZ5YVc4OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9pOHZk
M2QzTG1sdWMzUmhaM0poYlM1amIyMHZiV2x1YjNKb2IzUmxiSE0vYzJGd0xXOTFkR0p2ZFc1a0xX
bGtQVU5EUmtaRFFqSXhNekJEUmpJd05rUTFOelF6TVRWRFJqUXpNa1pCTkRFelJUWXdPVFkwUkRF
Jl9LMTNfPTM2NSZfSzE0Xz1jNzEyYjRmOGNmOTJkMjYwMGU4ZDhiZTE1ZTgyMTczYjcyOGY1MjFk
YmM1ZDQ2MjBlMDAzZjI1ZDhmN2QxM2U3IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Imh0dHBz
Oi8vaW5mby5uaC1ob3RlbHMuY29tL2NhbXBhaWduL2xvZ29zLzIwMjQtbWlub3ItaWcucG5nIiBi
b3JkZXI9IjAiIGFsdD0iIiB3aWR0aD0iMjAiIHN0eWxlPSJvdXRsaW5lLXN0eWxlOiBub25lOyBv
dXRsaW5lLWNvbG9yOiBpbnZlcnQ7IG91dGxpbmUtd2lkdGg6IG1lZGl1bTsgZGlzcGxheTogYmxv
Y2s7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPjwvYT48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBoZWln
aHQ9IjIwIiBzdHlsZT0iZm9udC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8
L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxlPgo8L3RkPgo8L3RyPgo8L3Rib2R5Pgo8L3RhYmxl
PjwvZGl2PjwhLS1baWYgbXNvXT48L3RkPjwvdHI+PC90YWJsZT48IVtlbmRpZl0tLT48IS0tW2lm
IG1zb10+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiBh
bGlnbj0ibGVmdCIgc3R5bGU9Im1zby10YWJsZS1sc3BhY2U6MHB0OyAgbXNvLXRhYmxlLXJzcGFj
ZTowcHQ7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IHdpZHRoOiAxMDAlIj48dHI+PHRkIHN0
eWxlPSJ3aWR0aDogMTAwJTsiPjwhW2VuZGlmXS0tPjxkaXYgc3R5bGU9ImZsb2F0OiBsZWZ0OyB3
aWR0aDogMTAwJSIgY2xhc3M9InNhcE1rdEJsb2NrIj48dGFibGUgY2xhc3M9ImRldmljZVdpZHRo
IiB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIg
Y2VsbHBhZGRpbmc9IjAiIGJnY29sb3I9IjEzMjEzYyI+Cjx0Ym9keSBhbGlnbj0iY2VudGVyIj4K
PHRyPgo8dGQgaGVpZ2h0PSIxNSIgc3R5bGU9ImZvbnQtc2l6ZTogMXB4OyBsaW5lLWhlaWdodDog
MXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPHRyPgo8dGQ+Cjx0YWJsZSBjbGFzcz0iZGV2aWNlV2lk
dGhUZXh0IiB3aWR0aD0iOTUlIiBhbGlnbj0iY2VudGVyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5n
PSIwIiBjZWxscGFkZGluZz0iMCIgc3R5bGU9IndpZHRoOiA5NSU7Ij4KPHRib2R5Pgo8dHI+Cjx0
ZCBhbGlnbj0ibGVmdCIgc3R5bGU9ImZvbnQtc2l6ZTogMTBweDsgdGV4dC1hbGlnbjogY2VudGVy
OyBjb2xvcjogI2ZmZmZmZiFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OiBib2xkOyI+JmNvcHk7IDIw
MjUgTWlub3IgSG90ZWxzIEV1cm9wZSAmYW1wOyBBbWVyaWNhczwvdGQ+CjwvdHI+Cjx0cj4KPHRk
IGhlaWdodD0iMTAiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsiPiZu
YnNwOzwvdGQ+CjwvdHI+Cjx0ciBzdHlsZT0iaGVpZ2h0OiAyM3B4OyI+Cjx0ZCBhbGlnbj0ibGVm
dCIgc3R5bGU9ImNvbG9yOiAjZmZmZmZmOyBmb250LXNpemU6IDEwcHg7IHRleHQtYWxpZ246IGNl
bnRlcjsiPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAxMHB4OyI+IENv
bnRhY3QgRGV0YWlsczogKzM0IDkxIDM5OCA0NCAzOCAvICs0NCAoMCkgMjAzIDQ5IDk4IDk1MSA8
YnI+PGEgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiBocmVmPSJtYWlsdG86bWlub3JkaXNjb3Zl
cnlAbWlub3ItaG90ZWxzLmNvbSIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogI2ZmZmZm
ZjsgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyI+bWlub3JkaXNjb3ZlcnlAbWlub3It
aG90ZWxzLmNvbTwvYT4gPGJyPk1vbmRheSAmbmRhc2g7IEZyaWRheTogOCAtIDIxaC4gV2Vla2Vu
ZHM6IDggLSAxN2ggQ0VUIChDZW50cmFsIEV1cm9wZWFuIFRpbWUpLiA8L3NwYW4+PC90ZD4KPC90
cj4KPHRyPgo8dGQgc3R5bGU9ImxpbmUtaGVpZ2h0OiAxNHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7
Ij48c3BhbiBzdHlsZT0iY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMTBweDsiPiA8YSByZWw9
Im5vb3BlbmVyIG5vcmVmZXJyZXIiIGhyZWY9Imh0dHBzOi8vZGlnaXRhbC5uaC1ob3RlbHMuY29t
OjQ0My9zYXAvcHVibGljL2N1YW4vbGluay8xMDAvQ0NGRkNCMjEzMENGMjA2RDU3NDMxNUNGNDMy
RkE0MTNFNjA5NjREMT9fVl89MiZfSzExXz04NEU3MTkwNDY2RDNCQTMwNzYxMTdGRTU3NjhFQzQz
MkRCQzc0RTVDJl9MNTRBRDFGMjA0Xz1jMk5sYm1GeWFXODlUVXhEVUVjbWRHRnlaMlYwUFdoMGRI
QnpPaTh2ZDNkM0xtMXBibTl5YUc5MFpXeHpMbU52YlM5bGJpOXNiM2xoYkhSNUwzQnlhWFpoWTNr
dGNHOXNhV041UDNWMGJWOXRaV1JwZFcwOVpXMWhhV3hwYm1jbWRYUnRYM052ZFhKalpUMXBiblJs
Y201aGJDMWhiR3dtZFhSdFgyTmhiWEJoYVdkdVBXVnRZV2xzYVc1blgybHVkR1Z5Ym1Gc0xXRnNi
Q1oxZEcxZmRHVnliVDB5TURJMExXaGxZV1JsY21admIzUmxjaVoxZEcxZlkyOXVkR1Z1ZEQxRlRp
WmpZVzF3YVdROU9UWTNOVEF6TkNaellYQXRiM1YwWW05MWJtUXRhV1E5UTBOR1JrTkNNakV6TUVO
R01qQTJSRFUzTkRNeE5VTkdORE15UmtFME1UTkZOakE1TmpSRU1RJl9LMTNfPTM2NSZfSzE0Xz0y
ZmQyMGUyZWRkZjZlMzQwODUyZWMwNjliMWQ3MDhhZWNhZjAyZGI1MmM1ODU3ZDVlNDEzNzc0ZDEw
MDI4Zjg0IiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IlByaXZhY3kgUG9saWN5IiBzdHlsZT0iY29s
b3I6ICNmZmZmZmY7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBmb250LWZhbWlseTogQXJp
YWwsIHNhbnMtc2VyaWY7Ij5Qcml2YWN5IFBvbGljeTwvYT4uIFRoaXMgZW1haWwgd2FzIHNlbnQg
dG86IDxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5z
LXNlcmlmOyI+aGlAam9zaWUubG9sPC9zcGFuPi4gPGJyPllvdSBhcmUgcmVjZWl2aW5nIHRoaXMg
bWVzc2FnZSBhcyBhIG1lbWJlciBvZiB0aGUgTUlOT1IgRElTQ09WRVJZIHByb2dyYW1tZSwgcGFy
dCBvZiBHSEEgRElTQ09WRVJZLiBDaGVjayB0aGUgZ2VuZXJhbCBjb25kaXRpb25zIG9mIHRoZSBw
cm9ncmFtIDxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJlZj0iaHR0cHM6Ly9kaWdpdGFs
Lm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9saW5rLzEwMC9DQ0ZGQ0IyMTMwQ0Yy
MDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9LMTFfPUY4OTg2NjcwREYwMDU5MTM5
ODVDRjQ4Q0RBNzg3Qjk1QUU2NDQ0QUEmX0w1NEFEMUYyMDRfPWMyTmxibUZ5YVc4OVRVeERVRWNt
ZEdGeVoyVjBQV2gwZEhCek9pOHZkM2QzTG0xcGJtOXlhRzkwWld4ekxtTnZiUzlsYmk5c2IzbGhi
SFI1TDNSbGNtMXpMV0Z1WkMxamIyNWthWFJwYjI1elAzVjBiVjl0WldScGRXMDlaVzFoYVd4cGJt
Y21kWFJ0WDNOdmRYSmpaVDFwYm5SbGNtNWhiQzFoYkd3bWRYUnRYMk5oYlhCaGFXZHVQV1Z0WVds
c2FXNW5YMmx1ZEdWeWJtRnNMV0ZzYkNaMWRHMWZkR1Z5YlQweU1ESTBMV2hsWVdSbGNtWnZiM1Js
Y2laMWRHMWZZMjl1ZEdWdWREMUZUaVpqWVcxd2FXUTlPVFkzTlRBek5DWnpZWEF0YjNWMFltOTFi
bVF0YVdROVEwTkdSa05DTWpFek1FTkdNakEyUkRVM05ETXhOVU5HTkRNeVJrRTBNVE5GTmpBNU5q
UkVNUSZfSzEzXz0zNjUmX0sxNF89OTA3ZmZiYTBkYzVlMzc4OWEyMDQzOWZkNTVjMGI5OTg1ZTNk
ZmY0OTIwNDlkNmY2ZGRlYzc2ZWY0YmRiOTRjYSIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xv
cjogI2ZmZmZmZjsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGZvbnQtZmFtaWx5OiBBcmlh
bCwgc2Fucy1zZXJpZjsiPmhlcmU8L2E+LiBDaGVjayB0aGUgaG90ZWxzIHdoZXJlIHlvdSBjYW4g
cmVkZWVtIHlvdXIgcG9pbnRzIDxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJlZj0iaHR0
cHM6Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9saW5rLzEwMC9D
Q0ZGQ0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9LMTFfPUNFNjJB
RDA4Rjc4RUQyNzI5REIyMkMxQjFFMDJBMjEzNDY4Mzc0RjMmX0w1NEFEMUYyMDRfPWMyTmxibUZ5
YVc4OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9pOHZkM2QzTG0xcGJtOXlhRzkwWld4ekxtTnZi
UzlsYmk5c2IzbGhiSFI1TDNSbGNtMXpMV0Z1WkMxamIyNWthWFJwYjI1ekwybHVZMngxWkdWa0xX
aHZkR1ZzY3o5MWRHMWZiV1ZrYVhWdFBXVnRZV2xzYVc1bkpuVjBiVjl6YjNWeVkyVTlhVzUwWlhK
dVlXd3RZV3hzSm5WMGJWOWpZVzF3WVdsbmJqMWxiV0ZwYkdsdVoxOXBiblJsY201aGJDMWhiR3dt
ZFhSdFgzUmxjbTA5TWpBeU5DMW9aV0ZrWlhKbWIyOTBaWEltZFhSdFgyTnZiblJsYm5ROVJVNG1Z
MkZ0Y0dsa1BUazJOelV3TXpRbWMyRndMVzkxZEdKdmRXNWtMV2xrUFVORFJrWkRRakl4TXpCRFJq
SXdOa1ExTnpRek1UVkRSalF6TWtaQk5ERXpSVFl3T1RZMFJERSZfSzEzXz0zNjUmX0sxNF89OTFi
NTRjZDgxMWNkN2IzOTYzNTM2ODFkZjM1NjM4MjgyZjliMGIzOWU3ODFlMDJmZDAwM2FlNTNmZDlk
YzU5ZSIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJjb2xvcjogI2ZmZmZmZjsgdGV4dC1kZWNvcmF0
aW9uOiB1bmRlcmxpbmU7IGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsiPmhlcmU8L2E+
LiA8L3NwYW4+PC90ZD4KPC90cj4KPHRyPgo8dGQgaGVpZ2h0PSIzIiBzdHlsZT0iZm9udC1zaXpl
OiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8dHI+Cjx0ZCBzdHls
ZT0ibGluZS1oZWlnaHQ6IDExcHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuIHN0eWxlPSJj
b2xvcjogI2ZmZmZmZjsgZm9udC1zaXplOiAxMHB4OyBmb250LWZhbWlseTogQXJpYWwsIHNhbnMt
c2VyaWY7Ij4gPHN1cD4oMSk8L3N1cD4gSXQmcnNxdW87cyBwb3NzaWJsZSB0aGF0IHRoZSBiYWxh
bmNlIGRvZXMgbm90IHJlZmxlY3QgdHJhbnNhY3Rpb25zIG1hZGUgaW4gdGhlIHBhc3QgOSZuYnNw
O2RheXMuIDwvc3Bhbj48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBoZWlnaHQ9IjE1IiBzdHlsZT0iZm9u
dC1zaXplOiAxcHg7IGxpbmUtaGVpZ2h0OiAxcHg7Ij4mbmJzcDs8L3RkPgo8L3RyPgo8dHIgc3R5
bGU9ImhlaWdodDogMjNweDsiPgo8dGQgc3R5bGU9ImZvbnQtc2l6ZTogMTBweDsgZm9udC13ZWln
aHQ6IGJvbGQ7IHRleHQtYWxpZ246IGNlbnRlcjsgY29sb3I6ICNmZmZmZmYhaW1wb3J0YW50OyBo
ZWlnaHQ6IDIzcHg7Ij48c3BhbiBjbGFzcz0iIiBzdHlsZT0iY29sb3I6ICNmZmZmZmY7IGZvbnQt
c2l6ZTogMTBweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1z
ZXJpZjsiPiBJZiB5b3UgZG8gbm90IHdhbnQgdG8gcmVjZWl2ZSBvdXIgZW1haWwgY29tbXVuaWNh
dGlvbnMsIDxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJlZj0iaHR0cHM6Ly9kaWdpdGFs
Lm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9saW5rLzEwMC9DQ0ZGQ0IyMTMwQ0Yy
MDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9LMTFfPTA3MTBCODQ3M0FFMTdCNDQ1
ODQwNjJCQTJDMDM0OEQ4RTFGM0U2MTImX0w1NEFEMUYyMDRfPWMyTmxibUZ5YVc4OVRVeERVRWNt
ZEdGeVoyVjBQV2gwZEhCek9pOHZhVzVtYnk1dWFDMW9iM1JsYkhNdVkyOXRMMlp2Y20wdmRXNXpk
V0p6WTNKcFltVXRaVzR1YUhSdGJEOXpZWEF0YjNWMFltOTFibVF0YVdROVEwTkdSa05DTWpFek1F
TkdNakEyUkRVM05ETXhOVU5HTkRNeVJrRTBNVE5GTmpBNU5qUkVNUSZfSzEzXz0zNjUmX0sxNF89
OWRhMGE2NDc5ZDEzZGQ5NmQ0NDZiNjhjOWFlZThkODEyNWE0NWUyZjYxZjg0NmM3ZDY2ZGUyNjk1
YTA1MmUyMiIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSIKY2xpY2sgaGVyZSB0byB1bnN1YnNjcmli
ZSIgc3R5bGU9ImNvbG9yOiAjZmZmZmZmOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgZm9u
dC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyI+PGJyPmNsaWNrIGhlcmUgdG8gdW5zdWJzY3Jp
YmU8L2E+LiA8L3NwYW4+PC90ZD4KPC90cj4KPHRyIHN0eWxlPSJoZWlnaHQ6IDM1cHg7Ij4KPHRk
IGhlaWdodD0iMzUiIHN0eWxlPSJmb250LXNpemU6IDFweDsgbGluZS1oZWlnaHQ6IDFweDsgaGVp
Z2h0OiAzNXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPHRyIHN0eWxlPSJoZWlnaHQ6IDExMnB4OyI+
Cjx0ZCBhbGlnbj0ibGVmdCIgc3R5bGU9ImZvbnQtc2l6ZTogMTBweDsgdGV4dC1hbGlnbjogY2Vu
dGVyOyBjb2xvcjogI2ZmZmZmZiFpbXBvcnRhbnQ7IGhlaWdodDogMTEycHg7Ij5JbiBhY2NvcmRh
bmNlIHdpdGggZGF0YSBwcm90ZWN0aW9uIGxlZ2lzbGF0aW9uLCB3ZSBpbmZvcm0geW91IHRoYXQg
TUlOT1IgSE9URUxTIEVVUk9QRSAmYW1wOyBBTUVSSUNBUyBTLkEuIGlzIHRoZSBEYXRhIENvbnRy
b2xsZXIuIFlvdXIgcGVyc29uYWwgZGF0YSB3aWxsIGJlIHByb2Nlc3NlZCBmb3IgbWFuYWdpbmcg
dGhlIExveWFsdHkgUHJvZ3JhbW1lIHlvdSBoYXZlIGFwcGxpY2F0ZWQsIGN1c3RvbWlzaW5nIExv
eWFsdHkgUHJvZ3JhbW1lIHNlcnZpY2VzIHRvIG1lbWJlciZhY3V0ZTtzIHByZWZlcmVuY2VzIGFu
ZCB0YXN0ZXMsIGFzIHdlbGwgYXMgc2VuZGluZyBjb21tZXJjaWFsIGNvbW11bmljYXRpb25zIHZp
YSBlbWFpbCBvciBlcXVpdmFsZW50IG1ldGhvZHMgYWJvdXQgb2ZmZXIgYW5kIHNlcnZpY2VzIHJl
bGF0ZWQgdG8gdGhlIFByb2dyYW1tZS4gVGhlIGxhd2Z1bCBpcyB0aGUgY29udHJhY3R1YWwgcmVs
YXRpb25zaGlwIGJldHdlZW4gdGhlIHBhcnRpZXMuIFRoZSBwZXJzb25hbCBkYXRhIHdpbGwgYmUg
a2VwdCBkdXJpbmcgdGhpcyBjb250cmFjdHVhbCByZWxhdGlvbnNoaXAgYW5kLCBhZnRlciB0aGlz
LCBmb3IgdGhlIGxpbWl0YXRpb24gcGVyaW9kIGZvciBsZWdhbCBhY3Rpb25zIHRoYXQgY291bGQg
cmVzdWx0IGZyb20gaXQuIFlvdSBjYW4gZXhlcmNpc2UgdGhlIHJpZ2h0cyBvZiBhY2Nlc3MsIGNv
cnJlY3Rpb24sIGVyYXN1cmUsIG9iamVjdGlvbiwgbGltaXRhdGlvbiBvbiBwcm9jZXNzaW5nIGFu
ZCBwb3J0YWJpbGl0eSBvZiB5b3VyIHBlcnNvbmFsIGRhdGEgYnkgd3JpdGluZyB0byB0aGUgZm9s
bG93aW5nIGVtYWlsIGFkZHJlc3M6IDxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJlZj0i
bWFpbHRvOmRhdGFwcm90ZWN0aW9uQG1pbm9yLWhvdGVscy5jb20iIHRhcmdldD0iX2JsYW5rIiB0
aXRsZT0iZGF0YXByb3RlY3Rpb25AbWlub3ItaG90ZWxzLmNvbSIgc3R5bGU9ImNvbG9yOiAjZmZm
ZmZmOyBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7Ij5kYXRhcHJvdGVjdGlvbkBtaW5v
ci1ob3RlbHMuY29tPC9hPiBhbmQgY29udGFjdCBvdXIgRFBPIGluIHRoZSBlbWFpbCBhZGRyZXNz
IDxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJlZj0ibWFpbHRvOmRwb0BtaW5vci1ob3Rl
bHMuY29tIiB0YXJnZXQ9Il9ibGFuayIgc3R5bGU9ImNvbG9yOiAjZmZmZmZmOyBmb250LWZhbWls
eTogQXJpYWwsIHNhbnMtc2VyaWY7Ij5kcG9AbWlub3ItaG90ZWxzLmNvbTwvYT4uIFlvdSBjYW4g
Y29uc3VsdCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG91ciBQcml2YWN5IFBvbGljeSBpbiB0aGUg
Zm9sbG93aW5nIGxpbms6IDxhIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJlZj0iaHR0cHM6
Ly9kaWdpdGFsLm5oLWhvdGVscy5jb206NDQzL3NhcC9wdWJsaWMvY3Vhbi9saW5rLzEwMC9DQ0ZG
Q0IyMTMwQ0YyMDZENTc0MzE1Q0Y0MzJGQTQxM0U2MDk2NEQxP19WXz0yJl9LMTFfPTQxN0QyRTVB
OThGNjY0QUE5RUMyOTc2MEJCRjlBMThERjMxRDhGQzUmX0w1NEFEMUYyMDRfPWMyTmxibUZ5YVc4
OVRVeERVRWNtZEdGeVoyVjBQV2gwZEhCek9pOHZkM2QzTG0xcGJtOXlhRzkwWld4ekxtTnZiUzls
Ymk5c2IzbGhiSFI1TDNCeWFYWmhZM2t0Y0c5c2FXTjVQM1YwYlY5dFpXUnBkVzA5WlcxaGFXeHBi
bWNtZFhSdFgzTnZkWEpqWlQxcGJuUmxjbTVoYkMxaGJHd21kWFJ0WDJOaGJYQmhhV2R1UFdWdFlX
bHNhVzVuWDJsdWRHVnlibUZzTFdGc2JDWjFkRzFmZEdWeWJUMHlNREkwTFdobFlXUmxjbVp2YjNS
bGNpWjFkRzFmWTI5dWRHVnVkRDFGVGlaallXMXdhV1E5T1RZM05UQXpOQ1p6WVhBdGIzVjBZbTkx
Ym1RdGFXUTlRME5HUmtOQ01qRXpNRU5HTWpBMlJEVTNORE14TlVOR05ETXlSa0UwTVRORk5qQTVO
alJFTVEmX0sxM189MzY1Jl9LMTRfPWQ2OGYxZjcxMWU1ZDYyNDAzYmQ2YmYzNTlkNDM4OGJmMDU4
Yjg1YjZhM2ZmNDViNGY3MDIzOWExMzQ5ZWUyMjUiIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29s
b3I6ICNmZmZmZmY7IGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsiPnd3dy5taW5vcmhv
dGVscy5jb20vZW4vbG95YWx0eS9wcml2YWN5LXBvbGljeTwvYT4uIFRoaXMgZS1tYWlsLCBpbmNs
dWRpbmcgYW55IGF0dGFjaG1lbnRzIGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIHRoZXJl
aW4sIGlzIGNvbmZpZGVudGlhbC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVu
dCBvZiB0aGlzIG1lc3NhZ2UsIHlvdSBhcmUgbm90IGFsbG93ZWQgdG8gdXNlIGl0LCBjb3B5IGl0
IG9yIGRpc2Nsb3NlIGl0LCB0b3RhbGx5IG9yIHBhcnRpYWxseSwgYnkgYW55IG1lYW5zLiBJbiBz
dWNoIGV2ZW50LCBwbGVhc2Ugc2VuZCB0aGUgbWVzc2FnZSBiYWNrIHRvIHRoZSBzZW5kZXIgYW5k
IGRlbGV0ZSBpdC4gQW55IHVuYXV0aG9yaXplZCBwdWJsaWNhdGlvbiwgdXNlLCBjb3B5LCBkaXNz
ZW1pbmF0aW9uIG9yIGRpc2Nsb3N1cmUgb2YgdGhpcyBtZXNzYWdlIG9yIGFueSBvZiBpdHMgYXR0
YWNobWVudHMsIGVpdGhlciBpbiB3aG9sZSBvciBpbiBwYXJ0LCB3aGljaGV2ZXIgdGhlIHB1cnBv
c2UgbWlnaHQgYmUsIGlzIHN0cmljdGx5IHByb2hpYml0ZWQuPC90ZD4KPC90cj4KPHRyIHN0eWxl
PSJoZWlnaHQ6IDY1cHg7Ij4KPHRkIGhlaWdodD0iNjUiIHN0eWxlPSJmb250LXNpemU6IDFweDsg
bGluZS1oZWlnaHQ6IDFweDsgaGVpZ2h0OiA2NXB4OyI+Jm5ic3A7PC90ZD4KPC90cj4KPC90Ym9k
eT4KPC90YWJsZT4KPC90ZD4KPC90cj4KPC90Ym9keT4KPC90YWJsZT48L2Rpdj48IS0tW2lmIG1z
b10+PC90ZD48L3RyPjwvdGFibGU+PCFbZW5kaWZdLS0+PCEtLSBib2R5LWNvbnRlbnQtcGxhY2Vo
b2xkZXIgLS0+PCEtLSBib2R5LWNvbnRlbnQtcGxhY2Vob2xkZXIgLS0+PCEtLSBib2R5LWNvbnRl
bnQtcGxhY2Vob2xkZXIgLS0+PCEtLSBib2R5LWNvbnRlbnQtcGxhY2Vob2xkZXIgLS0+PCEtLSBi
b2R5LWNvbnRlbnQtcGxhY2Vob2xkZXIgLS0+PCEtLSBib2R5LWNvbnRlbnQtcGxhY2Vob2xkZXIg
LS0+PCEtLSBib2R5LWNvbnRlbnQtcGxhY2Vob2xkZXIgLS0+PCEtLSBib2R5LWNvbnRlbnQtcGxh
Y2Vob2xkZXIgLS0+PCEtLSBib2R5LWNvbnRlbnQtcGxhY2Vob2xkZXIgLS0+PC9wPgoJCQkJCQoJ
CQkJCQkJCgkJCQkJCgkJCQkJPCEtLSBib2R5LWNvbnRlbnQtcGxhY2Vob2xkZXIgLS0+PCEtLSBi
b2R5LWNvbnRlbnQtcGxhY2Vob2xkZXIgLS0+PCEtLSBib2R5LWNvbnRlbnQtcGxhY2Vob2xkZXIg
LS0+PCEtLSBib2R5LWNvbnRlbnQtcGxhY2Vob2xkZXIgLS0+PCEtLSBib2R5LWNvbnRlbnQtcGxh
Y2Vob2xkZXIgLS0+PC90ZD4KCQkJCTwvdHI+CgkJCTwvdGJvZHk+PC90YWJsZT4KCgkJCTwhLS1b
aWYgKGd0ZSBtc28gOSl8KElFKV0+CgkJCQk8L3RkPgoJCQk8L3RyPgoJCTwvdGFibGU+CgkJPCFb
ZW5kaWZdLS0+CgoJPC9kaXY+CjwvZGl2Pgo8IS0tL0NPTlRFTlQtLT4KCjwvYm9keT48L2h0bWw+

--yMKT1508--

From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185245-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id 6I1HGvcg7WiEQT4AYBR5ng
	(envelope-from <stable+bounces-185245-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:55:35 +0000
Return-path: <stable+bounces-185245-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:55:35 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185245-hi=josie.lol@vger.kernel.org>)
	id 1v8Ktb-0000000HKLA-0Wm7
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:55:35 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id DE30318A6000
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:55:57 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 2292B31AF18;
	Mon, 13 Oct 2025 15:35:47 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="VVvQy98G"
X-Original-To: stable@vger.kernel.org
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 E7AE631AF16;
	Mon, 13 Oct 2025 15:35:46 +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=1760369747; cv=none; b=Y9neeV6+D56TPlWz8g4SCjvrffcB/sEDqupo108Q3OFvUh830Yt6yHrCpYMKMWP1bopB6vVe7nz5tQlxqk6IOrdTFRrpPJ2IoHsL/y04IBkfenX8g7bJEYu6Me5gs3EzKCDD5m7jANsj+KnhSEI1/wnC2hw93kslICNU3Du37Vg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369747; c=relaxed/simple;
	bh=TY/zMOBg6NlhFlQ2cTvwkGXqrmaEnqAShvKuRxAZHUo=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=JKTBjpPWWGyIKkd2B3dNZ2JaeHLRvr+0ZUWCkaTzMv6t291vhjcJBeYyg0Qh0M8KbVrvy9btmCVznpoiswlTYR80UXKwYn5v7idbqj3R9Zf6gwOwpFv9Ywpj9R5Uwih3CH16LK1LUptAUVkOBCiweJrEo3DiI4t/xBzgydqgFX8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=VVvQy98G; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2CFA0C2BCFB;
	Mon, 13 Oct 2025 15:35:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369746;
	bh=TY/zMOBg6NlhFlQ2cTvwkGXqrmaEnqAShvKuRxAZHUo=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=VVvQy98GrUy6TG8M7p3KbgngPkZvzB2wWRfpSgh9wAWcdxR8QBmFbquflbPIRb8rK
	 yTcblbrcYJd+38JsjA91R21ag2hft+FtYArTuvE7GdHK4q04LZkZ0M9dhSiIWaSsw/
	 onvtG4fSTe9fFz9xlLkZTn5SeD+zc+yXpXg460Ew=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Abdun Nihaal <abdun.nihaal@gmail.com>,
	Jiri Slaby <jirislaby@kernel.org>,
	Felix Fietkau <nbd@nbd.name>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 355/563] wifi: mt76: fix potential memory leak in mt76_wmac_probe()
Date: Mon, 13 Oct 2025 16:43:36 +0200
Message-ID: <20251013144424.129712060@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.4 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.4 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: msgid.link]
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 4

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Abdun Nihaal <abdun.nihaal@gmail.com>

[ Upstream commit 42754b7de2b1a2cf116c5e3f1e8e78392f4ed700 ]

In mt76_wmac_probe(), when the mt76_alloc_device() call succeeds, memory
is allocated for both struct ieee80211_hw and a workqueue. However, on
the error path, the workqueue is not freed. Fix that by calling
mt76_free_device() on the error path.

Fixes: c8846e101502 ("mt76: add driver for MT7603E and MT7628/7688")
Signed-off-by: Abdun Nihaal <abdun.nihaal@gmail.com>
Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
Link: https://patch.msgid.link/20250709145532.41246-1-abdun.nihaal@gmail.com
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/mediatek/mt76/mt7603/soc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7603/soc.c b/drivers/net/wireless/mediatek/mt76/mt7603/soc.c
index 08590aa68356f..1dd3723720480 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7603/soc.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7603/soc.c
@@ -48,7 +48,7 @@ mt76_wmac_probe(struct platform_device *pdev)
 
 	return 0;
 error:
-	ieee80211_free_hw(mt76_hw(dev));
+	mt76_free_device(mdev);
 	return ret;
 }
 
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185244-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id mGlTHugg7WhdBT4AYBR5ng
	(envelope-from <stable+bounces-185244-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:55:20 +0000
Return-path: <stable+bounces-185244-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:55:20 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185244-hi=josie.lol@vger.kernel.org>)
	id 1v8KtL-0000000HJul-42yM
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:55:20 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id 7E39218A5EF0
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:55:42 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id C0A92313541;
	Mon, 13 Oct 2025 15:35:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="quGd6ux7"
X-Original-To: stable@vger.kernel.org
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 98CAC31353D;
	Mon, 13 Oct 2025 15:35:43 +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=1760369743; cv=none; b=mGRYELfrdshnd0KMHtv0yDCSPirSmNZG5xh5XBmt/j20LWs5o9nmo5r3/5RYMUGgdBpG35JPdZk0YCoIgAh+pqJ+PpJabEIgDgWJWv5RevMn1TU+1GLrm+okWqdv/dqvoH1Y0a4YGmUsDfMY3/vgfC03VDwYU+jEbvYJAg4HstU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369743; c=relaxed/simple;
	bh=Q1QYFR90UNWwCpLb9Pd9Z6pGWp57+ApjRYsp3x9y20A=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=FC9s6Qd5On9FqqarBSqM9KnvMyQyg93aBIG+4zjsDdY25WrvAfIvDUKFgAGNGLGEXDUkxXGNHBJUbmiDJWuvLZwO0hF+UZofUKjP81en3h/LOe1CcHx75JOXnF5lvhsv2j/5Ci6mawdfnGw6rNgZ/cq9/BfR5j1ACwi8JCCuzXE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=quGd6ux7; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id DDF14C2BCC7;
	Mon, 13 Oct 2025 15:35:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369743;
	bh=Q1QYFR90UNWwCpLb9Pd9Z6pGWp57+ApjRYsp3x9y20A=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=quGd6ux7bBR59wFHdEP4MeCQziFren3mKILUATmY6KOYw2aiKrepc36VkEMz4gQPY
	 SiqdR6Bi5ZlpGyfyTJuwReSsXnSOMZGzWAlEskFNi0p5heGp5O0KxYHH3usR768TsP
	 0muw3r7afJ6bA3ljAr8xAXUBpAA6gpWdpWwxS4TU=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Lorenzo Bianconi <lorenzo@kernel.org>,
	Felix Fietkau <nbd@nbd.name>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 354/563] wifi: mt76: mt7996: Fix mt7996_mcu_bss_mld_tlv routine
Date: Mon, 13 Oct 2025 16:43:35 +0200
Message-ID: <20251013144424.093423382@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.4 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.4 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: msgid.link]
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 4

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Lorenzo Bianconi <lorenzo@kernel.org>

[ Upstream commit ed01c310eca96453c11b59db46c855aa593cffdd ]

Update mt7996_mcu_bss_mld_tlv routine to properly support MLO
configuring the BSS.

Fixes: 98686cd21624c ("wifi: mt76: mt7996: add driver for MediaTek Wi-Fi 7 (802.11be) devices")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20250710-mt7996-mlo-fixes-v3-v1-1-e7595b089f2c@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../net/wireless/mediatek/mt76/mt7996/main.c  | 46 ++++++++++++++++++-
 .../net/wireless/mediatek/mt76/mt7996/mcu.c   | 26 ++++++++---
 .../net/wireless/mediatek/mt76/mt7996/mcu.h   |  3 +-
 .../wireless/mediatek/mt76/mt7996/mt7996.h    |  8 ++++
 4 files changed, 75 insertions(+), 8 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/main.c b/drivers/net/wireless/mediatek/mt76/mt7996/main.c
index 8a8a478391646..3c34a4980afa0 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7996/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7996/main.c
@@ -138,6 +138,28 @@ static int get_omac_idx(enum nl80211_iftype type, u64 mask)
 	return -1;
 }
 
+static int get_own_mld_idx(u64 mask, bool group_mld)
+{
+	u8 start = group_mld ? 0 : 16;
+	u8 end = group_mld ? 15 : 63;
+	int idx;
+
+	idx = get_free_idx(mask, start, end);
+	if (idx)
+		return idx - 1;
+
+	/* If the 16-63 range is not available, perform another lookup in the
+	 * range 0-15
+	 */
+	if (!group_mld) {
+		idx = get_free_idx(mask, 0, 15);
+		if (idx)
+			return idx - 1;
+	}
+
+	return -EINVAL;
+}
+
 static void
 mt7996_init_bitrate_mask(struct ieee80211_vif *vif, struct mt7996_vif_link *mlink)
 {
@@ -279,7 +301,7 @@ int mt7996_vif_link_add(struct mt76_phy *mphy, struct ieee80211_vif *vif,
 	struct mt7996_dev *dev = phy->dev;
 	u8 band_idx = phy->mt76->band_idx;
 	struct mt76_txq *mtxq;
-	int idx, ret;
+	int mld_idx, idx, ret;
 
 	mlink->idx = __ffs64(~dev->mt76.vif_mask);
 	if (mlink->idx >= mt7996_max_interface_num(dev))
@@ -289,6 +311,17 @@ int mt7996_vif_link_add(struct mt76_phy *mphy, struct ieee80211_vif *vif,
 	if (idx < 0)
 		return -ENOSPC;
 
+	if (!dev->mld_idx_mask) { /* first link in the group */
+		mvif->mld_group_idx = get_own_mld_idx(dev->mld_idx_mask, true);
+		mvif->mld_remap_idx = get_free_idx(dev->mld_remap_idx_mask,
+						   0, 15);
+	}
+
+	mld_idx = get_own_mld_idx(dev->mld_idx_mask, false);
+	if (mld_idx < 0)
+		return -ENOSPC;
+
+	link->mld_idx = mld_idx;
 	link->phy = phy;
 	mlink->omac_idx = idx;
 	mlink->band_idx = band_idx;
@@ -301,6 +334,11 @@ int mt7996_vif_link_add(struct mt76_phy *mphy, struct ieee80211_vif *vif,
 		return ret;
 
 	dev->mt76.vif_mask |= BIT_ULL(mlink->idx);
+	if (!dev->mld_idx_mask) {
+		dev->mld_idx_mask |= BIT_ULL(mvif->mld_group_idx);
+		dev->mld_remap_idx_mask |= BIT_ULL(mvif->mld_remap_idx);
+	}
+	dev->mld_idx_mask |= BIT_ULL(link->mld_idx);
 	phy->omac_mask |= BIT_ULL(mlink->omac_idx);
 
 	idx = MT7996_WTBL_RESERVED - mlink->idx;
@@ -380,7 +418,13 @@ void mt7996_vif_link_remove(struct mt76_phy *mphy, struct ieee80211_vif *vif,
 	}
 
 	dev->mt76.vif_mask &= ~BIT_ULL(mlink->idx);
+	dev->mld_idx_mask &= ~BIT_ULL(link->mld_idx);
 	phy->omac_mask &= ~BIT_ULL(mlink->omac_idx);
+	if (!(dev->mld_idx_mask & ~BIT_ULL(mvif->mld_group_idx))) {
+		/* last link */
+		dev->mld_idx_mask &= ~BIT_ULL(mvif->mld_group_idx);
+		dev->mld_remap_idx_mask &= ~BIT_ULL(mvif->mld_remap_idx);
+	}
 
 	spin_lock_bh(&dev->mt76.sta_poll_lock);
 	if (!list_empty(&msta_link->wcid.poll_list))
diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
index e6db3e0b2ffda..aad58f7831c7b 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7996/mcu.c
@@ -899,17 +899,28 @@ mt7996_mcu_bss_txcmd_tlv(struct sk_buff *skb, bool en)
 }
 
 static void
-mt7996_mcu_bss_mld_tlv(struct sk_buff *skb, struct mt76_vif_link *mlink)
+mt7996_mcu_bss_mld_tlv(struct sk_buff *skb,
+		       struct ieee80211_bss_conf *link_conf,
+		       struct mt7996_vif_link *link)
 {
+	struct ieee80211_vif *vif = link_conf->vif;
+	struct mt7996_vif *mvif = (struct mt7996_vif *)vif->drv_priv;
 	struct bss_mld_tlv *mld;
 	struct tlv *tlv;
 
 	tlv = mt7996_mcu_add_uni_tlv(skb, UNI_BSS_INFO_MLD, sizeof(*mld));
-
 	mld = (struct bss_mld_tlv *)tlv;
-	mld->group_mld_id = 0xff;
-	mld->own_mld_id = mlink->idx;
-	mld->remap_idx = 0xff;
+	mld->own_mld_id = link->mld_idx;
+	mld->link_id = link_conf->link_id;
+
+	if (ieee80211_vif_is_mld(vif)) {
+		mld->group_mld_id = mvif->mld_group_idx;
+		mld->remap_idx = mvif->mld_remap_idx;
+		memcpy(mld->mac_addr, vif->addr, ETH_ALEN);
+	} else {
+		mld->group_mld_id = 0xff;
+		mld->remap_idx = 0xff;
+	}
 }
 
 static void
@@ -1108,6 +1119,8 @@ int mt7996_mcu_add_bss_info(struct mt7996_phy *phy, struct ieee80211_vif *vif,
 		goto out;
 
 	if (enable) {
+		struct mt7996_vif_link *link;
+
 		mt7996_mcu_bss_rfch_tlv(skb, phy);
 		mt7996_mcu_bss_bmc_tlv(skb, mlink, phy);
 		mt7996_mcu_bss_ra_tlv(skb, phy);
@@ -1118,7 +1131,8 @@ int mt7996_mcu_add_bss_info(struct mt7996_phy *phy, struct ieee80211_vif *vif,
 			mt7996_mcu_bss_he_tlv(skb, vif, link_conf, phy);
 
 		/* this tag is necessary no matter if the vif is MLD */
-		mt7996_mcu_bss_mld_tlv(skb, mlink);
+		link = container_of(mlink, struct mt7996_vif_link, mt76);
+		mt7996_mcu_bss_mld_tlv(skb, link_conf, link);
 	}
 
 	mt7996_mcu_bss_mbssid_tlv(skb, link_conf, enable);
diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/mcu.h b/drivers/net/wireless/mediatek/mt76/mt7996/mcu.h
index 130ea95626d5b..7b21d6ae7e435 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7996/mcu.h
+++ b/drivers/net/wireless/mediatek/mt76/mt7996/mcu.h
@@ -481,7 +481,8 @@ struct bss_mld_tlv {
 	u8 own_mld_id;
 	u8 mac_addr[ETH_ALEN];
 	u8 remap_idx;
-	u8 __rsv[3];
+	u8 link_id;
+	u8 __rsv[2];
 } __packed;
 
 struct sta_rec_ht_uni {
diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h b/drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h
index bbd4679edc9d3..b98cfe6e5be8c 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h
+++ b/drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h
@@ -248,11 +248,16 @@ struct mt7996_vif_link {
 
 	struct ieee80211_tx_queue_params queue_params[IEEE80211_NUM_ACS];
 	struct cfg80211_bitrate_mask bitrate_mask;
+
+	u8 mld_idx;
 };
 
 struct mt7996_vif {
 	struct mt7996_vif_link deflink; /* must be first */
 	struct mt76_vif_data mt76;
+
+	u8 mld_group_idx;
+	u8 mld_remap_idx;
 };
 
 /* crash-dump */
@@ -337,6 +342,9 @@ struct mt7996_dev {
 	u32 q_int_mask[MT7996_MAX_QUEUE];
 	u32 q_wfdma_mask;
 
+	u64 mld_idx_mask;
+	u64 mld_remap_idx_mask;
+
 	const struct mt76_bus_ops *bus_ops;
 	struct mt7996_phy phy;
 
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185231-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id MF09NYwg7WhVojMAYBR5ng
	(envelope-from <stable+bounces-185231-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:53:48 +0000
Return-path: <stable+bounces-185231-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:53:48 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185231-hi=josie.lol@vger.kernel.org>)
	id 1v8Krs-0000000HHGb-28WO
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:53:48 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id 3648018A5215
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:54:11 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 1B8C330F95D;
	Mon, 13 Oct 2025 15:35:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="wAQ3N298"
X-Original-To: stable@vger.kernel.org
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 E7A7730F955;
	Mon, 13 Oct 2025 15:35:05 +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=1760369706; cv=none; b=XKYU7iJHiJas/7hzEAdZOnHNpfT++kgx2tWSwnCOMZdwk38vNs8o9sC905+HzhpJON1P+v2Cw3fjqYT66URX10THXlnooe1vSQ0/696LE6YuKrAzeD9Zw8F+hu45UUp/ckUrP6Ii0tXURI0B5tLGFu/jqOJnJ6ZQ5XFzHexhHz0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369706; c=relaxed/simple;
	bh=W64ANFtBWKmqauUBwHeU/5/T8M6A9VDIl76xHBvRpDs=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=FLTQgU7f45jNq/yB6yXtaLRyNfo3Ce8u0FVjBG3PLEzKyVfLM96F/hJjkUEE8yXu1k+VjLlwrBmDKkTSFEp2TYQBvipaf3O5RUTQRorBZJw2cKKrbTKFinevgw2OolTCaisxgnPYumERWB8Rq3oarw17B3WSO8RrnZiNdO5Z0PE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=wAQ3N298; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 66396C4CEE7;
	Mon, 13 Oct 2025 15:35:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369705;
	bh=W64ANFtBWKmqauUBwHeU/5/T8M6A9VDIl76xHBvRpDs=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=wAQ3N298UmNlcS9aRi4gqoYJmMBJpMPo4+fpuHjlEmYM9E/7VwkQrq6gRhy04cP/3
	 BQOknwssC9wKK9WREofeGKsaDUbKJaS2x6g1hBA2nAXSzCQOVBYmqiUeR5s2cIPdtB
	 6wkcSDFZgWZO7H2ZsxfESe2WrwZ3ydoA9mKj2T3I=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	syzbot+b0373017f711c06ada64@syzkaller.appspotmail.com,
	Moon Hee Lee <moonhee.lee.ca@gmail.com>,
	Konstantin Komarov <almaz.alexandrovich@paragon-software.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 339/563] fs/ntfs3: reject index allocation if $BITMAP is empty but blocks exist
Date: Mon, 13 Oct 2025 16:43:20 +0200
Message-ID: <20251013144423.550705949@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -1.9 (-)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-1.9 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
                             medium trust
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -18

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Moon Hee Lee <moonhee.lee.ca@gmail.com>

[ Upstream commit 0dc7117da8f92dd5fe077d712a756eccbe377d40 ]

Index allocation requires at least one bit in the $BITMAP attribute to
track usage of index entries. If the bitmap is empty while index blocks
are already present, this reflects on-disk corruption.

syzbot triggered this condition using a malformed NTFS image. During a
rename() operation involving a long filename (which spans multiple
index entries), the empty bitmap allowed the name to be added without
valid tracking. Subsequent deletion of the original entry failed with
-ENOENT, due to unexpected index state.

Reject such cases by verifying that the bitmap is not empty when index
blocks exist.

Reported-by: syzbot+b0373017f711c06ada64@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=b0373017f711c06ada64
Fixes: d99208b91933 ("fs/ntfs3: cancle set bad inode after removing name fails")
Tested-by: syzbot+b0373017f711c06ada64@syzkaller.appspotmail.com
Signed-off-by: Moon Hee Lee <moonhee.lee.ca@gmail.com>
Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/ntfs3/index.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/fs/ntfs3/index.c b/fs/ntfs3/index.c
index 1bf2a6593dec6..6d1bf890929d9 100644
--- a/fs/ntfs3/index.c
+++ b/fs/ntfs3/index.c
@@ -1508,6 +1508,16 @@ static int indx_add_allocate(struct ntfs_index *indx, struct ntfs_inode *ni,
 			bmp_size = bmp_size_v = le32_to_cpu(bmp->res.data_size);
 		}
 
+		/*
+		 * Index blocks exist, but $BITMAP has zero valid bits.
+		 * This implies an on-disk corruption and must be rejected.
+		 */
+		if (in->name == I30_NAME &&
+		    unlikely(bmp_size_v == 0 && indx->alloc_run.count)) {
+			err = -EINVAL;
+			goto out1;
+		}
+
 		bit = bmp_size << 3;
 	}
 
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185222-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id yGk/L20g7Wh1QT4AYBR5ng
	(envelope-from <stable+bounces-185222-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:53:17 +0000
Return-path: <stable+bounces-185222-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:53:17 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185222-hi=josie.lol@vger.kernel.org>)
	id 1v8KrN-0000000HFiQ-0pxF
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:53:17 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id C9DE618A4A1D
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:53:39 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 6352F30F7F1;
	Mon, 13 Oct 2025 15:34:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="cXTQVxeB"
X-Original-To: stable@vger.kernel.org
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 3AB6230F92A;
	Mon, 13 Oct 2025 15:34:40 +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=1760369680; cv=none; b=GYQ48QddjkGA1LvbC5orMXTSRU8RtHUrC0QpbrTEcK0jjWiayfA6+P+6IJwek32XTiGpK+eRNIrxvhupNu1JvtdCPktjddivFIFhrcQ3vno+vImaMp7ICJq+NeYkqoj9GDLlwMELtDMfXJ6xRt0LCuQr9lMwRL40wlUY1K1lCpo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369680; c=relaxed/simple;
	bh=uDJqEjK5q7EGq0guwt36E67b05ByvMFB/aw68dfdlgQ=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=MsqYr1lGDjr4jraixgeqNU98XZLSH7CmsC5384jFxmB9OApgtOIBA61QqA0FePwQa5hmYHeCK2pOTiN4uA4BbblU0Uf8mMdv4xW/C4qCV5OsUegmYF7MV54Hs58lI/BzoDAZ9geogZP2A5Ayma+CUuQGB0SBot8dlzURUWrbTc0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=cXTQVxeB; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id BDC98C4CEE7;
	Mon, 13 Oct 2025 15:34:39 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369680;
	bh=uDJqEjK5q7EGq0guwt36E67b05ByvMFB/aw68dfdlgQ=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=cXTQVxeBsjqff6T9OmEeUt741jMVe+p8wDcVYFE2rfOC+64wrq+fEfeOYiMQOZam+
	 W/Pw77Yt0DW4hI0NoAbiG2zEFkyoaQdx4kK4Fh2O7B7HzfEzBlAcovZnxzYpPPBGU2
	 FGsLeNUh95Gi1wS1qDnZjcGVs3/m24lTrSgkzsnY=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Takashi Iwai <tiwai@suse.de>,
	Mark Brown <broonie@kernel.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 331/563] ASoC: Intel: bytcr_rt5640: Fix invalid quirk input mapping
Date: Mon, 13 Oct 2025 16:43:12 +0200
Message-ID: <20251013144423.253534693@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.4 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.4 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 4

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Takashi Iwai <tiwai@suse.de>

[ Upstream commit fba404e4b4af4f4f747bb0e41e9fff7d03c7bcc0 ]

When an invalid value is passed via quirk option, currently
bytcr_rt5640 driver only shows an error message but leaves as is.
This may lead to unepxected results like OOB access.

This patch corrects the input mapping to the certain default value if
an invalid value is passed.

Fixes: 063422ca2a9d ("ASoC: Intel: bytcr_rt5640: Set card long_name based on quirks")
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Message-ID: <20250902171826.27329-3-tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/intel/boards/bytcr_rt5640.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/sound/soc/intel/boards/bytcr_rt5640.c b/sound/soc/intel/boards/bytcr_rt5640.c
index 0f3b8f44e7011..bc846558480e4 100644
--- a/sound/soc/intel/boards/bytcr_rt5640.c
+++ b/sound/soc/intel/boards/bytcr_rt5640.c
@@ -68,7 +68,8 @@ enum {
 	BYT_RT5640_OVCD_SF_1P5		= (RT5640_OVCD_SF_1P5 << 13),
 };
 
-#define BYT_RT5640_MAP(quirk)		((quirk) &  GENMASK(3, 0))
+#define BYT_RT5640_MAP_MASK		GENMASK(3, 0)
+#define BYT_RT5640_MAP(quirk)		((quirk) & BYT_RT5640_MAP_MASK)
 #define BYT_RT5640_JDSRC(quirk)		(((quirk) & GENMASK(7, 4)) >> 4)
 #define BYT_RT5640_OVCD_TH(quirk)	(((quirk) & GENMASK(12, 8)) >> 8)
 #define BYT_RT5640_OVCD_SF(quirk)	(((quirk) & GENMASK(14, 13)) >> 13)
@@ -140,7 +141,9 @@ static void log_quirks(struct device *dev)
 		dev_info(dev, "quirk NO_INTERNAL_MIC_MAP enabled\n");
 		break;
 	default:
-		dev_err(dev, "quirk map 0x%x is not supported, microphone input will not work\n", map);
+		dev_warn_once(dev, "quirk sets invalid input map: 0x%x, default to DMIC1_MAP\n", map);
+		byt_rt5640_quirk &= ~BYT_RT5640_MAP_MASK;
+		byt_rt5640_quirk |= BYT_RT5640_DMIC1_MAP;
 		break;
 	}
 	if (byt_rt5640_quirk & BYT_RT5640_HSMIC2_ON_IN1)
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185215-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id WK6FBSog7Wjfgj4AYBR5ng
	(envelope-from <stable+bounces-185215-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:52:10 +0000
Return-path: <stable+bounces-185215-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:52:10 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185215-hi=josie.lol@vger.kernel.org>)
	id 1v8KqH-0000000HDb6-2evJ
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:52:10 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id 38F151890AF5
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:52:24 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 572FC30C363;
	Mon, 13 Oct 2025 15:34:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="fDaOqylr"
X-Original-To: stable@vger.kernel.org
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 247C530BF7F;
	Mon, 13 Oct 2025 15:34:20 +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=1760369660; cv=none; b=s9pgHaHdJBYS+bws0NXcG+cHoB7GlCWLxB137ostQc9tL9tK+IbkQE1e2FbJKnK7zymh/g2eXfbVqcRIO1kHB7ZRo2btLjgRnb2BzrOtja/KOD5mrjGfRdIKGv06vf2pok1NIjdAHIDp3N+HdUfGc03vx1bFfpAdVlOu6SGDTp8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369660; c=relaxed/simple;
	bh=+yAzpC/XcYeT8EbdhF2o5ieUwwfKmk4B7GvcHPuTqmE=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=e9I0U5ZaUe5Wnmsja6pD0EcIS0ONgwvdmb2gcAforJJeyAXq6EqLPul8je+3pJAT/gzv+4ZhM1mLz7cuXJ9ggDX4cddd+W8K+JFwWAsnxwr+e3xreoXW292j/XVzlEk9dVvohvGSJCyuRxCI1DW4u6eb8KocpIMNjEx7mCA5gdc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=fDaOqylr; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A11C9C4CEE7;
	Mon, 13 Oct 2025 15:34:19 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369660;
	bh=+yAzpC/XcYeT8EbdhF2o5ieUwwfKmk4B7GvcHPuTqmE=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=fDaOqylrfZ4/kQr49erdVmz23P+m8P+nl3aJ5VSD5GDdVIayDBcZO92xsNJsNwH6y
	 IWQHgZT24/Y1mJ58nuploLL7mvZZzTKN3xYIdlu5JBRPPTMSfXkaiDvBekGoQz+Tmj
	 VZLWN9GT4rwS3C5/BPIo3WgHyX2DwpbSKhyZmwV8=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Rob Clark <robin.clark@oss.qualcomm.com>,
	Connor Abbott <cwabbott0@gmail.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 324/563] drm/msm: Fix obj leak in VM_BIND error path
Date: Mon, 13 Oct 2025 16:43:05 +0200
Message-ID: <20251013144423.000618144@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -1.9 (-)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-1.9 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
                             medium trust
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -18

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Rob Clark <robin.clark@oss.qualcomm.com>

[ Upstream commit 278f8904434aa96055e793936b5977c010549e28 ]

If we fail a handle-lookup part way thru, we need to drop the already
obtained obj references.

Fixes: 2e6a8a1fe2b2 ("drm/msm: Add VM_BIND ioctl")
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
Tested-by: Connor Abbott <cwabbott0@gmail.com>
Patchwork: https://patchwork.freedesktop.org/patch/669784/
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/msm/msm_gem_vma.c | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/msm/msm_gem_vma.c b/drivers/gpu/drm/msm/msm_gem_vma.c
index 00d0f3b7ba327..209154be5efcc 100644
--- a/drivers/gpu/drm/msm/msm_gem_vma.c
+++ b/drivers/gpu/drm/msm/msm_gem_vma.c
@@ -1023,6 +1023,7 @@ vm_bind_job_lookup_ops(struct msm_vm_bind_job *job, struct drm_msm_vm_bind *args
 	struct drm_device *dev = job->vm->drm;
 	int ret = 0;
 	int cnt = 0;
+	int i = -1;
 
 	if (args->nr_ops == 1) {
 		/* Single op case, the op is inlined: */
@@ -1056,11 +1057,12 @@ vm_bind_job_lookup_ops(struct msm_vm_bind_job *job, struct drm_msm_vm_bind *args
 
 	spin_lock(&file->table_lock);
 
-	for (unsigned i = 0; i < args->nr_ops; i++) {
+	for (i = 0; i < args->nr_ops; i++) {
+		struct msm_vm_bind_op *op = &job->ops[i];
 		struct drm_gem_object *obj;
 
-		if (!job->ops[i].handle) {
-			job->ops[i].obj = NULL;
+		if (!op->handle) {
+			op->obj = NULL;
 			continue;
 		}
 
@@ -1068,15 +1070,15 @@ vm_bind_job_lookup_ops(struct msm_vm_bind_job *job, struct drm_msm_vm_bind *args
 		 * normally use drm_gem_object_lookup(), but for bulk lookup
 		 * all under single table_lock just hit object_idr directly:
 		 */
-		obj = idr_find(&file->object_idr, job->ops[i].handle);
+		obj = idr_find(&file->object_idr, op->handle);
 		if (!obj) {
-			ret = UERR(EINVAL, dev, "invalid handle %u at index %u\n", job->ops[i].handle, i);
+			ret = UERR(EINVAL, dev, "invalid handle %u at index %u\n", op->handle, i);
 			goto out_unlock;
 		}
 
 		drm_gem_object_get(obj);
 
-		job->ops[i].obj = obj;
+		op->obj = obj;
 		cnt++;
 	}
 
@@ -1085,6 +1087,17 @@ vm_bind_job_lookup_ops(struct msm_vm_bind_job *job, struct drm_msm_vm_bind *args
 out_unlock:
 	spin_unlock(&file->table_lock);
 
+	if (ret) {
+		for (; i >= 0; i--) {
+			struct msm_vm_bind_op *op = &job->ops[i];
+
+			if (!op->obj)
+				continue;
+
+			drm_gem_object_put(op->obj);
+			op->obj = NULL;
+		}
+	}
 out:
 	return ret;
 }
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185211-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id 4E3SLCQg7Wg2BT4AYBR5ng
	(envelope-from <stable+bounces-185211-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:52:04 +0000
Return-path: <stable+bounces-185211-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:52:04 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185211-hi=josie.lol@vger.kernel.org>)
	id 1v8KqC-0000000HDQn-1Qsx
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:52:04 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id 25F8218852E0
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:52:19 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id E9F9A30C602;
	Mon, 13 Oct 2025 15:34:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="wqZT25hA"
X-Original-To: stable@vger.kernel.org
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 BE24830C363;
	Mon, 13 Oct 2025 15:34:08 +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=1760369648; cv=none; b=Kwn2HxTg5NKfx5TlWB+Yth+Ibiw+Zl2K5EBedZgSfCSf7lJSOxKAgs/J71dg4UsDbwdcGcxsE8KRwXVuCAi0FQF3w7FJxCCfIGi5CGbgU2in0AJPq6FE8L8wL5fPYgYN9S6989fQmLvAnvpRlBk/Pz2Pte+sPcf9d1AO4VzXwQA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369648; c=relaxed/simple;
	bh=Ijyjvc0xX5prMaTmkzxQ3M9MQenBzEwfB05K29BEn3w=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=V0KNHunVI2Jkywo2kG7vpbtp+vLedN0exfgwbC1VW4ijPNeWg8QSMzFzndYMAQpOhTnhwSW34WkPHIbJp70HVL7sR7wpz2IwoX0vbgA5H4al2at3Kvsl4GoPW7S4gjjbPHy7qNYyM7dTbTdEcPy5++ZodfUBHyPZoa1mqtqmuJk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=wqZT25hA; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4A056C4CEE7;
	Mon, 13 Oct 2025 15:34:08 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369648;
	bh=Ijyjvc0xX5prMaTmkzxQ3M9MQenBzEwfB05K29BEn3w=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=wqZT25hAs/SVvvcuJFEHAZaCsTJ36wT5qzI8b4BWC70K0rYyyKmOuOmCrJ0hxaQ3o
	 orRKJR3u3/H6O5q66uweH2PXzibVngDhIIwJdspzaq1YRIzwb8aI4fpxULH9iHhLRG
	 wLjLYV2qYtR7wdCRGGG3vSepWf7qlT7PPArOp+yA=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Seppo Takalo <seppo.takalo@nordicsemi.no>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 321/563] tty: n_gsm: Dont block input queue by waiting MSC
Date: Mon, 13 Oct 2025 16:43:02 +0200
Message-ID: <20251013144422.893989893@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.4 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.4 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 4

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Seppo Takalo <seppo.takalo@nordicsemi.no>

[ Upstream commit 3cf0b3c243e56bc43be560617416c1d9f301f44c ]

Currently gsm_queue() processes incoming frames and when opening
a DLC channel it calls gsm_dlci_open() which calls gsm_modem_update().
If basic mode is used it calls gsm_modem_upd_via_msc() and it
cannot block the input queue by waiting the response to come
into the same input queue.

Instead allow sending Modem Status Command without waiting for remote
end to respond. Define a new function gsm_modem_send_initial_msc()
for this purpose. As MSC is only valid for basic encoding, it does
not do anything for advanced or when convergence layer type 2 is used.

Fixes: 48473802506d ("tty: n_gsm: fix missing update of modem controls after DLCI open")
Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no>
Link: https://lore.kernel.org/r/20250827123221.1148666-1-seppo.takalo@nordicsemi.no
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/tty/n_gsm.c | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
index 7fc535452c0b3..553d8c70352b1 100644
--- a/drivers/tty/n_gsm.c
+++ b/drivers/tty/n_gsm.c
@@ -461,6 +461,7 @@ static int gsm_send_packet(struct gsm_mux *gsm, struct gsm_msg *msg);
 static struct gsm_dlci *gsm_dlci_alloc(struct gsm_mux *gsm, int addr);
 static void gsmld_write_trigger(struct gsm_mux *gsm);
 static void gsmld_write_task(struct work_struct *work);
+static int gsm_modem_send_initial_msc(struct gsm_dlci *dlci);
 
 /**
  *	gsm_fcs_add	-	update FCS
@@ -2174,7 +2175,7 @@ static void gsm_dlci_open(struct gsm_dlci *dlci)
 		pr_debug("DLCI %d goes open.\n", dlci->addr);
 	/* Send current modem state */
 	if (dlci->addr) {
-		gsm_modem_update(dlci, 0);
+		gsm_modem_send_initial_msc(dlci);
 	} else {
 		/* Start keep-alive control */
 		gsm->ka_num = 0;
@@ -4161,6 +4162,28 @@ static int gsm_modem_upd_via_msc(struct gsm_dlci *dlci, u8 brk)
 	return gsm_control_wait(dlci->gsm, ctrl);
 }
 
+/**
+ * gsm_modem_send_initial_msc - Send initial modem status message
+ *
+ * @dlci channel
+ *
+ * Send an initial MSC message after DLCI open to set the initial
+ * modem status lines. This is only done for basic mode.
+ * Does not wait for a response as we cannot block the input queue
+ * processing.
+ */
+static int gsm_modem_send_initial_msc(struct gsm_dlci *dlci)
+{
+	u8 modembits[2];
+
+	if (dlci->adaption != 1 || dlci->gsm->encoding != GSM_BASIC_OPT)
+		return 0;
+
+	modembits[0] = (dlci->addr << 2) | 2 | EA; /* DLCI, Valid, EA */
+	modembits[1] = (gsm_encode_modem(dlci) << 1) | EA;
+	return gsm_control_command(dlci->gsm, CMD_MSC, (const u8 *)&modembits, 2);
+}
+
 /**
  *	gsm_modem_update	-	send modem status line state
  *	@dlci: channel
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185207-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id mMrVFx8g7WhxQT4AYBR5ng
	(envelope-from <stable+bounces-185207-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:59 +0000
Return-path: <stable+bounces-185207-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:51:59 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185207-hi=josie.lol@vger.kernel.org>)
	id 1v8Kq6-0000000HDDM-3yJu
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:51:59 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id 5C552188ABEB
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:52:14 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 2883E30C349;
	Mon, 13 Oct 2025 15:33:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="W3/9cY5s"
X-Original-To: stable@vger.kernel.org
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 F33E330C342;
	Mon, 13 Oct 2025 15:33:56 +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=1760369637; cv=none; b=nFPf76pXqdmncis4wQrCkNFi5OVXOKUK82AgKUZWLBZS0HRGTriJzoA5VAT8VuF0w5UWCFQ9K+jMrix4D0nLb3WaM2bsBkLCjDHj9sEtKRVoiRp6yddfMOZJRhjbbapgMRBmo2sBNCgIA4fORouRNKHogSmrxpDDbuoUztN8Bns=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369637; c=relaxed/simple;
	bh=v1sqTLmaVKGNOsmte3ZKJB0J4f2wOERW9n6R7mvfXhA=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=iXC3YGqSw0brfRcdhjN6Omq4JZ5U/2+4PpiQ0/tqTNJ66pOYuJ7Td2U6clT6VZMw4iOIBj8d2ot2+Uv5Rz4wkWXqSX5RoH/R3oKkRtSlKdQAINFpuclgCCmDhoJ5DJIyTQ4Fqt0EPQ5b56sXuY9FC5mFEL6lB2M0nxMBCBS8dO0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=W3/9cY5s; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7E9CBC4CEE7;
	Mon, 13 Oct 2025 15:33:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369636;
	bh=v1sqTLmaVKGNOsmte3ZKJB0J4f2wOERW9n6R7mvfXhA=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=W3/9cY5sD1bcR+WM/dQc6+0RKVgi+o0UT7qySxAMJCAjwua7CpLVL/U++v0YoI6Ds
	 A+4fZTxKzayfXz9O5acqwYv4qqjk5/p0S/Wh69b9CUbhh/90oPk9EugcG17Ds6u77y
	 4iU2rlSwNwtNvolbKD0FOmvlIW4vOpLOKYG5Tk0Y=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Anderson Nascimento <anderson@allelesecurity.com>,
	Christian Brauner <brauner@kernel.org>,
	Jan Kara <jack@suse.cz>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 317/563] fanotify: Validate the return value of mnt_ns_from_dentry() before dereferencing
Date: Mon, 13 Oct 2025 16:42:58 +0200
Message-ID: <20251013144422.749875341@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -1.9 (-)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-1.9 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
                             medium trust
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -18

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Anderson Nascimento <anderson@allelesecurity.com>

[ Upstream commit 62e59ffe8787b5550ccff70c30b6f6be6a3ac3dd ]

The function do_fanotify_mark() does not validate if
mnt_ns_from_dentry() returns NULL before dereferencing mntns->user_ns.
This causes a NULL pointer dereference in do_fanotify_mark() if the
path is not a mount namespace object.

Fix this by checking mnt_ns_from_dentry()'s return value before
dereferencing it.

Before the patch

$ gcc fanotify_nullptr.c -o fanotify_nullptr
$ mkdir A
$ ./fanotify_nullptr
Fanotify fd: 3
fanotify_mark: Operation not permitted
$ unshare -Urm
Fanotify fd: 3
Killed

int main(void){
    int ffd;
    ffd = fanotify_init(FAN_CLASS_NOTIF | FAN_REPORT_MNT, 0);
    if(ffd < 0){
        perror("fanotify_init");
        exit(EXIT_FAILURE);
    }

    printf("Fanotify fd: %d\n",ffd);

    if(fanotify_mark(ffd, FAN_MARK_ADD | FAN_MARK_MNTNS,
FAN_MNT_ATTACH, AT_FDCWD, "A") < 0){
        perror("fanotify_mark");
        exit(EXIT_FAILURE);
    }

return 0;
}

After the patch

$ gcc fanotify_nullptr.c -o fanotify_nullptr
$ mkdir A
$ ./fanotify_nullptr
Fanotify fd: 3
fanotify_mark: Operation not permitted
$ unshare -Urm
Fanotify fd: 3
fanotify_mark: Invalid argument

[   25.694973] BUG: kernel NULL pointer dereference, address: 0000000000000038
[   25.695006] #PF: supervisor read access in kernel mode
[   25.695012] #PF: error_code(0x0000) - not-present page
[   25.695017] PGD 109a30067 P4D 109a30067 PUD 142b46067 PMD 0
[   25.695025] Oops: Oops: 0000 [#1] SMP NOPTI
[   25.695032] CPU: 4 UID: 1000 PID: 1478 Comm: fanotify_nullpt Not
tainted 6.17.0-rc4 #1 PREEMPT(lazy)
[   25.695040] Hardware name: VMware, Inc. VMware Virtual
Platform/440BX Desktop Reference Platform, BIOS 6.00 11/12/2020
[   25.695049] RIP: 0010:do_fanotify_mark+0x817/0x950
[   25.695066] Code: 04 00 00 e9 45 fd ff ff 48 8b 7c 24 48 4c 89 54
24 18 4c 89 5c 24 10 4c 89 0c 24 e8 b3 11 fc ff 4c 8b 54 24 18 4c 8b
5c 24 10 <48> 8b 78 38 4c 8b 0c 24 49 89 c4 e9 13 fd ff ff 8b 4c 24 28
85 c9
[   25.695081] RSP: 0018:ffffd31c469e3c08 EFLAGS: 00010203
[   25.695104] RAX: 0000000000000000 RBX: 0000000001000000 RCX: ffff8eb48aebd220
[   25.695110] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8eb4835e8180
[   25.695115] RBP: 0000000000000111 R08: 0000000000000000 R09: 0000000000000000
[   25.695142] R10: ffff8eb48a7d56c0 R11: ffff8eb482bede00 R12: 00000000004012a7
[   25.695148] R13: 0000000000000110 R14: 0000000000000001 R15: ffff8eb48a7d56c0
[   25.695154] FS:  00007f8733bda740(0000) GS:ffff8eb61ce5f000(0000)
knlGS:0000000000000000
[   25.695162] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   25.695170] CR2: 0000000000000038 CR3: 0000000136994006 CR4: 00000000003706f0
[   25.695201] Call Trace:
[   25.695209]  <TASK>
[   25.695215]  __x64_sys_fanotify_mark+0x1f/0x30
[   25.695222]  do_syscall_64+0x82/0x2c0
...

Fixes: 58f5fbeb367f ("fanotify: support watching filesystems and mounts inside userns")
Link: https://patch.msgid.link/CAPhRvkw4ONypNsJrCnxbKnJbYmLHTDEKFC4C_num_5sVBVa8jg@mail.gmail.com
Signed-off-by: Anderson Nascimento <anderson@allelesecurity.com>
Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 fs/notify/fanotify/fanotify_user.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/fs/notify/fanotify/fanotify_user.c b/fs/notify/fanotify/fanotify_user.c
index b192ee068a7ac..561339b4cf752 100644
--- a/fs/notify/fanotify/fanotify_user.c
+++ b/fs/notify/fanotify/fanotify_user.c
@@ -1999,7 +1999,10 @@ static int do_fanotify_mark(int fanotify_fd, unsigned int flags, __u64 mask,
 		user_ns = path.mnt->mnt_sb->s_user_ns;
 		obj = path.mnt->mnt_sb;
 	} else if (obj_type == FSNOTIFY_OBJ_TYPE_MNTNS) {
+		ret = -EINVAL;
 		mntns = mnt_ns_from_dentry(path.dentry);
+		if (!mntns)
+			goto path_put_and_out;
 		user_ns = mntns->user_ns;
 		obj = mntns;
 	}
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185206-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id qPq+JR4g7Wg2BT4AYBR5ng
	(envelope-from <stable+bounces-185206-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:58 +0000
Return-path: <stable+bounces-185206-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:51:58 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185206-hi=josie.lol@vger.kernel.org>)
	id 1v8Kq6-0000000HDCg-13zn
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:51:58 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id 26AFA188BBC0
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:52:13 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 67D0F30C340;
	Mon, 13 Oct 2025 15:33:54 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="d1RsBTg5"
X-Original-To: stable@vger.kernel.org
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 403ED30BF7B;
	Mon, 13 Oct 2025 15:33:54 +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=1760369634; cv=none; b=hqsWbdXfWLmOrHoyBDqri/f9TWZbfqx3RoWD0703OZqwpxN1jvqcxhVhGOL95c2hVVZ9JP6p86DIqLe1uKdwBU+6R5qS2umf0yXaqDkMoZ2JfEIGeomp0ESrQ8XQPwBEYIJ3daaKY8Hf8RNyJ/HU3TzvQXmX3Snf8vkpYE6ThFc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369634; c=relaxed/simple;
	bh=hVBR0VREb+J7VB6x7IJiOrgrGnsFCnwOdmFcZQyF874=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=H9pOV35fjuOiTcFD4Hv3lEuQT19CPl5juzxcaXzrGEScQDHhegXkRfXuwcglsut0nbPIF+fHbOlFTuAE6/uGkXrGKe+ibZg36Mo99rJQoqazYTGnVpd0oHJFSSPDjrYXOCWV6owMh0dmZeqoqTs8hGkMXLu9Ld2lU5hotD3DdOs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=d1RsBTg5; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id AD8B2C4CEE7;
	Mon, 13 Oct 2025 15:33:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369634;
	bh=hVBR0VREb+J7VB6x7IJiOrgrGnsFCnwOdmFcZQyF874=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=d1RsBTg5H4JPqgW4KBQDF0yEDYimhzgnyPdOIOkCA965AhgSKGVWMksOT1leaVgPu
	 INIs6kyMa2Tj9RV1kLv1H8wYbRTVGhRDKULTC5NhYb5GzDFQL/RcPwDEdsjuV3Jcrc
	 r3cTuf9Lh0B2nE3Bo4Fju6XtWPEK67QzHSEMwZMI=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Eric Dumazet <edumazet@google.com>,
	Neal Cardwell <ncardwell@google.com>,
	Kuniyuki Iwashima <kuniyu@google.com>,
	Jason Xing <kerneljasonxing@gmail.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 316/563] tcp: fix __tcp_close() to only send RST when required
Date: Mon, 13 Oct 2025 16:42:57 +0200
Message-ID: <20251013144422.713115255@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -1.9 (-)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-1.9 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: msgid.link]
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
                             medium trust
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -18

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eric Dumazet <edumazet@google.com>

[ Upstream commit 5f9238530970f2993b23dd67fdaffc552a2d2e98 ]

If the receive queue contains payload that was already
received, __tcp_close() can send an unexpected RST.

Refine the code to take tp->copied_seq into account,
as we already do in tcp recvmsg().

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Neal Cardwell <ncardwell@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
Reviewed-by: Jason Xing <kerneljasonxing@gmail.com>
Link: https://patch.msgid.link/20250903084720.1168904-2-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/ipv4/tcp.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index ad76556800f2b..89040007c7b70 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -3099,8 +3099,8 @@ bool tcp_check_oom(const struct sock *sk, int shift)
 
 void __tcp_close(struct sock *sk, long timeout)
 {
+	bool data_was_unread = false;
 	struct sk_buff *skb;
-	int data_was_unread = 0;
 	int state;
 
 	WRITE_ONCE(sk->sk_shutdown, SHUTDOWN_MASK);
@@ -3119,11 +3119,12 @@ void __tcp_close(struct sock *sk, long timeout)
 	 *  reader process may not have drained the data yet!
 	 */
 	while ((skb = __skb_dequeue(&sk->sk_receive_queue)) != NULL) {
-		u32 len = TCP_SKB_CB(skb)->end_seq - TCP_SKB_CB(skb)->seq;
+		u32 end_seq = TCP_SKB_CB(skb)->end_seq;
 
 		if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN)
-			len--;
-		data_was_unread += len;
+			end_seq--;
+		if (after(end_seq, tcp_sk(sk)->copied_seq))
+			data_was_unread = true;
 		__kfree_skb(skb);
 	}
 
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185235-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id 6GbgDJIg7WiEQT4AYBR5ng
	(envelope-from <stable+bounces-185235-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:53:54 +0000
Return-path: <stable+bounces-185235-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:53:54 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185235-hi=josie.lol@vger.kernel.org>)
	id 1v8Krx-0000000HHOL-1PxN
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:53:53 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id 111DB18A5A7C
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:54:16 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 70CE6309DC4;
	Mon, 13 Oct 2025 15:35:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="chWo5Dnz"
X-Original-To: stable@vger.kernel.org
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 48FAB3093CE;
	Mon, 13 Oct 2025 15:35:17 +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=1760369717; cv=none; b=NKT+uyMwHxv6kPXFhmhDs8z6MjJF4kIIOuJAL8Kw5Gywa3Q4CCl2Q1n5ns0TLYnsW2Eyu3OuoIq2jO9NvHsrn8+U6DbouU49VtHXSOgUx3uhv4z91W2UA6duT7rk+h2GoWh2zpqiGREEPuIg8UyeDbZ/2zuOEtmleLyRlprJSlw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369717; c=relaxed/simple;
	bh=wTNoRkrPZTVPHmKcVvYacHJdTg/dLeKrEuG3jDwglQA=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=TRlDd3x0SutD2EdtdEv6Mvi8XgfBGduoSPtoe5RTab7cVozBhTF3mzDt8ybPK47Lu2hi6IkZxVhLVJFTZT4sm3R9m98x6JSeDzEQDdSc/NjZzi4w5sSrgHghSCtGtnZXXkV4pYnjRB7zBA8uLiA2vAH8bZPTELJRU0JZilaGn60=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=chWo5Dnz; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C0207C4CEE7;
	Mon, 13 Oct 2025 15:35:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369717;
	bh=wTNoRkrPZTVPHmKcVvYacHJdTg/dLeKrEuG3jDwglQA=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=chWo5DnzJnrxC8AutlrA6ELXV4aevyqF5GU57j7SG1a16afkJR58AkNzM4auY0/EQ
	 BUQ3LX1COWVFVTZ8Omd9zxkAU/Os4pi1JO2xVkqm/Bi9xCNdiDv3fw1UanRBTBBI75
	 MDKtG1BtOHTt8XN9gHVt34WY0Y+ottWsoWW1fPF8=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Stefan Kerkmann <s.kerkmann@pengutronix.de>,
	Jeff Chen <jeff.chen_1@nxp.con>,
	Johannes Berg <johannes.berg@intel.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 310/563] wifi: mwifiex: send world regulatory domain to driver
Date: Mon, 13 Oct 2025 16:42:51 +0200
Message-ID: <20251013144422.495377882@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.4 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.4 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: msgid.link]
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 4

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Stefan Kerkmann <s.kerkmann@pengutronix.de>

[ Upstream commit 56819d00bc2ebaa6308913c28680da5d896852b8 ]

The world regulatory domain is a restrictive subset of channel
configurations which allows legal operation of the adapter all over the
world. Changing to this domain should not be prevented.

Fixes: dd4a9ac05c8e1 ("mwifiex: send regulatory domain info to firmware only if alpha2 changed") changed
Signed-off-by: Stefan Kerkmann <s.kerkmann@pengutronix.de>
Reviewed-by: Jeff Chen <jeff.chen_1@nxp.con>
Link: https://patch.msgid.link/20250804-fix-mwifiex-regulatory-domain-v1-1-e4715c770c4d@pengutronix.de
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/marvell/mwifiex/cfg80211.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
index 4c8c7a5fdf23e..be23a29e7de09 100644
--- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
@@ -686,10 +686,9 @@ static void mwifiex_reg_notifier(struct wiphy *wiphy,
 		return;
 	}
 
-	/* Don't send world or same regdom info to firmware */
-	if (strncmp(request->alpha2, "00", 2) &&
-	    strncmp(request->alpha2, adapter->country_code,
-		    sizeof(request->alpha2))) {
+	/* Don't send same regdom info to firmware */
+	if (strncmp(request->alpha2, adapter->country_code,
+		    sizeof(request->alpha2)) != 0) {
 		memcpy(adapter->country_code, request->alpha2,
 		       sizeof(request->alpha2));
 		mwifiex_send_domain_info_cmd_fw(wiphy);
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185234-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id OPi4G5Ag7WiEQT4AYBR5ng
	(envelope-from <stable+bounces-185234-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:53:52 +0000
Return-path: <stable+bounces-185234-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:53:52 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185234-hi=josie.lol@vger.kernel.org>)
	id 1v8Krw-0000000HHNE-0Uwb
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:53:52 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id C013318A59E0
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:54:14 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 7DA5030FC00;
	Mon, 13 Oct 2025 15:35:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="QHd4Umk/"
X-Original-To: stable@vger.kernel.org
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 564343093CE;
	Mon, 13 Oct 2025 15:35:14 +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=1760369714; cv=none; b=TvZ4r3H/mJtel1La0nC2bTtza1r9aXscJbv8Fz2cEWMth0IXJdFAI5tCRz2qM3ZkWssLxIt+0TIoyXsiNVewV968evnK2H4JjVdswi0PXohq7rM6pRCtFKnOXjN2olJk2pjbTDp55WJmEL6tUl2nwhPAPL8Rg6/bodqEfqBk/co=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369714; c=relaxed/simple;
	bh=gFO1nVF3OPkAVhWf0dHEhrK23Zh2H3H7QDqbpl0nMl8=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=Up5fxobR2SjTCb8VS3M5SAfL9iGU4TSBplKTHc/6+OGf6BPy2+SDOnWh4VooO8oSUoQPumQpM8pvqe4steeponLHe9RPTb4K0Oo8sZA3zgDtFtFLU2BqOV6tV1dJR6hassba3ky5f95spz7vbTcFWXED4FItRzbq1c+qDu3/vnQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=QHd4Umk/; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D6299C4CEE7;
	Mon, 13 Oct 2025 15:35:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369714;
	bh=gFO1nVF3OPkAVhWf0dHEhrK23Zh2H3H7QDqbpl0nMl8=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=QHd4Umk/QEpo7P12VomRSJHTUO4y6AGBxyJw6IjTy4Y1lM156rvIOFUbpLslSm6UH
	 0HRUtzkhnn+sy2tuPP4PjNvtR/KCig4F5T2WP13HRsCc9wcFsb5GkDs+7aqLpVUYMM
	 pl+7iMwkocBptB81L5j7Ry/dRfrxqvWjbrce2Jjc=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Lorenzo Bianconi <lorenzo@kernel.org>,
	Johannes Berg <johannes.berg@intel.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 309/563] wifi: mac80211: Make CONNECTION_MONITOR optional for MLO sta
Date: Mon, 13 Oct 2025 16:42:50 +0200
Message-ID: <20251013144422.458561237@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.4 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.4 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: msgid.link]
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 4

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Lorenzo Bianconi <lorenzo@kernel.org>

[ Upstream commit ac36daa83650c26fd55dee1a6ee5144769239911 ]

Since commit '1bc892d76a6f ("wifi: mac80211: extend connection
monitoring for MLO")' mac80211 supports connection monitor for MLO
client interfaces. Remove the CONNECTION_MONITOR requirement in
ieee80211_register_hw routine.

Fixes: 1bc892d76a6f ("wifi: mac80211: extend connection monitoring for MLO")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20250826-remove-conn-mon-check-ieee80211_register_hw-v2-1-5a1e2f038245@kernel.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/mac80211/main.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index 3ae6104e5cb20..78f862f79aa82 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -1164,9 +1164,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
 		if (WARN_ON(!ieee80211_hw_check(hw, MFP_CAPABLE)))
 			return -EINVAL;
 
-		if (WARN_ON(!ieee80211_hw_check(hw, CONNECTION_MONITOR)))
-			return -EINVAL;
-
 		if (WARN_ON(ieee80211_hw_check(hw, NEED_DTIM_BEFORE_ASSOC)))
 			return -EINVAL;
 
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185202-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id EEXvARIg7Wjfgj4AYBR5ng
	(envelope-from <stable+bounces-185202-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:46 +0000
Return-path: <stable+bounces-185202-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:51:46 +0000
Received: from ams.mirrors.kernel.org ([213.196.21.55])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185202-hi=josie.lol@vger.kernel.org>)
	id 1v8Kpt-0000000HCkK-2fmr
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:51:46 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by ams.mirrors.kernel.org (Postfix) with ESMTPS id 6F39E34F7D2
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:44 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id D818630BBAE;
	Mon, 13 Oct 2025 15:33:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="crF7HBN7"
X-Original-To: stable@vger.kernel.org
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 B09BC30B515;
	Mon, 13 Oct 2025 15:33:42 +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=1760369622; cv=none; b=UN0oFrR46FsPLQkITbbmuX1sz/Ro/lv//yNAdxXxsz3IcQyymc/HdtxuQ+JnFUEd9lf322wYMYGUV5AJOouJsd0MEaG7sQ3WqhlMcbLadeSJ51y4JYKtbYXVr+I5savRclL5d7LM5+Hj7YfCTgDrgIfmgkpP9L/OHEXxu3bMQjA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369622; c=relaxed/simple;
	bh=weBb+JQxBODjhQHLKGRrEEx01X0YNqyovP4/6a9ILOk=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version:Content-Type; b=mX9e6FI19bmU9IANAtSaI5VmhbS7DwfdPQvFVtnQlfFaJID6tjzvfrwGwqYaSY2PPU5HMMrwANkamARTogHfwe42UGW/Rk+bimffm9+0nDjkmhFWzTefcNt8IOyfewMZOf8hN85UYG02Zo9952ns9I+ddBxKCiRubi6yd5Bvh0w=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=crF7HBN7; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3CC41C4CEE7;
	Mon, 13 Oct 2025 15:33:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369622;
	bh=weBb+JQxBODjhQHLKGRrEEx01X0YNqyovP4/6a9ILOk=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=crF7HBN7SFoaKr/kLGhkTMynzqHZOah/pi3ih7BT/JEjq3PaLvwfuLRpm6JHPyoJZ
	 9Lb5A845hsodluIVAz9vCda9ZrX5MSYNL414o7MHpmWiDwxmcVLX80qF5OdDHhSTrI
	 ia98abJ9v+tVVhpr0K/z1phalpR/p9bPGt3uglVY=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Alex Deucher <alexander.deucher@amd.com>,
	=?UTF-8?q?Timur=20Krist=C3=B3f?= <timur.kristof@gmail.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 304/563] drm/amd/pm: Fix si_upload_smc_data (v3)
Date: Mon, 13 Oct 2025 16:42:45 +0200
Message-ID: <20251013144422.279386648@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.4 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.4 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [213.196.21.55 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 4

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Timur Kristóf <timur.kristof@gmail.com>

[ Upstream commit a43b2cec04b02743338aa78f837ee0bdf066a6d5 ]

The si_upload_smc_data function uses si_write_smc_soft_register
to set some register values in the SMC, and expects the result
to be PPSMC_Result_OK which is 1.

The PPSMC_Result_OK / PPSMC_Result_Failed values are used for
checking the result of a command sent to the SMC.
However, the si_write_smc_soft_register actually doesn't send
any commands to the SMC and returns zero on success,
so this check was incorrect.

Fix that by not checking the return value, just like other
calls to si_write_smc_soft_register.

v3:
Additionally, when no display is plugged in, there is no need
to restrict MCLK switching, so program the registers to zero.

Fixes: 841686df9f7d ("drm/amdgpu: add SI DPM support (v4)")
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 43 ++++++++++++----------
 1 file changed, 24 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c b/drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c
index e71070a23b915..6736c592dfdc6 100644
--- a/drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c
+++ b/drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c
@@ -5813,9 +5813,9 @@ static int si_upload_smc_data(struct amdgpu_device *adev)
 {
 	struct amdgpu_crtc *amdgpu_crtc = NULL;
 	int i;
-
-	if (adev->pm.dpm.new_active_crtc_count == 0)
-		return 0;
+	u32 crtc_index = 0;
+	u32 mclk_change_block_cp_min = 0;
+	u32 mclk_change_block_cp_max = 0;
 
 	for (i = 0; i < adev->mode_info.num_crtc; i++) {
 		if (adev->pm.dpm.new_active_crtcs & (1 << i)) {
@@ -5824,26 +5824,31 @@ static int si_upload_smc_data(struct amdgpu_device *adev)
 		}
 	}
 
-	if (amdgpu_crtc == NULL)
-		return 0;
+	/* When a display is plugged in, program these so that the SMC
+	 * performs MCLK switching when it doesn't cause flickering.
+	 * When no display is plugged in, there is no need to restrict
+	 * MCLK switching, so program them to zero.
+	 */
+	if (adev->pm.dpm.new_active_crtc_count && amdgpu_crtc) {
+		crtc_index = amdgpu_crtc->crtc_id;
 
-	if (amdgpu_crtc->line_time <= 0)
-		return 0;
+		if (amdgpu_crtc->line_time) {
+			mclk_change_block_cp_min = amdgpu_crtc->wm_high / amdgpu_crtc->line_time;
+			mclk_change_block_cp_max = amdgpu_crtc->wm_low / amdgpu_crtc->line_time;
+		}
+	}
 
-	if (si_write_smc_soft_register(adev,
-				       SI_SMC_SOFT_REGISTER_crtc_index,
-				       amdgpu_crtc->crtc_id) != PPSMC_Result_OK)
-		return 0;
+	si_write_smc_soft_register(adev,
+		SI_SMC_SOFT_REGISTER_crtc_index,
+		crtc_index);
 
-	if (si_write_smc_soft_register(adev,
-				       SI_SMC_SOFT_REGISTER_mclk_change_block_cp_min,
-				       amdgpu_crtc->wm_high / amdgpu_crtc->line_time) != PPSMC_Result_OK)
-		return 0;
+	si_write_smc_soft_register(adev,
+		SI_SMC_SOFT_REGISTER_mclk_change_block_cp_min,
+		mclk_change_block_cp_min);
 
-	if (si_write_smc_soft_register(adev,
-				       SI_SMC_SOFT_REGISTER_mclk_change_block_cp_max,
-				       amdgpu_crtc->wm_low / amdgpu_crtc->line_time) != PPSMC_Result_OK)
-		return 0;
+	si_write_smc_soft_register(adev,
+		SI_SMC_SOFT_REGISTER_mclk_change_block_cp_max,
+		mclk_change_block_cp_max);
 
 	return 0;
 }
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185192-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id QDpbORAg7Wjfgj4AYBR5ng
	(envelope-from <stable+bounces-185192-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:44 +0000
Return-path: <stable+bounces-185192-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:51:44 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185192-hi=josie.lol@vger.kernel.org>)
	id 1v8Kps-0000000HCgE-2De2
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:51:44 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id C294B18A1198
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:55 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id C65A624A044;
	Mon, 13 Oct 2025 15:33:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="qyYgnslP"
X-Original-To: stable@vger.kernel.org
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 9DA6130BBB0;
	Mon, 13 Oct 2025 15:33:14 +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=1760369594; cv=none; b=X2BVUO1BJFecFg9/D+V0TAimIjs9v1E3a9xRBqLBKsPIzkPMLeuNvQIQ5y963ht99hqoY79c6RjGt36TWIRt4EFZf0E/U4bmgzyVdTagNKFpQnbQLBbazoFkzUMPN72MDFXlNo7k1GrkafMJfog0mC1TiYmUwW+Cgque3HowjuM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369594; c=relaxed/simple;
	bh=07+xVmOzu5QDDog69xuJ9tZwBAdJY5m0QZ1vBTzL3Uo=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=sH3FdVJ1L9K7aRkEZ0HBNm150HijkENfgGgaQe0x1Jp9cXVge20O9bgdHB6xXqyVkLhSt5Iox6/WaU2zdd3J7j4LnwjDOabKN4pkcmbf0WVQoW81KGs31MM8+xLbYpmHZYXBD8pqeoV/cpda5FR9TyA+125IpJ7nDU8I7PT/z4o=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=qyYgnslP; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A012C4CEE7;
	Mon, 13 Oct 2025 15:33:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369594;
	bh=07+xVmOzu5QDDog69xuJ9tZwBAdJY5m0QZ1vBTzL3Uo=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=qyYgnslPmkAhGk2tc6GyYpvQ1vpaONDWYMoX7Tv6aJ5szjdlVfPoSZXOwJB4cUu5G
	 0OXtRjTMLepm9uFccPZ13TOfpbSZFcHNeXh6Iqans0fqkEDQAV+bGgBfqFxhdQHspj
	 HtaqnyIRZlTUNwznzme+wY719hyairceRhyCj/dk=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Linux Kernel Functional Testing <lkft@linaro.org>,
	James Clark <james.clark@linaro.org>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 300/563] coresight: Fix missing include for FIELD_GET
Date: Mon, 13 Oct 2025 16:42:41 +0200
Message-ID: <20251013144422.136348609@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.1 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.1 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
                             medium trust
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
  2.0 SUSPICIOUS_REWARD      BODY: Contains suspicious reward/winning
                             language
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 1

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: James Clark <james.clark@linaro.org>

[ Upstream commit 08d24e076d0fb9f90522ef69bf6cdae06e0919de ]

Include the header for FIELD_GET which is only sometimes transitively
included on some configs and kernel releases.

Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
Closes: https://lists.linaro.org/archives/list/lkft-triage@lists.linaro.org/thread/6GKMK52PPRJVEYMEUHJP6BXF4CJAXOFL/
Fixes: a4e65842e114 ("coresight: Only check bottom two claim bits")
Signed-off-by: James Clark <james.clark@linaro.org>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20250707-james-coresight-bitfield-include-v1-1-aa0f4220ecfd@linaro.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hwtracing/coresight/coresight-core.c        | 1 +
 drivers/hwtracing/coresight/coresight-etm4x-core.c  | 1 +
 drivers/hwtracing/coresight/coresight-etm4x-sysfs.c | 1 +
 drivers/hwtracing/coresight/ultrasoc-smb.h          | 1 +
 4 files changed, 4 insertions(+)

diff --git a/drivers/hwtracing/coresight/coresight-core.c b/drivers/hwtracing/coresight/coresight-core.c
index fa758cc218275..c2db94f2ab237 100644
--- a/drivers/hwtracing/coresight/coresight-core.c
+++ b/drivers/hwtracing/coresight/coresight-core.c
@@ -3,6 +3,7 @@
  * Copyright (c) 2012, The Linux Foundation. All rights reserved.
  */
 
+#include <linux/bitfield.h>
 #include <linux/build_bug.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c
index 42e5d37403add..cbea200489c8f 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x-core.c
+++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c
@@ -4,6 +4,7 @@
  */
 
 #include <linux/acpi.h>
+#include <linux/bitfield.h>
 #include <linux/bitops.h>
 #include <linux/kernel.h>
 #include <linux/kvm_host.h>
diff --git a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c
index ab251865b893d..e9eeea6240d55 100644
--- a/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c
+++ b/drivers/hwtracing/coresight/coresight-etm4x-sysfs.c
@@ -4,6 +4,7 @@
  * Author: Mathieu Poirier <mathieu.poirier@linaro.org>
  */
 
+#include <linux/bitfield.h>
 #include <linux/coresight.h>
 #include <linux/pid_namespace.h>
 #include <linux/pm_runtime.h>
diff --git a/drivers/hwtracing/coresight/ultrasoc-smb.h b/drivers/hwtracing/coresight/ultrasoc-smb.h
index c4c111275627b..323f0ccb6878c 100644
--- a/drivers/hwtracing/coresight/ultrasoc-smb.h
+++ b/drivers/hwtracing/coresight/ultrasoc-smb.h
@@ -7,6 +7,7 @@
 #ifndef _ULTRASOC_SMB_H
 #define _ULTRASOC_SMB_H
 
+#include <linux/bitfield.h>
 #include <linux/miscdevice.h>
 #include <linux/spinlock.h>
 
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185184-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id 4JPYMAkg7WhxQT4AYBR5ng
	(envelope-from <stable+bounces-185184-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:37 +0000
Return-path: <stable+bounces-185184-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:51:37 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185184-hi=josie.lol@vger.kernel.org>)
	id 1v8Kpl-0000000HCQx-1OUC
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:51:37 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id D49CE1889FF9
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 22D492FE564;
	Mon, 13 Oct 2025 15:32:52 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="Zkk9seUb"
X-Original-To: stable@vger.kernel.org
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 EE4952A1BA;
	Mon, 13 Oct 2025 15:32:51 +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=1760369572; cv=none; b=gbjC8+0PX8xOz3UuJVED0oV03+pNag9W9r7rKZKBNO4S9NOZLZV8v6KXY2BzKlpghgPzIi43H13JwhiAuT6QUY8AnIGHdx/tTFiU84IbEpwQGmfHpK4GmJjlHAqyqbr/8QGB510rC1konRTm/zpTkfiNsT7Og4m5eX0XR7YoCL8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369572; c=relaxed/simple;
	bh=fBw+EZT5H1/CD54+IGk5CP53G/JmX1E71zDMYdm8H2g=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=hen/0r65dpnnScad1SG9tza4QZjx90Ca/aaDwGSoEoULccTfPc8XvsFigVdq0AbZzwmLPWq7IGCS0Oz0bvKrhwaU9U+C2OdjmC1UrH7INWQUqXQXMKUlKz4ylsjFloOSsAUVHO9CFYHc6zFMnFWX0r79Ya58joPvWrDsRfrH6GQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=Zkk9seUb; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 767B7C4CEE7;
	Mon, 13 Oct 2025 15:32:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369571;
	bh=fBw+EZT5H1/CD54+IGk5CP53G/JmX1E71zDMYdm8H2g=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=Zkk9seUbmMhj5C8FjStnn1rHo37rdEY9SBbcxQDT4Lgc40+oGuHJaURS1qQRioAP9
	 zVldvw5+B7L1u3esZgX0Mwwj6MLjyIXw2pRBqi6qrJxCfCJu+spikKqqdlt7hlU4UG
	 n23FDwRUrUMyFi9Nlo1tfVrdQrbsmzxUdtcGQEN4=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Chenghai Huang <huangchenghai2@huawei.com>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 293/563] crypto: hisilicon - re-enable address prefetch after device resuming
Date: Mon, 13 Oct 2025 16:42:34 +0200
Message-ID: <20251013144421.883900496@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.4 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.4 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [147.75.80.249 listed in list.dnswl.org]
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 4

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Chenghai Huang <huangchenghai2@huawei.com>

[ Upstream commit 0dcd21443d9308ed88909d35aa0490c3fc680a47 ]

When the device resumes from a suspended state, it will revert to its
initial state and requires re-enabling. Currently, the address prefetch
function is not re-enabled after device resuming. Move the address prefetch
enable to the initialization process. In this way, the address prefetch
can be enabled when the device resumes by calling the initialization
process.

Fixes: 607c191b371d ("crypto: hisilicon - support runtime PM for accelerator device")
Signed-off-by: Chenghai Huang <huangchenghai2@huawei.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/crypto/hisilicon/hpre/hpre_main.c |  3 +-
 drivers/crypto/hisilicon/qm.c             |  3 -
 drivers/crypto/hisilicon/sec2/sec_main.c  | 80 +++++++++++------------
 drivers/crypto/hisilicon/zip/zip_main.c   |  5 +-
 4 files changed, 43 insertions(+), 48 deletions(-)

diff --git a/drivers/crypto/hisilicon/hpre/hpre_main.c b/drivers/crypto/hisilicon/hpre/hpre_main.c
index f5b47e5ff48a4..34f84978180f0 100644
--- a/drivers/crypto/hisilicon/hpre/hpre_main.c
+++ b/drivers/crypto/hisilicon/hpre/hpre_main.c
@@ -721,6 +721,7 @@ static int hpre_set_user_domain_and_cache(struct hisi_qm *qm)
 
 	/* Config data buffer pasid needed by Kunpeng 920 */
 	hpre_config_pasid(qm);
+	hpre_open_sva_prefetch(qm);
 
 	hpre_enable_clock_gate(qm);
 
@@ -1450,8 +1451,6 @@ static int hpre_pf_probe_init(struct hpre *hpre)
 	if (ret)
 		return ret;
 
-	hpre_open_sva_prefetch(qm);
-
 	hisi_qm_dev_err_init(qm);
 	ret = hpre_show_last_regs_init(qm);
 	if (ret)
diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c
index 2e4ee7ecfdfbb..a5cc0ccd94f1f 100644
--- a/drivers/crypto/hisilicon/qm.c
+++ b/drivers/crypto/hisilicon/qm.c
@@ -4447,9 +4447,6 @@ static void qm_restart_prepare(struct hisi_qm *qm)
 {
 	u32 value;
 
-	if (qm->err_ini->open_sva_prefetch)
-		qm->err_ini->open_sva_prefetch(qm);
-
 	if (qm->ver >= QM_HW_V3)
 		return;
 
diff --git a/drivers/crypto/hisilicon/sec2/sec_main.c b/drivers/crypto/hisilicon/sec2/sec_main.c
index 72cf48d1f3ab8..ddb20f380b546 100644
--- a/drivers/crypto/hisilicon/sec2/sec_main.c
+++ b/drivers/crypto/hisilicon/sec2/sec_main.c
@@ -464,6 +464,45 @@ static void sec_set_endian(struct hisi_qm *qm)
 	writel_relaxed(reg, qm->io_base + SEC_CONTROL_REG);
 }
 
+static void sec_close_sva_prefetch(struct hisi_qm *qm)
+{
+	u32 val;
+	int ret;
+
+	if (!test_bit(QM_SUPPORT_SVA_PREFETCH, &qm->caps))
+		return;
+
+	val = readl_relaxed(qm->io_base + SEC_PREFETCH_CFG);
+	val |= SEC_PREFETCH_DISABLE;
+	writel(val, qm->io_base + SEC_PREFETCH_CFG);
+
+	ret = readl_relaxed_poll_timeout(qm->io_base + SEC_SVA_TRANS,
+					 val, !(val & SEC_SVA_DISABLE_READY),
+					 SEC_DELAY_10_US, SEC_POLL_TIMEOUT_US);
+	if (ret)
+		pci_err(qm->pdev, "failed to close sva prefetch\n");
+}
+
+static void sec_open_sva_prefetch(struct hisi_qm *qm)
+{
+	u32 val;
+	int ret;
+
+	if (!test_bit(QM_SUPPORT_SVA_PREFETCH, &qm->caps))
+		return;
+
+	/* Enable prefetch */
+	val = readl_relaxed(qm->io_base + SEC_PREFETCH_CFG);
+	val &= SEC_PREFETCH_ENABLE;
+	writel(val, qm->io_base + SEC_PREFETCH_CFG);
+
+	ret = readl_relaxed_poll_timeout(qm->io_base + SEC_PREFETCH_CFG,
+					 val, !(val & SEC_PREFETCH_DISABLE),
+					 SEC_DELAY_10_US, SEC_POLL_TIMEOUT_US);
+	if (ret)
+		pci_err(qm->pdev, "failed to open sva prefetch\n");
+}
+
 static void sec_engine_sva_config(struct hisi_qm *qm)
 {
 	u32 reg;
@@ -497,45 +536,7 @@ static void sec_engine_sva_config(struct hisi_qm *qm)
 		writel_relaxed(reg, qm->io_base +
 				SEC_INTERFACE_USER_CTRL1_REG);
 	}
-}
-
-static void sec_open_sva_prefetch(struct hisi_qm *qm)
-{
-	u32 val;
-	int ret;
-
-	if (!test_bit(QM_SUPPORT_SVA_PREFETCH, &qm->caps))
-		return;
-
-	/* Enable prefetch */
-	val = readl_relaxed(qm->io_base + SEC_PREFETCH_CFG);
-	val &= SEC_PREFETCH_ENABLE;
-	writel(val, qm->io_base + SEC_PREFETCH_CFG);
-
-	ret = readl_relaxed_poll_timeout(qm->io_base + SEC_PREFETCH_CFG,
-					 val, !(val & SEC_PREFETCH_DISABLE),
-					 SEC_DELAY_10_US, SEC_POLL_TIMEOUT_US);
-	if (ret)
-		pci_err(qm->pdev, "failed to open sva prefetch\n");
-}
-
-static void sec_close_sva_prefetch(struct hisi_qm *qm)
-{
-	u32 val;
-	int ret;
-
-	if (!test_bit(QM_SUPPORT_SVA_PREFETCH, &qm->caps))
-		return;
-
-	val = readl_relaxed(qm->io_base + SEC_PREFETCH_CFG);
-	val |= SEC_PREFETCH_DISABLE;
-	writel(val, qm->io_base + SEC_PREFETCH_CFG);
-
-	ret = readl_relaxed_poll_timeout(qm->io_base + SEC_SVA_TRANS,
-					 val, !(val & SEC_SVA_DISABLE_READY),
-					 SEC_DELAY_10_US, SEC_POLL_TIMEOUT_US);
-	if (ret)
-		pci_err(qm->pdev, "failed to close sva prefetch\n");
+	sec_open_sva_prefetch(qm);
 }
 
 static void sec_enable_clock_gate(struct hisi_qm *qm)
@@ -1152,7 +1153,6 @@ static int sec_pf_probe_init(struct sec_dev *sec)
 	if (ret)
 		return ret;
 
-	sec_open_sva_prefetch(qm);
 	hisi_qm_dev_err_init(qm);
 	sec_debug_regs_clear(qm);
 	ret = sec_show_last_regs_init(qm);
diff --git a/drivers/crypto/hisilicon/zip/zip_main.c b/drivers/crypto/hisilicon/zip/zip_main.c
index fb7b19927dd32..480fa590664a8 100644
--- a/drivers/crypto/hisilicon/zip/zip_main.c
+++ b/drivers/crypto/hisilicon/zip/zip_main.c
@@ -557,6 +557,7 @@ static int hisi_zip_set_user_domain_and_cache(struct hisi_qm *qm)
 		writel(AXUSER_BASE, base + HZIP_DATA_WUSER_32_63);
 		writel(AXUSER_BASE, base + HZIP_SGL_RUSER_32_63);
 	}
+	hisi_zip_open_sva_prefetch(qm);
 
 	/* let's open all compression/decompression cores */
 
@@ -572,6 +573,7 @@ static int hisi_zip_set_user_domain_and_cache(struct hisi_qm *qm)
 	       CQC_CACHE_WB_ENABLE | FIELD_PREP(SQC_CACHE_WB_THRD, 1) |
 	       FIELD_PREP(CQC_CACHE_WB_THRD, 1), base + QM_CACHE_CTL);
 
+	hisi_zip_set_high_perf(qm);
 	hisi_zip_enable_clock_gate(qm);
 
 	return hisi_dae_set_user_domain(qm);
@@ -1243,9 +1245,6 @@ static int hisi_zip_pf_probe_init(struct hisi_zip *hisi_zip)
 	if (ret)
 		return ret;
 
-	hisi_zip_set_high_perf(qm);
-
-	hisi_zip_open_sva_prefetch(qm);
 	hisi_qm_dev_err_init(qm);
 	hisi_zip_debug_regs_clear(qm);
 
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185173-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id SDBPBuIf7WhVojMAYBR5ng
	(envelope-from <stable+bounces-185173-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:50:58 +0000
Return-path: <stable+bounces-185173-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:50:58 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185173-hi=josie.lol@vger.kernel.org>)
	id 1v8Kp7-0000000HB86-379n
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:50:58 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id 632BB18A0B40
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id E64B530B500;
	Mon, 13 Oct 2025 15:32:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="pYvqrrla"
X-Original-To: stable@vger.kernel.org
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 C00E526F2B6;
	Mon, 13 Oct 2025 15:32:20 +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=1760369541; cv=none; b=uSNZ8SCuklQKqES7/VTrIQDmU88yaC4GD6QxcdovWU2FiAVsY70KOHBxqbc5gN/SmFxQwOXUJi3LKx/56hwLCmhRNal+wYR9CYQQlf1mU2bawoBzVAAUNkG93j6XUreH6McKtoWNm1WWV06FE3NUmghB+2GfGOYeDPPkkxBj4QY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369541; c=relaxed/simple;
	bh=jzXuiocfFCcgtsKrddEckm6DYEqPHlmi15s7gwLQDiA=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=XBzqVtCEqHQBQUfpnzeJlatBR0xfSx1LLhxn4mi5v6tSKR1AScSpgKoJoM6x9o0NmXhfbMa8pWpwDrVzzJa9YRyZ4udPZSeSyy8uplLLP5RdpPMbHrvpVYCMpgCe1uftMePmS16clp+WTVzMthaWqGDPsAFyxEJ158nrZwHR0sU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=pYvqrrla; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 469B9C4CEE7;
	Mon, 13 Oct 2025 15:32:20 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369540;
	bh=jzXuiocfFCcgtsKrddEckm6DYEqPHlmi15s7gwLQDiA=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=pYvqrrlacdFlNCxUBL1ZHkfpbtZHEOu8VLbty7Vg5d6zuf9ySCh463nDt98o9rsw0
	 jqMZBKBS+Qwf0EjVfuHUm6dgB76FvmhvczMlHEOWgAOy537HNmbBRChk3/Qo7+z42n
	 4IP0oJwQpMF+YsXU4MTOdRsG0wSvwtY5Cbmiky7w=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Richard Lyu <richard.lyu@suse.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 283/563] efi: Explain OVMF acronym in OVMF_DEBUG_LOG help text
Date: Mon, 13 Oct 2025 16:42:24 +0200
Message-ID: <20251013144421.523205724@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -1.9 (-)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-1.9 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
                             medium trust
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -18

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Geert Uytterhoeven <geert+renesas@glider.be>

[ Upstream commit 05e75ac35ee9e38f96bbfebf1830ec2cace2e7f8 ]

People not very intimate with EFI may not know the meaning of the OVMF
acronym.  Write it in full, to help users with making good decisions
when configuring their kernels.

Fixes: f393a761763c5427 ("efi: add ovmf debug log driver")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Richard Lyu <richard.lyu@suse.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/firmware/efi/Kconfig | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/firmware/efi/Kconfig b/drivers/firmware/efi/Kconfig
index d528c94c5859b..29e0729299f5b 100644
--- a/drivers/firmware/efi/Kconfig
+++ b/drivers/firmware/efi/Kconfig
@@ -267,9 +267,10 @@ config OVMF_DEBUG_LOG
 	bool "Expose OVMF firmware debug log via sysfs"
 	depends on EFI
 	help
-	  Recent OVMF versions (edk2-stable202508 + newer) can write
-	  their debug log to a memory buffer.  This driver exposes the
-	  log content via sysfs (/sys/firmware/efi/ovmf_debug_log).
+	  Recent versions of the Open Virtual Machine Firmware
+	  (edk2-stable202508 + newer) can write their debug log to a memory
+	  buffer.  This driver exposes the log content via sysfs
+	  (/sys/firmware/efi/ovmf_debug_log).
 
 config UNACCEPTED_MEMORY
 	bool
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185172-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id 0BfvMuAf7WiEQT4AYBR5ng
	(envelope-from <stable+bounces-185172-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:50:56 +0000
Return-path: <stable+bounces-185172-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:50:56 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185172-hi=josie.lol@vger.kernel.org>)
	id 1v8Kp6-0000000HB6A-21w2
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:50:56 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id 2200E189F9E7
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:19 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 107D230B50B;
	Mon, 13 Oct 2025 15:32:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="NUeC5ZYW"
X-Original-To: stable@vger.kernel.org
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 DC6EA30B505;
	Mon, 13 Oct 2025 15:32:17 +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=1760369538; cv=none; b=ua93/9pflTGdt2YaC+yeyj03y6ME/mk7vvIZ7nIgCkctIXCOhi12kk4QbeER9MsEDyqtFyMNuwbYqK2ZSSHQB+9hTvIMjUU8ydTtHandwO79tgXeFQI5T+NXR8ZBB5CTPa9TO7mzz9xXrDEhZyDPiQ3KOZ90uAcJ0W0vx4S5Gdo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369538; c=relaxed/simple;
	bh=Q9r0+TZHDDO+8A8uPBZTmXQaZ8vckD2qRxJH2FzCpHo=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=ntvTC5vtpRRCYL7t6OqWh0QAOIFd2Y7TNEKqcH2RzdLAsFY9IhFSlCUMlDNYLWIzlMILuN1EY9brTgGEAjUILnbAKc5jgvvp3j2QZem5wRVS8/ccXHGjCoi1kKk5KYvXNYu0HewU8bInBAGdRpv97saj5BK3gx44L4KmfuZ/alM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=NUeC5ZYW; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5FF20C4CEE7;
	Mon, 13 Oct 2025 15:32:17 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369537;
	bh=Q9r0+TZHDDO+8A8uPBZTmXQaZ8vckD2qRxJH2FzCpHo=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=NUeC5ZYW7F6lKp3Gqc4i1HZXI0gOB+x8vH92OBY0oo/wWJ5kAuLP9EhZR0JN6cZIE
	 MbpkmWq0xyTIO1h/6EzTHGioQDvCVV2sPZiqO++zE6sHtZbkyC9z0HiQsmA2ma+hqy
	 5wGLHkFAi62CKpHdvOIEQ281LC7DMIIHVR7os9Tw=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Qianfeng Rong <rongqianfeng@vivo.com>,
	Lizhi Hou <lizhi.hou@amd.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 282/563] accel/amdxdna: Use int instead of u32 to store error codes
Date: Mon, 13 Oct 2025 16:42:23 +0200
Message-ID: <20251013144421.487305982@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -1.9 (-)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-1.9 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
                             medium trust
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -18

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Qianfeng Rong <rongqianfeng@vivo.com>

[ Upstream commit 24de3daf6179bce3710527b8292d7ee6f1b56393 ]

Change the 'ret' variable from u32 to int to store -EINVAL.  Storing the
negative error codes in unsigned type, doesn't cause an issue at runtime
but it's ugly as pants.

Additionally, assigning -EINVAL to u32 ret (i.e., u32 ret = -EINVAL) may
trigger a GCC warning when the -Wsign-conversion flag is enabled.

Fixes: aac243092b70 ("accel/amdxdna: Add command execution")
Signed-off-by: Qianfeng Rong <rongqianfeng@vivo.com>
Reviewed-by: Lizhi Hou <lizhi.hou@amd.com>
Signed-off-by: Lizhi Hou <lizhi.hou@amd.com>
Link: https://lore.kernel.org/r/20250828033917.113364-1-rongqianfeng@vivo.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/accel/amdxdna/aie2_ctx.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/accel/amdxdna/aie2_ctx.c b/drivers/accel/amdxdna/aie2_ctx.c
index 2cff5419bd2fa..cda964ba33cd7 100644
--- a/drivers/accel/amdxdna/aie2_ctx.c
+++ b/drivers/accel/amdxdna/aie2_ctx.c
@@ -192,7 +192,7 @@ aie2_sched_resp_handler(void *handle, void __iomem *data, size_t size)
 {
 	struct amdxdna_sched_job *job = handle;
 	struct amdxdna_gem_obj *cmd_abo;
-	u32 ret = 0;
+	int ret = 0;
 	u32 status;
 
 	cmd_abo = job->cmd_bo;
@@ -222,7 +222,7 @@ static int
 aie2_sched_nocmd_resp_handler(void *handle, void __iomem *data, size_t size)
 {
 	struct amdxdna_sched_job *job = handle;
-	u32 ret = 0;
+	int ret = 0;
 	u32 status;
 
 	if (unlikely(!data))
@@ -250,7 +250,7 @@ aie2_sched_cmdlist_resp_handler(void *handle, void __iomem *data, size_t size)
 	u32 fail_cmd_status;
 	u32 fail_cmd_idx;
 	u32 cmd_status;
-	u32 ret = 0;
+	int ret = 0;
 
 	cmd_abo = job->cmd_bo;
 	if (unlikely(!data) || unlikely(size != sizeof(u32) * 3)) {
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185168-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id WCxeHdsf7WiEQT4AYBR5ng
	(envelope-from <stable+bounces-185168-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:50:51 +0000
Return-path: <stable+bounces-185168-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:50:51 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185168-hi=josie.lol@vger.kernel.org>)
	id 1v8Kp1-0000000HAti-0R88
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:50:51 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id A3948189FF6D
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:13 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id CCA5F30AD16;
	Mon, 13 Oct 2025 15:32:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="qDJc0Ezo"
X-Original-To: stable@vger.kernel.org
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 A626530AD0A;
	Mon, 13 Oct 2025 15:32:06 +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=1760369526; cv=none; b=bhE3BUcFQwdfrFUL+S8Q65MyZRXmid/OFUjlmvqvgO0WGaiccTdoWfr6bsV+u+JnAoD+aaYxe69TD54ZBufgAlqtxNVCeMGgKi7v3ehgx2+e/KRBvzb7Bmyx1kYc9cg0wd49FlzZbWTPK1r1Qy83OdT1rOB39ozYrHHf8rH2TNY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369526; c=relaxed/simple;
	bh=H+jHcfjguSScUxMImuQcwgth0HfB5HRgR3Oe/pVJJm0=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=M/un3T3Tjwnjdna7ovN4CUOZRhV5S+07mlDxHQBy16unR5IBDZ00yPEIenQded+PCUbbgaz5lWtK7PmUvhM1u3XKOdmAMPkk3+UNkQZzelhZYXKzOToKAxvK/mw6tC4QamE5Uv7akUjJY+KShUmT5FNJoQLO8eWSh1/WAvhN1Aw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=qDJc0Ezo; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 30DC2C4CEE7;
	Mon, 13 Oct 2025 15:32:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369526;
	bh=H+jHcfjguSScUxMImuQcwgth0HfB5HRgR3Oe/pVJJm0=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=qDJc0EzoSniCPwIOCfkH3fONH3MSit0QQiUY3ZfCD9YZlRnpp/RfCJKMjTXvHi1og
	 Buj60AN2PYKE/jXubuqEjF7fmsJZEQ7Ve7q7nW4L0fRM9W09wYt6tXEg7R7fcQD9mI
	 vRs6KKA9bhsx16EmFHyn2scPSFHbOPPMUf7ao2Ps=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Arnd Bergmann <arnd@arndb.de>,
	Hans Verkuil <hverkuil+cisco@kernel.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 278/563] media: st-delta: avoid excessive stack usage
Date: Mon, 13 Oct 2025 16:42:19 +0200
Message-ID: <20251013144421.343069931@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -1.9 (-)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-1.9 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
                             medium trust
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -18

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Arnd Bergmann <arnd@arndb.de>

[ Upstream commit 5954ad7d1af92cb6244c5f31216e43af55febbb7 ]

Building with a reduced stack warning limit shows that delta_mjpeg_decode()
copies a giant structure to the stack each time but only uses three of
its members:

drivers/media/platform/st/sti/delta/delta-mjpeg-dec.c: In function 'delta_mjpeg_decode':
drivers/media/platform/st/sti/delta/delta-mjpeg-dec.c:427:1: error: the frame size of 1296 bytes is larger than 1280 bytes [-Werror=frame-larger-than=]

Open-code the passing of the structure members that are actually used here.

Fixes: 433ff5b4a29b ("[media] st-delta: add mjpeg support")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../platform/st/sti/delta/delta-mjpeg-dec.c   | 20 ++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/media/platform/st/sti/delta/delta-mjpeg-dec.c b/drivers/media/platform/st/sti/delta/delta-mjpeg-dec.c
index 0533d4a083d24..a078f1107300e 100644
--- a/drivers/media/platform/st/sti/delta/delta-mjpeg-dec.c
+++ b/drivers/media/platform/st/sti/delta/delta-mjpeg-dec.c
@@ -239,7 +239,7 @@ static int delta_mjpeg_ipc_open(struct delta_ctx *pctx)
 	return 0;
 }
 
-static int delta_mjpeg_ipc_decode(struct delta_ctx *pctx, struct delta_au *au)
+static int delta_mjpeg_ipc_decode(struct delta_ctx *pctx, dma_addr_t pstart, dma_addr_t pend)
 {
 	struct delta_dev *delta = pctx->dev;
 	struct delta_mjpeg_ctx *ctx = to_ctx(pctx);
@@ -256,8 +256,8 @@ static int delta_mjpeg_ipc_decode(struct delta_ctx *pctx, struct delta_au *au)
 
 	memset(params, 0, sizeof(*params));
 
-	params->picture_start_addr_p = (u32)(au->paddr);
-	params->picture_end_addr_p = (u32)(au->paddr + au->size - 1);
+	params->picture_start_addr_p = pstart;
+	params->picture_end_addr_p = pend;
 
 	/*
 	 * !WARNING!
@@ -374,12 +374,14 @@ static int delta_mjpeg_decode(struct delta_ctx *pctx, struct delta_au *pau)
 	struct delta_dev *delta = pctx->dev;
 	struct delta_mjpeg_ctx *ctx = to_ctx(pctx);
 	int ret;
-	struct delta_au au = *pau;
+	void *au_vaddr = pau->vaddr;
+	dma_addr_t au_dma = pau->paddr;
+	size_t au_size = pau->size;
 	unsigned int data_offset = 0;
 	struct mjpeg_header *header = &ctx->header_struct;
 
 	if (!ctx->header) {
-		ret = delta_mjpeg_read_header(pctx, au.vaddr, au.size,
+		ret = delta_mjpeg_read_header(pctx, au_vaddr, au_size,
 					      header, &data_offset);
 		if (ret) {
 			pctx->stream_errors++;
@@ -405,17 +407,17 @@ static int delta_mjpeg_decode(struct delta_ctx *pctx, struct delta_au *pau)
 			goto err;
 	}
 
-	ret = delta_mjpeg_read_header(pctx, au.vaddr, au.size,
+	ret = delta_mjpeg_read_header(pctx, au_vaddr, au_size,
 				      ctx->header, &data_offset);
 	if (ret) {
 		pctx->stream_errors++;
 		goto err;
 	}
 
-	au.paddr += data_offset;
-	au.vaddr += data_offset;
+	au_dma += data_offset;
+	au_vaddr += data_offset;
 
-	ret = delta_mjpeg_ipc_decode(pctx, &au);
+	ret = delta_mjpeg_ipc_decode(pctx, au_dma, au_dma + au_size - 1);
 	if (ret)
 		goto err;
 
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185200-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id IAjhFBgg7WhxQT4AYBR5ng
	(envelope-from <stable+bounces-185200-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:52 +0000
Return-path: <stable+bounces-185200-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:51:52 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185200-hi=josie.lol@vger.kernel.org>)
	id 1v8Kq0-0000000HCya-03Ge
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:51:52 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id A2BF61890AF5
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:52:05 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 9C0F630BF6C;
	Mon, 13 Oct 2025 15:33:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="CjTbQLWG"
X-Original-To: stable@vger.kernel.org
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 765DF30BF63;
	Mon, 13 Oct 2025 15:33:37 +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=1760369617; cv=none; b=GS6FVJn/O/ntxSWpFVHlKWJu1Ojf+fCd+neA2MbxsT7CSULuNzGrSso+7eWN9DxQPCgTot6z0Puc31D/p/XITytsYx7ZChLLj90GEvcu+2tTZHXOnkSAqfexP1x+ea/ADGZUwMDCYTl3/AUpfWWJE+QTDiYQ6DeFzS+BCX+62kU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369617; c=relaxed/simple;
	bh=3CpiIlcG9po4F9c2NGdSatt8mUUZsnrgsLtns01K948=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=H/RLGT2/yfFSzaTQf+t636i33hfVEfnwpmfT6FngzZPzE+jKBfe46okPAWXb1vAhquaOlObfW31kDf8PjqZ/0pvrQPTzADs+sdiO4FKb65xEx+BEctLuk9VpcVacKYhmltdW92THFDT0dq+9l1kL2UyR2Nh8/B7KPtNb2QyyjKk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=CjTbQLWG; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id AC19FC4CEE7;
	Mon, 13 Oct 2025 15:33:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369617;
	bh=3CpiIlcG9po4F9c2NGdSatt8mUUZsnrgsLtns01K948=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=CjTbQLWGBBrZFhJnHqwWjeN4FeidLyTtnKDqcC4PTNxbOBhURGcXhVkbZXfQpv7FX
	 bh0fObCNoQdBVeKsrg9GfxIzFPQjdT5l0CduEgEK7jFgDvWE9pG6dTd3JwRk/E99YQ
	 0hRuDkZJbZGUnpvbcqU0zSFkZVMfbTCKmVEMYd3I=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Dan Carpenter <dan.carpenter@linaro.org>,
	Douglas Anderson <dianders@chromium.org>,
	Pin-yen Lin <treapking@chromium.org>,
	Jiri Kosina <jkosina@suse.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 276/563] HID: i2c-hid: Fix test in i2c_hid_core_register_panel_follower()
Date: Mon, 13 Oct 2025 16:42:17 +0200
Message-ID: <20251013144421.271701885@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.4 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.4 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
  0.0 RCVD_IN_DNSWL_BLOCKED  RBL: ADMINISTRATOR NOTICE: The query to
                             DNSWL was blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#DnsBlocklists-dnsbl-block
                              for more information.
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 4

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Dan Carpenter <dan.carpenter@linaro.org>

[ Upstream commit 5c76c794bf29399394ebacaa5af8436b8bed0d46 ]

Bitwise AND was intended instead of OR.  With the current code the
condition is always true.

Fixes: cbdd16b818ee ("HID: i2c-hid: Make elan touch controllers power on after panel is enabled")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Pin-yen Lin <treapking@chromium.org>
Acked-by: Jiri Kosina <jkosina@suse.com>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://lore.kernel.org/r/aK8Au3CgZSTvfEJ6@stanley.mountain
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/hid/i2c-hid/i2c-hid-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c
index 99ce6386176c6..30ebde1273be3 100644
--- a/drivers/hid/i2c-hid/i2c-hid-core.c
+++ b/drivers/hid/i2c-hid/i2c-hid-core.c
@@ -1189,7 +1189,7 @@ static int i2c_hid_core_register_panel_follower(struct i2c_hid *ihid)
 	struct device *dev = &ihid->client->dev;
 	int ret;
 
-	if (ihid->hid->initial_quirks | HID_QUIRK_POWER_ON_AFTER_BACKLIGHT)
+	if (ihid->hid->initial_quirks & HID_QUIRK_POWER_ON_AFTER_BACKLIGHT)
 		ihid->panel_follower.funcs = &i2c_hid_core_panel_follower_enable_funcs;
 	else
 		ihid->panel_follower.funcs = &i2c_hid_core_panel_follower_prepare_funcs;
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185177-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id IMeJDOcf7WhIQjwAYBR5ng
	(envelope-from <stable+bounces-185177-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:03 +0000
Return-path: <stable+bounces-185177-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:51:03 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185177-hi=josie.lol@vger.kernel.org>)
	id 1v8KpC-0000000HBOR-3NRT
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:51:03 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id 75FA1189FF75
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:51:25 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 8B9BE30B510;
	Mon, 13 Oct 2025 15:32:32 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="s0+3Cs3W"
X-Original-To: stable@vger.kernel.org
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 6458B2FE564;
	Mon, 13 Oct 2025 15:32:32 +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=1760369552; cv=none; b=FaMa4l1faAc2aN6P+NROg6buhC1c3AzznH0AYl7lAB8i0WLWiRKPWZDKjdvtPnZEtU1OMaqIMxgzbfO+1SypN/0G2JbBD858oaW7G0Uec9bs6LU+mYKRs4zS1IhlHUXxIf2/vWHtlqx7vfIyKpzX4z9Xd+HJf1JExdA7ZhRpw2o=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369552; c=relaxed/simple;
	bh=5UVdqTPr+TNpu++CYmLE8vu320R1qoTuzw349w/mj1U=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=me1hbIH61X9StPk6AqgGLVgt2oLtE4BoPdEC0jo+9T9eMbhDJaBEIgjri3CskPJcSjC+nKulQmu0aB6KRqnWRbGavjQGC60IAwtPNRsVehJe7DlQjZ7skq5CqcxCp8QXkeyory12tPhJ224NceOy8RN5KZid0uzElu2Ahlyvus0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=s0+3Cs3W; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 86110C4CEFE;
	Mon, 13 Oct 2025 15:32:31 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369551;
	bh=5UVdqTPr+TNpu++CYmLE8vu320R1qoTuzw349w/mj1U=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=s0+3Cs3WvRRY8gc2mCX3g6fMFEAHF1sXSS6mnKecgi1FbsAH2mjlQyt4j8hBOikuv
	 8VyQEcuxKg5QvCgaix7tKlaKXatl87+kPeScZN+ZRGKtAQ2RtlWfptKfSctAgVHIkG
	 JCHspAGTRy/zTsUqJK14/klJX5zjBnwCDe+YeDfU=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Christian Marangi <ansuelsmth@gmail.com>,
	Andrew Lunn <andrew@lunn.ch>,
	Jakub Kicinski <kuba@kernel.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 269/563] net: phy: introduce phy_id_compare_vendor() PHY ID helper
Date: Mon, 13 Oct 2025 16:42:10 +0200
Message-ID: <20251013144421.020763433@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -1.9 (-)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-1.9 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: msgid.link]
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
                             medium trust
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -18

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Christian Marangi <ansuelsmth@gmail.com>

[ Upstream commit 1abe21ef1adf0c5b6dbb5878c2fa4573df8d29fc ]

Introduce phy_id_compare_vendor() PHY ID helper to compare a PHY ID with
the PHY ID Vendor using the generic PHY ID Vendor mask.

While at it also rework the PHY_ID_MATCH macro and move the mask to
dedicated define so that PHY driver can make use of the mask if needed.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20250823134431.4854-1-ansuelsmth@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Stable-dep-of: b4d5cd20507b ("net: phy: as21xxx: better handle PHY HW reset on soft-reboot")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/linux/phy.h | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/include/linux/phy.h b/include/linux/phy.h
index bb45787d86848..04553419adc3f 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -1273,9 +1273,13 @@ struct phy_driver {
 #define to_phy_driver(d) container_of_const(to_mdio_common_driver(d),		\
 				      struct phy_driver, mdiodrv)
 
-#define PHY_ID_MATCH_EXACT(id) .phy_id = (id), .phy_id_mask = GENMASK(31, 0)
-#define PHY_ID_MATCH_MODEL(id) .phy_id = (id), .phy_id_mask = GENMASK(31, 4)
-#define PHY_ID_MATCH_VENDOR(id) .phy_id = (id), .phy_id_mask = GENMASK(31, 10)
+#define PHY_ID_MATCH_EXTACT_MASK GENMASK(31, 0)
+#define PHY_ID_MATCH_MODEL_MASK GENMASK(31, 4)
+#define PHY_ID_MATCH_VENDOR_MASK GENMASK(31, 10)
+
+#define PHY_ID_MATCH_EXACT(id) .phy_id = (id), .phy_id_mask = PHY_ID_MATCH_EXTACT_MASK
+#define PHY_ID_MATCH_MODEL(id) .phy_id = (id), .phy_id_mask = PHY_ID_MATCH_MODEL_MASK
+#define PHY_ID_MATCH_VENDOR(id) .phy_id = (id), .phy_id_mask = PHY_ID_MATCH_VENDOR_MASK
 
 /**
  * phy_id_compare - compare @id1 with @id2 taking account of @mask
@@ -1291,6 +1295,19 @@ static inline bool phy_id_compare(u32 id1, u32 id2, u32 mask)
 	return !((id1 ^ id2) & mask);
 }
 
+/**
+ * phy_id_compare_vendor - compare @id with @vendor mask
+ * @id: PHY ID
+ * @vendor_mask: PHY Vendor mask
+ *
+ * Return: true if the bits from @id match @vendor using the
+ *	   generic PHY Vendor mask.
+ */
+static inline bool phy_id_compare_vendor(u32 id, u32 vendor_mask)
+{
+	return phy_id_compare(id, vendor_mask, PHY_ID_MATCH_VENDOR_MASK);
+}
+
 /**
  * phydev_id_compare - compare @id with the PHY's Clause 22 ID
  * @phydev: the PHY device
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185148-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id cEM+LMAf7WgybTkAYBR5ng
	(envelope-from <stable+bounces-185148-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:50:24 +0000
Return-path: <stable+bounces-185148-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:50:24 +0000
Received: from ams.mirrors.kernel.org ([213.196.21.55])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185148-hi=josie.lol@vger.kernel.org>)
	id 1v8Koa-0000000HA4F-1hkH
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:50:24 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by ams.mirrors.kernel.org (Postfix) with ESMTPS id 730E034AC18
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:50:23 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 1CBBD30AAC1;
	Mon, 13 Oct 2025 15:31:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="OUQi77q9"
X-Original-To: stable@vger.kernel.org
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 E9CDE30AAC0;
	Mon, 13 Oct 2025 15:31:09 +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=1760369470; cv=none; b=qqHqY23v1mMVe5juDufuR5NX+Xo7rN2ya6ymrSC/CvHX5/jLBRBB+SbBxBGgYJOnDnw7g32J8/lnWoUm0kvSze5Pyz7/i2kgaQq4EQ+ZvZSlu+s0pRe9LpV5iIyyhk+1osSyl4M5pRjYAKYTgVq1Dp/CU5L4+ao+hO6kuUmLQkI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369470; c=relaxed/simple;
	bh=td3/PoSQATC12nR6t7ymnPxLhZV/RPHlJ2DqLMjeeq4=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=BJunFsHQvEFeZDYsX1ez8Rkliftih6j2w2eiutBasXOOxbeIPgV4ezaZsOJB1LhOn+UqtyekC3IkMDqQOO0uZxWwd85crzNx/yUaUbQ5p2Xc4Fn1k5DiNiGYTjUvIJKCqGFDen23nFHYKW6VotK1Rr6N9goFq5W48GbZgIB/APo=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=OUQi77q9; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 72BB1C4CEE7;
	Mon, 13 Oct 2025 15:31:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369469;
	bh=td3/PoSQATC12nR6t7ymnPxLhZV/RPHlJ2DqLMjeeq4=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=OUQi77q9FZBetcThA7SGX2PQlgNrJuryb/n6xb6rV9Q9u+0/FlrowULXHI76q0r4U
	 naw6AyNTb4Am4jroo6pC8EFO/+Kk9TPDuZrodIVlItFtgB0+ywPOOquH54Aqe42g7d
	 zH1opd3Eni5qbcOPc+rLIn/2Qew9PJvsGHZPZjmE=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Thorsten Blum <thorsten.blum@linux.dev>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 257/563] crypto: octeontx2 - Call strscpy() with correct size argument
Date: Mon, 13 Oct 2025 16:41:58 +0200
Message-ID: <20251013144420.589810038@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: 0.4 (/)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (0.4 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: 4

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Thorsten Blum <thorsten.blum@linux.dev>

[ Upstream commit 361fa7f813e7056cecdb24f3582ab0ad4a088e4e ]

In otx2_cpt_dl_custom_egrp_create(), strscpy() is called with the length
of the source string rather than the size of the destination buffer.

This is fine as long as the destination buffer is larger than the source
string, but we should still use the destination buffer size instead to
call strscpy() as intended. And since 'tmp_buf' is a fixed-size buffer,
we can safely omit the size argument and let strscpy() infer it using
sizeof().

Fixes: d9d7749773e8 ("crypto: octeontx2 - add apis for custom engine groups")
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/crypto/marvell/octeontx2/otx2_cptpf_ucode.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/crypto/marvell/octeontx2/otx2_cptpf_ucode.c b/drivers/crypto/marvell/octeontx2/otx2_cptpf_ucode.c
index cc47e361089a0..ebdf4efa09d4d 100644
--- a/drivers/crypto/marvell/octeontx2/otx2_cptpf_ucode.c
+++ b/drivers/crypto/marvell/octeontx2/otx2_cptpf_ucode.c
@@ -1615,7 +1615,7 @@ int otx2_cpt_dl_custom_egrp_create(struct otx2_cptpf_dev *cptpf,
 		return -EINVAL;
 	}
 	err_msg = "Invalid engine group format";
-	strscpy(tmp_buf, ctx->val.vstr, strlen(ctx->val.vstr) + 1);
+	strscpy(tmp_buf, ctx->val.vstr);
 	start = tmp_buf;
 
 	has_se = has_ie = has_ae = false;
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185143-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id KJW8HLof7WgybTkAYBR5ng
	(envelope-from <stable+bounces-185143-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:50:18 +0000
Return-path: <stable+bounces-185143-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:50:18 +0000
Received: from am.mirrors.kernel.org ([147.75.80.249])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185143-hi=josie.lol@vger.kernel.org>)
	id 1v8KoU-0000000H9sy-0W4K
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:50:18 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by am.mirrors.kernel.org (Postfix) with ESMTPS id CC2AB189EAF0
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:50:40 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id 342CE30AAA9;
	Mon, 13 Oct 2025 15:30:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="sFDjIjeO"
X-Original-To: stable@vger.kernel.org
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 0D9F5309F1E;
	Mon, 13 Oct 2025 15:30:56 +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=1760369456; cv=none; b=KDrb3euK5lNuWBF/4JV8ULgGFraWtoKWbMnvPc0iI4RiWzZ/HEWg2IendKLqIiotPXE/3n0NVO76Cq0JVb4PGkJ2vV9YUZN/qYK+lDIzUBk44bBn1NQewBW53YzEVzMrvqg9CC4OXvaxmq11pFuSbAYlznnwzC0m6p5lRYPGlyQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369456; c=relaxed/simple;
	bh=LZTksf8pwxdWRLKrbGa4rbWXESNX8P+rmYrciyzTLKU=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=S2S9L4MnaCtGOa2S9M/BLegiC1gF4mvI3qutq/WDOJlCYh3Ju4QIy2QJ4OTkNxYOjYyExVXC35eAxSgdBMq8hva1LkcHgY3gyNgQoYipOutJy8QZrvt5tPzUX3AK3zztsZ0mtV0WVjKRsUnZAQVDd7jklOabnQ3xtA0etV5QimU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=sFDjIjeO; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7E3E9C4CEE7;
	Mon, 13 Oct 2025 15:30:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369455;
	bh=LZTksf8pwxdWRLKrbGa4rbWXESNX8P+rmYrciyzTLKU=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=sFDjIjeOz8Cdz4RESCR4awvT20dcIa/A8vyCXFL7UlHvdqB2+C3+SKXfaR9NLxSmd
	 XW2jmtZ0YbfuqgzI257x5ZmLG+6V/GlrRKimXsLS+hR79Ti6joxJ/wl4Gt9ljx1LTO
	 GM6xNqTsbEojLYgd8oPyr0KfG0aNcRLG7kSDPTV4=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Thomas Fourier <fourier.thomas@gmail.com>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 252/563] scsi: myrs: Fix dma_alloc_coherent() error check
Date: Mon, 13 Oct 2025 16:41:53 +0200
Message-ID: <20251013144420.411454504@linuxfoundation.org>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20251013144411.274874080@linuxfoundation.org>
References: <20251013144411.274874080@linuxfoundation.org>
User-Agent: quilt/0.69
X-stable: review
X-Patchwork-Hint: ignore
Precedence: bulk
X-Mailing-List: stable@vger.kernel.org
List-Id: <stable.vger.kernel.org>
List-Subscribe: <mailto:stable+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:stable+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-DKIM: signer='linuxfoundation.org' status='pass' reason=''
DKIMCheck: Server passes DKIM test, 0 Spam score
X-Spam-Score: -1.9 (-)
X-Spam-Report: Spam detection software, running on the system "witcher.mxrouting.net", has
 performed the tests listed below against this email.
 Information: https://mxroutedocs.com/directadmin/spamfilters/
 ---
 Content analysis details:   (-1.9 points)
 ---
  pts rule name              description
 ---- ---------------------- -----------------------------------------
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was
                             blocked.  See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: linuxfoundation.org]
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
                             medium trust
                             [147.75.80.249 listed in list.dnswl.org]
  1.5 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level
                             mail domains are different
 -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from
                             author's domain
  0.1 DKIM_SIGNED            Message has a DKIM or DK signature, not necessarily
                             valid
 -0.1 DKIM_VALID             Message has at least one valid DKIM or DK signature
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager
 -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender
SpamTally: Final spam score: -18

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Thomas Fourier <fourier.thomas@gmail.com>

[ Upstream commit edb35b1ffc686fd9b5a91902f034eb9f4d2c9f6b ]

Check for NULL return value with dma_alloc_coherent(), because DMA
address is not always set by dma_alloc_coherent() on failure.

Fixes: 77266186397c ("scsi: myrs: Add Mylex RAID controller (SCSI interface)")
Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
Link: https://lore.kernel.org/r/20250725083112.43975-2-fourier.thomas@gmail.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/scsi/myrs.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/myrs.c b/drivers/scsi/myrs.c
index 95af3bb03834c..a58abd796603b 100644
--- a/drivers/scsi/myrs.c
+++ b/drivers/scsi/myrs.c
@@ -498,14 +498,14 @@ static bool myrs_enable_mmio_mbox(struct myrs_hba *cs,
 	/* Temporary dma mapping, used only in the scope of this function */
 	mbox = dma_alloc_coherent(&pdev->dev, sizeof(union myrs_cmd_mbox),
 				  &mbox_addr, GFP_KERNEL);
-	if (dma_mapping_error(&pdev->dev, mbox_addr))
+	if (!mbox)
 		return false;
 
 	/* These are the base addresses for the command memory mailbox array */
 	cs->cmd_mbox_size = MYRS_MAX_CMD_MBOX * sizeof(union myrs_cmd_mbox);
 	cmd_mbox = dma_alloc_coherent(&pdev->dev, cs->cmd_mbox_size,
 				      &cs->cmd_mbox_addr, GFP_KERNEL);
-	if (dma_mapping_error(&pdev->dev, cs->cmd_mbox_addr)) {
+	if (!cmd_mbox) {
 		dev_err(&pdev->dev, "Failed to map command mailbox\n");
 		goto out_free;
 	}
@@ -520,7 +520,7 @@ static bool myrs_enable_mmio_mbox(struct myrs_hba *cs,
 	cs->stat_mbox_size = MYRS_MAX_STAT_MBOX * sizeof(struct myrs_stat_mbox);
 	stat_mbox = dma_alloc_coherent(&pdev->dev, cs->stat_mbox_size,
 				       &cs->stat_mbox_addr, GFP_KERNEL);
-	if (dma_mapping_error(&pdev->dev, cs->stat_mbox_addr)) {
+	if (!stat_mbox) {
 		dev_err(&pdev->dev, "Failed to map status mailbox\n");
 		goto out_free;
 	}
@@ -533,7 +533,7 @@ static bool myrs_enable_mmio_mbox(struct myrs_hba *cs,
 	cs->fwstat_buf = dma_alloc_coherent(&pdev->dev,
 					    sizeof(struct myrs_fwstat),
 					    &cs->fwstat_addr, GFP_KERNEL);
-	if (dma_mapping_error(&pdev->dev, cs->fwstat_addr)) {
+	if (!cs->fwstat_buf) {
 		dev_err(&pdev->dev, "Failed to map firmware health buffer\n");
 		cs->fwstat_buf = NULL;
 		goto out_free;
-- 
2.51.0





From - Mon Oct 13 15:56:01 2025
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <stable+bounces-185139-hi=josie.lol@vger.kernel.org>
Delivered-To: hi@josie.lol
Received: from witcher.mxrouting.net
	by witcher.mxrouting.net with LMTP
	id eFAqErUf7Wg70jwAYBR5ng
	(envelope-from <stable+bounces-185139-hi=josie.lol@vger.kernel.org>)
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:50:13 +0000
Return-path: <stable+bounces-185139-hi=josie.lol@vger.kernel.org>
Envelope-to: hi@josie.lol
Delivery-date: Mon, 13 Oct 2025 15:50:13 +0000
Received: from ams.mirrors.kernel.org ([213.196.21.55])
	by witcher.mxrouting.net with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
	(Exim 4.98)
	(envelope-from <stable+bounces-185139-hi=josie.lol@vger.kernel.org>)
	id 1v8KoO-0000000H9ka-3lzs
	for hi@josie.lol;
	Mon, 13 Oct 2025 15:50:13 +0000
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
	(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by ams.mirrors.kernel.org (Postfix) with ESMTPS id C7322343702
	for <hi@josie.lol>; Mon, 13 Oct 2025 15:50:11 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
	by smtp.subspace.kernel.org (Postfix) with ESMTP id C6E85309F15;
	Mon, 13 Oct 2025 15:30:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="CStMfVLr"
X-Original-To: stable@vger.kernel.org
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 9FE8A309F14;
	Mon, 13 Oct 2025 15:30:44 +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=1760369444; cv=none; b=PSxoS5UawAxKZkTwVjMho8goax4CbjgquJ/cUCI1Gu3B7PtU5s1Aj1yDhw2u/6Hi8NJt3DWYyScDBld35y+mi7uTvAHrZGQ55NiaGtEnLVmylUeD3F/R2Syhi8X1pVlntR2yFQEbprH2LvdGqqCmreKSwjevL6IZi6skytmPM9Y=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1760369444; c=relaxed/simple;
	bh=rKPOsOoso5kdXLWCoG5jgdxitTU+IZjgsdWp6xqCzTo=;
	h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
	 MIME-Version; b=jFP6+StTdmCn9soXco/Ue1d+tAU01YU0BJOxRDwjYzecgtWcisgFfembRSlg53Q+4Ui/ldIqcklFgxsVWvUhQoM3mVOyYUv2w2/ImVmqHGUrSj5Rr9jp4mKVTAw+UCXLeSeoZDT30w7mbAnpHcl5GXkxMKpjUq3O09RbEyXworI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=CStMfVLr; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1AB21C4CEFE;
	Mon, 13 Oct 2025 15:30:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1760369444;
	bh=rKPOsOoso5kdXLWCoG5jgdxitTU+IZjgsdWp6xqCzTo=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=CStMfVLrwOk0iosolkuNQ6Q8JRt8f+Z5UAiNu/CYgj9G9ZHNdOpVYM0kZrsfL9rAN
	 9LViuHf4ZEI3PWkSkoUsfSFftY9rCSkxEdLc7oLGFVPL1gcu7mqknwCVWowj0srDol
	 jFe+B0k3AMsEyGLKDG8+2j6/5Fox/yRAP46Vmn6E=
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev,
	Niklas Cassel <cassel@kernel.org>,
	Damien Le Moal <dlemoal@kernel.org>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.17 249/563] scsi: pm80xx: Add helper function to get the local phy id
Date: Mon, 13 Oct 2025 16:41:50 +0200
