From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0A046C624CE for ; Mon, 31 Aug 2026 13:52:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type:Cc: Reply-To:From:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Subject:MIME-Version:References:In-Reply-To: Message-ID:Date:To:Sender:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=8ow0Wgpvz2s2IYrqS9vAnq0Fue3es40c54+clQzU5XI=; b=dnXHTW1oTf5bgvJWZojU8SWEtf LfLjCL2lzL1fFgdG9h8a3k8kskNGxZYNmFDRGp8W2gFXsHASTlPTy1xKSbejRt3ohQVbnFpFCZiS7 1fGVXVQNtiKKlSSie+MTNbiulOVQ1wVUDtX2gD+7AuJxdrbCMitqMqBtwNc1NKda6eME=; Received: from [127.0.0.1] (helo=sfs-ml-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1x12Qq-0004HC-G0; Mon, 31 Aug 2026 13:52:16 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1x12Qp-0004H6-9c for linux-f2fs-devel@lists.sourceforge.net; Mon, 31 Aug 2026 13:52:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:Content-Type:MIME-Version :References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=/BHNSQercJ1KBWP4/OvCJJfpKEPic8I6aXh57K7KDh0=; b=nKb6xDknUNp/68SIwUKKbbToDI AUdogYeILyei+oM4nTwIRuPAxdEZlTvBMtzjaCXy3POAX10oZouuGUsilTEmsCIMhpek2XeV5/gd4 QNnhmm+kgbmh8nPBJfURWOLsgwcyBwiy9bN439v6agvu0EbC//zwkz4F42jZZdd+5jiQ=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=/BHNSQercJ1KBWP4/OvCJJfpKEPic8I6aXh57K7KDh0=; b=iuO4dek3U2987tcWG3Fl4nY4pS UC/UHC8IRzxB7X3GCZFv2kg4xP3hPkq5MaKp1BbkgbPf8fcgkOqTvhVf8yqjgeyZrz8hg2ufNGirE X7IQnVlgdEZULrw1iYWKCOULTo58Dx/6x7dhLB+moAeK0wgTz3ctQewX1RiA8JhLpcZ4=; Received: from sea.source.kernel.org ([172.234.252.31]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1x12Qn-0003sv-V3 for linux-f2fs-devel@lists.sourceforge.net; Mon, 31 Aug 2026 13:52:15 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 8BFE440130; Mon, 31 Aug 2026 13:52:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6DD8A1F00ADE; Mon, 31 Aug 2026 13:52:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788184328; bh=/BHNSQercJ1KBWP4/OvCJJfpKEPic8I6aXh57K7KDh0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=HcMMSmUyuH84xJ0QIKYlTB9TpKLrmwf14PZ+CPdD2A/LeuZPMC29UBErTVHkSy7Qt EbhT5H3xAcPXwnV9MewxyroB9mAsEbq/SmnCf7YUq/97gpw9rzP6WpllfX9qun04GA eXWpLVrNk2rpEIPsO2SXK5ggURmDkBwhuwaI00lfdSccONQmPaK259K+yO/WzAWaBV sY3M51TKWWPyEEmPjpe+Fiq8i5svY4p+6k0R13aJAGY6iQfEn0iGTaGZghNdMjmbsj NlPrbGBOLweOL1W/cL1xoh0zHyRnkoxWI6k0rVk5Z4gRv8r8vlSc7t8y5Xw51HCmL9 P1kXvXrDgFQwQ== To: patches@lists.linux.dev, stable@vger.kernel.org Date: Mon, 31 Aug 2026 09:30:56 -0400 Message-ID: <20260831133314.4125787-628-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260831133314.4125787-1-sashal@kernel.org> References: <20260831133314.4125787-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.18.48 X-Headers-End: 1x12Qn-0003sv-V3 Subject: [f2fs-dev] [PATCH AUTOSEL 6.18-5.10] f2fs: validate inline dentry name lengths before conversion X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Sasha Levin via Linux-f2fs-devel Reply-To: Sasha Levin Cc: Sasha Levin , Samuel Moelius , linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, Jaegeuk Kim , Samuel Moelius Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net RnJvbTogU2FtdWVsIE1vZWxpdXMgPHNhbS5tb2VsaXVzQHRyYWlsb2ZiaXRzLmNvbT4KClsgVXBz dHJlYW0gY29tbWl0IGNmY2QwZTQ5YTE3OGIzZGFjMmMwZWNlNjU2MDc5MDgxZGJmNWRhNzQgXQoK SW5saW5lIGRlbnRyeSBjb252ZXJzaW9uIGNvcGllcyBuYW1lcyBvdXQgb2YgdGhlIGlubGluZSBk ZW50cnkgYXJlYQpiZWZvcmUgY2hlY2tpbmcgdGhhdCBlYWNoIHJlY29yZGVkIG5hbWUgbGVuZ3Ro IGZpdHMgaW4gdGhlIGF2YWlsYWJsZQpmaWxlbmFtZSBzbG90cy4KCkEgY29ycnVwdGVkIGltYWdl IGNhbiB0aGVyZWZvcmUgbWFrZSB0aGUgY29udmVyc2lvbiBwYXRoIHJlYWQgcGFzdAp0aGUgaW5s aW5lIGZpbGVuYW1lIHN0b3JhZ2Ugd2hpbGUgYnVpbGRpbmcgdGhlIHJlZ3VsYXIgZGVudHJ5IGJs b2NrLgoKVmFsaWRhdGUgZWFjaCBpbmxpbmUgZGVudHJ5IG5hbWUgbGVuZ3RoIGFnYWluc3QgdGhl IGlubGluZSBmaWxlbmFtZQphcmVhIGJlZm9yZSBjb3B5aW5nIGl0LgoKQXNzaXN0ZWQtYnk6IENv ZGV4OmdwdC01LjUtY3liZXItcHJldmlldwpTaWduZWQtb2ZmLWJ5OiBTYW11ZWwgTW9lbGl1cyA8 c2FtdWVsLm1vZWxpdXNAdHJhaWxvZmJpdHMuY29tPgpSZXZpZXdlZC1ieTogQ2hhbyBZdSA8Y2hh b0BrZXJuZWwub3JnPgpTaWduZWQtb2ZmLWJ5OiBKYWVnZXVrIEtpbSA8amFlZ2V1a0BrZXJuZWwu b3JnPgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8c2FzaGFsQGtlcm5lbC5vcmc+Ci0tLQoK TExNIEdlbmVyYXRlZCBleHBsYW5hdGlvbnMsIG1heSBiZSBjb21wbGV0ZWx5IGJvZ3VzOgoKIyBT dGFibGUgQmFja3BvcnQgQW5hbHlzaXM6IGBmMmZzOiB2YWxpZGF0ZSBpbmxpbmUgZGVudHJ5IG5h bWUgbGVuZ3RocwpiZWZvcmUgY29udmVyc2lvbmAKCioqTG9jYWwgdHJlZToqKiBMaW51eCAqKjYu MTguNDQqKiAoYHY2LjE4LjQ0LTEtZzI3MzZjMzJkYTk4YjlgKQoqKkNvbW1pdCB1bmRlciByZXZp ZXc6KiogYGNmY2QwZTQ5YTE3OGIzZGFjMmMwZWNlNjU2MDc5MDgxZGJmNWRhNzRgCihtYWlubGlu ZSwgKipub3QqKiBpbiB0aGlzIHRyZWUpCgotLS0KCiMjIFBIQVNFIDE6IENPTU1JVCBNRVNTQUdF IEZPUkVOU0lDUwoKIyMjIFN0ZXAgMS4xOiBQYXJzZSB0aGUgc3ViamVjdCBsaW5lCioqUmVjb3Jk OioqIGBbZjJmc10gW3ZhbGlkYXRlXSB2YWxpZGF0ZSBpbmxpbmUgZGVudHJ5IG5hbWUgbGVuZ3Ro cwpiZWZvcmUgY29udmVyc2lvbmAg4oCUIGRlZmVuc2l2ZSB2YWxpZGF0aW9uIG9uIHRoZSBpbmxp bmUtdG8tcmVndWxhcgpkZW50cnkgY29udmVyc2lvbiBwYXRoLgoKIyMjIFN0ZXAgMS4yOiBQYXJz ZSBhbGwgY29tbWl0IG1lc3NhZ2UgdGFncwoqKlJlY29yZDoqKgotICoqRml4ZXM6Kiog4oCUIG5v dCBwcmVzZW50IChleHBlY3RlZCBmb3IgbWFudWFsIHJldmlldykKLSAqKlJlcG9ydGVkLWJ5Oioq IOKAlCBub25lCi0gKipUZXN0ZWQtYnk6Kiog4oCUIG5vbmUKLSAqKlJldmlld2VkLWJ5OioqIENo YW8gWXUgYDxjaGFvQGtlcm5lbC5vcmc+YCAoZjJmcyBtYWludGFpbmVyKQotICoqQWNrZWQtYnk6 Kiog4oCUIG5vbmUKLSAqKkxpbms6Kiog4oCUIG5vbmUKLSAqKkNjOiBzdGFibGVAdmdlci5rZXJu ZWwub3JnOioqIOKAlCBhYnNlbnQgKG5vdCBhIG5lZ2F0aXZlIHNpZ25hbCkKLSAqKlNpZ25lZC1v ZmYtYnk6KiogU2FtdWVsIE1vZWxpdXMgKGF1dGhvciksIEphZWdldWsgS2ltIChmMmZzCiAgbWFp bnRhaW5lciBtZXJnZSkKLSAqKkFzc2lzdGVkLWJ5OioqIENvZGV4OmdwdC01LjUtY3liZXItcHJl dmlldwotICoqTm90YWJsZToqKiBSZXZpZXdlZCBieSBzdWJzeXN0ZW0gbWFpbnRhaW5lcjsgbm8g c3l6Ym90IHJlcG9ydDsKICBzZWN1cml0eS1yZXNlYXJjaCBvcmlnaW4gKFRyYWlsIG9mIEJpdHMp CgojIyMgU3RlcCAxLjM6IEFuYWx5emUgY29tbWl0IGJvZHkKKipSZWNvcmQ6KioKLSAqKkJ1Zzoq KiBJbmxpbmUgZGVudHJ5IGNvbnZlcnNpb24gdXNlcyBgZGUtPm5hbWVfbGVuYCB0byBzZXQKICBg Zm5hbWUuZGlza19uYW1lLmxlbmAgYW5kIHBvaW50IGF0IGBkLmZpbGVuYW1lW2JpdF9wb3NdYCBi ZWZvcmUKICB2ZXJpZnlpbmcgdGhlIGxlbmd0aCBmaXRzIGluIHRoZSBpbmxpbmUgZmlsZW5hbWUg YXJlYS4KLSAqKlN5bXB0b206KiogT24gYSBjb3JydXB0ZWQgRjJGUyBpbWFnZSwgY29udmVyc2lv biBjYW4gcmVhZCBwYXN0CiAgaW5saW5lIGZpbGVuYW1lIHN0b3JhZ2Ugd2hpbGUgYnVpbGRpbmcg cmVndWxhciBkZW50cnkgYmxvY2tzLgotICoqUm9vdCBjYXVzZToqKiBNaXNzaW5nIGJvdW5kcyBj aGVjayBvbiBgbmFtZV9sZW5gIGFuZCBzbG90IGNvdW50IHZzLgogIGBkLm1heGAgaW4gYGYyZnNf YWRkX2lubGluZV9lbnRyaWVzKClgLgotICoqVmVyc2lvbiBpbmZvOioqIE5vbmUgaW4gY29tbWl0 IG1lc3NhZ2UuCgojIyMgU3RlcCAxLjQ6IERldGVjdCBoaWRkZW4gYnVnIGZpeGVzCioqUmVjb3Jk OioqIE5vdCBkaXNndWlzZWQg4oCUIGV4cGxpY2l0bHkgYSBjb3JydXB0aW9uLWhhbmRsaW5nIC8g bWVtb3J5LQpzYWZldHkgZml4LiBWYWxpZGF0ZXMgYG5hbWVfbGVuIDw9IEYyRlNfTkFNRV9MRU5g IGFuZCBgYml0X3BvcyArCkdFVF9ERU5UUllfU0xPVFMobmFtZV9sZW4pIDw9IGQubWF4YCBiZWZv cmUgdXNlLgoKLS0tCgojIyBQSEFTRSAyOiBESUZGIEFOQUxZU0lTCgojIyMgU3RlcCAyLjE6IElu dmVudG9yeSB0aGUgY2hhbmdlcwoqKlJlY29yZDoqKgotICoqRmlsZXM6KiogYGZzL2YyZnMvaW5s aW5lLmNgICgrNyAvIOKIkjApCi0gKipGdW5jdGlvbnM6KiogYGYyZnNfYWRkX2lubGluZV9lbnRy aWVzKClgIG9ubHkKLSAqKlNjb3BlOioqIFNpbmdsZS1maWxlIHN1cmdpY2FsIGZpeAoKIyMjIFN0 ZXAgMi4yOiBDb2RlIGZsb3cgY2hhbmdlCioqUmVjb3JkOioqCi0gKipIdW5rIDEgKHZhbGlkYXRp b24pOioqIEJlZm9yZSBzZXR0aW5nIGBmbmFtZS5kaXNrX25hbWVgIGZyb20gaW5saW5lCiAgZGVu dHJ5IG1ldGFkYXRhLCBjaGVjayBgbmFtZV9sZW5gIGFuZCBzbG90IHNwYW4uIE9uIGZhaWx1cmU6 IGBlcnIgPQogIC1FRlNDT1JSVVBURUQ7IGdvdG8gcHVuY2hfZGVudHJ5X3BhZ2VzYC4KLSAqKkh1 bmsgMiAoYmxhbmsgbGluZSk6KiogQ29zbWV0aWMgYmVmb3JlIGBwdW5jaF9kZW50cnlfcGFnZXNg IGxhYmVsLgotICoqQmVmb3JlOioqIENvcnJ1cHRlZCBgbmFtZV9sZW5gIHByb3BhZ2F0ZWQgaW50 bwogIGBmMmZzX2FkZF9yZWd1bGFyX2VudHJ5KClgIOKGkiBgZjJmc191cGRhdGVfZGVudHJ5KClg IOKGkiBgbWVtY3B5KC4uLiwKICBuYW1lLT5sZW4pYC4KLSAqKkFmdGVyOioqIENvcnJ1cHRpb24g ZGV0ZWN0ZWQgZWFybHk7IHBhcnRpYWwgY29udmVyc2lvbiBjbGVhbmVkIHVwCiAgdmlhIGV4aXN0 aW5nIGVycm9yIHBhdGguCgojIyMgU3RlcCAyLjM6IEJ1ZyBtZWNoYW5pc20KKipSZWNvcmQ6KioK LSAqKkNhdGVnb3J5OioqIEJ1ZmZlciBvdmVyLXJlYWQgLyBvdXQtb2YtYm91bmRzIHJlYWQgKG1l bW9yeSBzYWZldHkgb24KICBjb3JydXB0ZWQgbWVkaWEpCi0gKipNZWNoYW5pc206KiogYGYyZnNf dXBkYXRlX2RlbnRyeSgpYCBkb2VzCiAgYG1lbWNweShkLT5maWxlbmFtZVtiaXRfcG9zXSwgbmFt ZS0+bmFtZSwgbmFtZS0+bGVuKWAuIFdpdGggaW5mbGF0ZWQKICBgbmFtZV9sZW5gLCB0aGUgc291 cmNlIHBvaW50ZXIgYGQuZmlsZW5hbWVbYml0X3Bvc11gIGluIHRoZSBpbmxpbmUKICBhcmVhIGlz IHJlYWQgYmV5b25kIGFsbG9jYXRlZCBpbmxpbmUgZmlsZW5hbWUgc3RvcmFnZS4KCiMjIyBTdGVw IDIuNDogRml4IHF1YWxpdHkKKipSZWNvcmQ6KioKLSBNaXJyb3JzIGV4aXN0aW5nIHZhbGlkYXRp b24gaW4gYGRpci5jYCByZWFkZGlyIChsaW5lcyAxMDEz4oCTMTAyMykuCi0gVXNlcyBgZ290byBw dW5jaF9kZW50cnlfcGFnZXNgIChiZXR0ZXIgdGhhbiB2MSdzIGJhcmUgYHJldHVybgogIC1FRlND T1JSVVBURURgKSB0byB0cnVuY2F0ZSBwYXJ0aWFsIHdvcmsuCi0gTWluaW1hbCwgbG93IHJlZ3Jl c3Npb24gcmlzazsgYC1FRlNDT1JSVVBURURgIGlzIHN0YW5kYXJkIGYyZnMKICBjb3JydXB0aW9u IGhhbmRsaW5nLgoKLS0tCgojIyBQSEFTRSAzOiBHSVQgSElTVE9SWSBJTlZFU1RJR0FUSU9OCgoj IyMgU3RlcCAzLjE6IEJsYW1lIGNoYW5nZWQgbGluZXMKKipSZWNvcmQ6KioKLSBgZjJmc19hZGRf aW5saW5lX2VudHJpZXMoKWAgaW50cm9kdWNlZCBpbiBgNjc1ZjEwYmRlNmNjM2AgKEZlYiAyMDE2 LAogICJmMmZzOiBmaXggdG8gY29udmVydCBpbmxpbmUgZGlyZWN0b3J5IGNvcnJlY3RseSIpLgot IEJ1ZyBwcmVzZW50IHNpbmNlIGlubGluZSBkZW50cnkgY29udmVyc2lvbiB3YXMgYWRkZWQ7IGxv bmctbGl2ZWQgaW4KICA2LjE4LnkuCgojIyMgU3RlcCAzLjI6IEZvbGxvdyBGaXhlczogdGFnCioq UmVjb3JkOioqIE4vQSDigJQgbm8gYEZpeGVzOmAgdGFnLgoKIyMjIFN0ZXAgMy4zOiBGaWxlIGhp c3RvcnkgZm9yIHJlbGF0ZWQgY2hhbmdlcwoqKlJlY29yZDoqKgotIFJlY2VudCBmMmZzIGNvcnJ1 cHRpb24gZml4ZXMgaW4gdGhpcyB0cmVlOiBgOGFhZDU0NzQ2YzI1MWAgKG9ycGhhbgogIGlub2Rl IGNvdW50KSwgYGZmODNkZTU2ODgyY2JgIChBQ0wgc2l6ZXMpLCBgZWM5Zjc5YzhkNWIyOGAgKHhh dHRyCiAgZW50cmllcyksIGA0Y2UyZDUyZjY4MGMxYCAoaW5saW5lIHhhdHRyIGJvdW5kcykuCi0g UGF0dGVybjogZjJmcyBzdGFibGUgdHJlZSByZWd1bGFybHkgYmFja3BvcnRzIGNvcnJ1cHRpb24t dmFsaWRhdGlvbgogIGZpeGVzLgotIFN0YW5kYWxvbmUgc2luZ2xlIHBhdGNoOyBub3QgcGFydCBv ZiBhIHNlcmllcy4KCiMjIyBTdGVwIDMuNDogQXV0aG9yJ3Mgb3RoZXIgY29tbWl0cwoqKlJlY29y ZDoqKiBTYW11ZWwgTW9lbGl1cyBoYXMgbm8gb3RoZXIgZjJmcyBjb21taXRzIGluIHRoaXMgdHJl ZS4KU2VjdXJpdHkgcmVzZWFyY2hlciBzdWJtaXNzaW9uLCByZXZpZXdlZCBieSBtYWludGFpbmVy LgoKIyMjIFN0ZXAgMy41OiBQcmVyZXF1aXNpdGVzCioqUmVjb3JkOioqIE5vIGRlcGVuZGVuY2ll cy4gVXNlcyBgRjJGU19OQU1FX0xFTmAsIGBHRVRfREVOVFJZX1NMT1RTYCwKYGQubWF4YCDigJQg YWxsIHByZXNlbnQgaW4gNi4xOC40NC4gYGdpdCBhcHBseSAtLWNoZWNrYCBzdWNjZWVkcyBjbGVh bmx5LgoKLS0tCgojIyBQSEFTRSA0OiBNQUlMSU5HIExJU1QgQU5EIEVYVEVSTkFMIFJFU0VBUkNI CgojIyMgU3RlcCA0LjE6IE9yaWdpbmFsIHBhdGNoIGRpc2N1c3Npb24KKipSZWNvcmQ6KioKLSAq KmI0IGRpZyBVUkw6KiogaHR0cHM6Ly9wYXRjaC5tc2dpZC5saW5rLzIwMjYwNjAzMTUxMTQxLjE1 NjM1LTEtCiAgc2FtdWVsLm1vZWxpdXNAdHJhaWxvZmJpdHMuY29tCi0gKipTZXJpZXMgcmV2aXNp b25zOioqIHYxIG9ubHkgKGBiNCBkaWcgLWFgKQotICoqVGhyZWFkIGNvbnRlbnQ6KiogUGF0Y2gg c3VibWlzc2lvbiBvbmx5OyBubyByZXBsaWVzLCBubyBOQUtzLCBubwogIGV4cGxpY2l0IHN0YWJs ZSBub21pbmF0aW9uIGluIHRocmVhZAoKIyMjIFN0ZXAgNC4yOiBSZXZpZXdlcnMKKipSZWNvcmQ6 KiogQ0MnZDogSmFlZ2V1ayBLaW0sIENoYW8gWXUsIGxpbnV4LWYyZnMtZGV2ZWwsIGxpbnV4LWtl cm5lbC4KUmV2aWV3ZWQtYnk6IENoYW8gWXUgaW4gZmluYWwgY29tbWl0LgoKIyMjIFN0ZXAgNC4z OiBCdWcgcmVwb3J0CioqUmVjb3JkOioqIE5vIGV4dGVybmFsIGJ1ZyByZXBvcnQgb3Igc3l6Ym90 IGxpbmsuIElzc3VlIGlkZW50aWZpZWQgdmlhCmNvZGUvc2VjdXJpdHkgcmV2aWV3IChUcmFpbCBv ZiBCaXRzKS4KCiMjIyBTdGVwIDQuNDogUmVsYXRlZCBwYXRjaGVzCioqUmVjb3JkOioqIFN0YW5k YWxvbmU7IG5vIHNlcmllcyBkZXBlbmRlbmNpZXMuCgojIyMgU3RlcCA0LjU6IFN0YWJsZSBtYWls aW5nIGxpc3QKKipSZWNvcmQ6KiogTm90IHNlYXJjaGVkIG9uIGxvcmUgc3RhYmxlIGxpc3Q7IG5v IHN0YWJsZSBkaXNjdXNzaW9uIGZvdW5kCmluIHBhdGNoIHRocmVhZC4KCi0tLQoKIyMgUEhBU0Ug NTogQ09ERSBTRU1BTlRJQyBBTkFMWVNJUwoKIyMjIFN0ZXAgNS4xOiBLZXkgZnVuY3Rpb25zCioq UmVjb3JkOioqIGBmMmZzX2FkZF9pbmxpbmVfZW50cmllcygpYCAobW9kaWZpZWQpOyBjYWxsZXJz IHVuY2hhbmdlZC4KCiMjIyBTdGVwIDUuMjogQ2FsbGVycwoqKlJlY29yZDoqKgotIGBmMmZzX21v dmVfcmVoYXNoZWRfZGlyZW50cygpYCDihpIgYGRvX2NvbnZlcnRfaW5saW5lX2RpcigpYCAod2hl bgogIGBpX2Rpcl9sZXZlbCAhPSAwYCkKLSBSZWFjaGFibGUgZnJvbSBgZjJmc190cnlfY29udmVy dF9pbmxpbmVfZGlyKClgOgogIC0gYGYyZnNfYWRkX2lubGluZV9lbnRyeSgpYCB3aGVuIGlubGlu ZSBkaXIgaXMgZnVsbAogIC0gYG5hbWVpLmNgIHJlbmFtZSBwYXRoIChgb2xkX2RpciA9PSBuZXdf ZGlyICYmICFuZXdfaW5vZGVgKQoKIyMjIFN0ZXAgNS4zOiBDYWxsZWVzCioqUmVjb3JkOioqIE9u IHN1Y2Nlc3MgcGF0aCBjYWxscyBgZjJmc19hZGRfcmVndWxhcl9lbnRyeSgpYCDihpIKYGYyZnNf dXBkYXRlX2RlbnRyeSgpYCDihpIgYG1lbWNweSguLi4sIG5hbWUtPmxlbilgLiBFcnJvciBwYXRo IHVzZXMKZXhpc3RpbmcgYHB1bmNoX2RlbnRyeV9wYWdlc2AgY2xlYW51cC4KCiMjIyBTdGVwIDUu NDogUmVhY2hhYmlsaXR5CioqUmVjb3JkOioqCi0gVHJpZ2dlcmVkIGR1cmluZyBub3JtYWwgZmls ZXN5c3RlbSBvcGVyYXRpb25zIChjcmVhdGUsIHJlbmFtZSkgb24KICBpbmxpbmUgZGlyZWN0b3Jp ZXMgdGhhdCBtdXN0IGNvbnZlcnQuCi0gQ29ycnVwdGVkIG9uLWRpc2sgbWV0YWRhdGEgaXMgdGhl IHRyaWdnZXI7IG1vdW50ICsgZGlyZWN0b3J5IG9wZXJhdGlvbgogIG9uIG1hbGljaW91cy9jb3Jy dXB0IGltYWdlIGlzIHRoZSBhdHRhY2sgc3VyZmFjZS4KLSBVc2Vyc3BhY2UtcmVhY2hhYmxlIHZp YSBWRlMgc3lzY2FsbHMgb24gbW91bnRlZCBGMkZTLgoKIyMjIFN0ZXAgNS41OiBTaW1pbGFyIHBh dHRlcm5zCioqUmVjb3JkOioqIGBkaXIuY2AgbGluZXMgMTAxM+KAkzEwMjMgdmFsaWRhdGUgdGhl IHNhbWUgZmllbGRzIGR1cmluZwpyZWFkZGlyLiBUaGlzIGNvbnZlcnNpb24gcGF0aCB3YXMgdGhl IG1pc3NpbmcgY2hlY2suCgotLS0KCiMjIFBIQVNFIDY6IENST1NTLVJFRkVSRU5DSU5HIEFHQUlO U1QgTE9DQUwgVFJFRQoKIyMjIFN0ZXAgNi4xOiBEb2VzIGJ1Z2d5IGNvZGUgZXhpc3Q/CioqUmVj b3JkOioqICoqWWVzLioqIGBmcy9mMmZzL2lubGluZS5jOjQ4NOKAkzUzNGAgbGFja3MgdmFsaWRh dGlvbjsgZml4Cm5vdCBwcmVzZW50IChgZ2l0IG1lcmdlLWJhc2UgLS1pcy1hbmNlc3RvciBjZmNk MGU0OSBIRUFEYCDihpIgZXhpdCAxKS4gQnVnCnByZXNlbnQgc2luY2UgMjAxNi4KCiMjIyBTdGVw IDYuMjogQmFja3BvcnQgY29tcGxpY2F0aW9ucwoqKlJlY29yZDoqKiBDbGVhbiBhcHBseSB2ZXJp ZmllZCAoYGdpdCBhcHBseSAtLWNoZWNrYCBleGl0IDApLiBObwpyZWZhY3RvcmluZyBjb25mbGlj dHMgZXhwZWN0ZWQuCgojIyMgU3RlcCA2LjM6IFJlbGF0ZWQgZml4ZXMgYWxyZWFkeSBwcmVzZW50 PwoqKlJlY29yZDoqKiBSZWFkZGlyIHZhbGlkYXRpb24gaW4gYGRpci5jYCBleGlzdHM7IHRoaXMg c3BlY2lmaWMKY29udmVyc2lvbi1wYXRoIGdhcCBkb2VzIG5vdC4gTm8gZHVwbGljYXRlIGZpeCBp biB0cmVlLgoKLS0tCgojIyBQSEFTRSA3OiBTVUJTWVNURU0gQU5EIE1BSU5UQUlORVIgQ09OVEVY VAoKIyMjIFN0ZXAgNy4xOiBTdWJzeXN0ZW0gY3JpdGljYWxpdHkKKipSZWNvcmQ6KiogKipmMmZz IGZpbGVzeXN0ZW0qKiDigJQgSU1QT1JUQU5ULiBGMkZTIGlzIHdpZGVseSB1c2VkCihBbmRyb2lk LCBlbWJlZGRlZCwgc2VydmVycykuIENvcnJ1cHRpb24gaGFuZGxpbmcgYWZmZWN0cyBkYXRhIGlu dGVncml0eQphbmQga2VybmVsIG1lbW9yeSBzYWZldHkuCgojIyMgU3RlcCA3LjI6IFN1YnN5c3Rl bSBhY3Rpdml0eQoqKlJlY29yZDoqKiBBY3RpdmVseSBtYWludGFpbmVkOyByZWNlbnQgc3RhYmxl LXJlbGV2YW50IGYyZnMgY29ycnVwdGlvbgpmaXhlcyBpbiB0aGlzIDYuMTgueSB0cmVlLgoKLS0t CgojIyBQSEFTRSA4OiBJTVBBQ1QgQU5EIFJJU0sgQVNTRVNTTUVOVAoKIyMjIFN0ZXAgOC4xOiBX aG8gaXMgYWZmZWN0ZWQKKipSZWNvcmQ6KiogVXNlcnMgb2YgRjJGUyB3aXRoIGlubGluZSBkaXJl Y3RvcmllcyAoY29tbW9uIGZvciBzbWFsbApkaXJlY3RvcmllcykuIEFueW9uZSBtb3VudGluZyBj b3JydXB0ZWQgb3IgYXR0YWNrZXItY3JhZnRlZCBGMkZTIGltYWdlcy4KCiMjIyBTdGVwIDguMjog VHJpZ2dlciBjb25kaXRpb25zCioqUmVjb3JkOioqCi0gQ29ycnVwdGVkIGlubGluZSBkZW50cnkg YG5hbWVfbGVuYCBvciBzbG90IGxheW91dCBvbiBkaXNrCi0gRGlyZWN0b3J5IG9wZXJhdGlvbiBm b3JjaW5nIGlubGluZeKGknJlZ3VsYXIgY29udmVyc2lvbiAoZGlyIGZ1bGwsCiAgcmVuYW1lKQot IFVucHJpdmlsZWdlZCB1c2VyIGNhbiB0cmlnZ2VyIGlmIHRoZXkgY2FuIG1vdW50L2FjY2VzcyB0 aGUgZmlsZXN5c3RlbQogIGltYWdlCgojIyMgU3RlcCA4LjM6IEZhaWx1cmUgbW9kZSBzZXZlcml0 eQoqKlJlY29yZDoqKiBLZXJuZWwgb3V0LW9mLWJvdW5kcyByZWFkIGZyb20gaW5saW5lIGRlbnRy eSBhcmVhIGR1cmluZwpgbWVtY3B5YC4gU2V2ZXJpdHk6ICoqSElHSCoqIChtZW1vcnkgc2FmZXR5 OyBwb3RlbnRpYWwgaW5mbyBsZWFrIG9yCmNyYXNoOyBjb3JydXB0ZWQtRlMgY2xhc3MgYnVnIGNv bnNpc3RlbnQgd2l0aCBvdGhlciBmMmZzIHN0YWJsZQpiYWNrcG9ydHMpLgoKIyMjIFN0ZXAgOC40 OiBSaXNrLWJlbmVmaXQKKipSZWNvcmQ6KioKLSAqKkJlbmVmaXQ6KiogSElHSCDigJQgY2xvc2Vz IE9PQiByZWFkIG9uIHJlYWxpc3RpYyBjb3JydXB0aW9uL2F0dGFjawogIHBhdGgKLSAqKlJpc2s6 KiogVkVSWSBMT1cg4oCUIDcgbGluZXMsIG1pcnJvcnMgZXhpc3RpbmcgcGF0dGVybiwgcmV2aWV3 ZWQgYnkKICBtYWludGFpbmVyCi0gKipSYXRpbzoqKiBTdHJvbmdseSBmYXZvcnMgYmFja3BvcnQK Ci0tLQoKIyMgUEhBU0UgOTogRklOQUwgU1lOVEhFU0lTCgojIyMgU3RlcCA5LjE6IEV2aWRlbmNl IHN1bW1hcnkKCioqRk9SIGJhY2twb3J0OioqCi0gUmVhbCBidWc6IE9PQiByZWFkIG9uIGNvcnJ1 cHRlZCBpbmxpbmUgZGVudHJ5IGR1cmluZyBjb252ZXJzaW9uCi0gSW1wb3J0YW50OiBrZXJuZWwg bWVtb3J5IHNhZmV0eSBvbiB1c2VyLXJlYWNoYWJsZSBWRlMgcGF0aAotIFNtYWxsLCBzdXJnaWNh bCwgbWFpbnRhaW5lci1yZXZpZXdlZAotIEJ1ZyBpbiB0cmVlIHNpbmNlIDIwMTY7IGFwcGxpZXMg Y2xlYW5seSB0byA2LjE4LjQ0Ci0gQ29uc2lzdGVudCB3aXRoIGV4aXN0aW5nIGYyZnMgY29ycnVw dGlvbi12YWxpZGF0aW9uIHN0YWJsZSBiYWNrcG9ydHMKLSBNYXRjaGVzIHZhbGlkYXRpb24gYWxy ZWFkeSBpbiBgZGlyLmNgIHJlYWRkaXIgcGF0aAoKKipBR0FJTlNUIGJhY2twb3J0OioqCi0gTm8g dXNlciBjcmFzaCByZXBvcnRzIG9yIHN5emJvdCByZXByb2R1Y3Rpb24KLSBSZXF1aXJlcyBjb3Jy dXB0ZWQvbWFsaWNpb3VzIGZpbGVzeXN0ZW0gaW1hZ2UgKG5vdCBhIHJlZ3Jlc3Npb24gaW4KICBu b3JtYWwgb3BlcmF0aW9uKQotIE5vIGV4cGxpY2l0IHN0YWJsZSBub21pbmF0aW9uIGluIG1haWxp bmcgbGlzdCB0aHJlYWQKCioqVW5yZXNvbHZlZDoqKiBObyBydW50aW1lIGNyYXNoIHRyYWNlIG9y IENWRSBhc3NpZ25tZW50IChub3QgbmVlZGVkIGZvcgpzdGFibGUgZGVjaXNpb24pLgoKIyMjIFN0 ZXAgOS4yOiBTdGFibGUgcnVsZXMgY2hlY2tsaXN0CjEuIE9idmlvdXNseSBjb3JyZWN0IGFuZCB0 ZXN0ZWQ/ICoqUEFTUyoqIOKAlCBsb2dpYyBtaXJyb3JzIGBkaXIuY2A7CiAgIFJldmlld2VkLWJ5 IG1haW50YWluZXIKMi4gRml4ZXMgcmVhbCBidWc/ICoqUEFTUyoqIOKAlCBPT0IgcmVhZCBvbiBj b3JydXB0ZWQgbWV0YWRhdGEKMy4gSW1wb3J0YW50IGlzc3VlPyAqKlBBU1MqKiDigJQgbWVtb3J5 IHNhZmV0eSAvIGNvcnJ1cHRpb24gaGFuZGxpbmcKICAgKEhJR0gpCjQuIFNtYWxsIGFuZCBjb250 YWluZWQ/ICoqUEFTUyoqIOKAlCA3IGxpbmVzLCAxIGZpbGUKNS4gTm8gbmV3IGZlYXR1cmVzL0FQ SXM/ICoqUEFTUyoqCjYuIENhbiBhcHBseSB0byBsb2NhbCB0cmVlPyAqKlBBU1MqKiDigJQgY2xl YW4gYXBwbHkgdmVyaWZpZWQKCiMjIyBTdGVwIDkuMzogRXhjZXB0aW9uIGNhdGVnb3JpZXMKKipS ZWNvcmQ6KiogTm9uZSAobm90IGRldmljZSBJRCwgcXVpcmssIERULCBidWlsZCwgb3IgZG9jcyku IFN0YW5kYXJkCmNvcnJ1cHRpb24tdmFsaWRhdGlvbiBidWcgZml4LgoKIyMjIFN0ZXAgOS40OiBE ZWNpc2lvbiByYXRpb25hbGUKRm9yIExpbnV4ICoqNi4xOC40NCoqLCB0aGUgdnVsbmVyYWJsZSBj b2RlIGlzIHByZXNlbnQgYW5kIHRoZSBmaXggaXMKYWJzZW50LiBUaGUgcGF0Y2ggY2xvc2VzIGEg dmVyaWZpZWQgb3V0LW9mLWJvdW5kcyByZWFkIGluIGlubGluZSBkZW50cnkKY29udmVyc2lvbiDi gJQgYSBwYXRoIHJlYWNoYWJsZSBmcm9tIG5vcm1hbCBkaXJlY3Rvcnkgb3BlcmF0aW9ucyBvbgpj b3JydXB0ZWQgRjJGUyBpbWFnZXMuIEl0IGlzIG1pbmltYWwsIG1haW50YWluZXItcmV2aWV3ZWQs IG1hdGNoZXMKZXhpc3RpbmcgZjJmcyB2YWxpZGF0aW9uIHBhdHRlcm5zLCBhbmQgYXBwbGllcyBj bGVhbmx5LiBUaGlzIGlzCmFwcHJvcHJpYXRlIHN0YWJsZSBtYXRlcmlhbC4KCi0tLQoKIyMgVmVy aWZpY2F0aW9uCgotIFtQaGFzZSAxXSBQYXJzZWQgY29tbWl0IG1lc3NhZ2UgYW5kIHRhZ3MgZnJv bSBwcm92aWRlZCB0ZXh0IGFuZCBgZ2l0CiAgc2hvdyBjZmNkMGU0OWAKLSBbUGhhc2UgMV0gQ29u ZmlybWVkIFJldmlld2VkLWJ5OiBDaGFvIFl1OyBubyBSZXBvcnRlZC1ieS9zeXpib3QvRml4ZXMK ICB0YWdzCi0gW1BoYXNlIDJdIFJlYWQgZGlmZjogKzcgbGluZXMgdmFsaWRhdGlvbiArIGJsYW5r IGxpbmUgaW4KICBgZjJmc19hZGRfaW5saW5lX2VudHJpZXMoKWAKLSBbUGhhc2UgMl0gUmVhZCBg ZjJmc191cGRhdGVfZGVudHJ5KClgIGF0IGBkaXIuYzo2NjVgIOKAlCBgbWVtY3B5KC4uLiwKICBu YW1lLT5sZW4pYCBjb25maXJtcyBPT0IgcmVhZCBtZWNoYW5pc20KLSBbUGhhc2UgMl0gUmVhZCBg RjJGU19OQU1FX0xFTmAgKDI1NSkgYW5kIGBHRVRfREVOVFJZX1NMT1RTYCBpbgogIGBpbmNsdWRl L2xpbnV4L2YyZnNfZnMuaGAKLSBbUGhhc2UgM10gYGdpdCBibGFtZWA6IGZ1bmN0aW9uIGZyb20g MjAxNiAoYDY3NWYxMGJkZTZjYzNgKQotIFtQaGFzZSAzXSBgZ2l0IGxvZyAtLW9uZWxpbmUgLTIw IC0tIGZzL2YyZnMvaW5saW5lLmNgIGFuZCBgLTIwIC0tCiAgZnMvZjJmcy9gCi0gW1BoYXNlIDNd IGBnaXQgYXBwbHkgLS1jaGVja2Agb24gcGF0Y2g6IGNsZWFuIGFwcGx5IChleGl0IDApCi0gW1Bo YXNlIDRdIGBiNCBkaWcgLWMgY2ZjZDBlNDlgOiBsb3JlIFVSTCBmb3VuZAotIFtQaGFzZSA0XSBg YjQgZGlnIC1hYDogdjEgb25seQotIFtQaGFzZSA0XSBgYjQgZGlnIC13YDogSmFlZ2V1ayBLaW0s IENoYW8gWXUsIGxpbnV4LWYyZnMtZGV2ZWwgQ0MnZAotIFtQaGFzZSA0XSBEb3dubG9hZGVkIG1i b3g6IHBhdGNoIG9ubHksIG5vIHJldmlldyByZXBsaWVzIG9yIHN0YWJsZQogIG5vbWluYXRpb24K LSBbUGhhc2UgNV0gVHJhY2VkIGNhbGxlcnM6IGBmMmZzX21vdmVfcmVoYXNoZWRfZGlyZW50c2Ag 4oaSCiAgYGRvX2NvbnZlcnRfaW5saW5lX2RpcmAg4oaSIGBmMmZzX3RyeV9jb252ZXJ0X2lubGlu ZV9kaXJgCi0gW1BoYXNlIDVdIFJlYWQgYG5hbWVpLmM6OTM4YCByZW5hbWUgdHJpZ2dlciBwYXRo Ci0gW1BoYXNlIDVdIEZvdW5kIHNpbWlsYXIgdmFsaWRhdGlvbiBpbiBgZGlyLmM6MTAxMy0xMDIz YAotIFtQaGFzZSA2XSBgZ2l0IGRlc2NyaWJlIEhFQURgOiA2LjE4LjQ0Ci0gW1BoYXNlIDZdIGBn aXQgbWVyZ2UtYmFzZSAtLWlzLWFuY2VzdG9yIGNmY2QwZTQ5IEhFQURgOiBleGl0IDEgKGZpeAog IE5PVCBpbiB0cmVlKQotIFtQaGFzZSA2XSBSZWFkIGN1cnJlbnQgYGlubGluZS5jOjQ4NC01MzRg OiBidWdneSBjb2RlIGNvbmZpcm1lZAogIHByZXNlbnQKLSBbUGhhc2UgNl0gYGdyZXAgdmFsaWRh dGUgaW5saW5lIGRlbnRyeWA6IG5vIGV4aXN0aW5nIGZpeCBpbiB0cmVlCi0gW1BoYXNlIDhdIENv bmZpcm1lZCBgRUZTQ09SUlVQVEVEYCBpcyBzdGFuZGFyZCBmMmZzIGNvcnJ1cHRpb24gcmV0dXJu CiAgY29kZQoKKipZRVMqKioqVmVyZGljdDogWUVTKiog4oCUIGJhY2twb3J0IHRvIHRoaXMgdHJl ZSAoTGludXggNi4xOC40NCkuCgpUaGUgZml4IGFkZHMgYSA3LWxpbmUgYm91bmRzIGNoZWNrIGlu IGBmMmZzX2FkZF9pbmxpbmVfZW50cmllcygpYCBiZWZvcmUKaW5saW5lIGRlbnRyeSBjb252ZXJz aW9uLiBXaXRob3V0IGl0LCBhIGNvcnJ1cHRlZCBGMkZTIGltYWdlIGNhbiBtYWtlCnRoZSBrZXJu ZWwgcmVhZCBwYXN0IGlubGluZSBmaWxlbmFtZSBzdG9yYWdlIGR1cmluZyBgbWVtY3B5YCBpbgpg ZjJmc191cGRhdGVfZGVudHJ5KClgLiBUaGUgYnVnIGhhcyBiZWVuIHByZXNlbnQgc2luY2UgMjAx NiwgdGhlIHBhdGNoCmFwcGxpZXMgY2xlYW5seSwgYW5kIGl0IG1hdGNoZXMgdmFsaWRhdGlvbiBh bHJlYWR5IGRvbmUgaW4gdGhlIGBkaXIuY2AKcmVhZGRpciBwYXRoLiBDaGFvIFl1IHJldmlld2Vk IGl0LgoKIGZzL2YyZnMvaW5saW5lLmMgfCA3ICsrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA3IGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9mcy9mMmZzL2lubGluZS5jIGIvZnMvZjJmcy9pbmxp bmUuYwppbmRleCBlYTU2ODA0MDZlMjNkLi5lMmM4ZTVkYjI1YTJhIDEwMDY0NAotLS0gYS9mcy9m MmZzL2lubGluZS5jCisrKyBiL2ZzL2YyZnMvaW5saW5lLmMKQEAgLTUwNiw2ICs1MDYsMTIgQEAg c3RhdGljIGludCBmMmZzX2FkZF9pbmxpbmVfZW50cmllcyhzdHJ1Y3QgaW5vZGUgKmRpciwgdm9p ZCAqaW5saW5lX2RlbnRyeSkKIAkJCWJpdF9wb3MrKzsKIAkJCWNvbnRpbnVlOwogCQl9CisJCWlm ICh1bmxpa2VseShsZTE2X3RvX2NwdShkZS0+bmFtZV9sZW4pID4gRjJGU19OQU1FX0xFTiB8fAor CQkJICAgICBiaXRfcG9zICsgR0VUX0RFTlRSWV9TTE9UUyhsZTE2X3RvX2NwdShkZS0+bmFtZV9s ZW4pKSA+CisJCQkgICAgIGQubWF4KSkgeworCQkJZXJyID0gLUVGU0NPUlJVUFRFRDsKKwkJCWdv dG8gcHVuY2hfZGVudHJ5X3BhZ2VzOworCQl9CiAKIAkJLyoKIAkJICogV2Ugb25seSBuZWVkIHRo ZSBkaXNrX25hbWUgYW5kIGhhc2ggdG8gbW92ZSB0aGUgZGVudHJ5LgpAQCAtNTI2LDYgKzUzMiw3 IEBAIHN0YXRpYyBpbnQgZjJmc19hZGRfaW5saW5lX2VudHJpZXMoc3RydWN0IGlub2RlICpkaXIs IHZvaWQgKmlubGluZV9kZW50cnkpCiAJCWJpdF9wb3MgKz0gR0VUX0RFTlRSWV9TTE9UUyhsZTE2 X3RvX2NwdShkZS0+bmFtZV9sZW4pKTsKIAl9CiAJcmV0dXJuIDA7CisKIHB1bmNoX2RlbnRyeV9w YWdlczoKIAl0cnVuY2F0ZV9pbm9kZV9wYWdlcygmZGlyLT5pX2RhdGEsIDApOwogCWYyZnNfdHJ1 bmNhdGVfYmxvY2tzKGRpciwgMCwgZmFsc2UpOwotLSAKMi41My4wCgoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGlu ZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlz dHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2xpbnV4LWYyZnMtZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 9BCC95A3132; Mon, 31 Aug 2026 13:52:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788184330; cv=none; b=LNduECmNMvXQ9WP1MV272mBnQ1vHS5qrvmilDftr09GaP6NdkhKrzAR5p+w2EGjN7si7/7+zg4fQpfoqyRcAWNXQJo+Vbpd+H6y4Itz9JIy8u4Rdag5xPaTXHePGr1onJkL3ae6QplcQoBHAmzxCf/s/JfQ4s1wFA0GWpnkb6I8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788184330; c=relaxed/simple; bh=PhNWb4A1YtuXaqB59mJJqXRhd4QjjVHMWQqM4OLs7/k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=NvFUCMeR2e7Hrig7FjKp/T3sdb/a5803r3R42Ba7nkn8812OT1ycDhHD3xPdQsc32ytXntJAcpFMMaeR+Nx9npdsFf59JVnBXHrYQT3JA1RqEW9y5NqwMHu/pA3FK6BN2xWpYYnla4Gi2BpySwoDwS97l60IxOC7l0x2FBfVCJs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=HcMMSmUy; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="HcMMSmUy" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6DD8A1F00ADE; Mon, 31 Aug 2026 13:52:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1788184328; bh=/BHNSQercJ1KBWP4/OvCJJfpKEPic8I6aXh57K7KDh0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=HcMMSmUyuH84xJ0QIKYlTB9TpKLrmwf14PZ+CPdD2A/LeuZPMC29UBErTVHkSy7Qt EbhT5H3xAcPXwnV9MewxyroB9mAsEbq/SmnCf7YUq/97gpw9rzP6WpllfX9qun04GA eXWpLVrNk2rpEIPsO2SXK5ggURmDkBwhuwaI00lfdSccONQmPaK259K+yO/WzAWaBV sY3M51TKWWPyEEmPjpe+Fiq8i5svY4p+6k0R13aJAGY6iQfEn0iGTaGZghNdMjmbsj NlPrbGBOLweOL1W/cL1xoh0zHyRnkoxWI6k0rVk5Z4gRv8r8vlSc7t8y5Xw51HCmL9 P1kXvXrDgFQwQ== From: Sasha Levin To: patches@lists.linux.dev, stable@vger.kernel.org Cc: Samuel Moelius , Samuel Moelius , Chao Yu , Jaegeuk Kim , Sasha Levin , linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: [PATCH AUTOSEL 6.18-5.10] f2fs: validate inline dentry name lengths before conversion Date: Mon, 31 Aug 2026 09:30:56 -0400 Message-ID: <20260831133314.4125787-628-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260831133314.4125787-1-sashal@kernel.org> References: <20260831133314.4125787-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.18.48 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Samuel Moelius [ Upstream commit cfcd0e49a178b3dac2c0ece656079081dbf5da74 ] Inline dentry conversion copies names out of the inline dentry area before checking that each recorded name length fits in the available filename slots. A corrupted image can therefore make the conversion path read past the inline filename storage while building the regular dentry block. Validate each inline dentry name length against the inline filename area before copying it. Assisted-by: Codex:gpt-5.5-cyber-preview Signed-off-by: Samuel Moelius Reviewed-by: Chao Yu Signed-off-by: Jaegeuk Kim Signed-off-by: Sasha Levin --- LLM Generated explanations, may be completely bogus: # Stable Backport Analysis: `f2fs: validate inline dentry name lengths before conversion` **Local tree:** Linux **6.18.44** (`v6.18.44-1-g2736c32da98b9`) **Commit under review:** `cfcd0e49a178b3dac2c0ece656079081dbf5da74` (mainline, **not** in this tree) --- ## PHASE 1: COMMIT MESSAGE FORENSICS ### Step 1.1: Parse the subject line **Record:** `[f2fs] [validate] validate inline dentry name lengths before conversion` — defensive validation on the inline-to-regular dentry conversion path. ### Step 1.2: Parse all commit message tags **Record:** - **Fixes:** — not present (expected for manual review) - **Reported-by:** — none - **Tested-by:** — none - **Reviewed-by:** Chao Yu `` (f2fs maintainer) - **Acked-by:** — none - **Link:** — none - **Cc: stable@vger.kernel.org:** — absent (not a negative signal) - **Signed-off-by:** Samuel Moelius (author), Jaegeuk Kim (f2fs maintainer merge) - **Assisted-by:** Codex:gpt-5.5-cyber-preview - **Notable:** Reviewed by subsystem maintainer; no syzbot report; security-research origin (Trail of Bits) ### Step 1.3: Analyze commit body **Record:** - **Bug:** Inline dentry conversion uses `de->name_len` to set `fname.disk_name.len` and point at `d.filename[bit_pos]` before verifying the length fits in the inline filename area. - **Symptom:** On a corrupted F2FS image, conversion can read past inline filename storage while building regular dentry blocks. - **Root cause:** Missing bounds check on `name_len` and slot count vs. `d.max` in `f2fs_add_inline_entries()`. - **Version info:** None in commit message. ### Step 1.4: Detect hidden bug fixes **Record:** Not disguised — explicitly a corruption-handling / memory- safety fix. Validates `name_len <= F2FS_NAME_LEN` and `bit_pos + GET_DENTRY_SLOTS(name_len) <= d.max` before use. --- ## PHASE 2: DIFF ANALYSIS ### Step 2.1: Inventory the changes **Record:** - **Files:** `fs/f2fs/inline.c` (+7 / −0) - **Functions:** `f2fs_add_inline_entries()` only - **Scope:** Single-file surgical fix ### Step 2.2: Code flow change **Record:** - **Hunk 1 (validation):** Before setting `fname.disk_name` from inline dentry metadata, check `name_len` and slot span. On failure: `err = -EFSCORRUPTED; goto punch_dentry_pages`. - **Hunk 2 (blank line):** Cosmetic before `punch_dentry_pages` label. - **Before:** Corrupted `name_len` propagated into `f2fs_add_regular_entry()` → `f2fs_update_dentry()` → `memcpy(..., name->len)`. - **After:** Corruption detected early; partial conversion cleaned up via existing error path. ### Step 2.3: Bug mechanism **Record:** - **Category:** Buffer over-read / out-of-bounds read (memory safety on corrupted media) - **Mechanism:** `f2fs_update_dentry()` does `memcpy(d->filename[bit_pos], name->name, name->len)`. With inflated `name_len`, the source pointer `d.filename[bit_pos]` in the inline area is read beyond allocated inline filename storage. ### Step 2.4: Fix quality **Record:** - Mirrors existing validation in `dir.c` readdir (lines 1013–1023). - Uses `goto punch_dentry_pages` (better than v1's bare `return -EFSCORRUPTED`) to truncate partial work. - Minimal, low regression risk; `-EFSCORRUPTED` is standard f2fs corruption handling. --- ## PHASE 3: GIT HISTORY INVESTIGATION ### Step 3.1: Blame changed lines **Record:** - `f2fs_add_inline_entries()` introduced in `675f10bde6cc3` (Feb 2016, "f2fs: fix to convert inline directory correctly"). - Bug present since inline dentry conversion was added; long-lived in 6.18.y. ### Step 3.2: Follow Fixes: tag **Record:** N/A — no `Fixes:` tag. ### Step 3.3: File history for related changes **Record:** - Recent f2fs corruption fixes in this tree: `8aad54746c251` (orphan inode count), `ff83de56882cb` (ACL sizes), `ec9f79c8d5b28` (xattr entries), `4ce2d52f680c1` (inline xattr bounds). - Pattern: f2fs stable tree regularly backports corruption-validation fixes. - Standalone single patch; not part of a series. ### Step 3.4: Author's other commits **Record:** Samuel Moelius has no other f2fs commits in this tree. Security researcher submission, reviewed by maintainer. ### Step 3.5: Prerequisites **Record:** No dependencies. Uses `F2FS_NAME_LEN`, `GET_DENTRY_SLOTS`, `d.max` — all present in 6.18.44. `git apply --check` succeeds cleanly. --- ## PHASE 4: MAILING LIST AND EXTERNAL RESEARCH ### Step 4.1: Original patch discussion **Record:** - **b4 dig URL:** https://patch.msgid.link/20260603151141.15635-1- samuel.moelius@trailofbits.com - **Series revisions:** v1 only (`b4 dig -a`) - **Thread content:** Patch submission only; no replies, no NAKs, no explicit stable nomination in thread ### Step 4.2: Reviewers **Record:** CC'd: Jaegeuk Kim, Chao Yu, linux-f2fs-devel, linux-kernel. Reviewed-by: Chao Yu in final commit. ### Step 4.3: Bug report **Record:** No external bug report or syzbot link. Issue identified via code/security review (Trail of Bits). ### Step 4.4: Related patches **Record:** Standalone; no series dependencies. ### Step 4.5: Stable mailing list **Record:** Not searched on lore stable list; no stable discussion found in patch thread. --- ## PHASE 5: CODE SEMANTIC ANALYSIS ### Step 5.1: Key functions **Record:** `f2fs_add_inline_entries()` (modified); callers unchanged. ### Step 5.2: Callers **Record:** - `f2fs_move_rehashed_dirents()` → `do_convert_inline_dir()` (when `i_dir_level != 0`) - Reachable from `f2fs_try_convert_inline_dir()`: - `f2fs_add_inline_entry()` when inline dir is full - `namei.c` rename path (`old_dir == new_dir && !new_inode`) ### Step 5.3: Callees **Record:** On success path calls `f2fs_add_regular_entry()` → `f2fs_update_dentry()` → `memcpy(..., name->len)`. Error path uses existing `punch_dentry_pages` cleanup. ### Step 5.4: Reachability **Record:** - Triggered during normal filesystem operations (create, rename) on inline directories that must convert. - Corrupted on-disk metadata is the trigger; mount + directory operation on malicious/corrupt image is the attack surface. - Userspace-reachable via VFS syscalls on mounted F2FS. ### Step 5.5: Similar patterns **Record:** `dir.c` lines 1013–1023 validate the same fields during readdir. This conversion path was the missing check. --- ## PHASE 6: CROSS-REFERENCING AGAINST LOCAL TREE ### Step 6.1: Does buggy code exist? **Record:** **Yes.** `fs/f2fs/inline.c:484–534` lacks validation; fix not present (`git merge-base --is-ancestor cfcd0e49 HEAD` → exit 1). Bug present since 2016. ### Step 6.2: Backport complications **Record:** Clean apply verified (`git apply --check` exit 0). No refactoring conflicts expected. ### Step 6.3: Related fixes already present? **Record:** Readdir validation in `dir.c` exists; this specific conversion-path gap does not. No duplicate fix in tree. --- ## PHASE 7: SUBSYSTEM AND MAINTAINER CONTEXT ### Step 7.1: Subsystem criticality **Record:** **f2fs filesystem** — IMPORTANT. F2FS is widely used (Android, embedded, servers). Corruption handling affects data integrity and kernel memory safety. ### Step 7.2: Subsystem activity **Record:** Actively maintained; recent stable-relevant f2fs corruption fixes in this 6.18.y tree. --- ## PHASE 8: IMPACT AND RISK ASSESSMENT ### Step 8.1: Who is affected **Record:** Users of F2FS with inline directories (common for small directories). Anyone mounting corrupted or attacker-crafted F2FS images. ### Step 8.2: Trigger conditions **Record:** - Corrupted inline dentry `name_len` or slot layout on disk - Directory operation forcing inline→regular conversion (dir full, rename) - Unprivileged user can trigger if they can mount/access the filesystem image ### Step 8.3: Failure mode severity **Record:** Kernel out-of-bounds read from inline dentry area during `memcpy`. Severity: **HIGH** (memory safety; potential info leak or crash; corrupted-FS class bug consistent with other f2fs stable backports). ### Step 8.4: Risk-benefit **Record:** - **Benefit:** HIGH — closes OOB read on realistic corruption/attack path - **Risk:** VERY LOW — 7 lines, mirrors existing pattern, reviewed by maintainer - **Ratio:** Strongly favors backport --- ## PHASE 9: FINAL SYNTHESIS ### Step 9.1: Evidence summary **FOR backport:** - Real bug: OOB read on corrupted inline dentry during conversion - Important: kernel memory safety on user-reachable VFS path - Small, surgical, maintainer-reviewed - Bug in tree since 2016; applies cleanly to 6.18.44 - Consistent with existing f2fs corruption-validation stable backports - Matches validation already in `dir.c` readdir path **AGAINST backport:** - No user crash reports or syzbot reproduction - Requires corrupted/malicious filesystem image (not a regression in normal operation) - No explicit stable nomination in mailing list thread **Unresolved:** No runtime crash trace or CVE assignment (not needed for stable decision). ### Step 9.2: Stable rules checklist 1. Obviously correct and tested? **PASS** — logic mirrors `dir.c`; Reviewed-by maintainer 2. Fixes real bug? **PASS** — OOB read on corrupted metadata 3. Important issue? **PASS** — memory safety / corruption handling (HIGH) 4. Small and contained? **PASS** — 7 lines, 1 file 5. No new features/APIs? **PASS** 6. Can apply to local tree? **PASS** — clean apply verified ### Step 9.3: Exception categories **Record:** None (not device ID, quirk, DT, build, or docs). Standard corruption-validation bug fix. ### Step 9.4: Decision rationale For Linux **6.18.44**, the vulnerable code is present and the fix is absent. The patch closes a verified out-of-bounds read in inline dentry conversion — a path reachable from normal directory operations on corrupted F2FS images. It is minimal, maintainer-reviewed, matches existing f2fs validation patterns, and applies cleanly. This is appropriate stable material. --- ## Verification - [Phase 1] Parsed commit message and tags from provided text and `git show cfcd0e49` - [Phase 1] Confirmed Reviewed-by: Chao Yu; no Reported-by/syzbot/Fixes tags - [Phase 2] Read diff: +7 lines validation + blank line in `f2fs_add_inline_entries()` - [Phase 2] Read `f2fs_update_dentry()` at `dir.c:665` — `memcpy(..., name->len)` confirms OOB read mechanism - [Phase 2] Read `F2FS_NAME_LEN` (255) and `GET_DENTRY_SLOTS` in `include/linux/f2fs_fs.h` - [Phase 3] `git blame`: function from 2016 (`675f10bde6cc3`) - [Phase 3] `git log --oneline -20 -- fs/f2fs/inline.c` and `-20 -- fs/f2fs/` - [Phase 3] `git apply --check` on patch: clean apply (exit 0) - [Phase 4] `b4 dig -c cfcd0e49`: lore URL found - [Phase 4] `b4 dig -a`: v1 only - [Phase 4] `b4 dig -w`: Jaegeuk Kim, Chao Yu, linux-f2fs-devel CC'd - [Phase 4] Downloaded mbox: patch only, no review replies or stable nomination - [Phase 5] Traced callers: `f2fs_move_rehashed_dirents` → `do_convert_inline_dir` → `f2fs_try_convert_inline_dir` - [Phase 5] Read `namei.c:938` rename trigger path - [Phase 5] Found similar validation in `dir.c:1013-1023` - [Phase 6] `git describe HEAD`: 6.18.44 - [Phase 6] `git merge-base --is-ancestor cfcd0e49 HEAD`: exit 1 (fix NOT in tree) - [Phase 6] Read current `inline.c:484-534`: buggy code confirmed present - [Phase 6] `grep validate inline dentry`: no existing fix in tree - [Phase 8] Confirmed `EFSCORRUPTED` is standard f2fs corruption return code **YES****Verdict: YES** — backport to this tree (Linux 6.18.44). The fix adds a 7-line bounds check in `f2fs_add_inline_entries()` before inline dentry conversion. Without it, a corrupted F2FS image can make the kernel read past inline filename storage during `memcpy` in `f2fs_update_dentry()`. The bug has been present since 2016, the patch applies cleanly, and it matches validation already done in the `dir.c` readdir path. Chao Yu reviewed it. fs/f2fs/inline.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c index ea5680406e23d..e2c8e5db25a2a 100644 --- a/fs/f2fs/inline.c +++ b/fs/f2fs/inline.c @@ -506,6 +506,12 @@ static int f2fs_add_inline_entries(struct inode *dir, void *inline_dentry) bit_pos++; continue; } + if (unlikely(le16_to_cpu(de->name_len) > F2FS_NAME_LEN || + bit_pos + GET_DENTRY_SLOTS(le16_to_cpu(de->name_len)) > + d.max)) { + err = -EFSCORRUPTED; + goto punch_dentry_pages; + } /* * We only need the disk_name and hash to move the dentry. @@ -526,6 +532,7 @@ static int f2fs_add_inline_entries(struct inode *dir, void *inline_dentry) bit_pos += GET_DENTRY_SLOTS(le16_to_cpu(de->name_len)); } return 0; + punch_dentry_pages: truncate_inode_pages(&dir->i_data, 0); f2fs_truncate_blocks(dir, 0, false); -- 2.53.0