From mboxrd@z Thu Jan 1 00:00:00 1970 From: majianpeng Subject: Re: Re: [PATCH v1] md: add sync-bitmap to only resync WRITTEN data when adding new disk in raid array. Date: Mon, 1 Jul 2013 19:40:40 +0800 Message-ID: <201307011940314871643@gmail.com> References: <1372150297-31271-1-git-send-email-robin.k.dong@gmail.com> <201306260851362261286@gmail.com>, Reply-To: majianpeng Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Return-path: Sender: linux-raid-owner@vger.kernel.org To: Robin Dong Cc: linux-raid , Robin Dong , NeilBrown List-Id: linux-raid.ids PkhpIEppYXBlbmcsDQo+DQo+VGhlIGdyYW51bGFyaXR5IG9mIGZpbGUtc3lzdGVtIGFuZCBtZCBp cyB2ZXJ5IGRpZmZlcmVudC4gRm9yIGV4YW1wbGUsIGlmDQo+b25lIGJpdCBpbiBiaXRtYXAgdGFn IGFzIDE2TUIgY2h1bmssIGJ1dCB0aGUgZmlsZS1zeXN0ZW0gb25seSB3cml0ZSBmaXJzdA0KPmJs b2NrICg0SykgaW4gdGhpcyBjaHVuaywgdGhlIGJpdCBub3cgbXVzdCBiZSBzZXQuDQo+QnV0IHdo ZW4gc29tZSBvbmUgcmVhZCB0aGUgZW5kIG9mIHRoaXMgY2h1bmssIHdlIGNhbid0IGtub3cgd2hl cmUgaXMgdGhlDQo+bm8tc3luYyBhcmVhIGFuZCB3aGVyZSBpcyB0aGUgc3luYyBhcmVhIGluIHRo aXMgMTZNQiBjaHVuay4NCj4NClllcy5JZiB0aGUgYXJlYSBvZiByZWFkaW5nIGlzIGxpa2U6DQp8 LS1zeW5jLWFyZWEtLS18LS0tbm8tc3luYy1hcmVhLS18DQpJdCBzaG91bGQgc3BsaXQgdGhlIG9y aWdpbmFsIGJpbyBpbnRvIHR3byBvciBtb3JlIGJpby4NCk9uZSBmb3Igc3luYy1hcmVhLGl0IHNo b3VsZCByZWFkIGZyb20gbG93LWRyaXZlci4NCk90aGVyIGZvciBuby1zeW5jLWFyZWEsIGl0IHNo b3VsZCBvbmx5IHJldHJ1biB6ZXJvIGxpa2Ugc2RkLg0KDQpUaGFua3MhDQpKaWFucGVuZw0KPg0K PjIwMTMvNi8yNiBrZXJuZWxtYWlsIDxrZWRhY29ta2VybmVsQGdtYWlsLmNvbT4NCj4NCj4+ID5G cm9tOiBSb2JpbiBEb25nIDxzYW5iYWlAdGFvYmFvLmNvbT4NCj4+ID4NCj4+ID5BZGQgYSBuZXcg Yml0bWFwIHR5cGUgbmFtZWQgInN5bmMtYml0bWFwIiBmb3IgbWQsIGFsbCB0aGUgV1JJVFRFTiBk YXRhDQo+PiB3aWxsIGJlDQo+PiA+bWFya2VkIGFuZCB3aGVuIGFkZGluZyBhIG5ldyBkaXNrLCB0 aGUgbWQgd2lsbCBvbmx5IHJlc3luYyBXUklUVEVOIGRhdGEgdG8NCj4+ID5uZXcgZGlzayB0aGVy ZWZvcmUgaXQgd2lsbCBzYXZlIGEgbG90IG9mIHRpbWUgYW5kIHJlZHVjZSBkaXNrLWR1cmFiaWxp dHkuDQo+PiA+DQo+PiA+V2UgYWRkIHRoZSAic3luYy1iaXRtYXAiIGJlaGluZCB0aGUgIndyaXRl LWludGVudC1iaXRtYXAiLCBub3QgY2xvc2VseSBidXQNCj4+ID5hbGlnbmVkIHRvIFBBR0VfU0la RToNCj4+ID4NCj4+ID58ICAgICAgICAgIHBhZ2UwICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAgICBwYWdlMSAgICAgICAgICAgICAgICAgICB8DQo+PiA+Ky0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KPj4g PnxiaXRtYXBfc3VwZXIgYW5kIHdyaXRlLWludGVudC1iaXRtYXAgIHwgICAgICAgICBzeW5jLWJp dG1hcCAgICAgICAgICAgIHwNCj4+ID4NCj4+ID5hbGwgdGhlIHdyaXRlLW9wZXJhdGlvbiB3aWxs IHNldCB0aGUgYml0IGluIHN5bmMtYml0bWFwLg0KPj4gPg0KPj4gPg0KPj4gSSB2ZXJ5IGxpa2Ug dGhpcyBmZWF0dXJlLiBCdXQgZm9yIHRoZSByZWFkL3dyaXRlIGZvciBuby1zeW5jIGFyZWEsIHlv dXINCj4+IHBhdGNoIGNhbid0IGRvLg0KPj4gSSB0aGluayBmb3IgcmVhZCBmcm9tIG5vLXN5bmMg YXJlYSwgdGhlIG9wZXJhdGlvbiBsaWtlIHNzZCBvcg0KPj4gdGhpbi1wcm92aXNpb24sIGl0IHNo b3VsZCByZXR1cm4gMC4NCj4+DQo+PiBUaGFua3MNCj4+IEppYW5wZW5nIE1hDQo+PiA+VEVTVCBD QVNFOg0KPj4gPg0KPj4gPiAgICAgICBtZGFkbSAtLWNyZWF0ZSAvZGV2L21kMSAtLWJpdG1hcD1p bnRlcm5hbCAtLWNodW5rPTY0IC0tbGV2ZWw9MQ0KPj4gLS1yYWlkLWRldmljZXM9MiAvZGV2L3Nk ZiBtaXNzaW5nIC0tYXNzdW1lLWNsZWFuDQo+PiA+ICAgICAgIG1rZnMuZXh0NCAvZGV2L21kMQ0K Pj4gPiAgICAgICBtb3VudCAtdCBleHQ0IC9kZXYvbWQxIC9tbnQvDQo+PiA+ICAgICAgIGNwIGtl cm5lbC50Z3ogL21udC8NCj4+ID4gICAgICAgcmVib290DQo+PiA+ICAgICAgIG1kYWRtIC0tYXNz ZW1ibGUgL2Rldi9tZDEgL2Rldi9zZGYNCj4+ID4gICAgICAgbWRhZG0gLS1hZGQgL2Rldi9tZDEg L2Rldi9zZGcNCj4+ID4gICAgICAgZWNobyBvZmZsaW5lID4gL3N5cy9ibG9jay9zZGYvZGV2aWNl L3N0YXRlDQo+PiA+ICAgICAgIG1vdW50IC10IGV4dDQgL2Rldi9tZDEgL21udC8gKG1vdW50IHN1 Y2Nlc3MpDQo+PiA+ICAgICAgIGNrc3VtIC9tbnQva2VybmVsLnRneiAgICAgICAgKGNrc3VtIG9r KQ0KPj4gPg0KPj4gPlRPRE86DQo+PiA+DQo+PiA+ICAgICAgICogQWxsb3cgImRpc2NhcmQiIHRv IGNsZWFyIGJpdCBpbiBzeW5jLWJpdG1hcA0KPj4gPiAgICAgICAqIE1vcmUgY29tcGxpY2F0ZWQg dGVzdCBjYXNlIG9uIHJhaWQ1DQo+PiA+DQo+PiA+U2lnbmVkLW9mZi1ieTogUm9iaW4gRG9uZyA8 c2FuYmFpQHRhb2Jhby5jb20+DQo+PiA+Q2M6IE5laWxCcm93biA8bmVpbGJAc3VzZS5kZT4NCj4+ ID4tLS0NCj4+ID4gZHJpdmVycy9tZC9iaXRtYXAuYyAgICAgICAgICAgIHwgIDE5NQ0KPj4gKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQ0KPj4gPiBkcml2ZXJzL21kL2Jp dG1hcC5oICAgICAgICAgICAgfCAgICA1ICsNCj4+ID4gZHJpdmVycy9tZC9tZC5jICAgICAgICAg ICAgICAgIHwgICAgNyArKy0NCj4+ID4gZHJpdmVycy9tZC9tZC5oICAgICAgICAgICAgICAgIHwg ICAgMSArDQo+PiA+IGRyaXZlcnMvbWQvcmFpZDEuYyAgICAgICAgICAgICB8ICAgIDcgKysNCj4+ ID4gZHJpdmVycy9tZC9yYWlkNS5jICAgICAgICAgICAgIHwgICAgNyArKw0KPj4gPiBpbmNsdWRl L3VhcGkvbGludXgvcmFpZC9tZF9wLmggfCAgICAyICsNCj4+ID4gNyBmaWxlcyBjaGFuZ2VkLCAy MTcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkNCj4+ID4NCj4+ID5kaWZmIC0tZ2l0IGEv ZHJpdmVycy9tZC9iaXRtYXAuYyBiL2RyaXZlcnMvbWQvYml0bWFwLmMNCj4+ID5pbmRleCA1YTJj NzU0Li44NjI3OWUxIDEwMDY0NA0KPj4gPi0tLSBhL2RyaXZlcnMvbWQvYml0bWFwLmMNCj4+ID4r KysgYi9kcml2ZXJzL21kL2JpdG1hcC5jDQo+PiA+QEAgLTMwLDYgKzMwLDEzIEBADQo+PiA+ICNp bmNsdWRlICJtZC5oIg0KPj4gPiAjaW5jbHVkZSAiYml0bWFwLmgiDQo+PiA+DQo+PiA+K3N0YXRp YyBpbmxpbmUgc2VjdG9yX3Qgc3luY2JpdG1hcF9vZmZzZXQoc3RydWN0IGJpdG1hcCAqYml0bWFw LCBzZWN0b3JfdA0KPj4gYmxvY2spDQo+PiA+K3sNCj4+ID4rICAgICAgcmV0dXJuIGJsb2NrICsN Cj4+ID4rICAgICAgICAgICAgICAoYml0bWFwLT5zeW5jYml0bWFwX251bV9wYWdlcyA8PCBiaXRt YXAtPmNvdW50cy5jaHVua3NoaWZ0DQo+PiA+KyAgICAgICAgICAgICAgIDw8IFBBR0VfU0hJRlQg PDwgMyk7DQo+PiA+K30NCj4+ID4rDQo+PiA+IHN0YXRpYyBpbmxpbmUgY2hhciAqYm1uYW1lKHN0 cnVjdCBiaXRtYXAgKmJpdG1hcCkNCj4+ID4gew0KPj4gPiAgICAgICByZXR1cm4gYml0bWFwLT5t ZGRldiA/IG1kbmFtZShiaXRtYXAtPm1kZGV2KSA6ICJtZFgiOw0KPj4gPkBAIC02ODIsMTggKzY4 OSw0MCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICpmaWxlbWFwX2dldF9wYWdlKHN0cnVj dA0KPj4gYml0bWFwX3N0b3JhZ2UgKnN0b3JlLA0KPj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLSBmaWxlX3BhZ2VfaW5kZXgoc3RvcmUsIDApXTsNCj4+ID4gfQ0KPj4gPg0KPj4gPi1z dGF0aWMgaW50IGJpdG1hcF9zdG9yYWdlX2FsbG9jKHN0cnVjdCBiaXRtYXBfc3RvcmFnZSAqc3Rv cmUsDQo+PiA+LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgY2h1 bmtzLCBpbnQgd2l0aF9zdXBlcikNCj4+ID4rc3RhdGljIHZvaWQgY2h1bmtzX3RvX3BhZ2VzKHVu c2lnbmVkIGxvbmcgY2h1bmtzLCB1bnNpZ25lZCBsb25nDQo+PiAqcmVzX2J5dGVzLA0KPj4gPisg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcmVzX3BhZ2VzLCBpbnQgd2l0aF9z dXBlcikNCj4+ID4gew0KPj4gPi0gICAgICBpbnQgcG51bTsNCj4+ID4tICAgICAgdW5zaWduZWQg bG9uZyBudW1fcGFnZXM7DQo+PiA+ICAgICAgIHVuc2lnbmVkIGxvbmcgYnl0ZXM7DQo+PiA+DQo+ PiA+ICAgICAgIGJ5dGVzID0gRElWX1JPVU5EX1VQKGNodW5rcywgOCk7DQo+PiA+ICAgICAgIGlm ICh3aXRoX3N1cGVyKQ0KPj4gPiAgICAgICAgICAgICAgIGJ5dGVzICs9IHNpemVvZihiaXRtYXBf c3VwZXJfdCk7DQo+PiA+DQo+PiA+LSAgICAgIG51bV9wYWdlcyA9IERJVl9ST1VORF9VUChieXRl cywgUEFHRV9TSVpFKTsNCj4+ID4rICAgICAgaWYgKHJlc19ieXRlcykNCj4+ID4rICAgICAgICAg ICAgICAqcmVzX2J5dGVzID0gYnl0ZXM7DQo+PiA+KyAgICAgIGlmIChyZXNfcGFnZXMpDQo+PiA+ KyAgICAgICAgICAgICAgKnJlc19wYWdlcyA9IERJVl9ST1VORF9VUChieXRlcywgUEFHRV9TSVpF KTsNCj4+ID4rfQ0KPj4gPisNCj4+ID4rc3RhdGljIGludCBiaXRtYXBfc3RvcmFnZV9hbGxvYyhz dHJ1Y3QgYml0bWFwX3N0b3JhZ2UgKnN0b3JlLA0KPj4gPisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGNodW5rcywgaW50IHdpdGhfc3VwZXIsDQo+PiA+KyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3aXRoX3N5bmNfYml0bWFwKQ0KPj4gPit7DQo+ PiA+KyAgICAgIGludCBwbnVtOw0KPj4gPisgICAgICB1bnNpZ25lZCBsb25nIG51bV9wYWdlczsN Cj4+ID4rICAgICAgdW5zaWduZWQgbG9uZyBieXRlczsNCj4+ID4rICAgICAgdW5zaWduZWQgbG9u ZyBzeW5jYml0bWFwX251bV9wYWdlczsNCj4+ID4rDQo+PiA+KyAgICAgIGNodW5rc190b19wYWdl cyhjaHVua3MsICZieXRlcywgJm51bV9wYWdlcywgd2l0aF9zdXBlcik7DQo+PiA+KyAgICAgIC8q IHdlIG5lZWQgdHdvIGJpdG1hcHM6IHdyaXRlLWludGVudC1iaXRtYXAgYW5kIHN5bmMtYml0bWFw LA0KPj4gc3luYy1iaXRtYXANCj4+ID4rICAgICAgICogbG9jYXRlcyBiZWhpbmQgd3JpdGUtaW50 ZW50LWJpdG1hcCBjbG9zZWx5LiB3cml0ZS1pbnRlbnQtYml0DQo+PiBtYXBzDQo+PiA+KyAgICAg ICAqICJ0aGlzIHdhcyB3cml0dGVuIHJlY2VudGx5LCBhIHJlc3luYyBtaWdodCBiZSBuZWVkZWQg YWZ0ZXIgYQ0KPj4gY3Jhc2giDQo+PiA+KyAgICAgICAqIGFuZCB0aGUgc3luYy1iaXQgbWFwcyAi VGhpcyBoYXMgYmVlbiB3cml0dGVuIHNpbmNlIGFycmF5IGNyZWF0ZSwNCj4+ID4rICAgICAgICog c28gdGhlIGNodW5rIG5lZWRzIHRvIGJlIHJlY292ZXJlZCB0byBhbnkgc3BhcmUiLg0KPj4gPisg ICAgICAgKi8NCj4+ID4rICAgICAgY2h1bmtzX3RvX3BhZ2VzKGNodW5rcywgTlVMTCwgJnN5bmNi aXRtYXBfbnVtX3BhZ2VzLCAwKTsNCj4+ID4rICAgICAgaWYgKHdpdGhfc3luY19iaXRtYXApDQo+ PiA+KyAgICAgICAgICAgICAgbnVtX3BhZ2VzICs9IHN5bmNiaXRtYXBfbnVtX3BhZ2VzOw0KPj4g Pg0KPj4gPiAgICAgICBzdG9yZS0+ZmlsZW1hcCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBwYWdl ICopDQo+PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG51bV9wYWdlcywgR0ZQ X0tFUk5FTCk7DQo+PiA+QEAgLTg1Myw2ICs4ODIsNDEgQEAgc3RhdGljIHZvaWQgYml0bWFwX2Zp bGVfc2V0X2JpdChzdHJ1Y3QgYml0bWFwDQo+PiAqYml0bWFwLCBzZWN0b3JfdCBibG9jaykNCj4+ ID4gICAgICAgc2V0X3BhZ2VfYXR0cihiaXRtYXAsIHBhZ2UtPmluZGV4LCBCSVRNQVBfUEFHRV9E SVJUWSk7DQo+PiA+IH0NCj4+ID4NCj4+ID4rc3RhdGljIGludCBzeW5jYml0bWFwX2ZpbGVfdGVz dF9iaXQoc3RydWN0IGJpdG1hcCAqYml0bWFwLCBzZWN0b3JfdA0KPj4gYmxvY2spDQo+PiA+K3sN Cj4+ID4rICAgICAgdW5zaWduZWQgbG9uZyBiaXQ7DQo+PiA+KyAgICAgIHN0cnVjdCBwYWdlICpw YWdlOw0KPj4gPisgICAgICB2b2lkICprYWRkcjsNCj4+ID4rICAgICAgdW5zaWduZWQgbG9uZyBj aHVuazsNCj4+ID4rICAgICAgaW50IHJlczsNCj4+ID4rDQo+PiA+KyAgICAgIGNodW5rID0gc3lu Y2JpdG1hcF9vZmZzZXQoYml0bWFwLCBibG9jaykgPj4NCj4+IGJpdG1hcC0+Y291bnRzLmNodW5r c2hpZnQ7DQo+PiA+Kw0KPj4gPisgICAgICBwYWdlID0gZmlsZW1hcF9nZXRfcGFnZSgmYml0bWFw LT5zdG9yYWdlLCBjaHVuayk7DQo+PiA+KyAgICAgIGlmICghcGFnZSkNCj4+ID4rICAgICAgICAg ICAgICByZXR1cm4gMTsNCj4+ID4rICAgICAgYml0ID0gZmlsZV9wYWdlX29mZnNldCgmYml0bWFw LT5zdG9yYWdlLCBjaHVuayk7DQo+PiA+Kw0KPj4gPisgICAgICAvKiBzZXQgdGhlIGJpdCAqLw0K Pj4gPisgICAgICBrYWRkciA9IGttYXBfYXRvbWljKHBhZ2UpOw0KPj4gPisgICAgICBpZiAodGVz dF9iaXQoQklUTUFQX0hPU1RFTkRJQU4sICZiaXRtYXAtPmZsYWdzKSkNCj4+ID4rICAgICAgICAg ICAgICByZXMgPSB0ZXN0X2JpdChiaXQsIGthZGRyKTsNCj4+ID4rICAgICAgZWxzZQ0KPj4gPisg ICAgICAgICAgICAgIHJlcyA9IHRlc3RfYml0X2xlKGJpdCwga2FkZHIpOw0KPj4gPisgICAgICBr dW5tYXBfYXRvbWljKGthZGRyKTsNCj4+ID4rICAgICAgcHJfZGVidWcoInRlc3Qgc3luY2JpdG1h cCBiaXQgJWx1IHBhZ2UgJWx1XG4iLCBiaXQsIHBhZ2UtPmluZGV4KTsNCj4+ID4rICAgICAgcmV0 dXJuIHJlczsNCj4+ID4rfQ0KPj4gPisNCj4+ID4rLyoNCj4+ID4rICogc3luY2JpdG1hcF9maWxl X3NldF9iaXQgLS0gc2V0IHRoZSBiaXQgaW4gc3luYy1iaXRtYXAsIGp1c3QganVtcCBvdXQNCj4+ ID4rICogdGhlIG9mZnNldCBvZiB3cml0ZS1pbnRlbnQtYml0bWFwLg0KPj4gPisgKi8NCj4+ID4r c3RhdGljIHZvaWQgc3luY2JpdG1hcF9maWxlX3NldF9iaXQoc3RydWN0IGJpdG1hcCAqYml0bWFw LCBzZWN0b3JfdA0KPj4gYmxvY2spDQo+PiA+K3sNCj4+ID4rICAgICAgYml0bWFwX2ZpbGVfc2V0 X2JpdChiaXRtYXAsIHN5bmNiaXRtYXBfb2Zmc2V0KGJpdG1hcCwgYmxvY2spKTsNCj4+ID4rfQ0K Pj4gPisNCj4+ID4gc3RhdGljIHZvaWQgYml0bWFwX2ZpbGVfY2xlYXJfYml0KHN0cnVjdCBiaXRt YXAgKmJpdG1hcCwgc2VjdG9yX3QgYmxvY2spDQo+PiA+IHsNCj4+ID4gICAgICAgdW5zaWduZWQg bG9uZyBiaXQ7DQo+PiA+QEAgLTEwMzgsNiArMTEwMiw2MSBAQCBzdGF0aWMgaW50IGJpdG1hcF9p bml0X2Zyb21fZGlzayhzdHJ1Y3QgYml0bWFwDQo+PiAqYml0bWFwLCBzZWN0b3JfdCBzdGFydCkN Cj4+ID4gICAgICAgICAgICAgICBvZmZzZXQgPSAwOw0KPj4gPiAgICAgICB9DQo+PiA+DQo+PiA+ KyAgICAgIGlmIChiaXRtYXAtPm1kZGV2LT5iaXRtYXBfaW5mby5zeW5jX2JpdG1hcCkgew0KPj4g PisgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjaHVua3M7IGkrKykgew0KPj4gPisgICAg ICAgICAgICAgICAgICAgICAgaW50IGI7DQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICBpbmRl eCA9IGZpbGVfcGFnZV9pbmRleCgmYml0bWFwLT5zdG9yYWdlLCBpKSArDQo+PiA+KyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcC0+c3luY2JpdG1hcF9udW1fcGFnZXM7DQo+PiA+ KyAgICAgICAgICAgICAgICAgICAgICBiaXQgPSBmaWxlX3BhZ2Vfb2Zmc2V0KCZiaXRtYXAtPnN0 b3JhZ2UsIGkpOw0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9IG9sZGlu ZGV4KSB7DQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRoaXMgaXMgYSBu ZXcgcGFnZSwgcmVhZCBpdCBpbiAqLw0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYWdlID0gc3RvcmUtPmZpbGVtYXBbaW5kZXhdOw0KPj4gPisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiAoZmlsZSkNCj4+ID4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXQgPSByZWFkX3BhZ2UoZmlsZSwgaW5kZXgsDQo+PiBiaXRtYXAsDQo+PiA+KyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0Vf U0laRSwgcGFnZSk7DQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4+ ID4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSByZWFkX3NiX3Bh Z2UoDQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi aXRtYXAtPm1kZGV2LA0KPj4gPisNCj4+ICBiaXRtYXAtPm1kZGV2LT5iaXRtYXBfaW5mby5vZmZz ZXQsDQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YWdlLA0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5kZXgsIFBBR0VfU0laRSk7DQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IChyZXQpDQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBl cnI7DQo+PiA+Kw0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRpbmRleCA9 IGluZGV4Ow0KPj4gPisNCj4+ID4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG91 dG9mZGF0ZSkgew0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q DQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaWYgYml0bWFw IGlzIG91dCBvZiBkYXRlLCBkaXJ0eQ0KPj4gdGhlDQo+PiA+KyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICogd2hvbGUgcGFnZSBhbmQgd3JpdGUgaXQgb3V0DQo+PiA+KyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQo+PiA+KyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZHIgPSBrbWFwX2F0b21pYyhwYWdlKTsNCj4+ ID4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1zZXQocGFkZHIgKyBv ZmZzZXQsIDB4ZmYsDQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQQUdFX1NJWkUgLSBvZmZzZXQpOw0KPj4gPisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGt1bm1hcF9hdG9taWMocGFkZHIpOw0KPj4gPisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlX3BhZ2UoYml0bWFwLCBwYWdlLCAxKTsN Cj4+ID4rDQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0g LUVJTzsNCj4+ID4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVz dF9iaXQoQklUTUFQX1dSSVRFX0VSUk9SLA0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJpdG1hcC0+ZmxhZ3MpKQ0KPj4gPisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7DQo+PiA+ KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCj4+ID4rICAgICAgICAgICAgICAgICAg ICAgIH0NCj4+ID4rICAgICAgICAgICAgICAgICAgICAgIHBhZGRyID0ga21hcF9hdG9taWMocGFn ZSk7DQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICBpZiAodGVzdF9iaXQoQklUTUFQX0hPU1RF TkRJQU4sICZiaXRtYXAtPmZsYWdzKSkNCj4+ID4rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYiA9IHRlc3RfYml0KGJpdCwgcGFkZHIpOw0KPj4gPisgICAgICAgICAgICAgICAgICAgICAg ZWxzZQ0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGVzdF9iaXRfbGUo Yml0LCBwYWRkcik7DQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICBrdW5tYXBfYXRvbWljKHBh ZGRyKTsNCj4+ID4rICAgICAgICAgICAgICAgICAgICAgIGlmIChiKSB7DQo+PiA+KyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIGlmIHRoZSBkaXNrIGJpdCBpcyBzZXQsIHNldCB0aGUg bWVtb3J5DQo+PiBiaXQgKi8NCj4+ID4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lu Y2JpdG1hcF9maWxlX3NldF9iaXQoYml0bWFwLA0KPj4gKHNlY3Rvcl90KWkgPDwNCj4+ID4rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcC0+Y291bnRz LmNodW5rc2hpZnQpOw0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRfY250 Kys7DQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICB9DQo+PiA+KyAgICAgICAgICAgICAgICAg ICAgICBvZmZzZXQgPSAwOw0KPj4gPisgICAgICAgICAgICAgIH0NCj4+ID4rICAgICAgfQ0KPj4g PiAgICAgICBwcmludGsoS0VSTl9JTkZPICIlczogYml0bWFwIGluaXRpYWxpemVkIGZyb20gZGlz azogIg0KPj4gPiAgICAgICAgICAgICAgInJlYWQgJWx1IHBhZ2VzLCBzZXQgJWx1IG9mICVsdSBi aXRzXG4iLA0KPj4gPiAgICAgICAgICAgICAgYm1uYW1lKGJpdG1hcCksIHN0b3JlLT5maWxlX3Bh Z2VzLA0KPj4gPkBAIC0xMzAzLDYgKzE0MjIsNyBAQCBpbnQgYml0bWFwX3N0YXJ0d3JpdGUoc3Ry dWN0IGJpdG1hcCAqYml0bWFwLA0KPj4gc2VjdG9yX3Qgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNl Y3QNCj4+ID4gICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPj4gPiAgICAgICAgICAg ICAgIH0NCj4+ID4NCj4+ID4rICAgICAgICAgICAgICBzeW5jYml0bWFwX2ZpbGVfc2V0X2JpdChi aXRtYXAsIG9mZnNldCk7DQo+PiA+ICAgICAgICAgICAgICAgc3dpdGNoICgqYm1jKSB7DQo+PiA+ ICAgICAgICAgICAgICAgY2FzZSAwOg0KPj4gPiAgICAgICAgICAgICAgICAgICAgICAgYml0bWFw X2ZpbGVfc2V0X2JpdChiaXRtYXAsIG9mZnNldCk7DQo+PiA+QEAgLTE0MzEsNiArMTU1MSw0MiBA QCBpbnQgYml0bWFwX3N0YXJ0X3N5bmMoc3RydWN0IGJpdG1hcCAqYml0bWFwLA0KPj4gc2VjdG9y X3Qgb2Zmc2V0LCBzZWN0b3JfdCAqYmxvY2tzLA0KPj4gPiB9DQo+PiA+IEVYUE9SVF9TWU1CT0wo Yml0bWFwX3N0YXJ0X3N5bmMpOw0KPj4gPg0KPj4gPitpbnQgX19zeW5jYml0bWFwX3N0YXJ0X3N5 bmMoc3RydWN0IGJpdG1hcCAqYml0bWFwLCBzZWN0b3JfdCBvZmZzZXQsDQo+PiA+KyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0b3JfdCAqYmxvY2tzKQ0K Pj4gPit7DQo+PiA+KyAgICAgIGludCByZXM7DQo+PiA+KyAgICAgIHVuc2lnbmVkIGxvbmcgY3Np emU7DQo+PiA+KyAgICAgIGlmIChiaXRtYXAgPT0gTlVMTCkgew0KPj4gPisgICAgICAgICAgICAg ICpibG9ja3MgPSAxMDI0Ow0KPj4gPisgICAgICAgICAgICAgIHJldHVybiAxOw0KPj4gPisgICAg ICB9DQo+PiA+Kw0KPj4gPisgICAgICBzcGluX2xvY2tfaXJxKCZiaXRtYXAtPmNvdW50cy5sb2Nr KTsNCj4+ID4rICAgICAgcmVzID0gc3luY2JpdG1hcF9maWxlX3Rlc3RfYml0KGJpdG1hcCwgb2Zm c2V0KTsNCj4+ID4rICAgICAgaWYgKHJlcykgew0KPj4gPisgICAgICAgICAgICAgIGNzaXplID0g KChzZWN0b3JfdCkxKSA8PCBiaXRtYXAtPmNvdW50cy5jaHVua3NoaWZ0Ow0KPj4gPisgICAgICAg ICAgICAgICpibG9ja3MgPSBjc2l6ZSAtIChvZmZzZXQgJiAoY3NpemUgLSAxKSk7DQo+PiA+KyAg ICAgIH0NCj4+ID4rICAgICAgc3Bpbl91bmxvY2tfaXJxKCZiaXRtYXAtPmNvdW50cy5sb2NrKTsN Cj4+ID4rICAgICAgcmV0dXJuIHJlczsNCj4+ID4rfQ0KPj4gPisNCj4+ID4raW50IHN5bmNiaXRt YXBfc3RhcnRfc3luYyhzdHJ1Y3QgYml0bWFwICpiaXRtYXAsIHNlY3Rvcl90IG9mZnNldCwNCj4+ ID4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rvcl90 ICpibG9ja3MpDQo+PiA+K3sNCj4+ID4rICAgICAgaW50IHJ2ID0gMDsNCj4+ID4rICAgICAgc2Vj dG9yX3QgYmxvY2tzMTsNCj4+ID4rDQo+PiA+KyAgICAgICpibG9ja3MgPSAwOw0KPj4gPisgICAg ICB3aGlsZSAoKmJsb2NrcyA8IChQQUdFX1NJWkU+PjkpKSB7DQo+PiA+KyAgICAgICAgICAgICAg cnYgfD0gX19zeW5jYml0bWFwX3N0YXJ0X3N5bmMoYml0bWFwLCBvZmZzZXQsICZibG9ja3MxKTsN Cj4+ID4rICAgICAgICAgICAgICBvZmZzZXQgKz0gYmxvY2tzMTsNCj4+ID4rICAgICAgICAgICAg ICAqYmxvY2tzICs9IGJsb2NrczE7DQo+PiA+KyAgICAgIH0NCj4+ID4rICAgICAgcmV0dXJuIHJ2 Ow0KPj4gPit9DQo+PiA+K0VYUE9SVF9TWU1CT0woc3luY2JpdG1hcF9zdGFydF9zeW5jKTsNCj4+ ID4rDQo+PiA+IHZvaWQgYml0bWFwX2VuZF9zeW5jKHN0cnVjdCBiaXRtYXAgKmJpdG1hcCwgc2Vj dG9yX3Qgb2Zmc2V0LCBzZWN0b3JfdA0KPj4gKmJsb2NrcywgaW50IGFib3J0ZWQpDQo+PiA+IHsN Cj4+ID4gICAgICAgYml0bWFwX2NvdW50ZXJfdCAqYm1jOw0KPj4gPkBAIC0xODA1LDYgKzE5NjEs NyBAQCBpbnQgYml0bWFwX3Jlc2l6ZShzdHJ1Y3QgYml0bWFwICpiaXRtYXAsIHNlY3Rvcl90DQo+ PiBibG9ja3MsDQo+PiA+ICAgICAgIHNlY3Rvcl90IG9sZF9ibG9ja3MsIG5ld19ibG9ja3M7DQo+ PiA+ICAgICAgIGludCBjaHVua3NoaWZ0Ow0KPj4gPiAgICAgICBpbnQgcmV0ID0gMDsNCj4+ID4r ICAgICAgdW5zaWduZWQgbG9uZyBwbnVtLCBvbGRfcG51bSwgbnVtX3BhZ2VzLCBvbGRfbnVtX3Bh Z2VzOw0KPj4gPiAgICAgICBsb25nIHBhZ2VzOw0KPj4gPiAgICAgICBzdHJ1Y3QgYml0bWFwX3Bh Z2UgKm5ld19icDsNCj4+ID4NCj4+ID5AQCAtMTg0Miw3ICsxOTk5LDggQEAgaW50IGJpdG1hcF9y ZXNpemUoc3RydWN0IGJpdG1hcCAqYml0bWFwLCBzZWN0b3JfdA0KPj4gYmxvY2tzLA0KPj4gPiAg ICAgICBtZW1zZXQoJnN0b3JlLCAwLCBzaXplb2Yoc3RvcmUpKTsNCj4+ID4gICAgICAgaWYgKGJp dG1hcC0+bWRkZXYtPmJpdG1hcF9pbmZvLm9mZnNldCB8fA0KPj4gYml0bWFwLT5tZGRldi0+Yml0 bWFwX2luZm8uZmlsZSkNCj4+ID4gICAgICAgICAgICAgICByZXQgPSBiaXRtYXBfc3RvcmFnZV9h bGxvYygmc3RvcmUsIGNodW5rcywNCj4+ID4tDQo+PiAhYml0bWFwLT5tZGRldi0+Yml0bWFwX2lu Zm8uZXh0ZXJuYWwpOw0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhYml0bWFw LT5tZGRldi0+Yml0bWFwX2luZm8uZXh0ZXJuYWwsDQo+PiA+KyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJpdG1hcC0+bWRkZXYtPmJpdG1hcF9pbmZvLnN5bmNfYml0bWFwKTsNCj4+ID4g ICAgICAgaWYgKHJldCkNCj4+ID4gICAgICAgICAgICAgICBnb3RvIGVycjsNCj4+ID4NCj4+ID5A QCAtMTg2NSw2ICsyMDIzLDMxIEBAIGludCBiaXRtYXBfcmVzaXplKHN0cnVjdCBiaXRtYXAgKmJp dG1hcCwgc2VjdG9yX3QNCj4+IGJsb2NrcywNCj4+ID4gICAgICAgICAgICAgICBtZW1jcHkocGFn ZV9hZGRyZXNzKHN0b3JlLnNiX3BhZ2UpLA0KPj4gPiAgICAgICAgICAgICAgICAgICAgICBwYWdl X2FkZHJlc3MoYml0bWFwLT5zdG9yYWdlLnNiX3BhZ2UpLA0KPj4gPiAgICAgICAgICAgICAgICAg ICAgICBzaXplb2YoYml0bWFwX3N1cGVyX3QpKTsNCj4+ID4rICAgICAgaWYgKGJpdG1hcC0+bWRk ZXYtPmJpdG1hcF9pbmZvLnN5bmNfYml0bWFwKSB7DQo+PiA+KyAgICAgICAgICAgICAgLyogY29w eSBvbGQgc3luYy1iaXRtYXAgdG8gbmV3IG9uZSAqLw0KPj4gPisgICAgICAgICAgICAgIGNodW5r c190b19wYWdlcyhjaHVua3MsIE5VTEwsICZwbnVtLA0KPj4gPisNCj4+ICAhYml0bWFwLT5tZGRl di0+Yml0bWFwX2luZm8uZXh0ZXJuYWwpOw0KPj4gPisgICAgICAgICAgICAgIGJpdG1hcC0+c3lu Y2JpdG1hcF9udW1fcGFnZXMgPSBwbnVtOw0KPj4gPisgICAgICAgICAgICAgIGlmIChiaXRtYXAt PnN0b3JhZ2UuZmlsZW1hcCkgew0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgY2h1bmtzX3Rv X3BhZ2VzKGJpdG1hcC0+Y291bnRzLmNodW5rcywgTlVMTCwNCj4+ICZvbGRfcG51bSwNCj4+ID4r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWJpdG1hcC0+bWRkZXYtPmJpdG1hcF9pbmZv LmV4dGVybmFsKTsNCj4+ID4rICAgICAgICAgICAgICAgICAgICAgIG51bV9wYWdlcyA9IHBudW0g KiAyOw0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgb2xkX251bV9wYWdlcyA9IG9sZF9wbnVt ICogMjsNCj4+ID4rICAgICAgICAgICAgICAgICAgICAgIHBudW0rKzsNCj4+ID4rICAgICAgICAg ICAgICAgICAgICAgIG9sZF9wbnVtKys7DQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICBmb3Ig KDsgcG51bSA8PSBudW1fcGFnZXMgJiYgb2xkX3BudW0gPD0NCj4+IG9sZF9udW1fcGFnZXM7DQo+ PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG51bSsrLCBvbGRfcG51 bSsrKSB7DQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShzdG9yZS5m aWxlbWFwW3BudW1dLA0KPj4gPisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJpdG1hcC0+c3RvcmFnZS5maWxlbWFwW29sZF9wbnVtXSwNCj4+ID4rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQQUdFX1NJWkUpOw0KPj4gPisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBBbGwgbmV3IHN5bmMtYml0bWFwIGRhdGENCj4+ID4rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICogc2hvdWxlIGJlIHdyaXRlIG91dCAqLw0KPj4gPisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfYml0KChwbnVtIDw8IDIpICsgQklUTUFQX1BB R0VfRElSVFksDQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rv cmUuZmlsZW1hcF9hdHRyKTsNCj4+ID4rICAgICAgICAgICAgICAgICAgICAgIH0NCj4+ID4rICAg ICAgICAgICAgICB9DQo+PiA+KyAgICAgIH0NCj4+ID4rDQo+PiA+ICAgICAgIGJpdG1hcF9maWxl X3VubWFwKCZiaXRtYXAtPnN0b3JhZ2UpOw0KPj4gPiAgICAgICBiaXRtYXAtPnN0b3JhZ2UgPSBz dG9yZTsNCj4+ID4NCj4+ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9iaXRtYXAuaCBiL2RyaXZl cnMvbWQvYml0bWFwLmgNCj4+ID5pbmRleCBkZjRhZWI2Li44N2M0Njg2IDEwMDY0NA0KPj4gPi0t LSBhL2RyaXZlcnMvbWQvYml0bWFwLmgNCj4+ID4rKysgYi9kcml2ZXJzL21kL2JpdG1hcC5oDQo+ PiA+QEAgLTIyNiw2ICsyMjYsNyBAQCBzdHJ1Y3QgYml0bWFwIHsNCj4+ID4gICAgICAgd2FpdF9x dWV1ZV9oZWFkX3QgYmVoaW5kX3dhaXQ7DQo+PiA+DQo+PiA+ICAgICAgIHN0cnVjdCBzeXNmc19k aXJlbnQgKnN5c2ZzX2Nhbl9jbGVhcjsNCj4+ID4rICAgICAgdW5zaWduZWQgbG9uZyBzeW5jYml0 bWFwX251bV9wYWdlczsNCj4+ID4gfTsNCj4+ID4NCj4+ID4gLyogdGhlIGJpdG1hcCBBUEkgKi8N Cj4+ID5AQCAtMjUyLDYgKzI1MywxMCBAQCB2b2lkIGJpdG1hcF9lbmR3cml0ZShzdHJ1Y3QgYml0 bWFwICpiaXRtYXAsIHNlY3Rvcl90DQo+PiBvZmZzZXQsDQo+PiA+ICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIHNlY3RvcnMsIGludCBzdWNjZXNzLCBpbnQgYmVoaW5kKTsNCj4+ ID4gaW50IGJpdG1hcF9zdGFydF9zeW5jKHN0cnVjdCBiaXRtYXAgKmJpdG1hcCwgc2VjdG9yX3Qg b2Zmc2V0LCBzZWN0b3JfdA0KPj4gKmJsb2NrcywgaW50IGRlZ3JhZGVkKTsNCj4+ID4gdm9pZCBi aXRtYXBfZW5kX3N5bmMoc3RydWN0IGJpdG1hcCAqYml0bWFwLCBzZWN0b3JfdCBvZmZzZXQsIHNl Y3Rvcl90DQo+PiAqYmxvY2tzLCBpbnQgYWJvcnRlZCk7DQo+PiA+Kw0KPj4gPitpbnQgc3luY2Jp dG1hcF9zdGFydF9zeW5jKHN0cnVjdCBiaXRtYXAgKmJpdG1hcCwgc2VjdG9yX3Qgb2Zmc2V0LA0K Pj4gPisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdG9y X3QgKmJsb2Nrcyk7DQo+PiA+Kw0KPj4gPiB2b2lkIGJpdG1hcF9jbG9zZV9zeW5jKHN0cnVjdCBi aXRtYXAgKmJpdG1hcCk7DQo+PiA+IHZvaWQgYml0bWFwX2NvbmRfZW5kX3N5bmMoc3RydWN0IGJp dG1hcCAqYml0bWFwLCBzZWN0b3JfdCBzZWN0b3IpOw0KPj4gPg0KPj4gPmRpZmYgLS1naXQgYS9k cml2ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmMNCj4+ID5pbmRleCA2ODFkMTA5Li5mYjgx YTAxIDEwMDY0NA0KPj4gPi0tLSBhL2RyaXZlcnMvbWQvbWQuYw0KPj4gPisrKyBiL2RyaXZlcnMv bWQvbWQuYw0KPj4gPkBAIC0xNjIxLDYgKzE2MjEsNyBAQCBzdGF0aWMgaW50IHN1cGVyXzFfdmFs aWRhdGUoc3RydWN0IG1kZGV2ICptZGRldiwNCj4+IHN0cnVjdCBtZF9yZGV2ICpyZGV2KQ0KPj4g PiAgICAgICAgICAgICAgIG1kZGV2LT5ldmVudHMgPSBldjE7DQo+PiA+ICAgICAgICAgICAgICAg bWRkZXYtPmJpdG1hcF9pbmZvLm9mZnNldCA9IDA7DQo+PiA+ICAgICAgICAgICAgICAgbWRkZXYt PmJpdG1hcF9pbmZvLnNwYWNlID0gMDsNCj4+ID4rICAgICAgICAgICAgICBtZGRldi0+Yml0bWFw X2luZm8uc3luY19iaXRtYXAgPSAwOw0KPj4gPiAgICAgICAgICAgICAgIC8qIERlZmF1bHQgbG9j YXRpb24gZm9yIGJpdG1hcCBpcyAxSyBhZnRlciBzdXBlcmJsb2NrDQo+PiA+ICAgICAgICAgICAg ICAgICogdXNpbmcgM0sgLSB0b3RhbCBvZiA0Sw0KPj4gPiAgICAgICAgICAgICAgICAqLw0KPj4g PkBAIC0xNjUyLDYgKzE2NTMsOSBAQCBzdGF0aWMgaW50IHN1cGVyXzFfdmFsaWRhdGUoc3RydWN0 IG1kZGV2ICptZGRldiwNCj4+IHN0cnVjdCBtZF9yZGV2ICpyZGV2KQ0KPj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1tZGRldi0+Yml0bWFwX2luZm8ub2Zmc2V0Ow0K Pj4gPiAgICAgICAgICAgICAgIH0NCj4+ID4NCj4+ID4rICAgICAgICAgICAgICBpZiAobGUzMl90 b19jcHUoc2ItPmZlYXR1cmVfbWFwKSAmIE1EX0ZFQVRVUkVfU1lOQ0JJVE1BUCkNCj4+ID4rICAg ICAgICAgICAgICAgICAgICAgIG1kZGV2LT5iaXRtYXBfaW5mby5zeW5jX2JpdG1hcCA9IDE7DQo+ PiA+Kw0KPj4gPiAgICAgICAgICAgICAgIGlmICgobGUzMl90b19jcHUoc2ItPmZlYXR1cmVfbWFw KSAmDQo+PiBNRF9GRUFUVVJFX1JFU0hBUEVfQUNUSVZFKSkgew0KPj4gPiAgICAgICAgICAgICAg ICAgICAgICAgbWRkZXYtPnJlc2hhcGVfcG9zaXRpb24gPQ0KPj4gbGU2NF90b19jcHUoc2ItPnJl c2hhcGVfcG9zaXRpb24pOw0KPj4gPiAgICAgICAgICAgICAgICAgICAgICAgbWRkZXYtPmRlbHRh X2Rpc2tzID0gbGUzMl90b19jcHUoc2ItPmRlbHRhX2Rpc2tzKTsNCj4+ID5AQCAtMTc2Miw3ICsx NzY2LDggQEAgc3RhdGljIHZvaWQgc3VwZXJfMV9zeW5jKHN0cnVjdCBtZGRldiAqbWRkZXYsDQo+ PiBzdHJ1Y3QgbWRfcmRldiAqcmRldikNCj4+ID4NCj4+ID4gICAgICAgaWYgKG1kZGV2LT5iaXRt YXAgJiYgbWRkZXYtPmJpdG1hcF9pbmZvLmZpbGUgPT0gTlVMTCkgew0KPj4gPiAgICAgICAgICAg ICAgIHNiLT5iaXRtYXBfb2Zmc2V0ID0NCj4+IGNwdV90b19sZTMyKChfX3UzMiltZGRldi0+Yml0 bWFwX2luZm8ub2Zmc2V0KTsNCj4+ID4tICAgICAgICAgICAgICBzYi0+ZmVhdHVyZV9tYXAgPSBj cHVfdG9fbGUzMihNRF9GRUFUVVJFX0JJVE1BUF9PRkZTRVQpOw0KPj4gPisgICAgICAgICAgICAg IHNiLT5mZWF0dXJlX21hcCA9IGNwdV90b19sZTMyKE1EX0ZFQVRVUkVfQklUTUFQX09GRlNFVCB8 DQo+PiA+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTURfRkVBVFVSRV9T WU5DQklUTUFQKTsNCj4+ID4gICAgICAgfQ0KPj4gPg0KPj4gPiAgICAgICBpZiAocmRldi0+cmFp ZF9kaXNrID49IDAgJiYNCj4+ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9tZC5oIGIvZHJpdmVy cy9tZC9tZC5oDQo+PiA+aW5kZXggNjUzZjk5Mi4uMWNlZjAwMSAxMDA2NDQNCj4+ID4tLS0gYS9k cml2ZXJzL21kL21kLmgNCj4+ID4rKysgYi9kcml2ZXJzL21kL21kLmgNCj4+ID5AQCAtNDA0LDYg KzQwNCw3IEBAIHN0cnVjdCBtZGRldiB7DQo+PiA+ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyAgICAgICAgICAgZGFlbW9uX3NsZWVwOyAvKiBob3cgbWFueSBqaWZmaWVzDQo+PiBiZXR3ZWVu IHVwZGF0ZXM/ICovDQo+PiA+ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAg bWF4X3dyaXRlX2JlaGluZDsgLyogd3JpdGUtYmVoaW5kDQo+PiBtb2RlICovDQo+PiA+ICAgICAg ICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWw7DQo+PiA+KyAgICAgICAg ICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgc3luY19iaXRtYXA7DQo+PiA+ICAgICAgIH0g Yml0bWFwX2luZm87DQo+PiA+DQo+PiA+ICAgICAgIGF0b21pY190ICAgICAgICAgICAgICAgICAg ICAgICAgbWF4X2NvcnJfcmVhZF9lcnJvcnM7IC8qIG1heCByZWFkDQo+PiByZXRyaWVzICovDQo+ PiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEuYyBiL2RyaXZlcnMvbWQvcmFpZDEuYw0K Pj4gPmluZGV4IDU1OTUxMTguLmJhNDdlZTcgMTAwNjQ0DQo+PiA+LS0tIGEvZHJpdmVycy9tZC9y YWlkMS5jDQo+PiA+KysrIGIvZHJpdmVycy9tZC9yYWlkMS5jDQo+PiA+QEAgLTIzOTYsNiArMjM5 NiwxMyBAQCBzdGF0aWMgc2VjdG9yX3Qgc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldiAqbWRkZXYs DQo+PiBzZWN0b3JfdCBzZWN0b3JfbnIsIGludCAqc2tpcHANCj4+ID4gICAgICAgICAgICAgICAq c2tpcHBlZCA9IDE7DQo+PiA+ICAgICAgICAgICAgICAgcmV0dXJuIHN5bmNfYmxvY2tzOw0KPj4g PiAgICAgICB9DQo+PiA+Kw0KPj4gPisgICAgICBpZiAoY29uZi0+ZnVsbHN5bmMgJiYgIXN5bmNi aXRtYXBfc3RhcnRfc3luYyhtZGRldi0+Yml0bWFwLA0KPj4gPisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWN0b3JfbnIsICZzeW5jX2Jsb2NrcykpIHsNCj4+ID4rICAgICAgICAgICAg ICAqc2tpcHBlZCA9IDE7DQo+PiA+KyAgICAgICAgICAgICAgcmV0dXJuIHN5bmNfYmxvY2tzOw0K Pj4gPisgICAgICB9DQo+PiA+Kw0KPj4gPiAgICAgICAvKg0KPj4gPiAgICAgICAgKiBJZiB0aGVy ZSBpcyBub24tcmVzeW5jIGFjdGl2aXR5IHdhaXRpbmcgZm9yIGEgdHVybiwNCj4+ID4gICAgICAg ICogYW5kIHJlc3luYyBpcyBnb2luZyBmYXN0IGVub3VnaCwNCj4+ID5kaWZmIC0tZ2l0IGEvZHJp dmVycy9tZC9yYWlkNS5jIGIvZHJpdmVycy9tZC9yYWlkNS5jDQo+PiA+aW5kZXggOTM1OTgyOC4u NzUyOGFhOCAxMDA2NDQNCj4+ID4tLS0gYS9kcml2ZXJzL21kL3JhaWQ1LmMNCj4+ID4rKysgYi9k cml2ZXJzL21kL3JhaWQ1LmMNCj4+ID5AQCAtNDY4OCw2ICs0Njg4LDEzIEBAIHN0YXRpYyBpbmxp bmUgc2VjdG9yX3Qgc3luY19yZXF1ZXN0KHN0cnVjdCBtZGRldg0KPj4gKm1kZGV2LCBzZWN0b3Jf dCBzZWN0b3JfbnIsIGludA0KPj4gPiAgICAgICAgICAgICAgIHJldHVybiBzeW5jX2Jsb2NrcyAq IFNUUklQRV9TRUNUT1JTOyAvKiBrZWVwIHRoaW5ncw0KPj4gcm91bmRlZCB0byB3aG9sZSBzdHJp cGVzICovDQo+PiA+ICAgICAgIH0NCj4+ID4NCj4+ID4rICAgICAgaWYgKGNvbmYtPmZ1bGxzeW5j ICYmIHN5bmNfYmxvY2tzID49IFNUUklQRV9TRUNUT1JTICYmDQo+PiA+KyAgICAgICAgICAhc3lu Y2JpdG1hcF9zdGFydF9zeW5jKG1kZGV2LT5iaXRtYXAsIHNlY3Rvcl9uciwNCj4+ICZzeW5jX2Js b2NrcykpIHsNCj4+ID4rICAgICAgICAgICAgICBzeW5jX2Jsb2NrcyAvPSBTVFJJUEVfU0VDVE9S UzsNCj4+ID4rICAgICAgICAgICAgICAqc2tpcHBlZCA9IDE7DQo+PiA+KyAgICAgICAgICAgICAg cmV0dXJuIHN5bmNfYmxvY2tzICogU1RSSVBFX1NFQ1RPUlM7DQo+PiA+KyAgICAgIH0NCj4+ID4r DQo+PiA+ICAgICAgIGJpdG1hcF9jb25kX2VuZF9zeW5jKG1kZGV2LT5iaXRtYXAsIHNlY3Rvcl9u cik7DQo+PiA+DQo+PiA+ICAgICAgIHNoID0gZ2V0X2FjdGl2ZV9zdHJpcGUoY29uZiwgc2VjdG9y X25yLCAwLCAxLCAwKTsNCj4+ID5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3JhaWQv bWRfcC5oDQo+PiBiL2luY2x1ZGUvdWFwaS9saW51eC9yYWlkL21kX3AuaA0KPj4gPmluZGV4IGZl MWE1NDAuLjc5NDlmNjEgMTAwNjQ0DQo+PiA+LS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3JhaWQv bWRfcC5oDQo+PiA+KysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3JhaWQvbWRfcC5oDQo+PiA+QEAg LTI5MSw2ICsyOTEsNyBAQCBzdHJ1Y3QgbWRwX3N1cGVyYmxvY2tfMSB7DQo+PiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYmFja3dhcmRzIGFueXdheS4NCj4+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4+ID4gI2Rl ZmluZSAgICAgICBNRF9GRUFUVVJFX05FV19PRkZTRVQgICAgICAgICAgIDY0IC8qIG5ld19vZmZz ZXQgbXVzdCBiZQ0KPj4gaG9ub3VyZWQgKi8NCj4+ID4rI2RlZmluZSAgICAgICBNRF9GRUFUVVJF X1NZTkNCSVRNQVAgICAgICAgICAgIDEyOA0KPj4gPiAjZGVmaW5lICAgICAgIE1EX0ZFQVRVUkVf QUxMICAgICAgICAgICAgICAgICAgKE1EX0ZFQVRVUkVfQklUTUFQX09GRlNFVA0KPj4gICAgICAg XA0KPj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxNRF9GRUFUVVJF X1JFQ09WRVJZX09GRlNFVCAgICAgXA0KPj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHxNRF9GRUFUVVJFX1JFU0hBUEVfQUNUSVZFICAgICAgXA0KPj4gPkBAIC0yOTgs NiArMjk5LDcgQEAgc3RydWN0IG1kcF9zdXBlcmJsb2NrXzEgew0KPj4gPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHxNRF9GRUFUVVJFX1JFUExBQ0VNRU5UICAgICAgICAg XA0KPj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxNRF9GRUFUVVJF X1JFU0hBUEVfQkFDS1dBUkRTICAgXA0KPj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHxNRF9GRUFUVVJFX05FV19PRkZTRVQgICAgICAgICAgXA0KPj4gPisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxNRF9GRUFUVVJFX1NZTkNCSVRNQVAgICAg ICAgICAgXA0KPj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCj4+ ID4NCj4+ID4gI2VuZGlmDQo+PiA+LS0NCj4+ID4xLjcuMQ0KPj4gPg0KPj4gPi0tDQo+PiA+VG8g dW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGxp bnV4LXJhaWQiIGluDQo+PiA+dGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2Vy Lmtlcm5lbC5vcmcNCj4+ID5Nb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJu ZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwNCj4NCj4NCj4NCj4NCj4tLSANCj4tLQ0KPkJlc3Qg UmVnYXJkDQo+Um9iaW4gRG9uZw0KPg==