From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from outboundhk.mxmail.xiaomi.com ([207.226.244.122]:58620 "EHLO xiaomi.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755053AbcLPBfu (ORCPT ); Thu, 15 Dec 2016 20:35:50 -0500 From: =?utf-8?B?5bSU56uL6aOe?= To: "miklos@szeredi.hu" CC: "linux-kernel@vger.kernel.org" , "pavel@ucw.cz" , "len.brown@intel.com" , "linux-fsdevel@vger.kernel.org" , "viro@zeniv.linux.org.uk" , =?utf-8?B?5py06Iux5pWP?= , =?utf-8?B?5YiY5omN?= , "Jiri Kosina" , "rjw@rjwysocki.net" Subject: =?utf-8?B?562U5aSNOiBbUEFUQ0hdIGZ1c2U6IGZyZWV6aW5nIGFib3J0IHdoZW4gdXNl?= =?utf-8?B?IHdhaXRfZXZlbnRfa2lsbGFibGV7LF9leGNsdXNpdmV9KCku?= Date: Fri, 16 Dec 2016 01:34:52 +0000 Message-ID: <1481852146406.56766@xiaomi.com> References: <1480907985-1494-1-git-send-email-cuilifei@xiaomi.com>,<2611375.NpU9fySFZX@aspire.rjw.lan>,<1481178779996.35846@xiaomi.com> In-Reply-To: <1481178779996.35846@xiaomi.com> Content-Language: zh-CN Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-fsdevel-owner@vger.kernel.org List-ID: SGkgTWlrbG9zLAoKUGxlYXNlIGhlbHAgdG8gcmV2aWV3IHRoZSBwYXRjaC4KVGhhbmtzLgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwrlj5Hku7bkuro6IOW0lOeri+mj ngrlj5HpgIHml7bpl7Q6IDIwMTblubQxMuaciDjml6UgMTQ6MzEK5pS25Lu25Lq6OiBSYWZhZWwg Si4gV3lzb2NraQrmioTpgIE6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IG1pa2xvc0Bz emVyZWRpLmh1OyBwYXZlbEB1Y3cuY3o7IGxlbi5icm93bkBpbnRlbC5jb207IGxpbnV4LWZzZGV2 ZWxAdmdlci5rZXJuZWwub3JnOyB2aXJvQHplbml2LmxpbnV4Lm9yZy51azsg5py06Iux5pWPOyDl iJjmiY07IEppcmkgS29zaW5hOyDltJTnq4vpo54K5Li76aKYOiDnrZTlpI06IFtQQVRDSF0gZnVz ZTogZnJlZXppbmcgYWJvcnQgd2hlbiB1c2Ugd2FpdF9ldmVudF9raWxsYWJsZXssX2V4Y2x1c2l2 ZX0oKS4KCkhpIFJhZmFlbCwKClRoZSBmdXNlIHdlIHVzZWQgaXMgd2l0aG91dCB0aGUgY29tbWl0 ICJmdXNlOiBkb24ndCBtZXNzIHdpdGggYmxvY2tpbmcgc2lnbmFscyIgY29tbWl0dGVkIGJ5IEFs IFZpcm8uClNvIHdlIGZpbmQgdGhlIGlzc3VlIFNJR0JVUy4gSW4gdGhlIHBhZ2UgZmF1bHQsIHRy eWluZyB0byByZWFkIHBhZ2UgaW4gZnVzZSBpcyBpbnRlcnJ1cHRlZCwKd2hpY2ggd2lsbCBsZWFk IHRvIFNJR0JVUyBpc3N1ZS4KCkFsbCBBbmRyb2lkIHBsYXRmb3JtcywgaW5jbHVkZSBBbmRyb2lk IE4sIGhhdmUgdGhlIFNJR1VCUyBpc3N1ZS4gQWxsIHRoZSBTSUdCVVMgaXNzdWVzIGFyZSBwcm9k dWNlZAppbiB0aGUgZnJlZXppbmcgcHJvY2Vzcy4KCkluIG91ciBBbmRyb2lkIHBsYXRmb3JtLCB0 aGUgcm9vdC1jYXVzZSBvZiBTSUdCVVMgaXMgOgpzdXNwZW5kIHByb2NlZHVyZSB3aWxsIHNldCB0 aGUgc2lnbmFsIHBlbmRpbmcgZmxhZyhUSUZfU0lHUEVORElORykgYW5kIHRoZW4gd2FrZSB1cCB0 aGUgdGFzawp3aGljaCBpcyBUQVNLX0lOVEVSUlVQVElCTEUgc3RhdHVzIC4gVGhlIHJlcXVlc3Rf d2FpdF9hbnN3ZXIsIHdoaWNoIGNhbGxzIHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZSwKaXMgaW50 ZXJydXB0ZWQgYW5kIHRoZSBmdXNlIHJlcXVlc3QgaXMgc3RpbGwgaW4gcGVuZGluZyBzdGF0dXMs IHdoaWNoIGxlYWRzIHRvIFNJR0JVUyBzZW50IHRvIGNhbGxlci4KClRoaXMgaXNzdWUgY2FuIGJl IHJlcHJvZHVjZWQgYnkgYWRkaW5nIGRlbGF5cyBpbiBmdW5jaXRvbiBoYW5kbGVfcmVhZCwKd2hp Y2ggaXMgaW4gdGhlIEFuZHJvaWQgc2RjYXJkIGRhZW1vbiBwcm9jZXNzLgoKU28gd2UgbWVyZ2Ug dGhlIGNvbW1pdCAiZnVzZTogZG9uJ3QgbWVzcyB3aXRoIGJsb2NraW5nIHNpZ25hbHMiLCB3aGlj aCBqdXN0IHVzZSB3YWl0X2V2ZW50X2tpbGxhYmxleyxfZXhjbHVzaXZlfSgpLgpJdCBmaXggdGhl IFNJR0JVUyBpc3N1ZS4gQnV0IHRoZSBmcmVlemluZyB3aWxsIGZhaWwsIGJlY2F1c2UgdGhlIGZy ZWV6aW5nIHByb2NlZHVyZSBjYW5ub3Qgd2FrZSB1cCB0aGUgdGFzayB3aGljaAppcyBpbiBUQVNL X0tJTExBQkxFKFRBU0tfV0FLRUtJTEwgfCBUQVNLX1VOSU5URVJSVVBUSUJMRSkgc3RhdHVzLiBB bmQgdGhlIHN1c3BlbmQgcHJvY2VkdXJlIHdpbGwgYWJvcnQKdW50aWwgdGhlIHRpbWUgaXMgb3V0 LgoKSW4gdGhpcyBwYXRjaCwgd2UgdHJ5IHRvIGZpeCB0aGUgaXNzdWUgbWVudGlvbmVkIGFib3Zl Lgo+IC0tLQo+wqDCoCBmcy9mdXNlL2Rldi5jICAgICAgICAgICB8IDMwICsrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLQo+wqDCoCBpbmNsdWRlL2xpbnV4L2ZyZWV6ZXIuaCB8IDI2ICsrKysr KysrKysrKysrKysrKysrKysrKysrCj7CoMKgIDIgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9mcy9mdXNlL2Rldi5jIGIvZnMv ZnVzZS9kZXYuYwo+IGluZGV4IDcwZWE1N2MuLmUzM2EwODEgMTAwNjQ0Cj4gLS0tIGEvZnMvZnVz ZS9kZXYuYwo+ICsrKyBiL2ZzL2Z1c2UvZGV2LmMKPiBAQCAtMTksNiArMTksNyBAQAo+wqDCoCAj aW5jbHVkZSA8bGludXgvcGlwZV9mc19pLmg+Cj7CoMKgICNpbmNsdWRlIDxsaW51eC9zd2FwLmg+ Cj7CoMKgICNpbmNsdWRlIDxsaW51eC9zcGxpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2ZyZWV6 ZXIuaD4KPsKgwqAKPsKgwqAgTU9EVUxFX0FMSUFTX01JU0NERVYoRlVTRV9NSU5PUik7Cj7CoMKg IE1PRFVMRV9BTElBUygiZGV2bmFtZTpmdXNlIik7Cj4gQEAgLTk5LDYgKzEwMCwxOSBAQCB2b2lk IGZ1c2VfcmVxdWVzdF9mcmVlKHN0cnVjdCBmdXNlX3JlcSAqcmVxKQo+wqDCoMKgwqDCoMKgwqDC oCBrbWVtX2NhY2hlX2ZyZWUoZnVzZV9yZXFfY2FjaGVwLCByZXEpOwo+wqDCoCB9Cj7CoMKgCj4g K3N0YXRpYyB2b2lkIGJsb2NrX3NpZ3Moc2lnc2V0X3QgKm9sZHNldCkKPiArewo+ICsgICAgIHNp Z3NldF90IG1hc2s7Cj4gKwo+ICsgICAgIHNpZ2luaXRzZXRpbnYoJm1hc2ssIHNpZ21hc2soU0lH S0lMTCkpOwo+ICsgICAgIHNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJm1hc2ssIG9sZHNldCk7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIHJlc3RvcmVfc2lncyhzaWdzZXRfdCAqb2xkc2V0KQo+ICt7 Cj4gKyAgICAgc2lncHJvY21hc2soU0lHX1NFVE1BU0ssIG9sZHNldCwgTlVMTCk7Cj4gK30KPiAr Cj7CoMKgIHZvaWQgX19mdXNlX2dldF9yZXF1ZXN0KHN0cnVjdCBmdXNlX3JlcSAqcmVxKQo+wqDC oCB7Cj7CoMKgwqDCoMKgwqDCoMKgIGF0b21pY19pbmMoJnJlcS0+Y291bnQpOwo+IEBAIC0xMzQs MTMgKzE0OCwxOCBAQCBzdGF0aWMgc3RydWN0IGZ1c2VfcmVxICpfX2Z1c2VfZ2V0X3JlcShzdHJ1 Y3QgZnVzZV9jb25uICpmYywgdW5zaWduZWQgbnBhZ2VzLAo+wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGJvb2wgZm9yX2JhY2tncm91bmQpCj7CoMKgIHsKPsKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGZ1 c2VfcmVxICpyZXE7Cj4gKyAgICAgc2lnc2V0X3Qgb2xkc2V0Owo+ICsgICAgIGludCBpbnRyOwo+ wqDCoMKgwqDCoMKgwqDCoCBpbnQgZXJyOwo+wqDCoMKgwqDCoMKgwqDCoCBhdG9taWNfaW5jKCZm Yy0+bnVtX3dhaXRpbmcpOwo+wqDCoAo+wqDCoMKgwqDCoMKgwqDCoCBpZiAoZnVzZV9ibG9ja19h bGxvYyhmYywgZm9yX2JhY2tncm91bmQpKSB7Cj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBlcnIgPSAtRUlOVFI7Cj4gLSAgICAgICAgICAgICBpZiAod2FpdF9ldmVudF9raWxsYWJs ZV9leGNsdXNpdmUoZmMtPmJsb2NrZWRfd2FpdHEsCj4gLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIWZ1c2VfYmxvY2tfYWxsb2MoZmMsIGZvcl9iYWNrZ3JvdW5kKSkpCj4gKyAgICAgICAg ICAgICBibG9ja19zaWdzKCZvbGRzZXQpOwo+ICsgICAgICAgICAgICAgaW50ciA9IHdhaXRfZmF0 YWxfZnJlZXphYmxlKGZjLT5ibG9ja2VkX3dhaXRxLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICFmdXNlX2Jsb2NrX2FsbG9jKGZjLCBmb3JfYmFja2dyb3VuZCksIHRydWUpOwo+ICsg ICAgICAgICAgICAgcmVzdG9yZV9zaWdzKCZvbGRzZXQpOwo+ICsgICAgICAgICAgICAgaWYgKGlu dHIpCj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290 byBvdXQ7Cj7CoMKgwqDCoMKgwqDCoMKgIH0KPsKgwqDCoMKgwqDCoMKgwqAgLyogTWF0Y2hlcyBz bXBfd21iKCkgaW4gZnVzZV9zZXRfaW5pdGlhbGl6ZWQoKSAqLwo+IEBAIC00MjcsOSArNDQ2LDEy IEBAIHN0YXRpYyB2b2lkIHJlcXVlc3Rfd2FpdF9hbnN3ZXIoc3RydWN0IGZ1c2VfY29ubiAqZmMs IHN0cnVjdCBmdXNlX3JlcSAqcmVxKQo+wqDCoMKgwqDCoMKgwqDCoCB9Cj7CoMKgCj7CoMKgwqDC oMKgwqDCoMKgIGlmICghdGVzdF9iaXQoRlJfRk9SQ0UsICZyZXEtPmZsYWdzKSkgewo+ICsgICAg ICAgICAgICAgc2lnc2V0X3Qgb2xkc2V0Owo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgLyogT25seSBmYXRhbCBzaWduYWxzIG1heSBpbnRlcnJ1cHQgdGhpcyAqLwo+IC0gICAgICAg ICAgICAgZXJyID0gd2FpdF9ldmVudF9raWxsYWJsZShyZXEtPndhaXRxLAo+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9iaXQoRlJfRklOSVNIRUQsICZyZXEtPmZs YWdzKSk7Cj4gKyAgICAgICAgICAgICBibG9ja19zaWdzKCZvbGRzZXQpOwo+ICsgICAgICAgICAg ICAgZXJyID0gd2FpdF9mYXRhbF9mcmVlemFibGUocmVxLT53YWl0cSwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0ZXN0X2JpdChGUl9GSU5JU0hFRCwgJnJlcS0+ZmxhZ3MpLCBmYWxz ZSk7Cj4gKyAgICAgICAgICAgICByZXN0b3JlX3NpZ3MoJm9sZHNldCk7Cj7CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIWVycikKPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj7CoMKgCj4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvbGludXgvZnJlZXplci5oIGIvaW5jbHVkZS9saW51eC9mcmVlemVyLmgKPiBpbmRleCBkZDAz ZTgzLi4yNTA0Y2QwIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvZnJlZXplci5oCj4gKysr IGIvaW5jbHVkZS9saW51eC9mcmVlemVyLmgKPiBAQCAtMjU2LDYgKzI1NiwyMiBAQCBzdGF0aWMg aW5saW5lIGludCBmcmVlemFibGVfc2NoZWR1bGVfaHJ0aW1lb3V0X3JhbmdlKGt0aW1lX3QgKmV4 cGlyZXMsCj7CoMKgwqAgICAgICBfX3JldHZhbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+wqDCoCB9KQo+wqDCoAo+ICsjZGVmaW5lIHdh aXRfZmF0YWxfZnJlZXphYmxlKHdxLCBjb25kaXRpb24sIGV4Y2x1c2l2ZSkgICAgICAgICAgICAg ICAgICAgICAgIFwKPiArKHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ICsgICAgIGludCBfX3JldCA9 IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g KyAgICAgZG8ge8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgXAo+ICsgICAgICAgICAgICAgaWYgKGV4Y2x1c2l2ZSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAg IF9fcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX2V4Y2x1c2l2ZSh3cSwgIFwgICAgLy9z ZXQgdGhlIFRBU0tfSU5URVJSVVBUSUJMRQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbik7ICAgICBcICAgICAgICAgICAgICAg ICAgICAgICAgICAgLy9jYW4gYmUgd2FrZWQgdXAgYnkgc3VzcGVuZCBwcm9jZWR1cmUKPiArICAg ICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+ICsgICAgICAgICAgICAgICAgICAgICBfX3JldCA9IHdhaXRfZXZlbnRfaW50 ZXJydXB0aWJsZSh3cSwgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uKTsgICAgIFwKPiArICAgICAgICAg ICAgIGlmICghX19yZXQgfHwgZmF0YWxfc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpICAgICAgICAg ICAgXCAgICAgICAgICAgLy9jaGVjayBjb25kaXRpb24gb3IgdGhlcmUgaXMgZmF0YWwgc2lnbmFs Cj4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiB0cnVlLCB3 YWl0IGZpbmlzaAo+ICsgICAgIH0gd2hpbGUgKHRyeV90b19mcmVlemUoKSk7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcICAgICAgICAgICAgICAgICAgIC8vaWYgZnJlZXpp bmcgaXMgaW4gZWZmZWN0LCB0cnkgdG8gZnJlZXplIHRoZSB0YXNrCj4gKyAgICAgX19yZXQ7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK PiArfSkKPiArCj7CoMKgICNlbHNlIC8qICFDT05GSUdfRlJFRVpFUiAqLwo+wqDCoCBzdGF0aWMg aW5saW5lIGJvb2wgZnJvemVuKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyByZXR1cm4gZmFsc2U7 IH0KPsKgwqAgc3RhdGljIGlubGluZSBib29sIGZyZWV6aW5nKHN0cnVjdCB0YXNrX3N0cnVjdCAq cCkgeyByZXR1cm4gZmFsc2U7IH0KPiBAQCAtMjk2LDYgKzMxMiwxNiBAQCBzdGF0aWMgaW5saW5l IHZvaWQgc2V0X2ZyZWV6YWJsZSh2b2lkKSB7fQo+wqDCoCAjZGVmaW5lIHdhaXRfZXZlbnRfZnJl ZXpla2lsbGFibGVfdW5zYWZlKHdxLCBjb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgIFwK PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdhaXRfZXZlbnRfa2lsbGFibGUod3Es IGNvbmRpdGlvbikKPsKgwqAKPiArI2RlZmluZSB3YWl0X2ZhdGFsX2ZyZWV6YWJsZSh3cSwgY29u ZGl0aW9uLCBleGNsdXNpdmUpICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyh7wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFwKPiArICAgICBpbnQgX19yZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgIGlmIChleGNsdXNpdmUpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAg ICAgICBfX3JldCA9IHdhaXRfZXZlbnRfa2lsbGFibGVfZXhjbHVzaXZlKHdxLCBjb25kaXRpb24p OyAgIFwKPiArICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgX19yZXQgPSB3YWl0X2V2ZW50 X2tpbGxhYmxlKHdxLCBjb25kaXRpb24pOyAgICAgICAgICAgICBcCj4gKyAgICAgX19yZXQ7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK PiArfSkKPiArCj7CoMKgICNlbmRpZiAvKiAhQ09ORklHX0ZSRUVaRVIgKi8KPsKgwqAKPsKgwqAg I2VuZGlmICAgICAgIC8qIEZSRUVaRVJfSF9JTkNMVURFRCAqLwo+ClRoYW5rcy4KCkJSLApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCuWPkeS7tuS6ujogUmFmYWVsIEou IFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0Pgrlj5HpgIHml7bpl7Q6IDIwMTblubQxMuaciDfm l6UgNjoxNQrmlLbku7bkuro6IOW0lOeri+mjngrmioTpgIE6IGxpbnV4LWtlcm5lbEB2Z2VyLmtl cm5lbC5vcmc7IG1pa2xvc0BzemVyZWRpLmh1OyBwYXZlbEB1Y3cuY3o7IGxlbi5icm93bkBpbnRl bC5jb207IGxpbnV4LWZzZGV2ZWxAdmdlci5rZXJuZWwub3JnOyB2aXJvQHplbml2LmxpbnV4Lm9y Zy51azsg5py06Iux5pWPOyDliJjmiY07IEppcmkgS29zaW5hCuS4u+mimDogUmU6IFtQQVRDSF0g ZnVzZTogZnJlZXppbmcgYWJvcnQgd2hlbiB1c2Ugd2FpdF9ldmVudF9raWxsYWJsZXssX2V4Y2x1 c2l2ZX0oKS4KCk9uIE1vbmRheSwgRGVjZW1iZXIgMDUsIDIwMTYgMTE6MTk6NDUgQU0gY3VpbGlm ZWkgd3JvdGU6Cj4gRnJlZXppbmcgcHJvY2VzcyBjYW4gYWJvcnQgd2hlbiBhIGNsaWVudCBpcyB3 YWl0aW5nIHVuaW50ZXJydXB0aWJseQo+IGZvciBhIHJlc3BvbnNlLiBBZGQgbmV3IG1hY3JvIHdh aXRfZmF0YWxfZnJlZXphYmxlIHRvIHRyeSB0byBmaXggaXQuCj4KPiBTaWduZWQtb2ZmLWJ5OiBj dWlsaWZlaSA8Y3VpbGlmZWlAeGlhb21pLmNvbT4KCkknbSBub3QgYSBiaWcgZmFuIG9mIHRoaXMg dG8gYmUgaG9uZXN0LgoKRG8gd2UgcmVhbGx5IHdhbnQgdG8gc3VzcGVuZCB0aGUgc3lzdGVtIChv ciBmcmVlemUgdGFza3MgZm9yIG90aGVyIHJlYXNvbnMpCmlmIHRoYXQgaGFwcGVucz8KCj4gLS0t Cj7CoCBmcy9mdXNlL2Rldi5jICAgICAgICAgICB8IDMwICsrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLQo+wqAgaW5jbHVkZS9saW51eC9mcmVlemVyLmggfCAyNiArKysrKysrKysrKysrKysr KysrKysrKysrKwo+wqAgMiBmaWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGV2LmMgYi9mcy9mdXNlL2Rldi5jCj4g aW5kZXggNzBlYTU3Yy4uZTMzYTA4MSAxMDA2NDQKPiAtLS0gYS9mcy9mdXNlL2Rldi5jCj4gKysr IGIvZnMvZnVzZS9kZXYuYwo+IEBAIC0xOSw2ICsxOSw3IEBACj7CoCAjaW5jbHVkZSA8bGludXgv cGlwZV9mc19pLmg+Cj7CoCAjaW5jbHVkZSA8bGludXgvc3dhcC5oPgo+wqAgI2luY2x1ZGUgPGxp bnV4L3NwbGljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvZnJlZXplci5oPgo+Cj7CoCBNT0RVTEVf QUxJQVNfTUlTQ0RFVihGVVNFX01JTk9SKTsKPsKgIE1PRFVMRV9BTElBUygiZGV2bmFtZTpmdXNl Iik7Cj4gQEAgLTk5LDYgKzEwMCwxOSBAQCB2b2lkIGZ1c2VfcmVxdWVzdF9mcmVlKHN0cnVjdCBm dXNlX3JlcSAqcmVxKQo+wqDCoMKgwqDCoMKgIGttZW1fY2FjaGVfZnJlZShmdXNlX3JlcV9jYWNo ZXAsIHJlcSk7Cj7CoCB9Cj4KPiArc3RhdGljIHZvaWQgYmxvY2tfc2lncyhzaWdzZXRfdCAqb2xk c2V0KQo+ICt7Cj4gKyAgICAgc2lnc2V0X3QgbWFzazsKPiArCj4gKyAgICAgc2lnaW5pdHNldGlu digmbWFzaywgc2lnbWFzayhTSUdLSUxMKSk7Cj4gKyAgICAgc2lncHJvY21hc2soU0lHX0JMT0NL LCAmbWFzaywgb2xkc2V0KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcmVzdG9yZV9zaWdzKHNp Z3NldF90ICpvbGRzZXQpCj4gK3sKPiArICAgICBzaWdwcm9jbWFzayhTSUdfU0VUTUFTSywgb2xk c2V0LCBOVUxMKTsKPiArfQo+ICsKPsKgIHZvaWQgX19mdXNlX2dldF9yZXF1ZXN0KHN0cnVjdCBm dXNlX3JlcSAqcmVxKQo+wqAgewo+wqDCoMKgwqDCoMKgIGF0b21pY19pbmMoJnJlcS0+Y291bnQp Owo+IEBAIC0xMzQsMTMgKzE0OCwxOCBAQCBzdGF0aWMgc3RydWN0IGZ1c2VfcmVxICpfX2Z1c2Vf Z2V0X3JlcShzdHJ1Y3QgZnVzZV9jb25uICpmYywgdW5zaWduZWQgbnBhZ2VzLAo+wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYm9vbCBmb3JfYmFja2dyb3VuZCkKPsKgIHsKPsKgwqDCoMKgwqDCoCBzdHJ1Y3Qg ZnVzZV9yZXEgKnJlcTsKPiArICAgICBzaWdzZXRfdCBvbGRzZXQ7Cj4gKyAgICAgaW50IGludHI7 Cj7CoMKgwqDCoMKgwqAgaW50IGVycjsKPsKgwqDCoMKgwqDCoCBhdG9taWNfaW5jKCZmYy0+bnVt X3dhaXRpbmcpOwo+Cj7CoMKgwqDCoMKgwqAgaWYgKGZ1c2VfYmxvY2tfYWxsb2MoZmMsIGZvcl9i YWNrZ3JvdW5kKSkgewo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlcnIgPSAtRUlOVFI7 Cj4gLSAgICAgICAgICAgICBpZiAod2FpdF9ldmVudF9raWxsYWJsZV9leGNsdXNpdmUoZmMtPmJs b2NrZWRfd2FpdHEsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWZ1c2VfYmxvY2tf YWxsb2MoZmMsIGZvcl9iYWNrZ3JvdW5kKSkpCj4gKyAgICAgICAgICAgICBibG9ja19zaWdzKCZv bGRzZXQpOwo+ICsgICAgICAgICAgICAgaW50ciA9IHdhaXRfZmF0YWxfZnJlZXphYmxlKGZjLT5i bG9ja2VkX3dhaXRxLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFmdXNlX2Jsb2Nr X2FsbG9jKGZjLCBmb3JfYmFja2dyb3VuZCksIHRydWUpOwo+ICsgICAgICAgICAgICAgcmVzdG9y ZV9zaWdzKCZvbGRzZXQpOwo+ICsgICAgICAgICAgICAgaWYgKGludHIpCj7CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPsKgwqDCoMKgwqDCoCB9 Cj7CoMKgwqDCoMKgwqAgLyogTWF0Y2hlcyBzbXBfd21iKCkgaW4gZnVzZV9zZXRfaW5pdGlhbGl6 ZWQoKSAqLwo+IEBAIC00MjcsOSArNDQ2LDEyIEBAIHN0YXRpYyB2b2lkIHJlcXVlc3Rfd2FpdF9h bnN3ZXIoc3RydWN0IGZ1c2VfY29ubiAqZmMsIHN0cnVjdCBmdXNlX3JlcSAqcmVxKQo+wqDCoMKg wqDCoMKgIH0KPgo+wqDCoMKgwqDCoMKgIGlmICghdGVzdF9iaXQoRlJfRk9SQ0UsICZyZXEtPmZs YWdzKSkgewo+ICsgICAgICAgICAgICAgc2lnc2V0X3Qgb2xkc2V0Owo+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAvKiBPbmx5IGZhdGFsIHNpZ25hbHMgbWF5IGludGVycnVwdCB0aGlzICov Cj4gLSAgICAgICAgICAgICBlcnIgPSB3YWl0X2V2ZW50X2tpbGxhYmxlKHJlcS0+d2FpdHEsCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2JpdChGUl9GSU5JU0hF RCwgJnJlcS0+ZmxhZ3MpKTsKPiArICAgICAgICAgICAgIGJsb2NrX3NpZ3MoJm9sZHNldCk7Cj4g KyAgICAgICAgICAgICBlcnIgPSB3YWl0X2ZhdGFsX2ZyZWV6YWJsZShyZXEtPndhaXRxLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfYml0KEZSX0ZJTklTSEVELCAmcmVxLT5m bGFncyksIGZhbHNlKTsKPiArICAgICAgICAgICAgIHJlc3RvcmVfc2lncygmb2xkc2V0KTsKPsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFlcnIpCj7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4KPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9mcmVlemVyLmggYi9pbmNsdWRlL2xpbnV4L2ZyZWV6ZXIuaAo+IGluZGV4IGRkMDNl ODMuLjI1MDRjZDAgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9mcmVlemVyLmgKPiArKysg Yi9pbmNsdWRlL2xpbnV4L2ZyZWV6ZXIuaAo+IEBAIC0yNTYsNiArMjU2LDIyIEBAIHN0YXRpYyBp bmxpbmUgaW50IGZyZWV6YWJsZV9zY2hlZHVsZV9ocnRpbWVvdXRfcmFuZ2Uoa3RpbWVfdCAqZXhw aXJlcywKPsKgwqDCoMKgwqDCoCBfX3JldHZhbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+wqAgfSkKPgo+ICsjZGVmaW5lIHdhaXRfZmF0 YWxfZnJlZXphYmxlKHdxLCBjb25kaXRpb24sIGV4Y2x1c2l2ZSkgICAgICAgICAgICAgICAgICAg ICAgIFwKPiArKHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ICsgICAgIGludCBfX3JldCA9IDA7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAg ZG8ge8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgXAo+ICsgICAgICAgICAgICAgaWYgKGV4Y2x1c2l2ZSkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgIF9fcmV0 ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX2V4Y2x1c2l2ZSh3cSwgIFwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24pOyAg ICAgXAo+ICsgICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgIF9fcmV0ID0gd2Fp dF9ldmVudF9pbnRlcnJ1cHRpYmxlKHdxLCAgICAgICAgICAgIFwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24pOyAgICAgXAo+ ICsgICAgICAgICAgICAgaWYgKCFfX3JldCB8fCBmYXRhbF9zaWduYWxfcGVuZGluZyhjdXJyZW50 KSkgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArICAgICB9IHdoaWxlICh0cnlfdG9f ZnJlZXplKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAg IF9fcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCj4gK30pCj4gKwo+wqAgI2Vsc2UgLyogIUNPTkZJR19GUkVFWkVSICovCj7CoCBz dGF0aWMgaW5saW5lIGJvb2wgZnJvemVuKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgeyByZXR1cm4g ZmFsc2U7IH0KPsKgIHN0YXRpYyBpbmxpbmUgYm9vbCBmcmVlemluZyhzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnApIHsgcmV0dXJuIGZhbHNlOyB9Cj4gQEAgLTI5Niw2ICszMTIsMTYgQEAgc3RhdGljIGlu bGluZSB2b2lkIHNldF9mcmVlemFibGUodm9pZCkge30KPsKgICNkZWZpbmUgd2FpdF9ldmVudF9m cmVlemVraWxsYWJsZV91bnNhZmUod3EsIGNvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAg XAo+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3YWl0X2V2ZW50X2tpbGxhYmxlKHdxLCBj b25kaXRpb24pCj4KPiArI2RlZmluZSB3YWl0X2ZhdGFsX2ZyZWV6YWJsZSh3cSwgY29uZGl0aW9u LCBleGNsdXNpdmUpICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyh7wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFwKPiArICAgICBpbnQgX19yZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAo+ICsgICAgIGlmIChleGNsdXNpdmUpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgICAgICBf X3JldCA9IHdhaXRfZXZlbnRfa2lsbGFibGVfZXhjbHVzaXZlKHdxLCBjb25kaXRpb24pOyAgIFwK PiArICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAo+ICsgICAgICAgICAgICAgX19yZXQgPSB3YWl0X2V2ZW50X2tpbGxh YmxlKHdxLCBjb25kaXRpb24pOyAgICAgICAgICAgICBcCj4gKyAgICAgX19yZXQ7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiArfSkK PiArCj7CoCAjZW5kaWYgLyogIUNPTkZJR19GUkVFWkVSICovCj4KPsKgICNlbmRpZiAgICAgICAv KiBGUkVFWkVSX0hfSU5DTFVERUQgKi8KPgoKVGhhbmtzLApSYWZhZWwKCg==