From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kent Overstreet Subject: [PATCH 04/25] block: Abstract out bvec iterator Date: Tue, 26 Nov 2013 16:45:07 -0800 Message-ID: <1385513128-5035-4-git-send-email-kmo@daterainc.com> References: <20131127004422.GB21305@kmo> <1385513128-5035-1-git-send-email-kmo@daterainc.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Dave Kleikamp , Jeremy Fitzhardinge , Herton Ronaldo Krzesinski , Jan Beulich , "Ed L. Cashin" , "Michael S. Tsirkin" , Neil Brown , Benjamin Herrenschmidt , Selvan Mani , Namjae Jeon , Heiko Carstens , Chris Mason , dm-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, Paul Mackerras , Pavel Machek , KONISHI Ryusuke , Joshua Morris , Alasdair Kergon , Sage Weil , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Joe Perches , Mike Snitzer , Len Brown , Min To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org Return-path: In-Reply-To: <1385513128-5035-1-git-send-email-kmo-PEzghdH756F8UrSeD/g0lQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: drbd-dev-bounces-cunTk1MwBs8qoQakbn7OcQ@public.gmane.org Errors-To: drbd-dev-bounces-cunTk1MwBs8qoQakbn7OcQ@public.gmane.org List-Id: linux-fsdevel.vger.kernel.org SW1tdXRhYmxlIGJpb3ZlY3MgYXJlIGdvaW5nIHRvIHJlcXVpcmUgYW4gZXhwbGljaXQgaXRlcmF0 b3IuIFRvCmltcGxlbWVudCBpbW11dGFibGUgYnZlY3MsIGEgbGF0ZXIgcGF0Y2ggaXMgZ29pbmcg dG8gYWRkIGEgYmlfYnZlY19kb25lCm1lbWJlciB0byB0aGlzIHN0cnVjdDsgZm9yIG5vdywgdGhp cyBwYXRjaCBlZmZlY3RpdmVseSBqdXN0IHJlbmFtZXMKdGhpbmdzLgoKU2lnbmVkLW9mZi1ieTog S2VudCBPdmVyc3RyZWV0IDxrbW9AZGF0ZXJhaW5jLmNvbT4KQ2M6IEplbnMgQXhib2UgPGF4Ym9l QGtlcm5lbC5kaz4KQ2M6IEdlZXJ0IFV5dHRlcmhvZXZlbiA8Z2VlcnRAbGludXgtbTY4ay5vcmc+ CkNjOiBCZW5qYW1pbiBIZXJyZW5zY2htaWR0IDxiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc+CkNj OiBQYXVsIE1hY2tlcnJhcyA8cGF1bHVzQHNhbWJhLm9yZz4KQ2M6ICJFZCBMLiBDYXNoaW4iIDxl Y2FzaGluQGNvcmFpZC5jb20+CkNjOiBOaWNrIFBpZ2dpbiA8bnBpZ2dpbkBrZXJuZWwuZGs+CkNj OiBMYXJzIEVsbGVuYmVyZyA8ZHJiZC1kZXZAbGlzdHMubGluYml0LmNvbT4KQ2M6IEppcmkgS29z aW5hIDxqa29zaW5hQHN1c2UuY3o+CkNjOiBNYXR0aGV3IFdpbGNveCA8d2lsbHlAbGludXguaW50 ZWwuY29tPgpDYzogR2VvZmYgTGV2YW5kIDxnZW9mZkBpbmZyYWRlYWQub3JnPgpDYzogWWVodWRh IFNhZGVoIDx5ZWh1ZGFAaW5rdGFuay5jb20+CkNjOiBTYWdlIFdlaWwgPHNhZ2VAaW5rdGFuay5j b20+CkNjOiBBbGV4IEVsZGVyIDxlbGRlckBpbmt0YW5rLmNvbT4KQ2M6IGNlcGgtZGV2ZWxAdmdl ci5rZXJuZWwub3JnCkNjOiBKb3NodWEgTW9ycmlzIDxqb3NoLmgubW9ycmlzQHVzLmlibS5jb20+ CkNjOiBQaGlsaXAgS2VsbGVoZXIgPHBqazE5MzlAbGludXgudm5ldC5pYm0uY29tPgpDYzogUnVz dHkgUnVzc2VsbCA8cnVzdHlAcnVzdGNvcnAuY29tLmF1PgpDYzogIk1pY2hhZWwgUy4gVHNpcmtp biIgPG1zdEByZWRoYXQuY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2ls a0BvcmFjbGUuY29tPgpDYzogSmVyZW15IEZpdHpoYXJkaW5nZSA8amVyZW15QGdvb3Aub3JnPgpD YzogTmVpbCBCcm93biA8bmVpbGJAc3VzZS5kZT4KQ2M6IEFsYXNkYWlyIEtlcmdvbiA8YWdrQHJl ZGhhdC5jb20+CkNjOiBNaWtlIFNuaXR6ZXIgPHNuaXR6ZXJAcmVkaGF0LmNvbT4KQ2M6IGRtLWRl dmVsQHJlZGhhdC5jb20KQ2M6IE1hcnRpbiBTY2h3aWRlZnNreSA8c2Nod2lkZWZza3lAZGUuaWJt LmNvbT4KQ2M6IEhlaWtvIENhcnN0ZW5zIDxoZWlrby5jYXJzdGVuc0BkZS5pYm0uY29tPgpDYzog bGludXgzOTBAZGUuaWJtLmNvbQpDYzogQm9heiBIYXJyb3NoIDxiaGFycm9zaEBwYW5hc2FzLmNv bT4KQ2M6IEJlbm55IEhhbGV2eSA8YmhhbGV2eUB0b25pYW4uY29tPgpDYzogIkphbWVzIEUuSi4g Qm90dG9tbGV5IiA8SkJvdHRvbWxleUBwYXJhbGxlbHMuY29tPgpDYzogR3JlZyBLcm9haC1IYXJ0 bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KQ2M6ICJOaWNob2xhcyBBLiBCZWxsaW5n ZXIiIDxuYWJAbGludXgtaXNjc2kub3JnPgpDYzogQWxleGFuZGVyIFZpcm8gPHZpcm9AemVuaXYu bGludXgub3JnLnVrPgpDYzogQ2hyaXMgTWFzb24gPGNocmlzLm1hc29uQGZ1c2lvbmlvLmNvbT4K Q2M6ICJUaGVvZG9yZSBUcydvIiA8dHl0c29AbWl0LmVkdT4KQ2M6IEFuZHJlYXMgRGlsZ2VyIDxh ZGlsZ2VyLmtlcm5lbEBkaWxnZXIuY2E+CkNjOiBKYWVnZXVrIEtpbSA8amFlZ2V1ay5raW1Ac2Ft c3VuZy5jb20+CkNjOiBTdGV2ZW4gV2hpdGVob3VzZSA8c3doaXRlaG9AcmVkaGF0LmNvbT4KQ2M6 IERhdmUgS2xlaWthbXAgPHNoYWdneUBrZXJuZWwub3JnPgpDYzogSm9lcm4gRW5nZWwgPGpvZXJu QGxvZ2ZzLm9yZz4KQ2M6IFByYXNhZCBKb3NoaSA8cHJhc2Fkam9zaGkubGludXhAZ21haWwuY29t PgpDYzogVHJvbmQgTXlrbGVidXN0IDxUcm9uZC5NeWtsZWJ1c3RAbmV0YXBwLmNvbT4KQ2M6IEtP TklTSEkgUnl1c3VrZSA8a29uaXNoaS5yeXVzdWtlQGxhYi5udHQuY28uanA+CkNjOiBNYXJrIEZh c2hlaCA8bWZhc2hlaEBzdXNlLmNvbT4KQ2M6IEpvZWwgQmVja2VyIDxqbGJlY0BldmlscGxhbi5v cmc+CkNjOiBCZW4gTXllcnMgPGJwbUBzZ2kuY29tPgpDYzogeGZzQG9zcy5zZ2kuY29tCkNjOiBT dGV2ZW4gUm9zdGVkdCA8cm9zdGVkdEBnb29kbWlzLm9yZz4KQ2M6IEZyZWRlcmljIFdlaXNiZWNr ZXIgPGZ3ZWlzYmVjQGdtYWlsLmNvbT4KQ2M6IEluZ28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29t PgpDYzogTGVuIEJyb3duIDxsZW4uYnJvd25AaW50ZWwuY29tPgpDYzogUGF2ZWwgTWFjaGVrIDxw YXZlbEB1Y3cuY3o+CkNjOiAiUmFmYWVsIEouIFd5c29ja2kiIDxyandAc2lzay5wbD4KQ2M6IEhl cnRvbiBSb25hbGRvIEtyemVzaW5za2kgPGhlcnRvbi5rcnplc2luc2tpQGNhbm9uaWNhbC5jb20+ CkNjOiBCZW4gSHV0Y2hpbmdzIDxiZW5AZGVjYWRlbnQub3JnLnVrPgpDYzogQW5kcmV3IE1vcnRv biA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KQ2M6IEd1byBDaGFvIDx5YW5AbGludXgudm5l dC5pYm0uY29tPgpDYzogVGVqdW4gSGVvIDx0akBrZXJuZWwub3JnPgpDYzogQXNhaSBUaGFtYmkg UyBQIDxhc2FteW11dGh1cGFAbWljcm9uLmNvbT4KQ2M6IFNlbHZhbiBNYW5pIDxzbWFuaUBtaWNy b24uY29tPgpDYzogU2FtIEJyYWRzaGF3IDxzYnJhZHNoYXdAbWljcm9uLmNvbT4KQ2M6IFdlaSBZ b25nanVuIDx5b25nanVuX3dlaUB0cmVuZG1pY3JvLmNvbS5jbj4KQ2M6ICJSb2dlciBQYXUgTW9u bsOpIiA8cm9nZXIucGF1QGNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz ZS5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZhbm8uc3RhYmVsbGluaUBldS5jaXRy aXguY29tPgpDYzogSWFuIENhbXBiZWxsIDxJYW4uQ2FtcGJlbGxAY2l0cml4LmNvbT4KQ2M6IFNl YmFzdGlhbiBPdHQgPHNlYm90dEBsaW51eC52bmV0LmlibS5jb20+CkNjOiBDaHJpc3RpYW4gQm9y bnRyYWVnZXIgPGJvcm50cmFlZ2VyQGRlLmlibS5jb20+CkNjOiBNaW5jaGFuIEtpbSA8bWluY2hh bkBrZXJuZWwub3JnPgpDYzogSmlhbmcgTGl1IDxqaWFuZy5saXVAaHVhd2VpLmNvbT4KQ2M6IE5p dGluIEd1cHRhIDxuZ3VwdGFAdmZsYXJlLm9yZz4KQ2M6IEplcm9tZSBNYXJjaGFuZCA8am1hcmNo YW5kQHJlZGhhdC5jb20+CkNjOiBKb2UgUGVyY2hlcyA8am9lQHBlcmNoZXMuY29tPgpDYzogUGVu ZyBUYW8gPHRhby5wZW5nQGVtYy5jb20+CkNjOiBBbmR5IEFkYW1zb24gPGFuZHJvc0BuZXRhcHAu Y29tPgpDYzogZmFuY2hhb3RpbmcgPGZhbmNoYW90aW5nQGNuLmZ1aml0c3UuY29tPgpDYzogSmll IExpdSA8amVmZi5saXVAb3JhY2xlLmNvbT4KQ2M6IFN1bmlsIE11c2hyYW4gPHN1bmlsLm11c2hy YW5AZ21haWwuY29tPgpDYzogIk1hcnRpbiBLLiBQZXRlcnNlbiIgPG1hcnRpbi5wZXRlcnNlbkBv cmFjbGUuY29tPgpDYzogTmFtamFlIEplb24gPG5hbWphZS5qZW9uQHNhbXN1bmcuY29tPgpDYzog UGFua2FqIEt1bWFyIDxwYW5rYWoua21Ac2Ftc3VuZy5jb20+CkNjOiBEYW4gTWFnZW5oZWltZXIg PGRhbi5tYWdlbmhlaW1lckBvcmFjbGUuY29tPgpDYzogTWVsIEdvcm1hbiA8bWdvcm1hbkBzdXNl LmRlPjYKLS0tCiBEb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb2RvYy50eHQgICAgICAgICAgICAgIHwg IDcgKy0tCiBhcmNoL202OGsvZW11L25mYmxvY2suYyAgICAgICAgICAgICAgICAgICAgIHwgIDIg Ky0KIGFyY2gvcG93ZXJwYy9zeXNkZXYvYXhvbnJhbS5jICAgICAgICAgICAgICAgfCAgMyArLQog YmxvY2svYmxrLWNvcmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM2ICsrKysrKy0t LS0tLQogYmxvY2svYmxrLWZsdXNoLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICst CiBibG9jay9ibGstbGliLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIgKystLQog YmxvY2svYmxrLW1hcC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICstCiBibG9j ay9ibGstbWVyZ2UuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGJsb2NrL2Js ay1tcS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogYmxvY2svYmxrLXRo cm90dGxlLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrLS0tCiBibG9jay9lbGV2YXRv ci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvYmxvY2svYW9l L2FvZWNtZC5jICAgICAgICAgICAgICAgICAgfCAgNiArLQogZHJpdmVycy9ibG9jay9icmQuYyAg ICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9h Y3Rsb2cuYyAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1h cC5jICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIu YyAgICAgICAgICB8ICA2ICstCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuYyAgICAgICAg ICAgICAgIHwgIDYgKy0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oICAgICAgICAgICAg ICAgfCAgMiArLQogZHJpdmVycy9ibG9jay9mbG9wcHkuYyAgICAgICAgICAgICAgICAgICAgICB8 ICA0ICstCiBkcml2ZXJzL2Jsb2NrL2xvb3AuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQg Ky0KIGRyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYyAgICAgICAgICAgfCAgNyArKy0K IGRyaXZlcnMvYmxvY2svbnZtZS1jb3JlLmMgICAgICAgICAgICAgICAgICAgfCAyNSArKysrLS0t LQogZHJpdmVycy9ibG9jay9wa3RjZHZkLmMgICAgICAgICAgICAgICAgICAgICB8IDU0ICsrKysr KysrKy0tLS0tLS0tCiBkcml2ZXJzL2Jsb2NrL3BzM2Rpc2suYyAgICAgICAgICAgICAgICAgICAg IHwgIDIgKy0KIGRyaXZlcnMvYmxvY2svcHMzdnJhbS5jICAgICAgICAgICAgICAgICAgICAgfCAg MiArLQogZHJpdmVycy9ibG9jay9yYmQuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDIxICsr Ky0tLS0KIGRyaXZlcnMvYmxvY2svcnN4eC9kZXYuYyAgICAgICAgICAgICAgICAgICAgfCAgNiAr LQogZHJpdmVycy9ibG9jay9yc3h4L2RtYS5jICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBk cml2ZXJzL2Jsb2NrL3VtZW0uYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKy0tCiBkcml2 ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL2Jsa2JhY2suYyAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMv YmxvY2sveGVuLWJsa2Zyb250LmMgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9i Y2FjaGUvYnRyZWUuYyAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL21kL2JjYWNo ZS9kZWJ1Zy5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvbWQvYmNhY2hlL2lv LmMgICAgICAgICAgICAgICAgICAgICAgfCAyNiArKysrLS0tLS0KIGRyaXZlcnMvbWQvYmNhY2hl L2pvdXJuYWwuYyAgICAgICAgICAgICAgICAgfCAxMiArKy0tCiBkcml2ZXJzL21kL2JjYWNoZS9t b3ZpbmdnYy5jICAgICAgICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvbWQvYmNhY2hlL3JlcXVl c3QuYyAgICAgICAgICAgICAgICAgfCA1OCArKysrKysrKystLS0tLS0tLS0KIGRyaXZlcnMvbWQv YmNhY2hlL3N1cGVyLmMgICAgICAgICAgICAgICAgICAgfCAxNiArKy0tLQogZHJpdmVycy9tZC9i Y2FjaGUvdXRpbC5jICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL21kL2JjYWNo ZS93cml0ZWJhY2suYyAgICAgICAgICAgICAgIHwgIDYgKy0KIGRyaXZlcnMvbWQvYmNhY2hlL3dy aXRlYmFjay5oICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9kbS1iaW8tcmVjb3Jk LmggICAgICAgICAgICAgICAgICB8IDEyICsrLS0KIGRyaXZlcnMvbWQvZG0tYnVmaW8uYyAgICAg ICAgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9kbS1jYWNoZS1wb2xpY3ktbXEu YyAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdldC5jICAgICAg ICAgICAgICAgIHwgMjIgKysrLS0tLQogZHJpdmVycy9tZC9kbS1jcnlwdC5jICAgICAgICAgICAg ICAgICAgICAgICB8IDE5ICsrKy0tLQogZHJpdmVycy9tZC9kbS1kZWxheS5jICAgICAgICAgICAg ICAgICAgICAgICB8ICA3ICsrLQogZHJpdmVycy9tZC9kbS1mbGFrZXkuYyAgICAgICAgICAgICAg ICAgICAgICB8ICA3ICsrLQogZHJpdmVycy9tZC9kbS1pby5jICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICA2ICstCiBkcml2ZXJzL21kL2RtLWxpbmVhci5jICAgICAgICAgICAgICAgICAgICAg IHwgIDMgKy0KIGRyaXZlcnMvbWQvZG0tcmFpZDEuYyAgICAgICAgICAgICAgICAgICAgICAgfCAx NiArKy0tLQogZHJpdmVycy9tZC9kbS1yZWdpb24taGFzaC5jICAgICAgICAgICAgICAgICB8ICAz ICstCiBkcml2ZXJzL21kL2RtLXNuYXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgMTggKysr LS0tCiBkcml2ZXJzL21kL2RtLXN0cmlwZS5jICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysr LS0KIGRyaXZlcnMvbWQvZG0tc3dpdGNoLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQog ZHJpdmVycy9tZC9kbS10aGluLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDIyICsrKy0tLS0K IGRyaXZlcnMvbWQvZG0tdmVyaXR5LmMgICAgICAgICAgICAgICAgICAgICAgfCAgOCArLS0KIGRy aXZlcnMvbWQvZG0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNSArKysrLS0tLQog ZHJpdmVycy9tZC9mYXVsdHkuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDE5ICsrKy0tLQog ZHJpdmVycy9tZC9saW5lYXIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrLS0KIGRy aXZlcnMvbWQvbWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKy0tCiBkcml2 ZXJzL21kL211bHRpcGF0aC5jICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrLS0KIGRyaXZl cnMvbWQvcmFpZDAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKy0tLQogZHJpdmVy cy9tZC9yYWlkMS5jICAgICAgICAgICAgICAgICAgICAgICAgICB8IDc1ICsrKysrKysrKysrKy0t LS0tLS0tLS0tLQogZHJpdmVycy9tZC9yYWlkMTAuYyAgICAgICAgICAgICAgICAgICAgICAgICB8 IDkxICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBkcml2ZXJzL21kL3JhaWQ1LmMgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgNzIgKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGRyaXZl cnMvczM5MC9ibG9jay9kY3NzYmxrLmMgICAgICAgICAgICAgICAgfCAgNSArLQogZHJpdmVycy9z MzkwL2Jsb2NrL3hwcmFtLmMgICAgICAgICAgICAgICAgICB8ICA5ICstLQogZHJpdmVycy9zY3Np L29zZC9vc2RfaW5pdGlhdG9yLmMgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL3N0YWdpbmcv bHVzdHJlL2x1c3RyZS9sbGl0ZS9sbG9vcC5jIHwgMTIgKystLQogZHJpdmVycy9zdGFnaW5nL3py YW0venJhbV9kcnYuYyAgICAgICAgICAgICB8IDE0ICsrKy0tCiBkcml2ZXJzL3RhcmdldC90YXJn ZXRfY29yZV9pYmxvY2suYyAgICAgICAgIHwgIDIgKy0KIGZzL2Jpby1pbnRlZ3JpdHkuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgOCArLS0KIGZzL2Jpby5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCA1NiArKysrKysrKystLS0tLS0tLS0KIGZzL2J0cmZzL2NoZWNr LWludGVncml0eS5jICAgICAgICAgICAgICAgICAgfCAgOCArLS0KIGZzL2J0cmZzL2NvbXByZXNz aW9uLmMgICAgICAgICAgICAgICAgICAgICAgfCAxNyArKystLS0KIGZzL2J0cmZzL2V4dGVudF9p by5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKy0tLQogZnMvYnRyZnMvZmlsZS1pdGVt LmMgICAgICAgICAgICAgICAgICAgICAgICB8IDE5ICsrKy0tLQogZnMvYnRyZnMvaW5vZGUuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIyICsrKy0tLS0KIGZzL2J0cmZzL3JhaWQ1Ni5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMiArKystLS0tCiBmcy9idHJmcy9zY3J1Yi5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIgKystLQogZnMvYnRyZnMvdm9sdW1lcy5j ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyICsrLS0KIGZzL2J1ZmZlci5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAxMiArKy0tCiBmcy9kaXJlY3QtaW8uYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGZzL2V4dDQvcGFnZS1pby5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNCArLQogZnMvZjJmcy9kYXRhLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAyICstCiBmcy9mMmZzL3NlZ21lbnQuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDIgKy0KIGZzL2dmczIvbG9wcy5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgMiArLQogZnMvZ2ZzMi9vcHNfZnN0eXBlLmMgICAgICAgICAgICAgICAgICAgICAg ICB8ICAyICstCiBmcy9oZnNwbHVzL3dyYXBwZXIuYyAgICAgICAgICAgICAgICAgICAgICAgIHwg IDIgKy0KIGZzL2pmcy9qZnNfbG9nbWdyLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMiAr Ky0tCiBmcy9qZnMvamZzX21ldGFwYWdlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKy0t CiBmcy9sb2dmcy9kZXZfYmRldi5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAgKysrLS0t LQogZnMvbXBhZ2UuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBm cy9uZnMvYmxvY2tsYXlvdXQvYmxvY2tsYXlvdXQuYyAgICAgICAgICAgIHwgIDkgKy0tCiBmcy9u aWxmczIvc2VnYnVmLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KIGZzL29jZnMy L2NsdXN0ZXIvaGVhcnRiZWF0LmMgICAgICAgICAgICAgICAgfCAgMiArLQogZnMveGZzL3hmc19h b3BzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy94ZnMveGZzX2J1Zi5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGluY2x1ZGUvbGludXgvYmlvLmgg ICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKy0tLQogaW5jbHVkZS9saW51eC9ibGtfdHlw ZXMuaCAgICAgICAgICAgICAgICAgICB8IDE5ICsrKy0tLQogaW5jbHVkZS90cmFjZS9ldmVudHMv YmNhY2hlLmggICAgICAgICAgICAgICB8IDI2ICsrKystLS0tLQogaW5jbHVkZS90cmFjZS9ldmVu dHMvYmxvY2suaCAgICAgICAgICAgICAgICB8IDI2ICsrKystLS0tLQogaW5jbHVkZS90cmFjZS9l dmVudHMvZjJmcy5oICAgICAgICAgICAgICAgICB8ICA0ICstCiBrZXJuZWwvcG93ZXIvYmxvY2tf aW8uYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGtlcm5lbC90cmFjZS9ibGt0cmFjZS5j ICAgICAgICAgICAgICAgICAgICAgfCAxNSArKy0tLQogbW0vcGFnZV9pby5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDEwICsrLS0KIDEwNyBmaWxlcyBjaGFuZ2VkLCA3MDAgaW5z ZXJ0aW9ucygrKSwgNjM4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24v YmxvY2svYmlvZG9jLnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dAppbmRleCA4 ZGY1ZThlLi4yMTAxZTcxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb2RvYy50 eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW9kb2MudHh0CkBAIC00NDcsMTQgKzQ0Nywx MyBAQCBzdHJ1Y3QgYmlvX3ZlYyB7CiAgKiBtYWluIHVuaXQgb2YgSS9PIGZvciB0aGUgYmxvY2sg bGF5ZXIgYW5kIGxvd2VyIGxheWVycyAoaWUgZHJpdmVycykKICAqLwogc3RydWN0IGJpbyB7Ci0g ICAgICAgc2VjdG9yX3QgICAgICAgICAgICBiaV9zZWN0b3I7CiAgICAgICAgc3RydWN0IGJpbyAg ICAgICAgICAqYmlfbmV4dDsgICAgLyogcmVxdWVzdCBxdWV1ZSBsaW5rICovCiAgICAgICAgc3Ry dWN0IGJsb2NrX2RldmljZSAqYmlfYmRldjsJLyogdGFyZ2V0IGRldmljZSAqLwogICAgICAgIHVu c2lnbmVkIGxvbmcgICAgICAgYmlfZmxhZ3M7ICAgIC8qIHN0YXR1cywgY29tbWFuZCwgZXRjICov CiAgICAgICAgdW5zaWduZWQgbG9uZyAgICAgICBiaV9ydzsgICAgICAgLyogbG93IGJpdHM6IHIv dywgaGlnaDogcHJpb3JpdHkgKi8KIAogICAgICAgIHVuc2lnbmVkIGludAliaV92Y250OyAgICAg LyogaG93IG1heSBiaW9fdmVjJ3MgKi8KLSAgICAgICB1bnNpZ25lZCBpbnQJYmlfaWR4OwkJLyog Y3VycmVudCBpbmRleCBpbnRvIGJpb192ZWMgYXJyYXkgKi8KKyAgICAgICBzdHJ1Y3QgYnZlY19p dGVyCWJpX2l0ZXI7CS8qIGN1cnJlbnQgaW5kZXggaW50byBiaW9fdmVjIGFycmF5ICovCiAKICAg ICAgICB1bnNpZ25lZCBpbnQJYmlfc2l6ZTsgICAgIC8qIHRvdGFsIHNpemUgaW4gYnl0ZXMgKi8K ICAgICAgICB1bnNpZ25lZCBzaG9ydCAJYmlfcGh5c19zZWdtZW50czsgLyogc2VnbWVudHMgYWZ0 ZXIgcGh5c2FkZHIgY29hbGVzY2UqLwpAQCAtNDgwLDcgKzQ3OSw3IEBAIFdpdGggdGhpcyBtdWx0 aXBhZ2UgYmlvIGRlc2lnbjoKIC0gQ29kZSB0aGF0IHRyYXZlcnNlcyB0aGUgcmVxIGxpc3QgY2Fu IGZpbmQgYWxsIHRoZSBzZWdtZW50cyBvZiBhIGJpbwogICBieSB1c2luZyBycV9mb3JfZWFjaF9z ZWdtZW50LiAgVGhpcyBoYW5kbGVzIHRoZSBmYWN0IHRoYXQgYSByZXF1ZXN0CiAgIGhhcyBtdWx0 aXBsZSBiaW9zLCBlYWNoIG9mIHdoaWNoIGNhbiBoYXZlIG11bHRpcGxlIHNlZ21lbnRzLgotLSBE cml2ZXJzIHdoaWNoIGNhbid0IHByb2Nlc3MgYSBsYXJnZSBiaW8gaW4gb25lIHNob3QgY2FuIHVz ZSB0aGUgYmlfaWR4CistIERyaXZlcnMgd2hpY2ggY2FuJ3QgcHJvY2VzcyBhIGxhcmdlIGJpbyBp biBvbmUgc2hvdCBjYW4gdXNlIHRoZSBiaV9pdGVyCiAgIGZpZWxkIHRvIGtlZXAgdHJhY2sgb2Yg dGhlIG5leHQgYmlvX3ZlYyBlbnRyeSB0byBwcm9jZXNzLgogICAoZS5nIGEgMU1CIGJpb192ZWMg bmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBtYXggMTI4a0IgY2h1bmtzIGZvciBJREUpCiAgIFtUQkQ6 IFNob3VsZCBwcmVmZXJhYmx5IGFsc28gaGF2ZSBhIGJpX3ZvZmZzZXQgYW5kIGJpX3ZsZW4gdG8g YXZvaWQgbW9kaWZ5aW5nCkBAIC01ODksNyArNTg4LDcgQEAgZHJpdmVyIHNob3VsZCBub3QgbW9k aWZ5IHRoZXNlIHZhbHVlcy4gVGhlIGJsb2NrIGxheWVyIHNldHMgdXAgdGhlCiBucl9zZWN0b3Jz IGFuZCBjdXJyZW50X25yX3NlY3RvcnMgZmllbGRzIChiYXNlZCBvbiB0aGUgY29ycmVzcG9uZGlu ZwogaGFyZF94eHggdmFsdWVzIGFuZCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkKSBh bmQgdXBkYXRlcyBpdCBvbgogZXZlcnkgdHJhbnNmZXIgdGhhdCBpbnZva2VzIGVuZF90aGF0X3Jl cXVlc3RfZmlyc3QuIEl0IGRvZXMgdGhlIHNhbWUgZm9yIHRoZQotYnVmZmVyLCBiaW8sIGJpby0+ YmlfaWR4IGZpZWxkcyB0b28uCitidWZmZXIsIGJpbywgYmlvLT5iaV9pdGVyIGZpZWxkcyB0b28u CiAKIFRoZSBidWZmZXIgZmllbGQgaXMganVzdCBhIHZpcnR1YWwgYWRkcmVzcyBtYXBwaW5nIG9m IHRoZSBjdXJyZW50IHNlZ21lbnQKIG9mIHRoZSBpL28gYnVmZmVyIGluIGNhc2VzIHdoZXJlIHRo ZSBidWZmZXIgcmVzaWRlcyBpbiBsb3ctbWVtb3J5LiBGb3IgaGlnaApkaWZmIC0tZ2l0IGEvYXJj aC9tNjhrL2VtdS9uZmJsb2NrLmMgYi9hcmNoL202OGsvZW11L25mYmxvY2suYwppbmRleCAwNzIx ODU4Li4wYTlkMGIzIDEwMDY0NAotLS0gYS9hcmNoL202OGsvZW11L25mYmxvY2suYworKysgYi9h cmNoL202OGsvZW11L25mYmxvY2suYwpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgdm9pZCBuZmhk X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcXVldWUsIHN0cnVjdCBiaW8gKmJp bykKIAlzdHJ1Y3QgbmZoZF9kZXZpY2UgKmRldiA9IHF1ZXVlLT5xdWV1ZWRhdGE7CiAJc3RydWN0 IGJpb192ZWMgKmJ2ZWM7CiAJaW50IGksIGRpciwgbGVuLCBzaGlmdDsKLQlzZWN0b3JfdCBzZWMg PSBiaW8tPmJpX3NlY3RvcjsKKwlzZWN0b3JfdCBzZWMgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y OwogCiAJZGlyID0gYmlvX2RhdGFfZGlyKGJpbyk7CiAJc2hpZnQgPSBkZXYtPmJzaGlmdDsKZGlm ZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvYXhvbnJhbS5jIGIvYXJjaC9wb3dlcnBjL3N5 c2Rldi9heG9ucmFtLmMKaW5kZXggMWMxNjE0MS4uZjMzYmNiYSAxMDA2NDQKLS0tIGEvYXJjaC9w b3dlcnBjL3N5c2Rldi9heG9ucmFtLmMKKysrIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9heG9ucmFt LmMKQEAgLTExMyw3ICsxMTMsOCBAQCBheG9uX3JhbV9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVl c3RfcXVldWUgKnF1ZXVlLCBzdHJ1Y3QgYmlvICpiaW8pCiAJdW5zaWduZWQgaW50IHRyYW5zZmVy ZWQ7CiAJdW5zaWduZWQgc2hvcnQgaWR4OwogCi0JcGh5c19tZW0gPSBiYW5rLT5pb19hZGRyICsg KGJpby0+Ymlfc2VjdG9yIDw8IEFYT05fUkFNX1NFQ1RPUl9TSElGVCk7CisJcGh5c19tZW0gPSBi YW5rLT5pb19hZGRyICsgKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPDwKKwkJCQkgICAgQVhPTl9S QU1fU0VDVE9SX1NISUZUKTsKIAlwaHlzX2VuZCA9IGJhbmstPmlvX2FkZHIgKyBiYW5rLT5zaXpl OwogCXRyYW5zZmVyZWQgPSAwOwogCWJpb19mb3JfZWFjaF9zZWdtZW50KHZlYywgYmlvLCBpZHgp IHsKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1jb3JlLmMgYi9ibG9jay9ibGstY29yZS5jCmluZGV4 IDhiZGQwMTIuLjVjMmFiMmMgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1jb3JlLmMKKysrIGIvYmxv Y2svYmxrLWNvcmUuYwpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyB2b2lkIHJlcV9iaW9fZW5k aW8oc3RydWN0IHJlcXVlc3QgKnJxLCBzdHJ1Y3QgYmlvICpiaW8sCiAJYmlvX2FkdmFuY2UoYmlv LCBuYnl0ZXMpOwogCiAJLyogZG9uJ3QgYWN0dWFsbHkgZmluaXNoIGJpbyBpZiBpdCdzIHBhcnQg b2YgZmx1c2ggc2VxdWVuY2UgKi8KLQlpZiAoYmlvLT5iaV9zaXplID09IDAgJiYgIShycS0+Y21k X2ZsYWdzICYgUkVRX0ZMVVNIX1NFUSkpCisJaWYgKGJpby0+YmlfaXRlci5iaV9zaXplID09IDAg JiYgIShycS0+Y21kX2ZsYWdzICYgUkVRX0ZMVVNIX1NFUSkpCiAJCWJpb19lbmRpbyhiaW8sIGVy cm9yKTsKIH0KIApAQCAtMTMyNiw3ICsxMzI2LDcgQEAgdm9pZCBibGtfYWRkX3JlcXVlc3RfcGF5 bG9hZChzdHJ1Y3QgcmVxdWVzdCAqcnEsIHN0cnVjdCBwYWdlICpwYWdlLAogCWJpby0+YmlfaW9f dmVjLT5idl9vZmZzZXQgPSAwOwogCWJpby0+YmlfaW9fdmVjLT5idl9sZW4gPSBsZW47CiAKLQli aW8tPmJpX3NpemUgPSBsZW47CisJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBsZW47CiAJYmlvLT5i aV92Y250ID0gMTsKIAliaW8tPmJpX3BoeXNfc2VnbWVudHMgPSAxOwogCkBAIC0xMzUxLDcgKzEz NTEsNyBAQCBib29sIGJpb19hdHRlbXB0X2JhY2tfbWVyZ2Uoc3RydWN0IHJlcXVlc3RfcXVldWUg KnEsIHN0cnVjdCByZXF1ZXN0ICpyZXEsCiAKIAlyZXEtPmJpb3RhaWwtPmJpX25leHQgPSBiaW87 CiAJcmVxLT5iaW90YWlsID0gYmlvOwotCXJlcS0+X19kYXRhX2xlbiArPSBiaW8tPmJpX3NpemU7 CisJcmVxLT5fX2RhdGFfbGVuICs9IGJpby0+YmlfaXRlci5iaV9zaXplOwogCXJlcS0+aW9wcmlv ID0gaW9wcmlvX2Jlc3QocmVxLT5pb3ByaW8sIGJpb19wcmlvKGJpbykpOwogCiAJYmxrX2FjY291 bnRfaW9fc3RhcnQocmVxLCBmYWxzZSk7CkBAIC0xMzgwLDggKzEzODAsOCBAQCBib29sIGJpb19h dHRlbXB0X2Zyb250X21lcmdlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgcmVxdWVz dCAqcmVxLAogCSAqIG5vdCB0b3VjaCByZXEtPmJ1ZmZlciBlaXRoZXIuLi4KIAkgKi8KIAlyZXEt PmJ1ZmZlciA9IGJpb19kYXRhKGJpbyk7Ci0JcmVxLT5fX3NlY3RvciA9IGJpby0+Ymlfc2VjdG9y OwotCXJlcS0+X19kYXRhX2xlbiArPSBiaW8tPmJpX3NpemU7CisJcmVxLT5fX3NlY3RvciA9IGJp by0+YmlfaXRlci5iaV9zZWN0b3I7CisJcmVxLT5fX2RhdGFfbGVuICs9IGJpby0+YmlfaXRlci5i aV9zaXplOwogCXJlcS0+aW9wcmlvID0gaW9wcmlvX2Jlc3QocmVxLT5pb3ByaW8sIGJpb19wcmlv KGJpbykpOwogCiAJYmxrX2FjY291bnRfaW9fc3RhcnQocmVxLCBmYWxzZSk7CkBAIC0xNDU5LDcg KzE0NTksNyBAQCB2b2lkIGluaXRfcmVxdWVzdF9mcm9tX2JpbyhzdHJ1Y3QgcmVxdWVzdCAqcmVx LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXJlcS0+Y21kX2ZsYWdzIHw9IFJFUV9GQUlMRkFTVF9NQVNL OwogCiAJcmVxLT5lcnJvcnMgPSAwOwotCXJlcS0+X19zZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsK KwlyZXEtPl9fc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAlyZXEtPmlvcHJpbyA9 IGJpb19wcmlvKGJpbyk7CiAJYmxrX3JxX2Jpb19wcmVwKHJlcS0+cSwgcmVxLCBiaW8pOwogfQpA QCAtMTU4MywxMiArMTU4MywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmxrX3BhcnRpdGlvbl9y ZW1hcChzdHJ1Y3QgYmlvICpiaW8pCiAJaWYgKGJpb19zZWN0b3JzKGJpbykgJiYgYmRldiAhPSBi ZGV2LT5iZF9jb250YWlucykgewogCQlzdHJ1Y3QgaGRfc3RydWN0ICpwID0gYmRldi0+YmRfcGFy dDsKIAotCQliaW8tPmJpX3NlY3RvciArPSBwLT5zdGFydF9zZWN0OworCQliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yICs9IHAtPnN0YXJ0X3NlY3Q7CiAJCWJpby0+YmlfYmRldiA9IGJkZXYtPmJkX2Nv bnRhaW5zOwogCiAJCXRyYWNlX2Jsb2NrX2Jpb19yZW1hcChiZGV2X2dldF9xdWV1ZShiaW8tPmJp X2JkZXYpLCBiaW8sCiAJCQkJICAgICAgYmRldi0+YmRfZGV2LAotCQkJCSAgICAgIGJpby0+Ymlf c2VjdG9yIC0gcC0+c3RhcnRfc2VjdCk7CisJCQkJICAgICAgYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciAtIHAtPnN0YXJ0X3NlY3QpOwogCX0KIH0KIApAQCAtMTY1NCw3ICsxNjU0LDcgQEAgc3RhdGlj IGlubGluZSBpbnQgYmlvX2NoZWNrX2VvZChzdHJ1Y3QgYmlvICpiaW8sIHVuc2lnbmVkIGludCBu cl9zZWN0b3JzKQogCS8qIFRlc3QgZGV2aWNlIG9yIHBhcnRpdGlvbiBzaXplLCB3aGVuIGtub3du LiAqLwogCW1heHNlY3RvciA9IGlfc2l6ZV9yZWFkKGJpby0+YmlfYmRldi0+YmRfaW5vZGUpID4+ IDk7CiAJaWYgKG1heHNlY3RvcikgewotCQlzZWN0b3JfdCBzZWN0b3IgPSBiaW8tPmJpX3NlY3Rv cjsKKwkJc2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAogCQlpZiAo bWF4c2VjdG9yIDwgbnJfc2VjdG9ycyB8fCBtYXhzZWN0b3IgLSBucl9zZWN0b3JzIDwgc2VjdG9y KSB7CiAJCQkvKgpAQCAtMTY5MCw3ICsxNjkwLDcgQEAgZ2VuZXJpY19tYWtlX3JlcXVlc3RfY2hl Y2tzKHN0cnVjdCBiaW8gKmJpbykKIAkJICAgICAgICJnZW5lcmljX21ha2VfcmVxdWVzdDogVHJ5 aW5nIHRvIGFjY2VzcyAiCiAJCQkibm9uZXhpc3RlbnQgYmxvY2stZGV2aWNlICVzICglTHUpXG4i LAogCQkJYmRldm5hbWUoYmlvLT5iaV9iZGV2LCBiKSwKLQkJCShsb25nIGxvbmcpIGJpby0+Ymlf c2VjdG9yKTsKKwkJCShsb25nIGxvbmcpIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCQlnb3Rv IGVuZF9pbzsKIAl9CiAKQEAgLTE3MDQsOSArMTcwNCw5IEBAIGdlbmVyaWNfbWFrZV9yZXF1ZXN0 X2NoZWNrcyhzdHJ1Y3QgYmlvICpiaW8pCiAJfQogCiAJcGFydCA9IGJpby0+YmlfYmRldi0+YmRf cGFydDsKLQlpZiAoc2hvdWxkX2ZhaWxfcmVxdWVzdChwYXJ0LCBiaW8tPmJpX3NpemUpIHx8CisJ aWYgKHNob3VsZF9mYWlsX3JlcXVlc3QocGFydCwgYmlvLT5iaV9pdGVyLmJpX3NpemUpIHx8CiAJ ICAgIHNob3VsZF9mYWlsX3JlcXVlc3QoJnBhcnRfdG9fZGlzayhwYXJ0KS0+cGFydDAsCi0JCQkJ YmlvLT5iaV9zaXplKSkKKwkJCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZSkpCiAJCWdvdG8gZW5kX2lv OwogCiAJLyoKQEAgLTE4NjUsNyArMTg2NSw3IEBAIHZvaWQgc3VibWl0X2JpbyhpbnQgcncsIHN0 cnVjdCBiaW8gKmJpbykKIAkJaWYgKHJ3ICYgV1JJVEUpIHsKIAkJCWNvdW50X3ZtX2V2ZW50cyhQ R1BHT1VULCBjb3VudCk7CiAJCX0gZWxzZSB7Ci0JCQl0YXNrX2lvX2FjY291bnRfcmVhZChiaW8t PmJpX3NpemUpOworCQkJdGFza19pb19hY2NvdW50X3JlYWQoYmlvLT5iaV9pdGVyLmJpX3NpemUp OwogCQkJY291bnRfdm1fZXZlbnRzKFBHUEdJTiwgY291bnQpOwogCQl9CiAKQEAgLTE4NzQsNyAr MTg3NCw3IEBAIHZvaWQgc3VibWl0X2JpbyhpbnQgcncsIHN0cnVjdCBiaW8gKmJpbykKIAkJCXBy aW50ayhLRVJOX0RFQlVHICIlcyglZCk6ICVzIGJsb2NrICVMdSBvbiAlcyAoJXUgc2VjdG9ycylc biIsCiAJCQljdXJyZW50LT5jb21tLCB0YXNrX3BpZF9ucihjdXJyZW50KSwKIAkJCQkocncgJiBX UklURSkgPyAiV1JJVEUiIDogIlJFQUQiLAotCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5i aV9zZWN0b3IsCisJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9y LAogCQkJCWJkZXZuYW1lKGJpby0+YmlfYmRldiwgYiksCiAJCQkJY291bnQpOwogCQl9CkBAIC0y MDA3LDcgKzIwMDcsNyBAQCB1bnNpZ25lZCBpbnQgYmxrX3JxX2Vycl9ieXRlcyhjb25zdCBzdHJ1 Y3QgcmVxdWVzdCAqcnEpCiAJZm9yIChiaW8gPSBycS0+YmlvOyBiaW87IGJpbyA9IGJpby0+Ymlf bmV4dCkgewogCQlpZiAoKGJpby0+YmlfcncgJiBmZikgIT0gZmYpCiAJCQlicmVhazsKLQkJYnl0 ZXMgKz0gYmlvLT5iaV9zaXplOworCQlieXRlcyArPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAl9 CiAKIAkvKiB0aGlzIGNvdWxkIGxlYWQgdG8gaW5maW5pdGUgbG9vcCAqLwpAQCAtMjM3OCw5ICsy Mzc4LDkgQEAgYm9vbCBibGtfdXBkYXRlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3QgKnJlcSwgaW50 IGVycm9yLCB1bnNpZ25lZCBpbnQgbnJfYnl0ZXMpCiAJdG90YWxfYnl0ZXMgPSAwOwogCXdoaWxl IChyZXEtPmJpbykgewogCQlzdHJ1Y3QgYmlvICpiaW8gPSByZXEtPmJpbzsKLQkJdW5zaWduZWQg YmlvX2J5dGVzID0gbWluKGJpby0+Ymlfc2l6ZSwgbnJfYnl0ZXMpOworCQl1bnNpZ25lZCBiaW9f Ynl0ZXMgPSBtaW4oYmlvLT5iaV9pdGVyLmJpX3NpemUsIG5yX2J5dGVzKTsKIAotCQlpZiAoYmlv X2J5dGVzID09IGJpby0+Ymlfc2l6ZSkKKwkJaWYgKGJpb19ieXRlcyA9PSBiaW8tPmJpX2l0ZXIu Ymlfc2l6ZSkKIAkJCXJlcS0+YmlvID0gYmlvLT5iaV9uZXh0OwogCiAJCXJlcV9iaW9fZW5kaW8o cmVxLCBiaW8sIGJpb19ieXRlcywgZXJyb3IpOwpAQCAtMjcyOCw3ICsyNzI4LDcgQEAgdm9pZCBi bGtfcnFfYmlvX3ByZXAoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCByZXF1ZXN0ICpy cSwKIAkJcnEtPm5yX3BoeXNfc2VnbWVudHMgPSBiaW9fcGh5c19zZWdtZW50cyhxLCBiaW8pOwog CQlycS0+YnVmZmVyID0gYmlvX2RhdGEoYmlvKTsKIAl9Ci0JcnEtPl9fZGF0YV9sZW4gPSBiaW8t PmJpX3NpemU7CisJcnEtPl9fZGF0YV9sZW4gPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAlycS0+ YmlvID0gcnEtPmJpb3RhaWwgPSBiaW87CiAKIAlpZiAoYmlvLT5iaV9iZGV2KQpkaWZmIC0tZ2l0 IGEvYmxvY2svYmxrLWZsdXNoLmMgYi9ibG9jay9ibGstZmx1c2guYwppbmRleCBmYjZmM2MwLi45 Mjg4YWFmIDEwMDY0NAotLS0gYS9ibG9jay9ibGstZmx1c2guYworKysgYi9ibG9jay9ibGstZmx1 c2guYwpAQCAtNTQ4LDcgKzU0OCw3IEBAIGludCBibGtkZXZfaXNzdWVfZmx1c2goc3RydWN0IGJs b2NrX2RldmljZSAqYmRldiwgZ2ZwX3QgZ2ZwX21hc2ssCiAJICogY29waWVkIGZyb20gYmxrX3Jx X3BvcyhycSkuCiAJICovCiAJaWYgKGVycm9yX3NlY3RvcikKLQkJKmVycm9yX3NlY3RvciA9IGJp by0+Ymlfc2VjdG9yOworCQkqZXJyb3Jfc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsK IAogCWJpb19wdXQoYmlvKTsKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWxp Yi5jIGIvYmxvY2svYmxrLWxpYi5jCmluZGV4IDliNWI1NjEuLjJkYTc2YzkgMTAwNjQ0Ci0tLSBh L2Jsb2NrL2Jsay1saWIuYworKysgYi9ibG9jay9ibGstbGliLmMKQEAgLTEwOCwxMiArMTA4LDEy IEBAIGludCBibGtkZXZfaXNzdWVfZGlzY2FyZChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBz ZWN0b3JfdCBzZWN0b3IsCiAJCQlyZXFfc2VjdHMgPSBlbmRfc2VjdCAtIHNlY3RvcjsKIAkJfQog Ci0JCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0g c2VjdG9yOwogCQliaW8tPmJpX2VuZF9pbyA9IGJpb19iYXRjaF9lbmRfaW87CiAJCWJpby0+Ymlf YmRldiA9IGJkZXY7CiAJCWJpby0+YmlfcHJpdmF0ZSA9ICZiYjsKIAotCQliaW8tPmJpX3NpemUg PSByZXFfc2VjdHMgPDwgOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSByZXFfc2VjdHMgPDwg OTsKIAkJbnJfc2VjdHMgLT0gcmVxX3NlY3RzOwogCQlzZWN0b3IgPSBlbmRfc2VjdDsKIApAQCAt MTc0LDcgKzE3NCw3IEBAIGludCBibGtkZXZfaXNzdWVfd3JpdGVfc2FtZShzdHJ1Y3QgYmxvY2tf ZGV2aWNlICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsCiAJCQlicmVhazsKIAkJfQogCi0JCWJpby0+ Ymlfc2VjdG9yID0gc2VjdG9yOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yOwog CQliaW8tPmJpX2VuZF9pbyA9IGJpb19iYXRjaF9lbmRfaW87CiAJCWJpby0+YmlfYmRldiA9IGJk ZXY7CiAJCWJpby0+YmlfcHJpdmF0ZSA9ICZiYjsKQEAgLTE4NCwxMSArMTg0LDExIEBAIGludCBi bGtkZXZfaXNzdWVfd3JpdGVfc2FtZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3Jf dCBzZWN0b3IsCiAJCWJpby0+YmlfaW9fdmVjLT5idl9sZW4gPSBiZGV2X2xvZ2ljYWxfYmxvY2tf c2l6ZShiZGV2KTsKIAogCQlpZiAobnJfc2VjdHMgPiBtYXhfd3JpdGVfc2FtZV9zZWN0b3JzKSB7 Ci0JCQliaW8tPmJpX3NpemUgPSBtYXhfd3JpdGVfc2FtZV9zZWN0b3JzIDw8IDk7CisJCQliaW8t PmJpX2l0ZXIuYmlfc2l6ZSA9IG1heF93cml0ZV9zYW1lX3NlY3RvcnMgPDwgOTsKIAkJCW5yX3Nl Y3RzIC09IG1heF93cml0ZV9zYW1lX3NlY3RvcnM7CiAJCQlzZWN0b3IgKz0gbWF4X3dyaXRlX3Nh bWVfc2VjdG9yczsKIAkJfSBlbHNlIHsKLQkJCWJpby0+Ymlfc2l6ZSA9IG5yX3NlY3RzIDw8IDk7 CisJCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IG5yX3NlY3RzIDw8IDk7CiAJCQlucl9zZWN0cyA9 IDA7CiAJCX0KIApAQCAtMjQwLDcgKzI0MCw3IEBAIGludCBfX2Jsa2Rldl9pc3N1ZV96ZXJvb3V0 KHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwKIAkJCWJyZWFrOwog CQl9CiAKLQkJYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3I7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBzZWN0b3I7CiAJCWJpby0+YmlfYmRldiAgID0gYmRldjsKIAkJYmlvLT5iaV9lbmRfaW8g PSBiaW9fYmF0Y2hfZW5kX2lvOwogCQliaW8tPmJpX3ByaXZhdGUgPSAmYmI7CmRpZmYgLS1naXQg YS9ibG9jay9ibGstbWFwLmMgYi9ibG9jay9ibGstbWFwLmMKaW5kZXggNjIzZTFjZC4uYWU0YWUx MCAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLW1hcC5jCisrKyBiL2Jsb2NrL2Jsay1tYXAuYwpAQCAt MjAsNyArMjAsNyBAQCBpbnQgYmxrX3JxX2FwcGVuZF9iaW8oc3RydWN0IHJlcXVlc3RfcXVldWUg KnEsIHN0cnVjdCByZXF1ZXN0ICpycSwKIAkJcnEtPmJpb3RhaWwtPmJpX25leHQgPSBiaW87CiAJ CXJxLT5iaW90YWlsID0gYmlvOwogCi0JCXJxLT5fX2RhdGFfbGVuICs9IGJpby0+Ymlfc2l6ZTsK KwkJcnEtPl9fZGF0YV9sZW4gKz0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAJfQogCXJldHVybiAw OwogfQpAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgaW50IF9fYmxrX3JxX21hcF91c2VyKHN0cnVj dCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsCiAKIAlyZXQgPSBibGtfcnFf YXBwZW5kX2JpbyhxLCBycSwgYmlvKTsKIAlpZiAoIXJldCkKLQkJcmV0dXJuIGJpby0+Ymlfc2l6 ZTsKKwkJcmV0dXJuIGJpby0+YmlfaXRlci5iaV9zaXplOwogCiAJLyogaWYgaXQgd2FzIGJvdWNu ZWQgd2UgbXVzdCBjYWxsIHRoZSBlbmQgaW8gZnVuY3Rpb24gKi8KIAliaW9fZW5kaW8oYmlvLCAw KTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBpbnQgYmxrX3JxX21hcF91c2VyX2lvdihzdHJ1Y3QgcmVx dWVzdF9xdWV1ZSAqcSwgc3RydWN0IHJlcXVlc3QgKnJxLAogCWlmIChJU19FUlIoYmlvKSkKIAkJ cmV0dXJuIFBUUl9FUlIoYmlvKTsKIAotCWlmIChiaW8tPmJpX3NpemUgIT0gbGVuKSB7CisJaWYg KGJpby0+YmlfaXRlci5iaV9zaXplICE9IGxlbikgewogCQkvKgogCQkgKiBHcmFiIGFuIGV4dHJh IHJlZmVyZW5jZSB0byB0aGlzIGJpbywgYXMgYmlvX3VubWFwX3VzZXIoKQogCQkgKiBleHBlY3Rz IHRvIGJlIGFibGUgdG8gZHJvcCBpdCB0d2ljZSBhcyBpdCBoYXBwZW5zIG9uIHRoZQpkaWZmIC0t Z2l0IGEvYmxvY2svYmxrLW1lcmdlLmMgYi9ibG9jay9ibGstbWVyZ2UuYwppbmRleCAxZmZjNTg5 Li4wM2JjMDgzIDEwMDY0NAotLS0gYS9ibG9jay9ibGstbWVyZ2UuYworKysgYi9ibG9jay9ibGst bWVyZ2UuYwpAQCAtNTQzLDkgKzU0Myw5IEBAIGJvb2wgYmxrX3JxX21lcmdlX29rKHN0cnVjdCBy ZXF1ZXN0ICpycSwgc3RydWN0IGJpbyAqYmlvKQogCiBpbnQgYmxrX3RyeV9tZXJnZShzdHJ1Y3Qg cmVxdWVzdCAqcnEsIHN0cnVjdCBiaW8gKmJpbykKIHsKLQlpZiAoYmxrX3JxX3BvcyhycSkgKyBi bGtfcnFfc2VjdG9ycyhycSkgPT0gYmlvLT5iaV9zZWN0b3IpCisJaWYgKGJsa19ycV9wb3MocnEp ICsgYmxrX3JxX3NlY3RvcnMocnEpID09IGJpby0+YmlfaXRlci5iaV9zZWN0b3IpCiAJCXJldHVy biBFTEVWQVRPUl9CQUNLX01FUkdFOwotCWVsc2UgaWYgKGJsa19ycV9wb3MocnEpIC0gYmlvX3Nl Y3RvcnMoYmlvKSA9PSBiaW8tPmJpX3NlY3RvcikKKwllbHNlIGlmIChibGtfcnFfcG9zKHJxKSAt IGJpb19zZWN0b3JzKGJpbykgPT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcikKIAkJcmV0dXJuIEVM RVZBVE9SX0ZST05UX01FUkdFOwogCXJldHVybiBFTEVWQVRPUl9OT19NRVJHRTsKIH0KZGlmZiAt LWdpdCBhL2Jsb2NrL2Jsay1tcS5jIGIvYmxvY2svYmxrLW1xLmMKaW5kZXggY2RjNjI5Yy4uZTRm YmNjMyAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLW1xLmMKKysrIGIvYmxvY2svYmxrLW1xLmMKQEAg LTMwMSw3ICszMDEsNyBAQCB2b2lkIGJsa19tcV9jb21wbGV0ZV9yZXF1ZXN0KHN0cnVjdCByZXF1 ZXN0ICpycSwgaW50IGVycm9yKQogCQlzdHJ1Y3QgYmlvICpuZXh0ID0gYmlvLT5iaV9uZXh0Owog CiAJCWJpby0+YmlfbmV4dCA9IE5VTEw7Ci0JCWJ5dGVzICs9IGJpby0+Ymlfc2l6ZTsKKwkJYnl0 ZXMgKz0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAJCWJsa19tcV9iaW9fZW5kaW8ocnEsIGJpbywg ZXJyb3IpOwogCQliaW8gPSBuZXh0OwogCX0KZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay10aHJvdHRs ZS5jIGIvYmxvY2svYmxrLXRocm90dGxlLmMKaW5kZXggMDY1MzQwNC4uMjBmODIwMCAxMDA2NDQK LS0tIGEvYmxvY2svYmxrLXRocm90dGxlLmMKKysrIGIvYmxvY2svYmxrLXRocm90dGxlLmMKQEAg LTg3NywxNCArODc3LDE0IEBAIHN0YXRpYyBib29sIHRnX3dpdGhfaW5fYnBzX2xpbWl0KHN0cnVj dCB0aHJvdGxfZ3JwICp0Zywgc3RydWN0IGJpbyAqYmlvLAogCWRvX2Rpdih0bXAsIEhaKTsKIAli eXRlc19hbGxvd2VkID0gdG1wOwogCi0JaWYgKHRnLT5ieXRlc19kaXNwW3J3XSArIGJpby0+Ymlf c2l6ZSA8PSBieXRlc19hbGxvd2VkKSB7CisJaWYgKHRnLT5ieXRlc19kaXNwW3J3XSArIGJpby0+ YmlfaXRlci5iaV9zaXplIDw9IGJ5dGVzX2FsbG93ZWQpIHsKIAkJaWYgKHdhaXQpCiAJCQkqd2Fp dCA9IDA7CiAJCXJldHVybiAxOwogCX0KIAogCS8qIENhbGMgYXBwcm94IHRpbWUgdG8gZGlzcGF0 Y2ggKi8KLQlleHRyYV9ieXRlcyA9IHRnLT5ieXRlc19kaXNwW3J3XSArIGJpby0+Ymlfc2l6ZSAt IGJ5dGVzX2FsbG93ZWQ7CisJZXh0cmFfYnl0ZXMgPSB0Zy0+Ynl0ZXNfZGlzcFtyd10gKyBiaW8t PmJpX2l0ZXIuYmlfc2l6ZSAtIGJ5dGVzX2FsbG93ZWQ7CiAJamlmZnlfd2FpdCA9IGRpdjY0X3U2 NChleHRyYV9ieXRlcyAqIEhaLCB0Zy0+YnBzW3J3XSk7CiAKIAlpZiAoIWppZmZ5X3dhaXQpCkBA IC05ODcsNyArOTg3LDcgQEAgc3RhdGljIHZvaWQgdGhyb3RsX2NoYXJnZV9iaW8oc3RydWN0IHRo cm90bF9ncnAgKnRnLCBzdHJ1Y3QgYmlvICpiaW8pCiAJYm9vbCBydyA9IGJpb19kYXRhX2Rpcihi aW8pOwogCiAJLyogQ2hhcmdlIHRoZSBiaW8gdG8gdGhlIGdyb3VwICovCi0JdGctPmJ5dGVzX2Rp c3BbcnddICs9IGJpby0+Ymlfc2l6ZTsKKwl0Zy0+Ynl0ZXNfZGlzcFtyd10gKz0gYmlvLT5iaV9p dGVyLmJpX3NpemU7CiAJdGctPmlvX2Rpc3BbcnddKys7CiAKIAkvKgpAQCAtMTAwMyw4ICsxMDAz LDggQEAgc3RhdGljIHZvaWQgdGhyb3RsX2NoYXJnZV9iaW8oc3RydWN0IHRocm90bF9ncnAgKnRn LCBzdHJ1Y3QgYmlvICpiaW8pCiAJICovCiAJaWYgKCEoYmlvLT5iaV9ydyAmIFJFUV9USFJPVFRM RUQpKSB7CiAJCWJpby0+YmlfcncgfD0gUkVRX1RIUk9UVExFRDsKLQkJdGhyb3RsX3VwZGF0ZV9k aXNwYXRjaF9zdGF0cyh0Z190b19ibGtnKHRnKSwgYmlvLT5iaV9zaXplLAotCQkJCQkgICAgIGJp by0+YmlfcncpOworCQl0aHJvdGxfdXBkYXRlX2Rpc3BhdGNoX3N0YXRzKHRnX3RvX2Jsa2codGcp LAorCQkJCQkgICAgIGJpby0+YmlfaXRlci5iaV9zaXplLCBiaW8tPmJpX3J3KTsKIAl9CiB9CiAK QEAgLTE1MDgsNyArMTUwOCw3IEBAIGJvb2wgYmxrX3Rocm90bF9iaW8oc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAodGcpIHsKIAkJaWYgKCF0Zy0+aGFzX3J1 bGVzW3J3XSkgewogCQkJdGhyb3RsX3VwZGF0ZV9kaXNwYXRjaF9zdGF0cyh0Z190b19ibGtnKHRn KSwKLQkJCQkJCSAgICAgYmlvLT5iaV9zaXplLCBiaW8tPmJpX3J3KTsKKwkJCQkJYmlvLT5iaV9p dGVyLmJpX3NpemUsIGJpby0+YmlfcncpOwogCQkJZ290byBvdXRfdW5sb2NrX3JjdTsKIAkJfQog CX0KQEAgLTE1NjQsNyArMTU2NCw3IEBAIGJvb2wgYmxrX3Rocm90bF9iaW8oc3RydWN0IHJlcXVl c3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkvKiBvdXQtb2YtbGltaXQsIHF1ZXVlIHRv IEB0ZyAqLwogCXRocm90bF9sb2coc3EsICJbJWNdIGJpby4gYmRpc3A9JWxsdSBzej0ldSBicHM9 JWxsdSBpb2Rpc3A9JXUgaW9wcz0ldSBxdWV1ZWQ9JWQvJWQiLAogCQkgICBydyA9PSBSRUFEID8g J1InIDogJ1cnLAotCQkgICB0Zy0+Ynl0ZXNfZGlzcFtyd10sIGJpby0+Ymlfc2l6ZSwgdGctPmJw c1tyd10sCisJCSAgIHRnLT5ieXRlc19kaXNwW3J3XSwgYmlvLT5iaV9pdGVyLmJpX3NpemUsIHRn LT5icHNbcnddLAogCQkgICB0Zy0+aW9fZGlzcFtyd10sIHRnLT5pb3BzW3J3XSwKIAkJICAgc3Et Pm5yX3F1ZXVlZFtSRUFEXSwgc3EtPm5yX3F1ZXVlZFtXUklURV0pOwogCmRpZmYgLS1naXQgYS9i bG9jay9lbGV2YXRvci5jIGIvYmxvY2svZWxldmF0b3IuYwppbmRleCBiN2ZmMjg2Li40MmM0NWE3 IDEwMDY0NAotLS0gYS9ibG9jay9lbGV2YXRvci5jCisrKyBiL2Jsb2NrL2VsZXZhdG9yLmMKQEAg LTQ0MCw3ICs0NDAsNyBAQCBpbnQgZWx2X21lcmdlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBz dHJ1Y3QgcmVxdWVzdCAqKnJlcSwgc3RydWN0IGJpbyAqYmlvKQogCS8qCiAJICogU2VlIGlmIG91 ciBoYXNoIGxvb2t1cCBjYW4gZmluZCBhIHBvdGVudGlhbCBiYWNrbWVyZ2UuCiAJICovCi0JX19y cSA9IGVsdl9ycWhhc2hfZmluZChxLCBiaW8tPmJpX3NlY3Rvcik7CisJX19ycSA9IGVsdl9ycWhh c2hfZmluZChxLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAlpZiAoX19ycSAmJiBlbHZfcnFf bWVyZ2Vfb2soX19ycSwgYmlvKSkgewogCQkqcmVxID0gX19ycTsKIAkJcmV0dXJuIEVMRVZBVE9S X0JBQ0tfTUVSR0U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2FvZS9hb2VjbWQuYyBiL2Ry aXZlcnMvYmxvY2svYW9lL2FvZWNtZC5jCmluZGV4IGQyNTE1NDMuLjg3N2JhMTEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvYmxvY2svYW9lL2FvZWNtZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svYW9lL2Fv ZWNtZC5jCkBAIC05MjksOCArOTI5LDggQEAgYnVmaW5pdChzdHJ1Y3QgYnVmICpidWYsIHN0cnVj dCByZXF1ZXN0ICpycSwgc3RydWN0IGJpbyAqYmlvKQogCW1lbXNldChidWYsIDAsIHNpemVvZigq YnVmKSk7CiAJYnVmLT5ycSA9IHJxOwogCWJ1Zi0+YmlvID0gYmlvOwotCWJ1Zi0+cmVzaWQgPSBi aW8tPmJpX3NpemU7Ci0JYnVmLT5zZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsKKwlidWYtPnJlc2lk ID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CisJYnVmLT5zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yOwogCWJpb19wYWdlaW5jKGJpbyk7CiAJYnVmLT5idiA9IGJpb19pb3ZlYyhiaW8pOwog CWJ1Zi0+YnZfcmVzaWQgPSBidWYtPmJ2LT5idl9sZW47CkBAIC0xMTUyLDcgKzExNTIsNyBAQCBh b2VfZW5kX3JlcXVlc3Qoc3RydWN0IGFvZWRldiAqZCwgc3RydWN0IHJlcXVlc3QgKnJxLCBpbnQg ZmFzdGZhaWwpCiAJZG8gewogCQliaW8gPSBycS0+YmlvOwogCQlib2sgPSAhZmFzdGZhaWwgJiYg dGVzdF9iaXQoQklPX1VQVE9EQVRFLCAmYmlvLT5iaV9mbGFncyk7Ci0JfSB3aGlsZSAoX19ibGtf ZW5kX3JlcXVlc3QocnEsIGJvayA/IDAgOiAtRUlPLCBiaW8tPmJpX3NpemUpKTsKKwl9IHdoaWxl IChfX2Jsa19lbmRfcmVxdWVzdChycSwgYm9rID8gMCA6IC1FSU8sIGJpby0+YmlfaXRlci5iaV9z aXplKSk7CiAKIAkvKiBjZi4gaHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNi8xMC8zMS8yOCAqLwog CWlmICghZmFzdGZhaWwpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2JyZC5jIGIvZHJpdmVy cy9ibG9jay9icmQuYwppbmRleCBkOTFmMWE1Li42NmY1YWFhIDEwMDY0NAotLS0gYS9kcml2ZXJz L2Jsb2NrL2JyZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svYnJkLmMKQEAgLTMzMywxMyArMzMzLDEz IEBAIHN0YXRpYyB2b2lkIGJyZF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEs IHN0cnVjdCBiaW8gKmJpbykKIAlpbnQgaTsKIAlpbnQgZXJyID0gLUVJTzsKIAotCXNlY3RvciA9 IGJpby0+Ymlfc2VjdG9yOworCXNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJaWYg KGJpb19lbmRfc2VjdG9yKGJpbykgPiBnZXRfY2FwYWNpdHkoYmRldi0+YmRfZGlzaykpCiAJCWdv dG8gb3V0OwogCiAJaWYgKHVubGlrZWx5KGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkpIHsKIAkJ ZXJyID0gMDsKLQkJZGlzY2FyZF9mcm9tX2JyZChicmQsIHNlY3RvciwgYmlvLT5iaV9zaXplKTsK KwkJZGlzY2FyZF9mcm9tX2JyZChicmQsIHNlY3RvciwgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwog CQlnb3RvIG91dDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2Fj dGxvZy5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKaW5kZXggMjhjNzNjYS4u YTliMTNmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKKysr IGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKQEAgLTE1OSw3ICsxNTksNyBAQCBz dGF0aWMgaW50IF9kcmJkX21kX3N5bmNfcGFnZV9pbyhzdHJ1Y3QgZHJiZF9jb25mICptZGV2LAog CiAJYmlvID0gYmlvX2FsbG9jX2RyYmQoR0ZQX05PSU8pOwogCWJpby0+YmlfYmRldiA9IGJkZXYt Pm1kX2JkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJpX3Nl Y3RvciA9IHNlY3RvcjsKIAllcnIgPSAtRUlPOwogCWlmIChiaW9fYWRkX3BhZ2UoYmlvLCBwYWdl LCBzaXplLCAwKSAhPSBzaXplKQogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxv Y2svZHJiZC9kcmJkX2JpdG1hcC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0bWFwLmMK aW5kZXggYjEyYzExZS4uNTk3ZjExMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2Ry YmRfYml0bWFwLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0bWFwLmMKQEAgLTEw MjgsNyArMTAyOCw3IEBAIHN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMoc3RydWN0IGJtX2Fp b19jdHggKmN0eCwgaW50IHBhZ2VfbnIsIGludCBydykgX19tdXN0CiAJfSBlbHNlCiAJCXBhZ2Ug PSBiLT5ibV9wYWdlc1twYWdlX25yXTsKIAliaW8tPmJpX2JkZXYgPSBtZGV2LT5sZGV2LT5tZF9i ZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gb25fZGlza19zZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJp X3NlY3RvciA9IG9uX2Rpc2tfc2VjdG9yOwogCS8qIGJpb19hZGRfcGFnZSBvZiBhIHNpbmdsZSBw YWdlIHRvIGFuIGVtcHR5IGJpbyB3aWxsIGFsd2F5cyBzdWNjZWVkLAogCSAqIGFjY29yZGluZyB0 byBhcGkuICBEbyB3ZSB3YW50IHRvIGFzc2VydCB0aGF0PyAqLwogCWJpb19hZGRfcGFnZShiaW8s IHBhZ2UsIGxlbiwgMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNl aXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwppbmRleCA2ZmE2Njcz Li41MzI2YzIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZWNlaXZlci5j CisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAgLTEzMzMsNyArMTMz Myw3IEBAIG5leHRfYmlvOgogCQlnb3RvIGZhaWw7CiAJfQogCS8qID4gcGVlcl9yZXEtPmkuc2Vj dG9yLCB1bmxlc3MgdGhpcyBpcyB0aGUgZmlyc3QgYmlvICovCi0JYmlvLT5iaV9zZWN0b3IgPSBz ZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAliaW8tPmJpX2JkZXYg PSBtZGV2LT5sZGV2LT5iYWNraW5nX2JkZXY7CiAJYmlvLT5iaV9ydyA9IHJ3OwogCWJpby0+Ymlf cHJpdmF0ZSA9IHBlZXJfcmVxOwpAQCAtMTM1Myw3ICsxMzUzLDcgQEAgbmV4dF9iaW86CiAJCQkJ ZGV2X2VycihERVYsCiAJCQkJCSJiaW9fYWRkX3BhZ2UgZmFpbGVkIGZvciBsZW49JXUsICIKIAkJ CQkJImJpX3ZjbnQ9MCAoYmlfc2VjdG9yPSVsbHUpXG4iLAotCQkJCQlsZW4sICh1bnNpZ25lZCBs b25nIGxvbmcpYmlvLT5iaV9zZWN0b3IpOworCQkJCQlsZW4sICh1aW50NjRfdCliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yKTsKIAkJCQllcnIgPSAtRU5PU1BDOwogCQkJCWdvdG8gZmFpbDsKIAkJCX0K QEAgLTE2MTUsNyArMTYxNSw3IEBAIHN0YXRpYyBpbnQgcmVjdl9kbGVzc19yZWFkKHN0cnVjdCBk cmJkX2NvbmYgKm1kZXYsIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSwKIAltZGV2LT5yZWN2X2Nu dCArPSBkYXRhX3NpemU+Pjk7CiAKIAliaW8gPSByZXEtPm1hc3Rlcl9iaW87Ci0JRF9BU1NFUlQo c2VjdG9yID09IGJpby0+Ymlfc2VjdG9yKTsKKwlEX0FTU0VSVChzZWN0b3IgPT0gYmlvLT5iaV9p dGVyLmJpX3NlY3Rvcik7CiAKIAliaW9fZm9yX2VhY2hfc2VnbWVudChidmVjLCBiaW8sIGkpIHsK IAkJdm9pZCAqbWFwcGVkID0ga21hcChidmVjLT5idl9wYWdlKSArIGJ2ZWMtPmJ2X29mZnNldDsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jIGIvZHJpdmVycy9ibG9j ay9kcmJkL2RyYmRfcmVxLmMKaW5kZXggZmVjN2JlZi4uMTA0YTA0MCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRf cmVxLmMKQEAgLTc3LDggKzc3LDggQEAgc3RhdGljIHN0cnVjdCBkcmJkX3JlcXVlc3QgKmRyYmRf cmVxX25ldyhzdHJ1Y3QgZHJiZF9jb25mICptZGV2LAogCXJlcS0+ZXBvY2ggICAgICAgPSAwOwog CiAJZHJiZF9jbGVhcl9pbnRlcnZhbCgmcmVxLT5pKTsKLQlyZXEtPmkuc2VjdG9yICAgICA9IGJp b19zcmMtPmJpX3NlY3RvcjsKLQlyZXEtPmkuc2l6ZSAgICAgID0gYmlvX3NyYy0+Ymlfc2l6ZTsK KwlyZXEtPmkuc2VjdG9yICAgICA9IGJpb19zcmMtPmJpX2l0ZXIuYmlfc2VjdG9yOworCXJlcS0+ aS5zaXplICAgICAgPSBiaW9fc3JjLT5iaV9pdGVyLmJpX3NpemU7CiAJcmVxLT5pLmxvY2FsID0g dHJ1ZTsKIAlyZXEtPmkud2FpdGluZyA9IGZhbHNlOwogCkBAIC0xMjgwLDcgKzEyODAsNyBAQCB2 b2lkIGRyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlv ICpiaW8pCiAJLyoKIAkgKiB3aGF0IHdlICJibGluZGx5IiBhc3N1bWU6CiAJICovCi0JRF9BU1NF UlQoSVNfQUxJR05FRChiaW8tPmJpX3NpemUsIDUxMikpOworCURfQVNTRVJUKElTX0FMSUdORUQo YmlvLT5iaV9pdGVyLmJpX3NpemUsIDUxMikpOwogCiAJaW5jX2FwX2JpbyhtZGV2KTsKIAlfX2Ry YmRfbWFrZV9yZXF1ZXN0KG1kZXYsIGJpbywgc3RhcnRfdGltZSk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaCBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5o CmluZGV4IDk3OGNiMWEuLjI4ZTE1ZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svZHJiZC9k cmJkX3JlcS5oCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5oCkBAIC0yNjksNyAr MjY5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYmRfcmVxX21ha2VfcHJpdmF0ZV9iaW8oc3Ry dWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBzdHJ1Y3QgYmkKIAogLyogU2hvcnQgbGl2ZWQgdGVtcG9y YXJ5IHN0cnVjdCBvbiB0aGUgc3RhY2suCiAgKiBXZSBjb3VsZCBzcXVpcnJlbCB0aGUgZXJyb3Ig dG8gYmUgcmV0dXJuZWQgaW50bwotICogYmlvLT5iaV9zaXplLCBvciBzaW1pbGFyLiBCdXQgdGhh dCB3b3VsZCBiZSB0b28gdWdseS4gKi8KKyAqIGJpby0+YmlfaXRlci5iaV9zaXplLCBvciBzaW1p bGFyLiBCdXQgdGhhdCB3b3VsZCBiZSB0b28gdWdseS4gKi8KIHN0cnVjdCBiaW9fYW5kX2Vycm9y IHsKIAlzdHJ1Y3QgYmlvICpiaW87CiAJaW50IGVycm9yOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9i bG9jay9mbG9wcHkuYyBiL2RyaXZlcnMvYmxvY2svZmxvcHB5LmMKaW5kZXggMDAwYWJlMi4uNmE4 NmZlNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9mbG9wcHkuYworKysgYi9kcml2ZXJzL2Js b2NrL2Zsb3BweS5jCkBAIC0zNzc1LDkgKzM3NzUsOSBAQCBzdGF0aWMgaW50IF9fZmxvcHB5X3Jl YWRfYmxvY2tfMChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQogCWJpb192ZWMuYnZfbGVuID0g c2l6ZTsKIAliaW9fdmVjLmJ2X29mZnNldCA9IDA7CiAJYmlvLmJpX3ZjbnQgPSAxOwotCWJpby5i aV9zaXplID0gc2l6ZTsKKwliaW8uYmlfaXRlci5iaV9zaXplID0gc2l6ZTsKIAliaW8uYmlfYmRl diA9IGJkZXY7Ci0JYmlvLmJpX3NlY3RvciA9IDA7CisJYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0g MDsKIAliaW8uYmlfZmxhZ3MgPSAoMSA8PCBCSU9fUVVJRVQpOwogCWluaXRfY29tcGxldGlvbigm Y29tcGxldGUpOwogCWJpby5iaV9wcml2YXRlID0gJmNvbXBsZXRlOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCBjOGRhYzczLi5m NWUzOTk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYworKysgYi9kcml2ZXJzL2Js b2NrL2xvb3AuYwpAQCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRpYyBpbnQgZG9fYmlvX2ZpbGViYWNr ZWQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJpbyAqYmlvKQogCWxvZmZfdCBwb3M7 CiAJaW50IHJldDsKIAotCXBvcyA9ICgobG9mZl90KSBiaW8tPmJpX3NlY3RvciA8PCA5KSArIGxv LT5sb19vZmZzZXQ7CisJcG9zID0gKChsb2ZmX3QpIGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPDwg OSkgKyBsby0+bG9fb2Zmc2V0OwogCiAJaWYgKGJpb19ydyhiaW8pID09IFdSSVRFKSB7CiAJCXN0 cnVjdCBmaWxlICpmaWxlID0gbG8tPmxvX2JhY2tpbmdfZmlsZTsKQEAgLTQ0NCw3ICs0NDQsNyBA QCBzdGF0aWMgaW50IGRvX2Jpb19maWxlYmFja2VkKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0 cnVjdCBiaW8gKmJpbykKIAkJCQlnb3RvIG91dDsKIAkJCX0KIAkJCXJldCA9IGZpbGUtPmZfb3At PmZhbGxvY2F0ZShmaWxlLCBtb2RlLCBwb3MsCi0JCQkJCQkgICAgYmlvLT5iaV9zaXplKTsKKwkJ CQkJCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCQlpZiAodW5saWtlbHkocmV0ICYmIHJl dCAhPSAtRUlOVkFMICYmCiAJCQkJICAgICByZXQgIT0gLUVPUE5PVFNVUFApKQogCQkJCXJldCA9 IC1FSU87CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMgYi9k cml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMKaW5kZXggMDUwYzcxMi4uNjllOWViNSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5jCisrKyBiL2RyaXZl cnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYwpAQCAtMzk5Myw3ICszOTkzLDcgQEAgc3RhdGlj IHZvaWQgbXRpcF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnF1ZXVlLCBzdHJ1 Y3QgYmlvICpiaW8pCiAJfQogCiAJaWYgKHVubGlrZWx5KGJpby0+YmlfcncgJiBSRVFfRElTQ0FS RCkpIHsKLQkJYmlvX2VuZGlvKGJpbywgbXRpcF9zZW5kX3RyaW0oZGQsIGJpby0+Ymlfc2VjdG9y LAorCQliaW9fZW5kaW8oYmlvLCBtdGlwX3NlbmRfdHJpbShkZCwgYmlvLT5iaV9pdGVyLmJpX3Nl Y3RvciwKIAkJCQkJCWJpb19zZWN0b3JzKGJpbykpKTsKIAkJcmV0dXJuOwogCX0KQEAgLTQwMDYs NyArNDAwNiw4IEBAIHN0YXRpYyB2b2lkIG10aXBfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxdWV1ZSwgc3RydWN0IGJpbyAqYmlvKQogCiAJaWYgKGJpb19kYXRhX2RpcihiaW8p ID09IFdSSVRFICYmIGJpb19zZWN0b3JzKGJpbykgPD0gNjQgJiYKIAkJCQkJCQlkZC0+dW5hbF9x ZGVwdGgpIHsKLQkJaWYgKGJpby0+Ymlfc2VjdG9yICUgOCAhPSAwKSAvKiBVbmFsaWduZWQgb24g NGsgYm91bmRhcmllcyAqLworCQlpZiAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAlIDggIT0gMCkK KwkJCS8qIFVuYWxpZ25lZCBvbiA0ayBib3VuZGFyaWVzICovCiAJCQl1bmFsaWduZWQgPSAxOwog CQllbHNlIGlmIChiaW9fc2VjdG9ycyhiaW8pICUgOCAhPSAwKSAvKiBBbGlnbmVkIGJ1dCBub3Qg NGsvOGsgKi8KIAkJCXVuYWxpZ25lZCA9IDE7CkBAIC00MDM1LDcgKzQwMzYsNyBAQCBzdGF0aWMg dm9pZCBtdGlwX21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcXVldWUsIHN0cnVj dCBiaW8gKmJpbykKIAogCQkvKiBJc3N1ZSB0aGUgcmVhZC93cml0ZS4gKi8KIAkJbXRpcF9od19z dWJtaXRfaW8oZGQsCi0JCQkJYmlvLT5iaV9zZWN0b3IsCisJCQkJYmlvLT5iaV9pdGVyLmJpX3Nl Y3RvciwKIAkJCQliaW9fc2VjdG9ycyhiaW8pLAogCQkJCW5lbnRzLAogCQkJCXRhZywKZGlmZiAt LWdpdCBhL2RyaXZlcnMvYmxvY2svbnZtZS1jb3JlLmMgYi9kcml2ZXJzL2Jsb2NrL252bWUtY29y ZS5jCmluZGV4IDI2ZDAzZmEuLjUzZDIxNzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbnZt ZS1jb3JlLmMKKysrIGIvZHJpdmVycy9ibG9jay9udm1lLWNvcmUuYwpAQCAtNDY4LDcgKzQ2OCw3 IEBAIHN0YXRpYyBzdHJ1Y3QgbnZtZV9iaW9fcGFpciAqbnZtZV9iaW9fc3BsaXQoc3RydWN0IGJp byAqYmlvLCBpbnQgaWR4LAogewogCXN0cnVjdCBudm1lX2Jpb19wYWlyICpicDsKIAotCUJVR19P TihsZW4gPiBiaW8tPmJpX3NpemUpOworCUJVR19PTihsZW4gPiBiaW8tPmJpX2l0ZXIuYmlfc2l6 ZSk7CiAJQlVHX09OKGlkeCA+IGJpby0+YmlfdmNudCk7CiAKIAlicCA9IGttYWxsb2Moc2l6ZW9m KCpicCksIEdGUF9BVE9NSUMpOwpAQCAtNDc5LDExICs0NzksMTEgQEAgc3RhdGljIHN0cnVjdCBu dm1lX2Jpb19wYWlyICpudm1lX2Jpb19zcGxpdChzdHJ1Y3QgYmlvICpiaW8sIGludCBpZHgsCiAJ YnAtPmIxID0gKmJpbzsKIAlicC0+YjIgPSAqYmlvOwogCi0JYnAtPmIxLmJpX3NpemUgPSBsZW47 Ci0JYnAtPmIyLmJpX3NpemUgLT0gbGVuOworCWJwLT5iMS5iaV9pdGVyLmJpX3NpemUgPSBsZW47 CisJYnAtPmIyLmJpX2l0ZXIuYmlfc2l6ZSAtPSBsZW47CiAJYnAtPmIxLmJpX3ZjbnQgPSBpZHg7 Ci0JYnAtPmIyLmJpX2lkeCA9IGlkeDsKLQlicC0+YjIuYmlfc2VjdG9yICs9IGxlbiA+PiA5Owor CWJwLT5iMi5iaV9pdGVyLmJpX2lkeCA9IGlkeDsKKwlicC0+YjIuYmlfaXRlci5iaV9zZWN0b3Ig Kz0gbGVuID4+IDk7CiAKIAlpZiAob2Zmc2V0KSB7CiAJCWJwLT5idjEgPSBrbWFsbG9jKGJpby0+ YmlfbWF4X3ZlY3MgKiBzaXplb2Yoc3RydWN0IGJpb192ZWMpLApAQCAtNTUyLDExICs1NTIsMTIg QEAgc3RhdGljIGludCBudm1lX21hcF9iaW8oc3RydWN0IG52bWVfcXVldWUgKm52bWVxLCBzdHJ1 Y3QgbnZtZV9pb2QgKmlvZCwKIHsKIAlzdHJ1Y3QgYmlvX3ZlYyAqYnZlYywgKmJ2cHJ2ID0gTlVM TDsKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnID0gTlVMTDsKLQlpbnQgaSwgbGVuZ3RoID0gMCwg bnNlZ3MgPSAwLCBzcGxpdF9sZW4gPSBiaW8tPmJpX3NpemU7CisJaW50IGksIGxlbmd0aCA9IDAs IG5zZWdzID0gMCwgc3BsaXRfbGVuID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAlpZiAobnZt ZXEtPmRldi0+c3RyaXBlX3NpemUpCiAJCXNwbGl0X2xlbiA9IG52bWVxLT5kZXYtPnN0cmlwZV9z aXplIC0KLQkJCSgoYmlvLT5iaV9zZWN0b3IgPDwgOSkgJiAobnZtZXEtPmRldi0+c3RyaXBlX3Np emUgLSAxKSk7CisJCQkoKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPDwgOSkgJgorCQkJIChudm1l cS0+ZGV2LT5zdHJpcGVfc2l6ZSAtIDEpKTsKIAogCXNnX2luaXRfdGFibGUoaW9kLT5zZywgcHNl Z3MpOwogCWJpb19mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIGJpbywgaSkgewpAQCAtNTg0LDcgKzU4 NSw3IEBAIHN0YXRpYyBpbnQgbnZtZV9tYXBfYmlvKHN0cnVjdCBudm1lX3F1ZXVlICpudm1lcSwg c3RydWN0IG52bWVfaW9kICppb2QsCiAJaWYgKGRtYV9tYXBfc2cobnZtZXEtPnFfZG1hZGV2LCBp b2QtPnNnLCBpb2QtPm5lbnRzLCBkbWFfZGlyKSA9PSAwKQogCQlyZXR1cm4gLUVOT01FTTsKIAot CUJVR19PTihsZW5ndGggIT0gYmlvLT5iaV9zaXplKTsKKwlCVUdfT04obGVuZ3RoICE9IGJpby0+ YmlfaXRlci5iaV9zaXplKTsKIAlyZXR1cm4gbGVuZ3RoOwogfQogCkBAIC02MDgsOCArNjA5LDgg QEAgc3RhdGljIGludCBudm1lX3N1Ym1pdF9kaXNjYXJkKHN0cnVjdCBudm1lX3F1ZXVlICpudm1l cSwgc3RydWN0IG52bWVfbnMgKm5zLAogCWlvZC0+bnBhZ2VzID0gMDsKIAogCXJhbmdlLT5jYXR0 ciA9IGNwdV90b19sZTMyKDApOwotCXJhbmdlLT5ubGIgPSBjcHVfdG9fbGUzMihiaW8tPmJpX3Np emUgPj4gbnMtPmxiYV9zaGlmdCk7Ci0JcmFuZ2UtPnNsYmEgPSBjcHVfdG9fbGU2NChudm1lX2Js b2NrX25yKG5zLCBiaW8tPmJpX3NlY3RvcikpOworCXJhbmdlLT5ubGIgPSBjcHVfdG9fbGUzMihi aW8tPmJpX2l0ZXIuYmlfc2l6ZSA+PiBucy0+bGJhX3NoaWZ0KTsKKwlyYW5nZS0+c2xiYSA9IGNw dV90b19sZTY0KG52bWVfYmxvY2tfbnIobnMsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpKTsKIAog CW1lbXNldChjbW5kLCAwLCBzaXplb2YoKmNtbmQpKTsKIAljbW5kLT5kc20ub3Bjb2RlID0gbnZt ZV9jbWRfZHNtOwpAQCAtNjc0LDcgKzY3NSw3IEBAIHN0YXRpYyBpbnQgbnZtZV9zdWJtaXRfYmlv X3F1ZXVlKHN0cnVjdCBudm1lX3F1ZXVlICpudm1lcSwgc3RydWN0IG52bWVfbnMgKm5zLAogCX0K IAogCXJlc3VsdCA9IC1FTk9NRU07Ci0JaW9kID0gbnZtZV9hbGxvY19pb2QocHNlZ3MsIGJpby0+ Ymlfc2l6ZSwgR0ZQX0FUT01JQyk7CisJaW9kID0gbnZtZV9hbGxvY19pb2QocHNlZ3MsIGJpby0+ YmlfaXRlci5iaV9zaXplLCBHRlBfQVRPTUlDKTsKIAlpZiAoIWlvZCkKIAkJZ290byBub21lbTsK IAlpb2QtPnByaXZhdGUgPSBiaW87CkBAIC03MjMsNyArNzI0LDcgQEAgc3RhdGljIGludCBudm1l X3N1Ym1pdF9iaW9fcXVldWUoc3RydWN0IG52bWVfcXVldWUgKm52bWVxLCBzdHJ1Y3QgbnZtZV9u cyAqbnMsCiAJY21uZC0+cncubnNpZCA9IGNwdV90b19sZTMyKG5zLT5uc19pZCk7CiAJbGVuZ3Ro ID0gbnZtZV9zZXR1cF9wcnBzKG52bWVxLT5kZXYsICZjbW5kLT5jb21tb24sIGlvZCwgbGVuZ3Ro LAogCQkJCQkJCQlHRlBfQVRPTUlDKTsKLQljbW5kLT5ydy5zbGJhID0gY3B1X3RvX2xlNjQobnZt ZV9ibG9ja19ucihucywgYmlvLT5iaV9zZWN0b3IpKTsKKwljbW5kLT5ydy5zbGJhID0gY3B1X3Rv X2xlNjQobnZtZV9ibG9ja19ucihucywgYmlvLT5iaV9pdGVyLmJpX3NlY3RvcikpOwogCWNtbmQt PnJ3Lmxlbmd0aCA9IGNwdV90b19sZTE2KChsZW5ndGggPj4gbnMtPmxiYV9zaGlmdCkgLSAxKTsK IAljbW5kLT5ydy5jb250cm9sID0gY3B1X3RvX2xlMTYoY29udHJvbCk7CiAJY21uZC0+cncuZHNt Z210ID0gY3B1X3RvX2xlMzIoZHNtZ210KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcGt0 Y2R2ZC5jIGIvZHJpdmVycy9ibG9jay9wa3RjZHZkLmMKaW5kZXggZmY4NjY4Yy4uY2U5ODZiYSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9wa3RjZHZkLmMKKysrIGIvZHJpdmVycy9ibG9jay9w a3RjZHZkLmMKQEAgLTY1MSw3ICs2NTEsNyBAQCBzdGF0aWMgc3RydWN0IHBrdF9yYl9ub2RlICpw a3RfcmJ0cmVlX2ZpbmQoc3RydWN0IHBrdGNkdmRfZGV2aWNlICpwZCwgc2VjdG9yX3QgcwogCiAJ Zm9yICg7OykgewogCQl0bXAgPSByYl9lbnRyeShuLCBzdHJ1Y3QgcGt0X3JiX25vZGUsIHJiX25v ZGUpOwotCQlpZiAocyA8PSB0bXAtPmJpby0+Ymlfc2VjdG9yKQorCQlpZiAocyA8PSB0bXAtPmJp by0+YmlfaXRlci5iaV9zZWN0b3IpCiAJCQluZXh0ID0gbi0+cmJfbGVmdDsKIAkJZWxzZQogCQkJ bmV4dCA9IG4tPnJiX3JpZ2h0OwpAQCAtNjYwLDEyICs2NjAsMTIgQEAgc3RhdGljIHN0cnVjdCBw a3RfcmJfbm9kZSAqcGt0X3JidHJlZV9maW5kKHN0cnVjdCBwa3RjZHZkX2RldmljZSAqcGQsIHNl Y3Rvcl90IHMKIAkJbiA9IG5leHQ7CiAJfQogCi0JaWYgKHMgPiB0bXAtPmJpby0+Ymlfc2VjdG9y KSB7CisJaWYgKHMgPiB0bXAtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IpIHsKIAkJdG1wID0gcGt0 X3JidHJlZV9uZXh0KHRtcCk7CiAJCWlmICghdG1wKQogCQkJcmV0dXJuIE5VTEw7CiAJfQotCUJV R19PTihzID4gdG1wLT5iaW8tPmJpX3NlY3Rvcik7CisJQlVHX09OKHMgPiB0bXAtPmJpby0+Ymlf aXRlci5iaV9zZWN0b3IpOwogCXJldHVybiB0bXA7CiB9CiAKQEAgLTY3NiwxMyArNjc2LDEzIEBA IHN0YXRpYyB2b2lkIHBrdF9yYnRyZWVfaW5zZXJ0KHN0cnVjdCBwa3RjZHZkX2RldmljZSAqcGQs IHN0cnVjdCBwa3RfcmJfbm9kZSAqbm9kCiB7CiAJc3RydWN0IHJiX25vZGUgKipwID0gJnBkLT5i aW9fcXVldWUucmJfbm9kZTsKIAlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50ID0gTlVMTDsKLQlzZWN0 b3JfdCBzID0gbm9kZS0+YmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX3QgcyA9IG5vZGUtPmJpby0+ YmlfaXRlci5iaV9zZWN0b3I7CiAJc3RydWN0IHBrdF9yYl9ub2RlICp0bXA7CiAKIAl3aGlsZSAo KnApIHsKIAkJcGFyZW50ID0gKnA7CiAJCXRtcCA9IHJiX2VudHJ5KHBhcmVudCwgc3RydWN0IHBr dF9yYl9ub2RlLCByYl9ub2RlKTsKLQkJaWYgKHMgPCB0bXAtPmJpby0+Ymlfc2VjdG9yKQorCQlp ZiAocyA8IHRtcC0+YmlvLT5iaV9pdGVyLmJpX3NlY3RvcikKIAkJCXAgPSAmKCpwKS0+cmJfbGVm dDsKIAkJZWxzZQogCQkJcCA9ICYoKnApLT5yYl9yaWdodDsKQEAgLTg1Nyw3ICs4NTcsOCBAQCBz dGF0aWMgdm9pZCBwa3RfaW9zY2hlZF9wcm9jZXNzX3F1ZXVlKHN0cnVjdCBwa3RjZHZkX2Rldmlj ZSAqcGQpCiAJCQlzcGluX2xvY2soJnBkLT5pb3NjaGVkLmxvY2spOwogCQkJYmlvID0gYmlvX2xp c3RfcGVlaygmcGQtPmlvc2NoZWQud3JpdGVfcXVldWUpOwogCQkJc3Bpbl91bmxvY2soJnBkLT5p b3NjaGVkLmxvY2spOwotCQkJaWYgKGJpbyAmJiAoYmlvLT5iaV9zZWN0b3IgPT0gcGQtPmlvc2No ZWQubGFzdF93cml0ZSkpCisJCQlpZiAoYmlvICYmIChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID09 CisJCQkJICAgIHBkLT5pb3NjaGVkLmxhc3Rfd3JpdGUpKQogCQkJCW5lZWRfd3JpdGVfc2VlayA9 IDA7CiAJCQlpZiAobmVlZF93cml0ZV9zZWVrICYmIHJlYWRzX3F1ZXVlZCkgewogCQkJCWlmIChh dG9taWNfcmVhZCgmcGQtPmNkcncucGVuZGluZ19iaW9zKSA+IDApIHsKQEAgLTg4OCw3ICs4ODks OCBAQCBzdGF0aWMgdm9pZCBwa3RfaW9zY2hlZF9wcm9jZXNzX3F1ZXVlKHN0cnVjdCBwa3RjZHZk X2RldmljZSAqcGQpCiAJCQljb250aW51ZTsKIAogCQlpZiAoYmlvX2RhdGFfZGlyKGJpbykgPT0g UkVBRCkKLQkJCXBkLT5pb3NjaGVkLnN1Y2Nlc3NpdmVfcmVhZHMgKz0gYmlvLT5iaV9zaXplID4+ IDEwOworCQkJcGQtPmlvc2NoZWQuc3VjY2Vzc2l2ZV9yZWFkcyArPQorCQkJCWJpby0+YmlfaXRl ci5iaV9zaXplID4+IDEwOwogCQllbHNlIHsKIAkJCXBkLT5pb3NjaGVkLnN1Y2Nlc3NpdmVfcmVh ZHMgPSAwOwogCQkJcGQtPmlvc2NoZWQubGFzdF93cml0ZSA9IGJpb19lbmRfc2VjdG9yKGJpbyk7 CkBAIC05NzgsNyArOTgwLDcgQEAgc3RhdGljIHZvaWQgcGt0X2VuZF9pb19yZWFkKHN0cnVjdCBi aW8gKmJpbywgaW50IGVycikKIAogCXBrdF9kYmcoMiwgcGQsICJiaW89JXAgc2VjMD0lbGx4IHNl Yz0lbGx4IGVycj0lZFxuIiwKIAkJYmlvLCAodW5zaWduZWQgbG9uZyBsb25nKXBrdC0+c2VjdG9y LAotCQkodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlfc2VjdG9yLCBlcnIpOworCQkodW5zaWdu ZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsIGVycik7CiAKIAlpZiAoZXJyKQog CQlhdG9taWNfaW5jKCZwa3QtPmlvX2Vycm9ycyk7CkBAIC0xMDI2LDggKzEwMjgsOSBAQCBzdGF0 aWMgdm9pZCBwa3RfZ2F0aGVyX2RhdGEoc3RydWN0IHBrdGNkdmRfZGV2aWNlICpwZCwgc3RydWN0 IHBhY2tldF9kYXRhICpwa3QpCiAJbWVtc2V0KHdyaXR0ZW4sIDAsIHNpemVvZih3cml0dGVuKSk7 CiAJc3Bpbl9sb2NrKCZwa3QtPmxvY2spOwogCWJpb19saXN0X2Zvcl9lYWNoKGJpbywgJnBrdC0+ b3JpZ19iaW9zKSB7Ci0JCWludCBmaXJzdF9mcmFtZSA9IChiaW8tPmJpX3NlY3RvciAtIHBrdC0+ c2VjdG9yKSAvIChDRF9GUkFNRVNJWkUgPj4gOSk7Ci0JCWludCBudW1fZnJhbWVzID0gYmlvLT5i aV9zaXplIC8gQ0RfRlJBTUVTSVpFOworCQlpbnQgZmlyc3RfZnJhbWUgPSAoYmlvLT5iaV9pdGVy LmJpX3NlY3RvciAtIHBrdC0+c2VjdG9yKSAvCisJCQkoQ0RfRlJBTUVTSVpFID4+IDkpOworCQlp bnQgbnVtX2ZyYW1lcyA9IGJpby0+YmlfaXRlci5iaV9zaXplIC8gQ0RfRlJBTUVTSVpFOwogCQlw ZC0+c3RhdHMuc2Vjc193ICs9IG51bV9mcmFtZXMgKiAoQ0RfRlJBTUVTSVpFID4+IDkpOwogCQlC VUdfT04oZmlyc3RfZnJhbWUgPCAwKTsKIAkJQlVHX09OKGZpcnN0X2ZyYW1lICsgbnVtX2ZyYW1l cyA+IHBrdC0+ZnJhbWVzKTsKQEAgLTEwNTMsNyArMTA1Niw3IEBAIHN0YXRpYyB2b2lkIHBrdF9n YXRoZXJfZGF0YShzdHJ1Y3QgcGt0Y2R2ZF9kZXZpY2UgKnBkLCBzdHJ1Y3QgcGFja2V0X2RhdGEg KnBrdCkKIAogCQliaW8gPSBwa3QtPnJfYmlvc1tmXTsKIAkJYmlvX3Jlc2V0KGJpbyk7Ci0JCWJp by0+Ymlfc2VjdG9yID0gcGt0LT5zZWN0b3IgKyBmICogKENEX0ZSQU1FU0laRSA+PiA5KTsKKwkJ YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBrdC0+c2VjdG9yICsgZiAqIChDRF9GUkFNRVNJWkUg Pj4gOSk7CiAJCWJpby0+YmlfYmRldiA9IHBkLT5iZGV2OwogCQliaW8tPmJpX2VuZF9pbyA9IHBr dF9lbmRfaW9fcmVhZDsKIAkJYmlvLT5iaV9wcml2YXRlID0gcGt0OwpAQCAtMTE1MCw4ICsxMTUz LDggQEAgc3RhdGljIGludCBwa3Rfc3RhcnRfcmVjb3Zlcnkoc3RydWN0IHBhY2tldF9kYXRhICpw a3QpCiAJYmlvX3Jlc2V0KHBrdC0+YmlvKTsKIAlwa3QtPmJpby0+YmlfYmRldiA9IHBkLT5iZGV2 OwogCXBrdC0+YmlvLT5iaV9ydyA9IFJFUV9XUklURTsKLQlwa3QtPmJpby0+Ymlfc2VjdG9yID0g bmV3X3NlY3RvcjsKLQlwa3QtPmJpby0+Ymlfc2l6ZSA9IHBrdC0+ZnJhbWVzICogQ0RfRlJBTUVT SVpFOworCXBrdC0+YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IG5ld19zZWN0b3I7CisJcGt0LT5i aW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IHBrdC0+ZnJhbWVzICogQ0RfRlJBTUVTSVpFOwogCXBrdC0+ YmlvLT5iaV92Y250ID0gcGt0LT5mcmFtZXM7CiAKIAlwa3QtPmJpby0+YmlfZW5kX2lvID0gcGt0 X2VuZF9pb19wYWNrZXRfd3JpdGU7CkBAIC0xMjEzLDcgKzEyMTYsNyBAQCBzdGF0aWMgaW50IHBr dF9oYW5kbGVfcXVldWUoc3RydWN0IHBrdGNkdmRfZGV2aWNlICpwZCkKIAlub2RlID0gZmlyc3Rf bm9kZTsKIAl3aGlsZSAobm9kZSkgewogCQliaW8gPSBub2RlLT5iaW87Ci0JCXpvbmUgPSBnZXRf em9uZShiaW8tPmJpX3NlY3RvciwgcGQpOworCQl6b25lID0gZ2V0X3pvbmUoYmlvLT5iaV9pdGVy LmJpX3NlY3RvciwgcGQpOwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHAsICZwZC0+Y2Rydy5wa3Rf YWN0aXZlX2xpc3QsIGxpc3QpIHsKIAkJCWlmIChwLT5zZWN0b3IgPT0gem9uZSkgewogCQkJCWJp byA9IE5VTEw7CkBAIC0xMjUyLDE0ICsxMjU1LDE0IEBAIHRyeV9uZXh0X2JpbzoKIAlwa3RfZGJn KDIsIHBkLCAibG9va2luZyBmb3Igem9uZSAlbGx4XG4iLCAodW5zaWduZWQgbG9uZyBsb25nKXpv bmUpOwogCXdoaWxlICgobm9kZSA9IHBrdF9yYnRyZWVfZmluZChwZCwgem9uZSkpICE9IE5VTEwp IHsKIAkJYmlvID0gbm9kZS0+YmlvOwotCQlwa3RfZGJnKDIsIHBkLCAiZm91bmQgem9uZT0lbGx4 XG4iLAotCQkJKHVuc2lnbmVkIGxvbmcgbG9uZylnZXRfem9uZShiaW8tPmJpX3NlY3RvciwgcGQp KTsKLQkJaWYgKGdldF96b25lKGJpby0+Ymlfc2VjdG9yLCBwZCkgIT0gem9uZSkKKwkJcGt0X2Ri ZygyLCBwZCwgImZvdW5kIHpvbmU9JWxseFxuIiwgKHVuc2lnbmVkIGxvbmcgbG9uZykKKwkJCWdl dF96b25lKGJpby0+YmlfaXRlci5iaV9zZWN0b3IsIHBkKSk7CisJCWlmIChnZXRfem9uZShiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yLCBwZCkgIT0gem9uZSkKIAkJCWJyZWFrOwogCQlwa3RfcmJ0cmVl X2VyYXNlKHBkLCBub2RlKTsKIAkJc3Bpbl9sb2NrKCZwa3QtPmxvY2spOwogCQliaW9fbGlzdF9h ZGQoJnBrdC0+b3JpZ19iaW9zLCBiaW8pOwotCQlwa3QtPndyaXRlX3NpemUgKz0gYmlvLT5iaV9z aXplIC8gQ0RfRlJBTUVTSVpFOworCQlwa3QtPndyaXRlX3NpemUgKz0gYmlvLT5iaV9pdGVyLmJp X3NpemUgLyBDRF9GUkFNRVNJWkU7CiAJCXNwaW5fdW5sb2NrKCZwa3QtPmxvY2spOwogCX0KIAkv KiBjaGVjayB3cml0ZSBjb25nZXN0aW9uIG1hcmtzLCBhbmQgaWYgYmlvX3F1ZXVlX3NpemUgaXMK QEAgLTEyOTMsNyArMTI5Niw3IEBAIHN0YXRpYyB2b2lkIHBrdF9zdGFydF93cml0ZShzdHJ1Y3Qg cGt0Y2R2ZF9kZXZpY2UgKnBkLCBzdHJ1Y3QgcGFja2V0X2RhdGEgKnBrdCkKIAlzdHJ1Y3QgYmlv X3ZlYyAqYnZlYyA9IHBrdC0+d19iaW8tPmJpX2lvX3ZlYzsKIAogCWJpb19yZXNldChwa3QtPndf YmlvKTsKLQlwa3QtPndfYmlvLT5iaV9zZWN0b3IgPSBwa3QtPnNlY3RvcjsKKwlwa3QtPndfYmlv LT5iaV9pdGVyLmJpX3NlY3RvciA9IHBrdC0+c2VjdG9yOwogCXBrdC0+d19iaW8tPmJpX2JkZXYg PSBwZC0+YmRldjsKIAlwa3QtPndfYmlvLT5iaV9lbmRfaW8gPSBwa3RfZW5kX2lvX3BhY2tldF93 cml0ZTsKIAlwa3QtPndfYmlvLT5iaV9wcml2YXRlID0gcGt0OwpAQCAtMjM3MCwyMCArMjM3Mywy MCBAQCBzdGF0aWMgdm9pZCBwa3RfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAlpZiAoIXRlc3RfYml0KFBBQ0tFVF9XUklUQUJMRSwgJnBk LT5mbGFncykpIHsKIAkJcGt0X25vdGljZShwZCwgIldSSVRFIGZvciBybyBkZXZpY2UgKCVsbHUp XG4iLAotCQkJICAgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQkgICAo dW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCQlnb3RvIGVuZF9p bzsKIAl9CiAKLQlpZiAoIWJpby0+Ymlfc2l6ZSB8fCAoYmlvLT5iaV9zaXplICUgQ0RfRlJBTUVT SVpFKSkgeworCWlmICghYmlvLT5iaV9pdGVyLmJpX3NpemUgfHwgKGJpby0+YmlfaXRlci5iaV9z aXplICUgQ0RfRlJBTUVTSVpFKSkgewogCQlwa3RfZXJyKHBkLCAid3JvbmcgYmlvIHNpemVcbiIp OwogCQlnb3RvIGVuZF9pbzsKIAl9CiAKIAlibGtfcXVldWVfYm91bmNlKHEsICZiaW8pOwogCi0J em9uZSA9IGdldF96b25lKGJpby0+Ymlfc2VjdG9yLCBwZCk7CisJem9uZSA9IGdldF96b25lKGJp by0+YmlfaXRlci5iaV9zZWN0b3IsIHBkKTsKIAlwa3RfZGJnKDIsIHBkLCAic3RhcnQgPSAlNmxs eCBzdG9wID0gJTZsbHhcbiIsCi0JCSh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3Is CisJCSh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJKHVuc2ln bmVkIGxvbmcgbG9uZyliaW9fZW5kX3NlY3RvcihiaW8pKTsKIAogCS8qIENoZWNrIGlmIHdlIGhh dmUgdG8gc3BsaXQgdGhlIGJpbyAqLwpAQCAtMjM5NSw3ICsyMzk4LDcgQEAgc3RhdGljIHZvaWQg cGt0X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlv KQogCQlsYXN0X3pvbmUgPSBnZXRfem9uZShiaW9fZW5kX3NlY3RvcihiaW8pIC0gMSwgcGQpOwog CQlpZiAobGFzdF96b25lICE9IHpvbmUpIHsKIAkJCUJVR19PTihsYXN0X3pvbmUgIT0gem9uZSAr IHBkLT5zZXR0aW5ncy5zaXplKTsKLQkJCWZpcnN0X3NlY3RvcnMgPSBsYXN0X3pvbmUgLSBiaW8t PmJpX3NlY3RvcjsKKwkJCWZpcnN0X3NlY3RvcnMgPSBsYXN0X3pvbmUgLSBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yOwogCQkJYnAgPSBiaW9fc3BsaXQoYmlvLCBmaXJzdF9zZWN0b3JzKTsKIAkJCUJV R19PTighYnApOwogCQkJcGt0X21ha2VfcmVxdWVzdChxLCAmYnAtPmJpbzEpOwpAQCAtMjQxNyw3 ICsyNDIwLDggQEAgc3RhdGljIHZvaWQgcGt0X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9x dWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvKQogCQkJaWYgKChwa3QtPnN0YXRlID09IFBBQ0tFVF9X QUlUSU5HX1NUQVRFKSB8fAogCQkJICAgIChwa3QtPnN0YXRlID09IFBBQ0tFVF9SRUFEX1dBSVRf U1RBVEUpKSB7CiAJCQkJYmlvX2xpc3RfYWRkKCZwa3QtPm9yaWdfYmlvcywgYmlvKTsKLQkJCQlw a3QtPndyaXRlX3NpemUgKz0gYmlvLT5iaV9zaXplIC8gQ0RfRlJBTUVTSVpFOworCQkJCXBrdC0+ d3JpdGVfc2l6ZSArPQorCQkJCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZSAvIENEX0ZSQU1FU0laRTsK IAkJCQlpZiAoKHBrdC0+d3JpdGVfc2l6ZSA+PSBwa3QtPmZyYW1lcykgJiYKIAkJCQkgICAgKHBr dC0+c3RhdGUgPT0gUEFDS0VUX1dBSVRJTkdfU1RBVEUpKSB7CiAJCQkJCWF0b21pY19pbmMoJnBr dC0+cnVuX3NtKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcHMzZGlzay5jIGIvZHJpdmVy cy9ibG9jay9wczNkaXNrLmMKaW5kZXggZDc1NGE4OC4uNDY0YmU3OCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ibG9jay9wczNkaXNrLmMKKysrIGIvZHJpdmVycy9ibG9jay9wczNkaXNrLmMKQEAgLTEw NCw3ICsxMDQsNyBAQCBzdGF0aWMgdm9pZCBwczNkaXNrX3NjYXR0ZXJfZ2F0aGVyKHN0cnVjdCBw czNfc3RvcmFnZV9kZXZpY2UgKmRldiwKIAkJZGV2X2RiZygmZGV2LT5zYmQuY29yZSwKIAkJCSIl czoldTogYmlvICV1OiAldSBzZWdzICV1IHNlY3RvcnMgZnJvbSAlbHVcbiIsCiAJCQlfX2Z1bmNf XywgX19MSU5FX18sIGksIGJpb19zZWdtZW50cyhpdGVyLmJpbyksCi0JCQliaW9fc2VjdG9ycyhp dGVyLmJpbyksIGl0ZXIuYmlvLT5iaV9zZWN0b3IpOworCQkJYmlvX3NlY3RvcnMoaXRlci5iaW8p LCBpdGVyLmJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCiAJCXNpemUgPSBidmVjLT5idl9sZW47 CiAJCWJ1ZiA9IGJ2ZWNfa21hcF9pcnEoYnZlYywgJmZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvYmxvY2svcHMzdnJhbS5jIGIvZHJpdmVycy9ibG9jay9wczN2cmFtLmMKaW5kZXggMDZhMmU1 My4uMzIwYmJmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9wczN2cmFtLmMKKysrIGIvZHJp dmVycy9ibG9jay9wczN2cmFtLmMKQEAgLTU1Myw3ICs1NTMsNyBAQCBzdGF0aWMgc3RydWN0IGJp byAqcHMzdnJhbV9kb19iaW8oc3RydWN0IHBzM19zeXN0ZW1fYnVzX2RldmljZSAqZGV2LAogCXN0 cnVjdCBwczN2cmFtX3ByaXYgKnByaXYgPSBwczNfc3lzdGVtX2J1c19nZXRfZHJ2ZGF0YShkZXYp OwogCWludCB3cml0ZSA9IGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFOwogCWNvbnN0IGNoYXIg Km9wID0gd3JpdGUgPyAid3JpdGUiIDogInJlYWQiOwotCWxvZmZfdCBvZmZzZXQgPSBiaW8tPmJp X3NlY3RvciA8PCA5OworCWxvZmZfdCBvZmZzZXQgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8 IDk7CiAJaW50IGVycm9yID0gMDsKIAlzdHJ1Y3QgYmlvX3ZlYyAqYnZlYzsKIAl1bnNpZ25lZCBp bnQgaTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcmJkLmMgYi9kcml2ZXJzL2Jsb2NrL3Ji ZC5jCmluZGV4IGNiMWRiMjkuLmE4ZjRmZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svcmJk LmMKKysrIGIvZHJpdmVycy9ibG9jay9yYmQuYwpAQCAtMTE4MywxNCArMTE4MywxNCBAQCBzdGF0 aWMgc3RydWN0IGJpbyAqYmlvX2Nsb25lX3JhbmdlKHN0cnVjdCBiaW8gKmJpb19zcmMsCiAKIAkv KiBIYW5kbGUgdGhlIGVhc3kgY2FzZSBmb3IgdGhlIGNhbGxlciAqLwogCi0JaWYgKCFvZmZzZXQg JiYgbGVuID09IGJpb19zcmMtPmJpX3NpemUpCisJaWYgKCFvZmZzZXQgJiYgbGVuID09IGJpb19z cmMtPmJpX2l0ZXIuYmlfc2l6ZSkKIAkJcmV0dXJuIGJpb19jbG9uZShiaW9fc3JjLCBnZnBtYXNr KTsKIAogCWlmIChXQVJOX09OX09OQ0UoIWxlbikpCiAJCXJldHVybiBOVUxMOwotCWlmIChXQVJO X09OX09OQ0UobGVuID4gYmlvX3NyYy0+Ymlfc2l6ZSkpCisJaWYgKFdBUk5fT05fT05DRShsZW4g PiBiaW9fc3JjLT5iaV9pdGVyLmJpX3NpemUpKQogCQlyZXR1cm4gTlVMTDsKLQlpZiAoV0FSTl9P Tl9PTkNFKG9mZnNldCA+IGJpb19zcmMtPmJpX3NpemUgLSBsZW4pKQorCWlmIChXQVJOX09OX09O Q0Uob2Zmc2V0ID4gYmlvX3NyYy0+YmlfaXRlci5iaV9zaXplIC0gbGVuKSkKIAkJcmV0dXJuIE5V TEw7CiAKIAkvKiBGaW5kIGZpcnN0IGFmZmVjdGVkIHNlZ21lbnQuLi4gKi8KQEAgLTEyMjAsNyAr MTIyMCw4IEBAIHN0YXRpYyBzdHJ1Y3QgYmlvICpiaW9fY2xvbmVfcmFuZ2Uoc3RydWN0IGJpbyAq YmlvX3NyYywKIAkJcmV0dXJuIE5VTEw7CS8qIEVOT01FTSAqLwogCiAJYmlvLT5iaV9iZGV2ID0g YmlvX3NyYy0+YmlfYmRldjsKLQliaW8tPmJpX3NlY3RvciA9IGJpb19zcmMtPmJpX3NlY3RvciAr IChvZmZzZXQgPj4gU0VDVE9SX1NISUZUKTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmlv X3NyYy0+YmlfaXRlci5iaV9zZWN0b3IgKworCQkob2Zmc2V0ID4+IFNFQ1RPUl9TSElGVCk7CiAJ YmlvLT5iaV9ydyA9IGJpb19zcmMtPmJpX3J3OwogCWJpby0+YmlfZmxhZ3MgfD0gMSA8PCBCSU9f Q0xPTkVEOwogCkBAIC0xMjM5LDggKzEyNDAsNyBAQCBzdGF0aWMgc3RydWN0IGJpbyAqYmlvX2Ns b25lX3JhbmdlKHN0cnVjdCBiaW8gKmJpb19zcmMsCiAJfQogCiAJYmlvLT5iaV92Y250ID0gdmNu dDsKLQliaW8tPmJpX3NpemUgPSBsZW47Ci0JYmlvLT5iaV9pZHggPSAwOworCWJpby0+YmlfaXRl ci5iaV9zaXplID0gbGVuOwogCiAJcmV0dXJuIGJpbzsKIH0KQEAgLTEyNzEsNyArMTI3MSw3IEBA IHN0YXRpYyBzdHJ1Y3QgYmlvICpiaW9fY2hhaW5fY2xvbmVfcmFuZ2Uoc3RydWN0IGJpbyAqKmJp b19zcmMsCiAKIAkvKiBCdWlsZCB1cCBhIGNoYWluIG9mIGNsb25lIGJpb3MgdXAgdG8gdGhlIGxp bWl0ICovCiAKLQlpZiAoIWJpIHx8IG9mZiA+PSBiaS0+Ymlfc2l6ZSB8fCAhbGVuKQorCWlmICgh YmkgfHwgb2ZmID49IGJpLT5iaV9pdGVyLmJpX3NpemUgfHwgIWxlbikKIAkJcmV0dXJuIE5VTEw7 CQkvKiBOb3RoaW5nIHRvIGNsb25lICovCiAKIAllbmQgPSAmY2hhaW47CkBAIC0xMjgzLDcgKzEy ODMsNyBAQCBzdGF0aWMgc3RydWN0IGJpbyAqYmlvX2NoYWluX2Nsb25lX3JhbmdlKHN0cnVjdCBi aW8gKipiaW9fc3JjLAogCQkJcmJkX3dhcm4oTlVMTCwgImJpb19jaGFpbiBleGhhdXN0ZWQgd2l0 aCAldSBsZWZ0IiwgbGVuKTsKIAkJCWdvdG8gb3V0X2VycjsJLyogRUlOVkFMOyByYW4gb3V0IG9m IGJpbydzICovCiAJCX0KLQkJYmlfc2l6ZSA9IG1pbl90KHVuc2lnbmVkIGludCwgYmktPmJpX3Np emUgLSBvZmYsIGxlbik7CisJCWJpX3NpemUgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGJpLT5iaV9p dGVyLmJpX3NpemUgLSBvZmYsIGxlbik7CiAJCWJpbyA9IGJpb19jbG9uZV9yYW5nZShiaSwgb2Zm LCBiaV9zaXplLCBnZnBtYXNrKTsKIAkJaWYgKCFiaW8pCiAJCQlnb3RvIG91dF9lcnI7CS8qIEVO T01FTSAqLwpAQCAtMTI5Miw3ICsxMjkyLDcgQEAgc3RhdGljIHN0cnVjdCBiaW8gKmJpb19jaGFp bl9jbG9uZV9yYW5nZShzdHJ1Y3QgYmlvICoqYmlvX3NyYywKIAkJZW5kID0gJmJpby0+YmlfbmV4 dDsKIAogCQlvZmYgKz0gYmlfc2l6ZTsKLQkJaWYgKG9mZiA9PSBiaS0+Ymlfc2l6ZSkgeworCQlp ZiAob2ZmID09IGJpLT5iaV9pdGVyLmJpX3NpemUpIHsKIAkJCWJpID0gYmktPmJpX25leHQ7CiAJ CQlvZmYgPSAwOwogCQl9CkBAIC0yMTg2LDcgKzIxODYsOCBAQCBzdGF0aWMgaW50IHJiZF9pbWdf cmVxdWVzdF9maWxsKHN0cnVjdCByYmRfaW1nX3JlcXVlc3QgKmltZ19yZXF1ZXN0LAogCiAJaWYg KHR5cGUgPT0gT0JKX1JFUVVFU1RfQklPKSB7CiAJCWJpb19saXN0ID0gZGF0YV9kZXNjOwotCQly YmRfYXNzZXJ0KGltZ19vZmZzZXQgPT0gYmlvX2xpc3QtPmJpX3NlY3RvciA8PCBTRUNUT1JfU0hJ RlQpOworCQlyYmRfYXNzZXJ0KGltZ19vZmZzZXQgPT0KKwkJCSAgIGJpb19saXN0LT5iaV9pdGVy LmJpX3NlY3RvciA8PCBTRUNUT1JfU0hJRlQpOwogCX0gZWxzZSB7CiAJCXJiZF9hc3NlcnQodHlw ZSA9PSBPQkpfUkVRVUVTVF9QQUdFUyk7CiAJCXBhZ2VzID0gZGF0YV9kZXNjOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ibG9jay9yc3h4L2Rldi5jIGIvZHJpdmVycy9ibG9jay9yc3h4L2Rldi5jCmlu ZGV4IDIyODRmNWQuLjI4MzlkMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svcnN4eC9kZXYu YworKysgYi9kcml2ZXJzL2Jsb2NrL3JzeHgvZGV2LmMKQEAgLTE3NCw3ICsxNzQsNyBAQCBzdGF0 aWMgdm9pZCByc3h4X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0 IGJpbyAqYmlvKQogCWlmICghY2FyZCkKIAkJZ290byByZXFfZXJyOwogCi0JaWYgKGJpby0+Ymlf c2VjdG9yICsgKGJpby0+Ymlfc2l6ZSA+PiA5KSA+IGdldF9jYXBhY2l0eShjYXJkLT5nZW5kaXNr KSkKKwlpZiAoYmlvX2VuZF9zZWN0b3IoYmlvKSA+IGdldF9jYXBhY2l0eShjYXJkLT5nZW5kaXNr KSkKIAkJZ290byByZXFfZXJyOwogCiAJaWYgKHVubGlrZWx5KGNhcmQtPmhhbHQpKSB7CkBAIC0x ODcsNyArMTg3LDcgQEAgc3RhdGljIHZvaWQgcnN4eF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVl c3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkJZ290byByZXFfZXJyOwogCX0KIAotCWlm IChiaW8tPmJpX3NpemUgPT0gMCkgeworCWlmIChiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9PSAwKSB7 CiAJCWRldl9lcnIoQ0FSRF9UT19ERVYoY2FyZCksICJzaXplIHplcm8gQklPIVxuIik7CiAJCWdv dG8gcmVxX2VycjsKIAl9CkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIHZvaWQgcnN4eF9tYWtl X3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAogCWRl dl9kYmcoQ0FSRF9UT19ERVYoY2FyZCksICJCSU9bJWNdOiBtZXRhOiAlcCBhZGRyODogeCVsbHgg c2l6ZTogJWRcbiIsCiAJCSBiaW9fZGF0YV9kaXIoYmlvKSA/ICdXJyA6ICdSJywgYmlvX21ldGEs Ci0JCSAodTY0KWJpby0+Ymlfc2VjdG9yIDw8IDksIGJpby0+Ymlfc2l6ZSk7CisJCSAodTY0KWJp by0+YmlfaXRlci5iaV9zZWN0b3IgPDwgOSwgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCiAJc3Qg PSByc3h4X2RtYV9xdWV1ZV9iaW8oY2FyZCwgYmlvLCAmYmlvX21ldGEtPnBlbmRpbmdfZG1hcywK IAkJCQkgICAgYmlvX2RtYV9kb25lX2NiLCBiaW9fbWV0YSk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2Jsb2NrL3JzeHgvZG1hLmMgYi9kcml2ZXJzL2Jsb2NrL3JzeHgvZG1hLmMKaW5kZXggZmM4OGJh My4uMzcxNjYzMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9yc3h4L2RtYS5jCisrKyBiL2Ry aXZlcnMvYmxvY2svcnN4eC9kbWEuYwpAQCAtNjk2LDcgKzY5Niw3IEBAIGludCByc3h4X2RtYV9x dWV1ZV9iaW8oc3RydWN0IHJzeHhfY2FyZGluZm8gKmNhcmQsCiAJaW50IHN0OwogCWludCBpOwog Ci0JYWRkcjggPSBiaW8tPmJpX3NlY3RvciA8PCA5OyAvKiBzZWN0b3JzIGFyZSA1MTIgYnl0ZXMg Ki8KKwlhZGRyOCA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPDwgOTsgLyogc2VjdG9ycyBhcmUg NTEyIGJ5dGVzICovCiAJYXRvbWljX3NldChuX2RtYXMsIDApOwogCiAJZm9yIChpID0gMDsgaSA8 IGNhcmQtPm5fdGFyZ2V0czsgaSsrKSB7CkBAIC03MDUsNyArNzA1LDcgQEAgaW50IHJzeHhfZG1h X3F1ZXVlX2JpbyhzdHJ1Y3QgcnN4eF9jYXJkaW5mbyAqY2FyZCwKIAl9CiAKIAlpZiAoYmlvLT5i aV9ydyAmIFJFUV9ESVNDQVJEKSB7Ci0JCWJ2X2xlbiA9IGJpby0+Ymlfc2l6ZTsKKwkJYnZfbGVu ID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAkJd2hpbGUgKGJ2X2xlbiA+IDApIHsKIAkJCXRn dCAgID0gcnN4eF9nZXRfZG1hX3RndChjYXJkLCBhZGRyOCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2Jsb2NrL3VtZW0uYyBiL2RyaXZlcnMvYmxvY2svdW1lbS5jCmluZGV4IGFkNzA4NjguLmRhYjRm MWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svdW1lbS5jCisrKyBiL2RyaXZlcnMvYmxvY2sv dW1lbS5jCkBAIC0zNTIsOCArMzUyLDggQEAgc3RhdGljIGludCBhZGRfYmlvKHN0cnVjdCBjYXJk aW5mbyAqY2FyZCkKIAliaW8gPSBjYXJkLT5jdXJyZW50YmlvOwogCWlmICghYmlvICYmIGNhcmQt PmJpbykgewogCQljYXJkLT5jdXJyZW50YmlvID0gY2FyZC0+YmlvOwotCQljYXJkLT5jdXJyZW50 X2lkeCA9IGNhcmQtPmJpby0+YmlfaWR4OwotCQljYXJkLT5jdXJyZW50X3NlY3RvciA9IGNhcmQt PmJpby0+Ymlfc2VjdG9yOworCQljYXJkLT5jdXJyZW50X2lkeCA9IGNhcmQtPmJpby0+YmlfaXRl ci5iaV9pZHg7CisJCWNhcmQtPmN1cnJlbnRfc2VjdG9yID0gY2FyZC0+YmlvLT5iaV9pdGVyLmJp X3NlY3RvcjsKIAkJY2FyZC0+YmlvID0gY2FyZC0+YmlvLT5iaV9uZXh0OwogCQlpZiAoY2FyZC0+ YmlvID09IE5VTEwpCiAJCQljYXJkLT5iaW90YWlsID0gJmNhcmQtPmJpbzsKQEAgLTQ1MSw3ICs0 NTEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhZ2UodW5zaWduZWQgbG9uZyBkYXRhKQogCQlp ZiAocGFnZS0+aWR4ID49IGJpby0+YmlfdmNudCkgewogCQkJcGFnZS0+YmlvID0gYmlvLT5iaV9u ZXh0OwogCQkJaWYgKHBhZ2UtPmJpbykKLQkJCQlwYWdlLT5pZHggPSBwYWdlLT5iaW8tPmJpX2lk eDsKKwkJCQlwYWdlLT5pZHggPSBwYWdlLT5iaW8tPmJpX2l0ZXIuYmlfaWR4OwogCQl9CiAKIAkJ cGNpX3VubWFwX3BhZ2UoY2FyZC0+ZGV2LCBkZXNjLT5kYXRhX2RtYV9oYW5kbGUsCkBAIC01MzIs NyArNTMyLDggQEAgc3RhdGljIHZvaWQgbW1fbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8pCiB7CiAJc3RydWN0IGNhcmRpbmZvICpjYXJkID0gcS0+ cXVldWVkYXRhOwogCXByX2RlYnVnKCJtbV9tYWtlX3JlcXVlc3QgJWxsdSAldVxuIiwKLQkJICh1 bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IsIGJpby0+Ymlfc2l6ZSk7CisJCSAodW5z aWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCSBiaW8tPmJpX2l0ZXIu Ymlfc2l6ZSk7CiAKIAlzcGluX2xvY2tfaXJxKCZjYXJkLT5sb2NrKTsKIAkqY2FyZC0+YmlvdGFp bCA9IGJpbzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5j IGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKaW5kZXggNjYyMGI3My4uNGI5 N2I4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKKysr IGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKQEAgLTEyNTcsNyArMTI1Nyw3 IEBAIHN0YXRpYyBpbnQgZGlzcGF0Y2hfcndfYmxvY2tfaW8oc3RydWN0IHhlbl9ibGtpZiAqYmxr aWYsCiAJCQliaW8tPmJpX2JkZXYgICAgPSBwcmVxLmJkZXY7CiAJCQliaW8tPmJpX3ByaXZhdGUg PSBwZW5kaW5nX3JlcTsKIAkJCWJpby0+YmlfZW5kX2lvICA9IGVuZF9ibG9ja19pb19vcDsKLQkJ CWJpby0+Ymlfc2VjdG9yICA9IHByZXEuc2VjdG9yX251bWJlcjsKKwkJCWJpby0+YmlfaXRlci5i aV9zZWN0b3IgID0gcHJlcS5zZWN0b3JfbnVtYmVyOwogCQl9CiAKIAkJcHJlcS5zZWN0b3JfbnVt YmVyICs9IHNlZ1tpXS5uc2VjOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94ZW4tYmxrZnJv bnQuYyBiL2RyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMKaW5kZXggNDMyZGIxYi4uODBlODYz MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYworKysgYi9kcml2ZXJz L2Jsb2NrL3hlbi1ibGtmcm9udC5jCkBAIC0xNTQ3LDcgKzE1NDcsNyBAQCBzdGF0aWMgaW50IGJs a2lmX3JlY292ZXIoc3RydWN0IGJsa2Zyb250X2luZm8gKmluZm8pCiAJCQlmb3IgKGkgPSAwOyBp IDwgcGVuZGluZzsgaSsrKSB7CiAJCQkJb2Zmc2V0ID0gKGkgKiBzZWdzICogUEFHRV9TSVpFKSA+ PiA5OwogCQkJCXNpemUgPSBtaW4oKHVuc2lnbmVkIGludCkoc2VncyAqIFBBR0VfU0laRSkgPj4g OSwKLQkJCQkJICAgKHVuc2lnbmVkIGludCkoYmlvLT5iaV9zaXplID4+IDkpIC0gb2Zmc2V0KTsK KwkJCQkJICAgKHVuc2lnbmVkIGludCliaW9fc2VjdG9ycyhiaW8pIC0gb2Zmc2V0KTsKIAkJCQlj bG9uZWRfYmlvID0gYmlvX2Nsb25lKGJpbywgR0ZQX05PSU8pOwogCQkJCUJVR19PTihjbG9uZWRf YmlvID09IE5VTEwpOwogCQkJCWJpb190cmltKGNsb25lZF9iaW8sIG9mZnNldCwgc2l6ZSk7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL21kL2JjYWNoZS9idHJlZS5jIGIvZHJpdmVycy9tZC9iY2FjaGUv YnRyZWUuYwppbmRleCA1ZTI3NjVhLi4wMzhhNmQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2Jj YWNoZS9idHJlZS5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hlL2J0cmVlLmMKQEAgLTI5OSw3ICsy OTksNyBAQCB2b2lkIGJjaF9idHJlZV9ub2RlX3JlYWQoc3RydWN0IGJ0cmVlICpiKQogCiAJYmlv ID0gYmNoX2JiaW9fYWxsb2MoYi0+Yyk7CiAJYmlvLT5iaV9ydwk9IFJFUV9NRVRBfFJFQURfU1lO QzsKLQliaW8tPmJpX3NpemUJPSBLRVlfU0laRSgmYi0+a2V5KSA8PCA5OworCWJpby0+YmlfaXRl ci5iaV9zaXplID0gS0VZX1NJWkUoJmItPmtleSkgPDwgOTsKIAliaW8tPmJpX2VuZF9pbwk9IGJ0 cmVlX25vZGVfcmVhZF9lbmRpbzsKIAliaW8tPmJpX3ByaXZhdGUJPSAmY2w7CiAKQEAgLTM5NSw3 ICszOTUsNyBAQCBzdGF0aWMgdm9pZCBkb19idHJlZV9ub2RlX3dyaXRlKHN0cnVjdCBidHJlZSAq YikKIAliLT5iaW8tPmJpX2VuZF9pbwk9IGJ0cmVlX25vZGVfd3JpdGVfZW5kaW87CiAJYi0+Ymlv LT5iaV9wcml2YXRlCT0gY2w7CiAJYi0+YmlvLT5iaV9ydwkJPSBSRVFfTUVUQXxXUklURV9TWU5D fFJFUV9GVUE7Ci0JYi0+YmlvLT5iaV9zaXplCQk9IHNldF9ibG9ja3MoaSwgYi0+YykgKiBibG9j a19ieXRlcyhiLT5jKTsKKwliLT5iaW8tPmJpX2l0ZXIuYmlfc2l6ZQk9IHNldF9ibG9ja3MoaSwg Yi0+YykgKiBibG9ja19ieXRlcyhiLT5jKTsKIAliY2hfYmlvX21hcChiLT5iaW8sIGkpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL2RlYnVnLmMgYi9kcml2ZXJzL21kL2Jj YWNoZS9kZWJ1Zy5jCmluZGV4IDI2NGZjZmIuLjkyYjNmZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWQvYmNhY2hlL2RlYnVnLmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvZGVidWcuYwpAQCAtMTk1 LDcgKzE5NSw3IEBAIHZvaWQgYmNoX2RhdGFfdmVyaWZ5KHN0cnVjdCBjYWNoZWRfZGV2ICpkYywg c3RydWN0IGJpbyAqYmlvKQogCQkJCSBkYy0+ZGlzay5jLAogCQkJCSAidmVyaWZ5IGZhaWxlZCBh dCBkZXYgJXMgc2VjdG9yICVsbHUiLAogCQkJCSBiZGV2bmFtZShkYy0+YmRldiwgbmFtZSksCi0J CQkJICh1aW50NjRfdCkgYmlvLT5iaV9zZWN0b3IpOworCQkJCSAodWludDY0X3QpIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IpOwogCiAJCWt1bm1hcF9hdG9taWMocDEpOwogCX0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWQvYmNhY2hlL2lvLmMgYi9kcml2ZXJzL21kL2JjYWNoZS9pby5jCmluZGV4IDkw NTY2MzIuLmNjNGJhMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvYmNhY2hlL2lvLmMKKysrIGIv ZHJpdmVycy9tZC9iY2FjaGUvaW8uYwpAQCAtMjEsMTggKzIxLDE4IEBAIHN0YXRpYyB2b2lkIGJj aF9iaV9pZHhfaGFja19lbmRpbyhzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnJvcikKIAogc3RhdGlj IHZvaWQgYmNoX2dlbmVyaWNfbWFrZV9yZXF1ZXN0X2hhY2soc3RydWN0IGJpbyAqYmlvKQogewot CWlmIChiaW8tPmJpX2lkeCkgeworCWlmIChiaW8tPmJpX2l0ZXIuYmlfaWR4KSB7CiAJCXN0cnVj dCBiaW8gKmNsb25lID0gYmlvX2FsbG9jKEdGUF9OT0lPLCBiaW9fc2VnbWVudHMoYmlvKSk7CiAK IAkJbWVtY3B5KGNsb25lLT5iaV9pb192ZWMsCiAJCSAgICAgICBiaW9faW92ZWMoYmlvKSwKIAkJ ICAgICAgIGJpb19zZWdtZW50cyhiaW8pICogc2l6ZW9mKHN0cnVjdCBiaW9fdmVjKSk7CiAKLQkJ Y2xvbmUtPmJpX3NlY3Rvcgk9IGJpby0+Ymlfc2VjdG9yOworCQljbG9uZS0+YmlfaXRlci5iaV9z ZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCQljbG9uZS0+YmlfYmRldgkJPSBiaW8t PmJpX2JkZXY7CiAJCWNsb25lLT5iaV9ydwkJPSBiaW8tPmJpX3J3OwogCQljbG9uZS0+YmlfdmNu dAkJPSBiaW9fc2VnbWVudHMoYmlvKTsKLQkJY2xvbmUtPmJpX3NpemUJCT0gYmlvLT5iaV9zaXpl OworCQljbG9uZS0+YmlfaXRlci5iaV9zaXplCT0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAkJ Y2xvbmUtPmJpX3ByaXZhdGUJPSBiaW87CiAJCWNsb25lLT5iaV9lbmRfaW8JPSBiY2hfYmlfaWR4 X2hhY2tfZW5kaW87CkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyB2b2lkIGJjaF9nZW5lcmljX21h a2VfcmVxdWVzdF9oYWNrKHN0cnVjdCBiaW8gKmJpbykKIHN0cnVjdCBiaW8gKmJjaF9iaW9fc3Bs aXQoc3RydWN0IGJpbyAqYmlvLCBpbnQgc2VjdG9ycywKIAkJCSAgZ2ZwX3QgZ2ZwLCBzdHJ1Y3Qg YmlvX3NldCAqYnMpCiB7Ci0JdW5zaWduZWQgaWR4ID0gYmlvLT5iaV9pZHgsIHZjbnQgPSAwLCBu Ynl0ZXMgPSBzZWN0b3JzIDw8IDk7CisJdW5zaWduZWQgaWR4ID0gYmlvLT5iaV9pdGVyLmJpX2lk eCwgdmNudCA9IDAsIG5ieXRlcyA9IHNlY3RvcnMgPDwgOTsKIAlzdHJ1Y3QgYmlvX3ZlYyAqYnY7 CiAJc3RydWN0IGJpbyAqcmV0ID0gTlVMTDsKIApAQCAtOTAsNyArOTAsNyBAQCBzdHJ1Y3QgYmlv ICpiY2hfYmlvX3NwbGl0KHN0cnVjdCBiaW8gKmJpbywgaW50IHNlY3RvcnMsCiAJfQogCiAJYmlv X2Zvcl9lYWNoX3NlZ21lbnQoYnYsIGJpbywgaWR4KSB7Ci0JCXZjbnQgPSBpZHggLSBiaW8tPmJp X2lkeDsKKwkJdmNudCA9IGlkeCAtIGJpby0+YmlfaXRlci5iaV9pZHg7CiAKIAkJaWYgKCFuYnl0 ZXMpIHsKIAkJCXJldCA9IGJpb19hbGxvY19iaW9zZXQoZ2ZwLCB2Y250LCBicyk7CkBAIC0xMTks MTUgKzExOSwxNSBAQCBzdHJ1Y3QgYmlvICpiY2hfYmlvX3NwbGl0KHN0cnVjdCBiaW8gKmJpbywg aW50IHNlY3RvcnMsCiAJfQogb3V0OgogCXJldC0+YmlfYmRldgk9IGJpby0+YmlfYmRldjsKLQly ZXQtPmJpX3NlY3Rvcgk9IGJpby0+Ymlfc2VjdG9yOwotCXJldC0+Ymlfc2l6ZQk9IHNlY3RvcnMg PDwgOTsKKwlyZXQtPmJpX2l0ZXIuYmlfc2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsK KwlyZXQtPmJpX2l0ZXIuYmlfc2l6ZQk9IHNlY3RvcnMgPDwgOTsKIAlyZXQtPmJpX3J3CT0gYmlv LT5iaV9ydzsKIAlyZXQtPmJpX3ZjbnQJPSB2Y250OwogCXJldC0+YmlfbWF4X3ZlY3MgPSB2Y250 OwogCi0JYmlvLT5iaV9zZWN0b3IJKz0gc2VjdG9yczsKLQliaW8tPmJpX3NpemUJLT0gc2VjdG9y cyA8PCA5OwotCWJpby0+YmlfaWR4CSA9IGlkeDsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCSs9 IHNlY3RvcnM7CisJYmlvLT5iaV9pdGVyLmJpX3NpemUJLT0gc2VjdG9ycyA8PCA5OworCWJpby0+ YmlfaXRlci5iaV9pZHgJID0gaWR4OwogCiAJaWYgKGJpb19pbnRlZ3JpdHkoYmlvKSkgewogCQlp ZiAoYmlvX2ludGVncml0eV9jbG9uZShyZXQsIGJpbywgZ2ZwKSkgewpAQCAtMTYyLDcgKzE2Miw3 IEBAIHN0YXRpYyB1bnNpZ25lZCBiY2hfYmlvX21heF9zZWN0b3JzKHN0cnVjdCBiaW8gKmJpbykK IAkJYmlvX2Zvcl9lYWNoX3NlZ21lbnQoYnYsIGJpbywgaSkgewogCQkJc3RydWN0IGJ2ZWNfbWVy Z2VfZGF0YSBidm0gPSB7CiAJCQkJLmJpX2JkZXYJPSBiaW8tPmJpX2JkZXYsCi0JCQkJLmJpX3Nl Y3Rvcgk9IGJpby0+Ymlfc2VjdG9yLAorCQkJCS5iaV9zZWN0b3IJPSBiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yLAogCQkJCS5iaV9zaXplCT0gcmV0IDw8IDksCiAJCQkJLmJpX3J3CQk9IGJpby0+Ymlf cncsCiAJCQl9OwpAQCAtMjcyLDggKzI3Miw4IEBAIHZvaWQgX19iY2hfc3VibWl0X2JiaW8oc3Ry dWN0IGJpbyAqYmlvLCBzdHJ1Y3QgY2FjaGVfc2V0ICpjKQogewogCXN0cnVjdCBiYmlvICpiID0g Y29udGFpbmVyX29mKGJpbywgc3RydWN0IGJiaW8sIGJpbyk7CiAKLQliaW8tPmJpX3NlY3Rvcgk9 IFBUUl9PRkZTRVQoJmItPmtleSwgMCk7Ci0JYmlvLT5iaV9iZGV2CT0gUFRSX0NBQ0hFKGMsICZi LT5rZXksIDApLT5iZGV2OworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IJPSBQVFJfT0ZGU0VUKCZi LT5rZXksIDApOworCWJpby0+YmlfYmRldgkJPSBQVFJfQ0FDSEUoYywgJmItPmtleSwgMCktPmJk ZXY7CiAKIAliLT5zdWJtaXRfdGltZV91cyA9IGxvY2FsX2Nsb2NrX3VzKCk7CiAJY2xvc3VyZV9i aW9fc3VibWl0KGJpbywgYmlvLT5iaV9wcml2YXRlLCBQVFJfQ0FDSEUoYywgJmItPmtleSwgMCkp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvam91cm5hbC5jIGIvZHJpdmVycy9tZC9i Y2FjaGUvam91cm5hbC5jCmluZGV4IGVjZGFhNjcuLjdlYWZkZjAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbWQvYmNhY2hlL2pvdXJuYWwuYworKysgYi9kcml2ZXJzL21kL2JjYWNoZS9qb3VybmFsLmMK QEAgLTUxLDEwICs1MSwxMCBAQCByZXJlYWQ6CQlsZWZ0ID0gY2EtPnNiLmJ1Y2tldF9zaXplIC0g b2Zmc2V0OwogCQlsZW4gPSBtaW5fdCh1bnNpZ25lZCwgbGVmdCwgUEFHRV9TRUNUT1JTICogOCk7 CiAKIAkJYmlvX3Jlc2V0KGJpbyk7Ci0JCWJpby0+Ymlfc2VjdG9yCT0gYnVja2V0ICsgb2Zmc2V0 OworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gYnVja2V0ICsgb2Zmc2V0OwogCQliaW8tPmJp X2JkZXYJPSBjYS0+YmRldjsKIAkJYmlvLT5iaV9ydwk9IFJFQUQ7Ci0JCWJpby0+Ymlfc2l6ZQk9 IGxlbiA8PCA5OworCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZQk9IGxlbiA8PCA5OwogCiAJCWJpby0+ YmlfZW5kX2lvCT0gam91cm5hbF9yZWFkX2VuZGlvOwogCQliaW8tPmJpX3ByaXZhdGUgPSAmY2w7 CkBAIC00MzcsMTMgKzQzNywxMyBAQCBzdGF0aWMgdm9pZCBkb19qb3VybmFsX2Rpc2NhcmQoc3Ry dWN0IGNhY2hlICpjYSkKIAkJYXRvbWljX3NldCgmamEtPmRpc2NhcmRfaW5fZmxpZ2h0LCBESVND QVJEX0lOX0ZMSUdIVCk7CiAKIAkJYmlvX2luaXQoYmlvKTsKLQkJYmlvLT5iaV9zZWN0b3IJCT0g YnVja2V0X3RvX3NlY3RvcihjYS0+c2V0LAorCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gYnVj a2V0X3RvX3NlY3RvcihjYS0+c2V0LAogCQkJCQkJY2EtPnNiLmRbamEtPmRpc2NhcmRfaWR4XSk7 CiAJCWJpby0+YmlfYmRldgkJPSBjYS0+YmRldjsKIAkJYmlvLT5iaV9ydwkJPSBSRVFfV1JJVEV8 UkVRX0RJU0NBUkQ7CiAJCWJpby0+YmlfbWF4X3ZlY3MJPSAxOwogCQliaW8tPmJpX2lvX3ZlYwkJ PSBiaW8tPmJpX2lubGluZV92ZWNzOwotCQliaW8tPmJpX3NpemUJCT0gYnVja2V0X2J5dGVzKGNh KTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NpemUJPSBidWNrZXRfYnl0ZXMoY2EpOwogCQliaW8tPmJp X2VuZF9pbwkJPSBqb3VybmFsX2Rpc2NhcmRfZW5kaW87CiAKIAkJY2xvc3VyZV9nZXQoJmNhLT5z ZXQtPmNsKTsKQEAgLTYwOCwxMCArNjA4LDEwIEBAIHN0YXRpYyB2b2lkIGpvdXJuYWxfd3JpdGVf dW5sb2NrZWQoc3RydWN0IGNsb3N1cmUgKmNsKQogCQlhdG9taWNfbG9uZ19hZGQoc2VjdG9ycywg JmNhLT5tZXRhX3NlY3RvcnNfd3JpdHRlbik7CiAKIAkJYmlvX3Jlc2V0KGJpbyk7Ci0JCWJpby0+ Ymlfc2VjdG9yCT0gUFRSX09GRlNFVChrLCBpKTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcgk9 IFBUUl9PRkZTRVQoaywgaSk7CiAJCWJpby0+YmlfYmRldgk9IGNhLT5iZGV2OwogCQliaW8tPmJp X3J3CT0gUkVRX1dSSVRFfFJFUV9TWU5DfFJFUV9NRVRBfFJFUV9GTFVTSHxSRVFfRlVBOwotCQli aW8tPmJpX3NpemUJPSBzZWN0b3JzIDw8IDk7CisJCWJpby0+YmlfaXRlci5iaV9zaXplID0gc2Vj dG9ycyA8PCA5OwogCiAJCWJpby0+YmlfZW5kX2lvCT0gam91cm5hbF93cml0ZV9lbmRpbzsKIAkJ YmlvLT5iaV9wcml2YXRlID0gdzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL21vdmlu Z2djLmMgYi9kcml2ZXJzL21kL2JjYWNoZS9tb3ZpbmdnYy5jCmluZGV4IDdjMTI3NWUuLjU4MWY5 NWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvYmNhY2hlL21vdmluZ2djLmMKKysrIGIvZHJpdmVy cy9tZC9iY2FjaGUvbW92aW5nZ2MuYwpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgdm9pZCBtb3Zp bmdfaW5pdChzdHJ1Y3QgbW92aW5nX2lvICppbykKIAliaW9fZ2V0KGJpbyk7CiAJYmlvX3NldF9w cmlvKGJpbywgSU9QUklPX1BSSU9fVkFMVUUoSU9QUklPX0NMQVNTX0lETEUsIDApKTsKIAotCWJp by0+Ymlfc2l6ZQkJPSBLRVlfU0laRSgmaW8tPnctPmtleSkgPDwgOTsKKwliaW8tPmJpX2l0ZXIu Ymlfc2l6ZQk9IEtFWV9TSVpFKCZpby0+dy0+a2V5KSA8PCA5OwogCWJpby0+YmlfbWF4X3ZlY3MJ PSBESVZfUk9VTkRfVVAoS0VZX1NJWkUoJmlvLT53LT5rZXkpLAogCQkJCQkgICAgICAgUEFHRV9T RUNUT1JTKTsKIAliaW8tPmJpX3ByaXZhdGUJCT0gJmlvLT5jbDsKQEAgLTk4LDcgKzk4LDcgQEAg c3RhdGljIHZvaWQgd3JpdGVfbW92aW5nKHN0cnVjdCBjbG9zdXJlICpjbCkKIAlpZiAoIW9wLT5l cnJvcikgewogCQltb3ZpbmdfaW5pdChpbyk7CiAKLQkJaW8tPmJpby5iaW8uYmlfc2VjdG9yID0g S0VZX1NUQVJUKCZpby0+dy0+a2V5KTsKKwkJaW8tPmJpby5iaW8uYmlfaXRlci5iaV9zZWN0b3Ig PSBLRVlfU1RBUlQoJmlvLT53LT5rZXkpOwogCQlvcC0+d3JpdGVfcHJpbwkJPSAxOwogCQlvcC0+ YmlvCQkJPSAmaW8tPmJpby5iaW87CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL3Jl cXVlc3QuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYwppbmRleCA3OGJhYjQxLi40N2E5 YmJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0LmMKKysrIGIvZHJpdmVy cy9tZC9iY2FjaGUvcmVxdWVzdC5jCkBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIHZvaWQgYmNo X2RhdGFfaW52YWxpZGF0ZShzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJc3RydWN0IGJpbyAqYmlvID0g b3AtPmJpbzsKIAogCXByX2RlYnVnKCJpbnZhbGlkYXRpbmcgJWkgc2VjdG9ycyBmcm9tICVsbHUi LAotCQkgYmlvX3NlY3RvcnMoYmlvKSwgKHVpbnQ2NF90KSBiaW8tPmJpX3NlY3Rvcik7CisJCSBi aW9fc2VjdG9ycyhiaW8pLCAodWludDY0X3QpIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCiAJ d2hpbGUgKGJpb19zZWN0b3JzKGJpbykpIHsKIAkJdW5zaWduZWQgc2VjdG9ycyA9IG1pbihiaW9f c2VjdG9ycyhiaW8pLApAQCAtMjcwLDExICsyNzAsMTEgQEAgc3RhdGljIHZvaWQgYmNoX2RhdGFf aW52YWxpZGF0ZShzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJCWlmIChiY2hfa2V5bGlzdF9yZWFsbG9j KCZvcC0+aW5zZXJ0X2tleXMsIDAsIG9wLT5jKSkKIAkJCWdvdG8gb3V0OwogCi0JCWJpby0+Ymlf c2VjdG9yCSs9IHNlY3RvcnM7Ci0JCWJpby0+Ymlfc2l6ZQktPSBzZWN0b3JzIDw8IDk7CisJCWJp by0+YmlfaXRlci5iaV9zZWN0b3IJKz0gc2VjdG9yczsKKwkJYmlvLT5iaV9pdGVyLmJpX3NpemUJ LT0gc2VjdG9ycyA8PCA5OwogCiAJCWJjaF9rZXlsaXN0X2FkZCgmb3AtPmluc2VydF9rZXlzLAot CQkJCSZLRVkob3AtPmlub2RlLCBiaW8tPmJpX3NlY3Rvciwgc2VjdG9ycykpOworCQkJCSZLRVko b3AtPmlub2RlLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBzZWN0b3JzKSk7CiAJfQogCiAJb3At Pmluc2VydF9kYXRhX2RvbmUgPSB0cnVlOwpAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyB2b2lk IGJjaF9kYXRhX2luc2VydF9zdGFydChzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJCWsgPSBvcC0+aW5z ZXJ0X2tleXMudG9wOwogCQlia2V5X2luaXQoayk7CiAJCVNFVF9LRVlfSU5PREUoaywgb3AtPmlu b2RlKTsKLQkJU0VUX0tFWV9PRkZTRVQoaywgYmlvLT5iaV9zZWN0b3IpOworCQlTRVRfS0VZX09G RlNFVChrLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCQlpZiAoIWJjaF9hbGxvY19zZWN0 b3JzKG9wLT5jLCBrLCBiaW9fc2VjdG9ycyhiaW8pLAogCQkJCSAgICAgICBvcC0+d3JpdGVfcG9p bnQsIG9wLT53cml0ZV9wcmlvLApAQCAtNTIyLDcgKzUyMiw3IEBAIHN0YXRpYyBib29sIGNoZWNr X3Nob3VsZF9ieXBhc3Moc3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3QgYmlvICpiaW8pCiAJ ICAgICAoYmlvLT5iaV9ydyAmIFJFUV9XUklURSkpKQogCQlnb3RvIHNraXA7CiAKLQlpZiAoYmlv LT5iaV9zZWN0b3IgJiAoYy0+c2IuYmxvY2tfc2l6ZSAtIDEpIHx8CisJaWYgKGJpby0+YmlfaXRl ci5iaV9zZWN0b3IgJiAoYy0+c2IuYmxvY2tfc2l6ZSAtIDEpIHx8CiAJICAgIGJpb19zZWN0b3Jz KGJpbykgJiAoYy0+c2IuYmxvY2tfc2l6ZSAtIDEpKSB7CiAJCXByX2RlYnVnKCJza2lwcGluZyB1 bmFsaWduZWQgaW8iKTsKIAkJZ290byBza2lwOwpAQCAtNTQ2LDggKzU0Niw4IEBAIHN0YXRpYyBi b29sIGNoZWNrX3Nob3VsZF9ieXBhc3Moc3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3QgYmlv ICpiaW8pCiAKIAlzcGluX2xvY2soJmRjLT5pb19sb2NrKTsKIAotCWhsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGksIGlvaGFzaChkYywgYmlvLT5iaV9zZWN0b3IpLCBoYXNoKQotCQlpZiAoaS0+bGFzdCA9 PSBiaW8tPmJpX3NlY3RvciAmJgorCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KGksIGlvaGFzaChkYywg YmlvLT5iaV9pdGVyLmJpX3NlY3RvciksIGhhc2gpCisJCWlmIChpLT5sYXN0ID09IGJpby0+Ymlf aXRlci5iaV9zZWN0b3IgJiYKIAkJICAgIHRpbWVfYmVmb3JlKGppZmZpZXMsIGktPmppZmZpZXMp KQogCQkJZ290byBmb3VuZDsKIApAQCAtNTU2LDggKzU1Niw4IEBAIHN0YXRpYyBib29sIGNoZWNr X3Nob3VsZF9ieXBhc3Moc3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3QgYmlvICpiaW8pCiAJ YWRkX3NlcXVlbnRpYWwodGFzayk7CiAJaS0+c2VxdWVudGlhbCA9IDA7CiBmb3VuZDoKLQlpZiAo aS0+c2VxdWVudGlhbCArIGJpby0+Ymlfc2l6ZSA+IGktPnNlcXVlbnRpYWwpCi0JCWktPnNlcXVl bnRpYWwJKz0gYmlvLT5iaV9zaXplOworCWlmIChpLT5zZXF1ZW50aWFsICsgYmlvLT5iaV9pdGVy LmJpX3NpemUgPiBpLT5zZXF1ZW50aWFsKQorCQlpLT5zZXF1ZW50aWFsCSs9IGJpby0+YmlfaXRl ci5iaV9zaXplOwogCiAJaS0+bGFzdAkJCSA9IGJpb19lbmRfc2VjdG9yKGJpbyk7CiAJaS0+amlm ZmllcwkJID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoNTAwMCk7CkBAIC02NTAsMTUgKzY1 MCwxNSBAQCBzdGF0aWMgaW50IGNhY2hlX2xvb2t1cF9mbihzdHJ1Y3QgYnRyZWVfb3AgKm9wLCBz dHJ1Y3QgYnRyZWUgKmIsIHN0cnVjdCBia2V5ICprKQogCXN0cnVjdCBia2V5ICpiaW9fa2V5Owog CXVuc2lnbmVkIHB0cjsKIAotCWlmIChia2V5X2NtcChrLCAmS0VZKHMtPmlvcC5pbm9kZSwgYmlv LT5iaV9zZWN0b3IsIDApKSA8PSAwKQorCWlmIChia2V5X2NtcChrLCAmS0VZKHMtPmlvcC5pbm9k ZSwgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgMCkpIDw9IDApCiAJCXJldHVybiBNQVBfQ09OVElO VUU7CiAKIAlpZiAoS0VZX0lOT0RFKGspICE9IHMtPmlvcC5pbm9kZSB8fAotCSAgICBLRVlfU1RB UlQoaykgPiBiaW8tPmJpX3NlY3RvcikgeworCSAgICBLRVlfU1RBUlQoaykgPiBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yKSB7CiAJCXVuc2lnbmVkIGJpb19zZWN0b3JzID0gYmlvX3NlY3RvcnMoYmlv KTsKIAkJdW5zaWduZWQgc2VjdG9ycyA9IEtFWV9JTk9ERShrKSA9PSBzLT5pb3AuaW5vZGUKIAkJ CT8gbWluX3QodWludDY0X3QsIElOVF9NQVgsCi0JCQkJS0VZX1NUQVJUKGspIC0gYmlvLT5iaV9z ZWN0b3IpCisJCQkJS0VZX1NUQVJUKGspIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcikKIAkJCTog SU5UX01BWDsKIAogCQlpbnQgcmV0ID0gcy0+ZC0+Y2FjaGVfbWlzcyhiLCBzLCBiaW8sIHNlY3Rv cnMpOwpAQCAtNjgxLDEzICs2ODEsMTMgQEAgc3RhdGljIGludCBjYWNoZV9sb29rdXBfZm4oc3Ry dWN0IGJ0cmVlX29wICpvcCwgc3RydWN0IGJ0cmVlICpiLCBzdHJ1Y3QgYmtleSAqaykKIAkJcy0+ cmVhZF9kaXJ0eV9kYXRhID0gdHJ1ZTsKIAogCW4gPSBiY2hfYmlvX3NwbGl0KGJpbywgbWluX3Qo dWludDY0X3QsIElOVF9NQVgsCi0JCQkJICAgICBLRVlfT0ZGU0VUKGspIC0gYmlvLT5iaV9zZWN0 b3IpLAorCQkJCSAgICAgS0VZX09GRlNFVChrKSAtIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpLAog CQkJICBHRlBfTk9JTywgcy0+ZC0+YmlvX3NwbGl0KTsKIAogCWJpb19rZXkgPSAmY29udGFpbmVy X29mKG4sIHN0cnVjdCBiYmlvLCBiaW8pLT5rZXk7CiAJYmNoX2JrZXlfY29weV9zaW5nbGVfcHRy KGJpb19rZXksIGssIHB0cik7CiAKLQliY2hfY3V0X2Zyb250KCZLRVkocy0+aW9wLmlub2RlLCBu LT5iaV9zZWN0b3IsIDApLCBiaW9fa2V5KTsKKwliY2hfY3V0X2Zyb250KCZLRVkocy0+aW9wLmlu b2RlLCBuLT5iaV9pdGVyLmJpX3NlY3RvciwgMCksIGJpb19rZXkpOwogCWJjaF9jdXRfYmFjaygm S0VZKHMtPmlvcC5pbm9kZSwgYmlvX2VuZF9zZWN0b3IobiksIDApLCBiaW9fa2V5KTsKIAogCW4t PmJpX2VuZF9pbwk9IGJjaF9jYWNoZV9yZWFkX2VuZGlvOwpAQCAtNzE0LDcgKzcxNCw3IEBAIHN0 YXRpYyB2b2lkIGNhY2hlX2xvb2t1cChzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJc3RydWN0IGJpbyAq YmlvID0gJnMtPmJpby5iaW87CiAKIAlpbnQgcmV0ID0gYmNoX2J0cmVlX21hcF9rZXlzKCZzLT5v cCwgcy0+aW9wLmMsCi0JCQkJICAgICAmS0VZKHMtPmlvcC5pbm9kZSwgYmlvLT5iaV9zZWN0b3Is IDApLAorCQkJCSAgICAgJktFWShzLT5pb3AuaW5vZGUsIGJpby0+YmlfaXRlci5iaV9zZWN0b3Is IDApLAogCQkJCSAgICAgY2FjaGVfbG9va3VwX2ZuLCBNQVBfRU5EX0tFWSk7CiAJaWYgKHJldCA9 PSAtRUFHQUlOKQogCQljb250aW51ZV9hdChjbCwgY2FjaGVfbG9va3VwLCBiY2FjaGVfd3EpOwpA QCAtODcyLDkgKzg3Miw5IEBAIHN0YXRpYyB2b2lkIGNhY2hlZF9kZXZfcmVhZF9kb25lKHN0cnVj dCBjbG9zdXJlICpjbCkKIAogCWlmIChzLT5pb3AuYmlvKSB7CiAJCWJpb19yZXNldChzLT5pb3Au YmlvKTsKLQkJcy0+aW9wLmJpby0+Ymlfc2VjdG9yID0gcy0+Y2FjaGVfbWlzcy0+Ymlfc2VjdG9y OworCQlzLT5pb3AuYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHMtPmNhY2hlX21pc3MtPmJpX2l0 ZXIuYmlfc2VjdG9yOwogCQlzLT5pb3AuYmlvLT5iaV9iZGV2ID0gcy0+Y2FjaGVfbWlzcy0+Ymlf YmRldjsKLQkJcy0+aW9wLmJpby0+Ymlfc2l6ZSA9IHMtPmluc2VydF9iaW9fc2VjdG9ycyA8PCA5 OworCQlzLT5pb3AuYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBzLT5pbnNlcnRfYmlvX3NlY3RvcnMg PDwgOTsKIAkJYmNoX2Jpb19tYXAocy0+aW9wLmJpbywgTlVMTCk7CiAKIAkJYmlvX2NvcHlfZGF0 YShzLT5jYWNoZV9taXNzLCBzLT5pb3AuYmlvKTsKQEAgLTkzNyw3ICs5MzcsNyBAQCBzdGF0aWMg aW50IGNhY2hlZF9kZXZfY2FjaGVfbWlzcyhzdHJ1Y3QgYnRyZWUgKmIsIHN0cnVjdCBzZWFyY2gg KnMsCiAJcy0+aW5zZXJ0X2Jpb19zZWN0b3JzID0gbWluKHNlY3RvcnMsIGJpb19zZWN0b3JzKGJp bykgKyByZWFkYSk7CiAKIAlzLT5pb3AucmVwbGFjZV9rZXkgPSBLRVkocy0+aW9wLmlub2RlLAot CQkJCSBiaW8tPmJpX3NlY3RvciArIHMtPmluc2VydF9iaW9fc2VjdG9ycywKKwkJCQkgYmlvLT5i aV9pdGVyLmJpX3NlY3RvciArIHMtPmluc2VydF9iaW9fc2VjdG9ycywKIAkJCQkgcy0+aW5zZXJ0 X2Jpb19zZWN0b3JzKTsKIAogCXJldCA9IGJjaF9idHJlZV9pbnNlcnRfY2hlY2tfa2V5KGIsICZz LT5vcCwgJnMtPmlvcC5yZXBsYWNlX2tleSk7CkBAIC05NTcsOSArOTU3LDkgQEAgc3RhdGljIGlu dCBjYWNoZWRfZGV2X2NhY2hlX21pc3Moc3RydWN0IGJ0cmVlICpiLCBzdHJ1Y3Qgc2VhcmNoICpz LAogCWlmICghY2FjaGVfYmlvKQogCQlnb3RvIG91dF9zdWJtaXQ7CiAKLQljYWNoZV9iaW8tPmJp X3NlY3Rvcgk9IG1pc3MtPmJpX3NlY3RvcjsKLQljYWNoZV9iaW8tPmJpX2JkZXYJPSBtaXNzLT5i aV9iZGV2OwotCWNhY2hlX2Jpby0+Ymlfc2l6ZQk9IHMtPmluc2VydF9iaW9fc2VjdG9ycyA8PCA5 OworCWNhY2hlX2Jpby0+YmlfaXRlci5iaV9zZWN0b3IJPSBtaXNzLT5iaV9pdGVyLmJpX3NlY3Rv cjsKKwljYWNoZV9iaW8tPmJpX2JkZXYJCT0gbWlzcy0+YmlfYmRldjsKKwljYWNoZV9iaW8tPmJp X2l0ZXIuYmlfc2l6ZQk9IHMtPmluc2VydF9iaW9fc2VjdG9ycyA8PCA5OwogCiAJY2FjaGVfYmlv LT5iaV9lbmRfaW8JPSByZXF1ZXN0X2VuZGlvOwogCWNhY2hlX2Jpby0+YmlfcHJpdmF0ZQk9ICZz LT5jbDsKQEAgLTEwMDksNyArMTAwOSw3IEBAIHN0YXRpYyB2b2lkIGNhY2hlZF9kZXZfd3JpdGUo c3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3Qgc2VhcmNoICpzKQogewogCXN0cnVjdCBjbG9z dXJlICpjbCA9ICZzLT5jbDsKIAlzdHJ1Y3QgYmlvICpiaW8gPSAmcy0+YmlvLmJpbzsKLQlzdHJ1 Y3QgYmtleSBzdGFydCA9IEtFWShkYy0+ZGlzay5pZCwgYmlvLT5iaV9zZWN0b3IsIDApOworCXN0 cnVjdCBia2V5IHN0YXJ0ID0gS0VZKGRjLT5kaXNrLmlkLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y LCAwKTsKIAlzdHJ1Y3QgYmtleSBlbmQgPSBLRVkoZGMtPmRpc2suaWQsIGJpb19lbmRfc2VjdG9y KGJpbyksIDApOwogCiAJYmNoX2tleWJ1Zl9jaGVja19vdmVybGFwcGluZygmcy0+aW9wLmMtPm1v dmluZ19nY19rZXlzLCAmc3RhcnQsICZlbmQpOwpAQCAtMTEwNCwxMyArMTEwNCwxMyBAQCBzdGF0 aWMgdm9pZCBjYWNoZWRfZGV2X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwg c3RydWN0IGJpbyAqYmlvKQogCXBhcnRfc3RhdF91bmxvY2soKTsKIAogCWJpby0+YmlfYmRldiA9 IGRjLT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yICs9IGRjLT5zYi5kYXRhX29mZnNldDsKKwliaW8t PmJpX2l0ZXIuYmlfc2VjdG9yICs9IGRjLT5zYi5kYXRhX29mZnNldDsKIAogCWlmIChjYWNoZWRf ZGV2X2dldChkYykpIHsKIAkJcyA9IHNlYXJjaF9hbGxvYyhiaW8sIGQpOwogCQl0cmFjZV9iY2Fj aGVfcmVxdWVzdF9zdGFydChzLT5kLCBiaW8pOwogCi0JCWlmICghYmlvLT5iaV9zaXplKSB7CisJ CWlmICghYmlvLT5iaV9pdGVyLmJpX3NpemUpIHsKIAkJCS8qCiAJCQkgKiBjYW4ndCBjYWxsIGJj aF9qb3VybmFsX21ldGEgZnJvbSB1bmRlcgogCQkJICogZ2VuZXJpY19tYWtlX3JlcXVlc3QKQEAg LTExOTcsOSArMTE5Nyw5IEBAIHN0YXRpYyBpbnQgZmxhc2hfZGV2X2NhY2hlX21pc3Moc3RydWN0 IGJ0cmVlICpiLCBzdHJ1Y3Qgc2VhcmNoICpzLAogCQlzZWN0b3JzCS09IGo7CiAJfQogCi0JYmlv X2FkdmFuY2UoYmlvLCBtaW4oc2VjdG9ycyA8PCA5LCBiaW8tPmJpX3NpemUpKTsKKwliaW9fYWR2 YW5jZShiaW8sIG1pbihzZWN0b3JzIDw8IDksIGJpby0+YmlfaXRlci5iaV9zaXplKSk7CiAKLQlp ZiAoIWJpby0+Ymlfc2l6ZSkKKwlpZiAoIWJpby0+YmlfaXRlci5iaV9zaXplKQogCQlyZXR1cm4g TUFQX0RPTkU7CiAKIAlyZXR1cm4gTUFQX0NPTlRJTlVFOwpAQCAtMTIzMyw3ICsxMjMzLDcgQEAg c3RhdGljIHZvaWQgZmxhc2hfZGV2X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cSwgc3RydWN0IGJpbyAqYmlvKQogCiAJdHJhY2VfYmNhY2hlX3JlcXVlc3Rfc3RhcnQocy0+ZCwg YmlvKTsKIAotCWlmICghYmlvLT5iaV9zaXplKSB7CisJaWYgKCFiaW8tPmJpX2l0ZXIuYmlfc2l6 ZSkgewogCQkvKgogCQkgKiBjYW4ndCBjYWxsIGJjaF9qb3VybmFsX21ldGEgZnJvbSB1bmRlcgog CQkgKiBnZW5lcmljX21ha2VfcmVxdWVzdApAQCAtMTI0Myw3ICsxMjQzLDcgQEAgc3RhdGljIHZv aWQgZmxhc2hfZGV2X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0 IGJpbyAqYmlvKQogCQkJCSAgICAgIGJjYWNoZV93cSk7CiAJfSBlbHNlIGlmIChydykgewogCQli Y2hfa2V5YnVmX2NoZWNrX292ZXJsYXBwaW5nKCZzLT5pb3AuYy0+bW92aW5nX2djX2tleXMsCi0J CQkJCSZLRVkoZC0+aWQsIGJpby0+Ymlfc2VjdG9yLCAwKSwKKwkJCQkJJktFWShkLT5pZCwgYmlv LT5iaV9pdGVyLmJpX3NlY3RvciwgMCksCiAJCQkJCSZLRVkoZC0+aWQsIGJpb19lbmRfc2VjdG9y KGJpbyksIDApKTsKIAogCQlzLT5pb3AuYnlwYXNzCQk9IChiaW8tPmJpX3J3ICYgUkVRX0RJU0NB UkQpICE9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2JjYWNoZS9zdXBlci5jIGIvZHJpdmVy cy9tZC9iY2FjaGUvc3VwZXIuYwppbmRleCAxZDllZTY3Li42MGZiNjA0IDEwMDY0NAotLS0gYS9k cml2ZXJzL21kL2JjYWNoZS9zdXBlci5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMK QEAgLTIzMyw5ICsyMzMsOSBAQCBzdGF0aWMgdm9pZCBfX3dyaXRlX3N1cGVyKHN0cnVjdCBjYWNo ZV9zYiAqc2IsIHN0cnVjdCBiaW8gKmJpbykKIAlzdHJ1Y3QgY2FjaGVfc2IgKm91dCA9IHBhZ2Vf YWRkcmVzcyhiaW8tPmJpX2lvX3ZlY1swXS5idl9wYWdlKTsKIAl1bnNpZ25lZCBpOwogCi0JYmlv LT5iaV9zZWN0b3IJPSBTQl9TRUNUT1I7Ci0JYmlvLT5iaV9ydwk9IFJFUV9TWU5DfFJFUV9NRVRB OwotCWJpby0+Ymlfc2l6ZQk9IFNCX1NJWkU7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcgk9IFNC X1NFQ1RPUjsKKwliaW8tPmJpX3J3CQk9IFJFUV9TWU5DfFJFUV9NRVRBOworCWJpby0+YmlfaXRl ci5iaV9zaXplCT0gU0JfU0laRTsKIAliY2hfYmlvX21hcChiaW8sIE5VTEwpOwogCiAJb3V0LT5v ZmZzZXQJCT0gY3B1X3RvX2xlNjQoc2ItPm9mZnNldCk7CkBAIC0zNDcsNyArMzQ3LDcgQEAgc3Rh dGljIHZvaWQgdXVpZF9pbyhzdHJ1Y3QgY2FjaGVfc2V0ICpjLCB1bnNpZ25lZCBsb25nIHJ3LAog CQlzdHJ1Y3QgYmlvICpiaW8gPSBiY2hfYmJpb19hbGxvYyhjKTsKIAogCQliaW8tPmJpX3J3CT0g UkVRX1NZTkN8UkVRX01FVEF8cnc7Ci0JCWJpby0+Ymlfc2l6ZQk9IEtFWV9TSVpFKGspIDw8IDk7 CisJCWJpby0+YmlfaXRlci5iaV9zaXplID0gS0VZX1NJWkUoaykgPDwgOTsKIAogCQliaW8tPmJp X2VuZF9pbwk9IHV1aWRfZW5kaW87CiAJCWJpby0+YmlfcHJpdmF0ZSA9IGNsOwpAQCAtNTAzLDEw ICs1MDMsMTAgQEAgc3RhdGljIHZvaWQgcHJpb19pbyhzdHJ1Y3QgY2FjaGUgKmNhLCB1aW50NjRf dCBidWNrZXQsIHVuc2lnbmVkIGxvbmcgcncpCiAKIAljbG9zdXJlX2luaXRfc3RhY2soY2wpOwog Ci0JYmlvLT5iaV9zZWN0b3IJPSBidWNrZXQgKiBjYS0+c2IuYnVja2V0X3NpemU7Ci0JYmlvLT5i aV9iZGV2CT0gY2EtPmJkZXY7Ci0JYmlvLT5iaV9ydwk9IFJFUV9TWU5DfFJFUV9NRVRBfHJ3Owot CWJpby0+Ymlfc2l6ZQk9IGJ1Y2tldF9ieXRlcyhjYSk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3Rv cgk9IGJ1Y2tldCAqIGNhLT5zYi5idWNrZXRfc2l6ZTsKKwliaW8tPmJpX2JkZXYJCT0gY2EtPmJk ZXY7CisJYmlvLT5iaV9ydwkJPSBSRVFfU1lOQ3xSRVFfTUVUQXxydzsKKwliaW8tPmJpX2l0ZXIu Ymlfc2l6ZQk9IGJ1Y2tldF9ieXRlcyhjYSk7CiAKIAliaW8tPmJpX2VuZF9pbwk9IHByaW9fZW5k aW87CiAJYmlvLT5iaV9wcml2YXRlID0gY2E7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2JjYWNo ZS91dGlsLmMgYi9kcml2ZXJzL21kL2JjYWNoZS91dGlsLmMKaW5kZXggNDYyMjE0ZS4uYzU3NjIx ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvdXRpbC5jCisrKyBiL2RyaXZlcnMvbWQv YmNhY2hlL3V0aWwuYwpAQCAtMjE4LDEwICsyMTgsMTAgQEAgdWludDY0X3QgYmNoX25leHRfZGVs YXkoc3RydWN0IGJjaF9yYXRlbGltaXQgKmQsIHVpbnQ2NF90IGRvbmUpCiAKIHZvaWQgYmNoX2Jp b19tYXAoc3RydWN0IGJpbyAqYmlvLCB2b2lkICpiYXNlKQogewotCXNpemVfdCBzaXplID0gYmlv LT5iaV9zaXplOworCXNpemVfdCBzaXplID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAJc3RydWN0 IGJpb192ZWMgKmJ2ID0gYmlvLT5iaV9pb192ZWM7CiAKLQlCVUdfT04oIWJpby0+Ymlfc2l6ZSk7 CisJQlVHX09OKCFiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJQlVHX09OKGJpby0+YmlfdmNudCk7 CiAKIAlidi0+YnZfb2Zmc2V0ID0gYmFzZSA/ICgodW5zaWduZWQgbG9uZykgYmFzZSkgJSBQQUdF X1NJWkUgOiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmMgYi9k cml2ZXJzL21kL2JjYWNoZS93cml0ZWJhY2suYwppbmRleCA5OTA1M2IxLi4wNDY1N2U5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS93cml0ZWJhY2suYworKysgYi9kcml2ZXJzL21kL2Jj YWNoZS93cml0ZWJhY2suYwpAQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyB2b2lkIGRpcnR5X2lu aXQoc3RydWN0IGtleWJ1Zl9rZXkgKncpCiAJaWYgKCFpby0+ZGMtPndyaXRlYmFja19wZXJjZW50 KQogCQliaW9fc2V0X3ByaW8oYmlvLCBJT1BSSU9fUFJJT19WQUxVRShJT1BSSU9fQ0xBU1NfSURM RSwgMCkpOwogCi0JYmlvLT5iaV9zaXplCQk9IEtFWV9TSVpFKCZ3LT5rZXkpIDw8IDk7CisJYmlv LT5iaV9pdGVyLmJpX3NpemUJPSBLRVlfU0laRSgmdy0+a2V5KSA8PCA5OwogCWJpby0+YmlfbWF4 X3ZlY3MJPSBESVZfUk9VTkRfVVAoS0VZX1NJWkUoJnctPmtleSksIFBBR0VfU0VDVE9SUyk7CiAJ YmlvLT5iaV9wcml2YXRlCQk9IHc7CiAJYmlvLT5iaV9pb192ZWMJCT0gYmlvLT5iaV9pbmxpbmVf dmVjczsKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZV9kaXJ0eShzdHJ1Y3Qg Y2xvc3VyZSAqY2wpCiAKIAlkaXJ0eV9pbml0KHcpOwogCWlvLT5iaW8uYmlfcncJCT0gV1JJVEU7 Ci0JaW8tPmJpby5iaV9zZWN0b3IJPSBLRVlfU1RBUlQoJnctPmtleSk7CisJaW8tPmJpby5iaV9p dGVyLmJpX3NlY3RvciA9IEtFWV9TVEFSVCgmdy0+a2V5KTsKIAlpby0+YmlvLmJpX2JkZXYJCT0g aW8tPmRjLT5iZGV2OwogCWlvLT5iaW8uYmlfZW5kX2lvCT0gZGlydHlfZW5kaW87CiAKQEAgLTI1 NSw3ICsyNTUsNyBAQCBzdGF0aWMgdm9pZCByZWFkX2RpcnR5KHN0cnVjdCBjYWNoZWRfZGV2ICpk YykKIAkJaW8tPmRjCQk9IGRjOwogCiAJCWRpcnR5X2luaXQodyk7Ci0JCWlvLT5iaW8uYmlfc2Vj dG9yCT0gUFRSX09GRlNFVCgmdy0+a2V5LCAwKTsKKwkJaW8tPmJpby5iaV9pdGVyLmJpX3NlY3Rv ciA9IFBUUl9PRkZTRVQoJnctPmtleSwgMCk7CiAJCWlvLT5iaW8uYmlfYmRldgkJPSBQVFJfQ0FD SEUoZGMtPmRpc2suYywKIAkJCQkJCSAgICAmdy0+a2V5LCAwKS0+YmRldjsKIAkJaW8tPmJpby5i aV9ydwkJPSBSRUFEOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmgg Yi9kcml2ZXJzL21kL2JjYWNoZS93cml0ZWJhY2suaAppbmRleCBjOWRkY2Y0Li5lMmY4NTk4IDEw MDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS93cml0ZWJhY2suaAorKysgYi9kcml2ZXJzL21k L2JjYWNoZS93cml0ZWJhY2suaApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg c2hvdWxkX3dyaXRlYmFjayhzdHJ1Y3QgY2FjaGVkX2RldiAqZGMsIHN0cnVjdCBiaW8gKmJpbywK IAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKGRjLT5wYXJ0aWFsX3N0cmlwZXNfZXhwZW5zaXZlICYm Ci0JICAgIGJjYWNoZV9kZXZfc3RyaXBlX2RpcnR5KGRjLCBiaW8tPmJpX3NlY3RvciwKKwkgICAg YmNhY2hlX2Rldl9zdHJpcGVfZGlydHkoZGMsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJCQkJ ICAgIGJpb19zZWN0b3JzKGJpbykpKQogCQlyZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZC9kbS1iaW8tcmVjb3JkLmggYi9kcml2ZXJzL21kL2RtLWJpby1yZWNvcmQuaAppbmRl eCAzYThjZmEyLi41YWNlNDhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWJpby1yZWNvcmQu aAorKysgYi9kcml2ZXJzL21kL2RtLWJpby1yZWNvcmQuaApAQCAtNDAsMTAgKzQwLDEwIEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBkbV9iaW9fcmVjb3JkKHN0cnVjdCBkbV9iaW9fZGV0YWlscyAqYmQs IHN0cnVjdCBiaW8gKmJpbykKIHsKIAl1bnNpZ25lZCBpOwogCi0JYmQtPmJpX3NlY3RvciA9IGJp by0+Ymlfc2VjdG9yOworCWJkLT5iaV9zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwog CWJkLT5iaV9iZGV2ID0gYmlvLT5iaV9iZGV2OwotCWJkLT5iaV9zaXplID0gYmlvLT5iaV9zaXpl OwotCWJkLT5iaV9pZHggPSBiaW8tPmJpX2lkeDsKKwliZC0+Ymlfc2l6ZSA9IGJpby0+YmlfaXRl ci5iaV9zaXplOworCWJkLT5iaV9pZHggPSBiaW8tPmJpX2l0ZXIuYmlfaWR4OwogCWJkLT5iaV9m bGFncyA9IGJpby0+YmlfZmxhZ3M7CiAKIAlmb3IgKGkgPSAwOyBpIDwgYmlvLT5iaV92Y250OyBp KyspIHsKQEAgLTU2LDEwICs1NiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZG1fYmlvX3Jlc3Rv cmUoc3RydWN0IGRtX2Jpb19kZXRhaWxzICpiZCwgc3RydWN0IGJpbyAqYmlvKQogewogCXVuc2ln bmVkIGk7CiAKLQliaW8tPmJpX3NlY3RvciA9IGJkLT5iaV9zZWN0b3I7CisJYmlvLT5iaV9pdGVy LmJpX3NlY3RvciA9IGJkLT5iaV9zZWN0b3I7CiAJYmlvLT5iaV9iZGV2ID0gYmQtPmJpX2JkZXY7 Ci0JYmlvLT5iaV9zaXplID0gYmQtPmJpX3NpemU7Ci0JYmlvLT5iaV9pZHggPSBiZC0+YmlfaWR4 OworCWJpby0+YmlfaXRlci5iaV9zaXplID0gYmQtPmJpX3NpemU7CisJYmlvLT5iaV9pdGVyLmJp X2lkeCA9IGJkLT5iaV9pZHg7CiAJYmlvLT5iaV9mbGFncyA9IGJkLT5iaV9mbGFnczsKIAogCWZv ciAoaSA9IDA7IGkgPCBiaW8tPmJpX3ZjbnQ7IGkrKykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZC9kbS1idWZpby5jIGIvZHJpdmVycy9tZC9kbS1idWZpby5jCmluZGV4IDE3M2NiYjIuLjQxMTNi NjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tYnVmaW8uYworKysgYi9kcml2ZXJzL21kL2Rt LWJ1ZmlvLmMKQEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMgdm9pZCB1c2VfaW5saW5lX2Jpbyhz dHJ1Y3QgZG1fYnVmZmVyICpiLCBpbnQgcncsIHNlY3Rvcl90IGJsb2NrLAogCWJpb19pbml0KCZi LT5iaW8pOwogCWItPmJpby5iaV9pb192ZWMgPSBiLT5iaW9fdmVjOwogCWItPmJpby5iaV9tYXhf dmVjcyA9IERNX0JVRklPX0lOTElORV9WRUNTOwotCWItPmJpby5iaV9zZWN0b3IgPSBibG9jayA8 PCBiLT5jLT5zZWN0b3JzX3Blcl9ibG9ja19iaXRzOworCWItPmJpby5iaV9pdGVyLmJpX3NlY3Rv ciA9IGJsb2NrIDw8IGItPmMtPnNlY3RvcnNfcGVyX2Jsb2NrX2JpdHM7CiAJYi0+YmlvLmJpX2Jk ZXYgPSBiLT5jLT5iZGV2OwogCWItPmJpby5iaV9lbmRfaW8gPSBlbmRfaW87CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWQvZG0tY2FjaGUtcG9saWN5LW1xLmMgYi9kcml2ZXJzL21kL2RtLWNhY2hl LXBvbGljeS1tcS5jCmluZGV4IDQxNmI3YjcuLmJmYmE5N2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWQvZG0tY2FjaGUtcG9saWN5LW1xLmMKKysrIGIvZHJpdmVycy9tZC9kbS1jYWNoZS1wb2xpY3kt bXEuYwpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgZW51bSBpb19wYXR0ZXJuIGlvdF9wYXR0ZXJu KHN0cnVjdCBpb190cmFja2VyICp0KQogCiBzdGF0aWMgdm9pZCBpb3RfdXBkYXRlX3N0YXRzKHN0 cnVjdCBpb190cmFja2VyICp0LCBzdHJ1Y3QgYmlvICpiaW8pCiB7Ci0JaWYgKGJpby0+Ymlfc2Vj dG9yID09IGZyb21fb2Jsb2NrKHQtPmxhc3RfZW5kX29ibG9jaykgKyAxKQorCWlmIChiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID09IGZyb21fb2Jsb2NrKHQtPmxhc3RfZW5kX29ibG9jaykgKyAxKQog CQl0LT5ucl9zZXFfc2FtcGxlcysrOwogCWVsc2UgewogCQkvKgpAQCAtODcsNyArODcsNyBAQCBz dGF0aWMgdm9pZCBpb3RfdXBkYXRlX3N0YXRzKHN0cnVjdCBpb190cmFja2VyICp0LCBzdHJ1Y3Qg YmlvICpiaW8pCiAJCXQtPm5yX3JhbmRfc2FtcGxlcysrOwogCX0KIAotCXQtPmxhc3RfZW5kX29i bG9jayA9IHRvX29ibG9jayhiaW8tPmJpX3NlY3RvciArIGJpb19zZWN0b3JzKGJpbykgLSAxKTsK Kwl0LT5sYXN0X2VuZF9vYmxvY2sgPSB0b19vYmxvY2soYmlvX2VuZF9zZWN0b3IoYmlvKSAtIDEp OwogfQogCiBzdGF0aWMgdm9pZCBpb3RfY2hlY2tfZm9yX3BhdHRlcm5fc3dpdGNoKHN0cnVjdCBp b190cmFja2VyICp0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1jYWNoZS10YXJnZXQuYyBi L2RyaXZlcnMvbWQvZG0tY2FjaGUtdGFyZ2V0LmMKaW5kZXggOWVmY2YxMC4uODZmOWM4MyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1jYWNoZS10YXJnZXQuYworKysgYi9kcml2ZXJzL21kL2Rt LWNhY2hlLXRhcmdldC5jCkBAIC02NjQsMTUgKzY2NCwxNyBAQCBzdGF0aWMgdm9pZCByZW1hcF90 b19vcmlnaW4oc3RydWN0IGNhY2hlICpjYWNoZSwgc3RydWN0IGJpbyAqYmlvKQogc3RhdGljIHZv aWQgcmVtYXBfdG9fY2FjaGUoc3RydWN0IGNhY2hlICpjYWNoZSwgc3RydWN0IGJpbyAqYmlvLAog CQkJICAgZG1fY2Jsb2NrX3QgY2Jsb2NrKQogewotCXNlY3Rvcl90IGJpX3NlY3RvciA9IGJpby0+ Ymlfc2VjdG9yOworCXNlY3Rvcl90IGJpX3NlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7 CiAKIAliaW8tPmJpX2JkZXYgPSBjYWNoZS0+Y2FjaGVfZGV2LT5iZGV2OwogCWlmICghYmxvY2tf c2l6ZV9pc19wb3dlcl9vZl90d28oY2FjaGUpKQotCQliaW8tPmJpX3NlY3RvciA9IChmcm9tX2Ni bG9jayhjYmxvY2spICogY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrKSArCi0JCQkJc2VjdG9yX2Rp dihiaV9zZWN0b3IsIGNhY2hlLT5zZWN0b3JzX3Blcl9ibG9jayk7CisJCWJpby0+YmlfaXRlci5i aV9zZWN0b3IgPQorCQkJKGZyb21fY2Jsb2NrKGNibG9jaykgKiBjYWNoZS0+c2VjdG9yc19wZXJf YmxvY2spICsKKwkJCXNlY3Rvcl9kaXYoYmlfc2VjdG9yLCBjYWNoZS0+c2VjdG9yc19wZXJfYmxv Y2spOwogCWVsc2UKLQkJYmlvLT5iaV9zZWN0b3IgPSAoZnJvbV9jYmxvY2soY2Jsb2NrKSA8PCBj YWNoZS0+c2VjdG9yc19wZXJfYmxvY2tfc2hpZnQpIHwKLQkJCQkoYmlfc2VjdG9yICYgKGNhY2hl LT5zZWN0b3JzX3Blcl9ibG9jayAtIDEpKTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9CisJ CQkoZnJvbV9jYmxvY2soY2Jsb2NrKSA8PCBjYWNoZS0+c2VjdG9yc19wZXJfYmxvY2tfc2hpZnQp IHwKKwkJCShiaV9zZWN0b3IgJiAoY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrIC0gMSkpOwogfQog CiBzdGF0aWMgdm9pZCBjaGVja19pZl90aWNrX2Jpb19uZWVkZWQoc3RydWN0IGNhY2hlICpjYWNo ZSwgc3RydWN0IGJpbyAqYmlvKQpAQCAtNzEyLDcgKzcxNCw3IEBAIHN0YXRpYyB2b2lkIHJlbWFw X3RvX2NhY2hlX2RpcnR5KHN0cnVjdCBjYWNoZSAqY2FjaGUsIHN0cnVjdCBiaW8gKmJpbywKIAog c3RhdGljIGRtX29ibG9ja190IGdldF9iaW9fYmxvY2soc3RydWN0IGNhY2hlICpjYWNoZSwgc3Ry dWN0IGJpbyAqYmlvKQogewotCXNlY3Rvcl90IGJsb2NrX25yID0gYmlvLT5iaV9zZWN0b3I7CisJ c2VjdG9yX3QgYmxvY2tfbnIgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCiAJaWYgKCFibG9j a19zaXplX2lzX3Bvd2VyX29mX3R3byhjYWNoZSkpCiAJCSh2b2lkKSBzZWN0b3JfZGl2KGJsb2Nr X25yLCBjYWNoZS0+c2VjdG9yc19wZXJfYmxvY2spOwpAQCAtMTAyNyw3ICsxMDI5LDcgQEAgc3Rh dGljIHZvaWQgaXNzdWVfb3ZlcndyaXRlKHN0cnVjdCBkbV9jYWNoZV9taWdyYXRpb24gKm1nLCBz dHJ1Y3QgYmlvICpiaW8pCiBzdGF0aWMgYm9vbCBiaW9fd3JpdGVzX2NvbXBsZXRlX2Jsb2NrKHN0 cnVjdCBjYWNoZSAqY2FjaGUsIHN0cnVjdCBiaW8gKmJpbykKIHsKIAlyZXR1cm4gKGJpb19kYXRh X2RpcihiaW8pID09IFdSSVRFKSAmJgotCQkoYmlvLT5iaV9zaXplID09IChjYWNoZS0+c2VjdG9y c19wZXJfYmxvY2sgPDwgU0VDVE9SX1NISUZUKSk7CisJCShiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 PSAoY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrIDw8IFNFQ1RPUl9TSElGVCkpOwogfQogCiBzdGF0 aWMgdm9pZCBhdm9pZF9jb3B5KHN0cnVjdCBkbV9jYWNoZV9taWdyYXRpb24gKm1nKQpAQCAtMTI1 Miw3ICsxMjU0LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbHVzaF9iaW8oc3RydWN0IGNhY2hl ICpjYWNoZSwgc3RydWN0IGJpbyAqYmlvKQogCXNpemVfdCBwYl9kYXRhX3NpemUgPSBnZXRfcGVy X2Jpb19kYXRhX3NpemUoY2FjaGUpOwogCXN0cnVjdCBwZXJfYmlvX2RhdGEgKnBiID0gZ2V0X3Bl cl9iaW9fZGF0YShiaW8sIHBiX2RhdGFfc2l6ZSk7CiAKLQlCVUdfT04oYmlvLT5iaV9zaXplKTsK KwlCVUdfT04oYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCWlmICghcGItPnJlcV9ucikKIAkJcmVt YXBfdG9fb3JpZ2luKGNhY2hlLCBiaW8pOwogCWVsc2UKQEAgLTEyNzUsOSArMTI3Nyw5IEBAIHN0 YXRpYyB2b2lkIHByb2Nlc3NfZmx1c2hfYmlvKHN0cnVjdCBjYWNoZSAqY2FjaGUsIHN0cnVjdCBi aW8gKmJpbykKICAqLwogc3RhdGljIHZvaWQgcHJvY2Vzc19kaXNjYXJkX2JpbyhzdHJ1Y3QgY2Fj aGUgKmNhY2hlLCBzdHJ1Y3QgYmlvICpiaW8pCiB7Ci0JZG1fYmxvY2tfdCBzdGFydF9ibG9jayA9 IGRtX3NlY3Rvcl9kaXZfdXAoYmlvLT5iaV9zZWN0b3IsCisJZG1fYmxvY2tfdCBzdGFydF9ibG9j ayA9IGRtX3NlY3Rvcl9kaXZfdXAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJCQkJCSAgY2Fj aGUtPmRpc2NhcmRfYmxvY2tfc2l6ZSk7Ci0JZG1fYmxvY2tfdCBlbmRfYmxvY2sgPSBiaW8tPmJp X3NlY3RvciArIGJpb19zZWN0b3JzKGJpbyk7CisJZG1fYmxvY2tfdCBlbmRfYmxvY2sgPSBiaW9f ZW5kX3NlY3RvcihiaW8pOwogCWRtX2Jsb2NrX3QgYjsKIAogCWVuZF9ibG9jayA9IGJsb2NrX2Rp dihlbmRfYmxvY2ssIGNhY2hlLT5kaXNjYXJkX2Jsb2NrX3NpemUpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZC9kbS1jcnlwdC5jIGIvZHJpdmVycy9tZC9kbS1jcnlwdC5jCmluZGV4IDgxYjBmYTYu LjFlMmU1NDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY3J5cHQuYworKysgYi9kcml2ZXJz L21kL2RtLWNyeXB0LmMKQEAgLTgyOCw4ICs4MjgsOCBAQCBzdGF0aWMgdm9pZCBjcnlwdF9jb252 ZXJ0X2luaXQoc3RydWN0IGNyeXB0X2NvbmZpZyAqY2MsCiAJY3R4LT5iaW9fb3V0ID0gYmlvX291 dDsKIAljdHgtPm9mZnNldF9pbiA9IDA7CiAJY3R4LT5vZmZzZXRfb3V0ID0gMDsKLQljdHgtPmlk eF9pbiA9IGJpb19pbiA/IGJpb19pbi0+YmlfaWR4IDogMDsKLQljdHgtPmlkeF9vdXQgPSBiaW9f b3V0ID8gYmlvX291dC0+YmlfaWR4IDogMDsKKwljdHgtPmlkeF9pbiA9IGJpb19pbiA/IGJpb19p bi0+YmlfaXRlci5iaV9pZHggOiAwOworCWN0eC0+aWR4X291dCA9IGJpb19vdXQgPyBiaW9fb3V0 LT5iaV9pdGVyLmJpX2lkeCA6IDA7CiAJY3R4LT5jY19zZWN0b3IgPSBzZWN0b3IgKyBjYy0+aXZf b2Zmc2V0OwogCWluaXRfY29tcGxldGlvbigmY3R4LT5yZXN0YXJ0KTsKIH0KQEAgLTEwMjEsNyAr MTAyMSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmlvICpjcnlwdF9hbGxvY19idWZmZXIoc3RydWN0IGRt X2NyeXB0X2lvICppbywgdW5zaWduZWQgc2l6ZSwKIAkJc2l6ZSAtPSBsZW47CiAJfQogCi0JaWYg KCFjbG9uZS0+Ymlfc2l6ZSkgeworCWlmICghY2xvbmUtPmJpX2l0ZXIuYmlfc2l6ZSkgewogCQli aW9fcHV0KGNsb25lKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpAQCAtMTE2MSw3ICsxMTYxLDcgQEAg c3RhdGljIGludCBrY3J5cHRkX2lvX3JlYWQoc3RydWN0IGRtX2NyeXB0X2lvICppbywgZ2ZwX3Qg Z2ZwKQogCWNyeXB0X2luY19wZW5kaW5nKGlvKTsKIAogCWNsb25lX2luaXQoaW8sIGNsb25lKTsK LQljbG9uZS0+Ymlfc2VjdG9yID0gY2MtPnN0YXJ0ICsgaW8tPnNlY3RvcjsKKwljbG9uZS0+Ymlf aXRlci5iaV9zZWN0b3IgPSBjYy0+c3RhcnQgKyBpby0+c2VjdG9yOwogCiAJZ2VuZXJpY19tYWtl X3JlcXVlc3QoY2xvbmUpOwogCXJldHVybiAwOwpAQCAtMTIwOSw3ICsxMjA5LDcgQEAgc3RhdGlj IHZvaWQga2NyeXB0ZF9jcnlwdF93cml0ZV9pb19zdWJtaXQoc3RydWN0IGRtX2NyeXB0X2lvICpp bywgaW50IGFzeW5jKQogCS8qIGNyeXB0X2NvbnZlcnQgc2hvdWxkIGhhdmUgZmlsbGVkIHRoZSBj bG9uZSBiaW8gKi8KIAlCVUdfT04oaW8tPmN0eC5pZHhfb3V0IDwgY2xvbmUtPmJpX3ZjbnQpOwog Ci0JY2xvbmUtPmJpX3NlY3RvciA9IGNjLT5zdGFydCArIGlvLT5zZWN0b3I7CisJY2xvbmUtPmJp X2l0ZXIuYmlfc2VjdG9yID0gY2MtPnN0YXJ0ICsgaW8tPnNlY3RvcjsKIAogCWlmIChhc3luYykK IAkJa2NyeXB0ZF9xdWV1ZV9pbyhpbyk7CkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBzdGF0aWMgdm9p ZCBrY3J5cHRkX2NyeXB0X3dyaXRlX2NvbnZlcnQoc3RydWN0IGRtX2NyeXB0X2lvICppbykKIAlz dHJ1Y3QgZG1fY3J5cHRfaW8gKm5ld19pbzsKIAlpbnQgY3J5cHRfZmluaXNoZWQ7CiAJdW5zaWdu ZWQgb3V0X29mX3BhZ2VzID0gMDsKLQl1bnNpZ25lZCByZW1haW5pbmcgPSBpby0+YmFzZV9iaW8t PmJpX3NpemU7CisJdW5zaWduZWQgcmVtYWluaW5nID0gaW8tPmJhc2VfYmlvLT5iaV9pdGVyLmJp X3NpemU7CiAJc2VjdG9yX3Qgc2VjdG9yID0gaW8tPnNlY3RvcjsKIAlpbnQgcjsKIApAQCAtMTI0 OCw3ICsxMjQ4LDcgQEAgc3RhdGljIHZvaWQga2NyeXB0ZF9jcnlwdF93cml0ZV9jb252ZXJ0KHN0 cnVjdCBkbV9jcnlwdF9pbyAqaW8pCiAJCWlvLT5jdHguYmlvX291dCA9IGNsb25lOwogCQlpby0+ Y3R4LmlkeF9vdXQgPSAwOwogCi0JCXJlbWFpbmluZyAtPSBjbG9uZS0+Ymlfc2l6ZTsKKwkJcmVt YWluaW5nIC09IGNsb25lLT5iaV9pdGVyLmJpX3NpemU7CiAJCXNlY3RvciArPSBiaW9fc2VjdG9y cyhjbG9uZSk7CiAKIAkJY3J5cHRfaW5jX3BlbmRpbmcoaW8pOwpAQCAtMTg2OSwxMSArMTg2OSwx MiBAQCBzdGF0aWMgaW50IGNyeXB0X21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwgc3RydWN0IGJp byAqYmlvKQogCWlmICh1bmxpa2VseShiaW8tPmJpX3J3ICYgKFJFUV9GTFVTSCB8IFJFUV9ESVND QVJEKSkpIHsKIAkJYmlvLT5iaV9iZGV2ID0gY2MtPmRldi0+YmRldjsKIAkJaWYgKGJpb19zZWN0 b3JzKGJpbykpCi0JCQliaW8tPmJpX3NlY3RvciA9IGNjLT5zdGFydCArIGRtX3RhcmdldF9vZmZz ZXQodGksIGJpby0+Ymlfc2VjdG9yKTsKKwkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBjYy0+ c3RhcnQgKworCQkJCWRtX3RhcmdldF9vZmZzZXQodGksIGJpby0+YmlfaXRlci5iaV9zZWN0b3Ip OwogCQlyZXR1cm4gRE1fTUFQSU9fUkVNQVBQRUQ7CiAJfQogCi0JaW8gPSBjcnlwdF9pb19hbGxv YyhjYywgYmlvLCBkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX3NlY3RvcikpOworCWlvID0g Y3J5cHRfaW9fYWxsb2MoY2MsIGJpbywgZG1fdGFyZ2V0X29mZnNldCh0aSwgYmlvLT5iaV9pdGVy LmJpX3NlY3RvcikpOwogCiAJaWYgKGJpb19kYXRhX2Rpcihpby0+YmFzZV9iaW8pID09IFJFQUQp IHsKIAkJaWYgKGtjcnlwdGRfaW9fcmVhZChpbywgR0ZQX05PV0FJVCkpCmRpZmYgLS1naXQgYS9k cml2ZXJzL21kL2RtLWRlbGF5LmMgYi9kcml2ZXJzL21kL2RtLWRlbGF5LmMKaW5kZXggNDk2ZDVm My4uODRjODYwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1kZWxheS5jCisrKyBiL2RyaXZl cnMvbWQvZG0tZGVsYXkuYwpAQCAtMjgxLDE0ICsyODEsMTUgQEAgc3RhdGljIGludCBkZWxheV9t YXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAoKGJpb19kYXRh X2RpcihiaW8pID09IFdSSVRFKSAmJiAoZGMtPmRldl93cml0ZSkpIHsKIAkJYmlvLT5iaV9iZGV2 ID0gZGMtPmRldl93cml0ZS0+YmRldjsKIAkJaWYgKGJpb19zZWN0b3JzKGJpbykpCi0JCQliaW8t PmJpX3NlY3RvciA9IGRjLT5zdGFydF93cml0ZSArCi0JCQkJCSBkbV90YXJnZXRfb2Zmc2V0KHRp LCBiaW8tPmJpX3NlY3Rvcik7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gZGMtPnN0YXJ0 X3dyaXRlICsKKwkJCQlkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y KTsKIAogCQlyZXR1cm4gZGVsYXlfYmlvKGRjLCBkYy0+d3JpdGVfZGVsYXksIGJpbyk7CiAJfQog CiAJYmlvLT5iaV9iZGV2ID0gZGMtPmRldl9yZWFkLT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0g ZGMtPnN0YXJ0X3JlYWQgKyBkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJ YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGRjLT5zdGFydF9yZWFkICsKKwkJZG1fdGFyZ2V0X29m ZnNldCh0aSwgYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKIAlyZXR1cm4gZGVsYXlfYmlvKGRj LCBkYy0+cmVhZF9kZWxheSwgYmlvKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tZmxh a2V5LmMgYi9kcml2ZXJzL21kL2RtLWZsYWtleS5jCmluZGV4IGM4MGEwZWMuLmIyNTdlNDYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tZmxha2V5LmMKKysrIGIvZHJpdmVycy9tZC9kbS1mbGFr ZXkuYwpAQCAtMjQ4LDcgKzI0OCw4IEBAIHN0YXRpYyB2b2lkIGZsYWtleV9tYXBfYmlvKHN0cnVj dCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAliaW8tPmJpX2JkZXYgPSBmYy0+ ZGV2LT5iZGV2OwogCWlmIChiaW9fc2VjdG9ycyhiaW8pKQotCQliaW8tPmJpX3NlY3RvciA9IGZs YWtleV9tYXBfc2VjdG9yKHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJCWJpby0+YmlfaXRlci5iaV9z ZWN0b3IgPQorCQkJZmxha2V5X21hcF9zZWN0b3IodGksIGJpby0+YmlfaXRlci5iaV9zZWN0b3Ip OwogfQogCiBzdGF0aWMgdm9pZCBjb3JydXB0X2Jpb19kYXRhKHN0cnVjdCBiaW8gKmJpbywgc3Ry dWN0IGZsYWtleV9jICpmYykKQEAgLTI2NSw4ICsyNjYsOCBAQCBzdGF0aWMgdm9pZCBjb3JydXB0 X2Jpb19kYXRhKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGZsYWtleV9jICpmYykKIAkJRE1ERUJV RygiQ29ycnVwdGluZyBkYXRhIGJpbz0lcCBieSB3cml0aW5nICV1IHRvIGJ5dGUgJXUgIgogCQkJ Iihydz0lYyBiaV9ydz0lbHUgYmlfc2VjdG9yPSVsbHUgY3VyX2J5dGVzPSV1KVxuIiwKIAkJCWJp bywgZmMtPmNvcnJ1cHRfYmlvX3ZhbHVlLCBmYy0+Y29ycnVwdF9iaW9fYnl0ZSwKLQkJCShiaW9f ZGF0YV9kaXIoYmlvKSA9PSBXUklURSkgPyAndycgOiAncicsCi0JCQliaW8tPmJpX3J3LCAodW5z aWduZWQgbG9uZyBsb25nKWJpby0+Ymlfc2VjdG9yLCBiaW9fYnl0ZXMpOworCQkJKGJpb19kYXRh X2RpcihiaW8pID09IFdSSVRFKSA/ICd3JyA6ICdyJywgYmlvLT5iaV9ydywKKwkJCSh1bnNpZ25l ZCBsb25nIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgYmlvX2J5dGVzKTsKIAl9CiB9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0taW8uYyBiL2RyaXZlcnMvbWQvZG0taW8uYwppbmRl eCAyYTIwOTg2Li4wMTU1OGIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWlvLmMKKysrIGIv ZHJpdmVycy9tZC9kbS1pby5jCkBAIC0zMDQsMTQgKzMwNCwxNCBAQCBzdGF0aWMgdm9pZCBkb19y ZWdpb24oaW50IHJ3LCB1bnNpZ25lZCByZWdpb24sIHN0cnVjdCBkbV9pb19yZWdpb24gKndoZXJl LAogCQkJCQkgIGRtX3NlY3Rvcl9kaXZfdXAocmVtYWluaW5nLCAoUEFHRV9TSVpFID4+IFNFQ1RP Ul9TSElGVCkpKTsKIAogCQliaW8gPSBiaW9fYWxsb2NfYmlvc2V0KEdGUF9OT0lPLCBudW1fYnZl Y3MsIGlvLT5jbGllbnQtPmJpb3MpOwotCQliaW8tPmJpX3NlY3RvciA9IHdoZXJlLT5zZWN0b3Ig KyAod2hlcmUtPmNvdW50IC0gcmVtYWluaW5nKTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9 IHdoZXJlLT5zZWN0b3IgKyAod2hlcmUtPmNvdW50IC0gcmVtYWluaW5nKTsKIAkJYmlvLT5iaV9i ZGV2ID0gd2hlcmUtPmJkZXY7CiAJCWJpby0+YmlfZW5kX2lvID0gZW5kaW87CiAJCXN0b3JlX2lv X2FuZF9yZWdpb25faW5fYmlvKGJpbywgaW8sIHJlZ2lvbik7CiAKIAkJaWYgKHJ3ICYgUkVRX0RJ U0NBUkQpIHsKIAkJCW51bV9zZWN0b3JzID0gbWluX3Qoc2VjdG9yX3QsIHEtPmxpbWl0cy5tYXhf ZGlzY2FyZF9zZWN0b3JzLCByZW1haW5pbmcpOwotCQkJYmlvLT5iaV9zaXplID0gbnVtX3NlY3Rv cnMgPDwgU0VDVE9SX1NISUZUOworCQkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBudW1fc2VjdG9y cyA8PCBTRUNUT1JfU0hJRlQ7CiAJCQlyZW1haW5pbmcgLT0gbnVtX3NlY3RvcnM7CiAJCX0gZWxz ZSBpZiAocncgJiBSRVFfV1JJVEVfU0FNRSkgewogCQkJLyoKQEAgLTMyMCw3ICszMjAsNyBAQCBz dGF0aWMgdm9pZCBkb19yZWdpb24oaW50IHJ3LCB1bnNpZ25lZCByZWdpb24sIHN0cnVjdCBkbV9p b19yZWdpb24gKndoZXJlLAogCQkJZHAtPmdldF9wYWdlKGRwLCAmcGFnZSwgJmxlbiwgJm9mZnNl dCk7CiAJCQliaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBsb2dpY2FsX2Jsb2NrX3NpemUsIG9mZnNl dCk7CiAJCQludW1fc2VjdG9ycyA9IG1pbl90KHNlY3Rvcl90LCBxLT5saW1pdHMubWF4X3dyaXRl X3NhbWVfc2VjdG9ycywgcmVtYWluaW5nKTsKLQkJCWJpby0+Ymlfc2l6ZSA9IG51bV9zZWN0b3Jz IDw8IFNFQ1RPUl9TSElGVDsKKwkJCWJpby0+YmlfaXRlci5iaV9zaXplID0gbnVtX3NlY3RvcnMg PDwgU0VDVE9SX1NISUZUOwogCiAJCQlvZmZzZXQgPSAwOwogCQkJcmVtYWluaW5nIC09IG51bV9z ZWN0b3JzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1saW5lYXIuYyBiL2RyaXZlcnMvbWQv ZG0tbGluZWFyLmMKaW5kZXggNGY5OWQyNi4uNTNlODQ4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZC9kbS1saW5lYXIuYworKysgYi9kcml2ZXJzL21kL2RtLWxpbmVhci5jCkBAIC04NSw3ICs4NSw4 IEBAIHN0YXRpYyB2b2lkIGxpbmVhcl9tYXBfYmlvKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1 Y3QgYmlvICpiaW8pCiAKIAliaW8tPmJpX2JkZXYgPSBsYy0+ZGV2LT5iZGV2OwogCWlmIChiaW9f c2VjdG9ycyhiaW8pKQotCQliaW8tPmJpX3NlY3RvciA9IGxpbmVhcl9tYXBfc2VjdG9yKHRpLCBi aW8tPmJpX3NlY3Rvcik7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPQorCQkJbGluZWFyX21h cF9zZWN0b3IodGksIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogfQogCiBzdGF0aWMgaW50IGxp bmVhcl9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWQvZG0tcmFpZDEuYyBiL2RyaXZlcnMvbWQvZG0tcmFpZDEuYwppbmRleCA5 NTg0NDQzLi45ZjZkOGU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLXJhaWQxLmMKKysrIGIv ZHJpdmVycy9tZC9kbS1yYWlkMS5jCkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGljIGludCBtaXJy b3JfYXZhaWxhYmxlKHN0cnVjdCBtaXJyb3Jfc2V0ICptcywgc3RydWN0IGJpbyAqYmlvKQogCXJl Z2lvbl90IHJlZ2lvbiA9IGRtX3JoX2Jpb190b19yZWdpb24obXMtPnJoLCBiaW8pOwogCiAJaWYg KGxvZy0+dHlwZS0+aW5fc3luYyhsb2csIHJlZ2lvbiwgMCkpCi0JCXJldHVybiBjaG9vc2VfbWly cm9yKG1zLCAgYmlvLT5iaV9zZWN0b3IpID8gMSA6IDA7CisJCXJldHVybiBjaG9vc2VfbWlycm9y KG1zLCAgYmlvLT5iaV9pdGVyLmJpX3NlY3RvcikgPyAxIDogMDsKIAogCXJldHVybiAwOwogfQpA QCAtNDQyLDE1ICs0NDIsMTUgQEAgc3RhdGljIGludCBtaXJyb3JfYXZhaWxhYmxlKHN0cnVjdCBt aXJyb3Jfc2V0ICptcywgc3RydWN0IGJpbyAqYmlvKQogICovCiBzdGF0aWMgc2VjdG9yX3QgbWFw X3NlY3RvcihzdHJ1Y3QgbWlycm9yICptLCBzdHJ1Y3QgYmlvICpiaW8pCiB7Ci0JaWYgKHVubGlr ZWx5KCFiaW8tPmJpX3NpemUpKQorCWlmICh1bmxpa2VseSghYmlvLT5iaV9pdGVyLmJpX3NpemUp KQogCQlyZXR1cm4gMDsKLQlyZXR1cm4gbS0+b2Zmc2V0ICsgZG1fdGFyZ2V0X29mZnNldChtLT5t cy0+dGksIGJpby0+Ymlfc2VjdG9yKTsKKwlyZXR1cm4gbS0+b2Zmc2V0ICsgZG1fdGFyZ2V0X29m ZnNldChtLT5tcy0+dGksIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogfQogCiBzdGF0aWMgdm9p ZCBtYXBfYmlvKHN0cnVjdCBtaXJyb3IgKm0sIHN0cnVjdCBiaW8gKmJpbykKIHsKIAliaW8tPmJp X2JkZXYgPSBtLT5kZXYtPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBtYXBfc2VjdG9yKG0sIGJp byk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IG1hcF9zZWN0b3IobSwgYmlvKTsKIH0KIAog c3RhdGljIHZvaWQgbWFwX3JlZ2lvbihzdHJ1Y3QgZG1faW9fcmVnaW9uICppbywgc3RydWN0IG1p cnJvciAqbSwKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0aWMgdm9pZCByZWFkX2FzeW5jX2Jpbyhz dHJ1Y3QgbWlycm9yICptLCBzdHJ1Y3QgYmlvICpiaW8pCiAJc3RydWN0IGRtX2lvX3JlcXVlc3Qg aW9fcmVxID0gewogCQkuYmlfcncgPSBSRUFELAogCQkubWVtLnR5cGUgPSBETV9JT19CVkVDLAot CQkubWVtLnB0ci5idmVjID0gYmlvLT5iaV9pb192ZWMgKyBiaW8tPmJpX2lkeCwKKwkJLm1lbS5w dHIuYnZlYyA9IGJpby0+YmlfaW9fdmVjICsgYmlvLT5iaV9pdGVyLmJpX2lkeCwKIAkJLm5vdGlm eS5mbiA9IHJlYWRfY2FsbGJhY2ssCiAJCS5ub3RpZnkuY29udGV4dCA9IGJpbywKIAkJLmNsaWVu dCA9IG0tPm1zLT5pb19jbGllbnQsCkBAIC01NTksNyArNTU5LDcgQEAgc3RhdGljIHZvaWQgZG9f cmVhZHMoc3RydWN0IG1pcnJvcl9zZXQgKm1zLCBzdHJ1Y3QgYmlvX2xpc3QgKnJlYWRzKQogCQkg KiBXZSBjYW4gb25seSByZWFkIGJhbGFuY2UgaWYgdGhlIHJlZ2lvbiBpcyBpbiBzeW5jLgogCQkg Ki8KIAkJaWYgKGxpa2VseShyZWdpb25faW5fc3luYyhtcywgcmVnaW9uLCAxKSkpCi0JCQltID0g Y2hvb3NlX21pcnJvcihtcywgYmlvLT5iaV9zZWN0b3IpOworCQkJbSA9IGNob29zZV9taXJyb3Io bXMsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCQllbHNlIGlmIChtICYmIGF0b21pY19yZWFk KCZtLT5lcnJvcl9jb3VudCkpCiAJCQltID0gTlVMTDsKIApAQCAtNjMwLDcgKzYzMCw3IEBAIHN0 YXRpYyB2b2lkIGRvX3dyaXRlKHN0cnVjdCBtaXJyb3Jfc2V0ICptcywgc3RydWN0IGJpbyAqYmlv KQogCXN0cnVjdCBkbV9pb19yZXF1ZXN0IGlvX3JlcSA9IHsKIAkJLmJpX3J3ID0gV1JJVEUgfCAo YmlvLT5iaV9ydyAmIFdSSVRFX0ZMVVNIX0ZVQSksCiAJCS5tZW0udHlwZSA9IERNX0lPX0JWRUMs Ci0JCS5tZW0ucHRyLmJ2ZWMgPSBiaW8tPmJpX2lvX3ZlYyArIGJpby0+YmlfaWR4LAorCQkubWVt LnB0ci5idmVjID0gYmlvLT5iaV9pb192ZWMgKyBiaW8tPmJpX2l0ZXIuYmlfaWR4LAogCQkubm90 aWZ5LmZuID0gd3JpdGVfY2FsbGJhY2ssCiAJCS5ub3RpZnkuY29udGV4dCA9IGJpbywKIAkJLmNs aWVudCA9IG1zLT5pb19jbGllbnQsCkBAIC0xMTgxLDcgKzExODEsNyBAQCBzdGF0aWMgaW50IG1p cnJvcl9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAkgKiBUaGUg cmVnaW9uIGlzIGluLXN5bmMgYW5kIHdlIGNhbiBwZXJmb3JtIHJlYWRzIGRpcmVjdGx5LgogCSAq IFN0b3JlIGVub3VnaCBpbmZvcm1hdGlvbiBzbyB3ZSBjYW4gcmV0cnkgaWYgaXQgZmFpbHMuCiAJ ICovCi0JbSA9IGNob29zZV9taXJyb3IobXMsIGJpby0+Ymlfc2VjdG9yKTsKKwltID0gY2hvb3Nl X21pcnJvcihtcywgYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAJaWYgKHVubGlrZWx5KCFtKSkK IAkJcmV0dXJuIC1FSU87CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2gu YyBiL2RyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2guYwppbmRleCA2OTczMmUwLi5iOTI5ZmQ1IDEw MDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLXJlZ2lvbi1oYXNoLmMKKysrIGIvZHJpdmVycy9tZC9k bS1yZWdpb24taGFzaC5jCkBAIC0xMjYsNyArMTI2LDggQEAgRVhQT1JUX1NZTUJPTF9HUEwoZG1f cmhfcmVnaW9uX3RvX3NlY3Rvcik7CiAKIHJlZ2lvbl90IGRtX3JoX2Jpb190b19yZWdpb24oc3Ry dWN0IGRtX3JlZ2lvbl9oYXNoICpyaCwgc3RydWN0IGJpbyAqYmlvKQogewotCXJldHVybiBkbV9y aF9zZWN0b3JfdG9fcmVnaW9uKHJoLCBiaW8tPmJpX3NlY3RvciAtIHJoLT50YXJnZXRfYmVnaW4p OworCXJldHVybiBkbV9yaF9zZWN0b3JfdG9fcmVnaW9uKHJoLCBiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yIC0KKwkJCQkgICAgICByaC0+dGFyZ2V0X2JlZ2luKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BM KGRtX3JoX2Jpb190b19yZWdpb24pOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXNuYXAu YyBiL2RyaXZlcnMvbWQvZG0tc25hcC5jCmluZGV4IGFlYzU3ZDcuLjNkZWQ4YzcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbWQvZG0tc25hcC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tc25hcC5jCkBAIC0x NTYyLDExICsxNTYyLDEwIEBAIHN0YXRpYyB2b2lkIHJlbWFwX2V4Y2VwdGlvbihzdHJ1Y3QgZG1f c25hcHNob3QgKnMsIHN0cnVjdCBkbV9leGNlcHRpb24gKmUsCiAJCQkgICAgc3RydWN0IGJpbyAq YmlvLCBjaHVua190IGNodW5rKQogewogCWJpby0+YmlfYmRldiA9IHMtPmNvdy0+YmRldjsKLQli aW8tPmJpX3NlY3RvciA9IGNodW5rX3RvX3NlY3RvcihzLT5zdG9yZSwKLQkJCQkJIGRtX2NodW5r X251bWJlcihlLT5uZXdfY2h1bmspICsKLQkJCQkJIChjaHVuayAtIGUtPm9sZF9jaHVuaykpICsK LQkJCQkJIChiaW8tPmJpX3NlY3RvciAmCi0JCQkJCSAgcy0+c3RvcmUtPmNodW5rX21hc2spOwor CWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPQorCQljaHVua190b19zZWN0b3Iocy0+c3RvcmUsIGRt X2NodW5rX251bWJlcihlLT5uZXdfY2h1bmspICsKKwkJCQkoY2h1bmsgLSBlLT5vbGRfY2h1bmsp KSArCisJCShiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICYgcy0+c3RvcmUtPmNodW5rX21hc2spOwog fQogCiBzdGF0aWMgaW50IHNuYXBzaG90X21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwgc3RydWN0 IGJpbyAqYmlvKQpAQCAtMTU4NCw3ICsxNTgzLDcgQEAgc3RhdGljIGludCBzbmFwc2hvdF9tYXAo c3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAkJcmV0dXJuIERNX01BUElP X1JFTUFQUEVEOwogCX0KIAotCWNodW5rID0gc2VjdG9yX3RvX2NodW5rKHMtPnN0b3JlLCBiaW8t PmJpX3NlY3Rvcik7CisJY2h1bmsgPSBzZWN0b3JfdG9fY2h1bmsocy0+c3RvcmUsIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IpOwogCiAJLyogRnVsbCBzbmFwc2hvdHMgYXJlIG5vdCB1c2FibGUgKi8K IAkvKiBUbyBnZXQgaGVyZSB0aGUgdGFibGUgbXVzdCBiZSBsaXZlIHNvIHMtPmFjdGl2ZSBpcyBh bHdheXMgc2V0LiAqLwpAQCAtMTY0NSw3ICsxNjQ0LDggQEAgc3RhdGljIGludCBzbmFwc2hvdF9t YXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAkJciA9IERNX01BUElP X1NVQk1JVFRFRDsKIAogCQlpZiAoIXBlLT5zdGFydGVkICYmCi0JCSAgICBiaW8tPmJpX3NpemUg PT0gKHMtPnN0b3JlLT5jaHVua19zaXplIDw8IFNFQ1RPUl9TSElGVCkpIHsKKwkJICAgIGJpby0+ YmlfaXRlci5iaV9zaXplID09CisJCSAgICAocy0+c3RvcmUtPmNodW5rX3NpemUgPDwgU0VDVE9S X1NISUZUKSkgewogCQkJcGUtPnN0YXJ0ZWQgPSAxOwogCQkJdXBfd3JpdGUoJnMtPmxvY2spOwog CQkJc3RhcnRfZnVsbF9iaW8ocGUsIGJpbyk7CkBAIC0xNzAxLDcgKzE3MDEsNyBAQCBzdGF0aWMg aW50IHNuYXBzaG90X21lcmdlX21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwgc3RydWN0IGJpbyAq YmlvKQogCQlyZXR1cm4gRE1fTUFQSU9fUkVNQVBQRUQ7CiAJfQogCi0JY2h1bmsgPSBzZWN0b3Jf dG9fY2h1bmsocy0+c3RvcmUsIGJpby0+Ymlfc2VjdG9yKTsKKwljaHVuayA9IHNlY3Rvcl90b19j aHVuayhzLT5zdG9yZSwgYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKIAlkb3duX3dyaXRlKCZz LT5sb2NrKTsKIApAQCAtMjAzOCw3ICsyMDM4LDcgQEAgc3RhdGljIGludCBkb19vcmlnaW4oc3Ry dWN0IGRtX2RldiAqb3JpZ2luLCBzdHJ1Y3QgYmlvICpiaW8pCiAJZG93bl9yZWFkKCZfb3JpZ2lu c19sb2NrKTsKIAlvID0gX19sb29rdXBfb3JpZ2luKG9yaWdpbi0+YmRldik7CiAJaWYgKG8pCi0J CXIgPSBfX29yaWdpbl93cml0ZSgmby0+c25hcHNob3RzLCBiaW8tPmJpX3NlY3RvciwgYmlvKTsK KwkJciA9IF9fb3JpZ2luX3dyaXRlKCZvLT5zbmFwc2hvdHMsIGJpby0+YmlfaXRlci5iaV9zZWN0 b3IsIGJpbyk7CiAJdXBfcmVhZCgmX29yaWdpbnNfbG9jayk7CiAKIAlyZXR1cm4gcjsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbWQvZG0tc3RyaXBlLmMgYi9kcml2ZXJzL21kL2RtLXN0cmlwZS5jCmlu ZGV4IDczYzE3MTIuLmQxNjAwZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tc3RyaXBlLmMK KysrIGIvZHJpdmVycy9tZC9kbS1zdHJpcGUuYwpAQCAtMjU5LDEzICsyNTksMTUgQEAgc3RhdGlj IGludCBzdHJpcGVfbWFwX3JhbmdlKHN0cnVjdCBzdHJpcGVfYyAqc2MsIHN0cnVjdCBiaW8gKmJp bywKIHsKIAlzZWN0b3JfdCBiZWdpbiwgZW5kOwogCi0Jc3RyaXBlX21hcF9yYW5nZV9zZWN0b3Io c2MsIGJpby0+Ymlfc2VjdG9yLCB0YXJnZXRfc3RyaXBlLCAmYmVnaW4pOworCXN0cmlwZV9tYXBf cmFuZ2Vfc2VjdG9yKHNjLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJCXRhcmdldF9zdHJp cGUsICZiZWdpbik7CiAJc3RyaXBlX21hcF9yYW5nZV9zZWN0b3Ioc2MsIGJpb19lbmRfc2VjdG9y KGJpbyksCiAJCQkJdGFyZ2V0X3N0cmlwZSwgJmVuZCk7CiAJaWYgKGJlZ2luIDwgZW5kKSB7CiAJ CWJpby0+YmlfYmRldiA9IHNjLT5zdHJpcGVbdGFyZ2V0X3N0cmlwZV0uZGV2LT5iZGV2OwotCQli aW8tPmJpX3NlY3RvciA9IGJlZ2luICsgc2MtPnN0cmlwZVt0YXJnZXRfc3RyaXBlXS5waHlzaWNh bF9zdGFydDsKLQkJYmlvLT5iaV9zaXplID0gdG9fYnl0ZXMoZW5kIC0gYmVnaW4pOworCQliaW8t PmJpX2l0ZXIuYmlfc2VjdG9yID0gYmVnaW4gKworCQkJc2MtPnN0cmlwZVt0YXJnZXRfc3RyaXBl XS5waHlzaWNhbF9zdGFydDsKKwkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSB0b19ieXRlcyhlbmQg LSBiZWdpbik7CiAJCXJldHVybiBETV9NQVBJT19SRU1BUFBFRDsKIAl9IGVsc2UgewogCQkvKiBU aGUgcmFuZ2UgZG9lc24ndCBtYXAgdG8gdGhlIHRhcmdldCBzdHJpcGUgKi8KQEAgLTI5Myw5ICsy OTUsMTAgQEAgc3RhdGljIGludCBzdHJpcGVfbWFwKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1 Y3QgYmlvICpiaW8pCiAJCXJldHVybiBzdHJpcGVfbWFwX3JhbmdlKHNjLCBiaW8sIHRhcmdldF9i aW9fbnIpOwogCX0KIAotCXN0cmlwZV9tYXBfc2VjdG9yKHNjLCBiaW8tPmJpX3NlY3RvciwgJnN0 cmlwZSwgJmJpby0+Ymlfc2VjdG9yKTsKKwlzdHJpcGVfbWFwX3NlY3RvcihzYywgYmlvLT5iaV9p dGVyLmJpX3NlY3RvciwKKwkJCSAgJnN0cmlwZSwgJmJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwog Ci0JYmlvLT5iaV9zZWN0b3IgKz0gc2MtPnN0cmlwZVtzdHJpcGVdLnBoeXNpY2FsX3N0YXJ0Owor CWJpby0+YmlfaXRlci5iaV9zZWN0b3IgKz0gc2MtPnN0cmlwZVtzdHJpcGVdLnBoeXNpY2FsX3N0 YXJ0OwogCWJpby0+YmlfYmRldiA9IHNjLT5zdHJpcGVbc3RyaXBlXS5kZXYtPmJkZXY7CiAKIAly ZXR1cm4gRE1fTUFQSU9fUkVNQVBQRUQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXN3aXRj aC5jIGIvZHJpdmVycy9tZC9kbS1zd2l0Y2guYwppbmRleCBmZjlhYzRiLi4wOWE2ODhiIDEwMDY0 NAotLS0gYS9kcml2ZXJzL21kL2RtLXN3aXRjaC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tc3dpdGNo LmMKQEAgLTMxMSwxMSArMzExLDExIEBAIGVycm9yOgogc3RhdGljIGludCBzd2l0Y2hfbWFwKHN0 cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpiaW8pCiB7CiAJc3RydWN0IHN3aXRjaF9j dHggKnNjdHggPSB0aS0+cHJpdmF0ZTsKLQlzZWN0b3JfdCBvZmZzZXQgPSBkbV90YXJnZXRfb2Zm c2V0KHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJc2VjdG9yX3Qgb2Zmc2V0ID0gZG1fdGFyZ2V0X29m ZnNldCh0aSwgYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAJdW5zaWduZWQgcGF0aF9uciA9IHN3 aXRjaF9nZXRfcGF0aF9ucihzY3R4LCBvZmZzZXQpOwogCiAJYmlvLT5iaV9iZGV2ID0gc2N0eC0+ cGF0aF9saXN0W3BhdGhfbnJdLmRtZGV2LT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gc2N0eC0+ cGF0aF9saXN0W3BhdGhfbnJdLnN0YXJ0ICsgb2Zmc2V0OworCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBzY3R4LT5wYXRoX2xpc3RbcGF0aF9ucl0uc3RhcnQgKyBvZmZzZXQ7CiAKIAlyZXR1cm4g RE1fTUFQSU9fUkVNQVBQRUQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXRoaW4uYyBi L2RyaXZlcnMvbWQvZG0tdGhpbi5jCmluZGV4IDJjMGNmNTEuLmE2NTQwMjQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbWQvZG0tdGhpbi5jCisrKyBiL2RyaXZlcnMvbWQvZG0tdGhpbi5jCkBAIC00MTMs NyArNDEzLDcgQEAgc3RhdGljIGJvb2wgYmxvY2tfc2l6ZV9pc19wb3dlcl9vZl90d28oc3RydWN0 IHBvb2wgKnBvb2wpCiBzdGF0aWMgZG1fYmxvY2tfdCBnZXRfYmlvX2Jsb2NrKHN0cnVjdCB0aGlu X2MgKnRjLCBzdHJ1Y3QgYmlvICpiaW8pCiB7CiAJc3RydWN0IHBvb2wgKnBvb2wgPSB0Yy0+cG9v bDsKLQlzZWN0b3JfdCBibG9ja19uciA9IGJpby0+Ymlfc2VjdG9yOworCXNlY3Rvcl90IGJsb2Nr X25yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAogCWlmIChibG9ja19zaXplX2lzX3Bvd2Vy X29mX3R3byhwb29sKSkKIAkJYmxvY2tfbnIgPj49IHBvb2wtPnNlY3RvcnNfcGVyX2Jsb2NrX3No aWZ0OwpAQCAtNDI2LDE0ICs0MjYsMTUgQEAgc3RhdGljIGRtX2Jsb2NrX3QgZ2V0X2Jpb19ibG9j ayhzdHJ1Y3QgdGhpbl9jICp0Yywgc3RydWN0IGJpbyAqYmlvKQogc3RhdGljIHZvaWQgcmVtYXAo c3RydWN0IHRoaW5fYyAqdGMsIHN0cnVjdCBiaW8gKmJpbywgZG1fYmxvY2tfdCBibG9jaykKIHsK IAlzdHJ1Y3QgcG9vbCAqcG9vbCA9IHRjLT5wb29sOwotCXNlY3Rvcl90IGJpX3NlY3RvciA9IGJp by0+Ymlfc2VjdG9yOworCXNlY3Rvcl90IGJpX3NlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0 b3I7CiAKIAliaW8tPmJpX2JkZXYgPSB0Yy0+cG9vbF9kZXYtPmJkZXY7CiAJaWYgKGJsb2NrX3Np emVfaXNfcG93ZXJfb2ZfdHdvKHBvb2wpKQotCQliaW8tPmJpX3NlY3RvciA9IChibG9jayA8PCBw b29sLT5zZWN0b3JzX3Blcl9ibG9ja19zaGlmdCkgfAotCQkJCShiaV9zZWN0b3IgJiAocG9vbC0+ c2VjdG9yc19wZXJfYmxvY2sgLSAxKSk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPQorCQkJ KGJsb2NrIDw8IHBvb2wtPnNlY3RvcnNfcGVyX2Jsb2NrX3NoaWZ0KSB8CisJCQkoYmlfc2VjdG9y ICYgKHBvb2wtPnNlY3RvcnNfcGVyX2Jsb2NrIC0gMSkpOwogCWVsc2UKLQkJYmlvLT5iaV9zZWN0 b3IgPSAoYmxvY2sgKiBwb29sLT5zZWN0b3JzX3Blcl9ibG9jaykgKworCQliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yID0gKGJsb2NrICogcG9vbC0+c2VjdG9yc19wZXJfYmxvY2spICsKIAkJCQkgc2Vj dG9yX2RpdihiaV9zZWN0b3IsIHBvb2wtPnNlY3RvcnNfcGVyX2Jsb2NrKTsKIH0KIApAQCAtNzIx LDcgKzcyMiw4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcHJlcGFyZWQoc3RydWN0IHBvb2wgKnBv b2wsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCiAgKi8KIHN0YXRpYyBpbnQgaW9fb3ZlcmxhcHNf YmxvY2soc3RydWN0IHBvb2wgKnBvb2wsIHN0cnVjdCBiaW8gKmJpbykKIHsKLQlyZXR1cm4gYmlv LT5iaV9zaXplID09IChwb29sLT5zZWN0b3JzX3Blcl9ibG9jayA8PCBTRUNUT1JfU0hJRlQpOwor CXJldHVybiBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9PQorCQkocG9vbC0+c2VjdG9yc19wZXJfYmxv Y2sgPDwgU0VDVE9SX1NISUZUKTsKIH0KIAogc3RhdGljIGludCBpb19vdmVyd3JpdGVzX2Jsb2Nr KHN0cnVjdCBwb29sICpwb29sLCBzdHJ1Y3QgYmlvICpiaW8pCkBAIC0xMTMwLDcgKzExMzIsNyBA QCBzdGF0aWMgdm9pZCBwcm9jZXNzX3NoYXJlZF9iaW8oc3RydWN0IHRoaW5fYyAqdGMsIHN0cnVj dCBiaW8gKmJpbywKIAlpZiAoYmlvX2RldGFpbihwb29sLCAma2V5LCBiaW8sICZjZWxsKSkKIAkJ cmV0dXJuOwogCi0JaWYgKGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFICYmIGJpby0+Ymlfc2l6 ZSkKKwlpZiAoYmlvX2RhdGFfZGlyKGJpbykgPT0gV1JJVEUgJiYgYmlvLT5iaV9pdGVyLmJpX3Np emUpCiAJCWJyZWFrX3NoYXJpbmcodGMsIGJpbywgYmxvY2ssICZrZXksIGxvb2t1cF9yZXN1bHQs IGNlbGwpOwogCWVsc2UgewogCQlzdHJ1Y3QgZG1fdGhpbl9lbmRpb19ob29rICpoID0gZG1fcGVy X2Jpb19kYXRhKGJpbywgc2l6ZW9mKHN0cnVjdCBkbV90aGluX2VuZGlvX2hvb2spKTsKQEAgLTEx NTMsNyArMTE1NSw3IEBAIHN0YXRpYyB2b2lkIHByb3Zpc2lvbl9ibG9jayhzdHJ1Y3QgdGhpbl9j ICp0Yywgc3RydWN0IGJpbyAqYmlvLCBkbV9ibG9ja190IGJsb2NrCiAJLyoKIAkgKiBSZW1hcCBl bXB0eSBiaW9zIChmbHVzaGVzKSBpbW1lZGlhdGVseSwgd2l0aG91dCBwcm92aXNpb25pbmcuCiAJ ICovCi0JaWYgKCFiaW8tPmJpX3NpemUpIHsKKwlpZiAoIWJpby0+YmlfaXRlci5iaV9zaXplKSB7 CiAJCWluY19hbGxfaW9fZW50cnkocG9vbCwgYmlvKTsKIAkJY2VsbF9kZWZlcl9ub19ob2xkZXIo dGMsIGNlbGwpOwogCkBAIC0xMjUzLDcgKzEyNTUsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2Jp b19yZWFkX29ubHkoc3RydWN0IHRoaW5fYyAqdGMsIHN0cnVjdCBiaW8gKmJpbykKIAlyID0gZG1f dGhpbl9maW5kX2Jsb2NrKHRjLT50ZCwgYmxvY2ssIDEsICZsb29rdXBfcmVzdWx0KTsKIAlzd2l0 Y2ggKHIpIHsKIAljYXNlIDA6Ci0JCWlmIChsb29rdXBfcmVzdWx0LnNoYXJlZCAmJiAocncgPT0g V1JJVEUpICYmIGJpby0+Ymlfc2l6ZSkKKwkJaWYgKGxvb2t1cF9yZXN1bHQuc2hhcmVkICYmIChy dyA9PSBXUklURSkgJiYgYmlvLT5iaV9pdGVyLmJpX3NpemUpCiAJCQliaW9faW9fZXJyb3IoYmlv KTsKIAkJZWxzZSB7CiAJCQlpbmNfYWxsX2lvX2VudHJ5KHRjLT5wb29sLCBiaW8pOwpAQCAtMjg2 Nyw3ICsyODY5LDcgQEAgb3V0X3VubG9jazoKIAogc3RhdGljIGludCB0aGluX21hcChzdHJ1Y3Qg ZG1fdGFyZ2V0ICp0aSwgc3RydWN0IGJpbyAqYmlvKQogewotCWJpby0+Ymlfc2VjdG9yID0gZG1f dGFyZ2V0X29mZnNldCh0aSwgYmlvLT5iaV9zZWN0b3IpOworCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCXJl dHVybiB0aGluX2Jpb19tYXAodGksIGJpbyk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2Rt LXZlcml0eS5jIGIvZHJpdmVycy9tZC9kbS12ZXJpdHkuYwppbmRleCA0Yjc5NDFkLi4xMzJiMzE1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLXZlcml0eS5jCisrKyBiL2RyaXZlcnMvbWQvZG0t dmVyaXR5LmMKQEAgLTQ5Myw5ICs0OTMsOSBAQCBzdGF0aWMgaW50IHZlcml0eV9tYXAoc3RydWN0 IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAlzdHJ1Y3QgZG1fdmVyaXR5X2lvICpp bzsKIAogCWJpby0+YmlfYmRldiA9IHYtPmRhdGFfZGV2LT5iZGV2OwotCWJpby0+Ymlfc2VjdG9y ID0gdmVyaXR5X21hcF9zZWN0b3IodiwgYmlvLT5iaV9zZWN0b3IpOworCWJpby0+YmlfaXRlci5i aV9zZWN0b3IgPSB2ZXJpdHlfbWFwX3NlY3Rvcih2LCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsK IAotCWlmICgoKHVuc2lnbmVkKWJpby0+Ymlfc2VjdG9yIHwgYmlvX3NlY3RvcnMoYmlvKSkgJgor CWlmICgoKHVuc2lnbmVkKWJpby0+YmlfaXRlci5iaV9zZWN0b3IgfCBiaW9fc2VjdG9ycyhiaW8p KSAmCiAJICAgICgoMSA8PCAodi0+ZGF0YV9kZXZfYmxvY2tfYml0cyAtIFNFQ1RPUl9TSElGVCkp IC0gMSkpIHsKIAkJRE1FUlJfTElNSVQoInVuYWxpZ25lZCBpbyIpOwogCQlyZXR1cm4gLUVJTzsK QEAgLTUxNCw4ICs1MTQsOCBAQCBzdGF0aWMgaW50IHZlcml0eV9tYXAoc3RydWN0IGRtX3Rhcmdl dCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAlpby0+diA9IHY7CiAJaW8tPm9yaWdfYmlfZW5kX2lv ID0gYmlvLT5iaV9lbmRfaW87CiAJaW8tPm9yaWdfYmlfcHJpdmF0ZSA9IGJpby0+YmlfcHJpdmF0 ZTsKLQlpby0+YmxvY2sgPSBiaW8tPmJpX3NlY3RvciA+PiAodi0+ZGF0YV9kZXZfYmxvY2tfYml0 cyAtIFNFQ1RPUl9TSElGVCk7Ci0JaW8tPm5fYmxvY2tzID0gYmlvLT5iaV9zaXplID4+IHYtPmRh dGFfZGV2X2Jsb2NrX2JpdHM7CisJaW8tPmJsb2NrID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+ PiAodi0+ZGF0YV9kZXZfYmxvY2tfYml0cyAtIFNFQ1RPUl9TSElGVCk7CisJaW8tPm5fYmxvY2tz ID0gYmlvLT5iaV9pdGVyLmJpX3NpemUgPj4gdi0+ZGF0YV9kZXZfYmxvY2tfYml0czsKIAogCWJp by0+YmlfZW5kX2lvID0gdmVyaXR5X2VuZF9pbzsKIAliaW8tPmJpX3ByaXZhdGUgPSBpbzsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0uYyBiL2RyaXZlcnMvbWQvZG0uYwppbmRleCAwNzA0YzUy Li5jY2QwNjRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLmMKKysrIGIvZHJpdmVycy9tZC9k bS5jCkBAIC01NzUsNyArNTc1LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRfaW9fYWNjdChzdHJ1Y3Qg ZG1faW8gKmlvKQogCQlhdG9taWNfaW5jX3JldHVybigmbWQtPnBlbmRpbmdbcnddKSk7CiAKIAlp ZiAodW5saWtlbHkoZG1fc3RhdHNfdXNlZCgmbWQtPnN0YXRzKSkpCi0JCWRtX3N0YXRzX2FjY291 bnRfaW8oJm1kLT5zdGF0cywgYmlvLT5iaV9ydywgYmlvLT5iaV9zZWN0b3IsCisJCWRtX3N0YXRz X2FjY291bnRfaW8oJm1kLT5zdGF0cywgYmlvLT5iaV9ydywgYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciwKIAkJCQkgICAgYmlvX3NlY3RvcnMoYmlvKSwgZmFsc2UsIDAsICZpby0+c3RhdHNfYXV4KTsK IH0KIApAQCAtNTkzLDcgKzU5Myw3IEBAIHN0YXRpYyB2b2lkIGVuZF9pb19hY2N0KHN0cnVjdCBk bV9pbyAqaW8pCiAJcGFydF9zdGF0X3VubG9jaygpOwogCiAJaWYgKHVubGlrZWx5KGRtX3N0YXRz X3VzZWQoJm1kLT5zdGF0cykpKQotCQlkbV9zdGF0c19hY2NvdW50X2lvKCZtZC0+c3RhdHMsIGJp by0+YmlfcncsIGJpby0+Ymlfc2VjdG9yLAorCQlkbV9zdGF0c19hY2NvdW50X2lvKCZtZC0+c3Rh dHMsIGJpby0+YmlfcncsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJCQkJICAgIGJpb19zZWN0 b3JzKGJpbyksIHRydWUsIGR1cmF0aW9uLCAmaW8tPnN0YXRzX2F1eCk7CiAKIAkvKgpAQCAtNzQy LDcgKzc0Miw3IEBAIHN0YXRpYyB2b2lkIGRlY19wZW5kaW5nKHN0cnVjdCBkbV9pbyAqaW8sIGlu dCBlcnJvcikKIAkJaWYgKGlvX2Vycm9yID09IERNX0VORElPX1JFUVVFVUUpCiAJCQlyZXR1cm47 CiAKLQkJaWYgKChiaW8tPmJpX3J3ICYgUkVRX0ZMVVNIKSAmJiBiaW8tPmJpX3NpemUpIHsKKwkJ aWYgKChiaW8tPmJpX3J3ICYgUkVRX0ZMVVNIKSAmJiBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSkgewog CQkJLyoKIAkJCSAqIFByZWZsdXNoIGRvbmUgZm9yIGZsdXNoIHdpdGggZGF0YSwgcmVpc3N1ZQog CQkJICogd2l0aG91dCBSRVFfRkxVU0guCkBAIC03OTcsNyArNzk3LDcgQEAgc3RhdGljIHZvaWQg ZW5kX2Nsb25lX2JpbyhzdHJ1Y3QgYmlvICpjbG9uZSwgaW50IGVycm9yKQogCXN0cnVjdCBkbV9y cV9jbG9uZV9iaW9faW5mbyAqaW5mbyA9IGNsb25lLT5iaV9wcml2YXRlOwogCXN0cnVjdCBkbV9y cV90YXJnZXRfaW8gKnRpbyA9IGluZm8tPnRpbzsKIAlzdHJ1Y3QgYmlvICpiaW8gPSBpbmZvLT5v cmlnOwotCXVuc2lnbmVkIGludCBucl9ieXRlcyA9IGluZm8tPm9yaWctPmJpX3NpemU7CisJdW5z aWduZWQgaW50IG5yX2J5dGVzID0gaW5mby0+b3JpZy0+YmlfaXRlci5iaV9zaXplOwogCiAJYmlv X3B1dChjbG9uZSk7CiAKQEAgLTExMjgsNyArMTEyOCw3IEBAIHN0YXRpYyB2b2lkIF9fbWFwX2Jp byhzdHJ1Y3QgZG1fdGFyZ2V0X2lvICp0aW8pCiAJICogdGhpcyBpby4KIAkgKi8KIAlhdG9taWNf aW5jKCZ0aW8tPmlvLT5pb19jb3VudCk7Ci0Jc2VjdG9yID0gY2xvbmUtPmJpX3NlY3RvcjsKKwlz ZWN0b3IgPSBjbG9uZS0+YmlfaXRlci5iaV9zZWN0b3I7CiAJciA9IHRpLT50eXBlLT5tYXAodGks IGNsb25lKTsKIAlpZiAociA9PSBETV9NQVBJT19SRU1BUFBFRCkgewogCQkvKiB0aGUgYmlvIGhh cyBiZWVuIHJlbWFwcGVkIHNvIGRpc3BhdGNoIGl0ICovCkBAIC0xMTYwLDEzICsxMTYwLDEzIEBA IHN0cnVjdCBjbG9uZV9pbmZvIHsKIAogc3RhdGljIHZvaWQgYmlvX3NldHVwX3NlY3RvcihzdHJ1 Y3QgYmlvICpiaW8sIHNlY3Rvcl90IHNlY3Rvciwgc2VjdG9yX3QgbGVuKQogewotCWJpby0+Ymlf c2VjdG9yID0gc2VjdG9yOwotCWJpby0+Ymlfc2l6ZSA9IHRvX2J5dGVzKGxlbik7CisJYmlvLT5i aV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IHRvX2J5 dGVzKGxlbik7CiB9CiAKIHN0YXRpYyB2b2lkIGJpb19zZXR1cF9idihzdHJ1Y3QgYmlvICpiaW8s IHVuc2lnbmVkIHNob3J0IGlkeCwgdW5zaWduZWQgc2hvcnQgYnZfY291bnQpCiB7Ci0JYmlvLT5i aV9pZHggPSBpZHg7CisJYmlvLT5iaV9pdGVyLmJpX2lkeCA9IGlkeDsKIAliaW8tPmJpX3ZjbnQg PSBpZHggKyBidl9jb3VudDsKIAliaW8tPmJpX2ZsYWdzICY9IH4oMSA8PCBCSU9fU0VHX1ZBTElE KTsKIH0KQEAgLTEyMDIsNyArMTIwMiw3IEBAIHN0YXRpYyB2b2lkIGNsb25lX3NwbGl0X2Jpbyhz dHJ1Y3QgZG1fdGFyZ2V0X2lvICp0aW8sIHN0cnVjdCBiaW8gKmJpbywKIAljbG9uZS0+Ymlfcncg PSBiaW8tPmJpX3J3OwogCWNsb25lLT5iaV92Y250ID0gMTsKIAljbG9uZS0+YmlfaW9fdmVjLT5i dl9vZmZzZXQgPSBvZmZzZXQ7Ci0JY2xvbmUtPmJpX2lvX3ZlYy0+YnZfbGVuID0gY2xvbmUtPmJp X3NpemU7CisJY2xvbmUtPmJpX2lvX3ZlYy0+YnZfbGVuID0gY2xvbmUtPmJpX2l0ZXIuYmlfc2l6 ZTsKIAljbG9uZS0+YmlfZmxhZ3MgfD0gMSA8PCBCSU9fQ0xPTkVEOwogCiAJY2xvbmVfYmlvX2lu dGVncml0eShiaW8sIGNsb25lLCBpZHgsIGxlbiwgb2Zmc2V0LCAxKTsKQEAgLTEyMjIsNyArMTIy Miw4IEBAIHN0YXRpYyB2b2lkIGNsb25lX2JpbyhzdHJ1Y3QgZG1fdGFyZ2V0X2lvICp0aW8sIHN0 cnVjdCBiaW8gKmJpbywKIAliaW9fc2V0dXBfc2VjdG9yKGNsb25lLCBzZWN0b3IsIGxlbik7CiAJ YmlvX3NldHVwX2J2KGNsb25lLCBpZHgsIGJ2X2NvdW50KTsKIAotCWlmIChpZHggIT0gYmlvLT5i aV9pZHggfHwgY2xvbmUtPmJpX3NpemUgPCBiaW8tPmJpX3NpemUpCisJaWYgKGlkeCAhPSBiaW8t PmJpX2l0ZXIuYmlfaWR4IHx8CisJICAgIGNsb25lLT5iaV9pdGVyLmJpX3NpemUgPCBiaW8tPmJp X2l0ZXIuYmlfc2l6ZSkKIAkJdHJpbSA9IDE7CiAJY2xvbmVfYmlvX2ludGVncml0eShiaW8sIGNs b25lLCBpZHgsIGxlbiwgMCwgdHJpbSk7CiB9CkBAIC0xNTEwLDggKzE1MTEsOCBAQCBzdGF0aWMg dm9pZCBfX3NwbGl0X2FuZF9wcm9jZXNzX2JpbyhzdHJ1Y3QgbWFwcGVkX2RldmljZSAqbWQsCiAJ Y2kuaW8tPmJpbyA9IGJpbzsKIAljaS5pby0+bWQgPSBtZDsKIAlzcGluX2xvY2tfaW5pdCgmY2ku aW8tPmVuZGlvX2xvY2spOwotCWNpLnNlY3RvciA9IGJpby0+Ymlfc2VjdG9yOwotCWNpLmlkeCA9 IGJpby0+YmlfaWR4OworCWNpLnNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CisJY2ku aWR4ID0gYmlvLT5iaV9pdGVyLmJpX2lkeDsKIAogCXN0YXJ0X2lvX2FjY3QoY2kuaW8pOwogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL21kL2ZhdWx0eS5jIGIvZHJpdmVycy9tZC9mYXVsdHkuYwppbmRl eCAzMTkzYWVmLi5lOGI0NTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2ZhdWx0eS5jCisrKyBi L2RyaXZlcnMvbWQvZmF1bHR5LmMKQEAgLTc0LDggKzc0LDggQEAgc3RhdGljIHZvaWQgZmF1bHR5 X2ZhaWwoc3RydWN0IGJpbyAqYmlvLCBpbnQgZXJyb3IpCiB7CiAJc3RydWN0IGJpbyAqYiA9IGJp by0+YmlfcHJpdmF0ZTsKIAotCWItPmJpX3NpemUgPSBiaW8tPmJpX3NpemU7Ci0JYi0+Ymlfc2Vj dG9yID0gYmlvLT5iaV9zZWN0b3I7CisJYi0+YmlfaXRlci5iaV9zaXplID0gYmlvLT5iaV9pdGVy LmJpX3NpemU7CisJYi0+YmlfaXRlci5iaV9zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y OwogCiAJYmlvX3B1dChiaW8pOwogCkBAIC0xODUsMjYgKzE4NSwzMSBAQCBzdGF0aWMgdm9pZCBt YWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqYmlvKQogCQkJcmV0 dXJuOwogCQl9CiAKLQkJaWYgKGNoZWNrX3NlY3Rvcihjb25mLCBiaW8tPmJpX3NlY3RvciwgYmlv X2VuZF9zZWN0b3IoYmlvKSwgV1JJVEUpKQorCQlpZiAoY2hlY2tfc2VjdG9yKGNvbmYsIGJpby0+ YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJIGJpb19lbmRfc2VjdG9yKGJpbyksIFdSSVRFKSkKIAkJ CWZhaWxpdCA9IDE7CiAJCWlmIChjaGVja19tb2RlKGNvbmYsIFdyaXRlUGVyc2lzdGVudCkpIHsK LQkJCWFkZF9zZWN0b3IoY29uZiwgYmlvLT5iaV9zZWN0b3IsIFdyaXRlUGVyc2lzdGVudCk7CisJ CQlhZGRfc2VjdG9yKGNvbmYsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJICAgV3JpdGVQ ZXJzaXN0ZW50KTsKIAkJCWZhaWxpdCA9IDE7CiAJCX0KIAkJaWYgKGNoZWNrX21vZGUoY29uZiwg V3JpdGVUcmFuc2llbnQpKQogCQkJZmFpbGl0ID0gMTsKIAl9IGVsc2UgewogCQkvKiByZWFkIHJl cXVlc3QgKi8KLQkJaWYgKGNoZWNrX3NlY3Rvcihjb25mLCBiaW8tPmJpX3NlY3RvciwgYmlvX2Vu ZF9zZWN0b3IoYmlvKSwgUkVBRCkpCisJCWlmIChjaGVja19zZWN0b3IoY29uZiwgYmlvLT5iaV9p dGVyLmJpX3NlY3RvciwKKwkJCQkgYmlvX2VuZF9zZWN0b3IoYmlvKSwgUkVBRCkpCiAJCQlmYWls aXQgPSAxOwogCQlpZiAoY2hlY2tfbW9kZShjb25mLCBSZWFkVHJhbnNpZW50KSkKIAkJCWZhaWxp dCA9IDE7CiAJCWlmIChjaGVja19tb2RlKGNvbmYsIFJlYWRQZXJzaXN0ZW50KSkgewotCQkJYWRk X3NlY3Rvcihjb25mLCBiaW8tPmJpX3NlY3RvciwgUmVhZFBlcnNpc3RlbnQpOworCQkJYWRkX3Nl Y3Rvcihjb25mLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJCSAgIFJlYWRQZXJzaXN0ZW50 KTsKIAkJCWZhaWxpdCA9IDE7CiAJCX0KIAkJaWYgKGNoZWNrX21vZGUoY29uZiwgUmVhZEZpeGFi bGUpKSB7Ci0JCQlhZGRfc2VjdG9yKGNvbmYsIGJpby0+Ymlfc2VjdG9yLCBSZWFkRml4YWJsZSk7 CisJCQlhZGRfc2VjdG9yKGNvbmYsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJICAgUmVh ZEZpeGFibGUpOwogCQkJZmFpbGl0ID0gMTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWQvbGluZWFyLmMgYi9kcml2ZXJzL21kL2xpbmVhci5jCmluZGV4IGYwM2ZhYmQuLmZiM2IwZDAg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbGluZWFyLmMKKysrIGIvZHJpdmVycy9tZC9saW5lYXIu YwpAQCAtMjk3LDE5ICsyOTcsMTkgQEAgc3RhdGljIHZvaWQgbGluZWFyX21ha2VfcmVxdWVzdChz dHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJfQogCiAJcmN1X3JlYWRfbG9j aygpOwotCXRtcF9kZXYgPSB3aGljaF9kZXYobWRkZXYsIGJpby0+Ymlfc2VjdG9yKTsKKwl0bXBf ZGV2ID0gd2hpY2hfZGV2KG1kZGV2LCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAlzdGFydF9z ZWN0b3IgPSB0bXBfZGV2LT5lbmRfc2VjdG9yIC0gdG1wX2Rldi0+cmRldi0+c2VjdG9yczsKIAog Ci0JaWYgKHVubGlrZWx5KGJpby0+Ymlfc2VjdG9yID49ICh0bXBfZGV2LT5lbmRfc2VjdG9yKQot CQkgICAgIHx8IChiaW8tPmJpX3NlY3RvciA8IHN0YXJ0X3NlY3RvcikpKSB7CisJaWYgKHVubGlr ZWx5KGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPj0gKHRtcF9kZXYtPmVuZF9zZWN0b3IpCisJCSAg ICAgfHwgKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPCBzdGFydF9zZWN0b3IpKSkgewogCQljaGFy IGJbQkRFVk5BTUVfU0laRV07CiAKIAkJcHJpbnRrKEtFUk5fRVJSCiAJCSAgICAgICAibWQvbGlu ZWFyOiVzOiBtYWtlX3JlcXVlc3Q6IFNlY3RvciAlbGx1IG91dCBvZiBib3VuZHMgb24gIgogCQkg ICAgICAgImRldiAlczogJWxsdSBzZWN0b3JzLCBvZmZzZXQgJWxsdVxuIiwKIAkJICAgICAgIG1k bmFtZShtZGRldiksCi0JCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlfc2VjdG9y LAorCQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAog CQkgICAgICAgYmRldm5hbWUodG1wX2Rldi0+cmRldi0+YmRldiwgYiksCiAJCSAgICAgICAodW5z aWduZWQgbG9uZyBsb25nKXRtcF9kZXYtPnJkZXYtPnNlY3RvcnMsCiAJCSAgICAgICAodW5zaWdu ZWQgbG9uZyBsb25nKXN0YXJ0X3NlY3Rvcik7CkBAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIHZv aWQgbGluZWFyX21ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpi aW8pCiAKIAkJcmN1X3JlYWRfdW5sb2NrKCk7CiAKLQkJYnAgPSBiaW9fc3BsaXQoYmlvLCBlbmRf c2VjdG9yIC0gYmlvLT5iaV9zZWN0b3IpOworCQlicCA9IGJpb19zcGxpdChiaW8sIGVuZF9zZWN0 b3IgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCQlsaW5lYXJfbWFrZV9yZXF1ZXN0KG1k ZGV2LCAmYnAtPmJpbzEpOwogCQlsaW5lYXJfbWFrZV9yZXF1ZXN0KG1kZGV2LCAmYnAtPmJpbzIp OwpAQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyB2b2lkIGxpbmVhcl9tYWtlX3JlcXVlc3Qoc3Ry dWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqYmlvKQogCX0KIAkJICAgIAogCWJpby0+Ymlf YmRldiA9IHRtcF9kZXYtPnJkZXYtPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBiaW8tPmJpX3Nl Y3RvciAtIHN0YXJ0X3NlY3RvcgorCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yIC0gc3RhcnRfc2VjdG9yCiAJCSsgdG1wX2Rldi0+cmRldi0+ZGF0YV9vZmZz ZXQ7CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvbWQuYyBi L2RyaXZlcnMvbWQvbWQuYwppbmRleCA3MzliMWVjLi5iMDdmZWQzIDEwMDY0NAotLS0gYS9kcml2 ZXJzL21kL21kLmMKKysrIGIvZHJpdmVycy9tZC9tZC5jCkBAIC0zOTMsNyArMzkzLDcgQEAgc3Rh dGljIHZvaWQgbWRfc3VibWl0X2ZsdXNoX2RhdGEoc3RydWN0IHdvcmtfc3RydWN0ICp3cykKIAlz dHJ1Y3QgbWRkZXYgKm1kZGV2ID0gY29udGFpbmVyX29mKHdzLCBzdHJ1Y3QgbWRkZXYsIGZsdXNo X3dvcmspOwogCXN0cnVjdCBiaW8gKmJpbyA9IG1kZGV2LT5mbHVzaF9iaW87CiAKLQlpZiAoYmlv LT5iaV9zaXplID09IDApCisJaWYgKGJpby0+YmlfaXRlci5iaV9zaXplID09IDApCiAJCS8qIGFu IGVtcHR5IGJhcnJpZXIgLSBhbGwgZG9uZSAqLwogCQliaW9fZW5kaW8oYmlvLCAwKTsKIAllbHNl IHsKQEAgLTc1NCw3ICs3NTQsNyBAQCB2b2lkIG1kX3N1cGVyX3dyaXRlKHN0cnVjdCBtZGRldiAq bWRkZXYsIHN0cnVjdCBtZF9yZGV2ICpyZGV2LAogCXN0cnVjdCBiaW8gKmJpbyA9IGJpb19hbGxv Y19tZGRldihHRlBfTk9JTywgMSwgbWRkZXYpOwogCiAJYmlvLT5iaV9iZGV2ID0gcmRldi0+bWV0 YV9iZGV2ID8gcmRldi0+bWV0YV9iZGV2IDogcmRldi0+YmRldjsKLQliaW8tPmJpX3NlY3RvciA9 IHNlY3RvcjsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yOwogCWJpb19hZGRfcGFn ZShiaW8sIHBhZ2UsIHNpemUsIDApOwogCWJpby0+YmlfcHJpdmF0ZSA9IHJkZXY7CiAJYmlvLT5i aV9lbmRfaW8gPSBzdXBlcl93cml0dGVuOwpAQCAtNzg1LDEzICs3ODUsMTMgQEAgaW50IHN5bmNf cGFnZV9pbyhzdHJ1Y3QgbWRfcmRldiAqcmRldiwgc2VjdG9yX3Qgc2VjdG9yLCBpbnQgc2l6ZSwK IAliaW8tPmJpX2JkZXYgPSAobWV0YWRhdGFfb3AgJiYgcmRldi0+bWV0YV9iZGV2KSA/CiAJCXJk ZXYtPm1ldGFfYmRldiA6IHJkZXYtPmJkZXY7CiAJaWYgKG1ldGFkYXRhX29wKQotCQliaW8tPmJp X3NlY3RvciA9IHNlY3RvciArIHJkZXYtPnNiX3N0YXJ0OworCQliaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yID0gc2VjdG9yICsgcmRldi0+c2Jfc3RhcnQ7CiAJZWxzZSBpZiAocmRldi0+bWRkZXYtPnJl c2hhcGVfcG9zaXRpb24gIT0gTWF4U2VjdG9yICYmCiAJCSAocmRldi0+bWRkZXYtPnJlc2hhcGVf YmFja3dhcmRzID09CiAJCSAgKHNlY3RvciA+PSByZGV2LT5tZGRldi0+cmVzaGFwZV9wb3NpdGlv bikpKQotCQliaW8tPmJpX3NlY3RvciA9IHNlY3RvciArIHJkZXYtPm5ld19kYXRhX29mZnNldDsK KwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArIHJkZXYtPm5ld19kYXRhX29mZnNl dDsKIAllbHNlCi0JCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yICsgcmRldi0+ZGF0YV9vZmZzZXQ7 CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3IgKyByZGV2LT5kYXRhX29mZnNldDsK IAliaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBzaXplLCAwKTsKIAlzdWJtaXRfYmlvX3dhaXQocncs IGJpbyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvbXVsdGlwYXRoLmMgYi9kcml2ZXJzL21k L211bHRpcGF0aC5jCmluZGV4IDE2NDJlYWUuLjg0OWFkMzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bWQvbXVsdGlwYXRoLmMKKysrIGIvZHJpdmVycy9tZC9tdWx0aXBhdGguYwpAQCAtMTAwLDcgKzEw MCw3IEBAIHN0YXRpYyB2b2lkIG11bHRpcGF0aF9lbmRfcmVxdWVzdChzdHJ1Y3QgYmlvICpiaW8s IGludCBlcnJvcikKIAkJbWRfZXJyb3IgKG1wX2JoLT5tZGRldiwgcmRldik7CiAJCXByaW50ayhL RVJOX0VSUiAibXVsdGlwYXRoOiAlczogcmVzY2hlZHVsaW5nIHNlY3RvciAlbGx1XG4iLCAKIAkJ ICAgICAgIGJkZXZuYW1lKHJkZXYtPmJkZXYsYiksIAotCQkgICAgICAgKHVuc2lnbmVkIGxvbmcg bG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+ YmlfaXRlci5iaV9zZWN0b3IpOwogCQltdWx0aXBhdGhfcmVzY2hlZHVsZV9yZXRyeShtcF9iaCk7 CiAJfSBlbHNlCiAJCW11bHRpcGF0aF9lbmRfYmhfaW8obXBfYmgsIGVycm9yKTsKQEAgLTEzMiw3 ICsxMzIsNyBAQCBzdGF0aWMgdm9pZCBtdWx0aXBhdGhfbWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRl diAqbWRkZXYsIHN0cnVjdCBiaW8gKiBiaW8pCiAJbXVsdGlwYXRoID0gY29uZi0+bXVsdGlwYXRo cyArIG1wX2JoLT5wYXRoOwogCiAJbXBfYmgtPmJpbyA9ICpiaW87Ci0JbXBfYmgtPmJpby5iaV9z ZWN0b3IgKz0gbXVsdGlwYXRoLT5yZGV2LT5kYXRhX29mZnNldDsKKwltcF9iaC0+YmlvLmJpX2l0 ZXIuYmlfc2VjdG9yICs9IG11bHRpcGF0aC0+cmRldi0+ZGF0YV9vZmZzZXQ7CiAJbXBfYmgtPmJp by5iaV9iZGV2ID0gbXVsdGlwYXRoLT5yZGV2LT5iZGV2OwogCW1wX2JoLT5iaW8uYmlfcncgfD0g UkVRX0ZBSUxGQVNUX1RSQU5TUE9SVDsKIAltcF9iaC0+YmlvLmJpX2VuZF9pbyA9IG11bHRpcGF0 aF9lbmRfcmVxdWVzdDsKQEAgLTM1NSwyMSArMzU1LDIyIEBAIHN0YXRpYyB2b2lkIG11bHRpcGF0 aGQoc3RydWN0IG1kX3RocmVhZCAqdGhyZWFkKQogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZj b25mLT5kZXZpY2VfbG9jaywgZmxhZ3MpOwogCiAJCWJpbyA9ICZtcF9iaC0+YmlvOwotCQliaW8t PmJpX3NlY3RvciA9IG1wX2JoLT5tYXN0ZXJfYmlvLT5iaV9zZWN0b3I7CisJCWJpby0+YmlfaXRl ci5iaV9zZWN0b3IgPSBtcF9iaC0+bWFzdGVyX2Jpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCQog CQlpZiAoKG1wX2JoLT5wYXRoID0gbXVsdGlwYXRoX21hcCAoY29uZikpPDApIHsKIAkJCXByaW50 ayhLRVJOX0FMRVJUICJtdWx0aXBhdGg6ICVzOiB1bnJlY292ZXJhYmxlIElPIHJlYWQiCiAJCQkJ IiBlcnJvciBmb3IgYmxvY2sgJWxsdVxuIiwKIAkJCQliZGV2bmFtZShiaW8tPmJpX2JkZXYsYiks Ci0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQkJKHVuc2lnbmVk IGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJCW11bHRpcGF0aF9lbmRfYmhf aW8obXBfYmgsIC1FSU8pOwogCQl9IGVsc2UgewogCQkJcHJpbnRrKEtFUk5fRVJSICJtdWx0aXBh dGg6ICVzOiByZWRpcmVjdGluZyBzZWN0b3IgJWxsdSIKIAkJCQkiIHRvIGFub3RoZXIgSU8gcGF0 aFxuIiwKIAkJCQliZGV2bmFtZShiaW8tPmJpX2JkZXYsYiksCi0JCQkJKHVuc2lnbmVkIGxvbmcg bG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yKTsKIAkJCSpiaW8gPSAqKG1wX2JoLT5tYXN0ZXJfYmlvKTsKLQkJCWJpby0+ Ymlfc2VjdG9yICs9IGNvbmYtPm11bHRpcGF0aHNbbXBfYmgtPnBhdGhdLnJkZXYtPmRhdGFfb2Zm c2V0OworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciArPQorCQkJCWNvbmYtPm11bHRpcGF0aHNb bXBfYmgtPnBhdGhdLnJkZXYtPmRhdGFfb2Zmc2V0OwogCQkJYmlvLT5iaV9iZGV2ID0gY29uZi0+ bXVsdGlwYXRoc1ttcF9iaC0+cGF0aF0ucmRldi0+YmRldjsKIAkJCWJpby0+YmlfcncgfD0gUkVR X0ZBSUxGQVNUX1RSQU5TUE9SVDsKIAkJCWJpby0+YmlfZW5kX2lvID0gbXVsdGlwYXRoX2VuZF9y ZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9yYWlkMC5jIGIvZHJpdmVycy9tZC9yYWlk MC5jCmluZGV4IGM0ZDQyMGIuLmUzOGQxZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDAu YworKysgYi9kcml2ZXJzL21kL3JhaWQwLmMKQEAgLTUwMSwxMCArNTAxLDExIEBAIHN0YXRpYyBp bmxpbmUgaW50IGlzX2lvX2luX2NodW5rX2JvdW5kYXJ5KHN0cnVjdCBtZGRldiAqbWRkZXYsCiAJ CQl1bnNpZ25lZCBpbnQgY2h1bmtfc2VjdHMsIHN0cnVjdCBiaW8gKmJpbykKIHsKIAlpZiAobGlr ZWx5KGlzX3Bvd2VyX29mXzIoY2h1bmtfc2VjdHMpKSkgewotCQlyZXR1cm4gY2h1bmtfc2VjdHMg Pj0gKChiaW8tPmJpX3NlY3RvciAmIChjaHVua19zZWN0cy0xKSkKKwkJcmV0dXJuIGNodW5rX3Nl Y3RzID49CisJCQkoKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgJiAoY2h1bmtfc2VjdHMtMSkpCiAJ CQkJCSsgYmlvX3NlY3RvcnMoYmlvKSk7CiAJfSBlbHNlewotCQlzZWN0b3JfdCBzZWN0b3IgPSBi aW8tPmJpX3NlY3RvcjsKKwkJc2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3Rv cjsKIAkJcmV0dXJuIGNodW5rX3NlY3RzID49IChzZWN0b3JfZGl2KHNlY3RvciwgY2h1bmtfc2Vj dHMpCiAJCQkJCQkrIGJpb19zZWN0b3JzKGJpbykpOwogCX0KQEAgLTUyNCw3ICs1MjUsNyBAQCBz dGF0aWMgdm9pZCByYWlkMF9tYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0 IGJpbyAqYmlvKQogCiAJY2h1bmtfc2VjdHMgPSBtZGRldi0+Y2h1bmtfc2VjdG9yczsKIAlpZiAo dW5saWtlbHkoIWlzX2lvX2luX2NodW5rX2JvdW5kYXJ5KG1kZGV2LCBjaHVua19zZWN0cywgYmlv KSkpIHsKLQkJc2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7CisJCXNlY3Rvcl90IHNl Y3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCXN0cnVjdCBiaW9fcGFpciAqYnA7CiAJ CS8qIFNhbml0eSBjaGVjayAtLSBxdWV1ZSBmdW5jdGlvbnMgc2hvdWxkIHByZXZlbnQgdGhpcyBo YXBwZW5pbmcgKi8KIAkJaWYgKGJpb19zZWdtZW50cyhiaW8pID4gMSkKQEAgLTU0NCwxMiArNTQ1 LDEyIEBAIHN0YXRpYyB2b2lkIHJhaWQwX21ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2 LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXJldHVybjsKIAl9CiAKLQlzZWN0b3Jfb2Zmc2V0ID0gYmlv LT5iaV9zZWN0b3I7CisJc2VjdG9yX29mZnNldCA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJ em9uZSA9IGZpbmRfem9uZShtZGRldi0+cHJpdmF0ZSwgJnNlY3Rvcl9vZmZzZXQpOwotCXRtcF9k ZXYgPSBtYXBfc2VjdG9yKG1kZGV2LCB6b25lLCBiaW8tPmJpX3NlY3RvciwKKwl0bXBfZGV2ID0g bWFwX3NlY3RvcihtZGRldiwgem9uZSwgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJCSAgICAg JnNlY3Rvcl9vZmZzZXQpOwogCWJpby0+YmlfYmRldiA9IHRtcF9kZXYtPmJkZXY7Ci0JYmlvLT5i aV9zZWN0b3IgPSBzZWN0b3Jfb2Zmc2V0ICsgem9uZS0+ZGV2X3N0YXJ0ICsKKwliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yID0gc2VjdG9yX29mZnNldCArIHpvbmUtPmRldl9zdGFydCArCiAJCXRtcF9k ZXYtPmRhdGFfb2Zmc2V0OwogCiAJaWYgKHVubGlrZWx5KChiaW8tPmJpX3J3ICYgUkVRX0RJU0NB UkQpICYmCkBAIC01NjYsNyArNTY3LDggQEAgYmFkX21hcDoKIAlwcmludGsoIm1kL3JhaWQwOiVz OiBtYWtlX3JlcXVlc3QgYnVnOiBjYW4ndCBjb252ZXJ0IGJsb2NrIGFjcm9zcyBjaHVua3MiCiAJ ICAgICAgICIgb3IgYmlnZ2VyIHRoYW4gJWRrICVsbHUgJWRcbiIsCiAJICAgICAgIG1kbmFtZSht ZGRldiksIGNodW5rX3NlY3RzIC8gMiwKLQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8t PmJpX3NlY3RvciwgYmlvX3NlY3RvcnMoYmlvKSAvIDIpOworCSAgICAgICAodW5zaWduZWQgbG9u ZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJICAgICAgIGJpb19zZWN0b3JzKGJpbykg LyAyKTsKIAogCWJpb19pb19lcnJvcihiaW8pOwogCXJldHVybjsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWQvcmFpZDEuYyBiL2RyaXZlcnMvbWQvcmFpZDEuYwppbmRleCAxZTVhNTQwLi5kYjNiOWQ3 IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQxLmMKKysrIGIvZHJpdmVycy9tZC9yYWlkMS5j CkBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGljIHZvaWQgY2FsbF9iaW9fZW5kaW8oc3RydWN0IHIx YmlvICpyMV9iaW8pCiAJaW50IGRvbmU7CiAJc3RydWN0IHIxY29uZiAqY29uZiA9IHIxX2Jpby0+ bWRkZXYtPnByaXZhdGU7CiAJc2VjdG9yX3Qgc3RhcnRfbmV4dF93aW5kb3cgPSByMV9iaW8tPnN0 YXJ0X25leHRfd2luZG93OwotCXNlY3Rvcl90IGJpX3NlY3RvciA9IGJpby0+Ymlfc2VjdG9yOwor CXNlY3Rvcl90IGJpX3NlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAKIAlpZiAoYmlv LT5iaV9waHlzX3NlZ21lbnRzKSB7CiAJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0yNjUsOSAr MjY1LDggQEAgc3RhdGljIHZvaWQgcmFpZF9lbmRfYmlvX2lvKHN0cnVjdCByMWJpbyAqcjFfYmlv KQogCWlmICghdGVzdF9hbmRfc2V0X2JpdChSMUJJT19SZXR1cm5lZCwgJnIxX2Jpby0+c3RhdGUp KSB7CiAJCXByX2RlYnVnKCJyYWlkMTogc3luYyBlbmQgJXMgb24gc2VjdG9ycyAlbGx1LSVsbHVc biIsCiAJCQkgKGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFKSA/ICJ3cml0ZSIgOiAicmVhZCIs Ci0JCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgYmlvLT5iaV9zZWN0b3IsCi0JCQkgKHVuc2lnbmVk IGxvbmcgbG9uZykgYmlvLT5iaV9zZWN0b3IgKwotCQkJIGJpb19zZWN0b3JzKGJpbykgLSAxKTsK KwkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJICh1 bnNpZ25lZCBsb25nIGxvbmcpIGJpb19lbmRfc2VjdG9yKGJpbykgLSAxKTsKIAogCQljYWxsX2Jp b19lbmRpbyhyMV9iaW8pOwogCX0KQEAgLTQ2Niw5ICs0NjUsOCBAQCBzdGF0aWMgdm9pZCByYWlk MV9lbmRfd3JpdGVfcmVxdWVzdChzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnJvcikKIAkJCQlzdHJ1 Y3QgYmlvICptYmlvID0gcjFfYmlvLT5tYXN0ZXJfYmlvOwogCQkJCXByX2RlYnVnKCJyYWlkMTog YmVoaW5kIGVuZCB3cml0ZSBzZWN0b3JzIgogCQkJCQkgIiAlbGx1LSVsbHVcbiIsCi0JCQkJCSAo dW5zaWduZWQgbG9uZyBsb25nKSBtYmlvLT5iaV9zZWN0b3IsCi0JCQkJCSAodW5zaWduZWQgbG9u ZyBsb25nKSBtYmlvLT5iaV9zZWN0b3IgKwotCQkJCQkgYmlvX3NlY3RvcnMobWJpbykgLSAxKTsK KwkJCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIG1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJ CQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgYmlvX2VuZF9zZWN0b3IobWJpbykgLSAxKTsKIAkJCQlj YWxsX2Jpb19lbmRpbyhyMV9iaW8pOwogCQkJfQogCQl9CkBAIC04NzUsNyArODczLDcgQEAgc3Rh dGljIGJvb2wgbmVlZF90b193YWl0X2Zvcl9zeW5jKHN0cnVjdCByMWNvbmYgKmNvbmYsIHN0cnVj dCBiaW8gKmJpbykKIAkJZWxzZSBpZiAoKGNvbmYtPm5leHRfcmVzeW5jIC0gUkVTWU5DX1dJTkRP V19TRUNUT1JTCiAJCQkJPj0gYmlvX2VuZF9zZWN0b3IoYmlvKSkgfHwKIAkJCSAoY29uZi0+bmV4 dF9yZXN5bmMgKyBORVhUX05PUk1BTElPX0RJU1RBTkNFCi0JCQkJPD0gYmlvLT5iaV9zZWN0b3Ip KQorCQkJCTw9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IpKQogCQkJd2FpdCA9IGZhbHNlOwogCQll bHNlCiAJCQl3YWl0ID0gdHJ1ZTsKQEAgLTkxMywxOSArOTExLDE5IEBAIHN0YXRpYyBzZWN0b3Jf dCB3YWl0X2JhcnJpZXIoc3RydWN0IHIxY29uZiAqY29uZiwgc3RydWN0IGJpbyAqYmlvKQogCiAJ aWYgKGJpbyAmJiBiaW9fZGF0YV9kaXIoYmlvKSA9PSBXUklURSkgewogCQlpZiAoY29uZi0+bmV4 dF9yZXN5bmMgKyBORVhUX05PUk1BTElPX0RJU1RBTkNFCi0JCSAgICA8PSBiaW8tPmJpX3NlY3Rv cikgeworCQkgICAgPD0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcikgewogCQkJaWYgKGNvbmYtPnN0 YXJ0X25leHRfd2luZG93ID09IE1heFNlY3RvcikKIAkJCQljb25mLT5zdGFydF9uZXh0X3dpbmRv dyA9CiAJCQkJCWNvbmYtPm5leHRfcmVzeW5jICsKIAkJCQkJTkVYVF9OT1JNQUxJT19ESVNUQU5D RTsKIAogCQkJaWYgKChjb25mLT5zdGFydF9uZXh0X3dpbmRvdyArIE5FWFRfTk9STUFMSU9fRElT VEFOQ0UpCi0JCQkgICAgPD0gYmlvLT5iaV9zZWN0b3IpCisJCQkgICAgPD0gYmlvLT5iaV9pdGVy LmJpX3NlY3RvcikKIAkJCQljb25mLT5uZXh0X3dpbmRvd19yZXF1ZXN0cysrOwogCQkJZWxzZQog CQkJCWNvbmYtPmN1cnJlbnRfd2luZG93X3JlcXVlc3RzKys7CiAJCX0KLQkJaWYgKGJpby0+Ymlf c2VjdG9yID49IGNvbmYtPnN0YXJ0X25leHRfd2luZG93KQorCQlpZiAoYmlvLT5iaV9pdGVyLmJp X3NlY3RvciA+PSBjb25mLT5zdGFydF9uZXh0X3dpbmRvdykKIAkJCXNlY3RvciA9IGNvbmYtPnN0 YXJ0X25leHRfd2luZG93OwogCX0KIApAQCAtMTAyOCw3ICsxMDI2LDggQEAgZG9fc3luY19pbzoK IAkJaWYgKGJ2ZWNzW2ldLmJ2X3BhZ2UpCiAJCQlwdXRfcGFnZShidmVjc1tpXS5idl9wYWdlKTsK IAlrZnJlZShidmVjcyk7Ci0JcHJfZGVidWcoIiVkQiBiZWhpbmQgYWxsb2MgZmFpbGVkLCBkb2lu ZyBzeW5jIEkvT1xuIiwgYmlvLT5iaV9zaXplKTsKKwlwcl9kZWJ1ZygiJWRCIGJlaGluZCBhbGxv YyBmYWlsZWQsIGRvaW5nIHN5bmMgSS9PXG4iLAorCQkgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwog fQogCiBzdHJ1Y3QgcmFpZDFfcGx1Z19jYiB7CkBAIC0xMTA4LDcgKzExMDcsNyBAQCBzdGF0aWMg dm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykK IAogCWlmIChiaW9fZGF0YV9kaXIoYmlvKSA9PSBXUklURSAmJgogCSAgICBiaW9fZW5kX3NlY3Rv cihiaW8pID4gbWRkZXYtPnN1c3BlbmRfbG8gJiYKLQkgICAgYmlvLT5iaV9zZWN0b3IgPCBtZGRl di0+c3VzcGVuZF9oaSkgeworCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDwgbWRkZXYtPnN1 c3BlbmRfaGkpIHsKIAkJLyogQXMgdGhlIHN1c3BlbmRfKiByYW5nZSBpcyBjb250cm9sbGVkIGJ5 CiAJCSAqIHVzZXJzcGFjZSwgd2Ugd2FudCBhbiBpbnRlcnJ1cHRpYmxlCiAJCSAqIHdhaXQuCkBA IC0xMTE5LDcgKzExMTgsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2 ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykKIAkJCXByZXBhcmVfdG9fd2FpdCgmY29uZi0+d2Fp dF9iYXJyaWVyLAogCQkJCQkmdywgVEFTS19JTlRFUlJVUFRJQkxFKTsKIAkJCWlmIChiaW9fZW5k X3NlY3RvcihiaW8pIDw9IG1kZGV2LT5zdXNwZW5kX2xvIHx8Ci0JCQkgICAgYmlvLT5iaV9zZWN0 b3IgPj0gbWRkZXYtPnN1c3BlbmRfaGkpCisJCQkgICAgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+ PSBtZGRldi0+c3VzcGVuZF9oaSkKIAkJCQlicmVhazsKIAkJCXNjaGVkdWxlKCk7CiAJCX0KQEAg LTExNDEsNyArMTE0MCw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYg Km1kZGV2LCBzdHJ1Y3QgYmlvICogYmlvKQogCXIxX2Jpby0+c2VjdG9ycyA9IGJpb19zZWN0b3Jz KGJpbyk7CiAJcjFfYmlvLT5zdGF0ZSA9IDA7CiAJcjFfYmlvLT5tZGRldiA9IG1kZGV2OwotCXIx X2Jpby0+c2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7CisJcjFfYmlvLT5zZWN0b3IgPSBiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yOwogCiAJLyogV2UgbWlnaHQgbmVlZCB0byBpc3N1ZSBtdWx0aXBsZSBy ZWFkcyB0byBkaWZmZXJlbnQKIAkgKiBkZXZpY2VzIGlmIHRoZXJlIGFyZSBiYWQgYmxvY2tzIGFy b3VuZCwgc28gd2Uga2VlcApAQCAtMTE4MSwxMiArMTE4MCwxMyBAQCByZWFkX2FnYWluOgogCQly MV9iaW8tPnJlYWRfZGlzayA9IHJkaXNrOwogCiAJCXJlYWRfYmlvID0gYmlvX2Nsb25lX21kZGV2 KGJpbywgR0ZQX05PSU8sIG1kZGV2KTsKLQkJYmlvX3RyaW0ocmVhZF9iaW8sIHIxX2Jpby0+c2Vj dG9yIC0gYmlvLT5iaV9zZWN0b3IsCisJCWJpb190cmltKHJlYWRfYmlvLCByMV9iaW8tPnNlY3Rv ciAtIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJCQkgbWF4X3NlY3RvcnMpOwogCiAJCXIxX2Jp by0+Ymlvc1tyZGlza10gPSByZWFkX2JpbzsKIAotCQlyZWFkX2Jpby0+Ymlfc2VjdG9yID0gcjFf YmlvLT5zZWN0b3IgKyBtaXJyb3ItPnJkZXYtPmRhdGFfb2Zmc2V0OworCQlyZWFkX2Jpby0+Ymlf aXRlci5iaV9zZWN0b3IgPSByMV9iaW8tPnNlY3RvciArCisJCQltaXJyb3ItPnJkZXYtPmRhdGFf b2Zmc2V0OwogCQlyZWFkX2Jpby0+YmlfYmRldiA9IG1pcnJvci0+cmRldi0+YmRldjsKIAkJcmVh ZF9iaW8tPmJpX2VuZF9pbyA9IHJhaWQxX2VuZF9yZWFkX3JlcXVlc3Q7CiAJCXJlYWRfYmlvLT5i aV9ydyA9IFJFQUQgfCBkb19zeW5jOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgcmVhZF9hZ2FpbjoK IAkJCSAqLwogCiAJCQlzZWN0b3JzX2hhbmRsZWQgPSAocjFfYmlvLT5zZWN0b3IgKyBtYXhfc2Vj dG9ycwotCQkJCQkgICAtIGJpby0+Ymlfc2VjdG9yKTsKKwkJCQkJICAgLSBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAkJCXIxX2Jpby0+c2VjdG9ycyA9IG1heF9zZWN0b3JzOwogCQkJc3Bpbl9s b2NrX2lycSgmY29uZi0+ZGV2aWNlX2xvY2spOwogCQkJaWYgKGJpby0+YmlfcGh5c19zZWdtZW50 cyA9PSAwKQpAQCAtMTIxOSw3ICsxMjE5LDggQEAgcmVhZF9hZ2FpbjoKIAkJCXIxX2Jpby0+c2Vj dG9ycyA9IGJpb19zZWN0b3JzKGJpbykgLSBzZWN0b3JzX2hhbmRsZWQ7CiAJCQlyMV9iaW8tPnN0 YXRlID0gMDsKIAkJCXIxX2Jpby0+bWRkZXYgPSBtZGRldjsKLQkJCXIxX2Jpby0+c2VjdG9yID0g YmlvLT5iaV9zZWN0b3IgKyBzZWN0b3JzX2hhbmRsZWQ7CisJCQlyMV9iaW8tPnNlY3RvciA9IGJp by0+YmlfaXRlci5iaV9zZWN0b3IgKworCQkJCXNlY3RvcnNfaGFuZGxlZDsKIAkJCWdvdG8gcmVh ZF9hZ2FpbjsKIAkJfSBlbHNlCiAJCQlnZW5lcmljX21ha2VfcmVxdWVzdChyZWFkX2Jpbyk7CkBA IC0xMzIyLDcgKzEzMjMsNyBAQCByZWFkX2FnYWluOgogCQkJaWYgKHIxX2Jpby0+Ymlvc1tqXSkK IAkJCQlyZGV2X2RlY19wZW5kaW5nKGNvbmYtPm1pcnJvcnNbal0ucmRldiwgbWRkZXYpOwogCQly MV9iaW8tPnN0YXRlID0gMDsKLQkJYWxsb3dfYmFycmllcihjb25mLCBzdGFydF9uZXh0X3dpbmRv dywgYmlvLT5iaV9zZWN0b3IpOworCQlhbGxvd19iYXJyaWVyKGNvbmYsIHN0YXJ0X25leHRfd2lu ZG93LCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJbWRfd2FpdF9mb3JfYmxvY2tlZF9yZGV2 KGJsb2NrZWRfcmRldiwgbWRkZXYpOwogCQlzdGFydF9uZXh0X3dpbmRvdyA9IHdhaXRfYmFycmll cihjb25mLCBiaW8pOwogCQkvKgpAQCAtMTM0OSw3ICsxMzUwLDcgQEAgcmVhZF9hZ2FpbjoKIAkJ CWJpby0+YmlfcGh5c19zZWdtZW50cysrOwogCQlzcGluX3VubG9ja19pcnEoJmNvbmYtPmRldmlj ZV9sb2NrKTsKIAl9Ci0Jc2VjdG9yc19oYW5kbGVkID0gcjFfYmlvLT5zZWN0b3IgKyBtYXhfc2Vj dG9ycyAtIGJpby0+Ymlfc2VjdG9yOworCXNlY3RvcnNfaGFuZGxlZCA9IHIxX2Jpby0+c2VjdG9y ICsgbWF4X3NlY3RvcnMgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCiAJYXRvbWljX3NldCgm cjFfYmlvLT5yZW1haW5pbmcsIDEpOwogCWF0b21pY19zZXQoJnIxX2Jpby0+YmVoaW5kX3JlbWFp bmluZywgMCk7CkBAIC0xMzYxLDcgKzEzNjIsNyBAQCByZWFkX2FnYWluOgogCQkJY29udGludWU7 CiAKIAkJbWJpbyA9IGJpb19jbG9uZV9tZGRldihiaW8sIEdGUF9OT0lPLCBtZGRldik7Ci0JCWJp b190cmltKG1iaW8sIHIxX2Jpby0+c2VjdG9yIC0gYmlvLT5iaV9zZWN0b3IsIG1heF9zZWN0b3Jz KTsKKwkJYmlvX3RyaW0obWJpbywgcjFfYmlvLT5zZWN0b3IgLSBiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yLCBtYXhfc2VjdG9ycyk7CiAKIAkJaWYgKGZpcnN0X2Nsb25lKSB7CiAJCQkvKiBkbyBiZWhp bmQgSS9PID8KQEAgLTEzOTUsNyArMTM5Niw3IEBAIHJlYWRfYWdhaW46CiAKIAkJcjFfYmlvLT5i aW9zW2ldID0gbWJpbzsKIAotCQltYmlvLT5iaV9zZWN0b3IJPSAocjFfYmlvLT5zZWN0b3IgKwor CQltYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcgk9IChyMV9iaW8tPnNlY3RvciArCiAJCQkJICAgY29u Zi0+bWlycm9yc1tpXS5yZGV2LT5kYXRhX29mZnNldCk7CiAJCW1iaW8tPmJpX2JkZXYgPSBjb25m LT5taXJyb3JzW2ldLnJkZXYtPmJkZXY7CiAJCW1iaW8tPmJpX2VuZF9pbwk9IHJhaWQxX2VuZF93 cml0ZV9yZXF1ZXN0OwpAQCAtMTQzNSw3ICsxNDM2LDcgQEAgcmVhZF9hZ2FpbjoKIAkJcjFfYmlv LT5zZWN0b3JzID0gYmlvX3NlY3RvcnMoYmlvKSAtIHNlY3RvcnNfaGFuZGxlZDsKIAkJcjFfYmlv LT5zdGF0ZSA9IDA7CiAJCXIxX2Jpby0+bWRkZXYgPSBtZGRldjsKLQkJcjFfYmlvLT5zZWN0b3Ig PSBiaW8tPmJpX3NlY3RvciArIHNlY3RvcnNfaGFuZGxlZDsKKwkJcjFfYmlvLT5zZWN0b3IgPSBi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yICsgc2VjdG9yc19oYW5kbGVkOwogCQlnb3RvIHJldHJ5X3dy aXRlOwogCX0KIApAQCAtMTk1OSwxNCArMTk2MCwxNCBAQCBzdGF0aWMgaW50IHByb2Nlc3NfY2hl Y2tzKHN0cnVjdCByMWJpbyAqcjFfYmlvKQogCQkvKiBmaXh1cCB0aGUgYmlvIGZvciByZXVzZSAq LwogCQliaW9fcmVzZXQoYik7CiAJCWItPmJpX3ZjbnQgPSB2Y250OwotCQliLT5iaV9zaXplID0g cjFfYmlvLT5zZWN0b3JzIDw8IDk7Ci0JCWItPmJpX3NlY3RvciA9IHIxX2Jpby0+c2VjdG9yICsK KwkJYi0+YmlfaXRlci5iaV9zaXplID0gcjFfYmlvLT5zZWN0b3JzIDw8IDk7CisJCWItPmJpX2l0 ZXIuYmlfc2VjdG9yID0gcjFfYmlvLT5zZWN0b3IgKwogCQkJY29uZi0+bWlycm9yc1tpXS5yZGV2 LT5kYXRhX29mZnNldDsKIAkJYi0+YmlfYmRldiA9IGNvbmYtPm1pcnJvcnNbaV0ucmRldi0+YmRl djsKIAkJYi0+YmlfZW5kX2lvID0gZW5kX3N5bmNfcmVhZDsKIAkJYi0+YmlfcHJpdmF0ZSA9IHIx X2JpbzsKIAotCQlzaXplID0gYi0+Ymlfc2l6ZTsKKwkJc2l6ZSA9IGItPmJpX2l0ZXIuYmlfc2l6 ZTsKIAkJZm9yIChqID0gMDsgaiA8IHZjbnQgOyBqKyspIHsKIAkJCXN0cnVjdCBiaW9fdmVjICpi aTsKIAkJCWJpID0gJmItPmJpX2lvX3ZlY1tqXTsKQEAgLTIyMjEsMTEgKzIyMjIsMTEgQEAgc3Rh dGljIGludCBuYXJyb3dfd3JpdGVfZXJyb3Ioc3RydWN0IHIxYmlvICpyMV9iaW8sIGludCBpKQog CQl9CiAKIAkJd2Jpby0+YmlfcncgPSBXUklURTsKLQkJd2Jpby0+Ymlfc2VjdG9yID0gcjFfYmlv LT5zZWN0b3I7Ci0JCXdiaW8tPmJpX3NpemUgPSByMV9iaW8tPnNlY3RvcnMgPDwgOTsKKwkJd2Jp by0+YmlfaXRlci5iaV9zZWN0b3IgPSByMV9iaW8tPnNlY3RvcjsKKwkJd2Jpby0+YmlfaXRlci5i aV9zaXplID0gcjFfYmlvLT5zZWN0b3JzIDw8IDk7CiAKIAkJYmlvX3RyaW0od2Jpbywgc2VjdG9y IC0gcjFfYmlvLT5zZWN0b3IsIHNlY3RvcnMpOwotCQl3YmlvLT5iaV9zZWN0b3IgKz0gcmRldi0+ ZGF0YV9vZmZzZXQ7CisJCXdiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICs9IHJkZXYtPmRhdGFfb2Zm c2V0OwogCQl3YmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKIAkJaWYgKHN1Ym1pdF9iaW9fd2Fp dChXUklURSwgd2JpbykgPT0gMCkKIAkJCS8qIGZhaWx1cmUhICovCkBAIC0yMzM5LDcgKzIzNDAs OCBAQCByZWFkX21vcmU6CiAJCX0KIAkJcjFfYmlvLT5yZWFkX2Rpc2sgPSBkaXNrOwogCQliaW8g PSBiaW9fY2xvbmVfbWRkZXYocjFfYmlvLT5tYXN0ZXJfYmlvLCBHRlBfTk9JTywgbWRkZXYpOwot CQliaW9fdHJpbShiaW8sIHIxX2Jpby0+c2VjdG9yIC0gYmlvLT5iaV9zZWN0b3IsIG1heF9zZWN0 b3JzKTsKKwkJYmlvX3RyaW0oYmlvLCByMV9iaW8tPnNlY3RvciAtIGJpby0+YmlfaXRlci5iaV9z ZWN0b3IsCisJCQkgbWF4X3NlY3RvcnMpOwogCQlyMV9iaW8tPmJpb3NbcjFfYmlvLT5yZWFkX2Rp c2tdID0gYmlvOwogCQlyZGV2ID0gY29uZi0+bWlycm9yc1tkaXNrXS5yZGV2OwogCQlwcmludGtf cmF0ZWxpbWl0ZWQoS0VSTl9FUlIKQEAgLTIzNDgsNyArMjM1MCw3IEBAIHJlYWRfbW9yZToKIAkJ CQkgICBtZG5hbWUobWRkZXYpLAogCQkJCSAgICh1bnNpZ25lZCBsb25nIGxvbmcpcjFfYmlvLT5z ZWN0b3IsCiAJCQkJICAgYmRldm5hbWUocmRldi0+YmRldiwgYikpOwotCQliaW8tPmJpX3NlY3Rv ciA9IHIxX2Jpby0+c2VjdG9yICsgcmRldi0+ZGF0YV9vZmZzZXQ7CisJCWJpby0+YmlfaXRlci5i aV9zZWN0b3IgPSByMV9iaW8tPnNlY3RvciArIHJkZXYtPmRhdGFfb2Zmc2V0OwogCQliaW8tPmJp X2JkZXYgPSByZGV2LT5iZGV2OwogCQliaW8tPmJpX2VuZF9pbyA9IHJhaWQxX2VuZF9yZWFkX3Jl cXVlc3Q7CiAJCWJpby0+YmlfcncgPSBSRUFEIHwgZG9fc3luYzsKQEAgLTIzNTcsNyArMjM1OSw3 IEBAIHJlYWRfbW9yZToKIAkJCS8qIERyYXQgLSBoYXZlIHRvIHNwbGl0IHRoaXMgdXAgbW9yZSAq LwogCQkJc3RydWN0IGJpbyAqbWJpbyA9IHIxX2Jpby0+bWFzdGVyX2JpbzsKIAkJCWludCBzZWN0 b3JzX2hhbmRsZWQgPSAocjFfYmlvLT5zZWN0b3IgKyBtYXhfc2VjdG9ycwotCQkJCQkgICAgICAg LSBtYmlvLT5iaV9zZWN0b3IpOworCQkJCQkgICAgICAgLSBtYmlvLT5iaV9pdGVyLmJpX3NlY3Rv cik7CiAJCQlyMV9iaW8tPnNlY3RvcnMgPSBtYXhfc2VjdG9yczsKIAkJCXNwaW5fbG9ja19pcnEo JmNvbmYtPmRldmljZV9sb2NrKTsKIAkJCWlmIChtYmlvLT5iaV9waHlzX3NlZ21lbnRzID09IDAp CkBAIC0yMzc1LDcgKzIzNzcsOCBAQCByZWFkX21vcmU6CiAJCQlyMV9iaW8tPnN0YXRlID0gMDsK IAkJCXNldF9iaXQoUjFCSU9fUmVhZEVycm9yLCAmcjFfYmlvLT5zdGF0ZSk7CiAJCQlyMV9iaW8t Pm1kZGV2ID0gbWRkZXY7Ci0JCQlyMV9iaW8tPnNlY3RvciA9IG1iaW8tPmJpX3NlY3RvciArIHNl Y3RvcnNfaGFuZGxlZDsKKwkJCXIxX2Jpby0+c2VjdG9yID0gbWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgKworCQkJCXNlY3RvcnNfaGFuZGxlZDsKIAogCQkJZ290byByZWFkX21vcmU7CiAJCX0gZWxz ZQpAQCAtMjU5OSw3ICsyNjAyLDcgQEAgc3RhdGljIHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1 Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0b3JfbnIsIGludCAqc2tpcHAKIAkJfQogCQlp ZiAoYmlvLT5iaV9lbmRfaW8pIHsKIAkJCWF0b21pY19pbmMoJnJkZXYtPm5yX3BlbmRpbmcpOwot CQkJYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3JfbnIgKyByZGV2LT5kYXRhX29mZnNldDsKKwkJCWJp by0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3JfbnIgKyByZGV2LT5kYXRhX29mZnNldDsKIAkJ CWJpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJCQliaW8tPmJpX3ByaXZhdGUgPSByMV9iaW87 CiAJCX0KQEAgLTI2OTksNyArMjcwMiw3IEBAIHN0YXRpYyBzZWN0b3JfdCBzeW5jX3JlcXVlc3Qo c3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLCBpbnQgKnNraXBwCiAJCQkJ CQkJY29udGludWU7CiAJCQkJCQkvKiByZW1vdmUgbGFzdCBwYWdlIGZyb20gdGhpcyBiaW8gKi8K IAkJCQkJCWJpby0+YmlfdmNudC0tOwotCQkJCQkJYmlvLT5iaV9zaXplIC09IGxlbjsKKwkJCQkJ CWJpby0+YmlfaXRlci5iaV9zaXplIC09IGxlbjsKIAkJCQkJCWJpby0+YmlfZmxhZ3MgJj0gfigx PDwgQklPX1NFR19WQUxJRCk7CiAJCQkJCX0KIAkJCQkJZ290byBiaW9fZnVsbDsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWQvcmFpZDEwLmMgYi9kcml2ZXJzL21kL3JhaWQxMC5jCmluZGV4IGM1MDRl ODMuLmRiZjNiNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDEwLmMKKysrIGIvZHJpdmVy cy9tZC9yYWlkMTAuYwpAQCAtMTE4Miw3ICsxMTgyLDcgQEAgc3RhdGljIHZvaWQgbWFrZV9yZXF1 ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKiBiaW8pCiAJLyogSWYgdGhpcyBy ZXF1ZXN0IGNyb3NzZXMgYSBjaHVuayBib3VuZGFyeSwgd2UgbmVlZCB0bwogCSAqIHNwbGl0IGl0 LiAgVGhpcyB3aWxsIG9ubHkgaGFwcGVuIGZvciAxIFBBR0UgKG9yIGxlc3MpIHJlcXVlc3RzLgog CSAqLwotCWlmICh1bmxpa2VseSgoYmlvLT5iaV9zZWN0b3IgJiBjaHVua19tYXNrKSArIGJpb19z ZWN0b3JzKGJpbykKKwlpZiAodW5saWtlbHkoKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgJiBjaHVu a19tYXNrKSArIGJpb19zZWN0b3JzKGJpbykKIAkJICAgICA+IGNodW5rX3NlY3RzCiAJCSAgICAg JiYgKGNvbmYtPmdlby5uZWFyX2NvcGllcyA8IGNvbmYtPmdlby5yYWlkX2Rpc2tzCiAJCQkgfHwg Y29uZi0+cHJldi5uZWFyX2NvcGllcyA8IGNvbmYtPnByZXYucmFpZF9kaXNrcykpKSB7CkBAIC0x MTkzLDggKzExOTMsOCBAQCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICpt ZGRldiwgc3RydWN0IGJpbyAqIGJpbykKIAkJLyogVGhpcyBpcyBhIG9uZSBwYWdlIGJpbyB0aGF0 IHVwcGVyIGxheWVycwogCQkgKiByZWZ1c2UgdG8gc3BsaXQgZm9yIHVzLCBzbyB3ZSBuZWVkIHRv IHNwbGl0IGl0LgogCQkgKi8KLQkJYnAgPSBiaW9fc3BsaXQoYmlvLAotCQkJICAgICAgIGNodW5r X3NlY3RzIC0gKGJpby0+Ymlfc2VjdG9yICYgKGNodW5rX3NlY3RzIC0gMSkpICk7CisJCWJwID0g YmlvX3NwbGl0KGJpbywgY2h1bmtfc2VjdHMgLQorCQkJICAgICAgIChiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yICYgKGNodW5rX3NlY3RzIC0gMSkpKTsKIAogCQkvKiBFYWNoIG9mIHRoZXNlICdtYWtl X3JlcXVlc3QnIGNhbGxzIHdpbGwgY2FsbCAnd2FpdF9iYXJyaWVyJy4KIAkJICogSWYgdGhlIGZp cnN0IHN1Y2NlZWRzIGJ1dCB0aGUgc2Vjb25kIGJsb2NrcyBkdWUgdG8gdGhlIHJlc3luYwpAQCAt MTIyMSw3ICsxMjIxLDggQEAgc3RhdGljIHZvaWQgbWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAq bWRkZXYsIHN0cnVjdCBiaW8gKiBiaW8pCiAJYmFkX21hcDoKIAkJcHJpbnRrKCJtZC9yYWlkMTA6 JXM6IG1ha2VfcmVxdWVzdCBidWc6IGNhbid0IGNvbnZlcnQgYmxvY2sgYWNyb3NzIGNodW5rcyIK IAkJICAgICAgICIgb3IgYmlnZ2VyIHRoYW4gJWRrICVsbHUgJWRcbiIsIG1kbmFtZShtZGRldiks IGNodW5rX3NlY3RzLzIsCi0JCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlfc2Vj dG9yLCBiaW9fc2VjdG9ycyhiaW8pIC8gMik7CisJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25n KWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCSAgICAgICBiaW9fc2VjdG9ycyhiaW8pIC8gMik7 CiAKIAkJYmlvX2lvX2Vycm9yKGJpbyk7CiAJCXJldHVybjsKQEAgLTEyMzgsMjQgKzEyMzksMjUg QEAgc3RhdGljIHZvaWQgbWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBi aW8gKiBiaW8pCiAKIAlzZWN0b3JzID0gYmlvX3NlY3RvcnMoYmlvKTsKIAl3aGlsZSAodGVzdF9i aXQoTURfUkVDT1ZFUllfUkVTSEFQRSwgJm1kZGV2LT5yZWNvdmVyeSkgJiYKLQkgICAgYmlvLT5i aV9zZWN0b3IgPCBjb25mLT5yZXNoYXBlX3Byb2dyZXNzICYmCi0JICAgIGJpby0+Ymlfc2VjdG9y ICsgc2VjdG9ycyA+IGNvbmYtPnJlc2hhcGVfcHJvZ3Jlc3MpIHsKKwkgICAgYmlvLT5iaV9pdGVy LmJpX3NlY3RvciA8IGNvbmYtPnJlc2hhcGVfcHJvZ3Jlc3MgJiYKKwkgICAgYmlvLT5iaV9pdGVy LmJpX3NlY3RvciArIHNlY3RvcnMgPiBjb25mLT5yZXNoYXBlX3Byb2dyZXNzKSB7CiAJCS8qIElP IHNwYW5zIHRoZSByZXNoYXBlIHBvc2l0aW9uLiAgTmVlZCB0byB3YWl0IGZvcgogCQkgKiByZXNo YXBlIHRvIHBhc3MKIAkJICovCiAJCWFsbG93X2JhcnJpZXIoY29uZik7CiAJCXdhaXRfZXZlbnQo Y29uZi0+d2FpdF9iYXJyaWVyLAotCQkJICAgY29uZi0+cmVzaGFwZV9wcm9ncmVzcyA8PSBiaW8t PmJpX3NlY3RvciB8fAotCQkJICAgY29uZi0+cmVzaGFwZV9wcm9ncmVzcyA+PSBiaW8tPmJpX3Nl Y3RvciArIHNlY3RvcnMpOworCQkJICAgY29uZi0+cmVzaGFwZV9wcm9ncmVzcyA8PSBiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yIHx8CisJCQkgICBjb25mLT5yZXNoYXBlX3Byb2dyZXNzID49IGJpby0+ YmlfaXRlci5iaV9zZWN0b3IgKworCQkJICAgc2VjdG9ycyk7CiAJCXdhaXRfYmFycmllcihjb25m KTsKIAl9CiAJaWYgKHRlc3RfYml0KE1EX1JFQ09WRVJZX1JFU0hBUEUsICZtZGRldi0+cmVjb3Zl cnkpICYmCiAJICAgIGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFICYmCiAJICAgIChtZGRldi0+ cmVzaGFwZV9iYWNrd2FyZHMKLQkgICAgID8gKGJpby0+Ymlfc2VjdG9yIDwgY29uZi0+cmVzaGFw ZV9zYWZlICYmCi0JCWJpby0+Ymlfc2VjdG9yICsgc2VjdG9ycyA+IGNvbmYtPnJlc2hhcGVfcHJv Z3Jlc3MpCi0JICAgICA6IChiaW8tPmJpX3NlY3RvciArIHNlY3RvcnMgPiBjb25mLT5yZXNoYXBl X3NhZmUgJiYKLQkJYmlvLT5iaV9zZWN0b3IgPCBjb25mLT5yZXNoYXBlX3Byb2dyZXNzKSkpIHsK KwkgICAgID8gKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPCBjb25mLT5yZXNoYXBlX3NhZmUgJiYK KwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciArIHNlY3RvcnMgPiBjb25mLT5yZXNoYXBlX3Byb2dy ZXNzKQorCSAgICAgOiAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciArIHNlY3RvcnMgPiBjb25mLT5y ZXNoYXBlX3NhZmUgJiYKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8IGNvbmYtPnJlc2hhcGVf cHJvZ3Jlc3MpKSkgewogCQkvKiBOZWVkIHRvIHVwZGF0ZSByZXNoYXBlX3Bvc2l0aW9uIGluIG1l dGFkYXRhICovCiAJCW1kZGV2LT5yZXNoYXBlX3Bvc2l0aW9uID0gY29uZi0+cmVzaGFwZV9wcm9n cmVzczsKIAkJc2V0X2JpdChNRF9DSEFOR0VfREVWUywgJm1kZGV2LT5mbGFncyk7CkBAIC0xMjcz LDcgKzEyNzUsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRl diwgc3RydWN0IGJpbyAqIGJpbykKIAlyMTBfYmlvLT5zZWN0b3JzID0gc2VjdG9yczsKIAogCXIx MF9iaW8tPm1kZGV2ID0gbWRkZXY7Ci0JcjEwX2Jpby0+c2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7 CisJcjEwX2Jpby0+c2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAlyMTBfYmlvLT5z dGF0ZSA9IDA7CiAKIAkvKiBXZSBtaWdodCBuZWVkIHRvIGlzc3VlIG11bHRpcGxlIHJlYWRzIHRv IGRpZmZlcmVudApAQCAtMTMwMiwxMyArMTMwNCwxMyBAQCByZWFkX2FnYWluOgogCQlzbG90ID0g cjEwX2Jpby0+cmVhZF9zbG90OwogCiAJCXJlYWRfYmlvID0gYmlvX2Nsb25lX21kZGV2KGJpbywg R0ZQX05PSU8sIG1kZGV2KTsKLQkJYmlvX3RyaW0ocmVhZF9iaW8sIHIxMF9iaW8tPnNlY3RvciAt IGJpby0+Ymlfc2VjdG9yLAorCQliaW9fdHJpbShyZWFkX2JpbywgcjEwX2Jpby0+c2VjdG9yIC0g YmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJCSBtYXhfc2VjdG9ycyk7CiAKIAkJcjEwX2Jpby0+ ZGV2c1tzbG90XS5iaW8gPSByZWFkX2JpbzsKIAkJcjEwX2Jpby0+ZGV2c1tzbG90XS5yZGV2ID0g cmRldjsKIAotCQlyZWFkX2Jpby0+Ymlfc2VjdG9yID0gcjEwX2Jpby0+ZGV2c1tzbG90XS5hZGRy ICsKKwkJcmVhZF9iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gcjEwX2Jpby0+ZGV2c1tzbG90XS5h ZGRyICsKIAkJCWNob29zZV9kYXRhX29mZnNldChyMTBfYmlvLCByZGV2KTsKIAkJcmVhZF9iaW8t PmJpX2JkZXYgPSByZGV2LT5iZGV2OwogCQlyZWFkX2Jpby0+YmlfZW5kX2lvID0gcmFpZDEwX2Vu ZF9yZWFkX3JlcXVlc3Q7CkBAIC0xMzIwLDcgKzEzMjIsNyBAQCByZWFkX2FnYWluOgogCQkJICog bmVlZCBhbm90aGVyIHIxMF9iaW8uCiAJCQkgKi8KIAkJCXNlY3RvcnNfaGFuZGxlZCA9IChyMTBf YmlvLT5zZWN0b3JzICsgbWF4X3NlY3RvcnMKLQkJCQkJICAgLSBiaW8tPmJpX3NlY3Rvcik7CisJ CQkJCSAgIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAJCQlyMTBfYmlvLT5zZWN0b3JzID0g bWF4X3NlY3RvcnM7CiAJCQlzcGluX2xvY2tfaXJxKCZjb25mLT5kZXZpY2VfbG9jayk7CiAJCQlp ZiAoYmlvLT5iaV9waHlzX3NlZ21lbnRzID09IDApCkBAIC0xMzQxLDcgKzEzNDMsOCBAQCByZWFk X2FnYWluOgogCQkJcjEwX2Jpby0+c2VjdG9ycyA9IGJpb19zZWN0b3JzKGJpbykgLSBzZWN0b3Jz X2hhbmRsZWQ7CiAJCQlyMTBfYmlvLT5zdGF0ZSA9IDA7CiAJCQlyMTBfYmlvLT5tZGRldiA9IG1k ZGV2OwotCQkJcjEwX2Jpby0+c2VjdG9yID0gYmlvLT5iaV9zZWN0b3IgKyBzZWN0b3JzX2hhbmRs ZWQ7CisJCQlyMTBfYmlvLT5zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICsKKwkJCQlz ZWN0b3JzX2hhbmRsZWQ7CiAJCQlnb3RvIHJlYWRfYWdhaW47CiAJCX0gZWxzZQogCQkJZ2VuZXJp Y19tYWtlX3JlcXVlc3QocmVhZF9iaW8pOwpAQCAtMTQ5OSw3ICsxNTAyLDggQEAgcmV0cnlfd3Jp dGU6CiAJCQliaW8tPmJpX3BoeXNfc2VnbWVudHMrKzsKIAkJc3Bpbl91bmxvY2tfaXJxKCZjb25m LT5kZXZpY2VfbG9jayk7CiAJfQotCXNlY3RvcnNfaGFuZGxlZCA9IHIxMF9iaW8tPnNlY3RvciAr IG1heF9zZWN0b3JzIC0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yc19oYW5kbGVkID0gcjEwX2Jp by0+c2VjdG9yICsgbWF4X3NlY3RvcnMgLQorCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCiAJ YXRvbWljX3NldCgmcjEwX2Jpby0+cmVtYWluaW5nLCAxKTsKIAliaXRtYXBfc3RhcnR3cml0ZSht ZGRldi0+Yml0bWFwLCByMTBfYmlvLT5zZWN0b3IsIHIxMF9iaW8tPnNlY3RvcnMsIDApOwpAQCAt MTUxMCwxMSArMTUxNCwxMSBAQCByZXRyeV93cml0ZToKIAkJaWYgKHIxMF9iaW8tPmRldnNbaV0u YmlvKSB7CiAJCQlzdHJ1Y3QgbWRfcmRldiAqcmRldiA9IGNvbmYtPm1pcnJvcnNbZF0ucmRldjsK IAkJCW1iaW8gPSBiaW9fY2xvbmVfbWRkZXYoYmlvLCBHRlBfTk9JTywgbWRkZXYpOwotCQkJYmlv X3RyaW0obWJpbywgcjEwX2Jpby0+c2VjdG9yIC0gYmlvLT5iaV9zZWN0b3IsCisJCQliaW9fdHJp bShtYmlvLCByMTBfYmlvLT5zZWN0b3IgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAogCQkJCSBt YXhfc2VjdG9ycyk7CiAJCQlyMTBfYmlvLT5kZXZzW2ldLmJpbyA9IG1iaW87CiAKLQkJCW1iaW8t PmJpX3NlY3Rvcgk9IChyMTBfYmlvLT5kZXZzW2ldLmFkZHIrCisJCQltYmlvLT5iaV9pdGVyLmJp X3NlY3Rvcgk9IChyMTBfYmlvLT5kZXZzW2ldLmFkZHIrCiAJCQkJCSAgIGNob29zZV9kYXRhX29m ZnNldChyMTBfYmlvLAogCQkJCQkJCSAgICAgIHJkZXYpKTsKIAkJCW1iaW8tPmJpX2JkZXYgPSBy ZGV2LT5iZGV2OwpAQCAtMTU1MywxMSArMTU1NywxMSBAQCByZXRyeV93cml0ZToKIAkJCQlyZGV2 ID0gY29uZi0+bWlycm9yc1tkXS5yZGV2OwogCQkJfQogCQkJbWJpbyA9IGJpb19jbG9uZV9tZGRl dihiaW8sIEdGUF9OT0lPLCBtZGRldik7Ci0JCQliaW9fdHJpbShtYmlvLCByMTBfYmlvLT5zZWN0 b3IgLSBiaW8tPmJpX3NlY3RvciwKKwkJCWJpb190cmltKG1iaW8sIHIxMF9iaW8tPnNlY3RvciAt IGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJCQkJIG1heF9zZWN0b3JzKTsKIAkJCXIxMF9iaW8t PmRldnNbaV0ucmVwbF9iaW8gPSBtYmlvOwogCi0JCQltYmlvLT5iaV9zZWN0b3IJPSAocjEwX2Jp by0+ZGV2c1tpXS5hZGRyICsKKwkJCW1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gKHIxMF9iaW8t PmRldnNbaV0uYWRkciArCiAJCQkJCSAgIGNob29zZV9kYXRhX29mZnNldCgKIAkJCQkJCSAgIHIx MF9iaW8sIHJkZXYpKTsKIAkJCW1iaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2OwpAQCAtMTU5MSw3 ICsxNTk1LDcgQEAgcmV0cnlfd3JpdGU6CiAJCXIxMF9iaW8tPnNlY3RvcnMgPSBiaW9fc2VjdG9y cyhiaW8pIC0gc2VjdG9yc19oYW5kbGVkOwogCiAJCXIxMF9iaW8tPm1kZGV2ID0gbWRkZXY7Ci0J CXIxMF9iaW8tPnNlY3RvciA9IGJpby0+Ymlfc2VjdG9yICsgc2VjdG9yc19oYW5kbGVkOworCQly MTBfYmlvLT5zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICsgc2VjdG9yc19oYW5kbGVk OwogCQlyMTBfYmlvLT5zdGF0ZSA9IDA7CiAJCWdvdG8gcmV0cnlfd3JpdGU7CiAJfQpAQCAtMjEy NCwxMCArMjEyOCwxMCBAQCBzdGF0aWMgdm9pZCBzeW5jX3JlcXVlc3Rfd3JpdGUoc3RydWN0IG1k ZGV2ICptZGRldiwgc3RydWN0IHIxMGJpbyAqcjEwX2JpbykKIAkJYmlvX3Jlc2V0KHRiaW8pOwog CiAJCXRiaW8tPmJpX3ZjbnQgPSB2Y250OwotCQl0YmlvLT5iaV9zaXplID0gcjEwX2Jpby0+c2Vj dG9ycyA8PCA5OworCQl0YmlvLT5iaV9pdGVyLmJpX3NpemUgPSByMTBfYmlvLT5zZWN0b3JzIDw8 IDk7CiAJCXRiaW8tPmJpX3J3ID0gV1JJVEU7CiAJCXRiaW8tPmJpX3ByaXZhdGUgPSByMTBfYmlv OwotCQl0YmlvLT5iaV9zZWN0b3IgPSByMTBfYmlvLT5kZXZzW2ldLmFkZHI7CisJCXRiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gcjEwX2Jpby0+ZGV2c1tpXS5hZGRyOwogCiAJCWZvciAoaj0wOyBq IDwgdmNudCA7IGorKykgewogCQkJdGJpby0+YmlfaW9fdmVjW2pdLmJ2X29mZnNldCA9IDA7CkBA IC0yMTQ0LDcgKzIxNDgsNyBAQCBzdGF0aWMgdm9pZCBzeW5jX3JlcXVlc3Rfd3JpdGUoc3RydWN0 IG1kZGV2ICptZGRldiwgc3RydWN0IHIxMGJpbyAqcjEwX2JpbykKIAkJYXRvbWljX2luYygmcjEw X2Jpby0+cmVtYWluaW5nKTsKIAkJbWRfc3luY19hY2N0KGNvbmYtPm1pcnJvcnNbZF0ucmRldi0+ YmRldiwgYmlvX3NlY3RvcnModGJpbykpOwogCi0JCXRiaW8tPmJpX3NlY3RvciArPSBjb25mLT5t aXJyb3JzW2RdLnJkZXYtPmRhdGFfb2Zmc2V0OworCQl0YmlvLT5iaV9pdGVyLmJpX3NlY3RvciAr PSBjb25mLT5taXJyb3JzW2RdLnJkZXYtPmRhdGFfb2Zmc2V0OwogCQl0YmlvLT5iaV9iZGV2ID0g Y29uZi0+bWlycm9yc1tkXS5yZGV2LT5iZGV2OwogCQlnZW5lcmljX21ha2VfcmVxdWVzdCh0Ymlv KTsKIAl9CkBAIC0yNjE0LDggKzI2MTgsOCBAQCBzdGF0aWMgaW50IG5hcnJvd193cml0ZV9lcnJv cihzdHJ1Y3QgcjEwYmlvICpyMTBfYmlvLCBpbnQgaSkKIAkJCXNlY3RvcnMgPSBzZWN0X3RvX3dy aXRlOwogCQkvKiBXcml0ZSBhdCAnc2VjdG9yJyBmb3IgJ3NlY3RvcnMnICovCiAJCXdiaW8gPSBi aW9fY2xvbmVfbWRkZXYoYmlvLCBHRlBfTk9JTywgbWRkZXYpOwotCQliaW9fdHJpbSh3YmlvLCBz ZWN0b3IgLSBiaW8tPmJpX3NlY3Rvciwgc2VjdG9ycyk7Ci0JCXdiaW8tPmJpX3NlY3RvciA9IChy MTBfYmlvLT5kZXZzW2ldLmFkZHIrCisJCWJpb190cmltKHdiaW8sIHNlY3RvciAtIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IsIHNlY3RvcnMpOworCQl3YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IChy MTBfYmlvLT5kZXZzW2ldLmFkZHIrCiAJCQkJICAgY2hvb3NlX2RhdGFfb2Zmc2V0KHIxMF9iaW8s IHJkZXYpICsKIAkJCQkgICAoc2VjdG9yIC0gcjEwX2Jpby0+c2VjdG9yKSk7CiAJCXdiaW8tPmJp X2JkZXYgPSByZGV2LT5iZGV2OwpAQCAtMjY4NywxMCArMjY5MSwxMCBAQCByZWFkX21vcmU6CiAJ CSh1bnNpZ25lZCBsb25nIGxvbmcpcjEwX2Jpby0+c2VjdG9yKTsKIAliaW8gPSBiaW9fY2xvbmVf bWRkZXYocjEwX2Jpby0+bWFzdGVyX2JpbywKIAkJCSAgICAgIEdGUF9OT0lPLCBtZGRldik7Ci0J YmlvX3RyaW0oYmlvLCByMTBfYmlvLT5zZWN0b3IgLSBiaW8tPmJpX3NlY3RvciwgbWF4X3NlY3Rv cnMpOworCWJpb190cmltKGJpbywgcjEwX2Jpby0+c2VjdG9yIC0gYmlvLT5iaV9pdGVyLmJpX3Nl Y3RvciwgbWF4X3NlY3RvcnMpOwogCXIxMF9iaW8tPmRldnNbc2xvdF0uYmlvID0gYmlvOwogCXIx MF9iaW8tPmRldnNbc2xvdF0ucmRldiA9IHJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSByMTBfYmlv LT5kZXZzW3Nsb3RdLmFkZHIKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gcjEwX2Jpby0+ZGV2 c1tzbG90XS5hZGRyCiAJCSsgY2hvb3NlX2RhdGFfb2Zmc2V0KHIxMF9iaW8sIHJkZXYpOwogCWJp by0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJYmlvLT5iaV9ydyA9IFJFQUQgfCBkb19zeW5jOwpA QCAtMjcwMSw3ICsyNzA1LDcgQEAgcmVhZF9tb3JlOgogCQlzdHJ1Y3QgYmlvICptYmlvID0gcjEw X2Jpby0+bWFzdGVyX2JpbzsKIAkJaW50IHNlY3RvcnNfaGFuZGxlZCA9CiAJCQlyMTBfYmlvLT5z ZWN0b3IgKyBtYXhfc2VjdG9ycwotCQkJLSBtYmlvLT5iaV9zZWN0b3I7CisJCQktIG1iaW8tPmJp X2l0ZXIuYmlfc2VjdG9yOwogCQlyMTBfYmlvLT5zZWN0b3JzID0gbWF4X3NlY3RvcnM7CiAJCXNw aW5fbG9ja19pcnEoJmNvbmYtPmRldmljZV9sb2NrKTsKIAkJaWYgKG1iaW8tPmJpX3BoeXNfc2Vn bWVudHMgPT0gMCkKQEAgLTI3MTksNyArMjcyMyw3IEBAIHJlYWRfbW9yZToKIAkJc2V0X2JpdChS MTBCSU9fUmVhZEVycm9yLAogCQkJJnIxMF9iaW8tPnN0YXRlKTsKIAkJcjEwX2Jpby0+bWRkZXYg PSBtZGRldjsKLQkJcjEwX2Jpby0+c2VjdG9yID0gbWJpby0+Ymlfc2VjdG9yCisJCXIxMF9iaW8t PnNlY3RvciA9IG1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCiAJCQkrIHNlY3RvcnNfaGFuZGxlZDsK IAogCQlnb3RvIHJlYWRfbW9yZTsKQEAgLTMxNTcsNyArMzE2MSw4IEBAIHN0YXRpYyBzZWN0b3Jf dCBzeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLAog CQkJCWJpby0+YmlfZW5kX2lvID0gZW5kX3N5bmNfcmVhZDsKIAkJCQliaW8tPmJpX3J3ID0gUkVB RDsKIAkJCQlmcm9tX2FkZHIgPSByMTBfYmlvLT5kZXZzW2pdLmFkZHI7Ci0JCQkJYmlvLT5iaV9z ZWN0b3IgPSBmcm9tX2FkZHIgKyByZGV2LT5kYXRhX29mZnNldDsKKwkJCQliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yID0gZnJvbV9hZGRyICsKKwkJCQkJcmRldi0+ZGF0YV9vZmZzZXQ7CiAJCQkJYmlv LT5iaV9iZGV2ID0gcmRldi0+YmRldjsKIAkJCQlhdG9taWNfaW5jKCZyZGV2LT5ucl9wZW5kaW5n KTsKIAkJCQkvKiBhbmQgd2Ugd3JpdGUgdG8gJ2knIChpZiBub3QgaW5fc3luYykgKi8KQEAgLTMx ODEsNyArMzE4Niw3IEBAIHN0YXRpYyBzZWN0b3JfdCBzeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2 ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLAogCQkJCQliaW8tPmJpX3ByaXZhdGUgPSByMTBf YmlvOwogCQkJCQliaW8tPmJpX2VuZF9pbyA9IGVuZF9zeW5jX3dyaXRlOwogCQkJCQliaW8tPmJp X3J3ID0gV1JJVEU7Ci0JCQkJCWJpby0+Ymlfc2VjdG9yID0gdG9fYWRkcgorCQkJCQliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gdG9fYWRkcgogCQkJCQkJKyByZGV2LT5kYXRhX29mZnNldDsKIAkJ CQkJYmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKIAkJCQkJYXRvbWljX2luYygmcjEwX2Jpby0+ cmVtYWluaW5nKTsKQEAgLTMyMTAsNyArMzIxNSw4IEBAIHN0YXRpYyBzZWN0b3JfdCBzeW5jX3Jl cXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLAogCQkJCWJpby0+ YmlfcHJpdmF0ZSA9IHIxMF9iaW87CiAJCQkJYmlvLT5iaV9lbmRfaW8gPSBlbmRfc3luY193cml0 ZTsKIAkJCQliaW8tPmJpX3J3ID0gV1JJVEU7Ci0JCQkJYmlvLT5iaV9zZWN0b3IgPSB0b19hZGRy ICsgcmRldi0+ZGF0YV9vZmZzZXQ7CisJCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHRvX2Fk ZHIgKworCQkJCQlyZGV2LT5kYXRhX29mZnNldDsKIAkJCQliaW8tPmJpX2JkZXYgPSByZGV2LT5i ZGV2OwogCQkJCWF0b21pY19pbmMoJnIxMF9iaW8tPnJlbWFpbmluZyk7CiAJCQkJYnJlYWs7CkBA IC0zMzI4LDcgKzMzMzQsNyBAQCBzdGF0aWMgc2VjdG9yX3Qgc3luY19yZXF1ZXN0KHN0cnVjdCBt ZGRldiAqbWRkZXYsIHNlY3Rvcl90IHNlY3Rvcl9uciwKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHIx MF9iaW87CiAJCQliaW8tPmJpX2VuZF9pbyA9IGVuZF9zeW5jX3JlYWQ7CiAJCQliaW8tPmJpX3J3 ID0gUkVBRDsKLQkJCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yICsKKwkJCWJpby0+YmlfaXRlci5i aV9zZWN0b3IgPSBzZWN0b3IgKwogCQkJCWNvbmYtPm1pcnJvcnNbZF0ucmRldi0+ZGF0YV9vZmZz ZXQ7CiAJCQliaW8tPmJpX2JkZXYgPSBjb25mLT5taXJyb3JzW2RdLnJkZXYtPmJkZXY7CiAJCQlj b3VudCsrOwpAQCAtMzM1MCw3ICszMzU2LDcgQEAgc3RhdGljIHNlY3Rvcl90IHN5bmNfcmVxdWVz dChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0b3JfbnIsCiAJCQliaW8tPmJpX3By aXZhdGUgPSByMTBfYmlvOwogCQkJYmlvLT5iaV9lbmRfaW8gPSBlbmRfc3luY193cml0ZTsKIAkJ CWJpby0+YmlfcncgPSBXUklURTsKLQkJCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yICsKKwkJCWJp by0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3IgKwogCQkJCWNvbmYtPm1pcnJvcnNbZF0ucmVw bGFjZW1lbnQtPmRhdGFfb2Zmc2V0OwogCQkJYmlvLT5iaV9iZGV2ID0gY29uZi0+bWlycm9yc1tk XS5yZXBsYWNlbWVudC0+YmRldjsKIAkJCWNvdW50Kys7CkBAIC0zMzk3LDcgKzM0MDMsNyBAQCBz dGF0aWMgc2VjdG9yX3Qgc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90 IHNlY3Rvcl9uciwKIAkJCSAgICAgYmlvMiA9IGJpbzItPmJpX25leHQpIHsKIAkJCQkvKiByZW1v dmUgbGFzdCBwYWdlIGZyb20gdGhpcyBiaW8gKi8KIAkJCQliaW8yLT5iaV92Y250LS07Ci0JCQkJ YmlvMi0+Ymlfc2l6ZSAtPSBsZW47CisJCQkJYmlvMi0+YmlfaXRlci5iaV9zaXplIC09IGxlbjsK IAkJCQliaW8yLT5iaV9mbGFncyAmPSB+KDE8PCBCSU9fU0VHX1ZBTElEKTsKIAkJCX0KIAkJCWdv dG8gYmlvX2Z1bGw7CkBAIC00NDE3LDcgKzQ0MjMsNyBAQCByZWFkX21vcmU6CiAJcmVhZF9iaW8g PSBiaW9fYWxsb2NfbWRkZXYoR0ZQX0tFUk5FTCwgUkVTWU5DX1BBR0VTLCBtZGRldik7CiAKIAly ZWFkX2Jpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7Ci0JcmVhZF9iaW8tPmJpX3NlY3RvciA9IChy MTBfYmlvLT5kZXZzW3IxMF9iaW8tPnJlYWRfc2xvdF0uYWRkcgorCXJlYWRfYmlvLT5iaV9pdGVy LmJpX3NlY3RvciA9IChyMTBfYmlvLT5kZXZzW3IxMF9iaW8tPnJlYWRfc2xvdF0uYWRkcgogCQkJ ICAgICAgICsgcmRldi0+ZGF0YV9vZmZzZXQpOwogCXJlYWRfYmlvLT5iaV9wcml2YXRlID0gcjEw X2JpbzsKIAlyZWFkX2Jpby0+YmlfZW5kX2lvID0gZW5kX3N5bmNfcmVhZDsKQEAgLTQ0MjUsNyAr NDQzMSw3IEBAIHJlYWRfbW9yZToKIAlyZWFkX2Jpby0+YmlfZmxhZ3MgJj0gfihCSU9fUE9PTF9N QVNLIC0gMSk7CiAJcmVhZF9iaW8tPmJpX2ZsYWdzIHw9IDEgPDwgQklPX1VQVE9EQVRFOwogCXJl YWRfYmlvLT5iaV92Y250ID0gMDsKLQlyZWFkX2Jpby0+Ymlfc2l6ZSA9IDA7CisJcmVhZF9iaW8t PmJpX2l0ZXIuYmlfc2l6ZSA9IDA7CiAJcjEwX2Jpby0+bWFzdGVyX2JpbyA9IHJlYWRfYmlvOwog CXIxMF9iaW8tPnJlYWRfc2xvdCA9IHIxMF9iaW8tPmRldnNbcjEwX2Jpby0+cmVhZF9zbG90XS5k ZXZudW07CiAKQEAgLTQ0NTEsNyArNDQ1Nyw4IEBAIHJlYWRfbW9yZToKIAogCQliaW9fcmVzZXQo Yik7CiAJCWItPmJpX2JkZXYgPSByZGV2Mi0+YmRldjsKLQkJYi0+Ymlfc2VjdG9yID0gcjEwX2Jp by0+ZGV2c1tzLzJdLmFkZHIgKyByZGV2Mi0+bmV3X2RhdGFfb2Zmc2V0OworCQliLT5iaV9pdGVy LmJpX3NlY3RvciA9IHIxMF9iaW8tPmRldnNbcy8yXS5hZGRyICsKKwkJCXJkZXYyLT5uZXdfZGF0 YV9vZmZzZXQ7CiAJCWItPmJpX3ByaXZhdGUgPSByMTBfYmlvOwogCQliLT5iaV9lbmRfaW8gPSBl bmRfcmVzaGFwZV93cml0ZTsKIAkJYi0+YmlfcncgPSBXUklURTsKQEAgLTQ0NzgsNyArNDQ4NSw3 IEBAIHJlYWRfbW9yZToKIAkJCSAgICAgYmlvMiA9IGJpbzItPmJpX25leHQpIHsKIAkJCQkvKiBS ZW1vdmUgbGFzdCBwYWdlIGZyb20gdGhpcyBiaW8gKi8KIAkJCQliaW8yLT5iaV92Y250LS07Ci0J CQkJYmlvMi0+Ymlfc2l6ZSAtPSBsZW47CisJCQkJYmlvMi0+YmlfaXRlci5iaV9zaXplIC09IGxl bjsKIAkJCQliaW8yLT5iaV9mbGFncyAmPSB+KDE8PEJJT19TRUdfVkFMSUQpOwogCQkJfQogCQkJ Z290byBiaW9fZnVsbDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDUuYyBiL2RyaXZlcnMv bWQvcmFpZDUuYwppbmRleCA0N2RhMGFmLi5hNWQ5YzBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21k L3JhaWQ1LmMKKysrIGIvZHJpdmVycy9tZC9yYWlkNS5jCkBAIC0xMzMsNyArMTMzLDcgQEAgc3Rh dGljIGlubGluZSB2b2lkIHVubG9ja19hbGxfZGV2aWNlX2hhc2hfbG9ja3NfaXJxKHN0cnVjdCBy NWNvbmYgKmNvbmYpCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBiaW8gKnI1X25leHRfYmlvKHN0cnVj dCBiaW8gKmJpbywgc2VjdG9yX3Qgc2VjdG9yKQogewogCWludCBzZWN0b3JzID0gYmlvX3NlY3Rv cnMoYmlvKTsKLQlpZiAoYmlvLT5iaV9zZWN0b3IgKyBzZWN0b3JzIDwgc2VjdG9yICsgU1RSSVBF X1NFQ1RPUlMpCisJaWYgKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgKyBzZWN0b3JzIDwgc2VjdG9y ICsgU1RSSVBFX1NFQ1RPUlMpCiAJCXJldHVybiBiaW8tPmJpX25leHQ7CiAJZWxzZQogCQlyZXR1 cm4gTlVMTDsKQEAgLTIyNSw3ICsyMjUsNyBAQCBzdGF0aWMgdm9pZCByZXR1cm5faW8oc3RydWN0 IGJpbyAqcmV0dXJuX2JpKQogCiAJCXJldHVybl9iaSA9IGJpLT5iaV9uZXh0OwogCQliaS0+Ymlf bmV4dCA9IE5VTEw7Ci0JCWJpLT5iaV9zaXplID0gMDsKKwkJYmktPmJpX2l0ZXIuYmlfc2l6ZSA9 IDA7CiAJCXRyYWNlX2Jsb2NrX2Jpb19jb21wbGV0ZShiZGV2X2dldF9xdWV1ZShiaS0+YmlfYmRl diksCiAJCQkJCSBiaSwgMCk7CiAJCWJpb19lbmRpbyhiaSwgMCk7CkBAIC04NTQsMTAgKzg1NCwx MCBAQCBzdGF0aWMgdm9pZCBvcHNfcnVuX2lvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVj dCBzdHJpcGVfaGVhZF9zdGF0ZSAqcykKIAkJCQliaS0+YmlfcncsIGkpOwogCQkJYXRvbWljX2lu Yygmc2gtPmNvdW50KTsKIAkJCWlmICh1c2VfbmV3X29mZnNldChjb25mLCBzaCkpCi0JCQkJYmkt PmJpX3NlY3RvciA9IChzaC0+c2VjdG9yCisJCQkJYmktPmJpX2l0ZXIuYmlfc2VjdG9yID0gKHNo LT5zZWN0b3IKIAkJCQkJCSArIHJkZXYtPm5ld19kYXRhX29mZnNldCk7CiAJCQllbHNlCi0JCQkJ YmktPmJpX3NlY3RvciA9IChzaC0+c2VjdG9yCisJCQkJYmktPmJpX2l0ZXIuYmlfc2VjdG9yID0g KHNoLT5zZWN0b3IKIAkJCQkJCSArIHJkZXYtPmRhdGFfb2Zmc2V0KTsKIAkJCWlmICh0ZXN0X2Jp dChSNV9SZWFkTm9NZXJnZSwgJnNoLT5kZXZbaV0uZmxhZ3MpKQogCQkJCWJpLT5iaV9ydyB8PSBS RVFfTk9NRVJHRTsKQEAgLTg2NSw3ICs4NjUsNyBAQCBzdGF0aWMgdm9pZCBvcHNfcnVuX2lvKHN0 cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBzdHJpcGVfaGVhZF9zdGF0ZSAqcykKIAkJCWJp LT5iaV92Y250ID0gMTsKIAkJCWJpLT5iaV9pb192ZWNbMF0uYnZfbGVuID0gU1RSSVBFX1NJWkU7 CiAJCQliaS0+YmlfaW9fdmVjWzBdLmJ2X29mZnNldCA9IDA7Ci0JCQliaS0+Ymlfc2l6ZSA9IFNU UklQRV9TSVpFOworCQkJYmktPmJpX2l0ZXIuYmlfc2l6ZSA9IFNUUklQRV9TSVpFOwogCQkJLyoK IAkJCSAqIElmIHRoaXMgaXMgZGlzY2FyZCByZXF1ZXN0LCBzZXQgYmlfdmNudCAwLiBXZSBkb24n dAogCQkJICogd2FudCB0byBjb25mdXNlIFNDU0kgYmVjYXVzZSBTQ1NJIHdpbGwgcmVwbGFjZSBw YXlsb2FkCkBAIC05MDEsMTUgKzkwMSwxNSBAQCBzdGF0aWMgdm9pZCBvcHNfcnVuX2lvKHN0cnVj dCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBzdHJpcGVfaGVhZF9zdGF0ZSAqcykKIAkJCQlyYmkt PmJpX3J3LCBpKTsKIAkJCWF0b21pY19pbmMoJnNoLT5jb3VudCk7CiAJCQlpZiAodXNlX25ld19v ZmZzZXQoY29uZiwgc2gpKQotCQkJCXJiaS0+Ymlfc2VjdG9yID0gKHNoLT5zZWN0b3IKKwkJCQly YmktPmJpX2l0ZXIuYmlfc2VjdG9yID0gKHNoLT5zZWN0b3IKIAkJCQkJCSAgKyBycmRldi0+bmV3 X2RhdGFfb2Zmc2V0KTsKIAkJCWVsc2UKLQkJCQlyYmktPmJpX3NlY3RvciA9IChzaC0+c2VjdG9y CisJCQkJcmJpLT5iaV9pdGVyLmJpX3NlY3RvciA9IChzaC0+c2VjdG9yCiAJCQkJCQkgICsgcnJk ZXYtPmRhdGFfb2Zmc2V0KTsKIAkJCXJiaS0+YmlfdmNudCA9IDE7CiAJCQlyYmktPmJpX2lvX3Zl Y1swXS5idl9sZW4gPSBTVFJJUEVfU0laRTsKIAkJCXJiaS0+YmlfaW9fdmVjWzBdLmJ2X29mZnNl dCA9IDA7Ci0JCQlyYmktPmJpX3NpemUgPSBTVFJJUEVfU0laRTsKKwkJCXJiaS0+YmlfaXRlci5i aV9zaXplID0gU1RSSVBFX1NJWkU7CiAJCQkvKgogCQkJICogSWYgdGhpcyBpcyBkaXNjYXJkIHJl cXVlc3QsIHNldCBiaV92Y250IDAuIFdlIGRvbid0CiAJCQkgKiB3YW50IHRvIGNvbmZ1c2UgU0NT SSBiZWNhdXNlIFNDU0kgd2lsbCByZXBsYWNlIHBheWxvYWQKQEAgLTk0NCwxMCArOTQ0LDEwIEBA IGFzeW5jX2NvcHlfZGF0YShpbnQgZnJvbWJpbywgc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgcGFn ZSAqcGFnZSwKIAlzdHJ1Y3QgYXN5bmNfc3VibWl0X2N0bCBzdWJtaXQ7CiAJZW51bSBhc3luY190 eF9mbGFncyBmbGFncyA9IDA7CiAKLQlpZiAoYmlvLT5iaV9zZWN0b3IgPj0gc2VjdG9yKQotCQlw YWdlX29mZnNldCA9IChzaWduZWQpKGJpby0+Ymlfc2VjdG9yIC0gc2VjdG9yKSAqIDUxMjsKKwlp ZiAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+PSBzZWN0b3IpCisJCXBhZ2Vfb2Zmc2V0ID0gKHNp Z25lZCkoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAtIHNlY3RvcikgKiA1MTI7CiAJZWxzZQotCQlw YWdlX29mZnNldCA9IChzaWduZWQpKHNlY3RvciAtIGJpby0+Ymlfc2VjdG9yKSAqIC01MTI7CisJ CXBhZ2Vfb2Zmc2V0ID0gKHNpZ25lZCkoc2VjdG9yIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcikg KiAtNTEyOwogCiAJaWYgKGZyb21iaW8pCiAJCWZsYWdzIHw9IEFTWU5DX1RYX0ZFTkNFOwpAQCAt MTAxNCw3ICsxMDE0LDcgQEAgc3RhdGljIHZvaWQgb3BzX2NvbXBsZXRlX2Jpb2ZpbGwodm9pZCAq c3RyaXBlX2hlYWRfcmVmKQogCQkJQlVHX09OKCFkZXYtPnJlYWQpOwogCQkJcmJpID0gZGV2LT5y ZWFkOwogCQkJZGV2LT5yZWFkID0gTlVMTDsKLQkJCXdoaWxlIChyYmkgJiYgcmJpLT5iaV9zZWN0 b3IgPAorCQkJd2hpbGUgKHJiaSAmJiByYmktPmJpX2l0ZXIuYmlfc2VjdG9yIDwKIAkJCQlkZXYt PnNlY3RvciArIFNUUklQRV9TRUNUT1JTKSB7CiAJCQkJcmJpMiA9IHI1X25leHRfYmlvKHJiaSwg ZGV2LT5zZWN0b3IpOwogCQkJCWlmICghcmFpZDVfZGVjX2JpX2FjdGl2ZV9zdHJpcGVzKHJiaSkp IHsKQEAgLTEwNTAsNyArMTA1MCw3IEBAIHN0YXRpYyB2b2lkIG9wc19ydW5fYmlvZmlsbChzdHJ1 Y3Qgc3RyaXBlX2hlYWQgKnNoKQogCQkJZGV2LT5yZWFkID0gcmJpID0gZGV2LT50b3JlYWQ7CiAJ CQlkZXYtPnRvcmVhZCA9IE5VTEw7CiAJCQlzcGluX3VubG9ja19pcnEoJnNoLT5zdHJpcGVfbG9j ayk7Ci0JCQl3aGlsZSAocmJpICYmIHJiaS0+Ymlfc2VjdG9yIDwKKwkJCXdoaWxlIChyYmkgJiYg cmJpLT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJCQkJZGV2LT5zZWN0b3IgKyBTVFJJUEVfU0VDVE9S UykgewogCQkJCXR4ID0gYXN5bmNfY29weV9kYXRhKDAsIHJiaSwgZGV2LT5wYWdlLAogCQkJCQlk ZXYtPnNlY3RvciwgdHgpOwpAQCAtMTM5Miw3ICsxMzkyLDcgQEAgb3BzX3J1bl9iaW9kcmFpbihz dHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKnR4 KQogCQkJd2JpID0gZGV2LT53cml0dGVuID0gY2hvc2VuOwogCQkJc3Bpbl91bmxvY2tfaXJxKCZz aC0+c3RyaXBlX2xvY2spOwogCi0JCQl3aGlsZSAod2JpICYmIHdiaS0+Ymlfc2VjdG9yIDwKKwkJ CXdoaWxlICh3YmkgJiYgd2JpLT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJCQkJZGV2LT5zZWN0b3Ig KyBTVFJJUEVfU0VDVE9SUykgewogCQkJCWlmICh3YmktPmJpX3J3ICYgUkVRX0ZVQSkKIAkJCQkJ c2V0X2JpdChSNV9XYW50RlVBLCAmZGV2LT5mbGFncyk7CkBAIC0yNjE2LDcgKzI2MTYsNyBAQCBz dGF0aWMgaW50IGFkZF9zdHJpcGVfYmlvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBi aW8gKmJpLCBpbnQgZGRfaWR4LCBpbgogCWludCBmaXJzdHdyaXRlPTA7CiAKIAlwcl9kZWJ1Zygi YWRkaW5nIGJpIGIjJWxsdSB0byBzdHJpcGUgcyMlbGx1XG4iLAotCQkodW5zaWduZWQgbG9uZyBs b25nKWJpLT5iaV9zZWN0b3IsCisJCSh1bnNpZ25lZCBsb25nIGxvbmcpYmktPmJpX2l0ZXIuYmlf c2VjdG9yLAogCQkodW5zaWduZWQgbG9uZyBsb25nKXNoLT5zZWN0b3IpOwogCiAJLyoKQEAgLTI2 MzQsMTIgKzI2MzQsMTIgQEAgc3RhdGljIGludCBhZGRfc3RyaXBlX2JpbyhzdHJ1Y3Qgc3RyaXBl X2hlYWQgKnNoLCBzdHJ1Y3QgYmlvICpiaSwgaW50IGRkX2lkeCwgaW4KIAkJCWZpcnN0d3JpdGUg PSAxOwogCX0gZWxzZQogCQliaXAgPSAmc2gtPmRldltkZF9pZHhdLnRvcmVhZDsKLQl3aGlsZSAo KmJpcCAmJiAoKmJpcCktPmJpX3NlY3RvciA8IGJpLT5iaV9zZWN0b3IpIHsKLQkJaWYgKGJpb19l bmRfc2VjdG9yKCpiaXApID4gYmktPmJpX3NlY3RvcikKKwl3aGlsZSAoKmJpcCAmJiAoKmJpcCkt PmJpX2l0ZXIuYmlfc2VjdG9yIDwgYmktPmJpX2l0ZXIuYmlfc2VjdG9yKSB7CisJCWlmIChiaW9f ZW5kX3NlY3RvcigqYmlwKSA+IGJpLT5iaV9pdGVyLmJpX3NlY3RvcikKIAkJCWdvdG8gb3Zlcmxh cDsKIAkJYmlwID0gJiAoKmJpcCktPmJpX25leHQ7CiAJfQotCWlmICgqYmlwICYmICgqYmlwKS0+ Ymlfc2VjdG9yIDwgYmlvX2VuZF9zZWN0b3IoYmkpKQorCWlmICgqYmlwICYmICgqYmlwKS0+Ymlf aXRlci5iaV9zZWN0b3IgPCBiaW9fZW5kX3NlY3RvcihiaSkpCiAJCWdvdG8gb3ZlcmxhcDsKIAog CUJVR19PTigqYmlwICYmIGJpLT5iaV9uZXh0ICYmICgqYmlwKSAhPSBiaS0+YmlfbmV4dCk7CkBA IC0yNjUzLDcgKzI2NTMsNyBAQCBzdGF0aWMgaW50IGFkZF9zdHJpcGVfYmlvKHN0cnVjdCBzdHJp cGVfaGVhZCAqc2gsIHN0cnVjdCBiaW8gKmJpLCBpbnQgZGRfaWR4LCBpbgogCQlzZWN0b3JfdCBz ZWN0b3IgPSBzaC0+ZGV2W2RkX2lkeF0uc2VjdG9yOwogCQlmb3IgKGJpPXNoLT5kZXZbZGRfaWR4 XS50b3dyaXRlOwogCQkgICAgIHNlY3RvciA8IHNoLT5kZXZbZGRfaWR4XS5zZWN0b3IgKyBTVFJJ UEVfU0VDVE9SUyAmJgotCQkJICAgICBiaSAmJiBiaS0+Ymlfc2VjdG9yIDw9IHNlY3RvcjsKKwkJ CSAgICAgYmkgJiYgYmktPmJpX2l0ZXIuYmlfc2VjdG9yIDw9IHNlY3RvcjsKIAkJICAgICBiaSA9 IHI1X25leHRfYmlvKGJpLCBzaC0+ZGV2W2RkX2lkeF0uc2VjdG9yKSkgewogCQkJaWYgKGJpb19l bmRfc2VjdG9yKGJpKSA+PSBzZWN0b3IpCiAJCQkJc2VjdG9yID0gYmlvX2VuZF9zZWN0b3IoYmkp OwpAQCAtMjY2Myw3ICsyNjYzLDcgQEAgc3RhdGljIGludCBhZGRfc3RyaXBlX2JpbyhzdHJ1Y3Qg c3RyaXBlX2hlYWQgKnNoLCBzdHJ1Y3QgYmlvICpiaSwgaW50IGRkX2lkeCwgaW4KIAl9CiAKIAlw cl9kZWJ1ZygiYWRkZWQgYmkgYiMlbGx1IHRvIHN0cmlwZSBzIyVsbHUsIGRpc2sgJWQuXG4iLAot CQkodW5zaWduZWQgbG9uZyBsb25nKSgqYmlwKS0+Ymlfc2VjdG9yLAorCQkodW5zaWduZWQgbG9u ZyBsb25nKSgqYmlwKS0+YmlfaXRlci5iaV9zZWN0b3IsCiAJCSh1bnNpZ25lZCBsb25nIGxvbmcp c2gtPnNlY3RvciwgZGRfaWR4KTsKIAlzcGluX3VubG9ja19pcnEoJnNoLT5zdHJpcGVfbG9jayk7 CiAKQEAgLTI3MzgsNyArMjczOCw3IEBAIGhhbmRsZV9mYWlsZWRfc3RyaXBlKHN0cnVjdCByNWNv bmYgKmNvbmYsIHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsCiAJCWlmICh0ZXN0X2FuZF9jbGVhcl9i aXQoUjVfT3ZlcmxhcCwgJnNoLT5kZXZbaV0uZmxhZ3MpKQogCQkJd2FrZV91cCgmY29uZi0+d2Fp dF9mb3Jfb3ZlcmxhcCk7CiAKLQkJd2hpbGUgKGJpICYmIGJpLT5iaV9zZWN0b3IgPAorCQl3aGls ZSAoYmkgJiYgYmktPmJpX2l0ZXIuYmlfc2VjdG9yIDwKIAkJCXNoLT5kZXZbaV0uc2VjdG9yICsg U1RSSVBFX1NFQ1RPUlMpIHsKIAkJCXN0cnVjdCBiaW8gKm5leHRiaSA9IHI1X25leHRfYmlvKGJp LCBzaC0+ZGV2W2ldLnNlY3Rvcik7CiAJCQljbGVhcl9iaXQoQklPX1VQVE9EQVRFLCAmYmktPmJp X2ZsYWdzKTsKQEAgLTI3NTcsNyArMjc1Nyw3IEBAIGhhbmRsZV9mYWlsZWRfc3RyaXBlKHN0cnVj dCByNWNvbmYgKmNvbmYsIHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsCiAJCWJpID0gc2gtPmRldltp XS53cml0dGVuOwogCQlzaC0+ZGV2W2ldLndyaXR0ZW4gPSBOVUxMOwogCQlpZiAoYmkpIGJpdG1h cF9lbmQgPSAxOwotCQl3aGlsZSAoYmkgJiYgYmktPmJpX3NlY3RvciA8CisJCXdoaWxlIChiaSAm JiBiaS0+YmlfaXRlci5iaV9zZWN0b3IgPAogCQkgICAgICAgc2gtPmRldltpXS5zZWN0b3IgKyBT VFJJUEVfU0VDVE9SUykgewogCQkJc3RydWN0IGJpbyAqYmkyID0gcjVfbmV4dF9iaW8oYmksIHNo LT5kZXZbaV0uc2VjdG9yKTsKIAkJCWNsZWFyX2JpdChCSU9fVVBUT0RBVEUsICZiaS0+YmlfZmxh Z3MpOwpAQCAtMjc4MSw3ICsyNzgxLDcgQEAgaGFuZGxlX2ZhaWxlZF9zdHJpcGUoc3RydWN0IHI1 Y29uZiAqY29uZiwgc3RydWN0IHN0cmlwZV9oZWFkICpzaCwKIAkJCXNwaW5fdW5sb2NrX2lycSgm c2gtPnN0cmlwZV9sb2NrKTsKIAkJCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUjVfT3ZlcmxhcCwg JnNoLT5kZXZbaV0uZmxhZ3MpKQogCQkJCXdha2VfdXAoJmNvbmYtPndhaXRfZm9yX292ZXJsYXAp OwotCQkJd2hpbGUgKGJpICYmIGJpLT5iaV9zZWN0b3IgPAorCQkJd2hpbGUgKGJpICYmIGJpLT5i aV9pdGVyLmJpX3NlY3RvciA8CiAJCQkgICAgICAgc2gtPmRldltpXS5zZWN0b3IgKyBTVFJJUEVf U0VDVE9SUykgewogCQkJCXN0cnVjdCBiaW8gKm5leHRiaSA9CiAJCQkJCXI1X25leHRfYmlvKGJp LCBzaC0+ZGV2W2ldLnNlY3Rvcik7CkBAIC0zMDA1LDcgKzMwMDUsNyBAQCBzdGF0aWMgdm9pZCBo YW5kbGVfc3RyaXBlX2NsZWFuX2V2ZW50KHN0cnVjdCByNWNvbmYgKmNvbmYsCiAJCQkJCWNsZWFy X2JpdChSNV9VUFRPREFURSwgJmRldi0+ZmxhZ3MpOwogCQkJCXdiaSA9IGRldi0+d3JpdHRlbjsK IAkJCQlkZXYtPndyaXR0ZW4gPSBOVUxMOwotCQkJCXdoaWxlICh3YmkgJiYgd2JpLT5iaV9zZWN0 b3IgPAorCQkJCXdoaWxlICh3YmkgJiYgd2JpLT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJCQkJCWRl di0+c2VjdG9yICsgU1RSSVBFX1NFQ1RPUlMpIHsKIAkJCQkJd2JpMiA9IHI1X25leHRfYmlvKHdi aSwgZGV2LT5zZWN0b3IpOwogCQkJCQlpZiAoIXJhaWQ1X2RlY19iaV9hY3RpdmVfc3RyaXBlcyh3 YmkpKSB7CkBAIC00MDk3LDcgKzQwOTcsNyBAQCBzdGF0aWMgaW50IHJhaWQ1X21lcmdlYWJsZV9i dmVjKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLAogCiBzdGF0aWMgaW50IGluX2NodW5rX2JvdW5k YXJ5KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKmJpbykKIHsKLQlzZWN0b3JfdCBz ZWN0b3IgPSBiaW8tPmJpX3NlY3RvciArIGdldF9zdGFydF9zZWN0KGJpby0+YmlfYmRldik7CisJ c2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciArIGdldF9zdGFydF9zZWN0 KGJpby0+YmlfYmRldik7CiAJdW5zaWduZWQgaW50IGNodW5rX3NlY3RvcnMgPSBtZGRldi0+Y2h1 bmtfc2VjdG9yczsKIAl1bnNpZ25lZCBpbnQgYmlvX3NlY3RvcnMgPSBiaW9fc2VjdG9ycyhiaW8p OwogCkBAIC00MjM0LDkgKzQyMzQsOSBAQCBzdGF0aWMgaW50IGNodW5rX2FsaWduZWRfcmVhZChz dHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogcmFpZF9iaW8pCiAJLyoKIAkgKgljb21w dXRlIHBvc2l0aW9uCiAJICovCi0JYWxpZ25fYmktPmJpX3NlY3RvciA9ICByYWlkNV9jb21wdXRl X3NlY3Rvcihjb25mLCByYWlkX2Jpby0+Ymlfc2VjdG9yLAotCQkJCQkJICAgIDAsCi0JCQkJCQkg ICAgJmRkX2lkeCwgTlVMTCk7CisJYWxpZ25fYmktPmJpX2l0ZXIuYmlfc2VjdG9yID0KKwkJcmFp ZDVfY29tcHV0ZV9zZWN0b3IoY29uZiwgcmFpZF9iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJ CSAgICAgMCwgJmRkX2lkeCwgTlVMTCk7CiAKIAllbmRfc2VjdG9yID0gYmlvX2VuZF9zZWN0b3Io YWxpZ25fYmkpOwogCXJjdV9yZWFkX2xvY2soKTsKQEAgLTQyNjEsNyArNDI2MSw4IEBAIHN0YXRp YyBpbnQgY2h1bmtfYWxpZ25lZF9yZWFkKHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8g KiByYWlkX2JpbykKIAkJYWxpZ25fYmktPmJpX2ZsYWdzICY9IH4oMSA8PCBCSU9fU0VHX1ZBTElE KTsKIAogCQlpZiAoIWJpb19maXRzX3JkZXYoYWxpZ25fYmkpIHx8Ci0JCSAgICBpc19iYWRibG9j ayhyZGV2LCBhbGlnbl9iaS0+Ymlfc2VjdG9yLCBiaW9fc2VjdG9ycyhhbGlnbl9iaSksCisJCSAg ICBpc19iYWRibG9jayhyZGV2LCBhbGlnbl9iaS0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJYmlv X3NlY3RvcnMoYWxpZ25fYmkpLAogCQkJCSZmaXJzdF9iYWQsICZiYWRfc2VjdG9ycykpIHsKIAkJ CS8qIHRvbyBiaWcgaW4gc29tZSB3YXksIG9yIGhhcyBhIGtub3duIGJhZCBibG9jayAqLwogCQkJ YmlvX3B1dChhbGlnbl9iaSk7CkBAIC00MjcwLDcgKzQyNzEsNyBAQCBzdGF0aWMgaW50IGNodW5r X2FsaWduZWRfcmVhZChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogcmFpZF9iaW8p CiAJCX0KIAogCQkvKiBObyByZXNoYXBlIGFjdGl2ZSwgc28gd2UgY2FuIHRydXN0IHJkZXYtPmRh dGFfb2Zmc2V0ICovCi0JCWFsaWduX2JpLT5iaV9zZWN0b3IgKz0gcmRldi0+ZGF0YV9vZmZzZXQ7 CisJCWFsaWduX2JpLT5iaV9pdGVyLmJpX3NlY3RvciArPSByZGV2LT5kYXRhX29mZnNldDsKIAog CQlzcGluX2xvY2tfaXJxKCZjb25mLT5kZXZpY2VfbG9jayk7CiAJCXdhaXRfZXZlbnRfbG9ja19p cnEoY29uZi0+d2FpdF9mb3Jfc3RyaXBlLApAQCAtNDI4Miw3ICs0MjgzLDcgQEAgc3RhdGljIGlu dCBjaHVua19hbGlnbmVkX3JlYWQoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIHJh aWRfYmlvKQogCQlpZiAobWRkZXYtPmdlbmRpc2spCiAJCQl0cmFjZV9ibG9ja19iaW9fcmVtYXAo YmRldl9nZXRfcXVldWUoYWxpZ25fYmktPmJpX2JkZXYpLAogCQkJCQkgICAgICBhbGlnbl9iaSwg ZGlza19kZXZ0KG1kZGV2LT5nZW5kaXNrKSwKLQkJCQkJICAgICAgcmFpZF9iaW8tPmJpX3NlY3Rv cik7CisJCQkJCSAgICAgIHJhaWRfYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAJCWdlbmVyaWNf bWFrZV9yZXF1ZXN0KGFsaWduX2JpKTsKIAkJcmV0dXJuIDE7CiAJfSBlbHNlIHsKQEAgLTQ0NjUs OCArNDQ2Niw4IEBAIHN0YXRpYyB2b2lkIG1ha2VfZGlzY2FyZF9yZXF1ZXN0KHN0cnVjdCBtZGRl diAqbWRkZXYsIHN0cnVjdCBiaW8gKmJpKQogCQkvKiBTa2lwIGRpc2NhcmQgd2hpbGUgcmVzaGFw ZSBpcyBoYXBwZW5pbmcgKi8KIAkJcmV0dXJuOwogCi0JbG9naWNhbF9zZWN0b3IgPSBiaS0+Ymlf c2VjdG9yICYgfigoc2VjdG9yX3QpU1RSSVBFX1NFQ1RPUlMtMSk7Ci0JbGFzdF9zZWN0b3IgPSBi aS0+Ymlfc2VjdG9yICsgKGJpLT5iaV9zaXplPj45KTsKKwlsb2dpY2FsX3NlY3RvciA9IGJpLT5i aV9pdGVyLmJpX3NlY3RvciAmIH4oKHNlY3Rvcl90KVNUUklQRV9TRUNUT1JTLTEpOworCWxhc3Rf c2VjdG9yID0gYmktPmJpX2l0ZXIuYmlfc2VjdG9yICsgKGJpLT5iaV9pdGVyLmJpX3NpemU+Pjkp OwogCiAJYmktPmJpX25leHQgPSBOVUxMOwogCWJpLT5iaV9waHlzX3NlZ21lbnRzID0gMTsgLyog b3Zlci1sb2FkZWQgdG8gY291bnQgYWN0aXZlIHN0cmlwZXMgKi8KQEAgLTQ1NzAsNyArNDU3MSw3 IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3Qg YmlvICogYmkpCiAJCXJldHVybjsKIAl9CiAKLQlsb2dpY2FsX3NlY3RvciA9IGJpLT5iaV9zZWN0 b3IgJiB+KChzZWN0b3JfdClTVFJJUEVfU0VDVE9SUy0xKTsKKwlsb2dpY2FsX3NlY3RvciA9IGJp LT5iaV9pdGVyLmJpX3NlY3RvciAmIH4oKHNlY3Rvcl90KVNUUklQRV9TRUNUT1JTLTEpOwogCWxh c3Rfc2VjdG9yID0gYmlvX2VuZF9zZWN0b3IoYmkpOwogCWJpLT5iaV9uZXh0ID0gTlVMTDsKIAli aS0+YmlfcGh5c19zZWdtZW50cyA9IDE7CS8qIG92ZXItbG9hZGVkIHRvIGNvdW50IGFjdGl2ZSBz dHJpcGVzICovCkBAIC01MDU0LDcgKzUwNTUsOCBAQCBzdGF0aWMgaW50ICByZXRyeV9hbGlnbmVk X3JlYWQoc3RydWN0IHI1Y29uZiAqY29uZiwgc3RydWN0IGJpbyAqcmFpZF9iaW8pCiAJaW50IHJl bWFpbmluZzsKIAlpbnQgaGFuZGxlZCA9IDA7CiAKLQlsb2dpY2FsX3NlY3RvciA9IHJhaWRfYmlv LT5iaV9zZWN0b3IgJiB+KChzZWN0b3JfdClTVFJJUEVfU0VDVE9SUy0xKTsKKwlsb2dpY2FsX3Nl Y3RvciA9IHJhaWRfYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAmCisJCX4oKHNlY3Rvcl90KVNUUklQ RV9TRUNUT1JTLTEpOwogCXNlY3RvciA9IHJhaWQ1X2NvbXB1dGVfc2VjdG9yKGNvbmYsIGxvZ2lj YWxfc2VjdG9yLAogCQkJCSAgICAgIDAsICZkZF9pZHgsIE5VTEwpOwogCWxhc3Rfc2VjdG9yID0g YmlvX2VuZF9zZWN0b3IocmFpZF9iaW8pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Jsb2Nr L2Rjc3NibGsuYyBiL2RyaXZlcnMvczM5MC9ibG9jay9kY3NzYmxrLmMKaW5kZXggNmVjYTAxOS4u MTY4MTRhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2Jsb2NrL2Rjc3NibGsuYworKysgYi9k cml2ZXJzL3MzOTAvYmxvY2svZGNzc2Jsay5jCkBAIC04MTksNyArODE5LDggQEAgZGNzc2Jsa19t YWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlk ZXZfaW5mbyA9IGJpby0+YmlfYmRldi0+YmRfZGlzay0+cHJpdmF0ZV9kYXRhOwogCWlmIChkZXZf aW5mbyA9PSBOVUxMKQogCQlnb3RvIGZhaWw7Ci0JaWYgKChiaW8tPmJpX3NlY3RvciAmIDcpICE9 IDAgfHwgKGJpby0+Ymlfc2l6ZSAmIDQwOTUpICE9IDApCisJaWYgKChiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yICYgNykgIT0gMCB8fAorCSAgICAoYmlvLT5iaV9pdGVyLmJpX3NpemUgJiA0MDk1KSAh PSAwKQogCQkvKiBSZXF1ZXN0IGlzIG5vdCBwYWdlLWFsaWduZWQuICovCiAJCWdvdG8gZmFpbDsK IAlpZiAoYmlvX2VuZF9zZWN0b3IoYmlvKSA+IGdldF9jYXBhY2l0eShiaW8tPmJpX2JkZXYtPmJk X2Rpc2spKSB7CkBAIC04NDIsNyArODQzLDcgQEAgZGNzc2Jsa19tYWtlX3JlcXVlc3Qoc3RydWN0 IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkJfQogCX0KIAotCWluZGV4ID0g KGJpby0+Ymlfc2VjdG9yID4+IDMpOworCWluZGV4ID0gKGJpby0+YmlfaXRlci5iaV9zZWN0b3Ig Pj4gMyk7CiAJYmlvX2Zvcl9lYWNoX3NlZ21lbnQoYnZlYywgYmlvLCBpKSB7CiAJCXBhZ2VfYWRk ciA9ICh1bnNpZ25lZCBsb25nKQogCQkJcGFnZV9hZGRyZXNzKGJ2ZWMtPmJ2X3BhZ2UpICsgYnZl Yy0+YnZfb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Jsb2NrL3hwcmFtLmMgYi9k cml2ZXJzL3MzOTAvYmxvY2sveHByYW0uYwppbmRleCA0NjRkZDI5Li5kZDRlNzNmIDEwMDY0NAot LS0gYS9kcml2ZXJzL3MzOTAvYmxvY2sveHByYW0uYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2sv eHByYW0uYwpAQCAtMTkwLDE1ICsxOTAsMTYgQEAgc3RhdGljIHZvaWQgeHByYW1fbWFrZV9yZXF1 ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8pCiAJdW5zaWduZWQg bG9uZyBieXRlczsKIAlpbnQgaTsKIAotCWlmICgoYmlvLT5iaV9zZWN0b3IgJiA3KSAhPSAwIHx8 IChiaW8tPmJpX3NpemUgJiA0MDk1KSAhPSAwKQorCWlmICgoYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciAmIDcpICE9IDAgfHwKKwkgICAgKGJpby0+YmlfaXRlci5iaV9zaXplICYgNDA5NSkgIT0gMCkK IAkJLyogUmVxdWVzdCBpcyBub3QgcGFnZS1hbGlnbmVkLiAqLwogCQlnb3RvIGZhaWw7Ci0JaWYg KChiaW8tPmJpX3NpemUgPj4gMTIpID4geGRldi0+c2l6ZSkKKwlpZiAoKGJpby0+YmlfaXRlci5i aV9zaXplID4+IDEyKSA+IHhkZXYtPnNpemUpCiAJCS8qIFJlcXVlc3Qgc2l6ZSBpcyBubyBwYWdl LWFsaWduZWQuICovCiAJCWdvdG8gZmFpbDsKLQlpZiAoKGJpby0+Ymlfc2VjdG9yID4+IDMpID4g MHhmZmZmZmZmZlUgLSB4ZGV2LT5vZmZzZXQpCisJaWYgKChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y ID4+IDMpID4gMHhmZmZmZmZmZlUgLSB4ZGV2LT5vZmZzZXQpCiAJCWdvdG8gZmFpbDsKLQlpbmRl eCA9IChiaW8tPmJpX3NlY3RvciA+PiAzKSArIHhkZXYtPm9mZnNldDsKKwlpbmRleCA9IChiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yID4+IDMpICsgeGRldi0+b2Zmc2V0OwogCWJpb19mb3JfZWFjaF9z ZWdtZW50KGJ2ZWMsIGJpbywgaSkgewogCQlwYWdlX2FkZHIgPSAodW5zaWduZWQgbG9uZykKIAkJ CWttYXAoYnZlYy0+YnZfcGFnZSkgKyBidmVjLT5idl9vZmZzZXQ7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL3Njc2kvb3NkL29zZF9pbml0aWF0b3IuYyBiL2RyaXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRp YXRvci5jCmluZGV4IGFhNjYzNjEuLmJhYzA0YzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9v c2Qvb3NkX2luaXRpYXRvci5jCisrKyBiL2RyaXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5j CkBAIC03MzEsNyArNzMxLDcgQEAgc3RhdGljIGludCBfb3NkX3JlcV9saXN0X29iamVjdHMoc3Ry dWN0IG9zZF9yZXF1ZXN0ICpvciwKIAogCWJpby0+YmlfcncgJj0gflJFUV9XUklURTsKIAlvci0+ aW4uYmlvID0gYmlvOwotCW9yLT5pbi50b3RhbF9ieXRlcyA9IGJpby0+Ymlfc2l6ZTsKKwlvci0+ aW4udG90YWxfYnl0ZXMgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAlyZXR1cm4gMDsKIH0KIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2x1c3RyZS9sdXN0cmUvbGxpdGUvbGxvb3AuYyBi L2RyaXZlcnMvc3RhZ2luZy9sdXN0cmUvbHVzdHJlL2xsaXRlL2xsb29wLmMKaW5kZXggZTI0MjFl YS4uNTM3NDFiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2x1c3RyZS9sdXN0cmUvbGxp dGUvbGxvb3AuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvbHVzdHJlL2x1c3RyZS9sbGl0ZS9sbG9v cC5jCkBAIC0yMjAsNyArMjIwLDcgQEAgc3RhdGljIGludCBkb19iaW9fbHVzdHJlYmFja2VkKHN0 cnVjdCBsbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgYmlvICpoZWFkKQogCWZvciAoYmlvID0gaGVh ZDsgYmlvICE9IE5VTEw7IGJpbyA9IGJpby0+YmlfbmV4dCkgewogCQlMQVNTRVJUKHJ3ID09IGJp by0+YmlfcncpOwogCi0JCW9mZnNldCA9IChwZ29mZl90KShiaW8tPmJpX3NlY3RvciA8PCA5KSAr IGxvLT5sb19vZmZzZXQ7CisJCW9mZnNldCA9IChwZ29mZl90KShiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yIDw8IDkpICsgbG8tPmxvX29mZnNldDsKIAkJYmlvX2Zvcl9lYWNoX3NlZ21lbnQoYnZlYywg YmlvLCBpKSB7CiAJCQlCVUdfT04oYnZlYy0+YnZfb2Zmc2V0ICE9IDApOwogCQkJQlVHX09OKGJ2 ZWMtPmJ2X2xlbiAhPSBQQUdFX0NBQ0hFX1NJWkUpOwpAQCAtMzEzLDcgKzMxMyw4IEBAIHN0YXRp YyB1bnNpZ25lZCBpbnQgbG9vcF9nZXRfYmlvKHN0cnVjdCBsbG9vcF9kZXZpY2UgKmxvLCBzdHJ1 Y3QgYmlvICoqcmVxKQogCWJpbyA9ICZsby0+bG9fYmlvOwogCXdoaWxlICgqYmlvICYmICgqYmlv KS0+YmlfcncgPT0gcncpIHsKIAkJQ0RFQlVHKERfSU5GTywgImJpbyBzZWN0b3IgJWxsdSBzaXpl ICV1IGNvdW50ICV1IHZjbnQldSBcbiIsCi0JCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKSgq YmlvKS0+Ymlfc2VjdG9yLCAoKmJpbyktPmJpX3NpemUsCisJCSAgICAgICAodW5zaWduZWQgbG9u ZyBsb25nKSgqYmlvKS0+YmlfaXRlci5iaV9zZWN0b3IsCisJCSAgICAgICAoKmJpbyktPmJpX2l0 ZXIuYmlfc2l6ZSwKIAkJICAgICAgIHBhZ2VfY291bnQsICgqYmlvKS0+YmlfdmNudCk7CiAJCWlm IChwYWdlX2NvdW50ICsgKCpiaW8pLT5iaV92Y250ID4gTExPT1BfTUFYX1NFR01FTlRTKQogCQkJ YnJlYWs7CkBAIC0zNDcsNyArMzQ4LDggQEAgc3RhdGljIHZvaWQgbG9vcF9tYWtlX3JlcXVlc3Qo c3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKm9sZF9iaW8pCiAJCWdvdG8gZXJy OwogCiAJQ0RFQlVHKERfSU5GTywgInN1Ym1pdCBiaW8gc2VjdG9yICVsbHUgc2l6ZSAldVxuIiwK LQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylvbGRfYmlvLT5iaV9zZWN0b3IsIG9sZF9iaW8t PmJpX3NpemUpOworCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKW9sZF9iaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yLAorCSAgICAgICBvbGRfYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCiAJc3Bpbl9s b2NrX2lycSgmbG8tPmxvX2xvY2spOwogCWluYWN0aXZlID0gKGxvLT5sb19zdGF0ZSAhPSBMTE9P UF9CT1VORCk7CkBAIC0zNjcsNyArMzY5LDcgQEAgc3RhdGljIHZvaWQgbG9vcF9tYWtlX3JlcXVl c3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKm9sZF9iaW8pCiAJbG9vcF9h ZGRfYmlvKGxvLCBvbGRfYmlvKTsKIAlyZXR1cm47CiBlcnI6Ci0JY2ZzX2Jpb19pb19lcnJvcihv bGRfYmlvLCBvbGRfYmlvLT5iaV9zaXplKTsKKwljZnNfYmlvX2lvX2Vycm9yKG9sZF9iaW8sIG9s ZF9iaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiB9CiAKIApAQCAtMzc4LDcgKzM4MCw3IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBsb29wX2hhbmRsZV9iaW8oc3RydWN0IGxsb29wX2RldmljZSAqbG8sIHN0 cnVjdCBiaW8gKmJpbykKIAl3aGlsZSAoYmlvKSB7CiAJCXN0cnVjdCBiaW8gKnRtcCA9IGJpby0+ YmlfbmV4dDsKIAkJYmlvLT5iaV9uZXh0ID0gTlVMTDsKLQkJY2ZzX2Jpb19lbmRpbyhiaW8sIGJp by0+Ymlfc2l6ZSwgcmV0KTsKKwkJY2ZzX2Jpb19lbmRpbyhiaW8sIGJpby0+YmlfaXRlci5iaV9z aXplLCByZXQpOwogCQliaW8gPSB0bXA7CiAJfQogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFn aW5nL3pyYW0venJhbV9kcnYuYyBiL2RyaXZlcnMvc3RhZ2luZy96cmFtL3pyYW1fZHJ2LmMKaW5k ZXggNzljZTM2My4uZTllNmY5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3pyYW0venJh bV9kcnYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvenJhbS96cmFtX2Rydi5jCkBAIC0xNzEsMTMg KzE3MSwxNCBAQCBzdGF0aWMgaW5saW5lIGludCB2YWxpZF9pb19yZXF1ZXN0KHN0cnVjdCB6cmFt ICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8pCiAJdTY0IHN0YXJ0LCBlbmQsIGJvdW5kOwogCiAJLyog dW5hbGlnbmVkIHJlcXVlc3QgKi8KLQlpZiAodW5saWtlbHkoYmlvLT5iaV9zZWN0b3IgJiAoWlJB TV9TRUNUT1JfUEVSX0xPR0lDQUxfQkxPQ0sgLSAxKSkpCisJaWYgKHVubGlrZWx5KGJpby0+Ymlf aXRlci5iaV9zZWN0b3IgJgorCQkgICAgIChaUkFNX1NFQ1RPUl9QRVJfTE9HSUNBTF9CTE9DSyAt IDEpKSkKIAkJcmV0dXJuIDA7Ci0JaWYgKHVubGlrZWx5KGJpby0+Ymlfc2l6ZSAmIChaUkFNX0xP R0lDQUxfQkxPQ0tfU0laRSAtIDEpKSkKKwlpZiAodW5saWtlbHkoYmlvLT5iaV9pdGVyLmJpX3Np emUgJiAoWlJBTV9MT0dJQ0FMX0JMT0NLX1NJWkUgLSAxKSkpCiAJCXJldHVybiAwOwogCi0Jc3Rh cnQgPSBiaW8tPmJpX3NlY3RvcjsKLQllbmQgPSBzdGFydCArIChiaW8tPmJpX3NpemUgPj4gU0VD VE9SX1NISUZUKTsKKwlzdGFydCA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CisJZW5kID0gc3Rh cnQgKyAoYmlvLT5iaV9pdGVyLmJpX3NpemUgPj4gU0VDVE9SX1NISUZUKTsKIAlib3VuZCA9IHpy YW0tPmRpc2tzaXplID4+IFNFQ1RPUl9TSElGVDsKIAkvKiBvdXQgb2YgcmFuZ2UgcmFuZ2UgKi8K IAlpZiAodW5saWtlbHkoc3RhcnQgPj0gYm91bmQgfHwgZW5kID4gYm91bmQgfHwgc3RhcnQgPiBl bmQpKQpAQCAtNjg0LDggKzY4NSw5IEBAIHN0YXRpYyB2b2lkIF9fenJhbV9tYWtlX3JlcXVlc3Qo c3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW8gKmJpbywgaW50IHJ3KQogCQlicmVhazsKIAl9 CiAKLQlpbmRleCA9IGJpby0+Ymlfc2VjdG9yID4+IFNFQ1RPUlNfUEVSX1BBR0VfU0hJRlQ7Ci0J b2Zmc2V0ID0gKGJpby0+Ymlfc2VjdG9yICYgKFNFQ1RPUlNfUEVSX1BBR0UgLSAxKSkgPDwgU0VD VE9SX1NISUZUOworCWluZGV4ID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+PiBTRUNUT1JTX1BF Ul9QQUdFX1NISUZUOworCW9mZnNldCA9IChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICYKKwkJICAo U0VDVE9SU19QRVJfUEFHRSAtIDEpKSA8PCBTRUNUT1JfU0hJRlQ7CiAKIAliaW9fZm9yX2VhY2hf c2VnbWVudChidmVjLCBiaW8sIGkpIHsKIAkJaW50IG1heF90cmFuc2Zlcl9zaXplID0gUEFHRV9T SVpFIC0gb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfaWJs b2NrLmMgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9pYmxvY2suYwppbmRleCBjODc5NTlm Li4yZDI5MzU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9pYmxvY2su YworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9pYmxvY2suYwpAQCAtMzE5LDcgKzMx OSw3IEBAIGlibG9ja19nZXRfYmlvKHN0cnVjdCBzZV9jbWQgKmNtZCwgc2VjdG9yX3QgbGJhLCB1 MzIgc2dfbnVtKQogCWJpby0+YmlfYmRldiA9IGliX2Rldi0+aWJkX2JkOwogCWJpby0+YmlfcHJp dmF0ZSA9IGNtZDsKIAliaW8tPmJpX2VuZF9pbyA9ICZpYmxvY2tfYmlvX2RvbmU7Ci0JYmlvLT5i aV9zZWN0b3IgPSBsYmE7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGxiYTsKIAogCXJldHVy biBiaW87CiB9CmRpZmYgLS1naXQgYS9mcy9iaW8taW50ZWdyaXR5LmMgYi9mcy9iaW8taW50ZWdy aXR5LmMKaW5kZXggZmM2MGIzMS4uMDhlM2QxMyAxMDA2NDQKLS0tIGEvZnMvYmlvLWludGVncml0 eS5jCisrKyBiL2ZzL2Jpby1pbnRlZ3JpdHkuYwpAQCAtMjE1LDkgKzIxNSw5IEBAIHVuc2lnbmVk IGludCBiaW9faW50ZWdyaXR5X3RhZ19zaXplKHN0cnVjdCBiaW8gKmJpbykKIHsKIAlzdHJ1Y3Qg YmxrX2ludGVncml0eSAqYmkgPSBiZGV2X2dldF9pbnRlZ3JpdHkoYmlvLT5iaV9iZGV2KTsKIAot CUJVR19PTihiaW8tPmJpX3NpemUgPT0gMCk7CisJQlVHX09OKGJpby0+YmlfaXRlci5iaV9zaXpl ID09IDApOwogCi0JcmV0dXJuIGJpLT50YWdfc2l6ZSAqIChiaW8tPmJpX3NpemUgLyBiaS0+c2Vj dG9yX3NpemUpOworCXJldHVybiBiaS0+dGFnX3NpemUgKiAoYmlvLT5iaV9pdGVyLmJpX3NpemUg LyBiaS0+c2VjdG9yX3NpemUpOwogfQogRVhQT1JUX1NZTUJPTChiaW9faW50ZWdyaXR5X3RhZ19z aXplKTsKIApAQCAtMzAwLDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkIGJpb19pbnRlZ3JpdHlfZ2Vu ZXJhdGUoc3RydWN0IGJpbyAqYmlvKQogCXN0cnVjdCBibGtfaW50ZWdyaXR5ICpiaSA9IGJkZXZf Z2V0X2ludGVncml0eShiaW8tPmJpX2JkZXYpOwogCXN0cnVjdCBibGtfaW50ZWdyaXR5X2V4Y2hn IGJpeDsKIAlzdHJ1Y3QgYmlvX3ZlYyAqYnY7Ci0Jc2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5iaV9z ZWN0b3I7CisJc2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAl1bnNp Z25lZCBpbnQgaSwgc2VjdG9ycywgdG90YWw7CiAJdm9pZCAqcHJvdF9idWYgPSBiaW8tPmJpX2lu dGVncml0eS0+YmlwX2J1ZjsKIApAQCAtMzg3LDcgKzM4Nyw3IEBAIGludCBiaW9faW50ZWdyaXR5 X3ByZXAoc3RydWN0IGJpbyAqYmlvKQogCWJpcC0+YmlwX293bnNfYnVmID0gMTsKIAliaXAtPmJp cF9idWYgPSBidWY7CiAJYmlwLT5iaXBfc2l6ZSA9IGxlbjsKLQliaXAtPmJpcF9zZWN0b3IgPSBi aW8tPmJpX3NlY3RvcjsKKwliaXAtPmJpcF9zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y OwogCiAJLyogTWFwIGl0ICovCiAJb2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UoYnVmKTsKZGlmZiAt LWdpdCBhL2ZzL2Jpby5jIGIvZnMvYmlvLmMKaW5kZXggMzNkNzlhNC4uYTQwMmFkNiAxMDA2NDQK LS0tIGEvZnMvYmlvLmMKKysrIGIvZnMvYmlvLmMKQEAgLTUzMiwxMyArNTMyLDEzIEBAIHZvaWQg X19iaW9fY2xvbmUoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvICpiaW9fc3JjKQogCSAqIG1v c3QgdXNlcnMgd2lsbCBiZSBvdmVycmlkaW5nIC0+YmlfYmRldiB3aXRoIGEgbmV3IHRhcmdldCwK IAkgKiBzbyB3ZSBkb24ndCBzZXQgbm9yIGNhbGN1bGF0ZSBuZXcgcGh5c2ljYWwvaHcgc2VnbWVu dCBjb3VudHMgaGVyZQogCSAqLwotCWJpby0+Ymlfc2VjdG9yID0gYmlvX3NyYy0+Ymlfc2VjdG9y OworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBiaW9fc3JjLT5iaV9pdGVyLmJpX3NlY3RvcjsK IAliaW8tPmJpX2JkZXYgPSBiaW9fc3JjLT5iaV9iZGV2OwogCWJpby0+YmlfZmxhZ3MgfD0gMSA8 PCBCSU9fQ0xPTkVEOwogCWJpby0+YmlfcncgPSBiaW9fc3JjLT5iaV9ydzsKIAliaW8tPmJpX3Zj bnQgPSBiaW9fc3JjLT5iaV92Y250OwotCWJpby0+Ymlfc2l6ZSA9IGJpb19zcmMtPmJpX3NpemU7 Ci0JYmlvLT5iaV9pZHggPSBiaW9fc3JjLT5iaV9pZHg7CisJYmlvLT5iaV9pdGVyLmJpX3NpemUg PSBiaW9fc3JjLT5iaV9pdGVyLmJpX3NpemU7CisJYmlvLT5iaV9pdGVyLmJpX2lkeCA9IGJpb19z cmMtPmJpX2l0ZXIuYmlfaWR4OwogfQogRVhQT1JUX1NZTUJPTChfX2Jpb19jbG9uZSk7CiAKQEAg LTYxMiw3ICs2MTIsNyBAQCBzdGF0aWMgaW50IF9fYmlvX2FkZF9wYWdlKHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBwYWdlCiAJaWYgKHVubGlrZWx5KGJp b19mbGFnZ2VkKGJpbywgQklPX0NMT05FRCkpKQogCQlyZXR1cm4gMDsKIAotCWlmICgoKGJpby0+ Ymlfc2l6ZSArIGxlbikgPj4gOSkgPiBtYXhfc2VjdG9ycykKKwlpZiAoKChiaW8tPmJpX2l0ZXIu Ymlfc2l6ZSArIGxlbikgPj4gOSkgPiBtYXhfc2VjdG9ycykKIAkJcmV0dXJuIDA7CiAKIAkvKgpA QCAtNjM1LDggKzYzNSw5IEBAIHN0YXRpYyBpbnQgX19iaW9fYWRkX3BhZ2Uoc3RydWN0IHJlcXVl c3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHBhZ2UKIAkJCQkJICAgc2ltdWxh dGUgbWVyZ2luZyB1cGRhdGVkIHByZXZfYnZlYwogCQkJCQkgICBhcyBuZXcgYnZlYy4gKi8KIAkJ CQkJLmJpX2JkZXYgPSBiaW8tPmJpX2JkZXYsCi0JCQkJCS5iaV9zZWN0b3IgPSBiaW8tPmJpX3Nl Y3RvciwKLQkJCQkJLmJpX3NpemUgPSBiaW8tPmJpX3NpemUgLSBwcmV2X2J2X2xlbiwKKwkJCQkJ LmJpX3NlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJCS5iaV9zaXplID0gYmlv LT5iaV9pdGVyLmJpX3NpemUgLQorCQkJCQkJcHJldl9idl9sZW4sCiAJCQkJCS5iaV9ydyA9IGJp by0+YmlfcncsCiAJCQkJfTsKIApAQCAtNjg0LDggKzY4NSw4IEBAIHN0YXRpYyBpbnQgX19iaW9f YWRkX3BhZ2Uoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbywgc3RydWN0 IHBhZ2UKIAlpZiAocS0+bWVyZ2VfYnZlY19mbikgewogCQlzdHJ1Y3QgYnZlY19tZXJnZV9kYXRh IGJ2bSA9IHsKIAkJCS5iaV9iZGV2ID0gYmlvLT5iaV9iZGV2LAotCQkJLmJpX3NlY3RvciA9IGJp by0+Ymlfc2VjdG9yLAotCQkJLmJpX3NpemUgPSBiaW8tPmJpX3NpemUsCisJCQkuYmlfc2VjdG9y ID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCS5iaV9zaXplID0gYmlvLT5iaV9pdGVyLmJp X3NpemUsCiAJCQkuYmlfcncgPSBiaW8tPmJpX3J3LAogCQl9OwogCkBAIC03MDgsNyArNzA5LDcg QEAgc3RhdGljIGludCBfX2Jpb19hZGRfcGFnZShzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3Ry dWN0IGJpbyAqYmlvLCBzdHJ1Y3QgcGFnZQogCWJpby0+YmlfdmNudCsrOwogCWJpby0+YmlfcGh5 c19zZWdtZW50cysrOwogIGRvbmU6Ci0JYmlvLT5iaV9zaXplICs9IGxlbjsKKwliaW8tPmJpX2l0 ZXIuYmlfc2l6ZSArPSBsZW47CiAJcmV0dXJuIGxlbjsKIH0KIApAQCAtODA3LDIyICs4MDgsMjIg QEAgdm9pZCBiaW9fYWR2YW5jZShzdHJ1Y3QgYmlvICpiaW8sIHVuc2lnbmVkIGJ5dGVzKQogCWlm IChiaW9faW50ZWdyaXR5KGJpbykpCiAJCWJpb19pbnRlZ3JpdHlfYWR2YW5jZShiaW8sIGJ5dGVz KTsKIAotCWJpby0+Ymlfc2VjdG9yICs9IGJ5dGVzID4+IDk7Ci0JYmlvLT5iaV9zaXplIC09IGJ5 dGVzOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgKz0gYnl0ZXMgPj4gOTsKKwliaW8tPmJpX2l0 ZXIuYmlfc2l6ZSAtPSBieXRlczsKIAogCWlmIChiaW8tPmJpX3J3ICYgQklPX05PX0FEVkFOQ0Vf SVRFUl9NQVNLKQogCQlyZXR1cm47CiAKIAl3aGlsZSAoYnl0ZXMpIHsKLQkJaWYgKHVubGlrZWx5 KGJpby0+YmlfaWR4ID49IGJpby0+YmlfdmNudCkpIHsKKwkJaWYgKHVubGlrZWx5KGJpby0+Ymlf aXRlci5iaV9pZHggPj0gYmlvLT5iaV92Y250KSkgewogCQkJV0FSTl9PTkNFKDEsICJiaW8gaWR4 ICVkID49IHZjbnQgJWRcbiIsCi0JCQkJICBiaW8tPmJpX2lkeCwgYmlvLT5iaV92Y250KTsKKwkJ CQkgIGJpby0+YmlfaXRlci5iaV9pZHgsIGJpby0+YmlfdmNudCk7CiAJCQlicmVhazsKIAkJfQog CiAJCWlmIChieXRlcyA+PSBiaW9faW92ZWMoYmlvKS0+YnZfbGVuKSB7CiAJCQlieXRlcyAtPSBi aW9faW92ZWMoYmlvKS0+YnZfbGVuOwotCQkJYmlvLT5iaV9pZHgrKzsKKwkJCWJpby0+YmlfaXRl ci5iaV9pZHgrKzsKIAkJfSBlbHNlIHsKIAkJCWJpb19pb3ZlYyhiaW8pLT5idl9sZW4gLT0gYnl0 ZXM7CiAJCQliaW9faW92ZWMoYmlvKS0+YnZfb2Zmc2V0ICs9IGJ5dGVzOwpAQCAtMTQ4NSw3ICsx NDg2LDcgQEAgc3RydWN0IGJpbyAqYmlvX21hcF9rZXJuKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuLAogCWlmIChJU19FUlIoYmlvKSkKIAkJcmV0 dXJuIGJpbzsKIAotCWlmIChiaW8tPmJpX3NpemUgPT0gbGVuKQorCWlmIChiaW8tPmJpX2l0ZXIu Ymlfc2l6ZSA9PSBsZW4pCiAJCXJldHVybiBiaW87CiAKIAkvKgpAQCAtMTc2MywxNiArMTc2NCwx NiBAQCBzdHJ1Y3QgYmlvX3BhaXIgKmJpb19zcGxpdChzdHJ1Y3QgYmlvICpiaSwgaW50IGZpcnN0 X3NlY3RvcnMpCiAJCXJldHVybiBicDsKIAogCXRyYWNlX2Jsb2NrX3NwbGl0KGJkZXZfZ2V0X3F1 ZXVlKGJpLT5iaV9iZGV2KSwgYmksCi0JCQkJYmktPmJpX3NlY3RvciArIGZpcnN0X3NlY3RvcnMp OworCQkJCWJpLT5iaV9pdGVyLmJpX3NlY3RvciArIGZpcnN0X3NlY3RvcnMpOwogCiAJQlVHX09O KGJpb19zZWdtZW50cyhiaSkgPiAxKTsKIAlhdG9taWNfc2V0KCZicC0+Y250LCAzKTsKIAlicC0+ ZXJyb3IgPSAwOwogCWJwLT5iaW8xID0gKmJpOwogCWJwLT5iaW8yID0gKmJpOwotCWJwLT5iaW8y LmJpX3NlY3RvciArPSBmaXJzdF9zZWN0b3JzOwotCWJwLT5iaW8yLmJpX3NpemUgLT0gZmlyc3Rf c2VjdG9ycyA8PCA5OwotCWJwLT5iaW8xLmJpX3NpemUgPSBmaXJzdF9zZWN0b3JzIDw8IDk7CisJ YnAtPmJpbzIuYmlfaXRlci5iaV9zZWN0b3IgKz0gZmlyc3Rfc2VjdG9yczsKKwlicC0+YmlvMi5i aV9pdGVyLmJpX3NpemUgLT0gZmlyc3Rfc2VjdG9ycyA8PCA5OworCWJwLT5iaW8xLmJpX2l0ZXIu Ymlfc2l6ZSA9IGZpcnN0X3NlY3RvcnMgPDwgOTsKIAogCWlmIChiaS0+YmlfdmNudCAhPSAwKSB7 CiAJCWJwLT5idjEgPSAqYmlvX2lvdmVjKGJpKTsKQEAgLTE4MjEsMjEgKzE4MjIsMjIgQEAgdm9p ZCBiaW9fdHJpbShzdHJ1Y3QgYmlvICpiaW8sIGludCBvZmZzZXQsIGludCBzaXplKQogCWludCBz b2ZhciA9IDA7CiAKIAlzaXplIDw8PSA5OwotCWlmIChvZmZzZXQgPT0gMCAmJiBzaXplID09IGJp by0+Ymlfc2l6ZSkKKwlpZiAob2Zmc2V0ID09IDAgJiYgc2l6ZSA9PSBiaW8tPmJpX2l0ZXIuYmlf c2l6ZSkKIAkJcmV0dXJuOwogCiAJY2xlYXJfYml0KEJJT19TRUdfVkFMSUQsICZiaW8tPmJpX2Zs YWdzKTsKIAogCWJpb19hZHZhbmNlKGJpbywgb2Zmc2V0IDw8IDkpOwogCi0JYmlvLT5iaV9zaXpl ID0gc2l6ZTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IHNpemU7CiAKIAkvKiBhdm9pZCBhbnkg Y29tcGxpY2F0aW9ucyB3aXRoIGJpX2lkeCBiZWluZyBub24temVybyovCi0JaWYgKGJpby0+Ymlf aWR4KSB7Ci0JCW1lbW1vdmUoYmlvLT5iaV9pb192ZWMsIGJpby0+YmlfaW9fdmVjK2Jpby0+Ymlf aWR4LAotCQkJKGJpby0+YmlfdmNudCAtIGJpby0+YmlfaWR4KSAqIHNpemVvZihzdHJ1Y3QgYmlv X3ZlYykpOwotCQliaW8tPmJpX3ZjbnQgLT0gYmlvLT5iaV9pZHg7Ci0JCWJpby0+YmlfaWR4ID0g MDsKKwlpZiAoYmlvLT5iaV9pdGVyLmJpX2lkeCkgeworCQltZW1tb3ZlKGJpby0+YmlfaW9fdmVj LCBiaW8tPmJpX2lvX3ZlYytiaW8tPmJpX2l0ZXIuYmlfaWR4LAorCQkJKGJpby0+YmlfdmNudCAt IGJpby0+YmlfaXRlci5iaV9pZHgpICoKKwkJCXNpemVvZihzdHJ1Y3QgYmlvX3ZlYykpOworCQli aW8tPmJpX3ZjbnQgLT0gYmlvLT5iaV9pdGVyLmJpX2lkeDsKKwkJYmlvLT5iaV9pdGVyLmJpX2lk eCA9IDA7CiAJfQogCS8qIE1ha2Ugc3VyZSB2Y250IGFuZCBsYXN0IGJ2IGFyZSBub3QgdG9vIGJp ZyAqLwogCWJpb19mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIGJpbywgaSkgewpAQCAtMTg3MSw3ICsx ODczLDcgQEAgc2VjdG9yX3QgYmlvX3NlY3Rvcl9vZmZzZXQoc3RydWN0IGJpbyAqYmlvLCB1bnNp Z25lZCBzaG9ydCBpbmRleCwKIAlzZWN0b3Jfc3ogPSBxdWV1ZV9sb2dpY2FsX2Jsb2NrX3NpemUo YmlvLT5iaV9iZGV2LT5iZF9kaXNrLT5xdWV1ZSk7CiAJc2VjdG9ycyA9IDA7CiAKLQlpZiAoaW5k ZXggPj0gYmlvLT5iaV9pZHgpCisJaWYgKGluZGV4ID49IGJpby0+YmlfaXRlci5iaV9pZHgpCiAJ CWluZGV4ID0gYmlvLT5iaV92Y250IC0gMTsKIAogCWJpb19mb3JfZWFjaF9zZWdtZW50X2FsbChi diwgYmlvLCBpKSB7CmRpZmYgLS1naXQgYS9mcy9idHJmcy9jaGVjay1pbnRlZ3JpdHkuYyBiL2Zz L2J0cmZzL2NoZWNrLWludGVncml0eS5jCmluZGV4IDEzMWQ4MjguLmNiMDVlMWMgMTAwNjQ0Ci0t LSBhL2ZzL2J0cmZzL2NoZWNrLWludGVncml0eS5jCisrKyBiL2ZzL2J0cmZzL2NoZWNrLWludGVn cml0eS5jCkBAIC0xNjk1LDcgKzE2OTUsNyBAQCBzdGF0aWMgaW50IGJ0cmZzaWNfcmVhZF9ibG9j ayhzdHJ1Y3QgYnRyZnNpY19zdGF0ZSAqc3RhdGUsCiAJCQlyZXR1cm4gLTE7CiAJCX0KIAkJYmlv LT5iaV9iZGV2ID0gYmxvY2tfY3R4LT5kZXYtPmJkZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0gZGV2 X2J5dGVuciA+PiA5OworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gZGV2X2J5dGVuciA+PiA5 OwogCiAJCWZvciAoaiA9IGk7IGogPCBudW1fcGFnZXM7IGorKykgewogCQkJcmV0ID0gYmlvX2Fk ZF9wYWdlKGJpbywgYmxvY2tfY3R4LT5wYWdldltqXSwKQEAgLTMwMTMsNyArMzAxMyw3IEBAIHN0 YXRpYyB2b2lkIF9fYnRyZnNpY19zdWJtaXRfYmlvKGludCBydywgc3RydWN0IGJpbyAqYmlvKQog CQlpbnQgYmlvX2lzX3BhdGNoZWQ7CiAJCWNoYXIgKiptYXBwZWRfZGF0YXY7CiAKLQkJZGV2X2J5 dGVuciA9IDUxMiAqIGJpby0+Ymlfc2VjdG9yOworCQlkZXZfYnl0ZW5yID0gNTEyICogYmlvLT5i aV9pdGVyLmJpX3NlY3RvcjsKIAkJYmlvX2lzX3BhdGNoZWQgPSAwOwogCQlpZiAoZGV2X3N0YXRl LT5zdGF0ZS0+cHJpbnRfbWFzayAmCiAJCSAgICBCVFJGU0lDX1BSSU5UX01BU0tfU1VCTUlUX0JJ T19CSCkKQEAgLTMwMjEsOCArMzAyMSw4IEBAIHN0YXRpYyB2b2lkIF9fYnRyZnNpY19zdWJtaXRf YmlvKGludCBydywgc3RydWN0IGJpbyAqYmlvKQogCQkJICAgICAgICJzdWJtaXRfYmlvKHJ3PTB4 JXgsIGJpX3ZjbnQ9JXUsIgogCQkJICAgICAgICIgYmlfc2VjdG9yPSVsbHUgKGJ5dGVuciAlbGx1 KSwgYmlfYmRldj0lcClcbiIsCiAJCQkgICAgICAgcncsIGJpby0+YmlfdmNudCwKLQkJCSAgICAg ICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlfc2VjdG9yLCBkZXZfYnl0ZW5yLAotCQkJICAg ICAgIGJpby0+YmlfYmRldik7CisJCQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yLAorCQkJICAgICAgIGRldl9ieXRlbnIsIGJpby0+YmlfYmRldik7CiAK IAkJbWFwcGVkX2RhdGF2ID0ga21hbGxvYyhzaXplb2YoKm1hcHBlZF9kYXRhdikgKiBiaW8tPmJp X3ZjbnQsCiAJCQkJICAgICAgIEdGUF9OT0ZTKTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2NvbXBy ZXNzaW9uLmMgYi9mcy9idHJmcy9jb21wcmVzc2lvbi5jCmluZGV4IGVhYzY3ODQuLmY1Y2RlYjQg MTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2NvbXByZXNzaW9uLmMKKysrIGIvZnMvYnRyZnMvY29tcHJl c3Npb24uYwpAQCAtMTcyLDcgKzE3Miw4IEBAIHN0YXRpYyB2b2lkIGVuZF9jb21wcmVzc2VkX2Jp b19yZWFkKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycikKIAkJZ290byBvdXQ7CiAKIAlpbm9kZSA9 IGNiLT5pbm9kZTsKLQlyZXQgPSBjaGVja19jb21wcmVzc2VkX2NzdW0oaW5vZGUsIGNiLCAodTY0 KWJpby0+Ymlfc2VjdG9yIDw8IDkpOworCXJldCA9IGNoZWNrX2NvbXByZXNzZWRfY3N1bShpbm9k ZSwgY2IsCisJCQkJICAgICh1NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PCA5KTsKIAlpZiAo cmV0KQogCQlnb3RvIGNzdW1fZmFpbGVkOwogCkBAIC0zNzAsNyArMzcxLDcgQEAgaW50IGJ0cmZz X3N1Ym1pdF9jb21wcmVzc2VkX3dyaXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBzdGFydCwK IAlmb3IgKHBnX2luZGV4ID0gMDsgcGdfaW5kZXggPCBjYi0+bnJfcGFnZXM7IHBnX2luZGV4Kysp IHsKIAkJcGFnZSA9IGNvbXByZXNzZWRfcGFnZXNbcGdfaW5kZXhdOwogCQlwYWdlLT5tYXBwaW5n ID0gaW5vZGUtPmlfbWFwcGluZzsKLQkJaWYgKGJpby0+Ymlfc2l6ZSkKKwkJaWYgKGJpby0+Ymlf aXRlci5iaV9zaXplKQogCQkJcmV0ID0gaW9fdHJlZS0+b3BzLT5tZXJnZV9iaW9faG9vayhXUklU RSwgcGFnZSwgMCwKIAkJCQkJCQkgICBQQUdFX0NBQ0hFX1NJWkUsCiAJCQkJCQkJICAgYmlvLCAw KTsKQEAgLTUwNCw3ICs1MDUsNyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGFkZF9yYV9iaW9fcGFn ZXMoc3RydWN0IGlub2RlICppbm9kZSwKIAogCQlpZiAoIWVtIHx8IGxhc3Rfb2Zmc2V0IDwgZW0t PnN0YXJ0IHx8CiAJCSAgICAobGFzdF9vZmZzZXQgKyBQQUdFX0NBQ0hFX1NJWkUgPiBleHRlbnRf bWFwX2VuZChlbSkpIHx8Ci0JCSAgICAoZW0tPmJsb2NrX3N0YXJ0ID4+IDkpICE9IGNiLT5vcmln X2Jpby0+Ymlfc2VjdG9yKSB7CisJCSAgICAoZW0tPmJsb2NrX3N0YXJ0ID4+IDkpICE9IGNiLT5v cmlnX2Jpby0+YmlfaXRlci5iaV9zZWN0b3IpIHsKIAkJCWZyZWVfZXh0ZW50X21hcChlbSk7CiAJ CQl1bmxvY2tfZXh0ZW50KHRyZWUsIGxhc3Rfb2Zmc2V0LCBlbmQpOwogCQkJdW5sb2NrX3BhZ2Uo cGFnZSk7CkBAIC01NTAsNyArNTUxLDcgQEAgbmV4dDoKICAqIGluIGl0LiAgV2UgZG9uJ3QgYWN0 dWFsbHkgZG8gSU8gb24gdGhvc2UgcGFnZXMgYnV0IGFsbG9jYXRlIG5ldyBvbmVzCiAgKiB0byBo b2xkIHRoZSBjb21wcmVzc2VkIHBhZ2VzIG9uIGRpc2suCiAgKgotICogYmlvLT5iaV9zZWN0b3Ig cG9pbnRzIHRvIHRoZSBjb21wcmVzc2VkIGV4dGVudCBvbiBkaXNrCisgKiBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yIHBvaW50cyB0byB0aGUgY29tcHJlc3NlZCBleHRlbnQgb24gZGlzawogICogYmlv LT5iaV9pb192ZWMgcG9pbnRzIHRvIGFsbCBvZiB0aGUgaW5vZGUgcGFnZXMKICAqIGJpby0+Ymlf dmNudCBpcyBhIGNvdW50IG9mIHBhZ2VzCiAgKgpAQCAtNTcxLDcgKzU3Miw3IEBAIGludCBidHJm c19zdWJtaXRfY29tcHJlc3NlZF9yZWFkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBiaW8g KmJpbywKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2Owog CXN0cnVjdCBiaW8gKmNvbXBfYmlvOwotCXU2NCBjdXJfZGlza19ieXRlID0gKHU2NCliaW8tPmJp X3NlY3RvciA8PCA5OworCXU2NCBjdXJfZGlza19ieXRlID0gKHU2NCliaW8tPmJpX2l0ZXIuYmlf c2VjdG9yIDw8IDk7CiAJdTY0IGVtX2xlbjsKIAl1NjQgZW1fc3RhcnQ7CiAJc3RydWN0IGV4dGVu dF9tYXAgKmVtOwpAQCAtNjU3LDcgKzY1OCw3IEBAIGludCBidHJmc19zdWJtaXRfY29tcHJlc3Nl ZF9yZWFkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBiaW8gKmJpbywKIAkJcGFnZS0+bWFw cGluZyA9IGlub2RlLT5pX21hcHBpbmc7CiAJCXBhZ2UtPmluZGV4ID0gZW1fc3RhcnQgPj4gUEFH RV9DQUNIRV9TSElGVDsKIAotCQlpZiAoY29tcF9iaW8tPmJpX3NpemUpCisJCWlmIChjb21wX2Jp by0+YmlfaXRlci5iaV9zaXplKQogCQkJcmV0ID0gdHJlZS0+b3BzLT5tZXJnZV9iaW9faG9vayhS RUFELCBwYWdlLCAwLAogCQkJCQkJCVBBR0VfQ0FDSEVfU0laRSwKIAkJCQkJCQljb21wX2Jpbywg MCk7CkBAIC02ODUsOCArNjg2LDggQEAgaW50IGJ0cmZzX3N1Ym1pdF9jb21wcmVzc2VkX3JlYWQo c3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGJpbyAqYmlvLAogCQkJCQkJCWNvbXBfYmlvLCBz dW1zKTsKIAkJCQlCVUdfT04ocmV0KTsgLyogLUVOT01FTSAqLwogCQkJfQotCQkJc3VtcyArPSAo Y29tcF9iaW8tPmJpX3NpemUgKyByb290LT5zZWN0b3JzaXplIC0gMSkgLwotCQkJCXJvb3QtPnNl Y3RvcnNpemU7CisJCQlzdW1zICs9IChjb21wX2Jpby0+YmlfaXRlci5iaV9zaXplICsKKwkJCQkg cm9vdC0+c2VjdG9yc2l6ZSAtIDEpIC8gcm9vdC0+c2VjdG9yc2l6ZTsKIAogCQkJcmV0ID0gYnRy ZnNfbWFwX2Jpbyhyb290LCBSRUFELCBjb21wX2JpbywKIAkJCQkJICAgIG1pcnJvcl9udW0sIDAp OwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZXh0ZW50X2lvLmMgYi9mcy9idHJmcy9leHRlbnRfaW8u YwppbmRleCA4YjVmOWUxLi5iY2I2ZjFiIDEwMDY0NAotLS0gYS9mcy9idHJmcy9leHRlbnRfaW8u YworKysgYi9mcy9idHJmcy9leHRlbnRfaW8uYwpAQCAtMTk4NCw3ICsxOTg0LDcgQEAgaW50IHJl cGFpcl9pb19mYWlsdXJlKHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCB1NjQgc3RhcnQs CiAJYmlvID0gYnRyZnNfaW9fYmlvX2FsbG9jKEdGUF9OT0ZTLCAxKTsKIAlpZiAoIWJpbykKIAkJ cmV0dXJuIC1FSU87Ci0JYmlvLT5iaV9zaXplID0gMDsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 IDA7CiAJbWFwX2xlbmd0aCA9IGxlbmd0aDsKIAogCXJldCA9IGJ0cmZzX21hcF9ibG9jayhmc19p bmZvLCBXUklURSwgbG9naWNhbCwKQEAgLTE5OTUsNyArMTk5NSw3IEBAIGludCByZXBhaXJfaW9f ZmFpbHVyZShzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywgdTY0IHN0YXJ0LAogCX0KIAlC VUdfT04obWlycm9yX251bSAhPSBiYmlvLT5taXJyb3JfbnVtKTsKIAlzZWN0b3IgPSBiYmlvLT5z dHJpcGVzW21pcnJvcl9udW0tMV0ucGh5c2ljYWwgPj4gOTsKLQliaW8tPmJpX3NlY3RvciA9IHNl Y3RvcjsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yOwogCWRldiA9IGJiaW8tPnN0 cmlwZXNbbWlycm9yX251bS0xXS5kZXY7CiAJa2ZyZWUoYmJpbyk7CiAJaWYgKCFkZXYgfHwgIWRl di0+YmRldiB8fCAhZGV2LT53cml0ZWFibGUpIHsKQEAgLTIyNjgsOSArMjI2OCw5IEBAIHN0YXRp YyBpbnQgYmlvX3JlYWRwYWdlX2Vycm9yKHN0cnVjdCBiaW8gKmZhaWxlZF9iaW8sIHU2NCBwaHlf b2Zmc2V0LAogCQlyZXR1cm4gLUVJTzsKIAl9CiAJYmlvLT5iaV9lbmRfaW8gPSBmYWlsZWRfYmlv LT5iaV9lbmRfaW87Ci0JYmlvLT5iaV9zZWN0b3IgPSBmYWlscmVjLT5sb2dpY2FsID4+IDk7CisJ YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGZhaWxyZWMtPmxvZ2ljYWwgPj4gOTsKIAliaW8tPmJp X2JkZXYgPSBCVFJGU19JKGlub2RlKS0+cm9vdC0+ZnNfaW5mby0+ZnNfZGV2aWNlcy0+bGF0ZXN0 X2JkZXY7Ci0JYmlvLT5iaV9zaXplID0gMDsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IDA7CiAK IAlidHJmc19mYWlsZWRfYmlvID0gYnRyZnNfaW9fYmlvKGZhaWxlZF9iaW8pOwogCWlmIChidHJm c19mYWlsZWRfYmlvLT5jc3VtKSB7CkBAIC0yNDEyLDcgKzI0MTIsNyBAQCBzdGF0aWMgdm9pZCBl bmRfYmlvX2V4dGVudF9yZWFkcGFnZShzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnIpCiAJCXN0cnVj dCBpbm9kZSAqaW5vZGUgPSBwYWdlLT5tYXBwaW5nLT5ob3N0OwogCiAJCXByX2RlYnVnKCJlbmRf YmlvX2V4dGVudF9yZWFkcGFnZTogYmlfc2VjdG9yPSVsbHUsIGVycj0lZCwgIgotCQkJICJtaXJy b3I9JWx1XG4iLCAodTY0KWJpby0+Ymlfc2VjdG9yLCBlcnIsCisJCQkgIm1pcnJvcj0lbHVcbiIs ICh1NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgZXJyLAogCQkJIGlvX2Jpby0+bWlycm9yX251 bSk7CiAJCXRyZWUgPSAmQlRSRlNfSShpbm9kZSktPmlvX3RyZWU7CiAKQEAgLTI1NDMsNyArMjU0 Myw3IEBAIGJ0cmZzX2Jpb19hbGxvYyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCB1NjQgZmly c3Rfc2VjdG9yLCBpbnQgbnJfdmVjcywKIAogCWlmIChiaW8pIHsKIAkJYmlvLT5iaV9iZGV2ID0g YmRldjsKLQkJYmlvLT5iaV9zZWN0b3IgPSBmaXJzdF9zZWN0b3I7CisJCWJpby0+YmlfaXRlci5i aV9zZWN0b3IgPSBmaXJzdF9zZWN0b3I7CiAJCWJ0cmZzX2JpbyA9IGJ0cmZzX2lvX2JpbyhiaW8p OwogCQlidHJmc19iaW8tPmNzdW0gPSBOVUxMOwogCQlidHJmc19iaW8tPmNzdW1fYWxsb2NhdGVk ID0gTlVMTDsKQEAgLTI2MzcsNyArMjYzNyw3IEBAIHN0YXRpYyBpbnQgc3VibWl0X2V4dGVudF9w YWdlKGludCBydywgc3RydWN0IGV4dGVudF9pb190cmVlICp0cmVlLAogCWlmIChiaW9fcmV0ICYm ICpiaW9fcmV0KSB7CiAJCWJpbyA9ICpiaW9fcmV0OwogCQlpZiAob2xkX2NvbXByZXNzZWQpCi0J CQljb250aWcgPSBiaW8tPmJpX3NlY3RvciA9PSBzZWN0b3I7CisJCQljb250aWcgPSBiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID09IHNlY3RvcjsKIAkJZWxzZQogCQkJY29udGlnID0gYmlvX2VuZF9z ZWN0b3IoYmlvKSA9PSBzZWN0b3I7CiAKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2ZpbGUtaXRlbS5j IGIvZnMvYnRyZnMvZmlsZS1pdGVtLmMKaW5kZXggNmYzODQ4OC4uODRhNDZhNCAxMDA2NDQKLS0t IGEvZnMvYnRyZnMvZmlsZS1pdGVtLmMKKysrIGIvZnMvYnRyZnMvZmlsZS1pdGVtLmMKQEAgLTE4 Miw3ICsxODIsNyBAQCBzdGF0aWMgaW50IF9fYnRyZnNfbG9va3VwX2Jpb19zdW1zKHN0cnVjdCBi dHJmc19yb290ICpyb290LAogCWlmICghcGF0aCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQluYmxv Y2tzID0gYmlvLT5iaV9zaXplID4+IGlub2RlLT5pX3NiLT5zX2Jsb2Nrc2l6ZV9iaXRzOworCW5i bG9ja3MgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA+PiBpbm9kZS0+aV9zYi0+c19ibG9ja3NpemVf Yml0czsKIAlpZiAoIWRzdCkgewogCQlpZiAobmJsb2NrcyAqIGNzdW1fc2l6ZSA+IEJUUkZTX0JJ T19JTkxJTkVfQ1NVTV9TSVpFKSB7CiAJCQlidHJmc19iaW8tPmNzdW1fYWxsb2NhdGVkID0ga21h bGxvYyhuYmxvY2tzICogY3N1bV9zaXplLApAQCAtMjAxLDcgKzIwMSw3IEBAIHN0YXRpYyBpbnQg X19idHJmc19sb29rdXBfYmlvX3N1bXMoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsCiAJCWNzdW0g PSAodTggKilkc3Q7CiAJfQogCi0JaWYgKGJpby0+Ymlfc2l6ZSA+IFBBR0VfQ0FDSEVfU0laRSAq IDgpCisJaWYgKGJpby0+YmlfaXRlci5iaV9zaXplID4gUEFHRV9DQUNIRV9TSVpFICogOCkKIAkJ cGF0aC0+cmVhZGEgPSAyOwogCiAJV0FSTl9PTihiaW8tPmJpX3ZjbnQgPD0gMCk7CkBAIC0yMTcs NyArMjE3LDcgQEAgc3RhdGljIGludCBfX2J0cmZzX2xvb2t1cF9iaW9fc3VtcyhzdHJ1Y3QgYnRy ZnNfcm9vdCAqcm9vdCwKIAkJcGF0aC0+c2tpcF9sb2NraW5nID0gMTsKIAl9CiAKLQlkaXNrX2J5 dGVuciA9ICh1NjQpYmlvLT5iaV9zZWN0b3IgPDwgOTsKKwlkaXNrX2J5dGVuciA9ICh1NjQpYmlv LT5iaV9pdGVyLmJpX3NlY3RvciA8PCA5OwogCWlmIChkaW8pCiAJCW9mZnNldCA9IGxvZ2ljYWxf b2Zmc2V0OwogCXdoaWxlIChiaW9faW5kZXggPCBiaW8tPmJpX3ZjbnQpIHsKQEAgLTMwMiw3ICsz MDIsNyBAQCBpbnQgYnRyZnNfbG9va3VwX2Jpb19zdW1zX2RpbyhzdHJ1Y3QgYnRyZnNfcm9vdCAq cm9vdCwgc3RydWN0IGlub2RlICppbm9kZSwKIAkJCSAgICAgIHN0cnVjdCBidHJmc19kaW9fcHJp dmF0ZSAqZGlwLCBzdHJ1Y3QgYmlvICpiaW8sCiAJCQkgICAgICB1NjQgb2Zmc2V0KQogewotCWlu dCBsZW4gPSAoYmlvLT5iaV9zZWN0b3IgPDwgOSkgLSBkaXAtPmRpc2tfYnl0ZW5yOworCWludCBs ZW4gPSAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PCA5KSAtIGRpcC0+ZGlza19ieXRlbnI7CiAJ dTE2IGNzdW1fc2l6ZSA9IGJ0cmZzX3N1cGVyX2NzdW1fc2l6ZShyb290LT5mc19pbmZvLT5zdXBl cl9jb3B5KTsKIAlpbnQgcmV0OwogCkBAIC00NDcsMTEgKzQ0NywxMiBAQCBpbnQgYnRyZnNfY3N1 bV9vbmVfYmlvKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAog CXU2NCBvZmZzZXQ7CiAKIAlXQVJOX09OKGJpby0+YmlfdmNudCA8PSAwKTsKLQlzdW1zID0ga3ph bGxvYyhidHJmc19vcmRlcmVkX3N1bV9zaXplKHJvb3QsIGJpby0+Ymlfc2l6ZSksIEdGUF9OT0ZT KTsKKwlzdW1zID0ga3phbGxvYyhidHJmc19vcmRlcmVkX3N1bV9zaXplKHJvb3QsIGJpby0+Ymlf aXRlci5iaV9zaXplKSwKKwkJICAgICAgIEdGUF9OT0ZTKTsKIAlpZiAoIXN1bXMpCiAJCXJldHVy biAtRU5PTUVNOwogCi0Jc3Vtcy0+bGVuID0gYmlvLT5iaV9zaXplOworCXN1bXMtPmxlbiA9IGJp by0+YmlfaXRlci5iaV9zaXplOwogCUlOSVRfTElTVF9IRUFEKCZzdW1zLT5saXN0KTsKIAogCWlm IChjb250aWcpCkBAIC00NjEsNyArNDYyLDcgQEAgaW50IGJ0cmZzX2NzdW1fb25lX2JpbyhzdHJ1 Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGlub2RlICppbm9kZSwKIAogCW9yZGVyZWQgPSBi dHJmc19sb29rdXBfb3JkZXJlZF9leHRlbnQoaW5vZGUsIG9mZnNldCk7CiAJQlVHX09OKCFvcmRl cmVkKTsgLyogTG9naWMgZXJyb3IgKi8KLQlzdW1zLT5ieXRlbnIgPSAodTY0KWJpby0+Ymlfc2Vj dG9yIDw8IDk7CisJc3Vtcy0+Ynl0ZW5yID0gKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8 IDk7CiAJaW5kZXggPSAwOwogCiAJd2hpbGUgKGJpb19pbmRleCA8IGJpby0+YmlfdmNudCkgewpA QCAtNDc2LDcgKzQ3Nyw3IEBAIGludCBidHJmc19jc3VtX29uZV9iaW8oc3RydWN0IGJ0cmZzX3Jv b3QgKnJvb3QsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJCQlidHJmc19hZGRfb3JkZXJlZF9zdW0o aW5vZGUsIG9yZGVyZWQsIHN1bXMpOwogCQkJYnRyZnNfcHV0X29yZGVyZWRfZXh0ZW50KG9yZGVy ZWQpOwogCi0JCQlieXRlc19sZWZ0ID0gYmlvLT5iaV9zaXplIC0gdG90YWxfYnl0ZXM7CisJCQli eXRlc19sZWZ0ID0gYmlvLT5iaV9pdGVyLmJpX3NpemUgLSB0b3RhbF9ieXRlczsKIAogCQkJc3Vt cyA9IGt6YWxsb2MoYnRyZnNfb3JkZXJlZF9zdW1fc2l6ZShyb290LCBieXRlc19sZWZ0KSwKIAkJ CQkgICAgICAgR0ZQX05PRlMpOwpAQCAtNDg0LDcgKzQ4NSw3IEBAIGludCBidHJmc19jc3VtX29u ZV9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJCQlz dW1zLT5sZW4gPSBieXRlc19sZWZ0OwogCQkJb3JkZXJlZCA9IGJ0cmZzX2xvb2t1cF9vcmRlcmVk X2V4dGVudChpbm9kZSwgb2Zmc2V0KTsKIAkJCUJVR19PTighb3JkZXJlZCk7IC8qIExvZ2ljIGVy cm9yICovCi0JCQlzdW1zLT5ieXRlbnIgPSAoKHU2NCliaW8tPmJpX3NlY3RvciA8PCA5KSArCisJ CQlzdW1zLT5ieXRlbnIgPSAoKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDkpICsKIAkJ CQkgICAgICAgdG90YWxfYnl0ZXM7CiAJCQlpbmRleCA9IDA7CiAJCX0KZGlmZiAtLWdpdCBhL2Zz L2J0cmZzL2lub2RlLmMgYi9mcy9idHJmcy9pbm9kZS5jCmluZGV4IGQ2NjMwZGMuLjdhYjBlOTQg MTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lub2RlLmMKKysrIGIvZnMvYnRyZnMvaW5vZGUuYwpAQCAt MTU3Nyw3ICsxNTc3LDcgQEAgaW50IGJ0cmZzX21lcmdlX2Jpb19ob29rKGludCBydywgc3RydWN0 IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LAogCQkJIHVuc2lnbmVkIGxvbmcgYmlv X2ZsYWdzKQogewogCXN0cnVjdCBidHJmc19yb290ICpyb290ID0gQlRSRlNfSShwYWdlLT5tYXBw aW5nLT5ob3N0KS0+cm9vdDsKLQl1NjQgbG9naWNhbCA9ICh1NjQpYmlvLT5iaV9zZWN0b3IgPDwg OTsKKwl1NjQgbG9naWNhbCA9ICh1NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PCA5OwogCXU2 NCBsZW5ndGggPSAwOwogCXU2NCBtYXBfbGVuZ3RoOwogCWludCByZXQ7CkBAIC0xNTg1LDcgKzE1 ODUsNyBAQCBpbnQgYnRyZnNfbWVyZ2VfYmlvX2hvb2soaW50IHJ3LCBzdHJ1Y3QgcGFnZSAqcGFn ZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsCiAJaWYgKGJpb19mbGFncyAmIEVYVEVOVF9CSU9fQ09N UFJFU1NFRCkKIAkJcmV0dXJuIDA7CiAKLQlsZW5ndGggPSBiaW8tPmJpX3NpemU7CisJbGVuZ3Ro ID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAJbWFwX2xlbmd0aCA9IGxlbmd0aDsKIAlyZXQgPSBi dHJmc19tYXBfYmxvY2socm9vdC0+ZnNfaW5mbywgcncsIGxvZ2ljYWwsCiAJCQkgICAgICAmbWFw X2xlbmd0aCwgTlVMTCwgMCk7CkBAIC02ODk0LDcgKzY4OTQsOCBAQCBzdGF0aWMgdm9pZCBidHJm c19lbmRfZGlvX2JpbyhzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnIpCiAJCXByaW50ayhLRVJOX0VS UiAiYnRyZnMgZGlyZWN0IElPIGZhaWxlZCBpbm8gJWxsdSBydyAlbHUgIgogCQkgICAgICAic2Vj dG9yICUjTHggbGVuICV1IGVyciBubyAlZFxuIiwKIAkJICAgICAgYnRyZnNfaW5vKGRpcC0+aW5v ZGUpLCBiaW8tPmJpX3J3LAotCQkgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlfc2Vj dG9yLCBiaW8tPmJpX3NpemUsIGVycik7CisJCSAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpYmlv LT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJICAgICAgYmlvLT5iaV9pdGVyLmJpX3NpemUsIGVycik7 CiAJCWRpcC0+ZXJyb3JzID0gMTsKIAogCQkvKgpAQCAtNjk4NSw3ICs2OTg2LDcgQEAgc3RhdGlj IGludCBidHJmc19zdWJtaXRfZGlyZWN0X2hvb2soaW50IHJ3LCBzdHJ1Y3QgYnRyZnNfZGlvX3By aXZhdGUgKmRpcCwKIAlzdHJ1Y3QgYmlvICpiaW87CiAJc3RydWN0IGJpbyAqb3JpZ19iaW8gPSBk aXAtPm9yaWdfYmlvOwogCXN0cnVjdCBiaW9fdmVjICpidmVjID0gb3JpZ19iaW8tPmJpX2lvX3Zl YzsKLQl1NjQgc3RhcnRfc2VjdG9yID0gb3JpZ19iaW8tPmJpX3NlY3RvcjsKKwl1NjQgc3RhcnRf c2VjdG9yID0gb3JpZ19iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCXU2NCBmaWxlX29mZnNldCA9 IGRpcC0+bG9naWNhbF9vZmZzZXQ7CiAJdTY0IHN1Ym1pdF9sZW4gPSAwOwogCXU2NCBtYXBfbGVu Z3RoOwpAQCAtNjk5Myw3ICs2OTk0LDcgQEAgc3RhdGljIGludCBidHJmc19zdWJtaXRfZGlyZWN0 X2hvb2soaW50IHJ3LCBzdHJ1Y3QgYnRyZnNfZGlvX3ByaXZhdGUgKmRpcCwKIAlpbnQgcmV0ID0g MDsKIAlpbnQgYXN5bmNfc3VibWl0ID0gMDsKIAotCW1hcF9sZW5ndGggPSBvcmlnX2Jpby0+Ymlf c2l6ZTsKKwltYXBfbGVuZ3RoID0gb3JpZ19iaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAlyZXQgPSBi dHJmc19tYXBfYmxvY2socm9vdC0+ZnNfaW5mbywgcncsIHN0YXJ0X3NlY3RvciA8PCA5LAogCQkJ ICAgICAgJm1hcF9sZW5ndGgsIE5VTEwsIDApOwogCWlmIChyZXQpIHsKQEAgLTcwMDEsNyArNzAw Miw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfc3VibWl0X2RpcmVjdF9ob29rKGludCBydywgc3RydWN0 IGJ0cmZzX2Rpb19wcml2YXRlICpkaXAsCiAJCXJldHVybiAtRUlPOwogCX0KIAotCWlmIChtYXBf bGVuZ3RoID49IG9yaWdfYmlvLT5iaV9zaXplKSB7CisJaWYgKG1hcF9sZW5ndGggPj0gb3JpZ19i aW8tPmJpX2l0ZXIuYmlfc2l6ZSkgewogCQliaW8gPSBvcmlnX2JpbzsKIAkJZ290byBzdWJtaXQ7 CiAJfQpAQCAtNzA1Myw3ICs3MDU0LDcgQEAgc3RhdGljIGludCBidHJmc19zdWJtaXRfZGlyZWN0 X2hvb2soaW50IHJ3LCBzdHJ1Y3QgYnRyZnNfZGlvX3ByaXZhdGUgKmRpcCwKIAkJCWJpby0+Ymlf cHJpdmF0ZSA9IGRpcDsKIAkJCWJpby0+YmlfZW5kX2lvID0gYnRyZnNfZW5kX2Rpb19iaW87CiAK LQkJCW1hcF9sZW5ndGggPSBvcmlnX2Jpby0+Ymlfc2l6ZTsKKwkJCW1hcF9sZW5ndGggPSBvcmln X2Jpby0+YmlfaXRlci5iaV9zaXplOwogCQkJcmV0ID0gYnRyZnNfbWFwX2Jsb2NrKHJvb3QtPmZz X2luZm8sIHJ3LAogCQkJCQkgICAgICBzdGFydF9zZWN0b3IgPDwgOSwKIAkJCQkJICAgICAgJm1h cF9sZW5ndGgsIE5VTEwsIDApOwpAQCAtNzExMSw3ICs3MTEyLDggQEAgc3RhdGljIHZvaWQgYnRy ZnNfc3VibWl0X2RpcmVjdChpbnQgcncsIHN0cnVjdCBiaW8gKmRpb19iaW8sCiAKIAlpZiAoIXNr aXBfc3VtICYmICF3cml0ZSkgewogCQljc3VtX3NpemUgPSBidHJmc19zdXBlcl9jc3VtX3NpemUo cm9vdC0+ZnNfaW5mby0+c3VwZXJfY29weSk7Ci0JCXN1bV9sZW4gPSBkaW9fYmlvLT5iaV9zaXpl ID4+IGlub2RlLT5pX3NiLT5zX2Jsb2Nrc2l6ZV9iaXRzOworCQlzdW1fbGVuID0gZGlvX2Jpby0+ YmlfaXRlci5iaV9zaXplID4+CisJCQlpbm9kZS0+aV9zYi0+c19ibG9ja3NpemVfYml0czsKIAkJ c3VtX2xlbiAqPSBjc3VtX3NpemU7CiAJfSBlbHNlIHsKIAkJc3VtX2xlbiA9IDA7CkBAIC03MTI2 LDggKzcxMjgsOCBAQCBzdGF0aWMgdm9pZCBidHJmc19zdWJtaXRfZGlyZWN0KGludCBydywgc3Ry dWN0IGJpbyAqZGlvX2JpbywKIAlkaXAtPnByaXZhdGUgPSBkaW9fYmlvLT5iaV9wcml2YXRlOwog CWRpcC0+aW5vZGUgPSBpbm9kZTsKIAlkaXAtPmxvZ2ljYWxfb2Zmc2V0ID0gZmlsZV9vZmZzZXQ7 Ci0JZGlwLT5ieXRlcyA9IGRpb19iaW8tPmJpX3NpemU7Ci0JZGlwLT5kaXNrX2J5dGVuciA9ICh1 NjQpZGlvX2Jpby0+Ymlfc2VjdG9yIDw8IDk7CisJZGlwLT5ieXRlcyA9IGRpb19iaW8tPmJpX2l0 ZXIuYmlfc2l6ZTsKKwlkaXAtPmRpc2tfYnl0ZW5yID0gKHU2NClkaW9fYmlvLT5iaV9pdGVyLmJp X3NlY3RvciA8PCA5OwogCWlvX2Jpby0+YmlfcHJpdmF0ZSA9IGRpcDsKIAlkaXAtPmVycm9ycyA9 IDA7CiAJZGlwLT5vcmlnX2JpbyA9IGlvX2JpbzsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3JhaWQ1 Ni5jIGIvZnMvYnRyZnMvcmFpZDU2LmMKaW5kZXggMjRhYzIxOC4uOWFmMGIyNSAxMDA2NDQKLS0t IGEvZnMvYnRyZnMvcmFpZDU2LmMKKysrIGIvZnMvYnRyZnMvcmFpZDU2LmMKQEAgLTEwMzIsOCAr MTAzMiw4IEBAIHN0YXRpYyBpbnQgcmJpb19hZGRfaW9fcGFnZShzdHJ1Y3QgYnRyZnNfcmFpZF9i aW8gKnJiaW8sCiAKIAkvKiBzZWUgaWYgd2UgY2FuIGFkZCB0aGlzIHBhZ2Ugb250byBvdXIgZXhp c3RpbmcgYmlvICovCiAJaWYgKGxhc3QpIHsKLQkJbGFzdF9lbmQgPSAodTY0KWxhc3QtPmJpX3Nl Y3RvciA8PCA5OwotCQlsYXN0X2VuZCArPSBsYXN0LT5iaV9zaXplOworCQlsYXN0X2VuZCA9ICh1 NjQpbGFzdC0+YmlfaXRlci5iaV9zZWN0b3IgPDwgOTsKKwkJbGFzdF9lbmQgKz0gbGFzdC0+Ymlf aXRlci5iaV9zaXplOwogCiAJCS8qCiAJCSAqIHdlIGNhbid0IG1lcmdlIHRoZXNlIGlmIHRoZXkg YXJlIGZyb20gZGlmZmVyZW50CkBAIC0xMDUzLDkgKzEwNTMsOSBAQCBzdGF0aWMgaW50IHJiaW9f YWRkX2lvX3BhZ2Uoc3RydWN0IGJ0cmZzX3JhaWRfYmlvICpyYmlvLAogCWlmICghYmlvKQogCQly ZXR1cm4gLUVOT01FTTsKIAotCWJpby0+Ymlfc2l6ZSA9IDA7CisJYmlvLT5iaV9pdGVyLmJpX3Np emUgPSAwOwogCWJpby0+YmlfYmRldiA9IHN0cmlwZS0+ZGV2LT5iZGV2OwotCWJpby0+Ymlfc2Vj dG9yID0gZGlza19zdGFydCA+PiA5OworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBkaXNrX3N0 YXJ0ID4+IDk7CiAJc2V0X2JpdChCSU9fVVBUT0RBVEUsICZiaW8tPmJpX2ZsYWdzKTsKIAogCWJp b19hZGRfcGFnZShiaW8sIHBhZ2UsIFBBR0VfQ0FDSEVfU0laRSwgMCk7CkBAIC0xMTExLDcgKzEx MTEsNyBAQCBzdGF0aWMgdm9pZCBpbmRleF9yYmlvX3BhZ2VzKHN0cnVjdCBidHJmc19yYWlkX2Jp byAqcmJpbykKIAogCXNwaW5fbG9ja19pcnEoJnJiaW8tPmJpb19saXN0X2xvY2spOwogCWJpb19s aXN0X2Zvcl9lYWNoKGJpbywgJnJiaW8tPmJpb19saXN0KSB7Ci0JCXN0YXJ0ID0gKHU2NCliaW8t PmJpX3NlY3RvciA8PCA5OworCQlzdGFydCA9ICh1NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8 PCA5OwogCQlzdHJpcGVfb2Zmc2V0ID0gc3RhcnQgLSByYmlvLT5yYWlkX21hcFswXTsKIAkJcGFn ZV9pbmRleCA9IHN0cmlwZV9vZmZzZXQgPj4gUEFHRV9DQUNIRV9TSElGVDsKIApAQCAtMTI3Miw3 ICsxMjcyLDcgQEAgY2xlYW51cDoKIHN0YXRpYyBpbnQgZmluZF9iaW9fc3RyaXBlKHN0cnVjdCBi dHJmc19yYWlkX2JpbyAqcmJpbywKIAkJCSAgIHN0cnVjdCBiaW8gKmJpbykKIHsKLQl1NjQgcGh5 c2ljYWwgPSBiaW8tPmJpX3NlY3RvcjsKKwl1NjQgcGh5c2ljYWwgPSBiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yOwogCXU2NCBzdHJpcGVfc3RhcnQ7CiAJaW50IGk7CiAJc3RydWN0IGJ0cmZzX2Jpb19z dHJpcGUgKnN0cmlwZTsKQEAgLTEyOTgsNyArMTI5OCw3IEBAIHN0YXRpYyBpbnQgZmluZF9iaW9f c3RyaXBlKHN0cnVjdCBidHJmc19yYWlkX2JpbyAqcmJpbywKIHN0YXRpYyBpbnQgZmluZF9sb2dp Y2FsX2Jpb19zdHJpcGUoc3RydWN0IGJ0cmZzX3JhaWRfYmlvICpyYmlvLAogCQkJCSAgIHN0cnVj dCBiaW8gKmJpbykKIHsKLQl1NjQgbG9naWNhbCA9IGJpby0+Ymlfc2VjdG9yOworCXU2NCBsb2dp Y2FsID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAl1NjQgc3RyaXBlX3N0YXJ0OwogCWludCBp OwogCkBAIC0xNjAyLDggKzE2MDIsOCBAQCBzdGF0aWMgaW50IHBsdWdfY21wKHZvaWQgKnByaXYs IHN0cnVjdCBsaXN0X2hlYWQgKmEsIHN0cnVjdCBsaXN0X2hlYWQgKmIpCiAJCQkJCQkgcGx1Z19s aXN0KTsKIAlzdHJ1Y3QgYnRyZnNfcmFpZF9iaW8gKnJiID0gY29udGFpbmVyX29mKGIsIHN0cnVj dCBidHJmc19yYWlkX2JpbywKIAkJCQkJCSBwbHVnX2xpc3QpOwotCXU2NCBhX3NlY3RvciA9IHJh LT5iaW9fbGlzdC5oZWFkLT5iaV9zZWN0b3I7Ci0JdTY0IGJfc2VjdG9yID0gcmItPmJpb19saXN0 LmhlYWQtPmJpX3NlY3RvcjsKKwl1NjQgYV9zZWN0b3IgPSByYS0+YmlvX2xpc3QuaGVhZC0+Ymlf aXRlci5iaV9zZWN0b3I7CisJdTY0IGJfc2VjdG9yID0gcmItPmJpb19saXN0LmhlYWQtPmJpX2l0 ZXIuYmlfc2VjdG9yOwogCiAJaWYgKGFfc2VjdG9yIDwgYl9zZWN0b3IpCiAJCXJldHVybiAtMTsK QEAgLTE2OTEsNyArMTY5MSw3IEBAIGludCByYWlkNTZfcGFyaXR5X3dyaXRlKHN0cnVjdCBidHJm c19yb290ICpyb290LCBzdHJ1Y3QgYmlvICpiaW8sCiAJaWYgKElTX0VSUihyYmlvKSkKIAkJcmV0 dXJuIFBUUl9FUlIocmJpbyk7CiAJYmlvX2xpc3RfYWRkKCZyYmlvLT5iaW9fbGlzdCwgYmlvKTsK LQlyYmlvLT5iaW9fbGlzdF9ieXRlcyA9IGJpby0+Ymlfc2l6ZTsKKwlyYmlvLT5iaW9fbGlzdF9i eXRlcyA9IGJpby0+YmlfaXRlci5iaV9zaXplOwogCiAJLyoKIAkgKiBkb24ndCBwbHVnIG9uIGZ1 bGwgcmJpb3MsIGp1c3QgZ2V0IHRoZW0gb3V0IHRoZSBkb29yCkBAIC0yMDQ0LDcgKzIwNDQsNyBA QCBpbnQgcmFpZDU2X3Bhcml0eV9yZWNvdmVyKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1 Y3QgYmlvICpiaW8sCiAKIAlyYmlvLT5yZWFkX3JlYnVpbGQgPSAxOwogCWJpb19saXN0X2FkZCgm cmJpby0+YmlvX2xpc3QsIGJpbyk7Ci0JcmJpby0+YmlvX2xpc3RfYnl0ZXMgPSBiaW8tPmJpX3Np emU7CisJcmJpby0+YmlvX2xpc3RfYnl0ZXMgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAogCXJi aW8tPmZhaWxhID0gZmluZF9sb2dpY2FsX2Jpb19zdHJpcGUocmJpbywgYmlvKTsKIAlpZiAocmJp by0+ZmFpbGEgPT0gLTEpIHsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3NjcnViLmMgYi9mcy9idHJm cy9zY3J1Yi5jCmluZGV4IDFmZDNmMzMuLmJiOWE5MjggMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3Nj cnViLmMKKysrIGIvZnMvYnRyZnMvc2NydWIuYwpAQCAtMTMwOCw3ICsxMzA4LDcgQEAgc3RhdGlj IHZvaWQgc2NydWJfcmVjaGVja19ibG9jayhzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywK IAkJCWNvbnRpbnVlOwogCQl9CiAJCWJpby0+YmlfYmRldiA9IHBhZ2UtPmRldi0+YmRldjsKLQkJ YmlvLT5iaV9zZWN0b3IgPSBwYWdlLT5waHlzaWNhbCA+PiA5OworCQliaW8tPmJpX2l0ZXIuYmlf c2VjdG9yID0gcGFnZS0+cGh5c2ljYWwgPj4gOTsKIAogCQliaW9fYWRkX3BhZ2UoYmlvLCBwYWdl LT5wYWdlLCBQQUdFX1NJWkUsIDApOwogCQlpZiAoYnRyZnNpY19zdWJtaXRfYmlvX3dhaXQoUkVB RCwgYmlvKSkKQEAgLTE0MjcsNyArMTQyNyw3IEBAIHN0YXRpYyBpbnQgc2NydWJfcmVwYWlyX3Bh Z2VfZnJvbV9nb29kX2NvcHkoc3RydWN0IHNjcnViX2Jsb2NrICpzYmxvY2tfYmFkLAogCQlpZiAo IWJpbykKIAkJCXJldHVybiAtRUlPOwogCQliaW8tPmJpX2JkZXYgPSBwYWdlX2JhZC0+ZGV2LT5i ZGV2OwotCQliaW8tPmJpX3NlY3RvciA9IHBhZ2VfYmFkLT5waHlzaWNhbCA+PiA5OworCQliaW8t PmJpX2l0ZXIuYmlfc2VjdG9yID0gcGFnZV9iYWQtPnBoeXNpY2FsID4+IDk7CiAKIAkJcmV0ID0g YmlvX2FkZF9wYWdlKGJpbywgcGFnZV9nb29kLT5wYWdlLCBQQUdFX1NJWkUsIDApOwogCQlpZiAo UEFHRV9TSVpFICE9IHJldCkgewpAQCAtMTUyMCw3ICsxNTIwLDcgQEAgYWdhaW46CiAJCWJpby0+ YmlfcHJpdmF0ZSA9IHNiaW87CiAJCWJpby0+YmlfZW5kX2lvID0gc2NydWJfd3JfYmlvX2VuZF9p bzsKIAkJYmlvLT5iaV9iZGV2ID0gc2Jpby0+ZGV2LT5iZGV2OwotCQliaW8tPmJpX3NlY3RvciA9 IHNiaW8tPnBoeXNpY2FsID4+IDk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzYmlvLT5w aHlzaWNhbCA+PiA5OwogCQlzYmlvLT5lcnIgPSAwOwogCX0gZWxzZSBpZiAoc2Jpby0+cGh5c2lj YWwgKyBzYmlvLT5wYWdlX2NvdW50ICogUEFHRV9TSVpFICE9CiAJCSAgIHNwYWdlLT5waHlzaWNh bF9mb3JfZGV2X3JlcGxhY2UgfHwKQEAgLTE5MjYsNyArMTkyNiw3IEBAIGFnYWluOgogCQliaW8t PmJpX3ByaXZhdGUgPSBzYmlvOwogCQliaW8tPmJpX2VuZF9pbyA9IHNjcnViX2Jpb19lbmRfaW87 CiAJCWJpby0+YmlfYmRldiA9IHNiaW8tPmRldi0+YmRldjsKLQkJYmlvLT5iaV9zZWN0b3IgPSBz YmlvLT5waHlzaWNhbCA+PiA5OworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2Jpby0+cGh5 c2ljYWwgPj4gOTsKIAkJc2Jpby0+ZXJyID0gMDsKIAl9IGVsc2UgaWYgKHNiaW8tPnBoeXNpY2Fs ICsgc2Jpby0+cGFnZV9jb3VudCAqIFBBR0VfU0laRSAhPQogCQkgICBzcGFnZS0+cGh5c2ljYWwg fHwKQEAgLTMzNzEsOCArMzM3MSw4IEBAIHN0YXRpYyBpbnQgd3JpdGVfcGFnZV9ub2NvdyhzdHJ1 Y3Qgc2NydWJfY3R4ICpzY3R4LAogCQlzcGluX3VubG9jaygmc2N0eC0+c3RhdF9sb2NrKTsKIAkJ cmV0dXJuIC1FTk9NRU07CiAJfQotCWJpby0+Ymlfc2l6ZSA9IDA7Ci0JYmlvLT5iaV9zZWN0b3Ig PSBwaHlzaWNhbF9mb3JfZGV2X3JlcGxhY2UgPj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 IDA7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBoeXNpY2FsX2Zvcl9kZXZfcmVwbGFjZSA+ PiA5OwogCWJpby0+YmlfYmRldiA9IGRldi0+YmRldjsKIAlyZXQgPSBiaW9fYWRkX3BhZ2UoYmlv LCBwYWdlLCBQQUdFX0NBQ0hFX1NJWkUsIDApOwogCWlmIChyZXQgIT0gUEFHRV9DQUNIRV9TSVpF KSB7CmRpZmYgLS1naXQgYS9mcy9idHJmcy92b2x1bWVzLmMgYi9mcy9idHJmcy92b2x1bWVzLmMK aW5kZXggOTIzMDNmNC4uZjIxMzBkZSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdm9sdW1lcy5jCisr KyBiL2ZzL2J0cmZzL3ZvbHVtZXMuYwpAQCAtNTQxMSw3ICs1NDExLDcgQEAgc3RhdGljIGludCBi aW9fc2l6ZV9vayhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgYmlvICpiaW8sCiAJ aWYgKCFxLT5tZXJnZV9idmVjX2ZuKQogCQlyZXR1cm4gMTsKIAotCWJ2bS5iaV9zaXplID0gYmlv LT5iaV9zaXplIC0gcHJldi0+YnZfbGVuOworCWJ2bS5iaV9zaXplID0gYmlvLT5iaV9pdGVyLmJp X3NpemUgLSBwcmV2LT5idl9sZW47CiAJaWYgKHEtPm1lcmdlX2J2ZWNfZm4ocSwgJmJ2bSwgcHJl dikgPCBwcmV2LT5idl9sZW4pCiAJCXJldHVybiAwOwogCXJldHVybiAxOwpAQCAtNTQyNiw3ICs1 NDI2LDcgQEAgc3RhdGljIHZvaWQgc3VibWl0X3N0cmlwZV9iaW8oc3RydWN0IGJ0cmZzX3Jvb3Qg KnJvb3QsIHN0cnVjdCBidHJmc19iaW8gKmJiaW8sCiAJYmlvLT5iaV9wcml2YXRlID0gYmJpbzsK IAlidHJmc19pb19iaW8oYmlvKS0+c3RyaXBlX2luZGV4ID0gZGV2X25yOwogCWJpby0+YmlfZW5k X2lvID0gYnRyZnNfZW5kX2JpbzsKLQliaW8tPmJpX3NlY3RvciA9IHBoeXNpY2FsID4+IDk7CisJ YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBoeXNpY2FsID4+IDk7CiAjaWZkZWYgREVCVUcKIAl7 CiAJCXN0cnVjdCByY3Vfc3RyaW5nICpuYW1lOwpAQCAtNTQ2NCw3ICs1NDY0LDcgQEAgYWdhaW46 CiAJd2hpbGUgKGJ2ZWMgPD0gKGZpcnN0X2Jpby0+YmlfaW9fdmVjICsgZmlyc3RfYmlvLT5iaV92 Y250IC0gMSkpIHsKIAkJaWYgKGJpb19hZGRfcGFnZShiaW8sIGJ2ZWMtPmJ2X3BhZ2UsIGJ2ZWMt PmJ2X2xlbiwKIAkJCQkgYnZlYy0+YnZfb2Zmc2V0KSA8IGJ2ZWMtPmJ2X2xlbikgewotCQkJdTY0 IGxlbiA9IGJpby0+Ymlfc2l6ZTsKKwkJCXU2NCBsZW4gPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsK IAogCQkJYXRvbWljX2luYygmYmJpby0+c3RyaXBlc19wZW5kaW5nKTsKIAkJCXN1Ym1pdF9zdHJp cGVfYmlvKHJvb3QsIGJiaW8sIGJpbywgcGh5c2ljYWwsIGRldl9uciwKQEAgLTU0ODYsNyArNTQ4 Niw3IEBAIHN0YXRpYyB2b2lkIGJiaW9fZXJyb3Ioc3RydWN0IGJ0cmZzX2JpbyAqYmJpbywgc3Ry dWN0IGJpbyAqYmlvLCB1NjQgbG9naWNhbCkKIAkJYmlvLT5iaV9wcml2YXRlID0gYmJpby0+cHJp dmF0ZTsKIAkJYmlvLT5iaV9lbmRfaW8gPSBiYmlvLT5lbmRfaW87CiAJCWJ0cmZzX2lvX2Jpbyhi aW8pLT5taXJyb3JfbnVtID0gYmJpby0+bWlycm9yX251bTsKLQkJYmlvLT5iaV9zZWN0b3IgPSBs b2dpY2FsID4+IDk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBsb2dpY2FsID4+IDk7CiAJ CWtmcmVlKGJiaW8pOwogCQliaW9fZW5kaW8oYmlvLCAtRUlPKTsKIAl9CkBAIC01NDk3LDcgKzU0 OTcsNyBAQCBpbnQgYnRyZnNfbWFwX2JpbyhzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgaW50IHJ3 LCBzdHJ1Y3QgYmlvICpiaW8sCiB7CiAJc3RydWN0IGJ0cmZzX2RldmljZSAqZGV2OwogCXN0cnVj dCBiaW8gKmZpcnN0X2JpbyA9IGJpbzsKLQl1NjQgbG9naWNhbCA9ICh1NjQpYmlvLT5iaV9zZWN0 b3IgPDwgOTsKKwl1NjQgbG9naWNhbCA9ICh1NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PCA5 OwogCXU2NCBsZW5ndGggPSAwOwogCXU2NCBtYXBfbGVuZ3RoOwogCXU2NCAqcmFpZF9tYXAgPSBO VUxMOwpAQCAtNTUwNiw3ICs1NTA2LDcgQEAgaW50IGJ0cmZzX21hcF9iaW8oc3RydWN0IGJ0cmZz X3Jvb3QgKnJvb3QsIGludCBydywgc3RydWN0IGJpbyAqYmlvLAogCWludCB0b3RhbF9kZXZzID0g MTsKIAlzdHJ1Y3QgYnRyZnNfYmlvICpiYmlvID0gTlVMTDsKIAotCWxlbmd0aCA9IGJpby0+Ymlf c2l6ZTsKKwlsZW5ndGggPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAltYXBfbGVuZ3RoID0gbGVu Z3RoOwogCiAJcmV0ID0gX19idHJmc19tYXBfYmxvY2socm9vdC0+ZnNfaW5mbywgcncsIGxvZ2lj YWwsICZtYXBfbGVuZ3RoLCAmYmJpbywKZGlmZiAtLWdpdCBhL2ZzL2J1ZmZlci5jIGIvZnMvYnVm ZmVyLmMKaW5kZXggNjAyNDg3Ny4uMWMwNGVjNiAxMDA2NDQKLS0tIGEvZnMvYnVmZmVyLmMKKysr IGIvZnMvYnVmZmVyLmMKQEAgLTI5ODIsMTEgKzI5ODIsMTEgQEAgc3RhdGljIHZvaWQgZ3VhcmRf YmhfZW9kKGludCBydywgc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQog CSAqIGxldCBpdCB0aHJvdWdoLCBhbmQgdGhlIElPIGxheWVyIHdpbGwgdHVybiBpdCBpbnRvCiAJ ICogYW4gRUlPLgogCSAqLwotCWlmICh1bmxpa2VseShiaW8tPmJpX3NlY3RvciA+PSBtYXhzZWN0 b3IpKQorCWlmICh1bmxpa2VseShiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID49IG1heHNlY3Rvcikp CiAJCXJldHVybjsKIAotCW1heHNlY3RvciAtPSBiaW8tPmJpX3NlY3RvcjsKLQlieXRlcyA9IGJp by0+Ymlfc2l6ZTsKKwltYXhzZWN0b3IgLT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwlieXRl cyA9IGJpby0+YmlfaXRlci5iaV9zaXplOwogCWlmIChsaWtlbHkoKGJ5dGVzID4+IDkpIDw9IG1h eHNlY3RvcikpCiAJCXJldHVybjsKIApAQCAtMjk5NCw3ICsyOTk0LDcgQEAgc3RhdGljIHZvaWQg Z3VhcmRfYmhfZW9kKGludCBydywgc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYnVmZmVyX2hlYWQg KmJoKQogCWJ5dGVzID0gbWF4c2VjdG9yIDw8IDk7CiAKIAkvKiBUcnVuY2F0ZSB0aGUgYmlvLi4g Ki8KLQliaW8tPmJpX3NpemUgPSBieXRlczsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IGJ5dGVz OwogCWJpby0+YmlfaW9fdmVjWzBdLmJ2X2xlbiA9IGJ5dGVzOwogCiAJLyogLi5hbmQgY2xlYXIg dGhlIGVuZCBvZiB0aGUgYnVmZmVyIGZvciByZWFkcyAqLwpAQCAtMzAyOSwxNCArMzAyOSwxNCBA QCBpbnQgX3N1Ym1pdF9iaChpbnQgcncsIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIHVuc2lnbmVk IGxvbmcgYmlvX2ZsYWdzKQogCSAqLwogCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9JTywgMSk7CiAK LQliaW8tPmJpX3NlY3RvciA9IGJoLT5iX2Jsb2NrbnIgKiAoYmgtPmJfc2l6ZSA+PiA5KTsKKwli aW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmgtPmJfYmxvY2tuciAqIChiaC0+Yl9zaXplID4+IDkp OwogCWJpby0+YmlfYmRldiA9IGJoLT5iX2JkZXY7CiAJYmlvLT5iaV9pb192ZWNbMF0uYnZfcGFn ZSA9IGJoLT5iX3BhZ2U7CiAJYmlvLT5iaV9pb192ZWNbMF0uYnZfbGVuID0gYmgtPmJfc2l6ZTsK IAliaW8tPmJpX2lvX3ZlY1swXS5idl9vZmZzZXQgPSBiaF9vZmZzZXQoYmgpOwogCiAJYmlvLT5i aV92Y250ID0gMTsKLQliaW8tPmJpX3NpemUgPSBiaC0+Yl9zaXplOworCWJpby0+YmlfaXRlci5i aV9zaXplID0gYmgtPmJfc2l6ZTsKIAogCWJpby0+YmlfZW5kX2lvID0gZW5kX2Jpb19iaF9pb19z eW5jOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJoOwpkaWZmIC0tZ2l0IGEvZnMvZGlyZWN0LWlvLmMg Yi9mcy9kaXJlY3QtaW8uYwppbmRleCAwZTA0MTQyLi4xNjBhNTQ4IDEwMDY0NAotLS0gYS9mcy9k aXJlY3QtaW8uYworKysgYi9mcy9kaXJlY3QtaW8uYwpAQCAtMzc1LDcgKzM3NSw3IEBAIGRpb19i aW9fYWxsb2Moc3RydWN0IGRpbyAqZGlvLCBzdHJ1Y3QgZGlvX3N1Ym1pdCAqc2RpbywKIAliaW8g PSBiaW9fYWxsb2MoR0ZQX0tFUk5FTCwgbnJfdmVjcyk7CiAKIAliaW8tPmJpX2JkZXYgPSBiZGV2 OwotCWJpby0+Ymlfc2VjdG9yID0gZmlyc3Rfc2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBmaXJzdF9zZWN0b3I7CiAJaWYgKGRpby0+aXNfYXN5bmMpCiAJCWJpby0+YmlfZW5kX2lv ID0gZGlvX2Jpb19lbmRfYWlvOwogCWVsc2UKQEAgLTcxOSw3ICs3MTksNyBAQCBzdGF0aWMgaW5s aW5lIGludCBkaW9fc2VuZF9jdXJfcGFnZShzdHJ1Y3QgZGlvICpkaW8sIHN0cnVjdCBkaW9fc3Vi bWl0ICpzZGlvLAogCWlmIChzZGlvLT5iaW8pIHsKIAkJbG9mZl90IGN1cl9vZmZzZXQgPSBzZGlv LT5jdXJfcGFnZV9mc19vZmZzZXQ7CiAJCWxvZmZfdCBiaW9fbmV4dF9vZmZzZXQgPSBzZGlvLT5s b2dpY2FsX29mZnNldF9pbl9iaW8gKwotCQkJc2Rpby0+YmlvLT5iaV9zaXplOworCQkJc2Rpby0+ YmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAkJLyoKIAkJICogU2VlIHdoZXRoZXIgdGhpcyBuZXcg cmVxdWVzdCBpcyBjb250aWd1b3VzIHdpdGggdGhlIG9sZC4KZGlmZiAtLWdpdCBhL2ZzL2V4dDQv cGFnZS1pby5jIGIvZnMvZXh0NC9wYWdlLWlvLmMKaW5kZXggYTMxZTRkYS4uYWI5NTUwOCAxMDA2 NDQKLS0tIGEvZnMvZXh0NC9wYWdlLWlvLmMKKysrIGIvZnMvZXh0NC9wYWdlLWlvLmMKQEAgLTI5 OCw3ICsyOTgsNyBAQCBleHQ0X2lvX2VuZF90ICpleHQ0X2dldF9pb19lbmQoZXh0NF9pb19lbmRf dCAqaW9fZW5kKQogc3RhdGljIHZvaWQgZXh0NF9lbmRfYmlvKHN0cnVjdCBiaW8gKmJpbywgaW50 IGVycm9yKQogewogCWV4dDRfaW9fZW5kX3QgKmlvX2VuZCA9IGJpby0+YmlfcHJpdmF0ZTsKLQlz ZWN0b3JfdCBiaV9zZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsKKwlzZWN0b3JfdCBiaV9zZWN0b3Ig PSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCiAJQlVHX09OKCFpb19lbmQpOwogCWJpby0+Ymlf ZW5kX2lvID0gTlVMTDsKQEAgLTM2Niw3ICszNjYsNyBAQCBzdGF0aWMgaW50IGlvX3N1Ym1pdF9p bml0X2JpbyhzdHJ1Y3QgZXh0NF9pb19zdWJtaXQgKmlvLAogCWJpbyA9IGJpb19hbGxvYyhHRlBf Tk9JTywgbWluKG52ZWNzLCBCSU9fTUFYX1BBR0VTKSk7CiAJaWYgKCFiaW8pCiAJCXJldHVybiAt RU5PTUVNOwotCWJpby0+Ymlfc2VjdG9yID0gYmgtPmJfYmxvY2tuciAqIChiaC0+Yl9zaXplID4+ IDkpOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBiaC0+Yl9ibG9ja25yICogKGJoLT5iX3Np emUgPj4gOSk7CiAJYmlvLT5iaV9iZGV2ID0gYmgtPmJfYmRldjsKIAliaW8tPmJpX2VuZF9pbyA9 IGV4dDRfZW5kX2JpbzsKIAliaW8tPmJpX3ByaXZhdGUgPSBleHQ0X2dldF9pb19lbmQoaW8tPmlv X2VuZCk7CmRpZmYgLS1naXQgYS9mcy9mMmZzL2RhdGEuYyBiL2ZzL2YyZnMvZGF0YS5jCmluZGV4 IGE0OTQ5MDkuLmEyYzhkZTggMTAwNjQ0Ci0tLSBhL2ZzL2YyZnMvZGF0YS5jCisrKyBiL2ZzL2Yy ZnMvZGF0YS5jCkBAIC0zODYsNyArMzg2LDcgQEAgaW50IGYyZnNfcmVhZHBhZ2Uoc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgcGFnZSAqcGFnZSwKIAliaW8gPSBmMmZzX2Jpb19hbGxv YyhiZGV2LCAxKTsKIAogCS8qIEluaXRpYWxpemUgdGhlIGJpbyAqLwotCWJpby0+Ymlfc2VjdG9y ID0gU0VDVE9SX0ZST01fQkxPQ0soc2JpLCBibGtfYWRkcik7CisJYmlvLT5iaV9pdGVyLmJpX3Nl Y3RvciA9IFNFQ1RPUl9GUk9NX0JMT0NLKHNiaSwgYmxrX2FkZHIpOwogCWJpby0+YmlfZW5kX2lv ID0gcmVhZF9lbmRfaW87CiAKIAlpZiAoYmlvX2FkZF9wYWdlKGJpbywgcGFnZSwgUEFHRV9DQUNI RV9TSVpFLCAwKSA8IFBBR0VfQ0FDSEVfU0laRSkgewpkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdt ZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwppbmRleCBhOTBjNmJjLi4zNmU4YWZkIDEwMDY0NAot LS0gYS9mcy9mMmZzL3NlZ21lbnQuYworKysgYi9mcy9mMmZzL3NlZ21lbnQuYwpAQCAtNjgyLDcg KzY4Miw3IEBAIHJldHJ5OgogCiAJCWJpb19ibG9ja3MgPSBNQVhfQklPX0JMT0NLUyhtYXhfaHdf YmxvY2tzKHNiaSkpOwogCQlzYmktPmJpb1t0eXBlXSA9IGYyZnNfYmlvX2FsbG9jKGJkZXYsIGJp b19ibG9ja3MpOwotCQlzYmktPmJpb1t0eXBlXS0+Ymlfc2VjdG9yID0gU0VDVE9SX0ZST01fQkxP Q0soc2JpLCBibGtfYWRkcik7CisJCXNiaS0+YmlvW3R5cGVdLT5iaV9pdGVyLmJpX3NlY3RvciA9 IFNFQ1RPUl9GUk9NX0JMT0NLKHNiaSwgYmxrX2FkZHIpOwogCQlzYmktPmJpb1t0eXBlXS0+Ymlf cHJpdmF0ZSA9IHByaXY7CiAJCS8qCiAJCSAqIFRoZSBlbmRfaW8gd2lsbCBiZSBhc3NpZ25lZCBh dCB0aGUgc3VtYmlzc2lvbiBwaGFzZS4KZGlmZiAtLWdpdCBhL2ZzL2dmczIvbG9wcy5jIGIvZnMv Z2ZzMi9sb3BzLmMKaW5kZXggMDEwYjlmYi4uOTg1ZGE5NCAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9s b3BzLmMKKysrIGIvZnMvZ2ZzMi9sb3BzLmMKQEAgLTI3Miw3ICsyNzIsNyBAQCBzdGF0aWMgc3Ry dWN0IGJpbyAqZ2ZzMl9sb2dfYWxsb2NfYmlvKHN0cnVjdCBnZnMyX3NiZCAqc2RwLCB1NjQgYmxr bm8pCiAJCW5ydmVjcyA9IG1heChucnZlY3MvMiwgMVUpOwogCX0KIAotCWJpby0+Ymlfc2VjdG9y ID0gYmxrbm8gKiAoc2ItPnNfYmxvY2tzaXplID4+IDkpOworCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBibGtubyAqIChzYi0+c19ibG9ja3NpemUgPj4gOSk7CiAJYmlvLT5iaV9iZGV2ID0gc2It PnNfYmRldjsKIAliaW8tPmJpX2VuZF9pbyA9IGdmczJfZW5kX2xvZ193cml0ZTsKIAliaW8tPmJp X3ByaXZhdGUgPSBzZHA7CmRpZmYgLS1naXQgYS9mcy9nZnMyL29wc19mc3R5cGUuYyBiL2ZzL2dm czIvb3BzX2ZzdHlwZS5jCmluZGV4IDgyMzAzYjQuLjE2MTk0ZGEgMTAwNjQ0Ci0tLSBhL2ZzL2dm czIvb3BzX2ZzdHlwZS5jCisrKyBiL2ZzL2dmczIvb3BzX2ZzdHlwZS5jCkBAIC0yMjQsNyArMjI0 LDcgQEAgc3RhdGljIGludCBnZnMyX3JlYWRfc3VwZXIoc3RydWN0IGdmczJfc2JkICpzZHAsIHNl Y3Rvcl90IHNlY3RvciwgaW50IHNpbGVudCkKIAlsb2NrX3BhZ2UocGFnZSk7CiAKIAliaW8gPSBi aW9fYWxsb2MoR0ZQX05PRlMsIDEpOwotCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yICogKHNiLT5z X2Jsb2Nrc2l6ZSA+PiA5KTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yICogKHNi LT5zX2Jsb2Nrc2l6ZSA+PiA5KTsKIAliaW8tPmJpX2JkZXYgPSBzYi0+c19iZGV2OwogCWJpb19h ZGRfcGFnZShiaW8sIHBhZ2UsIFBBR0VfU0laRSwgMCk7CiAKZGlmZiAtLWdpdCBhL2ZzL2hmc3Bs dXMvd3JhcHBlci5jIGIvZnMvaGZzcGx1cy93cmFwcGVyLmMKaW5kZXggZTlhOTdhMC4uM2Y5OTk2 NCAxMDA2NDQKLS0tIGEvZnMvaGZzcGx1cy93cmFwcGVyLmMKKysrIGIvZnMvaGZzcGx1cy93cmFw cGVyLmMKQEAgLTYzLDcgKzYzLDcgQEAgaW50IGhmc3BsdXNfc3VibWl0X2JpbyhzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnNiLCBzZWN0b3JfdCBzZWN0b3IsCiAJc2VjdG9yICY9IH4oKGlvX3NpemUgPj4g SEZTUExVU19TRUNUT1JfU0hJRlQpIC0gMSk7CiAKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX05PSU8s IDEpOwotCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSBzZWN0b3I7CiAJYmlvLT5iaV9iZGV2ID0gc2ItPnNfYmRldjsKIAogCWlmICghKHJ3ICYgV1JJ VEUpICYmIGRhdGEpCmRpZmYgLS1naXQgYS9mcy9qZnMvamZzX2xvZ21nci5jIGIvZnMvamZzL2pm c19sb2dtZ3IuYwppbmRleCAzNjBkMjdjLi44ZDgxMWUwIDEwMDY0NAotLS0gYS9mcy9qZnMvamZz X2xvZ21nci5jCisrKyBiL2ZzL2pmcy9qZnNfbG9nbWdyLmMKQEAgLTE5OTgsMjAgKzE5OTgsMjAg QEAgc3RhdGljIGludCBsYm1SZWFkKHN0cnVjdCBqZnNfbG9nICogbG9nLCBpbnQgcG4sIHN0cnVj dCBsYnVmICoqIGJwcCkKIAogCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9GUywgMSk7CiAKLQliaW8t PmJpX3NlY3RvciA9IGJwLT5sX2Jsa25vIDw8IChsb2ctPmwyYnNpemUgLSA5KTsKKwliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gYnAtPmxfYmxrbm8gPDwgKGxvZy0+bDJic2l6ZSAtIDkpOwogCWJp by0+YmlfYmRldiA9IGxvZy0+YmRldjsKIAliaW8tPmJpX2lvX3ZlY1swXS5idl9wYWdlID0gYnAt PmxfcGFnZTsKIAliaW8tPmJpX2lvX3ZlY1swXS5idl9sZW4gPSBMT0dQU0laRTsKIAliaW8tPmJp X2lvX3ZlY1swXS5idl9vZmZzZXQgPSBicC0+bF9vZmZzZXQ7CiAKIAliaW8tPmJpX3ZjbnQgPSAx OwotCWJpby0+Ymlfc2l6ZSA9IExPR1BTSVpFOworCWJpby0+YmlfaXRlci5iaV9zaXplID0gTE9H UFNJWkU7CiAKIAliaW8tPmJpX2VuZF9pbyA9IGxibUlPRG9uZTsKIAliaW8tPmJpX3ByaXZhdGUg PSBicDsKIAkvKmNoZWNrIGlmIGpvdXJuYWxpbmcgdG8gZGlzayBoYXMgYmVlbiBkaXNhYmxlZCov CiAJaWYgKGxvZy0+bm9faW50ZWdyaXR5KSB7Ci0JCWJpby0+Ymlfc2l6ZSA9IDA7CisJCWJpby0+ YmlfaXRlci5iaV9zaXplID0gMDsKIAkJbGJtSU9Eb25lKGJpbywgMCk7CiAJfSBlbHNlIHsKIAkJ c3VibWl0X2JpbyhSRUFEX1NZTkMsIGJpbyk7CkBAIC0yMTQ0LDIxICsyMTQ0LDIxIEBAIHN0YXRp YyB2b2lkIGxibVN0YXJ0SU8oc3RydWN0IGxidWYgKiBicCkKIAlqZnNfaW5mbygibGJtU3RhcnRJ T1xuIik7CiAKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX05PRlMsIDEpOwotCWJpby0+Ymlfc2VjdG9y ID0gYnAtPmxfYmxrbm8gPDwgKGxvZy0+bDJic2l6ZSAtIDkpOworCWJpby0+YmlfaXRlci5iaV9z ZWN0b3IgPSBicC0+bF9ibGtubyA8PCAobG9nLT5sMmJzaXplIC0gOSk7CiAJYmlvLT5iaV9iZGV2 ID0gbG9nLT5iZGV2OwogCWJpby0+YmlfaW9fdmVjWzBdLmJ2X3BhZ2UgPSBicC0+bF9wYWdlOwog CWJpby0+YmlfaW9fdmVjWzBdLmJ2X2xlbiA9IExPR1BTSVpFOwogCWJpby0+YmlfaW9fdmVjWzBd LmJ2X29mZnNldCA9IGJwLT5sX29mZnNldDsKIAogCWJpby0+YmlfdmNudCA9IDE7Ci0JYmlvLT5i aV9zaXplID0gTE9HUFNJWkU7CisJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBMT0dQU0laRTsKIAog CWJpby0+YmlfZW5kX2lvID0gbGJtSU9Eb25lOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJwOwogCiAJ LyogY2hlY2sgaWYgam91cm5hbGluZyB0byBkaXNrIGhhcyBiZWVuIGRpc2FibGVkICovCiAJaWYg KGxvZy0+bm9faW50ZWdyaXR5KSB7Ci0JCWJpby0+Ymlfc2l6ZSA9IDA7CisJCWJpby0+YmlfaXRl ci5iaV9zaXplID0gMDsKIAkJbGJtSU9Eb25lKGJpbywgMCk7CiAJfSBlbHNlIHsKIAkJc3VibWl0 X2JpbyhXUklURV9TWU5DLCBiaW8pOwpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19tZXRhcGFnZS5j IGIvZnMvamZzL2pmc19tZXRhcGFnZS5jCmluZGV4IGQxNjVjZGUuLjQ5YmE3ZmYgMTAwNjQ0Ci0t LSBhL2ZzL2pmcy9qZnNfbWV0YXBhZ2UuYworKysgYi9mcy9qZnMvamZzX21ldGFwYWdlLmMKQEAg LTQxNiw3ICs0MTYsNyBAQCBzdGF0aWMgaW50IG1ldGFwYWdlX3dyaXRlcGFnZShzdHJ1Y3QgcGFn ZSAqcGFnZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpCiAJCQkgKiBjb3VudCBmcm9t IGhpdHRpbmcgemVybyBiZWZvcmUgd2UncmUgdGhyb3VnaAogCQkJICovCiAJCQlpbmNfaW8ocGFn ZSk7Ci0JCQlpZiAoIWJpby0+Ymlfc2l6ZSkKKwkJCWlmICghYmlvLT5iaV9pdGVyLmJpX3NpemUp CiAJCQkJZ290byBkdW1wX2JpbzsKIAkJCXN1Ym1pdF9iaW8oV1JJVEUsIGJpbyk7CiAJCQlucl91 bmRlcndheSsrOwpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyBpbnQgbWV0YXBhZ2Vfd3JpdGVw YWdlKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYykKIAog CQliaW8gPSBiaW9fYWxsb2MoR0ZQX05PRlMsIDEpOwogCQliaW8tPmJpX2JkZXYgPSBpbm9kZS0+ aV9zYi0+c19iZGV2OwotCQliaW8tPmJpX3NlY3RvciA9IHBibG9jayA8PCAoaW5vZGUtPmlfYmxr Yml0cyAtIDkpOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gcGJsb2NrIDw8IChpbm9kZS0+ aV9ibGtiaXRzIC0gOSk7CiAJCWJpby0+YmlfZW5kX2lvID0gbWV0YXBhZ2Vfd3JpdGVfZW5kX2lv OwogCQliaW8tPmJpX3ByaXZhdGUgPSBwYWdlOwogCkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGlj IGludCBtZXRhcGFnZV93cml0ZXBhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB3cml0ZWJh Y2tfY29udHJvbCAqd2JjKQogCWlmIChiaW8pIHsKIAkJaWYgKGJpb19hZGRfcGFnZShiaW8sIHBh Z2UsIGJpb19ieXRlcywgYmlvX29mZnNldCkgPCBiaW9fYnl0ZXMpCiAJCQkJZ290byBhZGRfZmFp bGVkOwotCQlpZiAoIWJpby0+Ymlfc2l6ZSkKKwkJaWYgKCFiaW8tPmJpX2l0ZXIuYmlfc2l6ZSkK IAkJCWdvdG8gZHVtcF9iaW87CiAKIAkJc3VibWl0X2JpbyhXUklURSwgYmlvKTsKQEAgLTUxNyw3 ICs1MTcsOCBAQCBzdGF0aWMgaW50IG1ldGFwYWdlX3JlYWRwYWdlKHN0cnVjdCBmaWxlICpmcCwg c3RydWN0IHBhZ2UgKnBhZ2UpCiAKIAkJCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9GUywgMSk7CiAJ CQliaW8tPmJpX2JkZXYgPSBpbm9kZS0+aV9zYi0+c19iZGV2OwotCQkJYmlvLT5iaV9zZWN0b3Ig PSBwYmxvY2sgPDwgKGlub2RlLT5pX2Jsa2JpdHMgLSA5KTsKKwkJCWJpby0+YmlfaXRlci5iaV9z ZWN0b3IgPQorCQkJCXBibG9jayA8PCAoaW5vZGUtPmlfYmxrYml0cyAtIDkpOwogCQkJYmlvLT5i aV9lbmRfaW8gPSBtZXRhcGFnZV9yZWFkX2VuZF9pbzsKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHBh Z2U7CiAJCQlsZW4gPSB4bGVuIDw8IGlub2RlLT5pX2Jsa2JpdHM7CmRpZmYgLS1naXQgYS9mcy9s b2dmcy9kZXZfYmRldi5jIGIvZnMvbG9nZnMvZGV2X2JkZXYuYwppbmRleCBlNmRmM2JlLi43NjI3 OWUxIDEwMDY0NAotLS0gYS9mcy9sb2dmcy9kZXZfYmRldi5jCisrKyBiL2ZzL2xvZ2ZzL2Rldl9i ZGV2LmMKQEAgLTI2LDkgKzI2LDkgQEAgc3RhdGljIGludCBzeW5jX3JlcXVlc3Qoc3RydWN0IHBh Z2UgKnBhZ2UsIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGludCBydykKIAliaW9fdmVjLmJ2 X2xlbiA9IFBBR0VfU0laRTsKIAliaW9fdmVjLmJ2X29mZnNldCA9IDA7CiAJYmlvLmJpX3ZjbnQg PSAxOwotCWJpby5iaV9zaXplID0gUEFHRV9TSVpFOwogCWJpby5iaV9iZGV2ID0gYmRldjsKLQli aW8uYmlfc2VjdG9yID0gcGFnZS0+aW5kZXggKiAoUEFHRV9TSVpFID4+IDkpOworCWJpby5iaV9p dGVyLmJpX3NlY3RvciA9IHBhZ2UtPmluZGV4ICogKFBBR0VfU0laRSA+PiA5KTsKKwliaW8uYmlf aXRlci5iaV9zaXplID0gUEFHRV9TSVpFOwogCiAJcmV0dXJuIHN1Ym1pdF9iaW9fd2FpdChydywg JmJpbyk7CiB9CkBAIC05Miw5ICs5Miw5IEBAIHN0YXRpYyBpbnQgX19iZGV2X3dyaXRlc2VnKHN0 cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU2NCBvZnMsIHBnb2ZmX3QgaW5kZXgsCiAJCWlmIChpID49 IG1heF9wYWdlcykgewogCQkJLyogQmxvY2sgbGF5ZXIgY2Fubm90IHNwbGl0IGJpb3MgOiggKi8K IAkJCWJpby0+YmlfdmNudCA9IGk7Ci0JCQliaW8tPmJpX3NpemUgPSBpICogUEFHRV9TSVpFOwor CQkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBpICogUEFHRV9TSVpFOwogCQkJYmlvLT5iaV9iZGV2 ID0gc3VwZXItPnNfYmRldjsKLQkJCWJpby0+Ymlfc2VjdG9yID0gb2ZzID4+IDk7CisJCQliaW8t PmJpX2l0ZXIuYmlfc2VjdG9yID0gb2ZzID4+IDk7CiAJCQliaW8tPmJpX3ByaXZhdGUgPSBzYjsK IAkJCWJpby0+YmlfZW5kX2lvID0gd3JpdGVzZWdfZW5kX2lvOwogCQkJYXRvbWljX2luYygmc3Vw ZXItPnNfcGVuZGluZ193cml0ZXMpOwpAQCAtMTE5LDkgKzExOSw5IEBAIHN0YXRpYyBpbnQgX19i ZGV2X3dyaXRlc2VnKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU2NCBvZnMsIHBnb2ZmX3QgaW5k ZXgsCiAJCXVubG9ja19wYWdlKHBhZ2UpOwogCX0KIAliaW8tPmJpX3ZjbnQgPSBucl9wYWdlczsK LQliaW8tPmJpX3NpemUgPSBucl9wYWdlcyAqIFBBR0VfU0laRTsKKwliaW8tPmJpX2l0ZXIuYmlf c2l6ZSA9IG5yX3BhZ2VzICogUEFHRV9TSVpFOwogCWJpby0+YmlfYmRldiA9IHN1cGVyLT5zX2Jk ZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBvZnMgPj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9y ID0gb2ZzID4+IDk7CiAJYmlvLT5iaV9wcml2YXRlID0gc2I7CiAJYmlvLT5iaV9lbmRfaW8gPSB3 cml0ZXNlZ19lbmRfaW87CiAJYXRvbWljX2luYygmc3VwZXItPnNfcGVuZGluZ193cml0ZXMpOwpA QCAtMTg0LDkgKzE4NCw5IEBAIHN0YXRpYyBpbnQgZG9fZXJhc2Uoc3RydWN0IHN1cGVyX2Jsb2Nr ICpzYiwgdTY0IG9mcywgcGdvZmZfdCBpbmRleCwKIAkJaWYgKGkgPj0gbWF4X3BhZ2VzKSB7CiAJ CQkvKiBCbG9jayBsYXllciBjYW5ub3Qgc3BsaXQgYmlvcyA6KCAqLwogCQkJYmlvLT5iaV92Y250 ID0gaTsKLQkJCWJpby0+Ymlfc2l6ZSA9IGkgKiBQQUdFX1NJWkU7CisJCQliaW8tPmJpX2l0ZXIu Ymlfc2l6ZSA9IGkgKiBQQUdFX1NJWkU7CiAJCQliaW8tPmJpX2JkZXYgPSBzdXBlci0+c19iZGV2 OwotCQkJYmlvLT5iaV9zZWN0b3IgPSBvZnMgPj4gOTsKKwkJCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBvZnMgPj4gOTsKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHNiOwogCQkJYmlvLT5iaV9lbmRf aW8gPSBlcmFzZV9lbmRfaW87CiAJCQlhdG9taWNfaW5jKCZzdXBlci0+c19wZW5kaW5nX3dyaXRl cyk7CkBAIC0yMDUsOSArMjA1LDkgQEAgc3RhdGljIGludCBkb19lcmFzZShzdHJ1Y3Qgc3VwZXJf YmxvY2sgKnNiLCB1NjQgb2ZzLCBwZ29mZl90IGluZGV4LAogCQliaW8tPmJpX2lvX3ZlY1tpXS5i dl9vZmZzZXQgPSAwOwogCX0KIAliaW8tPmJpX3ZjbnQgPSBucl9wYWdlczsKLQliaW8tPmJpX3Np emUgPSBucl9wYWdlcyAqIFBBR0VfU0laRTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IG5yX3Bh Z2VzICogUEFHRV9TSVpFOwogCWJpby0+YmlfYmRldiA9IHN1cGVyLT5zX2JkZXY7Ci0JYmlvLT5i aV9zZWN0b3IgPSBvZnMgPj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gb2ZzID4+IDk7 CiAJYmlvLT5iaV9wcml2YXRlID0gc2I7CiAJYmlvLT5iaV9lbmRfaW8gPSBlcmFzZV9lbmRfaW87 CiAJYXRvbWljX2luYygmc3VwZXItPnNfcGVuZGluZ193cml0ZXMpOwpkaWZmIC0tZ2l0IGEvZnMv bXBhZ2UuYyBiL2ZzL21wYWdlLmMKaW5kZXggZGQ2ZDU4Ny4uNDk3OWZmYSAxMDA2NDQKLS0tIGEv ZnMvbXBhZ2UuYworKysgYi9mcy9tcGFnZS5jCkBAIC05Myw3ICs5Myw3IEBAIG1wYWdlX2FsbG9j KHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsCiAKIAlpZiAoYmlvKSB7CiAJCWJpby0+YmlfYmRl diA9IGJkZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0gZmlyc3Rfc2VjdG9yOworCQliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yID0gZmlyc3Rfc2VjdG9yOwogCX0KIAlyZXR1cm4gYmlvOwogfQpkaWZmIC0t Z2l0IGEvZnMvbmZzL2Jsb2NrbGF5b3V0L2Jsb2NrbGF5b3V0LmMgYi9mcy9uZnMvYmxvY2tsYXlv dXQvYmxvY2tsYXlvdXQuYwppbmRleCBkYTc2ODkyLi41NmZmODIzIDEwMDY0NAotLS0gYS9mcy9u ZnMvYmxvY2tsYXlvdXQvYmxvY2tsYXlvdXQuYworKysgYi9mcy9uZnMvYmxvY2tsYXlvdXQvYmxv Y2tsYXlvdXQuYwpAQCAtMTM0LDggKzEzNCw4IEBAIGJsX3N1Ym1pdF9iaW8oaW50IHJ3LCBzdHJ1 Y3QgYmlvICpiaW8pCiAJaWYgKGJpbykgewogCQlnZXRfcGFyYWxsZWwoYmlvLT5iaV9wcml2YXRl KTsKIAkJZHByaW50aygiJXMgc3VibWl0dGluZyAlcyBiaW8gJXVAJWxsdVxuIiwgX19mdW5jX18s Ci0JCQlydyA9PSBSRUFEID8gInJlYWQiIDogIndyaXRlIiwKLQkJCWJpby0+Ymlfc2l6ZSwgKHVu c2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQlydyA9PSBSRUFEID8gInJlYWQi IDogIndyaXRlIiwgYmlvLT5iaV9pdGVyLmJpX3NpemUsCisJCQkodW5zaWduZWQgbG9uZyBsb25n KWJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCQlzdWJtaXRfYmlvKHJ3LCBiaW8pOwogCX0KIAly ZXR1cm4gTlVMTDsKQEAgLTE1Niw3ICsxNTYsOCBAQCBzdGF0aWMgc3RydWN0IGJpbyAqYmxfYWxs b2NfaW5pdF9iaW8oaW50IG5wZywgc2VjdG9yX3QgaXNlY3QsCiAJfQogCiAJaWYgKGJpbykgewot CQliaW8tPmJpX3NlY3RvciA9IGlzZWN0IC0gYmUtPmJlX2Zfb2Zmc2V0ICsgYmUtPmJlX3Zfb2Zm c2V0OworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gaXNlY3QgLSBiZS0+YmVfZl9vZmZzZXQg KworCQkJYmUtPmJlX3Zfb2Zmc2V0OwogCQliaW8tPmJpX2JkZXYgPSBiZS0+YmVfbWRldjsKIAkJ YmlvLT5iaV9lbmRfaW8gPSBlbmRfaW87CiAJCWJpby0+YmlfcHJpdmF0ZSA9IHBhcjsKQEAgLTUx MSw3ICs1MTIsNyBAQCBibF9kb19yZWFkcGFnZV9zeW5jKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1 Y3QgcG5mc19ibG9ja19leHRlbnQgKmJlLAogCWlzZWN0ID0gKHBhZ2UtPmluZGV4IDw8IFBBR0Vf Q0FDSEVfU0VDVE9SX1NISUZUKSArCiAJCShvZmZzZXQgLyBTRUNUT1JfU0laRSk7CiAKLQliaW8t PmJpX3NlY3RvciA9IGlzZWN0IC0gYmUtPmJlX2Zfb2Zmc2V0ICsgYmUtPmJlX3Zfb2Zmc2V0Owor CWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBpc2VjdCAtIGJlLT5iZV9mX29mZnNldCArIGJlLT5i ZV92X29mZnNldDsKIAliaW8tPmJpX2JkZXYgPSBiZS0+YmVfbWRldjsKIAliaW8tPmJpX2VuZF9p byA9IGJsX3JlYWRfc2luZ2xlX2VuZF9pbzsKIApkaWZmIC0tZ2l0IGEvZnMvbmlsZnMyL3NlZ2J1 Zi5jIGIvZnMvbmlsZnMyL3NlZ2J1Zi5jCmluZGV4IDJkOGJlNTEuLmRjM2E5ZWZkIDEwMDY0NAot LS0gYS9mcy9uaWxmczIvc2VnYnVmLmMKKysrIGIvZnMvbmlsZnMyL3NlZ2J1Zi5jCkBAIC00MTYs NyArNDE2LDggQEAgc3RhdGljIHN0cnVjdCBiaW8gKm5pbGZzX2FsbG9jX3NlZ19iaW8oc3RydWN0 IHRoZV9uaWxmcyAqbmlsZnMsIHNlY3Rvcl90IHN0YXJ0LAogCX0KIAlpZiAobGlrZWx5KGJpbykp IHsKIAkJYmlvLT5iaV9iZGV2ID0gbmlsZnMtPm5zX2JkZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0g c3RhcnQgPDwgKG5pbGZzLT5uc19ibG9ja3NpemVfYml0cyAtIDkpOworCQliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yID0KKwkJCXN0YXJ0IDw8IChuaWxmcy0+bnNfYmxvY2tzaXplX2JpdHMgLSA5KTsK IAl9CiAJcmV0dXJuIGJpbzsKIH0KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRi ZWF0LmMgYi9mcy9vY2ZzMi9jbHVzdGVyL2hlYXJ0YmVhdC5jCmluZGV4IDczOTIwZmYuLmJmNDgy ZGYgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMKKysrIGIvZnMvb2Nm czIvY2x1c3Rlci9oZWFydGJlYXQuYwpAQCAtNDEzLDcgKzQxMyw3IEBAIHN0YXRpYyBzdHJ1Y3Qg YmlvICpvMmhiX3NldHVwX29uZV9iaW8oc3RydWN0IG8yaGJfcmVnaW9uICpyZWcsCiAJfQogCiAJ LyogTXVzdCBwdXQgZXZlcnl0aGluZyBpbiA1MTIgYnl0ZSBzZWN0b3JzIGZvciB0aGUgYmlvLi4u ICovCi0JYmlvLT5iaV9zZWN0b3IgPSAocmVnLT5ocl9zdGFydF9ibG9jayArIGNzKSA8PCAoYml0 cyAtIDkpOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSAocmVnLT5ocl9zdGFydF9ibG9jayAr IGNzKSA8PCAoYml0cyAtIDkpOwogCWJpby0+YmlfYmRldiA9IHJlZy0+aHJfYmRldjsKIAliaW8t PmJpX3ByaXZhdGUgPSB3YzsKIAliaW8tPmJpX2VuZF9pbyA9IG8yaGJfYmlvX2VuZF9pbzsKZGlm ZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYW9wcy5jIGIvZnMveGZzL3hmc19hb3BzLmMKaW5kZXggNzFj OGM5ZC4uMWIxOWI5YyAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19hb3BzLmMKKysrIGIvZnMveGZz L3hmc19hb3BzLmMKQEAgLTQwNyw3ICs0MDcsNyBAQCB4ZnNfYWxsb2NfaW9lbmRfYmlvKAogCXN0 cnVjdCBiaW8JCSpiaW8gPSBiaW9fYWxsb2MoR0ZQX05PSU8sIG52ZWNzKTsKIAogCUFTU0VSVChi aW8tPmJpX3ByaXZhdGUgPT0gTlVMTCk7Ci0JYmlvLT5iaV9zZWN0b3IgPSBiaC0+Yl9ibG9ja25y ICogKGJoLT5iX3NpemUgPj4gOSk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJoLT5iX2Js b2NrbnIgKiAoYmgtPmJfc2l6ZSA+PiA5KTsKIAliaW8tPmJpX2JkZXYgPSBiaC0+Yl9iZGV2Owog CXJldHVybiBiaW87CiB9CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2J1Zi5jIGIvZnMveGZzL3hm c19idWYuYwppbmRleCBjN2YwYjc3Li41ZjNlYTQ0IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2J1 Zi5jCisrKyBiL2ZzL3hmcy94ZnNfYnVmLmMKQEAgLTEyNTUsNyArMTI1NSw3IEBAIG5leHRfY2h1 bms6CiAKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX05PSU8sIG5yX3BhZ2VzKTsKIAliaW8tPmJpX2Jk ZXYgPSBicC0+Yl90YXJnZXQtPmJ0X2JkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3I7CisJ YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAliaW8tPmJpX2VuZF9pbyA9IHhmc19i dWZfYmlvX2VuZF9pbzsKIAliaW8tPmJpX3ByaXZhdGUgPSBicDsKIApAQCAtMTI3Nyw3ICsxMjc3 LDcgQEAgbmV4dF9jaHVuazoKIAkJdG90YWxfbnJfcGFnZXMtLTsKIAl9CiAKLQlpZiAobGlrZWx5 KGJpby0+Ymlfc2l6ZSkpIHsKKwlpZiAobGlrZWx5KGJpby0+YmlfaXRlci5iaV9zaXplKSkgewog CQlpZiAoeGZzX2J1Zl9pc192bWFwcGVkKGJwKSkgewogCQkJZmx1c2hfa2VybmVsX3ZtYXBfcmFu Z2UoYnAtPmJfYWRkciwKIAkJCQkJCXhmc19idWZfdm1hcF9sZW4oYnApKTsKZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvYmlvLmggYi9pbmNsdWRlL2xpbnV4L2Jpby5oCmluZGV4IDA2MGZmNjku LmUyZTBiYzYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYmlvLmgKKysrIGIvaW5jbHVkZS9s aW51eC9iaW8uaApAQCAtNjIsMTkgKzYyLDE5IEBACiAgKiBvbiBoaWdobWVtIHBhZ2UgdmVjdG9y cwogICovCiAjZGVmaW5lIGJpb19pb3ZlY19pZHgoYmlvLCBpZHgpCSgmKChiaW8pLT5iaV9pb192 ZWNbKGlkeCldKSkKLSNkZWZpbmUgYmlvX2lvdmVjKGJpbykJCWJpb19pb3ZlY19pZHgoKGJpbyks IChiaW8pLT5iaV9pZHgpCisjZGVmaW5lIGJpb19pb3ZlYyhiaW8pCQliaW9faW92ZWNfaWR4KChi aW8pLCAoYmlvKS0+YmlfaXRlci5iaV9pZHgpCiAjZGVmaW5lIGJpb19wYWdlKGJpbykJCWJpb19p b3ZlYygoYmlvKSktPmJ2X3BhZ2UKICNkZWZpbmUgYmlvX29mZnNldChiaW8pCQliaW9faW92ZWMo KGJpbykpLT5idl9vZmZzZXQKLSNkZWZpbmUgYmlvX3NlZ21lbnRzKGJpbykJKChiaW8pLT5iaV92 Y250IC0gKGJpbyktPmJpX2lkeCkKLSNkZWZpbmUgYmlvX3NlY3RvcnMoYmlvKQkoKGJpbyktPmJp X3NpemUgPj4gOSkKLSNkZWZpbmUgYmlvX2VuZF9zZWN0b3IoYmlvKQkoKGJpbyktPmJpX3NlY3Rv ciArIGJpb19zZWN0b3JzKChiaW8pKSkKKyNkZWZpbmUgYmlvX3NlZ21lbnRzKGJpbykJKChiaW8p LT5iaV92Y250IC0gKGJpbyktPmJpX2l0ZXIuYmlfaWR4KQorI2RlZmluZSBiaW9fc2VjdG9ycyhi aW8pCSgoYmlvKS0+YmlfaXRlci5iaV9zaXplID4+IDkpCisjZGVmaW5lIGJpb19lbmRfc2VjdG9y KGJpbykJKChiaW8pLT5iaV9pdGVyLmJpX3NlY3RvciArIGJpb19zZWN0b3JzKChiaW8pKSkKIAog c3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgYmlvX2N1cl9ieXRlcyhzdHJ1Y3QgYmlvICpiaW8p CiB7CiAJaWYgKGJpby0+YmlfdmNudCkKIAkJcmV0dXJuIGJpb19pb3ZlYyhiaW8pLT5idl9sZW47 CiAJZWxzZSAvKiBkYXRhbGVzcyByZXF1ZXN0cyBzdWNoIGFzIGRpc2NhcmQgKi8KLQkJcmV0dXJu IGJpby0+Ymlfc2l6ZTsKKwkJcmV0dXJuIGJpby0+YmlfaXRlci5iaV9zaXplOwogfQogCiBzdGF0 aWMgaW5saW5lIHZvaWQgKmJpb19kYXRhKHN0cnVjdCBiaW8gKmJpbykKQEAgLTEwOCw3ICsxMDgs NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgKmJpb19kYXRhKHN0cnVjdCBiaW8gKmJpbykKICAqLwog CiAjZGVmaW5lIF9fQlZFQ19FTkQoYmlvKQkJYmlvX2lvdmVjX2lkeCgoYmlvKSwgKGJpbyktPmJp X3ZjbnQgLSAxKQotI2RlZmluZSBfX0JWRUNfU1RBUlQoYmlvKQliaW9faW92ZWNfaWR4KChiaW8p LCAoYmlvKS0+YmlfaWR4KQorI2RlZmluZSBfX0JWRUNfU1RBUlQoYmlvKQliaW9faW92ZWNfaWR4 KChiaW8pLCAoYmlvKS0+YmlfaXRlci5iaV9pZHgpCiAKIC8qIERlZmF1bHQgaW1wbGVtZW50YXRp b24gb2YgQklPVkVDX1BIWVNfTUVSR0VBQkxFICovCiAjZGVmaW5lIF9fQklPVkVDX1BIWVNfTUVS R0VBQkxFKHZlYzEsIHZlYzIpCVwKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgaW5saW5lIHZv aWQgKmJpb19kYXRhKHN0cnVjdCBiaW8gKmJpbykKIAkgICAgIGkrKykKIAogI2RlZmluZSBiaW9f Zm9yX2VhY2hfc2VnbWVudChidmwsIGJpbywgaSkJCQkJXAotCWZvciAoaSA9IChiaW8pLT5iaV9p ZHg7CQkJCQkJXAorCWZvciAoaSA9IChiaW8pLT5iaV9pdGVyLmJpX2lkeDsJCQkJCVwKIAkgICAg IGJ2bCA9IGJpb19pb3ZlY19pZHgoKGJpbyksIChpKSksIGkgPCAoYmlvKS0+YmlfdmNudDsJXAog CSAgICAgaSsrKQogCkBAIC0zNjUsNyArMzY1LDcgQEAgc3RhdGljIGlubGluZSBjaGFyICpfX2Jp b19rbWFwX2lycShzdHJ1Y3QgYmlvICpiaW8sIHVuc2lnbmVkIHNob3J0IGlkeCwKICNkZWZpbmUg X19iaW9fa3VubWFwX2lycShidWYsIGZsYWdzKQlidmVjX2t1bm1hcF9pcnEoYnVmLCBmbGFncykK IAogI2RlZmluZSBiaW9fa21hcF9pcnEoYmlvLCBmbGFncykgXAotCV9fYmlvX2ttYXBfaXJxKChi aW8pLCAoYmlvKS0+YmlfaWR4LCAoZmxhZ3MpKQorCV9fYmlvX2ttYXBfaXJxKChiaW8pLCAoYmlv KS0+YmlfaXRlci5iaV9pZHgsIChmbGFncykpCiAjZGVmaW5lIGJpb19rdW5tYXBfaXJxKGJ1Zixm bGFncykJX19iaW9fa3VubWFwX2lycShidWYsIGZsYWdzKQogCiAvKgpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9saW51eC9ibGtfdHlwZXMuaCBiL2luY2x1ZGUvbGludXgvYmxrX3R5cGVzLmgKaW5kZXgg MjM4ZWYwZS4uMjliNWI4NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaAor KysgYi9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oCkBAIC0yOCwxMyArMjgsMTkgQEAgc3RydWN0 IGJpb192ZWMgewogCXVuc2lnbmVkIGludAlidl9vZmZzZXQ7CiB9OwogCitzdHJ1Y3QgYnZlY19p dGVyIHsKKwlzZWN0b3JfdAkJYmlfc2VjdG9yOwkvKiBkZXZpY2UgYWRkcmVzcyBpbiA1MTIgYnl0 ZQorCQkJCQkJICAgc2VjdG9ycyAqLworCXVuc2lnbmVkIGludAkJYmlfc2l6ZTsJLyogcmVzaWR1 YWwgSS9PIGNvdW50ICovCisKKwl1bnNpZ25lZCBpbnQJCWJpX2lkeDsJCS8qIGN1cnJlbnQgaW5k ZXggaW50byBidmxfdmVjICovCit9OworCiAvKgogICogbWFpbiB1bml0IG9mIEkvTyBmb3IgdGhl IGJsb2NrIGxheWVyIGFuZCBsb3dlciBsYXllcnMgKGllIGRyaXZlcnMgYW5kCiAgKiBzdGFja2lu ZyBkcml2ZXJzKQogICovCiBzdHJ1Y3QgYmlvIHsKLQlzZWN0b3JfdAkJYmlfc2VjdG9yOwkvKiBk ZXZpY2UgYWRkcmVzcyBpbiA1MTIgYnl0ZQotCQkJCQkJICAgc2VjdG9ycyAqLwogCXN0cnVjdCBi aW8JCSpiaV9uZXh0OwkvKiByZXF1ZXN0IHF1ZXVlIGxpbmsgKi8KIAlzdHJ1Y3QgYmxvY2tfZGV2 aWNlCSpiaV9iZGV2OwogCXVuc2lnbmVkIGxvbmcJCWJpX2ZsYWdzOwkvKiBzdGF0dXMsIGNvbW1h bmQsIGV0YyAqLwpAQCAtNDIsMTYgKzQ4LDEzIEBAIHN0cnVjdCBiaW8gewogCQkJCQkJICogdG9w IGJpdHMgcHJpb3JpdHkKIAkJCQkJCSAqLwogCi0JdW5zaWduZWQgc2hvcnQJCWJpX3ZjbnQ7CS8q IGhvdyBtYW55IGJpb192ZWMncyAqLwotCXVuc2lnbmVkIHNob3J0CQliaV9pZHg7CQkvKiBjdXJy ZW50IGluZGV4IGludG8gYnZsX3ZlYyAqLworCXN0cnVjdCBidmVjX2l0ZXIJYmlfaXRlcjsKIAog CS8qIE51bWJlciBvZiBzZWdtZW50cyBpbiB0aGlzIEJJTyBhZnRlcgogCSAqIHBoeXNpY2FsIGFk ZHJlc3MgY29hbGVzY2luZyBpcyBwZXJmb3JtZWQuCiAJICovCiAJdW5zaWduZWQgaW50CQliaV9w aHlzX3NlZ21lbnRzOwogCi0JdW5zaWduZWQgaW50CQliaV9zaXplOwkvKiByZXNpZHVhbCBJL08g Y291bnQgKi8KLQogCS8qCiAJICogVG8ga2VlcCB0cmFjayBvZiB0aGUgbWF4IHNlZ21lbnQgc2l6 ZSwgd2UgYWNjb3VudCBmb3IgdGhlCiAJICogc2l6ZXMgb2YgdGhlIGZpcnN0IGFuZCBsYXN0IG1l cmdlYWJsZSBzZWdtZW50cyBpbiB0aGlzIGJpby4KQEAgLTc0LDExICs3NywxMyBAQCBzdHJ1Y3Qg YmlvIHsKIAlzdHJ1Y3QgYmlvX2ludGVncml0eV9wYXlsb2FkICpiaV9pbnRlZ3JpdHk7ICAvKiBk YXRhIGludGVncml0eSAqLwogI2VuZGlmCiAKKwl1bnNpZ25lZCBzaG9ydAkJYmlfdmNudDsJLyog aG93IG1hbnkgYmlvX3ZlYydzICovCisKIAkvKgogCSAqIEV2ZXJ5dGhpbmcgc3RhcnRpbmcgd2l0 aCBiaV9tYXhfdmVjcyB3aWxsIGJlIHByZXNlcnZlZCBieSBiaW9fcmVzZXQoKQogCSAqLwogCi0J dW5zaWduZWQgaW50CQliaV9tYXhfdmVjczsJLyogbWF4IGJ2bF92ZWNzIHdlIGNhbiBob2xkICov CisJdW5zaWduZWQgc2hvcnQJCWJpX21heF92ZWNzOwkvKiBtYXggYnZsX3ZlY3Mgd2UgY2FuIGhv bGQgKi8KIAogCWF0b21pY190CQliaV9jbnQ7CQkvKiBwaW4gY291bnQgKi8KIApkaWZmIC0tZ2l0 IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvYmNhY2hlLmggYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9i Y2FjaGUuaAppbmRleCBlMmI5NTc2Li4wOTVjNmU0IDEwMDY0NAotLS0gYS9pbmNsdWRlL3RyYWNl L2V2ZW50cy9iY2FjaGUuaAorKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9iY2FjaGUuaApAQCAt MjQsMTAgKzI0LDEwIEBAIERFQ0xBUkVfRVZFTlRfQ0xBU1MoYmNhY2hlX3JlcXVlc3QsCiAJCV9f ZW50cnktPmRldgkJPSBiaW8tPmJpX2JkZXYtPmJkX2RldjsKIAkJX19lbnRyeS0+b3JpZ19tYWpv cgk9IGQtPmRpc2stPm1ham9yOwogCQlfX2VudHJ5LT5vcmlnX21pbm9yCT0gZC0+ZGlzay0+Zmly c3RfbWlub3I7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsKLQkJX19lbnRy eS0+b3JpZ19zZWN0b3IJPSBiaW8tPmJpX3NlY3RvciAtIDE2OwotCQlfX2VudHJ5LT5ucl9zZWN0 b3IJPSBiaW8tPmJpX3NpemUgPj4gOTsKLQkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBi aW8tPmJpX3J3LCBiaW8tPmJpX3NpemUpOworCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9p dGVyLmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+b3JpZ19zZWN0b3IJPSBiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yIC0gMTY7CisJCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpby0+YmlfaXRlci5iaV9zaXpl ID4+IDk7CisJCWJsa19maWxsX3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5i aV9pdGVyLmJpX3NpemUpOwogCSksCiAKIAlUUF9wcmludGsoIiVkLCVkICVzICVsbHUgKyAldSAo ZnJvbSAlZCwlZCBAICVsbHUpIiwKQEAgLTk5LDkgKzk5LDkgQEAgREVDTEFSRV9FVkVOVF9DTEFT UyhiY2FjaGVfYmlvLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50cnktPmRldgkJPSBiaW8t PmJpX2JkZXYtPmJkX2RldjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+Ymlfc2VjdG9yOwot CQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBiaW8tPmJpX3NpemUgPj4gOTsKLQkJYmxrX2ZpbGxfcndi cyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUpOworCQlfX2VudHJ5LT5z ZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+bnJfc2VjdG9yCT0g YmlvLT5iaV9pdGVyLmJpX3NpemUgPj4gOTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2Jz LCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJKSwKIAogCVRQX3ByaW50aygi JWQsJWQgICVzICVsbHUgKyAldSIsCkBAIC0xMzQsOSArMTM0LDkgQEAgVFJBQ0VfRVZFTlQoYmNh Y2hlX3JlYWQsCiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+Ymlf YmRldi0+YmRfZGV2OwotCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9zZWN0b3I7Ci0JCV9f ZW50cnktPm5yX3NlY3Rvcgk9IGJpby0+Ymlfc2l6ZSA+PiA5OwotCQlibGtfZmlsbF9yd2JzKF9f ZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+Ymlfc2l6ZSk7CisJCV9fZW50cnktPnNlY3Rv cgkJPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOworCQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBiaW8t PmJpX2l0ZXIuYmlfc2l6ZSA+PiA5OworCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJp by0+YmlfcncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAkJX19lbnRyeS0+Y2FjaGVfaGl0ID0g aGl0OwogCQlfX2VudHJ5LT5ieXBhc3MgPSBieXBhc3M7CiAJKSwKQEAgLTE2Miw5ICsxNjIsOSBA QCBUUkFDRV9FVkVOVChiY2FjaGVfd3JpdGUsCiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRy eS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRfZGV2OwotCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlv LT5iaV9zZWN0b3I7Ci0JCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpby0+Ymlfc2l6ZSA+PiA5Owot CQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+Ymlfc2l6ZSk7 CisJCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOworCQlfX2VudHJ5 LT5ucl9zZWN0b3IJPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA+PiA5OworCQlibGtfZmlsbF9yd2Jz KF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAkJX19l bnRyeS0+d3JpdGViYWNrID0gd3JpdGViYWNrOwogCQlfX2VudHJ5LT5ieXBhc3MgPSBieXBhc3M7 CiAJKSwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmggYi9pbmNsdWRl L3RyYWNlL2V2ZW50cy9ibG9jay5oCmluZGV4IDRjMjMwMWQuLmU3NmFlMTkgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmgKKysrIGIvaW5jbHVkZS90cmFjZS9ldmVudHMv YmxvY2suaApAQCAtMjQzLDkgKzI0Myw5IEBAIFRSQUNFX0VWRU5UKGJsb2NrX2Jpb19ib3VuY2Us CiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50cnktPmRldgkJPSBiaW8tPmJpX2JkZXYgPwogCQkJ CQkgIGJpby0+YmlfYmRldi0+YmRfZGV2IDogMDsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+ Ymlfc2VjdG9yOworCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsK IAkJX19lbnRyeS0+bnJfc2VjdG9yCT0gYmlvX3NlY3RvcnMoYmlvKTsKLQkJYmxrX2ZpbGxfcndi cyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUpOworCQlibGtfZmlsbF9y d2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAkJ bWVtY3B5KF9fZW50cnktPmNvbW0sIGN1cnJlbnQtPmNvbW0sIFRBU0tfQ09NTV9MRU4pOwogCSks CiAKQEAgLTI4MCwxMCArMjgwLDEwIEBAIFRSQUNFX0VWRU5UKGJsb2NrX2Jpb19jb21wbGV0ZSwK IAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlvLT5iaV9iZGV2LT5iZF9k ZXY7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+c2Vj dG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJp b19zZWN0b3JzKGJpbyk7CiAJCV9fZW50cnktPmVycm9yCQk9IGVycm9yOwotCQlibGtfZmlsbF9y d2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+Ymlfc2l6ZSk7CisJCWJsa19maWxs X3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwog CSksCiAKIAlUUF9wcmludGsoIiVkLCVkICVzICVsbHUgKyAldSBbJWRdIiwKQEAgLTMwOCw5ICsz MDgsOSBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX2Jpb19tZXJnZSwKIAogCVRQX2Zhc3Rf YXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlvLT5iaV9iZGV2LT5iZF9kZXY7Ci0JCV9fZW50 cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+ YmlfaXRlci5iaV9zZWN0b3I7CiAJCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJp byk7Ci0JCWJsa19maWxsX3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9z aXplKTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJp X2l0ZXIuYmlfc2l6ZSk7CiAJCW1lbWNweShfX2VudHJ5LT5jb21tLCBjdXJyZW50LT5jb21tLCBU QVNLX0NPTU1fTEVOKTsKIAkpLAogCkBAIC0zNzUsOSArMzc1LDkgQEAgVFJBQ0VfRVZFTlQoYmxv Y2tfYmlvX3F1ZXVlLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50cnktPmRldgkJPSBiaW8t PmJpX2JkZXYtPmJkX2RldjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+Ymlfc2VjdG9yOwor CQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAkJX19lbnRyeS0+ bnJfc2VjdG9yCT0gYmlvX3NlY3RvcnMoYmlvKTsKLQkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5y d2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUpOworCQlibGtfZmlsbF9yd2JzKF9fZW50cnkt PnJ3YnMsIGJpby0+YmlfcncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAkJbWVtY3B5KF9fZW50 cnktPmNvbW0sIGN1cnJlbnQtPmNvbW0sIFRBU0tfQ09NTV9MRU4pOwogCSksCiAKQEAgLTQwMyw3 ICs0MDMsNyBAQCBERUNMQVJFX0VWRU5UX0NMQVNTKGJsb2NrX2dldF9ycSwKIAogCVRQX2Zhc3Rf YXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlvID8gYmlvLT5iaV9iZGV2LT5iZF9kZXYgOiAw OwotCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvID8gYmlvLT5iaV9zZWN0b3IgOiAwOworCQlfX2Vu dHJ5LT5zZWN0b3IJCT0gYmlvID8gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA6IDA7CiAJCV9fZW50 cnktPm5yX3NlY3Rvcgk9IGJpbyA/IGJpb19zZWN0b3JzKGJpbykgOiAwOwogCQlibGtfZmlsbF9y d2JzKF9fZW50cnktPnJ3YnMsCiAJCQkgICAgICBiaW8gPyBiaW8tPmJpX3J3IDogMCwgX19lbnRy eS0+bnJfc2VjdG9yKTsKQEAgLTUzOCw5ICs1MzgsOSBAQCBUUkFDRV9FVkVOVChibG9ja19zcGxp dCwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlvLT5iaV9iZGV2LT5i ZF9kZXY7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+ c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCV9fZW50cnktPm5ld19zZWN0b3IJ PSBuZXdfc2VjdG9yOwotCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+Ymlfcncs IGJpby0+Ymlfc2l6ZSk7CisJCWJsa19maWxsX3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9y dywgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCQltZW1jcHkoX19lbnRyeS0+Y29tbSwgY3VycmVu dC0+Y29tbSwgVEFTS19DT01NX0xFTik7CiAJKSwKIApAQCAtNTc5LDExICs1NzksMTEgQEAgVFJB Q0VfRVZFTlQoYmxvY2tfYmlvX3JlbWFwLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50cnkt PmRldgkJPSBiaW8tPmJpX2JkZXYtPmJkX2RldjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+ Ymlfc2VjdG9yOworCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsK IAkJX19lbnRyeS0+bnJfc2VjdG9yCT0gYmlvX3NlY3RvcnMoYmlvKTsKIAkJX19lbnRyeS0+b2xk X2Rldgk9IGRldjsKIAkJX19lbnRyeS0+b2xkX3NlY3Rvcgk9IGZyb207Ci0JCWJsa19maWxsX3J3 YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9zaXplKTsKKwkJYmxrX2ZpbGxf cndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJ KSwKIAogCVRQX3ByaW50aygiJWQsJWQgJXMgJWxsdSArICV1IDwtICglZCwlZCkgJWxsdSIsCmRp ZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmggYi9pbmNsdWRlL3RyYWNlL2V2 ZW50cy9mMmZzLmgKaW5kZXggZTBkYzM1NS4uYmQzZWU0ZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS90 cmFjZS9ldmVudHMvZjJmcy5oCisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2YyZnMuaApAQCAt NjE2LDggKzYxNiw4IEBAIFRSQUNFX0VWRU5UKGYyZnNfZG9fc3VibWl0X2JpbywKIAkJX19lbnRy eS0+ZGV2CQk9IHNiLT5zX2RldjsKIAkJX19lbnRyeS0+YnR5cGUJCT0gYnR5cGU7CiAJCV9fZW50 cnktPnN5bmMJCT0gc3luYzsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+Ymlfc2VjdG9yOwot CQlfX2VudHJ5LT5zaXplCQk9IGJpby0+Ymlfc2l6ZTsKKwkJX19lbnRyeS0+c2VjdG9yCQk9IGJp by0+YmlfaXRlci5iaV9zZWN0b3I7CisJCV9fZW50cnktPnNpemUJCT0gYmlvLT5iaV9pdGVyLmJp X3NpemU7CiAJKSwKIAogCVRQX3ByaW50aygiZGV2ID0gKCVkLCVkKSwgdHlwZSA9ICVzLCBpbyA9 ICVzLCBzZWN0b3IgPSAlbGxkLCBzaXplID0gJXUiLApkaWZmIC0tZ2l0IGEva2VybmVsL3Bvd2Vy L2Jsb2NrX2lvLmMgYi9rZXJuZWwvcG93ZXIvYmxvY2tfaW8uYwppbmRleCBkMDlkZDEwLi45YTU4 YmMyIDEwMDY0NAotLS0gYS9rZXJuZWwvcG93ZXIvYmxvY2tfaW8uYworKysgYi9rZXJuZWwvcG93 ZXIvYmxvY2tfaW8uYwpAQCAtMzIsNyArMzIsNyBAQCBzdGF0aWMgaW50IHN1Ym1pdChpbnQgcncs IHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwKIAlzdHJ1Y3QgYmlv ICpiaW87CiAKIAliaW8gPSBiaW9fYWxsb2MoX19HRlBfV0FJVCB8IF9fR0ZQX0hJR0gsIDEpOwot CWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0 b3I7CiAJYmlvLT5iaV9iZGV2ID0gYmRldjsKIAliaW8tPmJpX2VuZF9pbyA9IGVuZF9zd2FwX2Jp b19yZWFkOwogCmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvYmxrdHJhY2UuYyBiL2tlcm5lbC90 cmFjZS9ibGt0cmFjZS5jCmluZGV4IGY3ODVhZWYuLmI0MThjYjAgMTAwNjQ0Ci0tLSBhL2tlcm5l bC90cmFjZS9ibGt0cmFjZS5jCisrKyBiL2tlcm5lbC90cmFjZS9ibGt0cmFjZS5jCkBAIC03ODEs OCArNzgxLDggQEAgc3RhdGljIHZvaWQgYmxrX2FkZF90cmFjZV9iaW8oc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbywKIAlpZiAoIWVycm9yICYmICFiaW9fZmxhZ2dlZChi aW8sIEJJT19VUFRPREFURSkpCiAJCWVycm9yID0gRUlPOwogCi0JX19ibGtfYWRkX3RyYWNlKGJ0 LCBiaW8tPmJpX3NlY3RvciwgYmlvLT5iaV9zaXplLCBiaW8tPmJpX3J3LCB3aGF0LAotCQkJZXJy b3IsIDAsIE5VTEwpOworCV9fYmxrX2FkZF90cmFjZShidCwgYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciwgYmlvLT5iaV9pdGVyLmJpX3NpemUsCisJCQliaW8tPmJpX3J3LCB3aGF0LCBlcnJvciwgMCwg TlVMTCk7CiB9CiAKIHN0YXRpYyB2b2lkIGJsa19hZGRfdHJhY2VfYmlvX2JvdW5jZSh2b2lkICpp Z25vcmUsCkBAIC04ODUsOCArODg1LDkgQEAgc3RhdGljIHZvaWQgYmxrX2FkZF90cmFjZV9zcGxp dCh2b2lkICppZ25vcmUsCiAJaWYgKGJ0KSB7CiAJCV9fYmU2NCBycGR1ID0gY3B1X3RvX2JlNjQo cGR1KTsKIAotCQlfX2Jsa19hZGRfdHJhY2UoYnQsIGJpby0+Ymlfc2VjdG9yLCBiaW8tPmJpX3Np emUsIGJpby0+YmlfcncsCi0JCQkJQkxLX1RBX1NQTElULCAhYmlvX2ZsYWdnZWQoYmlvLCBCSU9f VVBUT0RBVEUpLAorCQlfX2Jsa19hZGRfdHJhY2UoYnQsIGJpby0+YmlfaXRlci5iaV9zZWN0b3Is CisJCQkJYmlvLT5iaV9pdGVyLmJpX3NpemUsIGJpby0+YmlfcncsIEJMS19UQV9TUExJVCwKKwkJ CQkhYmlvX2ZsYWdnZWQoYmlvLCBCSU9fVVBUT0RBVEUpLAogCQkJCXNpemVvZihycGR1KSwgJnJw ZHUpOwogCX0KIH0KQEAgLTkxOCw5ICs5MTksOSBAQCBzdGF0aWMgdm9pZCBibGtfYWRkX3RyYWNl X2Jpb19yZW1hcCh2b2lkICppZ25vcmUsCiAJci5kZXZpY2VfdG8gICA9IGNwdV90b19iZTMyKGJp by0+YmlfYmRldi0+YmRfZGV2KTsKIAlyLnNlY3Rvcl9mcm9tID0gY3B1X3RvX2JlNjQoZnJvbSk7 CiAKLQlfX2Jsa19hZGRfdHJhY2UoYnQsIGJpby0+Ymlfc2VjdG9yLCBiaW8tPmJpX3NpemUsIGJp by0+YmlfcncsCi0JCQlCTEtfVEFfUkVNQVAsICFiaW9fZmxhZ2dlZChiaW8sIEJJT19VUFRPREFU RSksCi0JCQlzaXplb2YociksICZyKTsKKwlfX2Jsa19hZGRfdHJhY2UoYnQsIGJpby0+YmlfaXRl ci5iaV9zZWN0b3IsIGJpby0+YmlfaXRlci5iaV9zaXplLAorCQkJYmlvLT5iaV9ydywgQkxLX1RB X1JFTUFQLAorCQkJIWJpb19mbGFnZ2VkKGJpbywgQklPX1VQVE9EQVRFKSwgc2l6ZW9mKHIpLCAm cik7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvbW0vcGFnZV9pby5jIGIvbW0vcGFnZV9pby5jCmlu ZGV4IDhjNzlhNDcuLmYxNGVkZWQgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfaW8uYworKysgYi9tbS9w YWdlX2lvLmMKQEAgLTMxLDEzICszMSwxMyBAQCBzdGF0aWMgc3RydWN0IGJpbyAqZ2V0X3N3YXBf YmlvKGdmcF90IGdmcF9mbGFncywKIAogCWJpbyA9IGJpb19hbGxvYyhnZnBfZmxhZ3MsIDEpOwog CWlmIChiaW8pIHsKLQkJYmlvLT5iaV9zZWN0b3IgPSBtYXBfc3dhcF9wYWdlKHBhZ2UsICZiaW8t PmJpX2JkZXYpOwotCQliaW8tPmJpX3NlY3RvciA8PD0gUEFHRV9TSElGVCAtIDk7CisJCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBtYXBfc3dhcF9wYWdlKHBhZ2UsICZiaW8tPmJpX2JkZXYpOwor CQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8PSBQQUdFX1NISUZUIC0gOTsKIAkJYmlvLT5iaV9p b192ZWNbMF0uYnZfcGFnZSA9IHBhZ2U7CiAJCWJpby0+YmlfaW9fdmVjWzBdLmJ2X2xlbiA9IFBB R0VfU0laRTsKIAkJYmlvLT5iaV9pb192ZWNbMF0uYnZfb2Zmc2V0ID0gMDsKIAkJYmlvLT5iaV92 Y250ID0gMTsKLQkJYmlvLT5iaV9zaXplID0gUEFHRV9TSVpFOworCQliaW8tPmJpX2l0ZXIuYmlf c2l6ZSA9IFBBR0VfU0laRTsKIAkJYmlvLT5iaV9lbmRfaW8gPSBlbmRfaW87CiAJfQogCXJldHVy biBiaW87CkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgZW5kX3N3YXBfYmlvX3dyaXRlKHN0cnVjdCBi aW8gKmJpbywgaW50IGVycikKIAkJcHJpbnRrKEtFUk5fQUxFUlQgIldyaXRlLWVycm9yIG9uIHN3 YXAtZGV2aWNlICgldToldTolTHUpXG4iLAogCQkJCWltYWpvcihiaW8tPmJpX2JkZXYtPmJkX2lu b2RlKSwKIAkJCQlpbWlub3IoYmlvLT5iaV9iZGV2LT5iZF9pbm9kZSksCi0JCQkJKHVuc2lnbmVk IGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8t PmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJQ2xlYXJQYWdlUmVjbGFpbShwYWdlKTsKIAl9CiAJZW5k X3BhZ2Vfd3JpdGViYWNrKHBhZ2UpOwpAQCAtODAsNyArODAsNyBAQCB2b2lkIGVuZF9zd2FwX2Jp b19yZWFkKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycikKIAkJcHJpbnRrKEtFUk5fQUxFUlQgIlJl YWQtZXJyb3Igb24gc3dhcC1kZXZpY2UgKCV1OiV1OiVMdSlcbiIsCiAJCQkJaW1ham9yKGJpby0+ YmlfYmRldi0+YmRfaW5vZGUpLAogCQkJCWltaW5vcihiaW8tPmJpX2JkZXYtPmJkX2lub2RlKSwK LQkJCQkodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlfc2VjdG9yKTsKKwkJCQkodW5zaWduZWQg bG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCQlnb3RvIG91dDsKIAl9CiAKLS0g CjEuOC40LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyYmQtZGV2IG1haWxpbmcgbGlzdApkcmJkLWRldkBsaXN0cy5saW5iaXQuY29tCmh0dHA6Ly9s aXN0cy5saW5iaXQuY29tL21haWxtYW4vbGlzdGluZm8vZHJiZC1kZXYK