From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from esa3.microchip.iphmx.com ([68.232.153.233]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gUrr7-0004XB-Ne for linux-mtd@lists.infradead.org; Thu, 06 Dec 2018 11:30:11 +0000 From: To: , CC: , , , , , Subject: Re: [PATCH v5 2/3] mtd: spi-nor: Add a post BFPT parsing fixup hook Date: Thu, 6 Dec 2018 11:29:54 +0000 Message-ID: <11fd4c2d-c139-9b3e-811e-8ed29c942a2d@microchip.com> References: <20181206103736.5957-1-boris.brezillon@bootlin.com> <20181206103736.5957-3-boris.brezillon@bootlin.com> In-Reply-To: <20181206103736.5957-3-boris.brezillon@bootlin.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <8E541FADF2F1A4488F1EBD80DBB9A319@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , DQoNCk9uIDEyLzA2LzIwMTggMTI6MzcgUE0sIEJvcmlzIEJyZXppbGxvbiB3cm90ZToNCj4gRXhw ZXJpZW5jZSBoYXMgcHJvdmVuIHRoYXQgU0ZEUCB0YWJsZXMgYXJlIHNvbWV0aW1lcyB3cm9uZywg YW5kIHBhcnNpbmcNCj4gb2YgdGhlc2UgYnJva2VuIHRhYmxlcyBjYW4gbGVhZCB0byBlcnJvbmVv dXMgZmxhc2ggY29uZmlnLg0KPiANCj4gVGhpcyBsZWF2ZXMgdXMgMiBvcHRpb25zOg0KPiANCj4g MS8gc2V0IHRoZSBTUElfTk9SX1NLSVBfU0ZEUCBmbGFnIGFuZCBjb21wbGV0ZWx5IGlnbm9yZSBT RkRQIHBhcnNpbmcNCj4gMi8gZml4IHRoaW5ncyBhdCBydW50aW1lDQo+IA0KPiBXaGlsZSAjMSBz aG91bGQgYWx3YXlzIHdvcmssIGl0IG1pZ2h0IGltcGx5IGV4dHJhIHdvcmsgaWYgbW9zdCBvZiB0 aGUNCj4gU0ZEUCBpcyBjb3JyZWN0LiAjMiBoYXMgdGhlIGJlbmVmaXQgb2Yga2VlcGluZyB0aGUg Z2VuZXJpYyBTRkRQIHBhcnNpbmcNCj4gbG9naWMgYWxtb3N0IHVudG91Y2hlZCB3aGlsZSBhbGxv d2luZyBTUEkgTk9SIG1hbnVmYWN0dXJlciBkcml2ZXJzIHRvDQo+IGZpeCB0aGUgYnJva2VuIGJp dHMuDQo+IA0KPiBBZGQgYSBzcGlfbm9yX2ZpeHVwcyBzdHJ1Y3Qgd2hlcmUgd2UnbGwgcHV0IGFs bCBvdXIgZml4dXAgaG9va3MsIGVhY2gNCj4gb2YgdGhlbSBiZWluZyBjYWxsZWQgYXQgYSBkaWZm ZXJlbnQgcG9pbnQgaW4gdGhlIHNjYW4gcHJvY2Vzcy4NCj4gDQo+IFdlIHN0YXJ0IGEgaG9vayBj YWxsZWQganVzdCBhZnRlciB0aGUgQkZQVCBwYXJzaW5nIHRvIGFsbG93IGZpeGluZyB1cA0KPiBp bmZvIGV4dHJhY3RlZCBmcm9tIHRoZSBCRlBUIHNlY3Rpb24uIE1vcmUgaG9va3Mgd2lsbCBiZSBh ZGRlZCBpZiBvdGhlcg0KPiBzZWN0aW9ucyBuZWVkIHRvIGJlIGZpeGVkLg0KPiANCj4gU2lnbmVk LW9mZi1ieTogQm9yaXMgQnJlemlsbG9uIDxib3Jpcy5icmV6aWxsb25AYm9vdGxpbi5jb20+DQoN ClJldmlld2VkLWJ5OiBUdWRvciBBbWJhcnVzIDx0dWRvci5hbWJhcnVzQG1pY3JvY2hpcC5jb20+ DQoNCj4gLS0tDQo+IENoYW5nZXMgaW4gdjU6DQo+IC0gTm9uZQ0KPiANCj4gQ2hhbmdlcyBpbiB2 NDoNCj4gLSBOZXcgcGF0Y2gNCj4gLS0tDQo+ICBkcml2ZXJzL210ZC9zcGktbm9yL3NwaS1ub3Iu YyB8IDM4NyArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tDQo+ICAxIGZpbGUgY2hh bmdlZCwgMjA5IGluc2VydGlvbnMoKyksIDE3OCBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL210ZC9zcGktbm9yL3NwaS1ub3IuYyBiL2RyaXZlcnMvbXRkL3NwaS1ub3Iv c3BpLW5vci5jDQo+IGluZGV4IGJlYTEyMmUwZDczMS4uN2JjOTg4N2Q5YzBhIDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL210ZC9zcGktbm9yL3NwaS1ub3IuYw0KPiArKysgYi9kcml2ZXJzL210ZC9z cGktbm9yL3NwaS1ub3IuYw0KPiBAQCAtNDIsNiArNDIsMTk2IEBADQo+ICAjZGVmaW5lIFNQSV9O T1JfTUFYX0lEX0xFTgk2DQo+ICAjZGVmaW5lIFNQSV9OT1JfTUFYX0FERFJfV0lEVEgJNA0KPiAg DQo+ICtzdHJ1Y3Qgc3BpX25vcl9yZWFkX2NvbW1hbmQgew0KPiArCXU4CQkJbnVtX21vZGVfY2xv Y2tzOw0KPiArCXU4CQkJbnVtX3dhaXRfc3RhdGVzOw0KPiArCXU4CQkJb3Bjb2RlOw0KPiArCWVu dW0gc3BpX25vcl9wcm90b2NvbAlwcm90bzsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBzcGlfbm9y X3BwX2NvbW1hbmQgew0KPiArCXU4CQkJb3Bjb2RlOw0KPiArCWVudW0gc3BpX25vcl9wcm90b2Nv bAlwcm90bzsNCj4gK307DQo+ICsNCj4gK2VudW0gc3BpX25vcl9yZWFkX2NvbW1hbmRfaW5kZXgg ew0KPiArCVNOT1JfQ01EX1JFQUQsDQo+ICsJU05PUl9DTURfUkVBRF9GQVNULA0KPiArCVNOT1Jf Q01EX1JFQURfMV8xXzFfRFRSLA0KPiArDQo+ICsJLyogRHVhbCBTUEkgKi8NCj4gKwlTTk9SX0NN RF9SRUFEXzFfMV8yLA0KPiArCVNOT1JfQ01EX1JFQURfMV8yXzIsDQo+ICsJU05PUl9DTURfUkVB RF8yXzJfMiwNCj4gKwlTTk9SX0NNRF9SRUFEXzFfMl8yX0RUUiwNCj4gKw0KPiArCS8qIFF1YWQg U1BJICovDQo+ICsJU05PUl9DTURfUkVBRF8xXzFfNCwNCj4gKwlTTk9SX0NNRF9SRUFEXzFfNF80 LA0KPiArCVNOT1JfQ01EX1JFQURfNF80XzQsDQo+ICsJU05PUl9DTURfUkVBRF8xXzRfNF9EVFIs DQo+ICsNCj4gKwkvKiBPY3RvIFNQSSAqLw0KPiArCVNOT1JfQ01EX1JFQURfMV8xXzgsDQo+ICsJ U05PUl9DTURfUkVBRF8xXzhfOCwNCj4gKwlTTk9SX0NNRF9SRUFEXzhfOF84LA0KPiArCVNOT1Jf Q01EX1JFQURfMV84XzhfRFRSLA0KPiArDQo+ICsJU05PUl9DTURfUkVBRF9NQVgNCj4gK307DQo+ ICsNCj4gK2VudW0gc3BpX25vcl9wcF9jb21tYW5kX2luZGV4IHsNCj4gKwlTTk9SX0NNRF9QUCwN Cj4gKw0KPiArCS8qIFF1YWQgU1BJICovDQo+ICsJU05PUl9DTURfUFBfMV8xXzQsDQo+ICsJU05P Ul9DTURfUFBfMV80XzQsDQo+ICsJU05PUl9DTURfUFBfNF80XzQsDQo+ICsNCj4gKwkvKiBPY3Rv IFNQSSAqLw0KPiArCVNOT1JfQ01EX1BQXzFfMV84LA0KPiArCVNOT1JfQ01EX1BQXzFfOF84LA0K PiArCVNOT1JfQ01EX1BQXzhfOF84LA0KPiArDQo+ICsJU05PUl9DTURfUFBfTUFYDQo+ICt9Ow0K PiArDQo+ICtzdHJ1Y3Qgc3BpX25vcl9mbGFzaF9wYXJhbWV0ZXIgew0KPiArCXU2NAkJCQlzaXpl Ow0KPiArCXUzMgkJCQlwYWdlX3NpemU7DQo+ICsNCj4gKwlzdHJ1Y3Qgc3BpX25vcl9od2NhcHMJ CWh3Y2FwczsNCj4gKwlzdHJ1Y3Qgc3BpX25vcl9yZWFkX2NvbW1hbmQJcmVhZHNbU05PUl9DTURf UkVBRF9NQVhdOw0KPiArCXN0cnVjdCBzcGlfbm9yX3BwX2NvbW1hbmQJcGFnZV9wcm9ncmFtc1tT Tk9SX0NNRF9QUF9NQVhdOw0KPiArDQo+ICsJaW50ICgqcXVhZF9lbmFibGUpKHN0cnVjdCBzcGlf bm9yICpub3IpOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHNmZHBfcGFyYW1ldGVyX2hlYWRlciB7 DQo+ICsJdTgJCWlkX2xzYjsNCj4gKwl1OAkJbWlub3I7DQo+ICsJdTgJCW1ham9yOw0KPiArCXU4 CQlsZW5ndGg7IC8qIGluIGRvdWJsZSB3b3JkcyAqLw0KPiArCXU4CQlwYXJhbWV0ZXJfdGFibGVf cG9pbnRlclszXTsgLyogYnl0ZSBhZGRyZXNzICovDQo+ICsJdTgJCWlkX21zYjsNCj4gK307DQo+ ICsNCj4gKyNkZWZpbmUgU0ZEUF9QQVJBTV9IRUFERVJfSUQocCkJKCgocCktPmlkX21zYiA8PCA4 KSB8IChwKS0+aWRfbHNiKQ0KPiArI2RlZmluZSBTRkRQX1BBUkFNX0hFQURFUl9QVFAocCkgXA0K PiArCSgoKHApLT5wYXJhbWV0ZXJfdGFibGVfcG9pbnRlclsyXSA8PCAxNikgfCBcDQo+ICsJICgo cCktPnBhcmFtZXRlcl90YWJsZV9wb2ludGVyWzFdIDw8ICA4KSB8IFwNCj4gKwkgKChwKS0+cGFy YW1ldGVyX3RhYmxlX3BvaW50ZXJbMF0gPDwgIDApKQ0KPiArDQo+ICsjZGVmaW5lIFNGRFBfQkZQ VF9JRAkJMHhmZjAwCS8qIEJhc2ljIEZsYXNoIFBhcmFtZXRlciBUYWJsZSAqLw0KPiArI2RlZmlu ZSBTRkRQX1NFQ1RPUl9NQVBfSUQJMHhmZjgxCS8qIFNlY3RvciBNYXAgVGFibGUgKi8NCj4gKw0K PiArI2RlZmluZSBTRkRQX1NJR05BVFVSRQkJMHg1MDQ0NDY1M1UNCj4gKyNkZWZpbmUgU0ZEUF9K RVNEMjE2X01BSk9SCTENCj4gKyNkZWZpbmUgU0ZEUF9KRVNEMjE2X01JTk9SCTANCj4gKyNkZWZp bmUgU0ZEUF9KRVNEMjE2QV9NSU5PUgk1DQo+ICsjZGVmaW5lIFNGRFBfSkVTRDIxNkJfTUlOT1IJ Ng0KPiArDQo+ICtzdHJ1Y3Qgc2ZkcF9oZWFkZXIgew0KPiArCXUzMgkJc2lnbmF0dXJlOyAvKiBP eDUwNDQ0NjUzVSA8PT4gIlNGRFAiICovDQo+ICsJdTgJCW1pbm9yOw0KPiArCXU4CQltYWpvcjsN Cj4gKwl1OAkJbnBoOyAvKiAwLWJhc2UgbnVtYmVyIG9mIHBhcmFtZXRlciBoZWFkZXJzICovDQo+ ICsJdTgJCXVudXNlZDsNCj4gKw0KPiArCS8qIEJhc2ljIEZsYXNoIFBhcmFtZXRlciBUYWJsZS4g Ki8NCj4gKwlzdHJ1Y3Qgc2ZkcF9wYXJhbWV0ZXJfaGVhZGVyCWJmcHRfaGVhZGVyOw0KPiArfTsN Cj4gKw0KPiArLyogQmFzaWMgRmxhc2ggUGFyYW1ldGVyIFRhYmxlICovDQo+ICsNCj4gKy8qDQo+ ICsgKiBKRVNEMjE2IHJldiBCIGRlZmluZXMgYSBCYXNpYyBGbGFzaCBQYXJhbWV0ZXIgVGFibGUg b2YgMTYgRFdPUkRzLg0KPiArICogVGhleSBhcmUgaW5kZXhlZCBmcm9tIDEgYnV0IEMgYXJyYXlz IGFyZSBpbmRleGVkIGZyb20gMC4NCj4gKyAqLw0KPiArI2RlZmluZSBCRlBUX0RXT1JEKGkpCQko KGkpIC0gMSkNCj4gKyNkZWZpbmUgQkZQVF9EV09SRF9NQVgJCTE2DQo+ICsNCj4gKy8qIFRoZSBm aXJzdCB2ZXJzaW9uIG9mIEpFU0IyMTYgZGVmaW5lZCBvbmx5IDkgRFdPUkRzLiAqLw0KPiArI2Rl ZmluZSBCRlBUX0RXT1JEX01BWF9KRVNEMjE2CQkJOQ0KPiArDQo+ICsvKiAxc3QgRFdPUkQuICov DQo+ICsjZGVmaW5lIEJGUFRfRFdPUkQxX0ZBU1RfUkVBRF8xXzFfMgkJQklUKDE2KQ0KPiArI2Rl ZmluZSBCRlBUX0RXT1JEMV9BRERSRVNTX0JZVEVTX01BU0sJCUdFTk1BU0soMTgsIDE3KQ0KPiAr I2RlZmluZSBCRlBUX0RXT1JEMV9BRERSRVNTX0JZVEVTXzNfT05MWQkoMHgwVUwgPDwgMTcpDQo+ ICsjZGVmaW5lIEJGUFRfRFdPUkQxX0FERFJFU1NfQllURVNfM19PUl80CSgweDFVTCA8PCAxNykN Cj4gKyNkZWZpbmUgQkZQVF9EV09SRDFfQUREUkVTU19CWVRFU180X09OTFkJKDB4MlVMIDw8IDE3 KQ0KPiArI2RlZmluZSBCRlBUX0RXT1JEMV9EVFIJCQkJQklUKDE5KQ0KPiArI2RlZmluZSBCRlBU X0RXT1JEMV9GQVNUX1JFQURfMV8yXzIJCUJJVCgyMCkNCj4gKyNkZWZpbmUgQkZQVF9EV09SRDFf RkFTVF9SRUFEXzFfNF80CQlCSVQoMjEpDQo+ICsjZGVmaW5lIEJGUFRfRFdPUkQxX0ZBU1RfUkVB RF8xXzFfNAkJQklUKDIyKQ0KPiArDQo+ICsvKiA1dGggRFdPUkQuICovDQo+ICsjZGVmaW5lIEJG UFRfRFdPUkQ1X0ZBU1RfUkVBRF8yXzJfMgkJQklUKDApDQo+ICsjZGVmaW5lIEJGUFRfRFdPUkQ1 X0ZBU1RfUkVBRF80XzRfNAkJQklUKDQpDQo+ICsNCj4gKy8qIDExdGggRFdPUkQuICovDQo+ICsj ZGVmaW5lIEJGUFRfRFdPUkQxMV9QQUdFX1NJWkVfU0hJRlQJCTQNCj4gKyNkZWZpbmUgQkZQVF9E V09SRDExX1BBR0VfU0laRV9NQVNLCQlHRU5NQVNLKDcsIDQpDQo+ICsNCj4gKy8qIDE1dGggRFdP UkQuICovDQo+ICsNCj4gKy8qDQo+ICsgKiAoZnJvbSBKRVNEMjE2IHJldiBCKQ0KPiArICogUXVh ZCBFbmFibGUgUmVxdWlyZW1lbnRzIChRRVIpOg0KPiArICogLSAwMDBiOiBEZXZpY2UgZG9lcyBu b3QgaGF2ZSBhIFFFIGJpdC4gRGV2aWNlIGRldGVjdHMgMS0xLTQgYW5kIDEtNC00DQo+ICsgKiAg ICAgICAgIHJlYWRzIGJhc2VkIG9uIGluc3RydWN0aW9uLiBEUTMvSE9MRCMgZnVuY3Rpb25zIGFy ZSBob2xkIGR1cmluZw0KPiArICogICAgICAgICBpbnN0cnVjdGlvbiBwaGFzZS4NCj4gKyAqIC0g MDAxYjogUUUgaXMgYml0IDEgb2Ygc3RhdHVzIHJlZ2lzdGVyIDIuIEl0IGlzIHNldCB2aWEgV3Jp dGUgU3RhdHVzIHdpdGgNCj4gKyAqICAgICAgICAgdHdvIGRhdGEgYnl0ZXMgd2hlcmUgYml0IDEg b2YgdGhlIHNlY29uZCBieXRlIGlzIG9uZS4NCj4gKyAqICAgICAgICAgWy4uLl0NCj4gKyAqICAg ICAgICAgV3JpdGluZyBvbmx5IG9uZSBieXRlIHRvIHRoZSBzdGF0dXMgcmVnaXN0ZXIgaGFzIHRo ZSBzaWRlLWVmZmVjdCBvZg0KPiArICogICAgICAgICBjbGVhcmluZyBzdGF0dXMgcmVnaXN0ZXIg MiwgaW5jbHVkaW5nIHRoZSBRRSBiaXQuIFRoZSAxMDBiIGNvZGUgaXMNCj4gKyAqICAgICAgICAg dXNlZCBpZiB3cml0aW5nIG9uZSBieXRlIHRvIHRoZSBzdGF0dXMgcmVnaXN0ZXIgZG9lcyBub3Qg bW9kaWZ5DQo+ICsgKiAgICAgICAgIHN0YXR1cyByZWdpc3RlciAyLg0KPiArICogLSAwMTBiOiBR RSBpcyBiaXQgNiBvZiBzdGF0dXMgcmVnaXN0ZXIgMS4gSXQgaXMgc2V0IHZpYSBXcml0ZSBTdGF0 dXMgd2l0aA0KPiArICogICAgICAgICBvbmUgZGF0YSBieXRlIHdoZXJlIGJpdCA2IGlzIG9uZS4N Cj4gKyAqICAgICAgICAgWy4uLl0NCj4gKyAqIC0gMDExYjogUUUgaXMgYml0IDcgb2Ygc3RhdHVz IHJlZ2lzdGVyIDIuIEl0IGlzIHNldCB2aWEgV3JpdGUgc3RhdHVzDQo+ICsgKiAgICAgICAgIHJl Z2lzdGVyIDIgaW5zdHJ1Y3Rpb24gM0VoIHdpdGggb25lIGRhdGEgYnl0ZSB3aGVyZSBiaXQgNyBp cyBvbmUuDQo+ICsgKiAgICAgICAgIFsuLi5dDQo+ICsgKiAgICAgICAgIFRoZSBzdGF0dXMgcmVn aXN0ZXIgMiBpcyByZWFkIHVzaW5nIGluc3RydWN0aW9uIDNGaC4NCj4gKyAqIC0gMTAwYjogUUUg aXMgYml0IDEgb2Ygc3RhdHVzIHJlZ2lzdGVyIDIuIEl0IGlzIHNldCB2aWEgV3JpdGUgU3RhdHVz IHdpdGgNCj4gKyAqICAgICAgICAgdHdvIGRhdGEgYnl0ZXMgd2hlcmUgYml0IDEgb2YgdGhlIHNl Y29uZCBieXRlIGlzIG9uZS4NCj4gKyAqICAgICAgICAgWy4uLl0NCj4gKyAqICAgICAgICAgSW4g Y29udHJhc3QgdG8gdGhlIDAwMWIgY29kZSwgd3JpdGluZyBvbmUgYnl0ZSB0byB0aGUgc3RhdHVz DQo+ICsgKiAgICAgICAgIHJlZ2lzdGVyIGRvZXMgbm90IG1vZGlmeSBzdGF0dXMgcmVnaXN0ZXIg Mi4NCj4gKyAqIC0gMTAxYjogUUUgaXMgYml0IDEgb2Ygc3RhdHVzIHJlZ2lzdGVyIDIuIFN0YXR1 cyByZWdpc3RlciAxIGlzIHJlYWQgdXNpbmcNCj4gKyAqICAgICAgICAgUmVhZCBTdGF0dXMgaW5z dHJ1Y3Rpb24gMDVoLiBTdGF0dXMgcmVnaXN0ZXIyIGlzIHJlYWQgdXNpbmcNCj4gKyAqICAgICAg ICAgaW5zdHJ1Y3Rpb24gMzVoLiBRRSBpcyBzZXQgdmlhIFdyaXQgU3RhdHVzIGluc3RydWN0aW9u IDAxaCB3aXRoDQo+ICsgKiAgICAgICAgIHR3byBkYXRhIGJ5dGVzIHdoZXJlIGJpdCAxIG9mIHRo ZSBzZWNvbmQgYnl0ZSBpcyBvbmUuDQo+ICsgKiAgICAgICAgIFsuLi5dDQo+ICsgKi8NCj4gKyNk ZWZpbmUgQkZQVF9EV09SRDE1X1FFUl9NQVNLCQkJR0VOTUFTSygyMiwgMjApDQo+ICsjZGVmaW5l IEJGUFRfRFdPUkQxNV9RRVJfTk9ORQkJCSgweDBVTCA8PCAyMCkgLyogTWljcm9uICovDQo+ICsj ZGVmaW5lIEJGUFRfRFdPUkQxNV9RRVJfU1IyX0JJVDFfQlVHR1kJCSgweDFVTCA8PCAyMCkNCj4g KyNkZWZpbmUgQkZQVF9EV09SRDE1X1FFUl9TUjFfQklUNgkJKDB4MlVMIDw8IDIwKSAvKiBNYWNy b25peCAqLw0KPiArI2RlZmluZSBCRlBUX0RXT1JEMTVfUUVSX1NSMl9CSVQ3CQkoMHgzVUwgPDwg MjApDQo+ICsjZGVmaW5lIEJGUFRfRFdPUkQxNV9RRVJfU1IyX0JJVDFfTk9fUkQJCSgweDRVTCA8 PCAyMCkNCj4gKyNkZWZpbmUgQkZQVF9EV09SRDE1X1FFUl9TUjJfQklUMQkJKDB4NVVMIDw8IDIw KSAvKiBTcGFuc2lvbiAqLw0KPiArDQo+ICtzdHJ1Y3Qgc2ZkcF9iZnB0IHsNCj4gKwl1MzIJZHdv cmRzW0JGUFRfRFdPUkRfTUFYXTsNCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0IHNw aV9ub3JfZml4dXBzIC0gU1BJIE5PUiBmaXh1cCBob29rcw0KPiArICogQHBvc3RfYmZwdDogY2Fs bGVkIGFmdGVyIHRoZSBCRlBUIHRhYmxlIGhhcyBiZWVuIHBhcnNlZA0KPiArICoNCj4gKyAqIFRo b3NlIGhvb2tzIGNhbiBiZSB1c2VkIHRvIHR3ZWFrIHRoZSBTUEkgTk9SIGNvbmZpZ3VyYXRpb24g d2hlbiB0aGUgU0ZEUA0KPiArICogdGFibGUgaXMgYnJva2VuIG9yIG5vdCBhdmFpbGFibGUuDQo+ ICsgKi8NCj4gK3N0cnVjdCBzcGlfbm9yX2ZpeHVwcyB7DQo+ICsJaW50ICgqcG9zdF9iZnB0KShz dHJ1Y3Qgc3BpX25vciAqbm9yLA0KPiArCQkJIGNvbnN0IHN0cnVjdCBzZmRwX3BhcmFtZXRlcl9o ZWFkZXIgKmJmcHRfaGVhZGVyLA0KPiArCQkJIGNvbnN0IHN0cnVjdCBzZmRwX2JmcHQgKmJmcHQs DQo+ICsJCQkgc3RydWN0IHNwaV9ub3JfZmxhc2hfcGFyYW1ldGVyICpwYXJhbXMpOw0KPiArfTsN Cj4gKw0KPiAgc3RydWN0IGZsYXNoX2luZm8gew0KPiAgCWNoYXIJCSpuYW1lOw0KPiAgDQo+IEBA IC05MSw2ICsyODEsOSBAQCBzdHJ1Y3QgZmxhc2hfaW5mbyB7DQo+ICAjZGVmaW5lIFNQSV9OT1Jf U0tJUF9TRkRQCUJJVCgxMykJLyogU2tpcCBwYXJzaW5nIG9mIFNGRFAgdGFibGVzICovDQo+ICAj ZGVmaW5lIFVTRV9DTFNSCQlCSVQoMTQpCS8qIHVzZSBDTFNSIGNvbW1hbmQgKi8NCj4gIA0KPiAr CS8qIFBhcnQgc3BlY2lmaWMgZml4dXAgaG9va3MuICovDQo+ICsJY29uc3Qgc3RydWN0IHNwaV9u b3JfZml4dXBzICpmaXh1cHM7DQo+ICsNCj4gIAlpbnQJKCpxdWFkX2VuYWJsZSkoc3RydWN0IHNw aV9ub3IgKm5vcik7DQo+ICB9Ow0KPiAgDQo+IEBAIC0yMDc2LDcxICsyMjY5LDYgQEAgc3RhdGlj IGludCBzM2FuX25vcl9zY2FuKGNvbnN0IHN0cnVjdCBmbGFzaF9pbmZvICppbmZvLCBzdHJ1Y3Qg c3BpX25vciAqbm9yKQ0KPiAgCXJldHVybiAwOw0KPiAgfQ0KPiAgDQo+IC1zdHJ1Y3Qgc3BpX25v cl9yZWFkX2NvbW1hbmQgew0KPiAtCXU4CQkJbnVtX21vZGVfY2xvY2tzOw0KPiAtCXU4CQkJbnVt X3dhaXRfc3RhdGVzOw0KPiAtCXU4CQkJb3Bjb2RlOw0KPiAtCWVudW0gc3BpX25vcl9wcm90b2Nv bAlwcm90bzsNCj4gLX07DQo+IC0NCj4gLXN0cnVjdCBzcGlfbm9yX3BwX2NvbW1hbmQgew0KPiAt CXU4CQkJb3Bjb2RlOw0KPiAtCWVudW0gc3BpX25vcl9wcm90b2NvbAlwcm90bzsNCj4gLX07DQo+ IC0NCj4gLWVudW0gc3BpX25vcl9yZWFkX2NvbW1hbmRfaW5kZXggew0KPiAtCVNOT1JfQ01EX1JF QUQsDQo+IC0JU05PUl9DTURfUkVBRF9GQVNULA0KPiAtCVNOT1JfQ01EX1JFQURfMV8xXzFfRFRS LA0KPiAtDQo+IC0JLyogRHVhbCBTUEkgKi8NCj4gLQlTTk9SX0NNRF9SRUFEXzFfMV8yLA0KPiAt CVNOT1JfQ01EX1JFQURfMV8yXzIsDQo+IC0JU05PUl9DTURfUkVBRF8yXzJfMiwNCj4gLQlTTk9S X0NNRF9SRUFEXzFfMl8yX0RUUiwNCj4gLQ0KPiAtCS8qIFF1YWQgU1BJICovDQo+IC0JU05PUl9D TURfUkVBRF8xXzFfNCwNCj4gLQlTTk9SX0NNRF9SRUFEXzFfNF80LA0KPiAtCVNOT1JfQ01EX1JF QURfNF80XzQsDQo+IC0JU05PUl9DTURfUkVBRF8xXzRfNF9EVFIsDQo+IC0NCj4gLQkvKiBPY3Rv IFNQSSAqLw0KPiAtCVNOT1JfQ01EX1JFQURfMV8xXzgsDQo+IC0JU05PUl9DTURfUkVBRF8xXzhf OCwNCj4gLQlTTk9SX0NNRF9SRUFEXzhfOF84LA0KPiAtCVNOT1JfQ01EX1JFQURfMV84XzhfRFRS LA0KPiAtDQo+IC0JU05PUl9DTURfUkVBRF9NQVgNCj4gLX07DQo+IC0NCj4gLWVudW0gc3BpX25v cl9wcF9jb21tYW5kX2luZGV4IHsNCj4gLQlTTk9SX0NNRF9QUCwNCj4gLQ0KPiAtCS8qIFF1YWQg U1BJICovDQo+IC0JU05PUl9DTURfUFBfMV8xXzQsDQo+IC0JU05PUl9DTURfUFBfMV80XzQsDQo+ IC0JU05PUl9DTURfUFBfNF80XzQsDQo+IC0NCj4gLQkvKiBPY3RvIFNQSSAqLw0KPiAtCVNOT1Jf Q01EX1BQXzFfMV84LA0KPiAtCVNOT1JfQ01EX1BQXzFfOF84LA0KPiAtCVNOT1JfQ01EX1BQXzhf OF84LA0KPiAtDQo+IC0JU05PUl9DTURfUFBfTUFYDQo+IC19Ow0KPiAtDQo+IC1zdHJ1Y3Qgc3Bp X25vcl9mbGFzaF9wYXJhbWV0ZXIgew0KPiAtCXU2NAkJCQlzaXplOw0KPiAtCXUzMgkJCQlwYWdl X3NpemU7DQo+IC0NCj4gLQlzdHJ1Y3Qgc3BpX25vcl9od2NhcHMJCWh3Y2FwczsNCj4gLQlzdHJ1 Y3Qgc3BpX25vcl9yZWFkX2NvbW1hbmQJcmVhZHNbU05PUl9DTURfUkVBRF9NQVhdOw0KPiAtCXN0 cnVjdCBzcGlfbm9yX3BwX2NvbW1hbmQJcGFnZV9wcm9ncmFtc1tTTk9SX0NNRF9QUF9NQVhdOw0K PiAtDQo+IC0JaW50ICgqcXVhZF9lbmFibGUpKHN0cnVjdCBzcGlfbm9yICpub3IpOw0KPiAtfTsN Cj4gLQ0KPiAgc3RhdGljIHZvaWQNCj4gIHNwaV9ub3Jfc2V0X3JlYWRfc2V0dGluZ3Moc3RydWN0 IHNwaV9ub3JfcmVhZF9jb21tYW5kICpyZWFkLA0KPiAgCQkJICB1OCBudW1fbW9kZV9jbG9ja3Ms DQo+IEBAIC0yMjYzLDExNyArMjM5MSw2IEBAIHN0YXRpYyBpbnQgc3BpX25vcl9yZWFkX3NmZHBf ZG1hX3Vuc2FmZShzdHJ1Y3Qgc3BpX25vciAqbm9yLCB1MzIgYWRkciwNCj4gIAlyZXR1cm4gcmV0 Ow0KPiAgfQ0KPiAgDQo+IC1zdHJ1Y3Qgc2ZkcF9wYXJhbWV0ZXJfaGVhZGVyIHsNCj4gLQl1OAkJ aWRfbHNiOw0KPiAtCXU4CQltaW5vcjsNCj4gLQl1OAkJbWFqb3I7DQo+IC0JdTgJCWxlbmd0aDsg LyogaW4gZG91YmxlIHdvcmRzICovDQo+IC0JdTgJCXBhcmFtZXRlcl90YWJsZV9wb2ludGVyWzNd OyAvKiBieXRlIGFkZHJlc3MgKi8NCj4gLQl1OAkJaWRfbXNiOw0KPiAtfTsNCj4gLQ0KPiAtI2Rl ZmluZSBTRkRQX1BBUkFNX0hFQURFUl9JRChwKQkoKChwKS0+aWRfbXNiIDw8IDgpIHwgKHApLT5p ZF9sc2IpDQo+IC0jZGVmaW5lIFNGRFBfUEFSQU1fSEVBREVSX1BUUChwKSBcDQo+IC0JKCgocCkt PnBhcmFtZXRlcl90YWJsZV9wb2ludGVyWzJdIDw8IDE2KSB8IFwNCj4gLQkgKChwKS0+cGFyYW1l dGVyX3RhYmxlX3BvaW50ZXJbMV0gPDwgIDgpIHwgXA0KPiAtCSAoKHApLT5wYXJhbWV0ZXJfdGFi bGVfcG9pbnRlclswXSA8PCAgMCkpDQo+IC0NCj4gLSNkZWZpbmUgU0ZEUF9CRlBUX0lECQkweGZm MDAJLyogQmFzaWMgRmxhc2ggUGFyYW1ldGVyIFRhYmxlICovDQo+IC0jZGVmaW5lIFNGRFBfU0VD VE9SX01BUF9JRAkweGZmODEJLyogU2VjdG9yIE1hcCBUYWJsZSAqLw0KPiAtDQo+IC0jZGVmaW5l IFNGRFBfU0lHTkFUVVJFCQkweDUwNDQ0NjUzVQ0KPiAtI2RlZmluZSBTRkRQX0pFU0QyMTZfTUFK T1IJMQ0KPiAtI2RlZmluZSBTRkRQX0pFU0QyMTZfTUlOT1IJMA0KPiAtI2RlZmluZSBTRkRQX0pF U0QyMTZBX01JTk9SCTUNCj4gLSNkZWZpbmUgU0ZEUF9KRVNEMjE2Ql9NSU5PUgk2DQo+IC0NCj4g LXN0cnVjdCBzZmRwX2hlYWRlciB7DQo+IC0JdTMyCQlzaWduYXR1cmU7IC8qIE94NTA0NDQ2NTNV IDw9PiAiU0ZEUCIgKi8NCj4gLQl1OAkJbWlub3I7DQo+IC0JdTgJCW1ham9yOw0KPiAtCXU4CQlu cGg7IC8qIDAtYmFzZSBudW1iZXIgb2YgcGFyYW1ldGVyIGhlYWRlcnMgKi8NCj4gLQl1OAkJdW51 c2VkOw0KPiAtDQo+IC0JLyogQmFzaWMgRmxhc2ggUGFyYW1ldGVyIFRhYmxlLiAqLw0KPiAtCXN0 cnVjdCBzZmRwX3BhcmFtZXRlcl9oZWFkZXIJYmZwdF9oZWFkZXI7DQo+IC19Ow0KPiAtDQo+IC0v KiBCYXNpYyBGbGFzaCBQYXJhbWV0ZXIgVGFibGUgKi8NCj4gLQ0KPiAtLyoNCj4gLSAqIEpFU0Qy MTYgcmV2IEIgZGVmaW5lcyBhIEJhc2ljIEZsYXNoIFBhcmFtZXRlciBUYWJsZSBvZiAxNiBEV09S RHMuDQo+IC0gKiBUaGV5IGFyZSBpbmRleGVkIGZyb20gMSBidXQgQyBhcnJheXMgYXJlIGluZGV4 ZWQgZnJvbSAwLg0KPiAtICovDQo+IC0jZGVmaW5lIEJGUFRfRFdPUkQoaSkJCSgoaSkgLSAxKQ0K PiAtI2RlZmluZSBCRlBUX0RXT1JEX01BWAkJMTYNCj4gLQ0KPiAtLyogVGhlIGZpcnN0IHZlcnNp b24gb2YgSkVTQjIxNiBkZWZpbmVkIG9ubHkgOSBEV09SRHMuICovDQo+IC0jZGVmaW5lIEJGUFRf RFdPUkRfTUFYX0pFU0QyMTYJCQk5DQo+IC0NCj4gLS8qIDFzdCBEV09SRC4gKi8NCj4gLSNkZWZp bmUgQkZQVF9EV09SRDFfRkFTVF9SRUFEXzFfMV8yCQlCSVQoMTYpDQo+IC0jZGVmaW5lIEJGUFRf RFdPUkQxX0FERFJFU1NfQllURVNfTUFTSwkJR0VOTUFTSygxOCwgMTcpDQo+IC0jZGVmaW5lIEJG UFRfRFdPUkQxX0FERFJFU1NfQllURVNfM19PTkxZCSgweDBVTCA8PCAxNykNCj4gLSNkZWZpbmUg QkZQVF9EV09SRDFfQUREUkVTU19CWVRFU18zX09SXzQJKDB4MVVMIDw8IDE3KQ0KPiAtI2RlZmlu ZSBCRlBUX0RXT1JEMV9BRERSRVNTX0JZVEVTXzRfT05MWQkoMHgyVUwgPDwgMTcpDQo+IC0jZGVm aW5lIEJGUFRfRFdPUkQxX0RUUgkJCQlCSVQoMTkpDQo+IC0jZGVmaW5lIEJGUFRfRFdPUkQxX0ZB U1RfUkVBRF8xXzJfMgkJQklUKDIwKQ0KPiAtI2RlZmluZSBCRlBUX0RXT1JEMV9GQVNUX1JFQURf MV80XzQJCUJJVCgyMSkNCj4gLSNkZWZpbmUgQkZQVF9EV09SRDFfRkFTVF9SRUFEXzFfMV80CQlC SVQoMjIpDQo+IC0NCj4gLS8qIDV0aCBEV09SRC4gKi8NCj4gLSNkZWZpbmUgQkZQVF9EV09SRDVf RkFTVF9SRUFEXzJfMl8yCQlCSVQoMCkNCj4gLSNkZWZpbmUgQkZQVF9EV09SRDVfRkFTVF9SRUFE XzRfNF80CQlCSVQoNCkNCj4gLQ0KPiAtLyogMTF0aCBEV09SRC4gKi8NCj4gLSNkZWZpbmUgQkZQ VF9EV09SRDExX1BBR0VfU0laRV9TSElGVAkJNA0KPiAtI2RlZmluZSBCRlBUX0RXT1JEMTFfUEFH RV9TSVpFX01BU0sJCUdFTk1BU0soNywgNCkNCj4gLQ0KPiAtLyogMTV0aCBEV09SRC4gKi8NCj4g LQ0KPiAtLyoNCj4gLSAqIChmcm9tIEpFU0QyMTYgcmV2IEIpDQo+IC0gKiBRdWFkIEVuYWJsZSBS ZXF1aXJlbWVudHMgKFFFUik6DQo+IC0gKiAtIDAwMGI6IERldmljZSBkb2VzIG5vdCBoYXZlIGEg UUUgYml0LiBEZXZpY2UgZGV0ZWN0cyAxLTEtNCBhbmQgMS00LTQNCj4gLSAqICAgICAgICAgcmVh ZHMgYmFzZWQgb24gaW5zdHJ1Y3Rpb24uIERRMy9IT0xEIyBmdW5jdGlvbnMgYXJlIGhvbGQgZHVy aW5nDQo+IC0gKiAgICAgICAgIGluc3RydWN0aW9uIHBoYXNlLg0KPiAtICogLSAwMDFiOiBRRSBp cyBiaXQgMSBvZiBzdGF0dXMgcmVnaXN0ZXIgMi4gSXQgaXMgc2V0IHZpYSBXcml0ZSBTdGF0dXMg d2l0aA0KPiAtICogICAgICAgICB0d28gZGF0YSBieXRlcyB3aGVyZSBiaXQgMSBvZiB0aGUgc2Vj b25kIGJ5dGUgaXMgb25lLg0KPiAtICogICAgICAgICBbLi4uXQ0KPiAtICogICAgICAgICBXcml0 aW5nIG9ubHkgb25lIGJ5dGUgdG8gdGhlIHN0YXR1cyByZWdpc3RlciBoYXMgdGhlIHNpZGUtZWZm ZWN0IG9mDQo+IC0gKiAgICAgICAgIGNsZWFyaW5nIHN0YXR1cyByZWdpc3RlciAyLCBpbmNsdWRp bmcgdGhlIFFFIGJpdC4gVGhlIDEwMGIgY29kZSBpcw0KPiAtICogICAgICAgICB1c2VkIGlmIHdy aXRpbmcgb25lIGJ5dGUgdG8gdGhlIHN0YXR1cyByZWdpc3RlciBkb2VzIG5vdCBtb2RpZnkNCj4g LSAqICAgICAgICAgc3RhdHVzIHJlZ2lzdGVyIDIuDQo+IC0gKiAtIDAxMGI6IFFFIGlzIGJpdCA2 IG9mIHN0YXR1cyByZWdpc3RlciAxLiBJdCBpcyBzZXQgdmlhIFdyaXRlIFN0YXR1cyB3aXRoDQo+ IC0gKiAgICAgICAgIG9uZSBkYXRhIGJ5dGUgd2hlcmUgYml0IDYgaXMgb25lLg0KPiAtICogICAg ICAgICBbLi4uXQ0KPiAtICogLSAwMTFiOiBRRSBpcyBiaXQgNyBvZiBzdGF0dXMgcmVnaXN0ZXIg Mi4gSXQgaXMgc2V0IHZpYSBXcml0ZSBzdGF0dXMNCj4gLSAqICAgICAgICAgcmVnaXN0ZXIgMiBp bnN0cnVjdGlvbiAzRWggd2l0aCBvbmUgZGF0YSBieXRlIHdoZXJlIGJpdCA3IGlzIG9uZS4NCj4g LSAqICAgICAgICAgWy4uLl0NCj4gLSAqICAgICAgICAgVGhlIHN0YXR1cyByZWdpc3RlciAyIGlz IHJlYWQgdXNpbmcgaW5zdHJ1Y3Rpb24gM0ZoLg0KPiAtICogLSAxMDBiOiBRRSBpcyBiaXQgMSBv ZiBzdGF0dXMgcmVnaXN0ZXIgMi4gSXQgaXMgc2V0IHZpYSBXcml0ZSBTdGF0dXMgd2l0aA0KPiAt ICogICAgICAgICB0d28gZGF0YSBieXRlcyB3aGVyZSBiaXQgMSBvZiB0aGUgc2Vjb25kIGJ5dGUg aXMgb25lLg0KPiAtICogICAgICAgICBbLi4uXQ0KPiAtICogICAgICAgICBJbiBjb250cmFzdCB0 byB0aGUgMDAxYiBjb2RlLCB3cml0aW5nIG9uZSBieXRlIHRvIHRoZSBzdGF0dXMNCj4gLSAqICAg ICAgICAgcmVnaXN0ZXIgZG9lcyBub3QgbW9kaWZ5IHN0YXR1cyByZWdpc3RlciAyLg0KPiAtICog LSAxMDFiOiBRRSBpcyBiaXQgMSBvZiBzdGF0dXMgcmVnaXN0ZXIgMi4gU3RhdHVzIHJlZ2lzdGVy IDEgaXMgcmVhZCB1c2luZw0KPiAtICogICAgICAgICBSZWFkIFN0YXR1cyBpbnN0cnVjdGlvbiAw NWguIFN0YXR1cyByZWdpc3RlcjIgaXMgcmVhZCB1c2luZw0KPiAtICogICAgICAgICBpbnN0cnVj dGlvbiAzNWguIFFFIGlzIHNldCB2aWEgV3JpdCBTdGF0dXMgaW5zdHJ1Y3Rpb24gMDFoIHdpdGgN Cj4gLSAqICAgICAgICAgdHdvIGRhdGEgYnl0ZXMgd2hlcmUgYml0IDEgb2YgdGhlIHNlY29uZCBi eXRlIGlzIG9uZS4NCj4gLSAqICAgICAgICAgWy4uLl0NCj4gLSAqLw0KPiAtI2RlZmluZSBCRlBU X0RXT1JEMTVfUUVSX01BU0sJCQlHRU5NQVNLKDIyLCAyMCkNCj4gLSNkZWZpbmUgQkZQVF9EV09S RDE1X1FFUl9OT05FCQkJKDB4MFVMIDw8IDIwKSAvKiBNaWNyb24gKi8NCj4gLSNkZWZpbmUgQkZQ VF9EV09SRDE1X1FFUl9TUjJfQklUMV9CVUdHWQkJKDB4MVVMIDw8IDIwKQ0KPiAtI2RlZmluZSBC RlBUX0RXT1JEMTVfUUVSX1NSMV9CSVQ2CQkoMHgyVUwgPDwgMjApIC8qIE1hY3Jvbml4ICovDQo+ IC0jZGVmaW5lIEJGUFRfRFdPUkQxNV9RRVJfU1IyX0JJVDcJCSgweDNVTCA8PCAyMCkNCj4gLSNk ZWZpbmUgQkZQVF9EV09SRDE1X1FFUl9TUjJfQklUMV9OT19SRAkJKDB4NFVMIDw8IDIwKQ0KPiAt I2RlZmluZSBCRlBUX0RXT1JEMTVfUUVSX1NSMl9CSVQxCQkoMHg1VUwgPDwgMjApIC8qIFNwYW5z aW9uICovDQo+IC0NCj4gLXN0cnVjdCBzZmRwX2JmcHQgew0KPiAtCXUzMglkd29yZHNbQkZQVF9E V09SRF9NQVhdOw0KPiAtfTsNCj4gLQ0KPiAgLyogRmFzdCBSZWFkIHNldHRpbmdzLiAqLw0KPiAg DQo+ICBzdGF0aWMgaW5saW5lIHZvaWQNCj4gQEAgLTI1OTUsNiArMjYxMiwxOSBAQCBzdGF0aWMg dm9pZCBzcGlfbm9yX2luaXRfdW5pZm9ybV9lcmFzZV9tYXAoc3RydWN0IHNwaV9ub3JfZXJhc2Vf bWFwICptYXAsDQo+ICAJbWFwLT51bmlmb3JtX2VyYXNlX3R5cGUgPSBlcmFzZV9tYXNrOw0KPiAg fQ0KPiAgDQo+ICtzdGF0aWMgaW50DQo+ICtzcGlfbm9yX3Bvc3RfYmZwdF9maXh1cHMoc3RydWN0 IHNwaV9ub3IgKm5vciwNCj4gKwkJCSBjb25zdCBzdHJ1Y3Qgc2ZkcF9wYXJhbWV0ZXJfaGVhZGVy ICpiZnB0X2hlYWRlciwNCj4gKwkJCSBjb25zdCBzdHJ1Y3Qgc2ZkcF9iZnB0ICpiZnB0LA0KPiAr CQkJIHN0cnVjdCBzcGlfbm9yX2ZsYXNoX3BhcmFtZXRlciAqcGFyYW1zKQ0KPiArew0KPiArCWlm IChub3ItPmluZm8tPmZpeHVwcyAmJiBub3ItPmluZm8tPmZpeHVwcy0+cG9zdF9iZnB0KQ0KPiAr CQlyZXR1cm4gbm9yLT5pbmZvLT5maXh1cHMtPnBvc3RfYmZwdChub3IsIGJmcHRfaGVhZGVyLCBi ZnB0LA0KPiArCQkJCQkJICAgIHBhcmFtcyk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4g Kw0KPiAgLyoqDQo+ICAgKiBzcGlfbm9yX3BhcnNlX2JmcHQoKSAtIHJlYWQgYW5kIHBhcnNlIHRo ZSBCYXNpYyBGbGFzaCBQYXJhbWV0ZXIgVGFibGUuDQo+ICAgKiBAbm9yOgkJcG9pbnRlciB0byBh ICdzdHJ1Y3Qgc3BpX25vcicNCj4gQEAgLTI3NDcsNyArMjc3Nyw4IEBAIHN0YXRpYyBpbnQgc3Bp X25vcl9wYXJzZV9iZnB0KHN0cnVjdCBzcGlfbm9yICpub3IsDQo+ICANCj4gIAkvKiBTdG9wIGhl cmUgaWYgbm90IEpFU0QyMTYgcmV2IEEgb3IgbGF0ZXIuICovDQo+ICAJaWYgKGJmcHRfaGVhZGVy LT5sZW5ndGggPCBCRlBUX0RXT1JEX01BWCkNCj4gLQkJcmV0dXJuIDA7DQo+ICsJCXJldHVybiBz cGlfbm9yX3Bvc3RfYmZwdF9maXh1cHMobm9yLCBiZnB0X2hlYWRlciwgJmJmcHQsDQo+ICsJCQkJ CQlwYXJhbXMpOw0KPiAgDQo+ICAJLyogUGFnZSBzaXplOiB0aGlzIGZpZWxkIHNwZWNpZmllcyAn Ticgc28gdGhlIHBhZ2Ugc2l6ZSA9IDJeTiBieXRlcy4gKi8NCj4gIAlwYXJhbXMtPnBhZ2Vfc2l6 ZSA9IGJmcHQuZHdvcmRzW0JGUFRfRFdPUkQoMTEpXTsNCj4gQEAgLTI3ODIsNyArMjgxMyw3IEBA IHN0YXRpYyBpbnQgc3BpX25vcl9wYXJzZV9iZnB0KHN0cnVjdCBzcGlfbm9yICpub3IsDQo+ICAJ CXJldHVybiAtRUlOVkFMOw0KPiAgCX0NCj4gIA0KPiAtCXJldHVybiAwOw0KPiArCXJldHVybiBz cGlfbm9yX3Bvc3RfYmZwdF9maXh1cHMobm9yLCBiZnB0X2hlYWRlciwgJmJmcHQsIHBhcmFtcyk7 DQo+ICB9DQo+ICANCj4gICNkZWZpbmUgU01QVF9DTURfQUREUkVTU19MRU5fTUFTSwkJR0VOTUFT SygyMywgMjIpDQo+IA0K