From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 01/16] drm/dp_mst: Rename drm_dp_mst_get_validated_(port|mstb)_ref and friends Date: Thu, 20 Dec 2018 10:09:46 +0100 Message-ID: <20181220090946.GG21184@phenom.ffwll.local> References: <20181220001959.12486-1-lyude@redhat.com> <20181220001959.12486-2-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181220001959.12486-2-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Lyude Paul Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Jerry Zuo , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Vetter , David Airlie , Harry Wentland , Juston Li List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBEZWMgMTksIDIwMTggYXQgMDc6MTk6NDVQTSAtMDUwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBzL2RybV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRfcmVmL2RybV9kcF9tc3RfdG9wb2xvZ3lf Z2V0X3BvcnRfdmFsaWRhdGVkLwo+IHMvZHJtX2RwX3B1dF9wb3J0L2RybV9kcF9tc3RfdG9wb2xv Z3lfcHV0X3BvcnQvCj4gcy9kcm1fZHBfZ2V0X3ZhbGlkYXRlZF9tc3RiX3JlZi9kcm1fZHBfbXN0 X3RvcG9sb2d5X2dldF9tc3RiX3ZhbGlkYXRlZC8KPiBzL2RybV9kcF9wdXRfbXN0X2JyYW5jaF9k ZXZpY2UvZHJtX2RwX21zdF90b3BvbG9neV9wdXRfbXN0Yi8KPiAKPiBUaGlzIGlzIGEgbXVjaCBt b3JlIGNvbnNpc3RlbnQgbmFtaW5nIHNjaGVtZSwgYW5kIHdpbGwgbWFrZSBldmVuIG1vcmUKPiBz ZW5zZSBvbmNlIHdlIHJlZGVzaWduIGhvdyB0aGUgY3VycmVudCByZWZjb3VudGluZyBzY2hlbWUg aGVyZSB3b3Jrcy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBMeXVkZSBQYXVsIDxseXVkZUByZWRoYXQu Y29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4gQ2M6IERhdmlkIEFp cmxpZSA8YWlybGllZEByZWRoYXQuY29tPgo+IENjOiBKZXJyeSBadW8gPEplcnJ5Llp1b0BhbWQu Y29tPgo+IENjOiBIYXJyeSBXZW50bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNvbT4KPiBDYzog SnVzdG9uIExpIDxqdXN0b24ubGlAaW50ZWwuY29tPgoKUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0 ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJt X2RwX21zdF90b3BvbG9neS5jIHwgMTE0ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCj4gIDEg ZmlsZSBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKPiAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKPiBpbmRleCAyYWIxNmM5ZTYyNDMuLjZmOWIy MTEwNjlhNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9n eS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwo+IEBAIC00 Niw3ICs0Niw3IEBAIHN0YXRpYyBib29sIGR1bXBfZHBfcGF5bG9hZF90YWJsZShzdHJ1Y3QgZHJt X2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKPiAgCQkJCSAgY2hhciAqYnVmKTsKPiAgc3RhdGlj IGludCB0ZXN0X2NhbGNfcGJuX21vZGUodm9pZCk7Cj4gIAo+IC1zdGF0aWMgdm9pZCBkcm1fZHBf cHV0X3BvcnQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCk7Cj4gK3N0YXRpYyB2b2lkIGRy bV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCk7 Cj4gIAo+ICBzdGF0aWMgaW50IGRybV9kcF9kcGNkX3dyaXRlX3BheWxvYWQoc3RydWN0IGRybV9k cF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCj4gIAkJCQkgICAgIGludCBpZCwKPiBAQCAtODg4LDcg Kzg4OCw3IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X21zdF9icmFuY2hfZGV2aWNlKHN0 cnVjdCBrcmVmICprcmVmKQo+ICAJICovCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9y dCwgdG1wLCAmbXN0Yi0+cG9ydHMsIG5leHQpIHsKPiAgCQlsaXN0X2RlbCgmcG9ydC0+bmV4dCk7 Cj4gLQkJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOwo+ICsJCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0 X3BvcnQocG9ydCk7Cj4gIAl9Cj4gIAo+ICAJLyogZHJvcCBhbnkgdHggc2xvdHMgbXNnICovCj4g QEAgLTkxMSw3ICs5MTEsNyBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfZGVzdHJveV9tc3RfYnJhbmNo X2RldmljZShzdHJ1Y3Qga3JlZiAqa3JlZikKPiAgCWtyZWZfcHV0KGtyZWYsIGRybV9kcF9mcmVl X21zdF9icmFuY2hfZGV2aWNlKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgZHJtX2RwX3B1dF9t c3RfYnJhbmNoX2RldmljZShzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIpCj4gK3N0YXRp YyB2b2lkIGRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X21zdGIoc3RydWN0IGRybV9kcF9tc3RfYnJh bmNoICptc3RiKQo+ICB7Cj4gIAlrcmVmX3B1dCgmbXN0Yi0+a3JlZiwgZHJtX2RwX2Rlc3Ryb3lf bXN0X2JyYW5jaF9kZXZpY2UpOwo+ICB9Cj4gQEAgLTkzMCw3ICs5MzAsNyBAQCBzdGF0aWMgdm9p ZCBkcm1fZHBfcG9ydF90ZWFyZG93bl9wZHQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwg aW50IG9sZF9wZHQpCj4gIAljYXNlIERQX1BFRVJfREVWSUNFX01TVF9CUkFOQ0hJTkc6Cj4gIAkJ bXN0YiA9IHBvcnQtPm1zdGI7Cj4gIAkJcG9ydC0+bXN0YiA9IE5VTEw7Cj4gLQkJZHJtX2RwX3B1 dF9tc3RfYnJhbmNoX2RldmljZShtc3RiKTsKPiArCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9t c3RiKG1zdGIpOwo+ICAJCWJyZWFrOwo+ICAJfQo+ICB9Cj4gQEAgLTk3MCwxMiArOTcwLDE0IEBA IHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X3BvcnQoc3RydWN0IGtyZWYgKmtyZWYpCj4gIAlr ZnJlZShwb3J0KTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgZHJtX2RwX3B1dF9wb3J0KHN0cnVj dCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCj4gK3N0YXRpYyB2b2lkIGRybV9kcF9tc3RfdG9wb2xv Z3lfcHV0X3BvcnQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkKPiAgewo+ICAJa3JlZl9w dXQoJnBvcnQtPmtyZWYsIGRybV9kcF9kZXN0cm95X3BvcnQpOwo+ICB9Cj4gIAo+IC1zdGF0aWMg c3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICpkcm1fZHBfbXN0X2dldF92YWxpZGF0ZWRfbXN0Yl9y ZWZfbG9ja2VkKHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0Yiwgc3RydWN0IGRybV9kcF9t c3RfYnJhbmNoICp0b19maW5kKQo+ICtzdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICoK PiArZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0Yl92YWxpZGF0ZWRfbG9ja2VkKHN0cnVjdCBk cm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKPiArCQkJCQkgICAgICBzdHJ1Y3QgZHJtX2RwX21zdF9i cmFuY2ggKnRvX2ZpbmQpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7Cj4g IAlzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKnJtc3RiOwo+IEBAIC05ODUsNyArOTg3LDggQEAg c3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqZHJtX2RwX21zdF9nZXRfdmFsaWRhdGVk X21zdGJfcmVmX2xvY2tlZChzdHJ1Y3QKPiAgCX0KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkocG9y dCwgJm1zdGItPnBvcnRzLCBuZXh0KSB7Cj4gIAkJaWYgKHBvcnQtPm1zdGIpIHsKPiAtCQkJcm1z dGIgPSBkcm1fZHBfbXN0X2dldF92YWxpZGF0ZWRfbXN0Yl9yZWZfbG9ja2VkKHBvcnQtPm1zdGIs IHRvX2ZpbmQpOwo+ICsJCQlybXN0YiA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21zdGJfdmFs aWRhdGVkX2xvY2tlZCgKPiArCQkJICAgIHBvcnQtPm1zdGIsIHRvX2ZpbmQpOwo+ICAJCQlpZiAo cm1zdGIpCj4gIAkJCQlyZXR1cm4gcm1zdGI7Cj4gIAkJfQo+IEBAIC05OTMsMTIgKzk5NiwxNSBA QCBzdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICpkcm1fZHBfbXN0X2dldF92YWxpZGF0 ZWRfbXN0Yl9yZWZfbG9ja2VkKHN0cnVjdAo+ICAJcmV0dXJuIE5VTEw7Cj4gIH0KPiAgCj4gLXN0 YXRpYyBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKmRybV9kcF9nZXRfdmFsaWRhdGVkX21zdGJf cmVmKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLCBzdHJ1Y3QgZHJtX2RwX21z dF9icmFuY2ggKm1zdGIpCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKgo+ICtk cm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiX3ZhbGlkYXRlZChzdHJ1Y3QgZHJtX2RwX21zdF90 b3BvbG9neV9tZ3IgKm1nciwKPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gg Km1zdGIpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqcm1zdGIgPSBOVUxMOwo+ ICAJbXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsKPiAgCWlmIChtZ3ItPm1zdF9wcmltYXJ5KQo+IC0J CXJtc3RiID0gZHJtX2RwX21zdF9nZXRfdmFsaWRhdGVkX21zdGJfcmVmX2xvY2tlZChtZ3ItPm1z dF9wcmltYXJ5LCBtc3RiKTsKPiArCQlybXN0YiA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21z dGJfdmFsaWRhdGVkX2xvY2tlZCgKPiArCQkgICAgbWdyLT5tc3RfcHJpbWFyeSwgbXN0Yik7Cj4g IAltdXRleF91bmxvY2soJm1nci0+bG9jayk7Cj4gIAlyZXR1cm4gcm1zdGI7Cj4gIH0KPiBAQCAt MTAyMSw3ICsxMDI3LDkgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKmRybV9kcF9t c3RfZ2V0X3BvcnRfcmVmX2xvY2tlZChzdHJ1Y3QgZHJtX2RwX21zdF8KPiAgCXJldHVybiBOVUxM Owo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqZHJtX2RwX2dldF92 YWxpZGF0ZWRfcG9ydF9yZWYoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsIHN0 cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2RwX21zdF9w b3J0ICoKPiArZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92YWxpZGF0ZWQoc3RydWN0IGRy bV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCj4gKwkJCQkgICAgICAgc3RydWN0IGRybV9kcF9t c3RfcG9ydCAqcG9ydCkKPiAgewo+ICAJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcnBvcnQgPSBO VUxMOwo+ICAJbXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsKPiBAQCAtMTIxMCw3ICsxMjE4LDcgQEAg c3RhdGljIHZvaWQgZHJtX2RwX2FkZF9wb3J0KHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0 YiwKPiAgCQkJbGlzdF9kZWwoJnBvcnQtPm5leHQpOwo+ICAJCQltdXRleF91bmxvY2soJm1zdGIt Pm1nci0+bG9jayk7Cj4gIAkJCS8qIGRyb3AgcG9ydCBsaXN0IHJlZmVyZW5jZSAqLwo+IC0JCQlk cm1fZHBfcHV0X3BvcnQocG9ydCk7Cj4gKwkJCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQo cG9ydCk7Cj4gIAkJCWdvdG8gb3V0Owo+ICAJCX0KPiAgCQlpZiAoKHBvcnQtPnBkdCA9PSBEUF9Q RUVSX0RFVklDRV9EUF9MRUdBQ1lfQ09OViB8fAo+IEBAIC0xMjI0LDcgKzEyMzIsNyBAQCBzdGF0 aWMgdm9pZCBkcm1fZHBfYWRkX3BvcnQoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLAo+ ICAKPiAgb3V0Ogo+ICAJLyogcHV0IHJlZmVyZW5jZSB0byB0aGlzIHBvcnQgKi8KPiAtCWRybV9k cF9wdXRfcG9ydChwb3J0KTsKPiArCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7 Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGRybV9kcF91cGRhdGVfcG9ydChzdHJ1Y3QgZHJtX2Rw X21zdF9icmFuY2ggKm1zdGIsCj4gQEAgLTEyNTksNyArMTI2Nyw3IEBAIHN0YXRpYyB2b2lkIGRy bV9kcF91cGRhdGVfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIsCj4gIAkJCWRv d29yayA9IHRydWU7Cj4gIAl9Cj4gIAo+IC0JZHJtX2RwX3B1dF9wb3J0KHBvcnQpOwo+ICsJZHJt X2RwX21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0KTsKPiAgCWlmIChkb3dvcmspCj4gIAkJcXVl dWVfd29yayhzeXN0ZW1fbG9uZ193cSwgJm1zdGItPm1nci0+d29yayk7Cj4gIAo+IEBAIC0xMzYy LDEwICsxMzcwLDExIEBAIHN0YXRpYyB2b2lkIGRybV9kcF9jaGVja19hbmRfc2VuZF9saW5rX2Fk ZHJlc3Moc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptCj4gIAkJCWRybV9kcF9zZW5k X2VudW1fcGF0aF9yZXNvdXJjZXMobWdyLCBtc3RiLCBwb3J0KTsKPiAgCj4gIAkJaWYgKHBvcnQt Pm1zdGIpIHsKPiAtCQkJbXN0Yl9jaGlsZCA9IGRybV9kcF9nZXRfdmFsaWRhdGVkX21zdGJfcmVm KG1nciwgcG9ydC0+bXN0Yik7Cj4gKwkJCW1zdGJfY2hpbGQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5 X2dldF9tc3RiX3ZhbGlkYXRlZCgKPiArCQkJICAgIG1nciwgcG9ydC0+bXN0Yik7Cj4gIAkJCWlm IChtc3RiX2NoaWxkKSB7Cj4gIAkJCQlkcm1fZHBfY2hlY2tfYW5kX3NlbmRfbGlua19hZGRyZXNz KG1nciwgbXN0Yl9jaGlsZCk7Cj4gLQkJCQlkcm1fZHBfcHV0X21zdF9icmFuY2hfZGV2aWNlKG1z dGJfY2hpbGQpOwo+ICsJCQkJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfbXN0Yihtc3RiX2NoaWxk KTsKPiAgCQkJfQo+ICAJCX0KPiAgCX0KPiBAQCAtMTM4NCw3ICsxMzkzLDcgQEAgc3RhdGljIHZv aWQgZHJtX2RwX21zdF9saW5rX3Byb2JlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ ICAJbXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwo+ICAJaWYgKG1zdGIpIHsKPiAgCQlkcm1fZHBf Y2hlY2tfYW5kX3NlbmRfbGlua19hZGRyZXNzKG1nciwgbXN0Yik7Cj4gLQkJZHJtX2RwX3B1dF9t c3RfYnJhbmNoX2RldmljZShtc3RiKTsKPiArCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9tc3Ri KG1zdGIpOwo+ICAJfQo+ICB9Cj4gIAo+IEBAIC0xNzI2LDE3ICsxNzM1LDE3IEBAIHN0YXRpYyBp bnQgZHJtX2RwX3BheWxvYWRfc2VuZF9tc2coc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdy ICptZ3IsCj4gIAl1OCBzaW5rc1tEUk1fRFBfTUFYX1NEUF9TVFJFQU1TXTsKPiAgCWludCBpOwo+ ICAKPiAtCXBvcnQgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9wb3J0X3JlZihtZ3IsIHBvcnQpOwo+ ICsJcG9ydCA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnRfdmFsaWRhdGVkKG1nciwgcG9y dCk7Cj4gIAlpZiAoIXBvcnQpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJcG9ydF9udW0g PSBwb3J0LT5wb3J0X251bTsKPiAtCW1zdGIgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9tc3RiX3Jl ZihtZ3IsIHBvcnQtPnBhcmVudCk7Cj4gKwltc3RiID0gZHJtX2RwX21zdF90b3BvbG9neV9nZXRf bXN0Yl92YWxpZGF0ZWQobWdyLCBwb3J0LT5wYXJlbnQpOwo+ICAJaWYgKCFtc3RiKSB7Cj4gIAkJ bXN0YiA9IGRybV9kcF9nZXRfbGFzdF9jb25uZWN0ZWRfcG9ydF9hbmRfbXN0YihtZ3IsIHBvcnQt PnBhcmVudCwgJnBvcnRfbnVtKTsKPiAgCj4gIAkJaWYgKCFtc3RiKSB7Cj4gLQkJCWRybV9kcF9w dXRfcG9ydChwb3J0KTsKPiArCQkJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0KTsK PiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJfQo+ICAJfQo+IEBAIC0xNzY2LDggKzE3NzUsOCBA QCBzdGF0aWMgaW50IGRybV9kcF9wYXlsb2FkX3NlbmRfbXNnKHN0cnVjdCBkcm1fZHBfbXN0X3Rv cG9sb2d5X21nciAqbWdyLAo+ICAJfQo+ICAJa2ZyZWUodHhtc2cpOwo+ICBmYWlsX3B1dDoKPiAt CWRybV9kcF9wdXRfbXN0X2JyYW5jaF9kZXZpY2UobXN0Yik7Cj4gLQlkcm1fZHBfcHV0X3BvcnQo cG9ydCk7Cj4gKwlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9tc3RiKG1zdGIpOwo+ICsJZHJtX2Rw X21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0KTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4g QEAgLTE3NzcsMTMgKzE3ODYsMTMgQEAgaW50IGRybV9kcF9zZW5kX3Bvd2VyX3VwZG93bl9waHko c3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCj4gIAlzdHJ1Y3QgZHJtX2RwX3Np ZGViYW5kX21zZ190eCAqdHhtc2c7Cj4gIAlpbnQgbGVuLCByZXQ7Cj4gIAo+IC0JcG9ydCA9IGRy bV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRfcmVmKG1nciwgcG9ydCk7Cj4gKwlwb3J0ID0gZHJtX2Rw X21zdF90b3BvbG9neV9nZXRfcG9ydF92YWxpZGF0ZWQobWdyLCBwb3J0KTsKPiAgCWlmICghcG9y dCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAl0eG1zZyA9IGt6YWxsb2Moc2l6ZW9mKCp0 eG1zZyksIEdGUF9LRVJORUwpOwo+ICAJaWYgKCF0eG1zZykgewo+IC0JCWRybV9kcF9wdXRfcG9y dChwb3J0KTsKPiArCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwo+ICAJCXJl dHVybiAtRU5PTUVNOwo+ICAJfQo+ICAKPiBAQCAtMTc5OSw3ICsxODA4LDcgQEAgaW50IGRybV9k cF9zZW5kX3Bvd2VyX3VwZG93bl9waHkoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICpt Z3IsCj4gIAkJCXJldCA9IDA7Cj4gIAl9Cj4gIAlrZnJlZSh0eG1zZyk7Cj4gLQlkcm1fZHBfcHV0 X3BvcnQocG9ydCk7Cj4gKwlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwo+ICAK PiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtMTg4OCw3ICsxODk3LDggQEAgaW50IGRybV9kcF91 cGRhdGVfcGF5bG9hZF9wYXJ0MShzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncikK PiAgCQlpZiAodmNwaSkgewo+ICAJCQlwb3J0ID0gY29udGFpbmVyX29mKHZjcGksIHN0cnVjdCBk cm1fZHBfbXN0X3BvcnQsCj4gIAkJCQkJICAgIHZjcGkpOwo+IC0JCQlwb3J0ID0gZHJtX2RwX2dl dF92YWxpZGF0ZWRfcG9ydF9yZWYobWdyLCBwb3J0KTsKPiArCQkJcG9ydCA9IGRybV9kcF9tc3Rf dG9wb2xvZ3lfZ2V0X3BvcnRfdmFsaWRhdGVkKG1nciwKPiArCQkJCQkJCQkgICAgICBwb3J0KTsK PiAgCQkJaWYgKCFwb3J0KSB7Cj4gIAkJCQltdXRleF91bmxvY2soJm1nci0+cGF5bG9hZF9sb2Nr KTsKPiAgCQkJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0xOTI1LDcgKzE5MzUsNyBAQCBpbnQgZHJt X2RwX3VwZGF0ZV9wYXlsb2FkX3BhcnQxKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAq bWdyKQo+ICAJCWN1cl9zbG90cyArPSByZXFfcGF5bG9hZC5udW1fc2xvdHM7Cj4gIAo+ICAJCWlm IChwb3J0KQo+IC0JCQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7Cj4gKwkJCWRybV9kcF9tc3RfdG9w b2xvZ3lfcHV0X3BvcnQocG9ydCk7Cj4gIAl9Cj4gIAo+ICAJZm9yIChpID0gMDsgaSA8IG1nci0+ bWF4X3BheWxvYWRzOyBpKyspIHsKPiBAQCAtMjAyNCw3ICsyMDM0LDcgQEAgc3RhdGljIGludCBk cm1fZHBfc2VuZF9kcGNkX3dyaXRlKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdy LAo+ICAJc3RydWN0IGRybV9kcF9zaWRlYmFuZF9tc2dfdHggKnR4bXNnOwo+ICAJc3RydWN0IGRy bV9kcF9tc3RfYnJhbmNoICptc3RiOwo+ICAKPiAtCW1zdGIgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRl ZF9tc3RiX3JlZihtZ3IsIHBvcnQtPnBhcmVudCk7Cj4gKwltc3RiID0gZHJtX2RwX21zdF90b3Bv bG9neV9nZXRfbXN0Yl92YWxpZGF0ZWQobWdyLCBwb3J0LT5wYXJlbnQpOwo+ICAJaWYgKCFtc3Ri KQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiBAQCAtMjA0OCw3ICsyMDU4LDcgQEAgc3RhdGlj IGludCBkcm1fZHBfc2VuZF9kcGNkX3dyaXRlKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21n ciAqbWdyLAo+ICAJfQo+ICAJa2ZyZWUodHhtc2cpOwo+ICBmYWlsX3B1dDoKPiAtCWRybV9kcF9w dXRfbXN0X2JyYW5jaF9kZXZpY2UobXN0Yik7Cj4gKwlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9t c3RiKG1zdGIpOwo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiBAQCAtMjE5Miw3ICsyMjAyLDcg QEAgaW50IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX3NldF9tc3Qoc3RydWN0IGRybV9kcF9tc3Rf dG9wb2xvZ3lfbWdyICptZ3IsIGJvb2wgbXMKPiAgb3V0X3VubG9jazoKPiAgCW11dGV4X3VubG9j aygmbWdyLT5sb2NrKTsKPiAgCWlmIChtc3RiKQo+IC0JCWRybV9kcF9wdXRfbXN0X2JyYW5jaF9k ZXZpY2UobXN0Yik7Cj4gKwkJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfbXN0Yihtc3RiKTsKPiAg CXJldHVybiByZXQ7Cj4gIAo+ICB9Cj4gQEAgLTIzNTcsNyArMjM2Nyw3IEBAIHN0YXRpYyBpbnQg ZHJtX2RwX21zdF9oYW5kbGVfZG93bl9yZXAoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdy ICptZ3IpCj4gIAkJCSAgICAgICBtZ3ItPmRvd25fcmVwX3JlY3YuaW5pdGlhbF9oZHIubGN0LAo+ ICAJCQkJICAgICAgbWdyLT5kb3duX3JlcF9yZWN2LmluaXRpYWxfaGRyLnJhZFswXSwKPiAgCQkJ CSAgICAgIG1nci0+ZG93bl9yZXBfcmVjdi5tc2dbMF0pOwo+IC0JCQlkcm1fZHBfcHV0X21zdF9i cmFuY2hfZGV2aWNlKG1zdGIpOwo+ICsJCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9tc3RiKG1z dGIpOwo+ICAJCQltZW1zZXQoJm1nci0+ZG93bl9yZXBfcmVjdiwgMCwgc2l6ZW9mKHN0cnVjdCBk cm1fZHBfc2lkZWJhbmRfbXNnX3J4KSk7Cj4gIAkJCXJldHVybiAwOwo+ICAJCX0KPiBAQCAtMjM2 OCw3ICsyMzc4LDcgQEAgc3RhdGljIGludCBkcm1fZHBfbXN0X2hhbmRsZV9kb3duX3JlcChzdHJ1 Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncikKPiAgCQl9Cj4gIAo+ICAJCW1lbXNldCgm bWdyLT5kb3duX3JlcF9yZWN2LCAwLCBzaXplb2Yoc3RydWN0IGRybV9kcF9zaWRlYmFuZF9tc2df cngpKTsKPiAtCQlkcm1fZHBfcHV0X21zdF9icmFuY2hfZGV2aWNlKG1zdGIpOwo+ICsJCWRybV9k cF9tc3RfdG9wb2xvZ3lfcHV0X21zdGIobXN0Yik7Cj4gIAo+ICAJCW11dGV4X2xvY2soJm1nci0+ cWxvY2spOwo+ICAJCXR4bXNnLT5zdGF0ZSA9IERSTV9EUF9TSURFQkFORF9UWF9SWDsKPiBAQCAt MjQ0MSw3ICsyNDUxLDcgQEAgc3RhdGljIGludCBkcm1fZHBfbXN0X2hhbmRsZV91cF9yZXEoc3Ry dWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IpCj4gIAkJfQo+ICAKPiAgCQlpZiAobXN0 YikKPiAtCQkJZHJtX2RwX3B1dF9tc3RfYnJhbmNoX2RldmljZShtc3RiKTsKPiArCQkJZHJtX2Rw X21zdF90b3BvbG9neV9wdXRfbXN0Yihtc3RiKTsKPiAgCj4gIAkJbWVtc2V0KCZtZ3ItPnVwX3Jl cV9yZWN2LCAwLCBzaXplb2Yoc3RydWN0IGRybV9kcF9zaWRlYmFuZF9tc2dfcngpKTsKPiAgCX0K PiBAQCAtMjUwMSw3ICsyNTExLDcgQEAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBkcm1fZHBf bXN0X2RldGVjdF9wb3J0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IKPiAgCWVudW0g ZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0 ZWQ7Cj4gIAo+ICAJLyogd2UgbmVlZCB0byBzZWFyY2ggZm9yIHRoZSBwb3J0IGluIHRoZSBtZ3Ig aW4gY2FzZSBpdHMgZ29uZSAqLwo+IC0JcG9ydCA9IGRybV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRf cmVmKG1nciwgcG9ydCk7Cj4gKwlwb3J0ID0gZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92 YWxpZGF0ZWQobWdyLCBwb3J0KTsKPiAgCWlmICghcG9ydCkKPiAgCQlyZXR1cm4gY29ubmVjdG9y X3N0YXR1c19kaXNjb25uZWN0ZWQ7Cj4gIAo+IEBAIC0yNTI2LDcgKzI1MzYsNyBAQCBlbnVtIGRy bV9jb25uZWN0b3Jfc3RhdHVzIGRybV9kcF9tc3RfZGV0ZWN0X3BvcnQoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3Rvcgo+ICAJCWJyZWFrOwo+ICAJfQo+ICBvdXQ6Cj4gLQlkcm1fZHBfcHV0 X3BvcnQocG9ydCk7Cj4gKwlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwo+ICAJ cmV0dXJuIHN0YXR1czsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3RfZGV0ZWN0X3Bv cnQpOwo+IEBAIC0yNTQzLDExICsyNTUzLDExIEBAIGJvb2wgZHJtX2RwX21zdF9wb3J0X2hhc19h dWRpbyhzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKPiAgewo+ICAJYm9vbCBy ZXQgPSBmYWxzZTsKPiAgCj4gLQlwb3J0ID0gZHJtX2RwX2dldF92YWxpZGF0ZWRfcG9ydF9yZWYo bWdyLCBwb3J0KTsKPiArCXBvcnQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0X3ZhbGlk YXRlZChtZ3IsIHBvcnQpOwo+ICAJaWYgKCFwb3J0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAlyZXQg PSBwb3J0LT5oYXNfYXVkaW87Cj4gLQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7Cj4gKwlkcm1fZHBf bXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICBFWFBP UlRfU1lNQk9MKGRybV9kcF9tc3RfcG9ydF9oYXNfYXVkaW8pOwo+IEBAIC0yNTY3LDcgKzI1Nzcs NyBAQCBzdHJ1Y3QgZWRpZCAqZHJtX2RwX21zdF9nZXRfZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLCBzdHJ1Y3QgZHJtX2RwXwo+ICAJc3RydWN0IGVkaWQgKmVkaWQgPSBOVUxM Owo+ICAKPiAgCS8qIHdlIG5lZWQgdG8gc2VhcmNoIGZvciB0aGUgcG9ydCBpbiB0aGUgbWdyIGlu IGNhc2UgaXRzIGdvbmUgKi8KPiAtCXBvcnQgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9wb3J0X3Jl ZihtZ3IsIHBvcnQpOwo+ICsJcG9ydCA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnRfdmFs aWRhdGVkKG1nciwgcG9ydCk7Cj4gIAlpZiAoIXBvcnQpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+ IEBAIC0yNTc4LDcgKzI1ODgsNyBAQCBzdHJ1Y3QgZWRpZCAqZHJtX2RwX21zdF9nZXRfZWRpZChz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBzdHJ1Y3QgZHJtX2RwXwo+ICAJCWRybV9j b25uZWN0b3Jfc2V0X3RpbGVfcHJvcGVydHkoY29ubmVjdG9yKTsKPiAgCX0KPiAgCXBvcnQtPmhh c19hdWRpbyA9IGRybV9kZXRlY3RfbW9uaXRvcl9hdWRpbyhlZGlkKTsKPiAtCWRybV9kcF9wdXRf cG9ydChwb3J0KTsKPiArCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7Cj4gIAly ZXR1cm4gZWRpZDsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3RfZ2V0X2VkaWQpOwo+ IEBAIC0yNjQ5LDcgKzI2NTksNyBAQCBpbnQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJaWYgKElTX0VSUih0b3BvbG9neV9z dGF0ZSkpCj4gIAkJcmV0dXJuIFBUUl9FUlIodG9wb2xvZ3lfc3RhdGUpOwo+ICAKPiAtCXBvcnQg PSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9wb3J0X3JlZihtZ3IsIHBvcnQpOwo+ICsJcG9ydCA9IGRy bV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnRfdmFsaWRhdGVkKG1nciwgcG9ydCk7Cj4gIAlpZiAo cG9ydCA9PSBOVUxMKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJcmVxX3Nsb3RzID0gRElWX1JP VU5EX1VQKHBibiwgbWdyLT5wYm5fZGl2KTsKPiBAQCAtMjY1NywxNCArMjY2NywxNCBAQCBpbnQg ZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlLAo+ICAJCQlyZXFfc2xvdHMsIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyk7Cj4gIAo+ ICAJaWYgKHJlcV9zbG90cyA+IHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cykgewo+IC0JCWRy bV9kcF9wdXRfcG9ydChwb3J0KTsKPiArCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBv cnQpOwo+ICAJCXJldHVybiAtRU5PU1BDOwo+ICAJfQo+ICAKPiAgCXRvcG9sb2d5X3N0YXRlLT5h dmFpbF9zbG90cyAtPSByZXFfc2xvdHM7Cj4gIAlEUk1fREVCVUdfS01TKCJ2Y3BpIHNsb3RzIGF2 YWlsPSVkIiwgdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzKTsKPiAgCj4gLQlkcm1fZHBfcHV0 X3BvcnQocG9ydCk7Cj4gKwlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwo+ICAJ cmV0dXJuIHJlcV9zbG90czsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9kcF9hdG9taWNfZmlu ZF92Y3BpX3Nsb3RzKTsKPiBAQCAtMjcxNSw3ICsyNzI1LDcgQEAgYm9vbCBkcm1fZHBfbXN0X2Fs bG9jYXRlX3ZjcGkoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCj4gIHsKPiAg CWludCByZXQ7Cj4gIAo+IC0JcG9ydCA9IGRybV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRfcmVmKG1n ciwgcG9ydCk7Cj4gKwlwb3J0ID0gZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92YWxpZGF0 ZWQobWdyLCBwb3J0KTsKPiAgCWlmICghcG9ydCkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IEBA IC0yNzI1LDcgKzI3MzUsNyBAQCBib29sIGRybV9kcF9tc3RfYWxsb2NhdGVfdmNwaShzdHJ1Y3Qg ZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKPiAgCWlmIChwb3J0LT52Y3BpLnZjcGkgPiAw KSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygicGF5bG9hZDogdmNwaSAlZCBhbHJlYWR5IGFsbG9jYXRl ZCBmb3IgcGJuICVkIC0gcmVxdWVzdGVkIHBibiAlZFxuIiwgcG9ydC0+dmNwaS52Y3BpLCBwb3J0 LT52Y3BpLnBibiwgcGJuKTsKPiAgCQlpZiAocGJuID09IHBvcnQtPnZjcGkucGJuKSB7Cj4gLQkJ CWRybV9kcF9wdXRfcG9ydChwb3J0KTsKPiArCQkJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9y dChwb3J0KTsKPiAgCQkJcmV0dXJuIHRydWU7Cj4gIAkJfQo+ICAJfQo+IEBAIC0yNzM5LDcgKzI3 NDksNyBAQCBib29sIGRybV9kcF9tc3RfYWxsb2NhdGVfdmNwaShzdHJ1Y3QgZHJtX2RwX21zdF90 b3BvbG9neV9tZ3IgKm1nciwKPiAgCURSTV9ERUJVR19LTVMoImluaXRpbmcgdmNwaSBmb3IgcGJu PSVkIHNsb3RzPSVkXG4iLAo+ICAJCQlwYm4sIHBvcnQtPnZjcGkubnVtX3Nsb3RzKTsKPiAgCj4g LQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7Cj4gKwlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0 KHBvcnQpOwo+ICAJcmV0dXJuIHRydWU7Cj4gIG91dDoKPiAgCXJldHVybiBmYWxzZTsKPiBAQCAt Mjc0OSwxMiArMjc1OSwxMiBAQCBFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3RfYWxsb2NhdGVfdmNw aSk7Cj4gIGludCBkcm1fZHBfbXN0X2dldF92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fZHBfbXN0X3Rv cG9sb2d5X21nciAqbWdyLCBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQo+ICB7Cj4gIAlp bnQgc2xvdHMgPSAwOwo+IC0JcG9ydCA9IGRybV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRfcmVmKG1n ciwgcG9ydCk7Cj4gKwlwb3J0ID0gZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92YWxpZGF0 ZWQobWdyLCBwb3J0KTsKPiAgCWlmICghcG9ydCkKPiAgCQlyZXR1cm4gc2xvdHM7Cj4gIAo+ICAJ c2xvdHMgPSBwb3J0LT52Y3BpLm51bV9zbG90czsKPiAtCWRybV9kcF9wdXRfcG9ydChwb3J0KTsK PiArCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7Cj4gIAlyZXR1cm4gc2xvdHM7 Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZHBfbXN0X2dldF92Y3BpX3Nsb3RzKTsKPiBAQCAt Mjc2OCwxMSArMjc3OCwxMSBAQCBFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3RfZ2V0X3ZjcGlfc2xv dHMpOwo+ICAgKi8KPiAgdm9pZCBkcm1fZHBfbXN0X3Jlc2V0X3ZjcGlfc2xvdHMoc3RydWN0IGRy bV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQp Cj4gIHsKPiAtCXBvcnQgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9wb3J0X3JlZihtZ3IsIHBvcnQp Owo+ICsJcG9ydCA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnRfdmFsaWRhdGVkKG1nciwg cG9ydCk7Cj4gIAlpZiAoIXBvcnQpCj4gIAkJcmV0dXJuOwo+ICAJcG9ydC0+dmNwaS5udW1fc2xv dHMgPSAwOwo+IC0JZHJtX2RwX3B1dF9wb3J0KHBvcnQpOwo+ICsJZHJtX2RwX21zdF90b3BvbG9n eV9wdXRfcG9ydChwb3J0KTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3RfcmVzZXRf dmNwaV9zbG90cyk7Cj4gIAo+IEBAIC0yNzgzLDcgKzI3OTMsNyBAQCBFWFBPUlRfU1lNQk9MKGRy bV9kcF9tc3RfcmVzZXRfdmNwaV9zbG90cyk7Cj4gICAqLwo+ICB2b2lkIGRybV9kcF9tc3RfZGVh bGxvY2F0ZV92Y3BpKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLCBzdHJ1Y3Qg ZHJtX2RwX21zdF9wb3J0ICpwb3J0KQo+ICB7Cj4gLQlwb3J0ID0gZHJtX2RwX2dldF92YWxpZGF0 ZWRfcG9ydF9yZWYobWdyLCBwb3J0KTsKPiArCXBvcnQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dl dF9wb3J0X3ZhbGlkYXRlZChtZ3IsIHBvcnQpOwo+ICAJaWYgKCFwb3J0KQo+ICAJCXJldHVybjsK PiAgCj4gQEAgLTI3OTIsNyArMjgwMiw3IEBAIHZvaWQgZHJtX2RwX21zdF9kZWFsbG9jYXRlX3Zj cGkoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsIHN0cnVjdCBkcm1fCj4gIAlw b3J0LT52Y3BpLnBibiA9IDA7Cj4gIAlwb3J0LT52Y3BpLmFsaWduZWRfcGJuID0gMDsKPiAgCXBv cnQtPnZjcGkudmNwaSA9IDA7Cj4gLQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7Cj4gKwlkcm1fZHBf bXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2Rw X21zdF9kZWFsbG9jYXRlX3ZjcGkpOwo+ICAKPiBAQCAtMzI5Miw3ICszMzAyLDcgQEAgc3RhdGlj IGludCBkcm1fZHBfbXN0X2kyY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgc3Ry dWN0IGkyY19tc2cgKm1zZ3MKPiAgCXN0cnVjdCBkcm1fZHBfc2lkZWJhbmRfbXNnX3R4ICp0eG1z ZyA9IE5VTEw7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCW1zdGIgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRl ZF9tc3RiX3JlZihtZ3IsIHBvcnQtPnBhcmVudCk7Cj4gKwltc3RiID0gZHJtX2RwX21zdF90b3Bv bG9neV9nZXRfbXN0Yl92YWxpZGF0ZWQobWdyLCBwb3J0LT5wYXJlbnQpOwo+ICAJaWYgKCFtc3Ri KQo+ICAJCXJldHVybiAtRVJFTU9URUlPOwo+ICAKPiBAQCAtMzM0Miw3ICszMzUyLDcgQEAgc3Rh dGljIGludCBkcm1fZHBfbXN0X2kyY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwg c3RydWN0IGkyY19tc2cgKm1zZ3MKPiAgCX0KPiAgb3V0Ogo+ICAJa2ZyZWUodHhtc2cpOwo+IC0J ZHJtX2RwX3B1dF9tc3RfYnJhbmNoX2RldmljZShtc3RiKTsKPiArCWRybV9kcF9tc3RfdG9wb2xv Z3lfcHV0X21zdGIobXN0Yik7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC0tIAo+IDIuMTku Mgo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCk5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v bm91dmVhdQo=