From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Bynoe, Ronald J" Subject: Re: [PATCH v2] scsi/fcoe: convert to kworker Date: Fri, 1 Jul 2016 19:09:00 +0000 Message-ID: <1467400139.3937.33.camel@intel.com> References: <1457710143-29182-1-git-send-email-bigeasy@linutronix.de> <1457710143-29182-2-git-send-email-bigeasy@linutronix.de> <20160311161704.GA5083@infradead.org> <56E2F30F.5030108@linutronix.de> <20160315081940.GB9136@infradead.org> <20160412151654.GB20685@linutronix.de> <20160610103812.ojgzop6qdv3mos5d@c203.arch.suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160610103812.ojgzop6qdv3mos5d-3LAbnSA0sDC4fIQPS+WK3rNAH6kLmebB@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: fcoe-devel-bounces-s9riP+hp16TNLxjTenLetw@public.gmane.org Sender: "fcoe-devel" To: "jthumshirn-l3A5Bk7waGM@public.gmane.org" , "bigeasy-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org" Cc: "jejb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org" , "linux-scsi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "martin.petersen-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org" , "hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org" , "rt-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org" , "fcoe-devel-s9riP+hp16TNLxjTenLetw@public.gmane.org" List-Id: linux-scsi@vger.kernel.org DQoNCk9uIEZyaSwgMjAxNi0wNi0xMCBhdCAxMjozOCArMDIwMCwgSm9oYW5uZXMgVGh1bXNoaXJu IHdyb3RlOg0KDQpPbiBUdWUsIEFwciAxMiwgMjAxNiBhdCAwNToxNjo1NFBNICswMjAwLCBTZWJh c3RpYW4gQW5kcnplaiBTaWV3aW9yIHdyb3RlOg0KDQoNClRoZSBkcml2ZXIgY3JlYXRlcyBpdHMg b3duIHBlci1DUFUgdGhyZWFkcyB3aGljaCBhcmUgdXBkYXRlZCBiYXNlZCBvbg0KQ1BVIGhvdHBs dWcgZXZlbnRzLiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBrd29ya2VycyBhbmQgcmVtb3Zl IHNvbWUNCm9mIHRoZSBrdGhyZWFkIGluZnJhc3RydWN1cmUuDQoNClRoZSBjb2RlIGNoZWNrZWQg LT50aHJlYWQgdG8gZGVjaWRlIGlmIHRoZXJlIGlzIGFuIGFjdGl2ZSBwZXItQ1BVDQp0aHJlYWQu IEJ5IHVzaW5nIHRoZSBrd29ya2VyIGluZnJhc3RydWN0dXJlIHRoaXMgaXMgbm8gbG9uZ2VyIHBv c3NpYmxlIChvcg0KcmVxdWlyZWQpLiBUaGUgdGhyZWFkIHBvaW50ZXIgaXMgc2F2ZWQgaW4gYGt0 aHJlYWQnIGluc3RlYWQgb2YgYHRocmVhZCcgc28NCmFueXRoaW5nIHRyeWluZyB0byB1c2UgdGhy ZWFkIGlzIGNhdWdodCBieSB0aGUgY29tcGlsZXIuIEN1cnJlbnRseSBvbmx5IHRoZQ0KYm54MmZj IGRyaXZlciBpcyB1c2luZyBzdHJ1Y3QgZmNvZV9wZXJjcHVfcyBhbmQgdGhlIGt0aHJlYWQgbWVt YmVyLg0KDQpBZnRlciBhIENQVSB3ZW50IG9mZmxpbmUsIHdlIG1heSBzdGlsbCBlbnF1ZXVlIGl0 ZW1zIG9uIHRoZSAib2ZmbGluZSINCkNQVS4gVGhpcyBpc24ndCBtdWNoIG9mIGEgcHJvYmxlbS4g VGhlIHdvcmsgd2lsbCBiZSBkb25lIG9uIGEgcmFuZG9tDQpDUFUuIFRoZSBhbGxvY2F0ZWQgY3Jj X2VvZl9wYWdlIHBhZ2Ugd29uJ3QgYmUgY2xlYW5lZCB1cC4gSXQgaXMgcHJvYmFibHkNCmV4cGVj dGVkIHRoYXQgdGhlIENQVSBjb21lcyB1cCBhdCBzb21lIHBvaW50IHNvIGl0IHNob3VsZCBub3Qg YmUgYQ0KcHJvYmxlbS4gVGhlIGNyY19lb2ZfcGFnZSBtZW1vcnkgaXMgcmVsZWFzZWQgb2YgY291 cnNlIG9uY2UgdGhlIG1vZHVsZSBpcw0KcmVtb3ZlZC4NCg0KVGhpcyBwYXRjaCB3YXMgb25seSBj b21waWxlLXRlc3RlZCBkdWUgdG8gLUVOT0RFVi4NCg0KQ2M6IFZhc3UgRGV2IDx2YXN1LmRldkBp bnRlbC5jb208bWFpbHRvOnZhc3UuZGV2QGludGVsLmNvbT4+DQpDYzogIkphbWVzIEUuSi4gQm90 dG9tbGV5IiA8amVqYkBsaW51eC52bmV0LmlibS5jb208bWFpbHRvOmplamJAbGludXgudm5ldC5p Ym0uY29tPj4NCkNjOiAiTWFydGluIEsuIFBldGVyc2VuIiA8bWFydGluLnBldGVyc2VuQG9yYWNs ZS5jb208bWFpbHRvOm1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPj4NCkNjOiBDaHJpc3RvcGgg SGVsbHdpZyA8aGNoQGxzdC5kZTxtYWlsdG86aGNoQGxzdC5kZT4+DQpDYzogZmNvZS1kZXZlbEBv cGVuLWZjb2Uub3JnPG1haWx0bzpmY29lLWRldmVsQG9wZW4tZmNvZS5vcmc+DQpDYzogbGludXgt c2NzaUB2Z2VyLmtlcm5lbC5vcmc8bWFpbHRvOmxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnPg0K U2lnbmVkLW9mZi1ieTogU2ViYXN0aWFuIEFuZHJ6ZWogU2lld2lvciA8YmlnZWFzeUBsaW51dHJv bml4LmRlPG1haWx0bzpiaWdlYXN5QGxpbnV0cm9uaXguZGU+Pg0KDQoNCg0KVGVzdGVkIGluIGEg Qm9vdCBmcm9tIEZDb0Ugc2NlbmFyaW8gdXNpbmcgYSBCQ001Nzg0MC4NCg0KVGVzdGVkLWJ5OiBK b2hhbm5lcyBUaHVtc2hpcm4gPGp0aHVtc2hpcm5Ac3VzZS5kZTxtYWlsdG86anRodW1zaGlybkBz dXNlLmRlPj4NClJldmlld2VkLWJ5OiBKb2hhbm5lcyBUaHVtc2hpcm4gPGp0aHVtc2hpcm5Ac3Vz ZS5kZT4NCg0KDQpUZXN0ZWQtYnk6IFJvbmFsZCBCeW5vZSA8cm9uYWxkLmouYnlub2VAaW50ZWwu Y29tPg0KDQoNCg0KDQotLS0NCnYx4oCmdjI6IHVzZSBrd29ya2VyIGluc3RlYWQgb2Ygc21idGhy ZWFkIGFzIHBlciBoY2gNCg0KSWYgeW91IHdhbnQgdGhpcyBJIHdvdWxkIHRoZSBzYW1lIGZvciB0 aGUgdHdvIGJueCBkcml2ZXJzLg0KDQogZHJpdmVycy9zY3NpL2JueDJmYy9ibngyZmNfZmNvZS5j IHwgICA4ICstDQogZHJpdmVycy9zY3NpL2Zjb2UvZmNvZS5jICAgICAgICAgIHwgMjc2ICsrKyst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogaW5jbHVkZS9zY3NpL2xpYmZjb2Uu aCAgICAgICAgICAgIHwgICA2ICstDQogMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCsp LCAyNTYgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYm54MmZjL2Ju eDJmY19mY29lLmMgYi9kcml2ZXJzL3Njc2kvYm54MmZjL2JueDJmY19mY29lLmMNCmluZGV4IGQ3 MDI5ZWE1ZDMxOS4uY2ZiMWI1YjQwZDZjIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9zY3NpL2JueDJm Yy9ibngyZmNfZmNvZS5jDQorKysgYi9kcml2ZXJzL3Njc2kvYm54MmZjL2JueDJmY19mY29lLmMN CkBAIC00NjYsNyArNDY2LDcgQEAgc3RhdGljIGludCBibngyZmNfcmN2KHN0cnVjdCBza19idWZm ICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsDQoNCiAgICAgICAgX19za2JfcXVldWVfdGFp bCgmYmctPmZjb2VfcnhfbGlzdCwgc2tiKTsNCiAgICAgICAgaWYgKGJnLT5mY29lX3J4X2xpc3Qu cWxlbiA9PSAxKQ0KLSAgICAgICAgICAgICAgIHdha2VfdXBfcHJvY2VzcyhiZy0+dGhyZWFkKTsN CisgICAgICAgICAgICAgICB3YWtlX3VwX3Byb2Nlc3MoYmctPmt0aHJlYWQpOw0KDQogICAgICAg IHNwaW5fdW5sb2NrKCZiZy0+ZmNvZV9yeF9saXN0LmxvY2spOw0KDQpAQCAtMjY2Myw3ICsyNjYz LDcgQEAgc3RhdGljIGludCBfX2luaXQgYm54MmZjX21vZF9pbml0KHZvaWQpDQogICAgICAgIH0N CiAgICAgICAgd2FrZV91cF9wcm9jZXNzKGwyX3RocmVhZCk7DQogICAgICAgIHNwaW5fbG9ja19i aCgmYmctPmZjb2VfcnhfbGlzdC5sb2NrKTsNCi0gICAgICAgYmctPnRocmVhZCA9IGwyX3RocmVh ZDsNCisgICAgICAgYmctPmt0aHJlYWQgPSBsMl90aHJlYWQ7DQogICAgICAgIHNwaW5fdW5sb2Nr X2JoKCZiZy0+ZmNvZV9yeF9saXN0LmxvY2spOw0KDQogICAgICAgIGZvcl9lYWNoX3Bvc3NpYmxl X2NwdShjcHUpIHsNCkBAIC0yNzM2LDggKzI3MzYsOCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgYm54 MmZjX21vZF9leGl0KHZvaWQpDQogICAgICAgIC8qIERlc3Ryb3kgZ2xvYmFsIHRocmVhZCAqLw0K ICAgICAgICBiZyA9ICZibngyZmNfZ2xvYmFsOw0KICAgICAgICBzcGluX2xvY2tfYmgoJmJnLT5m Y29lX3J4X2xpc3QubG9jayk7DQotICAgICAgIGwyX3RocmVhZCA9IGJnLT50aHJlYWQ7DQotICAg ICAgIGJnLT50aHJlYWQgPSBOVUxMOw0KKyAgICAgICBsMl90aHJlYWQgPSBiZy0+a3RocmVhZDsN CisgICAgICAgYmctPmt0aHJlYWQgPSBOVUxMOw0KICAgICAgICB3aGlsZSAoKHNrYiA9IF9fc2ti X2RlcXVldWUoJmJnLT5mY29lX3J4X2xpc3QpKSAhPSBOVUxMKQ0KICAgICAgICAgICAgICAgIGtm cmVlX3NrYihza2IpOw0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2Zjb2UvZmNvZS5jIGIv ZHJpdmVycy9zY3NpL2Zjb2UvZmNvZS5jDQppbmRleCAwZWZlNzExMmZjMWYuLmY3YzdjY2MxNTZk YSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvc2NzaS9mY29lL2Zjb2UuYw0KKysrIGIvZHJpdmVycy9z Y3NpL2Zjb2UvZmNvZS5jDQpAQCAtNjcsOSArNjcsNiBAQCBzdGF0aWMgREVGSU5FX01VVEVYKGZj b2VfY29uZmlnX211dGV4KTsNCg0KIHN0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqZmNv ZV93cTsNCg0KLS8qIGZjb2VfcGVyY3B1X2NsZWFuIGNvbXBsZXRpb24uICBXYWl0ZXIgcHJvdGVj dGVkIGJ5IGZjb2VfY3JlYXRlX211dGV4ICovDQotc3RhdGljIERFQ0xBUkVfQ09NUExFVElPTihm Y29lX2ZsdXNoX2NvbXBsZXRpb24pOw0KLQ0KIC8qIGZjb2UgaG9zdCBsaXN0ICovDQogLyogbXVz dCBvbmx5IGJ5IGFjY2Vzc2VkIHVuZGVyIHRoZSBSVE5MIG11dGV4ICovDQogc3RhdGljIExJU1Rf SEVBRChmY29lX2hvc3RsaXN0KTsNCkBAIC04MCw3ICs3Nyw2IEBAIHN0YXRpYyBpbnQgZmNvZV9y ZXNldChzdHJ1Y3QgU2NzaV9Ib3N0ICopOw0KIHN0YXRpYyBpbnQgZmNvZV94bWl0KHN0cnVjdCBm Y19scG9ydCAqLCBzdHJ1Y3QgZmNfZnJhbWUgKik7DQogc3RhdGljIGludCBmY29lX3JjdihzdHJ1 Y3Qgc2tfYnVmZiAqLCBzdHJ1Y3QgbmV0X2RldmljZSAqLA0KICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgcGFja2V0X3R5cGUgKiwgc3RydWN0IG5ldF9kZXZpY2UgKik7DQotc3RhdGljIGludCBm Y29lX3BlcmNwdV9yZWNlaXZlX3RocmVhZCh2b2lkICopOw0KIHN0YXRpYyB2b2lkIGZjb2VfcGVy Y3B1X2NsZWFuKHN0cnVjdCBmY19scG9ydCAqKTsNCiBzdGF0aWMgaW50IGZjb2VfbGlua19vayhz dHJ1Y3QgZmNfbHBvcnQgKik7DQoNCkBAIC0xMDcsNyArMTAzLDYgQEAgc3RhdGljIGludCBmY29l X2RkcF9zZXR1cChzdHJ1Y3QgZmNfbHBvcnQgKiwgdTE2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKiwN CiBzdGF0aWMgaW50IGZjb2VfZGRwX2RvbmUoc3RydWN0IGZjX2xwb3J0ICosIHUxNik7DQogc3Rh dGljIGludCBmY29lX2RkcF90YXJnZXQoc3RydWN0IGZjX2xwb3J0ICosIHUxNiwgc3RydWN0IHNj YXR0ZXJsaXN0ICosDQogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQpOw0K LXN0YXRpYyBpbnQgZmNvZV9jcHVfY2FsbGJhY2soc3RydWN0IG5vdGlmaWVyX2Jsb2NrICosIHVu c2lnbmVkIGxvbmcsIHZvaWQgKik7DQogc3RhdGljIGludCBmY29lX2RjYl9hcHBfbm90aWZpY2F0 aW9uKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbm90aWZpZXIsDQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWxvbmcgZXZlbnQsIHZvaWQgKnB0cik7DQoNCkBAIC0xMzYsMTEg KzEzMSw2IEBAIHN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgZmNvZV9ub3RpZmllciA9IHsN CiAgICAgICAgLm5vdGlmaWVyX2NhbGwgPSBmY29lX2RldmljZV9ub3RpZmljYXRpb24sDQogfTsN Cg0KLS8qIG5vdGlmaWNhdGlvbiBmdW5jdGlvbiBmb3IgQ1BVIGhvdHBsdWcgZXZlbnRzICovDQot c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBmY29lX2NwdV9ub3RpZmllciA9IHsNCi0gICAg ICAgLm5vdGlmaWVyX2NhbGwgPSBmY29lX2NwdV9jYWxsYmFjaywNCi19Ow0KLQ0KIC8qIG5vdGlm aWNhdGlvbiBmdW5jdGlvbiBmb3IgRENCIGV2ZW50cyAqLw0KIHN0YXRpYyBzdHJ1Y3Qgbm90aWZp ZXJfYmxvY2sgZGNiX25vdGlmaWVyID0gew0KICAgICAgICAubm90aWZpZXJfY2FsbCA9IGZjb2Vf ZGNiX2FwcF9ub3RpZmljYXRpb24sDQpAQCAtMTI0NSwxNTIgKzEyMzUsMjEgQEAgc3RhdGljIGlu dCBfX2V4aXQgZmNvZV9pZl9leGl0KHZvaWQpDQogICAgICAgIHJldHVybiAwOw0KIH0NCg0KLS8q Kg0KLSAqIGZjb2VfcGVyY3B1X3RocmVhZF9jcmVhdGUoKSAtIENyZWF0ZSBhIHJlY2VpdmUgdGhy ZWFkIGZvciBhbiBvbmxpbmUgQ1BVDQotICogQGNwdTogVGhlIENQVSBpbmRleCBvZiB0aGUgQ1BV IHRvIGNyZWF0ZSBhIHJlY2VpdmUgdGhyZWFkIGZvcg0KLSAqLw0KLXN0YXRpYyB2b2lkIGZjb2Vf cGVyY3B1X3RocmVhZF9jcmVhdGUodW5zaWduZWQgaW50IGNwdSkNCitzdGF0aWMgdm9pZCBmY29l X3RocmVhZF9jbGVhbnVwX2xvY2FsKHVuc2lnbmVkIGludCBjcHUpDQogew0KLSAgICAgICBzdHJ1 Y3QgZmNvZV9wZXJjcHVfcyAqcDsNCi0gICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICp0aHJlYWQ7 DQotDQotICAgICAgIHAgPSAmcGVyX2NwdShmY29lX3BlcmNwdSwgY3B1KTsNCi0NCi0gICAgICAg dGhyZWFkID0ga3RocmVhZF9jcmVhdGVfb25fbm9kZShmY29lX3BlcmNwdV9yZWNlaXZlX3RocmVh ZCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKXAsIGNw dV90b19ub2RlKGNwdSksDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ImZjb2V0aHJlYWQvJWQiLCBjcHUpOw0KLQ0KLSAgICAgICBpZiAobGlrZWx5KCFJU19FUlIodGhy ZWFkKSkpIHsNCi0gICAgICAgICAgICAgICBrdGhyZWFkX2JpbmQodGhyZWFkLCBjcHUpOw0KLSAg ICAgICAgICAgICAgIHdha2VfdXBfcHJvY2Vzcyh0aHJlYWQpOw0KLQ0KLSAgICAgICAgICAgICAg IHNwaW5fbG9ja19iaCgmcC0+ZmNvZV9yeF9saXN0LmxvY2spOw0KLSAgICAgICAgICAgICAgIHAt PnRocmVhZCA9IHRocmVhZDsNCi0gICAgICAgICAgICAgICBzcGluX3VubG9ja19iaCgmcC0+ZmNv ZV9yeF9saXN0LmxvY2spOw0KLSAgICAgICB9DQotfQ0KLQ0KLS8qKg0KLSAqIGZjb2VfcGVyY3B1 X3RocmVhZF9kZXN0cm95KCkgLSBSZW1vdmUgdGhlIHJlY2VpdmUgdGhyZWFkIG9mIGEgQ1BVDQot ICogQGNwdTogVGhlIENQVSBpbmRleCBvZiB0aGUgQ1BVIHdob3NlIHJlY2VpdmUgdGhyZWFkIGlz IHRvIGJlIGRlc3Ryb3llZA0KLSAqDQotICogRGVzdHJveXMgYSBwZXItQ1BVIFJ4IHRocmVhZC4g QW55IHBlbmRpbmcgc2ticyBhcmUgbW92ZWQgdG8gdGhlDQotICogY3VycmVudCBDUFUncyBSeCB0 aHJlYWQuIElmIHRoZSB0aHJlYWQgYmVpbmcgZGVzdHJveWVkIGlzIGJvdW5kIHRvDQotICogdGhl IENQVSBwcm9jZXNzaW5nIHRoaXMgY29udGV4dCB0aGUgc2ticyB3aWxsIGJlIGZyZWVkLg0KLSAq Lw0KLXN0YXRpYyB2b2lkIGZjb2VfcGVyY3B1X3RocmVhZF9kZXN0cm95KHVuc2lnbmVkIGludCBj cHUpDQotew0KLSAgICAgICBzdHJ1Y3QgZmNvZV9wZXJjcHVfcyAqcDsNCi0gICAgICAgc3RydWN0 IHRhc2tfc3RydWN0ICp0aHJlYWQ7DQogICAgICAgIHN0cnVjdCBwYWdlICpjcmNfZW9mOw0KLSAg ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KLSNpZmRlZiBDT05GSUdfU01QDQotICAgICAgIHN0 cnVjdCBmY29lX3BlcmNwdV9zICpwMDsNCi0gICAgICAgdW5zaWduZWQgdGFyZ19jcHUgPSBnZXRf Y3B1KCk7DQotI2VuZGlmIC8qIENPTkZJR19TTVAgKi8NCisgICAgICAgc3RydWN0IGZjb2VfcGVy Y3B1X3MgKnA7DQoNCi0gICAgICAgRkNPRV9EQkcoIkRlc3Ryb3lpbmcgcmVjZWl2ZSB0aHJlYWQg Zm9yIENQVSAlZFxuIiwgY3B1KTsNCi0NCi0gICAgICAgLyogUHJldmVudCBhbnkgbmV3IHNrYnMg ZnJvbSBiZWluZyBxdWV1ZWQgZm9yIHRoaXMgQ1BVLiAqLw0KLSAgICAgICBwID0gJnBlcl9jcHUo ZmNvZV9wZXJjcHUsIGNwdSk7DQorICAgICAgIHAgPSBwZXJfY3B1X3B0cigmZmNvZV9wZXJjcHUs IGNwdSk7DQogICAgICAgIHNwaW5fbG9ja19iaCgmcC0+ZmNvZV9yeF9saXN0LmxvY2spOw0KLSAg ICAgICB0aHJlYWQgPSBwLT50aHJlYWQ7DQotICAgICAgIHAtPnRocmVhZCA9IE5VTEw7DQogICAg ICAgIGNyY19lb2YgPSBwLT5jcmNfZW9mX3BhZ2U7DQogICAgICAgIHAtPmNyY19lb2ZfcGFnZSA9 IE5VTEw7DQogICAgICAgIHAtPmNyY19lb2Zfb2Zmc2V0ID0gMDsNCiAgICAgICAgc3Bpbl91bmxv Y2tfYmgoJnAtPmZjb2VfcnhfbGlzdC5sb2NrKTsNCg0KLSNpZmRlZiBDT05GSUdfU01QDQotICAg ICAgIC8qDQotICAgICAgICAqIERvbid0IGJvdGhlciBtb3ZpbmcgdGhlIHNrYidzIGlmIHRoaXMg Y29udGV4dCBpcyBydW5uaW5nDQotICAgICAgICAqIG9uIHRoZSBzYW1lIENQVSB0aGF0IGlzIGhh dmluZyBpdHMgdGhyZWFkIGRlc3Ryb3llZC4gVGhpcw0KLSAgICAgICAgKiBjYW4gZWFzaWx5IGhh cHBlbiB3aGVuIHRoZSBtb2R1bGUgaXMgcmVtb3ZlZC4NCi0gICAgICAgICovDQotICAgICAgIGlm IChjcHUgIT0gdGFyZ19jcHUpIHsNCi0gICAgICAgICAgICAgICBwMCA9ICZwZXJfY3B1KGZjb2Vf cGVyY3B1LCB0YXJnX2NwdSk7DQotICAgICAgICAgICAgICAgc3Bpbl9sb2NrX2JoKCZwMC0+ZmNv ZV9yeF9saXN0LmxvY2spOw0KLSAgICAgICAgICAgICAgIGlmIChwMC0+dGhyZWFkKSB7DQotICAg ICAgICAgICAgICAgICAgICAgICBGQ09FX0RCRygiTW92aW5nIGZyYW1lcyBmcm9tIENQVSAlZCB0 byBDUFUgJWRcbiIsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUsIHRhcmdf Y3B1KTsNCi0NCi0gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoc2tiID0gX19za2JfZGVx dWV1ZSgmcC0+ZmNvZV9yeF9saXN0KSkgIT0gTlVMTCkNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgX19za2JfcXVldWVfdGFpbCgmcDAtPmZjb2VfcnhfbGlzdCwgc2tiKTsNCi0gICAg ICAgICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrX2JoKCZwMC0+ZmNvZV9yeF9saXN0LmxvY2sp Ow0KLSAgICAgICAgICAgICAgIH0gZWxzZSB7DQotICAgICAgICAgICAgICAgICAgICAgICAvKg0K LSAgICAgICAgICAgICAgICAgICAgICAgICogVGhlIHRhcmdldGVkIENQVSBpcyBub3QgaW5pdGlh bGl6ZWQgYW5kIGNhbm5vdCBhY2NlcHQNCi0gICAgICAgICAgICAgICAgICAgICAgICAqIG5ldyAg c2ticy4gVW5sb2NrIHRoZSB0YXJnZXRlZCBDUFUgYW5kIGRyb3AgdGhlIHNrYnMNCi0gICAgICAg ICAgICAgICAgICAgICAgICAqIG9uIHRoZSBDUFUgdGhhdCBpcyBnb2luZyBvZmZsaW5lLg0KLSAg ICAgICAgICAgICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAo KHNrYiA9IF9fc2tiX2RlcXVldWUoJnAtPmZjb2VfcnhfbGlzdCkpICE9IE5VTEwpDQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOw0KLSAgICAgICAgICAgICAg ICAgICAgICAgc3Bpbl91bmxvY2tfYmgoJnAwLT5mY29lX3J4X2xpc3QubG9jayk7DQotICAgICAg ICAgICAgICAgfQ0KLSAgICAgICB9IGVsc2Ugew0KLSAgICAgICAgICAgICAgIC8qDQotICAgICAg ICAgICAgICAgICogVGhpcyBzY2VuYXJpbyBvY2N1cnMgd2hlbiB0aGUgbW9kdWxlIGlzIGJlaW5n IHJlbW92ZWQNCi0gICAgICAgICAgICAgICAgKiBhbmQgYWxsIHRocmVhZHMgYXJlIGJlaW5nIGRl c3Ryb3llZC4gc2ticyB3aWxsIGNvbnRpbnVlDQotICAgICAgICAgICAgICAgICogdG8gYmUgc2hp ZnRlZCBmcm9tIHRoZSBDUFUgdGhyZWFkIHRoYXQgaXMgYmVpbmcgcmVtb3ZlZA0KLSAgICAgICAg ICAgICAgICAqIHRvIHRoZSBDUFUgdGhyZWFkIGFzc29jaWF0ZWQgd2l0aCB0aGUgQ1BVIHRoYXQg aXMgcHJvY2Vzc2luZw0KLSAgICAgICAgICAgICAgICAqIHRoZSBtb2R1bGUgcmVtb3ZhbC4gT25j ZSB0aGVyZSBpcyBvbmx5IG9uZSBDUFUgUnggdGhyZWFkIGl0DQotICAgICAgICAgICAgICAgICog d2lsbCByZWFjaCB0aGlzIGNhc2UgYW5kIHdlIHdpbGwgZHJvcCBhbGwgc2ticyBhbmQgbGF0ZXIN Ci0gICAgICAgICAgICAgICAgKiBzdG9wIHRoZSB0aHJlYWQuDQotICAgICAgICAgICAgICAgICov DQotICAgICAgICAgICAgICAgc3Bpbl9sb2NrX2JoKCZwLT5mY29lX3J4X2xpc3QubG9jayk7DQot ICAgICAgICAgICAgICAgd2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKCZwLT5mY29lX3J4X2xp c3QpKSAhPSBOVUxMKQ0KLSAgICAgICAgICAgICAgICAgICAgICAga2ZyZWVfc2tiKHNrYik7DQot ICAgICAgICAgICAgICAgc3Bpbl91bmxvY2tfYmgoJnAtPmZjb2VfcnhfbGlzdC5sb2NrKTsNCi0g ICAgICAgfQ0KLSAgICAgICBwdXRfY3B1KCk7DQotI2Vsc2UNCi0gICAgICAgLyoNCi0gICAgICAg ICogVGhpcyBhIG5vbi1TTVAgc2NlbmFyaW8gd2hlcmUgdGhlIHNpbmd1bGFyIFJ4IHRocmVhZCBp cw0KLSAgICAgICAgKiBiZWluZyByZW1vdmVkLiBGcmVlIGFsbCBza2JzIGFuZCBzdG9wIHRoZSB0 aHJlYWQuDQotICAgICAgICAqLw0KLSAgICAgICBzcGluX2xvY2tfYmgoJnAtPmZjb2VfcnhfbGlz dC5sb2NrKTsNCi0gICAgICAgd2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKCZwLT5mY29lX3J4 X2xpc3QpKSAhPSBOVUxMKQ0KLSAgICAgICAgICAgICAgIGtmcmVlX3NrYihza2IpOw0KLSAgICAg ICBzcGluX3VubG9ja19iaCgmcC0+ZmNvZV9yeF9saXN0LmxvY2spOw0KLSNlbmRpZg0KLQ0KLSAg ICAgICBpZiAodGhyZWFkKQ0KLSAgICAgICAgICAgICAgIGt0aHJlYWRfc3RvcCh0aHJlYWQpOw0K LQ0KICAgICAgICBpZiAoY3JjX2VvZikNCiAgICAgICAgICAgICAgICBwdXRfcGFnZShjcmNfZW9m KTsNCi19DQotDQotLyoqDQotICogZmNvZV9jcHVfY2FsbGJhY2soKSAtIEhhbmRsZXIgZm9yIENQ VSBob3RwbHVnIGV2ZW50cw0KLSAqIEBuZmI6ICAgIFRoZSBjYWxsYmFjayBkYXRhIGJsb2NrDQot ICogQGFjdGlvbjogVGhlIGV2ZW50IHRyaWdnZXJpbmcgdGhlIGNhbGxiYWNrDQotICogQGhjcHU6 ICAgVGhlIGluZGV4IG9mIHRoZSBDUFUgdGhhdCB0aGUgZXZlbnQgaXMgZm9yDQotICoNCi0gKiBU aGlzIGNyZWF0ZXMgb3IgZGVzdHJveXMgcGVyLUNQVSBkYXRhIGZvciBmY29lDQotICoNCi0gKiBS ZXR1cm5zIE5PVElGWV9PSyBhbHdheXMuDQotICovDQotc3RhdGljIGludCBmY29lX2NwdV9jYWxs YmFjayhzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5mYiwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmhjcHUpDQotew0KLSAgICAgICB1bnNp Z25lZCBjcHUgPSAodW5zaWduZWQgbG9uZyloY3B1Ow0KLQ0KLSAgICAgICBzd2l0Y2ggKGFjdGlv bikgew0KLSAgICAgICBjYXNlIENQVV9PTkxJTkU6DQotICAgICAgIGNhc2UgQ1BVX09OTElORV9G Uk9aRU46DQotICAgICAgICAgICAgICAgRkNPRV9EQkcoIkNQVSAleCBvbmxpbmU6IENyZWF0ZSBS eCB0aHJlYWRcbiIsIGNwdSk7DQotICAgICAgICAgICAgICAgZmNvZV9wZXJjcHVfdGhyZWFkX2Ny ZWF0ZShjcHUpOw0KLSAgICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICBjYXNlIENQVV9ERUFE Og0KLSAgICAgICBjYXNlIENQVV9ERUFEX0ZST1pFTjoNCi0gICAgICAgICAgICAgICBGQ09FX0RC RygiQ1BVICV4IG9mZmxpbmU6IFJlbW92ZSBSeCB0aHJlYWRcbiIsIGNwdSk7DQotICAgICAgICAg ICAgICAgZmNvZV9wZXJjcHVfdGhyZWFkX2Rlc3Ryb3koY3B1KTsNCi0gICAgICAgICAgICAgICBi cmVhazsNCi0gICAgICAgZGVmYXVsdDoNCi0gICAgICAgICAgICAgICBicmVhazsNCi0gICAgICAg fQ0KLSAgICAgICByZXR1cm4gTk9USUZZX09LOw0KKyAgICAgICBmbHVzaF93b3JrKCZwLT53b3Jr KTsNCiB9DQoNCiAvKioNCkBAIC0xNTA5LDI2ICsxMzY4LDYgQEAgc3RhdGljIGludCBmY29lX3Jj dihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LA0KDQogICAg ICAgIGZwcyA9ICZwZXJfY3B1KGZjb2VfcGVyY3B1LCBjcHUpOw0KICAgICAgICBzcGluX2xvY2so JmZwcy0+ZmNvZV9yeF9saXN0LmxvY2spOw0KLSAgICAgICBpZiAodW5saWtlbHkoIWZwcy0+dGhy ZWFkKSkgew0KLSAgICAgICAgICAgICAgIC8qDQotICAgICAgICAgICAgICAgICogVGhlIHRhcmdl dGVkIENQVSBpcyBub3QgcmVhZHksIGxldCdzIHRhcmdldA0KLSAgICAgICAgICAgICAgICAqIHRo ZSBmaXJzdCBDUFUgbm93LiBGb3Igbm9uLVNNUCBzeXN0ZW1zIHRoaXMNCi0gICAgICAgICAgICAg ICAgKiB3aWxsIGNoZWNrIHRoZSBzYW1lIENQVSB0d2ljZS4NCi0gICAgICAgICAgICAgICAgKi8N Ci0gICAgICAgICAgICAgICBGQ09FX05FVERFVl9EQkcobmV0ZGV2LCAiQ1BVIGlzIG9ubGluZSwg YnV0IG5vIHJlY2VpdmUgdGhyZWFkICINCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InJlYWR5IGZvciBpbmNvbWluZyBza2ItIHVzaW5nIGZpcnN0IG9ubGluZSAiDQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJDUFUuXG4iKTsNCi0NCi0gICAgICAgICAgICAgICBzcGlu X3VubG9jaygmZnBzLT5mY29lX3J4X2xpc3QubG9jayk7DQotICAgICAgICAgICAgICAgY3B1ID0g Y3B1bWFza19maXJzdChjcHVfb25saW5lX21hc2spOw0KLSAgICAgICAgICAgICAgIGZwcyA9ICZw ZXJfY3B1KGZjb2VfcGVyY3B1LCBjcHUpOw0KLSAgICAgICAgICAgICAgIHNwaW5fbG9jaygmZnBz LT5mY29lX3J4X2xpc3QubG9jayk7DQotICAgICAgICAgICAgICAgaWYgKCFmcHMtPnRocmVhZCkg ew0KLSAgICAgICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2soJmZwcy0+ZmNvZV9yeF9saXN0 LmxvY2spOw0KLSAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7DQotICAgICAgICAgICAg ICAgfQ0KLSAgICAgICB9DQotDQogICAgICAgIC8qDQogICAgICAgICAqIFdlIG5vdyBoYXZlIGEg dmFsaWQgQ1BVIHRoYXQgd2UncmUgdGFyZ2V0aW5nIGZvcg0KICAgICAgICAgKiB0aGlzIHNrYi4g V2UgYWxzbyBoYXZlIHRoaXMgcmVjZWl2ZSB0aHJlYWQgbG9ja2VkLA0KQEAgLTE1NDMsOCArMTM4 Miw3IEBAIHN0YXRpYyBpbnQgZmNvZV9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5l dF9kZXZpY2UgKm5ldGRldiwNCiAgICAgICAgICogaW4gc29mdGlycSBjb250ZXh0Lg0KICAgICAg ICAgKi8NCiAgICAgICAgX19za2JfcXVldWVfdGFpbCgmZnBzLT5mY29lX3J4X2xpc3QsIHNrYik7 DQotICAgICAgIGlmIChmcHMtPnRocmVhZC0+c3RhdGUgPT0gVEFTS19JTlRFUlJVUFRJQkxFKQ0K LSAgICAgICAgICAgICAgIHdha2VfdXBfcHJvY2VzcyhmcHMtPnRocmVhZCk7DQorICAgICAgIHNj aGVkdWxlX3dvcmtfb24oY3B1LCAmZnBzLT53b3JrKTsNCiAgICAgICAgc3Bpbl91bmxvY2soJmZw cy0+ZmNvZV9yeF9saXN0LmxvY2spOw0KDQogICAgICAgIHJldHVybiBORVRfUlhfU1VDQ0VTUzsN CkBAIC0xNzEzLDE1ICsxNTUxLDYgQEAgc3RhdGljIGludCBmY29lX3htaXQoc3RydWN0IGZjX2xw b3J0ICpscG9ydCwgc3RydWN0IGZjX2ZyYW1lICpmcCkNCiB9DQoNCiAvKioNCi0gKiBmY29lX3Bl cmNwdV9mbHVzaF9kb25lKCkgLSBJbmRpY2F0ZSBwZXItQ1BVIHF1ZXVlIGZsdXNoIGNvbXBsZXRp b24NCi0gKiBAc2tiOiBUaGUgY29tcGxldGVkIHNrYiAoYXJndW1lbnQgcmVxdWlyZWQgYnkgZGVz dHJ1Y3RvcikNCi0gKi8NCi1zdGF0aWMgdm9pZCBmY29lX3BlcmNwdV9mbHVzaF9kb25lKHN0cnVj dCBza19idWZmICpza2IpDQotew0KLSAgICAgICBjb21wbGV0ZSgmZmNvZV9mbHVzaF9jb21wbGV0 aW9uKTsNCi19DQotDQotLyoqDQogICogZmNvZV9maWx0ZXJfZnJhbWVzKCkgLSBmaWx0ZXIgb3V0 IGJhZCBmY29lIGZyYW1lcywgaS5lLiBiYWQgQ1JDDQogICogQGxwb3J0OiBUaGUgbG9jYWwgcG9y dCB0aGUgZnJhbWUgd2FzIHJlY2VpdmVkIG9uDQogICogQGZwOiAgICAgICAgICAgVGhlIHJlY2Vp dmVkIGZyYW1lDQpAQCAtMTc5Miw4ICsxNjIxLDcgQEAgc3RhdGljIHZvaWQgZmNvZV9yZWN2X2Zy YW1lKHN0cnVjdCBza19idWZmICpza2IpDQogICAgICAgIGZyID0gZmNvZV9kZXZfZnJvbV9za2Io c2tiKTsNCiAgICAgICAgbHBvcnQgPSBmci0+ZnJfZGV2Ow0KICAgICAgICBpZiAodW5saWtlbHko IWxwb3J0KSkgew0KLSAgICAgICAgICAgICAgIGlmIChza2ItPmRlc3RydWN0b3IgIT0gZmNvZV9w ZXJjcHVfZmx1c2hfZG9uZSkNCi0gICAgICAgICAgICAgICAgICAgICAgIEZDT0VfTkVUREVWX0RC Ryhza2ItPmRldiwgIk5VTEwgbHBvcnQgaW4gc2tiXG4iKTsNCisgICAgICAgICAgICAgICBGQ09F X05FVERFVl9EQkcoc2tiLT5kZXYsICJOVUxMIGxwb3J0IGluIHNrYlxuIik7DQogICAgICAgICAg ICAgICAga2ZyZWVfc2tiKHNrYik7DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9 DQpAQCAtMTg1Nyw0MCArMTY4NSwyOCBAQCBzdGF0aWMgdm9pZCBmY29lX3JlY3ZfZnJhbWUoc3Ry dWN0IHNrX2J1ZmYgKnNrYikNCiB9DQoNCiAvKioNCi0gKiBmY29lX3BlcmNwdV9yZWNlaXZlX3Ro cmVhZCgpIC0gVGhlIHBlci1DUFUgcGFja2V0IHJlY2VpdmUgdGhyZWFkDQotICogQGFyZzogVGhl IHBlci1DUFUgY29udGV4dA0KKyAqIGZjb2VfcmVjZWl2ZV93b3JrKCkgLSBUaGUgcGVyLUNQVSB3 b3JrZXINCisgKiBAd29yazogVGhlIHdvcmsgc3RydWN0DQogICoNCi0gKiBSZXR1cm46IDAgZm9y IHN1Y2Nlc3MNCiAgKi8NCi1zdGF0aWMgaW50IGZjb2VfcGVyY3B1X3JlY2VpdmVfdGhyZWFkKHZv aWQgKmFyZykNCitzdGF0aWMgdm9pZCBmY29lX3JlY2VpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspDQogew0KLSAgICAgICBzdHJ1Y3QgZmNvZV9wZXJjcHVfcyAqcCA9IGFyZzsNCisg ICAgICAgc3RydWN0IGZjb2VfcGVyY3B1X3MgKnA7DQogICAgICAgIHN0cnVjdCBza19idWZmICpz a2I7DQogICAgICAgIHN0cnVjdCBza19idWZmX2hlYWQgdG1wOw0KDQorICAgICAgIHAgPSBjb250 YWluZXJfb2Yod29yaywgc3RydWN0IGZjb2VfcGVyY3B1X3MsIHdvcmspOw0KICAgICAgICBza2Jf cXVldWVfaGVhZF9pbml0KCZ0bXApOw0KDQotICAgICAgIHNldF91c2VyX25pY2UoY3VycmVudCwg TUlOX05JQ0UpOw0KKyAgICAgICBzcGluX2xvY2tfYmgoJnAtPmZjb2VfcnhfbGlzdC5sb2NrKTsN CisgICAgICAgc2tiX3F1ZXVlX3NwbGljZV9pbml0KCZwLT5mY29lX3J4X2xpc3QsICZ0bXApOw0K KyAgICAgICBzcGluX3VubG9ja19iaCgmcC0+ZmNvZV9yeF9saXN0LmxvY2spOw0KDQotICAgICAg IHdoaWxlICgha3RocmVhZF9zaG91bGRfc3RvcCgpKSB7DQorICAgICAgIGlmICghc2tiX3F1ZXVl X2xlbigmdG1wKSkNCisgICAgICAgICAgICAgICByZXR1cm47DQoNCi0gICAgICAgICAgICAgICBz cGluX2xvY2tfYmgoJnAtPmZjb2VfcnhfbGlzdC5sb2NrKTsNCi0gICAgICAgICAgICAgICBza2Jf cXVldWVfc3BsaWNlX2luaXQoJnAtPmZjb2VfcnhfbGlzdCwgJnRtcCk7DQotDQotICAgICAgICAg ICAgICAgaWYgKCFza2JfcXVldWVfbGVuKCZ0bXApKSB7DQotICAgICAgICAgICAgICAgICAgICAg ICBzZXRfY3VycmVudF9zdGF0ZShUQVNLX0lOVEVSUlVQVElCTEUpOw0KLSAgICAgICAgICAgICAg ICAgICAgICAgc3Bpbl91bmxvY2tfYmgoJnAtPmZjb2VfcnhfbGlzdC5sb2NrKTsNCi0gICAgICAg ICAgICAgICAgICAgICAgIHNjaGVkdWxlKCk7DQotICAgICAgICAgICAgICAgICAgICAgICBjb250 aW51ZTsNCi0gICAgICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgICAgc3Bpbl91bmxvY2tf YmgoJnAtPmZjb2VfcnhfbGlzdC5sb2NrKTsNCi0NCi0gICAgICAgICAgICAgICB3aGlsZSAoKHNr YiA9IF9fc2tiX2RlcXVldWUoJnRtcCkpICE9IE5VTEwpDQotICAgICAgICAgICAgICAgICAgICAg ICBmY29lX3JlY3ZfZnJhbWUoc2tiKTsNCi0NCi0gICAgICAgfQ0KLSAgICAgICByZXR1cm4gMDsN CisgICAgICAgd2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKCZ0bXApKSkNCisgICAgICAgICAg ICAgICBmY29lX3JlY3ZfZnJhbWUoc2tiKTsNCiB9DQoNCiAvKioNCkBAIC0yNDUwLDM2ICsyMjY2 LDE5IEBAIHN0YXRpYyBpbnQgZmNvZV9saW5rX29rKHN0cnVjdCBmY19scG9ydCAqbHBvcnQpDQog ICoNCiAgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGZjb2VfY3JlYXRlX211dGV4IGhlbGQgdG8gc2lu Z2xlLXRocmVhZCBjb21wbGV0aW9uLg0KICAqDQotICogVGhpcyBmbHVzaGVzIHRoZSBwZW5kaW5n IHNrYnMgYnkgYWRkaW5nIGEgbmV3IHNrYiB0byBlYWNoIHF1ZXVlIGFuZA0KLSAqIHdhaXRpbmcg dW50aWwgdGhleSBhcmUgYWxsIGZyZWVkLiAgVGhpcyBhc3N1cmVzIHVzIHRoYXQgbm90IG9ubHkg YXJlDQotICogdGhlcmUgbm8gcGFja2V0cyB0aGF0IHdpbGwgYmUgaGFuZGxlZCBieSB0aGUgbHBv cnQsIGJ1dCBhbHNvIHRoYXQgYW55DQotICogdGhyZWFkcyBhbHJlYWR5IGhhbmRsaW5nIHBhY2tl dCBoYXZlIHJldHVybmVkLg0KKyAqIFRoaXMgZmx1c2hlcyB0aGUgcGVuZGluZyBza2JzIGJ5IGZs dXNoIHRoZSB3b3JrIGl0ZW0gZm9yIGVhY2ggQ1BVLiBUaGUgd29yaw0KKyAqIGl0ZW0gb24gZWFj aCBwb3NzaWJsZSBDUFUgaXMgZmx1c2hlZCBiZWNhdXNlIHdlIG1heSBoYXZlIHVzZWQgdGhlIHBl ci1DUFUNCisgKiBzdHJ1Y3Qgb2YgYW4gb2ZmbGluZSBDUFUuDQogICovDQogc3RhdGljIHZvaWQg ZmNvZV9wZXJjcHVfY2xlYW4oc3RydWN0IGZjX2xwb3J0ICpscG9ydCkNCiB7DQogICAgICAgIHN0 cnVjdCBmY29lX3BlcmNwdV9zICpwcDsNCi0gICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYjsNCiAg ICAgICAgdW5zaWduZWQgaW50IGNwdTsNCg0KICAgICAgICBmb3JfZWFjaF9wb3NzaWJsZV9jcHUo Y3B1KSB7DQogICAgICAgICAgICAgICAgcHAgPSAmcGVyX2NwdShmY29lX3BlcmNwdSwgY3B1KTsN Cg0KLSAgICAgICAgICAgICAgIGlmICghcHAtPnRocmVhZCB8fCAhY3B1X29ubGluZShjcHUpKQ0K LSAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQotDQotICAgICAgICAgICAgICAgc2ti ID0gZGV2X2FsbG9jX3NrYigwKTsNCi0gICAgICAgICAgICAgICBpZiAoIXNrYikNCi0gICAgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KLQ0KLSAgICAgICAgICAgICAgIHNrYi0+ZGVzdHJ1 Y3RvciA9IGZjb2VfcGVyY3B1X2ZsdXNoX2RvbmU7DQotDQotICAgICAgICAgICAgICAgc3Bpbl9s b2NrX2JoKCZwcC0+ZmNvZV9yeF9saXN0LmxvY2spOw0KLSAgICAgICAgICAgICAgIF9fc2tiX3F1 ZXVlX3RhaWwoJnBwLT5mY29lX3J4X2xpc3QsIHNrYik7DQotICAgICAgICAgICAgICAgaWYgKHBw LT5mY29lX3J4X2xpc3QucWxlbiA9PSAxKQ0KLSAgICAgICAgICAgICAgICAgICAgICAgd2FrZV91 cF9wcm9jZXNzKHBwLT50aHJlYWQpOw0KLSAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrX2JoKCZw cC0+ZmNvZV9yeF9saXN0LmxvY2spOw0KLQ0KLSAgICAgICAgICAgICAgIHdhaXRfZm9yX2NvbXBs ZXRpb24oJmZjb2VfZmx1c2hfY29tcGxldGlvbik7DQorICAgICAgICAgICAgICAgZmx1c2hfd29y aygmcHAtPndvcmspOw0KICAgICAgICB9DQogfQ0KDQpAQCAtMjYyNSwyMiArMjQyNCwxMSBAQCBz dGF0aWMgaW50IF9faW5pdCBmY29lX2luaXQodm9pZCkNCiAgICAgICAgbXV0ZXhfbG9jaygmZmNv ZV9jb25maWdfbXV0ZXgpOw0KDQogICAgICAgIGZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpIHsN Ci0gICAgICAgICAgICAgICBwID0gJnBlcl9jcHUoZmNvZV9wZXJjcHUsIGNwdSk7DQorICAgICAg ICAgICAgICAgcCA9IHBlcl9jcHVfcHRyKCZmY29lX3BlcmNwdSwgY3B1KTsNCisgICAgICAgICAg ICAgICBJTklUX1dPUksoJnAtPndvcmssIGZjb2VfcmVjZWl2ZV93b3JrKTsNCiAgICAgICAgICAg ICAgICBza2JfcXVldWVfaGVhZF9pbml0KCZwLT5mY29lX3J4X2xpc3QpOw0KICAgICAgICB9DQoN Ci0gICAgICAgY3B1X25vdGlmaWVyX3JlZ2lzdGVyX2JlZ2luKCk7DQotDQotICAgICAgIGZvcl9l YWNoX29ubGluZV9jcHUoY3B1KQ0KLSAgICAgICAgICAgICAgIGZjb2VfcGVyY3B1X3RocmVhZF9j cmVhdGUoY3B1KTsNCi0NCi0gICAgICAgLyogSW5pdGlhbGl6ZSBwZXIgQ1BVIGludGVycnVwdCB0 aHJlYWQgKi8NCi0gICAgICAgcmMgPSBfX3JlZ2lzdGVyX2hvdGNwdV9ub3RpZmllcigmZmNvZV9j cHVfbm90aWZpZXIpOw0KLSAgICAgICBpZiAocmMpDQotICAgICAgICAgICAgICAgZ290byBvdXRf ZnJlZTsNCi0NCi0gICAgICAgY3B1X25vdGlmaWVyX3JlZ2lzdGVyX2RvbmUoKTsNCi0NCiAgICAg ICAgLyogU2V0dXAgbGluayBjaGFuZ2Ugbm90aWZpY2F0aW9uICovDQogICAgICAgIGZjb2VfZGV2 X3NldHVwKCk7DQoNCkBAIC0yNjUyLDEyICsyNDQwLDYgQEAgc3RhdGljIGludCBfX2luaXQgZmNv ZV9pbml0KHZvaWQpDQogICAgICAgIHJldHVybiAwOw0KDQogb3V0X2ZyZWU6DQotICAgICAgIGZv cl9lYWNoX29ubGluZV9jcHUoY3B1KSB7DQotICAgICAgICAgICAgICAgZmNvZV9wZXJjcHVfdGhy ZWFkX2Rlc3Ryb3koY3B1KTsNCi0gICAgICAgfQ0KLQ0KLSAgICAgICBjcHVfbm90aWZpZXJfcmVn aXN0ZXJfZG9uZSgpOw0KLQ0KICAgICAgICBtdXRleF91bmxvY2soJmZjb2VfY29uZmlnX211dGV4 KTsNCiAgICAgICAgZGVzdHJveV93b3JrcXVldWUoZmNvZV93cSk7DQogICAgICAgIHJldHVybiBy YzsNCkBAIC0yNjkwLDE0ICsyNDcyLDggQEAgc3RhdGljIHZvaWQgX19leGl0IGZjb2VfZXhpdCh2 b2lkKQ0KICAgICAgICB9DQogICAgICAgIHJ0bmxfdW5sb2NrKCk7DQoNCi0gICAgICAgY3B1X25v dGlmaWVyX3JlZ2lzdGVyX2JlZ2luKCk7DQotDQotICAgICAgIGZvcl9lYWNoX29ubGluZV9jcHUo Y3B1KQ0KLSAgICAgICAgICAgICAgIGZjb2VfcGVyY3B1X3RocmVhZF9kZXN0cm95KGNwdSk7DQot DQotICAgICAgIF9fdW5yZWdpc3Rlcl9ob3RjcHVfbm90aWZpZXIoJmZjb2VfY3B1X25vdGlmaWVy KTsNCi0NCi0gICAgICAgY3B1X25vdGlmaWVyX3JlZ2lzdGVyX2RvbmUoKTsNCisgICAgICAgZm9y X2VhY2hfcG9zc2libGVfY3B1KGNwdSkNCisgICAgICAgICAgICAgICBmY29lX3RocmVhZF9jbGVh bnVwX2xvY2FsKGNwdSk7DQoNCiAgICAgICAgbXV0ZXhfdW5sb2NrKCZmY29lX2NvbmZpZ19tdXRl eCk7DQoNCmRpZmYgLS1naXQgYS9pbmNsdWRlL3Njc2kvbGliZmNvZS5oIGIvaW5jbHVkZS9zY3Np L2xpYmZjb2UuaA0KaW5kZXggZGU3ZTNlZTYwZjBjLi5jNmZiYmI2NTgxZDMgMTAwNjQ0DQotLS0g YS9pbmNsdWRlL3Njc2kvbGliZmNvZS5oDQorKysgYi9pbmNsdWRlL3Njc2kvbGliZmNvZS5oDQpA QCAtMzE5LDE0ICszMTksMTYgQEAgc3RydWN0IGZjb2VfdHJhbnNwb3J0IHsNCg0KIC8qKg0KICAq IHN0cnVjdCBmY29lX3BlcmNwdV9zIC0gVGhlIGNvbnRleHQgZm9yIEZDb0UgcmVjZWl2ZSB0aHJl YWQocykNCi0gKiBAdGhyZWFkOiAgICAgICAgVGhlIHRocmVhZCBjb250ZXh0DQorICogQGt0aHJl YWQ6ICAgICAgIFRoZSB0aHJlYWQgY29udGV4dCAodXNlZCBieSBibngyZmMpDQorICogQHdvcms6 ICAgICAgICAgIFRoZSB3b3JrIGl0ZW0gKHVzZWQgYnkgZmNvZSkNCiAgKiBAZmNvZV9yeF9saXN0 OiAgIFRoZSBxdWV1ZSBvZiBwZW5kaW5nIHBhY2tldHMgdG8gcHJvY2Vzcw0KICAqIEBwYWdlOiAg ICAgICAgICBUaGUgbWVtb3J5IHBhZ2UgZm9yIGNhbGN1bGF0aW5nIGZyYW1lIHRyYWlsZXIgQ1JD cw0KICAqIEBjcmNfZW9mX29mZnNldDogVGhlIG9mZnNldCBpbnRvIHRoZSBDUkMgcGFnZSBwb2lu dGluZyB0byBhdmFpbGFibGUNCiAgKiAgICAgICAgICAgICAgICAgbWVtb3J5IGZvciBhIG5ldyB0 cmFpbGVyDQogICovDQogc3RydWN0IGZjb2VfcGVyY3B1X3Mgew0KLSAgICAgICBzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnRocmVhZDsNCisgICAgICAgc3RydWN0IHRhc2tfc3RydWN0ICprdGhyZWFkOw0K KyAgICAgICBzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsNCiAgICAgICAgc3RydWN0IHNrX2J1ZmZf aGVhZCBmY29lX3J4X2xpc3Q7DQogICAgICAgIHN0cnVjdCBwYWdlICpjcmNfZW9mX3BhZ2U7DQog ICAgICAgIGludCBjcmNfZW9mX29mZnNldDsNCi0tDQoyLjguMC5yYzMNCg0KLS0NClRvIHVuc3Vi c2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBsaW51eC1z Y3NpIiBpbg0KdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5v cmc8bWFpbHRvOm1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmc+DQpNb3JlIG1ham9yZG9tbyBpbmZv IGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwNCg0KDQoNCg0K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmNvZS1kZXZl bCBtYWlsaW5nIGxpc3QKZmNvZS1kZXZlbEBvcGVuLWZjb2Uub3JnCmh0dHA6Ly9saXN0cy5vcGVu LWZjb2Uub3JnL21haWxtYW4vbGlzdGluZm8vZmNvZS1kZXZlbAo=