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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 D4CB9C433FE for ; Sat, 8 Oct 2022 05:55:48 +0000 (UTC) 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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=FFuNNW9Gol6wgcplkpz1Loc6ZNSbTUOUuslYeSYMJ14=; b=hQKiMkCORLcnSl 6mKNfXDmqP+XDEXzCgJQdRDVb9DawZfu/tqGjdZSig/6/fPOJT8PBtKRVglP5sdIV5Avkz81usNlH 2aRkMTK7LdnWqexmumLXihtWdAWaw95VaJ3SZTX9awAr/pf8Taa1zVXBpirXJupUPRpFsNTI0/nJ0 86nDyjd1rtLjU8qlLQK7OiBlMYe96qwOQT0eHapOuBimy/DMC9FDksfFMPhNgMNIkMNo2oxRe0/Hr 6S7rAOVVo+vmMxBlRZkCZpdnoX4UibvEgezG3+jhA7iKgUDTr6W7yqvIcKCy2KBaqpwqlMfIrgKoX qaOdXS1+oJAPyzQ/QJ/A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oh2oF-00BzPo-1X; Sat, 08 Oct 2022 05:55:39 +0000 Received: from ams.source.kernel.org ([145.40.68.75]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oh2o4-00BzFx-QB; Sat, 08 Oct 2022 05:55:36 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 0799AB80B83; Sat, 8 Oct 2022 05:55:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A7EBEC433D6; Sat, 8 Oct 2022 05:55:17 +0000 (UTC) Authentication-Results: smtp.kernel.org; dkim=pass (1024-bit key) header.d=zx2c4.com header.i=@zx2c4.com header.b="NvfH3O5J" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zx2c4.com; s=20210105; t=1665208515; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EwnG+oitgKtCTR1+BTew+cPVhVUDgHT5O1bNmXfvLoA=; b=NvfH3O5JlNmQ/TEVsqAYdiL41ZX6Hb5vzS3b1lYoccq4WEX6wMKboHFytUsidkE+lkyWgq JqFN7u8hnKXMtB0eppjaicAqXFHI88IRcOLyxI1R/4hN0R0R71C+On6yYjkf9Nb18EBVpy OSu4MEE6l8YMnlIH3Z1a2F40ZUW1D2c= Received: by mail.zx2c4.com (ZX2C4 Mail Server) with ESMTPSA id 8372da30 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Sat, 8 Oct 2022 05:55:14 +0000 (UTC) From: "Jason A. Donenfeld" To: linux-kernel@vger.kernel.org, patches@lists.linux.dev Cc: "Jason A. Donenfeld" , Andreas Noever , Andrew Morton , Andy Shevchenko , Borislav Petkov , Catalin Marinas , =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= , Christoph Hellwig , Christophe Leroy , Daniel Borkmann , Dave Airlie , Dave Hansen , "David S . Miller" , Eric Dumazet , Florian Westphal , Greg Kroah-Hartman , "H . Peter Anvin" , Heiko Carstens , Helge Deller , Herbert Xu , Huacai Chen , Hugh Dickins , Jakub Kicinski , "James E . J . Bottomley" , Jan Kara , Jason Gunthorpe , Jens Axboe , Johannes Berg , Jonathan Corbet , Jozsef Kadlecsik , KP Singh , Kees Cook , Marco Elver , Mauro Carvalho Chehab , Michael Ellerman , Pablo Neira Ayuso , Paolo Abeni , Peter Zijlstra , Richard Weinberger , Russell King , Theodore Ts'o , Thomas Bogendoerfer , Thomas Gleixner , Thomas Graf , Ulf Hansson , Vignesh Raghavendra , WANG Xuerui , Will Deacon , Yury Norov , dri-devel@lists.freedesktop.org, kasan-dev@googlegroups.com, kernel-janitors@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-block@vger.kernel.org, linux-crypto@vger.kernel.org, linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-media@vger.kernel.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-mmc@vger.kernel.org, linux-mtd@lists.infradead.org, linux-nvme@lists.infradead.org, linux-parisc@vger.kernel.org, linux-rdma@vger.kernel.org, linux-s390@vger.kernel.org, linux-um@lists.infradead.org, linux-usb@vger.kernel.org, linux-wireless@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, netdev@vger.kernel.org, sparclinux@vger.kernel.org, x86@kernel.org, Jan Kara , "Darrick J . Wong" Subject: [PATCH v5 1/7] treewide: use prandom_u32_max() when possible, part 1 Date: Fri, 7 Oct 2022 23:53:53 -0600 Message-Id: <20221008055359.286426-2-Jason@zx2c4.com> In-Reply-To: <20221008055359.286426-1-Jason@zx2c4.com> References: <20221008055359.286426-1-Jason@zx2c4.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221007_225529_353950_0F3EA6C4 X-CRM114-Status: GOOD ( 21.66 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org UmF0aGVyIHRoYW4gaW5jdXJyaW5nIGEgZGl2aXNpb24gb3IgcmVxdWVzdGluZyB0b28gbWFueSBy YW5kb20gYnl0ZXMgZm9yCnRoZSBnaXZlbiByYW5nZSwgdXNlIHRoZSBwcmFuZG9tX3UzMl9tYXgo KSBmdW5jdGlvbiwgd2hpY2ggb25seSB0YWtlcwp0aGUgbWluaW11bSByZXF1aXJlZCBieXRlcyBm cm9tIHRoZSBSTkcgYW5kIGF2b2lkcyBkaXZpc2lvbnMuIFRoaXMgd2FzCmRvbmUgbWVjaGFuaWNh bGx5IHdpdGggdGhpcyBjb2NjaW5lbGxlIHNjcmlwdDoKCkBiYXNpY0AKZXhwcmVzc2lvbiBFOwp0 eXBlIFQ7CmlkZW50aWZpZXIgZ2V0X3JhbmRvbV91MzIgPX4gImdldF9yYW5kb21faW50fHByYW5k b21fdTMyfGdldF9yYW5kb21fdTMyIjsKQEAKKAotICgoVClnZXRfcmFuZG9tX3UzMigpICUgKEUp KQorIHByYW5kb21fdTMyX21heChFKQp8Ci0gKChUKWdldF9yYW5kb21fdTMyKCkgJiAoKEUpIC0g MSkpCisgcHJhbmRvbV91MzJfbWF4KEUgKiBYWFhfTUFLRV9TVVJFX0VfSVNfUE9XMikKfAotICgo VClnZXRfcmFuZG9tX3UzMigpICYgflBBR0VfTUFTSykKKyBwcmFuZG9tX3UzMl9tYXgoUEFHRV9T SVpFKQopCgpAbXVsdGlfbGluZUAKaWRlbnRpZmllciBnZXRfcmFuZG9tX3UzMiA9fiAiZ2V0X3Jh bmRvbV9pbnR8cHJhbmRvbV91MzJ8Z2V0X3JhbmRvbV91MzIiOwppZGVudGlmaWVyIFJBTkQ7CmV4 cHJlc3Npb24gRTsKQEAKCi0gICAgICAgUkFORCA9IGdldF9yYW5kb21fdTMyKCk7CiAgICAgICAg Li4uIHdoZW4gIT0gUkFORAotICAgICAgIFJBTkQgJT0gKEUpOworICAgICAgIFJBTkQgPSBwcmFu ZG9tX3UzMl9tYXgoRSk7CgovLyBGaW5kIGEgcG90ZW50aWFsIGxpdGVyYWwKQGxpdGVyYWxfbWFz a0AKZXhwcmVzc2lvbiBMSVRFUkFMOwp0eXBlIFQ7CmlkZW50aWZpZXIgZ2V0X3JhbmRvbV91MzIg PX4gImdldF9yYW5kb21faW50fHByYW5kb21fdTMyfGdldF9yYW5kb21fdTMyIjsKcG9zaXRpb24g cDsKQEAKCiAgICAgICAgKChUKWdldF9yYW5kb21fdTMyKClAcCAmIChMSVRFUkFMKSkKCi8vIEFk ZCBvbmUgdG8gdGhlIGxpdGVyYWwuCkBzY3JpcHQ6cHl0aG9uIGFkZF9vbmVACmxpdGVyYWwgPDwg bGl0ZXJhbF9tYXNrLkxJVEVSQUw7ClJFU1VMVDsKQEAKCnZhbHVlID0gTm9uZQppZiBsaXRlcmFs LnN0YXJ0c3dpdGgoJzB4Jyk6CiAgICAgICAgdmFsdWUgPSBpbnQobGl0ZXJhbCwgMTYpCmVsaWYg bGl0ZXJhbFswXSBpbiAnMTIzNDU2Nzg5JzoKICAgICAgICB2YWx1ZSA9IGludChsaXRlcmFsLCAx MCkKaWYgdmFsdWUgaXMgTm9uZToKICAgICAgICBwcmludCgiSSBkb24ndCBrbm93IGhvdyB0byBo YW5kbGUgJXMiICUgKGxpdGVyYWwpKQogICAgICAgIGNvY2NpLmluY2x1ZGVfbWF0Y2goRmFsc2Up CmVsaWYgdmFsdWUgPT0gMioqMzIgLSAxIG9yIHZhbHVlID09IDIqKjMxIC0gMSBvciB2YWx1ZSA9 PSAyKioyNCAtIDEgb3IgdmFsdWUgPT0gMioqMTYgLSAxIG9yIHZhbHVlID09IDIqKjggLSAxOgog ICAgICAgIHByaW50KCJTa2lwcGluZyAweCV4IGZvciBjbGVhbnVwIGVsc2V3aGVyZSIgJSAodmFs dWUpKQogICAgICAgIGNvY2NpLmluY2x1ZGVfbWF0Y2goRmFsc2UpCmVsaWYgdmFsdWUgJiAodmFs dWUgKyAxKSAhPSAwOgogICAgICAgIHByaW50KCJTa2lwcGluZyAweCV4IGJlY2F1c2UgaXQncyBu b3QgYSBwb3dlciBvZiB0d28gbWludXMgb25lIiAlICh2YWx1ZSkpCiAgICAgICAgY29jY2kuaW5j bHVkZV9tYXRjaChGYWxzZSkKZWxpZiBsaXRlcmFsLnN0YXJ0c3dpdGgoJzB4Jyk6CiAgICAgICAg Y29jY2luZWxsZS5SRVNVTFQgPSBjb2NjaS5tYWtlX2V4cHIoIjB4JXgiICUgKHZhbHVlICsgMSkp CmVsc2U6CiAgICAgICAgY29jY2luZWxsZS5SRVNVTFQgPSBjb2NjaS5tYWtlX2V4cHIoIiVkIiAl ICh2YWx1ZSArIDEpKQoKLy8gUmVwbGFjZSB0aGUgbGl0ZXJhbCBtYXNrIHdpdGggdGhlIGNhbGN1 bGF0ZWQgcmVzdWx0LgpAcGx1c19vbmVACmV4cHJlc3Npb24gbGl0ZXJhbF9tYXNrLkxJVEVSQUw7 CnBvc2l0aW9uIGxpdGVyYWxfbWFzay5wOwpleHByZXNzaW9uIGFkZF9vbmUuUkVTVUxUOwppZGVu dGlmaWVyIEZVTkM7CkBACgotICAgICAgIChGVU5DKClAcCAmIChMSVRFUkFMKSkKKyAgICAgICBw cmFuZG9tX3UzMl9tYXgoUkVTVUxUKQoKQGNvbGxhcHNlX3JldEAKdHlwZSBUOwppZGVudGlmaWVy IFZBUjsKZXhwcmVzc2lvbiBFOwpAQAoKIHsKLSAgICAgICBUIFZBUjsKLSAgICAgICBWQVIgPSAo RSk7Ci0gICAgICAgcmV0dXJuIFZBUjsKKyAgICAgICByZXR1cm4gRTsKIH0KCkBkcm9wX3ZhckAK dHlwZSBUOwppZGVudGlmaWVyIFZBUjsKQEAKCiB7Ci0gICAgICAgVCBWQVI7CiAgICAgICAgLi4u IHdoZW4gIT0gVkFSCiB9CgpSZXZpZXdlZC1ieTogS2VlcyBDb29rIDxrZWVzY29va0BjaHJvbWl1 bS5vcmc+ClJldmlld2VkLWJ5OiBLUCBTaW5naCA8a3BzaW5naEBrZXJuZWwub3JnPgpSZXZpZXdl ZC1ieTogSmFuIEthcmEgPGphY2tAc3VzZS5jej4gIyBmb3IgZXh0NCBhbmQgc2JpdG1hcApSZXZp ZXdlZC1ieTogQ2hyaXN0b3BoIELDtmhtd2FsZGVyIDxjaHJpc3RvcGguYm9laG13YWxkZXJAbGlu Yml0LmNvbT4gIyBmb3IgZHJiZApBY2tlZC1ieTogVWxmIEhhbnNzb24gPHVsZi5oYW5zc29uQGxp bmFyby5vcmc+ICMgZm9yIG1tYwpBY2tlZC1ieTogRGFycmljayBKLiBXb25nIDxkandvbmdAa2Vy bmVsLm9yZz4gIyBmb3IgeGZzClNpZ25lZC1vZmYtYnk6IEphc29uIEEuIERvbmVuZmVsZCA8SmFz b25AengyYzQuY29tPgotLS0KIGFyY2gvYXJtL2tlcm5lbC9wcm9jZXNzLmMgICAgICAgICAgICAg ICAgICAgICB8ICAyICstCiBhcmNoL2FybTY0L2tlcm5lbC9wcm9jZXNzLmMgICAgICAgICAgICAg ICAgICAgfCAgMiArLQogYXJjaC9sb29uZ2FyY2gva2VybmVsL3Byb2Nlc3MuYyAgICAgICAgICAg ICAgIHwgIDIgKy0KIGFyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmMgICAgICAgICAgICAgICAg ICB8ICAyICstCiBhcmNoL21pcHMva2VybmVsL3Byb2Nlc3MuYyAgICAgICAgICAgICAgICAgICAg fCAgMiArLQogYXJjaC9taXBzL2tlcm5lbC92ZHNvLmMgICAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIGFyY2gvcGFyaXNjL2tlcm5lbC92ZHNvLmMgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBhcmNoL3Bvd2VycGMva2VybmVsL3Byb2Nlc3MuYyAgICAgICAgICAgICAgICAgfCAgMiAr LQogYXJjaC9zMzkwL2tlcm5lbC9wcm9jZXNzLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IGFyY2gvczM5MC9rZXJuZWwvdmRzby5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBh cmNoL3NwYXJjL3Zkc28vdm1hLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJj aC91bS9rZXJuZWwvcHJvY2Vzcy5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gv eDg2L2VudHJ5L3Zkc28vdm1hLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBhcmNoL3g4 Ni9rZXJuZWwvbW9kdWxlLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC94ODYv a2VybmVsL3Byb2Nlc3MuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gveDg2L21t L3BhdC9jcGEtdGVzdC5jICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBjcnlwdG8vdGVzdG1n ci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4NiArKysrKysrKystLS0tLS0tLS0t CiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jICAgICAgICAgICAgfCAgNCArLQog Li4uL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwgIDIgKy0KIGRy aXZlcnMvaW5maW5pYmFuZC9jb3JlL2NtYS5jICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2 ZXJzL2luZmluaWJhbmQvaHcvY3hnYjQvaWRfdGFibGUuYyAgICAgICAgfCAgNCArLQogZHJpdmVy cy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9haC5jICAgICAgIHwgIDUgKy0KIGRyaXZlcnMv aW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jICAgICAgICB8ICAzICstCiBkcml2ZXJzL21k L2JjYWNoZS9yZXF1ZXN0LmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogLi4uL3Rlc3QtZHJp dmVycy92aXZpZC92aXZpZC10b3VjaC1jYXAuYyAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbW1jL2Nv cmUvY29yZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL21tYy9ob3N0 L2R3X21tYy5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tdGQvbmFuZC9y YXcvbmFuZHNpbS5jICAgICAgICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvbXRkL3Rlc3RzL210 ZF9uYW5kZWNjdGVzdC5jICAgICAgICAgICB8IDEwICstLQogZHJpdmVycy9tdGQvdGVzdHMvc3Ry ZXNzdGVzdC5jICAgICAgICAgICAgICAgIHwgMTcgKy0tLQogZHJpdmVycy9tdGQvdWJpL2RlYnVn LmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbXRkL3ViaS9kZWJ1Zy5o ICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICstCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9h ZGNvbS9jbmljLmMgICAgICAgICAgfCAgMyArLQogLi4uL2NoZWxzaW8vaW5saW5lX2NyeXB0by9j aHRscy9jaHRsc19pby5jICAgIHwgIDQgKy0KIGRyaXZlcnMvbmV0L2hhbXJhZGlvL2JheWNvbV9l cHAuYyAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL25ldC9oYW1yYWRpby9oZGxjZHJ2LmMg ICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9uZXQvaGFtcmFkaW8veWFtLmMgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbmV0L3BoeS9hdDgwM3guYyAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiAuLi4vYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5j ICAgICAgICAgfCAgMiArLQogLi4uL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWMt Y3R4dC5jIHwgIDIgKy0KIGRyaXZlcnMvc2NzaS9mY29lL2Zjb2VfY3Rsci5jICAgICAgICAgICAg ICAgICB8ICA0ICstCiBkcml2ZXJzL3Njc2kvcWVkaS9xZWRpX21haW4uYyAgICAgICAgICAgICAg ICAgfCAgMiArLQogZnMvY2VwaC9pbm9kZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIGZzL2NlcGgvbWRzbWFwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBmcy9leHQ0L3N1cGVyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg NyArLQogZnMvZjJmcy9nYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIGZzL2YyZnMvc2VnbWVudC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICst CiBmcy91Ymlmcy9kZWJ1Zy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArLQog ZnMvdWJpZnMvbHB0X2NvbW1pdC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQgKy0tCiBm cy91Ymlmcy90bmNfY29tbWl0LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMv eGZzL2xpYnhmcy94ZnNfYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL3hm cy9saWJ4ZnMveGZzX2lhbGxvYy5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy94ZnMv eGZzX2Vycm9yLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogaW5jbHVkZS9s aW51eC9ub2RlbWFzay5oICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGtlcm5lbC9icGYv Y29yZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBrZXJuZWwvbG9ja2lu Zy90ZXN0LXd3X211dGV4LmMgICAgICAgICAgICAgICAgfCAgNCArLQoga2VybmVsL3RpbWUvY2xv Y2tzb3VyY2UuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYi9mYXVsdC1pbmplY3Qu YyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBsaWIvZmluZF9iaXRfYmVuY2ht YXJrLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQogbGliL2tvYmplY3QuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYi9yZWVkX3NvbG9tb24vdGVzdF9y c2xpYi5jICAgICAgICAgICAgICAgICB8ICA2ICstCiBsaWIvc2JpdG1hcC5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGliL3Rlc3Qtc3RyaW5nX2hlbHBlcnMuYyAg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYi90ZXN0X2hleGR1bXAuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDEwICstLQogbGliL3Rlc3Rfa2FzYW4uYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDYgKy0KIGxpYi90ZXN0X2xpc3Rfc29ydC5jICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBtbS9taWdyYXRlLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMiArLQogbW0vc2x1Yi5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIG5ldC9jZXBoL21vbl9jbGllbnQuYyAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAyICstCiBuZXQvY2VwaC9vc2RfY2xpZW50LmMgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQogbmV0L2NvcmUvbmVpZ2hib3VyLmMgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDIgKy0KIG5ldC9jb3JlL3BrdGdlbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IDQzICsrKysrLS0tLS0KIG5ldC9jb3JlL3N0cmVhbS5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAyICstCiBuZXQvaXB2NC9pZ21wLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgNiArLQogbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYyAgICAgICAgICAg ICAgIHwgIDIgKy0KIG5ldC9pcHY0L2luZXRfaGFzaHRhYmxlcy5jICAgICAgICAgICAgICAgICAg ICB8ICAyICstCiBuZXQvaXB2Ni9hZGRyY29uZi5jICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgOCArLQogbmV0L2lwdjYvbWNhc3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MTAgKy0tCiBuZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jICAgICAgICAgICAgICAgfCAg NCArLQogbmV0L3BhY2tldC9hZl9wYWNrZXQuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIG5ldC9zY2hlZC9hY3RfZ2FjdC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICst CiBuZXQvc2NoZWQvYWN0X3NhbXBsZS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQog bmV0L3NjaGVkL3NjaF9uZXRlbS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIG5l dC9zY3RwL3NvY2tldC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBuZXQv c3VucnBjL2NhY2hlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L3N1 bnJwYy94cHJ0c29jay5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC90aXBj L3NvY2tldC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBuZXQveGZybS94 ZnJtX3N0YXRlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogODggZmlsZXMgY2hh bmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDIxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9h cmNoL2FybS9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC9hcm0va2VybmVsL3Byb2Nlc3MuYwppbmRl eCAzZDljYWNlNjM4ODQuLjM1MTI5YWUzNjA2NyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVs L3Byb2Nlc3MuYworKysgYi9hcmNoL2FybS9rZXJuZWwvcHJvY2Vzcy5jCkBAIC0zNzUsNyArMzc1 LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc2lncGFnZV9hZGRyKGNvbnN0IHN0cnVjdCBtbV9z dHJ1Y3QgKm1tLAogCiAJc2xvdHMgPSAoKGxhc3QgLSBmaXJzdCkgPj4gUEFHRV9TSElGVCkgKyAx OwogCi0Jb2Zmc2V0ID0gZ2V0X3JhbmRvbV9pbnQoKSAlIHNsb3RzOworCW9mZnNldCA9IHByYW5k b21fdTMyX21heChzbG90cyk7CiAKIAlhZGRyID0gZmlyc3QgKyAob2Zmc2V0IDw8IFBBR0VfU0hJ RlQpOwogCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9wcm9jZXNzLmMgYi9hcmNoL2Fy bTY0L2tlcm5lbC9wcm9jZXNzLmMKaW5kZXggOTJiY2MxNzY4ZjBiLi44NzIwMzQyOWY4MDIgMTAw NjQ0Ci0tLSBhL2FyY2gvYXJtNjQva2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL2FybTY0L2tl cm5lbC9wcm9jZXNzLmMKQEAgLTU5NSw3ICs1OTUsNyBAQCB1bnNpZ25lZCBsb25nIF9fZ2V0X3dj aGFuKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKIHVuc2lnbmVkIGxvbmcgYXJjaF9hbGlnbl9zdGFj ayh1bnNpZ25lZCBsb25nIHNwKQogewogCWlmICghKGN1cnJlbnQtPnBlcnNvbmFsaXR5ICYgQURE Ul9OT19SQU5ET01JWkUpICYmIHJhbmRvbWl6ZV92YV9zcGFjZSkKLQkJc3AgLT0gZ2V0X3JhbmRv bV9pbnQoKSAmIH5QQUdFX01BU0s7CisJCXNwIC09IHByYW5kb21fdTMyX21heChQQUdFX1NJWkUp OwogCXJldHVybiBzcCAmIH4weGY7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2tl cm5lbC9wcm9jZXNzLmMgYi9hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHJvY2Vzcy5jCmluZGV4IDY2 MDQ5MmYwNjRlNy4uMTI1NmUzNTgyNDc1IDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9rZXJu ZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gvbG9vbmdhcmNoL2tlcm5lbC9wcm9jZXNzLmMKQEAgLTI5 Myw3ICsyOTMsNyBAQCB1bnNpZ25lZCBsb25nIHN0YWNrX3RvcCh2b2lkKQogdW5zaWduZWQgbG9u ZyBhcmNoX2FsaWduX3N0YWNrKHVuc2lnbmVkIGxvbmcgc3ApCiB7CiAJaWYgKCEoY3VycmVudC0+ cGVyc29uYWxpdHkgJiBBRERSX05PX1JBTkRPTUlaRSkgJiYgcmFuZG9taXplX3ZhX3NwYWNlKQot CQlzcCAtPSBnZXRfcmFuZG9tX2ludCgpICYgflBBR0VfTUFTSzsKKwkJc3AgLT0gcHJhbmRvbV91 MzJfbWF4KFBBR0VfU0laRSk7CiAKIAlyZXR1cm4gc3AgJiBTVEFDS19BTElHTjsKIH0KZGlmZiAt LWdpdCBhL2FyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmMgYi9hcmNoL2xvb25nYXJjaC9rZXJu ZWwvdmRzby5jCmluZGV4IGYzMmMzOGFiZDc5MS4uOGM5ODI2MDYyNjUyIDEwMDY0NAotLS0gYS9h cmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jCisrKyBiL2FyY2gvbG9vbmdhcmNoL2tlcm5lbC92 ZHNvLmMKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgdmRzb19iYXNlKHZv aWQpCiAJdW5zaWduZWQgbG9uZyBiYXNlID0gU1RBQ0tfVE9QOwogCiAJaWYgKGN1cnJlbnQtPmZs YWdzICYgUEZfUkFORE9NSVpFKSB7Ci0JCWJhc2UgKz0gZ2V0X3JhbmRvbV9pbnQoKSAmIChWRFNP X1JBTkRPTUlaRV9TSVpFIC0gMSk7CisJCWJhc2UgKz0gcHJhbmRvbV91MzJfbWF4KFZEU09fUkFO RE9NSVpFX1NJWkUpOwogCQliYXNlID0gUEFHRV9BTElHTihiYXNlKTsKIAl9CiAKZGlmZiAtLWdp dCBhL2FyY2gvbWlwcy9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC9taXBzL2tlcm5lbC9wcm9jZXNz LmMKaW5kZXggMzViOTEyYmNlNDI5Li5iYmU5Y2U0NzE3OTEgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlw cy9rZXJuZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvcHJvY2Vzcy5jCkBAIC03 MTEsNyArNzExLDcgQEAgdW5zaWduZWQgbG9uZyBtaXBzX3N0YWNrX3RvcCh2b2lkKQogdW5zaWdu ZWQgbG9uZyBhcmNoX2FsaWduX3N0YWNrKHVuc2lnbmVkIGxvbmcgc3ApCiB7CiAJaWYgKCEoY3Vy cmVudC0+cGVyc29uYWxpdHkgJiBBRERSX05PX1JBTkRPTUlaRSkgJiYgcmFuZG9taXplX3ZhX3Nw YWNlKQotCQlzcCAtPSBnZXRfcmFuZG9tX2ludCgpICYgflBBR0VfTUFTSzsKKwkJc3AgLT0gcHJh bmRvbV91MzJfbWF4KFBBR0VfU0laRSk7CiAKIAlyZXR1cm4gc3AgJiBBTE1BU0s7CiB9CmRpZmYg LS1naXQgYS9hcmNoL21pcHMva2VybmVsL3Zkc28uYyBiL2FyY2gvbWlwcy9rZXJuZWwvdmRzby5j CmluZGV4IGIyY2MyYzJkZDRiZi4uNWZkOWJmMWQ1OTZjIDEwMDY0NAotLS0gYS9hcmNoL21pcHMv a2VybmVsL3Zkc28uYworKysgYi9hcmNoL21pcHMva2VybmVsL3Zkc28uYwpAQCAtNzksNyArNzks NyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyB2ZHNvX2Jhc2Uodm9pZCkKIAl9CiAKIAlpZiAoY3Vy cmVudC0+ZmxhZ3MgJiBQRl9SQU5ET01JWkUpIHsKLQkJYmFzZSArPSBnZXRfcmFuZG9tX2ludCgp ICYgKFZEU09fUkFORE9NSVpFX1NJWkUgLSAxKTsKKwkJYmFzZSArPSBwcmFuZG9tX3UzMl9tYXgo VkRTT19SQU5ET01JWkVfU0laRSk7CiAJCWJhc2UgPSBQQUdFX0FMSUdOKGJhc2UpOwogCX0KIApk aWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2Mva2VybmVsL3Zkc28uYyBiL2FyY2gvcGFyaXNjL2tlcm5l bC92ZHNvLmMKaW5kZXggNjNkYzQ0YzRjMjQ2Li40N2U1OTYwYTJmOTYgMTAwNjQ0Ci0tLSBhL2Fy Y2gvcGFyaXNjL2tlcm5lbC92ZHNvLmMKKysrIGIvYXJjaC9wYXJpc2Mva2VybmVsL3Zkc28uYwpA QCAtNzUsNyArNzUsNyBAQCBpbnQgYXJjaF9zZXR1cF9hZGRpdGlvbmFsX3BhZ2VzKHN0cnVjdCBs aW51eF9iaW5wcm0gKmJwcm0sCiAKIAltYXBfYmFzZSA9IG1tLT5tbWFwX2Jhc2U7CiAJaWYgKGN1 cnJlbnQtPmZsYWdzICYgUEZfUkFORE9NSVpFKQotCQltYXBfYmFzZSAtPSAoZ2V0X3JhbmRvbV9p bnQoKSAmIDB4MWYpICogUEFHRV9TSVpFOworCQltYXBfYmFzZSAtPSBwcmFuZG9tX3UzMl9tYXgo MHgyMCkgKiBQQUdFX1NJWkU7CiAKIAl2ZHNvX3RleHRfc3RhcnQgPSBnZXRfdW5tYXBwZWRfYXJl YShOVUxMLCBtYXBfYmFzZSwgdmRzb190ZXh0X2xlbiwgMCwgMCk7CiAKZGlmZiAtLWdpdCBhL2Fy Y2gvcG93ZXJwYy9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9jZXNz LmMKaW5kZXggMGZiZGE4OWNkMWJiLi5mZjkyMGY0ZDQzMTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93 ZXJwYy9rZXJuZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHJvY2Vzcy5j CkBAIC0yMzA4LDYgKzIzMDgsNiBAQCB2b2lkIG5vdHJhY2UgX19wcGM2NF9ydW5sYXRjaF9vZmYo dm9pZCkKIHVuc2lnbmVkIGxvbmcgYXJjaF9hbGlnbl9zdGFjayh1bnNpZ25lZCBsb25nIHNwKQog ewogCWlmICghKGN1cnJlbnQtPnBlcnNvbmFsaXR5ICYgQUREUl9OT19SQU5ET01JWkUpICYmIHJh bmRvbWl6ZV92YV9zcGFjZSkKLQkJc3AgLT0gZ2V0X3JhbmRvbV9pbnQoKSAmIH5QQUdFX01BU0s7 CisJCXNwIC09IHByYW5kb21fdTMyX21heChQQUdFX1NJWkUpOwogCXJldHVybiBzcCAmIH4weGY7 CiB9CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvczM5MC9r ZXJuZWwvcHJvY2Vzcy5jCmluZGV4IGQ1MTE5ZTAzOWQ4NS4uNWVjNzg1NTVkZDJlIDEwMDY0NAot LS0gYS9hcmNoL3MzOTAva2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL3MzOTAva2VybmVsL3By b2Nlc3MuYwpAQCAtMjI0LDcgKzIyNCw3IEBAIHVuc2lnbmVkIGxvbmcgX19nZXRfd2NoYW4oc3Ry dWN0IHRhc2tfc3RydWN0ICpwKQogdW5zaWduZWQgbG9uZyBhcmNoX2FsaWduX3N0YWNrKHVuc2ln bmVkIGxvbmcgc3ApCiB7CiAJaWYgKCEoY3VycmVudC0+cGVyc29uYWxpdHkgJiBBRERSX05PX1JB TkRPTUlaRSkgJiYgcmFuZG9taXplX3ZhX3NwYWNlKQotCQlzcCAtPSBnZXRfcmFuZG9tX2ludCgp ICYgflBBR0VfTUFTSzsKKwkJc3AgLT0gcHJhbmRvbV91MzJfbWF4KFBBR0VfU0laRSk7CiAJcmV0 dXJuIHNwICYgfjB4ZjsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmMg Yi9hcmNoL3MzOTAva2VybmVsL3Zkc28uYwppbmRleCA1MDc1Y2RlNzdiMjkuLmE2YjVkYjU5Y2Y0 MCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmMKKysrIGIvYXJjaC9zMzkwL2tl cm5lbC92ZHNvLmMKQEAgLTIyNiw3ICsyMjYsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyB2ZHNv X2FkZHIodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBsZW4pCiAJZW5kIC09IGxl bjsKIAogCWlmIChlbmQgPiBzdGFydCkgewotCQlvZmZzZXQgPSBnZXRfcmFuZG9tX2ludCgpICUg KCgoZW5kIC0gc3RhcnQpID4+IFBBR0VfU0hJRlQpICsgMSk7CisJCW9mZnNldCA9IHByYW5kb21f dTMyX21heCgoKGVuZCAtIHN0YXJ0KSA+PiBQQUdFX1NISUZUKSArIDEpOwogCQlhZGRyID0gc3Rh cnQgKyAob2Zmc2V0IDw8IFBBR0VfU0hJRlQpOwogCX0gZWxzZSB7CiAJCWFkZHIgPSBzdGFydDsK ZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvdmRzby92bWEuYyBiL2FyY2gvc3BhcmMvdmRzby92bWEu YwppbmRleCBjYzE5ZTA5YjBmYTEuLmFlOWE4NmNiNmYzZCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFy Yy92ZHNvL3ZtYS5jCisrKyBiL2FyY2gvc3BhcmMvdmRzby92bWEuYwpAQCAtMzU0LDcgKzM1NCw3 IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHZkc29fYWRkcih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1 bnNpZ25lZCBpbnQgbGVuKQogCXVuc2lnbmVkIGludCBvZmZzZXQ7CiAKIAkvKiBUaGlzIGxvc2Vz IHNvbWUgbW9yZSBiaXRzIHRoYW4gYSBtb2R1bG8sIGJ1dCBpcyBjaGVhcGVyICovCi0Jb2Zmc2V0 ID0gZ2V0X3JhbmRvbV9pbnQoKSAmIChQVFJTX1BFUl9QVEUgLSAxKTsKKwlvZmZzZXQgPSBwcmFu ZG9tX3UzMl9tYXgoUFRSU19QRVJfUFRFKTsKIAlyZXR1cm4gc3RhcnQgKyAob2Zmc2V0IDw8IFBB R0VfU0hJRlQpOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3VtL2tlcm5lbC9wcm9jZXNzLmMgYi9h cmNoL3VtL2tlcm5lbC9wcm9jZXNzLmMKaW5kZXggODBiOTBiMTI3NmExLi4wMTBiYzQyMmEwOWQg MTAwNjQ0Ci0tLSBhL2FyY2gvdW0va2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL3VtL2tlcm5l bC9wcm9jZXNzLmMKQEAgLTM1Niw3ICszNTYsNyBAQCBpbnQgc2luZ2xlc3RlcHBpbmcodm9pZCAq IHQpCiB1bnNpZ25lZCBsb25nIGFyY2hfYWxpZ25fc3RhY2sodW5zaWduZWQgbG9uZyBzcCkKIHsK IAlpZiAoIShjdXJyZW50LT5wZXJzb25hbGl0eSAmIEFERFJfTk9fUkFORE9NSVpFKSAmJiByYW5k b21pemVfdmFfc3BhY2UpCi0JCXNwIC09IGdldF9yYW5kb21faW50KCkgJSA4MTkyOworCQlzcCAt PSBwcmFuZG9tX3UzMl9tYXgoODE5Mik7CiAJcmV0dXJuIHNwICYgfjB4ZjsKIH0KICNlbmRpZgpk aWZmIC0tZ2l0IGEvYXJjaC94ODYvZW50cnkvdmRzby92bWEuYyBiL2FyY2gveDg2L2VudHJ5L3Zk c28vdm1hLmMKaW5kZXggMTAwMGQ0NTdjMzMyLi5iNjRjNThjNjk0MGYgMTAwNjQ0Ci0tLSBhL2Fy Y2gveDg2L2VudHJ5L3Zkc28vdm1hLmMKKysrIGIvYXJjaC94ODYvZW50cnkvdmRzby92bWEuYwpA QCAtMzI3LDcgKzMyNyw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHZkc29fYWRkcih1bnNpZ25l ZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsZW4pCiAJZW5kIC09IGxlbjsKIAogCWlmIChlbmQgPiBz dGFydCkgewotCQlvZmZzZXQgPSBnZXRfcmFuZG9tX2ludCgpICUgKCgoZW5kIC0gc3RhcnQpID4+ IFBBR0VfU0hJRlQpICsgMSk7CisJCW9mZnNldCA9IHByYW5kb21fdTMyX21heCgoKGVuZCAtIHN0 YXJ0KSA+PiBQQUdFX1NISUZUKSArIDEpOwogCQlhZGRyID0gc3RhcnQgKyAob2Zmc2V0IDw8IFBB R0VfU0hJRlQpOwogCX0gZWxzZSB7CiAJCWFkZHIgPSBzdGFydDsKZGlmZiAtLWdpdCBhL2FyY2gv eDg2L2tlcm5lbC9tb2R1bGUuYyBiL2FyY2gveDg2L2tlcm5lbC9tb2R1bGUuYwppbmRleCBiMWFi ZjY2MzQxN2MuLmMwMzJlZGNkM2Q5NSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL21vZHVs ZS5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9tb2R1bGUuYwpAQCAtNTMsNyArNTMsNyBAQCBzdGF0 aWMgdW5zaWduZWQgbG9uZyBpbnQgZ2V0X21vZHVsZV9sb2FkX29mZnNldCh2b2lkKQogCQkgKi8K IAkJaWYgKG1vZHVsZV9sb2FkX29mZnNldCA9PSAwKQogCQkJbW9kdWxlX2xvYWRfb2Zmc2V0ID0K LQkJCQkoZ2V0X3JhbmRvbV9pbnQoKSAlIDEwMjQgKyAxKSAqIFBBR0VfU0laRTsKKwkJCQkocHJh bmRvbV91MzJfbWF4KDEwMjQpICsgMSkgKiBQQUdFX1NJWkU7CiAJCW11dGV4X3VubG9jaygmbW9k dWxlX2thc2xyX211dGV4KTsKIAl9CiAJcmV0dXJuIG1vZHVsZV9sb2FkX29mZnNldDsKZGlmZiAt LWdpdCBhL2FyY2gveDg2L2tlcm5lbC9wcm9jZXNzLmMgYi9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vz cy5jCmluZGV4IDU4YTZlYTQ3MmRiOS4uYzIxYjczNDdhMjZkIDEwMDY0NAotLS0gYS9hcmNoL3g4 Ni9rZXJuZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9wcm9jZXNzLmMKQEAgLTk2 NSw3ICs5NjUsNyBAQCBlYXJseV9wYXJhbSgiaWRsZSIsIGlkbGVfc2V0dXApOwogdW5zaWduZWQg bG9uZyBhcmNoX2FsaWduX3N0YWNrKHVuc2lnbmVkIGxvbmcgc3ApCiB7CiAJaWYgKCEoY3VycmVu dC0+cGVyc29uYWxpdHkgJiBBRERSX05PX1JBTkRPTUlaRSkgJiYgcmFuZG9taXplX3ZhX3NwYWNl KQotCQlzcCAtPSBnZXRfcmFuZG9tX2ludCgpICUgODE5MjsKKwkJc3AgLT0gcHJhbmRvbV91MzJf bWF4KDgxOTIpOwogCXJldHVybiBzcCAmIH4weGY7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2 L21tL3BhdC9jcGEtdGVzdC5jIGIvYXJjaC94ODYvbW0vcGF0L2NwYS10ZXN0LmMKaW5kZXggMDYx MmE3MzYzOGE4Li40MjNiMjFlODA5MjkgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21tL3BhdC9jcGEt dGVzdC5jCisrKyBiL2FyY2gveDg2L21tL3BhdC9jcGEtdGVzdC5jCkBAIC0xMzYsMTAgKzEzNiwx MCBAQCBzdGF0aWMgaW50IHBhZ2VhdHRyX3Rlc3Qodm9pZCkKIAlmYWlsZWQgKz0gcHJpbnRfc3Bs aXQoJnNhKTsKIAogCWZvciAoaSA9IDA7IGkgPCBOVEVTVDsgaSsrKSB7Ci0JCXVuc2lnbmVkIGxv bmcgcGZuID0gcHJhbmRvbV91MzIoKSAlIG1heF9wZm5fbWFwcGVkOworCQl1bnNpZ25lZCBsb25n IHBmbiA9IHByYW5kb21fdTMyX21heChtYXhfcGZuX21hcHBlZCk7CiAKIAkJYWRkcltpXSA9ICh1 bnNpZ25lZCBsb25nKV9fdmEocGZuIDw8IFBBR0VfU0hJRlQpOwotCQlsZW5baV0gPSBwcmFuZG9t X3UzMigpICUgTlBBR0VTOworCQlsZW5baV0gPSBwcmFuZG9tX3UzMl9tYXgoTlBBR0VTKTsKIAkJ bGVuW2ldID0gbWluX3QodW5zaWduZWQgbG9uZywgbGVuW2ldLCBtYXhfcGZuX21hcHBlZCAtIHBm biAtIDEpOwogCiAJCWlmIChsZW5baV0gPT0gMCkKZGlmZiAtLWdpdCBhL2NyeXB0by90ZXN0bWdy LmMgYi9jcnlwdG8vdGVzdG1nci5jCmluZGV4IDUzNDlmZmVlNmJiZC4uYmU0NTIxN2FjZGU0IDEw MDY0NAotLS0gYS9jcnlwdG8vdGVzdG1nci5jCisrKyBiL2NyeXB0by90ZXN0bWdyLmMKQEAgLTg1 NSw5ICs4NTUsOSBAQCBzdGF0aWMgaW50IHByZXBhcmVfa2V5YnVmKGNvbnN0IHU4ICprZXksIHVu c2lnbmVkIGludCBrc2l6ZSwKIC8qIEdlbmVyYXRlIGEgcmFuZG9tIGxlbmd0aCBpbiByYW5nZSBb MCwgbWF4X2xlbl0sIGJ1dCBwcmVmZXIgc21hbGxlciB2YWx1ZXMgKi8KIHN0YXRpYyB1bnNpZ25l ZCBpbnQgZ2VuZXJhdGVfcmFuZG9tX2xlbmd0aCh1bnNpZ25lZCBpbnQgbWF4X2xlbikKIHsKLQl1 bnNpZ25lZCBpbnQgbGVuID0gcHJhbmRvbV91MzIoKSAlIChtYXhfbGVuICsgMSk7CisJdW5zaWdu ZWQgaW50IGxlbiA9IHByYW5kb21fdTMyX21heChtYXhfbGVuICsgMSk7CiAKLQlzd2l0Y2ggKHBy YW5kb21fdTMyKCkgJSA0KSB7CisJc3dpdGNoIChwcmFuZG9tX3UzMl9tYXgoNCkpIHsKIAljYXNl IDA6CiAJCXJldHVybiBsZW4gJSA2NDsKIAljYXNlIDE6CkBAIC04NzQsMTQgKzg3NCwxNCBAQCBz dGF0aWMgdm9pZCBmbGlwX3JhbmRvbV9iaXQodTggKmJ1Ziwgc2l6ZV90IHNpemUpCiB7CiAJc2l6 ZV90IGJpdHBvczsKIAotCWJpdHBvcyA9IHByYW5kb21fdTMyKCkgJSAoc2l6ZSAqIDgpOworCWJp dHBvcyA9IHByYW5kb21fdTMyX21heChzaXplICogOCk7CiAJYnVmW2JpdHBvcyAvIDhdIF49IDEg PDwgKGJpdHBvcyAlIDgpOwogfQogCiAvKiBGbGlwIGEgcmFuZG9tIGJ5dGUgaW4gdGhlIGdpdmVu IG5vbmVtcHR5IGRhdGEgYnVmZmVyICovCiBzdGF0aWMgdm9pZCBmbGlwX3JhbmRvbV9ieXRlKHU4 ICpidWYsIHNpemVfdCBzaXplKQogewotCWJ1ZltwcmFuZG9tX3UzMigpICUgc2l6ZV0gXj0gMHhm ZjsKKwlidWZbcHJhbmRvbV91MzJfbWF4KHNpemUpXSBePSAweGZmOwogfQogCiAvKiBTb21ldGlt ZXMgbWFrZSBzb21lIHJhbmRvbSBjaGFuZ2VzIHRvIHRoZSBnaXZlbiBub25lbXB0eSBkYXRhIGJ1 ZmZlciAqLwpAQCAtODkxLDE1ICs4OTEsMTUgQEAgc3RhdGljIHZvaWQgbXV0YXRlX2J1ZmZlcih1 OCAqYnVmLCBzaXplX3Qgc2l6ZSkKIAlzaXplX3QgaTsKIAogCS8qIFNvbWV0aW1lcyBmbGlwIHNv bWUgYml0cyAqLwotCWlmIChwcmFuZG9tX3UzMigpICUgNCA9PSAwKSB7Ci0JCW51bV9mbGlwcyA9 IG1pbl90KHNpemVfdCwgMSA8PCAocHJhbmRvbV91MzIoKSAlIDgpLCBzaXplICogOCk7CisJaWYg KHByYW5kb21fdTMyX21heCg0KSA9PSAwKSB7CisJCW51bV9mbGlwcyA9IG1pbl90KHNpemVfdCwg MSA8PCBwcmFuZG9tX3UzMl9tYXgoOCksIHNpemUgKiA4KTsKIAkJZm9yIChpID0gMDsgaSA8IG51 bV9mbGlwczsgaSsrKQogCQkJZmxpcF9yYW5kb21fYml0KGJ1Ziwgc2l6ZSk7CiAJfQogCiAJLyog U29tZXRpbWVzIGZsaXAgc29tZSBieXRlcyAqLwotCWlmIChwcmFuZG9tX3UzMigpICUgNCA9PSAw KSB7Ci0JCW51bV9mbGlwcyA9IG1pbl90KHNpemVfdCwgMSA8PCAocHJhbmRvbV91MzIoKSAlIDgp LCBzaXplKTsKKwlpZiAocHJhbmRvbV91MzJfbWF4KDQpID09IDApIHsKKwkJbnVtX2ZsaXBzID0g bWluX3Qoc2l6ZV90LCAxIDw8IHByYW5kb21fdTMyX21heCg4KSwgc2l6ZSk7CiAJCWZvciAoaSA9 IDA7IGkgPCBudW1fZmxpcHM7IGkrKykKIAkJCWZsaXBfcmFuZG9tX2J5dGUoYnVmLCBzaXplKTsK IAl9CkBAIC05MTUsMTEgKzkxNSwxMSBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9yYW5kb21fYnl0 ZXModTggKmJ1Ziwgc2l6ZV90IGNvdW50KQogCWlmIChjb3VudCA9PSAwKQogCQlyZXR1cm47CiAK LQlzd2l0Y2ggKHByYW5kb21fdTMyKCkgJSA4KSB7IC8qIENob29zZSBhIGdlbmVyYXRpb24gc3Ry YXRlZ3kgKi8KKwlzd2l0Y2ggKHByYW5kb21fdTMyX21heCg4KSkgeyAvKiBDaG9vc2UgYSBnZW5l cmF0aW9uIHN0cmF0ZWd5ICovCiAJY2FzZSAwOgogCWNhc2UgMToKIAkJLyogQWxsIHRoZSBzYW1l IGJ5dGUsIHBsdXMgb3B0aW9uYWwgbXV0YXRpb25zICovCi0JCXN3aXRjaCAocHJhbmRvbV91MzIo KSAlIDQpIHsKKwkJc3dpdGNoIChwcmFuZG9tX3UzMl9tYXgoNCkpIHsKIAkJY2FzZSAwOgogCQkJ YiA9IDB4MDA7CiAJCQlicmVhazsKQEAgLTk1OSwyNCArOTU5LDI0IEBAIHN0YXRpYyBjaGFyICpn ZW5lcmF0ZV9yYW5kb21fc2dsX2RpdmlzaW9ucyhzdHJ1Y3QgdGVzdF9zZ19kaXZpc2lvbiAqZGl2 cywKIAkJdW5zaWduZWQgaW50IHRoaXNfbGVuOwogCQljb25zdCBjaGFyICpmbHVzaHR5cGVfc3Ry OwogCi0JCWlmIChkaXYgPT0gJmRpdnNbbWF4X2RpdnMgLSAxXSB8fCBwcmFuZG9tX3UzMigpICUg MiA9PSAwKQorCQlpZiAoZGl2ID09ICZkaXZzW21heF9kaXZzIC0gMV0gfHwgcHJhbmRvbV91MzJf bWF4KDIpID09IDApCiAJCQl0aGlzX2xlbiA9IHJlbWFpbmluZzsKIAkJZWxzZQotCQkJdGhpc19s ZW4gPSAxICsgKHByYW5kb21fdTMyKCkgJSByZW1haW5pbmcpOworCQkJdGhpc19sZW4gPSAxICsg cHJhbmRvbV91MzJfbWF4KHJlbWFpbmluZyk7CiAJCWRpdi0+cHJvcG9ydGlvbl9vZl90b3RhbCA9 IHRoaXNfbGVuOwogCi0JCWlmIChwcmFuZG9tX3UzMigpICUgNCA9PSAwKQotCQkJZGl2LT5vZmZz ZXQgPSAoUEFHRV9TSVpFIC0gMTI4KSArIChwcmFuZG9tX3UzMigpICUgMTI4KTsKLQkJZWxzZSBp ZiAocHJhbmRvbV91MzIoKSAlIDIgPT0gMCkKLQkJCWRpdi0+b2Zmc2V0ID0gcHJhbmRvbV91MzIo KSAlIDMyOworCQlpZiAocHJhbmRvbV91MzJfbWF4KDQpID09IDApCisJCQlkaXYtPm9mZnNldCA9 IChQQUdFX1NJWkUgLSAxMjgpICsgcHJhbmRvbV91MzJfbWF4KDEyOCk7CisJCWVsc2UgaWYgKHBy YW5kb21fdTMyX21heCgyKSA9PSAwKQorCQkJZGl2LT5vZmZzZXQgPSBwcmFuZG9tX3UzMl9tYXgo MzIpOwogCQllbHNlCi0JCQlkaXYtPm9mZnNldCA9IHByYW5kb21fdTMyKCkgJSBQQUdFX1NJWkU7 Ci0JCWlmIChwcmFuZG9tX3UzMigpICUgOCA9PSAwKQorCQkJZGl2LT5vZmZzZXQgPSBwcmFuZG9t X3UzMl9tYXgoUEFHRV9TSVpFKTsKKwkJaWYgKHByYW5kb21fdTMyX21heCg4KSA9PSAwKQogCQkJ ZGl2LT5vZmZzZXRfcmVsYXRpdmVfdG9fYWxpZ25tYXNrID0gdHJ1ZTsKIAogCQlkaXYtPmZsdXNo X3R5cGUgPSBGTFVTSF9UWVBFX05PTkU7CiAJCWlmIChnZW5fZmx1c2hlcykgewotCQkJc3dpdGNo IChwcmFuZG9tX3UzMigpICUgNCkgeworCQkJc3dpdGNoIChwcmFuZG9tX3UzMl9tYXgoNCkpIHsK IAkJCWNhc2UgMDoKIAkJCQlkaXYtPmZsdXNoX3R5cGUgPSBGTFVTSF9UWVBFX1JFSU1QT1JUOwog CQkJCWJyZWFrOwpAQCAtOTg4LDcgKzk4OCw3IEBAIHN0YXRpYyBjaGFyICpnZW5lcmF0ZV9yYW5k b21fc2dsX2RpdmlzaW9ucyhzdHJ1Y3QgdGVzdF9zZ19kaXZpc2lvbiAqZGl2cywKIAogCQlpZiAo ZGl2LT5mbHVzaF90eXBlICE9IEZMVVNIX1RZUEVfTk9ORSAmJgogCQkgICAgIShyZXFfZmxhZ3Mg JiBDUllQVE9fVEZNX1JFUV9NQVlfU0xFRVApICYmCi0JCSAgICBwcmFuZG9tX3UzMigpICUgMiA9 PSAwKQorCQkgICAgcHJhbmRvbV91MzJfbWF4KDIpID09IDApCiAJCQlkaXYtPm5vc2ltZCA9IHRy dWU7CiAKIAkJc3dpdGNoIChkaXYtPmZsdXNoX3R5cGUpIHsKQEAgLTEwMzUsNyArMTAzNSw3IEBA IHN0YXRpYyB2b2lkIGdlbmVyYXRlX3JhbmRvbV90ZXN0dmVjX2NvbmZpZyhzdHJ1Y3QgdGVzdHZl Y19jb25maWcgKmNmZywKIAogCXAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICJyYW5kb206Iik7 CiAKLQlzd2l0Y2ggKHByYW5kb21fdTMyKCkgJSA0KSB7CisJc3dpdGNoIChwcmFuZG9tX3UzMl9t YXgoNCkpIHsKIAljYXNlIDA6CiAJY2FzZSAxOgogCQljZmctPmlucGxhY2VfbW9kZSA9IE9VVF9P Rl9QTEFDRTsKQEAgLTEwNTAsMTIgKzEwNTAsMTIgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfcmFu ZG9tX3Rlc3R2ZWNfY29uZmlnKHN0cnVjdCB0ZXN0dmVjX2NvbmZpZyAqY2ZnLAogCQlicmVhazsK IAl9CiAKLQlpZiAocHJhbmRvbV91MzIoKSAlIDIgPT0gMCkgeworCWlmIChwcmFuZG9tX3UzMl9t YXgoMikgPT0gMCkgewogCQljZmctPnJlcV9mbGFncyB8PSBDUllQVE9fVEZNX1JFUV9NQVlfU0xF RVA7CiAJCXAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICIgbWF5X3NsZWVwIik7CiAJfQogCi0J c3dpdGNoIChwcmFuZG9tX3UzMigpICUgNCkgeworCXN3aXRjaCAocHJhbmRvbV91MzJfbWF4KDQp KSB7CiAJY2FzZSAwOgogCQljZmctPmZpbmFsaXphdGlvbl90eXBlID0gRklOQUxJWkFUSU9OX1RZ UEVfRklOQUw7CiAJCXAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICIgdXNlX2ZpbmFsIik7CkBA IC0xMDcxLDcgKzEwNzEsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9yYW5kb21fdGVzdHZlY19j b25maWcoc3RydWN0IHRlc3R2ZWNfY29uZmlnICpjZmcsCiAJfQogCiAJaWYgKCEoY2ZnLT5yZXFf ZmxhZ3MgJiBDUllQVE9fVEZNX1JFUV9NQVlfU0xFRVApICYmCi0JICAgIHByYW5kb21fdTMyKCkg JSAyID09IDApIHsKKwkgICAgcHJhbmRvbV91MzJfbWF4KDIpID09IDApIHsKIAkJY2ZnLT5ub3Np bWQgPSB0cnVlOwogCQlwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAiIG5vc2ltZCIpOwogCX0K QEAgLTEwODQsNyArMTA4NCw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX3JhbmRvbV90ZXN0dmVj X2NvbmZpZyhzdHJ1Y3QgdGVzdHZlY19jb25maWcgKmNmZywKIAkJCQkJICBjZmctPnJlcV9mbGFn cyk7CiAJcCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgIl0iKTsKIAotCWlmIChjZmctPmlucGxh Y2VfbW9kZSA9PSBPVVRfT0ZfUExBQ0UgJiYgcHJhbmRvbV91MzIoKSAlIDIgPT0gMCkgeworCWlm IChjZmctPmlucGxhY2VfbW9kZSA9PSBPVVRfT0ZfUExBQ0UgJiYgcHJhbmRvbV91MzJfbWF4KDIp ID09IDApIHsKIAkJcCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgIiBkc3RfZGl2cz1bIik7CiAJ CXAgPSBnZW5lcmF0ZV9yYW5kb21fc2dsX2RpdmlzaW9ucyhjZmctPmRzdF9kaXZzLAogCQkJCQkJ ICBBUlJBWV9TSVpFKGNmZy0+ZHN0X2RpdnMpLApAQCAtMTA5MywxMyArMTA5MywxMyBAQCBzdGF0 aWMgdm9pZCBnZW5lcmF0ZV9yYW5kb21fdGVzdHZlY19jb25maWcoc3RydWN0IHRlc3R2ZWNfY29u ZmlnICpjZmcsCiAJCXAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICJdIik7CiAJfQogCi0JaWYg KHByYW5kb21fdTMyKCkgJSAyID09IDApIHsKLQkJY2ZnLT5pdl9vZmZzZXQgPSAxICsgKHByYW5k b21fdTMyKCkgJSBNQVhfQUxHQVBJX0FMSUdOTUFTSyk7CisJaWYgKHByYW5kb21fdTMyX21heCgy KSA9PSAwKSB7CisJCWNmZy0+aXZfb2Zmc2V0ID0gMSArIHByYW5kb21fdTMyX21heChNQVhfQUxH QVBJX0FMSUdOTUFTSyk7CiAJCXAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICIgaXZfb2Zmc2V0 PSV1IiwgY2ZnLT5pdl9vZmZzZXQpOwogCX0KIAotCWlmIChwcmFuZG9tX3UzMigpICUgMiA9PSAw KSB7Ci0JCWNmZy0+a2V5X29mZnNldCA9IDEgKyAocHJhbmRvbV91MzIoKSAlIE1BWF9BTEdBUElf QUxJR05NQVNLKTsKKwlpZiAocHJhbmRvbV91MzJfbWF4KDIpID09IDApIHsKKwkJY2ZnLT5rZXlf b2Zmc2V0ID0gMSArIHByYW5kb21fdTMyX21heChNQVhfQUxHQVBJX0FMSUdOTUFTSyk7CiAJCXAg Kz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICIga2V5X29mZnNldD0ldSIsIGNmZy0+a2V5X29mZnNl dCk7CiAJfQogCkBAIC0xNjUyLDggKzE2NTIsOCBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9yYW5k b21faGFzaF90ZXN0dmVjKHN0cnVjdCBzaGFzaF9kZXNjICpkZXNjLAogCXZlYy0+a3NpemUgPSAw OwogCWlmIChtYXhrZXlzaXplKSB7CiAJCXZlYy0+a3NpemUgPSBtYXhrZXlzaXplOwotCQlpZiAo cHJhbmRvbV91MzIoKSAlIDQgPT0gMCkKLQkJCXZlYy0+a3NpemUgPSAxICsgKHByYW5kb21fdTMy KCkgJSBtYXhrZXlzaXplKTsKKwkJaWYgKHByYW5kb21fdTMyX21heCg0KSA9PSAwKQorCQkJdmVj LT5rc2l6ZSA9IDEgKyBwcmFuZG9tX3UzMl9tYXgobWF4a2V5c2l6ZSk7CiAJCWdlbmVyYXRlX3Jh bmRvbV9ieXRlcygodTggKil2ZWMtPmtleSwgdmVjLT5rc2l6ZSk7CiAKIAkJdmVjLT5zZXRrZXlf ZXJyb3IgPSBjcnlwdG9fc2hhc2hfc2V0a2V5KGRlc2MtPnRmbSwgdmVjLT5rZXksCkBAIC0yMjE4 LDEzICsyMjE4LDEzIEBAIHN0YXRpYyB2b2lkIG11dGF0ZV9hZWFkX21lc3NhZ2Uoc3RydWN0IGFl YWRfdGVzdHZlYyAqdmVjLCBib29sIGFhZF9pdiwKIAljb25zdCB1bnNpZ25lZCBpbnQgYWFkX3Rh aWxfc2l6ZSA9IGFhZF9pdiA/IGl2c2l6ZSA6IDA7CiAJY29uc3QgdW5zaWduZWQgaW50IGF1dGhz aXplID0gdmVjLT5jbGVuIC0gdmVjLT5wbGVuOwogCi0JaWYgKHByYW5kb21fdTMyKCkgJSAyID09 IDAgJiYgdmVjLT5hbGVuID4gYWFkX3RhaWxfc2l6ZSkgeworCWlmIChwcmFuZG9tX3UzMl9tYXgo MikgPT0gMCAmJiB2ZWMtPmFsZW4gPiBhYWRfdGFpbF9zaXplKSB7CiAJCSAvKiBNdXRhdGUgdGhl IEFBRCAqLwogCQlmbGlwX3JhbmRvbV9iaXQoKHU4ICopdmVjLT5hc3NvYywgdmVjLT5hbGVuIC0g YWFkX3RhaWxfc2l6ZSk7Ci0JCWlmIChwcmFuZG9tX3UzMigpICUgMiA9PSAwKQorCQlpZiAocHJh bmRvbV91MzJfbWF4KDIpID09IDApCiAJCQlyZXR1cm47CiAJfQotCWlmIChwcmFuZG9tX3UzMigp ICUgMiA9PSAwKSB7CisJaWYgKHByYW5kb21fdTMyX21heCgyKSA9PSAwKSB7CiAJCS8qIE11dGF0 ZSBhdXRoIHRhZyAoYXNzdW1pbmcgaXQncyBhdCB0aGUgZW5kIG9mIGNpcGhlcnRleHQpICovCiAJ CWZsaXBfcmFuZG9tX2JpdCgodTggKil2ZWMtPmN0ZXh0ICsgdmVjLT5wbGVuLCBhdXRoc2l6ZSk7 CiAJfSBlbHNlIHsKQEAgLTIyNDksNyArMjI0OSw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX2Fl YWRfbWVzc2FnZShzdHJ1Y3QgYWVhZF9yZXF1ZXN0ICpyZXEsCiAJY29uc3QgdW5zaWduZWQgaW50 IGl2c2l6ZSA9IGNyeXB0b19hZWFkX2l2c2l6ZSh0Zm0pOwogCWNvbnN0IHVuc2lnbmVkIGludCBh dXRoc2l6ZSA9IHZlYy0+Y2xlbiAtIHZlYy0+cGxlbjsKIAljb25zdCBib29sIGluYXV0aGVudGlj ID0gKGF1dGhzaXplID49IE1JTl9DT0xMSVNJT05fRlJFRV9BVVRIU0laRSkgJiYKLQkJCQkgKHBy ZWZlcl9pbmF1dGhlbnRpYyB8fCBwcmFuZG9tX3UzMigpICUgNCA9PSAwKTsKKwkJCQkgKHByZWZl cl9pbmF1dGhlbnRpYyB8fCBwcmFuZG9tX3UzMl9tYXgoNCkgPT0gMCk7CiAKIAkvKiBHZW5lcmF0 ZSB0aGUgQUFELiAqLwogCWdlbmVyYXRlX3JhbmRvbV9ieXRlcygodTggKil2ZWMtPmFzc29jLCB2 ZWMtPmFsZW4pOwpAQCAtMjI1Nyw3ICsyMjU3LDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfYWVh ZF9tZXNzYWdlKHN0cnVjdCBhZWFkX3JlcXVlc3QgKnJlcSwKIAkJLyogQXZvaWQgaW1wbGVtZW50 YXRpb24tZGVmaW5lZCBiZWhhdmlvci4gKi8KIAkJbWVtY3B5KCh1OCAqKXZlYy0+YXNzb2MgKyB2 ZWMtPmFsZW4gLSBpdnNpemUsIHZlYy0+aXYsIGl2c2l6ZSk7CiAKLQlpZiAoaW5hdXRoZW50aWMg JiYgcHJhbmRvbV91MzIoKSAlIDIgPT0gMCkgeworCWlmIChpbmF1dGhlbnRpYyAmJiBwcmFuZG9t X3UzMl9tYXgoMikgPT0gMCkgewogCQkvKiBHZW5lcmF0ZSBhIHJhbmRvbSBjaXBoZXJ0ZXh0LiAq LwogCQlnZW5lcmF0ZV9yYW5kb21fYnl0ZXMoKHU4ICopdmVjLT5jdGV4dCwgdmVjLT5jbGVuKTsK IAl9IGVsc2UgewpAQCAtMjMyMSw4ICsyMzIxLDggQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfcmFu ZG9tX2FlYWRfdGVzdHZlYyhzdHJ1Y3QgYWVhZF9yZXF1ZXN0ICpyZXEsCiAKIAkvKiBLZXk6IGxl bmd0aCBpbiBbMCwgbWF4a2V5c2l6ZV0sIGJ1dCB1c3VhbGx5IGNob29zZSBtYXhrZXlzaXplICov CiAJdmVjLT5rbGVuID0gbWF4a2V5c2l6ZTsKLQlpZiAocHJhbmRvbV91MzIoKSAlIDQgPT0gMCkK LQkJdmVjLT5rbGVuID0gcHJhbmRvbV91MzIoKSAlIChtYXhrZXlzaXplICsgMSk7CisJaWYgKHBy YW5kb21fdTMyX21heCg0KSA9PSAwKQorCQl2ZWMtPmtsZW4gPSBwcmFuZG9tX3UzMl9tYXgobWF4 a2V5c2l6ZSArIDEpOwogCWdlbmVyYXRlX3JhbmRvbV9ieXRlcygodTggKil2ZWMtPmtleSwgdmVj LT5rbGVuKTsKIAl2ZWMtPnNldGtleV9lcnJvciA9IGNyeXB0b19hZWFkX3NldGtleSh0Zm0sIHZl Yy0+a2V5LCB2ZWMtPmtsZW4pOwogCkBAIC0yMzMxLDggKzIzMzEsOCBAQCBzdGF0aWMgdm9pZCBn ZW5lcmF0ZV9yYW5kb21fYWVhZF90ZXN0dmVjKHN0cnVjdCBhZWFkX3JlcXVlc3QgKnJlcSwKIAog CS8qIFRhZyBsZW5ndGg6IGluIFswLCBtYXhhdXRoc2l6ZV0sIGJ1dCB1c3VhbGx5IGNob29zZSBt YXhhdXRoc2l6ZSAqLwogCWF1dGhzaXplID0gbWF4YXV0aHNpemU7Ci0JaWYgKHByYW5kb21fdTMy KCkgJSA0ID09IDApCi0JCWF1dGhzaXplID0gcHJhbmRvbV91MzIoKSAlIChtYXhhdXRoc2l6ZSAr IDEpOworCWlmIChwcmFuZG9tX3UzMl9tYXgoNCkgPT0gMCkKKwkJYXV0aHNpemUgPSBwcmFuZG9t X3UzMl9tYXgobWF4YXV0aHNpemUgKyAxKTsKIAlpZiAocHJlZmVyX2luYXV0aGVudGljICYmIGF1 dGhzaXplIDwgTUlOX0NPTExJU0lPTl9GUkVFX0FVVEhTSVpFKQogCQlhdXRoc2l6ZSA9IE1JTl9D T0xMSVNJT05fRlJFRV9BVVRIU0laRTsKIAlpZiAoV0FSTl9PTihhdXRoc2l6ZSA+IG1heGRhdGFz aXplKSkKQEAgLTIzNDIsNyArMjM0Miw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX3JhbmRvbV9h ZWFkX3Rlc3R2ZWMoc3RydWN0IGFlYWRfcmVxdWVzdCAqcmVxLAogCiAJLyogQUFELCBwbGFpbnRl eHQsIGFuZCBjaXBoZXJ0ZXh0IGxlbmd0aHMgKi8KIAl0b3RhbF9sZW4gPSBnZW5lcmF0ZV9yYW5k b21fbGVuZ3RoKG1heGRhdGFzaXplKTsKLQlpZiAocHJhbmRvbV91MzIoKSAlIDQgPT0gMCkKKwlp ZiAocHJhbmRvbV91MzJfbWF4KDQpID09IDApCiAJCXZlYy0+YWxlbiA9IDA7CiAJZWxzZQogCQl2 ZWMtPmFsZW4gPSBnZW5lcmF0ZV9yYW5kb21fbGVuZ3RoKHRvdGFsX2xlbik7CkBAIC0yOTU4LDgg KzI5NTgsOCBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9yYW5kb21fY2lwaGVyX3Rlc3R2ZWMoc3Ry dWN0IHNrY2lwaGVyX3JlcXVlc3QgKnJlcSwKIAogCS8qIEtleTogbGVuZ3RoIGluIFswLCBtYXhr ZXlzaXplXSwgYnV0IHVzdWFsbHkgY2hvb3NlIG1heGtleXNpemUgKi8KIAl2ZWMtPmtsZW4gPSBt YXhrZXlzaXplOwotCWlmIChwcmFuZG9tX3UzMigpICUgNCA9PSAwKQotCQl2ZWMtPmtsZW4gPSBw cmFuZG9tX3UzMigpICUgKG1heGtleXNpemUgKyAxKTsKKwlpZiAocHJhbmRvbV91MzJfbWF4KDQp ID09IDApCisJCXZlYy0+a2xlbiA9IHByYW5kb21fdTMyX21heChtYXhrZXlzaXplICsgMSk7CiAJ Z2VuZXJhdGVfcmFuZG9tX2J5dGVzKCh1OCAqKXZlYy0+a2V5LCB2ZWMtPmtsZW4pOwogCXZlYy0+ c2V0a2V5X2Vycm9yID0gY3J5cHRvX3NrY2lwaGVyX3NldGtleSh0Zm0sIHZlYy0+a2V5LCB2ZWMt PmtsZW4pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5j IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwppbmRleCBhZjRjN2Q2NTQ5MGIu LmQ4YjE0MTdkYzUwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2 ZXIuYworKysgYi9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5jCkBAIC03ODEsNyAr NzgxLDcgQEAgc3RhdGljIHN0cnVjdCBzb2NrZXQgKmRyYmRfd2FpdF9mb3JfY29ubmVjdChzdHJ1 Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uLAogCiAJdGltZW8gPSBjb25uZWN0X2ludCAq IEhaOwogCS8qIDI4LjUlIHJhbmRvbSBqaXR0ZXIgKi8KLQl0aW1lbyArPSAocHJhbmRvbV91MzIo KSAmIDEpID8gdGltZW8gLyA3IDogLXRpbWVvIC8gNzsKKwl0aW1lbyArPSBwcmFuZG9tX3UzMl9t YXgoMikgPyB0aW1lbyAvIDcgOiAtdGltZW8gLyA3OwogCiAJZXJyID0gd2FpdF9mb3JfY29tcGxl dGlvbl9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoJmFkLT5kb29yX2JlbGwsIHRpbWVvKTsKIAlpZiAo ZXJyIDw9IDApCkBAIC0xMDA0LDcgKzEwMDQsNyBAQCBzdGF0aWMgaW50IGNvbm5fY29ubmVjdChz dHJ1Y3QgZHJiZF9jb25uZWN0aW9uICpjb25uZWN0aW9uKQogCQkJCWRyYmRfd2Fybihjb25uZWN0 aW9uLCAiRXJyb3IgcmVjZWl2aW5nIGluaXRpYWwgcGFja2V0XG4iKTsKIAkJCQlzb2NrX3JlbGVh c2Uocyk7CiByYW5kb21pemU6Ci0JCQkJaWYgKHByYW5kb21fdTMyKCkgJiAxKQorCQkJCWlmIChw cmFuZG9tX3UzMl9tYXgoMikpCiAJCQkJCWdvdG8gcmV0cnk7CiAJCQl9CiAJCX0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCmluZGV4IGNkNzViMGNh MjU1NS4uODQ1MDIzYzE0ZWIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9leGVjYnVmZmVyLmMKQEAgLTI0MjQsNyArMjQyNCw3IEBAIGdlbjhfZGlzcGF0Y2hfYnNk X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJLyogQ2hlY2sgd2hl dGhlciB0aGUgZmlsZV9wcml2IGhhcyBhbHJlYWR5IHNlbGVjdGVkIG9uZSByaW5nLiAqLwogCWlm ICgoaW50KWZpbGVfcHJpdi0+YnNkX2VuZ2luZSA8IDApCiAJCWZpbGVfcHJpdi0+YnNkX2VuZ2lu ZSA9Ci0JCQlnZXRfcmFuZG9tX2ludCgpICUgbnVtX3Zjc19lbmdpbmVzKGRldl9wcml2KTsKKwkJ CXByYW5kb21fdTMyX21heChudW1fdmNzX2VuZ2luZXMoZGV2X3ByaXYpKTsKIAogCXJldHVybiBm aWxlX3ByaXYtPmJzZF9lbmdpbmU7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQv Y29yZS9jbWEuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NtYS5jCmluZGV4IGJlMzE3ZjI2 NjVhOS4uZDQ2MDkzNWU4OWViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9j bWEuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jbWEuYwpAQCAtMzc1OSw3ICszNzU5 LDcgQEAgc3RhdGljIGludCBjbWFfYWxsb2NfYW55X3BvcnQoZW51bSByZG1hX3VjbV9wb3J0X3Nw YWNlIHBzLAogCiAJaW5ldF9nZXRfbG9jYWxfcG9ydF9yYW5nZShuZXQsICZsb3csICZoaWdoKTsK IAlyZW1haW5pbmcgPSAoaGlnaCAtIGxvdykgKyAxOwotCXJvdmVyID0gcHJhbmRvbV91MzIoKSAl IHJlbWFpbmluZyArIGxvdzsKKwlyb3ZlciA9IHByYW5kb21fdTMyX21heChyZW1haW5pbmcpICsg bG93OwogcmV0cnk6CiAJaWYgKGxhc3RfdXNlZF9wb3J0ICE9IHJvdmVyKSB7CiAJCXN0cnVjdCBy ZG1hX2JpbmRfbGlzdCAqYmluZF9saXN0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5k L2h3L2N4Z2I0L2lkX3RhYmxlLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvY3hnYjQvaWRfdGFi bGUuYwppbmRleCBmNjRlN2UwMmIxMjkuLjI4MGQ2MTQ2Njg1NSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9pbmZpbmliYW5kL2h3L2N4Z2I0L2lkX3RhYmxlLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5k L2h3L2N4Z2I0L2lkX3RhYmxlLmMKQEAgLTU0LDcgKzU0LDcgQEAgdTMyIGM0aXdfaWRfYWxsb2Mo c3RydWN0IGM0aXdfaWRfdGFibGUgKmFsbG9jKQogCiAJaWYgKG9iaiA8IGFsbG9jLT5tYXgpIHsK IAkJaWYgKGFsbG9jLT5mbGFncyAmIEM0SVdfSURfVEFCTEVfRl9SQU5ET00pCi0JCQlhbGxvYy0+ bGFzdCArPSBwcmFuZG9tX3UzMigpICUgUkFORE9NX1NLSVA7CisJCQlhbGxvYy0+bGFzdCArPSBw cmFuZG9tX3UzMl9tYXgoUkFORE9NX1NLSVApOwogCQllbHNlCiAJCQlhbGxvYy0+bGFzdCA9IG9i aiArIDE7CiAJCWlmIChhbGxvYy0+bGFzdCA+PSBhbGxvYy0+bWF4KQpAQCAtODUsNyArODUsNyBA QCBpbnQgYzRpd19pZF90YWJsZV9hbGxvYyhzdHJ1Y3QgYzRpd19pZF90YWJsZSAqYWxsb2MsIHUz MiBzdGFydCwgdTMyIG51bSwKIAlhbGxvYy0+c3RhcnQgPSBzdGFydDsKIAlhbGxvYy0+ZmxhZ3Mg PSBmbGFnczsKIAlpZiAoZmxhZ3MgJiBDNElXX0lEX1RBQkxFX0ZfUkFORE9NKQotCQlhbGxvYy0+ bGFzdCA9IHByYW5kb21fdTMyKCkgJSBSQU5ET01fU0tJUDsKKwkJYWxsb2MtPmxhc3QgPSBwcmFu ZG9tX3UzMl9tYXgoUkFORE9NX1NLSVApOwogCWVsc2UKIAkJYWxsb2MtPmxhc3QgPSAwOwogCWFs bG9jLT5tYXggPSBudW07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2hu c19yb2NlX2FoLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX2FoLmMKaW5k ZXggNDkyYjEyMmQwNTIxLi40ODBjMDYyZGQwNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5p YmFuZC9ody9obnMvaG5zX3JvY2VfYWguYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaG5z L2huc19yb2NlX2FoLmMKQEAgLTQxLDkgKzQxLDggQEAgc3RhdGljIGlubGluZSB1MTYgZ2V0X2Fo X3VkcF9zcG9ydChjb25zdCBzdHJ1Y3QgcmRtYV9haF9hdHRyICphaF9hdHRyKQogCXUxNiBzcG9y dDsKIAogCWlmICghZmwpCi0JCXNwb3J0ID0gZ2V0X3JhbmRvbV91MzIoKSAlCi0JCQkoSUJfUk9D RV9VRFBfRU5DQVBfVkFMSURfUE9SVF9NQVggKyAxIC0KLQkJCSBJQl9ST0NFX1VEUF9FTkNBUF9W QUxJRF9QT1JUX01JTikgKworCQlzcG9ydCA9IHByYW5kb21fdTMyX21heChJQl9ST0NFX1VEUF9F TkNBUF9WQUxJRF9QT1JUX01BWCArIDEgLQorCQkJCQlJQl9ST0NFX1VEUF9FTkNBUF9WQUxJRF9Q T1JUX01JTikgKwogCQkJSUJfUk9DRV9VRFBfRU5DQVBfVkFMSURfUE9SVF9NSU47CiAJZWxzZQog CQlzcG9ydCA9IHJkbWFfZmxvd19sYWJlbF90b191ZHBfc3BvcnQoZmwpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmMgYi9kcml2ZXJzL2luZmluaWJh bmQvdWxwL3J0cnMvcnRycy1jbHQuYwppbmRleCA0NDk5MDRkYWMwYTkuLmUyYTg5ZDdmNTJkZiAx MDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmMKKysrIGIv ZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmMKQEAgLTE1MTEsOCArMTUxMSw3 IEBAIHN0YXRpYyB2b2lkIHJ0cnNfY2x0X2Vycl9yZWNvdmVyeV93b3JrKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKIAlydHJzX2NsdF9zdG9wX2FuZF9kZXN0cm95X2Nvbm5zKGNsdF9wYXRoKTsK IAlxdWV1ZV9kZWxheWVkX3dvcmsocnRyc193cSwgJmNsdF9wYXRoLT5yZWNvbm5lY3RfZHdvcmss CiAJCQkgICBtc2Vjc190b19qaWZmaWVzKGRlbGF5X21zICsKLQkJCQkJICAgIHByYW5kb21fdTMy KCkgJQotCQkJCQkgICAgUlRSU19SRUNPTk5FQ1RfU0VFRCkpOworCQkJCQkgICAgcHJhbmRvbV91 MzJfbWF4KFJUUlNfUkVDT05ORUNUX1NFRUQpKSk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcnRyc19j bHRfcGF0aCAqYWxsb2NfcGF0aChzdHJ1Y3QgcnRyc19jbHRfc2VzcyAqY2x0LApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jIGIvZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVz dC5jCmluZGV4IGYyYzVhN2UwNmZhOS4uMzQyNzU1NWIwY2NhIDEwMDY0NAotLS0gYS9kcml2ZXJz L21kL2JjYWNoZS9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jCkBA IC00MDEsNyArNDAxLDcgQEAgc3RhdGljIGJvb2wgY2hlY2tfc2hvdWxkX2J5cGFzcyhzdHJ1Y3Qg Y2FjaGVkX2RldiAqZGMsIHN0cnVjdCBiaW8gKmJpbykKIAl9CiAKIAlpZiAoYnlwYXNzX3RvcnR1 cmVfdGVzdChkYykpIHsKLQkJaWYgKChnZXRfcmFuZG9tX2ludCgpICYgMykgPT0gMykKKwkJaWYg KHByYW5kb21fdTMyX21heCg0KSA9PSAzKQogCQkJZ290byBza2lwOwogCQllbHNlCiAJCQlnb3Rv IHJlc2NhbGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92 aXZpZC10b3VjaC1jYXAuYyBiL2RyaXZlcnMvbWVkaWEvdGVzdC1kcml2ZXJzL3ZpdmlkL3Zpdmlk LXRvdWNoLWNhcC5jCmluZGV4IDY0ZTNlNGNiMzBjMi4uNzkyNjYwYTg1YmMxIDEwMDY0NAotLS0g YS9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC10b3VjaC1jYXAuYworKysg Yi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC10b3VjaC1jYXAuYwpAQCAt MjIxLDcgKzIyMSw3IEBAIHN0YXRpYyB2b2lkIHZpdmlkX2ZpbGxfYnVmZl9ub2lzZShfX3MxNiAq dGNoX2J1ZiwgaW50IHNpemUpCiAKIHN0YXRpYyBpbmxpbmUgaW50IGdldF9yYW5kb21fcHJlc3N1 cmUodm9pZCkKIHsKLQlyZXR1cm4gZ2V0X3JhbmRvbV9pbnQoKSAlIFZJVklEX1BSRVNTVVJFX0xJ TUlUOworCXJldHVybiBwcmFuZG9tX3UzMl9tYXgoVklWSURfUFJFU1NVUkVfTElNSVQpOwogfQog CiBzdGF0aWMgdm9pZCB2aXZpZF90Y2hfYnVmX3NldChzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpm LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvY29yZS9jb3JlLmMgYi9kcml2ZXJzL21tYy9jb3Jl L2NvcmUuYwppbmRleCBlZjUzYTI1Nzg4MjQuLjk1ZmE4ZmIxZDQ1ZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9tbWMvY29yZS9jb3JlLmMKKysrIGIvZHJpdmVycy9tbWMvY29yZS9jb3JlLmMKQEAgLTk3 LDggKzk3LDggQEAgc3RhdGljIHZvaWQgbW1jX3Nob3VsZF9mYWlsX3JlcXVlc3Qoc3RydWN0IG1t Y19ob3N0ICpob3N0LAogCSAgICAhc2hvdWxkX2ZhaWwoJmhvc3QtPmZhaWxfbW1jX3JlcXVlc3Qs IGRhdGEtPmJsa3N6ICogZGF0YS0+YmxvY2tzKSkKIAkJcmV0dXJuOwogCi0JZGF0YS0+ZXJyb3Ig PSBkYXRhX2Vycm9yc1twcmFuZG9tX3UzMigpICUgQVJSQVlfU0laRShkYXRhX2Vycm9ycyldOwot CWRhdGEtPmJ5dGVzX3hmZXJlZCA9IChwcmFuZG9tX3UzMigpICUgKGRhdGEtPmJ5dGVzX3hmZXJl ZCA+PiA5KSkgPDwgOTsKKwlkYXRhLT5lcnJvciA9IGRhdGFfZXJyb3JzW3ByYW5kb21fdTMyX21h eChBUlJBWV9TSVpFKGRhdGFfZXJyb3JzKSldOworCWRhdGEtPmJ5dGVzX3hmZXJlZCA9IHByYW5k b21fdTMyX21heChkYXRhLT5ieXRlc194ZmVyZWQgPj4gOSkgPDwgOTsKIH0KIAogI2Vsc2UgLyog Q09ORklHX0ZBSUxfTU1DX1JFUVVFU1QgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3Qv ZHdfbW1jLmMgYi9kcml2ZXJzL21tYy9ob3N0L2R3X21tYy5jCmluZGV4IDU4MTYxNDE5NmE4NC4u Yzc4YmJjMjJlMGQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L2R3X21tYy5jCisrKyBi L2RyaXZlcnMvbW1jL2hvc3QvZHdfbW1jLmMKQEAgLTE4NTgsNyArMTg1OCw3IEBAIHN0YXRpYyB2 b2lkIGR3X21jaV9zdGFydF9mYXVsdF90aW1lcihzdHJ1Y3QgZHdfbWNpICpob3N0KQogCSAqIFRy eSB0byBpbmplY3QgdGhlIGVycm9yIGF0IHJhbmRvbSBwb2ludHMgZHVyaW5nIHRoZSBkYXRhIHRy YW5zZmVyLgogCSAqLwogCWhydGltZXJfc3RhcnQoJmhvc3QtPmZhdWx0X3RpbWVyLAotCQkgICAg ICBtc190b19rdGltZShwcmFuZG9tX3UzMigpICUgMjUpLAorCQkgICAgICBtc190b19rdGltZShw cmFuZG9tX3UzMl9tYXgoMjUpKSwKIAkJICAgICAgSFJUSU1FUl9NT0RFX1JFTCk7CiB9CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRzaW0uYyBiL2RyaXZlcnMvbXRkL25h bmQvcmF3L25hbmRzaW0uYwppbmRleCAyNGJlYWRlOTVjN2YuLjUwYmNmNzQ1ZTgxNiAxMDA2NDQK LS0tIGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvbmFuZHNpbS5jCisrKyBiL2RyaXZlcnMvbXRkL25h bmQvcmF3L25hbmRzaW0uYwpAQCAtMTQwNSw5ICsxNDA1LDkgQEAgc3RhdGljIHZvaWQgbnNfZG9f Yml0X2ZsaXBzKHN0cnVjdCBuYW5kc2ltICpucywgaW50IG51bSkKIAlpZiAoYml0ZmxpcHMgJiYg cHJhbmRvbV91MzIoKSA8ICgxIDw8IDIyKSkgewogCQlpbnQgZmxpcHMgPSAxOwogCQlpZiAoYml0 ZmxpcHMgPiAxKQotCQkJZmxpcHMgPSAocHJhbmRvbV91MzIoKSAlIChpbnQpIGJpdGZsaXBzKSAr IDE7CisJCQlmbGlwcyA9IHByYW5kb21fdTMyX21heChiaXRmbGlwcykgKyAxOwogCQl3aGlsZSAo ZmxpcHMtLSkgewotCQkJaW50IHBvcyA9IHByYW5kb21fdTMyKCkgJSAobnVtICogOCk7CisJCQlp bnQgcG9zID0gcHJhbmRvbV91MzJfbWF4KG51bSAqIDgpOwogCQkJbnMtPmJ1Zi5ieXRlW3BvcyAv IDhdIF49ICgxIDw8IChwb3MgJSA4KSk7CiAJCQlOU19XQVJOKCJyZWFkX3BhZ2U6IGZsaXBwaW5n IGJpdCAlZCBpbiBwYWdlICVkICIKIAkJCQkicmVhZGluZyBmcm9tICVkIGVjYzogY29ycmVjdGVk PSV1IGZhaWxlZD0ldVxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3Rlc3RzL210ZF9uYW5k ZWNjdGVzdC5jIGIvZHJpdmVycy9tdGQvdGVzdHMvbXRkX25hbmRlY2N0ZXN0LmMKaW5kZXggYzRm MjcxMzE0ZjUyLi4xYzcyMDFiMGYzNzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL3Rlc3RzL210 ZF9uYW5kZWNjdGVzdC5jCisrKyBiL2RyaXZlcnMvbXRkL3Rlc3RzL210ZF9uYW5kZWNjdGVzdC5j CkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBuYW5kX2VjY190ZXN0IHsKIHN0YXRpYyB2b2lkIHNp bmdsZV9iaXRfZXJyb3JfZGF0YSh2b2lkICplcnJvcl9kYXRhLCB2b2lkICpjb3JyZWN0X2RhdGEs CiAJCQkJc2l6ZV90IHNpemUpCiB7Ci0JdW5zaWduZWQgaW50IG9mZnNldCA9IHByYW5kb21fdTMy KCkgJSAoc2l6ZSAqIEJJVFNfUEVSX0JZVEUpOworCXVuc2lnbmVkIGludCBvZmZzZXQgPSBwcmFu ZG9tX3UzMl9tYXgoc2l6ZSAqIEJJVFNfUEVSX0JZVEUpOwogCiAJbWVtY3B5KGVycm9yX2RhdGEs IGNvcnJlY3RfZGF0YSwgc2l6ZSk7CiAJX19jaGFuZ2VfYml0X2xlKG9mZnNldCwgZXJyb3JfZGF0 YSk7CkBAIC01OCw5ICs1OCw5IEBAIHN0YXRpYyB2b2lkIGRvdWJsZV9iaXRfZXJyb3JfZGF0YSh2 b2lkICplcnJvcl9kYXRhLCB2b2lkICpjb3JyZWN0X2RhdGEsCiB7CiAJdW5zaWduZWQgaW50IG9m ZnNldFsyXTsKIAotCW9mZnNldFswXSA9IHByYW5kb21fdTMyKCkgJSAoc2l6ZSAqIEJJVFNfUEVS X0JZVEUpOworCW9mZnNldFswXSA9IHByYW5kb21fdTMyX21heChzaXplICogQklUU19QRVJfQllU RSk7CiAJZG8gewotCQlvZmZzZXRbMV0gPSBwcmFuZG9tX3UzMigpICUgKHNpemUgKiBCSVRTX1BF Ul9CWVRFKTsKKwkJb2Zmc2V0WzFdID0gcHJhbmRvbV91MzJfbWF4KHNpemUgKiBCSVRTX1BFUl9C WVRFKTsKIAl9IHdoaWxlIChvZmZzZXRbMF0gPT0gb2Zmc2V0WzFdKTsKIAogCW1lbWNweShlcnJv cl9kYXRhLCBjb3JyZWN0X2RhdGEsIHNpemUpOwpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9p ZCBkb3VibGVfYml0X2Vycm9yX2RhdGEodm9pZCAqZXJyb3JfZGF0YSwgdm9pZCAqY29ycmVjdF9k YXRhLAogCiBzdGF0aWMgdW5zaWduZWQgaW50IHJhbmRvbV9lY2NfYml0KHNpemVfdCBzaXplKQog ewotCXVuc2lnbmVkIGludCBvZmZzZXQgPSBwcmFuZG9tX3UzMigpICUgKDMgKiBCSVRTX1BFUl9C WVRFKTsKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gcHJhbmRvbV91MzJfbWF4KDMgKiBCSVRTX1BF Ul9CWVRFKTsKIAogCWlmIChzaXplID09IDI1NikgewogCQkvKgpAQCAtNzksNyArNzksNyBAQCBz dGF0aWMgdW5zaWduZWQgaW50IHJhbmRvbV9lY2NfYml0KHNpemVfdCBzaXplKQogCQkgKiBhbmQg MTd0aCBiaXQpIGluIEVDQyBjb2RlIGZvciAyNTYgYnl0ZSBkYXRhIGJsb2NrCiAJCSAqLwogCQl3 aGlsZSAob2Zmc2V0ID09IDE2IHx8IG9mZnNldCA9PSAxNykKLQkJCW9mZnNldCA9IHByYW5kb21f dTMyKCkgJSAoMyAqIEJJVFNfUEVSX0JZVEUpOworCQkJb2Zmc2V0ID0gcHJhbmRvbV91MzJfbWF4 KDMgKiBCSVRTX1BFUl9CWVRFKTsKIAl9CiAKIAlyZXR1cm4gb2Zmc2V0OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9tdGQvdGVzdHMvc3RyZXNzdGVzdC5jIGIvZHJpdmVycy9tdGQvdGVzdHMvc3RyZXNz dGVzdC5jCmluZGV4IGNiMjljOGMxYjM3MC4uZDJmYWFjYTdmMTlkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL210ZC90ZXN0cy9zdHJlc3N0ZXN0LmMKKysrIGIvZHJpdmVycy9tdGQvdGVzdHMvc3RyZXNz dGVzdC5jCkBAIC00NSw5ICs0NSw4IEBAIHN0YXRpYyBpbnQgcmFuZF9lYih2b2lkKQogCXVuc2ln bmVkIGludCBlYjsKIAogYWdhaW46Ci0JZWIgPSBwcmFuZG9tX3UzMigpOwogCS8qIFJlYWQgb3Ig d3JpdGUgdXAgMiBlcmFzZWJsb2NrcyBhdCBhIHRpbWUgLSBoZW5jZSAnZWJjbnQgLSAxJyAqLwot CWViICU9IChlYmNudCAtIDEpOworCWViID0gcHJhbmRvbV91MzJfbWF4KGViY250IC0gMSk7CiAJ aWYgKGJidFtlYl0pCiAJCWdvdG8gYWdhaW47CiAJcmV0dXJuIGViOwpAQCAtNTUsMjAgKzU0LDEy IEBAIHN0YXRpYyBpbnQgcmFuZF9lYih2b2lkKQogCiBzdGF0aWMgaW50IHJhbmRfb2Zmcyh2b2lk KQogewotCXVuc2lnbmVkIGludCBvZmZzOwotCi0Jb2ZmcyA9IHByYW5kb21fdTMyKCk7Ci0Jb2Zm cyAlPSBidWZzaXplOwotCXJldHVybiBvZmZzOworCXJldHVybiBwcmFuZG9tX3UzMl9tYXgoYnVm c2l6ZSk7CiB9CiAKIHN0YXRpYyBpbnQgcmFuZF9sZW4oaW50IG9mZnMpCiB7Ci0JdW5zaWduZWQg aW50IGxlbjsKLQotCWxlbiA9IHByYW5kb21fdTMyKCk7Ci0JbGVuICU9IChidWZzaXplIC0gb2Zm cyk7Ci0JcmV0dXJuIGxlbjsKKwlyZXR1cm4gcHJhbmRvbV91MzJfbWF4KGJ1ZnNpemUgLSBvZmZz KTsKIH0KIAogc3RhdGljIGludCBkb19yZWFkKHZvaWQpCkBAIC0xMjcsNyArMTE4LDcgQEAgc3Rh dGljIGludCBkb193cml0ZSh2b2lkKQogCiBzdGF0aWMgaW50IGRvX29wZXJhdGlvbih2b2lkKQog ewotCWlmIChwcmFuZG9tX3UzMigpICYgMSkKKwlpZiAocHJhbmRvbV91MzJfbWF4KDIpKQogCQly ZXR1cm4gZG9fcmVhZCgpOwogCWVsc2UKIAkJcmV0dXJuIGRvX3dyaXRlKCk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL210ZC91YmkvZGVidWcuYyBiL2RyaXZlcnMvbXRkL3ViaS9kZWJ1Zy5jCmluZGV4 IDMxZDQyN2VlMTkxYS4uOTA4ZDBlMDg4NTU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC91Ymkv ZGVidWcuYworKysgYi9kcml2ZXJzL210ZC91YmkvZGVidWcuYwpAQCAtNTkwLDcgKzU5MCw3IEBA IGludCB1YmlfZGJnX3Bvd2VyX2N1dChzdHJ1Y3QgdWJpX2RldmljZSAqdWJpLCBpbnQgY2FsbGVy KQogCiAJCWlmICh1YmktPmRiZy5wb3dlcl9jdXRfbWF4ID4gdWJpLT5kYmcucG93ZXJfY3V0X21p bikgewogCQkJcmFuZ2UgPSB1YmktPmRiZy5wb3dlcl9jdXRfbWF4IC0gdWJpLT5kYmcucG93ZXJf Y3V0X21pbjsKLQkJCXViaS0+ZGJnLnBvd2VyX2N1dF9jb3VudGVyICs9IHByYW5kb21fdTMyKCkg JSByYW5nZTsKKwkJCXViaS0+ZGJnLnBvd2VyX2N1dF9jb3VudGVyICs9IHByYW5kb21fdTMyX21h eChyYW5nZSk7CiAJCX0KIAkJcmV0dXJuIDA7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQv dWJpL2RlYnVnLmggYi9kcml2ZXJzL210ZC91YmkvZGVidWcuaAppbmRleCAxMTgyNDhhNWQ3ZDQu LmRjOGQ4ZjgzNjU3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvdWJpL2RlYnVnLmgKKysrIGIv ZHJpdmVycy9tdGQvdWJpL2RlYnVnLmgKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGlubGluZSBp bnQgdWJpX2RiZ19pc19iZ3RfZGlzYWJsZWQoY29uc3Qgc3RydWN0IHViaV9kZXZpY2UgKnViaSkK IHN0YXRpYyBpbmxpbmUgaW50IHViaV9kYmdfaXNfYml0ZmxpcChjb25zdCBzdHJ1Y3QgdWJpX2Rl dmljZSAqdWJpKQogewogCWlmICh1YmktPmRiZy5lbXVsYXRlX2JpdGZsaXBzKQotCQlyZXR1cm4g IShwcmFuZG9tX3UzMigpICUgMjAwKTsKKwkJcmV0dXJuICFwcmFuZG9tX3UzMl9tYXgoMjAwKTsK IAlyZXR1cm4gMDsKIH0KIApAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgaW5saW5lIGludCB1Ymlf ZGJnX2lzX2JpdGZsaXAoY29uc3Qgc3RydWN0IHViaV9kZXZpY2UgKnViaSkKIHN0YXRpYyBpbmxp bmUgaW50IHViaV9kYmdfaXNfd3JpdGVfZmFpbHVyZShjb25zdCBzdHJ1Y3QgdWJpX2RldmljZSAq dWJpKQogewogCWlmICh1YmktPmRiZy5lbXVsYXRlX2lvX2ZhaWx1cmVzKQotCQlyZXR1cm4gIShw cmFuZG9tX3UzMigpICUgNTAwKTsKKwkJcmV0dXJuICFwcmFuZG9tX3UzMl9tYXgoNTAwKTsKIAly ZXR1cm4gMDsKIH0KIApAQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHViaV9k YmdfaXNfd3JpdGVfZmFpbHVyZShjb25zdCBzdHJ1Y3QgdWJpX2RldmljZSAqdWJpKQogc3RhdGlj IGlubGluZSBpbnQgdWJpX2RiZ19pc19lcmFzZV9mYWlsdXJlKGNvbnN0IHN0cnVjdCB1YmlfZGV2 aWNlICp1YmkpCiB7CiAJaWYgKHViaS0+ZGJnLmVtdWxhdGVfaW9fZmFpbHVyZXMpCi0JCXJldHVy biAhKHByYW5kb21fdTMyKCkgJSA0MDApOworCQlyZXR1cm4gIXByYW5kb21fdTMyX21heCg0MDAp OwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9h ZGNvbS9jbmljLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9jbmljLmMKaW5kZXgg ZTg2NTAzZDk3ZjMyLi5mNTk3YjMxM2FjYWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L2Jyb2FkY29tL2NuaWMuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9j bmljLmMKQEAgLTQxMDUsOCArNDEwNSw3IEBAIHN0YXRpYyBpbnQgY25pY19jbV9hbGxvY19tZW0o c3RydWN0IGNuaWNfZGV2ICpkZXYpCiAJZm9yIChpID0gMDsgaSA8IE1BWF9DTV9TS19UQkxfU1o7 IGkrKykKIAkJYXRvbWljX3NldCgmY3AtPmNza190YmxbaV0ucmVmX2NvdW50LCAwKTsKIAotCXBv cnRfaWQgPSBwcmFuZG9tX3UzMigpOwotCXBvcnRfaWQgJT0gQ05JQ19MT0NBTF9QT1JUX1JBTkdF OworCXBvcnRfaWQgPSBwcmFuZG9tX3UzMl9tYXgoQ05JQ19MT0NBTF9QT1JUX1JBTkdFKTsKIAlp ZiAoY25pY19pbml0X2lkX3RibCgmY3AtPmNza19wb3J0X3RibCwgQ05JQ19MT0NBTF9QT1JUX1JB TkdFLAogCQkJICAgICBDTklDX0xPQ0FMX1BPUlRfTUlOLCBwb3J0X2lkKSkgewogCQljbmljX2Nt X2ZyZWVfbWVtKGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lv L2lubGluZV9jcnlwdG8vY2h0bHMvY2h0bHNfaW8uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2No ZWxzaW8vaW5saW5lX2NyeXB0by9jaHRscy9jaHRsc19pby5jCmluZGV4IDUzOTk5MmRhZDhiYS4u YTQyNTYwODdhYzgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2lu bGluZV9jcnlwdG8vY2h0bHMvY2h0bHNfaW8uYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9j aGVsc2lvL2lubGluZV9jcnlwdG8vY2h0bHMvY2h0bHNfaW8uYwpAQCAtOTE5LDggKzkxOSw4IEBA IHN0YXRpYyBpbnQgY3NrX3dhaXRfbWVtb3J5KHN0cnVjdCBjaHRsc19kZXYgKmNkZXYsCiAJY3Vy cmVudF90aW1lbyA9ICp0aW1lb19wOwogCW5vYmxvY2sgPSAoKnRpbWVvX3AgPyBmYWxzZSA6IHRy dWUpOwogCWlmIChjc2tfbWVtX2ZyZWUoY2Rldiwgc2spKSB7Ci0JCWN1cnJlbnRfdGltZW8gPSAo cHJhbmRvbV91MzIoKSAlIChIWiAvIDUpKSArIDI7Ci0JCXZtX3dhaXQgPSAocHJhbmRvbV91MzIo KSAlIChIWiAvIDUpKSArIDI7CisJCWN1cnJlbnRfdGltZW8gPSBwcmFuZG9tX3UzMl9tYXgoSFog LyA1KSArIDI7CisJCXZtX3dhaXQgPSBwcmFuZG9tX3UzMl9tYXgoSFogLyA1KSArIDI7CiAJfQog CiAJYWRkX3dhaXRfcXVldWUoc2tfc2xlZXAoc2spLCAmd2FpdCk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9oYW1yYWRpby9iYXljb21fZXBwLmMgYi9kcml2ZXJzL25ldC9oYW1yYWRpby9iYXlj b21fZXBwLmMKaW5kZXggM2U2OTA3OWVkNjk0Li43ZGY3OGE3MjFiMDQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbmV0L2hhbXJhZGlvL2JheWNvbV9lcHAuYworKysgYi9kcml2ZXJzL25ldC9oYW1yYWRp by9iYXljb21fZXBwLmMKQEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgaW50IHRyYW5zbWl0KHN0 cnVjdCBiYXljb21fc3RhdGUgKmJjLCBpbnQgY250LCB1bnNpZ25lZCBjaGFyIHN0YXQpCiAJCQlp ZiAoKC0tYmMtPmhkbGN0eC5zbG90Y250KSA+IDApCiAJCQkJcmV0dXJuIDA7CiAJCQliYy0+aGRs Y3R4LnNsb3RjbnQgPSBiYy0+Y2hfcGFyYW1zLnNsb3R0aW1lOwotCQkJaWYgKChwcmFuZG9tX3Uz MigpICUgMjU2KSA+IGJjLT5jaF9wYXJhbXMucHBlcnNpc3QpCisJCQlpZiAocHJhbmRvbV91MzJf bWF4KDI1NikgPiBiYy0+Y2hfcGFyYW1zLnBwZXJzaXN0KQogCQkJCXJldHVybiAwOwogCQl9CiAJ fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaGFtcmFkaW8vaGRsY2Rydi5jIGIvZHJpdmVycy9u ZXQvaGFtcmFkaW8vaGRsY2Rydi5jCmluZGV4IDgyOTc0MTFlODdlYS4uMzYwZDA0MWE2MmM0IDEw MDY0NAotLS0gYS9kcml2ZXJzL25ldC9oYW1yYWRpby9oZGxjZHJ2LmMKKysrIGIvZHJpdmVycy9u ZXQvaGFtcmFkaW8vaGRsY2Rydi5jCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBoZGxjZHJ2X2Fy Yml0cmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaGRsY2Rydl9zdGF0ZSAqcykK IAlpZiAoKC0tcy0+aGRsY3R4LnNsb3RjbnQpID4gMCkKIAkJcmV0dXJuOwogCXMtPmhkbGN0eC5z bG90Y250ID0gcy0+Y2hfcGFyYW1zLnNsb3R0aW1lOwotCWlmICgocHJhbmRvbV91MzIoKSAlIDI1 NikgPiBzLT5jaF9wYXJhbXMucHBlcnNpc3QpCisJaWYgKHByYW5kb21fdTMyX21heCgyNTYpID4g cy0+Y2hfcGFyYW1zLnBwZXJzaXN0KQogCQlyZXR1cm47CiAJc3RhcnRfdHgoZGV2LCBzKTsKIH0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvL3lhbS5jIGIvZHJpdmVycy9uZXQvaGFt cmFkaW8veWFtLmMKaW5kZXggOTgwZjJiZTMyZjA1Li45N2E2Y2M1YzdhZTggMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbmV0L2hhbXJhZGlvL3lhbS5jCisrKyBiL2RyaXZlcnMvbmV0L2hhbXJhZGlvL3lh bS5jCkBAIC02MjYsNyArNjI2LDcgQEAgc3RhdGljIHZvaWQgeWFtX2FyYml0cmF0ZShzdHJ1Y3Qg bmV0X2RldmljZSAqZGV2KQogCXlwLT5zbG90Y250ID0geXAtPnNsb3QgLyAxMDsKIAogCS8qIGlz IHJhbmRvbSA+IHBlcnNpc3QgPyAqLwotCWlmICgocHJhbmRvbV91MzIoKSAlIDI1NikgPiB5cC0+ cGVycykKKwlpZiAocHJhbmRvbV91MzJfbWF4KDI1NikgPiB5cC0+cGVycykKIAkJcmV0dXJuOwog CiAJeWFtX3N0YXJ0X3R4KGRldiwgeXApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2F0 ODAzeC5jIGIvZHJpdmVycy9uZXQvcGh5L2F0ODAzeC5jCmluZGV4IDU5ZmUzNTY5NDJiNS4uMmE3 MTA4MzYxMjQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvYXQ4MDN4LmMKKysrIGIvZHJp dmVycy9uZXQvcGh5L2F0ODAzeC5jCkBAIC0xNzMyLDcgKzE3MzIsNyBAQCBzdGF0aWMgaW50IHFj YTgwOHhfcGh5X2Zhc3RfcmV0cmFpbl9jb25maWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikK IAogc3RhdGljIGludCBxY2E4MDh4X3BoeV9tc19yYW5kb21fc2VlZF9zZXQoc3RydWN0IHBoeV9k ZXZpY2UgKnBoeWRldikKIHsKLQl1MTYgc2VlZF92YWx1ZSA9IChwcmFuZG9tX3UzMigpICUgUUNB ODA4WF9NQVNURVJfU0xBVkVfU0VFRF9SQU5HRSk7CisJdTE2IHNlZWRfdmFsdWUgPSBwcmFuZG9t X3UzMl9tYXgoUUNBODA4WF9NQVNURVJfU0xBVkVfU0VFRF9SQU5HRSk7CiAKIAlyZXR1cm4gYXQ4 MDN4X2RlYnVnX3JlZ19tYXNrKHBoeWRldiwgUUNBODA4WF9QSFlfREVCVUdfTE9DQUxfU0VFRCwK IAkJCVFDQTgwOFhfTUFTVEVSX1NMQVZFX1NFRURfQ0ZHLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCmluZGV4IDQ3OTA0 MWYwNzBmOS4uMTBkOWQ5YzYzYjI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9i cm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxl c3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCkBAIC0xMTI4LDcgKzExMjgsNyBA QCBzdGF0aWMgdm9pZCBicmNtZl9wMnBfYWZ4X2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQogCWlmIChhZnhfaGRsLT5pc19saXN0ZW4gJiYgYWZ4X2hkbC0+bXlfbGlzdGVuX2NoYW4p CiAJCS8qIDEwMG1zIH4gMzAwbXMgKi8KIAkJZXJyID0gYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3Rl bihwMnAsIGFmeF9oZGwtPm15X2xpc3Rlbl9jaGFuLAotCQkJCQkJMTAwICogKDEgKyBwcmFuZG9t X3UzMigpICUgMykpOworCQkJCQkJMTAwICogKDEgKyBwcmFuZG9tX3UzMl9tYXgoMykpKTsKIAll bHNlCiAJCWVyciA9IGJyY21mX3AycF9hY3RfZnJtX3NlYXJjaChwMnAsIGFmeF9oZGwtPnBlZXJf bGlzdGVuX2NoYW4pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9p d2x3aWZpL212bS9tYWMtY3R4dC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lm aS9tdm0vbWFjLWN0eHQuYwppbmRleCBlZDU4NmU2ZDdkNjQuLmRlMGM1NDVkNTBmZCAxMDA2NDQK LS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjLWN0eHQuYwor KysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWMtY3R4dC5jCkBA IC0xMDk5LDcgKzEwOTksNyBAQCBzdGF0aWMgdm9pZCBpd2xfbXZtX21hY19jdHh0X2NtZF9maWxs X2FwKHN0cnVjdCBpd2xfbXZtICptdm0sCiAJCQlpd2xfbXZtX21hY19hcF9pdGVyYXRvciwgJmRh dGEpOwogCiAJCWlmIChkYXRhLmJlYWNvbl9kZXZpY2VfdHMpIHsKLQkJCXUzMiByYW5kID0gKHBy YW5kb21fdTMyKCkgJSAoNjQgLSAzNikpICsgMzY7CisJCQl1MzIgcmFuZCA9IHByYW5kb21fdTMy X21heCg2NCAtIDM2KSArIDM2OwogCQkJbXZtdmlmLT5hcF9iZWFjb25fdGltZSA9IGRhdGEuYmVh Y29uX2RldmljZV90cyArCiAJCQkJaWVlZTgwMjExX3R1X3RvX3VzZWMoZGF0YS5iZWFjb25faW50 ICogcmFuZCAvCiAJCQkJCQkgICAgIDEwMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvZmNv ZS9mY29lX2N0bHIuYyBiL2RyaXZlcnMvc2NzaS9mY29lL2Zjb2VfY3Rsci5jCmluZGV4IDM5ZTE2 ZWFiNDdhYS4uZGRjMDQ4MDY5YWYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvZmNvZS9mY29l X2N0bHIuYworKysgYi9kcml2ZXJzL3Njc2kvZmNvZS9mY29lX2N0bHIuYwpAQCAtMjIzMyw3ICsy MjMzLDcgQEAgc3RhdGljIHZvaWQgZmNvZV9jdGxyX3ZuX3Jlc3RhcnQoc3RydWN0IGZjb2VfY3Rs ciAqZmlwKQogCiAJaWYgKGZpcC0+cHJvYmVfdHJpZXMgPCBGSVBfVk5fUkxJTV9DT1VOVCkgewog CQlmaXAtPnByb2JlX3RyaWVzKys7Ci0JCXdhaXQgPSBwcmFuZG9tX3UzMigpICUgRklQX1ZOX1BS T0JFX1dBSVQ7CisJCXdhaXQgPSBwcmFuZG9tX3UzMl9tYXgoRklQX1ZOX1BST0JFX1dBSVQpOwog CX0gZWxzZQogCQl3YWl0ID0gRklQX1ZOX1JMSU1fSU5UOwogCW1vZF90aW1lcigmZmlwLT50aW1l ciwgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMod2FpdCkpOwpAQCAtMzEyNSw3ICszMTI1LDcg QEAgc3RhdGljIHZvaWQgZmNvZV9jdGxyX3ZuX3RpbWVvdXQoc3RydWN0IGZjb2VfY3RsciAqZmlw KQogCQkJCQkgIGZjb2VfYWxsX3ZuMnZuLCAwKTsKIAkJCWZpcC0+cG9ydF9rYV90aW1lID0gamlm ZmllcyArCiAJCQkJIG1zZWNzX3RvX2ppZmZpZXMoRklQX1ZOX0JFQUNPTl9JTlQgKwotCQkJCQko cHJhbmRvbV91MzIoKSAlIEZJUF9WTl9CRUFDT05fRlVaWikpOworCQkJCQlwcmFuZG9tX3UzMl9t YXgoRklQX1ZOX0JFQUNPTl9GVVpaKSk7CiAJCX0KIAkJaWYgKHRpbWVfYmVmb3JlKGZpcC0+cG9y dF9rYV90aW1lLCBuZXh0X3RpbWUpKQogCQkJbmV4dF90aW1lID0gZmlwLT5wb3J0X2thX3RpbWU7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWVkaS9xZWRpX21haW4uYyBiL2RyaXZlcnMvc2Nz aS9xZWRpL3FlZGlfbWFpbi5jCmluZGV4IGNlY2ZiMmNiNGM3Yi4uZGYyZmU3YmQyNmQxIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3Njc2kvcWVkaS9xZWRpX21haW4uYworKysgYi9kcml2ZXJzL3Njc2kv cWVkaS9xZWRpX21haW4uYwpAQCAtNjE4LDcgKzYxOCw3IEBAIHN0YXRpYyBpbnQgcWVkaV9jbV9h bGxvY19tZW0oc3RydWN0IHFlZGlfY3R4ICpxZWRpKQogCQkJCXNpemVvZihzdHJ1Y3QgcWVkaV9l bmRwb2ludCAqKSksIEdGUF9LRVJORUwpOwogCWlmICghcWVkaS0+ZXBfdGJsKQogCQlyZXR1cm4g LUVOT01FTTsKLQlwb3J0X2lkID0gcHJhbmRvbV91MzIoKSAlIFFFRElfTE9DQUxfUE9SVF9SQU5H RTsKKwlwb3J0X2lkID0gcHJhbmRvbV91MzJfbWF4KFFFRElfTE9DQUxfUE9SVF9SQU5HRSk7CiAJ aWYgKHFlZGlfaW5pdF9pZF90YmwoJnFlZGktPmxjbF9wb3J0X3RibCwgUUVESV9MT0NBTF9QT1JU X1JBTkdFLAogCQkJICAgICBRRURJX0xPQ0FMX1BPUlRfTUlOLCBwb3J0X2lkKSkgewogCQlxZWRp X2NtX2ZyZWVfbWVtKHFlZGkpOwpkaWZmIC0tZ2l0IGEvZnMvY2VwaC9pbm9kZS5jIGIvZnMvY2Vw aC9pbm9kZS5jCmluZGV4IDQyMzUxZDdhMGRkNi4uZjBjNmU3ZTdiOTJiIDEwMDY0NAotLS0gYS9m cy9jZXBoL2lub2RlLmMKKysrIGIvZnMvY2VwaC9pbm9kZS5jCkBAIC0zNjIsNyArMzYyLDcgQEAg c3RhdGljIGludCBjZXBoX2ZpbGxfZnJhZ3RyZWUoc3RydWN0IGlub2RlICppbm9kZSwKIAlpZiAo bnNwbGl0cyAhPSBjaS0+aV9mcmFndHJlZV9uc3BsaXRzKSB7CiAJCXVwZGF0ZSA9IHRydWU7CiAJ fSBlbHNlIGlmIChuc3BsaXRzKSB7Ci0JCWkgPSBwcmFuZG9tX3UzMigpICUgbnNwbGl0czsKKwkJ aSA9IHByYW5kb21fdTMyX21heChuc3BsaXRzKTsKIAkJaWQgPSBsZTMyX3RvX2NwdShmcmFndHJl ZS0+c3BsaXRzW2ldLmZyYWcpOwogCQlpZiAoIV9fY2VwaF9maW5kX2ZyYWcoY2ksIGlkKSkKIAkJ CXVwZGF0ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9mcy9jZXBoL21kc21hcC5jIGIvZnMvY2VwaC9t ZHNtYXAuYwppbmRleCA4ZDBhNmQyYzJkYTQuLjNmYmFiYzk4ZTFmNyAxMDA2NDQKLS0tIGEvZnMv Y2VwaC9tZHNtYXAuYworKysgYi9mcy9jZXBoL21kc21hcC5jCkBAIC0yOSw3ICsyOSw3IEBAIHN0 YXRpYyBpbnQgX19tZHNtYXBfZ2V0X3JhbmRvbV9tZHMoc3RydWN0IGNlcGhfbWRzbWFwICptLCBi b29sIGlnbm9yZV9sYWdneSkKIAkJcmV0dXJuIC0xOwogCiAJLyogcGljayAqLwotCW4gPSBwcmFu ZG9tX3UzMigpICUgbjsKKwluID0gcHJhbmRvbV91MzJfbWF4KG4pOwogCWZvciAoaiA9IDAsIGkg PSAwOyBpIDwgbS0+cG9zc2libGVfbWF4X3Jhbms7IGkrKykgewogCQlpZiAoQ0VQSF9NRFNfSVNf UkVBRFkoaSwgaWdub3JlX2xhZ2d5KSkKIAkJCWorKzsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3Vw ZXIuYyBiL2ZzL2V4dDQvc3VwZXIuYwppbmRleCA5YTY2YWJjY2ExYTguLjRhZjM1MTMyMDA3NSAx MDA2NDQKLS0tIGEvZnMvZXh0NC9zdXBlci5jCisrKyBiL2ZzL2V4dDQvc3VwZXIuYwpAQCAtMzgx MSw4ICszODExLDcgQEAgc3RhdGljIGludCBleHQ0X2xhenlpbml0X3RocmVhZCh2b2lkICphcmcp CiAJCQl9CiAJCQlpZiAoIXByb2dyZXNzKSB7CiAJCQkJZWxyLT5scl9uZXh0X3NjaGVkID0gamlm ZmllcyArCi0JCQkJCShwcmFuZG9tX3UzMigpCi0JCQkJCSAlIChFWFQ0X0RFRl9MSV9NQVhfU1RB UlRfREVMQVkgKiBIWikpOworCQkJCQlwcmFuZG9tX3UzMl9tYXgoRVhUNF9ERUZfTElfTUFYX1NU QVJUX0RFTEFZICogSFopOwogCQkJfQogCQkJaWYgKHRpbWVfYmVmb3JlKGVsci0+bHJfbmV4dF9z Y2hlZCwgbmV4dF93YWtldXApKQogCQkJCW5leHRfd2FrZXVwID0gZWxyLT5scl9uZXh0X3NjaGVk OwpAQCAtMzk1OSw4ICszOTU4LDggQEAgc3RhdGljIHN0cnVjdCBleHQ0X2xpX3JlcXVlc3QgKmV4 dDRfbGlfcmVxdWVzdF9uZXcoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwKIAkgKiBzcHJlYWQgdGhl IGlub2RlIHRhYmxlIGluaXRpYWxpemF0aW9uIHJlcXVlc3RzCiAJICogYmV0dGVyLgogCSAqLwot CWVsci0+bHJfbmV4dF9zY2hlZCA9IGppZmZpZXMgKyAocHJhbmRvbV91MzIoKSAlCi0JCQkJKEVY VDRfREVGX0xJX01BWF9TVEFSVF9ERUxBWSAqIEhaKSk7CisJZWxyLT5scl9uZXh0X3NjaGVkID0g amlmZmllcyArIHByYW5kb21fdTMyX21heCgKKwkJCQlFWFQ0X0RFRl9MSV9NQVhfU1RBUlRfREVM QVkgKiBIWik7CiAJcmV0dXJuIGVscjsKIH0KIApkaWZmIC0tZ2l0IGEvZnMvZjJmcy9nYy5jIGIv ZnMvZjJmcy9nYy5jCmluZGV4IDZkYTIxZDQwNWNlMS4uMmM1ZmQxZGIzYTNlIDEwMDY0NAotLS0g YS9mcy9mMmZzL2djLmMKKysrIGIvZnMvZjJmcy9nYy5jCkBAIC0yODUsNyArMjg1LDcgQEAgc3Rh dGljIHZvaWQgc2VsZWN0X3BvbGljeShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBnY190 eXBlLAogCiAJLyogbGV0J3Mgc2VsZWN0IGJlZ2lubmluZyBob3Qvc21hbGwgc3BhY2UgZmlyc3Qg aW4gbm9faGVhcCBtb2RlKi8KIAlpZiAoZjJmc19uZWVkX3JhbmRfc2VnKHNiaSkpCi0JCXAtPm9m ZnNldCA9IHByYW5kb21fdTMyKCkgJSAoTUFJTl9TRUNTKHNiaSkgKiBzYmktPnNlZ3NfcGVyX3Nl Yyk7CisJCXAtPm9mZnNldCA9IHByYW5kb21fdTMyX21heChNQUlOX1NFQ1Moc2JpKSAqIHNiaS0+ c2Vnc19wZXJfc2VjKTsKIAllbHNlIGlmICh0ZXN0X29wdChzYmksIE5PSEVBUCkgJiYKIAkJKHR5 cGUgPT0gQ1VSU0VHX0hPVF9EQVRBIHx8IElTX05PREVTRUcodHlwZSkpKQogCQlwLT5vZmZzZXQg PSAwOwpkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwpp bmRleCAwZGUyMWY4MmQ3YmMuLjUwN2Y3N2Y4MzlmMyAxMDA2NDQKLS0tIGEvZnMvZjJmcy9zZWdt ZW50LmMKKysrIGIvZnMvZjJmcy9zZWdtZW50LmMKQEAgLTI1MzUsNyArMjUzNSw3IEBAIHN0YXRp YyB1bnNpZ25lZCBpbnQgX19nZXRfbmV4dF9zZWdubyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks IGludCB0eXBlKQogCiAJc2FuaXR5X2NoZWNrX3NlZ190eXBlKHNiaSwgc2VnX3R5cGUpOwogCWlm IChmMmZzX25lZWRfcmFuZF9zZWcoc2JpKSkKLQkJcmV0dXJuIHByYW5kb21fdTMyKCkgJSAoTUFJ Tl9TRUNTKHNiaSkgKiBzYmktPnNlZ3NfcGVyX3NlYyk7CisJCXJldHVybiBwcmFuZG9tX3UzMl9t YXgoTUFJTl9TRUNTKHNiaSkgKiBzYmktPnNlZ3NfcGVyX3NlYyk7CiAKIAkvKiBpZiBzZWdzX3Bl cl9zZWMgaXMgbGFyZ2UgdGhhbiAxLCB3ZSBuZWVkIHRvIGtlZXAgb3JpZ2luYWwgcG9saWN5LiAq LwogCWlmIChfX2lzX2xhcmdlX3NlY3Rpb24oc2JpKSkKQEAgLTI1ODksNyArMjU4OSw3IEBAIHN0 YXRpYyB2b2lkIG5ld19jdXJzZWcoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBpbnQgdHlwZSwg Ym9vbCBuZXdfc2VjKQogCWN1cnNlZy0+YWxsb2NfdHlwZSA9IExGUzsKIAlpZiAoRjJGU19PUFRJ T04oc2JpKS5mc19tb2RlID09IEZTX01PREVfRlJBR01FTlRfQkxLKQogCQljdXJzZWctPmZyYWdt ZW50X3JlbWFpbmVkX2NodW5rID0KLQkJCQlwcmFuZG9tX3UzMigpICUgc2JpLT5tYXhfZnJhZ21l bnRfY2h1bmsgKyAxOworCQkJCXByYW5kb21fdTMyX21heChzYmktPm1heF9mcmFnbWVudF9jaHVu aykgKyAxOwogfQogCiBzdGF0aWMgaW50IF9fbmV4dF9mcmVlX2Jsa29mZihzdHJ1Y3QgZjJmc19z Yl9pbmZvICpzYmksCkBAIC0yNjI2LDkgKzI2MjYsOSBAQCBzdGF0aWMgdm9pZCBfX3JlZnJlc2hf bmV4dF9ibGtvZmYoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAogCQkJLyogVG8gYWxsb2NhdGUg YmxvY2sgY2h1bmtzIGluIGRpZmZlcmVudCBzaXplcywgdXNlIHJhbmRvbSBudW1iZXIgKi8KIAkJ CWlmICgtLXNlZy0+ZnJhZ21lbnRfcmVtYWluZWRfY2h1bmsgPD0gMCkgewogCQkJCXNlZy0+ZnJh Z21lbnRfcmVtYWluZWRfY2h1bmsgPQotCQkJCSAgIHByYW5kb21fdTMyKCkgJSBzYmktPm1heF9m cmFnbWVudF9jaHVuayArIDE7CisJCQkJICAgcHJhbmRvbV91MzJfbWF4KHNiaS0+bWF4X2ZyYWdt ZW50X2NodW5rKSArIDE7CiAJCQkJc2VnLT5uZXh0X2Jsa29mZiArPQotCQkJCSAgIHByYW5kb21f dTMyKCkgJSBzYmktPm1heF9mcmFnbWVudF9ob2xlICsgMTsKKwkJCQkgICBwcmFuZG9tX3UzMl9t YXgoc2JpLT5tYXhfZnJhZ21lbnRfaG9sZSkgKyAxOwogCQkJfQogCQl9CiAJfQpkaWZmIC0tZ2l0 IGEvZnMvdWJpZnMvZGVidWcuYyBiL2ZzL3ViaWZzL2RlYnVnLmMKaW5kZXggZmM3MThmNjE3OGYy Li5mNGQzYjU2OGFhNjQgMTAwNjQ0Ci0tLSBhL2ZzL3ViaWZzL2RlYnVnLmMKKysrIGIvZnMvdWJp ZnMvZGVidWcuYwpAQCAtMjQ2Nyw3ICsyNDY3LDcgQEAgaW50IGRiZ19jaGVja19ub25kYXRhX25v ZGVzX29yZGVyKHN0cnVjdCB1Ymlmc19pbmZvICpjLCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQog CiBzdGF0aWMgaW5saW5lIGludCBjaGFuY2UodW5zaWduZWQgaW50IG4sIHVuc2lnbmVkIGludCBv dXRfb2YpCiB7Ci0JcmV0dXJuICEhKChwcmFuZG9tX3UzMigpICUgb3V0X29mKSArIDEgPD0gbik7 CisJcmV0dXJuICEhKHByYW5kb21fdTMyX21heChvdXRfb2YpICsgMSA8PSBuKTsKIAogfQogCkBA IC0yNDg1LDEzICsyNDg1LDEzIEBAIHN0YXRpYyBpbnQgcG93ZXJfY3V0X2VtdWxhdGVkKHN0cnVj dCB1Ymlmc19pbmZvICpjLCBpbnQgbG51bSwgaW50IHdyaXRlKQogCQkJaWYgKGNoYW5jZSgxLCAy KSkgewogCQkJCWQtPnBjX2RlbGF5ID0gMTsKIAkJCQkvKiBGYWlsIHdpdGhpbiAxIG1pbnV0ZSAq LwotCQkJCWRlbGF5ID0gcHJhbmRvbV91MzIoKSAlIDYwMDAwOworCQkJCWRlbGF5ID0gcHJhbmRv bV91MzJfbWF4KDYwMDAwKTsKIAkJCQlkLT5wY190aW1lb3V0ID0gamlmZmllczsKIAkJCQlkLT5w Y190aW1lb3V0ICs9IG1zZWNzX3RvX2ppZmZpZXMoZGVsYXkpOwogCQkJCXViaWZzX3dhcm4oYywg ImZhaWxpbmcgYWZ0ZXIgJWx1bXMiLCBkZWxheSk7CiAJCQl9IGVsc2UgewogCQkJCWQtPnBjX2Rl bGF5ID0gMjsKLQkJCQlkZWxheSA9IHByYW5kb21fdTMyKCkgJSAxMDAwMDsKKwkJCQlkZWxheSA9 IHByYW5kb21fdTMyX21heCgxMDAwMCk7CiAJCQkJLyogRmFpbCB3aXRoaW4gMTAwMDAgb3BlcmF0 aW9ucyAqLwogCQkJCWQtPnBjX2NudF9tYXggPSBkZWxheTsKIAkJCQl1Ymlmc193YXJuKGMsICJm YWlsaW5nIGFmdGVyICVsdSBjYWxscyIsIGRlbGF5KTsKQEAgLTI1NzEsNyArMjU3MSw3IEBAIHN0 YXRpYyBpbnQgY29ycnVwdF9kYXRhKGNvbnN0IHN0cnVjdCB1Ymlmc19pbmZvICpjLCBjb25zdCB2 b2lkICpidWYsCiAJdW5zaWduZWQgaW50IGZyb20sIHRvLCBmZnMgPSBjaGFuY2UoMSwgMik7CiAJ dW5zaWduZWQgY2hhciAqcCA9ICh2b2lkICopYnVmOwogCi0JZnJvbSA9IHByYW5kb21fdTMyKCkg JSBsZW47CisJZnJvbSA9IHByYW5kb21fdTMyX21heChsZW4pOwogCS8qIENvcnJ1cHRpb24gc3Bh biBtYXggdG8gZW5kIG9mIHdyaXRlIHVuaXQgKi8KIAl0byA9IG1pbihsZW4sIEFMSUdOKGZyb20g KyAxLCBjLT5tYXhfd3JpdGVfc2l6ZSkpOwogCmRpZmYgLS1naXQgYS9mcy91Ymlmcy9scHRfY29t bWl0LmMgYi9mcy91Ymlmcy9scHRfY29tbWl0LmMKaW5kZXggZDc2YTE5ZTQ2MGNkLi5jZmJjMzFm NzA5ZjQgMTAwNjQ0Ci0tLSBhL2ZzL3ViaWZzL2xwdF9jb21taXQuYworKysgYi9mcy91Ymlmcy9s cHRfY29tbWl0LmMKQEAgLTE5NzAsMjggKzE5NzAsMjggQEAgc3RhdGljIGludCBkYmdfcG9wdWxh dGVfbHNhdmUoc3RydWN0IHViaWZzX2luZm8gKmMpCiAKIAlpZiAoIWRiZ19pc19jaGtfZ2VuKGMp KQogCQlyZXR1cm4gMDsKLQlpZiAocHJhbmRvbV91MzIoKSAmIDMpCisJaWYgKHByYW5kb21fdTMy X21heCg0KSkKIAkJcmV0dXJuIDA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgYy0+bHNhdmVfY250OyBp KyspCiAJCWMtPmxzYXZlW2ldID0gYy0+bWFpbl9maXJzdDsKIAogCWxpc3RfZm9yX2VhY2hfZW50 cnkobHByb3BzLCAmYy0+ZW1wdHlfbGlzdCwgbGlzdCkKLQkJYy0+bHNhdmVbcHJhbmRvbV91MzIo KSAlIGMtPmxzYXZlX2NudF0gPSBscHJvcHMtPmxudW07CisJCWMtPmxzYXZlW3ByYW5kb21fdTMy X21heChjLT5sc2F2ZV9jbnQpXSA9IGxwcm9wcy0+bG51bTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 KGxwcm9wcywgJmMtPmZyZWVhYmxlX2xpc3QsIGxpc3QpCi0JCWMtPmxzYXZlW3ByYW5kb21fdTMy KCkgJSBjLT5sc2F2ZV9jbnRdID0gbHByb3BzLT5sbnVtOworCQljLT5sc2F2ZVtwcmFuZG9tX3Uz Ml9tYXgoYy0+bHNhdmVfY250KV0gPSBscHJvcHMtPmxudW07CiAJbGlzdF9mb3JfZWFjaF9lbnRy eShscHJvcHMsICZjLT5mcmRpX2lkeF9saXN0LCBsaXN0KQotCQljLT5sc2F2ZVtwcmFuZG9tX3Uz MigpICUgYy0+bHNhdmVfY250XSA9IGxwcm9wcy0+bG51bTsKKwkJYy0+bHNhdmVbcHJhbmRvbV91 MzJfbWF4KGMtPmxzYXZlX2NudCldID0gbHByb3BzLT5sbnVtOwogCiAJaGVhcCA9ICZjLT5scHRf aGVhcFtMUFJPUFNfRElSVFlfSURYIC0gMV07CiAJZm9yIChpID0gMDsgaSA8IGhlYXAtPmNudDsg aSsrKQotCQljLT5sc2F2ZVtwcmFuZG9tX3UzMigpICUgYy0+bHNhdmVfY250XSA9IGhlYXAtPmFy cltpXS0+bG51bTsKKwkJYy0+bHNhdmVbcHJhbmRvbV91MzJfbWF4KGMtPmxzYXZlX2NudCldID0g aGVhcC0+YXJyW2ldLT5sbnVtOwogCWhlYXAgPSAmYy0+bHB0X2hlYXBbTFBST1BTX0RJUlRZIC0g MV07CiAJZm9yIChpID0gMDsgaSA8IGhlYXAtPmNudDsgaSsrKQotCQljLT5sc2F2ZVtwcmFuZG9t X3UzMigpICUgYy0+bHNhdmVfY250XSA9IGhlYXAtPmFycltpXS0+bG51bTsKKwkJYy0+bHNhdmVb cHJhbmRvbV91MzJfbWF4KGMtPmxzYXZlX2NudCldID0gaGVhcC0+YXJyW2ldLT5sbnVtOwogCWhl YXAgPSAmYy0+bHB0X2hlYXBbTFBST1BTX0ZSRUUgLSAxXTsKIAlmb3IgKGkgPSAwOyBpIDwgaGVh cC0+Y250OyBpKyspCi0JCWMtPmxzYXZlW3ByYW5kb21fdTMyKCkgJSBjLT5sc2F2ZV9jbnRdID0g aGVhcC0+YXJyW2ldLT5sbnVtOworCQljLT5sc2F2ZVtwcmFuZG9tX3UzMl9tYXgoYy0+bHNhdmVf Y250KV0gPSBoZWFwLT5hcnJbaV0tPmxudW07CiAKIAlyZXR1cm4gMTsKIH0KZGlmZiAtLWdpdCBh L2ZzL3ViaWZzL3RuY19jb21taXQuYyBiL2ZzL3ViaWZzL3RuY19jb21taXQuYwppbmRleCA1OGM5 MmM5NmVjZWYuLjAxMzYyYWQ1ZjgwNCAxMDA2NDQKLS0tIGEvZnMvdWJpZnMvdG5jX2NvbW1pdC5j CisrKyBiL2ZzL3ViaWZzL3RuY19jb21taXQuYwpAQCAtNzAwLDcgKzcwMCw3IEBAIHN0YXRpYyBp bnQgYWxsb2NfaWR4X2xlYnMoc3RydWN0IHViaWZzX2luZm8gKmMsIGludCBjbnQpCiAJCWMtPmls ZWJzW2MtPmlsZWJfY250KytdID0gbG51bTsKIAkJZGJnX2NtdCgiTEVCICVkIiwgbG51bSk7CiAJ fQotCWlmIChkYmdfaXNfY2hrX2luZGV4KGMpICYmICEocHJhbmRvbV91MzIoKSAmIDcpKQorCWlm IChkYmdfaXNfY2hrX2luZGV4KGMpICYmICFwcmFuZG9tX3UzMl9tYXgoOCkpCiAJCXJldHVybiAt RU5PU1BDOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZnMveGZzL2xpYnhmcy94ZnNfYWxs b2MuYyBiL2ZzL3hmcy9saWJ4ZnMveGZzX2FsbG9jLmMKaW5kZXggZTJiZGYwODljMGEzLi42MjYx NTk5YmIzODkgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saWJ4ZnMveGZzX2FsbG9jLmMKKysrIGIvZnMv eGZzL2xpYnhmcy94ZnNfYWxsb2MuYwpAQCAtMTUyMCw3ICsxNTIwLDcgQEAgeGZzX2FsbG9jX2Fn X3ZleHRlbnRfbGFzdGJsb2NrKAogCiAjaWZkZWYgREVCVUcKIAkvKiBSYW5kb21seSBkb24ndCBl eGVjdXRlIHRoZSBmaXJzdCBhbGdvcml0aG0uICovCi0JaWYgKHByYW5kb21fdTMyKCkgJiAxKQor CWlmIChwcmFuZG9tX3UzMl9tYXgoMikpCiAJCXJldHVybiAwOwogI2VuZGlmCiAKZGlmZiAtLWdp dCBhL2ZzL3hmcy9saWJ4ZnMveGZzX2lhbGxvYy5jIGIvZnMveGZzL2xpYnhmcy94ZnNfaWFsbG9j LmMKaW5kZXggNmNkZmQ2NGJjNTZiLi43ODM4YjMxMTI2ZTIgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9s aWJ4ZnMveGZzX2lhbGxvYy5jCisrKyBiL2ZzL3hmcy9saWJ4ZnMveGZzX2lhbGxvYy5jCkBAIC02 MzYsNyArNjM2LDcgQEAgeGZzX2lhbGxvY19hZ19hbGxvYygKIAkvKiByYW5kb21seSBkbyBzcGFy c2UgaW5vZGUgYWxsb2NhdGlvbnMgKi8KIAlpZiAoeGZzX2hhc19zcGFyc2Vpbm9kZXModHAtPnRf bW91bnRwKSAmJgogCSAgICBpZ2VvLT5pYWxsb2NfbWluX2Jsa3MgPCBpZ2VvLT5pYWxsb2NfYmxr cykKLQkJZG9fc3BhcnNlID0gcHJhbmRvbV91MzIoKSAmIDE7CisJCWRvX3NwYXJzZSA9IHByYW5k b21fdTMyX21heCgyKTsKICNlbmRpZgogCiAJLyoKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfZXJy b3IuYyBiL2ZzL3hmcy94ZnNfZXJyb3IuYwppbmRleCAyOTZmYWE0MWQ4MWQuLjdkYjU4OGVkMGJl NSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19lcnJvci5jCisrKyBiL2ZzL3hmcy94ZnNfZXJyb3Iu YwpAQCAtMjc0LDcgKzI3NCw3IEBAIHhmc19lcnJvcnRhZ190ZXN0KAogCiAJQVNTRVJUKGVycm9y X3RhZyA8IFhGU19FUlJUQUdfTUFYKTsKIAlyYW5kZmFjdG9yID0gbXAtPm1fZXJyb3J0YWdbZXJy b3JfdGFnXTsKLQlpZiAoIXJhbmRmYWN0b3IgfHwgcHJhbmRvbV91MzIoKSAlIHJhbmRmYWN0b3Ip CisJaWYgKCFyYW5kZmFjdG9yIHx8IHByYW5kb21fdTMyX21heChyYW5kZmFjdG9yKSkKIAkJcmV0 dXJuIGZhbHNlOwogCiAJeGZzX3dhcm5fcmF0ZWxpbWl0ZWQobXAsCmRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L25vZGVtYXNrLmggYi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgKaW5kZXggNGI3 MWE5NjE5MGE4Li42NmVlOWI0Yjc5MjUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbm9kZW1h c2suaAorKysgYi9pbmNsdWRlL2xpbnV4L25vZGVtYXNrLmgKQEAgLTUwOSw3ICs1MDksNyBAQCBz dGF0aWMgaW5saW5lIGludCBub2RlX3JhbmRvbShjb25zdCBub2RlbWFza190ICptYXNrcCkKIAl3 ID0gbm9kZXNfd2VpZ2h0KCptYXNrcCk7CiAJaWYgKHcpCiAJCWJpdCA9IGJpdG1hcF9vcmRfdG9f cG9zKG1hc2twLT5iaXRzLAotCQkJZ2V0X3JhbmRvbV9pbnQoKSAlIHcsIE1BWF9OVU1OT0RFUyk7 CisJCQlwcmFuZG9tX3UzMl9tYXgodyksIE1BWF9OVU1OT0RFUyk7CiAJcmV0dXJuIGJpdDsKICNl bHNlCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL2NvcmUuYyBiL2tlcm5lbC9i cGYvY29yZS5jCmluZGV4IDNkOWViM2FlMzM0Yy4uYWRlNmIwM2IxZDliIDEwMDY0NAotLS0gYS9r ZXJuZWwvYnBmL2NvcmUuYworKysgYi9rZXJuZWwvYnBmL2NvcmUuYwpAQCAtMTAyNyw3ICsxMDI3 LDcgQEAgYnBmX2ppdF9iaW5hcnlfYWxsb2ModW5zaWduZWQgaW50IHByb2dsZW4sIHU4ICoqaW1h Z2VfcHRyLAogCWhkci0+c2l6ZSA9IHNpemU7CiAJaG9sZSA9IG1pbl90KHVuc2lnbmVkIGludCwg c2l6ZSAtIChwcm9nbGVuICsgc2l6ZW9mKCpoZHIpKSwKIAkJICAgICBQQUdFX1NJWkUgLSBzaXpl b2YoKmhkcikpOwotCXN0YXJ0ID0gKGdldF9yYW5kb21faW50KCkgJSBob2xlKSAmIH4oYWxpZ25t ZW50IC0gMSk7CisJc3RhcnQgPSBwcmFuZG9tX3UzMl9tYXgoaG9sZSkgJiB+KGFsaWdubWVudCAt IDEpOwogCiAJLyogTGVhdmUgYSByYW5kb20gbnVtYmVyIG9mIGluc3RydWN0aW9ucyBiZWZvcmUg QlBGIGNvZGUuICovCiAJKmltYWdlX3B0ciA9ICZoZHItPmltYWdlW3N0YXJ0XTsKQEAgLTEwODks NyArMTA4OSw3IEBAIGJwZl9qaXRfYmluYXJ5X3BhY2tfYWxsb2ModW5zaWduZWQgaW50IHByb2ds ZW4sIHU4ICoqaW1hZ2VfcHRyLAogCiAJaG9sZSA9IG1pbl90KHVuc2lnbmVkIGludCwgc2l6ZSAt IChwcm9nbGVuICsgc2l6ZW9mKCpyb19oZWFkZXIpKSwKIAkJICAgICBCUEZfUFJPR19DSFVOS19T SVpFIC0gc2l6ZW9mKCpyb19oZWFkZXIpKTsKLQlzdGFydCA9IChnZXRfcmFuZG9tX2ludCgpICUg aG9sZSkgJiB+KGFsaWdubWVudCAtIDEpOworCXN0YXJ0ID0gcHJhbmRvbV91MzJfbWF4KGhvbGUp ICYgfihhbGlnbm1lbnQgLSAxKTsKIAogCSppbWFnZV9wdHIgPSAmcm9faGVhZGVyLT5pbWFnZVtz dGFydF07CiAJKnJ3X2ltYWdlID0gJigqcndfaGVhZGVyKS0+aW1hZ2Vbc3RhcnRdOwpkaWZmIC0t Z2l0IGEva2VybmVsL2xvY2tpbmcvdGVzdC13d19tdXRleC5jIGIva2VybmVsL2xvY2tpbmcvdGVz dC13d19tdXRleC5jCmluZGV4IDM1MzAwNDE1NWQ2NS4uNDNlZmIyYTA0MTYwIDEwMDY0NAotLS0g YS9rZXJuZWwvbG9ja2luZy90ZXN0LXd3X211dGV4LmMKKysrIGIva2VybmVsL2xvY2tpbmcvdGVz dC13d19tdXRleC5jCkBAIC0zOTksNyArMzk5LDcgQEAgc3RhdGljIGludCAqZ2V0X3JhbmRvbV9v cmRlcihpbnQgY291bnQpCiAJCW9yZGVyW25dID0gbjsKIAogCWZvciAobiA9IGNvdW50IC0gMTsg biA+IDE7IG4tLSkgewotCQlyID0gZ2V0X3JhbmRvbV9pbnQoKSAlIChuICsgMSk7CisJCXIgPSBw cmFuZG9tX3UzMl9tYXgobiArIDEpOwogCQlpZiAociAhPSBuKSB7CiAJCQl0bXAgPSBvcmRlcltu XTsKIAkJCW9yZGVyW25dID0gb3JkZXJbcl07CkBAIC01MzgsNyArNTM4LDcgQEAgc3RhdGljIHZv aWQgc3RyZXNzX29uZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3Qg c3RyZXNzICpzdHJlc3MgPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpzdHJlc3MpLCB3b3Jr KTsKIAljb25zdCBpbnQgbmxvY2tzID0gc3RyZXNzLT5ubG9ja3M7Ci0Jc3RydWN0IHd3X211dGV4 ICpsb2NrID0gc3RyZXNzLT5sb2NrcyArIChnZXRfcmFuZG9tX2ludCgpICUgbmxvY2tzKTsKKwlz dHJ1Y3Qgd3dfbXV0ZXggKmxvY2sgPSBzdHJlc3MtPmxvY2tzICsgcHJhbmRvbV91MzJfbWF4KG5s b2Nrcyk7CiAJaW50IGVycjsKIAogCWRvIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC90aW1lL2Nsb2Nr c291cmNlLmMgYi9rZXJuZWwvdGltZS9jbG9ja3NvdXJjZS5jCmluZGV4IGNlZTVkYTFlNTRjNC4u ODA1OGJlYzg3YWNlIDEwMDY0NAotLS0gYS9rZXJuZWwvdGltZS9jbG9ja3NvdXJjZS5jCisrKyBi L2tlcm5lbC90aW1lL2Nsb2Nrc291cmNlLmMKQEAgLTMxMCw3ICszMTAsNyBAQCBzdGF0aWMgdm9p ZCBjbG9ja3NvdXJjZV92ZXJpZnlfY2hvb3NlX2NwdXModm9pZCkKIAkgKiBDUFVzIHRoYXQgYXJl IGN1cnJlbnRseSBvbmxpbmUuCiAJICovCiAJZm9yIChpID0gMTsgaSA8IG47IGkrKykgewotCQlj cHUgPSBwcmFuZG9tX3UzMigpICUgbnJfY3B1X2lkczsKKwkJY3B1ID0gcHJhbmRvbV91MzJfbWF4 KG5yX2NwdV9pZHMpOwogCQljcHUgPSBjcHVtYXNrX25leHQoY3B1IC0gMSwgY3B1X29ubGluZV9t YXNrKTsKIAkJaWYgKGNwdSA+PSBucl9jcHVfaWRzKQogCQkJY3B1ID0gY3B1bWFza19maXJzdChj cHVfb25saW5lX21hc2spOwpkaWZmIC0tZ2l0IGEvbGliL2ZhdWx0LWluamVjdC5jIGIvbGliL2Zh dWx0LWluamVjdC5jCmluZGV4IDQyMzc4NGQ5YzA1OC4uOTZlMDkyZGU1YjcyIDEwMDY0NAotLS0g YS9saWIvZmF1bHQtaW5qZWN0LmMKKysrIGIvbGliL2ZhdWx0LWluamVjdC5jCkBAIC0xMzksNyAr MTM5LDcgQEAgYm9vbCBzaG91bGRfZmFpbChzdHJ1Y3QgZmF1bHRfYXR0ciAqYXR0ciwgc3NpemVf dCBzaXplKQogCQkJcmV0dXJuIGZhbHNlOwogCX0KIAotCWlmIChhdHRyLT5wcm9iYWJpbGl0eSA8 PSBwcmFuZG9tX3UzMigpICUgMTAwKQorCWlmIChhdHRyLT5wcm9iYWJpbGl0eSA8PSBwcmFuZG9t X3UzMl9tYXgoMTAwKSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKCFmYWlsX3N0YWNrdHJhY2Uo YXR0cikpCmRpZmYgLS1naXQgYS9saWIvZmluZF9iaXRfYmVuY2htYXJrLmMgYi9saWIvZmluZF9i aXRfYmVuY2htYXJrLmMKaW5kZXggZGI5MDRiNTdkNGI4Li4xYTY0NjZjNjRiYjYgMTAwNjQ0Ci0t LSBhL2xpYi9maW5kX2JpdF9iZW5jaG1hcmsuYworKysgYi9saWIvZmluZF9iaXRfYmVuY2htYXJr LmMKQEAgLTE1Nyw4ICsxNTcsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBmaW5kX2JpdF90ZXN0KHZv aWQpCiAJYml0bWFwX3plcm8oYml0bWFwMiwgQklUTUFQX0xFTik7CiAKIAl3aGlsZSAobmJpdHMt LSkgewotCQlfX3NldF9iaXQocHJhbmRvbV91MzIoKSAlIEJJVE1BUF9MRU4sIGJpdG1hcCk7Ci0J CV9fc2V0X2JpdChwcmFuZG9tX3UzMigpICUgQklUTUFQX0xFTiwgYml0bWFwMik7CisJCV9fc2V0 X2JpdChwcmFuZG9tX3UzMl9tYXgoQklUTUFQX0xFTiksIGJpdG1hcCk7CisJCV9fc2V0X2JpdChw cmFuZG9tX3UzMl9tYXgoQklUTUFQX0xFTiksIGJpdG1hcDIpOwogCX0KIAogCXRlc3RfZmluZF9u ZXh0X2JpdChiaXRtYXAsIEJJVE1BUF9MRU4pOwpkaWZmIC0tZ2l0IGEvbGliL2tvYmplY3QuYyBi L2xpYi9rb2JqZWN0LmMKaW5kZXggNWYwZTcxYWIyOTJjLi5hMGIyZGJmY2ZhMjMgMTAwNjQ0Ci0t LSBhL2xpYi9rb2JqZWN0LmMKKysrIGIvbGliL2tvYmplY3QuYwpAQCAtNjk0LDcgKzY5NCw3IEBA IHN0YXRpYyB2b2lkIGtvYmplY3RfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKIHsKIAlzdHJ1 Y3Qga29iamVjdCAqa29iaiA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3Qga29iamVjdCwga3Jl Zik7CiAjaWZkZWYgQ09ORklHX0RFQlVHX0tPQkpFQ1RfUkVMRUFTRQotCXVuc2lnbmVkIGxvbmcg ZGVsYXkgPSBIWiArIEhaICogKGdldF9yYW5kb21faW50KCkgJiAweDMpOworCXVuc2lnbmVkIGxv bmcgZGVsYXkgPSBIWiArIEhaICogcHJhbmRvbV91MzJfbWF4KDQpOwogCXByX2luZm8oImtvYmpl Y3Q6ICclcycgKCVwKTogJXMsIHBhcmVudCAlcCAoZGVsYXllZCAlbGQpXG4iLAogCQkga29iamVj dF9uYW1lKGtvYmopLCBrb2JqLCBfX2Z1bmNfXywga29iai0+cGFyZW50LCBkZWxheSk7CiAJSU5J VF9ERUxBWUVEX1dPUksoJmtvYmotPnJlbGVhc2UsIGtvYmplY3RfZGVsYXllZF9jbGVhbnVwKTsK ZGlmZiAtLWdpdCBhL2xpYi9yZWVkX3NvbG9tb24vdGVzdF9yc2xpYi5jIGIvbGliL3JlZWRfc29s b21vbi90ZXN0X3JzbGliLmMKaW5kZXggZDlkMWMzM2FlYmRhLi40ZDI0MWJkYzg4YWEgMTAwNjQ0 Ci0tLSBhL2xpYi9yZWVkX3NvbG9tb24vdGVzdF9yc2xpYi5jCisrKyBiL2xpYi9yZWVkX3NvbG9t b24vdGVzdF9yc2xpYi5jCkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIGludCBnZXRfcmN3X3dl KHN0cnVjdCByc19jb250cm9sICpycywgc3RydWN0IHdzcGFjZSAqd3MsCiAKIAkJZG8gewogCQkJ LyogTXVzdCBub3QgY2hvb3NlIHRoZSBzYW1lIGxvY2F0aW9uIHR3aWNlICovCi0JCQllcnJsb2Mg PSBwcmFuZG9tX3UzMigpICUgbGVuOworCQkJZXJybG9jID0gcHJhbmRvbV91MzJfbWF4KGxlbik7 CiAJCX0gd2hpbGUgKGVycmxvY3NbZXJybG9jXSAhPSAwKTsKIAogCQllcnJsb2NzW2VycmxvY10g PSAxOwpAQCAtMTk0LDEyICsxOTQsMTIgQEAgc3RhdGljIGludCBnZXRfcmN3X3dlKHN0cnVjdCBy c19jb250cm9sICpycywgc3RydWN0IHdzcGFjZSAqd3MsCiAJZm9yIChpID0gMDsgaSA8IGVyYXM7 IGkrKykgewogCQlkbyB7CiAJCQkvKiBNdXN0IG5vdCBjaG9vc2UgdGhlIHNhbWUgbG9jYXRpb24g dHdpY2UgKi8KLQkJCWVycmxvYyA9IHByYW5kb21fdTMyKCkgJSBsZW47CisJCQllcnJsb2MgPSBw cmFuZG9tX3UzMl9tYXgobGVuKTsKIAkJfSB3aGlsZSAoZXJybG9jc1tlcnJsb2NdICE9IDApOwog CiAJCWRlcnJsb2NzW2ldID0gZXJybG9jOwogCi0JCWlmIChld3NjICYmIChwcmFuZG9tX3UzMigp ICYgMSkpIHsKKwkJaWYgKGV3c2MgJiYgcHJhbmRvbV91MzJfbWF4KDIpKSB7CiAJCQkvKiBFcmFz dXJlIHdpdGggdGhlIHN5bWJvbCBpbnRhY3QgKi8KIAkJCWVycmxvY3NbZXJybG9jXSA9IDI7CiAJ CX0gZWxzZSB7CmRpZmYgLS1naXQgYS9saWIvc2JpdG1hcC5jIGIvbGliL3NiaXRtYXAuYwppbmRl eCAyOWViMDQ4NDIxNWEuLmM0ZjA0ZWRmM2VlOSAxMDA2NDQKLS0tIGEvbGliL3NiaXRtYXAuYwor KysgYi9saWIvc2JpdG1hcC5jCkBAIC0zMyw3ICszMyw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWdu ZWQgdXBkYXRlX2FsbG9jX2hpbnRfYmVmb3JlX2dldChzdHJ1Y3Qgc2JpdG1hcCAqc2IsCiAKIAlo aW50ID0gdGhpc19jcHVfcmVhZCgqc2ItPmFsbG9jX2hpbnQpOwogCWlmICh1bmxpa2VseShoaW50 ID49IGRlcHRoKSkgewotCQloaW50ID0gZGVwdGggPyBwcmFuZG9tX3UzMigpICUgZGVwdGggOiAw OworCQloaW50ID0gZGVwdGggPyBwcmFuZG9tX3UzMl9tYXgoZGVwdGgpIDogMDsKIAkJdGhpc19j cHVfd3JpdGUoKnNiLT5hbGxvY19oaW50LCBoaW50KTsKIAl9CiAKZGlmZiAtLWdpdCBhL2xpYi90 ZXN0LXN0cmluZ19oZWxwZXJzLmMgYi9saWIvdGVzdC1zdHJpbmdfaGVscGVycy5jCmluZGV4IDQz N2Q4ZTZiN2NiMS4uODZmYWRkM2JhMDhjIDEwMDY0NAotLS0gYS9saWIvdGVzdC1zdHJpbmdfaGVs cGVycy5jCisrKyBiL2xpYi90ZXN0LXN0cmluZ19oZWxwZXJzLmMKQEAgLTU4Nyw3ICs1ODcsNyBA QCBzdGF0aWMgaW50IF9faW5pdCB0ZXN0X3N0cmluZ19oZWxwZXJzX2luaXQodm9pZCkKIAlmb3Ig KGkgPSAwOyBpIDwgVU5FU0NBUEVfQUxMX01BU0sgKyAxOyBpKyspCiAJCXRlc3Rfc3RyaW5nX3Vu ZXNjYXBlKCJ1bmVzY2FwZSIsIGksIGZhbHNlKTsKIAl0ZXN0X3N0cmluZ191bmVzY2FwZSgidW5l c2NhcGUgaW5wbGFjZSIsCi0JCQkgICAgIGdldF9yYW5kb21faW50KCkgJSAoVU5FU0NBUEVfQU5Z ICsgMSksIHRydWUpOworCQkJICAgICBwcmFuZG9tX3UzMl9tYXgoVU5FU0NBUEVfQU5ZICsgMSks IHRydWUpOwogCiAJLyogV2l0aG91dCBkaWN0aW9uYXJ5ICovCiAJZm9yIChpID0gMDsgaSA8IEVT Q0FQRV9BTExfTUFTSyArIDE7IGkrKykKZGlmZiAtLWdpdCBhL2xpYi90ZXN0X2hleGR1bXAuYyBi L2xpYi90ZXN0X2hleGR1bXAuYwppbmRleCA1MTQ0ODk5ZDNjNmIuLjA5MjdmNDRjZDQ3OCAxMDA2 NDQKLS0tIGEvbGliL3Rlc3RfaGV4ZHVtcC5jCisrKyBiL2xpYi90ZXN0X2hleGR1bXAuYwpAQCAt MTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyB2b2lkIF9faW5pdCB0ZXN0X2hleGR1bXAoc2l6ZV90IGxl biwgaW50IHJvd3NpemUsIGludCBncm91cHNpemUsCiBzdGF0aWMgdm9pZCBfX2luaXQgdGVzdF9o ZXhkdW1wX3NldChpbnQgcm93c2l6ZSwgYm9vbCBhc2NpaSkKIHsKIAlzaXplX3QgZCA9IG1pbl90 KHNpemVfdCwgc2l6ZW9mKGRhdGFfYiksIHJvd3NpemUpOwotCXNpemVfdCBsZW4gPSBnZXRfcmFu ZG9tX2ludCgpICUgZCArIDE7CisJc2l6ZV90IGxlbiA9IHByYW5kb21fdTMyX21heChkKSArIDE7 CiAKIAl0ZXN0X2hleGR1bXAobGVuLCByb3dzaXplLCA0LCBhc2NpaSk7CiAJdGVzdF9oZXhkdW1w KGxlbiwgcm93c2l6ZSwgMiwgYXNjaWkpOwpAQCAtMjA4LDExICsyMDgsMTEgQEAgc3RhdGljIHZv aWQgX19pbml0IHRlc3RfaGV4ZHVtcF9vdmVyZmxvdyhzaXplX3QgYnVmbGVuLCBzaXplX3QgbGVu LAogc3RhdGljIHZvaWQgX19pbml0IHRlc3RfaGV4ZHVtcF9vdmVyZmxvd19zZXQoc2l6ZV90IGJ1 ZmxlbiwgYm9vbCBhc2NpaSkKIHsKIAl1bnNpZ25lZCBpbnQgaSA9IDA7Ci0JaW50IHJzID0gKGdl dF9yYW5kb21faW50KCkgJSAyICsgMSkgKiAxNjsKKwlpbnQgcnMgPSAocHJhbmRvbV91MzJfbWF4 KDIpICsgMSkgKiAxNjsKIAogCWRvIHsKIAkJaW50IGdzID0gMSA8PCBpOwotCQlzaXplX3QgbGVu ID0gZ2V0X3JhbmRvbV9pbnQoKSAlIHJzICsgZ3M7CisJCXNpemVfdCBsZW4gPSBwcmFuZG9tX3Uz Ml9tYXgocnMpICsgZ3M7CiAKIAkJdGVzdF9oZXhkdW1wX292ZXJmbG93KGJ1Zmxlbiwgcm91bmRk b3duKGxlbiwgZ3MpLCBycywgZ3MsIGFzY2lpKTsKIAl9IHdoaWxlIChpKysgPCAzKTsKQEAgLTIy MywxMSArMjIzLDExIEBAIHN0YXRpYyBpbnQgX19pbml0IHRlc3RfaGV4ZHVtcF9pbml0KHZvaWQp CiAJdW5zaWduZWQgaW50IGk7CiAJaW50IHJvd3NpemU7CiAKLQlyb3dzaXplID0gKGdldF9yYW5k b21faW50KCkgJSAyICsgMSkgKiAxNjsKKwlyb3dzaXplID0gKHByYW5kb21fdTMyX21heCgyKSAr IDEpICogMTY7CiAJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCiAJCXRlc3RfaGV4ZHVtcF9zZXQo cm93c2l6ZSwgZmFsc2UpOwogCi0Jcm93c2l6ZSA9IChnZXRfcmFuZG9tX2ludCgpICUgMiArIDEp ICogMTY7CisJcm93c2l6ZSA9IChwcmFuZG9tX3UzMl9tYXgoMikgKyAxKSAqIDE2OwogCWZvciAo aSA9IDA7IGkgPCAxNjsgaSsrKQogCQl0ZXN0X2hleGR1bXBfc2V0KHJvd3NpemUsIHRydWUpOwog CmRpZmYgLS1naXQgYS9saWIvdGVzdF9rYXNhbi5jIGIvbGliL3Rlc3Rfa2FzYW4uYwppbmRleCA1 OGMxYjAxY2NmZTIuLjdiNDAyNjYyM2FjZSAxMDA2NDQKLS0tIGEvbGliL3Rlc3Rfa2FzYW4uYwor KysgYi9saWIvdGVzdF9rYXNhbi5jCkBAIC0xMjY5LDcgKzEyNjksNyBAQCBzdGF0aWMgdm9pZCBt YXRjaF9hbGxfbm90X2Fzc2lnbmVkKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAlLQVNBTl9URVNUX05F RURTX0NPTkZJR19PRkYodGVzdCwgQ09ORklHX0tBU0FOX0dFTkVSSUMpOwogCiAJZm9yIChpID0g MDsgaSA8IDI1NjsgaSsrKSB7Ci0JCXNpemUgPSAoZ2V0X3JhbmRvbV9pbnQoKSAlIDEwMjQpICsg MTsKKwkJc2l6ZSA9IHByYW5kb21fdTMyX21heCgxMDI0KSArIDE7CiAJCXB0ciA9IGttYWxsb2Mo c2l6ZSwgR0ZQX0tFUk5FTCk7CiAJCUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwg cHRyKTsKIAkJS1VOSVRfRVhQRUNUX0dFKHRlc3QsICh1OClnZXRfdGFnKHB0ciksICh1OClLQVNB Tl9UQUdfTUlOKTsKQEAgLTEyNzgsNyArMTI3OCw3IEBAIHN0YXRpYyB2b2lkIG1hdGNoX2FsbF9u b3RfYXNzaWduZWQoc3RydWN0IGt1bml0ICp0ZXN0KQogCX0KIAogCWZvciAoaSA9IDA7IGkgPCAy NTY7IGkrKykgewotCQlvcmRlciA9IChnZXRfcmFuZG9tX2ludCgpICUgNCkgKyAxOworCQlvcmRl ciA9IHByYW5kb21fdTMyX21heCg0KSArIDE7CiAJCXBhZ2VzID0gYWxsb2NfcGFnZXMoR0ZQX0tF Uk5FTCwgb3JkZXIpOwogCQlwdHIgPSBwYWdlX2FkZHJlc3MocGFnZXMpOwogCQlLVU5JVF9BU1NF UlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHB0cik7CkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBzdGF0 aWMgdm9pZCBtYXRjaF9hbGxfbm90X2Fzc2lnbmVkKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAkJcmV0 dXJuOwogCiAJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0JCXNpemUgPSAoZ2V0X3JhbmRv bV9pbnQoKSAlIDEwMjQpICsgMTsKKwkJc2l6ZSA9IHByYW5kb21fdTMyX21heCgxMDI0KSArIDE7 CiAJCXB0ciA9IHZtYWxsb2Moc2l6ZSk7CiAJCUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwo dGVzdCwgcHRyKTsKIAkJS1VOSVRfRVhQRUNUX0dFKHRlc3QsICh1OClnZXRfdGFnKHB0ciksICh1 OClLQVNBTl9UQUdfTUlOKTsKZGlmZiAtLWdpdCBhL2xpYi90ZXN0X2xpc3Rfc29ydC5jIGIvbGli L3Rlc3RfbGlzdF9zb3J0LmMKaW5kZXggYWRlN2ExZWEwYzhlLi4xOWZmMjI5YjljM2EgMTAwNjQ0 Ci0tLSBhL2xpYi90ZXN0X2xpc3Rfc29ydC5jCisrKyBiL2xpYi90ZXN0X2xpc3Rfc29ydC5jCkBA IC03MSw3ICs3MSw3IEBAIHN0YXRpYyB2b2lkIGxpc3Rfc29ydF90ZXN0KHN0cnVjdCBrdW5pdCAq dGVzdCkKIAkJS1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBlbCk7CiAKIAkJIC8q IGZvcmNlIHNvbWUgZXF1aXZhbGVuY2llcyAqLwotCQllbC0+dmFsdWUgPSBwcmFuZG9tX3UzMigp ICUgKFRFU1RfTElTVF9MRU4gLyAzKTsKKwkJZWwtPnZhbHVlID0gcHJhbmRvbV91MzJfbWF4KFRF U1RfTElTVF9MRU4gLyAzKTsKIAkJZWwtPnNlcmlhbCA9IGk7CiAJCWVsLT5wb2lzb24xID0gVEVT VF9QT0lTT04xOwogCQllbC0+cG9pc29uMiA9IFRFU1RfUE9JU09OMjsKZGlmZiAtLWdpdCBhL21t L21pZ3JhdGUuYyBiL21tL21pZ3JhdGUuYwppbmRleCA2YTE1OTdjOTIyNjEuLmRiMDRmOTVmZTA1 MCAxMDA2NDQKLS0tIGEvbW0vbWlncmF0ZS5jCisrKyBiL21tL21pZ3JhdGUuYwpAQCAtMjI5Miw3 ICsyMjkyLDcgQEAgaW50IG5leHRfZGVtb3Rpb25fbm9kZShpbnQgbm9kZSkKIAkJICogY2FjaGlu ZyBpc3N1ZSwgd2hpY2ggc2VlbXMgbW9yZSBjb21wbGljYXRlZC4gU28gc2VsZWN0aW5nCiAJCSAq IHRhcmdldCBub2RlIHJhbmRvbWx5IHNlZW1zIGJldHRlciB1bnRpbCBub3cuCiAJCSAqLwotCQlp bmRleCA9IGdldF9yYW5kb21faW50KCkgJSB0YXJnZXRfbnI7CisJCWluZGV4ID0gcHJhbmRvbV91 MzJfbWF4KHRhcmdldF9ucik7CiAJCWJyZWFrOwogCX0KIApkaWZmIC0tZ2l0IGEvbW0vc2x1Yi5j IGIvbW0vc2x1Yi5jCmluZGV4IDg2MmRiZDlhZjRmNS4uNDZlZTUyZWZlZWVmIDEwMDY0NAotLS0g YS9tbS9zbHViLmMKKysrIGIvbW0vc2x1Yi5jCkBAIC0xOTExLDcgKzE5MTEsNyBAQCBzdGF0aWMg Ym9vbCBzaHVmZmxlX2ZyZWVsaXN0KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBzdHJ1Y3Qgc2xhYiAq c2xhYikKIAkJcmV0dXJuIGZhbHNlOwogCiAJZnJlZWxpc3RfY291bnQgPSBvb19vYmplY3RzKHMt Pm9vKTsKLQlwb3MgPSBnZXRfcmFuZG9tX2ludCgpICUgZnJlZWxpc3RfY291bnQ7CisJcG9zID0g cHJhbmRvbV91MzJfbWF4KGZyZWVsaXN0X2NvdW50KTsKIAogCXBhZ2VfbGltaXQgPSBzbGFiLT5v YmplY3RzICogcy0+c2l6ZTsKIAlzdGFydCA9IGZpeHVwX3JlZF9sZWZ0KHMsIHNsYWJfYWRkcmVz cyhzbGFiKSk7CmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tb25fY2xpZW50LmMgYi9uZXQvY2VwaC9t b25fY2xpZW50LmMKaW5kZXggNmE2ODk4ZWU0MDQ5Li5kYjYwMjE3ZjkxMWIgMTAwNjQ0Ci0tLSBh L25ldC9jZXBoL21vbl9jbGllbnQuYworKysgYi9uZXQvY2VwaC9tb25fY2xpZW50LmMKQEAgLTIy Miw3ICsyMjIsNyBAQCBzdGF0aWMgdm9pZCBwaWNrX25ld19tb24oc3RydWN0IGNlcGhfbW9uX2Ns aWVudCAqbW9uYykKIAkJCQltYXgtLTsKIAkJfQogCi0JCW4gPSBwcmFuZG9tX3UzMigpICUgbWF4 OworCQluID0gcHJhbmRvbV91MzJfbWF4KG1heCk7CiAJCWlmIChvID49IDAgJiYgbiA+PSBvKQog CQkJbisrOwogCmRpZmYgLS1naXQgYS9uZXQvY2VwaC9vc2RfY2xpZW50LmMgYi9uZXQvY2VwaC9v c2RfY2xpZW50LmMKaW5kZXggODdiODgzYzdiZmQ2Li40ZTRmMWU0YmMyNjUgMTAwNjQ0Ci0tLSBh L25ldC9jZXBoL29zZF9jbGllbnQuYworKysgYi9uZXQvY2VwaC9vc2RfY2xpZW50LmMKQEAgLTE0 NzksNyArMTQ3OSw3IEBAIHN0YXRpYyBib29sIHRhcmdldF9zaG91bGRfYmVfcGF1c2VkKHN0cnVj dCBjZXBoX29zZF9jbGllbnQgKm9zZGMsCiAKIHN0YXRpYyBpbnQgcGlja19yYW5kb21fcmVwbGlj YShjb25zdCBzdHJ1Y3QgY2VwaF9vc2RzICphY3RpbmcpCiB7Ci0JaW50IGkgPSBwcmFuZG9tX3Uz MigpICUgYWN0aW5nLT5zaXplOworCWludCBpID0gcHJhbmRvbV91MzJfbWF4KGFjdGluZy0+c2l6 ZSk7CiAKIAlkb3V0KCIlcyBwaWNrZWQgb3NkJWQsIHByaW1hcnkgb3NkJWRcbiIsIF9fZnVuY19f LAogCSAgICAgYWN0aW5nLT5vc2RzW2ldLCBhY3RpbmctPnByaW1hcnkpOwpkaWZmIC0tZ2l0IGEv bmV0L2NvcmUvbmVpZ2hib3VyLmMgYi9uZXQvY29yZS9uZWlnaGJvdXIuYwppbmRleCA3OGNjOGZi Njg4MTQuLjg1ZDQ5N2NiNThkOCAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvbmVpZ2hib3VyLmMKKysr IGIvbmV0L2NvcmUvbmVpZ2hib3VyLmMKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgdm9pZCBu ZWlnaF9jbGVhbnVwX2FuZF9yZWxlYXNlKHN0cnVjdCBuZWlnaGJvdXIgKm5laWdoKQogCiB1bnNp Z25lZCBsb25nIG5laWdoX3JhbmRfcmVhY2hfdGltZSh1bnNpZ25lZCBsb25nIGJhc2UpCiB7Ci0J cmV0dXJuIGJhc2UgPyAocHJhbmRvbV91MzIoKSAlIGJhc2UpICsgKGJhc2UgPj4gMSkgOiAwOwor CXJldHVybiBiYXNlID8gcHJhbmRvbV91MzJfbWF4KGJhc2UpICsgKGJhc2UgPj4gMSkgOiAwOwog fQogRVhQT1JUX1NZTUJPTChuZWlnaF9yYW5kX3JlYWNoX3RpbWUpOwogCmRpZmYgLS1naXQgYS9u ZXQvY29yZS9wa3RnZW4uYyBiL25ldC9jb3JlL3BrdGdlbi5jCmluZGV4IDg4OTA2YmE2ZDlhNy4u NWNhNGY5NTMwMzRjIDEwMDY0NAotLS0gYS9uZXQvY29yZS9wa3RnZW4uYworKysgYi9uZXQvY29y ZS9wa3RnZW4uYwpAQCAtMjMyNCw3ICsyMzI0LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZl9waWNr KHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KQogCQkJCXBrdF9kZXYtPmN1cmZsID0gMDsgLypy ZXNldCAqLwogCQl9CiAJfSBlbHNlIHsKLQkJZmxvdyA9IHByYW5kb21fdTMyKCkgJSBwa3RfZGV2 LT5jZmxvd3M7CisJCWZsb3cgPSBwcmFuZG9tX3UzMl9tYXgocGt0X2Rldi0+Y2Zsb3dzKTsKIAkJ cGt0X2Rldi0+Y3VyZmwgPSBmbG93OwogCiAJCWlmIChwa3RfZGV2LT5mbG93c1tmbG93XS5jb3Vu dCA+IHBrdF9kZXYtPmxmbG93KSB7CkBAIC0yMzgwLDEwICsyMzgwLDkgQEAgc3RhdGljIHZvaWQg c2V0X2N1cl9xdWV1ZV9tYXAoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpCiAJZWxzZSBpZiAo cGt0X2Rldi0+cXVldWVfbWFwX21pbiA8PSBwa3RfZGV2LT5xdWV1ZV9tYXBfbWF4KSB7CiAJCV9f dTE2IHQ7CiAJCWlmIChwa3RfZGV2LT5mbGFncyAmIEZfUVVFVUVfTUFQX1JORCkgewotCQkJdCA9 IHByYW5kb21fdTMyKCkgJQotCQkJCShwa3RfZGV2LT5xdWV1ZV9tYXBfbWF4IC0KLQkJCQkgcGt0 X2Rldi0+cXVldWVfbWFwX21pbiArIDEpCi0JCQkJKyBwa3RfZGV2LT5xdWV1ZV9tYXBfbWluOwor CQkJdCA9IHByYW5kb21fdTMyX21heChwa3RfZGV2LT5xdWV1ZV9tYXBfbWF4IC0KKwkJCQkJICAg IHBrdF9kZXYtPnF1ZXVlX21hcF9taW4gKyAxKSArCisJCQkgICAgcGt0X2Rldi0+cXVldWVfbWFw X21pbjsKIAkJfSBlbHNlIHsKIAkJCXQgPSBwa3RfZGV2LT5jdXJfcXVldWVfbWFwICsgMTsKIAkJ CWlmICh0ID4gcGt0X2Rldi0+cXVldWVfbWFwX21heCkKQEAgLTI0MTIsNyArMjQxMSw3IEBAIHN0 YXRpYyB2b2lkIG1vZF9jdXJfaGVhZGVycyhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldikKIAkJ X191MzIgdG1wOwogCiAJCWlmIChwa3RfZGV2LT5mbGFncyAmIEZfTUFDU1JDX1JORCkKLQkJCW1j ID0gcHJhbmRvbV91MzIoKSAlIHBrdF9kZXYtPnNyY19tYWNfY291bnQ7CisJCQltYyA9IHByYW5k b21fdTMyX21heChwa3RfZGV2LT5zcmNfbWFjX2NvdW50KTsKIAkJZWxzZSB7CiAJCQltYyA9IHBr dF9kZXYtPmN1cl9zcmNfbWFjX29mZnNldCsrOwogCQkJaWYgKHBrdF9kZXYtPmN1cl9zcmNfbWFj X29mZnNldCA+PQpAQCAtMjQzOCw3ICsyNDM3LDcgQEAgc3RhdGljIHZvaWQgbW9kX2N1cl9oZWFk ZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KQogCQlfX3UzMiB0bXA7CiAKIAkJaWYgKHBr dF9kZXYtPmZsYWdzICYgRl9NQUNEU1RfUk5EKQotCQkJbWMgPSBwcmFuZG9tX3UzMigpICUgcGt0 X2Rldi0+ZHN0X21hY19jb3VudDsKKwkJCW1jID0gcHJhbmRvbV91MzJfbWF4KHBrdF9kZXYtPmRz dF9tYWNfY291bnQpOwogCiAJCWVsc2UgewogCQkJbWMgPSBwa3RfZGV2LT5jdXJfZHN0X21hY19v ZmZzZXQrKzsKQEAgLTI0NzAsMTggKzI0NjksMTggQEAgc3RhdGljIHZvaWQgbW9kX2N1cl9oZWFk ZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KQogCX0KIAogCWlmICgocGt0X2Rldi0+Zmxh Z3MgJiBGX1ZJRF9STkQpICYmIChwa3RfZGV2LT52bGFuX2lkICE9IDB4ZmZmZikpIHsKLQkJcGt0 X2Rldi0+dmxhbl9pZCA9IHByYW5kb21fdTMyKCkgJiAoNDA5NiAtIDEpOworCQlwa3RfZGV2LT52 bGFuX2lkID0gcHJhbmRvbV91MzJfbWF4KDQwOTYpOwogCX0KIAogCWlmICgocGt0X2Rldi0+Zmxh Z3MgJiBGX1NWSURfUk5EKSAmJiAocGt0X2Rldi0+c3ZsYW5faWQgIT0gMHhmZmZmKSkgewotCQlw a3RfZGV2LT5zdmxhbl9pZCA9IHByYW5kb21fdTMyKCkgJiAoNDA5NiAtIDEpOworCQlwa3RfZGV2 LT5zdmxhbl9pZCA9IHByYW5kb21fdTMyX21heCg0MDk2KTsKIAl9CiAKIAlpZiAocGt0X2Rldi0+ dWRwX3NyY19taW4gPCBwa3RfZGV2LT51ZHBfc3JjX21heCkgewogCQlpZiAocGt0X2Rldi0+Zmxh Z3MgJiBGX1VEUFNSQ19STkQpCi0JCQlwa3RfZGV2LT5jdXJfdWRwX3NyYyA9IHByYW5kb21fdTMy KCkgJQotCQkJCShwa3RfZGV2LT51ZHBfc3JjX21heCAtIHBrdF9kZXYtPnVkcF9zcmNfbWluKQot CQkJCSsgcGt0X2Rldi0+dWRwX3NyY19taW47CisJCQlwa3RfZGV2LT5jdXJfdWRwX3NyYyA9IHBy YW5kb21fdTMyX21heCgKKwkJCQlwa3RfZGV2LT51ZHBfc3JjX21heCAtIHBrdF9kZXYtPnVkcF9z cmNfbWluKSArCisJCQkJcGt0X2Rldi0+dWRwX3NyY19taW47CiAKIAkJZWxzZSB7CiAJCQlwa3Rf ZGV2LT5jdXJfdWRwX3NyYysrOwpAQCAtMjQ5Miw5ICsyNDkxLDkgQEAgc3RhdGljIHZvaWQgbW9k X2N1cl9oZWFkZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KQogCiAJaWYgKHBrdF9kZXYt PnVkcF9kc3RfbWluIDwgcGt0X2Rldi0+dWRwX2RzdF9tYXgpIHsKIAkJaWYgKHBrdF9kZXYtPmZs YWdzICYgRl9VRFBEU1RfUk5EKSB7Ci0JCQlwa3RfZGV2LT5jdXJfdWRwX2RzdCA9IHByYW5kb21f dTMyKCkgJQotCQkJCShwa3RfZGV2LT51ZHBfZHN0X21heCAtIHBrdF9kZXYtPnVkcF9kc3RfbWlu KQotCQkJCSsgcGt0X2Rldi0+dWRwX2RzdF9taW47CisJCQlwa3RfZGV2LT5jdXJfdWRwX2RzdCA9 IHByYW5kb21fdTMyX21heCgKKwkJCQlwa3RfZGV2LT51ZHBfZHN0X21heCAtIHBrdF9kZXYtPnVk cF9kc3RfbWluKSArCisJCQkJcGt0X2Rldi0+dWRwX2RzdF9taW47CiAJCX0gZWxzZSB7CiAJCQlw a3RfZGV2LT5jdXJfdWRwX2RzdCsrOwogCQkJaWYgKHBrdF9kZXYtPmN1cl91ZHBfZHN0ID49IHBr dF9kZXYtPnVkcF9kc3RfbWF4KQpAQCAtMjUwOSw3ICsyNTA4LDcgQEAgc3RhdGljIHZvaWQgbW9k X2N1cl9oZWFkZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KQogCQlpZiAoaW1uIDwgaW14 KSB7CiAJCQlfX3UzMiB0OwogCQkJaWYgKHBrdF9kZXYtPmZsYWdzICYgRl9JUFNSQ19STkQpCi0J CQkJdCA9IHByYW5kb21fdTMyKCkgJSAoaW14IC0gaW1uKSArIGltbjsKKwkJCQl0ID0gcHJhbmRv bV91MzJfbWF4KGlteCAtIGltbikgKyBpbW47CiAJCQllbHNlIHsKIAkJCQl0ID0gbnRvaGwocGt0 X2Rldi0+Y3VyX3NhZGRyKTsKIAkJCQl0Kys7CkBAIC0yNTMxLDggKzI1MzAsOCBAQCBzdGF0aWMg dm9pZCBtb2RfY3VyX2hlYWRlcnMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpCiAJCQkJaWYg KHBrdF9kZXYtPmZsYWdzICYgRl9JUERTVF9STkQpIHsKIAogCQkJCQlkbyB7Ci0JCQkJCQl0ID0g cHJhbmRvbV91MzIoKSAlCi0JCQkJCQkJKGlteCAtIGltbikgKyBpbW47CisJCQkJCQl0ID0gcHJh bmRvbV91MzJfbWF4KGlteCAtIGltbikgKworCQkJCQkJICAgIGltbjsKIAkJCQkJCXMgPSBodG9u bCh0KTsKIAkJCQkJfSB3aGlsZSAoaXB2NF9pc19sb29wYmFjayhzKSB8fAogCQkJCQkJaXB2NF9p c19tdWx0aWNhc3QocykgfHwKQEAgLTI1NzksOSArMjU3OCw5IEBAIHN0YXRpYyB2b2lkIG1vZF9j dXJfaGVhZGVycyhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldikKIAlpZiAocGt0X2Rldi0+bWlu X3BrdF9zaXplIDwgcGt0X2Rldi0+bWF4X3BrdF9zaXplKSB7CiAJCV9fdTMyIHQ7CiAJCWlmIChw a3RfZGV2LT5mbGFncyAmIEZfVFhTSVpFX1JORCkgewotCQkJdCA9IHByYW5kb21fdTMyKCkgJQot CQkJCShwa3RfZGV2LT5tYXhfcGt0X3NpemUgLSBwa3RfZGV2LT5taW5fcGt0X3NpemUpCi0JCQkJ KyBwa3RfZGV2LT5taW5fcGt0X3NpemU7CisJCQl0ID0gcHJhbmRvbV91MzJfbWF4KHBrdF9kZXYt Pm1heF9wa3Rfc2l6ZSAtCisJCQkJCSAgICBwa3RfZGV2LT5taW5fcGt0X3NpemUpICsKKwkJCSAg ICBwa3RfZGV2LT5taW5fcGt0X3NpemU7CiAJCX0gZWxzZSB7CiAJCQl0ID0gcGt0X2Rldi0+Y3Vy X3BrdF9zaXplICsgMTsKIAkJCWlmICh0ID4gcGt0X2Rldi0+bWF4X3BrdF9zaXplKQpAQCAtMjU5 MCw3ICsyNTg5LDcgQEAgc3RhdGljIHZvaWQgbW9kX2N1cl9oZWFkZXJzKHN0cnVjdCBwa3RnZW5f ZGV2ICpwa3RfZGV2KQogCQlwa3RfZGV2LT5jdXJfcGt0X3NpemUgPSB0OwogCX0gZWxzZSBpZiAo cGt0X2Rldi0+bl9pbWl4X2VudHJpZXMgPiAwKSB7CiAJCXN0cnVjdCBpbWl4X3BrdCAqZW50cnk7 Ci0JCV9fdTMyIHQgPSBwcmFuZG9tX3UzMigpICUgSU1JWF9QUkVDSVNJT047CisJCV9fdTMyIHQg PSBwcmFuZG9tX3UzMl9tYXgoSU1JWF9QUkVDSVNJT04pOwogCQlfX3U4IGVudHJ5X2luZGV4ID0g cGt0X2Rldi0+aW1peF9kaXN0cmlidXRpb25bdF07CiAKIAkJZW50cnkgPSAmcGt0X2Rldi0+aW1p eF9lbnRyaWVzW2VudHJ5X2luZGV4XTsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3N0cmVhbS5jIGIv bmV0L2NvcmUvc3RyZWFtLmMKaW5kZXggY2NjMDgzY2RlZjIzLi40NzgwNTU4ZWEzMTQgMTAwNjQ0 Ci0tLSBhL25ldC9jb3JlL3N0cmVhbS5jCisrKyBiL25ldC9jb3JlL3N0cmVhbS5jCkBAIC0xMjMs NyArMTIzLDcgQEAgaW50IHNrX3N0cmVhbV93YWl0X21lbW9yeShzdHJ1Y3Qgc29jayAqc2ssIGxv bmcgKnRpbWVvX3ApCiAJREVGSU5FX1dBSVRfRlVOQyh3YWl0LCB3b2tlbl93YWtlX2Z1bmN0aW9u KTsKIAogCWlmIChza19zdHJlYW1fbWVtb3J5X2ZyZWUoc2spKQotCQljdXJyZW50X3RpbWVvID0g dm1fd2FpdCA9IChwcmFuZG9tX3UzMigpICUgKEhaIC8gNSkpICsgMjsKKwkJY3VycmVudF90aW1l byA9IHZtX3dhaXQgPSBwcmFuZG9tX3UzMl9tYXgoSFogLyA1KSArIDI7CiAKIAlhZGRfd2FpdF9x dWV1ZShza19zbGVlcChzayksICZ3YWl0KTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaWdtcC5j IGIvbmV0L2lwdjQvaWdtcC5jCmluZGV4IGUzYWIwY2I2MTYyNC4uOTE0OWU3OGJlZWE1IDEwMDY0 NAotLS0gYS9uZXQvaXB2NC9pZ21wLmMKKysrIGIvbmV0L2lwdjQvaWdtcC5jCkBAIC0yMTMsNyAr MjEzLDcgQEAgc3RhdGljIHZvaWQgaWdtcF9zdG9wX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICpp bSkKIC8qIEl0IG11c3QgYmUgY2FsbGVkIHdpdGggbG9ja2VkIGltLT5sb2NrICovCiBzdGF0aWMg dm9pZCBpZ21wX3N0YXJ0X3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxh eSkKIHsKLQlpbnQgdHYgPSBwcmFuZG9tX3UzMigpICUgbWF4X2RlbGF5OworCWludCB0diA9IHBy YW5kb21fdTMyX21heChtYXhfZGVsYXkpOwogCiAJaW0tPnRtX3J1bm5pbmcgPSAxOwogCWlmICgh bW9kX3RpbWVyKCZpbS0+dGltZXIsIGppZmZpZXMrdHYrMikpCkBAIC0yMjIsNyArMjIyLDcgQEAg c3RhdGljIHZvaWQgaWdtcF9zdGFydF90aW1lcihzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0sIGludCBt YXhfZGVsYXkpCiAKIHN0YXRpYyB2b2lkIGlnbXBfZ3Ffc3RhcnRfdGltZXIoc3RydWN0IGluX2Rl dmljZSAqaW5fZGV2KQogewotCWludCB0diA9IHByYW5kb21fdTMyKCkgJSBpbl9kZXYtPm1yX21h eGRlbGF5OworCWludCB0diA9IHByYW5kb21fdTMyX21heChpbl9kZXYtPm1yX21heGRlbGF5KTsK IAl1bnNpZ25lZCBsb25nIGV4cCA9IGppZmZpZXMgKyB0diArIDI7CiAKIAlpZiAoaW5fZGV2LT5t cl9ncV9ydW5uaW5nICYmCkBAIC0yMzYsNyArMjM2LDcgQEAgc3RhdGljIHZvaWQgaWdtcF9ncV9z dGFydF90aW1lcihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpCiAKIHN0YXRpYyB2b2lkIGlnbXBf aWZjX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgaW50IGRlbGF5KQogewot CWludCB0diA9IHByYW5kb21fdTMyKCkgJSBkZWxheTsKKwlpbnQgdHYgPSBwcmFuZG9tX3UzMl9t YXgoZGVsYXkpOwogCiAJaWYgKCFtb2RfdGltZXIoJmluX2Rldi0+bXJfaWZjX3RpbWVyLCBqaWZm aWVzK3R2KzIpKQogCQlpbl9kZXZfaG9sZChpbl9kZXYpOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQv aW5ldF9jb25uZWN0aW9uX3NvY2suYyBiL25ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMK aW5kZXggZWIzMWM3MTU4YjM5Li4wYzNlYWIxMzQ3Y2QgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lu ZXRfY29ubmVjdGlvbl9zb2NrLmMKKysrIGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2su YwpAQCAtMjIzLDcgKzIyMyw3IEBAIGluZXRfY3NrX2ZpbmRfb3Blbl9wb3J0KHN0cnVjdCBzb2Nr ICpzaywgc3RydWN0IGluZXRfYmluZF9idWNrZXQgKip0Yl9yZXQsIGludCAqCiAJaWYgKGxpa2Vs eShyZW1haW5pbmcgPiAxKSkKIAkJcmVtYWluaW5nICY9IH4xVTsKIAotCW9mZnNldCA9IHByYW5k b21fdTMyKCkgJSByZW1haW5pbmc7CisJb2Zmc2V0ID0gcHJhbmRvbV91MzJfbWF4KHJlbWFpbmlu Zyk7CiAJLyogX19pbmV0X2hhc2hfY29ubmVjdCgpIGZhdm9ycyBwb3J0cyBoYXZpbmcgQGxvdyBw YXJpdHkKIAkgKiBXZSBkbyB0aGUgb3Bwb3NpdGUgdG8gbm90IHBvbGx1dGUgY29ubmVjdCgpIHVz ZXJzLgogCSAqLwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaW5ldF9oYXNodGFibGVzLmMgYi9uZXQv aXB2NC9pbmV0X2hhc2h0YWJsZXMuYwppbmRleCBiOWQ5OTViNWNlMjQuLjlkYzA3MGYyMDE4ZSAx MDA2NDQKLS0tIGEvbmV0L2lwdjQvaW5ldF9oYXNodGFibGVzLmMKKysrIGIvbmV0L2lwdjQvaW5l dF9oYXNodGFibGVzLmMKQEAgLTc5NCw3ICs3OTQsNyBAQCBpbnQgX19pbmV0X2hhc2hfY29ubmVj dChzdHJ1Y3QgaW5ldF90aW1ld2FpdF9kZWF0aF9yb3cgKmRlYXRoX3JvdywKIAkgKiBvbiBsb3cg Y29udGVudGlvbiB0aGUgcmFuZG9tbmVzcyBpcyBtYXhpbWFsIGFuZCBvbiBoaWdoIGNvbnRlbnRp b24KIAkgKiBpdCBtYXkgYmUgaW5leGlzdGVudC4KIAkgKi8KLQlpID0gbWF4X3QoaW50LCBpLCAo cHJhbmRvbV91MzIoKSAmIDcpICogMik7CisJaSA9IG1heF90KGludCwgaSwgcHJhbmRvbV91MzJf bWF4KDgpICogMik7CiAJV1JJVEVfT05DRSh0YWJsZV9wZXJ0dXJiW2luZGV4XSwgUkVBRF9PTkNF KHRhYmxlX3BlcnR1cmJbaW5kZXhdKSArIGkgKyAyKTsKIAogCS8qIEhlYWQgbG9jayBzdGlsbCBo ZWxkIGFuZCBiaCdzIGRpc2FibGVkICovCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9hZGRyY29uZi5j IGIvbmV0L2lwdjYvYWRkcmNvbmYuYwppbmRleCAxMGNlODZiZjIyOGUuLjQxNzgzNGI3MTY5ZCAx MDA2NDQKLS0tIGEvbmV0L2lwdjYvYWRkcmNvbmYuYworKysgYi9uZXQvaXB2Ni9hZGRyY29uZi5j CkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIGlubGluZSB1MzIgY3N0YW1wX2RlbHRhKHVuc2ln bmVkIGxvbmcgY3N0YW1wKQogc3RhdGljIGlubGluZSBzMzIgcmZjMzMxNV9zMTRfYmFja29mZl9p bml0KHMzMiBpcnQpCiB7CiAJLyogbXVsdGlwbHkgJ2luaXRpYWwgcmV0cmFuc21pc3Npb24gdGlt ZScgYnkgMC45IC4uIDEuMSAqLwotCXU2NCB0bXAgPSAoOTAwMDAwICsgcHJhbmRvbV91MzIoKSAl IDIwMDAwMSkgKiAodTY0KWlydDsKKwl1NjQgdG1wID0gKDkwMDAwMCArIHByYW5kb21fdTMyX21h eCgyMDAwMDEpKSAqICh1NjQpaXJ0OwogCWRvX2Rpdih0bXAsIDEwMDAwMDApOwogCXJldHVybiAo czMyKXRtcDsKIH0KQEAgLTExMiwxMSArMTEyLDExIEBAIHN0YXRpYyBpbmxpbmUgczMyIHJmYzMz MTVfczE0X2JhY2tvZmZfaW5pdChzMzIgaXJ0KQogc3RhdGljIGlubGluZSBzMzIgcmZjMzMxNV9z MTRfYmFja29mZl91cGRhdGUoczMyIHJ0LCBzMzIgbXJ0KQogewogCS8qIG11bHRpcGx5ICdyZXRy YW5zbWlzc2lvbiB0aW1lb3V0JyBieSAxLjkgLi4gMi4xICovCi0JdTY0IHRtcCA9ICgxOTAwMDAw ICsgcHJhbmRvbV91MzIoKSAlIDIwMDAwMSkgKiAodTY0KXJ0OworCXU2NCB0bXAgPSAoMTkwMDAw MCArIHByYW5kb21fdTMyX21heCgyMDAwMDEpKSAqICh1NjQpcnQ7CiAJZG9fZGl2KHRtcCwgMTAw MDAwMCk7CiAJaWYgKChzMzIpdG1wID4gbXJ0KSB7CiAJCS8qIG11bHRpcGx5ICdtYXhpbXVtIHJl dHJhbnNtaXNzaW9uIHRpbWUnIGJ5IDAuOSAuLiAxLjEgKi8KLQkJdG1wID0gKDkwMDAwMCArIHBy YW5kb21fdTMyKCkgJSAyMDAwMDEpICogKHU2NCltcnQ7CisJCXRtcCA9ICg5MDAwMDAgKyBwcmFu ZG9tX3UzMl9tYXgoMjAwMDAxKSkgKiAodTY0KW1ydDsKIAkJZG9fZGl2KHRtcCwgMTAwMDAwMCk7 CiAJfQogCXJldHVybiAoczMyKXRtcDsKQEAgLTM5NjcsNyArMzk2Nyw3IEBAIHN0YXRpYyB2b2lk IGFkZHJjb25mX2RhZF9raWNrKHN0cnVjdCBpbmV0Nl9pZmFkZHIgKmlmcCkKIAlpZiAoaWZwLT5m bGFncyAmIElGQV9GX09QVElNSVNUSUMpCiAJCXJhbmRfbnVtID0gMDsKIAllbHNlCi0JCXJhbmRf bnVtID0gcHJhbmRvbV91MzIoKSAlIChpZGV2LT5jbmYucnRyX3NvbGljaXRfZGVsYXkgPyA6IDEp OworCQlyYW5kX251bSA9IHByYW5kb21fdTMyX21heChpZGV2LT5jbmYucnRyX3NvbGljaXRfZGVs YXkgPzogMSk7CiAKIAlub25jZSA9IDA7CiAJaWYgKGlkZXYtPmNuZi5lbmhhbmNlZF9kYWQgfHwK ZGlmZiAtLWdpdCBhL25ldC9pcHY2L21jYXN0LmMgYi9uZXQvaXB2Ni9tY2FzdC5jCmluZGV4IDg3 YzY5OWQ1N2IzNi4uYmY0ZjVlZGIzYzNlIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9tY2FzdC5jCisr KyBiL25ldC9pcHY2L21jYXN0LmMKQEAgLTEwNTAsNyArMTA1MCw3IEBAIGJvb2wgaXB2Nl9jaGtf bWNhc3RfYWRkcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgaW42X2FkZHIg Kmdyb3VwLAogLyogY2FsbGVkIHdpdGggbWNfbG9jayAqLwogc3RhdGljIHZvaWQgbWxkX2dxX3N0 YXJ0X3dvcmsoc3RydWN0IGluZXQ2X2RldiAqaWRldikKIHsKLQl1bnNpZ25lZCBsb25nIHR2ID0g cHJhbmRvbV91MzIoKSAlIGlkZXYtPm1jX21heGRlbGF5OworCXVuc2lnbmVkIGxvbmcgdHYgPSBw cmFuZG9tX3UzMl9tYXgoaWRldi0+bWNfbWF4ZGVsYXkpOwogCiAJaWRldi0+bWNfZ3FfcnVubmlu ZyA9IDE7CiAJaWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgJmlkZXYtPm1jX2dxX3dvcmss IHR2ICsgMikpCkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBzdGF0aWMgdm9pZCBtbGRfZ3Ffc3RvcF93 b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpCiAvKiBjYWxsZWQgd2l0aCBtY19sb2NrICovCiBz dGF0aWMgdm9pZCBtbGRfaWZjX3N0YXJ0X3dvcmsoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgdW5z aWduZWQgbG9uZyBkZWxheSkKIHsKLQl1bnNpZ25lZCBsb25nIHR2ID0gcHJhbmRvbV91MzIoKSAl IGRlbGF5OworCXVuc2lnbmVkIGxvbmcgdHYgPSBwcmFuZG9tX3UzMl9tYXgoZGVsYXkpOwogCiAJ aWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgJmlkZXYtPm1jX2lmY193b3JrLCB0diArIDIp KQogCQlpbjZfZGV2X2hvbGQoaWRldik7CkBAIC0xMDg1LDcgKzEwODUsNyBAQCBzdGF0aWMgdm9p ZCBtbGRfaWZjX3N0b3Bfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KQogLyogY2FsbGVkIHdp dGggbWNfbG9jayAqLwogc3RhdGljIHZvaWQgbWxkX2RhZF9zdGFydF93b3JrKHN0cnVjdCBpbmV0 Nl9kZXYgKmlkZXYsIHVuc2lnbmVkIGxvbmcgZGVsYXkpCiB7Ci0JdW5zaWduZWQgbG9uZyB0diA9 IHByYW5kb21fdTMyKCkgJSBkZWxheTsKKwl1bnNpZ25lZCBsb25nIHR2ID0gcHJhbmRvbV91MzJf bWF4KGRlbGF5KTsKIAogCWlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsICZpZGV2LT5tY19k YWRfd29yaywgdHYgKyAyKSkKIAkJaW42X2Rldl9ob2xkKGlkZXYpOwpAQCAtMTEzMCw3ICsxMTMw LDcgQEAgc3RhdGljIHZvaWQgaWdtcDZfZ3JvdXBfcXVlcmllZChzdHJ1Y3QgaWZtY2FkZHI2ICpt YSwgdW5zaWduZWQgbG9uZyByZXNwdGltZSkKIAl9CiAKIAlpZiAoZGVsYXkgPj0gcmVzcHRpbWUp Ci0JCWRlbGF5ID0gcHJhbmRvbV91MzIoKSAlIHJlc3B0aW1lOworCQlkZWxheSA9IHByYW5kb21f dTMyX21heChyZXNwdGltZSk7CiAKIAlpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmbWEt Pm1jYV93b3JrLCBkZWxheSkpCiAJCXJlZmNvdW50X2luYygmbWEtPm1jYV9yZWZjbnQpOwpAQCAt MjU3NCw3ICsyNTc0LDcgQEAgc3RhdGljIHZvaWQgaWdtcDZfam9pbl9ncm91cChzdHJ1Y3QgaWZt Y2FkZHI2ICptYSkKIAogCWlnbXA2X3NlbmQoJm1hLT5tY2FfYWRkciwgbWEtPmlkZXYtPmRldiwg SUNNUFY2X01HTV9SRVBPUlQpOwogCi0JZGVsYXkgPSBwcmFuZG9tX3UzMigpICUgdW5zb2xpY2l0 ZWRfcmVwb3J0X2ludGVydmFsKG1hLT5pZGV2KTsKKwlkZWxheSA9IHByYW5kb21fdTMyX21heCh1 bnNvbGljaXRlZF9yZXBvcnRfaW50ZXJ2YWwobWEtPmlkZXYpKTsKIAogCWlmIChjYW5jZWxfZGVs YXllZF93b3JrKCZtYS0+bWNhX3dvcmspKSB7CiAJCXJlZmNvdW50X2RlYygmbWEtPm1jYV9yZWZj bnQpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYyBiL25ldC9u ZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMKaW5kZXggYWNiNTVkODM5M2VmLi5mMjU3OWZjOWM3 NWIgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMKKysrIGIvbmV0 L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYwpAQCAtNzEsOCArNzEsOCBAQCBzdGF0aWMgc3Ry dWN0IGlwX3ZzX2Rlc3QgKmlwX3ZzX3R3b3Nfc2NoZWR1bGUoc3RydWN0IGlwX3ZzX3NlcnZpY2Ug KnN2YywKIAkgKiBmcm9tIDAgdG8gdG90YWxfd2VpZ2h0CiAJICovCiAJdG90YWxfd2VpZ2h0ICs9 IDE7Ci0JcndlaWdodDEgPSBwcmFuZG9tX3UzMigpICUgdG90YWxfd2VpZ2h0OwotCXJ3ZWlnaHQy ID0gcHJhbmRvbV91MzIoKSAlIHRvdGFsX3dlaWdodDsKKwlyd2VpZ2h0MSA9IHByYW5kb21fdTMy X21heCh0b3RhbF93ZWlnaHQpOworCXJ3ZWlnaHQyID0gcHJhbmRvbV91MzJfbWF4KHRvdGFsX3dl aWdodCk7CiAKIAkvKiBQaWNrIHR3byB3ZWlnaHRlZCBzZXJ2ZXJzICovCiAJbGlzdF9mb3JfZWFj aF9lbnRyeV9yY3UoZGVzdCwgJnN2Yy0+ZGVzdGluYXRpb25zLCBuX2xpc3QpIHsKZGlmZiAtLWdp dCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jCmluZGV4 IDVjYmUwNzExNmUwNC4uMzMxZjgwZTEyNzc5IDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3Bh Y2tldC5jCisrKyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTEzNTAsNyArMTM1MCw3IEBA IHN0YXRpYyBib29sIGZhbm91dF9mbG93X2lzX2h1Z2Uoc3RydWN0IHBhY2tldF9zb2NrICpwbywg c3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJaWYgKFJFQURfT05DRShoaXN0b3J5W2ldKSA9PSByeGhh c2gpCiAJCQljb3VudCsrOwogCi0JdmljdGltID0gcHJhbmRvbV91MzIoKSAlIFJPTExPVkVSX0hM RU47CisJdmljdGltID0gcHJhbmRvbV91MzJfbWF4KFJPTExPVkVSX0hMRU4pOwogCiAJLyogQXZv aWQgZGlydHlpbmcgdGhlIGNhY2hlIGxpbmUgaWYgcG9zc2libGUgKi8KIAlpZiAoUkVBRF9PTkNF KGhpc3RvcnlbdmljdGltXSkgIT0gcnhoYXNoKQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2FjdF9n YWN0LmMgYi9uZXQvc2NoZWQvYWN0X2dhY3QuYwppbmRleCBhYzI5ZDEwNjUyMzIuLjFhY2NhZWRl ZjU0ZiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9nYWN0LmMKKysrIGIvbmV0L3NjaGVkL2Fj dF9nYWN0LmMKQEAgLTI2LDcgKzI2LDcgQEAgc3RhdGljIHN0cnVjdCB0Y19hY3Rpb25fb3BzIGFj dF9nYWN0X29wczsKIHN0YXRpYyBpbnQgZ2FjdF9uZXRfcmFuZChzdHJ1Y3QgdGNmX2dhY3QgKmdh Y3QpCiB7CiAJc21wX3JtYigpOyAvKiBjb3VwbGVkIHdpdGggc21wX3dtYigpIGluIHRjZl9nYWN0 X2luaXQoKSAqLwotCWlmIChwcmFuZG9tX3UzMigpICUgZ2FjdC0+dGNmZ19wdmFsKQorCWlmIChw cmFuZG9tX3UzMl9tYXgoZ2FjdC0+dGNmZ19wdmFsKSkKIAkJcmV0dXJuIGdhY3QtPnRjZl9hY3Rp b247CiAJcmV0dXJuIGdhY3QtPnRjZmdfcGFjdGlvbjsKIH0KZGlmZiAtLWdpdCBhL25ldC9zY2hl ZC9hY3Rfc2FtcGxlLmMgYi9uZXQvc2NoZWQvYWN0X3NhbXBsZS5jCmluZGV4IDJmN2Y1ZTQ0ZDI4 Yy4uNTVjOWY5NjFmYjBmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvYWN0X3NhbXBsZS5jCisrKyBi L25ldC9zY2hlZC9hY3Rfc2FtcGxlLmMKQEAgLTE2OSw3ICsxNjksNyBAQCBzdGF0aWMgaW50IHRj Zl9zYW1wbGVfYWN0KHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb24g KmEsCiAJcHNhbXBsZV9ncm91cCA9IHJjdV9kZXJlZmVyZW5jZV9iaChzLT5wc2FtcGxlX2dyb3Vw KTsKIAogCS8qIHJhbmRvbWx5IHNhbXBsZSBwYWNrZXRzIGFjY29yZGluZyB0byByYXRlICovCi0J aWYgKHBzYW1wbGVfZ3JvdXAgJiYgKHByYW5kb21fdTMyKCkgJSBzLT5yYXRlID09IDApKSB7CisJ aWYgKHBzYW1wbGVfZ3JvdXAgJiYgKHByYW5kb21fdTMyX21heChzLT5yYXRlKSA9PSAwKSkgewog CQlpZiAoIXNrYl9hdF90Y19pbmdyZXNzKHNrYikpIHsKIAkJCW1kLmluX2lmaW5kZXggPSBza2It PnNrYl9paWY7CiAJCQltZC5vdXRfaWZpbmRleCA9IHNrYi0+ZGV2LT5pZmluZGV4OwpkaWZmIC0t Z2l0IGEvbmV0L3NjaGVkL3NjaF9uZXRlbS5jIGIvbmV0L3NjaGVkL3NjaF9uZXRlbS5jCmluZGV4 IDU0NDllZDExNGU0MC4uM2NhMzIwZjFhMDMxIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX25l dGVtLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9uZXRlbS5jCkBAIC01MTMsOCArNTEzLDggQEAgc3Rh dGljIGludCBuZXRlbV9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAq c2NoLAogCQkJZ290byBmaW5pc2hfc2VnczsKIAkJfQogCi0JCXNrYi0+ZGF0YVtwcmFuZG9tX3Uz MigpICUgc2tiX2hlYWRsZW4oc2tiKV0gXj0KLQkJCTE8PChwcmFuZG9tX3UzMigpICUgOCk7CisJ CXNrYi0+ZGF0YVtwcmFuZG9tX3UzMl9tYXgoc2tiX2hlYWRsZW4oc2tiKSldIF49CisJCQkxPDxw cmFuZG9tX3UzMl9tYXgoOCk7CiAJfQogCiAJaWYgKHVubGlrZWx5KHNjaC0+cS5xbGVuID49IHNj aC0+bGltaXQpKSB7CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zb2NrZXQuYyBiL25ldC9zY3RwL3Nv Y2tldC5jCmluZGV4IDE3MWYxYTM1ZDIwNS4uMWUzNTRiYTQ0OTYwIDEwMDY0NAotLS0gYS9uZXQv c2N0cC9zb2NrZXQuYworKysgYi9uZXQvc2N0cC9zb2NrZXQuYwpAQCAtODMxOSw3ICs4MzE5LDcg QEAgc3RhdGljIGludCBzY3RwX2dldF9wb3J0X2xvY2FsKHN0cnVjdCBzb2NrICpzaywgdW5pb24g c2N0cF9hZGRyICphZGRyKQogCiAJCWluZXRfZ2V0X2xvY2FsX3BvcnRfcmFuZ2UobmV0LCAmbG93 LCAmaGlnaCk7CiAJCXJlbWFpbmluZyA9IChoaWdoIC0gbG93KSArIDE7Ci0JCXJvdmVyID0gcHJh bmRvbV91MzIoKSAlIHJlbWFpbmluZyArIGxvdzsKKwkJcm92ZXIgPSBwcmFuZG9tX3UzMl9tYXgo cmVtYWluaW5nKSArIGxvdzsKIAogCQlkbyB7CiAJCQlyb3ZlcisrOwpkaWZmIC0tZ2l0IGEvbmV0 L3N1bnJwYy9jYWNoZS5jIGIvbmV0L3N1bnJwYy9jYWNoZS5jCmluZGV4IGMzYzY5M2I1MWM5NC4u ZjA3NWE5ZmI1Y2NjIDEwMDY0NAotLS0gYS9uZXQvc3VucnBjL2NhY2hlLmMKKysrIGIvbmV0L3N1 bnJwYy9jYWNoZS5jCkBAIC02NzcsNyArNjc3LDcgQEAgc3RhdGljIHZvaWQgY2FjaGVfbGltaXRf ZGVmZXJzKHZvaWQpCiAKIAkvKiBDb25zaWRlciByZW1vdmluZyBlaXRoZXIgdGhlIGZpcnN0IG9y IHRoZSBsYXN0ICovCiAJaWYgKGNhY2hlX2RlZmVyX2NudCA+IERGUl9NQVgpIHsKLQkJaWYgKHBy YW5kb21fdTMyKCkgJiAxKQorCQlpZiAocHJhbmRvbV91MzJfbWF4KDIpKQogCQkJZGlzY2FyZCA9 IGxpc3RfZW50cnkoY2FjaGVfZGVmZXJfbGlzdC5uZXh0LAogCQkJCQkgICAgIHN0cnVjdCBjYWNo ZV9kZWZlcnJlZF9yZXEsIHJlY2VudCk7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMv eHBydHNvY2suYyBiL25ldC9zdW5ycGMveHBydHNvY2suYwppbmRleCBlOTc2MDA3ZjRmZDAuLmY1 NWZmNTE1NWI2ZSAxMDA2NDQKLS0tIGEvbmV0L3N1bnJwYy94cHJ0c29jay5jCisrKyBiL25ldC9z dW5ycGMveHBydHNvY2suYwpAQCAtMTYxOSw3ICsxNjE5LDcgQEAgc3RhdGljIGludCB4c19nZXRf cmFuZG9tX3BvcnQodm9pZCkKIAlpZiAobWF4IDwgbWluKQogCQlyZXR1cm4gLUVBRERSSU5VU0U7 CiAJcmFuZ2UgPSBtYXggLSBtaW4gKyAxOwotCXJhbmQgPSAodW5zaWduZWQgc2hvcnQpIHByYW5k b21fdTMyKCkgJSByYW5nZTsKKwlyYW5kID0gcHJhbmRvbV91MzJfbWF4KHJhbmdlKTsKIAlyZXR1 cm4gcmFuZCArIG1pbjsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvc29ja2V0LmMgYi9uZXQv dGlwYy9zb2NrZXQuYwppbmRleCBmMWMzYjhlYjRiM2QuLmU5MDJiMDFlYTNjYiAxMDA2NDQKLS0t IGEvbmV0L3RpcGMvc29ja2V0LmMKKysrIGIvbmV0L3RpcGMvc29ja2V0LmMKQEAgLTMwMTAsNyAr MzAxMCw3IEBAIHN0YXRpYyBpbnQgdGlwY19za19pbnNlcnQoc3RydWN0IHRpcGNfc29jayAqdHNr KQogCXN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrKTsKIAlzdHJ1Y3QgdGlwY19uZXQgKnRu ID0gbmV0X2dlbmVyaWMobmV0LCB0aXBjX25ldF9pZCk7CiAJdTMyIHJlbWFpbmluZyA9IChUSVBD X01BWF9QT1JUIC0gVElQQ19NSU5fUE9SVCkgKyAxOwotCXUzMiBwb3J0aWQgPSBwcmFuZG9tX3Uz MigpICUgcmVtYWluaW5nICsgVElQQ19NSU5fUE9SVDsKKwl1MzIgcG9ydGlkID0gcHJhbmRvbV91 MzJfbWF4KHJlbWFpbmluZykgKyBUSVBDX01JTl9QT1JUOwogCiAJd2hpbGUgKHJlbWFpbmluZy0t KSB7CiAJCXBvcnRpZCsrOwpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9zdGF0ZS5jIGIvbmV0 L3hmcm0veGZybV9zdGF0ZS5jCmluZGV4IDkxYzMyYTNiNjkyNC4uYjIxM2M4OWNmYjhhIDEwMDY0 NAotLS0gYS9uZXQveGZybS94ZnJtX3N0YXRlLmMKKysrIGIvbmV0L3hmcm0veGZybV9zdGF0ZS5j CkBAIC0yMDcyLDcgKzIwNzIsNyBAQCBpbnQgeGZybV9hbGxvY19zcGkoc3RydWN0IHhmcm1fc3Rh dGUgKngsIHUzMiBsb3csIHUzMiBoaWdoKQogCX0gZWxzZSB7CiAJCXUzMiBzcGkgPSAwOwogCQlm b3IgKGggPSAwOyBoIDwgaGlnaC1sb3crMTsgaCsrKSB7Ci0JCQlzcGkgPSBsb3cgKyBwcmFuZG9t X3UzMigpJShoaWdoLWxvdysxKTsKKwkJCXNwaSA9IGxvdyArIHByYW5kb21fdTMyX21heChoaWdo IC0gbG93ICsgMSk7CiAJCQl4MCA9IHhmcm1fc3RhdGVfbG9va3VwKG5ldCwgbWFyaywgJngtPmlk LmRhZGRyLCBodG9ubChzcGkpLCB4LT5pZC5wcm90bywgeC0+cHJvcHMuZmFtaWx5KTsKIAkJCWlm ICh4MCA9PSBOVUxMKSB7CiAJCQkJbmV3c3BpID0gaHRvbmwoc3BpKTsKLS0gCjIuMzcuMwoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51 eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg==