From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC PATCH 09/10] ARM: vGIC: introduce vgic_get/put_pending_irq Date: Thu, 4 May 2017 18:36:56 +0100 Message-ID: <0b17acaa-a58d-ccb7-b49d-8462258e8e66@arm.com> References: <20170504153123.1204-1-andre.przywara@arm.com> <20170504153123.1204-10-andre.przywara@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6KgX-0000dg-I0 for xen-devel@lists.xenproject.org; Thu, 04 May 2017 17:37:01 +0000 In-Reply-To: <20170504153123.1204-10-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Andre Przywara , Stefano Stabellini Cc: xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org SGkgQW5kcmUsCgpPbiAwNC8wNS8xNyAxNjozMSwgQW5kcmUgUHJ6eXdhcmEgd3JvdGU6Cj4gU28g ZmFyIHRoZXJlIGlzIGFsd2F5cyBhIHN0YXRpY2FsbHkgYWxsb2NhdGVkIHN0cnVjdCBwZW5kaW5n X2lycSBmb3IKPiBlYWNoIGludGVycnVwdCB0aGF0IHdlIGRlYWwgd2l0aC4KPiBUbyBwcmVwYXJl IGZvciBkeW5hbWljYWxseSBhbGxvY2F0ZWQgTFBJcywgaW50cm9kdWNlIGEgcHV0L2dldCB3cmFw cGVyCj4gdG8gZ2V0IGhvbGQgb2YgYSBwZW5kaW5nX2lycSBwb2ludGVyLgo+IFNvIGZhciBnZXQo KSBqdXN0IHJldHVybnMgdGhlIHNhbWUgcG9pbnRlciBhbmQgcHV0KCkgaXMgZW1wdHksIGJ1dCB0 aGlzCj4gY2hhbmdlIGFsbG93cyB0byBpbnRyb2R1Y2UgcmVmLWNvdW50aW5nIHZlcnkgZWFzaWx5 LCB0byBwcmV2ZW50Cj4gdXNlLWFmdGVyLWZyZWUgdXNhZ2Ugb2Ygc3RydWN0IHBlbmRpbmdfaXJx J3Mgb25jZSBMUElzIGdldCB1bm1hcHBlZCBmcm9tCj4gYSBkb21haW4uCj4gRm9yIGNvbnZlbmll bmNlIHJlYXNvbnMgd2UgaW50cm9kdWNlIGEgcHV0X3VubG9jaygpIHZlcnNpb24sIHdoaWNoIGFs c28KPiBkcm9wcyB0aGUgcGVuZGluZ19pcnEgbG9jayBiZWZvcmUgY2FsbGluZyB0aGUgYWN0dWFs IHB1dCgpIGZ1bmN0aW9uLgoKUGxlYXNlIGV4cGxhaW4gd2hlcmUgZ2V0L3B1dCBzaG91bGQgYmUg dXNlZCBpbiBib3RoIHRoZSBjb21taXQgbWVzc2FnZSAKYW5kIHRoZSBjb2RlLgoKPgo+IFNpZ25l ZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxhbmRyZS5wcnp5d2FyYUBhcm0uY29tPgo+IC0tLQo+ ICB4ZW4vYXJjaC9hcm0vZ2ljLmMgICAgICAgICAgfCAyNCArKysrKysrKysrKysrKystLS0tLS0K PiAgeGVuL2FyY2gvYXJtL3ZnaWMtdjIuYyAgICAgIHwgIDQgKystLQo+ICB4ZW4vYXJjaC9hcm0v dmdpYy12My5jICAgICAgfCAgNCArKy0tCj4gIHhlbi9hcmNoL2FybS92Z2ljLmMgICAgICAgICB8 IDUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICB4ZW4v aW5jbHVkZS9hc20tYXJtL2V2ZW50LmggfCAyMCArKysrKysrKysrKy0tLS0tLQo+ICB4ZW4vaW5j bHVkZS9hc20tYXJtL3ZnaWMuaCAgfCAgNyArKysrKy0KPiAgNiBmaWxlcyBjaGFuZ2VkLCA3NyBp bnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9h cm0vZ2ljLmMgYi94ZW4vYXJjaC9hcm0vZ2ljLmMKPiBpbmRleCA3MzdkYTZiLi43MTQ3YjZjIDEw MDY0NAo+IC0tLSBhL3hlbi9hcmNoL2FybS9naWMuYwo+ICsrKyBiL3hlbi9hcmNoL2FybS9naWMu Ywo+IEBAIC0xMzYsOSArMTM2LDcgQEAgdm9pZCBnaWNfcm91dGVfaXJxX3RvX3hlbihzdHJ1Y3Qg aXJxX2Rlc2MgKmRlc2MsIHVuc2lnbmVkIGludCBwcmlvcml0eSkKPiAgaW50IGdpY19yb3V0ZV9p cnFfdG9fZ3Vlc3Qoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHZpcnEsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcnFfZGVzYyAqZGVzYywgdW5zaWduZWQgaW50 IHByaW9yaXR5KQo+ICB7Cj4gLSAgICAvKiBVc2UgdmNwdTAgdG8gcmV0cmlldmUgdGhlIHBlbmRp bmdfaXJxIHN0cnVjdC4gR2l2ZW4gdGhhdCB3ZSBvbmx5Cj4gLSAgICAgKiByb3V0ZSBTUElzIHRv IGd1ZXN0cywgaXQgZG9lc24ndCBtYWtlIGFueSBkaWZmZXJlbmNlLiAqLwo+IC0gICAgc3RydWN0 IHBlbmRpbmdfaXJxICpwID0gaXJxX3RvX3BlbmRpbmcoZC0+dmNwdVswXSwgdmlycSk7Cj4gKyAg ICBzdHJ1Y3QgcGVuZGluZ19pcnEgKnAgPSB2Z2ljX2dldF9wZW5kaW5nX2lycShkLCBOVUxMLCB2 aXJxKTsKClRoaXMgdmdpY19nZXRfcGVuZGluZ19pcnEgd291bGQgYmVuZWZpdHMgb2YgYW4gZXhw bGFuYXRpb24gd2hlcmUgaXMgdGhlIAphc3NvY2lhdGVkIHB1dC4KCj4KPiAgICAgIEFTU0VSVChz cGluX2lzX2xvY2tlZCgmZGVzYy0+bG9jaykpOwo+ICAgICAgLyogQ2FsbGVyIGhhcyBhbHJlYWR5 IGNoZWNrZWQgdGhhdCB0aGUgSVJRIGlzIGFuIFNQSSAqLwo+IEBAIC0xNDgsNyArMTQ2LDEwIEBA IGludCBnaWNfcm91dGVfaXJxX3RvX2d1ZXN0KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGlu dCB2aXJxLAo+ICAgICAgaWYgKCBwLT5kZXNjIHx8Cj4gICAgICAgICAgIC8qIFRoZSBWSVJRIHNo b3VsZCBub3QgYmUgYWxyZWFkeSBlbmFibGVkIGJ5IHRoZSBndWVzdCAqLwo+ICAgICAgICAgICB0 ZXN0X2JpdChHSUNfSVJRX0dVRVNUX0VOQUJMRUQsICZwLT5zdGF0dXMpICkKPiArICAgIHsKPiAr ICAgICAgICB2Z2ljX3B1dF9wZW5kaW5nX2lycShkLCBwKTsKPiAgICAgICAgICByZXR1cm4gLUVC VVNZOwo+ICsgICAgfQo+Cj4gICAgICBkZXNjLT5oYW5kbGVyID0gZ2ljX2h3X29wcy0+Z2ljX2d1 ZXN0X2lycV90eXBlOwo+ICAgICAgc2V0X2JpdChfSVJRX0dVRVNULCAmZGVzYy0+c3RhdHVzKTsK PiBAQCAtMTU5LDYgKzE2MCw3IEBAIGludCBnaWNfcm91dGVfaXJxX3RvX2d1ZXN0KHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGludCB2aXJxLAo+Cj4gICAgICBwLT5kZXNjID0gZGVzYzsKPgo+ ICsgICAgdmdpY19wdXRfcGVuZGluZ19pcnEoZCwgcCk7CgpOZXdsaW5lLgoKPiAgICAgIHJldHVy biAwOwo+ICB9Cj4KPiBAQCAtMTY2LDcgKzE2OCw3IEBAIGludCBnaWNfcm91dGVfaXJxX3RvX2d1 ZXN0KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCB2aXJxLAo+ICBpbnQgZ2ljX3JlbW92 ZV9pcnFfZnJvbV9ndWVzdChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgdmlycSwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGlycV9kZXNjICpkZXNjKQo+ICB7 Cj4gLSAgICBzdHJ1Y3QgcGVuZGluZ19pcnEgKnAgPSBpcnFfdG9fcGVuZGluZyhkLT52Y3B1WzBd LCB2aXJxKTsKPiArICAgIHN0cnVjdCBwZW5kaW5nX2lycSAqcCA9IHZnaWNfZ2V0X3BlbmRpbmdf aXJxKGQsIE5VTEwsIHZpcnEpOwo+Cj4gICAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJmRlc2Mt PmxvY2spKTsKPiAgICAgIEFTU0VSVCh0ZXN0X2JpdChfSVJRX0dVRVNULCAmZGVzYy0+c3RhdHVz KSk7Cj4gQEAgLTE4OSw3ICsxOTEsMTAgQEAgaW50IGdpY19yZW1vdmVfaXJxX2Zyb21fZ3Vlc3Qo c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHZpcnEsCj4gICAgICAgICAgICovCj4gICAg ICAgICAgaWYgKCB0ZXN0X2JpdChfSVJRX0lOUFJPR1JFU1MsICZkZXNjLT5zdGF0dXMpIHx8Cj4g ICAgICAgICAgICAgICAhdGVzdF9iaXQoX0lSUV9ESVNBQkxFRCwgJmRlc2MtPnN0YXR1cykgKQo+ ICsgICAgICAgIHsKPiArICAgICAgICAgICAgdmdpY19wdXRfcGVuZGluZ19pcnEoZCwgcCk7Cj4g ICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7Cj4gKyAgICAgICAgfQo+ICAgICAgfQo+Cj4gICAg ICBjbGVhcl9iaXQoX0lSUV9HVUVTVCwgJmRlc2MtPnN0YXR1cyk7Cj4gQEAgLTE5Nyw2ICsyMDIs OCBAQCBpbnQgZ2ljX3JlbW92ZV9pcnFfZnJvbV9ndWVzdChzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBpbnQgdmlycSwKPgo+ICAgICAgcC0+ZGVzYyA9IE5VTEw7Cj4KPiArICAgIHZnaWNfcHV0 X3BlbmRpbmdfaXJxKGQsIHApOwo+ICsKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiBAQCAtMzgz LDEzICszOTAsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIGdpY19hZGRfdG9fbHJfcGVuZGluZyhz dHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHBlbmRpbmdfaXJxICpuKQo+Cj4gIHZvaWQgZ2ljX3JlbW92 ZV9mcm9tX3F1ZXVlcyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHZpcnR1YWxfaXJxKQo+ ICB7Cj4gLSAgICBzdHJ1Y3QgcGVuZGluZ19pcnEgKnAgPSBpcnFfdG9fcGVuZGluZyh2LCB2aXJ0 dWFsX2lycSk7Cj4gKyAgICBzdHJ1Y3QgcGVuZGluZ19pcnEgKnAgPSB2Z2ljX2dldF9wZW5kaW5n X2lycSh2LT5kb21haW4sIHYsIHZpcnR1YWxfaXJxKTsKPiAgICAgIHVuc2lnbmVkIGxvbmcgZmxh Z3M7Cj4KPiAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZ2LT5hcmNoLnZnaWMubG9jaywgZmxhZ3Mp Owo+ICAgICAgaWYgKCAhbGlzdF9lbXB0eSgmcC0+bHJfcXVldWUpICkKPiAgICAgICAgICBsaXN0 X2RlbF9pbml0KCZwLT5scl9xdWV1ZSk7Cj4gICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2 LT5hcmNoLnZnaWMubG9jaywgZmxhZ3MpOwo+ICsgICAgdmdpY19wdXRfcGVuZGluZ19pcnEodi0+ ZG9tYWluLCBwKTsKPiAgfQo+Cj4gIHZvaWQgZ2ljX3JhaXNlX2luZmxpZ2h0X2lycShzdHJ1Y3Qg dmNwdSAqdiwgc3RydWN0IHBlbmRpbmdfaXJxICpuKQo+IEBAIC00MDYsNiArNDE0LDcgQEAgdm9p ZCBnaWNfcmFpc2VfaW5mbGlnaHRfaXJxKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgcGVuZGluZ19p cnEgKm4pCj4gICAgICAgICAgZ2RwcmludGsoWEVOTE9HX0RFQlVHLCAidHJ5aW5nIHRvIGluamVj dCBpcnE9JXUgaW50byBkJWR2JWQsIHdoZW4gaXQgaXMgc3RpbGwgbHJfcGVuZGluZ1xuIiwKPiAg ICAgICAgICAgICAgICAgICBuLT5pcnEsIHYtPmRvbWFpbi0+ZG9tYWluX2lkLCB2LT52Y3B1X2lk KTsKPiAgI2VuZGlmCj4gKyAgICB2Z2ljX3B1dF9wZW5kaW5nX2lycSh2LT5kb21haW4sIG4pOwoK V2h5IHRoaXMgb25lPwoKPiAgfQo+Cj4gIHZvaWQgZ2ljX3JhaXNlX2d1ZXN0X2lycShzdHJ1Y3Qg dmNwdSAqdiwgc3RydWN0IHBlbmRpbmdfaXJxICpwKQo+IEBAIC00NDAsOCArNDQ5LDkgQEAgc3Rh dGljIHZvaWQgZ2ljX3VwZGF0ZV9vbmVfbHIoc3RydWN0IHZjcHUgKnYsIGludCBpKQo+Cj4gICAg ICBnaWNfaHdfb3BzLT5yZWFkX2xyKGksICZscl92YWwpOwo+ICAgICAgaXJxID0gbHJfdmFsLnZp cnE7Cj4gLSAgICBwID0gaXJxX3RvX3BlbmRpbmcodiwgaXJxKTsKPiArICAgIHAgPSB2Z2ljX2dl dF9wZW5kaW5nX2lycSh2LT5kb21haW4sIHYsIGlycSk7Cj4gICAgICBzcGluX2xvY2soJnAtPmxv Y2spOwoKSXQgc291bmRzIGxpa2UgdG8gbWUgdGhhdCB5b3Ugd2FudCB0byBpbnRyb2R1Y2UgYSAK dmdpY19nZXRfcGVuZGluZ19pcnFfbG9jayguLi4pLgoKPiArCgpTcHVyaW91cyBjaGFuZ2UuCgo+ ICAgICAgaWYgKCBscl92YWwuc3RhdGUgJiBHSUNIX0xSX0FDVElWRSApCj4gICAgICB7Cj4gICAg ICAgICAgc2V0X2JpdChHSUNfSVJRX0dVRVNUX0FDVElWRSwgJnAtPnN0YXR1cyk7Cj4gQEAgLTQ5 OSw3ICs1MDksNyBAQCBzdGF0aWMgdm9pZCBnaWNfdXBkYXRlX29uZV9scihzdHJ1Y3QgdmNwdSAq diwgaW50IGkpCj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICB9Cj4gICAgICB9Cj4gLSAgICBz cGluX3VubG9jaygmcC0+bG9jayk7Cj4gKyAgICB2Z2ljX3B1dF9wZW5kaW5nX2lycV91bmxvY2so di0+ZG9tYWluLCBwKTsKPiAgfQo+Cj4gIHZvaWQgZ2ljX2NsZWFyX2xycyhzdHJ1Y3QgdmNwdSAq dikKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3ZnaWMtdjIuYyBiL3hlbi9hcmNoL2FybS92 Z2ljLXYyLmMKPiBpbmRleCBiZjc1NWFlLi4zNmVkMDRmIDEwMDY0NAo+IC0tLSBhL3hlbi9hcmNo L2FybS92Z2ljLXYyLmMKPiArKysgYi94ZW4vYXJjaC9hcm0vdmdpYy12Mi5jCj4gQEAgLTc1LDEx ICs3NSwxMSBAQCBzdGF0aWMgdWludDMyX3QgdmdpY19mZXRjaF9pdGFyZ2V0c3Ioc3RydWN0IHZj cHUgKnYsIHVuc2lnbmVkIGludCBvZmZzZXQpCj4KPiAgICAgIGZvciAoIGkgPSAwOyBpIDwgTlJf VEFSR0VUU19QRVJfSVRBUkdFVFNSOyBpKyssIG9mZnNldCsrICkKPiAgICAgIHsKPiAtICAgICAg ICBzdHJ1Y3QgcGVuZGluZ19pcnEgKnAgPSBpcnFfdG9fcGVuZGluZyh2LCBvZmZzZXQpOwo+ICsg ICAgICAgIHN0cnVjdCBwZW5kaW5nX2lycSAqcCA9IHZnaWNfZ2V0X3BlbmRpbmdfaXJxKHYtPmRv bWFpbiwgdiwgb2Zmc2V0KTsKPgo+ICAgICAgICAgIHNwaW5fbG9jaygmcC0+bG9jayk7Cj4gICAg ICAgICAgcmVnIHw9ICgxIDw8IHAtPnZjcHVfaWQpIDw8IChpICogTlJfQklUU19QRVJfVEFSR0VU KTsKPiAtICAgICAgICBzcGluX3VubG9jaygmcC0+bG9jayk7Cj4gKyAgICAgICAgdmdpY19wdXRf cGVuZGluZ19pcnFfdW5sb2NrKHYtPmRvbWFpbiwgcCk7Cj4gICAgICB9Cj4KPiAgICAgIHJldHVy biByZWc7Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92Z2ljLXYzLmMgYi94ZW4vYXJjaC9h cm0vdmdpYy12My5jCj4gaW5kZXggMTVhNTEyYS4uZmZmNTE4ZSAxMDA2NDQKPiAtLS0gYS94ZW4v YXJjaC9hcm0vdmdpYy12My5jCj4gKysrIGIveGVuL2FyY2gvYXJtL3ZnaWMtdjMuYwo+IEBAIC0x MDUsMTAgKzEwNSwxMCBAQCBzdGF0aWMgdWludDY0X3QgdmdpY19mZXRjaF9pcm91dGVyKHN0cnVj dCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQo+ICAgICAgLyogVGhlcmUgaXMgZXhhY3Rs eSAxIHZJUlEgcGVyIElST1VURVIgKi8KPiAgICAgIG9mZnNldCAvPSBOUl9CWVRFU19QRVJfSVJP VVRFUjsKPgo+IC0gICAgcCA9IGlycV90b19wZW5kaW5nKHYsIG9mZnNldCk7Cj4gKyAgICBwID0g dmdpY19nZXRfcGVuZGluZ19pcnEodi0+ZG9tYWluLCB2LCBvZmZzZXQpOwo+ICAgICAgc3Bpbl9s b2NrKCZwLT5sb2NrKTsKPiAgICAgIGFmZiA9IHZjcHVpZF90b192YWZmaW5pdHkocC0+dmNwdV9p ZCk7Cj4gLSAgICBzcGluX3VubG9jaygmcC0+bG9jayk7Cj4gKyAgICB2Z2ljX3B1dF9wZW5kaW5n X2lycV91bmxvY2sodi0+ZG9tYWluLCBwKTsKPgo+ICAgICAgcmV0dXJuIGFmZjsKPiAgfQo+IGRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdmdpYy5jIGIveGVuL2FyY2gvYXJtL3ZnaWMuYwo+IGlu ZGV4IDUzMGFjNTUuLmM3ZDY0NWUgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3ZnaWMuYwo+ ICsrKyBiL3hlbi9hcmNoL2FybS92Z2ljLmMKPiBAQCAtMjQ1LDE3ICsyNDUsMTYgQEAgc3RhdGlj IHZvaWQgc2V0X2NvbmZpZyhzdHJ1Y3QgcGVuZGluZ19pcnEgKnAsIHVuc2lnbmVkIGludCBjb25m aWcpCj4gICAgICAgICAgc2V0X2JpdChHSUNfSVJRX0dVRVNUX0VER0UsICZwLT5zdGF0dXMpOwo+ ICB9Cj4KPiAtCgpUaGlzIG5ld2xpbmUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gaW50cm9kdWNlZCBh dCBmaXJzdCBoYW5kLgoKPiAgI2RlZmluZSBERUZJTkVfR0FUSEVSX0lSUV9JTkZPKG5hbWUsIGdl dF92YWwsIHNoaWZ0KSAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gIHVpbnQzMl90IGdhdGhl cl9pcnFfaW5mb18jI25hbWUoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBpcnEpICAgICAg ICAgICAgXAo+ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgIHVpbnQzMl90IHJldCA9IDAs IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Cj4gICAgICBmb3IgKCBpID0gMDsgaSA8ICgzMiAvIHNoaWZ0KTsgaSsrICkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAtICAg ICAgICBzdHJ1Y3QgcGVuZGluZ19pcnEgKnAgPSBpcnFfdG9fcGVuZGluZyh2LCBpcnEgKyBpKTsg ICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAgc3RydWN0IHBlbmRpbmdfaXJxICpwID0gdmdp Y19nZXRfcGVuZGluZ19pcnEodi0+ZG9tYWluLCB2LCBpcnEgKyBpKTsgXAo+ICAgICAgICAgIHNw aW5fbG9jaygmcC0+bG9jayk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKPiAgICAgICAgICByZXQgfD0gZ2V0X3ZhbChwKSA8PCAoc2hpZnQgKiBpKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgc3Bpbl91bmxv Y2soJnAtPmxvY2spOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAo+ICsgICAgICAgIHZnaWNfcHV0X3BlbmRpbmdfaXJxX3VubG9jayh2LT5kb21haW4sIHAp OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgIH0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4g ICAgICByZXR1cm4gcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAo+ICB9Cj4gQEAgLTI2NywxMCArMjY2LDEwIEBAIHZvaWQg c2NhdHRlcl9pcnFfaW5mb18jI25hbWUoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBpcnEs ICAgICAgICAgICAgICAgXAo+ICAgICAgdW5zaWduZWQgaW50IGk7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgICAgIGZvciAoIGkg PSAwOyBpIDwgKDMyIC8gc2hpZnQpOyBpKysgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCj4gICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IC0gICAgICAgIHN0cnVjdCBwZW5k aW5nX2lycSAqcCA9IGlycV90b19wZW5kaW5nKHYsIGlycSArIGkpOyAgICAgICAgICAgICAgICAg IFwKPiArICAgICAgICBzdHJ1Y3QgcGVuZGluZ19pcnEgKnAgPSB2Z2ljX2dldF9wZW5kaW5nX2ly cSh2LT5kb21haW4sIHYsIGlycSArIGkpOyBcCj4gICAgICAgICAgc3Bpbl9sb2NrKCZwLT5sb2Nr KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ICAg ICAgICAgIHNldF92YWwocCwgKHZhbHVlID4+IChzaGlmdCAqIGkpKSAmICgoMSA8PCBzaGlmdCkg LSAxKSk7ICAgICAgICAgICAgIFwKPiAtICAgICAgICBzcGluX3VubG9jaygmcC0+bG9jayk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gKyAgICAgICAg dmdpY19wdXRfcGVuZGluZ19pcnFfdW5sb2NrKHYtPmRvbWFpbiwgcCk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAo+ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAgfQo+Cj4gQEAgLTMzMiwx MyArMzMxLDEzIEBAIHZvaWQgYXJjaF9tb3ZlX2lycXMoc3RydWN0IHZjcHUgKnYpCj4KPiAgICAg IGZvciAoIGkgPSAzMjsgaSA8IHZnaWNfbnVtX2lycXMoZCk7IGkrKyApCj4gICAgICB7Cj4gLSAg ICAgICAgcCA9IGlycV90b19wZW5kaW5nKGQtPnZjcHVbMF0sIGkpOwo+ICsgICAgICAgIHAgPSB2 Z2ljX2dldF9wZW5kaW5nX2lycShkLCBOVUxMLCBpKTsKPiAgICAgICAgICBzcGluX2xvY2soJnAt PmxvY2spOwo+ICAgICAgICAgIHZfdGFyZ2V0ID0gdmdpY19nZXRfdGFyZ2V0X3ZjcHUoZCwgcCk7 Cj4KPiAgICAgICAgICBpZiAoIHZfdGFyZ2V0ID09IHYgJiYgIXRlc3RfYml0KEdJQ19JUlFfR1VF U1RfTUlHUkFUSU5HLCAmcC0+c3RhdHVzKSApCj4gICAgICAgICAgICAgIGlycV9zZXRfYWZmaW5p dHkocC0+ZGVzYywgY3B1X21hc2spOwo+IC0gICAgICAgIHNwaW5fdW5sb2NrKCZwLT5sb2NrKTsK PiArICAgICAgICB2Z2ljX3B1dF9wZW5kaW5nX2lycV91bmxvY2soZCwgcCk7Cj4gICAgICB9Cj4g IH0KPgo+IEBAIC0zNTEsNyArMzUwLDcgQEAgdm9pZCB2Z2ljX2Rpc2FibGVfaXJxcyhzdHJ1Y3Qg dmNwdSAqdiwgdW5zaWduZWQgaW50IGlycSwgdWludDMyX3QgcikKPiAgICAgIHN0cnVjdCB2Y3B1 ICp2X3RhcmdldDsKPgo+ICAgICAgd2hpbGUgKCAoaSA9IGZpbmRfbmV4dF9iaXQoJm1hc2ssIDMy LCBpKSkgPCAzMiApIHsKPiAtICAgICAgICBwID0gaXJxX3RvX3BlbmRpbmcodiwgaXJxICsgaSk7 Cj4gKyAgICAgICAgcCA9IHZnaWNfZ2V0X3BlbmRpbmdfaXJxKHYtPmRvbWFpbiwgdiwgaXJxICsg aSk7Cj4gICAgICAgICAgdl90YXJnZXQgPSB2Z2ljX2dldF90YXJnZXRfdmNwdSh2LT5kb21haW4s IHApOwo+ICAgICAgICAgIGNsZWFyX2JpdChHSUNfSVJRX0dVRVNUX0VOQUJMRUQsICZwLT5zdGF0 dXMpOwo+ICAgICAgICAgIGdpY19yZW1vdmVfZnJvbV9xdWV1ZXModl90YXJnZXQsIGlycSArIGkp Owo+IEBAIC0zNjEsNiArMzYwLDcgQEAgdm9pZCB2Z2ljX2Rpc2FibGVfaXJxcyhzdHJ1Y3QgdmNw dSAqdiwgdW5zaWduZWQgaW50IGlycSwgdWludDMyX3QgcikKPiAgICAgICAgICAgICAgcC0+ZGVz Yy0+aGFuZGxlci0+ZGlzYWJsZShwLT5kZXNjKTsKPiAgICAgICAgICAgICAgc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmcC0+ZGVzYy0+bG9jaywgZmxhZ3MpOwo+ICAgICAgICAgIH0KPiArICAgICAg ICB2Z2ljX3B1dF9wZW5kaW5nX2lycSh2LT5kb21haW4sIHApOwo+ICAgICAgICAgIGkrKzsKPiAg ICAgIH0KPiAgfQo+IEBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCB2Z2ljX2VuYWJsZV9pcnFzKHN0 cnVjdCB2Y3B1ICp2LCB1bnNpZ25lZCBpbnQgaXJxLCB1aW50MzJfdCByKQo+ICAgICAgc3RydWN0 IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKPgo+ICAgICAgd2hpbGUgKCAoaSA9IGZpbmRfbmV4dF9i aXQoJm1hc2ssIDMyLCBpKSkgPCAzMiApIHsKPiAtICAgICAgICBwID0gaXJxX3RvX3BlbmRpbmco diwgaXJxICsgaSk7Cj4gKyAgICAgICAgcCA9IHZnaWNfZ2V0X3BlbmRpbmdfaXJxKGQsIHYsIGly cSArIGkpOwo+ICAgICAgICAgIHZfdGFyZ2V0ID0gdmdpY19nZXRfdGFyZ2V0X3ZjcHUoZCwgcCk7 Cj4KPiAgICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmdl90YXJnZXQtPmFyY2gudmdpYy5sb2Nr LCBmbGFncyk7Cj4gQEAgLTQwNCw2ICs0MDQsNyBAQCB2b2lkIHZnaWNfZW5hYmxlX2lycXMoc3Ry dWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBpcnEsIHVpbnQzMl90IHIpCj4gICAgICAgICAgICAg IHAtPmRlc2MtPmhhbmRsZXItPmVuYWJsZShwLT5kZXNjKTsKPiAgICAgICAgICAgICAgc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmcC0+ZGVzYy0+bG9jaywgZmxhZ3MpOwo+ICAgICAgICAgIH0KPiAr ICAgICAgICB2Z2ljX3B1dF9wZW5kaW5nX2lycSh2LT5kb21haW4sIHApOwo+ICAgICAgICAgIGkr KzsKPiAgICAgIH0KPiAgfQo+IEBAIC00NjEsMjMgKzQ2MiwzOSBAQCBib29sIHZnaWNfdG9fc2dp KHN0cnVjdCB2Y3B1ICp2LCByZWdpc3Rlcl90IHNnaXIsIGVudW0gZ2ljX3NnaV9tb2RlIGlycW1v ZGUsCj4gICAgICByZXR1cm4gdHJ1ZTsKPiAgfQo+Cj4gLXN0cnVjdCBwZW5kaW5nX2lycSAqaXJx X3RvX3BlbmRpbmcoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCBpcnEpCj4gK3N0cnVjdCBw ZW5kaW5nX2lycSAqc3BpX3RvX3BlbmRpbmcoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50 IGlycSkKPiArewo+ICsgICAgQVNTRVJUKGlycSA+PSBOUl9MT0NBTF9JUlFTKTsKPiArCj4gKyAg ICByZXR1cm4gJmQtPmFyY2gudmdpYy5wZW5kaW5nX2lycXNbaXJxIC0gMzJdOwo+ICt9CgpUaGlz IHJlLW9yZGVyaW5nIHNob3VsZCBoYXZlIGJlZW4gbWFkZSBpbiBhIHNlcGFyYXRlIHBhdGNoLiBB bHNvIHRoZSAKY2hhbmdlIG9mIHRha2luZyBhIGRvbWFpbiB0b28uCgpCdXQgSSBkb24ndCB1bmRl cnN0YW5kIHdoeSB5b3Uga2VlcCBpdCBhcm91bmQuCgo+ICsKPiArc3RydWN0IHBlbmRpbmdfaXJx ICp2Z2ljX2dldF9wZW5kaW5nX2lycShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgdmNwdSAqdiwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg aXJxKQo+ICB7Cj4gICAgICBzdHJ1Y3QgcGVuZGluZ19pcnEgKm47Cj4gKwo+ICAgICAgLyogUGVu ZGluZyBpcnFzIGFsbG9jYXRpb24gc3RyYXRlZ3k6IHRoZSBmaXJzdCB2Z2ljLm5yX3NwaXMgaXJx cwo+ICAgICAgICogYXJlIHVzZWQgZm9yIFNQSXM7IHRoZSByZXN0cyBhcmUgdXNlZCBmb3IgcGVy IGNwdSBpcnFzICovCj4gICAgICBpZiAoIGlycSA8IDMyICkKPiArICAgIHsKPiArICAgICAgICBB U1NFUlQodik7Cj4gICAgICAgICAgbiA9ICZ2LT5hcmNoLnZnaWMucGVuZGluZ19pcnFzW2lycV07 Cj4gKyAgICB9Cj4gICAgICBlbHNlCj4gLSAgICAgICAgbiA9ICZ2LT5kb21haW4tPmFyY2gudmdp Yy5wZW5kaW5nX2lycXNbaXJxIC0gMzJdOwo+ICsgICAgICAgIG4gPSBzcGlfdG9fcGVuZGluZyhk LCBpcnEpOwo+ICsKClRoaXMgY2hhbmdlIGRvZXMgbm90IGJlbG9uZyB0byB0aGlzIHBhdGNoLgoK PiAgICAgIHJldHVybiBuOwo+ICB9Cj4KPiAtc3RydWN0IHBlbmRpbmdfaXJxICpzcGlfdG9fcGVu ZGluZyhzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaXJxKQo+ICt2b2lkIHZnaWNfcHV0 X3BlbmRpbmdfaXJxKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwZW5kaW5nX2lycSAqcCkKPiAg ewo+IC0gICAgQVNTRVJUKGlycSA+PSBOUl9MT0NBTF9JUlFTKTsKPiArfQo+Cj4gLSAgICByZXR1 cm4gJmQtPmFyY2gudmdpYy5wZW5kaW5nX2lycXNbaXJxIC0gMzJdOwo+ICt2b2lkIHZnaWNfcHV0 X3BlbmRpbmdfaXJxX3VubG9jayhzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgcGVuZGluZ19pcnEg KnApCj4gK3sKPiArICAgIHNwaW5fdW5sb2NrKCZwLT5sb2NrKTsKPiArICAgIHZnaWNfcHV0X3Bl bmRpbmdfaXJxKGQsIHApOwo+ICB9Cj4KPiAgdm9pZCB2Z2ljX2NsZWFyX3BlbmRpbmdfaXJxcyhz dHJ1Y3QgdmNwdSAqdikKPiBAQCAtNDk0LDcgKzUxMSw3IEBAIHZvaWQgdmdpY19jbGVhcl9wZW5k aW5nX2lycXMoc3RydWN0IHZjcHUgKnYpCj4KPiAgdm9pZCB2Z2ljX3ZjcHVfaW5qZWN0X2lycShz dHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHZpcnEpCj4gIHsKPiAtICAgIHN0cnVjdCBwZW5k aW5nX2lycSAqaXRlciwgKm4gPSBpcnFfdG9fcGVuZGluZyh2LCB2aXJxKTsKPiArICAgIHN0cnVj dCBwZW5kaW5nX2lycSAqaXRlciwgKm4gPSB2Z2ljX2dldF9wZW5kaW5nX2lycSh2LT5kb21haW4s IHYsIHZpcnEpOwo+ICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgICAgIGJvb2wgcnVubmlu ZzsKPgo+IEBAIC01MDQsNiArNTIxLDcgQEAgdm9pZCB2Z2ljX3ZjcHVfaW5qZWN0X2lycShzdHJ1 Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHZpcnEpCj4gICAgICBpZiAoIHRlc3RfYml0KF9WUEZf ZG93biwgJnYtPnBhdXNlX2ZsYWdzKSApCj4gICAgICB7Cj4gICAgICAgICAgc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmdi0+YXJjaC52Z2ljLmxvY2ssIGZsYWdzKTsKPiArICAgICAgICB2Z2ljX3B1 dF9wZW5kaW5nX2lycSh2LT5kb21haW4sIG4pOwo+ICAgICAgICAgIHJldHVybjsKPiAgICAgIH0K Pgo+IEBAIC01MzYsNiArNTU0LDcgQEAgdm9pZCB2Z2ljX3ZjcHVfaW5qZWN0X2lycShzdHJ1Y3Qg dmNwdSAqdiwgdW5zaWduZWQgaW50IHZpcnEpCj4gICAgICBzcGluX3VubG9jaygmbi0+bG9jayk7 Cj4KPiAgb3V0Ogo+ICsgICAgdmdpY19wdXRfcGVuZGluZ19pcnEodi0+ZG9tYWluLCBuKTsKPiAg ICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnYtPmFyY2gudmdpYy5sb2NrLCBmbGFncyk7Cj4g ICAgICAvKiB3ZSBoYXZlIGEgbmV3IGhpZ2hlciBwcmlvcml0eSBpcnEsIGluamVjdCBpdCBpbnRv IHRoZSBndWVzdCAqLwo+ICAgICAgcnVubmluZyA9IHYtPmlzX3J1bm5pbmc7Cj4gQEAgLTU1MCwx MiArNTY5LDEzIEBAIG91dDoKPiAgdm9pZCB2Z2ljX3ZjcHVfaW5qZWN0X3NwaShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBpbnQgdmlycSkKPiAgewo+ICAgICAgc3RydWN0IHZjcHUgKnY7Cj4g LSAgICBzdHJ1Y3QgcGVuZGluZ19pcnEgKnAgPSBpcnFfdG9fcGVuZGluZyhkLT52Y3B1WzBdLCB2 aXJxKTsKPiArICAgIHN0cnVjdCBwZW5kaW5nX2lycSAqcCA9IHZnaWNfZ2V0X3BlbmRpbmdfaXJx KGQsIE5VTEwsIHZpcnEpOwo+Cj4gICAgICAvKiB0aGUgSVJRIG5lZWRzIHRvIGJlIGFuIFNQSSAq Lwo+ICAgICAgQVNTRVJUKHZpcnEgPj0gMzIgJiYgdmlycSA8PSB2Z2ljX251bV9pcnFzKGQpKTsK Pgo+ICAgICAgdiA9IHZnaWNfZ2V0X3RhcmdldF92Y3B1KGQsIHApOwo+ICsgICAgdmdpY19wdXRf cGVuZGluZ19pcnEoZCwgcCk7Cj4gICAgICB2Z2ljX3ZjcHVfaW5qZWN0X2lycSh2LCB2aXJxKTsK PiAgfQo+Cj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZXZlbnQuaCBiL3hlbi9p bmNsdWRlL2FzbS1hcm0vZXZlbnQuaAo+IGluZGV4IDUzMzBkZmUuLmRmNjcyZTIgMTAwNjQ0Cj4g LS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9ldmVudC5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNt LWFybS9ldmVudC5oCj4gQEAgLTE2LDggKzE2LDcgQEAgc3RhdGljIGlubGluZSBpbnQgdmNwdV9l dmVudF9kZWxpdmVyeV9pc19lbmFibGVkKHN0cnVjdCB2Y3B1ICp2KQo+Cj4gIHN0YXRpYyBpbmxp bmUgaW50IGxvY2FsX2V2ZW50c19uZWVkX2RlbGl2ZXJ5X25vbWFzayh2b2lkKQo+ICB7Cj4gLSAg ICBzdHJ1Y3QgcGVuZGluZ19pcnEgKnAgPSBpcnFfdG9fcGVuZGluZyhjdXJyZW50LAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC0+ZG9tYWluLT5h cmNoLmV2dGNobl9pcnEpOwoKTGltaXRpbmcgdGhlIHNjb3BlIG9mIHBlbmRpbmdfaXJxIHNob3Vs ZCBiZSBhIHNlcGFyYXRlIHBhdGNoLgoKPiArICAgIGludCByZXQgPSAwOwo+Cj4gICAgICAvKiBY WFg6IGlmIHRoZSBmaXJzdCBpbnRlcnJ1cHQgaGFzIGFscmVhZHkgYmVlbiBkZWxpdmVyZWQsIHdl IHNob3VsZAo+ICAgICAgICogY2hlY2sgd2hldGhlciBhbnkgb3RoZXIgaW50ZXJydXB0cyB3aXRo IHByaW9yaXR5IGhpZ2hlciB0aGFuIHRoZQo+IEBAIC0yOCwxMSArMjcsMjAgQEAgc3RhdGljIGlu bGluZSBpbnQgbG9jYWxfZXZlbnRzX25lZWRfZGVsaXZlcnlfbm9tYXNrKHZvaWQpCj4gICAgICAg KiBjYXNlLgo+ICAgICAgICovCj4gICAgICBpZiAoIGdpY19ldmVudHNfbmVlZF9kZWxpdmVyeSgp ICkKPiAtICAgICAgICByZXR1cm4gMTsKPiArICAgIHsKPiArICAgICAgICByZXQgPSAxOwo+ICsg ICAgfQo+ICsgICAgZWxzZQo+ICsgICAgewo+ICsgICAgICAgIHN0cnVjdCBwZW5kaW5nX2lycSAq cDsKPgo+IC0gICAgaWYgKCB2Y3B1X2luZm8oY3VycmVudCwgZXZ0Y2huX3VwY2FsbF9wZW5kaW5n KSAmJgo+IC0gICAgICAgIGxpc3RfZW1wdHkoJnAtPmluZmxpZ2h0KSApCj4gLSAgICAgICAgcmV0 dXJuIDE7Cj4gKyAgICAgICAgcCA9IHZnaWNfZ2V0X3BlbmRpbmdfaXJxKGN1cnJlbnQtPmRvbWFp biwgY3VycmVudCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC0+ ZG9tYWluLT5hcmNoLmV2dGNobl9pcnEpOwo+ICsgICAgICAgIGlmICggdmNwdV9pbmZvKGN1cnJl bnQsIGV2dGNobl91cGNhbGxfcGVuZGluZykgJiYKPiArICAgICAgICAgICAgbGlzdF9lbXB0eSgm cC0+aW5mbGlnaHQpICkKPiArICAgICAgICAgICAgcmV0ID0gMTsKPiArICAgICAgICB2Z2ljX3B1 dF9wZW5kaW5nX2lycShjdXJyZW50LT5kb21haW4sIHApOwoKTG9va2luZyBhdCB0aGlzIGNvZGUs IEkgdGhpbmsgdGhlcmUgYXJlIGEgcmFjZSBjb25kaXRpb24uIEJlY2F1c2UgCm5vdGhpbmcgcHJv dGVjdCBsaXN0X2VtcHR5KCZwLT5pbmZsaWdodCkgKHRoaXMgY291bGQgYmUgbW9kaWZpZWQgYnkg CmFub3RoZXIgcGh5c2ljYWwgdkNQVSBhdCB0aGUgc2FtZSB0aW1lKS4KCkFsdGhvdWdoLCBJIGRv bid0IGtub3cgaWYgdGhpcyBpcyByZWFsbHkgYW4gaXNzdWUuIFN0ZWZhbm8gZG8geW91IGhhdmUg CmFuIG9waW5pb24/Cgo+ICsgICAgfQo+Cj4gICAgICByZXR1cm4gMDsKPiAgfQo+IGRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL3ZnaWMuaCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdmdp Yy5oCj4gaW5kZXggMTg2ZTZkZi4uMzZlNGRlMiAxMDA2NDQKPiAtLS0gYS94ZW4vaW5jbHVkZS9h c20tYXJtL3ZnaWMuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdmdpYy5oCj4gQEAgLTI5 OSw3ICsyOTksMTIgQEAgZXh0ZXJuIHN0cnVjdCB2Y3B1ICp2Z2ljX2dldF90YXJnZXRfdmNwdShz dHJ1Y3QgZG9tYWluICpkLAo+ICBleHRlcm4gdm9pZCB2Z2ljX3ZjcHVfaW5qZWN0X2lycShzdHJ1 Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IHZpcnEpOwo+ICBleHRlcm4gdm9pZCB2Z2ljX3ZjcHVf aW5qZWN0X3NwaShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgdmlycSk7Cj4gIGV4dGVy biB2b2lkIHZnaWNfY2xlYXJfcGVuZGluZ19pcnFzKHN0cnVjdCB2Y3B1ICp2KTsKPiAtZXh0ZXJu IHN0cnVjdCBwZW5kaW5nX2lycSAqaXJxX3RvX3BlbmRpbmcoc3RydWN0IHZjcHUgKnYsIHVuc2ln bmVkIGludCBpcnEpOwo+ICtleHRlcm4gc3RydWN0IHBlbmRpbmdfaXJxICp2Z2ljX2dldF9wZW5k aW5nX2lycShzdHJ1Y3QgZG9tYWluICpkLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmNwdSAqdiwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGlycSk7Cj4gK2V4dGVy biB2b2lkIHZnaWNfcHV0X3BlbmRpbmdfaXJxKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwZW5k aW5nX2lycSAqcCk7Cj4gK2V4dGVybiB2b2lkIHZnaWNfcHV0X3BlbmRpbmdfaXJxX3VubG9jayhz dHJ1Y3QgZG9tYWluICpkLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHBlbmRpbmdfaXJxICpwKTsKPiAgZXh0ZXJuIHN0cnVjdCBwZW5kaW5nX2lycSAq c3BpX3RvX3BlbmRpbmcoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlycSk7Cj4gIGV4 dGVybiBzdHJ1Y3QgdmdpY19pcnFfcmFuayAqdmdpY19yYW5rX29mZnNldChzdHJ1Y3QgdmNwdSAq diwgaW50IGIsIGludCBuLCBpbnQgcyk7Cj4gIGV4dGVybiBzdHJ1Y3QgdmdpY19pcnFfcmFuayAq dmdpY19yYW5rX2lycShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IGlycSk7Cj4KCkNoZWVy cywKCi0tIApKdWxpZW4gR3JhbGwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5v cmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=