From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Jason A. Donenfeld" Subject: [PATCH v3 1/5] treewide: use prandom_u32_max() when possible Date: Thu, 6 Oct 2022 10:53:42 -0600 Message-Id: <20221006165346.73159-2-Jason@zx2c4.com> In-Reply-To: <20221006165346.73159-1-Jason@zx2c4.com> References: <20221006165346.73159-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 UmF0aGVyIHRoYW4gaW5jdXJyaW5nIGEgZGl2aXNpb24gb3IgcmVxdWVzdGluZyB0b28gbWFueSBy YW5kb20gYnl0ZXMgZm9yCnRoZSBnaXZlbiByYW5nZSwgdXNlIHRoZSBwcmFuZG9tX3UzMl9tYXgo KSBmdW5jdGlvbiwgd2hpY2ggb25seSB0YWtlcwp0aGUgbWluaW11bSByZXF1aXJlZCBieXRlcyBm cm9tIHRoZSBSTkcgYW5kIGF2b2lkcyBkaXZpc2lvbnMuCgpSZXZpZXdlZC1ieTogS2VlcyBDb29r IDxrZWVzY29va0BjaHJvbWl1bS5vcmc+ClJldmlld2VkLWJ5OiBLUCBTaW5naCA8a3BzaW5naEBr ZXJuZWwub3JnPgpSZXZpZXdlZC1ieTogQ2hyaXN0b3BoIELDtmhtd2FsZGVyIDxjaHJpc3RvcGgu Ym9laG13YWxkZXJAbGluYml0LmNvbT4gIyBmb3IgZHJiZApSZXZpZXdlZC1ieTogSmFuIEthcmEg PGphY2tAc3VzZS5jej4gIyBmb3IgZXh0MiwgZXh0NCwgYW5kIHNiaXRtYXAKU2lnbmVkLW9mZi1i eTogSmFzb24gQS4gRG9uZW5mZWxkIDxKYXNvbkB6eDJjNC5jb20+Ci0tLQogYXJjaC9hcm0va2Vy bmVsL3Byb2Nlc3MuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gvbG9vbmdhcmNo L2tlcm5lbC92ZHNvLmMgICAgICAgICAgICAgICAgICB8ICAyICstCiBhcmNoL21pcHMva2VybmVs L3Zkc28uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC9wYXJpc2Mva2VybmVs L3Zkc28uYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gvczM5MC9rZXJuZWwvdmRz by5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBhcmNoL3VtL2tlcm5lbC9wcm9jZXNz LmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC94ODYvZW50cnkvdmRzby92bWEu YyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gveDg2L2tlcm5lbC9tb2R1bGUuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBhcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jICAg ICAgICAgICAgICAgICAgICAgfCAgMiArLQogYXJjaC94ODYvbW0vcGF0L2NwYS10ZXN0LmMgICAg ICAgICAgICAgICAgICAgIHwgIDQgKy0KIGNyeXB0by90ZXN0bWdyLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDg2ICsrKysrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvYmxvY2svZHJi ZC9kcmJkX3JlY2VpdmVyLmMgICAgICAgICAgICB8ICA0ICstCiAuLi4vZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAgfCAgMiArLQogZHJpdmVycy9pbmZpbmliYW5kL2Nv cmUvY21hLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvaW5maW5pYmFuZC9ody9j eGdiNC9pZF90YWJsZS5jICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2luZmluaWJhbmQvaHcvaG5z L2huc19yb2NlX2FoLmMgICAgICAgfCAgNSArLQogZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJz L3J0cnMtY2x0LmMgICAgICAgIHwgIDMgKy0KIGRyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYyAg ICAgICAgICAgICAgICAgICB8ICAyICstCiAuLi4vdGVzdC1kcml2ZXJzL3ZpdmlkL3ZpdmlkLXRv dWNoLWNhcC5jICAgICAgfCAgMiArLQogZHJpdmVycy9tbWMvY29yZS9jb3JlLmMgICAgICAgICAg ICAgICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvbW1jL2hvc3QvZHdfbW1jLmMgICAgICAgICAg ICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kc2ltLmMgICAgICAg ICAgICAgICAgfCAgNCArLQogZHJpdmVycy9tdGQvdGVzdHMvbXRkX25hbmRlY2N0ZXN0LmMgICAg ICAgICAgIHwgMTAgKy0tCiBkcml2ZXJzL210ZC90ZXN0cy9zdHJlc3N0ZXN0LmMgICAgICAgICAg ICAgICAgfCAxNyArLS0tCiBkcml2ZXJzL210ZC91YmkvZGVidWcuYyAgICAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQogZHJpdmVycy9tdGQvdWJpL2RlYnVnLmggICAgICAgICAgICAgICAgICAg ICAgIHwgIDYgKy0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2NuaWMuYyAgICAgICAg ICB8ICAzICstCiAuLi4vY2hlbHNpby9pbmxpbmVfY3J5cHRvL2NodGxzL2NodGxzX2lvLmMgICAg fCAgNCArLQogZHJpdmVycy9uZXQvaGFtcmFkaW8vYmF5Y29tX2VwcC5jICAgICAgICAgICAgIHwg IDIgKy0KIGRyaXZlcnMvbmV0L2hhbXJhZGlvL2hkbGNkcnYuYyAgICAgICAgICAgICAgICB8ICAy ICstCiBkcml2ZXJzL25ldC9oYW1yYWRpby95YW0uYyAgICAgICAgICAgICAgICAgICAgfCAgMiAr LQogZHJpdmVycy9uZXQvcGh5L2F0ODAzeC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K IC4uLi9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgICAgICAgICB8ICAyICstCiAu Li4vbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYy1jdHh0LmMgfCAgMiArLQogZHJp dmVycy9zY3NpL2Zjb2UvZmNvZV9jdGxyLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGRyaXZl cnMvc2NzaS9xZWRpL3FlZGlfbWFpbi5jICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9jZXBo L2lub2RlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvY2VwaC9t ZHNtYXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL2V4dDIvaWFs bG9jLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstCiBmcy9leHQ0L2lhbGxv Yy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArLQogZnMvZXh0NC9zdXBlci5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKy0KIGZzL2YyZnMvZ2MuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9mMmZzL3NlZ21lbnQuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArLQogZnMvdWJpZnMvZGVidWcuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKy0KIGZzL3ViaWZzL2xwdF9jb21taXQuYyAg ICAgICAgICAgICAgICAgICAgICAgICB8IDE0ICstLQogZnMvdWJpZnMvdG5jX2NvbW1pdC5jICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL3hmcy9saWJ4ZnMveGZzX2FsbG9jLmMg ICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy94ZnMvbGlieGZzL3hmc19pYWxsb2MuYyAg ICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMveGZzL3hmc19lcnJvci5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KIGluY2x1ZGUvbGludXgvbm9kZW1hc2suaCAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBrZXJuZWwvYnBmL2NvcmUuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNCArLQoga2VybmVsL2xvY2tpbmcvdGVzdC13d19tdXRleC5jICAgICAg ICAgICAgICAgIHwgIDQgKy0KIGtlcm5lbC90aW1lL2Nsb2Nrc291cmNlLmMgICAgICAgICAgICAg ICAgICAgICB8ICAyICstCiBsaWIvZmF1bHQtaW5qZWN0LmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQogbGliL2ZpbmRfYml0X2JlbmNobWFyay5jICAgICAgICAgICAgICAgICAg ICAgIHwgIDQgKy0KIGxpYi9rb2JqZWN0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAyICstCiBsaWIvcmVlZF9zb2xvbW9uL3Rlc3RfcnNsaWIuYyAgICAgICAgICAgICAgICAg fCAgNiArLQogbGliL3NiaXRtYXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDQgKy0KIGxpYi90ZXN0LXN0cmluZ19oZWxwZXJzLmMgICAgICAgICAgICAgICAgICAgICB8ICAy ICstCiBsaWIvdGVzdF9oZXhkdW1wLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMCAr LS0KIGxpYi90ZXN0X2thc2FuLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICst CiBsaWIvdGVzdF9saXN0X3NvcnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQog bGliL3Rlc3Rfdm1hbGxvYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTcgKy0tLQog bW0vbWlncmF0ZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIG1t L3NsdWIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBuZXQv Y2VwaC9tb25fY2xpZW50LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L2Nl cGgvb3NkX2NsaWVudC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC9jb3Jl L25laWdoYm91ci5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBuZXQvY29yZS9w a3RnZW4uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0MyArKysrKy0tLS0tCiBuZXQv Y29yZS9zdHJlYW0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L2lw djQvaWdtcC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKy0KIG5ldC9pcHY0 L2luZXRfY29ubmVjdGlvbl9zb2NrLmMgICAgICAgICAgICAgICB8ICAyICstCiBuZXQvaXB2NC9p bmV0X2hhc2h0YWJsZXMuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L2lwdjYvYWRk cmNvbmYuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKy0KIG5ldC9pcHY2L21jYXN0 LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwICstLQogbmV0L25ldGZpbHRlci9p cHZzL2lwX3ZzX3R3b3MuYyAgICAgICAgICAgICAgIHwgIDQgKy0KIG5ldC9wYWNrZXQvYWZfcGFj a2V0LmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBuZXQvc2NoZWQvYWN0X2dhY3Qu YyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L3NjaGVkL2FjdF9zYW1wbGUu YyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC9zY2hlZC9zY2hfbmV0ZW0uYyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBuZXQvc2N0cC9zb2NrZXQuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L3N1bnJwYy9jYWNoZS5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIG5ldC9zdW5ycGMveHBydHNvY2suYyAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBuZXQvdGlwYy9zb2NrZXQuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgMiArLQogbmV0L3hmcm0veGZybV9zdGF0ZS5jICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIDIgKy0KIDg1IGZpbGVzIGNoYW5nZWQsIDIwNSBpbnNlcnRpb25zKCsp LCAyMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL3Byb2Nlc3Mu YyBiL2FyY2gvYXJtL2tlcm5lbC9wcm9jZXNzLmMKaW5kZXggM2Q5Y2FjZTYzODg0Li4zNTEyOWFl MzYwNjcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2tlcm5lbC9wcm9jZXNzLmMKKysrIGIvYXJjaC9h cm0va2VybmVsL3Byb2Nlc3MuYwpAQCAtMzc1LDcgKzM3NSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBs b25nIHNpZ3BhZ2VfYWRkcihjb25zdCBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAogCXNsb3RzID0g KChsYXN0IC0gZmlyc3QpID4+IFBBR0VfU0hJRlQpICsgMTsKIAotCW9mZnNldCA9IGdldF9yYW5k b21faW50KCkgJSBzbG90czsKKwlvZmZzZXQgPSBwcmFuZG9tX3UzMl9tYXgoc2xvdHMpOwogCiAJ YWRkciA9IGZpcnN0ICsgKG9mZnNldCA8PCBQQUdFX1NISUZUKTsKIApkaWZmIC0tZ2l0IGEvYXJj aC9sb29uZ2FyY2gva2VybmVsL3Zkc28uYyBiL2FyY2gvbG9vbmdhcmNoL2tlcm5lbC92ZHNvLmMK aW5kZXggZjMyYzM4YWJkNzkxLi44Yzk4MjYwNjI2NTIgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdh cmNoL2tlcm5lbC92ZHNvLmMKKysrIGIvYXJjaC9sb29uZ2FyY2gva2VybmVsL3Zkc28uYwpAQCAt NzgsNyArNzgsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyB2ZHNvX2Jhc2Uodm9pZCkKIAl1bnNp Z25lZCBsb25nIGJhc2UgPSBTVEFDS19UT1A7CiAKIAlpZiAoY3VycmVudC0+ZmxhZ3MgJiBQRl9S QU5ET01JWkUpIHsKLQkJYmFzZSArPSBnZXRfcmFuZG9tX2ludCgpICYgKFZEU09fUkFORE9NSVpF X1NJWkUgLSAxKTsKKwkJYmFzZSArPSBwcmFuZG9tX3UzMl9tYXgoVkRTT19SQU5ET01JWkVfU0la RSk7CiAJCWJhc2UgPSBQQUdFX0FMSUdOKGJhc2UpOwogCX0KIApkaWZmIC0tZ2l0IGEvYXJjaC9t aXBzL2tlcm5lbC92ZHNvLmMgYi9hcmNoL21pcHMva2VybmVsL3Zkc28uYwppbmRleCBiMmNjMmMy ZGQ0YmYuLjVmZDliZjFkNTk2YyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2tlcm5lbC92ZHNvLmMK KysrIGIvYXJjaC9taXBzL2tlcm5lbC92ZHNvLmMKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHVu c2lnbmVkIGxvbmcgdmRzb19iYXNlKHZvaWQpCiAJfQogCiAJaWYgKGN1cnJlbnQtPmZsYWdzICYg UEZfUkFORE9NSVpFKSB7Ci0JCWJhc2UgKz0gZ2V0X3JhbmRvbV9pbnQoKSAmIChWRFNPX1JBTkRP TUlaRV9TSVpFIC0gMSk7CisJCWJhc2UgKz0gcHJhbmRvbV91MzJfbWF4KFZEU09fUkFORE9NSVpF X1NJWkUpOwogCQliYXNlID0gUEFHRV9BTElHTihiYXNlKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2Fy Y2gvcGFyaXNjL2tlcm5lbC92ZHNvLmMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvdmRzby5jCmluZGV4 IDYzZGM0NGM0YzI0Ni4uNDdlNTk2MGEyZjk2IDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJu ZWwvdmRzby5jCisrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC92ZHNvLmMKQEAgLTc1LDcgKzc1LDcg QEAgaW50IGFyY2hfc2V0dXBfYWRkaXRpb25hbF9wYWdlcyhzdHJ1Y3QgbGludXhfYmlucHJtICpi cHJtLAogCiAJbWFwX2Jhc2UgPSBtbS0+bW1hcF9iYXNlOwogCWlmIChjdXJyZW50LT5mbGFncyAm IFBGX1JBTkRPTUlaRSkKLQkJbWFwX2Jhc2UgLT0gKGdldF9yYW5kb21faW50KCkgJiAweDFmKSAq IFBBR0VfU0laRTsKKwkJbWFwX2Jhc2UgLT0gcHJhbmRvbV91MzJfbWF4KDB4MjApICogUEFHRV9T SVpFOwogCiAJdmRzb190ZXh0X3N0YXJ0ID0gZ2V0X3VubWFwcGVkX2FyZWEoTlVMTCwgbWFwX2Jh c2UsIHZkc29fdGV4dF9sZW4sIDAsIDApOwogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVs L3Zkc28uYyBiL2FyY2gvczM5MC9rZXJuZWwvdmRzby5jCmluZGV4IDUwNzVjZGU3N2IyOS4uYTZi NWRiNTljZjQwIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva2VybmVsL3Zkc28uYworKysgYi9hcmNo L3MzOTAva2VybmVsL3Zkc28uYwpAQCAtMjI2LDcgKzIyNiw3IEBAIHN0YXRpYyB1bnNpZ25lZCBs b25nIHZkc29fYWRkcih1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGxlbikKIAll bmQgLT0gbGVuOwogCiAJaWYgKGVuZCA+IHN0YXJ0KSB7Ci0JCW9mZnNldCA9IGdldF9yYW5kb21f aW50KCkgJSAoKChlbmQgLSBzdGFydCkgPj4gUEFHRV9TSElGVCkgKyAxKTsKKwkJb2Zmc2V0ID0g cHJhbmRvbV91MzJfbWF4KCgoZW5kIC0gc3RhcnQpID4+IFBBR0VfU0hJRlQpICsgMSk7CiAJCWFk ZHIgPSBzdGFydCArIChvZmZzZXQgPDwgUEFHRV9TSElGVCk7CiAJfSBlbHNlIHsKIAkJYWRkciA9 IHN0YXJ0OwpkaWZmIC0tZ2l0IGEvYXJjaC91bS9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC91bS9r ZXJuZWwvcHJvY2Vzcy5jCmluZGV4IDgwYjkwYjEyNzZhMS4uMDEwYmM0MjJhMDlkIDEwMDY0NAot LS0gYS9hcmNoL3VtL2tlcm5lbC9wcm9jZXNzLmMKKysrIGIvYXJjaC91bS9rZXJuZWwvcHJvY2Vz cy5jCkBAIC0zNTYsNyArMzU2LDcgQEAgaW50IHNpbmdsZXN0ZXBwaW5nKHZvaWQgKiB0KQogdW5z aWduZWQgbG9uZyBhcmNoX2FsaWduX3N0YWNrKHVuc2lnbmVkIGxvbmcgc3ApCiB7CiAJaWYgKCEo Y3VycmVudC0+cGVyc29uYWxpdHkgJiBBRERSX05PX1JBTkRPTUlaRSkgJiYgcmFuZG9taXplX3Zh X3NwYWNlKQotCQlzcCAtPSBnZXRfcmFuZG9tX2ludCgpICUgODE5MjsKKwkJc3AgLT0gcHJhbmRv bV91MzJfbWF4KDgxOTIpOwogCXJldHVybiBzcCAmIH4weGY7CiB9CiAjZW5kaWYKZGlmZiAtLWdp dCBhL2FyY2gveDg2L2VudHJ5L3Zkc28vdm1hLmMgYi9hcmNoL3g4Ni9lbnRyeS92ZHNvL3ZtYS5j CmluZGV4IDEwMDBkNDU3YzMzMi4uYjY0YzU4YzY5NDBmIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9l bnRyeS92ZHNvL3ZtYS5jCisrKyBiL2FyY2gveDg2L2VudHJ5L3Zkc28vdm1hLmMKQEAgLTMyNyw3 ICszMjcsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyB2ZHNvX2FkZHIodW5zaWduZWQgbG9uZyBz dGFydCwgdW5zaWduZWQgbGVuKQogCWVuZCAtPSBsZW47CiAKIAlpZiAoZW5kID4gc3RhcnQpIHsK LQkJb2Zmc2V0ID0gZ2V0X3JhbmRvbV9pbnQoKSAlICgoKGVuZCAtIHN0YXJ0KSA+PiBQQUdFX1NI SUZUKSArIDEpOworCQlvZmZzZXQgPSBwcmFuZG9tX3UzMl9tYXgoKChlbmQgLSBzdGFydCkgPj4g UEFHRV9TSElGVCkgKyAxKTsKIAkJYWRkciA9IHN0YXJ0ICsgKG9mZnNldCA8PCBQQUdFX1NISUZU KTsKIAl9IGVsc2UgewogCQlhZGRyID0gc3RhcnQ7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJu ZWwvbW9kdWxlLmMgYi9hcmNoL3g4Ni9rZXJuZWwvbW9kdWxlLmMKaW5kZXggYjFhYmY2NjM0MTdj Li5jMDMyZWRjZDNkOTUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9tb2R1bGUuYworKysg Yi9hcmNoL3g4Ni9rZXJuZWwvbW9kdWxlLmMKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIHVuc2ln bmVkIGxvbmcgaW50IGdldF9tb2R1bGVfbG9hZF9vZmZzZXQodm9pZCkKIAkJICovCiAJCWlmICht b2R1bGVfbG9hZF9vZmZzZXQgPT0gMCkKIAkJCW1vZHVsZV9sb2FkX29mZnNldCA9Ci0JCQkJKGdl dF9yYW5kb21faW50KCkgJSAxMDI0ICsgMSkgKiBQQUdFX1NJWkU7CisJCQkJKHByYW5kb21fdTMy X21heCgxMDI0KSArIDEpICogUEFHRV9TSVpFOwogCQltdXRleF91bmxvY2soJm1vZHVsZV9rYXNs cl9tdXRleCk7CiAJfQogCXJldHVybiBtb2R1bGVfbG9hZF9vZmZzZXQ7CmRpZmYgLS1naXQgYS9h cmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jIGIvYXJjaC94ODYva2VybmVsL3Byb2Nlc3MuYwppbmRl eCA1OGE2ZWE0NzJkYjkuLmMyMWI3MzQ3YTI2ZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVs L3Byb2Nlc3MuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jCkBAIC05NjUsNyArOTY1 LDcgQEAgZWFybHlfcGFyYW0oImlkbGUiLCBpZGxlX3NldHVwKTsKIHVuc2lnbmVkIGxvbmcgYXJj aF9hbGlnbl9zdGFjayh1bnNpZ25lZCBsb25nIHNwKQogewogCWlmICghKGN1cnJlbnQtPnBlcnNv bmFsaXR5ICYgQUREUl9OT19SQU5ET01JWkUpICYmIHJhbmRvbWl6ZV92YV9zcGFjZSkKLQkJc3Ag LT0gZ2V0X3JhbmRvbV9pbnQoKSAlIDgxOTI7CisJCXNwIC09IHByYW5kb21fdTMyX21heCg4MTky KTsKIAlyZXR1cm4gc3AgJiB+MHhmOwogfQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9wYXQv Y3BhLXRlc3QuYyBiL2FyY2gveDg2L21tL3BhdC9jcGEtdGVzdC5jCmluZGV4IDA2MTJhNzM2Mzhh OC4uNDIzYjIxZTgwOTI5IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9tbS9wYXQvY3BhLXRlc3QuYwor KysgYi9hcmNoL3g4Ni9tbS9wYXQvY3BhLXRlc3QuYwpAQCAtMTM2LDEwICsxMzYsMTAgQEAgc3Rh dGljIGludCBwYWdlYXR0cl90ZXN0KHZvaWQpCiAJZmFpbGVkICs9IHByaW50X3NwbGl0KCZzYSk7 CiAKIAlmb3IgKGkgPSAwOyBpIDwgTlRFU1Q7IGkrKykgewotCQl1bnNpZ25lZCBsb25nIHBmbiA9 IHByYW5kb21fdTMyKCkgJSBtYXhfcGZuX21hcHBlZDsKKwkJdW5zaWduZWQgbG9uZyBwZm4gPSBw cmFuZG9tX3UzMl9tYXgobWF4X3Bmbl9tYXBwZWQpOwogCiAJCWFkZHJbaV0gPSAodW5zaWduZWQg bG9uZylfX3ZhKHBmbiA8PCBQQUdFX1NISUZUKTsKLQkJbGVuW2ldID0gcHJhbmRvbV91MzIoKSAl IE5QQUdFUzsKKwkJbGVuW2ldID0gcHJhbmRvbV91MzJfbWF4KE5QQUdFUyk7CiAJCWxlbltpXSA9 IG1pbl90KHVuc2lnbmVkIGxvbmcsIGxlbltpXSwgbWF4X3Bmbl9tYXBwZWQgLSBwZm4gLSAxKTsK IAogCQlpZiAobGVuW2ldID09IDApCmRpZmYgLS1naXQgYS9jcnlwdG8vdGVzdG1nci5jIGIvY3J5 cHRvL3Rlc3RtZ3IuYwppbmRleCA1MzQ5ZmZlZTZiYmQuLmJlNDUyMTdhY2RlNCAxMDA2NDQKLS0t IGEvY3J5cHRvL3Rlc3RtZ3IuYworKysgYi9jcnlwdG8vdGVzdG1nci5jCkBAIC04NTUsOSArODU1 LDkgQEAgc3RhdGljIGludCBwcmVwYXJlX2tleWJ1Zihjb25zdCB1OCAqa2V5LCB1bnNpZ25lZCBp bnQga3NpemUsCiAvKiBHZW5lcmF0ZSBhIHJhbmRvbSBsZW5ndGggaW4gcmFuZ2UgWzAsIG1heF9s ZW5dLCBidXQgcHJlZmVyIHNtYWxsZXIgdmFsdWVzICovCiBzdGF0aWMgdW5zaWduZWQgaW50IGdl bmVyYXRlX3JhbmRvbV9sZW5ndGgodW5zaWduZWQgaW50IG1heF9sZW4pCiB7Ci0JdW5zaWduZWQg aW50IGxlbiA9IHByYW5kb21fdTMyKCkgJSAobWF4X2xlbiArIDEpOworCXVuc2lnbmVkIGludCBs ZW4gPSBwcmFuZG9tX3UzMl9tYXgobWF4X2xlbiArIDEpOwogCi0Jc3dpdGNoIChwcmFuZG9tX3Uz MigpICUgNCkgeworCXN3aXRjaCAocHJhbmRvbV91MzJfbWF4KDQpKSB7CiAJY2FzZSAwOgogCQly ZXR1cm4gbGVuICUgNjQ7CiAJY2FzZSAxOgpAQCAtODc0LDE0ICs4NzQsMTQgQEAgc3RhdGljIHZv aWQgZmxpcF9yYW5kb21fYml0KHU4ICpidWYsIHNpemVfdCBzaXplKQogewogCXNpemVfdCBiaXRw b3M7CiAKLQliaXRwb3MgPSBwcmFuZG9tX3UzMigpICUgKHNpemUgKiA4KTsKKwliaXRwb3MgPSBw cmFuZG9tX3UzMl9tYXgoc2l6ZSAqIDgpOwogCWJ1ZltiaXRwb3MgLyA4XSBePSAxIDw8IChiaXRw b3MgJSA4KTsKIH0KIAogLyogRmxpcCBhIHJhbmRvbSBieXRlIGluIHRoZSBnaXZlbiBub25lbXB0 eSBkYXRhIGJ1ZmZlciAqLwogc3RhdGljIHZvaWQgZmxpcF9yYW5kb21fYnl0ZSh1OCAqYnVmLCBz aXplX3Qgc2l6ZSkKIHsKLQlidWZbcHJhbmRvbV91MzIoKSAlIHNpemVdIF49IDB4ZmY7CisJYnVm W3ByYW5kb21fdTMyX21heChzaXplKV0gXj0gMHhmZjsKIH0KIAogLyogU29tZXRpbWVzIG1ha2Ug c29tZSByYW5kb20gY2hhbmdlcyB0byB0aGUgZ2l2ZW4gbm9uZW1wdHkgZGF0YSBidWZmZXIgKi8K QEAgLTg5MSwxNSArODkxLDE1IEBAIHN0YXRpYyB2b2lkIG11dGF0ZV9idWZmZXIodTggKmJ1Ziwg c2l6ZV90IHNpemUpCiAJc2l6ZV90IGk7CiAKIAkvKiBTb21ldGltZXMgZmxpcCBzb21lIGJpdHMg Ki8KLQlpZiAocHJhbmRvbV91MzIoKSAlIDQgPT0gMCkgewotCQludW1fZmxpcHMgPSBtaW5fdChz aXplX3QsIDEgPDwgKHByYW5kb21fdTMyKCkgJSA4KSwgc2l6ZSAqIDgpOworCWlmIChwcmFuZG9t X3UzMl9tYXgoNCkgPT0gMCkgeworCQludW1fZmxpcHMgPSBtaW5fdChzaXplX3QsIDEgPDwgcHJh bmRvbV91MzJfbWF4KDgpLCBzaXplICogOCk7CiAJCWZvciAoaSA9IDA7IGkgPCBudW1fZmxpcHM7 IGkrKykKIAkJCWZsaXBfcmFuZG9tX2JpdChidWYsIHNpemUpOwogCX0KIAogCS8qIFNvbWV0aW1l cyBmbGlwIHNvbWUgYnl0ZXMgKi8KLQlpZiAocHJhbmRvbV91MzIoKSAlIDQgPT0gMCkgewotCQlu dW1fZmxpcHMgPSBtaW5fdChzaXplX3QsIDEgPDwgKHByYW5kb21fdTMyKCkgJSA4KSwgc2l6ZSk7 CisJaWYgKHByYW5kb21fdTMyX21heCg0KSA9PSAwKSB7CisJCW51bV9mbGlwcyA9IG1pbl90KHNp emVfdCwgMSA8PCBwcmFuZG9tX3UzMl9tYXgoOCksIHNpemUpOwogCQlmb3IgKGkgPSAwOyBpIDwg bnVtX2ZsaXBzOyBpKyspCiAJCQlmbGlwX3JhbmRvbV9ieXRlKGJ1Ziwgc2l6ZSk7CiAJfQpAQCAt OTE1LDExICs5MTUsMTEgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfcmFuZG9tX2J5dGVzKHU4ICpi dWYsIHNpemVfdCBjb3VudCkKIAlpZiAoY291bnQgPT0gMCkKIAkJcmV0dXJuOwogCi0Jc3dpdGNo IChwcmFuZG9tX3UzMigpICUgOCkgeyAvKiBDaG9vc2UgYSBnZW5lcmF0aW9uIHN0cmF0ZWd5ICov CisJc3dpdGNoIChwcmFuZG9tX3UzMl9tYXgoOCkpIHsgLyogQ2hvb3NlIGEgZ2VuZXJhdGlvbiBz dHJhdGVneSAqLwogCWNhc2UgMDoKIAljYXNlIDE6CiAJCS8qIEFsbCB0aGUgc2FtZSBieXRlLCBw bHVzIG9wdGlvbmFsIG11dGF0aW9ucyAqLwotCQlzd2l0Y2ggKHByYW5kb21fdTMyKCkgJSA0KSB7 CisJCXN3aXRjaCAocHJhbmRvbV91MzJfbWF4KDQpKSB7CiAJCWNhc2UgMDoKIAkJCWIgPSAweDAw OwogCQkJYnJlYWs7CkBAIC05NTksMjQgKzk1OSwyNCBAQCBzdGF0aWMgY2hhciAqZ2VuZXJhdGVf cmFuZG9tX3NnbF9kaXZpc2lvbnMoc3RydWN0IHRlc3Rfc2dfZGl2aXNpb24gKmRpdnMsCiAJCXVu c2lnbmVkIGludCB0aGlzX2xlbjsKIAkJY29uc3QgY2hhciAqZmx1c2h0eXBlX3N0cjsKIAotCQlp ZiAoZGl2ID09ICZkaXZzW21heF9kaXZzIC0gMV0gfHwgcHJhbmRvbV91MzIoKSAlIDIgPT0gMCkK KwkJaWYgKGRpdiA9PSAmZGl2c1ttYXhfZGl2cyAtIDFdIHx8IHByYW5kb21fdTMyX21heCgyKSA9 PSAwKQogCQkJdGhpc19sZW4gPSByZW1haW5pbmc7CiAJCWVsc2UKLQkJCXRoaXNfbGVuID0gMSAr IChwcmFuZG9tX3UzMigpICUgcmVtYWluaW5nKTsKKwkJCXRoaXNfbGVuID0gMSArIHByYW5kb21f dTMyX21heChyZW1haW5pbmcpOwogCQlkaXYtPnByb3BvcnRpb25fb2ZfdG90YWwgPSB0aGlzX2xl bjsKIAotCQlpZiAocHJhbmRvbV91MzIoKSAlIDQgPT0gMCkKLQkJCWRpdi0+b2Zmc2V0ID0gKFBB R0VfU0laRSAtIDEyOCkgKyAocHJhbmRvbV91MzIoKSAlIDEyOCk7Ci0JCWVsc2UgaWYgKHByYW5k b21fdTMyKCkgJSAyID09IDApCi0JCQlkaXYtPm9mZnNldCA9IHByYW5kb21fdTMyKCkgJSAzMjsK KwkJaWYgKHByYW5kb21fdTMyX21heCg0KSA9PSAwKQorCQkJZGl2LT5vZmZzZXQgPSAoUEFHRV9T SVpFIC0gMTI4KSArIHByYW5kb21fdTMyX21heCgxMjgpOworCQllbHNlIGlmIChwcmFuZG9tX3Uz Ml9tYXgoMikgPT0gMCkKKwkJCWRpdi0+b2Zmc2V0ID0gcHJhbmRvbV91MzJfbWF4KDMyKTsKIAkJ ZWxzZQotCQkJZGl2LT5vZmZzZXQgPSBwcmFuZG9tX3UzMigpICUgUEFHRV9TSVpFOwotCQlpZiAo cHJhbmRvbV91MzIoKSAlIDggPT0gMCkKKwkJCWRpdi0+b2Zmc2V0ID0gcHJhbmRvbV91MzJfbWF4 KFBBR0VfU0laRSk7CisJCWlmIChwcmFuZG9tX3UzMl9tYXgoOCkgPT0gMCkKIAkJCWRpdi0+b2Zm c2V0X3JlbGF0aXZlX3RvX2FsaWdubWFzayA9IHRydWU7CiAKIAkJZGl2LT5mbHVzaF90eXBlID0g RkxVU0hfVFlQRV9OT05FOwogCQlpZiAoZ2VuX2ZsdXNoZXMpIHsKLQkJCXN3aXRjaCAocHJhbmRv bV91MzIoKSAlIDQpIHsKKwkJCXN3aXRjaCAocHJhbmRvbV91MzJfbWF4KDQpKSB7CiAJCQljYXNl IDA6CiAJCQkJZGl2LT5mbHVzaF90eXBlID0gRkxVU0hfVFlQRV9SRUlNUE9SVDsKIAkJCQlicmVh azsKQEAgLTk4OCw3ICs5ODgsNyBAQCBzdGF0aWMgY2hhciAqZ2VuZXJhdGVfcmFuZG9tX3NnbF9k aXZpc2lvbnMoc3RydWN0IHRlc3Rfc2dfZGl2aXNpb24gKmRpdnMsCiAKIAkJaWYgKGRpdi0+Zmx1 c2hfdHlwZSAhPSBGTFVTSF9UWVBFX05PTkUgJiYKIAkJICAgICEocmVxX2ZsYWdzICYgQ1JZUFRP X1RGTV9SRVFfTUFZX1NMRUVQKSAmJgotCQkgICAgcHJhbmRvbV91MzIoKSAlIDIgPT0gMCkKKwkJ ICAgIHByYW5kb21fdTMyX21heCgyKSA9PSAwKQogCQkJZGl2LT5ub3NpbWQgPSB0cnVlOwogCiAJ CXN3aXRjaCAoZGl2LT5mbHVzaF90eXBlKSB7CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCBzdGF0aWMg dm9pZCBnZW5lcmF0ZV9yYW5kb21fdGVzdHZlY19jb25maWcoc3RydWN0IHRlc3R2ZWNfY29uZmln ICpjZmcsCiAKIAlwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAicmFuZG9tOiIpOwogCi0Jc3dp dGNoIChwcmFuZG9tX3UzMigpICUgNCkgeworCXN3aXRjaCAocHJhbmRvbV91MzJfbWF4KDQpKSB7 CiAJY2FzZSAwOgogCWNhc2UgMToKIAkJY2ZnLT5pbnBsYWNlX21vZGUgPSBPVVRfT0ZfUExBQ0U7 CkBAIC0xMDUwLDEyICsxMDUwLDEyIEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX3JhbmRvbV90ZXN0 dmVjX2NvbmZpZyhzdHJ1Y3QgdGVzdHZlY19jb25maWcgKmNmZywKIAkJYnJlYWs7CiAJfQogCi0J aWYgKHByYW5kb21fdTMyKCkgJSAyID09IDApIHsKKwlpZiAocHJhbmRvbV91MzJfbWF4KDIpID09 IDApIHsKIAkJY2ZnLT5yZXFfZmxhZ3MgfD0gQ1JZUFRPX1RGTV9SRVFfTUFZX1NMRUVQOwogCQlw ICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAiIG1heV9zbGVlcCIpOwogCX0KIAotCXN3aXRjaCAo cHJhbmRvbV91MzIoKSAlIDQpIHsKKwlzd2l0Y2ggKHByYW5kb21fdTMyX21heCg0KSkgewogCWNh c2UgMDoKIAkJY2ZnLT5maW5hbGl6YXRpb25fdHlwZSA9IEZJTkFMSVpBVElPTl9UWVBFX0ZJTkFM OwogCQlwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAiIHVzZV9maW5hbCIpOwpAQCAtMTA3MSw3 ICsxMDcxLDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfcmFuZG9tX3Rlc3R2ZWNfY29uZmlnKHN0 cnVjdCB0ZXN0dmVjX2NvbmZpZyAqY2ZnLAogCX0KIAogCWlmICghKGNmZy0+cmVxX2ZsYWdzICYg Q1JZUFRPX1RGTV9SRVFfTUFZX1NMRUVQKSAmJgotCSAgICBwcmFuZG9tX3UzMigpICUgMiA9PSAw KSB7CisJICAgIHByYW5kb21fdTMyX21heCgyKSA9PSAwKSB7CiAJCWNmZy0+bm9zaW1kID0gdHJ1 ZTsKIAkJcCArPSBzY25wcmludGYocCwgZW5kIC0gcCwgIiBub3NpbWQiKTsKIAl9CkBAIC0xMDg0 LDcgKzEwODQsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9yYW5kb21fdGVzdHZlY19jb25maWco c3RydWN0IHRlc3R2ZWNfY29uZmlnICpjZmcsCiAJCQkJCSAgY2ZnLT5yZXFfZmxhZ3MpOwogCXAg Kz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICJdIik7CiAKLQlpZiAoY2ZnLT5pbnBsYWNlX21vZGUg PT0gT1VUX09GX1BMQUNFICYmIHByYW5kb21fdTMyKCkgJSAyID09IDApIHsKKwlpZiAoY2ZnLT5p bnBsYWNlX21vZGUgPT0gT1VUX09GX1BMQUNFICYmIHByYW5kb21fdTMyX21heCgyKSA9PSAwKSB7 CiAJCXAgKz0gc2NucHJpbnRmKHAsIGVuZCAtIHAsICIgZHN0X2RpdnM9WyIpOwogCQlwID0gZ2Vu ZXJhdGVfcmFuZG9tX3NnbF9kaXZpc2lvbnMoY2ZnLT5kc3RfZGl2cywKIAkJCQkJCSAgQVJSQVlf U0laRShjZmctPmRzdF9kaXZzKSwKQEAgLTEwOTMsMTMgKzEwOTMsMTMgQEAgc3RhdGljIHZvaWQg Z2VuZXJhdGVfcmFuZG9tX3Rlc3R2ZWNfY29uZmlnKHN0cnVjdCB0ZXN0dmVjX2NvbmZpZyAqY2Zn LAogCQlwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAiXSIpOwogCX0KIAotCWlmIChwcmFuZG9t X3UzMigpICUgMiA9PSAwKSB7Ci0JCWNmZy0+aXZfb2Zmc2V0ID0gMSArIChwcmFuZG9tX3UzMigp ICUgTUFYX0FMR0FQSV9BTElHTk1BU0spOworCWlmIChwcmFuZG9tX3UzMl9tYXgoMikgPT0gMCkg eworCQljZmctPml2X29mZnNldCA9IDEgKyBwcmFuZG9tX3UzMl9tYXgoTUFYX0FMR0FQSV9BTElH Tk1BU0spOwogCQlwICs9IHNjbnByaW50ZihwLCBlbmQgLSBwLCAiIGl2X29mZnNldD0ldSIsIGNm Zy0+aXZfb2Zmc2V0KTsKIAl9CiAKLQlpZiAocHJhbmRvbV91MzIoKSAlIDIgPT0gMCkgewotCQlj ZmctPmtleV9vZmZzZXQgPSAxICsgKHByYW5kb21fdTMyKCkgJSBNQVhfQUxHQVBJX0FMSUdOTUFT Syk7CisJaWYgKHByYW5kb21fdTMyX21heCgyKSA9PSAwKSB7CisJCWNmZy0+a2V5X29mZnNldCA9 IDEgKyBwcmFuZG9tX3UzMl9tYXgoTUFYX0FMR0FQSV9BTElHTk1BU0spOwogCQlwICs9IHNjbnBy aW50ZihwLCBlbmQgLSBwLCAiIGtleV9vZmZzZXQ9JXUiLCBjZmctPmtleV9vZmZzZXQpOwogCX0K IApAQCAtMTY1Miw4ICsxNjUyLDggQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfcmFuZG9tX2hhc2hf dGVzdHZlYyhzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYywKIAl2ZWMtPmtzaXplID0gMDsKIAlpZiAo bWF4a2V5c2l6ZSkgewogCQl2ZWMtPmtzaXplID0gbWF4a2V5c2l6ZTsKLQkJaWYgKHByYW5kb21f dTMyKCkgJSA0ID09IDApCi0JCQl2ZWMtPmtzaXplID0gMSArIChwcmFuZG9tX3UzMigpICUgbWF4 a2V5c2l6ZSk7CisJCWlmIChwcmFuZG9tX3UzMl9tYXgoNCkgPT0gMCkKKwkJCXZlYy0+a3NpemUg PSAxICsgcHJhbmRvbV91MzJfbWF4KG1heGtleXNpemUpOwogCQlnZW5lcmF0ZV9yYW5kb21fYnl0 ZXMoKHU4ICopdmVjLT5rZXksIHZlYy0+a3NpemUpOwogCiAJCXZlYy0+c2V0a2V5X2Vycm9yID0g Y3J5cHRvX3NoYXNoX3NldGtleShkZXNjLT50Zm0sIHZlYy0+a2V5LApAQCAtMjIxOCwxMyArMjIx OCwxMyBAQCBzdGF0aWMgdm9pZCBtdXRhdGVfYWVhZF9tZXNzYWdlKHN0cnVjdCBhZWFkX3Rlc3R2 ZWMgKnZlYywgYm9vbCBhYWRfaXYsCiAJY29uc3QgdW5zaWduZWQgaW50IGFhZF90YWlsX3NpemUg PSBhYWRfaXYgPyBpdnNpemUgOiAwOwogCWNvbnN0IHVuc2lnbmVkIGludCBhdXRoc2l6ZSA9IHZl Yy0+Y2xlbiAtIHZlYy0+cGxlbjsKIAotCWlmIChwcmFuZG9tX3UzMigpICUgMiA9PSAwICYmIHZl Yy0+YWxlbiA+IGFhZF90YWlsX3NpemUpIHsKKwlpZiAocHJhbmRvbV91MzJfbWF4KDIpID09IDAg JiYgdmVjLT5hbGVuID4gYWFkX3RhaWxfc2l6ZSkgewogCQkgLyogTXV0YXRlIHRoZSBBQUQgKi8K IAkJZmxpcF9yYW5kb21fYml0KCh1OCAqKXZlYy0+YXNzb2MsIHZlYy0+YWxlbiAtIGFhZF90YWls X3NpemUpOwotCQlpZiAocHJhbmRvbV91MzIoKSAlIDIgPT0gMCkKKwkJaWYgKHByYW5kb21fdTMy X21heCgyKSA9PSAwKQogCQkJcmV0dXJuOwogCX0KLQlpZiAocHJhbmRvbV91MzIoKSAlIDIgPT0g MCkgeworCWlmIChwcmFuZG9tX3UzMl9tYXgoMikgPT0gMCkgewogCQkvKiBNdXRhdGUgYXV0aCB0 YWcgKGFzc3VtaW5nIGl0J3MgYXQgdGhlIGVuZCBvZiBjaXBoZXJ0ZXh0KSAqLwogCQlmbGlwX3Jh bmRvbV9iaXQoKHU4ICopdmVjLT5jdGV4dCArIHZlYy0+cGxlbiwgYXV0aHNpemUpOwogCX0gZWxz ZSB7CkBAIC0yMjQ5LDcgKzIyNDksNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9hZWFkX21lc3Nh Z2Uoc3RydWN0IGFlYWRfcmVxdWVzdCAqcmVxLAogCWNvbnN0IHVuc2lnbmVkIGludCBpdnNpemUg PSBjcnlwdG9fYWVhZF9pdnNpemUodGZtKTsKIAljb25zdCB1bnNpZ25lZCBpbnQgYXV0aHNpemUg PSB2ZWMtPmNsZW4gLSB2ZWMtPnBsZW47CiAJY29uc3QgYm9vbCBpbmF1dGhlbnRpYyA9IChhdXRo c2l6ZSA+PSBNSU5fQ09MTElTSU9OX0ZSRUVfQVVUSFNJWkUpICYmCi0JCQkJIChwcmVmZXJfaW5h dXRoZW50aWMgfHwgcHJhbmRvbV91MzIoKSAlIDQgPT0gMCk7CisJCQkJIChwcmVmZXJfaW5hdXRo ZW50aWMgfHwgcHJhbmRvbV91MzJfbWF4KDQpID09IDApOwogCiAJLyogR2VuZXJhdGUgdGhlIEFB RC4gKi8KIAlnZW5lcmF0ZV9yYW5kb21fYnl0ZXMoKHU4ICopdmVjLT5hc3NvYywgdmVjLT5hbGVu KTsKQEAgLTIyNTcsNyArMjI1Nyw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX2FlYWRfbWVzc2Fn ZShzdHJ1Y3QgYWVhZF9yZXF1ZXN0ICpyZXEsCiAJCS8qIEF2b2lkIGltcGxlbWVudGF0aW9uLWRl ZmluZWQgYmVoYXZpb3IuICovCiAJCW1lbWNweSgodTggKil2ZWMtPmFzc29jICsgdmVjLT5hbGVu IC0gaXZzaXplLCB2ZWMtPml2LCBpdnNpemUpOwogCi0JaWYgKGluYXV0aGVudGljICYmIHByYW5k b21fdTMyKCkgJSAyID09IDApIHsKKwlpZiAoaW5hdXRoZW50aWMgJiYgcHJhbmRvbV91MzJfbWF4 KDIpID09IDApIHsKIAkJLyogR2VuZXJhdGUgYSByYW5kb20gY2lwaGVydGV4dC4gKi8KIAkJZ2Vu ZXJhdGVfcmFuZG9tX2J5dGVzKCh1OCAqKXZlYy0+Y3RleHQsIHZlYy0+Y2xlbik7CiAJfSBlbHNl IHsKQEAgLTIzMjEsOCArMjMyMSw4IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlX3JhbmRvbV9hZWFk X3Rlc3R2ZWMoc3RydWN0IGFlYWRfcmVxdWVzdCAqcmVxLAogCiAJLyogS2V5OiBsZW5ndGggaW4g WzAsIG1heGtleXNpemVdLCBidXQgdXN1YWxseSBjaG9vc2UgbWF4a2V5c2l6ZSAqLwogCXZlYy0+ a2xlbiA9IG1heGtleXNpemU7Ci0JaWYgKHByYW5kb21fdTMyKCkgJSA0ID09IDApCi0JCXZlYy0+ a2xlbiA9IHByYW5kb21fdTMyKCkgJSAobWF4a2V5c2l6ZSArIDEpOworCWlmIChwcmFuZG9tX3Uz Ml9tYXgoNCkgPT0gMCkKKwkJdmVjLT5rbGVuID0gcHJhbmRvbV91MzJfbWF4KG1heGtleXNpemUg KyAxKTsKIAlnZW5lcmF0ZV9yYW5kb21fYnl0ZXMoKHU4ICopdmVjLT5rZXksIHZlYy0+a2xlbik7 CiAJdmVjLT5zZXRrZXlfZXJyb3IgPSBjcnlwdG9fYWVhZF9zZXRrZXkodGZtLCB2ZWMtPmtleSwg dmVjLT5rbGVuKTsKIApAQCAtMjMzMSw4ICsyMzMxLDggQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVf cmFuZG9tX2FlYWRfdGVzdHZlYyhzdHJ1Y3QgYWVhZF9yZXF1ZXN0ICpyZXEsCiAKIAkvKiBUYWcg bGVuZ3RoOiBpbiBbMCwgbWF4YXV0aHNpemVdLCBidXQgdXN1YWxseSBjaG9vc2UgbWF4YXV0aHNp emUgKi8KIAlhdXRoc2l6ZSA9IG1heGF1dGhzaXplOwotCWlmIChwcmFuZG9tX3UzMigpICUgNCA9 PSAwKQotCQlhdXRoc2l6ZSA9IHByYW5kb21fdTMyKCkgJSAobWF4YXV0aHNpemUgKyAxKTsKKwlp ZiAocHJhbmRvbV91MzJfbWF4KDQpID09IDApCisJCWF1dGhzaXplID0gcHJhbmRvbV91MzJfbWF4 KG1heGF1dGhzaXplICsgMSk7CiAJaWYgKHByZWZlcl9pbmF1dGhlbnRpYyAmJiBhdXRoc2l6ZSA8 IE1JTl9DT0xMSVNJT05fRlJFRV9BVVRIU0laRSkKIAkJYXV0aHNpemUgPSBNSU5fQ09MTElTSU9O X0ZSRUVfQVVUSFNJWkU7CiAJaWYgKFdBUk5fT04oYXV0aHNpemUgPiBtYXhkYXRhc2l6ZSkpCkBA IC0yMzQyLDcgKzIzNDIsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9yYW5kb21fYWVhZF90ZXN0 dmVjKHN0cnVjdCBhZWFkX3JlcXVlc3QgKnJlcSwKIAogCS8qIEFBRCwgcGxhaW50ZXh0LCBhbmQg Y2lwaGVydGV4dCBsZW5ndGhzICovCiAJdG90YWxfbGVuID0gZ2VuZXJhdGVfcmFuZG9tX2xlbmd0 aChtYXhkYXRhc2l6ZSk7Ci0JaWYgKHByYW5kb21fdTMyKCkgJSA0ID09IDApCisJaWYgKHByYW5k b21fdTMyX21heCg0KSA9PSAwKQogCQl2ZWMtPmFsZW4gPSAwOwogCWVsc2UKIAkJdmVjLT5hbGVu ID0gZ2VuZXJhdGVfcmFuZG9tX2xlbmd0aCh0b3RhbF9sZW4pOwpAQCAtMjk1OCw4ICsyOTU4LDgg QEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVfcmFuZG9tX2NpcGhlcl90ZXN0dmVjKHN0cnVjdCBza2Np cGhlcl9yZXF1ZXN0ICpyZXEsCiAKIAkvKiBLZXk6IGxlbmd0aCBpbiBbMCwgbWF4a2V5c2l6ZV0s IGJ1dCB1c3VhbGx5IGNob29zZSBtYXhrZXlzaXplICovCiAJdmVjLT5rbGVuID0gbWF4a2V5c2l6 ZTsKLQlpZiAocHJhbmRvbV91MzIoKSAlIDQgPT0gMCkKLQkJdmVjLT5rbGVuID0gcHJhbmRvbV91 MzIoKSAlIChtYXhrZXlzaXplICsgMSk7CisJaWYgKHByYW5kb21fdTMyX21heCg0KSA9PSAwKQor CQl2ZWMtPmtsZW4gPSBwcmFuZG9tX3UzMl9tYXgobWF4a2V5c2l6ZSArIDEpOwogCWdlbmVyYXRl X3JhbmRvbV9ieXRlcygodTggKil2ZWMtPmtleSwgdmVjLT5rbGVuKTsKIAl2ZWMtPnNldGtleV9l cnJvciA9IGNyeXB0b19za2NpcGhlcl9zZXRrZXkodGZtLCB2ZWMtPmtleSwgdmVjLT5rbGVuKTsK IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYyBiL2RyaXZl cnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKaW5kZXggYWY0YzdkNjU0OTBiLi5kOGIxNDE3 ZGM1MDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKKysr IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwpAQCAtNzgxLDcgKzc4MSw3IEBA IHN0YXRpYyBzdHJ1Y3Qgc29ja2V0ICpkcmJkX3dhaXRfZm9yX2Nvbm5lY3Qoc3RydWN0IGRyYmRf Y29ubmVjdGlvbiAqY29ubmVjdGlvbiwKIAogCXRpbWVvID0gY29ubmVjdF9pbnQgKiBIWjsKIAkv KiAyOC41JSByYW5kb20gaml0dGVyICovCi0JdGltZW8gKz0gKHByYW5kb21fdTMyKCkgJiAxKSA/ IHRpbWVvIC8gNyA6IC10aW1lbyAvIDc7CisJdGltZW8gKz0gcHJhbmRvbV91MzJfbWF4KDIpID8g dGltZW8gLyA3IDogLXRpbWVvIC8gNzsKIAogCWVyciA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50 ZXJydXB0aWJsZV90aW1lb3V0KCZhZC0+ZG9vcl9iZWxsLCB0aW1lbyk7CiAJaWYgKGVyciA8PSAw KQpAQCAtMTAwNCw3ICsxMDA0LDcgQEAgc3RhdGljIGludCBjb25uX2Nvbm5lY3Qoc3RydWN0IGRy YmRfY29ubmVjdGlvbiAqY29ubmVjdGlvbikKIAkJCQlkcmJkX3dhcm4oY29ubmVjdGlvbiwgIkVy cm9yIHJlY2VpdmluZyBpbml0aWFsIHBhY2tldFxuIik7CiAJCQkJc29ja19yZWxlYXNlKHMpOwog cmFuZG9taXplOgotCQkJCWlmIChwcmFuZG9tX3UzMigpICYgMSkKKwkJCQlpZiAocHJhbmRvbV91 MzJfbWF4KDIpKQogCQkJCQlnb3RvIHJldHJ5OwogCQkJfQogCQl9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwppbmRleCBjZDc1YjBjYTI1NTUuLjg0 NTAyM2MxNGViMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhl Y2J1ZmZlci5jCkBAIC0yNDI0LDcgKzI0MjQsNyBAQCBnZW44X2Rpc3BhdGNoX2JzZF9lbmdpbmUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCS8qIENoZWNrIHdoZXRoZXIgdGhl IGZpbGVfcHJpdiBoYXMgYWxyZWFkeSBzZWxlY3RlZCBvbmUgcmluZy4gKi8KIAlpZiAoKGludClm aWxlX3ByaXYtPmJzZF9lbmdpbmUgPCAwKQogCQlmaWxlX3ByaXYtPmJzZF9lbmdpbmUgPQotCQkJ Z2V0X3JhbmRvbV9pbnQoKSAlIG51bV92Y3NfZW5naW5lcyhkZXZfcHJpdik7CisJCQlwcmFuZG9t X3UzMl9tYXgobnVtX3Zjc19lbmdpbmVzKGRldl9wcml2KSk7CiAKIAlyZXR1cm4gZmlsZV9wcml2 LT5ic2RfZW5naW5lOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY21h LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jbWEuYwppbmRleCBiZTMxN2YyNjY1YTkuLmQ0 NjA5MzVlODllYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY21hLmMKKysr IGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY21hLmMKQEAgLTM3NTksNyArMzc1OSw3IEBAIHN0 YXRpYyBpbnQgY21hX2FsbG9jX2FueV9wb3J0KGVudW0gcmRtYV91Y21fcG9ydF9zcGFjZSBwcywK IAogCWluZXRfZ2V0X2xvY2FsX3BvcnRfcmFuZ2UobmV0LCAmbG93LCAmaGlnaCk7CiAJcmVtYWlu aW5nID0gKGhpZ2ggLSBsb3cpICsgMTsKLQlyb3ZlciA9IHByYW5kb21fdTMyKCkgJSByZW1haW5p bmcgKyBsb3c7CisJcm92ZXIgPSBwcmFuZG9tX3UzMl9tYXgocmVtYWluaW5nKSArIGxvdzsKIHJl dHJ5OgogCWlmIChsYXN0X3VzZWRfcG9ydCAhPSByb3ZlcikgewogCQlzdHJ1Y3QgcmRtYV9iaW5k X2xpc3QgKmJpbmRfbGlzdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdi NC9pZF90YWJsZS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4Z2I0L2lkX3RhYmxlLmMKaW5k ZXggZjY0ZTdlMDJiMTI5Li4yODBkNjE0NjY4NTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5p YmFuZC9ody9jeGdiNC9pZF90YWJsZS5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9jeGdi NC9pZF90YWJsZS5jCkBAIC01NCw3ICs1NCw3IEBAIHUzMiBjNGl3X2lkX2FsbG9jKHN0cnVjdCBj NGl3X2lkX3RhYmxlICphbGxvYykKIAogCWlmIChvYmogPCBhbGxvYy0+bWF4KSB7CiAJCWlmIChh bGxvYy0+ZmxhZ3MgJiBDNElXX0lEX1RBQkxFX0ZfUkFORE9NKQotCQkJYWxsb2MtPmxhc3QgKz0g cHJhbmRvbV91MzIoKSAlIFJBTkRPTV9TS0lQOworCQkJYWxsb2MtPmxhc3QgKz0gcHJhbmRvbV91 MzJfbWF4KFJBTkRPTV9TS0lQKTsKIAkJZWxzZQogCQkJYWxsb2MtPmxhc3QgPSBvYmogKyAxOwog CQlpZiAoYWxsb2MtPmxhc3QgPj0gYWxsb2MtPm1heCkKQEAgLTg1LDcgKzg1LDcgQEAgaW50IGM0 aXdfaWRfdGFibGVfYWxsb2Moc3RydWN0IGM0aXdfaWRfdGFibGUgKmFsbG9jLCB1MzIgc3RhcnQs IHUzMiBudW0sCiAJYWxsb2MtPnN0YXJ0ID0gc3RhcnQ7CiAJYWxsb2MtPmZsYWdzID0gZmxhZ3M7 CiAJaWYgKGZsYWdzICYgQzRJV19JRF9UQUJMRV9GX1JBTkRPTSkKLQkJYWxsb2MtPmxhc3QgPSBw cmFuZG9tX3UzMigpICUgUkFORE9NX1NLSVA7CisJCWFsbG9jLT5sYXN0ID0gcHJhbmRvbV91MzJf bWF4KFJBTkRPTV9TS0lQKTsKIAllbHNlCiAJCWFsbG9jLT5sYXN0ID0gMDsKIAlhbGxvYy0+bWF4 ID0gbnVtOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9h aC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9jZV9haC5jCmluZGV4IDQ5MmIx MjJkMDUyMS4uNDgwYzA2MmRkMDRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcv aG5zL2huc19yb2NlX2FoLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2hucy9obnNfcm9j ZV9haC5jCkBAIC00MSw5ICs0MSw4IEBAIHN0YXRpYyBpbmxpbmUgdTE2IGdldF9haF91ZHBfc3Bv cnQoY29uc3Qgc3RydWN0IHJkbWFfYWhfYXR0ciAqYWhfYXR0cikKIAl1MTYgc3BvcnQ7CiAKIAlp ZiAoIWZsKQotCQlzcG9ydCA9IGdldF9yYW5kb21fdTMyKCkgJQotCQkJKElCX1JPQ0VfVURQX0VO Q0FQX1ZBTElEX1BPUlRfTUFYICsgMSAtCi0JCQkgSUJfUk9DRV9VRFBfRU5DQVBfVkFMSURfUE9S VF9NSU4pICsKKwkJc3BvcnQgPSBwcmFuZG9tX3UzMl9tYXgoSUJfUk9DRV9VRFBfRU5DQVBfVkFM SURfUE9SVF9NQVggKyAxIC0KKwkJCQkJSUJfUk9DRV9VRFBfRU5DQVBfVkFMSURfUE9SVF9NSU4p ICsKIAkJCUlCX1JPQ0VfVURQX0VOQ0FQX1ZBTElEX1BPUlRfTUlOOwogCWVsc2UKIAkJc3BvcnQg PSByZG1hX2Zsb3dfbGFiZWxfdG9fdWRwX3Nwb3J0KGZsKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv aW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9y dHJzL3J0cnMtY2x0LmMKaW5kZXggNDQ5OTA0ZGFjMGE5Li5lMmE4OWQ3ZjUyZGYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jCisrKyBiL2RyaXZlcnMv aW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jCkBAIC0xNTExLDggKzE1MTEsNyBAQCBzdGF0 aWMgdm9pZCBydHJzX2NsdF9lcnJfcmVjb3Zlcnlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCiAJcnRyc19jbHRfc3RvcF9hbmRfZGVzdHJveV9jb25ucyhjbHRfcGF0aCk7CiAJcXVldWVf ZGVsYXllZF93b3JrKHJ0cnNfd3EsICZjbHRfcGF0aC0+cmVjb25uZWN0X2R3b3JrLAogCQkJICAg bXNlY3NfdG9famlmZmllcyhkZWxheV9tcyArCi0JCQkJCSAgICBwcmFuZG9tX3UzMigpICUKLQkJ CQkJICAgIFJUUlNfUkVDT05ORUNUX1NFRUQpKTsKKwkJCQkJICAgIHByYW5kb21fdTMyX21heChS VFJTX1JFQ09OTkVDVF9TRUVEKSkpOwogfQogCiBzdGF0aWMgc3RydWN0IHJ0cnNfY2x0X3BhdGgg KmFsbG9jX3BhdGgoc3RydWN0IHJ0cnNfY2x0X3Nlc3MgKmNsdCwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWQvYmNhY2hlL3JlcXVlc3QuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYwppbmRl eCBmMmM1YTdlMDZmYTkuLjM0Mjc1NTViMGNjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2Fj aGUvcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYwpAQCAtNDAxLDcg KzQwMSw3IEBAIHN0YXRpYyBib29sIGNoZWNrX3Nob3VsZF9ieXBhc3Moc3RydWN0IGNhY2hlZF9k ZXYgKmRjLCBzdHJ1Y3QgYmlvICpiaW8pCiAJfQogCiAJaWYgKGJ5cGFzc190b3J0dXJlX3Rlc3Qo ZGMpKSB7Ci0JCWlmICgoZ2V0X3JhbmRvbV9pbnQoKSAmIDMpID09IDMpCisJCWlmIChwcmFuZG9t X3UzMl9tYXgoNCkgPT0gMykKIAkJCWdvdG8gc2tpcDsKIAkJZWxzZQogCQkJZ290byByZXNjYWxl OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtdG91 Y2gtY2FwLmMgYi9kcml2ZXJzL21lZGlhL3Rlc3QtZHJpdmVycy92aXZpZC92aXZpZC10b3VjaC1j YXAuYwppbmRleCA2NGUzZTRjYjMwYzIuLjc5MjY2MGE4NWJjMSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtdG91Y2gtY2FwLmMKKysrIGIvZHJpdmVy cy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvdml2aWQtdG91Y2gtY2FwLmMKQEAgLTIyMSw3ICsy MjEsNyBAQCBzdGF0aWMgdm9pZCB2aXZpZF9maWxsX2J1ZmZfbm9pc2UoX19zMTYgKnRjaF9idWYs IGludCBzaXplKQogCiBzdGF0aWMgaW5saW5lIGludCBnZXRfcmFuZG9tX3ByZXNzdXJlKHZvaWQp CiB7Ci0JcmV0dXJuIGdldF9yYW5kb21faW50KCkgJSBWSVZJRF9QUkVTU1VSRV9MSU1JVDsKKwly ZXR1cm4gcHJhbmRvbV91MzJfbWF4KFZJVklEX1BSRVNTVVJFX0xJTUlUKTsKIH0KIAogc3RhdGlj IHZvaWQgdml2aWRfdGNoX2J1Zl9zZXQoc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCAqZiwKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvY29yZS5jIGIvZHJpdmVycy9tbWMvY29yZS9jb3JlLmMK aW5kZXggZWY1M2EyNTc4ODI0Li45NWZhOGZiMWQ0NWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1j L2NvcmUvY29yZS5jCisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvY29yZS5jCkBAIC05Nyw4ICs5Nyw4 IEBAIHN0YXRpYyB2b2lkIG1tY19zaG91bGRfZmFpbF9yZXF1ZXN0KHN0cnVjdCBtbWNfaG9zdCAq aG9zdCwKIAkgICAgIXNob3VsZF9mYWlsKCZob3N0LT5mYWlsX21tY19yZXF1ZXN0LCBkYXRhLT5i bGtzeiAqIGRhdGEtPmJsb2NrcykpCiAJCXJldHVybjsKIAotCWRhdGEtPmVycm9yID0gZGF0YV9l cnJvcnNbcHJhbmRvbV91MzIoKSAlIEFSUkFZX1NJWkUoZGF0YV9lcnJvcnMpXTsKLQlkYXRhLT5i eXRlc194ZmVyZWQgPSAocHJhbmRvbV91MzIoKSAlIChkYXRhLT5ieXRlc194ZmVyZWQgPj4gOSkp IDw8IDk7CisJZGF0YS0+ZXJyb3IgPSBkYXRhX2Vycm9yc1twcmFuZG9tX3UzMl9tYXgoQVJSQVlf U0laRShkYXRhX2Vycm9ycykpXTsKKwlkYXRhLT5ieXRlc194ZmVyZWQgPSBwcmFuZG9tX3UzMl9t YXgoZGF0YS0+Ynl0ZXNfeGZlcmVkID4+IDkpIDw8IDk7CiB9CiAKICNlbHNlIC8qIENPTkZJR19G QUlMX01NQ19SRVFVRVNUICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L2R3X21tYy5j IGIvZHJpdmVycy9tbWMvaG9zdC9kd19tbWMuYwppbmRleCA1ODE2MTQxOTZhODQuLmM3OGJiYzIy ZTBkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvaG9zdC9kd19tbWMuYworKysgYi9kcml2ZXJz L21tYy9ob3N0L2R3X21tYy5jCkBAIC0xODU4LDcgKzE4NTgsNyBAQCBzdGF0aWMgdm9pZCBkd19t Y2lfc3RhcnRfZmF1bHRfdGltZXIoc3RydWN0IGR3X21jaSAqaG9zdCkKIAkgKiBUcnkgdG8gaW5q ZWN0IHRoZSBlcnJvciBhdCByYW5kb20gcG9pbnRzIGR1cmluZyB0aGUgZGF0YSB0cmFuc2Zlci4K IAkgKi8KIAlocnRpbWVyX3N0YXJ0KCZob3N0LT5mYXVsdF90aW1lciwKLQkJICAgICAgbXNfdG9f a3RpbWUocHJhbmRvbV91MzIoKSAlIDI1KSwKKwkJICAgICAgbXNfdG9fa3RpbWUocHJhbmRvbV91 MzJfbWF4KDI1KSksCiAJCSAgICAgIEhSVElNRVJfTU9ERV9SRUwpOwogfQogCmRpZmYgLS1naXQg YS9kcml2ZXJzL210ZC9uYW5kL3Jhdy9uYW5kc2ltLmMgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9u YW5kc2ltLmMKaW5kZXggMjRiZWFkZTk1YzdmLi41MGJjZjc0NWU4MTYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbXRkL25hbmQvcmF3L25hbmRzaW0uYworKysgYi9kcml2ZXJzL210ZC9uYW5kL3Jhdy9u YW5kc2ltLmMKQEAgLTE0MDUsOSArMTQwNSw5IEBAIHN0YXRpYyB2b2lkIG5zX2RvX2JpdF9mbGlw cyhzdHJ1Y3QgbmFuZHNpbSAqbnMsIGludCBudW0pCiAJaWYgKGJpdGZsaXBzICYmIHByYW5kb21f dTMyKCkgPCAoMSA8PCAyMikpIHsKIAkJaW50IGZsaXBzID0gMTsKIAkJaWYgKGJpdGZsaXBzID4g MSkKLQkJCWZsaXBzID0gKHByYW5kb21fdTMyKCkgJSAoaW50KSBiaXRmbGlwcykgKyAxOworCQkJ ZmxpcHMgPSBwcmFuZG9tX3UzMl9tYXgoYml0ZmxpcHMpICsgMTsKIAkJd2hpbGUgKGZsaXBzLS0p IHsKLQkJCWludCBwb3MgPSBwcmFuZG9tX3UzMigpICUgKG51bSAqIDgpOworCQkJaW50IHBvcyA9 IHByYW5kb21fdTMyX21heChudW0gKiA4KTsKIAkJCW5zLT5idWYuYnl0ZVtwb3MgLyA4XSBePSAo MSA8PCAocG9zICUgOCkpOwogCQkJTlNfV0FSTigicmVhZF9wYWdlOiBmbGlwcGluZyBiaXQgJWQg aW4gcGFnZSAlZCAiCiAJCQkJInJlYWRpbmcgZnJvbSAlZCBlY2M6IGNvcnJlY3RlZD0ldSBmYWls ZWQ9JXVcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC90ZXN0cy9tdGRfbmFuZGVjY3Rlc3Qu YyBiL2RyaXZlcnMvbXRkL3Rlc3RzL210ZF9uYW5kZWNjdGVzdC5jCmluZGV4IGM0ZjI3MTMxNGY1 Mi4uMWM3MjAxYjBmMzcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC90ZXN0cy9tdGRfbmFuZGVj Y3Rlc3QuYworKysgYi9kcml2ZXJzL210ZC90ZXN0cy9tdGRfbmFuZGVjY3Rlc3QuYwpAQCAtNDcs NyArNDcsNyBAQCBzdHJ1Y3QgbmFuZF9lY2NfdGVzdCB7CiBzdGF0aWMgdm9pZCBzaW5nbGVfYml0 X2Vycm9yX2RhdGEodm9pZCAqZXJyb3JfZGF0YSwgdm9pZCAqY29ycmVjdF9kYXRhLAogCQkJCXNp emVfdCBzaXplKQogewotCXVuc2lnbmVkIGludCBvZmZzZXQgPSBwcmFuZG9tX3UzMigpICUgKHNp emUgKiBCSVRTX1BFUl9CWVRFKTsKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gcHJhbmRvbV91MzJf bWF4KHNpemUgKiBCSVRTX1BFUl9CWVRFKTsKIAogCW1lbWNweShlcnJvcl9kYXRhLCBjb3JyZWN0 X2RhdGEsIHNpemUpOwogCV9fY2hhbmdlX2JpdF9sZShvZmZzZXQsIGVycm9yX2RhdGEpOwpAQCAt NTgsOSArNTgsOSBAQCBzdGF0aWMgdm9pZCBkb3VibGVfYml0X2Vycm9yX2RhdGEodm9pZCAqZXJy b3JfZGF0YSwgdm9pZCAqY29ycmVjdF9kYXRhLAogewogCXVuc2lnbmVkIGludCBvZmZzZXRbMl07 CiAKLQlvZmZzZXRbMF0gPSBwcmFuZG9tX3UzMigpICUgKHNpemUgKiBCSVRTX1BFUl9CWVRFKTsK KwlvZmZzZXRbMF0gPSBwcmFuZG9tX3UzMl9tYXgoc2l6ZSAqIEJJVFNfUEVSX0JZVEUpOwogCWRv IHsKLQkJb2Zmc2V0WzFdID0gcHJhbmRvbV91MzIoKSAlIChzaXplICogQklUU19QRVJfQllURSk7 CisJCW9mZnNldFsxXSA9IHByYW5kb21fdTMyX21heChzaXplICogQklUU19QRVJfQllURSk7CiAJ fSB3aGlsZSAob2Zmc2V0WzBdID09IG9mZnNldFsxXSk7CiAKIAltZW1jcHkoZXJyb3JfZGF0YSwg Y29ycmVjdF9kYXRhLCBzaXplKTsKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgZG91Ymxl X2JpdF9lcnJvcl9kYXRhKHZvaWQgKmVycm9yX2RhdGEsIHZvaWQgKmNvcnJlY3RfZGF0YSwKIAog c3RhdGljIHVuc2lnbmVkIGludCByYW5kb21fZWNjX2JpdChzaXplX3Qgc2l6ZSkKIHsKLQl1bnNp Z25lZCBpbnQgb2Zmc2V0ID0gcHJhbmRvbV91MzIoKSAlICgzICogQklUU19QRVJfQllURSk7CisJ dW5zaWduZWQgaW50IG9mZnNldCA9IHByYW5kb21fdTMyX21heCgzICogQklUU19QRVJfQllURSk7 CiAKIAlpZiAoc2l6ZSA9PSAyNTYpIHsKIAkJLyoKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHVu c2lnbmVkIGludCByYW5kb21fZWNjX2JpdChzaXplX3Qgc2l6ZSkKIAkJICogYW5kIDE3dGggYml0 KSBpbiBFQ0MgY29kZSBmb3IgMjU2IGJ5dGUgZGF0YSBibG9jawogCQkgKi8KIAkJd2hpbGUgKG9m ZnNldCA9PSAxNiB8fCBvZmZzZXQgPT0gMTcpCi0JCQlvZmZzZXQgPSBwcmFuZG9tX3UzMigpICUg KDMgKiBCSVRTX1BFUl9CWVRFKTsKKwkJCW9mZnNldCA9IHByYW5kb21fdTMyX21heCgzICogQklU U19QRVJfQllURSk7CiAJfQogCiAJcmV0dXJuIG9mZnNldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bXRkL3Rlc3RzL3N0cmVzc3Rlc3QuYyBiL2RyaXZlcnMvbXRkL3Rlc3RzL3N0cmVzc3Rlc3QuYwpp bmRleCBjYjI5YzhjMWIzNzAuLmQyZmFhY2E3ZjE5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQv dGVzdHMvc3RyZXNzdGVzdC5jCisrKyBiL2RyaXZlcnMvbXRkL3Rlc3RzL3N0cmVzc3Rlc3QuYwpA QCAtNDUsOSArNDUsOCBAQCBzdGF0aWMgaW50IHJhbmRfZWIodm9pZCkKIAl1bnNpZ25lZCBpbnQg ZWI7CiAKIGFnYWluOgotCWViID0gcHJhbmRvbV91MzIoKTsKIAkvKiBSZWFkIG9yIHdyaXRlIHVw IDIgZXJhc2VibG9ja3MgYXQgYSB0aW1lIC0gaGVuY2UgJ2ViY250IC0gMScgKi8KLQllYiAlPSAo ZWJjbnQgLSAxKTsKKwllYiA9IHByYW5kb21fdTMyX21heChlYmNudCAtIDEpOwogCWlmIChiYnRb ZWJdKQogCQlnb3RvIGFnYWluOwogCXJldHVybiBlYjsKQEAgLTU1LDIwICs1NCwxMiBAQCBzdGF0 aWMgaW50IHJhbmRfZWIodm9pZCkKIAogc3RhdGljIGludCByYW5kX29mZnModm9pZCkKIHsKLQl1 bnNpZ25lZCBpbnQgb2ZmczsKLQotCW9mZnMgPSBwcmFuZG9tX3UzMigpOwotCW9mZnMgJT0gYnVm c2l6ZTsKLQlyZXR1cm4gb2ZmczsKKwlyZXR1cm4gcHJhbmRvbV91MzJfbWF4KGJ1ZnNpemUpOwog fQogCiBzdGF0aWMgaW50IHJhbmRfbGVuKGludCBvZmZzKQogewotCXVuc2lnbmVkIGludCBsZW47 Ci0KLQlsZW4gPSBwcmFuZG9tX3UzMigpOwotCWxlbiAlPSAoYnVmc2l6ZSAtIG9mZnMpOwotCXJl dHVybiBsZW47CisJcmV0dXJuIHByYW5kb21fdTMyX21heChidWZzaXplIC0gb2Zmcyk7CiB9CiAK IHN0YXRpYyBpbnQgZG9fcmVhZCh2b2lkKQpAQCAtMTI3LDcgKzExOCw3IEBAIHN0YXRpYyBpbnQg ZG9fd3JpdGUodm9pZCkKIAogc3RhdGljIGludCBkb19vcGVyYXRpb24odm9pZCkKIHsKLQlpZiAo cHJhbmRvbV91MzIoKSAmIDEpCisJaWYgKHByYW5kb21fdTMyX21heCgyKSkKIAkJcmV0dXJuIGRv X3JlYWQoKTsKIAllbHNlCiAJCXJldHVybiBkb193cml0ZSgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tdGQvdWJpL2RlYnVnLmMgYi9kcml2ZXJzL210ZC91YmkvZGVidWcuYwppbmRleCAzMWQ0Mjdl ZTE5MWEuLjkwOGQwZTA4ODU1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvdWJpL2RlYnVnLmMK KysrIGIvZHJpdmVycy9tdGQvdWJpL2RlYnVnLmMKQEAgLTU5MCw3ICs1OTAsNyBAQCBpbnQgdWJp X2RiZ19wb3dlcl9jdXQoc3RydWN0IHViaV9kZXZpY2UgKnViaSwgaW50IGNhbGxlcikKIAogCQlp ZiAodWJpLT5kYmcucG93ZXJfY3V0X21heCA+IHViaS0+ZGJnLnBvd2VyX2N1dF9taW4pIHsKIAkJ CXJhbmdlID0gdWJpLT5kYmcucG93ZXJfY3V0X21heCAtIHViaS0+ZGJnLnBvd2VyX2N1dF9taW47 Ci0JCQl1YmktPmRiZy5wb3dlcl9jdXRfY291bnRlciArPSBwcmFuZG9tX3UzMigpICUgcmFuZ2U7 CisJCQl1YmktPmRiZy5wb3dlcl9jdXRfY291bnRlciArPSBwcmFuZG9tX3UzMl9tYXgocmFuZ2Up OwogCQl9CiAJCXJldHVybiAwOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3ViaS9kZWJ1 Zy5oIGIvZHJpdmVycy9tdGQvdWJpL2RlYnVnLmgKaW5kZXggMTE4MjQ4YTVkN2Q0Li5kYzhkOGY4 MzY1N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL3ViaS9kZWJ1Zy5oCisrKyBiL2RyaXZlcnMv bXRkL3ViaS9kZWJ1Zy5oCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHViaV9k YmdfaXNfYmd0X2Rpc2FibGVkKGNvbnN0IHN0cnVjdCB1YmlfZGV2aWNlICp1YmkpCiBzdGF0aWMg aW5saW5lIGludCB1YmlfZGJnX2lzX2JpdGZsaXAoY29uc3Qgc3RydWN0IHViaV9kZXZpY2UgKnVi aSkKIHsKIAlpZiAodWJpLT5kYmcuZW11bGF0ZV9iaXRmbGlwcykKLQkJcmV0dXJuICEocHJhbmRv bV91MzIoKSAlIDIwMCk7CisJCXJldHVybiAhcHJhbmRvbV91MzJfbWF4KDIwMCk7CiAJcmV0dXJu IDA7CiB9CiAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIGlubGluZSBpbnQgdWJpX2RiZ19pc19i aXRmbGlwKGNvbnN0IHN0cnVjdCB1YmlfZGV2aWNlICp1YmkpCiBzdGF0aWMgaW5saW5lIGludCB1 YmlfZGJnX2lzX3dyaXRlX2ZhaWx1cmUoY29uc3Qgc3RydWN0IHViaV9kZXZpY2UgKnViaSkKIHsK IAlpZiAodWJpLT5kYmcuZW11bGF0ZV9pb19mYWlsdXJlcykKLQkJcmV0dXJuICEocHJhbmRvbV91 MzIoKSAlIDUwMCk7CisJCXJldHVybiAhcHJhbmRvbV91MzJfbWF4KDUwMCk7CiAJcmV0dXJuIDA7 CiB9CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgaW5saW5lIGludCB1YmlfZGJnX2lzX3dy aXRlX2ZhaWx1cmUoY29uc3Qgc3RydWN0IHViaV9kZXZpY2UgKnViaSkKIHN0YXRpYyBpbmxpbmUg aW50IHViaV9kYmdfaXNfZXJhc2VfZmFpbHVyZShjb25zdCBzdHJ1Y3QgdWJpX2RldmljZSAqdWJp KQogewogCWlmICh1YmktPmRiZy5lbXVsYXRlX2lvX2ZhaWx1cmVzKQotCQlyZXR1cm4gIShwcmFu ZG9tX3UzMigpICUgNDAwKTsKKwkJcmV0dXJuICFwcmFuZG9tX3UzMl9tYXgoNDAwKTsKIAlyZXR1 cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vY25p Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vY25pYy5jCmluZGV4IGU4NjUwM2Q5 N2YzMi4uZjU5N2IzMTNhY2FhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9h ZGNvbS9jbmljLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vY25pYy5jCkBA IC00MTA1LDggKzQxMDUsNyBAQCBzdGF0aWMgaW50IGNuaWNfY21fYWxsb2NfbWVtKHN0cnVjdCBj bmljX2RldiAqZGV2KQogCWZvciAoaSA9IDA7IGkgPCBNQVhfQ01fU0tfVEJMX1NaOyBpKyspCiAJ CWF0b21pY19zZXQoJmNwLT5jc2tfdGJsW2ldLnJlZl9jb3VudCwgMCk7CiAKLQlwb3J0X2lkID0g cHJhbmRvbV91MzIoKTsKLQlwb3J0X2lkICU9IENOSUNfTE9DQUxfUE9SVF9SQU5HRTsKKwlwb3J0 X2lkID0gcHJhbmRvbV91MzJfbWF4KENOSUNfTE9DQUxfUE9SVF9SQU5HRSk7CiAJaWYgKGNuaWNf aW5pdF9pZF90YmwoJmNwLT5jc2tfcG9ydF90YmwsIENOSUNfTE9DQUxfUE9SVF9SQU5HRSwKIAkJ CSAgICAgQ05JQ19MT0NBTF9QT1JUX01JTiwgcG9ydF9pZCkpIHsKIAkJY25pY19jbV9mcmVlX21l bShkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9pbmxpbmVf Y3J5cHRvL2NodGxzL2NodGxzX2lvLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2lu bGluZV9jcnlwdG8vY2h0bHMvY2h0bHNfaW8uYwppbmRleCA1Mzk5OTJkYWQ4YmEuLmE0MjU2MDg3 YWM4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9pbmxpbmVfY3J5 cHRvL2NodGxzL2NodGxzX2lvLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9p bmxpbmVfY3J5cHRvL2NodGxzL2NodGxzX2lvLmMKQEAgLTkxOSw4ICs5MTksOCBAQCBzdGF0aWMg aW50IGNza193YWl0X21lbW9yeShzdHJ1Y3QgY2h0bHNfZGV2ICpjZGV2LAogCWN1cnJlbnRfdGlt ZW8gPSAqdGltZW9fcDsKIAlub2Jsb2NrID0gKCp0aW1lb19wID8gZmFsc2UgOiB0cnVlKTsKIAlp ZiAoY3NrX21lbV9mcmVlKGNkZXYsIHNrKSkgewotCQljdXJyZW50X3RpbWVvID0gKHByYW5kb21f dTMyKCkgJSAoSFogLyA1KSkgKyAyOwotCQl2bV93YWl0ID0gKHByYW5kb21fdTMyKCkgJSAoSFog LyA1KSkgKyAyOworCQljdXJyZW50X3RpbWVvID0gcHJhbmRvbV91MzJfbWF4KEhaIC8gNSkgKyAy OworCQl2bV93YWl0ID0gcHJhbmRvbV91MzJfbWF4KEhaIC8gNSkgKyAyOwogCX0KIAogCWFkZF93 YWl0X3F1ZXVlKHNrX3NsZWVwKHNrKSwgJndhaXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv aGFtcmFkaW8vYmF5Y29tX2VwcC5jIGIvZHJpdmVycy9uZXQvaGFtcmFkaW8vYmF5Y29tX2VwcC5j CmluZGV4IDNlNjkwNzllZDY5NC4uN2RmNzhhNzIxYjA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC9oYW1yYWRpby9iYXljb21fZXBwLmMKKysrIGIvZHJpdmVycy9uZXQvaGFtcmFkaW8vYmF5Y29t X2VwcC5jCkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIGludCB0cmFuc21pdChzdHJ1Y3QgYmF5 Y29tX3N0YXRlICpiYywgaW50IGNudCwgdW5zaWduZWQgY2hhciBzdGF0KQogCQkJaWYgKCgtLWJj LT5oZGxjdHguc2xvdGNudCkgPiAwKQogCQkJCXJldHVybiAwOwogCQkJYmMtPmhkbGN0eC5zbG90 Y250ID0gYmMtPmNoX3BhcmFtcy5zbG90dGltZTsKLQkJCWlmICgocHJhbmRvbV91MzIoKSAlIDI1 NikgPiBiYy0+Y2hfcGFyYW1zLnBwZXJzaXN0KQorCQkJaWYgKHByYW5kb21fdTMyX21heCgyNTYp ID4gYmMtPmNoX3BhcmFtcy5wcGVyc2lzdCkKIAkJCQlyZXR1cm4gMDsKIAkJfQogCX0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvL2hkbGNkcnYuYyBiL2RyaXZlcnMvbmV0L2hhbXJh ZGlvL2hkbGNkcnYuYwppbmRleCA4Mjk3NDExZTg3ZWEuLjM2MGQwNDFhNjJjNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvaGFtcmFkaW8vaGRsY2Rydi5jCisrKyBiL2RyaXZlcnMvbmV0L2hhbXJh ZGlvL2hkbGNkcnYuYwpAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgaGRsY2Rydl9hcmJpdHJhdGUo c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGhkbGNkcnZfc3RhdGUgKnMpCiAJaWYgKCgt LXMtPmhkbGN0eC5zbG90Y250KSA+IDApCiAJCXJldHVybjsKIAlzLT5oZGxjdHguc2xvdGNudCA9 IHMtPmNoX3BhcmFtcy5zbG90dGltZTsKLQlpZiAoKHByYW5kb21fdTMyKCkgJSAyNTYpID4gcy0+ Y2hfcGFyYW1zLnBwZXJzaXN0KQorCWlmIChwcmFuZG9tX3UzMl9tYXgoMjU2KSA+IHMtPmNoX3Bh cmFtcy5wcGVyc2lzdCkKIAkJcmV0dXJuOwogCXN0YXJ0X3R4KGRldiwgcyk7CiB9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC9oYW1yYWRpby95YW0uYyBiL2RyaXZlcnMvbmV0L2hhbXJhZGlvL3lh bS5jCmluZGV4IDk4MGYyYmUzMmYwNS4uOTdhNmNjNWM3YWU4IDEwMDY0NAotLS0gYS9kcml2ZXJz L25ldC9oYW1yYWRpby95YW0uYworKysgYi9kcml2ZXJzL25ldC9oYW1yYWRpby95YW0uYwpAQCAt NjI2LDcgKzYyNiw3IEBAIHN0YXRpYyB2b2lkIHlhbV9hcmJpdHJhdGUoc3RydWN0IG5ldF9kZXZp Y2UgKmRldikKIAl5cC0+c2xvdGNudCA9IHlwLT5zbG90IC8gMTA7CiAKIAkvKiBpcyByYW5kb20g PiBwZXJzaXN0ID8gKi8KLQlpZiAoKHByYW5kb21fdTMyKCkgJSAyNTYpID4geXAtPnBlcnMpCisJ aWYgKHByYW5kb21fdTMyX21heCgyNTYpID4geXAtPnBlcnMpCiAJCXJldHVybjsKIAogCXlhbV9z dGFydF90eChkZXYsIHlwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9hdDgwM3guYyBi L2RyaXZlcnMvbmV0L3BoeS9hdDgwM3guYwppbmRleCA1OWZlMzU2OTQyYjUuLjJhNzEwODM2MTI0 NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L2F0ODAzeC5jCisrKyBiL2RyaXZlcnMvbmV0 L3BoeS9hdDgwM3guYwpAQCAtMTczMiw3ICsxNzMyLDcgQEAgc3RhdGljIGludCBxY2E4MDh4X3Bo eV9mYXN0X3JldHJhaW5fY29uZmlnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiAKIHN0YXRp YyBpbnQgcWNhODA4eF9waHlfbXNfcmFuZG9tX3NlZWRfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpw aHlkZXYpCiB7Ci0JdTE2IHNlZWRfdmFsdWUgPSAocHJhbmRvbV91MzIoKSAlIFFDQTgwOFhfTUFT VEVSX1NMQVZFX1NFRURfUkFOR0UpOworCXUxNiBzZWVkX3ZhbHVlID0gcHJhbmRvbV91MzJfbWF4 KFFDQTgwOFhfTUFTVEVSX1NMQVZFX1NFRURfUkFOR0UpOwogCiAJcmV0dXJuIGF0ODAzeF9kZWJ1 Z19yZWdfbWFzayhwaHlkZXYsIFFDQTgwOFhfUEhZX0RFQlVHX0xPQ0FMX1NFRUQsCiAJCQlRQ0E4 MDhYX01BU1RFUl9TTEFWRV9TRUVEX0NGRywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYwppbmRleCA0NzkwNDFmMDcwZjku LjEwZDlkOWM2M2IyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20v YnJjbTgwMjExL2JyY21mbWFjL3AycC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2Fk Y29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYwpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgc3RhdGlj IHZvaWQgYnJjbWZfcDJwX2FmeF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlp ZiAoYWZ4X2hkbC0+aXNfbGlzdGVuICYmIGFmeF9oZGwtPm15X2xpc3Rlbl9jaGFuKQogCQkvKiAx MDBtcyB+IDMwMG1zICovCiAJCWVyciA9IGJyY21mX3AycF9kaXNjb3Zlcl9saXN0ZW4ocDJwLCBh ZnhfaGRsLT5teV9saXN0ZW5fY2hhbiwKLQkJCQkJCTEwMCAqICgxICsgcHJhbmRvbV91MzIoKSAl IDMpKTsKKwkJCQkJCTEwMCAqICgxICsgcHJhbmRvbV91MzJfbWF4KDMpKSk7CiAJZWxzZQogCQll cnIgPSBicmNtZl9wMnBfYWN0X2ZybV9zZWFyY2gocDJwLCBhZnhfaGRsLT5wZWVyX2xpc3Rlbl9j aGFuKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9t dm0vbWFjLWN0eHQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21h Yy1jdHh0LmMKaW5kZXggZWQ1ODZlNmQ3ZDY0Li5kZTBjNTQ1ZDUwZmQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYy1jdHh0LmMKKysrIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjLWN0eHQuYwpAQCAtMTA5OSw3 ICsxMDk5LDcgQEAgc3RhdGljIHZvaWQgaXdsX212bV9tYWNfY3R4dF9jbWRfZmlsbF9hcChzdHJ1 Y3QgaXdsX212bSAqbXZtLAogCQkJaXdsX212bV9tYWNfYXBfaXRlcmF0b3IsICZkYXRhKTsKIAog CQlpZiAoZGF0YS5iZWFjb25fZGV2aWNlX3RzKSB7Ci0JCQl1MzIgcmFuZCA9IChwcmFuZG9tX3Uz MigpICUgKDY0IC0gMzYpKSArIDM2OworCQkJdTMyIHJhbmQgPSBwcmFuZG9tX3UzMl9tYXgoNjQg LSAzNikgKyAzNjsKIAkJCW12bXZpZi0+YXBfYmVhY29uX3RpbWUgPSBkYXRhLmJlYWNvbl9kZXZp Y2VfdHMgKwogCQkJCWllZWU4MDIxMV90dV90b191c2VjKGRhdGEuYmVhY29uX2ludCAqIHJhbmQg LwogCQkJCQkJICAgICAxMDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2Zjb2UvZmNvZV9j dGxyLmMgYi9kcml2ZXJzL3Njc2kvZmNvZS9mY29lX2N0bHIuYwppbmRleCAzOWUxNmVhYjQ3YWEu LmRkYzA0ODA2OWFmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2Zjb2UvZmNvZV9jdGxyLmMK KysrIGIvZHJpdmVycy9zY3NpL2Zjb2UvZmNvZV9jdGxyLmMKQEAgLTIyMzMsNyArMjIzMyw3IEBA IHN0YXRpYyB2b2lkIGZjb2VfY3Rscl92bl9yZXN0YXJ0KHN0cnVjdCBmY29lX2N0bHIgKmZpcCkK IAogCWlmIChmaXAtPnByb2JlX3RyaWVzIDwgRklQX1ZOX1JMSU1fQ09VTlQpIHsKIAkJZmlwLT5w cm9iZV90cmllcysrOwotCQl3YWl0ID0gcHJhbmRvbV91MzIoKSAlIEZJUF9WTl9QUk9CRV9XQUlU OworCQl3YWl0ID0gcHJhbmRvbV91MzJfbWF4KEZJUF9WTl9QUk9CRV9XQUlUKTsKIAl9IGVsc2UK IAkJd2FpdCA9IEZJUF9WTl9STElNX0lOVDsKIAltb2RfdGltZXIoJmZpcC0+dGltZXIsIGppZmZp ZXMgKyBtc2Vjc190b19qaWZmaWVzKHdhaXQpKTsKQEAgLTMxMjUsNyArMzEyNSw3IEBAIHN0YXRp YyB2b2lkIGZjb2VfY3Rscl92bl90aW1lb3V0KHN0cnVjdCBmY29lX2N0bHIgKmZpcCkKIAkJCQkJ ICBmY29lX2FsbF92bjJ2biwgMCk7CiAJCQlmaXAtPnBvcnRfa2FfdGltZSA9IGppZmZpZXMgKwog CQkJCSBtc2Vjc190b19qaWZmaWVzKEZJUF9WTl9CRUFDT05fSU5UICsKLQkJCQkJKHByYW5kb21f dTMyKCkgJSBGSVBfVk5fQkVBQ09OX0ZVWlopKTsKKwkJCQkJcHJhbmRvbV91MzJfbWF4KEZJUF9W Tl9CRUFDT05fRlVaWikpOwogCQl9CiAJCWlmICh0aW1lX2JlZm9yZShmaXAtPnBvcnRfa2FfdGlt ZSwgbmV4dF90aW1lKSkKIAkJCW5leHRfdGltZSA9IGZpcC0+cG9ydF9rYV90aW1lOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9zY3NpL3FlZGkvcWVkaV9tYWluLmMgYi9kcml2ZXJzL3Njc2kvcWVkaS9x ZWRpX21haW4uYwppbmRleCBjZWNmYjJjYjRjN2IuLmRmMmZlN2JkMjZkMSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9zY3NpL3FlZGkvcWVkaV9tYWluLmMKKysrIGIvZHJpdmVycy9zY3NpL3FlZGkvcWVk aV9tYWluLmMKQEAgLTYxOCw3ICs2MTgsNyBAQCBzdGF0aWMgaW50IHFlZGlfY21fYWxsb2NfbWVt KHN0cnVjdCBxZWRpX2N0eCAqcWVkaSkKIAkJCQlzaXplb2Yoc3RydWN0IHFlZGlfZW5kcG9pbnQg KikpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIXFlZGktPmVwX3RibCkKIAkJcmV0dXJuIC1FTk9NRU07 Ci0JcG9ydF9pZCA9IHByYW5kb21fdTMyKCkgJSBRRURJX0xPQ0FMX1BPUlRfUkFOR0U7CisJcG9y dF9pZCA9IHByYW5kb21fdTMyX21heChRRURJX0xPQ0FMX1BPUlRfUkFOR0UpOwogCWlmIChxZWRp X2luaXRfaWRfdGJsKCZxZWRpLT5sY2xfcG9ydF90YmwsIFFFRElfTE9DQUxfUE9SVF9SQU5HRSwK IAkJCSAgICAgUUVESV9MT0NBTF9QT1JUX01JTiwgcG9ydF9pZCkpIHsKIAkJcWVkaV9jbV9mcmVl X21lbShxZWRpKTsKZGlmZiAtLWdpdCBhL2ZzL2NlcGgvaW5vZGUuYyBiL2ZzL2NlcGgvaW5vZGUu YwppbmRleCA0MjM1MWQ3YTBkZDYuLmYwYzZlN2U3YjkyYiAxMDA2NDQKLS0tIGEvZnMvY2VwaC9p bm9kZS5jCisrKyBiL2ZzL2NlcGgvaW5vZGUuYwpAQCAtMzYyLDcgKzM2Miw3IEBAIHN0YXRpYyBp bnQgY2VwaF9maWxsX2ZyYWd0cmVlKHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJaWYgKG5zcGxpdHMg IT0gY2ktPmlfZnJhZ3RyZWVfbnNwbGl0cykgewogCQl1cGRhdGUgPSB0cnVlOwogCX0gZWxzZSBp ZiAobnNwbGl0cykgewotCQlpID0gcHJhbmRvbV91MzIoKSAlIG5zcGxpdHM7CisJCWkgPSBwcmFu ZG9tX3UzMl9tYXgobnNwbGl0cyk7CiAJCWlkID0gbGUzMl90b19jcHUoZnJhZ3RyZWUtPnNwbGl0 c1tpXS5mcmFnKTsKIAkJaWYgKCFfX2NlcGhfZmluZF9mcmFnKGNpLCBpZCkpCiAJCQl1cGRhdGUg PSB0cnVlOwpkaWZmIC0tZ2l0IGEvZnMvY2VwaC9tZHNtYXAuYyBiL2ZzL2NlcGgvbWRzbWFwLmMK aW5kZXggOGQwYTZkMmMyZGE0Li4zZmJhYmM5OGUxZjcgMTAwNjQ0Ci0tLSBhL2ZzL2NlcGgvbWRz bWFwLmMKKysrIGIvZnMvY2VwaC9tZHNtYXAuYwpAQCAtMjksNyArMjksNyBAQCBzdGF0aWMgaW50 IF9fbWRzbWFwX2dldF9yYW5kb21fbWRzKHN0cnVjdCBjZXBoX21kc21hcCAqbSwgYm9vbCBpZ25v cmVfbGFnZ3kpCiAJCXJldHVybiAtMTsKIAogCS8qIHBpY2sgKi8KLQluID0gcHJhbmRvbV91MzIo KSAlIG47CisJbiA9IHByYW5kb21fdTMyX21heChuKTsKIAlmb3IgKGogPSAwLCBpID0gMDsgaSA8 IG0tPnBvc3NpYmxlX21heF9yYW5rOyBpKyspIHsKIAkJaWYgKENFUEhfTURTX0lTX1JFQURZKGks IGlnbm9yZV9sYWdneSkpCiAJCQlqKys7CmRpZmYgLS1naXQgYS9mcy9leHQyL2lhbGxvYy5jIGIv ZnMvZXh0Mi9pYWxsb2MuYwppbmRleCA5OThkZDJhYzgwMDguLmY0OTQ0YzRkZWU2MCAxMDA2NDQK LS0tIGEvZnMvZXh0Mi9pYWxsb2MuYworKysgYi9mcy9leHQyL2lhbGxvYy5jCkBAIC0yNzcsOCAr Mjc3LDcgQEAgc3RhdGljIGludCBmaW5kX2dyb3VwX29ybG92KHN0cnVjdCBzdXBlcl9ibG9jayAq c2IsIHN0cnVjdCBpbm9kZSAqcGFyZW50KQogCQlpbnQgYmVzdF9uZGlyID0gaW5vZGVzX3Blcl9n cm91cDsKIAkJaW50IGJlc3RfZ3JvdXAgPSAtMTsKIAotCQlncm91cCA9IHByYW5kb21fdTMyKCk7 Ci0JCXBhcmVudF9ncm91cCA9ICh1bnNpZ25lZClncm91cCAlIG5ncm91cHM7CisJCXBhcmVudF9n cm91cCA9IHByYW5kb21fdTMyX21heChuZ3JvdXBzKTsKIAkJZm9yIChpID0gMDsgaSA8IG5ncm91 cHM7IGkrKykgewogCQkJZ3JvdXAgPSAocGFyZW50X2dyb3VwICsgaSkgJSBuZ3JvdXBzOwogCQkJ ZGVzYyA9IGV4dDJfZ2V0X2dyb3VwX2Rlc2MgKHNiLCBncm91cCwgTlVMTCk7CmRpZmYgLS1naXQg YS9mcy9leHQ0L2lhbGxvYy5jIGIvZnMvZXh0NC9pYWxsb2MuYwppbmRleCBmNzNlNWViNDNlYWUu LjM2ZDViYzU5NWNjMiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9pYWxsb2MuYworKysgYi9mcy9leHQ0 L2lhbGxvYy5jCkBAIC00NjMsMTAgKzQ2Myw5IEBAIHN0YXRpYyBpbnQgZmluZF9ncm91cF9vcmxv dihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgaW5vZGUgKnBhcmVudCwKIAkJCWhpbmZv Lmhhc2hfdmVyc2lvbiA9IERYX0hBU0hfSEFMRl9NRDQ7CiAJCQloaW5mby5zZWVkID0gc2JpLT5z X2hhc2hfc2VlZDsKIAkJCWV4dDRmc19kaXJoYXNoKHBhcmVudCwgcXN0ci0+bmFtZSwgcXN0ci0+ bGVuLCAmaGluZm8pOwotCQkJZ3JwID0gaGluZm8uaGFzaDsKKwkJCXBhcmVudF9ncm91cCA9IGhp bmZvLmhhc2ggJSBuZ3JvdXBzOwogCQl9IGVsc2UKLQkJCWdycCA9IHByYW5kb21fdTMyKCk7Ci0J CXBhcmVudF9ncm91cCA9ICh1bnNpZ25lZClncnAgJSBuZ3JvdXBzOworCQkJcGFyZW50X2dyb3Vw ID0gcHJhbmRvbV91MzJfbWF4KG5ncm91cHMpOwogCQlmb3IgKGkgPSAwOyBpIDwgbmdyb3Vwczsg aSsrKSB7CiAJCQlnID0gKHBhcmVudF9ncm91cCArIGkpICUgbmdyb3VwczsKIAkJCWdldF9vcmxv dl9zdGF0cyhzYiwgZywgZmxleF9zaXplLCAmc3RhdHMpOwpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9z dXBlci5jIGIvZnMvZXh0NC9zdXBlci5jCmluZGV4IDlhNjZhYmNjYTFhOC4uNGFmMzUxMzIwMDc1 IDEwMDY0NAotLS0gYS9mcy9leHQ0L3N1cGVyLmMKKysrIGIvZnMvZXh0NC9zdXBlci5jCkBAIC0z ODExLDggKzM4MTEsNyBAQCBzdGF0aWMgaW50IGV4dDRfbGF6eWluaXRfdGhyZWFkKHZvaWQgKmFy ZykKIAkJCX0KIAkJCWlmICghcHJvZ3Jlc3MpIHsKIAkJCQllbHItPmxyX25leHRfc2NoZWQgPSBq aWZmaWVzICsKLQkJCQkJKHByYW5kb21fdTMyKCkKLQkJCQkJICUgKEVYVDRfREVGX0xJX01BWF9T VEFSVF9ERUxBWSAqIEhaKSk7CisJCQkJCXByYW5kb21fdTMyX21heChFWFQ0X0RFRl9MSV9NQVhf U1RBUlRfREVMQVkgKiBIWik7CiAJCQl9CiAJCQlpZiAodGltZV9iZWZvcmUoZWxyLT5scl9uZXh0 X3NjaGVkLCBuZXh0X3dha2V1cCkpCiAJCQkJbmV4dF93YWtldXAgPSBlbHItPmxyX25leHRfc2No ZWQ7CkBAIC0zOTU5LDggKzM5NTgsOCBAQCBzdGF0aWMgc3RydWN0IGV4dDRfbGlfcmVxdWVzdCAq ZXh0NF9saV9yZXF1ZXN0X25ldyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogCSAqIHNwcmVhZCB0 aGUgaW5vZGUgdGFibGUgaW5pdGlhbGl6YXRpb24gcmVxdWVzdHMKIAkgKiBiZXR0ZXIuCiAJICov Ci0JZWxyLT5scl9uZXh0X3NjaGVkID0gamlmZmllcyArIChwcmFuZG9tX3UzMigpICUKLQkJCQko RVhUNF9ERUZfTElfTUFYX1NUQVJUX0RFTEFZICogSFopKTsKKwllbHItPmxyX25leHRfc2NoZWQg PSBqaWZmaWVzICsgcHJhbmRvbV91MzJfbWF4KAorCQkJCUVYVDRfREVGX0xJX01BWF9TVEFSVF9E RUxBWSAqIEhaKTsKIAlyZXR1cm4gZWxyOwogfQogCmRpZmYgLS1naXQgYS9mcy9mMmZzL2djLmMg Yi9mcy9mMmZzL2djLmMKaW5kZXggNmRhMjFkNDA1Y2UxLi4yYzVmZDFkYjNhM2UgMTAwNjQ0Ci0t LSBhL2ZzL2YyZnMvZ2MuYworKysgYi9mcy9mMmZzL2djLmMKQEAgLTI4NSw3ICsyODUsNyBAQCBz dGF0aWMgdm9pZCBzZWxlY3RfcG9saWN5KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgaW50IGdj X3R5cGUsCiAKIAkvKiBsZXQncyBzZWxlY3QgYmVnaW5uaW5nIGhvdC9zbWFsbCBzcGFjZSBmaXJz dCBpbiBub19oZWFwIG1vZGUqLwogCWlmIChmMmZzX25lZWRfcmFuZF9zZWcoc2JpKSkKLQkJcC0+ b2Zmc2V0ID0gcHJhbmRvbV91MzIoKSAlIChNQUlOX1NFQ1Moc2JpKSAqIHNiaS0+c2Vnc19wZXJf c2VjKTsKKwkJcC0+b2Zmc2V0ID0gcHJhbmRvbV91MzJfbWF4KE1BSU5fU0VDUyhzYmkpICogc2Jp LT5zZWdzX3Blcl9zZWMpOwogCWVsc2UgaWYgKHRlc3Rfb3B0KHNiaSwgTk9IRUFQKSAmJgogCQko dHlwZSA9PSBDVVJTRUdfSE9UX0RBVEEgfHwgSVNfTk9ERVNFRyh0eXBlKSkpCiAJCXAtPm9mZnNl dCA9IDA7CmRpZmYgLS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuYyBiL2ZzL2YyZnMvc2VnbWVudC5j CmluZGV4IDBkZTIxZjgyZDdiYy4uNTA3Zjc3ZjgzOWYzIDEwMDY0NAotLS0gYS9mcy9mMmZzL3Nl Z21lbnQuYworKysgYi9mcy9mMmZzL3NlZ21lbnQuYwpAQCAtMjUzNSw3ICsyNTM1LDcgQEAgc3Rh dGljIHVuc2lnbmVkIGludCBfX2dldF9uZXh0X3NlZ25vKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwgaW50IHR5cGUpCiAKIAlzYW5pdHlfY2hlY2tfc2VnX3R5cGUoc2JpLCBzZWdfdHlwZSk7CiAJ aWYgKGYyZnNfbmVlZF9yYW5kX3NlZyhzYmkpKQotCQlyZXR1cm4gcHJhbmRvbV91MzIoKSAlIChN QUlOX1NFQ1Moc2JpKSAqIHNiaS0+c2Vnc19wZXJfc2VjKTsKKwkJcmV0dXJuIHByYW5kb21fdTMy X21heChNQUlOX1NFQ1Moc2JpKSAqIHNiaS0+c2Vnc19wZXJfc2VjKTsKIAogCS8qIGlmIHNlZ3Nf cGVyX3NlYyBpcyBsYXJnZSB0aGFuIDEsIHdlIG5lZWQgdG8ga2VlcCBvcmlnaW5hbCBwb2xpY3ku ICovCiAJaWYgKF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQpAQCAtMjU4OSw3ICsyNTg5LDcgQEAg c3RhdGljIHZvaWQgbmV3X2N1cnNlZyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCB0eXBl LCBib29sIG5ld19zZWMpCiAJY3Vyc2VnLT5hbGxvY190eXBlID0gTEZTOwogCWlmIChGMkZTX09Q VElPTihzYmkpLmZzX21vZGUgPT0gRlNfTU9ERV9GUkFHTUVOVF9CTEspCiAJCWN1cnNlZy0+ZnJh Z21lbnRfcmVtYWluZWRfY2h1bmsgPQotCQkJCXByYW5kb21fdTMyKCkgJSBzYmktPm1heF9mcmFn bWVudF9jaHVuayArIDE7CisJCQkJcHJhbmRvbV91MzJfbWF4KHNiaS0+bWF4X2ZyYWdtZW50X2No dW5rKSArIDE7CiB9CiAKIHN0YXRpYyBpbnQgX19uZXh0X2ZyZWVfYmxrb2ZmKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwKQEAgLTI2MjYsOSArMjYyNiw5IEBAIHN0YXRpYyB2b2lkIF9fcmVmcmVz aF9uZXh0X2Jsa29mZihzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCiAJCQkvKiBUbyBhbGxvY2F0 ZSBibG9jayBjaHVua3MgaW4gZGlmZmVyZW50IHNpemVzLCB1c2UgcmFuZG9tIG51bWJlciAqLwog CQkJaWYgKC0tc2VnLT5mcmFnbWVudF9yZW1haW5lZF9jaHVuayA8PSAwKSB7CiAJCQkJc2VnLT5m cmFnbWVudF9yZW1haW5lZF9jaHVuayA9Ci0JCQkJICAgcHJhbmRvbV91MzIoKSAlIHNiaS0+bWF4 X2ZyYWdtZW50X2NodW5rICsgMTsKKwkJCQkgICBwcmFuZG9tX3UzMl9tYXgoc2JpLT5tYXhfZnJh Z21lbnRfY2h1bmspICsgMTsKIAkJCQlzZWctPm5leHRfYmxrb2ZmICs9Ci0JCQkJICAgcHJhbmRv bV91MzIoKSAlIHNiaS0+bWF4X2ZyYWdtZW50X2hvbGUgKyAxOworCQkJCSAgIHByYW5kb21fdTMy X21heChzYmktPm1heF9mcmFnbWVudF9ob2xlKSArIDE7CiAJCQl9CiAJCX0KIAl9CmRpZmYgLS1n aXQgYS9mcy91Ymlmcy9kZWJ1Zy5jIGIvZnMvdWJpZnMvZGVidWcuYwppbmRleCBmYzcxOGY2MTc4 ZjIuLmY0ZDNiNTY4YWE2NCAxMDA2NDQKLS0tIGEvZnMvdWJpZnMvZGVidWcuYworKysgYi9mcy91 Ymlmcy9kZWJ1Zy5jCkBAIC0yNDY3LDcgKzI0NjcsNyBAQCBpbnQgZGJnX2NoZWNrX25vbmRhdGFf bm9kZXNfb3JkZXIoc3RydWN0IHViaWZzX2luZm8gKmMsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQp CiAKIHN0YXRpYyBpbmxpbmUgaW50IGNoYW5jZSh1bnNpZ25lZCBpbnQgbiwgdW5zaWduZWQgaW50 IG91dF9vZikKIHsKLQlyZXR1cm4gISEoKHByYW5kb21fdTMyKCkgJSBvdXRfb2YpICsgMSA8PSBu KTsKKwlyZXR1cm4gISEocHJhbmRvbV91MzJfbWF4KG91dF9vZikgKyAxIDw9IG4pOwogCiB9CiAK QEAgLTI0ODUsMTMgKzI0ODUsMTMgQEAgc3RhdGljIGludCBwb3dlcl9jdXRfZW11bGF0ZWQoc3Ry dWN0IHViaWZzX2luZm8gKmMsIGludCBsbnVtLCBpbnQgd3JpdGUpCiAJCQlpZiAoY2hhbmNlKDEs IDIpKSB7CiAJCQkJZC0+cGNfZGVsYXkgPSAxOwogCQkJCS8qIEZhaWwgd2l0aGluIDEgbWludXRl ICovCi0JCQkJZGVsYXkgPSBwcmFuZG9tX3UzMigpICUgNjAwMDA7CisJCQkJZGVsYXkgPSBwcmFu ZG9tX3UzMl9tYXgoNjAwMDApOwogCQkJCWQtPnBjX3RpbWVvdXQgPSBqaWZmaWVzOwogCQkJCWQt PnBjX3RpbWVvdXQgKz0gbXNlY3NfdG9famlmZmllcyhkZWxheSk7CiAJCQkJdWJpZnNfd2Fybihj LCAiZmFpbGluZyBhZnRlciAlbHVtcyIsIGRlbGF5KTsKIAkJCX0gZWxzZSB7CiAJCQkJZC0+cGNf ZGVsYXkgPSAyOwotCQkJCWRlbGF5ID0gcHJhbmRvbV91MzIoKSAlIDEwMDAwOworCQkJCWRlbGF5 ID0gcHJhbmRvbV91MzJfbWF4KDEwMDAwKTsKIAkJCQkvKiBGYWlsIHdpdGhpbiAxMDAwMCBvcGVy YXRpb25zICovCiAJCQkJZC0+cGNfY250X21heCA9IGRlbGF5OwogCQkJCXViaWZzX3dhcm4oYywg ImZhaWxpbmcgYWZ0ZXIgJWx1IGNhbGxzIiwgZGVsYXkpOwpAQCAtMjU3MSw3ICsyNTcxLDcgQEAg c3RhdGljIGludCBjb3JydXB0X2RhdGEoY29uc3Qgc3RydWN0IHViaWZzX2luZm8gKmMsIGNvbnN0 IHZvaWQgKmJ1ZiwKIAl1bnNpZ25lZCBpbnQgZnJvbSwgdG8sIGZmcyA9IGNoYW5jZSgxLCAyKTsK IAl1bnNpZ25lZCBjaGFyICpwID0gKHZvaWQgKilidWY7CiAKLQlmcm9tID0gcHJhbmRvbV91MzIo KSAlIGxlbjsKKwlmcm9tID0gcHJhbmRvbV91MzJfbWF4KGxlbik7CiAJLyogQ29ycnVwdGlvbiBz cGFuIG1heCB0byBlbmQgb2Ygd3JpdGUgdW5pdCAqLwogCXRvID0gbWluKGxlbiwgQUxJR04oZnJv bSArIDEsIGMtPm1heF93cml0ZV9zaXplKSk7CiAKZGlmZiAtLWdpdCBhL2ZzL3ViaWZzL2xwdF9j b21taXQuYyBiL2ZzL3ViaWZzL2xwdF9jb21taXQuYwppbmRleCBkNzZhMTllNDYwY2QuLmNmYmMz MWY3MDlmNCAxMDA2NDQKLS0tIGEvZnMvdWJpZnMvbHB0X2NvbW1pdC5jCisrKyBiL2ZzL3ViaWZz L2xwdF9jb21taXQuYwpAQCAtMTk3MCwyOCArMTk3MCwyOCBAQCBzdGF0aWMgaW50IGRiZ19wb3B1 bGF0ZV9sc2F2ZShzdHJ1Y3QgdWJpZnNfaW5mbyAqYykKIAogCWlmICghZGJnX2lzX2Noa19nZW4o YykpCiAJCXJldHVybiAwOwotCWlmIChwcmFuZG9tX3UzMigpICYgMykKKwlpZiAocHJhbmRvbV91 MzJfbWF4KDQpKQogCQlyZXR1cm4gMDsKIAogCWZvciAoaSA9IDA7IGkgPCBjLT5sc2F2ZV9jbnQ7 IGkrKykKIAkJYy0+bHNhdmVbaV0gPSBjLT5tYWluX2ZpcnN0OwogCiAJbGlzdF9mb3JfZWFjaF9l bnRyeShscHJvcHMsICZjLT5lbXB0eV9saXN0LCBsaXN0KQotCQljLT5sc2F2ZVtwcmFuZG9tX3Uz MigpICUgYy0+bHNhdmVfY250XSA9IGxwcm9wcy0+bG51bTsKKwkJYy0+bHNhdmVbcHJhbmRvbV91 MzJfbWF4KGMtPmxzYXZlX2NudCldID0gbHByb3BzLT5sbnVtOwogCWxpc3RfZm9yX2VhY2hfZW50 cnkobHByb3BzLCAmYy0+ZnJlZWFibGVfbGlzdCwgbGlzdCkKLQkJYy0+bHNhdmVbcHJhbmRvbV91 MzIoKSAlIGMtPmxzYXZlX2NudF0gPSBscHJvcHMtPmxudW07CisJCWMtPmxzYXZlW3ByYW5kb21f dTMyX21heChjLT5sc2F2ZV9jbnQpXSA9IGxwcm9wcy0+bG51bTsKIAlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGxwcm9wcywgJmMtPmZyZGlfaWR4X2xpc3QsIGxpc3QpCi0JCWMtPmxzYXZlW3ByYW5kb21f dTMyKCkgJSBjLT5sc2F2ZV9jbnRdID0gbHByb3BzLT5sbnVtOworCQljLT5sc2F2ZVtwcmFuZG9t X3UzMl9tYXgoYy0+bHNhdmVfY250KV0gPSBscHJvcHMtPmxudW07CiAKIAloZWFwID0gJmMtPmxw dF9oZWFwW0xQUk9QU19ESVJUWV9JRFggLSAxXTsKIAlmb3IgKGkgPSAwOyBpIDwgaGVhcC0+Y250 OyBpKyspCi0JCWMtPmxzYXZlW3ByYW5kb21fdTMyKCkgJSBjLT5sc2F2ZV9jbnRdID0gaGVhcC0+ YXJyW2ldLT5sbnVtOworCQljLT5sc2F2ZVtwcmFuZG9tX3UzMl9tYXgoYy0+bHNhdmVfY250KV0g PSBoZWFwLT5hcnJbaV0tPmxudW07CiAJaGVhcCA9ICZjLT5scHRfaGVhcFtMUFJPUFNfRElSVFkg LSAxXTsKIAlmb3IgKGkgPSAwOyBpIDwgaGVhcC0+Y250OyBpKyspCi0JCWMtPmxzYXZlW3ByYW5k b21fdTMyKCkgJSBjLT5sc2F2ZV9jbnRdID0gaGVhcC0+YXJyW2ldLT5sbnVtOworCQljLT5sc2F2 ZVtwcmFuZG9tX3UzMl9tYXgoYy0+bHNhdmVfY250KV0gPSBoZWFwLT5hcnJbaV0tPmxudW07CiAJ aGVhcCA9ICZjLT5scHRfaGVhcFtMUFJPUFNfRlJFRSAtIDFdOwogCWZvciAoaSA9IDA7IGkgPCBo ZWFwLT5jbnQ7IGkrKykKLQkJYy0+bHNhdmVbcHJhbmRvbV91MzIoKSAlIGMtPmxzYXZlX2NudF0g PSBoZWFwLT5hcnJbaV0tPmxudW07CisJCWMtPmxzYXZlW3ByYW5kb21fdTMyX21heChjLT5sc2F2 ZV9jbnQpXSA9IGhlYXAtPmFycltpXS0+bG51bTsKIAogCXJldHVybiAxOwogfQpkaWZmIC0tZ2l0 IGEvZnMvdWJpZnMvdG5jX2NvbW1pdC5jIGIvZnMvdWJpZnMvdG5jX2NvbW1pdC5jCmluZGV4IDU4 YzkyYzk2ZWNlZi4uMDEzNjJhZDVmODA0IDEwMDY0NAotLS0gYS9mcy91Ymlmcy90bmNfY29tbWl0 LmMKKysrIGIvZnMvdWJpZnMvdG5jX2NvbW1pdC5jCkBAIC03MDAsNyArNzAwLDcgQEAgc3RhdGlj IGludCBhbGxvY19pZHhfbGVicyhzdHJ1Y3QgdWJpZnNfaW5mbyAqYywgaW50IGNudCkKIAkJYy0+ aWxlYnNbYy0+aWxlYl9jbnQrK10gPSBsbnVtOwogCQlkYmdfY210KCJMRUIgJWQiLCBsbnVtKTsK IAl9Ci0JaWYgKGRiZ19pc19jaGtfaW5kZXgoYykgJiYgIShwcmFuZG9tX3UzMigpICYgNykpCisJ aWYgKGRiZ19pc19jaGtfaW5kZXgoYykgJiYgIXByYW5kb21fdTMyX21heCg4KSkKIAkJcmV0dXJu IC1FTk9TUEM7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9mcy94ZnMvbGlieGZzL3hmc19h bGxvYy5jIGIvZnMveGZzL2xpYnhmcy94ZnNfYWxsb2MuYwppbmRleCBlMmJkZjA4OWMwYTMuLjYy NjE1OTliYjM4OSAxMDA2NDQKLS0tIGEvZnMveGZzL2xpYnhmcy94ZnNfYWxsb2MuYworKysgYi9m cy94ZnMvbGlieGZzL3hmc19hbGxvYy5jCkBAIC0xNTIwLDcgKzE1MjAsNyBAQCB4ZnNfYWxsb2Nf YWdfdmV4dGVudF9sYXN0YmxvY2soCiAKICNpZmRlZiBERUJVRwogCS8qIFJhbmRvbWx5IGRvbid0 IGV4ZWN1dGUgdGhlIGZpcnN0IGFsZ29yaXRobS4gKi8KLQlpZiAocHJhbmRvbV91MzIoKSAmIDEp CisJaWYgKHByYW5kb21fdTMyX21heCgyKSkKIAkJcmV0dXJuIDA7CiAjZW5kaWYKIApkaWZmIC0t Z2l0IGEvZnMveGZzL2xpYnhmcy94ZnNfaWFsbG9jLmMgYi9mcy94ZnMvbGlieGZzL3hmc19pYWxs b2MuYwppbmRleCA2Y2RmZDY0YmM1NmIuLjc4MzhiMzExMjZlMiAxMDA2NDQKLS0tIGEvZnMveGZz L2xpYnhmcy94ZnNfaWFsbG9jLmMKKysrIGIvZnMveGZzL2xpYnhmcy94ZnNfaWFsbG9jLmMKQEAg LTYzNiw3ICs2MzYsNyBAQCB4ZnNfaWFsbG9jX2FnX2FsbG9jKAogCS8qIHJhbmRvbWx5IGRvIHNw YXJzZSBpbm9kZSBhbGxvY2F0aW9ucyAqLwogCWlmICh4ZnNfaGFzX3NwYXJzZWlub2Rlcyh0cC0+ dF9tb3VudHApICYmCiAJICAgIGlnZW8tPmlhbGxvY19taW5fYmxrcyA8IGlnZW8tPmlhbGxvY19i bGtzKQotCQlkb19zcGFyc2UgPSBwcmFuZG9tX3UzMigpICYgMTsKKwkJZG9fc3BhcnNlID0gcHJh bmRvbV91MzJfbWF4KDIpOwogI2VuZGlmCiAKIAkvKgpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19l cnJvci5jIGIvZnMveGZzL3hmc19lcnJvci5jCmluZGV4IDI5NmZhYTQxZDgxZC4uN2RiNTg4ZWQw YmU1IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2Vycm9yLmMKKysrIGIvZnMveGZzL3hmc19lcnJv ci5jCkBAIC0yNzQsNyArMjc0LDcgQEAgeGZzX2Vycm9ydGFnX3Rlc3QoCiAKIAlBU1NFUlQoZXJy b3JfdGFnIDwgWEZTX0VSUlRBR19NQVgpOwogCXJhbmRmYWN0b3IgPSBtcC0+bV9lcnJvcnRhZ1tl cnJvcl90YWddOwotCWlmICghcmFuZGZhY3RvciB8fCBwcmFuZG9tX3UzMigpICUgcmFuZGZhY3Rv cikKKwlpZiAoIXJhbmRmYWN0b3IgfHwgcHJhbmRvbV91MzJfbWF4KHJhbmRmYWN0b3IpKQogCQly ZXR1cm4gZmFsc2U7CiAKIAl4ZnNfd2Fybl9yYXRlbGltaXRlZChtcCwKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvbGludXgvbm9kZW1hc2suaCBiL2luY2x1ZGUvbGludXgvbm9kZW1hc2suaAppbmRleCA0 YjcxYTk2MTkwYTguLjY2ZWU5YjRiNzkyNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ub2Rl bWFzay5oCisrKyBiL2luY2x1ZGUvbGludXgvbm9kZW1hc2suaApAQCAtNTA5LDcgKzUwOSw3IEBA IHN0YXRpYyBpbmxpbmUgaW50IG5vZGVfcmFuZG9tKGNvbnN0IG5vZGVtYXNrX3QgKm1hc2twKQog CXcgPSBub2Rlc193ZWlnaHQoKm1hc2twKTsKIAlpZiAodykKIAkJYml0ID0gYml0bWFwX29yZF90 b19wb3MobWFza3AtPmJpdHMsCi0JCQlnZXRfcmFuZG9tX2ludCgpICUgdywgTUFYX05VTU5PREVT KTsKKwkJCXByYW5kb21fdTMyX21heCh3KSwgTUFYX05VTU5PREVTKTsKIAlyZXR1cm4gYml0Owog I2Vsc2UKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvY29yZS5jIGIva2VybmVs L2JwZi9jb3JlLmMKaW5kZXggM2Q5ZWIzYWUzMzRjLi5hZGU2YjAzYjFkOWIgMTAwNjQ0Ci0tLSBh L2tlcm5lbC9icGYvY29yZS5jCisrKyBiL2tlcm5lbC9icGYvY29yZS5jCkBAIC0xMDI3LDcgKzEw MjcsNyBAQCBicGZfaml0X2JpbmFyeV9hbGxvYyh1bnNpZ25lZCBpbnQgcHJvZ2xlbiwgdTggKipp bWFnZV9wdHIsCiAJaGRyLT5zaXplID0gc2l6ZTsKIAlob2xlID0gbWluX3QodW5zaWduZWQgaW50 LCBzaXplIC0gKHByb2dsZW4gKyBzaXplb2YoKmhkcikpLAogCQkgICAgIFBBR0VfU0laRSAtIHNp emVvZigqaGRyKSk7Ci0Jc3RhcnQgPSAoZ2V0X3JhbmRvbV9pbnQoKSAlIGhvbGUpICYgfihhbGln bm1lbnQgLSAxKTsKKwlzdGFydCA9IHByYW5kb21fdTMyX21heChob2xlKSAmIH4oYWxpZ25tZW50 IC0gMSk7CiAKIAkvKiBMZWF2ZSBhIHJhbmRvbSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIGJlZm9y ZSBCUEYgY29kZS4gKi8KIAkqaW1hZ2VfcHRyID0gJmhkci0+aW1hZ2Vbc3RhcnRdOwpAQCAtMTA4 OSw3ICsxMDg5LDcgQEAgYnBmX2ppdF9iaW5hcnlfcGFja19hbGxvYyh1bnNpZ25lZCBpbnQgcHJv Z2xlbiwgdTggKippbWFnZV9wdHIsCiAKIAlob2xlID0gbWluX3QodW5zaWduZWQgaW50LCBzaXpl IC0gKHByb2dsZW4gKyBzaXplb2YoKnJvX2hlYWRlcikpLAogCQkgICAgIEJQRl9QUk9HX0NIVU5L X1NJWkUgLSBzaXplb2YoKnJvX2hlYWRlcikpOwotCXN0YXJ0ID0gKGdldF9yYW5kb21faW50KCkg JSBob2xlKSAmIH4oYWxpZ25tZW50IC0gMSk7CisJc3RhcnQgPSBwcmFuZG9tX3UzMl9tYXgoaG9s ZSkgJiB+KGFsaWdubWVudCAtIDEpOwogCiAJKmltYWdlX3B0ciA9ICZyb19oZWFkZXItPmltYWdl W3N0YXJ0XTsKIAkqcndfaW1hZ2UgPSAmKCpyd19oZWFkZXIpLT5pbWFnZVtzdGFydF07CmRpZmYg LS1naXQgYS9rZXJuZWwvbG9ja2luZy90ZXN0LXd3X211dGV4LmMgYi9rZXJuZWwvbG9ja2luZy90 ZXN0LXd3X211dGV4LmMKaW5kZXggMzUzMDA0MTU1ZDY1Li40M2VmYjJhMDQxNjAgMTAwNjQ0Ci0t LSBhL2tlcm5lbC9sb2NraW5nL3Rlc3Qtd3dfbXV0ZXguYworKysgYi9rZXJuZWwvbG9ja2luZy90 ZXN0LXd3X211dGV4LmMKQEAgLTM5OSw3ICszOTksNyBAQCBzdGF0aWMgaW50ICpnZXRfcmFuZG9t X29yZGVyKGludCBjb3VudCkKIAkJb3JkZXJbbl0gPSBuOwogCiAJZm9yIChuID0gY291bnQgLSAx OyBuID4gMTsgbi0tKSB7Ci0JCXIgPSBnZXRfcmFuZG9tX2ludCgpICUgKG4gKyAxKTsKKwkJciA9 IHByYW5kb21fdTMyX21heChuICsgMSk7CiAJCWlmIChyICE9IG4pIHsKIAkJCXRtcCA9IG9yZGVy W25dOwogCQkJb3JkZXJbbl0gPSBvcmRlcltyXTsKQEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMg dm9pZCBzdHJlc3Nfb25lX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVj dCBzdHJlc3MgKnN0cmVzcyA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKnN0cmVzcyksIHdv cmspOwogCWNvbnN0IGludCBubG9ja3MgPSBzdHJlc3MtPm5sb2NrczsKLQlzdHJ1Y3Qgd3dfbXV0 ZXggKmxvY2sgPSBzdHJlc3MtPmxvY2tzICsgKGdldF9yYW5kb21faW50KCkgJSBubG9ja3MpOwor CXN0cnVjdCB3d19tdXRleCAqbG9jayA9IHN0cmVzcy0+bG9ja3MgKyBwcmFuZG9tX3UzMl9tYXgo bmxvY2tzKTsKIAlpbnQgZXJyOwogCiAJZG8gewpkaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvY2xv Y2tzb3VyY2UuYyBiL2tlcm5lbC90aW1lL2Nsb2Nrc291cmNlLmMKaW5kZXggY2VlNWRhMWU1NGM0 Li44MDU4YmVjODdhY2UgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90aW1lL2Nsb2Nrc291cmNlLmMKKysr IGIva2VybmVsL3RpbWUvY2xvY2tzb3VyY2UuYwpAQCAtMzEwLDcgKzMxMCw3IEBAIHN0YXRpYyB2 b2lkIGNsb2Nrc291cmNlX3ZlcmlmeV9jaG9vc2VfY3B1cyh2b2lkKQogCSAqIENQVXMgdGhhdCBh cmUgY3VycmVudGx5IG9ubGluZS4KIAkgKi8KIAlmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKSB7Ci0J CWNwdSA9IHByYW5kb21fdTMyKCkgJSBucl9jcHVfaWRzOworCQljcHUgPSBwcmFuZG9tX3UzMl9t YXgobnJfY3B1X2lkcyk7CiAJCWNwdSA9IGNwdW1hc2tfbmV4dChjcHUgLSAxLCBjcHVfb25saW5l X21hc2spOwogCQlpZiAoY3B1ID49IG5yX2NwdV9pZHMpCiAJCQljcHUgPSBjcHVtYXNrX2ZpcnN0 KGNwdV9vbmxpbmVfbWFzayk7CmRpZmYgLS1naXQgYS9saWIvZmF1bHQtaW5qZWN0LmMgYi9saWIv ZmF1bHQtaW5qZWN0LmMKaW5kZXggNDIzNzg0ZDljMDU4Li45NmUwOTJkZTViNzIgMTAwNjQ0Ci0t LSBhL2xpYi9mYXVsdC1pbmplY3QuYworKysgYi9saWIvZmF1bHQtaW5qZWN0LmMKQEAgLTEzOSw3 ICsxMzksNyBAQCBib29sIHNob3VsZF9mYWlsKHN0cnVjdCBmYXVsdF9hdHRyICphdHRyLCBzc2l6 ZV90IHNpemUpCiAJCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JaWYgKGF0dHItPnByb2JhYmlsaXR5 IDw9IHByYW5kb21fdTMyKCkgJSAxMDApCisJaWYgKGF0dHItPnByb2JhYmlsaXR5IDw9IHByYW5k b21fdTMyX21heCgxMDApKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoIWZhaWxfc3RhY2t0cmFj ZShhdHRyKSkKZGlmZiAtLWdpdCBhL2xpYi9maW5kX2JpdF9iZW5jaG1hcmsuYyBiL2xpYi9maW5k X2JpdF9iZW5jaG1hcmsuYwppbmRleCBkYjkwNGI1N2Q0YjguLjFhNjQ2NmM2NGJiNiAxMDA2NDQK LS0tIGEvbGliL2ZpbmRfYml0X2JlbmNobWFyay5jCisrKyBiL2xpYi9maW5kX2JpdF9iZW5jaG1h cmsuYwpAQCAtMTU3LDggKzE1Nyw4IEBAIHN0YXRpYyBpbnQgX19pbml0IGZpbmRfYml0X3Rlc3Qo dm9pZCkKIAliaXRtYXBfemVybyhiaXRtYXAyLCBCSVRNQVBfTEVOKTsKIAogCXdoaWxlIChuYml0 cy0tKSB7Ci0JCV9fc2V0X2JpdChwcmFuZG9tX3UzMigpICUgQklUTUFQX0xFTiwgYml0bWFwKTsK LQkJX19zZXRfYml0KHByYW5kb21fdTMyKCkgJSBCSVRNQVBfTEVOLCBiaXRtYXAyKTsKKwkJX19z ZXRfYml0KHByYW5kb21fdTMyX21heChCSVRNQVBfTEVOKSwgYml0bWFwKTsKKwkJX19zZXRfYml0 KHByYW5kb21fdTMyX21heChCSVRNQVBfTEVOKSwgYml0bWFwMik7CiAJfQogCiAJdGVzdF9maW5k X25leHRfYml0KGJpdG1hcCwgQklUTUFQX0xFTik7CmRpZmYgLS1naXQgYS9saWIva29iamVjdC5j IGIvbGliL2tvYmplY3QuYwppbmRleCA1ZjBlNzFhYjI5MmMuLmEwYjJkYmZjZmEyMyAxMDA2NDQK LS0tIGEvbGliL2tvYmplY3QuYworKysgYi9saWIva29iamVjdC5jCkBAIC02OTQsNyArNjk0LDcg QEAgc3RhdGljIHZvaWQga29iamVjdF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKQogewogCXN0 cnVjdCBrb2JqZWN0ICprb2JqID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCBrb2JqZWN0LCBr cmVmKTsKICNpZmRlZiBDT05GSUdfREVCVUdfS09CSkVDVF9SRUxFQVNFCi0JdW5zaWduZWQgbG9u ZyBkZWxheSA9IEhaICsgSFogKiAoZ2V0X3JhbmRvbV9pbnQoKSAmIDB4Myk7CisJdW5zaWduZWQg bG9uZyBkZWxheSA9IEhaICsgSFogKiBwcmFuZG9tX3UzMl9tYXgoNCk7CiAJcHJfaW5mbygia29i amVjdDogJyVzJyAoJXApOiAlcywgcGFyZW50ICVwIChkZWxheWVkICVsZClcbiIsCiAJCSBrb2Jq ZWN0X25hbWUoa29iaiksIGtvYmosIF9fZnVuY19fLCBrb2JqLT5wYXJlbnQsIGRlbGF5KTsKIAlJ TklUX0RFTEFZRURfV09SSygma29iai0+cmVsZWFzZSwga29iamVjdF9kZWxheWVkX2NsZWFudXAp OwpkaWZmIC0tZ2l0IGEvbGliL3JlZWRfc29sb21vbi90ZXN0X3JzbGliLmMgYi9saWIvcmVlZF9z b2xvbW9uL3Rlc3RfcnNsaWIuYwppbmRleCBkOWQxYzMzYWViZGEuLjRkMjQxYmRjODhhYSAxMDA2 NDQKLS0tIGEvbGliL3JlZWRfc29sb21vbi90ZXN0X3JzbGliLmMKKysrIGIvbGliL3JlZWRfc29s b21vbi90ZXN0X3JzbGliLmMKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGF0aWMgaW50IGdldF9yY3df d2Uoc3RydWN0IHJzX2NvbnRyb2wgKnJzLCBzdHJ1Y3Qgd3NwYWNlICp3cywKIAogCQlkbyB7CiAJ CQkvKiBNdXN0IG5vdCBjaG9vc2UgdGhlIHNhbWUgbG9jYXRpb24gdHdpY2UgKi8KLQkJCWVycmxv YyA9IHByYW5kb21fdTMyKCkgJSBsZW47CisJCQllcnJsb2MgPSBwcmFuZG9tX3UzMl9tYXgobGVu KTsKIAkJfSB3aGlsZSAoZXJybG9jc1tlcnJsb2NdICE9IDApOwogCiAJCWVycmxvY3NbZXJybG9j XSA9IDE7CkBAIC0xOTQsMTIgKzE5NCwxMiBAQCBzdGF0aWMgaW50IGdldF9yY3dfd2Uoc3RydWN0 IHJzX2NvbnRyb2wgKnJzLCBzdHJ1Y3Qgd3NwYWNlICp3cywKIAlmb3IgKGkgPSAwOyBpIDwgZXJh czsgaSsrKSB7CiAJCWRvIHsKIAkJCS8qIE11c3Qgbm90IGNob29zZSB0aGUgc2FtZSBsb2NhdGlv biB0d2ljZSAqLwotCQkJZXJybG9jID0gcHJhbmRvbV91MzIoKSAlIGxlbjsKKwkJCWVycmxvYyA9 IHByYW5kb21fdTMyX21heChsZW4pOwogCQl9IHdoaWxlIChlcnJsb2NzW2VycmxvY10gIT0gMCk7 CiAKIAkJZGVycmxvY3NbaV0gPSBlcnJsb2M7CiAKLQkJaWYgKGV3c2MgJiYgKHByYW5kb21fdTMy KCkgJiAxKSkgeworCQlpZiAoZXdzYyAmJiBwcmFuZG9tX3UzMl9tYXgoMikpIHsKIAkJCS8qIEVy YXN1cmUgd2l0aCB0aGUgc3ltYm9sIGludGFjdCAqLwogCQkJZXJybG9jc1tlcnJsb2NdID0gMjsK IAkJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2xpYi9zYml0bWFwLmMgYi9saWIvc2JpdG1hcC5jCmlu ZGV4IDI5ZWIwNDg0MjE1YS4uZWYwNjYxNTA0NTYxIDEwMDY0NAotLS0gYS9saWIvc2JpdG1hcC5j CisrKyBiL2xpYi9zYml0bWFwLmMKQEAgLTIxLDcgKzIxLDcgQEAgc3RhdGljIGludCBpbml0X2Fs bG9jX2hpbnQoc3RydWN0IHNiaXRtYXAgKnNiLCBnZnBfdCBmbGFncykKIAkJaW50IGk7CiAKIAkJ Zm9yX2VhY2hfcG9zc2libGVfY3B1KGkpCi0JCQkqcGVyX2NwdV9wdHIoc2ItPmFsbG9jX2hpbnQs IGkpID0gcHJhbmRvbV91MzIoKSAlIGRlcHRoOworCQkJKnBlcl9jcHVfcHRyKHNiLT5hbGxvY19o aW50LCBpKSA9IHByYW5kb21fdTMyX21heChkZXB0aCk7CiAJfQogCXJldHVybiAwOwogfQpAQCAt MzMsNyArMzMsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHVwZGF0ZV9hbGxvY19oaW50X2Jl Zm9yZV9nZXQoc3RydWN0IHNiaXRtYXAgKnNiLAogCiAJaGludCA9IHRoaXNfY3B1X3JlYWQoKnNi LT5hbGxvY19oaW50KTsKIAlpZiAodW5saWtlbHkoaGludCA+PSBkZXB0aCkpIHsKLQkJaGludCA9 IGRlcHRoID8gcHJhbmRvbV91MzIoKSAlIGRlcHRoIDogMDsKKwkJaGludCA9IGRlcHRoID8gcHJh bmRvbV91MzJfbWF4KGRlcHRoKSA6IDA7CiAJCXRoaXNfY3B1X3dyaXRlKCpzYi0+YWxsb2NfaGlu dCwgaGludCk7CiAJfQogCmRpZmYgLS1naXQgYS9saWIvdGVzdC1zdHJpbmdfaGVscGVycy5jIGIv bGliL3Rlc3Qtc3RyaW5nX2hlbHBlcnMuYwppbmRleCA0MzdkOGU2YjdjYjEuLjg2ZmFkZDNiYTA4 YyAxMDA2NDQKLS0tIGEvbGliL3Rlc3Qtc3RyaW5nX2hlbHBlcnMuYworKysgYi9saWIvdGVzdC1z dHJpbmdfaGVscGVycy5jCkBAIC01ODcsNyArNTg3LDcgQEAgc3RhdGljIGludCBfX2luaXQgdGVz dF9zdHJpbmdfaGVscGVyc19pbml0KHZvaWQpCiAJZm9yIChpID0gMDsgaSA8IFVORVNDQVBFX0FM TF9NQVNLICsgMTsgaSsrKQogCQl0ZXN0X3N0cmluZ191bmVzY2FwZSgidW5lc2NhcGUiLCBpLCBm YWxzZSk7CiAJdGVzdF9zdHJpbmdfdW5lc2NhcGUoInVuZXNjYXBlIGlucGxhY2UiLAotCQkJICAg ICBnZXRfcmFuZG9tX2ludCgpICUgKFVORVNDQVBFX0FOWSArIDEpLCB0cnVlKTsKKwkJCSAgICAg cHJhbmRvbV91MzJfbWF4KFVORVNDQVBFX0FOWSArIDEpLCB0cnVlKTsKIAogCS8qIFdpdGhvdXQg ZGljdGlvbmFyeSAqLwogCWZvciAoaSA9IDA7IGkgPCBFU0NBUEVfQUxMX01BU0sgKyAxOyBpKysp CmRpZmYgLS1naXQgYS9saWIvdGVzdF9oZXhkdW1wLmMgYi9saWIvdGVzdF9oZXhkdW1wLmMKaW5k ZXggNTE0NDg5OWQzYzZiLi40MWEwMzIxZjY0MWEgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0X2hleGR1 bXAuYworKysgYi9saWIvdGVzdF9oZXhkdW1wLmMKQEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMg dm9pZCBfX2luaXQgdGVzdF9oZXhkdW1wKHNpemVfdCBsZW4sIGludCByb3dzaXplLCBpbnQgZ3Jv dXBzaXplLAogc3RhdGljIHZvaWQgX19pbml0IHRlc3RfaGV4ZHVtcF9zZXQoaW50IHJvd3NpemUs IGJvb2wgYXNjaWkpCiB7CiAJc2l6ZV90IGQgPSBtaW5fdChzaXplX3QsIHNpemVvZihkYXRhX2Ip LCByb3dzaXplKTsKLQlzaXplX3QgbGVuID0gZ2V0X3JhbmRvbV9pbnQoKSAlIGQgKyAxOworCXNp emVfdCBsZW4gPSBwcmFuZG9tX3UzMl9tYXgoZCkgKyAxOwogCiAJdGVzdF9oZXhkdW1wKGxlbiwg cm93c2l6ZSwgNCwgYXNjaWkpOwogCXRlc3RfaGV4ZHVtcChsZW4sIHJvd3NpemUsIDIsIGFzY2lp KTsKQEAgLTIwOCwxMSArMjA4LDExIEBAIHN0YXRpYyB2b2lkIF9faW5pdCB0ZXN0X2hleGR1bXBf b3ZlcmZsb3coc2l6ZV90IGJ1Zmxlbiwgc2l6ZV90IGxlbiwKIHN0YXRpYyB2b2lkIF9faW5pdCB0 ZXN0X2hleGR1bXBfb3ZlcmZsb3dfc2V0KHNpemVfdCBidWZsZW4sIGJvb2wgYXNjaWkpCiB7CiAJ dW5zaWduZWQgaW50IGkgPSAwOwotCWludCBycyA9IChnZXRfcmFuZG9tX2ludCgpICUgMiArIDEp ICogMTY7CisJaW50IHJzID0gcHJhbmRvbV91MzJfbWF4KDIpICsgMSAqIDE2OwogCiAJZG8gewog CQlpbnQgZ3MgPSAxIDw8IGk7Ci0JCXNpemVfdCBsZW4gPSBnZXRfcmFuZG9tX2ludCgpICUgcnMg KyBnczsKKwkJc2l6ZV90IGxlbiA9IHByYW5kb21fdTMyX21heChycykgKyBnczsKIAogCQl0ZXN0 X2hleGR1bXBfb3ZlcmZsb3coYnVmbGVuLCByb3VuZGRvd24obGVuLCBncyksIHJzLCBncywgYXNj aWkpOwogCX0gd2hpbGUgKGkrKyA8IDMpOwpAQCAtMjIzLDExICsyMjMsMTEgQEAgc3RhdGljIGlu dCBfX2luaXQgdGVzdF9oZXhkdW1wX2luaXQodm9pZCkKIAl1bnNpZ25lZCBpbnQgaTsKIAlpbnQg cm93c2l6ZTsKIAotCXJvd3NpemUgPSAoZ2V0X3JhbmRvbV9pbnQoKSAlIDIgKyAxKSAqIDE2Owor CXJvd3NpemUgPSAocHJhbmRvbV91MzJfbWF4KDIpICsgMSkgKiAxNjsKIAlmb3IgKGkgPSAwOyBp IDwgMTY7IGkrKykKIAkJdGVzdF9oZXhkdW1wX3NldChyb3dzaXplLCBmYWxzZSk7CiAKLQlyb3dz aXplID0gKGdldF9yYW5kb21faW50KCkgJSAyICsgMSkgKiAxNjsKKwlyb3dzaXplID0gKHByYW5k b21fdTMyX21heCgyKSArIDEpICogMTY7CiAJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCiAJCXRl c3RfaGV4ZHVtcF9zZXQocm93c2l6ZSwgdHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL2xpYi90ZXN0X2th c2FuLmMgYi9saWIvdGVzdF9rYXNhbi5jCmluZGV4IDU4YzFiMDFjY2ZlMi4uN2I0MDI2NjIzYWNl IDEwMDY0NAotLS0gYS9saWIvdGVzdF9rYXNhbi5jCisrKyBiL2xpYi90ZXN0X2thc2FuLmMKQEAg LTEyNjksNyArMTI2OSw3IEBAIHN0YXRpYyB2b2lkIG1hdGNoX2FsbF9ub3RfYXNzaWduZWQoc3Ry dWN0IGt1bml0ICp0ZXN0KQogCUtBU0FOX1RFU1RfTkVFRFNfQ09ORklHX09GRih0ZXN0LCBDT05G SUdfS0FTQU5fR0VORVJJQyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKLQkJc2l6 ZSA9IChnZXRfcmFuZG9tX2ludCgpICUgMTAyNCkgKyAxOworCQlzaXplID0gcHJhbmRvbV91MzJf bWF4KDEwMjQpICsgMTsKIAkJcHRyID0ga21hbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKIAkJS1VO SVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBwdHIpOwogCQlLVU5JVF9FWFBFQ1RfR0Uo dGVzdCwgKHU4KWdldF90YWcocHRyKSwgKHU4KUtBU0FOX1RBR19NSU4pOwpAQCAtMTI3OCw3ICsx Mjc4LDcgQEAgc3RhdGljIHZvaWQgbWF0Y2hfYWxsX25vdF9hc3NpZ25lZChzdHJ1Y3Qga3VuaXQg KnRlc3QpCiAJfQogCiAJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0JCW9yZGVyID0gKGdl dF9yYW5kb21faW50KCkgJSA0KSArIDE7CisJCW9yZGVyID0gcHJhbmRvbV91MzJfbWF4KDQpICsg MTsKIAkJcGFnZXMgPSBhbGxvY19wYWdlcyhHRlBfS0VSTkVMLCBvcmRlcik7CiAJCXB0ciA9IHBh Z2VfYWRkcmVzcyhwYWdlcyk7CiAJCUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwg cHRyKTsKQEAgLTEyOTEsNyArMTI5MSw3IEBAIHN0YXRpYyB2b2lkIG1hdGNoX2FsbF9ub3RfYXNz aWduZWQoc3RydWN0IGt1bml0ICp0ZXN0KQogCQlyZXR1cm47CiAKIAlmb3IgKGkgPSAwOyBpIDwg MjU2OyBpKyspIHsKLQkJc2l6ZSA9IChnZXRfcmFuZG9tX2ludCgpICUgMTAyNCkgKyAxOworCQlz aXplID0gcHJhbmRvbV91MzJfbWF4KDEwMjQpICsgMTsKIAkJcHRyID0gdm1hbGxvYyhzaXplKTsK IAkJS1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBwdHIpOwogCQlLVU5JVF9FWFBF Q1RfR0UodGVzdCwgKHU4KWdldF90YWcocHRyKSwgKHU4KUtBU0FOX1RBR19NSU4pOwpkaWZmIC0t Z2l0IGEvbGliL3Rlc3RfbGlzdF9zb3J0LmMgYi9saWIvdGVzdF9saXN0X3NvcnQuYwppbmRleCBh ZGU3YTFlYTBjOGUuLjE5ZmYyMjliOWMzYSAxMDA2NDQKLS0tIGEvbGliL3Rlc3RfbGlzdF9zb3J0 LmMKKysrIGIvbGliL3Rlc3RfbGlzdF9zb3J0LmMKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZv aWQgbGlzdF9zb3J0X3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0KQogCQlLVU5JVF9BU1NFUlRfTk9U X0VSUl9PUl9OVUxMKHRlc3QsIGVsKTsKIAogCQkgLyogZm9yY2Ugc29tZSBlcXVpdmFsZW5jaWVz ICovCi0JCWVsLT52YWx1ZSA9IHByYW5kb21fdTMyKCkgJSAoVEVTVF9MSVNUX0xFTiAvIDMpOwor CQllbC0+dmFsdWUgPSBwcmFuZG9tX3UzMl9tYXgoVEVTVF9MSVNUX0xFTiAvIDMpOwogCQllbC0+ c2VyaWFsID0gaTsKIAkJZWwtPnBvaXNvbjEgPSBURVNUX1BPSVNPTjE7CiAJCWVsLT5wb2lzb24y ID0gVEVTVF9QT0lTT04yOwpkaWZmIC0tZ2l0IGEvbGliL3Rlc3Rfdm1hbGxvYy5jIGIvbGliL3Rl c3Rfdm1hbGxvYy5jCmluZGV4IDRmMmYyZDFiYWM1Ni4uNTZmZmFhOGRkM2Y2IDEwMDY0NAotLS0g YS9saWIvdGVzdF92bWFsbG9jLmMKKysrIGIvbGliL3Rlc3Rfdm1hbGxvYy5jCkBAIC0xNTEsOSAr MTUxLDcgQEAgc3RhdGljIGludCByYW5kb21fc2l6ZV9hbGxvY190ZXN0KHZvaWQpCiAJaW50IGk7 CiAKIAlmb3IgKGkgPSAwOyBpIDwgdGVzdF9sb29wX2NvdW50OyBpKyspIHsKLQkJbiA9IHByYW5k b21fdTMyKCk7Ci0JCW4gPSAobiAlIDEwMCkgKyAxOwotCisJCW4gPSBwcmFuZG9tX3UzMl9tYXgo biAlIDEwMCkgKyAxOwogCQlwID0gdm1hbGxvYyhuICogUEFHRV9TSVpFKTsKIAogCQlpZiAoIXAp CkBAIC0yOTMsMTYgKzI5MSwxMiBAQCBwY3B1X2FsbG9jX3Rlc3Qodm9pZCkKIAkJcmV0dXJuIC0x OwogCiAJZm9yIChpID0gMDsgaSA8IDM1MDAwOyBpKyspIHsKLQkJdW5zaWduZWQgaW50IHI7Ci0K LQkJciA9IHByYW5kb21fdTMyKCk7Ci0JCXNpemUgPSAociAlIChQQUdFX1NJWkUgLyA0KSkgKyAx OworCQlzaXplID0gcHJhbmRvbV91MzJfbWF4KFBBR0VfU0laRSAvIDQpICsgMTsKIAogCQkvKgog CQkgKiBNYXhpbXVtIFBBR0VfU0laRQogCQkgKi8KLQkJciA9IHByYW5kb21fdTMyKCk7Ci0JCWFs aWduID0gMSA8PCAoKHIgJSAxMSkgKyAxKTsKKwkJYWxpZ24gPSAxIDw8IChwcmFuZG9tX3UzMl9t YXgoMTEpICsgMSk7CiAKIAkJcGNwdVtpXSA9IF9fYWxsb2NfcGVyY3B1KHNpemUsIGFsaWduKTsK IAkJaWYgKCFwY3B1W2ldKQpAQCAtMzkzLDE0ICszODcsMTEgQEAgc3RhdGljIHN0cnVjdCB0ZXN0 X2RyaXZlciB7CiAKIHN0YXRpYyB2b2lkIHNodWZmbGVfYXJyYXkoaW50ICphcnIsIGludCBuKQog ewotCXVuc2lnbmVkIGludCBybmQ7CiAJaW50IGksIGo7CiAKIAlmb3IgKGkgPSBuIC0gMTsgaSA+ IDA7IGktLSkgIHsKLQkJcm5kID0gcHJhbmRvbV91MzIoKTsKLQogCQkvKiBDdXQgdGhlIHJhbmdl LiAqLwotCQlqID0gcm5kICUgaTsKKwkJaiA9IHByYW5kb21fdTMyX21heChpKTsKIAogCQkvKiBT d2FwIGluZGV4ZXMuICovCiAJCXN3YXAoYXJyW2ldLCBhcnJbal0pOwpkaWZmIC0tZ2l0IGEvbW0v bWlncmF0ZS5jIGIvbW0vbWlncmF0ZS5jCmluZGV4IDZhMTU5N2M5MjI2MS4uZGIwNGY5NWZlMDUw IDEwMDY0NAotLS0gYS9tbS9taWdyYXRlLmMKKysrIGIvbW0vbWlncmF0ZS5jCkBAIC0yMjkyLDcg KzIyOTIsNyBAQCBpbnQgbmV4dF9kZW1vdGlvbl9ub2RlKGludCBub2RlKQogCQkgKiBjYWNoaW5n IGlzc3VlLCB3aGljaCBzZWVtcyBtb3JlIGNvbXBsaWNhdGVkLiBTbyBzZWxlY3RpbmcKIAkJICog dGFyZ2V0IG5vZGUgcmFuZG9tbHkgc2VlbXMgYmV0dGVyIHVudGlsIG5vdy4KIAkJICovCi0JCWlu ZGV4ID0gZ2V0X3JhbmRvbV9pbnQoKSAlIHRhcmdldF9ucjsKKwkJaW5kZXggPSBwcmFuZG9tX3Uz Ml9tYXgodGFyZ2V0X25yKTsKIAkJYnJlYWs7CiAJfQogCmRpZmYgLS1naXQgYS9tbS9zbHViLmMg Yi9tbS9zbHViLmMKaW5kZXggODYyZGJkOWFmNGY1Li40NmVlNTJlZmVlZWYgMTAwNjQ0Ci0tLSBh L21tL3NsdWIuYworKysgYi9tbS9zbHViLmMKQEAgLTE5MTEsNyArMTkxMSw3IEBAIHN0YXRpYyBi b29sIHNodWZmbGVfZnJlZWxpc3Qoc3RydWN0IGttZW1fY2FjaGUgKnMsIHN0cnVjdCBzbGFiICpz bGFiKQogCQlyZXR1cm4gZmFsc2U7CiAKIAlmcmVlbGlzdF9jb3VudCA9IG9vX29iamVjdHMocy0+ b28pOwotCXBvcyA9IGdldF9yYW5kb21faW50KCkgJSBmcmVlbGlzdF9jb3VudDsKKwlwb3MgPSBw cmFuZG9tX3UzMl9tYXgoZnJlZWxpc3RfY291bnQpOwogCiAJcGFnZV9saW1pdCA9IHNsYWItPm9i amVjdHMgKiBzLT5zaXplOwogCXN0YXJ0ID0gZml4dXBfcmVkX2xlZnQocywgc2xhYl9hZGRyZXNz KHNsYWIpKTsKZGlmZiAtLWdpdCBhL25ldC9jZXBoL21vbl9jbGllbnQuYyBiL25ldC9jZXBoL21v bl9jbGllbnQuYwppbmRleCA2YTY4OThlZTQwNDkuLmRiNjAyMTdmOTExYiAxMDA2NDQKLS0tIGEv bmV0L2NlcGgvbW9uX2NsaWVudC5jCisrKyBiL25ldC9jZXBoL21vbl9jbGllbnQuYwpAQCAtMjIy LDcgKzIyMiw3IEBAIHN0YXRpYyB2b2lkIHBpY2tfbmV3X21vbihzdHJ1Y3QgY2VwaF9tb25fY2xp ZW50ICptb25jKQogCQkJCW1heC0tOwogCQl9CiAKLQkJbiA9IHByYW5kb21fdTMyKCkgJSBtYXg7 CisJCW4gPSBwcmFuZG9tX3UzMl9tYXgobWF4KTsKIAkJaWYgKG8gPj0gMCAmJiBuID49IG8pCiAJ CQluKys7CiAKZGlmZiAtLWdpdCBhL25ldC9jZXBoL29zZF9jbGllbnQuYyBiL25ldC9jZXBoL29z ZF9jbGllbnQuYwppbmRleCA4N2I4ODNjN2JmZDYuLjRlNGYxZTRiYzI2NSAxMDA2NDQKLS0tIGEv bmV0L2NlcGgvb3NkX2NsaWVudC5jCisrKyBiL25ldC9jZXBoL29zZF9jbGllbnQuYwpAQCAtMTQ3 OSw3ICsxNDc5LDcgQEAgc3RhdGljIGJvb2wgdGFyZ2V0X3Nob3VsZF9iZV9wYXVzZWQoc3RydWN0 IGNlcGhfb3NkX2NsaWVudCAqb3NkYywKIAogc3RhdGljIGludCBwaWNrX3JhbmRvbV9yZXBsaWNh KGNvbnN0IHN0cnVjdCBjZXBoX29zZHMgKmFjdGluZykKIHsKLQlpbnQgaSA9IHByYW5kb21fdTMy KCkgJSBhY3RpbmctPnNpemU7CisJaW50IGkgPSBwcmFuZG9tX3UzMl9tYXgoYWN0aW5nLT5zaXpl KTsKIAogCWRvdXQoIiVzIHBpY2tlZCBvc2QlZCwgcHJpbWFyeSBvc2QlZFxuIiwgX19mdW5jX18s CiAJICAgICBhY3RpbmctPm9zZHNbaV0sIGFjdGluZy0+cHJpbWFyeSk7CmRpZmYgLS1naXQgYS9u ZXQvY29yZS9uZWlnaGJvdXIuYyBiL25ldC9jb3JlL25laWdoYm91ci5jCmluZGV4IDc4Y2M4ZmI2 ODgxNC4uODVkNDk3Y2I1OGQ4IDEwMDY0NAotLS0gYS9uZXQvY29yZS9uZWlnaGJvdXIuYworKysg Yi9uZXQvY29yZS9uZWlnaGJvdXIuYwpAQCAtMTExLDcgKzExMSw3IEBAIHN0YXRpYyB2b2lkIG5l aWdoX2NsZWFudXBfYW5kX3JlbGVhc2Uoc3RydWN0IG5laWdoYm91ciAqbmVpZ2gpCiAKIHVuc2ln bmVkIGxvbmcgbmVpZ2hfcmFuZF9yZWFjaF90aW1lKHVuc2lnbmVkIGxvbmcgYmFzZSkKIHsKLQly ZXR1cm4gYmFzZSA/IChwcmFuZG9tX3UzMigpICUgYmFzZSkgKyAoYmFzZSA+PiAxKSA6IDA7CisJ cmV0dXJuIGJhc2UgPyBwcmFuZG9tX3UzMl9tYXgoYmFzZSkgKyAoYmFzZSA+PiAxKSA6IDA7CiB9 CiBFWFBPUlRfU1lNQk9MKG5laWdoX3JhbmRfcmVhY2hfdGltZSk7CiAKZGlmZiAtLWdpdCBhL25l dC9jb3JlL3BrdGdlbi5jIGIvbmV0L2NvcmUvcGt0Z2VuLmMKaW5kZXggODg5MDZiYTZkOWE3Li41 Y2E0Zjk1MzAzNGMgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL3BrdGdlbi5jCisrKyBiL25ldC9jb3Jl L3BrdGdlbi5jCkBAIC0yMzI0LDcgKzIzMjQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBmX3BpY2so c3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpCiAJCQkJcGt0X2Rldi0+Y3VyZmwgPSAwOyAvKnJl c2V0ICovCiAJCX0KIAl9IGVsc2UgewotCQlmbG93ID0gcHJhbmRvbV91MzIoKSAlIHBrdF9kZXYt PmNmbG93czsKKwkJZmxvdyA9IHByYW5kb21fdTMyX21heChwa3RfZGV2LT5jZmxvd3MpOwogCQlw a3RfZGV2LT5jdXJmbCA9IGZsb3c7CiAKIAkJaWYgKHBrdF9kZXYtPmZsb3dzW2Zsb3ddLmNvdW50 ID4gcGt0X2Rldi0+bGZsb3cpIHsKQEAgLTIzODAsMTAgKzIzODAsOSBAQCBzdGF0aWMgdm9pZCBz ZXRfY3VyX3F1ZXVlX21hcChzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldikKIAllbHNlIGlmIChw a3RfZGV2LT5xdWV1ZV9tYXBfbWluIDw9IHBrdF9kZXYtPnF1ZXVlX21hcF9tYXgpIHsKIAkJX191 MTYgdDsKIAkJaWYgKHBrdF9kZXYtPmZsYWdzICYgRl9RVUVVRV9NQVBfUk5EKSB7Ci0JCQl0ID0g cHJhbmRvbV91MzIoKSAlCi0JCQkJKHBrdF9kZXYtPnF1ZXVlX21hcF9tYXggLQotCQkJCSBwa3Rf ZGV2LT5xdWV1ZV9tYXBfbWluICsgMSkKLQkJCQkrIHBrdF9kZXYtPnF1ZXVlX21hcF9taW47CisJ CQl0ID0gcHJhbmRvbV91MzJfbWF4KHBrdF9kZXYtPnF1ZXVlX21hcF9tYXggLQorCQkJCQkgICAg cGt0X2Rldi0+cXVldWVfbWFwX21pbiArIDEpICsKKwkJCSAgICBwa3RfZGV2LT5xdWV1ZV9tYXBf bWluOwogCQl9IGVsc2UgewogCQkJdCA9IHBrdF9kZXYtPmN1cl9xdWV1ZV9tYXAgKyAxOwogCQkJ aWYgKHQgPiBwa3RfZGV2LT5xdWV1ZV9tYXBfbWF4KQpAQCAtMjQxMiw3ICsyNDExLDcgQEAgc3Rh dGljIHZvaWQgbW9kX2N1cl9oZWFkZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KQogCQlf X3UzMiB0bXA7CiAKIAkJaWYgKHBrdF9kZXYtPmZsYWdzICYgRl9NQUNTUkNfUk5EKQotCQkJbWMg PSBwcmFuZG9tX3UzMigpICUgcGt0X2Rldi0+c3JjX21hY19jb3VudDsKKwkJCW1jID0gcHJhbmRv bV91MzJfbWF4KHBrdF9kZXYtPnNyY19tYWNfY291bnQpOwogCQllbHNlIHsKIAkJCW1jID0gcGt0 X2Rldi0+Y3VyX3NyY19tYWNfb2Zmc2V0Kys7CiAJCQlpZiAocGt0X2Rldi0+Y3VyX3NyY19tYWNf b2Zmc2V0ID49CkBAIC0yNDM4LDcgKzI0MzcsNyBAQCBzdGF0aWMgdm9pZCBtb2RfY3VyX2hlYWRl cnMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpCiAJCV9fdTMyIHRtcDsKIAogCQlpZiAocGt0 X2Rldi0+ZmxhZ3MgJiBGX01BQ0RTVF9STkQpCi0JCQltYyA9IHByYW5kb21fdTMyKCkgJSBwa3Rf ZGV2LT5kc3RfbWFjX2NvdW50OworCQkJbWMgPSBwcmFuZG9tX3UzMl9tYXgocGt0X2Rldi0+ZHN0 X21hY19jb3VudCk7CiAKIAkJZWxzZSB7CiAJCQltYyA9IHBrdF9kZXYtPmN1cl9kc3RfbWFjX29m ZnNldCsrOwpAQCAtMjQ3MCwxOCArMjQ2OSwxOCBAQCBzdGF0aWMgdm9pZCBtb2RfY3VyX2hlYWRl cnMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpCiAJfQogCiAJaWYgKChwa3RfZGV2LT5mbGFn cyAmIEZfVklEX1JORCkgJiYgKHBrdF9kZXYtPnZsYW5faWQgIT0gMHhmZmZmKSkgewotCQlwa3Rf ZGV2LT52bGFuX2lkID0gcHJhbmRvbV91MzIoKSAmICg0MDk2IC0gMSk7CisJCXBrdF9kZXYtPnZs YW5faWQgPSBwcmFuZG9tX3UzMl9tYXgoNDA5Nik7CiAJfQogCiAJaWYgKChwa3RfZGV2LT5mbGFn cyAmIEZfU1ZJRF9STkQpICYmIChwa3RfZGV2LT5zdmxhbl9pZCAhPSAweGZmZmYpKSB7Ci0JCXBr dF9kZXYtPnN2bGFuX2lkID0gcHJhbmRvbV91MzIoKSAmICg0MDk2IC0gMSk7CisJCXBrdF9kZXYt PnN2bGFuX2lkID0gcHJhbmRvbV91MzJfbWF4KDQwOTYpOwogCX0KIAogCWlmIChwa3RfZGV2LT51 ZHBfc3JjX21pbiA8IHBrdF9kZXYtPnVkcF9zcmNfbWF4KSB7CiAJCWlmIChwa3RfZGV2LT5mbGFn cyAmIEZfVURQU1JDX1JORCkKLQkJCXBrdF9kZXYtPmN1cl91ZHBfc3JjID0gcHJhbmRvbV91MzIo KSAlCi0JCQkJKHBrdF9kZXYtPnVkcF9zcmNfbWF4IC0gcGt0X2Rldi0+dWRwX3NyY19taW4pCi0J CQkJKyBwa3RfZGV2LT51ZHBfc3JjX21pbjsKKwkJCXBrdF9kZXYtPmN1cl91ZHBfc3JjID0gcHJh bmRvbV91MzJfbWF4KAorCQkJCXBrdF9kZXYtPnVkcF9zcmNfbWF4IC0gcGt0X2Rldi0+dWRwX3Ny Y19taW4pICsKKwkJCQlwa3RfZGV2LT51ZHBfc3JjX21pbjsKIAogCQllbHNlIHsKIAkJCXBrdF9k ZXYtPmN1cl91ZHBfc3JjKys7CkBAIC0yNDkyLDkgKzI0OTEsOSBAQCBzdGF0aWMgdm9pZCBtb2Rf Y3VyX2hlYWRlcnMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpCiAKIAlpZiAocGt0X2Rldi0+ dWRwX2RzdF9taW4gPCBwa3RfZGV2LT51ZHBfZHN0X21heCkgewogCQlpZiAocGt0X2Rldi0+Zmxh Z3MgJiBGX1VEUERTVF9STkQpIHsKLQkJCXBrdF9kZXYtPmN1cl91ZHBfZHN0ID0gcHJhbmRvbV91 MzIoKSAlCi0JCQkJKHBrdF9kZXYtPnVkcF9kc3RfbWF4IC0gcGt0X2Rldi0+dWRwX2RzdF9taW4p Ci0JCQkJKyBwa3RfZGV2LT51ZHBfZHN0X21pbjsKKwkJCXBrdF9kZXYtPmN1cl91ZHBfZHN0ID0g cHJhbmRvbV91MzJfbWF4KAorCQkJCXBrdF9kZXYtPnVkcF9kc3RfbWF4IC0gcGt0X2Rldi0+dWRw X2RzdF9taW4pICsKKwkJCQlwa3RfZGV2LT51ZHBfZHN0X21pbjsKIAkJfSBlbHNlIHsKIAkJCXBr dF9kZXYtPmN1cl91ZHBfZHN0Kys7CiAJCQlpZiAocGt0X2Rldi0+Y3VyX3VkcF9kc3QgPj0gcGt0 X2Rldi0+dWRwX2RzdF9tYXgpCkBAIC0yNTA5LDcgKzI1MDgsNyBAQCBzdGF0aWMgdm9pZCBtb2Rf Y3VyX2hlYWRlcnMoc3RydWN0IHBrdGdlbl9kZXYgKnBrdF9kZXYpCiAJCWlmIChpbW4gPCBpbXgp IHsKIAkJCV9fdTMyIHQ7CiAJCQlpZiAocGt0X2Rldi0+ZmxhZ3MgJiBGX0lQU1JDX1JORCkKLQkJ CQl0ID0gcHJhbmRvbV91MzIoKSAlIChpbXggLSBpbW4pICsgaW1uOworCQkJCXQgPSBwcmFuZG9t X3UzMl9tYXgoaW14IC0gaW1uKSArIGltbjsKIAkJCWVsc2UgewogCQkJCXQgPSBudG9obChwa3Rf ZGV2LT5jdXJfc2FkZHIpOwogCQkJCXQrKzsKQEAgLTI1MzEsOCArMjUzMCw4IEBAIHN0YXRpYyB2 b2lkIG1vZF9jdXJfaGVhZGVycyhzdHJ1Y3QgcGt0Z2VuX2RldiAqcGt0X2RldikKIAkJCQlpZiAo cGt0X2Rldi0+ZmxhZ3MgJiBGX0lQRFNUX1JORCkgewogCiAJCQkJCWRvIHsKLQkJCQkJCXQgPSBw cmFuZG9tX3UzMigpICUKLQkJCQkJCQkoaW14IC0gaW1uKSArIGltbjsKKwkJCQkJCXQgPSBwcmFu ZG9tX3UzMl9tYXgoaW14IC0gaW1uKSArCisJCQkJCQkgICAgaW1uOwogCQkJCQkJcyA9IGh0b25s KHQpOwogCQkJCQl9IHdoaWxlIChpcHY0X2lzX2xvb3BiYWNrKHMpIHx8CiAJCQkJCQlpcHY0X2lz X211bHRpY2FzdChzKSB8fApAQCAtMjU3OSw5ICsyNTc4LDkgQEAgc3RhdGljIHZvaWQgbW9kX2N1 cl9oZWFkZXJzKHN0cnVjdCBwa3RnZW5fZGV2ICpwa3RfZGV2KQogCWlmIChwa3RfZGV2LT5taW5f cGt0X3NpemUgPCBwa3RfZGV2LT5tYXhfcGt0X3NpemUpIHsKIAkJX191MzIgdDsKIAkJaWYgKHBr dF9kZXYtPmZsYWdzICYgRl9UWFNJWkVfUk5EKSB7Ci0JCQl0ID0gcHJhbmRvbV91MzIoKSAlCi0J CQkJKHBrdF9kZXYtPm1heF9wa3Rfc2l6ZSAtIHBrdF9kZXYtPm1pbl9wa3Rfc2l6ZSkKLQkJCQkr IHBrdF9kZXYtPm1pbl9wa3Rfc2l6ZTsKKwkJCXQgPSBwcmFuZG9tX3UzMl9tYXgocGt0X2Rldi0+ bWF4X3BrdF9zaXplIC0KKwkJCQkJICAgIHBrdF9kZXYtPm1pbl9wa3Rfc2l6ZSkgKworCQkJICAg IHBrdF9kZXYtPm1pbl9wa3Rfc2l6ZTsKIAkJfSBlbHNlIHsKIAkJCXQgPSBwa3RfZGV2LT5jdXJf cGt0X3NpemUgKyAxOwogCQkJaWYgKHQgPiBwa3RfZGV2LT5tYXhfcGt0X3NpemUpCkBAIC0yNTkw LDcgKzI1ODksNyBAQCBzdGF0aWMgdm9pZCBtb2RfY3VyX2hlYWRlcnMoc3RydWN0IHBrdGdlbl9k ZXYgKnBrdF9kZXYpCiAJCXBrdF9kZXYtPmN1cl9wa3Rfc2l6ZSA9IHQ7CiAJfSBlbHNlIGlmIChw a3RfZGV2LT5uX2ltaXhfZW50cmllcyA+IDApIHsKIAkJc3RydWN0IGltaXhfcGt0ICplbnRyeTsK LQkJX191MzIgdCA9IHByYW5kb21fdTMyKCkgJSBJTUlYX1BSRUNJU0lPTjsKKwkJX191MzIgdCA9 IHByYW5kb21fdTMyX21heChJTUlYX1BSRUNJU0lPTik7CiAJCV9fdTggZW50cnlfaW5kZXggPSBw a3RfZGV2LT5pbWl4X2Rpc3RyaWJ1dGlvblt0XTsKIAogCQllbnRyeSA9ICZwa3RfZGV2LT5pbWl4 X2VudHJpZXNbZW50cnlfaW5kZXhdOwpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc3RyZWFtLmMgYi9u ZXQvY29yZS9zdHJlYW0uYwppbmRleCBjY2MwODNjZGVmMjMuLjQ3ODA1NThlYTMxNCAxMDA2NDQK LS0tIGEvbmV0L2NvcmUvc3RyZWFtLmMKKysrIGIvbmV0L2NvcmUvc3RyZWFtLmMKQEAgLTEyMyw3 ICsxMjMsNyBAQCBpbnQgc2tfc3RyZWFtX3dhaXRfbWVtb3J5KHN0cnVjdCBzb2NrICpzaywgbG9u ZyAqdGltZW9fcCkKIAlERUZJTkVfV0FJVF9GVU5DKHdhaXQsIHdva2VuX3dha2VfZnVuY3Rpb24p OwogCiAJaWYgKHNrX3N0cmVhbV9tZW1vcnlfZnJlZShzaykpCi0JCWN1cnJlbnRfdGltZW8gPSB2 bV93YWl0ID0gKHByYW5kb21fdTMyKCkgJSAoSFogLyA1KSkgKyAyOworCQljdXJyZW50X3RpbWVv ID0gdm1fd2FpdCA9IHByYW5kb21fdTMyX21heChIWiAvIDUpICsgMjsKIAogCWFkZF93YWl0X3F1 ZXVlKHNrX3NsZWVwKHNrKSwgJndhaXQpOwogCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pZ21wLmMg Yi9uZXQvaXB2NC9pZ21wLmMKaW5kZXggZTNhYjBjYjYxNjI0Li45MTQ5ZTc4YmVlYTUgMTAwNjQ0 Ci0tLSBhL25ldC9pcHY0L2lnbXAuYworKysgYi9uZXQvaXB2NC9pZ21wLmMKQEAgLTIxMyw3ICsy MTMsNyBAQCBzdGF0aWMgdm9pZCBpZ21wX3N0b3BfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmlt KQogLyogSXQgbXVzdCBiZSBjYWxsZWQgd2l0aCBsb2NrZWQgaW0tPmxvY2sgKi8KIHN0YXRpYyB2 b2lkIGlnbXBfc3RhcnRfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltLCBpbnQgbWF4X2RlbGF5 KQogewotCWludCB0diA9IHByYW5kb21fdTMyKCkgJSBtYXhfZGVsYXk7CisJaW50IHR2ID0gcHJh bmRvbV91MzJfbWF4KG1heF9kZWxheSk7CiAKIAlpbS0+dG1fcnVubmluZyA9IDE7CiAJaWYgKCFt b2RfdGltZXIoJmltLT50aW1lciwgamlmZmllcyt0disyKSkKQEAgLTIyMiw3ICsyMjIsNyBAQCBz dGF0aWMgdm9pZCBpZ21wX3N0YXJ0X3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1h eF9kZWxheSkKIAogc3RhdGljIHZvaWQgaWdtcF9ncV9zdGFydF90aW1lcihzdHJ1Y3QgaW5fZGV2 aWNlICppbl9kZXYpCiB7Ci0JaW50IHR2ID0gcHJhbmRvbV91MzIoKSAlIGluX2Rldi0+bXJfbWF4 ZGVsYXk7CisJaW50IHR2ID0gcHJhbmRvbV91MzJfbWF4KGluX2Rldi0+bXJfbWF4ZGVsYXkpOwog CXVuc2lnbmVkIGxvbmcgZXhwID0gamlmZmllcyArIHR2ICsgMjsKIAogCWlmIChpbl9kZXYtPm1y X2dxX3J1bm5pbmcgJiYKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgdm9pZCBpZ21wX2dxX3N0 YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldikKIAogc3RhdGljIHZvaWQgaWdtcF9p ZmNfc3RhcnRfdGltZXIoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBpbnQgZGVsYXkpCiB7Ci0J aW50IHR2ID0gcHJhbmRvbV91MzIoKSAlIGRlbGF5OworCWludCB0diA9IHByYW5kb21fdTMyX21h eChkZWxheSk7CiAKIAlpZiAoIW1vZF90aW1lcigmaW5fZGV2LT5tcl9pZmNfdGltZXIsIGppZmZp ZXMrdHYrMikpCiAJCWluX2Rldl9ob2xkKGluX2Rldik7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9p bmV0X2Nvbm5lY3Rpb25fc29jay5jIGIvbmV0L2lwdjQvaW5ldF9jb25uZWN0aW9uX3NvY2suYwpp bmRleCBlYjMxYzcxNThiMzkuLjBjM2VhYjEzNDdjZCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaW5l dF9jb25uZWN0aW9uX3NvY2suYworKysgYi9uZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5j CkBAIC0yMjMsNyArMjIzLDcgQEAgaW5ldF9jc2tfZmluZF9vcGVuX3BvcnQoc3RydWN0IHNvY2sg KnNrLCBzdHJ1Y3QgaW5ldF9iaW5kX2J1Y2tldCAqKnRiX3JldCwgaW50ICoKIAlpZiAobGlrZWx5 KHJlbWFpbmluZyA+IDEpKQogCQlyZW1haW5pbmcgJj0gfjFVOwogCi0Jb2Zmc2V0ID0gcHJhbmRv bV91MzIoKSAlIHJlbWFpbmluZzsKKwlvZmZzZXQgPSBwcmFuZG9tX3UzMl9tYXgocmVtYWluaW5n KTsKIAkvKiBfX2luZXRfaGFzaF9jb25uZWN0KCkgZmF2b3JzIHBvcnRzIGhhdmluZyBAbG93IHBh cml0eQogCSAqIFdlIGRvIHRoZSBvcHBvc2l0ZSB0byBub3QgcG9sbHV0ZSBjb25uZWN0KCkgdXNl cnMuCiAJICovCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYyBiL25ldC9p cHY0L2luZXRfaGFzaHRhYmxlcy5jCmluZGV4IGI5ZDk5NWI1Y2UyNC4uOWRjMDcwZjIwMThlIDEw MDY0NAotLS0gYS9uZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYworKysgYi9uZXQvaXB2NC9pbmV0 X2hhc2h0YWJsZXMuYwpAQCAtNzk0LDcgKzc5NCw3IEBAIGludCBfX2luZXRfaGFzaF9jb25uZWN0 KHN0cnVjdCBpbmV0X3RpbWV3YWl0X2RlYXRoX3JvdyAqZGVhdGhfcm93LAogCSAqIG9uIGxvdyBj b250ZW50aW9uIHRoZSByYW5kb21uZXNzIGlzIG1heGltYWwgYW5kIG9uIGhpZ2ggY29udGVudGlv bgogCSAqIGl0IG1heSBiZSBpbmV4aXN0ZW50LgogCSAqLwotCWkgPSBtYXhfdChpbnQsIGksIChw cmFuZG9tX3UzMigpICYgNykgKiAyKTsKKwlpID0gbWF4X3QoaW50LCBpLCBwcmFuZG9tX3UzMl9t YXgoOCkgKiAyKTsKIAlXUklURV9PTkNFKHRhYmxlX3BlcnR1cmJbaW5kZXhdLCBSRUFEX09OQ0Uo dGFibGVfcGVydHVyYltpbmRleF0pICsgaSArIDIpOwogCiAJLyogSGVhZCBsb2NrIHN0aWxsIGhl bGQgYW5kIGJoJ3MgZGlzYWJsZWQgKi8KZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FkZHJjb25mLmMg Yi9uZXQvaXB2Ni9hZGRyY29uZi5jCmluZGV4IDEwY2U4NmJmMjI4ZS4uNDE3ODM0YjcxNjlkIDEw MDY0NAotLS0gYS9uZXQvaXB2Ni9hZGRyY29uZi5jCisrKyBiL25ldC9pcHY2L2FkZHJjb25mLmMK QEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgaW5saW5lIHUzMiBjc3RhbXBfZGVsdGEodW5zaWdu ZWQgbG9uZyBjc3RhbXApCiBzdGF0aWMgaW5saW5lIHMzMiByZmMzMzE1X3MxNF9iYWNrb2ZmX2lu aXQoczMyIGlydCkKIHsKIAkvKiBtdWx0aXBseSAnaW5pdGlhbCByZXRyYW5zbWlzc2lvbiB0aW1l JyBieSAwLjkgLi4gMS4xICovCi0JdTY0IHRtcCA9ICg5MDAwMDAgKyBwcmFuZG9tX3UzMigpICUg MjAwMDAxKSAqICh1NjQpaXJ0OworCXU2NCB0bXAgPSAoOTAwMDAwICsgcHJhbmRvbV91MzJfbWF4 KDIwMDAwMSkpICogKHU2NClpcnQ7CiAJZG9fZGl2KHRtcCwgMTAwMDAwMCk7CiAJcmV0dXJuIChz MzIpdG1wOwogfQpAQCAtMTEyLDExICsxMTIsMTEgQEAgc3RhdGljIGlubGluZSBzMzIgcmZjMzMx NV9zMTRfYmFja29mZl9pbml0KHMzMiBpcnQpCiBzdGF0aWMgaW5saW5lIHMzMiByZmMzMzE1X3Mx NF9iYWNrb2ZmX3VwZGF0ZShzMzIgcnQsIHMzMiBtcnQpCiB7CiAJLyogbXVsdGlwbHkgJ3JldHJh bnNtaXNzaW9uIHRpbWVvdXQnIGJ5IDEuOSAuLiAyLjEgKi8KLQl1NjQgdG1wID0gKDE5MDAwMDAg KyBwcmFuZG9tX3UzMigpICUgMjAwMDAxKSAqICh1NjQpcnQ7CisJdTY0IHRtcCA9ICgxOTAwMDAw ICsgcHJhbmRvbV91MzJfbWF4KDIwMDAwMSkpICogKHU2NClydDsKIAlkb19kaXYodG1wLCAxMDAw MDAwKTsKIAlpZiAoKHMzMil0bXAgPiBtcnQpIHsKIAkJLyogbXVsdGlwbHkgJ21heGltdW0gcmV0 cmFuc21pc3Npb24gdGltZScgYnkgMC45IC4uIDEuMSAqLwotCQl0bXAgPSAoOTAwMDAwICsgcHJh bmRvbV91MzIoKSAlIDIwMDAwMSkgKiAodTY0KW1ydDsKKwkJdG1wID0gKDkwMDAwMCArIHByYW5k b21fdTMyX21heCgyMDAwMDEpKSAqICh1NjQpbXJ0OwogCQlkb19kaXYodG1wLCAxMDAwMDAwKTsK IAl9CiAJcmV0dXJuIChzMzIpdG1wOwpAQCAtMzk2Nyw3ICszOTY3LDcgQEAgc3RhdGljIHZvaWQg YWRkcmNvbmZfZGFkX2tpY2soc3RydWN0IGluZXQ2X2lmYWRkciAqaWZwKQogCWlmIChpZnAtPmZs YWdzICYgSUZBX0ZfT1BUSU1JU1RJQykKIAkJcmFuZF9udW0gPSAwOwogCWVsc2UKLQkJcmFuZF9u dW0gPSBwcmFuZG9tX3UzMigpICUgKGlkZXYtPmNuZi5ydHJfc29saWNpdF9kZWxheSA/IDogMSk7 CisJCXJhbmRfbnVtID0gcHJhbmRvbV91MzJfbWF4KGlkZXYtPmNuZi5ydHJfc29saWNpdF9kZWxh eSA/OiAxKTsKIAogCW5vbmNlID0gMDsKIAlpZiAoaWRldi0+Y25mLmVuaGFuY2VkX2RhZCB8fApk aWZmIC0tZ2l0IGEvbmV0L2lwdjYvbWNhc3QuYyBiL25ldC9pcHY2L21jYXN0LmMKaW5kZXggODdj Njk5ZDU3YjM2Li5iZjRmNWVkYjNjM2UgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L21jYXN0LmMKKysr IGIvbmV0L2lwdjYvbWNhc3QuYwpAQCAtMTA1MCw3ICsxMDUwLDcgQEAgYm9vbCBpcHY2X2Noa19t Y2FzdF9hZGRyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBpbjZfYWRkciAq Z3JvdXAsCiAvKiBjYWxsZWQgd2l0aCBtY19sb2NrICovCiBzdGF0aWMgdm9pZCBtbGRfZ3Ffc3Rh cnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KQogewotCXVuc2lnbmVkIGxvbmcgdHYgPSBw cmFuZG9tX3UzMigpICUgaWRldi0+bWNfbWF4ZGVsYXk7CisJdW5zaWduZWQgbG9uZyB0diA9IHBy YW5kb21fdTMyX21heChpZGV2LT5tY19tYXhkZWxheSk7CiAKIAlpZGV2LT5tY19ncV9ydW5uaW5n ID0gMTsKIAlpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmaWRldi0+bWNfZ3Ffd29yaywg dHYgKyAyKSkKQEAgLTEwNjgsNyArMTA2OCw3IEBAIHN0YXRpYyB2b2lkIG1sZF9ncV9zdG9wX3dv cmsoc3RydWN0IGluZXQ2X2RldiAqaWRldikKIC8qIGNhbGxlZCB3aXRoIG1jX2xvY2sgKi8KIHN0 YXRpYyB2b2lkIG1sZF9pZmNfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1bnNp Z25lZCBsb25nIGRlbGF5KQogewotCXVuc2lnbmVkIGxvbmcgdHYgPSBwcmFuZG9tX3UzMigpICUg ZGVsYXk7CisJdW5zaWduZWQgbG9uZyB0diA9IHByYW5kb21fdTMyX21heChkZWxheSk7CiAKIAlp ZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmaWRldi0+bWNfaWZjX3dvcmssIHR2ICsgMikp CiAJCWluNl9kZXZfaG9sZChpZGV2KTsKQEAgLTEwODUsNyArMTA4NSw3IEBAIHN0YXRpYyB2b2lk IG1sZF9pZmNfc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpCiAvKiBjYWxsZWQgd2l0 aCBtY19sb2NrICovCiBzdGF0aWMgdm9pZCBtbGRfZGFkX3N0YXJ0X3dvcmsoc3RydWN0IGluZXQ2 X2RldiAqaWRldiwgdW5zaWduZWQgbG9uZyBkZWxheSkKIHsKLQl1bnNpZ25lZCBsb25nIHR2ID0g cHJhbmRvbV91MzIoKSAlIGRlbGF5OworCXVuc2lnbmVkIGxvbmcgdHYgPSBwcmFuZG9tX3UzMl9t YXgoZGVsYXkpOwogCiAJaWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgJmlkZXYtPm1jX2Rh ZF93b3JrLCB0diArIDIpKQogCQlpbjZfZGV2X2hvbGQoaWRldik7CkBAIC0xMTMwLDcgKzExMzAs NyBAQCBzdGF0aWMgdm9pZCBpZ21wNl9ncm91cF9xdWVyaWVkKHN0cnVjdCBpZm1jYWRkcjYgKm1h LCB1bnNpZ25lZCBsb25nIHJlc3B0aW1lKQogCX0KIAogCWlmIChkZWxheSA+PSByZXNwdGltZSkK LQkJZGVsYXkgPSBwcmFuZG9tX3UzMigpICUgcmVzcHRpbWU7CisJCWRlbGF5ID0gcHJhbmRvbV91 MzJfbWF4KHJlc3B0aW1lKTsKIAogCWlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsICZtYS0+ bWNhX3dvcmssIGRlbGF5KSkKIAkJcmVmY291bnRfaW5jKCZtYS0+bWNhX3JlZmNudCk7CkBAIC0y NTc0LDcgKzI1NzQsNyBAQCBzdGF0aWMgdm9pZCBpZ21wNl9qb2luX2dyb3VwKHN0cnVjdCBpZm1j YWRkcjYgKm1hKQogCiAJaWdtcDZfc2VuZCgmbWEtPm1jYV9hZGRyLCBtYS0+aWRldi0+ZGV2LCBJ Q01QVjZfTUdNX1JFUE9SVCk7CiAKLQlkZWxheSA9IHByYW5kb21fdTMyKCkgJSB1bnNvbGljaXRl ZF9yZXBvcnRfaW50ZXJ2YWwobWEtPmlkZXYpOworCWRlbGF5ID0gcHJhbmRvbV91MzJfbWF4KHVu c29saWNpdGVkX3JlcG9ydF9pbnRlcnZhbChtYS0+aWRldikpOwogCiAJaWYgKGNhbmNlbF9kZWxh eWVkX3dvcmsoJm1hLT5tY2Ffd29yaykpIHsKIAkJcmVmY291bnRfZGVjKCZtYS0+bWNhX3JlZmNu dCk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jIGIvbmV0L25l dGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYwppbmRleCBhY2I1NWQ4MzkzZWYuLmYyNTc5ZmM5Yzc1 YiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3R3b3MuYworKysgYi9uZXQv bmV0ZmlsdGVyL2lwdnMvaXBfdnNfdHdvcy5jCkBAIC03MSw4ICs3MSw4IEBAIHN0YXRpYyBzdHJ1 Y3QgaXBfdnNfZGVzdCAqaXBfdnNfdHdvc19zY2hlZHVsZShzdHJ1Y3QgaXBfdnNfc2VydmljZSAq c3ZjLAogCSAqIGZyb20gMCB0byB0b3RhbF93ZWlnaHQKIAkgKi8KIAl0b3RhbF93ZWlnaHQgKz0g MTsKLQlyd2VpZ2h0MSA9IHByYW5kb21fdTMyKCkgJSB0b3RhbF93ZWlnaHQ7Ci0JcndlaWdodDIg PSBwcmFuZG9tX3UzMigpICUgdG90YWxfd2VpZ2h0OworCXJ3ZWlnaHQxID0gcHJhbmRvbV91MzJf bWF4KHRvdGFsX3dlaWdodCk7CisJcndlaWdodDIgPSBwcmFuZG9tX3UzMl9tYXgodG90YWxfd2Vp Z2h0KTsKIAogCS8qIFBpY2sgdHdvIHdlaWdodGVkIHNlcnZlcnMgKi8KIAlsaXN0X2Zvcl9lYWNo X2VudHJ5X3JjdShkZXN0LCAmc3ZjLT5kZXN0aW5hdGlvbnMsIG5fbGlzdCkgewpkaWZmIC0tZ2l0 IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKaW5kZXgg NWNiZTA3MTE2ZTA0Li4zMzFmODBlMTI3NzkgMTAwNjQ0Ci0tLSBhL25ldC9wYWNrZXQvYWZfcGFj a2V0LmMKKysrIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwpAQCAtMTM1MCw3ICsxMzUwLDcgQEAg c3RhdGljIGJvb2wgZmFub3V0X2Zsb3dfaXNfaHVnZShzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQlpZiAoUkVBRF9PTkNFKGhpc3RvcnlbaV0pID09IHJ4aGFz aCkKIAkJCWNvdW50Kys7CiAKLQl2aWN0aW0gPSBwcmFuZG9tX3UzMigpICUgUk9MTE9WRVJfSExF TjsKKwl2aWN0aW0gPSBwcmFuZG9tX3UzMl9tYXgoUk9MTE9WRVJfSExFTik7CiAKIAkvKiBBdm9p ZCBkaXJ0eWluZyB0aGUgY2FjaGUgbGluZSBpZiBwb3NzaWJsZSAqLwogCWlmIChSRUFEX09OQ0Uo aGlzdG9yeVt2aWN0aW1dKSAhPSByeGhhc2gpCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2dh Y3QuYyBiL25ldC9zY2hlZC9hY3RfZ2FjdC5jCmluZGV4IGFjMjlkMTA2NTIzMi4uMWFjY2FlZGVm NTRmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvYWN0X2dhY3QuYworKysgYi9uZXQvc2NoZWQvYWN0 X2dhY3QuYwpAQCAtMjYsNyArMjYsNyBAQCBzdGF0aWMgc3RydWN0IHRjX2FjdGlvbl9vcHMgYWN0 X2dhY3Rfb3BzOwogc3RhdGljIGludCBnYWN0X25ldF9yYW5kKHN0cnVjdCB0Y2ZfZ2FjdCAqZ2Fj dCkKIHsKIAlzbXBfcm1iKCk7IC8qIGNvdXBsZWQgd2l0aCBzbXBfd21iKCkgaW4gdGNmX2dhY3Rf aW5pdCgpICovCi0JaWYgKHByYW5kb21fdTMyKCkgJSBnYWN0LT50Y2ZnX3B2YWwpCisJaWYgKHBy YW5kb21fdTMyX21heChnYWN0LT50Y2ZnX3B2YWwpKQogCQlyZXR1cm4gZ2FjdC0+dGNmX2FjdGlv bjsKIAlyZXR1cm4gZ2FjdC0+dGNmZ19wYWN0aW9uOwogfQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVk L2FjdF9zYW1wbGUuYyBiL25ldC9zY2hlZC9hY3Rfc2FtcGxlLmMKaW5kZXggMmY3ZjVlNDRkMjhj Li41NWM5Zjk2MWZiMGYgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9hY3Rfc2FtcGxlLmMKKysrIGIv bmV0L3NjaGVkL2FjdF9zYW1wbGUuYwpAQCAtMTY5LDcgKzE2OSw3IEBAIHN0YXRpYyBpbnQgdGNm X3NhbXBsZV9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3RydWN0IHRjX2FjdGlvbiAq YSwKIAlwc2FtcGxlX2dyb3VwID0gcmN1X2RlcmVmZXJlbmNlX2JoKHMtPnBzYW1wbGVfZ3JvdXAp OwogCiAJLyogcmFuZG9tbHkgc2FtcGxlIHBhY2tldHMgYWNjb3JkaW5nIHRvIHJhdGUgKi8KLQlp ZiAocHNhbXBsZV9ncm91cCAmJiAocHJhbmRvbV91MzIoKSAlIHMtPnJhdGUgPT0gMCkpIHsKKwlp ZiAocHNhbXBsZV9ncm91cCAmJiAocHJhbmRvbV91MzJfbWF4KHMtPnJhdGUpID09IDApKSB7CiAJ CWlmICghc2tiX2F0X3RjX2luZ3Jlc3Moc2tiKSkgewogCQkJbWQuaW5faWZpbmRleCA9IHNrYi0+ c2tiX2lpZjsKIAkJCW1kLm91dF9pZmluZGV4ID0gc2tiLT5kZXYtPmlmaW5kZXg7CmRpZmYgLS1n aXQgYS9uZXQvc2NoZWQvc2NoX25ldGVtLmMgYi9uZXQvc2NoZWQvc2NoX25ldGVtLmMKaW5kZXgg NTQ0OWVkMTE0ZTQwLi4zY2EzMjBmMWEwMzEgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfbmV0 ZW0uYworKysgYi9uZXQvc2NoZWQvc2NoX25ldGVtLmMKQEAgLTUxMyw4ICs1MTMsOCBAQCBzdGF0 aWMgaW50IG5ldGVtX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpz Y2gsCiAJCQlnb3RvIGZpbmlzaF9zZWdzOwogCQl9CiAKLQkJc2tiLT5kYXRhW3ByYW5kb21fdTMy KCkgJSBza2JfaGVhZGxlbihza2IpXSBePQotCQkJMTw8KHByYW5kb21fdTMyKCkgJSA4KTsKKwkJ c2tiLT5kYXRhW3ByYW5kb21fdTMyX21heChza2JfaGVhZGxlbihza2IpKV0gXj0KKwkJCTE8PHBy YW5kb21fdTMyX21heCg4KTsKIAl9CiAKIAlpZiAodW5saWtlbHkoc2NoLT5xLnFsZW4gPj0gc2No LT5saW1pdCkpIHsKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NvY2tldC5jIGIvbmV0L3NjdHAvc29j a2V0LmMKaW5kZXggMTcxZjFhMzVkMjA1Li4xZTM1NGJhNDQ5NjAgMTAwNjQ0Ci0tLSBhL25ldC9z Y3RwL3NvY2tldC5jCisrKyBiL25ldC9zY3RwL3NvY2tldC5jCkBAIC04MzE5LDcgKzgzMTksNyBA QCBzdGF0aWMgaW50IHNjdHBfZ2V0X3BvcnRfbG9jYWwoc3RydWN0IHNvY2sgKnNrLCB1bmlvbiBz Y3RwX2FkZHIgKmFkZHIpCiAKIAkJaW5ldF9nZXRfbG9jYWxfcG9ydF9yYW5nZShuZXQsICZsb3cs ICZoaWdoKTsKIAkJcmVtYWluaW5nID0gKGhpZ2ggLSBsb3cpICsgMTsKLQkJcm92ZXIgPSBwcmFu ZG9tX3UzMigpICUgcmVtYWluaW5nICsgbG93OworCQlyb3ZlciA9IHByYW5kb21fdTMyX21heChy ZW1haW5pbmcpICsgbG93OwogCiAJCWRvIHsKIAkJCXJvdmVyKys7CmRpZmYgLS1naXQgYS9uZXQv c3VucnBjL2NhY2hlLmMgYi9uZXQvc3VucnBjL2NhY2hlLmMKaW5kZXggYzNjNjkzYjUxYzk0Li5m MDc1YTlmYjVjY2MgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMvY2FjaGUuYworKysgYi9uZXQvc3Vu cnBjL2NhY2hlLmMKQEAgLTY3Nyw3ICs2NzcsNyBAQCBzdGF0aWMgdm9pZCBjYWNoZV9saW1pdF9k ZWZlcnModm9pZCkKIAogCS8qIENvbnNpZGVyIHJlbW92aW5nIGVpdGhlciB0aGUgZmlyc3Qgb3Ig dGhlIGxhc3QgKi8KIAlpZiAoY2FjaGVfZGVmZXJfY250ID4gREZSX01BWCkgewotCQlpZiAocHJh bmRvbV91MzIoKSAmIDEpCisJCWlmIChwcmFuZG9tX3UzMl9tYXgoMikpCiAJCQlkaXNjYXJkID0g bGlzdF9lbnRyeShjYWNoZV9kZWZlcl9saXN0Lm5leHQsCiAJCQkJCSAgICAgc3RydWN0IGNhY2hl X2RlZmVycmVkX3JlcSwgcmVjZW50KTsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94 cHJ0c29jay5jIGIvbmV0L3N1bnJwYy94cHJ0c29jay5jCmluZGV4IGU5NzYwMDdmNGZkMC4uYzJj YWVlNzAzZDJjIDEwMDY0NAotLS0gYS9uZXQvc3VucnBjL3hwcnRzb2NrLmMKKysrIGIvbmV0L3N1 bnJwYy94cHJ0c29jay5jCkBAIC0xNjE5LDcgKzE2MTksNyBAQCBzdGF0aWMgaW50IHhzX2dldF9y YW5kb21fcG9ydCh2b2lkKQogCWlmIChtYXggPCBtaW4pCiAJCXJldHVybiAtRUFERFJJTlVTRTsK IAlyYW5nZSA9IG1heCAtIG1pbiArIDE7Ci0JcmFuZCA9ICh1bnNpZ25lZCBzaG9ydCkgcHJhbmRv bV91MzIoKSAlIHJhbmdlOworCXJhbmQgPSAodW5zaWduZWQgc2hvcnQpIHByYW5kb21fdTMyX21h eChyYW5nZSk7CiAJcmV0dXJuIHJhbmQgKyBtaW47CiB9CiAKZGlmZiAtLWdpdCBhL25ldC90aXBj L3NvY2tldC5jIGIvbmV0L3RpcGMvc29ja2V0LmMKaW5kZXggZjFjM2I4ZWI0YjNkLi5lOTAyYjAx ZWEzY2IgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL3NvY2tldC5jCisrKyBiL25ldC90aXBjL3NvY2tl dC5jCkBAIC0zMDEwLDcgKzMwMTAsNyBAQCBzdGF0aWMgaW50IHRpcGNfc2tfaW5zZXJ0KHN0cnVj dCB0aXBjX3NvY2sgKnRzaykKIAlzdHJ1Y3QgbmV0ICpuZXQgPSBzb2NrX25ldChzayk7CiAJc3Ry dWN0IHRpcGNfbmV0ICp0biA9IG5ldF9nZW5lcmljKG5ldCwgdGlwY19uZXRfaWQpOwogCXUzMiBy ZW1haW5pbmcgPSAoVElQQ19NQVhfUE9SVCAtIFRJUENfTUlOX1BPUlQpICsgMTsKLQl1MzIgcG9y dGlkID0gcHJhbmRvbV91MzIoKSAlIHJlbWFpbmluZyArIFRJUENfTUlOX1BPUlQ7CisJdTMyIHBv cnRpZCA9IHByYW5kb21fdTMyX21heChyZW1haW5pbmcpICsgVElQQ19NSU5fUE9SVDsKIAogCXdo aWxlIChyZW1haW5pbmctLSkgewogCQlwb3J0aWQrKzsKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hm cm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuYwppbmRleCA5MWMzMmEzYjY5MjQuLmIy MTNjODljZmI4YSAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV9zdGF0ZS5jCisrKyBiL25ldC94 ZnJtL3hmcm1fc3RhdGUuYwpAQCAtMjA3Miw3ICsyMDcyLDcgQEAgaW50IHhmcm1fYWxsb2Nfc3Bp KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCB1MzIgbG93LCB1MzIgaGlnaCkKIAl9IGVsc2UgewogCQl1 MzIgc3BpID0gMDsKIAkJZm9yIChoID0gMDsgaCA8IGhpZ2gtbG93KzE7IGgrKykgewotCQkJc3Bp ID0gbG93ICsgcHJhbmRvbV91MzIoKSUoaGlnaC1sb3crMSk7CisJCQlzcGkgPSBsb3cgKyBwcmFu ZG9tX3UzMl9tYXgoaGlnaCAtIGxvdyArIDEpOwogCQkJeDAgPSB4ZnJtX3N0YXRlX2xvb2t1cChu ZXQsIG1hcmssICZ4LT5pZC5kYWRkciwgaHRvbmwoc3BpKSwgeC0+aWQucHJvdG8sIHgtPnByb3Bz LmZhbWlseSk7CiAJCQlpZiAoeDAgPT0gTlVMTCkgewogCQkJCW5ld3NwaSA9IGh0b25sKHNwaSk7 Ci0tIAoyLjM3LjMKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC11bSBtYWlsaW5nIGxpc3QKbGludXgtdW1AbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXVtCg==