From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 1CE0121B06E63 for ; Tue, 18 Jul 2017 14:12:44 -0700 (PDT) From: "Verma, Vishal L" Subject: Re: [ndctl PATCH] ndctl: correctly propagate errors from sysfs_write_attr Date: Tue, 18 Jul 2017 21:14:36 +0000 Message-ID: <1500412378.6401.57.camel@intel.com> References: <20170718203055.11179-1-vishal.l.verma@intel.com> In-Reply-To: <20170718203055.11179-1-vishal.l.verma@intel.com> Content-Language: en-US Content-ID: MIME-Version: 1.0 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: "linux-nvdimm@lists.01.org" List-ID: T24gVHVlLCAyMDE3LTA3LTE4IGF0IDE0OjMwIC0wNjAwLCBWaXNoYWwgVmVybWEgd3JvdGU6DQo+ IEluIGxpYm5kY3RsLCBpZiBhIHN5c2ZzX3dyaXRlX2F0dHIgZmFpbGVkLCB3ZSBzaW1wbHkgcmV0 dXJuZWQgRU5YSU8sDQo+IHdoaWNoIHdvdWxkIHByaW50IGEgY29uZnVzaW5nIGVycm9yIG1lc3Nh Z2UgKCJ1bnN1cHBvcnRlZA0KPiBjb25maWd1cmF0aW9uIikgZm9yIHNvbWV0aGluZyBsaWtlIEVB Q0NFU1MuLg0KPiANCj4gUHJvcGFnYXRlIHRoZSBhY3R1YWxsIHJldHVybiBmcm9tIHRoZSBzeXNm cyBoZWxwZXIgaW4gYWxsIHRoZSBjYWxsDQoNCm9vcHMsIHMvYWN0dWFsbC9hY3R1YWwvDQoNCj4g c2l0ZXMuIEFsc28gdXNlIHN0cmVycm9yKCkgaW5zdGVhZCBvZiBvcGVuLWNvZGluZyBhIHRyYW5z bGF0aW9uIG9mDQo+IGVycm9yDQo+IG1lc3NhZ2VzIGluIGNyZWF0ZS1uYW1lc3BhY2UuDQo+IA0K PiBDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+DQo+IFNpZ25lZC1v ZmYtYnk6IFZpc2hhbCBWZXJtYSA8dmlzaGFsLmwudmVybWFAaW50ZWwuY29tPg0KPiAtLS0NCj4g wqBuZGN0bC9saWIvbGlibmRjdGwuYyB8IDk1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tDQo+IC0tLS0tLS0tLS0tDQo+IMKgbmRjdGwvbmFtZXNwYWNlLmPCoMKgwqDC oHwgMTMgKystLS0tLQ0KPiDCoDIgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgNTIg ZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvbmRjdGwvbGliL2xpYm5kY3RsLmMgYi9u ZGN0bC9saWIvbGlibmRjdGwuYw0KPiBpbmRleCA2OGQ4MDY0Li5kZGExMzQ1IDEwMDY0NA0KPiAt LS0gYS9uZGN0bC9saWIvbGlibmRjdGwuYw0KPiArKysgYi9uZGN0bC9saWIvbGlibmRjdGwuYw0K PiBAQCAtMTA1MCw3ICsxMDUwLDcgQEAgTkRDVExfRVhQT1JUIGludCBuZGN0bF9yZWdpb25fc2V0 X3JvKHN0cnVjdA0KPiBuZGN0bF9yZWdpb24gKnJlZ2lvbiwgaW50IHJvKQ0KPiDCoHsNCj4gwqAJ c3RydWN0IG5kY3RsX2N0eCAqY3R4ID0gbmRjdGxfcmVnaW9uX2dldF9jdHgocmVnaW9uKTsNCj4g wqAJY2hhciAqcGF0aCA9IHJlZ2lvbi0+cmVnaW9uX2J1ZjsNCj4gLQlpbnQgbGVuID0gcmVnaW9u LT5idWZfbGVuOw0KPiArCWludCBsZW4gPSByZWdpb24tPmJ1Zl9sZW4sIHJjOw0KPiDCoA0KPiDC oAlpZiAoc25wcmludGYocGF0aCwgbGVuLCAiJXMvcmVhZF9vbmx5IiwgcmVnaW9uLT5yZWdpb25f cGF0aCkNCj4gPj0gbGVuKSB7DQo+IMKgCQllcnIoY3R4LCAiJXM6IGJ1ZmZlciB0b28gc21hbGwh XG4iLA0KPiBAQCAtMTA1OSw4ICsxMDU5LDkgQEAgTkRDVExfRVhQT1JUIGludCBuZGN0bF9yZWdp b25fc2V0X3JvKHN0cnVjdA0KPiBuZGN0bF9yZWdpb24gKnJlZ2lvbiwgaW50IHJvKQ0KPiDCoAl9 DQo+IMKgDQo+IMKgCXJvID0gISFybzsNCj4gLQlpZiAoc3lzZnNfd3JpdGVfYXR0cihjdHgsIHBh dGgsIHJvID8gIjFcbiIgOiAiMFxuIikgPCAwKQ0KPiAtCQlyZXR1cm4gLUVOWElPOw0KPiArCXJj ID0gc3lzZnNfd3JpdGVfYXR0cihjdHgsIHBhdGgsIHJvID8gIjFcbiIgOiAiMFxuIik7DQo+ICsJ aWYgKHJjIDwgMCkNCj4gKwkJcmV0dXJuIHJjOw0KPiDCoA0KPiDCoAlyZWdpb24tPnJvID0gcm87 DQo+IMKgCXJldHVybiBybzsNCj4gQEAgLTMyMzUsNyArMzIzNiw3IEBAIE5EQ1RMX0VYUE9SVCBp bnQNCj4gbmRjdGxfbmFtZXNwYWNlX3NldF9yYXdfbW9kZShzdHJ1Y3QgbmRjdGxfbmFtZXNwYWNl ICpuZG5zLA0KPiDCoHsNCj4gwqAJc3RydWN0IG5kY3RsX2N0eCAqY3R4ID0gbmRjdGxfbmFtZXNw YWNlX2dldF9jdHgobmRucyk7DQo+IMKgCWNoYXIgKnBhdGggPSBuZG5zLT5uZG5zX2J1ZjsNCj4g LQlpbnQgbGVuID0gbmRucy0+YnVmX2xlbjsNCj4gKwlpbnQgbGVuID0gbmRucy0+YnVmX2xlbiwg cmM7DQo+IMKgDQo+IMKgCWlmIChzbnByaW50ZihwYXRoLCBsZW4sICIlcy9mb3JjZV9yYXciLCBu ZG5zLT5uZG5zX3BhdGgpID49DQo+IGxlbikgew0KPiDCoAkJZXJyKGN0eCwgIiVzOiBidWZmZXIg dG9vIHNtYWxsIVxuIiwNCj4gQEAgLTMyNDQsOCArMzI0NSw5IEBAIE5EQ1RMX0VYUE9SVCBpbnQN Cj4gbmRjdGxfbmFtZXNwYWNlX3NldF9yYXdfbW9kZShzdHJ1Y3QgbmRjdGxfbmFtZXNwYWNlICpu ZG5zLA0KPiDCoAl9DQo+IMKgDQo+IMKgCXJhd19tb2RlID0gISFyYXdfbW9kZTsNCj4gLQlpZiAo c3lzZnNfd3JpdGVfYXR0cihjdHgsIHBhdGgsIHJhd19tb2RlID8gIjFcbiIgOiAiMFxuIikgPA0K PiAwKQ0KPiAtCQlyZXR1cm4gLUVOWElPOw0KPiArCXJjID0gc3lzZnNfd3JpdGVfYXR0cihjdHgs IHBhdGgsIHJhd19tb2RlID8gIjFcbiIgOiAiMFxuIik7DQo+ICsJaWYgKHJjIDwgMCkNCj4gKwkJ cmV0dXJuIHJjOw0KPiDCoA0KPiDCoAluZG5zLT5yYXdfbW9kZSA9IHJhd19tb2RlOw0KPiDCoAly ZXR1cm4gcmF3X21vZGU7DQo+IEBAIC0zNjAyLDcgKzM2MDQsNyBAQCBORENUTF9FWFBPUlQgaW50 IG5kY3RsX25hbWVzcGFjZV9zZXRfdXVpZChzdHJ1Y3QNCj4gbmRjdGxfbmFtZXNwYWNlICpuZG5z LCB1dWlkX3QgdQ0KPiDCoHsNCj4gwqAJc3RydWN0IG5kY3RsX2N0eCAqY3R4ID0gbmRjdGxfbmFt ZXNwYWNlX2dldF9jdHgobmRucyk7DQo+IMKgCWNoYXIgKnBhdGggPSBuZG5zLT5uZG5zX2J1ZjsN Cj4gLQlpbnQgbGVuID0gbmRucy0+YnVmX2xlbjsNCj4gKwlpbnQgbGVuID0gbmRucy0+YnVmX2xl biwgcmM7DQo+IMKgCWNoYXIgdXVpZFs0MF07DQo+IMKgDQo+IMKgCWlmIChzbnByaW50ZihwYXRo LCBsZW4sICIlcy91dWlkIiwgbmRucy0+bmRuc19wYXRoKSA+PSBsZW4pIHsNCj4gQEAgLTM2MTIs OCArMzYxNCw5IEBAIE5EQ1RMX0VYUE9SVCBpbnQgbmRjdGxfbmFtZXNwYWNlX3NldF91dWlkKHN0 cnVjdA0KPiBuZGN0bF9uYW1lc3BhY2UgKm5kbnMsIHV1aWRfdCB1DQo+IMKgCX0NCj4gwqANCj4g wqAJdXVpZF91bnBhcnNlKHV1LCB1dWlkKTsNCj4gLQlpZiAoc3lzZnNfd3JpdGVfYXR0cihjdHgs IHBhdGgsIHV1aWQpICE9IDApDQo+IC0JCXJldHVybiAtRU5YSU87DQo+ICsJcmMgPSBzeXNmc193 cml0ZV9hdHRyKGN0eCwgcGF0aCwgdXVpZCk7DQo+ICsJaWYgKHJjICE9IDApDQo+ICsJCXJldHVy biByYzsNCj4gwqAJbWVtY3B5KG5kbnMtPnV1aWQsIHV1LCBzaXplb2YodXVpZF90KSk7DQo+IMKg CXJldHVybiAwOw0KPiDCoH0NCj4gQEAgLTM2NDUsNyArMzY0OCw3IEBAIE5EQ1RMX0VYUE9SVCBp bnQNCj4gbmRjdGxfbmFtZXNwYWNlX3NldF9zZWN0b3Jfc2l6ZShzdHJ1Y3QgbmRjdGxfbmFtZXNw YWNlICpuZG5zLA0KPiDCoHsNCj4gwqAJc3RydWN0IG5kY3RsX2N0eCAqY3R4ID0gbmRjdGxfbmFt ZXNwYWNlX2dldF9jdHgobmRucyk7DQo+IMKgCWNoYXIgKnBhdGggPSBuZG5zLT5uZG5zX2J1ZjsN Cj4gLQlpbnQgbGVuID0gbmRucy0+YnVmX2xlbjsNCj4gKwlpbnQgbGVuID0gbmRucy0+YnVmX2xl biwgcmM7DQo+IMKgCWNoYXIgc2VjdG9yX3N0cls0MF07DQo+IMKgCWludCBpOw0KPiDCoA0KPiBA QCAtMzY1OSw4ICszNjYyLDkgQEAgTkRDVExfRVhQT1JUIGludA0KPiBuZGN0bF9uYW1lc3BhY2Vf c2V0X3NlY3Rvcl9zaXplKHN0cnVjdCBuZGN0bF9uYW1lc3BhY2UgKm5kbnMsDQo+IMKgCX0NCj4g wqANCj4gwqAJc3ByaW50ZihzZWN0b3Jfc3RyLCAiJWRcbiIsIHNlY3Rvcl9zaXplKTsNCj4gLQlp ZiAoc3lzZnNfd3JpdGVfYXR0cihjdHgsIHBhdGgsIHNlY3Rvcl9zdHIpICE9IDApDQo+IC0JCXJl dHVybiAtRU5YSU87DQo+ICsJcmMgPSBzeXNmc193cml0ZV9hdHRyKGN0eCwgcGF0aCwgc2VjdG9y X3N0cik7DQo+ICsJaWYgKHJjICE9IDApDQo+ICsJCXJldHVybiByYzsNCj4gwqANCj4gwqAJZm9y IChpID0gMDsgaSA8IG5kbnMtPmxiYXNpemUubnVtOyBpKyspDQo+IMKgCQlpZiAobmRucy0+bGJh c2l6ZS5zdXBwb3J0ZWRbaV0gPT0gc2VjdG9yX3NpemUpDQo+IEBAIC0zNjgwLDcgKzM2ODQsNyBA QCBORENUTF9FWFBPUlQgaW50DQo+IG5kY3RsX25hbWVzcGFjZV9zZXRfYWx0X25hbWUoc3RydWN0 IG5kY3RsX25hbWVzcGFjZSAqbmRucywNCj4gwqB7DQo+IMKgCXN0cnVjdCBuZGN0bF9jdHggKmN0 eCA9IG5kY3RsX25hbWVzcGFjZV9nZXRfY3R4KG5kbnMpOw0KPiDCoAljaGFyICpwYXRoID0gbmRu cy0+bmRuc19idWY7DQo+IC0JaW50IGxlbiA9IG5kbnMtPmJ1Zl9sZW47DQo+ICsJaW50IGxlbiA9 IG5kbnMtPmJ1Zl9sZW4sIHJjOw0KPiDCoAljaGFyICpidWY7DQo+IMKgDQo+IMKgCWlmICghbmRu cy0+YWx0X25hbWUpDQo+IEBAIC0zNjk5LDkgKzM3MDMsMTAgQEAgTkRDVExfRVhQT1JUIGludA0K PiBuZGN0bF9uYW1lc3BhY2Vfc2V0X2FsdF9uYW1lKHN0cnVjdCBuZGN0bF9uYW1lc3BhY2UgKm5k bnMsDQo+IMKgCWlmICghYnVmKQ0KPiDCoAkJcmV0dXJuIC1FTk9NRU07DQo+IMKgDQo+IC0JaWYg KHN5c2ZzX3dyaXRlX2F0dHIoY3R4LCBwYXRoLCBidWYpIDwgMCkgew0KPiArCXJjID0gc3lzZnNf d3JpdGVfYXR0cihjdHgsIHBhdGgsIGJ1Zik7DQo+ICsJaWYgKHJjIDwgMCkgew0KPiDCoAkJZnJl ZShidWYpOw0KPiAtCQlyZXR1cm4gLUVOWElPOw0KPiArCQlyZXR1cm4gcmM7DQo+IMKgCX0NCj4g wqANCj4gwqAJZnJlZShuZG5zLT5hbHRfbmFtZSk7DQo+IEBAIC0zNzI0LDcgKzM3MjksNyBAQCBz dGF0aWMgaW50IG5hbWVzcGFjZV9zZXRfc2l6ZShzdHJ1Y3QNCj4gbmRjdGxfbmFtZXNwYWNlICpu ZG5zLA0KPiDCoHsNCj4gwqAJc3RydWN0IG5kY3RsX2N0eCAqY3R4ID0gbmRjdGxfbmFtZXNwYWNl X2dldF9jdHgobmRucyk7DQo+IMKgCWNoYXIgKnBhdGggPSBuZG5zLT5uZG5zX2J1ZjsNCj4gLQlp bnQgbGVuID0gbmRucy0+YnVmX2xlbjsNCj4gKwlpbnQgbGVuID0gbmRucy0+YnVmX2xlbiwgcmM7 DQo+IMKgCWNoYXIgYnVmW1NZU0ZTX0FUVFJfU0laRV07DQo+IMKgDQo+IMKgCWlmIChzbnByaW50 ZihwYXRoLCBsZW4sICIlcy9zaXplIiwgbmRucy0+bmRuc19wYXRoKSA+PSBsZW4pIHsNCj4gQEAg LTM3MzQsOCArMzczOSw5IEBAIHN0YXRpYyBpbnQgbmFtZXNwYWNlX3NldF9zaXplKHN0cnVjdA0K PiBuZGN0bF9uYW1lc3BhY2UgKm5kbnMsDQo+IMKgCX0NCj4gwqANCj4gwqAJc3ByaW50ZihidWYs ICIlI2xseFxuIiwgc2l6ZSk7DQo+IC0JaWYgKHN5c2ZzX3dyaXRlX2F0dHIoY3R4LCBwYXRoLCBi dWYpIDwgMCkNCj4gLQkJcmV0dXJuIC1FTlhJTzsNCj4gKwlyYyA9IHN5c2ZzX3dyaXRlX2F0dHIo Y3R4LCBwYXRoLCBidWYpOw0KPiArCWlmIChyYyA8IDApDQo+ICsJCXJldHVybiByYzsNCj4gwqAN Cj4gwqAJbmRucy0+c2l6ZSA9IHNpemU7DQo+IMKgCXJldHVybiAwOw0KPiBAQCAtNDAwOCw3ICs0 MDE0LDcgQEAgTkRDVExfRVhQT1JUIGludCBuZGN0bF9idHRfc2V0X3V1aWQoc3RydWN0DQo+IG5k Y3RsX2J0dCAqYnR0LCB1dWlkX3QgdXUpDQo+IMKgew0KPiDCoAlzdHJ1Y3QgbmRjdGxfY3R4ICpj dHggPSBuZGN0bF9idHRfZ2V0X2N0eChidHQpOw0KPiDCoAljaGFyICpwYXRoID0gYnR0LT5idHRf YnVmOw0KPiAtCWludCBsZW4gPSBidHQtPmJ1Zl9sZW47DQo+ICsJaW50IGxlbiA9IGJ0dC0+YnVm X2xlbiwgcmM7DQo+IMKgCWNoYXIgdXVpZFs0MF07DQo+IMKgDQo+IMKgCWlmIChzbnByaW50Zihw YXRoLCBsZW4sICIlcy91dWlkIiwgYnR0LT5idHRfcGF0aCkgPj0gbGVuKSB7DQo+IEBAIC00MDE4 LDggKzQwMjQsOSBAQCBORENUTF9FWFBPUlQgaW50IG5kY3RsX2J0dF9zZXRfdXVpZChzdHJ1Y3QN Cj4gbmRjdGxfYnR0ICpidHQsIHV1aWRfdCB1dSkNCj4gwqAJfQ0KPiDCoA0KPiDCoAl1dWlkX3Vu cGFyc2UodXUsIHV1aWQpOw0KPiAtCWlmIChzeXNmc193cml0ZV9hdHRyKGN0eCwgcGF0aCwgdXVp ZCkgIT0gMCkNCj4gLQkJcmV0dXJuIC1FTlhJTzsNCj4gKwlyYyA9IHN5c2ZzX3dyaXRlX2F0dHIo Y3R4LCBwYXRoLCB1dWlkKTsNCj4gKwlpZiAocmMgIT0gMCkNCj4gKwkJcmV0dXJuIHJjOw0KPiDC oAltZW1jcHkoYnR0LT51dWlkLCB1dSwgc2l6ZW9mKHV1aWRfdCkpOw0KPiDCoAlyZXR1cm4gMDsN Cj4gwqB9DQo+IEBAIC00MDI5LDcgKzQwMzYsNyBAQCBORENUTF9FWFBPUlQgaW50DQo+IG5kY3Rs X2J0dF9zZXRfc2VjdG9yX3NpemUoc3RydWN0IG5kY3RsX2J0dCAqYnR0LA0KPiDCoHsNCj4gwqAJ c3RydWN0IG5kY3RsX2N0eCAqY3R4ID0gbmRjdGxfYnR0X2dldF9jdHgoYnR0KTsNCj4gwqAJY2hh ciAqcGF0aCA9IGJ0dC0+YnR0X2J1ZjsNCj4gLQlpbnQgbGVuID0gYnR0LT5idWZfbGVuOw0KPiAr CWludCBsZW4gPSBidHQtPmJ1Zl9sZW4sIHJjOw0KPiDCoAljaGFyIHNlY3Rvcl9zdHJbNDBdOw0K PiDCoAlpbnQgaTsNCj4gwqANCj4gQEAgLTQwNDAsOCArNDA0Nyw5IEBAIE5EQ1RMX0VYUE9SVCBp bnQNCj4gbmRjdGxfYnR0X3NldF9zZWN0b3Jfc2l6ZShzdHJ1Y3QgbmRjdGxfYnR0ICpidHQsDQo+ IMKgCX0NCj4gwqANCj4gwqAJc3ByaW50ZihzZWN0b3Jfc3RyLCAiJWRcbiIsIHNlY3Rvcl9zaXpl KTsNCj4gLQlpZiAoc3lzZnNfd3JpdGVfYXR0cihjdHgsIHBhdGgsIHNlY3Rvcl9zdHIpICE9IDAp DQo+IC0JCXJldHVybiAtRU5YSU87DQo+ICsJcmMgPSBzeXNmc193cml0ZV9hdHRyKGN0eCwgcGF0 aCwgc2VjdG9yX3N0cik7DQo+ICsJaWYgKHJjICE9IDApDQo+ICsJCXJldHVybiByYzsNCj4gwqAN Cj4gwqAJZm9yIChpID0gMDsgaSA8IGJ0dC0+bGJhc2l6ZS5udW07IGkrKykNCj4gwqAJCWlmIChi dHQtPmxiYXNpemUuc3VwcG9ydGVkW2ldID09IHNlY3Rvcl9zaXplKQ0KPiBAQCAtNDA1Myw4ICs0 MDYxLDggQEAgTkRDVExfRVhQT1JUIGludCBuZGN0bF9idHRfc2V0X25hbWVzcGFjZShzdHJ1Y3QN Cj4gbmRjdGxfYnR0ICpidHQsDQo+IMKgCQlzdHJ1Y3QgbmRjdGxfbmFtZXNwYWNlICpuZG5zKQ0K PiDCoHsNCj4gwqAJc3RydWN0IG5kY3RsX2N0eCAqY3R4ID0gbmRjdGxfYnR0X2dldF9jdHgoYnR0 KTsNCj4gKwlpbnQgbGVuID0gYnR0LT5idWZfbGVuLCByYzsNCj4gwqAJY2hhciAqcGF0aCA9IGJ0 dC0+YnR0X2J1ZjsNCj4gLQlpbnQgbGVuID0gYnR0LT5idWZfbGVuOw0KPiDCoA0KPiDCoAlpZiAo c25wcmludGYocGF0aCwgbGVuLCAiJXMvbmFtZXNwYWNlIiwgYnR0LT5idHRfcGF0aCkgPj0NCj4g bGVuKSB7DQo+IMKgCQllcnIoY3R4LCAiJXM6IGJ1ZmZlciB0b28gc21hbGwhXG4iLA0KPiBAQCAt NDA2Miw5ICs0MDcwLDEwIEBAIE5EQ1RMX0VYUE9SVCBpbnQgbmRjdGxfYnR0X3NldF9uYW1lc3Bh Y2Uoc3RydWN0DQo+IG5kY3RsX2J0dCAqYnR0LA0KPiDCoAkJcmV0dXJuIC1FTlhJTzsNCj4gwqAJ fQ0KPiDCoA0KPiAtCWlmIChzeXNmc193cml0ZV9hdHRyKGN0eCwgcGF0aCwgbmRucw0KPiAtCQkJ CT8gbmRjdGxfbmFtZXNwYWNlX2dldF9kZXZuYW1lKG5kbnMpIDoNCj4gIlxuIikpDQo+IC0JCXJl dHVybiAtRU5YSU87DQo+ICsJcmMgPSBzeXNmc193cml0ZV9hdHRyKGN0eCwgcGF0aCwgbmRucw0K PiArCQkJCT8gbmRjdGxfbmFtZXNwYWNlX2dldF9kZXZuYW1lKG5kbnMpIDoNCj4gIlxuIik7DQo+ ICsJaWYgKHJjICE9IDApDQo+ICsJCXJldHVybiByYzsNCj4gwqANCj4gwqAJYnR0LT5uZG5zID0g bmRuczsNCj4gwqAJcmV0dXJuIDA7DQo+IEBAIC00NDA3LDggKzQ0MTYsOCBAQCBORENUTF9FWFBP UlQgdW5zaWduZWQgbG9uZyBsb25nDQo+IG5kY3RsX3Bmbl9nZXRfcmVzb3VyY2Uoc3RydWN0IG5k Y3RsX3BmbiAqcGZuKQ0KPiDCoE5EQ1RMX0VYUE9SVCBpbnQgbmRjdGxfcGZuX3NldF91dWlkKHN0 cnVjdCBuZGN0bF9wZm4gKnBmbiwgdXVpZF90IHV1KQ0KPiDCoHsNCj4gwqAJc3RydWN0IG5kY3Rs X2N0eCAqY3R4ID0gbmRjdGxfcGZuX2dldF9jdHgocGZuKTsNCj4gKwlpbnQgbGVuID0gcGZuLT5i dWZfbGVuLCByYzsNCj4gwqAJY2hhciAqcGF0aCA9IHBmbi0+cGZuX2J1ZjsNCj4gLQlpbnQgbGVu ID0gcGZuLT5idWZfbGVuOw0KPiDCoAljaGFyIHV1aWRbNDBdOw0KPiDCoA0KPiDCoAlpZiAoc25w cmludGYocGF0aCwgbGVuLCAiJXMvdXVpZCIsIHBmbi0+cGZuX3BhdGgpID49IGxlbikgew0KPiBA QCAtNDQxOCw4ICs0NDI3LDkgQEAgTkRDVExfRVhQT1JUIGludCBuZGN0bF9wZm5fc2V0X3V1aWQo c3RydWN0DQo+IG5kY3RsX3BmbiAqcGZuLCB1dWlkX3QgdXUpDQo+IMKgCX0NCj4gwqANCj4gwqAJ dXVpZF91bnBhcnNlKHV1LCB1dWlkKTsNCj4gLQlpZiAoc3lzZnNfd3JpdGVfYXR0cihjdHgsIHBh dGgsIHV1aWQpICE9IDApDQo+IC0JCXJldHVybiAtRU5YSU87DQo+ICsJcmMgPSBzeXNmc193cml0 ZV9hdHRyKGN0eCwgcGF0aCwgdXVpZCk7DQo+ICsJaWYgKHJjICE9IDApDQo+ICsJCXJldHVybiBy YzsNCj4gwqAJbWVtY3B5KHBmbi0+dXVpZCwgdXUsIHNpemVvZih1dWlkX3QpKTsNCj4gwqAJcmV0 dXJuIDA7DQo+IMKgfQ0KPiBAQCAtNDQzMyw4ICs0NDQzLDggQEAgTkRDVExfRVhQT1JUIGludCBu ZGN0bF9wZm5fc2V0X2xvY2F0aW9uKHN0cnVjdA0KPiBuZGN0bF9wZm4gKnBmbiwNCj4gwqAJCWVu dW0gbmRjdGxfcGZuX2xvYyBsb2MpDQo+IMKgew0KPiDCoAlzdHJ1Y3QgbmRjdGxfY3R4ICpjdHgg PSBuZGN0bF9wZm5fZ2V0X2N0eChwZm4pOw0KPiArCWludCBsZW4gPSBwZm4tPmJ1Zl9sZW4sIHJj Ow0KPiDCoAljaGFyICpwYXRoID0gcGZuLT5wZm5fYnVmOw0KPiAtCWludCBsZW4gPSBwZm4tPmJ1 Zl9sZW47DQo+IMKgCWNvbnN0IGNoYXIgKmxvY2F0aW9uc1tdID0gew0KPiDCoAkJW05EQ1RMX1BG Tl9MT0NfTk9ORV0gPSAibm9uZSIsDQo+IMKgCQlbTkRDVExfUEZOX0xPQ19SQU1dID0gInJhbSIs DQo+IEBAIC00NDU2LDggKzQ0NjYsOSBAQCBORENUTF9FWFBPUlQgaW50IG5kY3RsX3Bmbl9zZXRf bG9jYXRpb24oc3RydWN0DQo+IG5kY3RsX3BmbiAqcGZuLA0KPiDCoAkJcmV0dXJuIC1FTlhJTzsN Cj4gwqAJfQ0KPiDCoA0KPiAtCWlmIChzeXNmc193cml0ZV9hdHRyKGN0eCwgcGF0aCwgbG9jYXRp b25zW2xvY10pICE9IDApDQo+IC0JCXJldHVybiAtRU5YSU87DQo+ICsJcmMgPSBzeXNmc193cml0 ZV9hdHRyKGN0eCwgcGF0aCwgbG9jYXRpb25zW2xvY10pOw0KPiArCWlmIChyYyAhPSAwKQ0KPiAr CQlyZXR1cm4gcmM7DQo+IMKgCXBmbi0+bG9jID0gbG9jOw0KPiDCoAlyZXR1cm4gMDsNCj4gwqB9 DQo+IEBAIC00NDg2LDggKzQ0OTcsOCBAQCBORENUTF9FWFBPUlQgaW50IG5kY3RsX3Bmbl9oYXNf YWxpZ24oc3RydWN0DQo+IG5kY3RsX3BmbiAqcGZuKQ0KPiDCoE5EQ1RMX0VYUE9SVCBpbnQgbmRj dGxfcGZuX3NldF9hbGlnbihzdHJ1Y3QgbmRjdGxfcGZuICpwZm4sIHVuc2lnbmVkDQo+IGxvbmcg YWxpZ24pDQo+IMKgew0KPiDCoAlzdHJ1Y3QgbmRjdGxfY3R4ICpjdHggPSBuZGN0bF9wZm5fZ2V0 X2N0eChwZm4pOw0KPiArCWludCBsZW4gPSBwZm4tPmJ1Zl9sZW4sIHJjOw0KPiDCoAljaGFyICpw YXRoID0gcGZuLT5wZm5fYnVmOw0KPiAtCWludCBsZW4gPSBwZm4tPmJ1Zl9sZW47DQo+IMKgCWNo YXIgYWxpZ25fc3RyWzQwXTsNCj4gwqANCj4gwqAJaWYgKHNucHJpbnRmKHBhdGgsIGxlbiwgIiVz L2FsaWduIiwgcGZuLT5wZm5fcGF0aCkgPj0gbGVuKSB7DQo+IEBAIC00NDk3LDggKzQ1MDgsOSBA QCBORENUTF9FWFBPUlQgaW50IG5kY3RsX3Bmbl9zZXRfYWxpZ24oc3RydWN0DQo+IG5kY3RsX3Bm biAqcGZuLCB1bnNpZ25lZCBsb25nIGFsaWduKQ0KPiDCoAl9DQo+IMKgDQo+IMKgCXNwcmludGYo YWxpZ25fc3RyLCAiJWx1XG4iLCBhbGlnbik7DQo+IC0JaWYgKHN5c2ZzX3dyaXRlX2F0dHIoY3R4 LCBwYXRoLCBhbGlnbl9zdHIpICE9IDApDQo+IC0JCXJldHVybiAtRU5YSU87DQo+ICsJcmMgPSBz eXNmc193cml0ZV9hdHRyKGN0eCwgcGF0aCwgYWxpZ25fc3RyKTsNCj4gKwlpZiAocmMgIT0gMCkN Cj4gKwkJcmV0dXJuIHJjOw0KPiDCoAlwZm4tPmFsaWduID0gYWxpZ247DQo+IMKgCXJldHVybiAw Ow0KPiDCoH0NCj4gQEAgLTQ1MDcsOCArNDUxOSw4IEBAIE5EQ1RMX0VYUE9SVCBpbnQgbmRjdGxf cGZuX3NldF9uYW1lc3BhY2Uoc3RydWN0DQo+IG5kY3RsX3BmbiAqcGZuLA0KPiDCoAkJc3RydWN0 IG5kY3RsX25hbWVzcGFjZSAqbmRucykNCj4gwqB7DQo+IMKgCXN0cnVjdCBuZGN0bF9jdHggKmN0 eCA9IG5kY3RsX3Bmbl9nZXRfY3R4KHBmbik7DQo+ICsJaW50IGxlbiA9IHBmbi0+YnVmX2xlbiwg cmM7DQo+IMKgCWNoYXIgKnBhdGggPSBwZm4tPnBmbl9idWY7DQo+IC0JaW50IGxlbiA9IHBmbi0+ YnVmX2xlbjsNCj4gwqANCj4gwqAJaWYgKHNucHJpbnRmKHBhdGgsIGxlbiwgIiVzL25hbWVzcGFj ZSIsIHBmbi0+cGZuX3BhdGgpID49DQo+IGxlbikgew0KPiDCoAkJZXJyKGN0eCwgIiVzOiBidWZm ZXIgdG9vIHNtYWxsIVxuIiwNCj4gQEAgLTQ1MTYsOSArNDUyOCwxMCBAQCBORENUTF9FWFBPUlQg aW50IG5kY3RsX3Bmbl9zZXRfbmFtZXNwYWNlKHN0cnVjdA0KPiBuZGN0bF9wZm4gKnBmbiwNCj4g wqAJCXJldHVybiAtRU5YSU87DQo+IMKgCX0NCj4gwqANCj4gLQlpZiAoc3lzZnNfd3JpdGVfYXR0 cihjdHgsIHBhdGgsIG5kbnMNCj4gLQkJCQk/IG5kY3RsX25hbWVzcGFjZV9nZXRfZGV2bmFtZShu ZG5zKSA6DQo+ICJcbiIpKQ0KPiAtCQlyZXR1cm4gLUVOWElPOw0KPiArCXJjID0gc3lzZnNfd3Jp dGVfYXR0cihjdHgsIHBhdGgsIG5kbnMNCj4gKwkJCQk/IG5kY3RsX25hbWVzcGFjZV9nZXRfZGV2 bmFtZShuZG5zKSA6DQo+ICJcbiIpOw0KPiArCWlmIChyYyAhPSAwKQ0KPiArCQlyZXR1cm4gcmM7 DQo+IMKgDQo+IMKgCXBmbi0+bmRucyA9IG5kbnM7DQo+IMKgCXJldHVybiAwOw0KPiBkaWZmIC0t Z2l0IGEvbmRjdGwvbmFtZXNwYWNlLmMgYi9uZGN0bC9uYW1lc3BhY2UuYw0KPiBpbmRleCBhOTU3 NmNlLi5lNGFlMzFhIDEwMDY0NA0KPiAtLS0gYS9uZGN0bC9uYW1lc3BhY2UuYw0KPiArKysgYi9u ZGN0bC9uYW1lc3BhY2UuYw0KPiBAQCAtOTc4LDE3ICs5NzgsOCBAQCBpbnQgY21kX2NyZWF0ZV9u YW1lc3BhY2UoaW50IGFyZ2MsIGNvbnN0IGNoYXINCj4gKiphcmd2LCB2b2lkICpjdHgpDQo+IMKg CX0NCj4gwqANCj4gwqAJaWYgKGNyZWF0ZWQgPCAwIHx8ICghbmFtZXNwYWNlICYmIGNyZWF0ZWQg PCAxKSkgew0KPiAtCQljaGFyICpyZWFzb24gPSAiIjsNCj4gLQ0KPiAtCQlpZiAoY3JlYXRlZCA9 PSAtRUFHQUlOKQ0KPiAtCQkJcmVhc29uID0gIjogbm8gc3VpdGFibGUgY2FwYWNpdHkgZm91bmQi Ow0KPiAtCQllbHNlIGlmIChjcmVhdGVkID09IC1FTlhJTykNCj4gLQkJCXJlYXNvbiA9ICI6IHVu c3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24iOw0KPiAtCQllbHNlIGlmIChjcmVhdGVkID09IC1FSU5W QUwpDQo+IC0JCQlyZWFzb24gPSAiOiBpbnZhbGlkIGFyZ3VtZW50IjsNCj4gLQ0KPiAtCQlmcHJp bnRmKHN0ZGVyciwgImZhaWxlZCB0byAlcyBuYW1lc3BhY2Ulc1xuIiwNCj4gbmFtZXNwYWNlDQo+ IC0JCQkJPyAicmVjb25maWd1cmUiIDogImNyZWF0ZSIsIHJlYXNvbik7DQo+ICsJCWZwcmludGYo c3RkZXJyLCAiZmFpbGVkIHRvICVzIG5hbWVzcGFjZTogJXNcbiIsDQo+IG5hbWVzcGFjZQ0KPiAr CQkJCT8gInJlY29uZmlndXJlIiA6ICJjcmVhdGUiLA0KPiBzdHJlcnJvcigtY3JlYXRlZCkpOw0K PiDCoAkJaWYgKCFuYW1lc3BhY2UpDQo+IMKgCQkJY3JlYXRlZCA9IC1FTk9ERVY7DQo+IMKgCX0K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtbnZk aW1tIG1haWxpbmcgbGlzdApMaW51eC1udmRpbW1AbGlzdHMuMDEub3JnCmh0dHBzOi8vbGlzdHMu MDEub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtbnZkaW1tCg==