From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794657829; b=JRXW/xHljot4T+di4KQnX+gKbF1pIpQSf/1gnNpgUa+RqKA+66O3WD/cQIoCmdZpbEMy yW3NZ9MSROKB/RenKRegv+YcRIYQiD4resNu6MQ4cE/oQzw5JKWrycdj4GEs4RPCUW5po jNhhQ/7ryVgJln3SYBl8OREWME3JQQwd8NtBc+iZV7sl7PPFlAtR8rrG4ZnCAdX0QY0F2 6GJgwIzt7WtoG5Ngyg6vWuAck2cyByGAiMdHedqXuWJhsLhcp4HJufTiOQp33iF6TAJuO 0lZxiJE3tAONvnARyqhNBjQ1ckJf+dVN8RvFlBkpPhxyIE76mcvK2rliPrPAUsnnSLg== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794657829; h=Received:DKIM-Signature:Message-ID:From:Subject:Reply-To:To:Cc: In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date; bh=9cNpf83TDNUnfk8nTN2RZCY5xNHmz1XB5OVMQtWPcy4=; b=xRb3nFApSjRTfWexrc+o/wTkPlW3cywKyWrpUM7hKXJwFiLdQhb5lhFS6/BQOOAGgkSz qEZ0Sx6WrhfljI+jMYseCQLzxuZQ+nWkam7HJsdH0xQVsBx2vqY4iOWWfkkSNrCO53ZwT 1x/cQEDtHBeWvtMnMsdcifgjkuCFPqxmUTW66LVM3iwa75j14ge/Y68w6HSQYY/5m2ykV DTNAn+9j92cEI7x+2JIipSVUlPwj4o+vpIso6ONfgaTw2WV+e5RtWZByi0Cgc+a/D3jLu 954Gi26WwMeMvp29iJrWj1pP0a+C3Z2kzbi2PvY05WOC5sasCkEUrFgK7t9ZS45UFPQ== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=Z9kpMK2v; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D0CEC606A33B; Sat, 14 Nov 2026 12:03:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=Z9kpMK2v Received: by smtp.kernel.org (Postfix) with ESMTPSA id 290A21F000C5; Sat, 14 Nov 2026 12:03:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1794657829; bh=9cNpf83TDNUnfk8nTN2RZCY5xNHmz1XB5OVMQtWPcy4=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Z9kpMK2vr/pVp2iNWYURY8dh/iimkz0Ia1et9sthC6M1MBJaQsDwXRUSwglxFmELm rhi/1FAU8VuXaPq5wxlYsTBfb32WNnHvUE9n37itucz8C/s1XMJ9ESPaBJA8e6TwT1 NvW8CYR487VKk2EBACE2P/YEBYTDjG2kB1y1In6mC73iqAzjeLod4Ks8sUZ/EyClc6 5Ium761EssSaBlqaAUvj8BQJa85SJ2kg1xnpmJR+7NnrlwRdI53yHUwpVuPiD/GWDQ K6lJRLJ1caDd+9Eh41NHAPcytnfX30ZhN3D+u5y09MO5qKWyBgi1c3oXulVewl6bgv ToDQcETgKP/Nw== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v3 26/33] btrfs: don't set SB_RDONLY after filesystem errors Reply-To: sashiko-reviews@lists.linux.dev To: "Christian Brauner" , "Jan Kara" Cc: "Al Viro" , linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-efi@vger.kernel.org, linux-mtd@lists.infradead.org, dsterba@suse.cz, tytso@mit.edu, "Mark Fasheh" , "Joel Becker" , "Joseph Qi" In-Reply-To: <20261113-work-fs-sb_rdonly-v3-26-0be92bb73709@kernel.org> References: <20261113-work-fs-sb_rdonly-v3-0-0be92bb73709@kernel.org> <20261113-work-fs-sb_rdonly-v3-26-0be92bb73709@kernel.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Sat, 14 Nov 2026 12:03:48 +0000 X-Mailing-List: linux-efi@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list Thank you for your contribution! Sashiko AI review found 2 potential issues to consider: - [Medium] btrfs: btrfs_super_sync_fs() and btrfs_freeze() return 0 on shutdown or error - [Medium] btrfs: race between BTRFS_FS_STATE_RO and sb_set_emergency_ro() on fs error -- commit 3d297b218ce5c34d64ff204c632eaa6ac7a2526b Author: Christian Brauner btrfs: don't set SB_RDONLY after filesystem errors This commit stops setting SB_RDONLY in __btrfs_handle_fs_error(), using BTRFS_FS_STATE_RO and sb_set_emergency_ro() instead, and updates shutdown, remount, sync_fs, and freeze handling for the new read-only state. > diff --git a/fs/btrfs/fs.h b/fs/btrfs/fs.h > index 024c3ec7d0583..39fd1a04d25ba 100644 > --- a/fs/btrfs/fs.h > +++ b/fs/btrfs/fs.h [ ... ] > @@ -1233,15 +1232,12 @@ static inline bool btrfs_is_shutdown(const struct= btrfs_fs_info *fs_info) > static inline void btrfs_force_shutdown(struct btrfs_fs_info *fs_info) > { > /* > - * Here we do not want to use handle_fs_error(), which will mark the fs > - * read-only. > - * Some call sites like shutdown ioctl will mark the fs shutdown when > - * the fs is frozen. But thaw path will handle RO and RW fs > - * differently. > - * > - * So here we only mark the fs error without flipping it RO. > + * A shutdown isn't an error, so don't use btrfs_handle_fs_error(). > + * BTRFS_FS_STATE_RO doesn't touch SB_RDONLY, so it's fine while the > + * filesystem is frozen, e.g. for the shutdown ioctl. > */ > WRITE_ONCE(fs_info->fs_error, -EIO); > + set_bit(BTRFS_FS_STATE_RO, &fs_info->fs_state); > if (!test_and_set_bit(BTRFS_FS_STATE_EMERGENCY_SHUTDOWN, &fs_info->fs_s= tate)) { > btrfs_crit(fs_info, "emergency shutdown"); > fserror_report_shutdown(fs_info->sb, GFP_KERNEL); [ ... ] > diff --git a/fs/btrfs/messages.c b/fs/btrfs/messages.c > index cedca40508315..3a768e2ac1ccf 100644 > --- a/fs/btrfs/messages.c > +++ b/fs/btrfs/messages.c > @@ -173,8 +173,12 @@ void __btrfs_handle_fs_error(struct btrfs_fs_info *f= s_info, const char *function > =20 > btrfs_discard_stop(fs_info); > =20 > - /* Handle error by forcing the filesystem readonly. */ > - btrfs_set_sb_rdonly(sb); > + /* > + * Handle error by forcing the filesystem readonly. SB_RDONLY needs > + * s_umount, see sb_set_emergency_ro(). > + */ > + set_bit(BTRFS_FS_STATE_RO, &fs_info->fs_state); > + sb_set_emergency_ro(sb); > btrfs_info(fs_info, "forced readonly"); [Severity: Medium] Can setting BTRFS_FS_STATE_RO before sb_set_emergency_ro(sb) let concurrent callers observe btrfs_fs_rdonly() =3D=3D true while sb_emergency_ro(sb) is = still false? set_bit() is a relaxed atomic operation and __btrfs_handle_fs_error() retur= ns early when btrfs_fs_rdonly(fs_info) is already set: CPU0 CPU1 __btrfs_handle_fs_error() set_bit(BTRFS_FS_STATE_RO, ...) ksys_syncfs() sync_filesystem(sb) btrfs_super_sync_fs(sb, 1) if (btrfs_fs_rdonly(...)) return 0; if (sb_emergency_ro(sb)) /* still false, returns 0 */ sb_set_emergency_ro(sb) During this window, syncfs(2) and freeze_super() can see btrfs_fs_rdonly() = =3D=3D true in btrfs_super_sync_fs() and sb_emergency_ro(sb) =3D=3D false in the V= FS, so they return 0 without syncing instead of failing with -EROFS. Similarly, a second thread entering __btrfs_handle_fs_error() sees btrfs_fs_rdonly(fs_in= fo) and returns early to its caller before CPU0 sets SB_STATE_EMERGENCY_RO, so a subsequent btrfs_ioctl_shutdown() or VFS call on CPU1 can still observe sb_emergency_ro(sb) =3D=3D false. > diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c > index b424cc836bd4a..ff61ec9ebfa79 100644 > --- a/fs/btrfs/super.c > +++ b/fs/btrfs/super.c > @@ -1041,6 +1041,18 @@ int btrfs_sync_fs(struct super_block *sb, int wait) > return btrfs_commit_transaction(trans); > } > =20 > +/* > + * Nothing can be committed after an error, don't fail syncfs(2) and fre= ezing. > + * BTRFS_IOC_SYNC calls btrfs_sync_fs() directly and still gets the erro= r. > + */ > +static int btrfs_super_sync_fs(struct super_block *sb, int wait) > +{ > + if (btrfs_fs_rdonly(btrfs_sb(sb))) > + return 0; > + > + return btrfs_sync_fs(sb, wait); > +} [ ... ] > @@ -2308,6 +2326,9 @@ static int btrfs_freeze(struct super_block *sb) > struct btrfs_fs_info *fs_info =3D btrfs_sb(sb); > =20 > set_bit(BTRFS_FS_FROZEN, &fs_info->flags); > + /* Nothing can be committed after an error. */ > + if (btrfs_fs_rdonly(fs_info)) > + return 0; > /* > * We don't need a barrier here, we'll wait for any transaction that > * could be in progress on other threads (and do delayed iputs that [Severity: Medium] Does returning 0 when btrfs_fs_rdonly() is true cause syncfs(2) and freeze_super() to succeed without flushing after a forced shutdown? btrfs_force_shutdown() now sets BTRFS_FS_STATE_RO without calling sb_set_emergency_ro(sb). After BTRFS_IOC_SHUTDOWN with BTRFS_SHUTDOWN_FLAGS_NOLOGFLUSH (or btrfs_shutdown()), dirty data and transactions were not flushed, yet sb_emergency_ro(sb) and sb_rdonly(sb) are both false. Calling syncfs(2) or FIFREEZE then reaches btrfs_super_sync_fs= () and btrfs_freeze(), which see btrfs_fs_rdonly() =3D=3D true and return 0 in= stead of failing as btrfs_sync_fs() and btrfs_commit_current_transaction() did via BTRFS_FS_ERROR(fs_info). In addition, if an in-flight transaction aborts while freeze_super() is waiting in sb_wait_write(sb, SB_FREEZE_FS) (after freeze_super() already checked sb_emergency_ro(sb)), btrfs_freeze() now returns 0 and lets the fre= eze succeed on an errored filesystem. The comment above btrfs_super_sync_fs() also says not to fail syncfs(2) and freezing after an error, whereas the VFS fails both with -EROFS when sb_emergency_ro(sb) is set. --=20 Sashiko AI review =C2=B7 https://sashiko.dev/#/patchset/20261113-work-fs-sb= _rdonly-v3-0-0be92bb73709@kernel.org?part=3D26 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D70BE606A337 for ; Sat, 14 Nov 2026 12:03:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=1z5EZzUU; dkim=fail reason="signature verification failed" (2048-bit key) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=Z9kpMK2v DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=4y1HVa4TLwAni+V8OrPITbzLY9ZyfiC6uTCYPOQ+I3k=; b=1z5EZzUUnte6QRKSfa+LFOnRkC xl1ZQkvI9yEF6nCQQjsCCZEWOkZyYoh5SHcDtDOBmFYHPRwyOR3dUHpMtiylMR3tONRMxEVywY8SJ BriL48aj9Sog4z1im9UHsf3SqPdtXyh+Lff8zokrzG9ELkANsqmezlTGHc08PJtfEUcJTUJh4BEQJ AMrbY5mXwAYKsg+QmG5XLWbe2PivGSFseZZfC1EkOgJ1zSvmYhdQJzY/i40xxsU+VClGtwf3ewJqz rzLU6cra5fTVFEMdBgxeLa1SuY9vsFoJLG0RezwhQ9zcqMIGrdUZa+qz8xFWBtZuGARQo8DULyjfP NdSFNAmw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xSCU4-0000000FzCF-2Urz; Sat, 14 Nov 2026 12:03:52 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xSCU2-0000000FzAm-2Ukl for linux-mtd@lists.infradead.org; Sat, 14 Nov 2026 12:03:50 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 000B56232A; Sat, 14 Nov 2026 12:03:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 290A21F000C5; Sat, 14 Nov 2026 12:03:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1794657829; bh=9cNpf83TDNUnfk8nTN2RZCY5xNHmz1XB5OVMQtWPcy4=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=Z9kpMK2vr/pVp2iNWYURY8dh/iimkz0Ia1et9sthC6M1MBJaQsDwXRUSwglxFmELm rhi/1FAU8VuXaPq5wxlYsTBfb32WNnHvUE9n37itucz8C/s1XMJ9ESPaBJA8e6TwT1 NvW8CYR487VKk2EBACE2P/YEBYTDjG2kB1y1In6mC73iqAzjeLod4Ks8sUZ/EyClc6 5Ium761EssSaBlqaAUvj8BQJa85SJ2kg1xnpmJR+7NnrlwRdI53yHUwpVuPiD/GWDQ K6lJRLJ1caDd+9Eh41NHAPcytnfX30ZhN3D+u5y09MO5qKWyBgi1c3oXulVewl6bgv ToDQcETgKP/Nw== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v3 26/33] btrfs: don't set SB_RDONLY after filesystem errors To: "Christian Brauner" , "Jan Kara" Cc: "Al Viro" , linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-efi@vger.kernel.org, linux-mtd@lists.infradead.org, dsterba@suse.cz, tytso@mit.edu, "Mark Fasheh" , "Joel Becker" , "Joseph Qi" In-Reply-To: <20261113-work-fs-sb_rdonly-v3-26-0be92bb73709@kernel.org> References: <20261113-work-fs-sb_rdonly-v3-0-0be92bb73709@kernel.org> <20261113-work-fs-sb_rdonly-v3-26-0be92bb73709@kernel.org> Date: Sat, 14 Nov 2026 12:03:48 +0000 X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" X-Spam-Status: No, score=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg MiBwb3RlbnRpYWwKaXNzdWVzIHRvIGNvbnNpZGVyOgotIFtNZWRpdW1dIGJ0cmZzOiBidHJmc19z dXBlcl9zeW5jX2ZzKCkgYW5kIGJ0cmZzX2ZyZWV6ZSgpIHJldHVybiAwIG9uCiAgc2h1dGRvd24g b3IgZXJyb3IKLSBbTWVkaXVtXSBidHJmczogcmFjZSBiZXR3ZWVuIEJUUkZTX0ZTX1NUQVRFX1JP IGFuZAogIHNiX3NldF9lbWVyZ2VuY3lfcm8oKSBvbiBmcyBlcnJvcgotLQoKY29tbWl0IDNkMjk3 YjIxOGNlNWMzNGQ2NGZmMjA0YzYzMmVhYTZhYzdhMjUyNmIKQXV0aG9yOiBDaHJpc3RpYW4gQnJh dW5lciA8YnJhdW5lckBrZXJuZWwub3JnPgoKYnRyZnM6IGRvbid0IHNldCBTQl9SRE9OTFkgYWZ0 ZXIgZmlsZXN5c3RlbSBlcnJvcnMKClRoaXMgY29tbWl0IHN0b3BzIHNldHRpbmcgU0JfUkRPTkxZ IGluIF9fYnRyZnNfaGFuZGxlX2ZzX2Vycm9yKCksIHVzaW5nCkJUUkZTX0ZTX1NUQVRFX1JPIGFu ZCBzYl9zZXRfZW1lcmdlbmN5X3JvKCkgaW5zdGVhZCwgYW5kIHVwZGF0ZXMgc2h1dGRvd24sCnJl bW91bnQsIHN5bmNfZnMsIGFuZCBmcmVlemUgaGFuZGxpbmcgZm9yIHRoZSBuZXcgcmVhZC1vbmx5 IHN0YXRlLgoKPiBkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZnMuaCBiL2ZzL2J0cmZzL2ZzLmgKPiBp bmRleCAwMjRjM2VjN2QwNTgzLi4zOWZkMWEwNGQyNWJhIDEwMDY0NAo+IC0tLSBhL2ZzL2J0cmZz L2ZzLmgKPiArKysgYi9mcy9idHJmcy9mcy5oClsgLi4uIF0KPiBAQCAtMTIzMywxNSArMTIzMiwx MiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnRyZnNfaXNfc2h1dGRvd24oY29uc3Qgc3RydWN0IGJ0 cmZzX2ZzX2luZm8gKmZzX2luZm8pCj4gIHN0YXRpYyBpbmxpbmUgdm9pZCBidHJmc19mb3JjZV9z aHV0ZG93bihzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbykKPiAgewo+ICAJLyoKPiAtCSAq IEhlcmUgd2UgZG8gbm90IHdhbnQgdG8gdXNlIGhhbmRsZV9mc19lcnJvcigpLCB3aGljaCB3aWxs IG1hcmsgdGhlIGZzCj4gLQkgKiByZWFkLW9ubHkuCj4gLQkgKiBTb21lIGNhbGwgc2l0ZXMgbGlr ZSBzaHV0ZG93biBpb2N0bCB3aWxsIG1hcmsgdGhlIGZzIHNodXRkb3duIHdoZW4KPiAtCSAqIHRo ZSBmcyBpcyBmcm96ZW4uIEJ1dCB0aGF3IHBhdGggd2lsbCBoYW5kbGUgUk8gYW5kIFJXIGZzCj4g LQkgKiBkaWZmZXJlbnRseS4KPiAtCSAqCj4gLQkgKiBTbyBoZXJlIHdlIG9ubHkgbWFyayB0aGUg ZnMgZXJyb3Igd2l0aG91dCBmbGlwcGluZyBpdCBSTy4KPiArCSAqIEEgc2h1dGRvd24gaXNuJ3Qg YW4gZXJyb3IsIHNvIGRvbid0IHVzZSBidHJmc19oYW5kbGVfZnNfZXJyb3IoKS4KPiArCSAqIEJU UkZTX0ZTX1NUQVRFX1JPIGRvZXNuJ3QgdG91Y2ggU0JfUkRPTkxZLCBzbyBpdCdzIGZpbmUgd2hp bGUgdGhlCj4gKwkgKiBmaWxlc3lzdGVtIGlzIGZyb3plbiwgZS5nLiBmb3IgdGhlIHNodXRkb3du IGlvY3RsLgo+ICAJICovCj4gIAlXUklURV9PTkNFKGZzX2luZm8tPmZzX2Vycm9yLCAtRUlPKTsK PiArCXNldF9iaXQoQlRSRlNfRlNfU1RBVEVfUk8sICZmc19pbmZvLT5mc19zdGF0ZSk7Cj4gIAlp ZiAoIXRlc3RfYW5kX3NldF9iaXQoQlRSRlNfRlNfU1RBVEVfRU1FUkdFTkNZX1NIVVRET1dOLCAm ZnNfaW5mby0+ZnNfc3RhdGUpKSB7Cj4gIAkJYnRyZnNfY3JpdChmc19pbmZvLCAiZW1lcmdlbmN5 IHNodXRkb3duIik7Cj4gIAkJZnNlcnJvcl9yZXBvcnRfc2h1dGRvd24oZnNfaW5mby0+c2IsIEdG UF9LRVJORUwpOwpbIC4uLiBdCj4gZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL21lc3NhZ2VzLmMgYi9m cy9idHJmcy9tZXNzYWdlcy5jCj4gaW5kZXggY2VkY2E0MDUwODMxNS4uM2E3NjhlMmFjMWNjZiAx MDA2NDQKPiAtLS0gYS9mcy9idHJmcy9tZXNzYWdlcy5jCj4gKysrIGIvZnMvYnRyZnMvbWVzc2Fn ZXMuYwo+IEBAIC0xNzMsOCArMTczLDEyIEBAIHZvaWQgX19idHJmc19oYW5kbGVfZnNfZXJyb3Io c3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sIGNvbnN0IGNoYXIgKmZ1bmN0aW9uCj4gIAo+ ICAJYnRyZnNfZGlzY2FyZF9zdG9wKGZzX2luZm8pOwo+ICAKPiAtCS8qIEhhbmRsZSBlcnJvciBi eSBmb3JjaW5nIHRoZSBmaWxlc3lzdGVtIHJlYWRvbmx5LiAqLwo+IC0JYnRyZnNfc2V0X3NiX3Jk b25seShzYik7Cj4gKwkvKgo+ICsJICogSGFuZGxlIGVycm9yIGJ5IGZvcmNpbmcgdGhlIGZpbGVz eXN0ZW0gcmVhZG9ubHkuIFNCX1JET05MWSBuZWVkcwo+ICsJICogc191bW91bnQsIHNlZSBzYl9z ZXRfZW1lcmdlbmN5X3JvKCkuCj4gKwkgKi8KPiArCXNldF9iaXQoQlRSRlNfRlNfU1RBVEVfUk8s ICZmc19pbmZvLT5mc19zdGF0ZSk7Cj4gKwlzYl9zZXRfZW1lcmdlbmN5X3JvKHNiKTsKPiAgCWJ0 cmZzX2luZm8oZnNfaW5mbywgImZvcmNlZCByZWFkb25seSIpOwoKW1NldmVyaXR5OiBNZWRpdW1d CkNhbiBzZXR0aW5nIEJUUkZTX0ZTX1NUQVRFX1JPIGJlZm9yZSBzYl9zZXRfZW1lcmdlbmN5X3Jv KHNiKSBsZXQgY29uY3VycmVudApjYWxsZXJzIG9ic2VydmUgYnRyZnNfZnNfcmRvbmx5KCkgPT0g dHJ1ZSB3aGlsZSBzYl9lbWVyZ2VuY3lfcm8oc2IpIGlzIHN0aWxsCmZhbHNlPwoKc2V0X2JpdCgp IGlzIGEgcmVsYXhlZCBhdG9taWMgb3BlcmF0aW9uIGFuZCBfX2J0cmZzX2hhbmRsZV9mc19lcnJv cigpIHJldHVybnMKZWFybHkgd2hlbiBidHJmc19mc19yZG9ubHkoZnNfaW5mbykgaXMgYWxyZWFk eSBzZXQ6CgpDUFUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVTEKX19idHJm c19oYW5kbGVfZnNfZXJyb3IoKQogIHNldF9iaXQoQlRSRlNfRlNfU1RBVEVfUk8sIC4uLikKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrc3lzX3N5bmNmcygpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jX2ZpbGVzeXN0ZW0oc2IpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0cmZzX3N1cGVyX3N5bmNfZnMo c2IsIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ0 cmZzX2ZzX3Jkb25seSguLi4pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoc2JfZW1lcmdlbmN5X3JvKHNiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogc3RpbGwgZmFsc2UsIHJldHVybnMgMCAqLwogIHNiX3NldF9lbWVyZ2Vu Y3lfcm8oc2IpCgpEdXJpbmcgdGhpcyB3aW5kb3csIHN5bmNmcygyKSBhbmQgZnJlZXplX3N1cGVy KCkgY2FuIHNlZSBidHJmc19mc19yZG9ubHkoKSA9PQp0cnVlIGluIGJ0cmZzX3N1cGVyX3N5bmNf ZnMoKSBhbmQgc2JfZW1lcmdlbmN5X3JvKHNiKSA9PSBmYWxzZSBpbiB0aGUgVkZTLCBzbwp0aGV5 IHJldHVybiAwIHdpdGhvdXQgc3luY2luZyBpbnN0ZWFkIG9mIGZhaWxpbmcgd2l0aCAtRVJPRlMu ICBTaW1pbGFybHksIGEKc2Vjb25kIHRocmVhZCBlbnRlcmluZyBfX2J0cmZzX2hhbmRsZV9mc19l cnJvcigpIHNlZXMgYnRyZnNfZnNfcmRvbmx5KGZzX2luZm8pCmFuZCByZXR1cm5zIGVhcmx5IHRv IGl0cyBjYWxsZXIgYmVmb3JlIENQVTAgc2V0cyBTQl9TVEFURV9FTUVSR0VOQ1lfUk8sIHNvIGEK c3Vic2VxdWVudCBidHJmc19pb2N0bF9zaHV0ZG93bigpIG9yIFZGUyBjYWxsIG9uIENQVTEgY2Fu IHN0aWxsIG9ic2VydmUKc2JfZW1lcmdlbmN5X3JvKHNiKSA9PSBmYWxzZS4KCj4gZGlmZiAtLWdp dCBhL2ZzL2J0cmZzL3N1cGVyLmMgYi9mcy9idHJmcy9zdXBlci5jCj4gaW5kZXggYjQyNGNjODM2 YmQ0YS4uZmY2MWVjOWViZmE3OSAxMDA2NDQKPiAtLS0gYS9mcy9idHJmcy9zdXBlci5jCj4gKysr IGIvZnMvYnRyZnMvc3VwZXIuYwo+IEBAIC0xMDQxLDYgKzEwNDEsMTggQEAgaW50IGJ0cmZzX3N5 bmNfZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHdhaXQpCj4gIAlyZXR1cm4gYnRyZnNf Y29tbWl0X3RyYW5zYWN0aW9uKHRyYW5zKTsKPiAgfQo+ICAKPiArLyoKPiArICogTm90aGluZyBj YW4gYmUgY29tbWl0dGVkIGFmdGVyIGFuIGVycm9yLCBkb24ndCBmYWlsIHN5bmNmcygyKSBhbmQg ZnJlZXppbmcuCj4gKyAqIEJUUkZTX0lPQ19TWU5DIGNhbGxzIGJ0cmZzX3N5bmNfZnMoKSBkaXJl Y3RseSBhbmQgc3RpbGwgZ2V0cyB0aGUgZXJyb3IuCj4gKyAqLwo+ICtzdGF0aWMgaW50IGJ0cmZz X3N1cGVyX3N5bmNfZnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHdhaXQpCj4gK3sKPiAr CWlmIChidHJmc19mc19yZG9ubHkoYnRyZnNfc2Ioc2IpKSkKPiArCQlyZXR1cm4gMDsKPiArCj4g KwlyZXR1cm4gYnRyZnNfc3luY19mcyhzYiwgd2FpdCk7Cj4gK30KWyAuLi4gXQo+IEBAIC0yMzA4 LDYgKzIzMjYsOSBAQCBzdGF0aWMgaW50IGJ0cmZzX2ZyZWV6ZShzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnNiKQo+ICAJc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8gPSBidHJmc19zYihzYik7Cj4g IAo+ICAJc2V0X2JpdChCVFJGU19GU19GUk9aRU4sICZmc19pbmZvLT5mbGFncyk7Cj4gKwkvKiBO b3RoaW5nIGNhbiBiZSBjb21taXR0ZWQgYWZ0ZXIgYW4gZXJyb3IuICovCj4gKwlpZiAoYnRyZnNf ZnNfcmRvbmx5KGZzX2luZm8pKQo+ICsJCXJldHVybiAwOwo+ICAJLyoKPiAgCSAqIFdlIGRvbid0 IG5lZWQgYSBiYXJyaWVyIGhlcmUsIHdlJ2xsIHdhaXQgZm9yIGFueSB0cmFuc2FjdGlvbiB0aGF0 Cj4gIAkgKiBjb3VsZCBiZSBpbiBwcm9ncmVzcyBvbiBvdGhlciB0aHJlYWRzIChhbmQgZG8gZGVs YXllZCBpcHV0cyB0aGF0CgpbU2V2ZXJpdHk6IE1lZGl1bV0KRG9lcyByZXR1cm5pbmcgMCB3aGVu IGJ0cmZzX2ZzX3Jkb25seSgpIGlzIHRydWUgY2F1c2Ugc3luY2ZzKDIpIGFuZApmcmVlemVfc3Vw ZXIoKSB0byBzdWNjZWVkIHdpdGhvdXQgZmx1c2hpbmcgYWZ0ZXIgYSBmb3JjZWQgc2h1dGRvd24/ CgpidHJmc19mb3JjZV9zaHV0ZG93bigpIG5vdyBzZXRzIEJUUkZTX0ZTX1NUQVRFX1JPIHdpdGhv dXQgY2FsbGluZwpzYl9zZXRfZW1lcmdlbmN5X3JvKHNiKS4gIEFmdGVyIEJUUkZTX0lPQ19TSFVU RE9XTiB3aXRoCkJUUkZTX1NIVVRET1dOX0ZMQUdTX05PTE9HRkxVU0ggKG9yIGJ0cmZzX3NodXRk b3duKCkpLCBkaXJ0eSBkYXRhIGFuZAp0cmFuc2FjdGlvbnMgd2VyZSBub3QgZmx1c2hlZCwgeWV0 IHNiX2VtZXJnZW5jeV9ybyhzYikgYW5kIHNiX3Jkb25seShzYikgYXJlCmJvdGggZmFsc2UuICBD YWxsaW5nIHN5bmNmcygyKSBvciBGSUZSRUVaRSB0aGVuIHJlYWNoZXMgYnRyZnNfc3VwZXJfc3lu Y19mcygpCmFuZCBidHJmc19mcmVlemUoKSwgd2hpY2ggc2VlIGJ0cmZzX2ZzX3Jkb25seSgpID09 IHRydWUgYW5kIHJldHVybiAwIGluc3RlYWQKb2YgZmFpbGluZyBhcyBidHJmc19zeW5jX2ZzKCkg YW5kIGJ0cmZzX2NvbW1pdF9jdXJyZW50X3RyYW5zYWN0aW9uKCkgZGlkIHZpYQpCVFJGU19GU19F UlJPUihmc19pbmZvKS4KCkluIGFkZGl0aW9uLCBpZiBhbiBpbi1mbGlnaHQgdHJhbnNhY3Rpb24g YWJvcnRzIHdoaWxlIGZyZWV6ZV9zdXBlcigpIGlzCndhaXRpbmcgaW4gc2Jfd2FpdF93cml0ZShz YiwgU0JfRlJFRVpFX0ZTKSAoYWZ0ZXIgZnJlZXplX3N1cGVyKCkgYWxyZWFkeQpjaGVja2VkIHNi X2VtZXJnZW5jeV9ybyhzYikpLCBidHJmc19mcmVlemUoKSBub3cgcmV0dXJucyAwIGFuZCBsZXRz IHRoZSBmcmVlemUKc3VjY2VlZCBvbiBhbiBlcnJvcmVkIGZpbGVzeXN0ZW0uICBUaGUgY29tbWVu dCBhYm92ZSBidHJmc19zdXBlcl9zeW5jX2ZzKCkKYWxzbyBzYXlzIG5vdCB0byBmYWlsIHN5bmNm cygyKSBhbmQgZnJlZXppbmcgYWZ0ZXIgYW4gZXJyb3IsIHdoZXJlYXMgdGhlIFZGUwpmYWlscyBi b3RoIHdpdGggLUVST0ZTIHdoZW4gc2JfZW1lcmdlbmN5X3JvKHNiKSBpcyBzZXQuCgotLSAKU2Fz aGlrbyBBSSByZXZpZXcgwrcgaHR0cHM6Ly9zYXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYxMTEz LXdvcmstZnMtc2JfcmRvbmx5LXYzLTAtMGJlOTJiYjczNzA5QGtlcm5lbC5vcmc/cGFydD0yNgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxp bnV4IE1URCBkaXNjdXNzaW9uIG1haWxpbmcgbGlzdApodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW10ZC8K