From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56292) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bUnJP-0000uo-MY for qemu-devel@nongnu.org; Tue, 02 Aug 2016 23:57:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bUnJL-00083i-KS for qemu-devel@nongnu.org; Tue, 02 Aug 2016 23:57:43 -0400 Message-ID: <1470196651.12584.46.camel@kernel.crashing.org> From: Benjamin Herrenschmidt Date: Wed, 03 Aug 2016 13:57:31 +1000 In-Reply-To: <1470194197.12584.45.camel@kernel.crashing.org> References: <1470194197.12584.45.camel@kernel.crashing.org> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: base64 Subject: Re: [Qemu-devel] [PATCH 3/3] ppc: Fix signal delivery in 64-bit usermode qemu List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-ppc@nongnu.org Cc: qemu-devel@nongnu.org, david@gibson.dropbear.id.au T24gV2VkLCAyMDE2LTA4LTAzIGF0IDEzOjE2ICsxMDAwLCBCZW5qYW1pbiBIZXJyZW5zY2ht aWR0IHdyb3RlOg0KPiBUaGVyZSB3ZXJlIGEgbnVtYmVyIG9mIGJ1Z3MgaW4gdGhlIGltcGxl bWVudGF0aW9uLiBUaGUgc3RydWN0dXJlDQo+IGFsaWdubWVudCB3YXMgd3JvbmcgZm9yIDY0 LWJpdC4gQWxzbyA2NC1iaXQgb25seSBkb2VzIFJUIHNpZ25hbHMuDQo+IA0KPiBGaW5hbGx5 IG9uIDY0LWJpdCwgd2UgbmVlZCB0byBwdXQgYSBwb2ludGVyIHRvIHRoZSAoYWxpZ25lZCkN Cj4gdmVjdG9yIHJlZ2lzdGVycyBpbiB0aGUgZnJhbWUuDQo+IA0KPiBUaGlzIGlzIHN0aWxs IG1pc3Npbmcgc3VwcG9ydCBmb3IgVlNYIHdoaWNoIEkgd2lsbCBhZGQgc2VwYXJhdGVseS4N Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEhlcnJlbnNjaG1pZHQgPGJlbmhAa2Vy bmVsLmNyYXNoaW5nLm9yZz4NCj4gLS0tDQoNCkRvbnQgYXBwbHkgdGhpcyBqdXN0IHlldCAu Li4gdGhlIHBhdGNoIGlzIGNvcnJlY3QgYnV0IGRvZXNuJ3QgZml4IGFsbA0KdGhlIGJ1Z3Mg Oi0pIFRoZXJlJ3Mgc29tZSBlbmRpYW4gY3JhcCB0b28uIFdpbGwgcG9zdCBhIG5ldyBvbmUu DQoNCj4gwqBsaW51eC11c2VyL3BwYy9zeXNjYWxsX25yLmggfMKgwqAyICsrDQo+IMKgbGlu dXgtdXNlci9zaWduYWwuY8KgwqDCoMKgwqDCoMKgwqDCoHwgNzUgKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tDQo+IC0tLS0tLS0tLS0tLQ0KPiDCoDIgZmlsZXMgY2hhbmdl ZCwgNDQgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0 IGEvbGludXgtdXNlci9wcGMvc3lzY2FsbF9uci5oIGIvbGludXgtDQo+IHVzZXIvcHBjL3N5 c2NhbGxfbnIuaA0KPiBpbmRleCA0NmVkOGE2Li5hZmEzNjU0IDEwMDY0NA0KPiAtLS0gYS9s aW51eC11c2VyL3BwYy9zeXNjYWxsX25yLmgNCj4gKysrIGIvbGludXgtdXNlci9wcGMvc3lz Y2FsbF9uci5oDQo+IEBAIC0xMjAsNyArMTIwLDkgQEANCj4gwqAjZGVmaW5lIFRBUkdFVF9O Ul9zeXNpbmZvwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAxMTYNCj4gwqAjZGVm aW5lIFRBUkdFVF9OUl9pcGPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgMTE3DQo+IMKgI2RlZmluZSBUQVJHRVRfTlJfZnN5bmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAxMTgNCj4gKyNpZiAhZGVmaW5lZChUQVJHRVRfUFBDNjQpDQo+ IMKgI2RlZmluZSBUQVJHRVRfTlJfc2lncmV0dXJuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoDExOQ0KPiArI2VuZGlmDQo+IMKgI2RlZmluZSBUQVJHRVRfTlJfY2xvbmXCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAxMjANCj4gwqAjZGVmaW5lIFRBUkdFVF9O Ul9zZXRkb21haW5uYW1lwqDCoMKgwqDCoMKgwqDCoMKgwqAxMjENCj4gwqAjZGVmaW5lIFRB UkdFVF9OUl91bmFtZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDEyMg0K PiBkaWZmIC0tZ2l0IGEvbGludXgtdXNlci9zaWduYWwuYyBiL2xpbnV4LXVzZXIvc2lnbmFs LmMNCj4gaW5kZXggOWE0ZDg5NC4uYWY4MGEzZSAxMDA2NDQNCj4gLS0tIGEvbGludXgtdXNl ci9zaWduYWwuYw0KPiArKysgYi9saW51eC11c2VyL3NpZ25hbC5jDQo+IEBAIC00NDA4LDcg KzQ0MDgsMTIgQEAgc3RydWN0IHRhcmdldF9tY29udGV4dCB7DQo+IMKgwqDCoMKgwqB0YXJn ZXRfdWxvbmcgbWNfZ3JlZ3NbNDhdOw0KPiDCoMKgwqDCoMKgLyogSW5jbHVkZXMgZnBzY3Iu wqDCoCovDQo+IMKgwqDCoMKgwqB1aW50NjRfdCBtY19mcmVnc1szM107DQo+ICsjaWYgZGVm aW5lZChUQVJHRVRfUFBDNjQpDQo+ICvCoMKgwqDCoC8qIFBvaW50ZXIgdG8gdGhlIHZlY3Rv ciByZWdzICovDQo+ICvCoMKgwqDCoHRhcmdldF91bG9uZyB2X3JlZ3M7DQo+ICsjZWxzZQ0K PiDCoMKgwqDCoMKgdGFyZ2V0X3Vsb25nIG1jX3BhZFsyXTsNCj4gKyNlbmRpZg0KPiDCoMKg wqDCoMKgLyogV2UgbmVlZCB0byBoYW5kbGUgQWx0aXZlYyBhbmQgU1BFIGF0IHRoZSBzYW1l IHRpbWUsIHdoaWNoIG5vDQo+IMKgwqDCoMKgwqDCoMKgwqBrZXJuZWwgbmVlZHMgdG8gZG8u wqDCoEZvcnR1bmF0ZWx5LCB0aGUga2VybmVsIGRlZmluZXMgdGhpcyBiaXQNCj4gdG8NCj4g wqDCoMKgwqDCoMKgwqDCoGJlIEFsdGl2ZWMtcmVnaXN0ZXItbGFyZ2UgYWxsIHRoZSB0aW1l LCByYXRoZXIgdGhhbiB0cnlpbmcgdG8NCj4gQEAgLTQ0MTgsMTUgKzQ0MjMsMjQgQEAgc3Ry dWN0IHRhcmdldF9tY29udGV4dCB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IHNw ZVszM107DQo+IMKgwqDCoMKgwqDCoMKgwqDCoC8qIEFsdGl2ZWMgdmVjdG9yIHJlZ2lzdGVy cy7CoMKgVGhlIHBhY2tpbmcgb2YgVlNDUiBhbmQgVlJTQVZFDQo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHZhcmllcyBkZXBlbmRpbmcgb24gd2hldGhlciB3ZSdyZSBQUEM2NCBvciBu b3Q6IFBQQzY0DQo+IHNwbGl0cw0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRoZW0gYXBh cnQ7IFBQQzMyIHN0dWZmcyB0aGVtIHRvZ2V0aGVyLsKgwqAqLw0KPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHRoZW0gYXBhcnQ7IFBQQzMyIHN0dWZmcyB0aGVtIHRvZ2V0aGVyLg0KPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoFdlIGFsc28gbmVlZCB0byBhY2NvdW50IGZvciB0aGUg VlNYIHJlZ2lzdGVycyBvbiBQUEM2NA0KPiArwqDCoMKgwqDCoMKgwqDCoCovDQo+IMKgI2lm IGRlZmluZWQoVEFSR0VUX1BQQzY0KQ0KPiAtI2RlZmluZSBRRU1VX05WUlJFRyAzNA0KPiAr I2RlZmluZSBRRU1VX05WUlJFRyAoMzQgKyAxNikNCj4gK8KgwqDCoMKgwqDCoMKgwqAvKiBP biBwcGM2NCwgd2UgbmVlZCB0byBhbGlnbiB0byAxNiBieXRlcyBieSBoYW5kICovDQo+ICvC oMKgwqDCoMKgwqDCoMKgdGFyZ2V0X3Vsb25nIHBhZDsNCj4gwqAjZWxzZQ0KPiArwqDCoMKg wqDCoMKgwqDCoC8qIE9uIHBwYzMyLCB3ZSBhcmUgYWxyZWFkeSBhbGlnbmVkIHRvIDE2IGJ5 dGVzICovDQo+IMKgI2RlZmluZSBRRU1VX05WUlJFRyAzMw0KPiDCoCNlbmRpZg0KPiAtwqDC oMKgwqDCoMKgwqDCoHBwY19hdnJfdCBhbHRpdmVjW1FFTVVfTlZSUkVHXTsNCj4gK8KgwqDC oMKgwqDCoMKgwqAvKiBXZSBjYW5ub3QgdXNlIHBwY19hdnJfdCBoZXJlIGFzIHdlIGRvICpu b3QqIHdhbnQgdGhlDQo+IGltcGxpZWQNCj4gK8KgwqDCoMKgwqDCoMKgwqDCoCogMTYtYnl0 ZXMgYWxpZ25tZW50IHRoYXQgd291bGQgcmVzdWx0IGZyb20gaXQuIFRoaXMgd291bGQNCj4g aGF2ZQ0KPiArwqDCoMKgwqDCoMKgwqDCoMKgKiB0aGUgZWZmZWN0IG9mIG1ha2luZy4gVGhl IDMyLWJpdCB2YXJpYW50IGlzIGFscmVhZHkNCj4gYWxpZ25lZC4NCj4gK8KgwqDCoMKgwqDC oMKgwqDCoCovDQo+ICvCoMKgwqDCoMKgwqDCoMKgdWludDY0X3QgYWx0aXZlY1tRRU1VX05W UlJFR11bMl07DQo+IMKgI3VuZGVmIFFFTVVfTlZSUkVHDQo+IC3CoMKgwqDCoH0gbWNfdnJl Z3MgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSk7DQo+ICvCoMKgwqDCoH0gbWNf dnJlZ3M7DQo+IMKgfTsNCj4gwqANCj4gwqAvKiBTZWUgYXJjaC9wb3dlcnBjL2luY2x1ZGUv YXNtL3NpZ2NvbnRleHQuaC7CoMKgKi8NCj4gQEAgLTQ2MDYsOSArNDYyMCwxMCBAQCBzdGF0 aWMgdm9pZCBzYXZlX3VzZXJfcmVncyhDUFVQUENTdGF0ZSAqZW52LA0KPiBzdHJ1Y3QgdGFy Z2V0X21jb250ZXh0ICpmcmFtZSkNCj4gwqANCj4gwqDCoMKgwqDCoC8qIFNhdmUgQWx0aXZl YyByZWdpc3RlcnMgaWYgbmVjZXNzYXJ5LsKgwqAqLw0KPiDCoMKgwqDCoMKgaWYgKGVudi0+ aW5zbnNfZmxhZ3MgJiBQUENfQUxUSVZFQykgew0KPiArwqDCoMKgwqDCoMKgwqDCoHVpbnQz Ml90ICp2cnNhdmU7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKGVudi0+YXZyKTsgaSsrKSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg cHBjX2F2cl90ICphdnIgPSAmZW52LT5hdnJbaV07DQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBwcGNfYXZyX3QgKnZyZWcgPSAmZnJhbWUtPm1jX3ZyZWdzLmFsdGl2ZWNbaV07DQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwcGNfYXZyX3QgKnZyZWcgPSAocHBjX2F2cl90 ICopJmZyYW1lLQ0KPiA+bWNfdnJlZ3MuYWx0aXZlY1tpXTsNCj4gwqANCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBfX3B1dF91c2VyKGF2ci0+dTY0WzBdLCAmdnJlZy0+dTY0WzBd KTsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBfX3B1dF91c2VyKGF2ci0+dTY0WzFd LCAmdnJlZy0+dTY0WzFdKTsNCj4gQEAgLTQ2MTYsOCArNDYzMSwxNCBAQCBzdGF0aWMgdm9p ZCBzYXZlX3VzZXJfcmVncyhDUFVQUENTdGF0ZSAqZW52LA0KPiBzdHJ1Y3QgdGFyZ2V0X21j b250ZXh0ICpmcmFtZSkNCj4gwqDCoMKgwqDCoMKgwqDCoMKgLyogU2V0IE1TUl9WUiBpbiB0 aGUgc2F2ZWQgTVNSIHZhbHVlIHRvIGluZGljYXRlIHRoYXQNCj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZnJhbWUtPm1jX3ZyZWdzIGNvbnRhaW5zIHZhbGlkIGRhdGEuwqDCoCovDQo+ IMKgwqDCoMKgwqDCoMKgwqDCoG1zciB8PSBNU1JfVlI7DQo+IC3CoMKgwqDCoMKgwqDCoMKg X19wdXRfdXNlcigodWludDMyX3QpZW52LT5zcHJbU1BSX1ZSU0FWRV0sDQo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZmcmFtZS0+bWNfdnJlZ3MuYWx0aXZl Y1szMl0udTMyWzNdKTsNCj4gKyNpZiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkNCj4gK8KgwqDC oMKgwqDCoMKgwqB2cnNhdmUgPSAodWludDMyX3QgKikmZnJhbWUtPm1jX3ZyZWdzLmFsdGl2 ZWNbMzNdOw0KPiArwqDCoMKgwqDCoMKgwqDCoC8qIDY0LWJpdCBuZWVkcyB0byBwdXQgYSBw b2ludGVyIHRvIHRoZSB2ZWN0b3JzIGluIHRoZSBmcmFtZQ0KPiAqLw0KPiArwqDCoMKgwqDC oMKgwqDCoF9fcHV0X3VzZXIoaDJnKGZyYW1lLT5tY192cmVncy5hbHRpdmVjKSwgJmZyYW1l LT52X3JlZ3MpOw0KPiArI2Vsc2UNCj4gK8KgwqDCoMKgwqDCoMKgwqB2cnNhdmUgPSAodWlu dDMyX3QgKikmZnJhbWUtPm1jX3ZyZWdzLmFsdGl2ZWNbMzJdOw0KPiArI2VuZGlmDQo+ICvC oMKgwqDCoMKgwqDCoMKgX19wdXRfdXNlcigodWludDMyX3QpZW52LT5zcHJbU1BSX1ZSU0FW RV0sIHZyc2F2ZSk7DQo+IMKgwqDCoMKgwqB9DQo+IMKgDQo+IMKgwqDCoMKgwqAvKiBTYXZl IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy7CoMKgKi8NCj4gQEAgLTQ2OTcsMTcgKzQ3MTgs MjIgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV91c2VyX3JlZ3MoQ1BVUFBDU3RhdGUNCj4gKmVu diwNCj4gwqANCj4gwqDCoMKgwqDCoC8qIFJlc3RvcmUgQWx0aXZlYyByZWdpc3RlcnMgaWYg bmVjZXNzYXJ5LsKgwqAqLw0KPiDCoMKgwqDCoMKgaWYgKGVudi0+aW5zbnNfZmxhZ3MgJiBQ UENfQUxUSVZFQykgew0KPiArwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90ICp2cnNhdmU7DQo+ IMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGVudi0+YXZy KTsgaSsrKSB7DQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHBjX2F2cl90ICphdnIg PSAmZW52LT5hdnJbaV07DQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwcGNfYXZyX3Qg KnZyZWcgPSAmZnJhbWUtPm1jX3ZyZWdzLmFsdGl2ZWNbaV07DQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBwcGNfYXZyX3QgKnZyZWcgPSAocHBjX2F2cl90ICopJmZyYW1lLQ0KPiA+ bWNfdnJlZ3MuYWx0aXZlY1tpXTsNCj4gwqANCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBfX2dldF91c2VyKGF2ci0+dTY0WzBdLCAmdnJlZy0+dTY0WzBdKTsNCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBfX2dldF91c2VyKGF2ci0+dTY0WzFdLCAmdnJlZy0+dTY0WzFd KTsNCj4gwqDCoMKgwqDCoMKgwqDCoMKgfQ0KPiDCoMKgwqDCoMKgwqDCoMKgwqAvKiBTZXQg TVNSX1ZFQyBpbiB0aGUgc2F2ZWQgTVNSIHZhbHVlIHRvIGluZGljYXRlIHRoYXQNCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZnJhbWUtPm1jX3ZyZWdzIGNvbnRhaW5zIHZhbGlkIGRh dGEuwqDCoCovDQo+IC3CoMKgwqDCoMKgwqDCoMKgX19nZXRfdXNlcihlbnYtPnNwcltTUFJf VlJTQVZFXSwNCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKHRh cmdldF91bG9uZyAqKSgmZnJhbWUtDQo+ID5tY192cmVncy5hbHRpdmVjWzMyXS51MzJbM10p KTsNCj4gKyNpZiBkZWZpbmVkKFRBUkdFVF9QUEM2NCkNCj4gK8KgwqDCoMKgwqDCoMKgwqB2 cnNhdmUgPSAodWludDMyX3QgKikmZnJhbWUtPm1jX3ZyZWdzLmFsdGl2ZWNbMzNdOw0KPiAr I2Vsc2UNCj4gK8KgwqDCoMKgwqDCoMKgwqB2cnNhdmUgPSAodWludDMyX3QgKikmZnJhbWUt Pm1jX3ZyZWdzLmFsdGl2ZWNbMzJdOw0KPiArI2VuZGlmDQo+ICvCoMKgwqDCoMKgwqDCoMKg X19nZXRfdXNlcihlbnYtPnNwcltTUFJfVlJTQVZFXSwgdnJzYXZlKTsNCj4gwqDCoMKgwqDC oH0NCj4gwqANCj4gwqDCoMKgwqDCoC8qIFJlc3RvcmUgZmxvYXRpbmcgcG9pbnQgcmVnaXN0 ZXJzLsKgwqAqLw0KPiBAQCAtNDczOCw2ICs0NzY0LDcgQEAgc3RhdGljIHZvaWQgcmVzdG9y ZV91c2VyX3JlZ3MoQ1BVUFBDU3RhdGUgKmVudiwNCj4gwqDCoMKgwqDCoH0NCj4gwqB9DQo+ IMKgDQo+ICsjaWYgIWRlZmluZWQoVEFSR0VUX1BQQzY0KQ0KPiDCoHN0YXRpYyB2b2lkIHNl dHVwX2ZyYW1lKGludCBzaWcsIHN0cnVjdCB0YXJnZXRfc2lnYWN0aW9uICprYSwNCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YXJnZXRf c2lnc2V0X3QgKnNldCwgQ1BVUFBDU3RhdGUgKmVudikNCj4gwqB7DQo+IEBAIC00NzQ1LDkg KzQ3NzIsNiBAQCBzdGF0aWMgdm9pZCBzZXR1cF9mcmFtZShpbnQgc2lnLCBzdHJ1Y3QNCj4g dGFyZ2V0X3NpZ2FjdGlvbiAqa2EsDQo+IMKgwqDCoMKgwqBzdHJ1Y3QgdGFyZ2V0X3NpZ2Nv bnRleHQgKnNjOw0KPiDCoMKgwqDCoMKgdGFyZ2V0X3Vsb25nIGZyYW1lX2FkZHIsIG5ld3Nw Ow0KPiDCoMKgwqDCoMKgaW50IGVyciA9IDA7DQo+IC0jaWYgZGVmaW5lZChUQVJHRVRfUFBD NjQpDQo+IC3CoMKgwqDCoHN0cnVjdCBpbWFnZV9pbmZvICppbWFnZSA9ICgoVGFza1N0YXRl ICopdGhyZWFkX2NwdS0+b3BhcXVlKS0NCj4gPmluZm87DQo+IC0jZW5kaWYNCj4gwqANCj4g wqDCoMKgwqDCoGZyYW1lX2FkZHIgPSBnZXRfc2lnZnJhbWUoa2EsIGVudiwgc2l6ZW9mKCpm cmFtZSkpOw0KPiDCoMKgwqDCoMKgdHJhY2VfdXNlcl9zZXR1cF9mcmFtZShlbnYsIGZyYW1l X2FkZHIpOw0KPiBAQCAtNDc1NywxMSArNDc4MSw3IEBAIHN0YXRpYyB2b2lkIHNldHVwX2Zy YW1lKGludCBzaWcsIHN0cnVjdA0KPiB0YXJnZXRfc2lnYWN0aW9uICprYSwNCj4gwqANCj4g wqDCoMKgwqDCoF9fcHV0X3VzZXIoa2EtPl9zYV9oYW5kbGVyLCAmc2MtPmhhbmRsZXIpOw0K PiDCoMKgwqDCoMKgX19wdXRfdXNlcihzZXQtPnNpZ1swXSwgJnNjLT5vbGRtYXNrKTsNCj4g LSNpZiBUQVJHRVRfQUJJX0JJVFMgPT0gNjQNCj4gLcKgwqDCoMKgX19wdXRfdXNlcihzZXQt PnNpZ1swXSA+PiAzMiwgJnNjLT5fdW51c2VkWzNdKTsNCj4gLSNlbHNlDQo+IMKgwqDCoMKg wqBfX3B1dF91c2VyKHNldC0+c2lnWzFdLCAmc2MtPl91bnVzZWRbM10pOw0KPiAtI2VuZGlm DQo+IMKgwqDCoMKgwqBfX3B1dF91c2VyKGgyZygmZnJhbWUtPm1jdHgpLCAmc2MtPnJlZ3Mp Ow0KPiDCoMKgwqDCoMKgX19wdXRfdXNlcihzaWcsICZzYy0+c2lnbmFsKTsNCj4gwqANCj4g QEAgLTQ3OTAsMjIgKzQ4MTAsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9mcmFtZShpbnQgc2ln LCBzdHJ1Y3QNCj4gdGFyZ2V0X3NpZ2FjdGlvbiAqa2EsDQo+IMKgwqDCoMKgwqBlbnYtPmdw clszXSA9IHNpZzsNCj4gwqDCoMKgwqDCoGVudi0+Z3ByWzRdID0gZnJhbWVfYWRkciArIG9m ZnNldG9mKHN0cnVjdCB0YXJnZXRfc2lnZnJhbWUsDQo+IHNjdHgpOw0KPiDCoA0KPiAtI2lm IGRlZmluZWQoVEFSR0VUX1BQQzY0KQ0KPiAtwqDCoMKgwqBpZiAoZ2V0X3BwYzY0X2FiaShp bWFnZSkgPCAyKSB7DQo+IC3CoMKgwqDCoMKgwqDCoMKgLyogRUxGdjEgUFBDNjQgZnVuY3Rp b24gcG9pbnRlcnMgYXJlIHBvaW50ZXJzIHRvIE9QRA0KPiBlbnRyaWVzLiAqLw0KPiAtwqDC oMKgwqDCoMKgwqDCoHN0cnVjdCB0YXJnZXRfZnVuY19wdHIgKmhhbmRsZXIgPQ0KPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgKHN0cnVjdCB0YXJnZXRfZnVuY19wdHIgKilnMmgoa2Et Pl9zYV9oYW5kbGVyKTsNCj4gLcKgwqDCoMKgwqDCoMKgwqBlbnYtPm5pcCA9IHRzd2FwbCho YW5kbGVyLT5lbnRyeSk7DQo+IC3CoMKgwqDCoMKgwqDCoMKgZW52LT5ncHJbMl0gPSB0c3dh cGwoaGFuZGxlci0+dG9jKTsNCj4gLcKgwqDCoMKgfSBlbHNlIHsNCj4gLcKgwqDCoMKgwqDC oMKgwqAvKiBFTEZ2MiBQUEM2NCBmdW5jdGlvbiBwb2ludGVycyBhcmUgZW50cnkgcG9pbnRz LCBidXQgUjEyDQo+IC3CoMKgwqDCoMKgwqDCoMKgwqAqIG11c3QgYWxzbyBiZSBzZXQgKi8N Cj4gLcKgwqDCoMKgwqDCoMKgwqBlbnYtPm5pcCA9IHRzd2FwbCgodGFyZ2V0X3Vsb25nKSBr YS0+X3NhX2hhbmRsZXIpOw0KPiAtwqDCoMKgwqDCoMKgwqDCoGVudi0+Z3ByWzEyXSA9IGVu di0+bmlwOw0KPiAtwqDCoMKgwqB9DQo+IC0jZWxzZQ0KPiDCoMKgwqDCoMKgZW52LT5uaXAg PSAodGFyZ2V0X3Vsb25nKSBrYS0+X3NhX2hhbmRsZXI7DQo+IC0jZW5kaWYNCj4gwqANCj4g wqDCoMKgwqDCoC8qIFNpZ25hbCBoYW5kbGVycyBhcmUgZW50ZXJlZCBpbiBiaWctZW5kaWFu IG1vZGUuwqDCoCovDQo+IMKgwqDCoMKgwqBlbnYtPm1zciAmPSB+KDF1bGwgPDwgTVNSX0xF KTsNCj4gQEAgLTQ4MTcsNiArNDgyMiw3IEBAIHNpZ3NlZ3Y6DQo+IMKgwqDCoMKgwqB1bmxv Y2tfdXNlcl9zdHJ1Y3QoZnJhbWUsIGZyYW1lX2FkZHIsIDEpOw0KPiDCoMKgwqDCoMKgZm9y Y2Vfc2lnKFRBUkdFVF9TSUdTRUdWKTsNCj4gwqB9DQo+ICsjZW5kaWYgLyogIWRlZmluZWQo VEFSR0VUX1BQQzY0KSAqLw0KPiDCoA0KPiDCoHN0YXRpYyB2b2lkIHNldHVwX3J0X2ZyYW1l KGludCBzaWcsIHN0cnVjdCB0YXJnZXRfc2lnYWN0aW9uICprYSwNCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YXJnZXRfc2ln aW5mb190ICppbmZvLA0KPiBAQCAtNDkxNCw2ICs0OTIwLDcgQEAgc2lnc2VndjoNCj4gwqAN Cj4gwqB9DQo+IMKgDQo+ICsjaWYgIWRlZmluZWQoVEFSR0VUX1BQQzY0KQ0KPiDCoGxvbmcg ZG9fc2lncmV0dXJuKENQVVBQQ1N0YXRlICplbnYpDQo+IMKgew0KPiDCoMKgwqDCoMKgc3Ry dWN0IHRhcmdldF9zaWdjb250ZXh0ICpzYyA9IE5VTEw7DQo+IEBAIC00OTUwLDYgKzQ5NTcs NyBAQCBzaWdzZWd2Og0KPiDCoMKgwqDCoMKgZm9yY2Vfc2lnKFRBUkdFVF9TSUdTRUdWKTsN Cj4gwqDCoMKgwqDCoHJldHVybiAwOw0KPiDCoH0NCj4gKyNlbmRpZiAvKiAhZGVmaW5lZChU QVJHRVRfUFBDNjQpICovDQo+IMKgDQo+IMKgLyogU2VlIGFyY2gvcG93ZXJwYy9rZXJuZWwv c2lnbmFsXzMyLmMuwqDCoCovDQo+IMKgc3RhdGljIGludCBkb19zZXRjb250ZXh0KHN0cnVj dCB0YXJnZXRfdWNvbnRleHQgKnVjcCwgQ1BVUFBDU3RhdGUNCj4gKmVudiwgaW50IHNpZykN Cj4gQEAgLTU4OTMsNyArNTkwMSw4IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9wZW5kaW5nX3Np Z25hbChDUFVBcmNoU3RhdGUNCj4gKmNwdV9lbnYsIGludCBzaWcsDQo+IMKgI2VuZGlmDQo+ IMKgwqDCoMKgwqDCoMKgwqDCoC8qIHByZXBhcmUgdGhlIHN0YWNrIGZyYW1lIG9mIHRoZSB2 aXJ0dWFsIENQVSAqLw0KPiDCoCNpZiBkZWZpbmVkKFRBUkdFVF9BQklfTUlQU04zMikgfHwg ZGVmaW5lZChUQVJHRVRfQUJJX01JUFNONjQpIFwNCj4gLcKgwqDCoMKgfHwgZGVmaW5lZChU QVJHRVRfT1BFTlJJU0MpIHx8IGRlZmluZWQoVEFSR0VUX1RJTEVHWCkNCj4gK8KgwqDCoMKg wqDCoMKgwqB8fCBkZWZpbmVkKFRBUkdFVF9PUEVOUklTQykgfHwgZGVmaW5lZChUQVJHRVRf VElMRUdYKSBcDQo+ICvCoMKgwqDCoMKgwqDCoMKgfHwgZGVmaW5lZChUQVJHRVRfUFBDNjQp DQo+IMKgwqDCoMKgwqDCoMKgwqDCoC8qIFRoZXNlIHRhcmdldHMgZG8gbm90IGhhdmUgdHJh ZGl0aW9uYWwgc2lnbmFscy7CoMKgKi8NCj4gwqDCoMKgwqDCoMKgwqDCoMKgc2V0dXBfcnRf ZnJhbWUoc2lnLCBzYSwgJmstPmluZm8sICZ0YXJnZXRfb2xkX3NldCwgY3B1X2Vudik7DQo+ IMKgI2Vsc2UNCg==