From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kent Overstreet Subject: [PATCH 04/22] block: Abstract out bvec iterator Date: Wed, 7 Aug 2013 14:54:13 -0700 Message-ID: <1375912471-5106-5-git-send-email-kmo@daterainc.com> References: <1375912471-5106-1-git-send-email-kmo@daterainc.com> Reply-To: device-mapper development Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1375912471-5106-1-git-send-email-kmo@daterainc.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com To: axboe@kernel.dk Cc: Herton Ronaldo Krzesinski , Mike Snitzer , Benjamin Herrenschmidt , Paul Mackerras , Pavel Machek , Joshua Morris , Geert Uytterhoeven , Mel Gorman , Nitin Gupta , Len Brown , Sage Weil , Joern Engel , Rusty Russell , Sunil Mushran , Kent Overstreet , Alexander Viro , Yehuda Sadeh , Geoff Levand , Jiri Kosina , linux-kernel@vger.kernel.org, Greg Kroah-Hartman List-Id: linux-raid.ids 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 LmRlPgotLS0KIERvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dCAgICAgIHwgIDcgKystCiBh cmNoL202OGsvZW11L25mYmxvY2suYyAgICAgICAgICAgICB8ICAyICstCiBhcmNoL3Bvd2VycGMv c3lzZGV2L2F4b25yYW0uYyAgICAgICB8ICAzICstCiBibG9jay9ibGstY29yZS5jICAgICAgICAg ICAgICAgICAgICB8IDM2ICsrKysrKystLS0tLS0tLQogYmxvY2svYmxrLWZsdXNoLmMgICAgICAg ICAgICAgICAgICAgfCAgMiArLQogYmxvY2svYmxrLWxpYi5jICAgICAgICAgICAgICAgICAgICAg fCAxMiArKy0tLQogYmxvY2svYmxrLW1hcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNiArLS0K IGJsb2NrL2Jsay1tZXJnZS5jICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGJsb2NrL2Jsay10 aHJvdHRsZS5jICAgICAgICAgICAgICAgIHwgMTQgKysrLS0tCiBibG9jay9lbGV2YXRvci5jICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2Jsb2NrL2FvZS9hb2VjbWQuYyAgICAg ICAgICB8ICA2ICstLQogZHJpdmVycy9ibG9jay9icmQuYyAgICAgICAgICAgICAgICAgfCAgNCAr LQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMgICAgfCAgMiArLQogZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfYml0bWFwLmMgICAgfCAgMiArLQogZHJpdmVycy9ibG9jay9kcmJkL2Ry YmRfcmVjZWl2ZXIuYyAgfCAgNiArLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jICAg ICAgIHwgIDYgKy0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaCAgICAgICB8ICAyICst CiBkcml2ZXJzL2Jsb2NrL2Zsb3BweS5jICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2Js b2NrL2xvb3AuYyAgICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2Jsb2NrL210aXAzMnh4 L210aXAzMnh4LmMgICB8ICA3ICstLQogZHJpdmVycy9ibG9jay9udm1lLWNvcmUuYyAgICAgICAg ICAgfCAyNSArKysrKy0tLS0tCiBkcml2ZXJzL2Jsb2NrL3BrdGNkdmQuYyAgICAgICAgICAgICB8 IDUxICsrKysrKysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9ibG9jay9wczNkaXNrLmMgICAgICAg ICAgICAgfCAgMiArLQogZHJpdmVycy9ibG9jay9yYmQuYyAgICAgICAgICAgICAgICAgfCAyMSAr KysrKy0tLS0KIGRyaXZlcnMvYmxvY2svcnN4eC9kZXYuYyAgICAgICAgICAgIHwgIDYgKy0tCiBk cml2ZXJzL2Jsb2NrL3JzeHgvZG1hLmMgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2Jsb2Nr L3VtZW0uYyAgICAgICAgICAgICAgICB8ICA5ICsrLS0KIGRyaXZlcnMvYmxvY2svdmlydGlvX2Js ay5jICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5j IHwgIDIgKy0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMgICAgICAgIHwgIDIgKy0KIGRy aXZlcnMvbWQvYmNhY2hlL2FsbG9jLmMgICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvbWQvYmNh Y2hlL2J0cmVlLmMgICAgICAgICAgIHwgMTcgKysrLS0tLQogZHJpdmVycy9tZC9iY2FjaGUvZGVi dWcuYyAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9iY2FjaGUvaW8uYyAgICAgICAgICAg ICAgfCAyNiArKysrKy0tLS0tLQogZHJpdmVycy9tZC9iY2FjaGUvam91cm5hbC5jICAgICAgICAg fCAxMiArKy0tLQogZHJpdmVycy9tZC9iY2FjaGUvbW92aW5nZ2MuYyAgICAgICAgfCAgNCArLQog ZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jICAgICAgICAgfCA1MCArKysrKysrKysrLS0tLS0t LS0tLQogZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYyAgICAgICAgICAgfCAxNiArKystLS0tCiBk cml2ZXJzL21kL2JjYWNoZS91dGlsLmMgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL21kL2Jj YWNoZS93cml0ZWJhY2suYyAgICAgICB8ICA2ICstLQogZHJpdmVycy9tZC9iY2FjaGUvd3JpdGVi YWNrLmggICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9kbS1iaW8tcmVjb3JkLmggICAgICAgICAg fCAxMiArKy0tLQogZHJpdmVycy9tZC9kbS1idWZpby5jICAgICAgICAgICAgICAgfCAgMiArLQog ZHJpdmVycy9tZC9kbS1jYWNoZS1wb2xpY3ktbXEuYyAgICAgfCAgNCArLQogZHJpdmVycy9tZC9k bS1jYWNoZS10YXJnZXQuYyAgICAgICAgfCAxNiArKysrLS0tCiBkcml2ZXJzL21kL2RtLWNyeXB0 LmMgICAgICAgICAgICAgICB8IDIwICsrKystLS0tCiBkcml2ZXJzL21kL2RtLWRlbGF5LmMgICAg ICAgICAgICAgICB8ICA3ICstLQogZHJpdmVycy9tZC9kbS1mbGFrZXkuYyAgICAgICAgICAgICAg fCAgNyArLS0KIGRyaXZlcnMvbWQvZG0taW8uYyAgICAgICAgICAgICAgICAgIHwgIDcgKy0tCiBk cml2ZXJzL21kL2RtLWxpbmVhci5jICAgICAgICAgICAgICB8ICAzICstCiBkcml2ZXJzL21kL2Rt LXJhaWQxLmMgICAgICAgICAgICAgICB8IDE2ICsrKy0tLS0KIGRyaXZlcnMvbWQvZG0tcmVnaW9u LWhhc2guYyAgICAgICAgIHwgIDMgKy0KIGRyaXZlcnMvbWQvZG0tc25hcC5jICAgICAgICAgICAg ICAgIHwgMTMgKysrLS0tCiBkcml2ZXJzL21kL2RtLXN0cmlwZS5jICAgICAgICAgICAgICB8IDEz ICsrKystLQogZHJpdmVycy9tZC9kbS1zd2l0Y2guYyAgICAgICAgICAgICAgfCAgNCArLQogZHJp dmVycy9tZC9kbS10aGluLmMgICAgICAgICAgICAgICAgfCAyMyArKysrKystLS0tCiBkcml2ZXJz L21kL2RtLXZlcml0eS5jICAgICAgICAgICAgICB8ICA5ICsrLS0KIGRyaXZlcnMvbWQvZG0uYyAg ICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKystLS0tCiBkcml2ZXJzL21kL2ZhdWx0eS5jICAg ICAgICAgICAgICAgICB8IDE5ICsrKysrLS0tCiBkcml2ZXJzL21kL2xpbmVhci5jICAgICAgICAg ICAgICAgICB8IDEyICsrLS0tCiBkcml2ZXJzL21kL21kLmMgICAgICAgICAgICAgICAgICAgICB8 IDEwICsrLS0KIGRyaXZlcnMvbWQvbXVsdGlwYXRoLmMgICAgICAgICAgICAgIHwgMTMgKysrLS0t CiBkcml2ZXJzL21kL3JhaWQwLmMgICAgICAgICAgICAgICAgICB8IDE2ICsrKystLS0KIGRyaXZl cnMvbWQvcmFpZDEuYyAgICAgICAgICAgICAgICAgIHwgNjMgKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQogZHJpdmVycy9tZC9yYWlkMTAuYyAgICAgICAgICAgICAgICAgfCA5MSArKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL21kL3JhaWQ1LmMgICAgICAgICAg ICAgICAgICB8IDcyICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3MzOTAv YmxvY2svZGNzc2Jsay5jICAgICAgICB8ICA1ICstCiBkcml2ZXJzL3MzOTAvYmxvY2sveHByYW0u YyAgICAgICAgICB8ICA5ICsrLS0KIGRyaXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jICAg IHwgIDIgKy0KIGRyaXZlcnMvc3RhZ2luZy96cmFtL3pyYW1fZHJ2LmMgICAgIHwgMTQgKysrLS0t CiBkcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9pYmxvY2suYyB8ICAyICstCiBmcy9iaW8taW50 ZWdyaXR5LmMgICAgICAgICAgICAgICAgICB8ICA4ICsrLS0KIGZzL2Jpby5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgNTYgKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGZzL2J0cmZzL2No ZWNrLWludGVncml0eS5jICAgICAgICAgIHwgMTAgKystLQogZnMvYnRyZnMvY29tcHJlc3Npb24u YyAgICAgICAgICAgICAgfCAxNyArKystLS0tCiBmcy9idHJmcy9leHRlbnRfaW8uYyAgICAgICAg ICAgICAgICB8IDE2ICsrKy0tLS0KIGZzL2J0cmZzL2ZpbGUtaXRlbS5jICAgICAgICAgICAgICAg IHwgMTUgKysrLS0tCiBmcy9idHJmcy9pbm9kZS5jICAgICAgICAgICAgICAgICAgICB8IDE5ICsr KystLS0tCiBmcy9idHJmcy9yYWlkNTYuYyAgICAgICAgICAgICAgICAgICB8IDIyICsrKystLS0t LQogZnMvYnRyZnMvc2NydWIuYyAgICAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMvYnRy ZnMvdm9sdW1lcy5jICAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMvYnVmZmVyLmMgICAg ICAgICAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMvZGlyZWN0LWlvLmMgICAgICAgICAg ICAgICAgICAgICAgfCAgNCArLQogZnMvZXh0NC9wYWdlLWlvLmMgICAgICAgICAgICAgICAgICAg fCAgNCArLQogZnMvZjJmcy9kYXRhLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMv ZjJmcy9zZWdtZW50LmMgICAgICAgICAgICAgICAgICAgfCAgMyArLQogZnMvZ2ZzMi9sb3BzLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvZ2ZzMi9vcHNfZnN0eXBlLmMgICAgICAg ICAgICAgICAgfCAgMiArLQogZnMvaGZzcGx1cy93cmFwcGVyLmMgICAgICAgICAgICAgICAgfCAg MiArLQogZnMvamZzL2pmc19sb2dtZ3IuYyAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMv amZzL2pmc19tZXRhcGFnZS5jICAgICAgICAgICAgICAgfCAgOSArKy0tCiBmcy9sb2dmcy9kZXZf YmRldi5jICAgICAgICAgICAgICAgICB8IDIwICsrKystLS0tCiBmcy9tcGFnZS5jICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9uZnMvYmxvY2tsYXlvdXQvYmxvY2tsYXlvdXQu YyAgICB8ICA5ICsrLS0KIGZzL25pbGZzMi9zZWdidWYuYyAgICAgICAgICAgICAgICAgIHwgIDMg Ky0KIGZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMgICAgICAgIHwgIDIgKy0KIGZzL3hmcy94 ZnNfYW9wcy5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL3hmcy94ZnNfYnVmLmMgICAg ICAgICAgICAgICAgICAgIHwgIDQgKy0KIGluY2x1ZGUvbGludXgvYmlvLmggICAgICAgICAgICAg ICAgIHwgMTYgKysrLS0tLQogaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaCAgICAgICAgICAgfCAx OSArKysrKy0tLQogaW5jbHVkZS90cmFjZS9ldmVudHMvYmNhY2hlLmggICAgICAgfCAyNiArKysr Ky0tLS0tLQogaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaCAgICAgICAgfCAyNiArKysrKy0t LS0tLQogaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oICAgICAgICAgfCAgNCArLQoga2VybmVs L3Bvd2VyL2Jsb2NrX2lvLmMgICAgICAgICAgICAgfCAgMiArLQoga2VybmVsL3RyYWNlL2Jsa3Ry YWNlLmMgICAgICAgICAgICAgfCAxNSArKystLS0KIG1tL3BhZ2VfaW8uYyAgICAgICAgICAgICAg ICAgICAgICAgIHwgMTAgKystLQogMTA2IGZpbGVzIGNoYW5nZWQsIDY4OSBpbnNlcnRpb25zKCsp LCA2MTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW9k b2MudHh0IGIvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW9kb2MudHh0CmluZGV4IDhkZjVlOGUuLjIx MDFlNzEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dAorKysgYi9E b2N1bWVudGF0aW9uL2Jsb2NrL2Jpb2RvYy50eHQKQEAgLTQ0NywxNCArNDQ3LDEzIEBAIHN0cnVj dCBiaW9fdmVjIHsKICAqIG1haW4gdW5pdCBvZiBJL08gZm9yIHRoZSBibG9jayBsYXllciBhbmQg bG93ZXIgbGF5ZXJzIChpZSBkcml2ZXJzKQogICovCiBzdHJ1Y3QgYmlvIHsKLSAgICAgICBzZWN0 b3JfdCAgICAgICAgICAgIGJpX3NlY3RvcjsKICAgICAgICBzdHJ1Y3QgYmlvICAgICAgICAgICpi aV9uZXh0OyAgICAvKiByZXF1ZXN0IHF1ZXVlIGxpbmsgKi8KICAgICAgICBzdHJ1Y3QgYmxvY2tf ZGV2aWNlICpiaV9iZGV2OwkvKiB0YXJnZXQgZGV2aWNlICovCiAgICAgICAgdW5zaWduZWQgbG9u ZyAgICAgICBiaV9mbGFnczsgICAgLyogc3RhdHVzLCBjb21tYW5kLCBldGMgKi8KICAgICAgICB1 bnNpZ25lZCBsb25nICAgICAgIGJpX3J3OyAgICAgICAvKiBsb3cgYml0czogci93LCBoaWdoOiBw cmlvcml0eSAqLwogCiAgICAgICAgdW5zaWduZWQgaW50CWJpX3ZjbnQ7ICAgICAvKiBob3cgbWF5 IGJpb192ZWMncyAqLwotICAgICAgIHVuc2lnbmVkIGludAliaV9pZHg7CQkvKiBjdXJyZW50IGlu ZGV4IGludG8gYmlvX3ZlYyBhcnJheSAqLworICAgICAgIHN0cnVjdCBidmVjX2l0ZXIJYmlfaXRl cjsJLyogY3VycmVudCBpbmRleCBpbnRvIGJpb192ZWMgYXJyYXkgKi8KIAogICAgICAgIHVuc2ln bmVkIGludAliaV9zaXplOyAgICAgLyogdG90YWwgc2l6ZSBpbiBieXRlcyAqLwogICAgICAgIHVu c2lnbmVkIHNob3J0IAliaV9waHlzX3NlZ21lbnRzOyAvKiBzZWdtZW50cyBhZnRlciBwaHlzYWRk ciBjb2FsZXNjZSovCkBAIC00ODAsNyArNDc5LDcgQEAgV2l0aCB0aGlzIG11bHRpcGFnZSBiaW8g ZGVzaWduOgogLSBDb2RlIHRoYXQgdHJhdmVyc2VzIHRoZSByZXEgbGlzdCBjYW4gZmluZCBhbGwg dGhlIHNlZ21lbnRzIG9mIGEgYmlvCiAgIGJ5IHVzaW5nIHJxX2Zvcl9lYWNoX3NlZ21lbnQuICBU aGlzIGhhbmRsZXMgdGhlIGZhY3QgdGhhdCBhIHJlcXVlc3QKICAgaGFzIG11bHRpcGxlIGJpb3Ms IGVhY2ggb2Ygd2hpY2ggY2FuIGhhdmUgbXVsdGlwbGUgc2VnbWVudHMuCi0tIERyaXZlcnMgd2hp Y2ggY2FuJ3QgcHJvY2VzcyBhIGxhcmdlIGJpbyBpbiBvbmUgc2hvdCBjYW4gdXNlIHRoZSBiaV9p ZHgKKy0gRHJpdmVycyB3aGljaCBjYW4ndCBwcm9jZXNzIGEgbGFyZ2UgYmlvIGluIG9uZSBzaG90 IGNhbiB1c2UgdGhlIGJpX2l0ZXIKICAgZmllbGQgdG8ga2VlcCB0cmFjayBvZiB0aGUgbmV4dCBi aW9fdmVjIGVudHJ5IHRvIHByb2Nlc3MuCiAgIChlLmcgYSAxTUIgYmlvX3ZlYyBuZWVkcyB0byBi ZSBoYW5kbGVkIGluIG1heCAxMjhrQiBjaHVua3MgZm9yIElERSkKICAgW1RCRDogU2hvdWxkIHBy ZWZlcmFibHkgYWxzbyBoYXZlIGEgYmlfdm9mZnNldCBhbmQgYmlfdmxlbiB0byBhdm9pZCBtb2Rp ZnlpbmcKQEAgLTU4OSw3ICs1ODgsNyBAQCBkcml2ZXIgc2hvdWxkIG5vdCBtb2RpZnkgdGhlc2Ug dmFsdWVzLiBUaGUgYmxvY2sgbGF5ZXIgc2V0cyB1cCB0aGUKIG5yX3NlY3RvcnMgYW5kIGN1cnJl bnRfbnJfc2VjdG9ycyBmaWVsZHMgKGJhc2VkIG9uIHRoZSBjb3JyZXNwb25kaW5nCiBoYXJkX3h4 eCB2YWx1ZXMgYW5kIHRoZSBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQpIGFuZCB1cGRhdGVz IGl0IG9uCiBldmVyeSB0cmFuc2ZlciB0aGF0IGludm9rZXMgZW5kX3RoYXRfcmVxdWVzdF9maXJz dC4gSXQgZG9lcyB0aGUgc2FtZSBmb3IgdGhlCi1idWZmZXIsIGJpbywgYmlvLT5iaV9pZHggZmll bGRzIHRvby4KK2J1ZmZlciwgYmlvLCBiaW8tPmJpX2l0ZXIgZmllbGRzIHRvby4KIAogVGhlIGJ1 ZmZlciBmaWVsZCBpcyBqdXN0IGEgdmlydHVhbCBhZGRyZXNzIG1hcHBpbmcgb2YgdGhlIGN1cnJl bnQgc2VnbWVudAogb2YgdGhlIGkvbyBidWZmZXIgaW4gY2FzZXMgd2hlcmUgdGhlIGJ1ZmZlciBy ZXNpZGVzIGluIGxvdy1tZW1vcnkuIEZvciBoaWdoCmRpZmYgLS1naXQgYS9hcmNoL202OGsvZW11 L25mYmxvY2suYyBiL2FyY2gvbTY4ay9lbXUvbmZibG9jay5jCmluZGV4IGUzMDExMzMuLjkwNzBk NmMgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9lbXUvbmZibG9jay5jCisrKyBiL2FyY2gvbTY4ay9l bXUvbmZibG9jay5jCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyB2b2lkIG5maGRfbWFrZV9yZXF1 ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxdWV1ZSwgc3RydWN0IGJpbyAqYmlvKQogCXN0cnVj dCBuZmhkX2RldmljZSAqZGV2ID0gcXVldWUtPnF1ZXVlZGF0YTsKIAlzdHJ1Y3QgYmlvX3ZlYyAq YnZlYzsKIAlpbnQgaSwgZGlyLCBsZW4sIHNoaWZ0OwotCXNlY3Rvcl90IHNlYyA9IGJpby0+Ymlf c2VjdG9yOworCXNlY3Rvcl90IHNlYyA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAKIAlkaXIg PSBiaW9fZGF0YV9kaXIoYmlvKTsKIAlzaGlmdCA9IGRldi0+YnNoaWZ0OwpkaWZmIC0tZ2l0IGEv YXJjaC9wb3dlcnBjL3N5c2Rldi9heG9ucmFtLmMgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2F4b25y YW0uYwppbmRleCAxYzE2MTQxLi5mMzNiY2JhIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvc3lz ZGV2L2F4b25yYW0uYworKysgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2F4b25yYW0uYwpAQCAtMTEz LDcgKzExMyw4IEBAIGF4b25fcmFtX21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cXVldWUsIHN0cnVjdCBiaW8gKmJpbykKIAl1bnNpZ25lZCBpbnQgdHJhbnNmZXJlZDsKIAl1bnNp Z25lZCBzaG9ydCBpZHg7CiAKLQlwaHlzX21lbSA9IGJhbmstPmlvX2FkZHIgKyAoYmlvLT5iaV9z ZWN0b3IgPDwgQVhPTl9SQU1fU0VDVE9SX1NISUZUKTsKKwlwaHlzX21lbSA9IGJhbmstPmlvX2Fk ZHIgKyAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PAorCQkJCSAgICBBWE9OX1JBTV9TRUNUT1Jf U0hJRlQpOwogCXBoeXNfZW5kID0gYmFuay0+aW9fYWRkciArIGJhbmstPnNpemU7CiAJdHJhbnNm ZXJlZCA9IDA7CiAJYmlvX2Zvcl9lYWNoX3NlZ21lbnQodmVjLCBiaW8sIGlkeCkgewpkaWZmIC0t Z2l0IGEvYmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmMKaW5kZXggOTNhMThkMS4u MGVjMTM0MDkgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1jb3JlLmMKKysrIGIvYmxvY2svYmxrLWNv cmUuYwpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyB2b2lkIHJlcV9iaW9fZW5kaW8oc3RydWN0 IHJlcXVlc3QgKnJxLCBzdHJ1Y3QgYmlvICpiaW8sCiAJYmlvX2FkdmFuY2UoYmlvLCBuYnl0ZXMp OwogCiAJLyogZG9uJ3QgYWN0dWFsbHkgZmluaXNoIGJpbyBpZiBpdCdzIHBhcnQgb2YgZmx1c2gg c2VxdWVuY2UgKi8KLQlpZiAoYmlvLT5iaV9zaXplID09IDAgJiYgIShycS0+Y21kX2ZsYWdzICYg UkVRX0ZMVVNIX1NFUSkpCisJaWYgKGJpby0+YmlfaXRlci5iaV9zaXplID09IDAgJiYgIShycS0+ Y21kX2ZsYWdzICYgUkVRX0ZMVVNIX1NFUSkpCiAJCWJpb19lbmRpbyhiaW8sIGVycm9yKTsKIH0K IApAQCAtMTMzMyw3ICsxMzMzLDcgQEAgdm9pZCBibGtfYWRkX3JlcXVlc3RfcGF5bG9hZChzdHJ1 Y3QgcmVxdWVzdCAqcnEsIHN0cnVjdCBwYWdlICpwYWdlLAogCWJpby0+YmlfaW9fdmVjLT5idl9v ZmZzZXQgPSAwOwogCWJpby0+YmlfaW9fdmVjLT5idl9sZW4gPSBsZW47CiAKLQliaW8tPmJpX3Np emUgPSBsZW47CisJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBsZW47CiAJYmlvLT5iaV92Y250ID0g MTsKIAliaW8tPmJpX3BoeXNfc2VnbWVudHMgPSAxOwogCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBz dGF0aWMgYm9vbCBiaW9fYXR0ZW1wdF9iYWNrX21lcmdlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgcmVxdWVzdCAqcmVxLAogCiAJcmVxLT5iaW90YWlsLT5iaV9uZXh0ID0gYmlvOwog CXJlcS0+YmlvdGFpbCA9IGJpbzsKLQlyZXEtPl9fZGF0YV9sZW4gKz0gYmlvLT5iaV9zaXplOwor CXJlcS0+X19kYXRhX2xlbiArPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAlyZXEtPmlvcHJpbyA9 IGlvcHJpb19iZXN0KHJlcS0+aW9wcmlvLCBiaW9fcHJpbyhiaW8pKTsKIAogCWRyaXZlX3N0YXRf YWNjdChyZXEsIDApOwpAQCAtMTM4Nyw4ICsxMzg3LDggQEAgc3RhdGljIGJvb2wgYmlvX2F0dGVt cHRfZnJvbnRfbWVyZ2Uoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCiAJICogbm90IHRvdWNoIHJl cS0+YnVmZmVyIGVpdGhlci4uLgogCSAqLwogCXJlcS0+YnVmZmVyID0gYmlvX2RhdGEoYmlvKTsK LQlyZXEtPl9fc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7Ci0JcmVxLT5fX2RhdGFfbGVuICs9IGJp by0+Ymlfc2l6ZTsKKwlyZXEtPl9fc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwly ZXEtPl9fZGF0YV9sZW4gKz0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAJcmVxLT5pb3ByaW8gPSBp b3ByaW9fYmVzdChyZXEtPmlvcHJpbywgYmlvX3ByaW8oYmlvKSk7CiAKIAlkcml2ZV9zdGF0X2Fj Y3QocmVxLCAwKTsKQEAgLTE0NTcsNyArMTQ1Nyw3IEBAIHZvaWQgaW5pdF9yZXF1ZXN0X2Zyb21f YmlvKHN0cnVjdCByZXF1ZXN0ICpyZXEsIHN0cnVjdCBiaW8gKmJpbykKIAkJcmVxLT5jbWRfZmxh Z3MgfD0gUkVRX0ZBSUxGQVNUX01BU0s7CiAKIAlyZXEtPmVycm9ycyA9IDA7Ci0JcmVxLT5fX3Nl Y3RvciA9IGJpby0+Ymlfc2VjdG9yOworCXJlcS0+X19zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yOwogCXJlcS0+aW9wcmlvID0gYmlvX3ByaW8oYmlvKTsKIAlibGtfcnFfYmlvX3ByZXAo cmVxLT5xLCByZXEsIGJpbyk7CiB9CkBAIC0xNTgzLDEyICsxNTgzLDEyIEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBibGtfcGFydGl0aW9uX3JlbWFwKHN0cnVjdCBiaW8gKmJpbykKIAlpZiAoYmlvX3Nl Y3RvcnMoYmlvKSAmJiBiZGV2ICE9IGJkZXYtPmJkX2NvbnRhaW5zKSB7CiAJCXN0cnVjdCBoZF9z dHJ1Y3QgKnAgPSBiZGV2LT5iZF9wYXJ0OwogCi0JCWJpby0+Ymlfc2VjdG9yICs9IHAtPnN0YXJ0 X3NlY3Q7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgKz0gcC0+c3RhcnRfc2VjdDsKIAkJYmlv LT5iaV9iZGV2ID0gYmRldi0+YmRfY29udGFpbnM7CiAKIAkJdHJhY2VfYmxvY2tfYmlvX3JlbWFw KGJkZXZfZ2V0X3F1ZXVlKGJpby0+YmlfYmRldiksIGJpbywKIAkJCQkgICAgICBiZGV2LT5iZF9k ZXYsCi0JCQkJICAgICAgYmlvLT5iaV9zZWN0b3IgLSBwLT5zdGFydF9zZWN0KTsKKwkJCQkgICAg ICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIC0gcC0+c3RhcnRfc2VjdCk7CiAJfQogfQogCkBAIC0x NjU0LDcgKzE2NTQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBiaW9fY2hlY2tfZW9kKHN0cnVjdCBi aW8gKmJpbywgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMpCiAJLyogVGVzdCBkZXZpY2Ugb3IgcGFy dGl0aW9uIHNpemUsIHdoZW4ga25vd24uICovCiAJbWF4c2VjdG9yID0gaV9zaXplX3JlYWQoYmlv LT5iaV9iZGV2LT5iZF9pbm9kZSkgPj4gOTsKIAlpZiAobWF4c2VjdG9yKSB7Ci0JCXNlY3Rvcl90 IHNlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCQlzZWN0b3JfdCBzZWN0b3IgPSBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yOwogCiAJCWlmIChtYXhzZWN0b3IgPCBucl9zZWN0b3JzIHx8IG1heHNlY3Rv ciAtIG5yX3NlY3RvcnMgPCBzZWN0b3IpIHsKIAkJCS8qCkBAIC0xNjkwLDcgKzE2OTAsNyBAQCBn ZW5lcmljX21ha2VfcmVxdWVzdF9jaGVja3Moc3RydWN0IGJpbyAqYmlvKQogCQkgICAgICAgImdl bmVyaWNfbWFrZV9yZXF1ZXN0OiBUcnlpbmcgdG8gYWNjZXNzICIKIAkJCSJub25leGlzdGVudCBi bG9jay1kZXZpY2UgJXMgKCVMdSlcbiIsCiAJCQliZGV2bmFtZShiaW8tPmJpX2JkZXYsIGIpLAot CQkJKGxvbmcgbG9uZykgYmlvLT5iaV9zZWN0b3IpOworCQkJKGxvbmcgbG9uZykgYmlvLT5iaV9p dGVyLmJpX3NlY3Rvcik7CiAJCWdvdG8gZW5kX2lvOwogCX0KIApAQCAtMTcwNCw5ICsxNzA0LDkg QEAgZ2VuZXJpY19tYWtlX3JlcXVlc3RfY2hlY2tzKHN0cnVjdCBiaW8gKmJpbykKIAl9CiAKIAlw YXJ0ID0gYmlvLT5iaV9iZGV2LT5iZF9wYXJ0OwotCWlmIChzaG91bGRfZmFpbF9yZXF1ZXN0KHBh cnQsIGJpby0+Ymlfc2l6ZSkgfHwKKwlpZiAoc2hvdWxkX2ZhaWxfcmVxdWVzdChwYXJ0LCBiaW8t PmJpX2l0ZXIuYmlfc2l6ZSkgfHwKIAkgICAgc2hvdWxkX2ZhaWxfcmVxdWVzdCgmcGFydF90b19k aXNrKHBhcnQpLT5wYXJ0MCwKLQkJCQliaW8tPmJpX3NpemUpKQorCQkJCWJpby0+YmlfaXRlci5i aV9zaXplKSkKIAkJZ290byBlbmRfaW87CiAKIAkvKgpAQCAtMTg2NSw3ICsxODY1LDcgQEAgdm9p ZCBzdWJtaXRfYmlvKGludCBydywgc3RydWN0IGJpbyAqYmlvKQogCQlpZiAocncgJiBXUklURSkg ewogCQkJY291bnRfdm1fZXZlbnRzKFBHUEdPVVQsIGNvdW50KTsKIAkJfSBlbHNlIHsKLQkJCXRh c2tfaW9fYWNjb3VudF9yZWFkKGJpby0+Ymlfc2l6ZSk7CisJCQl0YXNrX2lvX2FjY291bnRfcmVh ZChiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCQljb3VudF92bV9ldmVudHMoUEdQR0lOLCBjb3Vu dCk7CiAJCX0KIApAQCAtMTg3NCw3ICsxODc0LDcgQEAgdm9pZCBzdWJtaXRfYmlvKGludCBydywg c3RydWN0IGJpbyAqYmlvKQogCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzKCVkKTogJXMgYmxvY2sg JUx1IG9uICVzICgldSBzZWN0b3JzKVxuIiwKIAkJCWN1cnJlbnQtPmNvbW0sIHRhc2tfcGlkX25y KGN1cnJlbnQpLAogCQkJCShydyAmIFdSSVRFKSA/ICJXUklURSIgOiAiUkVBRCIsCi0JCQkJKHVu c2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3RvciwKKwkJCQkodW5zaWduZWQgbG9uZyBsb25n KWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJCQkJYmRldm5hbWUoYmlvLT5iaV9iZGV2LCBiKSwK IAkJCQljb3VudCk7CiAJCX0KQEAgLTIwMDcsNyArMjAwNyw3IEBAIHVuc2lnbmVkIGludCBibGtf cnFfZXJyX2J5dGVzKGNvbnN0IHN0cnVjdCByZXF1ZXN0ICpycSkKIAlmb3IgKGJpbyA9IHJxLT5i aW87IGJpbzsgYmlvID0gYmlvLT5iaV9uZXh0KSB7CiAJCWlmICgoYmlvLT5iaV9ydyAmIGZmKSAh PSBmZikKIAkJCWJyZWFrOwotCQlieXRlcyArPSBiaW8tPmJpX3NpemU7CisJCWJ5dGVzICs9IGJp by0+YmlfaXRlci5iaV9zaXplOwogCX0KIAogCS8qIHRoaXMgY291bGQgbGVhZCB0byBpbmZpbml0 ZSBsb29wICovCkBAIC0yMzM1LDkgKzIzMzUsOSBAQCBib29sIGJsa191cGRhdGVfcmVxdWVzdChz dHJ1Y3QgcmVxdWVzdCAqcmVxLCBpbnQgZXJyb3IsIHVuc2lnbmVkIGludCBucl9ieXRlcykKIAl0 b3RhbF9ieXRlcyA9IDA7CiAJd2hpbGUgKHJlcS0+YmlvKSB7CiAJCXN0cnVjdCBiaW8gKmJpbyA9 IHJlcS0+YmlvOwotCQl1bnNpZ25lZCBiaW9fYnl0ZXMgPSBtaW4oYmlvLT5iaV9zaXplLCBucl9i eXRlcyk7CisJCXVuc2lnbmVkIGJpb19ieXRlcyA9IG1pbihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSwg bnJfYnl0ZXMpOwogCi0JCWlmIChiaW9fYnl0ZXMgPT0gYmlvLT5iaV9zaXplKQorCQlpZiAoYmlv X2J5dGVzID09IGJpby0+YmlfaXRlci5iaV9zaXplKQogCQkJcmVxLT5iaW8gPSBiaW8tPmJpX25l eHQ7CiAKIAkJcmVxX2Jpb19lbmRpbyhyZXEsIGJpbywgYmlvX2J5dGVzLCBlcnJvcik7CkBAIC0y Njg2LDcgKzI2ODYsNyBAQCB2b2lkIGJsa19ycV9iaW9fcHJlcChzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSwgc3RydWN0IHJlcXVlc3QgKnJxLAogCQlycS0+bnJfcGh5c19zZWdtZW50cyA9IGJpb19w aHlzX3NlZ21lbnRzKHEsIGJpbyk7CiAJCXJxLT5idWZmZXIgPSBiaW9fZGF0YShiaW8pOwogCX0K LQlycS0+X19kYXRhX2xlbiA9IGJpby0+Ymlfc2l6ZTsKKwlycS0+X19kYXRhX2xlbiA9IGJpby0+ YmlfaXRlci5iaV9zaXplOwogCXJxLT5iaW8gPSBycS0+YmlvdGFpbCA9IGJpbzsKIAogCWlmIChi aW8tPmJpX2JkZXYpCmRpZmYgLS1naXQgYS9ibG9jay9ibGstZmx1c2guYyBiL2Jsb2NrL2Jsay1m bHVzaC5jCmluZGV4IGNjMmI4MjcuLjMyNDg5OTggMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1mbHVz aC5jCisrKyBiL2Jsb2NrL2Jsay1mbHVzaC5jCkBAIC00NDQsNyArNDQ0LDcgQEAgaW50IGJsa2Rl dl9pc3N1ZV9mbHVzaChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBnZnBfdCBnZnBfbWFzaywK IAkgKiBjb3BpZWQgZnJvbSBibGtfcnFfcG9zKHJxKS4KIAkgKi8KIAlpZiAoZXJyb3Jfc2VjdG9y KQotCQkqZXJyb3Jfc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7CisJCSplcnJvcl9zZWN0b3IgPSBi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCiAJaWYgKCFiaW9fZmxhZ2dlZChiaW8sIEJJT19VUFRP REFURSkpCiAJCXJldCA9IC1FSU87CmRpZmYgLS1naXQgYS9ibG9jay9ibGstbGliLmMgYi9ibG9j ay9ibGstbGliLmMKaW5kZXggZDZmNTBkNS4uMzI1MDYyMCAxMDA2NDQKLS0tIGEvYmxvY2svYmxr LWxpYi5jCisrKyBiL2Jsb2NrL2Jsay1saWIuYwpAQCAtMTEwLDEyICsxMTAsMTIgQEAgaW50IGJs a2Rldl9pc3N1ZV9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNl Y3RvciwKIAkJCXJlcV9zZWN0cyA9IGVuZF9zZWN0IC0gc2VjdG9yOwogCQl9CiAKLQkJYmlvLT5i aV9zZWN0b3IgPSBzZWN0b3I7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJ CWJpby0+YmlfZW5kX2lvID0gYmlvX2JhdGNoX2VuZF9pbzsKIAkJYmlvLT5iaV9iZGV2ID0gYmRl djsKIAkJYmlvLT5iaV9wcml2YXRlID0gJmJiOwogCi0JCWJpby0+Ymlfc2l6ZSA9IHJlcV9zZWN0 cyA8PCA5OworCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IHJlcV9zZWN0cyA8PCA5OwogCQlucl9z ZWN0cyAtPSByZXFfc2VjdHM7CiAJCXNlY3RvciA9IGVuZF9zZWN0OwogCkBAIC0xNzYsNyArMTc2 LDcgQEAgaW50IGJsa2Rldl9pc3N1ZV93cml0ZV9zYW1lKHN0cnVjdCBibG9ja19kZXZpY2UgKmJk ZXYsIHNlY3Rvcl90IHNlY3RvciwKIAkJCWJyZWFrOwogCQl9CiAKLQkJYmlvLT5iaV9zZWN0b3Ig PSBzZWN0b3I7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJCWJpby0+Ymlf ZW5kX2lvID0gYmlvX2JhdGNoX2VuZF9pbzsKIAkJYmlvLT5iaV9iZGV2ID0gYmRldjsKIAkJYmlv LT5iaV9wcml2YXRlID0gJmJiOwpAQCAtMTg2LDExICsxODYsMTEgQEAgaW50IGJsa2Rldl9pc3N1 ZV93cml0ZV9zYW1lKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwK IAkJYmlvLT5iaV9pb192ZWMtPmJ2X2xlbiA9IGJkZXZfbG9naWNhbF9ibG9ja19zaXplKGJkZXYp OwogCiAJCWlmIChucl9zZWN0cyA+IG1heF93cml0ZV9zYW1lX3NlY3RvcnMpIHsKLQkJCWJpby0+ Ymlfc2l6ZSA9IG1heF93cml0ZV9zYW1lX3NlY3RvcnMgPDwgOTsKKwkJCWJpby0+YmlfaXRlci5i aV9zaXplID0gbWF4X3dyaXRlX3NhbWVfc2VjdG9ycyA8PCA5OwogCQkJbnJfc2VjdHMgLT0gbWF4 X3dyaXRlX3NhbWVfc2VjdG9yczsKIAkJCXNlY3RvciArPSBtYXhfd3JpdGVfc2FtZV9zZWN0b3Jz OwogCQl9IGVsc2UgewotCQkJYmlvLT5iaV9zaXplID0gbnJfc2VjdHMgPDwgOTsKKwkJCWJpby0+ YmlfaXRlci5iaV9zaXplID0gbnJfc2VjdHMgPDwgOTsKIAkJCW5yX3NlY3RzID0gMDsKIAkJfQog CkBAIC0yNDIsNyArMjQyLDcgQEAgaW50IF9fYmxrZGV2X2lzc3VlX3plcm9vdXQoc3RydWN0IGJs b2NrX2RldmljZSAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yLAogCQkJYnJlYWs7CiAJCX0KIAotCQli aW8tPmJpX3NlY3RvciA9IHNlY3RvcjsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3Rv cjsKIAkJYmlvLT5iaV9iZGV2ICAgPSBiZGV2OwogCQliaW8tPmJpX2VuZF9pbyA9IGJpb19iYXRj aF9lbmRfaW87CiAJCWJpby0+YmlfcHJpdmF0ZSA9ICZiYjsKZGlmZiAtLWdpdCBhL2Jsb2NrL2Js ay1tYXAuYyBiL2Jsb2NrL2Jsay1tYXAuYwppbmRleCA2MjNlMWNkLi5hZTRhZTEwIDEwMDY0NAot LS0gYS9ibG9jay9ibGstbWFwLmMKKysrIGIvYmxvY2svYmxrLW1hcC5jCkBAIC0yMCw3ICsyMCw3 IEBAIGludCBibGtfcnFfYXBwZW5kX2JpbyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0 IHJlcXVlc3QgKnJxLAogCQlycS0+YmlvdGFpbC0+YmlfbmV4dCA9IGJpbzsKIAkJcnEtPmJpb3Rh aWwgPSBiaW87CiAKLQkJcnEtPl9fZGF0YV9sZW4gKz0gYmlvLT5iaV9zaXplOworCQlycS0+X19k YXRhX2xlbiArPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC03 Niw3ICs3Niw3IEBAIHN0YXRpYyBpbnQgX19ibGtfcnFfbWFwX3VzZXIoc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEsIHN0cnVjdCByZXF1ZXN0ICpycSwKIAogCXJldCA9IGJsa19ycV9hcHBlbmRfYmlv KHEsIHJxLCBiaW8pOwogCWlmICghcmV0KQotCQlyZXR1cm4gYmlvLT5iaV9zaXplOworCQlyZXR1 cm4gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAkvKiBpZiBpdCB3YXMgYm91Y25lZCB3ZSBtdXN0 IGNhbGwgdGhlIGVuZCBpbyBmdW5jdGlvbiAqLwogCWJpb19lbmRpbyhiaW8sIDApOwpAQCAtMjIw LDcgKzIyMCw3IEBAIGludCBibGtfcnFfbWFwX3VzZXJfaW92KHN0cnVjdCByZXF1ZXN0X3F1ZXVl ICpxLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsCiAJaWYgKElTX0VSUihiaW8pKQogCQlyZXR1cm4gUFRS X0VSUihiaW8pOwogCi0JaWYgKGJpby0+Ymlfc2l6ZSAhPSBsZW4pIHsKKwlpZiAoYmlvLT5iaV9p dGVyLmJpX3NpemUgIT0gbGVuKSB7CiAJCS8qCiAJCSAqIEdyYWIgYW4gZXh0cmEgcmVmZXJlbmNl IHRvIHRoaXMgYmlvLCBhcyBiaW9fdW5tYXBfdXNlcigpCiAJCSAqIGV4cGVjdHMgdG8gYmUgYWJs ZSB0byBkcm9wIGl0IHR3aWNlIGFzIGl0IGhhcHBlbnMgb24gdGhlCmRpZmYgLS1naXQgYS9ibG9j ay9ibGstbWVyZ2UuYyBiL2Jsb2NrL2Jsay1tZXJnZS5jCmluZGV4IDVmMjQ0ODIuLjc3NTBiMjUg MTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tZXJnZS5jCisrKyBiL2Jsb2NrL2Jsay1tZXJnZS5jCkBA IC01MzIsOSArNTMyLDkgQEAgYm9vbCBibGtfcnFfbWVyZ2Vfb2soc3RydWN0IHJlcXVlc3QgKnJx LCBzdHJ1Y3QgYmlvICpiaW8pCiAKIGludCBibGtfdHJ5X21lcmdlKHN0cnVjdCByZXF1ZXN0ICpy cSwgc3RydWN0IGJpbyAqYmlvKQogewotCWlmIChibGtfcnFfcG9zKHJxKSArIGJsa19ycV9zZWN0 b3JzKHJxKSA9PSBiaW8tPmJpX3NlY3RvcikKKwlpZiAoYmxrX3JxX3BvcyhycSkgKyBibGtfcnFf c2VjdG9ycyhycSkgPT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcikKIAkJcmV0dXJuIEVMRVZBVE9S X0JBQ0tfTUVSR0U7Ci0JZWxzZSBpZiAoYmxrX3JxX3BvcyhycSkgLSBiaW9fc2VjdG9ycyhiaW8p ID09IGJpby0+Ymlfc2VjdG9yKQorCWVsc2UgaWYgKGJsa19ycV9wb3MocnEpIC0gYmlvX3NlY3Rv cnMoYmlvKSA9PSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKQogCQlyZXR1cm4gRUxFVkFUT1JfRlJP TlRfTUVSR0U7CiAJcmV0dXJuIEVMRVZBVE9SX05PX01FUkdFOwogfQpkaWZmIC0tZ2l0IGEvYmxv Y2svYmxrLXRocm90dGxlLmMgYi9ibG9jay9ibGstdGhyb3R0bGUuYwppbmRleCAwOGEzMmRmLi4x YjFiZWEwIDEwMDY0NAotLS0gYS9ibG9jay9ibGstdGhyb3R0bGUuYworKysgYi9ibG9jay9ibGst dGhyb3R0bGUuYwpAQCAtODY3LDE0ICs4NjcsMTQgQEAgc3RhdGljIGJvb2wgdGdfd2l0aF9pbl9i cHNfbGltaXQoc3RydWN0IHRocm90bF9ncnAgKnRnLCBzdHJ1Y3QgYmlvICpiaW8sCiAJZG9fZGl2 KHRtcCwgSFopOwogCWJ5dGVzX2FsbG93ZWQgPSB0bXA7CiAKLQlpZiAodGctPmJ5dGVzX2Rpc3Bb cnddICsgYmlvLT5iaV9zaXplIDw9IGJ5dGVzX2FsbG93ZWQpIHsKKwlpZiAodGctPmJ5dGVzX2Rp c3BbcnddICsgYmlvLT5iaV9pdGVyLmJpX3NpemUgPD0gYnl0ZXNfYWxsb3dlZCkgewogCQlpZiAo d2FpdCkKIAkJCSp3YWl0ID0gMDsKIAkJcmV0dXJuIDE7CiAJfQogCiAJLyogQ2FsYyBhcHByb3gg dGltZSB0byBkaXNwYXRjaCAqLwotCWV4dHJhX2J5dGVzID0gdGctPmJ5dGVzX2Rpc3BbcnddICsg YmlvLT5iaV9zaXplIC0gYnl0ZXNfYWxsb3dlZDsKKwlleHRyYV9ieXRlcyA9IHRnLT5ieXRlc19k aXNwW3J3XSArIGJpby0+YmlfaXRlci5iaV9zaXplIC0gYnl0ZXNfYWxsb3dlZDsKIAlqaWZmeV93 YWl0ID0gZGl2NjRfdTY0KGV4dHJhX2J5dGVzICogSFosIHRnLT5icHNbcnddKTsKIAogCWlmICgh amlmZnlfd2FpdCkKQEAgLTk3Nyw3ICs5NzcsNyBAQCBzdGF0aWMgdm9pZCB0aHJvdGxfY2hhcmdl X2JpbyhzdHJ1Y3QgdGhyb3RsX2dycCAqdGcsIHN0cnVjdCBiaW8gKmJpbykKIAlib29sIHJ3ID0g YmlvX2RhdGFfZGlyKGJpbyk7CiAKIAkvKiBDaGFyZ2UgdGhlIGJpbyB0byB0aGUgZ3JvdXAgKi8K LQl0Zy0+Ynl0ZXNfZGlzcFtyd10gKz0gYmlvLT5iaV9zaXplOworCXRnLT5ieXRlc19kaXNwW3J3 XSArPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAl0Zy0+aW9fZGlzcFtyd10rKzsKIAogCS8qCkBA IC05OTMsOCArOTkzLDggQEAgc3RhdGljIHZvaWQgdGhyb3RsX2NoYXJnZV9iaW8oc3RydWN0IHRo cm90bF9ncnAgKnRnLCBzdHJ1Y3QgYmlvICpiaW8pCiAJICovCiAJaWYgKCEoYmlvLT5iaV9ydyAm IFJFUV9USFJPVFRMRUQpKSB7CiAJCWJpby0+YmlfcncgfD0gUkVRX1RIUk9UVExFRDsKLQkJdGhy b3RsX3VwZGF0ZV9kaXNwYXRjaF9zdGF0cyh0Z190b19ibGtnKHRnKSwgYmlvLT5iaV9zaXplLAot CQkJCQkgICAgIGJpby0+YmlfcncpOworCQl0aHJvdGxfdXBkYXRlX2Rpc3BhdGNoX3N0YXRzKHRn X3RvX2Jsa2codGcpLAorCQkJCQkgICAgIGJpby0+YmlfaXRlci5iaV9zaXplLCBiaW8tPmJpX3J3 KTsKIAl9CiB9CiAKQEAgLTE0OTksNyArMTQ5OSw3IEBAIGJvb2wgYmxrX3Rocm90bF9iaW8oc3Ry dWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAodGcpIHsKIAkJaWYg KCF0Zy0+aGFzX3J1bGVzW3J3XSkgewogCQkJdGhyb3RsX3VwZGF0ZV9kaXNwYXRjaF9zdGF0cyh0 Z190b19ibGtnKHRnKSwKLQkJCQkJCSAgICAgYmlvLT5iaV9zaXplLCBiaW8tPmJpX3J3KTsKKwkJ CQkJYmlvLT5iaV9pdGVyLmJpX3NpemUsIGJpby0+YmlfcncpOwogCQkJZ290byBvdXRfdW5sb2Nr X3JjdTsKIAkJfQogCX0KQEAgLTE1NTUsNyArMTU1NSw3IEBAIGJvb2wgYmxrX3Rocm90bF9iaW8o c3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkvKiBvdXQtb2YtbGlt aXQsIHF1ZXVlIHRvIEB0ZyAqLwogCXRocm90bF9sb2coc3EsICJbJWNdIGJpby4gYmRpc3A9JWxs dSBzej0ldSBicHM9JWxsdSBpb2Rpc3A9JXUgaW9wcz0ldSBxdWV1ZWQ9JWQvJWQiLAogCQkgICBy dyA9PSBSRUFEID8gJ1InIDogJ1cnLAotCQkgICB0Zy0+Ynl0ZXNfZGlzcFtyd10sIGJpby0+Ymlf c2l6ZSwgdGctPmJwc1tyd10sCisJCSAgIHRnLT5ieXRlc19kaXNwW3J3XSwgYmlvLT5iaV9pdGVy LmJpX3NpemUsIHRnLT5icHNbcnddLAogCQkgICB0Zy0+aW9fZGlzcFtyd10sIHRnLT5pb3BzW3J3 XSwKIAkJICAgc3EtPm5yX3F1ZXVlZFtSRUFEXSwgc3EtPm5yX3F1ZXVlZFtXUklURV0pOwogCmRp ZmYgLS1naXQgYS9ibG9jay9lbGV2YXRvci5jIGIvYmxvY2svZWxldmF0b3IuYwppbmRleCA2Njgz OTRkLi44MDNlODU1IDEwMDY0NAotLS0gYS9ibG9jay9lbGV2YXRvci5jCisrKyBiL2Jsb2NrL2Vs ZXZhdG9yLmMKQEAgLTQzNCw3ICs0MzQsNyBAQCBpbnQgZWx2X21lcmdlKHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBzdHJ1Y3QgcmVxdWVzdCAqKnJlcSwgc3RydWN0IGJpbyAqYmlvKQogCS8qCiAJ ICogU2VlIGlmIG91ciBoYXNoIGxvb2t1cCBjYW4gZmluZCBhIHBvdGVudGlhbCBiYWNrbWVyZ2Uu CiAJICovCi0JX19ycSA9IGVsdl9ycWhhc2hfZmluZChxLCBiaW8tPmJpX3NlY3Rvcik7CisJX19y cSA9IGVsdl9ycWhhc2hfZmluZChxLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAlpZiAoX19y cSAmJiBlbHZfcnFfbWVyZ2Vfb2soX19ycSwgYmlvKSkgewogCQkqcmVxID0gX19ycTsKIAkJcmV0 dXJuIEVMRVZBVE9SX0JBQ0tfTUVSR0U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2FvZS9h b2VjbWQuYyBiL2RyaXZlcnMvYmxvY2svYW9lL2FvZWNtZC5jCmluZGV4IDk5Y2I5NDQuLjNmMWEx OTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svYW9lL2FvZWNtZC5jCisrKyBiL2RyaXZlcnMv YmxvY2svYW9lL2FvZWNtZC5jCkBAIC05MzYsOCArOTM2LDggQEAgYnVmaW5pdChzdHJ1Y3QgYnVm ICpidWYsIHN0cnVjdCByZXF1ZXN0ICpycSwgc3RydWN0IGJpbyAqYmlvKQogCW1lbXNldChidWYs IDAsIHNpemVvZigqYnVmKSk7CiAJYnVmLT5ycSA9IHJxOwogCWJ1Zi0+YmlvID0gYmlvOwotCWJ1 Zi0+cmVzaWQgPSBiaW8tPmJpX3NpemU7Ci0JYnVmLT5zZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsK KwlidWYtPnJlc2lkID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CisJYnVmLT5zZWN0b3IgPSBiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yOwogCWJpb19wYWdlaW5jKGJpbyk7CiAJYnVmLT5idiA9IGJpb19p b3ZlYyhiaW8pOwogCWJ1Zi0+YnZfcmVzaWQgPSBidWYtPmJ2LT5idl9sZW47CkBAIC0xMTU5LDcg KzExNTksNyBAQCBhb2VfZW5kX3JlcXVlc3Qoc3RydWN0IGFvZWRldiAqZCwgc3RydWN0IHJlcXVl c3QgKnJxLCBpbnQgZmFzdGZhaWwpCiAJZG8gewogCQliaW8gPSBycS0+YmlvOwogCQlib2sgPSAh ZmFzdGZhaWwgJiYgdGVzdF9iaXQoQklPX1VQVE9EQVRFLCAmYmlvLT5iaV9mbGFncyk7Ci0JfSB3 aGlsZSAoX19ibGtfZW5kX3JlcXVlc3QocnEsIGJvayA/IDAgOiAtRUlPLCBiaW8tPmJpX3NpemUp KTsKKwl9IHdoaWxlIChfX2Jsa19lbmRfcmVxdWVzdChycSwgYm9rID8gMCA6IC1FSU8sIGJpby0+ YmlfaXRlci5iaV9zaXplKSk7CiAKIAkvKiBjZi4gaHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNi8x MC8zMS8yOCAqLwogCWlmICghZmFzdGZhaWwpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2Jy ZC5jIGIvZHJpdmVycy9ibG9jay9icmQuYwppbmRleCA5YmY0MzcxLi5lMjY5NTMyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2Jsb2NrL2JyZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svYnJkLmMKQEAgLTMz MywxMyArMzMzLDEzIEBAIHN0YXRpYyB2b2lkIGJyZF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVl c3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlpbnQgaTsKIAlpbnQgZXJyID0gLUVJTzsK IAotCXNlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCXNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9z ZWN0b3I7CiAJaWYgKGJpb19lbmRfc2VjdG9yKGJpbykgPiBnZXRfY2FwYWNpdHkoYmRldi0+YmRf ZGlzaykpCiAJCWdvdG8gb3V0OwogCiAJaWYgKHVubGlrZWx5KGJpby0+YmlfcncgJiBSRVFfRElT Q0FSRCkpIHsKIAkJZXJyID0gMDsKLQkJZGlzY2FyZF9mcm9tX2JyZChicmQsIHNlY3RvciwgYmlv LT5iaV9zaXplKTsKKwkJZGlzY2FyZF9mcm9tX2JyZChicmQsIHNlY3RvciwgYmlvLT5iaV9pdGVy LmJpX3NpemUpOwogCQlnb3RvIG91dDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sv ZHJiZC9kcmJkX2FjdGxvZy5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKaW5k ZXggMjhjNzNjYS4uYTliMTNmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRf YWN0bG9nLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKQEAgLTE1OSw3 ICsxNTksNyBAQCBzdGF0aWMgaW50IF9kcmJkX21kX3N5bmNfcGFnZV9pbyhzdHJ1Y3QgZHJiZF9j b25mICptZGV2LAogCiAJYmlvID0gYmlvX2FsbG9jX2RyYmQoR0ZQX05PSU8pOwogCWJpby0+Ymlf YmRldiA9IGJkZXYtPm1kX2JkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3I7CisJYmlvLT5i aV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAllcnIgPSAtRUlPOwogCWlmIChiaW9fYWRkX3Bh Z2UoYmlvLCBwYWdlLCBzaXplLCAwKSAhPSBzaXplKQogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2Ry YmRfYml0bWFwLmMKaW5kZXggNjRmYmI4My4uZDBkODQ3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfYml0bWFwLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0 bWFwLmMKQEAgLTEwMjgsNyArMTAyOCw3IEBAIHN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMo c3RydWN0IGJtX2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIsIGludCBydykgX19tdXN0CiAJfSBl bHNlCiAJCXBhZ2UgPSBiLT5ibV9wYWdlc1twYWdlX25yXTsKIAliaW8tPmJpX2JkZXYgPSBtZGV2 LT5sZGV2LT5tZF9iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gb25fZGlza19zZWN0b3I7CisJYmlv LT5iaV9pdGVyLmJpX3NlY3RvciA9IG9uX2Rpc2tfc2VjdG9yOwogCS8qIGJpb19hZGRfcGFnZSBv ZiBhIHNpbmdsZSBwYWdlIHRvIGFuIGVtcHR5IGJpbyB3aWxsIGFsd2F5cyBzdWNjZWVkLAogCSAq IGFjY29yZGluZyB0byBhcGkuICBEbyB3ZSB3YW50IHRvIGFzc2VydCB0aGF0PyAqLwogCWJpb19h ZGRfcGFnZShiaW8sIHBhZ2UsIGxlbiwgMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2Ry YmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwpp bmRleCBjYzI5Y2QzLi5jZjZkMDcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJi ZF9yZWNlaXZlci5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAg LTEzMzMsNyArMTMzMyw3IEBAIG5leHRfYmlvOgogCQlnb3RvIGZhaWw7CiAJfQogCS8qID4gcGVl cl9yZXEtPmkuc2VjdG9yLCB1bmxlc3MgdGhpcyBpcyB0aGUgZmlyc3QgYmlvICovCi0JYmlvLT5i aV9zZWN0b3IgPSBzZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAli aW8tPmJpX2JkZXYgPSBtZGV2LT5sZGV2LT5iYWNraW5nX2JkZXY7CiAJYmlvLT5iaV9ydyA9IHJ3 OwogCWJpby0+YmlfcHJpdmF0ZSA9IHBlZXJfcmVxOwpAQCAtMTM1Myw3ICsxMzUzLDcgQEAgbmV4 dF9iaW86CiAJCQkJZGV2X2VycihERVYsCiAJCQkJCSJiaW9fYWRkX3BhZ2UgZmFpbGVkIGZvciBs ZW49JXUsICIKIAkJCQkJImJpX3ZjbnQ9MCAoYmlfc2VjdG9yPSVsbHUpXG4iLAotCQkJCQlsZW4s ICh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IpOworCQkJCQlsZW4sICh1aW50NjRf dCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJCQllcnIgPSAtRU5PU1BDOwogCQkJCWdvdG8g ZmFpbDsKIAkJCX0KQEAgLTE2MTUsNyArMTYxNSw3IEBAIHN0YXRpYyBpbnQgcmVjdl9kbGVzc19y ZWFkKHN0cnVjdCBkcmJkX2NvbmYgKm1kZXYsIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSwKIAlt ZGV2LT5yZWN2X2NudCArPSBkYXRhX3NpemU+Pjk7CiAKIAliaW8gPSByZXEtPm1hc3Rlcl9iaW87 Ci0JRF9BU1NFUlQoc2VjdG9yID09IGJpby0+Ymlfc2VjdG9yKTsKKwlEX0FTU0VSVChzZWN0b3Ig PT0gYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKIAliaW9fZm9yX2VhY2hfc2VnbWVudChidmVj LCBiaW8sIGkpIHsKIAkJdm9pZCAqbWFwcGVkID0ga21hcChidmVjLT5idl9wYWdlKSArIGJ2ZWMt PmJ2X29mZnNldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jIGIv ZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMKaW5kZXggYzI0Mzc5Zi4uYTZiZWRhYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMKKysrIGIvZHJpdmVycy9ibG9j ay9kcmJkL2RyYmRfcmVxLmMKQEAgLTc3LDggKzc3LDggQEAgc3RhdGljIHN0cnVjdCBkcmJkX3Jl cXVlc3QgKmRyYmRfcmVxX25ldyhzdHJ1Y3QgZHJiZF9jb25mICptZGV2LAogCXJlcS0+ZXBvY2gg ICAgICAgPSAwOwogCiAJZHJiZF9jbGVhcl9pbnRlcnZhbCgmcmVxLT5pKTsKLQlyZXEtPmkuc2Vj dG9yICAgICA9IGJpb19zcmMtPmJpX3NlY3RvcjsKLQlyZXEtPmkuc2l6ZSAgICAgID0gYmlvX3Ny Yy0+Ymlfc2l6ZTsKKwlyZXEtPmkuc2VjdG9yICAgICA9IGJpb19zcmMtPmJpX2l0ZXIuYmlfc2Vj dG9yOworCXJlcS0+aS5zaXplICAgICAgPSBiaW9fc3JjLT5iaV9pdGVyLmJpX3NpemU7CiAJcmVx LT5pLmxvY2FsID0gdHJ1ZTsKIAlyZXEtPmkud2FpdGluZyA9IGZhbHNlOwogCkBAIC0xMjgwLDcg KzEyODAsNyBAQCB2b2lkIGRyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgYmlvICpiaW8pCiAJLyoKIAkgKiB3aGF0IHdlICJibGluZGx5IiBhc3N1bWU6CiAJ ICovCi0JRF9BU1NFUlQoSVNfQUxJR05FRChiaW8tPmJpX3NpemUsIDUxMikpOworCURfQVNTRVJU KElTX0FMSUdORUQoYmlvLT5iaV9pdGVyLmJpX3NpemUsIDUxMikpOwogCiAJaW5jX2FwX2Jpbyht ZGV2KTsKIAlfX2RyYmRfbWFrZV9yZXF1ZXN0KG1kZXYsIGJpbywgc3RhcnRfdGltZSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaCBiL2RyaXZlcnMvYmxvY2svZHJi ZC9kcmJkX3JlcS5oCmluZGV4IDk3OGNiMWEuLjI4ZTE1ZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv YmxvY2svZHJiZC9kcmJkX3JlcS5oCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5o CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYmRfcmVxX21ha2VfcHJp dmF0ZV9iaW8oc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBzdHJ1Y3QgYmkKIAogLyogU2hvcnQg bGl2ZWQgdGVtcG9yYXJ5IHN0cnVjdCBvbiB0aGUgc3RhY2suCiAgKiBXZSBjb3VsZCBzcXVpcnJl bCB0aGUgZXJyb3IgdG8gYmUgcmV0dXJuZWQgaW50bwotICogYmlvLT5iaV9zaXplLCBvciBzaW1p bGFyLiBCdXQgdGhhdCB3b3VsZCBiZSB0b28gdWdseS4gKi8KKyAqIGJpby0+YmlfaXRlci5iaV9z aXplLCBvciBzaW1pbGFyLiBCdXQgdGhhdCB3b3VsZCBiZSB0b28gdWdseS4gKi8KIHN0cnVjdCBi aW9fYW5kX2Vycm9yIHsKIAlzdHJ1Y3QgYmlvICpiaW87CiAJaW50IGVycm9yOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ibG9jay9mbG9wcHkuYyBiL2RyaXZlcnMvYmxvY2svZmxvcHB5LmMKaW5kZXgg MDRjZWI3ZS4uYmY3YjhiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9mbG9wcHkuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2Zsb3BweS5jCkBAIC0zNzc1LDkgKzM3NzUsOSBAQCBzdGF0aWMgaW50 IF9fZmxvcHB5X3JlYWRfYmxvY2tfMChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQogCWJpb192 ZWMuYnZfbGVuID0gc2l6ZTsKIAliaW9fdmVjLmJ2X29mZnNldCA9IDA7CiAJYmlvLmJpX3ZjbnQg PSAxOwotCWJpby5iaV9zaXplID0gc2l6ZTsKKwliaW8uYmlfaXRlci5iaV9zaXplID0gc2l6ZTsK IAliaW8uYmlfYmRldiA9IGJkZXY7Ci0JYmlvLmJpX3NlY3RvciA9IDA7CisJYmlvLmJpX2l0ZXIu Ymlfc2VjdG9yID0gMDsKIAliaW8uYmlfZmxhZ3MgPSAoMSA8PCBCSU9fUVVJRVQpOwogCWluaXRf Y29tcGxldGlvbigmY29tcGxldGUpOwogCWJpby5iaV9wcml2YXRlID0gJmNvbXBsZXRlOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRl eCA0MGU3MTU1Li4yNDQwYjUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRpYyBpbnQgZG9f YmlvX2ZpbGViYWNrZWQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJpbyAqYmlvKQog CWxvZmZfdCBwb3M7CiAJaW50IHJldDsKIAotCXBvcyA9ICgobG9mZl90KSBiaW8tPmJpX3NlY3Rv ciA8PCA5KSArIGxvLT5sb19vZmZzZXQ7CisJcG9zID0gKChsb2ZmX3QpIGJpby0+YmlfaXRlci5i aV9zZWN0b3IgPDwgOSkgKyBsby0+bG9fb2Zmc2V0OwogCiAJaWYgKGJpb19ydyhiaW8pID09IFdS SVRFKSB7CiAJCXN0cnVjdCBmaWxlICpmaWxlID0gbG8tPmxvX2JhY2tpbmdfZmlsZTsKQEAgLTQ0 NCw3ICs0NDQsNyBAQCBzdGF0aWMgaW50IGRvX2Jpb19maWxlYmFja2VkKHN0cnVjdCBsb29wX2Rl dmljZSAqbG8sIHN0cnVjdCBiaW8gKmJpbykKIAkJCQlnb3RvIG91dDsKIAkJCX0KIAkJCXJldCA9 IGZpbGUtPmZfb3AtPmZhbGxvY2F0ZShmaWxlLCBtb2RlLCBwb3MsCi0JCQkJCQkgICAgYmlvLT5i aV9zaXplKTsKKwkJCQkJCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCQlpZiAodW5saWtl bHkocmV0ICYmIHJldCAhPSAtRUlOVkFMICYmCiAJCQkJICAgICByZXQgIT0gLUVPUE5PVFNVUFAp KQogCQkJCXJldCA9IC1FSU87CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210 aXAzMnh4LmMgYi9kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMKaW5kZXggOTUyZGJm ZS4uYTQ5YmRhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5j CisrKyBiL2RyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYwpAQCAtMzg5MCw3ICszODkw LDcgQEAgc3RhdGljIHZvaWQgbXRpcF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUg KnF1ZXVlLCBzdHJ1Y3QgYmlvICpiaW8pCiAJfQogCiAJaWYgKHVubGlrZWx5KGJpby0+Ymlfcncg JiBSRVFfRElTQ0FSRCkpIHsKLQkJYmlvX2VuZGlvKGJpbywgbXRpcF9zZW5kX3RyaW0oZGQsIGJp by0+Ymlfc2VjdG9yLAorCQliaW9fZW5kaW8oYmlvLCBtdGlwX3NlbmRfdHJpbShkZCwgYmlvLT5i aV9pdGVyLmJpX3NlY3RvciwKIAkJCQkJCWJpb19zZWN0b3JzKGJpbykpKTsKIAkJcmV0dXJuOwog CX0KQEAgLTM5MDMsNyArMzkwMyw4IEBAIHN0YXRpYyB2b2lkIG10aXBfbWFrZV9yZXF1ZXN0KHN0 cnVjdCByZXF1ZXN0X3F1ZXVlICpxdWV1ZSwgc3RydWN0IGJpbyAqYmlvKQogCiAJaWYgKGJpb19k YXRhX2RpcihiaW8pID09IFdSSVRFICYmIGJpb19zZWN0b3JzKGJpbykgPD0gNjQgJiYKIAkJCQkJ CQlkZC0+dW5hbF9xZGVwdGgpIHsKLQkJaWYgKGJpby0+Ymlfc2VjdG9yICUgOCAhPSAwKSAvKiBV bmFsaWduZWQgb24gNGsgYm91bmRhcmllcyAqLworCQlpZiAoYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciAlIDggIT0gMCkKKwkJCS8qIFVuYWxpZ25lZCBvbiA0ayBib3VuZGFyaWVzICovCiAJCQl1bmFs aWduZWQgPSAxOwogCQllbHNlIGlmIChiaW9fc2VjdG9ycyhiaW8pICUgOCAhPSAwKSAvKiBBbGln bmVkIGJ1dCBub3QgNGsvOGsgKi8KIAkJCXVuYWxpZ25lZCA9IDE7CkBAIC0zOTMyLDcgKzM5MzMs NyBAQCBzdGF0aWMgdm9pZCBtdGlwX21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cXVldWUsIHN0cnVjdCBiaW8gKmJpbykKIAogCQkvKiBJc3N1ZSB0aGUgcmVhZC93cml0ZS4gKi8K IAkJbXRpcF9od19zdWJtaXRfaW8oZGQsCi0JCQkJYmlvLT5iaV9zZWN0b3IsCisJCQkJYmlvLT5i aV9pdGVyLmJpX3NlY3RvciwKIAkJCQliaW9fc2VjdG9ycyhiaW8pLAogCQkJCW5lbnRzLAogCQkJ CXRhZywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnZtZS1jb3JlLmMgYi9kcml2ZXJzL2Js b2NrL252bWUtY29yZS5jCmluZGV4IGNlNzlhNTkuLjY4NWNmYjEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvYmxvY2svbnZtZS1jb3JlLmMKKysrIGIvZHJpdmVycy9ibG9jay9udm1lLWNvcmUuYwpAQCAt NDM1LDcgKzQzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbnZtZV9iaW9fcGFpciAqbnZtZV9iaW9fc3Bs aXQoc3RydWN0IGJpbyAqYmlvLCBpbnQgaWR4LAogewogCXN0cnVjdCBudm1lX2Jpb19wYWlyICpi cDsKIAotCUJVR19PTihsZW4gPiBiaW8tPmJpX3NpemUpOworCUJVR19PTihsZW4gPiBiaW8tPmJp X2l0ZXIuYmlfc2l6ZSk7CiAJQlVHX09OKGlkeCA+IGJpby0+YmlfdmNudCk7CiAKIAlicCA9IGtt YWxsb2Moc2l6ZW9mKCpicCksIEdGUF9BVE9NSUMpOwpAQCAtNDQ2LDExICs0NDYsMTEgQEAgc3Rh dGljIHN0cnVjdCBudm1lX2Jpb19wYWlyICpudm1lX2Jpb19zcGxpdChzdHJ1Y3QgYmlvICpiaW8s IGludCBpZHgsCiAJYnAtPmIxID0gKmJpbzsKIAlicC0+YjIgPSAqYmlvOwogCi0JYnAtPmIxLmJp X3NpemUgPSBsZW47Ci0JYnAtPmIyLmJpX3NpemUgLT0gbGVuOworCWJwLT5iMS5iaV9pdGVyLmJp X3NpemUgPSBsZW47CisJYnAtPmIyLmJpX2l0ZXIuYmlfc2l6ZSAtPSBsZW47CiAJYnAtPmIxLmJp X3ZjbnQgPSBpZHg7Ci0JYnAtPmIyLmJpX2lkeCA9IGlkeDsKLQlicC0+YjIuYmlfc2VjdG9yICs9 IGxlbiA+PiA5OworCWJwLT5iMi5iaV9pdGVyLmJpX2lkeCA9IGlkeDsKKwlicC0+YjIuYmlfaXRl ci5iaV9zZWN0b3IgKz0gbGVuID4+IDk7CiAKIAlpZiAob2Zmc2V0KSB7CiAJCWJwLT5idjEgPSBr bWFsbG9jKGJpby0+YmlfbWF4X3ZlY3MgKiBzaXplb2Yoc3RydWN0IGJpb192ZWMpLApAQCAtNTE5 LDExICs1MTksMTIgQEAgc3RhdGljIGludCBudm1lX21hcF9iaW8oc3RydWN0IG52bWVfcXVldWUg Km52bWVxLCBzdHJ1Y3QgbnZtZV9pb2QgKmlvZCwKIHsKIAlzdHJ1Y3QgYmlvX3ZlYyAqYnZlYywg KmJ2cHJ2ID0gTlVMTDsKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnID0gTlVMTDsKLQlpbnQgaSwg bGVuZ3RoID0gMCwgbnNlZ3MgPSAwLCBzcGxpdF9sZW4gPSBiaW8tPmJpX3NpemU7CisJaW50IGks IGxlbmd0aCA9IDAsIG5zZWdzID0gMCwgc3BsaXRfbGVuID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7 CiAKIAlpZiAobnZtZXEtPmRldi0+c3RyaXBlX3NpemUpCiAJCXNwbGl0X2xlbiA9IG52bWVxLT5k ZXYtPnN0cmlwZV9zaXplIC0KLQkJCSgoYmlvLT5iaV9zZWN0b3IgPDwgOSkgJiAobnZtZXEtPmRl di0+c3RyaXBlX3NpemUgLSAxKSk7CisJCQkoKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPDwgOSkg JgorCQkJIChudm1lcS0+ZGV2LT5zdHJpcGVfc2l6ZSAtIDEpKTsKIAogCXNnX2luaXRfdGFibGUo aW9kLT5zZywgcHNlZ3MpOwogCWJpb19mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIGJpbywgaSkgewpA QCAtNTUxLDcgKzU1Miw3IEBAIHN0YXRpYyBpbnQgbnZtZV9tYXBfYmlvKHN0cnVjdCBudm1lX3F1 ZXVlICpudm1lcSwgc3RydWN0IG52bWVfaW9kICppb2QsCiAJaWYgKGRtYV9tYXBfc2cobnZtZXEt PnFfZG1hZGV2LCBpb2QtPnNnLCBpb2QtPm5lbnRzLCBkbWFfZGlyKSA9PSAwKQogCQlyZXR1cm4g LUVOT01FTTsKIAotCUJVR19PTihsZW5ndGggIT0gYmlvLT5iaV9zaXplKTsKKwlCVUdfT04obGVu Z3RoICE9IGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAlyZXR1cm4gbGVuZ3RoOwogfQogCkBAIC01 NzUsOCArNTc2LDggQEAgc3RhdGljIGludCBudm1lX3N1Ym1pdF9kaXNjYXJkKHN0cnVjdCBudm1l X3F1ZXVlICpudm1lcSwgc3RydWN0IG52bWVfbnMgKm5zLAogCWlvZC0+bnBhZ2VzID0gMDsKIAog CXJhbmdlLT5jYXR0ciA9IGNwdV90b19sZTMyKDApOwotCXJhbmdlLT5ubGIgPSBjcHVfdG9fbGUz MihiaW8tPmJpX3NpemUgPj4gbnMtPmxiYV9zaGlmdCk7Ci0JcmFuZ2UtPnNsYmEgPSBjcHVfdG9f bGU2NChudm1lX2Jsb2NrX25yKG5zLCBiaW8tPmJpX3NlY3RvcikpOworCXJhbmdlLT5ubGIgPSBj cHVfdG9fbGUzMihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA+PiBucy0+bGJhX3NoaWZ0KTsKKwlyYW5n ZS0+c2xiYSA9IGNwdV90b19sZTY0KG52bWVfYmxvY2tfbnIobnMsIGJpby0+YmlfaXRlci5iaV9z ZWN0b3IpKTsKIAogCW1lbXNldChjbW5kLCAwLCBzaXplb2YoKmNtbmQpKTsKIAljbW5kLT5kc20u b3Bjb2RlID0gbnZtZV9jbWRfZHNtOwpAQCAtNjQxLDcgKzY0Miw3IEBAIHN0YXRpYyBpbnQgbnZt ZV9zdWJtaXRfYmlvX3F1ZXVlKHN0cnVjdCBudm1lX3F1ZXVlICpudm1lcSwgc3RydWN0IG52bWVf bnMgKm5zLAogCX0KIAogCXJlc3VsdCA9IC1FTk9NRU07Ci0JaW9kID0gbnZtZV9hbGxvY19pb2Qo cHNlZ3MsIGJpby0+Ymlfc2l6ZSwgR0ZQX0FUT01JQyk7CisJaW9kID0gbnZtZV9hbGxvY19pb2Qo cHNlZ3MsIGJpby0+YmlfaXRlci5iaV9zaXplLCBHRlBfQVRPTUlDKTsKIAlpZiAoIWlvZCkKIAkJ Z290byBub21lbTsKIAlpb2QtPnByaXZhdGUgPSBiaW87CkBAIC02OTAsNyArNjkxLDcgQEAgc3Rh dGljIGludCBudm1lX3N1Ym1pdF9iaW9fcXVldWUoc3RydWN0IG52bWVfcXVldWUgKm52bWVxLCBz dHJ1Y3QgbnZtZV9ucyAqbnMsCiAJY21uZC0+cncubnNpZCA9IGNwdV90b19sZTMyKG5zLT5uc19p ZCk7CiAJbGVuZ3RoID0gbnZtZV9zZXR1cF9wcnBzKG52bWVxLT5kZXYsICZjbW5kLT5jb21tb24s IGlvZCwgbGVuZ3RoLAogCQkJCQkJCQlHRlBfQVRPTUlDKTsKLQljbW5kLT5ydy5zbGJhID0gY3B1 X3RvX2xlNjQobnZtZV9ibG9ja19ucihucywgYmlvLT5iaV9zZWN0b3IpKTsKKwljbW5kLT5ydy5z bGJhID0gY3B1X3RvX2xlNjQobnZtZV9ibG9ja19ucihucywgYmlvLT5iaV9pdGVyLmJpX3NlY3Rv cikpOwogCWNtbmQtPnJ3Lmxlbmd0aCA9IGNwdV90b19sZTE2KChsZW5ndGggPj4gbnMtPmxiYV9z aGlmdCkgLSAxKTsKIAljbW5kLT5ydy5jb250cm9sID0gY3B1X3RvX2xlMTYoY29udHJvbCk7CiAJ Y21uZC0+cncuZHNtZ210ID0gY3B1X3RvX2xlMzIoZHNtZ210KTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvYmxvY2svcGt0Y2R2ZC5jIGIvZHJpdmVycy9ibG9jay9wa3RjZHZkLmMKaW5kZXggZjVkMGVh MS4uZjE2ZGZjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9wa3RjZHZkLmMKKysrIGIvZHJp dmVycy9ibG9jay9wa3RjZHZkLmMKQEAgLTY1OSw3ICs2NTksNyBAQCBzdGF0aWMgc3RydWN0IHBr dF9yYl9ub2RlICpwa3RfcmJ0cmVlX2ZpbmQoc3RydWN0IHBrdGNkdmRfZGV2aWNlICpwZCwgc2Vj dG9yX3QgcwogCiAJZm9yICg7OykgewogCQl0bXAgPSByYl9lbnRyeShuLCBzdHJ1Y3QgcGt0X3Ji X25vZGUsIHJiX25vZGUpOwotCQlpZiAocyA8PSB0bXAtPmJpby0+Ymlfc2VjdG9yKQorCQlpZiAo cyA8PSB0bXAtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IpCiAJCQluZXh0ID0gbi0+cmJfbGVmdDsK IAkJZWxzZQogCQkJbmV4dCA9IG4tPnJiX3JpZ2h0OwpAQCAtNjY4LDEyICs2NjgsMTIgQEAgc3Rh dGljIHN0cnVjdCBwa3RfcmJfbm9kZSAqcGt0X3JidHJlZV9maW5kKHN0cnVjdCBwa3RjZHZkX2Rl dmljZSAqcGQsIHNlY3Rvcl90IHMKIAkJbiA9IG5leHQ7CiAJfQogCi0JaWYgKHMgPiB0bXAtPmJp by0+Ymlfc2VjdG9yKSB7CisJaWYgKHMgPiB0bXAtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IpIHsK IAkJdG1wID0gcGt0X3JidHJlZV9uZXh0KHRtcCk7CiAJCWlmICghdG1wKQogCQkJcmV0dXJuIE5V TEw7CiAJfQotCUJVR19PTihzID4gdG1wLT5iaW8tPmJpX3NlY3Rvcik7CisJQlVHX09OKHMgPiB0 bXAtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCXJldHVybiB0bXA7CiB9CiAKQEAgLTY4NCwx MyArNjg0LDEzIEBAIHN0YXRpYyB2b2lkIHBrdF9yYnRyZWVfaW5zZXJ0KHN0cnVjdCBwa3RjZHZk X2RldmljZSAqcGQsIHN0cnVjdCBwa3RfcmJfbm9kZSAqbm9kCiB7CiAJc3RydWN0IHJiX25vZGUg KipwID0gJnBkLT5iaW9fcXVldWUucmJfbm9kZTsKIAlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50ID0g TlVMTDsKLQlzZWN0b3JfdCBzID0gbm9kZS0+YmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX3QgcyA9 IG5vZGUtPmJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJc3RydWN0IHBrdF9yYl9ub2RlICp0bXA7 CiAKIAl3aGlsZSAoKnApIHsKIAkJcGFyZW50ID0gKnA7CiAJCXRtcCA9IHJiX2VudHJ5KHBhcmVu dCwgc3RydWN0IHBrdF9yYl9ub2RlLCByYl9ub2RlKTsKLQkJaWYgKHMgPCB0bXAtPmJpby0+Ymlf c2VjdG9yKQorCQlpZiAocyA8IHRtcC0+YmlvLT5iaV9pdGVyLmJpX3NlY3RvcikKIAkJCXAgPSAm KCpwKS0+cmJfbGVmdDsKIAkJZWxzZQogCQkJcCA9ICYoKnApLT5yYl9yaWdodDsKQEAgLTg2OCw3 ICs4NjgsOCBAQCBzdGF0aWMgdm9pZCBwa3RfaW9zY2hlZF9wcm9jZXNzX3F1ZXVlKHN0cnVjdCBw a3RjZHZkX2RldmljZSAqcGQpCiAJCQlzcGluX2xvY2soJnBkLT5pb3NjaGVkLmxvY2spOwogCQkJ YmlvID0gYmlvX2xpc3RfcGVlaygmcGQtPmlvc2NoZWQud3JpdGVfcXVldWUpOwogCQkJc3Bpbl91 bmxvY2soJnBkLT5pb3NjaGVkLmxvY2spOwotCQkJaWYgKGJpbyAmJiAoYmlvLT5iaV9zZWN0b3Ig PT0gcGQtPmlvc2NoZWQubGFzdF93cml0ZSkpCisJCQlpZiAoYmlvICYmIChiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yID09CisJCQkJICAgIHBkLT5pb3NjaGVkLmxhc3Rfd3JpdGUpKQogCQkJCW5lZWRf d3JpdGVfc2VlayA9IDA7CiAJCQlpZiAobmVlZF93cml0ZV9zZWVrICYmIHJlYWRzX3F1ZXVlZCkg ewogCQkJCWlmIChhdG9taWNfcmVhZCgmcGQtPmNkcncucGVuZGluZ19iaW9zKSA+IDApIHsKQEAg LTg5OSw3ICs5MDAsOCBAQCBzdGF0aWMgdm9pZCBwa3RfaW9zY2hlZF9wcm9jZXNzX3F1ZXVlKHN0 cnVjdCBwa3RjZHZkX2RldmljZSAqcGQpCiAJCQljb250aW51ZTsKIAogCQlpZiAoYmlvX2RhdGFf ZGlyKGJpbykgPT0gUkVBRCkKLQkJCXBkLT5pb3NjaGVkLnN1Y2Nlc3NpdmVfcmVhZHMgKz0gYmlv LT5iaV9zaXplID4+IDEwOworCQkJcGQtPmlvc2NoZWQuc3VjY2Vzc2l2ZV9yZWFkcyArPQorCQkJ CWJpby0+YmlfaXRlci5iaV9zaXplID4+IDEwOwogCQllbHNlIHsKIAkJCXBkLT5pb3NjaGVkLnN1 Y2Nlc3NpdmVfcmVhZHMgPSAwOwogCQkJcGQtPmlvc2NoZWQubGFzdF93cml0ZSA9IGJpb19lbmRf c2VjdG9yKGJpbyk7CkBAIC05ODgsNyArOTkwLDggQEAgc3RhdGljIHZvaWQgcGt0X2VuZF9pb19y ZWFkKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycikKIAlCVUdfT04oIXBkKTsKIAogCVZQUklOVEso InBrdF9lbmRfaW9fcmVhZDogYmlvPSVwIHNlYzA9JWxseCBzZWM9JWxseCBlcnI9JWRcbiIsIGJp bywKLQkJKHVuc2lnbmVkIGxvbmcgbG9uZylwa3QtPnNlY3RvciwgKHVuc2lnbmVkIGxvbmcgbG9u ZyliaW8tPmJpX3NlY3RvciwgZXJyKTsKKwkJKHVuc2lnbmVkIGxvbmcgbG9uZylwa3QtPnNlY3Rv ciwKKwkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBlcnIpOwog CiAJaWYgKGVycikKIAkJYXRvbWljX2luYygmcGt0LT5pb19lcnJvcnMpOwpAQCAtMTAzNiw4ICsx MDM5LDkgQEAgc3RhdGljIHZvaWQgcGt0X2dhdGhlcl9kYXRhKHN0cnVjdCBwa3RjZHZkX2Rldmlj ZSAqcGQsIHN0cnVjdCBwYWNrZXRfZGF0YSAqcGt0KQogCW1lbXNldCh3cml0dGVuLCAwLCBzaXpl b2Yod3JpdHRlbikpOwogCXNwaW5fbG9jaygmcGt0LT5sb2NrKTsKIAliaW9fbGlzdF9mb3JfZWFj aChiaW8sICZwa3QtPm9yaWdfYmlvcykgewotCQlpbnQgZmlyc3RfZnJhbWUgPSAoYmlvLT5iaV9z ZWN0b3IgLSBwa3QtPnNlY3RvcikgLyAoQ0RfRlJBTUVTSVpFID4+IDkpOwotCQlpbnQgbnVtX2Zy YW1lcyA9IGJpby0+Ymlfc2l6ZSAvIENEX0ZSQU1FU0laRTsKKwkJaW50IGZpcnN0X2ZyYW1lID0g KGJpby0+YmlfaXRlci5iaV9zZWN0b3IgLSBwa3QtPnNlY3RvcikgLworCQkJKENEX0ZSQU1FU0la RSA+PiA5KTsKKwkJaW50IG51bV9mcmFtZXMgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSAvIENEX0ZS QU1FU0laRTsKIAkJcGQtPnN0YXRzLnNlY3NfdyArPSBudW1fZnJhbWVzICogKENEX0ZSQU1FU0la RSA+PiA5KTsKIAkJQlVHX09OKGZpcnN0X2ZyYW1lIDwgMCk7CiAJCUJVR19PTihmaXJzdF9mcmFt ZSArIG51bV9mcmFtZXMgPiBwa3QtPmZyYW1lcyk7CkBAIC0xMDYzLDcgKzEwNjcsNyBAQCBzdGF0 aWMgdm9pZCBwa3RfZ2F0aGVyX2RhdGEoc3RydWN0IHBrdGNkdmRfZGV2aWNlICpwZCwgc3RydWN0 IHBhY2tldF9kYXRhICpwa3QpCiAKIAkJYmlvID0gcGt0LT5yX2Jpb3NbZl07CiAJCWJpb19yZXNl dChiaW8pOwotCQliaW8tPmJpX3NlY3RvciA9IHBrdC0+c2VjdG9yICsgZiAqIChDRF9GUkFNRVNJ WkUgPj4gOSk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBwa3QtPnNlY3RvciArIGYgKiAo Q0RfRlJBTUVTSVpFID4+IDkpOwogCQliaW8tPmJpX2JkZXYgPSBwZC0+YmRldjsKIAkJYmlvLT5i aV9lbmRfaW8gPSBwa3RfZW5kX2lvX3JlYWQ7CiAJCWJpby0+YmlfcHJpdmF0ZSA9IHBrdDsKQEAg LTExNjAsOCArMTE2NCw4IEBAIHN0YXRpYyBpbnQgcGt0X3N0YXJ0X3JlY292ZXJ5KHN0cnVjdCBw YWNrZXRfZGF0YSAqcGt0KQogCWJpb19yZXNldChwa3QtPmJpbyk7CiAJcGt0LT5iaW8tPmJpX2Jk ZXYgPSBwZC0+YmRldjsKIAlwa3QtPmJpby0+YmlfcncgPSBSRVFfV1JJVEU7Ci0JcGt0LT5iaW8t PmJpX3NlY3RvciA9IG5ld19zZWN0b3I7Ci0JcGt0LT5iaW8tPmJpX3NpemUgPSBwa3QtPmZyYW1l cyAqIENEX0ZSQU1FU0laRTsKKwlwa3QtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBuZXdfc2Vj dG9yOworCXBrdC0+YmlvLT5iaV9pdGVyLmJpX3NpemUgPSBwa3QtPmZyYW1lcyAqIENEX0ZSQU1F U0laRTsKIAlwa3QtPmJpby0+YmlfdmNudCA9IHBrdC0+ZnJhbWVzOwogCiAJcGt0LT5iaW8tPmJp X2VuZF9pbyA9IHBrdF9lbmRfaW9fcGFja2V0X3dyaXRlOwpAQCAtMTIyNCw3ICsxMjI4LDcgQEAg c3RhdGljIGludCBwa3RfaGFuZGxlX3F1ZXVlKHN0cnVjdCBwa3RjZHZkX2RldmljZSAqcGQpCiAJ bm9kZSA9IGZpcnN0X25vZGU7CiAJd2hpbGUgKG5vZGUpIHsKIAkJYmlvID0gbm9kZS0+YmlvOwot CQl6b25lID0gWk9ORShiaW8tPmJpX3NlY3RvciwgcGQpOworCQl6b25lID0gWk9ORShiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yLCBwZCk7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkocCwgJnBkLT5jZHJ3 LnBrdF9hY3RpdmVfbGlzdCwgbGlzdCkgewogCQkJaWYgKHAtPnNlY3RvciA9PSB6b25lKSB7CiAJ CQkJYmlvID0gTlVMTDsKQEAgLTEyNjQsMTMgKzEyNjgsMTMgQEAgdHJ5X25leHRfYmlvOgogCXdo aWxlICgobm9kZSA9IHBrdF9yYnRyZWVfZmluZChwZCwgem9uZSkpICE9IE5VTEwpIHsKIAkJYmlv ID0gbm9kZS0+YmlvOwogCQlWUFJJTlRLKCJwa3RfaGFuZGxlX3F1ZXVlOiBmb3VuZCB6b25lPSVs bHhcbiIsCi0JCQkodW5zaWduZWQgbG9uZyBsb25nKVpPTkUoYmlvLT5iaV9zZWN0b3IsIHBkKSk7 Ci0JCWlmIChaT05FKGJpby0+Ymlfc2VjdG9yLCBwZCkgIT0gem9uZSkKKwkJCSh1bnNpZ25lZCBs b25nIGxvbmcpWk9ORShiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBwZCkpOworCQlpZiAoWk9ORShi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBwZCkgIT0gem9uZSkKIAkJCWJyZWFrOwogCQlwa3RfcmJ0 cmVlX2VyYXNlKHBkLCBub2RlKTsKIAkJc3Bpbl9sb2NrKCZwa3QtPmxvY2spOwogCQliaW9fbGlz dF9hZGQoJnBrdC0+b3JpZ19iaW9zLCBiaW8pOwotCQlwa3QtPndyaXRlX3NpemUgKz0gYmlvLT5i aV9zaXplIC8gQ0RfRlJBTUVTSVpFOworCQlwa3QtPndyaXRlX3NpemUgKz0gYmlvLT5iaV9pdGVy LmJpX3NpemUgLyBDRF9GUkFNRVNJWkU7CiAJCXNwaW5fdW5sb2NrKCZwa3QtPmxvY2spOwogCX0K IAkvKiBjaGVjayB3cml0ZSBjb25nZXN0aW9uIG1hcmtzLCBhbmQgaWYgYmlvX3F1ZXVlX3NpemUg aXMKQEAgLTEzMDQsNyArMTMwOCw3IEBAIHN0YXRpYyB2b2lkIHBrdF9zdGFydF93cml0ZShzdHJ1 Y3QgcGt0Y2R2ZF9kZXZpY2UgKnBkLCBzdHJ1Y3QgcGFja2V0X2RhdGEgKnBrdCkKIAlzdHJ1Y3Qg YmlvX3ZlYyAqYnZlYyA9IHBrdC0+d19iaW8tPmJpX2lvX3ZlYzsKIAogCWJpb19yZXNldChwa3Qt PndfYmlvKTsKLQlwa3QtPndfYmlvLT5iaV9zZWN0b3IgPSBwa3QtPnNlY3RvcjsKKwlwa3QtPndf YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBrdC0+c2VjdG9yOwogCXBrdC0+d19iaW8tPmJpX2Jk ZXYgPSBwZC0+YmRldjsKIAlwa3QtPndfYmlvLT5iaV9lbmRfaW8gPSBwa3RfZW5kX2lvX3BhY2tl dF93cml0ZTsKIAlwa3QtPndfYmlvLT5iaV9wcml2YXRlID0gcGt0OwpAQCAtMjM4MywxOCArMjM4 NywxOCBAQCBzdGF0aWMgdm9pZCBwa3RfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVl ICpxLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAlpZiAoIXRlc3RfYml0KFBBQ0tFVF9XUklUQUJMRSwg JnBkLT5mbGFncykpIHsKIAkJcHJpbnRrKERSSVZFUl9OQU1FIjogV1JJVEUgZm9yIHJvIGRldmlj ZSAlcyAoJWxsdSlcbiIsCi0JCQlwZC0+bmFtZSwgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJp X3NlY3Rvcik7CisJCQlwZC0+bmFtZSwgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAkJZ290byBlbmRfaW87CiAJfQogCi0JaWYgKCFiaW8tPmJpX3NpemUgfHwg KGJpby0+Ymlfc2l6ZSAlIENEX0ZSQU1FU0laRSkpIHsKKwlpZiAoIWJpby0+YmlfaXRlci5iaV9z aXplIHx8IChiaW8tPmJpX2l0ZXIuYmlfc2l6ZSAlIENEX0ZSQU1FU0laRSkpIHsKIAkJcHJpbnRr KERSSVZFUl9OQU1FIjogd3JvbmcgYmlvIHNpemVcbiIpOwogCQlnb3RvIGVuZF9pbzsKIAl9CiAK IAlibGtfcXVldWVfYm91bmNlKHEsICZiaW8pOwogCi0Jem9uZSA9IFpPTkUoYmlvLT5iaV9zZWN0 b3IsIHBkKTsKKwl6b25lID0gWk9ORShiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBwZCk7CiAJVlBS SU5USygicGt0X21ha2VfcmVxdWVzdDogc3RhcnQgPSAlNmxseCBzdG9wID0gJTZsbHhcbiIsCiAJ CSh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IsCiAJCSh1bnNpZ25lZCBsb25nIGxv bmcpYmlvX2VuZF9zZWN0b3IoYmlvKSk7CkBAIC0yNDA4LDcgKzI0MTIsNyBAQCBzdGF0aWMgdm9p ZCBwa3RfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpi aW8pCiAJCWxhc3Rfem9uZSA9IFpPTkUoYmlvX2VuZF9zZWN0b3IoYmlvKSAtIDEsIHBkKTsKIAkJ aWYgKGxhc3Rfem9uZSAhPSB6b25lKSB7CiAJCQlCVUdfT04obGFzdF96b25lICE9IHpvbmUgKyBw ZC0+c2V0dGluZ3Muc2l6ZSk7Ci0JCQlmaXJzdF9zZWN0b3JzID0gbGFzdF96b25lIC0gYmlvLT5i aV9zZWN0b3I7CisJCQlmaXJzdF9zZWN0b3JzID0gbGFzdF96b25lIC0gYmlvLT5iaV9pdGVyLmJp X3NlY3RvcjsKIAkJCWJwID0gYmlvX3NwbGl0KGJpbywgZmlyc3Rfc2VjdG9ycyk7CiAJCQlCVUdf T04oIWJwKTsKIAkJCXBrdF9tYWtlX3JlcXVlc3QocSwgJmJwLT5iaW8xKTsKQEAgLTI0MzAsNyAr MjQzNCw4IEBAIHN0YXRpYyB2b2lkIHBrdF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkJCWlmICgocGt0LT5zdGF0ZSA9PSBQQUNLRVRfV0FJ VElOR19TVEFURSkgfHwKIAkJCSAgICAocGt0LT5zdGF0ZSA9PSBQQUNLRVRfUkVBRF9XQUlUX1NU QVRFKSkgewogCQkJCWJpb19saXN0X2FkZCgmcGt0LT5vcmlnX2Jpb3MsIGJpbyk7Ci0JCQkJcGt0 LT53cml0ZV9zaXplICs9IGJpby0+Ymlfc2l6ZSAvIENEX0ZSQU1FU0laRTsKKwkJCQlwa3QtPndy aXRlX3NpemUgKz0KKwkJCQkJYmlvLT5iaV9pdGVyLmJpX3NpemUgLyBDRF9GUkFNRVNJWkU7CiAJ CQkJaWYgKChwa3QtPndyaXRlX3NpemUgPj0gcGt0LT5mcmFtZXMpICYmCiAJCQkJICAgIChwa3Qt PnN0YXRlID09IFBBQ0tFVF9XQUlUSU5HX1NUQVRFKSkgewogCQkJCQlhdG9taWNfaW5jKCZwa3Qt PnJ1bl9zbSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3BzM2Rpc2suYyBiL2RyaXZlcnMv YmxvY2svcHMzZGlzay5jCmluZGV4IGQ3NTRhODguLjQ2NGJlNzggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvYmxvY2svcHMzZGlzay5jCisrKyBiL2RyaXZlcnMvYmxvY2svcHMzZGlzay5jCkBAIC0xMDQs NyArMTA0LDcgQEAgc3RhdGljIHZvaWQgcHMzZGlza19zY2F0dGVyX2dhdGhlcihzdHJ1Y3QgcHMz X3N0b3JhZ2VfZGV2aWNlICpkZXYsCiAJCWRldl9kYmcoJmRldi0+c2JkLmNvcmUsCiAJCQkiJXM6 JXU6IGJpbyAldTogJXUgc2VncyAldSBzZWN0b3JzIGZyb20gJWx1XG4iLAogCQkJX19mdW5jX18s IF9fTElORV9fLCBpLCBiaW9fc2VnbWVudHMoaXRlci5iaW8pLAotCQkJYmlvX3NlY3RvcnMoaXRl ci5iaW8pLCBpdGVyLmJpby0+Ymlfc2VjdG9yKTsKKwkJCWJpb19zZWN0b3JzKGl0ZXIuYmlvKSwg aXRlci5iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCQlzaXplID0gYnZlYy0+YnZfbGVuOwog CQlidWYgPSBidmVjX2ttYXBfaXJxKGJ2ZWMsICZmbGFncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2Jsb2NrL3JiZC5jIGIvZHJpdmVycy9ibG9jay9yYmQuYwppbmRleCA0YWQyYWQ5Li45OTMzNGFj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JiZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svcmJk LmMKQEAgLTExNzcsMTQgKzExNzcsMTQgQEAgc3RhdGljIHN0cnVjdCBiaW8gKmJpb19jbG9uZV9y YW5nZShzdHJ1Y3QgYmlvICpiaW9fc3JjLAogCiAJLyogSGFuZGxlIHRoZSBlYXN5IGNhc2UgZm9y IHRoZSBjYWxsZXIgKi8KIAotCWlmICghb2Zmc2V0ICYmIGxlbiA9PSBiaW9fc3JjLT5iaV9zaXpl KQorCWlmICghb2Zmc2V0ICYmIGxlbiA9PSBiaW9fc3JjLT5iaV9pdGVyLmJpX3NpemUpCiAJCXJl dHVybiBiaW9fY2xvbmUoYmlvX3NyYywgZ2ZwbWFzayk7CiAKIAlpZiAoV0FSTl9PTl9PTkNFKCFs ZW4pKQogCQlyZXR1cm4gTlVMTDsKLQlpZiAoV0FSTl9PTl9PTkNFKGxlbiA+IGJpb19zcmMtPmJp X3NpemUpKQorCWlmIChXQVJOX09OX09OQ0UobGVuID4gYmlvX3NyYy0+YmlfaXRlci5iaV9zaXpl KSkKIAkJcmV0dXJuIE5VTEw7Ci0JaWYgKFdBUk5fT05fT05DRShvZmZzZXQgPiBiaW9fc3JjLT5i aV9zaXplIC0gbGVuKSkKKwlpZiAoV0FSTl9PTl9PTkNFKG9mZnNldCA+IGJpb19zcmMtPmJpX2l0 ZXIuYmlfc2l6ZSAtIGxlbikpCiAJCXJldHVybiBOVUxMOwogCiAJLyogRmluZCBmaXJzdCBhZmZl Y3RlZCBzZWdtZW50Li4uICovCkBAIC0xMjE0LDcgKzEyMTQsOCBAQCBzdGF0aWMgc3RydWN0IGJp byAqYmlvX2Nsb25lX3JhbmdlKHN0cnVjdCBiaW8gKmJpb19zcmMsCiAJCXJldHVybiBOVUxMOwkv KiBFTk9NRU0gKi8KIAogCWJpby0+YmlfYmRldiA9IGJpb19zcmMtPmJpX2JkZXY7Ci0JYmlvLT5i aV9zZWN0b3IgPSBiaW9fc3JjLT5iaV9zZWN0b3IgKyAob2Zmc2V0ID4+IFNFQ1RPUl9TSElGVCk7 CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJpb19zcmMtPmJpX2l0ZXIuYmlfc2VjdG9yICsK KwkJKG9mZnNldCA+PiBTRUNUT1JfU0hJRlQpOwogCWJpby0+YmlfcncgPSBiaW9fc3JjLT5iaV9y dzsKIAliaW8tPmJpX2ZsYWdzIHw9IDEgPDwgQklPX0NMT05FRDsKIApAQCAtMTIzMyw4ICsxMjM0 LDcgQEAgc3RhdGljIHN0cnVjdCBiaW8gKmJpb19jbG9uZV9yYW5nZShzdHJ1Y3QgYmlvICpiaW9f c3JjLAogCX0KIAogCWJpby0+YmlfdmNudCA9IHZjbnQ7Ci0JYmlvLT5iaV9zaXplID0gbGVuOwot CWJpby0+YmlfaWR4ID0gMDsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IGxlbjsKIAogCXJldHVy biBiaW87CiB9CkBAIC0xMjY1LDcgKzEyNjUsNyBAQCBzdGF0aWMgc3RydWN0IGJpbyAqYmlvX2No YWluX2Nsb25lX3JhbmdlKHN0cnVjdCBiaW8gKipiaW9fc3JjLAogCiAJLyogQnVpbGQgdXAgYSBj aGFpbiBvZiBjbG9uZSBiaW9zIHVwIHRvIHRoZSBsaW1pdCAqLwogCi0JaWYgKCFiaSB8fCBvZmYg Pj0gYmktPmJpX3NpemUgfHwgIWxlbikKKwlpZiAoIWJpIHx8IG9mZiA+PSBiaS0+YmlfaXRlci5i aV9zaXplIHx8ICFsZW4pCiAJCXJldHVybiBOVUxMOwkJLyogTm90aGluZyB0byBjbG9uZSAqLwog CiAJZW5kID0gJmNoYWluOwpAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgc3RhdGljIHN0cnVjdCBiaW8g KmJpb19jaGFpbl9jbG9uZV9yYW5nZShzdHJ1Y3QgYmlvICoqYmlvX3NyYywKIAkJCXJiZF93YXJu KE5VTEwsICJiaW9fY2hhaW4gZXhoYXVzdGVkIHdpdGggJXUgbGVmdCIsIGxlbik7CiAJCQlnb3Rv IG91dF9lcnI7CS8qIEVJTlZBTDsgcmFuIG91dCBvZiBiaW8ncyAqLwogCQl9Ci0JCWJpX3NpemUg PSBtaW5fdCh1bnNpZ25lZCBpbnQsIGJpLT5iaV9zaXplIC0gb2ZmLCBsZW4pOworCQliaV9zaXpl ID0gbWluX3QodW5zaWduZWQgaW50LCBiaS0+YmlfaXRlci5iaV9zaXplIC0gb2ZmLCBsZW4pOwog CQliaW8gPSBiaW9fY2xvbmVfcmFuZ2UoYmksIG9mZiwgYmlfc2l6ZSwgZ2ZwbWFzayk7CiAJCWlm ICghYmlvKQogCQkJZ290byBvdXRfZXJyOwkvKiBFTk9NRU0gKi8KQEAgLTEyODYsNyArMTI4Niw3 IEBAIHN0YXRpYyBzdHJ1Y3QgYmlvICpiaW9fY2hhaW5fY2xvbmVfcmFuZ2Uoc3RydWN0IGJpbyAq KmJpb19zcmMsCiAJCWVuZCA9ICZiaW8tPmJpX25leHQ7CiAKIAkJb2ZmICs9IGJpX3NpemU7Ci0J CWlmIChvZmYgPT0gYmktPmJpX3NpemUpIHsKKwkJaWYgKG9mZiA9PSBiaS0+YmlfaXRlci5iaV9z aXplKSB7CiAJCQliaSA9IGJpLT5iaV9uZXh0OwogCQkJb2ZmID0gMDsKIAkJfQpAQCAtMjE4MCw3 ICsyMTgwLDggQEAgc3RhdGljIGludCByYmRfaW1nX3JlcXVlc3RfZmlsbChzdHJ1Y3QgcmJkX2lt Z19yZXF1ZXN0ICppbWdfcmVxdWVzdCwKIAogCWlmICh0eXBlID09IE9CSl9SRVFVRVNUX0JJTykg ewogCQliaW9fbGlzdCA9IGRhdGFfZGVzYzsKLQkJcmJkX2Fzc2VydChpbWdfb2Zmc2V0ID09IGJp b19saXN0LT5iaV9zZWN0b3IgPDwgU0VDVE9SX1NISUZUKTsKKwkJcmJkX2Fzc2VydChpbWdfb2Zm c2V0ID09CisJCQkgICBiaW9fbGlzdC0+YmlfaXRlci5iaV9zZWN0b3IgPDwgU0VDVE9SX1NISUZU KTsKIAl9IGVsc2UgewogCQlyYmRfYXNzZXJ0KHR5cGUgPT0gT0JKX1JFUVVFU1RfUEFHRVMpOwog CQlwYWdlcyA9IGRhdGFfZGVzYzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcnN4eC9kZXYu YyBiL2RyaXZlcnMvYmxvY2svcnN4eC9kZXYuYwppbmRleCBkN2FmNDQxLi45YjE3ZmEwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JzeHgvZGV2LmMKKysrIGIvZHJpdmVycy9ibG9jay9yc3h4 L2Rldi5jCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIHZvaWQgcnN4eF9tYWtlX3JlcXVlc3Qo c3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAoIWNhcmQpCiAJ CWdvdG8gcmVxX2VycjsKIAotCWlmIChiaW8tPmJpX3NlY3RvciArIChiaW8tPmJpX3NpemUgPj4g OSkgPiBnZXRfY2FwYWNpdHkoY2FyZC0+Z2VuZGlzaykpCisJaWYgKGJpb19lbmRfc2VjdG9yKGJp bykgPiBnZXRfY2FwYWNpdHkoY2FyZC0+Z2VuZGlzaykpCiAJCWdvdG8gcmVxX2VycjsKIAogCWlm ICh1bmxpa2VseShjYXJkLT5oYWx0KSkgewpAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyB2b2lk IHJzeHhfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpi aW8pCiAJCWdvdG8gcmVxX2VycjsKIAl9CiAKLQlpZiAoYmlvLT5iaV9zaXplID09IDApIHsKKwlp ZiAoYmlvLT5iaV9pdGVyLmJpX3NpemUgPT0gMCkgewogCQlkZXZfZXJyKENBUkRfVE9fREVWKGNh cmQpLCAic2l6ZSB6ZXJvIEJJTyFcbiIpOwogCQlnb3RvIHJlcV9lcnI7CiAJfQpAQCAtMjA4LDcg KzIwOCw3IEBAIHN0YXRpYyB2b2lkIHJzeHhfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAlkZXZfZGJnKENBUkRfVE9fREVWKGNhcmQpLCAi QklPWyVjXTogbWV0YTogJXAgYWRkcjg6IHglbGx4IHNpemU6ICVkXG4iLAogCQkgYmlvX2RhdGFf ZGlyKGJpbykgPyAnVycgOiAnUicsIGJpb19tZXRhLAotCQkgKHU2NCliaW8tPmJpX3NlY3RvciA8 PCA5LCBiaW8tPmJpX3NpemUpOworCQkgKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDks IGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAogCXN0ID0gcnN4eF9kbWFfcXVldWVfYmlvKGNhcmQs IGJpbywgJmJpb19tZXRhLT5wZW5kaW5nX2RtYXMsCiAJCQkJICAgIGJpb19kbWFfZG9uZV9jYiwg YmlvX21ldGEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9yc3h4L2RtYS5jIGIvZHJpdmVy cy9ibG9jay9yc3h4L2RtYS5jCmluZGV4IGJlZDMyZjEuLjllNjMxOGEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvYmxvY2svcnN4eC9kbWEuYworKysgYi9kcml2ZXJzL2Jsb2NrL3JzeHgvZG1hLmMKQEAg LTY2Nyw3ICs2NjcsNyBAQCBpbnQgcnN4eF9kbWFfcXVldWVfYmlvKHN0cnVjdCByc3h4X2NhcmRp bmZvICpjYXJkLAogCWludCBzdDsKIAlpbnQgaTsKIAotCWFkZHI4ID0gYmlvLT5iaV9zZWN0b3Ig PDwgOTsgLyogc2VjdG9ycyBhcmUgNTEyIGJ5dGVzICovCisJYWRkcjggPSBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yIDw8IDk7IC8qIHNlY3RvcnMgYXJlIDUxMiBieXRlcyAqLwogCWF0b21pY19zZXQo bl9kbWFzLCAwKTsKIAogCWZvciAoaSA9IDA7IGkgPCBjYXJkLT5uX3RhcmdldHM7IGkrKykgewpA QCAtNjc2LDcgKzY3Niw3IEBAIGludCByc3h4X2RtYV9xdWV1ZV9iaW8oc3RydWN0IHJzeHhfY2Fy ZGluZm8gKmNhcmQsCiAJfQogCiAJaWYgKGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkgewotCQli dl9sZW4gPSBiaW8tPmJpX3NpemU7CisJCWJ2X2xlbiA9IGJpby0+YmlfaXRlci5iaV9zaXplOwog CiAJCXdoaWxlIChidl9sZW4gPiAwKSB7CiAJCQl0Z3QgICA9IHJzeHhfZ2V0X2RtYV90Z3QoY2Fy ZCwgYWRkcjgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay91bWVtLmMgYi9kcml2ZXJzL2Js b2NrL3VtZW0uYwppbmRleCBhZDcwODY4Li5kYWI0ZjFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Js b2NrL3VtZW0uYworKysgYi9kcml2ZXJzL2Jsb2NrL3VtZW0uYwpAQCAtMzUyLDggKzM1Miw4IEBA IHN0YXRpYyBpbnQgYWRkX2JpbyhzdHJ1Y3QgY2FyZGluZm8gKmNhcmQpCiAJYmlvID0gY2FyZC0+ Y3VycmVudGJpbzsKIAlpZiAoIWJpbyAmJiBjYXJkLT5iaW8pIHsKIAkJY2FyZC0+Y3VycmVudGJp byA9IGNhcmQtPmJpbzsKLQkJY2FyZC0+Y3VycmVudF9pZHggPSBjYXJkLT5iaW8tPmJpX2lkeDsK LQkJY2FyZC0+Y3VycmVudF9zZWN0b3IgPSBjYXJkLT5iaW8tPmJpX3NlY3RvcjsKKwkJY2FyZC0+ Y3VycmVudF9pZHggPSBjYXJkLT5iaW8tPmJpX2l0ZXIuYmlfaWR4OworCQljYXJkLT5jdXJyZW50 X3NlY3RvciA9IGNhcmQtPmJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCWNhcmQtPmJpbyA9IGNh cmQtPmJpby0+YmlfbmV4dDsKIAkJaWYgKGNhcmQtPmJpbyA9PSBOVUxMKQogCQkJY2FyZC0+Ymlv dGFpbCA9ICZjYXJkLT5iaW87CkBAIC00NTEsNyArNDUxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vz c19wYWdlKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAkJaWYgKHBhZ2UtPmlkeCA+PSBiaW8tPmJpX3Zj bnQpIHsKIAkJCXBhZ2UtPmJpbyA9IGJpby0+YmlfbmV4dDsKIAkJCWlmIChwYWdlLT5iaW8pCi0J CQkJcGFnZS0+aWR4ID0gcGFnZS0+YmlvLT5iaV9pZHg7CisJCQkJcGFnZS0+aWR4ID0gcGFnZS0+ YmlvLT5iaV9pdGVyLmJpX2lkeDsKIAkJfQogCiAJCXBjaV91bm1hcF9wYWdlKGNhcmQtPmRldiwg ZGVzYy0+ZGF0YV9kbWFfaGFuZGxlLApAQCAtNTMyLDcgKzUzMiw4IEBAIHN0YXRpYyB2b2lkIG1t X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvKQog ewogCXN0cnVjdCBjYXJkaW5mbyAqY2FyZCA9IHEtPnF1ZXVlZGF0YTsKIAlwcl9kZWJ1ZygibW1f bWFrZV9yZXF1ZXN0ICVsbHUgJXVcbiIsCi0JCSAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlf c2VjdG9yLCBiaW8tPmJpX3NpemUpOworCQkgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLAorCQkgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCiAJc3Bpbl9sb2NrX2ly cSgmY2FyZC0+bG9jayk7CiAJKmNhcmQtPmJpb3RhaWwgPSBiaW87CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCmluZGV4 IDVjZGY4OGIuLjkzZmRlMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5j CisrKyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCkBAIC0xODQsNyArMTg0LDcgQEAgc3Rh dGljIHZvaWQgdmlydGJsa19iaW9fc2VuZF9kYXRhKHN0cnVjdCB2aXJ0YmxrX3JlcSAqdmJyKQog CiAJdmJyLT5mbGFncyAmPSB+VkJMS19JU19GTFVTSDsKIAl2YnItPm91dF9oZHIudHlwZSA9IDA7 Ci0JdmJyLT5vdXRfaGRyLnNlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCXZici0+b3V0X2hkci5z ZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCXZici0+b3V0X2hkci5pb3ByaW8gPSBi aW9fcHJpbyhiaW8pOwogCiAJaWYgKGJsa19iaW9fbWFwX3NnKHZibGstPmRpc2stPnF1ZXVlLCBi aW8sIHZici0+c2cpKSB7CkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIHZvaWQgdmlydGJsa19t YWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkJ dmJyLT5mbGFncyB8PSBWQkxLX1JFUV9GTFVTSDsKIAlpZiAoYmlvLT5iaV9ydyAmIFJFUV9GVUEp CiAJCXZici0+ZmxhZ3MgfD0gVkJMS19SRVFfRlVBOwotCWlmIChiaW8tPmJpX3NpemUpCisJaWYg KGJpby0+YmlfaXRlci5iaV9zaXplKQogCQl2YnItPmZsYWdzIHw9IFZCTEtfUkVRX0RBVEE7CiAK IAlpZiAodW5saWtlbHkodmJyLT5mbGFncyAmIFZCTEtfUkVRX0ZMVVNIKSkKZGlmZiAtLWdpdCBh L2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5jIGIvZHJpdmVycy9ibG9jay94ZW4t YmxrYmFjay9ibGtiYWNrLmMKaW5kZXggYmY0YjlkMi4uY2UwNjc0ZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKKysrIGIvZHJpdmVycy9ibG9jay94ZW4t YmxrYmFjay9ibGtiYWNrLmMKQEAgLTEyNTYsNyArMTI1Niw3IEBAIHN0YXRpYyBpbnQgZGlzcGF0 Y2hfcndfYmxvY2tfaW8oc3RydWN0IHhlbl9ibGtpZiAqYmxraWYsCiAJCQliaW8tPmJpX2JkZXYg ICAgPSBwcmVxLmJkZXY7CiAJCQliaW8tPmJpX3ByaXZhdGUgPSBwZW5kaW5nX3JlcTsKIAkJCWJp by0+YmlfZW5kX2lvICA9IGVuZF9ibG9ja19pb19vcDsKLQkJCWJpby0+Ymlfc2VjdG9yICA9IHBy ZXEuc2VjdG9yX251bWJlcjsKKwkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgID0gcHJlcS5zZWN0 b3JfbnVtYmVyOwogCQl9CiAKIAkJcHJlcS5zZWN0b3JfbnVtYmVyICs9IHNlZ1tpXS5uc2VjOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYyBiL2RyaXZlcnMvYmxvY2sv eGVuLWJsa2Zyb250LmMKaW5kZXggOGQ1M2VkMi4uYTJhZGU3MyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ibG9jay94ZW4tYmxrZnJvbnQuYworKysgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5j CkBAIC0xNDY4LDcgKzE0NjgsNyBAQCBzdGF0aWMgaW50IGJsa2lmX3JlY292ZXIoc3RydWN0IGJs a2Zyb250X2luZm8gKmluZm8pCiAJCQlmb3IgKGkgPSAwOyBpIDwgcGVuZGluZzsgaSsrKSB7CiAJ CQkJb2Zmc2V0ID0gKGkgKiBzZWdzICogUEFHRV9TSVpFKSA+PiA5OwogCQkJCXNpemUgPSBtaW4o KHVuc2lnbmVkIGludCkoc2VncyAqIFBBR0VfU0laRSkgPj4gOSwKLQkJCQkJICAgKHVuc2lnbmVk IGludCkoYmlvLT5iaV9zaXplID4+IDkpIC0gb2Zmc2V0KTsKKwkJCQkJICAgKHVuc2lnbmVkIGlu dCliaW9fc2VjdG9ycyhiaW8pIC0gb2Zmc2V0KTsKIAkJCQljbG9uZWRfYmlvID0gYmlvX2Nsb25l KGJpbywgR0ZQX05PSU8pOwogCQkJCUJVR19PTihjbG9uZWRfYmlvID09IE5VTEwpOwogCQkJCWJp b190cmltKGNsb25lZF9iaW8sIG9mZnNldCwgc2l6ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21k L2JjYWNoZS9hbGxvYy5jIGIvZHJpdmVycy9tZC9iY2FjaGUvYWxsb2MuYwppbmRleCBlNDVmNTU3 Li45YWZlMzJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9hbGxvYy5jCisrKyBiL2Ry aXZlcnMvbWQvYmNhY2hlL2FsbG9jLmMKQEAgLTE3OCwxMiArMTc4LDEyIEBAIHN0YXRpYyB2b2lk IGRvX2Rpc2NhcmQoc3RydWN0IGNhY2hlICpjYSwgbG9uZyBidWNrZXQpCiAKIAliaW9faW5pdCgm ZC0+YmlvKTsKIAotCWQtPmJpby5iaV9zZWN0b3IJPSBidWNrZXRfdG9fc2VjdG9yKGNhLT5zZXQs IGQtPmJ1Y2tldCk7CisJZC0+YmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gYnVja2V0X3RvX3NlY3Rv cihjYS0+c2V0LCBkLT5idWNrZXQpOwogCWQtPmJpby5iaV9iZGV2CQk9IGNhLT5iZGV2OwogCWQt PmJpby5iaV9ydwkJPSBSRVFfV1JJVEV8UkVRX0RJU0NBUkQ7CiAJZC0+YmlvLmJpX21heF92ZWNz CT0gMTsKIAlkLT5iaW8uYmlfaW9fdmVjCT0gZC0+YmlvLmJpX2lubGluZV92ZWNzOwotCWQtPmJp by5iaV9zaXplCQk9IGJ1Y2tldF9ieXRlcyhjYSk7CisJZC0+YmlvLmJpX2l0ZXIuYmlfc2l6ZQk9 IGJ1Y2tldF9ieXRlcyhjYSk7CiAJZC0+YmlvLmJpX2VuZF9pbwk9IGRpc2NhcmRfZW5kaW87CiAJ YmlvX3NldF9wcmlvKCZkLT5iaW8sIElPUFJJT19QUklPX1ZBTFVFKElPUFJJT19DTEFTU19JRExF LCAwKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL2J0cmVlLmMgYi9kcml2ZXJz L21kL2JjYWNoZS9idHJlZS5jCmluZGV4IGVlMzcyODguLjkzM2VkOGQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbWQvYmNhY2hlL2J0cmVlLmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvYnRyZWUuYwpA QCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgYmNoX2J0cmVlX25vZGVfcmVhZChzdHJ1Y3QgYnRyZWUg KmIpCiAKIAliaW8gPSBiY2hfYmJpb19hbGxvYyhiLT5jKTsKIAliaW8tPmJpX3J3CT0gUkVRX01F VEF8UkVBRF9TWU5DOwotCWJpby0+Ymlfc2l6ZQk9IEtFWV9TSVpFKCZiLT5rZXkpIDw8IDk7CisJ YmlvLT5iaV9pdGVyLmJpX3NpemUgPSBLRVlfU0laRSgmYi0+a2V5KSA8PCA5OwogCWJpby0+Ymlf ZW5kX2lvCT0gYnRyZWVfbm9kZV9yZWFkX2VuZGlvOwogCWJpby0+YmlfcHJpdmF0ZQk9ICZjbDsK IApAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyB2b2lkIGRvX2J0cmVlX25vZGVfd3JpdGUoc3Ry dWN0IGJ0cmVlICpiKQogCWItPmJpby0+YmlfZW5kX2lvCT0gYnRyZWVfbm9kZV93cml0ZV9lbmRp bzsKIAliLT5iaW8tPmJpX3ByaXZhdGUJPSAmYi0+aW8uY2w7CiAJYi0+YmlvLT5iaV9ydwkJPSBS RVFfTUVUQXxXUklURV9TWU5DfFJFUV9GVUE7Ci0JYi0+YmlvLT5iaV9zaXplCQk9IHNldF9ibG9j a3MoaSwgYi0+YykgKiBibG9ja19ieXRlcyhiLT5jKTsKKwliLT5iaW8tPmJpX2l0ZXIuYmlfc2l6 ZQk9IHNldF9ibG9ja3MoaSwgYi0+YykgKiBibG9ja19ieXRlcyhiLT5jKTsKIAliY2hfYmlvX21h cChiLT5iaW8sIGkpOwogCiAJLyoKQEAgLTIxNTIsMTEgKzIxNTIsMTEgQEAgc3RhdGljIGludCBz dWJtaXRfcGFydGlhbF9jYWNoZV9taXNzKHN0cnVjdCBidHJlZSAqYiwgc3RydWN0IGJ0cmVlX29w ICpvcCwKIAkJdW5zaWduZWQgc2VjdG9ycyA9IElOVF9NQVg7CiAKIAkJaWYgKEtFWV9JTk9ERShr KSA9PSBvcC0+aW5vZGUpIHsKLQkJCWlmIChLRVlfU1RBUlQoaykgPD0gYmlvLT5iaV9zZWN0b3Ip CisJCQlpZiAoS0VZX1NUQVJUKGspIDw9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IpCiAJCQkJYnJl YWs7CiAKIAkJCXNlY3RvcnMgPSBtaW5fdCh1aW50NjRfdCwgc2VjdG9ycywKLQkJCQkJS0VZX1NU QVJUKGspIC0gYmlvLT5iaV9zZWN0b3IpOworCQkJCQlLRVlfU1RBUlQoaykgLSBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yKTsKIAkJfQogCiAJCXJldCA9IHMtPmQtPmNhY2hlX21pc3MoYiwgcywgYmlv LCBzZWN0b3JzKTsKQEAgLTIxODgsMTIgKzIxODgsMTIgQEAgc3RhdGljIGludCBzdWJtaXRfcGFy dGlhbF9jYWNoZV9oaXQoc3RydWN0IGJ0cmVlICpiLCBzdHJ1Y3QgYnRyZWVfb3AgKm9wLAogCiAJ d2hpbGUgKCFvcC0+bG9va3VwX2RvbmUgJiYKIAkgICAgICAgS0VZX0lOT0RFKGspID09IG9wLT5p bm9kZSAmJgotCSAgICAgICBiaW8tPmJpX3NlY3RvciA8IEtFWV9PRkZTRVQoaykpIHsKKwkgICAg ICAgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8IEtFWV9PRkZTRVQoaykpIHsKIAkJc3RydWN0IGJr ZXkgKmJpb19rZXk7CiAJCXNlY3Rvcl90IHNlY3RvciA9IFBUUl9PRkZTRVQoaywgcHRyKSArCi0J CQkoYmlvLT5iaV9zZWN0b3IgLSBLRVlfU1RBUlQoaykpOworCQkJKGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgLSBLRVlfU1RBUlQoaykpOwogCQl1bnNpZ25lZCBzZWN0b3JzID0gbWluX3QodWludDY0 X3QsIElOVF9NQVgsCi0JCQkJCSBLRVlfT0ZGU0VUKGspIC0gYmlvLT5iaV9zZWN0b3IpOworCQkJ CUtFWV9PRkZTRVQoaykgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCQluID0gYmNoX2Jp b19zcGxpdChiaW8sIHNlY3RvcnMsIEdGUF9OT0lPLCBzLT5kLT5iaW9fc3BsaXQpOwogCQlpZiAo biA9PSBiaW8pCkBAIC0yMjMyLDcgKzIyMzIsOCBAQCBpbnQgYmNoX2J0cmVlX3NlYXJjaF9yZWN1 cnNlKHN0cnVjdCBidHJlZSAqYiwgc3RydWN0IGJ0cmVlX29wICpvcCkKIAlpbnQgcmV0ID0gMDsK IAlzdHJ1Y3QgYmtleSAqazsKIAlzdHJ1Y3QgYnRyZWVfaXRlciBpdGVyOwotCWJjaF9idHJlZV9p dGVyX2luaXQoYiwgJml0ZXIsICZLRVkob3AtPmlub2RlLCBiaW8tPmJpX3NlY3RvciwgMCkpOwor CWJjaF9idHJlZV9pdGVyX2luaXQoYiwgJml0ZXIsICZLRVkob3AtPmlub2RlLAorCQkJCQkgICBi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCAwKSk7CiAKIAlkbyB7CiAJCWsgPSBiY2hfYnRyZWVfaXRl cl9uZXh0X2ZpbHRlcigmaXRlciwgYiwgYmNoX3B0cl9iYWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9iY2FjaGUvZGVidWcuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL2RlYnVnLmMKaW5kZXggNTQ1 NjgwYi4uODRjOTNhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvZGVidWcuYworKysg Yi9kcml2ZXJzL21kL2JjYWNoZS9kZWJ1Zy5jCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBiY2hf ZGF0YV92ZXJpZnkoc3RydWN0IHNlYXJjaCAqcykKIAkJCXByaW50ayhLRVJOX0VSUgogCQkJICAg ICAgICJiY2FjaGUgKCVzKTogdmVyaWZ5IGZhaWxlZCBhdCBzZWN0b3IgJWxsdVxuIiwKIAkJCSAg ICAgICBiZGV2bmFtZShkYy0+YmRldiwgbmFtZSksCi0JCQkgICAgICAgKHVpbnQ2NF90KSBzLT5v cmlnX2Jpby0+Ymlfc2VjdG9yKTsKKwkJCSAgICAgICAodWludDY0X3QpIHMtPm9yaWdfYmlvLT5i aV9pdGVyLmJpX3NlY3Rvcik7CiAKIAkJa3VubWFwKGJ2LT5idl9wYWdlKTsKIAkJa3VubWFwKGNo ZWNrLT5iaV9pb192ZWNbaV0uYnZfcGFnZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2JjYWNo ZS9pby5jIGIvZHJpdmVycy9tZC9iY2FjaGUvaW8uYwppbmRleCA5MDU2NjMyLi5jYzRiYTJkIDEw MDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9pby5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hl L2lvLmMKQEAgLTIxLDE4ICsyMSwxOCBAQCBzdGF0aWMgdm9pZCBiY2hfYmlfaWR4X2hhY2tfZW5k aW8oc3RydWN0IGJpbyAqYmlvLCBpbnQgZXJyb3IpCiAKIHN0YXRpYyB2b2lkIGJjaF9nZW5lcmlj X21ha2VfcmVxdWVzdF9oYWNrKHN0cnVjdCBiaW8gKmJpbykKIHsKLQlpZiAoYmlvLT5iaV9pZHgp IHsKKwlpZiAoYmlvLT5iaV9pdGVyLmJpX2lkeCkgewogCQlzdHJ1Y3QgYmlvICpjbG9uZSA9IGJp b19hbGxvYyhHRlBfTk9JTywgYmlvX3NlZ21lbnRzKGJpbykpOwogCiAJCW1lbWNweShjbG9uZS0+ YmlfaW9fdmVjLAogCQkgICAgICAgYmlvX2lvdmVjKGJpbyksCiAJCSAgICAgICBiaW9fc2VnbWVu dHMoYmlvKSAqIHNpemVvZihzdHJ1Y3QgYmlvX3ZlYykpOwogCi0JCWNsb25lLT5iaV9zZWN0b3IJ PSBiaW8tPmJpX3NlY3RvcjsKKwkJY2xvbmUtPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmlvLT5iaV9p dGVyLmJpX3NlY3RvcjsKIAkJY2xvbmUtPmJpX2JkZXYJCT0gYmlvLT5iaV9iZGV2OwogCQljbG9u ZS0+YmlfcncJCT0gYmlvLT5iaV9ydzsKIAkJY2xvbmUtPmJpX3ZjbnQJCT0gYmlvX3NlZ21lbnRz KGJpbyk7Ci0JCWNsb25lLT5iaV9zaXplCQk9IGJpby0+Ymlfc2l6ZTsKKwkJY2xvbmUtPmJpX2l0 ZXIuYmlfc2l6ZQk9IGJpby0+YmlfaXRlci5iaV9zaXplOwogCiAJCWNsb25lLT5iaV9wcml2YXRl CT0gYmlvOwogCQljbG9uZS0+YmlfZW5kX2lvCT0gYmNoX2JpX2lkeF9oYWNrX2VuZGlvOwpAQCAt NzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBiY2hfZ2VuZXJpY19tYWtlX3JlcXVlc3RfaGFjayhz dHJ1Y3QgYmlvICpiaW8pCiBzdHJ1Y3QgYmlvICpiY2hfYmlvX3NwbGl0KHN0cnVjdCBiaW8gKmJp bywgaW50IHNlY3RvcnMsCiAJCQkgIGdmcF90IGdmcCwgc3RydWN0IGJpb19zZXQgKmJzKQogewot CXVuc2lnbmVkIGlkeCA9IGJpby0+YmlfaWR4LCB2Y250ID0gMCwgbmJ5dGVzID0gc2VjdG9ycyA8 PCA5OworCXVuc2lnbmVkIGlkeCA9IGJpby0+YmlfaXRlci5iaV9pZHgsIHZjbnQgPSAwLCBuYnl0 ZXMgPSBzZWN0b3JzIDw8IDk7CiAJc3RydWN0IGJpb192ZWMgKmJ2OwogCXN0cnVjdCBiaW8gKnJl dCA9IE5VTEw7CiAKQEAgLTkwLDcgKzkwLDcgQEAgc3RydWN0IGJpbyAqYmNoX2Jpb19zcGxpdChz dHJ1Y3QgYmlvICpiaW8sIGludCBzZWN0b3JzLAogCX0KIAogCWJpb19mb3JfZWFjaF9zZWdtZW50 KGJ2LCBiaW8sIGlkeCkgewotCQl2Y250ID0gaWR4IC0gYmlvLT5iaV9pZHg7CisJCXZjbnQgPSBp ZHggLSBiaW8tPmJpX2l0ZXIuYmlfaWR4OwogCiAJCWlmICghbmJ5dGVzKSB7CiAJCQlyZXQgPSBi aW9fYWxsb2NfYmlvc2V0KGdmcCwgdmNudCwgYnMpOwpAQCAtMTE5LDE1ICsxMTksMTUgQEAgc3Ry dWN0IGJpbyAqYmNoX2Jpb19zcGxpdChzdHJ1Y3QgYmlvICpiaW8sIGludCBzZWN0b3JzLAogCX0K IG91dDoKIAlyZXQtPmJpX2JkZXYJPSBiaW8tPmJpX2JkZXY7Ci0JcmV0LT5iaV9zZWN0b3IJPSBi aW8tPmJpX3NlY3RvcjsKLQlyZXQtPmJpX3NpemUJPSBzZWN0b3JzIDw8IDk7CisJcmV0LT5iaV9p dGVyLmJpX3NlY3Rvcgk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CisJcmV0LT5iaV9pdGVyLmJp X3NpemUJPSBzZWN0b3JzIDw8IDk7CiAJcmV0LT5iaV9ydwk9IGJpby0+Ymlfcnc7CiAJcmV0LT5i aV92Y250CT0gdmNudDsKIAlyZXQtPmJpX21heF92ZWNzID0gdmNudDsKIAotCWJpby0+Ymlfc2Vj dG9yCSs9IHNlY3RvcnM7Ci0JYmlvLT5iaV9zaXplCS09IHNlY3RvcnMgPDwgOTsKLQliaW8tPmJp X2lkeAkgPSBpZHg7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvcgkrPSBzZWN0b3JzOworCWJpby0+ YmlfaXRlci5iaV9zaXplCS09IHNlY3RvcnMgPDwgOTsKKwliaW8tPmJpX2l0ZXIuYmlfaWR4CSA9 IGlkeDsKIAogCWlmIChiaW9faW50ZWdyaXR5KGJpbykpIHsKIAkJaWYgKGJpb19pbnRlZ3JpdHlf Y2xvbmUocmV0LCBiaW8sIGdmcCkpIHsKQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0aWMgdW5zaWdu ZWQgYmNoX2Jpb19tYXhfc2VjdG9ycyhzdHJ1Y3QgYmlvICpiaW8pCiAJCWJpb19mb3JfZWFjaF9z ZWdtZW50KGJ2LCBiaW8sIGkpIHsKIAkJCXN0cnVjdCBidmVjX21lcmdlX2RhdGEgYnZtID0gewog CQkJCS5iaV9iZGV2CT0gYmlvLT5iaV9iZGV2LAotCQkJCS5iaV9zZWN0b3IJPSBiaW8tPmJpX3Nl Y3RvciwKKwkJCQkuYmlfc2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJCQkuYmlf c2l6ZQk9IHJldCA8PCA5LAogCQkJCS5iaV9ydwkJPSBiaW8tPmJpX3J3LAogCQkJfTsKQEAgLTI3 Miw4ICsyNzIsOCBAQCB2b2lkIF9fYmNoX3N1Ym1pdF9iYmlvKHN0cnVjdCBiaW8gKmJpbywgc3Ry dWN0IGNhY2hlX3NldCAqYykKIHsKIAlzdHJ1Y3QgYmJpbyAqYiA9IGNvbnRhaW5lcl9vZihiaW8s IHN0cnVjdCBiYmlvLCBiaW8pOwogCi0JYmlvLT5iaV9zZWN0b3IJPSBQVFJfT0ZGU0VUKCZiLT5r ZXksIDApOwotCWJpby0+YmlfYmRldgk9IFBUUl9DQUNIRShjLCAmYi0+a2V5LCAwKS0+YmRldjsK KwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gUFRSX09GRlNFVCgmYi0+a2V5LCAwKTsKKwliaW8t PmJpX2JkZXYJCT0gUFRSX0NBQ0hFKGMsICZiLT5rZXksIDApLT5iZGV2OwogCiAJYi0+c3VibWl0 X3RpbWVfdXMgPSBsb2NhbF9jbG9ja191cygpOwogCWNsb3N1cmVfYmlvX3N1Ym1pdChiaW8sIGJp by0+YmlfcHJpdmF0ZSwgUFRSX0NBQ0hFKGMsICZiLT5rZXksIDApKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvYmNhY2hlL2pvdXJuYWwuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL2pvdXJuYWwuYwpp bmRleCBiYTk1YWI4Li4yMTY5YWQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9qb3Vy bmFsLmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvam91cm5hbC5jCkBAIC00OSwxMCArNDksMTAg QEAgcmVyZWFkOgkJbGVmdCA9IGNhLT5zYi5idWNrZXRfc2l6ZSAtIG9mZnNldDsKIAkJbGVuID0g bWluX3QodW5zaWduZWQsIGxlZnQsIFBBR0VfU0VDVE9SUyAqIDgpOwogCiAJCWJpb19yZXNldChi aW8pOwotCQliaW8tPmJpX3NlY3Rvcgk9IGJ1Y2tldCArIG9mZnNldDsKKwkJYmlvLT5iaV9pdGVy LmJpX3NlY3Rvcgk9IGJ1Y2tldCArIG9mZnNldDsKIAkJYmlvLT5iaV9iZGV2CT0gY2EtPmJkZXY7 CiAJCWJpby0+YmlfcncJPSBSRUFEOwotCQliaW8tPmJpX3NpemUJPSBsZW4gPDwgOTsKKwkJYmlv LT5iaV9pdGVyLmJpX3NpemUJPSBsZW4gPDwgOTsKIAogCQliaW8tPmJpX2VuZF9pbwk9IGpvdXJu YWxfcmVhZF9lbmRpbzsKIAkJYmlvLT5iaV9wcml2YXRlID0gJm9wLT5jbDsKQEAgLTQ0NiwxMyAr NDQ2LDEzIEBAIHN0YXRpYyB2b2lkIGRvX2pvdXJuYWxfZGlzY2FyZChzdHJ1Y3QgY2FjaGUgKmNh KQogCQlhdG9taWNfc2V0KCZqYS0+ZGlzY2FyZF9pbl9mbGlnaHQsIERJU0NBUkRfSU5fRkxJR0hU KTsKIAogCQliaW9faW5pdChiaW8pOwotCQliaW8tPmJpX3NlY3RvcgkJPSBidWNrZXRfdG9fc2Vj dG9yKGNhLT5zZXQsCisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IJPSBidWNrZXRfdG9fc2VjdG9y KGNhLT5zZXQsCiAJCQkJCQljYS0+c2IuZFtqYS0+ZGlzY2FyZF9pZHhdKTsKIAkJYmlvLT5iaV9i ZGV2CQk9IGNhLT5iZGV2OwogCQliaW8tPmJpX3J3CQk9IFJFUV9XUklURXxSRVFfRElTQ0FSRDsK IAkJYmlvLT5iaV9tYXhfdmVjcwk9IDE7CiAJCWJpby0+YmlfaW9fdmVjCQk9IGJpby0+YmlfaW5s aW5lX3ZlY3M7Ci0JCWJpby0+Ymlfc2l6ZQkJPSBidWNrZXRfYnl0ZXMoY2EpOworCQliaW8tPmJp X2l0ZXIuYmlfc2l6ZQk9IGJ1Y2tldF9ieXRlcyhjYSk7CiAJCWJpby0+YmlfZW5kX2lvCQk9IGpv dXJuYWxfZGlzY2FyZF9lbmRpbzsKIAogCQljbG9zdXJlX2dldCgmY2EtPnNldC0+Y2wpOwpAQCAt NjIzLDEwICs2MjMsMTAgQEAgc3RhdGljIHZvaWQgam91cm5hbF93cml0ZV91bmxvY2tlZChzdHJ1 Y3QgY2xvc3VyZSAqY2wpCiAJCWF0b21pY19sb25nX2FkZChzZWN0b3JzLCAmY2EtPm1ldGFfc2Vj dG9yc193cml0dGVuKTsKIAogCQliaW9fcmVzZXQoYmlvKTsKLQkJYmlvLT5iaV9zZWN0b3IJPSBQ VFJfT0ZGU0VUKGssIGkpOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gUFRSX09GRlNFVChr LCBpKTsKIAkJYmlvLT5iaV9iZGV2CT0gY2EtPmJkZXY7CiAJCWJpby0+YmlfcncJPSBSRVFfV1JJ VEV8UkVRX1NZTkN8UkVRX01FVEF8UkVRX0ZMVVNIfFJFUV9GVUE7Ci0JCWJpby0+Ymlfc2l6ZQk9 IHNlY3RvcnMgPDwgOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBzZWN0b3JzIDw8IDk7CiAK IAkJYmlvLT5iaV9lbmRfaW8JPSBqb3VybmFsX3dyaXRlX2VuZGlvOwogCQliaW8tPmJpX3ByaXZh dGUgPSB3OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvbW92aW5nZ2MuYyBiL2RyaXZl cnMvbWQvYmNhY2hlL21vdmluZ2djLmMKaW5kZXggMWEzYjRmNC4uZWY2MzBmNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9tZC9iY2FjaGUvbW92aW5nZ2MuYworKysgYi9kcml2ZXJzL21kL2JjYWNoZS9t b3ZpbmdnYy5jCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyB2b2lkIG1vdmluZ19pbml0KHN0cnVj dCBtb3ZpbmdfaW8gKmlvKQogCWJpb19nZXQoYmlvKTsKIAliaW9fc2V0X3ByaW8oYmlvLCBJT1BS SU9fUFJJT19WQUxVRShJT1BSSU9fQ0xBU1NfSURMRSwgMCkpOwogCi0JYmlvLT5iaV9zaXplCQk9 IEtFWV9TSVpFKCZpby0+dy0+a2V5KSA8PCA5OworCWJpby0+YmlfaXRlci5iaV9zaXplCT0gS0VZ X1NJWkUoJmlvLT53LT5rZXkpIDw8IDk7CiAJYmlvLT5iaV9tYXhfdmVjcwk9IERJVl9ST1VORF9V UChLRVlfU0laRSgmaW8tPnctPmtleSksCiAJCQkJCSAgICAgICBQQUdFX1NFQ1RPUlMpOwogCWJp by0+YmlfcHJpdmF0ZQkJPSAmaW8tPnMuY2w7CkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyB2b2lk IHdyaXRlX21vdmluZyhzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJaWYgKCFzLT5lcnJvcikgewogCQlt b3ZpbmdfaW5pdChpbyk7CiAKLQkJaW8tPmJpby5iaW8uYmlfc2VjdG9yCT0gS0VZX1NUQVJUKCZp by0+dy0+a2V5KTsKKwkJaW8tPmJpby5iaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBLRVlfU1RBUlQo JmlvLT53LT5rZXkpOwogCQlzLT5vcC5sb2NrCQk9IC0xOwogCQlzLT5vcC53cml0ZV9wcmlvCT0g MTsKIAkJcy0+b3AuY2FjaGVfYmlvCQk9ICZpby0+YmlvLmJpbzsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWQvYmNhY2hlL3JlcXVlc3QuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYwppbmRl eCAyYzJlMWMxLi5kOTRjMDhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0 LmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jCkBAIC0yMTksNyArMjE5LDcgQEAg c3RhdGljIHZvaWQgYmlvX2ludmFsaWRhdGUoc3RydWN0IGNsb3N1cmUgKmNsKQogCXN0cnVjdCBi aW8gKmJpbyA9IG9wLT5jYWNoZV9iaW87CiAKIAlwcl9kZWJ1ZygiaW52YWxpZGF0aW5nICVpIHNl Y3RvcnMgZnJvbSAlbGx1IiwKLQkJIGJpb19zZWN0b3JzKGJpbyksICh1aW50NjRfdCkgYmlvLT5i aV9zZWN0b3IpOworCQkgYmlvX3NlY3RvcnMoYmlvKSwgKHVpbnQ2NF90KSBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAogCXdoaWxlIChiaW9fc2VjdG9ycyhiaW8pKSB7CiAJCXVuc2lnbmVkIGxl biA9IG1pbihiaW9fc2VjdG9ycyhiaW8pLCAxVSA8PCAxNCk7CkBAIC0yMjcsMTEgKzIyNywxMSBA QCBzdGF0aWMgdm9pZCBiaW9faW52YWxpZGF0ZShzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJCWlmIChi Y2hfa2V5bGlzdF9yZWFsbG9jKCZvcC0+a2V5cywgMCwgb3AtPmMpKQogCQkJZ290byBvdXQ7CiAK LQkJYmlvLT5iaV9zZWN0b3IJKz0gbGVuOwotCQliaW8tPmJpX3NpemUJLT0gbGVuIDw8IDk7CisJ CWJpby0+YmlfaXRlci5iaV9zZWN0b3IJKz0gbGVuOworCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZQkt PSBsZW4gPDwgOTsKIAogCQliY2hfa2V5bGlzdF9hZGQoJm9wLT5rZXlzLAotCQkJCSZLRVkob3At Pmlub2RlLCBiaW8tPmJpX3NlY3RvciwgbGVuKSk7CisJCQkJJktFWShvcC0+aW5vZGUsIGJpby0+ YmlfaXRlci5iaV9zZWN0b3IsIGxlbikpOwogCX0KIAogCW9wLT5pbnNlcnRfZGF0YV9kb25lID0g dHJ1ZTsKQEAgLTUwOSw3ICs1MDksNyBAQCBzdGF0aWMgdm9pZCBiY2hfaW5zZXJ0X2RhdGFfbG9v cChzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJCWsgPSBvcC0+a2V5cy50b3A7CiAJCWJrZXlfaW5pdChr KTsKIAkJU0VUX0tFWV9JTk9ERShrLCBvcC0+aW5vZGUpOwotCQlTRVRfS0VZX09GRlNFVChrLCBi aW8tPmJpX3NlY3Rvcik7CisJCVNFVF9LRVlfT0ZGU0VUKGssIGJpby0+YmlfaXRlci5iaV9zZWN0 b3IpOwogCiAJCWlmICghYmNoX2FsbG9jX3NlY3RvcnMoaywgYmlvX3NlY3RvcnMoYmlvKSwgcykp CiAJCQlnb3RvIGVycjsKQEAgLTgwMiw5ICs4MDIsMTIgQEAgc3RhdGljIHZvaWQgcmVxdWVzdF9y ZWFkX2RvbmUoc3RydWN0IGNsb3N1cmUgKmNsKQogCiAJaWYgKHMtPm9wLmNhY2hlX2Jpbykgewog CQliaW9fcmVzZXQocy0+b3AuY2FjaGVfYmlvKTsKLQkJcy0+b3AuY2FjaGVfYmlvLT5iaV9zZWN0 b3IJPSBzLT5jYWNoZV9taXNzLT5iaV9zZWN0b3I7Ci0JCXMtPm9wLmNhY2hlX2Jpby0+YmlfYmRl dgk9IHMtPmNhY2hlX21pc3MtPmJpX2JkZXY7Ci0JCXMtPm9wLmNhY2hlX2Jpby0+Ymlfc2l6ZQk9 IHMtPmNhY2hlX2Jpb19zZWN0b3JzIDw8IDk7CisJCXMtPm9wLmNhY2hlX2Jpby0+YmlfaXRlci5i aV9zZWN0b3IgPQorCQkJcy0+Y2FjaGVfbWlzcy0+YmlfaXRlci5iaV9zZWN0b3I7CisJCXMtPm9w LmNhY2hlX2Jpby0+YmlfYmRldiA9CisJCQlzLT5jYWNoZV9taXNzLT5iaV9iZGV2OworCQlzLT5v cC5jYWNoZV9iaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9CisJCQlzLT5jYWNoZV9iaW9fc2VjdG9ycyA8 PCA5OwogCQliY2hfYmlvX21hcChzLT5vcC5jYWNoZV9iaW8sIE5VTEwpOwogCiAJCWJpb19jb3B5 X2RhdGEocy0+Y2FjaGVfbWlzcywgcy0+b3AuY2FjaGVfYmlvKTsKQEAgLTg4Myw5ICs4ODYsOSBA QCBzdGF0aWMgaW50IGNhY2hlZF9kZXZfY2FjaGVfbWlzcyhzdHJ1Y3QgYnRyZWUgKmIsIHN0cnVj dCBzZWFyY2ggKnMsCiAJaWYgKCFzLT5vcC5jYWNoZV9iaW8pCiAJCWdvdG8gb3V0X3N1Ym1pdDsK IAotCXMtPm9wLmNhY2hlX2Jpby0+Ymlfc2VjdG9yCT0gbWlzcy0+Ymlfc2VjdG9yOworCXMtPm9w LmNhY2hlX2Jpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBtaXNzLT5iaV9pdGVyLmJpX3NlY3RvcjsK IAlzLT5vcC5jYWNoZV9iaW8tPmJpX2JkZXYJPSBtaXNzLT5iaV9iZGV2OwotCXMtPm9wLmNhY2hl X2Jpby0+Ymlfc2l6ZQk9IHMtPmNhY2hlX2Jpb19zZWN0b3JzIDw8IDk7CisJcy0+b3AuY2FjaGVf YmlvLT5iaV9pdGVyLmJpX3NpemUgPSBzLT5jYWNoZV9iaW9fc2VjdG9ycyA8PCA5OwogCiAJcy0+ b3AuY2FjaGVfYmlvLT5iaV9lbmRfaW8JPSByZXF1ZXN0X2VuZGlvOwogCXMtPm9wLmNhY2hlX2Jp by0+YmlfcHJpdmF0ZQk9ICZzLT5jbDsKQEAgLTkzOSw3ICs5NDIsNyBAQCBzdGF0aWMgdm9pZCBy ZXF1ZXN0X3dyaXRlKHN0cnVjdCBjYWNoZWRfZGV2ICpkYywgc3RydWN0IHNlYXJjaCAqcykKIAlz dHJ1Y3QgY2xvc3VyZSAqY2wgPSAmcy0+Y2w7CiAJc3RydWN0IGJpbyAqYmlvID0gJnMtPmJpby5i aW87CiAJc3RydWN0IGJrZXkgc3RhcnQsIGVuZDsKLQlzdGFydCA9IEtFWShkYy0+ZGlzay5pZCwg YmlvLT5iaV9zZWN0b3IsIDApOworCXN0YXJ0ID0gS0VZKGRjLT5kaXNrLmlkLCBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLCAwKTsKIAllbmQgPSBLRVkoZGMtPmRpc2suaWQsIGJpb19lbmRfc2VjdG9y KGJpbyksIDApOwogCiAJYmNoX2tleWJ1Zl9jaGVja19vdmVybGFwcGluZygmcy0+b3AuYy0+bW92 aW5nX2djX2tleXMsICZzdGFydCwgJmVuZCk7CkBAIC05ODAsNyArOTgzLDcgQEAgc3RhdGljIHZv aWQgcmVxdWVzdF93cml0ZShzdHJ1Y3QgY2FjaGVkX2RldiAqZGMsIHN0cnVjdCBzZWFyY2ggKnMp CiAJCQlzLT5vcC5jYWNoZV9iaW8gPSBiaW9fY2xvbmVfYmlvc2V0KGJpbywgR0ZQX05PSU8sCiAJ CQkJCQkJICAgZGMtPmRpc2suYmlvX3NwbGl0KTsKIAotCQkJYmlvLT5iaV9zaXplID0gMDsKKwkJ CWJpby0+YmlfaXRlci5iaV9zaXplID0gMDsKIAkJCWJpby0+YmlfdmNudCA9IDA7CiAJCQljbG9z dXJlX2Jpb19zdWJtaXQoYmlvLCBjbCwgcy0+ZCk7CiAJCX0gZWxzZSB7CkBAIC0xMDgxLDggKzEw ODQsOCBAQCBzdGF0aWMgdm9pZCBjaGVja19zaG91bGRfc2tpcChzdHJ1Y3QgY2FjaGVkX2RldiAq ZGMsIHN0cnVjdCBzZWFyY2ggKnMpCiAJICAgICAoYmlvLT5iaV9ydyAmIFJFUV9XUklURSkpKQog CQlnb3RvIHNraXA7CiAKLQlpZiAoYmlvLT5iaV9zZWN0b3IgICAmIChjLT5zYi5ibG9ja19zaXpl IC0gMSkgfHwKLQkgICAgYmlvX3NlY3RvcnMoYmlvKSAmIChjLT5zYi5ibG9ja19zaXplIC0gMSkp IHsKKwlpZiAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAmIChjLT5zYi5ibG9ja19zaXplIC0gMSkg fHwKKwkgICAgYmlvX3NlY3RvcnMoYmlvKSAgICAgICAmIChjLT5zYi5ibG9ja19zaXplIC0gMSkp IHsKIAkJcHJfZGVidWcoInNraXBwaW5nIHVuYWxpZ25lZCBpbyIpOwogCQlnb3RvIHNraXA7CiAJ fQpAQCAtMTEwMSw4ICsxMTA0LDkgQEAgc3RhdGljIHZvaWQgY2hlY2tfc2hvdWxkX3NraXAoc3Ry dWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3Qgc2VhcmNoICpzKQogCiAJCXNwaW5fbG9jaygmZGMt PmlvX2xvY2spOwogCi0JCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KGksIGlvaGFzaChkYywgYmlvLT5i aV9zZWN0b3IpLCBoYXNoKQotCQkJaWYgKGktPmxhc3QgPT0gYmlvLT5iaV9zZWN0b3IgJiYKKwkJ aGxpc3RfZm9yX2VhY2hfZW50cnkoaSwgaW9oYXNoKGRjLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y KSwKKwkJCQkgICAgIGhhc2gpCisJCQlpZiAoaS0+bGFzdCA9PSBiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yICYmCiAJCQkgICAgdGltZV9iZWZvcmUoamlmZmllcywgaS0+amlmZmllcykpCiAJCQkJZ290 byBmb3VuZDsKIApAQCAtMTExMSw4ICsxMTE1LDggQEAgc3RhdGljIHZvaWQgY2hlY2tfc2hvdWxk X3NraXAoc3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3Qgc2VhcmNoICpzKQogCQlhZGRfc2Vx dWVudGlhbChzLT50YXNrKTsKIAkJaS0+c2VxdWVudGlhbCA9IDA7CiBmb3VuZDoKLQkJaWYgKGkt PnNlcXVlbnRpYWwgKyBiaW8tPmJpX3NpemUgPiBpLT5zZXF1ZW50aWFsKQotCQkJaS0+c2VxdWVu dGlhbAkrPSBiaW8tPmJpX3NpemU7CisJCWlmIChpLT5zZXF1ZW50aWFsICsgYmlvLT5iaV9pdGVy LmJpX3NpemUgPiBpLT5zZXF1ZW50aWFsKQorCQkJaS0+c2VxdWVudGlhbAkrPSBiaW8tPmJpX2l0 ZXIuYmlfc2l6ZTsKIAogCQlpLT5sYXN0CQkJID0gYmlvX2VuZF9zZWN0b3IoYmlvKTsKIAkJaS0+ amlmZmllcwkJID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoNTAwMCk7CkBAIC0xMTI0LDcg KzExMjgsNyBAQCBmb3VuZDoKIAogCQlzcGluX3VubG9jaygmZGMtPmlvX2xvY2spOwogCX0gZWxz ZSB7Ci0JCXMtPnRhc2stPnNlcXVlbnRpYWxfaW8gPSBiaW8tPmJpX3NpemU7CisJCXMtPnRhc2st PnNlcXVlbnRpYWxfaW8gPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAogCQlhZGRfc2VxdWVudGlh bChzLT50YXNrKTsKIAl9CkBAIC0xMTY0LDcgKzExNjgsNyBAQCBzdGF0aWMgdm9pZCBjYWNoZWRf ZGV2X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlv KQogCXBhcnRfc3RhdF91bmxvY2soKTsKIAogCWJpby0+YmlfYmRldiA9IGRjLT5iZGV2OwotCWJp by0+Ymlfc2VjdG9yICs9IGRjLT5zYi5kYXRhX29mZnNldDsKKwliaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yICs9IGRjLT5zYi5kYXRhX29mZnNldDsKIAogCWlmIChjYWNoZWRfZGV2X2dldChkYykpIHsK IAkJcyA9IHNlYXJjaF9hbGxvYyhiaW8sIGQpOwpAQCAtMTI0Nyw5ICsxMjUxLDkgQEAgc3RhdGlj IGludCBmbGFzaF9kZXZfY2FjaGVfbWlzcyhzdHJ1Y3QgYnRyZWUgKmIsIHN0cnVjdCBzZWFyY2gg KnMsCiAJCXNlY3RvcnMJLT0gajsKIAl9CiAKLQliaW9fYWR2YW5jZShiaW8sIG1pbihzZWN0b3Jz IDw8IDksIGJpby0+Ymlfc2l6ZSkpOworCWJpb19hZHZhbmNlKGJpbywgbWluKHNlY3RvcnMgPDwg OSwgYmlvLT5iaV9pdGVyLmJpX3NpemUpKTsKIAotCWlmICghYmlvLT5iaV9zaXplKQorCWlmICgh YmlvLT5iaV9pdGVyLmJpX3NpemUpCiAJCXMtPm9wLmxvb2t1cF9kb25lID0gdHJ1ZTsKIAogCXJl dHVybiAwOwpAQCAtMTI3Nyw3ICsxMjgxLDcgQEAgc3RhdGljIHZvaWQgZmxhc2hfZGV2X21ha2Vf cmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvKQogCQljbG9z dXJlX2NhbGwoJnMtPm9wLmNsLCBidHJlZV9yZWFkX2FzeW5jLCBOVUxMLCBjbCk7CiAJfSBlbHNl IGlmIChiaW9faGFzX2RhdGEoYmlvKSB8fCBzLT5vcC5za2lwKSB7CiAJCWJjaF9rZXlidWZfY2hl Y2tfb3ZlcmxhcHBpbmcoJnMtPm9wLmMtPm1vdmluZ19nY19rZXlzLAotCQkJCQkmS0VZKGQtPmlk LCBiaW8tPmJpX3NlY3RvciwgMCksCisJCQkJCSZLRVkoZC0+aWQsIGJpby0+YmlfaXRlci5iaV9z ZWN0b3IsIDApLAogCQkJCQkmS0VZKGQtPmlkLCBiaW9fZW5kX3NlY3RvcihiaW8pLCAwKSk7CiAK IAkJcy0+d3JpdGViYWNrCT0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL3N1 cGVyLmMgYi9kcml2ZXJzL21kL2JjYWNoZS9zdXBlci5jCmluZGV4IGRjMDczZWIuLmZmZjQ4OTQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMKKysrIGIvZHJpdmVycy9tZC9i Y2FjaGUvc3VwZXIuYwpAQCAtMjQwLDkgKzI0MCw5IEBAIHN0YXRpYyB2b2lkIF9fd3JpdGVfc3Vw ZXIoc3RydWN0IGNhY2hlX3NiICpzYiwgc3RydWN0IGJpbyAqYmlvKQogCXN0cnVjdCBjYWNoZV9z YiAqb3V0ID0gcGFnZV9hZGRyZXNzKGJpby0+YmlfaW9fdmVjWzBdLmJ2X3BhZ2UpOwogCXVuc2ln bmVkIGk7CiAKLQliaW8tPmJpX3NlY3Rvcgk9IFNCX1NFQ1RPUjsKLQliaW8tPmJpX3J3CT0gUkVR X1NZTkN8UkVRX01FVEE7Ci0JYmlvLT5iaV9zaXplCT0gU0JfU0laRTsKKwliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yCT0gU0JfU0VDVE9SOworCWJpby0+YmlfcncJCT0gUkVRX1NZTkN8UkVRX01FVEE7 CisJYmlvLT5iaV9pdGVyLmJpX3NpemUJPSBTQl9TSVpFOwogCWJjaF9iaW9fbWFwKGJpbywgTlVM TCk7CiAKIAlvdXQtPm9mZnNldAkJPSBjcHVfdG9fbGU2NChzYi0+b2Zmc2V0KTsKQEAgLTM1NCw3 ICszNTQsNyBAQCBzdGF0aWMgdm9pZCB1dWlkX2lvKHN0cnVjdCBjYWNoZV9zZXQgKmMsIHVuc2ln bmVkIGxvbmcgcncsCiAJCXN0cnVjdCBiaW8gKmJpbyA9IGJjaF9iYmlvX2FsbG9jKGMpOwogCiAJ CWJpby0+YmlfcncJPSBSRVFfU1lOQ3xSRVFfTUVUQXxydzsKLQkJYmlvLT5iaV9zaXplCT0gS0VZ X1NJWkUoaykgPDwgOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBLRVlfU0laRShrKSA8PCA5 OwogCiAJCWJpby0+YmlfZW5kX2lvCT0gdXVpZF9lbmRpbzsKIAkJYmlvLT5iaV9wcml2YXRlID0g Y2w7CkBAIC01MTAsMTAgKzUxMCwxMCBAQCBzdGF0aWMgdm9pZCBwcmlvX2lvKHN0cnVjdCBjYWNo ZSAqY2EsIHVpbnQ2NF90IGJ1Y2tldCwgdW5zaWduZWQgbG9uZyBydykKIAogCWNsb3N1cmVfaW5p dF9zdGFjayhjbCk7CiAKLQliaW8tPmJpX3NlY3Rvcgk9IGJ1Y2tldCAqIGNhLT5zYi5idWNrZXRf c2l6ZTsKLQliaW8tPmJpX2JkZXYJPSBjYS0+YmRldjsKLQliaW8tPmJpX3J3CT0gUkVRX1NZTkN8 UkVRX01FVEF8cnc7Ci0JYmlvLT5iaV9zaXplCT0gYnVja2V0X2J5dGVzKGNhKTsKKwliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yCT0gYnVja2V0ICogY2EtPnNiLmJ1Y2tldF9zaXplOworCWJpby0+Ymlf YmRldgkJPSBjYS0+YmRldjsKKwliaW8tPmJpX3J3CQk9IFJFUV9TWU5DfFJFUV9NRVRBfHJ3Owor CWJpby0+YmlfaXRlci5iaV9zaXplCT0gYnVja2V0X2J5dGVzKGNhKTsKIAogCWJpby0+YmlfZW5k X2lvCT0gcHJpb19lbmRpbzsKIAliaW8tPmJpX3ByaXZhdGUgPSBjYTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvYmNhY2hlL3V0aWwuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3V0aWwuYwppbmRleCA5 OGViODExLi5iOTk1ZDVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS91dGlsLmMKKysr IGIvZHJpdmVycy9tZC9iY2FjaGUvdXRpbC5jCkBAIC0yMDMsMTAgKzIwMywxMCBAQCB1bnNpZ25l ZCBiY2hfbmV4dF9kZWxheShzdHJ1Y3QgcmF0ZWxpbWl0ICpkLCB1aW50NjRfdCBkb25lKQogCiB2 b2lkIGJjaF9iaW9fbWFwKHN0cnVjdCBiaW8gKmJpbywgdm9pZCAqYmFzZSkKIHsKLQlzaXplX3Qg c2l6ZSA9IGJpby0+Ymlfc2l6ZTsKKwlzaXplX3Qgc2l6ZSA9IGJpby0+YmlfaXRlci5iaV9zaXpl OwogCXN0cnVjdCBiaW9fdmVjICpidiA9IGJpby0+YmlfaW9fdmVjOwogCi0JQlVHX09OKCFiaW8t PmJpX3NpemUpOworCUJVR19PTighYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCUJVR19PTihiaW8t PmJpX3ZjbnQpOwogCiAJYnYtPmJ2X29mZnNldCA9IGJhc2UgPyAoKHVuc2lnbmVkIGxvbmcpIGJh c2UpICUgUEFHRV9TSVpFIDogMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL3dyaXRl YmFjay5jIGIvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmMKaW5kZXggMjJjYmZmNS4uMDI5 YWMyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmMKKysrIGIvZHJp dmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmMKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgdm9p ZCBkaXJ0eV9pbml0KHN0cnVjdCBrZXlidWZfa2V5ICp3KQogCWlmICghaW8tPmRjLT53cml0ZWJh Y2tfcGVyY2VudCkKIAkJYmlvX3NldF9wcmlvKGJpbywgSU9QUklPX1BSSU9fVkFMVUUoSU9QUklP X0NMQVNTX0lETEUsIDApKTsKIAotCWJpby0+Ymlfc2l6ZQkJPSBLRVlfU0laRSgmdy0+a2V5KSA8 PCA5OworCWJpby0+YmlfaXRlci5iaV9zaXplCT0gS0VZX1NJWkUoJnctPmtleSkgPDwgOTsKIAli aW8tPmJpX21heF92ZWNzCT0gRElWX1JPVU5EX1VQKEtFWV9TSVpFKCZ3LT5rZXkpLCBQQUdFX1NF Q1RPUlMpOwogCWJpby0+YmlfcHJpdmF0ZQkJPSB3OwogCWJpby0+YmlfaW9fdmVjCQk9IGJpby0+ YmlfaW5saW5lX3ZlY3M7CkBAIC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVfZGly dHkoc3RydWN0IGNsb3N1cmUgKmNsKQogCiAJZGlydHlfaW5pdCh3KTsKIAlpby0+YmlvLmJpX3J3 CQk9IFdSSVRFOwotCWlvLT5iaW8uYmlfc2VjdG9yCT0gS0VZX1NUQVJUKCZ3LT5rZXkpOworCWlv LT5iaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBLRVlfU1RBUlQoJnctPmtleSk7CiAJaW8tPmJpby5i aV9iZGV2CQk9IGlvLT5kYy0+YmRldjsKIAlpby0+YmlvLmJpX2VuZF9pbwk9IGRpcnR5X2VuZGlv OwogCkBAIC00MTMsNyArNDEzLDcgQEAgc3RhdGljIHZvaWQgcmVhZF9kaXJ0eShzdHJ1Y3QgY2xv c3VyZSAqY2wpCiAJCWlvLT5kYwkJPSBkYzsKIAogCQlkaXJ0eV9pbml0KHcpOwotCQlpby0+Ymlv LmJpX3NlY3Rvcgk9IFBUUl9PRkZTRVQoJnctPmtleSwgMCk7CisJCWlvLT5iaW8uYmlfaXRlci5i aV9zZWN0b3IgPSBQVFJfT0ZGU0VUKCZ3LT5rZXksIDApOwogCQlpby0+YmlvLmJpX2JkZXYJCT0g UFRSX0NBQ0hFKGRjLT5kaXNrLmMsCiAJCQkJCQkgICAgJnctPmtleSwgMCktPmJkZXY7CiAJCWlv LT5iaW8uYmlfcncJCT0gUkVBRDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL3dyaXRl YmFjay5oIGIvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmgKaW5kZXggYzkxZjYxYi4uNjgx ZWZkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmgKKysrIGIvZHJp dmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGlubGlu ZSBib29sIHNob3VsZF93cml0ZWJhY2soc3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3QgYmlv ICpiaW8sCiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChkYy0+cGFydGlhbF9zdHJpcGVzX2V4cGVu c2l2ZSAmJgotCSAgICBiY2FjaGVfZGV2X3N0cmlwZV9kaXJ0eSgmZGMtPmRpc2ssIGJpby0+Ymlf c2VjdG9yLAorCSAgICBiY2FjaGVfZGV2X3N0cmlwZV9kaXJ0eSgmZGMtPmRpc2ssIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IsCiAJCQkJICAgIGJpb19zZWN0b3JzKGJpbykpKQogCQlyZXR1cm4gdHJ1 ZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1iaW8tcmVjb3JkLmggYi9kcml2ZXJzL21k L2RtLWJpby1yZWNvcmQuaAppbmRleCAzYThjZmEyLi41YWNlNDhlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL21kL2RtLWJpby1yZWNvcmQuaAorKysgYi9kcml2ZXJzL21kL2RtLWJpby1yZWNvcmQuaApA QCAtNDAsMTAgKzQwLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkbV9iaW9fcmVjb3JkKHN0cnVj dCBkbV9iaW9fZGV0YWlscyAqYmQsIHN0cnVjdCBiaW8gKmJpbykKIHsKIAl1bnNpZ25lZCBpOwog Ci0JYmQtPmJpX3NlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCWJkLT5iaV9zZWN0b3IgPSBiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yOwogCWJkLT5iaV9iZGV2ID0gYmlvLT5iaV9iZGV2OwotCWJkLT5i aV9zaXplID0gYmlvLT5iaV9zaXplOwotCWJkLT5iaV9pZHggPSBiaW8tPmJpX2lkeDsKKwliZC0+ Ymlfc2l6ZSA9IGJpby0+YmlfaXRlci5iaV9zaXplOworCWJkLT5iaV9pZHggPSBiaW8tPmJpX2l0 ZXIuYmlfaWR4OwogCWJkLT5iaV9mbGFncyA9IGJpby0+YmlfZmxhZ3M7CiAKIAlmb3IgKGkgPSAw OyBpIDwgYmlvLT5iaV92Y250OyBpKyspIHsKQEAgLTU2LDEwICs1NiwxMCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgZG1fYmlvX3Jlc3RvcmUoc3RydWN0IGRtX2Jpb19kZXRhaWxzICpiZCwgc3RydWN0 IGJpbyAqYmlvKQogewogCXVuc2lnbmVkIGk7CiAKLQliaW8tPmJpX3NlY3RvciA9IGJkLT5iaV9z ZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJkLT5iaV9zZWN0b3I7CiAJYmlvLT5i aV9iZGV2ID0gYmQtPmJpX2JkZXY7Ci0JYmlvLT5iaV9zaXplID0gYmQtPmJpX3NpemU7Ci0JYmlv LT5iaV9pZHggPSBiZC0+YmlfaWR4OworCWJpby0+YmlfaXRlci5iaV9zaXplID0gYmQtPmJpX3Np emU7CisJYmlvLT5iaV9pdGVyLmJpX2lkeCA9IGJkLT5iaV9pZHg7CiAJYmlvLT5iaV9mbGFncyA9 IGJkLT5iaV9mbGFnczsKIAogCWZvciAoaSA9IDA7IGkgPCBiaW8tPmJpX3ZjbnQ7IGkrKykgewpk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1idWZpby5jIGIvZHJpdmVycy9tZC9kbS1idWZpby5j CmluZGV4IDUyMjdlMDcuLjQxZWVkNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tYnVmaW8u YworKysgYi9kcml2ZXJzL21kL2RtLWJ1ZmlvLmMKQEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMg dm9pZCB1c2VfaW5saW5lX2JpbyhzdHJ1Y3QgZG1fYnVmZmVyICpiLCBpbnQgcncsIHNlY3Rvcl90 IGJsb2NrLAogCWJpb19pbml0KCZiLT5iaW8pOwogCWItPmJpby5iaV9pb192ZWMgPSBiLT5iaW9f dmVjOwogCWItPmJpby5iaV9tYXhfdmVjcyA9IERNX0JVRklPX0lOTElORV9WRUNTOwotCWItPmJp by5iaV9zZWN0b3IgPSBibG9jayA8PCBiLT5jLT5zZWN0b3JzX3Blcl9ibG9ja19iaXRzOworCWIt PmJpby5iaV9pdGVyLmJpX3NlY3RvciA9IGJsb2NrIDw8IGItPmMtPnNlY3RvcnNfcGVyX2Jsb2Nr X2JpdHM7CiAJYi0+YmlvLmJpX2JkZXYgPSBiLT5jLT5iZGV2OwogCWItPmJpby5iaV9lbmRfaW8g PSBlbmRfaW87CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tY2FjaGUtcG9saWN5LW1xLmMg Yi9kcml2ZXJzL21kL2RtLWNhY2hlLXBvbGljeS1tcS5jCmluZGV4IGRjMTEyYTcuLjZlOGFlZGIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY2FjaGUtcG9saWN5LW1xLmMKKysrIGIvZHJpdmVy cy9tZC9kbS1jYWNoZS1wb2xpY3ktbXEuYwpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgZW51bSBp b19wYXR0ZXJuIGlvdF9wYXR0ZXJuKHN0cnVjdCBpb190cmFja2VyICp0KQogCiBzdGF0aWMgdm9p ZCBpb3RfdXBkYXRlX3N0YXRzKHN0cnVjdCBpb190cmFja2VyICp0LCBzdHJ1Y3QgYmlvICpiaW8p CiB7Ci0JaWYgKGJpby0+Ymlfc2VjdG9yID09IGZyb21fb2Jsb2NrKHQtPmxhc3RfZW5kX29ibG9j aykgKyAxKQorCWlmIChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID09IGZyb21fb2Jsb2NrKHQtPmxh c3RfZW5kX29ibG9jaykgKyAxKQogCQl0LT5ucl9zZXFfc2FtcGxlcysrOwogCWVsc2UgewogCQkv KgpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyB2b2lkIGlvdF91cGRhdGVfc3RhdHMoc3RydWN0 IGlvX3RyYWNrZXIgKnQsIHN0cnVjdCBiaW8gKmJpbykKIAkJdC0+bnJfcmFuZF9zYW1wbGVzKys7 CiAJfQogCi0JdC0+bGFzdF9lbmRfb2Jsb2NrID0gdG9fb2Jsb2NrKGJpby0+Ymlfc2VjdG9yICsg YmlvX3NlY3RvcnMoYmlvKSAtIDEpOworCXQtPmxhc3RfZW5kX29ibG9jayA9IHRvX29ibG9jayhi aW9fZW5kX3NlY3RvcihiaW8pIC0gMSk7CiB9CiAKIHN0YXRpYyB2b2lkIGlvdF9jaGVja19mb3Jf cGF0dGVybl9zd2l0Y2goc3RydWN0IGlvX3RyYWNrZXIgKnQpCmRpZmYgLS1naXQgYS9kcml2ZXJz L21kL2RtLWNhY2hlLXRhcmdldC5jIGIvZHJpdmVycy9tZC9kbS1jYWNoZS10YXJnZXQuYwppbmRl eCAwZGYzZWMwLi5jOWYwZjgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdl dC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tY2FjaGUtdGFyZ2V0LmMKQEAgLTU2NSwxNCArNTY1LDE2 IEBAIHN0YXRpYyB2b2lkIHJlbWFwX3RvX29yaWdpbihzdHJ1Y3QgY2FjaGUgKmNhY2hlLCBzdHJ1 Y3QgYmlvICpiaW8pCiBzdGF0aWMgdm9pZCByZW1hcF90b19jYWNoZShzdHJ1Y3QgY2FjaGUgKmNh Y2hlLCBzdHJ1Y3QgYmlvICpiaW8sCiAJCQkgICBkbV9jYmxvY2tfdCBjYmxvY2spCiB7Ci0Jc2Vj dG9yX3QgYmlfc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX3QgYmlfc2VjdG9yID0g YmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAogCWJpby0+YmlfYmRldiA9IGNhY2hlLT5jYWNoZV9k ZXYtPmJkZXY7CiAJaWYgKCFibG9ja19zaXplX2lzX3Bvd2VyX29mX3R3byhjYWNoZSkpCi0JCWJp by0+Ymlfc2VjdG9yID0gKGZyb21fY2Jsb2NrKGNibG9jaykgKiBjYWNoZS0+c2VjdG9yc19wZXJf YmxvY2spICsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IChmcm9tX2NibG9jayhjYmxvY2sp ICoKKwkJCQkJICBjYWNoZS0+c2VjdG9yc19wZXJfYmxvY2spICsKIAkJCQlzZWN0b3JfZGl2KGJp X3NlY3RvciwgY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrKTsKIAllbHNlCi0JCWJpby0+Ymlfc2Vj dG9yID0gKGZyb21fY2Jsb2NrKGNibG9jaykgPDwgY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrX3No aWZ0KSB8CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSAoZnJvbV9jYmxvY2soY2Jsb2NrKSA8 PAorCQkJCQkgIGNhY2hlLT5zZWN0b3JzX3Blcl9ibG9ja19zaGlmdCkgfAogCQkJCShiaV9zZWN0 b3IgJiAoY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrIC0gMSkpOwogfQogCkBAIC02MTIsNyArNjE0 LDcgQEAgc3RhdGljIHZvaWQgcmVtYXBfdG9fY2FjaGVfZGlydHkoc3RydWN0IGNhY2hlICpjYWNo ZSwgc3RydWN0IGJpbyAqYmlvLAogCiBzdGF0aWMgZG1fb2Jsb2NrX3QgZ2V0X2Jpb19ibG9jayhz dHJ1Y3QgY2FjaGUgKmNhY2hlLCBzdHJ1Y3QgYmlvICpiaW8pCiB7Ci0Jc2VjdG9yX3QgYmxvY2tf bnIgPSBiaW8tPmJpX3NlY3RvcjsKKwlzZWN0b3JfdCBibG9ja19uciA9IGJpby0+YmlfaXRlci5i aV9zZWN0b3I7CiAKIAlpZiAoIWJsb2NrX3NpemVfaXNfcG93ZXJfb2ZfdHdvKGNhY2hlKSkKIAkJ KHZvaWQpIHNlY3Rvcl9kaXYoYmxvY2tfbnIsIGNhY2hlLT5zZWN0b3JzX3Blcl9ibG9jayk7CkBA IC0xMDY0LDcgKzEwNjYsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsdXNoX2JpbyhzdHJ1Y3Qg Y2FjaGUgKmNhY2hlLCBzdHJ1Y3QgYmlvICpiaW8pCiAJc2l6ZV90IHBiX2RhdGFfc2l6ZSA9IGdl dF9wZXJfYmlvX2RhdGFfc2l6ZShjYWNoZSk7CiAJc3RydWN0IHBlcl9iaW9fZGF0YSAqcGIgPSBn ZXRfcGVyX2Jpb19kYXRhKGJpbywgcGJfZGF0YV9zaXplKTsKIAotCUJVR19PTihiaW8tPmJpX3Np emUpOworCUJVR19PTihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJaWYgKCFwYi0+cmVxX25yKQog CQlyZW1hcF90b19vcmlnaW4oY2FjaGUsIGJpbyk7CiAJZWxzZQpAQCAtMTA4Nyw5ICsxMDg5LDkg QEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbHVzaF9iaW8oc3RydWN0IGNhY2hlICpjYWNoZSwgc3Ry dWN0IGJpbyAqYmlvKQogICovCiBzdGF0aWMgdm9pZCBwcm9jZXNzX2Rpc2NhcmRfYmlvKHN0cnVj dCBjYWNoZSAqY2FjaGUsIHN0cnVjdCBiaW8gKmJpbykKIHsKLQlkbV9ibG9ja190IHN0YXJ0X2Js b2NrID0gZG1fc2VjdG9yX2Rpdl91cChiaW8tPmJpX3NlY3RvciwKKwlkbV9ibG9ja190IHN0YXJ0 X2Jsb2NrID0gZG1fc2VjdG9yX2Rpdl91cChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAogCQkJCQkJ ICBjYWNoZS0+ZGlzY2FyZF9ibG9ja19zaXplKTsKLQlkbV9ibG9ja190IGVuZF9ibG9jayA9IGJp by0+Ymlfc2VjdG9yICsgYmlvX3NlY3RvcnMoYmlvKTsKKwlkbV9ibG9ja190IGVuZF9ibG9jayA9 IGJpb19lbmRfc2VjdG9yKGJpbyk7CiAJZG1fYmxvY2tfdCBiOwogCiAJZW5kX2Jsb2NrID0gYmxv Y2tfZGl2KGVuZF9ibG9jaywgY2FjaGUtPmRpc2NhcmRfYmxvY2tfc2l6ZSk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL21kL2RtLWNyeXB0LmMgYi9kcml2ZXJzL21kL2RtLWNyeXB0LmMKaW5kZXggNmQy ZDQxYS4uZmNhM2JiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1jcnlwdC5jCisrKyBiL2Ry aXZlcnMvbWQvZG0tY3J5cHQuYwpAQCAtNjUyLDggKzY1Miw4IEBAIHN0YXRpYyB2b2lkIGNyeXB0 X2NvbnZlcnRfaW5pdChzdHJ1Y3QgY3J5cHRfY29uZmlnICpjYywKIAljdHgtPmJpb19vdXQgPSBi aW9fb3V0OwogCWN0eC0+b2Zmc2V0X2luID0gMDsKIAljdHgtPm9mZnNldF9vdXQgPSAwOwotCWN0 eC0+aWR4X2luID0gYmlvX2luID8gYmlvX2luLT5iaV9pZHggOiAwOwotCWN0eC0+aWR4X291dCA9 IGJpb19vdXQgPyBiaW9fb3V0LT5iaV9pZHggOiAwOworCWN0eC0+aWR4X2luID0gYmlvX2luID8g YmlvX2luLT5iaV9pdGVyLmJpX2lkeCA6IDA7CisJY3R4LT5pZHhfb3V0ID0gYmlvX291dCA/IGJp b19vdXQtPmJpX2l0ZXIuYmlfaWR4IDogMDsKIAljdHgtPmNjX3NlY3RvciA9IHNlY3RvciArIGNj LT5pdl9vZmZzZXQ7CiAJaW5pdF9jb21wbGV0aW9uKCZjdHgtPnJlc3RhcnQpOwogfQpAQCAtODQ1 LDcgKzg0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmlvICpjcnlwdF9hbGxvY19idWZmZXIoc3RydWN0 IGRtX2NyeXB0X2lvICppbywgdW5zaWduZWQgc2l6ZSwKIAkJc2l6ZSAtPSBsZW47CiAJfQogCi0J aWYgKCFjbG9uZS0+Ymlfc2l6ZSkgeworCWlmICghY2xvbmUtPmJpX2l0ZXIuYmlfc2l6ZSkgewog CQliaW9fcHV0KGNsb25lKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpAQCAtOTg1LDcgKzk4NSw3IEBA IHN0YXRpYyBpbnQga2NyeXB0ZF9pb19yZWFkKHN0cnVjdCBkbV9jcnlwdF9pbyAqaW8sIGdmcF90 IGdmcCkKIAljcnlwdF9pbmNfcGVuZGluZyhpbyk7CiAKIAljbG9uZV9pbml0KGlvLCBjbG9uZSk7 Ci0JY2xvbmUtPmJpX3NlY3RvciA9IGNjLT5zdGFydCArIGlvLT5zZWN0b3I7CisJY2xvbmUtPmJp X2l0ZXIuYmlfc2VjdG9yID0gY2MtPnN0YXJ0ICsgaW8tPnNlY3RvcjsKIAogCWdlbmVyaWNfbWFr ZV9yZXF1ZXN0KGNsb25lKTsKIAlyZXR1cm4gMDsKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHN0YXRp YyB2b2lkIGtjcnlwdGRfY3J5cHRfd3JpdGVfaW9fc3VibWl0KHN0cnVjdCBkbV9jcnlwdF9pbyAq aW8sIGludCBhc3luYykKIAkvKiBjcnlwdF9jb252ZXJ0IHNob3VsZCBoYXZlIGZpbGxlZCB0aGUg Y2xvbmUgYmlvICovCiAJQlVHX09OKGlvLT5jdHguaWR4X291dCA8IGNsb25lLT5iaV92Y250KTsK IAotCWNsb25lLT5iaV9zZWN0b3IgPSBjYy0+c3RhcnQgKyBpby0+c2VjdG9yOworCWNsb25lLT5i aV9pdGVyLmJpX3NlY3RvciA9IGNjLT5zdGFydCArIGlvLT5zZWN0b3I7CiAKIAlpZiAoYXN5bmMp CiAJCWtjcnlwdGRfcXVldWVfaW8oaW8pOwpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgc3RhdGljIHZv aWQga2NyeXB0ZF9jcnlwdF93cml0ZV9jb252ZXJ0KHN0cnVjdCBkbV9jcnlwdF9pbyAqaW8pCiAJ c3RydWN0IGRtX2NyeXB0X2lvICpuZXdfaW87CiAJaW50IGNyeXB0X2ZpbmlzaGVkOwogCXVuc2ln bmVkIG91dF9vZl9wYWdlcyA9IDA7Ci0JdW5zaWduZWQgcmVtYWluaW5nID0gaW8tPmJhc2VfYmlv LT5iaV9zaXplOworCXVuc2lnbmVkIHJlbWFpbmluZyA9IGlvLT5iYXNlX2Jpby0+YmlfaXRlci5i aV9zaXplOwogCXNlY3Rvcl90IHNlY3RvciA9IGlvLT5zZWN0b3I7CiAJaW50IHI7CiAKQEAgLTEw NzIsNyArMTA3Miw3IEBAIHN0YXRpYyB2b2lkIGtjcnlwdGRfY3J5cHRfd3JpdGVfY29udmVydChz dHJ1Y3QgZG1fY3J5cHRfaW8gKmlvKQogCQlpby0+Y3R4LmJpb19vdXQgPSBjbG9uZTsKIAkJaW8t PmN0eC5pZHhfb3V0ID0gMDsKIAotCQlyZW1haW5pbmcgLT0gY2xvbmUtPmJpX3NpemU7CisJCXJl bWFpbmluZyAtPSBjbG9uZS0+YmlfaXRlci5iaV9zaXplOwogCQlzZWN0b3IgKz0gYmlvX3NlY3Rv cnMoY2xvbmUpOwogCiAJCWNyeXB0X2luY19wZW5kaW5nKGlvKTsKQEAgLTE2ODcsMTEgKzE2ODcs MTMgQEAgc3RhdGljIGludCBjcnlwdF9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBi aW8gKmJpbykKIAlpZiAodW5saWtlbHkoYmlvLT5iaV9ydyAmIChSRVFfRkxVU0ggfCBSRVFfRElT Q0FSRCkpKSB7CiAJCWJpby0+YmlfYmRldiA9IGNjLT5kZXYtPmJkZXY7CiAJCWlmIChiaW9fc2Vj dG9ycyhiaW8pKQotCQkJYmlvLT5iaV9zZWN0b3IgPSBjYy0+c3RhcnQgKyBkbV90YXJnZXRfb2Zm c2V0KHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gY2Mt PnN0YXJ0ICsKKwkJCQlkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y KTsKIAkJcmV0dXJuIERNX01BUElPX1JFTUFQUEVEOwogCX0KIAotCWlvID0gY3J5cHRfaW9fYWxs b2MoY2MsIGJpbywgZG1fdGFyZ2V0X29mZnNldCh0aSwgYmlvLT5iaV9zZWN0b3IpKTsKKwlpbyA9 IGNyeXB0X2lvX2FsbG9jKGNjLCBiaW8sCisJCQkgICAgZG1fdGFyZ2V0X29mZnNldCh0aSwgYmlv LT5iaV9pdGVyLmJpX3NlY3RvcikpOwogCiAJaWYgKGJpb19kYXRhX2Rpcihpby0+YmFzZV9iaW8p ID09IFJFQUQpIHsKIAkJaWYgKGtjcnlwdGRfaW9fcmVhZChpbywgR0ZQX05PV0FJVCkpCmRpZmYg LS1naXQgYS9kcml2ZXJzL21kL2RtLWRlbGF5LmMgYi9kcml2ZXJzL21kL2RtLWRlbGF5LmMKaW5k ZXggNDk2ZDVmMy4uODRjODYwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1kZWxheS5jCisr KyBiL2RyaXZlcnMvbWQvZG0tZGVsYXkuYwpAQCAtMjgxLDE0ICsyODEsMTUgQEAgc3RhdGljIGlu dCBkZWxheV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAo KGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFKSAmJiAoZGMtPmRldl93cml0ZSkpIHsKIAkJYmlv LT5iaV9iZGV2ID0gZGMtPmRldl93cml0ZS0+YmRldjsKIAkJaWYgKGJpb19zZWN0b3JzKGJpbykp Ci0JCQliaW8tPmJpX3NlY3RvciA9IGRjLT5zdGFydF93cml0ZSArCi0JCQkJCSBkbV90YXJnZXRf b2Zmc2V0KHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0g ZGMtPnN0YXJ0X3dyaXRlICsKKwkJCQlkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAogCQlyZXR1cm4gZGVsYXlfYmlvKGRjLCBkYy0+d3JpdGVfZGVsYXksIGJp byk7CiAJfQogCiAJYmlvLT5iaV9iZGV2ID0gZGMtPmRldl9yZWFkLT5iZGV2OwotCWJpby0+Ymlf c2VjdG9yID0gZGMtPnN0YXJ0X3JlYWQgKyBkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX3Nl Y3Rvcik7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGRjLT5zdGFydF9yZWFkICsKKwkJZG1f dGFyZ2V0X29mZnNldCh0aSwgYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKIAlyZXR1cm4gZGVs YXlfYmlvKGRjLCBkYy0+cmVhZF9kZWxheSwgYmlvKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWQvZG0tZmxha2V5LmMgYi9kcml2ZXJzL21kL2RtLWZsYWtleS5jCmluZGV4IGM4MGEwZWMuLmIy NTdlNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tZmxha2V5LmMKKysrIGIvZHJpdmVycy9t ZC9kbS1mbGFrZXkuYwpAQCAtMjQ4LDcgKzI0OCw4IEBAIHN0YXRpYyB2b2lkIGZsYWtleV9tYXBf YmlvKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAliaW8tPmJpX2Jk ZXYgPSBmYy0+ZGV2LT5iZGV2OwogCWlmIChiaW9fc2VjdG9ycyhiaW8pKQotCQliaW8tPmJpX3Nl Y3RvciA9IGZsYWtleV9tYXBfc2VjdG9yKHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJCWJpby0+Ymlf aXRlci5iaV9zZWN0b3IgPQorCQkJZmxha2V5X21hcF9zZWN0b3IodGksIGJpby0+YmlfaXRlci5i aV9zZWN0b3IpOwogfQogCiBzdGF0aWMgdm9pZCBjb3JydXB0X2Jpb19kYXRhKHN0cnVjdCBiaW8g KmJpbywgc3RydWN0IGZsYWtleV9jICpmYykKQEAgLTI2NSw4ICsyNjYsOCBAQCBzdGF0aWMgdm9p ZCBjb3JydXB0X2Jpb19kYXRhKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGZsYWtleV9jICpmYykK IAkJRE1ERUJVRygiQ29ycnVwdGluZyBkYXRhIGJpbz0lcCBieSB3cml0aW5nICV1IHRvIGJ5dGUg JXUgIgogCQkJIihydz0lYyBiaV9ydz0lbHUgYmlfc2VjdG9yPSVsbHUgY3VyX2J5dGVzPSV1KVxu IiwKIAkJCWJpbywgZmMtPmNvcnJ1cHRfYmlvX3ZhbHVlLCBmYy0+Y29ycnVwdF9iaW9fYnl0ZSwK LQkJCShiaW9fZGF0YV9kaXIoYmlvKSA9PSBXUklURSkgPyAndycgOiAncicsCi0JCQliaW8tPmJp X3J3LCAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlfc2VjdG9yLCBiaW9fYnl0ZXMpOworCQkJ KGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFKSA/ICd3JyA6ICdyJywgYmlvLT5iaV9ydywKKwkJ CSh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgYmlvX2J5dGVzKTsK IAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0taW8uYyBiL2RyaXZlcnMvbWQvZG0t aW8uYwppbmRleCBlYTQ5ODM0Li5hNmRlNWM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWlv LmMKKysrIGIvZHJpdmVycy9tZC9kbS1pby5jCkBAIC0zMDUsMTQgKzMwNSwxNSBAQCBzdGF0aWMg dm9pZCBkb19yZWdpb24oaW50IHJ3LCB1bnNpZ25lZCByZWdpb24sIHN0cnVjdCBkbV9pb19yZWdp b24gKndoZXJlLAogCQkJCQkgIGRtX3NlY3Rvcl9kaXZfdXAocmVtYWluaW5nLCAoUEFHRV9TSVpF ID4+IFNFQ1RPUl9TSElGVCkpKTsKIAogCQliaW8gPSBiaW9fYWxsb2NfYmlvc2V0KEdGUF9OT0lP LCBudW1fYnZlY3MsIGlvLT5jbGllbnQtPmJpb3MpOwotCQliaW8tPmJpX3NlY3RvciA9IHdoZXJl LT5zZWN0b3IgKyAod2hlcmUtPmNvdW50IC0gcmVtYWluaW5nKTsKKwkJYmlvLT5iaV9pdGVyLmJp X3NlY3RvciA9IHdoZXJlLT5zZWN0b3IgKworCQkJKHdoZXJlLT5jb3VudCAtIHJlbWFpbmluZyk7 CiAJCWJpby0+YmlfYmRldiA9IHdoZXJlLT5iZGV2OwogCQliaW8tPmJpX2VuZF9pbyA9IGVuZGlv OwogCQlzdG9yZV9pb19hbmRfcmVnaW9uX2luX2JpbyhiaW8sIGlvLCByZWdpb24pOwogCiAJCWlm IChydyAmIFJFUV9ESVNDQVJEKSB7CiAJCQludW1fc2VjdG9ycyA9IG1pbl90KHNlY3Rvcl90LCBx LT5saW1pdHMubWF4X2Rpc2NhcmRfc2VjdG9ycywgcmVtYWluaW5nKTsKLQkJCWJpby0+Ymlfc2l6 ZSA9IG51bV9zZWN0b3JzIDw8IFNFQ1RPUl9TSElGVDsKKwkJCWJpby0+YmlfaXRlci5iaV9zaXpl ID0gbnVtX3NlY3RvcnMgPDwgU0VDVE9SX1NISUZUOwogCQkJcmVtYWluaW5nIC09IG51bV9zZWN0 b3JzOwogCQl9IGVsc2UgaWYgKHJ3ICYgUkVRX1dSSVRFX1NBTUUpIHsKIAkJCS8qCkBAIC0zMjEs NyArMzIyLDcgQEAgc3RhdGljIHZvaWQgZG9fcmVnaW9uKGludCBydywgdW5zaWduZWQgcmVnaW9u LCBzdHJ1Y3QgZG1faW9fcmVnaW9uICp3aGVyZSwKIAkJCWRwLT5nZXRfcGFnZShkcCwgJnBhZ2Us ICZsZW4sICZvZmZzZXQpOwogCQkJYmlvX2FkZF9wYWdlKGJpbywgcGFnZSwgbG9naWNhbF9ibG9j a19zaXplLCBvZmZzZXQpOwogCQkJbnVtX3NlY3RvcnMgPSBtaW5fdChzZWN0b3JfdCwgcS0+bGlt aXRzLm1heF93cml0ZV9zYW1lX3NlY3RvcnMsIHJlbWFpbmluZyk7Ci0JCQliaW8tPmJpX3NpemUg PSBudW1fc2VjdG9ycyA8PCBTRUNUT1JfU0hJRlQ7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 IG51bV9zZWN0b3JzIDw8IFNFQ1RPUl9TSElGVDsKIAogCQkJb2Zmc2V0ID0gMDsKIAkJCXJlbWFp bmluZyAtPSBudW1fc2VjdG9yczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tbGluZWFyLmMg Yi9kcml2ZXJzL21kL2RtLWxpbmVhci5jCmluZGV4IDRmOTlkMjYuLjUzZTg0OGMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbWQvZG0tbGluZWFyLmMKKysrIGIvZHJpdmVycy9tZC9kbS1saW5lYXIuYwpA QCAtODUsNyArODUsOCBAQCBzdGF0aWMgdm9pZCBsaW5lYXJfbWFwX2JpbyhzdHJ1Y3QgZG1fdGFy Z2V0ICp0aSwgc3RydWN0IGJpbyAqYmlvKQogCiAJYmlvLT5iaV9iZGV2ID0gbGMtPmRldi0+YmRl djsKIAlpZiAoYmlvX3NlY3RvcnMoYmlvKSkKLQkJYmlvLT5iaV9zZWN0b3IgPSBsaW5lYXJfbWFw X3NlY3Rvcih0aSwgYmlvLT5iaV9zZWN0b3IpOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0K KwkJCWxpbmVhcl9tYXBfc2VjdG9yKHRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIH0KIAog c3RhdGljIGludCBsaW5lYXJfbWFwKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpi aW8pCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXJhaWQxLmMgYi9kcml2ZXJzL21kL2RtLXJh aWQxLmMKaW5kZXggNjk5YjViZS4uZTNlZmI5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1y YWlkMS5jCisrKyBiL2RyaXZlcnMvbWQvZG0tcmFpZDEuYwpAQCAtNDMyLDcgKzQzMiw3IEBAIHN0 YXRpYyBpbnQgbWlycm9yX2F2YWlsYWJsZShzdHJ1Y3QgbWlycm9yX3NldCAqbXMsIHN0cnVjdCBi aW8gKmJpbykKIAlyZWdpb25fdCByZWdpb24gPSBkbV9yaF9iaW9fdG9fcmVnaW9uKG1zLT5yaCwg YmlvKTsKIAogCWlmIChsb2ctPnR5cGUtPmluX3N5bmMobG9nLCByZWdpb24sIDApKQotCQlyZXR1 cm4gY2hvb3NlX21pcnJvcihtcywgIGJpby0+Ymlfc2VjdG9yKSA/IDEgOiAwOworCQlyZXR1cm4g Y2hvb3NlX21pcnJvcihtcywgIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpID8gMSA6IDA7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTQ0MiwxNSArNDQyLDE1IEBAIHN0YXRpYyBpbnQgbWlycm9yX2F2YWls YWJsZShzdHJ1Y3QgbWlycm9yX3NldCAqbXMsIHN0cnVjdCBiaW8gKmJpbykKICAqLwogc3RhdGlj IHNlY3Rvcl90IG1hcF9zZWN0b3Ioc3RydWN0IG1pcnJvciAqbSwgc3RydWN0IGJpbyAqYmlvKQog ewotCWlmICh1bmxpa2VseSghYmlvLT5iaV9zaXplKSkKKwlpZiAodW5saWtlbHkoIWJpby0+Ymlf aXRlci5iaV9zaXplKSkKIAkJcmV0dXJuIDA7Ci0JcmV0dXJuIG0tPm9mZnNldCArIGRtX3Rhcmdl dF9vZmZzZXQobS0+bXMtPnRpLCBiaW8tPmJpX3NlY3Rvcik7CisJcmV0dXJuIG0tPm9mZnNldCAr IGRtX3RhcmdldF9vZmZzZXQobS0+bXMtPnRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIH0K IAogc3RhdGljIHZvaWQgbWFwX2JpbyhzdHJ1Y3QgbWlycm9yICptLCBzdHJ1Y3QgYmlvICpiaW8p CiB7CiAJYmlvLT5iaV9iZGV2ID0gbS0+ZGV2LT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gbWFw X3NlY3RvcihtLCBiaW8pOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBtYXBfc2VjdG9yKG0s IGJpbyk7CiB9CiAKIHN0YXRpYyB2b2lkIG1hcF9yZWdpb24oc3RydWN0IGRtX2lvX3JlZ2lvbiAq aW8sIHN0cnVjdCBtaXJyb3IgKm0sCkBAIC01MjcsNyArNTI3LDcgQEAgc3RhdGljIHZvaWQgcmVh ZF9hc3luY19iaW8oc3RydWN0IG1pcnJvciAqbSwgc3RydWN0IGJpbyAqYmlvKQogCXN0cnVjdCBk bV9pb19yZXF1ZXN0IGlvX3JlcSA9IHsKIAkJLmJpX3J3ID0gUkVBRCwKIAkJLm1lbS50eXBlID0g RE1fSU9fQlZFQywKLQkJLm1lbS5wdHIuYnZlYyA9IGJpby0+YmlfaW9fdmVjICsgYmlvLT5iaV9p ZHgsCisJCS5tZW0ucHRyLmJ2ZWMgPSBiaW8tPmJpX2lvX3ZlYyArIGJpby0+YmlfaXRlci5iaV9p ZHgsCiAJCS5ub3RpZnkuZm4gPSByZWFkX2NhbGxiYWNrLAogCQkubm90aWZ5LmNvbnRleHQgPSBi aW8sCiAJCS5jbGllbnQgPSBtLT5tcy0+aW9fY2xpZW50LApAQCAtNTU5LDcgKzU1OSw3IEBAIHN0 YXRpYyB2b2lkIGRvX3JlYWRzKHN0cnVjdCBtaXJyb3Jfc2V0ICptcywgc3RydWN0IGJpb19saXN0 ICpyZWFkcykKIAkJICogV2UgY2FuIG9ubHkgcmVhZCBiYWxhbmNlIGlmIHRoZSByZWdpb24gaXMg aW4gc3luYy4KIAkJICovCiAJCWlmIChsaWtlbHkocmVnaW9uX2luX3N5bmMobXMsIHJlZ2lvbiwg MSkpKQotCQkJbSA9IGNob29zZV9taXJyb3IobXMsIGJpby0+Ymlfc2VjdG9yKTsKKwkJCW0gPSBj aG9vc2VfbWlycm9yKG1zLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJZWxzZSBpZiAobSAm JiBhdG9taWNfcmVhZCgmbS0+ZXJyb3JfY291bnQpKQogCQkJbSA9IE5VTEw7CiAKQEAgLTYzMCw3 ICs2MzAsNyBAQCBzdGF0aWMgdm9pZCBkb193cml0ZShzdHJ1Y3QgbWlycm9yX3NldCAqbXMsIHN0 cnVjdCBiaW8gKmJpbykKIAlzdHJ1Y3QgZG1faW9fcmVxdWVzdCBpb19yZXEgPSB7CiAJCS5iaV9y dyA9IFdSSVRFIHwgKGJpby0+YmlfcncgJiBXUklURV9GTFVTSF9GVUEpLAogCQkubWVtLnR5cGUg PSBETV9JT19CVkVDLAotCQkubWVtLnB0ci5idmVjID0gYmlvLT5iaV9pb192ZWMgKyBiaW8tPmJp X2lkeCwKKwkJLm1lbS5wdHIuYnZlYyA9IGJpby0+YmlfaW9fdmVjICsgYmlvLT5iaV9pdGVyLmJp X2lkeCwKIAkJLm5vdGlmeS5mbiA9IHdyaXRlX2NhbGxiYWNrLAogCQkubm90aWZ5LmNvbnRleHQg PSBiaW8sCiAJCS5jbGllbnQgPSBtcy0+aW9fY2xpZW50LApAQCAtMTE4Miw3ICsxMTgyLDcgQEAg c3RhdGljIGludCBtaXJyb3JfbWFwKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpi aW8pCiAJICogVGhlIHJlZ2lvbiBpcyBpbi1zeW5jIGFuZCB3ZSBjYW4gcGVyZm9ybSByZWFkcyBk aXJlY3RseS4KIAkgKiBTdG9yZSBlbm91Z2ggaW5mb3JtYXRpb24gc28gd2UgY2FuIHJldHJ5IGlm IGl0IGZhaWxzLgogCSAqLwotCW0gPSBjaG9vc2VfbWlycm9yKG1zLCBiaW8tPmJpX3NlY3Rvcik7 CisJbSA9IGNob29zZV9taXJyb3IobXMsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCWlmICh1 bmxpa2VseSghbSkpCiAJCXJldHVybiAtRUlPOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2Rt LXJlZ2lvbi1oYXNoLmMgYi9kcml2ZXJzL21kL2RtLXJlZ2lvbi1oYXNoLmMKaW5kZXggNjk3MzJl MC4uYjkyOWZkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1yZWdpb24taGFzaC5jCisrKyBi L2RyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2guYwpAQCAtMTI2LDcgKzEyNiw4IEBAIEVYUE9SVF9T WU1CT0xfR1BMKGRtX3JoX3JlZ2lvbl90b19zZWN0b3IpOwogCiByZWdpb25fdCBkbV9yaF9iaW9f dG9fcmVnaW9uKHN0cnVjdCBkbV9yZWdpb25faGFzaCAqcmgsIHN0cnVjdCBiaW8gKmJpbykKIHsK LQlyZXR1cm4gZG1fcmhfc2VjdG9yX3RvX3JlZ2lvbihyaCwgYmlvLT5iaV9zZWN0b3IgLSByaC0+ dGFyZ2V0X2JlZ2luKTsKKwlyZXR1cm4gZG1fcmhfc2VjdG9yX3RvX3JlZ2lvbihyaCwgYmlvLT5i aV9pdGVyLmJpX3NlY3RvciAtCisJCQkJICAgICAgcmgtPnRhcmdldF9iZWdpbik7CiB9CiBFWFBP UlRfU1lNQk9MX0dQTChkbV9yaF9iaW9fdG9fcmVnaW9uKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9kbS1zbmFwLmMgYi9kcml2ZXJzL21kL2RtLXNuYXAuYwppbmRleCBjNDM0ZTVhLi5hMWRm Nzc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLXNuYXAuYworKysgYi9kcml2ZXJzL21kL2Rt LXNuYXAuYwpAQCAtMTU2MywxMCArMTU2MywxMCBAQCBzdGF0aWMgdm9pZCByZW1hcF9leGNlcHRp b24oc3RydWN0IGRtX3NuYXBzaG90ICpzLCBzdHJ1Y3QgZG1fZXhjZXB0aW9uICplLAogCQkJICAg IHN0cnVjdCBiaW8gKmJpbywgY2h1bmtfdCBjaHVuaykKIHsKIAliaW8tPmJpX2JkZXYgPSBzLT5j b3ctPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBjaHVua190b19zZWN0b3Iocy0+c3RvcmUsCisJ YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGNodW5rX3RvX3NlY3RvcihzLT5zdG9yZSwKIAkJCQkJ IGRtX2NodW5rX251bWJlcihlLT5uZXdfY2h1bmspICsKIAkJCQkJIChjaHVuayAtIGUtPm9sZF9j aHVuaykpICsKLQkJCQkJIChiaW8tPmJpX3NlY3RvciAmCisJCQkJCSAoYmlvLT5iaV9pdGVyLmJp X3NlY3RvciAmCiAJCQkJCSAgcy0+c3RvcmUtPmNodW5rX21hc2spOwogfQogCkBAIC0xNTg1LDcg KzE1ODUsNyBAQCBzdGF0aWMgaW50IHNuYXBzaG90X21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwg c3RydWN0IGJpbyAqYmlvKQogCQlyZXR1cm4gRE1fTUFQSU9fUkVNQVBQRUQ7CiAJfQogCi0JY2h1 bmsgPSBzZWN0b3JfdG9fY2h1bmsocy0+c3RvcmUsIGJpby0+Ymlfc2VjdG9yKTsKKwljaHVuayA9 IHNlY3Rvcl90b19jaHVuayhzLT5zdG9yZSwgYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKIAkv KiBGdWxsIHNuYXBzaG90cyBhcmUgbm90IHVzYWJsZSAqLwogCS8qIFRvIGdldCBoZXJlIHRoZSB0 YWJsZSBtdXN0IGJlIGxpdmUgc28gcy0+YWN0aXZlIGlzIGFsd2F5cyBzZXQuICovCkBAIC0xNjQ2 LDcgKzE2NDYsOCBAQCBzdGF0aWMgaW50IHNuYXBzaG90X21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0 aSwgc3RydWN0IGJpbyAqYmlvKQogCQlyID0gRE1fTUFQSU9fU1VCTUlUVEVEOwogCiAJCWlmICgh cGUtPnN0YXJ0ZWQgJiYKLQkJICAgIGJpby0+Ymlfc2l6ZSA9PSAocy0+c3RvcmUtPmNodW5rX3Np emUgPDwgU0VDVE9SX1NISUZUKSkgeworCQkgICAgYmlvLT5iaV9pdGVyLmJpX3NpemUgPT0KKwkJ ICAgIChzLT5zdG9yZS0+Y2h1bmtfc2l6ZSA8PCBTRUNUT1JfU0hJRlQpKSB7CiAJCQlwZS0+c3Rh cnRlZCA9IDE7CiAJCQl1cF93cml0ZSgmcy0+bG9jayk7CiAJCQlzdGFydF9mdWxsX2JpbyhwZSwg YmlvKTsKQEAgLTE3MDIsNyArMTcwMyw3IEBAIHN0YXRpYyBpbnQgc25hcHNob3RfbWVyZ2VfbWFw KHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXJldHVybiBETV9NQVBJ T19SRU1BUFBFRDsKIAl9CiAKLQljaHVuayA9IHNlY3Rvcl90b19jaHVuayhzLT5zdG9yZSwgYmlv LT5iaV9zZWN0b3IpOworCWNodW5rID0gc2VjdG9yX3RvX2NodW5rKHMtPnN0b3JlLCBiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yKTsKIAogCWRvd25fd3JpdGUoJnMtPmxvY2spOwogCkBAIC0yMDM5LDcg KzIwNDAsNyBAQCBzdGF0aWMgaW50IGRvX29yaWdpbihzdHJ1Y3QgZG1fZGV2ICpvcmlnaW4sIHN0 cnVjdCBiaW8gKmJpbykKIAlkb3duX3JlYWQoJl9vcmlnaW5zX2xvY2spOwogCW8gPSBfX2xvb2t1 cF9vcmlnaW4ob3JpZ2luLT5iZGV2KTsKIAlpZiAobykKLQkJciA9IF9fb3JpZ2luX3dyaXRlKCZv LT5zbmFwc2hvdHMsIGJpby0+Ymlfc2VjdG9yLCBiaW8pOworCQlyID0gX19vcmlnaW5fd3JpdGUo Jm8tPnNuYXBzaG90cywgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgYmlvKTsKIAl1cF9yZWFkKCZf b3JpZ2luc19sb2NrKTsKIAogCXJldHVybiByOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1z dHJpcGUuYyBiL2RyaXZlcnMvbWQvZG0tc3RyaXBlLmMKaW5kZXggZDkwN2NhNi4uODA0NWIwOSAx MDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1zdHJpcGUuYworKysgYi9kcml2ZXJzL21kL2RtLXN0 cmlwZS5jCkBAIC0yNTgsMTMgKzI1OCwxNSBAQCBzdGF0aWMgaW50IHN0cmlwZV9tYXBfcmFuZ2Uo c3RydWN0IHN0cmlwZV9jICpzYywgc3RydWN0IGJpbyAqYmlvLAogewogCXNlY3Rvcl90IGJlZ2lu LCBlbmQ7CiAKLQlzdHJpcGVfbWFwX3JhbmdlX3NlY3RvcihzYywgYmlvLT5iaV9zZWN0b3IsIHRh cmdldF9zdHJpcGUsICZiZWdpbik7CisJc3RyaXBlX21hcF9yYW5nZV9zZWN0b3Ioc2MsIGJpby0+ YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJdGFyZ2V0X3N0cmlwZSwgJmJlZ2luKTsKIAlzdHJpcGVf bWFwX3JhbmdlX3NlY3RvcihzYywgYmlvX2VuZF9zZWN0b3IoYmlvKSwKIAkJCQl0YXJnZXRfc3Ry aXBlLCAmZW5kKTsKIAlpZiAoYmVnaW4gPCBlbmQpIHsKIAkJYmlvLT5iaV9iZGV2ID0gc2MtPnN0 cmlwZVt0YXJnZXRfc3RyaXBlXS5kZXYtPmJkZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0gYmVnaW4g KyBzYy0+c3RyaXBlW3RhcmdldF9zdHJpcGVdLnBoeXNpY2FsX3N0YXJ0OwotCQliaW8tPmJpX3Np emUgPSB0b19ieXRlcyhlbmQgLSBiZWdpbik7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBi ZWdpbiArCisJCQlzYy0+c3RyaXBlW3RhcmdldF9zdHJpcGVdLnBoeXNpY2FsX3N0YXJ0OworCQli aW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IHRvX2J5dGVzKGVuZCAtIGJlZ2luKTsKIAkJcmV0dXJuIERN X01BUElPX1JFTUFQUEVEOwogCX0gZWxzZSB7CiAJCS8qIFRoZSByYW5nZSBkb2Vzbid0IG1hcCB0 byB0aGUgdGFyZ2V0IHN0cmlwZSAqLwpAQCAtMjkyLDkgKzI5NCwxMCBAQCBzdGF0aWMgaW50IHN0 cmlwZV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAkJcmV0dXJu IHN0cmlwZV9tYXBfcmFuZ2Uoc2MsIGJpbywgdGFyZ2V0X2Jpb19ucik7CiAJfQogCi0Jc3RyaXBl X21hcF9zZWN0b3Ioc2MsIGJpby0+Ymlfc2VjdG9yLCAmc3RyaXBlLCAmYmlvLT5iaV9zZWN0b3Ip OworCXN0cmlwZV9tYXBfc2VjdG9yKHNjLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJICAm c3RyaXBlLCAmYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKLQliaW8tPmJpX3NlY3RvciArPSBz Yy0+c3RyaXBlW3N0cmlwZV0ucGh5c2ljYWxfc3RhcnQ7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciArPSBzYy0+c3RyaXBlW3N0cmlwZV0ucGh5c2ljYWxfc3RhcnQ7CiAJYmlvLT5iaV9iZGV2ID0g c2MtPnN0cmlwZVtzdHJpcGVdLmRldi0+YmRldjsKIAogCXJldHVybiBETV9NQVBJT19SRU1BUFBF RDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tc3dpdGNoLmMgYi9kcml2ZXJzL21kL2RtLXN3 aXRjaC5jCmluZGV4IGZmOWFjNGIuLjA5YTY4OGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0t c3dpdGNoLmMKKysrIGIvZHJpdmVycy9tZC9kbS1zd2l0Y2guYwpAQCAtMzExLDExICszMTEsMTEg QEAgZXJyb3I6CiBzdGF0aWMgaW50IHN3aXRjaF9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0 cnVjdCBiaW8gKmJpbykKIHsKIAlzdHJ1Y3Qgc3dpdGNoX2N0eCAqc2N0eCA9IHRpLT5wcml2YXRl OwotCXNlY3Rvcl90IG9mZnNldCA9IGRtX3RhcmdldF9vZmZzZXQodGksIGJpby0+Ymlfc2VjdG9y KTsKKwlzZWN0b3JfdCBvZmZzZXQgPSBkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAl1bnNpZ25lZCBwYXRoX25yID0gc3dpdGNoX2dldF9wYXRoX25yKHNjdHgs IG9mZnNldCk7CiAKIAliaW8tPmJpX2JkZXYgPSBzY3R4LT5wYXRoX2xpc3RbcGF0aF9ucl0uZG1k ZXYtPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBzY3R4LT5wYXRoX2xpc3RbcGF0aF9ucl0uc3Rh cnQgKyBvZmZzZXQ7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNjdHgtPnBhdGhfbGlzdFtw YXRoX25yXS5zdGFydCArIG9mZnNldDsKIAogCXJldHVybiBETV9NQVBJT19SRU1BUFBFRDsKIH0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tdGhpbi5jIGIvZHJpdmVycy9tZC9kbS10aGluLmMK aW5kZXggODhmMmY4MC4uMmUyMjEyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS10aGluLmMK KysrIGIvZHJpdmVycy9tZC9kbS10aGluLmMKQEAgLTQxMyw3ICs0MTMsNyBAQCBzdGF0aWMgYm9v bCBibG9ja19zaXplX2lzX3Bvd2VyX29mX3R3byhzdHJ1Y3QgcG9vbCAqcG9vbCkKIHN0YXRpYyBk bV9ibG9ja190IGdldF9iaW9fYmxvY2soc3RydWN0IHRoaW5fYyAqdGMsIHN0cnVjdCBiaW8gKmJp bykKIHsKIAlzdHJ1Y3QgcG9vbCAqcG9vbCA9IHRjLT5wb29sOwotCXNlY3Rvcl90IGJsb2NrX25y ID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX3QgYmxvY2tfbnIgPSBiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yOwogCiAJaWYgKGJsb2NrX3NpemVfaXNfcG93ZXJfb2ZfdHdvKHBvb2wpKQogCQlibG9j a19uciA+Pj0gcG9vbC0+c2VjdG9yc19wZXJfYmxvY2tfc2hpZnQ7CkBAIC00MjYsMTQgKzQyNiwx NSBAQCBzdGF0aWMgZG1fYmxvY2tfdCBnZXRfYmlvX2Jsb2NrKHN0cnVjdCB0aGluX2MgKnRjLCBz dHJ1Y3QgYmlvICpiaW8pCiBzdGF0aWMgdm9pZCByZW1hcChzdHJ1Y3QgdGhpbl9jICp0Yywgc3Ry dWN0IGJpbyAqYmlvLCBkbV9ibG9ja190IGJsb2NrKQogewogCXN0cnVjdCBwb29sICpwb29sID0g dGMtPnBvb2w7Ci0Jc2VjdG9yX3QgYmlfc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9y X3QgYmlfc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAogCWJpby0+YmlfYmRldiA9 IHRjLT5wb29sX2Rldi0+YmRldjsKIAlpZiAoYmxvY2tfc2l6ZV9pc19wb3dlcl9vZl90d28ocG9v bCkpCi0JCWJpby0+Ymlfc2VjdG9yID0gKGJsb2NrIDw8IHBvb2wtPnNlY3RvcnNfcGVyX2Jsb2Nr X3NoaWZ0KSB8Ci0JCQkJKGJpX3NlY3RvciAmIChwb29sLT5zZWN0b3JzX3Blcl9ibG9jayAtIDEp KTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9CisJCQkoYmxvY2sgPDwgcG9vbC0+c2VjdG9y c19wZXJfYmxvY2tfc2hpZnQpIHwKKwkJCShiaV9zZWN0b3IgJiAocG9vbC0+c2VjdG9yc19wZXJf YmxvY2sgLSAxKSk7CiAJZWxzZQotCQliaW8tPmJpX3NlY3RvciA9IChibG9jayAqIHBvb2wtPnNl Y3RvcnNfcGVyX2Jsb2NrKSArCisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSAoYmxvY2sgKiBw b29sLT5zZWN0b3JzX3Blcl9ibG9jaykgKwogCQkJCSBzZWN0b3JfZGl2KGJpX3NlY3RvciwgcG9v bC0+c2VjdG9yc19wZXJfYmxvY2spOwogfQogCkBAIC03MjEsNyArNzIyLDggQEAgc3RhdGljIHZv aWQgcHJvY2Vzc19wcmVwYXJlZChzdHJ1Y3QgcG9vbCAqcG9vbCwgc3RydWN0IGxpc3RfaGVhZCAq aGVhZCwKICAqLwogc3RhdGljIGludCBpb19vdmVybGFwc19ibG9jayhzdHJ1Y3QgcG9vbCAqcG9v bCwgc3RydWN0IGJpbyAqYmlvKQogewotCXJldHVybiBiaW8tPmJpX3NpemUgPT0gKHBvb2wtPnNl Y3RvcnNfcGVyX2Jsb2NrIDw8IFNFQ1RPUl9TSElGVCk7CisJcmV0dXJuIGJpby0+YmlfaXRlci5i aV9zaXplID09CisJCShwb29sLT5zZWN0b3JzX3Blcl9ibG9jayA8PCBTRUNUT1JfU0hJRlQpOwog fQogCiBzdGF0aWMgaW50IGlvX292ZXJ3cml0ZXNfYmxvY2soc3RydWN0IHBvb2wgKnBvb2wsIHN0 cnVjdCBiaW8gKmJpbykKQEAgLTExMjEsNyArMTEyMyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nf c2hhcmVkX2JpbyhzdHJ1Y3QgdGhpbl9jICp0Yywgc3RydWN0IGJpbyAqYmlvLAogCWlmIChiaW9f ZGV0YWluKHBvb2wsICZrZXksIGJpbywgJmNlbGwpKQogCQlyZXR1cm47CiAKLQlpZiAoYmlvX2Rh dGFfZGlyKGJpbykgPT0gV1JJVEUgJiYgYmlvLT5iaV9zaXplKQorCWlmIChiaW9fZGF0YV9kaXIo YmlvKSA9PSBXUklURSAmJiBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSkKIAkJYnJlYWtfc2hhcmluZyh0 YywgYmlvLCBibG9jaywgJmtleSwgbG9va3VwX3Jlc3VsdCwgY2VsbCk7CiAJZWxzZSB7CiAJCXN0 cnVjdCBkbV90aGluX2VuZGlvX2hvb2sgKmggPSBkbV9wZXJfYmlvX2RhdGEoYmlvLCBzaXplb2Yo c3RydWN0IGRtX3RoaW5fZW5kaW9faG9vaykpOwpAQCAtMTE0NCw3ICsxMTQ2LDcgQEAgc3RhdGlj IHZvaWQgcHJvdmlzaW9uX2Jsb2NrKHN0cnVjdCB0aGluX2MgKnRjLCBzdHJ1Y3QgYmlvICpiaW8s IGRtX2Jsb2NrX3QgYmxvY2sKIAkvKgogCSAqIFJlbWFwIGVtcHR5IGJpb3MgKGZsdXNoZXMpIGlt bWVkaWF0ZWx5LCB3aXRob3V0IHByb3Zpc2lvbmluZy4KIAkgKi8KLQlpZiAoIWJpby0+Ymlfc2l6 ZSkgeworCWlmICghYmlvLT5iaV9pdGVyLmJpX3NpemUpIHsKIAkJaW5jX2FsbF9pb19lbnRyeShw b29sLCBiaW8pOwogCQljZWxsX2RlZmVyX25vX2hvbGRlcih0YywgY2VsbCk7CiAKQEAgLTEyNDQs NyArMTI0Niw4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfYmlvX3JlYWRfb25seShzdHJ1Y3QgdGhp bl9jICp0Yywgc3RydWN0IGJpbyAqYmlvKQogCXIgPSBkbV90aGluX2ZpbmRfYmxvY2sodGMtPnRk LCBibG9jaywgMSwgJmxvb2t1cF9yZXN1bHQpOwogCXN3aXRjaCAocikgewogCWNhc2UgMDoKLQkJ aWYgKGxvb2t1cF9yZXN1bHQuc2hhcmVkICYmIChydyA9PSBXUklURSkgJiYgYmlvLT5iaV9zaXpl KQorCQlpZiAobG9va3VwX3Jlc3VsdC5zaGFyZWQgJiYKKwkJICAgIChydyA9PSBXUklURSkgJiYg YmlvLT5iaV9pdGVyLmJpX3NpemUpCiAJCQliaW9faW9fZXJyb3IoYmlvKTsKIAkJZWxzZSB7CiAJ CQlpbmNfYWxsX2lvX2VudHJ5KHRjLT5wb29sLCBiaW8pOwpAQCAtMjgyNyw3ICsyODMwLDcgQEAg b3V0X3VubG9jazoKIAogc3RhdGljIGludCB0aGluX21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwg c3RydWN0IGJpbyAqYmlvKQogewotCWJpby0+Ymlfc2VjdG9yID0gZG1fdGFyZ2V0X29mZnNldCh0 aSwgYmlvLT5iaV9zZWN0b3IpOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBkbV90YXJnZXRf b2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCXJldHVybiB0aGluX2Jpb19t YXAodGksIGJpbyk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXZlcml0eS5jIGIvZHJp dmVycy9tZC9kbS12ZXJpdHkuYwppbmRleCA0Yjc5NDFkLi5iZjg0YmIzIDEwMDY0NAotLS0gYS9k cml2ZXJzL21kL2RtLXZlcml0eS5jCisrKyBiL2RyaXZlcnMvbWQvZG0tdmVyaXR5LmMKQEAgLTQ5 Myw5ICs0OTMsOSBAQCBzdGF0aWMgaW50IHZlcml0eV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGks IHN0cnVjdCBiaW8gKmJpbykKIAlzdHJ1Y3QgZG1fdmVyaXR5X2lvICppbzsKIAogCWJpby0+Ymlf YmRldiA9IHYtPmRhdGFfZGV2LT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gdmVyaXR5X21hcF9z ZWN0b3IodiwgYmlvLT5iaV9zZWN0b3IpOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSB2ZXJp dHlfbWFwX3NlY3Rvcih2LCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAotCWlmICgoKHVuc2ln bmVkKWJpby0+Ymlfc2VjdG9yIHwgYmlvX3NlY3RvcnMoYmlvKSkgJgorCWlmICgoKHVuc2lnbmVk KWJpby0+YmlfaXRlci5iaV9zZWN0b3IgfCBiaW9fc2VjdG9ycyhiaW8pKSAmCiAJICAgICgoMSA8 PCAodi0+ZGF0YV9kZXZfYmxvY2tfYml0cyAtIFNFQ1RPUl9TSElGVCkpIC0gMSkpIHsKIAkJRE1F UlJfTElNSVQoInVuYWxpZ25lZCBpbyIpOwogCQlyZXR1cm4gLUVJTzsKQEAgLTUxNCw4ICs1MTQs OSBAQCBzdGF0aWMgaW50IHZlcml0eV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBi aW8gKmJpbykKIAlpby0+diA9IHY7CiAJaW8tPm9yaWdfYmlfZW5kX2lvID0gYmlvLT5iaV9lbmRf aW87CiAJaW8tPm9yaWdfYmlfcHJpdmF0ZSA9IGJpby0+YmlfcHJpdmF0ZTsKLQlpby0+YmxvY2sg PSBiaW8tPmJpX3NlY3RvciA+PiAodi0+ZGF0YV9kZXZfYmxvY2tfYml0cyAtIFNFQ1RPUl9TSElG VCk7Ci0JaW8tPm5fYmxvY2tzID0gYmlvLT5iaV9zaXplID4+IHYtPmRhdGFfZGV2X2Jsb2NrX2Jp dHM7CisJaW8tPmJsb2NrID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+PgorCQkodi0+ZGF0YV9k ZXZfYmxvY2tfYml0cyAtIFNFQ1RPUl9TSElGVCk7CisJaW8tPm5fYmxvY2tzID0gYmlvLT5iaV9p dGVyLmJpX3NpemUgPj4gdi0+ZGF0YV9kZXZfYmxvY2tfYml0czsKIAogCWJpby0+YmlfZW5kX2lv ID0gdmVyaXR5X2VuZF9pbzsKIAliaW8tPmJpX3ByaXZhdGUgPSBpbzsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvZG0uYyBiL2RyaXZlcnMvbWQvZG0uYwppbmRleCA5ZTM5ZDJiLi41NTQ0YWY3IDEw MDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLmMKKysrIGIvZHJpdmVycy9tZC9kbS5jCkBAIC02Mzcs NyArNjM3LDcgQEAgc3RhdGljIHZvaWQgZGVjX3BlbmRpbmcoc3RydWN0IGRtX2lvICppbywgaW50 IGVycm9yKQogCQlpZiAoaW9fZXJyb3IgPT0gRE1fRU5ESU9fUkVRVUVVRSkKIAkJCXJldHVybjsK IAotCQlpZiAoKGJpby0+YmlfcncgJiBSRVFfRkxVU0gpICYmIGJpby0+Ymlfc2l6ZSkgeworCQlp ZiAoKGJpby0+YmlfcncgJiBSRVFfRkxVU0gpICYmIGJpby0+YmlfaXRlci5iaV9zaXplKSB7CiAJ CQkvKgogCQkJICogUHJlZmx1c2ggZG9uZSBmb3IgZmx1c2ggd2l0aCBkYXRhLCByZWlzc3VlCiAJ CQkgKiB3aXRob3V0IFJFUV9GTFVTSC4KQEAgLTY5Miw3ICs2OTIsNyBAQCBzdGF0aWMgdm9pZCBl bmRfY2xvbmVfYmlvKHN0cnVjdCBiaW8gKmNsb25lLCBpbnQgZXJyb3IpCiAJc3RydWN0IGRtX3Jx X2Nsb25lX2Jpb19pbmZvICppbmZvID0gY2xvbmUtPmJpX3ByaXZhdGU7CiAJc3RydWN0IGRtX3Jx X3RhcmdldF9pbyAqdGlvID0gaW5mby0+dGlvOwogCXN0cnVjdCBiaW8gKmJpbyA9IGluZm8tPm9y aWc7Ci0JdW5zaWduZWQgaW50IG5yX2J5dGVzID0gaW5mby0+b3JpZy0+Ymlfc2l6ZTsKKwl1bnNp Z25lZCBpbnQgbnJfYnl0ZXMgPSBpbmZvLT5vcmlnLT5iaV9pdGVyLmJpX3NpemU7CiAKIAliaW9f cHV0KGNsb25lKTsKIApAQCAtMTAyMyw3ICsxMDIzLDcgQEAgc3RhdGljIHZvaWQgX19tYXBfYmlv KHN0cnVjdCBkbV90YXJnZXRfaW8gKnRpbykKIAkgKiB0aGlzIGlvLgogCSAqLwogCWF0b21pY19p bmMoJnRpby0+aW8tPmlvX2NvdW50KTsKLQlzZWN0b3IgPSBjbG9uZS0+Ymlfc2VjdG9yOworCXNl Y3RvciA9IGNsb25lLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAlyID0gdGktPnR5cGUtPm1hcCh0aSwg Y2xvbmUpOwogCWlmIChyID09IERNX01BUElPX1JFTUFQUEVEKSB7CiAJCS8qIHRoZSBiaW8gaGFz IGJlZW4gcmVtYXBwZWQgc28gZGlzcGF0Y2ggaXQgKi8KQEAgLTEwNTUsMTMgKzEwNTUsMTMgQEAg c3RydWN0IGNsb25lX2luZm8gewogCiBzdGF0aWMgdm9pZCBiaW9fc2V0dXBfc2VjdG9yKHN0cnVj dCBiaW8gKmJpbywgc2VjdG9yX3Qgc2VjdG9yLCBzZWN0b3JfdCBsZW4pCiB7Ci0JYmlvLT5iaV9z ZWN0b3IgPSBzZWN0b3I7Ci0JYmlvLT5iaV9zaXplID0gdG9fYnl0ZXMobGVuKTsKKwliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zaXplID0gdG9fYnl0 ZXMobGVuKTsKIH0KIAogc3RhdGljIHZvaWQgYmlvX3NldHVwX2J2KHN0cnVjdCBiaW8gKmJpbywg dW5zaWduZWQgc2hvcnQgaWR4LCB1bnNpZ25lZCBzaG9ydCBidl9jb3VudCkKIHsKLQliaW8tPmJp X2lkeCA9IGlkeDsKKwliaW8tPmJpX2l0ZXIuYmlfaWR4ID0gaWR4OwogCWJpby0+YmlfdmNudCA9 IGlkeCArIGJ2X2NvdW50OwogCWJpby0+YmlfZmxhZ3MgJj0gfigxIDw8IEJJT19TRUdfVkFMSUQp OwogfQpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgc3RhdGljIHZvaWQgY2xvbmVfc3BsaXRfYmlvKHN0 cnVjdCBkbV90YXJnZXRfaW8gKnRpbywgc3RydWN0IGJpbyAqYmlvLAogCWNsb25lLT5iaV9ydyA9 IGJpby0+Ymlfcnc7CiAJY2xvbmUtPmJpX3ZjbnQgPSAxOwogCWNsb25lLT5iaV9pb192ZWMtPmJ2 X29mZnNldCA9IG9mZnNldDsKLQljbG9uZS0+YmlfaW9fdmVjLT5idl9sZW4gPSBjbG9uZS0+Ymlf c2l6ZTsKKwljbG9uZS0+YmlfaW9fdmVjLT5idl9sZW4gPSBjbG9uZS0+YmlfaXRlci5iaV9zaXpl OwogCWNsb25lLT5iaV9mbGFncyB8PSAxIDw8IEJJT19DTE9ORUQ7CiAKIAljbG9uZV9iaW9faW50 ZWdyaXR5KGJpbywgY2xvbmUsIGlkeCwgbGVuLCBvZmZzZXQsIDEpOwpAQCAtMTExNyw3ICsxMTE3 LDggQEAgc3RhdGljIHZvaWQgY2xvbmVfYmlvKHN0cnVjdCBkbV90YXJnZXRfaW8gKnRpbywgc3Ry dWN0IGJpbyAqYmlvLAogCWJpb19zZXR1cF9zZWN0b3IoY2xvbmUsIHNlY3RvciwgbGVuKTsKIAli aW9fc2V0dXBfYnYoY2xvbmUsIGlkeCwgYnZfY291bnQpOwogCi0JaWYgKGlkeCAhPSBiaW8tPmJp X2lkeCB8fCBjbG9uZS0+Ymlfc2l6ZSA8IGJpby0+Ymlfc2l6ZSkKKwlpZiAoaWR4ICE9IGJpby0+ YmlfaXRlci5iaV9pZHggfHwKKwkgICAgY2xvbmUtPmJpX2l0ZXIuYmlfc2l6ZSA8IGJpby0+Ymlf aXRlci5iaV9zaXplKQogCQl0cmltID0gMTsKIAljbG9uZV9iaW9faW50ZWdyaXR5KGJpbywgY2xv bmUsIGlkeCwgbGVuLCAwLCB0cmltKTsKIH0KQEAgLTE0MDUsOCArMTQwNiw4IEBAIHN0YXRpYyB2 b2lkIF9fc3BsaXRfYW5kX3Byb2Nlc3NfYmlvKHN0cnVjdCBtYXBwZWRfZGV2aWNlICptZCwKIAlj aS5pby0+YmlvID0gYmlvOwogCWNpLmlvLT5tZCA9IG1kOwogCXNwaW5fbG9ja19pbml0KCZjaS5p by0+ZW5kaW9fbG9jayk7Ci0JY2kuc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7Ci0JY2kuaWR4ID0g YmlvLT5iaV9pZHg7CisJY2kuc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwljaS5p ZHggPSBiaW8tPmJpX2l0ZXIuYmlfaWR4OwogCiAJc3RhcnRfaW9fYWNjdChjaS5pbyk7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWQvZmF1bHR5LmMgYi9kcml2ZXJzL21kL2ZhdWx0eS5jCmluZGV4 IDMxOTNhZWYuLmU4YjQ1NzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZmF1bHR5LmMKKysrIGIv ZHJpdmVycy9tZC9mYXVsdHkuYwpAQCAtNzQsOCArNzQsOCBAQCBzdGF0aWMgdm9pZCBmYXVsdHlf ZmFpbChzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnJvcikKIHsKIAlzdHJ1Y3QgYmlvICpiID0gYmlv LT5iaV9wcml2YXRlOwogCi0JYi0+Ymlfc2l6ZSA9IGJpby0+Ymlfc2l6ZTsKLQliLT5iaV9zZWN0 b3IgPSBiaW8tPmJpX3NlY3RvcjsKKwliLT5iaV9pdGVyLmJpX3NpemUgPSBiaW8tPmJpX2l0ZXIu Ymlfc2l6ZTsKKwliLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7 CiAKIAliaW9fcHV0KGJpbyk7CiAKQEAgLTE4NSwyNiArMTg1LDMxIEBAIHN0YXRpYyB2b2lkIG1h a2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCQlyZXR1 cm47CiAJCX0KIAotCQlpZiAoY2hlY2tfc2VjdG9yKGNvbmYsIGJpby0+Ymlfc2VjdG9yLCBiaW9f ZW5kX3NlY3RvcihiaW8pLCBXUklURSkpCisJCWlmIChjaGVja19zZWN0b3IoY29uZiwgYmlvLT5i aV9pdGVyLmJpX3NlY3RvciwKKwkJCQkgYmlvX2VuZF9zZWN0b3IoYmlvKSwgV1JJVEUpKQogCQkJ ZmFpbGl0ID0gMTsKIAkJaWYgKGNoZWNrX21vZGUoY29uZiwgV3JpdGVQZXJzaXN0ZW50KSkgewot CQkJYWRkX3NlY3Rvcihjb25mLCBiaW8tPmJpX3NlY3RvciwgV3JpdGVQZXJzaXN0ZW50KTsKKwkJ CWFkZF9zZWN0b3IoY29uZiwgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCQkgICBXcml0ZVBl cnNpc3RlbnQpOwogCQkJZmFpbGl0ID0gMTsKIAkJfQogCQlpZiAoY2hlY2tfbW9kZShjb25mLCBX cml0ZVRyYW5zaWVudCkpCiAJCQlmYWlsaXQgPSAxOwogCX0gZWxzZSB7CiAJCS8qIHJlYWQgcmVx dWVzdCAqLwotCQlpZiAoY2hlY2tfc2VjdG9yKGNvbmYsIGJpby0+Ymlfc2VjdG9yLCBiaW9fZW5k X3NlY3RvcihiaW8pLCBSRUFEKSkKKwkJaWYgKGNoZWNrX3NlY3Rvcihjb25mLCBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLAorCQkJCSBiaW9fZW5kX3NlY3RvcihiaW8pLCBSRUFEKSkKIAkJCWZhaWxp dCA9IDE7CiAJCWlmIChjaGVja19tb2RlKGNvbmYsIFJlYWRUcmFuc2llbnQpKQogCQkJZmFpbGl0 ID0gMTsKIAkJaWYgKGNoZWNrX21vZGUoY29uZiwgUmVhZFBlcnNpc3RlbnQpKSB7Ci0JCQlhZGRf c2VjdG9yKGNvbmYsIGJpby0+Ymlfc2VjdG9yLCBSZWFkUGVyc2lzdGVudCk7CisJCQlhZGRfc2Vj dG9yKGNvbmYsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJICAgUmVhZFBlcnNpc3RlbnQp OwogCQkJZmFpbGl0ID0gMTsKIAkJfQogCQlpZiAoY2hlY2tfbW9kZShjb25mLCBSZWFkRml4YWJs ZSkpIHsKLQkJCWFkZF9zZWN0b3IoY29uZiwgYmlvLT5iaV9zZWN0b3IsIFJlYWRGaXhhYmxlKTsK KwkJCWFkZF9zZWN0b3IoY29uZiwgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCQkgICBSZWFk Rml4YWJsZSk7CiAJCQlmYWlsaXQgPSAxOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZC9saW5lYXIuYyBiL2RyaXZlcnMvbWQvbGluZWFyLmMKaW5kZXggZjAzZmFiZC4uZmIzYjBkMCAx MDA2NDQKLS0tIGEvZHJpdmVycy9tZC9saW5lYXIuYworKysgYi9kcml2ZXJzL21kL2xpbmVhci5j CkBAIC0yOTcsMTkgKzI5NywxOSBAQCBzdGF0aWMgdm9pZCBsaW5lYXJfbWFrZV9yZXF1ZXN0KHN0 cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKmJpbykKIAl9CiAKIAlyY3VfcmVhZF9sb2Nr KCk7Ci0JdG1wX2RldiA9IHdoaWNoX2RldihtZGRldiwgYmlvLT5iaV9zZWN0b3IpOworCXRtcF9k ZXYgPSB3aGljaF9kZXYobWRkZXYsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCXN0YXJ0X3Nl Y3RvciA9IHRtcF9kZXYtPmVuZF9zZWN0b3IgLSB0bXBfZGV2LT5yZGV2LT5zZWN0b3JzOwogCiAK LQlpZiAodW5saWtlbHkoYmlvLT5iaV9zZWN0b3IgPj0gKHRtcF9kZXYtPmVuZF9zZWN0b3IpCi0J CSAgICAgfHwgKGJpby0+Ymlfc2VjdG9yIDwgc3RhcnRfc2VjdG9yKSkpIHsKKwlpZiAodW5saWtl bHkoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+PSAodG1wX2Rldi0+ZW5kX3NlY3RvcikKKwkJICAg ICB8fCAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8IHN0YXJ0X3NlY3RvcikpKSB7CiAJCWNoYXIg YltCREVWTkFNRV9TSVpFXTsKIAogCQlwcmludGsoS0VSTl9FUlIKIAkJICAgICAgICJtZC9saW5l YXI6JXM6IG1ha2VfcmVxdWVzdDogU2VjdG9yICVsbHUgb3V0IG9mIGJvdW5kcyBvbiAiCiAJCSAg ICAgICAiZGV2ICVzOiAlbGx1IHNlY3RvcnMsIG9mZnNldCAlbGx1XG4iLAogCQkgICAgICAgbWRu YW1lKG1kZGV2KSwKLQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3Is CisJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJ CSAgICAgICBiZGV2bmFtZSh0bXBfZGV2LT5yZGV2LT5iZGV2LCBiKSwKIAkJICAgICAgICh1bnNp Z25lZCBsb25nIGxvbmcpdG1wX2Rldi0+cmRldi0+c2VjdG9ycywKIAkJICAgICAgICh1bnNpZ25l ZCBsb25nIGxvbmcpc3RhcnRfc2VjdG9yKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgdm9p ZCBsaW5lYXJfbWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKmJp bykKIAogCQlyY3VfcmVhZF91bmxvY2soKTsKIAotCQlicCA9IGJpb19zcGxpdChiaW8sIGVuZF9z ZWN0b3IgLSBiaW8tPmJpX3NlY3Rvcik7CisJCWJwID0gYmlvX3NwbGl0KGJpbywgZW5kX3NlY3Rv ciAtIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCiAJCWxpbmVhcl9tYWtlX3JlcXVlc3QobWRk ZXYsICZicC0+YmlvMSk7CiAJCWxpbmVhcl9tYWtlX3JlcXVlc3QobWRkZXYsICZicC0+YmlvMik7 CkBAIC0zMzUsNyArMzM1LDcgQEAgc3RhdGljIHZvaWQgbGluZWFyX21ha2VfcmVxdWVzdChzdHJ1 Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJfQogCQkgICAgCiAJYmlvLT5iaV9i ZGV2ID0gdG1wX2Rldi0+cmRldi0+YmRldjsKLQliaW8tPmJpX3NlY3RvciA9IGJpby0+Ymlfc2Vj dG9yIC0gc3RhcnRfc2VjdG9yCisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJpby0+YmlfaXRl ci5iaV9zZWN0b3IgLSBzdGFydF9zZWN0b3IKIAkJKyB0bXBfZGV2LT5yZGV2LT5kYXRhX29mZnNl dDsKIAlyY3VfcmVhZF91bmxvY2soKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5jIGIv ZHJpdmVycy9tZC9tZC5jCmluZGV4IDYwZTEwZjEuLmVjYzczODEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbWQvbWQuYworKysgYi9kcml2ZXJzL21kL21kLmMKQEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0 aWMgdm9pZCBtZF9zdWJtaXRfZmx1c2hfZGF0YShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKQogCXN0 cnVjdCBtZGRldiAqbWRkZXYgPSBjb250YWluZXJfb2Yod3MsIHN0cnVjdCBtZGRldiwgZmx1c2hf d29yayk7CiAJc3RydWN0IGJpbyAqYmlvID0gbWRkZXYtPmZsdXNoX2JpbzsKIAotCWlmIChiaW8t PmJpX3NpemUgPT0gMCkKKwlpZiAoYmlvLT5iaV9pdGVyLmJpX3NpemUgPT0gMCkKIAkJLyogYW4g ZW1wdHkgYmFycmllciAtIGFsbCBkb25lICovCiAJCWJpb19lbmRpbyhiaW8sIDApOwogCWVsc2Ug ewpAQCAtNzQ2LDcgKzc0Niw3IEBAIHZvaWQgbWRfc3VwZXJfd3JpdGUoc3RydWN0IG1kZGV2ICpt ZGRldiwgc3RydWN0IG1kX3JkZXYgKnJkZXYsCiAJc3RydWN0IGJpbyAqYmlvID0gYmlvX2FsbG9j X21kZGV2KEdGUF9OT0lPLCAxLCBtZGRldik7CiAKIAliaW8tPmJpX2JkZXYgPSByZGV2LT5tZXRh X2JkZXYgPyByZGV2LT5tZXRhX2JkZXYgOiByZGV2LT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0g c2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJYmlvX2FkZF9wYWdl KGJpbywgcGFnZSwgc2l6ZSwgMCk7CiAJYmlvLT5iaV9wcml2YXRlID0gcmRldjsKIAliaW8tPmJp X2VuZF9pbyA9IHN1cGVyX3dyaXR0ZW47CkBAIC03ODUsMTMgKzc4NSwxMyBAQCBpbnQgc3luY19w YWdlX2lvKHN0cnVjdCBtZF9yZGV2ICpyZGV2LCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLAog CWJpby0+YmlfYmRldiA9IChtZXRhZGF0YV9vcCAmJiByZGV2LT5tZXRhX2JkZXYpID8KIAkJcmRl di0+bWV0YV9iZGV2IDogcmRldi0+YmRldjsKIAlpZiAobWV0YWRhdGFfb3ApCi0JCWJpby0+Ymlf c2VjdG9yID0gc2VjdG9yICsgcmRldi0+c2Jfc3RhcnQ7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBzZWN0b3IgKyByZGV2LT5zYl9zdGFydDsKIAllbHNlIGlmIChyZGV2LT5tZGRldi0+cmVz aGFwZV9wb3NpdGlvbiAhPSBNYXhTZWN0b3IgJiYKIAkJIChyZGV2LT5tZGRldi0+cmVzaGFwZV9i YWNrd2FyZHMgPT0KIAkJICAoc2VjdG9yID49IHJkZXYtPm1kZGV2LT5yZXNoYXBlX3Bvc2l0aW9u KSkpCi0JCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yICsgcmRldi0+bmV3X2RhdGFfb2Zmc2V0Owor CQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yICsgcmRldi0+bmV3X2RhdGFfb2Zmc2V0 OwogCWVsc2UKLQkJYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3IgKyByZGV2LT5kYXRhX29mZnNldDsK KwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArIHJkZXYtPmRhdGFfb2Zmc2V0Owog CWJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIHNpemUsIDApOwogCWluaXRfY29tcGxldGlvbigmZXZl bnQpOwogCWJpby0+YmlfcHJpdmF0ZSA9ICZldmVudDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQv bXVsdGlwYXRoLmMgYi9kcml2ZXJzL21kL211bHRpcGF0aC5jCmluZGV4IDE2NDJlYWUuLjg0OWFk MzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbXVsdGlwYXRoLmMKKysrIGIvZHJpdmVycy9tZC9t dWx0aXBhdGguYwpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyB2b2lkIG11bHRpcGF0aF9lbmRf cmVxdWVzdChzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnJvcikKIAkJbWRfZXJyb3IgKG1wX2JoLT5t ZGRldiwgcmRldik7CiAJCXByaW50ayhLRVJOX0VSUiAibXVsdGlwYXRoOiAlczogcmVzY2hlZHVs aW5nIHNlY3RvciAlbGx1XG4iLCAKIAkJICAgICAgIGJkZXZuYW1lKHJkZXYtPmJkZXYsYiksIAot CQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCSAgICAgICAo dW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCQltdWx0aXBhdGhf cmVzY2hlZHVsZV9yZXRyeShtcF9iaCk7CiAJfSBlbHNlCiAJCW11bHRpcGF0aF9lbmRfYmhfaW8o bXBfYmgsIGVycm9yKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgdm9pZCBtdWx0aXBhdGhf bWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKiBiaW8pCiAJbXVs dGlwYXRoID0gY29uZi0+bXVsdGlwYXRocyArIG1wX2JoLT5wYXRoOwogCiAJbXBfYmgtPmJpbyA9 ICpiaW87Ci0JbXBfYmgtPmJpby5iaV9zZWN0b3IgKz0gbXVsdGlwYXRoLT5yZGV2LT5kYXRhX29m ZnNldDsKKwltcF9iaC0+YmlvLmJpX2l0ZXIuYmlfc2VjdG9yICs9IG11bHRpcGF0aC0+cmRldi0+ ZGF0YV9vZmZzZXQ7CiAJbXBfYmgtPmJpby5iaV9iZGV2ID0gbXVsdGlwYXRoLT5yZGV2LT5iZGV2 OwogCW1wX2JoLT5iaW8uYmlfcncgfD0gUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVDsKIAltcF9iaC0+ YmlvLmJpX2VuZF9pbyA9IG11bHRpcGF0aF9lbmRfcmVxdWVzdDsKQEAgLTM1NSwyMSArMzU1LDIy IEBAIHN0YXRpYyB2b2lkIG11bHRpcGF0aGQoc3RydWN0IG1kX3RocmVhZCAqdGhyZWFkKQogCQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZjb25mLT5kZXZpY2VfbG9jaywgZmxhZ3MpOwogCiAJCWJp byA9ICZtcF9iaC0+YmlvOwotCQliaW8tPmJpX3NlY3RvciA9IG1wX2JoLT5tYXN0ZXJfYmlvLT5i aV9zZWN0b3I7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBtcF9iaC0+bWFzdGVyX2Jpby0+ YmlfaXRlci5iaV9zZWN0b3I7CiAJCQogCQlpZiAoKG1wX2JoLT5wYXRoID0gbXVsdGlwYXRoX21h cCAoY29uZikpPDApIHsKIAkJCXByaW50ayhLRVJOX0FMRVJUICJtdWx0aXBhdGg6ICVzOiB1bnJl Y292ZXJhYmxlIElPIHJlYWQiCiAJCQkJIiBlcnJvciBmb3IgYmxvY2sgJWxsdVxuIiwKIAkJCQli ZGV2bmFtZShiaW8tPmJpX2JkZXYsYiksCi0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJp X3NlY3Rvcik7CisJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9y KTsKIAkJCW11bHRpcGF0aF9lbmRfYmhfaW8obXBfYmgsIC1FSU8pOwogCQl9IGVsc2UgewogCQkJ cHJpbnRrKEtFUk5fRVJSICJtdWx0aXBhdGg6ICVzOiByZWRpcmVjdGluZyBzZWN0b3IgJWxsdSIK IAkJCQkiIHRvIGFub3RoZXIgSU8gcGF0aFxuIiwKIAkJCQliZGV2bmFtZShiaW8tPmJpX2JkZXYs YiksCi0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQkJKHVuc2ln bmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJCSpiaW8gPSAqKG1wX2Jo LT5tYXN0ZXJfYmlvKTsKLQkJCWJpby0+Ymlfc2VjdG9yICs9IGNvbmYtPm11bHRpcGF0aHNbbXBf YmgtPnBhdGhdLnJkZXYtPmRhdGFfb2Zmc2V0OworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAr PQorCQkJCWNvbmYtPm11bHRpcGF0aHNbbXBfYmgtPnBhdGhdLnJkZXYtPmRhdGFfb2Zmc2V0Owog CQkJYmlvLT5iaV9iZGV2ID0gY29uZi0+bXVsdGlwYXRoc1ttcF9iaC0+cGF0aF0ucmRldi0+YmRl djsKIAkJCWJpby0+YmlfcncgfD0gUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVDsKIAkJCWJpby0+Ymlf ZW5kX2lvID0gbXVsdGlwYXRoX2VuZF9yZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9y YWlkMC5jIGIvZHJpdmVycy9tZC9yYWlkMC5jCmluZGV4IGM0ZDQyMGIuLmUzOGQxZDMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDAuYworKysgYi9kcml2ZXJzL21kL3JhaWQwLmMKQEAgLTUw MSwxMCArNTAxLDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IGlzX2lvX2luX2NodW5rX2JvdW5kYXJ5 KHN0cnVjdCBtZGRldiAqbWRkZXYsCiAJCQl1bnNpZ25lZCBpbnQgY2h1bmtfc2VjdHMsIHN0cnVj dCBiaW8gKmJpbykKIHsKIAlpZiAobGlrZWx5KGlzX3Bvd2VyX29mXzIoY2h1bmtfc2VjdHMpKSkg ewotCQlyZXR1cm4gY2h1bmtfc2VjdHMgPj0gKChiaW8tPmJpX3NlY3RvciAmIChjaHVua19zZWN0 cy0xKSkKKwkJcmV0dXJuIGNodW5rX3NlY3RzID49CisJCQkoKGJpby0+YmlfaXRlci5iaV9zZWN0 b3IgJiAoY2h1bmtfc2VjdHMtMSkpCiAJCQkJCSsgYmlvX3NlY3RvcnMoYmlvKSk7CiAJfSBlbHNl ewotCQlzZWN0b3JfdCBzZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsKKwkJc2VjdG9yX3Qgc2VjdG9y ID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAkJcmV0dXJuIGNodW5rX3NlY3RzID49IChzZWN0 b3JfZGl2KHNlY3RvciwgY2h1bmtfc2VjdHMpCiAJCQkJCQkrIGJpb19zZWN0b3JzKGJpbykpOwog CX0KQEAgLTUyNCw3ICs1MjUsNyBAQCBzdGF0aWMgdm9pZCByYWlkMF9tYWtlX3JlcXVlc3Qoc3Ry dWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqYmlvKQogCiAJY2h1bmtfc2VjdHMgPSBtZGRl di0+Y2h1bmtfc2VjdG9yczsKIAlpZiAodW5saWtlbHkoIWlzX2lvX2luX2NodW5rX2JvdW5kYXJ5 KG1kZGV2LCBjaHVua19zZWN0cywgYmlvKSkpIHsKLQkJc2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5i aV9zZWN0b3I7CisJCXNlY3Rvcl90IHNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJ CXN0cnVjdCBiaW9fcGFpciAqYnA7CiAJCS8qIFNhbml0eSBjaGVjayAtLSBxdWV1ZSBmdW5jdGlv bnMgc2hvdWxkIHByZXZlbnQgdGhpcyBoYXBwZW5pbmcgKi8KIAkJaWYgKGJpb19zZWdtZW50cyhi aW8pID4gMSkKQEAgLTU0NCwxMiArNTQ1LDEyIEBAIHN0YXRpYyB2b2lkIHJhaWQwX21ha2VfcmVx dWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXJldHVybjsKIAl9 CiAKLQlzZWN0b3Jfb2Zmc2V0ID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX29mZnNldCA9IGJp by0+YmlfaXRlci5iaV9zZWN0b3I7CiAJem9uZSA9IGZpbmRfem9uZShtZGRldi0+cHJpdmF0ZSwg JnNlY3Rvcl9vZmZzZXQpOwotCXRtcF9kZXYgPSBtYXBfc2VjdG9yKG1kZGV2LCB6b25lLCBiaW8t PmJpX3NlY3RvciwKKwl0bXBfZGV2ID0gbWFwX3NlY3RvcihtZGRldiwgem9uZSwgYmlvLT5iaV9p dGVyLmJpX3NlY3RvciwKIAkJCSAgICAgJnNlY3Rvcl9vZmZzZXQpOwogCWJpby0+YmlfYmRldiA9 IHRtcF9kZXYtPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3Jfb2Zmc2V0ICsgem9uZS0+ ZGV2X3N0YXJ0ICsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yX29mZnNldCArIHpv bmUtPmRldl9zdGFydCArCiAJCXRtcF9kZXYtPmRhdGFfb2Zmc2V0OwogCiAJaWYgKHVubGlrZWx5 KChiaW8tPmJpX3J3ICYgUkVRX0RJU0NBUkQpICYmCkBAIC01NjYsNyArNTY3LDggQEAgYmFkX21h cDoKIAlwcmludGsoIm1kL3JhaWQwOiVzOiBtYWtlX3JlcXVlc3QgYnVnOiBjYW4ndCBjb252ZXJ0 IGJsb2NrIGFjcm9zcyBjaHVua3MiCiAJICAgICAgICIgb3IgYmlnZ2VyIHRoYW4gJWRrICVsbHUg JWRcbiIsCiAJICAgICAgIG1kbmFtZShtZGRldiksIGNodW5rX3NlY3RzIC8gMiwKLQkgICAgICAg KHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3RvciwgYmlvX3NlY3RvcnMoYmlvKSAvIDIp OworCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJ ICAgICAgIGJpb19zZWN0b3JzKGJpbykgLyAyKTsKIAogCWJpb19pb19lcnJvcihiaW8pOwogCXJl dHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEuYyBiL2RyaXZlcnMvbWQvcmFpZDEu YwppbmRleCBmYzgxN2ZmLi5jNDA4NDZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQxLmMK KysrIGIvZHJpdmVycy9tZC9yYWlkMS5jCkBAIC0yNTUsOSArMjU1LDggQEAgc3RhdGljIHZvaWQg cmFpZF9lbmRfYmlvX2lvKHN0cnVjdCByMWJpbyAqcjFfYmlvKQogCWlmICghdGVzdF9hbmRfc2V0 X2JpdChSMUJJT19SZXR1cm5lZCwgJnIxX2Jpby0+c3RhdGUpKSB7CiAJCXByX2RlYnVnKCJyYWlk MTogc3luYyBlbmQgJXMgb24gc2VjdG9ycyAlbGx1LSVsbHVcbiIsCiAJCQkgKGJpb19kYXRhX2Rp cihiaW8pID09IFdSSVRFKSA/ICJ3cml0ZSIgOiAicmVhZCIsCi0JCQkgKHVuc2lnbmVkIGxvbmcg bG9uZykgYmlvLT5iaV9zZWN0b3IsCi0JCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgYmlvLT5iaV9z ZWN0b3IgKwotCQkJIGJpb19zZWN0b3JzKGJpbykgLSAxKTsKKwkJCSAodW5zaWduZWQgbG9uZyBs b25nKSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIGJp b19lbmRfc2VjdG9yKGJpbykgLSAxKTsKIAogCQljYWxsX2Jpb19lbmRpbyhyMV9iaW8pOwogCX0K QEAgLTQ1Niw5ICs0NTUsOCBAQCBzdGF0aWMgdm9pZCByYWlkMV9lbmRfd3JpdGVfcmVxdWVzdChz dHJ1Y3QgYmlvICpiaW8sIGludCBlcnJvcikKIAkJCQlzdHJ1Y3QgYmlvICptYmlvID0gcjFfYmlv LT5tYXN0ZXJfYmlvOwogCQkJCXByX2RlYnVnKCJyYWlkMTogYmVoaW5kIGVuZCB3cml0ZSBzZWN0 b3JzIgogCQkJCQkgIiAlbGx1LSVsbHVcbiIsCi0JCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBt YmlvLT5iaV9zZWN0b3IsCi0JCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBtYmlvLT5iaV9zZWN0 b3IgKwotCQkJCQkgYmlvX3NlY3RvcnMobWJpbykgLSAxKTsKKwkJCQkJICh1bnNpZ25lZCBsb25n IGxvbmcpIG1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9u ZykgYmlvX2VuZF9zZWN0b3IobWJpbykgLSAxKTsKIAkJCQljYWxsX2Jpb19lbmRpbyhyMV9iaW8p OwogCQkJfQogCQl9CkBAIC05NDUsNyArOTQzLDggQEAgZG9fc3luY19pbzoKIAkJaWYgKGJ2ZWNz W2ldLmJ2X3BhZ2UpCiAJCQlwdXRfcGFnZShidmVjc1tpXS5idl9wYWdlKTsKIAlrZnJlZShidmVj cyk7Ci0JcHJfZGVidWcoIiVkQiBiZWhpbmQgYWxsb2MgZmFpbGVkLCBkb2luZyBzeW5jIEkvT1xu IiwgYmlvLT5iaV9zaXplKTsKKwlwcl9kZWJ1ZygiJWRCIGJlaGluZCBhbGxvYyBmYWlsZWQsIGRv aW5nIHN5bmMgSS9PXG4iLAorCQkgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogfQogCiBzdHJ1Y3Qg cmFpZDFfcGx1Z19jYiB7CkBAIC0xMDI0LDcgKzEwMjMsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX3Jl cXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykKIAogCWlmIChiaW9f ZGF0YV9kaXIoYmlvKSA9PSBXUklURSAmJgogCSAgICBiaW9fZW5kX3NlY3RvcihiaW8pID4gbWRk ZXYtPnN1c3BlbmRfbG8gJiYKLQkgICAgYmlvLT5iaV9zZWN0b3IgPCBtZGRldi0+c3VzcGVuZF9o aSkgeworCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDwgbWRkZXYtPnN1c3BlbmRfaGkpIHsK IAkJLyogQXMgdGhlIHN1c3BlbmRfKiByYW5nZSBpcyBjb250cm9sbGVkIGJ5CiAJCSAqIHVzZXJz cGFjZSwgd2Ugd2FudCBhbiBpbnRlcnJ1cHRpYmxlCiAJCSAqIHdhaXQuCkBAIC0xMDM1LDcgKzEw MzQsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3Ry dWN0IGJpbyAqIGJpbykKIAkJCXByZXBhcmVfdG9fd2FpdCgmY29uZi0+d2FpdF9iYXJyaWVyLAog CQkJCQkmdywgVEFTS19JTlRFUlJVUFRJQkxFKTsKIAkJCWlmIChiaW9fZW5kX3NlY3RvcihiaW8p IDw9IG1kZGV2LT5zdXNwZW5kX2xvIHx8Ci0JCQkgICAgYmlvLT5iaV9zZWN0b3IgPj0gbWRkZXYt PnN1c3BlbmRfaGkpCisJCQkgICAgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+PSBtZGRldi0+c3Vz cGVuZF9oaSkKIAkJCQlicmVhazsKIAkJCXNjaGVkdWxlKCk7CiAJCX0KQEAgLTEwNTcsNyArMTA1 Niw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1 Y3QgYmlvICogYmlvKQogCXIxX2Jpby0+c2VjdG9ycyA9IGJpb19zZWN0b3JzKGJpbyk7CiAJcjFf YmlvLT5zdGF0ZSA9IDA7CiAJcjFfYmlvLT5tZGRldiA9IG1kZGV2OwotCXIxX2Jpby0+c2VjdG9y ID0gYmlvLT5iaV9zZWN0b3I7CisJcjFfYmlvLT5zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yOwogCiAJLyogV2UgbWlnaHQgbmVlZCB0byBpc3N1ZSBtdWx0aXBsZSByZWFkcyB0byBkaWZm ZXJlbnQKIAkgKiBkZXZpY2VzIGlmIHRoZXJlIGFyZSBiYWQgYmxvY2tzIGFyb3VuZCwgc28gd2Ug a2VlcApAQCAtMTA5NywxMiArMTA5NiwxMyBAQCByZWFkX2FnYWluOgogCQlyMV9iaW8tPnJlYWRf ZGlzayA9IHJkaXNrOwogCiAJCXJlYWRfYmlvID0gYmlvX2Nsb25lX21kZGV2KGJpbywgR0ZQX05P SU8sIG1kZGV2KTsKLQkJYmlvX3RyaW0ocmVhZF9iaW8sIHIxX2Jpby0+c2VjdG9yIC0gYmlvLT5i aV9zZWN0b3IsCisJCWJpb190cmltKHJlYWRfYmlvLCByMV9iaW8tPnNlY3RvciAtIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IsCiAJCQkgbWF4X3NlY3RvcnMpOwogCiAJCXIxX2Jpby0+Ymlvc1tyZGlz a10gPSByZWFkX2JpbzsKIAotCQlyZWFkX2Jpby0+Ymlfc2VjdG9yID0gcjFfYmlvLT5zZWN0b3Ig KyBtaXJyb3ItPnJkZXYtPmRhdGFfb2Zmc2V0OworCQlyZWFkX2Jpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSByMV9iaW8tPnNlY3RvciArCisJCQltaXJyb3ItPnJkZXYtPmRhdGFfb2Zmc2V0OwogCQly ZWFkX2Jpby0+YmlfYmRldiA9IG1pcnJvci0+cmRldi0+YmRldjsKIAkJcmVhZF9iaW8tPmJpX2Vu ZF9pbyA9IHJhaWQxX2VuZF9yZWFkX3JlcXVlc3Q7CiAJCXJlYWRfYmlvLT5iaV9ydyA9IFJFQUQg fCBkb19zeW5jOwpAQCAtMTExNCw3ICsxMTE0LDcgQEAgcmVhZF9hZ2FpbjoKIAkJCSAqLwogCiAJ CQlzZWN0b3JzX2hhbmRsZWQgPSAocjFfYmlvLT5zZWN0b3IgKyBtYXhfc2VjdG9ycwotCQkJCQkg ICAtIGJpby0+Ymlfc2VjdG9yKTsKKwkJCQkJICAgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsK IAkJCXIxX2Jpby0+c2VjdG9ycyA9IG1heF9zZWN0b3JzOwogCQkJc3Bpbl9sb2NrX2lycSgmY29u Zi0+ZGV2aWNlX2xvY2spOwogCQkJaWYgKGJpby0+YmlfcGh5c19zZWdtZW50cyA9PSAwKQpAQCAt MTEzNSw3ICsxMTM1LDggQEAgcmVhZF9hZ2FpbjoKIAkJCXIxX2Jpby0+c2VjdG9ycyA9IGJpb19z ZWN0b3JzKGJpbykgLSBzZWN0b3JzX2hhbmRsZWQ7CiAJCQlyMV9iaW8tPnN0YXRlID0gMDsKIAkJ CXIxX2Jpby0+bWRkZXYgPSBtZGRldjsKLQkJCXIxX2Jpby0+c2VjdG9yID0gYmlvLT5iaV9zZWN0 b3IgKyBzZWN0b3JzX2hhbmRsZWQ7CisJCQlyMV9iaW8tPnNlY3RvciA9IGJpby0+YmlfaXRlci5i aV9zZWN0b3IgKworCQkJCXNlY3RvcnNfaGFuZGxlZDsKIAkJCWdvdG8gcmVhZF9hZ2FpbjsKIAkJ fSBlbHNlCiAJCQlnZW5lcmljX21ha2VfcmVxdWVzdChyZWFkX2Jpbyk7CkBAIC0xMjU0LDcgKzEy NTUsNyBAQCByZWFkX2FnYWluOgogCQkJYmlvLT5iaV9waHlzX3NlZ21lbnRzKys7CiAJCXNwaW5f dW5sb2NrX2lycSgmY29uZi0+ZGV2aWNlX2xvY2spOwogCX0KLQlzZWN0b3JzX2hhbmRsZWQgPSBy MV9iaW8tPnNlY3RvciArIG1heF9zZWN0b3JzIC0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yc19o YW5kbGVkID0gcjFfYmlvLT5zZWN0b3IgKyBtYXhfc2VjdG9ycyAtIGJpby0+YmlfaXRlci5iaV9z ZWN0b3I7CiAKIAlhdG9taWNfc2V0KCZyMV9iaW8tPnJlbWFpbmluZywgMSk7CiAJYXRvbWljX3Nl dCgmcjFfYmlvLT5iZWhpbmRfcmVtYWluaW5nLCAwKTsKQEAgLTEyNjYsNyArMTI2Nyw3IEBAIHJl YWRfYWdhaW46CiAJCQljb250aW51ZTsKIAogCQltYmlvID0gYmlvX2Nsb25lX21kZGV2KGJpbywg R0ZQX05PSU8sIG1kZGV2KTsKLQkJYmlvX3RyaW0obWJpbywgcjFfYmlvLT5zZWN0b3IgLSBiaW8t PmJpX3NlY3RvciwgbWF4X3NlY3RvcnMpOworCQliaW9fdHJpbShtYmlvLCByMV9iaW8tPnNlY3Rv ciAtIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsIG1heF9zZWN0b3JzKTsKIAogCQlpZiAoZmlyc3Rf Y2xvbmUpIHsKIAkJCS8qIGRvIGJlaGluZCBJL08gPwpAQCAtMTMwMCw3ICsxMzAxLDcgQEAgcmVh ZF9hZ2FpbjoKIAogCQlyMV9iaW8tPmJpb3NbaV0gPSBtYmlvOwogCi0JCW1iaW8tPmJpX3NlY3Rv cgk9IChyMV9iaW8tPnNlY3RvciArCisJCW1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gKHIxX2Jp by0+c2VjdG9yICsKIAkJCQkgICBjb25mLT5taXJyb3JzW2ldLnJkZXYtPmRhdGFfb2Zmc2V0KTsK IAkJbWJpby0+YmlfYmRldiA9IGNvbmYtPm1pcnJvcnNbaV0ucmRldi0+YmRldjsKIAkJbWJpby0+ YmlfZW5kX2lvCT0gcmFpZDFfZW5kX3dyaXRlX3JlcXVlc3Q7CkBAIC0xMzQwLDcgKzEzNDEsNyBA QCByZWFkX2FnYWluOgogCQlyMV9iaW8tPnNlY3RvcnMgPSBiaW9fc2VjdG9ycyhiaW8pIC0gc2Vj dG9yc19oYW5kbGVkOwogCQlyMV9iaW8tPnN0YXRlID0gMDsKIAkJcjFfYmlvLT5tZGRldiA9IG1k ZGV2OwotCQlyMV9iaW8tPnNlY3RvciA9IGJpby0+Ymlfc2VjdG9yICsgc2VjdG9yc19oYW5kbGVk OworCQlyMV9iaW8tPnNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgKyBzZWN0b3JzX2hh bmRsZWQ7CiAJCWdvdG8gcmV0cnlfd3JpdGU7CiAJfQogCkBAIC0xODYwLDE0ICsxODYxLDE0IEBA IHN0YXRpYyBpbnQgcHJvY2Vzc19jaGVja3Moc3RydWN0IHIxYmlvICpyMV9iaW8pCiAJCS8qIGZp eHVwIHRoZSBiaW8gZm9yIHJldXNlICovCiAJCWJpb19yZXNldChiKTsKIAkJYi0+YmlfdmNudCA9 IHZjbnQ7Ci0JCWItPmJpX3NpemUgPSByMV9iaW8tPnNlY3RvcnMgPDwgOTsKLQkJYi0+Ymlfc2Vj dG9yID0gcjFfYmlvLT5zZWN0b3IgKworCQliLT5iaV9pdGVyLmJpX3NpemUgPSByMV9iaW8tPnNl Y3RvcnMgPDwgOTsKKwkJYi0+YmlfaXRlci5iaV9zZWN0b3IgPSByMV9iaW8tPnNlY3RvciArCiAJ CQljb25mLT5taXJyb3JzW2ldLnJkZXYtPmRhdGFfb2Zmc2V0OwogCQliLT5iaV9iZGV2ID0gY29u Zi0+bWlycm9yc1tpXS5yZGV2LT5iZGV2OwogCQliLT5iaV9lbmRfaW8gPSBlbmRfc3luY19yZWFk OwogCQliLT5iaV9wcml2YXRlID0gcjFfYmlvOwogCi0JCXNpemUgPSBiLT5iaV9zaXplOworCQlz aXplID0gYi0+YmlfaXRlci5iaV9zaXplOwogCQlmb3IgKGogPSAwOyBqIDwgdmNudCA7IGorKykg ewogCQkJc3RydWN0IGJpb192ZWMgKmJpOwogCQkJYmkgPSAmYi0+YmlfaW9fdmVjW2pdOwpAQCAt MjEyMiwxMSArMjEyMywxMSBAQCBzdGF0aWMgaW50IG5hcnJvd193cml0ZV9lcnJvcihzdHJ1Y3Qg cjFiaW8gKnIxX2JpbywgaW50IGkpCiAJCX0KIAogCQl3YmlvLT5iaV9ydyA9IFdSSVRFOwotCQl3 YmlvLT5iaV9zZWN0b3IgPSByMV9iaW8tPnNlY3RvcjsKLQkJd2Jpby0+Ymlfc2l6ZSA9IHIxX2Jp by0+c2VjdG9ycyA8PCA5OworCQl3YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHIxX2Jpby0+c2Vj dG9yOworCQl3YmlvLT5iaV9pdGVyLmJpX3NpemUgPSByMV9iaW8tPnNlY3RvcnMgPDwgOTsKIAog CQliaW9fdHJpbSh3YmlvLCBzZWN0b3IgLSByMV9iaW8tPnNlY3Rvciwgc2VjdG9ycyk7Ci0JCXdi aW8tPmJpX3NlY3RvciArPSByZGV2LT5kYXRhX29mZnNldDsKKwkJd2Jpby0+YmlfaXRlci5iaV9z ZWN0b3IgKz0gcmRldi0+ZGF0YV9vZmZzZXQ7CiAJCXdiaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2 OwogCQlpZiAoc3VibWl0X2Jpb193YWl0KFdSSVRFLCB3YmlvKSA9PSAwKQogCQkJLyogZmFpbHVy ZSEgKi8KQEAgLTIyNDAsNyArMjI0MSw4IEBAIHJlYWRfbW9yZToKIAkJfQogCQlyMV9iaW8tPnJl YWRfZGlzayA9IGRpc2s7CiAJCWJpbyA9IGJpb19jbG9uZV9tZGRldihyMV9iaW8tPm1hc3Rlcl9i aW8sIEdGUF9OT0lPLCBtZGRldik7Ci0JCWJpb190cmltKGJpbywgcjFfYmlvLT5zZWN0b3IgLSBi aW8tPmJpX3NlY3RvciwgbWF4X3NlY3RvcnMpOworCQliaW9fdHJpbShiaW8sIHIxX2Jpby0+c2Vj dG9yIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCSBtYXhfc2VjdG9ycyk7CiAJCXIxX2Jp by0+Ymlvc1tyMV9iaW8tPnJlYWRfZGlza10gPSBiaW87CiAJCXJkZXYgPSBjb25mLT5taXJyb3Jz W2Rpc2tdLnJkZXY7CiAJCXByaW50a19yYXRlbGltaXRlZChLRVJOX0VSUgpAQCAtMjI0OSw3ICsy MjUxLDcgQEAgcmVhZF9tb3JlOgogCQkJCSAgIG1kbmFtZShtZGRldiksCiAJCQkJICAgKHVuc2ln bmVkIGxvbmcgbG9uZylyMV9iaW8tPnNlY3RvciwKIAkJCQkgICBiZGV2bmFtZShyZGV2LT5iZGV2 LCBiKSk7Ci0JCWJpby0+Ymlfc2VjdG9yID0gcjFfYmlvLT5zZWN0b3IgKyByZGV2LT5kYXRhX29m ZnNldDsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHIxX2Jpby0+c2VjdG9yICsgcmRldi0+ ZGF0YV9vZmZzZXQ7CiAJCWJpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJCWJpby0+YmlfZW5k X2lvID0gcmFpZDFfZW5kX3JlYWRfcmVxdWVzdDsKIAkJYmlvLT5iaV9ydyA9IFJFQUQgfCBkb19z eW5jOwpAQCAtMjI1OCw3ICsyMjYwLDcgQEAgcmVhZF9tb3JlOgogCQkJLyogRHJhdCAtIGhhdmUg dG8gc3BsaXQgdGhpcyB1cCBtb3JlICovCiAJCQlzdHJ1Y3QgYmlvICptYmlvID0gcjFfYmlvLT5t YXN0ZXJfYmlvOwogCQkJaW50IHNlY3RvcnNfaGFuZGxlZCA9IChyMV9iaW8tPnNlY3RvciArIG1h eF9zZWN0b3JzCi0JCQkJCSAgICAgICAtIG1iaW8tPmJpX3NlY3Rvcik7CisJCQkJCSAgICAgICAt IG1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJCXIxX2Jpby0+c2VjdG9ycyA9IG1heF9zZWN0 b3JzOwogCQkJc3Bpbl9sb2NrX2lycSgmY29uZi0+ZGV2aWNlX2xvY2spOwogCQkJaWYgKG1iaW8t PmJpX3BoeXNfc2VnbWVudHMgPT0gMCkKQEAgLTIyNzYsNyArMjI3OCw4IEBAIHJlYWRfbW9yZToK IAkJCXIxX2Jpby0+c3RhdGUgPSAwOwogCQkJc2V0X2JpdChSMUJJT19SZWFkRXJyb3IsICZyMV9i aW8tPnN0YXRlKTsKIAkJCXIxX2Jpby0+bWRkZXYgPSBtZGRldjsKLQkJCXIxX2Jpby0+c2VjdG9y ID0gbWJpby0+Ymlfc2VjdG9yICsgc2VjdG9yc19oYW5kbGVkOworCQkJcjFfYmlvLT5zZWN0b3Ig PSBtYmlvLT5iaV9pdGVyLmJpX3NlY3RvciArCisJCQkJc2VjdG9yc19oYW5kbGVkOwogCiAJCQln b3RvIHJlYWRfbW9yZTsKIAkJfSBlbHNlCkBAIC0yNTAwLDcgKzI1MDMsNyBAQCBzdGF0aWMgc2Vj dG9yX3Qgc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90IHNlY3Rvcl9u ciwgaW50ICpza2lwcAogCQl9CiAJCWlmIChiaW8tPmJpX2VuZF9pbykgewogCQkJYXRvbWljX2lu YygmcmRldi0+bnJfcGVuZGluZyk7Ci0JCQliaW8tPmJpX3NlY3RvciA9IHNlY3Rvcl9uciArIHJk ZXYtPmRhdGFfb2Zmc2V0OworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3Rvcl9uciAr IHJkZXYtPmRhdGFfb2Zmc2V0OwogCQkJYmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKIAkJCWJp by0+YmlfcHJpdmF0ZSA9IHIxX2JpbzsKIAkJfQpAQCAtMjYwMCw3ICsyNjAzLDcgQEAgc3RhdGlj IHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0 b3JfbnIsIGludCAqc2tpcHAKIAkJCQkJCQljb250aW51ZTsKIAkJCQkJCS8qIHJlbW92ZSBsYXN0 IHBhZ2UgZnJvbSB0aGlzIGJpbyAqLwogCQkJCQkJYmlvLT5iaV92Y250LS07Ci0JCQkJCQliaW8t PmJpX3NpemUgLT0gbGVuOworCQkJCQkJYmlvLT5iaV9pdGVyLmJpX3NpemUgLT0gbGVuOwogCQkJ CQkJYmlvLT5iaV9mbGFncyAmPSB+KDE8PCBCSU9fU0VHX1ZBTElEKTsKIAkJCQkJfQogCQkJCQln b3RvIGJpb19mdWxsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9yYWlkMTAuYyBiL2RyaXZlcnMv bWQvcmFpZDEwLmMKaW5kZXggYTU4MjIzNS4uZmNhODg4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZC9yYWlkMTAuYworKysgYi9kcml2ZXJzL21kL3JhaWQxMC5jCkBAIC0xMTgyLDcgKzExODIsNyBA QCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJp byAqIGJpbykKIAkvKiBJZiB0aGlzIHJlcXVlc3QgY3Jvc3NlcyBhIGNodW5rIGJvdW5kYXJ5LCB3 ZSBuZWVkIHRvCiAJICogc3BsaXQgaXQuICBUaGlzIHdpbGwgb25seSBoYXBwZW4gZm9yIDEgUEFH RSAob3IgbGVzcykgcmVxdWVzdHMuCiAJICovCi0JaWYgKHVubGlrZWx5KChiaW8tPmJpX3NlY3Rv ciAmIGNodW5rX21hc2spICsgYmlvX3NlY3RvcnMoYmlvKQorCWlmICh1bmxpa2VseSgoYmlvLT5i aV9pdGVyLmJpX3NlY3RvciAmIGNodW5rX21hc2spICsgYmlvX3NlY3RvcnMoYmlvKQogCQkgICAg ID4gY2h1bmtfc2VjdHMKIAkJICAgICAmJiAoY29uZi0+Z2VvLm5lYXJfY29waWVzIDwgY29uZi0+ Z2VvLnJhaWRfZGlza3MKIAkJCSB8fCBjb25mLT5wcmV2Lm5lYXJfY29waWVzIDwgY29uZi0+cHJl di5yYWlkX2Rpc2tzKSkpIHsKQEAgLTExOTMsOCArMTE5Myw4IEBAIHN0YXRpYyB2b2lkIG1ha2Vf cmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmlvKQogCQkvKiBUaGlz IGlzIGEgb25lIHBhZ2UgYmlvIHRoYXQgdXBwZXIgbGF5ZXJzCiAJCSAqIHJlZnVzZSB0byBzcGxp dCBmb3IgdXMsIHNvIHdlIG5lZWQgdG8gc3BsaXQgaXQuCiAJCSAqLwotCQlicCA9IGJpb19zcGxp dChiaW8sCi0JCQkgICAgICAgY2h1bmtfc2VjdHMgLSAoYmlvLT5iaV9zZWN0b3IgJiAoY2h1bmtf c2VjdHMgLSAxKSkgKTsKKwkJYnAgPSBiaW9fc3BsaXQoYmlvLCBjaHVua19zZWN0cyAtCisJCQkg ICAgICAgKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgJiAoY2h1bmtfc2VjdHMgLSAxKSkpOwogCiAJ CS8qIEVhY2ggb2YgdGhlc2UgJ21ha2VfcmVxdWVzdCcgY2FsbHMgd2lsbCBjYWxsICd3YWl0X2Jh cnJpZXInLgogCQkgKiBJZiB0aGUgZmlyc3Qgc3VjY2VlZHMgYnV0IHRoZSBzZWNvbmQgYmxvY2tz IGR1ZSB0byB0aGUgcmVzeW5jCkBAIC0xMjIxLDcgKzEyMjEsOCBAQCBzdGF0aWMgdm9pZCBtYWtl X3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykKIAliYWRfbWFw OgogCQlwcmludGsoIm1kL3JhaWQxMDolczogbWFrZV9yZXF1ZXN0IGJ1ZzogY2FuJ3QgY29udmVy dCBibG9jayBhY3Jvc3MgY2h1bmtzIgogCQkgICAgICAgIiBvciBiaWdnZXIgdGhhbiAlZGsgJWxs dSAlZFxuIiwgbWRuYW1lKG1kZGV2KSwgY2h1bmtfc2VjdHMvMiwKLQkJICAgICAgICh1bnNpZ25l ZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IsIGJpb19zZWN0b3JzKGJpbykgLyAyKTsKKwkJICAg ICAgICh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJICAgICAg IGJpb19zZWN0b3JzKGJpbykgLyAyKTsKIAogCQliaW9faW9fZXJyb3IoYmlvKTsKIAkJcmV0dXJu OwpAQCAtMTIzOCwyNCArMTIzOSwyNSBAQCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0 IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykKIAogCXNlY3RvcnMgPSBiaW9fc2VjdG9y cyhiaW8pOwogCXdoaWxlICh0ZXN0X2JpdChNRF9SRUNPVkVSWV9SRVNIQVBFLCAmbWRkZXYtPnJl Y292ZXJ5KSAmJgotCSAgICBiaW8tPmJpX3NlY3RvciA8IGNvbmYtPnJlc2hhcGVfcHJvZ3Jlc3Mg JiYKLQkgICAgYmlvLT5iaV9zZWN0b3IgKyBzZWN0b3JzID4gY29uZi0+cmVzaGFwZV9wcm9ncmVz cykgeworCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDwgY29uZi0+cmVzaGFwZV9wcm9ncmVz cyAmJgorCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICsgc2VjdG9ycyA+IGNvbmYtPnJlc2hh cGVfcHJvZ3Jlc3MpIHsKIAkJLyogSU8gc3BhbnMgdGhlIHJlc2hhcGUgcG9zaXRpb24uICBOZWVk IHRvIHdhaXQgZm9yCiAJCSAqIHJlc2hhcGUgdG8gcGFzcwogCQkgKi8KIAkJYWxsb3dfYmFycmll cihjb25mKTsKIAkJd2FpdF9ldmVudChjb25mLT53YWl0X2JhcnJpZXIsCi0JCQkgICBjb25mLT5y ZXNoYXBlX3Byb2dyZXNzIDw9IGJpby0+Ymlfc2VjdG9yIHx8Ci0JCQkgICBjb25mLT5yZXNoYXBl X3Byb2dyZXNzID49IGJpby0+Ymlfc2VjdG9yICsgc2VjdG9ycyk7CisJCQkgICBjb25mLT5yZXNo YXBlX3Byb2dyZXNzIDw9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgfHwKKwkJCSAgIGNvbmYtPnJl c2hhcGVfcHJvZ3Jlc3MgPj0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciArCisJCQkgICBzZWN0b3Jz KTsKIAkJd2FpdF9iYXJyaWVyKGNvbmYpOwogCX0KIAlpZiAodGVzdF9iaXQoTURfUkVDT1ZFUllf UkVTSEFQRSwgJm1kZGV2LT5yZWNvdmVyeSkgJiYKIAkgICAgYmlvX2RhdGFfZGlyKGJpbykgPT0g V1JJVEUgJiYKIAkgICAgKG1kZGV2LT5yZXNoYXBlX2JhY2t3YXJkcwotCSAgICAgPyAoYmlvLT5i aV9zZWN0b3IgPCBjb25mLT5yZXNoYXBlX3NhZmUgJiYKLQkJYmlvLT5iaV9zZWN0b3IgKyBzZWN0 b3JzID4gY29uZi0+cmVzaGFwZV9wcm9ncmVzcykKLQkgICAgIDogKGJpby0+Ymlfc2VjdG9yICsg c2VjdG9ycyA+IGNvbmYtPnJlc2hhcGVfc2FmZSAmJgotCQliaW8tPmJpX3NlY3RvciA8IGNvbmYt PnJlc2hhcGVfcHJvZ3Jlc3MpKSkgeworCSAgICAgPyAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8 IGNvbmYtPnJlc2hhcGVfc2FmZSAmJgorCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICsgc2VjdG9y cyA+IGNvbmYtPnJlc2hhcGVfcHJvZ3Jlc3MpCisJICAgICA6IChiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yICsgc2VjdG9ycyA+IGNvbmYtPnJlc2hhcGVfc2FmZSAmJgorCQliaW8tPmJpX2l0ZXIuYmlf c2VjdG9yIDwgY29uZi0+cmVzaGFwZV9wcm9ncmVzcykpKSB7CiAJCS8qIE5lZWQgdG8gdXBkYXRl IHJlc2hhcGVfcG9zaXRpb24gaW4gbWV0YWRhdGEgKi8KIAkJbWRkZXYtPnJlc2hhcGVfcG9zaXRp b24gPSBjb25mLT5yZXNoYXBlX3Byb2dyZXNzOwogCQlzZXRfYml0KE1EX0NIQU5HRV9ERVZTLCAm bWRkZXYtPmZsYWdzKTsKQEAgLTEyNzMsNyArMTI3NSw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVx dWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmlvKQogCXIxMF9iaW8tPnNl Y3RvcnMgPSBzZWN0b3JzOwogCiAJcjEwX2Jpby0+bWRkZXYgPSBtZGRldjsKLQlyMTBfYmlvLT5z ZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsKKwlyMTBfYmlvLT5zZWN0b3IgPSBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yOwogCXIxMF9iaW8tPnN0YXRlID0gMDsKIAogCS8qIFdlIG1pZ2h0IG5lZWQgdG8g aXNzdWUgbXVsdGlwbGUgcmVhZHMgdG8gZGlmZmVyZW50CkBAIC0xMzAyLDEzICsxMzA0LDEzIEBA IHJlYWRfYWdhaW46CiAJCXNsb3QgPSByMTBfYmlvLT5yZWFkX3Nsb3Q7CiAKIAkJcmVhZF9iaW8g PSBiaW9fY2xvbmVfbWRkZXYoYmlvLCBHRlBfTk9JTywgbWRkZXYpOwotCQliaW9fdHJpbShyZWFk X2JpbywgcjEwX2Jpby0+c2VjdG9yIC0gYmlvLT5iaV9zZWN0b3IsCisJCWJpb190cmltKHJlYWRf YmlvLCByMTBfYmlvLT5zZWN0b3IgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAogCQkJIG1heF9z ZWN0b3JzKTsKIAogCQlyMTBfYmlvLT5kZXZzW3Nsb3RdLmJpbyA9IHJlYWRfYmlvOwogCQlyMTBf YmlvLT5kZXZzW3Nsb3RdLnJkZXYgPSByZGV2OwogCi0JCXJlYWRfYmlvLT5iaV9zZWN0b3IgPSBy MTBfYmlvLT5kZXZzW3Nsb3RdLmFkZHIgKworCQlyZWFkX2Jpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSByMTBfYmlvLT5kZXZzW3Nsb3RdLmFkZHIgKwogCQkJY2hvb3NlX2RhdGFfb2Zmc2V0KHIxMF9i aW8sIHJkZXYpOwogCQlyZWFkX2Jpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJCXJlYWRfYmlv LT5iaV9lbmRfaW8gPSByYWlkMTBfZW5kX3JlYWRfcmVxdWVzdDsKQEAgLTEzMjAsNyArMTMyMiw3 IEBAIHJlYWRfYWdhaW46CiAJCQkgKiBuZWVkIGFub3RoZXIgcjEwX2Jpby4KIAkJCSAqLwogCQkJ c2VjdG9yc19oYW5kbGVkID0gKHIxMF9iaW8tPnNlY3RvcnMgKyBtYXhfc2VjdG9ycwotCQkJCQkg ICAtIGJpby0+Ymlfc2VjdG9yKTsKKwkJCQkJICAgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsK IAkJCXIxMF9iaW8tPnNlY3RvcnMgPSBtYXhfc2VjdG9yczsKIAkJCXNwaW5fbG9ja19pcnEoJmNv bmYtPmRldmljZV9sb2NrKTsKIAkJCWlmIChiaW8tPmJpX3BoeXNfc2VnbWVudHMgPT0gMCkKQEAg LTEzNDEsNyArMTM0Myw4IEBAIHJlYWRfYWdhaW46CiAJCQlyMTBfYmlvLT5zZWN0b3JzID0gYmlv X3NlY3RvcnMoYmlvKSAtIHNlY3RvcnNfaGFuZGxlZDsKIAkJCXIxMF9iaW8tPnN0YXRlID0gMDsK IAkJCXIxMF9iaW8tPm1kZGV2ID0gbWRkZXY7Ci0JCQlyMTBfYmlvLT5zZWN0b3IgPSBiaW8tPmJp X3NlY3RvciArIHNlY3RvcnNfaGFuZGxlZDsKKwkJCXIxMF9iaW8tPnNlY3RvciA9IGJpby0+Ymlf aXRlci5iaV9zZWN0b3IgKworCQkJCXNlY3RvcnNfaGFuZGxlZDsKIAkJCWdvdG8gcmVhZF9hZ2Fp bjsKIAkJfSBlbHNlCiAJCQlnZW5lcmljX21ha2VfcmVxdWVzdChyZWFkX2Jpbyk7CkBAIC0xNDk5 LDcgKzE1MDIsOCBAQCByZXRyeV93cml0ZToKIAkJCWJpby0+YmlfcGh5c19zZWdtZW50cysrOwog CQlzcGluX3VubG9ja19pcnEoJmNvbmYtPmRldmljZV9sb2NrKTsKIAl9Ci0Jc2VjdG9yc19oYW5k bGVkID0gcjEwX2Jpby0+c2VjdG9yICsgbWF4X3NlY3RvcnMgLSBiaW8tPmJpX3NlY3RvcjsKKwlz ZWN0b3JzX2hhbmRsZWQgPSByMTBfYmlvLT5zZWN0b3IgKyBtYXhfc2VjdG9ycyAtCisJCWJpby0+ YmlfaXRlci5iaV9zZWN0b3I7CiAKIAlhdG9taWNfc2V0KCZyMTBfYmlvLT5yZW1haW5pbmcsIDEp OwogCWJpdG1hcF9zdGFydHdyaXRlKG1kZGV2LT5iaXRtYXAsIHIxMF9iaW8tPnNlY3RvciwgcjEw X2Jpby0+c2VjdG9ycywgMCk7CkBAIC0xNTEwLDExICsxNTE0LDExIEBAIHJldHJ5X3dyaXRlOgog CQlpZiAocjEwX2Jpby0+ZGV2c1tpXS5iaW8pIHsKIAkJCXN0cnVjdCBtZF9yZGV2ICpyZGV2ID0g Y29uZi0+bWlycm9yc1tkXS5yZGV2OwogCQkJbWJpbyA9IGJpb19jbG9uZV9tZGRldihiaW8sIEdG UF9OT0lPLCBtZGRldik7Ci0JCQliaW9fdHJpbShtYmlvLCByMTBfYmlvLT5zZWN0b3IgLSBiaW8t PmJpX3NlY3RvciwKKwkJCWJpb190cmltKG1iaW8sIHIxMF9iaW8tPnNlY3RvciAtIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IsCiAJCQkJIG1heF9zZWN0b3JzKTsKIAkJCXIxMF9iaW8tPmRldnNbaV0u YmlvID0gbWJpbzsKIAotCQkJbWJpby0+Ymlfc2VjdG9yCT0gKHIxMF9iaW8tPmRldnNbaV0uYWRk cisKKwkJCW1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gKHIxMF9iaW8tPmRldnNbaV0uYWRkcisK IAkJCQkJICAgY2hvb3NlX2RhdGFfb2Zmc2V0KHIxMF9iaW8sCiAJCQkJCQkJICAgICAgcmRldikp OwogCQkJbWJpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CkBAIC0xNTUzLDExICsxNTU3LDExIEBA IHJldHJ5X3dyaXRlOgogCQkJCXJkZXYgPSBjb25mLT5taXJyb3JzW2RdLnJkZXY7CiAJCQl9CiAJ CQltYmlvID0gYmlvX2Nsb25lX21kZGV2KGJpbywgR0ZQX05PSU8sIG1kZGV2KTsKLQkJCWJpb190 cmltKG1iaW8sIHIxMF9iaW8tPnNlY3RvciAtIGJpby0+Ymlfc2VjdG9yLAorCQkJYmlvX3RyaW0o bWJpbywgcjEwX2Jpby0+c2VjdG9yIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJCQkgbWF4 X3NlY3RvcnMpOwogCQkJcjEwX2Jpby0+ZGV2c1tpXS5yZXBsX2JpbyA9IG1iaW87CiAKLQkJCW1i aW8tPmJpX3NlY3Rvcgk9IChyMTBfYmlvLT5kZXZzW2ldLmFkZHIgKworCQkJbWJpby0+YmlfaXRl ci5iaV9zZWN0b3IJPSAocjEwX2Jpby0+ZGV2c1tpXS5hZGRyICsKIAkJCQkJICAgY2hvb3NlX2Rh dGFfb2Zmc2V0KAogCQkJCQkJICAgcjEwX2JpbywgcmRldikpOwogCQkJbWJpby0+YmlfYmRldiA9 IHJkZXYtPmJkZXY7CkBAIC0xNTkxLDcgKzE1OTUsNyBAQCByZXRyeV93cml0ZToKIAkJcjEwX2Jp by0+c2VjdG9ycyA9IGJpb19zZWN0b3JzKGJpbykgLSBzZWN0b3JzX2hhbmRsZWQ7CiAKIAkJcjEw X2Jpby0+bWRkZXYgPSBtZGRldjsKLQkJcjEwX2Jpby0+c2VjdG9yID0gYmlvLT5iaV9zZWN0b3Ig KyBzZWN0b3JzX2hhbmRsZWQ7CisJCXIxMF9iaW8tPnNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgKyBzZWN0b3JzX2hhbmRsZWQ7CiAJCXIxMF9iaW8tPnN0YXRlID0gMDsKIAkJZ290byBy ZXRyeV93cml0ZTsKIAl9CkBAIC0yMTIzLDEwICsyMTI3LDEwIEBAIHN0YXRpYyB2b2lkIHN5bmNf cmVxdWVzdF93cml0ZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgcjEwYmlvICpyMTBfYmlv KQogCQliaW9fcmVzZXQodGJpbyk7CiAKIAkJdGJpby0+YmlfdmNudCA9IHZjbnQ7Ci0JCXRiaW8t PmJpX3NpemUgPSByMTBfYmlvLT5zZWN0b3JzIDw8IDk7CisJCXRiaW8tPmJpX2l0ZXIuYmlfc2l6 ZSA9IHIxMF9iaW8tPnNlY3RvcnMgPDwgOTsKIAkJdGJpby0+YmlfcncgPSBXUklURTsKIAkJdGJp by0+YmlfcHJpdmF0ZSA9IHIxMF9iaW87Ci0JCXRiaW8tPmJpX3NlY3RvciA9IHIxMF9iaW8tPmRl dnNbaV0uYWRkcjsKKwkJdGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSByMTBfYmlvLT5kZXZzW2ld LmFkZHI7CiAKIAkJZm9yIChqPTA7IGogPCB2Y250IDsgaisrKSB7CiAJCQl0YmlvLT5iaV9pb192 ZWNbal0uYnZfb2Zmc2V0ID0gMDsKQEAgLTIxNDMsNyArMjE0Nyw3IEBAIHN0YXRpYyB2b2lkIHN5 bmNfcmVxdWVzdF93cml0ZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgcjEwYmlvICpyMTBf YmlvKQogCQlhdG9taWNfaW5jKCZyMTBfYmlvLT5yZW1haW5pbmcpOwogCQltZF9zeW5jX2FjY3Qo Y29uZi0+bWlycm9yc1tkXS5yZGV2LT5iZGV2LCBiaW9fc2VjdG9ycyh0YmlvKSk7CiAKLQkJdGJp by0+Ymlfc2VjdG9yICs9IGNvbmYtPm1pcnJvcnNbZF0ucmRldi0+ZGF0YV9vZmZzZXQ7CisJCXRi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yICs9IGNvbmYtPm1pcnJvcnNbZF0ucmRldi0+ZGF0YV9vZmZz ZXQ7CiAJCXRiaW8tPmJpX2JkZXYgPSBjb25mLT5taXJyb3JzW2RdLnJkZXYtPmJkZXY7CiAJCWdl bmVyaWNfbWFrZV9yZXF1ZXN0KHRiaW8pOwogCX0KQEAgLTI2MTMsOCArMjYxNyw4IEBAIHN0YXRp YyBpbnQgbmFycm93X3dyaXRlX2Vycm9yKHN0cnVjdCByMTBiaW8gKnIxMF9iaW8sIGludCBpKQog CQkJc2VjdG9ycyA9IHNlY3RfdG9fd3JpdGU7CiAJCS8qIFdyaXRlIGF0ICdzZWN0b3InIGZvciAn c2VjdG9ycycgKi8KIAkJd2JpbyA9IGJpb19jbG9uZV9tZGRldihiaW8sIEdGUF9OT0lPLCBtZGRl dik7Ci0JCWJpb190cmltKHdiaW8sIHNlY3RvciAtIGJpby0+Ymlfc2VjdG9yLCBzZWN0b3JzKTsK LQkJd2Jpby0+Ymlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbaV0uYWRkcisKKwkJYmlvX3RyaW0o d2Jpbywgc2VjdG9yIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3Rvciwgc2VjdG9ycyk7CisJCXdiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbaV0uYWRkcisKIAkJCQkgICBjaG9v c2VfZGF0YV9vZmZzZXQocjEwX2JpbywgcmRldikgKwogCQkJCSAgIChzZWN0b3IgLSByMTBfYmlv LT5zZWN0b3IpKTsKIAkJd2Jpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CkBAIC0yNjg2LDEwICsy NjkwLDEwIEBAIHJlYWRfbW9yZToKIAkJKHVuc2lnbmVkIGxvbmcgbG9uZylyMTBfYmlvLT5zZWN0 b3IpOwogCWJpbyA9IGJpb19jbG9uZV9tZGRldihyMTBfYmlvLT5tYXN0ZXJfYmlvLAogCQkJICAg ICAgR0ZQX05PSU8sIG1kZGV2KTsKLQliaW9fdHJpbShiaW8sIHIxMF9iaW8tPnNlY3RvciAtIGJp by0+Ymlfc2VjdG9yLCBtYXhfc2VjdG9ycyk7CisJYmlvX3RyaW0oYmlvLCByMTBfYmlvLT5zZWN0 b3IgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBtYXhfc2VjdG9ycyk7CiAJcjEwX2Jpby0+ZGV2 c1tzbG90XS5iaW8gPSBiaW87CiAJcjEwX2Jpby0+ZGV2c1tzbG90XS5yZGV2ID0gcmRldjsKLQli aW8tPmJpX3NlY3RvciA9IHIxMF9iaW8tPmRldnNbc2xvdF0uYWRkcgorCWJpby0+YmlfaXRlci5i aV9zZWN0b3IgPSByMTBfYmlvLT5kZXZzW3Nsb3RdLmFkZHIKIAkJKyBjaG9vc2VfZGF0YV9vZmZz ZXQocjEwX2JpbywgcmRldik7CiAJYmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKIAliaW8tPmJp X3J3ID0gUkVBRCB8IGRvX3N5bmM7CkBAIC0yNzAwLDcgKzI3MDQsNyBAQCByZWFkX21vcmU6CiAJ CXN0cnVjdCBiaW8gKm1iaW8gPSByMTBfYmlvLT5tYXN0ZXJfYmlvOwogCQlpbnQgc2VjdG9yc19o YW5kbGVkID0KIAkJCXIxMF9iaW8tPnNlY3RvciArIG1heF9zZWN0b3JzCi0JCQktIG1iaW8tPmJp X3NlY3RvcjsKKwkJCS0gbWJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCXIxMF9iaW8tPnNlY3Rv cnMgPSBtYXhfc2VjdG9yczsKIAkJc3Bpbl9sb2NrX2lycSgmY29uZi0+ZGV2aWNlX2xvY2spOwog CQlpZiAobWJpby0+YmlfcGh5c19zZWdtZW50cyA9PSAwKQpAQCAtMjcxOCw3ICsyNzIyLDcgQEAg cmVhZF9tb3JlOgogCQlzZXRfYml0KFIxMEJJT19SZWFkRXJyb3IsCiAJCQkmcjEwX2Jpby0+c3Rh dGUpOwogCQlyMTBfYmlvLT5tZGRldiA9IG1kZGV2OwotCQlyMTBfYmlvLT5zZWN0b3IgPSBtYmlv LT5iaV9zZWN0b3IKKwkJcjEwX2Jpby0+c2VjdG9yID0gbWJpby0+YmlfaXRlci5iaV9zZWN0b3IK IAkJCSsgc2VjdG9yc19oYW5kbGVkOwogCiAJCWdvdG8gcmVhZF9tb3JlOwpAQCAtMzE1Niw3ICsz MTYwLDggQEAgc3RhdGljIHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2 LCBzZWN0b3JfdCBzZWN0b3JfbnIsCiAJCQkJYmlvLT5iaV9lbmRfaW8gPSBlbmRfc3luY19yZWFk OwogCQkJCWJpby0+YmlfcncgPSBSRUFEOwogCQkJCWZyb21fYWRkciA9IHIxMF9iaW8tPmRldnNb al0uYWRkcjsKLQkJCQliaW8tPmJpX3NlY3RvciA9IGZyb21fYWRkciArIHJkZXYtPmRhdGFfb2Zm c2V0OworCQkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBmcm9tX2FkZHIgKworCQkJCQlyZGV2 LT5kYXRhX29mZnNldDsKIAkJCQliaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2OwogCQkJCWF0b21p Y19pbmMoJnJkZXYtPm5yX3BlbmRpbmcpOwogCQkJCS8qIGFuZCB3ZSB3cml0ZSB0byAnaScgKGlm IG5vdCBpbl9zeW5jKSAqLwpAQCAtMzE4MCw3ICszMTg1LDcgQEAgc3RhdGljIHNlY3Rvcl90IHN5 bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0b3JfbnIsCiAJCQkJ CWJpby0+YmlfcHJpdmF0ZSA9IHIxMF9iaW87CiAJCQkJCWJpby0+YmlfZW5kX2lvID0gZW5kX3N5 bmNfd3JpdGU7CiAJCQkJCWJpby0+YmlfcncgPSBXUklURTsKLQkJCQkJYmlvLT5iaV9zZWN0b3Ig PSB0b19hZGRyCisJCQkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSB0b19hZGRyCiAJCQkJCQkr IHJkZXYtPmRhdGFfb2Zmc2V0OwogCQkJCQliaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2OwogCQkJ CQlhdG9taWNfaW5jKCZyMTBfYmlvLT5yZW1haW5pbmcpOwpAQCAtMzIwOSw3ICszMjE0LDggQEAg c3RhdGljIHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3Jf dCBzZWN0b3JfbnIsCiAJCQkJYmlvLT5iaV9wcml2YXRlID0gcjEwX2JpbzsKIAkJCQliaW8tPmJp X2VuZF9pbyA9IGVuZF9zeW5jX3dyaXRlOwogCQkJCWJpby0+YmlfcncgPSBXUklURTsKLQkJCQli aW8tPmJpX3NlY3RvciA9IHRvX2FkZHIgKyByZGV2LT5kYXRhX29mZnNldDsKKwkJCQliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gdG9fYWRkciArCisJCQkJCXJkZXYtPmRhdGFfb2Zmc2V0OwogCQkJ CWJpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJCQkJYXRvbWljX2luYygmcjEwX2Jpby0+cmVt YWluaW5nKTsKIAkJCQlicmVhazsKQEAgLTMzMjcsNyArMzMzMyw3IEBAIHN0YXRpYyBzZWN0b3Jf dCBzeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLAog CQkJYmlvLT5iaV9wcml2YXRlID0gcjEwX2JpbzsKIAkJCWJpby0+YmlfZW5kX2lvID0gZW5kX3N5 bmNfcmVhZDsKIAkJCWJpby0+YmlfcncgPSBSRUFEOwotCQkJYmlvLT5iaV9zZWN0b3IgPSBzZWN0 b3IgKworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArCiAJCQkJY29uZi0+bWly cm9yc1tkXS5yZGV2LT5kYXRhX29mZnNldDsKIAkJCWJpby0+YmlfYmRldiA9IGNvbmYtPm1pcnJv cnNbZF0ucmRldi0+YmRldjsKIAkJCWNvdW50Kys7CkBAIC0zMzQ5LDcgKzMzNTUsNyBAQCBzdGF0 aWMgc2VjdG9yX3Qgc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90IHNl Y3Rvcl9uciwKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHIxMF9iaW87CiAJCQliaW8tPmJpX2VuZF9p byA9IGVuZF9zeW5jX3dyaXRlOwogCQkJYmlvLT5iaV9ydyA9IFdSSVRFOwotCQkJYmlvLT5iaV9z ZWN0b3IgPSBzZWN0b3IgKworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArCiAJ CQkJY29uZi0+bWlycm9yc1tkXS5yZXBsYWNlbWVudC0+ZGF0YV9vZmZzZXQ7CiAJCQliaW8tPmJp X2JkZXYgPSBjb25mLT5taXJyb3JzW2RdLnJlcGxhY2VtZW50LT5iZGV2OwogCQkJY291bnQrKzsK QEAgLTMzOTYsNyArMzQwMiw3IEBAIHN0YXRpYyBzZWN0b3JfdCBzeW5jX3JlcXVlc3Qoc3RydWN0 IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLAogCQkJICAgICBiaW8yID0gYmlvMi0+ YmlfbmV4dCkgewogCQkJCS8qIHJlbW92ZSBsYXN0IHBhZ2UgZnJvbSB0aGlzIGJpbyAqLwogCQkJ CWJpbzItPmJpX3ZjbnQtLTsKLQkJCQliaW8yLT5iaV9zaXplIC09IGxlbjsKKwkJCQliaW8yLT5i aV9pdGVyLmJpX3NpemUgLT0gbGVuOwogCQkJCWJpbzItPmJpX2ZsYWdzICY9IH4oMTw8IEJJT19T RUdfVkFMSUQpOwogCQkJfQogCQkJZ290byBiaW9fZnVsbDsKQEAgLTQ0MTIsNyArNDQxOCw3IEBA IHJlYWRfbW9yZToKIAlyZWFkX2JpbyA9IGJpb19hbGxvY19tZGRldihHRlBfS0VSTkVMLCBSRVNZ TkNfUEFHRVMsIG1kZGV2KTsKIAogCXJlYWRfYmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKLQly ZWFkX2Jpby0+Ymlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbcjEwX2Jpby0+cmVhZF9zbG90XS5h ZGRyCisJcmVhZF9iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbcjEwX2Jp by0+cmVhZF9zbG90XS5hZGRyCiAJCQkgICAgICAgKyByZGV2LT5kYXRhX29mZnNldCk7CiAJcmVh ZF9iaW8tPmJpX3ByaXZhdGUgPSByMTBfYmlvOwogCXJlYWRfYmlvLT5iaV9lbmRfaW8gPSBlbmRf c3luY19yZWFkOwpAQCAtNDQyMCw3ICs0NDI2LDcgQEAgcmVhZF9tb3JlOgogCXJlYWRfYmlvLT5i aV9mbGFncyAmPSB+KEJJT19QT09MX01BU0sgLSAxKTsKIAlyZWFkX2Jpby0+YmlfZmxhZ3MgfD0g MSA8PCBCSU9fVVBUT0RBVEU7CiAJcmVhZF9iaW8tPmJpX3ZjbnQgPSAwOwotCXJlYWRfYmlvLT5i aV9zaXplID0gMDsKKwlyZWFkX2Jpby0+YmlfaXRlci5iaV9zaXplID0gMDsKIAlyMTBfYmlvLT5t YXN0ZXJfYmlvID0gcmVhZF9iaW87CiAJcjEwX2Jpby0+cmVhZF9zbG90ID0gcjEwX2Jpby0+ZGV2 c1tyMTBfYmlvLT5yZWFkX3Nsb3RdLmRldm51bTsKIApAQCAtNDQ0Niw3ICs0NDUyLDggQEAgcmVh ZF9tb3JlOgogCiAJCWJpb19yZXNldChiKTsKIAkJYi0+YmlfYmRldiA9IHJkZXYyLT5iZGV2Owot CQliLT5iaV9zZWN0b3IgPSByMTBfYmlvLT5kZXZzW3MvMl0uYWRkciArIHJkZXYyLT5uZXdfZGF0 YV9vZmZzZXQ7CisJCWItPmJpX2l0ZXIuYmlfc2VjdG9yID0gcjEwX2Jpby0+ZGV2c1tzLzJdLmFk ZHIgKworCQkJcmRldjItPm5ld19kYXRhX29mZnNldDsKIAkJYi0+YmlfcHJpdmF0ZSA9IHIxMF9i aW87CiAJCWItPmJpX2VuZF9pbyA9IGVuZF9yZXNoYXBlX3dyaXRlOwogCQliLT5iaV9ydyA9IFdS SVRFOwpAQCAtNDQ3Myw3ICs0NDgwLDcgQEAgcmVhZF9tb3JlOgogCQkJICAgICBiaW8yID0gYmlv Mi0+YmlfbmV4dCkgewogCQkJCS8qIFJlbW92ZSBsYXN0IHBhZ2UgZnJvbSB0aGlzIGJpbyAqLwog CQkJCWJpbzItPmJpX3ZjbnQtLTsKLQkJCQliaW8yLT5iaV9zaXplIC09IGxlbjsKKwkJCQliaW8y LT5iaV9pdGVyLmJpX3NpemUgLT0gbGVuOwogCQkJCWJpbzItPmJpX2ZsYWdzICY9IH4oMTw8QklP X1NFR19WQUxJRCk7CiAJCQl9CiAJCQlnb3RvIGJpb19mdWxsOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9yYWlkNS5jIGIvZHJpdmVycy9tZC9yYWlkNS5jCmluZGV4IDc4ZWE0NDMuLjNiMTBhMDIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDUuYworKysgYi9kcml2ZXJzL21kL3JhaWQ1LmMK QEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaGxpc3RfaGVhZCAqc3RyaXBl X2hhc2goc3RydWN0IHI1Y29uZiAqY29uZiwgc2VjdG9yX3Qgc2VjdCkKIHN0YXRpYyBpbmxpbmUg c3RydWN0IGJpbyAqcjVfbmV4dF9iaW8oc3RydWN0IGJpbyAqYmlvLCBzZWN0b3JfdCBzZWN0b3Ip CiB7CiAJaW50IHNlY3RvcnMgPSBiaW9fc2VjdG9ycyhiaW8pOwotCWlmIChiaW8tPmJpX3NlY3Rv ciArIHNlY3RvcnMgPCBzZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykKKwlpZiAoYmlvLT5iaV9pdGVy LmJpX3NlY3RvciArIHNlY3RvcnMgPCBzZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykKIAkJcmV0dXJu IGJpby0+YmlfbmV4dDsKIAllbHNlCiAJCXJldHVybiBOVUxMOwpAQCAtMTgzLDcgKzE4Myw3IEBA IHN0YXRpYyB2b2lkIHJldHVybl9pbyhzdHJ1Y3QgYmlvICpyZXR1cm5fYmkpCiAKIAkJcmV0dXJu X2JpID0gYmktPmJpX25leHQ7CiAJCWJpLT5iaV9uZXh0ID0gTlVMTDsKLQkJYmktPmJpX3NpemUg PSAwOworCQliaS0+YmlfaXRlci5iaV9zaXplID0gMDsKIAkJdHJhY2VfYmxvY2tfYmlvX2NvbXBs ZXRlKGJkZXZfZ2V0X3F1ZXVlKGJpLT5iaV9iZGV2KSwKIAkJCQkJIGJpLCAwKTsKIAkJYmlvX2Vu ZGlvKGJpLCAwKTsKQEAgLTY1NiwxMCArNjU2LDEwIEBAIHN0YXRpYyB2b2lkIG9wc19ydW5faW8o c3RydWN0IHN0cmlwZV9oZWFkICpzaCwgc3RydWN0IHN0cmlwZV9oZWFkX3N0YXRlICpzKQogCQkJ CWJpLT5iaV9ydywgaSk7CiAJCQlhdG9taWNfaW5jKCZzaC0+Y291bnQpOwogCQkJaWYgKHVzZV9u ZXdfb2Zmc2V0KGNvbmYsIHNoKSkKLQkJCQliaS0+Ymlfc2VjdG9yID0gKHNoLT5zZWN0b3IKKwkJ CQliaS0+YmlfaXRlci5iaV9zZWN0b3IgPSAoc2gtPnNlY3RvcgogCQkJCQkJICsgcmRldi0+bmV3 X2RhdGFfb2Zmc2V0KTsKIAkJCWVsc2UKLQkJCQliaS0+Ymlfc2VjdG9yID0gKHNoLT5zZWN0b3IK KwkJCQliaS0+YmlfaXRlci5iaV9zZWN0b3IgPSAoc2gtPnNlY3RvcgogCQkJCQkJICsgcmRldi0+ ZGF0YV9vZmZzZXQpOwogCQkJaWYgKHRlc3RfYml0KFI1X1JlYWROb01lcmdlLCAmc2gtPmRldltp XS5mbGFncykpCiAJCQkJYmktPmJpX3J3IHw9IFJFUV9GTFVTSDsKQEAgLTY2Nyw3ICs2NjcsNyBA QCBzdGF0aWMgdm9pZCBvcHNfcnVuX2lvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBz dHJpcGVfaGVhZF9zdGF0ZSAqcykKIAkJCWJpLT5iaV92Y250ID0gMTsKIAkJCWJpLT5iaV9pb192 ZWNbMF0uYnZfbGVuID0gU1RSSVBFX1NJWkU7CiAJCQliaS0+YmlfaW9fdmVjWzBdLmJ2X29mZnNl dCA9IDA7Ci0JCQliaS0+Ymlfc2l6ZSA9IFNUUklQRV9TSVpFOworCQkJYmktPmJpX2l0ZXIuYmlf c2l6ZSA9IFNUUklQRV9TSVpFOwogCQkJaWYgKHJyZGV2KQogCQkJCXNldF9iaXQoUjVfRE9VQkxF X0xPQ0tFRCwgJnNoLT5kZXZbaV0uZmxhZ3MpOwogCkBAIC02OTcsMTUgKzY5NywxNSBAQCBzdGF0 aWMgdm9pZCBvcHNfcnVuX2lvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBzdHJpcGVf aGVhZF9zdGF0ZSAqcykKIAkJCQlyYmktPmJpX3J3LCBpKTsKIAkJCWF0b21pY19pbmMoJnNoLT5j b3VudCk7CiAJCQlpZiAodXNlX25ld19vZmZzZXQoY29uZiwgc2gpKQotCQkJCXJiaS0+Ymlfc2Vj dG9yID0gKHNoLT5zZWN0b3IKKwkJCQlyYmktPmJpX2l0ZXIuYmlfc2VjdG9yID0gKHNoLT5zZWN0 b3IKIAkJCQkJCSAgKyBycmRldi0+bmV3X2RhdGFfb2Zmc2V0KTsKIAkJCWVsc2UKLQkJCQlyYmkt PmJpX3NlY3RvciA9IChzaC0+c2VjdG9yCisJCQkJcmJpLT5iaV9pdGVyLmJpX3NlY3RvciA9IChz aC0+c2VjdG9yCiAJCQkJCQkgICsgcnJkZXYtPmRhdGFfb2Zmc2V0KTsKIAkJCXJiaS0+YmlfdmNu dCA9IDE7CiAJCQlyYmktPmJpX2lvX3ZlY1swXS5idl9sZW4gPSBTVFJJUEVfU0laRTsKIAkJCXJi aS0+YmlfaW9fdmVjWzBdLmJ2X29mZnNldCA9IDA7Ci0JCQlyYmktPmJpX3NpemUgPSBTVFJJUEVf U0laRTsKKwkJCXJiaS0+YmlfaXRlci5iaV9zaXplID0gU1RSSVBFX1NJWkU7CiAJCQlpZiAoY29u Zi0+bWRkZXYtPmdlbmRpc2spCiAJCQkJdHJhY2VfYmxvY2tfYmlvX3JlbWFwKGJkZXZfZ2V0X3F1 ZXVlKHJiaS0+YmlfYmRldiksCiAJCQkJCQkgICAgICByYmksIGRpc2tfZGV2dChjb25mLT5tZGRl di0+Z2VuZGlzayksCkBAIC03MzQsMTAgKzczNCwxMCBAQCBhc3luY19jb3B5X2RhdGEoaW50IGZy b21iaW8sIHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHBhZ2UgKnBhZ2UsCiAJc3RydWN0IGFzeW5j X3N1Ym1pdF9jdGwgc3VibWl0OwogCWVudW0gYXN5bmNfdHhfZmxhZ3MgZmxhZ3MgPSAwOwogCi0J aWYgKGJpby0+Ymlfc2VjdG9yID49IHNlY3RvcikKLQkJcGFnZV9vZmZzZXQgPSAoc2lnbmVkKShi aW8tPmJpX3NlY3RvciAtIHNlY3RvcikgKiA1MTI7CisJaWYgKGJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPj0gc2VjdG9yKQorCQlwYWdlX29mZnNldCA9IChzaWduZWQpKGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgLSBzZWN0b3IpICogNTEyOwogCWVsc2UKLQkJcGFnZV9vZmZzZXQgPSAoc2lnbmVkKShz ZWN0b3IgLSBiaW8tPmJpX3NlY3RvcikgKiAtNTEyOworCQlwYWdlX29mZnNldCA9IChzaWduZWQp KHNlY3RvciAtIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpICogLTUxMjsKIAogCWlmIChmcm9tYmlv KQogCQlmbGFncyB8PSBBU1lOQ19UWF9GRU5DRTsKQEAgLTgwNCw3ICs4MDQsNyBAQCBzdGF0aWMg dm9pZCBvcHNfY29tcGxldGVfYmlvZmlsbCh2b2lkICpzdHJpcGVfaGVhZF9yZWYpCiAJCQlCVUdf T04oIWRldi0+cmVhZCk7CiAJCQlyYmkgPSBkZXYtPnJlYWQ7CiAJCQlkZXYtPnJlYWQgPSBOVUxM OwotCQkJd2hpbGUgKHJiaSAmJiByYmktPmJpX3NlY3RvciA8CisJCQl3aGlsZSAocmJpICYmIHJi aS0+YmlfaXRlci5iaV9zZWN0b3IgPAogCQkJCWRldi0+c2VjdG9yICsgU1RSSVBFX1NFQ1RPUlMp IHsKIAkJCQlyYmkyID0gcjVfbmV4dF9iaW8ocmJpLCBkZXYtPnNlY3Rvcik7CiAJCQkJaWYgKCFy YWlkNV9kZWNfYmlfYWN0aXZlX3N0cmlwZXMocmJpKSkgewpAQCAtODQwLDcgKzg0MCw3IEBAIHN0 YXRpYyB2b2lkIG9wc19ydW5fYmlvZmlsbChzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoKQogCQkJZGV2 LT5yZWFkID0gcmJpID0gZGV2LT50b3JlYWQ7CiAJCQlkZXYtPnRvcmVhZCA9IE5VTEw7CiAJCQlz cGluX3VubG9ja19pcnEoJnNoLT5zdHJpcGVfbG9jayk7Ci0JCQl3aGlsZSAocmJpICYmIHJiaS0+ Ymlfc2VjdG9yIDwKKwkJCXdoaWxlIChyYmkgJiYgcmJpLT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJ CQkJZGV2LT5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJCXR4ID0gYXN5bmNfY29weV9k YXRhKDAsIHJiaSwgZGV2LT5wYWdlLAogCQkJCQlkZXYtPnNlY3RvciwgdHgpOwpAQCAtMTE4Miw3 ICsxMTgyLDcgQEAgb3BzX3J1bl9iaW9kcmFpbihzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1 Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKnR4KQogCQkJd2JpID0gZGV2LT53cml0dGVuID0g Y2hvc2VuOwogCQkJc3Bpbl91bmxvY2tfaXJxKCZzaC0+c3RyaXBlX2xvY2spOwogCi0JCQl3aGls ZSAod2JpICYmIHdiaS0+Ymlfc2VjdG9yIDwKKwkJCXdoaWxlICh3YmkgJiYgd2JpLT5iaV9pdGVy LmJpX3NlY3RvciA8CiAJCQkJZGV2LT5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJCWlm ICh3YmktPmJpX3J3ICYgUkVRX0ZVQSkKIAkJCQkJc2V0X2JpdChSNV9XYW50RlVBLCAmZGV2LT5m bGFncyk7CkBAIC0yMzg0LDcgKzIzODQsNyBAQCBzdGF0aWMgaW50IGFkZF9zdHJpcGVfYmlvKHN0 cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBiaW8gKmJpLCBpbnQgZGRfaWR4LCBpbgogCWlu dCBmaXJzdHdyaXRlPTA7CiAKIAlwcl9kZWJ1ZygiYWRkaW5nIGJpIGIjJWxsdSB0byBzdHJpcGUg cyMlbGx1XG4iLAotCQkodW5zaWduZWQgbG9uZyBsb25nKWJpLT5iaV9zZWN0b3IsCisJCSh1bnNp Z25lZCBsb25nIGxvbmcpYmktPmJpX2l0ZXIuYmlfc2VjdG9yLAogCQkodW5zaWduZWQgbG9uZyBs b25nKXNoLT5zZWN0b3IpOwogCiAJLyoKQEAgLTI0MDIsMTIgKzI0MDIsMTIgQEAgc3RhdGljIGlu dCBhZGRfc3RyaXBlX2JpbyhzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1Y3QgYmlvICpiaSwg aW50IGRkX2lkeCwgaW4KIAkJCWZpcnN0d3JpdGUgPSAxOwogCX0gZWxzZQogCQliaXAgPSAmc2gt PmRldltkZF9pZHhdLnRvcmVhZDsKLQl3aGlsZSAoKmJpcCAmJiAoKmJpcCktPmJpX3NlY3RvciA8 IGJpLT5iaV9zZWN0b3IpIHsKLQkJaWYgKGJpb19lbmRfc2VjdG9yKCpiaXApID4gYmktPmJpX3Nl Y3RvcikKKwl3aGlsZSAoKmJpcCAmJiAoKmJpcCktPmJpX2l0ZXIuYmlfc2VjdG9yIDwgYmktPmJp X2l0ZXIuYmlfc2VjdG9yKSB7CisJCWlmIChiaW9fZW5kX3NlY3RvcigqYmlwKSA+IGJpLT5iaV9p dGVyLmJpX3NlY3RvcikKIAkJCWdvdG8gb3ZlcmxhcDsKIAkJYmlwID0gJiAoKmJpcCktPmJpX25l eHQ7CiAJfQotCWlmICgqYmlwICYmICgqYmlwKS0+Ymlfc2VjdG9yIDwgYmlvX2VuZF9zZWN0b3Io YmkpKQorCWlmICgqYmlwICYmICgqYmlwKS0+YmlfaXRlci5iaV9zZWN0b3IgPCBiaW9fZW5kX3Nl Y3RvcihiaSkpCiAJCWdvdG8gb3ZlcmxhcDsKIAogCUJVR19PTigqYmlwICYmIGJpLT5iaV9uZXh0 ICYmICgqYmlwKSAhPSBiaS0+YmlfbmV4dCk7CkBAIC0yNDIxLDcgKzI0MjEsNyBAQCBzdGF0aWMg aW50IGFkZF9zdHJpcGVfYmlvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBiaW8gKmJp LCBpbnQgZGRfaWR4LCBpbgogCQlzZWN0b3JfdCBzZWN0b3IgPSBzaC0+ZGV2W2RkX2lkeF0uc2Vj dG9yOwogCQlmb3IgKGJpPXNoLT5kZXZbZGRfaWR4XS50b3dyaXRlOwogCQkgICAgIHNlY3RvciA8 IHNoLT5kZXZbZGRfaWR4XS5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUyAmJgotCQkJICAgICBiaSAm JiBiaS0+Ymlfc2VjdG9yIDw9IHNlY3RvcjsKKwkJCSAgICAgYmkgJiYgYmktPmJpX2l0ZXIuYmlf c2VjdG9yIDw9IHNlY3RvcjsKIAkJICAgICBiaSA9IHI1X25leHRfYmlvKGJpLCBzaC0+ZGV2W2Rk X2lkeF0uc2VjdG9yKSkgewogCQkJaWYgKGJpb19lbmRfc2VjdG9yKGJpKSA+PSBzZWN0b3IpCiAJ CQkJc2VjdG9yID0gYmlvX2VuZF9zZWN0b3IoYmkpOwpAQCAtMjQzMSw3ICsyNDMxLDcgQEAgc3Rh dGljIGludCBhZGRfc3RyaXBlX2JpbyhzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1Y3QgYmlv ICpiaSwgaW50IGRkX2lkeCwgaW4KIAl9CiAKIAlwcl9kZWJ1ZygiYWRkZWQgYmkgYiMlbGx1IHRv IHN0cmlwZSBzIyVsbHUsIGRpc2sgJWQuXG4iLAotCQkodW5zaWduZWQgbG9uZyBsb25nKSgqYmlw KS0+Ymlfc2VjdG9yLAorCQkodW5zaWduZWQgbG9uZyBsb25nKSgqYmlwKS0+YmlfaXRlci5iaV9z ZWN0b3IsCiAJCSh1bnNpZ25lZCBsb25nIGxvbmcpc2gtPnNlY3RvciwgZGRfaWR4KTsKIAlzcGlu X3VubG9ja19pcnEoJnNoLT5zdHJpcGVfbG9jayk7CiAKQEAgLTI1MDYsNyArMjUwNiw3IEBAIGhh bmRsZV9mYWlsZWRfc3RyaXBlKHN0cnVjdCByNWNvbmYgKmNvbmYsIHN0cnVjdCBzdHJpcGVfaGVh ZCAqc2gsCiAJCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUjVfT3ZlcmxhcCwgJnNoLT5kZXZbaV0u ZmxhZ3MpKQogCQkJd2FrZV91cCgmY29uZi0+d2FpdF9mb3Jfb3ZlcmxhcCk7CiAKLQkJd2hpbGUg KGJpICYmIGJpLT5iaV9zZWN0b3IgPAorCQl3aGlsZSAoYmkgJiYgYmktPmJpX2l0ZXIuYmlfc2Vj dG9yIDwKIAkJCXNoLT5kZXZbaV0uc2VjdG9yICsgU1RSSVBFX1NFQ1RPUlMpIHsKIAkJCXN0cnVj dCBiaW8gKm5leHRiaSA9IHI1X25leHRfYmlvKGJpLCBzaC0+ZGV2W2ldLnNlY3Rvcik7CiAJCQlj bGVhcl9iaXQoQklPX1VQVE9EQVRFLCAmYmktPmJpX2ZsYWdzKTsKQEAgLTI1MjUsNyArMjUyNSw3 IEBAIGhhbmRsZV9mYWlsZWRfc3RyaXBlKHN0cnVjdCByNWNvbmYgKmNvbmYsIHN0cnVjdCBzdHJp cGVfaGVhZCAqc2gsCiAJCWJpID0gc2gtPmRldltpXS53cml0dGVuOwogCQlzaC0+ZGV2W2ldLndy aXR0ZW4gPSBOVUxMOwogCQlpZiAoYmkpIGJpdG1hcF9lbmQgPSAxOwotCQl3aGlsZSAoYmkgJiYg YmktPmJpX3NlY3RvciA8CisJCXdoaWxlIChiaSAmJiBiaS0+YmlfaXRlci5iaV9zZWN0b3IgPAog CQkgICAgICAgc2gtPmRldltpXS5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJc3RydWN0 IGJpbyAqYmkyID0gcjVfbmV4dF9iaW8oYmksIHNoLT5kZXZbaV0uc2VjdG9yKTsKIAkJCWNsZWFy X2JpdChCSU9fVVBUT0RBVEUsICZiaS0+YmlfZmxhZ3MpOwpAQCAtMjU0OSw3ICsyNTQ5LDcgQEAg aGFuZGxlX2ZhaWxlZF9zdHJpcGUoc3RydWN0IHI1Y29uZiAqY29uZiwgc3RydWN0IHN0cmlwZV9o ZWFkICpzaCwKIAkJCXNwaW5fdW5sb2NrX2lycSgmc2gtPnN0cmlwZV9sb2NrKTsKIAkJCWlmICh0 ZXN0X2FuZF9jbGVhcl9iaXQoUjVfT3ZlcmxhcCwgJnNoLT5kZXZbaV0uZmxhZ3MpKQogCQkJCXdh a2VfdXAoJmNvbmYtPndhaXRfZm9yX292ZXJsYXApOwotCQkJd2hpbGUgKGJpICYmIGJpLT5iaV9z ZWN0b3IgPAorCQkJd2hpbGUgKGJpICYmIGJpLT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJCQkgICAg ICAgc2gtPmRldltpXS5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJCXN0cnVjdCBiaW8g Km5leHRiaSA9CiAJCQkJCXI1X25leHRfYmlvKGJpLCBzaC0+ZGV2W2ldLnNlY3Rvcik7CkBAIC0y NzczLDcgKzI3NzMsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfc3RyaXBlX2NsZWFuX2V2ZW50KHN0 cnVjdCByNWNvbmYgKmNvbmYsCiAJCQkJCWNsZWFyX2JpdChSNV9VUFRPREFURSwgJmRldi0+Zmxh Z3MpOwogCQkJCXdiaSA9IGRldi0+d3JpdHRlbjsKIAkJCQlkZXYtPndyaXR0ZW4gPSBOVUxMOwot CQkJCXdoaWxlICh3YmkgJiYgd2JpLT5iaV9zZWN0b3IgPAorCQkJCXdoaWxlICh3YmkgJiYgd2Jp LT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJCQkJCWRldi0+c2VjdG9yICsgU1RSSVBFX1NFQ1RPUlMp IHsKIAkJCQkJd2JpMiA9IHI1X25leHRfYmlvKHdiaSwgZGV2LT5zZWN0b3IpOwogCQkJCQlpZiAo IXJhaWQ1X2RlY19iaV9hY3RpdmVfc3RyaXBlcyh3YmkpKSB7CkBAIC0zODUzLDcgKzM4NTMsNyBA QCBzdGF0aWMgaW50IHJhaWQ1X21lcmdlYWJsZV9idmVjKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LAogCiBzdGF0aWMgaW50IGluX2NodW5rX2JvdW5kYXJ5KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0 cnVjdCBiaW8gKmJpbykKIHsKLQlzZWN0b3JfdCBzZWN0b3IgPSBiaW8tPmJpX3NlY3RvciArIGdl dF9zdGFydF9zZWN0KGJpby0+YmlfYmRldik7CisJc2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5iaV9p dGVyLmJpX3NlY3RvciArIGdldF9zdGFydF9zZWN0KGJpby0+YmlfYmRldik7CiAJdW5zaWduZWQg aW50IGNodW5rX3NlY3RvcnMgPSBtZGRldi0+Y2h1bmtfc2VjdG9yczsKIAl1bnNpZ25lZCBpbnQg YmlvX3NlY3RvcnMgPSBiaW9fc2VjdG9ycyhiaW8pOwogCkBAIC0zOTkwLDkgKzM5OTAsOSBAQCBz dGF0aWMgaW50IGNodW5rX2FsaWduZWRfcmVhZChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3Qg YmlvICogcmFpZF9iaW8pCiAJLyoKIAkgKgljb21wdXRlIHBvc2l0aW9uCiAJICovCi0JYWxpZ25f YmktPmJpX3NlY3RvciA9ICByYWlkNV9jb21wdXRlX3NlY3Rvcihjb25mLCByYWlkX2Jpby0+Ymlf c2VjdG9yLAotCQkJCQkJICAgIDAsCi0JCQkJCQkgICAgJmRkX2lkeCwgTlVMTCk7CisJYWxpZ25f YmktPmJpX2l0ZXIuYmlfc2VjdG9yID0KKwkJcmFpZDVfY29tcHV0ZV9zZWN0b3IoY29uZiwgcmFp ZF9iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJCSAgICAgMCwgJmRkX2lkeCwgTlVMTCk7CiAK IAllbmRfc2VjdG9yID0gYmlvX2VuZF9zZWN0b3IoYWxpZ25fYmkpOwogCXJjdV9yZWFkX2xvY2so KTsKQEAgLTQwMTcsNyArNDAxNyw4IEBAIHN0YXRpYyBpbnQgY2h1bmtfYWxpZ25lZF9yZWFkKHN0 cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKiByYWlkX2JpbykKIAkJYWxpZ25fYmktPmJp X2ZsYWdzICY9IH4oMSA8PCBCSU9fU0VHX1ZBTElEKTsKIAogCQlpZiAoIWJpb19maXRzX3JkZXYo YWxpZ25fYmkpIHx8Ci0JCSAgICBpc19iYWRibG9jayhyZGV2LCBhbGlnbl9iaS0+Ymlfc2VjdG9y LCBiaW9fc2VjdG9ycyhhbGlnbl9iaSksCisJCSAgICBpc19iYWRibG9jayhyZGV2LCBhbGlnbl9i aS0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJYmlvX3NlY3RvcnMoYWxpZ25fYmkpLAogCQkJCSZm aXJzdF9iYWQsICZiYWRfc2VjdG9ycykpIHsKIAkJCS8qIHRvbyBiaWcgaW4gc29tZSB3YXksIG9y IGhhcyBhIGtub3duIGJhZCBibG9jayAqLwogCQkJYmlvX3B1dChhbGlnbl9iaSk7CkBAIC00MDI2 LDcgKzQwMjcsNyBAQCBzdGF0aWMgaW50IGNodW5rX2FsaWduZWRfcmVhZChzdHJ1Y3QgbWRkZXYg Km1kZGV2LCBzdHJ1Y3QgYmlvICogcmFpZF9iaW8pCiAJCX0KIAogCQkvKiBObyByZXNoYXBlIGFj dGl2ZSwgc28gd2UgY2FuIHRydXN0IHJkZXYtPmRhdGFfb2Zmc2V0ICovCi0JCWFsaWduX2JpLT5i aV9zZWN0b3IgKz0gcmRldi0+ZGF0YV9vZmZzZXQ7CisJCWFsaWduX2JpLT5iaV9pdGVyLmJpX3Nl Y3RvciArPSByZGV2LT5kYXRhX29mZnNldDsKIAogCQlzcGluX2xvY2tfaXJxKCZjb25mLT5kZXZp Y2VfbG9jayk7CiAJCXdhaXRfZXZlbnRfbG9ja19pcnEoY29uZi0+d2FpdF9mb3Jfc3RyaXBlLApA QCAtNDAzOCw3ICs0MDM5LDcgQEAgc3RhdGljIGludCBjaHVua19hbGlnbmVkX3JlYWQoc3RydWN0 IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIHJhaWRfYmlvKQogCQlpZiAobWRkZXYtPmdlbmRp c2spCiAJCQl0cmFjZV9ibG9ja19iaW9fcmVtYXAoYmRldl9nZXRfcXVldWUoYWxpZ25fYmktPmJp X2JkZXYpLAogCQkJCQkgICAgICBhbGlnbl9iaSwgZGlza19kZXZ0KG1kZGV2LT5nZW5kaXNrKSwK LQkJCQkJICAgICAgcmFpZF9iaW8tPmJpX3NlY3Rvcik7CisJCQkJCSAgICAgIHJhaWRfYmlvLT5i aV9pdGVyLmJpX3NlY3Rvcik7CiAJCWdlbmVyaWNfbWFrZV9yZXF1ZXN0KGFsaWduX2JpKTsKIAkJ cmV0dXJuIDE7CiAJfSBlbHNlIHsKQEAgLTQxNzMsOCArNDE3NCw4IEBAIHN0YXRpYyB2b2lkIG1h a2VfZGlzY2FyZF9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKmJpKQog CQkvKiBTa2lwIGRpc2NhcmQgd2hpbGUgcmVzaGFwZSBpcyBoYXBwZW5pbmcgKi8KIAkJcmV0dXJu OwogCi0JbG9naWNhbF9zZWN0b3IgPSBiaS0+Ymlfc2VjdG9yICYgfigoc2VjdG9yX3QpU1RSSVBF X1NFQ1RPUlMtMSk7Ci0JbGFzdF9zZWN0b3IgPSBiaS0+Ymlfc2VjdG9yICsgKGJpLT5iaV9zaXpl Pj45KTsKKwlsb2dpY2FsX3NlY3RvciA9IGJpLT5iaV9pdGVyLmJpX3NlY3RvciAmIH4oKHNlY3Rv cl90KVNUUklQRV9TRUNUT1JTLTEpOworCWxhc3Rfc2VjdG9yID0gYmktPmJpX2l0ZXIuYmlfc2Vj dG9yICsgKGJpLT5iaV9pdGVyLmJpX3NpemU+PjkpOwogCiAJYmktPmJpX25leHQgPSBOVUxMOwog CWJpLT5iaV9waHlzX3NlZ21lbnRzID0gMTsgLyogb3Zlci1sb2FkZWQgdG8gY291bnQgYWN0aXZl IHN0cmlwZXMgKi8KQEAgLTQyNzgsNyArNDI3OSw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVxdWVz dChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmkpCiAJCXJldHVybjsKIAl9CiAK LQlsb2dpY2FsX3NlY3RvciA9IGJpLT5iaV9zZWN0b3IgJiB+KChzZWN0b3JfdClTVFJJUEVfU0VD VE9SUy0xKTsKKwlsb2dpY2FsX3NlY3RvciA9IGJpLT5iaV9pdGVyLmJpX3NlY3RvciAmIH4oKHNl Y3Rvcl90KVNUUklQRV9TRUNUT1JTLTEpOwogCWxhc3Rfc2VjdG9yID0gYmlvX2VuZF9zZWN0b3Io YmkpOwogCWJpLT5iaV9uZXh0ID0gTlVMTDsKIAliaS0+YmlfcGh5c19zZWdtZW50cyA9IDE7CS8q IG92ZXItbG9hZGVkIHRvIGNvdW50IGFjdGl2ZSBzdHJpcGVzICovCkBAIC00NzQyLDcgKzQ3NDMs OCBAQCBzdGF0aWMgaW50ICByZXRyeV9hbGlnbmVkX3JlYWQoc3RydWN0IHI1Y29uZiAqY29uZiwg c3RydWN0IGJpbyAqcmFpZF9iaW8pCiAJaW50IHJlbWFpbmluZzsKIAlpbnQgaGFuZGxlZCA9IDA7 CiAKLQlsb2dpY2FsX3NlY3RvciA9IHJhaWRfYmlvLT5iaV9zZWN0b3IgJiB+KChzZWN0b3JfdClT VFJJUEVfU0VDVE9SUy0xKTsKKwlsb2dpY2FsX3NlY3RvciA9IHJhaWRfYmlvLT5iaV9pdGVyLmJp X3NlY3RvciAmCisJCX4oKHNlY3Rvcl90KVNUUklQRV9TRUNUT1JTLTEpOwogCXNlY3RvciA9IHJh aWQ1X2NvbXB1dGVfc2VjdG9yKGNvbmYsIGxvZ2ljYWxfc2VjdG9yLAogCQkJCSAgICAgIDAsICZk ZF9pZHgsIE5VTEwpOwogCWxhc3Rfc2VjdG9yID0gYmlvX2VuZF9zZWN0b3IocmFpZF9iaW8pOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Jsb2NrL2Rjc3NibGsuYyBiL2RyaXZlcnMvczM5MC9i bG9jay9kY3NzYmxrLmMKaW5kZXggNmVjYTAxOS4uMTY4MTRhOCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9zMzkwL2Jsb2NrL2Rjc3NibGsuYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2svZGNzc2Jsay5j CkBAIC04MTksNyArODE5LDggQEAgZGNzc2Jsa19tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlkZXZfaW5mbyA9IGJpby0+YmlfYmRldi0+YmRf ZGlzay0+cHJpdmF0ZV9kYXRhOwogCWlmIChkZXZfaW5mbyA9PSBOVUxMKQogCQlnb3RvIGZhaWw7 Ci0JaWYgKChiaW8tPmJpX3NlY3RvciAmIDcpICE9IDAgfHwgKGJpby0+Ymlfc2l6ZSAmIDQwOTUp ICE9IDApCisJaWYgKChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICYgNykgIT0gMCB8fAorCSAgICAo YmlvLT5iaV9pdGVyLmJpX3NpemUgJiA0MDk1KSAhPSAwKQogCQkvKiBSZXF1ZXN0IGlzIG5vdCBw YWdlLWFsaWduZWQuICovCiAJCWdvdG8gZmFpbDsKIAlpZiAoYmlvX2VuZF9zZWN0b3IoYmlvKSA+ IGdldF9jYXBhY2l0eShiaW8tPmJpX2JkZXYtPmJkX2Rpc2spKSB7CkBAIC04NDIsNyArODQzLDcg QEAgZGNzc2Jsa19tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBi aW8gKmJpbykKIAkJfQogCX0KIAotCWluZGV4ID0gKGJpby0+Ymlfc2VjdG9yID4+IDMpOworCWlu ZGV4ID0gKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPj4gMyk7CiAJYmlvX2Zvcl9lYWNoX3NlZ21l bnQoYnZlYywgYmlvLCBpKSB7CiAJCXBhZ2VfYWRkciA9ICh1bnNpZ25lZCBsb25nKQogCQkJcGFn ZV9hZGRyZXNzKGJ2ZWMtPmJ2X3BhZ2UpICsgYnZlYy0+YnZfb2Zmc2V0OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zMzkwL2Jsb2NrL3hwcmFtLmMgYi9kcml2ZXJzL3MzOTAvYmxvY2sveHByYW0uYwpp bmRleCA0NjRkZDI5Li5kZDRlNzNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvYmxvY2sveHBy YW0uYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2sveHByYW0uYwpAQCAtMTkwLDE1ICsxOTAsMTYg QEAgc3RhdGljIHZvaWQgeHByYW1fbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgYmlvICpiaW8pCiAJdW5zaWduZWQgbG9uZyBieXRlczsKIAlpbnQgaTsKIAotCWlm ICgoYmlvLT5iaV9zZWN0b3IgJiA3KSAhPSAwIHx8IChiaW8tPmJpX3NpemUgJiA0MDk1KSAhPSAw KQorCWlmICgoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAmIDcpICE9IDAgfHwKKwkgICAgKGJpby0+ YmlfaXRlci5iaV9zaXplICYgNDA5NSkgIT0gMCkKIAkJLyogUmVxdWVzdCBpcyBub3QgcGFnZS1h bGlnbmVkLiAqLwogCQlnb3RvIGZhaWw7Ci0JaWYgKChiaW8tPmJpX3NpemUgPj4gMTIpID4geGRl di0+c2l6ZSkKKwlpZiAoKGJpby0+YmlfaXRlci5iaV9zaXplID4+IDEyKSA+IHhkZXYtPnNpemUp CiAJCS8qIFJlcXVlc3Qgc2l6ZSBpcyBubyBwYWdlLWFsaWduZWQuICovCiAJCWdvdG8gZmFpbDsK LQlpZiAoKGJpby0+Ymlfc2VjdG9yID4+IDMpID4gMHhmZmZmZmZmZlUgLSB4ZGV2LT5vZmZzZXQp CisJaWYgKChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID4+IDMpID4gMHhmZmZmZmZmZlUgLSB4ZGV2 LT5vZmZzZXQpCiAJCWdvdG8gZmFpbDsKLQlpbmRleCA9IChiaW8tPmJpX3NlY3RvciA+PiAzKSAr IHhkZXYtPm9mZnNldDsKKwlpbmRleCA9IChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID4+IDMpICsg eGRldi0+b2Zmc2V0OwogCWJpb19mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIGJpbywgaSkgewogCQlw YWdlX2FkZHIgPSAodW5zaWduZWQgbG9uZykKIAkJCWttYXAoYnZlYy0+YnZfcGFnZSkgKyBidmVj LT5idl9vZmZzZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvb3NkL29zZF9pbml0aWF0b3Iu YyBiL2RyaXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jCmluZGV4IGFhNjYzNjEuLmJhYzA0 YzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jCisrKyBiL2Ry aXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jCkBAIC03MzEsNyArNzMxLDcgQEAgc3RhdGlj IGludCBfb3NkX3JlcV9saXN0X29iamVjdHMoc3RydWN0IG9zZF9yZXF1ZXN0ICpvciwKIAogCWJp by0+YmlfcncgJj0gflJFUV9XUklURTsKIAlvci0+aW4uYmlvID0gYmlvOwotCW9yLT5pbi50b3Rh bF9ieXRlcyA9IGJpby0+Ymlfc2l6ZTsKKwlvci0+aW4udG90YWxfYnl0ZXMgPSBiaW8tPmJpX2l0 ZXIuYmlfc2l6ZTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5n L3pyYW0venJhbV9kcnYuYyBiL2RyaXZlcnMvc3RhZ2luZy96cmFtL3pyYW1fZHJ2LmMKaW5kZXgg ZTc3ZmI2ZS4uMzRlZTg3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3pyYW0venJhbV9k cnYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvenJhbS96cmFtX2Rydi5jCkBAIC0xNzEsMTMgKzE3 MSwxNCBAQCBzdGF0aWMgaW5saW5lIGludCB2YWxpZF9pb19yZXF1ZXN0KHN0cnVjdCB6cmFtICp6 cmFtLCBzdHJ1Y3QgYmlvICpiaW8pCiAJdTY0IHN0YXJ0LCBlbmQsIGJvdW5kOwogCQogCS8qIHVu YWxpZ25lZCByZXF1ZXN0ICovCi0JaWYgKHVubGlrZWx5KGJpby0+Ymlfc2VjdG9yICYgKFpSQU1f U0VDVE9SX1BFUl9MT0dJQ0FMX0JMT0NLIC0gMSkpKQorCWlmICh1bmxpa2VseShiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yICYKKwkJICAgICAoWlJBTV9TRUNUT1JfUEVSX0xPR0lDQUxfQkxPQ0sgLSAx KSkpCiAJCXJldHVybiAwOwotCWlmICh1bmxpa2VseShiaW8tPmJpX3NpemUgJiAoWlJBTV9MT0dJ Q0FMX0JMT0NLX1NJWkUgLSAxKSkpCisJaWYgKHVubGlrZWx5KGJpby0+YmlfaXRlci5iaV9zaXpl ICYgKFpSQU1fTE9HSUNBTF9CTE9DS19TSVpFIC0gMSkpKQogCQlyZXR1cm4gMDsKIAotCXN0YXJ0 ID0gYmlvLT5iaV9zZWN0b3I7Ci0JZW5kID0gc3RhcnQgKyAoYmlvLT5iaV9zaXplID4+IFNFQ1RP Ul9TSElGVCk7CisJc3RhcnQgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOworCWVuZCA9IHN0YXJ0 ICsgKGJpby0+YmlfaXRlci5iaV9zaXplID4+IFNFQ1RPUl9TSElGVCk7CiAJYm91bmQgPSB6cmFt LT5kaXNrc2l6ZSA+PiBTRUNUT1JfU0hJRlQ7CiAJLyogb3V0IG9mIHJhbmdlIHJhbmdlICovCiAJ aWYgKHVubGlrZWx5KHN0YXJ0ID49IGJvdW5kIHx8IGVuZCA+IGJvdW5kIHx8IHN0YXJ0ID4gZW5k KSkKQEAgLTY1NCw4ICs2NTUsOSBAQCBzdGF0aWMgdm9pZCBfX3pyYW1fbWFrZV9yZXF1ZXN0KHN0 cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8sIGludCBydykKIAkJYnJlYWs7CiAJfQog Ci0JaW5kZXggPSBiaW8tPmJpX3NlY3RvciA+PiBTRUNUT1JTX1BFUl9QQUdFX1NISUZUOwotCW9m ZnNldCA9IChiaW8tPmJpX3NlY3RvciAmIChTRUNUT1JTX1BFUl9QQUdFIC0gMSkpIDw8IFNFQ1RP Ul9TSElGVDsKKwlpbmRleCA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPj4gU0VDVE9SU19QRVJf UEFHRV9TSElGVDsKKwlvZmZzZXQgPSAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAmCisJCSAgKFNF Q1RPUlNfUEVSX1BBR0UgLSAxKSkgPDwgU0VDVE9SX1NISUZUOwogCiAJYmlvX2Zvcl9lYWNoX3Nl Z21lbnQoYnZlYywgYmlvLCBpKSB7CiAJCWludCBtYXhfdHJhbnNmZXJfc2l6ZSA9IFBBR0VfU0la RSAtIG9mZnNldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2libG9j ay5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfaWJsb2NrLmMKaW5kZXggYWExNjIwYS4u NDAzMmQ2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfaWJsb2NrLmMK KysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfaWJsb2NrLmMKQEAgLTMxOSw3ICszMTks NyBAQCBpYmxvY2tfZ2V0X2JpbyhzdHJ1Y3Qgc2VfY21kICpjbWQsIHNlY3Rvcl90IGxiYSwgdTMy IHNnX251bSkKIAliaW8tPmJpX2JkZXYgPSBpYl9kZXYtPmliZF9iZDsKIAliaW8tPmJpX3ByaXZh dGUgPSBjbWQ7CiAJYmlvLT5iaV9lbmRfaW8gPSAmaWJsb2NrX2Jpb19kb25lOwotCWJpby0+Ymlf c2VjdG9yID0gbGJhOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBsYmE7CiAKIAlyZXR1cm4g YmlvOwogfQpkaWZmIC0tZ2l0IGEvZnMvYmlvLWludGVncml0eS5jIGIvZnMvYmlvLWludGVncml0 eS5jCmluZGV4IDhmYjQyOTEuLmY4MjRjMzAgMTAwNjQ0Ci0tLSBhL2ZzL2Jpby1pbnRlZ3JpdHku YworKysgYi9mcy9iaW8taW50ZWdyaXR5LmMKQEAgLTIxNSw5ICsyMTUsOSBAQCB1bnNpZ25lZCBp bnQgYmlvX2ludGVncml0eV90YWdfc2l6ZShzdHJ1Y3QgYmlvICpiaW8pCiB7CiAJc3RydWN0IGJs a19pbnRlZ3JpdHkgKmJpID0gYmRldl9nZXRfaW50ZWdyaXR5KGJpby0+YmlfYmRldik7CiAKLQlC VUdfT04oYmlvLT5iaV9zaXplID09IDApOworCUJVR19PTihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 PSAwKTsKIAotCXJldHVybiBiaS0+dGFnX3NpemUgKiAoYmlvLT5iaV9zaXplIC8gYmktPnNlY3Rv cl9zaXplKTsKKwlyZXR1cm4gYmktPnRhZ19zaXplICogKGJpby0+YmlfaXRlci5iaV9zaXplIC8g YmktPnNlY3Rvcl9zaXplKTsKIH0KIEVYUE9SVF9TWU1CT0woYmlvX2ludGVncml0eV90YWdfc2l6 ZSk7CiAKQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCBiaW9faW50ZWdyaXR5X2dlbmVy YXRlKHN0cnVjdCBiaW8gKmJpbykKIAlzdHJ1Y3QgYmxrX2ludGVncml0eSAqYmkgPSBiZGV2X2dl dF9pbnRlZ3JpdHkoYmlvLT5iaV9iZGV2KTsKIAlzdHJ1Y3QgYmxrX2ludGVncml0eV9leGNoZyBi aXg7CiAJc3RydWN0IGJpb192ZWMgKmJ2OwotCXNlY3Rvcl90IHNlY3RvciA9IGJpby0+Ymlfc2Vj dG9yOworCXNlY3Rvcl90IHNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJdW5zaWdu ZWQgaW50IGksIHNlY3RvcnMsIHRvdGFsOwogCXZvaWQgKnByb3RfYnVmID0gYmlvLT5iaV9pbnRl Z3JpdHktPmJpcF9idWY7CiAKQEAgLTM4Nyw3ICszODcsNyBAQCBpbnQgYmlvX2ludGVncml0eV9w cmVwKHN0cnVjdCBiaW8gKmJpbykKIAliaXAtPmJpcF9vd25zX2J1ZiA9IDE7CiAJYmlwLT5iaXBf YnVmID0gYnVmOwogCWJpcC0+YmlwX3NpemUgPSBsZW47Ci0JYmlwLT5iaXBfc2VjdG9yID0gYmlv LT5iaV9zZWN0b3I7CisJYmlwLT5iaXBfc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsK IAogCS8qIE1hcCBpdCAqLwogCW9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGJ1Zik7CmRpZmYgLS1n aXQgYS9mcy9iaW8uYyBiL2ZzL2Jpby5jCmluZGV4IDJiNmE4MTYuLjBhODZlMmMgMTAwNjQ0Ci0t LSBhL2ZzL2Jpby5jCisrKyBiL2ZzL2Jpby5jCkBAIC01MzIsMTMgKzUzMiwxMyBAQCB2b2lkIF9f YmlvX2Nsb25lKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJpbyAqYmlvX3NyYykKIAkgKiBtb3N0 IHVzZXJzIHdpbGwgYmUgb3ZlcnJpZGluZyAtPmJpX2JkZXYgd2l0aCBhIG5ldyB0YXJnZXQsCiAJ ICogc28gd2UgZG9uJ3Qgc2V0IG5vciBjYWxjdWxhdGUgbmV3IHBoeXNpY2FsL2h3IHNlZ21lbnQg Y291bnRzIGhlcmUKIAkgKi8KLQliaW8tPmJpX3NlY3RvciA9IGJpb19zcmMtPmJpX3NlY3RvcjsK KwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmlvX3NyYy0+YmlfaXRlci5iaV9zZWN0b3I7CiAJ YmlvLT5iaV9iZGV2ID0gYmlvX3NyYy0+YmlfYmRldjsKIAliaW8tPmJpX2ZsYWdzIHw9IDEgPDwg QklPX0NMT05FRDsKIAliaW8tPmJpX3J3ID0gYmlvX3NyYy0+Ymlfcnc7CiAJYmlvLT5iaV92Y250 ID0gYmlvX3NyYy0+YmlfdmNudDsKLQliaW8tPmJpX3NpemUgPSBiaW9fc3JjLT5iaV9zaXplOwot CWJpby0+YmlfaWR4ID0gYmlvX3NyYy0+YmlfaWR4OworCWJpby0+YmlfaXRlci5iaV9zaXplID0g YmlvX3NyYy0+YmlfaXRlci5iaV9zaXplOworCWJpby0+YmlfaXRlci5iaV9pZHggPSBiaW9fc3Jj LT5iaV9pdGVyLmJpX2lkeDsKIH0KIEVYUE9SVF9TWU1CT0woX19iaW9fY2xvbmUpOwogCkBAIC02 MTIsNyArNjEyLDcgQEAgc3RhdGljIGludCBfX2Jpb19hZGRfcGFnZShzdHJ1Y3QgcmVxdWVzdF9x dWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgcGFnZQogCWlmICh1bmxpa2VseShiaW9f ZmxhZ2dlZChiaW8sIEJJT19DTE9ORUQpKSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAoKChiaW8tPmJp X3NpemUgKyBsZW4pID4+IDkpID4gbWF4X3NlY3RvcnMpCisJaWYgKCgoYmlvLT5iaV9pdGVyLmJp X3NpemUgKyBsZW4pID4+IDkpID4gbWF4X3NlY3RvcnMpCiAJCXJldHVybiAwOwogCiAJLyoKQEAg LTYzNSw4ICs2MzUsOSBAQCBzdGF0aWMgaW50IF9fYmlvX2FkZF9wYWdlKHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBwYWdlCiAJCQkJCSAgIHNpbXVsYXRl IG1lcmdpbmcgdXBkYXRlZCBwcmV2X2J2ZWMKIAkJCQkJICAgYXMgbmV3IGJ2ZWMuICovCiAJCQkJ CS5iaV9iZGV2ID0gYmlvLT5iaV9iZGV2LAotCQkJCQkuYmlfc2VjdG9yID0gYmlvLT5iaV9zZWN0 b3IsCi0JCQkJCS5iaV9zaXplID0gYmlvLT5iaV9zaXplIC0gcHJldl9idl9sZW4sCisJCQkJCS5i aV9zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJCQkuYmlfc2l6ZSA9IGJpby0+ YmlfaXRlci5iaV9zaXplIC0KKwkJCQkJCXByZXZfYnZfbGVuLAogCQkJCQkuYmlfcncgPSBiaW8t PmJpX3J3LAogCQkJCX07CiAKQEAgLTY4NCw4ICs2ODUsOCBAQCBzdGF0aWMgaW50IF9fYmlvX2Fk ZF9wYWdlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBw YWdlCiAJaWYgKHEtPm1lcmdlX2J2ZWNfZm4pIHsKIAkJc3RydWN0IGJ2ZWNfbWVyZ2VfZGF0YSBi dm0gPSB7CiAJCQkuYmlfYmRldiA9IGJpby0+YmlfYmRldiwKLQkJCS5iaV9zZWN0b3IgPSBiaW8t PmJpX3NlY3RvciwKLQkJCS5iaV9zaXplID0gYmlvLT5iaV9zaXplLAorCQkJLmJpX3NlY3RvciA9 IGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkuYmlfc2l6ZSA9IGJpby0+YmlfaXRlci5iaV9z aXplLAogCQkJLmJpX3J3ID0gYmlvLT5iaV9ydywKIAkJfTsKIApAQCAtNzA4LDcgKzcwOSw3IEBA IHN0YXRpYyBpbnQgX19iaW9fYWRkX3BhZ2Uoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVj dCBiaW8gKmJpbywgc3RydWN0IHBhZ2UKIAliaW8tPmJpX3ZjbnQrKzsKIAliaW8tPmJpX3BoeXNf c2VnbWVudHMrKzsKICBkb25lOgotCWJpby0+Ymlfc2l6ZSArPSBsZW47CisJYmlvLT5iaV9pdGVy LmJpX3NpemUgKz0gbGVuOwogCXJldHVybiBsZW47CiB9CiAKQEAgLTgwNywyMiArODA4LDIyIEBA IHZvaWQgYmlvX2FkdmFuY2Uoc3RydWN0IGJpbyAqYmlvLCB1bnNpZ25lZCBieXRlcykKIAlpZiAo YmlvX2ludGVncml0eShiaW8pKQogCQliaW9faW50ZWdyaXR5X2FkdmFuY2UoYmlvLCBieXRlcyk7 CiAKLQliaW8tPmJpX3NlY3RvciArPSBieXRlcyA+PiA5OwotCWJpby0+Ymlfc2l6ZSAtPSBieXRl czsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICs9IGJ5dGVzID4+IDk7CisJYmlvLT5iaV9pdGVy LmJpX3NpemUgLT0gYnl0ZXM7CiAKIAlpZiAoYmlvLT5iaV9ydyAmIEJJT19OT19BRFZBTkNFX0lU RVJfTUFTSykKIAkJcmV0dXJuOwogCiAJd2hpbGUgKGJ5dGVzKSB7Ci0JCWlmICh1bmxpa2VseShi aW8tPmJpX2lkeCA+PSBiaW8tPmJpX3ZjbnQpKSB7CisJCWlmICh1bmxpa2VseShiaW8tPmJpX2l0 ZXIuYmlfaWR4ID49IGJpby0+YmlfdmNudCkpIHsKIAkJCVdBUk5fT05DRSgxLCAiYmlvIGlkeCAl ZCA+PSB2Y250ICVkXG4iLAotCQkJCSAgYmlvLT5iaV9pZHgsIGJpby0+YmlfdmNudCk7CisJCQkJ ICBiaW8tPmJpX2l0ZXIuYmlfaWR4LCBiaW8tPmJpX3ZjbnQpOwogCQkJYnJlYWs7CiAJCX0KIAog CQlpZiAoYnl0ZXMgPj0gYmlvX2lvdmVjKGJpbyktPmJ2X2xlbikgewogCQkJYnl0ZXMgLT0gYmlv X2lvdmVjKGJpbyktPmJ2X2xlbjsKLQkJCWJpby0+YmlfaWR4Kys7CisJCQliaW8tPmJpX2l0ZXIu YmlfaWR4Kys7CiAJCX0gZWxzZSB7CiAJCQliaW9faW92ZWMoYmlvKS0+YnZfbGVuIC09IGJ5dGVz OwogCQkJYmlvX2lvdmVjKGJpbyktPmJ2X29mZnNldCArPSBieXRlczsKQEAgLTE0NzUsNyArMTQ3 Niw3IEBAIHN0cnVjdCBiaW8gKmJpb19tYXBfa2VybihzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwg dm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbiwKIAlpZiAoSVNfRVJSKGJpbykpCiAJCXJldHVy biBiaW87CiAKLQlpZiAoYmlvLT5iaV9zaXplID09IGxlbikKKwlpZiAoYmlvLT5iaV9pdGVyLmJp X3NpemUgPT0gbGVuKQogCQlyZXR1cm4gYmlvOwogCiAJLyoKQEAgLTE3NTMsMTYgKzE3NTQsMTYg QEAgc3RydWN0IGJpb19wYWlyICpiaW9fc3BsaXQoc3RydWN0IGJpbyAqYmksIGludCBmaXJzdF9z ZWN0b3JzKQogCQlyZXR1cm4gYnA7CiAKIAl0cmFjZV9ibG9ja19zcGxpdChiZGV2X2dldF9xdWV1 ZShiaS0+YmlfYmRldiksIGJpLAotCQkJCWJpLT5iaV9zZWN0b3IgKyBmaXJzdF9zZWN0b3JzKTsK KwkJCQliaS0+YmlfaXRlci5iaV9zZWN0b3IgKyBmaXJzdF9zZWN0b3JzKTsKIAogCUJVR19PTihi aW9fc2VnbWVudHMoYmkpID4gMSk7CiAJYXRvbWljX3NldCgmYnAtPmNudCwgMyk7CiAJYnAtPmVy cm9yID0gMDsKIAlicC0+YmlvMSA9ICpiaTsKIAlicC0+YmlvMiA9ICpiaTsKLQlicC0+YmlvMi5i aV9zZWN0b3IgKz0gZmlyc3Rfc2VjdG9yczsKLQlicC0+YmlvMi5iaV9zaXplIC09IGZpcnN0X3Nl Y3RvcnMgPDwgOTsKLQlicC0+YmlvMS5iaV9zaXplID0gZmlyc3Rfc2VjdG9ycyA8PCA5OworCWJw LT5iaW8yLmJpX2l0ZXIuYmlfc2VjdG9yICs9IGZpcnN0X3NlY3RvcnM7CisJYnAtPmJpbzIuYmlf aXRlci5iaV9zaXplIC09IGZpcnN0X3NlY3RvcnMgPDwgOTsKKwlicC0+YmlvMS5iaV9pdGVyLmJp X3NpemUgPSBmaXJzdF9zZWN0b3JzIDw8IDk7CiAKIAlpZiAoYmktPmJpX3ZjbnQgIT0gMCkgewog CQlicC0+YnYxID0gKmJpb19pb3ZlYyhiaSk7CkBAIC0xODExLDIxICsxODEyLDIyIEBAIHZvaWQg YmlvX3RyaW0oc3RydWN0IGJpbyAqYmlvLCBpbnQgb2Zmc2V0LCBpbnQgc2l6ZSkKIAlpbnQgc29m YXIgPSAwOwogCiAJc2l6ZSA8PD0gOTsKLQlpZiAob2Zmc2V0ID09IDAgJiYgc2l6ZSA9PSBiaW8t PmJpX3NpemUpCisJaWYgKG9mZnNldCA9PSAwICYmIHNpemUgPT0gYmlvLT5iaV9pdGVyLmJpX3Np emUpCiAJCXJldHVybjsKIAogCWNsZWFyX2JpdChCSU9fU0VHX1ZBTElELCAmYmlvLT5iaV9mbGFn cyk7CiAKIAliaW9fYWR2YW5jZShiaW8sIG9mZnNldCA8PCA5KTsKIAotCWJpby0+Ymlfc2l6ZSA9 IHNpemU7CisJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBzaXplOwogCiAJLyogYXZvaWQgYW55IGNv bXBsaWNhdGlvbnMgd2l0aCBiaV9pZHggYmVpbmcgbm9uLXplcm8qLwotCWlmIChiaW8tPmJpX2lk eCkgewotCQltZW1tb3ZlKGJpby0+YmlfaW9fdmVjLCBiaW8tPmJpX2lvX3ZlYytiaW8tPmJpX2lk eCwKLQkJCShiaW8tPmJpX3ZjbnQgLSBiaW8tPmJpX2lkeCkgKiBzaXplb2Yoc3RydWN0IGJpb192 ZWMpKTsKLQkJYmlvLT5iaV92Y250IC09IGJpby0+YmlfaWR4OwotCQliaW8tPmJpX2lkeCA9IDA7 CisJaWYgKGJpby0+YmlfaXRlci5iaV9pZHgpIHsKKwkJbWVtbW92ZShiaW8tPmJpX2lvX3ZlYywg YmlvLT5iaV9pb192ZWMrYmlvLT5iaV9pdGVyLmJpX2lkeCwKKwkJCShiaW8tPmJpX3ZjbnQgLSBi aW8tPmJpX2l0ZXIuYmlfaWR4KSAqCisJCQlzaXplb2Yoc3RydWN0IGJpb192ZWMpKTsKKwkJYmlv LT5iaV92Y250IC09IGJpby0+YmlfaXRlci5iaV9pZHg7CisJCWJpby0+YmlfaXRlci5iaV9pZHgg PSAwOwogCX0KIAkvKiBNYWtlIHN1cmUgdmNudCBhbmQgbGFzdCBidiBhcmUgbm90IHRvbyBiaWcg Ki8KIAliaW9fZm9yX2VhY2hfc2VnbWVudChidmVjLCBiaW8sIGkpIHsKQEAgLTE4NjEsNyArMTg2 Myw3IEBAIHNlY3Rvcl90IGJpb19zZWN0b3Jfb2Zmc2V0KHN0cnVjdCBiaW8gKmJpbywgdW5zaWdu ZWQgc2hvcnQgaW5kZXgsCiAJc2VjdG9yX3N6ID0gcXVldWVfbG9naWNhbF9ibG9ja19zaXplKGJp by0+YmlfYmRldi0+YmRfZGlzay0+cXVldWUpOwogCXNlY3RvcnMgPSAwOwogCi0JaWYgKGluZGV4 ID49IGJpby0+YmlfaWR4KQorCWlmIChpbmRleCA+PSBiaW8tPmJpX2l0ZXIuYmlfaWR4KQogCQlp bmRleCA9IGJpby0+YmlfdmNudCAtIDE7CiAKIAliaW9fZm9yX2VhY2hfc2VnbWVudF9hbGwoYnYs IGJpbywgaSkgewpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvY2hlY2staW50ZWdyaXR5LmMgYi9mcy9i dHJmcy9jaGVjay1pbnRlZ3JpdHkuYwppbmRleCAxNDMxYTY5Li4yYWUzNTBjIDEwMDY0NAotLS0g YS9mcy9idHJmcy9jaGVjay1pbnRlZ3JpdHkuYworKysgYi9mcy9idHJmcy9jaGVjay1pbnRlZ3Jp dHkuYwpAQCAtMTcwOCw3ICsxNzA4LDcgQEAgc3RhdGljIGludCBidHJmc2ljX3JlYWRfYmxvY2so c3RydWN0IGJ0cmZzaWNfc3RhdGUgKnN0YXRlLAogCQkJcmV0dXJuIC0xOwogCQl9CiAJCWJpby0+ YmlfYmRldiA9IGJsb2NrX2N0eC0+ZGV2LT5iZGV2OwotCQliaW8tPmJpX3NlY3RvciA9IGRldl9i eXRlbnIgPj4gOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGRldl9ieXRlbnIgPj4gOTsK IAkJYmlvLT5iaV9lbmRfaW8gPSBidHJmc2ljX2NvbXBsZXRlX2Jpb19lbmRfaW87CiAJCWJpby0+ YmlfcHJpdmF0ZSA9ICZjb21wbGV0ZTsKIApAQCAtMzExMiwxNiArMzExMiwxNiBAQCB2b2lkIGJ0 cmZzaWNfc3VibWl0X2JpbyhpbnQgcncsIHN0cnVjdCBiaW8gKmJpbykKIAkJaW50IGJpb19pc19w YXRjaGVkOwogCQljaGFyICoqbWFwcGVkX2RhdGF2OwogCi0JCWRldl9ieXRlbnIgPSA1MTIgKiBi aW8tPmJpX3NlY3RvcjsKKwkJZGV2X2J5dGVuciA9IDUxMiAqIGJpby0+YmlfaXRlci5iaV9zZWN0 b3I7CiAJCWJpb19pc19wYXRjaGVkID0gMDsKIAkJaWYgKGRldl9zdGF0ZS0+c3RhdGUtPnByaW50 X21hc2sgJgogCQkgICAgQlRSRlNJQ19QUklOVF9NQVNLX1NVQk1JVF9CSU9fQkgpCiAJCQlwcmlu dGsoS0VSTl9JTkZPCiAJCQkgICAgICAgInN1Ym1pdF9iaW8ocnc9MHgleCwgYmlfdmNudD0ldSwi CiAJCQkgICAgICAgIiBiaV9zZWN0b3I9JWx1IChieXRlbnIgJWxsdSksIGJpX2JkZXY9JXApXG4i LAotCQkJICAgICAgIHJ3LCBiaW8tPmJpX3ZjbnQsICh1bnNpZ25lZCBsb25nKWJpby0+Ymlfc2Vj dG9yLAotCQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZGV2X2J5dGVuciwKLQkJCSAgICAg ICBiaW8tPmJpX2JkZXYpOworCQkJICAgICAgIHJ3LCBiaW8tPmJpX3ZjbnQsCisJCQkgICAgICAg KHVuc2lnbmVkIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCSAgICAgICAodW5zaWdu ZWQgbG9uZyBsb25nKWRldl9ieXRlbnIsIGJpby0+YmlfYmRldik7CiAKIAkJbWFwcGVkX2RhdGF2 ID0ga21hbGxvYyhzaXplb2YoKm1hcHBlZF9kYXRhdikgKiBiaW8tPmJpX3ZjbnQsCiAJCQkJICAg ICAgIEdGUF9OT0ZTKTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2NvbXByZXNzaW9uLmMgYi9mcy9i dHJmcy9jb21wcmVzc2lvbi5jCmluZGV4IGIxODliZDEuLjJkNzUxNWIgMTAwNjQ0Ci0tLSBhL2Zz L2J0cmZzL2NvbXByZXNzaW9uLmMKKysrIGIvZnMvYnRyZnMvY29tcHJlc3Npb24uYwpAQCAtMTc0 LDcgKzE3NCw4IEBAIHN0YXRpYyB2b2lkIGVuZF9jb21wcmVzc2VkX2Jpb19yZWFkKHN0cnVjdCBi aW8gKmJpbywgaW50IGVycikKIAkJZ290byBvdXQ7CiAKIAlpbm9kZSA9IGNiLT5pbm9kZTsKLQly ZXQgPSBjaGVja19jb21wcmVzc2VkX2NzdW0oaW5vZGUsIGNiLCAodTY0KWJpby0+Ymlfc2VjdG9y IDw8IDkpOworCXJldCA9IGNoZWNrX2NvbXByZXNzZWRfY3N1bShpbm9kZSwgY2IsCisJCQkJICAg ICh1NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PCA5KTsKIAlpZiAocmV0KQogCQlnb3RvIGNz dW1fZmFpbGVkOwogCkBAIC0zNzQsNyArMzc1LDcgQEAgaW50IGJ0cmZzX3N1Ym1pdF9jb21wcmVz c2VkX3dyaXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBzdGFydCwKIAlmb3IgKHBnX2luZGV4 ID0gMDsgcGdfaW5kZXggPCBjYi0+bnJfcGFnZXM7IHBnX2luZGV4KyspIHsKIAkJcGFnZSA9IGNv bXByZXNzZWRfcGFnZXNbcGdfaW5kZXhdOwogCQlwYWdlLT5tYXBwaW5nID0gaW5vZGUtPmlfbWFw cGluZzsKLQkJaWYgKGJpby0+Ymlfc2l6ZSkKKwkJaWYgKGJpby0+YmlfaXRlci5iaV9zaXplKQog CQkJcmV0ID0gaW9fdHJlZS0+b3BzLT5tZXJnZV9iaW9faG9vayhXUklURSwgcGFnZSwgMCwKIAkJ CQkJCQkgICBQQUdFX0NBQ0hFX1NJWkUsCiAJCQkJCQkJICAgYmlvLCAwKTsKQEAgLTUwOCw3ICs1 MDksNyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGFkZF9yYV9iaW9fcGFnZXMoc3RydWN0IGlub2Rl ICppbm9kZSwKIAogCQlpZiAoIWVtIHx8IGxhc3Rfb2Zmc2V0IDwgZW0tPnN0YXJ0IHx8CiAJCSAg ICAobGFzdF9vZmZzZXQgKyBQQUdFX0NBQ0hFX1NJWkUgPiBleHRlbnRfbWFwX2VuZChlbSkpIHx8 Ci0JCSAgICAoZW0tPmJsb2NrX3N0YXJ0ID4+IDkpICE9IGNiLT5vcmlnX2Jpby0+Ymlfc2VjdG9y KSB7CisJCSAgICAoZW0tPmJsb2NrX3N0YXJ0ID4+IDkpICE9IGNiLT5vcmlnX2Jpby0+YmlfaXRl ci5iaV9zZWN0b3IpIHsKIAkJCWZyZWVfZXh0ZW50X21hcChlbSk7CiAJCQl1bmxvY2tfZXh0ZW50 KHRyZWUsIGxhc3Rfb2Zmc2V0LCBlbmQpOwogCQkJdW5sb2NrX3BhZ2UocGFnZSk7CkBAIC01NTQs NyArNTU1LDcgQEAgbmV4dDoKICAqIGluIGl0LiAgV2UgZG9uJ3QgYWN0dWFsbHkgZG8gSU8gb24g dGhvc2UgcGFnZXMgYnV0IGFsbG9jYXRlIG5ldyBvbmVzCiAgKiB0byBob2xkIHRoZSBjb21wcmVz c2VkIHBhZ2VzIG9uIGRpc2suCiAgKgotICogYmlvLT5iaV9zZWN0b3IgcG9pbnRzIHRvIHRoZSBj b21wcmVzc2VkIGV4dGVudCBvbiBkaXNrCisgKiBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIHBvaW50 cyB0byB0aGUgY29tcHJlc3NlZCBleHRlbnQgb24gZGlzawogICogYmlvLT5iaV9pb192ZWMgcG9p bnRzIHRvIGFsbCBvZiB0aGUgaW5vZGUgcGFnZXMKICAqIGJpby0+YmlfdmNudCBpcyBhIGNvdW50 IG9mIHBhZ2VzCiAgKgpAQCAtNTc1LDcgKzU3Niw3IEBAIGludCBidHJmc19zdWJtaXRfY29tcHJl c3NlZF9yZWFkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBiaW8gKmJpbywKIAlzdHJ1Y3Qg cGFnZSAqcGFnZTsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2OwogCXN0cnVjdCBiaW8gKmNv bXBfYmlvOwotCXU2NCBjdXJfZGlza19ieXRlID0gKHU2NCliaW8tPmJpX3NlY3RvciA8PCA5Owor CXU2NCBjdXJfZGlza19ieXRlID0gKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDk7CiAJ dTY0IGVtX2xlbjsKIAl1NjQgZW1fc3RhcnQ7CiAJc3RydWN0IGV4dGVudF9tYXAgKmVtOwpAQCAt NjU3LDcgKzY1OCw3IEBAIGludCBidHJmc19zdWJtaXRfY29tcHJlc3NlZF9yZWFkKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHN0cnVjdCBiaW8gKmJpbywKIAkJcGFnZS0+bWFwcGluZyA9IGlub2RlLT5p X21hcHBpbmc7CiAJCXBhZ2UtPmluZGV4ID0gZW1fc3RhcnQgPj4gUEFHRV9DQUNIRV9TSElGVDsK IAotCQlpZiAoY29tcF9iaW8tPmJpX3NpemUpCisJCWlmIChjb21wX2Jpby0+YmlfaXRlci5iaV9z aXplKQogCQkJcmV0ID0gdHJlZS0+b3BzLT5tZXJnZV9iaW9faG9vayhSRUFELCBwYWdlLCAwLAog CQkJCQkJCVBBR0VfQ0FDSEVfU0laRSwKIAkJCQkJCQljb21wX2JpbywgMCk7CkBAIC02ODUsOCAr Njg2LDggQEAgaW50IGJ0cmZzX3N1Ym1pdF9jb21wcmVzc2VkX3JlYWQoc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGJpbyAqYmlvLAogCQkJCQkJCWNvbXBfYmlvLCBzdW1zKTsKIAkJCQlCVUdf T04ocmV0KTsgLyogLUVOT01FTSAqLwogCQkJfQotCQkJc3VtcyArPSAoY29tcF9iaW8tPmJpX3Np emUgKyByb290LT5zZWN0b3JzaXplIC0gMSkgLwotCQkJCXJvb3QtPnNlY3RvcnNpemU7CisJCQlz dW1zICs9IChjb21wX2Jpby0+YmlfaXRlci5iaV9zaXplICsKKwkJCQkgcm9vdC0+c2VjdG9yc2l6 ZSAtIDEpIC8gcm9vdC0+c2VjdG9yc2l6ZTsKIAogCQkJcmV0ID0gYnRyZnNfbWFwX2Jpbyhyb290 LCBSRUFELCBjb21wX2JpbywKIAkJCQkJICAgIG1pcnJvcl9udW0sIDApOwpkaWZmIC0tZ2l0IGEv ZnMvYnRyZnMvZXh0ZW50X2lvLmMgYi9mcy9idHJmcy9leHRlbnRfaW8uYwppbmRleCA1ODNkOThi Li4yN2FlZDlkIDEwMDY0NAotLS0gYS9mcy9idHJmcy9leHRlbnRfaW8uYworKysgYi9mcy9idHJm cy9leHRlbnRfaW8uYwpAQCAtMjA3Miw3ICsyMDcyLDcgQEAgaW50IHJlcGFpcl9pb19mYWlsdXJl KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCB1NjQgc3RhcnQsCiAJCXJldHVybiAtRUlP OwogCWJpby0+YmlfcHJpdmF0ZSA9ICZjb21wbDsKIAliaW8tPmJpX2VuZF9pbyA9IHJlcGFpcl9p b19mYWlsdXJlX2NhbGxiYWNrOwotCWJpby0+Ymlfc2l6ZSA9IDA7CisJYmlvLT5iaV9pdGVyLmJp X3NpemUgPSAwOwogCW1hcF9sZW5ndGggPSBsZW5ndGg7CiAKIAlyZXQgPSBidHJmc19tYXBfYmxv Y2soZnNfaW5mbywgV1JJVEUsIGxvZ2ljYWwsCkBAIC0yMDgzLDcgKzIwODMsNyBAQCBpbnQgcmVw YWlyX2lvX2ZhaWx1cmUoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sIHU2NCBzdGFydCwK IAl9CiAJQlVHX09OKG1pcnJvcl9udW0gIT0gYmJpby0+bWlycm9yX251bSk7CiAJc2VjdG9yID0g YmJpby0+c3RyaXBlc1ttaXJyb3JfbnVtLTFdLnBoeXNpY2FsID4+IDk7Ci0JYmlvLT5iaV9zZWN0 b3IgPSBzZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAlkZXYgPSBi YmlvLT5zdHJpcGVzW21pcnJvcl9udW0tMV0uZGV2OwogCWtmcmVlKGJiaW8pOwogCWlmICghZGV2 IHx8ICFkZXYtPmJkZXYgfHwgIWRldi0+d3JpdGVhYmxlKSB7CkBAIC0yMzY0LDkgKzIzNjQsOSBA QCBzdGF0aWMgaW50IGJpb19yZWFkcGFnZV9lcnJvcihzdHJ1Y3QgYmlvICpmYWlsZWRfYmlvLCBz dHJ1Y3QgcGFnZSAqcGFnZSwKIAl9CiAJYmlvLT5iaV9wcml2YXRlID0gc3RhdGU7CiAJYmlvLT5i aV9lbmRfaW8gPSBmYWlsZWRfYmlvLT5iaV9lbmRfaW87Ci0JYmlvLT5iaV9zZWN0b3IgPSBmYWls cmVjLT5sb2dpY2FsID4+IDk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGZhaWxyZWMtPmxv Z2ljYWwgPj4gOTsKIAliaW8tPmJpX2JkZXYgPSBCVFJGU19JKGlub2RlKS0+cm9vdC0+ZnNfaW5m by0+ZnNfZGV2aWNlcy0+bGF0ZXN0X2JkZXY7Ci0JYmlvLT5iaV9zaXplID0gMDsKKwliaW8tPmJp X2l0ZXIuYmlfc2l6ZSA9IDA7CiAKIAliaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBmYWlscmVjLT5s ZW4sIHN0YXJ0IC0gcGFnZV9vZmZzZXQocGFnZSkpOwogCkBAIC0yNDgzLDcgKzI0ODMsNyBAQCBz dGF0aWMgdm9pZCBlbmRfYmlvX2V4dGVudF9yZWFkcGFnZShzdHJ1Y3QgYmlvICpiaW8sIGludCBl cnIpCiAJCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBwYWdlLT5tYXBwaW5nLT5ob3N0OwogCiAJCXBy X2RlYnVnKCJlbmRfYmlvX2V4dGVudF9yZWFkcGFnZTogYmlfc2VjdG9yPSVsbHUsIGVycj0lZCwg IgotCQkJICJtaXJyb3I9JWx1XG4iLCAodTY0KWJpby0+Ymlfc2VjdG9yLCBlcnIsCisJCQkgIm1p cnJvcj0lbHVcbiIsICh1NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgZXJyLAogCQkJIGlvX2Jp by0+bWlycm9yX251bSk7CiAJCXRyZWUgPSAmQlRSRlNfSShpbm9kZSktPmlvX3RyZWU7CiAKQEAg LTI1OTgsOSArMjU5OCw5IEBAIGJ0cmZzX2Jpb19hbGxvYyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpi ZGV2LCB1NjQgZmlyc3Rfc2VjdG9yLCBpbnQgbnJfdmVjcywKIAl9CiAKIAlpZiAoYmlvKSB7Ci0J CWJpby0+Ymlfc2l6ZSA9IDA7CisJCWJpby0+YmlfaXRlci5iaV9zaXplID0gMDsKIAkJYmlvLT5i aV9iZGV2ID0gYmRldjsKLQkJYmlvLT5iaV9zZWN0b3IgPSBmaXJzdF9zZWN0b3I7CisJCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBmaXJzdF9zZWN0b3I7CiAJfQogCXJldHVybiBiaW87CiB9CkBA IC0yNjgwLDcgKzI2ODAsNyBAQCBzdGF0aWMgaW50IHN1Ym1pdF9leHRlbnRfcGFnZShpbnQgcncs IHN0cnVjdCBleHRlbnRfaW9fdHJlZSAqdHJlZSwKIAlpZiAoYmlvX3JldCAmJiAqYmlvX3JldCkg ewogCQliaW8gPSAqYmlvX3JldDsKIAkJaWYgKG9sZF9jb21wcmVzc2VkKQotCQkJY29udGlnID0g YmlvLT5iaV9zZWN0b3IgPT0gc2VjdG9yOworCQkJY29udGlnID0gYmlvLT5iaV9pdGVyLmJpX3Nl Y3RvciA9PSBzZWN0b3I7CiAJCWVsc2UKIAkJCWNvbnRpZyA9IGJpb19lbmRfc2VjdG9yKGJpbykg PT0gc2VjdG9yOwogCmRpZmYgLS1naXQgYS9mcy9idHJmcy9maWxlLWl0ZW0uYyBiL2ZzL2J0cmZz L2ZpbGUtaXRlbS5jCmluZGV4IGE3YmZjOTUuLjg5MGY5NzcgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZz L2ZpbGUtaXRlbS5jCisrKyBiL2ZzL2J0cmZzL2ZpbGUtaXRlbS5jCkBAIC0xNzQsNyArMTc0LDcg QEAgc3RhdGljIGludCBfX2J0cmZzX2xvb2t1cF9iaW9fc3VtcyhzdHJ1Y3QgYnRyZnNfcm9vdCAq cm9vdCwKIAlwYXRoID0gYnRyZnNfYWxsb2NfcGF0aCgpOwogCWlmICghcGF0aCkKIAkJcmV0dXJu IC1FTk9NRU07Ci0JaWYgKGJpby0+Ymlfc2l6ZSA+IFBBR0VfQ0FDSEVfU0laRSAqIDgpCisJaWYg KGJpby0+YmlfaXRlci5iaV9zaXplID4gUEFHRV9DQUNIRV9TSVpFICogOCkKIAkJcGF0aC0+cmVh ZGEgPSAyOwogCiAJV0FSTl9PTihiaW8tPmJpX3ZjbnQgPD0gMCk7CkBAIC0xOTAsNyArMTkwLDcg QEAgc3RhdGljIGludCBfX2J0cmZzX2xvb2t1cF9iaW9fc3VtcyhzdHJ1Y3QgYnRyZnNfcm9vdCAq cm9vdCwKIAkJcGF0aC0+c2tpcF9sb2NraW5nID0gMTsKIAl9CiAKLQlkaXNrX2J5dGVuciA9ICh1 NjQpYmlvLT5iaV9zZWN0b3IgPDwgOTsKKwlkaXNrX2J5dGVuciA9ICh1NjQpYmlvLT5iaV9pdGVy LmJpX3NlY3RvciA8PCA5OwogCWlmIChkaW8pCiAJCW9mZnNldCA9IGxvZ2ljYWxfb2Zmc2V0Owog CXdoaWxlIChiaW9faW5kZXggPCBiaW8tPmJpX3ZjbnQpIHsKQEAgLTQxOSwxMSArNDE5LDEyIEBA IGludCBidHJmc19jc3VtX29uZV9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBp bm9kZSAqaW5vZGUsCiAJdTY0IG9mZnNldDsKIAogCVdBUk5fT04oYmlvLT5iaV92Y250IDw9IDAp OwotCXN1bXMgPSBremFsbG9jKGJ0cmZzX29yZGVyZWRfc3VtX3NpemUocm9vdCwgYmlvLT5iaV9z aXplKSwgR0ZQX05PRlMpOworCXN1bXMgPSBremFsbG9jKGJ0cmZzX29yZGVyZWRfc3VtX3NpemUo cm9vdCwgYmlvLT5iaV9pdGVyLmJpX3NpemUpLAorCQkgICAgICAgR0ZQX05PRlMpOwogCWlmICgh c3VtcykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlzdW1zLT5sZW4gPSBiaW8tPmJpX3NpemU7CisJ c3Vtcy0+bGVuID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAJSU5JVF9MSVNUX0hFQUQoJnN1bXMt Pmxpc3QpOwogCiAJaWYgKGNvbnRpZykKQEAgLTQzMyw3ICs0MzQsNyBAQCBpbnQgYnRyZnNfY3N1 bV9vbmVfYmlvKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAog CiAJb3JkZXJlZCA9IGJ0cmZzX2xvb2t1cF9vcmRlcmVkX2V4dGVudChpbm9kZSwgb2Zmc2V0KTsK IAlCVUdfT04oIW9yZGVyZWQpOyAvKiBMb2dpYyBlcnJvciAqLwotCXN1bXMtPmJ5dGVuciA9ICh1 NjQpYmlvLT5iaV9zZWN0b3IgPDwgOTsKKwlzdW1zLT5ieXRlbnIgPSAodTY0KWJpby0+YmlfaXRl ci5iaV9zZWN0b3IgPDwgOTsKIAlpbmRleCA9IDA7CiAKIAl3aGlsZSAoYmlvX2luZGV4IDwgYmlv LT5iaV92Y250KSB7CkBAIC00NDgsNyArNDQ5LDcgQEAgaW50IGJ0cmZzX2NzdW1fb25lX2Jpbyhz dHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGlub2RlICppbm9kZSwKIAkJCWJ0cmZzX2Fk ZF9vcmRlcmVkX3N1bShpbm9kZSwgb3JkZXJlZCwgc3Vtcyk7CiAJCQlidHJmc19wdXRfb3JkZXJl ZF9leHRlbnQob3JkZXJlZCk7CiAKLQkJCWJ5dGVzX2xlZnQgPSBiaW8tPmJpX3NpemUgLSB0b3Rh bF9ieXRlczsKKwkJCWJ5dGVzX2xlZnQgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSAtIHRvdGFsX2J5 dGVzOwogCiAJCQlzdW1zID0ga3phbGxvYyhidHJmc19vcmRlcmVkX3N1bV9zaXplKHJvb3QsIGJ5 dGVzX2xlZnQpLAogCQkJCSAgICAgICBHRlBfTk9GUyk7CkBAIC00NTYsNyArNDU3LDcgQEAgaW50 IGJ0cmZzX2NzdW1fb25lX2JpbyhzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGlub2Rl ICppbm9kZSwKIAkJCXN1bXMtPmxlbiA9IGJ5dGVzX2xlZnQ7CiAJCQlvcmRlcmVkID0gYnRyZnNf bG9va3VwX29yZGVyZWRfZXh0ZW50KGlub2RlLCBvZmZzZXQpOwogCQkJQlVHX09OKCFvcmRlcmVk KTsgLyogTG9naWMgZXJyb3IgKi8KLQkJCXN1bXMtPmJ5dGVuciA9ICgodTY0KWJpby0+Ymlfc2Vj dG9yIDw8IDkpICsKKwkJCXN1bXMtPmJ5dGVuciA9ICgodTY0KWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPDwgOSkgKwogCQkJCSAgICAgICB0b3RhbF9ieXRlczsKIAkJCWluZGV4ID0gMDsKIAkJfQpk aWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW5vZGUuYyBiL2ZzL2J0cmZzL2lub2RlLmMKaW5kZXggNmQx YjkzYy4uZGY2ZWI1NSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvaW5vZGUuYworKysgYi9mcy9idHJm cy9pbm9kZS5jCkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBpbnQgYnRyZnNfbWVyZ2VfYmlvX2hvb2so aW50IHJ3LCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsCiAJCQkgdW5z aWduZWQgbG9uZyBiaW9fZmxhZ3MpCiB7CiAJc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QgPSBCVFJG U19JKHBhZ2UtPm1hcHBpbmctPmhvc3QpLT5yb290OwotCXU2NCBsb2dpY2FsID0gKHU2NCliaW8t PmJpX3NlY3RvciA8PCA5OworCXU2NCBsb2dpY2FsID0gKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yIDw8IDk7CiAJdTY0IGxlbmd0aCA9IDA7CiAJdTY0IG1hcF9sZW5ndGg7CiAJaW50IHJldDsK QEAgLTE2NzQsNyArMTY3NCw3IEBAIGludCBidHJmc19tZXJnZV9iaW9faG9vayhpbnQgcncsIHN0 cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwKIAlpZiAoYmlvX2ZsYWdzICYg RVhURU5UX0JJT19DT01QUkVTU0VEKQogCQlyZXR1cm4gMDsKIAotCWxlbmd0aCA9IGJpby0+Ymlf c2l6ZTsKKwlsZW5ndGggPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAltYXBfbGVuZ3RoID0gbGVu Z3RoOwogCXJldCA9IGJ0cmZzX21hcF9ibG9jayhyb290LT5mc19pbmZvLCBydywgbG9naWNhbCwK IAkJCSAgICAgICZtYXBfbGVuZ3RoLCBOVUxMLCAwKTsKQEAgLTY5MzUsNyArNjkzNSw4IEBAIHN0 YXRpYyB2b2lkIGJ0cmZzX2VuZF9kaW9fYmlvKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycikKIAkJ cHJpbnRrKEtFUk5fRVJSICJidHJmcyBkaXJlY3QgSU8gZmFpbGVkIGlubyAlbGx1IHJ3ICVsdSAi CiAJCSAgICAgICJzZWN0b3IgJSNMeCBsZW4gJXUgZXJyIG5vICVkXG4iLAogCQkgICAgICAodW5z aWduZWQgbG9uZyBsb25nKWJ0cmZzX2lubyhkaXAtPmlub2RlKSwgYmlvLT5iaV9ydywKLQkJICAg ICAgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3RvciwgYmlvLT5iaV9zaXplLCBlcnIp OworCQkgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJ CSAgICAgIGJpby0+YmlfaXRlci5iaV9zaXplLCBlcnIpOwogCQlkaXAtPmVycm9ycyA9IDE7CiAK IAkJLyoKQEAgLTcwMjQsNyArNzAyNSw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfc3VibWl0X2RpcmVj dF9ob29rKGludCBydywgc3RydWN0IGJ0cmZzX2Rpb19wcml2YXRlICpkaXAsCiAJc3RydWN0IGJp byAqYmlvOwogCXN0cnVjdCBiaW8gKm9yaWdfYmlvID0gZGlwLT5vcmlnX2JpbzsKIAlzdHJ1Y3Qg YmlvX3ZlYyAqYnZlYyA9IG9yaWdfYmlvLT5iaV9pb192ZWM7Ci0JdTY0IHN0YXJ0X3NlY3RvciA9 IG9yaWdfYmlvLT5iaV9zZWN0b3I7CisJdTY0IHN0YXJ0X3NlY3RvciA9IG9yaWdfYmlvLT5iaV9p dGVyLmJpX3NlY3RvcjsKIAl1NjQgZmlsZV9vZmZzZXQgPSBkaXAtPmxvZ2ljYWxfb2Zmc2V0Owog CXU2NCBzdWJtaXRfbGVuID0gMDsKIAl1NjQgbWFwX2xlbmd0aDsKQEAgLTcwMzIsMTQgKzcwMzMs MTQgQEAgc3RhdGljIGludCBidHJmc19zdWJtaXRfZGlyZWN0X2hvb2soaW50IHJ3LCBzdHJ1Y3Qg YnRyZnNfZGlvX3ByaXZhdGUgKmRpcCwKIAlpbnQgcmV0ID0gMDsKIAlpbnQgYXN5bmNfc3VibWl0 ID0gMDsKIAotCW1hcF9sZW5ndGggPSBvcmlnX2Jpby0+Ymlfc2l6ZTsKKwltYXBfbGVuZ3RoID0g b3JpZ19iaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAlyZXQgPSBidHJmc19tYXBfYmxvY2socm9vdC0+ ZnNfaW5mbywgcncsIHN0YXJ0X3NlY3RvciA8PCA5LAogCQkJICAgICAgJm1hcF9sZW5ndGgsIE5V TEwsIDApOwogCWlmIChyZXQpIHsKIAkJYmlvX3B1dChvcmlnX2Jpbyk7CiAJCXJldHVybiAtRUlP OwogCX0KLQlpZiAobWFwX2xlbmd0aCA+PSBvcmlnX2Jpby0+Ymlfc2l6ZSkgeworCWlmIChtYXBf bGVuZ3RoID49IG9yaWdfYmlvLT5iaV9pdGVyLmJpX3NpemUpIHsKIAkJYmlvID0gb3JpZ19iaW87 CiAJCWdvdG8gc3VibWl0OwogCX0KQEAgLTcwOTEsNyArNzA5Miw3IEBAIHN0YXRpYyBpbnQgYnRy ZnNfc3VibWl0X2RpcmVjdF9ob29rKGludCBydywgc3RydWN0IGJ0cmZzX2Rpb19wcml2YXRlICpk aXAsCiAJCQliaW8tPmJpX3ByaXZhdGUgPSBkaXA7CiAJCQliaW8tPmJpX2VuZF9pbyA9IGJ0cmZz X2VuZF9kaW9fYmlvOwogCi0JCQltYXBfbGVuZ3RoID0gb3JpZ19iaW8tPmJpX3NpemU7CisJCQlt YXBfbGVuZ3RoID0gb3JpZ19iaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAkJCXJldCA9IGJ0cmZzX21h cF9ibG9jayhyb290LT5mc19pbmZvLCBydywKIAkJCQkJICAgICAgc3RhcnRfc2VjdG9yIDw8IDks CiAJCQkJCSAgICAgICZtYXBfbGVuZ3RoLCBOVUxMLCAwKTsKQEAgLTcxNTUsOCArNzE1Niw4IEBA IHN0YXRpYyB2b2lkIGJ0cmZzX3N1Ym1pdF9kaXJlY3QoaW50IHJ3LCBzdHJ1Y3QgYmlvICpkaW9f YmlvLAogCWRpcC0+cHJpdmF0ZSA9IGRpb19iaW8tPmJpX3ByaXZhdGU7CiAJZGlwLT5pbm9kZSA9 IGlub2RlOwogCWRpcC0+bG9naWNhbF9vZmZzZXQgPSBmaWxlX29mZnNldDsKLQlkaXAtPmJ5dGVz ID0gZGlvX2Jpby0+Ymlfc2l6ZTsKLQlkaXAtPmRpc2tfYnl0ZW5yID0gKHU2NClkaW9fYmlvLT5i aV9zZWN0b3IgPDwgOTsKKwlkaXAtPmJ5dGVzID0gZGlvX2Jpby0+YmlfaXRlci5iaV9zaXplOwor CWRpcC0+ZGlza19ieXRlbnIgPSAodTY0KWRpb19iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDk7 CiAJaW9fYmlvLT5iaV9wcml2YXRlID0gZGlwOwogCWRpcC0+ZXJyb3JzID0gMDsKIAlkaXAtPm9y aWdfYmlvID0gaW9fYmlvOwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvcmFpZDU2LmMgYi9mcy9idHJm cy9yYWlkNTYuYwppbmRleCAwNTI1ZTEzLi5mYzg5YmVlIDEwMDY0NAotLS0gYS9mcy9idHJmcy9y YWlkNTYuYworKysgYi9mcy9idHJmcy9yYWlkNTYuYwpAQCAtMTAzMyw4ICsxMDMzLDggQEAgc3Rh dGljIGludCByYmlvX2FkZF9pb19wYWdlKHN0cnVjdCBidHJmc19yYWlkX2JpbyAqcmJpbywKIAog CS8qIHNlZSBpZiB3ZSBjYW4gYWRkIHRoaXMgcGFnZSBvbnRvIG91ciBleGlzdGluZyBiaW8gKi8K IAlpZiAobGFzdCkgewotCQlsYXN0X2VuZCA9ICh1NjQpbGFzdC0+Ymlfc2VjdG9yIDw8IDk7Ci0J CWxhc3RfZW5kICs9IGxhc3QtPmJpX3NpemU7CisJCWxhc3RfZW5kID0gKHU2NClsYXN0LT5iaV9p dGVyLmJpX3NlY3RvciA8PCA5OworCQlsYXN0X2VuZCArPSBsYXN0LT5iaV9pdGVyLmJpX3NpemU7 CiAKIAkJLyoKIAkJICogd2UgY2FuJ3QgbWVyZ2UgdGhlc2UgaWYgdGhleSBhcmUgZnJvbSBkaWZm ZXJlbnQKQEAgLTEwNTQsOSArMTA1NCw5IEBAIHN0YXRpYyBpbnQgcmJpb19hZGRfaW9fcGFnZShz dHJ1Y3QgYnRyZnNfcmFpZF9iaW8gKnJiaW8sCiAJaWYgKCFiaW8pCiAJCXJldHVybiAtRU5PTUVN OwogCi0JYmlvLT5iaV9zaXplID0gMDsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IDA7CiAJYmlv LT5iaV9iZGV2ID0gc3RyaXBlLT5kZXYtPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBkaXNrX3N0 YXJ0ID4+IDk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGRpc2tfc3RhcnQgPj4gOTsKIAlz ZXRfYml0KEJJT19VUFRPREFURSwgJmJpby0+YmlfZmxhZ3MpOwogCiAJYmlvX2FkZF9wYWdlKGJp bywgcGFnZSwgUEFHRV9DQUNIRV9TSVpFLCAwKTsKQEAgLTExMTIsNyArMTExMiw3IEBAIHN0YXRp YyB2b2lkIGluZGV4X3JiaW9fcGFnZXMoc3RydWN0IGJ0cmZzX3JhaWRfYmlvICpyYmlvKQogCiAJ c3Bpbl9sb2NrX2lycSgmcmJpby0+YmlvX2xpc3RfbG9jayk7CiAJYmlvX2xpc3RfZm9yX2VhY2go YmlvLCAmcmJpby0+YmlvX2xpc3QpIHsKLQkJc3RhcnQgPSAodTY0KWJpby0+Ymlfc2VjdG9yIDw8 IDk7CisJCXN0YXJ0ID0gKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDk7CiAJCXN0cmlw ZV9vZmZzZXQgPSBzdGFydCAtIHJiaW8tPnJhaWRfbWFwWzBdOwogCQlwYWdlX2luZGV4ID0gc3Ry aXBlX29mZnNldCA+PiBQQUdFX0NBQ0hFX1NISUZUOwogCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBj bGVhbnVwOgogc3RhdGljIGludCBmaW5kX2Jpb19zdHJpcGUoc3RydWN0IGJ0cmZzX3JhaWRfYmlv ICpyYmlvLAogCQkJICAgc3RydWN0IGJpbyAqYmlvKQogewotCXU2NCBwaHlzaWNhbCA9IGJpby0+ Ymlfc2VjdG9yOworCXU2NCBwaHlzaWNhbCA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJdTY0 IHN0cmlwZV9zdGFydDsKIAlpbnQgaTsKIAlzdHJ1Y3QgYnRyZnNfYmlvX3N0cmlwZSAqc3RyaXBl OwpAQCAtMTI5OSw3ICsxMjk5LDcgQEAgc3RhdGljIGludCBmaW5kX2Jpb19zdHJpcGUoc3RydWN0 IGJ0cmZzX3JhaWRfYmlvICpyYmlvLAogc3RhdGljIGludCBmaW5kX2xvZ2ljYWxfYmlvX3N0cmlw ZShzdHJ1Y3QgYnRyZnNfcmFpZF9iaW8gKnJiaW8sCiAJCQkJICAgc3RydWN0IGJpbyAqYmlvKQog ewotCXU2NCBsb2dpY2FsID0gYmlvLT5iaV9zZWN0b3I7CisJdTY0IGxvZ2ljYWwgPSBiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yOwogCXU2NCBzdHJpcGVfc3RhcnQ7CiAJaW50IGk7CiAKQEAgLTE2MDEs OCArMTYwMSw4IEBAIHN0YXRpYyBpbnQgcGx1Z19jbXAodm9pZCAqcHJpdiwgc3RydWN0IGxpc3Rf aGVhZCAqYSwgc3RydWN0IGxpc3RfaGVhZCAqYikKIAkJCQkJCSBwbHVnX2xpc3QpOwogCXN0cnVj dCBidHJmc19yYWlkX2JpbyAqcmIgPSBjb250YWluZXJfb2YoYiwgc3RydWN0IGJ0cmZzX3JhaWRf YmlvLAogCQkJCQkJIHBsdWdfbGlzdCk7Ci0JdTY0IGFfc2VjdG9yID0gcmEtPmJpb19saXN0Lmhl YWQtPmJpX3NlY3RvcjsKLQl1NjQgYl9zZWN0b3IgPSByYi0+YmlvX2xpc3QuaGVhZC0+Ymlfc2Vj dG9yOworCXU2NCBhX3NlY3RvciA9IHJhLT5iaW9fbGlzdC5oZWFkLT5iaV9pdGVyLmJpX3NlY3Rv cjsKKwl1NjQgYl9zZWN0b3IgPSByYi0+YmlvX2xpc3QuaGVhZC0+YmlfaXRlci5iaV9zZWN0b3I7 CiAKIAlpZiAoYV9zZWN0b3IgPCBiX3NlY3RvcikKIAkJcmV0dXJuIC0xOwpAQCAtMTY5Myw3ICsx NjkzLDcgQEAgaW50IHJhaWQ1Nl9wYXJpdHlfd3JpdGUoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3Qs IHN0cnVjdCBiaW8gKmJpbywKIAkJcmV0dXJuIFBUUl9FUlIocmJpbyk7CiAJfQogCWJpb19saXN0 X2FkZCgmcmJpby0+YmlvX2xpc3QsIGJpbyk7Ci0JcmJpby0+YmlvX2xpc3RfYnl0ZXMgPSBiaW8t PmJpX3NpemU7CisJcmJpby0+YmlvX2xpc3RfYnl0ZXMgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsK IAogCS8qCiAJICogZG9uJ3QgcGx1ZyBvbiBmdWxsIHJiaW9zLCBqdXN0IGdldCB0aGVtIG91dCB0 aGUgZG9vcgpAQCAtMjA0Nyw3ICsyMDQ3LDcgQEAgaW50IHJhaWQ1Nl9wYXJpdHlfcmVjb3Zlcihz dHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGJpbyAqYmlvLAogCiAJcmJpby0+cmVhZF9y ZWJ1aWxkID0gMTsKIAliaW9fbGlzdF9hZGQoJnJiaW8tPmJpb19saXN0LCBiaW8pOwotCXJiaW8t PmJpb19saXN0X2J5dGVzID0gYmlvLT5iaV9zaXplOworCXJiaW8tPmJpb19saXN0X2J5dGVzID0g YmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAlyYmlvLT5mYWlsYSA9IGZpbmRfbG9naWNhbF9iaW9f c3RyaXBlKHJiaW8sIGJpbyk7CiAJaWYgKHJiaW8tPmZhaWxhID09IC0xKSB7CmRpZmYgLS1naXQg YS9mcy9idHJmcy9zY3J1Yi5jIGIvZnMvYnRyZnMvc2NydWIuYwppbmRleCA2NGExNTdiLi41YmU3 YzYxIDEwMDY0NAotLS0gYS9mcy9idHJmcy9zY3J1Yi5jCisrKyBiL2ZzL2J0cmZzL3NjcnViLmMK QEAgLTEzMDMsNyArMTMwMyw3IEBAIHN0YXRpYyB2b2lkIHNjcnViX3JlY2hlY2tfYmxvY2soc3Ry dWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sCiAJCQljb250aW51ZTsKIAkJfQogCQliaW8tPmJp X2JkZXYgPSBwYWdlLT5kZXYtPmJkZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0gcGFnZS0+cGh5c2lj YWwgPj4gOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBhZ2UtPnBoeXNpY2FsID4+IDk7 CiAJCWJpby0+YmlfZW5kX2lvID0gc2NydWJfY29tcGxldGVfYmlvX2VuZF9pbzsKIAkJYmlvLT5i aV9wcml2YXRlID0gJmNvbXBsZXRlOwogCkBAIC0xNDM1LDcgKzE0MzUsNyBAQCBzdGF0aWMgaW50 IHNjcnViX3JlcGFpcl9wYWdlX2Zyb21fZ29vZF9jb3B5KHN0cnVjdCBzY3J1Yl9ibG9jayAqc2Js b2NrX2JhZCwKIAkJaWYgKCFiaW8pCiAJCQlyZXR1cm4gLUVJTzsKIAkJYmlvLT5iaV9iZGV2ID0g cGFnZV9iYWQtPmRldi0+YmRldjsKLQkJYmlvLT5iaV9zZWN0b3IgPSBwYWdlX2JhZC0+cGh5c2lj YWwgPj4gOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBhZ2VfYmFkLT5waHlzaWNhbCA+ PiA5OwogCQliaW8tPmJpX2VuZF9pbyA9IHNjcnViX2NvbXBsZXRlX2Jpb19lbmRfaW87CiAJCWJp by0+YmlfcHJpdmF0ZSA9ICZjb21wbGV0ZTsKIApAQCAtMTUzMyw3ICsxNTMzLDcgQEAgYWdhaW46 CiAJCWJpby0+YmlfcHJpdmF0ZSA9IHNiaW87CiAJCWJpby0+YmlfZW5kX2lvID0gc2NydWJfd3Jf YmlvX2VuZF9pbzsKIAkJYmlvLT5iaV9iZGV2ID0gc2Jpby0+ZGV2LT5iZGV2OwotCQliaW8tPmJp X3NlY3RvciA9IHNiaW8tPnBoeXNpY2FsID4+IDk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSBzYmlvLT5waHlzaWNhbCA+PiA5OwogCQlzYmlvLT5lcnIgPSAwOwogCX0gZWxzZSBpZiAoc2Jp by0+cGh5c2ljYWwgKyBzYmlvLT5wYWdlX2NvdW50ICogUEFHRV9TSVpFICE9CiAJCSAgIHNwYWdl LT5waHlzaWNhbF9mb3JfZGV2X3JlcGxhY2UgfHwKQEAgLTE5MzksNyArMTkzOSw3IEBAIGFnYWlu OgogCQliaW8tPmJpX3ByaXZhdGUgPSBzYmlvOwogCQliaW8tPmJpX2VuZF9pbyA9IHNjcnViX2Jp b19lbmRfaW87CiAJCWJpby0+YmlfYmRldiA9IHNiaW8tPmRldi0+YmRldjsKLQkJYmlvLT5iaV9z ZWN0b3IgPSBzYmlvLT5waHlzaWNhbCA+PiA5OworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0g c2Jpby0+cGh5c2ljYWwgPj4gOTsKIAkJc2Jpby0+ZXJyID0gMDsKIAl9IGVsc2UgaWYgKHNiaW8t PnBoeXNpY2FsICsgc2Jpby0+cGFnZV9jb3VudCAqIFBBR0VfU0laRSAhPQogCQkgICBzcGFnZS0+ cGh5c2ljYWwgfHwKQEAgLTMzMzAsOCArMzMzMCw4IEBAIHN0YXRpYyBpbnQgd3JpdGVfcGFnZV9u b2NvdyhzdHJ1Y3Qgc2NydWJfY3R4ICpzY3R4LAogCX0KIAliaW8tPmJpX3ByaXZhdGUgPSAmY29t cGw7CiAJYmlvLT5iaV9lbmRfaW8gPSBzY3J1Yl9jb21wbGV0ZV9iaW9fZW5kX2lvOwotCWJpby0+ Ymlfc2l6ZSA9IDA7Ci0JYmlvLT5iaV9zZWN0b3IgPSBwaHlzaWNhbF9mb3JfZGV2X3JlcGxhY2Ug Pj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IDA7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciA9IHBoeXNpY2FsX2Zvcl9kZXZfcmVwbGFjZSA+PiA5OwogCWJpby0+YmlfYmRldiA9IGRldi0+ YmRldjsKIAlyZXQgPSBiaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBQQUdFX0NBQ0hFX1NJWkUsIDAp OwogCWlmIChyZXQgIT0gUEFHRV9DQUNIRV9TSVpFKSB7CmRpZmYgLS1naXQgYS9mcy9idHJmcy92 b2x1bWVzLmMgYi9mcy9idHJmcy92b2x1bWVzLmMKaW5kZXggNzhiODcxNy4uOTljYTFiNiAxMDA2 NDQKLS0tIGEvZnMvYnRyZnMvdm9sdW1lcy5jCisrKyBiL2ZzL2J0cmZzL3ZvbHVtZXMuYwpAQCAt NTEyMiw3ICs1MTIyLDcgQEAgc3RhdGljIGludCBiaW9fc2l6ZV9vayhzdHJ1Y3QgYmxvY2tfZGV2 aWNlICpiZGV2LCBzdHJ1Y3QgYmlvICpiaW8sCiAJaWYgKCFxLT5tZXJnZV9idmVjX2ZuKQogCQly ZXR1cm4gMTsKIAotCWJ2bS5iaV9zaXplID0gYmlvLT5iaV9zaXplIC0gcHJldi0+YnZfbGVuOwor CWJ2bS5iaV9zaXplID0gYmlvLT5iaV9pdGVyLmJpX3NpemUgLSBwcmV2LT5idl9sZW47CiAJaWYg KHEtPm1lcmdlX2J2ZWNfZm4ocSwgJmJ2bSwgcHJldikgPCBwcmV2LT5idl9sZW4pCiAJCXJldHVy biAwOwogCXJldHVybiAxOwpAQCAtNTEzNyw3ICs1MTM3LDcgQEAgc3RhdGljIHZvaWQgc3VibWl0 X3N0cmlwZV9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBidHJmc19iaW8gKmJi aW8sCiAJYmlvLT5iaV9wcml2YXRlID0gYmJpbzsKIAlidHJmc19pb19iaW8oYmlvKS0+c3RyaXBl X2luZGV4ID0gZGV2X25yOwogCWJpby0+YmlfZW5kX2lvID0gYnRyZnNfZW5kX2JpbzsKLQliaW8t PmJpX3NlY3RvciA9IHBoeXNpY2FsID4+IDk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBo eXNpY2FsID4+IDk7CiAjaWZkZWYgREVCVUcKIAl7CiAJCXN0cnVjdCByY3Vfc3RyaW5nICpuYW1l OwpAQCAtNTE3NSw3ICs1MTc1LDcgQEAgYWdhaW46CiAJd2hpbGUgKGJ2ZWMgPD0gKGZpcnN0X2Jp by0+YmlfaW9fdmVjICsgZmlyc3RfYmlvLT5iaV92Y250IC0gMSkpIHsKIAkJaWYgKGJpb19hZGRf cGFnZShiaW8sIGJ2ZWMtPmJ2X3BhZ2UsIGJ2ZWMtPmJ2X2xlbiwKIAkJCQkgYnZlYy0+YnZfb2Zm c2V0KSA8IGJ2ZWMtPmJ2X2xlbikgewotCQkJdTY0IGxlbiA9IGJpby0+Ymlfc2l6ZTsKKwkJCXU2 NCBsZW4gPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAogCQkJYXRvbWljX2luYygmYmJpby0+c3Ry aXBlc19wZW5kaW5nKTsKIAkJCXN1Ym1pdF9zdHJpcGVfYmlvKHJvb3QsIGJiaW8sIGJpbywgcGh5 c2ljYWwsIGRldl9uciwKQEAgLTUxOTcsNyArNTE5Nyw3IEBAIHN0YXRpYyB2b2lkIGJiaW9fZXJy b3Ioc3RydWN0IGJ0cmZzX2JpbyAqYmJpbywgc3RydWN0IGJpbyAqYmlvLCB1NjQgbG9naWNhbCkK IAkJYmlvLT5iaV9wcml2YXRlID0gYmJpby0+cHJpdmF0ZTsKIAkJYmlvLT5iaV9lbmRfaW8gPSBi YmlvLT5lbmRfaW87CiAJCWJ0cmZzX2lvX2JpbyhiaW8pLT5taXJyb3JfbnVtID0gYmJpby0+bWly cm9yX251bTsKLQkJYmlvLT5iaV9zZWN0b3IgPSBsb2dpY2FsID4+IDk7CisJCWJpby0+YmlfaXRl ci5iaV9zZWN0b3IgPSBsb2dpY2FsID4+IDk7CiAJCWtmcmVlKGJiaW8pOwogCQliaW9fZW5kaW8o YmlvLCAtRUlPKTsKIAl9CkBAIC01MjA4LDcgKzUyMDgsNyBAQCBpbnQgYnRyZnNfbWFwX2Jpbyhz dHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8sCiB7CiAJc3Ry dWN0IGJ0cmZzX2RldmljZSAqZGV2OwogCXN0cnVjdCBiaW8gKmZpcnN0X2JpbyA9IGJpbzsKLQl1 NjQgbG9naWNhbCA9ICh1NjQpYmlvLT5iaV9zZWN0b3IgPDwgOTsKKwl1NjQgbG9naWNhbCA9ICh1 NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PCA5OwogCXU2NCBsZW5ndGggPSAwOwogCXU2NCBt YXBfbGVuZ3RoOwogCXU2NCAqcmFpZF9tYXAgPSBOVUxMOwpAQCAtNTIxNyw3ICs1MjE3LDcgQEAg aW50IGJ0cmZzX21hcF9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIGludCBydywgc3RydWN0 IGJpbyAqYmlvLAogCWludCB0b3RhbF9kZXZzID0gMTsKIAlzdHJ1Y3QgYnRyZnNfYmlvICpiYmlv ID0gTlVMTDsKIAotCWxlbmd0aCA9IGJpby0+Ymlfc2l6ZTsKKwlsZW5ndGggPSBiaW8tPmJpX2l0 ZXIuYmlfc2l6ZTsKIAltYXBfbGVuZ3RoID0gbGVuZ3RoOwogCiAJcmV0ID0gX19idHJmc19tYXBf YmxvY2socm9vdC0+ZnNfaW5mbywgcncsIGxvZ2ljYWwsICZtYXBfbGVuZ3RoLCAmYmJpbywKZGlm ZiAtLWdpdCBhL2ZzL2J1ZmZlci5jIGIvZnMvYnVmZmVyLmMKaW5kZXggNGQ3NDMzNS4uOGYzNWU3 NSAxMDA2NDQKLS0tIGEvZnMvYnVmZmVyLmMKKysrIGIvZnMvYnVmZmVyLmMKQEAgLTI5NzIsMTEg KzI5NzIsMTEgQEAgc3RhdGljIHZvaWQgZ3VhcmRfYmhfZW9kKGludCBydywgc3RydWN0IGJpbyAq YmlvLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQogCSAqIGxldCBpdCB0aHJvdWdoLCBhbmQgdGhl IElPIGxheWVyIHdpbGwgdHVybiBpdCBpbnRvCiAJICogYW4gRUlPLgogCSAqLwotCWlmICh1bmxp a2VseShiaW8tPmJpX3NlY3RvciA+PSBtYXhzZWN0b3IpKQorCWlmICh1bmxpa2VseShiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID49IG1heHNlY3RvcikpCiAJCXJldHVybjsKIAotCW1heHNlY3RvciAt PSBiaW8tPmJpX3NlY3RvcjsKLQlieXRlcyA9IGJpby0+Ymlfc2l6ZTsKKwltYXhzZWN0b3IgLT0g YmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwlieXRlcyA9IGJpby0+YmlfaXRlci5iaV9zaXplOwog CWlmIChsaWtlbHkoKGJ5dGVzID4+IDkpIDw9IG1heHNlY3RvcikpCiAJCXJldHVybjsKIApAQCAt Mjk4NCw3ICsyOTg0LDcgQEAgc3RhdGljIHZvaWQgZ3VhcmRfYmhfZW9kKGludCBydywgc3RydWN0 IGJpbyAqYmlvLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQogCWJ5dGVzID0gbWF4c2VjdG9yIDw8 IDk7CiAKIAkvKiBUcnVuY2F0ZSB0aGUgYmlvLi4gKi8KLQliaW8tPmJpX3NpemUgPSBieXRlczsK KwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IGJ5dGVzOwogCWJpby0+YmlfaW9fdmVjWzBdLmJ2X2xl biA9IGJ5dGVzOwogCiAJLyogLi5hbmQgY2xlYXIgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIGZvciBy ZWFkcyAqLwpAQCAtMzAxOSwxNCArMzAxOSwxNCBAQCBpbnQgX3N1Ym1pdF9iaChpbnQgcncsIHN0 cnVjdCBidWZmZXJfaGVhZCAqYmgsIHVuc2lnbmVkIGxvbmcgYmlvX2ZsYWdzKQogCSAqLwogCWJp byA9IGJpb19hbGxvYyhHRlBfTk9JTywgMSk7CiAKLQliaW8tPmJpX3NlY3RvciA9IGJoLT5iX2Js b2NrbnIgKiAoYmgtPmJfc2l6ZSA+PiA5KTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmgt PmJfYmxvY2tuciAqIChiaC0+Yl9zaXplID4+IDkpOwogCWJpby0+YmlfYmRldiA9IGJoLT5iX2Jk ZXY7CiAJYmlvLT5iaV9pb192ZWNbMF0uYnZfcGFnZSA9IGJoLT5iX3BhZ2U7CiAJYmlvLT5iaV9p b192ZWNbMF0uYnZfbGVuID0gYmgtPmJfc2l6ZTsKIAliaW8tPmJpX2lvX3ZlY1swXS5idl9vZmZz ZXQgPSBiaF9vZmZzZXQoYmgpOwogCiAJYmlvLT5iaV92Y250ID0gMTsKLQliaW8tPmJpX3NpemUg PSBiaC0+Yl9zaXplOworCWJpby0+YmlfaXRlci5iaV9zaXplID0gYmgtPmJfc2l6ZTsKIAogCWJp by0+YmlfZW5kX2lvID0gZW5kX2Jpb19iaF9pb19zeW5jOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJo OwpkaWZmIC0tZ2l0IGEvZnMvZGlyZWN0LWlvLmMgYi9mcy9kaXJlY3QtaW8uYwppbmRleCA3YWI5 MGY1Li42YTVkZTIwIDEwMDY0NAotLS0gYS9mcy9kaXJlY3QtaW8uYworKysgYi9mcy9kaXJlY3Qt aW8uYwpAQCAtMzQ5LDcgKzM0OSw3IEBAIGRpb19iaW9fYWxsb2Moc3RydWN0IGRpbyAqZGlvLCBz dHJ1Y3QgZGlvX3N1Ym1pdCAqc2RpbywKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX0tFUk5FTCwgbnJf dmVjcyk7CiAKIAliaW8tPmJpX2JkZXYgPSBiZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gZmlyc3Rf c2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBmaXJzdF9zZWN0b3I7CiAJaWYgKGRp by0+aXNfYXN5bmMpCiAJCWJpby0+YmlfZW5kX2lvID0gZGlvX2Jpb19lbmRfYWlvOwogCWVsc2UK QEAgLTY1NCw3ICs2NTQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBkaW9fc2VuZF9jdXJfcGFnZShz dHJ1Y3QgZGlvICpkaW8sIHN0cnVjdCBkaW9fc3VibWl0ICpzZGlvLAogCWlmIChzZGlvLT5iaW8p IHsKIAkJbG9mZl90IGN1cl9vZmZzZXQgPSBzZGlvLT5jdXJfcGFnZV9mc19vZmZzZXQ7CiAJCWxv ZmZfdCBiaW9fbmV4dF9vZmZzZXQgPSBzZGlvLT5sb2dpY2FsX29mZnNldF9pbl9iaW8gKwotCQkJ c2Rpby0+YmlvLT5iaV9zaXplOworCQkJc2Rpby0+YmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAkJ LyoKIAkJICogU2VlIHdoZXRoZXIgdGhpcyBuZXcgcmVxdWVzdCBpcyBjb250aWd1b3VzIHdpdGgg dGhlIG9sZC4KZGlmZiAtLWdpdCBhL2ZzL2V4dDQvcGFnZS1pby5jIGIvZnMvZXh0NC9wYWdlLWlv LmMKaW5kZXggNjYyNWQyMS4uZGE0Y2JmMCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9wYWdlLWlvLmMK KysrIGIvZnMvZXh0NC9wYWdlLWlvLmMKQEAgLTMxMyw3ICszMTMsNyBAQCBleHQ0X2lvX2VuZF90 ICpleHQ0X2dldF9pb19lbmQoZXh0NF9pb19lbmRfdCAqaW9fZW5kKQogc3RhdGljIHZvaWQgZXh0 NF9lbmRfYmlvKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycm9yKQogewogCWV4dDRfaW9fZW5kX3Qg KmlvX2VuZCA9IGJpby0+YmlfcHJpdmF0ZTsKLQlzZWN0b3JfdCBiaV9zZWN0b3IgPSBiaW8tPmJp X3NlY3RvcjsKKwlzZWN0b3JfdCBiaV9zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwog CiAJQlVHX09OKCFpb19lbmQpOwogCWJpby0+YmlfZW5kX2lvID0gTlVMTDsKQEAgLTM4MSw3ICsz ODEsNyBAQCBzdGF0aWMgaW50IGlvX3N1Ym1pdF9pbml0X2JpbyhzdHJ1Y3QgZXh0NF9pb19zdWJt aXQgKmlvLAogCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9JTywgbWluKG52ZWNzLCBCSU9fTUFYX1BB R0VTKSk7CiAJaWYgKCFiaW8pCiAJCXJldHVybiAtRU5PTUVNOwotCWJpby0+Ymlfc2VjdG9yID0g YmgtPmJfYmxvY2tuciAqIChiaC0+Yl9zaXplID4+IDkpOworCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBiaC0+Yl9ibG9ja25yICogKGJoLT5iX3NpemUgPj4gOSk7CiAJYmlvLT5iaV9iZGV2ID0g YmgtPmJfYmRldjsKIAliaW8tPmJpX2VuZF9pbyA9IGV4dDRfZW5kX2JpbzsKIAliaW8tPmJpX3By aXZhdGUgPSBleHQ0X2dldF9pb19lbmQoaW8tPmlvX2VuZCk7CmRpZmYgLS1naXQgYS9mcy9mMmZz L2RhdGEuYyBiL2ZzL2YyZnMvZGF0YS5jCmluZGV4IDAzNWY5YTMuLjEyYTJhZDUgMTAwNjQ0Ci0t LSBhL2ZzL2YyZnMvZGF0YS5jCisrKyBiL2ZzL2YyZnMvZGF0YS5jCkBAIC0zODcsNyArMzg3LDcg QEAgaW50IGYyZnNfcmVhZHBhZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgcGFn ZSAqcGFnZSwKIAliaW8gPSBmMmZzX2Jpb19hbGxvYyhiZGV2LCAxKTsKIAogCS8qIEluaXRpYWxp emUgdGhlIGJpbyAqLwotCWJpby0+Ymlfc2VjdG9yID0gU0VDVE9SX0ZST01fQkxPQ0soc2JpLCBi bGtfYWRkcik7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IFNFQ1RPUl9GUk9NX0JMT0NLKHNi aSwgYmxrX2FkZHIpOwogCWJpby0+YmlfZW5kX2lvID0gcmVhZF9lbmRfaW87CiAKIAlpZiAoYmlv X2FkZF9wYWdlKGJpbywgcGFnZSwgUEFHRV9DQUNIRV9TSVpFLCAwKSA8IFBBR0VfQ0FDSEVfU0la RSkgewpkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwpp bmRleCBhODZkMTI1Li5lY2ZlNjVjIDEwMDY0NAotLS0gYS9mcy9mMmZzL3NlZ21lbnQuYworKysg Yi9mcy9mMmZzL3NlZ21lbnQuYwpAQCAtNjgyLDcgKzY4Miw4IEBAIHN0YXRpYyB2b2lkIHN1Ym1p dF93cml0ZV9wYWdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IHBhZ2UgKnBhZ2Us CiBhbGxvY19uZXc6CiAJaWYgKHNiaS0+YmlvW3R5cGVdID09IE5VTEwpIHsKIAkJc2JpLT5iaW9b dHlwZV0gPSBmMmZzX2Jpb19hbGxvYyhiZGV2LCBtYXhfaHdfYmxvY2tzKHNiaSkpOwotCQlzYmkt PmJpb1t0eXBlXS0+Ymlfc2VjdG9yID0gU0VDVE9SX0ZST01fQkxPQ0soc2JpLCBibGtfYWRkcik7 CisJCXNiaS0+YmlvW3R5cGVdLT5iaV9pdGVyLmJpX3NlY3RvciA9CisJCQlTRUNUT1JfRlJPTV9C TE9DSyhzYmksIGJsa19hZGRyKTsKIAkJLyoKIAkJICogVGhlIGVuZF9pbyB3aWxsIGJlIGFzc2ln bmVkIGF0IHRoZSBzdW1iaXNzaW9uIHBoYXNlLgogCQkgKiBVbnRpbCB0aGVuLCBsZXQgYmlvX2Fk ZF9wYWdlKCkgbWVyZ2UgY29uc2VjdXRpdmUgSU9zIGFzIG11Y2gKZGlmZiAtLWdpdCBhL2ZzL2dm czIvbG9wcy5jIGIvZnMvZ2ZzMi9sb3BzLmMKaW5kZXggMTdjNWI1ZC4uODFlYTRkZSAxMDA2NDQK LS0tIGEvZnMvZ2ZzMi9sb3BzLmMKKysrIGIvZnMvZ2ZzMi9sb3BzLmMKQEAgLTI3Miw3ICsyNzIs NyBAQCBzdGF0aWMgc3RydWN0IGJpbyAqZ2ZzMl9sb2dfYWxsb2NfYmlvKHN0cnVjdCBnZnMyX3Ni ZCAqc2RwLCB1NjQgYmxrbm8pCiAJCW5ydmVjcyA9IG1heChucnZlY3MvMiwgMVUpOwogCX0KIAot CWJpby0+Ymlfc2VjdG9yID0gYmxrbm8gKiAoc2ItPnNfYmxvY2tzaXplID4+IDkpOworCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBibGtubyAqIChzYi0+c19ibG9ja3NpemUgPj4gOSk7CiAJYmlv LT5iaV9iZGV2ID0gc2ItPnNfYmRldjsKIAliaW8tPmJpX2VuZF9pbyA9IGdmczJfZW5kX2xvZ193 cml0ZTsKIAliaW8tPmJpX3ByaXZhdGUgPSBzZHA7CmRpZmYgLS1naXQgYS9mcy9nZnMyL29wc19m c3R5cGUuYyBiL2ZzL2dmczIvb3BzX2ZzdHlwZS5jCmluZGV4IDAyNjJjMTkuLmVhNjNlMDMgMTAw NjQ0Ci0tLSBhL2ZzL2dmczIvb3BzX2ZzdHlwZS5jCisrKyBiL2ZzL2dmczIvb3BzX2ZzdHlwZS5j CkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIGludCBnZnMyX3JlYWRfc3VwZXIoc3RydWN0IGdm czJfc2JkICpzZHAsIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpbGVudCkKIAlsb2NrX3BhZ2UocGFn ZSk7CiAKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX05PRlMsIDEpOwotCWJpby0+Ymlfc2VjdG9yID0g c2VjdG9yICogKHNiLT5zX2Jsb2Nrc2l6ZSA+PiA5KTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9y ID0gc2VjdG9yICogKHNiLT5zX2Jsb2Nrc2l6ZSA+PiA5KTsKIAliaW8tPmJpX2JkZXYgPSBzYi0+ c19iZGV2OwogCWJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIFBBR0VfU0laRSwgMCk7CiAKZGlmZiAt LWdpdCBhL2ZzL2hmc3BsdXMvd3JhcHBlci5jIGIvZnMvaGZzcGx1cy93cmFwcGVyLmMKaW5kZXgg YjUxYTYwNy4uNTU4NWEzMiAxMDA2NDQKLS0tIGEvZnMvaGZzcGx1cy93cmFwcGVyLmMKKysrIGIv ZnMvaGZzcGx1cy93cmFwcGVyLmMKQEAgLTcxLDcgKzcxLDcgQEAgaW50IGhmc3BsdXNfc3VibWl0 X2JpbyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzZWN0b3JfdCBzZWN0b3IsCiAJc2VjdG9yICY9 IH4oKGlvX3NpemUgPj4gSEZTUExVU19TRUNUT1JfU0hJRlQpIC0gMSk7CiAKIAliaW8gPSBiaW9f YWxsb2MoR0ZQX05PSU8sIDEpOwotCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yOworCWJpby0+Ymlf aXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJYmlvLT5iaV9iZGV2ID0gc2ItPnNfYmRldjsKIAli aW8tPmJpX2VuZF9pbyA9IGhmc3BsdXNfZW5kX2lvX3N5bmM7CiAJYmlvLT5iaV9wcml2YXRlID0g JndhaXQ7CmRpZmYgLS1naXQgYS9mcy9qZnMvamZzX2xvZ21nci5jIGIvZnMvamZzL2pmc19sb2dt Z3IuYwppbmRleCAzNjBkMjdjLi44ZDgxMWUwIDEwMDY0NAotLS0gYS9mcy9qZnMvamZzX2xvZ21n ci5jCisrKyBiL2ZzL2pmcy9qZnNfbG9nbWdyLmMKQEAgLTE5OTgsMjAgKzE5OTgsMjAgQEAgc3Rh dGljIGludCBsYm1SZWFkKHN0cnVjdCBqZnNfbG9nICogbG9nLCBpbnQgcG4sIHN0cnVjdCBsYnVm ICoqIGJwcCkKIAogCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9GUywgMSk7CiAKLQliaW8tPmJpX3Nl Y3RvciA9IGJwLT5sX2Jsa25vIDw8IChsb2ctPmwyYnNpemUgLSA5KTsKKwliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yID0gYnAtPmxfYmxrbm8gPDwgKGxvZy0+bDJic2l6ZSAtIDkpOwogCWJpby0+Ymlf YmRldiA9IGxvZy0+YmRldjsKIAliaW8tPmJpX2lvX3ZlY1swXS5idl9wYWdlID0gYnAtPmxfcGFn ZTsKIAliaW8tPmJpX2lvX3ZlY1swXS5idl9sZW4gPSBMT0dQU0laRTsKIAliaW8tPmJpX2lvX3Zl Y1swXS5idl9vZmZzZXQgPSBicC0+bF9vZmZzZXQ7CiAKIAliaW8tPmJpX3ZjbnQgPSAxOwotCWJp by0+Ymlfc2l6ZSA9IExPR1BTSVpFOworCWJpby0+YmlfaXRlci5iaV9zaXplID0gTE9HUFNJWkU7 CiAKIAliaW8tPmJpX2VuZF9pbyA9IGxibUlPRG9uZTsKIAliaW8tPmJpX3ByaXZhdGUgPSBicDsK IAkvKmNoZWNrIGlmIGpvdXJuYWxpbmcgdG8gZGlzayBoYXMgYmVlbiBkaXNhYmxlZCovCiAJaWYg KGxvZy0+bm9faW50ZWdyaXR5KSB7Ci0JCWJpby0+Ymlfc2l6ZSA9IDA7CisJCWJpby0+YmlfaXRl ci5iaV9zaXplID0gMDsKIAkJbGJtSU9Eb25lKGJpbywgMCk7CiAJfSBlbHNlIHsKIAkJc3VibWl0 X2JpbyhSRUFEX1NZTkMsIGJpbyk7CkBAIC0yMTQ0LDIxICsyMTQ0LDIxIEBAIHN0YXRpYyB2b2lk IGxibVN0YXJ0SU8oc3RydWN0IGxidWYgKiBicCkKIAlqZnNfaW5mbygibGJtU3RhcnRJT1xuIik7 CiAKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX05PRlMsIDEpOwotCWJpby0+Ymlfc2VjdG9yID0gYnAt PmxfYmxrbm8gPDwgKGxvZy0+bDJic2l6ZSAtIDkpOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSBicC0+bF9ibGtubyA8PCAobG9nLT5sMmJzaXplIC0gOSk7CiAJYmlvLT5iaV9iZGV2ID0gbG9n LT5iZGV2OwogCWJpby0+YmlfaW9fdmVjWzBdLmJ2X3BhZ2UgPSBicC0+bF9wYWdlOwogCWJpby0+ YmlfaW9fdmVjWzBdLmJ2X2xlbiA9IExPR1BTSVpFOwogCWJpby0+YmlfaW9fdmVjWzBdLmJ2X29m ZnNldCA9IGJwLT5sX29mZnNldDsKIAogCWJpby0+YmlfdmNudCA9IDE7Ci0JYmlvLT5iaV9zaXpl ID0gTE9HUFNJWkU7CisJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBMT0dQU0laRTsKIAogCWJpby0+ YmlfZW5kX2lvID0gbGJtSU9Eb25lOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJwOwogCiAJLyogY2hl Y2sgaWYgam91cm5hbGluZyB0byBkaXNrIGhhcyBiZWVuIGRpc2FibGVkICovCiAJaWYgKGxvZy0+ bm9faW50ZWdyaXR5KSB7Ci0JCWJpby0+Ymlfc2l6ZSA9IDA7CisJCWJpby0+YmlfaXRlci5iaV9z aXplID0gMDsKIAkJbGJtSU9Eb25lKGJpbywgMCk7CiAJfSBlbHNlIHsKIAkJc3VibWl0X2JpbyhX UklURV9TWU5DLCBiaW8pOwpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19tZXRhcGFnZS5jIGIvZnMv amZzL2pmc19tZXRhcGFnZS5jCmluZGV4IGQxNjVjZGUuLjQ5YmE3ZmYgMTAwNjQ0Ci0tLSBhL2Zz L2pmcy9qZnNfbWV0YXBhZ2UuYworKysgYi9mcy9qZnMvamZzX21ldGFwYWdlLmMKQEAgLTQxNiw3 ICs0MTYsNyBAQCBzdGF0aWMgaW50IG1ldGFwYWdlX3dyaXRlcGFnZShzdHJ1Y3QgcGFnZSAqcGFn ZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpCiAJCQkgKiBjb3VudCBmcm9tIGhpdHRp bmcgemVybyBiZWZvcmUgd2UncmUgdGhyb3VnaAogCQkJICovCiAJCQlpbmNfaW8ocGFnZSk7Ci0J CQlpZiAoIWJpby0+Ymlfc2l6ZSkKKwkJCWlmICghYmlvLT5iaV9pdGVyLmJpX3NpemUpCiAJCQkJ Z290byBkdW1wX2JpbzsKIAkJCXN1Ym1pdF9iaW8oV1JJVEUsIGJpbyk7CiAJCQlucl91bmRlcndh eSsrOwpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyBpbnQgbWV0YXBhZ2Vfd3JpdGVwYWdlKHN0 cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYykKIAogCQliaW8g PSBiaW9fYWxsb2MoR0ZQX05PRlMsIDEpOwogCQliaW8tPmJpX2JkZXYgPSBpbm9kZS0+aV9zYi0+ c19iZGV2OwotCQliaW8tPmJpX3NlY3RvciA9IHBibG9jayA8PCAoaW5vZGUtPmlfYmxrYml0cyAt IDkpOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gcGJsb2NrIDw8IChpbm9kZS0+aV9ibGti aXRzIC0gOSk7CiAJCWJpby0+YmlfZW5kX2lvID0gbWV0YXBhZ2Vfd3JpdGVfZW5kX2lvOwogCQli aW8tPmJpX3ByaXZhdGUgPSBwYWdlOwogCkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIGludCBt ZXRhcGFnZV93cml0ZXBhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB3cml0ZWJhY2tfY29u dHJvbCAqd2JjKQogCWlmIChiaW8pIHsKIAkJaWYgKGJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIGJp b19ieXRlcywgYmlvX29mZnNldCkgPCBiaW9fYnl0ZXMpCiAJCQkJZ290byBhZGRfZmFpbGVkOwot CQlpZiAoIWJpby0+Ymlfc2l6ZSkKKwkJaWYgKCFiaW8tPmJpX2l0ZXIuYmlfc2l6ZSkKIAkJCWdv dG8gZHVtcF9iaW87CiAKIAkJc3VibWl0X2JpbyhXUklURSwgYmlvKTsKQEAgLTUxNyw3ICs1MTcs OCBAQCBzdGF0aWMgaW50IG1ldGFwYWdlX3JlYWRwYWdlKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0 IHBhZ2UgKnBhZ2UpCiAKIAkJCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9GUywgMSk7CiAJCQliaW8t PmJpX2JkZXYgPSBpbm9kZS0+aV9zYi0+c19iZGV2OwotCQkJYmlvLT5iaV9zZWN0b3IgPSBwYmxv Y2sgPDwgKGlub2RlLT5pX2Jsa2JpdHMgLSA5KTsKKwkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PQorCQkJCXBibG9jayA8PCAoaW5vZGUtPmlfYmxrYml0cyAtIDkpOwogCQkJYmlvLT5iaV9lbmRf aW8gPSBtZXRhcGFnZV9yZWFkX2VuZF9pbzsKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHBhZ2U7CiAJ CQlsZW4gPSB4bGVuIDw8IGlub2RlLT5pX2Jsa2JpdHM7CmRpZmYgLS1naXQgYS9mcy9sb2dmcy9k ZXZfYmRldi5jIGIvZnMvbG9nZnMvZGV2X2JkZXYuYwppbmRleCA1NTA0NzVjLi5hMWIxNjFmIDEw MDY0NAotLS0gYS9mcy9sb2dmcy9kZXZfYmRldi5jCisrKyBiL2ZzL2xvZ2ZzL2Rldl9iZGV2LmMK QEAgLTMyLDkgKzMyLDkgQEAgc3RhdGljIGludCBzeW5jX3JlcXVlc3Qoc3RydWN0IHBhZ2UgKnBh Z2UsIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGludCBydykKIAliaW9fdmVjLmJ2X2xlbiA9 IFBBR0VfU0laRTsKIAliaW9fdmVjLmJ2X29mZnNldCA9IDA7CiAJYmlvLmJpX3ZjbnQgPSAxOwot CWJpby5iaV9zaXplID0gUEFHRV9TSVpFOworCWJpby5iaV9pdGVyLmJpX3NpemUgPSBQQUdFX1NJ WkU7CiAJYmlvLmJpX2JkZXYgPSBiZGV2OwotCWJpby5iaV9zZWN0b3IgPSBwYWdlLT5pbmRleCAq IChQQUdFX1NJWkUgPj4gOSk7CisJYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gcGFnZS0+aW5kZXgg KiAoUEFHRV9TSVpFID4+IDkpOwogCWluaXRfY29tcGxldGlvbigmY29tcGxldGUpOwogCWJpby5i aV9wcml2YXRlID0gJmNvbXBsZXRlOwogCWJpby5iaV9lbmRfaW8gPSByZXF1ZXN0X2NvbXBsZXRl OwpAQCAtMTA3LDkgKzEwNyw5IEBAIHN0YXRpYyBpbnQgX19iZGV2X3dyaXRlc2VnKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IsIHU2NCBvZnMsIHBnb2ZmX3QgaW5kZXgsCiAJCWlmIChpID49IG1heF9w YWdlcykgewogCQkJLyogQmxvY2sgbGF5ZXIgY2Fubm90IHNwbGl0IGJpb3MgOiggKi8KIAkJCWJp by0+YmlfdmNudCA9IGk7Ci0JCQliaW8tPmJpX3NpemUgPSBpICogUEFHRV9TSVpFOworCQkJYmlv LT5iaV9pdGVyLmJpX3NpemUgPSBpICogUEFHRV9TSVpFOwogCQkJYmlvLT5iaV9iZGV2ID0gc3Vw ZXItPnNfYmRldjsKLQkJCWJpby0+Ymlfc2VjdG9yID0gb2ZzID4+IDk7CisJCQliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yID0gb2ZzID4+IDk7CiAJCQliaW8tPmJpX3ByaXZhdGUgPSBzYjsKIAkJCWJp by0+YmlfZW5kX2lvID0gd3JpdGVzZWdfZW5kX2lvOwogCQkJYXRvbWljX2luYygmc3VwZXItPnNf cGVuZGluZ193cml0ZXMpOwpAQCAtMTM0LDkgKzEzNCw5IEBAIHN0YXRpYyBpbnQgX19iZGV2X3dy aXRlc2VnKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU2NCBvZnMsIHBnb2ZmX3QgaW5kZXgsCiAJ CXVubG9ja19wYWdlKHBhZ2UpOwogCX0KIAliaW8tPmJpX3ZjbnQgPSBucl9wYWdlczsKLQliaW8t PmJpX3NpemUgPSBucl9wYWdlcyAqIFBBR0VfU0laRTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 IG5yX3BhZ2VzICogUEFHRV9TSVpFOwogCWJpby0+YmlfYmRldiA9IHN1cGVyLT5zX2JkZXY7Ci0J YmlvLT5iaV9zZWN0b3IgPSBvZnMgPj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gb2Zz ID4+IDk7CiAJYmlvLT5iaV9wcml2YXRlID0gc2I7CiAJYmlvLT5iaV9lbmRfaW8gPSB3cml0ZXNl Z19lbmRfaW87CiAJYXRvbWljX2luYygmc3VwZXItPnNfcGVuZGluZ193cml0ZXMpOwpAQCAtMTk5 LDkgKzE5OSw5IEBAIHN0YXRpYyBpbnQgZG9fZXJhc2Uoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg dTY0IG9mcywgcGdvZmZfdCBpbmRleCwKIAkJaWYgKGkgPj0gbWF4X3BhZ2VzKSB7CiAJCQkvKiBC bG9jayBsYXllciBjYW5ub3Qgc3BsaXQgYmlvcyA6KCAqLwogCQkJYmlvLT5iaV92Y250ID0gaTsK LQkJCWJpby0+Ymlfc2l6ZSA9IGkgKiBQQUdFX1NJWkU7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2l6 ZSA9IGkgKiBQQUdFX1NJWkU7CiAJCQliaW8tPmJpX2JkZXYgPSBzdXBlci0+c19iZGV2OwotCQkJ YmlvLT5iaV9zZWN0b3IgPSBvZnMgPj4gOTsKKwkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBv ZnMgPj4gOTsKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHNiOwogCQkJYmlvLT5iaV9lbmRfaW8gPSBl cmFzZV9lbmRfaW87CiAJCQlhdG9taWNfaW5jKCZzdXBlci0+c19wZW5kaW5nX3dyaXRlcyk7CkBA IC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGludCBkb19lcmFzZShzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnNiLCB1NjQgb2ZzLCBwZ29mZl90IGluZGV4LAogCQliaW8tPmJpX2lvX3ZlY1tpXS5idl9vZmZz ZXQgPSAwOwogCX0KIAliaW8tPmJpX3ZjbnQgPSBucl9wYWdlczsKLQliaW8tPmJpX3NpemUgPSBu cl9wYWdlcyAqIFBBR0VfU0laRTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IG5yX3BhZ2VzICog UEFHRV9TSVpFOwogCWJpby0+YmlfYmRldiA9IHN1cGVyLT5zX2JkZXY7Ci0JYmlvLT5iaV9zZWN0 b3IgPSBvZnMgPj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gb2ZzID4+IDk7CiAJYmlv LT5iaV9wcml2YXRlID0gc2I7CiAJYmlvLT5iaV9lbmRfaW8gPSBlcmFzZV9lbmRfaW87CiAJYXRv bWljX2luYygmc3VwZXItPnNfcGVuZGluZ193cml0ZXMpOwpkaWZmIC0tZ2l0IGEvZnMvbXBhZ2Uu YyBiL2ZzL21wYWdlLmMKaW5kZXggMGZhY2UxYy4uOTJiMTI1ZiAxMDA2NDQKLS0tIGEvZnMvbXBh Z2UuYworKysgYi9mcy9tcGFnZS5jCkBAIC05NCw3ICs5NCw3IEBAIG1wYWdlX2FsbG9jKHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYsCiAKIAlpZiAoYmlvKSB7CiAJCWJpby0+YmlfYmRldiA9IGJk ZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0gZmlyc3Rfc2VjdG9yOworCQliaW8tPmJpX2l0ZXIuYmlf c2VjdG9yID0gZmlyc3Rfc2VjdG9yOwogCX0KIAlyZXR1cm4gYmlvOwogfQpkaWZmIC0tZ2l0IGEv ZnMvbmZzL2Jsb2NrbGF5b3V0L2Jsb2NrbGF5b3V0LmMgYi9mcy9uZnMvYmxvY2tsYXlvdXQvYmxv Y2tsYXlvdXQuYwppbmRleCBlMjQyYmJmLi5hZjczODk2IDEwMDY0NAotLS0gYS9mcy9uZnMvYmxv Y2tsYXlvdXQvYmxvY2tsYXlvdXQuYworKysgYi9mcy9uZnMvYmxvY2tsYXlvdXQvYmxvY2tsYXlv dXQuYwpAQCAtMTM0LDggKzEzNCw4IEBAIGJsX3N1Ym1pdF9iaW8oaW50IHJ3LCBzdHJ1Y3QgYmlv ICpiaW8pCiAJaWYgKGJpbykgewogCQlnZXRfcGFyYWxsZWwoYmlvLT5iaV9wcml2YXRlKTsKIAkJ ZHByaW50aygiJXMgc3VibWl0dGluZyAlcyBiaW8gJXVAJWxsdVxuIiwgX19mdW5jX18sCi0JCQly dyA9PSBSRUFEID8gInJlYWQiIDogIndyaXRlIiwKLQkJCWJpby0+Ymlfc2l6ZSwgKHVuc2lnbmVk IGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQlydyA9PSBSRUFEID8gInJlYWQiIDogIndy aXRlIiwgYmlvLT5iaV9pdGVyLmJpX3NpemUsCisJCQkodW5zaWduZWQgbG9uZyBsb25nKWJpby0+ YmlfaXRlci5iaV9zZWN0b3IpOwogCQlzdWJtaXRfYmlvKHJ3LCBiaW8pOwogCX0KIAlyZXR1cm4g TlVMTDsKQEAgLTE1Niw3ICsxNTYsOCBAQCBzdGF0aWMgc3RydWN0IGJpbyAqYmxfYWxsb2NfaW5p dF9iaW8oaW50IG5wZywgc2VjdG9yX3QgaXNlY3QsCiAJfQogCiAJaWYgKGJpbykgewotCQliaW8t PmJpX3NlY3RvciA9IGlzZWN0IC0gYmUtPmJlX2Zfb2Zmc2V0ICsgYmUtPmJlX3Zfb2Zmc2V0Owor CQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gaXNlY3QgLSBiZS0+YmVfZl9vZmZzZXQgKworCQkJ YmUtPmJlX3Zfb2Zmc2V0OwogCQliaW8tPmJpX2JkZXYgPSBiZS0+YmVfbWRldjsKIAkJYmlvLT5i aV9lbmRfaW8gPSBlbmRfaW87CiAJCWJpby0+YmlfcHJpdmF0ZSA9IHBhcjsKQEAgLTUxOSw3ICs1 MjAsNyBAQCBibF9kb19yZWFkcGFnZV9zeW5jKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgcG5m c19ibG9ja19leHRlbnQgKmJlLAogCWlzZWN0ID0gKHBhZ2UtPmluZGV4IDw8IFBBR0VfQ0FDSEVf U0VDVE9SX1NISUZUKSArCiAJCShvZmZzZXQgLyBTRUNUT1JfU0laRSk7CiAKLQliaW8tPmJpX3Nl Y3RvciA9IGlzZWN0IC0gYmUtPmJlX2Zfb2Zmc2V0ICsgYmUtPmJlX3Zfb2Zmc2V0OworCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBpc2VjdCAtIGJlLT5iZV9mX29mZnNldCArIGJlLT5iZV92X29m ZnNldDsKIAliaW8tPmJpX2JkZXYgPSBiZS0+YmVfbWRldjsKIAliaW8tPmJpX2VuZF9pbyA9IGJs X3JlYWRfc2luZ2xlX2VuZF9pbzsKIApkaWZmIC0tZ2l0IGEvZnMvbmlsZnMyL3NlZ2J1Zi5jIGIv ZnMvbmlsZnMyL3NlZ2J1Zi5jCmluZGV4IGRjOWE5MTMuLjg1ZGFiY2QgMTAwNjQ0Ci0tLSBhL2Zz L25pbGZzMi9zZWdidWYuYworKysgYi9mcy9uaWxmczIvc2VnYnVmLmMKQEAgLTQxNyw3ICs0MTcs OCBAQCBzdGF0aWMgc3RydWN0IGJpbyAqbmlsZnNfYWxsb2Nfc2VnX2JpbyhzdHJ1Y3QgdGhlX25p bGZzICpuaWxmcywgc2VjdG9yX3Qgc3RhcnQsCiAJfQogCWlmIChsaWtlbHkoYmlvKSkgewogCQli aW8tPmJpX2JkZXYgPSBuaWxmcy0+bnNfYmRldjsKLQkJYmlvLT5iaV9zZWN0b3IgPSBzdGFydCA8 PCAobmlsZnMtPm5zX2Jsb2Nrc2l6ZV9iaXRzIC0gOSk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPQorCQkJc3RhcnQgPDwgKG5pbGZzLT5uc19ibG9ja3NpemVfYml0cyAtIDkpOwogCX0KIAly ZXR1cm4gYmlvOwogfQpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvY2x1c3Rlci9oZWFydGJlYXQuYyBi L2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMKaW5kZXggNWMxYzg2NC4uZTFkMWU4MiAxMDA2 NDQKLS0tIGEvZnMvb2NmczIvY2x1c3Rlci9oZWFydGJlYXQuYworKysgYi9mcy9vY2ZzMi9jbHVz dGVyL2hlYXJ0YmVhdC5jCkBAIC00MjEsNyArNDIxLDcgQEAgc3RhdGljIHN0cnVjdCBiaW8gKm8y aGJfc2V0dXBfb25lX2JpbyhzdHJ1Y3QgbzJoYl9yZWdpb24gKnJlZywKIAl9CiAKIAkvKiBNdXN0 IHB1dCBldmVyeXRoaW5nIGluIDUxMiBieXRlIHNlY3RvcnMgZm9yIHRoZSBiaW8uLi4gKi8KLQli aW8tPmJpX3NlY3RvciA9IChyZWctPmhyX3N0YXJ0X2Jsb2NrICsgY3MpIDw8IChiaXRzIC0gOSk7 CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IChyZWctPmhyX3N0YXJ0X2Jsb2NrICsgY3MpIDw8 IChiaXRzIC0gOSk7CiAJYmlvLT5iaV9iZGV2ID0gcmVnLT5ocl9iZGV2OwogCWJpby0+YmlfcHJp dmF0ZSA9IHdjOwogCWJpby0+YmlfZW5kX2lvID0gbzJoYl9iaW9fZW5kX2lvOwpkaWZmIC0tZ2l0 IGEvZnMveGZzL3hmc19hb3BzLmMgYi9mcy94ZnMveGZzX2FvcHMuYwppbmRleCA1OTZlYzcxLi5i NGFkMTg2IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2FvcHMuYworKysgYi9mcy94ZnMveGZzX2Fv cHMuYwpAQCAtNDE1LDcgKzQxNSw3IEBAIHhmc19hbGxvY19pb2VuZF9iaW8oCiAJc3RydWN0IGJp bwkJKmJpbyA9IGJpb19hbGxvYyhHRlBfTk9JTywgbnZlY3MpOwogCiAJQVNTRVJUKGJpby0+Ymlf cHJpdmF0ZSA9PSBOVUxMKTsKLQliaW8tPmJpX3NlY3RvciA9IGJoLT5iX2Jsb2NrbnIgKiAoYmgt PmJfc2l6ZSA+PiA5KTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmgtPmJfYmxvY2tuciAq IChiaC0+Yl9zaXplID4+IDkpOwogCWJpby0+YmlfYmRldiA9IGJoLT5iX2JkZXY7CiAJcmV0dXJu IGJpbzsKIH0KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnVmLmMgYi9mcy94ZnMveGZzX2J1Zi5j CmluZGV4IDFiMjQ3MmEuLjBhZjdmOTMgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYnVmLmMKKysr IGIvZnMveGZzL3hmc19idWYuYwpAQCAtMTI4NSw3ICsxMjg1LDcgQEAgbmV4dF9jaHVuazoKIAog CWJpbyA9IGJpb19hbGxvYyhHRlBfTk9JTywgbnJfcGFnZXMpOwogCWJpby0+YmlfYmRldiA9IGJw LT5iX3RhcmdldC0+YnRfYmRldjsKLQliaW8tPmJpX3NlY3RvciA9IHNlY3RvcjsKKwliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yOwogCWJpby0+YmlfZW5kX2lvID0geGZzX2J1Zl9iaW9f ZW5kX2lvOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJwOwogCkBAIC0xMzA3LDcgKzEzMDcsNyBAQCBu ZXh0X2NodW5rOgogCQl0b3RhbF9ucl9wYWdlcy0tOwogCX0KIAotCWlmIChsaWtlbHkoYmlvLT5i aV9zaXplKSkgeworCWlmIChsaWtlbHkoYmlvLT5iaV9pdGVyLmJpX3NpemUpKSB7CiAJCWlmICh4 ZnNfYnVmX2lzX3ZtYXBwZWQoYnApKSB7CiAJCQlmbHVzaF9rZXJuZWxfdm1hcF9yYW5nZShicC0+ Yl9hZGRyLAogCQkJCQkJeGZzX2J1Zl92bWFwX2xlbihicCkpOwpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9iaW8uaCBiL2luY2x1ZGUvbGludXgvYmlvLmgKaW5kZXggMTYyMDM2YS4uNWY0NDBm MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9iaW8uaAorKysgYi9pbmNsdWRlL2xpbnV4L2Jp by5oCkBAIC02MiwxOSArNjIsMTkgQEAKICAqIG9uIGhpZ2htZW0gcGFnZSB2ZWN0b3JzCiAgKi8K ICNkZWZpbmUgYmlvX2lvdmVjX2lkeChiaW8sIGlkeCkJKCYoKGJpbyktPmJpX2lvX3ZlY1soaWR4 KV0pKQotI2RlZmluZSBiaW9faW92ZWMoYmlvKQkJYmlvX2lvdmVjX2lkeCgoYmlvKSwgKGJpbykt PmJpX2lkeCkKKyNkZWZpbmUgYmlvX2lvdmVjKGJpbykJCWJpb19pb3ZlY19pZHgoKGJpbyksIChi aW8pLT5iaV9pdGVyLmJpX2lkeCkKICNkZWZpbmUgYmlvX3BhZ2UoYmlvKQkJYmlvX2lvdmVjKChi aW8pKS0+YnZfcGFnZQogI2RlZmluZSBiaW9fb2Zmc2V0KGJpbykJCWJpb19pb3ZlYygoYmlvKSkt PmJ2X29mZnNldAotI2RlZmluZSBiaW9fc2VnbWVudHMoYmlvKQkoKGJpbyktPmJpX3ZjbnQgLSAo YmlvKS0+YmlfaWR4KQotI2RlZmluZSBiaW9fc2VjdG9ycyhiaW8pCSgoYmlvKS0+Ymlfc2l6ZSA+ PiA5KQotI2RlZmluZSBiaW9fZW5kX3NlY3RvcihiaW8pCSgoYmlvKS0+Ymlfc2VjdG9yICsgYmlv X3NlY3RvcnMoKGJpbykpKQorI2RlZmluZSBiaW9fc2VnbWVudHMoYmlvKQkoKGJpbyktPmJpX3Zj bnQgLSAoYmlvKS0+YmlfaXRlci5iaV9pZHgpCisjZGVmaW5lIGJpb19zZWN0b3JzKGJpbykJKChi aW8pLT5iaV9pdGVyLmJpX3NpemUgPj4gOSkKKyNkZWZpbmUgYmlvX2VuZF9zZWN0b3IoYmlvKQko KGJpbyktPmJpX2l0ZXIuYmlfc2VjdG9yICsgYmlvX3NlY3RvcnMoKGJpbykpKQogCiBzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGludCBiaW9fY3VyX2J5dGVzKHN0cnVjdCBiaW8gKmJpbykKIHsKIAlp ZiAoYmlvLT5iaV92Y250KQogCQlyZXR1cm4gYmlvX2lvdmVjKGJpbyktPmJ2X2xlbjsKIAllbHNl IC8qIGRhdGFsZXNzIHJlcXVlc3RzIHN1Y2ggYXMgZGlzY2FyZCAqLwotCQlyZXR1cm4gYmlvLT5i aV9zaXplOworCQlyZXR1cm4gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiB9CiAKIHN0YXRpYyBpbmxp bmUgdm9pZCAqYmlvX2RhdGEoc3RydWN0IGJpbyAqYmlvKQpAQCAtMTA4LDcgKzEwOCw3IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCAqYmlvX2RhdGEoc3RydWN0IGJpbyAqYmlvKQogICovCiAKICNkZWZp bmUgX19CVkVDX0VORChiaW8pCQliaW9faW92ZWNfaWR4KChiaW8pLCAoYmlvKS0+YmlfdmNudCAt IDEpCi0jZGVmaW5lIF9fQlZFQ19TVEFSVChiaW8pCWJpb19pb3ZlY19pZHgoKGJpbyksIChiaW8p LT5iaV9pZHgpCisjZGVmaW5lIF9fQlZFQ19TVEFSVChiaW8pCWJpb19pb3ZlY19pZHgoKGJpbyks IChiaW8pLT5iaV9pdGVyLmJpX2lkeCkKIAogLyogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBC SU9WRUNfUEhZU19NRVJHRUFCTEUgKi8KICNkZWZpbmUgX19CSU9WRUNfUEhZU19NRVJHRUFCTEUo dmVjMSwgdmVjMikJXApAQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqYmlv X2RhdGEoc3RydWN0IGJpbyAqYmlvKQogCSAgICAgaSsrKQogCiAjZGVmaW5lIGJpb19mb3JfZWFj aF9zZWdtZW50KGJ2bCwgYmlvLCBpKQkJCQlcCi0JZm9yIChpID0gKGJpbyktPmJpX2lkeDsJCQkJ CQlcCisJZm9yIChpID0gKGJpbyktPmJpX2l0ZXIuYmlfaWR4OwkJCQkJXAogCSAgICAgYnZsID0g YmlvX2lvdmVjX2lkeCgoYmlvKSwgKGkpKSwgaSA8IChiaW8pLT5iaV92Y250OwlcCiAJICAgICBp KyspCiAKQEAgLTM2NSw3ICszNjUsNyBAQCBzdGF0aWMgaW5saW5lIGNoYXIgKl9fYmlvX2ttYXBf aXJxKHN0cnVjdCBiaW8gKmJpbywgdW5zaWduZWQgc2hvcnQgaWR4LAogI2RlZmluZSBfX2Jpb19r dW5tYXBfaXJxKGJ1ZiwgZmxhZ3MpCWJ2ZWNfa3VubWFwX2lycShidWYsIGZsYWdzKQogCiAjZGVm aW5lIGJpb19rbWFwX2lycShiaW8sIGZsYWdzKSBcCi0JX19iaW9fa21hcF9pcnEoKGJpbyksIChi aW8pLT5iaV9pZHgsIChmbGFncykpCisJX19iaW9fa21hcF9pcnEoKGJpbyksIChiaW8pLT5iaV9p dGVyLmJpX2lkeCwgKGZsYWdzKSkKICNkZWZpbmUgYmlvX2t1bm1hcF9pcnEoYnVmLGZsYWdzKQlf X2Jpb19rdW5tYXBfaXJxKGJ1ZiwgZmxhZ3MpCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2Jsa190eXBlcy5oIGIvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaAppbmRleCBmYTFhYmVi Li5kNDZlOGE2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oCisrKyBiL2lu Y2x1ZGUvbGludXgvYmxrX3R5cGVzLmgKQEAgLTI4LDEzICsyOCwxOSBAQCBzdHJ1Y3QgYmlvX3Zl YyB7CiAJdW5zaWduZWQgaW50CWJ2X29mZnNldDsKIH07CiAKK3N0cnVjdCBidmVjX2l0ZXIgewor CXNlY3Rvcl90CQliaV9zZWN0b3I7CS8qIGRldmljZSBhZGRyZXNzIGluIDUxMiBieXRlCisJCQkJ CQkgICBzZWN0b3JzICovCisJdW5zaWduZWQgaW50CQliaV9zaXplOwkvKiByZXNpZHVhbCBJL08g Y291bnQgKi8KKworCXVuc2lnbmVkIGludAkJYmlfaWR4OwkJLyogY3VycmVudCBpbmRleCBpbnRv IGJ2bF92ZWMgKi8KK307CisKIC8qCiAgKiBtYWluIHVuaXQgb2YgSS9PIGZvciB0aGUgYmxvY2sg bGF5ZXIgYW5kIGxvd2VyIGxheWVycyAoaWUgZHJpdmVycyBhbmQKICAqIHN0YWNraW5nIGRyaXZl cnMpCiAgKi8KIHN0cnVjdCBiaW8gewotCXNlY3Rvcl90CQliaV9zZWN0b3I7CS8qIGRldmljZSBh ZGRyZXNzIGluIDUxMiBieXRlCi0JCQkJCQkgICBzZWN0b3JzICovCiAJc3RydWN0IGJpbwkJKmJp X25leHQ7CS8qIHJlcXVlc3QgcXVldWUgbGluayAqLwogCXN0cnVjdCBibG9ja19kZXZpY2UJKmJp X2JkZXY7CiAJdW5zaWduZWQgbG9uZwkJYmlfZmxhZ3M7CS8qIHN0YXR1cywgY29tbWFuZCwgZXRj ICovCkBAIC00MiwxNiArNDgsMTMgQEAgc3RydWN0IGJpbyB7CiAJCQkJCQkgKiB0b3AgYml0cyBw cmlvcml0eQogCQkJCQkJICovCiAKLQl1bnNpZ25lZCBzaG9ydAkJYmlfdmNudDsJLyogaG93IG1h bnkgYmlvX3ZlYydzICovCi0JdW5zaWduZWQgc2hvcnQJCWJpX2lkeDsJCS8qIGN1cnJlbnQgaW5k ZXggaW50byBidmxfdmVjICovCisJc3RydWN0IGJ2ZWNfaXRlcgliaV9pdGVyOwogCiAJLyogTnVt YmVyIG9mIHNlZ21lbnRzIGluIHRoaXMgQklPIGFmdGVyCiAJICogcGh5c2ljYWwgYWRkcmVzcyBj b2FsZXNjaW5nIGlzIHBlcmZvcm1lZC4KIAkgKi8KIAl1bnNpZ25lZCBpbnQJCWJpX3BoeXNfc2Vn bWVudHM7CiAKLQl1bnNpZ25lZCBpbnQJCWJpX3NpemU7CS8qIHJlc2lkdWFsIEkvTyBjb3VudCAq LwotCiAJLyoKIAkgKiBUbyBrZWVwIHRyYWNrIG9mIHRoZSBtYXggc2VnbWVudCBzaXplLCB3ZSBh Y2NvdW50IGZvciB0aGUKIAkgKiBzaXplcyBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgbWVyZ2VhYmxl IHNlZ21lbnRzIGluIHRoaXMgYmlvLgpAQCAtNzQsMTEgKzc3LDEzIEBAIHN0cnVjdCBiaW8gewog CXN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQgKmJpX2ludGVncml0eTsgIC8qIGRhdGEgaW50 ZWdyaXR5ICovCiAjZW5kaWYKIAorCXVuc2lnbmVkIHNob3J0CQliaV92Y250OwkvKiBob3cgbWFu eSBiaW9fdmVjJ3MgKi8KKwogCS8qCiAJICogRXZlcnl0aGluZyBzdGFydGluZyB3aXRoIGJpX21h eF92ZWNzIHdpbGwgYmUgcHJlc2VydmVkIGJ5IGJpb19yZXNldCgpCiAJICovCiAKLQl1bnNpZ25l ZCBpbnQJCWJpX21heF92ZWNzOwkvKiBtYXggYnZsX3ZlY3Mgd2UgY2FuIGhvbGQgKi8KKwl1bnNp Z25lZCBzaG9ydAkJYmlfbWF4X3ZlY3M7CS8qIG1heCBidmxfdmVjcyB3ZSBjYW4gaG9sZCAqLwog CiAJYXRvbWljX3QJCWJpX2NudDsJCS8qIHBpbiBjb3VudCAqLwogCmRpZmYgLS1naXQgYS9pbmNs dWRlL3RyYWNlL2V2ZW50cy9iY2FjaGUuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2JjYWNoZS5o CmluZGV4IDVlYmRhOTcuLjViNjQ3Y2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRz L2JjYWNoZS5oCisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2JjYWNoZS5oCkBAIC0yNiwxMCAr MjYsMTAgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhiY2FjaGVfcmVxdWVzdCwKIAkJX19lbnRyeS0+ ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRfZGV2OwogCQlfX2VudHJ5LT5vcmlnX21ham9yCT0gcy0+ ZC0+ZGlzay0+bWFqb3I7CiAJCV9fZW50cnktPm9yaWdfbWlub3IJPSBzLT5kLT5kaXNrLT5maXJz dF9taW5vcjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+Ymlfc2VjdG9yOwotCQlfX2VudHJ5 LT5vcmlnX3NlY3Rvcgk9IGJpby0+Ymlfc2VjdG9yIC0gMTY7Ci0JCV9fZW50cnktPm5yX3NlY3Rv cgk9IGJpby0+Ymlfc2l6ZSA+PiA5OwotCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJp by0+YmlfcncsIGJpby0+Ymlfc2l6ZSk7CisJCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yOworCQlfX2VudHJ5LT5vcmlnX3NlY3Rvcgk9IGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgLSAxNjsKKwkJX19lbnRyeS0+bnJfc2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NpemUg Pj4gOTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJp X2l0ZXIuYmlfc2l6ZSk7CiAJKSwKIAogCVRQX3ByaW50aygiJWQsJWQgJXMgJWxsdSArICV1IChm cm9tICVkLCVkIEAgJWxsdSkiLApAQCAtMTAxLDkgKzEwMSw5IEBAIERFQ0xBUkVfRVZFTlRfQ0xB U1MoYmNhY2hlX2JpbywKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlv LT5iaV9iZGV2LT5iZF9kZXY7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsK LQkJX19lbnRyeS0+bnJfc2VjdG9yCT0gYmlvLT5iaV9zaXplID4+IDk7Ci0JCWJsa19maWxsX3J3 YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9zaXplKTsKKwkJX19lbnRyeS0+ c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CisJCV9fZW50cnktPm5yX3NlY3Rvcgk9 IGJpby0+YmlfaXRlci5iaV9zaXplID4+IDk7CisJCWJsa19maWxsX3J3YnMoX19lbnRyeS0+cndi cywgYmlvLT5iaV9ydywgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCSksCiAKIAlUUF9wcmludGso IiVkLCVkICAlcyAlbGx1ICsgJXUiLApAQCAtMTM2LDkgKzEzNiw5IEBAIFRSQUNFX0VWRU5UKGJj YWNoZV9yZWFkLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50cnktPmRldgkJPSBiaW8tPmJp X2JkZXYtPmJkX2RldjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+Ymlfc2VjdG9yOwotCQlf X2VudHJ5LT5ucl9zZWN0b3IJPSBiaW8tPmJpX3NpemUgPj4gOTsKLQkJYmxrX2ZpbGxfcndicyhf X2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUpOworCQlfX2VudHJ5LT5zZWN0 b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+bnJfc2VjdG9yCT0gYmlv LT5iaV9pdGVyLmJpX3NpemUgPj4gOTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBi aW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCV9fZW50cnktPmNhY2hlX2hpdCA9 IGhpdDsKIAkJX19lbnRyeS0+YnlwYXNzID0gYnlwYXNzOwogCSksCkBAIC0xNjQsOSArMTY0LDkg QEAgVFJBQ0VfRVZFTlQoYmNhY2hlX3dyaXRlLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50 cnktPmRldgkJPSBiaW8tPmJpX2JkZXYtPmJkX2RldjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJp by0+Ymlfc2VjdG9yOwotCQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBiaW8tPmJpX3NpemUgPj4gOTsK LQkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUp OworCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwkJX19lbnRy eS0+bnJfc2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NpemUgPj4gOTsKKwkJYmxrX2ZpbGxfcndi cyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCV9f ZW50cnktPndyaXRlYmFjayA9IHdyaXRlYmFjazsKIAkJX19lbnRyeS0+YnlwYXNzID0gYnlwYXNz OwogCSksCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oIGIvaW5jbHVk ZS90cmFjZS9ldmVudHMvYmxvY2suaAppbmRleCA2MGFlN2MzLi5mYmY5YzVjIDEwMDY0NAotLS0g YS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oCisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRz L2Jsb2NrLmgKQEAgLTI0Myw5ICsyNDMsOSBAQCBUUkFDRV9FVkVOVChibG9ja19iaW9fYm91bmNl LAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlvLT5iaV9iZGV2ID8KIAkJ CQkJICBiaW8tPmJpX2JkZXYtPmJkX2RldiA6IDA7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8t PmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7 CiAJCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJpbyk7Ci0JCWJsa19maWxsX3J3 YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9zaXplKTsKKwkJYmxrX2ZpbGxf cndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJ CW1lbWNweShfX2VudHJ5LT5jb21tLCBjdXJyZW50LT5jb21tLCBUQVNLX0NPTU1fTEVOKTsKIAkp LAogCkBAIC0yODAsMTAgKzI4MCwxMCBAQCBUUkFDRV9FVkVOVChibG9ja19iaW9fY29tcGxldGUs CiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRf ZGV2OwotCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9zZWN0b3I7CisJCV9fZW50cnktPnNl Y3RvcgkJPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBi aW9fc2VjdG9ycyhiaW8pOwogCQlfX2VudHJ5LT5lcnJvcgkJPSBlcnJvcjsKLQkJYmxrX2ZpbGxf cndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUpOworCQlibGtfZmls bF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsK IAkpLAogCiAJVFBfcHJpbnRrKCIlZCwlZCAlcyAlbGx1ICsgJXUgWyVkXSIsCkBAIC0zMDgsOSAr MzA4LDkgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19iaW9fbWVyZ2UsCiAKIAlUUF9mYXN0 X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRfZGV2OwotCQlfX2Vu dHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9zZWN0b3I7CisJCV9fZW50cnktPnNlY3RvcgkJPSBiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBiaW9fc2VjdG9ycyhi aW8pOwotCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+Ymlf c2l6ZSk7CisJCWJsa19maWxsX3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5i aV9pdGVyLmJpX3NpemUpOwogCQltZW1jcHkoX19lbnRyeS0+Y29tbSwgY3VycmVudC0+Y29tbSwg VEFTS19DT01NX0xFTik7CiAJKSwKIApAQCAtMzc1LDkgKzM3NSw5IEBAIFRSQUNFX0VWRU5UKGJs b2NrX2Jpb19xdWV1ZSwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlv LT5iaV9iZGV2LT5iZF9kZXY7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsK KwkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCV9fZW50cnkt Pm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJpbyk7Ci0JCWJsa19maWxsX3J3YnMoX19lbnRyeS0+ cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9zaXplKTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5 LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCW1lbWNweShfX2Vu dHJ5LT5jb21tLCBjdXJyZW50LT5jb21tLCBUQVNLX0NPTU1fTEVOKTsKIAkpLAogCkBAIC00MDMs NyArNDAzLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19nZXRfcnEsCiAKIAlUUF9mYXN0 X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpbyA/IGJpby0+YmlfYmRldi0+YmRfZGV2IDog MDsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpbyA/IGJpby0+Ymlfc2VjdG9yIDogMDsKKwkJX19l bnRyeS0+c2VjdG9yCQk9IGJpbyA/IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgOiAwOwogCQlfX2Vu dHJ5LT5ucl9zZWN0b3IJPSBiaW8gPyBiaW9fc2VjdG9ycyhiaW8pIDogMDsKIAkJYmxrX2ZpbGxf cndicyhfX2VudHJ5LT5yd2JzLAogCQkJICAgICAgYmlvID8gYmlvLT5iaV9ydyA6IDAsIF9fZW50 cnktPm5yX3NlY3Rvcik7CkBAIC01MzgsOSArNTM4LDkgQEAgVFJBQ0VfRVZFTlQoYmxvY2tfc3Bs aXQsCiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+ YmRfZGV2OwotCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9zZWN0b3I7CisJCV9fZW50cnkt PnNlY3RvcgkJPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LT5uZXdfc2VjdG9y CT0gbmV3X3NlY3RvcjsKLQkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3 LCBiaW8tPmJpX3NpemUpOworCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+Ymlf cncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAkJbWVtY3B5KF9fZW50cnktPmNvbW0sIGN1cnJl bnQtPmNvbW0sIFRBU0tfQ09NTV9MRU4pOwogCSksCiAKQEAgLTU3OSwxMSArNTc5LDExIEBAIFRS QUNFX0VWRU5UKGJsb2NrX2Jpb19yZW1hcCwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5 LT5kZXYJCT0gYmlvLT5iaV9iZGV2LT5iZF9kZXY7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8t PmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7 CiAJCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJpbyk7CiAJCV9fZW50cnktPm9s ZF9kZXYJPSBkZXY7CiAJCV9fZW50cnktPm9sZF9zZWN0b3IJPSBmcm9tOwotCQlibGtfZmlsbF9y d2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+Ymlfc2l6ZSk7CisJCWJsa19maWxs X3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwog CSksCiAKIAlUUF9wcmludGsoIiVkLCVkICVzICVsbHUgKyAldSA8LSAoJWQsJWQpICVsbHUiLApk aWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oIGIvaW5jbHVkZS90cmFjZS9l dmVudHMvZjJmcy5oCmluZGV4IDUyYWU1NDguLmE5NTMxYWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dHJhY2UvZXZlbnRzL2YyZnMuaAorKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmgKQEAg LTYxMSw4ICs2MTEsOCBAQCBUUkFDRV9FVkVOVChmMmZzX2RvX3N1Ym1pdF9iaW8sCiAJCV9fZW50 cnktPmRldgkJPSBzYi0+c19kZXY7CiAJCV9fZW50cnktPmJ0eXBlCQk9IGJ0eXBlOwogCQlfX2Vu dHJ5LT5zeW5jCQk9IHN5bmM7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsK LQkJX19lbnRyeS0+c2l6ZQkJPSBiaW8tPmJpX3NpemU7CisJCV9fZW50cnktPnNlY3RvcgkJPSBi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yOworCQlfX2VudHJ5LT5zaXplCQk9IGJpby0+YmlfaXRlci5i aV9zaXplOwogCSksCiAKIAlUUF9wcmludGsoImRldiA9ICglZCwlZCksIHR5cGUgPSAlcywgaW8g PSAlcywgc2VjdG9yID0gJWxsZCwgc2l6ZSA9ICV1IiwKZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3dl ci9ibG9ja19pby5jIGIva2VybmVsL3Bvd2VyL2Jsb2NrX2lvLmMKaW5kZXggZDA5ZGQxMC4uOWE1 OGJjMiAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL2Jsb2NrX2lvLmMKKysrIGIva2VybmVsL3Bv d2VyL2Jsb2NrX2lvLmMKQEAgLTMyLDcgKzMyLDcgQEAgc3RhdGljIGludCBzdWJtaXQoaW50IHJ3 LCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsCiAJc3RydWN0IGJp byAqYmlvOwogCiAJYmlvID0gYmlvX2FsbG9jKF9fR0ZQX1dBSVQgfCBfX0dGUF9ISUdILCAxKTsK LQliaW8tPmJpX3NlY3RvciA9IHNlY3RvcjsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2Vj dG9yOwogCWJpby0+YmlfYmRldiA9IGJkZXY7CiAJYmlvLT5iaV9lbmRfaW8gPSBlbmRfc3dhcF9i aW9fcmVhZDsKIApkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL2Jsa3RyYWNlLmMgYi9rZXJuZWwv dHJhY2UvYmxrdHJhY2UuYwppbmRleCBiOGI4NTYwLi4yODE0YTNlIDEwMDY0NAotLS0gYS9rZXJu ZWwvdHJhY2UvYmxrdHJhY2UuYworKysgYi9rZXJuZWwvdHJhY2UvYmxrdHJhY2UuYwpAQCAtNzY0 LDggKzc2NCw4IEBAIHN0YXRpYyB2b2lkIGJsa19hZGRfdHJhY2VfYmlvKHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8sCiAJaWYgKCFlcnJvciAmJiAhYmlvX2ZsYWdnZWQo YmlvLCBCSU9fVVBUT0RBVEUpKQogCQllcnJvciA9IEVJTzsKIAotCV9fYmxrX2FkZF90cmFjZShi dCwgYmlvLT5iaV9zZWN0b3IsIGJpby0+Ymlfc2l6ZSwgYmlvLT5iaV9ydywgd2hhdCwKLQkJCWVy cm9yLCAwLCBOVUxMKTsKKwlfX2Jsa19hZGRfdHJhY2UoYnQsIGJpby0+YmlfaXRlci5iaV9zZWN0 b3IsIGJpby0+YmlfaXRlci5iaV9zaXplLAorCQkJYmlvLT5iaV9ydywgd2hhdCwgZXJyb3IsIDAs IE5VTEwpOwogfQogCiBzdGF0aWMgdm9pZCBibGtfYWRkX3RyYWNlX2Jpb19ib3VuY2Uodm9pZCAq aWdub3JlLApAQCAtODY4LDggKzg2OCw5IEBAIHN0YXRpYyB2b2lkIGJsa19hZGRfdHJhY2Vfc3Bs aXQodm9pZCAqaWdub3JlLAogCWlmIChidCkgewogCQlfX2JlNjQgcnBkdSA9IGNwdV90b19iZTY0 KHBkdSk7CiAKLQkJX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX3NlY3RvciwgYmlvLT5iaV9z aXplLCBiaW8tPmJpX3J3LAotCQkJCUJMS19UQV9TUExJVCwgIWJpb19mbGFnZ2VkKGJpbywgQklP X1VQVE9EQVRFKSwKKwkJX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y LAorCQkJCWJpby0+YmlfaXRlci5iaV9zaXplLCBiaW8tPmJpX3J3LCBCTEtfVEFfU1BMSVQsCisJ CQkJIWJpb19mbGFnZ2VkKGJpbywgQklPX1VQVE9EQVRFKSwKIAkJCQlzaXplb2YocnBkdSksICZy cGR1KTsKIAl9CiB9CkBAIC05MDEsOSArOTAyLDkgQEAgc3RhdGljIHZvaWQgYmxrX2FkZF90cmFj ZV9iaW9fcmVtYXAodm9pZCAqaWdub3JlLAogCXIuZGV2aWNlX3RvICAgPSBjcHVfdG9fYmUzMihi aW8tPmJpX2JkZXYtPmJkX2Rldik7CiAJci5zZWN0b3JfZnJvbSA9IGNwdV90b19iZTY0KGZyb20p OwogCi0JX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX3NlY3RvciwgYmlvLT5iaV9zaXplLCBi aW8tPmJpX3J3LAotCQkJQkxLX1RBX1JFTUFQLCAhYmlvX2ZsYWdnZWQoYmlvLCBCSU9fVVBUT0RB VEUpLAotCQkJc2l6ZW9mKHIpLCAmcik7CisJX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSwKKwkJCWJpby0+YmlfcncsIEJMS19U QV9SRU1BUCwKKwkJCSFiaW9fZmxhZ2dlZChiaW8sIEJJT19VUFRPREFURSksIHNpemVvZihyKSwg JnIpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL21tL3BhZ2VfaW8uYyBiL21tL3BhZ2VfaW8uYwpp bmRleCBiYTA1YjY0Li44YjE0ZWYyIDEwMDY0NAotLS0gYS9tbS9wYWdlX2lvLmMKKysrIGIvbW0v cGFnZV9pby5jCkBAIC0zMSwxMyArMzEsMTMgQEAgc3RhdGljIHN0cnVjdCBiaW8gKmdldF9zd2Fw X2JpbyhnZnBfdCBnZnBfZmxhZ3MsCiAKIAliaW8gPSBiaW9fYWxsb2MoZ2ZwX2ZsYWdzLCAxKTsK IAlpZiAoYmlvKSB7Ci0JCWJpby0+Ymlfc2VjdG9yID0gbWFwX3N3YXBfcGFnZShwYWdlLCAmYmlv LT5iaV9iZGV2KTsKLQkJYmlvLT5iaV9zZWN0b3IgPDw9IFBBR0VfU0hJRlQgLSA5OworCQliaW8t PmJpX2l0ZXIuYmlfc2VjdG9yID0gbWFwX3N3YXBfcGFnZShwYWdlLCAmYmlvLT5iaV9iZGV2KTsK KwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PD0gUEFHRV9TSElGVCAtIDk7CiAJCWJpby0+Ymlf aW9fdmVjWzBdLmJ2X3BhZ2UgPSBwYWdlOwogCQliaW8tPmJpX2lvX3ZlY1swXS5idl9sZW4gPSBQ QUdFX1NJWkU7CiAJCWJpby0+YmlfaW9fdmVjWzBdLmJ2X29mZnNldCA9IDA7CiAJCWJpby0+Ymlf dmNudCA9IDE7Ci0JCWJpby0+Ymlfc2l6ZSA9IFBBR0VfU0laRTsKKwkJYmlvLT5iaV9pdGVyLmJp X3NpemUgPSBQQUdFX1NJWkU7CiAJCWJpby0+YmlfZW5kX2lvID0gZW5kX2lvOwogCX0KIAlyZXR1 cm4gYmlvOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGVuZF9zd2FwX2Jpb193cml0ZShzdHJ1Y3Qg YmlvICpiaW8sIGludCBlcnIpCiAJCXByaW50ayhLRVJOX0FMRVJUICJXcml0ZS1lcnJvciBvbiBz d2FwLWRldmljZSAoJXU6JXU6JUx1KVxuIiwKIAkJCQlpbWFqb3IoYmlvLT5iaV9iZGV2LT5iZF9p bm9kZSksCiAJCQkJaW1pbm9yKGJpby0+YmlfYmRldi0+YmRfaW5vZGUpLAotCQkJCSh1bnNpZ25l ZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IpOworCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpYmlv LT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAJCUNsZWFyUGFnZVJlY2xhaW0ocGFnZSk7CiAJfQogCWVu ZF9wYWdlX3dyaXRlYmFjayhwYWdlKTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBlbmRfc3dhcF9i aW9fcmVhZChzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnIpCiAJCXByaW50ayhLRVJOX0FMRVJUICJS ZWFkLWVycm9yIG9uIHN3YXAtZGV2aWNlICgldToldTolTHUpXG4iLAogCQkJCWltYWpvcihiaW8t PmJpX2JkZXYtPmJkX2lub2RlKSwKIAkJCQlpbWlub3IoYmlvLT5iaV9iZGV2LT5iZF9pbm9kZSks Ci0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQkJKHVuc2lnbmVk IGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJZ290byBvdXQ7CiAJfQogCi0t IAoxLjguNC5yYzEKCi0tCmRtLWRldmVsIG1haWxpbmcgbGlzdApkbS1kZXZlbEByZWRoYXQuY29t Cmh0dHBzOi8vd3d3LnJlZGhhdC5jb20vbWFpbG1hbi9saXN0aW5mby9kbS1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kent Overstreet Subject: [PATCH 04/22] block: Abstract out bvec iterator Date: Wed, 7 Aug 2013 14:54:13 -0700 Message-ID: <1375912471-5106-5-git-send-email-kmo@daterainc.com> References: <1375912471-5106-1-git-send-email-kmo@daterainc.com> Reply-To: device-mapper development Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Herton Ronaldo Krzesinski , Mike Snitzer , Benjamin Herrenschmidt , Paul Mackerras , Pavel Machek , Joshua Morris , Geert Uytterhoeven , Mel Gorman , Nitin Gupta , Len Brown , Sage Weil , Joern Engel , Rusty Russell , Sunil Mushran , Kent Overstreet , Alexander Viro , Yehuda Sadeh , Geoff Levand , Jiri Kosina , linux-kernel@vger.kernel.org, Greg Kroah-Hartman In-Reply-To: <1375912471-5106-1-git-send-email-kmo@daterainc.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com 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 LmRlPgotLS0KIERvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dCAgICAgIHwgIDcgKystCiBh cmNoL202OGsvZW11L25mYmxvY2suYyAgICAgICAgICAgICB8ICAyICstCiBhcmNoL3Bvd2VycGMv c3lzZGV2L2F4b25yYW0uYyAgICAgICB8ICAzICstCiBibG9jay9ibGstY29yZS5jICAgICAgICAg ICAgICAgICAgICB8IDM2ICsrKysrKystLS0tLS0tLQogYmxvY2svYmxrLWZsdXNoLmMgICAgICAg ICAgICAgICAgICAgfCAgMiArLQogYmxvY2svYmxrLWxpYi5jICAgICAgICAgICAgICAgICAgICAg fCAxMiArKy0tLQogYmxvY2svYmxrLW1hcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNiArLS0K IGJsb2NrL2Jsay1tZXJnZS5jICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGJsb2NrL2Jsay10 aHJvdHRsZS5jICAgICAgICAgICAgICAgIHwgMTQgKysrLS0tCiBibG9jay9lbGV2YXRvci5jICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2Jsb2NrL2FvZS9hb2VjbWQuYyAgICAg ICAgICB8ICA2ICstLQogZHJpdmVycy9ibG9jay9icmQuYyAgICAgICAgICAgICAgICAgfCAgNCAr LQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMgICAgfCAgMiArLQogZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfYml0bWFwLmMgICAgfCAgMiArLQogZHJpdmVycy9ibG9jay9kcmJkL2Ry YmRfcmVjZWl2ZXIuYyAgfCAgNiArLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jICAg ICAgIHwgIDYgKy0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaCAgICAgICB8ICAyICst CiBkcml2ZXJzL2Jsb2NrL2Zsb3BweS5jICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2Js b2NrL2xvb3AuYyAgICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2Jsb2NrL210aXAzMnh4 L210aXAzMnh4LmMgICB8ICA3ICstLQogZHJpdmVycy9ibG9jay9udm1lLWNvcmUuYyAgICAgICAg ICAgfCAyNSArKysrKy0tLS0tCiBkcml2ZXJzL2Jsb2NrL3BrdGNkdmQuYyAgICAgICAgICAgICB8 IDUxICsrKysrKysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9ibG9jay9wczNkaXNrLmMgICAgICAg ICAgICAgfCAgMiArLQogZHJpdmVycy9ibG9jay9yYmQuYyAgICAgICAgICAgICAgICAgfCAyMSAr KysrKy0tLS0KIGRyaXZlcnMvYmxvY2svcnN4eC9kZXYuYyAgICAgICAgICAgIHwgIDYgKy0tCiBk cml2ZXJzL2Jsb2NrL3JzeHgvZG1hLmMgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2Jsb2Nr L3VtZW0uYyAgICAgICAgICAgICAgICB8ICA5ICsrLS0KIGRyaXZlcnMvYmxvY2svdmlydGlvX2Js ay5jICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5j IHwgIDIgKy0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMgICAgICAgIHwgIDIgKy0KIGRy aXZlcnMvbWQvYmNhY2hlL2FsbG9jLmMgICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvbWQvYmNh Y2hlL2J0cmVlLmMgICAgICAgICAgIHwgMTcgKysrLS0tLQogZHJpdmVycy9tZC9iY2FjaGUvZGVi dWcuYyAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9iY2FjaGUvaW8uYyAgICAgICAgICAg ICAgfCAyNiArKysrKy0tLS0tLQogZHJpdmVycy9tZC9iY2FjaGUvam91cm5hbC5jICAgICAgICAg fCAxMiArKy0tLQogZHJpdmVycy9tZC9iY2FjaGUvbW92aW5nZ2MuYyAgICAgICAgfCAgNCArLQog ZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jICAgICAgICAgfCA1MCArKysrKysrKysrLS0tLS0t LS0tLQogZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYyAgICAgICAgICAgfCAxNiArKystLS0tCiBk cml2ZXJzL21kL2JjYWNoZS91dGlsLmMgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL21kL2Jj YWNoZS93cml0ZWJhY2suYyAgICAgICB8ICA2ICstLQogZHJpdmVycy9tZC9iY2FjaGUvd3JpdGVi YWNrLmggICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9kbS1iaW8tcmVjb3JkLmggICAgICAgICAg fCAxMiArKy0tLQogZHJpdmVycy9tZC9kbS1idWZpby5jICAgICAgICAgICAgICAgfCAgMiArLQog ZHJpdmVycy9tZC9kbS1jYWNoZS1wb2xpY3ktbXEuYyAgICAgfCAgNCArLQogZHJpdmVycy9tZC9k bS1jYWNoZS10YXJnZXQuYyAgICAgICAgfCAxNiArKysrLS0tCiBkcml2ZXJzL21kL2RtLWNyeXB0 LmMgICAgICAgICAgICAgICB8IDIwICsrKystLS0tCiBkcml2ZXJzL21kL2RtLWRlbGF5LmMgICAg ICAgICAgICAgICB8ICA3ICstLQogZHJpdmVycy9tZC9kbS1mbGFrZXkuYyAgICAgICAgICAgICAg fCAgNyArLS0KIGRyaXZlcnMvbWQvZG0taW8uYyAgICAgICAgICAgICAgICAgIHwgIDcgKy0tCiBk cml2ZXJzL21kL2RtLWxpbmVhci5jICAgICAgICAgICAgICB8ICAzICstCiBkcml2ZXJzL21kL2Rt LXJhaWQxLmMgICAgICAgICAgICAgICB8IDE2ICsrKy0tLS0KIGRyaXZlcnMvbWQvZG0tcmVnaW9u LWhhc2guYyAgICAgICAgIHwgIDMgKy0KIGRyaXZlcnMvbWQvZG0tc25hcC5jICAgICAgICAgICAg ICAgIHwgMTMgKysrLS0tCiBkcml2ZXJzL21kL2RtLXN0cmlwZS5jICAgICAgICAgICAgICB8IDEz ICsrKystLQogZHJpdmVycy9tZC9kbS1zd2l0Y2guYyAgICAgICAgICAgICAgfCAgNCArLQogZHJp dmVycy9tZC9kbS10aGluLmMgICAgICAgICAgICAgICAgfCAyMyArKysrKystLS0tCiBkcml2ZXJz L21kL2RtLXZlcml0eS5jICAgICAgICAgICAgICB8ICA5ICsrLS0KIGRyaXZlcnMvbWQvZG0uYyAg ICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKystLS0tCiBkcml2ZXJzL21kL2ZhdWx0eS5jICAg ICAgICAgICAgICAgICB8IDE5ICsrKysrLS0tCiBkcml2ZXJzL21kL2xpbmVhci5jICAgICAgICAg ICAgICAgICB8IDEyICsrLS0tCiBkcml2ZXJzL21kL21kLmMgICAgICAgICAgICAgICAgICAgICB8 IDEwICsrLS0KIGRyaXZlcnMvbWQvbXVsdGlwYXRoLmMgICAgICAgICAgICAgIHwgMTMgKysrLS0t CiBkcml2ZXJzL21kL3JhaWQwLmMgICAgICAgICAgICAgICAgICB8IDE2ICsrKystLS0KIGRyaXZl cnMvbWQvcmFpZDEuYyAgICAgICAgICAgICAgICAgIHwgNjMgKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQogZHJpdmVycy9tZC9yYWlkMTAuYyAgICAgICAgICAgICAgICAgfCA5MSArKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL21kL3JhaWQ1LmMgICAgICAgICAg ICAgICAgICB8IDcyICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3MzOTAv YmxvY2svZGNzc2Jsay5jICAgICAgICB8ICA1ICstCiBkcml2ZXJzL3MzOTAvYmxvY2sveHByYW0u YyAgICAgICAgICB8ICA5ICsrLS0KIGRyaXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jICAg IHwgIDIgKy0KIGRyaXZlcnMvc3RhZ2luZy96cmFtL3pyYW1fZHJ2LmMgICAgIHwgMTQgKysrLS0t CiBkcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9pYmxvY2suYyB8ICAyICstCiBmcy9iaW8taW50 ZWdyaXR5LmMgICAgICAgICAgICAgICAgICB8ICA4ICsrLS0KIGZzL2Jpby5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgNTYgKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGZzL2J0cmZzL2No ZWNrLWludGVncml0eS5jICAgICAgICAgIHwgMTAgKystLQogZnMvYnRyZnMvY29tcHJlc3Npb24u YyAgICAgICAgICAgICAgfCAxNyArKystLS0tCiBmcy9idHJmcy9leHRlbnRfaW8uYyAgICAgICAg ICAgICAgICB8IDE2ICsrKy0tLS0KIGZzL2J0cmZzL2ZpbGUtaXRlbS5jICAgICAgICAgICAgICAg IHwgMTUgKysrLS0tCiBmcy9idHJmcy9pbm9kZS5jICAgICAgICAgICAgICAgICAgICB8IDE5ICsr KystLS0tCiBmcy9idHJmcy9yYWlkNTYuYyAgICAgICAgICAgICAgICAgICB8IDIyICsrKystLS0t LQogZnMvYnRyZnMvc2NydWIuYyAgICAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMvYnRy ZnMvdm9sdW1lcy5jICAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMvYnVmZmVyLmMgICAg ICAgICAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMvZGlyZWN0LWlvLmMgICAgICAgICAg ICAgICAgICAgICAgfCAgNCArLQogZnMvZXh0NC9wYWdlLWlvLmMgICAgICAgICAgICAgICAgICAg fCAgNCArLQogZnMvZjJmcy9kYXRhLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMv ZjJmcy9zZWdtZW50LmMgICAgICAgICAgICAgICAgICAgfCAgMyArLQogZnMvZ2ZzMi9sb3BzLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvZ2ZzMi9vcHNfZnN0eXBlLmMgICAgICAg ICAgICAgICAgfCAgMiArLQogZnMvaGZzcGx1cy93cmFwcGVyLmMgICAgICAgICAgICAgICAgfCAg MiArLQogZnMvamZzL2pmc19sb2dtZ3IuYyAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMv amZzL2pmc19tZXRhcGFnZS5jICAgICAgICAgICAgICAgfCAgOSArKy0tCiBmcy9sb2dmcy9kZXZf YmRldi5jICAgICAgICAgICAgICAgICB8IDIwICsrKystLS0tCiBmcy9tcGFnZS5jICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9uZnMvYmxvY2tsYXlvdXQvYmxvY2tsYXlvdXQu YyAgICB8ICA5ICsrLS0KIGZzL25pbGZzMi9zZWdidWYuYyAgICAgICAgICAgICAgICAgIHwgIDMg Ky0KIGZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMgICAgICAgIHwgIDIgKy0KIGZzL3hmcy94 ZnNfYW9wcy5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL3hmcy94ZnNfYnVmLmMgICAg ICAgICAgICAgICAgICAgIHwgIDQgKy0KIGluY2x1ZGUvbGludXgvYmlvLmggICAgICAgICAgICAg ICAgIHwgMTYgKysrLS0tLQogaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaCAgICAgICAgICAgfCAx OSArKysrKy0tLQogaW5jbHVkZS90cmFjZS9ldmVudHMvYmNhY2hlLmggICAgICAgfCAyNiArKysr Ky0tLS0tLQogaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaCAgICAgICAgfCAyNiArKysrKy0t LS0tLQogaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oICAgICAgICAgfCAgNCArLQoga2VybmVs L3Bvd2VyL2Jsb2NrX2lvLmMgICAgICAgICAgICAgfCAgMiArLQoga2VybmVsL3RyYWNlL2Jsa3Ry YWNlLmMgICAgICAgICAgICAgfCAxNSArKystLS0KIG1tL3BhZ2VfaW8uYyAgICAgICAgICAgICAg ICAgICAgICAgIHwgMTAgKystLQogMTA2IGZpbGVzIGNoYW5nZWQsIDY4OSBpbnNlcnRpb25zKCsp LCA2MTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW9k b2MudHh0IGIvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW9kb2MudHh0CmluZGV4IDhkZjVlOGUuLjIx MDFlNzEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dAorKysgYi9E b2N1bWVudGF0aW9uL2Jsb2NrL2Jpb2RvYy50eHQKQEAgLTQ0NywxNCArNDQ3LDEzIEBAIHN0cnVj dCBiaW9fdmVjIHsKICAqIG1haW4gdW5pdCBvZiBJL08gZm9yIHRoZSBibG9jayBsYXllciBhbmQg bG93ZXIgbGF5ZXJzIChpZSBkcml2ZXJzKQogICovCiBzdHJ1Y3QgYmlvIHsKLSAgICAgICBzZWN0 b3JfdCAgICAgICAgICAgIGJpX3NlY3RvcjsKICAgICAgICBzdHJ1Y3QgYmlvICAgICAgICAgICpi aV9uZXh0OyAgICAvKiByZXF1ZXN0IHF1ZXVlIGxpbmsgKi8KICAgICAgICBzdHJ1Y3QgYmxvY2tf ZGV2aWNlICpiaV9iZGV2OwkvKiB0YXJnZXQgZGV2aWNlICovCiAgICAgICAgdW5zaWduZWQgbG9u ZyAgICAgICBiaV9mbGFnczsgICAgLyogc3RhdHVzLCBjb21tYW5kLCBldGMgKi8KICAgICAgICB1 bnNpZ25lZCBsb25nICAgICAgIGJpX3J3OyAgICAgICAvKiBsb3cgYml0czogci93LCBoaWdoOiBw cmlvcml0eSAqLwogCiAgICAgICAgdW5zaWduZWQgaW50CWJpX3ZjbnQ7ICAgICAvKiBob3cgbWF5 IGJpb192ZWMncyAqLwotICAgICAgIHVuc2lnbmVkIGludAliaV9pZHg7CQkvKiBjdXJyZW50IGlu ZGV4IGludG8gYmlvX3ZlYyBhcnJheSAqLworICAgICAgIHN0cnVjdCBidmVjX2l0ZXIJYmlfaXRl cjsJLyogY3VycmVudCBpbmRleCBpbnRvIGJpb192ZWMgYXJyYXkgKi8KIAogICAgICAgIHVuc2ln bmVkIGludAliaV9zaXplOyAgICAgLyogdG90YWwgc2l6ZSBpbiBieXRlcyAqLwogICAgICAgIHVu c2lnbmVkIHNob3J0IAliaV9waHlzX3NlZ21lbnRzOyAvKiBzZWdtZW50cyBhZnRlciBwaHlzYWRk ciBjb2FsZXNjZSovCkBAIC00ODAsNyArNDc5LDcgQEAgV2l0aCB0aGlzIG11bHRpcGFnZSBiaW8g ZGVzaWduOgogLSBDb2RlIHRoYXQgdHJhdmVyc2VzIHRoZSByZXEgbGlzdCBjYW4gZmluZCBhbGwg dGhlIHNlZ21lbnRzIG9mIGEgYmlvCiAgIGJ5IHVzaW5nIHJxX2Zvcl9lYWNoX3NlZ21lbnQuICBU aGlzIGhhbmRsZXMgdGhlIGZhY3QgdGhhdCBhIHJlcXVlc3QKICAgaGFzIG11bHRpcGxlIGJpb3Ms IGVhY2ggb2Ygd2hpY2ggY2FuIGhhdmUgbXVsdGlwbGUgc2VnbWVudHMuCi0tIERyaXZlcnMgd2hp Y2ggY2FuJ3QgcHJvY2VzcyBhIGxhcmdlIGJpbyBpbiBvbmUgc2hvdCBjYW4gdXNlIHRoZSBiaV9p ZHgKKy0gRHJpdmVycyB3aGljaCBjYW4ndCBwcm9jZXNzIGEgbGFyZ2UgYmlvIGluIG9uZSBzaG90 IGNhbiB1c2UgdGhlIGJpX2l0ZXIKICAgZmllbGQgdG8ga2VlcCB0cmFjayBvZiB0aGUgbmV4dCBi aW9fdmVjIGVudHJ5IHRvIHByb2Nlc3MuCiAgIChlLmcgYSAxTUIgYmlvX3ZlYyBuZWVkcyB0byBi ZSBoYW5kbGVkIGluIG1heCAxMjhrQiBjaHVua3MgZm9yIElERSkKICAgW1RCRDogU2hvdWxkIHBy ZWZlcmFibHkgYWxzbyBoYXZlIGEgYmlfdm9mZnNldCBhbmQgYmlfdmxlbiB0byBhdm9pZCBtb2Rp ZnlpbmcKQEAgLTU4OSw3ICs1ODgsNyBAQCBkcml2ZXIgc2hvdWxkIG5vdCBtb2RpZnkgdGhlc2Ug dmFsdWVzLiBUaGUgYmxvY2sgbGF5ZXIgc2V0cyB1cCB0aGUKIG5yX3NlY3RvcnMgYW5kIGN1cnJl bnRfbnJfc2VjdG9ycyBmaWVsZHMgKGJhc2VkIG9uIHRoZSBjb3JyZXNwb25kaW5nCiBoYXJkX3h4 eCB2YWx1ZXMgYW5kIHRoZSBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQpIGFuZCB1cGRhdGVz IGl0IG9uCiBldmVyeSB0cmFuc2ZlciB0aGF0IGludm9rZXMgZW5kX3RoYXRfcmVxdWVzdF9maXJz dC4gSXQgZG9lcyB0aGUgc2FtZSBmb3IgdGhlCi1idWZmZXIsIGJpbywgYmlvLT5iaV9pZHggZmll bGRzIHRvby4KK2J1ZmZlciwgYmlvLCBiaW8tPmJpX2l0ZXIgZmllbGRzIHRvby4KIAogVGhlIGJ1 ZmZlciBmaWVsZCBpcyBqdXN0IGEgdmlydHVhbCBhZGRyZXNzIG1hcHBpbmcgb2YgdGhlIGN1cnJl bnQgc2VnbWVudAogb2YgdGhlIGkvbyBidWZmZXIgaW4gY2FzZXMgd2hlcmUgdGhlIGJ1ZmZlciBy ZXNpZGVzIGluIGxvdy1tZW1vcnkuIEZvciBoaWdoCmRpZmYgLS1naXQgYS9hcmNoL202OGsvZW11 L25mYmxvY2suYyBiL2FyY2gvbTY4ay9lbXUvbmZibG9jay5jCmluZGV4IGUzMDExMzMuLjkwNzBk NmMgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9lbXUvbmZibG9jay5jCisrKyBiL2FyY2gvbTY4ay9l bXUvbmZibG9jay5jCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyB2b2lkIG5maGRfbWFrZV9yZXF1 ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxdWV1ZSwgc3RydWN0IGJpbyAqYmlvKQogCXN0cnVj dCBuZmhkX2RldmljZSAqZGV2ID0gcXVldWUtPnF1ZXVlZGF0YTsKIAlzdHJ1Y3QgYmlvX3ZlYyAq YnZlYzsKIAlpbnQgaSwgZGlyLCBsZW4sIHNoaWZ0OwotCXNlY3Rvcl90IHNlYyA9IGJpby0+Ymlf c2VjdG9yOworCXNlY3Rvcl90IHNlYyA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAKIAlkaXIg PSBiaW9fZGF0YV9kaXIoYmlvKTsKIAlzaGlmdCA9IGRldi0+YnNoaWZ0OwpkaWZmIC0tZ2l0IGEv YXJjaC9wb3dlcnBjL3N5c2Rldi9heG9ucmFtLmMgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2F4b25y YW0uYwppbmRleCAxYzE2MTQxLi5mMzNiY2JhIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvc3lz ZGV2L2F4b25yYW0uYworKysgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2F4b25yYW0uYwpAQCAtMTEz LDcgKzExMyw4IEBAIGF4b25fcmFtX21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cXVldWUsIHN0cnVjdCBiaW8gKmJpbykKIAl1bnNpZ25lZCBpbnQgdHJhbnNmZXJlZDsKIAl1bnNp Z25lZCBzaG9ydCBpZHg7CiAKLQlwaHlzX21lbSA9IGJhbmstPmlvX2FkZHIgKyAoYmlvLT5iaV9z ZWN0b3IgPDwgQVhPTl9SQU1fU0VDVE9SX1NISUZUKTsKKwlwaHlzX21lbSA9IGJhbmstPmlvX2Fk ZHIgKyAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PAorCQkJCSAgICBBWE9OX1JBTV9TRUNUT1Jf U0hJRlQpOwogCXBoeXNfZW5kID0gYmFuay0+aW9fYWRkciArIGJhbmstPnNpemU7CiAJdHJhbnNm ZXJlZCA9IDA7CiAJYmlvX2Zvcl9lYWNoX3NlZ21lbnQodmVjLCBiaW8sIGlkeCkgewpkaWZmIC0t Z2l0IGEvYmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmMKaW5kZXggOTNhMThkMS4u MGVjMTM0MDkgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1jb3JlLmMKKysrIGIvYmxvY2svYmxrLWNv cmUuYwpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyB2b2lkIHJlcV9iaW9fZW5kaW8oc3RydWN0 IHJlcXVlc3QgKnJxLCBzdHJ1Y3QgYmlvICpiaW8sCiAJYmlvX2FkdmFuY2UoYmlvLCBuYnl0ZXMp OwogCiAJLyogZG9uJ3QgYWN0dWFsbHkgZmluaXNoIGJpbyBpZiBpdCdzIHBhcnQgb2YgZmx1c2gg c2VxdWVuY2UgKi8KLQlpZiAoYmlvLT5iaV9zaXplID09IDAgJiYgIShycS0+Y21kX2ZsYWdzICYg UkVRX0ZMVVNIX1NFUSkpCisJaWYgKGJpby0+YmlfaXRlci5iaV9zaXplID09IDAgJiYgIShycS0+ Y21kX2ZsYWdzICYgUkVRX0ZMVVNIX1NFUSkpCiAJCWJpb19lbmRpbyhiaW8sIGVycm9yKTsKIH0K IApAQCAtMTMzMyw3ICsxMzMzLDcgQEAgdm9pZCBibGtfYWRkX3JlcXVlc3RfcGF5bG9hZChzdHJ1 Y3QgcmVxdWVzdCAqcnEsIHN0cnVjdCBwYWdlICpwYWdlLAogCWJpby0+YmlfaW9fdmVjLT5idl9v ZmZzZXQgPSAwOwogCWJpby0+YmlfaW9fdmVjLT5idl9sZW4gPSBsZW47CiAKLQliaW8tPmJpX3Np emUgPSBsZW47CisJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBsZW47CiAJYmlvLT5iaV92Y250ID0g MTsKIAliaW8tPmJpX3BoeXNfc2VnbWVudHMgPSAxOwogCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBz dGF0aWMgYm9vbCBiaW9fYXR0ZW1wdF9iYWNrX21lcmdlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgcmVxdWVzdCAqcmVxLAogCiAJcmVxLT5iaW90YWlsLT5iaV9uZXh0ID0gYmlvOwog CXJlcS0+YmlvdGFpbCA9IGJpbzsKLQlyZXEtPl9fZGF0YV9sZW4gKz0gYmlvLT5iaV9zaXplOwor CXJlcS0+X19kYXRhX2xlbiArPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAlyZXEtPmlvcHJpbyA9 IGlvcHJpb19iZXN0KHJlcS0+aW9wcmlvLCBiaW9fcHJpbyhiaW8pKTsKIAogCWRyaXZlX3N0YXRf YWNjdChyZXEsIDApOwpAQCAtMTM4Nyw4ICsxMzg3LDggQEAgc3RhdGljIGJvb2wgYmlvX2F0dGVt cHRfZnJvbnRfbWVyZ2Uoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCiAJICogbm90IHRvdWNoIHJl cS0+YnVmZmVyIGVpdGhlci4uLgogCSAqLwogCXJlcS0+YnVmZmVyID0gYmlvX2RhdGEoYmlvKTsK LQlyZXEtPl9fc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7Ci0JcmVxLT5fX2RhdGFfbGVuICs9IGJp by0+Ymlfc2l6ZTsKKwlyZXEtPl9fc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwly ZXEtPl9fZGF0YV9sZW4gKz0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAJcmVxLT5pb3ByaW8gPSBp b3ByaW9fYmVzdChyZXEtPmlvcHJpbywgYmlvX3ByaW8oYmlvKSk7CiAKIAlkcml2ZV9zdGF0X2Fj Y3QocmVxLCAwKTsKQEAgLTE0NTcsNyArMTQ1Nyw3IEBAIHZvaWQgaW5pdF9yZXF1ZXN0X2Zyb21f YmlvKHN0cnVjdCByZXF1ZXN0ICpyZXEsIHN0cnVjdCBiaW8gKmJpbykKIAkJcmVxLT5jbWRfZmxh Z3MgfD0gUkVRX0ZBSUxGQVNUX01BU0s7CiAKIAlyZXEtPmVycm9ycyA9IDA7Ci0JcmVxLT5fX3Nl Y3RvciA9IGJpby0+Ymlfc2VjdG9yOworCXJlcS0+X19zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yOwogCXJlcS0+aW9wcmlvID0gYmlvX3ByaW8oYmlvKTsKIAlibGtfcnFfYmlvX3ByZXAo cmVxLT5xLCByZXEsIGJpbyk7CiB9CkBAIC0xNTgzLDEyICsxNTgzLDEyIEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBibGtfcGFydGl0aW9uX3JlbWFwKHN0cnVjdCBiaW8gKmJpbykKIAlpZiAoYmlvX3Nl Y3RvcnMoYmlvKSAmJiBiZGV2ICE9IGJkZXYtPmJkX2NvbnRhaW5zKSB7CiAJCXN0cnVjdCBoZF9z dHJ1Y3QgKnAgPSBiZGV2LT5iZF9wYXJ0OwogCi0JCWJpby0+Ymlfc2VjdG9yICs9IHAtPnN0YXJ0 X3NlY3Q7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgKz0gcC0+c3RhcnRfc2VjdDsKIAkJYmlv LT5iaV9iZGV2ID0gYmRldi0+YmRfY29udGFpbnM7CiAKIAkJdHJhY2VfYmxvY2tfYmlvX3JlbWFw KGJkZXZfZ2V0X3F1ZXVlKGJpby0+YmlfYmRldiksIGJpbywKIAkJCQkgICAgICBiZGV2LT5iZF9k ZXYsCi0JCQkJICAgICAgYmlvLT5iaV9zZWN0b3IgLSBwLT5zdGFydF9zZWN0KTsKKwkJCQkgICAg ICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIC0gcC0+c3RhcnRfc2VjdCk7CiAJfQogfQogCkBAIC0x NjU0LDcgKzE2NTQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBiaW9fY2hlY2tfZW9kKHN0cnVjdCBi aW8gKmJpbywgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMpCiAJLyogVGVzdCBkZXZpY2Ugb3IgcGFy dGl0aW9uIHNpemUsIHdoZW4ga25vd24uICovCiAJbWF4c2VjdG9yID0gaV9zaXplX3JlYWQoYmlv LT5iaV9iZGV2LT5iZF9pbm9kZSkgPj4gOTsKIAlpZiAobWF4c2VjdG9yKSB7Ci0JCXNlY3Rvcl90 IHNlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCQlzZWN0b3JfdCBzZWN0b3IgPSBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yOwogCiAJCWlmIChtYXhzZWN0b3IgPCBucl9zZWN0b3JzIHx8IG1heHNlY3Rv ciAtIG5yX3NlY3RvcnMgPCBzZWN0b3IpIHsKIAkJCS8qCkBAIC0xNjkwLDcgKzE2OTAsNyBAQCBn ZW5lcmljX21ha2VfcmVxdWVzdF9jaGVja3Moc3RydWN0IGJpbyAqYmlvKQogCQkgICAgICAgImdl bmVyaWNfbWFrZV9yZXF1ZXN0OiBUcnlpbmcgdG8gYWNjZXNzICIKIAkJCSJub25leGlzdGVudCBi bG9jay1kZXZpY2UgJXMgKCVMdSlcbiIsCiAJCQliZGV2bmFtZShiaW8tPmJpX2JkZXYsIGIpLAot CQkJKGxvbmcgbG9uZykgYmlvLT5iaV9zZWN0b3IpOworCQkJKGxvbmcgbG9uZykgYmlvLT5iaV9p dGVyLmJpX3NlY3Rvcik7CiAJCWdvdG8gZW5kX2lvOwogCX0KIApAQCAtMTcwNCw5ICsxNzA0LDkg QEAgZ2VuZXJpY19tYWtlX3JlcXVlc3RfY2hlY2tzKHN0cnVjdCBiaW8gKmJpbykKIAl9CiAKIAlw YXJ0ID0gYmlvLT5iaV9iZGV2LT5iZF9wYXJ0OwotCWlmIChzaG91bGRfZmFpbF9yZXF1ZXN0KHBh cnQsIGJpby0+Ymlfc2l6ZSkgfHwKKwlpZiAoc2hvdWxkX2ZhaWxfcmVxdWVzdChwYXJ0LCBiaW8t PmJpX2l0ZXIuYmlfc2l6ZSkgfHwKIAkgICAgc2hvdWxkX2ZhaWxfcmVxdWVzdCgmcGFydF90b19k aXNrKHBhcnQpLT5wYXJ0MCwKLQkJCQliaW8tPmJpX3NpemUpKQorCQkJCWJpby0+YmlfaXRlci5i aV9zaXplKSkKIAkJZ290byBlbmRfaW87CiAKIAkvKgpAQCAtMTg2NSw3ICsxODY1LDcgQEAgdm9p ZCBzdWJtaXRfYmlvKGludCBydywgc3RydWN0IGJpbyAqYmlvKQogCQlpZiAocncgJiBXUklURSkg ewogCQkJY291bnRfdm1fZXZlbnRzKFBHUEdPVVQsIGNvdW50KTsKIAkJfSBlbHNlIHsKLQkJCXRh c2tfaW9fYWNjb3VudF9yZWFkKGJpby0+Ymlfc2l6ZSk7CisJCQl0YXNrX2lvX2FjY291bnRfcmVh ZChiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCQljb3VudF92bV9ldmVudHMoUEdQR0lOLCBjb3Vu dCk7CiAJCX0KIApAQCAtMTg3NCw3ICsxODc0LDcgQEAgdm9pZCBzdWJtaXRfYmlvKGludCBydywg c3RydWN0IGJpbyAqYmlvKQogCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzKCVkKTogJXMgYmxvY2sg JUx1IG9uICVzICgldSBzZWN0b3JzKVxuIiwKIAkJCWN1cnJlbnQtPmNvbW0sIHRhc2tfcGlkX25y KGN1cnJlbnQpLAogCQkJCShydyAmIFdSSVRFKSA/ICJXUklURSIgOiAiUkVBRCIsCi0JCQkJKHVu c2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3RvciwKKwkJCQkodW5zaWduZWQgbG9uZyBsb25n KWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJCQkJYmRldm5hbWUoYmlvLT5iaV9iZGV2LCBiKSwK IAkJCQljb3VudCk7CiAJCX0KQEAgLTIwMDcsNyArMjAwNyw3IEBAIHVuc2lnbmVkIGludCBibGtf cnFfZXJyX2J5dGVzKGNvbnN0IHN0cnVjdCByZXF1ZXN0ICpycSkKIAlmb3IgKGJpbyA9IHJxLT5i aW87IGJpbzsgYmlvID0gYmlvLT5iaV9uZXh0KSB7CiAJCWlmICgoYmlvLT5iaV9ydyAmIGZmKSAh PSBmZikKIAkJCWJyZWFrOwotCQlieXRlcyArPSBiaW8tPmJpX3NpemU7CisJCWJ5dGVzICs9IGJp by0+YmlfaXRlci5iaV9zaXplOwogCX0KIAogCS8qIHRoaXMgY291bGQgbGVhZCB0byBpbmZpbml0 ZSBsb29wICovCkBAIC0yMzM1LDkgKzIzMzUsOSBAQCBib29sIGJsa191cGRhdGVfcmVxdWVzdChz dHJ1Y3QgcmVxdWVzdCAqcmVxLCBpbnQgZXJyb3IsIHVuc2lnbmVkIGludCBucl9ieXRlcykKIAl0 b3RhbF9ieXRlcyA9IDA7CiAJd2hpbGUgKHJlcS0+YmlvKSB7CiAJCXN0cnVjdCBiaW8gKmJpbyA9 IHJlcS0+YmlvOwotCQl1bnNpZ25lZCBiaW9fYnl0ZXMgPSBtaW4oYmlvLT5iaV9zaXplLCBucl9i eXRlcyk7CisJCXVuc2lnbmVkIGJpb19ieXRlcyA9IG1pbihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSwg bnJfYnl0ZXMpOwogCi0JCWlmIChiaW9fYnl0ZXMgPT0gYmlvLT5iaV9zaXplKQorCQlpZiAoYmlv X2J5dGVzID09IGJpby0+YmlfaXRlci5iaV9zaXplKQogCQkJcmVxLT5iaW8gPSBiaW8tPmJpX25l eHQ7CiAKIAkJcmVxX2Jpb19lbmRpbyhyZXEsIGJpbywgYmlvX2J5dGVzLCBlcnJvcik7CkBAIC0y Njg2LDcgKzI2ODYsNyBAQCB2b2lkIGJsa19ycV9iaW9fcHJlcChzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSwgc3RydWN0IHJlcXVlc3QgKnJxLAogCQlycS0+bnJfcGh5c19zZWdtZW50cyA9IGJpb19w aHlzX3NlZ21lbnRzKHEsIGJpbyk7CiAJCXJxLT5idWZmZXIgPSBiaW9fZGF0YShiaW8pOwogCX0K LQlycS0+X19kYXRhX2xlbiA9IGJpby0+Ymlfc2l6ZTsKKwlycS0+X19kYXRhX2xlbiA9IGJpby0+ YmlfaXRlci5iaV9zaXplOwogCXJxLT5iaW8gPSBycS0+YmlvdGFpbCA9IGJpbzsKIAogCWlmIChi aW8tPmJpX2JkZXYpCmRpZmYgLS1naXQgYS9ibG9jay9ibGstZmx1c2guYyBiL2Jsb2NrL2Jsay1m bHVzaC5jCmluZGV4IGNjMmI4MjcuLjMyNDg5OTggMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1mbHVz aC5jCisrKyBiL2Jsb2NrL2Jsay1mbHVzaC5jCkBAIC00NDQsNyArNDQ0LDcgQEAgaW50IGJsa2Rl dl9pc3N1ZV9mbHVzaChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBnZnBfdCBnZnBfbWFzaywK IAkgKiBjb3BpZWQgZnJvbSBibGtfcnFfcG9zKHJxKS4KIAkgKi8KIAlpZiAoZXJyb3Jfc2VjdG9y KQotCQkqZXJyb3Jfc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7CisJCSplcnJvcl9zZWN0b3IgPSBi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCiAJaWYgKCFiaW9fZmxhZ2dlZChiaW8sIEJJT19VUFRP REFURSkpCiAJCXJldCA9IC1FSU87CmRpZmYgLS1naXQgYS9ibG9jay9ibGstbGliLmMgYi9ibG9j ay9ibGstbGliLmMKaW5kZXggZDZmNTBkNS4uMzI1MDYyMCAxMDA2NDQKLS0tIGEvYmxvY2svYmxr LWxpYi5jCisrKyBiL2Jsb2NrL2Jsay1saWIuYwpAQCAtMTEwLDEyICsxMTAsMTIgQEAgaW50IGJs a2Rldl9pc3N1ZV9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNl Y3RvciwKIAkJCXJlcV9zZWN0cyA9IGVuZF9zZWN0IC0gc2VjdG9yOwogCQl9CiAKLQkJYmlvLT5i aV9zZWN0b3IgPSBzZWN0b3I7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJ CWJpby0+YmlfZW5kX2lvID0gYmlvX2JhdGNoX2VuZF9pbzsKIAkJYmlvLT5iaV9iZGV2ID0gYmRl djsKIAkJYmlvLT5iaV9wcml2YXRlID0gJmJiOwogCi0JCWJpby0+Ymlfc2l6ZSA9IHJlcV9zZWN0 cyA8PCA5OworCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IHJlcV9zZWN0cyA8PCA5OwogCQlucl9z ZWN0cyAtPSByZXFfc2VjdHM7CiAJCXNlY3RvciA9IGVuZF9zZWN0OwogCkBAIC0xNzYsNyArMTc2 LDcgQEAgaW50IGJsa2Rldl9pc3N1ZV93cml0ZV9zYW1lKHN0cnVjdCBibG9ja19kZXZpY2UgKmJk ZXYsIHNlY3Rvcl90IHNlY3RvciwKIAkJCWJyZWFrOwogCQl9CiAKLQkJYmlvLT5iaV9zZWN0b3Ig PSBzZWN0b3I7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJCWJpby0+Ymlf ZW5kX2lvID0gYmlvX2JhdGNoX2VuZF9pbzsKIAkJYmlvLT5iaV9iZGV2ID0gYmRldjsKIAkJYmlv LT5iaV9wcml2YXRlID0gJmJiOwpAQCAtMTg2LDExICsxODYsMTEgQEAgaW50IGJsa2Rldl9pc3N1 ZV93cml0ZV9zYW1lKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwK IAkJYmlvLT5iaV9pb192ZWMtPmJ2X2xlbiA9IGJkZXZfbG9naWNhbF9ibG9ja19zaXplKGJkZXYp OwogCiAJCWlmIChucl9zZWN0cyA+IG1heF93cml0ZV9zYW1lX3NlY3RvcnMpIHsKLQkJCWJpby0+ Ymlfc2l6ZSA9IG1heF93cml0ZV9zYW1lX3NlY3RvcnMgPDwgOTsKKwkJCWJpby0+YmlfaXRlci5i aV9zaXplID0gbWF4X3dyaXRlX3NhbWVfc2VjdG9ycyA8PCA5OwogCQkJbnJfc2VjdHMgLT0gbWF4 X3dyaXRlX3NhbWVfc2VjdG9yczsKIAkJCXNlY3RvciArPSBtYXhfd3JpdGVfc2FtZV9zZWN0b3Jz OwogCQl9IGVsc2UgewotCQkJYmlvLT5iaV9zaXplID0gbnJfc2VjdHMgPDwgOTsKKwkJCWJpby0+ YmlfaXRlci5iaV9zaXplID0gbnJfc2VjdHMgPDwgOTsKIAkJCW5yX3NlY3RzID0gMDsKIAkJfQog CkBAIC0yNDIsNyArMjQyLDcgQEAgaW50IF9fYmxrZGV2X2lzc3VlX3plcm9vdXQoc3RydWN0IGJs b2NrX2RldmljZSAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yLAogCQkJYnJlYWs7CiAJCX0KIAotCQli aW8tPmJpX3NlY3RvciA9IHNlY3RvcjsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3Rv cjsKIAkJYmlvLT5iaV9iZGV2ICAgPSBiZGV2OwogCQliaW8tPmJpX2VuZF9pbyA9IGJpb19iYXRj aF9lbmRfaW87CiAJCWJpby0+YmlfcHJpdmF0ZSA9ICZiYjsKZGlmZiAtLWdpdCBhL2Jsb2NrL2Js ay1tYXAuYyBiL2Jsb2NrL2Jsay1tYXAuYwppbmRleCA2MjNlMWNkLi5hZTRhZTEwIDEwMDY0NAot LS0gYS9ibG9jay9ibGstbWFwLmMKKysrIGIvYmxvY2svYmxrLW1hcC5jCkBAIC0yMCw3ICsyMCw3 IEBAIGludCBibGtfcnFfYXBwZW5kX2JpbyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0 IHJlcXVlc3QgKnJxLAogCQlycS0+YmlvdGFpbC0+YmlfbmV4dCA9IGJpbzsKIAkJcnEtPmJpb3Rh aWwgPSBiaW87CiAKLQkJcnEtPl9fZGF0YV9sZW4gKz0gYmlvLT5iaV9zaXplOworCQlycS0+X19k YXRhX2xlbiArPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC03 Niw3ICs3Niw3IEBAIHN0YXRpYyBpbnQgX19ibGtfcnFfbWFwX3VzZXIoc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEsIHN0cnVjdCByZXF1ZXN0ICpycSwKIAogCXJldCA9IGJsa19ycV9hcHBlbmRfYmlv KHEsIHJxLCBiaW8pOwogCWlmICghcmV0KQotCQlyZXR1cm4gYmlvLT5iaV9zaXplOworCQlyZXR1 cm4gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAkvKiBpZiBpdCB3YXMgYm91Y25lZCB3ZSBtdXN0 IGNhbGwgdGhlIGVuZCBpbyBmdW5jdGlvbiAqLwogCWJpb19lbmRpbyhiaW8sIDApOwpAQCAtMjIw LDcgKzIyMCw3IEBAIGludCBibGtfcnFfbWFwX3VzZXJfaW92KHN0cnVjdCByZXF1ZXN0X3F1ZXVl ICpxLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsCiAJaWYgKElTX0VSUihiaW8pKQogCQlyZXR1cm4gUFRS X0VSUihiaW8pOwogCi0JaWYgKGJpby0+Ymlfc2l6ZSAhPSBsZW4pIHsKKwlpZiAoYmlvLT5iaV9p dGVyLmJpX3NpemUgIT0gbGVuKSB7CiAJCS8qCiAJCSAqIEdyYWIgYW4gZXh0cmEgcmVmZXJlbmNl IHRvIHRoaXMgYmlvLCBhcyBiaW9fdW5tYXBfdXNlcigpCiAJCSAqIGV4cGVjdHMgdG8gYmUgYWJs ZSB0byBkcm9wIGl0IHR3aWNlIGFzIGl0IGhhcHBlbnMgb24gdGhlCmRpZmYgLS1naXQgYS9ibG9j ay9ibGstbWVyZ2UuYyBiL2Jsb2NrL2Jsay1tZXJnZS5jCmluZGV4IDVmMjQ0ODIuLjc3NTBiMjUg MTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tZXJnZS5jCisrKyBiL2Jsb2NrL2Jsay1tZXJnZS5jCkBA IC01MzIsOSArNTMyLDkgQEAgYm9vbCBibGtfcnFfbWVyZ2Vfb2soc3RydWN0IHJlcXVlc3QgKnJx LCBzdHJ1Y3QgYmlvICpiaW8pCiAKIGludCBibGtfdHJ5X21lcmdlKHN0cnVjdCByZXF1ZXN0ICpy cSwgc3RydWN0IGJpbyAqYmlvKQogewotCWlmIChibGtfcnFfcG9zKHJxKSArIGJsa19ycV9zZWN0 b3JzKHJxKSA9PSBiaW8tPmJpX3NlY3RvcikKKwlpZiAoYmxrX3JxX3BvcyhycSkgKyBibGtfcnFf c2VjdG9ycyhycSkgPT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcikKIAkJcmV0dXJuIEVMRVZBVE9S X0JBQ0tfTUVSR0U7Ci0JZWxzZSBpZiAoYmxrX3JxX3BvcyhycSkgLSBiaW9fc2VjdG9ycyhiaW8p ID09IGJpby0+Ymlfc2VjdG9yKQorCWVsc2UgaWYgKGJsa19ycV9wb3MocnEpIC0gYmlvX3NlY3Rv cnMoYmlvKSA9PSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKQogCQlyZXR1cm4gRUxFVkFUT1JfRlJP TlRfTUVSR0U7CiAJcmV0dXJuIEVMRVZBVE9SX05PX01FUkdFOwogfQpkaWZmIC0tZ2l0IGEvYmxv Y2svYmxrLXRocm90dGxlLmMgYi9ibG9jay9ibGstdGhyb3R0bGUuYwppbmRleCAwOGEzMmRmLi4x YjFiZWEwIDEwMDY0NAotLS0gYS9ibG9jay9ibGstdGhyb3R0bGUuYworKysgYi9ibG9jay9ibGst dGhyb3R0bGUuYwpAQCAtODY3LDE0ICs4NjcsMTQgQEAgc3RhdGljIGJvb2wgdGdfd2l0aF9pbl9i cHNfbGltaXQoc3RydWN0IHRocm90bF9ncnAgKnRnLCBzdHJ1Y3QgYmlvICpiaW8sCiAJZG9fZGl2 KHRtcCwgSFopOwogCWJ5dGVzX2FsbG93ZWQgPSB0bXA7CiAKLQlpZiAodGctPmJ5dGVzX2Rpc3Bb cnddICsgYmlvLT5iaV9zaXplIDw9IGJ5dGVzX2FsbG93ZWQpIHsKKwlpZiAodGctPmJ5dGVzX2Rp c3BbcnddICsgYmlvLT5iaV9pdGVyLmJpX3NpemUgPD0gYnl0ZXNfYWxsb3dlZCkgewogCQlpZiAo d2FpdCkKIAkJCSp3YWl0ID0gMDsKIAkJcmV0dXJuIDE7CiAJfQogCiAJLyogQ2FsYyBhcHByb3gg dGltZSB0byBkaXNwYXRjaCAqLwotCWV4dHJhX2J5dGVzID0gdGctPmJ5dGVzX2Rpc3BbcnddICsg YmlvLT5iaV9zaXplIC0gYnl0ZXNfYWxsb3dlZDsKKwlleHRyYV9ieXRlcyA9IHRnLT5ieXRlc19k aXNwW3J3XSArIGJpby0+YmlfaXRlci5iaV9zaXplIC0gYnl0ZXNfYWxsb3dlZDsKIAlqaWZmeV93 YWl0ID0gZGl2NjRfdTY0KGV4dHJhX2J5dGVzICogSFosIHRnLT5icHNbcnddKTsKIAogCWlmICgh amlmZnlfd2FpdCkKQEAgLTk3Nyw3ICs5NzcsNyBAQCBzdGF0aWMgdm9pZCB0aHJvdGxfY2hhcmdl X2JpbyhzdHJ1Y3QgdGhyb3RsX2dycCAqdGcsIHN0cnVjdCBiaW8gKmJpbykKIAlib29sIHJ3ID0g YmlvX2RhdGFfZGlyKGJpbyk7CiAKIAkvKiBDaGFyZ2UgdGhlIGJpbyB0byB0aGUgZ3JvdXAgKi8K LQl0Zy0+Ynl0ZXNfZGlzcFtyd10gKz0gYmlvLT5iaV9zaXplOworCXRnLT5ieXRlc19kaXNwW3J3 XSArPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAl0Zy0+aW9fZGlzcFtyd10rKzsKIAogCS8qCkBA IC05OTMsOCArOTkzLDggQEAgc3RhdGljIHZvaWQgdGhyb3RsX2NoYXJnZV9iaW8oc3RydWN0IHRo cm90bF9ncnAgKnRnLCBzdHJ1Y3QgYmlvICpiaW8pCiAJICovCiAJaWYgKCEoYmlvLT5iaV9ydyAm IFJFUV9USFJPVFRMRUQpKSB7CiAJCWJpby0+YmlfcncgfD0gUkVRX1RIUk9UVExFRDsKLQkJdGhy b3RsX3VwZGF0ZV9kaXNwYXRjaF9zdGF0cyh0Z190b19ibGtnKHRnKSwgYmlvLT5iaV9zaXplLAot CQkJCQkgICAgIGJpby0+YmlfcncpOworCQl0aHJvdGxfdXBkYXRlX2Rpc3BhdGNoX3N0YXRzKHRn X3RvX2Jsa2codGcpLAorCQkJCQkgICAgIGJpby0+YmlfaXRlci5iaV9zaXplLCBiaW8tPmJpX3J3 KTsKIAl9CiB9CiAKQEAgLTE0OTksNyArMTQ5OSw3IEBAIGJvb2wgYmxrX3Rocm90bF9iaW8oc3Ry dWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAodGcpIHsKIAkJaWYg KCF0Zy0+aGFzX3J1bGVzW3J3XSkgewogCQkJdGhyb3RsX3VwZGF0ZV9kaXNwYXRjaF9zdGF0cyh0 Z190b19ibGtnKHRnKSwKLQkJCQkJCSAgICAgYmlvLT5iaV9zaXplLCBiaW8tPmJpX3J3KTsKKwkJ CQkJYmlvLT5iaV9pdGVyLmJpX3NpemUsIGJpby0+YmlfcncpOwogCQkJZ290byBvdXRfdW5sb2Nr X3JjdTsKIAkJfQogCX0KQEAgLTE1NTUsNyArMTU1NSw3IEBAIGJvb2wgYmxrX3Rocm90bF9iaW8o c3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkvKiBvdXQtb2YtbGlt aXQsIHF1ZXVlIHRvIEB0ZyAqLwogCXRocm90bF9sb2coc3EsICJbJWNdIGJpby4gYmRpc3A9JWxs dSBzej0ldSBicHM9JWxsdSBpb2Rpc3A9JXUgaW9wcz0ldSBxdWV1ZWQ9JWQvJWQiLAogCQkgICBy dyA9PSBSRUFEID8gJ1InIDogJ1cnLAotCQkgICB0Zy0+Ynl0ZXNfZGlzcFtyd10sIGJpby0+Ymlf c2l6ZSwgdGctPmJwc1tyd10sCisJCSAgIHRnLT5ieXRlc19kaXNwW3J3XSwgYmlvLT5iaV9pdGVy LmJpX3NpemUsIHRnLT5icHNbcnddLAogCQkgICB0Zy0+aW9fZGlzcFtyd10sIHRnLT5pb3BzW3J3 XSwKIAkJICAgc3EtPm5yX3F1ZXVlZFtSRUFEXSwgc3EtPm5yX3F1ZXVlZFtXUklURV0pOwogCmRp ZmYgLS1naXQgYS9ibG9jay9lbGV2YXRvci5jIGIvYmxvY2svZWxldmF0b3IuYwppbmRleCA2Njgz OTRkLi44MDNlODU1IDEwMDY0NAotLS0gYS9ibG9jay9lbGV2YXRvci5jCisrKyBiL2Jsb2NrL2Vs ZXZhdG9yLmMKQEAgLTQzNCw3ICs0MzQsNyBAQCBpbnQgZWx2X21lcmdlKHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBzdHJ1Y3QgcmVxdWVzdCAqKnJlcSwgc3RydWN0IGJpbyAqYmlvKQogCS8qCiAJ ICogU2VlIGlmIG91ciBoYXNoIGxvb2t1cCBjYW4gZmluZCBhIHBvdGVudGlhbCBiYWNrbWVyZ2Uu CiAJICovCi0JX19ycSA9IGVsdl9ycWhhc2hfZmluZChxLCBiaW8tPmJpX3NlY3Rvcik7CisJX19y cSA9IGVsdl9ycWhhc2hfZmluZChxLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAlpZiAoX19y cSAmJiBlbHZfcnFfbWVyZ2Vfb2soX19ycSwgYmlvKSkgewogCQkqcmVxID0gX19ycTsKIAkJcmV0 dXJuIEVMRVZBVE9SX0JBQ0tfTUVSR0U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2FvZS9h b2VjbWQuYyBiL2RyaXZlcnMvYmxvY2svYW9lL2FvZWNtZC5jCmluZGV4IDk5Y2I5NDQuLjNmMWEx OTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svYW9lL2FvZWNtZC5jCisrKyBiL2RyaXZlcnMv YmxvY2svYW9lL2FvZWNtZC5jCkBAIC05MzYsOCArOTM2LDggQEAgYnVmaW5pdChzdHJ1Y3QgYnVm ICpidWYsIHN0cnVjdCByZXF1ZXN0ICpycSwgc3RydWN0IGJpbyAqYmlvKQogCW1lbXNldChidWYs IDAsIHNpemVvZigqYnVmKSk7CiAJYnVmLT5ycSA9IHJxOwogCWJ1Zi0+YmlvID0gYmlvOwotCWJ1 Zi0+cmVzaWQgPSBiaW8tPmJpX3NpemU7Ci0JYnVmLT5zZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsK KwlidWYtPnJlc2lkID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CisJYnVmLT5zZWN0b3IgPSBiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yOwogCWJpb19wYWdlaW5jKGJpbyk7CiAJYnVmLT5idiA9IGJpb19p b3ZlYyhiaW8pOwogCWJ1Zi0+YnZfcmVzaWQgPSBidWYtPmJ2LT5idl9sZW47CkBAIC0xMTU5LDcg KzExNTksNyBAQCBhb2VfZW5kX3JlcXVlc3Qoc3RydWN0IGFvZWRldiAqZCwgc3RydWN0IHJlcXVl c3QgKnJxLCBpbnQgZmFzdGZhaWwpCiAJZG8gewogCQliaW8gPSBycS0+YmlvOwogCQlib2sgPSAh ZmFzdGZhaWwgJiYgdGVzdF9iaXQoQklPX1VQVE9EQVRFLCAmYmlvLT5iaV9mbGFncyk7Ci0JfSB3 aGlsZSAoX19ibGtfZW5kX3JlcXVlc3QocnEsIGJvayA/IDAgOiAtRUlPLCBiaW8tPmJpX3NpemUp KTsKKwl9IHdoaWxlIChfX2Jsa19lbmRfcmVxdWVzdChycSwgYm9rID8gMCA6IC1FSU8sIGJpby0+ YmlfaXRlci5iaV9zaXplKSk7CiAKIAkvKiBjZi4gaHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNi8x MC8zMS8yOCAqLwogCWlmICghZmFzdGZhaWwpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2Jy ZC5jIGIvZHJpdmVycy9ibG9jay9icmQuYwppbmRleCA5YmY0MzcxLi5lMjY5NTMyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2Jsb2NrL2JyZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svYnJkLmMKQEAgLTMz MywxMyArMzMzLDEzIEBAIHN0YXRpYyB2b2lkIGJyZF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVl c3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlpbnQgaTsKIAlpbnQgZXJyID0gLUVJTzsK IAotCXNlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCXNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9z ZWN0b3I7CiAJaWYgKGJpb19lbmRfc2VjdG9yKGJpbykgPiBnZXRfY2FwYWNpdHkoYmRldi0+YmRf ZGlzaykpCiAJCWdvdG8gb3V0OwogCiAJaWYgKHVubGlrZWx5KGJpby0+YmlfcncgJiBSRVFfRElT Q0FSRCkpIHsKIAkJZXJyID0gMDsKLQkJZGlzY2FyZF9mcm9tX2JyZChicmQsIHNlY3RvciwgYmlv LT5iaV9zaXplKTsKKwkJZGlzY2FyZF9mcm9tX2JyZChicmQsIHNlY3RvciwgYmlvLT5iaV9pdGVy LmJpX3NpemUpOwogCQlnb3RvIG91dDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sv ZHJiZC9kcmJkX2FjdGxvZy5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKaW5k ZXggMjhjNzNjYS4uYTliMTNmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRf YWN0bG9nLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKQEAgLTE1OSw3 ICsxNTksNyBAQCBzdGF0aWMgaW50IF9kcmJkX21kX3N5bmNfcGFnZV9pbyhzdHJ1Y3QgZHJiZF9j b25mICptZGV2LAogCiAJYmlvID0gYmlvX2FsbG9jX2RyYmQoR0ZQX05PSU8pOwogCWJpby0+Ymlf YmRldiA9IGJkZXYtPm1kX2JkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3I7CisJYmlvLT5i aV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAllcnIgPSAtRUlPOwogCWlmIChiaW9fYWRkX3Bh Z2UoYmlvLCBwYWdlLCBzaXplLCAwKSAhPSBzaXplKQogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2Ry YmRfYml0bWFwLmMKaW5kZXggNjRmYmI4My4uZDBkODQ3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfYml0bWFwLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0 bWFwLmMKQEAgLTEwMjgsNyArMTAyOCw3IEBAIHN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMo c3RydWN0IGJtX2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIsIGludCBydykgX19tdXN0CiAJfSBl bHNlCiAJCXBhZ2UgPSBiLT5ibV9wYWdlc1twYWdlX25yXTsKIAliaW8tPmJpX2JkZXYgPSBtZGV2 LT5sZGV2LT5tZF9iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gb25fZGlza19zZWN0b3I7CisJYmlv LT5iaV9pdGVyLmJpX3NlY3RvciA9IG9uX2Rpc2tfc2VjdG9yOwogCS8qIGJpb19hZGRfcGFnZSBv ZiBhIHNpbmdsZSBwYWdlIHRvIGFuIGVtcHR5IGJpbyB3aWxsIGFsd2F5cyBzdWNjZWVkLAogCSAq IGFjY29yZGluZyB0byBhcGkuICBEbyB3ZSB3YW50IHRvIGFzc2VydCB0aGF0PyAqLwogCWJpb19h ZGRfcGFnZShiaW8sIHBhZ2UsIGxlbiwgMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2Ry YmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwpp bmRleCBjYzI5Y2QzLi5jZjZkMDcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJi ZF9yZWNlaXZlci5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAg LTEzMzMsNyArMTMzMyw3IEBAIG5leHRfYmlvOgogCQlnb3RvIGZhaWw7CiAJfQogCS8qID4gcGVl cl9yZXEtPmkuc2VjdG9yLCB1bmxlc3MgdGhpcyBpcyB0aGUgZmlyc3QgYmlvICovCi0JYmlvLT5i aV9zZWN0b3IgPSBzZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAli aW8tPmJpX2JkZXYgPSBtZGV2LT5sZGV2LT5iYWNraW5nX2JkZXY7CiAJYmlvLT5iaV9ydyA9IHJ3 OwogCWJpby0+YmlfcHJpdmF0ZSA9IHBlZXJfcmVxOwpAQCAtMTM1Myw3ICsxMzUzLDcgQEAgbmV4 dF9iaW86CiAJCQkJZGV2X2VycihERVYsCiAJCQkJCSJiaW9fYWRkX3BhZ2UgZmFpbGVkIGZvciBs ZW49JXUsICIKIAkJCQkJImJpX3ZjbnQ9MCAoYmlfc2VjdG9yPSVsbHUpXG4iLAotCQkJCQlsZW4s ICh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IpOworCQkJCQlsZW4sICh1aW50NjRf dCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJCQllcnIgPSAtRU5PU1BDOwogCQkJCWdvdG8g ZmFpbDsKIAkJCX0KQEAgLTE2MTUsNyArMTYxNSw3IEBAIHN0YXRpYyBpbnQgcmVjdl9kbGVzc19y ZWFkKHN0cnVjdCBkcmJkX2NvbmYgKm1kZXYsIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSwKIAlt ZGV2LT5yZWN2X2NudCArPSBkYXRhX3NpemU+Pjk7CiAKIAliaW8gPSByZXEtPm1hc3Rlcl9iaW87 Ci0JRF9BU1NFUlQoc2VjdG9yID09IGJpby0+Ymlfc2VjdG9yKTsKKwlEX0FTU0VSVChzZWN0b3Ig PT0gYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKIAliaW9fZm9yX2VhY2hfc2VnbWVudChidmVj LCBiaW8sIGkpIHsKIAkJdm9pZCAqbWFwcGVkID0ga21hcChidmVjLT5idl9wYWdlKSArIGJ2ZWMt PmJ2X29mZnNldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jIGIv ZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMKaW5kZXggYzI0Mzc5Zi4uYTZiZWRhYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMKKysrIGIvZHJpdmVycy9ibG9j ay9kcmJkL2RyYmRfcmVxLmMKQEAgLTc3LDggKzc3LDggQEAgc3RhdGljIHN0cnVjdCBkcmJkX3Jl cXVlc3QgKmRyYmRfcmVxX25ldyhzdHJ1Y3QgZHJiZF9jb25mICptZGV2LAogCXJlcS0+ZXBvY2gg ICAgICAgPSAwOwogCiAJZHJiZF9jbGVhcl9pbnRlcnZhbCgmcmVxLT5pKTsKLQlyZXEtPmkuc2Vj dG9yICAgICA9IGJpb19zcmMtPmJpX3NlY3RvcjsKLQlyZXEtPmkuc2l6ZSAgICAgID0gYmlvX3Ny Yy0+Ymlfc2l6ZTsKKwlyZXEtPmkuc2VjdG9yICAgICA9IGJpb19zcmMtPmJpX2l0ZXIuYmlfc2Vj dG9yOworCXJlcS0+aS5zaXplICAgICAgPSBiaW9fc3JjLT5iaV9pdGVyLmJpX3NpemU7CiAJcmVx LT5pLmxvY2FsID0gdHJ1ZTsKIAlyZXEtPmkud2FpdGluZyA9IGZhbHNlOwogCkBAIC0xMjgwLDcg KzEyODAsNyBAQCB2b2lkIGRyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgYmlvICpiaW8pCiAJLyoKIAkgKiB3aGF0IHdlICJibGluZGx5IiBhc3N1bWU6CiAJ ICovCi0JRF9BU1NFUlQoSVNfQUxJR05FRChiaW8tPmJpX3NpemUsIDUxMikpOworCURfQVNTRVJU KElTX0FMSUdORUQoYmlvLT5iaV9pdGVyLmJpX3NpemUsIDUxMikpOwogCiAJaW5jX2FwX2Jpbyht ZGV2KTsKIAlfX2RyYmRfbWFrZV9yZXF1ZXN0KG1kZXYsIGJpbywgc3RhcnRfdGltZSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaCBiL2RyaXZlcnMvYmxvY2svZHJi ZC9kcmJkX3JlcS5oCmluZGV4IDk3OGNiMWEuLjI4ZTE1ZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv YmxvY2svZHJiZC9kcmJkX3JlcS5oCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5o CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYmRfcmVxX21ha2VfcHJp dmF0ZV9iaW8oc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBzdHJ1Y3QgYmkKIAogLyogU2hvcnQg bGl2ZWQgdGVtcG9yYXJ5IHN0cnVjdCBvbiB0aGUgc3RhY2suCiAgKiBXZSBjb3VsZCBzcXVpcnJl bCB0aGUgZXJyb3IgdG8gYmUgcmV0dXJuZWQgaW50bwotICogYmlvLT5iaV9zaXplLCBvciBzaW1p bGFyLiBCdXQgdGhhdCB3b3VsZCBiZSB0b28gdWdseS4gKi8KKyAqIGJpby0+YmlfaXRlci5iaV9z aXplLCBvciBzaW1pbGFyLiBCdXQgdGhhdCB3b3VsZCBiZSB0b28gdWdseS4gKi8KIHN0cnVjdCBi aW9fYW5kX2Vycm9yIHsKIAlzdHJ1Y3QgYmlvICpiaW87CiAJaW50IGVycm9yOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ibG9jay9mbG9wcHkuYyBiL2RyaXZlcnMvYmxvY2svZmxvcHB5LmMKaW5kZXgg MDRjZWI3ZS4uYmY3YjhiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9mbG9wcHkuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2Zsb3BweS5jCkBAIC0zNzc1LDkgKzM3NzUsOSBAQCBzdGF0aWMgaW50 IF9fZmxvcHB5X3JlYWRfYmxvY2tfMChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQogCWJpb192 ZWMuYnZfbGVuID0gc2l6ZTsKIAliaW9fdmVjLmJ2X29mZnNldCA9IDA7CiAJYmlvLmJpX3ZjbnQg PSAxOwotCWJpby5iaV9zaXplID0gc2l6ZTsKKwliaW8uYmlfaXRlci5iaV9zaXplID0gc2l6ZTsK IAliaW8uYmlfYmRldiA9IGJkZXY7Ci0JYmlvLmJpX3NlY3RvciA9IDA7CisJYmlvLmJpX2l0ZXIu Ymlfc2VjdG9yID0gMDsKIAliaW8uYmlfZmxhZ3MgPSAoMSA8PCBCSU9fUVVJRVQpOwogCWluaXRf Y29tcGxldGlvbigmY29tcGxldGUpOwogCWJpby5iaV9wcml2YXRlID0gJmNvbXBsZXRlOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRl eCA0MGU3MTU1Li4yNDQwYjUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRpYyBpbnQgZG9f YmlvX2ZpbGViYWNrZWQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJpbyAqYmlvKQog CWxvZmZfdCBwb3M7CiAJaW50IHJldDsKIAotCXBvcyA9ICgobG9mZl90KSBiaW8tPmJpX3NlY3Rv ciA8PCA5KSArIGxvLT5sb19vZmZzZXQ7CisJcG9zID0gKChsb2ZmX3QpIGJpby0+YmlfaXRlci5i aV9zZWN0b3IgPDwgOSkgKyBsby0+bG9fb2Zmc2V0OwogCiAJaWYgKGJpb19ydyhiaW8pID09IFdS SVRFKSB7CiAJCXN0cnVjdCBmaWxlICpmaWxlID0gbG8tPmxvX2JhY2tpbmdfZmlsZTsKQEAgLTQ0 NCw3ICs0NDQsNyBAQCBzdGF0aWMgaW50IGRvX2Jpb19maWxlYmFja2VkKHN0cnVjdCBsb29wX2Rl dmljZSAqbG8sIHN0cnVjdCBiaW8gKmJpbykKIAkJCQlnb3RvIG91dDsKIAkJCX0KIAkJCXJldCA9 IGZpbGUtPmZfb3AtPmZhbGxvY2F0ZShmaWxlLCBtb2RlLCBwb3MsCi0JCQkJCQkgICAgYmlvLT5i aV9zaXplKTsKKwkJCQkJCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCQlpZiAodW5saWtl bHkocmV0ICYmIHJldCAhPSAtRUlOVkFMICYmCiAJCQkJICAgICByZXQgIT0gLUVPUE5PVFNVUFAp KQogCQkJCXJldCA9IC1FSU87CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210 aXAzMnh4LmMgYi9kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMKaW5kZXggOTUyZGJm ZS4uYTQ5YmRhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5j CisrKyBiL2RyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYwpAQCAtMzg5MCw3ICszODkw LDcgQEAgc3RhdGljIHZvaWQgbXRpcF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUg KnF1ZXVlLCBzdHJ1Y3QgYmlvICpiaW8pCiAJfQogCiAJaWYgKHVubGlrZWx5KGJpby0+Ymlfcncg JiBSRVFfRElTQ0FSRCkpIHsKLQkJYmlvX2VuZGlvKGJpbywgbXRpcF9zZW5kX3RyaW0oZGQsIGJp by0+Ymlfc2VjdG9yLAorCQliaW9fZW5kaW8oYmlvLCBtdGlwX3NlbmRfdHJpbShkZCwgYmlvLT5i aV9pdGVyLmJpX3NlY3RvciwKIAkJCQkJCWJpb19zZWN0b3JzKGJpbykpKTsKIAkJcmV0dXJuOwog CX0KQEAgLTM5MDMsNyArMzkwMyw4IEBAIHN0YXRpYyB2b2lkIG10aXBfbWFrZV9yZXF1ZXN0KHN0 cnVjdCByZXF1ZXN0X3F1ZXVlICpxdWV1ZSwgc3RydWN0IGJpbyAqYmlvKQogCiAJaWYgKGJpb19k YXRhX2RpcihiaW8pID09IFdSSVRFICYmIGJpb19zZWN0b3JzKGJpbykgPD0gNjQgJiYKIAkJCQkJ CQlkZC0+dW5hbF9xZGVwdGgpIHsKLQkJaWYgKGJpby0+Ymlfc2VjdG9yICUgOCAhPSAwKSAvKiBV bmFsaWduZWQgb24gNGsgYm91bmRhcmllcyAqLworCQlpZiAoYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciAlIDggIT0gMCkKKwkJCS8qIFVuYWxpZ25lZCBvbiA0ayBib3VuZGFyaWVzICovCiAJCQl1bmFs aWduZWQgPSAxOwogCQllbHNlIGlmIChiaW9fc2VjdG9ycyhiaW8pICUgOCAhPSAwKSAvKiBBbGln bmVkIGJ1dCBub3QgNGsvOGsgKi8KIAkJCXVuYWxpZ25lZCA9IDE7CkBAIC0zOTMyLDcgKzM5MzMs NyBAQCBzdGF0aWMgdm9pZCBtdGlwX21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cXVldWUsIHN0cnVjdCBiaW8gKmJpbykKIAogCQkvKiBJc3N1ZSB0aGUgcmVhZC93cml0ZS4gKi8K IAkJbXRpcF9od19zdWJtaXRfaW8oZGQsCi0JCQkJYmlvLT5iaV9zZWN0b3IsCisJCQkJYmlvLT5i aV9pdGVyLmJpX3NlY3RvciwKIAkJCQliaW9fc2VjdG9ycyhiaW8pLAogCQkJCW5lbnRzLAogCQkJ CXRhZywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnZtZS1jb3JlLmMgYi9kcml2ZXJzL2Js b2NrL252bWUtY29yZS5jCmluZGV4IGNlNzlhNTkuLjY4NWNmYjEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvYmxvY2svbnZtZS1jb3JlLmMKKysrIGIvZHJpdmVycy9ibG9jay9udm1lLWNvcmUuYwpAQCAt NDM1LDcgKzQzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbnZtZV9iaW9fcGFpciAqbnZtZV9iaW9fc3Bs aXQoc3RydWN0IGJpbyAqYmlvLCBpbnQgaWR4LAogewogCXN0cnVjdCBudm1lX2Jpb19wYWlyICpi cDsKIAotCUJVR19PTihsZW4gPiBiaW8tPmJpX3NpemUpOworCUJVR19PTihsZW4gPiBiaW8tPmJp X2l0ZXIuYmlfc2l6ZSk7CiAJQlVHX09OKGlkeCA+IGJpby0+YmlfdmNudCk7CiAKIAlicCA9IGtt YWxsb2Moc2l6ZW9mKCpicCksIEdGUF9BVE9NSUMpOwpAQCAtNDQ2LDExICs0NDYsMTEgQEAgc3Rh dGljIHN0cnVjdCBudm1lX2Jpb19wYWlyICpudm1lX2Jpb19zcGxpdChzdHJ1Y3QgYmlvICpiaW8s IGludCBpZHgsCiAJYnAtPmIxID0gKmJpbzsKIAlicC0+YjIgPSAqYmlvOwogCi0JYnAtPmIxLmJp X3NpemUgPSBsZW47Ci0JYnAtPmIyLmJpX3NpemUgLT0gbGVuOworCWJwLT5iMS5iaV9pdGVyLmJp X3NpemUgPSBsZW47CisJYnAtPmIyLmJpX2l0ZXIuYmlfc2l6ZSAtPSBsZW47CiAJYnAtPmIxLmJp X3ZjbnQgPSBpZHg7Ci0JYnAtPmIyLmJpX2lkeCA9IGlkeDsKLQlicC0+YjIuYmlfc2VjdG9yICs9 IGxlbiA+PiA5OworCWJwLT5iMi5iaV9pdGVyLmJpX2lkeCA9IGlkeDsKKwlicC0+YjIuYmlfaXRl ci5iaV9zZWN0b3IgKz0gbGVuID4+IDk7CiAKIAlpZiAob2Zmc2V0KSB7CiAJCWJwLT5idjEgPSBr bWFsbG9jKGJpby0+YmlfbWF4X3ZlY3MgKiBzaXplb2Yoc3RydWN0IGJpb192ZWMpLApAQCAtNTE5 LDExICs1MTksMTIgQEAgc3RhdGljIGludCBudm1lX21hcF9iaW8oc3RydWN0IG52bWVfcXVldWUg Km52bWVxLCBzdHJ1Y3QgbnZtZV9pb2QgKmlvZCwKIHsKIAlzdHJ1Y3QgYmlvX3ZlYyAqYnZlYywg KmJ2cHJ2ID0gTlVMTDsKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnID0gTlVMTDsKLQlpbnQgaSwg bGVuZ3RoID0gMCwgbnNlZ3MgPSAwLCBzcGxpdF9sZW4gPSBiaW8tPmJpX3NpemU7CisJaW50IGks IGxlbmd0aCA9IDAsIG5zZWdzID0gMCwgc3BsaXRfbGVuID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7 CiAKIAlpZiAobnZtZXEtPmRldi0+c3RyaXBlX3NpemUpCiAJCXNwbGl0X2xlbiA9IG52bWVxLT5k ZXYtPnN0cmlwZV9zaXplIC0KLQkJCSgoYmlvLT5iaV9zZWN0b3IgPDwgOSkgJiAobnZtZXEtPmRl di0+c3RyaXBlX3NpemUgLSAxKSk7CisJCQkoKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPDwgOSkg JgorCQkJIChudm1lcS0+ZGV2LT5zdHJpcGVfc2l6ZSAtIDEpKTsKIAogCXNnX2luaXRfdGFibGUo aW9kLT5zZywgcHNlZ3MpOwogCWJpb19mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIGJpbywgaSkgewpA QCAtNTUxLDcgKzU1Miw3IEBAIHN0YXRpYyBpbnQgbnZtZV9tYXBfYmlvKHN0cnVjdCBudm1lX3F1 ZXVlICpudm1lcSwgc3RydWN0IG52bWVfaW9kICppb2QsCiAJaWYgKGRtYV9tYXBfc2cobnZtZXEt PnFfZG1hZGV2LCBpb2QtPnNnLCBpb2QtPm5lbnRzLCBkbWFfZGlyKSA9PSAwKQogCQlyZXR1cm4g LUVOT01FTTsKIAotCUJVR19PTihsZW5ndGggIT0gYmlvLT5iaV9zaXplKTsKKwlCVUdfT04obGVu Z3RoICE9IGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAlyZXR1cm4gbGVuZ3RoOwogfQogCkBAIC01 NzUsOCArNTc2LDggQEAgc3RhdGljIGludCBudm1lX3N1Ym1pdF9kaXNjYXJkKHN0cnVjdCBudm1l X3F1ZXVlICpudm1lcSwgc3RydWN0IG52bWVfbnMgKm5zLAogCWlvZC0+bnBhZ2VzID0gMDsKIAog CXJhbmdlLT5jYXR0ciA9IGNwdV90b19sZTMyKDApOwotCXJhbmdlLT5ubGIgPSBjcHVfdG9fbGUz MihiaW8tPmJpX3NpemUgPj4gbnMtPmxiYV9zaGlmdCk7Ci0JcmFuZ2UtPnNsYmEgPSBjcHVfdG9f bGU2NChudm1lX2Jsb2NrX25yKG5zLCBiaW8tPmJpX3NlY3RvcikpOworCXJhbmdlLT5ubGIgPSBj cHVfdG9fbGUzMihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA+PiBucy0+bGJhX3NoaWZ0KTsKKwlyYW5n ZS0+c2xiYSA9IGNwdV90b19sZTY0KG52bWVfYmxvY2tfbnIobnMsIGJpby0+YmlfaXRlci5iaV9z ZWN0b3IpKTsKIAogCW1lbXNldChjbW5kLCAwLCBzaXplb2YoKmNtbmQpKTsKIAljbW5kLT5kc20u b3Bjb2RlID0gbnZtZV9jbWRfZHNtOwpAQCAtNjQxLDcgKzY0Miw3IEBAIHN0YXRpYyBpbnQgbnZt ZV9zdWJtaXRfYmlvX3F1ZXVlKHN0cnVjdCBudm1lX3F1ZXVlICpudm1lcSwgc3RydWN0IG52bWVf bnMgKm5zLAogCX0KIAogCXJlc3VsdCA9IC1FTk9NRU07Ci0JaW9kID0gbnZtZV9hbGxvY19pb2Qo cHNlZ3MsIGJpby0+Ymlfc2l6ZSwgR0ZQX0FUT01JQyk7CisJaW9kID0gbnZtZV9hbGxvY19pb2Qo cHNlZ3MsIGJpby0+YmlfaXRlci5iaV9zaXplLCBHRlBfQVRPTUlDKTsKIAlpZiAoIWlvZCkKIAkJ Z290byBub21lbTsKIAlpb2QtPnByaXZhdGUgPSBiaW87CkBAIC02OTAsNyArNjkxLDcgQEAgc3Rh dGljIGludCBudm1lX3N1Ym1pdF9iaW9fcXVldWUoc3RydWN0IG52bWVfcXVldWUgKm52bWVxLCBz dHJ1Y3QgbnZtZV9ucyAqbnMsCiAJY21uZC0+cncubnNpZCA9IGNwdV90b19sZTMyKG5zLT5uc19p ZCk7CiAJbGVuZ3RoID0gbnZtZV9zZXR1cF9wcnBzKG52bWVxLT5kZXYsICZjbW5kLT5jb21tb24s IGlvZCwgbGVuZ3RoLAogCQkJCQkJCQlHRlBfQVRPTUlDKTsKLQljbW5kLT5ydy5zbGJhID0gY3B1 X3RvX2xlNjQobnZtZV9ibG9ja19ucihucywgYmlvLT5iaV9zZWN0b3IpKTsKKwljbW5kLT5ydy5z bGJhID0gY3B1X3RvX2xlNjQobnZtZV9ibG9ja19ucihucywgYmlvLT5iaV9pdGVyLmJpX3NlY3Rv cikpOwogCWNtbmQtPnJ3Lmxlbmd0aCA9IGNwdV90b19sZTE2KChsZW5ndGggPj4gbnMtPmxiYV9z aGlmdCkgLSAxKTsKIAljbW5kLT5ydy5jb250cm9sID0gY3B1X3RvX2xlMTYoY29udHJvbCk7CiAJ Y21uZC0+cncuZHNtZ210ID0gY3B1X3RvX2xlMzIoZHNtZ210KTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvYmxvY2svcGt0Y2R2ZC5jIGIvZHJpdmVycy9ibG9jay9wa3RjZHZkLmMKaW5kZXggZjVkMGVh MS4uZjE2ZGZjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9wa3RjZHZkLmMKKysrIGIvZHJp dmVycy9ibG9jay9wa3RjZHZkLmMKQEAgLTY1OSw3ICs2NTksNyBAQCBzdGF0aWMgc3RydWN0IHBr dF9yYl9ub2RlICpwa3RfcmJ0cmVlX2ZpbmQoc3RydWN0IHBrdGNkdmRfZGV2aWNlICpwZCwgc2Vj dG9yX3QgcwogCiAJZm9yICg7OykgewogCQl0bXAgPSByYl9lbnRyeShuLCBzdHJ1Y3QgcGt0X3Ji X25vZGUsIHJiX25vZGUpOwotCQlpZiAocyA8PSB0bXAtPmJpby0+Ymlfc2VjdG9yKQorCQlpZiAo cyA8PSB0bXAtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IpCiAJCQluZXh0ID0gbi0+cmJfbGVmdDsK IAkJZWxzZQogCQkJbmV4dCA9IG4tPnJiX3JpZ2h0OwpAQCAtNjY4LDEyICs2NjgsMTIgQEAgc3Rh dGljIHN0cnVjdCBwa3RfcmJfbm9kZSAqcGt0X3JidHJlZV9maW5kKHN0cnVjdCBwa3RjZHZkX2Rl dmljZSAqcGQsIHNlY3Rvcl90IHMKIAkJbiA9IG5leHQ7CiAJfQogCi0JaWYgKHMgPiB0bXAtPmJp by0+Ymlfc2VjdG9yKSB7CisJaWYgKHMgPiB0bXAtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IpIHsK IAkJdG1wID0gcGt0X3JidHJlZV9uZXh0KHRtcCk7CiAJCWlmICghdG1wKQogCQkJcmV0dXJuIE5V TEw7CiAJfQotCUJVR19PTihzID4gdG1wLT5iaW8tPmJpX3NlY3Rvcik7CisJQlVHX09OKHMgPiB0 bXAtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCXJldHVybiB0bXA7CiB9CiAKQEAgLTY4NCwx MyArNjg0LDEzIEBAIHN0YXRpYyB2b2lkIHBrdF9yYnRyZWVfaW5zZXJ0KHN0cnVjdCBwa3RjZHZk X2RldmljZSAqcGQsIHN0cnVjdCBwa3RfcmJfbm9kZSAqbm9kCiB7CiAJc3RydWN0IHJiX25vZGUg KipwID0gJnBkLT5iaW9fcXVldWUucmJfbm9kZTsKIAlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50ID0g TlVMTDsKLQlzZWN0b3JfdCBzID0gbm9kZS0+YmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX3QgcyA9 IG5vZGUtPmJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJc3RydWN0IHBrdF9yYl9ub2RlICp0bXA7 CiAKIAl3aGlsZSAoKnApIHsKIAkJcGFyZW50ID0gKnA7CiAJCXRtcCA9IHJiX2VudHJ5KHBhcmVu dCwgc3RydWN0IHBrdF9yYl9ub2RlLCByYl9ub2RlKTsKLQkJaWYgKHMgPCB0bXAtPmJpby0+Ymlf c2VjdG9yKQorCQlpZiAocyA8IHRtcC0+YmlvLT5iaV9pdGVyLmJpX3NlY3RvcikKIAkJCXAgPSAm KCpwKS0+cmJfbGVmdDsKIAkJZWxzZQogCQkJcCA9ICYoKnApLT5yYl9yaWdodDsKQEAgLTg2OCw3 ICs4NjgsOCBAQCBzdGF0aWMgdm9pZCBwa3RfaW9zY2hlZF9wcm9jZXNzX3F1ZXVlKHN0cnVjdCBw a3RjZHZkX2RldmljZSAqcGQpCiAJCQlzcGluX2xvY2soJnBkLT5pb3NjaGVkLmxvY2spOwogCQkJ YmlvID0gYmlvX2xpc3RfcGVlaygmcGQtPmlvc2NoZWQud3JpdGVfcXVldWUpOwogCQkJc3Bpbl91 bmxvY2soJnBkLT5pb3NjaGVkLmxvY2spOwotCQkJaWYgKGJpbyAmJiAoYmlvLT5iaV9zZWN0b3Ig PT0gcGQtPmlvc2NoZWQubGFzdF93cml0ZSkpCisJCQlpZiAoYmlvICYmIChiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yID09CisJCQkJICAgIHBkLT5pb3NjaGVkLmxhc3Rfd3JpdGUpKQogCQkJCW5lZWRf d3JpdGVfc2VlayA9IDA7CiAJCQlpZiAobmVlZF93cml0ZV9zZWVrICYmIHJlYWRzX3F1ZXVlZCkg ewogCQkJCWlmIChhdG9taWNfcmVhZCgmcGQtPmNkcncucGVuZGluZ19iaW9zKSA+IDApIHsKQEAg LTg5OSw3ICs5MDAsOCBAQCBzdGF0aWMgdm9pZCBwa3RfaW9zY2hlZF9wcm9jZXNzX3F1ZXVlKHN0 cnVjdCBwa3RjZHZkX2RldmljZSAqcGQpCiAJCQljb250aW51ZTsKIAogCQlpZiAoYmlvX2RhdGFf ZGlyKGJpbykgPT0gUkVBRCkKLQkJCXBkLT5pb3NjaGVkLnN1Y2Nlc3NpdmVfcmVhZHMgKz0gYmlv LT5iaV9zaXplID4+IDEwOworCQkJcGQtPmlvc2NoZWQuc3VjY2Vzc2l2ZV9yZWFkcyArPQorCQkJ CWJpby0+YmlfaXRlci5iaV9zaXplID4+IDEwOwogCQllbHNlIHsKIAkJCXBkLT5pb3NjaGVkLnN1 Y2Nlc3NpdmVfcmVhZHMgPSAwOwogCQkJcGQtPmlvc2NoZWQubGFzdF93cml0ZSA9IGJpb19lbmRf c2VjdG9yKGJpbyk7CkBAIC05ODgsNyArOTkwLDggQEAgc3RhdGljIHZvaWQgcGt0X2VuZF9pb19y ZWFkKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycikKIAlCVUdfT04oIXBkKTsKIAogCVZQUklOVEso InBrdF9lbmRfaW9fcmVhZDogYmlvPSVwIHNlYzA9JWxseCBzZWM9JWxseCBlcnI9JWRcbiIsIGJp bywKLQkJKHVuc2lnbmVkIGxvbmcgbG9uZylwa3QtPnNlY3RvciwgKHVuc2lnbmVkIGxvbmcgbG9u ZyliaW8tPmJpX3NlY3RvciwgZXJyKTsKKwkJKHVuc2lnbmVkIGxvbmcgbG9uZylwa3QtPnNlY3Rv ciwKKwkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBlcnIpOwog CiAJaWYgKGVycikKIAkJYXRvbWljX2luYygmcGt0LT5pb19lcnJvcnMpOwpAQCAtMTAzNiw4ICsx MDM5LDkgQEAgc3RhdGljIHZvaWQgcGt0X2dhdGhlcl9kYXRhKHN0cnVjdCBwa3RjZHZkX2Rldmlj ZSAqcGQsIHN0cnVjdCBwYWNrZXRfZGF0YSAqcGt0KQogCW1lbXNldCh3cml0dGVuLCAwLCBzaXpl b2Yod3JpdHRlbikpOwogCXNwaW5fbG9jaygmcGt0LT5sb2NrKTsKIAliaW9fbGlzdF9mb3JfZWFj aChiaW8sICZwa3QtPm9yaWdfYmlvcykgewotCQlpbnQgZmlyc3RfZnJhbWUgPSAoYmlvLT5iaV9z ZWN0b3IgLSBwa3QtPnNlY3RvcikgLyAoQ0RfRlJBTUVTSVpFID4+IDkpOwotCQlpbnQgbnVtX2Zy YW1lcyA9IGJpby0+Ymlfc2l6ZSAvIENEX0ZSQU1FU0laRTsKKwkJaW50IGZpcnN0X2ZyYW1lID0g KGJpby0+YmlfaXRlci5iaV9zZWN0b3IgLSBwa3QtPnNlY3RvcikgLworCQkJKENEX0ZSQU1FU0la RSA+PiA5KTsKKwkJaW50IG51bV9mcmFtZXMgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSAvIENEX0ZS QU1FU0laRTsKIAkJcGQtPnN0YXRzLnNlY3NfdyArPSBudW1fZnJhbWVzICogKENEX0ZSQU1FU0la RSA+PiA5KTsKIAkJQlVHX09OKGZpcnN0X2ZyYW1lIDwgMCk7CiAJCUJVR19PTihmaXJzdF9mcmFt ZSArIG51bV9mcmFtZXMgPiBwa3QtPmZyYW1lcyk7CkBAIC0xMDYzLDcgKzEwNjcsNyBAQCBzdGF0 aWMgdm9pZCBwa3RfZ2F0aGVyX2RhdGEoc3RydWN0IHBrdGNkdmRfZGV2aWNlICpwZCwgc3RydWN0 IHBhY2tldF9kYXRhICpwa3QpCiAKIAkJYmlvID0gcGt0LT5yX2Jpb3NbZl07CiAJCWJpb19yZXNl dChiaW8pOwotCQliaW8tPmJpX3NlY3RvciA9IHBrdC0+c2VjdG9yICsgZiAqIChDRF9GUkFNRVNJ WkUgPj4gOSk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBwa3QtPnNlY3RvciArIGYgKiAo Q0RfRlJBTUVTSVpFID4+IDkpOwogCQliaW8tPmJpX2JkZXYgPSBwZC0+YmRldjsKIAkJYmlvLT5i aV9lbmRfaW8gPSBwa3RfZW5kX2lvX3JlYWQ7CiAJCWJpby0+YmlfcHJpdmF0ZSA9IHBrdDsKQEAg LTExNjAsOCArMTE2NCw4IEBAIHN0YXRpYyBpbnQgcGt0X3N0YXJ0X3JlY292ZXJ5KHN0cnVjdCBw YWNrZXRfZGF0YSAqcGt0KQogCWJpb19yZXNldChwa3QtPmJpbyk7CiAJcGt0LT5iaW8tPmJpX2Jk ZXYgPSBwZC0+YmRldjsKIAlwa3QtPmJpby0+YmlfcncgPSBSRVFfV1JJVEU7Ci0JcGt0LT5iaW8t PmJpX3NlY3RvciA9IG5ld19zZWN0b3I7Ci0JcGt0LT5iaW8tPmJpX3NpemUgPSBwa3QtPmZyYW1l cyAqIENEX0ZSQU1FU0laRTsKKwlwa3QtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBuZXdfc2Vj dG9yOworCXBrdC0+YmlvLT5iaV9pdGVyLmJpX3NpemUgPSBwa3QtPmZyYW1lcyAqIENEX0ZSQU1F U0laRTsKIAlwa3QtPmJpby0+YmlfdmNudCA9IHBrdC0+ZnJhbWVzOwogCiAJcGt0LT5iaW8tPmJp X2VuZF9pbyA9IHBrdF9lbmRfaW9fcGFja2V0X3dyaXRlOwpAQCAtMTIyNCw3ICsxMjI4LDcgQEAg c3RhdGljIGludCBwa3RfaGFuZGxlX3F1ZXVlKHN0cnVjdCBwa3RjZHZkX2RldmljZSAqcGQpCiAJ bm9kZSA9IGZpcnN0X25vZGU7CiAJd2hpbGUgKG5vZGUpIHsKIAkJYmlvID0gbm9kZS0+YmlvOwot CQl6b25lID0gWk9ORShiaW8tPmJpX3NlY3RvciwgcGQpOworCQl6b25lID0gWk9ORShiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yLCBwZCk7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkocCwgJnBkLT5jZHJ3 LnBrdF9hY3RpdmVfbGlzdCwgbGlzdCkgewogCQkJaWYgKHAtPnNlY3RvciA9PSB6b25lKSB7CiAJ CQkJYmlvID0gTlVMTDsKQEAgLTEyNjQsMTMgKzEyNjgsMTMgQEAgdHJ5X25leHRfYmlvOgogCXdo aWxlICgobm9kZSA9IHBrdF9yYnRyZWVfZmluZChwZCwgem9uZSkpICE9IE5VTEwpIHsKIAkJYmlv ID0gbm9kZS0+YmlvOwogCQlWUFJJTlRLKCJwa3RfaGFuZGxlX3F1ZXVlOiBmb3VuZCB6b25lPSVs bHhcbiIsCi0JCQkodW5zaWduZWQgbG9uZyBsb25nKVpPTkUoYmlvLT5iaV9zZWN0b3IsIHBkKSk7 Ci0JCWlmIChaT05FKGJpby0+Ymlfc2VjdG9yLCBwZCkgIT0gem9uZSkKKwkJCSh1bnNpZ25lZCBs b25nIGxvbmcpWk9ORShiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBwZCkpOworCQlpZiAoWk9ORShi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBwZCkgIT0gem9uZSkKIAkJCWJyZWFrOwogCQlwa3RfcmJ0 cmVlX2VyYXNlKHBkLCBub2RlKTsKIAkJc3Bpbl9sb2NrKCZwa3QtPmxvY2spOwogCQliaW9fbGlz dF9hZGQoJnBrdC0+b3JpZ19iaW9zLCBiaW8pOwotCQlwa3QtPndyaXRlX3NpemUgKz0gYmlvLT5i aV9zaXplIC8gQ0RfRlJBTUVTSVpFOworCQlwa3QtPndyaXRlX3NpemUgKz0gYmlvLT5iaV9pdGVy LmJpX3NpemUgLyBDRF9GUkFNRVNJWkU7CiAJCXNwaW5fdW5sb2NrKCZwa3QtPmxvY2spOwogCX0K IAkvKiBjaGVjayB3cml0ZSBjb25nZXN0aW9uIG1hcmtzLCBhbmQgaWYgYmlvX3F1ZXVlX3NpemUg aXMKQEAgLTEzMDQsNyArMTMwOCw3IEBAIHN0YXRpYyB2b2lkIHBrdF9zdGFydF93cml0ZShzdHJ1 Y3QgcGt0Y2R2ZF9kZXZpY2UgKnBkLCBzdHJ1Y3QgcGFja2V0X2RhdGEgKnBrdCkKIAlzdHJ1Y3Qg YmlvX3ZlYyAqYnZlYyA9IHBrdC0+d19iaW8tPmJpX2lvX3ZlYzsKIAogCWJpb19yZXNldChwa3Qt PndfYmlvKTsKLQlwa3QtPndfYmlvLT5iaV9zZWN0b3IgPSBwa3QtPnNlY3RvcjsKKwlwa3QtPndf YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBrdC0+c2VjdG9yOwogCXBrdC0+d19iaW8tPmJpX2Jk ZXYgPSBwZC0+YmRldjsKIAlwa3QtPndfYmlvLT5iaV9lbmRfaW8gPSBwa3RfZW5kX2lvX3BhY2tl dF93cml0ZTsKIAlwa3QtPndfYmlvLT5iaV9wcml2YXRlID0gcGt0OwpAQCAtMjM4MywxOCArMjM4 NywxOCBAQCBzdGF0aWMgdm9pZCBwa3RfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVl ICpxLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAlpZiAoIXRlc3RfYml0KFBBQ0tFVF9XUklUQUJMRSwg JnBkLT5mbGFncykpIHsKIAkJcHJpbnRrKERSSVZFUl9OQU1FIjogV1JJVEUgZm9yIHJvIGRldmlj ZSAlcyAoJWxsdSlcbiIsCi0JCQlwZC0+bmFtZSwgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJp X3NlY3Rvcik7CisJCQlwZC0+bmFtZSwgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAkJZ290byBlbmRfaW87CiAJfQogCi0JaWYgKCFiaW8tPmJpX3NpemUgfHwg KGJpby0+Ymlfc2l6ZSAlIENEX0ZSQU1FU0laRSkpIHsKKwlpZiAoIWJpby0+YmlfaXRlci5iaV9z aXplIHx8IChiaW8tPmJpX2l0ZXIuYmlfc2l6ZSAlIENEX0ZSQU1FU0laRSkpIHsKIAkJcHJpbnRr KERSSVZFUl9OQU1FIjogd3JvbmcgYmlvIHNpemVcbiIpOwogCQlnb3RvIGVuZF9pbzsKIAl9CiAK IAlibGtfcXVldWVfYm91bmNlKHEsICZiaW8pOwogCi0Jem9uZSA9IFpPTkUoYmlvLT5iaV9zZWN0 b3IsIHBkKTsKKwl6b25lID0gWk9ORShiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBwZCk7CiAJVlBS SU5USygicGt0X21ha2VfcmVxdWVzdDogc3RhcnQgPSAlNmxseCBzdG9wID0gJTZsbHhcbiIsCiAJ CSh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IsCiAJCSh1bnNpZ25lZCBsb25nIGxv bmcpYmlvX2VuZF9zZWN0b3IoYmlvKSk7CkBAIC0yNDA4LDcgKzI0MTIsNyBAQCBzdGF0aWMgdm9p ZCBwa3RfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpi aW8pCiAJCWxhc3Rfem9uZSA9IFpPTkUoYmlvX2VuZF9zZWN0b3IoYmlvKSAtIDEsIHBkKTsKIAkJ aWYgKGxhc3Rfem9uZSAhPSB6b25lKSB7CiAJCQlCVUdfT04obGFzdF96b25lICE9IHpvbmUgKyBw ZC0+c2V0dGluZ3Muc2l6ZSk7Ci0JCQlmaXJzdF9zZWN0b3JzID0gbGFzdF96b25lIC0gYmlvLT5i aV9zZWN0b3I7CisJCQlmaXJzdF9zZWN0b3JzID0gbGFzdF96b25lIC0gYmlvLT5iaV9pdGVyLmJp X3NlY3RvcjsKIAkJCWJwID0gYmlvX3NwbGl0KGJpbywgZmlyc3Rfc2VjdG9ycyk7CiAJCQlCVUdf T04oIWJwKTsKIAkJCXBrdF9tYWtlX3JlcXVlc3QocSwgJmJwLT5iaW8xKTsKQEAgLTI0MzAsNyAr MjQzNCw4IEBAIHN0YXRpYyB2b2lkIHBrdF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkJCWlmICgocGt0LT5zdGF0ZSA9PSBQQUNLRVRfV0FJ VElOR19TVEFURSkgfHwKIAkJCSAgICAocGt0LT5zdGF0ZSA9PSBQQUNLRVRfUkVBRF9XQUlUX1NU QVRFKSkgewogCQkJCWJpb19saXN0X2FkZCgmcGt0LT5vcmlnX2Jpb3MsIGJpbyk7Ci0JCQkJcGt0 LT53cml0ZV9zaXplICs9IGJpby0+Ymlfc2l6ZSAvIENEX0ZSQU1FU0laRTsKKwkJCQlwa3QtPndy aXRlX3NpemUgKz0KKwkJCQkJYmlvLT5iaV9pdGVyLmJpX3NpemUgLyBDRF9GUkFNRVNJWkU7CiAJ CQkJaWYgKChwa3QtPndyaXRlX3NpemUgPj0gcGt0LT5mcmFtZXMpICYmCiAJCQkJICAgIChwa3Qt PnN0YXRlID09IFBBQ0tFVF9XQUlUSU5HX1NUQVRFKSkgewogCQkJCQlhdG9taWNfaW5jKCZwa3Qt PnJ1bl9zbSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3BzM2Rpc2suYyBiL2RyaXZlcnMv YmxvY2svcHMzZGlzay5jCmluZGV4IGQ3NTRhODguLjQ2NGJlNzggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvYmxvY2svcHMzZGlzay5jCisrKyBiL2RyaXZlcnMvYmxvY2svcHMzZGlzay5jCkBAIC0xMDQs NyArMTA0LDcgQEAgc3RhdGljIHZvaWQgcHMzZGlza19zY2F0dGVyX2dhdGhlcihzdHJ1Y3QgcHMz X3N0b3JhZ2VfZGV2aWNlICpkZXYsCiAJCWRldl9kYmcoJmRldi0+c2JkLmNvcmUsCiAJCQkiJXM6 JXU6IGJpbyAldTogJXUgc2VncyAldSBzZWN0b3JzIGZyb20gJWx1XG4iLAogCQkJX19mdW5jX18s IF9fTElORV9fLCBpLCBiaW9fc2VnbWVudHMoaXRlci5iaW8pLAotCQkJYmlvX3NlY3RvcnMoaXRl ci5iaW8pLCBpdGVyLmJpby0+Ymlfc2VjdG9yKTsKKwkJCWJpb19zZWN0b3JzKGl0ZXIuYmlvKSwg aXRlci5iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCQlzaXplID0gYnZlYy0+YnZfbGVuOwog CQlidWYgPSBidmVjX2ttYXBfaXJxKGJ2ZWMsICZmbGFncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2Jsb2NrL3JiZC5jIGIvZHJpdmVycy9ibG9jay9yYmQuYwppbmRleCA0YWQyYWQ5Li45OTMzNGFj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JiZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svcmJk LmMKQEAgLTExNzcsMTQgKzExNzcsMTQgQEAgc3RhdGljIHN0cnVjdCBiaW8gKmJpb19jbG9uZV9y YW5nZShzdHJ1Y3QgYmlvICpiaW9fc3JjLAogCiAJLyogSGFuZGxlIHRoZSBlYXN5IGNhc2UgZm9y IHRoZSBjYWxsZXIgKi8KIAotCWlmICghb2Zmc2V0ICYmIGxlbiA9PSBiaW9fc3JjLT5iaV9zaXpl KQorCWlmICghb2Zmc2V0ICYmIGxlbiA9PSBiaW9fc3JjLT5iaV9pdGVyLmJpX3NpemUpCiAJCXJl dHVybiBiaW9fY2xvbmUoYmlvX3NyYywgZ2ZwbWFzayk7CiAKIAlpZiAoV0FSTl9PTl9PTkNFKCFs ZW4pKQogCQlyZXR1cm4gTlVMTDsKLQlpZiAoV0FSTl9PTl9PTkNFKGxlbiA+IGJpb19zcmMtPmJp X3NpemUpKQorCWlmIChXQVJOX09OX09OQ0UobGVuID4gYmlvX3NyYy0+YmlfaXRlci5iaV9zaXpl KSkKIAkJcmV0dXJuIE5VTEw7Ci0JaWYgKFdBUk5fT05fT05DRShvZmZzZXQgPiBiaW9fc3JjLT5i aV9zaXplIC0gbGVuKSkKKwlpZiAoV0FSTl9PTl9PTkNFKG9mZnNldCA+IGJpb19zcmMtPmJpX2l0 ZXIuYmlfc2l6ZSAtIGxlbikpCiAJCXJldHVybiBOVUxMOwogCiAJLyogRmluZCBmaXJzdCBhZmZl Y3RlZCBzZWdtZW50Li4uICovCkBAIC0xMjE0LDcgKzEyMTQsOCBAQCBzdGF0aWMgc3RydWN0IGJp byAqYmlvX2Nsb25lX3JhbmdlKHN0cnVjdCBiaW8gKmJpb19zcmMsCiAJCXJldHVybiBOVUxMOwkv KiBFTk9NRU0gKi8KIAogCWJpby0+YmlfYmRldiA9IGJpb19zcmMtPmJpX2JkZXY7Ci0JYmlvLT5i aV9zZWN0b3IgPSBiaW9fc3JjLT5iaV9zZWN0b3IgKyAob2Zmc2V0ID4+IFNFQ1RPUl9TSElGVCk7 CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJpb19zcmMtPmJpX2l0ZXIuYmlfc2VjdG9yICsK KwkJKG9mZnNldCA+PiBTRUNUT1JfU0hJRlQpOwogCWJpby0+YmlfcncgPSBiaW9fc3JjLT5iaV9y dzsKIAliaW8tPmJpX2ZsYWdzIHw9IDEgPDwgQklPX0NMT05FRDsKIApAQCAtMTIzMyw4ICsxMjM0 LDcgQEAgc3RhdGljIHN0cnVjdCBiaW8gKmJpb19jbG9uZV9yYW5nZShzdHJ1Y3QgYmlvICpiaW9f c3JjLAogCX0KIAogCWJpby0+YmlfdmNudCA9IHZjbnQ7Ci0JYmlvLT5iaV9zaXplID0gbGVuOwot CWJpby0+YmlfaWR4ID0gMDsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IGxlbjsKIAogCXJldHVy biBiaW87CiB9CkBAIC0xMjY1LDcgKzEyNjUsNyBAQCBzdGF0aWMgc3RydWN0IGJpbyAqYmlvX2No YWluX2Nsb25lX3JhbmdlKHN0cnVjdCBiaW8gKipiaW9fc3JjLAogCiAJLyogQnVpbGQgdXAgYSBj aGFpbiBvZiBjbG9uZSBiaW9zIHVwIHRvIHRoZSBsaW1pdCAqLwogCi0JaWYgKCFiaSB8fCBvZmYg Pj0gYmktPmJpX3NpemUgfHwgIWxlbikKKwlpZiAoIWJpIHx8IG9mZiA+PSBiaS0+YmlfaXRlci5i aV9zaXplIHx8ICFsZW4pCiAJCXJldHVybiBOVUxMOwkJLyogTm90aGluZyB0byBjbG9uZSAqLwog CiAJZW5kID0gJmNoYWluOwpAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgc3RhdGljIHN0cnVjdCBiaW8g KmJpb19jaGFpbl9jbG9uZV9yYW5nZShzdHJ1Y3QgYmlvICoqYmlvX3NyYywKIAkJCXJiZF93YXJu KE5VTEwsICJiaW9fY2hhaW4gZXhoYXVzdGVkIHdpdGggJXUgbGVmdCIsIGxlbik7CiAJCQlnb3Rv IG91dF9lcnI7CS8qIEVJTlZBTDsgcmFuIG91dCBvZiBiaW8ncyAqLwogCQl9Ci0JCWJpX3NpemUg PSBtaW5fdCh1bnNpZ25lZCBpbnQsIGJpLT5iaV9zaXplIC0gb2ZmLCBsZW4pOworCQliaV9zaXpl ID0gbWluX3QodW5zaWduZWQgaW50LCBiaS0+YmlfaXRlci5iaV9zaXplIC0gb2ZmLCBsZW4pOwog CQliaW8gPSBiaW9fY2xvbmVfcmFuZ2UoYmksIG9mZiwgYmlfc2l6ZSwgZ2ZwbWFzayk7CiAJCWlm ICghYmlvKQogCQkJZ290byBvdXRfZXJyOwkvKiBFTk9NRU0gKi8KQEAgLTEyODYsNyArMTI4Niw3 IEBAIHN0YXRpYyBzdHJ1Y3QgYmlvICpiaW9fY2hhaW5fY2xvbmVfcmFuZ2Uoc3RydWN0IGJpbyAq KmJpb19zcmMsCiAJCWVuZCA9ICZiaW8tPmJpX25leHQ7CiAKIAkJb2ZmICs9IGJpX3NpemU7Ci0J CWlmIChvZmYgPT0gYmktPmJpX3NpemUpIHsKKwkJaWYgKG9mZiA9PSBiaS0+YmlfaXRlci5iaV9z aXplKSB7CiAJCQliaSA9IGJpLT5iaV9uZXh0OwogCQkJb2ZmID0gMDsKIAkJfQpAQCAtMjE4MCw3 ICsyMTgwLDggQEAgc3RhdGljIGludCByYmRfaW1nX3JlcXVlc3RfZmlsbChzdHJ1Y3QgcmJkX2lt Z19yZXF1ZXN0ICppbWdfcmVxdWVzdCwKIAogCWlmICh0eXBlID09IE9CSl9SRVFVRVNUX0JJTykg ewogCQliaW9fbGlzdCA9IGRhdGFfZGVzYzsKLQkJcmJkX2Fzc2VydChpbWdfb2Zmc2V0ID09IGJp b19saXN0LT5iaV9zZWN0b3IgPDwgU0VDVE9SX1NISUZUKTsKKwkJcmJkX2Fzc2VydChpbWdfb2Zm c2V0ID09CisJCQkgICBiaW9fbGlzdC0+YmlfaXRlci5iaV9zZWN0b3IgPDwgU0VDVE9SX1NISUZU KTsKIAl9IGVsc2UgewogCQlyYmRfYXNzZXJ0KHR5cGUgPT0gT0JKX1JFUVVFU1RfUEFHRVMpOwog CQlwYWdlcyA9IGRhdGFfZGVzYzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcnN4eC9kZXYu YyBiL2RyaXZlcnMvYmxvY2svcnN4eC9kZXYuYwppbmRleCBkN2FmNDQxLi45YjE3ZmEwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JzeHgvZGV2LmMKKysrIGIvZHJpdmVycy9ibG9jay9yc3h4 L2Rldi5jCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIHZvaWQgcnN4eF9tYWtlX3JlcXVlc3Qo c3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAoIWNhcmQpCiAJ CWdvdG8gcmVxX2VycjsKIAotCWlmIChiaW8tPmJpX3NlY3RvciArIChiaW8tPmJpX3NpemUgPj4g OSkgPiBnZXRfY2FwYWNpdHkoY2FyZC0+Z2VuZGlzaykpCisJaWYgKGJpb19lbmRfc2VjdG9yKGJp bykgPiBnZXRfY2FwYWNpdHkoY2FyZC0+Z2VuZGlzaykpCiAJCWdvdG8gcmVxX2VycjsKIAogCWlm ICh1bmxpa2VseShjYXJkLT5oYWx0KSkgewpAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyB2b2lk IHJzeHhfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpi aW8pCiAJCWdvdG8gcmVxX2VycjsKIAl9CiAKLQlpZiAoYmlvLT5iaV9zaXplID09IDApIHsKKwlp ZiAoYmlvLT5iaV9pdGVyLmJpX3NpemUgPT0gMCkgewogCQlkZXZfZXJyKENBUkRfVE9fREVWKGNh cmQpLCAic2l6ZSB6ZXJvIEJJTyFcbiIpOwogCQlnb3RvIHJlcV9lcnI7CiAJfQpAQCAtMjA4LDcg KzIwOCw3IEBAIHN0YXRpYyB2b2lkIHJzeHhfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAlkZXZfZGJnKENBUkRfVE9fREVWKGNhcmQpLCAi QklPWyVjXTogbWV0YTogJXAgYWRkcjg6IHglbGx4IHNpemU6ICVkXG4iLAogCQkgYmlvX2RhdGFf ZGlyKGJpbykgPyAnVycgOiAnUicsIGJpb19tZXRhLAotCQkgKHU2NCliaW8tPmJpX3NlY3RvciA8 PCA5LCBiaW8tPmJpX3NpemUpOworCQkgKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDks IGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAogCXN0ID0gcnN4eF9kbWFfcXVldWVfYmlvKGNhcmQs IGJpbywgJmJpb19tZXRhLT5wZW5kaW5nX2RtYXMsCiAJCQkJICAgIGJpb19kbWFfZG9uZV9jYiwg YmlvX21ldGEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9yc3h4L2RtYS5jIGIvZHJpdmVy cy9ibG9jay9yc3h4L2RtYS5jCmluZGV4IGJlZDMyZjEuLjllNjMxOGEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvYmxvY2svcnN4eC9kbWEuYworKysgYi9kcml2ZXJzL2Jsb2NrL3JzeHgvZG1hLmMKQEAg LTY2Nyw3ICs2NjcsNyBAQCBpbnQgcnN4eF9kbWFfcXVldWVfYmlvKHN0cnVjdCByc3h4X2NhcmRp bmZvICpjYXJkLAogCWludCBzdDsKIAlpbnQgaTsKIAotCWFkZHI4ID0gYmlvLT5iaV9zZWN0b3Ig PDwgOTsgLyogc2VjdG9ycyBhcmUgNTEyIGJ5dGVzICovCisJYWRkcjggPSBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yIDw8IDk7IC8qIHNlY3RvcnMgYXJlIDUxMiBieXRlcyAqLwogCWF0b21pY19zZXQo bl9kbWFzLCAwKTsKIAogCWZvciAoaSA9IDA7IGkgPCBjYXJkLT5uX3RhcmdldHM7IGkrKykgewpA QCAtNjc2LDcgKzY3Niw3IEBAIGludCByc3h4X2RtYV9xdWV1ZV9iaW8oc3RydWN0IHJzeHhfY2Fy ZGluZm8gKmNhcmQsCiAJfQogCiAJaWYgKGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkgewotCQli dl9sZW4gPSBiaW8tPmJpX3NpemU7CisJCWJ2X2xlbiA9IGJpby0+YmlfaXRlci5iaV9zaXplOwog CiAJCXdoaWxlIChidl9sZW4gPiAwKSB7CiAJCQl0Z3QgICA9IHJzeHhfZ2V0X2RtYV90Z3QoY2Fy ZCwgYWRkcjgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay91bWVtLmMgYi9kcml2ZXJzL2Js b2NrL3VtZW0uYwppbmRleCBhZDcwODY4Li5kYWI0ZjFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Js b2NrL3VtZW0uYworKysgYi9kcml2ZXJzL2Jsb2NrL3VtZW0uYwpAQCAtMzUyLDggKzM1Miw4IEBA IHN0YXRpYyBpbnQgYWRkX2JpbyhzdHJ1Y3QgY2FyZGluZm8gKmNhcmQpCiAJYmlvID0gY2FyZC0+ Y3VycmVudGJpbzsKIAlpZiAoIWJpbyAmJiBjYXJkLT5iaW8pIHsKIAkJY2FyZC0+Y3VycmVudGJp byA9IGNhcmQtPmJpbzsKLQkJY2FyZC0+Y3VycmVudF9pZHggPSBjYXJkLT5iaW8tPmJpX2lkeDsK LQkJY2FyZC0+Y3VycmVudF9zZWN0b3IgPSBjYXJkLT5iaW8tPmJpX3NlY3RvcjsKKwkJY2FyZC0+ Y3VycmVudF9pZHggPSBjYXJkLT5iaW8tPmJpX2l0ZXIuYmlfaWR4OworCQljYXJkLT5jdXJyZW50 X3NlY3RvciA9IGNhcmQtPmJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCWNhcmQtPmJpbyA9IGNh cmQtPmJpby0+YmlfbmV4dDsKIAkJaWYgKGNhcmQtPmJpbyA9PSBOVUxMKQogCQkJY2FyZC0+Ymlv dGFpbCA9ICZjYXJkLT5iaW87CkBAIC00NTEsNyArNDUxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vz c19wYWdlKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAkJaWYgKHBhZ2UtPmlkeCA+PSBiaW8tPmJpX3Zj bnQpIHsKIAkJCXBhZ2UtPmJpbyA9IGJpby0+YmlfbmV4dDsKIAkJCWlmIChwYWdlLT5iaW8pCi0J CQkJcGFnZS0+aWR4ID0gcGFnZS0+YmlvLT5iaV9pZHg7CisJCQkJcGFnZS0+aWR4ID0gcGFnZS0+ YmlvLT5iaV9pdGVyLmJpX2lkeDsKIAkJfQogCiAJCXBjaV91bm1hcF9wYWdlKGNhcmQtPmRldiwg ZGVzYy0+ZGF0YV9kbWFfaGFuZGxlLApAQCAtNTMyLDcgKzUzMiw4IEBAIHN0YXRpYyB2b2lkIG1t X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvKQog ewogCXN0cnVjdCBjYXJkaW5mbyAqY2FyZCA9IHEtPnF1ZXVlZGF0YTsKIAlwcl9kZWJ1ZygibW1f bWFrZV9yZXF1ZXN0ICVsbHUgJXVcbiIsCi0JCSAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlf c2VjdG9yLCBiaW8tPmJpX3NpemUpOworCQkgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLAorCQkgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCiAJc3Bpbl9sb2NrX2ly cSgmY2FyZC0+bG9jayk7CiAJKmNhcmQtPmJpb3RhaWwgPSBiaW87CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCmluZGV4 IDVjZGY4OGIuLjkzZmRlMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5j CisrKyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCkBAIC0xODQsNyArMTg0LDcgQEAgc3Rh dGljIHZvaWQgdmlydGJsa19iaW9fc2VuZF9kYXRhKHN0cnVjdCB2aXJ0YmxrX3JlcSAqdmJyKQog CiAJdmJyLT5mbGFncyAmPSB+VkJMS19JU19GTFVTSDsKIAl2YnItPm91dF9oZHIudHlwZSA9IDA7 Ci0JdmJyLT5vdXRfaGRyLnNlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCXZici0+b3V0X2hkci5z ZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCXZici0+b3V0X2hkci5pb3ByaW8gPSBi aW9fcHJpbyhiaW8pOwogCiAJaWYgKGJsa19iaW9fbWFwX3NnKHZibGstPmRpc2stPnF1ZXVlLCBi aW8sIHZici0+c2cpKSB7CkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIHZvaWQgdmlydGJsa19t YWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkJ dmJyLT5mbGFncyB8PSBWQkxLX1JFUV9GTFVTSDsKIAlpZiAoYmlvLT5iaV9ydyAmIFJFUV9GVUEp CiAJCXZici0+ZmxhZ3MgfD0gVkJMS19SRVFfRlVBOwotCWlmIChiaW8tPmJpX3NpemUpCisJaWYg KGJpby0+YmlfaXRlci5iaV9zaXplKQogCQl2YnItPmZsYWdzIHw9IFZCTEtfUkVRX0RBVEE7CiAK IAlpZiAodW5saWtlbHkodmJyLT5mbGFncyAmIFZCTEtfUkVRX0ZMVVNIKSkKZGlmZiAtLWdpdCBh L2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5jIGIvZHJpdmVycy9ibG9jay94ZW4t YmxrYmFjay9ibGtiYWNrLmMKaW5kZXggYmY0YjlkMi4uY2UwNjc0ZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKKysrIGIvZHJpdmVycy9ibG9jay94ZW4t YmxrYmFjay9ibGtiYWNrLmMKQEAgLTEyNTYsNyArMTI1Niw3IEBAIHN0YXRpYyBpbnQgZGlzcGF0 Y2hfcndfYmxvY2tfaW8oc3RydWN0IHhlbl9ibGtpZiAqYmxraWYsCiAJCQliaW8tPmJpX2JkZXYg ICAgPSBwcmVxLmJkZXY7CiAJCQliaW8tPmJpX3ByaXZhdGUgPSBwZW5kaW5nX3JlcTsKIAkJCWJp by0+YmlfZW5kX2lvICA9IGVuZF9ibG9ja19pb19vcDsKLQkJCWJpby0+Ymlfc2VjdG9yICA9IHBy ZXEuc2VjdG9yX251bWJlcjsKKwkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgID0gcHJlcS5zZWN0 b3JfbnVtYmVyOwogCQl9CiAKIAkJcHJlcS5zZWN0b3JfbnVtYmVyICs9IHNlZ1tpXS5uc2VjOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYyBiL2RyaXZlcnMvYmxvY2sv eGVuLWJsa2Zyb250LmMKaW5kZXggOGQ1M2VkMi4uYTJhZGU3MyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ibG9jay94ZW4tYmxrZnJvbnQuYworKysgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5j CkBAIC0xNDY4LDcgKzE0NjgsNyBAQCBzdGF0aWMgaW50IGJsa2lmX3JlY292ZXIoc3RydWN0IGJs a2Zyb250X2luZm8gKmluZm8pCiAJCQlmb3IgKGkgPSAwOyBpIDwgcGVuZGluZzsgaSsrKSB7CiAJ CQkJb2Zmc2V0ID0gKGkgKiBzZWdzICogUEFHRV9TSVpFKSA+PiA5OwogCQkJCXNpemUgPSBtaW4o KHVuc2lnbmVkIGludCkoc2VncyAqIFBBR0VfU0laRSkgPj4gOSwKLQkJCQkJICAgKHVuc2lnbmVk IGludCkoYmlvLT5iaV9zaXplID4+IDkpIC0gb2Zmc2V0KTsKKwkJCQkJICAgKHVuc2lnbmVkIGlu dCliaW9fc2VjdG9ycyhiaW8pIC0gb2Zmc2V0KTsKIAkJCQljbG9uZWRfYmlvID0gYmlvX2Nsb25l KGJpbywgR0ZQX05PSU8pOwogCQkJCUJVR19PTihjbG9uZWRfYmlvID09IE5VTEwpOwogCQkJCWJp b190cmltKGNsb25lZF9iaW8sIG9mZnNldCwgc2l6ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21k L2JjYWNoZS9hbGxvYy5jIGIvZHJpdmVycy9tZC9iY2FjaGUvYWxsb2MuYwppbmRleCBlNDVmNTU3 Li45YWZlMzJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9hbGxvYy5jCisrKyBiL2Ry aXZlcnMvbWQvYmNhY2hlL2FsbG9jLmMKQEAgLTE3OCwxMiArMTc4LDEyIEBAIHN0YXRpYyB2b2lk IGRvX2Rpc2NhcmQoc3RydWN0IGNhY2hlICpjYSwgbG9uZyBidWNrZXQpCiAKIAliaW9faW5pdCgm ZC0+YmlvKTsKIAotCWQtPmJpby5iaV9zZWN0b3IJPSBidWNrZXRfdG9fc2VjdG9yKGNhLT5zZXQs IGQtPmJ1Y2tldCk7CisJZC0+YmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gYnVja2V0X3RvX3NlY3Rv cihjYS0+c2V0LCBkLT5idWNrZXQpOwogCWQtPmJpby5iaV9iZGV2CQk9IGNhLT5iZGV2OwogCWQt PmJpby5iaV9ydwkJPSBSRVFfV1JJVEV8UkVRX0RJU0NBUkQ7CiAJZC0+YmlvLmJpX21heF92ZWNz CT0gMTsKIAlkLT5iaW8uYmlfaW9fdmVjCT0gZC0+YmlvLmJpX2lubGluZV92ZWNzOwotCWQtPmJp by5iaV9zaXplCQk9IGJ1Y2tldF9ieXRlcyhjYSk7CisJZC0+YmlvLmJpX2l0ZXIuYmlfc2l6ZQk9 IGJ1Y2tldF9ieXRlcyhjYSk7CiAJZC0+YmlvLmJpX2VuZF9pbwk9IGRpc2NhcmRfZW5kaW87CiAJ YmlvX3NldF9wcmlvKCZkLT5iaW8sIElPUFJJT19QUklPX1ZBTFVFKElPUFJJT19DTEFTU19JRExF LCAwKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL2J0cmVlLmMgYi9kcml2ZXJz L21kL2JjYWNoZS9idHJlZS5jCmluZGV4IGVlMzcyODguLjkzM2VkOGQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbWQvYmNhY2hlL2J0cmVlLmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvYnRyZWUuYwpA QCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgYmNoX2J0cmVlX25vZGVfcmVhZChzdHJ1Y3QgYnRyZWUg KmIpCiAKIAliaW8gPSBiY2hfYmJpb19hbGxvYyhiLT5jKTsKIAliaW8tPmJpX3J3CT0gUkVRX01F VEF8UkVBRF9TWU5DOwotCWJpby0+Ymlfc2l6ZQk9IEtFWV9TSVpFKCZiLT5rZXkpIDw8IDk7CisJ YmlvLT5iaV9pdGVyLmJpX3NpemUgPSBLRVlfU0laRSgmYi0+a2V5KSA8PCA5OwogCWJpby0+Ymlf ZW5kX2lvCT0gYnRyZWVfbm9kZV9yZWFkX2VuZGlvOwogCWJpby0+YmlfcHJpdmF0ZQk9ICZjbDsK IApAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyB2b2lkIGRvX2J0cmVlX25vZGVfd3JpdGUoc3Ry dWN0IGJ0cmVlICpiKQogCWItPmJpby0+YmlfZW5kX2lvCT0gYnRyZWVfbm9kZV93cml0ZV9lbmRp bzsKIAliLT5iaW8tPmJpX3ByaXZhdGUJPSAmYi0+aW8uY2w7CiAJYi0+YmlvLT5iaV9ydwkJPSBS RVFfTUVUQXxXUklURV9TWU5DfFJFUV9GVUE7Ci0JYi0+YmlvLT5iaV9zaXplCQk9IHNldF9ibG9j a3MoaSwgYi0+YykgKiBibG9ja19ieXRlcyhiLT5jKTsKKwliLT5iaW8tPmJpX2l0ZXIuYmlfc2l6 ZQk9IHNldF9ibG9ja3MoaSwgYi0+YykgKiBibG9ja19ieXRlcyhiLT5jKTsKIAliY2hfYmlvX21h cChiLT5iaW8sIGkpOwogCiAJLyoKQEAgLTIxNTIsMTEgKzIxNTIsMTEgQEAgc3RhdGljIGludCBz dWJtaXRfcGFydGlhbF9jYWNoZV9taXNzKHN0cnVjdCBidHJlZSAqYiwgc3RydWN0IGJ0cmVlX29w ICpvcCwKIAkJdW5zaWduZWQgc2VjdG9ycyA9IElOVF9NQVg7CiAKIAkJaWYgKEtFWV9JTk9ERShr KSA9PSBvcC0+aW5vZGUpIHsKLQkJCWlmIChLRVlfU1RBUlQoaykgPD0gYmlvLT5iaV9zZWN0b3Ip CisJCQlpZiAoS0VZX1NUQVJUKGspIDw9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IpCiAJCQkJYnJl YWs7CiAKIAkJCXNlY3RvcnMgPSBtaW5fdCh1aW50NjRfdCwgc2VjdG9ycywKLQkJCQkJS0VZX1NU QVJUKGspIC0gYmlvLT5iaV9zZWN0b3IpOworCQkJCQlLRVlfU1RBUlQoaykgLSBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yKTsKIAkJfQogCiAJCXJldCA9IHMtPmQtPmNhY2hlX21pc3MoYiwgcywgYmlv LCBzZWN0b3JzKTsKQEAgLTIxODgsMTIgKzIxODgsMTIgQEAgc3RhdGljIGludCBzdWJtaXRfcGFy dGlhbF9jYWNoZV9oaXQoc3RydWN0IGJ0cmVlICpiLCBzdHJ1Y3QgYnRyZWVfb3AgKm9wLAogCiAJ d2hpbGUgKCFvcC0+bG9va3VwX2RvbmUgJiYKIAkgICAgICAgS0VZX0lOT0RFKGspID09IG9wLT5p bm9kZSAmJgotCSAgICAgICBiaW8tPmJpX3NlY3RvciA8IEtFWV9PRkZTRVQoaykpIHsKKwkgICAg ICAgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8IEtFWV9PRkZTRVQoaykpIHsKIAkJc3RydWN0IGJr ZXkgKmJpb19rZXk7CiAJCXNlY3Rvcl90IHNlY3RvciA9IFBUUl9PRkZTRVQoaywgcHRyKSArCi0J CQkoYmlvLT5iaV9zZWN0b3IgLSBLRVlfU1RBUlQoaykpOworCQkJKGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgLSBLRVlfU1RBUlQoaykpOwogCQl1bnNpZ25lZCBzZWN0b3JzID0gbWluX3QodWludDY0 X3QsIElOVF9NQVgsCi0JCQkJCSBLRVlfT0ZGU0VUKGspIC0gYmlvLT5iaV9zZWN0b3IpOworCQkJ CUtFWV9PRkZTRVQoaykgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCQluID0gYmNoX2Jp b19zcGxpdChiaW8sIHNlY3RvcnMsIEdGUF9OT0lPLCBzLT5kLT5iaW9fc3BsaXQpOwogCQlpZiAo biA9PSBiaW8pCkBAIC0yMjMyLDcgKzIyMzIsOCBAQCBpbnQgYmNoX2J0cmVlX3NlYXJjaF9yZWN1 cnNlKHN0cnVjdCBidHJlZSAqYiwgc3RydWN0IGJ0cmVlX29wICpvcCkKIAlpbnQgcmV0ID0gMDsK IAlzdHJ1Y3QgYmtleSAqazsKIAlzdHJ1Y3QgYnRyZWVfaXRlciBpdGVyOwotCWJjaF9idHJlZV9p dGVyX2luaXQoYiwgJml0ZXIsICZLRVkob3AtPmlub2RlLCBiaW8tPmJpX3NlY3RvciwgMCkpOwor CWJjaF9idHJlZV9pdGVyX2luaXQoYiwgJml0ZXIsICZLRVkob3AtPmlub2RlLAorCQkJCQkgICBi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCAwKSk7CiAKIAlkbyB7CiAJCWsgPSBiY2hfYnRyZWVfaXRl cl9uZXh0X2ZpbHRlcigmaXRlciwgYiwgYmNoX3B0cl9iYWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9iY2FjaGUvZGVidWcuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL2RlYnVnLmMKaW5kZXggNTQ1 NjgwYi4uODRjOTNhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvZGVidWcuYworKysg Yi9kcml2ZXJzL21kL2JjYWNoZS9kZWJ1Zy5jCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBiY2hf ZGF0YV92ZXJpZnkoc3RydWN0IHNlYXJjaCAqcykKIAkJCXByaW50ayhLRVJOX0VSUgogCQkJICAg ICAgICJiY2FjaGUgKCVzKTogdmVyaWZ5IGZhaWxlZCBhdCBzZWN0b3IgJWxsdVxuIiwKIAkJCSAg ICAgICBiZGV2bmFtZShkYy0+YmRldiwgbmFtZSksCi0JCQkgICAgICAgKHVpbnQ2NF90KSBzLT5v cmlnX2Jpby0+Ymlfc2VjdG9yKTsKKwkJCSAgICAgICAodWludDY0X3QpIHMtPm9yaWdfYmlvLT5i aV9pdGVyLmJpX3NlY3Rvcik7CiAKIAkJa3VubWFwKGJ2LT5idl9wYWdlKTsKIAkJa3VubWFwKGNo ZWNrLT5iaV9pb192ZWNbaV0uYnZfcGFnZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2JjYWNo ZS9pby5jIGIvZHJpdmVycy9tZC9iY2FjaGUvaW8uYwppbmRleCA5MDU2NjMyLi5jYzRiYTJkIDEw MDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9pby5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hl L2lvLmMKQEAgLTIxLDE4ICsyMSwxOCBAQCBzdGF0aWMgdm9pZCBiY2hfYmlfaWR4X2hhY2tfZW5k aW8oc3RydWN0IGJpbyAqYmlvLCBpbnQgZXJyb3IpCiAKIHN0YXRpYyB2b2lkIGJjaF9nZW5lcmlj X21ha2VfcmVxdWVzdF9oYWNrKHN0cnVjdCBiaW8gKmJpbykKIHsKLQlpZiAoYmlvLT5iaV9pZHgp IHsKKwlpZiAoYmlvLT5iaV9pdGVyLmJpX2lkeCkgewogCQlzdHJ1Y3QgYmlvICpjbG9uZSA9IGJp b19hbGxvYyhHRlBfTk9JTywgYmlvX3NlZ21lbnRzKGJpbykpOwogCiAJCW1lbWNweShjbG9uZS0+ YmlfaW9fdmVjLAogCQkgICAgICAgYmlvX2lvdmVjKGJpbyksCiAJCSAgICAgICBiaW9fc2VnbWVu dHMoYmlvKSAqIHNpemVvZihzdHJ1Y3QgYmlvX3ZlYykpOwogCi0JCWNsb25lLT5iaV9zZWN0b3IJ PSBiaW8tPmJpX3NlY3RvcjsKKwkJY2xvbmUtPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmlvLT5iaV9p dGVyLmJpX3NlY3RvcjsKIAkJY2xvbmUtPmJpX2JkZXYJCT0gYmlvLT5iaV9iZGV2OwogCQljbG9u ZS0+YmlfcncJCT0gYmlvLT5iaV9ydzsKIAkJY2xvbmUtPmJpX3ZjbnQJCT0gYmlvX3NlZ21lbnRz KGJpbyk7Ci0JCWNsb25lLT5iaV9zaXplCQk9IGJpby0+Ymlfc2l6ZTsKKwkJY2xvbmUtPmJpX2l0 ZXIuYmlfc2l6ZQk9IGJpby0+YmlfaXRlci5iaV9zaXplOwogCiAJCWNsb25lLT5iaV9wcml2YXRl CT0gYmlvOwogCQljbG9uZS0+YmlfZW5kX2lvCT0gYmNoX2JpX2lkeF9oYWNrX2VuZGlvOwpAQCAt NzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBiY2hfZ2VuZXJpY19tYWtlX3JlcXVlc3RfaGFjayhz dHJ1Y3QgYmlvICpiaW8pCiBzdHJ1Y3QgYmlvICpiY2hfYmlvX3NwbGl0KHN0cnVjdCBiaW8gKmJp bywgaW50IHNlY3RvcnMsCiAJCQkgIGdmcF90IGdmcCwgc3RydWN0IGJpb19zZXQgKmJzKQogewot CXVuc2lnbmVkIGlkeCA9IGJpby0+YmlfaWR4LCB2Y250ID0gMCwgbmJ5dGVzID0gc2VjdG9ycyA8 PCA5OworCXVuc2lnbmVkIGlkeCA9IGJpby0+YmlfaXRlci5iaV9pZHgsIHZjbnQgPSAwLCBuYnl0 ZXMgPSBzZWN0b3JzIDw8IDk7CiAJc3RydWN0IGJpb192ZWMgKmJ2OwogCXN0cnVjdCBiaW8gKnJl dCA9IE5VTEw7CiAKQEAgLTkwLDcgKzkwLDcgQEAgc3RydWN0IGJpbyAqYmNoX2Jpb19zcGxpdChz dHJ1Y3QgYmlvICpiaW8sIGludCBzZWN0b3JzLAogCX0KIAogCWJpb19mb3JfZWFjaF9zZWdtZW50 KGJ2LCBiaW8sIGlkeCkgewotCQl2Y250ID0gaWR4IC0gYmlvLT5iaV9pZHg7CisJCXZjbnQgPSBp ZHggLSBiaW8tPmJpX2l0ZXIuYmlfaWR4OwogCiAJCWlmICghbmJ5dGVzKSB7CiAJCQlyZXQgPSBi aW9fYWxsb2NfYmlvc2V0KGdmcCwgdmNudCwgYnMpOwpAQCAtMTE5LDE1ICsxMTksMTUgQEAgc3Ry dWN0IGJpbyAqYmNoX2Jpb19zcGxpdChzdHJ1Y3QgYmlvICpiaW8sIGludCBzZWN0b3JzLAogCX0K IG91dDoKIAlyZXQtPmJpX2JkZXYJPSBiaW8tPmJpX2JkZXY7Ci0JcmV0LT5iaV9zZWN0b3IJPSBi aW8tPmJpX3NlY3RvcjsKLQlyZXQtPmJpX3NpemUJPSBzZWN0b3JzIDw8IDk7CisJcmV0LT5iaV9p dGVyLmJpX3NlY3Rvcgk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CisJcmV0LT5iaV9pdGVyLmJp X3NpemUJPSBzZWN0b3JzIDw8IDk7CiAJcmV0LT5iaV9ydwk9IGJpby0+Ymlfcnc7CiAJcmV0LT5i aV92Y250CT0gdmNudDsKIAlyZXQtPmJpX21heF92ZWNzID0gdmNudDsKIAotCWJpby0+Ymlfc2Vj dG9yCSs9IHNlY3RvcnM7Ci0JYmlvLT5iaV9zaXplCS09IHNlY3RvcnMgPDwgOTsKLQliaW8tPmJp X2lkeAkgPSBpZHg7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvcgkrPSBzZWN0b3JzOworCWJpby0+ YmlfaXRlci5iaV9zaXplCS09IHNlY3RvcnMgPDwgOTsKKwliaW8tPmJpX2l0ZXIuYmlfaWR4CSA9 IGlkeDsKIAogCWlmIChiaW9faW50ZWdyaXR5KGJpbykpIHsKIAkJaWYgKGJpb19pbnRlZ3JpdHlf Y2xvbmUocmV0LCBiaW8sIGdmcCkpIHsKQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0aWMgdW5zaWdu ZWQgYmNoX2Jpb19tYXhfc2VjdG9ycyhzdHJ1Y3QgYmlvICpiaW8pCiAJCWJpb19mb3JfZWFjaF9z ZWdtZW50KGJ2LCBiaW8sIGkpIHsKIAkJCXN0cnVjdCBidmVjX21lcmdlX2RhdGEgYnZtID0gewog CQkJCS5iaV9iZGV2CT0gYmlvLT5iaV9iZGV2LAotCQkJCS5iaV9zZWN0b3IJPSBiaW8tPmJpX3Nl Y3RvciwKKwkJCQkuYmlfc2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJCQkuYmlf c2l6ZQk9IHJldCA8PCA5LAogCQkJCS5iaV9ydwkJPSBiaW8tPmJpX3J3LAogCQkJfTsKQEAgLTI3 Miw4ICsyNzIsOCBAQCB2b2lkIF9fYmNoX3N1Ym1pdF9iYmlvKHN0cnVjdCBiaW8gKmJpbywgc3Ry dWN0IGNhY2hlX3NldCAqYykKIHsKIAlzdHJ1Y3QgYmJpbyAqYiA9IGNvbnRhaW5lcl9vZihiaW8s IHN0cnVjdCBiYmlvLCBiaW8pOwogCi0JYmlvLT5iaV9zZWN0b3IJPSBQVFJfT0ZGU0VUKCZiLT5r ZXksIDApOwotCWJpby0+YmlfYmRldgk9IFBUUl9DQUNIRShjLCAmYi0+a2V5LCAwKS0+YmRldjsK KwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gUFRSX09GRlNFVCgmYi0+a2V5LCAwKTsKKwliaW8t PmJpX2JkZXYJCT0gUFRSX0NBQ0hFKGMsICZiLT5rZXksIDApLT5iZGV2OwogCiAJYi0+c3VibWl0 X3RpbWVfdXMgPSBsb2NhbF9jbG9ja191cygpOwogCWNsb3N1cmVfYmlvX3N1Ym1pdChiaW8sIGJp by0+YmlfcHJpdmF0ZSwgUFRSX0NBQ0hFKGMsICZiLT5rZXksIDApKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvYmNhY2hlL2pvdXJuYWwuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL2pvdXJuYWwuYwpp bmRleCBiYTk1YWI4Li4yMTY5YWQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9qb3Vy bmFsLmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvam91cm5hbC5jCkBAIC00OSwxMCArNDksMTAg QEAgcmVyZWFkOgkJbGVmdCA9IGNhLT5zYi5idWNrZXRfc2l6ZSAtIG9mZnNldDsKIAkJbGVuID0g bWluX3QodW5zaWduZWQsIGxlZnQsIFBBR0VfU0VDVE9SUyAqIDgpOwogCiAJCWJpb19yZXNldChi aW8pOwotCQliaW8tPmJpX3NlY3Rvcgk9IGJ1Y2tldCArIG9mZnNldDsKKwkJYmlvLT5iaV9pdGVy LmJpX3NlY3Rvcgk9IGJ1Y2tldCArIG9mZnNldDsKIAkJYmlvLT5iaV9iZGV2CT0gY2EtPmJkZXY7 CiAJCWJpby0+YmlfcncJPSBSRUFEOwotCQliaW8tPmJpX3NpemUJPSBsZW4gPDwgOTsKKwkJYmlv LT5iaV9pdGVyLmJpX3NpemUJPSBsZW4gPDwgOTsKIAogCQliaW8tPmJpX2VuZF9pbwk9IGpvdXJu YWxfcmVhZF9lbmRpbzsKIAkJYmlvLT5iaV9wcml2YXRlID0gJm9wLT5jbDsKQEAgLTQ0NiwxMyAr NDQ2LDEzIEBAIHN0YXRpYyB2b2lkIGRvX2pvdXJuYWxfZGlzY2FyZChzdHJ1Y3QgY2FjaGUgKmNh KQogCQlhdG9taWNfc2V0KCZqYS0+ZGlzY2FyZF9pbl9mbGlnaHQsIERJU0NBUkRfSU5fRkxJR0hU KTsKIAogCQliaW9faW5pdChiaW8pOwotCQliaW8tPmJpX3NlY3RvcgkJPSBidWNrZXRfdG9fc2Vj dG9yKGNhLT5zZXQsCisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IJPSBidWNrZXRfdG9fc2VjdG9y KGNhLT5zZXQsCiAJCQkJCQljYS0+c2IuZFtqYS0+ZGlzY2FyZF9pZHhdKTsKIAkJYmlvLT5iaV9i ZGV2CQk9IGNhLT5iZGV2OwogCQliaW8tPmJpX3J3CQk9IFJFUV9XUklURXxSRVFfRElTQ0FSRDsK IAkJYmlvLT5iaV9tYXhfdmVjcwk9IDE7CiAJCWJpby0+YmlfaW9fdmVjCQk9IGJpby0+YmlfaW5s aW5lX3ZlY3M7Ci0JCWJpby0+Ymlfc2l6ZQkJPSBidWNrZXRfYnl0ZXMoY2EpOworCQliaW8tPmJp X2l0ZXIuYmlfc2l6ZQk9IGJ1Y2tldF9ieXRlcyhjYSk7CiAJCWJpby0+YmlfZW5kX2lvCQk9IGpv dXJuYWxfZGlzY2FyZF9lbmRpbzsKIAogCQljbG9zdXJlX2dldCgmY2EtPnNldC0+Y2wpOwpAQCAt NjIzLDEwICs2MjMsMTAgQEAgc3RhdGljIHZvaWQgam91cm5hbF93cml0ZV91bmxvY2tlZChzdHJ1 Y3QgY2xvc3VyZSAqY2wpCiAJCWF0b21pY19sb25nX2FkZChzZWN0b3JzLCAmY2EtPm1ldGFfc2Vj dG9yc193cml0dGVuKTsKIAogCQliaW9fcmVzZXQoYmlvKTsKLQkJYmlvLT5iaV9zZWN0b3IJPSBQ VFJfT0ZGU0VUKGssIGkpOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gUFRSX09GRlNFVChr LCBpKTsKIAkJYmlvLT5iaV9iZGV2CT0gY2EtPmJkZXY7CiAJCWJpby0+YmlfcncJPSBSRVFfV1JJ VEV8UkVRX1NZTkN8UkVRX01FVEF8UkVRX0ZMVVNIfFJFUV9GVUE7Ci0JCWJpby0+Ymlfc2l6ZQk9 IHNlY3RvcnMgPDwgOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBzZWN0b3JzIDw8IDk7CiAK IAkJYmlvLT5iaV9lbmRfaW8JPSBqb3VybmFsX3dyaXRlX2VuZGlvOwogCQliaW8tPmJpX3ByaXZh dGUgPSB3OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvbW92aW5nZ2MuYyBiL2RyaXZl cnMvbWQvYmNhY2hlL21vdmluZ2djLmMKaW5kZXggMWEzYjRmNC4uZWY2MzBmNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9tZC9iY2FjaGUvbW92aW5nZ2MuYworKysgYi9kcml2ZXJzL21kL2JjYWNoZS9t b3ZpbmdnYy5jCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyB2b2lkIG1vdmluZ19pbml0KHN0cnVj dCBtb3ZpbmdfaW8gKmlvKQogCWJpb19nZXQoYmlvKTsKIAliaW9fc2V0X3ByaW8oYmlvLCBJT1BS SU9fUFJJT19WQUxVRShJT1BSSU9fQ0xBU1NfSURMRSwgMCkpOwogCi0JYmlvLT5iaV9zaXplCQk9 IEtFWV9TSVpFKCZpby0+dy0+a2V5KSA8PCA5OworCWJpby0+YmlfaXRlci5iaV9zaXplCT0gS0VZ X1NJWkUoJmlvLT53LT5rZXkpIDw8IDk7CiAJYmlvLT5iaV9tYXhfdmVjcwk9IERJVl9ST1VORF9V UChLRVlfU0laRSgmaW8tPnctPmtleSksCiAJCQkJCSAgICAgICBQQUdFX1NFQ1RPUlMpOwogCWJp by0+YmlfcHJpdmF0ZQkJPSAmaW8tPnMuY2w7CkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyB2b2lk IHdyaXRlX21vdmluZyhzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJaWYgKCFzLT5lcnJvcikgewogCQlt b3ZpbmdfaW5pdChpbyk7CiAKLQkJaW8tPmJpby5iaW8uYmlfc2VjdG9yCT0gS0VZX1NUQVJUKCZp by0+dy0+a2V5KTsKKwkJaW8tPmJpby5iaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBLRVlfU1RBUlQo JmlvLT53LT5rZXkpOwogCQlzLT5vcC5sb2NrCQk9IC0xOwogCQlzLT5vcC53cml0ZV9wcmlvCT0g MTsKIAkJcy0+b3AuY2FjaGVfYmlvCQk9ICZpby0+YmlvLmJpbzsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWQvYmNhY2hlL3JlcXVlc3QuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYwppbmRl eCAyYzJlMWMxLi5kOTRjMDhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0 LmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jCkBAIC0yMTksNyArMjE5LDcgQEAg c3RhdGljIHZvaWQgYmlvX2ludmFsaWRhdGUoc3RydWN0IGNsb3N1cmUgKmNsKQogCXN0cnVjdCBi aW8gKmJpbyA9IG9wLT5jYWNoZV9iaW87CiAKIAlwcl9kZWJ1ZygiaW52YWxpZGF0aW5nICVpIHNl Y3RvcnMgZnJvbSAlbGx1IiwKLQkJIGJpb19zZWN0b3JzKGJpbyksICh1aW50NjRfdCkgYmlvLT5i aV9zZWN0b3IpOworCQkgYmlvX3NlY3RvcnMoYmlvKSwgKHVpbnQ2NF90KSBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAogCXdoaWxlIChiaW9fc2VjdG9ycyhiaW8pKSB7CiAJCXVuc2lnbmVkIGxl biA9IG1pbihiaW9fc2VjdG9ycyhiaW8pLCAxVSA8PCAxNCk7CkBAIC0yMjcsMTEgKzIyNywxMSBA QCBzdGF0aWMgdm9pZCBiaW9faW52YWxpZGF0ZShzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJCWlmIChi Y2hfa2V5bGlzdF9yZWFsbG9jKCZvcC0+a2V5cywgMCwgb3AtPmMpKQogCQkJZ290byBvdXQ7CiAK LQkJYmlvLT5iaV9zZWN0b3IJKz0gbGVuOwotCQliaW8tPmJpX3NpemUJLT0gbGVuIDw8IDk7CisJ CWJpby0+YmlfaXRlci5iaV9zZWN0b3IJKz0gbGVuOworCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZQkt PSBsZW4gPDwgOTsKIAogCQliY2hfa2V5bGlzdF9hZGQoJm9wLT5rZXlzLAotCQkJCSZLRVkob3At Pmlub2RlLCBiaW8tPmJpX3NlY3RvciwgbGVuKSk7CisJCQkJJktFWShvcC0+aW5vZGUsIGJpby0+ YmlfaXRlci5iaV9zZWN0b3IsIGxlbikpOwogCX0KIAogCW9wLT5pbnNlcnRfZGF0YV9kb25lID0g dHJ1ZTsKQEAgLTUwOSw3ICs1MDksNyBAQCBzdGF0aWMgdm9pZCBiY2hfaW5zZXJ0X2RhdGFfbG9v cChzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJCWsgPSBvcC0+a2V5cy50b3A7CiAJCWJrZXlfaW5pdChr KTsKIAkJU0VUX0tFWV9JTk9ERShrLCBvcC0+aW5vZGUpOwotCQlTRVRfS0VZX09GRlNFVChrLCBi aW8tPmJpX3NlY3Rvcik7CisJCVNFVF9LRVlfT0ZGU0VUKGssIGJpby0+YmlfaXRlci5iaV9zZWN0 b3IpOwogCiAJCWlmICghYmNoX2FsbG9jX3NlY3RvcnMoaywgYmlvX3NlY3RvcnMoYmlvKSwgcykp CiAJCQlnb3RvIGVycjsKQEAgLTgwMiw5ICs4MDIsMTIgQEAgc3RhdGljIHZvaWQgcmVxdWVzdF9y ZWFkX2RvbmUoc3RydWN0IGNsb3N1cmUgKmNsKQogCiAJaWYgKHMtPm9wLmNhY2hlX2Jpbykgewog CQliaW9fcmVzZXQocy0+b3AuY2FjaGVfYmlvKTsKLQkJcy0+b3AuY2FjaGVfYmlvLT5iaV9zZWN0 b3IJPSBzLT5jYWNoZV9taXNzLT5iaV9zZWN0b3I7Ci0JCXMtPm9wLmNhY2hlX2Jpby0+YmlfYmRl dgk9IHMtPmNhY2hlX21pc3MtPmJpX2JkZXY7Ci0JCXMtPm9wLmNhY2hlX2Jpby0+Ymlfc2l6ZQk9 IHMtPmNhY2hlX2Jpb19zZWN0b3JzIDw8IDk7CisJCXMtPm9wLmNhY2hlX2Jpby0+YmlfaXRlci5i aV9zZWN0b3IgPQorCQkJcy0+Y2FjaGVfbWlzcy0+YmlfaXRlci5iaV9zZWN0b3I7CisJCXMtPm9w LmNhY2hlX2Jpby0+YmlfYmRldiA9CisJCQlzLT5jYWNoZV9taXNzLT5iaV9iZGV2OworCQlzLT5v cC5jYWNoZV9iaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9CisJCQlzLT5jYWNoZV9iaW9fc2VjdG9ycyA8 PCA5OwogCQliY2hfYmlvX21hcChzLT5vcC5jYWNoZV9iaW8sIE5VTEwpOwogCiAJCWJpb19jb3B5 X2RhdGEocy0+Y2FjaGVfbWlzcywgcy0+b3AuY2FjaGVfYmlvKTsKQEAgLTg4Myw5ICs4ODYsOSBA QCBzdGF0aWMgaW50IGNhY2hlZF9kZXZfY2FjaGVfbWlzcyhzdHJ1Y3QgYnRyZWUgKmIsIHN0cnVj dCBzZWFyY2ggKnMsCiAJaWYgKCFzLT5vcC5jYWNoZV9iaW8pCiAJCWdvdG8gb3V0X3N1Ym1pdDsK IAotCXMtPm9wLmNhY2hlX2Jpby0+Ymlfc2VjdG9yCT0gbWlzcy0+Ymlfc2VjdG9yOworCXMtPm9w LmNhY2hlX2Jpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBtaXNzLT5iaV9pdGVyLmJpX3NlY3RvcjsK IAlzLT5vcC5jYWNoZV9iaW8tPmJpX2JkZXYJPSBtaXNzLT5iaV9iZGV2OwotCXMtPm9wLmNhY2hl X2Jpby0+Ymlfc2l6ZQk9IHMtPmNhY2hlX2Jpb19zZWN0b3JzIDw8IDk7CisJcy0+b3AuY2FjaGVf YmlvLT5iaV9pdGVyLmJpX3NpemUgPSBzLT5jYWNoZV9iaW9fc2VjdG9ycyA8PCA5OwogCiAJcy0+ b3AuY2FjaGVfYmlvLT5iaV9lbmRfaW8JPSByZXF1ZXN0X2VuZGlvOwogCXMtPm9wLmNhY2hlX2Jp by0+YmlfcHJpdmF0ZQk9ICZzLT5jbDsKQEAgLTkzOSw3ICs5NDIsNyBAQCBzdGF0aWMgdm9pZCBy ZXF1ZXN0X3dyaXRlKHN0cnVjdCBjYWNoZWRfZGV2ICpkYywgc3RydWN0IHNlYXJjaCAqcykKIAlz dHJ1Y3QgY2xvc3VyZSAqY2wgPSAmcy0+Y2w7CiAJc3RydWN0IGJpbyAqYmlvID0gJnMtPmJpby5i aW87CiAJc3RydWN0IGJrZXkgc3RhcnQsIGVuZDsKLQlzdGFydCA9IEtFWShkYy0+ZGlzay5pZCwg YmlvLT5iaV9zZWN0b3IsIDApOworCXN0YXJ0ID0gS0VZKGRjLT5kaXNrLmlkLCBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLCAwKTsKIAllbmQgPSBLRVkoZGMtPmRpc2suaWQsIGJpb19lbmRfc2VjdG9y KGJpbyksIDApOwogCiAJYmNoX2tleWJ1Zl9jaGVja19vdmVybGFwcGluZygmcy0+b3AuYy0+bW92 aW5nX2djX2tleXMsICZzdGFydCwgJmVuZCk7CkBAIC05ODAsNyArOTgzLDcgQEAgc3RhdGljIHZv aWQgcmVxdWVzdF93cml0ZShzdHJ1Y3QgY2FjaGVkX2RldiAqZGMsIHN0cnVjdCBzZWFyY2ggKnMp CiAJCQlzLT5vcC5jYWNoZV9iaW8gPSBiaW9fY2xvbmVfYmlvc2V0KGJpbywgR0ZQX05PSU8sCiAJ CQkJCQkJICAgZGMtPmRpc2suYmlvX3NwbGl0KTsKIAotCQkJYmlvLT5iaV9zaXplID0gMDsKKwkJ CWJpby0+YmlfaXRlci5iaV9zaXplID0gMDsKIAkJCWJpby0+YmlfdmNudCA9IDA7CiAJCQljbG9z dXJlX2Jpb19zdWJtaXQoYmlvLCBjbCwgcy0+ZCk7CiAJCX0gZWxzZSB7CkBAIC0xMDgxLDggKzEw ODQsOCBAQCBzdGF0aWMgdm9pZCBjaGVja19zaG91bGRfc2tpcChzdHJ1Y3QgY2FjaGVkX2RldiAq ZGMsIHN0cnVjdCBzZWFyY2ggKnMpCiAJICAgICAoYmlvLT5iaV9ydyAmIFJFUV9XUklURSkpKQog CQlnb3RvIHNraXA7CiAKLQlpZiAoYmlvLT5iaV9zZWN0b3IgICAmIChjLT5zYi5ibG9ja19zaXpl IC0gMSkgfHwKLQkgICAgYmlvX3NlY3RvcnMoYmlvKSAmIChjLT5zYi5ibG9ja19zaXplIC0gMSkp IHsKKwlpZiAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAmIChjLT5zYi5ibG9ja19zaXplIC0gMSkg fHwKKwkgICAgYmlvX3NlY3RvcnMoYmlvKSAgICAgICAmIChjLT5zYi5ibG9ja19zaXplIC0gMSkp IHsKIAkJcHJfZGVidWcoInNraXBwaW5nIHVuYWxpZ25lZCBpbyIpOwogCQlnb3RvIHNraXA7CiAJ fQpAQCAtMTEwMSw4ICsxMTA0LDkgQEAgc3RhdGljIHZvaWQgY2hlY2tfc2hvdWxkX3NraXAoc3Ry dWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3Qgc2VhcmNoICpzKQogCiAJCXNwaW5fbG9jaygmZGMt PmlvX2xvY2spOwogCi0JCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KGksIGlvaGFzaChkYywgYmlvLT5i aV9zZWN0b3IpLCBoYXNoKQotCQkJaWYgKGktPmxhc3QgPT0gYmlvLT5iaV9zZWN0b3IgJiYKKwkJ aGxpc3RfZm9yX2VhY2hfZW50cnkoaSwgaW9oYXNoKGRjLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y KSwKKwkJCQkgICAgIGhhc2gpCisJCQlpZiAoaS0+bGFzdCA9PSBiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yICYmCiAJCQkgICAgdGltZV9iZWZvcmUoamlmZmllcywgaS0+amlmZmllcykpCiAJCQkJZ290 byBmb3VuZDsKIApAQCAtMTExMSw4ICsxMTE1LDggQEAgc3RhdGljIHZvaWQgY2hlY2tfc2hvdWxk X3NraXAoc3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3Qgc2VhcmNoICpzKQogCQlhZGRfc2Vx dWVudGlhbChzLT50YXNrKTsKIAkJaS0+c2VxdWVudGlhbCA9IDA7CiBmb3VuZDoKLQkJaWYgKGkt PnNlcXVlbnRpYWwgKyBiaW8tPmJpX3NpemUgPiBpLT5zZXF1ZW50aWFsKQotCQkJaS0+c2VxdWVu dGlhbAkrPSBiaW8tPmJpX3NpemU7CisJCWlmIChpLT5zZXF1ZW50aWFsICsgYmlvLT5iaV9pdGVy LmJpX3NpemUgPiBpLT5zZXF1ZW50aWFsKQorCQkJaS0+c2VxdWVudGlhbAkrPSBiaW8tPmJpX2l0 ZXIuYmlfc2l6ZTsKIAogCQlpLT5sYXN0CQkJID0gYmlvX2VuZF9zZWN0b3IoYmlvKTsKIAkJaS0+ amlmZmllcwkJID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoNTAwMCk7CkBAIC0xMTI0LDcg KzExMjgsNyBAQCBmb3VuZDoKIAogCQlzcGluX3VubG9jaygmZGMtPmlvX2xvY2spOwogCX0gZWxz ZSB7Ci0JCXMtPnRhc2stPnNlcXVlbnRpYWxfaW8gPSBiaW8tPmJpX3NpemU7CisJCXMtPnRhc2st PnNlcXVlbnRpYWxfaW8gPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAogCQlhZGRfc2VxdWVudGlh bChzLT50YXNrKTsKIAl9CkBAIC0xMTY0LDcgKzExNjgsNyBAQCBzdGF0aWMgdm9pZCBjYWNoZWRf ZGV2X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlv KQogCXBhcnRfc3RhdF91bmxvY2soKTsKIAogCWJpby0+YmlfYmRldiA9IGRjLT5iZGV2OwotCWJp by0+Ymlfc2VjdG9yICs9IGRjLT5zYi5kYXRhX29mZnNldDsKKwliaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yICs9IGRjLT5zYi5kYXRhX29mZnNldDsKIAogCWlmIChjYWNoZWRfZGV2X2dldChkYykpIHsK IAkJcyA9IHNlYXJjaF9hbGxvYyhiaW8sIGQpOwpAQCAtMTI0Nyw5ICsxMjUxLDkgQEAgc3RhdGlj IGludCBmbGFzaF9kZXZfY2FjaGVfbWlzcyhzdHJ1Y3QgYnRyZWUgKmIsIHN0cnVjdCBzZWFyY2gg KnMsCiAJCXNlY3RvcnMJLT0gajsKIAl9CiAKLQliaW9fYWR2YW5jZShiaW8sIG1pbihzZWN0b3Jz IDw8IDksIGJpby0+Ymlfc2l6ZSkpOworCWJpb19hZHZhbmNlKGJpbywgbWluKHNlY3RvcnMgPDwg OSwgYmlvLT5iaV9pdGVyLmJpX3NpemUpKTsKIAotCWlmICghYmlvLT5iaV9zaXplKQorCWlmICgh YmlvLT5iaV9pdGVyLmJpX3NpemUpCiAJCXMtPm9wLmxvb2t1cF9kb25lID0gdHJ1ZTsKIAogCXJl dHVybiAwOwpAQCAtMTI3Nyw3ICsxMjgxLDcgQEAgc3RhdGljIHZvaWQgZmxhc2hfZGV2X21ha2Vf cmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvKQogCQljbG9z dXJlX2NhbGwoJnMtPm9wLmNsLCBidHJlZV9yZWFkX2FzeW5jLCBOVUxMLCBjbCk7CiAJfSBlbHNl IGlmIChiaW9faGFzX2RhdGEoYmlvKSB8fCBzLT5vcC5za2lwKSB7CiAJCWJjaF9rZXlidWZfY2hl Y2tfb3ZlcmxhcHBpbmcoJnMtPm9wLmMtPm1vdmluZ19nY19rZXlzLAotCQkJCQkmS0VZKGQtPmlk LCBiaW8tPmJpX3NlY3RvciwgMCksCisJCQkJCSZLRVkoZC0+aWQsIGJpby0+YmlfaXRlci5iaV9z ZWN0b3IsIDApLAogCQkJCQkmS0VZKGQtPmlkLCBiaW9fZW5kX3NlY3RvcihiaW8pLCAwKSk7CiAK IAkJcy0+d3JpdGViYWNrCT0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL3N1 cGVyLmMgYi9kcml2ZXJzL21kL2JjYWNoZS9zdXBlci5jCmluZGV4IGRjMDczZWIuLmZmZjQ4OTQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMKKysrIGIvZHJpdmVycy9tZC9i Y2FjaGUvc3VwZXIuYwpAQCAtMjQwLDkgKzI0MCw5IEBAIHN0YXRpYyB2b2lkIF9fd3JpdGVfc3Vw ZXIoc3RydWN0IGNhY2hlX3NiICpzYiwgc3RydWN0IGJpbyAqYmlvKQogCXN0cnVjdCBjYWNoZV9z YiAqb3V0ID0gcGFnZV9hZGRyZXNzKGJpby0+YmlfaW9fdmVjWzBdLmJ2X3BhZ2UpOwogCXVuc2ln bmVkIGk7CiAKLQliaW8tPmJpX3NlY3Rvcgk9IFNCX1NFQ1RPUjsKLQliaW8tPmJpX3J3CT0gUkVR X1NZTkN8UkVRX01FVEE7Ci0JYmlvLT5iaV9zaXplCT0gU0JfU0laRTsKKwliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yCT0gU0JfU0VDVE9SOworCWJpby0+YmlfcncJCT0gUkVRX1NZTkN8UkVRX01FVEE7 CisJYmlvLT5iaV9pdGVyLmJpX3NpemUJPSBTQl9TSVpFOwogCWJjaF9iaW9fbWFwKGJpbywgTlVM TCk7CiAKIAlvdXQtPm9mZnNldAkJPSBjcHVfdG9fbGU2NChzYi0+b2Zmc2V0KTsKQEAgLTM1NCw3 ICszNTQsNyBAQCBzdGF0aWMgdm9pZCB1dWlkX2lvKHN0cnVjdCBjYWNoZV9zZXQgKmMsIHVuc2ln bmVkIGxvbmcgcncsCiAJCXN0cnVjdCBiaW8gKmJpbyA9IGJjaF9iYmlvX2FsbG9jKGMpOwogCiAJ CWJpby0+YmlfcncJPSBSRVFfU1lOQ3xSRVFfTUVUQXxydzsKLQkJYmlvLT5iaV9zaXplCT0gS0VZ X1NJWkUoaykgPDwgOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBLRVlfU0laRShrKSA8PCA5 OwogCiAJCWJpby0+YmlfZW5kX2lvCT0gdXVpZF9lbmRpbzsKIAkJYmlvLT5iaV9wcml2YXRlID0g Y2w7CkBAIC01MTAsMTAgKzUxMCwxMCBAQCBzdGF0aWMgdm9pZCBwcmlvX2lvKHN0cnVjdCBjYWNo ZSAqY2EsIHVpbnQ2NF90IGJ1Y2tldCwgdW5zaWduZWQgbG9uZyBydykKIAogCWNsb3N1cmVfaW5p dF9zdGFjayhjbCk7CiAKLQliaW8tPmJpX3NlY3Rvcgk9IGJ1Y2tldCAqIGNhLT5zYi5idWNrZXRf c2l6ZTsKLQliaW8tPmJpX2JkZXYJPSBjYS0+YmRldjsKLQliaW8tPmJpX3J3CT0gUkVRX1NZTkN8 UkVRX01FVEF8cnc7Ci0JYmlvLT5iaV9zaXplCT0gYnVja2V0X2J5dGVzKGNhKTsKKwliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yCT0gYnVja2V0ICogY2EtPnNiLmJ1Y2tldF9zaXplOworCWJpby0+Ymlf YmRldgkJPSBjYS0+YmRldjsKKwliaW8tPmJpX3J3CQk9IFJFUV9TWU5DfFJFUV9NRVRBfHJ3Owor CWJpby0+YmlfaXRlci5iaV9zaXplCT0gYnVja2V0X2J5dGVzKGNhKTsKIAogCWJpby0+YmlfZW5k X2lvCT0gcHJpb19lbmRpbzsKIAliaW8tPmJpX3ByaXZhdGUgPSBjYTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvYmNhY2hlL3V0aWwuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3V0aWwuYwppbmRleCA5 OGViODExLi5iOTk1ZDVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS91dGlsLmMKKysr IGIvZHJpdmVycy9tZC9iY2FjaGUvdXRpbC5jCkBAIC0yMDMsMTAgKzIwMywxMCBAQCB1bnNpZ25l ZCBiY2hfbmV4dF9kZWxheShzdHJ1Y3QgcmF0ZWxpbWl0ICpkLCB1aW50NjRfdCBkb25lKQogCiB2 b2lkIGJjaF9iaW9fbWFwKHN0cnVjdCBiaW8gKmJpbywgdm9pZCAqYmFzZSkKIHsKLQlzaXplX3Qg c2l6ZSA9IGJpby0+Ymlfc2l6ZTsKKwlzaXplX3Qgc2l6ZSA9IGJpby0+YmlfaXRlci5iaV9zaXpl OwogCXN0cnVjdCBiaW9fdmVjICpidiA9IGJpby0+YmlfaW9fdmVjOwogCi0JQlVHX09OKCFiaW8t PmJpX3NpemUpOworCUJVR19PTighYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCUJVR19PTihiaW8t PmJpX3ZjbnQpOwogCiAJYnYtPmJ2X29mZnNldCA9IGJhc2UgPyAoKHVuc2lnbmVkIGxvbmcpIGJh c2UpICUgUEFHRV9TSVpFIDogMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL3dyaXRl YmFjay5jIGIvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmMKaW5kZXggMjJjYmZmNS4uMDI5 YWMyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmMKKysrIGIvZHJp dmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmMKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgdm9p ZCBkaXJ0eV9pbml0KHN0cnVjdCBrZXlidWZfa2V5ICp3KQogCWlmICghaW8tPmRjLT53cml0ZWJh Y2tfcGVyY2VudCkKIAkJYmlvX3NldF9wcmlvKGJpbywgSU9QUklPX1BSSU9fVkFMVUUoSU9QUklP X0NMQVNTX0lETEUsIDApKTsKIAotCWJpby0+Ymlfc2l6ZQkJPSBLRVlfU0laRSgmdy0+a2V5KSA8 PCA5OworCWJpby0+YmlfaXRlci5iaV9zaXplCT0gS0VZX1NJWkUoJnctPmtleSkgPDwgOTsKIAli aW8tPmJpX21heF92ZWNzCT0gRElWX1JPVU5EX1VQKEtFWV9TSVpFKCZ3LT5rZXkpLCBQQUdFX1NF Q1RPUlMpOwogCWJpby0+YmlfcHJpdmF0ZQkJPSB3OwogCWJpby0+YmlfaW9fdmVjCQk9IGJpby0+ YmlfaW5saW5lX3ZlY3M7CkBAIC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVfZGly dHkoc3RydWN0IGNsb3N1cmUgKmNsKQogCiAJZGlydHlfaW5pdCh3KTsKIAlpby0+YmlvLmJpX3J3 CQk9IFdSSVRFOwotCWlvLT5iaW8uYmlfc2VjdG9yCT0gS0VZX1NUQVJUKCZ3LT5rZXkpOworCWlv LT5iaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBLRVlfU1RBUlQoJnctPmtleSk7CiAJaW8tPmJpby5i aV9iZGV2CQk9IGlvLT5kYy0+YmRldjsKIAlpby0+YmlvLmJpX2VuZF9pbwk9IGRpcnR5X2VuZGlv OwogCkBAIC00MTMsNyArNDEzLDcgQEAgc3RhdGljIHZvaWQgcmVhZF9kaXJ0eShzdHJ1Y3QgY2xv c3VyZSAqY2wpCiAJCWlvLT5kYwkJPSBkYzsKIAogCQlkaXJ0eV9pbml0KHcpOwotCQlpby0+Ymlv LmJpX3NlY3Rvcgk9IFBUUl9PRkZTRVQoJnctPmtleSwgMCk7CisJCWlvLT5iaW8uYmlfaXRlci5i aV9zZWN0b3IgPSBQVFJfT0ZGU0VUKCZ3LT5rZXksIDApOwogCQlpby0+YmlvLmJpX2JkZXYJCT0g UFRSX0NBQ0hFKGRjLT5kaXNrLmMsCiAJCQkJCQkgICAgJnctPmtleSwgMCktPmJkZXY7CiAJCWlv LT5iaW8uYmlfcncJCT0gUkVBRDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL3dyaXRl YmFjay5oIGIvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmgKaW5kZXggYzkxZjYxYi4uNjgx ZWZkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmgKKysrIGIvZHJp dmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGlubGlu ZSBib29sIHNob3VsZF93cml0ZWJhY2soc3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3QgYmlv ICpiaW8sCiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChkYy0+cGFydGlhbF9zdHJpcGVzX2V4cGVu c2l2ZSAmJgotCSAgICBiY2FjaGVfZGV2X3N0cmlwZV9kaXJ0eSgmZGMtPmRpc2ssIGJpby0+Ymlf c2VjdG9yLAorCSAgICBiY2FjaGVfZGV2X3N0cmlwZV9kaXJ0eSgmZGMtPmRpc2ssIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IsCiAJCQkJICAgIGJpb19zZWN0b3JzKGJpbykpKQogCQlyZXR1cm4gdHJ1 ZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1iaW8tcmVjb3JkLmggYi9kcml2ZXJzL21k L2RtLWJpby1yZWNvcmQuaAppbmRleCAzYThjZmEyLi41YWNlNDhlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL21kL2RtLWJpby1yZWNvcmQuaAorKysgYi9kcml2ZXJzL21kL2RtLWJpby1yZWNvcmQuaApA QCAtNDAsMTAgKzQwLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkbV9iaW9fcmVjb3JkKHN0cnVj dCBkbV9iaW9fZGV0YWlscyAqYmQsIHN0cnVjdCBiaW8gKmJpbykKIHsKIAl1bnNpZ25lZCBpOwog Ci0JYmQtPmJpX3NlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCWJkLT5iaV9zZWN0b3IgPSBiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yOwogCWJkLT5iaV9iZGV2ID0gYmlvLT5iaV9iZGV2OwotCWJkLT5i aV9zaXplID0gYmlvLT5iaV9zaXplOwotCWJkLT5iaV9pZHggPSBiaW8tPmJpX2lkeDsKKwliZC0+ Ymlfc2l6ZSA9IGJpby0+YmlfaXRlci5iaV9zaXplOworCWJkLT5iaV9pZHggPSBiaW8tPmJpX2l0 ZXIuYmlfaWR4OwogCWJkLT5iaV9mbGFncyA9IGJpby0+YmlfZmxhZ3M7CiAKIAlmb3IgKGkgPSAw OyBpIDwgYmlvLT5iaV92Y250OyBpKyspIHsKQEAgLTU2LDEwICs1NiwxMCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgZG1fYmlvX3Jlc3RvcmUoc3RydWN0IGRtX2Jpb19kZXRhaWxzICpiZCwgc3RydWN0 IGJpbyAqYmlvKQogewogCXVuc2lnbmVkIGk7CiAKLQliaW8tPmJpX3NlY3RvciA9IGJkLT5iaV9z ZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJkLT5iaV9zZWN0b3I7CiAJYmlvLT5i aV9iZGV2ID0gYmQtPmJpX2JkZXY7Ci0JYmlvLT5iaV9zaXplID0gYmQtPmJpX3NpemU7Ci0JYmlv LT5iaV9pZHggPSBiZC0+YmlfaWR4OworCWJpby0+YmlfaXRlci5iaV9zaXplID0gYmQtPmJpX3Np emU7CisJYmlvLT5iaV9pdGVyLmJpX2lkeCA9IGJkLT5iaV9pZHg7CiAJYmlvLT5iaV9mbGFncyA9 IGJkLT5iaV9mbGFnczsKIAogCWZvciAoaSA9IDA7IGkgPCBiaW8tPmJpX3ZjbnQ7IGkrKykgewpk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1idWZpby5jIGIvZHJpdmVycy9tZC9kbS1idWZpby5j CmluZGV4IDUyMjdlMDcuLjQxZWVkNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tYnVmaW8u YworKysgYi9kcml2ZXJzL21kL2RtLWJ1ZmlvLmMKQEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMg dm9pZCB1c2VfaW5saW5lX2JpbyhzdHJ1Y3QgZG1fYnVmZmVyICpiLCBpbnQgcncsIHNlY3Rvcl90 IGJsb2NrLAogCWJpb19pbml0KCZiLT5iaW8pOwogCWItPmJpby5iaV9pb192ZWMgPSBiLT5iaW9f dmVjOwogCWItPmJpby5iaV9tYXhfdmVjcyA9IERNX0JVRklPX0lOTElORV9WRUNTOwotCWItPmJp by5iaV9zZWN0b3IgPSBibG9jayA8PCBiLT5jLT5zZWN0b3JzX3Blcl9ibG9ja19iaXRzOworCWIt PmJpby5iaV9pdGVyLmJpX3NlY3RvciA9IGJsb2NrIDw8IGItPmMtPnNlY3RvcnNfcGVyX2Jsb2Nr X2JpdHM7CiAJYi0+YmlvLmJpX2JkZXYgPSBiLT5jLT5iZGV2OwogCWItPmJpby5iaV9lbmRfaW8g PSBlbmRfaW87CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tY2FjaGUtcG9saWN5LW1xLmMg Yi9kcml2ZXJzL21kL2RtLWNhY2hlLXBvbGljeS1tcS5jCmluZGV4IGRjMTEyYTcuLjZlOGFlZGIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY2FjaGUtcG9saWN5LW1xLmMKKysrIGIvZHJpdmVy cy9tZC9kbS1jYWNoZS1wb2xpY3ktbXEuYwpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgZW51bSBp b19wYXR0ZXJuIGlvdF9wYXR0ZXJuKHN0cnVjdCBpb190cmFja2VyICp0KQogCiBzdGF0aWMgdm9p ZCBpb3RfdXBkYXRlX3N0YXRzKHN0cnVjdCBpb190cmFja2VyICp0LCBzdHJ1Y3QgYmlvICpiaW8p CiB7Ci0JaWYgKGJpby0+Ymlfc2VjdG9yID09IGZyb21fb2Jsb2NrKHQtPmxhc3RfZW5kX29ibG9j aykgKyAxKQorCWlmIChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID09IGZyb21fb2Jsb2NrKHQtPmxh c3RfZW5kX29ibG9jaykgKyAxKQogCQl0LT5ucl9zZXFfc2FtcGxlcysrOwogCWVsc2UgewogCQkv KgpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyB2b2lkIGlvdF91cGRhdGVfc3RhdHMoc3RydWN0 IGlvX3RyYWNrZXIgKnQsIHN0cnVjdCBiaW8gKmJpbykKIAkJdC0+bnJfcmFuZF9zYW1wbGVzKys7 CiAJfQogCi0JdC0+bGFzdF9lbmRfb2Jsb2NrID0gdG9fb2Jsb2NrKGJpby0+Ymlfc2VjdG9yICsg YmlvX3NlY3RvcnMoYmlvKSAtIDEpOworCXQtPmxhc3RfZW5kX29ibG9jayA9IHRvX29ibG9jayhi aW9fZW5kX3NlY3RvcihiaW8pIC0gMSk7CiB9CiAKIHN0YXRpYyB2b2lkIGlvdF9jaGVja19mb3Jf cGF0dGVybl9zd2l0Y2goc3RydWN0IGlvX3RyYWNrZXIgKnQpCmRpZmYgLS1naXQgYS9kcml2ZXJz L21kL2RtLWNhY2hlLXRhcmdldC5jIGIvZHJpdmVycy9tZC9kbS1jYWNoZS10YXJnZXQuYwppbmRl eCAwZGYzZWMwLi5jOWYwZjgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdl dC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tY2FjaGUtdGFyZ2V0LmMKQEAgLTU2NSwxNCArNTY1LDE2 IEBAIHN0YXRpYyB2b2lkIHJlbWFwX3RvX29yaWdpbihzdHJ1Y3QgY2FjaGUgKmNhY2hlLCBzdHJ1 Y3QgYmlvICpiaW8pCiBzdGF0aWMgdm9pZCByZW1hcF90b19jYWNoZShzdHJ1Y3QgY2FjaGUgKmNh Y2hlLCBzdHJ1Y3QgYmlvICpiaW8sCiAJCQkgICBkbV9jYmxvY2tfdCBjYmxvY2spCiB7Ci0Jc2Vj dG9yX3QgYmlfc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX3QgYmlfc2VjdG9yID0g YmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAogCWJpby0+YmlfYmRldiA9IGNhY2hlLT5jYWNoZV9k ZXYtPmJkZXY7CiAJaWYgKCFibG9ja19zaXplX2lzX3Bvd2VyX29mX3R3byhjYWNoZSkpCi0JCWJp by0+Ymlfc2VjdG9yID0gKGZyb21fY2Jsb2NrKGNibG9jaykgKiBjYWNoZS0+c2VjdG9yc19wZXJf YmxvY2spICsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IChmcm9tX2NibG9jayhjYmxvY2sp ICoKKwkJCQkJICBjYWNoZS0+c2VjdG9yc19wZXJfYmxvY2spICsKIAkJCQlzZWN0b3JfZGl2KGJp X3NlY3RvciwgY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrKTsKIAllbHNlCi0JCWJpby0+Ymlfc2Vj dG9yID0gKGZyb21fY2Jsb2NrKGNibG9jaykgPDwgY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrX3No aWZ0KSB8CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSAoZnJvbV9jYmxvY2soY2Jsb2NrKSA8 PAorCQkJCQkgIGNhY2hlLT5zZWN0b3JzX3Blcl9ibG9ja19zaGlmdCkgfAogCQkJCShiaV9zZWN0 b3IgJiAoY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrIC0gMSkpOwogfQogCkBAIC02MTIsNyArNjE0 LDcgQEAgc3RhdGljIHZvaWQgcmVtYXBfdG9fY2FjaGVfZGlydHkoc3RydWN0IGNhY2hlICpjYWNo ZSwgc3RydWN0IGJpbyAqYmlvLAogCiBzdGF0aWMgZG1fb2Jsb2NrX3QgZ2V0X2Jpb19ibG9jayhz dHJ1Y3QgY2FjaGUgKmNhY2hlLCBzdHJ1Y3QgYmlvICpiaW8pCiB7Ci0Jc2VjdG9yX3QgYmxvY2tf bnIgPSBiaW8tPmJpX3NlY3RvcjsKKwlzZWN0b3JfdCBibG9ja19uciA9IGJpby0+YmlfaXRlci5i aV9zZWN0b3I7CiAKIAlpZiAoIWJsb2NrX3NpemVfaXNfcG93ZXJfb2ZfdHdvKGNhY2hlKSkKIAkJ KHZvaWQpIHNlY3Rvcl9kaXYoYmxvY2tfbnIsIGNhY2hlLT5zZWN0b3JzX3Blcl9ibG9jayk7CkBA IC0xMDY0LDcgKzEwNjYsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsdXNoX2JpbyhzdHJ1Y3Qg Y2FjaGUgKmNhY2hlLCBzdHJ1Y3QgYmlvICpiaW8pCiAJc2l6ZV90IHBiX2RhdGFfc2l6ZSA9IGdl dF9wZXJfYmlvX2RhdGFfc2l6ZShjYWNoZSk7CiAJc3RydWN0IHBlcl9iaW9fZGF0YSAqcGIgPSBn ZXRfcGVyX2Jpb19kYXRhKGJpbywgcGJfZGF0YV9zaXplKTsKIAotCUJVR19PTihiaW8tPmJpX3Np emUpOworCUJVR19PTihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJaWYgKCFwYi0+cmVxX25yKQog CQlyZW1hcF90b19vcmlnaW4oY2FjaGUsIGJpbyk7CiAJZWxzZQpAQCAtMTA4Nyw5ICsxMDg5LDkg QEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbHVzaF9iaW8oc3RydWN0IGNhY2hlICpjYWNoZSwgc3Ry dWN0IGJpbyAqYmlvKQogICovCiBzdGF0aWMgdm9pZCBwcm9jZXNzX2Rpc2NhcmRfYmlvKHN0cnVj dCBjYWNoZSAqY2FjaGUsIHN0cnVjdCBiaW8gKmJpbykKIHsKLQlkbV9ibG9ja190IHN0YXJ0X2Js b2NrID0gZG1fc2VjdG9yX2Rpdl91cChiaW8tPmJpX3NlY3RvciwKKwlkbV9ibG9ja190IHN0YXJ0 X2Jsb2NrID0gZG1fc2VjdG9yX2Rpdl91cChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAogCQkJCQkJ ICBjYWNoZS0+ZGlzY2FyZF9ibG9ja19zaXplKTsKLQlkbV9ibG9ja190IGVuZF9ibG9jayA9IGJp by0+Ymlfc2VjdG9yICsgYmlvX3NlY3RvcnMoYmlvKTsKKwlkbV9ibG9ja190IGVuZF9ibG9jayA9 IGJpb19lbmRfc2VjdG9yKGJpbyk7CiAJZG1fYmxvY2tfdCBiOwogCiAJZW5kX2Jsb2NrID0gYmxv Y2tfZGl2KGVuZF9ibG9jaywgY2FjaGUtPmRpc2NhcmRfYmxvY2tfc2l6ZSk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL21kL2RtLWNyeXB0LmMgYi9kcml2ZXJzL21kL2RtLWNyeXB0LmMKaW5kZXggNmQy ZDQxYS4uZmNhM2JiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1jcnlwdC5jCisrKyBiL2Ry aXZlcnMvbWQvZG0tY3J5cHQuYwpAQCAtNjUyLDggKzY1Miw4IEBAIHN0YXRpYyB2b2lkIGNyeXB0 X2NvbnZlcnRfaW5pdChzdHJ1Y3QgY3J5cHRfY29uZmlnICpjYywKIAljdHgtPmJpb19vdXQgPSBi aW9fb3V0OwogCWN0eC0+b2Zmc2V0X2luID0gMDsKIAljdHgtPm9mZnNldF9vdXQgPSAwOwotCWN0 eC0+aWR4X2luID0gYmlvX2luID8gYmlvX2luLT5iaV9pZHggOiAwOwotCWN0eC0+aWR4X291dCA9 IGJpb19vdXQgPyBiaW9fb3V0LT5iaV9pZHggOiAwOworCWN0eC0+aWR4X2luID0gYmlvX2luID8g YmlvX2luLT5iaV9pdGVyLmJpX2lkeCA6IDA7CisJY3R4LT5pZHhfb3V0ID0gYmlvX291dCA/IGJp b19vdXQtPmJpX2l0ZXIuYmlfaWR4IDogMDsKIAljdHgtPmNjX3NlY3RvciA9IHNlY3RvciArIGNj LT5pdl9vZmZzZXQ7CiAJaW5pdF9jb21wbGV0aW9uKCZjdHgtPnJlc3RhcnQpOwogfQpAQCAtODQ1 LDcgKzg0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmlvICpjcnlwdF9hbGxvY19idWZmZXIoc3RydWN0 IGRtX2NyeXB0X2lvICppbywgdW5zaWduZWQgc2l6ZSwKIAkJc2l6ZSAtPSBsZW47CiAJfQogCi0J aWYgKCFjbG9uZS0+Ymlfc2l6ZSkgeworCWlmICghY2xvbmUtPmJpX2l0ZXIuYmlfc2l6ZSkgewog CQliaW9fcHV0KGNsb25lKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpAQCAtOTg1LDcgKzk4NSw3IEBA IHN0YXRpYyBpbnQga2NyeXB0ZF9pb19yZWFkKHN0cnVjdCBkbV9jcnlwdF9pbyAqaW8sIGdmcF90 IGdmcCkKIAljcnlwdF9pbmNfcGVuZGluZyhpbyk7CiAKIAljbG9uZV9pbml0KGlvLCBjbG9uZSk7 Ci0JY2xvbmUtPmJpX3NlY3RvciA9IGNjLT5zdGFydCArIGlvLT5zZWN0b3I7CisJY2xvbmUtPmJp X2l0ZXIuYmlfc2VjdG9yID0gY2MtPnN0YXJ0ICsgaW8tPnNlY3RvcjsKIAogCWdlbmVyaWNfbWFr ZV9yZXF1ZXN0KGNsb25lKTsKIAlyZXR1cm4gMDsKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHN0YXRp YyB2b2lkIGtjcnlwdGRfY3J5cHRfd3JpdGVfaW9fc3VibWl0KHN0cnVjdCBkbV9jcnlwdF9pbyAq aW8sIGludCBhc3luYykKIAkvKiBjcnlwdF9jb252ZXJ0IHNob3VsZCBoYXZlIGZpbGxlZCB0aGUg Y2xvbmUgYmlvICovCiAJQlVHX09OKGlvLT5jdHguaWR4X291dCA8IGNsb25lLT5iaV92Y250KTsK IAotCWNsb25lLT5iaV9zZWN0b3IgPSBjYy0+c3RhcnQgKyBpby0+c2VjdG9yOworCWNsb25lLT5i aV9pdGVyLmJpX3NlY3RvciA9IGNjLT5zdGFydCArIGlvLT5zZWN0b3I7CiAKIAlpZiAoYXN5bmMp CiAJCWtjcnlwdGRfcXVldWVfaW8oaW8pOwpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgc3RhdGljIHZv aWQga2NyeXB0ZF9jcnlwdF93cml0ZV9jb252ZXJ0KHN0cnVjdCBkbV9jcnlwdF9pbyAqaW8pCiAJ c3RydWN0IGRtX2NyeXB0X2lvICpuZXdfaW87CiAJaW50IGNyeXB0X2ZpbmlzaGVkOwogCXVuc2ln bmVkIG91dF9vZl9wYWdlcyA9IDA7Ci0JdW5zaWduZWQgcmVtYWluaW5nID0gaW8tPmJhc2VfYmlv LT5iaV9zaXplOworCXVuc2lnbmVkIHJlbWFpbmluZyA9IGlvLT5iYXNlX2Jpby0+YmlfaXRlci5i aV9zaXplOwogCXNlY3Rvcl90IHNlY3RvciA9IGlvLT5zZWN0b3I7CiAJaW50IHI7CiAKQEAgLTEw NzIsNyArMTA3Miw3IEBAIHN0YXRpYyB2b2lkIGtjcnlwdGRfY3J5cHRfd3JpdGVfY29udmVydChz dHJ1Y3QgZG1fY3J5cHRfaW8gKmlvKQogCQlpby0+Y3R4LmJpb19vdXQgPSBjbG9uZTsKIAkJaW8t PmN0eC5pZHhfb3V0ID0gMDsKIAotCQlyZW1haW5pbmcgLT0gY2xvbmUtPmJpX3NpemU7CisJCXJl bWFpbmluZyAtPSBjbG9uZS0+YmlfaXRlci5iaV9zaXplOwogCQlzZWN0b3IgKz0gYmlvX3NlY3Rv cnMoY2xvbmUpOwogCiAJCWNyeXB0X2luY19wZW5kaW5nKGlvKTsKQEAgLTE2ODcsMTEgKzE2ODcs MTMgQEAgc3RhdGljIGludCBjcnlwdF9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBi aW8gKmJpbykKIAlpZiAodW5saWtlbHkoYmlvLT5iaV9ydyAmIChSRVFfRkxVU0ggfCBSRVFfRElT Q0FSRCkpKSB7CiAJCWJpby0+YmlfYmRldiA9IGNjLT5kZXYtPmJkZXY7CiAJCWlmIChiaW9fc2Vj dG9ycyhiaW8pKQotCQkJYmlvLT5iaV9zZWN0b3IgPSBjYy0+c3RhcnQgKyBkbV90YXJnZXRfb2Zm c2V0KHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gY2Mt PnN0YXJ0ICsKKwkJCQlkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y KTsKIAkJcmV0dXJuIERNX01BUElPX1JFTUFQUEVEOwogCX0KIAotCWlvID0gY3J5cHRfaW9fYWxs b2MoY2MsIGJpbywgZG1fdGFyZ2V0X29mZnNldCh0aSwgYmlvLT5iaV9zZWN0b3IpKTsKKwlpbyA9 IGNyeXB0X2lvX2FsbG9jKGNjLCBiaW8sCisJCQkgICAgZG1fdGFyZ2V0X29mZnNldCh0aSwgYmlv LT5iaV9pdGVyLmJpX3NlY3RvcikpOwogCiAJaWYgKGJpb19kYXRhX2Rpcihpby0+YmFzZV9iaW8p ID09IFJFQUQpIHsKIAkJaWYgKGtjcnlwdGRfaW9fcmVhZChpbywgR0ZQX05PV0FJVCkpCmRpZmYg LS1naXQgYS9kcml2ZXJzL21kL2RtLWRlbGF5LmMgYi9kcml2ZXJzL21kL2RtLWRlbGF5LmMKaW5k ZXggNDk2ZDVmMy4uODRjODYwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1kZWxheS5jCisr KyBiL2RyaXZlcnMvbWQvZG0tZGVsYXkuYwpAQCAtMjgxLDE0ICsyODEsMTUgQEAgc3RhdGljIGlu dCBkZWxheV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAo KGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFKSAmJiAoZGMtPmRldl93cml0ZSkpIHsKIAkJYmlv LT5iaV9iZGV2ID0gZGMtPmRldl93cml0ZS0+YmRldjsKIAkJaWYgKGJpb19zZWN0b3JzKGJpbykp Ci0JCQliaW8tPmJpX3NlY3RvciA9IGRjLT5zdGFydF93cml0ZSArCi0JCQkJCSBkbV90YXJnZXRf b2Zmc2V0KHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0g ZGMtPnN0YXJ0X3dyaXRlICsKKwkJCQlkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAogCQlyZXR1cm4gZGVsYXlfYmlvKGRjLCBkYy0+d3JpdGVfZGVsYXksIGJp byk7CiAJfQogCiAJYmlvLT5iaV9iZGV2ID0gZGMtPmRldl9yZWFkLT5iZGV2OwotCWJpby0+Ymlf c2VjdG9yID0gZGMtPnN0YXJ0X3JlYWQgKyBkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX3Nl Y3Rvcik7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGRjLT5zdGFydF9yZWFkICsKKwkJZG1f dGFyZ2V0X29mZnNldCh0aSwgYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKIAlyZXR1cm4gZGVs YXlfYmlvKGRjLCBkYy0+cmVhZF9kZWxheSwgYmlvKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWQvZG0tZmxha2V5LmMgYi9kcml2ZXJzL21kL2RtLWZsYWtleS5jCmluZGV4IGM4MGEwZWMuLmIy NTdlNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tZmxha2V5LmMKKysrIGIvZHJpdmVycy9t ZC9kbS1mbGFrZXkuYwpAQCAtMjQ4LDcgKzI0OCw4IEBAIHN0YXRpYyB2b2lkIGZsYWtleV9tYXBf YmlvKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAliaW8tPmJpX2Jk ZXYgPSBmYy0+ZGV2LT5iZGV2OwogCWlmIChiaW9fc2VjdG9ycyhiaW8pKQotCQliaW8tPmJpX3Nl Y3RvciA9IGZsYWtleV9tYXBfc2VjdG9yKHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJCWJpby0+Ymlf aXRlci5iaV9zZWN0b3IgPQorCQkJZmxha2V5X21hcF9zZWN0b3IodGksIGJpby0+YmlfaXRlci5i aV9zZWN0b3IpOwogfQogCiBzdGF0aWMgdm9pZCBjb3JydXB0X2Jpb19kYXRhKHN0cnVjdCBiaW8g KmJpbywgc3RydWN0IGZsYWtleV9jICpmYykKQEAgLTI2NSw4ICsyNjYsOCBAQCBzdGF0aWMgdm9p ZCBjb3JydXB0X2Jpb19kYXRhKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGZsYWtleV9jICpmYykK IAkJRE1ERUJVRygiQ29ycnVwdGluZyBkYXRhIGJpbz0lcCBieSB3cml0aW5nICV1IHRvIGJ5dGUg JXUgIgogCQkJIihydz0lYyBiaV9ydz0lbHUgYmlfc2VjdG9yPSVsbHUgY3VyX2J5dGVzPSV1KVxu IiwKIAkJCWJpbywgZmMtPmNvcnJ1cHRfYmlvX3ZhbHVlLCBmYy0+Y29ycnVwdF9iaW9fYnl0ZSwK LQkJCShiaW9fZGF0YV9kaXIoYmlvKSA9PSBXUklURSkgPyAndycgOiAncicsCi0JCQliaW8tPmJp X3J3LCAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlfc2VjdG9yLCBiaW9fYnl0ZXMpOworCQkJ KGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFKSA/ICd3JyA6ICdyJywgYmlvLT5iaV9ydywKKwkJ CSh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgYmlvX2J5dGVzKTsK IAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0taW8uYyBiL2RyaXZlcnMvbWQvZG0t aW8uYwppbmRleCBlYTQ5ODM0Li5hNmRlNWM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWlv LmMKKysrIGIvZHJpdmVycy9tZC9kbS1pby5jCkBAIC0zMDUsMTQgKzMwNSwxNSBAQCBzdGF0aWMg dm9pZCBkb19yZWdpb24oaW50IHJ3LCB1bnNpZ25lZCByZWdpb24sIHN0cnVjdCBkbV9pb19yZWdp b24gKndoZXJlLAogCQkJCQkgIGRtX3NlY3Rvcl9kaXZfdXAocmVtYWluaW5nLCAoUEFHRV9TSVpF ID4+IFNFQ1RPUl9TSElGVCkpKTsKIAogCQliaW8gPSBiaW9fYWxsb2NfYmlvc2V0KEdGUF9OT0lP LCBudW1fYnZlY3MsIGlvLT5jbGllbnQtPmJpb3MpOwotCQliaW8tPmJpX3NlY3RvciA9IHdoZXJl LT5zZWN0b3IgKyAod2hlcmUtPmNvdW50IC0gcmVtYWluaW5nKTsKKwkJYmlvLT5iaV9pdGVyLmJp X3NlY3RvciA9IHdoZXJlLT5zZWN0b3IgKworCQkJKHdoZXJlLT5jb3VudCAtIHJlbWFpbmluZyk7 CiAJCWJpby0+YmlfYmRldiA9IHdoZXJlLT5iZGV2OwogCQliaW8tPmJpX2VuZF9pbyA9IGVuZGlv OwogCQlzdG9yZV9pb19hbmRfcmVnaW9uX2luX2JpbyhiaW8sIGlvLCByZWdpb24pOwogCiAJCWlm IChydyAmIFJFUV9ESVNDQVJEKSB7CiAJCQludW1fc2VjdG9ycyA9IG1pbl90KHNlY3Rvcl90LCBx LT5saW1pdHMubWF4X2Rpc2NhcmRfc2VjdG9ycywgcmVtYWluaW5nKTsKLQkJCWJpby0+Ymlfc2l6 ZSA9IG51bV9zZWN0b3JzIDw8IFNFQ1RPUl9TSElGVDsKKwkJCWJpby0+YmlfaXRlci5iaV9zaXpl ID0gbnVtX3NlY3RvcnMgPDwgU0VDVE9SX1NISUZUOwogCQkJcmVtYWluaW5nIC09IG51bV9zZWN0 b3JzOwogCQl9IGVsc2UgaWYgKHJ3ICYgUkVRX1dSSVRFX1NBTUUpIHsKIAkJCS8qCkBAIC0zMjEs NyArMzIyLDcgQEAgc3RhdGljIHZvaWQgZG9fcmVnaW9uKGludCBydywgdW5zaWduZWQgcmVnaW9u LCBzdHJ1Y3QgZG1faW9fcmVnaW9uICp3aGVyZSwKIAkJCWRwLT5nZXRfcGFnZShkcCwgJnBhZ2Us ICZsZW4sICZvZmZzZXQpOwogCQkJYmlvX2FkZF9wYWdlKGJpbywgcGFnZSwgbG9naWNhbF9ibG9j a19zaXplLCBvZmZzZXQpOwogCQkJbnVtX3NlY3RvcnMgPSBtaW5fdChzZWN0b3JfdCwgcS0+bGlt aXRzLm1heF93cml0ZV9zYW1lX3NlY3RvcnMsIHJlbWFpbmluZyk7Ci0JCQliaW8tPmJpX3NpemUg PSBudW1fc2VjdG9ycyA8PCBTRUNUT1JfU0hJRlQ7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 IG51bV9zZWN0b3JzIDw8IFNFQ1RPUl9TSElGVDsKIAogCQkJb2Zmc2V0ID0gMDsKIAkJCXJlbWFp bmluZyAtPSBudW1fc2VjdG9yczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tbGluZWFyLmMg Yi9kcml2ZXJzL21kL2RtLWxpbmVhci5jCmluZGV4IDRmOTlkMjYuLjUzZTg0OGMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbWQvZG0tbGluZWFyLmMKKysrIGIvZHJpdmVycy9tZC9kbS1saW5lYXIuYwpA QCAtODUsNyArODUsOCBAQCBzdGF0aWMgdm9pZCBsaW5lYXJfbWFwX2JpbyhzdHJ1Y3QgZG1fdGFy Z2V0ICp0aSwgc3RydWN0IGJpbyAqYmlvKQogCiAJYmlvLT5iaV9iZGV2ID0gbGMtPmRldi0+YmRl djsKIAlpZiAoYmlvX3NlY3RvcnMoYmlvKSkKLQkJYmlvLT5iaV9zZWN0b3IgPSBsaW5lYXJfbWFw X3NlY3Rvcih0aSwgYmlvLT5iaV9zZWN0b3IpOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0K KwkJCWxpbmVhcl9tYXBfc2VjdG9yKHRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIH0KIAog c3RhdGljIGludCBsaW5lYXJfbWFwKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpi aW8pCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXJhaWQxLmMgYi9kcml2ZXJzL21kL2RtLXJh aWQxLmMKaW5kZXggNjk5YjViZS4uZTNlZmI5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1y YWlkMS5jCisrKyBiL2RyaXZlcnMvbWQvZG0tcmFpZDEuYwpAQCAtNDMyLDcgKzQzMiw3IEBAIHN0 YXRpYyBpbnQgbWlycm9yX2F2YWlsYWJsZShzdHJ1Y3QgbWlycm9yX3NldCAqbXMsIHN0cnVjdCBi aW8gKmJpbykKIAlyZWdpb25fdCByZWdpb24gPSBkbV9yaF9iaW9fdG9fcmVnaW9uKG1zLT5yaCwg YmlvKTsKIAogCWlmIChsb2ctPnR5cGUtPmluX3N5bmMobG9nLCByZWdpb24sIDApKQotCQlyZXR1 cm4gY2hvb3NlX21pcnJvcihtcywgIGJpby0+Ymlfc2VjdG9yKSA/IDEgOiAwOworCQlyZXR1cm4g Y2hvb3NlX21pcnJvcihtcywgIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpID8gMSA6IDA7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTQ0MiwxNSArNDQyLDE1IEBAIHN0YXRpYyBpbnQgbWlycm9yX2F2YWls YWJsZShzdHJ1Y3QgbWlycm9yX3NldCAqbXMsIHN0cnVjdCBiaW8gKmJpbykKICAqLwogc3RhdGlj IHNlY3Rvcl90IG1hcF9zZWN0b3Ioc3RydWN0IG1pcnJvciAqbSwgc3RydWN0IGJpbyAqYmlvKQog ewotCWlmICh1bmxpa2VseSghYmlvLT5iaV9zaXplKSkKKwlpZiAodW5saWtlbHkoIWJpby0+Ymlf aXRlci5iaV9zaXplKSkKIAkJcmV0dXJuIDA7Ci0JcmV0dXJuIG0tPm9mZnNldCArIGRtX3Rhcmdl dF9vZmZzZXQobS0+bXMtPnRpLCBiaW8tPmJpX3NlY3Rvcik7CisJcmV0dXJuIG0tPm9mZnNldCAr IGRtX3RhcmdldF9vZmZzZXQobS0+bXMtPnRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIH0K IAogc3RhdGljIHZvaWQgbWFwX2JpbyhzdHJ1Y3QgbWlycm9yICptLCBzdHJ1Y3QgYmlvICpiaW8p CiB7CiAJYmlvLT5iaV9iZGV2ID0gbS0+ZGV2LT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gbWFw X3NlY3RvcihtLCBiaW8pOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBtYXBfc2VjdG9yKG0s IGJpbyk7CiB9CiAKIHN0YXRpYyB2b2lkIG1hcF9yZWdpb24oc3RydWN0IGRtX2lvX3JlZ2lvbiAq aW8sIHN0cnVjdCBtaXJyb3IgKm0sCkBAIC01MjcsNyArNTI3LDcgQEAgc3RhdGljIHZvaWQgcmVh ZF9hc3luY19iaW8oc3RydWN0IG1pcnJvciAqbSwgc3RydWN0IGJpbyAqYmlvKQogCXN0cnVjdCBk bV9pb19yZXF1ZXN0IGlvX3JlcSA9IHsKIAkJLmJpX3J3ID0gUkVBRCwKIAkJLm1lbS50eXBlID0g RE1fSU9fQlZFQywKLQkJLm1lbS5wdHIuYnZlYyA9IGJpby0+YmlfaW9fdmVjICsgYmlvLT5iaV9p ZHgsCisJCS5tZW0ucHRyLmJ2ZWMgPSBiaW8tPmJpX2lvX3ZlYyArIGJpby0+YmlfaXRlci5iaV9p ZHgsCiAJCS5ub3RpZnkuZm4gPSByZWFkX2NhbGxiYWNrLAogCQkubm90aWZ5LmNvbnRleHQgPSBi aW8sCiAJCS5jbGllbnQgPSBtLT5tcy0+aW9fY2xpZW50LApAQCAtNTU5LDcgKzU1OSw3IEBAIHN0 YXRpYyB2b2lkIGRvX3JlYWRzKHN0cnVjdCBtaXJyb3Jfc2V0ICptcywgc3RydWN0IGJpb19saXN0 ICpyZWFkcykKIAkJICogV2UgY2FuIG9ubHkgcmVhZCBiYWxhbmNlIGlmIHRoZSByZWdpb24gaXMg aW4gc3luYy4KIAkJICovCiAJCWlmIChsaWtlbHkocmVnaW9uX2luX3N5bmMobXMsIHJlZ2lvbiwg MSkpKQotCQkJbSA9IGNob29zZV9taXJyb3IobXMsIGJpby0+Ymlfc2VjdG9yKTsKKwkJCW0gPSBj aG9vc2VfbWlycm9yKG1zLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJZWxzZSBpZiAobSAm JiBhdG9taWNfcmVhZCgmbS0+ZXJyb3JfY291bnQpKQogCQkJbSA9IE5VTEw7CiAKQEAgLTYzMCw3 ICs2MzAsNyBAQCBzdGF0aWMgdm9pZCBkb193cml0ZShzdHJ1Y3QgbWlycm9yX3NldCAqbXMsIHN0 cnVjdCBiaW8gKmJpbykKIAlzdHJ1Y3QgZG1faW9fcmVxdWVzdCBpb19yZXEgPSB7CiAJCS5iaV9y dyA9IFdSSVRFIHwgKGJpby0+YmlfcncgJiBXUklURV9GTFVTSF9GVUEpLAogCQkubWVtLnR5cGUg PSBETV9JT19CVkVDLAotCQkubWVtLnB0ci5idmVjID0gYmlvLT5iaV9pb192ZWMgKyBiaW8tPmJp X2lkeCwKKwkJLm1lbS5wdHIuYnZlYyA9IGJpby0+YmlfaW9fdmVjICsgYmlvLT5iaV9pdGVyLmJp X2lkeCwKIAkJLm5vdGlmeS5mbiA9IHdyaXRlX2NhbGxiYWNrLAogCQkubm90aWZ5LmNvbnRleHQg PSBiaW8sCiAJCS5jbGllbnQgPSBtcy0+aW9fY2xpZW50LApAQCAtMTE4Miw3ICsxMTgyLDcgQEAg c3RhdGljIGludCBtaXJyb3JfbWFwKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpi aW8pCiAJICogVGhlIHJlZ2lvbiBpcyBpbi1zeW5jIGFuZCB3ZSBjYW4gcGVyZm9ybSByZWFkcyBk aXJlY3RseS4KIAkgKiBTdG9yZSBlbm91Z2ggaW5mb3JtYXRpb24gc28gd2UgY2FuIHJldHJ5IGlm IGl0IGZhaWxzLgogCSAqLwotCW0gPSBjaG9vc2VfbWlycm9yKG1zLCBiaW8tPmJpX3NlY3Rvcik7 CisJbSA9IGNob29zZV9taXJyb3IobXMsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCWlmICh1 bmxpa2VseSghbSkpCiAJCXJldHVybiAtRUlPOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2Rt LXJlZ2lvbi1oYXNoLmMgYi9kcml2ZXJzL21kL2RtLXJlZ2lvbi1oYXNoLmMKaW5kZXggNjk3MzJl MC4uYjkyOWZkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1yZWdpb24taGFzaC5jCisrKyBi L2RyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2guYwpAQCAtMTI2LDcgKzEyNiw4IEBAIEVYUE9SVF9T WU1CT0xfR1BMKGRtX3JoX3JlZ2lvbl90b19zZWN0b3IpOwogCiByZWdpb25fdCBkbV9yaF9iaW9f dG9fcmVnaW9uKHN0cnVjdCBkbV9yZWdpb25faGFzaCAqcmgsIHN0cnVjdCBiaW8gKmJpbykKIHsK LQlyZXR1cm4gZG1fcmhfc2VjdG9yX3RvX3JlZ2lvbihyaCwgYmlvLT5iaV9zZWN0b3IgLSByaC0+ dGFyZ2V0X2JlZ2luKTsKKwlyZXR1cm4gZG1fcmhfc2VjdG9yX3RvX3JlZ2lvbihyaCwgYmlvLT5i aV9pdGVyLmJpX3NlY3RvciAtCisJCQkJICAgICAgcmgtPnRhcmdldF9iZWdpbik7CiB9CiBFWFBP UlRfU1lNQk9MX0dQTChkbV9yaF9iaW9fdG9fcmVnaW9uKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9kbS1zbmFwLmMgYi9kcml2ZXJzL21kL2RtLXNuYXAuYwppbmRleCBjNDM0ZTVhLi5hMWRm Nzc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLXNuYXAuYworKysgYi9kcml2ZXJzL21kL2Rt LXNuYXAuYwpAQCAtMTU2MywxMCArMTU2MywxMCBAQCBzdGF0aWMgdm9pZCByZW1hcF9leGNlcHRp b24oc3RydWN0IGRtX3NuYXBzaG90ICpzLCBzdHJ1Y3QgZG1fZXhjZXB0aW9uICplLAogCQkJICAg IHN0cnVjdCBiaW8gKmJpbywgY2h1bmtfdCBjaHVuaykKIHsKIAliaW8tPmJpX2JkZXYgPSBzLT5j b3ctPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBjaHVua190b19zZWN0b3Iocy0+c3RvcmUsCisJ YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGNodW5rX3RvX3NlY3RvcihzLT5zdG9yZSwKIAkJCQkJ IGRtX2NodW5rX251bWJlcihlLT5uZXdfY2h1bmspICsKIAkJCQkJIChjaHVuayAtIGUtPm9sZF9j aHVuaykpICsKLQkJCQkJIChiaW8tPmJpX3NlY3RvciAmCisJCQkJCSAoYmlvLT5iaV9pdGVyLmJp X3NlY3RvciAmCiAJCQkJCSAgcy0+c3RvcmUtPmNodW5rX21hc2spOwogfQogCkBAIC0xNTg1LDcg KzE1ODUsNyBAQCBzdGF0aWMgaW50IHNuYXBzaG90X21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwg c3RydWN0IGJpbyAqYmlvKQogCQlyZXR1cm4gRE1fTUFQSU9fUkVNQVBQRUQ7CiAJfQogCi0JY2h1 bmsgPSBzZWN0b3JfdG9fY2h1bmsocy0+c3RvcmUsIGJpby0+Ymlfc2VjdG9yKTsKKwljaHVuayA9 IHNlY3Rvcl90b19jaHVuayhzLT5zdG9yZSwgYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKIAkv KiBGdWxsIHNuYXBzaG90cyBhcmUgbm90IHVzYWJsZSAqLwogCS8qIFRvIGdldCBoZXJlIHRoZSB0 YWJsZSBtdXN0IGJlIGxpdmUgc28gcy0+YWN0aXZlIGlzIGFsd2F5cyBzZXQuICovCkBAIC0xNjQ2 LDcgKzE2NDYsOCBAQCBzdGF0aWMgaW50IHNuYXBzaG90X21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0 aSwgc3RydWN0IGJpbyAqYmlvKQogCQlyID0gRE1fTUFQSU9fU1VCTUlUVEVEOwogCiAJCWlmICgh cGUtPnN0YXJ0ZWQgJiYKLQkJICAgIGJpby0+Ymlfc2l6ZSA9PSAocy0+c3RvcmUtPmNodW5rX3Np emUgPDwgU0VDVE9SX1NISUZUKSkgeworCQkgICAgYmlvLT5iaV9pdGVyLmJpX3NpemUgPT0KKwkJ ICAgIChzLT5zdG9yZS0+Y2h1bmtfc2l6ZSA8PCBTRUNUT1JfU0hJRlQpKSB7CiAJCQlwZS0+c3Rh cnRlZCA9IDE7CiAJCQl1cF93cml0ZSgmcy0+bG9jayk7CiAJCQlzdGFydF9mdWxsX2JpbyhwZSwg YmlvKTsKQEAgLTE3MDIsNyArMTcwMyw3IEBAIHN0YXRpYyBpbnQgc25hcHNob3RfbWVyZ2VfbWFw KHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXJldHVybiBETV9NQVBJ T19SRU1BUFBFRDsKIAl9CiAKLQljaHVuayA9IHNlY3Rvcl90b19jaHVuayhzLT5zdG9yZSwgYmlv LT5iaV9zZWN0b3IpOworCWNodW5rID0gc2VjdG9yX3RvX2NodW5rKHMtPnN0b3JlLCBiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yKTsKIAogCWRvd25fd3JpdGUoJnMtPmxvY2spOwogCkBAIC0yMDM5LDcg KzIwNDAsNyBAQCBzdGF0aWMgaW50IGRvX29yaWdpbihzdHJ1Y3QgZG1fZGV2ICpvcmlnaW4sIHN0 cnVjdCBiaW8gKmJpbykKIAlkb3duX3JlYWQoJl9vcmlnaW5zX2xvY2spOwogCW8gPSBfX2xvb2t1 cF9vcmlnaW4ob3JpZ2luLT5iZGV2KTsKIAlpZiAobykKLQkJciA9IF9fb3JpZ2luX3dyaXRlKCZv LT5zbmFwc2hvdHMsIGJpby0+Ymlfc2VjdG9yLCBiaW8pOworCQlyID0gX19vcmlnaW5fd3JpdGUo Jm8tPnNuYXBzaG90cywgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgYmlvKTsKIAl1cF9yZWFkKCZf b3JpZ2luc19sb2NrKTsKIAogCXJldHVybiByOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1z dHJpcGUuYyBiL2RyaXZlcnMvbWQvZG0tc3RyaXBlLmMKaW5kZXggZDkwN2NhNi4uODA0NWIwOSAx MDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1zdHJpcGUuYworKysgYi9kcml2ZXJzL21kL2RtLXN0 cmlwZS5jCkBAIC0yNTgsMTMgKzI1OCwxNSBAQCBzdGF0aWMgaW50IHN0cmlwZV9tYXBfcmFuZ2Uo c3RydWN0IHN0cmlwZV9jICpzYywgc3RydWN0IGJpbyAqYmlvLAogewogCXNlY3Rvcl90IGJlZ2lu LCBlbmQ7CiAKLQlzdHJpcGVfbWFwX3JhbmdlX3NlY3RvcihzYywgYmlvLT5iaV9zZWN0b3IsIHRh cmdldF9zdHJpcGUsICZiZWdpbik7CisJc3RyaXBlX21hcF9yYW5nZV9zZWN0b3Ioc2MsIGJpby0+ YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJdGFyZ2V0X3N0cmlwZSwgJmJlZ2luKTsKIAlzdHJpcGVf bWFwX3JhbmdlX3NlY3RvcihzYywgYmlvX2VuZF9zZWN0b3IoYmlvKSwKIAkJCQl0YXJnZXRfc3Ry aXBlLCAmZW5kKTsKIAlpZiAoYmVnaW4gPCBlbmQpIHsKIAkJYmlvLT5iaV9iZGV2ID0gc2MtPnN0 cmlwZVt0YXJnZXRfc3RyaXBlXS5kZXYtPmJkZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0gYmVnaW4g KyBzYy0+c3RyaXBlW3RhcmdldF9zdHJpcGVdLnBoeXNpY2FsX3N0YXJ0OwotCQliaW8tPmJpX3Np emUgPSB0b19ieXRlcyhlbmQgLSBiZWdpbik7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBi ZWdpbiArCisJCQlzYy0+c3RyaXBlW3RhcmdldF9zdHJpcGVdLnBoeXNpY2FsX3N0YXJ0OworCQli aW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IHRvX2J5dGVzKGVuZCAtIGJlZ2luKTsKIAkJcmV0dXJuIERN X01BUElPX1JFTUFQUEVEOwogCX0gZWxzZSB7CiAJCS8qIFRoZSByYW5nZSBkb2Vzbid0IG1hcCB0 byB0aGUgdGFyZ2V0IHN0cmlwZSAqLwpAQCAtMjkyLDkgKzI5NCwxMCBAQCBzdGF0aWMgaW50IHN0 cmlwZV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAkJcmV0dXJu IHN0cmlwZV9tYXBfcmFuZ2Uoc2MsIGJpbywgdGFyZ2V0X2Jpb19ucik7CiAJfQogCi0Jc3RyaXBl X21hcF9zZWN0b3Ioc2MsIGJpby0+Ymlfc2VjdG9yLCAmc3RyaXBlLCAmYmlvLT5iaV9zZWN0b3Ip OworCXN0cmlwZV9tYXBfc2VjdG9yKHNjLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJICAm c3RyaXBlLCAmYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKLQliaW8tPmJpX3NlY3RvciArPSBz Yy0+c3RyaXBlW3N0cmlwZV0ucGh5c2ljYWxfc3RhcnQ7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciArPSBzYy0+c3RyaXBlW3N0cmlwZV0ucGh5c2ljYWxfc3RhcnQ7CiAJYmlvLT5iaV9iZGV2ID0g c2MtPnN0cmlwZVtzdHJpcGVdLmRldi0+YmRldjsKIAogCXJldHVybiBETV9NQVBJT19SRU1BUFBF RDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tc3dpdGNoLmMgYi9kcml2ZXJzL21kL2RtLXN3 aXRjaC5jCmluZGV4IGZmOWFjNGIuLjA5YTY4OGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0t c3dpdGNoLmMKKysrIGIvZHJpdmVycy9tZC9kbS1zd2l0Y2guYwpAQCAtMzExLDExICszMTEsMTEg QEAgZXJyb3I6CiBzdGF0aWMgaW50IHN3aXRjaF9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0 cnVjdCBiaW8gKmJpbykKIHsKIAlzdHJ1Y3Qgc3dpdGNoX2N0eCAqc2N0eCA9IHRpLT5wcml2YXRl OwotCXNlY3Rvcl90IG9mZnNldCA9IGRtX3RhcmdldF9vZmZzZXQodGksIGJpby0+Ymlfc2VjdG9y KTsKKwlzZWN0b3JfdCBvZmZzZXQgPSBkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAl1bnNpZ25lZCBwYXRoX25yID0gc3dpdGNoX2dldF9wYXRoX25yKHNjdHgs IG9mZnNldCk7CiAKIAliaW8tPmJpX2JkZXYgPSBzY3R4LT5wYXRoX2xpc3RbcGF0aF9ucl0uZG1k ZXYtPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBzY3R4LT5wYXRoX2xpc3RbcGF0aF9ucl0uc3Rh cnQgKyBvZmZzZXQ7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNjdHgtPnBhdGhfbGlzdFtw YXRoX25yXS5zdGFydCArIG9mZnNldDsKIAogCXJldHVybiBETV9NQVBJT19SRU1BUFBFRDsKIH0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tdGhpbi5jIGIvZHJpdmVycy9tZC9kbS10aGluLmMK aW5kZXggODhmMmY4MC4uMmUyMjEyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS10aGluLmMK KysrIGIvZHJpdmVycy9tZC9kbS10aGluLmMKQEAgLTQxMyw3ICs0MTMsNyBAQCBzdGF0aWMgYm9v bCBibG9ja19zaXplX2lzX3Bvd2VyX29mX3R3byhzdHJ1Y3QgcG9vbCAqcG9vbCkKIHN0YXRpYyBk bV9ibG9ja190IGdldF9iaW9fYmxvY2soc3RydWN0IHRoaW5fYyAqdGMsIHN0cnVjdCBiaW8gKmJp bykKIHsKIAlzdHJ1Y3QgcG9vbCAqcG9vbCA9IHRjLT5wb29sOwotCXNlY3Rvcl90IGJsb2NrX25y ID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX3QgYmxvY2tfbnIgPSBiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yOwogCiAJaWYgKGJsb2NrX3NpemVfaXNfcG93ZXJfb2ZfdHdvKHBvb2wpKQogCQlibG9j a19uciA+Pj0gcG9vbC0+c2VjdG9yc19wZXJfYmxvY2tfc2hpZnQ7CkBAIC00MjYsMTQgKzQyNiwx NSBAQCBzdGF0aWMgZG1fYmxvY2tfdCBnZXRfYmlvX2Jsb2NrKHN0cnVjdCB0aGluX2MgKnRjLCBz dHJ1Y3QgYmlvICpiaW8pCiBzdGF0aWMgdm9pZCByZW1hcChzdHJ1Y3QgdGhpbl9jICp0Yywgc3Ry dWN0IGJpbyAqYmlvLCBkbV9ibG9ja190IGJsb2NrKQogewogCXN0cnVjdCBwb29sICpwb29sID0g dGMtPnBvb2w7Ci0Jc2VjdG9yX3QgYmlfc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9y X3QgYmlfc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAogCWJpby0+YmlfYmRldiA9 IHRjLT5wb29sX2Rldi0+YmRldjsKIAlpZiAoYmxvY2tfc2l6ZV9pc19wb3dlcl9vZl90d28ocG9v bCkpCi0JCWJpby0+Ymlfc2VjdG9yID0gKGJsb2NrIDw8IHBvb2wtPnNlY3RvcnNfcGVyX2Jsb2Nr X3NoaWZ0KSB8Ci0JCQkJKGJpX3NlY3RvciAmIChwb29sLT5zZWN0b3JzX3Blcl9ibG9jayAtIDEp KTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9CisJCQkoYmxvY2sgPDwgcG9vbC0+c2VjdG9y c19wZXJfYmxvY2tfc2hpZnQpIHwKKwkJCShiaV9zZWN0b3IgJiAocG9vbC0+c2VjdG9yc19wZXJf YmxvY2sgLSAxKSk7CiAJZWxzZQotCQliaW8tPmJpX3NlY3RvciA9IChibG9jayAqIHBvb2wtPnNl Y3RvcnNfcGVyX2Jsb2NrKSArCisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSAoYmxvY2sgKiBw b29sLT5zZWN0b3JzX3Blcl9ibG9jaykgKwogCQkJCSBzZWN0b3JfZGl2KGJpX3NlY3RvciwgcG9v bC0+c2VjdG9yc19wZXJfYmxvY2spOwogfQogCkBAIC03MjEsNyArNzIyLDggQEAgc3RhdGljIHZv aWQgcHJvY2Vzc19wcmVwYXJlZChzdHJ1Y3QgcG9vbCAqcG9vbCwgc3RydWN0IGxpc3RfaGVhZCAq aGVhZCwKICAqLwogc3RhdGljIGludCBpb19vdmVybGFwc19ibG9jayhzdHJ1Y3QgcG9vbCAqcG9v bCwgc3RydWN0IGJpbyAqYmlvKQogewotCXJldHVybiBiaW8tPmJpX3NpemUgPT0gKHBvb2wtPnNl Y3RvcnNfcGVyX2Jsb2NrIDw8IFNFQ1RPUl9TSElGVCk7CisJcmV0dXJuIGJpby0+YmlfaXRlci5i aV9zaXplID09CisJCShwb29sLT5zZWN0b3JzX3Blcl9ibG9jayA8PCBTRUNUT1JfU0hJRlQpOwog fQogCiBzdGF0aWMgaW50IGlvX292ZXJ3cml0ZXNfYmxvY2soc3RydWN0IHBvb2wgKnBvb2wsIHN0 cnVjdCBiaW8gKmJpbykKQEAgLTExMjEsNyArMTEyMyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nf c2hhcmVkX2JpbyhzdHJ1Y3QgdGhpbl9jICp0Yywgc3RydWN0IGJpbyAqYmlvLAogCWlmIChiaW9f ZGV0YWluKHBvb2wsICZrZXksIGJpbywgJmNlbGwpKQogCQlyZXR1cm47CiAKLQlpZiAoYmlvX2Rh dGFfZGlyKGJpbykgPT0gV1JJVEUgJiYgYmlvLT5iaV9zaXplKQorCWlmIChiaW9fZGF0YV9kaXIo YmlvKSA9PSBXUklURSAmJiBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSkKIAkJYnJlYWtfc2hhcmluZyh0 YywgYmlvLCBibG9jaywgJmtleSwgbG9va3VwX3Jlc3VsdCwgY2VsbCk7CiAJZWxzZSB7CiAJCXN0 cnVjdCBkbV90aGluX2VuZGlvX2hvb2sgKmggPSBkbV9wZXJfYmlvX2RhdGEoYmlvLCBzaXplb2Yo c3RydWN0IGRtX3RoaW5fZW5kaW9faG9vaykpOwpAQCAtMTE0NCw3ICsxMTQ2LDcgQEAgc3RhdGlj IHZvaWQgcHJvdmlzaW9uX2Jsb2NrKHN0cnVjdCB0aGluX2MgKnRjLCBzdHJ1Y3QgYmlvICpiaW8s IGRtX2Jsb2NrX3QgYmxvY2sKIAkvKgogCSAqIFJlbWFwIGVtcHR5IGJpb3MgKGZsdXNoZXMpIGlt bWVkaWF0ZWx5LCB3aXRob3V0IHByb3Zpc2lvbmluZy4KIAkgKi8KLQlpZiAoIWJpby0+Ymlfc2l6 ZSkgeworCWlmICghYmlvLT5iaV9pdGVyLmJpX3NpemUpIHsKIAkJaW5jX2FsbF9pb19lbnRyeShw b29sLCBiaW8pOwogCQljZWxsX2RlZmVyX25vX2hvbGRlcih0YywgY2VsbCk7CiAKQEAgLTEyNDQs NyArMTI0Niw4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfYmlvX3JlYWRfb25seShzdHJ1Y3QgdGhp bl9jICp0Yywgc3RydWN0IGJpbyAqYmlvKQogCXIgPSBkbV90aGluX2ZpbmRfYmxvY2sodGMtPnRk LCBibG9jaywgMSwgJmxvb2t1cF9yZXN1bHQpOwogCXN3aXRjaCAocikgewogCWNhc2UgMDoKLQkJ aWYgKGxvb2t1cF9yZXN1bHQuc2hhcmVkICYmIChydyA9PSBXUklURSkgJiYgYmlvLT5iaV9zaXpl KQorCQlpZiAobG9va3VwX3Jlc3VsdC5zaGFyZWQgJiYKKwkJICAgIChydyA9PSBXUklURSkgJiYg YmlvLT5iaV9pdGVyLmJpX3NpemUpCiAJCQliaW9faW9fZXJyb3IoYmlvKTsKIAkJZWxzZSB7CiAJ CQlpbmNfYWxsX2lvX2VudHJ5KHRjLT5wb29sLCBiaW8pOwpAQCAtMjgyNyw3ICsyODMwLDcgQEAg b3V0X3VubG9jazoKIAogc3RhdGljIGludCB0aGluX21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwg c3RydWN0IGJpbyAqYmlvKQogewotCWJpby0+Ymlfc2VjdG9yID0gZG1fdGFyZ2V0X29mZnNldCh0 aSwgYmlvLT5iaV9zZWN0b3IpOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBkbV90YXJnZXRf b2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCXJldHVybiB0aGluX2Jpb19t YXAodGksIGJpbyk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXZlcml0eS5jIGIvZHJp dmVycy9tZC9kbS12ZXJpdHkuYwppbmRleCA0Yjc5NDFkLi5iZjg0YmIzIDEwMDY0NAotLS0gYS9k cml2ZXJzL21kL2RtLXZlcml0eS5jCisrKyBiL2RyaXZlcnMvbWQvZG0tdmVyaXR5LmMKQEAgLTQ5 Myw5ICs0OTMsOSBAQCBzdGF0aWMgaW50IHZlcml0eV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGks IHN0cnVjdCBiaW8gKmJpbykKIAlzdHJ1Y3QgZG1fdmVyaXR5X2lvICppbzsKIAogCWJpby0+Ymlf YmRldiA9IHYtPmRhdGFfZGV2LT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gdmVyaXR5X21hcF9z ZWN0b3IodiwgYmlvLT5iaV9zZWN0b3IpOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSB2ZXJp dHlfbWFwX3NlY3Rvcih2LCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAotCWlmICgoKHVuc2ln bmVkKWJpby0+Ymlfc2VjdG9yIHwgYmlvX3NlY3RvcnMoYmlvKSkgJgorCWlmICgoKHVuc2lnbmVk KWJpby0+YmlfaXRlci5iaV9zZWN0b3IgfCBiaW9fc2VjdG9ycyhiaW8pKSAmCiAJICAgICgoMSA8 PCAodi0+ZGF0YV9kZXZfYmxvY2tfYml0cyAtIFNFQ1RPUl9TSElGVCkpIC0gMSkpIHsKIAkJRE1F UlJfTElNSVQoInVuYWxpZ25lZCBpbyIpOwogCQlyZXR1cm4gLUVJTzsKQEAgLTUxNCw4ICs1MTQs OSBAQCBzdGF0aWMgaW50IHZlcml0eV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBi aW8gKmJpbykKIAlpby0+diA9IHY7CiAJaW8tPm9yaWdfYmlfZW5kX2lvID0gYmlvLT5iaV9lbmRf aW87CiAJaW8tPm9yaWdfYmlfcHJpdmF0ZSA9IGJpby0+YmlfcHJpdmF0ZTsKLQlpby0+YmxvY2sg PSBiaW8tPmJpX3NlY3RvciA+PiAodi0+ZGF0YV9kZXZfYmxvY2tfYml0cyAtIFNFQ1RPUl9TSElG VCk7Ci0JaW8tPm5fYmxvY2tzID0gYmlvLT5iaV9zaXplID4+IHYtPmRhdGFfZGV2X2Jsb2NrX2Jp dHM7CisJaW8tPmJsb2NrID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+PgorCQkodi0+ZGF0YV9k ZXZfYmxvY2tfYml0cyAtIFNFQ1RPUl9TSElGVCk7CisJaW8tPm5fYmxvY2tzID0gYmlvLT5iaV9p dGVyLmJpX3NpemUgPj4gdi0+ZGF0YV9kZXZfYmxvY2tfYml0czsKIAogCWJpby0+YmlfZW5kX2lv ID0gdmVyaXR5X2VuZF9pbzsKIAliaW8tPmJpX3ByaXZhdGUgPSBpbzsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvZG0uYyBiL2RyaXZlcnMvbWQvZG0uYwppbmRleCA5ZTM5ZDJiLi41NTQ0YWY3IDEw MDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLmMKKysrIGIvZHJpdmVycy9tZC9kbS5jCkBAIC02Mzcs NyArNjM3LDcgQEAgc3RhdGljIHZvaWQgZGVjX3BlbmRpbmcoc3RydWN0IGRtX2lvICppbywgaW50 IGVycm9yKQogCQlpZiAoaW9fZXJyb3IgPT0gRE1fRU5ESU9fUkVRVUVVRSkKIAkJCXJldHVybjsK IAotCQlpZiAoKGJpby0+YmlfcncgJiBSRVFfRkxVU0gpICYmIGJpby0+Ymlfc2l6ZSkgeworCQlp ZiAoKGJpby0+YmlfcncgJiBSRVFfRkxVU0gpICYmIGJpby0+YmlfaXRlci5iaV9zaXplKSB7CiAJ CQkvKgogCQkJICogUHJlZmx1c2ggZG9uZSBmb3IgZmx1c2ggd2l0aCBkYXRhLCByZWlzc3VlCiAJ CQkgKiB3aXRob3V0IFJFUV9GTFVTSC4KQEAgLTY5Miw3ICs2OTIsNyBAQCBzdGF0aWMgdm9pZCBl bmRfY2xvbmVfYmlvKHN0cnVjdCBiaW8gKmNsb25lLCBpbnQgZXJyb3IpCiAJc3RydWN0IGRtX3Jx X2Nsb25lX2Jpb19pbmZvICppbmZvID0gY2xvbmUtPmJpX3ByaXZhdGU7CiAJc3RydWN0IGRtX3Jx X3RhcmdldF9pbyAqdGlvID0gaW5mby0+dGlvOwogCXN0cnVjdCBiaW8gKmJpbyA9IGluZm8tPm9y aWc7Ci0JdW5zaWduZWQgaW50IG5yX2J5dGVzID0gaW5mby0+b3JpZy0+Ymlfc2l6ZTsKKwl1bnNp Z25lZCBpbnQgbnJfYnl0ZXMgPSBpbmZvLT5vcmlnLT5iaV9pdGVyLmJpX3NpemU7CiAKIAliaW9f cHV0KGNsb25lKTsKIApAQCAtMTAyMyw3ICsxMDIzLDcgQEAgc3RhdGljIHZvaWQgX19tYXBfYmlv KHN0cnVjdCBkbV90YXJnZXRfaW8gKnRpbykKIAkgKiB0aGlzIGlvLgogCSAqLwogCWF0b21pY19p bmMoJnRpby0+aW8tPmlvX2NvdW50KTsKLQlzZWN0b3IgPSBjbG9uZS0+Ymlfc2VjdG9yOworCXNl Y3RvciA9IGNsb25lLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAlyID0gdGktPnR5cGUtPm1hcCh0aSwg Y2xvbmUpOwogCWlmIChyID09IERNX01BUElPX1JFTUFQUEVEKSB7CiAJCS8qIHRoZSBiaW8gaGFz IGJlZW4gcmVtYXBwZWQgc28gZGlzcGF0Y2ggaXQgKi8KQEAgLTEwNTUsMTMgKzEwNTUsMTMgQEAg c3RydWN0IGNsb25lX2luZm8gewogCiBzdGF0aWMgdm9pZCBiaW9fc2V0dXBfc2VjdG9yKHN0cnVj dCBiaW8gKmJpbywgc2VjdG9yX3Qgc2VjdG9yLCBzZWN0b3JfdCBsZW4pCiB7Ci0JYmlvLT5iaV9z ZWN0b3IgPSBzZWN0b3I7Ci0JYmlvLT5iaV9zaXplID0gdG9fYnl0ZXMobGVuKTsKKwliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zaXplID0gdG9fYnl0 ZXMobGVuKTsKIH0KIAogc3RhdGljIHZvaWQgYmlvX3NldHVwX2J2KHN0cnVjdCBiaW8gKmJpbywg dW5zaWduZWQgc2hvcnQgaWR4LCB1bnNpZ25lZCBzaG9ydCBidl9jb3VudCkKIHsKLQliaW8tPmJp X2lkeCA9IGlkeDsKKwliaW8tPmJpX2l0ZXIuYmlfaWR4ID0gaWR4OwogCWJpby0+YmlfdmNudCA9 IGlkeCArIGJ2X2NvdW50OwogCWJpby0+YmlfZmxhZ3MgJj0gfigxIDw8IEJJT19TRUdfVkFMSUQp OwogfQpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgc3RhdGljIHZvaWQgY2xvbmVfc3BsaXRfYmlvKHN0 cnVjdCBkbV90YXJnZXRfaW8gKnRpbywgc3RydWN0IGJpbyAqYmlvLAogCWNsb25lLT5iaV9ydyA9 IGJpby0+Ymlfcnc7CiAJY2xvbmUtPmJpX3ZjbnQgPSAxOwogCWNsb25lLT5iaV9pb192ZWMtPmJ2 X29mZnNldCA9IG9mZnNldDsKLQljbG9uZS0+YmlfaW9fdmVjLT5idl9sZW4gPSBjbG9uZS0+Ymlf c2l6ZTsKKwljbG9uZS0+YmlfaW9fdmVjLT5idl9sZW4gPSBjbG9uZS0+YmlfaXRlci5iaV9zaXpl OwogCWNsb25lLT5iaV9mbGFncyB8PSAxIDw8IEJJT19DTE9ORUQ7CiAKIAljbG9uZV9iaW9faW50 ZWdyaXR5KGJpbywgY2xvbmUsIGlkeCwgbGVuLCBvZmZzZXQsIDEpOwpAQCAtMTExNyw3ICsxMTE3 LDggQEAgc3RhdGljIHZvaWQgY2xvbmVfYmlvKHN0cnVjdCBkbV90YXJnZXRfaW8gKnRpbywgc3Ry dWN0IGJpbyAqYmlvLAogCWJpb19zZXR1cF9zZWN0b3IoY2xvbmUsIHNlY3RvciwgbGVuKTsKIAli aW9fc2V0dXBfYnYoY2xvbmUsIGlkeCwgYnZfY291bnQpOwogCi0JaWYgKGlkeCAhPSBiaW8tPmJp X2lkeCB8fCBjbG9uZS0+Ymlfc2l6ZSA8IGJpby0+Ymlfc2l6ZSkKKwlpZiAoaWR4ICE9IGJpby0+ YmlfaXRlci5iaV9pZHggfHwKKwkgICAgY2xvbmUtPmJpX2l0ZXIuYmlfc2l6ZSA8IGJpby0+Ymlf aXRlci5iaV9zaXplKQogCQl0cmltID0gMTsKIAljbG9uZV9iaW9faW50ZWdyaXR5KGJpbywgY2xv bmUsIGlkeCwgbGVuLCAwLCB0cmltKTsKIH0KQEAgLTE0MDUsOCArMTQwNiw4IEBAIHN0YXRpYyB2 b2lkIF9fc3BsaXRfYW5kX3Byb2Nlc3NfYmlvKHN0cnVjdCBtYXBwZWRfZGV2aWNlICptZCwKIAlj aS5pby0+YmlvID0gYmlvOwogCWNpLmlvLT5tZCA9IG1kOwogCXNwaW5fbG9ja19pbml0KCZjaS5p by0+ZW5kaW9fbG9jayk7Ci0JY2kuc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7Ci0JY2kuaWR4ID0g YmlvLT5iaV9pZHg7CisJY2kuc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwljaS5p ZHggPSBiaW8tPmJpX2l0ZXIuYmlfaWR4OwogCiAJc3RhcnRfaW9fYWNjdChjaS5pbyk7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWQvZmF1bHR5LmMgYi9kcml2ZXJzL21kL2ZhdWx0eS5jCmluZGV4 IDMxOTNhZWYuLmU4YjQ1NzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZmF1bHR5LmMKKysrIGIv ZHJpdmVycy9tZC9mYXVsdHkuYwpAQCAtNzQsOCArNzQsOCBAQCBzdGF0aWMgdm9pZCBmYXVsdHlf ZmFpbChzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnJvcikKIHsKIAlzdHJ1Y3QgYmlvICpiID0gYmlv LT5iaV9wcml2YXRlOwogCi0JYi0+Ymlfc2l6ZSA9IGJpby0+Ymlfc2l6ZTsKLQliLT5iaV9zZWN0 b3IgPSBiaW8tPmJpX3NlY3RvcjsKKwliLT5iaV9pdGVyLmJpX3NpemUgPSBiaW8tPmJpX2l0ZXIu Ymlfc2l6ZTsKKwliLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7 CiAKIAliaW9fcHV0KGJpbyk7CiAKQEAgLTE4NSwyNiArMTg1LDMxIEBAIHN0YXRpYyB2b2lkIG1h a2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCQlyZXR1 cm47CiAJCX0KIAotCQlpZiAoY2hlY2tfc2VjdG9yKGNvbmYsIGJpby0+Ymlfc2VjdG9yLCBiaW9f ZW5kX3NlY3RvcihiaW8pLCBXUklURSkpCisJCWlmIChjaGVja19zZWN0b3IoY29uZiwgYmlvLT5i aV9pdGVyLmJpX3NlY3RvciwKKwkJCQkgYmlvX2VuZF9zZWN0b3IoYmlvKSwgV1JJVEUpKQogCQkJ ZmFpbGl0ID0gMTsKIAkJaWYgKGNoZWNrX21vZGUoY29uZiwgV3JpdGVQZXJzaXN0ZW50KSkgewot CQkJYWRkX3NlY3Rvcihjb25mLCBiaW8tPmJpX3NlY3RvciwgV3JpdGVQZXJzaXN0ZW50KTsKKwkJ CWFkZF9zZWN0b3IoY29uZiwgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCQkgICBXcml0ZVBl cnNpc3RlbnQpOwogCQkJZmFpbGl0ID0gMTsKIAkJfQogCQlpZiAoY2hlY2tfbW9kZShjb25mLCBX cml0ZVRyYW5zaWVudCkpCiAJCQlmYWlsaXQgPSAxOwogCX0gZWxzZSB7CiAJCS8qIHJlYWQgcmVx dWVzdCAqLwotCQlpZiAoY2hlY2tfc2VjdG9yKGNvbmYsIGJpby0+Ymlfc2VjdG9yLCBiaW9fZW5k X3NlY3RvcihiaW8pLCBSRUFEKSkKKwkJaWYgKGNoZWNrX3NlY3Rvcihjb25mLCBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLAorCQkJCSBiaW9fZW5kX3NlY3RvcihiaW8pLCBSRUFEKSkKIAkJCWZhaWxp dCA9IDE7CiAJCWlmIChjaGVja19tb2RlKGNvbmYsIFJlYWRUcmFuc2llbnQpKQogCQkJZmFpbGl0 ID0gMTsKIAkJaWYgKGNoZWNrX21vZGUoY29uZiwgUmVhZFBlcnNpc3RlbnQpKSB7Ci0JCQlhZGRf c2VjdG9yKGNvbmYsIGJpby0+Ymlfc2VjdG9yLCBSZWFkUGVyc2lzdGVudCk7CisJCQlhZGRfc2Vj dG9yKGNvbmYsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJICAgUmVhZFBlcnNpc3RlbnQp OwogCQkJZmFpbGl0ID0gMTsKIAkJfQogCQlpZiAoY2hlY2tfbW9kZShjb25mLCBSZWFkRml4YWJs ZSkpIHsKLQkJCWFkZF9zZWN0b3IoY29uZiwgYmlvLT5iaV9zZWN0b3IsIFJlYWRGaXhhYmxlKTsK KwkJCWFkZF9zZWN0b3IoY29uZiwgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCQkgICBSZWFk Rml4YWJsZSk7CiAJCQlmYWlsaXQgPSAxOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZC9saW5lYXIuYyBiL2RyaXZlcnMvbWQvbGluZWFyLmMKaW5kZXggZjAzZmFiZC4uZmIzYjBkMCAx MDA2NDQKLS0tIGEvZHJpdmVycy9tZC9saW5lYXIuYworKysgYi9kcml2ZXJzL21kL2xpbmVhci5j CkBAIC0yOTcsMTkgKzI5NywxOSBAQCBzdGF0aWMgdm9pZCBsaW5lYXJfbWFrZV9yZXF1ZXN0KHN0 cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKmJpbykKIAl9CiAKIAlyY3VfcmVhZF9sb2Nr KCk7Ci0JdG1wX2RldiA9IHdoaWNoX2RldihtZGRldiwgYmlvLT5iaV9zZWN0b3IpOworCXRtcF9k ZXYgPSB3aGljaF9kZXYobWRkZXYsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCXN0YXJ0X3Nl Y3RvciA9IHRtcF9kZXYtPmVuZF9zZWN0b3IgLSB0bXBfZGV2LT5yZGV2LT5zZWN0b3JzOwogCiAK LQlpZiAodW5saWtlbHkoYmlvLT5iaV9zZWN0b3IgPj0gKHRtcF9kZXYtPmVuZF9zZWN0b3IpCi0J CSAgICAgfHwgKGJpby0+Ymlfc2VjdG9yIDwgc3RhcnRfc2VjdG9yKSkpIHsKKwlpZiAodW5saWtl bHkoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+PSAodG1wX2Rldi0+ZW5kX3NlY3RvcikKKwkJICAg ICB8fCAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8IHN0YXJ0X3NlY3RvcikpKSB7CiAJCWNoYXIg YltCREVWTkFNRV9TSVpFXTsKIAogCQlwcmludGsoS0VSTl9FUlIKIAkJICAgICAgICJtZC9saW5l YXI6JXM6IG1ha2VfcmVxdWVzdDogU2VjdG9yICVsbHUgb3V0IG9mIGJvdW5kcyBvbiAiCiAJCSAg ICAgICAiZGV2ICVzOiAlbGx1IHNlY3RvcnMsIG9mZnNldCAlbGx1XG4iLAogCQkgICAgICAgbWRu YW1lKG1kZGV2KSwKLQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3Is CisJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJ CSAgICAgICBiZGV2bmFtZSh0bXBfZGV2LT5yZGV2LT5iZGV2LCBiKSwKIAkJICAgICAgICh1bnNp Z25lZCBsb25nIGxvbmcpdG1wX2Rldi0+cmRldi0+c2VjdG9ycywKIAkJICAgICAgICh1bnNpZ25l ZCBsb25nIGxvbmcpc3RhcnRfc2VjdG9yKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgdm9p ZCBsaW5lYXJfbWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKmJp bykKIAogCQlyY3VfcmVhZF91bmxvY2soKTsKIAotCQlicCA9IGJpb19zcGxpdChiaW8sIGVuZF9z ZWN0b3IgLSBiaW8tPmJpX3NlY3Rvcik7CisJCWJwID0gYmlvX3NwbGl0KGJpbywgZW5kX3NlY3Rv ciAtIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCiAJCWxpbmVhcl9tYWtlX3JlcXVlc3QobWRk ZXYsICZicC0+YmlvMSk7CiAJCWxpbmVhcl9tYWtlX3JlcXVlc3QobWRkZXYsICZicC0+YmlvMik7 CkBAIC0zMzUsNyArMzM1LDcgQEAgc3RhdGljIHZvaWQgbGluZWFyX21ha2VfcmVxdWVzdChzdHJ1 Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJfQogCQkgICAgCiAJYmlvLT5iaV9i ZGV2ID0gdG1wX2Rldi0+cmRldi0+YmRldjsKLQliaW8tPmJpX3NlY3RvciA9IGJpby0+Ymlfc2Vj dG9yIC0gc3RhcnRfc2VjdG9yCisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJpby0+YmlfaXRl ci5iaV9zZWN0b3IgLSBzdGFydF9zZWN0b3IKIAkJKyB0bXBfZGV2LT5yZGV2LT5kYXRhX29mZnNl dDsKIAlyY3VfcmVhZF91bmxvY2soKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5jIGIv ZHJpdmVycy9tZC9tZC5jCmluZGV4IDYwZTEwZjEuLmVjYzczODEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbWQvbWQuYworKysgYi9kcml2ZXJzL21kL21kLmMKQEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0 aWMgdm9pZCBtZF9zdWJtaXRfZmx1c2hfZGF0YShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKQogCXN0 cnVjdCBtZGRldiAqbWRkZXYgPSBjb250YWluZXJfb2Yod3MsIHN0cnVjdCBtZGRldiwgZmx1c2hf d29yayk7CiAJc3RydWN0IGJpbyAqYmlvID0gbWRkZXYtPmZsdXNoX2JpbzsKIAotCWlmIChiaW8t PmJpX3NpemUgPT0gMCkKKwlpZiAoYmlvLT5iaV9pdGVyLmJpX3NpemUgPT0gMCkKIAkJLyogYW4g ZW1wdHkgYmFycmllciAtIGFsbCBkb25lICovCiAJCWJpb19lbmRpbyhiaW8sIDApOwogCWVsc2Ug ewpAQCAtNzQ2LDcgKzc0Niw3IEBAIHZvaWQgbWRfc3VwZXJfd3JpdGUoc3RydWN0IG1kZGV2ICpt ZGRldiwgc3RydWN0IG1kX3JkZXYgKnJkZXYsCiAJc3RydWN0IGJpbyAqYmlvID0gYmlvX2FsbG9j X21kZGV2KEdGUF9OT0lPLCAxLCBtZGRldik7CiAKIAliaW8tPmJpX2JkZXYgPSByZGV2LT5tZXRh X2JkZXYgPyByZGV2LT5tZXRhX2JkZXYgOiByZGV2LT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0g c2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJYmlvX2FkZF9wYWdl KGJpbywgcGFnZSwgc2l6ZSwgMCk7CiAJYmlvLT5iaV9wcml2YXRlID0gcmRldjsKIAliaW8tPmJp X2VuZF9pbyA9IHN1cGVyX3dyaXR0ZW47CkBAIC03ODUsMTMgKzc4NSwxMyBAQCBpbnQgc3luY19w YWdlX2lvKHN0cnVjdCBtZF9yZGV2ICpyZGV2LCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLAog CWJpby0+YmlfYmRldiA9IChtZXRhZGF0YV9vcCAmJiByZGV2LT5tZXRhX2JkZXYpID8KIAkJcmRl di0+bWV0YV9iZGV2IDogcmRldi0+YmRldjsKIAlpZiAobWV0YWRhdGFfb3ApCi0JCWJpby0+Ymlf c2VjdG9yID0gc2VjdG9yICsgcmRldi0+c2Jfc3RhcnQ7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBzZWN0b3IgKyByZGV2LT5zYl9zdGFydDsKIAllbHNlIGlmIChyZGV2LT5tZGRldi0+cmVz aGFwZV9wb3NpdGlvbiAhPSBNYXhTZWN0b3IgJiYKIAkJIChyZGV2LT5tZGRldi0+cmVzaGFwZV9i YWNrd2FyZHMgPT0KIAkJICAoc2VjdG9yID49IHJkZXYtPm1kZGV2LT5yZXNoYXBlX3Bvc2l0aW9u KSkpCi0JCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yICsgcmRldi0+bmV3X2RhdGFfb2Zmc2V0Owor CQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yICsgcmRldi0+bmV3X2RhdGFfb2Zmc2V0 OwogCWVsc2UKLQkJYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3IgKyByZGV2LT5kYXRhX29mZnNldDsK KwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArIHJkZXYtPmRhdGFfb2Zmc2V0Owog CWJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIHNpemUsIDApOwogCWluaXRfY29tcGxldGlvbigmZXZl bnQpOwogCWJpby0+YmlfcHJpdmF0ZSA9ICZldmVudDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQv bXVsdGlwYXRoLmMgYi9kcml2ZXJzL21kL211bHRpcGF0aC5jCmluZGV4IDE2NDJlYWUuLjg0OWFk MzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbXVsdGlwYXRoLmMKKysrIGIvZHJpdmVycy9tZC9t dWx0aXBhdGguYwpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyB2b2lkIG11bHRpcGF0aF9lbmRf cmVxdWVzdChzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnJvcikKIAkJbWRfZXJyb3IgKG1wX2JoLT5t ZGRldiwgcmRldik7CiAJCXByaW50ayhLRVJOX0VSUiAibXVsdGlwYXRoOiAlczogcmVzY2hlZHVs aW5nIHNlY3RvciAlbGx1XG4iLCAKIAkJICAgICAgIGJkZXZuYW1lKHJkZXYtPmJkZXYsYiksIAot CQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCSAgICAgICAo dW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCQltdWx0aXBhdGhf cmVzY2hlZHVsZV9yZXRyeShtcF9iaCk7CiAJfSBlbHNlCiAJCW11bHRpcGF0aF9lbmRfYmhfaW8o bXBfYmgsIGVycm9yKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgdm9pZCBtdWx0aXBhdGhf bWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKiBiaW8pCiAJbXVs dGlwYXRoID0gY29uZi0+bXVsdGlwYXRocyArIG1wX2JoLT5wYXRoOwogCiAJbXBfYmgtPmJpbyA9 ICpiaW87Ci0JbXBfYmgtPmJpby5iaV9zZWN0b3IgKz0gbXVsdGlwYXRoLT5yZGV2LT5kYXRhX29m ZnNldDsKKwltcF9iaC0+YmlvLmJpX2l0ZXIuYmlfc2VjdG9yICs9IG11bHRpcGF0aC0+cmRldi0+ ZGF0YV9vZmZzZXQ7CiAJbXBfYmgtPmJpby5iaV9iZGV2ID0gbXVsdGlwYXRoLT5yZGV2LT5iZGV2 OwogCW1wX2JoLT5iaW8uYmlfcncgfD0gUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVDsKIAltcF9iaC0+ YmlvLmJpX2VuZF9pbyA9IG11bHRpcGF0aF9lbmRfcmVxdWVzdDsKQEAgLTM1NSwyMSArMzU1LDIy IEBAIHN0YXRpYyB2b2lkIG11bHRpcGF0aGQoc3RydWN0IG1kX3RocmVhZCAqdGhyZWFkKQogCQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZjb25mLT5kZXZpY2VfbG9jaywgZmxhZ3MpOwogCiAJCWJp byA9ICZtcF9iaC0+YmlvOwotCQliaW8tPmJpX3NlY3RvciA9IG1wX2JoLT5tYXN0ZXJfYmlvLT5i aV9zZWN0b3I7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBtcF9iaC0+bWFzdGVyX2Jpby0+ YmlfaXRlci5iaV9zZWN0b3I7CiAJCQogCQlpZiAoKG1wX2JoLT5wYXRoID0gbXVsdGlwYXRoX21h cCAoY29uZikpPDApIHsKIAkJCXByaW50ayhLRVJOX0FMRVJUICJtdWx0aXBhdGg6ICVzOiB1bnJl Y292ZXJhYmxlIElPIHJlYWQiCiAJCQkJIiBlcnJvciBmb3IgYmxvY2sgJWxsdVxuIiwKIAkJCQli ZGV2bmFtZShiaW8tPmJpX2JkZXYsYiksCi0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJp X3NlY3Rvcik7CisJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9y KTsKIAkJCW11bHRpcGF0aF9lbmRfYmhfaW8obXBfYmgsIC1FSU8pOwogCQl9IGVsc2UgewogCQkJ cHJpbnRrKEtFUk5fRVJSICJtdWx0aXBhdGg6ICVzOiByZWRpcmVjdGluZyBzZWN0b3IgJWxsdSIK IAkJCQkiIHRvIGFub3RoZXIgSU8gcGF0aFxuIiwKIAkJCQliZGV2bmFtZShiaW8tPmJpX2JkZXYs YiksCi0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQkJKHVuc2ln bmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJCSpiaW8gPSAqKG1wX2Jo LT5tYXN0ZXJfYmlvKTsKLQkJCWJpby0+Ymlfc2VjdG9yICs9IGNvbmYtPm11bHRpcGF0aHNbbXBf YmgtPnBhdGhdLnJkZXYtPmRhdGFfb2Zmc2V0OworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAr PQorCQkJCWNvbmYtPm11bHRpcGF0aHNbbXBfYmgtPnBhdGhdLnJkZXYtPmRhdGFfb2Zmc2V0Owog CQkJYmlvLT5iaV9iZGV2ID0gY29uZi0+bXVsdGlwYXRoc1ttcF9iaC0+cGF0aF0ucmRldi0+YmRl djsKIAkJCWJpby0+YmlfcncgfD0gUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVDsKIAkJCWJpby0+Ymlf ZW5kX2lvID0gbXVsdGlwYXRoX2VuZF9yZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9y YWlkMC5jIGIvZHJpdmVycy9tZC9yYWlkMC5jCmluZGV4IGM0ZDQyMGIuLmUzOGQxZDMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDAuYworKysgYi9kcml2ZXJzL21kL3JhaWQwLmMKQEAgLTUw MSwxMCArNTAxLDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IGlzX2lvX2luX2NodW5rX2JvdW5kYXJ5 KHN0cnVjdCBtZGRldiAqbWRkZXYsCiAJCQl1bnNpZ25lZCBpbnQgY2h1bmtfc2VjdHMsIHN0cnVj dCBiaW8gKmJpbykKIHsKIAlpZiAobGlrZWx5KGlzX3Bvd2VyX29mXzIoY2h1bmtfc2VjdHMpKSkg ewotCQlyZXR1cm4gY2h1bmtfc2VjdHMgPj0gKChiaW8tPmJpX3NlY3RvciAmIChjaHVua19zZWN0 cy0xKSkKKwkJcmV0dXJuIGNodW5rX3NlY3RzID49CisJCQkoKGJpby0+YmlfaXRlci5iaV9zZWN0 b3IgJiAoY2h1bmtfc2VjdHMtMSkpCiAJCQkJCSsgYmlvX3NlY3RvcnMoYmlvKSk7CiAJfSBlbHNl ewotCQlzZWN0b3JfdCBzZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsKKwkJc2VjdG9yX3Qgc2VjdG9y ID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAkJcmV0dXJuIGNodW5rX3NlY3RzID49IChzZWN0 b3JfZGl2KHNlY3RvciwgY2h1bmtfc2VjdHMpCiAJCQkJCQkrIGJpb19zZWN0b3JzKGJpbykpOwog CX0KQEAgLTUyNCw3ICs1MjUsNyBAQCBzdGF0aWMgdm9pZCByYWlkMF9tYWtlX3JlcXVlc3Qoc3Ry dWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqYmlvKQogCiAJY2h1bmtfc2VjdHMgPSBtZGRl di0+Y2h1bmtfc2VjdG9yczsKIAlpZiAodW5saWtlbHkoIWlzX2lvX2luX2NodW5rX2JvdW5kYXJ5 KG1kZGV2LCBjaHVua19zZWN0cywgYmlvKSkpIHsKLQkJc2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5i aV9zZWN0b3I7CisJCXNlY3Rvcl90IHNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJ CXN0cnVjdCBiaW9fcGFpciAqYnA7CiAJCS8qIFNhbml0eSBjaGVjayAtLSBxdWV1ZSBmdW5jdGlv bnMgc2hvdWxkIHByZXZlbnQgdGhpcyBoYXBwZW5pbmcgKi8KIAkJaWYgKGJpb19zZWdtZW50cyhi aW8pID4gMSkKQEAgLTU0NCwxMiArNTQ1LDEyIEBAIHN0YXRpYyB2b2lkIHJhaWQwX21ha2VfcmVx dWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXJldHVybjsKIAl9 CiAKLQlzZWN0b3Jfb2Zmc2V0ID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX29mZnNldCA9IGJp by0+YmlfaXRlci5iaV9zZWN0b3I7CiAJem9uZSA9IGZpbmRfem9uZShtZGRldi0+cHJpdmF0ZSwg JnNlY3Rvcl9vZmZzZXQpOwotCXRtcF9kZXYgPSBtYXBfc2VjdG9yKG1kZGV2LCB6b25lLCBiaW8t PmJpX3NlY3RvciwKKwl0bXBfZGV2ID0gbWFwX3NlY3RvcihtZGRldiwgem9uZSwgYmlvLT5iaV9p dGVyLmJpX3NlY3RvciwKIAkJCSAgICAgJnNlY3Rvcl9vZmZzZXQpOwogCWJpby0+YmlfYmRldiA9 IHRtcF9kZXYtPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3Jfb2Zmc2V0ICsgem9uZS0+ ZGV2X3N0YXJ0ICsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yX29mZnNldCArIHpv bmUtPmRldl9zdGFydCArCiAJCXRtcF9kZXYtPmRhdGFfb2Zmc2V0OwogCiAJaWYgKHVubGlrZWx5 KChiaW8tPmJpX3J3ICYgUkVRX0RJU0NBUkQpICYmCkBAIC01NjYsNyArNTY3LDggQEAgYmFkX21h cDoKIAlwcmludGsoIm1kL3JhaWQwOiVzOiBtYWtlX3JlcXVlc3QgYnVnOiBjYW4ndCBjb252ZXJ0 IGJsb2NrIGFjcm9zcyBjaHVua3MiCiAJICAgICAgICIgb3IgYmlnZ2VyIHRoYW4gJWRrICVsbHUg JWRcbiIsCiAJICAgICAgIG1kbmFtZShtZGRldiksIGNodW5rX3NlY3RzIC8gMiwKLQkgICAgICAg KHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3RvciwgYmlvX3NlY3RvcnMoYmlvKSAvIDIp OworCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJ ICAgICAgIGJpb19zZWN0b3JzKGJpbykgLyAyKTsKIAogCWJpb19pb19lcnJvcihiaW8pOwogCXJl dHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEuYyBiL2RyaXZlcnMvbWQvcmFpZDEu YwppbmRleCBmYzgxN2ZmLi5jNDA4NDZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQxLmMK KysrIGIvZHJpdmVycy9tZC9yYWlkMS5jCkBAIC0yNTUsOSArMjU1LDggQEAgc3RhdGljIHZvaWQg cmFpZF9lbmRfYmlvX2lvKHN0cnVjdCByMWJpbyAqcjFfYmlvKQogCWlmICghdGVzdF9hbmRfc2V0 X2JpdChSMUJJT19SZXR1cm5lZCwgJnIxX2Jpby0+c3RhdGUpKSB7CiAJCXByX2RlYnVnKCJyYWlk MTogc3luYyBlbmQgJXMgb24gc2VjdG9ycyAlbGx1LSVsbHVcbiIsCiAJCQkgKGJpb19kYXRhX2Rp cihiaW8pID09IFdSSVRFKSA/ICJ3cml0ZSIgOiAicmVhZCIsCi0JCQkgKHVuc2lnbmVkIGxvbmcg bG9uZykgYmlvLT5iaV9zZWN0b3IsCi0JCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgYmlvLT5iaV9z ZWN0b3IgKwotCQkJIGJpb19zZWN0b3JzKGJpbykgLSAxKTsKKwkJCSAodW5zaWduZWQgbG9uZyBs b25nKSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIGJp b19lbmRfc2VjdG9yKGJpbykgLSAxKTsKIAogCQljYWxsX2Jpb19lbmRpbyhyMV9iaW8pOwogCX0K QEAgLTQ1Niw5ICs0NTUsOCBAQCBzdGF0aWMgdm9pZCByYWlkMV9lbmRfd3JpdGVfcmVxdWVzdChz dHJ1Y3QgYmlvICpiaW8sIGludCBlcnJvcikKIAkJCQlzdHJ1Y3QgYmlvICptYmlvID0gcjFfYmlv LT5tYXN0ZXJfYmlvOwogCQkJCXByX2RlYnVnKCJyYWlkMTogYmVoaW5kIGVuZCB3cml0ZSBzZWN0 b3JzIgogCQkJCQkgIiAlbGx1LSVsbHVcbiIsCi0JCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBt YmlvLT5iaV9zZWN0b3IsCi0JCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBtYmlvLT5iaV9zZWN0 b3IgKwotCQkJCQkgYmlvX3NlY3RvcnMobWJpbykgLSAxKTsKKwkJCQkJICh1bnNpZ25lZCBsb25n IGxvbmcpIG1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9u ZykgYmlvX2VuZF9zZWN0b3IobWJpbykgLSAxKTsKIAkJCQljYWxsX2Jpb19lbmRpbyhyMV9iaW8p OwogCQkJfQogCQl9CkBAIC05NDUsNyArOTQzLDggQEAgZG9fc3luY19pbzoKIAkJaWYgKGJ2ZWNz W2ldLmJ2X3BhZ2UpCiAJCQlwdXRfcGFnZShidmVjc1tpXS5idl9wYWdlKTsKIAlrZnJlZShidmVj cyk7Ci0JcHJfZGVidWcoIiVkQiBiZWhpbmQgYWxsb2MgZmFpbGVkLCBkb2luZyBzeW5jIEkvT1xu IiwgYmlvLT5iaV9zaXplKTsKKwlwcl9kZWJ1ZygiJWRCIGJlaGluZCBhbGxvYyBmYWlsZWQsIGRv aW5nIHN5bmMgSS9PXG4iLAorCQkgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogfQogCiBzdHJ1Y3Qg cmFpZDFfcGx1Z19jYiB7CkBAIC0xMDI0LDcgKzEwMjMsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX3Jl cXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykKIAogCWlmIChiaW9f ZGF0YV9kaXIoYmlvKSA9PSBXUklURSAmJgogCSAgICBiaW9fZW5kX3NlY3RvcihiaW8pID4gbWRk ZXYtPnN1c3BlbmRfbG8gJiYKLQkgICAgYmlvLT5iaV9zZWN0b3IgPCBtZGRldi0+c3VzcGVuZF9o aSkgeworCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDwgbWRkZXYtPnN1c3BlbmRfaGkpIHsK IAkJLyogQXMgdGhlIHN1c3BlbmRfKiByYW5nZSBpcyBjb250cm9sbGVkIGJ5CiAJCSAqIHVzZXJz cGFjZSwgd2Ugd2FudCBhbiBpbnRlcnJ1cHRpYmxlCiAJCSAqIHdhaXQuCkBAIC0xMDM1LDcgKzEw MzQsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3Ry dWN0IGJpbyAqIGJpbykKIAkJCXByZXBhcmVfdG9fd2FpdCgmY29uZi0+d2FpdF9iYXJyaWVyLAog CQkJCQkmdywgVEFTS19JTlRFUlJVUFRJQkxFKTsKIAkJCWlmIChiaW9fZW5kX3NlY3RvcihiaW8p IDw9IG1kZGV2LT5zdXNwZW5kX2xvIHx8Ci0JCQkgICAgYmlvLT5iaV9zZWN0b3IgPj0gbWRkZXYt PnN1c3BlbmRfaGkpCisJCQkgICAgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+PSBtZGRldi0+c3Vz cGVuZF9oaSkKIAkJCQlicmVhazsKIAkJCXNjaGVkdWxlKCk7CiAJCX0KQEAgLTEwNTcsNyArMTA1 Niw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1 Y3QgYmlvICogYmlvKQogCXIxX2Jpby0+c2VjdG9ycyA9IGJpb19zZWN0b3JzKGJpbyk7CiAJcjFf YmlvLT5zdGF0ZSA9IDA7CiAJcjFfYmlvLT5tZGRldiA9IG1kZGV2OwotCXIxX2Jpby0+c2VjdG9y ID0gYmlvLT5iaV9zZWN0b3I7CisJcjFfYmlvLT5zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yOwogCiAJLyogV2UgbWlnaHQgbmVlZCB0byBpc3N1ZSBtdWx0aXBsZSByZWFkcyB0byBkaWZm ZXJlbnQKIAkgKiBkZXZpY2VzIGlmIHRoZXJlIGFyZSBiYWQgYmxvY2tzIGFyb3VuZCwgc28gd2Ug a2VlcApAQCAtMTA5NywxMiArMTA5NiwxMyBAQCByZWFkX2FnYWluOgogCQlyMV9iaW8tPnJlYWRf ZGlzayA9IHJkaXNrOwogCiAJCXJlYWRfYmlvID0gYmlvX2Nsb25lX21kZGV2KGJpbywgR0ZQX05P SU8sIG1kZGV2KTsKLQkJYmlvX3RyaW0ocmVhZF9iaW8sIHIxX2Jpby0+c2VjdG9yIC0gYmlvLT5i aV9zZWN0b3IsCisJCWJpb190cmltKHJlYWRfYmlvLCByMV9iaW8tPnNlY3RvciAtIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IsCiAJCQkgbWF4X3NlY3RvcnMpOwogCiAJCXIxX2Jpby0+Ymlvc1tyZGlz a10gPSByZWFkX2JpbzsKIAotCQlyZWFkX2Jpby0+Ymlfc2VjdG9yID0gcjFfYmlvLT5zZWN0b3Ig KyBtaXJyb3ItPnJkZXYtPmRhdGFfb2Zmc2V0OworCQlyZWFkX2Jpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSByMV9iaW8tPnNlY3RvciArCisJCQltaXJyb3ItPnJkZXYtPmRhdGFfb2Zmc2V0OwogCQly ZWFkX2Jpby0+YmlfYmRldiA9IG1pcnJvci0+cmRldi0+YmRldjsKIAkJcmVhZF9iaW8tPmJpX2Vu ZF9pbyA9IHJhaWQxX2VuZF9yZWFkX3JlcXVlc3Q7CiAJCXJlYWRfYmlvLT5iaV9ydyA9IFJFQUQg fCBkb19zeW5jOwpAQCAtMTExNCw3ICsxMTE0LDcgQEAgcmVhZF9hZ2FpbjoKIAkJCSAqLwogCiAJ CQlzZWN0b3JzX2hhbmRsZWQgPSAocjFfYmlvLT5zZWN0b3IgKyBtYXhfc2VjdG9ycwotCQkJCQkg ICAtIGJpby0+Ymlfc2VjdG9yKTsKKwkJCQkJICAgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsK IAkJCXIxX2Jpby0+c2VjdG9ycyA9IG1heF9zZWN0b3JzOwogCQkJc3Bpbl9sb2NrX2lycSgmY29u Zi0+ZGV2aWNlX2xvY2spOwogCQkJaWYgKGJpby0+YmlfcGh5c19zZWdtZW50cyA9PSAwKQpAQCAt MTEzNSw3ICsxMTM1LDggQEAgcmVhZF9hZ2FpbjoKIAkJCXIxX2Jpby0+c2VjdG9ycyA9IGJpb19z ZWN0b3JzKGJpbykgLSBzZWN0b3JzX2hhbmRsZWQ7CiAJCQlyMV9iaW8tPnN0YXRlID0gMDsKIAkJ CXIxX2Jpby0+bWRkZXYgPSBtZGRldjsKLQkJCXIxX2Jpby0+c2VjdG9yID0gYmlvLT5iaV9zZWN0 b3IgKyBzZWN0b3JzX2hhbmRsZWQ7CisJCQlyMV9iaW8tPnNlY3RvciA9IGJpby0+YmlfaXRlci5i aV9zZWN0b3IgKworCQkJCXNlY3RvcnNfaGFuZGxlZDsKIAkJCWdvdG8gcmVhZF9hZ2FpbjsKIAkJ fSBlbHNlCiAJCQlnZW5lcmljX21ha2VfcmVxdWVzdChyZWFkX2Jpbyk7CkBAIC0xMjU0LDcgKzEy NTUsNyBAQCByZWFkX2FnYWluOgogCQkJYmlvLT5iaV9waHlzX3NlZ21lbnRzKys7CiAJCXNwaW5f dW5sb2NrX2lycSgmY29uZi0+ZGV2aWNlX2xvY2spOwogCX0KLQlzZWN0b3JzX2hhbmRsZWQgPSBy MV9iaW8tPnNlY3RvciArIG1heF9zZWN0b3JzIC0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yc19o YW5kbGVkID0gcjFfYmlvLT5zZWN0b3IgKyBtYXhfc2VjdG9ycyAtIGJpby0+YmlfaXRlci5iaV9z ZWN0b3I7CiAKIAlhdG9taWNfc2V0KCZyMV9iaW8tPnJlbWFpbmluZywgMSk7CiAJYXRvbWljX3Nl dCgmcjFfYmlvLT5iZWhpbmRfcmVtYWluaW5nLCAwKTsKQEAgLTEyNjYsNyArMTI2Nyw3IEBAIHJl YWRfYWdhaW46CiAJCQljb250aW51ZTsKIAogCQltYmlvID0gYmlvX2Nsb25lX21kZGV2KGJpbywg R0ZQX05PSU8sIG1kZGV2KTsKLQkJYmlvX3RyaW0obWJpbywgcjFfYmlvLT5zZWN0b3IgLSBiaW8t PmJpX3NlY3RvciwgbWF4X3NlY3RvcnMpOworCQliaW9fdHJpbShtYmlvLCByMV9iaW8tPnNlY3Rv ciAtIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsIG1heF9zZWN0b3JzKTsKIAogCQlpZiAoZmlyc3Rf Y2xvbmUpIHsKIAkJCS8qIGRvIGJlaGluZCBJL08gPwpAQCAtMTMwMCw3ICsxMzAxLDcgQEAgcmVh ZF9hZ2FpbjoKIAogCQlyMV9iaW8tPmJpb3NbaV0gPSBtYmlvOwogCi0JCW1iaW8tPmJpX3NlY3Rv cgk9IChyMV9iaW8tPnNlY3RvciArCisJCW1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gKHIxX2Jp by0+c2VjdG9yICsKIAkJCQkgICBjb25mLT5taXJyb3JzW2ldLnJkZXYtPmRhdGFfb2Zmc2V0KTsK IAkJbWJpby0+YmlfYmRldiA9IGNvbmYtPm1pcnJvcnNbaV0ucmRldi0+YmRldjsKIAkJbWJpby0+ YmlfZW5kX2lvCT0gcmFpZDFfZW5kX3dyaXRlX3JlcXVlc3Q7CkBAIC0xMzQwLDcgKzEzNDEsNyBA QCByZWFkX2FnYWluOgogCQlyMV9iaW8tPnNlY3RvcnMgPSBiaW9fc2VjdG9ycyhiaW8pIC0gc2Vj dG9yc19oYW5kbGVkOwogCQlyMV9iaW8tPnN0YXRlID0gMDsKIAkJcjFfYmlvLT5tZGRldiA9IG1k ZGV2OwotCQlyMV9iaW8tPnNlY3RvciA9IGJpby0+Ymlfc2VjdG9yICsgc2VjdG9yc19oYW5kbGVk OworCQlyMV9iaW8tPnNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgKyBzZWN0b3JzX2hh bmRsZWQ7CiAJCWdvdG8gcmV0cnlfd3JpdGU7CiAJfQogCkBAIC0xODYwLDE0ICsxODYxLDE0IEBA IHN0YXRpYyBpbnQgcHJvY2Vzc19jaGVja3Moc3RydWN0IHIxYmlvICpyMV9iaW8pCiAJCS8qIGZp eHVwIHRoZSBiaW8gZm9yIHJldXNlICovCiAJCWJpb19yZXNldChiKTsKIAkJYi0+YmlfdmNudCA9 IHZjbnQ7Ci0JCWItPmJpX3NpemUgPSByMV9iaW8tPnNlY3RvcnMgPDwgOTsKLQkJYi0+Ymlfc2Vj dG9yID0gcjFfYmlvLT5zZWN0b3IgKworCQliLT5iaV9pdGVyLmJpX3NpemUgPSByMV9iaW8tPnNl Y3RvcnMgPDwgOTsKKwkJYi0+YmlfaXRlci5iaV9zZWN0b3IgPSByMV9iaW8tPnNlY3RvciArCiAJ CQljb25mLT5taXJyb3JzW2ldLnJkZXYtPmRhdGFfb2Zmc2V0OwogCQliLT5iaV9iZGV2ID0gY29u Zi0+bWlycm9yc1tpXS5yZGV2LT5iZGV2OwogCQliLT5iaV9lbmRfaW8gPSBlbmRfc3luY19yZWFk OwogCQliLT5iaV9wcml2YXRlID0gcjFfYmlvOwogCi0JCXNpemUgPSBiLT5iaV9zaXplOworCQlz aXplID0gYi0+YmlfaXRlci5iaV9zaXplOwogCQlmb3IgKGogPSAwOyBqIDwgdmNudCA7IGorKykg ewogCQkJc3RydWN0IGJpb192ZWMgKmJpOwogCQkJYmkgPSAmYi0+YmlfaW9fdmVjW2pdOwpAQCAt MjEyMiwxMSArMjEyMywxMSBAQCBzdGF0aWMgaW50IG5hcnJvd193cml0ZV9lcnJvcihzdHJ1Y3Qg cjFiaW8gKnIxX2JpbywgaW50IGkpCiAJCX0KIAogCQl3YmlvLT5iaV9ydyA9IFdSSVRFOwotCQl3 YmlvLT5iaV9zZWN0b3IgPSByMV9iaW8tPnNlY3RvcjsKLQkJd2Jpby0+Ymlfc2l6ZSA9IHIxX2Jp by0+c2VjdG9ycyA8PCA5OworCQl3YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHIxX2Jpby0+c2Vj dG9yOworCQl3YmlvLT5iaV9pdGVyLmJpX3NpemUgPSByMV9iaW8tPnNlY3RvcnMgPDwgOTsKIAog CQliaW9fdHJpbSh3YmlvLCBzZWN0b3IgLSByMV9iaW8tPnNlY3Rvciwgc2VjdG9ycyk7Ci0JCXdi aW8tPmJpX3NlY3RvciArPSByZGV2LT5kYXRhX29mZnNldDsKKwkJd2Jpby0+YmlfaXRlci5iaV9z ZWN0b3IgKz0gcmRldi0+ZGF0YV9vZmZzZXQ7CiAJCXdiaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2 OwogCQlpZiAoc3VibWl0X2Jpb193YWl0KFdSSVRFLCB3YmlvKSA9PSAwKQogCQkJLyogZmFpbHVy ZSEgKi8KQEAgLTIyNDAsNyArMjI0MSw4IEBAIHJlYWRfbW9yZToKIAkJfQogCQlyMV9iaW8tPnJl YWRfZGlzayA9IGRpc2s7CiAJCWJpbyA9IGJpb19jbG9uZV9tZGRldihyMV9iaW8tPm1hc3Rlcl9i aW8sIEdGUF9OT0lPLCBtZGRldik7Ci0JCWJpb190cmltKGJpbywgcjFfYmlvLT5zZWN0b3IgLSBi aW8tPmJpX3NlY3RvciwgbWF4X3NlY3RvcnMpOworCQliaW9fdHJpbShiaW8sIHIxX2Jpby0+c2Vj dG9yIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCSBtYXhfc2VjdG9ycyk7CiAJCXIxX2Jp by0+Ymlvc1tyMV9iaW8tPnJlYWRfZGlza10gPSBiaW87CiAJCXJkZXYgPSBjb25mLT5taXJyb3Jz W2Rpc2tdLnJkZXY7CiAJCXByaW50a19yYXRlbGltaXRlZChLRVJOX0VSUgpAQCAtMjI0OSw3ICsy MjUxLDcgQEAgcmVhZF9tb3JlOgogCQkJCSAgIG1kbmFtZShtZGRldiksCiAJCQkJICAgKHVuc2ln bmVkIGxvbmcgbG9uZylyMV9iaW8tPnNlY3RvciwKIAkJCQkgICBiZGV2bmFtZShyZGV2LT5iZGV2 LCBiKSk7Ci0JCWJpby0+Ymlfc2VjdG9yID0gcjFfYmlvLT5zZWN0b3IgKyByZGV2LT5kYXRhX29m ZnNldDsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHIxX2Jpby0+c2VjdG9yICsgcmRldi0+ ZGF0YV9vZmZzZXQ7CiAJCWJpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJCWJpby0+YmlfZW5k X2lvID0gcmFpZDFfZW5kX3JlYWRfcmVxdWVzdDsKIAkJYmlvLT5iaV9ydyA9IFJFQUQgfCBkb19z eW5jOwpAQCAtMjI1OCw3ICsyMjYwLDcgQEAgcmVhZF9tb3JlOgogCQkJLyogRHJhdCAtIGhhdmUg dG8gc3BsaXQgdGhpcyB1cCBtb3JlICovCiAJCQlzdHJ1Y3QgYmlvICptYmlvID0gcjFfYmlvLT5t YXN0ZXJfYmlvOwogCQkJaW50IHNlY3RvcnNfaGFuZGxlZCA9IChyMV9iaW8tPnNlY3RvciArIG1h eF9zZWN0b3JzCi0JCQkJCSAgICAgICAtIG1iaW8tPmJpX3NlY3Rvcik7CisJCQkJCSAgICAgICAt IG1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJCXIxX2Jpby0+c2VjdG9ycyA9IG1heF9zZWN0 b3JzOwogCQkJc3Bpbl9sb2NrX2lycSgmY29uZi0+ZGV2aWNlX2xvY2spOwogCQkJaWYgKG1iaW8t PmJpX3BoeXNfc2VnbWVudHMgPT0gMCkKQEAgLTIyNzYsNyArMjI3OCw4IEBAIHJlYWRfbW9yZToK IAkJCXIxX2Jpby0+c3RhdGUgPSAwOwogCQkJc2V0X2JpdChSMUJJT19SZWFkRXJyb3IsICZyMV9i aW8tPnN0YXRlKTsKIAkJCXIxX2Jpby0+bWRkZXYgPSBtZGRldjsKLQkJCXIxX2Jpby0+c2VjdG9y ID0gbWJpby0+Ymlfc2VjdG9yICsgc2VjdG9yc19oYW5kbGVkOworCQkJcjFfYmlvLT5zZWN0b3Ig PSBtYmlvLT5iaV9pdGVyLmJpX3NlY3RvciArCisJCQkJc2VjdG9yc19oYW5kbGVkOwogCiAJCQln b3RvIHJlYWRfbW9yZTsKIAkJfSBlbHNlCkBAIC0yNTAwLDcgKzI1MDMsNyBAQCBzdGF0aWMgc2Vj dG9yX3Qgc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90IHNlY3Rvcl9u ciwgaW50ICpza2lwcAogCQl9CiAJCWlmIChiaW8tPmJpX2VuZF9pbykgewogCQkJYXRvbWljX2lu YygmcmRldi0+bnJfcGVuZGluZyk7Ci0JCQliaW8tPmJpX3NlY3RvciA9IHNlY3Rvcl9uciArIHJk ZXYtPmRhdGFfb2Zmc2V0OworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3Rvcl9uciAr IHJkZXYtPmRhdGFfb2Zmc2V0OwogCQkJYmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKIAkJCWJp by0+YmlfcHJpdmF0ZSA9IHIxX2JpbzsKIAkJfQpAQCAtMjYwMCw3ICsyNjAzLDcgQEAgc3RhdGlj IHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0 b3JfbnIsIGludCAqc2tpcHAKIAkJCQkJCQljb250aW51ZTsKIAkJCQkJCS8qIHJlbW92ZSBsYXN0 IHBhZ2UgZnJvbSB0aGlzIGJpbyAqLwogCQkJCQkJYmlvLT5iaV92Y250LS07Ci0JCQkJCQliaW8t PmJpX3NpemUgLT0gbGVuOworCQkJCQkJYmlvLT5iaV9pdGVyLmJpX3NpemUgLT0gbGVuOwogCQkJ CQkJYmlvLT5iaV9mbGFncyAmPSB+KDE8PCBCSU9fU0VHX1ZBTElEKTsKIAkJCQkJfQogCQkJCQln b3RvIGJpb19mdWxsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9yYWlkMTAuYyBiL2RyaXZlcnMv bWQvcmFpZDEwLmMKaW5kZXggYTU4MjIzNS4uZmNhODg4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZC9yYWlkMTAuYworKysgYi9kcml2ZXJzL21kL3JhaWQxMC5jCkBAIC0xMTgyLDcgKzExODIsNyBA QCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJp byAqIGJpbykKIAkvKiBJZiB0aGlzIHJlcXVlc3QgY3Jvc3NlcyBhIGNodW5rIGJvdW5kYXJ5LCB3 ZSBuZWVkIHRvCiAJICogc3BsaXQgaXQuICBUaGlzIHdpbGwgb25seSBoYXBwZW4gZm9yIDEgUEFH RSAob3IgbGVzcykgcmVxdWVzdHMuCiAJICovCi0JaWYgKHVubGlrZWx5KChiaW8tPmJpX3NlY3Rv ciAmIGNodW5rX21hc2spICsgYmlvX3NlY3RvcnMoYmlvKQorCWlmICh1bmxpa2VseSgoYmlvLT5i aV9pdGVyLmJpX3NlY3RvciAmIGNodW5rX21hc2spICsgYmlvX3NlY3RvcnMoYmlvKQogCQkgICAg ID4gY2h1bmtfc2VjdHMKIAkJICAgICAmJiAoY29uZi0+Z2VvLm5lYXJfY29waWVzIDwgY29uZi0+ Z2VvLnJhaWRfZGlza3MKIAkJCSB8fCBjb25mLT5wcmV2Lm5lYXJfY29waWVzIDwgY29uZi0+cHJl di5yYWlkX2Rpc2tzKSkpIHsKQEAgLTExOTMsOCArMTE5Myw4IEBAIHN0YXRpYyB2b2lkIG1ha2Vf cmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmlvKQogCQkvKiBUaGlz IGlzIGEgb25lIHBhZ2UgYmlvIHRoYXQgdXBwZXIgbGF5ZXJzCiAJCSAqIHJlZnVzZSB0byBzcGxp dCBmb3IgdXMsIHNvIHdlIG5lZWQgdG8gc3BsaXQgaXQuCiAJCSAqLwotCQlicCA9IGJpb19zcGxp dChiaW8sCi0JCQkgICAgICAgY2h1bmtfc2VjdHMgLSAoYmlvLT5iaV9zZWN0b3IgJiAoY2h1bmtf c2VjdHMgLSAxKSkgKTsKKwkJYnAgPSBiaW9fc3BsaXQoYmlvLCBjaHVua19zZWN0cyAtCisJCQkg ICAgICAgKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgJiAoY2h1bmtfc2VjdHMgLSAxKSkpOwogCiAJ CS8qIEVhY2ggb2YgdGhlc2UgJ21ha2VfcmVxdWVzdCcgY2FsbHMgd2lsbCBjYWxsICd3YWl0X2Jh cnJpZXInLgogCQkgKiBJZiB0aGUgZmlyc3Qgc3VjY2VlZHMgYnV0IHRoZSBzZWNvbmQgYmxvY2tz IGR1ZSB0byB0aGUgcmVzeW5jCkBAIC0xMjIxLDcgKzEyMjEsOCBAQCBzdGF0aWMgdm9pZCBtYWtl X3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykKIAliYWRfbWFw OgogCQlwcmludGsoIm1kL3JhaWQxMDolczogbWFrZV9yZXF1ZXN0IGJ1ZzogY2FuJ3QgY29udmVy dCBibG9jayBhY3Jvc3MgY2h1bmtzIgogCQkgICAgICAgIiBvciBiaWdnZXIgdGhhbiAlZGsgJWxs dSAlZFxuIiwgbWRuYW1lKG1kZGV2KSwgY2h1bmtfc2VjdHMvMiwKLQkJICAgICAgICh1bnNpZ25l ZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IsIGJpb19zZWN0b3JzKGJpbykgLyAyKTsKKwkJICAg ICAgICh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJICAgICAg IGJpb19zZWN0b3JzKGJpbykgLyAyKTsKIAogCQliaW9faW9fZXJyb3IoYmlvKTsKIAkJcmV0dXJu OwpAQCAtMTIzOCwyNCArMTIzOSwyNSBAQCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0 IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykKIAogCXNlY3RvcnMgPSBiaW9fc2VjdG9y cyhiaW8pOwogCXdoaWxlICh0ZXN0X2JpdChNRF9SRUNPVkVSWV9SRVNIQVBFLCAmbWRkZXYtPnJl Y292ZXJ5KSAmJgotCSAgICBiaW8tPmJpX3NlY3RvciA8IGNvbmYtPnJlc2hhcGVfcHJvZ3Jlc3Mg JiYKLQkgICAgYmlvLT5iaV9zZWN0b3IgKyBzZWN0b3JzID4gY29uZi0+cmVzaGFwZV9wcm9ncmVz cykgeworCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDwgY29uZi0+cmVzaGFwZV9wcm9ncmVz cyAmJgorCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICsgc2VjdG9ycyA+IGNvbmYtPnJlc2hh cGVfcHJvZ3Jlc3MpIHsKIAkJLyogSU8gc3BhbnMgdGhlIHJlc2hhcGUgcG9zaXRpb24uICBOZWVk IHRvIHdhaXQgZm9yCiAJCSAqIHJlc2hhcGUgdG8gcGFzcwogCQkgKi8KIAkJYWxsb3dfYmFycmll cihjb25mKTsKIAkJd2FpdF9ldmVudChjb25mLT53YWl0X2JhcnJpZXIsCi0JCQkgICBjb25mLT5y ZXNoYXBlX3Byb2dyZXNzIDw9IGJpby0+Ymlfc2VjdG9yIHx8Ci0JCQkgICBjb25mLT5yZXNoYXBl X3Byb2dyZXNzID49IGJpby0+Ymlfc2VjdG9yICsgc2VjdG9ycyk7CisJCQkgICBjb25mLT5yZXNo YXBlX3Byb2dyZXNzIDw9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgfHwKKwkJCSAgIGNvbmYtPnJl c2hhcGVfcHJvZ3Jlc3MgPj0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciArCisJCQkgICBzZWN0b3Jz KTsKIAkJd2FpdF9iYXJyaWVyKGNvbmYpOwogCX0KIAlpZiAodGVzdF9iaXQoTURfUkVDT1ZFUllf UkVTSEFQRSwgJm1kZGV2LT5yZWNvdmVyeSkgJiYKIAkgICAgYmlvX2RhdGFfZGlyKGJpbykgPT0g V1JJVEUgJiYKIAkgICAgKG1kZGV2LT5yZXNoYXBlX2JhY2t3YXJkcwotCSAgICAgPyAoYmlvLT5i aV9zZWN0b3IgPCBjb25mLT5yZXNoYXBlX3NhZmUgJiYKLQkJYmlvLT5iaV9zZWN0b3IgKyBzZWN0 b3JzID4gY29uZi0+cmVzaGFwZV9wcm9ncmVzcykKLQkgICAgIDogKGJpby0+Ymlfc2VjdG9yICsg c2VjdG9ycyA+IGNvbmYtPnJlc2hhcGVfc2FmZSAmJgotCQliaW8tPmJpX3NlY3RvciA8IGNvbmYt PnJlc2hhcGVfcHJvZ3Jlc3MpKSkgeworCSAgICAgPyAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8 IGNvbmYtPnJlc2hhcGVfc2FmZSAmJgorCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICsgc2VjdG9y cyA+IGNvbmYtPnJlc2hhcGVfcHJvZ3Jlc3MpCisJICAgICA6IChiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yICsgc2VjdG9ycyA+IGNvbmYtPnJlc2hhcGVfc2FmZSAmJgorCQliaW8tPmJpX2l0ZXIuYmlf c2VjdG9yIDwgY29uZi0+cmVzaGFwZV9wcm9ncmVzcykpKSB7CiAJCS8qIE5lZWQgdG8gdXBkYXRl IHJlc2hhcGVfcG9zaXRpb24gaW4gbWV0YWRhdGEgKi8KIAkJbWRkZXYtPnJlc2hhcGVfcG9zaXRp b24gPSBjb25mLT5yZXNoYXBlX3Byb2dyZXNzOwogCQlzZXRfYml0KE1EX0NIQU5HRV9ERVZTLCAm bWRkZXYtPmZsYWdzKTsKQEAgLTEyNzMsNyArMTI3NSw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVx dWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmlvKQogCXIxMF9iaW8tPnNl Y3RvcnMgPSBzZWN0b3JzOwogCiAJcjEwX2Jpby0+bWRkZXYgPSBtZGRldjsKLQlyMTBfYmlvLT5z ZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsKKwlyMTBfYmlvLT5zZWN0b3IgPSBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yOwogCXIxMF9iaW8tPnN0YXRlID0gMDsKIAogCS8qIFdlIG1pZ2h0IG5lZWQgdG8g aXNzdWUgbXVsdGlwbGUgcmVhZHMgdG8gZGlmZmVyZW50CkBAIC0xMzAyLDEzICsxMzA0LDEzIEBA IHJlYWRfYWdhaW46CiAJCXNsb3QgPSByMTBfYmlvLT5yZWFkX3Nsb3Q7CiAKIAkJcmVhZF9iaW8g PSBiaW9fY2xvbmVfbWRkZXYoYmlvLCBHRlBfTk9JTywgbWRkZXYpOwotCQliaW9fdHJpbShyZWFk X2JpbywgcjEwX2Jpby0+c2VjdG9yIC0gYmlvLT5iaV9zZWN0b3IsCisJCWJpb190cmltKHJlYWRf YmlvLCByMTBfYmlvLT5zZWN0b3IgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAogCQkJIG1heF9z ZWN0b3JzKTsKIAogCQlyMTBfYmlvLT5kZXZzW3Nsb3RdLmJpbyA9IHJlYWRfYmlvOwogCQlyMTBf YmlvLT5kZXZzW3Nsb3RdLnJkZXYgPSByZGV2OwogCi0JCXJlYWRfYmlvLT5iaV9zZWN0b3IgPSBy MTBfYmlvLT5kZXZzW3Nsb3RdLmFkZHIgKworCQlyZWFkX2Jpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSByMTBfYmlvLT5kZXZzW3Nsb3RdLmFkZHIgKwogCQkJY2hvb3NlX2RhdGFfb2Zmc2V0KHIxMF9i aW8sIHJkZXYpOwogCQlyZWFkX2Jpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJCXJlYWRfYmlv LT5iaV9lbmRfaW8gPSByYWlkMTBfZW5kX3JlYWRfcmVxdWVzdDsKQEAgLTEzMjAsNyArMTMyMiw3 IEBAIHJlYWRfYWdhaW46CiAJCQkgKiBuZWVkIGFub3RoZXIgcjEwX2Jpby4KIAkJCSAqLwogCQkJ c2VjdG9yc19oYW5kbGVkID0gKHIxMF9iaW8tPnNlY3RvcnMgKyBtYXhfc2VjdG9ycwotCQkJCQkg ICAtIGJpby0+Ymlfc2VjdG9yKTsKKwkJCQkJICAgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsK IAkJCXIxMF9iaW8tPnNlY3RvcnMgPSBtYXhfc2VjdG9yczsKIAkJCXNwaW5fbG9ja19pcnEoJmNv bmYtPmRldmljZV9sb2NrKTsKIAkJCWlmIChiaW8tPmJpX3BoeXNfc2VnbWVudHMgPT0gMCkKQEAg LTEzNDEsNyArMTM0Myw4IEBAIHJlYWRfYWdhaW46CiAJCQlyMTBfYmlvLT5zZWN0b3JzID0gYmlv X3NlY3RvcnMoYmlvKSAtIHNlY3RvcnNfaGFuZGxlZDsKIAkJCXIxMF9iaW8tPnN0YXRlID0gMDsK IAkJCXIxMF9iaW8tPm1kZGV2ID0gbWRkZXY7Ci0JCQlyMTBfYmlvLT5zZWN0b3IgPSBiaW8tPmJp X3NlY3RvciArIHNlY3RvcnNfaGFuZGxlZDsKKwkJCXIxMF9iaW8tPnNlY3RvciA9IGJpby0+Ymlf aXRlci5iaV9zZWN0b3IgKworCQkJCXNlY3RvcnNfaGFuZGxlZDsKIAkJCWdvdG8gcmVhZF9hZ2Fp bjsKIAkJfSBlbHNlCiAJCQlnZW5lcmljX21ha2VfcmVxdWVzdChyZWFkX2Jpbyk7CkBAIC0xNDk5 LDcgKzE1MDIsOCBAQCByZXRyeV93cml0ZToKIAkJCWJpby0+YmlfcGh5c19zZWdtZW50cysrOwog CQlzcGluX3VubG9ja19pcnEoJmNvbmYtPmRldmljZV9sb2NrKTsKIAl9Ci0Jc2VjdG9yc19oYW5k bGVkID0gcjEwX2Jpby0+c2VjdG9yICsgbWF4X3NlY3RvcnMgLSBiaW8tPmJpX3NlY3RvcjsKKwlz ZWN0b3JzX2hhbmRsZWQgPSByMTBfYmlvLT5zZWN0b3IgKyBtYXhfc2VjdG9ycyAtCisJCWJpby0+ YmlfaXRlci5iaV9zZWN0b3I7CiAKIAlhdG9taWNfc2V0KCZyMTBfYmlvLT5yZW1haW5pbmcsIDEp OwogCWJpdG1hcF9zdGFydHdyaXRlKG1kZGV2LT5iaXRtYXAsIHIxMF9iaW8tPnNlY3RvciwgcjEw X2Jpby0+c2VjdG9ycywgMCk7CkBAIC0xNTEwLDExICsxNTE0LDExIEBAIHJldHJ5X3dyaXRlOgog CQlpZiAocjEwX2Jpby0+ZGV2c1tpXS5iaW8pIHsKIAkJCXN0cnVjdCBtZF9yZGV2ICpyZGV2ID0g Y29uZi0+bWlycm9yc1tkXS5yZGV2OwogCQkJbWJpbyA9IGJpb19jbG9uZV9tZGRldihiaW8sIEdG UF9OT0lPLCBtZGRldik7Ci0JCQliaW9fdHJpbShtYmlvLCByMTBfYmlvLT5zZWN0b3IgLSBiaW8t PmJpX3NlY3RvciwKKwkJCWJpb190cmltKG1iaW8sIHIxMF9iaW8tPnNlY3RvciAtIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IsCiAJCQkJIG1heF9zZWN0b3JzKTsKIAkJCXIxMF9iaW8tPmRldnNbaV0u YmlvID0gbWJpbzsKIAotCQkJbWJpby0+Ymlfc2VjdG9yCT0gKHIxMF9iaW8tPmRldnNbaV0uYWRk cisKKwkJCW1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gKHIxMF9iaW8tPmRldnNbaV0uYWRkcisK IAkJCQkJICAgY2hvb3NlX2RhdGFfb2Zmc2V0KHIxMF9iaW8sCiAJCQkJCQkJICAgICAgcmRldikp OwogCQkJbWJpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CkBAIC0xNTUzLDExICsxNTU3LDExIEBA IHJldHJ5X3dyaXRlOgogCQkJCXJkZXYgPSBjb25mLT5taXJyb3JzW2RdLnJkZXY7CiAJCQl9CiAJ CQltYmlvID0gYmlvX2Nsb25lX21kZGV2KGJpbywgR0ZQX05PSU8sIG1kZGV2KTsKLQkJCWJpb190 cmltKG1iaW8sIHIxMF9iaW8tPnNlY3RvciAtIGJpby0+Ymlfc2VjdG9yLAorCQkJYmlvX3RyaW0o bWJpbywgcjEwX2Jpby0+c2VjdG9yIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJCQkgbWF4 X3NlY3RvcnMpOwogCQkJcjEwX2Jpby0+ZGV2c1tpXS5yZXBsX2JpbyA9IG1iaW87CiAKLQkJCW1i aW8tPmJpX3NlY3Rvcgk9IChyMTBfYmlvLT5kZXZzW2ldLmFkZHIgKworCQkJbWJpby0+YmlfaXRl ci5iaV9zZWN0b3IJPSAocjEwX2Jpby0+ZGV2c1tpXS5hZGRyICsKIAkJCQkJICAgY2hvb3NlX2Rh dGFfb2Zmc2V0KAogCQkJCQkJICAgcjEwX2JpbywgcmRldikpOwogCQkJbWJpby0+YmlfYmRldiA9 IHJkZXYtPmJkZXY7CkBAIC0xNTkxLDcgKzE1OTUsNyBAQCByZXRyeV93cml0ZToKIAkJcjEwX2Jp by0+c2VjdG9ycyA9IGJpb19zZWN0b3JzKGJpbykgLSBzZWN0b3JzX2hhbmRsZWQ7CiAKIAkJcjEw X2Jpby0+bWRkZXYgPSBtZGRldjsKLQkJcjEwX2Jpby0+c2VjdG9yID0gYmlvLT5iaV9zZWN0b3Ig KyBzZWN0b3JzX2hhbmRsZWQ7CisJCXIxMF9iaW8tPnNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgKyBzZWN0b3JzX2hhbmRsZWQ7CiAJCXIxMF9iaW8tPnN0YXRlID0gMDsKIAkJZ290byBy ZXRyeV93cml0ZTsKIAl9CkBAIC0yMTIzLDEwICsyMTI3LDEwIEBAIHN0YXRpYyB2b2lkIHN5bmNf cmVxdWVzdF93cml0ZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgcjEwYmlvICpyMTBfYmlv KQogCQliaW9fcmVzZXQodGJpbyk7CiAKIAkJdGJpby0+YmlfdmNudCA9IHZjbnQ7Ci0JCXRiaW8t PmJpX3NpemUgPSByMTBfYmlvLT5zZWN0b3JzIDw8IDk7CisJCXRiaW8tPmJpX2l0ZXIuYmlfc2l6 ZSA9IHIxMF9iaW8tPnNlY3RvcnMgPDwgOTsKIAkJdGJpby0+YmlfcncgPSBXUklURTsKIAkJdGJp by0+YmlfcHJpdmF0ZSA9IHIxMF9iaW87Ci0JCXRiaW8tPmJpX3NlY3RvciA9IHIxMF9iaW8tPmRl dnNbaV0uYWRkcjsKKwkJdGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSByMTBfYmlvLT5kZXZzW2ld LmFkZHI7CiAKIAkJZm9yIChqPTA7IGogPCB2Y250IDsgaisrKSB7CiAJCQl0YmlvLT5iaV9pb192 ZWNbal0uYnZfb2Zmc2V0ID0gMDsKQEAgLTIxNDMsNyArMjE0Nyw3IEBAIHN0YXRpYyB2b2lkIHN5 bmNfcmVxdWVzdF93cml0ZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgcjEwYmlvICpyMTBf YmlvKQogCQlhdG9taWNfaW5jKCZyMTBfYmlvLT5yZW1haW5pbmcpOwogCQltZF9zeW5jX2FjY3Qo Y29uZi0+bWlycm9yc1tkXS5yZGV2LT5iZGV2LCBiaW9fc2VjdG9ycyh0YmlvKSk7CiAKLQkJdGJp by0+Ymlfc2VjdG9yICs9IGNvbmYtPm1pcnJvcnNbZF0ucmRldi0+ZGF0YV9vZmZzZXQ7CisJCXRi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yICs9IGNvbmYtPm1pcnJvcnNbZF0ucmRldi0+ZGF0YV9vZmZz ZXQ7CiAJCXRiaW8tPmJpX2JkZXYgPSBjb25mLT5taXJyb3JzW2RdLnJkZXYtPmJkZXY7CiAJCWdl bmVyaWNfbWFrZV9yZXF1ZXN0KHRiaW8pOwogCX0KQEAgLTI2MTMsOCArMjYxNyw4IEBAIHN0YXRp YyBpbnQgbmFycm93X3dyaXRlX2Vycm9yKHN0cnVjdCByMTBiaW8gKnIxMF9iaW8sIGludCBpKQog CQkJc2VjdG9ycyA9IHNlY3RfdG9fd3JpdGU7CiAJCS8qIFdyaXRlIGF0ICdzZWN0b3InIGZvciAn c2VjdG9ycycgKi8KIAkJd2JpbyA9IGJpb19jbG9uZV9tZGRldihiaW8sIEdGUF9OT0lPLCBtZGRl dik7Ci0JCWJpb190cmltKHdiaW8sIHNlY3RvciAtIGJpby0+Ymlfc2VjdG9yLCBzZWN0b3JzKTsK LQkJd2Jpby0+Ymlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbaV0uYWRkcisKKwkJYmlvX3RyaW0o d2Jpbywgc2VjdG9yIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3Rvciwgc2VjdG9ycyk7CisJCXdiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbaV0uYWRkcisKIAkJCQkgICBjaG9v c2VfZGF0YV9vZmZzZXQocjEwX2JpbywgcmRldikgKwogCQkJCSAgIChzZWN0b3IgLSByMTBfYmlv LT5zZWN0b3IpKTsKIAkJd2Jpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CkBAIC0yNjg2LDEwICsy NjkwLDEwIEBAIHJlYWRfbW9yZToKIAkJKHVuc2lnbmVkIGxvbmcgbG9uZylyMTBfYmlvLT5zZWN0 b3IpOwogCWJpbyA9IGJpb19jbG9uZV9tZGRldihyMTBfYmlvLT5tYXN0ZXJfYmlvLAogCQkJICAg ICAgR0ZQX05PSU8sIG1kZGV2KTsKLQliaW9fdHJpbShiaW8sIHIxMF9iaW8tPnNlY3RvciAtIGJp by0+Ymlfc2VjdG9yLCBtYXhfc2VjdG9ycyk7CisJYmlvX3RyaW0oYmlvLCByMTBfYmlvLT5zZWN0 b3IgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBtYXhfc2VjdG9ycyk7CiAJcjEwX2Jpby0+ZGV2 c1tzbG90XS5iaW8gPSBiaW87CiAJcjEwX2Jpby0+ZGV2c1tzbG90XS5yZGV2ID0gcmRldjsKLQli aW8tPmJpX3NlY3RvciA9IHIxMF9iaW8tPmRldnNbc2xvdF0uYWRkcgorCWJpby0+YmlfaXRlci5i aV9zZWN0b3IgPSByMTBfYmlvLT5kZXZzW3Nsb3RdLmFkZHIKIAkJKyBjaG9vc2VfZGF0YV9vZmZz ZXQocjEwX2JpbywgcmRldik7CiAJYmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKIAliaW8tPmJp X3J3ID0gUkVBRCB8IGRvX3N5bmM7CkBAIC0yNzAwLDcgKzI3MDQsNyBAQCByZWFkX21vcmU6CiAJ CXN0cnVjdCBiaW8gKm1iaW8gPSByMTBfYmlvLT5tYXN0ZXJfYmlvOwogCQlpbnQgc2VjdG9yc19o YW5kbGVkID0KIAkJCXIxMF9iaW8tPnNlY3RvciArIG1heF9zZWN0b3JzCi0JCQktIG1iaW8tPmJp X3NlY3RvcjsKKwkJCS0gbWJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCXIxMF9iaW8tPnNlY3Rv cnMgPSBtYXhfc2VjdG9yczsKIAkJc3Bpbl9sb2NrX2lycSgmY29uZi0+ZGV2aWNlX2xvY2spOwog CQlpZiAobWJpby0+YmlfcGh5c19zZWdtZW50cyA9PSAwKQpAQCAtMjcxOCw3ICsyNzIyLDcgQEAg cmVhZF9tb3JlOgogCQlzZXRfYml0KFIxMEJJT19SZWFkRXJyb3IsCiAJCQkmcjEwX2Jpby0+c3Rh dGUpOwogCQlyMTBfYmlvLT5tZGRldiA9IG1kZGV2OwotCQlyMTBfYmlvLT5zZWN0b3IgPSBtYmlv LT5iaV9zZWN0b3IKKwkJcjEwX2Jpby0+c2VjdG9yID0gbWJpby0+YmlfaXRlci5iaV9zZWN0b3IK IAkJCSsgc2VjdG9yc19oYW5kbGVkOwogCiAJCWdvdG8gcmVhZF9tb3JlOwpAQCAtMzE1Niw3ICsz MTYwLDggQEAgc3RhdGljIHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2 LCBzZWN0b3JfdCBzZWN0b3JfbnIsCiAJCQkJYmlvLT5iaV9lbmRfaW8gPSBlbmRfc3luY19yZWFk OwogCQkJCWJpby0+YmlfcncgPSBSRUFEOwogCQkJCWZyb21fYWRkciA9IHIxMF9iaW8tPmRldnNb al0uYWRkcjsKLQkJCQliaW8tPmJpX3NlY3RvciA9IGZyb21fYWRkciArIHJkZXYtPmRhdGFfb2Zm c2V0OworCQkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBmcm9tX2FkZHIgKworCQkJCQlyZGV2 LT5kYXRhX29mZnNldDsKIAkJCQliaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2OwogCQkJCWF0b21p Y19pbmMoJnJkZXYtPm5yX3BlbmRpbmcpOwogCQkJCS8qIGFuZCB3ZSB3cml0ZSB0byAnaScgKGlm IG5vdCBpbl9zeW5jKSAqLwpAQCAtMzE4MCw3ICszMTg1LDcgQEAgc3RhdGljIHNlY3Rvcl90IHN5 bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0b3JfbnIsCiAJCQkJ CWJpby0+YmlfcHJpdmF0ZSA9IHIxMF9iaW87CiAJCQkJCWJpby0+YmlfZW5kX2lvID0gZW5kX3N5 bmNfd3JpdGU7CiAJCQkJCWJpby0+YmlfcncgPSBXUklURTsKLQkJCQkJYmlvLT5iaV9zZWN0b3Ig PSB0b19hZGRyCisJCQkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSB0b19hZGRyCiAJCQkJCQkr IHJkZXYtPmRhdGFfb2Zmc2V0OwogCQkJCQliaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2OwogCQkJ CQlhdG9taWNfaW5jKCZyMTBfYmlvLT5yZW1haW5pbmcpOwpAQCAtMzIwOSw3ICszMjE0LDggQEAg c3RhdGljIHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3Jf dCBzZWN0b3JfbnIsCiAJCQkJYmlvLT5iaV9wcml2YXRlID0gcjEwX2JpbzsKIAkJCQliaW8tPmJp X2VuZF9pbyA9IGVuZF9zeW5jX3dyaXRlOwogCQkJCWJpby0+YmlfcncgPSBXUklURTsKLQkJCQli aW8tPmJpX3NlY3RvciA9IHRvX2FkZHIgKyByZGV2LT5kYXRhX29mZnNldDsKKwkJCQliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gdG9fYWRkciArCisJCQkJCXJkZXYtPmRhdGFfb2Zmc2V0OwogCQkJ CWJpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJCQkJYXRvbWljX2luYygmcjEwX2Jpby0+cmVt YWluaW5nKTsKIAkJCQlicmVhazsKQEAgLTMzMjcsNyArMzMzMyw3IEBAIHN0YXRpYyBzZWN0b3Jf dCBzeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLAog CQkJYmlvLT5iaV9wcml2YXRlID0gcjEwX2JpbzsKIAkJCWJpby0+YmlfZW5kX2lvID0gZW5kX3N5 bmNfcmVhZDsKIAkJCWJpby0+YmlfcncgPSBSRUFEOwotCQkJYmlvLT5iaV9zZWN0b3IgPSBzZWN0 b3IgKworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArCiAJCQkJY29uZi0+bWly cm9yc1tkXS5yZGV2LT5kYXRhX29mZnNldDsKIAkJCWJpby0+YmlfYmRldiA9IGNvbmYtPm1pcnJv cnNbZF0ucmRldi0+YmRldjsKIAkJCWNvdW50Kys7CkBAIC0zMzQ5LDcgKzMzNTUsNyBAQCBzdGF0 aWMgc2VjdG9yX3Qgc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90IHNl Y3Rvcl9uciwKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHIxMF9iaW87CiAJCQliaW8tPmJpX2VuZF9p byA9IGVuZF9zeW5jX3dyaXRlOwogCQkJYmlvLT5iaV9ydyA9IFdSSVRFOwotCQkJYmlvLT5iaV9z ZWN0b3IgPSBzZWN0b3IgKworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArCiAJ CQkJY29uZi0+bWlycm9yc1tkXS5yZXBsYWNlbWVudC0+ZGF0YV9vZmZzZXQ7CiAJCQliaW8tPmJp X2JkZXYgPSBjb25mLT5taXJyb3JzW2RdLnJlcGxhY2VtZW50LT5iZGV2OwogCQkJY291bnQrKzsK QEAgLTMzOTYsNyArMzQwMiw3IEBAIHN0YXRpYyBzZWN0b3JfdCBzeW5jX3JlcXVlc3Qoc3RydWN0 IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLAogCQkJICAgICBiaW8yID0gYmlvMi0+ YmlfbmV4dCkgewogCQkJCS8qIHJlbW92ZSBsYXN0IHBhZ2UgZnJvbSB0aGlzIGJpbyAqLwogCQkJ CWJpbzItPmJpX3ZjbnQtLTsKLQkJCQliaW8yLT5iaV9zaXplIC09IGxlbjsKKwkJCQliaW8yLT5i aV9pdGVyLmJpX3NpemUgLT0gbGVuOwogCQkJCWJpbzItPmJpX2ZsYWdzICY9IH4oMTw8IEJJT19T RUdfVkFMSUQpOwogCQkJfQogCQkJZ290byBiaW9fZnVsbDsKQEAgLTQ0MTIsNyArNDQxOCw3IEBA IHJlYWRfbW9yZToKIAlyZWFkX2JpbyA9IGJpb19hbGxvY19tZGRldihHRlBfS0VSTkVMLCBSRVNZ TkNfUEFHRVMsIG1kZGV2KTsKIAogCXJlYWRfYmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKLQly ZWFkX2Jpby0+Ymlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbcjEwX2Jpby0+cmVhZF9zbG90XS5h ZGRyCisJcmVhZF9iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbcjEwX2Jp by0+cmVhZF9zbG90XS5hZGRyCiAJCQkgICAgICAgKyByZGV2LT5kYXRhX29mZnNldCk7CiAJcmVh ZF9iaW8tPmJpX3ByaXZhdGUgPSByMTBfYmlvOwogCXJlYWRfYmlvLT5iaV9lbmRfaW8gPSBlbmRf c3luY19yZWFkOwpAQCAtNDQyMCw3ICs0NDI2LDcgQEAgcmVhZF9tb3JlOgogCXJlYWRfYmlvLT5i aV9mbGFncyAmPSB+KEJJT19QT09MX01BU0sgLSAxKTsKIAlyZWFkX2Jpby0+YmlfZmxhZ3MgfD0g MSA8PCBCSU9fVVBUT0RBVEU7CiAJcmVhZF9iaW8tPmJpX3ZjbnQgPSAwOwotCXJlYWRfYmlvLT5i aV9zaXplID0gMDsKKwlyZWFkX2Jpby0+YmlfaXRlci5iaV9zaXplID0gMDsKIAlyMTBfYmlvLT5t YXN0ZXJfYmlvID0gcmVhZF9iaW87CiAJcjEwX2Jpby0+cmVhZF9zbG90ID0gcjEwX2Jpby0+ZGV2 c1tyMTBfYmlvLT5yZWFkX3Nsb3RdLmRldm51bTsKIApAQCAtNDQ0Niw3ICs0NDUyLDggQEAgcmVh ZF9tb3JlOgogCiAJCWJpb19yZXNldChiKTsKIAkJYi0+YmlfYmRldiA9IHJkZXYyLT5iZGV2Owot CQliLT5iaV9zZWN0b3IgPSByMTBfYmlvLT5kZXZzW3MvMl0uYWRkciArIHJkZXYyLT5uZXdfZGF0 YV9vZmZzZXQ7CisJCWItPmJpX2l0ZXIuYmlfc2VjdG9yID0gcjEwX2Jpby0+ZGV2c1tzLzJdLmFk ZHIgKworCQkJcmRldjItPm5ld19kYXRhX29mZnNldDsKIAkJYi0+YmlfcHJpdmF0ZSA9IHIxMF9i aW87CiAJCWItPmJpX2VuZF9pbyA9IGVuZF9yZXNoYXBlX3dyaXRlOwogCQliLT5iaV9ydyA9IFdS SVRFOwpAQCAtNDQ3Myw3ICs0NDgwLDcgQEAgcmVhZF9tb3JlOgogCQkJICAgICBiaW8yID0gYmlv Mi0+YmlfbmV4dCkgewogCQkJCS8qIFJlbW92ZSBsYXN0IHBhZ2UgZnJvbSB0aGlzIGJpbyAqLwog CQkJCWJpbzItPmJpX3ZjbnQtLTsKLQkJCQliaW8yLT5iaV9zaXplIC09IGxlbjsKKwkJCQliaW8y LT5iaV9pdGVyLmJpX3NpemUgLT0gbGVuOwogCQkJCWJpbzItPmJpX2ZsYWdzICY9IH4oMTw8QklP X1NFR19WQUxJRCk7CiAJCQl9CiAJCQlnb3RvIGJpb19mdWxsOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9yYWlkNS5jIGIvZHJpdmVycy9tZC9yYWlkNS5jCmluZGV4IDc4ZWE0NDMuLjNiMTBhMDIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDUuYworKysgYi9kcml2ZXJzL21kL3JhaWQ1LmMK QEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaGxpc3RfaGVhZCAqc3RyaXBl X2hhc2goc3RydWN0IHI1Y29uZiAqY29uZiwgc2VjdG9yX3Qgc2VjdCkKIHN0YXRpYyBpbmxpbmUg c3RydWN0IGJpbyAqcjVfbmV4dF9iaW8oc3RydWN0IGJpbyAqYmlvLCBzZWN0b3JfdCBzZWN0b3Ip CiB7CiAJaW50IHNlY3RvcnMgPSBiaW9fc2VjdG9ycyhiaW8pOwotCWlmIChiaW8tPmJpX3NlY3Rv ciArIHNlY3RvcnMgPCBzZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykKKwlpZiAoYmlvLT5iaV9pdGVy LmJpX3NlY3RvciArIHNlY3RvcnMgPCBzZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykKIAkJcmV0dXJu IGJpby0+YmlfbmV4dDsKIAllbHNlCiAJCXJldHVybiBOVUxMOwpAQCAtMTgzLDcgKzE4Myw3IEBA IHN0YXRpYyB2b2lkIHJldHVybl9pbyhzdHJ1Y3QgYmlvICpyZXR1cm5fYmkpCiAKIAkJcmV0dXJu X2JpID0gYmktPmJpX25leHQ7CiAJCWJpLT5iaV9uZXh0ID0gTlVMTDsKLQkJYmktPmJpX3NpemUg PSAwOworCQliaS0+YmlfaXRlci5iaV9zaXplID0gMDsKIAkJdHJhY2VfYmxvY2tfYmlvX2NvbXBs ZXRlKGJkZXZfZ2V0X3F1ZXVlKGJpLT5iaV9iZGV2KSwKIAkJCQkJIGJpLCAwKTsKIAkJYmlvX2Vu ZGlvKGJpLCAwKTsKQEAgLTY1NiwxMCArNjU2LDEwIEBAIHN0YXRpYyB2b2lkIG9wc19ydW5faW8o c3RydWN0IHN0cmlwZV9oZWFkICpzaCwgc3RydWN0IHN0cmlwZV9oZWFkX3N0YXRlICpzKQogCQkJ CWJpLT5iaV9ydywgaSk7CiAJCQlhdG9taWNfaW5jKCZzaC0+Y291bnQpOwogCQkJaWYgKHVzZV9u ZXdfb2Zmc2V0KGNvbmYsIHNoKSkKLQkJCQliaS0+Ymlfc2VjdG9yID0gKHNoLT5zZWN0b3IKKwkJ CQliaS0+YmlfaXRlci5iaV9zZWN0b3IgPSAoc2gtPnNlY3RvcgogCQkJCQkJICsgcmRldi0+bmV3 X2RhdGFfb2Zmc2V0KTsKIAkJCWVsc2UKLQkJCQliaS0+Ymlfc2VjdG9yID0gKHNoLT5zZWN0b3IK KwkJCQliaS0+YmlfaXRlci5iaV9zZWN0b3IgPSAoc2gtPnNlY3RvcgogCQkJCQkJICsgcmRldi0+ ZGF0YV9vZmZzZXQpOwogCQkJaWYgKHRlc3RfYml0KFI1X1JlYWROb01lcmdlLCAmc2gtPmRldltp XS5mbGFncykpCiAJCQkJYmktPmJpX3J3IHw9IFJFUV9GTFVTSDsKQEAgLTY2Nyw3ICs2NjcsNyBA QCBzdGF0aWMgdm9pZCBvcHNfcnVuX2lvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBz dHJpcGVfaGVhZF9zdGF0ZSAqcykKIAkJCWJpLT5iaV92Y250ID0gMTsKIAkJCWJpLT5iaV9pb192 ZWNbMF0uYnZfbGVuID0gU1RSSVBFX1NJWkU7CiAJCQliaS0+YmlfaW9fdmVjWzBdLmJ2X29mZnNl dCA9IDA7Ci0JCQliaS0+Ymlfc2l6ZSA9IFNUUklQRV9TSVpFOworCQkJYmktPmJpX2l0ZXIuYmlf c2l6ZSA9IFNUUklQRV9TSVpFOwogCQkJaWYgKHJyZGV2KQogCQkJCXNldF9iaXQoUjVfRE9VQkxF X0xPQ0tFRCwgJnNoLT5kZXZbaV0uZmxhZ3MpOwogCkBAIC02OTcsMTUgKzY5NywxNSBAQCBzdGF0 aWMgdm9pZCBvcHNfcnVuX2lvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBzdHJpcGVf aGVhZF9zdGF0ZSAqcykKIAkJCQlyYmktPmJpX3J3LCBpKTsKIAkJCWF0b21pY19pbmMoJnNoLT5j b3VudCk7CiAJCQlpZiAodXNlX25ld19vZmZzZXQoY29uZiwgc2gpKQotCQkJCXJiaS0+Ymlfc2Vj dG9yID0gKHNoLT5zZWN0b3IKKwkJCQlyYmktPmJpX2l0ZXIuYmlfc2VjdG9yID0gKHNoLT5zZWN0 b3IKIAkJCQkJCSAgKyBycmRldi0+bmV3X2RhdGFfb2Zmc2V0KTsKIAkJCWVsc2UKLQkJCQlyYmkt PmJpX3NlY3RvciA9IChzaC0+c2VjdG9yCisJCQkJcmJpLT5iaV9pdGVyLmJpX3NlY3RvciA9IChz aC0+c2VjdG9yCiAJCQkJCQkgICsgcnJkZXYtPmRhdGFfb2Zmc2V0KTsKIAkJCXJiaS0+YmlfdmNu dCA9IDE7CiAJCQlyYmktPmJpX2lvX3ZlY1swXS5idl9sZW4gPSBTVFJJUEVfU0laRTsKIAkJCXJi aS0+YmlfaW9fdmVjWzBdLmJ2X29mZnNldCA9IDA7Ci0JCQlyYmktPmJpX3NpemUgPSBTVFJJUEVf U0laRTsKKwkJCXJiaS0+YmlfaXRlci5iaV9zaXplID0gU1RSSVBFX1NJWkU7CiAJCQlpZiAoY29u Zi0+bWRkZXYtPmdlbmRpc2spCiAJCQkJdHJhY2VfYmxvY2tfYmlvX3JlbWFwKGJkZXZfZ2V0X3F1 ZXVlKHJiaS0+YmlfYmRldiksCiAJCQkJCQkgICAgICByYmksIGRpc2tfZGV2dChjb25mLT5tZGRl di0+Z2VuZGlzayksCkBAIC03MzQsMTAgKzczNCwxMCBAQCBhc3luY19jb3B5X2RhdGEoaW50IGZy b21iaW8sIHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHBhZ2UgKnBhZ2UsCiAJc3RydWN0IGFzeW5j X3N1Ym1pdF9jdGwgc3VibWl0OwogCWVudW0gYXN5bmNfdHhfZmxhZ3MgZmxhZ3MgPSAwOwogCi0J aWYgKGJpby0+Ymlfc2VjdG9yID49IHNlY3RvcikKLQkJcGFnZV9vZmZzZXQgPSAoc2lnbmVkKShi aW8tPmJpX3NlY3RvciAtIHNlY3RvcikgKiA1MTI7CisJaWYgKGJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPj0gc2VjdG9yKQorCQlwYWdlX29mZnNldCA9IChzaWduZWQpKGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgLSBzZWN0b3IpICogNTEyOwogCWVsc2UKLQkJcGFnZV9vZmZzZXQgPSAoc2lnbmVkKShz ZWN0b3IgLSBiaW8tPmJpX3NlY3RvcikgKiAtNTEyOworCQlwYWdlX29mZnNldCA9IChzaWduZWQp KHNlY3RvciAtIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpICogLTUxMjsKIAogCWlmIChmcm9tYmlv KQogCQlmbGFncyB8PSBBU1lOQ19UWF9GRU5DRTsKQEAgLTgwNCw3ICs4MDQsNyBAQCBzdGF0aWMg dm9pZCBvcHNfY29tcGxldGVfYmlvZmlsbCh2b2lkICpzdHJpcGVfaGVhZF9yZWYpCiAJCQlCVUdf T04oIWRldi0+cmVhZCk7CiAJCQlyYmkgPSBkZXYtPnJlYWQ7CiAJCQlkZXYtPnJlYWQgPSBOVUxM OwotCQkJd2hpbGUgKHJiaSAmJiByYmktPmJpX3NlY3RvciA8CisJCQl3aGlsZSAocmJpICYmIHJi aS0+YmlfaXRlci5iaV9zZWN0b3IgPAogCQkJCWRldi0+c2VjdG9yICsgU1RSSVBFX1NFQ1RPUlMp IHsKIAkJCQlyYmkyID0gcjVfbmV4dF9iaW8ocmJpLCBkZXYtPnNlY3Rvcik7CiAJCQkJaWYgKCFy YWlkNV9kZWNfYmlfYWN0aXZlX3N0cmlwZXMocmJpKSkgewpAQCAtODQwLDcgKzg0MCw3IEBAIHN0 YXRpYyB2b2lkIG9wc19ydW5fYmlvZmlsbChzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoKQogCQkJZGV2 LT5yZWFkID0gcmJpID0gZGV2LT50b3JlYWQ7CiAJCQlkZXYtPnRvcmVhZCA9IE5VTEw7CiAJCQlz cGluX3VubG9ja19pcnEoJnNoLT5zdHJpcGVfbG9jayk7Ci0JCQl3aGlsZSAocmJpICYmIHJiaS0+ Ymlfc2VjdG9yIDwKKwkJCXdoaWxlIChyYmkgJiYgcmJpLT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJ CQkJZGV2LT5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJCXR4ID0gYXN5bmNfY29weV9k YXRhKDAsIHJiaSwgZGV2LT5wYWdlLAogCQkJCQlkZXYtPnNlY3RvciwgdHgpOwpAQCAtMTE4Miw3 ICsxMTgyLDcgQEAgb3BzX3J1bl9iaW9kcmFpbihzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1 Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKnR4KQogCQkJd2JpID0gZGV2LT53cml0dGVuID0g Y2hvc2VuOwogCQkJc3Bpbl91bmxvY2tfaXJxKCZzaC0+c3RyaXBlX2xvY2spOwogCi0JCQl3aGls ZSAod2JpICYmIHdiaS0+Ymlfc2VjdG9yIDwKKwkJCXdoaWxlICh3YmkgJiYgd2JpLT5iaV9pdGVy LmJpX3NlY3RvciA8CiAJCQkJZGV2LT5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJCWlm ICh3YmktPmJpX3J3ICYgUkVRX0ZVQSkKIAkJCQkJc2V0X2JpdChSNV9XYW50RlVBLCAmZGV2LT5m bGFncyk7CkBAIC0yMzg0LDcgKzIzODQsNyBAQCBzdGF0aWMgaW50IGFkZF9zdHJpcGVfYmlvKHN0 cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBiaW8gKmJpLCBpbnQgZGRfaWR4LCBpbgogCWlu dCBmaXJzdHdyaXRlPTA7CiAKIAlwcl9kZWJ1ZygiYWRkaW5nIGJpIGIjJWxsdSB0byBzdHJpcGUg cyMlbGx1XG4iLAotCQkodW5zaWduZWQgbG9uZyBsb25nKWJpLT5iaV9zZWN0b3IsCisJCSh1bnNp Z25lZCBsb25nIGxvbmcpYmktPmJpX2l0ZXIuYmlfc2VjdG9yLAogCQkodW5zaWduZWQgbG9uZyBs b25nKXNoLT5zZWN0b3IpOwogCiAJLyoKQEAgLTI0MDIsMTIgKzI0MDIsMTIgQEAgc3RhdGljIGlu dCBhZGRfc3RyaXBlX2JpbyhzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1Y3QgYmlvICpiaSwg aW50IGRkX2lkeCwgaW4KIAkJCWZpcnN0d3JpdGUgPSAxOwogCX0gZWxzZQogCQliaXAgPSAmc2gt PmRldltkZF9pZHhdLnRvcmVhZDsKLQl3aGlsZSAoKmJpcCAmJiAoKmJpcCktPmJpX3NlY3RvciA8 IGJpLT5iaV9zZWN0b3IpIHsKLQkJaWYgKGJpb19lbmRfc2VjdG9yKCpiaXApID4gYmktPmJpX3Nl Y3RvcikKKwl3aGlsZSAoKmJpcCAmJiAoKmJpcCktPmJpX2l0ZXIuYmlfc2VjdG9yIDwgYmktPmJp X2l0ZXIuYmlfc2VjdG9yKSB7CisJCWlmIChiaW9fZW5kX3NlY3RvcigqYmlwKSA+IGJpLT5iaV9p dGVyLmJpX3NlY3RvcikKIAkJCWdvdG8gb3ZlcmxhcDsKIAkJYmlwID0gJiAoKmJpcCktPmJpX25l eHQ7CiAJfQotCWlmICgqYmlwICYmICgqYmlwKS0+Ymlfc2VjdG9yIDwgYmlvX2VuZF9zZWN0b3Io YmkpKQorCWlmICgqYmlwICYmICgqYmlwKS0+YmlfaXRlci5iaV9zZWN0b3IgPCBiaW9fZW5kX3Nl Y3RvcihiaSkpCiAJCWdvdG8gb3ZlcmxhcDsKIAogCUJVR19PTigqYmlwICYmIGJpLT5iaV9uZXh0 ICYmICgqYmlwKSAhPSBiaS0+YmlfbmV4dCk7CkBAIC0yNDIxLDcgKzI0MjEsNyBAQCBzdGF0aWMg aW50IGFkZF9zdHJpcGVfYmlvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBiaW8gKmJp LCBpbnQgZGRfaWR4LCBpbgogCQlzZWN0b3JfdCBzZWN0b3IgPSBzaC0+ZGV2W2RkX2lkeF0uc2Vj dG9yOwogCQlmb3IgKGJpPXNoLT5kZXZbZGRfaWR4XS50b3dyaXRlOwogCQkgICAgIHNlY3RvciA8 IHNoLT5kZXZbZGRfaWR4XS5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUyAmJgotCQkJICAgICBiaSAm JiBiaS0+Ymlfc2VjdG9yIDw9IHNlY3RvcjsKKwkJCSAgICAgYmkgJiYgYmktPmJpX2l0ZXIuYmlf c2VjdG9yIDw9IHNlY3RvcjsKIAkJICAgICBiaSA9IHI1X25leHRfYmlvKGJpLCBzaC0+ZGV2W2Rk X2lkeF0uc2VjdG9yKSkgewogCQkJaWYgKGJpb19lbmRfc2VjdG9yKGJpKSA+PSBzZWN0b3IpCiAJ CQkJc2VjdG9yID0gYmlvX2VuZF9zZWN0b3IoYmkpOwpAQCAtMjQzMSw3ICsyNDMxLDcgQEAgc3Rh dGljIGludCBhZGRfc3RyaXBlX2JpbyhzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1Y3QgYmlv ICpiaSwgaW50IGRkX2lkeCwgaW4KIAl9CiAKIAlwcl9kZWJ1ZygiYWRkZWQgYmkgYiMlbGx1IHRv IHN0cmlwZSBzIyVsbHUsIGRpc2sgJWQuXG4iLAotCQkodW5zaWduZWQgbG9uZyBsb25nKSgqYmlw KS0+Ymlfc2VjdG9yLAorCQkodW5zaWduZWQgbG9uZyBsb25nKSgqYmlwKS0+YmlfaXRlci5iaV9z ZWN0b3IsCiAJCSh1bnNpZ25lZCBsb25nIGxvbmcpc2gtPnNlY3RvciwgZGRfaWR4KTsKIAlzcGlu X3VubG9ja19pcnEoJnNoLT5zdHJpcGVfbG9jayk7CiAKQEAgLTI1MDYsNyArMjUwNiw3IEBAIGhh bmRsZV9mYWlsZWRfc3RyaXBlKHN0cnVjdCByNWNvbmYgKmNvbmYsIHN0cnVjdCBzdHJpcGVfaGVh ZCAqc2gsCiAJCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUjVfT3ZlcmxhcCwgJnNoLT5kZXZbaV0u ZmxhZ3MpKQogCQkJd2FrZV91cCgmY29uZi0+d2FpdF9mb3Jfb3ZlcmxhcCk7CiAKLQkJd2hpbGUg KGJpICYmIGJpLT5iaV9zZWN0b3IgPAorCQl3aGlsZSAoYmkgJiYgYmktPmJpX2l0ZXIuYmlfc2Vj dG9yIDwKIAkJCXNoLT5kZXZbaV0uc2VjdG9yICsgU1RSSVBFX1NFQ1RPUlMpIHsKIAkJCXN0cnVj dCBiaW8gKm5leHRiaSA9IHI1X25leHRfYmlvKGJpLCBzaC0+ZGV2W2ldLnNlY3Rvcik7CiAJCQlj bGVhcl9iaXQoQklPX1VQVE9EQVRFLCAmYmktPmJpX2ZsYWdzKTsKQEAgLTI1MjUsNyArMjUyNSw3 IEBAIGhhbmRsZV9mYWlsZWRfc3RyaXBlKHN0cnVjdCByNWNvbmYgKmNvbmYsIHN0cnVjdCBzdHJp cGVfaGVhZCAqc2gsCiAJCWJpID0gc2gtPmRldltpXS53cml0dGVuOwogCQlzaC0+ZGV2W2ldLndy aXR0ZW4gPSBOVUxMOwogCQlpZiAoYmkpIGJpdG1hcF9lbmQgPSAxOwotCQl3aGlsZSAoYmkgJiYg YmktPmJpX3NlY3RvciA8CisJCXdoaWxlIChiaSAmJiBiaS0+YmlfaXRlci5iaV9zZWN0b3IgPAog CQkgICAgICAgc2gtPmRldltpXS5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJc3RydWN0 IGJpbyAqYmkyID0gcjVfbmV4dF9iaW8oYmksIHNoLT5kZXZbaV0uc2VjdG9yKTsKIAkJCWNsZWFy X2JpdChCSU9fVVBUT0RBVEUsICZiaS0+YmlfZmxhZ3MpOwpAQCAtMjU0OSw3ICsyNTQ5LDcgQEAg aGFuZGxlX2ZhaWxlZF9zdHJpcGUoc3RydWN0IHI1Y29uZiAqY29uZiwgc3RydWN0IHN0cmlwZV9o ZWFkICpzaCwKIAkJCXNwaW5fdW5sb2NrX2lycSgmc2gtPnN0cmlwZV9sb2NrKTsKIAkJCWlmICh0 ZXN0X2FuZF9jbGVhcl9iaXQoUjVfT3ZlcmxhcCwgJnNoLT5kZXZbaV0uZmxhZ3MpKQogCQkJCXdh a2VfdXAoJmNvbmYtPndhaXRfZm9yX292ZXJsYXApOwotCQkJd2hpbGUgKGJpICYmIGJpLT5iaV9z ZWN0b3IgPAorCQkJd2hpbGUgKGJpICYmIGJpLT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJCQkgICAg ICAgc2gtPmRldltpXS5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJCXN0cnVjdCBiaW8g Km5leHRiaSA9CiAJCQkJCXI1X25leHRfYmlvKGJpLCBzaC0+ZGV2W2ldLnNlY3Rvcik7CkBAIC0y NzczLDcgKzI3NzMsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfc3RyaXBlX2NsZWFuX2V2ZW50KHN0 cnVjdCByNWNvbmYgKmNvbmYsCiAJCQkJCWNsZWFyX2JpdChSNV9VUFRPREFURSwgJmRldi0+Zmxh Z3MpOwogCQkJCXdiaSA9IGRldi0+d3JpdHRlbjsKIAkJCQlkZXYtPndyaXR0ZW4gPSBOVUxMOwot CQkJCXdoaWxlICh3YmkgJiYgd2JpLT5iaV9zZWN0b3IgPAorCQkJCXdoaWxlICh3YmkgJiYgd2Jp LT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJCQkJCWRldi0+c2VjdG9yICsgU1RSSVBFX1NFQ1RPUlMp IHsKIAkJCQkJd2JpMiA9IHI1X25leHRfYmlvKHdiaSwgZGV2LT5zZWN0b3IpOwogCQkJCQlpZiAo IXJhaWQ1X2RlY19iaV9hY3RpdmVfc3RyaXBlcyh3YmkpKSB7CkBAIC0zODUzLDcgKzM4NTMsNyBA QCBzdGF0aWMgaW50IHJhaWQ1X21lcmdlYWJsZV9idmVjKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LAogCiBzdGF0aWMgaW50IGluX2NodW5rX2JvdW5kYXJ5KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0 cnVjdCBiaW8gKmJpbykKIHsKLQlzZWN0b3JfdCBzZWN0b3IgPSBiaW8tPmJpX3NlY3RvciArIGdl dF9zdGFydF9zZWN0KGJpby0+YmlfYmRldik7CisJc2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5iaV9p dGVyLmJpX3NlY3RvciArIGdldF9zdGFydF9zZWN0KGJpby0+YmlfYmRldik7CiAJdW5zaWduZWQg aW50IGNodW5rX3NlY3RvcnMgPSBtZGRldi0+Y2h1bmtfc2VjdG9yczsKIAl1bnNpZ25lZCBpbnQg YmlvX3NlY3RvcnMgPSBiaW9fc2VjdG9ycyhiaW8pOwogCkBAIC0zOTkwLDkgKzM5OTAsOSBAQCBz dGF0aWMgaW50IGNodW5rX2FsaWduZWRfcmVhZChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3Qg YmlvICogcmFpZF9iaW8pCiAJLyoKIAkgKgljb21wdXRlIHBvc2l0aW9uCiAJICovCi0JYWxpZ25f YmktPmJpX3NlY3RvciA9ICByYWlkNV9jb21wdXRlX3NlY3Rvcihjb25mLCByYWlkX2Jpby0+Ymlf c2VjdG9yLAotCQkJCQkJICAgIDAsCi0JCQkJCQkgICAgJmRkX2lkeCwgTlVMTCk7CisJYWxpZ25f YmktPmJpX2l0ZXIuYmlfc2VjdG9yID0KKwkJcmFpZDVfY29tcHV0ZV9zZWN0b3IoY29uZiwgcmFp ZF9iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJCSAgICAgMCwgJmRkX2lkeCwgTlVMTCk7CiAK IAllbmRfc2VjdG9yID0gYmlvX2VuZF9zZWN0b3IoYWxpZ25fYmkpOwogCXJjdV9yZWFkX2xvY2so KTsKQEAgLTQwMTcsNyArNDAxNyw4IEBAIHN0YXRpYyBpbnQgY2h1bmtfYWxpZ25lZF9yZWFkKHN0 cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKiByYWlkX2JpbykKIAkJYWxpZ25fYmktPmJp X2ZsYWdzICY9IH4oMSA8PCBCSU9fU0VHX1ZBTElEKTsKIAogCQlpZiAoIWJpb19maXRzX3JkZXYo YWxpZ25fYmkpIHx8Ci0JCSAgICBpc19iYWRibG9jayhyZGV2LCBhbGlnbl9iaS0+Ymlfc2VjdG9y LCBiaW9fc2VjdG9ycyhhbGlnbl9iaSksCisJCSAgICBpc19iYWRibG9jayhyZGV2LCBhbGlnbl9i aS0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJYmlvX3NlY3RvcnMoYWxpZ25fYmkpLAogCQkJCSZm aXJzdF9iYWQsICZiYWRfc2VjdG9ycykpIHsKIAkJCS8qIHRvbyBiaWcgaW4gc29tZSB3YXksIG9y IGhhcyBhIGtub3duIGJhZCBibG9jayAqLwogCQkJYmlvX3B1dChhbGlnbl9iaSk7CkBAIC00MDI2 LDcgKzQwMjcsNyBAQCBzdGF0aWMgaW50IGNodW5rX2FsaWduZWRfcmVhZChzdHJ1Y3QgbWRkZXYg Km1kZGV2LCBzdHJ1Y3QgYmlvICogcmFpZF9iaW8pCiAJCX0KIAogCQkvKiBObyByZXNoYXBlIGFj dGl2ZSwgc28gd2UgY2FuIHRydXN0IHJkZXYtPmRhdGFfb2Zmc2V0ICovCi0JCWFsaWduX2JpLT5i aV9zZWN0b3IgKz0gcmRldi0+ZGF0YV9vZmZzZXQ7CisJCWFsaWduX2JpLT5iaV9pdGVyLmJpX3Nl Y3RvciArPSByZGV2LT5kYXRhX29mZnNldDsKIAogCQlzcGluX2xvY2tfaXJxKCZjb25mLT5kZXZp Y2VfbG9jayk7CiAJCXdhaXRfZXZlbnRfbG9ja19pcnEoY29uZi0+d2FpdF9mb3Jfc3RyaXBlLApA QCAtNDAzOCw3ICs0MDM5LDcgQEAgc3RhdGljIGludCBjaHVua19hbGlnbmVkX3JlYWQoc3RydWN0 IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIHJhaWRfYmlvKQogCQlpZiAobWRkZXYtPmdlbmRp c2spCiAJCQl0cmFjZV9ibG9ja19iaW9fcmVtYXAoYmRldl9nZXRfcXVldWUoYWxpZ25fYmktPmJp X2JkZXYpLAogCQkJCQkgICAgICBhbGlnbl9iaSwgZGlza19kZXZ0KG1kZGV2LT5nZW5kaXNrKSwK LQkJCQkJICAgICAgcmFpZF9iaW8tPmJpX3NlY3Rvcik7CisJCQkJCSAgICAgIHJhaWRfYmlvLT5i aV9pdGVyLmJpX3NlY3Rvcik7CiAJCWdlbmVyaWNfbWFrZV9yZXF1ZXN0KGFsaWduX2JpKTsKIAkJ cmV0dXJuIDE7CiAJfSBlbHNlIHsKQEAgLTQxNzMsOCArNDE3NCw4IEBAIHN0YXRpYyB2b2lkIG1h a2VfZGlzY2FyZF9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKmJpKQog CQkvKiBTa2lwIGRpc2NhcmQgd2hpbGUgcmVzaGFwZSBpcyBoYXBwZW5pbmcgKi8KIAkJcmV0dXJu OwogCi0JbG9naWNhbF9zZWN0b3IgPSBiaS0+Ymlfc2VjdG9yICYgfigoc2VjdG9yX3QpU1RSSVBF X1NFQ1RPUlMtMSk7Ci0JbGFzdF9zZWN0b3IgPSBiaS0+Ymlfc2VjdG9yICsgKGJpLT5iaV9zaXpl Pj45KTsKKwlsb2dpY2FsX3NlY3RvciA9IGJpLT5iaV9pdGVyLmJpX3NlY3RvciAmIH4oKHNlY3Rv cl90KVNUUklQRV9TRUNUT1JTLTEpOworCWxhc3Rfc2VjdG9yID0gYmktPmJpX2l0ZXIuYmlfc2Vj dG9yICsgKGJpLT5iaV9pdGVyLmJpX3NpemU+PjkpOwogCiAJYmktPmJpX25leHQgPSBOVUxMOwog CWJpLT5iaV9waHlzX3NlZ21lbnRzID0gMTsgLyogb3Zlci1sb2FkZWQgdG8gY291bnQgYWN0aXZl IHN0cmlwZXMgKi8KQEAgLTQyNzgsNyArNDI3OSw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVxdWVz dChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmkpCiAJCXJldHVybjsKIAl9CiAK LQlsb2dpY2FsX3NlY3RvciA9IGJpLT5iaV9zZWN0b3IgJiB+KChzZWN0b3JfdClTVFJJUEVfU0VD VE9SUy0xKTsKKwlsb2dpY2FsX3NlY3RvciA9IGJpLT5iaV9pdGVyLmJpX3NlY3RvciAmIH4oKHNl Y3Rvcl90KVNUUklQRV9TRUNUT1JTLTEpOwogCWxhc3Rfc2VjdG9yID0gYmlvX2VuZF9zZWN0b3Io YmkpOwogCWJpLT5iaV9uZXh0ID0gTlVMTDsKIAliaS0+YmlfcGh5c19zZWdtZW50cyA9IDE7CS8q IG92ZXItbG9hZGVkIHRvIGNvdW50IGFjdGl2ZSBzdHJpcGVzICovCkBAIC00NzQyLDcgKzQ3NDMs OCBAQCBzdGF0aWMgaW50ICByZXRyeV9hbGlnbmVkX3JlYWQoc3RydWN0IHI1Y29uZiAqY29uZiwg c3RydWN0IGJpbyAqcmFpZF9iaW8pCiAJaW50IHJlbWFpbmluZzsKIAlpbnQgaGFuZGxlZCA9IDA7 CiAKLQlsb2dpY2FsX3NlY3RvciA9IHJhaWRfYmlvLT5iaV9zZWN0b3IgJiB+KChzZWN0b3JfdClT VFJJUEVfU0VDVE9SUy0xKTsKKwlsb2dpY2FsX3NlY3RvciA9IHJhaWRfYmlvLT5iaV9pdGVyLmJp X3NlY3RvciAmCisJCX4oKHNlY3Rvcl90KVNUUklQRV9TRUNUT1JTLTEpOwogCXNlY3RvciA9IHJh aWQ1X2NvbXB1dGVfc2VjdG9yKGNvbmYsIGxvZ2ljYWxfc2VjdG9yLAogCQkJCSAgICAgIDAsICZk ZF9pZHgsIE5VTEwpOwogCWxhc3Rfc2VjdG9yID0gYmlvX2VuZF9zZWN0b3IocmFpZF9iaW8pOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Jsb2NrL2Rjc3NibGsuYyBiL2RyaXZlcnMvczM5MC9i bG9jay9kY3NzYmxrLmMKaW5kZXggNmVjYTAxOS4uMTY4MTRhOCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9zMzkwL2Jsb2NrL2Rjc3NibGsuYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2svZGNzc2Jsay5j CkBAIC04MTksNyArODE5LDggQEAgZGNzc2Jsa19tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlkZXZfaW5mbyA9IGJpby0+YmlfYmRldi0+YmRf ZGlzay0+cHJpdmF0ZV9kYXRhOwogCWlmIChkZXZfaW5mbyA9PSBOVUxMKQogCQlnb3RvIGZhaWw7 Ci0JaWYgKChiaW8tPmJpX3NlY3RvciAmIDcpICE9IDAgfHwgKGJpby0+Ymlfc2l6ZSAmIDQwOTUp ICE9IDApCisJaWYgKChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICYgNykgIT0gMCB8fAorCSAgICAo YmlvLT5iaV9pdGVyLmJpX3NpemUgJiA0MDk1KSAhPSAwKQogCQkvKiBSZXF1ZXN0IGlzIG5vdCBw YWdlLWFsaWduZWQuICovCiAJCWdvdG8gZmFpbDsKIAlpZiAoYmlvX2VuZF9zZWN0b3IoYmlvKSA+ IGdldF9jYXBhY2l0eShiaW8tPmJpX2JkZXYtPmJkX2Rpc2spKSB7CkBAIC04NDIsNyArODQzLDcg QEAgZGNzc2Jsa19tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBi aW8gKmJpbykKIAkJfQogCX0KIAotCWluZGV4ID0gKGJpby0+Ymlfc2VjdG9yID4+IDMpOworCWlu ZGV4ID0gKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPj4gMyk7CiAJYmlvX2Zvcl9lYWNoX3NlZ21l bnQoYnZlYywgYmlvLCBpKSB7CiAJCXBhZ2VfYWRkciA9ICh1bnNpZ25lZCBsb25nKQogCQkJcGFn ZV9hZGRyZXNzKGJ2ZWMtPmJ2X3BhZ2UpICsgYnZlYy0+YnZfb2Zmc2V0OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zMzkwL2Jsb2NrL3hwcmFtLmMgYi9kcml2ZXJzL3MzOTAvYmxvY2sveHByYW0uYwpp bmRleCA0NjRkZDI5Li5kZDRlNzNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvYmxvY2sveHBy YW0uYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2sveHByYW0uYwpAQCAtMTkwLDE1ICsxOTAsMTYg QEAgc3RhdGljIHZvaWQgeHByYW1fbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgYmlvICpiaW8pCiAJdW5zaWduZWQgbG9uZyBieXRlczsKIAlpbnQgaTsKIAotCWlm ICgoYmlvLT5iaV9zZWN0b3IgJiA3KSAhPSAwIHx8IChiaW8tPmJpX3NpemUgJiA0MDk1KSAhPSAw KQorCWlmICgoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAmIDcpICE9IDAgfHwKKwkgICAgKGJpby0+ YmlfaXRlci5iaV9zaXplICYgNDA5NSkgIT0gMCkKIAkJLyogUmVxdWVzdCBpcyBub3QgcGFnZS1h bGlnbmVkLiAqLwogCQlnb3RvIGZhaWw7Ci0JaWYgKChiaW8tPmJpX3NpemUgPj4gMTIpID4geGRl di0+c2l6ZSkKKwlpZiAoKGJpby0+YmlfaXRlci5iaV9zaXplID4+IDEyKSA+IHhkZXYtPnNpemUp CiAJCS8qIFJlcXVlc3Qgc2l6ZSBpcyBubyBwYWdlLWFsaWduZWQuICovCiAJCWdvdG8gZmFpbDsK LQlpZiAoKGJpby0+Ymlfc2VjdG9yID4+IDMpID4gMHhmZmZmZmZmZlUgLSB4ZGV2LT5vZmZzZXQp CisJaWYgKChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID4+IDMpID4gMHhmZmZmZmZmZlUgLSB4ZGV2 LT5vZmZzZXQpCiAJCWdvdG8gZmFpbDsKLQlpbmRleCA9IChiaW8tPmJpX3NlY3RvciA+PiAzKSAr IHhkZXYtPm9mZnNldDsKKwlpbmRleCA9IChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID4+IDMpICsg eGRldi0+b2Zmc2V0OwogCWJpb19mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIGJpbywgaSkgewogCQlw YWdlX2FkZHIgPSAodW5zaWduZWQgbG9uZykKIAkJCWttYXAoYnZlYy0+YnZfcGFnZSkgKyBidmVj LT5idl9vZmZzZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvb3NkL29zZF9pbml0aWF0b3Iu YyBiL2RyaXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jCmluZGV4IGFhNjYzNjEuLmJhYzA0 YzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jCisrKyBiL2Ry aXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jCkBAIC03MzEsNyArNzMxLDcgQEAgc3RhdGlj IGludCBfb3NkX3JlcV9saXN0X29iamVjdHMoc3RydWN0IG9zZF9yZXF1ZXN0ICpvciwKIAogCWJp by0+YmlfcncgJj0gflJFUV9XUklURTsKIAlvci0+aW4uYmlvID0gYmlvOwotCW9yLT5pbi50b3Rh bF9ieXRlcyA9IGJpby0+Ymlfc2l6ZTsKKwlvci0+aW4udG90YWxfYnl0ZXMgPSBiaW8tPmJpX2l0 ZXIuYmlfc2l6ZTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5n L3pyYW0venJhbV9kcnYuYyBiL2RyaXZlcnMvc3RhZ2luZy96cmFtL3pyYW1fZHJ2LmMKaW5kZXgg ZTc3ZmI2ZS4uMzRlZTg3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3pyYW0venJhbV9k cnYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvenJhbS96cmFtX2Rydi5jCkBAIC0xNzEsMTMgKzE3 MSwxNCBAQCBzdGF0aWMgaW5saW5lIGludCB2YWxpZF9pb19yZXF1ZXN0KHN0cnVjdCB6cmFtICp6 cmFtLCBzdHJ1Y3QgYmlvICpiaW8pCiAJdTY0IHN0YXJ0LCBlbmQsIGJvdW5kOwogCQogCS8qIHVu YWxpZ25lZCByZXF1ZXN0ICovCi0JaWYgKHVubGlrZWx5KGJpby0+Ymlfc2VjdG9yICYgKFpSQU1f U0VDVE9SX1BFUl9MT0dJQ0FMX0JMT0NLIC0gMSkpKQorCWlmICh1bmxpa2VseShiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yICYKKwkJICAgICAoWlJBTV9TRUNUT1JfUEVSX0xPR0lDQUxfQkxPQ0sgLSAx KSkpCiAJCXJldHVybiAwOwotCWlmICh1bmxpa2VseShiaW8tPmJpX3NpemUgJiAoWlJBTV9MT0dJ Q0FMX0JMT0NLX1NJWkUgLSAxKSkpCisJaWYgKHVubGlrZWx5KGJpby0+YmlfaXRlci5iaV9zaXpl ICYgKFpSQU1fTE9HSUNBTF9CTE9DS19TSVpFIC0gMSkpKQogCQlyZXR1cm4gMDsKIAotCXN0YXJ0 ID0gYmlvLT5iaV9zZWN0b3I7Ci0JZW5kID0gc3RhcnQgKyAoYmlvLT5iaV9zaXplID4+IFNFQ1RP Ul9TSElGVCk7CisJc3RhcnQgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOworCWVuZCA9IHN0YXJ0 ICsgKGJpby0+YmlfaXRlci5iaV9zaXplID4+IFNFQ1RPUl9TSElGVCk7CiAJYm91bmQgPSB6cmFt LT5kaXNrc2l6ZSA+PiBTRUNUT1JfU0hJRlQ7CiAJLyogb3V0IG9mIHJhbmdlIHJhbmdlICovCiAJ aWYgKHVubGlrZWx5KHN0YXJ0ID49IGJvdW5kIHx8IGVuZCA+IGJvdW5kIHx8IHN0YXJ0ID4gZW5k KSkKQEAgLTY1NCw4ICs2NTUsOSBAQCBzdGF0aWMgdm9pZCBfX3pyYW1fbWFrZV9yZXF1ZXN0KHN0 cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8sIGludCBydykKIAkJYnJlYWs7CiAJfQog Ci0JaW5kZXggPSBiaW8tPmJpX3NlY3RvciA+PiBTRUNUT1JTX1BFUl9QQUdFX1NISUZUOwotCW9m ZnNldCA9IChiaW8tPmJpX3NlY3RvciAmIChTRUNUT1JTX1BFUl9QQUdFIC0gMSkpIDw8IFNFQ1RP Ul9TSElGVDsKKwlpbmRleCA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPj4gU0VDVE9SU19QRVJf UEFHRV9TSElGVDsKKwlvZmZzZXQgPSAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAmCisJCSAgKFNF Q1RPUlNfUEVSX1BBR0UgLSAxKSkgPDwgU0VDVE9SX1NISUZUOwogCiAJYmlvX2Zvcl9lYWNoX3Nl Z21lbnQoYnZlYywgYmlvLCBpKSB7CiAJCWludCBtYXhfdHJhbnNmZXJfc2l6ZSA9IFBBR0VfU0la RSAtIG9mZnNldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2libG9j ay5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfaWJsb2NrLmMKaW5kZXggYWExNjIwYS4u NDAzMmQ2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfaWJsb2NrLmMK KysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfaWJsb2NrLmMKQEAgLTMxOSw3ICszMTks NyBAQCBpYmxvY2tfZ2V0X2JpbyhzdHJ1Y3Qgc2VfY21kICpjbWQsIHNlY3Rvcl90IGxiYSwgdTMy IHNnX251bSkKIAliaW8tPmJpX2JkZXYgPSBpYl9kZXYtPmliZF9iZDsKIAliaW8tPmJpX3ByaXZh dGUgPSBjbWQ7CiAJYmlvLT5iaV9lbmRfaW8gPSAmaWJsb2NrX2Jpb19kb25lOwotCWJpby0+Ymlf c2VjdG9yID0gbGJhOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBsYmE7CiAKIAlyZXR1cm4g YmlvOwogfQpkaWZmIC0tZ2l0IGEvZnMvYmlvLWludGVncml0eS5jIGIvZnMvYmlvLWludGVncml0 eS5jCmluZGV4IDhmYjQyOTEuLmY4MjRjMzAgMTAwNjQ0Ci0tLSBhL2ZzL2Jpby1pbnRlZ3JpdHku YworKysgYi9mcy9iaW8taW50ZWdyaXR5LmMKQEAgLTIxNSw5ICsyMTUsOSBAQCB1bnNpZ25lZCBp bnQgYmlvX2ludGVncml0eV90YWdfc2l6ZShzdHJ1Y3QgYmlvICpiaW8pCiB7CiAJc3RydWN0IGJs a19pbnRlZ3JpdHkgKmJpID0gYmRldl9nZXRfaW50ZWdyaXR5KGJpby0+YmlfYmRldik7CiAKLQlC VUdfT04oYmlvLT5iaV9zaXplID09IDApOworCUJVR19PTihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 PSAwKTsKIAotCXJldHVybiBiaS0+dGFnX3NpemUgKiAoYmlvLT5iaV9zaXplIC8gYmktPnNlY3Rv cl9zaXplKTsKKwlyZXR1cm4gYmktPnRhZ19zaXplICogKGJpby0+YmlfaXRlci5iaV9zaXplIC8g YmktPnNlY3Rvcl9zaXplKTsKIH0KIEVYUE9SVF9TWU1CT0woYmlvX2ludGVncml0eV90YWdfc2l6 ZSk7CiAKQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCBiaW9faW50ZWdyaXR5X2dlbmVy YXRlKHN0cnVjdCBiaW8gKmJpbykKIAlzdHJ1Y3QgYmxrX2ludGVncml0eSAqYmkgPSBiZGV2X2dl dF9pbnRlZ3JpdHkoYmlvLT5iaV9iZGV2KTsKIAlzdHJ1Y3QgYmxrX2ludGVncml0eV9leGNoZyBi aXg7CiAJc3RydWN0IGJpb192ZWMgKmJ2OwotCXNlY3Rvcl90IHNlY3RvciA9IGJpby0+Ymlfc2Vj dG9yOworCXNlY3Rvcl90IHNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJdW5zaWdu ZWQgaW50IGksIHNlY3RvcnMsIHRvdGFsOwogCXZvaWQgKnByb3RfYnVmID0gYmlvLT5iaV9pbnRl Z3JpdHktPmJpcF9idWY7CiAKQEAgLTM4Nyw3ICszODcsNyBAQCBpbnQgYmlvX2ludGVncml0eV9w cmVwKHN0cnVjdCBiaW8gKmJpbykKIAliaXAtPmJpcF9vd25zX2J1ZiA9IDE7CiAJYmlwLT5iaXBf YnVmID0gYnVmOwogCWJpcC0+YmlwX3NpemUgPSBsZW47Ci0JYmlwLT5iaXBfc2VjdG9yID0gYmlv LT5iaV9zZWN0b3I7CisJYmlwLT5iaXBfc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsK IAogCS8qIE1hcCBpdCAqLwogCW9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGJ1Zik7CmRpZmYgLS1n aXQgYS9mcy9iaW8uYyBiL2ZzL2Jpby5jCmluZGV4IDJiNmE4MTYuLjBhODZlMmMgMTAwNjQ0Ci0t LSBhL2ZzL2Jpby5jCisrKyBiL2ZzL2Jpby5jCkBAIC01MzIsMTMgKzUzMiwxMyBAQCB2b2lkIF9f YmlvX2Nsb25lKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJpbyAqYmlvX3NyYykKIAkgKiBtb3N0 IHVzZXJzIHdpbGwgYmUgb3ZlcnJpZGluZyAtPmJpX2JkZXYgd2l0aCBhIG5ldyB0YXJnZXQsCiAJ ICogc28gd2UgZG9uJ3Qgc2V0IG5vciBjYWxjdWxhdGUgbmV3IHBoeXNpY2FsL2h3IHNlZ21lbnQg Y291bnRzIGhlcmUKIAkgKi8KLQliaW8tPmJpX3NlY3RvciA9IGJpb19zcmMtPmJpX3NlY3RvcjsK KwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmlvX3NyYy0+YmlfaXRlci5iaV9zZWN0b3I7CiAJ YmlvLT5iaV9iZGV2ID0gYmlvX3NyYy0+YmlfYmRldjsKIAliaW8tPmJpX2ZsYWdzIHw9IDEgPDwg QklPX0NMT05FRDsKIAliaW8tPmJpX3J3ID0gYmlvX3NyYy0+Ymlfcnc7CiAJYmlvLT5iaV92Y250 ID0gYmlvX3NyYy0+YmlfdmNudDsKLQliaW8tPmJpX3NpemUgPSBiaW9fc3JjLT5iaV9zaXplOwot CWJpby0+YmlfaWR4ID0gYmlvX3NyYy0+YmlfaWR4OworCWJpby0+YmlfaXRlci5iaV9zaXplID0g YmlvX3NyYy0+YmlfaXRlci5iaV9zaXplOworCWJpby0+YmlfaXRlci5iaV9pZHggPSBiaW9fc3Jj LT5iaV9pdGVyLmJpX2lkeDsKIH0KIEVYUE9SVF9TWU1CT0woX19iaW9fY2xvbmUpOwogCkBAIC02 MTIsNyArNjEyLDcgQEAgc3RhdGljIGludCBfX2Jpb19hZGRfcGFnZShzdHJ1Y3QgcmVxdWVzdF9x dWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgcGFnZQogCWlmICh1bmxpa2VseShiaW9f ZmxhZ2dlZChiaW8sIEJJT19DTE9ORUQpKSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAoKChiaW8tPmJp X3NpemUgKyBsZW4pID4+IDkpID4gbWF4X3NlY3RvcnMpCisJaWYgKCgoYmlvLT5iaV9pdGVyLmJp X3NpemUgKyBsZW4pID4+IDkpID4gbWF4X3NlY3RvcnMpCiAJCXJldHVybiAwOwogCiAJLyoKQEAg LTYzNSw4ICs2MzUsOSBAQCBzdGF0aWMgaW50IF9fYmlvX2FkZF9wYWdlKHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBwYWdlCiAJCQkJCSAgIHNpbXVsYXRl IG1lcmdpbmcgdXBkYXRlZCBwcmV2X2J2ZWMKIAkJCQkJICAgYXMgbmV3IGJ2ZWMuICovCiAJCQkJ CS5iaV9iZGV2ID0gYmlvLT5iaV9iZGV2LAotCQkJCQkuYmlfc2VjdG9yID0gYmlvLT5iaV9zZWN0 b3IsCi0JCQkJCS5iaV9zaXplID0gYmlvLT5iaV9zaXplIC0gcHJldl9idl9sZW4sCisJCQkJCS5i aV9zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJCQkuYmlfc2l6ZSA9IGJpby0+ YmlfaXRlci5iaV9zaXplIC0KKwkJCQkJCXByZXZfYnZfbGVuLAogCQkJCQkuYmlfcncgPSBiaW8t PmJpX3J3LAogCQkJCX07CiAKQEAgLTY4NCw4ICs2ODUsOCBAQCBzdGF0aWMgaW50IF9fYmlvX2Fk ZF9wYWdlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBw YWdlCiAJaWYgKHEtPm1lcmdlX2J2ZWNfZm4pIHsKIAkJc3RydWN0IGJ2ZWNfbWVyZ2VfZGF0YSBi dm0gPSB7CiAJCQkuYmlfYmRldiA9IGJpby0+YmlfYmRldiwKLQkJCS5iaV9zZWN0b3IgPSBiaW8t PmJpX3NlY3RvciwKLQkJCS5iaV9zaXplID0gYmlvLT5iaV9zaXplLAorCQkJLmJpX3NlY3RvciA9 IGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkuYmlfc2l6ZSA9IGJpby0+YmlfaXRlci5iaV9z aXplLAogCQkJLmJpX3J3ID0gYmlvLT5iaV9ydywKIAkJfTsKIApAQCAtNzA4LDcgKzcwOSw3IEBA IHN0YXRpYyBpbnQgX19iaW9fYWRkX3BhZ2Uoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVj dCBiaW8gKmJpbywgc3RydWN0IHBhZ2UKIAliaW8tPmJpX3ZjbnQrKzsKIAliaW8tPmJpX3BoeXNf c2VnbWVudHMrKzsKICBkb25lOgotCWJpby0+Ymlfc2l6ZSArPSBsZW47CisJYmlvLT5iaV9pdGVy LmJpX3NpemUgKz0gbGVuOwogCXJldHVybiBsZW47CiB9CiAKQEAgLTgwNywyMiArODA4LDIyIEBA IHZvaWQgYmlvX2FkdmFuY2Uoc3RydWN0IGJpbyAqYmlvLCB1bnNpZ25lZCBieXRlcykKIAlpZiAo YmlvX2ludGVncml0eShiaW8pKQogCQliaW9faW50ZWdyaXR5X2FkdmFuY2UoYmlvLCBieXRlcyk7 CiAKLQliaW8tPmJpX3NlY3RvciArPSBieXRlcyA+PiA5OwotCWJpby0+Ymlfc2l6ZSAtPSBieXRl czsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICs9IGJ5dGVzID4+IDk7CisJYmlvLT5iaV9pdGVy LmJpX3NpemUgLT0gYnl0ZXM7CiAKIAlpZiAoYmlvLT5iaV9ydyAmIEJJT19OT19BRFZBTkNFX0lU RVJfTUFTSykKIAkJcmV0dXJuOwogCiAJd2hpbGUgKGJ5dGVzKSB7Ci0JCWlmICh1bmxpa2VseShi aW8tPmJpX2lkeCA+PSBiaW8tPmJpX3ZjbnQpKSB7CisJCWlmICh1bmxpa2VseShiaW8tPmJpX2l0 ZXIuYmlfaWR4ID49IGJpby0+YmlfdmNudCkpIHsKIAkJCVdBUk5fT05DRSgxLCAiYmlvIGlkeCAl ZCA+PSB2Y250ICVkXG4iLAotCQkJCSAgYmlvLT5iaV9pZHgsIGJpby0+YmlfdmNudCk7CisJCQkJ ICBiaW8tPmJpX2l0ZXIuYmlfaWR4LCBiaW8tPmJpX3ZjbnQpOwogCQkJYnJlYWs7CiAJCX0KIAog CQlpZiAoYnl0ZXMgPj0gYmlvX2lvdmVjKGJpbyktPmJ2X2xlbikgewogCQkJYnl0ZXMgLT0gYmlv X2lvdmVjKGJpbyktPmJ2X2xlbjsKLQkJCWJpby0+YmlfaWR4Kys7CisJCQliaW8tPmJpX2l0ZXIu YmlfaWR4Kys7CiAJCX0gZWxzZSB7CiAJCQliaW9faW92ZWMoYmlvKS0+YnZfbGVuIC09IGJ5dGVz OwogCQkJYmlvX2lvdmVjKGJpbyktPmJ2X29mZnNldCArPSBieXRlczsKQEAgLTE0NzUsNyArMTQ3 Niw3IEBAIHN0cnVjdCBiaW8gKmJpb19tYXBfa2VybihzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwg dm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbiwKIAlpZiAoSVNfRVJSKGJpbykpCiAJCXJldHVy biBiaW87CiAKLQlpZiAoYmlvLT5iaV9zaXplID09IGxlbikKKwlpZiAoYmlvLT5iaV9pdGVyLmJp X3NpemUgPT0gbGVuKQogCQlyZXR1cm4gYmlvOwogCiAJLyoKQEAgLTE3NTMsMTYgKzE3NTQsMTYg QEAgc3RydWN0IGJpb19wYWlyICpiaW9fc3BsaXQoc3RydWN0IGJpbyAqYmksIGludCBmaXJzdF9z ZWN0b3JzKQogCQlyZXR1cm4gYnA7CiAKIAl0cmFjZV9ibG9ja19zcGxpdChiZGV2X2dldF9xdWV1 ZShiaS0+YmlfYmRldiksIGJpLAotCQkJCWJpLT5iaV9zZWN0b3IgKyBmaXJzdF9zZWN0b3JzKTsK KwkJCQliaS0+YmlfaXRlci5iaV9zZWN0b3IgKyBmaXJzdF9zZWN0b3JzKTsKIAogCUJVR19PTihi aW9fc2VnbWVudHMoYmkpID4gMSk7CiAJYXRvbWljX3NldCgmYnAtPmNudCwgMyk7CiAJYnAtPmVy cm9yID0gMDsKIAlicC0+YmlvMSA9ICpiaTsKIAlicC0+YmlvMiA9ICpiaTsKLQlicC0+YmlvMi5i aV9zZWN0b3IgKz0gZmlyc3Rfc2VjdG9yczsKLQlicC0+YmlvMi5iaV9zaXplIC09IGZpcnN0X3Nl Y3RvcnMgPDwgOTsKLQlicC0+YmlvMS5iaV9zaXplID0gZmlyc3Rfc2VjdG9ycyA8PCA5OworCWJw LT5iaW8yLmJpX2l0ZXIuYmlfc2VjdG9yICs9IGZpcnN0X3NlY3RvcnM7CisJYnAtPmJpbzIuYmlf aXRlci5iaV9zaXplIC09IGZpcnN0X3NlY3RvcnMgPDwgOTsKKwlicC0+YmlvMS5iaV9pdGVyLmJp X3NpemUgPSBmaXJzdF9zZWN0b3JzIDw8IDk7CiAKIAlpZiAoYmktPmJpX3ZjbnQgIT0gMCkgewog CQlicC0+YnYxID0gKmJpb19pb3ZlYyhiaSk7CkBAIC0xODExLDIxICsxODEyLDIyIEBAIHZvaWQg YmlvX3RyaW0oc3RydWN0IGJpbyAqYmlvLCBpbnQgb2Zmc2V0LCBpbnQgc2l6ZSkKIAlpbnQgc29m YXIgPSAwOwogCiAJc2l6ZSA8PD0gOTsKLQlpZiAob2Zmc2V0ID09IDAgJiYgc2l6ZSA9PSBiaW8t PmJpX3NpemUpCisJaWYgKG9mZnNldCA9PSAwICYmIHNpemUgPT0gYmlvLT5iaV9pdGVyLmJpX3Np emUpCiAJCXJldHVybjsKIAogCWNsZWFyX2JpdChCSU9fU0VHX1ZBTElELCAmYmlvLT5iaV9mbGFn cyk7CiAKIAliaW9fYWR2YW5jZShiaW8sIG9mZnNldCA8PCA5KTsKIAotCWJpby0+Ymlfc2l6ZSA9 IHNpemU7CisJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBzaXplOwogCiAJLyogYXZvaWQgYW55IGNv bXBsaWNhdGlvbnMgd2l0aCBiaV9pZHggYmVpbmcgbm9uLXplcm8qLwotCWlmIChiaW8tPmJpX2lk eCkgewotCQltZW1tb3ZlKGJpby0+YmlfaW9fdmVjLCBiaW8tPmJpX2lvX3ZlYytiaW8tPmJpX2lk eCwKLQkJCShiaW8tPmJpX3ZjbnQgLSBiaW8tPmJpX2lkeCkgKiBzaXplb2Yoc3RydWN0IGJpb192 ZWMpKTsKLQkJYmlvLT5iaV92Y250IC09IGJpby0+YmlfaWR4OwotCQliaW8tPmJpX2lkeCA9IDA7 CisJaWYgKGJpby0+YmlfaXRlci5iaV9pZHgpIHsKKwkJbWVtbW92ZShiaW8tPmJpX2lvX3ZlYywg YmlvLT5iaV9pb192ZWMrYmlvLT5iaV9pdGVyLmJpX2lkeCwKKwkJCShiaW8tPmJpX3ZjbnQgLSBi aW8tPmJpX2l0ZXIuYmlfaWR4KSAqCisJCQlzaXplb2Yoc3RydWN0IGJpb192ZWMpKTsKKwkJYmlv LT5iaV92Y250IC09IGJpby0+YmlfaXRlci5iaV9pZHg7CisJCWJpby0+YmlfaXRlci5iaV9pZHgg PSAwOwogCX0KIAkvKiBNYWtlIHN1cmUgdmNudCBhbmQgbGFzdCBidiBhcmUgbm90IHRvbyBiaWcg Ki8KIAliaW9fZm9yX2VhY2hfc2VnbWVudChidmVjLCBiaW8sIGkpIHsKQEAgLTE4NjEsNyArMTg2 Myw3IEBAIHNlY3Rvcl90IGJpb19zZWN0b3Jfb2Zmc2V0KHN0cnVjdCBiaW8gKmJpbywgdW5zaWdu ZWQgc2hvcnQgaW5kZXgsCiAJc2VjdG9yX3N6ID0gcXVldWVfbG9naWNhbF9ibG9ja19zaXplKGJp by0+YmlfYmRldi0+YmRfZGlzay0+cXVldWUpOwogCXNlY3RvcnMgPSAwOwogCi0JaWYgKGluZGV4 ID49IGJpby0+YmlfaWR4KQorCWlmIChpbmRleCA+PSBiaW8tPmJpX2l0ZXIuYmlfaWR4KQogCQlp bmRleCA9IGJpby0+YmlfdmNudCAtIDE7CiAKIAliaW9fZm9yX2VhY2hfc2VnbWVudF9hbGwoYnYs IGJpbywgaSkgewpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvY2hlY2staW50ZWdyaXR5LmMgYi9mcy9i dHJmcy9jaGVjay1pbnRlZ3JpdHkuYwppbmRleCAxNDMxYTY5Li4yYWUzNTBjIDEwMDY0NAotLS0g YS9mcy9idHJmcy9jaGVjay1pbnRlZ3JpdHkuYworKysgYi9mcy9idHJmcy9jaGVjay1pbnRlZ3Jp dHkuYwpAQCAtMTcwOCw3ICsxNzA4LDcgQEAgc3RhdGljIGludCBidHJmc2ljX3JlYWRfYmxvY2so c3RydWN0IGJ0cmZzaWNfc3RhdGUgKnN0YXRlLAogCQkJcmV0dXJuIC0xOwogCQl9CiAJCWJpby0+ YmlfYmRldiA9IGJsb2NrX2N0eC0+ZGV2LT5iZGV2OwotCQliaW8tPmJpX3NlY3RvciA9IGRldl9i eXRlbnIgPj4gOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGRldl9ieXRlbnIgPj4gOTsK IAkJYmlvLT5iaV9lbmRfaW8gPSBidHJmc2ljX2NvbXBsZXRlX2Jpb19lbmRfaW87CiAJCWJpby0+ YmlfcHJpdmF0ZSA9ICZjb21wbGV0ZTsKIApAQCAtMzExMiwxNiArMzExMiwxNiBAQCB2b2lkIGJ0 cmZzaWNfc3VibWl0X2JpbyhpbnQgcncsIHN0cnVjdCBiaW8gKmJpbykKIAkJaW50IGJpb19pc19w YXRjaGVkOwogCQljaGFyICoqbWFwcGVkX2RhdGF2OwogCi0JCWRldl9ieXRlbnIgPSA1MTIgKiBi aW8tPmJpX3NlY3RvcjsKKwkJZGV2X2J5dGVuciA9IDUxMiAqIGJpby0+YmlfaXRlci5iaV9zZWN0 b3I7CiAJCWJpb19pc19wYXRjaGVkID0gMDsKIAkJaWYgKGRldl9zdGF0ZS0+c3RhdGUtPnByaW50 X21hc2sgJgogCQkgICAgQlRSRlNJQ19QUklOVF9NQVNLX1NVQk1JVF9CSU9fQkgpCiAJCQlwcmlu dGsoS0VSTl9JTkZPCiAJCQkgICAgICAgInN1Ym1pdF9iaW8ocnc9MHgleCwgYmlfdmNudD0ldSwi CiAJCQkgICAgICAgIiBiaV9zZWN0b3I9JWx1IChieXRlbnIgJWxsdSksIGJpX2JkZXY9JXApXG4i LAotCQkJICAgICAgIHJ3LCBiaW8tPmJpX3ZjbnQsICh1bnNpZ25lZCBsb25nKWJpby0+Ymlfc2Vj dG9yLAotCQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZGV2X2J5dGVuciwKLQkJCSAgICAg ICBiaW8tPmJpX2JkZXYpOworCQkJICAgICAgIHJ3LCBiaW8tPmJpX3ZjbnQsCisJCQkgICAgICAg KHVuc2lnbmVkIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCSAgICAgICAodW5zaWdu ZWQgbG9uZyBsb25nKWRldl9ieXRlbnIsIGJpby0+YmlfYmRldik7CiAKIAkJbWFwcGVkX2RhdGF2 ID0ga21hbGxvYyhzaXplb2YoKm1hcHBlZF9kYXRhdikgKiBiaW8tPmJpX3ZjbnQsCiAJCQkJICAg ICAgIEdGUF9OT0ZTKTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2NvbXByZXNzaW9uLmMgYi9mcy9i dHJmcy9jb21wcmVzc2lvbi5jCmluZGV4IGIxODliZDEuLjJkNzUxNWIgMTAwNjQ0Ci0tLSBhL2Zz L2J0cmZzL2NvbXByZXNzaW9uLmMKKysrIGIvZnMvYnRyZnMvY29tcHJlc3Npb24uYwpAQCAtMTc0 LDcgKzE3NCw4IEBAIHN0YXRpYyB2b2lkIGVuZF9jb21wcmVzc2VkX2Jpb19yZWFkKHN0cnVjdCBi aW8gKmJpbywgaW50IGVycikKIAkJZ290byBvdXQ7CiAKIAlpbm9kZSA9IGNiLT5pbm9kZTsKLQly ZXQgPSBjaGVja19jb21wcmVzc2VkX2NzdW0oaW5vZGUsIGNiLCAodTY0KWJpby0+Ymlfc2VjdG9y IDw8IDkpOworCXJldCA9IGNoZWNrX2NvbXByZXNzZWRfY3N1bShpbm9kZSwgY2IsCisJCQkJICAg ICh1NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PCA5KTsKIAlpZiAocmV0KQogCQlnb3RvIGNz dW1fZmFpbGVkOwogCkBAIC0zNzQsNyArMzc1LDcgQEAgaW50IGJ0cmZzX3N1Ym1pdF9jb21wcmVz c2VkX3dyaXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBzdGFydCwKIAlmb3IgKHBnX2luZGV4 ID0gMDsgcGdfaW5kZXggPCBjYi0+bnJfcGFnZXM7IHBnX2luZGV4KyspIHsKIAkJcGFnZSA9IGNv bXByZXNzZWRfcGFnZXNbcGdfaW5kZXhdOwogCQlwYWdlLT5tYXBwaW5nID0gaW5vZGUtPmlfbWFw cGluZzsKLQkJaWYgKGJpby0+Ymlfc2l6ZSkKKwkJaWYgKGJpby0+YmlfaXRlci5iaV9zaXplKQog CQkJcmV0ID0gaW9fdHJlZS0+b3BzLT5tZXJnZV9iaW9faG9vayhXUklURSwgcGFnZSwgMCwKIAkJ CQkJCQkgICBQQUdFX0NBQ0hFX1NJWkUsCiAJCQkJCQkJICAgYmlvLCAwKTsKQEAgLTUwOCw3ICs1 MDksNyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGFkZF9yYV9iaW9fcGFnZXMoc3RydWN0IGlub2Rl ICppbm9kZSwKIAogCQlpZiAoIWVtIHx8IGxhc3Rfb2Zmc2V0IDwgZW0tPnN0YXJ0IHx8CiAJCSAg ICAobGFzdF9vZmZzZXQgKyBQQUdFX0NBQ0hFX1NJWkUgPiBleHRlbnRfbWFwX2VuZChlbSkpIHx8 Ci0JCSAgICAoZW0tPmJsb2NrX3N0YXJ0ID4+IDkpICE9IGNiLT5vcmlnX2Jpby0+Ymlfc2VjdG9y KSB7CisJCSAgICAoZW0tPmJsb2NrX3N0YXJ0ID4+IDkpICE9IGNiLT5vcmlnX2Jpby0+YmlfaXRl ci5iaV9zZWN0b3IpIHsKIAkJCWZyZWVfZXh0ZW50X21hcChlbSk7CiAJCQl1bmxvY2tfZXh0ZW50 KHRyZWUsIGxhc3Rfb2Zmc2V0LCBlbmQpOwogCQkJdW5sb2NrX3BhZ2UocGFnZSk7CkBAIC01NTQs NyArNTU1LDcgQEAgbmV4dDoKICAqIGluIGl0LiAgV2UgZG9uJ3QgYWN0dWFsbHkgZG8gSU8gb24g dGhvc2UgcGFnZXMgYnV0IGFsbG9jYXRlIG5ldyBvbmVzCiAgKiB0byBob2xkIHRoZSBjb21wcmVz c2VkIHBhZ2VzIG9uIGRpc2suCiAgKgotICogYmlvLT5iaV9zZWN0b3IgcG9pbnRzIHRvIHRoZSBj b21wcmVzc2VkIGV4dGVudCBvbiBkaXNrCisgKiBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIHBvaW50 cyB0byB0aGUgY29tcHJlc3NlZCBleHRlbnQgb24gZGlzawogICogYmlvLT5iaV9pb192ZWMgcG9p bnRzIHRvIGFsbCBvZiB0aGUgaW5vZGUgcGFnZXMKICAqIGJpby0+YmlfdmNudCBpcyBhIGNvdW50 IG9mIHBhZ2VzCiAgKgpAQCAtNTc1LDcgKzU3Niw3IEBAIGludCBidHJmc19zdWJtaXRfY29tcHJl c3NlZF9yZWFkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBiaW8gKmJpbywKIAlzdHJ1Y3Qg cGFnZSAqcGFnZTsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2OwogCXN0cnVjdCBiaW8gKmNv bXBfYmlvOwotCXU2NCBjdXJfZGlza19ieXRlID0gKHU2NCliaW8tPmJpX3NlY3RvciA8PCA5Owor CXU2NCBjdXJfZGlza19ieXRlID0gKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDk7CiAJ dTY0IGVtX2xlbjsKIAl1NjQgZW1fc3RhcnQ7CiAJc3RydWN0IGV4dGVudF9tYXAgKmVtOwpAQCAt NjU3LDcgKzY1OCw3IEBAIGludCBidHJmc19zdWJtaXRfY29tcHJlc3NlZF9yZWFkKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHN0cnVjdCBiaW8gKmJpbywKIAkJcGFnZS0+bWFwcGluZyA9IGlub2RlLT5p X21hcHBpbmc7CiAJCXBhZ2UtPmluZGV4ID0gZW1fc3RhcnQgPj4gUEFHRV9DQUNIRV9TSElGVDsK IAotCQlpZiAoY29tcF9iaW8tPmJpX3NpemUpCisJCWlmIChjb21wX2Jpby0+YmlfaXRlci5iaV9z aXplKQogCQkJcmV0ID0gdHJlZS0+b3BzLT5tZXJnZV9iaW9faG9vayhSRUFELCBwYWdlLCAwLAog CQkJCQkJCVBBR0VfQ0FDSEVfU0laRSwKIAkJCQkJCQljb21wX2JpbywgMCk7CkBAIC02ODUsOCAr Njg2LDggQEAgaW50IGJ0cmZzX3N1Ym1pdF9jb21wcmVzc2VkX3JlYWQoc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGJpbyAqYmlvLAogCQkJCQkJCWNvbXBfYmlvLCBzdW1zKTsKIAkJCQlCVUdf T04ocmV0KTsgLyogLUVOT01FTSAqLwogCQkJfQotCQkJc3VtcyArPSAoY29tcF9iaW8tPmJpX3Np emUgKyByb290LT5zZWN0b3JzaXplIC0gMSkgLwotCQkJCXJvb3QtPnNlY3RvcnNpemU7CisJCQlz dW1zICs9IChjb21wX2Jpby0+YmlfaXRlci5iaV9zaXplICsKKwkJCQkgcm9vdC0+c2VjdG9yc2l6 ZSAtIDEpIC8gcm9vdC0+c2VjdG9yc2l6ZTsKIAogCQkJcmV0ID0gYnRyZnNfbWFwX2Jpbyhyb290 LCBSRUFELCBjb21wX2JpbywKIAkJCQkJICAgIG1pcnJvcl9udW0sIDApOwpkaWZmIC0tZ2l0IGEv ZnMvYnRyZnMvZXh0ZW50X2lvLmMgYi9mcy9idHJmcy9leHRlbnRfaW8uYwppbmRleCA1ODNkOThi Li4yN2FlZDlkIDEwMDY0NAotLS0gYS9mcy9idHJmcy9leHRlbnRfaW8uYworKysgYi9mcy9idHJm cy9leHRlbnRfaW8uYwpAQCAtMjA3Miw3ICsyMDcyLDcgQEAgaW50IHJlcGFpcl9pb19mYWlsdXJl KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCB1NjQgc3RhcnQsCiAJCXJldHVybiAtRUlP OwogCWJpby0+YmlfcHJpdmF0ZSA9ICZjb21wbDsKIAliaW8tPmJpX2VuZF9pbyA9IHJlcGFpcl9p b19mYWlsdXJlX2NhbGxiYWNrOwotCWJpby0+Ymlfc2l6ZSA9IDA7CisJYmlvLT5iaV9pdGVyLmJp X3NpemUgPSAwOwogCW1hcF9sZW5ndGggPSBsZW5ndGg7CiAKIAlyZXQgPSBidHJmc19tYXBfYmxv Y2soZnNfaW5mbywgV1JJVEUsIGxvZ2ljYWwsCkBAIC0yMDgzLDcgKzIwODMsNyBAQCBpbnQgcmVw YWlyX2lvX2ZhaWx1cmUoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sIHU2NCBzdGFydCwK IAl9CiAJQlVHX09OKG1pcnJvcl9udW0gIT0gYmJpby0+bWlycm9yX251bSk7CiAJc2VjdG9yID0g YmJpby0+c3RyaXBlc1ttaXJyb3JfbnVtLTFdLnBoeXNpY2FsID4+IDk7Ci0JYmlvLT5iaV9zZWN0 b3IgPSBzZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAlkZXYgPSBi YmlvLT5zdHJpcGVzW21pcnJvcl9udW0tMV0uZGV2OwogCWtmcmVlKGJiaW8pOwogCWlmICghZGV2 IHx8ICFkZXYtPmJkZXYgfHwgIWRldi0+d3JpdGVhYmxlKSB7CkBAIC0yMzY0LDkgKzIzNjQsOSBA QCBzdGF0aWMgaW50IGJpb19yZWFkcGFnZV9lcnJvcihzdHJ1Y3QgYmlvICpmYWlsZWRfYmlvLCBz dHJ1Y3QgcGFnZSAqcGFnZSwKIAl9CiAJYmlvLT5iaV9wcml2YXRlID0gc3RhdGU7CiAJYmlvLT5i aV9lbmRfaW8gPSBmYWlsZWRfYmlvLT5iaV9lbmRfaW87Ci0JYmlvLT5iaV9zZWN0b3IgPSBmYWls cmVjLT5sb2dpY2FsID4+IDk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGZhaWxyZWMtPmxv Z2ljYWwgPj4gOTsKIAliaW8tPmJpX2JkZXYgPSBCVFJGU19JKGlub2RlKS0+cm9vdC0+ZnNfaW5m by0+ZnNfZGV2aWNlcy0+bGF0ZXN0X2JkZXY7Ci0JYmlvLT5iaV9zaXplID0gMDsKKwliaW8tPmJp X2l0ZXIuYmlfc2l6ZSA9IDA7CiAKIAliaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBmYWlscmVjLT5s ZW4sIHN0YXJ0IC0gcGFnZV9vZmZzZXQocGFnZSkpOwogCkBAIC0yNDgzLDcgKzI0ODMsNyBAQCBz dGF0aWMgdm9pZCBlbmRfYmlvX2V4dGVudF9yZWFkcGFnZShzdHJ1Y3QgYmlvICpiaW8sIGludCBl cnIpCiAJCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBwYWdlLT5tYXBwaW5nLT5ob3N0OwogCiAJCXBy X2RlYnVnKCJlbmRfYmlvX2V4dGVudF9yZWFkcGFnZTogYmlfc2VjdG9yPSVsbHUsIGVycj0lZCwg IgotCQkJICJtaXJyb3I9JWx1XG4iLCAodTY0KWJpby0+Ymlfc2VjdG9yLCBlcnIsCisJCQkgIm1p cnJvcj0lbHVcbiIsICh1NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgZXJyLAogCQkJIGlvX2Jp by0+bWlycm9yX251bSk7CiAJCXRyZWUgPSAmQlRSRlNfSShpbm9kZSktPmlvX3RyZWU7CiAKQEAg LTI1OTgsOSArMjU5OCw5IEBAIGJ0cmZzX2Jpb19hbGxvYyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpi ZGV2LCB1NjQgZmlyc3Rfc2VjdG9yLCBpbnQgbnJfdmVjcywKIAl9CiAKIAlpZiAoYmlvKSB7Ci0J CWJpby0+Ymlfc2l6ZSA9IDA7CisJCWJpby0+YmlfaXRlci5iaV9zaXplID0gMDsKIAkJYmlvLT5i aV9iZGV2ID0gYmRldjsKLQkJYmlvLT5iaV9zZWN0b3IgPSBmaXJzdF9zZWN0b3I7CisJCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBmaXJzdF9zZWN0b3I7CiAJfQogCXJldHVybiBiaW87CiB9CkBA IC0yNjgwLDcgKzI2ODAsNyBAQCBzdGF0aWMgaW50IHN1Ym1pdF9leHRlbnRfcGFnZShpbnQgcncs IHN0cnVjdCBleHRlbnRfaW9fdHJlZSAqdHJlZSwKIAlpZiAoYmlvX3JldCAmJiAqYmlvX3JldCkg ewogCQliaW8gPSAqYmlvX3JldDsKIAkJaWYgKG9sZF9jb21wcmVzc2VkKQotCQkJY29udGlnID0g YmlvLT5iaV9zZWN0b3IgPT0gc2VjdG9yOworCQkJY29udGlnID0gYmlvLT5iaV9pdGVyLmJpX3Nl Y3RvciA9PSBzZWN0b3I7CiAJCWVsc2UKIAkJCWNvbnRpZyA9IGJpb19lbmRfc2VjdG9yKGJpbykg PT0gc2VjdG9yOwogCmRpZmYgLS1naXQgYS9mcy9idHJmcy9maWxlLWl0ZW0uYyBiL2ZzL2J0cmZz L2ZpbGUtaXRlbS5jCmluZGV4IGE3YmZjOTUuLjg5MGY5NzcgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZz L2ZpbGUtaXRlbS5jCisrKyBiL2ZzL2J0cmZzL2ZpbGUtaXRlbS5jCkBAIC0xNzQsNyArMTc0LDcg QEAgc3RhdGljIGludCBfX2J0cmZzX2xvb2t1cF9iaW9fc3VtcyhzdHJ1Y3QgYnRyZnNfcm9vdCAq cm9vdCwKIAlwYXRoID0gYnRyZnNfYWxsb2NfcGF0aCgpOwogCWlmICghcGF0aCkKIAkJcmV0dXJu IC1FTk9NRU07Ci0JaWYgKGJpby0+Ymlfc2l6ZSA+IFBBR0VfQ0FDSEVfU0laRSAqIDgpCisJaWYg KGJpby0+YmlfaXRlci5iaV9zaXplID4gUEFHRV9DQUNIRV9TSVpFICogOCkKIAkJcGF0aC0+cmVh ZGEgPSAyOwogCiAJV0FSTl9PTihiaW8tPmJpX3ZjbnQgPD0gMCk7CkBAIC0xOTAsNyArMTkwLDcg QEAgc3RhdGljIGludCBfX2J0cmZzX2xvb2t1cF9iaW9fc3VtcyhzdHJ1Y3QgYnRyZnNfcm9vdCAq cm9vdCwKIAkJcGF0aC0+c2tpcF9sb2NraW5nID0gMTsKIAl9CiAKLQlkaXNrX2J5dGVuciA9ICh1 NjQpYmlvLT5iaV9zZWN0b3IgPDwgOTsKKwlkaXNrX2J5dGVuciA9ICh1NjQpYmlvLT5iaV9pdGVy LmJpX3NlY3RvciA8PCA5OwogCWlmIChkaW8pCiAJCW9mZnNldCA9IGxvZ2ljYWxfb2Zmc2V0Owog CXdoaWxlIChiaW9faW5kZXggPCBiaW8tPmJpX3ZjbnQpIHsKQEAgLTQxOSwxMSArNDE5LDEyIEBA IGludCBidHJmc19jc3VtX29uZV9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBp bm9kZSAqaW5vZGUsCiAJdTY0IG9mZnNldDsKIAogCVdBUk5fT04oYmlvLT5iaV92Y250IDw9IDAp OwotCXN1bXMgPSBremFsbG9jKGJ0cmZzX29yZGVyZWRfc3VtX3NpemUocm9vdCwgYmlvLT5iaV9z aXplKSwgR0ZQX05PRlMpOworCXN1bXMgPSBremFsbG9jKGJ0cmZzX29yZGVyZWRfc3VtX3NpemUo cm9vdCwgYmlvLT5iaV9pdGVyLmJpX3NpemUpLAorCQkgICAgICAgR0ZQX05PRlMpOwogCWlmICgh c3VtcykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlzdW1zLT5sZW4gPSBiaW8tPmJpX3NpemU7CisJ c3Vtcy0+bGVuID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAJSU5JVF9MSVNUX0hFQUQoJnN1bXMt Pmxpc3QpOwogCiAJaWYgKGNvbnRpZykKQEAgLTQzMyw3ICs0MzQsNyBAQCBpbnQgYnRyZnNfY3N1 bV9vbmVfYmlvKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAog CiAJb3JkZXJlZCA9IGJ0cmZzX2xvb2t1cF9vcmRlcmVkX2V4dGVudChpbm9kZSwgb2Zmc2V0KTsK IAlCVUdfT04oIW9yZGVyZWQpOyAvKiBMb2dpYyBlcnJvciAqLwotCXN1bXMtPmJ5dGVuciA9ICh1 NjQpYmlvLT5iaV9zZWN0b3IgPDwgOTsKKwlzdW1zLT5ieXRlbnIgPSAodTY0KWJpby0+YmlfaXRl ci5iaV9zZWN0b3IgPDwgOTsKIAlpbmRleCA9IDA7CiAKIAl3aGlsZSAoYmlvX2luZGV4IDwgYmlv LT5iaV92Y250KSB7CkBAIC00NDgsNyArNDQ5LDcgQEAgaW50IGJ0cmZzX2NzdW1fb25lX2Jpbyhz dHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGlub2RlICppbm9kZSwKIAkJCWJ0cmZzX2Fk ZF9vcmRlcmVkX3N1bShpbm9kZSwgb3JkZXJlZCwgc3Vtcyk7CiAJCQlidHJmc19wdXRfb3JkZXJl ZF9leHRlbnQob3JkZXJlZCk7CiAKLQkJCWJ5dGVzX2xlZnQgPSBiaW8tPmJpX3NpemUgLSB0b3Rh bF9ieXRlczsKKwkJCWJ5dGVzX2xlZnQgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSAtIHRvdGFsX2J5 dGVzOwogCiAJCQlzdW1zID0ga3phbGxvYyhidHJmc19vcmRlcmVkX3N1bV9zaXplKHJvb3QsIGJ5 dGVzX2xlZnQpLAogCQkJCSAgICAgICBHRlBfTk9GUyk7CkBAIC00NTYsNyArNDU3LDcgQEAgaW50 IGJ0cmZzX2NzdW1fb25lX2JpbyhzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGlub2Rl ICppbm9kZSwKIAkJCXN1bXMtPmxlbiA9IGJ5dGVzX2xlZnQ7CiAJCQlvcmRlcmVkID0gYnRyZnNf bG9va3VwX29yZGVyZWRfZXh0ZW50KGlub2RlLCBvZmZzZXQpOwogCQkJQlVHX09OKCFvcmRlcmVk KTsgLyogTG9naWMgZXJyb3IgKi8KLQkJCXN1bXMtPmJ5dGVuciA9ICgodTY0KWJpby0+Ymlfc2Vj dG9yIDw8IDkpICsKKwkJCXN1bXMtPmJ5dGVuciA9ICgodTY0KWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPDwgOSkgKwogCQkJCSAgICAgICB0b3RhbF9ieXRlczsKIAkJCWluZGV4ID0gMDsKIAkJfQpk aWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW5vZGUuYyBiL2ZzL2J0cmZzL2lub2RlLmMKaW5kZXggNmQx YjkzYy4uZGY2ZWI1NSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvaW5vZGUuYworKysgYi9mcy9idHJm cy9pbm9kZS5jCkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBpbnQgYnRyZnNfbWVyZ2VfYmlvX2hvb2so aW50IHJ3LCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsCiAJCQkgdW5z aWduZWQgbG9uZyBiaW9fZmxhZ3MpCiB7CiAJc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QgPSBCVFJG U19JKHBhZ2UtPm1hcHBpbmctPmhvc3QpLT5yb290OwotCXU2NCBsb2dpY2FsID0gKHU2NCliaW8t PmJpX3NlY3RvciA8PCA5OworCXU2NCBsb2dpY2FsID0gKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yIDw8IDk7CiAJdTY0IGxlbmd0aCA9IDA7CiAJdTY0IG1hcF9sZW5ndGg7CiAJaW50IHJldDsK QEAgLTE2NzQsNyArMTY3NCw3IEBAIGludCBidHJmc19tZXJnZV9iaW9faG9vayhpbnQgcncsIHN0 cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwKIAlpZiAoYmlvX2ZsYWdzICYg RVhURU5UX0JJT19DT01QUkVTU0VEKQogCQlyZXR1cm4gMDsKIAotCWxlbmd0aCA9IGJpby0+Ymlf c2l6ZTsKKwlsZW5ndGggPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAltYXBfbGVuZ3RoID0gbGVu Z3RoOwogCXJldCA9IGJ0cmZzX21hcF9ibG9jayhyb290LT5mc19pbmZvLCBydywgbG9naWNhbCwK IAkJCSAgICAgICZtYXBfbGVuZ3RoLCBOVUxMLCAwKTsKQEAgLTY5MzUsNyArNjkzNSw4IEBAIHN0 YXRpYyB2b2lkIGJ0cmZzX2VuZF9kaW9fYmlvKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycikKIAkJ cHJpbnRrKEtFUk5fRVJSICJidHJmcyBkaXJlY3QgSU8gZmFpbGVkIGlubyAlbGx1IHJ3ICVsdSAi CiAJCSAgICAgICJzZWN0b3IgJSNMeCBsZW4gJXUgZXJyIG5vICVkXG4iLAogCQkgICAgICAodW5z aWduZWQgbG9uZyBsb25nKWJ0cmZzX2lubyhkaXAtPmlub2RlKSwgYmlvLT5iaV9ydywKLQkJICAg ICAgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3RvciwgYmlvLT5iaV9zaXplLCBlcnIp OworCQkgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJ CSAgICAgIGJpby0+YmlfaXRlci5iaV9zaXplLCBlcnIpOwogCQlkaXAtPmVycm9ycyA9IDE7CiAK IAkJLyoKQEAgLTcwMjQsNyArNzAyNSw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfc3VibWl0X2RpcmVj dF9ob29rKGludCBydywgc3RydWN0IGJ0cmZzX2Rpb19wcml2YXRlICpkaXAsCiAJc3RydWN0IGJp byAqYmlvOwogCXN0cnVjdCBiaW8gKm9yaWdfYmlvID0gZGlwLT5vcmlnX2JpbzsKIAlzdHJ1Y3Qg YmlvX3ZlYyAqYnZlYyA9IG9yaWdfYmlvLT5iaV9pb192ZWM7Ci0JdTY0IHN0YXJ0X3NlY3RvciA9 IG9yaWdfYmlvLT5iaV9zZWN0b3I7CisJdTY0IHN0YXJ0X3NlY3RvciA9IG9yaWdfYmlvLT5iaV9p dGVyLmJpX3NlY3RvcjsKIAl1NjQgZmlsZV9vZmZzZXQgPSBkaXAtPmxvZ2ljYWxfb2Zmc2V0Owog CXU2NCBzdWJtaXRfbGVuID0gMDsKIAl1NjQgbWFwX2xlbmd0aDsKQEAgLTcwMzIsMTQgKzcwMzMs MTQgQEAgc3RhdGljIGludCBidHJmc19zdWJtaXRfZGlyZWN0X2hvb2soaW50IHJ3LCBzdHJ1Y3Qg YnRyZnNfZGlvX3ByaXZhdGUgKmRpcCwKIAlpbnQgcmV0ID0gMDsKIAlpbnQgYXN5bmNfc3VibWl0 ID0gMDsKIAotCW1hcF9sZW5ndGggPSBvcmlnX2Jpby0+Ymlfc2l6ZTsKKwltYXBfbGVuZ3RoID0g b3JpZ19iaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAlyZXQgPSBidHJmc19tYXBfYmxvY2socm9vdC0+ ZnNfaW5mbywgcncsIHN0YXJ0X3NlY3RvciA8PCA5LAogCQkJICAgICAgJm1hcF9sZW5ndGgsIE5V TEwsIDApOwogCWlmIChyZXQpIHsKIAkJYmlvX3B1dChvcmlnX2Jpbyk7CiAJCXJldHVybiAtRUlP OwogCX0KLQlpZiAobWFwX2xlbmd0aCA+PSBvcmlnX2Jpby0+Ymlfc2l6ZSkgeworCWlmIChtYXBf bGVuZ3RoID49IG9yaWdfYmlvLT5iaV9pdGVyLmJpX3NpemUpIHsKIAkJYmlvID0gb3JpZ19iaW87 CiAJCWdvdG8gc3VibWl0OwogCX0KQEAgLTcwOTEsNyArNzA5Miw3IEBAIHN0YXRpYyBpbnQgYnRy ZnNfc3VibWl0X2RpcmVjdF9ob29rKGludCBydywgc3RydWN0IGJ0cmZzX2Rpb19wcml2YXRlICpk aXAsCiAJCQliaW8tPmJpX3ByaXZhdGUgPSBkaXA7CiAJCQliaW8tPmJpX2VuZF9pbyA9IGJ0cmZz X2VuZF9kaW9fYmlvOwogCi0JCQltYXBfbGVuZ3RoID0gb3JpZ19iaW8tPmJpX3NpemU7CisJCQlt YXBfbGVuZ3RoID0gb3JpZ19iaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAkJCXJldCA9IGJ0cmZzX21h cF9ibG9jayhyb290LT5mc19pbmZvLCBydywKIAkJCQkJICAgICAgc3RhcnRfc2VjdG9yIDw8IDks CiAJCQkJCSAgICAgICZtYXBfbGVuZ3RoLCBOVUxMLCAwKTsKQEAgLTcxNTUsOCArNzE1Niw4IEBA IHN0YXRpYyB2b2lkIGJ0cmZzX3N1Ym1pdF9kaXJlY3QoaW50IHJ3LCBzdHJ1Y3QgYmlvICpkaW9f YmlvLAogCWRpcC0+cHJpdmF0ZSA9IGRpb19iaW8tPmJpX3ByaXZhdGU7CiAJZGlwLT5pbm9kZSA9 IGlub2RlOwogCWRpcC0+bG9naWNhbF9vZmZzZXQgPSBmaWxlX29mZnNldDsKLQlkaXAtPmJ5dGVz ID0gZGlvX2Jpby0+Ymlfc2l6ZTsKLQlkaXAtPmRpc2tfYnl0ZW5yID0gKHU2NClkaW9fYmlvLT5i aV9zZWN0b3IgPDwgOTsKKwlkaXAtPmJ5dGVzID0gZGlvX2Jpby0+YmlfaXRlci5iaV9zaXplOwor CWRpcC0+ZGlza19ieXRlbnIgPSAodTY0KWRpb19iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDk7 CiAJaW9fYmlvLT5iaV9wcml2YXRlID0gZGlwOwogCWRpcC0+ZXJyb3JzID0gMDsKIAlkaXAtPm9y aWdfYmlvID0gaW9fYmlvOwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvcmFpZDU2LmMgYi9mcy9idHJm cy9yYWlkNTYuYwppbmRleCAwNTI1ZTEzLi5mYzg5YmVlIDEwMDY0NAotLS0gYS9mcy9idHJmcy9y YWlkNTYuYworKysgYi9mcy9idHJmcy9yYWlkNTYuYwpAQCAtMTAzMyw4ICsxMDMzLDggQEAgc3Rh dGljIGludCByYmlvX2FkZF9pb19wYWdlKHN0cnVjdCBidHJmc19yYWlkX2JpbyAqcmJpbywKIAog CS8qIHNlZSBpZiB3ZSBjYW4gYWRkIHRoaXMgcGFnZSBvbnRvIG91ciBleGlzdGluZyBiaW8gKi8K IAlpZiAobGFzdCkgewotCQlsYXN0X2VuZCA9ICh1NjQpbGFzdC0+Ymlfc2VjdG9yIDw8IDk7Ci0J CWxhc3RfZW5kICs9IGxhc3QtPmJpX3NpemU7CisJCWxhc3RfZW5kID0gKHU2NClsYXN0LT5iaV9p dGVyLmJpX3NlY3RvciA8PCA5OworCQlsYXN0X2VuZCArPSBsYXN0LT5iaV9pdGVyLmJpX3NpemU7 CiAKIAkJLyoKIAkJICogd2UgY2FuJ3QgbWVyZ2UgdGhlc2UgaWYgdGhleSBhcmUgZnJvbSBkaWZm ZXJlbnQKQEAgLTEwNTQsOSArMTA1NCw5IEBAIHN0YXRpYyBpbnQgcmJpb19hZGRfaW9fcGFnZShz dHJ1Y3QgYnRyZnNfcmFpZF9iaW8gKnJiaW8sCiAJaWYgKCFiaW8pCiAJCXJldHVybiAtRU5PTUVN OwogCi0JYmlvLT5iaV9zaXplID0gMDsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IDA7CiAJYmlv LT5iaV9iZGV2ID0gc3RyaXBlLT5kZXYtPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBkaXNrX3N0 YXJ0ID4+IDk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGRpc2tfc3RhcnQgPj4gOTsKIAlz ZXRfYml0KEJJT19VUFRPREFURSwgJmJpby0+YmlfZmxhZ3MpOwogCiAJYmlvX2FkZF9wYWdlKGJp bywgcGFnZSwgUEFHRV9DQUNIRV9TSVpFLCAwKTsKQEAgLTExMTIsNyArMTExMiw3IEBAIHN0YXRp YyB2b2lkIGluZGV4X3JiaW9fcGFnZXMoc3RydWN0IGJ0cmZzX3JhaWRfYmlvICpyYmlvKQogCiAJ c3Bpbl9sb2NrX2lycSgmcmJpby0+YmlvX2xpc3RfbG9jayk7CiAJYmlvX2xpc3RfZm9yX2VhY2go YmlvLCAmcmJpby0+YmlvX2xpc3QpIHsKLQkJc3RhcnQgPSAodTY0KWJpby0+Ymlfc2VjdG9yIDw8 IDk7CisJCXN0YXJ0ID0gKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDk7CiAJCXN0cmlw ZV9vZmZzZXQgPSBzdGFydCAtIHJiaW8tPnJhaWRfbWFwWzBdOwogCQlwYWdlX2luZGV4ID0gc3Ry aXBlX29mZnNldCA+PiBQQUdFX0NBQ0hFX1NISUZUOwogCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBj bGVhbnVwOgogc3RhdGljIGludCBmaW5kX2Jpb19zdHJpcGUoc3RydWN0IGJ0cmZzX3JhaWRfYmlv ICpyYmlvLAogCQkJICAgc3RydWN0IGJpbyAqYmlvKQogewotCXU2NCBwaHlzaWNhbCA9IGJpby0+ Ymlfc2VjdG9yOworCXU2NCBwaHlzaWNhbCA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJdTY0 IHN0cmlwZV9zdGFydDsKIAlpbnQgaTsKIAlzdHJ1Y3QgYnRyZnNfYmlvX3N0cmlwZSAqc3RyaXBl OwpAQCAtMTI5OSw3ICsxMjk5LDcgQEAgc3RhdGljIGludCBmaW5kX2Jpb19zdHJpcGUoc3RydWN0 IGJ0cmZzX3JhaWRfYmlvICpyYmlvLAogc3RhdGljIGludCBmaW5kX2xvZ2ljYWxfYmlvX3N0cmlw ZShzdHJ1Y3QgYnRyZnNfcmFpZF9iaW8gKnJiaW8sCiAJCQkJICAgc3RydWN0IGJpbyAqYmlvKQog ewotCXU2NCBsb2dpY2FsID0gYmlvLT5iaV9zZWN0b3I7CisJdTY0IGxvZ2ljYWwgPSBiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yOwogCXU2NCBzdHJpcGVfc3RhcnQ7CiAJaW50IGk7CiAKQEAgLTE2MDEs OCArMTYwMSw4IEBAIHN0YXRpYyBpbnQgcGx1Z19jbXAodm9pZCAqcHJpdiwgc3RydWN0IGxpc3Rf aGVhZCAqYSwgc3RydWN0IGxpc3RfaGVhZCAqYikKIAkJCQkJCSBwbHVnX2xpc3QpOwogCXN0cnVj dCBidHJmc19yYWlkX2JpbyAqcmIgPSBjb250YWluZXJfb2YoYiwgc3RydWN0IGJ0cmZzX3JhaWRf YmlvLAogCQkJCQkJIHBsdWdfbGlzdCk7Ci0JdTY0IGFfc2VjdG9yID0gcmEtPmJpb19saXN0Lmhl YWQtPmJpX3NlY3RvcjsKLQl1NjQgYl9zZWN0b3IgPSByYi0+YmlvX2xpc3QuaGVhZC0+Ymlfc2Vj dG9yOworCXU2NCBhX3NlY3RvciA9IHJhLT5iaW9fbGlzdC5oZWFkLT5iaV9pdGVyLmJpX3NlY3Rv cjsKKwl1NjQgYl9zZWN0b3IgPSByYi0+YmlvX2xpc3QuaGVhZC0+YmlfaXRlci5iaV9zZWN0b3I7 CiAKIAlpZiAoYV9zZWN0b3IgPCBiX3NlY3RvcikKIAkJcmV0dXJuIC0xOwpAQCAtMTY5Myw3ICsx NjkzLDcgQEAgaW50IHJhaWQ1Nl9wYXJpdHlfd3JpdGUoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3Qs IHN0cnVjdCBiaW8gKmJpbywKIAkJcmV0dXJuIFBUUl9FUlIocmJpbyk7CiAJfQogCWJpb19saXN0 X2FkZCgmcmJpby0+YmlvX2xpc3QsIGJpbyk7Ci0JcmJpby0+YmlvX2xpc3RfYnl0ZXMgPSBiaW8t PmJpX3NpemU7CisJcmJpby0+YmlvX2xpc3RfYnl0ZXMgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsK IAogCS8qCiAJICogZG9uJ3QgcGx1ZyBvbiBmdWxsIHJiaW9zLCBqdXN0IGdldCB0aGVtIG91dCB0 aGUgZG9vcgpAQCAtMjA0Nyw3ICsyMDQ3LDcgQEAgaW50IHJhaWQ1Nl9wYXJpdHlfcmVjb3Zlcihz dHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGJpbyAqYmlvLAogCiAJcmJpby0+cmVhZF9y ZWJ1aWxkID0gMTsKIAliaW9fbGlzdF9hZGQoJnJiaW8tPmJpb19saXN0LCBiaW8pOwotCXJiaW8t PmJpb19saXN0X2J5dGVzID0gYmlvLT5iaV9zaXplOworCXJiaW8tPmJpb19saXN0X2J5dGVzID0g YmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAlyYmlvLT5mYWlsYSA9IGZpbmRfbG9naWNhbF9iaW9f c3RyaXBlKHJiaW8sIGJpbyk7CiAJaWYgKHJiaW8tPmZhaWxhID09IC0xKSB7CmRpZmYgLS1naXQg YS9mcy9idHJmcy9zY3J1Yi5jIGIvZnMvYnRyZnMvc2NydWIuYwppbmRleCA2NGExNTdiLi41YmU3 YzYxIDEwMDY0NAotLS0gYS9mcy9idHJmcy9zY3J1Yi5jCisrKyBiL2ZzL2J0cmZzL3NjcnViLmMK QEAgLTEzMDMsNyArMTMwMyw3IEBAIHN0YXRpYyB2b2lkIHNjcnViX3JlY2hlY2tfYmxvY2soc3Ry dWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sCiAJCQljb250aW51ZTsKIAkJfQogCQliaW8tPmJp X2JkZXYgPSBwYWdlLT5kZXYtPmJkZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0gcGFnZS0+cGh5c2lj YWwgPj4gOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBhZ2UtPnBoeXNpY2FsID4+IDk7 CiAJCWJpby0+YmlfZW5kX2lvID0gc2NydWJfY29tcGxldGVfYmlvX2VuZF9pbzsKIAkJYmlvLT5i aV9wcml2YXRlID0gJmNvbXBsZXRlOwogCkBAIC0xNDM1LDcgKzE0MzUsNyBAQCBzdGF0aWMgaW50 IHNjcnViX3JlcGFpcl9wYWdlX2Zyb21fZ29vZF9jb3B5KHN0cnVjdCBzY3J1Yl9ibG9jayAqc2Js b2NrX2JhZCwKIAkJaWYgKCFiaW8pCiAJCQlyZXR1cm4gLUVJTzsKIAkJYmlvLT5iaV9iZGV2ID0g cGFnZV9iYWQtPmRldi0+YmRldjsKLQkJYmlvLT5iaV9zZWN0b3IgPSBwYWdlX2JhZC0+cGh5c2lj YWwgPj4gOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBhZ2VfYmFkLT5waHlzaWNhbCA+ PiA5OwogCQliaW8tPmJpX2VuZF9pbyA9IHNjcnViX2NvbXBsZXRlX2Jpb19lbmRfaW87CiAJCWJp by0+YmlfcHJpdmF0ZSA9ICZjb21wbGV0ZTsKIApAQCAtMTUzMyw3ICsxNTMzLDcgQEAgYWdhaW46 CiAJCWJpby0+YmlfcHJpdmF0ZSA9IHNiaW87CiAJCWJpby0+YmlfZW5kX2lvID0gc2NydWJfd3Jf YmlvX2VuZF9pbzsKIAkJYmlvLT5iaV9iZGV2ID0gc2Jpby0+ZGV2LT5iZGV2OwotCQliaW8tPmJp X3NlY3RvciA9IHNiaW8tPnBoeXNpY2FsID4+IDk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSBzYmlvLT5waHlzaWNhbCA+PiA5OwogCQlzYmlvLT5lcnIgPSAwOwogCX0gZWxzZSBpZiAoc2Jp by0+cGh5c2ljYWwgKyBzYmlvLT5wYWdlX2NvdW50ICogUEFHRV9TSVpFICE9CiAJCSAgIHNwYWdl LT5waHlzaWNhbF9mb3JfZGV2X3JlcGxhY2UgfHwKQEAgLTE5MzksNyArMTkzOSw3IEBAIGFnYWlu OgogCQliaW8tPmJpX3ByaXZhdGUgPSBzYmlvOwogCQliaW8tPmJpX2VuZF9pbyA9IHNjcnViX2Jp b19lbmRfaW87CiAJCWJpby0+YmlfYmRldiA9IHNiaW8tPmRldi0+YmRldjsKLQkJYmlvLT5iaV9z ZWN0b3IgPSBzYmlvLT5waHlzaWNhbCA+PiA5OworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0g c2Jpby0+cGh5c2ljYWwgPj4gOTsKIAkJc2Jpby0+ZXJyID0gMDsKIAl9IGVsc2UgaWYgKHNiaW8t PnBoeXNpY2FsICsgc2Jpby0+cGFnZV9jb3VudCAqIFBBR0VfU0laRSAhPQogCQkgICBzcGFnZS0+ cGh5c2ljYWwgfHwKQEAgLTMzMzAsOCArMzMzMCw4IEBAIHN0YXRpYyBpbnQgd3JpdGVfcGFnZV9u b2NvdyhzdHJ1Y3Qgc2NydWJfY3R4ICpzY3R4LAogCX0KIAliaW8tPmJpX3ByaXZhdGUgPSAmY29t cGw7CiAJYmlvLT5iaV9lbmRfaW8gPSBzY3J1Yl9jb21wbGV0ZV9iaW9fZW5kX2lvOwotCWJpby0+ Ymlfc2l6ZSA9IDA7Ci0JYmlvLT5iaV9zZWN0b3IgPSBwaHlzaWNhbF9mb3JfZGV2X3JlcGxhY2Ug Pj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IDA7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciA9IHBoeXNpY2FsX2Zvcl9kZXZfcmVwbGFjZSA+PiA5OwogCWJpby0+YmlfYmRldiA9IGRldi0+ YmRldjsKIAlyZXQgPSBiaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBQQUdFX0NBQ0hFX1NJWkUsIDAp OwogCWlmIChyZXQgIT0gUEFHRV9DQUNIRV9TSVpFKSB7CmRpZmYgLS1naXQgYS9mcy9idHJmcy92 b2x1bWVzLmMgYi9mcy9idHJmcy92b2x1bWVzLmMKaW5kZXggNzhiODcxNy4uOTljYTFiNiAxMDA2 NDQKLS0tIGEvZnMvYnRyZnMvdm9sdW1lcy5jCisrKyBiL2ZzL2J0cmZzL3ZvbHVtZXMuYwpAQCAt NTEyMiw3ICs1MTIyLDcgQEAgc3RhdGljIGludCBiaW9fc2l6ZV9vayhzdHJ1Y3QgYmxvY2tfZGV2 aWNlICpiZGV2LCBzdHJ1Y3QgYmlvICpiaW8sCiAJaWYgKCFxLT5tZXJnZV9idmVjX2ZuKQogCQly ZXR1cm4gMTsKIAotCWJ2bS5iaV9zaXplID0gYmlvLT5iaV9zaXplIC0gcHJldi0+YnZfbGVuOwor CWJ2bS5iaV9zaXplID0gYmlvLT5iaV9pdGVyLmJpX3NpemUgLSBwcmV2LT5idl9sZW47CiAJaWYg KHEtPm1lcmdlX2J2ZWNfZm4ocSwgJmJ2bSwgcHJldikgPCBwcmV2LT5idl9sZW4pCiAJCXJldHVy biAwOwogCXJldHVybiAxOwpAQCAtNTEzNyw3ICs1MTM3LDcgQEAgc3RhdGljIHZvaWQgc3VibWl0 X3N0cmlwZV9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBidHJmc19iaW8gKmJi aW8sCiAJYmlvLT5iaV9wcml2YXRlID0gYmJpbzsKIAlidHJmc19pb19iaW8oYmlvKS0+c3RyaXBl X2luZGV4ID0gZGV2X25yOwogCWJpby0+YmlfZW5kX2lvID0gYnRyZnNfZW5kX2JpbzsKLQliaW8t PmJpX3NlY3RvciA9IHBoeXNpY2FsID4+IDk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBo eXNpY2FsID4+IDk7CiAjaWZkZWYgREVCVUcKIAl7CiAJCXN0cnVjdCByY3Vfc3RyaW5nICpuYW1l OwpAQCAtNTE3NSw3ICs1MTc1LDcgQEAgYWdhaW46CiAJd2hpbGUgKGJ2ZWMgPD0gKGZpcnN0X2Jp by0+YmlfaW9fdmVjICsgZmlyc3RfYmlvLT5iaV92Y250IC0gMSkpIHsKIAkJaWYgKGJpb19hZGRf cGFnZShiaW8sIGJ2ZWMtPmJ2X3BhZ2UsIGJ2ZWMtPmJ2X2xlbiwKIAkJCQkgYnZlYy0+YnZfb2Zm c2V0KSA8IGJ2ZWMtPmJ2X2xlbikgewotCQkJdTY0IGxlbiA9IGJpby0+Ymlfc2l6ZTsKKwkJCXU2 NCBsZW4gPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAogCQkJYXRvbWljX2luYygmYmJpby0+c3Ry aXBlc19wZW5kaW5nKTsKIAkJCXN1Ym1pdF9zdHJpcGVfYmlvKHJvb3QsIGJiaW8sIGJpbywgcGh5 c2ljYWwsIGRldl9uciwKQEAgLTUxOTcsNyArNTE5Nyw3IEBAIHN0YXRpYyB2b2lkIGJiaW9fZXJy b3Ioc3RydWN0IGJ0cmZzX2JpbyAqYmJpbywgc3RydWN0IGJpbyAqYmlvLCB1NjQgbG9naWNhbCkK IAkJYmlvLT5iaV9wcml2YXRlID0gYmJpby0+cHJpdmF0ZTsKIAkJYmlvLT5iaV9lbmRfaW8gPSBi YmlvLT5lbmRfaW87CiAJCWJ0cmZzX2lvX2JpbyhiaW8pLT5taXJyb3JfbnVtID0gYmJpby0+bWly cm9yX251bTsKLQkJYmlvLT5iaV9zZWN0b3IgPSBsb2dpY2FsID4+IDk7CisJCWJpby0+YmlfaXRl ci5iaV9zZWN0b3IgPSBsb2dpY2FsID4+IDk7CiAJCWtmcmVlKGJiaW8pOwogCQliaW9fZW5kaW8o YmlvLCAtRUlPKTsKIAl9CkBAIC01MjA4LDcgKzUyMDgsNyBAQCBpbnQgYnRyZnNfbWFwX2Jpbyhz dHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8sCiB7CiAJc3Ry dWN0IGJ0cmZzX2RldmljZSAqZGV2OwogCXN0cnVjdCBiaW8gKmZpcnN0X2JpbyA9IGJpbzsKLQl1 NjQgbG9naWNhbCA9ICh1NjQpYmlvLT5iaV9zZWN0b3IgPDwgOTsKKwl1NjQgbG9naWNhbCA9ICh1 NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PCA5OwogCXU2NCBsZW5ndGggPSAwOwogCXU2NCBt YXBfbGVuZ3RoOwogCXU2NCAqcmFpZF9tYXAgPSBOVUxMOwpAQCAtNTIxNyw3ICs1MjE3LDcgQEAg aW50IGJ0cmZzX21hcF9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIGludCBydywgc3RydWN0 IGJpbyAqYmlvLAogCWludCB0b3RhbF9kZXZzID0gMTsKIAlzdHJ1Y3QgYnRyZnNfYmlvICpiYmlv ID0gTlVMTDsKIAotCWxlbmd0aCA9IGJpby0+Ymlfc2l6ZTsKKwlsZW5ndGggPSBiaW8tPmJpX2l0 ZXIuYmlfc2l6ZTsKIAltYXBfbGVuZ3RoID0gbGVuZ3RoOwogCiAJcmV0ID0gX19idHJmc19tYXBf YmxvY2socm9vdC0+ZnNfaW5mbywgcncsIGxvZ2ljYWwsICZtYXBfbGVuZ3RoLCAmYmJpbywKZGlm ZiAtLWdpdCBhL2ZzL2J1ZmZlci5jIGIvZnMvYnVmZmVyLmMKaW5kZXggNGQ3NDMzNS4uOGYzNWU3 NSAxMDA2NDQKLS0tIGEvZnMvYnVmZmVyLmMKKysrIGIvZnMvYnVmZmVyLmMKQEAgLTI5NzIsMTEg KzI5NzIsMTEgQEAgc3RhdGljIHZvaWQgZ3VhcmRfYmhfZW9kKGludCBydywgc3RydWN0IGJpbyAq YmlvLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQogCSAqIGxldCBpdCB0aHJvdWdoLCBhbmQgdGhl IElPIGxheWVyIHdpbGwgdHVybiBpdCBpbnRvCiAJICogYW4gRUlPLgogCSAqLwotCWlmICh1bmxp a2VseShiaW8tPmJpX3NlY3RvciA+PSBtYXhzZWN0b3IpKQorCWlmICh1bmxpa2VseShiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID49IG1heHNlY3RvcikpCiAJCXJldHVybjsKIAotCW1heHNlY3RvciAt PSBiaW8tPmJpX3NlY3RvcjsKLQlieXRlcyA9IGJpby0+Ymlfc2l6ZTsKKwltYXhzZWN0b3IgLT0g YmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwlieXRlcyA9IGJpby0+YmlfaXRlci5iaV9zaXplOwog CWlmIChsaWtlbHkoKGJ5dGVzID4+IDkpIDw9IG1heHNlY3RvcikpCiAJCXJldHVybjsKIApAQCAt Mjk4NCw3ICsyOTg0LDcgQEAgc3RhdGljIHZvaWQgZ3VhcmRfYmhfZW9kKGludCBydywgc3RydWN0 IGJpbyAqYmlvLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQogCWJ5dGVzID0gbWF4c2VjdG9yIDw8 IDk7CiAKIAkvKiBUcnVuY2F0ZSB0aGUgYmlvLi4gKi8KLQliaW8tPmJpX3NpemUgPSBieXRlczsK KwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IGJ5dGVzOwogCWJpby0+YmlfaW9fdmVjWzBdLmJ2X2xl biA9IGJ5dGVzOwogCiAJLyogLi5hbmQgY2xlYXIgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIGZvciBy ZWFkcyAqLwpAQCAtMzAxOSwxNCArMzAxOSwxNCBAQCBpbnQgX3N1Ym1pdF9iaChpbnQgcncsIHN0 cnVjdCBidWZmZXJfaGVhZCAqYmgsIHVuc2lnbmVkIGxvbmcgYmlvX2ZsYWdzKQogCSAqLwogCWJp byA9IGJpb19hbGxvYyhHRlBfTk9JTywgMSk7CiAKLQliaW8tPmJpX3NlY3RvciA9IGJoLT5iX2Js b2NrbnIgKiAoYmgtPmJfc2l6ZSA+PiA5KTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmgt PmJfYmxvY2tuciAqIChiaC0+Yl9zaXplID4+IDkpOwogCWJpby0+YmlfYmRldiA9IGJoLT5iX2Jk ZXY7CiAJYmlvLT5iaV9pb192ZWNbMF0uYnZfcGFnZSA9IGJoLT5iX3BhZ2U7CiAJYmlvLT5iaV9p b192ZWNbMF0uYnZfbGVuID0gYmgtPmJfc2l6ZTsKIAliaW8tPmJpX2lvX3ZlY1swXS5idl9vZmZz ZXQgPSBiaF9vZmZzZXQoYmgpOwogCiAJYmlvLT5iaV92Y250ID0gMTsKLQliaW8tPmJpX3NpemUg PSBiaC0+Yl9zaXplOworCWJpby0+YmlfaXRlci5iaV9zaXplID0gYmgtPmJfc2l6ZTsKIAogCWJp by0+YmlfZW5kX2lvID0gZW5kX2Jpb19iaF9pb19zeW5jOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJo OwpkaWZmIC0tZ2l0IGEvZnMvZGlyZWN0LWlvLmMgYi9mcy9kaXJlY3QtaW8uYwppbmRleCA3YWI5 MGY1Li42YTVkZTIwIDEwMDY0NAotLS0gYS9mcy9kaXJlY3QtaW8uYworKysgYi9mcy9kaXJlY3Qt aW8uYwpAQCAtMzQ5LDcgKzM0OSw3IEBAIGRpb19iaW9fYWxsb2Moc3RydWN0IGRpbyAqZGlvLCBz dHJ1Y3QgZGlvX3N1Ym1pdCAqc2RpbywKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX0tFUk5FTCwgbnJf dmVjcyk7CiAKIAliaW8tPmJpX2JkZXYgPSBiZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gZmlyc3Rf c2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBmaXJzdF9zZWN0b3I7CiAJaWYgKGRp by0+aXNfYXN5bmMpCiAJCWJpby0+YmlfZW5kX2lvID0gZGlvX2Jpb19lbmRfYWlvOwogCWVsc2UK QEAgLTY1NCw3ICs2NTQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBkaW9fc2VuZF9jdXJfcGFnZShz dHJ1Y3QgZGlvICpkaW8sIHN0cnVjdCBkaW9fc3VibWl0ICpzZGlvLAogCWlmIChzZGlvLT5iaW8p IHsKIAkJbG9mZl90IGN1cl9vZmZzZXQgPSBzZGlvLT5jdXJfcGFnZV9mc19vZmZzZXQ7CiAJCWxv ZmZfdCBiaW9fbmV4dF9vZmZzZXQgPSBzZGlvLT5sb2dpY2FsX29mZnNldF9pbl9iaW8gKwotCQkJ c2Rpby0+YmlvLT5iaV9zaXplOworCQkJc2Rpby0+YmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAkJ LyoKIAkJICogU2VlIHdoZXRoZXIgdGhpcyBuZXcgcmVxdWVzdCBpcyBjb250aWd1b3VzIHdpdGgg dGhlIG9sZC4KZGlmZiAtLWdpdCBhL2ZzL2V4dDQvcGFnZS1pby5jIGIvZnMvZXh0NC9wYWdlLWlv LmMKaW5kZXggNjYyNWQyMS4uZGE0Y2JmMCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9wYWdlLWlvLmMK KysrIGIvZnMvZXh0NC9wYWdlLWlvLmMKQEAgLTMxMyw3ICszMTMsNyBAQCBleHQ0X2lvX2VuZF90 ICpleHQ0X2dldF9pb19lbmQoZXh0NF9pb19lbmRfdCAqaW9fZW5kKQogc3RhdGljIHZvaWQgZXh0 NF9lbmRfYmlvKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycm9yKQogewogCWV4dDRfaW9fZW5kX3Qg KmlvX2VuZCA9IGJpby0+YmlfcHJpdmF0ZTsKLQlzZWN0b3JfdCBiaV9zZWN0b3IgPSBiaW8tPmJp X3NlY3RvcjsKKwlzZWN0b3JfdCBiaV9zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwog CiAJQlVHX09OKCFpb19lbmQpOwogCWJpby0+YmlfZW5kX2lvID0gTlVMTDsKQEAgLTM4MSw3ICsz ODEsNyBAQCBzdGF0aWMgaW50IGlvX3N1Ym1pdF9pbml0X2JpbyhzdHJ1Y3QgZXh0NF9pb19zdWJt aXQgKmlvLAogCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9JTywgbWluKG52ZWNzLCBCSU9fTUFYX1BB R0VTKSk7CiAJaWYgKCFiaW8pCiAJCXJldHVybiAtRU5PTUVNOwotCWJpby0+Ymlfc2VjdG9yID0g YmgtPmJfYmxvY2tuciAqIChiaC0+Yl9zaXplID4+IDkpOworCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBiaC0+Yl9ibG9ja25yICogKGJoLT5iX3NpemUgPj4gOSk7CiAJYmlvLT5iaV9iZGV2ID0g YmgtPmJfYmRldjsKIAliaW8tPmJpX2VuZF9pbyA9IGV4dDRfZW5kX2JpbzsKIAliaW8tPmJpX3By aXZhdGUgPSBleHQ0X2dldF9pb19lbmQoaW8tPmlvX2VuZCk7CmRpZmYgLS1naXQgYS9mcy9mMmZz L2RhdGEuYyBiL2ZzL2YyZnMvZGF0YS5jCmluZGV4IDAzNWY5YTMuLjEyYTJhZDUgMTAwNjQ0Ci0t LSBhL2ZzL2YyZnMvZGF0YS5jCisrKyBiL2ZzL2YyZnMvZGF0YS5jCkBAIC0zODcsNyArMzg3LDcg QEAgaW50IGYyZnNfcmVhZHBhZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgcGFn ZSAqcGFnZSwKIAliaW8gPSBmMmZzX2Jpb19hbGxvYyhiZGV2LCAxKTsKIAogCS8qIEluaXRpYWxp emUgdGhlIGJpbyAqLwotCWJpby0+Ymlfc2VjdG9yID0gU0VDVE9SX0ZST01fQkxPQ0soc2JpLCBi bGtfYWRkcik7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IFNFQ1RPUl9GUk9NX0JMT0NLKHNi aSwgYmxrX2FkZHIpOwogCWJpby0+YmlfZW5kX2lvID0gcmVhZF9lbmRfaW87CiAKIAlpZiAoYmlv X2FkZF9wYWdlKGJpbywgcGFnZSwgUEFHRV9DQUNIRV9TSVpFLCAwKSA8IFBBR0VfQ0FDSEVfU0la RSkgewpkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwpp bmRleCBhODZkMTI1Li5lY2ZlNjVjIDEwMDY0NAotLS0gYS9mcy9mMmZzL3NlZ21lbnQuYworKysg Yi9mcy9mMmZzL3NlZ21lbnQuYwpAQCAtNjgyLDcgKzY4Miw4IEBAIHN0YXRpYyB2b2lkIHN1Ym1p dF93cml0ZV9wYWdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IHBhZ2UgKnBhZ2Us CiBhbGxvY19uZXc6CiAJaWYgKHNiaS0+YmlvW3R5cGVdID09IE5VTEwpIHsKIAkJc2JpLT5iaW9b dHlwZV0gPSBmMmZzX2Jpb19hbGxvYyhiZGV2LCBtYXhfaHdfYmxvY2tzKHNiaSkpOwotCQlzYmkt PmJpb1t0eXBlXS0+Ymlfc2VjdG9yID0gU0VDVE9SX0ZST01fQkxPQ0soc2JpLCBibGtfYWRkcik7 CisJCXNiaS0+YmlvW3R5cGVdLT5iaV9pdGVyLmJpX3NlY3RvciA9CisJCQlTRUNUT1JfRlJPTV9C TE9DSyhzYmksIGJsa19hZGRyKTsKIAkJLyoKIAkJICogVGhlIGVuZF9pbyB3aWxsIGJlIGFzc2ln bmVkIGF0IHRoZSBzdW1iaXNzaW9uIHBoYXNlLgogCQkgKiBVbnRpbCB0aGVuLCBsZXQgYmlvX2Fk ZF9wYWdlKCkgbWVyZ2UgY29uc2VjdXRpdmUgSU9zIGFzIG11Y2gKZGlmZiAtLWdpdCBhL2ZzL2dm czIvbG9wcy5jIGIvZnMvZ2ZzMi9sb3BzLmMKaW5kZXggMTdjNWI1ZC4uODFlYTRkZSAxMDA2NDQK LS0tIGEvZnMvZ2ZzMi9sb3BzLmMKKysrIGIvZnMvZ2ZzMi9sb3BzLmMKQEAgLTI3Miw3ICsyNzIs NyBAQCBzdGF0aWMgc3RydWN0IGJpbyAqZ2ZzMl9sb2dfYWxsb2NfYmlvKHN0cnVjdCBnZnMyX3Ni ZCAqc2RwLCB1NjQgYmxrbm8pCiAJCW5ydmVjcyA9IG1heChucnZlY3MvMiwgMVUpOwogCX0KIAot CWJpby0+Ymlfc2VjdG9yID0gYmxrbm8gKiAoc2ItPnNfYmxvY2tzaXplID4+IDkpOworCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBibGtubyAqIChzYi0+c19ibG9ja3NpemUgPj4gOSk7CiAJYmlv LT5iaV9iZGV2ID0gc2ItPnNfYmRldjsKIAliaW8tPmJpX2VuZF9pbyA9IGdmczJfZW5kX2xvZ193 cml0ZTsKIAliaW8tPmJpX3ByaXZhdGUgPSBzZHA7CmRpZmYgLS1naXQgYS9mcy9nZnMyL29wc19m c3R5cGUuYyBiL2ZzL2dmczIvb3BzX2ZzdHlwZS5jCmluZGV4IDAyNjJjMTkuLmVhNjNlMDMgMTAw NjQ0Ci0tLSBhL2ZzL2dmczIvb3BzX2ZzdHlwZS5jCisrKyBiL2ZzL2dmczIvb3BzX2ZzdHlwZS5j CkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIGludCBnZnMyX3JlYWRfc3VwZXIoc3RydWN0IGdm czJfc2JkICpzZHAsIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpbGVudCkKIAlsb2NrX3BhZ2UocGFn ZSk7CiAKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX05PRlMsIDEpOwotCWJpby0+Ymlfc2VjdG9yID0g c2VjdG9yICogKHNiLT5zX2Jsb2Nrc2l6ZSA+PiA5KTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9y ID0gc2VjdG9yICogKHNiLT5zX2Jsb2Nrc2l6ZSA+PiA5KTsKIAliaW8tPmJpX2JkZXYgPSBzYi0+ c19iZGV2OwogCWJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIFBBR0VfU0laRSwgMCk7CiAKZGlmZiAt LWdpdCBhL2ZzL2hmc3BsdXMvd3JhcHBlci5jIGIvZnMvaGZzcGx1cy93cmFwcGVyLmMKaW5kZXgg YjUxYTYwNy4uNTU4NWEzMiAxMDA2NDQKLS0tIGEvZnMvaGZzcGx1cy93cmFwcGVyLmMKKysrIGIv ZnMvaGZzcGx1cy93cmFwcGVyLmMKQEAgLTcxLDcgKzcxLDcgQEAgaW50IGhmc3BsdXNfc3VibWl0 X2JpbyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzZWN0b3JfdCBzZWN0b3IsCiAJc2VjdG9yICY9 IH4oKGlvX3NpemUgPj4gSEZTUExVU19TRUNUT1JfU0hJRlQpIC0gMSk7CiAKIAliaW8gPSBiaW9f YWxsb2MoR0ZQX05PSU8sIDEpOwotCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yOworCWJpby0+Ymlf aXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJYmlvLT5iaV9iZGV2ID0gc2ItPnNfYmRldjsKIAli aW8tPmJpX2VuZF9pbyA9IGhmc3BsdXNfZW5kX2lvX3N5bmM7CiAJYmlvLT5iaV9wcml2YXRlID0g JndhaXQ7CmRpZmYgLS1naXQgYS9mcy9qZnMvamZzX2xvZ21nci5jIGIvZnMvamZzL2pmc19sb2dt Z3IuYwppbmRleCAzNjBkMjdjLi44ZDgxMWUwIDEwMDY0NAotLS0gYS9mcy9qZnMvamZzX2xvZ21n ci5jCisrKyBiL2ZzL2pmcy9qZnNfbG9nbWdyLmMKQEAgLTE5OTgsMjAgKzE5OTgsMjAgQEAgc3Rh dGljIGludCBsYm1SZWFkKHN0cnVjdCBqZnNfbG9nICogbG9nLCBpbnQgcG4sIHN0cnVjdCBsYnVm ICoqIGJwcCkKIAogCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9GUywgMSk7CiAKLQliaW8tPmJpX3Nl Y3RvciA9IGJwLT5sX2Jsa25vIDw8IChsb2ctPmwyYnNpemUgLSA5KTsKKwliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yID0gYnAtPmxfYmxrbm8gPDwgKGxvZy0+bDJic2l6ZSAtIDkpOwogCWJpby0+Ymlf YmRldiA9IGxvZy0+YmRldjsKIAliaW8tPmJpX2lvX3ZlY1swXS5idl9wYWdlID0gYnAtPmxfcGFn ZTsKIAliaW8tPmJpX2lvX3ZlY1swXS5idl9sZW4gPSBMT0dQU0laRTsKIAliaW8tPmJpX2lvX3Zl Y1swXS5idl9vZmZzZXQgPSBicC0+bF9vZmZzZXQ7CiAKIAliaW8tPmJpX3ZjbnQgPSAxOwotCWJp by0+Ymlfc2l6ZSA9IExPR1BTSVpFOworCWJpby0+YmlfaXRlci5iaV9zaXplID0gTE9HUFNJWkU7 CiAKIAliaW8tPmJpX2VuZF9pbyA9IGxibUlPRG9uZTsKIAliaW8tPmJpX3ByaXZhdGUgPSBicDsK IAkvKmNoZWNrIGlmIGpvdXJuYWxpbmcgdG8gZGlzayBoYXMgYmVlbiBkaXNhYmxlZCovCiAJaWYg KGxvZy0+bm9faW50ZWdyaXR5KSB7Ci0JCWJpby0+Ymlfc2l6ZSA9IDA7CisJCWJpby0+YmlfaXRl ci5iaV9zaXplID0gMDsKIAkJbGJtSU9Eb25lKGJpbywgMCk7CiAJfSBlbHNlIHsKIAkJc3VibWl0 X2JpbyhSRUFEX1NZTkMsIGJpbyk7CkBAIC0yMTQ0LDIxICsyMTQ0LDIxIEBAIHN0YXRpYyB2b2lk IGxibVN0YXJ0SU8oc3RydWN0IGxidWYgKiBicCkKIAlqZnNfaW5mbygibGJtU3RhcnRJT1xuIik7 CiAKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX05PRlMsIDEpOwotCWJpby0+Ymlfc2VjdG9yID0gYnAt PmxfYmxrbm8gPDwgKGxvZy0+bDJic2l6ZSAtIDkpOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSBicC0+bF9ibGtubyA8PCAobG9nLT5sMmJzaXplIC0gOSk7CiAJYmlvLT5iaV9iZGV2ID0gbG9n LT5iZGV2OwogCWJpby0+YmlfaW9fdmVjWzBdLmJ2X3BhZ2UgPSBicC0+bF9wYWdlOwogCWJpby0+ YmlfaW9fdmVjWzBdLmJ2X2xlbiA9IExPR1BTSVpFOwogCWJpby0+YmlfaW9fdmVjWzBdLmJ2X29m ZnNldCA9IGJwLT5sX29mZnNldDsKIAogCWJpby0+YmlfdmNudCA9IDE7Ci0JYmlvLT5iaV9zaXpl ID0gTE9HUFNJWkU7CisJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBMT0dQU0laRTsKIAogCWJpby0+ YmlfZW5kX2lvID0gbGJtSU9Eb25lOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJwOwogCiAJLyogY2hl Y2sgaWYgam91cm5hbGluZyB0byBkaXNrIGhhcyBiZWVuIGRpc2FibGVkICovCiAJaWYgKGxvZy0+ bm9faW50ZWdyaXR5KSB7Ci0JCWJpby0+Ymlfc2l6ZSA9IDA7CisJCWJpby0+YmlfaXRlci5iaV9z aXplID0gMDsKIAkJbGJtSU9Eb25lKGJpbywgMCk7CiAJfSBlbHNlIHsKIAkJc3VibWl0X2JpbyhX UklURV9TWU5DLCBiaW8pOwpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19tZXRhcGFnZS5jIGIvZnMv amZzL2pmc19tZXRhcGFnZS5jCmluZGV4IGQxNjVjZGUuLjQ5YmE3ZmYgMTAwNjQ0Ci0tLSBhL2Zz L2pmcy9qZnNfbWV0YXBhZ2UuYworKysgYi9mcy9qZnMvamZzX21ldGFwYWdlLmMKQEAgLTQxNiw3 ICs0MTYsNyBAQCBzdGF0aWMgaW50IG1ldGFwYWdlX3dyaXRlcGFnZShzdHJ1Y3QgcGFnZSAqcGFn ZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpCiAJCQkgKiBjb3VudCBmcm9tIGhpdHRp bmcgemVybyBiZWZvcmUgd2UncmUgdGhyb3VnaAogCQkJICovCiAJCQlpbmNfaW8ocGFnZSk7Ci0J CQlpZiAoIWJpby0+Ymlfc2l6ZSkKKwkJCWlmICghYmlvLT5iaV9pdGVyLmJpX3NpemUpCiAJCQkJ Z290byBkdW1wX2JpbzsKIAkJCXN1Ym1pdF9iaW8oV1JJVEUsIGJpbyk7CiAJCQlucl91bmRlcndh eSsrOwpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyBpbnQgbWV0YXBhZ2Vfd3JpdGVwYWdlKHN0 cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYykKIAogCQliaW8g PSBiaW9fYWxsb2MoR0ZQX05PRlMsIDEpOwogCQliaW8tPmJpX2JkZXYgPSBpbm9kZS0+aV9zYi0+ c19iZGV2OwotCQliaW8tPmJpX3NlY3RvciA9IHBibG9jayA8PCAoaW5vZGUtPmlfYmxrYml0cyAt IDkpOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gcGJsb2NrIDw8IChpbm9kZS0+aV9ibGti aXRzIC0gOSk7CiAJCWJpby0+YmlfZW5kX2lvID0gbWV0YXBhZ2Vfd3JpdGVfZW5kX2lvOwogCQli aW8tPmJpX3ByaXZhdGUgPSBwYWdlOwogCkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIGludCBt ZXRhcGFnZV93cml0ZXBhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB3cml0ZWJhY2tfY29u dHJvbCAqd2JjKQogCWlmIChiaW8pIHsKIAkJaWYgKGJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIGJp b19ieXRlcywgYmlvX29mZnNldCkgPCBiaW9fYnl0ZXMpCiAJCQkJZ290byBhZGRfZmFpbGVkOwot CQlpZiAoIWJpby0+Ymlfc2l6ZSkKKwkJaWYgKCFiaW8tPmJpX2l0ZXIuYmlfc2l6ZSkKIAkJCWdv dG8gZHVtcF9iaW87CiAKIAkJc3VibWl0X2JpbyhXUklURSwgYmlvKTsKQEAgLTUxNyw3ICs1MTcs OCBAQCBzdGF0aWMgaW50IG1ldGFwYWdlX3JlYWRwYWdlKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0 IHBhZ2UgKnBhZ2UpCiAKIAkJCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9GUywgMSk7CiAJCQliaW8t PmJpX2JkZXYgPSBpbm9kZS0+aV9zYi0+c19iZGV2OwotCQkJYmlvLT5iaV9zZWN0b3IgPSBwYmxv Y2sgPDwgKGlub2RlLT5pX2Jsa2JpdHMgLSA5KTsKKwkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PQorCQkJCXBibG9jayA8PCAoaW5vZGUtPmlfYmxrYml0cyAtIDkpOwogCQkJYmlvLT5iaV9lbmRf aW8gPSBtZXRhcGFnZV9yZWFkX2VuZF9pbzsKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHBhZ2U7CiAJ CQlsZW4gPSB4bGVuIDw8IGlub2RlLT5pX2Jsa2JpdHM7CmRpZmYgLS1naXQgYS9mcy9sb2dmcy9k ZXZfYmRldi5jIGIvZnMvbG9nZnMvZGV2X2JkZXYuYwppbmRleCA1NTA0NzVjLi5hMWIxNjFmIDEw MDY0NAotLS0gYS9mcy9sb2dmcy9kZXZfYmRldi5jCisrKyBiL2ZzL2xvZ2ZzL2Rldl9iZGV2LmMK QEAgLTMyLDkgKzMyLDkgQEAgc3RhdGljIGludCBzeW5jX3JlcXVlc3Qoc3RydWN0IHBhZ2UgKnBh Z2UsIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGludCBydykKIAliaW9fdmVjLmJ2X2xlbiA9 IFBBR0VfU0laRTsKIAliaW9fdmVjLmJ2X29mZnNldCA9IDA7CiAJYmlvLmJpX3ZjbnQgPSAxOwot CWJpby5iaV9zaXplID0gUEFHRV9TSVpFOworCWJpby5iaV9pdGVyLmJpX3NpemUgPSBQQUdFX1NJ WkU7CiAJYmlvLmJpX2JkZXYgPSBiZGV2OwotCWJpby5iaV9zZWN0b3IgPSBwYWdlLT5pbmRleCAq IChQQUdFX1NJWkUgPj4gOSk7CisJYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gcGFnZS0+aW5kZXgg KiAoUEFHRV9TSVpFID4+IDkpOwogCWluaXRfY29tcGxldGlvbigmY29tcGxldGUpOwogCWJpby5i aV9wcml2YXRlID0gJmNvbXBsZXRlOwogCWJpby5iaV9lbmRfaW8gPSByZXF1ZXN0X2NvbXBsZXRl OwpAQCAtMTA3LDkgKzEwNyw5IEBAIHN0YXRpYyBpbnQgX19iZGV2X3dyaXRlc2VnKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IsIHU2NCBvZnMsIHBnb2ZmX3QgaW5kZXgsCiAJCWlmIChpID49IG1heF9w YWdlcykgewogCQkJLyogQmxvY2sgbGF5ZXIgY2Fubm90IHNwbGl0IGJpb3MgOiggKi8KIAkJCWJp by0+YmlfdmNudCA9IGk7Ci0JCQliaW8tPmJpX3NpemUgPSBpICogUEFHRV9TSVpFOworCQkJYmlv LT5iaV9pdGVyLmJpX3NpemUgPSBpICogUEFHRV9TSVpFOwogCQkJYmlvLT5iaV9iZGV2ID0gc3Vw ZXItPnNfYmRldjsKLQkJCWJpby0+Ymlfc2VjdG9yID0gb2ZzID4+IDk7CisJCQliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yID0gb2ZzID4+IDk7CiAJCQliaW8tPmJpX3ByaXZhdGUgPSBzYjsKIAkJCWJp by0+YmlfZW5kX2lvID0gd3JpdGVzZWdfZW5kX2lvOwogCQkJYXRvbWljX2luYygmc3VwZXItPnNf cGVuZGluZ193cml0ZXMpOwpAQCAtMTM0LDkgKzEzNCw5IEBAIHN0YXRpYyBpbnQgX19iZGV2X3dy aXRlc2VnKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU2NCBvZnMsIHBnb2ZmX3QgaW5kZXgsCiAJ CXVubG9ja19wYWdlKHBhZ2UpOwogCX0KIAliaW8tPmJpX3ZjbnQgPSBucl9wYWdlczsKLQliaW8t PmJpX3NpemUgPSBucl9wYWdlcyAqIFBBR0VfU0laRTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 IG5yX3BhZ2VzICogUEFHRV9TSVpFOwogCWJpby0+YmlfYmRldiA9IHN1cGVyLT5zX2JkZXY7Ci0J YmlvLT5iaV9zZWN0b3IgPSBvZnMgPj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gb2Zz ID4+IDk7CiAJYmlvLT5iaV9wcml2YXRlID0gc2I7CiAJYmlvLT5iaV9lbmRfaW8gPSB3cml0ZXNl Z19lbmRfaW87CiAJYXRvbWljX2luYygmc3VwZXItPnNfcGVuZGluZ193cml0ZXMpOwpAQCAtMTk5 LDkgKzE5OSw5IEBAIHN0YXRpYyBpbnQgZG9fZXJhc2Uoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg dTY0IG9mcywgcGdvZmZfdCBpbmRleCwKIAkJaWYgKGkgPj0gbWF4X3BhZ2VzKSB7CiAJCQkvKiBC bG9jayBsYXllciBjYW5ub3Qgc3BsaXQgYmlvcyA6KCAqLwogCQkJYmlvLT5iaV92Y250ID0gaTsK LQkJCWJpby0+Ymlfc2l6ZSA9IGkgKiBQQUdFX1NJWkU7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2l6 ZSA9IGkgKiBQQUdFX1NJWkU7CiAJCQliaW8tPmJpX2JkZXYgPSBzdXBlci0+c19iZGV2OwotCQkJ YmlvLT5iaV9zZWN0b3IgPSBvZnMgPj4gOTsKKwkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBv ZnMgPj4gOTsKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHNiOwogCQkJYmlvLT5iaV9lbmRfaW8gPSBl cmFzZV9lbmRfaW87CiAJCQlhdG9taWNfaW5jKCZzdXBlci0+c19wZW5kaW5nX3dyaXRlcyk7CkBA IC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGludCBkb19lcmFzZShzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnNiLCB1NjQgb2ZzLCBwZ29mZl90IGluZGV4LAogCQliaW8tPmJpX2lvX3ZlY1tpXS5idl9vZmZz ZXQgPSAwOwogCX0KIAliaW8tPmJpX3ZjbnQgPSBucl9wYWdlczsKLQliaW8tPmJpX3NpemUgPSBu cl9wYWdlcyAqIFBBR0VfU0laRTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IG5yX3BhZ2VzICog UEFHRV9TSVpFOwogCWJpby0+YmlfYmRldiA9IHN1cGVyLT5zX2JkZXY7Ci0JYmlvLT5iaV9zZWN0 b3IgPSBvZnMgPj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gb2ZzID4+IDk7CiAJYmlv LT5iaV9wcml2YXRlID0gc2I7CiAJYmlvLT5iaV9lbmRfaW8gPSBlcmFzZV9lbmRfaW87CiAJYXRv bWljX2luYygmc3VwZXItPnNfcGVuZGluZ193cml0ZXMpOwpkaWZmIC0tZ2l0IGEvZnMvbXBhZ2Uu YyBiL2ZzL21wYWdlLmMKaW5kZXggMGZhY2UxYy4uOTJiMTI1ZiAxMDA2NDQKLS0tIGEvZnMvbXBh Z2UuYworKysgYi9mcy9tcGFnZS5jCkBAIC05NCw3ICs5NCw3IEBAIG1wYWdlX2FsbG9jKHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYsCiAKIAlpZiAoYmlvKSB7CiAJCWJpby0+YmlfYmRldiA9IGJk ZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0gZmlyc3Rfc2VjdG9yOworCQliaW8tPmJpX2l0ZXIuYmlf c2VjdG9yID0gZmlyc3Rfc2VjdG9yOwogCX0KIAlyZXR1cm4gYmlvOwogfQpkaWZmIC0tZ2l0IGEv ZnMvbmZzL2Jsb2NrbGF5b3V0L2Jsb2NrbGF5b3V0LmMgYi9mcy9uZnMvYmxvY2tsYXlvdXQvYmxv Y2tsYXlvdXQuYwppbmRleCBlMjQyYmJmLi5hZjczODk2IDEwMDY0NAotLS0gYS9mcy9uZnMvYmxv Y2tsYXlvdXQvYmxvY2tsYXlvdXQuYworKysgYi9mcy9uZnMvYmxvY2tsYXlvdXQvYmxvY2tsYXlv dXQuYwpAQCAtMTM0LDggKzEzNCw4IEBAIGJsX3N1Ym1pdF9iaW8oaW50IHJ3LCBzdHJ1Y3QgYmlv ICpiaW8pCiAJaWYgKGJpbykgewogCQlnZXRfcGFyYWxsZWwoYmlvLT5iaV9wcml2YXRlKTsKIAkJ ZHByaW50aygiJXMgc3VibWl0dGluZyAlcyBiaW8gJXVAJWxsdVxuIiwgX19mdW5jX18sCi0JCQly dyA9PSBSRUFEID8gInJlYWQiIDogIndyaXRlIiwKLQkJCWJpby0+Ymlfc2l6ZSwgKHVuc2lnbmVk IGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQlydyA9PSBSRUFEID8gInJlYWQiIDogIndy aXRlIiwgYmlvLT5iaV9pdGVyLmJpX3NpemUsCisJCQkodW5zaWduZWQgbG9uZyBsb25nKWJpby0+ YmlfaXRlci5iaV9zZWN0b3IpOwogCQlzdWJtaXRfYmlvKHJ3LCBiaW8pOwogCX0KIAlyZXR1cm4g TlVMTDsKQEAgLTE1Niw3ICsxNTYsOCBAQCBzdGF0aWMgc3RydWN0IGJpbyAqYmxfYWxsb2NfaW5p dF9iaW8oaW50IG5wZywgc2VjdG9yX3QgaXNlY3QsCiAJfQogCiAJaWYgKGJpbykgewotCQliaW8t PmJpX3NlY3RvciA9IGlzZWN0IC0gYmUtPmJlX2Zfb2Zmc2V0ICsgYmUtPmJlX3Zfb2Zmc2V0Owor CQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gaXNlY3QgLSBiZS0+YmVfZl9vZmZzZXQgKworCQkJ YmUtPmJlX3Zfb2Zmc2V0OwogCQliaW8tPmJpX2JkZXYgPSBiZS0+YmVfbWRldjsKIAkJYmlvLT5i aV9lbmRfaW8gPSBlbmRfaW87CiAJCWJpby0+YmlfcHJpdmF0ZSA9IHBhcjsKQEAgLTUxOSw3ICs1 MjAsNyBAQCBibF9kb19yZWFkcGFnZV9zeW5jKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgcG5m c19ibG9ja19leHRlbnQgKmJlLAogCWlzZWN0ID0gKHBhZ2UtPmluZGV4IDw8IFBBR0VfQ0FDSEVf U0VDVE9SX1NISUZUKSArCiAJCShvZmZzZXQgLyBTRUNUT1JfU0laRSk7CiAKLQliaW8tPmJpX3Nl Y3RvciA9IGlzZWN0IC0gYmUtPmJlX2Zfb2Zmc2V0ICsgYmUtPmJlX3Zfb2Zmc2V0OworCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBpc2VjdCAtIGJlLT5iZV9mX29mZnNldCArIGJlLT5iZV92X29m ZnNldDsKIAliaW8tPmJpX2JkZXYgPSBiZS0+YmVfbWRldjsKIAliaW8tPmJpX2VuZF9pbyA9IGJs X3JlYWRfc2luZ2xlX2VuZF9pbzsKIApkaWZmIC0tZ2l0IGEvZnMvbmlsZnMyL3NlZ2J1Zi5jIGIv ZnMvbmlsZnMyL3NlZ2J1Zi5jCmluZGV4IGRjOWE5MTMuLjg1ZGFiY2QgMTAwNjQ0Ci0tLSBhL2Zz L25pbGZzMi9zZWdidWYuYworKysgYi9mcy9uaWxmczIvc2VnYnVmLmMKQEAgLTQxNyw3ICs0MTcs OCBAQCBzdGF0aWMgc3RydWN0IGJpbyAqbmlsZnNfYWxsb2Nfc2VnX2JpbyhzdHJ1Y3QgdGhlX25p bGZzICpuaWxmcywgc2VjdG9yX3Qgc3RhcnQsCiAJfQogCWlmIChsaWtlbHkoYmlvKSkgewogCQli aW8tPmJpX2JkZXYgPSBuaWxmcy0+bnNfYmRldjsKLQkJYmlvLT5iaV9zZWN0b3IgPSBzdGFydCA8 PCAobmlsZnMtPm5zX2Jsb2Nrc2l6ZV9iaXRzIC0gOSk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPQorCQkJc3RhcnQgPDwgKG5pbGZzLT5uc19ibG9ja3NpemVfYml0cyAtIDkpOwogCX0KIAly ZXR1cm4gYmlvOwogfQpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvY2x1c3Rlci9oZWFydGJlYXQuYyBi L2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMKaW5kZXggNWMxYzg2NC4uZTFkMWU4MiAxMDA2 NDQKLS0tIGEvZnMvb2NmczIvY2x1c3Rlci9oZWFydGJlYXQuYworKysgYi9mcy9vY2ZzMi9jbHVz dGVyL2hlYXJ0YmVhdC5jCkBAIC00MjEsNyArNDIxLDcgQEAgc3RhdGljIHN0cnVjdCBiaW8gKm8y aGJfc2V0dXBfb25lX2JpbyhzdHJ1Y3QgbzJoYl9yZWdpb24gKnJlZywKIAl9CiAKIAkvKiBNdXN0 IHB1dCBldmVyeXRoaW5nIGluIDUxMiBieXRlIHNlY3RvcnMgZm9yIHRoZSBiaW8uLi4gKi8KLQli aW8tPmJpX3NlY3RvciA9IChyZWctPmhyX3N0YXJ0X2Jsb2NrICsgY3MpIDw8IChiaXRzIC0gOSk7 CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IChyZWctPmhyX3N0YXJ0X2Jsb2NrICsgY3MpIDw8 IChiaXRzIC0gOSk7CiAJYmlvLT5iaV9iZGV2ID0gcmVnLT5ocl9iZGV2OwogCWJpby0+YmlfcHJp dmF0ZSA9IHdjOwogCWJpby0+YmlfZW5kX2lvID0gbzJoYl9iaW9fZW5kX2lvOwpkaWZmIC0tZ2l0 IGEvZnMveGZzL3hmc19hb3BzLmMgYi9mcy94ZnMveGZzX2FvcHMuYwppbmRleCA1OTZlYzcxLi5i NGFkMTg2IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2FvcHMuYworKysgYi9mcy94ZnMveGZzX2Fv cHMuYwpAQCAtNDE1LDcgKzQxNSw3IEBAIHhmc19hbGxvY19pb2VuZF9iaW8oCiAJc3RydWN0IGJp bwkJKmJpbyA9IGJpb19hbGxvYyhHRlBfTk9JTywgbnZlY3MpOwogCiAJQVNTRVJUKGJpby0+Ymlf cHJpdmF0ZSA9PSBOVUxMKTsKLQliaW8tPmJpX3NlY3RvciA9IGJoLT5iX2Jsb2NrbnIgKiAoYmgt PmJfc2l6ZSA+PiA5KTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmgtPmJfYmxvY2tuciAq IChiaC0+Yl9zaXplID4+IDkpOwogCWJpby0+YmlfYmRldiA9IGJoLT5iX2JkZXY7CiAJcmV0dXJu IGJpbzsKIH0KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnVmLmMgYi9mcy94ZnMveGZzX2J1Zi5j CmluZGV4IDFiMjQ3MmEuLjBhZjdmOTMgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYnVmLmMKKysr IGIvZnMveGZzL3hmc19idWYuYwpAQCAtMTI4NSw3ICsxMjg1LDcgQEAgbmV4dF9jaHVuazoKIAog CWJpbyA9IGJpb19hbGxvYyhHRlBfTk9JTywgbnJfcGFnZXMpOwogCWJpby0+YmlfYmRldiA9IGJw LT5iX3RhcmdldC0+YnRfYmRldjsKLQliaW8tPmJpX3NlY3RvciA9IHNlY3RvcjsKKwliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yOwogCWJpby0+YmlfZW5kX2lvID0geGZzX2J1Zl9iaW9f ZW5kX2lvOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJwOwogCkBAIC0xMzA3LDcgKzEzMDcsNyBAQCBu ZXh0X2NodW5rOgogCQl0b3RhbF9ucl9wYWdlcy0tOwogCX0KIAotCWlmIChsaWtlbHkoYmlvLT5i aV9zaXplKSkgeworCWlmIChsaWtlbHkoYmlvLT5iaV9pdGVyLmJpX3NpemUpKSB7CiAJCWlmICh4 ZnNfYnVmX2lzX3ZtYXBwZWQoYnApKSB7CiAJCQlmbHVzaF9rZXJuZWxfdm1hcF9yYW5nZShicC0+ Yl9hZGRyLAogCQkJCQkJeGZzX2J1Zl92bWFwX2xlbihicCkpOwpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9iaW8uaCBiL2luY2x1ZGUvbGludXgvYmlvLmgKaW5kZXggMTYyMDM2YS4uNWY0NDBm MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9iaW8uaAorKysgYi9pbmNsdWRlL2xpbnV4L2Jp by5oCkBAIC02MiwxOSArNjIsMTkgQEAKICAqIG9uIGhpZ2htZW0gcGFnZSB2ZWN0b3JzCiAgKi8K ICNkZWZpbmUgYmlvX2lvdmVjX2lkeChiaW8sIGlkeCkJKCYoKGJpbyktPmJpX2lvX3ZlY1soaWR4 KV0pKQotI2RlZmluZSBiaW9faW92ZWMoYmlvKQkJYmlvX2lvdmVjX2lkeCgoYmlvKSwgKGJpbykt PmJpX2lkeCkKKyNkZWZpbmUgYmlvX2lvdmVjKGJpbykJCWJpb19pb3ZlY19pZHgoKGJpbyksIChi aW8pLT5iaV9pdGVyLmJpX2lkeCkKICNkZWZpbmUgYmlvX3BhZ2UoYmlvKQkJYmlvX2lvdmVjKChi aW8pKS0+YnZfcGFnZQogI2RlZmluZSBiaW9fb2Zmc2V0KGJpbykJCWJpb19pb3ZlYygoYmlvKSkt PmJ2X29mZnNldAotI2RlZmluZSBiaW9fc2VnbWVudHMoYmlvKQkoKGJpbyktPmJpX3ZjbnQgLSAo YmlvKS0+YmlfaWR4KQotI2RlZmluZSBiaW9fc2VjdG9ycyhiaW8pCSgoYmlvKS0+Ymlfc2l6ZSA+ PiA5KQotI2RlZmluZSBiaW9fZW5kX3NlY3RvcihiaW8pCSgoYmlvKS0+Ymlfc2VjdG9yICsgYmlv X3NlY3RvcnMoKGJpbykpKQorI2RlZmluZSBiaW9fc2VnbWVudHMoYmlvKQkoKGJpbyktPmJpX3Zj bnQgLSAoYmlvKS0+YmlfaXRlci5iaV9pZHgpCisjZGVmaW5lIGJpb19zZWN0b3JzKGJpbykJKChi aW8pLT5iaV9pdGVyLmJpX3NpemUgPj4gOSkKKyNkZWZpbmUgYmlvX2VuZF9zZWN0b3IoYmlvKQko KGJpbyktPmJpX2l0ZXIuYmlfc2VjdG9yICsgYmlvX3NlY3RvcnMoKGJpbykpKQogCiBzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGludCBiaW9fY3VyX2J5dGVzKHN0cnVjdCBiaW8gKmJpbykKIHsKIAlp ZiAoYmlvLT5iaV92Y250KQogCQlyZXR1cm4gYmlvX2lvdmVjKGJpbyktPmJ2X2xlbjsKIAllbHNl IC8qIGRhdGFsZXNzIHJlcXVlc3RzIHN1Y2ggYXMgZGlzY2FyZCAqLwotCQlyZXR1cm4gYmlvLT5i aV9zaXplOworCQlyZXR1cm4gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiB9CiAKIHN0YXRpYyBpbmxp bmUgdm9pZCAqYmlvX2RhdGEoc3RydWN0IGJpbyAqYmlvKQpAQCAtMTA4LDcgKzEwOCw3IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCAqYmlvX2RhdGEoc3RydWN0IGJpbyAqYmlvKQogICovCiAKICNkZWZp bmUgX19CVkVDX0VORChiaW8pCQliaW9faW92ZWNfaWR4KChiaW8pLCAoYmlvKS0+YmlfdmNudCAt IDEpCi0jZGVmaW5lIF9fQlZFQ19TVEFSVChiaW8pCWJpb19pb3ZlY19pZHgoKGJpbyksIChiaW8p LT5iaV9pZHgpCisjZGVmaW5lIF9fQlZFQ19TVEFSVChiaW8pCWJpb19pb3ZlY19pZHgoKGJpbyks IChiaW8pLT5iaV9pdGVyLmJpX2lkeCkKIAogLyogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBC SU9WRUNfUEhZU19NRVJHRUFCTEUgKi8KICNkZWZpbmUgX19CSU9WRUNfUEhZU19NRVJHRUFCTEUo dmVjMSwgdmVjMikJXApAQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqYmlv X2RhdGEoc3RydWN0IGJpbyAqYmlvKQogCSAgICAgaSsrKQogCiAjZGVmaW5lIGJpb19mb3JfZWFj aF9zZWdtZW50KGJ2bCwgYmlvLCBpKQkJCQlcCi0JZm9yIChpID0gKGJpbyktPmJpX2lkeDsJCQkJ CQlcCisJZm9yIChpID0gKGJpbyktPmJpX2l0ZXIuYmlfaWR4OwkJCQkJXAogCSAgICAgYnZsID0g YmlvX2lvdmVjX2lkeCgoYmlvKSwgKGkpKSwgaSA8IChiaW8pLT5iaV92Y250OwlcCiAJICAgICBp KyspCiAKQEAgLTM2NSw3ICszNjUsNyBAQCBzdGF0aWMgaW5saW5lIGNoYXIgKl9fYmlvX2ttYXBf aXJxKHN0cnVjdCBiaW8gKmJpbywgdW5zaWduZWQgc2hvcnQgaWR4LAogI2RlZmluZSBfX2Jpb19r dW5tYXBfaXJxKGJ1ZiwgZmxhZ3MpCWJ2ZWNfa3VubWFwX2lycShidWYsIGZsYWdzKQogCiAjZGVm aW5lIGJpb19rbWFwX2lycShiaW8sIGZsYWdzKSBcCi0JX19iaW9fa21hcF9pcnEoKGJpbyksIChi aW8pLT5iaV9pZHgsIChmbGFncykpCisJX19iaW9fa21hcF9pcnEoKGJpbyksIChiaW8pLT5iaV9p dGVyLmJpX2lkeCwgKGZsYWdzKSkKICNkZWZpbmUgYmlvX2t1bm1hcF9pcnEoYnVmLGZsYWdzKQlf X2Jpb19rdW5tYXBfaXJxKGJ1ZiwgZmxhZ3MpCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2Jsa190eXBlcy5oIGIvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaAppbmRleCBmYTFhYmVi Li5kNDZlOGE2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oCisrKyBiL2lu Y2x1ZGUvbGludXgvYmxrX3R5cGVzLmgKQEAgLTI4LDEzICsyOCwxOSBAQCBzdHJ1Y3QgYmlvX3Zl YyB7CiAJdW5zaWduZWQgaW50CWJ2X29mZnNldDsKIH07CiAKK3N0cnVjdCBidmVjX2l0ZXIgewor CXNlY3Rvcl90CQliaV9zZWN0b3I7CS8qIGRldmljZSBhZGRyZXNzIGluIDUxMiBieXRlCisJCQkJ CQkgICBzZWN0b3JzICovCisJdW5zaWduZWQgaW50CQliaV9zaXplOwkvKiByZXNpZHVhbCBJL08g Y291bnQgKi8KKworCXVuc2lnbmVkIGludAkJYmlfaWR4OwkJLyogY3VycmVudCBpbmRleCBpbnRv IGJ2bF92ZWMgKi8KK307CisKIC8qCiAgKiBtYWluIHVuaXQgb2YgSS9PIGZvciB0aGUgYmxvY2sg bGF5ZXIgYW5kIGxvd2VyIGxheWVycyAoaWUgZHJpdmVycyBhbmQKICAqIHN0YWNraW5nIGRyaXZl cnMpCiAgKi8KIHN0cnVjdCBiaW8gewotCXNlY3Rvcl90CQliaV9zZWN0b3I7CS8qIGRldmljZSBh ZGRyZXNzIGluIDUxMiBieXRlCi0JCQkJCQkgICBzZWN0b3JzICovCiAJc3RydWN0IGJpbwkJKmJp X25leHQ7CS8qIHJlcXVlc3QgcXVldWUgbGluayAqLwogCXN0cnVjdCBibG9ja19kZXZpY2UJKmJp X2JkZXY7CiAJdW5zaWduZWQgbG9uZwkJYmlfZmxhZ3M7CS8qIHN0YXR1cywgY29tbWFuZCwgZXRj ICovCkBAIC00MiwxNiArNDgsMTMgQEAgc3RydWN0IGJpbyB7CiAJCQkJCQkgKiB0b3AgYml0cyBw cmlvcml0eQogCQkJCQkJICovCiAKLQl1bnNpZ25lZCBzaG9ydAkJYmlfdmNudDsJLyogaG93IG1h bnkgYmlvX3ZlYydzICovCi0JdW5zaWduZWQgc2hvcnQJCWJpX2lkeDsJCS8qIGN1cnJlbnQgaW5k ZXggaW50byBidmxfdmVjICovCisJc3RydWN0IGJ2ZWNfaXRlcgliaV9pdGVyOwogCiAJLyogTnVt YmVyIG9mIHNlZ21lbnRzIGluIHRoaXMgQklPIGFmdGVyCiAJICogcGh5c2ljYWwgYWRkcmVzcyBj b2FsZXNjaW5nIGlzIHBlcmZvcm1lZC4KIAkgKi8KIAl1bnNpZ25lZCBpbnQJCWJpX3BoeXNfc2Vn bWVudHM7CiAKLQl1bnNpZ25lZCBpbnQJCWJpX3NpemU7CS8qIHJlc2lkdWFsIEkvTyBjb3VudCAq LwotCiAJLyoKIAkgKiBUbyBrZWVwIHRyYWNrIG9mIHRoZSBtYXggc2VnbWVudCBzaXplLCB3ZSBh Y2NvdW50IGZvciB0aGUKIAkgKiBzaXplcyBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgbWVyZ2VhYmxl IHNlZ21lbnRzIGluIHRoaXMgYmlvLgpAQCAtNzQsMTEgKzc3LDEzIEBAIHN0cnVjdCBiaW8gewog CXN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQgKmJpX2ludGVncml0eTsgIC8qIGRhdGEgaW50 ZWdyaXR5ICovCiAjZW5kaWYKIAorCXVuc2lnbmVkIHNob3J0CQliaV92Y250OwkvKiBob3cgbWFu eSBiaW9fdmVjJ3MgKi8KKwogCS8qCiAJICogRXZlcnl0aGluZyBzdGFydGluZyB3aXRoIGJpX21h eF92ZWNzIHdpbGwgYmUgcHJlc2VydmVkIGJ5IGJpb19yZXNldCgpCiAJICovCiAKLQl1bnNpZ25l ZCBpbnQJCWJpX21heF92ZWNzOwkvKiBtYXggYnZsX3ZlY3Mgd2UgY2FuIGhvbGQgKi8KKwl1bnNp Z25lZCBzaG9ydAkJYmlfbWF4X3ZlY3M7CS8qIG1heCBidmxfdmVjcyB3ZSBjYW4gaG9sZCAqLwog CiAJYXRvbWljX3QJCWJpX2NudDsJCS8qIHBpbiBjb3VudCAqLwogCmRpZmYgLS1naXQgYS9pbmNs dWRlL3RyYWNlL2V2ZW50cy9iY2FjaGUuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2JjYWNoZS5o CmluZGV4IDVlYmRhOTcuLjViNjQ3Y2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRz L2JjYWNoZS5oCisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2JjYWNoZS5oCkBAIC0yNiwxMCAr MjYsMTAgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhiY2FjaGVfcmVxdWVzdCwKIAkJX19lbnRyeS0+ ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRfZGV2OwogCQlfX2VudHJ5LT5vcmlnX21ham9yCT0gcy0+ ZC0+ZGlzay0+bWFqb3I7CiAJCV9fZW50cnktPm9yaWdfbWlub3IJPSBzLT5kLT5kaXNrLT5maXJz dF9taW5vcjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+Ymlfc2VjdG9yOwotCQlfX2VudHJ5 LT5vcmlnX3NlY3Rvcgk9IGJpby0+Ymlfc2VjdG9yIC0gMTY7Ci0JCV9fZW50cnktPm5yX3NlY3Rv cgk9IGJpby0+Ymlfc2l6ZSA+PiA5OwotCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJp by0+YmlfcncsIGJpby0+Ymlfc2l6ZSk7CisJCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yOworCQlfX2VudHJ5LT5vcmlnX3NlY3Rvcgk9IGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgLSAxNjsKKwkJX19lbnRyeS0+bnJfc2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NpemUg Pj4gOTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJp X2l0ZXIuYmlfc2l6ZSk7CiAJKSwKIAogCVRQX3ByaW50aygiJWQsJWQgJXMgJWxsdSArICV1IChm cm9tICVkLCVkIEAgJWxsdSkiLApAQCAtMTAxLDkgKzEwMSw5IEBAIERFQ0xBUkVfRVZFTlRfQ0xB U1MoYmNhY2hlX2JpbywKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlv LT5iaV9iZGV2LT5iZF9kZXY7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsK LQkJX19lbnRyeS0+bnJfc2VjdG9yCT0gYmlvLT5iaV9zaXplID4+IDk7Ci0JCWJsa19maWxsX3J3 YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9zaXplKTsKKwkJX19lbnRyeS0+ c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CisJCV9fZW50cnktPm5yX3NlY3Rvcgk9 IGJpby0+YmlfaXRlci5iaV9zaXplID4+IDk7CisJCWJsa19maWxsX3J3YnMoX19lbnRyeS0+cndi cywgYmlvLT5iaV9ydywgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCSksCiAKIAlUUF9wcmludGso IiVkLCVkICAlcyAlbGx1ICsgJXUiLApAQCAtMTM2LDkgKzEzNiw5IEBAIFRSQUNFX0VWRU5UKGJj YWNoZV9yZWFkLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50cnktPmRldgkJPSBiaW8tPmJp X2JkZXYtPmJkX2RldjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+Ymlfc2VjdG9yOwotCQlf X2VudHJ5LT5ucl9zZWN0b3IJPSBiaW8tPmJpX3NpemUgPj4gOTsKLQkJYmxrX2ZpbGxfcndicyhf X2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUpOworCQlfX2VudHJ5LT5zZWN0 b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+bnJfc2VjdG9yCT0gYmlv LT5iaV9pdGVyLmJpX3NpemUgPj4gOTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBi aW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCV9fZW50cnktPmNhY2hlX2hpdCA9 IGhpdDsKIAkJX19lbnRyeS0+YnlwYXNzID0gYnlwYXNzOwogCSksCkBAIC0xNjQsOSArMTY0LDkg QEAgVFJBQ0VfRVZFTlQoYmNhY2hlX3dyaXRlLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50 cnktPmRldgkJPSBiaW8tPmJpX2JkZXYtPmJkX2RldjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJp by0+Ymlfc2VjdG9yOwotCQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBiaW8tPmJpX3NpemUgPj4gOTsK LQkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUp OworCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwkJX19lbnRy eS0+bnJfc2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NpemUgPj4gOTsKKwkJYmxrX2ZpbGxfcndi cyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCV9f ZW50cnktPndyaXRlYmFjayA9IHdyaXRlYmFjazsKIAkJX19lbnRyeS0+YnlwYXNzID0gYnlwYXNz OwogCSksCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oIGIvaW5jbHVk ZS90cmFjZS9ldmVudHMvYmxvY2suaAppbmRleCA2MGFlN2MzLi5mYmY5YzVjIDEwMDY0NAotLS0g YS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oCisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRz L2Jsb2NrLmgKQEAgLTI0Myw5ICsyNDMsOSBAQCBUUkFDRV9FVkVOVChibG9ja19iaW9fYm91bmNl LAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlvLT5iaV9iZGV2ID8KIAkJ CQkJICBiaW8tPmJpX2JkZXYtPmJkX2RldiA6IDA7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8t PmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7 CiAJCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJpbyk7Ci0JCWJsa19maWxsX3J3 YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9zaXplKTsKKwkJYmxrX2ZpbGxf cndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJ CW1lbWNweShfX2VudHJ5LT5jb21tLCBjdXJyZW50LT5jb21tLCBUQVNLX0NPTU1fTEVOKTsKIAkp LAogCkBAIC0yODAsMTAgKzI4MCwxMCBAQCBUUkFDRV9FVkVOVChibG9ja19iaW9fY29tcGxldGUs CiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRf ZGV2OwotCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9zZWN0b3I7CisJCV9fZW50cnktPnNl Y3RvcgkJPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBi aW9fc2VjdG9ycyhiaW8pOwogCQlfX2VudHJ5LT5lcnJvcgkJPSBlcnJvcjsKLQkJYmxrX2ZpbGxf cndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUpOworCQlibGtfZmls bF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsK IAkpLAogCiAJVFBfcHJpbnRrKCIlZCwlZCAlcyAlbGx1ICsgJXUgWyVkXSIsCkBAIC0zMDgsOSAr MzA4LDkgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19iaW9fbWVyZ2UsCiAKIAlUUF9mYXN0 X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRfZGV2OwotCQlfX2Vu dHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9zZWN0b3I7CisJCV9fZW50cnktPnNlY3RvcgkJPSBiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBiaW9fc2VjdG9ycyhi aW8pOwotCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+Ymlf c2l6ZSk7CisJCWJsa19maWxsX3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5i aV9pdGVyLmJpX3NpemUpOwogCQltZW1jcHkoX19lbnRyeS0+Y29tbSwgY3VycmVudC0+Y29tbSwg VEFTS19DT01NX0xFTik7CiAJKSwKIApAQCAtMzc1LDkgKzM3NSw5IEBAIFRSQUNFX0VWRU5UKGJs b2NrX2Jpb19xdWV1ZSwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlv LT5iaV9iZGV2LT5iZF9kZXY7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsK KwkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCV9fZW50cnkt Pm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJpbyk7Ci0JCWJsa19maWxsX3J3YnMoX19lbnRyeS0+ cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9zaXplKTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5 LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCW1lbWNweShfX2Vu dHJ5LT5jb21tLCBjdXJyZW50LT5jb21tLCBUQVNLX0NPTU1fTEVOKTsKIAkpLAogCkBAIC00MDMs NyArNDAzLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19nZXRfcnEsCiAKIAlUUF9mYXN0 X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpbyA/IGJpby0+YmlfYmRldi0+YmRfZGV2IDog MDsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpbyA/IGJpby0+Ymlfc2VjdG9yIDogMDsKKwkJX19l bnRyeS0+c2VjdG9yCQk9IGJpbyA/IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgOiAwOwogCQlfX2Vu dHJ5LT5ucl9zZWN0b3IJPSBiaW8gPyBiaW9fc2VjdG9ycyhiaW8pIDogMDsKIAkJYmxrX2ZpbGxf cndicyhfX2VudHJ5LT5yd2JzLAogCQkJICAgICAgYmlvID8gYmlvLT5iaV9ydyA6IDAsIF9fZW50 cnktPm5yX3NlY3Rvcik7CkBAIC01MzgsOSArNTM4LDkgQEAgVFJBQ0VfRVZFTlQoYmxvY2tfc3Bs aXQsCiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+ YmRfZGV2OwotCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9zZWN0b3I7CisJCV9fZW50cnkt PnNlY3RvcgkJPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LT5uZXdfc2VjdG9y CT0gbmV3X3NlY3RvcjsKLQkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3 LCBiaW8tPmJpX3NpemUpOworCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+Ymlf cncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAkJbWVtY3B5KF9fZW50cnktPmNvbW0sIGN1cnJl bnQtPmNvbW0sIFRBU0tfQ09NTV9MRU4pOwogCSksCiAKQEAgLTU3OSwxMSArNTc5LDExIEBAIFRS QUNFX0VWRU5UKGJsb2NrX2Jpb19yZW1hcCwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5 LT5kZXYJCT0gYmlvLT5iaV9iZGV2LT5iZF9kZXY7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8t PmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7 CiAJCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJpbyk7CiAJCV9fZW50cnktPm9s ZF9kZXYJPSBkZXY7CiAJCV9fZW50cnktPm9sZF9zZWN0b3IJPSBmcm9tOwotCQlibGtfZmlsbF9y d2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+Ymlfc2l6ZSk7CisJCWJsa19maWxs X3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwog CSksCiAKIAlUUF9wcmludGsoIiVkLCVkICVzICVsbHUgKyAldSA8LSAoJWQsJWQpICVsbHUiLApk aWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oIGIvaW5jbHVkZS90cmFjZS9l dmVudHMvZjJmcy5oCmluZGV4IDUyYWU1NDguLmE5NTMxYWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dHJhY2UvZXZlbnRzL2YyZnMuaAorKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmgKQEAg LTYxMSw4ICs2MTEsOCBAQCBUUkFDRV9FVkVOVChmMmZzX2RvX3N1Ym1pdF9iaW8sCiAJCV9fZW50 cnktPmRldgkJPSBzYi0+c19kZXY7CiAJCV9fZW50cnktPmJ0eXBlCQk9IGJ0eXBlOwogCQlfX2Vu dHJ5LT5zeW5jCQk9IHN5bmM7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsK LQkJX19lbnRyeS0+c2l6ZQkJPSBiaW8tPmJpX3NpemU7CisJCV9fZW50cnktPnNlY3RvcgkJPSBi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yOworCQlfX2VudHJ5LT5zaXplCQk9IGJpby0+YmlfaXRlci5i aV9zaXplOwogCSksCiAKIAlUUF9wcmludGsoImRldiA9ICglZCwlZCksIHR5cGUgPSAlcywgaW8g PSAlcywgc2VjdG9yID0gJWxsZCwgc2l6ZSA9ICV1IiwKZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3dl ci9ibG9ja19pby5jIGIva2VybmVsL3Bvd2VyL2Jsb2NrX2lvLmMKaW5kZXggZDA5ZGQxMC4uOWE1 OGJjMiAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL2Jsb2NrX2lvLmMKKysrIGIva2VybmVsL3Bv d2VyL2Jsb2NrX2lvLmMKQEAgLTMyLDcgKzMyLDcgQEAgc3RhdGljIGludCBzdWJtaXQoaW50IHJ3 LCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsCiAJc3RydWN0IGJp byAqYmlvOwogCiAJYmlvID0gYmlvX2FsbG9jKF9fR0ZQX1dBSVQgfCBfX0dGUF9ISUdILCAxKTsK LQliaW8tPmJpX3NlY3RvciA9IHNlY3RvcjsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2Vj dG9yOwogCWJpby0+YmlfYmRldiA9IGJkZXY7CiAJYmlvLT5iaV9lbmRfaW8gPSBlbmRfc3dhcF9i aW9fcmVhZDsKIApkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL2Jsa3RyYWNlLmMgYi9rZXJuZWwv dHJhY2UvYmxrdHJhY2UuYwppbmRleCBiOGI4NTYwLi4yODE0YTNlIDEwMDY0NAotLS0gYS9rZXJu ZWwvdHJhY2UvYmxrdHJhY2UuYworKysgYi9rZXJuZWwvdHJhY2UvYmxrdHJhY2UuYwpAQCAtNzY0 LDggKzc2NCw4IEBAIHN0YXRpYyB2b2lkIGJsa19hZGRfdHJhY2VfYmlvKHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8sCiAJaWYgKCFlcnJvciAmJiAhYmlvX2ZsYWdnZWQo YmlvLCBCSU9fVVBUT0RBVEUpKQogCQllcnJvciA9IEVJTzsKIAotCV9fYmxrX2FkZF90cmFjZShi dCwgYmlvLT5iaV9zZWN0b3IsIGJpby0+Ymlfc2l6ZSwgYmlvLT5iaV9ydywgd2hhdCwKLQkJCWVy cm9yLCAwLCBOVUxMKTsKKwlfX2Jsa19hZGRfdHJhY2UoYnQsIGJpby0+YmlfaXRlci5iaV9zZWN0 b3IsIGJpby0+YmlfaXRlci5iaV9zaXplLAorCQkJYmlvLT5iaV9ydywgd2hhdCwgZXJyb3IsIDAs IE5VTEwpOwogfQogCiBzdGF0aWMgdm9pZCBibGtfYWRkX3RyYWNlX2Jpb19ib3VuY2Uodm9pZCAq aWdub3JlLApAQCAtODY4LDggKzg2OCw5IEBAIHN0YXRpYyB2b2lkIGJsa19hZGRfdHJhY2Vfc3Bs aXQodm9pZCAqaWdub3JlLAogCWlmIChidCkgewogCQlfX2JlNjQgcnBkdSA9IGNwdV90b19iZTY0 KHBkdSk7CiAKLQkJX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX3NlY3RvciwgYmlvLT5iaV9z aXplLCBiaW8tPmJpX3J3LAotCQkJCUJMS19UQV9TUExJVCwgIWJpb19mbGFnZ2VkKGJpbywgQklP X1VQVE9EQVRFKSwKKwkJX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y LAorCQkJCWJpby0+YmlfaXRlci5iaV9zaXplLCBiaW8tPmJpX3J3LCBCTEtfVEFfU1BMSVQsCisJ CQkJIWJpb19mbGFnZ2VkKGJpbywgQklPX1VQVE9EQVRFKSwKIAkJCQlzaXplb2YocnBkdSksICZy cGR1KTsKIAl9CiB9CkBAIC05MDEsOSArOTAyLDkgQEAgc3RhdGljIHZvaWQgYmxrX2FkZF90cmFj ZV9iaW9fcmVtYXAodm9pZCAqaWdub3JlLAogCXIuZGV2aWNlX3RvICAgPSBjcHVfdG9fYmUzMihi aW8tPmJpX2JkZXYtPmJkX2Rldik7CiAJci5zZWN0b3JfZnJvbSA9IGNwdV90b19iZTY0KGZyb20p OwogCi0JX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX3NlY3RvciwgYmlvLT5iaV9zaXplLCBi aW8tPmJpX3J3LAotCQkJQkxLX1RBX1JFTUFQLCAhYmlvX2ZsYWdnZWQoYmlvLCBCSU9fVVBUT0RB VEUpLAotCQkJc2l6ZW9mKHIpLCAmcik7CisJX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSwKKwkJCWJpby0+YmlfcncsIEJMS19U QV9SRU1BUCwKKwkJCSFiaW9fZmxhZ2dlZChiaW8sIEJJT19VUFRPREFURSksIHNpemVvZihyKSwg JnIpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL21tL3BhZ2VfaW8uYyBiL21tL3BhZ2VfaW8uYwpp bmRleCBiYTA1YjY0Li44YjE0ZWYyIDEwMDY0NAotLS0gYS9tbS9wYWdlX2lvLmMKKysrIGIvbW0v cGFnZV9pby5jCkBAIC0zMSwxMyArMzEsMTMgQEAgc3RhdGljIHN0cnVjdCBiaW8gKmdldF9zd2Fw X2JpbyhnZnBfdCBnZnBfZmxhZ3MsCiAKIAliaW8gPSBiaW9fYWxsb2MoZ2ZwX2ZsYWdzLCAxKTsK IAlpZiAoYmlvKSB7Ci0JCWJpby0+Ymlfc2VjdG9yID0gbWFwX3N3YXBfcGFnZShwYWdlLCAmYmlv LT5iaV9iZGV2KTsKLQkJYmlvLT5iaV9zZWN0b3IgPDw9IFBBR0VfU0hJRlQgLSA5OworCQliaW8t PmJpX2l0ZXIuYmlfc2VjdG9yID0gbWFwX3N3YXBfcGFnZShwYWdlLCAmYmlvLT5iaV9iZGV2KTsK KwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PD0gUEFHRV9TSElGVCAtIDk7CiAJCWJpby0+Ymlf aW9fdmVjWzBdLmJ2X3BhZ2UgPSBwYWdlOwogCQliaW8tPmJpX2lvX3ZlY1swXS5idl9sZW4gPSBQ QUdFX1NJWkU7CiAJCWJpby0+YmlfaW9fdmVjWzBdLmJ2X29mZnNldCA9IDA7CiAJCWJpby0+Ymlf dmNudCA9IDE7Ci0JCWJpby0+Ymlfc2l6ZSA9IFBBR0VfU0laRTsKKwkJYmlvLT5iaV9pdGVyLmJp X3NpemUgPSBQQUdFX1NJWkU7CiAJCWJpby0+YmlfZW5kX2lvID0gZW5kX2lvOwogCX0KIAlyZXR1 cm4gYmlvOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGVuZF9zd2FwX2Jpb193cml0ZShzdHJ1Y3Qg YmlvICpiaW8sIGludCBlcnIpCiAJCXByaW50ayhLRVJOX0FMRVJUICJXcml0ZS1lcnJvciBvbiBz d2FwLWRldmljZSAoJXU6JXU6JUx1KVxuIiwKIAkJCQlpbWFqb3IoYmlvLT5iaV9iZGV2LT5iZF9p bm9kZSksCiAJCQkJaW1pbm9yKGJpby0+YmlfYmRldi0+YmRfaW5vZGUpLAotCQkJCSh1bnNpZ25l ZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IpOworCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpYmlv LT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAJCUNsZWFyUGFnZVJlY2xhaW0ocGFnZSk7CiAJfQogCWVu ZF9wYWdlX3dyaXRlYmFjayhwYWdlKTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBlbmRfc3dhcF9i aW9fcmVhZChzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnIpCiAJCXByaW50ayhLRVJOX0FMRVJUICJS ZWFkLWVycm9yIG9uIHN3YXAtZGV2aWNlICgldToldTolTHUpXG4iLAogCQkJCWltYWpvcihiaW8t PmJpX2JkZXYtPmJkX2lub2RlKSwKIAkJCQlpbWlub3IoYmlvLT5iaV9iZGV2LT5iZF9pbm9kZSks Ci0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQkJKHVuc2lnbmVk IGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJZ290byBvdXQ7CiAJfQogCi0t IAoxLjguNC5yYzEKCi0tCmRtLWRldmVsIG1haWxpbmcgbGlzdApkbS1kZXZlbEByZWRoYXQuY29t Cmh0dHBzOi8vd3d3LnJlZGhhdC5jb20vbWFpbG1hbi9saXN0aW5mby9kbS1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 223BD7F37 for ; Wed, 7 Aug 2013 16:55:22 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id BBFACAC001 for ; Wed, 7 Aug 2013 14:55:18 -0700 (PDT) Received: from mail-pb0-f54.google.com (mail-pb0-f54.google.com [209.85.160.54]) by cuda.sgi.com with ESMTP id SPFJ1i7xP0nkdOLD (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 07 Aug 2013 14:55:04 -0700 (PDT) Received: by mail-pb0-f54.google.com with SMTP id ro12so2399889pbb.13 for ; Wed, 07 Aug 2013 14:55:04 -0700 (PDT) From: Kent Overstreet Subject: [PATCH 04/22] block: Abstract out bvec iterator Date: Wed, 7 Aug 2013 14:54:13 -0700 Message-Id: <1375912471-5106-5-git-send-email-kmo@daterainc.com> In-Reply-To: <1375912471-5106-1-git-send-email-kmo@daterainc.com> References: <1375912471-5106-1-git-send-email-kmo@daterainc.com> MIME-Version: 1.0 List-Id: XFS Filesystem from SGI List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xfs-bounces@oss.sgi.com Sender: xfs-bounces@oss.sgi.com To: axboe@kernel.dk Cc: Herton Ronaldo Krzesinski , Mike Snitzer , Benjamin Herrenschmidt , Paul Mackerras , Pavel Machek , Joshua Morris , Geert Uytterhoeven , Mel Gorman , Nitin Gupta , Len Brown , Sage Weil , Joern Engel , Rusty Russell , Sunil Mushran , Kent Overstreet , Alexander Viro , Yehuda Sadeh , Geoff Levand , Jiri Kosina , linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Joe Perches , Guo Chao , Andrew Morton , Dave Kleikamp , Jeremy Fitzhardinge , "Ed L. Cashin" , Pankaj Kumar , dm-devel@redhat.com, KONISHI Ryusuke , Alasdair Kergon , Lars Ellenberg , Namjae Jeon , Philip Kelleher , Jie Liu , Mark Fasheh , Stefano Stabellini , Asai Thambi S P , Prasad Joshi , "Rafael J. Wysocki" , Tejun Heo , Ben Myers , Jerome Marchand , Selvan Mani , Theodore Ts'o , Minchan Kim , Martin Schwidefsky , linux390@de.ibm.com, Frederic Weisbecker , Heiko Carstens , Chris Mason , fanchaoting , Jan Beulich , Jaegeuk Kim , Sebastian Ott , Christian Borntraeger , Matthew Wilcox , Ben Hutchings , Dan Magenheimer , Nick Piggin , Steven Rostedt , xfs@oss.sgi.com, Andy Adamson , ceph-devel@vger.kernel.org, Alex Elder , "Martin K. Petersen" , Sam Bradshaw , Wei Yongjun , "James E.J. Bottomley" , linux-fsdevel@vger.kernel.org, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , "Michael S. Tsirkin" , neilb@suse.de, Trond Myklebust , "Nicholas A. Bellinger" , Peng Tao , Andreas Dilger , Jiang Liu , Benny Halevy , Ingo Molnar , Boaz Harrosh , Ian Campbell , Konrad Rzeszutek Wilk , linux-raid@vger.kernel.org, Steven Whitehouse , Joel Becker 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 LmRlPgotLS0KIERvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dCAgICAgIHwgIDcgKystCiBh cmNoL202OGsvZW11L25mYmxvY2suYyAgICAgICAgICAgICB8ICAyICstCiBhcmNoL3Bvd2VycGMv c3lzZGV2L2F4b25yYW0uYyAgICAgICB8ICAzICstCiBibG9jay9ibGstY29yZS5jICAgICAgICAg ICAgICAgICAgICB8IDM2ICsrKysrKystLS0tLS0tLQogYmxvY2svYmxrLWZsdXNoLmMgICAgICAg ICAgICAgICAgICAgfCAgMiArLQogYmxvY2svYmxrLWxpYi5jICAgICAgICAgICAgICAgICAgICAg fCAxMiArKy0tLQogYmxvY2svYmxrLW1hcC5jICAgICAgICAgICAgICAgICAgICAgfCAgNiArLS0K IGJsb2NrL2Jsay1tZXJnZS5jICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KIGJsb2NrL2Jsay10 aHJvdHRsZS5jICAgICAgICAgICAgICAgIHwgMTQgKysrLS0tCiBibG9jay9lbGV2YXRvci5jICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2Jsb2NrL2FvZS9hb2VjbWQuYyAgICAg ICAgICB8ICA2ICstLQogZHJpdmVycy9ibG9jay9icmQuYyAgICAgICAgICAgICAgICAgfCAgNCAr LQogZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMgICAgfCAgMiArLQogZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfYml0bWFwLmMgICAgfCAgMiArLQogZHJpdmVycy9ibG9jay9kcmJkL2Ry YmRfcmVjZWl2ZXIuYyAgfCAgNiArLS0KIGRyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jICAg ICAgIHwgIDYgKy0tCiBkcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaCAgICAgICB8ICAyICst CiBkcml2ZXJzL2Jsb2NrL2Zsb3BweS5jICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2Js b2NrL2xvb3AuYyAgICAgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2Jsb2NrL210aXAzMnh4 L210aXAzMnh4LmMgICB8ICA3ICstLQogZHJpdmVycy9ibG9jay9udm1lLWNvcmUuYyAgICAgICAg ICAgfCAyNSArKysrKy0tLS0tCiBkcml2ZXJzL2Jsb2NrL3BrdGNkdmQuYyAgICAgICAgICAgICB8 IDUxICsrKysrKysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9ibG9jay9wczNkaXNrLmMgICAgICAg ICAgICAgfCAgMiArLQogZHJpdmVycy9ibG9jay9yYmQuYyAgICAgICAgICAgICAgICAgfCAyMSAr KysrKy0tLS0KIGRyaXZlcnMvYmxvY2svcnN4eC9kZXYuYyAgICAgICAgICAgIHwgIDYgKy0tCiBk cml2ZXJzL2Jsb2NrL3JzeHgvZG1hLmMgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL2Jsb2Nr L3VtZW0uYyAgICAgICAgICAgICAgICB8ICA5ICsrLS0KIGRyaXZlcnMvYmxvY2svdmlydGlvX2Js ay5jICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5j IHwgIDIgKy0KIGRyaXZlcnMvYmxvY2sveGVuLWJsa2Zyb250LmMgICAgICAgIHwgIDIgKy0KIGRy aXZlcnMvbWQvYmNhY2hlL2FsbG9jLmMgICAgICAgICAgIHwgIDQgKy0KIGRyaXZlcnMvbWQvYmNh Y2hlL2J0cmVlLmMgICAgICAgICAgIHwgMTcgKysrLS0tLQogZHJpdmVycy9tZC9iY2FjaGUvZGVi dWcuYyAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9iY2FjaGUvaW8uYyAgICAgICAgICAg ICAgfCAyNiArKysrKy0tLS0tLQogZHJpdmVycy9tZC9iY2FjaGUvam91cm5hbC5jICAgICAgICAg fCAxMiArKy0tLQogZHJpdmVycy9tZC9iY2FjaGUvbW92aW5nZ2MuYyAgICAgICAgfCAgNCArLQog ZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jICAgICAgICAgfCA1MCArKysrKysrKysrLS0tLS0t LS0tLQogZHJpdmVycy9tZC9iY2FjaGUvc3VwZXIuYyAgICAgICAgICAgfCAxNiArKystLS0tCiBk cml2ZXJzL21kL2JjYWNoZS91dGlsLmMgICAgICAgICAgICB8ICA0ICstCiBkcml2ZXJzL21kL2Jj YWNoZS93cml0ZWJhY2suYyAgICAgICB8ICA2ICstLQogZHJpdmVycy9tZC9iY2FjaGUvd3JpdGVi YWNrLmggICAgICAgfCAgMiArLQogZHJpdmVycy9tZC9kbS1iaW8tcmVjb3JkLmggICAgICAgICAg fCAxMiArKy0tLQogZHJpdmVycy9tZC9kbS1idWZpby5jICAgICAgICAgICAgICAgfCAgMiArLQog ZHJpdmVycy9tZC9kbS1jYWNoZS1wb2xpY3ktbXEuYyAgICAgfCAgNCArLQogZHJpdmVycy9tZC9k bS1jYWNoZS10YXJnZXQuYyAgICAgICAgfCAxNiArKysrLS0tCiBkcml2ZXJzL21kL2RtLWNyeXB0 LmMgICAgICAgICAgICAgICB8IDIwICsrKystLS0tCiBkcml2ZXJzL21kL2RtLWRlbGF5LmMgICAg ICAgICAgICAgICB8ICA3ICstLQogZHJpdmVycy9tZC9kbS1mbGFrZXkuYyAgICAgICAgICAgICAg fCAgNyArLS0KIGRyaXZlcnMvbWQvZG0taW8uYyAgICAgICAgICAgICAgICAgIHwgIDcgKy0tCiBk cml2ZXJzL21kL2RtLWxpbmVhci5jICAgICAgICAgICAgICB8ICAzICstCiBkcml2ZXJzL21kL2Rt LXJhaWQxLmMgICAgICAgICAgICAgICB8IDE2ICsrKy0tLS0KIGRyaXZlcnMvbWQvZG0tcmVnaW9u LWhhc2guYyAgICAgICAgIHwgIDMgKy0KIGRyaXZlcnMvbWQvZG0tc25hcC5jICAgICAgICAgICAg ICAgIHwgMTMgKysrLS0tCiBkcml2ZXJzL21kL2RtLXN0cmlwZS5jICAgICAgICAgICAgICB8IDEz ICsrKystLQogZHJpdmVycy9tZC9kbS1zd2l0Y2guYyAgICAgICAgICAgICAgfCAgNCArLQogZHJp dmVycy9tZC9kbS10aGluLmMgICAgICAgICAgICAgICAgfCAyMyArKysrKystLS0tCiBkcml2ZXJz L21kL2RtLXZlcml0eS5jICAgICAgICAgICAgICB8ICA5ICsrLS0KIGRyaXZlcnMvbWQvZG0uYyAg ICAgICAgICAgICAgICAgICAgIHwgMjEgKysrKystLS0tCiBkcml2ZXJzL21kL2ZhdWx0eS5jICAg ICAgICAgICAgICAgICB8IDE5ICsrKysrLS0tCiBkcml2ZXJzL21kL2xpbmVhci5jICAgICAgICAg ICAgICAgICB8IDEyICsrLS0tCiBkcml2ZXJzL21kL21kLmMgICAgICAgICAgICAgICAgICAgICB8 IDEwICsrLS0KIGRyaXZlcnMvbWQvbXVsdGlwYXRoLmMgICAgICAgICAgICAgIHwgMTMgKysrLS0t CiBkcml2ZXJzL21kL3JhaWQwLmMgICAgICAgICAgICAgICAgICB8IDE2ICsrKystLS0KIGRyaXZl cnMvbWQvcmFpZDEuYyAgICAgICAgICAgICAgICAgIHwgNjMgKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQogZHJpdmVycy9tZC9yYWlkMTAuYyAgICAgICAgICAgICAgICAgfCA5MSArKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL21kL3JhaWQ1LmMgICAgICAgICAg ICAgICAgICB8IDcyICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3MzOTAv YmxvY2svZGNzc2Jsay5jICAgICAgICB8ICA1ICstCiBkcml2ZXJzL3MzOTAvYmxvY2sveHByYW0u YyAgICAgICAgICB8ICA5ICsrLS0KIGRyaXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jICAg IHwgIDIgKy0KIGRyaXZlcnMvc3RhZ2luZy96cmFtL3pyYW1fZHJ2LmMgICAgIHwgMTQgKysrLS0t CiBkcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9pYmxvY2suYyB8ICAyICstCiBmcy9iaW8taW50 ZWdyaXR5LmMgICAgICAgICAgICAgICAgICB8ICA4ICsrLS0KIGZzL2Jpby5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgNTYgKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGZzL2J0cmZzL2No ZWNrLWludGVncml0eS5jICAgICAgICAgIHwgMTAgKystLQogZnMvYnRyZnMvY29tcHJlc3Npb24u YyAgICAgICAgICAgICAgfCAxNyArKystLS0tCiBmcy9idHJmcy9leHRlbnRfaW8uYyAgICAgICAg ICAgICAgICB8IDE2ICsrKy0tLS0KIGZzL2J0cmZzL2ZpbGUtaXRlbS5jICAgICAgICAgICAgICAg IHwgMTUgKysrLS0tCiBmcy9idHJmcy9pbm9kZS5jICAgICAgICAgICAgICAgICAgICB8IDE5ICsr KystLS0tCiBmcy9idHJmcy9yYWlkNTYuYyAgICAgICAgICAgICAgICAgICB8IDIyICsrKystLS0t LQogZnMvYnRyZnMvc2NydWIuYyAgICAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMvYnRy ZnMvdm9sdW1lcy5jICAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMvYnVmZmVyLmMgICAg ICAgICAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMvZGlyZWN0LWlvLmMgICAgICAgICAg ICAgICAgICAgICAgfCAgNCArLQogZnMvZXh0NC9wYWdlLWlvLmMgICAgICAgICAgICAgICAgICAg fCAgNCArLQogZnMvZjJmcy9kYXRhLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMv ZjJmcy9zZWdtZW50LmMgICAgICAgICAgICAgICAgICAgfCAgMyArLQogZnMvZ2ZzMi9sb3BzLmMg ICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQogZnMvZ2ZzMi9vcHNfZnN0eXBlLmMgICAgICAg ICAgICAgICAgfCAgMiArLQogZnMvaGZzcGx1cy93cmFwcGVyLmMgICAgICAgICAgICAgICAgfCAg MiArLQogZnMvamZzL2pmc19sb2dtZ3IuYyAgICAgICAgICAgICAgICAgfCAxMiArKy0tLQogZnMv amZzL2pmc19tZXRhcGFnZS5jICAgICAgICAgICAgICAgfCAgOSArKy0tCiBmcy9sb2dmcy9kZXZf YmRldi5jICAgICAgICAgICAgICAgICB8IDIwICsrKystLS0tCiBmcy9tcGFnZS5jICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBmcy9uZnMvYmxvY2tsYXlvdXQvYmxvY2tsYXlvdXQu YyAgICB8ICA5ICsrLS0KIGZzL25pbGZzMi9zZWdidWYuYyAgICAgICAgICAgICAgICAgIHwgIDMg Ky0KIGZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMgICAgICAgIHwgIDIgKy0KIGZzL3hmcy94 ZnNfYW9wcy5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGZzL3hmcy94ZnNfYnVmLmMgICAg ICAgICAgICAgICAgICAgIHwgIDQgKy0KIGluY2x1ZGUvbGludXgvYmlvLmggICAgICAgICAgICAg ICAgIHwgMTYgKysrLS0tLQogaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaCAgICAgICAgICAgfCAx OSArKysrKy0tLQogaW5jbHVkZS90cmFjZS9ldmVudHMvYmNhY2hlLmggICAgICAgfCAyNiArKysr Ky0tLS0tLQogaW5jbHVkZS90cmFjZS9ldmVudHMvYmxvY2suaCAgICAgICAgfCAyNiArKysrKy0t LS0tLQogaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oICAgICAgICAgfCAgNCArLQoga2VybmVs L3Bvd2VyL2Jsb2NrX2lvLmMgICAgICAgICAgICAgfCAgMiArLQoga2VybmVsL3RyYWNlL2Jsa3Ry YWNlLmMgICAgICAgICAgICAgfCAxNSArKystLS0KIG1tL3BhZ2VfaW8uYyAgICAgICAgICAgICAg ICAgICAgICAgIHwgMTAgKystLQogMTA2IGZpbGVzIGNoYW5nZWQsIDY4OSBpbnNlcnRpb25zKCsp LCA2MTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW9k b2MudHh0IGIvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW9kb2MudHh0CmluZGV4IDhkZjVlOGUuLjIx MDFlNzEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dAorKysgYi9E b2N1bWVudGF0aW9uL2Jsb2NrL2Jpb2RvYy50eHQKQEAgLTQ0NywxNCArNDQ3LDEzIEBAIHN0cnVj dCBiaW9fdmVjIHsKICAqIG1haW4gdW5pdCBvZiBJL08gZm9yIHRoZSBibG9jayBsYXllciBhbmQg bG93ZXIgbGF5ZXJzIChpZSBkcml2ZXJzKQogICovCiBzdHJ1Y3QgYmlvIHsKLSAgICAgICBzZWN0 b3JfdCAgICAgICAgICAgIGJpX3NlY3RvcjsKICAgICAgICBzdHJ1Y3QgYmlvICAgICAgICAgICpi aV9uZXh0OyAgICAvKiByZXF1ZXN0IHF1ZXVlIGxpbmsgKi8KICAgICAgICBzdHJ1Y3QgYmxvY2tf ZGV2aWNlICpiaV9iZGV2OwkvKiB0YXJnZXQgZGV2aWNlICovCiAgICAgICAgdW5zaWduZWQgbG9u ZyAgICAgICBiaV9mbGFnczsgICAgLyogc3RhdHVzLCBjb21tYW5kLCBldGMgKi8KICAgICAgICB1 bnNpZ25lZCBsb25nICAgICAgIGJpX3J3OyAgICAgICAvKiBsb3cgYml0czogci93LCBoaWdoOiBw cmlvcml0eSAqLwogCiAgICAgICAgdW5zaWduZWQgaW50CWJpX3ZjbnQ7ICAgICAvKiBob3cgbWF5 IGJpb192ZWMncyAqLwotICAgICAgIHVuc2lnbmVkIGludAliaV9pZHg7CQkvKiBjdXJyZW50IGlu ZGV4IGludG8gYmlvX3ZlYyBhcnJheSAqLworICAgICAgIHN0cnVjdCBidmVjX2l0ZXIJYmlfaXRl cjsJLyogY3VycmVudCBpbmRleCBpbnRvIGJpb192ZWMgYXJyYXkgKi8KIAogICAgICAgIHVuc2ln bmVkIGludAliaV9zaXplOyAgICAgLyogdG90YWwgc2l6ZSBpbiBieXRlcyAqLwogICAgICAgIHVu c2lnbmVkIHNob3J0IAliaV9waHlzX3NlZ21lbnRzOyAvKiBzZWdtZW50cyBhZnRlciBwaHlzYWRk ciBjb2FsZXNjZSovCkBAIC00ODAsNyArNDc5LDcgQEAgV2l0aCB0aGlzIG11bHRpcGFnZSBiaW8g ZGVzaWduOgogLSBDb2RlIHRoYXQgdHJhdmVyc2VzIHRoZSByZXEgbGlzdCBjYW4gZmluZCBhbGwg dGhlIHNlZ21lbnRzIG9mIGEgYmlvCiAgIGJ5IHVzaW5nIHJxX2Zvcl9lYWNoX3NlZ21lbnQuICBU aGlzIGhhbmRsZXMgdGhlIGZhY3QgdGhhdCBhIHJlcXVlc3QKICAgaGFzIG11bHRpcGxlIGJpb3Ms IGVhY2ggb2Ygd2hpY2ggY2FuIGhhdmUgbXVsdGlwbGUgc2VnbWVudHMuCi0tIERyaXZlcnMgd2hp Y2ggY2FuJ3QgcHJvY2VzcyBhIGxhcmdlIGJpbyBpbiBvbmUgc2hvdCBjYW4gdXNlIHRoZSBiaV9p ZHgKKy0gRHJpdmVycyB3aGljaCBjYW4ndCBwcm9jZXNzIGEgbGFyZ2UgYmlvIGluIG9uZSBzaG90 IGNhbiB1c2UgdGhlIGJpX2l0ZXIKICAgZmllbGQgdG8ga2VlcCB0cmFjayBvZiB0aGUgbmV4dCBi aW9fdmVjIGVudHJ5IHRvIHByb2Nlc3MuCiAgIChlLmcgYSAxTUIgYmlvX3ZlYyBuZWVkcyB0byBi ZSBoYW5kbGVkIGluIG1heCAxMjhrQiBjaHVua3MgZm9yIElERSkKICAgW1RCRDogU2hvdWxkIHBy ZWZlcmFibHkgYWxzbyBoYXZlIGEgYmlfdm9mZnNldCBhbmQgYmlfdmxlbiB0byBhdm9pZCBtb2Rp ZnlpbmcKQEAgLTU4OSw3ICs1ODgsNyBAQCBkcml2ZXIgc2hvdWxkIG5vdCBtb2RpZnkgdGhlc2Ug dmFsdWVzLiBUaGUgYmxvY2sgbGF5ZXIgc2V0cyB1cCB0aGUKIG5yX3NlY3RvcnMgYW5kIGN1cnJl bnRfbnJfc2VjdG9ycyBmaWVsZHMgKGJhc2VkIG9uIHRoZSBjb3JyZXNwb25kaW5nCiBoYXJkX3h4 eCB2YWx1ZXMgYW5kIHRoZSBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQpIGFuZCB1cGRhdGVz IGl0IG9uCiBldmVyeSB0cmFuc2ZlciB0aGF0IGludm9rZXMgZW5kX3RoYXRfcmVxdWVzdF9maXJz dC4gSXQgZG9lcyB0aGUgc2FtZSBmb3IgdGhlCi1idWZmZXIsIGJpbywgYmlvLT5iaV9pZHggZmll bGRzIHRvby4KK2J1ZmZlciwgYmlvLCBiaW8tPmJpX2l0ZXIgZmllbGRzIHRvby4KIAogVGhlIGJ1 ZmZlciBmaWVsZCBpcyBqdXN0IGEgdmlydHVhbCBhZGRyZXNzIG1hcHBpbmcgb2YgdGhlIGN1cnJl bnQgc2VnbWVudAogb2YgdGhlIGkvbyBidWZmZXIgaW4gY2FzZXMgd2hlcmUgdGhlIGJ1ZmZlciBy ZXNpZGVzIGluIGxvdy1tZW1vcnkuIEZvciBoaWdoCmRpZmYgLS1naXQgYS9hcmNoL202OGsvZW11 L25mYmxvY2suYyBiL2FyY2gvbTY4ay9lbXUvbmZibG9jay5jCmluZGV4IGUzMDExMzMuLjkwNzBk NmMgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9lbXUvbmZibG9jay5jCisrKyBiL2FyY2gvbTY4ay9l bXUvbmZibG9jay5jCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyB2b2lkIG5maGRfbWFrZV9yZXF1 ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxdWV1ZSwgc3RydWN0IGJpbyAqYmlvKQogCXN0cnVj dCBuZmhkX2RldmljZSAqZGV2ID0gcXVldWUtPnF1ZXVlZGF0YTsKIAlzdHJ1Y3QgYmlvX3ZlYyAq YnZlYzsKIAlpbnQgaSwgZGlyLCBsZW4sIHNoaWZ0OwotCXNlY3Rvcl90IHNlYyA9IGJpby0+Ymlf c2VjdG9yOworCXNlY3Rvcl90IHNlYyA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAKIAlkaXIg PSBiaW9fZGF0YV9kaXIoYmlvKTsKIAlzaGlmdCA9IGRldi0+YnNoaWZ0OwpkaWZmIC0tZ2l0IGEv YXJjaC9wb3dlcnBjL3N5c2Rldi9heG9ucmFtLmMgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2F4b25y YW0uYwppbmRleCAxYzE2MTQxLi5mMzNiY2JhIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvc3lz ZGV2L2F4b25yYW0uYworKysgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2F4b25yYW0uYwpAQCAtMTEz LDcgKzExMyw4IEBAIGF4b25fcmFtX21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cXVldWUsIHN0cnVjdCBiaW8gKmJpbykKIAl1bnNpZ25lZCBpbnQgdHJhbnNmZXJlZDsKIAl1bnNp Z25lZCBzaG9ydCBpZHg7CiAKLQlwaHlzX21lbSA9IGJhbmstPmlvX2FkZHIgKyAoYmlvLT5iaV9z ZWN0b3IgPDwgQVhPTl9SQU1fU0VDVE9SX1NISUZUKTsKKwlwaHlzX21lbSA9IGJhbmstPmlvX2Fk ZHIgKyAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PAorCQkJCSAgICBBWE9OX1JBTV9TRUNUT1Jf U0hJRlQpOwogCXBoeXNfZW5kID0gYmFuay0+aW9fYWRkciArIGJhbmstPnNpemU7CiAJdHJhbnNm ZXJlZCA9IDA7CiAJYmlvX2Zvcl9lYWNoX3NlZ21lbnQodmVjLCBiaW8sIGlkeCkgewpkaWZmIC0t Z2l0IGEvYmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmMKaW5kZXggOTNhMThkMS4u MGVjMTM0MDkgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1jb3JlLmMKKysrIGIvYmxvY2svYmxrLWNv cmUuYwpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyB2b2lkIHJlcV9iaW9fZW5kaW8oc3RydWN0 IHJlcXVlc3QgKnJxLCBzdHJ1Y3QgYmlvICpiaW8sCiAJYmlvX2FkdmFuY2UoYmlvLCBuYnl0ZXMp OwogCiAJLyogZG9uJ3QgYWN0dWFsbHkgZmluaXNoIGJpbyBpZiBpdCdzIHBhcnQgb2YgZmx1c2gg c2VxdWVuY2UgKi8KLQlpZiAoYmlvLT5iaV9zaXplID09IDAgJiYgIShycS0+Y21kX2ZsYWdzICYg UkVRX0ZMVVNIX1NFUSkpCisJaWYgKGJpby0+YmlfaXRlci5iaV9zaXplID09IDAgJiYgIShycS0+ Y21kX2ZsYWdzICYgUkVRX0ZMVVNIX1NFUSkpCiAJCWJpb19lbmRpbyhiaW8sIGVycm9yKTsKIH0K IApAQCAtMTMzMyw3ICsxMzMzLDcgQEAgdm9pZCBibGtfYWRkX3JlcXVlc3RfcGF5bG9hZChzdHJ1 Y3QgcmVxdWVzdCAqcnEsIHN0cnVjdCBwYWdlICpwYWdlLAogCWJpby0+YmlfaW9fdmVjLT5idl9v ZmZzZXQgPSAwOwogCWJpby0+YmlfaW9fdmVjLT5idl9sZW4gPSBsZW47CiAKLQliaW8tPmJpX3Np emUgPSBsZW47CisJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBsZW47CiAJYmlvLT5iaV92Y250ID0g MTsKIAliaW8tPmJpX3BoeXNfc2VnbWVudHMgPSAxOwogCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBz dGF0aWMgYm9vbCBiaW9fYXR0ZW1wdF9iYWNrX21lcmdlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgcmVxdWVzdCAqcmVxLAogCiAJcmVxLT5iaW90YWlsLT5iaV9uZXh0ID0gYmlvOwog CXJlcS0+YmlvdGFpbCA9IGJpbzsKLQlyZXEtPl9fZGF0YV9sZW4gKz0gYmlvLT5iaV9zaXplOwor CXJlcS0+X19kYXRhX2xlbiArPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAlyZXEtPmlvcHJpbyA9 IGlvcHJpb19iZXN0KHJlcS0+aW9wcmlvLCBiaW9fcHJpbyhiaW8pKTsKIAogCWRyaXZlX3N0YXRf YWNjdChyZXEsIDApOwpAQCAtMTM4Nyw4ICsxMzg3LDggQEAgc3RhdGljIGJvb2wgYmlvX2F0dGVt cHRfZnJvbnRfbWVyZ2Uoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCiAJICogbm90IHRvdWNoIHJl cS0+YnVmZmVyIGVpdGhlci4uLgogCSAqLwogCXJlcS0+YnVmZmVyID0gYmlvX2RhdGEoYmlvKTsK LQlyZXEtPl9fc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7Ci0JcmVxLT5fX2RhdGFfbGVuICs9IGJp by0+Ymlfc2l6ZTsKKwlyZXEtPl9fc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwly ZXEtPl9fZGF0YV9sZW4gKz0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAJcmVxLT5pb3ByaW8gPSBp b3ByaW9fYmVzdChyZXEtPmlvcHJpbywgYmlvX3ByaW8oYmlvKSk7CiAKIAlkcml2ZV9zdGF0X2Fj Y3QocmVxLCAwKTsKQEAgLTE0NTcsNyArMTQ1Nyw3IEBAIHZvaWQgaW5pdF9yZXF1ZXN0X2Zyb21f YmlvKHN0cnVjdCByZXF1ZXN0ICpyZXEsIHN0cnVjdCBiaW8gKmJpbykKIAkJcmVxLT5jbWRfZmxh Z3MgfD0gUkVRX0ZBSUxGQVNUX01BU0s7CiAKIAlyZXEtPmVycm9ycyA9IDA7Ci0JcmVxLT5fX3Nl Y3RvciA9IGJpby0+Ymlfc2VjdG9yOworCXJlcS0+X19zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yOwogCXJlcS0+aW9wcmlvID0gYmlvX3ByaW8oYmlvKTsKIAlibGtfcnFfYmlvX3ByZXAo cmVxLT5xLCByZXEsIGJpbyk7CiB9CkBAIC0xNTgzLDEyICsxNTgzLDEyIEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBibGtfcGFydGl0aW9uX3JlbWFwKHN0cnVjdCBiaW8gKmJpbykKIAlpZiAoYmlvX3Nl Y3RvcnMoYmlvKSAmJiBiZGV2ICE9IGJkZXYtPmJkX2NvbnRhaW5zKSB7CiAJCXN0cnVjdCBoZF9z dHJ1Y3QgKnAgPSBiZGV2LT5iZF9wYXJ0OwogCi0JCWJpby0+Ymlfc2VjdG9yICs9IHAtPnN0YXJ0 X3NlY3Q7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgKz0gcC0+c3RhcnRfc2VjdDsKIAkJYmlv LT5iaV9iZGV2ID0gYmRldi0+YmRfY29udGFpbnM7CiAKIAkJdHJhY2VfYmxvY2tfYmlvX3JlbWFw KGJkZXZfZ2V0X3F1ZXVlKGJpby0+YmlfYmRldiksIGJpbywKIAkJCQkgICAgICBiZGV2LT5iZF9k ZXYsCi0JCQkJICAgICAgYmlvLT5iaV9zZWN0b3IgLSBwLT5zdGFydF9zZWN0KTsKKwkJCQkgICAg ICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIC0gcC0+c3RhcnRfc2VjdCk7CiAJfQogfQogCkBAIC0x NjU0LDcgKzE2NTQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBiaW9fY2hlY2tfZW9kKHN0cnVjdCBi aW8gKmJpbywgdW5zaWduZWQgaW50IG5yX3NlY3RvcnMpCiAJLyogVGVzdCBkZXZpY2Ugb3IgcGFy dGl0aW9uIHNpemUsIHdoZW4ga25vd24uICovCiAJbWF4c2VjdG9yID0gaV9zaXplX3JlYWQoYmlv LT5iaV9iZGV2LT5iZF9pbm9kZSkgPj4gOTsKIAlpZiAobWF4c2VjdG9yKSB7Ci0JCXNlY3Rvcl90 IHNlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCQlzZWN0b3JfdCBzZWN0b3IgPSBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yOwogCiAJCWlmIChtYXhzZWN0b3IgPCBucl9zZWN0b3JzIHx8IG1heHNlY3Rv ciAtIG5yX3NlY3RvcnMgPCBzZWN0b3IpIHsKIAkJCS8qCkBAIC0xNjkwLDcgKzE2OTAsNyBAQCBn ZW5lcmljX21ha2VfcmVxdWVzdF9jaGVja3Moc3RydWN0IGJpbyAqYmlvKQogCQkgICAgICAgImdl bmVyaWNfbWFrZV9yZXF1ZXN0OiBUcnlpbmcgdG8gYWNjZXNzICIKIAkJCSJub25leGlzdGVudCBi bG9jay1kZXZpY2UgJXMgKCVMdSlcbiIsCiAJCQliZGV2bmFtZShiaW8tPmJpX2JkZXYsIGIpLAot CQkJKGxvbmcgbG9uZykgYmlvLT5iaV9zZWN0b3IpOworCQkJKGxvbmcgbG9uZykgYmlvLT5iaV9p dGVyLmJpX3NlY3Rvcik7CiAJCWdvdG8gZW5kX2lvOwogCX0KIApAQCAtMTcwNCw5ICsxNzA0LDkg QEAgZ2VuZXJpY19tYWtlX3JlcXVlc3RfY2hlY2tzKHN0cnVjdCBiaW8gKmJpbykKIAl9CiAKIAlw YXJ0ID0gYmlvLT5iaV9iZGV2LT5iZF9wYXJ0OwotCWlmIChzaG91bGRfZmFpbF9yZXF1ZXN0KHBh cnQsIGJpby0+Ymlfc2l6ZSkgfHwKKwlpZiAoc2hvdWxkX2ZhaWxfcmVxdWVzdChwYXJ0LCBiaW8t PmJpX2l0ZXIuYmlfc2l6ZSkgfHwKIAkgICAgc2hvdWxkX2ZhaWxfcmVxdWVzdCgmcGFydF90b19k aXNrKHBhcnQpLT5wYXJ0MCwKLQkJCQliaW8tPmJpX3NpemUpKQorCQkJCWJpby0+YmlfaXRlci5i aV9zaXplKSkKIAkJZ290byBlbmRfaW87CiAKIAkvKgpAQCAtMTg2NSw3ICsxODY1LDcgQEAgdm9p ZCBzdWJtaXRfYmlvKGludCBydywgc3RydWN0IGJpbyAqYmlvKQogCQlpZiAocncgJiBXUklURSkg ewogCQkJY291bnRfdm1fZXZlbnRzKFBHUEdPVVQsIGNvdW50KTsKIAkJfSBlbHNlIHsKLQkJCXRh c2tfaW9fYWNjb3VudF9yZWFkKGJpby0+Ymlfc2l6ZSk7CisJCQl0YXNrX2lvX2FjY291bnRfcmVh ZChiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCQljb3VudF92bV9ldmVudHMoUEdQR0lOLCBjb3Vu dCk7CiAJCX0KIApAQCAtMTg3NCw3ICsxODc0LDcgQEAgdm9pZCBzdWJtaXRfYmlvKGludCBydywg c3RydWN0IGJpbyAqYmlvKQogCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzKCVkKTogJXMgYmxvY2sg JUx1IG9uICVzICgldSBzZWN0b3JzKVxuIiwKIAkJCWN1cnJlbnQtPmNvbW0sIHRhc2tfcGlkX25y KGN1cnJlbnQpLAogCQkJCShydyAmIFdSSVRFKSA/ICJXUklURSIgOiAiUkVBRCIsCi0JCQkJKHVu c2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3RvciwKKwkJCQkodW5zaWduZWQgbG9uZyBsb25n KWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJCQkJYmRldm5hbWUoYmlvLT5iaV9iZGV2LCBiKSwK IAkJCQljb3VudCk7CiAJCX0KQEAgLTIwMDcsNyArMjAwNyw3IEBAIHVuc2lnbmVkIGludCBibGtf cnFfZXJyX2J5dGVzKGNvbnN0IHN0cnVjdCByZXF1ZXN0ICpycSkKIAlmb3IgKGJpbyA9IHJxLT5i aW87IGJpbzsgYmlvID0gYmlvLT5iaV9uZXh0KSB7CiAJCWlmICgoYmlvLT5iaV9ydyAmIGZmKSAh PSBmZikKIAkJCWJyZWFrOwotCQlieXRlcyArPSBiaW8tPmJpX3NpemU7CisJCWJ5dGVzICs9IGJp by0+YmlfaXRlci5iaV9zaXplOwogCX0KIAogCS8qIHRoaXMgY291bGQgbGVhZCB0byBpbmZpbml0 ZSBsb29wICovCkBAIC0yMzM1LDkgKzIzMzUsOSBAQCBib29sIGJsa191cGRhdGVfcmVxdWVzdChz dHJ1Y3QgcmVxdWVzdCAqcmVxLCBpbnQgZXJyb3IsIHVuc2lnbmVkIGludCBucl9ieXRlcykKIAl0 b3RhbF9ieXRlcyA9IDA7CiAJd2hpbGUgKHJlcS0+YmlvKSB7CiAJCXN0cnVjdCBiaW8gKmJpbyA9 IHJlcS0+YmlvOwotCQl1bnNpZ25lZCBiaW9fYnl0ZXMgPSBtaW4oYmlvLT5iaV9zaXplLCBucl9i eXRlcyk7CisJCXVuc2lnbmVkIGJpb19ieXRlcyA9IG1pbihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSwg bnJfYnl0ZXMpOwogCi0JCWlmIChiaW9fYnl0ZXMgPT0gYmlvLT5iaV9zaXplKQorCQlpZiAoYmlv X2J5dGVzID09IGJpby0+YmlfaXRlci5iaV9zaXplKQogCQkJcmVxLT5iaW8gPSBiaW8tPmJpX25l eHQ7CiAKIAkJcmVxX2Jpb19lbmRpbyhyZXEsIGJpbywgYmlvX2J5dGVzLCBlcnJvcik7CkBAIC0y Njg2LDcgKzI2ODYsNyBAQCB2b2lkIGJsa19ycV9iaW9fcHJlcChzdHJ1Y3QgcmVxdWVzdF9xdWV1 ZSAqcSwgc3RydWN0IHJlcXVlc3QgKnJxLAogCQlycS0+bnJfcGh5c19zZWdtZW50cyA9IGJpb19w aHlzX3NlZ21lbnRzKHEsIGJpbyk7CiAJCXJxLT5idWZmZXIgPSBiaW9fZGF0YShiaW8pOwogCX0K LQlycS0+X19kYXRhX2xlbiA9IGJpby0+Ymlfc2l6ZTsKKwlycS0+X19kYXRhX2xlbiA9IGJpby0+ YmlfaXRlci5iaV9zaXplOwogCXJxLT5iaW8gPSBycS0+YmlvdGFpbCA9IGJpbzsKIAogCWlmIChi aW8tPmJpX2JkZXYpCmRpZmYgLS1naXQgYS9ibG9jay9ibGstZmx1c2guYyBiL2Jsb2NrL2Jsay1m bHVzaC5jCmluZGV4IGNjMmI4MjcuLjMyNDg5OTggMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1mbHVz aC5jCisrKyBiL2Jsb2NrL2Jsay1mbHVzaC5jCkBAIC00NDQsNyArNDQ0LDcgQEAgaW50IGJsa2Rl dl9pc3N1ZV9mbHVzaChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBnZnBfdCBnZnBfbWFzaywK IAkgKiBjb3BpZWQgZnJvbSBibGtfcnFfcG9zKHJxKS4KIAkgKi8KIAlpZiAoZXJyb3Jfc2VjdG9y KQotCQkqZXJyb3Jfc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7CisJCSplcnJvcl9zZWN0b3IgPSBi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCiAJaWYgKCFiaW9fZmxhZ2dlZChiaW8sIEJJT19VUFRP REFURSkpCiAJCXJldCA9IC1FSU87CmRpZmYgLS1naXQgYS9ibG9jay9ibGstbGliLmMgYi9ibG9j ay9ibGstbGliLmMKaW5kZXggZDZmNTBkNS4uMzI1MDYyMCAxMDA2NDQKLS0tIGEvYmxvY2svYmxr LWxpYi5jCisrKyBiL2Jsb2NrL2Jsay1saWIuYwpAQCAtMTEwLDEyICsxMTAsMTIgQEAgaW50IGJs a2Rldl9pc3N1ZV9kaXNjYXJkKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNl Y3RvciwKIAkJCXJlcV9zZWN0cyA9IGVuZF9zZWN0IC0gc2VjdG9yOwogCQl9CiAKLQkJYmlvLT5i aV9zZWN0b3IgPSBzZWN0b3I7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJ CWJpby0+YmlfZW5kX2lvID0gYmlvX2JhdGNoX2VuZF9pbzsKIAkJYmlvLT5iaV9iZGV2ID0gYmRl djsKIAkJYmlvLT5iaV9wcml2YXRlID0gJmJiOwogCi0JCWJpby0+Ymlfc2l6ZSA9IHJlcV9zZWN0 cyA8PCA5OworCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IHJlcV9zZWN0cyA8PCA5OwogCQlucl9z ZWN0cyAtPSByZXFfc2VjdHM7CiAJCXNlY3RvciA9IGVuZF9zZWN0OwogCkBAIC0xNzYsNyArMTc2 LDcgQEAgaW50IGJsa2Rldl9pc3N1ZV93cml0ZV9zYW1lKHN0cnVjdCBibG9ja19kZXZpY2UgKmJk ZXYsIHNlY3Rvcl90IHNlY3RvciwKIAkJCWJyZWFrOwogCQl9CiAKLQkJYmlvLT5iaV9zZWN0b3Ig PSBzZWN0b3I7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJCWJpby0+Ymlf ZW5kX2lvID0gYmlvX2JhdGNoX2VuZF9pbzsKIAkJYmlvLT5iaV9iZGV2ID0gYmRldjsKIAkJYmlv LT5iaV9wcml2YXRlID0gJmJiOwpAQCAtMTg2LDExICsxODYsMTEgQEAgaW50IGJsa2Rldl9pc3N1 ZV93cml0ZV9zYW1lKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHNlY3Rvcl90IHNlY3RvciwK IAkJYmlvLT5iaV9pb192ZWMtPmJ2X2xlbiA9IGJkZXZfbG9naWNhbF9ibG9ja19zaXplKGJkZXYp OwogCiAJCWlmIChucl9zZWN0cyA+IG1heF93cml0ZV9zYW1lX3NlY3RvcnMpIHsKLQkJCWJpby0+ Ymlfc2l6ZSA9IG1heF93cml0ZV9zYW1lX3NlY3RvcnMgPDwgOTsKKwkJCWJpby0+YmlfaXRlci5i aV9zaXplID0gbWF4X3dyaXRlX3NhbWVfc2VjdG9ycyA8PCA5OwogCQkJbnJfc2VjdHMgLT0gbWF4 X3dyaXRlX3NhbWVfc2VjdG9yczsKIAkJCXNlY3RvciArPSBtYXhfd3JpdGVfc2FtZV9zZWN0b3Jz OwogCQl9IGVsc2UgewotCQkJYmlvLT5iaV9zaXplID0gbnJfc2VjdHMgPDwgOTsKKwkJCWJpby0+ YmlfaXRlci5iaV9zaXplID0gbnJfc2VjdHMgPDwgOTsKIAkJCW5yX3NlY3RzID0gMDsKIAkJfQog CkBAIC0yNDIsNyArMjQyLDcgQEAgaW50IF9fYmxrZGV2X2lzc3VlX3plcm9vdXQoc3RydWN0IGJs b2NrX2RldmljZSAqYmRldiwgc2VjdG9yX3Qgc2VjdG9yLAogCQkJYnJlYWs7CiAJCX0KIAotCQli aW8tPmJpX3NlY3RvciA9IHNlY3RvcjsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3Rv cjsKIAkJYmlvLT5iaV9iZGV2ICAgPSBiZGV2OwogCQliaW8tPmJpX2VuZF9pbyA9IGJpb19iYXRj aF9lbmRfaW87CiAJCWJpby0+YmlfcHJpdmF0ZSA9ICZiYjsKZGlmZiAtLWdpdCBhL2Jsb2NrL2Js ay1tYXAuYyBiL2Jsb2NrL2Jsay1tYXAuYwppbmRleCA2MjNlMWNkLi5hZTRhZTEwIDEwMDY0NAot LS0gYS9ibG9jay9ibGstbWFwLmMKKysrIGIvYmxvY2svYmxrLW1hcC5jCkBAIC0yMCw3ICsyMCw3 IEBAIGludCBibGtfcnFfYXBwZW5kX2JpbyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0 IHJlcXVlc3QgKnJxLAogCQlycS0+YmlvdGFpbC0+YmlfbmV4dCA9IGJpbzsKIAkJcnEtPmJpb3Rh aWwgPSBiaW87CiAKLQkJcnEtPl9fZGF0YV9sZW4gKz0gYmlvLT5iaV9zaXplOworCQlycS0+X19k YXRhX2xlbiArPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC03 Niw3ICs3Niw3IEBAIHN0YXRpYyBpbnQgX19ibGtfcnFfbWFwX3VzZXIoc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEsIHN0cnVjdCByZXF1ZXN0ICpycSwKIAogCXJldCA9IGJsa19ycV9hcHBlbmRfYmlv KHEsIHJxLCBiaW8pOwogCWlmICghcmV0KQotCQlyZXR1cm4gYmlvLT5iaV9zaXplOworCQlyZXR1 cm4gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAkvKiBpZiBpdCB3YXMgYm91Y25lZCB3ZSBtdXN0 IGNhbGwgdGhlIGVuZCBpbyBmdW5jdGlvbiAqLwogCWJpb19lbmRpbyhiaW8sIDApOwpAQCAtMjIw LDcgKzIyMCw3IEBAIGludCBibGtfcnFfbWFwX3VzZXJfaW92KHN0cnVjdCByZXF1ZXN0X3F1ZXVl ICpxLCBzdHJ1Y3QgcmVxdWVzdCAqcnEsCiAJaWYgKElTX0VSUihiaW8pKQogCQlyZXR1cm4gUFRS X0VSUihiaW8pOwogCi0JaWYgKGJpby0+Ymlfc2l6ZSAhPSBsZW4pIHsKKwlpZiAoYmlvLT5iaV9p dGVyLmJpX3NpemUgIT0gbGVuKSB7CiAJCS8qCiAJCSAqIEdyYWIgYW4gZXh0cmEgcmVmZXJlbmNl IHRvIHRoaXMgYmlvLCBhcyBiaW9fdW5tYXBfdXNlcigpCiAJCSAqIGV4cGVjdHMgdG8gYmUgYWJs ZSB0byBkcm9wIGl0IHR3aWNlIGFzIGl0IGhhcHBlbnMgb24gdGhlCmRpZmYgLS1naXQgYS9ibG9j ay9ibGstbWVyZ2UuYyBiL2Jsb2NrL2Jsay1tZXJnZS5jCmluZGV4IDVmMjQ0ODIuLjc3NTBiMjUg MTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tZXJnZS5jCisrKyBiL2Jsb2NrL2Jsay1tZXJnZS5jCkBA IC01MzIsOSArNTMyLDkgQEAgYm9vbCBibGtfcnFfbWVyZ2Vfb2soc3RydWN0IHJlcXVlc3QgKnJx LCBzdHJ1Y3QgYmlvICpiaW8pCiAKIGludCBibGtfdHJ5X21lcmdlKHN0cnVjdCByZXF1ZXN0ICpy cSwgc3RydWN0IGJpbyAqYmlvKQogewotCWlmIChibGtfcnFfcG9zKHJxKSArIGJsa19ycV9zZWN0 b3JzKHJxKSA9PSBiaW8tPmJpX3NlY3RvcikKKwlpZiAoYmxrX3JxX3BvcyhycSkgKyBibGtfcnFf c2VjdG9ycyhycSkgPT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcikKIAkJcmV0dXJuIEVMRVZBVE9S X0JBQ0tfTUVSR0U7Ci0JZWxzZSBpZiAoYmxrX3JxX3BvcyhycSkgLSBiaW9fc2VjdG9ycyhiaW8p ID09IGJpby0+Ymlfc2VjdG9yKQorCWVsc2UgaWYgKGJsa19ycV9wb3MocnEpIC0gYmlvX3NlY3Rv cnMoYmlvKSA9PSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKQogCQlyZXR1cm4gRUxFVkFUT1JfRlJP TlRfTUVSR0U7CiAJcmV0dXJuIEVMRVZBVE9SX05PX01FUkdFOwogfQpkaWZmIC0tZ2l0IGEvYmxv Y2svYmxrLXRocm90dGxlLmMgYi9ibG9jay9ibGstdGhyb3R0bGUuYwppbmRleCAwOGEzMmRmLi4x YjFiZWEwIDEwMDY0NAotLS0gYS9ibG9jay9ibGstdGhyb3R0bGUuYworKysgYi9ibG9jay9ibGst dGhyb3R0bGUuYwpAQCAtODY3LDE0ICs4NjcsMTQgQEAgc3RhdGljIGJvb2wgdGdfd2l0aF9pbl9i cHNfbGltaXQoc3RydWN0IHRocm90bF9ncnAgKnRnLCBzdHJ1Y3QgYmlvICpiaW8sCiAJZG9fZGl2 KHRtcCwgSFopOwogCWJ5dGVzX2FsbG93ZWQgPSB0bXA7CiAKLQlpZiAodGctPmJ5dGVzX2Rpc3Bb cnddICsgYmlvLT5iaV9zaXplIDw9IGJ5dGVzX2FsbG93ZWQpIHsKKwlpZiAodGctPmJ5dGVzX2Rp c3BbcnddICsgYmlvLT5iaV9pdGVyLmJpX3NpemUgPD0gYnl0ZXNfYWxsb3dlZCkgewogCQlpZiAo d2FpdCkKIAkJCSp3YWl0ID0gMDsKIAkJcmV0dXJuIDE7CiAJfQogCiAJLyogQ2FsYyBhcHByb3gg dGltZSB0byBkaXNwYXRjaCAqLwotCWV4dHJhX2J5dGVzID0gdGctPmJ5dGVzX2Rpc3BbcnddICsg YmlvLT5iaV9zaXplIC0gYnl0ZXNfYWxsb3dlZDsKKwlleHRyYV9ieXRlcyA9IHRnLT5ieXRlc19k aXNwW3J3XSArIGJpby0+YmlfaXRlci5iaV9zaXplIC0gYnl0ZXNfYWxsb3dlZDsKIAlqaWZmeV93 YWl0ID0gZGl2NjRfdTY0KGV4dHJhX2J5dGVzICogSFosIHRnLT5icHNbcnddKTsKIAogCWlmICgh amlmZnlfd2FpdCkKQEAgLTk3Nyw3ICs5NzcsNyBAQCBzdGF0aWMgdm9pZCB0aHJvdGxfY2hhcmdl X2JpbyhzdHJ1Y3QgdGhyb3RsX2dycCAqdGcsIHN0cnVjdCBiaW8gKmJpbykKIAlib29sIHJ3ID0g YmlvX2RhdGFfZGlyKGJpbyk7CiAKIAkvKiBDaGFyZ2UgdGhlIGJpbyB0byB0aGUgZ3JvdXAgKi8K LQl0Zy0+Ynl0ZXNfZGlzcFtyd10gKz0gYmlvLT5iaV9zaXplOworCXRnLT5ieXRlc19kaXNwW3J3 XSArPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAl0Zy0+aW9fZGlzcFtyd10rKzsKIAogCS8qCkBA IC05OTMsOCArOTkzLDggQEAgc3RhdGljIHZvaWQgdGhyb3RsX2NoYXJnZV9iaW8oc3RydWN0IHRo cm90bF9ncnAgKnRnLCBzdHJ1Y3QgYmlvICpiaW8pCiAJICovCiAJaWYgKCEoYmlvLT5iaV9ydyAm IFJFUV9USFJPVFRMRUQpKSB7CiAJCWJpby0+YmlfcncgfD0gUkVRX1RIUk9UVExFRDsKLQkJdGhy b3RsX3VwZGF0ZV9kaXNwYXRjaF9zdGF0cyh0Z190b19ibGtnKHRnKSwgYmlvLT5iaV9zaXplLAot CQkJCQkgICAgIGJpby0+YmlfcncpOworCQl0aHJvdGxfdXBkYXRlX2Rpc3BhdGNoX3N0YXRzKHRn X3RvX2Jsa2codGcpLAorCQkJCQkgICAgIGJpby0+YmlfaXRlci5iaV9zaXplLCBiaW8tPmJpX3J3 KTsKIAl9CiB9CiAKQEAgLTE0OTksNyArMTQ5OSw3IEBAIGJvb2wgYmxrX3Rocm90bF9iaW8oc3Ry dWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAodGcpIHsKIAkJaWYg KCF0Zy0+aGFzX3J1bGVzW3J3XSkgewogCQkJdGhyb3RsX3VwZGF0ZV9kaXNwYXRjaF9zdGF0cyh0 Z190b19ibGtnKHRnKSwKLQkJCQkJCSAgICAgYmlvLT5iaV9zaXplLCBiaW8tPmJpX3J3KTsKKwkJ CQkJYmlvLT5iaV9pdGVyLmJpX3NpemUsIGJpby0+YmlfcncpOwogCQkJZ290byBvdXRfdW5sb2Nr X3JjdTsKIAkJfQogCX0KQEAgLTE1NTUsNyArMTU1NSw3IEBAIGJvb2wgYmxrX3Rocm90bF9iaW8o c3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkvKiBvdXQtb2YtbGlt aXQsIHF1ZXVlIHRvIEB0ZyAqLwogCXRocm90bF9sb2coc3EsICJbJWNdIGJpby4gYmRpc3A9JWxs dSBzej0ldSBicHM9JWxsdSBpb2Rpc3A9JXUgaW9wcz0ldSBxdWV1ZWQ9JWQvJWQiLAogCQkgICBy dyA9PSBSRUFEID8gJ1InIDogJ1cnLAotCQkgICB0Zy0+Ynl0ZXNfZGlzcFtyd10sIGJpby0+Ymlf c2l6ZSwgdGctPmJwc1tyd10sCisJCSAgIHRnLT5ieXRlc19kaXNwW3J3XSwgYmlvLT5iaV9pdGVy LmJpX3NpemUsIHRnLT5icHNbcnddLAogCQkgICB0Zy0+aW9fZGlzcFtyd10sIHRnLT5pb3BzW3J3 XSwKIAkJICAgc3EtPm5yX3F1ZXVlZFtSRUFEXSwgc3EtPm5yX3F1ZXVlZFtXUklURV0pOwogCmRp ZmYgLS1naXQgYS9ibG9jay9lbGV2YXRvci5jIGIvYmxvY2svZWxldmF0b3IuYwppbmRleCA2Njgz OTRkLi44MDNlODU1IDEwMDY0NAotLS0gYS9ibG9jay9lbGV2YXRvci5jCisrKyBiL2Jsb2NrL2Vs ZXZhdG9yLmMKQEAgLTQzNCw3ICs0MzQsNyBAQCBpbnQgZWx2X21lcmdlKHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBzdHJ1Y3QgcmVxdWVzdCAqKnJlcSwgc3RydWN0IGJpbyAqYmlvKQogCS8qCiAJ ICogU2VlIGlmIG91ciBoYXNoIGxvb2t1cCBjYW4gZmluZCBhIHBvdGVudGlhbCBiYWNrbWVyZ2Uu CiAJICovCi0JX19ycSA9IGVsdl9ycWhhc2hfZmluZChxLCBiaW8tPmJpX3NlY3Rvcik7CisJX19y cSA9IGVsdl9ycWhhc2hfZmluZChxLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAlpZiAoX19y cSAmJiBlbHZfcnFfbWVyZ2Vfb2soX19ycSwgYmlvKSkgewogCQkqcmVxID0gX19ycTsKIAkJcmV0 dXJuIEVMRVZBVE9SX0JBQ0tfTUVSR0U7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2FvZS9h b2VjbWQuYyBiL2RyaXZlcnMvYmxvY2svYW9lL2FvZWNtZC5jCmluZGV4IDk5Y2I5NDQuLjNmMWEx OTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svYW9lL2FvZWNtZC5jCisrKyBiL2RyaXZlcnMv YmxvY2svYW9lL2FvZWNtZC5jCkBAIC05MzYsOCArOTM2LDggQEAgYnVmaW5pdChzdHJ1Y3QgYnVm ICpidWYsIHN0cnVjdCByZXF1ZXN0ICpycSwgc3RydWN0IGJpbyAqYmlvKQogCW1lbXNldChidWYs IDAsIHNpemVvZigqYnVmKSk7CiAJYnVmLT5ycSA9IHJxOwogCWJ1Zi0+YmlvID0gYmlvOwotCWJ1 Zi0+cmVzaWQgPSBiaW8tPmJpX3NpemU7Ci0JYnVmLT5zZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsK KwlidWYtPnJlc2lkID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CisJYnVmLT5zZWN0b3IgPSBiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yOwogCWJpb19wYWdlaW5jKGJpbyk7CiAJYnVmLT5idiA9IGJpb19p b3ZlYyhiaW8pOwogCWJ1Zi0+YnZfcmVzaWQgPSBidWYtPmJ2LT5idl9sZW47CkBAIC0xMTU5LDcg KzExNTksNyBAQCBhb2VfZW5kX3JlcXVlc3Qoc3RydWN0IGFvZWRldiAqZCwgc3RydWN0IHJlcXVl c3QgKnJxLCBpbnQgZmFzdGZhaWwpCiAJZG8gewogCQliaW8gPSBycS0+YmlvOwogCQlib2sgPSAh ZmFzdGZhaWwgJiYgdGVzdF9iaXQoQklPX1VQVE9EQVRFLCAmYmlvLT5iaV9mbGFncyk7Ci0JfSB3 aGlsZSAoX19ibGtfZW5kX3JlcXVlc3QocnEsIGJvayA/IDAgOiAtRUlPLCBiaW8tPmJpX3NpemUp KTsKKwl9IHdoaWxlIChfX2Jsa19lbmRfcmVxdWVzdChycSwgYm9rID8gMCA6IC1FSU8sIGJpby0+ YmlfaXRlci5iaV9zaXplKSk7CiAKIAkvKiBjZi4gaHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNi8x MC8zMS8yOCAqLwogCWlmICghZmFzdGZhaWwpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2Jy ZC5jIGIvZHJpdmVycy9ibG9jay9icmQuYwppbmRleCA5YmY0MzcxLi5lMjY5NTMyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2Jsb2NrL2JyZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svYnJkLmMKQEAgLTMz MywxMyArMzMzLDEzIEBAIHN0YXRpYyB2b2lkIGJyZF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVl c3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlpbnQgaTsKIAlpbnQgZXJyID0gLUVJTzsK IAotCXNlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCXNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9z ZWN0b3I7CiAJaWYgKGJpb19lbmRfc2VjdG9yKGJpbykgPiBnZXRfY2FwYWNpdHkoYmRldi0+YmRf ZGlzaykpCiAJCWdvdG8gb3V0OwogCiAJaWYgKHVubGlrZWx5KGJpby0+YmlfcncgJiBSRVFfRElT Q0FSRCkpIHsKIAkJZXJyID0gMDsKLQkJZGlzY2FyZF9mcm9tX2JyZChicmQsIHNlY3RvciwgYmlv LT5iaV9zaXplKTsKKwkJZGlzY2FyZF9mcm9tX2JyZChicmQsIHNlY3RvciwgYmlvLT5iaV9pdGVy LmJpX3NpemUpOwogCQlnb3RvIG91dDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2sv ZHJiZC9kcmJkX2FjdGxvZy5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKaW5k ZXggMjhjNzNjYS4uYTliMTNmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRf YWN0bG9nLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYWN0bG9nLmMKQEAgLTE1OSw3 ICsxNTksNyBAQCBzdGF0aWMgaW50IF9kcmJkX21kX3N5bmNfcGFnZV9pbyhzdHJ1Y3QgZHJiZF9j b25mICptZGV2LAogCiAJYmlvID0gYmlvX2FsbG9jX2RyYmQoR0ZQX05PSU8pOwogCWJpby0+Ymlf YmRldiA9IGJkZXYtPm1kX2JkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3I7CisJYmlvLT5i aV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAllcnIgPSAtRUlPOwogCWlmIChiaW9fYWRkX3Bh Z2UoYmlvLCBwYWdlLCBzaXplLCAwKSAhPSBzaXplKQogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX2JpdG1hcC5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2Ry YmRfYml0bWFwLmMKaW5kZXggNjRmYmI4My4uZDBkODQ3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9i bG9jay9kcmJkL2RyYmRfYml0bWFwLmMKKysrIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfYml0 bWFwLmMKQEAgLTEwMjgsNyArMTAyOCw3IEBAIHN0YXRpYyB2b2lkIGJtX3BhZ2VfaW9fYXN5bmMo c3RydWN0IGJtX2Fpb19jdHggKmN0eCwgaW50IHBhZ2VfbnIsIGludCBydykgX19tdXN0CiAJfSBl bHNlCiAJCXBhZ2UgPSBiLT5ibV9wYWdlc1twYWdlX25yXTsKIAliaW8tPmJpX2JkZXYgPSBtZGV2 LT5sZGV2LT5tZF9iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gb25fZGlza19zZWN0b3I7CisJYmlv LT5iaV9pdGVyLmJpX3NlY3RvciA9IG9uX2Rpc2tfc2VjdG9yOwogCS8qIGJpb19hZGRfcGFnZSBv ZiBhIHNpbmdsZSBwYWdlIHRvIGFuIGVtcHR5IGJpbyB3aWxsIGFsd2F5cyBzdWNjZWVkLAogCSAq IGFjY29yZGluZyB0byBhcGkuICBEbyB3ZSB3YW50IHRvIGFzc2VydCB0aGF0PyAqLwogCWJpb19h ZGRfcGFnZShiaW8sIHBhZ2UsIGxlbiwgMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL2Ry YmQvZHJiZF9yZWNlaXZlci5jIGIvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVjZWl2ZXIuYwpp bmRleCBjYzI5Y2QzLi5jZjZkMDcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJi ZF9yZWNlaXZlci5jCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlY2VpdmVyLmMKQEAg LTEzMzMsNyArMTMzMyw3IEBAIG5leHRfYmlvOgogCQlnb3RvIGZhaWw7CiAJfQogCS8qID4gcGVl cl9yZXEtPmkuc2VjdG9yLCB1bmxlc3MgdGhpcyBpcyB0aGUgZmlyc3QgYmlvICovCi0JYmlvLT5i aV9zZWN0b3IgPSBzZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAli aW8tPmJpX2JkZXYgPSBtZGV2LT5sZGV2LT5iYWNraW5nX2JkZXY7CiAJYmlvLT5iaV9ydyA9IHJ3 OwogCWJpby0+YmlfcHJpdmF0ZSA9IHBlZXJfcmVxOwpAQCAtMTM1Myw3ICsxMzUzLDcgQEAgbmV4 dF9iaW86CiAJCQkJZGV2X2VycihERVYsCiAJCQkJCSJiaW9fYWRkX3BhZ2UgZmFpbGVkIGZvciBs ZW49JXUsICIKIAkJCQkJImJpX3ZjbnQ9MCAoYmlfc2VjdG9yPSVsbHUpXG4iLAotCQkJCQlsZW4s ICh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IpOworCQkJCQlsZW4sICh1aW50NjRf dCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJCQllcnIgPSAtRU5PU1BDOwogCQkJCWdvdG8g ZmFpbDsKIAkJCX0KQEAgLTE2MTUsNyArMTYxNSw3IEBAIHN0YXRpYyBpbnQgcmVjdl9kbGVzc19y ZWFkKHN0cnVjdCBkcmJkX2NvbmYgKm1kZXYsIHN0cnVjdCBkcmJkX3JlcXVlc3QgKnJlcSwKIAlt ZGV2LT5yZWN2X2NudCArPSBkYXRhX3NpemU+Pjk7CiAKIAliaW8gPSByZXEtPm1hc3Rlcl9iaW87 Ci0JRF9BU1NFUlQoc2VjdG9yID09IGJpby0+Ymlfc2VjdG9yKTsKKwlEX0FTU0VSVChzZWN0b3Ig PT0gYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKIAliaW9fZm9yX2VhY2hfc2VnbWVudChidmVj LCBiaW8sIGkpIHsKIAkJdm9pZCAqbWFwcGVkID0ga21hcChidmVjLT5idl9wYWdlKSArIGJ2ZWMt PmJ2X29mZnNldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5jIGIv ZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMKaW5kZXggYzI0Mzc5Zi4uYTZiZWRhYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ibG9jay9kcmJkL2RyYmRfcmVxLmMKKysrIGIvZHJpdmVycy9ibG9j ay9kcmJkL2RyYmRfcmVxLmMKQEAgLTc3LDggKzc3LDggQEAgc3RhdGljIHN0cnVjdCBkcmJkX3Jl cXVlc3QgKmRyYmRfcmVxX25ldyhzdHJ1Y3QgZHJiZF9jb25mICptZGV2LAogCXJlcS0+ZXBvY2gg ICAgICAgPSAwOwogCiAJZHJiZF9jbGVhcl9pbnRlcnZhbCgmcmVxLT5pKTsKLQlyZXEtPmkuc2Vj dG9yICAgICA9IGJpb19zcmMtPmJpX3NlY3RvcjsKLQlyZXEtPmkuc2l6ZSAgICAgID0gYmlvX3Ny Yy0+Ymlfc2l6ZTsKKwlyZXEtPmkuc2VjdG9yICAgICA9IGJpb19zcmMtPmJpX2l0ZXIuYmlfc2Vj dG9yOworCXJlcS0+aS5zaXplICAgICAgPSBiaW9fc3JjLT5iaV9pdGVyLmJpX3NpemU7CiAJcmVx LT5pLmxvY2FsID0gdHJ1ZTsKIAlyZXEtPmkud2FpdGluZyA9IGZhbHNlOwogCkBAIC0xMjgwLDcg KzEyODAsNyBAQCB2b2lkIGRyYmRfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgYmlvICpiaW8pCiAJLyoKIAkgKiB3aGF0IHdlICJibGluZGx5IiBhc3N1bWU6CiAJ ICovCi0JRF9BU1NFUlQoSVNfQUxJR05FRChiaW8tPmJpX3NpemUsIDUxMikpOworCURfQVNTRVJU KElTX0FMSUdORUQoYmlvLT5iaV9pdGVyLmJpX3NpemUsIDUxMikpOwogCiAJaW5jX2FwX2Jpbyht ZGV2KTsKIAlfX2RyYmRfbWFrZV9yZXF1ZXN0KG1kZXYsIGJpbywgc3RhcnRfdGltZSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2Jsb2NrL2RyYmQvZHJiZF9yZXEuaCBiL2RyaXZlcnMvYmxvY2svZHJi ZC9kcmJkX3JlcS5oCmluZGV4IDk3OGNiMWEuLjI4ZTE1ZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv YmxvY2svZHJiZC9kcmJkX3JlcS5oCisrKyBiL2RyaXZlcnMvYmxvY2svZHJiZC9kcmJkX3JlcS5o CkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYmRfcmVxX21ha2VfcHJp dmF0ZV9iaW8oc3RydWN0IGRyYmRfcmVxdWVzdCAqcmVxLCBzdHJ1Y3QgYmkKIAogLyogU2hvcnQg bGl2ZWQgdGVtcG9yYXJ5IHN0cnVjdCBvbiB0aGUgc3RhY2suCiAgKiBXZSBjb3VsZCBzcXVpcnJl bCB0aGUgZXJyb3IgdG8gYmUgcmV0dXJuZWQgaW50bwotICogYmlvLT5iaV9zaXplLCBvciBzaW1p bGFyLiBCdXQgdGhhdCB3b3VsZCBiZSB0b28gdWdseS4gKi8KKyAqIGJpby0+YmlfaXRlci5iaV9z aXplLCBvciBzaW1pbGFyLiBCdXQgdGhhdCB3b3VsZCBiZSB0b28gdWdseS4gKi8KIHN0cnVjdCBi aW9fYW5kX2Vycm9yIHsKIAlzdHJ1Y3QgYmlvICpiaW87CiAJaW50IGVycm9yOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ibG9jay9mbG9wcHkuYyBiL2RyaXZlcnMvYmxvY2svZmxvcHB5LmMKaW5kZXgg MDRjZWI3ZS4uYmY3YjhiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9mbG9wcHkuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2Zsb3BweS5jCkBAIC0zNzc1LDkgKzM3NzUsOSBAQCBzdGF0aWMgaW50 IF9fZmxvcHB5X3JlYWRfYmxvY2tfMChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2KQogCWJpb192 ZWMuYnZfbGVuID0gc2l6ZTsKIAliaW9fdmVjLmJ2X29mZnNldCA9IDA7CiAJYmlvLmJpX3ZjbnQg PSAxOwotCWJpby5iaV9zaXplID0gc2l6ZTsKKwliaW8uYmlfaXRlci5iaV9zaXplID0gc2l6ZTsK IAliaW8uYmlfYmRldiA9IGJkZXY7Ci0JYmlvLmJpX3NlY3RvciA9IDA7CisJYmlvLmJpX2l0ZXIu Ymlfc2VjdG9yID0gMDsKIAliaW8uYmlfZmxhZ3MgPSAoMSA8PCBCSU9fUVVJRVQpOwogCWluaXRf Y29tcGxldGlvbigmY29tcGxldGUpOwogCWJpby5iaV9wcml2YXRlID0gJmNvbXBsZXRlOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRl eCA0MGU3MTU1Li4yNDQwYjUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL2xvb3AuYworKysg Yi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwpAQCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRpYyBpbnQgZG9f YmlvX2ZpbGViYWNrZWQoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGJpbyAqYmlvKQog CWxvZmZfdCBwb3M7CiAJaW50IHJldDsKIAotCXBvcyA9ICgobG9mZl90KSBiaW8tPmJpX3NlY3Rv ciA8PCA5KSArIGxvLT5sb19vZmZzZXQ7CisJcG9zID0gKChsb2ZmX3QpIGJpby0+YmlfaXRlci5i aV9zZWN0b3IgPDwgOSkgKyBsby0+bG9fb2Zmc2V0OwogCiAJaWYgKGJpb19ydyhiaW8pID09IFdS SVRFKSB7CiAJCXN0cnVjdCBmaWxlICpmaWxlID0gbG8tPmxvX2JhY2tpbmdfZmlsZTsKQEAgLTQ0 NCw3ICs0NDQsNyBAQCBzdGF0aWMgaW50IGRvX2Jpb19maWxlYmFja2VkKHN0cnVjdCBsb29wX2Rl dmljZSAqbG8sIHN0cnVjdCBiaW8gKmJpbykKIAkJCQlnb3RvIG91dDsKIAkJCX0KIAkJCXJldCA9 IGZpbGUtPmZfb3AtPmZhbGxvY2F0ZShmaWxlLCBtb2RlLCBwb3MsCi0JCQkJCQkgICAgYmlvLT5i aV9zaXplKTsKKwkJCQkJCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCQlpZiAodW5saWtl bHkocmV0ICYmIHJldCAhPSAtRUlOVkFMICYmCiAJCQkJICAgICByZXQgIT0gLUVPUE5PVFNVUFAp KQogCQkJCXJldCA9IC1FSU87CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210 aXAzMnh4LmMgYi9kcml2ZXJzL2Jsb2NrL210aXAzMnh4L210aXAzMnh4LmMKaW5kZXggOTUyZGJm ZS4uYTQ5YmRhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9tdGlwMzJ4eC9tdGlwMzJ4eC5j CisrKyBiL2RyaXZlcnMvYmxvY2svbXRpcDMyeHgvbXRpcDMyeHguYwpAQCAtMzg5MCw3ICszODkw LDcgQEAgc3RhdGljIHZvaWQgbXRpcF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUg KnF1ZXVlLCBzdHJ1Y3QgYmlvICpiaW8pCiAJfQogCiAJaWYgKHVubGlrZWx5KGJpby0+Ymlfcncg JiBSRVFfRElTQ0FSRCkpIHsKLQkJYmlvX2VuZGlvKGJpbywgbXRpcF9zZW5kX3RyaW0oZGQsIGJp by0+Ymlfc2VjdG9yLAorCQliaW9fZW5kaW8oYmlvLCBtdGlwX3NlbmRfdHJpbShkZCwgYmlvLT5i aV9pdGVyLmJpX3NlY3RvciwKIAkJCQkJCWJpb19zZWN0b3JzKGJpbykpKTsKIAkJcmV0dXJuOwog CX0KQEAgLTM5MDMsNyArMzkwMyw4IEBAIHN0YXRpYyB2b2lkIG10aXBfbWFrZV9yZXF1ZXN0KHN0 cnVjdCByZXF1ZXN0X3F1ZXVlICpxdWV1ZSwgc3RydWN0IGJpbyAqYmlvKQogCiAJaWYgKGJpb19k YXRhX2RpcihiaW8pID09IFdSSVRFICYmIGJpb19zZWN0b3JzKGJpbykgPD0gNjQgJiYKIAkJCQkJ CQlkZC0+dW5hbF9xZGVwdGgpIHsKLQkJaWYgKGJpby0+Ymlfc2VjdG9yICUgOCAhPSAwKSAvKiBV bmFsaWduZWQgb24gNGsgYm91bmRhcmllcyAqLworCQlpZiAoYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciAlIDggIT0gMCkKKwkJCS8qIFVuYWxpZ25lZCBvbiA0ayBib3VuZGFyaWVzICovCiAJCQl1bmFs aWduZWQgPSAxOwogCQllbHNlIGlmIChiaW9fc2VjdG9ycyhiaW8pICUgOCAhPSAwKSAvKiBBbGln bmVkIGJ1dCBub3QgNGsvOGsgKi8KIAkJCXVuYWxpZ25lZCA9IDE7CkBAIC0zOTMyLDcgKzM5MzMs NyBAQCBzdGF0aWMgdm9pZCBtdGlwX21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAq cXVldWUsIHN0cnVjdCBiaW8gKmJpbykKIAogCQkvKiBJc3N1ZSB0aGUgcmVhZC93cml0ZS4gKi8K IAkJbXRpcF9od19zdWJtaXRfaW8oZGQsCi0JCQkJYmlvLT5iaV9zZWN0b3IsCisJCQkJYmlvLT5i aV9pdGVyLmJpX3NlY3RvciwKIAkJCQliaW9fc2VjdG9ycyhiaW8pLAogCQkJCW5lbnRzLAogCQkJ CXRhZywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnZtZS1jb3JlLmMgYi9kcml2ZXJzL2Js b2NrL252bWUtY29yZS5jCmluZGV4IGNlNzlhNTkuLjY4NWNmYjEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvYmxvY2svbnZtZS1jb3JlLmMKKysrIGIvZHJpdmVycy9ibG9jay9udm1lLWNvcmUuYwpAQCAt NDM1LDcgKzQzNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbnZtZV9iaW9fcGFpciAqbnZtZV9iaW9fc3Bs aXQoc3RydWN0IGJpbyAqYmlvLCBpbnQgaWR4LAogewogCXN0cnVjdCBudm1lX2Jpb19wYWlyICpi cDsKIAotCUJVR19PTihsZW4gPiBiaW8tPmJpX3NpemUpOworCUJVR19PTihsZW4gPiBiaW8tPmJp X2l0ZXIuYmlfc2l6ZSk7CiAJQlVHX09OKGlkeCA+IGJpby0+YmlfdmNudCk7CiAKIAlicCA9IGtt YWxsb2Moc2l6ZW9mKCpicCksIEdGUF9BVE9NSUMpOwpAQCAtNDQ2LDExICs0NDYsMTEgQEAgc3Rh dGljIHN0cnVjdCBudm1lX2Jpb19wYWlyICpudm1lX2Jpb19zcGxpdChzdHJ1Y3QgYmlvICpiaW8s IGludCBpZHgsCiAJYnAtPmIxID0gKmJpbzsKIAlicC0+YjIgPSAqYmlvOwogCi0JYnAtPmIxLmJp X3NpemUgPSBsZW47Ci0JYnAtPmIyLmJpX3NpemUgLT0gbGVuOworCWJwLT5iMS5iaV9pdGVyLmJp X3NpemUgPSBsZW47CisJYnAtPmIyLmJpX2l0ZXIuYmlfc2l6ZSAtPSBsZW47CiAJYnAtPmIxLmJp X3ZjbnQgPSBpZHg7Ci0JYnAtPmIyLmJpX2lkeCA9IGlkeDsKLQlicC0+YjIuYmlfc2VjdG9yICs9 IGxlbiA+PiA5OworCWJwLT5iMi5iaV9pdGVyLmJpX2lkeCA9IGlkeDsKKwlicC0+YjIuYmlfaXRl ci5iaV9zZWN0b3IgKz0gbGVuID4+IDk7CiAKIAlpZiAob2Zmc2V0KSB7CiAJCWJwLT5idjEgPSBr bWFsbG9jKGJpby0+YmlfbWF4X3ZlY3MgKiBzaXplb2Yoc3RydWN0IGJpb192ZWMpLApAQCAtNTE5 LDExICs1MTksMTIgQEAgc3RhdGljIGludCBudm1lX21hcF9iaW8oc3RydWN0IG52bWVfcXVldWUg Km52bWVxLCBzdHJ1Y3QgbnZtZV9pb2QgKmlvZCwKIHsKIAlzdHJ1Y3QgYmlvX3ZlYyAqYnZlYywg KmJ2cHJ2ID0gTlVMTDsKIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnID0gTlVMTDsKLQlpbnQgaSwg bGVuZ3RoID0gMCwgbnNlZ3MgPSAwLCBzcGxpdF9sZW4gPSBiaW8tPmJpX3NpemU7CisJaW50IGks IGxlbmd0aCA9IDAsIG5zZWdzID0gMCwgc3BsaXRfbGVuID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7 CiAKIAlpZiAobnZtZXEtPmRldi0+c3RyaXBlX3NpemUpCiAJCXNwbGl0X2xlbiA9IG52bWVxLT5k ZXYtPnN0cmlwZV9zaXplIC0KLQkJCSgoYmlvLT5iaV9zZWN0b3IgPDwgOSkgJiAobnZtZXEtPmRl di0+c3RyaXBlX3NpemUgLSAxKSk7CisJCQkoKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPDwgOSkg JgorCQkJIChudm1lcS0+ZGV2LT5zdHJpcGVfc2l6ZSAtIDEpKTsKIAogCXNnX2luaXRfdGFibGUo aW9kLT5zZywgcHNlZ3MpOwogCWJpb19mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIGJpbywgaSkgewpA QCAtNTUxLDcgKzU1Miw3IEBAIHN0YXRpYyBpbnQgbnZtZV9tYXBfYmlvKHN0cnVjdCBudm1lX3F1 ZXVlICpudm1lcSwgc3RydWN0IG52bWVfaW9kICppb2QsCiAJaWYgKGRtYV9tYXBfc2cobnZtZXEt PnFfZG1hZGV2LCBpb2QtPnNnLCBpb2QtPm5lbnRzLCBkbWFfZGlyKSA9PSAwKQogCQlyZXR1cm4g LUVOT01FTTsKIAotCUJVR19PTihsZW5ndGggIT0gYmlvLT5iaV9zaXplKTsKKwlCVUdfT04obGVu Z3RoICE9IGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAlyZXR1cm4gbGVuZ3RoOwogfQogCkBAIC01 NzUsOCArNTc2LDggQEAgc3RhdGljIGludCBudm1lX3N1Ym1pdF9kaXNjYXJkKHN0cnVjdCBudm1l X3F1ZXVlICpudm1lcSwgc3RydWN0IG52bWVfbnMgKm5zLAogCWlvZC0+bnBhZ2VzID0gMDsKIAog CXJhbmdlLT5jYXR0ciA9IGNwdV90b19sZTMyKDApOwotCXJhbmdlLT5ubGIgPSBjcHVfdG9fbGUz MihiaW8tPmJpX3NpemUgPj4gbnMtPmxiYV9zaGlmdCk7Ci0JcmFuZ2UtPnNsYmEgPSBjcHVfdG9f bGU2NChudm1lX2Jsb2NrX25yKG5zLCBiaW8tPmJpX3NlY3RvcikpOworCXJhbmdlLT5ubGIgPSBj cHVfdG9fbGUzMihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA+PiBucy0+bGJhX3NoaWZ0KTsKKwlyYW5n ZS0+c2xiYSA9IGNwdV90b19sZTY0KG52bWVfYmxvY2tfbnIobnMsIGJpby0+YmlfaXRlci5iaV9z ZWN0b3IpKTsKIAogCW1lbXNldChjbW5kLCAwLCBzaXplb2YoKmNtbmQpKTsKIAljbW5kLT5kc20u b3Bjb2RlID0gbnZtZV9jbWRfZHNtOwpAQCAtNjQxLDcgKzY0Miw3IEBAIHN0YXRpYyBpbnQgbnZt ZV9zdWJtaXRfYmlvX3F1ZXVlKHN0cnVjdCBudm1lX3F1ZXVlICpudm1lcSwgc3RydWN0IG52bWVf bnMgKm5zLAogCX0KIAogCXJlc3VsdCA9IC1FTk9NRU07Ci0JaW9kID0gbnZtZV9hbGxvY19pb2Qo cHNlZ3MsIGJpby0+Ymlfc2l6ZSwgR0ZQX0FUT01JQyk7CisJaW9kID0gbnZtZV9hbGxvY19pb2Qo cHNlZ3MsIGJpby0+YmlfaXRlci5iaV9zaXplLCBHRlBfQVRPTUlDKTsKIAlpZiAoIWlvZCkKIAkJ Z290byBub21lbTsKIAlpb2QtPnByaXZhdGUgPSBiaW87CkBAIC02OTAsNyArNjkxLDcgQEAgc3Rh dGljIGludCBudm1lX3N1Ym1pdF9iaW9fcXVldWUoc3RydWN0IG52bWVfcXVldWUgKm52bWVxLCBz dHJ1Y3QgbnZtZV9ucyAqbnMsCiAJY21uZC0+cncubnNpZCA9IGNwdV90b19sZTMyKG5zLT5uc19p ZCk7CiAJbGVuZ3RoID0gbnZtZV9zZXR1cF9wcnBzKG52bWVxLT5kZXYsICZjbW5kLT5jb21tb24s IGlvZCwgbGVuZ3RoLAogCQkJCQkJCQlHRlBfQVRPTUlDKTsKLQljbW5kLT5ydy5zbGJhID0gY3B1 X3RvX2xlNjQobnZtZV9ibG9ja19ucihucywgYmlvLT5iaV9zZWN0b3IpKTsKKwljbW5kLT5ydy5z bGJhID0gY3B1X3RvX2xlNjQobnZtZV9ibG9ja19ucihucywgYmlvLT5iaV9pdGVyLmJpX3NlY3Rv cikpOwogCWNtbmQtPnJ3Lmxlbmd0aCA9IGNwdV90b19sZTE2KChsZW5ndGggPj4gbnMtPmxiYV9z aGlmdCkgLSAxKTsKIAljbW5kLT5ydy5jb250cm9sID0gY3B1X3RvX2xlMTYoY29udHJvbCk7CiAJ Y21uZC0+cncuZHNtZ210ID0gY3B1X3RvX2xlMzIoZHNtZ210KTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvYmxvY2svcGt0Y2R2ZC5jIGIvZHJpdmVycy9ibG9jay9wa3RjZHZkLmMKaW5kZXggZjVkMGVh MS4uZjE2ZGZjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9wa3RjZHZkLmMKKysrIGIvZHJp dmVycy9ibG9jay9wa3RjZHZkLmMKQEAgLTY1OSw3ICs2NTksNyBAQCBzdGF0aWMgc3RydWN0IHBr dF9yYl9ub2RlICpwa3RfcmJ0cmVlX2ZpbmQoc3RydWN0IHBrdGNkdmRfZGV2aWNlICpwZCwgc2Vj dG9yX3QgcwogCiAJZm9yICg7OykgewogCQl0bXAgPSByYl9lbnRyeShuLCBzdHJ1Y3QgcGt0X3Ji X25vZGUsIHJiX25vZGUpOwotCQlpZiAocyA8PSB0bXAtPmJpby0+Ymlfc2VjdG9yKQorCQlpZiAo cyA8PSB0bXAtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IpCiAJCQluZXh0ID0gbi0+cmJfbGVmdDsK IAkJZWxzZQogCQkJbmV4dCA9IG4tPnJiX3JpZ2h0OwpAQCAtNjY4LDEyICs2NjgsMTIgQEAgc3Rh dGljIHN0cnVjdCBwa3RfcmJfbm9kZSAqcGt0X3JidHJlZV9maW5kKHN0cnVjdCBwa3RjZHZkX2Rl dmljZSAqcGQsIHNlY3Rvcl90IHMKIAkJbiA9IG5leHQ7CiAJfQogCi0JaWYgKHMgPiB0bXAtPmJp by0+Ymlfc2VjdG9yKSB7CisJaWYgKHMgPiB0bXAtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IpIHsK IAkJdG1wID0gcGt0X3JidHJlZV9uZXh0KHRtcCk7CiAJCWlmICghdG1wKQogCQkJcmV0dXJuIE5V TEw7CiAJfQotCUJVR19PTihzID4gdG1wLT5iaW8tPmJpX3NlY3Rvcik7CisJQlVHX09OKHMgPiB0 bXAtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCXJldHVybiB0bXA7CiB9CiAKQEAgLTY4NCwx MyArNjg0LDEzIEBAIHN0YXRpYyB2b2lkIHBrdF9yYnRyZWVfaW5zZXJ0KHN0cnVjdCBwa3RjZHZk X2RldmljZSAqcGQsIHN0cnVjdCBwa3RfcmJfbm9kZSAqbm9kCiB7CiAJc3RydWN0IHJiX25vZGUg KipwID0gJnBkLT5iaW9fcXVldWUucmJfbm9kZTsKIAlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50ID0g TlVMTDsKLQlzZWN0b3JfdCBzID0gbm9kZS0+YmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX3QgcyA9 IG5vZGUtPmJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJc3RydWN0IHBrdF9yYl9ub2RlICp0bXA7 CiAKIAl3aGlsZSAoKnApIHsKIAkJcGFyZW50ID0gKnA7CiAJCXRtcCA9IHJiX2VudHJ5KHBhcmVu dCwgc3RydWN0IHBrdF9yYl9ub2RlLCByYl9ub2RlKTsKLQkJaWYgKHMgPCB0bXAtPmJpby0+Ymlf c2VjdG9yKQorCQlpZiAocyA8IHRtcC0+YmlvLT5iaV9pdGVyLmJpX3NlY3RvcikKIAkJCXAgPSAm KCpwKS0+cmJfbGVmdDsKIAkJZWxzZQogCQkJcCA9ICYoKnApLT5yYl9yaWdodDsKQEAgLTg2OCw3 ICs4NjgsOCBAQCBzdGF0aWMgdm9pZCBwa3RfaW9zY2hlZF9wcm9jZXNzX3F1ZXVlKHN0cnVjdCBw a3RjZHZkX2RldmljZSAqcGQpCiAJCQlzcGluX2xvY2soJnBkLT5pb3NjaGVkLmxvY2spOwogCQkJ YmlvID0gYmlvX2xpc3RfcGVlaygmcGQtPmlvc2NoZWQud3JpdGVfcXVldWUpOwogCQkJc3Bpbl91 bmxvY2soJnBkLT5pb3NjaGVkLmxvY2spOwotCQkJaWYgKGJpbyAmJiAoYmlvLT5iaV9zZWN0b3Ig PT0gcGQtPmlvc2NoZWQubGFzdF93cml0ZSkpCisJCQlpZiAoYmlvICYmIChiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yID09CisJCQkJICAgIHBkLT5pb3NjaGVkLmxhc3Rfd3JpdGUpKQogCQkJCW5lZWRf d3JpdGVfc2VlayA9IDA7CiAJCQlpZiAobmVlZF93cml0ZV9zZWVrICYmIHJlYWRzX3F1ZXVlZCkg ewogCQkJCWlmIChhdG9taWNfcmVhZCgmcGQtPmNkcncucGVuZGluZ19iaW9zKSA+IDApIHsKQEAg LTg5OSw3ICs5MDAsOCBAQCBzdGF0aWMgdm9pZCBwa3RfaW9zY2hlZF9wcm9jZXNzX3F1ZXVlKHN0 cnVjdCBwa3RjZHZkX2RldmljZSAqcGQpCiAJCQljb250aW51ZTsKIAogCQlpZiAoYmlvX2RhdGFf ZGlyKGJpbykgPT0gUkVBRCkKLQkJCXBkLT5pb3NjaGVkLnN1Y2Nlc3NpdmVfcmVhZHMgKz0gYmlv LT5iaV9zaXplID4+IDEwOworCQkJcGQtPmlvc2NoZWQuc3VjY2Vzc2l2ZV9yZWFkcyArPQorCQkJ CWJpby0+YmlfaXRlci5iaV9zaXplID4+IDEwOwogCQllbHNlIHsKIAkJCXBkLT5pb3NjaGVkLnN1 Y2Nlc3NpdmVfcmVhZHMgPSAwOwogCQkJcGQtPmlvc2NoZWQubGFzdF93cml0ZSA9IGJpb19lbmRf c2VjdG9yKGJpbyk7CkBAIC05ODgsNyArOTkwLDggQEAgc3RhdGljIHZvaWQgcGt0X2VuZF9pb19y ZWFkKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycikKIAlCVUdfT04oIXBkKTsKIAogCVZQUklOVEso InBrdF9lbmRfaW9fcmVhZDogYmlvPSVwIHNlYzA9JWxseCBzZWM9JWxseCBlcnI9JWRcbiIsIGJp bywKLQkJKHVuc2lnbmVkIGxvbmcgbG9uZylwa3QtPnNlY3RvciwgKHVuc2lnbmVkIGxvbmcgbG9u ZyliaW8tPmJpX3NlY3RvciwgZXJyKTsKKwkJKHVuc2lnbmVkIGxvbmcgbG9uZylwa3QtPnNlY3Rv ciwKKwkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBlcnIpOwog CiAJaWYgKGVycikKIAkJYXRvbWljX2luYygmcGt0LT5pb19lcnJvcnMpOwpAQCAtMTAzNiw4ICsx MDM5LDkgQEAgc3RhdGljIHZvaWQgcGt0X2dhdGhlcl9kYXRhKHN0cnVjdCBwa3RjZHZkX2Rldmlj ZSAqcGQsIHN0cnVjdCBwYWNrZXRfZGF0YSAqcGt0KQogCW1lbXNldCh3cml0dGVuLCAwLCBzaXpl b2Yod3JpdHRlbikpOwogCXNwaW5fbG9jaygmcGt0LT5sb2NrKTsKIAliaW9fbGlzdF9mb3JfZWFj aChiaW8sICZwa3QtPm9yaWdfYmlvcykgewotCQlpbnQgZmlyc3RfZnJhbWUgPSAoYmlvLT5iaV9z ZWN0b3IgLSBwa3QtPnNlY3RvcikgLyAoQ0RfRlJBTUVTSVpFID4+IDkpOwotCQlpbnQgbnVtX2Zy YW1lcyA9IGJpby0+Ymlfc2l6ZSAvIENEX0ZSQU1FU0laRTsKKwkJaW50IGZpcnN0X2ZyYW1lID0g KGJpby0+YmlfaXRlci5iaV9zZWN0b3IgLSBwa3QtPnNlY3RvcikgLworCQkJKENEX0ZSQU1FU0la RSA+PiA5KTsKKwkJaW50IG51bV9mcmFtZXMgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSAvIENEX0ZS QU1FU0laRTsKIAkJcGQtPnN0YXRzLnNlY3NfdyArPSBudW1fZnJhbWVzICogKENEX0ZSQU1FU0la RSA+PiA5KTsKIAkJQlVHX09OKGZpcnN0X2ZyYW1lIDwgMCk7CiAJCUJVR19PTihmaXJzdF9mcmFt ZSArIG51bV9mcmFtZXMgPiBwa3QtPmZyYW1lcyk7CkBAIC0xMDYzLDcgKzEwNjcsNyBAQCBzdGF0 aWMgdm9pZCBwa3RfZ2F0aGVyX2RhdGEoc3RydWN0IHBrdGNkdmRfZGV2aWNlICpwZCwgc3RydWN0 IHBhY2tldF9kYXRhICpwa3QpCiAKIAkJYmlvID0gcGt0LT5yX2Jpb3NbZl07CiAJCWJpb19yZXNl dChiaW8pOwotCQliaW8tPmJpX3NlY3RvciA9IHBrdC0+c2VjdG9yICsgZiAqIChDRF9GUkFNRVNJ WkUgPj4gOSk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBwa3QtPnNlY3RvciArIGYgKiAo Q0RfRlJBTUVTSVpFID4+IDkpOwogCQliaW8tPmJpX2JkZXYgPSBwZC0+YmRldjsKIAkJYmlvLT5i aV9lbmRfaW8gPSBwa3RfZW5kX2lvX3JlYWQ7CiAJCWJpby0+YmlfcHJpdmF0ZSA9IHBrdDsKQEAg LTExNjAsOCArMTE2NCw4IEBAIHN0YXRpYyBpbnQgcGt0X3N0YXJ0X3JlY292ZXJ5KHN0cnVjdCBw YWNrZXRfZGF0YSAqcGt0KQogCWJpb19yZXNldChwa3QtPmJpbyk7CiAJcGt0LT5iaW8tPmJpX2Jk ZXYgPSBwZC0+YmRldjsKIAlwa3QtPmJpby0+YmlfcncgPSBSRVFfV1JJVEU7Ci0JcGt0LT5iaW8t PmJpX3NlY3RvciA9IG5ld19zZWN0b3I7Ci0JcGt0LT5iaW8tPmJpX3NpemUgPSBwa3QtPmZyYW1l cyAqIENEX0ZSQU1FU0laRTsKKwlwa3QtPmJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBuZXdfc2Vj dG9yOworCXBrdC0+YmlvLT5iaV9pdGVyLmJpX3NpemUgPSBwa3QtPmZyYW1lcyAqIENEX0ZSQU1F U0laRTsKIAlwa3QtPmJpby0+YmlfdmNudCA9IHBrdC0+ZnJhbWVzOwogCiAJcGt0LT5iaW8tPmJp X2VuZF9pbyA9IHBrdF9lbmRfaW9fcGFja2V0X3dyaXRlOwpAQCAtMTIyNCw3ICsxMjI4LDcgQEAg c3RhdGljIGludCBwa3RfaGFuZGxlX3F1ZXVlKHN0cnVjdCBwa3RjZHZkX2RldmljZSAqcGQpCiAJ bm9kZSA9IGZpcnN0X25vZGU7CiAJd2hpbGUgKG5vZGUpIHsKIAkJYmlvID0gbm9kZS0+YmlvOwot CQl6b25lID0gWk9ORShiaW8tPmJpX3NlY3RvciwgcGQpOworCQl6b25lID0gWk9ORShiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yLCBwZCk7CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkocCwgJnBkLT5jZHJ3 LnBrdF9hY3RpdmVfbGlzdCwgbGlzdCkgewogCQkJaWYgKHAtPnNlY3RvciA9PSB6b25lKSB7CiAJ CQkJYmlvID0gTlVMTDsKQEAgLTEyNjQsMTMgKzEyNjgsMTMgQEAgdHJ5X25leHRfYmlvOgogCXdo aWxlICgobm9kZSA9IHBrdF9yYnRyZWVfZmluZChwZCwgem9uZSkpICE9IE5VTEwpIHsKIAkJYmlv ID0gbm9kZS0+YmlvOwogCQlWUFJJTlRLKCJwa3RfaGFuZGxlX3F1ZXVlOiBmb3VuZCB6b25lPSVs bHhcbiIsCi0JCQkodW5zaWduZWQgbG9uZyBsb25nKVpPTkUoYmlvLT5iaV9zZWN0b3IsIHBkKSk7 Ci0JCWlmIChaT05FKGJpby0+Ymlfc2VjdG9yLCBwZCkgIT0gem9uZSkKKwkJCSh1bnNpZ25lZCBs b25nIGxvbmcpWk9ORShiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBwZCkpOworCQlpZiAoWk9ORShi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBwZCkgIT0gem9uZSkKIAkJCWJyZWFrOwogCQlwa3RfcmJ0 cmVlX2VyYXNlKHBkLCBub2RlKTsKIAkJc3Bpbl9sb2NrKCZwa3QtPmxvY2spOwogCQliaW9fbGlz dF9hZGQoJnBrdC0+b3JpZ19iaW9zLCBiaW8pOwotCQlwa3QtPndyaXRlX3NpemUgKz0gYmlvLT5i aV9zaXplIC8gQ0RfRlJBTUVTSVpFOworCQlwa3QtPndyaXRlX3NpemUgKz0gYmlvLT5iaV9pdGVy LmJpX3NpemUgLyBDRF9GUkFNRVNJWkU7CiAJCXNwaW5fdW5sb2NrKCZwa3QtPmxvY2spOwogCX0K IAkvKiBjaGVjayB3cml0ZSBjb25nZXN0aW9uIG1hcmtzLCBhbmQgaWYgYmlvX3F1ZXVlX3NpemUg aXMKQEAgLTEzMDQsNyArMTMwOCw3IEBAIHN0YXRpYyB2b2lkIHBrdF9zdGFydF93cml0ZShzdHJ1 Y3QgcGt0Y2R2ZF9kZXZpY2UgKnBkLCBzdHJ1Y3QgcGFja2V0X2RhdGEgKnBrdCkKIAlzdHJ1Y3Qg YmlvX3ZlYyAqYnZlYyA9IHBrdC0+d19iaW8tPmJpX2lvX3ZlYzsKIAogCWJpb19yZXNldChwa3Qt PndfYmlvKTsKLQlwa3QtPndfYmlvLT5iaV9zZWN0b3IgPSBwa3QtPnNlY3RvcjsKKwlwa3QtPndf YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBrdC0+c2VjdG9yOwogCXBrdC0+d19iaW8tPmJpX2Jk ZXYgPSBwZC0+YmRldjsKIAlwa3QtPndfYmlvLT5iaV9lbmRfaW8gPSBwa3RfZW5kX2lvX3BhY2tl dF93cml0ZTsKIAlwa3QtPndfYmlvLT5iaV9wcml2YXRlID0gcGt0OwpAQCAtMjM4MywxOCArMjM4 NywxOCBAQCBzdGF0aWMgdm9pZCBwa3RfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVl ICpxLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAlpZiAoIXRlc3RfYml0KFBBQ0tFVF9XUklUQUJMRSwg JnBkLT5mbGFncykpIHsKIAkJcHJpbnRrKERSSVZFUl9OQU1FIjogV1JJVEUgZm9yIHJvIGRldmlj ZSAlcyAoJWxsdSlcbiIsCi0JCQlwZC0+bmFtZSwgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJp X3NlY3Rvcik7CisJCQlwZC0+bmFtZSwgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAkJZ290byBlbmRfaW87CiAJfQogCi0JaWYgKCFiaW8tPmJpX3NpemUgfHwg KGJpby0+Ymlfc2l6ZSAlIENEX0ZSQU1FU0laRSkpIHsKKwlpZiAoIWJpby0+YmlfaXRlci5iaV9z aXplIHx8IChiaW8tPmJpX2l0ZXIuYmlfc2l6ZSAlIENEX0ZSQU1FU0laRSkpIHsKIAkJcHJpbnRr KERSSVZFUl9OQU1FIjogd3JvbmcgYmlvIHNpemVcbiIpOwogCQlnb3RvIGVuZF9pbzsKIAl9CiAK IAlibGtfcXVldWVfYm91bmNlKHEsICZiaW8pOwogCi0Jem9uZSA9IFpPTkUoYmlvLT5iaV9zZWN0 b3IsIHBkKTsKKwl6b25lID0gWk9ORShiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBwZCk7CiAJVlBS SU5USygicGt0X21ha2VfcmVxdWVzdDogc3RhcnQgPSAlNmxseCBzdG9wID0gJTZsbHhcbiIsCiAJ CSh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IsCiAJCSh1bnNpZ25lZCBsb25nIGxv bmcpYmlvX2VuZF9zZWN0b3IoYmlvKSk7CkBAIC0yNDA4LDcgKzI0MTIsNyBAQCBzdGF0aWMgdm9p ZCBwa3RfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpi aW8pCiAJCWxhc3Rfem9uZSA9IFpPTkUoYmlvX2VuZF9zZWN0b3IoYmlvKSAtIDEsIHBkKTsKIAkJ aWYgKGxhc3Rfem9uZSAhPSB6b25lKSB7CiAJCQlCVUdfT04obGFzdF96b25lICE9IHpvbmUgKyBw ZC0+c2V0dGluZ3Muc2l6ZSk7Ci0JCQlmaXJzdF9zZWN0b3JzID0gbGFzdF96b25lIC0gYmlvLT5i aV9zZWN0b3I7CisJCQlmaXJzdF9zZWN0b3JzID0gbGFzdF96b25lIC0gYmlvLT5iaV9pdGVyLmJp X3NlY3RvcjsKIAkJCWJwID0gYmlvX3NwbGl0KGJpbywgZmlyc3Rfc2VjdG9ycyk7CiAJCQlCVUdf T04oIWJwKTsKIAkJCXBrdF9tYWtlX3JlcXVlc3QocSwgJmJwLT5iaW8xKTsKQEAgLTI0MzAsNyAr MjQzNCw4IEBAIHN0YXRpYyB2b2lkIHBrdF9tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVl dWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkJCWlmICgocGt0LT5zdGF0ZSA9PSBQQUNLRVRfV0FJ VElOR19TVEFURSkgfHwKIAkJCSAgICAocGt0LT5zdGF0ZSA9PSBQQUNLRVRfUkVBRF9XQUlUX1NU QVRFKSkgewogCQkJCWJpb19saXN0X2FkZCgmcGt0LT5vcmlnX2Jpb3MsIGJpbyk7Ci0JCQkJcGt0 LT53cml0ZV9zaXplICs9IGJpby0+Ymlfc2l6ZSAvIENEX0ZSQU1FU0laRTsKKwkJCQlwa3QtPndy aXRlX3NpemUgKz0KKwkJCQkJYmlvLT5iaV9pdGVyLmJpX3NpemUgLyBDRF9GUkFNRVNJWkU7CiAJ CQkJaWYgKChwa3QtPndyaXRlX3NpemUgPj0gcGt0LT5mcmFtZXMpICYmCiAJCQkJICAgIChwa3Qt PnN0YXRlID09IFBBQ0tFVF9XQUlUSU5HX1NUQVRFKSkgewogCQkJCQlhdG9taWNfaW5jKCZwa3Qt PnJ1bl9zbSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3BzM2Rpc2suYyBiL2RyaXZlcnMv YmxvY2svcHMzZGlzay5jCmluZGV4IGQ3NTRhODguLjQ2NGJlNzggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvYmxvY2svcHMzZGlzay5jCisrKyBiL2RyaXZlcnMvYmxvY2svcHMzZGlzay5jCkBAIC0xMDQs NyArMTA0LDcgQEAgc3RhdGljIHZvaWQgcHMzZGlza19zY2F0dGVyX2dhdGhlcihzdHJ1Y3QgcHMz X3N0b3JhZ2VfZGV2aWNlICpkZXYsCiAJCWRldl9kYmcoJmRldi0+c2JkLmNvcmUsCiAJCQkiJXM6 JXU6IGJpbyAldTogJXUgc2VncyAldSBzZWN0b3JzIGZyb20gJWx1XG4iLAogCQkJX19mdW5jX18s IF9fTElORV9fLCBpLCBiaW9fc2VnbWVudHMoaXRlci5iaW8pLAotCQkJYmlvX3NlY3RvcnMoaXRl ci5iaW8pLCBpdGVyLmJpby0+Ymlfc2VjdG9yKTsKKwkJCWJpb19zZWN0b3JzKGl0ZXIuYmlvKSwg aXRlci5iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCQlzaXplID0gYnZlYy0+YnZfbGVuOwog CQlidWYgPSBidmVjX2ttYXBfaXJxKGJ2ZWMsICZmbGFncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2Jsb2NrL3JiZC5jIGIvZHJpdmVycy9ibG9jay9yYmQuYwppbmRleCA0YWQyYWQ5Li45OTMzNGFj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JiZC5jCisrKyBiL2RyaXZlcnMvYmxvY2svcmJk LmMKQEAgLTExNzcsMTQgKzExNzcsMTQgQEAgc3RhdGljIHN0cnVjdCBiaW8gKmJpb19jbG9uZV9y YW5nZShzdHJ1Y3QgYmlvICpiaW9fc3JjLAogCiAJLyogSGFuZGxlIHRoZSBlYXN5IGNhc2UgZm9y IHRoZSBjYWxsZXIgKi8KIAotCWlmICghb2Zmc2V0ICYmIGxlbiA9PSBiaW9fc3JjLT5iaV9zaXpl KQorCWlmICghb2Zmc2V0ICYmIGxlbiA9PSBiaW9fc3JjLT5iaV9pdGVyLmJpX3NpemUpCiAJCXJl dHVybiBiaW9fY2xvbmUoYmlvX3NyYywgZ2ZwbWFzayk7CiAKIAlpZiAoV0FSTl9PTl9PTkNFKCFs ZW4pKQogCQlyZXR1cm4gTlVMTDsKLQlpZiAoV0FSTl9PTl9PTkNFKGxlbiA+IGJpb19zcmMtPmJp X3NpemUpKQorCWlmIChXQVJOX09OX09OQ0UobGVuID4gYmlvX3NyYy0+YmlfaXRlci5iaV9zaXpl KSkKIAkJcmV0dXJuIE5VTEw7Ci0JaWYgKFdBUk5fT05fT05DRShvZmZzZXQgPiBiaW9fc3JjLT5i aV9zaXplIC0gbGVuKSkKKwlpZiAoV0FSTl9PTl9PTkNFKG9mZnNldCA+IGJpb19zcmMtPmJpX2l0 ZXIuYmlfc2l6ZSAtIGxlbikpCiAJCXJldHVybiBOVUxMOwogCiAJLyogRmluZCBmaXJzdCBhZmZl Y3RlZCBzZWdtZW50Li4uICovCkBAIC0xMjE0LDcgKzEyMTQsOCBAQCBzdGF0aWMgc3RydWN0IGJp byAqYmlvX2Nsb25lX3JhbmdlKHN0cnVjdCBiaW8gKmJpb19zcmMsCiAJCXJldHVybiBOVUxMOwkv KiBFTk9NRU0gKi8KIAogCWJpby0+YmlfYmRldiA9IGJpb19zcmMtPmJpX2JkZXY7Ci0JYmlvLT5i aV9zZWN0b3IgPSBiaW9fc3JjLT5iaV9zZWN0b3IgKyAob2Zmc2V0ID4+IFNFQ1RPUl9TSElGVCk7 CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJpb19zcmMtPmJpX2l0ZXIuYmlfc2VjdG9yICsK KwkJKG9mZnNldCA+PiBTRUNUT1JfU0hJRlQpOwogCWJpby0+YmlfcncgPSBiaW9fc3JjLT5iaV9y dzsKIAliaW8tPmJpX2ZsYWdzIHw9IDEgPDwgQklPX0NMT05FRDsKIApAQCAtMTIzMyw4ICsxMjM0 LDcgQEAgc3RhdGljIHN0cnVjdCBiaW8gKmJpb19jbG9uZV9yYW5nZShzdHJ1Y3QgYmlvICpiaW9f c3JjLAogCX0KIAogCWJpby0+YmlfdmNudCA9IHZjbnQ7Ci0JYmlvLT5iaV9zaXplID0gbGVuOwot CWJpby0+YmlfaWR4ID0gMDsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IGxlbjsKIAogCXJldHVy biBiaW87CiB9CkBAIC0xMjY1LDcgKzEyNjUsNyBAQCBzdGF0aWMgc3RydWN0IGJpbyAqYmlvX2No YWluX2Nsb25lX3JhbmdlKHN0cnVjdCBiaW8gKipiaW9fc3JjLAogCiAJLyogQnVpbGQgdXAgYSBj aGFpbiBvZiBjbG9uZSBiaW9zIHVwIHRvIHRoZSBsaW1pdCAqLwogCi0JaWYgKCFiaSB8fCBvZmYg Pj0gYmktPmJpX3NpemUgfHwgIWxlbikKKwlpZiAoIWJpIHx8IG9mZiA+PSBiaS0+YmlfaXRlci5i aV9zaXplIHx8ICFsZW4pCiAJCXJldHVybiBOVUxMOwkJLyogTm90aGluZyB0byBjbG9uZSAqLwog CiAJZW5kID0gJmNoYWluOwpAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgc3RhdGljIHN0cnVjdCBiaW8g KmJpb19jaGFpbl9jbG9uZV9yYW5nZShzdHJ1Y3QgYmlvICoqYmlvX3NyYywKIAkJCXJiZF93YXJu KE5VTEwsICJiaW9fY2hhaW4gZXhoYXVzdGVkIHdpdGggJXUgbGVmdCIsIGxlbik7CiAJCQlnb3Rv IG91dF9lcnI7CS8qIEVJTlZBTDsgcmFuIG91dCBvZiBiaW8ncyAqLwogCQl9Ci0JCWJpX3NpemUg PSBtaW5fdCh1bnNpZ25lZCBpbnQsIGJpLT5iaV9zaXplIC0gb2ZmLCBsZW4pOworCQliaV9zaXpl ID0gbWluX3QodW5zaWduZWQgaW50LCBiaS0+YmlfaXRlci5iaV9zaXplIC0gb2ZmLCBsZW4pOwog CQliaW8gPSBiaW9fY2xvbmVfcmFuZ2UoYmksIG9mZiwgYmlfc2l6ZSwgZ2ZwbWFzayk7CiAJCWlm ICghYmlvKQogCQkJZ290byBvdXRfZXJyOwkvKiBFTk9NRU0gKi8KQEAgLTEyODYsNyArMTI4Niw3 IEBAIHN0YXRpYyBzdHJ1Y3QgYmlvICpiaW9fY2hhaW5fY2xvbmVfcmFuZ2Uoc3RydWN0IGJpbyAq KmJpb19zcmMsCiAJCWVuZCA9ICZiaW8tPmJpX25leHQ7CiAKIAkJb2ZmICs9IGJpX3NpemU7Ci0J CWlmIChvZmYgPT0gYmktPmJpX3NpemUpIHsKKwkJaWYgKG9mZiA9PSBiaS0+YmlfaXRlci5iaV9z aXplKSB7CiAJCQliaSA9IGJpLT5iaV9uZXh0OwogCQkJb2ZmID0gMDsKIAkJfQpAQCAtMjE4MCw3 ICsyMTgwLDggQEAgc3RhdGljIGludCByYmRfaW1nX3JlcXVlc3RfZmlsbChzdHJ1Y3QgcmJkX2lt Z19yZXF1ZXN0ICppbWdfcmVxdWVzdCwKIAogCWlmICh0eXBlID09IE9CSl9SRVFVRVNUX0JJTykg ewogCQliaW9fbGlzdCA9IGRhdGFfZGVzYzsKLQkJcmJkX2Fzc2VydChpbWdfb2Zmc2V0ID09IGJp b19saXN0LT5iaV9zZWN0b3IgPDwgU0VDVE9SX1NISUZUKTsKKwkJcmJkX2Fzc2VydChpbWdfb2Zm c2V0ID09CisJCQkgICBiaW9fbGlzdC0+YmlfaXRlci5iaV9zZWN0b3IgPDwgU0VDVE9SX1NISUZU KTsKIAl9IGVsc2UgewogCQlyYmRfYXNzZXJ0KHR5cGUgPT0gT0JKX1JFUVVFU1RfUEFHRVMpOwog CQlwYWdlcyA9IGRhdGFfZGVzYzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcnN4eC9kZXYu YyBiL2RyaXZlcnMvYmxvY2svcnN4eC9kZXYuYwppbmRleCBkN2FmNDQxLi45YjE3ZmEwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JzeHgvZGV2LmMKKysrIGIvZHJpdmVycy9ibG9jay9yc3h4 L2Rldi5jCkBAIC0xNzQsNyArMTc0LDcgQEAgc3RhdGljIHZvaWQgcnN4eF9tYWtlX3JlcXVlc3Qo c3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAoIWNhcmQpCiAJ CWdvdG8gcmVxX2VycjsKIAotCWlmIChiaW8tPmJpX3NlY3RvciArIChiaW8tPmJpX3NpemUgPj4g OSkgPiBnZXRfY2FwYWNpdHkoY2FyZC0+Z2VuZGlzaykpCisJaWYgKGJpb19lbmRfc2VjdG9yKGJp bykgPiBnZXRfY2FwYWNpdHkoY2FyZC0+Z2VuZGlzaykpCiAJCWdvdG8gcmVxX2VycjsKIAogCWlm ICh1bmxpa2VseShjYXJkLT5oYWx0KSkgewpAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyB2b2lk IHJzeHhfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpi aW8pCiAJCWdvdG8gcmVxX2VycjsKIAl9CiAKLQlpZiAoYmlvLT5iaV9zaXplID09IDApIHsKKwlp ZiAoYmlvLT5iaV9pdGVyLmJpX3NpemUgPT0gMCkgewogCQlkZXZfZXJyKENBUkRfVE9fREVWKGNh cmQpLCAic2l6ZSB6ZXJvIEJJTyFcbiIpOwogCQlnb3RvIHJlcV9lcnI7CiAJfQpAQCAtMjA4LDcg KzIwOCw3IEBAIHN0YXRpYyB2b2lkIHJzeHhfbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1 ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAlkZXZfZGJnKENBUkRfVE9fREVWKGNhcmQpLCAi QklPWyVjXTogbWV0YTogJXAgYWRkcjg6IHglbGx4IHNpemU6ICVkXG4iLAogCQkgYmlvX2RhdGFf ZGlyKGJpbykgPyAnVycgOiAnUicsIGJpb19tZXRhLAotCQkgKHU2NCliaW8tPmJpX3NlY3RvciA8 PCA5LCBiaW8tPmJpX3NpemUpOworCQkgKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDks IGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAogCXN0ID0gcnN4eF9kbWFfcXVldWVfYmlvKGNhcmQs IGJpbywgJmJpb19tZXRhLT5wZW5kaW5nX2RtYXMsCiAJCQkJICAgIGJpb19kbWFfZG9uZV9jYiwg YmlvX21ldGEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9yc3h4L2RtYS5jIGIvZHJpdmVy cy9ibG9jay9yc3h4L2RtYS5jCmluZGV4IGJlZDMyZjEuLjllNjMxOGEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvYmxvY2svcnN4eC9kbWEuYworKysgYi9kcml2ZXJzL2Jsb2NrL3JzeHgvZG1hLmMKQEAg LTY2Nyw3ICs2NjcsNyBAQCBpbnQgcnN4eF9kbWFfcXVldWVfYmlvKHN0cnVjdCByc3h4X2NhcmRp bmZvICpjYXJkLAogCWludCBzdDsKIAlpbnQgaTsKIAotCWFkZHI4ID0gYmlvLT5iaV9zZWN0b3Ig PDwgOTsgLyogc2VjdG9ycyBhcmUgNTEyIGJ5dGVzICovCisJYWRkcjggPSBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yIDw8IDk7IC8qIHNlY3RvcnMgYXJlIDUxMiBieXRlcyAqLwogCWF0b21pY19zZXQo bl9kbWFzLCAwKTsKIAogCWZvciAoaSA9IDA7IGkgPCBjYXJkLT5uX3RhcmdldHM7IGkrKykgewpA QCAtNjc2LDcgKzY3Niw3IEBAIGludCByc3h4X2RtYV9xdWV1ZV9iaW8oc3RydWN0IHJzeHhfY2Fy ZGluZm8gKmNhcmQsCiAJfQogCiAJaWYgKGJpby0+YmlfcncgJiBSRVFfRElTQ0FSRCkgewotCQli dl9sZW4gPSBiaW8tPmJpX3NpemU7CisJCWJ2X2xlbiA9IGJpby0+YmlfaXRlci5iaV9zaXplOwog CiAJCXdoaWxlIChidl9sZW4gPiAwKSB7CiAJCQl0Z3QgICA9IHJzeHhfZ2V0X2RtYV90Z3QoY2Fy ZCwgYWRkcjgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay91bWVtLmMgYi9kcml2ZXJzL2Js b2NrL3VtZW0uYwppbmRleCBhZDcwODY4Li5kYWI0ZjFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Js b2NrL3VtZW0uYworKysgYi9kcml2ZXJzL2Jsb2NrL3VtZW0uYwpAQCAtMzUyLDggKzM1Miw4IEBA IHN0YXRpYyBpbnQgYWRkX2JpbyhzdHJ1Y3QgY2FyZGluZm8gKmNhcmQpCiAJYmlvID0gY2FyZC0+ Y3VycmVudGJpbzsKIAlpZiAoIWJpbyAmJiBjYXJkLT5iaW8pIHsKIAkJY2FyZC0+Y3VycmVudGJp byA9IGNhcmQtPmJpbzsKLQkJY2FyZC0+Y3VycmVudF9pZHggPSBjYXJkLT5iaW8tPmJpX2lkeDsK LQkJY2FyZC0+Y3VycmVudF9zZWN0b3IgPSBjYXJkLT5iaW8tPmJpX3NlY3RvcjsKKwkJY2FyZC0+ Y3VycmVudF9pZHggPSBjYXJkLT5iaW8tPmJpX2l0ZXIuYmlfaWR4OworCQljYXJkLT5jdXJyZW50 X3NlY3RvciA9IGNhcmQtPmJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCWNhcmQtPmJpbyA9IGNh cmQtPmJpby0+YmlfbmV4dDsKIAkJaWYgKGNhcmQtPmJpbyA9PSBOVUxMKQogCQkJY2FyZC0+Ymlv dGFpbCA9ICZjYXJkLT5iaW87CkBAIC00NTEsNyArNDUxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vz c19wYWdlKHVuc2lnbmVkIGxvbmcgZGF0YSkKIAkJaWYgKHBhZ2UtPmlkeCA+PSBiaW8tPmJpX3Zj bnQpIHsKIAkJCXBhZ2UtPmJpbyA9IGJpby0+YmlfbmV4dDsKIAkJCWlmIChwYWdlLT5iaW8pCi0J CQkJcGFnZS0+aWR4ID0gcGFnZS0+YmlvLT5iaV9pZHg7CisJCQkJcGFnZS0+aWR4ID0gcGFnZS0+ YmlvLT5iaV9pdGVyLmJpX2lkeDsKIAkJfQogCiAJCXBjaV91bm1hcF9wYWdlKGNhcmQtPmRldiwg ZGVzYy0+ZGF0YV9kbWFfaGFuZGxlLApAQCAtNTMyLDcgKzUzMiw4IEBAIHN0YXRpYyB2b2lkIG1t X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvKQog ewogCXN0cnVjdCBjYXJkaW5mbyAqY2FyZCA9IHEtPnF1ZXVlZGF0YTsKIAlwcl9kZWJ1ZygibW1f bWFrZV9yZXF1ZXN0ICVsbHUgJXVcbiIsCi0JCSAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlf c2VjdG9yLCBiaW8tPmJpX3NpemUpOworCQkgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLAorCQkgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCiAJc3Bpbl9sb2NrX2ly cSgmY2FyZC0+bG9jayk7CiAJKmNhcmQtPmJpb3RhaWwgPSBiaW87CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2Jsb2NrL3ZpcnRpb19ibGsuYyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCmluZGV4 IDVjZGY4OGIuLjkzZmRlMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5j CisrKyBiL2RyaXZlcnMvYmxvY2svdmlydGlvX2Jsay5jCkBAIC0xODQsNyArMTg0LDcgQEAgc3Rh dGljIHZvaWQgdmlydGJsa19iaW9fc2VuZF9kYXRhKHN0cnVjdCB2aXJ0YmxrX3JlcSAqdmJyKQog CiAJdmJyLT5mbGFncyAmPSB+VkJMS19JU19GTFVTSDsKIAl2YnItPm91dF9oZHIudHlwZSA9IDA7 Ci0JdmJyLT5vdXRfaGRyLnNlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCXZici0+b3V0X2hkci5z ZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCXZici0+b3V0X2hkci5pb3ByaW8gPSBi aW9fcHJpbyhiaW8pOwogCiAJaWYgKGJsa19iaW9fbWFwX3NnKHZibGstPmRpc2stPnF1ZXVlLCBi aW8sIHZici0+c2cpKSB7CkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIHZvaWQgdmlydGJsa19t YWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAkJ dmJyLT5mbGFncyB8PSBWQkxLX1JFUV9GTFVTSDsKIAlpZiAoYmlvLT5iaV9ydyAmIFJFUV9GVUEp CiAJCXZici0+ZmxhZ3MgfD0gVkJMS19SRVFfRlVBOwotCWlmIChiaW8tPmJpX3NpemUpCisJaWYg KGJpby0+YmlfaXRlci5iaV9zaXplKQogCQl2YnItPmZsYWdzIHw9IFZCTEtfUkVRX0RBVEE7CiAK IAlpZiAodW5saWtlbHkodmJyLT5mbGFncyAmIFZCTEtfUkVRX0ZMVVNIKSkKZGlmZiAtLWdpdCBh L2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svYmxrYmFjay5jIGIvZHJpdmVycy9ibG9jay94ZW4t YmxrYmFjay9ibGtiYWNrLmMKaW5kZXggYmY0YjlkMi4uY2UwNjc0ZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ibG9jay94ZW4tYmxrYmFjay9ibGtiYWNrLmMKKysrIGIvZHJpdmVycy9ibG9jay94ZW4t YmxrYmFjay9ibGtiYWNrLmMKQEAgLTEyNTYsNyArMTI1Niw3IEBAIHN0YXRpYyBpbnQgZGlzcGF0 Y2hfcndfYmxvY2tfaW8oc3RydWN0IHhlbl9ibGtpZiAqYmxraWYsCiAJCQliaW8tPmJpX2JkZXYg ICAgPSBwcmVxLmJkZXY7CiAJCQliaW8tPmJpX3ByaXZhdGUgPSBwZW5kaW5nX3JlcTsKIAkJCWJp by0+YmlfZW5kX2lvICA9IGVuZF9ibG9ja19pb19vcDsKLQkJCWJpby0+Ymlfc2VjdG9yICA9IHBy ZXEuc2VjdG9yX251bWJlcjsKKwkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgID0gcHJlcS5zZWN0 b3JfbnVtYmVyOwogCQl9CiAKIAkJcHJlcS5zZWN0b3JfbnVtYmVyICs9IHNlZ1tpXS5uc2VjOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94ZW4tYmxrZnJvbnQuYyBiL2RyaXZlcnMvYmxvY2sv eGVuLWJsa2Zyb250LmMKaW5kZXggOGQ1M2VkMi4uYTJhZGU3MyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ibG9jay94ZW4tYmxrZnJvbnQuYworKysgYi9kcml2ZXJzL2Jsb2NrL3hlbi1ibGtmcm9udC5j CkBAIC0xNDY4LDcgKzE0NjgsNyBAQCBzdGF0aWMgaW50IGJsa2lmX3JlY292ZXIoc3RydWN0IGJs a2Zyb250X2luZm8gKmluZm8pCiAJCQlmb3IgKGkgPSAwOyBpIDwgcGVuZGluZzsgaSsrKSB7CiAJ CQkJb2Zmc2V0ID0gKGkgKiBzZWdzICogUEFHRV9TSVpFKSA+PiA5OwogCQkJCXNpemUgPSBtaW4o KHVuc2lnbmVkIGludCkoc2VncyAqIFBBR0VfU0laRSkgPj4gOSwKLQkJCQkJICAgKHVuc2lnbmVk IGludCkoYmlvLT5iaV9zaXplID4+IDkpIC0gb2Zmc2V0KTsKKwkJCQkJICAgKHVuc2lnbmVkIGlu dCliaW9fc2VjdG9ycyhiaW8pIC0gb2Zmc2V0KTsKIAkJCQljbG9uZWRfYmlvID0gYmlvX2Nsb25l KGJpbywgR0ZQX05PSU8pOwogCQkJCUJVR19PTihjbG9uZWRfYmlvID09IE5VTEwpOwogCQkJCWJp b190cmltKGNsb25lZF9iaW8sIG9mZnNldCwgc2l6ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21k L2JjYWNoZS9hbGxvYy5jIGIvZHJpdmVycy9tZC9iY2FjaGUvYWxsb2MuYwppbmRleCBlNDVmNTU3 Li45YWZlMzJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9hbGxvYy5jCisrKyBiL2Ry aXZlcnMvbWQvYmNhY2hlL2FsbG9jLmMKQEAgLTE3OCwxMiArMTc4LDEyIEBAIHN0YXRpYyB2b2lk IGRvX2Rpc2NhcmQoc3RydWN0IGNhY2hlICpjYSwgbG9uZyBidWNrZXQpCiAKIAliaW9faW5pdCgm ZC0+YmlvKTsKIAotCWQtPmJpby5iaV9zZWN0b3IJPSBidWNrZXRfdG9fc2VjdG9yKGNhLT5zZXQs IGQtPmJ1Y2tldCk7CisJZC0+YmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gYnVja2V0X3RvX3NlY3Rv cihjYS0+c2V0LCBkLT5idWNrZXQpOwogCWQtPmJpby5iaV9iZGV2CQk9IGNhLT5iZGV2OwogCWQt PmJpby5iaV9ydwkJPSBSRVFfV1JJVEV8UkVRX0RJU0NBUkQ7CiAJZC0+YmlvLmJpX21heF92ZWNz CT0gMTsKIAlkLT5iaW8uYmlfaW9fdmVjCT0gZC0+YmlvLmJpX2lubGluZV92ZWNzOwotCWQtPmJp by5iaV9zaXplCQk9IGJ1Y2tldF9ieXRlcyhjYSk7CisJZC0+YmlvLmJpX2l0ZXIuYmlfc2l6ZQk9 IGJ1Y2tldF9ieXRlcyhjYSk7CiAJZC0+YmlvLmJpX2VuZF9pbwk9IGRpc2NhcmRfZW5kaW87CiAJ YmlvX3NldF9wcmlvKCZkLT5iaW8sIElPUFJJT19QUklPX1ZBTFVFKElPUFJJT19DTEFTU19JRExF LCAwKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL2J0cmVlLmMgYi9kcml2ZXJz L21kL2JjYWNoZS9idHJlZS5jCmluZGV4IGVlMzcyODguLjkzM2VkOGQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbWQvYmNhY2hlL2J0cmVlLmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvYnRyZWUuYwpA QCAtMjMwLDcgKzIzMCw3IEBAIHZvaWQgYmNoX2J0cmVlX25vZGVfcmVhZChzdHJ1Y3QgYnRyZWUg KmIpCiAKIAliaW8gPSBiY2hfYmJpb19hbGxvYyhiLT5jKTsKIAliaW8tPmJpX3J3CT0gUkVRX01F VEF8UkVBRF9TWU5DOwotCWJpby0+Ymlfc2l6ZQk9IEtFWV9TSVpFKCZiLT5rZXkpIDw8IDk7CisJ YmlvLT5iaV9pdGVyLmJpX3NpemUgPSBLRVlfU0laRSgmYi0+a2V5KSA8PCA5OwogCWJpby0+Ymlf ZW5kX2lvCT0gYnRyZWVfbm9kZV9yZWFkX2VuZGlvOwogCWJpby0+YmlfcHJpdmF0ZQk9ICZjbDsK IApAQCAtMzI5LDcgKzMyOSw3IEBAIHN0YXRpYyB2b2lkIGRvX2J0cmVlX25vZGVfd3JpdGUoc3Ry dWN0IGJ0cmVlICpiKQogCWItPmJpby0+YmlfZW5kX2lvCT0gYnRyZWVfbm9kZV93cml0ZV9lbmRp bzsKIAliLT5iaW8tPmJpX3ByaXZhdGUJPSAmYi0+aW8uY2w7CiAJYi0+YmlvLT5iaV9ydwkJPSBS RVFfTUVUQXxXUklURV9TWU5DfFJFUV9GVUE7Ci0JYi0+YmlvLT5iaV9zaXplCQk9IHNldF9ibG9j a3MoaSwgYi0+YykgKiBibG9ja19ieXRlcyhiLT5jKTsKKwliLT5iaW8tPmJpX2l0ZXIuYmlfc2l6 ZQk9IHNldF9ibG9ja3MoaSwgYi0+YykgKiBibG9ja19ieXRlcyhiLT5jKTsKIAliY2hfYmlvX21h cChiLT5iaW8sIGkpOwogCiAJLyoKQEAgLTIxNTIsMTEgKzIxNTIsMTEgQEAgc3RhdGljIGludCBz dWJtaXRfcGFydGlhbF9jYWNoZV9taXNzKHN0cnVjdCBidHJlZSAqYiwgc3RydWN0IGJ0cmVlX29w ICpvcCwKIAkJdW5zaWduZWQgc2VjdG9ycyA9IElOVF9NQVg7CiAKIAkJaWYgKEtFWV9JTk9ERShr KSA9PSBvcC0+aW5vZGUpIHsKLQkJCWlmIChLRVlfU1RBUlQoaykgPD0gYmlvLT5iaV9zZWN0b3Ip CisJCQlpZiAoS0VZX1NUQVJUKGspIDw9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IpCiAJCQkJYnJl YWs7CiAKIAkJCXNlY3RvcnMgPSBtaW5fdCh1aW50NjRfdCwgc2VjdG9ycywKLQkJCQkJS0VZX1NU QVJUKGspIC0gYmlvLT5iaV9zZWN0b3IpOworCQkJCQlLRVlfU1RBUlQoaykgLSBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yKTsKIAkJfQogCiAJCXJldCA9IHMtPmQtPmNhY2hlX21pc3MoYiwgcywgYmlv LCBzZWN0b3JzKTsKQEAgLTIxODgsMTIgKzIxODgsMTIgQEAgc3RhdGljIGludCBzdWJtaXRfcGFy dGlhbF9jYWNoZV9oaXQoc3RydWN0IGJ0cmVlICpiLCBzdHJ1Y3QgYnRyZWVfb3AgKm9wLAogCiAJ d2hpbGUgKCFvcC0+bG9va3VwX2RvbmUgJiYKIAkgICAgICAgS0VZX0lOT0RFKGspID09IG9wLT5p bm9kZSAmJgotCSAgICAgICBiaW8tPmJpX3NlY3RvciA8IEtFWV9PRkZTRVQoaykpIHsKKwkgICAg ICAgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8IEtFWV9PRkZTRVQoaykpIHsKIAkJc3RydWN0IGJr ZXkgKmJpb19rZXk7CiAJCXNlY3Rvcl90IHNlY3RvciA9IFBUUl9PRkZTRVQoaywgcHRyKSArCi0J CQkoYmlvLT5iaV9zZWN0b3IgLSBLRVlfU1RBUlQoaykpOworCQkJKGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgLSBLRVlfU1RBUlQoaykpOwogCQl1bnNpZ25lZCBzZWN0b3JzID0gbWluX3QodWludDY0 X3QsIElOVF9NQVgsCi0JCQkJCSBLRVlfT0ZGU0VUKGspIC0gYmlvLT5iaV9zZWN0b3IpOworCQkJ CUtFWV9PRkZTRVQoaykgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCQluID0gYmNoX2Jp b19zcGxpdChiaW8sIHNlY3RvcnMsIEdGUF9OT0lPLCBzLT5kLT5iaW9fc3BsaXQpOwogCQlpZiAo biA9PSBiaW8pCkBAIC0yMjMyLDcgKzIyMzIsOCBAQCBpbnQgYmNoX2J0cmVlX3NlYXJjaF9yZWN1 cnNlKHN0cnVjdCBidHJlZSAqYiwgc3RydWN0IGJ0cmVlX29wICpvcCkKIAlpbnQgcmV0ID0gMDsK IAlzdHJ1Y3QgYmtleSAqazsKIAlzdHJ1Y3QgYnRyZWVfaXRlciBpdGVyOwotCWJjaF9idHJlZV9p dGVyX2luaXQoYiwgJml0ZXIsICZLRVkob3AtPmlub2RlLCBiaW8tPmJpX3NlY3RvciwgMCkpOwor CWJjaF9idHJlZV9pdGVyX2luaXQoYiwgJml0ZXIsICZLRVkob3AtPmlub2RlLAorCQkJCQkgICBi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCAwKSk7CiAKIAlkbyB7CiAJCWsgPSBiY2hfYnRyZWVfaXRl cl9uZXh0X2ZpbHRlcigmaXRlciwgYiwgYmNoX3B0cl9iYWQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9iY2FjaGUvZGVidWcuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL2RlYnVnLmMKaW5kZXggNTQ1 NjgwYi4uODRjOTNhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvZGVidWcuYworKysg Yi9kcml2ZXJzL21kL2JjYWNoZS9kZWJ1Zy5jCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBiY2hf ZGF0YV92ZXJpZnkoc3RydWN0IHNlYXJjaCAqcykKIAkJCXByaW50ayhLRVJOX0VSUgogCQkJICAg ICAgICJiY2FjaGUgKCVzKTogdmVyaWZ5IGZhaWxlZCBhdCBzZWN0b3IgJWxsdVxuIiwKIAkJCSAg ICAgICBiZGV2bmFtZShkYy0+YmRldiwgbmFtZSksCi0JCQkgICAgICAgKHVpbnQ2NF90KSBzLT5v cmlnX2Jpby0+Ymlfc2VjdG9yKTsKKwkJCSAgICAgICAodWludDY0X3QpIHMtPm9yaWdfYmlvLT5i aV9pdGVyLmJpX3NlY3Rvcik7CiAKIAkJa3VubWFwKGJ2LT5idl9wYWdlKTsKIAkJa3VubWFwKGNo ZWNrLT5iaV9pb192ZWNbaV0uYnZfcGFnZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2JjYWNo ZS9pby5jIGIvZHJpdmVycy9tZC9iY2FjaGUvaW8uYwppbmRleCA5MDU2NjMyLi5jYzRiYTJkIDEw MDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9pby5jCisrKyBiL2RyaXZlcnMvbWQvYmNhY2hl L2lvLmMKQEAgLTIxLDE4ICsyMSwxOCBAQCBzdGF0aWMgdm9pZCBiY2hfYmlfaWR4X2hhY2tfZW5k aW8oc3RydWN0IGJpbyAqYmlvLCBpbnQgZXJyb3IpCiAKIHN0YXRpYyB2b2lkIGJjaF9nZW5lcmlj X21ha2VfcmVxdWVzdF9oYWNrKHN0cnVjdCBiaW8gKmJpbykKIHsKLQlpZiAoYmlvLT5iaV9pZHgp IHsKKwlpZiAoYmlvLT5iaV9pdGVyLmJpX2lkeCkgewogCQlzdHJ1Y3QgYmlvICpjbG9uZSA9IGJp b19hbGxvYyhHRlBfTk9JTywgYmlvX3NlZ21lbnRzKGJpbykpOwogCiAJCW1lbWNweShjbG9uZS0+ YmlfaW9fdmVjLAogCQkgICAgICAgYmlvX2lvdmVjKGJpbyksCiAJCSAgICAgICBiaW9fc2VnbWVu dHMoYmlvKSAqIHNpemVvZihzdHJ1Y3QgYmlvX3ZlYykpOwogCi0JCWNsb25lLT5iaV9zZWN0b3IJ PSBiaW8tPmJpX3NlY3RvcjsKKwkJY2xvbmUtPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmlvLT5iaV9p dGVyLmJpX3NlY3RvcjsKIAkJY2xvbmUtPmJpX2JkZXYJCT0gYmlvLT5iaV9iZGV2OwogCQljbG9u ZS0+YmlfcncJCT0gYmlvLT5iaV9ydzsKIAkJY2xvbmUtPmJpX3ZjbnQJCT0gYmlvX3NlZ21lbnRz KGJpbyk7Ci0JCWNsb25lLT5iaV9zaXplCQk9IGJpby0+Ymlfc2l6ZTsKKwkJY2xvbmUtPmJpX2l0 ZXIuYmlfc2l6ZQk9IGJpby0+YmlfaXRlci5iaV9zaXplOwogCiAJCWNsb25lLT5iaV9wcml2YXRl CT0gYmlvOwogCQljbG9uZS0+YmlfZW5kX2lvCT0gYmNoX2JpX2lkeF9oYWNrX2VuZGlvOwpAQCAt NzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBiY2hfZ2VuZXJpY19tYWtlX3JlcXVlc3RfaGFjayhz dHJ1Y3QgYmlvICpiaW8pCiBzdHJ1Y3QgYmlvICpiY2hfYmlvX3NwbGl0KHN0cnVjdCBiaW8gKmJp bywgaW50IHNlY3RvcnMsCiAJCQkgIGdmcF90IGdmcCwgc3RydWN0IGJpb19zZXQgKmJzKQogewot CXVuc2lnbmVkIGlkeCA9IGJpby0+YmlfaWR4LCB2Y250ID0gMCwgbmJ5dGVzID0gc2VjdG9ycyA8 PCA5OworCXVuc2lnbmVkIGlkeCA9IGJpby0+YmlfaXRlci5iaV9pZHgsIHZjbnQgPSAwLCBuYnl0 ZXMgPSBzZWN0b3JzIDw8IDk7CiAJc3RydWN0IGJpb192ZWMgKmJ2OwogCXN0cnVjdCBiaW8gKnJl dCA9IE5VTEw7CiAKQEAgLTkwLDcgKzkwLDcgQEAgc3RydWN0IGJpbyAqYmNoX2Jpb19zcGxpdChz dHJ1Y3QgYmlvICpiaW8sIGludCBzZWN0b3JzLAogCX0KIAogCWJpb19mb3JfZWFjaF9zZWdtZW50 KGJ2LCBiaW8sIGlkeCkgewotCQl2Y250ID0gaWR4IC0gYmlvLT5iaV9pZHg7CisJCXZjbnQgPSBp ZHggLSBiaW8tPmJpX2l0ZXIuYmlfaWR4OwogCiAJCWlmICghbmJ5dGVzKSB7CiAJCQlyZXQgPSBi aW9fYWxsb2NfYmlvc2V0KGdmcCwgdmNudCwgYnMpOwpAQCAtMTE5LDE1ICsxMTksMTUgQEAgc3Ry dWN0IGJpbyAqYmNoX2Jpb19zcGxpdChzdHJ1Y3QgYmlvICpiaW8sIGludCBzZWN0b3JzLAogCX0K IG91dDoKIAlyZXQtPmJpX2JkZXYJPSBiaW8tPmJpX2JkZXY7Ci0JcmV0LT5iaV9zZWN0b3IJPSBi aW8tPmJpX3NlY3RvcjsKLQlyZXQtPmJpX3NpemUJPSBzZWN0b3JzIDw8IDk7CisJcmV0LT5iaV9p dGVyLmJpX3NlY3Rvcgk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CisJcmV0LT5iaV9pdGVyLmJp X3NpemUJPSBzZWN0b3JzIDw8IDk7CiAJcmV0LT5iaV9ydwk9IGJpby0+Ymlfcnc7CiAJcmV0LT5i aV92Y250CT0gdmNudDsKIAlyZXQtPmJpX21heF92ZWNzID0gdmNudDsKIAotCWJpby0+Ymlfc2Vj dG9yCSs9IHNlY3RvcnM7Ci0JYmlvLT5iaV9zaXplCS09IHNlY3RvcnMgPDwgOTsKLQliaW8tPmJp X2lkeAkgPSBpZHg7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvcgkrPSBzZWN0b3JzOworCWJpby0+ YmlfaXRlci5iaV9zaXplCS09IHNlY3RvcnMgPDwgOTsKKwliaW8tPmJpX2l0ZXIuYmlfaWR4CSA9 IGlkeDsKIAogCWlmIChiaW9faW50ZWdyaXR5KGJpbykpIHsKIAkJaWYgKGJpb19pbnRlZ3JpdHlf Y2xvbmUocmV0LCBiaW8sIGdmcCkpIHsKQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0aWMgdW5zaWdu ZWQgYmNoX2Jpb19tYXhfc2VjdG9ycyhzdHJ1Y3QgYmlvICpiaW8pCiAJCWJpb19mb3JfZWFjaF9z ZWdtZW50KGJ2LCBiaW8sIGkpIHsKIAkJCXN0cnVjdCBidmVjX21lcmdlX2RhdGEgYnZtID0gewog CQkJCS5iaV9iZGV2CT0gYmlvLT5iaV9iZGV2LAotCQkJCS5iaV9zZWN0b3IJPSBiaW8tPmJpX3Nl Y3RvciwKKwkJCQkuYmlfc2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJCQkuYmlf c2l6ZQk9IHJldCA8PCA5LAogCQkJCS5iaV9ydwkJPSBiaW8tPmJpX3J3LAogCQkJfTsKQEAgLTI3 Miw4ICsyNzIsOCBAQCB2b2lkIF9fYmNoX3N1Ym1pdF9iYmlvKHN0cnVjdCBiaW8gKmJpbywgc3Ry dWN0IGNhY2hlX3NldCAqYykKIHsKIAlzdHJ1Y3QgYmJpbyAqYiA9IGNvbnRhaW5lcl9vZihiaW8s IHN0cnVjdCBiYmlvLCBiaW8pOwogCi0JYmlvLT5iaV9zZWN0b3IJPSBQVFJfT0ZGU0VUKCZiLT5r ZXksIDApOwotCWJpby0+YmlfYmRldgk9IFBUUl9DQUNIRShjLCAmYi0+a2V5LCAwKS0+YmRldjsK KwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gUFRSX09GRlNFVCgmYi0+a2V5LCAwKTsKKwliaW8t PmJpX2JkZXYJCT0gUFRSX0NBQ0hFKGMsICZiLT5rZXksIDApLT5iZGV2OwogCiAJYi0+c3VibWl0 X3RpbWVfdXMgPSBsb2NhbF9jbG9ja191cygpOwogCWNsb3N1cmVfYmlvX3N1Ym1pdChiaW8sIGJp by0+YmlfcHJpdmF0ZSwgUFRSX0NBQ0hFKGMsICZiLT5rZXksIDApKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvYmNhY2hlL2pvdXJuYWwuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL2pvdXJuYWwuYwpp bmRleCBiYTk1YWI4Li4yMTY5YWQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9qb3Vy bmFsLmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvam91cm5hbC5jCkBAIC00OSwxMCArNDksMTAg QEAgcmVyZWFkOgkJbGVmdCA9IGNhLT5zYi5idWNrZXRfc2l6ZSAtIG9mZnNldDsKIAkJbGVuID0g bWluX3QodW5zaWduZWQsIGxlZnQsIFBBR0VfU0VDVE9SUyAqIDgpOwogCiAJCWJpb19yZXNldChi aW8pOwotCQliaW8tPmJpX3NlY3Rvcgk9IGJ1Y2tldCArIG9mZnNldDsKKwkJYmlvLT5iaV9pdGVy LmJpX3NlY3Rvcgk9IGJ1Y2tldCArIG9mZnNldDsKIAkJYmlvLT5iaV9iZGV2CT0gY2EtPmJkZXY7 CiAJCWJpby0+YmlfcncJPSBSRUFEOwotCQliaW8tPmJpX3NpemUJPSBsZW4gPDwgOTsKKwkJYmlv LT5iaV9pdGVyLmJpX3NpemUJPSBsZW4gPDwgOTsKIAogCQliaW8tPmJpX2VuZF9pbwk9IGpvdXJu YWxfcmVhZF9lbmRpbzsKIAkJYmlvLT5iaV9wcml2YXRlID0gJm9wLT5jbDsKQEAgLTQ0NiwxMyAr NDQ2LDEzIEBAIHN0YXRpYyB2b2lkIGRvX2pvdXJuYWxfZGlzY2FyZChzdHJ1Y3QgY2FjaGUgKmNh KQogCQlhdG9taWNfc2V0KCZqYS0+ZGlzY2FyZF9pbl9mbGlnaHQsIERJU0NBUkRfSU5fRkxJR0hU KTsKIAogCQliaW9faW5pdChiaW8pOwotCQliaW8tPmJpX3NlY3RvcgkJPSBidWNrZXRfdG9fc2Vj dG9yKGNhLT5zZXQsCisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IJPSBidWNrZXRfdG9fc2VjdG9y KGNhLT5zZXQsCiAJCQkJCQljYS0+c2IuZFtqYS0+ZGlzY2FyZF9pZHhdKTsKIAkJYmlvLT5iaV9i ZGV2CQk9IGNhLT5iZGV2OwogCQliaW8tPmJpX3J3CQk9IFJFUV9XUklURXxSRVFfRElTQ0FSRDsK IAkJYmlvLT5iaV9tYXhfdmVjcwk9IDE7CiAJCWJpby0+YmlfaW9fdmVjCQk9IGJpby0+YmlfaW5s aW5lX3ZlY3M7Ci0JCWJpby0+Ymlfc2l6ZQkJPSBidWNrZXRfYnl0ZXMoY2EpOworCQliaW8tPmJp X2l0ZXIuYmlfc2l6ZQk9IGJ1Y2tldF9ieXRlcyhjYSk7CiAJCWJpby0+YmlfZW5kX2lvCQk9IGpv dXJuYWxfZGlzY2FyZF9lbmRpbzsKIAogCQljbG9zdXJlX2dldCgmY2EtPnNldC0+Y2wpOwpAQCAt NjIzLDEwICs2MjMsMTAgQEAgc3RhdGljIHZvaWQgam91cm5hbF93cml0ZV91bmxvY2tlZChzdHJ1 Y3QgY2xvc3VyZSAqY2wpCiAJCWF0b21pY19sb25nX2FkZChzZWN0b3JzLCAmY2EtPm1ldGFfc2Vj dG9yc193cml0dGVuKTsKIAogCQliaW9fcmVzZXQoYmlvKTsKLQkJYmlvLT5iaV9zZWN0b3IJPSBQ VFJfT0ZGU0VUKGssIGkpOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gUFRSX09GRlNFVChr LCBpKTsKIAkJYmlvLT5iaV9iZGV2CT0gY2EtPmJkZXY7CiAJCWJpby0+YmlfcncJPSBSRVFfV1JJ VEV8UkVRX1NZTkN8UkVRX01FVEF8UkVRX0ZMVVNIfFJFUV9GVUE7Ci0JCWJpby0+Ymlfc2l6ZQk9 IHNlY3RvcnMgPDwgOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBzZWN0b3JzIDw8IDk7CiAK IAkJYmlvLT5iaV9lbmRfaW8JPSBqb3VybmFsX3dyaXRlX2VuZGlvOwogCQliaW8tPmJpX3ByaXZh dGUgPSB3OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iY2FjaGUvbW92aW5nZ2MuYyBiL2RyaXZl cnMvbWQvYmNhY2hlL21vdmluZ2djLmMKaW5kZXggMWEzYjRmNC4uZWY2MzBmNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9tZC9iY2FjaGUvbW92aW5nZ2MuYworKysgYi9kcml2ZXJzL21kL2JjYWNoZS9t b3ZpbmdnYy5jCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyB2b2lkIG1vdmluZ19pbml0KHN0cnVj dCBtb3ZpbmdfaW8gKmlvKQogCWJpb19nZXQoYmlvKTsKIAliaW9fc2V0X3ByaW8oYmlvLCBJT1BS SU9fUFJJT19WQUxVRShJT1BSSU9fQ0xBU1NfSURMRSwgMCkpOwogCi0JYmlvLT5iaV9zaXplCQk9 IEtFWV9TSVpFKCZpby0+dy0+a2V5KSA8PCA5OworCWJpby0+YmlfaXRlci5iaV9zaXplCT0gS0VZ X1NJWkUoJmlvLT53LT5rZXkpIDw8IDk7CiAJYmlvLT5iaV9tYXhfdmVjcwk9IERJVl9ST1VORF9V UChLRVlfU0laRSgmaW8tPnctPmtleSksCiAJCQkJCSAgICAgICBQQUdFX1NFQ1RPUlMpOwogCWJp by0+YmlfcHJpdmF0ZQkJPSAmaW8tPnMuY2w7CkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyB2b2lk IHdyaXRlX21vdmluZyhzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJaWYgKCFzLT5lcnJvcikgewogCQlt b3ZpbmdfaW5pdChpbyk7CiAKLQkJaW8tPmJpby5iaW8uYmlfc2VjdG9yCT0gS0VZX1NUQVJUKCZp by0+dy0+a2V5KTsKKwkJaW8tPmJpby5iaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBLRVlfU1RBUlQo JmlvLT53LT5rZXkpOwogCQlzLT5vcC5sb2NrCQk9IC0xOwogCQlzLT5vcC53cml0ZV9wcmlvCT0g MTsKIAkJcy0+b3AuY2FjaGVfYmlvCQk9ICZpby0+YmlvLmJpbzsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWQvYmNhY2hlL3JlcXVlc3QuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3JlcXVlc3QuYwppbmRl eCAyYzJlMWMxLi5kOTRjMDhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS9yZXF1ZXN0 LmMKKysrIGIvZHJpdmVycy9tZC9iY2FjaGUvcmVxdWVzdC5jCkBAIC0yMTksNyArMjE5LDcgQEAg c3RhdGljIHZvaWQgYmlvX2ludmFsaWRhdGUoc3RydWN0IGNsb3N1cmUgKmNsKQogCXN0cnVjdCBi aW8gKmJpbyA9IG9wLT5jYWNoZV9iaW87CiAKIAlwcl9kZWJ1ZygiaW52YWxpZGF0aW5nICVpIHNl Y3RvcnMgZnJvbSAlbGx1IiwKLQkJIGJpb19zZWN0b3JzKGJpbyksICh1aW50NjRfdCkgYmlvLT5i aV9zZWN0b3IpOworCQkgYmlvX3NlY3RvcnMoYmlvKSwgKHVpbnQ2NF90KSBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAogCXdoaWxlIChiaW9fc2VjdG9ycyhiaW8pKSB7CiAJCXVuc2lnbmVkIGxl biA9IG1pbihiaW9fc2VjdG9ycyhiaW8pLCAxVSA8PCAxNCk7CkBAIC0yMjcsMTEgKzIyNywxMSBA QCBzdGF0aWMgdm9pZCBiaW9faW52YWxpZGF0ZShzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJCWlmIChi Y2hfa2V5bGlzdF9yZWFsbG9jKCZvcC0+a2V5cywgMCwgb3AtPmMpKQogCQkJZ290byBvdXQ7CiAK LQkJYmlvLT5iaV9zZWN0b3IJKz0gbGVuOwotCQliaW8tPmJpX3NpemUJLT0gbGVuIDw8IDk7CisJ CWJpby0+YmlfaXRlci5iaV9zZWN0b3IJKz0gbGVuOworCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZQkt PSBsZW4gPDwgOTsKIAogCQliY2hfa2V5bGlzdF9hZGQoJm9wLT5rZXlzLAotCQkJCSZLRVkob3At Pmlub2RlLCBiaW8tPmJpX3NlY3RvciwgbGVuKSk7CisJCQkJJktFWShvcC0+aW5vZGUsIGJpby0+ YmlfaXRlci5iaV9zZWN0b3IsIGxlbikpOwogCX0KIAogCW9wLT5pbnNlcnRfZGF0YV9kb25lID0g dHJ1ZTsKQEAgLTUwOSw3ICs1MDksNyBAQCBzdGF0aWMgdm9pZCBiY2hfaW5zZXJ0X2RhdGFfbG9v cChzdHJ1Y3QgY2xvc3VyZSAqY2wpCiAJCWsgPSBvcC0+a2V5cy50b3A7CiAJCWJrZXlfaW5pdChr KTsKIAkJU0VUX0tFWV9JTk9ERShrLCBvcC0+aW5vZGUpOwotCQlTRVRfS0VZX09GRlNFVChrLCBi aW8tPmJpX3NlY3Rvcik7CisJCVNFVF9LRVlfT0ZGU0VUKGssIGJpby0+YmlfaXRlci5iaV9zZWN0 b3IpOwogCiAJCWlmICghYmNoX2FsbG9jX3NlY3RvcnMoaywgYmlvX3NlY3RvcnMoYmlvKSwgcykp CiAJCQlnb3RvIGVycjsKQEAgLTgwMiw5ICs4MDIsMTIgQEAgc3RhdGljIHZvaWQgcmVxdWVzdF9y ZWFkX2RvbmUoc3RydWN0IGNsb3N1cmUgKmNsKQogCiAJaWYgKHMtPm9wLmNhY2hlX2Jpbykgewog CQliaW9fcmVzZXQocy0+b3AuY2FjaGVfYmlvKTsKLQkJcy0+b3AuY2FjaGVfYmlvLT5iaV9zZWN0 b3IJPSBzLT5jYWNoZV9taXNzLT5iaV9zZWN0b3I7Ci0JCXMtPm9wLmNhY2hlX2Jpby0+YmlfYmRl dgk9IHMtPmNhY2hlX21pc3MtPmJpX2JkZXY7Ci0JCXMtPm9wLmNhY2hlX2Jpby0+Ymlfc2l6ZQk9 IHMtPmNhY2hlX2Jpb19zZWN0b3JzIDw8IDk7CisJCXMtPm9wLmNhY2hlX2Jpby0+YmlfaXRlci5i aV9zZWN0b3IgPQorCQkJcy0+Y2FjaGVfbWlzcy0+YmlfaXRlci5iaV9zZWN0b3I7CisJCXMtPm9w LmNhY2hlX2Jpby0+YmlfYmRldiA9CisJCQlzLT5jYWNoZV9taXNzLT5iaV9iZGV2OworCQlzLT5v cC5jYWNoZV9iaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9CisJCQlzLT5jYWNoZV9iaW9fc2VjdG9ycyA8 PCA5OwogCQliY2hfYmlvX21hcChzLT5vcC5jYWNoZV9iaW8sIE5VTEwpOwogCiAJCWJpb19jb3B5 X2RhdGEocy0+Y2FjaGVfbWlzcywgcy0+b3AuY2FjaGVfYmlvKTsKQEAgLTg4Myw5ICs4ODYsOSBA QCBzdGF0aWMgaW50IGNhY2hlZF9kZXZfY2FjaGVfbWlzcyhzdHJ1Y3QgYnRyZWUgKmIsIHN0cnVj dCBzZWFyY2ggKnMsCiAJaWYgKCFzLT5vcC5jYWNoZV9iaW8pCiAJCWdvdG8gb3V0X3N1Ym1pdDsK IAotCXMtPm9wLmNhY2hlX2Jpby0+Ymlfc2VjdG9yCT0gbWlzcy0+Ymlfc2VjdG9yOworCXMtPm9w LmNhY2hlX2Jpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBtaXNzLT5iaV9pdGVyLmJpX3NlY3RvcjsK IAlzLT5vcC5jYWNoZV9iaW8tPmJpX2JkZXYJPSBtaXNzLT5iaV9iZGV2OwotCXMtPm9wLmNhY2hl X2Jpby0+Ymlfc2l6ZQk9IHMtPmNhY2hlX2Jpb19zZWN0b3JzIDw8IDk7CisJcy0+b3AuY2FjaGVf YmlvLT5iaV9pdGVyLmJpX3NpemUgPSBzLT5jYWNoZV9iaW9fc2VjdG9ycyA8PCA5OwogCiAJcy0+ b3AuY2FjaGVfYmlvLT5iaV9lbmRfaW8JPSByZXF1ZXN0X2VuZGlvOwogCXMtPm9wLmNhY2hlX2Jp by0+YmlfcHJpdmF0ZQk9ICZzLT5jbDsKQEAgLTkzOSw3ICs5NDIsNyBAQCBzdGF0aWMgdm9pZCBy ZXF1ZXN0X3dyaXRlKHN0cnVjdCBjYWNoZWRfZGV2ICpkYywgc3RydWN0IHNlYXJjaCAqcykKIAlz dHJ1Y3QgY2xvc3VyZSAqY2wgPSAmcy0+Y2w7CiAJc3RydWN0IGJpbyAqYmlvID0gJnMtPmJpby5i aW87CiAJc3RydWN0IGJrZXkgc3RhcnQsIGVuZDsKLQlzdGFydCA9IEtFWShkYy0+ZGlzay5pZCwg YmlvLT5iaV9zZWN0b3IsIDApOworCXN0YXJ0ID0gS0VZKGRjLT5kaXNrLmlkLCBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLCAwKTsKIAllbmQgPSBLRVkoZGMtPmRpc2suaWQsIGJpb19lbmRfc2VjdG9y KGJpbyksIDApOwogCiAJYmNoX2tleWJ1Zl9jaGVja19vdmVybGFwcGluZygmcy0+b3AuYy0+bW92 aW5nX2djX2tleXMsICZzdGFydCwgJmVuZCk7CkBAIC05ODAsNyArOTgzLDcgQEAgc3RhdGljIHZv aWQgcmVxdWVzdF93cml0ZShzdHJ1Y3QgY2FjaGVkX2RldiAqZGMsIHN0cnVjdCBzZWFyY2ggKnMp CiAJCQlzLT5vcC5jYWNoZV9iaW8gPSBiaW9fY2xvbmVfYmlvc2V0KGJpbywgR0ZQX05PSU8sCiAJ CQkJCQkJICAgZGMtPmRpc2suYmlvX3NwbGl0KTsKIAotCQkJYmlvLT5iaV9zaXplID0gMDsKKwkJ CWJpby0+YmlfaXRlci5iaV9zaXplID0gMDsKIAkJCWJpby0+YmlfdmNudCA9IDA7CiAJCQljbG9z dXJlX2Jpb19zdWJtaXQoYmlvLCBjbCwgcy0+ZCk7CiAJCX0gZWxzZSB7CkBAIC0xMDgxLDggKzEw ODQsOCBAQCBzdGF0aWMgdm9pZCBjaGVja19zaG91bGRfc2tpcChzdHJ1Y3QgY2FjaGVkX2RldiAq ZGMsIHN0cnVjdCBzZWFyY2ggKnMpCiAJICAgICAoYmlvLT5iaV9ydyAmIFJFUV9XUklURSkpKQog CQlnb3RvIHNraXA7CiAKLQlpZiAoYmlvLT5iaV9zZWN0b3IgICAmIChjLT5zYi5ibG9ja19zaXpl IC0gMSkgfHwKLQkgICAgYmlvX3NlY3RvcnMoYmlvKSAmIChjLT5zYi5ibG9ja19zaXplIC0gMSkp IHsKKwlpZiAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAmIChjLT5zYi5ibG9ja19zaXplIC0gMSkg fHwKKwkgICAgYmlvX3NlY3RvcnMoYmlvKSAgICAgICAmIChjLT5zYi5ibG9ja19zaXplIC0gMSkp IHsKIAkJcHJfZGVidWcoInNraXBwaW5nIHVuYWxpZ25lZCBpbyIpOwogCQlnb3RvIHNraXA7CiAJ fQpAQCAtMTEwMSw4ICsxMTA0LDkgQEAgc3RhdGljIHZvaWQgY2hlY2tfc2hvdWxkX3NraXAoc3Ry dWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3Qgc2VhcmNoICpzKQogCiAJCXNwaW5fbG9jaygmZGMt PmlvX2xvY2spOwogCi0JCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KGksIGlvaGFzaChkYywgYmlvLT5i aV9zZWN0b3IpLCBoYXNoKQotCQkJaWYgKGktPmxhc3QgPT0gYmlvLT5iaV9zZWN0b3IgJiYKKwkJ aGxpc3RfZm9yX2VhY2hfZW50cnkoaSwgaW9oYXNoKGRjLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y KSwKKwkJCQkgICAgIGhhc2gpCisJCQlpZiAoaS0+bGFzdCA9PSBiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yICYmCiAJCQkgICAgdGltZV9iZWZvcmUoamlmZmllcywgaS0+amlmZmllcykpCiAJCQkJZ290 byBmb3VuZDsKIApAQCAtMTExMSw4ICsxMTE1LDggQEAgc3RhdGljIHZvaWQgY2hlY2tfc2hvdWxk X3NraXAoc3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3Qgc2VhcmNoICpzKQogCQlhZGRfc2Vx dWVudGlhbChzLT50YXNrKTsKIAkJaS0+c2VxdWVudGlhbCA9IDA7CiBmb3VuZDoKLQkJaWYgKGkt PnNlcXVlbnRpYWwgKyBiaW8tPmJpX3NpemUgPiBpLT5zZXF1ZW50aWFsKQotCQkJaS0+c2VxdWVu dGlhbAkrPSBiaW8tPmJpX3NpemU7CisJCWlmIChpLT5zZXF1ZW50aWFsICsgYmlvLT5iaV9pdGVy LmJpX3NpemUgPiBpLT5zZXF1ZW50aWFsKQorCQkJaS0+c2VxdWVudGlhbAkrPSBiaW8tPmJpX2l0 ZXIuYmlfc2l6ZTsKIAogCQlpLT5sYXN0CQkJID0gYmlvX2VuZF9zZWN0b3IoYmlvKTsKIAkJaS0+ amlmZmllcwkJID0gamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoNTAwMCk7CkBAIC0xMTI0LDcg KzExMjgsNyBAQCBmb3VuZDoKIAogCQlzcGluX3VubG9jaygmZGMtPmlvX2xvY2spOwogCX0gZWxz ZSB7Ci0JCXMtPnRhc2stPnNlcXVlbnRpYWxfaW8gPSBiaW8tPmJpX3NpemU7CisJCXMtPnRhc2st PnNlcXVlbnRpYWxfaW8gPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAogCQlhZGRfc2VxdWVudGlh bChzLT50YXNrKTsKIAl9CkBAIC0xMTY0LDcgKzExNjgsNyBAQCBzdGF0aWMgdm9pZCBjYWNoZWRf ZGV2X21ha2VfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlv KQogCXBhcnRfc3RhdF91bmxvY2soKTsKIAogCWJpby0+YmlfYmRldiA9IGRjLT5iZGV2OwotCWJp by0+Ymlfc2VjdG9yICs9IGRjLT5zYi5kYXRhX29mZnNldDsKKwliaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yICs9IGRjLT5zYi5kYXRhX29mZnNldDsKIAogCWlmIChjYWNoZWRfZGV2X2dldChkYykpIHsK IAkJcyA9IHNlYXJjaF9hbGxvYyhiaW8sIGQpOwpAQCAtMTI0Nyw5ICsxMjUxLDkgQEAgc3RhdGlj IGludCBmbGFzaF9kZXZfY2FjaGVfbWlzcyhzdHJ1Y3QgYnRyZWUgKmIsIHN0cnVjdCBzZWFyY2gg KnMsCiAJCXNlY3RvcnMJLT0gajsKIAl9CiAKLQliaW9fYWR2YW5jZShiaW8sIG1pbihzZWN0b3Jz IDw8IDksIGJpby0+Ymlfc2l6ZSkpOworCWJpb19hZHZhbmNlKGJpbywgbWluKHNlY3RvcnMgPDwg OSwgYmlvLT5iaV9pdGVyLmJpX3NpemUpKTsKIAotCWlmICghYmlvLT5iaV9zaXplKQorCWlmICgh YmlvLT5iaV9pdGVyLmJpX3NpemUpCiAJCXMtPm9wLmxvb2t1cF9kb25lID0gdHJ1ZTsKIAogCXJl dHVybiAwOwpAQCAtMTI3Nyw3ICsxMjgxLDcgQEAgc3RhdGljIHZvaWQgZmxhc2hfZGV2X21ha2Vf cmVxdWVzdChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvKQogCQljbG9z dXJlX2NhbGwoJnMtPm9wLmNsLCBidHJlZV9yZWFkX2FzeW5jLCBOVUxMLCBjbCk7CiAJfSBlbHNl IGlmIChiaW9faGFzX2RhdGEoYmlvKSB8fCBzLT5vcC5za2lwKSB7CiAJCWJjaF9rZXlidWZfY2hl Y2tfb3ZlcmxhcHBpbmcoJnMtPm9wLmMtPm1vdmluZ19nY19rZXlzLAotCQkJCQkmS0VZKGQtPmlk LCBiaW8tPmJpX3NlY3RvciwgMCksCisJCQkJCSZLRVkoZC0+aWQsIGJpby0+YmlfaXRlci5iaV9z ZWN0b3IsIDApLAogCQkJCQkmS0VZKGQtPmlkLCBiaW9fZW5kX3NlY3RvcihiaW8pLCAwKSk7CiAK IAkJcy0+d3JpdGViYWNrCT0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL3N1 cGVyLmMgYi9kcml2ZXJzL21kL2JjYWNoZS9zdXBlci5jCmluZGV4IGRjMDczZWIuLmZmZjQ4OTQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvYmNhY2hlL3N1cGVyLmMKKysrIGIvZHJpdmVycy9tZC9i Y2FjaGUvc3VwZXIuYwpAQCAtMjQwLDkgKzI0MCw5IEBAIHN0YXRpYyB2b2lkIF9fd3JpdGVfc3Vw ZXIoc3RydWN0IGNhY2hlX3NiICpzYiwgc3RydWN0IGJpbyAqYmlvKQogCXN0cnVjdCBjYWNoZV9z YiAqb3V0ID0gcGFnZV9hZGRyZXNzKGJpby0+YmlfaW9fdmVjWzBdLmJ2X3BhZ2UpOwogCXVuc2ln bmVkIGk7CiAKLQliaW8tPmJpX3NlY3Rvcgk9IFNCX1NFQ1RPUjsKLQliaW8tPmJpX3J3CT0gUkVR X1NZTkN8UkVRX01FVEE7Ci0JYmlvLT5iaV9zaXplCT0gU0JfU0laRTsKKwliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yCT0gU0JfU0VDVE9SOworCWJpby0+YmlfcncJCT0gUkVRX1NZTkN8UkVRX01FVEE7 CisJYmlvLT5iaV9pdGVyLmJpX3NpemUJPSBTQl9TSVpFOwogCWJjaF9iaW9fbWFwKGJpbywgTlVM TCk7CiAKIAlvdXQtPm9mZnNldAkJPSBjcHVfdG9fbGU2NChzYi0+b2Zmc2V0KTsKQEAgLTM1NCw3 ICszNTQsNyBAQCBzdGF0aWMgdm9pZCB1dWlkX2lvKHN0cnVjdCBjYWNoZV9zZXQgKmMsIHVuc2ln bmVkIGxvbmcgcncsCiAJCXN0cnVjdCBiaW8gKmJpbyA9IGJjaF9iYmlvX2FsbG9jKGMpOwogCiAJ CWJpby0+YmlfcncJPSBSRVFfU1lOQ3xSRVFfTUVUQXxydzsKLQkJYmlvLT5iaV9zaXplCT0gS0VZ X1NJWkUoaykgPDwgOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBLRVlfU0laRShrKSA8PCA5 OwogCiAJCWJpby0+YmlfZW5kX2lvCT0gdXVpZF9lbmRpbzsKIAkJYmlvLT5iaV9wcml2YXRlID0g Y2w7CkBAIC01MTAsMTAgKzUxMCwxMCBAQCBzdGF0aWMgdm9pZCBwcmlvX2lvKHN0cnVjdCBjYWNo ZSAqY2EsIHVpbnQ2NF90IGJ1Y2tldCwgdW5zaWduZWQgbG9uZyBydykKIAogCWNsb3N1cmVfaW5p dF9zdGFjayhjbCk7CiAKLQliaW8tPmJpX3NlY3Rvcgk9IGJ1Y2tldCAqIGNhLT5zYi5idWNrZXRf c2l6ZTsKLQliaW8tPmJpX2JkZXYJPSBjYS0+YmRldjsKLQliaW8tPmJpX3J3CT0gUkVRX1NZTkN8 UkVRX01FVEF8cnc7Ci0JYmlvLT5iaV9zaXplCT0gYnVja2V0X2J5dGVzKGNhKTsKKwliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yCT0gYnVja2V0ICogY2EtPnNiLmJ1Y2tldF9zaXplOworCWJpby0+Ymlf YmRldgkJPSBjYS0+YmRldjsKKwliaW8tPmJpX3J3CQk9IFJFUV9TWU5DfFJFUV9NRVRBfHJ3Owor CWJpby0+YmlfaXRlci5iaV9zaXplCT0gYnVja2V0X2J5dGVzKGNhKTsKIAogCWJpby0+YmlfZW5k X2lvCT0gcHJpb19lbmRpbzsKIAliaW8tPmJpX3ByaXZhdGUgPSBjYTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvYmNhY2hlL3V0aWwuYyBiL2RyaXZlcnMvbWQvYmNhY2hlL3V0aWwuYwppbmRleCA5 OGViODExLi5iOTk1ZDVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2JjYWNoZS91dGlsLmMKKysr IGIvZHJpdmVycy9tZC9iY2FjaGUvdXRpbC5jCkBAIC0yMDMsMTAgKzIwMywxMCBAQCB1bnNpZ25l ZCBiY2hfbmV4dF9kZWxheShzdHJ1Y3QgcmF0ZWxpbWl0ICpkLCB1aW50NjRfdCBkb25lKQogCiB2 b2lkIGJjaF9iaW9fbWFwKHN0cnVjdCBiaW8gKmJpbywgdm9pZCAqYmFzZSkKIHsKLQlzaXplX3Qg c2l6ZSA9IGJpby0+Ymlfc2l6ZTsKKwlzaXplX3Qgc2l6ZSA9IGJpby0+YmlfaXRlci5iaV9zaXpl OwogCXN0cnVjdCBiaW9fdmVjICpidiA9IGJpby0+YmlfaW9fdmVjOwogCi0JQlVHX09OKCFiaW8t PmJpX3NpemUpOworCUJVR19PTighYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCUJVR19PTihiaW8t PmJpX3ZjbnQpOwogCiAJYnYtPmJ2X29mZnNldCA9IGJhc2UgPyAoKHVuc2lnbmVkIGxvbmcpIGJh c2UpICUgUEFHRV9TSVpFIDogMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL3dyaXRl YmFjay5jIGIvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmMKaW5kZXggMjJjYmZmNS4uMDI5 YWMyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmMKKysrIGIvZHJp dmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmMKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgdm9p ZCBkaXJ0eV9pbml0KHN0cnVjdCBrZXlidWZfa2V5ICp3KQogCWlmICghaW8tPmRjLT53cml0ZWJh Y2tfcGVyY2VudCkKIAkJYmlvX3NldF9wcmlvKGJpbywgSU9QUklPX1BSSU9fVkFMVUUoSU9QUklP X0NMQVNTX0lETEUsIDApKTsKIAotCWJpby0+Ymlfc2l6ZQkJPSBLRVlfU0laRSgmdy0+a2V5KSA8 PCA5OworCWJpby0+YmlfaXRlci5iaV9zaXplCT0gS0VZX1NJWkUoJnctPmtleSkgPDwgOTsKIAli aW8tPmJpX21heF92ZWNzCT0gRElWX1JPVU5EX1VQKEtFWV9TSVpFKCZ3LT5rZXkpLCBQQUdFX1NF Q1RPUlMpOwogCWJpby0+YmlfcHJpdmF0ZQkJPSB3OwogCWJpby0+YmlfaW9fdmVjCQk9IGJpby0+ YmlfaW5saW5lX3ZlY3M7CkBAIC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVfZGly dHkoc3RydWN0IGNsb3N1cmUgKmNsKQogCiAJZGlydHlfaW5pdCh3KTsKIAlpby0+YmlvLmJpX3J3 CQk9IFdSSVRFOwotCWlvLT5iaW8uYmlfc2VjdG9yCT0gS0VZX1NUQVJUKCZ3LT5rZXkpOworCWlv LT5iaW8uYmlfaXRlci5iaV9zZWN0b3IgPSBLRVlfU1RBUlQoJnctPmtleSk7CiAJaW8tPmJpby5i aV9iZGV2CQk9IGlvLT5kYy0+YmRldjsKIAlpby0+YmlvLmJpX2VuZF9pbwk9IGRpcnR5X2VuZGlv OwogCkBAIC00MTMsNyArNDEzLDcgQEAgc3RhdGljIHZvaWQgcmVhZF9kaXJ0eShzdHJ1Y3QgY2xv c3VyZSAqY2wpCiAJCWlvLT5kYwkJPSBkYzsKIAogCQlkaXJ0eV9pbml0KHcpOwotCQlpby0+Ymlv LmJpX3NlY3Rvcgk9IFBUUl9PRkZTRVQoJnctPmtleSwgMCk7CisJCWlvLT5iaW8uYmlfaXRlci5i aV9zZWN0b3IgPSBQVFJfT0ZGU0VUKCZ3LT5rZXksIDApOwogCQlpby0+YmlvLmJpX2JkZXYJCT0g UFRSX0NBQ0hFKGRjLT5kaXNrLmMsCiAJCQkJCQkgICAgJnctPmtleSwgMCktPmJkZXY7CiAJCWlv LT5iaW8uYmlfcncJCT0gUkVBRDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYmNhY2hlL3dyaXRl YmFjay5oIGIvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmgKaW5kZXggYzkxZjYxYi4uNjgx ZWZkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmgKKysrIGIvZHJp dmVycy9tZC9iY2FjaGUvd3JpdGViYWNrLmgKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGlubGlu ZSBib29sIHNob3VsZF93cml0ZWJhY2soc3RydWN0IGNhY2hlZF9kZXYgKmRjLCBzdHJ1Y3QgYmlv ICpiaW8sCiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChkYy0+cGFydGlhbF9zdHJpcGVzX2V4cGVu c2l2ZSAmJgotCSAgICBiY2FjaGVfZGV2X3N0cmlwZV9kaXJ0eSgmZGMtPmRpc2ssIGJpby0+Ymlf c2VjdG9yLAorCSAgICBiY2FjaGVfZGV2X3N0cmlwZV9kaXJ0eSgmZGMtPmRpc2ssIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IsCiAJCQkJICAgIGJpb19zZWN0b3JzKGJpbykpKQogCQlyZXR1cm4gdHJ1 ZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1iaW8tcmVjb3JkLmggYi9kcml2ZXJzL21k L2RtLWJpby1yZWNvcmQuaAppbmRleCAzYThjZmEyLi41YWNlNDhlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL21kL2RtLWJpby1yZWNvcmQuaAorKysgYi9kcml2ZXJzL21kL2RtLWJpby1yZWNvcmQuaApA QCAtNDAsMTAgKzQwLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkbV9iaW9fcmVjb3JkKHN0cnVj dCBkbV9iaW9fZGV0YWlscyAqYmQsIHN0cnVjdCBiaW8gKmJpbykKIHsKIAl1bnNpZ25lZCBpOwog Ci0JYmQtPmJpX3NlY3RvciA9IGJpby0+Ymlfc2VjdG9yOworCWJkLT5iaV9zZWN0b3IgPSBiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yOwogCWJkLT5iaV9iZGV2ID0gYmlvLT5iaV9iZGV2OwotCWJkLT5i aV9zaXplID0gYmlvLT5iaV9zaXplOwotCWJkLT5iaV9pZHggPSBiaW8tPmJpX2lkeDsKKwliZC0+ Ymlfc2l6ZSA9IGJpby0+YmlfaXRlci5iaV9zaXplOworCWJkLT5iaV9pZHggPSBiaW8tPmJpX2l0 ZXIuYmlfaWR4OwogCWJkLT5iaV9mbGFncyA9IGJpby0+YmlfZmxhZ3M7CiAKIAlmb3IgKGkgPSAw OyBpIDwgYmlvLT5iaV92Y250OyBpKyspIHsKQEAgLTU2LDEwICs1NiwxMCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgZG1fYmlvX3Jlc3RvcmUoc3RydWN0IGRtX2Jpb19kZXRhaWxzICpiZCwgc3RydWN0 IGJpbyAqYmlvKQogewogCXVuc2lnbmVkIGk7CiAKLQliaW8tPmJpX3NlY3RvciA9IGJkLT5iaV9z ZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJkLT5iaV9zZWN0b3I7CiAJYmlvLT5i aV9iZGV2ID0gYmQtPmJpX2JkZXY7Ci0JYmlvLT5iaV9zaXplID0gYmQtPmJpX3NpemU7Ci0JYmlv LT5iaV9pZHggPSBiZC0+YmlfaWR4OworCWJpby0+YmlfaXRlci5iaV9zaXplID0gYmQtPmJpX3Np emU7CisJYmlvLT5iaV9pdGVyLmJpX2lkeCA9IGJkLT5iaV9pZHg7CiAJYmlvLT5iaV9mbGFncyA9 IGJkLT5iaV9mbGFnczsKIAogCWZvciAoaSA9IDA7IGkgPCBiaW8tPmJpX3ZjbnQ7IGkrKykgewpk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1idWZpby5jIGIvZHJpdmVycy9tZC9kbS1idWZpby5j CmluZGV4IDUyMjdlMDcuLjQxZWVkNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tYnVmaW8u YworKysgYi9kcml2ZXJzL21kL2RtLWJ1ZmlvLmMKQEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMg dm9pZCB1c2VfaW5saW5lX2JpbyhzdHJ1Y3QgZG1fYnVmZmVyICpiLCBpbnQgcncsIHNlY3Rvcl90 IGJsb2NrLAogCWJpb19pbml0KCZiLT5iaW8pOwogCWItPmJpby5iaV9pb192ZWMgPSBiLT5iaW9f dmVjOwogCWItPmJpby5iaV9tYXhfdmVjcyA9IERNX0JVRklPX0lOTElORV9WRUNTOwotCWItPmJp by5iaV9zZWN0b3IgPSBibG9jayA8PCBiLT5jLT5zZWN0b3JzX3Blcl9ibG9ja19iaXRzOworCWIt PmJpby5iaV9pdGVyLmJpX3NlY3RvciA9IGJsb2NrIDw8IGItPmMtPnNlY3RvcnNfcGVyX2Jsb2Nr X2JpdHM7CiAJYi0+YmlvLmJpX2JkZXYgPSBiLT5jLT5iZGV2OwogCWItPmJpby5iaV9lbmRfaW8g PSBlbmRfaW87CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tY2FjaGUtcG9saWN5LW1xLmMg Yi9kcml2ZXJzL21kL2RtLWNhY2hlLXBvbGljeS1tcS5jCmluZGV4IGRjMTEyYTcuLjZlOGFlZGIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tY2FjaGUtcG9saWN5LW1xLmMKKysrIGIvZHJpdmVy cy9tZC9kbS1jYWNoZS1wb2xpY3ktbXEuYwpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgZW51bSBp b19wYXR0ZXJuIGlvdF9wYXR0ZXJuKHN0cnVjdCBpb190cmFja2VyICp0KQogCiBzdGF0aWMgdm9p ZCBpb3RfdXBkYXRlX3N0YXRzKHN0cnVjdCBpb190cmFja2VyICp0LCBzdHJ1Y3QgYmlvICpiaW8p CiB7Ci0JaWYgKGJpby0+Ymlfc2VjdG9yID09IGZyb21fb2Jsb2NrKHQtPmxhc3RfZW5kX29ibG9j aykgKyAxKQorCWlmIChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID09IGZyb21fb2Jsb2NrKHQtPmxh c3RfZW5kX29ibG9jaykgKyAxKQogCQl0LT5ucl9zZXFfc2FtcGxlcysrOwogCWVsc2UgewogCQkv KgpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyB2b2lkIGlvdF91cGRhdGVfc3RhdHMoc3RydWN0 IGlvX3RyYWNrZXIgKnQsIHN0cnVjdCBiaW8gKmJpbykKIAkJdC0+bnJfcmFuZF9zYW1wbGVzKys7 CiAJfQogCi0JdC0+bGFzdF9lbmRfb2Jsb2NrID0gdG9fb2Jsb2NrKGJpby0+Ymlfc2VjdG9yICsg YmlvX3NlY3RvcnMoYmlvKSAtIDEpOworCXQtPmxhc3RfZW5kX29ibG9jayA9IHRvX29ibG9jayhi aW9fZW5kX3NlY3RvcihiaW8pIC0gMSk7CiB9CiAKIHN0YXRpYyB2b2lkIGlvdF9jaGVja19mb3Jf cGF0dGVybl9zd2l0Y2goc3RydWN0IGlvX3RyYWNrZXIgKnQpCmRpZmYgLS1naXQgYS9kcml2ZXJz L21kL2RtLWNhY2hlLXRhcmdldC5jIGIvZHJpdmVycy9tZC9kbS1jYWNoZS10YXJnZXQuYwppbmRl eCAwZGYzZWMwLi5jOWYwZjgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWNhY2hlLXRhcmdl dC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tY2FjaGUtdGFyZ2V0LmMKQEAgLTU2NSwxNCArNTY1LDE2 IEBAIHN0YXRpYyB2b2lkIHJlbWFwX3RvX29yaWdpbihzdHJ1Y3QgY2FjaGUgKmNhY2hlLCBzdHJ1 Y3QgYmlvICpiaW8pCiBzdGF0aWMgdm9pZCByZW1hcF90b19jYWNoZShzdHJ1Y3QgY2FjaGUgKmNh Y2hlLCBzdHJ1Y3QgYmlvICpiaW8sCiAJCQkgICBkbV9jYmxvY2tfdCBjYmxvY2spCiB7Ci0Jc2Vj dG9yX3QgYmlfc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX3QgYmlfc2VjdG9yID0g YmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAogCWJpby0+YmlfYmRldiA9IGNhY2hlLT5jYWNoZV9k ZXYtPmJkZXY7CiAJaWYgKCFibG9ja19zaXplX2lzX3Bvd2VyX29mX3R3byhjYWNoZSkpCi0JCWJp by0+Ymlfc2VjdG9yID0gKGZyb21fY2Jsb2NrKGNibG9jaykgKiBjYWNoZS0+c2VjdG9yc19wZXJf YmxvY2spICsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IChmcm9tX2NibG9jayhjYmxvY2sp ICoKKwkJCQkJICBjYWNoZS0+c2VjdG9yc19wZXJfYmxvY2spICsKIAkJCQlzZWN0b3JfZGl2KGJp X3NlY3RvciwgY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrKTsKIAllbHNlCi0JCWJpby0+Ymlfc2Vj dG9yID0gKGZyb21fY2Jsb2NrKGNibG9jaykgPDwgY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrX3No aWZ0KSB8CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSAoZnJvbV9jYmxvY2soY2Jsb2NrKSA8 PAorCQkJCQkgIGNhY2hlLT5zZWN0b3JzX3Blcl9ibG9ja19zaGlmdCkgfAogCQkJCShiaV9zZWN0 b3IgJiAoY2FjaGUtPnNlY3RvcnNfcGVyX2Jsb2NrIC0gMSkpOwogfQogCkBAIC02MTIsNyArNjE0 LDcgQEAgc3RhdGljIHZvaWQgcmVtYXBfdG9fY2FjaGVfZGlydHkoc3RydWN0IGNhY2hlICpjYWNo ZSwgc3RydWN0IGJpbyAqYmlvLAogCiBzdGF0aWMgZG1fb2Jsb2NrX3QgZ2V0X2Jpb19ibG9jayhz dHJ1Y3QgY2FjaGUgKmNhY2hlLCBzdHJ1Y3QgYmlvICpiaW8pCiB7Ci0Jc2VjdG9yX3QgYmxvY2tf bnIgPSBiaW8tPmJpX3NlY3RvcjsKKwlzZWN0b3JfdCBibG9ja19uciA9IGJpby0+YmlfaXRlci5i aV9zZWN0b3I7CiAKIAlpZiAoIWJsb2NrX3NpemVfaXNfcG93ZXJfb2ZfdHdvKGNhY2hlKSkKIAkJ KHZvaWQpIHNlY3Rvcl9kaXYoYmxvY2tfbnIsIGNhY2hlLT5zZWN0b3JzX3Blcl9ibG9jayk7CkBA IC0xMDY0LDcgKzEwNjYsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsdXNoX2JpbyhzdHJ1Y3Qg Y2FjaGUgKmNhY2hlLCBzdHJ1Y3QgYmlvICpiaW8pCiAJc2l6ZV90IHBiX2RhdGFfc2l6ZSA9IGdl dF9wZXJfYmlvX2RhdGFfc2l6ZShjYWNoZSk7CiAJc3RydWN0IHBlcl9iaW9fZGF0YSAqcGIgPSBn ZXRfcGVyX2Jpb19kYXRhKGJpbywgcGJfZGF0YV9zaXplKTsKIAotCUJVR19PTihiaW8tPmJpX3Np emUpOworCUJVR19PTihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJaWYgKCFwYi0+cmVxX25yKQog CQlyZW1hcF90b19vcmlnaW4oY2FjaGUsIGJpbyk7CiAJZWxzZQpAQCAtMTA4Nyw5ICsxMDg5LDkg QEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbHVzaF9iaW8oc3RydWN0IGNhY2hlICpjYWNoZSwgc3Ry dWN0IGJpbyAqYmlvKQogICovCiBzdGF0aWMgdm9pZCBwcm9jZXNzX2Rpc2NhcmRfYmlvKHN0cnVj dCBjYWNoZSAqY2FjaGUsIHN0cnVjdCBiaW8gKmJpbykKIHsKLQlkbV9ibG9ja190IHN0YXJ0X2Js b2NrID0gZG1fc2VjdG9yX2Rpdl91cChiaW8tPmJpX3NlY3RvciwKKwlkbV9ibG9ja190IHN0YXJ0 X2Jsb2NrID0gZG1fc2VjdG9yX2Rpdl91cChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAogCQkJCQkJ ICBjYWNoZS0+ZGlzY2FyZF9ibG9ja19zaXplKTsKLQlkbV9ibG9ja190IGVuZF9ibG9jayA9IGJp by0+Ymlfc2VjdG9yICsgYmlvX3NlY3RvcnMoYmlvKTsKKwlkbV9ibG9ja190IGVuZF9ibG9jayA9 IGJpb19lbmRfc2VjdG9yKGJpbyk7CiAJZG1fYmxvY2tfdCBiOwogCiAJZW5kX2Jsb2NrID0gYmxv Y2tfZGl2KGVuZF9ibG9jaywgY2FjaGUtPmRpc2NhcmRfYmxvY2tfc2l6ZSk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL21kL2RtLWNyeXB0LmMgYi9kcml2ZXJzL21kL2RtLWNyeXB0LmMKaW5kZXggNmQy ZDQxYS4uZmNhM2JiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1jcnlwdC5jCisrKyBiL2Ry aXZlcnMvbWQvZG0tY3J5cHQuYwpAQCAtNjUyLDggKzY1Miw4IEBAIHN0YXRpYyB2b2lkIGNyeXB0 X2NvbnZlcnRfaW5pdChzdHJ1Y3QgY3J5cHRfY29uZmlnICpjYywKIAljdHgtPmJpb19vdXQgPSBi aW9fb3V0OwogCWN0eC0+b2Zmc2V0X2luID0gMDsKIAljdHgtPm9mZnNldF9vdXQgPSAwOwotCWN0 eC0+aWR4X2luID0gYmlvX2luID8gYmlvX2luLT5iaV9pZHggOiAwOwotCWN0eC0+aWR4X291dCA9 IGJpb19vdXQgPyBiaW9fb3V0LT5iaV9pZHggOiAwOworCWN0eC0+aWR4X2luID0gYmlvX2luID8g YmlvX2luLT5iaV9pdGVyLmJpX2lkeCA6IDA7CisJY3R4LT5pZHhfb3V0ID0gYmlvX291dCA/IGJp b19vdXQtPmJpX2l0ZXIuYmlfaWR4IDogMDsKIAljdHgtPmNjX3NlY3RvciA9IHNlY3RvciArIGNj LT5pdl9vZmZzZXQ7CiAJaW5pdF9jb21wbGV0aW9uKCZjdHgtPnJlc3RhcnQpOwogfQpAQCAtODQ1 LDcgKzg0NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmlvICpjcnlwdF9hbGxvY19idWZmZXIoc3RydWN0 IGRtX2NyeXB0X2lvICppbywgdW5zaWduZWQgc2l6ZSwKIAkJc2l6ZSAtPSBsZW47CiAJfQogCi0J aWYgKCFjbG9uZS0+Ymlfc2l6ZSkgeworCWlmICghY2xvbmUtPmJpX2l0ZXIuYmlfc2l6ZSkgewog CQliaW9fcHV0KGNsb25lKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQpAQCAtOTg1LDcgKzk4NSw3IEBA IHN0YXRpYyBpbnQga2NyeXB0ZF9pb19yZWFkKHN0cnVjdCBkbV9jcnlwdF9pbyAqaW8sIGdmcF90 IGdmcCkKIAljcnlwdF9pbmNfcGVuZGluZyhpbyk7CiAKIAljbG9uZV9pbml0KGlvLCBjbG9uZSk7 Ci0JY2xvbmUtPmJpX3NlY3RvciA9IGNjLT5zdGFydCArIGlvLT5zZWN0b3I7CisJY2xvbmUtPmJp X2l0ZXIuYmlfc2VjdG9yID0gY2MtPnN0YXJ0ICsgaW8tPnNlY3RvcjsKIAogCWdlbmVyaWNfbWFr ZV9yZXF1ZXN0KGNsb25lKTsKIAlyZXR1cm4gMDsKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHN0YXRp YyB2b2lkIGtjcnlwdGRfY3J5cHRfd3JpdGVfaW9fc3VibWl0KHN0cnVjdCBkbV9jcnlwdF9pbyAq aW8sIGludCBhc3luYykKIAkvKiBjcnlwdF9jb252ZXJ0IHNob3VsZCBoYXZlIGZpbGxlZCB0aGUg Y2xvbmUgYmlvICovCiAJQlVHX09OKGlvLT5jdHguaWR4X291dCA8IGNsb25lLT5iaV92Y250KTsK IAotCWNsb25lLT5iaV9zZWN0b3IgPSBjYy0+c3RhcnQgKyBpby0+c2VjdG9yOworCWNsb25lLT5i aV9pdGVyLmJpX3NlY3RvciA9IGNjLT5zdGFydCArIGlvLT5zZWN0b3I7CiAKIAlpZiAoYXN5bmMp CiAJCWtjcnlwdGRfcXVldWVfaW8oaW8pOwpAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgc3RhdGljIHZv aWQga2NyeXB0ZF9jcnlwdF93cml0ZV9jb252ZXJ0KHN0cnVjdCBkbV9jcnlwdF9pbyAqaW8pCiAJ c3RydWN0IGRtX2NyeXB0X2lvICpuZXdfaW87CiAJaW50IGNyeXB0X2ZpbmlzaGVkOwogCXVuc2ln bmVkIG91dF9vZl9wYWdlcyA9IDA7Ci0JdW5zaWduZWQgcmVtYWluaW5nID0gaW8tPmJhc2VfYmlv LT5iaV9zaXplOworCXVuc2lnbmVkIHJlbWFpbmluZyA9IGlvLT5iYXNlX2Jpby0+YmlfaXRlci5i aV9zaXplOwogCXNlY3Rvcl90IHNlY3RvciA9IGlvLT5zZWN0b3I7CiAJaW50IHI7CiAKQEAgLTEw NzIsNyArMTA3Miw3IEBAIHN0YXRpYyB2b2lkIGtjcnlwdGRfY3J5cHRfd3JpdGVfY29udmVydChz dHJ1Y3QgZG1fY3J5cHRfaW8gKmlvKQogCQlpby0+Y3R4LmJpb19vdXQgPSBjbG9uZTsKIAkJaW8t PmN0eC5pZHhfb3V0ID0gMDsKIAotCQlyZW1haW5pbmcgLT0gY2xvbmUtPmJpX3NpemU7CisJCXJl bWFpbmluZyAtPSBjbG9uZS0+YmlfaXRlci5iaV9zaXplOwogCQlzZWN0b3IgKz0gYmlvX3NlY3Rv cnMoY2xvbmUpOwogCiAJCWNyeXB0X2luY19wZW5kaW5nKGlvKTsKQEAgLTE2ODcsMTEgKzE2ODcs MTMgQEAgc3RhdGljIGludCBjcnlwdF9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBi aW8gKmJpbykKIAlpZiAodW5saWtlbHkoYmlvLT5iaV9ydyAmIChSRVFfRkxVU0ggfCBSRVFfRElT Q0FSRCkpKSB7CiAJCWJpby0+YmlfYmRldiA9IGNjLT5kZXYtPmJkZXY7CiAJCWlmIChiaW9fc2Vj dG9ycyhiaW8pKQotCQkJYmlvLT5iaV9zZWN0b3IgPSBjYy0+c3RhcnQgKyBkbV90YXJnZXRfb2Zm c2V0KHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gY2Mt PnN0YXJ0ICsKKwkJCQlkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y KTsKIAkJcmV0dXJuIERNX01BUElPX1JFTUFQUEVEOwogCX0KIAotCWlvID0gY3J5cHRfaW9fYWxs b2MoY2MsIGJpbywgZG1fdGFyZ2V0X29mZnNldCh0aSwgYmlvLT5iaV9zZWN0b3IpKTsKKwlpbyA9 IGNyeXB0X2lvX2FsbG9jKGNjLCBiaW8sCisJCQkgICAgZG1fdGFyZ2V0X29mZnNldCh0aSwgYmlv LT5iaV9pdGVyLmJpX3NlY3RvcikpOwogCiAJaWYgKGJpb19kYXRhX2Rpcihpby0+YmFzZV9iaW8p ID09IFJFQUQpIHsKIAkJaWYgKGtjcnlwdGRfaW9fcmVhZChpbywgR0ZQX05PV0FJVCkpCmRpZmYg LS1naXQgYS9kcml2ZXJzL21kL2RtLWRlbGF5LmMgYi9kcml2ZXJzL21kL2RtLWRlbGF5LmMKaW5k ZXggNDk2ZDVmMy4uODRjODYwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1kZWxheS5jCisr KyBiL2RyaXZlcnMvbWQvZG0tZGVsYXkuYwpAQCAtMjgxLDE0ICsyODEsMTUgQEAgc3RhdGljIGlu dCBkZWxheV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAlpZiAo KGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFKSAmJiAoZGMtPmRldl93cml0ZSkpIHsKIAkJYmlv LT5iaV9iZGV2ID0gZGMtPmRldl93cml0ZS0+YmRldjsKIAkJaWYgKGJpb19zZWN0b3JzKGJpbykp Ci0JCQliaW8tPmJpX3NlY3RvciA9IGRjLT5zdGFydF93cml0ZSArCi0JCQkJCSBkbV90YXJnZXRf b2Zmc2V0KHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0g ZGMtPnN0YXJ0X3dyaXRlICsKKwkJCQlkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAogCQlyZXR1cm4gZGVsYXlfYmlvKGRjLCBkYy0+d3JpdGVfZGVsYXksIGJp byk7CiAJfQogCiAJYmlvLT5iaV9iZGV2ID0gZGMtPmRldl9yZWFkLT5iZGV2OwotCWJpby0+Ymlf c2VjdG9yID0gZGMtPnN0YXJ0X3JlYWQgKyBkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX3Nl Y3Rvcik7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGRjLT5zdGFydF9yZWFkICsKKwkJZG1f dGFyZ2V0X29mZnNldCh0aSwgYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKIAlyZXR1cm4gZGVs YXlfYmlvKGRjLCBkYy0+cmVhZF9kZWxheSwgYmlvKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWQvZG0tZmxha2V5LmMgYi9kcml2ZXJzL21kL2RtLWZsYWtleS5jCmluZGV4IGM4MGEwZWMuLmIy NTdlNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tZmxha2V5LmMKKysrIGIvZHJpdmVycy9t ZC9kbS1mbGFrZXkuYwpAQCAtMjQ4LDcgKzI0OCw4IEBAIHN0YXRpYyB2b2lkIGZsYWtleV9tYXBf YmlvKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpiaW8pCiAKIAliaW8tPmJpX2Jk ZXYgPSBmYy0+ZGV2LT5iZGV2OwogCWlmIChiaW9fc2VjdG9ycyhiaW8pKQotCQliaW8tPmJpX3Nl Y3RvciA9IGZsYWtleV9tYXBfc2VjdG9yKHRpLCBiaW8tPmJpX3NlY3Rvcik7CisJCWJpby0+Ymlf aXRlci5iaV9zZWN0b3IgPQorCQkJZmxha2V5X21hcF9zZWN0b3IodGksIGJpby0+YmlfaXRlci5i aV9zZWN0b3IpOwogfQogCiBzdGF0aWMgdm9pZCBjb3JydXB0X2Jpb19kYXRhKHN0cnVjdCBiaW8g KmJpbywgc3RydWN0IGZsYWtleV9jICpmYykKQEAgLTI2NSw4ICsyNjYsOCBAQCBzdGF0aWMgdm9p ZCBjb3JydXB0X2Jpb19kYXRhKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGZsYWtleV9jICpmYykK IAkJRE1ERUJVRygiQ29ycnVwdGluZyBkYXRhIGJpbz0lcCBieSB3cml0aW5nICV1IHRvIGJ5dGUg JXUgIgogCQkJIihydz0lYyBiaV9ydz0lbHUgYmlfc2VjdG9yPSVsbHUgY3VyX2J5dGVzPSV1KVxu IiwKIAkJCWJpbywgZmMtPmNvcnJ1cHRfYmlvX3ZhbHVlLCBmYy0+Y29ycnVwdF9iaW9fYnl0ZSwK LQkJCShiaW9fZGF0YV9kaXIoYmlvKSA9PSBXUklURSkgPyAndycgOiAncicsCi0JCQliaW8tPmJp X3J3LCAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+Ymlfc2VjdG9yLCBiaW9fYnl0ZXMpOworCQkJ KGJpb19kYXRhX2RpcihiaW8pID09IFdSSVRFKSA/ICd3JyA6ICdyJywgYmlvLT5iaV9ydywKKwkJ CSh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgYmlvX2J5dGVzKTsK IAl9CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0taW8uYyBiL2RyaXZlcnMvbWQvZG0t aW8uYwppbmRleCBlYTQ5ODM0Li5hNmRlNWM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLWlv LmMKKysrIGIvZHJpdmVycy9tZC9kbS1pby5jCkBAIC0zMDUsMTQgKzMwNSwxNSBAQCBzdGF0aWMg dm9pZCBkb19yZWdpb24oaW50IHJ3LCB1bnNpZ25lZCByZWdpb24sIHN0cnVjdCBkbV9pb19yZWdp b24gKndoZXJlLAogCQkJCQkgIGRtX3NlY3Rvcl9kaXZfdXAocmVtYWluaW5nLCAoUEFHRV9TSVpF ID4+IFNFQ1RPUl9TSElGVCkpKTsKIAogCQliaW8gPSBiaW9fYWxsb2NfYmlvc2V0KEdGUF9OT0lP LCBudW1fYnZlY3MsIGlvLT5jbGllbnQtPmJpb3MpOwotCQliaW8tPmJpX3NlY3RvciA9IHdoZXJl LT5zZWN0b3IgKyAod2hlcmUtPmNvdW50IC0gcmVtYWluaW5nKTsKKwkJYmlvLT5iaV9pdGVyLmJp X3NlY3RvciA9IHdoZXJlLT5zZWN0b3IgKworCQkJKHdoZXJlLT5jb3VudCAtIHJlbWFpbmluZyk7 CiAJCWJpby0+YmlfYmRldiA9IHdoZXJlLT5iZGV2OwogCQliaW8tPmJpX2VuZF9pbyA9IGVuZGlv OwogCQlzdG9yZV9pb19hbmRfcmVnaW9uX2luX2JpbyhiaW8sIGlvLCByZWdpb24pOwogCiAJCWlm IChydyAmIFJFUV9ESVNDQVJEKSB7CiAJCQludW1fc2VjdG9ycyA9IG1pbl90KHNlY3Rvcl90LCBx LT5saW1pdHMubWF4X2Rpc2NhcmRfc2VjdG9ycywgcmVtYWluaW5nKTsKLQkJCWJpby0+Ymlfc2l6 ZSA9IG51bV9zZWN0b3JzIDw8IFNFQ1RPUl9TSElGVDsKKwkJCWJpby0+YmlfaXRlci5iaV9zaXpl ID0gbnVtX3NlY3RvcnMgPDwgU0VDVE9SX1NISUZUOwogCQkJcmVtYWluaW5nIC09IG51bV9zZWN0 b3JzOwogCQl9IGVsc2UgaWYgKHJ3ICYgUkVRX1dSSVRFX1NBTUUpIHsKIAkJCS8qCkBAIC0zMjEs NyArMzIyLDcgQEAgc3RhdGljIHZvaWQgZG9fcmVnaW9uKGludCBydywgdW5zaWduZWQgcmVnaW9u LCBzdHJ1Y3QgZG1faW9fcmVnaW9uICp3aGVyZSwKIAkJCWRwLT5nZXRfcGFnZShkcCwgJnBhZ2Us ICZsZW4sICZvZmZzZXQpOwogCQkJYmlvX2FkZF9wYWdlKGJpbywgcGFnZSwgbG9naWNhbF9ibG9j a19zaXplLCBvZmZzZXQpOwogCQkJbnVtX3NlY3RvcnMgPSBtaW5fdChzZWN0b3JfdCwgcS0+bGlt aXRzLm1heF93cml0ZV9zYW1lX3NlY3RvcnMsIHJlbWFpbmluZyk7Ci0JCQliaW8tPmJpX3NpemUg PSBudW1fc2VjdG9ycyA8PCBTRUNUT1JfU0hJRlQ7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 IG51bV9zZWN0b3JzIDw8IFNFQ1RPUl9TSElGVDsKIAogCQkJb2Zmc2V0ID0gMDsKIAkJCXJlbWFp bmluZyAtPSBudW1fc2VjdG9yczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tbGluZWFyLmMg Yi9kcml2ZXJzL21kL2RtLWxpbmVhci5jCmluZGV4IDRmOTlkMjYuLjUzZTg0OGMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbWQvZG0tbGluZWFyLmMKKysrIGIvZHJpdmVycy9tZC9kbS1saW5lYXIuYwpA QCAtODUsNyArODUsOCBAQCBzdGF0aWMgdm9pZCBsaW5lYXJfbWFwX2JpbyhzdHJ1Y3QgZG1fdGFy Z2V0ICp0aSwgc3RydWN0IGJpbyAqYmlvKQogCiAJYmlvLT5iaV9iZGV2ID0gbGMtPmRldi0+YmRl djsKIAlpZiAoYmlvX3NlY3RvcnMoYmlvKSkKLQkJYmlvLT5iaV9zZWN0b3IgPSBsaW5lYXJfbWFw X3NlY3Rvcih0aSwgYmlvLT5iaV9zZWN0b3IpOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0K KwkJCWxpbmVhcl9tYXBfc2VjdG9yKHRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIH0KIAog c3RhdGljIGludCBsaW5lYXJfbWFwKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpi aW8pCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXJhaWQxLmMgYi9kcml2ZXJzL21kL2RtLXJh aWQxLmMKaW5kZXggNjk5YjViZS4uZTNlZmI5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1y YWlkMS5jCisrKyBiL2RyaXZlcnMvbWQvZG0tcmFpZDEuYwpAQCAtNDMyLDcgKzQzMiw3IEBAIHN0 YXRpYyBpbnQgbWlycm9yX2F2YWlsYWJsZShzdHJ1Y3QgbWlycm9yX3NldCAqbXMsIHN0cnVjdCBi aW8gKmJpbykKIAlyZWdpb25fdCByZWdpb24gPSBkbV9yaF9iaW9fdG9fcmVnaW9uKG1zLT5yaCwg YmlvKTsKIAogCWlmIChsb2ctPnR5cGUtPmluX3N5bmMobG9nLCByZWdpb24sIDApKQotCQlyZXR1 cm4gY2hvb3NlX21pcnJvcihtcywgIGJpby0+Ymlfc2VjdG9yKSA/IDEgOiAwOworCQlyZXR1cm4g Y2hvb3NlX21pcnJvcihtcywgIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpID8gMSA6IDA7CiAKIAly ZXR1cm4gMDsKIH0KQEAgLTQ0MiwxNSArNDQyLDE1IEBAIHN0YXRpYyBpbnQgbWlycm9yX2F2YWls YWJsZShzdHJ1Y3QgbWlycm9yX3NldCAqbXMsIHN0cnVjdCBiaW8gKmJpbykKICAqLwogc3RhdGlj IHNlY3Rvcl90IG1hcF9zZWN0b3Ioc3RydWN0IG1pcnJvciAqbSwgc3RydWN0IGJpbyAqYmlvKQog ewotCWlmICh1bmxpa2VseSghYmlvLT5iaV9zaXplKSkKKwlpZiAodW5saWtlbHkoIWJpby0+Ymlf aXRlci5iaV9zaXplKSkKIAkJcmV0dXJuIDA7Ci0JcmV0dXJuIG0tPm9mZnNldCArIGRtX3Rhcmdl dF9vZmZzZXQobS0+bXMtPnRpLCBiaW8tPmJpX3NlY3Rvcik7CisJcmV0dXJuIG0tPm9mZnNldCAr IGRtX3RhcmdldF9vZmZzZXQobS0+bXMtPnRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIH0K IAogc3RhdGljIHZvaWQgbWFwX2JpbyhzdHJ1Y3QgbWlycm9yICptLCBzdHJ1Y3QgYmlvICpiaW8p CiB7CiAJYmlvLT5iaV9iZGV2ID0gbS0+ZGV2LT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gbWFw X3NlY3RvcihtLCBiaW8pOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBtYXBfc2VjdG9yKG0s IGJpbyk7CiB9CiAKIHN0YXRpYyB2b2lkIG1hcF9yZWdpb24oc3RydWN0IGRtX2lvX3JlZ2lvbiAq aW8sIHN0cnVjdCBtaXJyb3IgKm0sCkBAIC01MjcsNyArNTI3LDcgQEAgc3RhdGljIHZvaWQgcmVh ZF9hc3luY19iaW8oc3RydWN0IG1pcnJvciAqbSwgc3RydWN0IGJpbyAqYmlvKQogCXN0cnVjdCBk bV9pb19yZXF1ZXN0IGlvX3JlcSA9IHsKIAkJLmJpX3J3ID0gUkVBRCwKIAkJLm1lbS50eXBlID0g RE1fSU9fQlZFQywKLQkJLm1lbS5wdHIuYnZlYyA9IGJpby0+YmlfaW9fdmVjICsgYmlvLT5iaV9p ZHgsCisJCS5tZW0ucHRyLmJ2ZWMgPSBiaW8tPmJpX2lvX3ZlYyArIGJpby0+YmlfaXRlci5iaV9p ZHgsCiAJCS5ub3RpZnkuZm4gPSByZWFkX2NhbGxiYWNrLAogCQkubm90aWZ5LmNvbnRleHQgPSBi aW8sCiAJCS5jbGllbnQgPSBtLT5tcy0+aW9fY2xpZW50LApAQCAtNTU5LDcgKzU1OSw3IEBAIHN0 YXRpYyB2b2lkIGRvX3JlYWRzKHN0cnVjdCBtaXJyb3Jfc2V0ICptcywgc3RydWN0IGJpb19saXN0 ICpyZWFkcykKIAkJICogV2UgY2FuIG9ubHkgcmVhZCBiYWxhbmNlIGlmIHRoZSByZWdpb24gaXMg aW4gc3luYy4KIAkJICovCiAJCWlmIChsaWtlbHkocmVnaW9uX2luX3N5bmMobXMsIHJlZ2lvbiwg MSkpKQotCQkJbSA9IGNob29zZV9taXJyb3IobXMsIGJpby0+Ymlfc2VjdG9yKTsKKwkJCW0gPSBj aG9vc2VfbWlycm9yKG1zLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJZWxzZSBpZiAobSAm JiBhdG9taWNfcmVhZCgmbS0+ZXJyb3JfY291bnQpKQogCQkJbSA9IE5VTEw7CiAKQEAgLTYzMCw3 ICs2MzAsNyBAQCBzdGF0aWMgdm9pZCBkb193cml0ZShzdHJ1Y3QgbWlycm9yX3NldCAqbXMsIHN0 cnVjdCBiaW8gKmJpbykKIAlzdHJ1Y3QgZG1faW9fcmVxdWVzdCBpb19yZXEgPSB7CiAJCS5iaV9y dyA9IFdSSVRFIHwgKGJpby0+YmlfcncgJiBXUklURV9GTFVTSF9GVUEpLAogCQkubWVtLnR5cGUg PSBETV9JT19CVkVDLAotCQkubWVtLnB0ci5idmVjID0gYmlvLT5iaV9pb192ZWMgKyBiaW8tPmJp X2lkeCwKKwkJLm1lbS5wdHIuYnZlYyA9IGJpby0+YmlfaW9fdmVjICsgYmlvLT5iaV9pdGVyLmJp X2lkeCwKIAkJLm5vdGlmeS5mbiA9IHdyaXRlX2NhbGxiYWNrLAogCQkubm90aWZ5LmNvbnRleHQg PSBiaW8sCiAJCS5jbGllbnQgPSBtcy0+aW9fY2xpZW50LApAQCAtMTE4Miw3ICsxMTgyLDcgQEAg c3RhdGljIGludCBtaXJyb3JfbWFwKHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpi aW8pCiAJICogVGhlIHJlZ2lvbiBpcyBpbi1zeW5jIGFuZCB3ZSBjYW4gcGVyZm9ybSByZWFkcyBk aXJlY3RseS4KIAkgKiBTdG9yZSBlbm91Z2ggaW5mb3JtYXRpb24gc28gd2UgY2FuIHJldHJ5IGlm IGl0IGZhaWxzLgogCSAqLwotCW0gPSBjaG9vc2VfbWlycm9yKG1zLCBiaW8tPmJpX3NlY3Rvcik7 CisJbSA9IGNob29zZV9taXJyb3IobXMsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCWlmICh1 bmxpa2VseSghbSkpCiAJCXJldHVybiAtRUlPOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2Rt LXJlZ2lvbi1oYXNoLmMgYi9kcml2ZXJzL21kL2RtLXJlZ2lvbi1oYXNoLmMKaW5kZXggNjk3MzJl MC4uYjkyOWZkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1yZWdpb24taGFzaC5jCisrKyBi L2RyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2guYwpAQCAtMTI2LDcgKzEyNiw4IEBAIEVYUE9SVF9T WU1CT0xfR1BMKGRtX3JoX3JlZ2lvbl90b19zZWN0b3IpOwogCiByZWdpb25fdCBkbV9yaF9iaW9f dG9fcmVnaW9uKHN0cnVjdCBkbV9yZWdpb25faGFzaCAqcmgsIHN0cnVjdCBiaW8gKmJpbykKIHsK LQlyZXR1cm4gZG1fcmhfc2VjdG9yX3RvX3JlZ2lvbihyaCwgYmlvLT5iaV9zZWN0b3IgLSByaC0+ dGFyZ2V0X2JlZ2luKTsKKwlyZXR1cm4gZG1fcmhfc2VjdG9yX3RvX3JlZ2lvbihyaCwgYmlvLT5i aV9pdGVyLmJpX3NlY3RvciAtCisJCQkJICAgICAgcmgtPnRhcmdldF9iZWdpbik7CiB9CiBFWFBP UlRfU1lNQk9MX0dQTChkbV9yaF9iaW9fdG9fcmVnaW9uKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9kbS1zbmFwLmMgYi9kcml2ZXJzL21kL2RtLXNuYXAuYwppbmRleCBjNDM0ZTVhLi5hMWRm Nzc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLXNuYXAuYworKysgYi9kcml2ZXJzL21kL2Rt LXNuYXAuYwpAQCAtMTU2MywxMCArMTU2MywxMCBAQCBzdGF0aWMgdm9pZCByZW1hcF9leGNlcHRp b24oc3RydWN0IGRtX3NuYXBzaG90ICpzLCBzdHJ1Y3QgZG1fZXhjZXB0aW9uICplLAogCQkJICAg IHN0cnVjdCBiaW8gKmJpbywgY2h1bmtfdCBjaHVuaykKIHsKIAliaW8tPmJpX2JkZXYgPSBzLT5j b3ctPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBjaHVua190b19zZWN0b3Iocy0+c3RvcmUsCisJ YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGNodW5rX3RvX3NlY3RvcihzLT5zdG9yZSwKIAkJCQkJ IGRtX2NodW5rX251bWJlcihlLT5uZXdfY2h1bmspICsKIAkJCQkJIChjaHVuayAtIGUtPm9sZF9j aHVuaykpICsKLQkJCQkJIChiaW8tPmJpX3NlY3RvciAmCisJCQkJCSAoYmlvLT5iaV9pdGVyLmJp X3NlY3RvciAmCiAJCQkJCSAgcy0+c3RvcmUtPmNodW5rX21hc2spOwogfQogCkBAIC0xNTg1LDcg KzE1ODUsNyBAQCBzdGF0aWMgaW50IHNuYXBzaG90X21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwg c3RydWN0IGJpbyAqYmlvKQogCQlyZXR1cm4gRE1fTUFQSU9fUkVNQVBQRUQ7CiAJfQogCi0JY2h1 bmsgPSBzZWN0b3JfdG9fY2h1bmsocy0+c3RvcmUsIGJpby0+Ymlfc2VjdG9yKTsKKwljaHVuayA9 IHNlY3Rvcl90b19jaHVuayhzLT5zdG9yZSwgYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKIAkv KiBGdWxsIHNuYXBzaG90cyBhcmUgbm90IHVzYWJsZSAqLwogCS8qIFRvIGdldCBoZXJlIHRoZSB0 YWJsZSBtdXN0IGJlIGxpdmUgc28gcy0+YWN0aXZlIGlzIGFsd2F5cyBzZXQuICovCkBAIC0xNjQ2 LDcgKzE2NDYsOCBAQCBzdGF0aWMgaW50IHNuYXBzaG90X21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0 aSwgc3RydWN0IGJpbyAqYmlvKQogCQlyID0gRE1fTUFQSU9fU1VCTUlUVEVEOwogCiAJCWlmICgh cGUtPnN0YXJ0ZWQgJiYKLQkJICAgIGJpby0+Ymlfc2l6ZSA9PSAocy0+c3RvcmUtPmNodW5rX3Np emUgPDwgU0VDVE9SX1NISUZUKSkgeworCQkgICAgYmlvLT5iaV9pdGVyLmJpX3NpemUgPT0KKwkJ ICAgIChzLT5zdG9yZS0+Y2h1bmtfc2l6ZSA8PCBTRUNUT1JfU0hJRlQpKSB7CiAJCQlwZS0+c3Rh cnRlZCA9IDE7CiAJCQl1cF93cml0ZSgmcy0+bG9jayk7CiAJCQlzdGFydF9mdWxsX2JpbyhwZSwg YmlvKTsKQEAgLTE3MDIsNyArMTcwMyw3IEBAIHN0YXRpYyBpbnQgc25hcHNob3RfbWVyZ2VfbWFw KHN0cnVjdCBkbV90YXJnZXQgKnRpLCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXJldHVybiBETV9NQVBJ T19SRU1BUFBFRDsKIAl9CiAKLQljaHVuayA9IHNlY3Rvcl90b19jaHVuayhzLT5zdG9yZSwgYmlv LT5iaV9zZWN0b3IpOworCWNodW5rID0gc2VjdG9yX3RvX2NodW5rKHMtPnN0b3JlLCBiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yKTsKIAogCWRvd25fd3JpdGUoJnMtPmxvY2spOwogCkBAIC0yMDM5LDcg KzIwNDAsNyBAQCBzdGF0aWMgaW50IGRvX29yaWdpbihzdHJ1Y3QgZG1fZGV2ICpvcmlnaW4sIHN0 cnVjdCBiaW8gKmJpbykKIAlkb3duX3JlYWQoJl9vcmlnaW5zX2xvY2spOwogCW8gPSBfX2xvb2t1 cF9vcmlnaW4ob3JpZ2luLT5iZGV2KTsKIAlpZiAobykKLQkJciA9IF9fb3JpZ2luX3dyaXRlKCZv LT5zbmFwc2hvdHMsIGJpby0+Ymlfc2VjdG9yLCBiaW8pOworCQlyID0gX19vcmlnaW5fd3JpdGUo Jm8tPnNuYXBzaG90cywgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgYmlvKTsKIAl1cF9yZWFkKCZf b3JpZ2luc19sb2NrKTsKIAogCXJldHVybiByOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1z dHJpcGUuYyBiL2RyaXZlcnMvbWQvZG0tc3RyaXBlLmMKaW5kZXggZDkwN2NhNi4uODA0NWIwOSAx MDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1zdHJpcGUuYworKysgYi9kcml2ZXJzL21kL2RtLXN0 cmlwZS5jCkBAIC0yNTgsMTMgKzI1OCwxNSBAQCBzdGF0aWMgaW50IHN0cmlwZV9tYXBfcmFuZ2Uo c3RydWN0IHN0cmlwZV9jICpzYywgc3RydWN0IGJpbyAqYmlvLAogewogCXNlY3Rvcl90IGJlZ2lu LCBlbmQ7CiAKLQlzdHJpcGVfbWFwX3JhbmdlX3NlY3RvcihzYywgYmlvLT5iaV9zZWN0b3IsIHRh cmdldF9zdHJpcGUsICZiZWdpbik7CisJc3RyaXBlX21hcF9yYW5nZV9zZWN0b3Ioc2MsIGJpby0+ YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJdGFyZ2V0X3N0cmlwZSwgJmJlZ2luKTsKIAlzdHJpcGVf bWFwX3JhbmdlX3NlY3RvcihzYywgYmlvX2VuZF9zZWN0b3IoYmlvKSwKIAkJCQl0YXJnZXRfc3Ry aXBlLCAmZW5kKTsKIAlpZiAoYmVnaW4gPCBlbmQpIHsKIAkJYmlvLT5iaV9iZGV2ID0gc2MtPnN0 cmlwZVt0YXJnZXRfc3RyaXBlXS5kZXYtPmJkZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0gYmVnaW4g KyBzYy0+c3RyaXBlW3RhcmdldF9zdHJpcGVdLnBoeXNpY2FsX3N0YXJ0OwotCQliaW8tPmJpX3Np emUgPSB0b19ieXRlcyhlbmQgLSBiZWdpbik7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBi ZWdpbiArCisJCQlzYy0+c3RyaXBlW3RhcmdldF9zdHJpcGVdLnBoeXNpY2FsX3N0YXJ0OworCQli aW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IHRvX2J5dGVzKGVuZCAtIGJlZ2luKTsKIAkJcmV0dXJuIERN X01BUElPX1JFTUFQUEVEOwogCX0gZWxzZSB7CiAJCS8qIFRoZSByYW5nZSBkb2Vzbid0IG1hcCB0 byB0aGUgdGFyZ2V0IHN0cmlwZSAqLwpAQCAtMjkyLDkgKzI5NCwxMCBAQCBzdGF0aWMgaW50IHN0 cmlwZV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBiaW8gKmJpbykKIAkJcmV0dXJu IHN0cmlwZV9tYXBfcmFuZ2Uoc2MsIGJpbywgdGFyZ2V0X2Jpb19ucik7CiAJfQogCi0Jc3RyaXBl X21hcF9zZWN0b3Ioc2MsIGJpby0+Ymlfc2VjdG9yLCAmc3RyaXBlLCAmYmlvLT5iaV9zZWN0b3Ip OworCXN0cmlwZV9tYXBfc2VjdG9yKHNjLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJICAm c3RyaXBlLCAmYmlvLT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAKLQliaW8tPmJpX3NlY3RvciArPSBz Yy0+c3RyaXBlW3N0cmlwZV0ucGh5c2ljYWxfc3RhcnQ7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciArPSBzYy0+c3RyaXBlW3N0cmlwZV0ucGh5c2ljYWxfc3RhcnQ7CiAJYmlvLT5iaV9iZGV2ID0g c2MtPnN0cmlwZVtzdHJpcGVdLmRldi0+YmRldjsKIAogCXJldHVybiBETV9NQVBJT19SRU1BUFBF RDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tc3dpdGNoLmMgYi9kcml2ZXJzL21kL2RtLXN3 aXRjaC5jCmluZGV4IGZmOWFjNGIuLjA5YTY4OGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0t c3dpdGNoLmMKKysrIGIvZHJpdmVycy9tZC9kbS1zd2l0Y2guYwpAQCAtMzExLDExICszMTEsMTEg QEAgZXJyb3I6CiBzdGF0aWMgaW50IHN3aXRjaF9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0 cnVjdCBiaW8gKmJpbykKIHsKIAlzdHJ1Y3Qgc3dpdGNoX2N0eCAqc2N0eCA9IHRpLT5wcml2YXRl OwotCXNlY3Rvcl90IG9mZnNldCA9IGRtX3RhcmdldF9vZmZzZXQodGksIGJpby0+Ymlfc2VjdG9y KTsKKwlzZWN0b3JfdCBvZmZzZXQgPSBkbV90YXJnZXRfb2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yKTsKIAl1bnNpZ25lZCBwYXRoX25yID0gc3dpdGNoX2dldF9wYXRoX25yKHNjdHgs IG9mZnNldCk7CiAKIAliaW8tPmJpX2JkZXYgPSBzY3R4LT5wYXRoX2xpc3RbcGF0aF9ucl0uZG1k ZXYtPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBzY3R4LT5wYXRoX2xpc3RbcGF0aF9ucl0uc3Rh cnQgKyBvZmZzZXQ7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNjdHgtPnBhdGhfbGlzdFtw YXRoX25yXS5zdGFydCArIG9mZnNldDsKIAogCXJldHVybiBETV9NQVBJT19SRU1BUFBFRDsKIH0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tdGhpbi5jIGIvZHJpdmVycy9tZC9kbS10aGluLmMK aW5kZXggODhmMmY4MC4uMmUyMjEyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS10aGluLmMK KysrIGIvZHJpdmVycy9tZC9kbS10aGluLmMKQEAgLTQxMyw3ICs0MTMsNyBAQCBzdGF0aWMgYm9v bCBibG9ja19zaXplX2lzX3Bvd2VyX29mX3R3byhzdHJ1Y3QgcG9vbCAqcG9vbCkKIHN0YXRpYyBk bV9ibG9ja190IGdldF9iaW9fYmxvY2soc3RydWN0IHRoaW5fYyAqdGMsIHN0cnVjdCBiaW8gKmJp bykKIHsKIAlzdHJ1Y3QgcG9vbCAqcG9vbCA9IHRjLT5wb29sOwotCXNlY3Rvcl90IGJsb2NrX25y ID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX3QgYmxvY2tfbnIgPSBiaW8tPmJpX2l0ZXIuYmlf c2VjdG9yOwogCiAJaWYgKGJsb2NrX3NpemVfaXNfcG93ZXJfb2ZfdHdvKHBvb2wpKQogCQlibG9j a19uciA+Pj0gcG9vbC0+c2VjdG9yc19wZXJfYmxvY2tfc2hpZnQ7CkBAIC00MjYsMTQgKzQyNiwx NSBAQCBzdGF0aWMgZG1fYmxvY2tfdCBnZXRfYmlvX2Jsb2NrKHN0cnVjdCB0aGluX2MgKnRjLCBz dHJ1Y3QgYmlvICpiaW8pCiBzdGF0aWMgdm9pZCByZW1hcChzdHJ1Y3QgdGhpbl9jICp0Yywgc3Ry dWN0IGJpbyAqYmlvLCBkbV9ibG9ja190IGJsb2NrKQogewogCXN0cnVjdCBwb29sICpwb29sID0g dGMtPnBvb2w7Ci0Jc2VjdG9yX3QgYmlfc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9y X3QgYmlfc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAogCWJpby0+YmlfYmRldiA9 IHRjLT5wb29sX2Rldi0+YmRldjsKIAlpZiAoYmxvY2tfc2l6ZV9pc19wb3dlcl9vZl90d28ocG9v bCkpCi0JCWJpby0+Ymlfc2VjdG9yID0gKGJsb2NrIDw8IHBvb2wtPnNlY3RvcnNfcGVyX2Jsb2Nr X3NoaWZ0KSB8Ci0JCQkJKGJpX3NlY3RvciAmIChwb29sLT5zZWN0b3JzX3Blcl9ibG9jayAtIDEp KTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9CisJCQkoYmxvY2sgPDwgcG9vbC0+c2VjdG9y c19wZXJfYmxvY2tfc2hpZnQpIHwKKwkJCShiaV9zZWN0b3IgJiAocG9vbC0+c2VjdG9yc19wZXJf YmxvY2sgLSAxKSk7CiAJZWxzZQotCQliaW8tPmJpX3NlY3RvciA9IChibG9jayAqIHBvb2wtPnNl Y3RvcnNfcGVyX2Jsb2NrKSArCisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSAoYmxvY2sgKiBw b29sLT5zZWN0b3JzX3Blcl9ibG9jaykgKwogCQkJCSBzZWN0b3JfZGl2KGJpX3NlY3RvciwgcG9v bC0+c2VjdG9yc19wZXJfYmxvY2spOwogfQogCkBAIC03MjEsNyArNzIyLDggQEAgc3RhdGljIHZv aWQgcHJvY2Vzc19wcmVwYXJlZChzdHJ1Y3QgcG9vbCAqcG9vbCwgc3RydWN0IGxpc3RfaGVhZCAq aGVhZCwKICAqLwogc3RhdGljIGludCBpb19vdmVybGFwc19ibG9jayhzdHJ1Y3QgcG9vbCAqcG9v bCwgc3RydWN0IGJpbyAqYmlvKQogewotCXJldHVybiBiaW8tPmJpX3NpemUgPT0gKHBvb2wtPnNl Y3RvcnNfcGVyX2Jsb2NrIDw8IFNFQ1RPUl9TSElGVCk7CisJcmV0dXJuIGJpby0+YmlfaXRlci5i aV9zaXplID09CisJCShwb29sLT5zZWN0b3JzX3Blcl9ibG9jayA8PCBTRUNUT1JfU0hJRlQpOwog fQogCiBzdGF0aWMgaW50IGlvX292ZXJ3cml0ZXNfYmxvY2soc3RydWN0IHBvb2wgKnBvb2wsIHN0 cnVjdCBiaW8gKmJpbykKQEAgLTExMjEsNyArMTEyMyw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nf c2hhcmVkX2JpbyhzdHJ1Y3QgdGhpbl9jICp0Yywgc3RydWN0IGJpbyAqYmlvLAogCWlmIChiaW9f ZGV0YWluKHBvb2wsICZrZXksIGJpbywgJmNlbGwpKQogCQlyZXR1cm47CiAKLQlpZiAoYmlvX2Rh dGFfZGlyKGJpbykgPT0gV1JJVEUgJiYgYmlvLT5iaV9zaXplKQorCWlmIChiaW9fZGF0YV9kaXIo YmlvKSA9PSBXUklURSAmJiBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSkKIAkJYnJlYWtfc2hhcmluZyh0 YywgYmlvLCBibG9jaywgJmtleSwgbG9va3VwX3Jlc3VsdCwgY2VsbCk7CiAJZWxzZSB7CiAJCXN0 cnVjdCBkbV90aGluX2VuZGlvX2hvb2sgKmggPSBkbV9wZXJfYmlvX2RhdGEoYmlvLCBzaXplb2Yo c3RydWN0IGRtX3RoaW5fZW5kaW9faG9vaykpOwpAQCAtMTE0NCw3ICsxMTQ2LDcgQEAgc3RhdGlj IHZvaWQgcHJvdmlzaW9uX2Jsb2NrKHN0cnVjdCB0aGluX2MgKnRjLCBzdHJ1Y3QgYmlvICpiaW8s IGRtX2Jsb2NrX3QgYmxvY2sKIAkvKgogCSAqIFJlbWFwIGVtcHR5IGJpb3MgKGZsdXNoZXMpIGlt bWVkaWF0ZWx5LCB3aXRob3V0IHByb3Zpc2lvbmluZy4KIAkgKi8KLQlpZiAoIWJpby0+Ymlfc2l6 ZSkgeworCWlmICghYmlvLT5iaV9pdGVyLmJpX3NpemUpIHsKIAkJaW5jX2FsbF9pb19lbnRyeShw b29sLCBiaW8pOwogCQljZWxsX2RlZmVyX25vX2hvbGRlcih0YywgY2VsbCk7CiAKQEAgLTEyNDQs NyArMTI0Niw4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfYmlvX3JlYWRfb25seShzdHJ1Y3QgdGhp bl9jICp0Yywgc3RydWN0IGJpbyAqYmlvKQogCXIgPSBkbV90aGluX2ZpbmRfYmxvY2sodGMtPnRk LCBibG9jaywgMSwgJmxvb2t1cF9yZXN1bHQpOwogCXN3aXRjaCAocikgewogCWNhc2UgMDoKLQkJ aWYgKGxvb2t1cF9yZXN1bHQuc2hhcmVkICYmIChydyA9PSBXUklURSkgJiYgYmlvLT5iaV9zaXpl KQorCQlpZiAobG9va3VwX3Jlc3VsdC5zaGFyZWQgJiYKKwkJICAgIChydyA9PSBXUklURSkgJiYg YmlvLT5iaV9pdGVyLmJpX3NpemUpCiAJCQliaW9faW9fZXJyb3IoYmlvKTsKIAkJZWxzZSB7CiAJ CQlpbmNfYWxsX2lvX2VudHJ5KHRjLT5wb29sLCBiaW8pOwpAQCAtMjgyNyw3ICsyODMwLDcgQEAg b3V0X3VubG9jazoKIAogc3RhdGljIGludCB0aGluX21hcChzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwg c3RydWN0IGJpbyAqYmlvKQogewotCWJpby0+Ymlfc2VjdG9yID0gZG1fdGFyZ2V0X29mZnNldCh0 aSwgYmlvLT5iaV9zZWN0b3IpOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBkbV90YXJnZXRf b2Zmc2V0KHRpLCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAogCXJldHVybiB0aGluX2Jpb19t YXAodGksIGJpbyk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXZlcml0eS5jIGIvZHJp dmVycy9tZC9kbS12ZXJpdHkuYwppbmRleCA0Yjc5NDFkLi5iZjg0YmIzIDEwMDY0NAotLS0gYS9k cml2ZXJzL21kL2RtLXZlcml0eS5jCisrKyBiL2RyaXZlcnMvbWQvZG0tdmVyaXR5LmMKQEAgLTQ5 Myw5ICs0OTMsOSBAQCBzdGF0aWMgaW50IHZlcml0eV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGks IHN0cnVjdCBiaW8gKmJpbykKIAlzdHJ1Y3QgZG1fdmVyaXR5X2lvICppbzsKIAogCWJpby0+Ymlf YmRldiA9IHYtPmRhdGFfZGV2LT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gdmVyaXR5X21hcF9z ZWN0b3IodiwgYmlvLT5iaV9zZWN0b3IpOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSB2ZXJp dHlfbWFwX3NlY3Rvcih2LCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAotCWlmICgoKHVuc2ln bmVkKWJpby0+Ymlfc2VjdG9yIHwgYmlvX3NlY3RvcnMoYmlvKSkgJgorCWlmICgoKHVuc2lnbmVk KWJpby0+YmlfaXRlci5iaV9zZWN0b3IgfCBiaW9fc2VjdG9ycyhiaW8pKSAmCiAJICAgICgoMSA8 PCAodi0+ZGF0YV9kZXZfYmxvY2tfYml0cyAtIFNFQ1RPUl9TSElGVCkpIC0gMSkpIHsKIAkJRE1F UlJfTElNSVQoInVuYWxpZ25lZCBpbyIpOwogCQlyZXR1cm4gLUVJTzsKQEAgLTUxNCw4ICs1MTQs OSBAQCBzdGF0aWMgaW50IHZlcml0eV9tYXAoc3RydWN0IGRtX3RhcmdldCAqdGksIHN0cnVjdCBi aW8gKmJpbykKIAlpby0+diA9IHY7CiAJaW8tPm9yaWdfYmlfZW5kX2lvID0gYmlvLT5iaV9lbmRf aW87CiAJaW8tPm9yaWdfYmlfcHJpdmF0ZSA9IGJpby0+YmlfcHJpdmF0ZTsKLQlpby0+YmxvY2sg PSBiaW8tPmJpX3NlY3RvciA+PiAodi0+ZGF0YV9kZXZfYmxvY2tfYml0cyAtIFNFQ1RPUl9TSElG VCk7Ci0JaW8tPm5fYmxvY2tzID0gYmlvLT5iaV9zaXplID4+IHYtPmRhdGFfZGV2X2Jsb2NrX2Jp dHM7CisJaW8tPmJsb2NrID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+PgorCQkodi0+ZGF0YV9k ZXZfYmxvY2tfYml0cyAtIFNFQ1RPUl9TSElGVCk7CisJaW8tPm5fYmxvY2tzID0gYmlvLT5iaV9p dGVyLmJpX3NpemUgPj4gdi0+ZGF0YV9kZXZfYmxvY2tfYml0czsKIAogCWJpby0+YmlfZW5kX2lv ID0gdmVyaXR5X2VuZF9pbzsKIAliaW8tPmJpX3ByaXZhdGUgPSBpbzsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWQvZG0uYyBiL2RyaXZlcnMvbWQvZG0uYwppbmRleCA5ZTM5ZDJiLi41NTQ0YWY3IDEw MDY0NAotLS0gYS9kcml2ZXJzL21kL2RtLmMKKysrIGIvZHJpdmVycy9tZC9kbS5jCkBAIC02Mzcs NyArNjM3LDcgQEAgc3RhdGljIHZvaWQgZGVjX3BlbmRpbmcoc3RydWN0IGRtX2lvICppbywgaW50 IGVycm9yKQogCQlpZiAoaW9fZXJyb3IgPT0gRE1fRU5ESU9fUkVRVUVVRSkKIAkJCXJldHVybjsK IAotCQlpZiAoKGJpby0+YmlfcncgJiBSRVFfRkxVU0gpICYmIGJpby0+Ymlfc2l6ZSkgeworCQlp ZiAoKGJpby0+YmlfcncgJiBSRVFfRkxVU0gpICYmIGJpby0+YmlfaXRlci5iaV9zaXplKSB7CiAJ CQkvKgogCQkJICogUHJlZmx1c2ggZG9uZSBmb3IgZmx1c2ggd2l0aCBkYXRhLCByZWlzc3VlCiAJ CQkgKiB3aXRob3V0IFJFUV9GTFVTSC4KQEAgLTY5Miw3ICs2OTIsNyBAQCBzdGF0aWMgdm9pZCBl bmRfY2xvbmVfYmlvKHN0cnVjdCBiaW8gKmNsb25lLCBpbnQgZXJyb3IpCiAJc3RydWN0IGRtX3Jx X2Nsb25lX2Jpb19pbmZvICppbmZvID0gY2xvbmUtPmJpX3ByaXZhdGU7CiAJc3RydWN0IGRtX3Jx X3RhcmdldF9pbyAqdGlvID0gaW5mby0+dGlvOwogCXN0cnVjdCBiaW8gKmJpbyA9IGluZm8tPm9y aWc7Ci0JdW5zaWduZWQgaW50IG5yX2J5dGVzID0gaW5mby0+b3JpZy0+Ymlfc2l6ZTsKKwl1bnNp Z25lZCBpbnQgbnJfYnl0ZXMgPSBpbmZvLT5vcmlnLT5iaV9pdGVyLmJpX3NpemU7CiAKIAliaW9f cHV0KGNsb25lKTsKIApAQCAtMTAyMyw3ICsxMDIzLDcgQEAgc3RhdGljIHZvaWQgX19tYXBfYmlv KHN0cnVjdCBkbV90YXJnZXRfaW8gKnRpbykKIAkgKiB0aGlzIGlvLgogCSAqLwogCWF0b21pY19p bmMoJnRpby0+aW8tPmlvX2NvdW50KTsKLQlzZWN0b3IgPSBjbG9uZS0+Ymlfc2VjdG9yOworCXNl Y3RvciA9IGNsb25lLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAlyID0gdGktPnR5cGUtPm1hcCh0aSwg Y2xvbmUpOwogCWlmIChyID09IERNX01BUElPX1JFTUFQUEVEKSB7CiAJCS8qIHRoZSBiaW8gaGFz IGJlZW4gcmVtYXBwZWQgc28gZGlzcGF0Y2ggaXQgKi8KQEAgLTEwNTUsMTMgKzEwNTUsMTMgQEAg c3RydWN0IGNsb25lX2luZm8gewogCiBzdGF0aWMgdm9pZCBiaW9fc2V0dXBfc2VjdG9yKHN0cnVj dCBiaW8gKmJpbywgc2VjdG9yX3Qgc2VjdG9yLCBzZWN0b3JfdCBsZW4pCiB7Ci0JYmlvLT5iaV9z ZWN0b3IgPSBzZWN0b3I7Ci0JYmlvLT5iaV9zaXplID0gdG9fYnl0ZXMobGVuKTsKKwliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zaXplID0gdG9fYnl0 ZXMobGVuKTsKIH0KIAogc3RhdGljIHZvaWQgYmlvX3NldHVwX2J2KHN0cnVjdCBiaW8gKmJpbywg dW5zaWduZWQgc2hvcnQgaWR4LCB1bnNpZ25lZCBzaG9ydCBidl9jb3VudCkKIHsKLQliaW8tPmJp X2lkeCA9IGlkeDsKKwliaW8tPmJpX2l0ZXIuYmlfaWR4ID0gaWR4OwogCWJpby0+YmlfdmNudCA9 IGlkeCArIGJ2X2NvdW50OwogCWJpby0+YmlfZmxhZ3MgJj0gfigxIDw8IEJJT19TRUdfVkFMSUQp OwogfQpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgc3RhdGljIHZvaWQgY2xvbmVfc3BsaXRfYmlvKHN0 cnVjdCBkbV90YXJnZXRfaW8gKnRpbywgc3RydWN0IGJpbyAqYmlvLAogCWNsb25lLT5iaV9ydyA9 IGJpby0+Ymlfcnc7CiAJY2xvbmUtPmJpX3ZjbnQgPSAxOwogCWNsb25lLT5iaV9pb192ZWMtPmJ2 X29mZnNldCA9IG9mZnNldDsKLQljbG9uZS0+YmlfaW9fdmVjLT5idl9sZW4gPSBjbG9uZS0+Ymlf c2l6ZTsKKwljbG9uZS0+YmlfaW9fdmVjLT5idl9sZW4gPSBjbG9uZS0+YmlfaXRlci5iaV9zaXpl OwogCWNsb25lLT5iaV9mbGFncyB8PSAxIDw8IEJJT19DTE9ORUQ7CiAKIAljbG9uZV9iaW9faW50 ZWdyaXR5KGJpbywgY2xvbmUsIGlkeCwgbGVuLCBvZmZzZXQsIDEpOwpAQCAtMTExNyw3ICsxMTE3 LDggQEAgc3RhdGljIHZvaWQgY2xvbmVfYmlvKHN0cnVjdCBkbV90YXJnZXRfaW8gKnRpbywgc3Ry dWN0IGJpbyAqYmlvLAogCWJpb19zZXR1cF9zZWN0b3IoY2xvbmUsIHNlY3RvciwgbGVuKTsKIAli aW9fc2V0dXBfYnYoY2xvbmUsIGlkeCwgYnZfY291bnQpOwogCi0JaWYgKGlkeCAhPSBiaW8tPmJp X2lkeCB8fCBjbG9uZS0+Ymlfc2l6ZSA8IGJpby0+Ymlfc2l6ZSkKKwlpZiAoaWR4ICE9IGJpby0+ YmlfaXRlci5iaV9pZHggfHwKKwkgICAgY2xvbmUtPmJpX2l0ZXIuYmlfc2l6ZSA8IGJpby0+Ymlf aXRlci5iaV9zaXplKQogCQl0cmltID0gMTsKIAljbG9uZV9iaW9faW50ZWdyaXR5KGJpbywgY2xv bmUsIGlkeCwgbGVuLCAwLCB0cmltKTsKIH0KQEAgLTE0MDUsOCArMTQwNiw4IEBAIHN0YXRpYyB2 b2lkIF9fc3BsaXRfYW5kX3Byb2Nlc3NfYmlvKHN0cnVjdCBtYXBwZWRfZGV2aWNlICptZCwKIAlj aS5pby0+YmlvID0gYmlvOwogCWNpLmlvLT5tZCA9IG1kOwogCXNwaW5fbG9ja19pbml0KCZjaS5p by0+ZW5kaW9fbG9jayk7Ci0JY2kuc2VjdG9yID0gYmlvLT5iaV9zZWN0b3I7Ci0JY2kuaWR4ID0g YmlvLT5iaV9pZHg7CisJY2kuc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwljaS5p ZHggPSBiaW8tPmJpX2l0ZXIuYmlfaWR4OwogCiAJc3RhcnRfaW9fYWNjdChjaS5pbyk7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWQvZmF1bHR5LmMgYi9kcml2ZXJzL21kL2ZhdWx0eS5jCmluZGV4 IDMxOTNhZWYuLmU4YjQ1NzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZmF1bHR5LmMKKysrIGIv ZHJpdmVycy9tZC9mYXVsdHkuYwpAQCAtNzQsOCArNzQsOCBAQCBzdGF0aWMgdm9pZCBmYXVsdHlf ZmFpbChzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnJvcikKIHsKIAlzdHJ1Y3QgYmlvICpiID0gYmlv LT5iaV9wcml2YXRlOwogCi0JYi0+Ymlfc2l6ZSA9IGJpby0+Ymlfc2l6ZTsKLQliLT5iaV9zZWN0 b3IgPSBiaW8tPmJpX3NlY3RvcjsKKwliLT5iaV9pdGVyLmJpX3NpemUgPSBiaW8tPmJpX2l0ZXIu Ymlfc2l6ZTsKKwliLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7 CiAKIAliaW9fcHV0KGJpbyk7CiAKQEAgLTE4NSwyNiArMTg1LDMxIEBAIHN0YXRpYyB2b2lkIG1h a2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCQlyZXR1 cm47CiAJCX0KIAotCQlpZiAoY2hlY2tfc2VjdG9yKGNvbmYsIGJpby0+Ymlfc2VjdG9yLCBiaW9f ZW5kX3NlY3RvcihiaW8pLCBXUklURSkpCisJCWlmIChjaGVja19zZWN0b3IoY29uZiwgYmlvLT5i aV9pdGVyLmJpX3NlY3RvciwKKwkJCQkgYmlvX2VuZF9zZWN0b3IoYmlvKSwgV1JJVEUpKQogCQkJ ZmFpbGl0ID0gMTsKIAkJaWYgKGNoZWNrX21vZGUoY29uZiwgV3JpdGVQZXJzaXN0ZW50KSkgewot CQkJYWRkX3NlY3Rvcihjb25mLCBiaW8tPmJpX3NlY3RvciwgV3JpdGVQZXJzaXN0ZW50KTsKKwkJ CWFkZF9zZWN0b3IoY29uZiwgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCQkgICBXcml0ZVBl cnNpc3RlbnQpOwogCQkJZmFpbGl0ID0gMTsKIAkJfQogCQlpZiAoY2hlY2tfbW9kZShjb25mLCBX cml0ZVRyYW5zaWVudCkpCiAJCQlmYWlsaXQgPSAxOwogCX0gZWxzZSB7CiAJCS8qIHJlYWQgcmVx dWVzdCAqLwotCQlpZiAoY2hlY2tfc2VjdG9yKGNvbmYsIGJpby0+Ymlfc2VjdG9yLCBiaW9fZW5k X3NlY3RvcihiaW8pLCBSRUFEKSkKKwkJaWYgKGNoZWNrX3NlY3Rvcihjb25mLCBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLAorCQkJCSBiaW9fZW5kX3NlY3RvcihiaW8pLCBSRUFEKSkKIAkJCWZhaWxp dCA9IDE7CiAJCWlmIChjaGVja19tb2RlKGNvbmYsIFJlYWRUcmFuc2llbnQpKQogCQkJZmFpbGl0 ID0gMTsKIAkJaWYgKGNoZWNrX21vZGUoY29uZiwgUmVhZFBlcnNpc3RlbnQpKSB7Ci0JCQlhZGRf c2VjdG9yKGNvbmYsIGJpby0+Ymlfc2VjdG9yLCBSZWFkUGVyc2lzdGVudCk7CisJCQlhZGRfc2Vj dG9yKGNvbmYsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJICAgUmVhZFBlcnNpc3RlbnQp OwogCQkJZmFpbGl0ID0gMTsKIAkJfQogCQlpZiAoY2hlY2tfbW9kZShjb25mLCBSZWFkRml4YWJs ZSkpIHsKLQkJCWFkZF9zZWN0b3IoY29uZiwgYmlvLT5iaV9zZWN0b3IsIFJlYWRGaXhhYmxlKTsK KwkJCWFkZF9zZWN0b3IoY29uZiwgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCQkgICBSZWFk Rml4YWJsZSk7CiAJCQlmYWlsaXQgPSAxOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZC9saW5lYXIuYyBiL2RyaXZlcnMvbWQvbGluZWFyLmMKaW5kZXggZjAzZmFiZC4uZmIzYjBkMCAx MDA2NDQKLS0tIGEvZHJpdmVycy9tZC9saW5lYXIuYworKysgYi9kcml2ZXJzL21kL2xpbmVhci5j CkBAIC0yOTcsMTkgKzI5NywxOSBAQCBzdGF0aWMgdm9pZCBsaW5lYXJfbWFrZV9yZXF1ZXN0KHN0 cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKmJpbykKIAl9CiAKIAlyY3VfcmVhZF9sb2Nr KCk7Ci0JdG1wX2RldiA9IHdoaWNoX2RldihtZGRldiwgYmlvLT5iaV9zZWN0b3IpOworCXRtcF9k ZXYgPSB3aGljaF9kZXYobWRkZXYsIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCXN0YXJ0X3Nl Y3RvciA9IHRtcF9kZXYtPmVuZF9zZWN0b3IgLSB0bXBfZGV2LT5yZGV2LT5zZWN0b3JzOwogCiAK LQlpZiAodW5saWtlbHkoYmlvLT5iaV9zZWN0b3IgPj0gKHRtcF9kZXYtPmVuZF9zZWN0b3IpCi0J CSAgICAgfHwgKGJpby0+Ymlfc2VjdG9yIDwgc3RhcnRfc2VjdG9yKSkpIHsKKwlpZiAodW5saWtl bHkoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+PSAodG1wX2Rldi0+ZW5kX3NlY3RvcikKKwkJICAg ICB8fCAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8IHN0YXJ0X3NlY3RvcikpKSB7CiAJCWNoYXIg YltCREVWTkFNRV9TSVpFXTsKIAogCQlwcmludGsoS0VSTl9FUlIKIAkJICAgICAgICJtZC9saW5l YXI6JXM6IG1ha2VfcmVxdWVzdDogU2VjdG9yICVsbHUgb3V0IG9mIGJvdW5kcyBvbiAiCiAJCSAg ICAgICAiZGV2ICVzOiAlbGx1IHNlY3RvcnMsIG9mZnNldCAlbGx1XG4iLAogCQkgICAgICAgbWRu YW1lKG1kZGV2KSwKLQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3Is CisJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCiAJ CSAgICAgICBiZGV2bmFtZSh0bXBfZGV2LT5yZGV2LT5iZGV2LCBiKSwKIAkJICAgICAgICh1bnNp Z25lZCBsb25nIGxvbmcpdG1wX2Rldi0+cmRldi0+c2VjdG9ycywKIAkJICAgICAgICh1bnNpZ25l ZCBsb25nIGxvbmcpc3RhcnRfc2VjdG9yKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgdm9p ZCBsaW5lYXJfbWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKmJp bykKIAogCQlyY3VfcmVhZF91bmxvY2soKTsKIAotCQlicCA9IGJpb19zcGxpdChiaW8sIGVuZF9z ZWN0b3IgLSBiaW8tPmJpX3NlY3Rvcik7CisJCWJwID0gYmlvX3NwbGl0KGJpbywgZW5kX3NlY3Rv ciAtIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCiAJCWxpbmVhcl9tYWtlX3JlcXVlc3QobWRk ZXYsICZicC0+YmlvMSk7CiAJCWxpbmVhcl9tYWtlX3JlcXVlc3QobWRkZXYsICZicC0+YmlvMik7 CkBAIC0zMzUsNyArMzM1LDcgQEAgc3RhdGljIHZvaWQgbGluZWFyX21ha2VfcmVxdWVzdChzdHJ1 Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJfQogCQkgICAgCiAJYmlvLT5iaV9i ZGV2ID0gdG1wX2Rldi0+cmRldi0+YmRldjsKLQliaW8tPmJpX3NlY3RvciA9IGJpby0+Ymlfc2Vj dG9yIC0gc3RhcnRfc2VjdG9yCisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGJpby0+YmlfaXRl ci5iaV9zZWN0b3IgLSBzdGFydF9zZWN0b3IKIAkJKyB0bXBfZGV2LT5yZGV2LT5kYXRhX29mZnNl dDsKIAlyY3VfcmVhZF91bmxvY2soKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5jIGIv ZHJpdmVycy9tZC9tZC5jCmluZGV4IDYwZTEwZjEuLmVjYzczODEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbWQvbWQuYworKysgYi9kcml2ZXJzL21kL21kLmMKQEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0 aWMgdm9pZCBtZF9zdWJtaXRfZmx1c2hfZGF0YShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndzKQogCXN0 cnVjdCBtZGRldiAqbWRkZXYgPSBjb250YWluZXJfb2Yod3MsIHN0cnVjdCBtZGRldiwgZmx1c2hf d29yayk7CiAJc3RydWN0IGJpbyAqYmlvID0gbWRkZXYtPmZsdXNoX2JpbzsKIAotCWlmIChiaW8t PmJpX3NpemUgPT0gMCkKKwlpZiAoYmlvLT5iaV9pdGVyLmJpX3NpemUgPT0gMCkKIAkJLyogYW4g ZW1wdHkgYmFycmllciAtIGFsbCBkb25lICovCiAJCWJpb19lbmRpbyhiaW8sIDApOwogCWVsc2Ug ewpAQCAtNzQ2LDcgKzc0Niw3IEBAIHZvaWQgbWRfc3VwZXJfd3JpdGUoc3RydWN0IG1kZGV2ICpt ZGRldiwgc3RydWN0IG1kX3JkZXYgKnJkZXYsCiAJc3RydWN0IGJpbyAqYmlvID0gYmlvX2FsbG9j X21kZGV2KEdGUF9OT0lPLCAxLCBtZGRldik7CiAKIAliaW8tPmJpX2JkZXYgPSByZGV2LT5tZXRh X2JkZXYgPyByZGV2LT5tZXRhX2JkZXYgOiByZGV2LT5iZGV2OwotCWJpby0+Ymlfc2VjdG9yID0g c2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJYmlvX2FkZF9wYWdl KGJpbywgcGFnZSwgc2l6ZSwgMCk7CiAJYmlvLT5iaV9wcml2YXRlID0gcmRldjsKIAliaW8tPmJp X2VuZF9pbyA9IHN1cGVyX3dyaXR0ZW47CkBAIC03ODUsMTMgKzc4NSwxMyBAQCBpbnQgc3luY19w YWdlX2lvKHN0cnVjdCBtZF9yZGV2ICpyZGV2LCBzZWN0b3JfdCBzZWN0b3IsIGludCBzaXplLAog CWJpby0+YmlfYmRldiA9IChtZXRhZGF0YV9vcCAmJiByZGV2LT5tZXRhX2JkZXYpID8KIAkJcmRl di0+bWV0YV9iZGV2IDogcmRldi0+YmRldjsKIAlpZiAobWV0YWRhdGFfb3ApCi0JCWJpby0+Ymlf c2VjdG9yID0gc2VjdG9yICsgcmRldi0+c2Jfc3RhcnQ7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBzZWN0b3IgKyByZGV2LT5zYl9zdGFydDsKIAllbHNlIGlmIChyZGV2LT5tZGRldi0+cmVz aGFwZV9wb3NpdGlvbiAhPSBNYXhTZWN0b3IgJiYKIAkJIChyZGV2LT5tZGRldi0+cmVzaGFwZV9i YWNrd2FyZHMgPT0KIAkJICAoc2VjdG9yID49IHJkZXYtPm1kZGV2LT5yZXNoYXBlX3Bvc2l0aW9u KSkpCi0JCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yICsgcmRldi0+bmV3X2RhdGFfb2Zmc2V0Owor CQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yICsgcmRldi0+bmV3X2RhdGFfb2Zmc2V0 OwogCWVsc2UKLQkJYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3IgKyByZGV2LT5kYXRhX29mZnNldDsK KwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArIHJkZXYtPmRhdGFfb2Zmc2V0Owog CWJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIHNpemUsIDApOwogCWluaXRfY29tcGxldGlvbigmZXZl bnQpOwogCWJpby0+YmlfcHJpdmF0ZSA9ICZldmVudDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQv bXVsdGlwYXRoLmMgYi9kcml2ZXJzL21kL211bHRpcGF0aC5jCmluZGV4IDE2NDJlYWUuLjg0OWFk MzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvbXVsdGlwYXRoLmMKKysrIGIvZHJpdmVycy9tZC9t dWx0aXBhdGguYwpAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyB2b2lkIG11bHRpcGF0aF9lbmRf cmVxdWVzdChzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnJvcikKIAkJbWRfZXJyb3IgKG1wX2JoLT5t ZGRldiwgcmRldik7CiAJCXByaW50ayhLRVJOX0VSUiAibXVsdGlwYXRoOiAlczogcmVzY2hlZHVs aW5nIHNlY3RvciAlbGx1XG4iLCAKIAkJICAgICAgIGJkZXZuYW1lKHJkZXYtPmJkZXYsYiksIAot CQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCSAgICAgICAo dW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IpOwogCQltdWx0aXBhdGhf cmVzY2hlZHVsZV9yZXRyeShtcF9iaCk7CiAJfSBlbHNlCiAJCW11bHRpcGF0aF9lbmRfYmhfaW8o bXBfYmgsIGVycm9yKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgdm9pZCBtdWx0aXBhdGhf bWFrZV9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKiBiaW8pCiAJbXVs dGlwYXRoID0gY29uZi0+bXVsdGlwYXRocyArIG1wX2JoLT5wYXRoOwogCiAJbXBfYmgtPmJpbyA9 ICpiaW87Ci0JbXBfYmgtPmJpby5iaV9zZWN0b3IgKz0gbXVsdGlwYXRoLT5yZGV2LT5kYXRhX29m ZnNldDsKKwltcF9iaC0+YmlvLmJpX2l0ZXIuYmlfc2VjdG9yICs9IG11bHRpcGF0aC0+cmRldi0+ ZGF0YV9vZmZzZXQ7CiAJbXBfYmgtPmJpby5iaV9iZGV2ID0gbXVsdGlwYXRoLT5yZGV2LT5iZGV2 OwogCW1wX2JoLT5iaW8uYmlfcncgfD0gUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVDsKIAltcF9iaC0+ YmlvLmJpX2VuZF9pbyA9IG11bHRpcGF0aF9lbmRfcmVxdWVzdDsKQEAgLTM1NSwyMSArMzU1LDIy IEBAIHN0YXRpYyB2b2lkIG11bHRpcGF0aGQoc3RydWN0IG1kX3RocmVhZCAqdGhyZWFkKQogCQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZjb25mLT5kZXZpY2VfbG9jaywgZmxhZ3MpOwogCiAJCWJp byA9ICZtcF9iaC0+YmlvOwotCQliaW8tPmJpX3NlY3RvciA9IG1wX2JoLT5tYXN0ZXJfYmlvLT5i aV9zZWN0b3I7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBtcF9iaC0+bWFzdGVyX2Jpby0+ YmlfaXRlci5iaV9zZWN0b3I7CiAJCQogCQlpZiAoKG1wX2JoLT5wYXRoID0gbXVsdGlwYXRoX21h cCAoY29uZikpPDApIHsKIAkJCXByaW50ayhLRVJOX0FMRVJUICJtdWx0aXBhdGg6ICVzOiB1bnJl Y292ZXJhYmxlIElPIHJlYWQiCiAJCQkJIiBlcnJvciBmb3IgYmxvY2sgJWxsdVxuIiwKIAkJCQli ZGV2bmFtZShiaW8tPmJpX2JkZXYsYiksCi0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJp X3NlY3Rvcik7CisJCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9y KTsKIAkJCW11bHRpcGF0aF9lbmRfYmhfaW8obXBfYmgsIC1FSU8pOwogCQl9IGVsc2UgewogCQkJ cHJpbnRrKEtFUk5fRVJSICJtdWx0aXBhdGg6ICVzOiByZWRpcmVjdGluZyBzZWN0b3IgJWxsdSIK IAkJCQkiIHRvIGFub3RoZXIgSU8gcGF0aFxuIiwKIAkJCQliZGV2bmFtZShiaW8tPmJpX2JkZXYs YiksCi0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQkJKHVuc2ln bmVkIGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJCSpiaW8gPSAqKG1wX2Jo LT5tYXN0ZXJfYmlvKTsKLQkJCWJpby0+Ymlfc2VjdG9yICs9IGNvbmYtPm11bHRpcGF0aHNbbXBf YmgtPnBhdGhdLnJkZXYtPmRhdGFfb2Zmc2V0OworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAr PQorCQkJCWNvbmYtPm11bHRpcGF0aHNbbXBfYmgtPnBhdGhdLnJkZXYtPmRhdGFfb2Zmc2V0Owog CQkJYmlvLT5iaV9iZGV2ID0gY29uZi0+bXVsdGlwYXRoc1ttcF9iaC0+cGF0aF0ucmRldi0+YmRl djsKIAkJCWJpby0+YmlfcncgfD0gUkVRX0ZBSUxGQVNUX1RSQU5TUE9SVDsKIAkJCWJpby0+Ymlf ZW5kX2lvID0gbXVsdGlwYXRoX2VuZF9yZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9y YWlkMC5jIGIvZHJpdmVycy9tZC9yYWlkMC5jCmluZGV4IGM0ZDQyMGIuLmUzOGQxZDMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDAuYworKysgYi9kcml2ZXJzL21kL3JhaWQwLmMKQEAgLTUw MSwxMCArNTAxLDExIEBAIHN0YXRpYyBpbmxpbmUgaW50IGlzX2lvX2luX2NodW5rX2JvdW5kYXJ5 KHN0cnVjdCBtZGRldiAqbWRkZXYsCiAJCQl1bnNpZ25lZCBpbnQgY2h1bmtfc2VjdHMsIHN0cnVj dCBiaW8gKmJpbykKIHsKIAlpZiAobGlrZWx5KGlzX3Bvd2VyX29mXzIoY2h1bmtfc2VjdHMpKSkg ewotCQlyZXR1cm4gY2h1bmtfc2VjdHMgPj0gKChiaW8tPmJpX3NlY3RvciAmIChjaHVua19zZWN0 cy0xKSkKKwkJcmV0dXJuIGNodW5rX3NlY3RzID49CisJCQkoKGJpby0+YmlfaXRlci5iaV9zZWN0 b3IgJiAoY2h1bmtfc2VjdHMtMSkpCiAJCQkJCSsgYmlvX3NlY3RvcnMoYmlvKSk7CiAJfSBlbHNl ewotCQlzZWN0b3JfdCBzZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsKKwkJc2VjdG9yX3Qgc2VjdG9y ID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKIAkJcmV0dXJuIGNodW5rX3NlY3RzID49IChzZWN0 b3JfZGl2KHNlY3RvciwgY2h1bmtfc2VjdHMpCiAJCQkJCQkrIGJpb19zZWN0b3JzKGJpbykpOwog CX0KQEAgLTUyNCw3ICs1MjUsNyBAQCBzdGF0aWMgdm9pZCByYWlkMF9tYWtlX3JlcXVlc3Qoc3Ry dWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqYmlvKQogCiAJY2h1bmtfc2VjdHMgPSBtZGRl di0+Y2h1bmtfc2VjdG9yczsKIAlpZiAodW5saWtlbHkoIWlzX2lvX2luX2NodW5rX2JvdW5kYXJ5 KG1kZGV2LCBjaHVua19zZWN0cywgYmlvKSkpIHsKLQkJc2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5i aV9zZWN0b3I7CisJCXNlY3Rvcl90IHNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJ CXN0cnVjdCBiaW9fcGFpciAqYnA7CiAJCS8qIFNhbml0eSBjaGVjayAtLSBxdWV1ZSBmdW5jdGlv bnMgc2hvdWxkIHByZXZlbnQgdGhpcyBoYXBwZW5pbmcgKi8KIAkJaWYgKGJpb19zZWdtZW50cyhi aW8pID4gMSkKQEAgLTU0NCwxMiArNTQ1LDEyIEBAIHN0YXRpYyB2b2lkIHJhaWQwX21ha2VfcmVx dWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICpiaW8pCiAJCXJldHVybjsKIAl9 CiAKLQlzZWN0b3Jfb2Zmc2V0ID0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yX29mZnNldCA9IGJp by0+YmlfaXRlci5iaV9zZWN0b3I7CiAJem9uZSA9IGZpbmRfem9uZShtZGRldi0+cHJpdmF0ZSwg JnNlY3Rvcl9vZmZzZXQpOwotCXRtcF9kZXYgPSBtYXBfc2VjdG9yKG1kZGV2LCB6b25lLCBiaW8t PmJpX3NlY3RvciwKKwl0bXBfZGV2ID0gbWFwX3NlY3RvcihtZGRldiwgem9uZSwgYmlvLT5iaV9p dGVyLmJpX3NlY3RvciwKIAkJCSAgICAgJnNlY3Rvcl9vZmZzZXQpOwogCWJpby0+YmlfYmRldiA9 IHRtcF9kZXYtPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBzZWN0b3Jfb2Zmc2V0ICsgem9uZS0+ ZGV2X3N0YXJ0ICsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yX29mZnNldCArIHpv bmUtPmRldl9zdGFydCArCiAJCXRtcF9kZXYtPmRhdGFfb2Zmc2V0OwogCiAJaWYgKHVubGlrZWx5 KChiaW8tPmJpX3J3ICYgUkVRX0RJU0NBUkQpICYmCkBAIC01NjYsNyArNTY3LDggQEAgYmFkX21h cDoKIAlwcmludGsoIm1kL3JhaWQwOiVzOiBtYWtlX3JlcXVlc3QgYnVnOiBjYW4ndCBjb252ZXJ0 IGJsb2NrIGFjcm9zcyBjaHVua3MiCiAJICAgICAgICIgb3IgYmlnZ2VyIHRoYW4gJWRrICVsbHUg JWRcbiIsCiAJICAgICAgIG1kbmFtZShtZGRldiksIGNodW5rX3NlY3RzIC8gMiwKLQkgICAgICAg KHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3RvciwgYmlvX3NlY3RvcnMoYmlvKSAvIDIp OworCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJ ICAgICAgIGJpb19zZWN0b3JzKGJpbykgLyAyKTsKIAogCWJpb19pb19lcnJvcihiaW8pOwogCXJl dHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEuYyBiL2RyaXZlcnMvbWQvcmFpZDEu YwppbmRleCBmYzgxN2ZmLi5jNDA4NDZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQxLmMK KysrIGIvZHJpdmVycy9tZC9yYWlkMS5jCkBAIC0yNTUsOSArMjU1LDggQEAgc3RhdGljIHZvaWQg cmFpZF9lbmRfYmlvX2lvKHN0cnVjdCByMWJpbyAqcjFfYmlvKQogCWlmICghdGVzdF9hbmRfc2V0 X2JpdChSMUJJT19SZXR1cm5lZCwgJnIxX2Jpby0+c3RhdGUpKSB7CiAJCXByX2RlYnVnKCJyYWlk MTogc3luYyBlbmQgJXMgb24gc2VjdG9ycyAlbGx1LSVsbHVcbiIsCiAJCQkgKGJpb19kYXRhX2Rp cihiaW8pID09IFdSSVRFKSA/ICJ3cml0ZSIgOiAicmVhZCIsCi0JCQkgKHVuc2lnbmVkIGxvbmcg bG9uZykgYmlvLT5iaV9zZWN0b3IsCi0JCQkgKHVuc2lnbmVkIGxvbmcgbG9uZykgYmlvLT5iaV9z ZWN0b3IgKwotCQkJIGJpb19zZWN0b3JzKGJpbykgLSAxKTsKKwkJCSAodW5zaWduZWQgbG9uZyBs b25nKSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJICh1bnNpZ25lZCBsb25nIGxvbmcpIGJp b19lbmRfc2VjdG9yKGJpbykgLSAxKTsKIAogCQljYWxsX2Jpb19lbmRpbyhyMV9iaW8pOwogCX0K QEAgLTQ1Niw5ICs0NTUsOCBAQCBzdGF0aWMgdm9pZCByYWlkMV9lbmRfd3JpdGVfcmVxdWVzdChz dHJ1Y3QgYmlvICpiaW8sIGludCBlcnJvcikKIAkJCQlzdHJ1Y3QgYmlvICptYmlvID0gcjFfYmlv LT5tYXN0ZXJfYmlvOwogCQkJCXByX2RlYnVnKCJyYWlkMTogYmVoaW5kIGVuZCB3cml0ZSBzZWN0 b3JzIgogCQkJCQkgIiAlbGx1LSVsbHVcbiIsCi0JCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBt YmlvLT5iaV9zZWN0b3IsCi0JCQkJCSAodW5zaWduZWQgbG9uZyBsb25nKSBtYmlvLT5iaV9zZWN0 b3IgKwotCQkJCQkgYmlvX3NlY3RvcnMobWJpbykgLSAxKTsKKwkJCQkJICh1bnNpZ25lZCBsb25n IGxvbmcpIG1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJCQkgKHVuc2lnbmVkIGxvbmcgbG9u ZykgYmlvX2VuZF9zZWN0b3IobWJpbykgLSAxKTsKIAkJCQljYWxsX2Jpb19lbmRpbyhyMV9iaW8p OwogCQkJfQogCQl9CkBAIC05NDUsNyArOTQzLDggQEAgZG9fc3luY19pbzoKIAkJaWYgKGJ2ZWNz W2ldLmJ2X3BhZ2UpCiAJCQlwdXRfcGFnZShidmVjc1tpXS5idl9wYWdlKTsKIAlrZnJlZShidmVj cyk7Ci0JcHJfZGVidWcoIiVkQiBiZWhpbmQgYWxsb2MgZmFpbGVkLCBkb2luZyBzeW5jIEkvT1xu IiwgYmlvLT5iaV9zaXplKTsKKwlwcl9kZWJ1ZygiJWRCIGJlaGluZCBhbGxvYyBmYWlsZWQsIGRv aW5nIHN5bmMgSS9PXG4iLAorCQkgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogfQogCiBzdHJ1Y3Qg cmFpZDFfcGx1Z19jYiB7CkBAIC0xMDI0LDcgKzEwMjMsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX3Jl cXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykKIAogCWlmIChiaW9f ZGF0YV9kaXIoYmlvKSA9PSBXUklURSAmJgogCSAgICBiaW9fZW5kX3NlY3RvcihiaW8pID4gbWRk ZXYtPnN1c3BlbmRfbG8gJiYKLQkgICAgYmlvLT5iaV9zZWN0b3IgPCBtZGRldi0+c3VzcGVuZF9o aSkgeworCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDwgbWRkZXYtPnN1c3BlbmRfaGkpIHsK IAkJLyogQXMgdGhlIHN1c3BlbmRfKiByYW5nZSBpcyBjb250cm9sbGVkIGJ5CiAJCSAqIHVzZXJz cGFjZSwgd2Ugd2FudCBhbiBpbnRlcnJ1cHRpYmxlCiAJCSAqIHdhaXQuCkBAIC0xMDM1LDcgKzEw MzQsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3Ry dWN0IGJpbyAqIGJpbykKIAkJCXByZXBhcmVfdG9fd2FpdCgmY29uZi0+d2FpdF9iYXJyaWVyLAog CQkJCQkmdywgVEFTS19JTlRFUlJVUFRJQkxFKTsKIAkJCWlmIChiaW9fZW5kX3NlY3RvcihiaW8p IDw9IG1kZGV2LT5zdXNwZW5kX2xvIHx8Ci0JCQkgICAgYmlvLT5iaV9zZWN0b3IgPj0gbWRkZXYt PnN1c3BlbmRfaGkpCisJCQkgICAgYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA+PSBtZGRldi0+c3Vz cGVuZF9oaSkKIAkJCQlicmVhazsKIAkJCXNjaGVkdWxlKCk7CiAJCX0KQEAgLTEwNTcsNyArMTA1 Niw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1 Y3QgYmlvICogYmlvKQogCXIxX2Jpby0+c2VjdG9ycyA9IGJpb19zZWN0b3JzKGJpbyk7CiAJcjFf YmlvLT5zdGF0ZSA9IDA7CiAJcjFfYmlvLT5tZGRldiA9IG1kZGV2OwotCXIxX2Jpby0+c2VjdG9y ID0gYmlvLT5iaV9zZWN0b3I7CisJcjFfYmlvLT5zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yOwogCiAJLyogV2UgbWlnaHQgbmVlZCB0byBpc3N1ZSBtdWx0aXBsZSByZWFkcyB0byBkaWZm ZXJlbnQKIAkgKiBkZXZpY2VzIGlmIHRoZXJlIGFyZSBiYWQgYmxvY2tzIGFyb3VuZCwgc28gd2Ug a2VlcApAQCAtMTA5NywxMiArMTA5NiwxMyBAQCByZWFkX2FnYWluOgogCQlyMV9iaW8tPnJlYWRf ZGlzayA9IHJkaXNrOwogCiAJCXJlYWRfYmlvID0gYmlvX2Nsb25lX21kZGV2KGJpbywgR0ZQX05P SU8sIG1kZGV2KTsKLQkJYmlvX3RyaW0ocmVhZF9iaW8sIHIxX2Jpby0+c2VjdG9yIC0gYmlvLT5i aV9zZWN0b3IsCisJCWJpb190cmltKHJlYWRfYmlvLCByMV9iaW8tPnNlY3RvciAtIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IsCiAJCQkgbWF4X3NlY3RvcnMpOwogCiAJCXIxX2Jpby0+Ymlvc1tyZGlz a10gPSByZWFkX2JpbzsKIAotCQlyZWFkX2Jpby0+Ymlfc2VjdG9yID0gcjFfYmlvLT5zZWN0b3Ig KyBtaXJyb3ItPnJkZXYtPmRhdGFfb2Zmc2V0OworCQlyZWFkX2Jpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSByMV9iaW8tPnNlY3RvciArCisJCQltaXJyb3ItPnJkZXYtPmRhdGFfb2Zmc2V0OwogCQly ZWFkX2Jpby0+YmlfYmRldiA9IG1pcnJvci0+cmRldi0+YmRldjsKIAkJcmVhZF9iaW8tPmJpX2Vu ZF9pbyA9IHJhaWQxX2VuZF9yZWFkX3JlcXVlc3Q7CiAJCXJlYWRfYmlvLT5iaV9ydyA9IFJFQUQg fCBkb19zeW5jOwpAQCAtMTExNCw3ICsxMTE0LDcgQEAgcmVhZF9hZ2FpbjoKIAkJCSAqLwogCiAJ CQlzZWN0b3JzX2hhbmRsZWQgPSAocjFfYmlvLT5zZWN0b3IgKyBtYXhfc2VjdG9ycwotCQkJCQkg ICAtIGJpby0+Ymlfc2VjdG9yKTsKKwkJCQkJICAgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsK IAkJCXIxX2Jpby0+c2VjdG9ycyA9IG1heF9zZWN0b3JzOwogCQkJc3Bpbl9sb2NrX2lycSgmY29u Zi0+ZGV2aWNlX2xvY2spOwogCQkJaWYgKGJpby0+YmlfcGh5c19zZWdtZW50cyA9PSAwKQpAQCAt MTEzNSw3ICsxMTM1LDggQEAgcmVhZF9hZ2FpbjoKIAkJCXIxX2Jpby0+c2VjdG9ycyA9IGJpb19z ZWN0b3JzKGJpbykgLSBzZWN0b3JzX2hhbmRsZWQ7CiAJCQlyMV9iaW8tPnN0YXRlID0gMDsKIAkJ CXIxX2Jpby0+bWRkZXYgPSBtZGRldjsKLQkJCXIxX2Jpby0+c2VjdG9yID0gYmlvLT5iaV9zZWN0 b3IgKyBzZWN0b3JzX2hhbmRsZWQ7CisJCQlyMV9iaW8tPnNlY3RvciA9IGJpby0+YmlfaXRlci5i aV9zZWN0b3IgKworCQkJCXNlY3RvcnNfaGFuZGxlZDsKIAkJCWdvdG8gcmVhZF9hZ2FpbjsKIAkJ fSBlbHNlCiAJCQlnZW5lcmljX21ha2VfcmVxdWVzdChyZWFkX2Jpbyk7CkBAIC0xMjU0LDcgKzEy NTUsNyBAQCByZWFkX2FnYWluOgogCQkJYmlvLT5iaV9waHlzX3NlZ21lbnRzKys7CiAJCXNwaW5f dW5sb2NrX2lycSgmY29uZi0+ZGV2aWNlX2xvY2spOwogCX0KLQlzZWN0b3JzX2hhbmRsZWQgPSBy MV9iaW8tPnNlY3RvciArIG1heF9zZWN0b3JzIC0gYmlvLT5iaV9zZWN0b3I7CisJc2VjdG9yc19o YW5kbGVkID0gcjFfYmlvLT5zZWN0b3IgKyBtYXhfc2VjdG9ycyAtIGJpby0+YmlfaXRlci5iaV9z ZWN0b3I7CiAKIAlhdG9taWNfc2V0KCZyMV9iaW8tPnJlbWFpbmluZywgMSk7CiAJYXRvbWljX3Nl dCgmcjFfYmlvLT5iZWhpbmRfcmVtYWluaW5nLCAwKTsKQEAgLTEyNjYsNyArMTI2Nyw3IEBAIHJl YWRfYWdhaW46CiAJCQljb250aW51ZTsKIAogCQltYmlvID0gYmlvX2Nsb25lX21kZGV2KGJpbywg R0ZQX05PSU8sIG1kZGV2KTsKLQkJYmlvX3RyaW0obWJpbywgcjFfYmlvLT5zZWN0b3IgLSBiaW8t PmJpX3NlY3RvciwgbWF4X3NlY3RvcnMpOworCQliaW9fdHJpbShtYmlvLCByMV9iaW8tPnNlY3Rv ciAtIGJpby0+YmlfaXRlci5iaV9zZWN0b3IsIG1heF9zZWN0b3JzKTsKIAogCQlpZiAoZmlyc3Rf Y2xvbmUpIHsKIAkJCS8qIGRvIGJlaGluZCBJL08gPwpAQCAtMTMwMCw3ICsxMzAxLDcgQEAgcmVh ZF9hZ2FpbjoKIAogCQlyMV9iaW8tPmJpb3NbaV0gPSBtYmlvOwogCi0JCW1iaW8tPmJpX3NlY3Rv cgk9IChyMV9iaW8tPnNlY3RvciArCisJCW1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gKHIxX2Jp by0+c2VjdG9yICsKIAkJCQkgICBjb25mLT5taXJyb3JzW2ldLnJkZXYtPmRhdGFfb2Zmc2V0KTsK IAkJbWJpby0+YmlfYmRldiA9IGNvbmYtPm1pcnJvcnNbaV0ucmRldi0+YmRldjsKIAkJbWJpby0+ YmlfZW5kX2lvCT0gcmFpZDFfZW5kX3dyaXRlX3JlcXVlc3Q7CkBAIC0xMzQwLDcgKzEzNDEsNyBA QCByZWFkX2FnYWluOgogCQlyMV9iaW8tPnNlY3RvcnMgPSBiaW9fc2VjdG9ycyhiaW8pIC0gc2Vj dG9yc19oYW5kbGVkOwogCQlyMV9iaW8tPnN0YXRlID0gMDsKIAkJcjFfYmlvLT5tZGRldiA9IG1k ZGV2OwotCQlyMV9iaW8tPnNlY3RvciA9IGJpby0+Ymlfc2VjdG9yICsgc2VjdG9yc19oYW5kbGVk OworCQlyMV9iaW8tPnNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgKyBzZWN0b3JzX2hh bmRsZWQ7CiAJCWdvdG8gcmV0cnlfd3JpdGU7CiAJfQogCkBAIC0xODYwLDE0ICsxODYxLDE0IEBA IHN0YXRpYyBpbnQgcHJvY2Vzc19jaGVja3Moc3RydWN0IHIxYmlvICpyMV9iaW8pCiAJCS8qIGZp eHVwIHRoZSBiaW8gZm9yIHJldXNlICovCiAJCWJpb19yZXNldChiKTsKIAkJYi0+YmlfdmNudCA9 IHZjbnQ7Ci0JCWItPmJpX3NpemUgPSByMV9iaW8tPnNlY3RvcnMgPDwgOTsKLQkJYi0+Ymlfc2Vj dG9yID0gcjFfYmlvLT5zZWN0b3IgKworCQliLT5iaV9pdGVyLmJpX3NpemUgPSByMV9iaW8tPnNl Y3RvcnMgPDwgOTsKKwkJYi0+YmlfaXRlci5iaV9zZWN0b3IgPSByMV9iaW8tPnNlY3RvciArCiAJ CQljb25mLT5taXJyb3JzW2ldLnJkZXYtPmRhdGFfb2Zmc2V0OwogCQliLT5iaV9iZGV2ID0gY29u Zi0+bWlycm9yc1tpXS5yZGV2LT5iZGV2OwogCQliLT5iaV9lbmRfaW8gPSBlbmRfc3luY19yZWFk OwogCQliLT5iaV9wcml2YXRlID0gcjFfYmlvOwogCi0JCXNpemUgPSBiLT5iaV9zaXplOworCQlz aXplID0gYi0+YmlfaXRlci5iaV9zaXplOwogCQlmb3IgKGogPSAwOyBqIDwgdmNudCA7IGorKykg ewogCQkJc3RydWN0IGJpb192ZWMgKmJpOwogCQkJYmkgPSAmYi0+YmlfaW9fdmVjW2pdOwpAQCAt MjEyMiwxMSArMjEyMywxMSBAQCBzdGF0aWMgaW50IG5hcnJvd193cml0ZV9lcnJvcihzdHJ1Y3Qg cjFiaW8gKnIxX2JpbywgaW50IGkpCiAJCX0KIAogCQl3YmlvLT5iaV9ydyA9IFdSSVRFOwotCQl3 YmlvLT5iaV9zZWN0b3IgPSByMV9iaW8tPnNlY3RvcjsKLQkJd2Jpby0+Ymlfc2l6ZSA9IHIxX2Jp by0+c2VjdG9ycyA8PCA5OworCQl3YmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHIxX2Jpby0+c2Vj dG9yOworCQl3YmlvLT5iaV9pdGVyLmJpX3NpemUgPSByMV9iaW8tPnNlY3RvcnMgPDwgOTsKIAog CQliaW9fdHJpbSh3YmlvLCBzZWN0b3IgLSByMV9iaW8tPnNlY3Rvciwgc2VjdG9ycyk7Ci0JCXdi aW8tPmJpX3NlY3RvciArPSByZGV2LT5kYXRhX29mZnNldDsKKwkJd2Jpby0+YmlfaXRlci5iaV9z ZWN0b3IgKz0gcmRldi0+ZGF0YV9vZmZzZXQ7CiAJCXdiaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2 OwogCQlpZiAoc3VibWl0X2Jpb193YWl0KFdSSVRFLCB3YmlvKSA9PSAwKQogCQkJLyogZmFpbHVy ZSEgKi8KQEAgLTIyNDAsNyArMjI0MSw4IEBAIHJlYWRfbW9yZToKIAkJfQogCQlyMV9iaW8tPnJl YWRfZGlzayA9IGRpc2s7CiAJCWJpbyA9IGJpb19jbG9uZV9tZGRldihyMV9iaW8tPm1hc3Rlcl9i aW8sIEdGUF9OT0lPLCBtZGRldik7Ci0JCWJpb190cmltKGJpbywgcjFfYmlvLT5zZWN0b3IgLSBi aW8tPmJpX3NlY3RvciwgbWF4X3NlY3RvcnMpOworCQliaW9fdHJpbShiaW8sIHIxX2Jpby0+c2Vj dG9yIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCSBtYXhfc2VjdG9ycyk7CiAJCXIxX2Jp by0+Ymlvc1tyMV9iaW8tPnJlYWRfZGlza10gPSBiaW87CiAJCXJkZXYgPSBjb25mLT5taXJyb3Jz W2Rpc2tdLnJkZXY7CiAJCXByaW50a19yYXRlbGltaXRlZChLRVJOX0VSUgpAQCAtMjI0OSw3ICsy MjUxLDcgQEAgcmVhZF9tb3JlOgogCQkJCSAgIG1kbmFtZShtZGRldiksCiAJCQkJICAgKHVuc2ln bmVkIGxvbmcgbG9uZylyMV9iaW8tPnNlY3RvciwKIAkJCQkgICBiZGV2bmFtZShyZGV2LT5iZGV2 LCBiKSk7Ci0JCWJpby0+Ymlfc2VjdG9yID0gcjFfYmlvLT5zZWN0b3IgKyByZGV2LT5kYXRhX29m ZnNldDsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHIxX2Jpby0+c2VjdG9yICsgcmRldi0+ ZGF0YV9vZmZzZXQ7CiAJCWJpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJCWJpby0+YmlfZW5k X2lvID0gcmFpZDFfZW5kX3JlYWRfcmVxdWVzdDsKIAkJYmlvLT5iaV9ydyA9IFJFQUQgfCBkb19z eW5jOwpAQCAtMjI1OCw3ICsyMjYwLDcgQEAgcmVhZF9tb3JlOgogCQkJLyogRHJhdCAtIGhhdmUg dG8gc3BsaXQgdGhpcyB1cCBtb3JlICovCiAJCQlzdHJ1Y3QgYmlvICptYmlvID0gcjFfYmlvLT5t YXN0ZXJfYmlvOwogCQkJaW50IHNlY3RvcnNfaGFuZGxlZCA9IChyMV9iaW8tPnNlY3RvciArIG1h eF9zZWN0b3JzCi0JCQkJCSAgICAgICAtIG1iaW8tPmJpX3NlY3Rvcik7CisJCQkJCSAgICAgICAt IG1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJCXIxX2Jpby0+c2VjdG9ycyA9IG1heF9zZWN0 b3JzOwogCQkJc3Bpbl9sb2NrX2lycSgmY29uZi0+ZGV2aWNlX2xvY2spOwogCQkJaWYgKG1iaW8t PmJpX3BoeXNfc2VnbWVudHMgPT0gMCkKQEAgLTIyNzYsNyArMjI3OCw4IEBAIHJlYWRfbW9yZToK IAkJCXIxX2Jpby0+c3RhdGUgPSAwOwogCQkJc2V0X2JpdChSMUJJT19SZWFkRXJyb3IsICZyMV9i aW8tPnN0YXRlKTsKIAkJCXIxX2Jpby0+bWRkZXYgPSBtZGRldjsKLQkJCXIxX2Jpby0+c2VjdG9y ID0gbWJpby0+Ymlfc2VjdG9yICsgc2VjdG9yc19oYW5kbGVkOworCQkJcjFfYmlvLT5zZWN0b3Ig PSBtYmlvLT5iaV9pdGVyLmJpX3NlY3RvciArCisJCQkJc2VjdG9yc19oYW5kbGVkOwogCiAJCQln b3RvIHJlYWRfbW9yZTsKIAkJfSBlbHNlCkBAIC0yNTAwLDcgKzI1MDMsNyBAQCBzdGF0aWMgc2Vj dG9yX3Qgc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90IHNlY3Rvcl9u ciwgaW50ICpza2lwcAogCQl9CiAJCWlmIChiaW8tPmJpX2VuZF9pbykgewogCQkJYXRvbWljX2lu YygmcmRldi0+bnJfcGVuZGluZyk7Ci0JCQliaW8tPmJpX3NlY3RvciA9IHNlY3Rvcl9uciArIHJk ZXYtPmRhdGFfb2Zmc2V0OworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3Rvcl9uciAr IHJkZXYtPmRhdGFfb2Zmc2V0OwogCQkJYmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKIAkJCWJp by0+YmlfcHJpdmF0ZSA9IHIxX2JpbzsKIAkJfQpAQCAtMjYwMCw3ICsyNjAzLDcgQEAgc3RhdGlj IHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0 b3JfbnIsIGludCAqc2tpcHAKIAkJCQkJCQljb250aW51ZTsKIAkJCQkJCS8qIHJlbW92ZSBsYXN0 IHBhZ2UgZnJvbSB0aGlzIGJpbyAqLwogCQkJCQkJYmlvLT5iaV92Y250LS07Ci0JCQkJCQliaW8t PmJpX3NpemUgLT0gbGVuOworCQkJCQkJYmlvLT5iaV9pdGVyLmJpX3NpemUgLT0gbGVuOwogCQkJ CQkJYmlvLT5iaV9mbGFncyAmPSB+KDE8PCBCSU9fU0VHX1ZBTElEKTsKIAkJCQkJfQogCQkJCQln b3RvIGJpb19mdWxsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9yYWlkMTAuYyBiL2RyaXZlcnMv bWQvcmFpZDEwLmMKaW5kZXggYTU4MjIzNS4uZmNhODg4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9t ZC9yYWlkMTAuYworKysgYi9kcml2ZXJzL21kL3JhaWQxMC5jCkBAIC0xMTgyLDcgKzExODIsNyBA QCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJp byAqIGJpbykKIAkvKiBJZiB0aGlzIHJlcXVlc3QgY3Jvc3NlcyBhIGNodW5rIGJvdW5kYXJ5LCB3 ZSBuZWVkIHRvCiAJICogc3BsaXQgaXQuICBUaGlzIHdpbGwgb25seSBoYXBwZW4gZm9yIDEgUEFH RSAob3IgbGVzcykgcmVxdWVzdHMuCiAJICovCi0JaWYgKHVubGlrZWx5KChiaW8tPmJpX3NlY3Rv ciAmIGNodW5rX21hc2spICsgYmlvX3NlY3RvcnMoYmlvKQorCWlmICh1bmxpa2VseSgoYmlvLT5i aV9pdGVyLmJpX3NlY3RvciAmIGNodW5rX21hc2spICsgYmlvX3NlY3RvcnMoYmlvKQogCQkgICAg ID4gY2h1bmtfc2VjdHMKIAkJICAgICAmJiAoY29uZi0+Z2VvLm5lYXJfY29waWVzIDwgY29uZi0+ Z2VvLnJhaWRfZGlza3MKIAkJCSB8fCBjb25mLT5wcmV2Lm5lYXJfY29waWVzIDwgY29uZi0+cHJl di5yYWlkX2Rpc2tzKSkpIHsKQEAgLTExOTMsOCArMTE5Myw4IEBAIHN0YXRpYyB2b2lkIG1ha2Vf cmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmlvKQogCQkvKiBUaGlz IGlzIGEgb25lIHBhZ2UgYmlvIHRoYXQgdXBwZXIgbGF5ZXJzCiAJCSAqIHJlZnVzZSB0byBzcGxp dCBmb3IgdXMsIHNvIHdlIG5lZWQgdG8gc3BsaXQgaXQuCiAJCSAqLwotCQlicCA9IGJpb19zcGxp dChiaW8sCi0JCQkgICAgICAgY2h1bmtfc2VjdHMgLSAoYmlvLT5iaV9zZWN0b3IgJiAoY2h1bmtf c2VjdHMgLSAxKSkgKTsKKwkJYnAgPSBiaW9fc3BsaXQoYmlvLCBjaHVua19zZWN0cyAtCisJCQkg ICAgICAgKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgJiAoY2h1bmtfc2VjdHMgLSAxKSkpOwogCiAJ CS8qIEVhY2ggb2YgdGhlc2UgJ21ha2VfcmVxdWVzdCcgY2FsbHMgd2lsbCBjYWxsICd3YWl0X2Jh cnJpZXInLgogCQkgKiBJZiB0aGUgZmlyc3Qgc3VjY2VlZHMgYnV0IHRoZSBzZWNvbmQgYmxvY2tz IGR1ZSB0byB0aGUgcmVzeW5jCkBAIC0xMjIxLDcgKzEyMjEsOCBAQCBzdGF0aWMgdm9pZCBtYWtl X3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykKIAliYWRfbWFw OgogCQlwcmludGsoIm1kL3JhaWQxMDolczogbWFrZV9yZXF1ZXN0IGJ1ZzogY2FuJ3QgY29udmVy dCBibG9jayBhY3Jvc3MgY2h1bmtzIgogCQkgICAgICAgIiBvciBiaWdnZXIgdGhhbiAlZGsgJWxs dSAlZFxuIiwgbWRuYW1lKG1kZGV2KSwgY2h1bmtfc2VjdHMvMiwKLQkJICAgICAgICh1bnNpZ25l ZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IsIGJpb19zZWN0b3JzKGJpbykgLyAyKTsKKwkJICAg ICAgICh1bnNpZ25lZCBsb25nIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJICAgICAg IGJpb19zZWN0b3JzKGJpbykgLyAyKTsKIAogCQliaW9faW9fZXJyb3IoYmlvKTsKIAkJcmV0dXJu OwpAQCAtMTIzOCwyNCArMTIzOSwyNSBAQCBzdGF0aWMgdm9pZCBtYWtlX3JlcXVlc3Qoc3RydWN0 IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIGJpbykKIAogCXNlY3RvcnMgPSBiaW9fc2VjdG9y cyhiaW8pOwogCXdoaWxlICh0ZXN0X2JpdChNRF9SRUNPVkVSWV9SRVNIQVBFLCAmbWRkZXYtPnJl Y292ZXJ5KSAmJgotCSAgICBiaW8tPmJpX3NlY3RvciA8IGNvbmYtPnJlc2hhcGVfcHJvZ3Jlc3Mg JiYKLQkgICAgYmlvLT5iaV9zZWN0b3IgKyBzZWN0b3JzID4gY29uZi0+cmVzaGFwZV9wcm9ncmVz cykgeworCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDwgY29uZi0+cmVzaGFwZV9wcm9ncmVz cyAmJgorCSAgICBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICsgc2VjdG9ycyA+IGNvbmYtPnJlc2hh cGVfcHJvZ3Jlc3MpIHsKIAkJLyogSU8gc3BhbnMgdGhlIHJlc2hhcGUgcG9zaXRpb24uICBOZWVk IHRvIHdhaXQgZm9yCiAJCSAqIHJlc2hhcGUgdG8gcGFzcwogCQkgKi8KIAkJYWxsb3dfYmFycmll cihjb25mKTsKIAkJd2FpdF9ldmVudChjb25mLT53YWl0X2JhcnJpZXIsCi0JCQkgICBjb25mLT5y ZXNoYXBlX3Byb2dyZXNzIDw9IGJpby0+Ymlfc2VjdG9yIHx8Ci0JCQkgICBjb25mLT5yZXNoYXBl X3Byb2dyZXNzID49IGJpby0+Ymlfc2VjdG9yICsgc2VjdG9ycyk7CisJCQkgICBjb25mLT5yZXNo YXBlX3Byb2dyZXNzIDw9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgfHwKKwkJCSAgIGNvbmYtPnJl c2hhcGVfcHJvZ3Jlc3MgPj0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciArCisJCQkgICBzZWN0b3Jz KTsKIAkJd2FpdF9iYXJyaWVyKGNvbmYpOwogCX0KIAlpZiAodGVzdF9iaXQoTURfUkVDT1ZFUllf UkVTSEFQRSwgJm1kZGV2LT5yZWNvdmVyeSkgJiYKIAkgICAgYmlvX2RhdGFfZGlyKGJpbykgPT0g V1JJVEUgJiYKIAkgICAgKG1kZGV2LT5yZXNoYXBlX2JhY2t3YXJkcwotCSAgICAgPyAoYmlvLT5i aV9zZWN0b3IgPCBjb25mLT5yZXNoYXBlX3NhZmUgJiYKLQkJYmlvLT5iaV9zZWN0b3IgKyBzZWN0 b3JzID4gY29uZi0+cmVzaGFwZV9wcm9ncmVzcykKLQkgICAgIDogKGJpby0+Ymlfc2VjdG9yICsg c2VjdG9ycyA+IGNvbmYtPnJlc2hhcGVfc2FmZSAmJgotCQliaW8tPmJpX3NlY3RvciA8IGNvbmYt PnJlc2hhcGVfcHJvZ3Jlc3MpKSkgeworCSAgICAgPyAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8 IGNvbmYtPnJlc2hhcGVfc2FmZSAmJgorCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICsgc2VjdG9y cyA+IGNvbmYtPnJlc2hhcGVfcHJvZ3Jlc3MpCisJICAgICA6IChiaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yICsgc2VjdG9ycyA+IGNvbmYtPnJlc2hhcGVfc2FmZSAmJgorCQliaW8tPmJpX2l0ZXIuYmlf c2VjdG9yIDwgY29uZi0+cmVzaGFwZV9wcm9ncmVzcykpKSB7CiAJCS8qIE5lZWQgdG8gdXBkYXRl IHJlc2hhcGVfcG9zaXRpb24gaW4gbWV0YWRhdGEgKi8KIAkJbWRkZXYtPnJlc2hhcGVfcG9zaXRp b24gPSBjb25mLT5yZXNoYXBlX3Byb2dyZXNzOwogCQlzZXRfYml0KE1EX0NIQU5HRV9ERVZTLCAm bWRkZXYtPmZsYWdzKTsKQEAgLTEyNzMsNyArMTI3NSw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVx dWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmlvKQogCXIxMF9iaW8tPnNl Y3RvcnMgPSBzZWN0b3JzOwogCiAJcjEwX2Jpby0+bWRkZXYgPSBtZGRldjsKLQlyMTBfYmlvLT5z ZWN0b3IgPSBiaW8tPmJpX3NlY3RvcjsKKwlyMTBfYmlvLT5zZWN0b3IgPSBiaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yOwogCXIxMF9iaW8tPnN0YXRlID0gMDsKIAogCS8qIFdlIG1pZ2h0IG5lZWQgdG8g aXNzdWUgbXVsdGlwbGUgcmVhZHMgdG8gZGlmZmVyZW50CkBAIC0xMzAyLDEzICsxMzA0LDEzIEBA IHJlYWRfYWdhaW46CiAJCXNsb3QgPSByMTBfYmlvLT5yZWFkX3Nsb3Q7CiAKIAkJcmVhZF9iaW8g PSBiaW9fY2xvbmVfbWRkZXYoYmlvLCBHRlBfTk9JTywgbWRkZXYpOwotCQliaW9fdHJpbShyZWFk X2JpbywgcjEwX2Jpby0+c2VjdG9yIC0gYmlvLT5iaV9zZWN0b3IsCisJCWJpb190cmltKHJlYWRf YmlvLCByMTBfYmlvLT5zZWN0b3IgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAogCQkJIG1heF9z ZWN0b3JzKTsKIAogCQlyMTBfYmlvLT5kZXZzW3Nsb3RdLmJpbyA9IHJlYWRfYmlvOwogCQlyMTBf YmlvLT5kZXZzW3Nsb3RdLnJkZXYgPSByZGV2OwogCi0JCXJlYWRfYmlvLT5iaV9zZWN0b3IgPSBy MTBfYmlvLT5kZXZzW3Nsb3RdLmFkZHIgKworCQlyZWFkX2Jpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSByMTBfYmlvLT5kZXZzW3Nsb3RdLmFkZHIgKwogCQkJY2hvb3NlX2RhdGFfb2Zmc2V0KHIxMF9i aW8sIHJkZXYpOwogCQlyZWFkX2Jpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJCXJlYWRfYmlv LT5iaV9lbmRfaW8gPSByYWlkMTBfZW5kX3JlYWRfcmVxdWVzdDsKQEAgLTEzMjAsNyArMTMyMiw3 IEBAIHJlYWRfYWdhaW46CiAJCQkgKiBuZWVkIGFub3RoZXIgcjEwX2Jpby4KIAkJCSAqLwogCQkJ c2VjdG9yc19oYW5kbGVkID0gKHIxMF9iaW8tPnNlY3RvcnMgKyBtYXhfc2VjdG9ycwotCQkJCQkg ICAtIGJpby0+Ymlfc2VjdG9yKTsKKwkJCQkJICAgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsK IAkJCXIxMF9iaW8tPnNlY3RvcnMgPSBtYXhfc2VjdG9yczsKIAkJCXNwaW5fbG9ja19pcnEoJmNv bmYtPmRldmljZV9sb2NrKTsKIAkJCWlmIChiaW8tPmJpX3BoeXNfc2VnbWVudHMgPT0gMCkKQEAg LTEzNDEsNyArMTM0Myw4IEBAIHJlYWRfYWdhaW46CiAJCQlyMTBfYmlvLT5zZWN0b3JzID0gYmlv X3NlY3RvcnMoYmlvKSAtIHNlY3RvcnNfaGFuZGxlZDsKIAkJCXIxMF9iaW8tPnN0YXRlID0gMDsK IAkJCXIxMF9iaW8tPm1kZGV2ID0gbWRkZXY7Ci0JCQlyMTBfYmlvLT5zZWN0b3IgPSBiaW8tPmJp X3NlY3RvciArIHNlY3RvcnNfaGFuZGxlZDsKKwkJCXIxMF9iaW8tPnNlY3RvciA9IGJpby0+Ymlf aXRlci5iaV9zZWN0b3IgKworCQkJCXNlY3RvcnNfaGFuZGxlZDsKIAkJCWdvdG8gcmVhZF9hZ2Fp bjsKIAkJfSBlbHNlCiAJCQlnZW5lcmljX21ha2VfcmVxdWVzdChyZWFkX2Jpbyk7CkBAIC0xNDk5 LDcgKzE1MDIsOCBAQCByZXRyeV93cml0ZToKIAkJCWJpby0+YmlfcGh5c19zZWdtZW50cysrOwog CQlzcGluX3VubG9ja19pcnEoJmNvbmYtPmRldmljZV9sb2NrKTsKIAl9Ci0Jc2VjdG9yc19oYW5k bGVkID0gcjEwX2Jpby0+c2VjdG9yICsgbWF4X3NlY3RvcnMgLSBiaW8tPmJpX3NlY3RvcjsKKwlz ZWN0b3JzX2hhbmRsZWQgPSByMTBfYmlvLT5zZWN0b3IgKyBtYXhfc2VjdG9ycyAtCisJCWJpby0+ YmlfaXRlci5iaV9zZWN0b3I7CiAKIAlhdG9taWNfc2V0KCZyMTBfYmlvLT5yZW1haW5pbmcsIDEp OwogCWJpdG1hcF9zdGFydHdyaXRlKG1kZGV2LT5iaXRtYXAsIHIxMF9iaW8tPnNlY3RvciwgcjEw X2Jpby0+c2VjdG9ycywgMCk7CkBAIC0xNTEwLDExICsxNTE0LDExIEBAIHJldHJ5X3dyaXRlOgog CQlpZiAocjEwX2Jpby0+ZGV2c1tpXS5iaW8pIHsKIAkJCXN0cnVjdCBtZF9yZGV2ICpyZGV2ID0g Y29uZi0+bWlycm9yc1tkXS5yZGV2OwogCQkJbWJpbyA9IGJpb19jbG9uZV9tZGRldihiaW8sIEdG UF9OT0lPLCBtZGRldik7Ci0JCQliaW9fdHJpbShtYmlvLCByMTBfYmlvLT5zZWN0b3IgLSBiaW8t PmJpX3NlY3RvciwKKwkJCWJpb190cmltKG1iaW8sIHIxMF9iaW8tPnNlY3RvciAtIGJpby0+Ymlf aXRlci5iaV9zZWN0b3IsCiAJCQkJIG1heF9zZWN0b3JzKTsKIAkJCXIxMF9iaW8tPmRldnNbaV0u YmlvID0gbWJpbzsKIAotCQkJbWJpby0+Ymlfc2VjdG9yCT0gKHIxMF9iaW8tPmRldnNbaV0uYWRk cisKKwkJCW1iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yCT0gKHIxMF9iaW8tPmRldnNbaV0uYWRkcisK IAkJCQkJICAgY2hvb3NlX2RhdGFfb2Zmc2V0KHIxMF9iaW8sCiAJCQkJCQkJICAgICAgcmRldikp OwogCQkJbWJpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CkBAIC0xNTUzLDExICsxNTU3LDExIEBA IHJldHJ5X3dyaXRlOgogCQkJCXJkZXYgPSBjb25mLT5taXJyb3JzW2RdLnJkZXY7CiAJCQl9CiAJ CQltYmlvID0gYmlvX2Nsb25lX21kZGV2KGJpbywgR0ZQX05PSU8sIG1kZGV2KTsKLQkJCWJpb190 cmltKG1iaW8sIHIxMF9iaW8tPnNlY3RvciAtIGJpby0+Ymlfc2VjdG9yLAorCQkJYmlvX3RyaW0o bWJpbywgcjEwX2Jpby0+c2VjdG9yIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKIAkJCQkgbWF4 X3NlY3RvcnMpOwogCQkJcjEwX2Jpby0+ZGV2c1tpXS5yZXBsX2JpbyA9IG1iaW87CiAKLQkJCW1i aW8tPmJpX3NlY3Rvcgk9IChyMTBfYmlvLT5kZXZzW2ldLmFkZHIgKworCQkJbWJpby0+YmlfaXRl ci5iaV9zZWN0b3IJPSAocjEwX2Jpby0+ZGV2c1tpXS5hZGRyICsKIAkJCQkJICAgY2hvb3NlX2Rh dGFfb2Zmc2V0KAogCQkJCQkJICAgcjEwX2JpbywgcmRldikpOwogCQkJbWJpby0+YmlfYmRldiA9 IHJkZXYtPmJkZXY7CkBAIC0xNTkxLDcgKzE1OTUsNyBAQCByZXRyeV93cml0ZToKIAkJcjEwX2Jp by0+c2VjdG9ycyA9IGJpb19zZWN0b3JzKGJpbykgLSBzZWN0b3JzX2hhbmRsZWQ7CiAKIAkJcjEw X2Jpby0+bWRkZXYgPSBtZGRldjsKLQkJcjEwX2Jpby0+c2VjdG9yID0gYmlvLT5iaV9zZWN0b3Ig KyBzZWN0b3JzX2hhbmRsZWQ7CisJCXIxMF9iaW8tPnNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgKyBzZWN0b3JzX2hhbmRsZWQ7CiAJCXIxMF9iaW8tPnN0YXRlID0gMDsKIAkJZ290byBy ZXRyeV93cml0ZTsKIAl9CkBAIC0yMTIzLDEwICsyMTI3LDEwIEBAIHN0YXRpYyB2b2lkIHN5bmNf cmVxdWVzdF93cml0ZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgcjEwYmlvICpyMTBfYmlv KQogCQliaW9fcmVzZXQodGJpbyk7CiAKIAkJdGJpby0+YmlfdmNudCA9IHZjbnQ7Ci0JCXRiaW8t PmJpX3NpemUgPSByMTBfYmlvLT5zZWN0b3JzIDw8IDk7CisJCXRiaW8tPmJpX2l0ZXIuYmlfc2l6 ZSA9IHIxMF9iaW8tPnNlY3RvcnMgPDwgOTsKIAkJdGJpby0+YmlfcncgPSBXUklURTsKIAkJdGJp by0+YmlfcHJpdmF0ZSA9IHIxMF9iaW87Ci0JCXRiaW8tPmJpX3NlY3RvciA9IHIxMF9iaW8tPmRl dnNbaV0uYWRkcjsKKwkJdGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSByMTBfYmlvLT5kZXZzW2ld LmFkZHI7CiAKIAkJZm9yIChqPTA7IGogPCB2Y250IDsgaisrKSB7CiAJCQl0YmlvLT5iaV9pb192 ZWNbal0uYnZfb2Zmc2V0ID0gMDsKQEAgLTIxNDMsNyArMjE0Nyw3IEBAIHN0YXRpYyB2b2lkIHN5 bmNfcmVxdWVzdF93cml0ZShzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgcjEwYmlvICpyMTBf YmlvKQogCQlhdG9taWNfaW5jKCZyMTBfYmlvLT5yZW1haW5pbmcpOwogCQltZF9zeW5jX2FjY3Qo Y29uZi0+bWlycm9yc1tkXS5yZGV2LT5iZGV2LCBiaW9fc2VjdG9ycyh0YmlvKSk7CiAKLQkJdGJp by0+Ymlfc2VjdG9yICs9IGNvbmYtPm1pcnJvcnNbZF0ucmRldi0+ZGF0YV9vZmZzZXQ7CisJCXRi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yICs9IGNvbmYtPm1pcnJvcnNbZF0ucmRldi0+ZGF0YV9vZmZz ZXQ7CiAJCXRiaW8tPmJpX2JkZXYgPSBjb25mLT5taXJyb3JzW2RdLnJkZXYtPmJkZXY7CiAJCWdl bmVyaWNfbWFrZV9yZXF1ZXN0KHRiaW8pOwogCX0KQEAgLTI2MTMsOCArMjYxNyw4IEBAIHN0YXRp YyBpbnQgbmFycm93X3dyaXRlX2Vycm9yKHN0cnVjdCByMTBiaW8gKnIxMF9iaW8sIGludCBpKQog CQkJc2VjdG9ycyA9IHNlY3RfdG9fd3JpdGU7CiAJCS8qIFdyaXRlIGF0ICdzZWN0b3InIGZvciAn c2VjdG9ycycgKi8KIAkJd2JpbyA9IGJpb19jbG9uZV9tZGRldihiaW8sIEdGUF9OT0lPLCBtZGRl dik7Ci0JCWJpb190cmltKHdiaW8sIHNlY3RvciAtIGJpby0+Ymlfc2VjdG9yLCBzZWN0b3JzKTsK LQkJd2Jpby0+Ymlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbaV0uYWRkcisKKwkJYmlvX3RyaW0o d2Jpbywgc2VjdG9yIC0gYmlvLT5iaV9pdGVyLmJpX3NlY3Rvciwgc2VjdG9ycyk7CisJCXdiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbaV0uYWRkcisKIAkJCQkgICBjaG9v c2VfZGF0YV9vZmZzZXQocjEwX2JpbywgcmRldikgKwogCQkJCSAgIChzZWN0b3IgLSByMTBfYmlv LT5zZWN0b3IpKTsKIAkJd2Jpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CkBAIC0yNjg2LDEwICsy NjkwLDEwIEBAIHJlYWRfbW9yZToKIAkJKHVuc2lnbmVkIGxvbmcgbG9uZylyMTBfYmlvLT5zZWN0 b3IpOwogCWJpbyA9IGJpb19jbG9uZV9tZGRldihyMTBfYmlvLT5tYXN0ZXJfYmlvLAogCQkJICAg ICAgR0ZQX05PSU8sIG1kZGV2KTsKLQliaW9fdHJpbShiaW8sIHIxMF9iaW8tPnNlY3RvciAtIGJp by0+Ymlfc2VjdG9yLCBtYXhfc2VjdG9ycyk7CisJYmlvX3RyaW0oYmlvLCByMTBfYmlvLT5zZWN0 b3IgLSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLCBtYXhfc2VjdG9ycyk7CiAJcjEwX2Jpby0+ZGV2 c1tzbG90XS5iaW8gPSBiaW87CiAJcjEwX2Jpby0+ZGV2c1tzbG90XS5yZGV2ID0gcmRldjsKLQli aW8tPmJpX3NlY3RvciA9IHIxMF9iaW8tPmRldnNbc2xvdF0uYWRkcgorCWJpby0+YmlfaXRlci5i aV9zZWN0b3IgPSByMTBfYmlvLT5kZXZzW3Nsb3RdLmFkZHIKIAkJKyBjaG9vc2VfZGF0YV9vZmZz ZXQocjEwX2JpbywgcmRldik7CiAJYmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKIAliaW8tPmJp X3J3ID0gUkVBRCB8IGRvX3N5bmM7CkBAIC0yNzAwLDcgKzI3MDQsNyBAQCByZWFkX21vcmU6CiAJ CXN0cnVjdCBiaW8gKm1iaW8gPSByMTBfYmlvLT5tYXN0ZXJfYmlvOwogCQlpbnQgc2VjdG9yc19o YW5kbGVkID0KIAkJCXIxMF9iaW8tPnNlY3RvciArIG1heF9zZWN0b3JzCi0JCQktIG1iaW8tPmJp X3NlY3RvcjsKKwkJCS0gbWJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCXIxMF9iaW8tPnNlY3Rv cnMgPSBtYXhfc2VjdG9yczsKIAkJc3Bpbl9sb2NrX2lycSgmY29uZi0+ZGV2aWNlX2xvY2spOwog CQlpZiAobWJpby0+YmlfcGh5c19zZWdtZW50cyA9PSAwKQpAQCAtMjcxOCw3ICsyNzIyLDcgQEAg cmVhZF9tb3JlOgogCQlzZXRfYml0KFIxMEJJT19SZWFkRXJyb3IsCiAJCQkmcjEwX2Jpby0+c3Rh dGUpOwogCQlyMTBfYmlvLT5tZGRldiA9IG1kZGV2OwotCQlyMTBfYmlvLT5zZWN0b3IgPSBtYmlv LT5iaV9zZWN0b3IKKwkJcjEwX2Jpby0+c2VjdG9yID0gbWJpby0+YmlfaXRlci5iaV9zZWN0b3IK IAkJCSsgc2VjdG9yc19oYW5kbGVkOwogCiAJCWdvdG8gcmVhZF9tb3JlOwpAQCAtMzE1Niw3ICsz MTYwLDggQEAgc3RhdGljIHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2 LCBzZWN0b3JfdCBzZWN0b3JfbnIsCiAJCQkJYmlvLT5iaV9lbmRfaW8gPSBlbmRfc3luY19yZWFk OwogCQkJCWJpby0+YmlfcncgPSBSRUFEOwogCQkJCWZyb21fYWRkciA9IHIxMF9iaW8tPmRldnNb al0uYWRkcjsKLQkJCQliaW8tPmJpX3NlY3RvciA9IGZyb21fYWRkciArIHJkZXYtPmRhdGFfb2Zm c2V0OworCQkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBmcm9tX2FkZHIgKworCQkJCQlyZGV2 LT5kYXRhX29mZnNldDsKIAkJCQliaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2OwogCQkJCWF0b21p Y19pbmMoJnJkZXYtPm5yX3BlbmRpbmcpOwogCQkJCS8qIGFuZCB3ZSB3cml0ZSB0byAnaScgKGlm IG5vdCBpbl9zeW5jKSAqLwpAQCAtMzE4MCw3ICszMTg1LDcgQEAgc3RhdGljIHNlY3Rvcl90IHN5 bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0b3JfbnIsCiAJCQkJ CWJpby0+YmlfcHJpdmF0ZSA9IHIxMF9iaW87CiAJCQkJCWJpby0+YmlfZW5kX2lvID0gZW5kX3N5 bmNfd3JpdGU7CiAJCQkJCWJpby0+YmlfcncgPSBXUklURTsKLQkJCQkJYmlvLT5iaV9zZWN0b3Ig PSB0b19hZGRyCisJCQkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSB0b19hZGRyCiAJCQkJCQkr IHJkZXYtPmRhdGFfb2Zmc2V0OwogCQkJCQliaW8tPmJpX2JkZXYgPSByZGV2LT5iZGV2OwogCQkJ CQlhdG9taWNfaW5jKCZyMTBfYmlvLT5yZW1haW5pbmcpOwpAQCAtMzIwOSw3ICszMjE0LDggQEAg c3RhdGljIHNlY3Rvcl90IHN5bmNfcmVxdWVzdChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzZWN0b3Jf dCBzZWN0b3JfbnIsCiAJCQkJYmlvLT5iaV9wcml2YXRlID0gcjEwX2JpbzsKIAkJCQliaW8tPmJp X2VuZF9pbyA9IGVuZF9zeW5jX3dyaXRlOwogCQkJCWJpby0+YmlfcncgPSBXUklURTsKLQkJCQli aW8tPmJpX3NlY3RvciA9IHRvX2FkZHIgKyByZGV2LT5kYXRhX29mZnNldDsKKwkJCQliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gdG9fYWRkciArCisJCQkJCXJkZXYtPmRhdGFfb2Zmc2V0OwogCQkJ CWJpby0+YmlfYmRldiA9IHJkZXYtPmJkZXY7CiAJCQkJYXRvbWljX2luYygmcjEwX2Jpby0+cmVt YWluaW5nKTsKIAkJCQlicmVhazsKQEAgLTMzMjcsNyArMzMzMyw3IEBAIHN0YXRpYyBzZWN0b3Jf dCBzeW5jX3JlcXVlc3Qoc3RydWN0IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLAog CQkJYmlvLT5iaV9wcml2YXRlID0gcjEwX2JpbzsKIAkJCWJpby0+YmlfZW5kX2lvID0gZW5kX3N5 bmNfcmVhZDsKIAkJCWJpby0+YmlfcncgPSBSRUFEOwotCQkJYmlvLT5iaV9zZWN0b3IgPSBzZWN0 b3IgKworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArCiAJCQkJY29uZi0+bWly cm9yc1tkXS5yZGV2LT5kYXRhX29mZnNldDsKIAkJCWJpby0+YmlfYmRldiA9IGNvbmYtPm1pcnJv cnNbZF0ucmRldi0+YmRldjsKIAkJCWNvdW50Kys7CkBAIC0zMzQ5LDcgKzMzNTUsNyBAQCBzdGF0 aWMgc2VjdG9yX3Qgc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHNlY3Rvcl90IHNl Y3Rvcl9uciwKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHIxMF9iaW87CiAJCQliaW8tPmJpX2VuZF9p byA9IGVuZF9zeW5jX3dyaXRlOwogCQkJYmlvLT5iaV9ydyA9IFdSSVRFOwotCQkJYmlvLT5iaV9z ZWN0b3IgPSBzZWN0b3IgKworCQkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvciArCiAJ CQkJY29uZi0+bWlycm9yc1tkXS5yZXBsYWNlbWVudC0+ZGF0YV9vZmZzZXQ7CiAJCQliaW8tPmJp X2JkZXYgPSBjb25mLT5taXJyb3JzW2RdLnJlcGxhY2VtZW50LT5iZGV2OwogCQkJY291bnQrKzsK QEAgLTMzOTYsNyArMzQwMiw3IEBAIHN0YXRpYyBzZWN0b3JfdCBzeW5jX3JlcXVlc3Qoc3RydWN0 IG1kZGV2ICptZGRldiwgc2VjdG9yX3Qgc2VjdG9yX25yLAogCQkJICAgICBiaW8yID0gYmlvMi0+ YmlfbmV4dCkgewogCQkJCS8qIHJlbW92ZSBsYXN0IHBhZ2UgZnJvbSB0aGlzIGJpbyAqLwogCQkJ CWJpbzItPmJpX3ZjbnQtLTsKLQkJCQliaW8yLT5iaV9zaXplIC09IGxlbjsKKwkJCQliaW8yLT5i aV9pdGVyLmJpX3NpemUgLT0gbGVuOwogCQkJCWJpbzItPmJpX2ZsYWdzICY9IH4oMTw8IEJJT19T RUdfVkFMSUQpOwogCQkJfQogCQkJZ290byBiaW9fZnVsbDsKQEAgLTQ0MTIsNyArNDQxOCw3IEBA IHJlYWRfbW9yZToKIAlyZWFkX2JpbyA9IGJpb19hbGxvY19tZGRldihHRlBfS0VSTkVMLCBSRVNZ TkNfUEFHRVMsIG1kZGV2KTsKIAogCXJlYWRfYmlvLT5iaV9iZGV2ID0gcmRldi0+YmRldjsKLQly ZWFkX2Jpby0+Ymlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbcjEwX2Jpby0+cmVhZF9zbG90XS5h ZGRyCisJcmVhZF9iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gKHIxMF9iaW8tPmRldnNbcjEwX2Jp by0+cmVhZF9zbG90XS5hZGRyCiAJCQkgICAgICAgKyByZGV2LT5kYXRhX29mZnNldCk7CiAJcmVh ZF9iaW8tPmJpX3ByaXZhdGUgPSByMTBfYmlvOwogCXJlYWRfYmlvLT5iaV9lbmRfaW8gPSBlbmRf c3luY19yZWFkOwpAQCAtNDQyMCw3ICs0NDI2LDcgQEAgcmVhZF9tb3JlOgogCXJlYWRfYmlvLT5i aV9mbGFncyAmPSB+KEJJT19QT09MX01BU0sgLSAxKTsKIAlyZWFkX2Jpby0+YmlfZmxhZ3MgfD0g MSA8PCBCSU9fVVBUT0RBVEU7CiAJcmVhZF9iaW8tPmJpX3ZjbnQgPSAwOwotCXJlYWRfYmlvLT5i aV9zaXplID0gMDsKKwlyZWFkX2Jpby0+YmlfaXRlci5iaV9zaXplID0gMDsKIAlyMTBfYmlvLT5t YXN0ZXJfYmlvID0gcmVhZF9iaW87CiAJcjEwX2Jpby0+cmVhZF9zbG90ID0gcjEwX2Jpby0+ZGV2 c1tyMTBfYmlvLT5yZWFkX3Nsb3RdLmRldm51bTsKIApAQCAtNDQ0Niw3ICs0NDUyLDggQEAgcmVh ZF9tb3JlOgogCiAJCWJpb19yZXNldChiKTsKIAkJYi0+YmlfYmRldiA9IHJkZXYyLT5iZGV2Owot CQliLT5iaV9zZWN0b3IgPSByMTBfYmlvLT5kZXZzW3MvMl0uYWRkciArIHJkZXYyLT5uZXdfZGF0 YV9vZmZzZXQ7CisJCWItPmJpX2l0ZXIuYmlfc2VjdG9yID0gcjEwX2Jpby0+ZGV2c1tzLzJdLmFk ZHIgKworCQkJcmRldjItPm5ld19kYXRhX29mZnNldDsKIAkJYi0+YmlfcHJpdmF0ZSA9IHIxMF9i aW87CiAJCWItPmJpX2VuZF9pbyA9IGVuZF9yZXNoYXBlX3dyaXRlOwogCQliLT5iaV9ydyA9IFdS SVRFOwpAQCAtNDQ3Myw3ICs0NDgwLDcgQEAgcmVhZF9tb3JlOgogCQkJICAgICBiaW8yID0gYmlv Mi0+YmlfbmV4dCkgewogCQkJCS8qIFJlbW92ZSBsYXN0IHBhZ2UgZnJvbSB0aGlzIGJpbyAqLwog CQkJCWJpbzItPmJpX3ZjbnQtLTsKLQkJCQliaW8yLT5iaV9zaXplIC09IGxlbjsKKwkJCQliaW8y LT5iaV9pdGVyLmJpX3NpemUgLT0gbGVuOwogCQkJCWJpbzItPmJpX2ZsYWdzICY9IH4oMTw8QklP X1NFR19WQUxJRCk7CiAJCQl9CiAJCQlnb3RvIGJpb19mdWxsOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9tZC9yYWlkNS5jIGIvZHJpdmVycy9tZC9yYWlkNS5jCmluZGV4IDc4ZWE0NDMuLjNiMTBhMDIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDUuYworKysgYi9kcml2ZXJzL21kL3JhaWQ1LmMK QEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaGxpc3RfaGVhZCAqc3RyaXBl X2hhc2goc3RydWN0IHI1Y29uZiAqY29uZiwgc2VjdG9yX3Qgc2VjdCkKIHN0YXRpYyBpbmxpbmUg c3RydWN0IGJpbyAqcjVfbmV4dF9iaW8oc3RydWN0IGJpbyAqYmlvLCBzZWN0b3JfdCBzZWN0b3Ip CiB7CiAJaW50IHNlY3RvcnMgPSBiaW9fc2VjdG9ycyhiaW8pOwotCWlmIChiaW8tPmJpX3NlY3Rv ciArIHNlY3RvcnMgPCBzZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykKKwlpZiAoYmlvLT5iaV9pdGVy LmJpX3NlY3RvciArIHNlY3RvcnMgPCBzZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykKIAkJcmV0dXJu IGJpby0+YmlfbmV4dDsKIAllbHNlCiAJCXJldHVybiBOVUxMOwpAQCAtMTgzLDcgKzE4Myw3IEBA IHN0YXRpYyB2b2lkIHJldHVybl9pbyhzdHJ1Y3QgYmlvICpyZXR1cm5fYmkpCiAKIAkJcmV0dXJu X2JpID0gYmktPmJpX25leHQ7CiAJCWJpLT5iaV9uZXh0ID0gTlVMTDsKLQkJYmktPmJpX3NpemUg PSAwOworCQliaS0+YmlfaXRlci5iaV9zaXplID0gMDsKIAkJdHJhY2VfYmxvY2tfYmlvX2NvbXBs ZXRlKGJkZXZfZ2V0X3F1ZXVlKGJpLT5iaV9iZGV2KSwKIAkJCQkJIGJpLCAwKTsKIAkJYmlvX2Vu ZGlvKGJpLCAwKTsKQEAgLTY1NiwxMCArNjU2LDEwIEBAIHN0YXRpYyB2b2lkIG9wc19ydW5faW8o c3RydWN0IHN0cmlwZV9oZWFkICpzaCwgc3RydWN0IHN0cmlwZV9oZWFkX3N0YXRlICpzKQogCQkJ CWJpLT5iaV9ydywgaSk7CiAJCQlhdG9taWNfaW5jKCZzaC0+Y291bnQpOwogCQkJaWYgKHVzZV9u ZXdfb2Zmc2V0KGNvbmYsIHNoKSkKLQkJCQliaS0+Ymlfc2VjdG9yID0gKHNoLT5zZWN0b3IKKwkJ CQliaS0+YmlfaXRlci5iaV9zZWN0b3IgPSAoc2gtPnNlY3RvcgogCQkJCQkJICsgcmRldi0+bmV3 X2RhdGFfb2Zmc2V0KTsKIAkJCWVsc2UKLQkJCQliaS0+Ymlfc2VjdG9yID0gKHNoLT5zZWN0b3IK KwkJCQliaS0+YmlfaXRlci5iaV9zZWN0b3IgPSAoc2gtPnNlY3RvcgogCQkJCQkJICsgcmRldi0+ ZGF0YV9vZmZzZXQpOwogCQkJaWYgKHRlc3RfYml0KFI1X1JlYWROb01lcmdlLCAmc2gtPmRldltp XS5mbGFncykpCiAJCQkJYmktPmJpX3J3IHw9IFJFUV9GTFVTSDsKQEAgLTY2Nyw3ICs2NjcsNyBA QCBzdGF0aWMgdm9pZCBvcHNfcnVuX2lvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBz dHJpcGVfaGVhZF9zdGF0ZSAqcykKIAkJCWJpLT5iaV92Y250ID0gMTsKIAkJCWJpLT5iaV9pb192 ZWNbMF0uYnZfbGVuID0gU1RSSVBFX1NJWkU7CiAJCQliaS0+YmlfaW9fdmVjWzBdLmJ2X29mZnNl dCA9IDA7Ci0JCQliaS0+Ymlfc2l6ZSA9IFNUUklQRV9TSVpFOworCQkJYmktPmJpX2l0ZXIuYmlf c2l6ZSA9IFNUUklQRV9TSVpFOwogCQkJaWYgKHJyZGV2KQogCQkJCXNldF9iaXQoUjVfRE9VQkxF X0xPQ0tFRCwgJnNoLT5kZXZbaV0uZmxhZ3MpOwogCkBAIC02OTcsMTUgKzY5NywxNSBAQCBzdGF0 aWMgdm9pZCBvcHNfcnVuX2lvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBzdHJpcGVf aGVhZF9zdGF0ZSAqcykKIAkJCQlyYmktPmJpX3J3LCBpKTsKIAkJCWF0b21pY19pbmMoJnNoLT5j b3VudCk7CiAJCQlpZiAodXNlX25ld19vZmZzZXQoY29uZiwgc2gpKQotCQkJCXJiaS0+Ymlfc2Vj dG9yID0gKHNoLT5zZWN0b3IKKwkJCQlyYmktPmJpX2l0ZXIuYmlfc2VjdG9yID0gKHNoLT5zZWN0 b3IKIAkJCQkJCSAgKyBycmRldi0+bmV3X2RhdGFfb2Zmc2V0KTsKIAkJCWVsc2UKLQkJCQlyYmkt PmJpX3NlY3RvciA9IChzaC0+c2VjdG9yCisJCQkJcmJpLT5iaV9pdGVyLmJpX3NlY3RvciA9IChz aC0+c2VjdG9yCiAJCQkJCQkgICsgcnJkZXYtPmRhdGFfb2Zmc2V0KTsKIAkJCXJiaS0+YmlfdmNu dCA9IDE7CiAJCQlyYmktPmJpX2lvX3ZlY1swXS5idl9sZW4gPSBTVFJJUEVfU0laRTsKIAkJCXJi aS0+YmlfaW9fdmVjWzBdLmJ2X29mZnNldCA9IDA7Ci0JCQlyYmktPmJpX3NpemUgPSBTVFJJUEVf U0laRTsKKwkJCXJiaS0+YmlfaXRlci5iaV9zaXplID0gU1RSSVBFX1NJWkU7CiAJCQlpZiAoY29u Zi0+bWRkZXYtPmdlbmRpc2spCiAJCQkJdHJhY2VfYmxvY2tfYmlvX3JlbWFwKGJkZXZfZ2V0X3F1 ZXVlKHJiaS0+YmlfYmRldiksCiAJCQkJCQkgICAgICByYmksIGRpc2tfZGV2dChjb25mLT5tZGRl di0+Z2VuZGlzayksCkBAIC03MzQsMTAgKzczNCwxMCBAQCBhc3luY19jb3B5X2RhdGEoaW50IGZy b21iaW8sIHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IHBhZ2UgKnBhZ2UsCiAJc3RydWN0IGFzeW5j X3N1Ym1pdF9jdGwgc3VibWl0OwogCWVudW0gYXN5bmNfdHhfZmxhZ3MgZmxhZ3MgPSAwOwogCi0J aWYgKGJpby0+Ymlfc2VjdG9yID49IHNlY3RvcikKLQkJcGFnZV9vZmZzZXQgPSAoc2lnbmVkKShi aW8tPmJpX3NlY3RvciAtIHNlY3RvcikgKiA1MTI7CisJaWYgKGJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPj0gc2VjdG9yKQorCQlwYWdlX29mZnNldCA9IChzaWduZWQpKGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgLSBzZWN0b3IpICogNTEyOwogCWVsc2UKLQkJcGFnZV9vZmZzZXQgPSAoc2lnbmVkKShz ZWN0b3IgLSBiaW8tPmJpX3NlY3RvcikgKiAtNTEyOworCQlwYWdlX29mZnNldCA9IChzaWduZWQp KHNlY3RvciAtIGJpby0+YmlfaXRlci5iaV9zZWN0b3IpICogLTUxMjsKIAogCWlmIChmcm9tYmlv KQogCQlmbGFncyB8PSBBU1lOQ19UWF9GRU5DRTsKQEAgLTgwNCw3ICs4MDQsNyBAQCBzdGF0aWMg dm9pZCBvcHNfY29tcGxldGVfYmlvZmlsbCh2b2lkICpzdHJpcGVfaGVhZF9yZWYpCiAJCQlCVUdf T04oIWRldi0+cmVhZCk7CiAJCQlyYmkgPSBkZXYtPnJlYWQ7CiAJCQlkZXYtPnJlYWQgPSBOVUxM OwotCQkJd2hpbGUgKHJiaSAmJiByYmktPmJpX3NlY3RvciA8CisJCQl3aGlsZSAocmJpICYmIHJi aS0+YmlfaXRlci5iaV9zZWN0b3IgPAogCQkJCWRldi0+c2VjdG9yICsgU1RSSVBFX1NFQ1RPUlMp IHsKIAkJCQlyYmkyID0gcjVfbmV4dF9iaW8ocmJpLCBkZXYtPnNlY3Rvcik7CiAJCQkJaWYgKCFy YWlkNV9kZWNfYmlfYWN0aXZlX3N0cmlwZXMocmJpKSkgewpAQCAtODQwLDcgKzg0MCw3IEBAIHN0 YXRpYyB2b2lkIG9wc19ydW5fYmlvZmlsbChzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoKQogCQkJZGV2 LT5yZWFkID0gcmJpID0gZGV2LT50b3JlYWQ7CiAJCQlkZXYtPnRvcmVhZCA9IE5VTEw7CiAJCQlz cGluX3VubG9ja19pcnEoJnNoLT5zdHJpcGVfbG9jayk7Ci0JCQl3aGlsZSAocmJpICYmIHJiaS0+ Ymlfc2VjdG9yIDwKKwkJCXdoaWxlIChyYmkgJiYgcmJpLT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJ CQkJZGV2LT5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJCXR4ID0gYXN5bmNfY29weV9k YXRhKDAsIHJiaSwgZGV2LT5wYWdlLAogCQkJCQlkZXYtPnNlY3RvciwgdHgpOwpAQCAtMTE4Miw3 ICsxMTgyLDcgQEAgb3BzX3J1bl9iaW9kcmFpbihzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1 Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKnR4KQogCQkJd2JpID0gZGV2LT53cml0dGVuID0g Y2hvc2VuOwogCQkJc3Bpbl91bmxvY2tfaXJxKCZzaC0+c3RyaXBlX2xvY2spOwogCi0JCQl3aGls ZSAod2JpICYmIHdiaS0+Ymlfc2VjdG9yIDwKKwkJCXdoaWxlICh3YmkgJiYgd2JpLT5iaV9pdGVy LmJpX3NlY3RvciA8CiAJCQkJZGV2LT5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJCWlm ICh3YmktPmJpX3J3ICYgUkVRX0ZVQSkKIAkJCQkJc2V0X2JpdChSNV9XYW50RlVBLCAmZGV2LT5m bGFncyk7CkBAIC0yMzg0LDcgKzIzODQsNyBAQCBzdGF0aWMgaW50IGFkZF9zdHJpcGVfYmlvKHN0 cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBiaW8gKmJpLCBpbnQgZGRfaWR4LCBpbgogCWlu dCBmaXJzdHdyaXRlPTA7CiAKIAlwcl9kZWJ1ZygiYWRkaW5nIGJpIGIjJWxsdSB0byBzdHJpcGUg cyMlbGx1XG4iLAotCQkodW5zaWduZWQgbG9uZyBsb25nKWJpLT5iaV9zZWN0b3IsCisJCSh1bnNp Z25lZCBsb25nIGxvbmcpYmktPmJpX2l0ZXIuYmlfc2VjdG9yLAogCQkodW5zaWduZWQgbG9uZyBs b25nKXNoLT5zZWN0b3IpOwogCiAJLyoKQEAgLTI0MDIsMTIgKzI0MDIsMTIgQEAgc3RhdGljIGlu dCBhZGRfc3RyaXBlX2JpbyhzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1Y3QgYmlvICpiaSwg aW50IGRkX2lkeCwgaW4KIAkJCWZpcnN0d3JpdGUgPSAxOwogCX0gZWxzZQogCQliaXAgPSAmc2gt PmRldltkZF9pZHhdLnRvcmVhZDsKLQl3aGlsZSAoKmJpcCAmJiAoKmJpcCktPmJpX3NlY3RvciA8 IGJpLT5iaV9zZWN0b3IpIHsKLQkJaWYgKGJpb19lbmRfc2VjdG9yKCpiaXApID4gYmktPmJpX3Nl Y3RvcikKKwl3aGlsZSAoKmJpcCAmJiAoKmJpcCktPmJpX2l0ZXIuYmlfc2VjdG9yIDwgYmktPmJp X2l0ZXIuYmlfc2VjdG9yKSB7CisJCWlmIChiaW9fZW5kX3NlY3RvcigqYmlwKSA+IGJpLT5iaV9p dGVyLmJpX3NlY3RvcikKIAkJCWdvdG8gb3ZlcmxhcDsKIAkJYmlwID0gJiAoKmJpcCktPmJpX25l eHQ7CiAJfQotCWlmICgqYmlwICYmICgqYmlwKS0+Ymlfc2VjdG9yIDwgYmlvX2VuZF9zZWN0b3Io YmkpKQorCWlmICgqYmlwICYmICgqYmlwKS0+YmlfaXRlci5iaV9zZWN0b3IgPCBiaW9fZW5kX3Nl Y3RvcihiaSkpCiAJCWdvdG8gb3ZlcmxhcDsKIAogCUJVR19PTigqYmlwICYmIGJpLT5iaV9uZXh0 ICYmICgqYmlwKSAhPSBiaS0+YmlfbmV4dCk7CkBAIC0yNDIxLDcgKzI0MjEsNyBAQCBzdGF0aWMg aW50IGFkZF9zdHJpcGVfYmlvKHN0cnVjdCBzdHJpcGVfaGVhZCAqc2gsIHN0cnVjdCBiaW8gKmJp LCBpbnQgZGRfaWR4LCBpbgogCQlzZWN0b3JfdCBzZWN0b3IgPSBzaC0+ZGV2W2RkX2lkeF0uc2Vj dG9yOwogCQlmb3IgKGJpPXNoLT5kZXZbZGRfaWR4XS50b3dyaXRlOwogCQkgICAgIHNlY3RvciA8 IHNoLT5kZXZbZGRfaWR4XS5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUyAmJgotCQkJICAgICBiaSAm JiBiaS0+Ymlfc2VjdG9yIDw9IHNlY3RvcjsKKwkJCSAgICAgYmkgJiYgYmktPmJpX2l0ZXIuYmlf c2VjdG9yIDw9IHNlY3RvcjsKIAkJICAgICBiaSA9IHI1X25leHRfYmlvKGJpLCBzaC0+ZGV2W2Rk X2lkeF0uc2VjdG9yKSkgewogCQkJaWYgKGJpb19lbmRfc2VjdG9yKGJpKSA+PSBzZWN0b3IpCiAJ CQkJc2VjdG9yID0gYmlvX2VuZF9zZWN0b3IoYmkpOwpAQCAtMjQzMSw3ICsyNDMxLDcgQEAgc3Rh dGljIGludCBhZGRfc3RyaXBlX2JpbyhzdHJ1Y3Qgc3RyaXBlX2hlYWQgKnNoLCBzdHJ1Y3QgYmlv ICpiaSwgaW50IGRkX2lkeCwgaW4KIAl9CiAKIAlwcl9kZWJ1ZygiYWRkZWQgYmkgYiMlbGx1IHRv IHN0cmlwZSBzIyVsbHUsIGRpc2sgJWQuXG4iLAotCQkodW5zaWduZWQgbG9uZyBsb25nKSgqYmlw KS0+Ymlfc2VjdG9yLAorCQkodW5zaWduZWQgbG9uZyBsb25nKSgqYmlwKS0+YmlfaXRlci5iaV9z ZWN0b3IsCiAJCSh1bnNpZ25lZCBsb25nIGxvbmcpc2gtPnNlY3RvciwgZGRfaWR4KTsKIAlzcGlu X3VubG9ja19pcnEoJnNoLT5zdHJpcGVfbG9jayk7CiAKQEAgLTI1MDYsNyArMjUwNiw3IEBAIGhh bmRsZV9mYWlsZWRfc3RyaXBlKHN0cnVjdCByNWNvbmYgKmNvbmYsIHN0cnVjdCBzdHJpcGVfaGVh ZCAqc2gsCiAJCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoUjVfT3ZlcmxhcCwgJnNoLT5kZXZbaV0u ZmxhZ3MpKQogCQkJd2FrZV91cCgmY29uZi0+d2FpdF9mb3Jfb3ZlcmxhcCk7CiAKLQkJd2hpbGUg KGJpICYmIGJpLT5iaV9zZWN0b3IgPAorCQl3aGlsZSAoYmkgJiYgYmktPmJpX2l0ZXIuYmlfc2Vj dG9yIDwKIAkJCXNoLT5kZXZbaV0uc2VjdG9yICsgU1RSSVBFX1NFQ1RPUlMpIHsKIAkJCXN0cnVj dCBiaW8gKm5leHRiaSA9IHI1X25leHRfYmlvKGJpLCBzaC0+ZGV2W2ldLnNlY3Rvcik7CiAJCQlj bGVhcl9iaXQoQklPX1VQVE9EQVRFLCAmYmktPmJpX2ZsYWdzKTsKQEAgLTI1MjUsNyArMjUyNSw3 IEBAIGhhbmRsZV9mYWlsZWRfc3RyaXBlKHN0cnVjdCByNWNvbmYgKmNvbmYsIHN0cnVjdCBzdHJp cGVfaGVhZCAqc2gsCiAJCWJpID0gc2gtPmRldltpXS53cml0dGVuOwogCQlzaC0+ZGV2W2ldLndy aXR0ZW4gPSBOVUxMOwogCQlpZiAoYmkpIGJpdG1hcF9lbmQgPSAxOwotCQl3aGlsZSAoYmkgJiYg YmktPmJpX3NlY3RvciA8CisJCXdoaWxlIChiaSAmJiBiaS0+YmlfaXRlci5iaV9zZWN0b3IgPAog CQkgICAgICAgc2gtPmRldltpXS5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJc3RydWN0 IGJpbyAqYmkyID0gcjVfbmV4dF9iaW8oYmksIHNoLT5kZXZbaV0uc2VjdG9yKTsKIAkJCWNsZWFy X2JpdChCSU9fVVBUT0RBVEUsICZiaS0+YmlfZmxhZ3MpOwpAQCAtMjU0OSw3ICsyNTQ5LDcgQEAg aGFuZGxlX2ZhaWxlZF9zdHJpcGUoc3RydWN0IHI1Y29uZiAqY29uZiwgc3RydWN0IHN0cmlwZV9o ZWFkICpzaCwKIAkJCXNwaW5fdW5sb2NrX2lycSgmc2gtPnN0cmlwZV9sb2NrKTsKIAkJCWlmICh0 ZXN0X2FuZF9jbGVhcl9iaXQoUjVfT3ZlcmxhcCwgJnNoLT5kZXZbaV0uZmxhZ3MpKQogCQkJCXdh a2VfdXAoJmNvbmYtPndhaXRfZm9yX292ZXJsYXApOwotCQkJd2hpbGUgKGJpICYmIGJpLT5iaV9z ZWN0b3IgPAorCQkJd2hpbGUgKGJpICYmIGJpLT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJCQkgICAg ICAgc2gtPmRldltpXS5zZWN0b3IgKyBTVFJJUEVfU0VDVE9SUykgewogCQkJCXN0cnVjdCBiaW8g Km5leHRiaSA9CiAJCQkJCXI1X25leHRfYmlvKGJpLCBzaC0+ZGV2W2ldLnNlY3Rvcik7CkBAIC0y NzczLDcgKzI3NzMsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfc3RyaXBlX2NsZWFuX2V2ZW50KHN0 cnVjdCByNWNvbmYgKmNvbmYsCiAJCQkJCWNsZWFyX2JpdChSNV9VUFRPREFURSwgJmRldi0+Zmxh Z3MpOwogCQkJCXdiaSA9IGRldi0+d3JpdHRlbjsKIAkJCQlkZXYtPndyaXR0ZW4gPSBOVUxMOwot CQkJCXdoaWxlICh3YmkgJiYgd2JpLT5iaV9zZWN0b3IgPAorCQkJCXdoaWxlICh3YmkgJiYgd2Jp LT5iaV9pdGVyLmJpX3NlY3RvciA8CiAJCQkJCWRldi0+c2VjdG9yICsgU1RSSVBFX1NFQ1RPUlMp IHsKIAkJCQkJd2JpMiA9IHI1X25leHRfYmlvKHdiaSwgZGV2LT5zZWN0b3IpOwogCQkJCQlpZiAo IXJhaWQ1X2RlY19iaV9hY3RpdmVfc3RyaXBlcyh3YmkpKSB7CkBAIC0zODUzLDcgKzM4NTMsNyBA QCBzdGF0aWMgaW50IHJhaWQ1X21lcmdlYWJsZV9idmVjKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LAogCiBzdGF0aWMgaW50IGluX2NodW5rX2JvdW5kYXJ5KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0 cnVjdCBiaW8gKmJpbykKIHsKLQlzZWN0b3JfdCBzZWN0b3IgPSBiaW8tPmJpX3NlY3RvciArIGdl dF9zdGFydF9zZWN0KGJpby0+YmlfYmRldik7CisJc2VjdG9yX3Qgc2VjdG9yID0gYmlvLT5iaV9p dGVyLmJpX3NlY3RvciArIGdldF9zdGFydF9zZWN0KGJpby0+YmlfYmRldik7CiAJdW5zaWduZWQg aW50IGNodW5rX3NlY3RvcnMgPSBtZGRldi0+Y2h1bmtfc2VjdG9yczsKIAl1bnNpZ25lZCBpbnQg YmlvX3NlY3RvcnMgPSBiaW9fc2VjdG9ycyhiaW8pOwogCkBAIC0zOTkwLDkgKzM5OTAsOSBAQCBz dGF0aWMgaW50IGNodW5rX2FsaWduZWRfcmVhZChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3Qg YmlvICogcmFpZF9iaW8pCiAJLyoKIAkgKgljb21wdXRlIHBvc2l0aW9uCiAJICovCi0JYWxpZ25f YmktPmJpX3NlY3RvciA9ICByYWlkNV9jb21wdXRlX3NlY3Rvcihjb25mLCByYWlkX2Jpby0+Ymlf c2VjdG9yLAotCQkJCQkJICAgIDAsCi0JCQkJCQkgICAgJmRkX2lkeCwgTlVMTCk7CisJYWxpZ25f YmktPmJpX2l0ZXIuYmlfc2VjdG9yID0KKwkJcmFpZDVfY29tcHV0ZV9zZWN0b3IoY29uZiwgcmFp ZF9iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJCSAgICAgMCwgJmRkX2lkeCwgTlVMTCk7CiAK IAllbmRfc2VjdG9yID0gYmlvX2VuZF9zZWN0b3IoYWxpZ25fYmkpOwogCXJjdV9yZWFkX2xvY2so KTsKQEAgLTQwMTcsNyArNDAxNyw4IEBAIHN0YXRpYyBpbnQgY2h1bmtfYWxpZ25lZF9yZWFkKHN0 cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKiByYWlkX2JpbykKIAkJYWxpZ25fYmktPmJp X2ZsYWdzICY9IH4oMSA8PCBCSU9fU0VHX1ZBTElEKTsKIAogCQlpZiAoIWJpb19maXRzX3JkZXYo YWxpZ25fYmkpIHx8Ci0JCSAgICBpc19iYWRibG9jayhyZGV2LCBhbGlnbl9iaS0+Ymlfc2VjdG9y LCBiaW9fc2VjdG9ycyhhbGlnbl9iaSksCisJCSAgICBpc19iYWRibG9jayhyZGV2LCBhbGlnbl9i aS0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkJYmlvX3NlY3RvcnMoYWxpZ25fYmkpLAogCQkJCSZm aXJzdF9iYWQsICZiYWRfc2VjdG9ycykpIHsKIAkJCS8qIHRvbyBiaWcgaW4gc29tZSB3YXksIG9y IGhhcyBhIGtub3duIGJhZCBibG9jayAqLwogCQkJYmlvX3B1dChhbGlnbl9iaSk7CkBAIC00MDI2 LDcgKzQwMjcsNyBAQCBzdGF0aWMgaW50IGNodW5rX2FsaWduZWRfcmVhZChzdHJ1Y3QgbWRkZXYg Km1kZGV2LCBzdHJ1Y3QgYmlvICogcmFpZF9iaW8pCiAJCX0KIAogCQkvKiBObyByZXNoYXBlIGFj dGl2ZSwgc28gd2UgY2FuIHRydXN0IHJkZXYtPmRhdGFfb2Zmc2V0ICovCi0JCWFsaWduX2JpLT5i aV9zZWN0b3IgKz0gcmRldi0+ZGF0YV9vZmZzZXQ7CisJCWFsaWduX2JpLT5iaV9pdGVyLmJpX3Nl Y3RvciArPSByZGV2LT5kYXRhX29mZnNldDsKIAogCQlzcGluX2xvY2tfaXJxKCZjb25mLT5kZXZp Y2VfbG9jayk7CiAJCXdhaXRfZXZlbnRfbG9ja19pcnEoY29uZi0+d2FpdF9mb3Jfc3RyaXBlLApA QCAtNDAzOCw3ICs0MDM5LDcgQEAgc3RhdGljIGludCBjaHVua19hbGlnbmVkX3JlYWQoc3RydWN0 IG1kZGV2ICptZGRldiwgc3RydWN0IGJpbyAqIHJhaWRfYmlvKQogCQlpZiAobWRkZXYtPmdlbmRp c2spCiAJCQl0cmFjZV9ibG9ja19iaW9fcmVtYXAoYmRldl9nZXRfcXVldWUoYWxpZ25fYmktPmJp X2JkZXYpLAogCQkJCQkgICAgICBhbGlnbl9iaSwgZGlza19kZXZ0KG1kZGV2LT5nZW5kaXNrKSwK LQkJCQkJICAgICAgcmFpZF9iaW8tPmJpX3NlY3Rvcik7CisJCQkJCSAgICAgIHJhaWRfYmlvLT5i aV9pdGVyLmJpX3NlY3Rvcik7CiAJCWdlbmVyaWNfbWFrZV9yZXF1ZXN0KGFsaWduX2JpKTsKIAkJ cmV0dXJuIDE7CiAJfSBlbHNlIHsKQEAgLTQxNzMsOCArNDE3NCw4IEBAIHN0YXRpYyB2b2lkIG1h a2VfZGlzY2FyZF9yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYsIHN0cnVjdCBiaW8gKmJpKQog CQkvKiBTa2lwIGRpc2NhcmQgd2hpbGUgcmVzaGFwZSBpcyBoYXBwZW5pbmcgKi8KIAkJcmV0dXJu OwogCi0JbG9naWNhbF9zZWN0b3IgPSBiaS0+Ymlfc2VjdG9yICYgfigoc2VjdG9yX3QpU1RSSVBF X1NFQ1RPUlMtMSk7Ci0JbGFzdF9zZWN0b3IgPSBiaS0+Ymlfc2VjdG9yICsgKGJpLT5iaV9zaXpl Pj45KTsKKwlsb2dpY2FsX3NlY3RvciA9IGJpLT5iaV9pdGVyLmJpX3NlY3RvciAmIH4oKHNlY3Rv cl90KVNUUklQRV9TRUNUT1JTLTEpOworCWxhc3Rfc2VjdG9yID0gYmktPmJpX2l0ZXIuYmlfc2Vj dG9yICsgKGJpLT5iaV9pdGVyLmJpX3NpemU+PjkpOwogCiAJYmktPmJpX25leHQgPSBOVUxMOwog CWJpLT5iaV9waHlzX3NlZ21lbnRzID0gMTsgLyogb3Zlci1sb2FkZWQgdG8gY291bnQgYWN0aXZl IHN0cmlwZXMgKi8KQEAgLTQyNzgsNyArNDI3OSw3IEBAIHN0YXRpYyB2b2lkIG1ha2VfcmVxdWVz dChzdHJ1Y3QgbWRkZXYgKm1kZGV2LCBzdHJ1Y3QgYmlvICogYmkpCiAJCXJldHVybjsKIAl9CiAK LQlsb2dpY2FsX3NlY3RvciA9IGJpLT5iaV9zZWN0b3IgJiB+KChzZWN0b3JfdClTVFJJUEVfU0VD VE9SUy0xKTsKKwlsb2dpY2FsX3NlY3RvciA9IGJpLT5iaV9pdGVyLmJpX3NlY3RvciAmIH4oKHNl Y3Rvcl90KVNUUklQRV9TRUNUT1JTLTEpOwogCWxhc3Rfc2VjdG9yID0gYmlvX2VuZF9zZWN0b3Io YmkpOwogCWJpLT5iaV9uZXh0ID0gTlVMTDsKIAliaS0+YmlfcGh5c19zZWdtZW50cyA9IDE7CS8q IG92ZXItbG9hZGVkIHRvIGNvdW50IGFjdGl2ZSBzdHJpcGVzICovCkBAIC00NzQyLDcgKzQ3NDMs OCBAQCBzdGF0aWMgaW50ICByZXRyeV9hbGlnbmVkX3JlYWQoc3RydWN0IHI1Y29uZiAqY29uZiwg c3RydWN0IGJpbyAqcmFpZF9iaW8pCiAJaW50IHJlbWFpbmluZzsKIAlpbnQgaGFuZGxlZCA9IDA7 CiAKLQlsb2dpY2FsX3NlY3RvciA9IHJhaWRfYmlvLT5iaV9zZWN0b3IgJiB+KChzZWN0b3JfdClT VFJJUEVfU0VDVE9SUy0xKTsKKwlsb2dpY2FsX3NlY3RvciA9IHJhaWRfYmlvLT5iaV9pdGVyLmJp X3NlY3RvciAmCisJCX4oKHNlY3Rvcl90KVNUUklQRV9TRUNUT1JTLTEpOwogCXNlY3RvciA9IHJh aWQ1X2NvbXB1dGVfc2VjdG9yKGNvbmYsIGxvZ2ljYWxfc2VjdG9yLAogCQkJCSAgICAgIDAsICZk ZF9pZHgsIE5VTEwpOwogCWxhc3Rfc2VjdG9yID0gYmlvX2VuZF9zZWN0b3IocmFpZF9iaW8pOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Jsb2NrL2Rjc3NibGsuYyBiL2RyaXZlcnMvczM5MC9i bG9jay9kY3NzYmxrLmMKaW5kZXggNmVjYTAxOS4uMTY4MTRhOCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9zMzkwL2Jsb2NrL2Rjc3NibGsuYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2svZGNzc2Jsay5j CkBAIC04MTksNyArODE5LDggQEAgZGNzc2Jsa19tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3Rf cXVldWUgKnEsIHN0cnVjdCBiaW8gKmJpbykKIAlkZXZfaW5mbyA9IGJpby0+YmlfYmRldi0+YmRf ZGlzay0+cHJpdmF0ZV9kYXRhOwogCWlmIChkZXZfaW5mbyA9PSBOVUxMKQogCQlnb3RvIGZhaWw7 Ci0JaWYgKChiaW8tPmJpX3NlY3RvciAmIDcpICE9IDAgfHwgKGJpby0+Ymlfc2l6ZSAmIDQwOTUp ICE9IDApCisJaWYgKChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICYgNykgIT0gMCB8fAorCSAgICAo YmlvLT5iaV9pdGVyLmJpX3NpemUgJiA0MDk1KSAhPSAwKQogCQkvKiBSZXF1ZXN0IGlzIG5vdCBw YWdlLWFsaWduZWQuICovCiAJCWdvdG8gZmFpbDsKIAlpZiAoYmlvX2VuZF9zZWN0b3IoYmlvKSA+ IGdldF9jYXBhY2l0eShiaW8tPmJpX2JkZXYtPmJkX2Rpc2spKSB7CkBAIC04NDIsNyArODQzLDcg QEAgZGNzc2Jsa19tYWtlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCBi aW8gKmJpbykKIAkJfQogCX0KIAotCWluZGV4ID0gKGJpby0+Ymlfc2VjdG9yID4+IDMpOworCWlu ZGV4ID0gKGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPj4gMyk7CiAJYmlvX2Zvcl9lYWNoX3NlZ21l bnQoYnZlYywgYmlvLCBpKSB7CiAJCXBhZ2VfYWRkciA9ICh1bnNpZ25lZCBsb25nKQogCQkJcGFn ZV9hZGRyZXNzKGJ2ZWMtPmJ2X3BhZ2UpICsgYnZlYy0+YnZfb2Zmc2V0OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zMzkwL2Jsb2NrL3hwcmFtLmMgYi9kcml2ZXJzL3MzOTAvYmxvY2sveHByYW0uYwpp bmRleCA0NjRkZDI5Li5kZDRlNzNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvYmxvY2sveHBy YW0uYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2sveHByYW0uYwpAQCAtMTkwLDE1ICsxOTAsMTYg QEAgc3RhdGljIHZvaWQgeHByYW1fbWFrZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpx LCBzdHJ1Y3QgYmlvICpiaW8pCiAJdW5zaWduZWQgbG9uZyBieXRlczsKIAlpbnQgaTsKIAotCWlm ICgoYmlvLT5iaV9zZWN0b3IgJiA3KSAhPSAwIHx8IChiaW8tPmJpX3NpemUgJiA0MDk1KSAhPSAw KQorCWlmICgoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAmIDcpICE9IDAgfHwKKwkgICAgKGJpby0+ YmlfaXRlci5iaV9zaXplICYgNDA5NSkgIT0gMCkKIAkJLyogUmVxdWVzdCBpcyBub3QgcGFnZS1h bGlnbmVkLiAqLwogCQlnb3RvIGZhaWw7Ci0JaWYgKChiaW8tPmJpX3NpemUgPj4gMTIpID4geGRl di0+c2l6ZSkKKwlpZiAoKGJpby0+YmlfaXRlci5iaV9zaXplID4+IDEyKSA+IHhkZXYtPnNpemUp CiAJCS8qIFJlcXVlc3Qgc2l6ZSBpcyBubyBwYWdlLWFsaWduZWQuICovCiAJCWdvdG8gZmFpbDsK LQlpZiAoKGJpby0+Ymlfc2VjdG9yID4+IDMpID4gMHhmZmZmZmZmZlUgLSB4ZGV2LT5vZmZzZXQp CisJaWYgKChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID4+IDMpID4gMHhmZmZmZmZmZlUgLSB4ZGV2 LT5vZmZzZXQpCiAJCWdvdG8gZmFpbDsKLQlpbmRleCA9IChiaW8tPmJpX3NlY3RvciA+PiAzKSAr IHhkZXYtPm9mZnNldDsKKwlpbmRleCA9IChiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID4+IDMpICsg eGRldi0+b2Zmc2V0OwogCWJpb19mb3JfZWFjaF9zZWdtZW50KGJ2ZWMsIGJpbywgaSkgewogCQlw YWdlX2FkZHIgPSAodW5zaWduZWQgbG9uZykKIAkJCWttYXAoYnZlYy0+YnZfcGFnZSkgKyBidmVj LT5idl9vZmZzZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvb3NkL29zZF9pbml0aWF0b3Iu YyBiL2RyaXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jCmluZGV4IGFhNjYzNjEuLmJhYzA0 YzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jCisrKyBiL2Ry aXZlcnMvc2NzaS9vc2Qvb3NkX2luaXRpYXRvci5jCkBAIC03MzEsNyArNzMxLDcgQEAgc3RhdGlj IGludCBfb3NkX3JlcV9saXN0X29iamVjdHMoc3RydWN0IG9zZF9yZXF1ZXN0ICpvciwKIAogCWJp by0+YmlfcncgJj0gflJFUV9XUklURTsKIAlvci0+aW4uYmlvID0gYmlvOwotCW9yLT5pbi50b3Rh bF9ieXRlcyA9IGJpby0+Ymlfc2l6ZTsKKwlvci0+aW4udG90YWxfYnl0ZXMgPSBiaW8tPmJpX2l0 ZXIuYmlfc2l6ZTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5n L3pyYW0venJhbV9kcnYuYyBiL2RyaXZlcnMvc3RhZ2luZy96cmFtL3pyYW1fZHJ2LmMKaW5kZXgg ZTc3ZmI2ZS4uMzRlZTg3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3pyYW0venJhbV9k cnYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvenJhbS96cmFtX2Rydi5jCkBAIC0xNzEsMTMgKzE3 MSwxNCBAQCBzdGF0aWMgaW5saW5lIGludCB2YWxpZF9pb19yZXF1ZXN0KHN0cnVjdCB6cmFtICp6 cmFtLCBzdHJ1Y3QgYmlvICpiaW8pCiAJdTY0IHN0YXJ0LCBlbmQsIGJvdW5kOwogCQogCS8qIHVu YWxpZ25lZCByZXF1ZXN0ICovCi0JaWYgKHVubGlrZWx5KGJpby0+Ymlfc2VjdG9yICYgKFpSQU1f U0VDVE9SX1BFUl9MT0dJQ0FMX0JMT0NLIC0gMSkpKQorCWlmICh1bmxpa2VseShiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yICYKKwkJICAgICAoWlJBTV9TRUNUT1JfUEVSX0xPR0lDQUxfQkxPQ0sgLSAx KSkpCiAJCXJldHVybiAwOwotCWlmICh1bmxpa2VseShiaW8tPmJpX3NpemUgJiAoWlJBTV9MT0dJ Q0FMX0JMT0NLX1NJWkUgLSAxKSkpCisJaWYgKHVubGlrZWx5KGJpby0+YmlfaXRlci5iaV9zaXpl ICYgKFpSQU1fTE9HSUNBTF9CTE9DS19TSVpFIC0gMSkpKQogCQlyZXR1cm4gMDsKIAotCXN0YXJ0 ID0gYmlvLT5iaV9zZWN0b3I7Ci0JZW5kID0gc3RhcnQgKyAoYmlvLT5iaV9zaXplID4+IFNFQ1RP Ul9TSElGVCk7CisJc3RhcnQgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOworCWVuZCA9IHN0YXJ0 ICsgKGJpby0+YmlfaXRlci5iaV9zaXplID4+IFNFQ1RPUl9TSElGVCk7CiAJYm91bmQgPSB6cmFt LT5kaXNrc2l6ZSA+PiBTRUNUT1JfU0hJRlQ7CiAJLyogb3V0IG9mIHJhbmdlIHJhbmdlICovCiAJ aWYgKHVubGlrZWx5KHN0YXJ0ID49IGJvdW5kIHx8IGVuZCA+IGJvdW5kIHx8IHN0YXJ0ID4gZW5k KSkKQEAgLTY1NCw4ICs2NTUsOSBAQCBzdGF0aWMgdm9pZCBfX3pyYW1fbWFrZV9yZXF1ZXN0KHN0 cnVjdCB6cmFtICp6cmFtLCBzdHJ1Y3QgYmlvICpiaW8sIGludCBydykKIAkJYnJlYWs7CiAJfQog Ci0JaW5kZXggPSBiaW8tPmJpX3NlY3RvciA+PiBTRUNUT1JTX1BFUl9QQUdFX1NISUZUOwotCW9m ZnNldCA9IChiaW8tPmJpX3NlY3RvciAmIChTRUNUT1JTX1BFUl9QQUdFIC0gMSkpIDw8IFNFQ1RP Ul9TSElGVDsKKwlpbmRleCA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgPj4gU0VDVE9SU19QRVJf UEFHRV9TSElGVDsKKwlvZmZzZXQgPSAoYmlvLT5iaV9pdGVyLmJpX3NlY3RvciAmCisJCSAgKFNF Q1RPUlNfUEVSX1BBR0UgLSAxKSkgPDwgU0VDVE9SX1NISUZUOwogCiAJYmlvX2Zvcl9lYWNoX3Nl Z21lbnQoYnZlYywgYmlvLCBpKSB7CiAJCWludCBtYXhfdHJhbnNmZXJfc2l6ZSA9IFBBR0VfU0la RSAtIG9mZnNldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2libG9j ay5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfaWJsb2NrLmMKaW5kZXggYWExNjIwYS4u NDAzMmQ2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfaWJsb2NrLmMK KysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfaWJsb2NrLmMKQEAgLTMxOSw3ICszMTks NyBAQCBpYmxvY2tfZ2V0X2JpbyhzdHJ1Y3Qgc2VfY21kICpjbWQsIHNlY3Rvcl90IGxiYSwgdTMy IHNnX251bSkKIAliaW8tPmJpX2JkZXYgPSBpYl9kZXYtPmliZF9iZDsKIAliaW8tPmJpX3ByaXZh dGUgPSBjbWQ7CiAJYmlvLT5iaV9lbmRfaW8gPSAmaWJsb2NrX2Jpb19kb25lOwotCWJpby0+Ymlf c2VjdG9yID0gbGJhOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBsYmE7CiAKIAlyZXR1cm4g YmlvOwogfQpkaWZmIC0tZ2l0IGEvZnMvYmlvLWludGVncml0eS5jIGIvZnMvYmlvLWludGVncml0 eS5jCmluZGV4IDhmYjQyOTEuLmY4MjRjMzAgMTAwNjQ0Ci0tLSBhL2ZzL2Jpby1pbnRlZ3JpdHku YworKysgYi9mcy9iaW8taW50ZWdyaXR5LmMKQEAgLTIxNSw5ICsyMTUsOSBAQCB1bnNpZ25lZCBp bnQgYmlvX2ludGVncml0eV90YWdfc2l6ZShzdHJ1Y3QgYmlvICpiaW8pCiB7CiAJc3RydWN0IGJs a19pbnRlZ3JpdHkgKmJpID0gYmRldl9nZXRfaW50ZWdyaXR5KGJpby0+YmlfYmRldik7CiAKLQlC VUdfT04oYmlvLT5iaV9zaXplID09IDApOworCUJVR19PTihiaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 PSAwKTsKIAotCXJldHVybiBiaS0+dGFnX3NpemUgKiAoYmlvLT5iaV9zaXplIC8gYmktPnNlY3Rv cl9zaXplKTsKKwlyZXR1cm4gYmktPnRhZ19zaXplICogKGJpby0+YmlfaXRlci5iaV9zaXplIC8g YmktPnNlY3Rvcl9zaXplKTsKIH0KIEVYUE9SVF9TWU1CT0woYmlvX2ludGVncml0eV90YWdfc2l6 ZSk7CiAKQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCBiaW9faW50ZWdyaXR5X2dlbmVy YXRlKHN0cnVjdCBiaW8gKmJpbykKIAlzdHJ1Y3QgYmxrX2ludGVncml0eSAqYmkgPSBiZGV2X2dl dF9pbnRlZ3JpdHkoYmlvLT5iaV9iZGV2KTsKIAlzdHJ1Y3QgYmxrX2ludGVncml0eV9leGNoZyBi aXg7CiAJc3RydWN0IGJpb192ZWMgKmJ2OwotCXNlY3Rvcl90IHNlY3RvciA9IGJpby0+Ymlfc2Vj dG9yOworCXNlY3Rvcl90IHNlY3RvciA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJdW5zaWdu ZWQgaW50IGksIHNlY3RvcnMsIHRvdGFsOwogCXZvaWQgKnByb3RfYnVmID0gYmlvLT5iaV9pbnRl Z3JpdHktPmJpcF9idWY7CiAKQEAgLTM4Nyw3ICszODcsNyBAQCBpbnQgYmlvX2ludGVncml0eV9w cmVwKHN0cnVjdCBiaW8gKmJpbykKIAliaXAtPmJpcF9vd25zX2J1ZiA9IDE7CiAJYmlwLT5iaXBf YnVmID0gYnVmOwogCWJpcC0+YmlwX3NpemUgPSBsZW47Ci0JYmlwLT5iaXBfc2VjdG9yID0gYmlv LT5iaV9zZWN0b3I7CisJYmlwLT5iaXBfc2VjdG9yID0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsK IAogCS8qIE1hcCBpdCAqLwogCW9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGJ1Zik7CmRpZmYgLS1n aXQgYS9mcy9iaW8uYyBiL2ZzL2Jpby5jCmluZGV4IDJiNmE4MTYuLjBhODZlMmMgMTAwNjQ0Ci0t LSBhL2ZzL2Jpby5jCisrKyBiL2ZzL2Jpby5jCkBAIC01MzIsMTMgKzUzMiwxMyBAQCB2b2lkIF9f YmlvX2Nsb25lKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJpbyAqYmlvX3NyYykKIAkgKiBtb3N0 IHVzZXJzIHdpbGwgYmUgb3ZlcnJpZGluZyAtPmJpX2JkZXYgd2l0aCBhIG5ldyB0YXJnZXQsCiAJ ICogc28gd2UgZG9uJ3Qgc2V0IG5vciBjYWxjdWxhdGUgbmV3IHBoeXNpY2FsL2h3IHNlZ21lbnQg Y291bnRzIGhlcmUKIAkgKi8KLQliaW8tPmJpX3NlY3RvciA9IGJpb19zcmMtPmJpX3NlY3RvcjsK KwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmlvX3NyYy0+YmlfaXRlci5iaV9zZWN0b3I7CiAJ YmlvLT5iaV9iZGV2ID0gYmlvX3NyYy0+YmlfYmRldjsKIAliaW8tPmJpX2ZsYWdzIHw9IDEgPDwg QklPX0NMT05FRDsKIAliaW8tPmJpX3J3ID0gYmlvX3NyYy0+Ymlfcnc7CiAJYmlvLT5iaV92Y250 ID0gYmlvX3NyYy0+YmlfdmNudDsKLQliaW8tPmJpX3NpemUgPSBiaW9fc3JjLT5iaV9zaXplOwot CWJpby0+YmlfaWR4ID0gYmlvX3NyYy0+YmlfaWR4OworCWJpby0+YmlfaXRlci5iaV9zaXplID0g YmlvX3NyYy0+YmlfaXRlci5iaV9zaXplOworCWJpby0+YmlfaXRlci5iaV9pZHggPSBiaW9fc3Jj LT5iaV9pdGVyLmJpX2lkeDsKIH0KIEVYUE9SVF9TWU1CT0woX19iaW9fY2xvbmUpOwogCkBAIC02 MTIsNyArNjEyLDcgQEAgc3RhdGljIGludCBfX2Jpb19hZGRfcGFnZShzdHJ1Y3QgcmVxdWVzdF9x dWV1ZSAqcSwgc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgcGFnZQogCWlmICh1bmxpa2VseShiaW9f ZmxhZ2dlZChiaW8sIEJJT19DTE9ORUQpKSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAoKChiaW8tPmJp X3NpemUgKyBsZW4pID4+IDkpID4gbWF4X3NlY3RvcnMpCisJaWYgKCgoYmlvLT5iaV9pdGVyLmJp X3NpemUgKyBsZW4pID4+IDkpID4gbWF4X3NlY3RvcnMpCiAJCXJldHVybiAwOwogCiAJLyoKQEAg LTYzNSw4ICs2MzUsOSBAQCBzdGF0aWMgaW50IF9fYmlvX2FkZF9wYWdlKHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBwYWdlCiAJCQkJCSAgIHNpbXVsYXRl IG1lcmdpbmcgdXBkYXRlZCBwcmV2X2J2ZWMKIAkJCQkJICAgYXMgbmV3IGJ2ZWMuICovCiAJCQkJ CS5iaV9iZGV2ID0gYmlvLT5iaV9iZGV2LAotCQkJCQkuYmlfc2VjdG9yID0gYmlvLT5iaV9zZWN0 b3IsCi0JCQkJCS5iaV9zaXplID0gYmlvLT5iaV9zaXplIC0gcHJldl9idl9sZW4sCisJCQkJCS5i aV9zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yLAorCQkJCQkuYmlfc2l6ZSA9IGJpby0+ YmlfaXRlci5iaV9zaXplIC0KKwkJCQkJCXByZXZfYnZfbGVuLAogCQkJCQkuYmlfcncgPSBiaW8t PmJpX3J3LAogCQkJCX07CiAKQEAgLTY4NCw4ICs2ODUsOCBAQCBzdGF0aWMgaW50IF9fYmlvX2Fk ZF9wYWdlKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBw YWdlCiAJaWYgKHEtPm1lcmdlX2J2ZWNfZm4pIHsKIAkJc3RydWN0IGJ2ZWNfbWVyZ2VfZGF0YSBi dm0gPSB7CiAJCQkuYmlfYmRldiA9IGJpby0+YmlfYmRldiwKLQkJCS5iaV9zZWN0b3IgPSBiaW8t PmJpX3NlY3RvciwKLQkJCS5iaV9zaXplID0gYmlvLT5iaV9zaXplLAorCQkJLmJpX3NlY3RvciA9 IGJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJCQkuYmlfc2l6ZSA9IGJpby0+YmlfaXRlci5iaV9z aXplLAogCQkJLmJpX3J3ID0gYmlvLT5iaV9ydywKIAkJfTsKIApAQCAtNzA4LDcgKzcwOSw3IEBA IHN0YXRpYyBpbnQgX19iaW9fYWRkX3BhZ2Uoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVj dCBiaW8gKmJpbywgc3RydWN0IHBhZ2UKIAliaW8tPmJpX3ZjbnQrKzsKIAliaW8tPmJpX3BoeXNf c2VnbWVudHMrKzsKICBkb25lOgotCWJpby0+Ymlfc2l6ZSArPSBsZW47CisJYmlvLT5iaV9pdGVy LmJpX3NpemUgKz0gbGVuOwogCXJldHVybiBsZW47CiB9CiAKQEAgLTgwNywyMiArODA4LDIyIEBA IHZvaWQgYmlvX2FkdmFuY2Uoc3RydWN0IGJpbyAqYmlvLCB1bnNpZ25lZCBieXRlcykKIAlpZiAo YmlvX2ludGVncml0eShiaW8pKQogCQliaW9faW50ZWdyaXR5X2FkdmFuY2UoYmlvLCBieXRlcyk7 CiAKLQliaW8tPmJpX3NlY3RvciArPSBieXRlcyA+PiA5OwotCWJpby0+Ymlfc2l6ZSAtPSBieXRl czsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yICs9IGJ5dGVzID4+IDk7CisJYmlvLT5iaV9pdGVy LmJpX3NpemUgLT0gYnl0ZXM7CiAKIAlpZiAoYmlvLT5iaV9ydyAmIEJJT19OT19BRFZBTkNFX0lU RVJfTUFTSykKIAkJcmV0dXJuOwogCiAJd2hpbGUgKGJ5dGVzKSB7Ci0JCWlmICh1bmxpa2VseShi aW8tPmJpX2lkeCA+PSBiaW8tPmJpX3ZjbnQpKSB7CisJCWlmICh1bmxpa2VseShiaW8tPmJpX2l0 ZXIuYmlfaWR4ID49IGJpby0+YmlfdmNudCkpIHsKIAkJCVdBUk5fT05DRSgxLCAiYmlvIGlkeCAl ZCA+PSB2Y250ICVkXG4iLAotCQkJCSAgYmlvLT5iaV9pZHgsIGJpby0+YmlfdmNudCk7CisJCQkJ ICBiaW8tPmJpX2l0ZXIuYmlfaWR4LCBiaW8tPmJpX3ZjbnQpOwogCQkJYnJlYWs7CiAJCX0KIAog CQlpZiAoYnl0ZXMgPj0gYmlvX2lvdmVjKGJpbyktPmJ2X2xlbikgewogCQkJYnl0ZXMgLT0gYmlv X2lvdmVjKGJpbyktPmJ2X2xlbjsKLQkJCWJpby0+YmlfaWR4Kys7CisJCQliaW8tPmJpX2l0ZXIu YmlfaWR4Kys7CiAJCX0gZWxzZSB7CiAJCQliaW9faW92ZWMoYmlvKS0+YnZfbGVuIC09IGJ5dGVz OwogCQkJYmlvX2lvdmVjKGJpbyktPmJ2X29mZnNldCArPSBieXRlczsKQEAgLTE0NzUsNyArMTQ3 Niw3IEBAIHN0cnVjdCBiaW8gKmJpb19tYXBfa2VybihzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwg dm9pZCAqZGF0YSwgdW5zaWduZWQgaW50IGxlbiwKIAlpZiAoSVNfRVJSKGJpbykpCiAJCXJldHVy biBiaW87CiAKLQlpZiAoYmlvLT5iaV9zaXplID09IGxlbikKKwlpZiAoYmlvLT5iaV9pdGVyLmJp X3NpemUgPT0gbGVuKQogCQlyZXR1cm4gYmlvOwogCiAJLyoKQEAgLTE3NTMsMTYgKzE3NTQsMTYg QEAgc3RydWN0IGJpb19wYWlyICpiaW9fc3BsaXQoc3RydWN0IGJpbyAqYmksIGludCBmaXJzdF9z ZWN0b3JzKQogCQlyZXR1cm4gYnA7CiAKIAl0cmFjZV9ibG9ja19zcGxpdChiZGV2X2dldF9xdWV1 ZShiaS0+YmlfYmRldiksIGJpLAotCQkJCWJpLT5iaV9zZWN0b3IgKyBmaXJzdF9zZWN0b3JzKTsK KwkJCQliaS0+YmlfaXRlci5iaV9zZWN0b3IgKyBmaXJzdF9zZWN0b3JzKTsKIAogCUJVR19PTihi aW9fc2VnbWVudHMoYmkpID4gMSk7CiAJYXRvbWljX3NldCgmYnAtPmNudCwgMyk7CiAJYnAtPmVy cm9yID0gMDsKIAlicC0+YmlvMSA9ICpiaTsKIAlicC0+YmlvMiA9ICpiaTsKLQlicC0+YmlvMi5i aV9zZWN0b3IgKz0gZmlyc3Rfc2VjdG9yczsKLQlicC0+YmlvMi5iaV9zaXplIC09IGZpcnN0X3Nl Y3RvcnMgPDwgOTsKLQlicC0+YmlvMS5iaV9zaXplID0gZmlyc3Rfc2VjdG9ycyA8PCA5OworCWJw LT5iaW8yLmJpX2l0ZXIuYmlfc2VjdG9yICs9IGZpcnN0X3NlY3RvcnM7CisJYnAtPmJpbzIuYmlf aXRlci5iaV9zaXplIC09IGZpcnN0X3NlY3RvcnMgPDwgOTsKKwlicC0+YmlvMS5iaV9pdGVyLmJp X3NpemUgPSBmaXJzdF9zZWN0b3JzIDw8IDk7CiAKIAlpZiAoYmktPmJpX3ZjbnQgIT0gMCkgewog CQlicC0+YnYxID0gKmJpb19pb3ZlYyhiaSk7CkBAIC0xODExLDIxICsxODEyLDIyIEBAIHZvaWQg YmlvX3RyaW0oc3RydWN0IGJpbyAqYmlvLCBpbnQgb2Zmc2V0LCBpbnQgc2l6ZSkKIAlpbnQgc29m YXIgPSAwOwogCiAJc2l6ZSA8PD0gOTsKLQlpZiAob2Zmc2V0ID09IDAgJiYgc2l6ZSA9PSBiaW8t PmJpX3NpemUpCisJaWYgKG9mZnNldCA9PSAwICYmIHNpemUgPT0gYmlvLT5iaV9pdGVyLmJpX3Np emUpCiAJCXJldHVybjsKIAogCWNsZWFyX2JpdChCSU9fU0VHX1ZBTElELCAmYmlvLT5iaV9mbGFn cyk7CiAKIAliaW9fYWR2YW5jZShiaW8sIG9mZnNldCA8PCA5KTsKIAotCWJpby0+Ymlfc2l6ZSA9 IHNpemU7CisJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBzaXplOwogCiAJLyogYXZvaWQgYW55IGNv bXBsaWNhdGlvbnMgd2l0aCBiaV9pZHggYmVpbmcgbm9uLXplcm8qLwotCWlmIChiaW8tPmJpX2lk eCkgewotCQltZW1tb3ZlKGJpby0+YmlfaW9fdmVjLCBiaW8tPmJpX2lvX3ZlYytiaW8tPmJpX2lk eCwKLQkJCShiaW8tPmJpX3ZjbnQgLSBiaW8tPmJpX2lkeCkgKiBzaXplb2Yoc3RydWN0IGJpb192 ZWMpKTsKLQkJYmlvLT5iaV92Y250IC09IGJpby0+YmlfaWR4OwotCQliaW8tPmJpX2lkeCA9IDA7 CisJaWYgKGJpby0+YmlfaXRlci5iaV9pZHgpIHsKKwkJbWVtbW92ZShiaW8tPmJpX2lvX3ZlYywg YmlvLT5iaV9pb192ZWMrYmlvLT5iaV9pdGVyLmJpX2lkeCwKKwkJCShiaW8tPmJpX3ZjbnQgLSBi aW8tPmJpX2l0ZXIuYmlfaWR4KSAqCisJCQlzaXplb2Yoc3RydWN0IGJpb192ZWMpKTsKKwkJYmlv LT5iaV92Y250IC09IGJpby0+YmlfaXRlci5iaV9pZHg7CisJCWJpby0+YmlfaXRlci5iaV9pZHgg PSAwOwogCX0KIAkvKiBNYWtlIHN1cmUgdmNudCBhbmQgbGFzdCBidiBhcmUgbm90IHRvbyBiaWcg Ki8KIAliaW9fZm9yX2VhY2hfc2VnbWVudChidmVjLCBiaW8sIGkpIHsKQEAgLTE4NjEsNyArMTg2 Myw3IEBAIHNlY3Rvcl90IGJpb19zZWN0b3Jfb2Zmc2V0KHN0cnVjdCBiaW8gKmJpbywgdW5zaWdu ZWQgc2hvcnQgaW5kZXgsCiAJc2VjdG9yX3N6ID0gcXVldWVfbG9naWNhbF9ibG9ja19zaXplKGJp by0+YmlfYmRldi0+YmRfZGlzay0+cXVldWUpOwogCXNlY3RvcnMgPSAwOwogCi0JaWYgKGluZGV4 ID49IGJpby0+YmlfaWR4KQorCWlmIChpbmRleCA+PSBiaW8tPmJpX2l0ZXIuYmlfaWR4KQogCQlp bmRleCA9IGJpby0+YmlfdmNudCAtIDE7CiAKIAliaW9fZm9yX2VhY2hfc2VnbWVudF9hbGwoYnYs IGJpbywgaSkgewpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvY2hlY2staW50ZWdyaXR5LmMgYi9mcy9i dHJmcy9jaGVjay1pbnRlZ3JpdHkuYwppbmRleCAxNDMxYTY5Li4yYWUzNTBjIDEwMDY0NAotLS0g YS9mcy9idHJmcy9jaGVjay1pbnRlZ3JpdHkuYworKysgYi9mcy9idHJmcy9jaGVjay1pbnRlZ3Jp dHkuYwpAQCAtMTcwOCw3ICsxNzA4LDcgQEAgc3RhdGljIGludCBidHJmc2ljX3JlYWRfYmxvY2so c3RydWN0IGJ0cmZzaWNfc3RhdGUgKnN0YXRlLAogCQkJcmV0dXJuIC0xOwogCQl9CiAJCWJpby0+ YmlfYmRldiA9IGJsb2NrX2N0eC0+ZGV2LT5iZGV2OwotCQliaW8tPmJpX3NlY3RvciA9IGRldl9i eXRlbnIgPj4gOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGRldl9ieXRlbnIgPj4gOTsK IAkJYmlvLT5iaV9lbmRfaW8gPSBidHJmc2ljX2NvbXBsZXRlX2Jpb19lbmRfaW87CiAJCWJpby0+ YmlfcHJpdmF0ZSA9ICZjb21wbGV0ZTsKIApAQCAtMzExMiwxNiArMzExMiwxNiBAQCB2b2lkIGJ0 cmZzaWNfc3VibWl0X2JpbyhpbnQgcncsIHN0cnVjdCBiaW8gKmJpbykKIAkJaW50IGJpb19pc19w YXRjaGVkOwogCQljaGFyICoqbWFwcGVkX2RhdGF2OwogCi0JCWRldl9ieXRlbnIgPSA1MTIgKiBi aW8tPmJpX3NlY3RvcjsKKwkJZGV2X2J5dGVuciA9IDUxMiAqIGJpby0+YmlfaXRlci5iaV9zZWN0 b3I7CiAJCWJpb19pc19wYXRjaGVkID0gMDsKIAkJaWYgKGRldl9zdGF0ZS0+c3RhdGUtPnByaW50 X21hc2sgJgogCQkgICAgQlRSRlNJQ19QUklOVF9NQVNLX1NVQk1JVF9CSU9fQkgpCiAJCQlwcmlu dGsoS0VSTl9JTkZPCiAJCQkgICAgICAgInN1Ym1pdF9iaW8ocnc9MHgleCwgYmlfdmNudD0ldSwi CiAJCQkgICAgICAgIiBiaV9zZWN0b3I9JWx1IChieXRlbnIgJWxsdSksIGJpX2JkZXY9JXApXG4i LAotCQkJICAgICAgIHJ3LCBiaW8tPmJpX3ZjbnQsICh1bnNpZ25lZCBsb25nKWJpby0+Ymlfc2Vj dG9yLAotCQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZGV2X2J5dGVuciwKLQkJCSAgICAg ICBiaW8tPmJpX2JkZXYpOworCQkJICAgICAgIHJ3LCBiaW8tPmJpX3ZjbnQsCisJCQkgICAgICAg KHVuc2lnbmVkIGxvbmcpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwKKwkJCSAgICAgICAodW5zaWdu ZWQgbG9uZyBsb25nKWRldl9ieXRlbnIsIGJpby0+YmlfYmRldik7CiAKIAkJbWFwcGVkX2RhdGF2 ID0ga21hbGxvYyhzaXplb2YoKm1hcHBlZF9kYXRhdikgKiBiaW8tPmJpX3ZjbnQsCiAJCQkJICAg ICAgIEdGUF9OT0ZTKTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2NvbXByZXNzaW9uLmMgYi9mcy9i dHJmcy9jb21wcmVzc2lvbi5jCmluZGV4IGIxODliZDEuLjJkNzUxNWIgMTAwNjQ0Ci0tLSBhL2Zz L2J0cmZzL2NvbXByZXNzaW9uLmMKKysrIGIvZnMvYnRyZnMvY29tcHJlc3Npb24uYwpAQCAtMTc0 LDcgKzE3NCw4IEBAIHN0YXRpYyB2b2lkIGVuZF9jb21wcmVzc2VkX2Jpb19yZWFkKHN0cnVjdCBi aW8gKmJpbywgaW50IGVycikKIAkJZ290byBvdXQ7CiAKIAlpbm9kZSA9IGNiLT5pbm9kZTsKLQly ZXQgPSBjaGVja19jb21wcmVzc2VkX2NzdW0oaW5vZGUsIGNiLCAodTY0KWJpby0+Ymlfc2VjdG9y IDw8IDkpOworCXJldCA9IGNoZWNrX2NvbXByZXNzZWRfY3N1bShpbm9kZSwgY2IsCisJCQkJICAg ICh1NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PCA5KTsKIAlpZiAocmV0KQogCQlnb3RvIGNz dW1fZmFpbGVkOwogCkBAIC0zNzQsNyArMzc1LDcgQEAgaW50IGJ0cmZzX3N1Ym1pdF9jb21wcmVz c2VkX3dyaXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBzdGFydCwKIAlmb3IgKHBnX2luZGV4 ID0gMDsgcGdfaW5kZXggPCBjYi0+bnJfcGFnZXM7IHBnX2luZGV4KyspIHsKIAkJcGFnZSA9IGNv bXByZXNzZWRfcGFnZXNbcGdfaW5kZXhdOwogCQlwYWdlLT5tYXBwaW5nID0gaW5vZGUtPmlfbWFw cGluZzsKLQkJaWYgKGJpby0+Ymlfc2l6ZSkKKwkJaWYgKGJpby0+YmlfaXRlci5iaV9zaXplKQog CQkJcmV0ID0gaW9fdHJlZS0+b3BzLT5tZXJnZV9iaW9faG9vayhXUklURSwgcGFnZSwgMCwKIAkJ CQkJCQkgICBQQUdFX0NBQ0hFX1NJWkUsCiAJCQkJCQkJICAgYmlvLCAwKTsKQEAgLTUwOCw3ICs1 MDksNyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGFkZF9yYV9iaW9fcGFnZXMoc3RydWN0IGlub2Rl ICppbm9kZSwKIAogCQlpZiAoIWVtIHx8IGxhc3Rfb2Zmc2V0IDwgZW0tPnN0YXJ0IHx8CiAJCSAg ICAobGFzdF9vZmZzZXQgKyBQQUdFX0NBQ0hFX1NJWkUgPiBleHRlbnRfbWFwX2VuZChlbSkpIHx8 Ci0JCSAgICAoZW0tPmJsb2NrX3N0YXJ0ID4+IDkpICE9IGNiLT5vcmlnX2Jpby0+Ymlfc2VjdG9y KSB7CisJCSAgICAoZW0tPmJsb2NrX3N0YXJ0ID4+IDkpICE9IGNiLT5vcmlnX2Jpby0+YmlfaXRl ci5iaV9zZWN0b3IpIHsKIAkJCWZyZWVfZXh0ZW50X21hcChlbSk7CiAJCQl1bmxvY2tfZXh0ZW50 KHRyZWUsIGxhc3Rfb2Zmc2V0LCBlbmQpOwogCQkJdW5sb2NrX3BhZ2UocGFnZSk7CkBAIC01NTQs NyArNTU1LDcgQEAgbmV4dDoKICAqIGluIGl0LiAgV2UgZG9uJ3QgYWN0dWFsbHkgZG8gSU8gb24g dGhvc2UgcGFnZXMgYnV0IGFsbG9jYXRlIG5ldyBvbmVzCiAgKiB0byBob2xkIHRoZSBjb21wcmVz c2VkIHBhZ2VzIG9uIGRpc2suCiAgKgotICogYmlvLT5iaV9zZWN0b3IgcG9pbnRzIHRvIHRoZSBj b21wcmVzc2VkIGV4dGVudCBvbiBkaXNrCisgKiBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIHBvaW50 cyB0byB0aGUgY29tcHJlc3NlZCBleHRlbnQgb24gZGlzawogICogYmlvLT5iaV9pb192ZWMgcG9p bnRzIHRvIGFsbCBvZiB0aGUgaW5vZGUgcGFnZXMKICAqIGJpby0+YmlfdmNudCBpcyBhIGNvdW50 IG9mIHBhZ2VzCiAgKgpAQCAtNTc1LDcgKzU3Niw3IEBAIGludCBidHJmc19zdWJtaXRfY29tcHJl c3NlZF9yZWFkKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBiaW8gKmJpbywKIAlzdHJ1Y3Qg cGFnZSAqcGFnZTsKIAlzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2OwogCXN0cnVjdCBiaW8gKmNv bXBfYmlvOwotCXU2NCBjdXJfZGlza19ieXRlID0gKHU2NCliaW8tPmJpX3NlY3RvciA8PCA5Owor CXU2NCBjdXJfZGlza19ieXRlID0gKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDk7CiAJ dTY0IGVtX2xlbjsKIAl1NjQgZW1fc3RhcnQ7CiAJc3RydWN0IGV4dGVudF9tYXAgKmVtOwpAQCAt NjU3LDcgKzY1OCw3IEBAIGludCBidHJmc19zdWJtaXRfY29tcHJlc3NlZF9yZWFkKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHN0cnVjdCBiaW8gKmJpbywKIAkJcGFnZS0+bWFwcGluZyA9IGlub2RlLT5p X21hcHBpbmc7CiAJCXBhZ2UtPmluZGV4ID0gZW1fc3RhcnQgPj4gUEFHRV9DQUNIRV9TSElGVDsK IAotCQlpZiAoY29tcF9iaW8tPmJpX3NpemUpCisJCWlmIChjb21wX2Jpby0+YmlfaXRlci5iaV9z aXplKQogCQkJcmV0ID0gdHJlZS0+b3BzLT5tZXJnZV9iaW9faG9vayhSRUFELCBwYWdlLCAwLAog CQkJCQkJCVBBR0VfQ0FDSEVfU0laRSwKIAkJCQkJCQljb21wX2JpbywgMCk7CkBAIC02ODUsOCAr Njg2LDggQEAgaW50IGJ0cmZzX3N1Ym1pdF9jb21wcmVzc2VkX3JlYWQoc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGJpbyAqYmlvLAogCQkJCQkJCWNvbXBfYmlvLCBzdW1zKTsKIAkJCQlCVUdf T04ocmV0KTsgLyogLUVOT01FTSAqLwogCQkJfQotCQkJc3VtcyArPSAoY29tcF9iaW8tPmJpX3Np emUgKyByb290LT5zZWN0b3JzaXplIC0gMSkgLwotCQkJCXJvb3QtPnNlY3RvcnNpemU7CisJCQlz dW1zICs9IChjb21wX2Jpby0+YmlfaXRlci5iaV9zaXplICsKKwkJCQkgcm9vdC0+c2VjdG9yc2l6 ZSAtIDEpIC8gcm9vdC0+c2VjdG9yc2l6ZTsKIAogCQkJcmV0ID0gYnRyZnNfbWFwX2Jpbyhyb290 LCBSRUFELCBjb21wX2JpbywKIAkJCQkJICAgIG1pcnJvcl9udW0sIDApOwpkaWZmIC0tZ2l0IGEv ZnMvYnRyZnMvZXh0ZW50X2lvLmMgYi9mcy9idHJmcy9leHRlbnRfaW8uYwppbmRleCA1ODNkOThi Li4yN2FlZDlkIDEwMDY0NAotLS0gYS9mcy9idHJmcy9leHRlbnRfaW8uYworKysgYi9mcy9idHJm cy9leHRlbnRfaW8uYwpAQCAtMjA3Miw3ICsyMDcyLDcgQEAgaW50IHJlcGFpcl9pb19mYWlsdXJl KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCB1NjQgc3RhcnQsCiAJCXJldHVybiAtRUlP OwogCWJpby0+YmlfcHJpdmF0ZSA9ICZjb21wbDsKIAliaW8tPmJpX2VuZF9pbyA9IHJlcGFpcl9p b19mYWlsdXJlX2NhbGxiYWNrOwotCWJpby0+Ymlfc2l6ZSA9IDA7CisJYmlvLT5iaV9pdGVyLmJp X3NpemUgPSAwOwogCW1hcF9sZW5ndGggPSBsZW5ndGg7CiAKIAlyZXQgPSBidHJmc19tYXBfYmxv Y2soZnNfaW5mbywgV1JJVEUsIGxvZ2ljYWwsCkBAIC0yMDgzLDcgKzIwODMsNyBAQCBpbnQgcmVw YWlyX2lvX2ZhaWx1cmUoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sIHU2NCBzdGFydCwK IAl9CiAJQlVHX09OKG1pcnJvcl9udW0gIT0gYmJpby0+bWlycm9yX251bSk7CiAJc2VjdG9yID0g YmJpby0+c3RyaXBlc1ttaXJyb3JfbnVtLTFdLnBoeXNpY2FsID4+IDk7Ci0JYmlvLT5iaV9zZWN0 b3IgPSBzZWN0b3I7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHNlY3RvcjsKIAlkZXYgPSBi YmlvLT5zdHJpcGVzW21pcnJvcl9udW0tMV0uZGV2OwogCWtmcmVlKGJiaW8pOwogCWlmICghZGV2 IHx8ICFkZXYtPmJkZXYgfHwgIWRldi0+d3JpdGVhYmxlKSB7CkBAIC0yMzY0LDkgKzIzNjQsOSBA QCBzdGF0aWMgaW50IGJpb19yZWFkcGFnZV9lcnJvcihzdHJ1Y3QgYmlvICpmYWlsZWRfYmlvLCBz dHJ1Y3QgcGFnZSAqcGFnZSwKIAl9CiAJYmlvLT5iaV9wcml2YXRlID0gc3RhdGU7CiAJYmlvLT5i aV9lbmRfaW8gPSBmYWlsZWRfYmlvLT5iaV9lbmRfaW87Ci0JYmlvLT5iaV9zZWN0b3IgPSBmYWls cmVjLT5sb2dpY2FsID4+IDk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGZhaWxyZWMtPmxv Z2ljYWwgPj4gOTsKIAliaW8tPmJpX2JkZXYgPSBCVFJGU19JKGlub2RlKS0+cm9vdC0+ZnNfaW5m by0+ZnNfZGV2aWNlcy0+bGF0ZXN0X2JkZXY7Ci0JYmlvLT5iaV9zaXplID0gMDsKKwliaW8tPmJp X2l0ZXIuYmlfc2l6ZSA9IDA7CiAKIAliaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBmYWlscmVjLT5s ZW4sIHN0YXJ0IC0gcGFnZV9vZmZzZXQocGFnZSkpOwogCkBAIC0yNDgzLDcgKzI0ODMsNyBAQCBz dGF0aWMgdm9pZCBlbmRfYmlvX2V4dGVudF9yZWFkcGFnZShzdHJ1Y3QgYmlvICpiaW8sIGludCBl cnIpCiAJCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBwYWdlLT5tYXBwaW5nLT5ob3N0OwogCiAJCXBy X2RlYnVnKCJlbmRfYmlvX2V4dGVudF9yZWFkcGFnZTogYmlfc2VjdG9yPSVsbHUsIGVycj0lZCwg IgotCQkJICJtaXJyb3I9JWx1XG4iLCAodTY0KWJpby0+Ymlfc2VjdG9yLCBlcnIsCisJCQkgIm1p cnJvcj0lbHVcbiIsICh1NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciwgZXJyLAogCQkJIGlvX2Jp by0+bWlycm9yX251bSk7CiAJCXRyZWUgPSAmQlRSRlNfSShpbm9kZSktPmlvX3RyZWU7CiAKQEAg LTI1OTgsOSArMjU5OCw5IEBAIGJ0cmZzX2Jpb19hbGxvYyhzdHJ1Y3QgYmxvY2tfZGV2aWNlICpi ZGV2LCB1NjQgZmlyc3Rfc2VjdG9yLCBpbnQgbnJfdmVjcywKIAl9CiAKIAlpZiAoYmlvKSB7Ci0J CWJpby0+Ymlfc2l6ZSA9IDA7CisJCWJpby0+YmlfaXRlci5iaV9zaXplID0gMDsKIAkJYmlvLT5i aV9iZGV2ID0gYmRldjsKLQkJYmlvLT5iaV9zZWN0b3IgPSBmaXJzdF9zZWN0b3I7CisJCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBmaXJzdF9zZWN0b3I7CiAJfQogCXJldHVybiBiaW87CiB9CkBA IC0yNjgwLDcgKzI2ODAsNyBAQCBzdGF0aWMgaW50IHN1Ym1pdF9leHRlbnRfcGFnZShpbnQgcncs IHN0cnVjdCBleHRlbnRfaW9fdHJlZSAqdHJlZSwKIAlpZiAoYmlvX3JldCAmJiAqYmlvX3JldCkg ewogCQliaW8gPSAqYmlvX3JldDsKIAkJaWYgKG9sZF9jb21wcmVzc2VkKQotCQkJY29udGlnID0g YmlvLT5iaV9zZWN0b3IgPT0gc2VjdG9yOworCQkJY29udGlnID0gYmlvLT5iaV9pdGVyLmJpX3Nl Y3RvciA9PSBzZWN0b3I7CiAJCWVsc2UKIAkJCWNvbnRpZyA9IGJpb19lbmRfc2VjdG9yKGJpbykg PT0gc2VjdG9yOwogCmRpZmYgLS1naXQgYS9mcy9idHJmcy9maWxlLWl0ZW0uYyBiL2ZzL2J0cmZz L2ZpbGUtaXRlbS5jCmluZGV4IGE3YmZjOTUuLjg5MGY5NzcgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZz L2ZpbGUtaXRlbS5jCisrKyBiL2ZzL2J0cmZzL2ZpbGUtaXRlbS5jCkBAIC0xNzQsNyArMTc0LDcg QEAgc3RhdGljIGludCBfX2J0cmZzX2xvb2t1cF9iaW9fc3VtcyhzdHJ1Y3QgYnRyZnNfcm9vdCAq cm9vdCwKIAlwYXRoID0gYnRyZnNfYWxsb2NfcGF0aCgpOwogCWlmICghcGF0aCkKIAkJcmV0dXJu IC1FTk9NRU07Ci0JaWYgKGJpby0+Ymlfc2l6ZSA+IFBBR0VfQ0FDSEVfU0laRSAqIDgpCisJaWYg KGJpby0+YmlfaXRlci5iaV9zaXplID4gUEFHRV9DQUNIRV9TSVpFICogOCkKIAkJcGF0aC0+cmVh ZGEgPSAyOwogCiAJV0FSTl9PTihiaW8tPmJpX3ZjbnQgPD0gMCk7CkBAIC0xOTAsNyArMTkwLDcg QEAgc3RhdGljIGludCBfX2J0cmZzX2xvb2t1cF9iaW9fc3VtcyhzdHJ1Y3QgYnRyZnNfcm9vdCAq cm9vdCwKIAkJcGF0aC0+c2tpcF9sb2NraW5nID0gMTsKIAl9CiAKLQlkaXNrX2J5dGVuciA9ICh1 NjQpYmlvLT5iaV9zZWN0b3IgPDwgOTsKKwlkaXNrX2J5dGVuciA9ICh1NjQpYmlvLT5iaV9pdGVy LmJpX3NlY3RvciA8PCA5OwogCWlmIChkaW8pCiAJCW9mZnNldCA9IGxvZ2ljYWxfb2Zmc2V0Owog CXdoaWxlIChiaW9faW5kZXggPCBiaW8tPmJpX3ZjbnQpIHsKQEAgLTQxOSwxMSArNDE5LDEyIEBA IGludCBidHJmc19jc3VtX29uZV9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBp bm9kZSAqaW5vZGUsCiAJdTY0IG9mZnNldDsKIAogCVdBUk5fT04oYmlvLT5iaV92Y250IDw9IDAp OwotCXN1bXMgPSBremFsbG9jKGJ0cmZzX29yZGVyZWRfc3VtX3NpemUocm9vdCwgYmlvLT5iaV9z aXplKSwgR0ZQX05PRlMpOworCXN1bXMgPSBremFsbG9jKGJ0cmZzX29yZGVyZWRfc3VtX3NpemUo cm9vdCwgYmlvLT5iaV9pdGVyLmJpX3NpemUpLAorCQkgICAgICAgR0ZQX05PRlMpOwogCWlmICgh c3VtcykKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlzdW1zLT5sZW4gPSBiaW8tPmJpX3NpemU7CisJ c3Vtcy0+bGVuID0gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiAJSU5JVF9MSVNUX0hFQUQoJnN1bXMt Pmxpc3QpOwogCiAJaWYgKGNvbnRpZykKQEAgLTQzMyw3ICs0MzQsNyBAQCBpbnQgYnRyZnNfY3N1 bV9vbmVfYmlvKHN0cnVjdCBidHJmc19yb290ICpyb290LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLAog CiAJb3JkZXJlZCA9IGJ0cmZzX2xvb2t1cF9vcmRlcmVkX2V4dGVudChpbm9kZSwgb2Zmc2V0KTsK IAlCVUdfT04oIW9yZGVyZWQpOyAvKiBMb2dpYyBlcnJvciAqLwotCXN1bXMtPmJ5dGVuciA9ICh1 NjQpYmlvLT5iaV9zZWN0b3IgPDwgOTsKKwlzdW1zLT5ieXRlbnIgPSAodTY0KWJpby0+YmlfaXRl ci5iaV9zZWN0b3IgPDwgOTsKIAlpbmRleCA9IDA7CiAKIAl3aGlsZSAoYmlvX2luZGV4IDwgYmlv LT5iaV92Y250KSB7CkBAIC00NDgsNyArNDQ5LDcgQEAgaW50IGJ0cmZzX2NzdW1fb25lX2Jpbyhz dHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGlub2RlICppbm9kZSwKIAkJCWJ0cmZzX2Fk ZF9vcmRlcmVkX3N1bShpbm9kZSwgb3JkZXJlZCwgc3Vtcyk7CiAJCQlidHJmc19wdXRfb3JkZXJl ZF9leHRlbnQob3JkZXJlZCk7CiAKLQkJCWJ5dGVzX2xlZnQgPSBiaW8tPmJpX3NpemUgLSB0b3Rh bF9ieXRlczsKKwkJCWJ5dGVzX2xlZnQgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSAtIHRvdGFsX2J5 dGVzOwogCiAJCQlzdW1zID0ga3phbGxvYyhidHJmc19vcmRlcmVkX3N1bV9zaXplKHJvb3QsIGJ5 dGVzX2xlZnQpLAogCQkJCSAgICAgICBHRlBfTk9GUyk7CkBAIC00NTYsNyArNDU3LDcgQEAgaW50 IGJ0cmZzX2NzdW1fb25lX2JpbyhzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGlub2Rl ICppbm9kZSwKIAkJCXN1bXMtPmxlbiA9IGJ5dGVzX2xlZnQ7CiAJCQlvcmRlcmVkID0gYnRyZnNf bG9va3VwX29yZGVyZWRfZXh0ZW50KGlub2RlLCBvZmZzZXQpOwogCQkJQlVHX09OKCFvcmRlcmVk KTsgLyogTG9naWMgZXJyb3IgKi8KLQkJCXN1bXMtPmJ5dGVuciA9ICgodTY0KWJpby0+Ymlfc2Vj dG9yIDw8IDkpICsKKwkJCXN1bXMtPmJ5dGVuciA9ICgodTY0KWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPDwgOSkgKwogCQkJCSAgICAgICB0b3RhbF9ieXRlczsKIAkJCWluZGV4ID0gMDsKIAkJfQpk aWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW5vZGUuYyBiL2ZzL2J0cmZzL2lub2RlLmMKaW5kZXggNmQx YjkzYy4uZGY2ZWI1NSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvaW5vZGUuYworKysgYi9mcy9idHJm cy9pbm9kZS5jCkBAIC0xNjY2LDcgKzE2NjYsNyBAQCBpbnQgYnRyZnNfbWVyZ2VfYmlvX2hvb2so aW50IHJ3LCBzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBvZmZzZXQsCiAJCQkgdW5z aWduZWQgbG9uZyBiaW9fZmxhZ3MpCiB7CiAJc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QgPSBCVFJG U19JKHBhZ2UtPm1hcHBpbmctPmhvc3QpLT5yb290OwotCXU2NCBsb2dpY2FsID0gKHU2NCliaW8t PmJpX3NlY3RvciA8PCA5OworCXU2NCBsb2dpY2FsID0gKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2Vj dG9yIDw8IDk7CiAJdTY0IGxlbmd0aCA9IDA7CiAJdTY0IG1hcF9sZW5ndGg7CiAJaW50IHJldDsK QEAgLTE2NzQsNyArMTY3NCw3IEBAIGludCBidHJmc19tZXJnZV9iaW9faG9vayhpbnQgcncsIHN0 cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBsb25nIG9mZnNldCwKIAlpZiAoYmlvX2ZsYWdzICYg RVhURU5UX0JJT19DT01QUkVTU0VEKQogCQlyZXR1cm4gMDsKIAotCWxlbmd0aCA9IGJpby0+Ymlf c2l6ZTsKKwlsZW5ndGggPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAltYXBfbGVuZ3RoID0gbGVu Z3RoOwogCXJldCA9IGJ0cmZzX21hcF9ibG9jayhyb290LT5mc19pbmZvLCBydywgbG9naWNhbCwK IAkJCSAgICAgICZtYXBfbGVuZ3RoLCBOVUxMLCAwKTsKQEAgLTY5MzUsNyArNjkzNSw4IEBAIHN0 YXRpYyB2b2lkIGJ0cmZzX2VuZF9kaW9fYmlvKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycikKIAkJ cHJpbnRrKEtFUk5fRVJSICJidHJmcyBkaXJlY3QgSU8gZmFpbGVkIGlubyAlbGx1IHJ3ICVsdSAi CiAJCSAgICAgICJzZWN0b3IgJSNMeCBsZW4gJXUgZXJyIG5vICVkXG4iLAogCQkgICAgICAodW5z aWduZWQgbG9uZyBsb25nKWJ0cmZzX2lubyhkaXAtPmlub2RlKSwgYmlvLT5iaV9ydywKLQkJICAg ICAgKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3RvciwgYmlvLT5iaV9zaXplLCBlcnIp OworCQkgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJpby0+YmlfaXRlci5iaV9zZWN0b3IsCisJ CSAgICAgIGJpby0+YmlfaXRlci5iaV9zaXplLCBlcnIpOwogCQlkaXAtPmVycm9ycyA9IDE7CiAK IAkJLyoKQEAgLTcwMjQsNyArNzAyNSw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfc3VibWl0X2RpcmVj dF9ob29rKGludCBydywgc3RydWN0IGJ0cmZzX2Rpb19wcml2YXRlICpkaXAsCiAJc3RydWN0IGJp byAqYmlvOwogCXN0cnVjdCBiaW8gKm9yaWdfYmlvID0gZGlwLT5vcmlnX2JpbzsKIAlzdHJ1Y3Qg YmlvX3ZlYyAqYnZlYyA9IG9yaWdfYmlvLT5iaV9pb192ZWM7Ci0JdTY0IHN0YXJ0X3NlY3RvciA9 IG9yaWdfYmlvLT5iaV9zZWN0b3I7CisJdTY0IHN0YXJ0X3NlY3RvciA9IG9yaWdfYmlvLT5iaV9p dGVyLmJpX3NlY3RvcjsKIAl1NjQgZmlsZV9vZmZzZXQgPSBkaXAtPmxvZ2ljYWxfb2Zmc2V0Owog CXU2NCBzdWJtaXRfbGVuID0gMDsKIAl1NjQgbWFwX2xlbmd0aDsKQEAgLTcwMzIsMTQgKzcwMzMs MTQgQEAgc3RhdGljIGludCBidHJmc19zdWJtaXRfZGlyZWN0X2hvb2soaW50IHJ3LCBzdHJ1Y3Qg YnRyZnNfZGlvX3ByaXZhdGUgKmRpcCwKIAlpbnQgcmV0ID0gMDsKIAlpbnQgYXN5bmNfc3VibWl0 ID0gMDsKIAotCW1hcF9sZW5ndGggPSBvcmlnX2Jpby0+Ymlfc2l6ZTsKKwltYXBfbGVuZ3RoID0g b3JpZ19iaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAlyZXQgPSBidHJmc19tYXBfYmxvY2socm9vdC0+ ZnNfaW5mbywgcncsIHN0YXJ0X3NlY3RvciA8PCA5LAogCQkJICAgICAgJm1hcF9sZW5ndGgsIE5V TEwsIDApOwogCWlmIChyZXQpIHsKIAkJYmlvX3B1dChvcmlnX2Jpbyk7CiAJCXJldHVybiAtRUlP OwogCX0KLQlpZiAobWFwX2xlbmd0aCA+PSBvcmlnX2Jpby0+Ymlfc2l6ZSkgeworCWlmIChtYXBf bGVuZ3RoID49IG9yaWdfYmlvLT5iaV9pdGVyLmJpX3NpemUpIHsKIAkJYmlvID0gb3JpZ19iaW87 CiAJCWdvdG8gc3VibWl0OwogCX0KQEAgLTcwOTEsNyArNzA5Miw3IEBAIHN0YXRpYyBpbnQgYnRy ZnNfc3VibWl0X2RpcmVjdF9ob29rKGludCBydywgc3RydWN0IGJ0cmZzX2Rpb19wcml2YXRlICpk aXAsCiAJCQliaW8tPmJpX3ByaXZhdGUgPSBkaXA7CiAJCQliaW8tPmJpX2VuZF9pbyA9IGJ0cmZz X2VuZF9kaW9fYmlvOwogCi0JCQltYXBfbGVuZ3RoID0gb3JpZ19iaW8tPmJpX3NpemU7CisJCQlt YXBfbGVuZ3RoID0gb3JpZ19iaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAkJCXJldCA9IGJ0cmZzX21h cF9ibG9jayhyb290LT5mc19pbmZvLCBydywKIAkJCQkJICAgICAgc3RhcnRfc2VjdG9yIDw8IDks CiAJCQkJCSAgICAgICZtYXBfbGVuZ3RoLCBOVUxMLCAwKTsKQEAgLTcxNTUsOCArNzE1Niw4IEBA IHN0YXRpYyB2b2lkIGJ0cmZzX3N1Ym1pdF9kaXJlY3QoaW50IHJ3LCBzdHJ1Y3QgYmlvICpkaW9f YmlvLAogCWRpcC0+cHJpdmF0ZSA9IGRpb19iaW8tPmJpX3ByaXZhdGU7CiAJZGlwLT5pbm9kZSA9 IGlub2RlOwogCWRpcC0+bG9naWNhbF9vZmZzZXQgPSBmaWxlX29mZnNldDsKLQlkaXAtPmJ5dGVz ID0gZGlvX2Jpby0+Ymlfc2l6ZTsKLQlkaXAtPmRpc2tfYnl0ZW5yID0gKHU2NClkaW9fYmlvLT5i aV9zZWN0b3IgPDwgOTsKKwlkaXAtPmJ5dGVzID0gZGlvX2Jpby0+YmlfaXRlci5iaV9zaXplOwor CWRpcC0+ZGlza19ieXRlbnIgPSAodTY0KWRpb19iaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDk7 CiAJaW9fYmlvLT5iaV9wcml2YXRlID0gZGlwOwogCWRpcC0+ZXJyb3JzID0gMDsKIAlkaXAtPm9y aWdfYmlvID0gaW9fYmlvOwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvcmFpZDU2LmMgYi9mcy9idHJm cy9yYWlkNTYuYwppbmRleCAwNTI1ZTEzLi5mYzg5YmVlIDEwMDY0NAotLS0gYS9mcy9idHJmcy9y YWlkNTYuYworKysgYi9mcy9idHJmcy9yYWlkNTYuYwpAQCAtMTAzMyw4ICsxMDMzLDggQEAgc3Rh dGljIGludCByYmlvX2FkZF9pb19wYWdlKHN0cnVjdCBidHJmc19yYWlkX2JpbyAqcmJpbywKIAog CS8qIHNlZSBpZiB3ZSBjYW4gYWRkIHRoaXMgcGFnZSBvbnRvIG91ciBleGlzdGluZyBiaW8gKi8K IAlpZiAobGFzdCkgewotCQlsYXN0X2VuZCA9ICh1NjQpbGFzdC0+Ymlfc2VjdG9yIDw8IDk7Ci0J CWxhc3RfZW5kICs9IGxhc3QtPmJpX3NpemU7CisJCWxhc3RfZW5kID0gKHU2NClsYXN0LT5iaV9p dGVyLmJpX3NlY3RvciA8PCA5OworCQlsYXN0X2VuZCArPSBsYXN0LT5iaV9pdGVyLmJpX3NpemU7 CiAKIAkJLyoKIAkJICogd2UgY2FuJ3QgbWVyZ2UgdGhlc2UgaWYgdGhleSBhcmUgZnJvbSBkaWZm ZXJlbnQKQEAgLTEwNTQsOSArMTA1NCw5IEBAIHN0YXRpYyBpbnQgcmJpb19hZGRfaW9fcGFnZShz dHJ1Y3QgYnRyZnNfcmFpZF9iaW8gKnJiaW8sCiAJaWYgKCFiaW8pCiAJCXJldHVybiAtRU5PTUVN OwogCi0JYmlvLT5iaV9zaXplID0gMDsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IDA7CiAJYmlv LT5iaV9iZGV2ID0gc3RyaXBlLT5kZXYtPmJkZXY7Ci0JYmlvLT5iaV9zZWN0b3IgPSBkaXNrX3N0 YXJ0ID4+IDk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IGRpc2tfc3RhcnQgPj4gOTsKIAlz ZXRfYml0KEJJT19VUFRPREFURSwgJmJpby0+YmlfZmxhZ3MpOwogCiAJYmlvX2FkZF9wYWdlKGJp bywgcGFnZSwgUEFHRV9DQUNIRV9TSVpFLCAwKTsKQEAgLTExMTIsNyArMTExMiw3IEBAIHN0YXRp YyB2b2lkIGluZGV4X3JiaW9fcGFnZXMoc3RydWN0IGJ0cmZzX3JhaWRfYmlvICpyYmlvKQogCiAJ c3Bpbl9sb2NrX2lycSgmcmJpby0+YmlvX2xpc3RfbG9jayk7CiAJYmlvX2xpc3RfZm9yX2VhY2go YmlvLCAmcmJpby0+YmlvX2xpc3QpIHsKLQkJc3RhcnQgPSAodTY0KWJpby0+Ymlfc2VjdG9yIDw8 IDk7CisJCXN0YXJ0ID0gKHU2NCliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yIDw8IDk7CiAJCXN0cmlw ZV9vZmZzZXQgPSBzdGFydCAtIHJiaW8tPnJhaWRfbWFwWzBdOwogCQlwYWdlX2luZGV4ID0gc3Ry aXBlX29mZnNldCA+PiBQQUdFX0NBQ0hFX1NISUZUOwogCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBj bGVhbnVwOgogc3RhdGljIGludCBmaW5kX2Jpb19zdHJpcGUoc3RydWN0IGJ0cmZzX3JhaWRfYmlv ICpyYmlvLAogCQkJICAgc3RydWN0IGJpbyAqYmlvKQogewotCXU2NCBwaHlzaWNhbCA9IGJpby0+ Ymlfc2VjdG9yOworCXU2NCBwaHlzaWNhbCA9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJdTY0 IHN0cmlwZV9zdGFydDsKIAlpbnQgaTsKIAlzdHJ1Y3QgYnRyZnNfYmlvX3N0cmlwZSAqc3RyaXBl OwpAQCAtMTI5OSw3ICsxMjk5LDcgQEAgc3RhdGljIGludCBmaW5kX2Jpb19zdHJpcGUoc3RydWN0 IGJ0cmZzX3JhaWRfYmlvICpyYmlvLAogc3RhdGljIGludCBmaW5kX2xvZ2ljYWxfYmlvX3N0cmlw ZShzdHJ1Y3QgYnRyZnNfcmFpZF9iaW8gKnJiaW8sCiAJCQkJICAgc3RydWN0IGJpbyAqYmlvKQog ewotCXU2NCBsb2dpY2FsID0gYmlvLT5iaV9zZWN0b3I7CisJdTY0IGxvZ2ljYWwgPSBiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yOwogCXU2NCBzdHJpcGVfc3RhcnQ7CiAJaW50IGk7CiAKQEAgLTE2MDEs OCArMTYwMSw4IEBAIHN0YXRpYyBpbnQgcGx1Z19jbXAodm9pZCAqcHJpdiwgc3RydWN0IGxpc3Rf aGVhZCAqYSwgc3RydWN0IGxpc3RfaGVhZCAqYikKIAkJCQkJCSBwbHVnX2xpc3QpOwogCXN0cnVj dCBidHJmc19yYWlkX2JpbyAqcmIgPSBjb250YWluZXJfb2YoYiwgc3RydWN0IGJ0cmZzX3JhaWRf YmlvLAogCQkJCQkJIHBsdWdfbGlzdCk7Ci0JdTY0IGFfc2VjdG9yID0gcmEtPmJpb19saXN0Lmhl YWQtPmJpX3NlY3RvcjsKLQl1NjQgYl9zZWN0b3IgPSByYi0+YmlvX2xpc3QuaGVhZC0+Ymlfc2Vj dG9yOworCXU2NCBhX3NlY3RvciA9IHJhLT5iaW9fbGlzdC5oZWFkLT5iaV9pdGVyLmJpX3NlY3Rv cjsKKwl1NjQgYl9zZWN0b3IgPSByYi0+YmlvX2xpc3QuaGVhZC0+YmlfaXRlci5iaV9zZWN0b3I7 CiAKIAlpZiAoYV9zZWN0b3IgPCBiX3NlY3RvcikKIAkJcmV0dXJuIC0xOwpAQCAtMTY5Myw3ICsx NjkzLDcgQEAgaW50IHJhaWQ1Nl9wYXJpdHlfd3JpdGUoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3Qs IHN0cnVjdCBiaW8gKmJpbywKIAkJcmV0dXJuIFBUUl9FUlIocmJpbyk7CiAJfQogCWJpb19saXN0 X2FkZCgmcmJpby0+YmlvX2xpc3QsIGJpbyk7Ci0JcmJpby0+YmlvX2xpc3RfYnl0ZXMgPSBiaW8t PmJpX3NpemU7CisJcmJpby0+YmlvX2xpc3RfYnl0ZXMgPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsK IAogCS8qCiAJICogZG9uJ3QgcGx1ZyBvbiBmdWxsIHJiaW9zLCBqdXN0IGdldCB0aGVtIG91dCB0 aGUgZG9vcgpAQCAtMjA0Nyw3ICsyMDQ3LDcgQEAgaW50IHJhaWQ1Nl9wYXJpdHlfcmVjb3Zlcihz dHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgc3RydWN0IGJpbyAqYmlvLAogCiAJcmJpby0+cmVhZF9y ZWJ1aWxkID0gMTsKIAliaW9fbGlzdF9hZGQoJnJiaW8tPmJpb19saXN0LCBiaW8pOwotCXJiaW8t PmJpb19saXN0X2J5dGVzID0gYmlvLT5iaV9zaXplOworCXJiaW8tPmJpb19saXN0X2J5dGVzID0g YmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAlyYmlvLT5mYWlsYSA9IGZpbmRfbG9naWNhbF9iaW9f c3RyaXBlKHJiaW8sIGJpbyk7CiAJaWYgKHJiaW8tPmZhaWxhID09IC0xKSB7CmRpZmYgLS1naXQg YS9mcy9idHJmcy9zY3J1Yi5jIGIvZnMvYnRyZnMvc2NydWIuYwppbmRleCA2NGExNTdiLi41YmU3 YzYxIDEwMDY0NAotLS0gYS9mcy9idHJmcy9zY3J1Yi5jCisrKyBiL2ZzL2J0cmZzL3NjcnViLmMK QEAgLTEzMDMsNyArMTMwMyw3IEBAIHN0YXRpYyB2b2lkIHNjcnViX3JlY2hlY2tfYmxvY2soc3Ry dWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sCiAJCQljb250aW51ZTsKIAkJfQogCQliaW8tPmJp X2JkZXYgPSBwYWdlLT5kZXYtPmJkZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0gcGFnZS0+cGh5c2lj YWwgPj4gOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBhZ2UtPnBoeXNpY2FsID4+IDk7 CiAJCWJpby0+YmlfZW5kX2lvID0gc2NydWJfY29tcGxldGVfYmlvX2VuZF9pbzsKIAkJYmlvLT5i aV9wcml2YXRlID0gJmNvbXBsZXRlOwogCkBAIC0xNDM1LDcgKzE0MzUsNyBAQCBzdGF0aWMgaW50 IHNjcnViX3JlcGFpcl9wYWdlX2Zyb21fZ29vZF9jb3B5KHN0cnVjdCBzY3J1Yl9ibG9jayAqc2Js b2NrX2JhZCwKIAkJaWYgKCFiaW8pCiAJCQlyZXR1cm4gLUVJTzsKIAkJYmlvLT5iaV9iZGV2ID0g cGFnZV9iYWQtPmRldi0+YmRldjsKLQkJYmlvLT5iaV9zZWN0b3IgPSBwYWdlX2JhZC0+cGh5c2lj YWwgPj4gOTsKKwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBhZ2VfYmFkLT5waHlzaWNhbCA+ PiA5OwogCQliaW8tPmJpX2VuZF9pbyA9IHNjcnViX2NvbXBsZXRlX2Jpb19lbmRfaW87CiAJCWJp by0+YmlfcHJpdmF0ZSA9ICZjb21wbGV0ZTsKIApAQCAtMTUzMyw3ICsxNTMzLDcgQEAgYWdhaW46 CiAJCWJpby0+YmlfcHJpdmF0ZSA9IHNiaW87CiAJCWJpby0+YmlfZW5kX2lvID0gc2NydWJfd3Jf YmlvX2VuZF9pbzsKIAkJYmlvLT5iaV9iZGV2ID0gc2Jpby0+ZGV2LT5iZGV2OwotCQliaW8tPmJp X3NlY3RvciA9IHNiaW8tPnBoeXNpY2FsID4+IDk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSBzYmlvLT5waHlzaWNhbCA+PiA5OwogCQlzYmlvLT5lcnIgPSAwOwogCX0gZWxzZSBpZiAoc2Jp by0+cGh5c2ljYWwgKyBzYmlvLT5wYWdlX2NvdW50ICogUEFHRV9TSVpFICE9CiAJCSAgIHNwYWdl LT5waHlzaWNhbF9mb3JfZGV2X3JlcGxhY2UgfHwKQEAgLTE5MzksNyArMTkzOSw3IEBAIGFnYWlu OgogCQliaW8tPmJpX3ByaXZhdGUgPSBzYmlvOwogCQliaW8tPmJpX2VuZF9pbyA9IHNjcnViX2Jp b19lbmRfaW87CiAJCWJpby0+YmlfYmRldiA9IHNiaW8tPmRldi0+YmRldjsKLQkJYmlvLT5iaV9z ZWN0b3IgPSBzYmlvLT5waHlzaWNhbCA+PiA5OworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0g c2Jpby0+cGh5c2ljYWwgPj4gOTsKIAkJc2Jpby0+ZXJyID0gMDsKIAl9IGVsc2UgaWYgKHNiaW8t PnBoeXNpY2FsICsgc2Jpby0+cGFnZV9jb3VudCAqIFBBR0VfU0laRSAhPQogCQkgICBzcGFnZS0+ cGh5c2ljYWwgfHwKQEAgLTMzMzAsOCArMzMzMCw4IEBAIHN0YXRpYyBpbnQgd3JpdGVfcGFnZV9u b2NvdyhzdHJ1Y3Qgc2NydWJfY3R4ICpzY3R4LAogCX0KIAliaW8tPmJpX3ByaXZhdGUgPSAmY29t cGw7CiAJYmlvLT5iaV9lbmRfaW8gPSBzY3J1Yl9jb21wbGV0ZV9iaW9fZW5kX2lvOwotCWJpby0+ Ymlfc2l6ZSA9IDA7Ci0JYmlvLT5iaV9zZWN0b3IgPSBwaHlzaWNhbF9mb3JfZGV2X3JlcGxhY2Ug Pj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IDA7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3Rv ciA9IHBoeXNpY2FsX2Zvcl9kZXZfcmVwbGFjZSA+PiA5OwogCWJpby0+YmlfYmRldiA9IGRldi0+ YmRldjsKIAlyZXQgPSBiaW9fYWRkX3BhZ2UoYmlvLCBwYWdlLCBQQUdFX0NBQ0hFX1NJWkUsIDAp OwogCWlmIChyZXQgIT0gUEFHRV9DQUNIRV9TSVpFKSB7CmRpZmYgLS1naXQgYS9mcy9idHJmcy92 b2x1bWVzLmMgYi9mcy9idHJmcy92b2x1bWVzLmMKaW5kZXggNzhiODcxNy4uOTljYTFiNiAxMDA2 NDQKLS0tIGEvZnMvYnRyZnMvdm9sdW1lcy5jCisrKyBiL2ZzL2J0cmZzL3ZvbHVtZXMuYwpAQCAt NTEyMiw3ICs1MTIyLDcgQEAgc3RhdGljIGludCBiaW9fc2l6ZV9vayhzdHJ1Y3QgYmxvY2tfZGV2 aWNlICpiZGV2LCBzdHJ1Y3QgYmlvICpiaW8sCiAJaWYgKCFxLT5tZXJnZV9idmVjX2ZuKQogCQly ZXR1cm4gMTsKIAotCWJ2bS5iaV9zaXplID0gYmlvLT5iaV9zaXplIC0gcHJldi0+YnZfbGVuOwor CWJ2bS5iaV9zaXplID0gYmlvLT5iaV9pdGVyLmJpX3NpemUgLSBwcmV2LT5idl9sZW47CiAJaWYg KHEtPm1lcmdlX2J2ZWNfZm4ocSwgJmJ2bSwgcHJldikgPCBwcmV2LT5idl9sZW4pCiAJCXJldHVy biAwOwogCXJldHVybiAxOwpAQCAtNTEzNyw3ICs1MTM3LDcgQEAgc3RhdGljIHZvaWQgc3VibWl0 X3N0cmlwZV9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHN0cnVjdCBidHJmc19iaW8gKmJi aW8sCiAJYmlvLT5iaV9wcml2YXRlID0gYmJpbzsKIAlidHJmc19pb19iaW8oYmlvKS0+c3RyaXBl X2luZGV4ID0gZGV2X25yOwogCWJpby0+YmlfZW5kX2lvID0gYnRyZnNfZW5kX2JpbzsKLQliaW8t PmJpX3NlY3RvciA9IHBoeXNpY2FsID4+IDk7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBo eXNpY2FsID4+IDk7CiAjaWZkZWYgREVCVUcKIAl7CiAJCXN0cnVjdCByY3Vfc3RyaW5nICpuYW1l OwpAQCAtNTE3NSw3ICs1MTc1LDcgQEAgYWdhaW46CiAJd2hpbGUgKGJ2ZWMgPD0gKGZpcnN0X2Jp by0+YmlfaW9fdmVjICsgZmlyc3RfYmlvLT5iaV92Y250IC0gMSkpIHsKIAkJaWYgKGJpb19hZGRf cGFnZShiaW8sIGJ2ZWMtPmJ2X3BhZ2UsIGJ2ZWMtPmJ2X2xlbiwKIAkJCQkgYnZlYy0+YnZfb2Zm c2V0KSA8IGJ2ZWMtPmJ2X2xlbikgewotCQkJdTY0IGxlbiA9IGJpby0+Ymlfc2l6ZTsKKwkJCXU2 NCBsZW4gPSBiaW8tPmJpX2l0ZXIuYmlfc2l6ZTsKIAogCQkJYXRvbWljX2luYygmYmJpby0+c3Ry aXBlc19wZW5kaW5nKTsKIAkJCXN1Ym1pdF9zdHJpcGVfYmlvKHJvb3QsIGJiaW8sIGJpbywgcGh5 c2ljYWwsIGRldl9uciwKQEAgLTUxOTcsNyArNTE5Nyw3IEBAIHN0YXRpYyB2b2lkIGJiaW9fZXJy b3Ioc3RydWN0IGJ0cmZzX2JpbyAqYmJpbywgc3RydWN0IGJpbyAqYmlvLCB1NjQgbG9naWNhbCkK IAkJYmlvLT5iaV9wcml2YXRlID0gYmJpby0+cHJpdmF0ZTsKIAkJYmlvLT5iaV9lbmRfaW8gPSBi YmlvLT5lbmRfaW87CiAJCWJ0cmZzX2lvX2JpbyhiaW8pLT5taXJyb3JfbnVtID0gYmJpby0+bWly cm9yX251bTsKLQkJYmlvLT5iaV9zZWN0b3IgPSBsb2dpY2FsID4+IDk7CisJCWJpby0+YmlfaXRl ci5iaV9zZWN0b3IgPSBsb2dpY2FsID4+IDk7CiAJCWtmcmVlKGJiaW8pOwogCQliaW9fZW5kaW8o YmlvLCAtRUlPKTsKIAl9CkBAIC01MjA4LDcgKzUyMDgsNyBAQCBpbnQgYnRyZnNfbWFwX2Jpbyhz dHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwgaW50IHJ3LCBzdHJ1Y3QgYmlvICpiaW8sCiB7CiAJc3Ry dWN0IGJ0cmZzX2RldmljZSAqZGV2OwogCXN0cnVjdCBiaW8gKmZpcnN0X2JpbyA9IGJpbzsKLQl1 NjQgbG9naWNhbCA9ICh1NjQpYmlvLT5iaV9zZWN0b3IgPDwgOTsKKwl1NjQgbG9naWNhbCA9ICh1 NjQpYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PCA5OwogCXU2NCBsZW5ndGggPSAwOwogCXU2NCBt YXBfbGVuZ3RoOwogCXU2NCAqcmFpZF9tYXAgPSBOVUxMOwpAQCAtNTIxNyw3ICs1MjE3LDcgQEAg aW50IGJ0cmZzX21hcF9iaW8oc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIGludCBydywgc3RydWN0 IGJpbyAqYmlvLAogCWludCB0b3RhbF9kZXZzID0gMTsKIAlzdHJ1Y3QgYnRyZnNfYmlvICpiYmlv ID0gTlVMTDsKIAotCWxlbmd0aCA9IGJpby0+Ymlfc2l6ZTsKKwlsZW5ndGggPSBiaW8tPmJpX2l0 ZXIuYmlfc2l6ZTsKIAltYXBfbGVuZ3RoID0gbGVuZ3RoOwogCiAJcmV0ID0gX19idHJmc19tYXBf YmxvY2socm9vdC0+ZnNfaW5mbywgcncsIGxvZ2ljYWwsICZtYXBfbGVuZ3RoLCAmYmJpbywKZGlm ZiAtLWdpdCBhL2ZzL2J1ZmZlci5jIGIvZnMvYnVmZmVyLmMKaW5kZXggNGQ3NDMzNS4uOGYzNWU3 NSAxMDA2NDQKLS0tIGEvZnMvYnVmZmVyLmMKKysrIGIvZnMvYnVmZmVyLmMKQEAgLTI5NzIsMTEg KzI5NzIsMTEgQEAgc3RhdGljIHZvaWQgZ3VhcmRfYmhfZW9kKGludCBydywgc3RydWN0IGJpbyAq YmlvLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQogCSAqIGxldCBpdCB0aHJvdWdoLCBhbmQgdGhl IElPIGxheWVyIHdpbGwgdHVybiBpdCBpbnRvCiAJICogYW4gRUlPLgogCSAqLwotCWlmICh1bmxp a2VseShiaW8tPmJpX3NlY3RvciA+PSBtYXhzZWN0b3IpKQorCWlmICh1bmxpa2VseShiaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID49IG1heHNlY3RvcikpCiAJCXJldHVybjsKIAotCW1heHNlY3RvciAt PSBiaW8tPmJpX3NlY3RvcjsKLQlieXRlcyA9IGJpby0+Ymlfc2l6ZTsKKwltYXhzZWN0b3IgLT0g YmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwlieXRlcyA9IGJpby0+YmlfaXRlci5iaV9zaXplOwog CWlmIChsaWtlbHkoKGJ5dGVzID4+IDkpIDw9IG1heHNlY3RvcikpCiAJCXJldHVybjsKIApAQCAt Mjk4NCw3ICsyOTg0LDcgQEAgc3RhdGljIHZvaWQgZ3VhcmRfYmhfZW9kKGludCBydywgc3RydWN0 IGJpbyAqYmlvLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQogCWJ5dGVzID0gbWF4c2VjdG9yIDw8 IDk7CiAKIAkvKiBUcnVuY2F0ZSB0aGUgYmlvLi4gKi8KLQliaW8tPmJpX3NpemUgPSBieXRlczsK KwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IGJ5dGVzOwogCWJpby0+YmlfaW9fdmVjWzBdLmJ2X2xl biA9IGJ5dGVzOwogCiAJLyogLi5hbmQgY2xlYXIgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIGZvciBy ZWFkcyAqLwpAQCAtMzAxOSwxNCArMzAxOSwxNCBAQCBpbnQgX3N1Ym1pdF9iaChpbnQgcncsIHN0 cnVjdCBidWZmZXJfaGVhZCAqYmgsIHVuc2lnbmVkIGxvbmcgYmlvX2ZsYWdzKQogCSAqLwogCWJp byA9IGJpb19hbGxvYyhHRlBfTk9JTywgMSk7CiAKLQliaW8tPmJpX3NlY3RvciA9IGJoLT5iX2Js b2NrbnIgKiAoYmgtPmJfc2l6ZSA+PiA5KTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmgt PmJfYmxvY2tuciAqIChiaC0+Yl9zaXplID4+IDkpOwogCWJpby0+YmlfYmRldiA9IGJoLT5iX2Jk ZXY7CiAJYmlvLT5iaV9pb192ZWNbMF0uYnZfcGFnZSA9IGJoLT5iX3BhZ2U7CiAJYmlvLT5iaV9p b192ZWNbMF0uYnZfbGVuID0gYmgtPmJfc2l6ZTsKIAliaW8tPmJpX2lvX3ZlY1swXS5idl9vZmZz ZXQgPSBiaF9vZmZzZXQoYmgpOwogCiAJYmlvLT5iaV92Y250ID0gMTsKLQliaW8tPmJpX3NpemUg PSBiaC0+Yl9zaXplOworCWJpby0+YmlfaXRlci5iaV9zaXplID0gYmgtPmJfc2l6ZTsKIAogCWJp by0+YmlfZW5kX2lvID0gZW5kX2Jpb19iaF9pb19zeW5jOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJo OwpkaWZmIC0tZ2l0IGEvZnMvZGlyZWN0LWlvLmMgYi9mcy9kaXJlY3QtaW8uYwppbmRleCA3YWI5 MGY1Li42YTVkZTIwIDEwMDY0NAotLS0gYS9mcy9kaXJlY3QtaW8uYworKysgYi9mcy9kaXJlY3Qt aW8uYwpAQCAtMzQ5LDcgKzM0OSw3IEBAIGRpb19iaW9fYWxsb2Moc3RydWN0IGRpbyAqZGlvLCBz dHJ1Y3QgZGlvX3N1Ym1pdCAqc2RpbywKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX0tFUk5FTCwgbnJf dmVjcyk7CiAKIAliaW8tPmJpX2JkZXYgPSBiZGV2OwotCWJpby0+Ymlfc2VjdG9yID0gZmlyc3Rf c2VjdG9yOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBmaXJzdF9zZWN0b3I7CiAJaWYgKGRp by0+aXNfYXN5bmMpCiAJCWJpby0+YmlfZW5kX2lvID0gZGlvX2Jpb19lbmRfYWlvOwogCWVsc2UK QEAgLTY1NCw3ICs2NTQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBkaW9fc2VuZF9jdXJfcGFnZShz dHJ1Y3QgZGlvICpkaW8sIHN0cnVjdCBkaW9fc3VibWl0ICpzZGlvLAogCWlmIChzZGlvLT5iaW8p IHsKIAkJbG9mZl90IGN1cl9vZmZzZXQgPSBzZGlvLT5jdXJfcGFnZV9mc19vZmZzZXQ7CiAJCWxv ZmZfdCBiaW9fbmV4dF9vZmZzZXQgPSBzZGlvLT5sb2dpY2FsX29mZnNldF9pbl9iaW8gKwotCQkJ c2Rpby0+YmlvLT5iaV9zaXplOworCQkJc2Rpby0+YmlvLT5iaV9pdGVyLmJpX3NpemU7CiAKIAkJ LyoKIAkJICogU2VlIHdoZXRoZXIgdGhpcyBuZXcgcmVxdWVzdCBpcyBjb250aWd1b3VzIHdpdGgg dGhlIG9sZC4KZGlmZiAtLWdpdCBhL2ZzL2V4dDQvcGFnZS1pby5jIGIvZnMvZXh0NC9wYWdlLWlv LmMKaW5kZXggNjYyNWQyMS4uZGE0Y2JmMCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9wYWdlLWlvLmMK KysrIGIvZnMvZXh0NC9wYWdlLWlvLmMKQEAgLTMxMyw3ICszMTMsNyBAQCBleHQ0X2lvX2VuZF90 ICpleHQ0X2dldF9pb19lbmQoZXh0NF9pb19lbmRfdCAqaW9fZW5kKQogc3RhdGljIHZvaWQgZXh0 NF9lbmRfYmlvKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycm9yKQogewogCWV4dDRfaW9fZW5kX3Qg KmlvX2VuZCA9IGJpby0+YmlfcHJpdmF0ZTsKLQlzZWN0b3JfdCBiaV9zZWN0b3IgPSBiaW8tPmJp X3NlY3RvcjsKKwlzZWN0b3JfdCBiaV9zZWN0b3IgPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwog CiAJQlVHX09OKCFpb19lbmQpOwogCWJpby0+YmlfZW5kX2lvID0gTlVMTDsKQEAgLTM4MSw3ICsz ODEsNyBAQCBzdGF0aWMgaW50IGlvX3N1Ym1pdF9pbml0X2JpbyhzdHJ1Y3QgZXh0NF9pb19zdWJt aXQgKmlvLAogCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9JTywgbWluKG52ZWNzLCBCSU9fTUFYX1BB R0VTKSk7CiAJaWYgKCFiaW8pCiAJCXJldHVybiAtRU5PTUVNOwotCWJpby0+Ymlfc2VjdG9yID0g YmgtPmJfYmxvY2tuciAqIChiaC0+Yl9zaXplID4+IDkpOworCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPSBiaC0+Yl9ibG9ja25yICogKGJoLT5iX3NpemUgPj4gOSk7CiAJYmlvLT5iaV9iZGV2ID0g YmgtPmJfYmRldjsKIAliaW8tPmJpX2VuZF9pbyA9IGV4dDRfZW5kX2JpbzsKIAliaW8tPmJpX3By aXZhdGUgPSBleHQ0X2dldF9pb19lbmQoaW8tPmlvX2VuZCk7CmRpZmYgLS1naXQgYS9mcy9mMmZz L2RhdGEuYyBiL2ZzL2YyZnMvZGF0YS5jCmluZGV4IDAzNWY5YTMuLjEyYTJhZDUgMTAwNjQ0Ci0t LSBhL2ZzL2YyZnMvZGF0YS5jCisrKyBiL2ZzL2YyZnMvZGF0YS5jCkBAIC0zODcsNyArMzg3LDcg QEAgaW50IGYyZnNfcmVhZHBhZ2Uoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBzdHJ1Y3QgcGFn ZSAqcGFnZSwKIAliaW8gPSBmMmZzX2Jpb19hbGxvYyhiZGV2LCAxKTsKIAogCS8qIEluaXRpYWxp emUgdGhlIGJpbyAqLwotCWJpby0+Ymlfc2VjdG9yID0gU0VDVE9SX0ZST01fQkxPQ0soc2JpLCBi bGtfYWRkcik7CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IFNFQ1RPUl9GUk9NX0JMT0NLKHNi aSwgYmxrX2FkZHIpOwogCWJpby0+YmlfZW5kX2lvID0gcmVhZF9lbmRfaW87CiAKIAlpZiAoYmlv X2FkZF9wYWdlKGJpbywgcGFnZSwgUEFHRV9DQUNIRV9TSVpFLCAwKSA8IFBBR0VfQ0FDSEVfU0la RSkgewpkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwpp bmRleCBhODZkMTI1Li5lY2ZlNjVjIDEwMDY0NAotLS0gYS9mcy9mMmZzL3NlZ21lbnQuYworKysg Yi9mcy9mMmZzL3NlZ21lbnQuYwpAQCAtNjgyLDcgKzY4Miw4IEBAIHN0YXRpYyB2b2lkIHN1Ym1p dF93cml0ZV9wYWdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgc3RydWN0IHBhZ2UgKnBhZ2Us CiBhbGxvY19uZXc6CiAJaWYgKHNiaS0+YmlvW3R5cGVdID09IE5VTEwpIHsKIAkJc2JpLT5iaW9b dHlwZV0gPSBmMmZzX2Jpb19hbGxvYyhiZGV2LCBtYXhfaHdfYmxvY2tzKHNiaSkpOwotCQlzYmkt PmJpb1t0eXBlXS0+Ymlfc2VjdG9yID0gU0VDVE9SX0ZST01fQkxPQ0soc2JpLCBibGtfYWRkcik7 CisJCXNiaS0+YmlvW3R5cGVdLT5iaV9pdGVyLmJpX3NlY3RvciA9CisJCQlTRUNUT1JfRlJPTV9C TE9DSyhzYmksIGJsa19hZGRyKTsKIAkJLyoKIAkJICogVGhlIGVuZF9pbyB3aWxsIGJlIGFzc2ln bmVkIGF0IHRoZSBzdW1iaXNzaW9uIHBoYXNlLgogCQkgKiBVbnRpbCB0aGVuLCBsZXQgYmlvX2Fk ZF9wYWdlKCkgbWVyZ2UgY29uc2VjdXRpdmUgSU9zIGFzIG11Y2gKZGlmZiAtLWdpdCBhL2ZzL2dm czIvbG9wcy5jIGIvZnMvZ2ZzMi9sb3BzLmMKaW5kZXggMTdjNWI1ZC4uODFlYTRkZSAxMDA2NDQK LS0tIGEvZnMvZ2ZzMi9sb3BzLmMKKysrIGIvZnMvZ2ZzMi9sb3BzLmMKQEAgLTI3Miw3ICsyNzIs NyBAQCBzdGF0aWMgc3RydWN0IGJpbyAqZ2ZzMl9sb2dfYWxsb2NfYmlvKHN0cnVjdCBnZnMyX3Ni ZCAqc2RwLCB1NjQgYmxrbm8pCiAJCW5ydmVjcyA9IG1heChucnZlY3MvMiwgMVUpOwogCX0KIAot CWJpby0+Ymlfc2VjdG9yID0gYmxrbm8gKiAoc2ItPnNfYmxvY2tzaXplID4+IDkpOworCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBibGtubyAqIChzYi0+c19ibG9ja3NpemUgPj4gOSk7CiAJYmlv LT5iaV9iZGV2ID0gc2ItPnNfYmRldjsKIAliaW8tPmJpX2VuZF9pbyA9IGdmczJfZW5kX2xvZ193 cml0ZTsKIAliaW8tPmJpX3ByaXZhdGUgPSBzZHA7CmRpZmYgLS1naXQgYS9mcy9nZnMyL29wc19m c3R5cGUuYyBiL2ZzL2dmczIvb3BzX2ZzdHlwZS5jCmluZGV4IDAyNjJjMTkuLmVhNjNlMDMgMTAw NjQ0Ci0tLSBhL2ZzL2dmczIvb3BzX2ZzdHlwZS5jCisrKyBiL2ZzL2dmczIvb3BzX2ZzdHlwZS5j CkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIGludCBnZnMyX3JlYWRfc3VwZXIoc3RydWN0IGdm czJfc2JkICpzZHAsIHNlY3Rvcl90IHNlY3RvciwgaW50IHNpbGVudCkKIAlsb2NrX3BhZ2UocGFn ZSk7CiAKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX05PRlMsIDEpOwotCWJpby0+Ymlfc2VjdG9yID0g c2VjdG9yICogKHNiLT5zX2Jsb2Nrc2l6ZSA+PiA5KTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9y ID0gc2VjdG9yICogKHNiLT5zX2Jsb2Nrc2l6ZSA+PiA5KTsKIAliaW8tPmJpX2JkZXYgPSBzYi0+ c19iZGV2OwogCWJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIFBBR0VfU0laRSwgMCk7CiAKZGlmZiAt LWdpdCBhL2ZzL2hmc3BsdXMvd3JhcHBlci5jIGIvZnMvaGZzcGx1cy93cmFwcGVyLmMKaW5kZXgg YjUxYTYwNy4uNTU4NWEzMiAxMDA2NDQKLS0tIGEvZnMvaGZzcGx1cy93cmFwcGVyLmMKKysrIGIv ZnMvaGZzcGx1cy93cmFwcGVyLmMKQEAgLTcxLDcgKzcxLDcgQEAgaW50IGhmc3BsdXNfc3VibWl0 X2JpbyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzZWN0b3JfdCBzZWN0b3IsCiAJc2VjdG9yICY9 IH4oKGlvX3NpemUgPj4gSEZTUExVU19TRUNUT1JfU0hJRlQpIC0gMSk7CiAKIAliaW8gPSBiaW9f YWxsb2MoR0ZQX05PSU8sIDEpOwotCWJpby0+Ymlfc2VjdG9yID0gc2VjdG9yOworCWJpby0+Ymlf aXRlci5iaV9zZWN0b3IgPSBzZWN0b3I7CiAJYmlvLT5iaV9iZGV2ID0gc2ItPnNfYmRldjsKIAli aW8tPmJpX2VuZF9pbyA9IGhmc3BsdXNfZW5kX2lvX3N5bmM7CiAJYmlvLT5iaV9wcml2YXRlID0g JndhaXQ7CmRpZmYgLS1naXQgYS9mcy9qZnMvamZzX2xvZ21nci5jIGIvZnMvamZzL2pmc19sb2dt Z3IuYwppbmRleCAzNjBkMjdjLi44ZDgxMWUwIDEwMDY0NAotLS0gYS9mcy9qZnMvamZzX2xvZ21n ci5jCisrKyBiL2ZzL2pmcy9qZnNfbG9nbWdyLmMKQEAgLTE5OTgsMjAgKzE5OTgsMjAgQEAgc3Rh dGljIGludCBsYm1SZWFkKHN0cnVjdCBqZnNfbG9nICogbG9nLCBpbnQgcG4sIHN0cnVjdCBsYnVm ICoqIGJwcCkKIAogCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9GUywgMSk7CiAKLQliaW8tPmJpX3Nl Y3RvciA9IGJwLT5sX2Jsa25vIDw8IChsb2ctPmwyYnNpemUgLSA5KTsKKwliaW8tPmJpX2l0ZXIu Ymlfc2VjdG9yID0gYnAtPmxfYmxrbm8gPDwgKGxvZy0+bDJic2l6ZSAtIDkpOwogCWJpby0+Ymlf YmRldiA9IGxvZy0+YmRldjsKIAliaW8tPmJpX2lvX3ZlY1swXS5idl9wYWdlID0gYnAtPmxfcGFn ZTsKIAliaW8tPmJpX2lvX3ZlY1swXS5idl9sZW4gPSBMT0dQU0laRTsKIAliaW8tPmJpX2lvX3Zl Y1swXS5idl9vZmZzZXQgPSBicC0+bF9vZmZzZXQ7CiAKIAliaW8tPmJpX3ZjbnQgPSAxOwotCWJp by0+Ymlfc2l6ZSA9IExPR1BTSVpFOworCWJpby0+YmlfaXRlci5iaV9zaXplID0gTE9HUFNJWkU7 CiAKIAliaW8tPmJpX2VuZF9pbyA9IGxibUlPRG9uZTsKIAliaW8tPmJpX3ByaXZhdGUgPSBicDsK IAkvKmNoZWNrIGlmIGpvdXJuYWxpbmcgdG8gZGlzayBoYXMgYmVlbiBkaXNhYmxlZCovCiAJaWYg KGxvZy0+bm9faW50ZWdyaXR5KSB7Ci0JCWJpby0+Ymlfc2l6ZSA9IDA7CisJCWJpby0+YmlfaXRl ci5iaV9zaXplID0gMDsKIAkJbGJtSU9Eb25lKGJpbywgMCk7CiAJfSBlbHNlIHsKIAkJc3VibWl0 X2JpbyhSRUFEX1NZTkMsIGJpbyk7CkBAIC0yMTQ0LDIxICsyMTQ0LDIxIEBAIHN0YXRpYyB2b2lk IGxibVN0YXJ0SU8oc3RydWN0IGxidWYgKiBicCkKIAlqZnNfaW5mbygibGJtU3RhcnRJT1xuIik7 CiAKIAliaW8gPSBiaW9fYWxsb2MoR0ZQX05PRlMsIDEpOwotCWJpby0+Ymlfc2VjdG9yID0gYnAt PmxfYmxrbm8gPDwgKGxvZy0+bDJic2l6ZSAtIDkpOworCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PSBicC0+bF9ibGtubyA8PCAobG9nLT5sMmJzaXplIC0gOSk7CiAJYmlvLT5iaV9iZGV2ID0gbG9n LT5iZGV2OwogCWJpby0+YmlfaW9fdmVjWzBdLmJ2X3BhZ2UgPSBicC0+bF9wYWdlOwogCWJpby0+ YmlfaW9fdmVjWzBdLmJ2X2xlbiA9IExPR1BTSVpFOwogCWJpby0+YmlfaW9fdmVjWzBdLmJ2X29m ZnNldCA9IGJwLT5sX29mZnNldDsKIAogCWJpby0+YmlfdmNudCA9IDE7Ci0JYmlvLT5iaV9zaXpl ID0gTE9HUFNJWkU7CisJYmlvLT5iaV9pdGVyLmJpX3NpemUgPSBMT0dQU0laRTsKIAogCWJpby0+ YmlfZW5kX2lvID0gbGJtSU9Eb25lOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJwOwogCiAJLyogY2hl Y2sgaWYgam91cm5hbGluZyB0byBkaXNrIGhhcyBiZWVuIGRpc2FibGVkICovCiAJaWYgKGxvZy0+ bm9faW50ZWdyaXR5KSB7Ci0JCWJpby0+Ymlfc2l6ZSA9IDA7CisJCWJpby0+YmlfaXRlci5iaV9z aXplID0gMDsKIAkJbGJtSU9Eb25lKGJpbywgMCk7CiAJfSBlbHNlIHsKIAkJc3VibWl0X2JpbyhX UklURV9TWU5DLCBiaW8pOwpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19tZXRhcGFnZS5jIGIvZnMv amZzL2pmc19tZXRhcGFnZS5jCmluZGV4IGQxNjVjZGUuLjQ5YmE3ZmYgMTAwNjQ0Ci0tLSBhL2Zz L2pmcy9qZnNfbWV0YXBhZ2UuYworKysgYi9mcy9qZnMvamZzX21ldGFwYWdlLmMKQEAgLTQxNiw3 ICs0MTYsNyBAQCBzdGF0aWMgaW50IG1ldGFwYWdlX3dyaXRlcGFnZShzdHJ1Y3QgcGFnZSAqcGFn ZSwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICp3YmMpCiAJCQkgKiBjb3VudCBmcm9tIGhpdHRp bmcgemVybyBiZWZvcmUgd2UncmUgdGhyb3VnaAogCQkJICovCiAJCQlpbmNfaW8ocGFnZSk7Ci0J CQlpZiAoIWJpby0+Ymlfc2l6ZSkKKwkJCWlmICghYmlvLT5iaV9pdGVyLmJpX3NpemUpCiAJCQkJ Z290byBkdW1wX2JpbzsKIAkJCXN1Ym1pdF9iaW8oV1JJVEUsIGJpbyk7CiAJCQlucl91bmRlcndh eSsrOwpAQCAtNDM4LDcgKzQzOCw3IEBAIHN0YXRpYyBpbnQgbWV0YXBhZ2Vfd3JpdGVwYWdlKHN0 cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYykKIAogCQliaW8g PSBiaW9fYWxsb2MoR0ZQX05PRlMsIDEpOwogCQliaW8tPmJpX2JkZXYgPSBpbm9kZS0+aV9zYi0+ c19iZGV2OwotCQliaW8tPmJpX3NlY3RvciA9IHBibG9jayA8PCAoaW5vZGUtPmlfYmxrYml0cyAt IDkpOworCQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gcGJsb2NrIDw8IChpbm9kZS0+aV9ibGti aXRzIC0gOSk7CiAJCWJpby0+YmlfZW5kX2lvID0gbWV0YXBhZ2Vfd3JpdGVfZW5kX2lvOwogCQli aW8tPmJpX3ByaXZhdGUgPSBwYWdlOwogCkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIGludCBt ZXRhcGFnZV93cml0ZXBhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB3cml0ZWJhY2tfY29u dHJvbCAqd2JjKQogCWlmIChiaW8pIHsKIAkJaWYgKGJpb19hZGRfcGFnZShiaW8sIHBhZ2UsIGJp b19ieXRlcywgYmlvX29mZnNldCkgPCBiaW9fYnl0ZXMpCiAJCQkJZ290byBhZGRfZmFpbGVkOwot CQlpZiAoIWJpby0+Ymlfc2l6ZSkKKwkJaWYgKCFiaW8tPmJpX2l0ZXIuYmlfc2l6ZSkKIAkJCWdv dG8gZHVtcF9iaW87CiAKIAkJc3VibWl0X2JpbyhXUklURSwgYmlvKTsKQEAgLTUxNyw3ICs1MTcs OCBAQCBzdGF0aWMgaW50IG1ldGFwYWdlX3JlYWRwYWdlKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0 IHBhZ2UgKnBhZ2UpCiAKIAkJCWJpbyA9IGJpb19hbGxvYyhHRlBfTk9GUywgMSk7CiAJCQliaW8t PmJpX2JkZXYgPSBpbm9kZS0+aV9zYi0+c19iZGV2OwotCQkJYmlvLT5iaV9zZWN0b3IgPSBwYmxv Y2sgPDwgKGlub2RlLT5pX2Jsa2JpdHMgLSA5KTsKKwkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3Ig PQorCQkJCXBibG9jayA8PCAoaW5vZGUtPmlfYmxrYml0cyAtIDkpOwogCQkJYmlvLT5iaV9lbmRf aW8gPSBtZXRhcGFnZV9yZWFkX2VuZF9pbzsKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHBhZ2U7CiAJ CQlsZW4gPSB4bGVuIDw8IGlub2RlLT5pX2Jsa2JpdHM7CmRpZmYgLS1naXQgYS9mcy9sb2dmcy9k ZXZfYmRldi5jIGIvZnMvbG9nZnMvZGV2X2JkZXYuYwppbmRleCA1NTA0NzVjLi5hMWIxNjFmIDEw MDY0NAotLS0gYS9mcy9sb2dmcy9kZXZfYmRldi5jCisrKyBiL2ZzL2xvZ2ZzL2Rldl9iZGV2LmMK QEAgLTMyLDkgKzMyLDkgQEAgc3RhdGljIGludCBzeW5jX3JlcXVlc3Qoc3RydWN0IHBhZ2UgKnBh Z2UsIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGludCBydykKIAliaW9fdmVjLmJ2X2xlbiA9 IFBBR0VfU0laRTsKIAliaW9fdmVjLmJ2X29mZnNldCA9IDA7CiAJYmlvLmJpX3ZjbnQgPSAxOwot CWJpby5iaV9zaXplID0gUEFHRV9TSVpFOworCWJpby5iaV9pdGVyLmJpX3NpemUgPSBQQUdFX1NJ WkU7CiAJYmlvLmJpX2JkZXYgPSBiZGV2OwotCWJpby5iaV9zZWN0b3IgPSBwYWdlLT5pbmRleCAq IChQQUdFX1NJWkUgPj4gOSk7CisJYmlvLmJpX2l0ZXIuYmlfc2VjdG9yID0gcGFnZS0+aW5kZXgg KiAoUEFHRV9TSVpFID4+IDkpOwogCWluaXRfY29tcGxldGlvbigmY29tcGxldGUpOwogCWJpby5i aV9wcml2YXRlID0gJmNvbXBsZXRlOwogCWJpby5iaV9lbmRfaW8gPSByZXF1ZXN0X2NvbXBsZXRl OwpAQCAtMTA3LDkgKzEwNyw5IEBAIHN0YXRpYyBpbnQgX19iZGV2X3dyaXRlc2VnKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IsIHU2NCBvZnMsIHBnb2ZmX3QgaW5kZXgsCiAJCWlmIChpID49IG1heF9w YWdlcykgewogCQkJLyogQmxvY2sgbGF5ZXIgY2Fubm90IHNwbGl0IGJpb3MgOiggKi8KIAkJCWJp by0+YmlfdmNudCA9IGk7Ci0JCQliaW8tPmJpX3NpemUgPSBpICogUEFHRV9TSVpFOworCQkJYmlv LT5iaV9pdGVyLmJpX3NpemUgPSBpICogUEFHRV9TSVpFOwogCQkJYmlvLT5iaV9iZGV2ID0gc3Vw ZXItPnNfYmRldjsKLQkJCWJpby0+Ymlfc2VjdG9yID0gb2ZzID4+IDk7CisJCQliaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yID0gb2ZzID4+IDk7CiAJCQliaW8tPmJpX3ByaXZhdGUgPSBzYjsKIAkJCWJp by0+YmlfZW5kX2lvID0gd3JpdGVzZWdfZW5kX2lvOwogCQkJYXRvbWljX2luYygmc3VwZXItPnNf cGVuZGluZ193cml0ZXMpOwpAQCAtMTM0LDkgKzEzNCw5IEBAIHN0YXRpYyBpbnQgX19iZGV2X3dy aXRlc2VnKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHU2NCBvZnMsIHBnb2ZmX3QgaW5kZXgsCiAJ CXVubG9ja19wYWdlKHBhZ2UpOwogCX0KIAliaW8tPmJpX3ZjbnQgPSBucl9wYWdlczsKLQliaW8t PmJpX3NpemUgPSBucl9wYWdlcyAqIFBBR0VfU0laRTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9 IG5yX3BhZ2VzICogUEFHRV9TSVpFOwogCWJpby0+YmlfYmRldiA9IHN1cGVyLT5zX2JkZXY7Ci0J YmlvLT5iaV9zZWN0b3IgPSBvZnMgPj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gb2Zz ID4+IDk7CiAJYmlvLT5iaV9wcml2YXRlID0gc2I7CiAJYmlvLT5iaV9lbmRfaW8gPSB3cml0ZXNl Z19lbmRfaW87CiAJYXRvbWljX2luYygmc3VwZXItPnNfcGVuZGluZ193cml0ZXMpOwpAQCAtMTk5 LDkgKzE5OSw5IEBAIHN0YXRpYyBpbnQgZG9fZXJhc2Uoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwg dTY0IG9mcywgcGdvZmZfdCBpbmRleCwKIAkJaWYgKGkgPj0gbWF4X3BhZ2VzKSB7CiAJCQkvKiBC bG9jayBsYXllciBjYW5ub3Qgc3BsaXQgYmlvcyA6KCAqLwogCQkJYmlvLT5iaV92Y250ID0gaTsK LQkJCWJpby0+Ymlfc2l6ZSA9IGkgKiBQQUdFX1NJWkU7CisJCQliaW8tPmJpX2l0ZXIuYmlfc2l6 ZSA9IGkgKiBQQUdFX1NJWkU7CiAJCQliaW8tPmJpX2JkZXYgPSBzdXBlci0+c19iZGV2OwotCQkJ YmlvLT5iaV9zZWN0b3IgPSBvZnMgPj4gOTsKKwkJCWJpby0+YmlfaXRlci5iaV9zZWN0b3IgPSBv ZnMgPj4gOTsKIAkJCWJpby0+YmlfcHJpdmF0ZSA9IHNiOwogCQkJYmlvLT5iaV9lbmRfaW8gPSBl cmFzZV9lbmRfaW87CiAJCQlhdG9taWNfaW5jKCZzdXBlci0+c19wZW5kaW5nX3dyaXRlcyk7CkBA IC0yMjAsOSArMjIwLDkgQEAgc3RhdGljIGludCBkb19lcmFzZShzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnNiLCB1NjQgb2ZzLCBwZ29mZl90IGluZGV4LAogCQliaW8tPmJpX2lvX3ZlY1tpXS5idl9vZmZz ZXQgPSAwOwogCX0KIAliaW8tPmJpX3ZjbnQgPSBucl9wYWdlczsKLQliaW8tPmJpX3NpemUgPSBu cl9wYWdlcyAqIFBBR0VfU0laRTsKKwliaW8tPmJpX2l0ZXIuYmlfc2l6ZSA9IG5yX3BhZ2VzICog UEFHRV9TSVpFOwogCWJpby0+YmlfYmRldiA9IHN1cGVyLT5zX2JkZXY7Ci0JYmlvLT5iaV9zZWN0 b3IgPSBvZnMgPj4gOTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gb2ZzID4+IDk7CiAJYmlv LT5iaV9wcml2YXRlID0gc2I7CiAJYmlvLT5iaV9lbmRfaW8gPSBlcmFzZV9lbmRfaW87CiAJYXRv bWljX2luYygmc3VwZXItPnNfcGVuZGluZ193cml0ZXMpOwpkaWZmIC0tZ2l0IGEvZnMvbXBhZ2Uu YyBiL2ZzL21wYWdlLmMKaW5kZXggMGZhY2UxYy4uOTJiMTI1ZiAxMDA2NDQKLS0tIGEvZnMvbXBh Z2UuYworKysgYi9mcy9tcGFnZS5jCkBAIC05NCw3ICs5NCw3IEBAIG1wYWdlX2FsbG9jKHN0cnVj dCBibG9ja19kZXZpY2UgKmJkZXYsCiAKIAlpZiAoYmlvKSB7CiAJCWJpby0+YmlfYmRldiA9IGJk ZXY7Ci0JCWJpby0+Ymlfc2VjdG9yID0gZmlyc3Rfc2VjdG9yOworCQliaW8tPmJpX2l0ZXIuYmlf c2VjdG9yID0gZmlyc3Rfc2VjdG9yOwogCX0KIAlyZXR1cm4gYmlvOwogfQpkaWZmIC0tZ2l0IGEv ZnMvbmZzL2Jsb2NrbGF5b3V0L2Jsb2NrbGF5b3V0LmMgYi9mcy9uZnMvYmxvY2tsYXlvdXQvYmxv Y2tsYXlvdXQuYwppbmRleCBlMjQyYmJmLi5hZjczODk2IDEwMDY0NAotLS0gYS9mcy9uZnMvYmxv Y2tsYXlvdXQvYmxvY2tsYXlvdXQuYworKysgYi9mcy9uZnMvYmxvY2tsYXlvdXQvYmxvY2tsYXlv dXQuYwpAQCAtMTM0LDggKzEzNCw4IEBAIGJsX3N1Ym1pdF9iaW8oaW50IHJ3LCBzdHJ1Y3QgYmlv ICpiaW8pCiAJaWYgKGJpbykgewogCQlnZXRfcGFyYWxsZWwoYmlvLT5iaV9wcml2YXRlKTsKIAkJ ZHByaW50aygiJXMgc3VibWl0dGluZyAlcyBiaW8gJXVAJWxsdVxuIiwgX19mdW5jX18sCi0JCQly dyA9PSBSRUFEID8gInJlYWQiIDogIndyaXRlIiwKLQkJCWJpby0+Ymlfc2l6ZSwgKHVuc2lnbmVk IGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQlydyA9PSBSRUFEID8gInJlYWQiIDogIndy aXRlIiwgYmlvLT5iaV9pdGVyLmJpX3NpemUsCisJCQkodW5zaWduZWQgbG9uZyBsb25nKWJpby0+ YmlfaXRlci5iaV9zZWN0b3IpOwogCQlzdWJtaXRfYmlvKHJ3LCBiaW8pOwogCX0KIAlyZXR1cm4g TlVMTDsKQEAgLTE1Niw3ICsxNTYsOCBAQCBzdGF0aWMgc3RydWN0IGJpbyAqYmxfYWxsb2NfaW5p dF9iaW8oaW50IG5wZywgc2VjdG9yX3QgaXNlY3QsCiAJfQogCiAJaWYgKGJpbykgewotCQliaW8t PmJpX3NlY3RvciA9IGlzZWN0IC0gYmUtPmJlX2Zfb2Zmc2V0ICsgYmUtPmJlX3Zfb2Zmc2V0Owor CQliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gaXNlY3QgLSBiZS0+YmVfZl9vZmZzZXQgKworCQkJ YmUtPmJlX3Zfb2Zmc2V0OwogCQliaW8tPmJpX2JkZXYgPSBiZS0+YmVfbWRldjsKIAkJYmlvLT5i aV9lbmRfaW8gPSBlbmRfaW87CiAJCWJpby0+YmlfcHJpdmF0ZSA9IHBhcjsKQEAgLTUxOSw3ICs1 MjAsNyBAQCBibF9kb19yZWFkcGFnZV9zeW5jKHN0cnVjdCBwYWdlICpwYWdlLCBzdHJ1Y3QgcG5m c19ibG9ja19leHRlbnQgKmJlLAogCWlzZWN0ID0gKHBhZ2UtPmluZGV4IDw8IFBBR0VfQ0FDSEVf U0VDVE9SX1NISUZUKSArCiAJCShvZmZzZXQgLyBTRUNUT1JfU0laRSk7CiAKLQliaW8tPmJpX3Nl Y3RvciA9IGlzZWN0IC0gYmUtPmJlX2Zfb2Zmc2V0ICsgYmUtPmJlX3Zfb2Zmc2V0OworCWJpby0+ YmlfaXRlci5iaV9zZWN0b3IgPSBpc2VjdCAtIGJlLT5iZV9mX29mZnNldCArIGJlLT5iZV92X29m ZnNldDsKIAliaW8tPmJpX2JkZXYgPSBiZS0+YmVfbWRldjsKIAliaW8tPmJpX2VuZF9pbyA9IGJs X3JlYWRfc2luZ2xlX2VuZF9pbzsKIApkaWZmIC0tZ2l0IGEvZnMvbmlsZnMyL3NlZ2J1Zi5jIGIv ZnMvbmlsZnMyL3NlZ2J1Zi5jCmluZGV4IGRjOWE5MTMuLjg1ZGFiY2QgMTAwNjQ0Ci0tLSBhL2Zz L25pbGZzMi9zZWdidWYuYworKysgYi9mcy9uaWxmczIvc2VnYnVmLmMKQEAgLTQxNyw3ICs0MTcs OCBAQCBzdGF0aWMgc3RydWN0IGJpbyAqbmlsZnNfYWxsb2Nfc2VnX2JpbyhzdHJ1Y3QgdGhlX25p bGZzICpuaWxmcywgc2VjdG9yX3Qgc3RhcnQsCiAJfQogCWlmIChsaWtlbHkoYmlvKSkgewogCQli aW8tPmJpX2JkZXYgPSBuaWxmcy0+bnNfYmRldjsKLQkJYmlvLT5iaV9zZWN0b3IgPSBzdGFydCA8 PCAobmlsZnMtPm5zX2Jsb2Nrc2l6ZV9iaXRzIC0gOSk7CisJCWJpby0+YmlfaXRlci5iaV9zZWN0 b3IgPQorCQkJc3RhcnQgPDwgKG5pbGZzLT5uc19ibG9ja3NpemVfYml0cyAtIDkpOwogCX0KIAly ZXR1cm4gYmlvOwogfQpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvY2x1c3Rlci9oZWFydGJlYXQuYyBi L2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMKaW5kZXggNWMxYzg2NC4uZTFkMWU4MiAxMDA2 NDQKLS0tIGEvZnMvb2NmczIvY2x1c3Rlci9oZWFydGJlYXQuYworKysgYi9mcy9vY2ZzMi9jbHVz dGVyL2hlYXJ0YmVhdC5jCkBAIC00MjEsNyArNDIxLDcgQEAgc3RhdGljIHN0cnVjdCBiaW8gKm8y aGJfc2V0dXBfb25lX2JpbyhzdHJ1Y3QgbzJoYl9yZWdpb24gKnJlZywKIAl9CiAKIAkvKiBNdXN0 IHB1dCBldmVyeXRoaW5nIGluIDUxMiBieXRlIHNlY3RvcnMgZm9yIHRoZSBiaW8uLi4gKi8KLQli aW8tPmJpX3NlY3RvciA9IChyZWctPmhyX3N0YXJ0X2Jsb2NrICsgY3MpIDw8IChiaXRzIC0gOSk7 CisJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IChyZWctPmhyX3N0YXJ0X2Jsb2NrICsgY3MpIDw8 IChiaXRzIC0gOSk7CiAJYmlvLT5iaV9iZGV2ID0gcmVnLT5ocl9iZGV2OwogCWJpby0+YmlfcHJp dmF0ZSA9IHdjOwogCWJpby0+YmlfZW5kX2lvID0gbzJoYl9iaW9fZW5kX2lvOwpkaWZmIC0tZ2l0 IGEvZnMveGZzL3hmc19hb3BzLmMgYi9mcy94ZnMveGZzX2FvcHMuYwppbmRleCA1OTZlYzcxLi5i NGFkMTg2IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX2FvcHMuYworKysgYi9mcy94ZnMveGZzX2Fv cHMuYwpAQCAtNDE1LDcgKzQxNSw3IEBAIHhmc19hbGxvY19pb2VuZF9iaW8oCiAJc3RydWN0IGJp bwkJKmJpbyA9IGJpb19hbGxvYyhHRlBfTk9JTywgbnZlY3MpOwogCiAJQVNTRVJUKGJpby0+Ymlf cHJpdmF0ZSA9PSBOVUxMKTsKLQliaW8tPmJpX3NlY3RvciA9IGJoLT5iX2Jsb2NrbnIgKiAoYmgt PmJfc2l6ZSA+PiA5KTsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gYmgtPmJfYmxvY2tuciAq IChiaC0+Yl9zaXplID4+IDkpOwogCWJpby0+YmlfYmRldiA9IGJoLT5iX2JkZXY7CiAJcmV0dXJu IGJpbzsKIH0KZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfYnVmLmMgYi9mcy94ZnMveGZzX2J1Zi5j CmluZGV4IDFiMjQ3MmEuLjBhZjdmOTMgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfYnVmLmMKKysr IGIvZnMveGZzL3hmc19idWYuYwpAQCAtMTI4NSw3ICsxMjg1LDcgQEAgbmV4dF9jaHVuazoKIAog CWJpbyA9IGJpb19hbGxvYyhHRlBfTk9JTywgbnJfcGFnZXMpOwogCWJpby0+YmlfYmRldiA9IGJw LT5iX3RhcmdldC0+YnRfYmRldjsKLQliaW8tPmJpX3NlY3RvciA9IHNlY3RvcjsKKwliaW8tPmJp X2l0ZXIuYmlfc2VjdG9yID0gc2VjdG9yOwogCWJpby0+YmlfZW5kX2lvID0geGZzX2J1Zl9iaW9f ZW5kX2lvOwogCWJpby0+YmlfcHJpdmF0ZSA9IGJwOwogCkBAIC0xMzA3LDcgKzEzMDcsNyBAQCBu ZXh0X2NodW5rOgogCQl0b3RhbF9ucl9wYWdlcy0tOwogCX0KIAotCWlmIChsaWtlbHkoYmlvLT5i aV9zaXplKSkgeworCWlmIChsaWtlbHkoYmlvLT5iaV9pdGVyLmJpX3NpemUpKSB7CiAJCWlmICh4 ZnNfYnVmX2lzX3ZtYXBwZWQoYnApKSB7CiAJCQlmbHVzaF9rZXJuZWxfdm1hcF9yYW5nZShicC0+ Yl9hZGRyLAogCQkJCQkJeGZzX2J1Zl92bWFwX2xlbihicCkpOwpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9iaW8uaCBiL2luY2x1ZGUvbGludXgvYmlvLmgKaW5kZXggMTYyMDM2YS4uNWY0NDBm MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9iaW8uaAorKysgYi9pbmNsdWRlL2xpbnV4L2Jp by5oCkBAIC02MiwxOSArNjIsMTkgQEAKICAqIG9uIGhpZ2htZW0gcGFnZSB2ZWN0b3JzCiAgKi8K ICNkZWZpbmUgYmlvX2lvdmVjX2lkeChiaW8sIGlkeCkJKCYoKGJpbyktPmJpX2lvX3ZlY1soaWR4 KV0pKQotI2RlZmluZSBiaW9faW92ZWMoYmlvKQkJYmlvX2lvdmVjX2lkeCgoYmlvKSwgKGJpbykt PmJpX2lkeCkKKyNkZWZpbmUgYmlvX2lvdmVjKGJpbykJCWJpb19pb3ZlY19pZHgoKGJpbyksIChi aW8pLT5iaV9pdGVyLmJpX2lkeCkKICNkZWZpbmUgYmlvX3BhZ2UoYmlvKQkJYmlvX2lvdmVjKChi aW8pKS0+YnZfcGFnZQogI2RlZmluZSBiaW9fb2Zmc2V0KGJpbykJCWJpb19pb3ZlYygoYmlvKSkt PmJ2X29mZnNldAotI2RlZmluZSBiaW9fc2VnbWVudHMoYmlvKQkoKGJpbyktPmJpX3ZjbnQgLSAo YmlvKS0+YmlfaWR4KQotI2RlZmluZSBiaW9fc2VjdG9ycyhiaW8pCSgoYmlvKS0+Ymlfc2l6ZSA+ PiA5KQotI2RlZmluZSBiaW9fZW5kX3NlY3RvcihiaW8pCSgoYmlvKS0+Ymlfc2VjdG9yICsgYmlv X3NlY3RvcnMoKGJpbykpKQorI2RlZmluZSBiaW9fc2VnbWVudHMoYmlvKQkoKGJpbyktPmJpX3Zj bnQgLSAoYmlvKS0+YmlfaXRlci5iaV9pZHgpCisjZGVmaW5lIGJpb19zZWN0b3JzKGJpbykJKChi aW8pLT5iaV9pdGVyLmJpX3NpemUgPj4gOSkKKyNkZWZpbmUgYmlvX2VuZF9zZWN0b3IoYmlvKQko KGJpbyktPmJpX2l0ZXIuYmlfc2VjdG9yICsgYmlvX3NlY3RvcnMoKGJpbykpKQogCiBzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGludCBiaW9fY3VyX2J5dGVzKHN0cnVjdCBiaW8gKmJpbykKIHsKIAlp ZiAoYmlvLT5iaV92Y250KQogCQlyZXR1cm4gYmlvX2lvdmVjKGJpbyktPmJ2X2xlbjsKIAllbHNl IC8qIGRhdGFsZXNzIHJlcXVlc3RzIHN1Y2ggYXMgZGlzY2FyZCAqLwotCQlyZXR1cm4gYmlvLT5i aV9zaXplOworCQlyZXR1cm4gYmlvLT5iaV9pdGVyLmJpX3NpemU7CiB9CiAKIHN0YXRpYyBpbmxp bmUgdm9pZCAqYmlvX2RhdGEoc3RydWN0IGJpbyAqYmlvKQpAQCAtMTA4LDcgKzEwOCw3IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCAqYmlvX2RhdGEoc3RydWN0IGJpbyAqYmlvKQogICovCiAKICNkZWZp bmUgX19CVkVDX0VORChiaW8pCQliaW9faW92ZWNfaWR4KChiaW8pLCAoYmlvKS0+YmlfdmNudCAt IDEpCi0jZGVmaW5lIF9fQlZFQ19TVEFSVChiaW8pCWJpb19pb3ZlY19pZHgoKGJpbyksIChiaW8p LT5iaV9pZHgpCisjZGVmaW5lIF9fQlZFQ19TVEFSVChiaW8pCWJpb19pb3ZlY19pZHgoKGJpbyks IChiaW8pLT5iaV9pdGVyLmJpX2lkeCkKIAogLyogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBC SU9WRUNfUEhZU19NRVJHRUFCTEUgKi8KICNkZWZpbmUgX19CSU9WRUNfUEhZU19NRVJHRUFCTEUo dmVjMSwgdmVjMikJXApAQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCAqYmlv X2RhdGEoc3RydWN0IGJpbyAqYmlvKQogCSAgICAgaSsrKQogCiAjZGVmaW5lIGJpb19mb3JfZWFj aF9zZWdtZW50KGJ2bCwgYmlvLCBpKQkJCQlcCi0JZm9yIChpID0gKGJpbyktPmJpX2lkeDsJCQkJ CQlcCisJZm9yIChpID0gKGJpbyktPmJpX2l0ZXIuYmlfaWR4OwkJCQkJXAogCSAgICAgYnZsID0g YmlvX2lvdmVjX2lkeCgoYmlvKSwgKGkpKSwgaSA8IChiaW8pLT5iaV92Y250OwlcCiAJICAgICBp KyspCiAKQEAgLTM2NSw3ICszNjUsNyBAQCBzdGF0aWMgaW5saW5lIGNoYXIgKl9fYmlvX2ttYXBf aXJxKHN0cnVjdCBiaW8gKmJpbywgdW5zaWduZWQgc2hvcnQgaWR4LAogI2RlZmluZSBfX2Jpb19r dW5tYXBfaXJxKGJ1ZiwgZmxhZ3MpCWJ2ZWNfa3VubWFwX2lycShidWYsIGZsYWdzKQogCiAjZGVm aW5lIGJpb19rbWFwX2lycShiaW8sIGZsYWdzKSBcCi0JX19iaW9fa21hcF9pcnEoKGJpbyksIChi aW8pLT5iaV9pZHgsIChmbGFncykpCisJX19iaW9fa21hcF9pcnEoKGJpbyksIChiaW8pLT5iaV9p dGVyLmJpX2lkeCwgKGZsYWdzKSkKICNkZWZpbmUgYmlvX2t1bm1hcF9pcnEoYnVmLGZsYWdzKQlf X2Jpb19rdW5tYXBfaXJxKGJ1ZiwgZmxhZ3MpCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2Jsa190eXBlcy5oIGIvaW5jbHVkZS9saW51eC9ibGtfdHlwZXMuaAppbmRleCBmYTFhYmVi Li5kNDZlOGE2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2Jsa190eXBlcy5oCisrKyBiL2lu Y2x1ZGUvbGludXgvYmxrX3R5cGVzLmgKQEAgLTI4LDEzICsyOCwxOSBAQCBzdHJ1Y3QgYmlvX3Zl YyB7CiAJdW5zaWduZWQgaW50CWJ2X29mZnNldDsKIH07CiAKK3N0cnVjdCBidmVjX2l0ZXIgewor CXNlY3Rvcl90CQliaV9zZWN0b3I7CS8qIGRldmljZSBhZGRyZXNzIGluIDUxMiBieXRlCisJCQkJ CQkgICBzZWN0b3JzICovCisJdW5zaWduZWQgaW50CQliaV9zaXplOwkvKiByZXNpZHVhbCBJL08g Y291bnQgKi8KKworCXVuc2lnbmVkIGludAkJYmlfaWR4OwkJLyogY3VycmVudCBpbmRleCBpbnRv IGJ2bF92ZWMgKi8KK307CisKIC8qCiAgKiBtYWluIHVuaXQgb2YgSS9PIGZvciB0aGUgYmxvY2sg bGF5ZXIgYW5kIGxvd2VyIGxheWVycyAoaWUgZHJpdmVycyBhbmQKICAqIHN0YWNraW5nIGRyaXZl cnMpCiAgKi8KIHN0cnVjdCBiaW8gewotCXNlY3Rvcl90CQliaV9zZWN0b3I7CS8qIGRldmljZSBh ZGRyZXNzIGluIDUxMiBieXRlCi0JCQkJCQkgICBzZWN0b3JzICovCiAJc3RydWN0IGJpbwkJKmJp X25leHQ7CS8qIHJlcXVlc3QgcXVldWUgbGluayAqLwogCXN0cnVjdCBibG9ja19kZXZpY2UJKmJp X2JkZXY7CiAJdW5zaWduZWQgbG9uZwkJYmlfZmxhZ3M7CS8qIHN0YXR1cywgY29tbWFuZCwgZXRj ICovCkBAIC00MiwxNiArNDgsMTMgQEAgc3RydWN0IGJpbyB7CiAJCQkJCQkgKiB0b3AgYml0cyBw cmlvcml0eQogCQkJCQkJICovCiAKLQl1bnNpZ25lZCBzaG9ydAkJYmlfdmNudDsJLyogaG93IG1h bnkgYmlvX3ZlYydzICovCi0JdW5zaWduZWQgc2hvcnQJCWJpX2lkeDsJCS8qIGN1cnJlbnQgaW5k ZXggaW50byBidmxfdmVjICovCisJc3RydWN0IGJ2ZWNfaXRlcgliaV9pdGVyOwogCiAJLyogTnVt YmVyIG9mIHNlZ21lbnRzIGluIHRoaXMgQklPIGFmdGVyCiAJICogcGh5c2ljYWwgYWRkcmVzcyBj b2FsZXNjaW5nIGlzIHBlcmZvcm1lZC4KIAkgKi8KIAl1bnNpZ25lZCBpbnQJCWJpX3BoeXNfc2Vn bWVudHM7CiAKLQl1bnNpZ25lZCBpbnQJCWJpX3NpemU7CS8qIHJlc2lkdWFsIEkvTyBjb3VudCAq LwotCiAJLyoKIAkgKiBUbyBrZWVwIHRyYWNrIG9mIHRoZSBtYXggc2VnbWVudCBzaXplLCB3ZSBh Y2NvdW50IGZvciB0aGUKIAkgKiBzaXplcyBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgbWVyZ2VhYmxl IHNlZ21lbnRzIGluIHRoaXMgYmlvLgpAQCAtNzQsMTEgKzc3LDEzIEBAIHN0cnVjdCBiaW8gewog CXN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQgKmJpX2ludGVncml0eTsgIC8qIGRhdGEgaW50 ZWdyaXR5ICovCiAjZW5kaWYKIAorCXVuc2lnbmVkIHNob3J0CQliaV92Y250OwkvKiBob3cgbWFu eSBiaW9fdmVjJ3MgKi8KKwogCS8qCiAJICogRXZlcnl0aGluZyBzdGFydGluZyB3aXRoIGJpX21h eF92ZWNzIHdpbGwgYmUgcHJlc2VydmVkIGJ5IGJpb19yZXNldCgpCiAJICovCiAKLQl1bnNpZ25l ZCBpbnQJCWJpX21heF92ZWNzOwkvKiBtYXggYnZsX3ZlY3Mgd2UgY2FuIGhvbGQgKi8KKwl1bnNp Z25lZCBzaG9ydAkJYmlfbWF4X3ZlY3M7CS8qIG1heCBidmxfdmVjcyB3ZSBjYW4gaG9sZCAqLwog CiAJYXRvbWljX3QJCWJpX2NudDsJCS8qIHBpbiBjb3VudCAqLwogCmRpZmYgLS1naXQgYS9pbmNs dWRlL3RyYWNlL2V2ZW50cy9iY2FjaGUuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2JjYWNoZS5o CmluZGV4IDVlYmRhOTcuLjViNjQ3Y2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdHJhY2UvZXZlbnRz L2JjYWNoZS5oCisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2JjYWNoZS5oCkBAIC0yNiwxMCAr MjYsMTAgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhiY2FjaGVfcmVxdWVzdCwKIAkJX19lbnRyeS0+ ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRfZGV2OwogCQlfX2VudHJ5LT5vcmlnX21ham9yCT0gcy0+ ZC0+ZGlzay0+bWFqb3I7CiAJCV9fZW50cnktPm9yaWdfbWlub3IJPSBzLT5kLT5kaXNrLT5maXJz dF9taW5vcjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+Ymlfc2VjdG9yOwotCQlfX2VudHJ5 LT5vcmlnX3NlY3Rvcgk9IGJpby0+Ymlfc2VjdG9yIC0gMTY7Ci0JCV9fZW50cnktPm5yX3NlY3Rv cgk9IGJpby0+Ymlfc2l6ZSA+PiA5OwotCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJp by0+YmlfcncsIGJpby0+Ymlfc2l6ZSk7CisJCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yOworCQlfX2VudHJ5LT5vcmlnX3NlY3Rvcgk9IGJpby0+YmlfaXRlci5iaV9z ZWN0b3IgLSAxNjsKKwkJX19lbnRyeS0+bnJfc2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NpemUg Pj4gOTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJp X2l0ZXIuYmlfc2l6ZSk7CiAJKSwKIAogCVRQX3ByaW50aygiJWQsJWQgJXMgJWxsdSArICV1IChm cm9tICVkLCVkIEAgJWxsdSkiLApAQCAtMTAxLDkgKzEwMSw5IEBAIERFQ0xBUkVfRVZFTlRfQ0xB U1MoYmNhY2hlX2JpbywKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlv LT5iaV9iZGV2LT5iZF9kZXY7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsK LQkJX19lbnRyeS0+bnJfc2VjdG9yCT0gYmlvLT5iaV9zaXplID4+IDk7Ci0JCWJsa19maWxsX3J3 YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9zaXplKTsKKwkJX19lbnRyeS0+ c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CisJCV9fZW50cnktPm5yX3NlY3Rvcgk9 IGJpby0+YmlfaXRlci5iaV9zaXplID4+IDk7CisJCWJsa19maWxsX3J3YnMoX19lbnRyeS0+cndi cywgYmlvLT5iaV9ydywgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwogCSksCiAKIAlUUF9wcmludGso IiVkLCVkICAlcyAlbGx1ICsgJXUiLApAQCAtMTM2LDkgKzEzNiw5IEBAIFRSQUNFX0VWRU5UKGJj YWNoZV9yZWFkLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50cnktPmRldgkJPSBiaW8tPmJp X2JkZXYtPmJkX2RldjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+Ymlfc2VjdG9yOwotCQlf X2VudHJ5LT5ucl9zZWN0b3IJPSBiaW8tPmJpX3NpemUgPj4gOTsKLQkJYmxrX2ZpbGxfcndicyhf X2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUpOworCQlfX2VudHJ5LT5zZWN0 b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+bnJfc2VjdG9yCT0gYmlv LT5iaV9pdGVyLmJpX3NpemUgPj4gOTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBi aW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCV9fZW50cnktPmNhY2hlX2hpdCA9 IGhpdDsKIAkJX19lbnRyeS0+YnlwYXNzID0gYnlwYXNzOwogCSksCkBAIC0xNjQsOSArMTY0LDkg QEAgVFJBQ0VfRVZFTlQoYmNhY2hlX3dyaXRlLAogCiAJVFBfZmFzdF9hc3NpZ24oCiAJCV9fZW50 cnktPmRldgkJPSBiaW8tPmJpX2JkZXYtPmJkX2RldjsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJp by0+Ymlfc2VjdG9yOwotCQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBiaW8tPmJpX3NpemUgPj4gOTsK LQkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUp OworCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9pdGVyLmJpX3NlY3RvcjsKKwkJX19lbnRy eS0+bnJfc2VjdG9yCT0gYmlvLT5iaV9pdGVyLmJpX3NpemUgPj4gOTsKKwkJYmxrX2ZpbGxfcndi cyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCV9f ZW50cnktPndyaXRlYmFjayA9IHdyaXRlYmFjazsKIAkJX19lbnRyeS0+YnlwYXNzID0gYnlwYXNz OwogCSksCmRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oIGIvaW5jbHVk ZS90cmFjZS9ldmVudHMvYmxvY2suaAppbmRleCA2MGFlN2MzLi5mYmY5YzVjIDEwMDY0NAotLS0g YS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9ibG9jay5oCisrKyBiL2luY2x1ZGUvdHJhY2UvZXZlbnRz L2Jsb2NrLmgKQEAgLTI0Myw5ICsyNDMsOSBAQCBUUkFDRV9FVkVOVChibG9ja19iaW9fYm91bmNl LAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlvLT5iaV9iZGV2ID8KIAkJ CQkJICBiaW8tPmJpX2JkZXYtPmJkX2RldiA6IDA7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8t PmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7 CiAJCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJpbyk7Ci0JCWJsa19maWxsX3J3 YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9zaXplKTsKKwkJYmxrX2ZpbGxf cndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJ CW1lbWNweShfX2VudHJ5LT5jb21tLCBjdXJyZW50LT5jb21tLCBUQVNLX0NPTU1fTEVOKTsKIAkp LAogCkBAIC0yODAsMTAgKzI4MCwxMCBAQCBUUkFDRV9FVkVOVChibG9ja19iaW9fY29tcGxldGUs CiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRf ZGV2OwotCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9zZWN0b3I7CisJCV9fZW50cnktPnNl Y3RvcgkJPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBi aW9fc2VjdG9ycyhiaW8pOwogCQlfX2VudHJ5LT5lcnJvcgkJPSBlcnJvcjsKLQkJYmxrX2ZpbGxf cndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX3NpemUpOworCQlibGtfZmls bF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsK IAkpLAogCiAJVFBfcHJpbnRrKCIlZCwlZCAlcyAlbGx1ICsgJXUgWyVkXSIsCkBAIC0zMDgsOSAr MzA4LDkgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19iaW9fbWVyZ2UsCiAKIAlUUF9mYXN0 X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+YmRfZGV2OwotCQlfX2Vu dHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9zZWN0b3I7CisJCV9fZW50cnktPnNlY3RvcgkJPSBiaW8t PmJpX2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LT5ucl9zZWN0b3IJPSBiaW9fc2VjdG9ycyhi aW8pOwotCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+Ymlf c2l6ZSk7CisJCWJsa19maWxsX3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5i aV9pdGVyLmJpX3NpemUpOwogCQltZW1jcHkoX19lbnRyeS0+Y29tbSwgY3VycmVudC0+Y29tbSwg VEFTS19DT01NX0xFTik7CiAJKSwKIApAQCAtMzc1LDkgKzM3NSw5IEBAIFRSQUNFX0VWRU5UKGJs b2NrX2Jpb19xdWV1ZSwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5LT5kZXYJCT0gYmlv LT5iaV9iZGV2LT5iZF9kZXY7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsK KwkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7CiAJCV9fZW50cnkt Pm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJpbyk7Ci0JCWJsa19maWxsX3J3YnMoX19lbnRyeS0+ cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9zaXplKTsKKwkJYmxrX2ZpbGxfcndicyhfX2VudHJ5 LT5yd2JzLCBiaW8tPmJpX3J3LCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSk7CiAJCW1lbWNweShfX2Vu dHJ5LT5jb21tLCBjdXJyZW50LT5jb21tLCBUQVNLX0NPTU1fTEVOKTsKIAkpLAogCkBAIC00MDMs NyArNDAzLDcgQEAgREVDTEFSRV9FVkVOVF9DTEFTUyhibG9ja19nZXRfcnEsCiAKIAlUUF9mYXN0 X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpbyA/IGJpby0+YmlfYmRldi0+YmRfZGV2IDog MDsKLQkJX19lbnRyeS0+c2VjdG9yCQk9IGJpbyA/IGJpby0+Ymlfc2VjdG9yIDogMDsKKwkJX19l bnRyeS0+c2VjdG9yCQk9IGJpbyA/IGJpby0+YmlfaXRlci5iaV9zZWN0b3IgOiAwOwogCQlfX2Vu dHJ5LT5ucl9zZWN0b3IJPSBiaW8gPyBiaW9fc2VjdG9ycyhiaW8pIDogMDsKIAkJYmxrX2ZpbGxf cndicyhfX2VudHJ5LT5yd2JzLAogCQkJICAgICAgYmlvID8gYmlvLT5iaV9ydyA6IDAsIF9fZW50 cnktPm5yX3NlY3Rvcik7CkBAIC01MzgsOSArNTM4LDkgQEAgVFJBQ0VfRVZFTlQoYmxvY2tfc3Bs aXQsCiAKIAlUUF9mYXN0X2Fzc2lnbigKIAkJX19lbnRyeS0+ZGV2CQk9IGJpby0+YmlfYmRldi0+ YmRfZGV2OwotCQlfX2VudHJ5LT5zZWN0b3IJCT0gYmlvLT5iaV9zZWN0b3I7CisJCV9fZW50cnkt PnNlY3RvcgkJPSBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9yOwogCQlfX2VudHJ5LT5uZXdfc2VjdG9y CT0gbmV3X3NlY3RvcjsKLQkJYmxrX2ZpbGxfcndicyhfX2VudHJ5LT5yd2JzLCBiaW8tPmJpX3J3 LCBiaW8tPmJpX3NpemUpOworCQlibGtfZmlsbF9yd2JzKF9fZW50cnktPnJ3YnMsIGJpby0+Ymlf cncsIGJpby0+YmlfaXRlci5iaV9zaXplKTsKIAkJbWVtY3B5KF9fZW50cnktPmNvbW0sIGN1cnJl bnQtPmNvbW0sIFRBU0tfQ09NTV9MRU4pOwogCSksCiAKQEAgLTU3OSwxMSArNTc5LDExIEBAIFRS QUNFX0VWRU5UKGJsb2NrX2Jpb19yZW1hcCwKIAogCVRQX2Zhc3RfYXNzaWduKAogCQlfX2VudHJ5 LT5kZXYJCT0gYmlvLT5iaV9iZGV2LT5iZF9kZXY7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8t PmJpX3NlY3RvcjsKKwkJX19lbnRyeS0+c2VjdG9yCQk9IGJpby0+YmlfaXRlci5iaV9zZWN0b3I7 CiAJCV9fZW50cnktPm5yX3NlY3Rvcgk9IGJpb19zZWN0b3JzKGJpbyk7CiAJCV9fZW50cnktPm9s ZF9kZXYJPSBkZXY7CiAJCV9fZW50cnktPm9sZF9zZWN0b3IJPSBmcm9tOwotCQlibGtfZmlsbF9y d2JzKF9fZW50cnktPnJ3YnMsIGJpby0+YmlfcncsIGJpby0+Ymlfc2l6ZSk7CisJCWJsa19maWxs X3J3YnMoX19lbnRyeS0+cndicywgYmlvLT5iaV9ydywgYmlvLT5iaV9pdGVyLmJpX3NpemUpOwog CSksCiAKIAlUUF9wcmludGsoIiVkLCVkICVzICVsbHUgKyAldSA8LSAoJWQsJWQpICVsbHUiLApk aWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFjZS9ldmVudHMvZjJmcy5oIGIvaW5jbHVkZS90cmFjZS9l dmVudHMvZjJmcy5oCmluZGV4IDUyYWU1NDguLmE5NTMxYWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dHJhY2UvZXZlbnRzL2YyZnMuaAorKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mMmZzLmgKQEAg LTYxMSw4ICs2MTEsOCBAQCBUUkFDRV9FVkVOVChmMmZzX2RvX3N1Ym1pdF9iaW8sCiAJCV9fZW50 cnktPmRldgkJPSBzYi0+c19kZXY7CiAJCV9fZW50cnktPmJ0eXBlCQk9IGJ0eXBlOwogCQlfX2Vu dHJ5LT5zeW5jCQk9IHN5bmM7Ci0JCV9fZW50cnktPnNlY3RvcgkJPSBiaW8tPmJpX3NlY3RvcjsK LQkJX19lbnRyeS0+c2l6ZQkJPSBiaW8tPmJpX3NpemU7CisJCV9fZW50cnktPnNlY3RvcgkJPSBi aW8tPmJpX2l0ZXIuYmlfc2VjdG9yOworCQlfX2VudHJ5LT5zaXplCQk9IGJpby0+YmlfaXRlci5i aV9zaXplOwogCSksCiAKIAlUUF9wcmludGsoImRldiA9ICglZCwlZCksIHR5cGUgPSAlcywgaW8g PSAlcywgc2VjdG9yID0gJWxsZCwgc2l6ZSA9ICV1IiwKZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3dl ci9ibG9ja19pby5jIGIva2VybmVsL3Bvd2VyL2Jsb2NrX2lvLmMKaW5kZXggZDA5ZGQxMC4uOWE1 OGJjMiAxMDA2NDQKLS0tIGEva2VybmVsL3Bvd2VyL2Jsb2NrX2lvLmMKKysrIGIva2VybmVsL3Bv d2VyL2Jsb2NrX2lvLmMKQEAgLTMyLDcgKzMyLDcgQEAgc3RhdGljIGludCBzdWJtaXQoaW50IHJ3 LCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzZWN0b3JfdCBzZWN0b3IsCiAJc3RydWN0IGJp byAqYmlvOwogCiAJYmlvID0gYmlvX2FsbG9jKF9fR0ZQX1dBSVQgfCBfX0dGUF9ISUdILCAxKTsK LQliaW8tPmJpX3NlY3RvciA9IHNlY3RvcjsKKwliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yID0gc2Vj dG9yOwogCWJpby0+YmlfYmRldiA9IGJkZXY7CiAJYmlvLT5iaV9lbmRfaW8gPSBlbmRfc3dhcF9i aW9fcmVhZDsKIApkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL2Jsa3RyYWNlLmMgYi9rZXJuZWwv dHJhY2UvYmxrdHJhY2UuYwppbmRleCBiOGI4NTYwLi4yODE0YTNlIDEwMDY0NAotLS0gYS9rZXJu ZWwvdHJhY2UvYmxrdHJhY2UuYworKysgYi9rZXJuZWwvdHJhY2UvYmxrdHJhY2UuYwpAQCAtNzY0 LDggKzc2NCw4IEBAIHN0YXRpYyB2b2lkIGJsa19hZGRfdHJhY2VfYmlvKHN0cnVjdCByZXF1ZXN0 X3F1ZXVlICpxLCBzdHJ1Y3QgYmlvICpiaW8sCiAJaWYgKCFlcnJvciAmJiAhYmlvX2ZsYWdnZWQo YmlvLCBCSU9fVVBUT0RBVEUpKQogCQllcnJvciA9IEVJTzsKIAotCV9fYmxrX2FkZF90cmFjZShi dCwgYmlvLT5iaV9zZWN0b3IsIGJpby0+Ymlfc2l6ZSwgYmlvLT5iaV9ydywgd2hhdCwKLQkJCWVy cm9yLCAwLCBOVUxMKTsKKwlfX2Jsa19hZGRfdHJhY2UoYnQsIGJpby0+YmlfaXRlci5iaV9zZWN0 b3IsIGJpby0+YmlfaXRlci5iaV9zaXplLAorCQkJYmlvLT5iaV9ydywgd2hhdCwgZXJyb3IsIDAs IE5VTEwpOwogfQogCiBzdGF0aWMgdm9pZCBibGtfYWRkX3RyYWNlX2Jpb19ib3VuY2Uodm9pZCAq aWdub3JlLApAQCAtODY4LDggKzg2OCw5IEBAIHN0YXRpYyB2b2lkIGJsa19hZGRfdHJhY2Vfc3Bs aXQodm9pZCAqaWdub3JlLAogCWlmIChidCkgewogCQlfX2JlNjQgcnBkdSA9IGNwdV90b19iZTY0 KHBkdSk7CiAKLQkJX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX3NlY3RvciwgYmlvLT5iaV9z aXplLCBiaW8tPmJpX3J3LAotCQkJCUJMS19UQV9TUExJVCwgIWJpb19mbGFnZ2VkKGJpbywgQklP X1VQVE9EQVRFKSwKKwkJX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX2l0ZXIuYmlfc2VjdG9y LAorCQkJCWJpby0+YmlfaXRlci5iaV9zaXplLCBiaW8tPmJpX3J3LCBCTEtfVEFfU1BMSVQsCisJ CQkJIWJpb19mbGFnZ2VkKGJpbywgQklPX1VQVE9EQVRFKSwKIAkJCQlzaXplb2YocnBkdSksICZy cGR1KTsKIAl9CiB9CkBAIC05MDEsOSArOTAyLDkgQEAgc3RhdGljIHZvaWQgYmxrX2FkZF90cmFj ZV9iaW9fcmVtYXAodm9pZCAqaWdub3JlLAogCXIuZGV2aWNlX3RvICAgPSBjcHVfdG9fYmUzMihi aW8tPmJpX2JkZXYtPmJkX2Rldik7CiAJci5zZWN0b3JfZnJvbSA9IGNwdV90b19iZTY0KGZyb20p OwogCi0JX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX3NlY3RvciwgYmlvLT5iaV9zaXplLCBi aW8tPmJpX3J3LAotCQkJQkxLX1RBX1JFTUFQLCAhYmlvX2ZsYWdnZWQoYmlvLCBCSU9fVVBUT0RB VEUpLAotCQkJc2l6ZW9mKHIpLCAmcik7CisJX19ibGtfYWRkX3RyYWNlKGJ0LCBiaW8tPmJpX2l0 ZXIuYmlfc2VjdG9yLCBiaW8tPmJpX2l0ZXIuYmlfc2l6ZSwKKwkJCWJpby0+YmlfcncsIEJMS19U QV9SRU1BUCwKKwkJCSFiaW9fZmxhZ2dlZChiaW8sIEJJT19VUFRPREFURSksIHNpemVvZihyKSwg JnIpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL21tL3BhZ2VfaW8uYyBiL21tL3BhZ2VfaW8uYwpp bmRleCBiYTA1YjY0Li44YjE0ZWYyIDEwMDY0NAotLS0gYS9tbS9wYWdlX2lvLmMKKysrIGIvbW0v cGFnZV9pby5jCkBAIC0zMSwxMyArMzEsMTMgQEAgc3RhdGljIHN0cnVjdCBiaW8gKmdldF9zd2Fw X2JpbyhnZnBfdCBnZnBfZmxhZ3MsCiAKIAliaW8gPSBiaW9fYWxsb2MoZ2ZwX2ZsYWdzLCAxKTsK IAlpZiAoYmlvKSB7Ci0JCWJpby0+Ymlfc2VjdG9yID0gbWFwX3N3YXBfcGFnZShwYWdlLCAmYmlv LT5iaV9iZGV2KTsKLQkJYmlvLT5iaV9zZWN0b3IgPDw9IFBBR0VfU0hJRlQgLSA5OworCQliaW8t PmJpX2l0ZXIuYmlfc2VjdG9yID0gbWFwX3N3YXBfcGFnZShwYWdlLCAmYmlvLT5iaV9iZGV2KTsK KwkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA8PD0gUEFHRV9TSElGVCAtIDk7CiAJCWJpby0+Ymlf aW9fdmVjWzBdLmJ2X3BhZ2UgPSBwYWdlOwogCQliaW8tPmJpX2lvX3ZlY1swXS5idl9sZW4gPSBQ QUdFX1NJWkU7CiAJCWJpby0+YmlfaW9fdmVjWzBdLmJ2X29mZnNldCA9IDA7CiAJCWJpby0+Ymlf dmNudCA9IDE7Ci0JCWJpby0+Ymlfc2l6ZSA9IFBBR0VfU0laRTsKKwkJYmlvLT5iaV9pdGVyLmJp X3NpemUgPSBQQUdFX1NJWkU7CiAJCWJpby0+YmlfZW5kX2lvID0gZW5kX2lvOwogCX0KIAlyZXR1 cm4gYmlvOwpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIGVuZF9zd2FwX2Jpb193cml0ZShzdHJ1Y3Qg YmlvICpiaW8sIGludCBlcnIpCiAJCXByaW50ayhLRVJOX0FMRVJUICJXcml0ZS1lcnJvciBvbiBz d2FwLWRldmljZSAoJXU6JXU6JUx1KVxuIiwKIAkJCQlpbWFqb3IoYmlvLT5iaV9iZGV2LT5iZF9p bm9kZSksCiAJCQkJaW1pbm9yKGJpby0+YmlfYmRldi0+YmRfaW5vZGUpLAotCQkJCSh1bnNpZ25l ZCBsb25nIGxvbmcpYmlvLT5iaV9zZWN0b3IpOworCQkJCSh1bnNpZ25lZCBsb25nIGxvbmcpYmlv LT5iaV9pdGVyLmJpX3NlY3Rvcik7CiAJCUNsZWFyUGFnZVJlY2xhaW0ocGFnZSk7CiAJfQogCWVu ZF9wYWdlX3dyaXRlYmFjayhwYWdlKTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBlbmRfc3dhcF9i aW9fcmVhZChzdHJ1Y3QgYmlvICpiaW8sIGludCBlcnIpCiAJCXByaW50ayhLRVJOX0FMRVJUICJS ZWFkLWVycm9yIG9uIHN3YXAtZGV2aWNlICgldToldTolTHUpXG4iLAogCQkJCWltYWpvcihiaW8t PmJpX2JkZXYtPmJkX2lub2RlKSwKIAkJCQlpbWlub3IoYmlvLT5iaV9iZGV2LT5iZF9pbm9kZSks Ci0JCQkJKHVuc2lnbmVkIGxvbmcgbG9uZyliaW8tPmJpX3NlY3Rvcik7CisJCQkJKHVuc2lnbmVk IGxvbmcgbG9uZyliaW8tPmJpX2l0ZXIuYmlfc2VjdG9yKTsKIAkJZ290byBvdXQ7CiAJfQogCi0t IAoxLjguNC5yYzEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCnhmcyBtYWlsaW5nIGxpc3QKeGZzQG9zcy5zZ2kuY29tCmh0dHA6Ly9vc3Muc2dpLmNvbS9t YWlsbWFuL2xpc3RpbmZvL3hmcwo=