From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Jason A. Donenfeld" Subject: [PATCH v6 1/7] treewide: use prandom_u32_max() when possible, part 1 Date: Mon, 10 Oct 2022 17:06:07 -0600 Message-Id: <20221010230613.1076905-2-Jason@zx2c4.com> In-Reply-To: <20221010230613.1076905-1-Jason@zx2c4.com> References: <20221010230613.1076905-1-Jason@zx2c4.com> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-um" Errors-To: linux-um-bounces+geert=linux-m68k.org@lists.infradead.org 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" UmF0aGVyIHRoYW4gaW5jdXJyaW5nIGEgZGl2aXNpb24gb3IgcmVxdWVzdGluZyB0b28gbWFueSBy YW5kb20gYnl0ZXMgZm9yCnRoZSBnaXZlbiByYW5nZSwgdXNlIHRoZSBwcmFuZG9tX3UzMl9tYXgo KSBmdW5jdGlvbiwgd2hpY2ggb25seSB0YWtlcwp0aGUgbWluaW11bSByZXF1aXJlZCBieXRlcyBm cm9tIHRoZSBSTkcgYW5kIGF2b2lkcyBkaXZpc2lvbnMuIFRoaXMgd2FzCmRvbmUgbWVjaGFuaWNh bGx5IHdpdGggdGhpcyBjb2NjaW5lbGxlIHNjcmlwdDoKCkBiYXNpY0AKZXhwcmVzc2lvbiBFOwp0 eXBlIFQ7CmlkZW50aWZpZXIgZ2V0X3JhbmRvbV91MzIgPX4gImdldF9yYW5kb21faW50fHByYW5k b21fdTMyfGdldF9yYW5kb21fdTMyIjsKdHlwZWRlZiB1NjQ7CkBACigKLSAoKFQpZ2V0X3JhbmRv bV91MzIoKSAlIChFKSkKKyBwcmFuZG9tX3UzMl9tYXgoRSkKfAotICgoVClnZXRfcmFuZG9tX3Uz MigpICYgKChFKSAtIDEpKQorIHByYW5kb21fdTMyX21heChFICogWFhYX01BS0VfU1VSRV9FX0lT X1BPVzIpCnwKLSAoKHU2NCkoRSkgKiBnZXRfcmFuZG9tX3UzMigpID4+IDMyKQorIHByYW5kb21f dTMyX21heChFKQp8Ci0gKChUKWdldF9yYW5kb21fdTMyKCkgJiB+UEFHRV9NQVNLKQorIHByYW5k b21fdTMyX21heChQQUdFX1NJWkUpCikKCkBtdWx0aV9saW5lQAppZGVudGlmaWVyIGdldF9yYW5k b21fdTMyID1+ICJnZXRfcmFuZG9tX2ludHxwcmFuZG9tX3UzMnxnZXRfcmFuZG9tX3UzMiI7Cmlk ZW50aWZpZXIgUkFORDsKZXhwcmVzc2lvbiBFOwpAQAoKLSAgICAgICBSQU5EID0gZ2V0X3JhbmRv bV91MzIoKTsKICAgICAgICAuLi4gd2hlbiAhPSBSQU5ECi0gICAgICAgUkFORCAlPSAoRSk7Cisg ICAgICAgUkFORCA9IHByYW5kb21fdTMyX21heChFKTsKCi8vIEZpbmQgYSBwb3RlbnRpYWwgbGl0 ZXJhbApAbGl0ZXJhbF9tYXNrQApleHByZXNzaW9uIExJVEVSQUw7CnR5cGUgVDsKaWRlbnRpZmll ciBnZXRfcmFuZG9tX3UzMiA9fiAiZ2V0X3JhbmRvbV9pbnR8cHJhbmRvbV91MzJ8Z2V0X3JhbmRv bV91MzIiOwpwb3NpdGlvbiBwOwpAQAoKICAgICAgICAoKFQpZ2V0X3JhbmRvbV91MzIoKUBwICYg KExJVEVSQUwpKQoKLy8gQWRkIG9uZSB0byB0aGUgbGl0ZXJhbC4KQHNjcmlwdDpweXRob24gYWRk X29uZUAKbGl0ZXJhbCA8PCBsaXRlcmFsX21hc2suTElURVJBTDsKUkVTVUxUOwpAQAoKdmFsdWUg PSBOb25lCmlmIGxpdGVyYWwuc3RhcnRzd2l0aCgnMHgnKToKICAgICAgICB2YWx1ZSA9IGludChs aXRlcmFsLCAxNikKZWxpZiBsaXRlcmFsWzBdIGluICcxMjM0NTY3ODknOgogICAgICAgIHZhbHVl ID0gaW50KGxpdGVyYWwsIDEwKQppZiB2YWx1ZSBpcyBOb25lOgogICAgICAgIHByaW50KCJJIGRv bid0IGtub3cgaG93IHRvIGhhbmRsZSAlcyIgJSAobGl0ZXJhbCkpCiAgICAgICAgY29jY2kuaW5j bHVkZV9tYXRjaChGYWxzZSkKZWxpZiB2YWx1ZSA9PSAyKiozMiAtIDEgb3IgdmFsdWUgPT0gMioq MzEgLSAxIG9yIHZhbHVlID09IDIqKjI0IC0gMSBvciB2YWx1ZSA9PSAyKioxNiAtIDEgb3IgdmFs dWUgPT0gMioqOCAtIDE6CiAgICAgICAgcHJpbnQoIlNraXBwaW5nIDB4JXggZm9yIGNsZWFudXAg ZWxzZXdoZXJlIiAlICh2YWx1ZSkpCiAgICAgICAgY29jY2kuaW5jbHVkZV9tYXRjaChGYWxzZSkK ZWxpZiB2YWx1ZSAmICh2YWx1ZSArIDEpICE9IDA6CiAgICAgICAgcHJpbnQoIlNraXBwaW5nIDB4 JXggYmVjYXVzZSBpdCdzIG5vdCBhIHBvd2VyIG9mIHR3byBtaW51cyBvbmUiICUgKHZhbHVlKSkK ICAgICAgICBjb2NjaS5pbmNsdWRlX21hdGNoKEZhbHNlKQplbGlmIGxpdGVyYWwuc3RhcnRzd2l0 aCgnMHgnKToKICAgICAgICBjb2NjaW5lbGxlLlJFU1VMVCA9IGNvY2NpLm1ha2VfZXhwcigiMHgl eCIgJSAodmFsdWUgKyAxKSkKZWxzZToKICAgICAgICBjb2NjaW5lbGxlLlJFU1VMVCA9IGNvY2Np Lm1ha2VfZXhwcigiJWQiICUgKHZhbHVlICsgMSkpCgovLyBSZXBsYWNlIHRoZSBsaXRlcmFsIG1h c2sgd2l0aCB0aGUgY2FsY3VsYXRlZCByZXN1bHQuCkBwbHVzX29uZUAKZXhwcmVzc2lvbiBsaXRl cmFsX21hc2suTElURVJBTDsKcG9zaXRpb24gbGl0ZXJhbF9tYXNrLnA7CmV4cHJlc3Npb24gYWRk X29uZS5SRVNVTFQ7CmlkZW50aWZpZXIgRlVOQzsKQEAKCi0gICAgICAgKEZVTkMoKUBwICYgKExJ VEVSQUwpKQorICAgICAgIHByYW5kb21fdTMyX21heChSRVNVTFQpCgpAY29sbGFwc2VfcmV0QAp0 eXBlIFQ7CmlkZW50aWZpZXIgVkFSOwpleHByZXNzaW9uIEU7CkBACgogewotICAgICAgIFQgVkFS OwotICAgICAgIFZBUiA9IChFKTsKLSAgICAgICByZXR1cm4gVkFSOworICAgICAgIHJldHVybiBF OwogfQoKQGRyb3BfdmFyQAp0eXBlIFQ7CmlkZW50aWZpZXIgVkFSOwpAQAoKIHsKLSAgICAgICBU IFZBUjsKICAgICAgICAuLi4gd2hlbiAhPSBWQVIKIH0KClJldmlld2VkLWJ5OiBHcmVnIEtyb2Fo LUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpSZXZpZXdlZC1ieTogS2VlcyBD b29rIDxrZWVzY29va0BjaHJvbWl1bS5vcmc+ClJldmlld2VkLWJ5OiBZdXJ5IE5vcm92IDx5dXJ5 Lm5vcm92QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEtQIFNpbmdoIDxrcHNpbmdoQGtlcm5lbC5v cmc+ClJldmlld2VkLWJ5OiBKYW4gS2FyYSA8amFja0BzdXNlLmN6PiAjIGZvciBleHQ0IGFuZCBz Yml0bWFwClJldmlld2VkLWJ5OiBDaHJpc3RvcGggQsO2aG13YWxkZXIgPGNocmlzdG9waC5ib2Vo bXdhbGRlckBsaW5iaXQuY29tPiAjIGZvciBkcmJkCkFja2VkLWJ5OiBVbGYgSGFuc3NvbiA8dWxm LmhhbnNzb25AbGluYXJvLm9yZz4gIyBmb3IgbW1jCkFja2VkLWJ5OiBEYXJyaWNrIEouIFdvbmcg PGRqd29uZ0BrZXJuZWwub3JnPiAjIGZvciB4ZnMKU2lnbmVkLW9mZi1ieTogSmFzb24gQS4gRG9u ZW5mZWxkIDxKYXNvbkB6eDJjNC5jb20+Ci0tLQogYXJjaC9hcm0va2VybmVsL3Byb2Nlc3MuYyAg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gvYXJtNjQva2VybmVsL3Byb2Nlc3MuYyAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBhcmNoL2xvb25nYXJjaC9rZXJuZWwvcHJvY2Vzcy5j ICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC9sb29uZ2FyY2gva2VybmVsL3Zkc28uYyAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gvbWlwcy9rZXJuZWwvcHJvY2Vzcy5jICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBhcmNoL21pcHMva2VybmVsL3Zkc28uYyAgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArLQogYXJjaC9wYXJpc2Mva2VybmVsL3Zkc28uYyAgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KIGFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvY2Vzcy5jICAgICAgICAgICAg ICAgICB8ICAyICstCiBhcmNoL3MzOTAva2VybmVsL3Byb2Nlc3MuYyAgICAgICAgICAgICAgICAg ICAgfCAgMiArLQogYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmMgICAgICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIGFyY2gvc3BhcmMvdmRzby92bWEuYyAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBhcmNoL3VtL2tlcm5lbC9wcm9jZXNzLmMgICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQogYXJjaC94ODYvZW50cnkvdmRzby92bWEuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIGFyY2gveDg2L2tlcm5lbC9tb2R1bGUuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICst CiBhcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQog YXJjaC94ODYvbW0vcGF0L2NwYS10ZXN0LmMgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGNy eXB0by90ZXN0bWdyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDg2ICsrKysrKysr Ky0tLS0tLS0tLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMgICAgICAgICAg ICB8ICA0ICstCiAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAg fCAgMiArLQogZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY21hLmMgICAgICAgICAgICAgICAgIHwg IDIgKy0KIGRyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9pZF90YWJsZS5jICAgICAgICB8ICA0 ICstCiBkcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX2FoLmMgICAgICAgfCAgNSAr LQogZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmMgICAgICAgIHwgIDMgKy0K IGRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYyAgICAgICAgICAgICAgICAgICB8ICAyICstCiAu Li4vdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLXRvdWNoLWNhcC5jICAgICAgfCAgMiArLQogZHJp dmVycy9tbWMvY29yZS9jb3JlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGRyaXZl cnMvbW1jL2hvc3QvZHdfbW1jLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJz L210ZC9uYW5kL3Jhdy9uYW5kc2ltLmMgICAgICAgICAgICAgICAgfCAgNCArLQogZHJpdmVycy9t dGQvdGVzdHMvbXRkX25hbmRlY2N0ZXN0LmMgICAgICAgICAgIHwgMTAgKy0tCiBkcml2ZXJzL210 ZC90ZXN0cy9zdHJlc3N0ZXN0LmMgICAgICAgICAgICAgICAgfCAxNyArLS0tCiBkcml2ZXJzL210 ZC91YmkvZGVidWcuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tdGQv dWJpL2RlYnVnLmggICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKy0KIGRyaXZlcnMvbmV0L2V0 aGVybmV0L2Jyb2FkY29tL2NuaWMuYyAgICAgICAgICB8ICAzICstCiAuLi4vY2hlbHNpby9pbmxp bmVfY3J5cHRvL2NodGxzL2NodGxzX2lvLmMgICAgfCAgNCArLQogZHJpdmVycy9uZXQvaGFtcmFk aW8vYmF5Y29tX2VwcC5jICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbmV0L2hhbXJhZGlv L2hkbGNkcnYuYyAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL25ldC9oYW1yYWRpby95 YW0uYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9uZXQvcGh5L2F0ODAzeC5j ICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIC4uLi9icm9hZGNvbS9icmNtODAyMTEvYnJj bWZtYWMvcDJwLmMgICAgICAgICB8ICAyICstCiAuLi4vbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdp ZmkvbXZtL21hYy1jdHh0LmMgfCAgMiArLQogZHJpdmVycy9zY3NpL2Zjb2UvZmNvZV9jdGxyLmMg ICAgICAgICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvc2NzaS9xZWRpL3FlZGlfbWFpbi5jICAg ICAgICAgICAgICAgICB8ICAyICstCiBmcy9jZXBoL2lub2RlLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMiArLQogZnMvY2VwaC9tZHNtYXAuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIGZzL2V4dDQvc3VwZXIuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA3ICstCiBmcy9mMmZzL2djLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQogZnMvZjJmcy9zZWdtZW50LmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDggKy0KIGZzL3ViaWZzL2RlYnVnLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICA4ICstCiBmcy91Ymlmcy9scHRfY29tbWl0LmMgICAgICAgICAgICAgICAgICAgICAgICAg fCAxNCArLS0KIGZzL3ViaWZzL3RuY19jb21taXQuYyAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAyICstCiBmcy94ZnMvbGlieGZzL3hmc19hbGxvYy5jICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQogZnMveGZzL2xpYnhmcy94ZnNfaWFsbG9jLmMgICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIGZzL3hmcy94ZnNfZXJyb3IuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICst CiBpbmNsdWRlL2xpbnV4L25vZGVtYXNrLmggICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQog a2VybmVsL2JwZi9jb3JlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGtl cm5lbC9sb2NraW5nL3Rlc3Qtd3dfbXV0ZXguYyAgICAgICAgICAgICAgICB8ICA0ICstCiBrZXJu ZWwvdGltZS9jbG9ja3NvdXJjZS5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGliL2Zh dWx0LWluamVjdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGxpYi9maW5k X2JpdF9iZW5jaG1hcmsuYyAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBsaWIva29iamVj dC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGliL3JlZWRfc29s b21vbi90ZXN0X3JzbGliLmMgICAgICAgICAgICAgICAgIHwgIDYgKy0KIGxpYi9zYml0bWFwLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBsaWIvdGVzdC1zdHJpbmdf aGVscGVycy5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbGliL3Rlc3RfaGV4ZHVtcC5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKy0tCiBsaWIvdGVzdF9rYXNhbi5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArLQogbGliL3Rlc3RfbGlzdF9zb3J0LmMg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIG1tL21pZ3JhdGUuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBtbS9zbHViLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0LzgwMi9nYXJwLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC84MDIvbXJwLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBuZXQvY2VwaC9tb25fY2xpZW50LmMgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L2NlcGgvb3NkX2NsaWVudC5jICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC9jb3JlL25laWdoYm91ci5jICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBuZXQvY29yZS9wa3RnZW4uYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCA0MyArKysrKy0tLS0tCiBuZXQvY29yZS9zdHJlYW0uYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L2lwdjQvaWdtcC5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDYgKy0KIG5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmMgICAg ICAgICAgICAgICB8ICAyICstCiBuZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYyAgICAgICAgICAg ICAgICAgICAgfCAgMiArLQogbmV0L2lwdjYvYWRkcmNvbmYuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDggKy0KIG5ldC9pcHY2L21jYXN0LmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDEwICstLQogbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYyAgICAgICAgICAg ICAgIHwgIDQgKy0KIG5ldC9wYWNrZXQvYWZfcGFja2V0LmMgICAgICAgICAgICAgICAgICAgICAg ICB8ICAyICstCiBuZXQvc2NoZWQvYWN0X2dhY3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMiArLQogbmV0L3NjaGVkL2FjdF9zYW1wbGUuYyAgICAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIG5ldC9zY2hlZC9zY2hfbmV0ZW0uYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0 ICstCiBuZXQvc2N0cC9zb2NrZXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiAr LQogbmV0L3N1bnJwYy9jYWNoZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IG5ldC9zdW5ycGMveHBydHNvY2suYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBu ZXQvdGlwYy9zb2NrZXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0 L3hmcm0veGZybV9zdGF0ZS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDkwIGZp bGVzIGNoYW5nZWQsIDIwNSBpbnNlcnRpb25zKCspLCAyMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvYXJjaC9hcm0va2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvYXJtL2tlcm5lbC9wcm9jZXNz LmMKaW5kZXggOTZmM2ZiZDUxNzY0Li4xMjkyNzliMzNiMWQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJt L2tlcm5lbC9wcm9jZXNzLmMKKysrIGIvYXJjaC9hcm0va2VybmVsL3Byb2Nlc3MuYwpAQCAtMzc1 LDcgKzM3NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHNpZ3BhZ2VfYWRkcihjb25zdCBzdHJ1 Y3QgbW1fc3RydWN0ICptbSwKIAogCXNsb3RzID0gKChsYXN0IC0gZmlyc3QpID4+IFBBR0VfU0hJ RlQpICsgMTsKIAotCW9mZnNldCA9IGdldF9yYW5kb21faW50KCkgJSBzbG90czsKKwlvZmZzZXQg PSBwcmFuZG9tX3UzMl9tYXgoc2xvdHMpOwogCiAJYWRkciA9IGZpcnN0ICsgKG9mZnNldCA8PCBQ QUdFX1NISUZUKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rZXJuZWwvcHJvY2Vzcy5jIGIv YXJjaC9hcm02NC9rZXJuZWwvcHJvY2Vzcy5jCmluZGV4IDkyYmNjMTc2OGYwYi4uODcyMDM0Mjlm ODAyIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9wcm9jZXNzLmMKKysrIGIvYXJjaC9h cm02NC9rZXJuZWwvcHJvY2Vzcy5jCkBAIC01OTUsNyArNTk1LDcgQEAgdW5zaWduZWQgbG9uZyBf X2dldF93Y2hhbihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnApCiB1bnNpZ25lZCBsb25nIGFyY2hfYWxp Z25fc3RhY2sodW5zaWduZWQgbG9uZyBzcCkKIHsKIAlpZiAoIShjdXJyZW50LT5wZXJzb25hbGl0 eSAmIEFERFJfTk9fUkFORE9NSVpFKSAmJiByYW5kb21pemVfdmFfc3BhY2UpCi0JCXNwIC09IGdl dF9yYW5kb21faW50KCkgJiB+UEFHRV9NQVNLOworCQlzcCAtPSBwcmFuZG9tX3UzMl9tYXgoUEFH RV9TSVpFKTsKIAlyZXR1cm4gc3AgJiB+MHhmOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL2xvb25n YXJjaC9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC9sb29uZ2FyY2gva2VybmVsL3Byb2Nlc3MuYwpp bmRleCA2NjA0OTJmMDY0ZTcuLjEyNTZlMzU4MjQ3NSAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2Fy Y2gva2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL2xvb25nYXJjaC9rZXJuZWwvcHJvY2Vzcy5j CkBAIC0yOTMsNyArMjkzLDcgQEAgdW5zaWduZWQgbG9uZyBzdGFja190b3Aodm9pZCkKIHVuc2ln bmVkIGxvbmcgYXJjaF9hbGlnbl9zdGFjayh1bnNpZ25lZCBsb25nIHNwKQogewogCWlmICghKGN1 cnJlbnQtPnBlcnNvbmFsaXR5ICYgQUREUl9OT19SQU5ET01JWkUpICYmIHJhbmRvbWl6ZV92YV9z cGFjZSkKLQkJc3AgLT0gZ2V0X3JhbmRvbV9pbnQoKSAmIH5QQUdFX01BU0s7CisJCXNwIC09IHBy YW5kb21fdTMyX21heChQQUdFX1NJWkUpOwogCiAJcmV0dXJuIHNwICYgU1RBQ0tfQUxJR047CiB9 CmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rZXJuZWwvdmRzby5jIGIvYXJjaC9sb29uZ2Fy Y2gva2VybmVsL3Zkc28uYwppbmRleCBmMzJjMzhhYmQ3OTEuLjhjOTgyNjA2MjY1MiAxMDA2NDQK LS0tIGEvYXJjaC9sb29uZ2FyY2gva2VybmVsL3Zkc28uYworKysgYi9hcmNoL2xvb25nYXJjaC9r ZXJuZWwvdmRzby5jCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHZkc29f YmFzZSh2b2lkKQogCXVuc2lnbmVkIGxvbmcgYmFzZSA9IFNUQUNLX1RPUDsKIAogCWlmIChjdXJy ZW50LT5mbGFncyAmIFBGX1JBTkRPTUlaRSkgewotCQliYXNlICs9IGdldF9yYW5kb21faW50KCkg JiAoVkRTT19SQU5ET01JWkVfU0laRSAtIDEpOworCQliYXNlICs9IHByYW5kb21fdTMyX21heChW RFNPX1JBTkRPTUlaRV9TSVpFKTsKIAkJYmFzZSA9IFBBR0VfQUxJR04oYmFzZSk7CiAJfQogCmRp ZmYgLS1naXQgYS9hcmNoL21pcHMva2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvbWlwcy9rZXJuZWwv cHJvY2Vzcy5jCmluZGV4IDM1YjkxMmJjZTQyOS4uYmJlOWNlNDcxNzkxIDEwMDY0NAotLS0gYS9h cmNoL21pcHMva2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL21pcHMva2VybmVsL3Byb2Nlc3Mu YwpAQCAtNzExLDcgKzcxMSw3IEBAIHVuc2lnbmVkIGxvbmcgbWlwc19zdGFja190b3Aodm9pZCkK IHVuc2lnbmVkIGxvbmcgYXJjaF9hbGlnbl9zdGFjayh1bnNpZ25lZCBsb25nIHNwKQogewogCWlm ICghKGN1cnJlbnQtPnBlcnNvbmFsaXR5ICYgQUREUl9OT19SQU5ET01JWkUpICYmIHJhbmRvbWl6 ZV92YV9zcGFjZSkKLQkJc3AgLT0gZ2V0X3JhbmRvbV9pbnQoKSAmIH5QQUdFX01BU0s7CisJCXNw IC09IHByYW5kb21fdTMyX21heChQQUdFX1NJWkUpOwogCiAJcmV0dXJuIHNwICYgQUxNQVNLOwog fQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC92ZHNvLmMgYi9hcmNoL21pcHMva2VybmVs L3Zkc28uYwppbmRleCBiMmNjMmMyZGQ0YmYuLjVmZDliZjFkNTk2YyAxMDA2NDQKLS0tIGEvYXJj aC9taXBzL2tlcm5lbC92ZHNvLmMKKysrIGIvYXJjaC9taXBzL2tlcm5lbC92ZHNvLmMKQEAgLTc5 LDcgKzc5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgdmRzb19iYXNlKHZvaWQpCiAJfQogCiAJ aWYgKGN1cnJlbnQtPmZsYWdzICYgUEZfUkFORE9NSVpFKSB7Ci0JCWJhc2UgKz0gZ2V0X3JhbmRv bV9pbnQoKSAmIChWRFNPX1JBTkRPTUlaRV9TSVpFIC0gMSk7CisJCWJhc2UgKz0gcHJhbmRvbV91 MzJfbWF4KFZEU09fUkFORE9NSVpFX1NJWkUpOwogCQliYXNlID0gUEFHRV9BTElHTihiYXNlKTsK IAl9CiAKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC92ZHNvLmMgYi9hcmNoL3Bhcmlz Yy9rZXJuZWwvdmRzby5jCmluZGV4IDYzZGM0NGM0YzI0Ni4uNDdlNTk2MGEyZjk2IDEwMDY0NAot LS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvdmRzby5jCisrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC92 ZHNvLmMKQEAgLTc1LDcgKzc1LDcgQEAgaW50IGFyY2hfc2V0dXBfYWRkaXRpb25hbF9wYWdlcyhz dHJ1Y3QgbGludXhfYmlucHJtICpicHJtLAogCiAJbWFwX2Jhc2UgPSBtbS0+bW1hcF9iYXNlOwog CWlmIChjdXJyZW50LT5mbGFncyAmIFBGX1JBTkRPTUlaRSkKLQkJbWFwX2Jhc2UgLT0gKGdldF9y YW5kb21faW50KCkgJiAweDFmKSAqIFBBR0VfU0laRTsKKwkJbWFwX2Jhc2UgLT0gcHJhbmRvbV91 MzJfbWF4KDB4MjApICogUEFHRV9TSVpFOwogCiAJdmRzb190ZXh0X3N0YXJ0ID0gZ2V0X3VubWFw cGVkX2FyZWEoTlVMTCwgbWFwX2Jhc2UsIHZkc29fdGV4dF9sZW4sIDAsIDApOwogCmRpZmYgLS1n aXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwv cHJvY2Vzcy5jCmluZGV4IDM3ZGYwNDI4ZTRmYi4uNTk5MzkxYzIzNTczIDEwMDY0NAotLS0gYS9h cmNoL3Bvd2VycGMva2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3By b2Nlc3MuYwpAQCAtMjMwOCw2ICsyMzA4LDYgQEAgdm9pZCBub3RyYWNlIF9fcHBjNjRfcnVubGF0 Y2hfb2ZmKHZvaWQpCiB1bnNpZ25lZCBsb25nIGFyY2hfYWxpZ25fc3RhY2sodW5zaWduZWQgbG9u ZyBzcCkKIHsKIAlpZiAoIShjdXJyZW50LT5wZXJzb25hbGl0eSAmIEFERFJfTk9fUkFORE9NSVpF KSAmJiByYW5kb21pemVfdmFfc3BhY2UpCi0JCXNwIC09IGdldF9yYW5kb21faW50KCkgJiB+UEFH RV9NQVNLOworCQlzcCAtPSBwcmFuZG9tX3UzMl9tYXgoUEFHRV9TSVpFKTsKIAlyZXR1cm4gc3Ag JiB+MHhmOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2tlcm5lbC9wcm9jZXNzLmMgYi9hcmNo L3MzOTAva2VybmVsL3Byb2Nlc3MuYwppbmRleCBkNTExOWUwMzlkODUuLjVlYzc4NTU1ZGQyZSAx MDA2NDQKLS0tIGEvYXJjaC9zMzkwL2tlcm5lbC9wcm9jZXNzLmMKKysrIGIvYXJjaC9zMzkwL2tl cm5lbC9wcm9jZXNzLmMKQEAgLTIyNCw3ICsyMjQsNyBAQCB1bnNpZ25lZCBsb25nIF9fZ2V0X3dj aGFuKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkKIHVuc2lnbmVkIGxvbmcgYXJjaF9hbGlnbl9zdGFj ayh1bnNpZ25lZCBsb25nIHNwKQogewogCWlmICghKGN1cnJlbnQtPnBlcnNvbmFsaXR5ICYgQURE Ul9OT19SQU5ET01JWkUpICYmIHJhbmRvbWl6ZV92YV9zcGFjZSkKLQkJc3AgLT0gZ2V0X3JhbmRv bV9pbnQoKSAmIH5QQUdFX01BU0s7CisJCXNwIC09IHByYW5kb21fdTMyX21heChQQUdFX1NJWkUp OwogCXJldHVybiBzcCAmIH4weGY7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rZXJuZWwv dmRzby5jIGIvYXJjaC9zMzkwL2tlcm5lbC92ZHNvLmMKaW5kZXggNTA3NWNkZTc3YjI5Li5hNmI1 ZGI1OWNmNDAgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rZXJuZWwvdmRzby5jCisrKyBiL2FyY2gv czM5MC9rZXJuZWwvdmRzby5jCkBAIC0yMjYsNyArMjI2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxv bmcgdmRzb19hZGRyKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbGVuKQogCWVu ZCAtPSBsZW47CiAKIAlpZiAoZW5kID4gc3RhcnQpIHsKLQkJb2Zmc2V0ID0gZ2V0X3JhbmRvbV9p bnQoKSAlICgoKGVuZCAtIHN0YXJ0KSA+PiBQQUdFX1NISUZUKSArIDEpOworCQlvZmZzZXQgPSBw cmFuZG9tX3UzMl9tYXgoKChlbmQgLSBzdGFydCkgPj4gUEFHRV9TSElGVCkgKyAxKTsKIAkJYWRk ciA9IHN0YXJ0ICsgKG9mZnNldCA8PCBQQUdFX1NISUZUKTsKIAl9IGVsc2UgewogCQlhZGRyID0g c3RhcnQ7CmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL3Zkc28vdm1hLmMgYi9hcmNoL3NwYXJjL3Zk c28vdm1hLmMKaW5kZXggY2MxOWUwOWIwZmExLi5hZTlhODZjYjZmM2QgMTAwNjQ0Ci0tLSBhL2Fy Y2gvc3BhcmMvdmRzby92bWEuYworKysgYi9hcmNoL3NwYXJjL3Zkc28vdm1hLmMKQEAgLTM1NCw3 ICszNTQsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyB2ZHNvX2FkZHIodW5zaWduZWQgbG9uZyBz dGFydCwgdW5zaWduZWQgaW50IGxlbikKIAl1bnNpZ25lZCBpbnQgb2Zmc2V0OwogCiAJLyogVGhp cyBsb3NlcyBzb21lIG1vcmUgYml0cyB0aGFuIGEgbW9kdWxvLCBidXQgaXMgY2hlYXBlciAqLwot CW9mZnNldCA9IGdldF9yYW5kb21faW50KCkgJiAoUFRSU19QRVJfUFRFIC0gMSk7CisJb2Zmc2V0 ID0gcHJhbmRvbV91MzJfbWF4KFBUUlNfUEVSX1BURSk7CiAJcmV0dXJuIHN0YXJ0ICsgKG9mZnNl dCA8PCBQQUdFX1NISUZUKTsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC91bS9rZXJuZWwvcHJvY2Vz cy5jIGIvYXJjaC91bS9rZXJuZWwvcHJvY2Vzcy5jCmluZGV4IDgwYjkwYjEyNzZhMS4uMDEwYmM0 MjJhMDlkIDEwMDY0NAotLS0gYS9hcmNoL3VtL2tlcm5lbC9wcm9jZXNzLmMKKysrIGIvYXJjaC91 bS9rZXJuZWwvcHJvY2Vzcy5jCkBAIC0zNTYsNyArMzU2LDcgQEAgaW50IHNpbmdsZXN0ZXBwaW5n KHZvaWQgKiB0KQogdW5zaWduZWQgbG9uZyBhcmNoX2FsaWduX3N0YWNrKHVuc2lnbmVkIGxvbmcg c3ApCiB7CiAJaWYgKCEoY3VycmVudC0+cGVyc29uYWxpdHkgJiBBRERSX05PX1JBTkRPTUlaRSkg JiYgcmFuZG9taXplX3ZhX3NwYWNlKQotCQlzcCAtPSBnZXRfcmFuZG9tX2ludCgpICUgODE5MjsK KwkJc3AgLT0gcHJhbmRvbV91MzJfbWF4KDgxOTIpOwogCXJldHVybiBzcCAmIH4weGY7CiB9CiAj ZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2VudHJ5L3Zkc28vdm1hLmMgYi9hcmNoL3g4Ni9l bnRyeS92ZHNvL3ZtYS5jCmluZGV4IDEwMDBkNDU3YzMzMi4uYjY0YzU4YzY5NDBmIDEwMDY0NAot LS0gYS9hcmNoL3g4Ni9lbnRyeS92ZHNvL3ZtYS5jCisrKyBiL2FyY2gveDg2L2VudHJ5L3Zkc28v dm1hLmMKQEAgLTMyNyw3ICszMjcsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyB2ZHNvX2FkZHIo dW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbGVuKQogCWVuZCAtPSBsZW47CiAKIAlpZiAo ZW5kID4gc3RhcnQpIHsKLQkJb2Zmc2V0ID0gZ2V0X3JhbmRvbV9pbnQoKSAlICgoKGVuZCAtIHN0 YXJ0KSA+PiBQQUdFX1NISUZUKSArIDEpOworCQlvZmZzZXQgPSBwcmFuZG9tX3UzMl9tYXgoKChl bmQgLSBzdGFydCkgPj4gUEFHRV9TSElGVCkgKyAxKTsKIAkJYWRkciA9IHN0YXJ0ICsgKG9mZnNl dCA8PCBQQUdFX1NISUZUKTsKIAl9IGVsc2UgewogCQlhZGRyID0gc3RhcnQ7CmRpZmYgLS1naXQg YS9hcmNoL3g4Ni9rZXJuZWwvbW9kdWxlLmMgYi9hcmNoL3g4Ni9rZXJuZWwvbW9kdWxlLmMKaW5k ZXggYjFhYmY2NjM0MTdjLi5jMDMyZWRjZDNkOTUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5l bC9tb2R1bGUuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvbW9kdWxlLmMKQEAgLTUzLDcgKzUzLDcg QEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaW50IGdldF9tb2R1bGVfbG9hZF9vZmZzZXQodm9pZCkK IAkJICovCiAJCWlmIChtb2R1bGVfbG9hZF9vZmZzZXQgPT0gMCkKIAkJCW1vZHVsZV9sb2FkX29m ZnNldCA9Ci0JCQkJKGdldF9yYW5kb21faW50KCkgJSAxMDI0ICsgMSkgKiBQQUdFX1NJWkU7CisJ CQkJKHByYW5kb21fdTMyX21heCgxMDI0KSArIDEpICogUEFHRV9TSVpFOwogCQltdXRleF91bmxv Y2soJm1vZHVsZV9rYXNscl9tdXRleCk7CiAJfQogCXJldHVybiBtb2R1bGVfbG9hZF9vZmZzZXQ7 CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC94ODYva2VybmVs L3Byb2Nlc3MuYwppbmRleCA1OGE2ZWE0NzJkYjkuLmMyMWI3MzQ3YTI2ZCAxMDA2NDQKLS0tIGEv YXJjaC94ODYva2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5j CkBAIC05NjUsNyArOTY1LDcgQEAgZWFybHlfcGFyYW0oImlkbGUiLCBpZGxlX3NldHVwKTsKIHVu c2lnbmVkIGxvbmcgYXJjaF9hbGlnbl9zdGFjayh1bnNpZ25lZCBsb25nIHNwKQogewogCWlmICgh KGN1cnJlbnQtPnBlcnNvbmFsaXR5ICYgQUREUl9OT19SQU5ET01JWkUpICYmIHJhbmRvbWl6ZV92 YV9zcGFjZSkKLQkJc3AgLT0gZ2V0X3JhbmRvbV9pbnQoKSAlIDgxOTI7CisJCXNwIC09IHByYW5k b21fdTMyX21heCg4MTkyKTsKIAlyZXR1cm4gc3AgJiB+MHhmOwogfQogCmRpZmYgLS1naXQgYS9h cmNoL3g4Ni9tbS9wYXQvY3BhLXRlc3QuYyBiL2FyY2gveDg2L21tL3BhdC9jcGEtdGVzdC5jCmlu ZGV4IDA2MTJhNzM2MzhhOC4uNDIzYjIxZTgwOTI5IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tbS9w YXQvY3BhLXRlc3QuYworKysgYi9hcmNoL3g4Ni9tbS9wYXQvY3BhLXRlc3QuYwpAQCAtMTM2LDEw ICsxMzYsMTAgQEAgc3RhdGljIGludCBwYWdlYXR0cl90ZXN0KHZvaWQpCiAJZmFpbGVkICs9IHBy aW50X3NwbGl0KCZzYSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgTlRFU1Q7IGkrKykgewotCQl1bnNp Z25lZCBsb25nIHBmbiA9IHByYW5kb21fdTMyKCkgJSBtYXhfcGZuX21hcHBlZDsKKwkJdW5zaWdu ZWQgbG9uZyBwZm4gPSBwcmFuZG9tX3UzMl9tYXgobWF4X3Bmbl9tYXBwZWQpOwogCiAJCWFkZHJb aV0gPSAodW5zaWduZWQgbG9uZylfX3ZhKHBmbiA8PCBQQUdFX1NISUZUKTsKLQkJbGVuW2ldID0g cHJhbmRvbV91MzIoKSAlIE5QQUdFUzsKKwkJbGVuW2ldID0gcHJhbmRvbV91MzJfbWF4KE5QQUdF Uyk7CiAJCWxlbltpXSA9IG1pbl90KHVuc2lnbmVkIGxvbmcsIGxlbltpXSwgbWF4X3Bmbl9tYXBw ZWQgLSBwZm4gLSAxKTsKIAogCQlpZiAobGVuW2ldID09IDApCmRpZmYgLS1naXQgYS9jcnlwdG8v dGVzdG1nci5jIGIvY3J5cHRvL3Rlc3RtZ3IuYwppbmRleCA1MzQ5ZmZlZTZiYmQuLmJlNDUyMTdh Y2RlNCAxMDA2NDQKLS0tIGEvY3J5cHRvL3Rlc3RtZ3IuYworKysgYi9jcnlwdG8vdGVzdG1nci5j CkBAIC04NTUsOSArODU1LDkgQEAgc3RhdGljIGludCBwcmVwYXJlX2tleWJ1Zihjb25zdCB1OCAq a2V5LCB1bnNpZ25lZCBpbnQga3NpemUsCiAvKiBHZW5lcmF0ZSBhIHJhbmRvbSBsZW5ndGggaW4g cmFuZ2UgWzAsIG1heF9sZW5dLCBidXQgcHJlZmVyIHNtYWxsZXIgdmFsdWVzICovCiBzdGF0aWMg dW5zaWduZWQgaW50IGdlbmVyYXRlX3JhbmRvbV9sZW5ndGgodW5zaWduZWQgaW50IG1heF9sZW4p CiB7Ci0JdW5zaWduZWQgaW50IGxlbiA9IHByYW5kb21fdTMyKCkgJSAobWF4X2xlbiArIDEpOwor CXVuc2lnbmVkIGludCBsZW4gPSBwcmFuZG9tX3UzMl9tYXgobWF4X2xlbiArIDEpOwogCi0Jc3dp dGNoIChwcmFuZG9tX3UzMigpICUgNCkgeworCXN3aXRjaCAocHJhbmRvbV91MzJfbWF4KDQpKSB7 CiAJY2FzZSAwOgogCQlyZXR1cm4gbGVuICUgNjQ7CiAJY2FzZSAxOgpAQCAtODc0LDE0ICs4NzQs MTQgQEAgc3RhdGljIHZvaWQgZmxpcF9yYW5kb21fYml0KHU4ICpidWYsIHNpemVfdCBzaXplKQog ewogCXNpemVfdCBiaXRwb3M7CiAKLQliaXRwb3MgPSBwcmFuZG9tX3UzMigpICUgKHNpemUgKiA4 KTsKKwliaXRwb3MgPSBwcmFuZG9tX3UzMl9tYXgoc2l6ZSAqIDgpOwogCWJ1ZltiaXRwb3MgLyA4 XSBePSAxIDw8IChiaXRwb3MgJSA4KTsKIH0KIAogLyogRmxpcCBhIHJhbmRvbSBieXRlIGluIHRo ZSBnaXZlbiBub25lbXB0eSBkYXRhIGJ1ZmZlciAqLwogc3RhdGljIHZvaWQgZmxpcF9yYW5kb21f Ynl0ZSh1OCAqYnVmLCBzaXplX3Qgc2l6ZSkKIHsKLQlidWZbcHJhbmRvbV91MzIoKSAlIHNpemVd IF49IDB4ZmY7CisJYnVmW3ByYW5kb21fdTMyX21heChzaXplKV0gXj0gMHhmZjsKIH0KIAogLyog U29tZXRpbWVzIG1ha2Ugc29tZSByYW5kb20gY2hhbmdlcyB0byB0aGUgZ2l2ZW4gbm9uZW1wdHkg ZGF0YSBidWZmZXIgKi8KQEAgLTg5MSwxNSArODkxLDE1IEBAIHN0YXRpYyB2b2lkIG11dGF0ZV9i dWZmZXIodTggKmJ1Ziwgc2l6ZV90IHNpemUpCiAJc2l6ZV90IGk7CiAKIAkvKiBTb21ldGltZXMg ZmxpcCBzb21lIGJpdHMgKi8KLQlpZiAocHJhbmRvbV91MzIoKSAlIDQgPT0gMCkgewotCQludW1f ZmxpcHMgPSBtaW5fdChzaXplX3QsIDEgPDwgKHByYW5kb21fdTMyKCkgJSA4KSwgc2l6ZSAqIDgp OworCWlmIChwcmFuZG9tX3UzMl9tYXgoNCkgPT0gMCkgeworCQludW1fZmxpcHMgPSBtaW5fdChz aXplX3QsIDEgPDwgcHJhbmRvbV91MzJfbWF4KDgpLCBzaXplICogOCk7CiAJCWZvciAoaSA9IDA7 IGkgPCBudW1fZmxpcHM7IGkrKykKIAkJCWZsaXBfcmFuZG9tX2JpdChidWYsIHNpemUpOwogCX0K IAogCS8qIFNvbWV0aW1lcyBmbGlwIHNvbWUgYnl0ZXMgKi8KLQlpZiAocHJhbmRvbV91MzIoKSAl IDQgPT0gMCkgewotCQludW1fZmxpcHMgPSBtaW5fdChzaXplX3QsIDEgPDwgKHByYW5kb21fdTMy KCkgJSA4KSwgc2l6ZSk7CisJaWYgKHByYW5kb21fdTMyX21heCg0KSA9PSAwKSB7CisJCW51bV9m bGlwcyA9IG1pbl90KHNpemVfdCwgMSA8PCBwcmFuZG9tX3UzMl9tYXgoOCksIHNpemUpOwogCQlm b3IgKGkgPSAwOyBpIDwgbnVtX2ZsaXBzOyBpKyspCiAJCQlmbGlwX3JhbmRvbV9ieXRlKGJ1Ziwg c2l6ZSk7CiAJfQpAQCAtOTE1LDExICs5MTUsMTEgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfcmFu ZG9tX2J5dGVzKHU4ICpidWYsIHNpemVfdCBjb3VudCkKIAlpZiAoY291bnQgPT0gMCkKIAkJcmV0 dXJuOwogCi0Jc3dpdGNoIChwcmFuZG9tX3UzMigpICUgOCkgeyAvKiBDaG9vc2UgYSBnZW5lcmF0 aW9uIHN0cmF0ZWd5ICovCisJc3dpdGNoIChwcmFuZG9tX3UzMl9tYXgoOCkpIHsgLyogQ2hvb3Nl IGEgZ2VuZXJhdGlvbiBzdHJhdGVneSAqLwogCWNhc2UgMDoKIAljYXNlIDE6CiAJCS8qIEFsbCB0 aGUgc2FtZSBieXRlLCBwbHVzIG9wdGlvbmFsIG11dGF0aW9ucyAqLwotCQlzd2l0Y2ggKHByYW5k b21fdTMyKCkgJSA0KSB7CisJCXN3aXRjaCAocHJhbmRvbV91MzJfbWF4KDQpKSB7CiAJCWNhc2Ug MDoKIAkJCWIgPSAweDAwOwogCQkJYnJlYWs7CkBAIC05NTksMjQgKzk1OSwyNCBAQCBzdGF0aWMg Y2hhciAqZ2VuZXJhdGVfcmFuZG9tX3NnbF9kaXZpc2lvbnMoc3RydWN0IHRlc3Rfc2dfZGl2aXNp b24gKmRpdnMsCiAJCXVuc2lnbmVkIGludCB0aGlzX2xlbjsKIAkJY29uc3QgY2hhciAqZmx1c2h0 eXBlX3N0cjsKIAotCQlpZiAoZGl2ID09ICZkaXZzW21heF9kaXZzIC0gMV0gfHwgcHJhbmRvbV91 MzIoKSAlIDIgPT0gMCkKKwkJaWYgKGRpdiA9PSAmZGl2c1ttYXhfZGl2cyAtIDFdIHx8IHByYW5k b21fdTMyX21heCgyKSA9PSAwKQogCQkJdGhpc19sZW4gPSByZW1haW5pbmc7CiAJCWVsc2UKLQkJ CXRoaXNfbGVuID0gMSArIChwcmFuZG9tX3UzMigpICUgcmVtYWluaW5nKTsKKwkJCXRoaXNfbGVu ID0gMSArIHByYW5kb21fdTMyX21heChyZW1haW5pbmcpOwogCQlkaXYtPnByb3BvcnRpb25fb2Zf dG90YWwgPSB0aGlzX2xlbjsKIAotCQlpZiAocHJhbmRvbV91MzIoKSAlIDQgPT0gMCkKLQkJCWRp di0+b2Zmc2V0ID0gKFBBR0VfU0laRSAtIDEyOCkgKyAocHJhbmRvbV91MzIoKSAlIDEyOCk7Ci0J CWVsc2UgaWYgKHByYW5kb21fdTMyKCkgJSAyID09IDApCi0JCQlkaXYtPm9mZnNldCA9IHByYW5k b21fdTMyKCkgJSAzMjsKKwkJaWYgKHByYW5kb21fdTMyX21heCg0KSA9PSAwKQorCQkJZGl2LT5v ZmZzZXQgPSAoUEFHRV9TSVpFIC0gMTI4KSArIHByYW5kb21fdTMyX21heCgxMjgpOworCQllbHNl IGlmIChwcmFuZG9tX3UzMl9tYXgoMikgPT0gMCkKKwkJCWRpdi0+b2Zmc2V0ID0gcHJhbmRvbV91 MzJfbWF4KDMyKTsKIAkJZWxzZQotCQkJZGl2LT5vZmZzZXQgPSBwcmFuZG9tX3UzMigpICUgUEFH RV9TSVpFOwotCQlpZiAocHJhbmRvbV91MzIoKSAlIDggPT0gMCkKKwkJCWRpdi0+b2Zmc2V0ID0g cHJhbmRvbV91MzJfbWF4KFBBR0VfU0laRSk7CisJCWlmIChwcmFuZG9tX3UzMl9tYXgoOCkgPT0g MCkKIAkJCWRpdi0+b2Zmc2V0X3JlbGF0aXZlX3RvX2FsaWdubWFzayA9IHRydWU7CiAKIAkJZGl2 LT5mbHVzaF90eXBlID0gRkxVU0hfVFlQRV9OT05FOwogCQlpZiAoZ2VuX2ZsdXNoZXMpIHsKLQkJ CXN3aXRjaCAocHJhbmRvbV91MzIoKSAlIDQpIHsKKwkJCXN3aXRjaCAocHJhbmRvbV91MzJfbWF4 KDQpKSB7CiAJCQljYXNlIDA6CiAJCQkJZGl2LT5mbHVzaF90eXBlID0gRkxVU0hfVFlQRV9SRUlN UE9SVDsKIAkJCQlicmVhazsKQEAgLTk4OCw3ICs5ODgsNyBAQCBzdGF0aWMgY2hhciAqZ2VuZXJh dGVfcmFuZG9tX3NnbF9kaXZpc2lvbnMoc3RydWN0IHRlc3Rfc2dfZGl2aXNpb24gKmRpdnMsCiAK IAkJaWYgKGRpdi0+Zmx1c2hfdHlwZSAhPSBGTFVTSF9UWVBFX05PTkUgJiYKIAkJICAgICEocmVx X2ZsYWdzICYgQ1JZUFRPX1RGTV9SRVFfTUFZX1NMRUVQKSAmJgotCQkgICAgcHJhbmRvbV91MzIo KSAlIDIgPT0gMCkKKwkJICAgIHByYW5kb21fdTMyX21heCgyKSA9PSAwKQogCQkJZGl2LT5ub3Np bWQgPSB0cnVlOwogCiAJCXN3aXRjaCAoZGl2LT5mbHVzaF90eXBlKSB7CkBAIC0xMDM1LDcgKzEw MzUsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9yYW5kb21fdGVzdHZlY19jb25maWcoc3RydWN0 IHRlc3R2ZWNfY29uZmlnICpjZmcsCiAKIAlwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAicmFu ZG9tOiIpOwogCi0Jc3dpdGNoIChwcmFuZG9tX3UzMigpICUgNCkgeworCXN3aXRjaCAocHJhbmRv bV91MzJfbWF4KDQpKSB7CiAJY2FzZSAwOgogCWNhc2UgMToKIAkJY2ZnLT5pbnBsYWNlX21vZGUg PSBPVVRfT0ZfUExBQ0U7CkBAIC0xMDUwLDEyICsxMDUwLDEyIEBAIHN0YXRpYyB2b2lkIGdlbmVy YXRlX3JhbmRvbV90ZXN0dmVjX2NvbmZpZyhzdHJ1Y3QgdGVzdHZlY19jb25maWcgKmNmZywKIAkJ YnJlYWs7CiAJfQogCi0JaWYgKHByYW5kb21fdTMyKCkgJSAyID09IDApIHsKKwlpZiAocHJhbmRv bV91MzJfbWF4KDIpID09IDApIHsKIAkJY2ZnLT5yZXFfZmxhZ3MgfD0gQ1JZUFRPX1RGTV9SRVFf TUFZX1NMRUVQOwogCQlwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAiIG1heV9zbGVlcCIpOwog CX0KIAotCXN3aXRjaCAocHJhbmRvbV91MzIoKSAlIDQpIHsKKwlzd2l0Y2ggKHByYW5kb21fdTMy X21heCg0KSkgewogCWNhc2UgMDoKIAkJY2ZnLT5maW5hbGl6YXRpb25fdHlwZSA9IEZJTkFMSVpB VElPTl9UWVBFX0ZJTkFMOwogCQlwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAiIHVzZV9maW5h bCIpOwpAQCAtMTA3MSw3ICsxMDcxLDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfcmFuZG9tX3Rl c3R2ZWNfY29uZmlnKHN0cnVjdCB0ZXN0dmVjX2NvbmZpZyAqY2ZnLAogCX0KIAogCWlmICghKGNm Zy0+cmVxX2ZsYWdzICYgQ1JZUFRPX1RGTV9SRVFfTUFZX1NMRUVQKSAmJgotCSAgICBwcmFuZG9t X3UzMigpICUgMiA9PSAwKSB7CisJICAgIHByYW5kb21fdTMyX21heCgyKSA9PSAwKSB7CiAJCWNm Zy0+bm9zaW1kID0gdHJ1ZTsKIAkJcCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgIiBub3NpbWQi KTsKIAl9CkBAIC0xMDg0LDcgKzEwODQsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9yYW5kb21f dGVzdHZlY19jb25maWcoc3RydWN0IHRlc3R2ZWNfY29uZmlnICpjZmcsCiAJCQkJCSAgY2ZnLT5y ZXFfZmxhZ3MpOwogCXAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICJdIik7CiAKLQlpZiAoY2Zn LT5pbnBsYWNlX21vZGUgPT0gT1VUX09GX1BMQUNFICYmIHByYW5kb21fdTMyKCkgJSAyID09IDAp IHsKKwlpZiAoY2ZnLT5pbnBsYWNlX21vZGUgPT0gT1VUX09GX1BMQUNFICYmIHByYW5kb21fdTMy X21heCgyKSA9PSAwKSB7CiAJCXAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICIgZHN0X2RpdnM9 WyIpOwogCQlwID0gZ2VuZXJhdGVfcmFuZG9tX3NnbF9kaXZpc2lvbnMoY2ZnLT5kc3RfZGl2cywK IAkJCQkJCSAgQVJSQVlfU0laRShjZmctPmRzdF9kaXZzKSwKQEAgLTEwOTMsMTMgKzEwOTMsMTMg QEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfcmFuZG9tX3Rlc3R2ZWNfY29uZmlnKHN0cnVjdCB0ZXN0 dmVjX2NvbmZpZyAqY2ZnLAogCQlwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAiXSIpOwogCX0K IAotCWlmIChwcmFuZG9tX3UzMigpICUgMiA9PSAwKSB7Ci0JCWNmZy0+aXZfb2Zmc2V0ID0gMSAr IChwcmFuZG9tX3UzMigpICUgTUFYX0FMR0FQSV9BTElHTk1BU0spOworCWlmIChwcmFuZG9tX3Uz Ml9tYXgoMikgPT0gMCkgeworCQljZmctPml2X29mZnNldCA9IDEgKyBwcmFuZG9tX3UzMl9tYXgo TUFYX0FMR0FQSV9BTElHTk1BU0spOwogCQlwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAiIGl2 X29mZnNldD0ldSIsIGNmZy0+aXZfb2Zmc2V0KTsKIAl9CiAKLQlpZiAocHJhbmRvbV91MzIoKSAl IDIgPT0gMCkgewotCQljZmctPmtleV9vZmZzZXQgPSAxICsgKHByYW5kb21fdTMyKCkgJSBNQVhf QUxHQVBJX0FMSUdOTUFTSyk7CisJaWYgKHByYW5kb21fdTMyX21heCgyKSA9PSAwKSB7CisJCWNm Zy0+a2V5X29mZnNldCA9IDEgKyBwcmFuZG9tX3UzMl9tYXgoTUFYX0FMR0FQSV9BTElHTk1BU0sp OwogCQlwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAiIGtleV9vZmZzZXQ9JXUiLCBjZmctPmtl eV9vZmZzZXQpOwogCX0KIApAQCAtMTY1Miw4ICsxNjUyLDggQEAgc3RhdGljIHZvaWQgZ2VuZXJh dGVfcmFuZG9tX2hhc2hfdGVzdHZlYyhzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYywKIAl2ZWMtPmtz aXplID0gMDsKIAlpZiAobWF4a2V5c2l6ZSkgewogCQl2ZWMtPmtzaXplID0gbWF4a2V5c2l6ZTsK LQkJaWYgKHByYW5kb21fdTMyKCkgJSA0ID09IDApCi0JCQl2ZWMtPmtzaXplID0gMSArIChwcmFu ZG9tX3UzMigpICUgbWF4a2V5c2l6ZSk7CisJCWlmIChwcmFuZG9tX3UzMl9tYXgoNCkgPT0gMCkK KwkJCXZlYy0+a3NpemUgPSAxICsgcHJhbmRvbV91MzJfbWF4KG1heGtleXNpemUpOwogCQlnZW5l cmF0ZV9yYW5kb21fYnl0ZXMoKHU4ICopdmVjLT5rZXksIHZlYy0+a3NpemUpOwogCiAJCXZlYy0+ c2V0a2V5X2Vycm9yID0gY3J5cHRvX3NoYXNoX3NldGtleShkZXNjLT50Zm0sIHZlYy0+a2V5LApA QCAtMjIxOCwxMyArMjIxOCwxMyBAQCBzdGF0aWMgdm9pZCBtdXRhdGVfYWVhZF9tZXNzYWdlKHN0 cnVjdCBhZWFkX3Rlc3R2ZWMgKnZlYywgYm9vbCBhYWRfaXYsCiAJY29uc3QgdW5zaWduZWQgaW50 IGFhZF90YWlsX3NpemUgPSBhYWRfaXYgPyBpdnNpemUgOiAwOwogCWNvbnN0IHVuc2lnbmVkIGlu dCBhdXRoc2l6ZSA9IHZlYy0+Y2xlbiAtIHZlYy0+cGxlbjsKIAotCWlmIChwcmFuZG9tX3UzMigp ICUgMiA9PSAwICYmIHZlYy0+YWxlbiA+IGFhZF90YWlsX3NpemUpIHsKKwlpZiAocHJhbmRvbV91 MzJfbWF4KDIpID09IDAgJiYgdmVjLT5hbGVuID4gYWFkX3RhaWxfc2l6ZSkgewogCQkgLyogTXV0 YXRlIHRoZSBBQUQgKi8KIAkJZmxpcF9yYW5kb21fYml0KCh1OCAqKXZlYy0+YXNzb2MsIHZlYy0+ YWxlbiAtIGFhZF90YWlsX3NpemUpOwotCQlpZiAocHJhbmRvbV91MzIoKSAlIDIgPT0gMCkKKwkJ aWYgKHByYW5kb21fdTMyX21heCgyKSA9PSAwKQogCQkJcmV0dXJuOwogCX0KLQlpZiAocHJhbmRv bV91MzIoKSAlIDIgPT0gMCkgeworCWlmIChwcmFuZG9tX3UzMl9tYXgoMikgPT0gMCkgewogCQkv KiBNdXRhdGUgYXV0aCB0YWcgKGFzc3VtaW5nIGl0J3MgYXQgdGhlIGVuZCBvZiBjaXBoZXJ0ZXh0 KSAqLwogCQlmbGlwX3JhbmRvbV9iaXQoKHU4ICopdmVjLT5jdGV4dCArIHZlYy0+cGxlbiwgYXV0 aHNpemUpOwogCX0gZWxzZSB7CkBAIC0yMjQ5LDcgKzIyNDksNyBAQCBzdGF0aWMgdm9pZCBnZW5l cmF0ZV9hZWFkX21lc3NhZ2Uoc3RydWN0IGFlYWRfcmVxdWVzdCAqcmVxLAogCWNvbnN0IHVuc2ln bmVkIGludCBpdnNpemUgPSBjcnlwdG9fYWVhZF9pdnNpemUodGZtKTsKIAljb25zdCB1bnNpZ25l ZCBpbnQgYXV0aHNpemUgPSB2ZWMtPmNsZW4gLSB2ZWMtPnBsZW47CiAJY29uc3QgYm9vbCBpbmF1 dGhlbnRpYyA9IChhdXRoc2l6ZSA+PSBNSU5fQ09MTElTSU9OX0ZSRUVfQVVUSFNJWkUpICYmCi0J CQkJIChwcmVmZXJfaW5hdXRoZW50aWMgfHwgcHJhbmRvbV91MzIoKSAlIDQgPT0gMCk7CisJCQkJ IChwcmVmZXJfaW5hdXRoZW50aWMgfHwgcHJhbmRvbV91MzJfbWF4KDQpID09IDApOwogCiAJLyog R2VuZXJhdGUgdGhlIEFBRC4gKi8KIAlnZW5lcmF0ZV9yYW5kb21fYnl0ZXMoKHU4ICopdmVjLT5h c3NvYywgdmVjLT5hbGVuKTsKQEAgLTIyNTcsNyArMjI1Nyw3IEBAIHN0YXRpYyB2b2lkIGdlbmVy YXRlX2FlYWRfbWVzc2FnZShzdHJ1Y3QgYWVhZF9yZXF1ZXN0ICpyZXEsCiAJCS8qIEF2b2lkIGlt cGxlbWVudGF0aW9uLWRlZmluZWQgYmVoYXZpb3IuICovCiAJCW1lbWNweSgodTggKil2ZWMtPmFz c29jICsgdmVjLT5hbGVuIC0gaXZzaXplLCB2ZWMtPml2LCBpdnNpemUpOwogCi0JaWYgKGluYXV0 aGVudGljICYmIHByYW5kb21fdTMyKCkgJSAyID09IDApIHsKKwlpZiAoaW5hdXRoZW50aWMgJiYg cHJhbmRvbV91MzJfbWF4KDIpID09IDApIHsKIAkJLyogR2VuZXJhdGUgYSByYW5kb20gY2lwaGVy dGV4dC4gKi8KIAkJZ2VuZXJhdGVfcmFuZG9tX2J5dGVzKCh1OCAqKXZlYy0+Y3RleHQsIHZlYy0+ Y2xlbik7CiAJfSBlbHNlIHsKQEAgLTIzMjEsOCArMjMyMSw4IEBAIHN0YXRpYyB2b2lkIGdlbmVy YXRlX3JhbmRvbV9hZWFkX3Rlc3R2ZWMoc3RydWN0IGFlYWRfcmVxdWVzdCAqcmVxLAogCiAJLyog S2V5OiBsZW5ndGggaW4gWzAsIG1heGtleXNpemVdLCBidXQgdXN1YWxseSBjaG9vc2UgbWF4a2V5 c2l6ZSAqLwogCXZlYy0+a2xlbiA9IG1heGtleXNpemU7Ci0JaWYgKHByYW5kb21fdTMyKCkgJSA0 ID09IDApCi0JCXZlYy0+a2xlbiA9IHByYW5kb21fdTMyKCkgJSAobWF4a2V5c2l6ZSArIDEpOwor CWlmIChwcmFuZG9tX3UzMl9tYXgoNCkgPT0gMCkKKwkJdmVjLT5rbGVuID0gcHJhbmRvbV91MzJf bWF4KG1heGtleXNpemUgKyAxKTsKIAlnZW5lcmF0ZV9yYW5kb21fYnl0ZXMoKHU4ICopdmVjLT5r ZXksIHZlYy0+a2xlbik7CiAJdmVjLT5zZXRrZXlfZXJyb3IgPSBjcnlwdG9fYWVhZF9zZXRrZXko dGZtLCB2ZWMtPmtleSwgdmVjLT5rbGVuKTsKIApAQCAtMjMzMSw4ICsyMzMxLDggQEAgc3RhdGlj IHZvaWQgZ2VuZXJhdGVfcmFuZG9tX2FlYWRfdGVzdHZlYyhzdHJ1Y3QgYWVhZF9yZXF1ZXN0ICpy ZXEsCiAKIAkvKiBUYWcgbGVuZ3RoOiBpbiBbMCwgbWF4YXV0aHNpemVdLCBidXQgdXN1YWxseSBj aG9vc2UgbWF4YXV0aHNpemUgKi8KIAlhdXRoc2l6ZSA9IG1heGF1dGhzaXplOwotCWlmIChwcmFu ZG9tX3UzMigpICUgNCA9PSAwKQotCQlhdXRoc2l6ZSA9IHByYW5kb21fdTMyKCkgJSAobWF4YXV0 aHNpemUgKyAxKTsKKwlpZiAocHJhbmRvbV91MzJfbWF4KDQpID09IDApCisJCWF1dGhzaXplID0g cHJhbmRvbV91MzJfbWF4KG1heGF1dGhzaXplICsgMSk7CiAJaWYgKHByZWZlcl9pbmF1dGhlbnRp YyAmJiBhdXRoc2l6ZSA8IE1JTl9DT0xMSVNJT05fRlJFRV9BVVRIU0laRSkKIAkJYXV0aHNpemUg PSBNSU5fQ09MTElTSU9OX0ZSRUVfQVVUSFNJWkU7CiAJaWYgKFdBUk5fT04oYXV0aHNpemUgPiBt YXhkYXRhc2l6ZSkpCkBAIC0yMzQyLDcgKzIzNDIsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9y YW5kb21fYWVhZF90ZXN0dmVjKHN0cnVjdCBhZWFkX3JlcXVlc3QgKnJlcSwKIAogCS8qIEFBRCwg cGxhaW50ZXh0LCBhbmQgY2lwaGVydGV4dCBsZW5ndGhzICovCiAJdG90YWxfbGVuID0gZ2VuZXJh dGVfcmFuZG9tX2xlbmd0aChtYXhkYXRhc2l6ZSk7Ci0JaWYgKHByYW5kb21fdTMyKCkgJSA0ID09 IDApCisJaWYgKHByYW5kb21fdTMyX21heCg0KSA9PSAwKQogCQl2ZWMtPmFsZW4gPSAwOwogCWVs c2UKIAkJdmVjLT5hbGVuID0gZ2VuZXJhdGVfcmFuZG9tX2xlbmd0aCh0b3RhbF9sZW4pOwpAQCAt Mjk1OCw4ICsyOTU4LDggQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfcmFuZG9tX2NpcGhlcl90ZXN0 dmVjKHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEsCiAKIAkvKiBLZXk6IGxlbmd0aCBpbiBb MCwgbWF4a2V5c2l6ZV0sIGJ1dCB1c3VhbGx5IGNob29zZSBtYXhrZXlzaXplICovCiAJdmVjLT5r bGVuID0gbWF4a2V5c2l6ZTsKLQlpZiAocHJhbmRvbV91MzIoKSAlIDQgPT0gMCkKLQkJdmVjLT5r bGVuID0gcHJhbmRvbV91MzIoKSAlIChtYXhrZXlzaXplICsgMSk7CisJaWYgKHByYW5kb21fdTMy X21heCg0KSA9PSAwKQorCQl2ZWMtPmtsZW4gPSBwcmFuZG9tX3UzMl9tYXgobWF4a2V5c2l6ZSAr IDEpOwogCWdlbmVyYXRlX3JhbmRvbV9ieXRlcygodTggKil2ZWMtPmtleSwgdmVjLT5rbGVuKTsK IAl2ZWMtPnNldGtleV9lcnJvciA9IGNyeXB0b19za2NpcGhlcl9zZXRrZXkodGZtLCB2ZWMtPmtl eSwgdmVjLT5rbGVuKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVj ZWl2ZXIuYyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKaW5kZXggYzg5N2M0 NTcyMDM2Li5lZTY5ZDUwYmE0ZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJk X3JlY2VpdmVyLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAt NzgxLDcgKzc4MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29ja2V0ICpkcmJkX3dhaXRfZm9yX2Nvbm5l Y3Qoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwKIAogCXRpbWVvID0gY29ubmVj dF9pbnQgKiBIWjsKIAkvKiAyOC41JSByYW5kb20gaml0dGVyICovCi0JdGltZW8gKz0gKHByYW5k b21fdTMyKCkgJiAxKSA/IHRpbWVvIC8gNyA6IC10aW1lbyAvIDc7CisJdGltZW8gKz0gcHJhbmRv bV91MzJfbWF4KDIpID8gdGltZW8gLyA3IDogLXRpbWVvIC8gNzsKIAogCWVyciA9IHdhaXRfZm9y X2NvbXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0KCZhZC0+ZG9vcl9iZWxsLCB0aW1lbyk7 CiAJaWYgKGVyciA8PSAwKQpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgc3RhdGljIGludCBjb25uX2Nv bm5lY3Qoc3RydWN0IGRyYmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbikKIAkJCQlkcmJkX3dhcm4o Y29ubmVjdGlvbiwgIkVycm9yIHJlY2VpdmluZyBpbml0aWFsIHBhY2tldFxuIik7CiAJCQkJc29j a19yZWxlYXNlKHMpOwogcmFuZG9taXplOgotCQkJCWlmIChwcmFuZG9tX3UzMigpICYgMSkKKwkJ CQlpZiAocHJhbmRvbV91MzJfbWF4KDIpKQogCQkJCQlnb3RvIHJldHJ5OwogCQkJfQogCQl9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCBj ZDc1YjBjYTI1NTUuLjg0NTAyM2MxNGViMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC0yNDI0LDcgKzI0MjQsNyBAQCBnZW44X2Rpc3Bh dGNoX2JzZF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCS8qIENo ZWNrIHdoZXRoZXIgdGhlIGZpbGVfcHJpdiBoYXMgYWxyZWFkeSBzZWxlY3RlZCBvbmUgcmluZy4g Ki8KIAlpZiAoKGludClmaWxlX3ByaXYtPmJzZF9lbmdpbmUgPCAwKQogCQlmaWxlX3ByaXYtPmJz ZF9lbmdpbmUgPQotCQkJZ2V0X3JhbmRvbV9pbnQoKSAlIG51bV92Y3NfZW5naW5lcyhkZXZfcHJp dik7CisJCQlwcmFuZG9tX3UzMl9tYXgobnVtX3Zjc19lbmdpbmVzKGRldl9wcml2KSk7CiAKIAly ZXR1cm4gZmlsZV9wcml2LT5ic2RfZW5naW5lOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZp bmliYW5kL2NvcmUvY21hLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jbWEuYwppbmRleCA3 MGRhNTdlZjJlZWIuLmNjMjIyMmI4NWM4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5k L2NvcmUvY21hLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY21hLmMKQEAgLTM4MDcs NyArMzgwNyw3IEBAIHN0YXRpYyBpbnQgY21hX2FsbG9jX2FueV9wb3J0KGVudW0gcmRtYV91Y21f cG9ydF9zcGFjZSBwcywKIAogCWluZXRfZ2V0X2xvY2FsX3BvcnRfcmFuZ2UobmV0LCAmbG93LCAm aGlnaCk7CiAJcmVtYWluaW5nID0gKGhpZ2ggLSBsb3cpICsgMTsKLQlyb3ZlciA9IHByYW5kb21f dTMyKCkgJSByZW1haW5pbmcgKyBsb3c7CisJcm92ZXIgPSBwcmFuZG9tX3UzMl9tYXgocmVtYWlu aW5nKSArIGxvdzsKIHJldHJ5OgogCWlmIChsYXN0X3VzZWRfcG9ydCAhPSByb3ZlcikgewogCQlz dHJ1Y3QgcmRtYV9iaW5kX2xpc3QgKmJpbmRfbGlzdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5m aW5pYmFuZC9ody9jeGdiNC9pZF90YWJsZS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2I0 L2lkX3RhYmxlLmMKaW5kZXggZjY0ZTdlMDJiMTI5Li4yODBkNjE0NjY4NTUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdiNC9pZF90YWJsZS5jCisrKyBiL2RyaXZlcnMvaW5m aW5pYmFuZC9ody9jeGdiNC9pZF90YWJsZS5jCkBAIC01NCw3ICs1NCw3IEBAIHUzMiBjNGl3X2lk X2FsbG9jKHN0cnVjdCBjNGl3X2lkX3RhYmxlICphbGxvYykKIAogCWlmIChvYmogPCBhbGxvYy0+ bWF4KSB7CiAJCWlmIChhbGxvYy0+ZmxhZ3MgJiBDNElXX0lEX1RBQkxFX0ZfUkFORE9NKQotCQkJ YWxsb2MtPmxhc3QgKz0gcHJhbmRvbV91MzIoKSAlIFJBTkRPTV9TS0lQOworCQkJYWxsb2MtPmxh c3QgKz0gcHJhbmRvbV91MzJfbWF4KFJBTkRPTV9TS0lQKTsKIAkJZWxzZQogCQkJYWxsb2MtPmxh c3QgPSBvYmogKyAxOwogCQlpZiAoYWxsb2MtPmxhc3QgPj0gYWxsb2MtPm1heCkKQEAgLTg1LDcg Kzg1LDcgQEAgaW50IGM0aXdfaWRfdGFibGVfYWxsb2Moc3RydWN0IGM0aXdfaWRfdGFibGUgKmFs bG9jLCB1MzIgc3RhcnQsIHUzMiBudW0sCiAJYWxsb2MtPnN0YXJ0ID0gc3RhcnQ7CiAJYWxsb2Mt PmZsYWdzID0gZmxhZ3M7CiAJaWYgKGZsYWdzICYgQzRJV19JRF9UQUJMRV9GX1JBTkRPTSkKLQkJ YWxsb2MtPmxhc3QgPSBwcmFuZG9tX3UzMigpICUgUkFORE9NX1NLSVA7CisJCWFsbG9jLT5sYXN0 ID0gcHJhbmRvbV91MzJfbWF4KFJBTkRPTV9TS0lQKTsKIAllbHNlCiAJCWFsbG9jLT5sYXN0ID0g MDsKIAlhbGxvYy0+bWF4ID0gbnVtOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3 L2hucy9obnNfcm9jZV9haC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9h aC5jCmluZGV4IDQ5MmIxMjJkMDUyMS4uNDgwYzA2MmRkMDRmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2luZmluaWJhbmQvaHcvaG5zL2huc19yb2NlX2FoLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5k L2h3L2hucy9obnNfcm9jZV9haC5jCkBAIC00MSw5ICs0MSw4IEBAIHN0YXRpYyBpbmxpbmUgdTE2 IGdldF9haF91ZHBfc3BvcnQoY29uc3Qgc3RydWN0IHJkbWFfYWhfYXR0ciAqYWhfYXR0cikKIAl1 MTYgc3BvcnQ7CiAKIAlpZiAoIWZsKQotCQlzcG9ydCA9IGdldF9yYW5kb21fdTMyKCkgJQotCQkJ KElCX1JPQ0VfVURQX0VOQ0FQX1ZBTElEX1BPUlRfTUFYICsgMSAtCi0JCQkgSUJfUk9DRV9VRFBf RU5DQVBfVkFMSURfUE9SVF9NSU4pICsKKwkJc3BvcnQgPSBwcmFuZG9tX3UzMl9tYXgoSUJfUk9D RV9VRFBfRU5DQVBfVkFMSURfUE9SVF9NQVggKyAxIC0KKwkJCQkJSUJfUk9DRV9VRFBfRU5DQVBf VkFMSURfUE9SVF9NSU4pICsKIAkJCUlCX1JPQ0VfVURQX0VOQ0FQX1ZBTElEX1BPUlRfTUlOOwog CWVsc2UKIAkJc3BvcnQgPSByZG1hX2Zsb3dfbGFiZWxfdG9fdWRwX3Nwb3J0KGZsKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jIGIvZHJpdmVycy9p bmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmMKaW5kZXggNzU4ZTFkN2ViYzM2Li44NTQ2Yjg4 MTY1MjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5j CisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jCkBAIC0xNTE3LDgg KzE1MTcsNyBAQCBzdGF0aWMgdm9pZCBydHJzX2NsdF9lcnJfcmVjb3Zlcnlfd29yayhzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCiAJcnRyc19jbHRfc3RvcF9hbmRfZGVzdHJveV9jb25ucyhjbHRf cGF0aCk7CiAJcXVldWVfZGVsYXllZF93b3JrKHJ0cnNfd3EsICZjbHRfcGF0aC0+cmVjb25uZWN0 X2R3b3JrLAogCQkJICAgbXNlY3NfdG9famlmZmllcyhkZWxheV9tcyArCi0JCQkJCSAgICBwcmFu ZG9tX3UzMigpICUKLQkJCQkJICAgIFJUUlNfUkVDT05ORUNUX1NFRUQpKTsKKwkJCQkJICAgIHBy YW5kb21fdTMyX21heChSVFJTX1JFQ09OTkVDVF9TRUVEKSkpOwogfQogCiBzdGF0aWMgc3RydWN0 IHJ0cnNfY2x0X3BhdGggKmFsbG9jX3BhdGgoc3RydWN0IHJ0cnNfY2x0X3Nlc3MgKmNsdCwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYyBiL2RyaXZlcnMvbWQvYmNhY2hl L3JlcXVlc3QuYwppbmRleCBmMmM1YTdlMDZmYTkuLjM0Mjc1NTViMGNjYSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVl c3QuYwpAQCAtNDAxLDcgKzQwMSw3IEBAIHN0YXRpYyBib29sIGNoZWNrX3Nob3VsZF9ieXBhc3Mo c3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3QgYmlvICpiaW8pCiAJfQogCiAJaWYgKGJ5cGFz c190b3J0dXJlX3Rlc3QoZGMpKSB7Ci0JCWlmICgoZ2V0X3JhbmRvbV9pbnQoKSAmIDMpID09IDMp CisJCWlmIChwcmFuZG9tX3UzMl9tYXgoNCkgPT0gMykKIAkJCWdvdG8gc2tpcDsKIAkJZWxzZQog CQkJZ290byByZXNjYWxlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMv dml2aWQvdml2aWQtdG91Y2gtY2FwLmMgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZp ZC92aXZpZC10b3VjaC1jYXAuYwppbmRleCA2NGUzZTRjYjMwYzIuLjc5MjY2MGE4NWJjMSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtdG91Y2gtY2Fw LmMKKysrIGIvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtdG91Y2gtY2Fw LmMKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgdm9pZCB2aXZpZF9maWxsX2J1ZmZfbm9pc2Uo X19zMTYgKnRjaF9idWYsIGludCBzaXplKQogCiBzdGF0aWMgaW5saW5lIGludCBnZXRfcmFuZG9t X3ByZXNzdXJlKHZvaWQpCiB7Ci0JcmV0dXJuIGdldF9yYW5kb21faW50KCkgJSBWSVZJRF9QUkVT U1VSRV9MSU1JVDsKKwlyZXR1cm4gcHJhbmRvbV91MzJfbWF4KFZJVklEX1BSRVNTVVJFX0xJTUlU KTsKIH0KIAogc3RhdGljIHZvaWQgdml2aWRfdGNoX2J1Zl9zZXQoc3RydWN0IHY0bDJfcGl4X2Zv cm1hdCAqZiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvY29yZS5jIGIvZHJpdmVycy9t bWMvY29yZS9jb3JlLmMKaW5kZXggZWY1M2EyNTc4ODI0Li45NWZhOGZiMWQ0NWYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbW1jL2NvcmUvY29yZS5jCisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvY29yZS5j CkBAIC05Nyw4ICs5Nyw4IEBAIHN0YXRpYyB2b2lkIG1tY19zaG91bGRfZmFpbF9yZXF1ZXN0KHN0 cnVjdCBtbWNfaG9zdCAqaG9zdCwKIAkgICAgIXNob3VsZF9mYWlsKCZob3N0LT5mYWlsX21tY19y ZXF1ZXN0LCBkYXRhLT5ibGtzeiAqIGRhdGEtPmJsb2NrcykpCiAJCXJldHVybjsKIAotCWRhdGEt PmVycm9yID0gZGF0YV9lcnJvcnNbcHJhbmRvbV91MzIoKSAlIEFSUkFZX1NJWkUoZGF0YV9lcnJv cnMpXTsKLQlkYXRhLT5ieXRlc194ZmVyZWQgPSAocHJhbmRvbV91MzIoKSAlIChkYXRhLT5ieXRl c194ZmVyZWQgPj4gOSkpIDw8IDk7CisJZGF0YS0+ZXJyb3IgPSBkYXRhX2Vycm9yc1twcmFuZG9t X3UzMl9tYXgoQVJSQVlfU0laRShkYXRhX2Vycm9ycykpXTsKKwlkYXRhLT5ieXRlc194ZmVyZWQg PSBwcmFuZG9tX3UzMl9tYXgoZGF0YS0+Ynl0ZXNfeGZlcmVkID4+IDkpIDw8IDk7CiB9CiAKICNl bHNlIC8qIENPTkZJR19GQUlMX01NQ19SRVFVRVNUICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21t Yy9ob3N0L2R3X21tYy5jIGIvZHJpdmVycy9tbWMvaG9zdC9kd19tbWMuYwppbmRleCA1ODE2MTQx OTZhODQuLmM3OGJiYzIyZTBkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9kd19tbWMu YworKysgYi9kcml2ZXJzL21tYy9ob3N0L2R3X21tYy5jCkBAIC0xODU4LDcgKzE4NTgsNyBAQCBz dGF0aWMgdm9pZCBkd19tY2lfc3RhcnRfZmF1bHRfdGltZXIoc3RydWN0IGR3X21jaSAqaG9zdCkK IAkgKiBUcnkgdG8gaW5qZWN0IHRoZSBlcnJvciBhdCByYW5kb20gcG9pbnRzIGR1cmluZyB0aGUg ZGF0YSB0cmFuc2Zlci4KIAkgKi8KIAlocnRpbWVyX3N0YXJ0KCZob3N0LT5mYXVsdF90aW1lciwK LQkJICAgICAgbXNfdG9fa3RpbWUocHJhbmRvbV91MzIoKSAlIDI1KSwKKwkJICAgICAgbXNfdG9f a3RpbWUocHJhbmRvbV91MzJfbWF4KDI1KSksCiAJCSAgICAgIEhSVElNRVJfTU9ERV9SRUwpOwog fQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kc2ltLmMgYi9kcml2ZXJz L210ZC9uYW5kL3Jhdy9uYW5kc2ltLmMKaW5kZXggMjRiZWFkZTk1YzdmLi41MGJjZjc0NWU4MTYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcmF3L25hbmRzaW0uYworKysgYi9kcml2ZXJz L210ZC9uYW5kL3Jhdy9uYW5kc2ltLmMKQEAgLTE0MDUsOSArMTQwNSw5IEBAIHN0YXRpYyB2b2lk IG5zX2RvX2JpdF9mbGlwcyhzdHJ1Y3QgbmFuZHNpbSAqbnMsIGludCBudW0pCiAJaWYgKGJpdGZs aXBzICYmIHByYW5kb21fdTMyKCkgPCAoMSA8PCAyMikpIHsKIAkJaW50IGZsaXBzID0gMTsKIAkJ aWYgKGJpdGZsaXBzID4gMSkKLQkJCWZsaXBzID0gKHByYW5kb21fdTMyKCkgJSAoaW50KSBiaXRm bGlwcykgKyAxOworCQkJZmxpcHMgPSBwcmFuZG9tX3UzMl9tYXgoYml0ZmxpcHMpICsgMTsKIAkJ d2hpbGUgKGZsaXBzLS0pIHsKLQkJCWludCBwb3MgPSBwcmFuZG9tX3UzMigpICUgKG51bSAqIDgp OworCQkJaW50IHBvcyA9IHByYW5kb21fdTMyX21heChudW0gKiA4KTsKIAkJCW5zLT5idWYuYnl0 ZVtwb3MgLyA4XSBePSAoMSA8PCAocG9zICUgOCkpOwogCQkJTlNfV0FSTigicmVhZF9wYWdlOiBm bGlwcGluZyBiaXQgJWQgaW4gcGFnZSAlZCAiCiAJCQkJInJlYWRpbmcgZnJvbSAlZCBlY2M6IGNv cnJlY3RlZD0ldSBmYWlsZWQ9JXVcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC90ZXN0cy9t dGRfbmFuZGVjY3Rlc3QuYyBiL2RyaXZlcnMvbXRkL3Rlc3RzL210ZF9uYW5kZWNjdGVzdC5jCmlu ZGV4IGM0ZjI3MTMxNGY1Mi4uMWM3MjAxYjBmMzcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC90 ZXN0cy9tdGRfbmFuZGVjY3Rlc3QuYworKysgYi9kcml2ZXJzL210ZC90ZXN0cy9tdGRfbmFuZGVj Y3Rlc3QuYwpAQCAtNDcsNyArNDcsNyBAQCBzdHJ1Y3QgbmFuZF9lY2NfdGVzdCB7CiBzdGF0aWMg dm9pZCBzaW5nbGVfYml0X2Vycm9yX2RhdGEodm9pZCAqZXJyb3JfZGF0YSwgdm9pZCAqY29ycmVj dF9kYXRhLAogCQkJCXNpemVfdCBzaXplKQogewotCXVuc2lnbmVkIGludCBvZmZzZXQgPSBwcmFu ZG9tX3UzMigpICUgKHNpemUgKiBCSVRTX1BFUl9CWVRFKTsKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0 ID0gcHJhbmRvbV91MzJfbWF4KHNpemUgKiBCSVRTX1BFUl9CWVRFKTsKIAogCW1lbWNweShlcnJv cl9kYXRhLCBjb3JyZWN0X2RhdGEsIHNpemUpOwogCV9fY2hhbmdlX2JpdF9sZShvZmZzZXQsIGVy cm9yX2RhdGEpOwpAQCAtNTgsOSArNTgsOSBAQCBzdGF0aWMgdm9pZCBkb3VibGVfYml0X2Vycm9y X2RhdGEodm9pZCAqZXJyb3JfZGF0YSwgdm9pZCAqY29ycmVjdF9kYXRhLAogewogCXVuc2lnbmVk IGludCBvZmZzZXRbMl07CiAKLQlvZmZzZXRbMF0gPSBwcmFuZG9tX3UzMigpICUgKHNpemUgKiBC SVRTX1BFUl9CWVRFKTsKKwlvZmZzZXRbMF0gPSBwcmFuZG9tX3UzMl9tYXgoc2l6ZSAqIEJJVFNf UEVSX0JZVEUpOwogCWRvIHsKLQkJb2Zmc2V0WzFdID0gcHJhbmRvbV91MzIoKSAlIChzaXplICog QklUU19QRVJfQllURSk7CisJCW9mZnNldFsxXSA9IHByYW5kb21fdTMyX21heChzaXplICogQklU U19QRVJfQllURSk7CiAJfSB3aGlsZSAob2Zmc2V0WzBdID09IG9mZnNldFsxXSk7CiAKIAltZW1j cHkoZXJyb3JfZGF0YSwgY29ycmVjdF9kYXRhLCBzaXplKTsKQEAgLTcxLDcgKzcxLDcgQEAgc3Rh dGljIHZvaWQgZG91YmxlX2JpdF9lcnJvcl9kYXRhKHZvaWQgKmVycm9yX2RhdGEsIHZvaWQgKmNv cnJlY3RfZGF0YSwKIAogc3RhdGljIHVuc2lnbmVkIGludCByYW5kb21fZWNjX2JpdChzaXplX3Qg c2l6ZSkKIHsKLQl1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gcHJhbmRvbV91MzIoKSAlICgzICogQklU U19QRVJfQllURSk7CisJdW5zaWduZWQgaW50IG9mZnNldCA9IHByYW5kb21fdTMyX21heCgzICog QklUU19QRVJfQllURSk7CiAKIAlpZiAoc2l6ZSA9PSAyNTYpIHsKIAkJLyoKQEAgLTc5LDcgKzc5 LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCByYW5kb21fZWNjX2JpdChzaXplX3Qgc2l6ZSkKIAkJ ICogYW5kIDE3dGggYml0KSBpbiBFQ0MgY29kZSBmb3IgMjU2IGJ5dGUgZGF0YSBibG9jawogCQkg Ki8KIAkJd2hpbGUgKG9mZnNldCA9PSAxNiB8fCBvZmZzZXQgPT0gMTcpCi0JCQlvZmZzZXQgPSBw cmFuZG9tX3UzMigpICUgKDMgKiBCSVRTX1BFUl9CWVRFKTsKKwkJCW9mZnNldCA9IHByYW5kb21f dTMyX21heCgzICogQklUU19QRVJfQllURSk7CiAJfQogCiAJcmV0dXJuIG9mZnNldDsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbXRkL3Rlc3RzL3N0cmVzc3Rlc3QuYyBiL2RyaXZlcnMvbXRkL3Rlc3Rz L3N0cmVzc3Rlc3QuYwppbmRleCBjYjI5YzhjMWIzNzAuLmQyZmFhY2E3ZjE5ZCAxMDA2NDQKLS0t IGEvZHJpdmVycy9tdGQvdGVzdHMvc3RyZXNzdGVzdC5jCisrKyBiL2RyaXZlcnMvbXRkL3Rlc3Rz L3N0cmVzc3Rlc3QuYwpAQCAtNDUsOSArNDUsOCBAQCBzdGF0aWMgaW50IHJhbmRfZWIodm9pZCkK IAl1bnNpZ25lZCBpbnQgZWI7CiAKIGFnYWluOgotCWViID0gcHJhbmRvbV91MzIoKTsKIAkvKiBS ZWFkIG9yIHdyaXRlIHVwIDIgZXJhc2VibG9ja3MgYXQgYSB0aW1lIC0gaGVuY2UgJ2ViY250IC0g MScgKi8KLQllYiAlPSAoZWJjbnQgLSAxKTsKKwllYiA9IHByYW5kb21fdTMyX21heChlYmNudCAt IDEpOwogCWlmIChiYnRbZWJdKQogCQlnb3RvIGFnYWluOwogCXJldHVybiBlYjsKQEAgLTU1LDIw ICs1NCwxMiBAQCBzdGF0aWMgaW50IHJhbmRfZWIodm9pZCkKIAogc3RhdGljIGludCByYW5kX29m ZnModm9pZCkKIHsKLQl1bnNpZ25lZCBpbnQgb2ZmczsKLQotCW9mZnMgPSBwcmFuZG9tX3UzMigp OwotCW9mZnMgJT0gYnVmc2l6ZTsKLQlyZXR1cm4gb2ZmczsKKwlyZXR1cm4gcHJhbmRvbV91MzJf bWF4KGJ1ZnNpemUpOwogfQogCiBzdGF0aWMgaW50IHJhbmRfbGVuKGludCBvZmZzKQogewotCXVu c2lnbmVkIGludCBsZW47Ci0KLQlsZW4gPSBwcmFuZG9tX3UzMigpOwotCWxlbiAlPSAoYnVmc2l6 ZSAtIG9mZnMpOwotCXJldHVybiBsZW47CisJcmV0dXJuIHByYW5kb21fdTMyX21heChidWZzaXpl IC0gb2Zmcyk7CiB9CiAKIHN0YXRpYyBpbnQgZG9fcmVhZCh2b2lkKQpAQCAtMTI3LDcgKzExOCw3 IEBAIHN0YXRpYyBpbnQgZG9fd3JpdGUodm9pZCkKIAogc3RhdGljIGludCBkb19vcGVyYXRpb24o dm9pZCkKIHsKLQlpZiAocHJhbmRvbV91MzIoKSAmIDEpCisJaWYgKHByYW5kb21fdTMyX21heCgy KSkKIAkJcmV0dXJuIGRvX3JlYWQoKTsKIAllbHNlCiAJCXJldHVybiBkb193cml0ZSgpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL2RlYnVnLmMgYi9kcml2ZXJzL210ZC91YmkvZGVidWcu YwppbmRleCAzMWQ0MjdlZTE5MWEuLjkwOGQwZTA4ODU1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9t dGQvdWJpL2RlYnVnLmMKKysrIGIvZHJpdmVycy9tdGQvdWJpL2RlYnVnLmMKQEAgLTU5MCw3ICs1 OTAsNyBAQCBpbnQgdWJpX2RiZ19wb3dlcl9jdXQoc3RydWN0IHViaV9kZXZpY2UgKnViaSwgaW50 IGNhbGxlcikKIAogCQlpZiAodWJpLT5kYmcucG93ZXJfY3V0X21heCA+IHViaS0+ZGJnLnBvd2Vy X2N1dF9taW4pIHsKIAkJCXJhbmdlID0gdWJpLT5kYmcucG93ZXJfY3V0X21heCAtIHViaS0+ZGJn LnBvd2VyX2N1dF9taW47Ci0JCQl1YmktPmRiZy5wb3dlcl9jdXRfY291bnRlciArPSBwcmFuZG9t X3UzMigpICUgcmFuZ2U7CisJCQl1YmktPmRiZy5wb3dlcl9jdXRfY291bnRlciArPSBwcmFuZG9t X3UzMl9tYXgocmFuZ2UpOwogCQl9CiAJCXJldHVybiAwOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvbXRkL3ViaS9kZWJ1Zy5oIGIvZHJpdmVycy9tdGQvdWJpL2RlYnVnLmgKaW5kZXggMTE4MjQ4 YTVkN2Q0Li5kYzhkOGY4MzY1N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL3ViaS9kZWJ1Zy5o CisrKyBiL2RyaXZlcnMvbXRkL3ViaS9kZWJ1Zy5oCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBp bmxpbmUgaW50IHViaV9kYmdfaXNfYmd0X2Rpc2FibGVkKGNvbnN0IHN0cnVjdCB1YmlfZGV2aWNl ICp1YmkpCiBzdGF0aWMgaW5saW5lIGludCB1YmlfZGJnX2lzX2JpdGZsaXAoY29uc3Qgc3RydWN0 IHViaV9kZXZpY2UgKnViaSkKIHsKIAlpZiAodWJpLT5kYmcuZW11bGF0ZV9iaXRmbGlwcykKLQkJ cmV0dXJuICEocHJhbmRvbV91MzIoKSAlIDIwMCk7CisJCXJldHVybiAhcHJhbmRvbV91MzJfbWF4 KDIwMCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSBp bnQgdWJpX2RiZ19pc19iaXRmbGlwKGNvbnN0IHN0cnVjdCB1YmlfZGV2aWNlICp1YmkpCiBzdGF0 aWMgaW5saW5lIGludCB1YmlfZGJnX2lzX3dyaXRlX2ZhaWx1cmUoY29uc3Qgc3RydWN0IHViaV9k ZXZpY2UgKnViaSkKIHsKIAlpZiAodWJpLT5kYmcuZW11bGF0ZV9pb19mYWlsdXJlcykKLQkJcmV0 dXJuICEocHJhbmRvbV91MzIoKSAlIDUwMCk7CisJCXJldHVybiAhcHJhbmRvbV91MzJfbWF4KDUw MCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgaW5saW5lIGlu dCB1YmlfZGJnX2lzX3dyaXRlX2ZhaWx1cmUoY29uc3Qgc3RydWN0IHViaV9kZXZpY2UgKnViaSkK IHN0YXRpYyBpbmxpbmUgaW50IHViaV9kYmdfaXNfZXJhc2VfZmFpbHVyZShjb25zdCBzdHJ1Y3Qg dWJpX2RldmljZSAqdWJpKQogewogCWlmICh1YmktPmRiZy5lbXVsYXRlX2lvX2ZhaWx1cmVzKQot CQlyZXR1cm4gIShwcmFuZG9tX3UzMigpICUgNDAwKTsKKwkJcmV0dXJuICFwcmFuZG9tX3UzMl9t YXgoNDAwKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvYnJvYWRjb20vY25pYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vY25pYy5j CmluZGV4IGU4NjUwM2Q5N2YzMi4uZjU5N2IzMTNhY2FhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9icm9hZGNvbS9jbmljLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJv YWRjb20vY25pYy5jCkBAIC00MTA1LDggKzQxMDUsNyBAQCBzdGF0aWMgaW50IGNuaWNfY21fYWxs b2NfbWVtKHN0cnVjdCBjbmljX2RldiAqZGV2KQogCWZvciAoaSA9IDA7IGkgPCBNQVhfQ01fU0tf VEJMX1NaOyBpKyspCiAJCWF0b21pY19zZXQoJmNwLT5jc2tfdGJsW2ldLnJlZl9jb3VudCwgMCk7 CiAKLQlwb3J0X2lkID0gcHJhbmRvbV91MzIoKTsKLQlwb3J0X2lkICU9IENOSUNfTE9DQUxfUE9S VF9SQU5HRTsKKwlwb3J0X2lkID0gcHJhbmRvbV91MzJfbWF4KENOSUNfTE9DQUxfUE9SVF9SQU5H RSk7CiAJaWYgKGNuaWNfaW5pdF9pZF90YmwoJmNwLT5jc2tfcG9ydF90YmwsIENOSUNfTE9DQUxf UE9SVF9SQU5HRSwKIAkJCSAgICAgQ05JQ19MT0NBTF9QT1JUX01JTiwgcG9ydF9pZCkpIHsKIAkJ Y25pY19jbV9mcmVlX21lbShkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQv Y2hlbHNpby9pbmxpbmVfY3J5cHRvL2NodGxzL2NodGxzX2lvLmMgYi9kcml2ZXJzL25ldC9ldGhl cm5ldC9jaGVsc2lvL2lubGluZV9jcnlwdG8vY2h0bHMvY2h0bHNfaW8uYwppbmRleCA1Mzk5OTJk YWQ4YmEuLmE0MjU2MDg3YWM4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hl bHNpby9pbmxpbmVfY3J5cHRvL2NodGxzL2NodGxzX2lvLmMKKysrIGIvZHJpdmVycy9uZXQvZXRo ZXJuZXQvY2hlbHNpby9pbmxpbmVfY3J5cHRvL2NodGxzL2NodGxzX2lvLmMKQEAgLTkxOSw4ICs5 MTksOCBAQCBzdGF0aWMgaW50IGNza193YWl0X21lbW9yeShzdHJ1Y3QgY2h0bHNfZGV2ICpjZGV2 LAogCWN1cnJlbnRfdGltZW8gPSAqdGltZW9fcDsKIAlub2Jsb2NrID0gKCp0aW1lb19wID8gZmFs c2UgOiB0cnVlKTsKIAlpZiAoY3NrX21lbV9mcmVlKGNkZXYsIHNrKSkgewotCQljdXJyZW50X3Rp bWVvID0gKHByYW5kb21fdTMyKCkgJSAoSFogLyA1KSkgKyAyOwotCQl2bV93YWl0ID0gKHByYW5k b21fdTMyKCkgJSAoSFogLyA1KSkgKyAyOworCQljdXJyZW50X3RpbWVvID0gcHJhbmRvbV91MzJf bWF4KEhaIC8gNSkgKyAyOworCQl2bV93YWl0ID0gcHJhbmRvbV91MzJfbWF4KEhaIC8gNSkgKyAy OwogCX0KIAogCWFkZF93YWl0X3F1ZXVlKHNrX3NsZWVwKHNrKSwgJndhaXQpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvaGFtcmFkaW8vYmF5Y29tX2VwcC5jIGIvZHJpdmVycy9uZXQvaGFtcmFk aW8vYmF5Y29tX2VwcC5jCmluZGV4IDNlNjkwNzllZDY5NC4uN2RmNzhhNzIxYjA0IDEwMDY0NAot LS0gYS9kcml2ZXJzL25ldC9oYW1yYWRpby9iYXljb21fZXBwLmMKKysrIGIvZHJpdmVycy9uZXQv aGFtcmFkaW8vYmF5Y29tX2VwcC5jCkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIGludCB0cmFu c21pdChzdHJ1Y3QgYmF5Y29tX3N0YXRlICpiYywgaW50IGNudCwgdW5zaWduZWQgY2hhciBzdGF0 KQogCQkJaWYgKCgtLWJjLT5oZGxjdHguc2xvdGNudCkgPiAwKQogCQkJCXJldHVybiAwOwogCQkJ YmMtPmhkbGN0eC5zbG90Y250ID0gYmMtPmNoX3BhcmFtcy5zbG90dGltZTsKLQkJCWlmICgocHJh bmRvbV91MzIoKSAlIDI1NikgPiBiYy0+Y2hfcGFyYW1zLnBwZXJzaXN0KQorCQkJaWYgKHByYW5k b21fdTMyX21heCgyNTYpID4gYmMtPmNoX3BhcmFtcy5wcGVyc2lzdCkKIAkJCQlyZXR1cm4gMDsK IAkJfQogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvL2hkbGNkcnYuYyBiL2Ry aXZlcnMvbmV0L2hhbXJhZGlvL2hkbGNkcnYuYwppbmRleCBhNjE4NGQ2YzdiMTUuLmJlZjkwNDMy NWEwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaGFtcmFkaW8vaGRsY2Rydi5jCisrKyBiL2Ry aXZlcnMvbmV0L2hhbXJhZGlvL2hkbGNkcnYuYwpAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgaGRs Y2Rydl9hcmJpdHJhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGhkbGNkcnZfc3Rh dGUgKnMpCiAJaWYgKCgtLXMtPmhkbGN0eC5zbG90Y250KSA+IDApCiAJCXJldHVybjsKIAlzLT5o ZGxjdHguc2xvdGNudCA9IHMtPmNoX3BhcmFtcy5zbG90dGltZTsKLQlpZiAoKHByYW5kb21fdTMy KCkgJSAyNTYpID4gcy0+Y2hfcGFyYW1zLnBwZXJzaXN0KQorCWlmIChwcmFuZG9tX3UzMl9tYXgo MjU2KSA+IHMtPmNoX3BhcmFtcy5wcGVyc2lzdCkKIAkJcmV0dXJuOwogCXN0YXJ0X3R4KGRldiwg cyk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9oYW1yYWRpby95YW0uYyBiL2RyaXZlcnMv bmV0L2hhbXJhZGlvL3lhbS5jCmluZGV4IDk4MGYyYmUzMmYwNS4uOTdhNmNjNWM3YWU4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC9oYW1yYWRpby95YW0uYworKysgYi9kcml2ZXJzL25ldC9oYW1y YWRpby95YW0uYwpAQCAtNjI2LDcgKzYyNiw3IEBAIHN0YXRpYyB2b2lkIHlhbV9hcmJpdHJhdGUo c3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAl5cC0+c2xvdGNudCA9IHlwLT5zbG90IC8gMTA7CiAK IAkvKiBpcyByYW5kb20gPiBwZXJzaXN0ID8gKi8KLQlpZiAoKHByYW5kb21fdTMyKCkgJSAyNTYp ID4geXAtPnBlcnMpCisJaWYgKHByYW5kb21fdTMyX21heCgyNTYpID4geXAtPnBlcnMpCiAJCXJl dHVybjsKIAogCXlhbV9zdGFydF90eChkZXYsIHlwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3BoeS9hdDgwM3guYyBiL2RyaXZlcnMvbmV0L3BoeS9hdDgwM3guYwppbmRleCA5ZTlhZGRlMzM1 YzguLjM0OWI3YjFkYmJmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L2F0ODAzeC5jCisr KyBiL2RyaXZlcnMvbmV0L3BoeS9hdDgwM3guYwpAQCAtMTc1OCw3ICsxNzU4LDcgQEAgc3RhdGlj IGludCBxY2E4MDh4X3BoeV9mYXN0X3JldHJhaW5fY29uZmlnKHN0cnVjdCBwaHlfZGV2aWNlICpw aHlkZXYpCiAKIHN0YXRpYyBpbnQgcWNhODA4eF9waHlfbXNfcmFuZG9tX3NlZWRfc2V0KHN0cnVj dCBwaHlfZGV2aWNlICpwaHlkZXYpCiB7Ci0JdTE2IHNlZWRfdmFsdWUgPSAocHJhbmRvbV91MzIo KSAlIFFDQTgwOFhfTUFTVEVSX1NMQVZFX1NFRURfUkFOR0UpOworCXUxNiBzZWVkX3ZhbHVlID0g cHJhbmRvbV91MzJfbWF4KFFDQTgwOFhfTUFTVEVSX1NMQVZFX1NFRURfUkFOR0UpOwogCiAJcmV0 dXJuIGF0ODAzeF9kZWJ1Z19yZWdfbWFzayhwaHlkZXYsIFFDQTgwOFhfUEhZX0RFQlVHX0xPQ0FM X1NFRUQsCiAJCQlRQ0E4MDhYX01BU1RFUl9TTEFWRV9TRUVEX0NGRywKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYwppbmRl eCA0NzkwNDFmMDcwZjkuLjEwZDlkOWM2M2IyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2ly ZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCisrKyBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYwpAQCAtMTEyOCw3ICsx MTI4LDcgQEAgc3RhdGljIHZvaWQgYnJjbWZfcDJwX2FmeF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKIAlpZiAoYWZ4X2hkbC0+aXNfbGlzdGVuICYmIGFmeF9oZGwtPm15X2xpc3Rl bl9jaGFuKQogCQkvKiAxMDBtcyB+IDMwMG1zICovCiAJCWVyciA9IGJyY21mX3AycF9kaXNjb3Zl cl9saXN0ZW4ocDJwLCBhZnhfaGRsLT5teV9saXN0ZW5fY2hhbiwKLQkJCQkJCTEwMCAqICgxICsg cHJhbmRvbV91MzIoKSAlIDMpKTsKKwkJCQkJCTEwMCAqICgxICsgcHJhbmRvbV91MzJfbWF4KDMp KSk7CiAJZWxzZQogCQllcnIgPSBicmNtZl9wMnBfYWN0X2ZybV9zZWFyY2gocDJwLCBhZnhfaGRs LT5wZWVyX2xpc3Rlbl9jaGFuKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mv aW50ZWwvaXdsd2lmaS9tdm0vbWFjLWN0eHQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVs L2l3bHdpZmkvbXZtL21hYy1jdHh0LmMKaW5kZXggZWQ1ODZlNmQ3ZDY0Li5kZTBjNTQ1ZDUwZmQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYy1j dHh0LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjLWN0 eHQuYwpAQCAtMTA5OSw3ICsxMDk5LDcgQEAgc3RhdGljIHZvaWQgaXdsX212bV9tYWNfY3R4dF9j bWRfZmlsbF9hcChzdHJ1Y3QgaXdsX212bSAqbXZtLAogCQkJaXdsX212bV9tYWNfYXBfaXRlcmF0 b3IsICZkYXRhKTsKIAogCQlpZiAoZGF0YS5iZWFjb25fZGV2aWNlX3RzKSB7Ci0JCQl1MzIgcmFu ZCA9IChwcmFuZG9tX3UzMigpICUgKDY0IC0gMzYpKSArIDM2OworCQkJdTMyIHJhbmQgPSBwcmFu ZG9tX3UzMl9tYXgoNjQgLSAzNikgKyAzNjsKIAkJCW12bXZpZi0+YXBfYmVhY29uX3RpbWUgPSBk YXRhLmJlYWNvbl9kZXZpY2VfdHMgKwogCQkJCWllZWU4MDIxMV90dV90b191c2VjKGRhdGEuYmVh Y29uX2ludCAqIHJhbmQgLwogCQkJCQkJICAgICAxMDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9z Y3NpL2Zjb2UvZmNvZV9jdGxyLmMgYi9kcml2ZXJzL3Njc2kvZmNvZS9mY29lX2N0bHIuYwppbmRl eCAzOWUxNmVhYjQ3YWEuLmRkYzA0ODA2OWFmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2Zj b2UvZmNvZV9jdGxyLmMKKysrIGIvZHJpdmVycy9zY3NpL2Zjb2UvZmNvZV9jdGxyLmMKQEAgLTIy MzMsNyArMjIzMyw3IEBAIHN0YXRpYyB2b2lkIGZjb2VfY3Rscl92bl9yZXN0YXJ0KHN0cnVjdCBm Y29lX2N0bHIgKmZpcCkKIAogCWlmIChmaXAtPnByb2JlX3RyaWVzIDwgRklQX1ZOX1JMSU1fQ09V TlQpIHsKIAkJZmlwLT5wcm9iZV90cmllcysrOwotCQl3YWl0ID0gcHJhbmRvbV91MzIoKSAlIEZJ UF9WTl9QUk9CRV9XQUlUOworCQl3YWl0ID0gcHJhbmRvbV91MzJfbWF4KEZJUF9WTl9QUk9CRV9X QUlUKTsKIAl9IGVsc2UKIAkJd2FpdCA9IEZJUF9WTl9STElNX0lOVDsKIAltb2RfdGltZXIoJmZp cC0+dGltZXIsIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKHdhaXQpKTsKQEAgLTMxMjUsNyAr MzEyNSw3IEBAIHN0YXRpYyB2b2lkIGZjb2VfY3Rscl92bl90aW1lb3V0KHN0cnVjdCBmY29lX2N0 bHIgKmZpcCkKIAkJCQkJICBmY29lX2FsbF92bjJ2biwgMCk7CiAJCQlmaXAtPnBvcnRfa2FfdGlt ZSA9IGppZmZpZXMgKwogCQkJCSBtc2Vjc190b19qaWZmaWVzKEZJUF9WTl9CRUFDT05fSU5UICsK LQkJCQkJKHByYW5kb21fdTMyKCkgJSBGSVBfVk5fQkVBQ09OX0ZVWlopKTsKKwkJCQkJcHJhbmRv bV91MzJfbWF4KEZJUF9WTl9CRUFDT05fRlVaWikpOwogCQl9CiAJCWlmICh0aW1lX2JlZm9yZShm aXAtPnBvcnRfa2FfdGltZSwgbmV4dF90aW1lKSkKIAkJCW5leHRfdGltZSA9IGZpcC0+cG9ydF9r YV90aW1lOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3FlZGkvcWVkaV9tYWluLmMgYi9kcml2 ZXJzL3Njc2kvcWVkaS9xZWRpX21haW4uYwppbmRleCBjZWNmYjJjYjRjN2IuLmRmMmZlN2JkMjZk MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FlZGkvcWVkaV9tYWluLmMKKysrIGIvZHJpdmVy cy9zY3NpL3FlZGkvcWVkaV9tYWluLmMKQEAgLTYxOCw3ICs2MTgsNyBAQCBzdGF0aWMgaW50IHFl ZGlfY21fYWxsb2NfbWVtKHN0cnVjdCBxZWRpX2N0eCAqcWVkaSkKIAkJCQlzaXplb2Yoc3RydWN0 IHFlZGlfZW5kcG9pbnQgKikpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXFlZGktPmVwX3RibCkKIAkJ cmV0dXJuIC1FTk9NRU07Ci0JcG9ydF9pZCA9IHByYW5kb21fdTMyKCkgJSBRRURJX0xPQ0FMX1BP UlRfUkFOR0U7CisJcG9ydF9pZCA9IHByYW5kb21fdTMyX21heChRRURJX0xPQ0FMX1BPUlRfUkFO R0UpOwogCWlmIChxZWRpX2luaXRfaWRfdGJsKCZxZWRpLT5sY2xfcG9ydF90YmwsIFFFRElfTE9D QUxfUE9SVF9SQU5HRSwKIAkJCSAgICAgUUVESV9MT0NBTF9QT1JUX01JTiwgcG9ydF9pZCkpIHsK IAkJcWVkaV9jbV9mcmVlX21lbShxZWRpKTsKZGlmZiAtLWdpdCBhL2ZzL2NlcGgvaW5vZGUuYyBi L2ZzL2NlcGgvaW5vZGUuYwppbmRleCA0MjM1MWQ3YTBkZDYuLmYwYzZlN2U3YjkyYiAxMDA2NDQK LS0tIGEvZnMvY2VwaC9pbm9kZS5jCisrKyBiL2ZzL2NlcGgvaW5vZGUuYwpAQCAtMzYyLDcgKzM2 Miw3IEBAIHN0YXRpYyBpbnQgY2VwaF9maWxsX2ZyYWd0cmVlKHN0cnVjdCBpbm9kZSAqaW5vZGUs CiAJaWYgKG5zcGxpdHMgIT0gY2ktPmlfZnJhZ3RyZWVfbnNwbGl0cykgewogCQl1cGRhdGUgPSB0 cnVlOwogCX0gZWxzZSBpZiAobnNwbGl0cykgewotCQlpID0gcHJhbmRvbV91MzIoKSAlIG5zcGxp dHM7CisJCWkgPSBwcmFuZG9tX3UzMl9tYXgobnNwbGl0cyk7CiAJCWlkID0gbGUzMl90b19jcHUo ZnJhZ3RyZWUtPnNwbGl0c1tpXS5mcmFnKTsKIAkJaWYgKCFfX2NlcGhfZmluZF9mcmFnKGNpLCBp ZCkpCiAJCQl1cGRhdGUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvZnMvY2VwaC9tZHNtYXAuYyBiL2Zz L2NlcGgvbWRzbWFwLmMKaW5kZXggOGQwYTZkMmMyZGE0Li4zZmJhYmM5OGUxZjcgMTAwNjQ0Ci0t LSBhL2ZzL2NlcGgvbWRzbWFwLmMKKysrIGIvZnMvY2VwaC9tZHNtYXAuYwpAQCAtMjksNyArMjks NyBAQCBzdGF0aWMgaW50IF9fbWRzbWFwX2dldF9yYW5kb21fbWRzKHN0cnVjdCBjZXBoX21kc21h cCAqbSwgYm9vbCBpZ25vcmVfbGFnZ3kpCiAJCXJldHVybiAtMTsKIAogCS8qIHBpY2sgKi8KLQlu ID0gcHJhbmRvbV91MzIoKSAlIG47CisJbiA9IHByYW5kb21fdTMyX21heChuKTsKIAlmb3IgKGog PSAwLCBpID0gMDsgaSA8IG0tPnBvc3NpYmxlX21heF9yYW5rOyBpKyspIHsKIAkJaWYgKENFUEhf TURTX0lTX1JFQURZKGksIGlnbm9yZV9sYWdneSkpCiAJCQlqKys7CmRpZmYgLS1naXQgYS9mcy9l eHQ0L3N1cGVyLmMgYi9mcy9leHQ0L3N1cGVyLmMKaW5kZXggZDczM2RiOGEwYjAyLi45ODkzNjVi ODc4YTYgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvc3VwZXIuYworKysgYi9mcy9leHQ0L3N1cGVyLmMK QEAgLTM3ODIsOCArMzc4Miw3IEBAIHN0YXRpYyBpbnQgZXh0NF9sYXp5aW5pdF90aHJlYWQodm9p ZCAqYXJnKQogCQkJfQogCQkJaWYgKCFwcm9ncmVzcykgewogCQkJCWVsci0+bHJfbmV4dF9zY2hl ZCA9IGppZmZpZXMgKwotCQkJCQkocHJhbmRvbV91MzIoKQotCQkJCQkgJSAoRVhUNF9ERUZfTElf TUFYX1NUQVJUX0RFTEFZICogSFopKTsKKwkJCQkJcHJhbmRvbV91MzJfbWF4KEVYVDRfREVGX0xJ X01BWF9TVEFSVF9ERUxBWSAqIEhaKTsKIAkJCX0KIAkJCWlmICh0aW1lX2JlZm9yZShlbHItPmxy X25leHRfc2NoZWQsIG5leHRfd2FrZXVwKSkKIAkJCQluZXh0X3dha2V1cCA9IGVsci0+bHJfbmV4 dF9zY2hlZDsKQEAgLTM5MzAsOCArMzkyOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgZXh0NF9saV9yZXF1 ZXN0ICpleHQ0X2xpX3JlcXVlc3RfbmV3KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAJICogc3By ZWFkIHRoZSBpbm9kZSB0YWJsZSBpbml0aWFsaXphdGlvbiByZXF1ZXN0cwogCSAqIGJldHRlci4K IAkgKi8KLQllbHItPmxyX25leHRfc2NoZWQgPSBqaWZmaWVzICsgKHByYW5kb21fdTMyKCkgJQot CQkJCShFWFQ0X0RFRl9MSV9NQVhfU1RBUlRfREVMQVkgKiBIWikpOworCWVsci0+bHJfbmV4dF9z Y2hlZCA9IGppZmZpZXMgKyBwcmFuZG9tX3UzMl9tYXgoCisJCQkJRVhUNF9ERUZfTElfTUFYX1NU QVJUX0RFTEFZICogSFopOwogCXJldHVybiBlbHI7CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL2YyZnMv Z2MuYyBiL2ZzL2YyZnMvZ2MuYwppbmRleCA2ZGEyMWQ0MDVjZTEuLjJjNWZkMWRiM2EzZSAxMDA2 NDQKLS0tIGEvZnMvZjJmcy9nYy5jCisrKyBiL2ZzL2YyZnMvZ2MuYwpAQCAtMjg1LDcgKzI4NSw3 IEBAIHN0YXRpYyB2b2lkIHNlbGVjdF9wb2xpY3koc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBp bnQgZ2NfdHlwZSwKIAogCS8qIGxldCdzIHNlbGVjdCBiZWdpbm5pbmcgaG90L3NtYWxsIHNwYWNl IGZpcnN0IGluIG5vX2hlYXAgbW9kZSovCiAJaWYgKGYyZnNfbmVlZF9yYW5kX3NlZyhzYmkpKQot CQlwLT5vZmZzZXQgPSBwcmFuZG9tX3UzMigpICUgKE1BSU5fU0VDUyhzYmkpICogc2JpLT5zZWdz X3Blcl9zZWMpOworCQlwLT5vZmZzZXQgPSBwcmFuZG9tX3UzMl9tYXgoTUFJTl9TRUNTKHNiaSkg KiBzYmktPnNlZ3NfcGVyX3NlYyk7CiAJZWxzZSBpZiAodGVzdF9vcHQoc2JpLCBOT0hFQVApICYm CiAJCSh0eXBlID09IENVUlNFR19IT1RfREFUQSB8fCBJU19OT0RFU0VHKHR5cGUpKSkKIAkJcC0+ b2Zmc2V0ID0gMDsKZGlmZiAtLWdpdCBhL2ZzL2YyZnMvc2VnbWVudC5jIGIvZnMvZjJmcy9zZWdt ZW50LmMKaW5kZXggMGRlMjFmODJkN2JjLi41MDdmNzdmODM5ZjMgMTAwNjQ0Ci0tLSBhL2ZzL2Yy ZnMvc2VnbWVudC5jCisrKyBiL2ZzL2YyZnMvc2VnbWVudC5jCkBAIC0yNTM1LDcgKzI1MzUsNyBA QCBzdGF0aWMgdW5zaWduZWQgaW50IF9fZ2V0X25leHRfc2Vnbm8oc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpLCBpbnQgdHlwZSkKIAogCXNhbml0eV9jaGVja19zZWdfdHlwZShzYmksIHNlZ190eXBl KTsKIAlpZiAoZjJmc19uZWVkX3JhbmRfc2VnKHNiaSkpCi0JCXJldHVybiBwcmFuZG9tX3UzMigp ICUgKE1BSU5fU0VDUyhzYmkpICogc2JpLT5zZWdzX3Blcl9zZWMpOworCQlyZXR1cm4gcHJhbmRv bV91MzJfbWF4KE1BSU5fU0VDUyhzYmkpICogc2JpLT5zZWdzX3Blcl9zZWMpOwogCiAJLyogaWYg c2Vnc19wZXJfc2VjIGlzIGxhcmdlIHRoYW4gMSwgd2UgbmVlZCB0byBrZWVwIG9yaWdpbmFsIHBv bGljeS4gKi8KIAlpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkpCkBAIC0yNTg5LDcgKzI1ODks NyBAQCBzdGF0aWMgdm9pZCBuZXdfY3Vyc2VnKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgaW50 IHR5cGUsIGJvb2wgbmV3X3NlYykKIAljdXJzZWctPmFsbG9jX3R5cGUgPSBMRlM7CiAJaWYgKEYy RlNfT1BUSU9OKHNiaSkuZnNfbW9kZSA9PSBGU19NT0RFX0ZSQUdNRU5UX0JMSykKIAkJY3Vyc2Vn LT5mcmFnbWVudF9yZW1haW5lZF9jaHVuayA9Ci0JCQkJcHJhbmRvbV91MzIoKSAlIHNiaS0+bWF4 X2ZyYWdtZW50X2NodW5rICsgMTsKKwkJCQlwcmFuZG9tX3UzMl9tYXgoc2JpLT5tYXhfZnJhZ21l bnRfY2h1bmspICsgMTsKIH0KIAogc3RhdGljIGludCBfX25leHRfZnJlZV9ibGtvZmYoc3RydWN0 IGYyZnNfc2JfaW5mbyAqc2JpLApAQCAtMjYyNiw5ICsyNjI2LDkgQEAgc3RhdGljIHZvaWQgX19y ZWZyZXNoX25leHRfYmxrb2ZmKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKIAkJCS8qIFRvIGFs bG9jYXRlIGJsb2NrIGNodW5rcyBpbiBkaWZmZXJlbnQgc2l6ZXMsIHVzZSByYW5kb20gbnVtYmVy ICovCiAJCQlpZiAoLS1zZWctPmZyYWdtZW50X3JlbWFpbmVkX2NodW5rIDw9IDApIHsKIAkJCQlz ZWctPmZyYWdtZW50X3JlbWFpbmVkX2NodW5rID0KLQkJCQkgICBwcmFuZG9tX3UzMigpICUgc2Jp LT5tYXhfZnJhZ21lbnRfY2h1bmsgKyAxOworCQkJCSAgIHByYW5kb21fdTMyX21heChzYmktPm1h eF9mcmFnbWVudF9jaHVuaykgKyAxOwogCQkJCXNlZy0+bmV4dF9ibGtvZmYgKz0KLQkJCQkgICBw cmFuZG9tX3UzMigpICUgc2JpLT5tYXhfZnJhZ21lbnRfaG9sZSArIDE7CisJCQkJICAgcHJhbmRv bV91MzJfbWF4KHNiaS0+bWF4X2ZyYWdtZW50X2hvbGUpICsgMTsKIAkJCX0KIAkJfQogCX0KZGlm ZiAtLWdpdCBhL2ZzL3ViaWZzL2RlYnVnLmMgYi9mcy91Ymlmcy9kZWJ1Zy5jCmluZGV4IGZjNzE4 ZjYxNzhmMi4uZjRkM2I1NjhhYTY0IDEwMDY0NAotLS0gYS9mcy91Ymlmcy9kZWJ1Zy5jCisrKyBi L2ZzL3ViaWZzL2RlYnVnLmMKQEAgLTI0NjcsNyArMjQ2Nyw3IEBAIGludCBkYmdfY2hlY2tfbm9u ZGF0YV9ub2Rlc19vcmRlcihzdHJ1Y3QgdWJpZnNfaW5mbyAqYywgc3RydWN0IGxpc3RfaGVhZCAq aGVhZCkKIAogc3RhdGljIGlubGluZSBpbnQgY2hhbmNlKHVuc2lnbmVkIGludCBuLCB1bnNpZ25l ZCBpbnQgb3V0X29mKQogewotCXJldHVybiAhISgocHJhbmRvbV91MzIoKSAlIG91dF9vZikgKyAx IDw9IG4pOworCXJldHVybiAhIShwcmFuZG9tX3UzMl9tYXgob3V0X29mKSArIDEgPD0gbik7CiAK IH0KIApAQCAtMjQ4NSwxMyArMjQ4NSwxMyBAQCBzdGF0aWMgaW50IHBvd2VyX2N1dF9lbXVsYXRl ZChzdHJ1Y3QgdWJpZnNfaW5mbyAqYywgaW50IGxudW0sIGludCB3cml0ZSkKIAkJCWlmIChjaGFu Y2UoMSwgMikpIHsKIAkJCQlkLT5wY19kZWxheSA9IDE7CiAJCQkJLyogRmFpbCB3aXRoaW4gMSBt aW51dGUgKi8KLQkJCQlkZWxheSA9IHByYW5kb21fdTMyKCkgJSA2MDAwMDsKKwkJCQlkZWxheSA9 IHByYW5kb21fdTMyX21heCg2MDAwMCk7CiAJCQkJZC0+cGNfdGltZW91dCA9IGppZmZpZXM7CiAJ CQkJZC0+cGNfdGltZW91dCArPSBtc2Vjc190b19qaWZmaWVzKGRlbGF5KTsKIAkJCQl1Ymlmc193 YXJuKGMsICJmYWlsaW5nIGFmdGVyICVsdW1zIiwgZGVsYXkpOwogCQkJfSBlbHNlIHsKIAkJCQlk LT5wY19kZWxheSA9IDI7Ci0JCQkJZGVsYXkgPSBwcmFuZG9tX3UzMigpICUgMTAwMDA7CisJCQkJ ZGVsYXkgPSBwcmFuZG9tX3UzMl9tYXgoMTAwMDApOwogCQkJCS8qIEZhaWwgd2l0aGluIDEwMDAw IG9wZXJhdGlvbnMgKi8KIAkJCQlkLT5wY19jbnRfbWF4ID0gZGVsYXk7CiAJCQkJdWJpZnNfd2Fy bihjLCAiZmFpbGluZyBhZnRlciAlbHUgY2FsbHMiLCBkZWxheSk7CkBAIC0yNTcxLDcgKzI1NzEs NyBAQCBzdGF0aWMgaW50IGNvcnJ1cHRfZGF0YShjb25zdCBzdHJ1Y3QgdWJpZnNfaW5mbyAqYywg Y29uc3Qgdm9pZCAqYnVmLAogCXVuc2lnbmVkIGludCBmcm9tLCB0bywgZmZzID0gY2hhbmNlKDEs IDIpOwogCXVuc2lnbmVkIGNoYXIgKnAgPSAodm9pZCAqKWJ1ZjsKIAotCWZyb20gPSBwcmFuZG9t X3UzMigpICUgbGVuOworCWZyb20gPSBwcmFuZG9tX3UzMl9tYXgobGVuKTsKIAkvKiBDb3JydXB0 aW9uIHNwYW4gbWF4IHRvIGVuZCBvZiB3cml0ZSB1bml0ICovCiAJdG8gPSBtaW4obGVuLCBBTElH Tihmcm9tICsgMSwgYy0+bWF4X3dyaXRlX3NpemUpKTsKIApkaWZmIC0tZ2l0IGEvZnMvdWJpZnMv bHB0X2NvbW1pdC5jIGIvZnMvdWJpZnMvbHB0X2NvbW1pdC5jCmluZGV4IGQ3NmExOWU0NjBjZC4u Y2ZiYzMxZjcwOWY0IDEwMDY0NAotLS0gYS9mcy91Ymlmcy9scHRfY29tbWl0LmMKKysrIGIvZnMv dWJpZnMvbHB0X2NvbW1pdC5jCkBAIC0xOTcwLDI4ICsxOTcwLDI4IEBAIHN0YXRpYyBpbnQgZGJn X3BvcHVsYXRlX2xzYXZlKHN0cnVjdCB1Ymlmc19pbmZvICpjKQogCiAJaWYgKCFkYmdfaXNfY2hr X2dlbihjKSkKIAkJcmV0dXJuIDA7Ci0JaWYgKHByYW5kb21fdTMyKCkgJiAzKQorCWlmIChwcmFu ZG9tX3UzMl9tYXgoNCkpCiAJCXJldHVybiAwOwogCiAJZm9yIChpID0gMDsgaSA8IGMtPmxzYXZl X2NudDsgaSsrKQogCQljLT5sc2F2ZVtpXSA9IGMtPm1haW5fZmlyc3Q7CiAKIAlsaXN0X2Zvcl9l YWNoX2VudHJ5KGxwcm9wcywgJmMtPmVtcHR5X2xpc3QsIGxpc3QpCi0JCWMtPmxzYXZlW3ByYW5k b21fdTMyKCkgJSBjLT5sc2F2ZV9jbnRdID0gbHByb3BzLT5sbnVtOworCQljLT5sc2F2ZVtwcmFu ZG9tX3UzMl9tYXgoYy0+bHNhdmVfY250KV0gPSBscHJvcHMtPmxudW07CiAJbGlzdF9mb3JfZWFj aF9lbnRyeShscHJvcHMsICZjLT5mcmVlYWJsZV9saXN0LCBsaXN0KQotCQljLT5sc2F2ZVtwcmFu ZG9tX3UzMigpICUgYy0+bHNhdmVfY250XSA9IGxwcm9wcy0+bG51bTsKKwkJYy0+bHNhdmVbcHJh bmRvbV91MzJfbWF4KGMtPmxzYXZlX2NudCldID0gbHByb3BzLT5sbnVtOwogCWxpc3RfZm9yX2Vh Y2hfZW50cnkobHByb3BzLCAmYy0+ZnJkaV9pZHhfbGlzdCwgbGlzdCkKLQkJYy0+bHNhdmVbcHJh bmRvbV91MzIoKSAlIGMtPmxzYXZlX2NudF0gPSBscHJvcHMtPmxudW07CisJCWMtPmxzYXZlW3By YW5kb21fdTMyX21heChjLT5sc2F2ZV9jbnQpXSA9IGxwcm9wcy0+bG51bTsKIAogCWhlYXAgPSAm Yy0+bHB0X2hlYXBbTFBST1BTX0RJUlRZX0lEWCAtIDFdOwogCWZvciAoaSA9IDA7IGkgPCBoZWFw LT5jbnQ7IGkrKykKLQkJYy0+bHNhdmVbcHJhbmRvbV91MzIoKSAlIGMtPmxzYXZlX2NudF0gPSBo ZWFwLT5hcnJbaV0tPmxudW07CisJCWMtPmxzYXZlW3ByYW5kb21fdTMyX21heChjLT5sc2F2ZV9j bnQpXSA9IGhlYXAtPmFycltpXS0+bG51bTsKIAloZWFwID0gJmMtPmxwdF9oZWFwW0xQUk9QU19E SVJUWSAtIDFdOwogCWZvciAoaSA9IDA7IGkgPCBoZWFwLT5jbnQ7IGkrKykKLQkJYy0+bHNhdmVb cHJhbmRvbV91MzIoKSAlIGMtPmxzYXZlX2NudF0gPSBoZWFwLT5hcnJbaV0tPmxudW07CisJCWMt PmxzYXZlW3ByYW5kb21fdTMyX21heChjLT5sc2F2ZV9jbnQpXSA9IGhlYXAtPmFycltpXS0+bG51 bTsKIAloZWFwID0gJmMtPmxwdF9oZWFwW0xQUk9QU19GUkVFIC0gMV07CiAJZm9yIChpID0gMDsg aSA8IGhlYXAtPmNudDsgaSsrKQotCQljLT5sc2F2ZVtwcmFuZG9tX3UzMigpICUgYy0+bHNhdmVf Y250XSA9IGhlYXAtPmFycltpXS0+bG51bTsKKwkJYy0+bHNhdmVbcHJhbmRvbV91MzJfbWF4KGMt PmxzYXZlX2NudCldID0gaGVhcC0+YXJyW2ldLT5sbnVtOwogCiAJcmV0dXJuIDE7CiB9CmRpZmYg LS1naXQgYS9mcy91Ymlmcy90bmNfY29tbWl0LmMgYi9mcy91Ymlmcy90bmNfY29tbWl0LmMKaW5k ZXggNThjOTJjOTZlY2VmLi4wMTM2MmFkNWY4MDQgMTAwNjQ0Ci0tLSBhL2ZzL3ViaWZzL3RuY19j b21taXQuYworKysgYi9mcy91Ymlmcy90bmNfY29tbWl0LmMKQEAgLTcwMCw3ICs3MDAsNyBAQCBz dGF0aWMgaW50IGFsbG9jX2lkeF9sZWJzKHN0cnVjdCB1Ymlmc19pbmZvICpjLCBpbnQgY250KQog CQljLT5pbGVic1tjLT5pbGViX2NudCsrXSA9IGxudW07CiAJCWRiZ19jbXQoIkxFQiAlZCIsIGxu dW0pOwogCX0KLQlpZiAoZGJnX2lzX2Noa19pbmRleChjKSAmJiAhKHByYW5kb21fdTMyKCkgJiA3 KSkKKwlpZiAoZGJnX2lzX2Noa19pbmRleChjKSAmJiAhcHJhbmRvbV91MzJfbWF4KDgpKQogCQly ZXR1cm4gLUVOT1NQQzsKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2ZzL3hmcy9saWJ4ZnMv eGZzX2FsbG9jLmMgYi9mcy94ZnMvbGlieGZzL3hmc19hbGxvYy5jCmluZGV4IGUyYmRmMDg5YzBh My4uNjI2MTU5OWJiMzg5IDEwMDY0NAotLS0gYS9mcy94ZnMvbGlieGZzL3hmc19hbGxvYy5jCisr KyBiL2ZzL3hmcy9saWJ4ZnMveGZzX2FsbG9jLmMKQEAgLTE1MjAsNyArMTUyMCw3IEBAIHhmc19h bGxvY19hZ192ZXh0ZW50X2xhc3RibG9jaygKIAogI2lmZGVmIERFQlVHCiAJLyogUmFuZG9tbHkg ZG9uJ3QgZXhlY3V0ZSB0aGUgZmlyc3QgYWxnb3JpdGhtLiAqLwotCWlmIChwcmFuZG9tX3UzMigp ICYgMSkKKwlpZiAocHJhbmRvbV91MzJfbWF4KDIpKQogCQlyZXR1cm4gMDsKICNlbmRpZgogCmRp ZmYgLS1naXQgYS9mcy94ZnMvbGlieGZzL3hmc19pYWxsb2MuYyBiL2ZzL3hmcy9saWJ4ZnMveGZz X2lhbGxvYy5jCmluZGV4IDZjZGZkNjRiYzU2Yi4uNzgzOGIzMTEyNmUyIDEwMDY0NAotLS0gYS9m cy94ZnMvbGlieGZzL3hmc19pYWxsb2MuYworKysgYi9mcy94ZnMvbGlieGZzL3hmc19pYWxsb2Mu YwpAQCAtNjM2LDcgKzYzNiw3IEBAIHhmc19pYWxsb2NfYWdfYWxsb2MoCiAJLyogcmFuZG9tbHkg ZG8gc3BhcnNlIGlub2RlIGFsbG9jYXRpb25zICovCiAJaWYgKHhmc19oYXNfc3BhcnNlaW5vZGVz KHRwLT50X21vdW50cCkgJiYKIAkgICAgaWdlby0+aWFsbG9jX21pbl9ibGtzIDwgaWdlby0+aWFs bG9jX2Jsa3MpCi0JCWRvX3NwYXJzZSA9IHByYW5kb21fdTMyKCkgJiAxOworCQlkb19zcGFyc2Ug PSBwcmFuZG9tX3UzMl9tYXgoMik7CiAjZW5kaWYKIAogCS8qCmRpZmYgLS1naXQgYS9mcy94ZnMv eGZzX2Vycm9yLmMgYi9mcy94ZnMveGZzX2Vycm9yLmMKaW5kZXggMjk2ZmFhNDFkODFkLi43ZGI1 ODhlZDBiZTUgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfZXJyb3IuYworKysgYi9mcy94ZnMveGZz X2Vycm9yLmMKQEAgLTI3NCw3ICsyNzQsNyBAQCB4ZnNfZXJyb3J0YWdfdGVzdCgKIAogCUFTU0VS VChlcnJvcl90YWcgPCBYRlNfRVJSVEFHX01BWCk7CiAJcmFuZGZhY3RvciA9IG1wLT5tX2Vycm9y dGFnW2Vycm9yX3RhZ107Ci0JaWYgKCFyYW5kZmFjdG9yIHx8IHByYW5kb21fdTMyKCkgJSByYW5k ZmFjdG9yKQorCWlmICghcmFuZGZhY3RvciB8fCBwcmFuZG9tX3UzMl9tYXgocmFuZGZhY3Rvcikp CiAJCXJldHVybiBmYWxzZTsKIAogCXhmc193YXJuX3JhdGVsaW1pdGVkKG1wLApkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9saW51eC9ub2RlbWFzay5oIGIvaW5jbHVkZS9saW51eC9ub2RlbWFzay5oCmlu ZGV4IDRiNzFhOTYxOTBhOC4uNjZlZTliNGI3OTI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L25vZGVtYXNrLmgKKysrIGIvaW5jbHVkZS9saW51eC9ub2RlbWFzay5oCkBAIC01MDksNyArNTA5 LDcgQEAgc3RhdGljIGlubGluZSBpbnQgbm9kZV9yYW5kb20oY29uc3Qgbm9kZW1hc2tfdCAqbWFz a3ApCiAJdyA9IG5vZGVzX3dlaWdodCgqbWFza3ApOwogCWlmICh3KQogCQliaXQgPSBiaXRtYXBf b3JkX3RvX3BvcyhtYXNrcC0+Yml0cywKLQkJCWdldF9yYW5kb21faW50KCkgJSB3LCBNQVhfTlVN Tk9ERVMpOworCQkJcHJhbmRvbV91MzJfbWF4KHcpLCBNQVhfTlVNTk9ERVMpOwogCXJldHVybiBi aXQ7CiAjZWxzZQogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi9jb3JlLmMgYi9r ZXJuZWwvYnBmL2NvcmUuYwppbmRleCA3MTFmZDI5M2I2ZGUuLjE5NTkzNjI3ZTAzNyAxMDA2NDQK LS0tIGEva2VybmVsL2JwZi9jb3JlLmMKKysrIGIva2VybmVsL2JwZi9jb3JlLmMKQEAgLTEwMzIs NyArMTAzMiw3IEBAIGJwZl9qaXRfYmluYXJ5X2FsbG9jKHVuc2lnbmVkIGludCBwcm9nbGVuLCB1 OCAqKmltYWdlX3B0ciwKIAloZHItPnNpemUgPSBzaXplOwogCWhvbGUgPSBtaW5fdCh1bnNpZ25l ZCBpbnQsIHNpemUgLSAocHJvZ2xlbiArIHNpemVvZigqaGRyKSksCiAJCSAgICAgUEFHRV9TSVpF IC0gc2l6ZW9mKCpoZHIpKTsKLQlzdGFydCA9IChnZXRfcmFuZG9tX2ludCgpICUgaG9sZSkgJiB+ KGFsaWdubWVudCAtIDEpOworCXN0YXJ0ID0gcHJhbmRvbV91MzJfbWF4KGhvbGUpICYgfihhbGln bm1lbnQgLSAxKTsKIAogCS8qIExlYXZlIGEgcmFuZG9tIG51bWJlciBvZiBpbnN0cnVjdGlvbnMg YmVmb3JlIEJQRiBjb2RlLiAqLwogCSppbWFnZV9wdHIgPSAmaGRyLT5pbWFnZVtzdGFydF07CkBA IC0xMDk0LDcgKzEwOTQsNyBAQCBicGZfaml0X2JpbmFyeV9wYWNrX2FsbG9jKHVuc2lnbmVkIGlu dCBwcm9nbGVuLCB1OCAqKmltYWdlX3B0ciwKIAogCWhvbGUgPSBtaW5fdCh1bnNpZ25lZCBpbnQs IHNpemUgLSAocHJvZ2xlbiArIHNpemVvZigqcm9faGVhZGVyKSksCiAJCSAgICAgQlBGX1BST0df Q0hVTktfU0laRSAtIHNpemVvZigqcm9faGVhZGVyKSk7Ci0Jc3RhcnQgPSAoZ2V0X3JhbmRvbV9p bnQoKSAlIGhvbGUpICYgfihhbGlnbm1lbnQgLSAxKTsKKwlzdGFydCA9IHByYW5kb21fdTMyX21h eChob2xlKSAmIH4oYWxpZ25tZW50IC0gMSk7CiAKIAkqaW1hZ2VfcHRyID0gJnJvX2hlYWRlci0+ aW1hZ2Vbc3RhcnRdOwogCSpyd19pbWFnZSA9ICYoKnJ3X2hlYWRlciktPmltYWdlW3N0YXJ0XTsK ZGlmZiAtLWdpdCBhL2tlcm5lbC9sb2NraW5nL3Rlc3Qtd3dfbXV0ZXguYyBiL2tlcm5lbC9sb2Nr aW5nL3Rlc3Qtd3dfbXV0ZXguYwppbmRleCAzNTMwMDQxNTVkNjUuLjQzZWZiMmEwNDE2MCAxMDA2 NDQKLS0tIGEva2VybmVsL2xvY2tpbmcvdGVzdC13d19tdXRleC5jCisrKyBiL2tlcm5lbC9sb2Nr aW5nL3Rlc3Qtd3dfbXV0ZXguYwpAQCAtMzk5LDcgKzM5OSw3IEBAIHN0YXRpYyBpbnQgKmdldF9y YW5kb21fb3JkZXIoaW50IGNvdW50KQogCQlvcmRlcltuXSA9IG47CiAKIAlmb3IgKG4gPSBjb3Vu dCAtIDE7IG4gPiAxOyBuLS0pIHsKLQkJciA9IGdldF9yYW5kb21faW50KCkgJSAobiArIDEpOwor CQlyID0gcHJhbmRvbV91MzJfbWF4KG4gKyAxKTsKIAkJaWYgKHIgIT0gbikgewogCQkJdG1wID0g b3JkZXJbbl07CiAJCQlvcmRlcltuXSA9IG9yZGVyW3JdOwpAQCAtNTM4LDcgKzUzOCw3IEBAIHN0 YXRpYyB2b2lkIHN0cmVzc19vbmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CiAJ c3RydWN0IHN0cmVzcyAqc3RyZXNzID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqc3RyZXNz KSwgd29yayk7CiAJY29uc3QgaW50IG5sb2NrcyA9IHN0cmVzcy0+bmxvY2tzOwotCXN0cnVjdCB3 d19tdXRleCAqbG9jayA9IHN0cmVzcy0+bG9ja3MgKyAoZ2V0X3JhbmRvbV9pbnQoKSAlIG5sb2Nr cyk7CisJc3RydWN0IHd3X211dGV4ICpsb2NrID0gc3RyZXNzLT5sb2NrcyArIHByYW5kb21fdTMy X21heChubG9ja3MpOwogCWludCBlcnI7CiAKIAlkbyB7CmRpZmYgLS1naXQgYS9rZXJuZWwvdGlt ZS9jbG9ja3NvdXJjZS5jIGIva2VybmVsL3RpbWUvY2xvY2tzb3VyY2UuYwppbmRleCBjZWU1ZGEx ZTU0YzQuLjgwNThiZWM4N2FjZSAxMDA2NDQKLS0tIGEva2VybmVsL3RpbWUvY2xvY2tzb3VyY2Uu YworKysgYi9rZXJuZWwvdGltZS9jbG9ja3NvdXJjZS5jCkBAIC0zMTAsNyArMzEwLDcgQEAgc3Rh dGljIHZvaWQgY2xvY2tzb3VyY2VfdmVyaWZ5X2Nob29zZV9jcHVzKHZvaWQpCiAJICogQ1BVcyB0 aGF0IGFyZSBjdXJyZW50bHkgb25saW5lLgogCSAqLwogCWZvciAoaSA9IDE7IGkgPCBuOyBpKysp IHsKLQkJY3B1ID0gcHJhbmRvbV91MzIoKSAlIG5yX2NwdV9pZHM7CisJCWNwdSA9IHByYW5kb21f dTMyX21heChucl9jcHVfaWRzKTsKIAkJY3B1ID0gY3B1bWFza19uZXh0KGNwdSAtIDEsIGNwdV9v bmxpbmVfbWFzayk7CiAJCWlmIChjcHUgPj0gbnJfY3B1X2lkcykKIAkJCWNwdSA9IGNwdW1hc2tf Zmlyc3QoY3B1X29ubGluZV9tYXNrKTsKZGlmZiAtLWdpdCBhL2xpYi9mYXVsdC1pbmplY3QuYyBi L2xpYi9mYXVsdC1pbmplY3QuYwppbmRleCA0MjM3ODRkOWMwNTguLjk2ZTA5MmRlNWI3MiAxMDA2 NDQKLS0tIGEvbGliL2ZhdWx0LWluamVjdC5jCisrKyBiL2xpYi9mYXVsdC1pbmplY3QuYwpAQCAt MTM5LDcgKzEzOSw3IEBAIGJvb2wgc2hvdWxkX2ZhaWwoc3RydWN0IGZhdWx0X2F0dHIgKmF0dHIs IHNzaXplX3Qgc2l6ZSkKIAkJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlpZiAoYXR0ci0+cHJvYmFi aWxpdHkgPD0gcHJhbmRvbV91MzIoKSAlIDEwMCkKKwlpZiAoYXR0ci0+cHJvYmFiaWxpdHkgPD0g cHJhbmRvbV91MzJfbWF4KDEwMCkpCiAJCXJldHVybiBmYWxzZTsKIAogCWlmICghZmFpbF9zdGFj a3RyYWNlKGF0dHIpKQpkaWZmIC0tZ2l0IGEvbGliL2ZpbmRfYml0X2JlbmNobWFyay5jIGIvbGli L2ZpbmRfYml0X2JlbmNobWFyay5jCmluZGV4IGRiOTA0YjU3ZDRiOC4uMWE2NDY2YzY0YmI2IDEw MDY0NAotLS0gYS9saWIvZmluZF9iaXRfYmVuY2htYXJrLmMKKysrIGIvbGliL2ZpbmRfYml0X2Jl bmNobWFyay5jCkBAIC0xNTcsOCArMTU3LDggQEAgc3RhdGljIGludCBfX2luaXQgZmluZF9iaXRf dGVzdCh2b2lkKQogCWJpdG1hcF96ZXJvKGJpdG1hcDIsIEJJVE1BUF9MRU4pOwogCiAJd2hpbGUg KG5iaXRzLS0pIHsKLQkJX19zZXRfYml0KHByYW5kb21fdTMyKCkgJSBCSVRNQVBfTEVOLCBiaXRt YXApOwotCQlfX3NldF9iaXQocHJhbmRvbV91MzIoKSAlIEJJVE1BUF9MRU4sIGJpdG1hcDIpOwor CQlfX3NldF9iaXQocHJhbmRvbV91MzJfbWF4KEJJVE1BUF9MRU4pLCBiaXRtYXApOworCQlfX3Nl dF9iaXQocHJhbmRvbV91MzJfbWF4KEJJVE1BUF9MRU4pLCBiaXRtYXAyKTsKIAl9CiAKIAl0ZXN0 X2ZpbmRfbmV4dF9iaXQoYml0bWFwLCBCSVRNQVBfTEVOKTsKZGlmZiAtLWdpdCBhL2xpYi9rb2Jq ZWN0LmMgYi9saWIva29iamVjdC5jCmluZGV4IDVmMGU3MWFiMjkyYy4uYTBiMmRiZmNmYTIzIDEw MDY0NAotLS0gYS9saWIva29iamVjdC5jCisrKyBiL2xpYi9rb2JqZWN0LmMKQEAgLTY5NCw3ICs2 OTQsNyBAQCBzdGF0aWMgdm9pZCBrb2JqZWN0X3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpCiB7 CiAJc3RydWN0IGtvYmplY3QgKmtvYmogPSBjb250YWluZXJfb2Yoa3JlZiwgc3RydWN0IGtvYmpl Y3QsIGtyZWYpOwogI2lmZGVmIENPTkZJR19ERUJVR19LT0JKRUNUX1JFTEVBU0UKLQl1bnNpZ25l ZCBsb25nIGRlbGF5ID0gSFogKyBIWiAqIChnZXRfcmFuZG9tX2ludCgpICYgMHgzKTsKKwl1bnNp Z25lZCBsb25nIGRlbGF5ID0gSFogKyBIWiAqIHByYW5kb21fdTMyX21heCg0KTsKIAlwcl9pbmZv KCJrb2JqZWN0OiAnJXMnICglcCk6ICVzLCBwYXJlbnQgJXAgKGRlbGF5ZWQgJWxkKVxuIiwKIAkJ IGtvYmplY3RfbmFtZShrb2JqKSwga29iaiwgX19mdW5jX18sIGtvYmotPnBhcmVudCwgZGVsYXkp OwogCUlOSVRfREVMQVlFRF9XT1JLKCZrb2JqLT5yZWxlYXNlLCBrb2JqZWN0X2RlbGF5ZWRfY2xl YW51cCk7CmRpZmYgLS1naXQgYS9saWIvcmVlZF9zb2xvbW9uL3Rlc3RfcnNsaWIuYyBiL2xpYi9y ZWVkX3NvbG9tb24vdGVzdF9yc2xpYi5jCmluZGV4IGQ5ZDFjMzNhZWJkYS4uNGQyNDFiZGM4OGFh IDEwMDY0NAotLS0gYS9saWIvcmVlZF9zb2xvbW9uL3Rlc3RfcnNsaWIuYworKysgYi9saWIvcmVl ZF9zb2xvbW9uL3Rlc3RfcnNsaWIuYwpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0YXRpYyBpbnQgZ2V0 X3Jjd193ZShzdHJ1Y3QgcnNfY29udHJvbCAqcnMsIHN0cnVjdCB3c3BhY2UgKndzLAogCiAJCWRv IHsKIAkJCS8qIE11c3Qgbm90IGNob29zZSB0aGUgc2FtZSBsb2NhdGlvbiB0d2ljZSAqLwotCQkJ ZXJybG9jID0gcHJhbmRvbV91MzIoKSAlIGxlbjsKKwkJCWVycmxvYyA9IHByYW5kb21fdTMyX21h eChsZW4pOwogCQl9IHdoaWxlIChlcnJsb2NzW2VycmxvY10gIT0gMCk7CiAKIAkJZXJybG9jc1tl cnJsb2NdID0gMTsKQEAgLTE5NCwxMiArMTk0LDEyIEBAIHN0YXRpYyBpbnQgZ2V0X3Jjd193ZShz dHJ1Y3QgcnNfY29udHJvbCAqcnMsIHN0cnVjdCB3c3BhY2UgKndzLAogCWZvciAoaSA9IDA7IGkg PCBlcmFzOyBpKyspIHsKIAkJZG8gewogCQkJLyogTXVzdCBub3QgY2hvb3NlIHRoZSBzYW1lIGxv Y2F0aW9uIHR3aWNlICovCi0JCQllcnJsb2MgPSBwcmFuZG9tX3UzMigpICUgbGVuOworCQkJZXJy bG9jID0gcHJhbmRvbV91MzJfbWF4KGxlbik7CiAJCX0gd2hpbGUgKGVycmxvY3NbZXJybG9jXSAh PSAwKTsKIAogCQlkZXJybG9jc1tpXSA9IGVycmxvYzsKIAotCQlpZiAoZXdzYyAmJiAocHJhbmRv bV91MzIoKSAmIDEpKSB7CisJCWlmIChld3NjICYmIHByYW5kb21fdTMyX21heCgyKSkgewogCQkJ LyogRXJhc3VyZSB3aXRoIHRoZSBzeW1ib2wgaW50YWN0ICovCiAJCQllcnJsb2NzW2VycmxvY10g PSAyOwogCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvbGliL3NiaXRtYXAuYyBiL2xpYi9zYml0bWFw LmMKaW5kZXggYTgxMDhhOTYyZGZkLi4wNTVkYWMwNjlhZmIgMTAwNjQ0Ci0tLSBhL2xpYi9zYml0 bWFwLmMKKysrIGIvbGliL3NiaXRtYXAuYwpAQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgaW5saW5l IHVuc2lnbmVkIHVwZGF0ZV9hbGxvY19oaW50X2JlZm9yZV9nZXQoc3RydWN0IHNiaXRtYXAgKnNi LAogCiAJaGludCA9IHRoaXNfY3B1X3JlYWQoKnNiLT5hbGxvY19oaW50KTsKIAlpZiAodW5saWtl bHkoaGludCA+PSBkZXB0aCkpIHsKLQkJaGludCA9IGRlcHRoID8gcHJhbmRvbV91MzIoKSAlIGRl cHRoIDogMDsKKwkJaGludCA9IGRlcHRoID8gcHJhbmRvbV91MzJfbWF4KGRlcHRoKSA6IDA7CiAJ CXRoaXNfY3B1X3dyaXRlKCpzYi0+YWxsb2NfaGludCwgaGludCk7CiAJfQogCmRpZmYgLS1naXQg YS9saWIvdGVzdC1zdHJpbmdfaGVscGVycy5jIGIvbGliL3Rlc3Qtc3RyaW5nX2hlbHBlcnMuYwpp bmRleCA0MzdkOGU2YjdjYjEuLjg2ZmFkZDNiYTA4YyAxMDA2NDQKLS0tIGEvbGliL3Rlc3Qtc3Ry aW5nX2hlbHBlcnMuYworKysgYi9saWIvdGVzdC1zdHJpbmdfaGVscGVycy5jCkBAIC01ODcsNyAr NTg3LDcgQEAgc3RhdGljIGludCBfX2luaXQgdGVzdF9zdHJpbmdfaGVscGVyc19pbml0KHZvaWQp CiAJZm9yIChpID0gMDsgaSA8IFVORVNDQVBFX0FMTF9NQVNLICsgMTsgaSsrKQogCQl0ZXN0X3N0 cmluZ191bmVzY2FwZSgidW5lc2NhcGUiLCBpLCBmYWxzZSk7CiAJdGVzdF9zdHJpbmdfdW5lc2Nh cGUoInVuZXNjYXBlIGlucGxhY2UiLAotCQkJICAgICBnZXRfcmFuZG9tX2ludCgpICUgKFVORVND QVBFX0FOWSArIDEpLCB0cnVlKTsKKwkJCSAgICAgcHJhbmRvbV91MzJfbWF4KFVORVNDQVBFX0FO WSArIDEpLCB0cnVlKTsKIAogCS8qIFdpdGhvdXQgZGljdGlvbmFyeSAqLwogCWZvciAoaSA9IDA7 IGkgPCBFU0NBUEVfQUxMX01BU0sgKyAxOyBpKyspCmRpZmYgLS1naXQgYS9saWIvdGVzdF9oZXhk dW1wLmMgYi9saWIvdGVzdF9oZXhkdW1wLmMKaW5kZXggNTE0NDg5OWQzYzZiLi4wOTI3ZjQ0Y2Q0 NzggMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0X2hleGR1bXAuYworKysgYi9saWIvdGVzdF9oZXhkdW1w LmMKQEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgdGVzdF9oZXhkdW1wKHNp emVfdCBsZW4sIGludCByb3dzaXplLCBpbnQgZ3JvdXBzaXplLAogc3RhdGljIHZvaWQgX19pbml0 IHRlc3RfaGV4ZHVtcF9zZXQoaW50IHJvd3NpemUsIGJvb2wgYXNjaWkpCiB7CiAJc2l6ZV90IGQg PSBtaW5fdChzaXplX3QsIHNpemVvZihkYXRhX2IpLCByb3dzaXplKTsKLQlzaXplX3QgbGVuID0g Z2V0X3JhbmRvbV9pbnQoKSAlIGQgKyAxOworCXNpemVfdCBsZW4gPSBwcmFuZG9tX3UzMl9tYXgo ZCkgKyAxOwogCiAJdGVzdF9oZXhkdW1wKGxlbiwgcm93c2l6ZSwgNCwgYXNjaWkpOwogCXRlc3Rf aGV4ZHVtcChsZW4sIHJvd3NpemUsIDIsIGFzY2lpKTsKQEAgLTIwOCwxMSArMjA4LDExIEBAIHN0 YXRpYyB2b2lkIF9faW5pdCB0ZXN0X2hleGR1bXBfb3ZlcmZsb3coc2l6ZV90IGJ1Zmxlbiwgc2l6 ZV90IGxlbiwKIHN0YXRpYyB2b2lkIF9faW5pdCB0ZXN0X2hleGR1bXBfb3ZlcmZsb3dfc2V0KHNp emVfdCBidWZsZW4sIGJvb2wgYXNjaWkpCiB7CiAJdW5zaWduZWQgaW50IGkgPSAwOwotCWludCBy cyA9IChnZXRfcmFuZG9tX2ludCgpICUgMiArIDEpICogMTY7CisJaW50IHJzID0gKHByYW5kb21f dTMyX21heCgyKSArIDEpICogMTY7CiAKIAlkbyB7CiAJCWludCBncyA9IDEgPDwgaTsKLQkJc2l6 ZV90IGxlbiA9IGdldF9yYW5kb21faW50KCkgJSBycyArIGdzOworCQlzaXplX3QgbGVuID0gcHJh bmRvbV91MzJfbWF4KHJzKSArIGdzOwogCiAJCXRlc3RfaGV4ZHVtcF9vdmVyZmxvdyhidWZsZW4s IHJvdW5kZG93bihsZW4sIGdzKSwgcnMsIGdzLCBhc2NpaSk7CiAJfSB3aGlsZSAoaSsrIDwgMyk7 CkBAIC0yMjMsMTEgKzIyMywxMSBAQCBzdGF0aWMgaW50IF9faW5pdCB0ZXN0X2hleGR1bXBfaW5p dCh2b2lkKQogCXVuc2lnbmVkIGludCBpOwogCWludCByb3dzaXplOwogCi0Jcm93c2l6ZSA9IChn ZXRfcmFuZG9tX2ludCgpICUgMiArIDEpICogMTY7CisJcm93c2l6ZSA9IChwcmFuZG9tX3UzMl9t YXgoMikgKyAxKSAqIDE2OwogCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQogCQl0ZXN0X2hleGR1 bXBfc2V0KHJvd3NpemUsIGZhbHNlKTsKIAotCXJvd3NpemUgPSAoZ2V0X3JhbmRvbV9pbnQoKSAl IDIgKyAxKSAqIDE2OworCXJvd3NpemUgPSAocHJhbmRvbV91MzJfbWF4KDIpICsgMSkgKiAxNjsK IAlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKIAkJdGVzdF9oZXhkdW1wX3NldChyb3dzaXplLCB0 cnVlKTsKIApkaWZmIC0tZ2l0IGEvbGliL3Rlc3Rfa2FzYW4uYyBiL2xpYi90ZXN0X2thc2FuLmMK aW5kZXggNThjMWIwMWNjZmUyLi43YjQwMjY2MjNhY2UgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0X2th c2FuLmMKKysrIGIvbGliL3Rlc3Rfa2FzYW4uYwpAQCAtMTI2OSw3ICsxMjY5LDcgQEAgc3RhdGlj IHZvaWQgbWF0Y2hfYWxsX25vdF9hc3NpZ25lZChzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJS0FTQU5f VEVTVF9ORUVEU19DT05GSUdfT0ZGKHRlc3QsIENPTkZJR19LQVNBTl9HRU5FUklDKTsKIAogCWZv ciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewotCQlzaXplID0gKGdldF9yYW5kb21faW50KCkgJSAx MDI0KSArIDE7CisJCXNpemUgPSBwcmFuZG9tX3UzMl9tYXgoMTAyNCkgKyAxOwogCQlwdHIgPSBr bWFsbG9jKHNpemUsIEdGUF9LRVJORUwpOwogCQlLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxM KHRlc3QsIHB0cik7CiAJCUtVTklUX0VYUEVDVF9HRSh0ZXN0LCAodTgpZ2V0X3RhZyhwdHIpLCAo dTgpS0FTQU5fVEFHX01JTik7CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBzdGF0aWMgdm9pZCBtYXRj aF9hbGxfbm90X2Fzc2lnbmVkKHN0cnVjdCBrdW5pdCAqdGVzdCkKIAl9CiAKIAlmb3IgKGkgPSAw OyBpIDwgMjU2OyBpKyspIHsKLQkJb3JkZXIgPSAoZ2V0X3JhbmRvbV9pbnQoKSAlIDQpICsgMTsK KwkJb3JkZXIgPSBwcmFuZG9tX3UzMl9tYXgoNCkgKyAxOwogCQlwYWdlcyA9IGFsbG9jX3BhZ2Vz KEdGUF9LRVJORUwsIG9yZGVyKTsKIAkJcHRyID0gcGFnZV9hZGRyZXNzKHBhZ2VzKTsKIAkJS1VO SVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBwdHIpOwpAQCAtMTI5MSw3ICsxMjkxLDcg QEAgc3RhdGljIHZvaWQgbWF0Y2hfYWxsX25vdF9hc3NpZ25lZChzdHJ1Y3Qga3VuaXQgKnRlc3Qp CiAJCXJldHVybjsKIAogCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewotCQlzaXplID0gKGdl dF9yYW5kb21faW50KCkgJSAxMDI0KSArIDE7CisJCXNpemUgPSBwcmFuZG9tX3UzMl9tYXgoMTAy NCkgKyAxOwogCQlwdHIgPSB2bWFsbG9jKHNpemUpOwogCQlLVU5JVF9BU1NFUlRfTk9UX0VSUl9P Ul9OVUxMKHRlc3QsIHB0cik7CiAJCUtVTklUX0VYUEVDVF9HRSh0ZXN0LCAodTgpZ2V0X3RhZyhw dHIpLCAodTgpS0FTQU5fVEFHX01JTik7CmRpZmYgLS1naXQgYS9saWIvdGVzdF9saXN0X3NvcnQu YyBiL2xpYi90ZXN0X2xpc3Rfc29ydC5jCmluZGV4IGFkZTdhMWVhMGM4ZS4uMTlmZjIyOWI5YzNh IDEwMDY0NAotLS0gYS9saWIvdGVzdF9saXN0X3NvcnQuYworKysgYi9saWIvdGVzdF9saXN0X3Nv cnQuYwpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9pZCBsaXN0X3NvcnRfdGVzdChzdHJ1Y3Qg a3VuaXQgKnRlc3QpCiAJCUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgZWwpOwog CiAJCSAvKiBmb3JjZSBzb21lIGVxdWl2YWxlbmNpZXMgKi8KLQkJZWwtPnZhbHVlID0gcHJhbmRv bV91MzIoKSAlIChURVNUX0xJU1RfTEVOIC8gMyk7CisJCWVsLT52YWx1ZSA9IHByYW5kb21fdTMy X21heChURVNUX0xJU1RfTEVOIC8gMyk7CiAJCWVsLT5zZXJpYWwgPSBpOwogCQllbC0+cG9pc29u MSA9IFRFU1RfUE9JU09OMTsKIAkJZWwtPnBvaXNvbjIgPSBURVNUX1BPSVNPTjI7CmRpZmYgLS1n aXQgYS9tbS9taWdyYXRlLmMgYi9tbS9taWdyYXRlLmMKaW5kZXggNmExNTk3YzkyMjYxLi5kYjA0 Zjk1ZmUwNTAgMTAwNjQ0Ci0tLSBhL21tL21pZ3JhdGUuYworKysgYi9tbS9taWdyYXRlLmMKQEAg LTIyOTIsNyArMjI5Miw3IEBAIGludCBuZXh0X2RlbW90aW9uX25vZGUoaW50IG5vZGUpCiAJCSAq IGNhY2hpbmcgaXNzdWUsIHdoaWNoIHNlZW1zIG1vcmUgY29tcGxpY2F0ZWQuIFNvIHNlbGVjdGlu ZwogCQkgKiB0YXJnZXQgbm9kZSByYW5kb21seSBzZWVtcyBiZXR0ZXIgdW50aWwgbm93LgogCQkg Ki8KLQkJaW5kZXggPSBnZXRfcmFuZG9tX2ludCgpICUgdGFyZ2V0X25yOworCQlpbmRleCA9IHBy YW5kb21fdTMyX21heCh0YXJnZXRfbnIpOwogCQlicmVhazsKIAl9CiAKZGlmZiAtLWdpdCBhL21t L3NsdWIuYyBiL21tL3NsdWIuYwppbmRleCAyYTZiM2YzMWNlN2UuLjgyMGM2ODAxZDU5NCAxMDA2 NDQKLS0tIGEvbW0vc2x1Yi5jCisrKyBiL21tL3NsdWIuYwpAQCAtMTg2OCw3ICsxODY4LDcgQEAg c3RhdGljIGJvb2wgc2h1ZmZsZV9mcmVlbGlzdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywgc3RydWN0 IHNsYWIgKnNsYWIpCiAJCXJldHVybiBmYWxzZTsKIAogCWZyZWVsaXN0X2NvdW50ID0gb29fb2Jq ZWN0cyhzLT5vbyk7Ci0JcG9zID0gZ2V0X3JhbmRvbV9pbnQoKSAlIGZyZWVsaXN0X2NvdW50Owor CXBvcyA9IHByYW5kb21fdTMyX21heChmcmVlbGlzdF9jb3VudCk7CiAKIAlwYWdlX2xpbWl0ID0g c2xhYi0+b2JqZWN0cyAqIHMtPnNpemU7CiAJc3RhcnQgPSBmaXh1cF9yZWRfbGVmdChzLCBzbGFi X2FkZHJlc3Moc2xhYikpOwpkaWZmIC0tZ2l0IGEvbmV0LzgwMi9nYXJwLmMgYi9uZXQvODAyL2dh cnAuYwppbmRleCBmNjAxMmY4ZTU5ZjAuLmZjOWViMDJhOTEyZiAxMDA2NDQKLS0tIGEvbmV0Lzgw Mi9nYXJwLmMKKysrIGIvbmV0LzgwMi9nYXJwLmMKQEAgLTQwNyw3ICs0MDcsNyBAQCBzdGF0aWMg dm9pZCBnYXJwX2pvaW5fdGltZXJfYXJtKHN0cnVjdCBnYXJwX2FwcGxpY2FudCAqYXBwKQogewog CXVuc2lnbmVkIGxvbmcgZGVsYXk7CiAKLQlkZWxheSA9ICh1NjQpbXNlY3NfdG9famlmZmllcyhn YXJwX2pvaW5fdGltZSkgKiBwcmFuZG9tX3UzMigpID4+IDMyOworCWRlbGF5ID0gcHJhbmRvbV91 MzJfbWF4KG1zZWNzX3RvX2ppZmZpZXMoZ2FycF9qb2luX3RpbWUpKTsKIAltb2RfdGltZXIoJmFw cC0+am9pbl90aW1lciwgamlmZmllcyArIGRlbGF5KTsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0Lzgw Mi9tcnAuYyBiL25ldC84MDIvbXJwLmMKaW5kZXggMzVlMDRjYzUzOTBjLi4xNTVmNzRkOGIxNGYg MTAwNjQ0Ci0tLSBhL25ldC84MDIvbXJwLmMKKysrIGIvbmV0LzgwMi9tcnAuYwpAQCAtNTkyLDcg KzU5Miw3IEBAIHN0YXRpYyB2b2lkIG1ycF9qb2luX3RpbWVyX2FybShzdHJ1Y3QgbXJwX2FwcGxp Y2FudCAqYXBwKQogewogCXVuc2lnbmVkIGxvbmcgZGVsYXk7CiAKLQlkZWxheSA9ICh1NjQpbXNl Y3NfdG9famlmZmllcyhtcnBfam9pbl90aW1lKSAqIHByYW5kb21fdTMyKCkgPj4gMzI7CisJZGVs YXkgPSBwcmFuZG9tX3UzMl9tYXgobXNlY3NfdG9famlmZmllcyhtcnBfam9pbl90aW1lKSk7CiAJ bW9kX3RpbWVyKCZhcHAtPmpvaW5fdGltZXIsIGppZmZpZXMgKyBkZWxheSk7CiB9CiAKZGlmZiAt LWdpdCBhL25ldC9jZXBoL21vbl9jbGllbnQuYyBiL25ldC9jZXBoL21vbl9jbGllbnQuYwppbmRl eCA2YTY4OThlZTQwNDkuLmRiNjAyMTdmOTExYiAxMDA2NDQKLS0tIGEvbmV0L2NlcGgvbW9uX2Ns aWVudC5jCisrKyBiL25ldC9jZXBoL21vbl9jbGllbnQuYwpAQCAtMjIyLDcgKzIyMiw3IEBAIHN0 YXRpYyB2b2lkIHBpY2tfbmV3X21vbihzdHJ1Y3QgY2VwaF9tb25fY2xpZW50ICptb25jKQogCQkJ CW1heC0tOwogCQl9CiAKLQkJbiA9IHByYW5kb21fdTMyKCkgJSBtYXg7CisJCW4gPSBwcmFuZG9t X3UzMl9tYXgobWF4KTsKIAkJaWYgKG8gPj0gMCAmJiBuID49IG8pCiAJCQluKys7CiAKZGlmZiAt LWdpdCBhL25ldC9jZXBoL29zZF9jbGllbnQuYyBiL25ldC9jZXBoL29zZF9jbGllbnQuYwppbmRl eCA4N2I4ODNjN2JmZDYuLjRlNGYxZTRiYzI2NSAxMDA2NDQKLS0tIGEvbmV0L2NlcGgvb3NkX2Ns aWVudC5jCisrKyBiL25ldC9jZXBoL29zZF9jbGllbnQuYwpAQCAtMTQ3OSw3ICsxNDc5LDcgQEAg c3RhdGljIGJvb2wgdGFyZ2V0X3Nob3VsZF9iZV9wYXVzZWQoc3RydWN0IGNlcGhfb3NkX2NsaWVu dCAqb3NkYywKIAogc3RhdGljIGludCBwaWNrX3JhbmRvbV9yZXBsaWNhKGNvbnN0IHN0cnVjdCBj ZXBoX29zZHMgKmFjdGluZykKIHsKLQlpbnQgaSA9IHByYW5kb21fdTMyKCkgJSBhY3RpbmctPnNp emU7CisJaW50IGkgPSBwcmFuZG9tX3UzMl9tYXgoYWN0aW5nLT5zaXplKTsKIAogCWRvdXQoIiVz IHBpY2tlZCBvc2QlZCwgcHJpbWFyeSBvc2QlZFxuIiwgX19mdW5jX18sCiAJICAgICBhY3Rpbmct Pm9zZHNbaV0sIGFjdGluZy0+cHJpbWFyeSk7CmRpZmYgLS1naXQgYS9uZXQvY29yZS9uZWlnaGJv dXIuYyBiL25ldC9jb3JlL25laWdoYm91ci5jCmluZGV4IGU5M2VkYjgxMDEwMy4uM2M0Nzg2Yjk5 OTA3IDEwMDY0NAotLS0gYS9uZXQvY29yZS9uZWlnaGJvdXIuYworKysgYi9uZXQvY29yZS9uZWln aGJvdXIuYwpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyB2b2lkIG5laWdoX2NsZWFudXBfYW5k X3JlbGVhc2Uoc3RydWN0IG5laWdoYm91ciAqbmVpZ2gpCiAKIHVuc2lnbmVkIGxvbmcgbmVpZ2hf cmFuZF9yZWFjaF90aW1lKHVuc2lnbmVkIGxvbmcgYmFzZSkKIHsKLQlyZXR1cm4gYmFzZSA/IChw cmFuZG9tX3UzMigpICUgYmFzZSkgKyAoYmFzZSA+PiAxKSA6IDA7CisJcmV0dXJuIGJhc2UgPyBw cmFuZG9tX3UzMl9tYXgoYmFzZSkgKyAoYmFzZSA+PiAxKSA6IDA7CiB9CiBFWFBPUlRfU1lNQk9M KG5laWdoX3JhbmRfcmVhY2hfdGltZSk7CiAKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3BrdGdlbi5j IGIvbmV0L2NvcmUvcGt0Z2VuLmMKaW5kZXggODg5MDZiYTZkOWE3Li41Y2E0Zjk1MzAzNGMgMTAw NjQ0Ci0tLSBhL25ldC9jb3JlL3BrdGdlbi5jCisrKyBiL25ldC9jb3JlL3BrdGdlbi5jCkBAIC0y MzI0LDcgKzIzMjQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBmX3BpY2soc3RydWN0IHBrdGdlbl9k ZXYgKnBrdF9kZXYpCiAJCQkJcGt0X2Rldi0+Y3VyZmwgPSAwOyAvKnJlc2V0ICovCiAJCX0KIAl9 IGVsc2UgewotCQlmbG93ID0gcHJhbmRvbV91MzIoKSAlIHBrdF9kZXYtPmNmbG93czsKKwkJZmxv dyA9IHByYW5kb21fdTMyX21heChwa3RfZGV2LT5jZmxvd3MpOwogCQlwa3RfZGV2LT5jdXJmbCA9 IGZsb3c7CiAKIAkJaWYgKHBrdF9kZXYtPmZsb3dzW2Zsb3ddLmNvdW50ID4gcGt0X2Rldi0+bGZs b3cpIHsKQEAgLTIzODAsMTAgKzIzODAsOSBAQCBzdGF0aWMgdm9pZCBzZXRfY3VyX3F1ZXVlX21h cChzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldikKIAllbHNlIGlmIChwa3RfZGV2LT5xdWV1ZV9t YXBfbWluIDw9IHBrdF9kZXYtPnF1ZXVlX21hcF9tYXgpIHsKIAkJX191MTYgdDsKIAkJaWYgKHBr dF9kZXYtPmZsYWdzICYgRl9RVUVVRV9NQVBfUk5EKSB7Ci0JCQl0ID0gcHJhbmRvbV91MzIoKSAl Ci0JCQkJKHBrdF9kZXYtPnF1ZXVlX21hcF9tYXggLQotCQkJCSBwa3RfZGV2LT5xdWV1ZV9tYXBf bWluICsgMSkKLQkJCQkrIHBrdF9kZXYtPnF1ZXVlX21hcF9taW47CisJCQl0ID0gcHJhbmRvbV91 MzJfbWF4KHBrdF9kZXYtPnF1ZXVlX21hcF9tYXggLQorCQkJCQkgICAgcGt0X2Rldi0+cXVldWVf bWFwX21pbiArIDEpICsKKwkJCSAgICBwa3RfZGV2LT5xdWV1ZV9tYXBfbWluOwogCQl9IGVsc2Ug ewogCQkJdCA9IHBrdF9kZXYtPmN1cl9xdWV1ZV9tYXAgKyAxOwogCQkJaWYgKHQgPiBwa3RfZGV2 LT5xdWV1ZV9tYXBfbWF4KQpAQCAtMjQxMiw3ICsyNDExLDcgQEAgc3RhdGljIHZvaWQgbW9kX2N1 cl9oZWFkZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KQogCQlfX3UzMiB0bXA7CiAKIAkJ aWYgKHBrdF9kZXYtPmZsYWdzICYgRl9NQUNTUkNfUk5EKQotCQkJbWMgPSBwcmFuZG9tX3UzMigp ICUgcGt0X2Rldi0+c3JjX21hY19jb3VudDsKKwkJCW1jID0gcHJhbmRvbV91MzJfbWF4KHBrdF9k ZXYtPnNyY19tYWNfY291bnQpOwogCQllbHNlIHsKIAkJCW1jID0gcGt0X2Rldi0+Y3VyX3NyY19t YWNfb2Zmc2V0Kys7CiAJCQlpZiAocGt0X2Rldi0+Y3VyX3NyY19tYWNfb2Zmc2V0ID49CkBAIC0y NDM4LDcgKzI0MzcsNyBAQCBzdGF0aWMgdm9pZCBtb2RfY3VyX2hlYWRlcnMoc3RydWN0IHBrdGdl bl9kZXYgKnBrdF9kZXYpCiAJCV9fdTMyIHRtcDsKIAogCQlpZiAocGt0X2Rldi0+ZmxhZ3MgJiBG X01BQ0RTVF9STkQpCi0JCQltYyA9IHByYW5kb21fdTMyKCkgJSBwa3RfZGV2LT5kc3RfbWFjX2Nv dW50OworCQkJbWMgPSBwcmFuZG9tX3UzMl9tYXgocGt0X2Rldi0+ZHN0X21hY19jb3VudCk7CiAK IAkJZWxzZSB7CiAJCQltYyA9IHBrdF9kZXYtPmN1cl9kc3RfbWFjX29mZnNldCsrOwpAQCAtMjQ3 MCwxOCArMjQ2OSwxOCBAQCBzdGF0aWMgdm9pZCBtb2RfY3VyX2hlYWRlcnMoc3RydWN0IHBrdGdl bl9kZXYgKnBrdF9kZXYpCiAJfQogCiAJaWYgKChwa3RfZGV2LT5mbGFncyAmIEZfVklEX1JORCkg JiYgKHBrdF9kZXYtPnZsYW5faWQgIT0gMHhmZmZmKSkgewotCQlwa3RfZGV2LT52bGFuX2lkID0g cHJhbmRvbV91MzIoKSAmICg0MDk2IC0gMSk7CisJCXBrdF9kZXYtPnZsYW5faWQgPSBwcmFuZG9t X3UzMl9tYXgoNDA5Nik7CiAJfQogCiAJaWYgKChwa3RfZGV2LT5mbGFncyAmIEZfU1ZJRF9STkQp ICYmIChwa3RfZGV2LT5zdmxhbl9pZCAhPSAweGZmZmYpKSB7Ci0JCXBrdF9kZXYtPnN2bGFuX2lk ID0gcHJhbmRvbV91MzIoKSAmICg0MDk2IC0gMSk7CisJCXBrdF9kZXYtPnN2bGFuX2lkID0gcHJh bmRvbV91MzJfbWF4KDQwOTYpOwogCX0KIAogCWlmIChwa3RfZGV2LT51ZHBfc3JjX21pbiA8IHBr dF9kZXYtPnVkcF9zcmNfbWF4KSB7CiAJCWlmIChwa3RfZGV2LT5mbGFncyAmIEZfVURQU1JDX1JO RCkKLQkJCXBrdF9kZXYtPmN1cl91ZHBfc3JjID0gcHJhbmRvbV91MzIoKSAlCi0JCQkJKHBrdF9k ZXYtPnVkcF9zcmNfbWF4IC0gcGt0X2Rldi0+dWRwX3NyY19taW4pCi0JCQkJKyBwa3RfZGV2LT51 ZHBfc3JjX21pbjsKKwkJCXBrdF9kZXYtPmN1cl91ZHBfc3JjID0gcHJhbmRvbV91MzJfbWF4KAor CQkJCXBrdF9kZXYtPnVkcF9zcmNfbWF4IC0gcGt0X2Rldi0+dWRwX3NyY19taW4pICsKKwkJCQlw a3RfZGV2LT51ZHBfc3JjX21pbjsKIAogCQllbHNlIHsKIAkJCXBrdF9kZXYtPmN1cl91ZHBfc3Jj Kys7CkBAIC0yNDkyLDkgKzI0OTEsOSBAQCBzdGF0aWMgdm9pZCBtb2RfY3VyX2hlYWRlcnMoc3Ry dWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpCiAKIAlpZiAocGt0X2Rldi0+dWRwX2RzdF9taW4gPCBw a3RfZGV2LT51ZHBfZHN0X21heCkgewogCQlpZiAocGt0X2Rldi0+ZmxhZ3MgJiBGX1VEUERTVF9S TkQpIHsKLQkJCXBrdF9kZXYtPmN1cl91ZHBfZHN0ID0gcHJhbmRvbV91MzIoKSAlCi0JCQkJKHBr dF9kZXYtPnVkcF9kc3RfbWF4IC0gcGt0X2Rldi0+dWRwX2RzdF9taW4pCi0JCQkJKyBwa3RfZGV2 LT51ZHBfZHN0X21pbjsKKwkJCXBrdF9kZXYtPmN1cl91ZHBfZHN0ID0gcHJhbmRvbV91MzJfbWF4 KAorCQkJCXBrdF9kZXYtPnVkcF9kc3RfbWF4IC0gcGt0X2Rldi0+dWRwX2RzdF9taW4pICsKKwkJ CQlwa3RfZGV2LT51ZHBfZHN0X21pbjsKIAkJfSBlbHNlIHsKIAkJCXBrdF9kZXYtPmN1cl91ZHBf ZHN0Kys7CiAJCQlpZiAocGt0X2Rldi0+Y3VyX3VkcF9kc3QgPj0gcGt0X2Rldi0+dWRwX2RzdF9t YXgpCkBAIC0yNTA5LDcgKzI1MDgsNyBAQCBzdGF0aWMgdm9pZCBtb2RfY3VyX2hlYWRlcnMoc3Ry dWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpCiAJCWlmIChpbW4gPCBpbXgpIHsKIAkJCV9fdTMyIHQ7 CiAJCQlpZiAocGt0X2Rldi0+ZmxhZ3MgJiBGX0lQU1JDX1JORCkKLQkJCQl0ID0gcHJhbmRvbV91 MzIoKSAlIChpbXggLSBpbW4pICsgaW1uOworCQkJCXQgPSBwcmFuZG9tX3UzMl9tYXgoaW14IC0g aW1uKSArIGltbjsKIAkJCWVsc2UgewogCQkJCXQgPSBudG9obChwa3RfZGV2LT5jdXJfc2FkZHIp OwogCQkJCXQrKzsKQEAgLTI1MzEsOCArMjUzMCw4IEBAIHN0YXRpYyB2b2lkIG1vZF9jdXJfaGVh ZGVycyhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldikKIAkJCQlpZiAocGt0X2Rldi0+ZmxhZ3Mg JiBGX0lQRFNUX1JORCkgewogCiAJCQkJCWRvIHsKLQkJCQkJCXQgPSBwcmFuZG9tX3UzMigpICUK LQkJCQkJCQkoaW14IC0gaW1uKSArIGltbjsKKwkJCQkJCXQgPSBwcmFuZG9tX3UzMl9tYXgoaW14 IC0gaW1uKSArCisJCQkJCQkgICAgaW1uOwogCQkJCQkJcyA9IGh0b25sKHQpOwogCQkJCQl9IHdo aWxlIChpcHY0X2lzX2xvb3BiYWNrKHMpIHx8CiAJCQkJCQlpcHY0X2lzX211bHRpY2FzdChzKSB8 fApAQCAtMjU3OSw5ICsyNTc4LDkgQEAgc3RhdGljIHZvaWQgbW9kX2N1cl9oZWFkZXJzKHN0cnVj dCBwa3RnZW5fZGV2ICpwa3RfZGV2KQogCWlmIChwa3RfZGV2LT5taW5fcGt0X3NpemUgPCBwa3Rf ZGV2LT5tYXhfcGt0X3NpemUpIHsKIAkJX191MzIgdDsKIAkJaWYgKHBrdF9kZXYtPmZsYWdzICYg Rl9UWFNJWkVfUk5EKSB7Ci0JCQl0ID0gcHJhbmRvbV91MzIoKSAlCi0JCQkJKHBrdF9kZXYtPm1h eF9wa3Rfc2l6ZSAtIHBrdF9kZXYtPm1pbl9wa3Rfc2l6ZSkKLQkJCQkrIHBrdF9kZXYtPm1pbl9w a3Rfc2l6ZTsKKwkJCXQgPSBwcmFuZG9tX3UzMl9tYXgocGt0X2Rldi0+bWF4X3BrdF9zaXplIC0K KwkJCQkJICAgIHBrdF9kZXYtPm1pbl9wa3Rfc2l6ZSkgKworCQkJICAgIHBrdF9kZXYtPm1pbl9w a3Rfc2l6ZTsKIAkJfSBlbHNlIHsKIAkJCXQgPSBwa3RfZGV2LT5jdXJfcGt0X3NpemUgKyAxOwog CQkJaWYgKHQgPiBwa3RfZGV2LT5tYXhfcGt0X3NpemUpCkBAIC0yNTkwLDcgKzI1ODksNyBAQCBz dGF0aWMgdm9pZCBtb2RfY3VyX2hlYWRlcnMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpCiAJ CXBrdF9kZXYtPmN1cl9wa3Rfc2l6ZSA9IHQ7CiAJfSBlbHNlIGlmIChwa3RfZGV2LT5uX2ltaXhf ZW50cmllcyA+IDApIHsKIAkJc3RydWN0IGltaXhfcGt0ICplbnRyeTsKLQkJX191MzIgdCA9IHBy YW5kb21fdTMyKCkgJSBJTUlYX1BSRUNJU0lPTjsKKwkJX191MzIgdCA9IHByYW5kb21fdTMyX21h eChJTUlYX1BSRUNJU0lPTik7CiAJCV9fdTggZW50cnlfaW5kZXggPSBwa3RfZGV2LT5pbWl4X2Rp c3RyaWJ1dGlvblt0XTsKIAogCQllbnRyeSA9ICZwa3RfZGV2LT5pbWl4X2VudHJpZXNbZW50cnlf aW5kZXhdOwpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc3RyZWFtLmMgYi9uZXQvY29yZS9zdHJlYW0u YwppbmRleCAxMTA1MDU3Y2UwMGEuLjc1ZmRlZDg0OTVmNSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUv c3RyZWFtLmMKKysrIGIvbmV0L2NvcmUvc3RyZWFtLmMKQEAgLTEyMyw3ICsxMjMsNyBAQCBpbnQg c2tfc3RyZWFtX3dhaXRfbWVtb3J5KHN0cnVjdCBzb2NrICpzaywgbG9uZyAqdGltZW9fcCkKIAlE RUZJTkVfV0FJVF9GVU5DKHdhaXQsIHdva2VuX3dha2VfZnVuY3Rpb24pOwogCiAJaWYgKHNrX3N0 cmVhbV9tZW1vcnlfZnJlZShzaykpCi0JCWN1cnJlbnRfdGltZW8gPSB2bV93YWl0ID0gKHByYW5k b21fdTMyKCkgJSAoSFogLyA1KSkgKyAyOworCQljdXJyZW50X3RpbWVvID0gdm1fd2FpdCA9IHBy YW5kb21fdTMyX21heChIWiAvIDUpICsgMjsKIAogCWFkZF93YWl0X3F1ZXVlKHNrX3NsZWVwKHNr KSwgJndhaXQpOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pZ21wLmMgYi9uZXQvaXB2NC9pZ21w LmMKaW5kZXggZGYwNjYwZDgxOGFjLi44MWJlM2UwZjBlNzAgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0 L2lnbXAuYworKysgYi9uZXQvaXB2NC9pZ21wLmMKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMg dm9pZCBpZ21wX3N0b3BfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltKQogLyogSXQgbXVzdCBi ZSBjYWxsZWQgd2l0aCBsb2NrZWQgaW0tPmxvY2sgKi8KIHN0YXRpYyB2b2lkIGlnbXBfc3RhcnRf dGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltLCBpbnQgbWF4X2RlbGF5KQogewotCWludCB0diA9 IHByYW5kb21fdTMyKCkgJSBtYXhfZGVsYXk7CisJaW50IHR2ID0gcHJhbmRvbV91MzJfbWF4KG1h eF9kZWxheSk7CiAKIAlpbS0+dG1fcnVubmluZyA9IDE7CiAJaWYgKCFtb2RfdGltZXIoJmltLT50 aW1lciwgamlmZmllcyt0disyKSkKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgdm9pZCBpZ21w X3N0YXJ0X3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSkKIAogc3Rh dGljIHZvaWQgaWdtcF9ncV9zdGFydF90aW1lcihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpCiB7 Ci0JaW50IHR2ID0gcHJhbmRvbV91MzIoKSAlIGluX2Rldi0+bXJfbWF4ZGVsYXk7CisJaW50IHR2 ID0gcHJhbmRvbV91MzJfbWF4KGluX2Rldi0+bXJfbWF4ZGVsYXkpOwogCXVuc2lnbmVkIGxvbmcg ZXhwID0gamlmZmllcyArIHR2ICsgMjsKIAogCWlmIChpbl9kZXYtPm1yX2dxX3J1bm5pbmcgJiYK QEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgdm9pZCBpZ21wX2dxX3N0YXJ0X3RpbWVyKHN0cnVj dCBpbl9kZXZpY2UgKmluX2RldikKIAogc3RhdGljIHZvaWQgaWdtcF9pZmNfc3RhcnRfdGltZXIo c3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBpbnQgZGVsYXkpCiB7Ci0JaW50IHR2ID0gcHJhbmRv bV91MzIoKSAlIGRlbGF5OworCWludCB0diA9IHByYW5kb21fdTMyX21heChkZWxheSk7CiAKIAlp ZiAoIW1vZF90aW1lcigmaW5fZGV2LT5tcl9pZmNfdGltZXIsIGppZmZpZXMrdHYrMikpCiAJCWlu X2Rldl9ob2xkKGluX2Rldik7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25f c29jay5jIGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYwppbmRleCBlYmNhODYwZTEx M2YuLjRlODRlZDIxZDE2ZiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3Nv Y2suYworKysgYi9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jCkBAIC0zMTQsNyArMzE0 LDcgQEAgaW5ldF9jc2tfZmluZF9vcGVuX3BvcnQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1 Y3QgaW5ldF9iaW5kX2J1Y2tldCAqKnRiX3JldCwKIAlpZiAobGlrZWx5KHJlbWFpbmluZyA+IDEp KQogCQlyZW1haW5pbmcgJj0gfjFVOwogCi0Jb2Zmc2V0ID0gcHJhbmRvbV91MzIoKSAlIHJlbWFp bmluZzsKKwlvZmZzZXQgPSBwcmFuZG9tX3UzMl9tYXgocmVtYWluaW5nKTsKIAkvKiBfX2luZXRf aGFzaF9jb25uZWN0KCkgZmF2b3JzIHBvcnRzIGhhdmluZyBAbG93IHBhcml0eQogCSAqIFdlIGRv IHRoZSBvcHBvc2l0ZSB0byBub3QgcG9sbHV0ZSBjb25uZWN0KCkgdXNlcnMuCiAJICovCmRpZmYg LS1naXQgYS9uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYyBiL25ldC9pcHY0L2luZXRfaGFzaHRh Ymxlcy5jCmluZGV4IGEwYWQzNGU0ZjA0NC4uZDNkYzI4MTU2NjIyIDEwMDY0NAotLS0gYS9uZXQv aXB2NC9pbmV0X2hhc2h0YWJsZXMuYworKysgYi9uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYwpA QCAtMTAzNyw3ICsxMDM3LDcgQEAgaW50IF9faW5ldF9oYXNoX2Nvbm5lY3Qoc3RydWN0IGluZXRf dGltZXdhaXRfZGVhdGhfcm93ICpkZWF0aF9yb3csCiAJICogb24gbG93IGNvbnRlbnRpb24gdGhl IHJhbmRvbW5lc3MgaXMgbWF4aW1hbCBhbmQgb24gaGlnaCBjb250ZW50aW9uCiAJICogaXQgbWF5 IGJlIGluZXhpc3RlbnQuCiAJICovCi0JaSA9IG1heF90KGludCwgaSwgKHByYW5kb21fdTMyKCkg JiA3KSAqIDIpOworCWkgPSBtYXhfdChpbnQsIGksIHByYW5kb21fdTMyX21heCg4KSAqIDIpOwog CVdSSVRFX09OQ0UodGFibGVfcGVydHVyYltpbmRleF0sIFJFQURfT05DRSh0YWJsZV9wZXJ0dXJi W2luZGV4XSkgKyBpICsgMik7CiAKIAkvKiBIZWFkIGxvY2sgc3RpbGwgaGVsZCBhbmQgYmgncyBk aXNhYmxlZCAqLwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmNvbmYuYyBiL25ldC9pcHY2L2Fk ZHJjb25mLmMKaW5kZXggMTBjZTg2YmYyMjhlLi40MTc4MzRiNzE2OWQgMTAwNjQ0Ci0tLSBhL25l dC9pcHY2L2FkZHJjb25mLmMKKysrIGIvbmV0L2lwdjYvYWRkcmNvbmYuYwpAQCAtMTA0LDcgKzEw NCw3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGNzdGFtcF9kZWx0YSh1bnNpZ25lZCBsb25nIGNzdGFt cCkKIHN0YXRpYyBpbmxpbmUgczMyIHJmYzMzMTVfczE0X2JhY2tvZmZfaW5pdChzMzIgaXJ0KQog ewogCS8qIG11bHRpcGx5ICdpbml0aWFsIHJldHJhbnNtaXNzaW9uIHRpbWUnIGJ5IDAuOSAuLiAx LjEgKi8KLQl1NjQgdG1wID0gKDkwMDAwMCArIHByYW5kb21fdTMyKCkgJSAyMDAwMDEpICogKHU2 NClpcnQ7CisJdTY0IHRtcCA9ICg5MDAwMDAgKyBwcmFuZG9tX3UzMl9tYXgoMjAwMDAxKSkgKiAo dTY0KWlydDsKIAlkb19kaXYodG1wLCAxMDAwMDAwKTsKIAlyZXR1cm4gKHMzMil0bXA7CiB9CkBA IC0xMTIsMTEgKzExMiwxMSBAQCBzdGF0aWMgaW5saW5lIHMzMiByZmMzMzE1X3MxNF9iYWNrb2Zm X2luaXQoczMyIGlydCkKIHN0YXRpYyBpbmxpbmUgczMyIHJmYzMzMTVfczE0X2JhY2tvZmZfdXBk YXRlKHMzMiBydCwgczMyIG1ydCkKIHsKIAkvKiBtdWx0aXBseSAncmV0cmFuc21pc3Npb24gdGlt ZW91dCcgYnkgMS45IC4uIDIuMSAqLwotCXU2NCB0bXAgPSAoMTkwMDAwMCArIHByYW5kb21fdTMy KCkgJSAyMDAwMDEpICogKHU2NClydDsKKwl1NjQgdG1wID0gKDE5MDAwMDAgKyBwcmFuZG9tX3Uz Ml9tYXgoMjAwMDAxKSkgKiAodTY0KXJ0OwogCWRvX2Rpdih0bXAsIDEwMDAwMDApOwogCWlmICgo czMyKXRtcCA+IG1ydCkgewogCQkvKiBtdWx0aXBseSAnbWF4aW11bSByZXRyYW5zbWlzc2lvbiB0 aW1lJyBieSAwLjkgLi4gMS4xICovCi0JCXRtcCA9ICg5MDAwMDAgKyBwcmFuZG9tX3UzMigpICUg MjAwMDAxKSAqICh1NjQpbXJ0OworCQl0bXAgPSAoOTAwMDAwICsgcHJhbmRvbV91MzJfbWF4KDIw MDAwMSkpICogKHU2NCltcnQ7CiAJCWRvX2Rpdih0bXAsIDEwMDAwMDApOwogCX0KIAlyZXR1cm4g KHMzMil0bXA7CkBAIC0zOTY3LDcgKzM5NjcsNyBAQCBzdGF0aWMgdm9pZCBhZGRyY29uZl9kYWRf a2ljayhzdHJ1Y3QgaW5ldDZfaWZhZGRyICppZnApCiAJaWYgKGlmcC0+ZmxhZ3MgJiBJRkFfRl9P UFRJTUlTVElDKQogCQlyYW5kX251bSA9IDA7CiAJZWxzZQotCQlyYW5kX251bSA9IHByYW5kb21f dTMyKCkgJSAoaWRldi0+Y25mLnJ0cl9zb2xpY2l0X2RlbGF5ID8gOiAxKTsKKwkJcmFuZF9udW0g PSBwcmFuZG9tX3UzMl9tYXgoaWRldi0+Y25mLnJ0cl9zb2xpY2l0X2RlbGF5ID86IDEpOwogCiAJ bm9uY2UgPSAwOwogCWlmIChpZGV2LT5jbmYuZW5oYW5jZWRfZGFkIHx8CmRpZmYgLS1naXQgYS9u ZXQvaXB2Ni9tY2FzdC5jIGIvbmV0L2lwdjYvbWNhc3QuYwppbmRleCAwNTY2YWIwM2RkYmUuLjc4 NjAzODMyOTVkOCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvbWNhc3QuYworKysgYi9uZXQvaXB2Ni9t Y2FzdC5jCkBAIC0xMDUwLDcgKzEwNTAsNyBAQCBib29sIGlwdjZfY2hrX21jYXN0X2FkZHIoc3Ry dWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGluNl9hZGRyICpncm91cCwKIC8qIGNh bGxlZCB3aXRoIG1jX2xvY2sgKi8KIHN0YXRpYyB2b2lkIG1sZF9ncV9zdGFydF93b3JrKHN0cnVj dCBpbmV0Nl9kZXYgKmlkZXYpCiB7Ci0JdW5zaWduZWQgbG9uZyB0diA9IHByYW5kb21fdTMyKCkg JSBpZGV2LT5tY19tYXhkZWxheTsKKwl1bnNpZ25lZCBsb25nIHR2ID0gcHJhbmRvbV91MzJfbWF4 KGlkZXYtPm1jX21heGRlbGF5KTsKIAogCWlkZXYtPm1jX2dxX3J1bm5pbmcgPSAxOwogCWlmICgh bW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsICZpZGV2LT5tY19ncV93b3JrLCB0diArIDIpKQpAQCAt MTA2OCw3ICsxMDY4LDcgQEAgc3RhdGljIHZvaWQgbWxkX2dxX3N0b3Bfd29yayhzdHJ1Y3QgaW5l dDZfZGV2ICppZGV2KQogLyogY2FsbGVkIHdpdGggbWNfbG9jayAqLwogc3RhdGljIHZvaWQgbWxk X2lmY19zdGFydF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHVuc2lnbmVkIGxvbmcgZGVs YXkpCiB7Ci0JdW5zaWduZWQgbG9uZyB0diA9IHByYW5kb21fdTMyKCkgJSBkZWxheTsKKwl1bnNp Z25lZCBsb25nIHR2ID0gcHJhbmRvbV91MzJfbWF4KGRlbGF5KTsKIAogCWlmICghbW9kX2RlbGF5 ZWRfd29yayhtbGRfd3EsICZpZGV2LT5tY19pZmNfd29yaywgdHYgKyAyKSkKIAkJaW42X2Rldl9o b2xkKGlkZXYpOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgc3RhdGljIHZvaWQgbWxkX2lmY19zdG9w X3dvcmsoc3RydWN0IGluZXQ2X2RldiAqaWRldikKIC8qIGNhbGxlZCB3aXRoIG1jX2xvY2sgKi8K IHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1 bnNpZ25lZCBsb25nIGRlbGF5KQogewotCXVuc2lnbmVkIGxvbmcgdHYgPSBwcmFuZG9tX3UzMigp ICUgZGVsYXk7CisJdW5zaWduZWQgbG9uZyB0diA9IHByYW5kb21fdTMyX21heChkZWxheSk7CiAK IAlpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmaWRldi0+bWNfZGFkX3dvcmssIHR2ICsg MikpCiAJCWluNl9kZXZfaG9sZChpZGV2KTsKQEAgLTExMzAsNyArMTEzMCw3IEBAIHN0YXRpYyB2 b2lkIGlnbXA2X2dyb3VwX3F1ZXJpZWQoc3RydWN0IGlmbWNhZGRyNiAqbWEsIHVuc2lnbmVkIGxv bmcgcmVzcHRpbWUpCiAJfQogCiAJaWYgKGRlbGF5ID49IHJlc3B0aW1lKQotCQlkZWxheSA9IHBy YW5kb21fdTMyKCkgJSByZXNwdGltZTsKKwkJZGVsYXkgPSBwcmFuZG9tX3UzMl9tYXgocmVzcHRp bWUpOwogCiAJaWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgJm1hLT5tY2Ffd29yaywgZGVs YXkpKQogCQlyZWZjb3VudF9pbmMoJm1hLT5tY2FfcmVmY250KTsKQEAgLTI1NzQsNyArMjU3NCw3 IEBAIHN0YXRpYyB2b2lkIGlnbXA2X2pvaW5fZ3JvdXAoc3RydWN0IGlmbWNhZGRyNiAqbWEpCiAK IAlpZ21wNl9zZW5kKCZtYS0+bWNhX2FkZHIsIG1hLT5pZGV2LT5kZXYsIElDTVBWNl9NR01fUkVQ T1JUKTsKIAotCWRlbGF5ID0gcHJhbmRvbV91MzIoKSAlIHVuc29saWNpdGVkX3JlcG9ydF9pbnRl cnZhbChtYS0+aWRldik7CisJZGVsYXkgPSBwcmFuZG9tX3UzMl9tYXgodW5zb2xpY2l0ZWRfcmVw b3J0X2ludGVydmFsKG1hLT5pZGV2KSk7CiAKIAlpZiAoY2FuY2VsX2RlbGF5ZWRfd29yaygmbWEt Pm1jYV93b3JrKSkgewogCQlyZWZjb3VudF9kZWMoJm1hLT5tY2FfcmVmY250KTsKZGlmZiAtLWdp dCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c190d29zLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMv aXBfdnNfdHdvcy5jCmluZGV4IGFjYjU1ZDgzOTNlZi4uZjI1NzlmYzljNzViIDEwMDY0NAotLS0g YS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jCisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2 cy9pcF92c190d29zLmMKQEAgLTcxLDggKzcxLDggQEAgc3RhdGljIHN0cnVjdCBpcF92c19kZXN0 ICppcF92c190d29zX3NjaGVkdWxlKHN0cnVjdCBpcF92c19zZXJ2aWNlICpzdmMsCiAJICogZnJv bSAwIHRvIHRvdGFsX3dlaWdodAogCSAqLwogCXRvdGFsX3dlaWdodCArPSAxOwotCXJ3ZWlnaHQx ID0gcHJhbmRvbV91MzIoKSAlIHRvdGFsX3dlaWdodDsKLQlyd2VpZ2h0MiA9IHByYW5kb21fdTMy KCkgJSB0b3RhbF93ZWlnaHQ7CisJcndlaWdodDEgPSBwcmFuZG9tX3UzMl9tYXgodG90YWxfd2Vp Z2h0KTsKKwlyd2VpZ2h0MiA9IHByYW5kb21fdTMyX21heCh0b3RhbF93ZWlnaHQpOwogCiAJLyog UGljayB0d28gd2VpZ2h0ZWQgc2VydmVycyAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGRl c3QsICZzdmMtPmRlc3RpbmF0aW9ucywgbl9saXN0KSB7CmRpZmYgLS1naXQgYS9uZXQvcGFja2V0 L2FmX3BhY2tldC5jIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwppbmRleCBkM2Y2ZGIzNTBkZTcu LjZjZThkZDE5ZjMzYyAxMDA2NDQKLS0tIGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYworKysgYi9u ZXQvcGFja2V0L2FmX3BhY2tldC5jCkBAIC0xMzUwLDcgKzEzNTAsNyBAQCBzdGF0aWMgYm9vbCBm YW5vdXRfZmxvd19pc19odWdlKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZm ICpza2IpCiAJCWlmIChSRUFEX09OQ0UoaGlzdG9yeVtpXSkgPT0gcnhoYXNoKQogCQkJY291bnQr KzsKIAotCXZpY3RpbSA9IHByYW5kb21fdTMyKCkgJSBST0xMT1ZFUl9ITEVOOworCXZpY3RpbSA9 IHByYW5kb21fdTMyX21heChST0xMT1ZFUl9ITEVOKTsKIAogCS8qIEF2b2lkIGRpcnR5aW5nIHRo ZSBjYWNoZSBsaW5lIGlmIHBvc3NpYmxlICovCiAJaWYgKFJFQURfT05DRShoaXN0b3J5W3ZpY3Rp bV0pICE9IHJ4aGFzaCkKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfZ2FjdC5jIGIvbmV0L3Nj aGVkL2FjdF9nYWN0LmMKaW5kZXggYWJlMWJjYzVjNzk3Li42MmQ2ODJiOTZiODggMTAwNjQ0Ci0t LSBhL25ldC9zY2hlZC9hY3RfZ2FjdC5jCisrKyBiL25ldC9zY2hlZC9hY3RfZ2FjdC5jCkBAIC0y NSw3ICsyNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfZ2FjdF9vcHM7CiBz dGF0aWMgaW50IGdhY3RfbmV0X3JhbmQoc3RydWN0IHRjZl9nYWN0ICpnYWN0KQogewogCXNtcF9y bWIoKTsgLyogY291cGxlZCB3aXRoIHNtcF93bWIoKSBpbiB0Y2ZfZ2FjdF9pbml0KCkgKi8KLQlp ZiAocHJhbmRvbV91MzIoKSAlIGdhY3QtPnRjZmdfcHZhbCkKKwlpZiAocHJhbmRvbV91MzJfbWF4 KGdhY3QtPnRjZmdfcHZhbCkpCiAJCXJldHVybiBnYWN0LT50Y2ZfYWN0aW9uOwogCXJldHVybiBn YWN0LT50Y2ZnX3BhY3Rpb247CiB9CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X3NhbXBsZS5j IGIvbmV0L3NjaGVkL2FjdF9zYW1wbGUuYwppbmRleCA1YmEzNmY3MGUzYTEuLjdhMjU0NzdmNWQ5 OSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9zYW1wbGUuYworKysgYi9uZXQvc2NoZWQvYWN0 X3NhbXBsZS5jCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGludCB0Y2Zfc2FtcGxlX2FjdChz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNfYWN0aW9uICphLAogCXBzYW1wbGVf Z3JvdXAgPSByY3VfZGVyZWZlcmVuY2VfYmgocy0+cHNhbXBsZV9ncm91cCk7CiAKIAkvKiByYW5k b21seSBzYW1wbGUgcGFja2V0cyBhY2NvcmRpbmcgdG8gcmF0ZSAqLwotCWlmIChwc2FtcGxlX2dy b3VwICYmIChwcmFuZG9tX3UzMigpICUgcy0+cmF0ZSA9PSAwKSkgeworCWlmIChwc2FtcGxlX2dy b3VwICYmIChwcmFuZG9tX3UzMl9tYXgocy0+cmF0ZSkgPT0gMCkpIHsKIAkJaWYgKCFza2JfYXRf dGNfaW5ncmVzcyhza2IpKSB7CiAJCQltZC5pbl9pZmluZGV4ID0gc2tiLT5za2JfaWlmOwogCQkJ bWQub3V0X2lmaW5kZXggPSBza2ItPmRldi0+aWZpbmRleDsKZGlmZiAtLWdpdCBhL25ldC9zY2hl ZC9zY2hfbmV0ZW0uYyBiL25ldC9zY2hlZC9zY2hfbmV0ZW0uYwppbmRleCAxOGY0MjczYTgzNWIu LmJhYjQ1YjNiMWZkYiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9uZXRlbS5jCisrKyBiL25l dC9zY2hlZC9zY2hfbmV0ZW0uYwpAQCAtNTEzLDggKzUxMyw4IEBAIHN0YXRpYyBpbnQgbmV0ZW1f ZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCwKIAkJCWdvdG8g ZmluaXNoX3NlZ3M7CiAJCX0KIAotCQlza2ItPmRhdGFbcHJhbmRvbV91MzIoKSAlIHNrYl9oZWFk bGVuKHNrYildIF49Ci0JCQkxPDwocHJhbmRvbV91MzIoKSAlIDgpOworCQlza2ItPmRhdGFbcHJh bmRvbV91MzJfbWF4KHNrYl9oZWFkbGVuKHNrYikpXSBePQorCQkJMTw8cHJhbmRvbV91MzJfbWF4 KDgpOwogCX0KIAogCWlmICh1bmxpa2VseShzY2gtPnEucWxlbiA+PSBzY2gtPmxpbWl0KSkgewpk aWZmIC0tZ2l0IGEvbmV0L3NjdHAvc29ja2V0LmMgYi9uZXQvc2N0cC9zb2NrZXQuYwppbmRleCAx NzFmMWEzNWQyMDUuLjFlMzU0YmE0NDk2MCAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc29ja2V0LmMK KysrIGIvbmV0L3NjdHAvc29ja2V0LmMKQEAgLTgzMTksNyArODMxOSw3IEBAIHN0YXRpYyBpbnQg c2N0cF9nZXRfcG9ydF9sb2NhbChzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHNjdHBfYWRkciAqYWRk cikKIAogCQlpbmV0X2dldF9sb2NhbF9wb3J0X3JhbmdlKG5ldCwgJmxvdywgJmhpZ2gpOwogCQly ZW1haW5pbmcgPSAoaGlnaCAtIGxvdykgKyAxOwotCQlyb3ZlciA9IHByYW5kb21fdTMyKCkgJSBy ZW1haW5pbmcgKyBsb3c7CisJCXJvdmVyID0gcHJhbmRvbV91MzJfbWF4KHJlbWFpbmluZykgKyBs b3c7CiAKIAkJZG8gewogCQkJcm92ZXIrKzsKZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMvY2FjaGUu YyBiL25ldC9zdW5ycGMvY2FjaGUuYwppbmRleCBjM2M2OTNiNTFjOTQuLmYwNzVhOWZiNWNjYyAx MDA2NDQKLS0tIGEvbmV0L3N1bnJwYy9jYWNoZS5jCisrKyBiL25ldC9zdW5ycGMvY2FjaGUuYwpA QCAtNjc3LDcgKzY3Nyw3IEBAIHN0YXRpYyB2b2lkIGNhY2hlX2xpbWl0X2RlZmVycyh2b2lkKQog CiAJLyogQ29uc2lkZXIgcmVtb3ZpbmcgZWl0aGVyIHRoZSBmaXJzdCBvciB0aGUgbGFzdCAqLwog CWlmIChjYWNoZV9kZWZlcl9jbnQgPiBERlJfTUFYKSB7Ci0JCWlmIChwcmFuZG9tX3UzMigpICYg MSkKKwkJaWYgKHByYW5kb21fdTMyX21heCgyKSkKIAkJCWRpc2NhcmQgPSBsaXN0X2VudHJ5KGNh Y2hlX2RlZmVyX2xpc3QubmV4dCwKIAkJCQkJICAgICBzdHJ1Y3QgY2FjaGVfZGVmZXJyZWRfcmVx LCByZWNlbnQpOwogCQllbHNlCmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnRzb2NrLmMgYi9u ZXQvc3VucnBjL3hwcnRzb2NrLmMKaW5kZXggZTk3NjAwN2Y0ZmQwLi5mNTVmZjUxNTViNmUgMTAw NjQ0Ci0tLSBhL25ldC9zdW5ycGMveHBydHNvY2suYworKysgYi9uZXQvc3VucnBjL3hwcnRzb2Nr LmMKQEAgLTE2MTksNyArMTYxOSw3IEBAIHN0YXRpYyBpbnQgeHNfZ2V0X3JhbmRvbV9wb3J0KHZv aWQpCiAJaWYgKG1heCA8IG1pbikKIAkJcmV0dXJuIC1FQUREUklOVVNFOwogCXJhbmdlID0gbWF4 IC0gbWluICsgMTsKLQlyYW5kID0gKHVuc2lnbmVkIHNob3J0KSBwcmFuZG9tX3UzMigpICUgcmFu Z2U7CisJcmFuZCA9IHByYW5kb21fdTMyX21heChyYW5nZSk7CiAJcmV0dXJuIHJhbmQgKyBtaW47 CiB9CiAKZGlmZiAtLWdpdCBhL25ldC90aXBjL3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmMK aW5kZXggZjFjM2I4ZWI0YjNkLi5lOTAyYjAxZWEzY2IgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL3Nv Y2tldC5jCisrKyBiL25ldC90aXBjL3NvY2tldC5jCkBAIC0zMDEwLDcgKzMwMTAsNyBAQCBzdGF0 aWMgaW50IHRpcGNfc2tfaW5zZXJ0KHN0cnVjdCB0aXBjX3NvY2sgKnRzaykKIAlzdHJ1Y3QgbmV0 ICpuZXQgPSBzb2NrX25ldChzayk7CiAJc3RydWN0IHRpcGNfbmV0ICp0biA9IG5ldF9nZW5lcmlj KG5ldCwgdGlwY19uZXRfaWQpOwogCXUzMiByZW1haW5pbmcgPSAoVElQQ19NQVhfUE9SVCAtIFRJ UENfTUlOX1BPUlQpICsgMTsKLQl1MzIgcG9ydGlkID0gcHJhbmRvbV91MzIoKSAlIHJlbWFpbmlu ZyArIFRJUENfTUlOX1BPUlQ7CisJdTMyIHBvcnRpZCA9IHByYW5kb21fdTMyX21heChyZW1haW5p bmcpICsgVElQQ19NSU5fUE9SVDsKIAogCXdoaWxlIChyZW1haW5pbmctLSkgewogCQlwb3J0aWQr KzsKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3Rh dGUuYwppbmRleCA4MWRmMzRiM2RhNmUuLjNkMmZlNzcxMmFjNSAxMDA2NDQKLS0tIGEvbmV0L3hm cm0veGZybV9zdGF0ZS5jCisrKyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuYwpAQCAtMjA3Miw3ICsy MDcyLDcgQEAgaW50IHhmcm1fYWxsb2Nfc3BpKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCB1MzIgbG93 LCB1MzIgaGlnaCkKIAl9IGVsc2UgewogCQl1MzIgc3BpID0gMDsKIAkJZm9yIChoID0gMDsgaCA8 IGhpZ2gtbG93KzE7IGgrKykgewotCQkJc3BpID0gbG93ICsgcHJhbmRvbV91MzIoKSUoaGlnaC1s b3crMSk7CisJCQlzcGkgPSBsb3cgKyBwcmFuZG9tX3UzMl9tYXgoaGlnaCAtIGxvdyArIDEpOwog CQkJeDAgPSB4ZnJtX3N0YXRlX2xvb2t1cChuZXQsIG1hcmssICZ4LT5pZC5kYWRkciwgaHRvbmwo c3BpKSwgeC0+aWQucHJvdG8sIHgtPnByb3BzLmZhbWlseSk7CiAJCQlpZiAoeDAgPT0gTlVMTCkg ewogCQkJCW5ld3NwaSA9IGh0b25sKHNwaSk7Ci0tIAoyLjM3LjMKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC11bSBtYWlsaW5nIGxpc3QKbGlu dXgtdW1AbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LXVtCg==