From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [Intel-gfx] [PATCH 18/19] drm/i915: Use new atomic iterator macros in display code Date: Thu, 3 Nov 2016 19:04:00 +0200 Message-ID: <20161103170400.GG4617@intel.com> References: <1476707838-25253-1-git-send-email-maarten.lankhorst@linux.intel.com> <1476707838-25253-19-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1476707838-25253-19-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBPY3QgMTcsIDIwMTYgYXQgMDI6Mzc6MTdQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFu a2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIHwgMTU2ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4g IDEgZmlsZSBjaGFuZ2VkLCA4MCBpbnNlcnRpb25zKCspLCA3NiBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggM2JkM2Y2YTkzYzEyLi5kMzEw YWJhY2U4NmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTM1 MTAsNyArMzUxMCwxMiBAQCBfX2ludGVsX2Rpc3BsYXlfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAlpZiAoIXN0YXRlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCWZvcl9lYWNoX2Ny dGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiArCS8qCj4gKwkgKiBX ZSd2ZSBkdXBsaWNhdGVkIHRoZSBzdGF0ZSwgcG9pbnRlcnMgdG8gdGhlIG9sZCBzdGF0ZSBhcmUg aW52YWxpZC4KPiArCSAqCj4gKwkgKiBEb24ndCBhdHRlbXB0IHRvIHVzZSB0aGUgb2xkIHN0YXRl IHVudGlsIHdlIGNvbW1pdCB0aGUgZHVwbGljYXRlZCBzdGF0ZS4KPiArCSAqLwo+ICsJZm9yX2Vh Y2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiAgCQkv Kgo+ICAJCSAqIEZvcmNlIHJlY2FsY3VsYXRpb24gZXZlbiBpZiB3ZSByZXN0b3JlCj4gIAkJICog Y3VycmVudCBzdGF0ZS4gV2l0aCBmYXN0IG1vZGVzZXQgdGhpcyBtYXkgbm90IHJlc3VsdAo+IEBA IC01MDc4LDEzICs1MDgzLDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bvc3RfcGxhbmVfdXBkYXRl KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKPiAgCX0KPiAgfQo+ICAK PiAtc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqb2xkX2NydGNfc3RhdGUpCj4gK3N0YXRpYyB2b2lkIGludGVsX3ByZV9wbGFuZV91cGRh dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ICsJCQkJICAgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMob2xkX2NydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4g IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQo+IC0JCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+ YmFzZS5zdGF0ZSk7Cj4gIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlID0gb2xk X2NydGNfc3RhdGUtPmJhc2Uuc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0g Y3J0Yy0+YmFzZS5wcmltYXJ5Owo+ICAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3ByaV9z dGF0ZSA9Cj4gQEAgLTUxODYsMTIgKzUxOTAsMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5jb2Rl cnNfcHJlX3BsbF9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJCSAgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkJICBzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqb2xkX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq b2xkX2Nvbm5fc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0 ZTsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ICAJaW50IGk7Cj4gIAo+IC0JZm9y X2VhY2hfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubiwgb2xkX2Nvbm5fc3RhdGUs IGkpIHsKPiAtCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSA9IGNvbm4t PnN0YXRlOwo+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNv bm4sIGNvbm5fc3RhdGUsIGkpIHsKPiAgCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9 Cj4gIAkJCXRvX2ludGVsX2VuY29kZXIoY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKTsKPiAgCj4g QEAgLTUyMDcsMTIgKzUyMTAsMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5jb2RlcnNfcHJlX2Vu YWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpvbGRfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29u bl9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ICAJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47Cj4gIAlpbnQgaTsKPiAgCj4gLQlmb3JfZWFjaF9j b25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uLCBvbGRfY29ubl9zdGF0ZSwgaSkgewo+ IC0JCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlID0gY29ubi0+c3RhdGU7 Cj4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubiwgY29u bl9zdGF0ZSwgaSkgewo+ICAJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0KPiAgCQkJ dG9faW50ZWxfZW5jb2Rlcihjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpOwo+ICAKPiBAQCAtNTIy OCwxMiArNTIzMCwxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19lbmFibGUoc3RydWN0 IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiAgCQkJCSAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAgewo+ IC0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlOwo+ICsJc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubjsKPiAgCWludCBpOwo+ICAKPiAtCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShv bGRfc3RhdGUsIGNvbm4sIG9sZF9jb25uX3N0YXRlLCBpKSB7Cj4gLQkJc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUgPSBjb25uLT5zdGF0ZTsKPiArCWZvcl9lYWNoX25ld19j b25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uLCBjb25uX3N0YXRlLCBpKSB7Cj4gIAkJ c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPQo+ICAJCQl0b19pbnRlbF9lbmNvZGVyKGNv bm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7Cj4gIAo+IEBAIC01MjUzLDcgKzUyNTQsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAg CXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ICAJaW50IGk7Cj4gIAo+IC0JZm9yX2VhY2hf Y29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubiwgb2xkX2Nvbm5fc3RhdGUsIGkpIHsK PiArCWZvcl9lYWNoX29sZF9jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uLCBvbGRf Y29ubl9zdGF0ZSwgaSkgewo+ICAJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0KPiAg CQkJdG9faW50ZWxfZW5jb2RlcihvbGRfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKTsKPiAgCj4g QEAgLTUyNzMsNyArNTI3NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3Bvc3RfZGlz YWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bjsKPiAgCWludCBpOwo+ICAKPiAtCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3Rh dGUsIGNvbm4sIG9sZF9jb25uX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9vbGRfY29ubmVjdG9y X2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubiwgb2xkX2Nvbm5fc3RhdGUsIGkpIHsKPiAgCQlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9Cj4gIAkJCXRvX2ludGVsX2VuY29kZXIob2xkX2Nv bm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7Cj4gIAo+IEBAIC01MjkzLDcgKzUyOTQsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19wb3N0X3BsbF9kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ICAJaW50IGk7Cj4gIAo+IC0J Zm9yX2VhY2hfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9zdGF0ZSwgY29ubiwgb2xkX2Nvbm5fc3Rh dGUsIGkpIHsKPiArCWZvcl9lYWNoX29sZF9jb25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBj b25uLCBvbGRfY29ubl9zdGF0ZSwgaSkgewo+ICAJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyID0KPiAgCQkJdG9faW50ZWxfZW5jb2RlcihvbGRfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVy KTsKPiAgCj4gQEAgLTY1NzMsNyArNjU3NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfbW9kZV9tYXhf cGl4Y2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAltZW1jcHkoaW50ZWxfc3RhdGUtPm1p bl9waXhjbGssIGRldl9wcml2LT5taW5fcGl4Y2xrLAo+ICAJICAgICAgIHNpemVvZihpbnRlbF9z dGF0ZS0+bWluX3BpeGNsaykpOwo+ICAKPiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0 YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gIAkJaW50IHBpeGNsayA9IDA7Cj4gIAo+ICAJ CWlmIChjcnRjX3N0YXRlLT5lbmFibGUpCj4gQEAgLTEwMjM4LDcgKzEwMjM5LDcgQEAgc3RhdGlj IGludCBpbGtfbWF4X3BpeGVsX3JhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ ICAJbWVtY3B5KGludGVsX3N0YXRlLT5taW5fcGl4Y2xrLCBkZXZfcHJpdi0+bWluX3BpeGNsaywK PiAgCSAgICAgICBzaXplb2YoaW50ZWxfc3RhdGUtPm1pbl9waXhjbGspKTsKPiAgCj4gLQlmb3Jf ZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNo X25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjc3RhdGUsIGkpIHsKPiAgCQlpbnQgcGl4 ZWxfcmF0ZTsKPiAgCj4gIAkJY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3N0YXRl KTsKPiBAQCAtMTI1MzAsNyArMTI1MzEsNyBAQCBzdGF0aWMgYm9vbCBjaGVja19zaW5nbGVfZW5j b2Rlcl9jbG9uaW5nKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Cj4gIAlpbnQgaTsKPiAgCj4gLQlm b3JfZWFjaF9jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubmVjdG9yX3N0 YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25u ZWN0b3IsIGNvbm5lY3Rvcl9zdGF0ZSwgaSkgewo+ICAJCWlmIChjb25uZWN0b3Jfc3RhdGUtPmNy dGMgIT0gJmNydGMtPmJhc2UpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTI3MDAsNyArMTI3 MDEsNyBAQCBjb21wdXRlX2Jhc2VsaW5lX3BpcGVfYnBwKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAo+ICAJc3RhdGUgPSBwaXBlX2NvbmZpZy0+YmFzZS5zdGF0ZTsKPiAgCj4gIAkvKiBDbGFtcCBk aXNwbGF5IGJwcCB0byBFRElEIHZhbHVlICovCj4gLQlmb3JfZWFjaF9jb25uZWN0b3JfaW5fc3Rh dGUoc3RhdGUsIGNvbm5lY3RvciwgY29ubmVjdG9yX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9u ZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5lY3Rvcl9zdGF0ZSwg aSkgewo+ICAJCWlmIChjb25uZWN0b3Jfc3RhdGUtPmNydGMgIT0gJmNydGMtPmJhc2UpCj4gIAkJ CWNvbnRpbnVlOwo+ICAKPiBAQCAtMTI5OTIsNyArMTI5OTMsNyBAQCBpbnRlbF9tb2Rlc2V0X3Bp cGVfY29uZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJICAgICAgICZwaXBlX2NvbmZp Zy0+cGlwZV9zcmNfdywKPiAgCQkJICAgICAgICZwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCk7Cj4g IAo+IC0JZm9yX2VhY2hfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5l Y3Rvcl9zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0 ZSwgY29ubmVjdG9yLCBjb25uZWN0b3Jfc3RhdGUsIGkpIHsKPiAgCQlpZiAoY29ubmVjdG9yX3N0 YXRlLT5jcnRjICE9IGNydGMpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTMwMjMsNyArMTMw MjQsNyBAQCBlbmNvZGVyX3JldHJ5Ogo+ICAJICogYWRqdXN0IGl0IGFjY29yZGluZyB0byBsaW1p dGF0aW9ucyBvciBjb25uZWN0b3IgcHJvcGVydGllcywgYW5kIGFsc28KPiAgCSAqIGEgY2hhbmNl IHRvIHJlamVjdCB0aGUgbW9kZSBlbnRpcmVseS4KPiAgCSAqLwo+IC0JZm9yX2VhY2hfY29ubmVj dG9yX2luX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IsIGNvbm5lY3Rvcl9zdGF0ZSwgaSkgewo+ICsJ Zm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLCBjb25uZWN0 b3Jfc3RhdGUsIGkpIHsKPiAgCQlpZiAoY29ubmVjdG9yX3N0YXRlLT5jcnRjICE9IGNydGMpCj4g IAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTMwNzIsMTYgKzEzMDczLDE2IEBAIHN0YXRpYyB2b2lk Cj4gIGludGVsX21vZGVzZXRfdXBkYXRlX2NydGNfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlOwo+ICAJaW50IGk7Cj4gIAo+ICAJLyogRG91YmxlIGNoZWNrIHN0YXRlLiAqLwo+ IC0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ IC0JCXRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0 Yy0+c3RhdGUpOwo+ICsJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG5l d19jcnRjX3N0YXRlLCBpKSB7Cj4gKwkJdG9faW50ZWxfY3J0YyhjcnRjKS0+Y29uZmlnID0gdG9f aW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7Cj4gIAo+ICAJCS8qIFVwZGF0ZSBod21v ZGUgZm9yIHZibGFuayBmdW5jdGlvbnMgKi8KPiAtCQlpZiAoY3J0Yy0+c3RhdGUtPmFjdGl2ZSkK PiAtCQkJY3J0Yy0+aHdtb2RlID0gY3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGU7Cj4gKwkJaWYg KG5ld19jcnRjX3N0YXRlLT5hY3RpdmUpCj4gKwkJCWNydGMtPmh3bW9kZSA9IG5ld19jcnRjX3N0 YXRlLT5hZGp1c3RlZF9tb2RlOwo+ICAJCWVsc2UKPiAgCQkJY3J0Yy0+aHdtb2RlLmNydGNfY2xv Y2sgPSAwOwo+ICAKClRoZXJlJ3Mgc29tZSBwcmltYXJ5LT5zdGF0ZSBzdHVmZiBsZWZ0IGFmdGVy IHRoaXMgcG9pbnQuCgo+IEBAIC0xMzc1MywyMSArMTM3NTQsMjEgQEAgc3RhdGljIHZvaWQgaW50 ZWxfbW9kZXNldF9jbGVhcl9wbGxzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0 cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9jb25maWcgKnNoYXJlZF9kcGxsID0gTlVMTDsKPiAgCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAtCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZTsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdfY3J0Y19z dGF0ZTsKPiAgCWludCBpOwo+ICAKPiAgCWlmICghZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19jb21w dXRlX2Nsb2NrKQo+ICAJCXJldHVybjsKPiAgCj4gLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0 YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9z dGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4g IAkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ ICAJCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqb2xkX2RwbGwgPQo+IC0JCQl0b19pbnRlbF9j cnRjX3N0YXRlKGNydGMtPnN0YXRlKS0+c2hhcmVkX2RwbGw7Cj4gKwkJCXRvX2ludGVsX2NydGNf c3RhdGUob2xkX2NydGNfc3RhdGUpLT5zaGFyZWRfZHBsbDsKPiAgCj4gLQkJaWYgKCFuZWVkc19t b2Rlc2V0KGNydGNfc3RhdGUpKQo+ICsJCWlmICghbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0 ZSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3Rh dGUpLT5zaGFyZWRfZHBsbCA9IE5VTEw7Cj4gKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0 Y19zdGF0ZSktPnNoYXJlZF9kcGxsID0gTlVMTDsKPiAgCj4gIAkJaWYgKCFvbGRfZHBsbCkKPiAg CQkJY29udGludWU7Cj4gQEAgLTEzNzk2LDcgKzEzNzk3LDcgQEAgc3RhdGljIGludCBoYXN3ZWxs X21vZGVfc2V0X3BsYW5lc193b3JrYXJvdW5kKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSkKPiAgCWludCBpOwo+ICAKPiAgCS8qIGxvb2sgYXQgYWxsIGNydGMncyB0aGF0IGFyZSBnb2lu ZyB0byBiZSBlbmFibGVkIGluIGR1cmluZyBtb2Rlc2V0ICovCj4gLQlmb3JfZWFjaF9jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9uZXdfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAKPiAgCQlpZiAoIWNydGNfc3RhdGUtPmFjdGl2ZSB8 fCAhbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKPiBAQCAtMTM4NzgsNyArMTM4NzksNyBAQCBz dGF0aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50 ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4g LQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7Cj4gIAlpbnQgcmV0ID0gMCwg aTsKPiAgCj4gIAlpZiAoIWNoZWNrX2RpZ2l0YWxfcG9ydF9jb25mbGljdHMoc3RhdGUpKSB7Cj4g QEAgLTEzODg5LDEzICsxMzg5MCwxMyBAQCBzdGF0aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tz KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCWludGVsX3N0YXRlLT5tb2Rlc2V0 ID0gdHJ1ZTsKPiAgCWludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MgPSBkZXZfcHJpdi0+YWN0aXZl X2NydGNzOwo+ICAKPiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNf c3RhdGUsIGkpIHsKPiAtCQlpZiAoY3J0Y19zdGF0ZS0+YWN0aXZlKQo+ICsJZm9yX2VhY2hfb2xk bmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19z dGF0ZSwgaSkgewo+ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKQo+ICAJCQlpbnRlbF9z dGF0ZS0+YWN0aXZlX2NydGNzIHw9IDEgPDwgaTsKPiAgCQllbHNlCj4gIAkJCWludGVsX3N0YXRl LT5hY3RpdmVfY3J0Y3MgJj0gfigxIDw8IGkpOwo+ICAKPiAtCQlpZiAoY3J0Y19zdGF0ZS0+YWN0 aXZlICE9IGNydGMtPnN0YXRlLT5hY3RpdmUpCj4gKwkJaWYgKG9sZF9jcnRjX3N0YXRlLT5hY3Rp dmUgIT0gbmV3X2NydGNfc3RhdGUtPmFjdGl2ZSkKCkFsbW9zdCBjYXVnaHQgbWUgd2l0aCByZWFy cmFnbmluZyB0aGUgb3JkZXIgOykKCj4gIAkJCWludGVsX3N0YXRlLT5hY3RpdmVfcGlwZV9jaGFu Z2VzIHw9IGRybV9jcnRjX21hc2soY3J0Yyk7Cj4gIAl9Cj4gIAo+IEBAIC0xMzk2NCw3ICsxMzk2 NSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 Cj4gIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0 b21pY19zdGF0ZShzdGF0ZSk7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXRlLCAqY3J0Y19zdGF0ZTsKPiAgCWludCByZXQsIGk7Cj4gIAlib29sIGFueV9t cyA9IGZhbHNlOwo+ICAKPiBAQCAtMTM5NzIsMTIgKzEzOTczLDEyIEBAIHN0YXRpYyBpbnQgaW50 ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlpZiAocmV0KQo+ICAJ CXJldHVybiByZXQ7Cj4gIAo+IC0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywg Y3J0Y19zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIG9sZF9jcnRjX3N0YXRlLCBjcnRjX3N0YXRlLCBpKSB7Cj4gIAkJc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnID0KPiAgCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj X3N0YXRlKTsKPiAgCj4gIAkJLyogQ2F0Y2ggSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVEICovCj4g LQkJaWYgKGNydGNfc3RhdGUtPm1vZGUucHJpdmF0ZV9mbGFncyAhPSBjcnRjLT5zdGF0ZS0+bW9k ZS5wcml2YXRlX2ZsYWdzKQo+ICsJCWlmIChjcnRjX3N0YXRlLT5tb2RlLnByaXZhdGVfZmxhZ3Mg IT0gb2xkX2NydGNfc3RhdGUtPm1vZGUucHJpdmF0ZV9mbGFncykKPiAgCQkJY3J0Y19zdGF0ZS0+ bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiAgCj4gIAkJaWYgKCFuZWVkc19tb2Rlc2V0KGNydGNfc3Rh dGUpKQo+IEBAIC0xNDAwNCw3ICsxNDAwNSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICAJCWlmIChpOTE1LmZhc3Rib290ICYm Cj4gIAkJICAgIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoZGV2LAo+IC0JCQkJCXRvX2ludGVs X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpLAo+ICsJCQkJCXRvX2ludGVsX2NydGNfc3RhdGUob2xk X2NydGNfc3RhdGUpLAo+ICAJCQkJCXBpcGVfY29uZmlnLCB0cnVlKSkgewo+ICAJCQljcnRjX3N0 YXRlLT5tb2RlX2NoYW5nZWQgPSBmYWxzZTsKPiAgCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj X3N0YXRlKS0+dXBkYXRlX3BpcGUgPSB0cnVlOwo+IEBAIC0xNDA0OSw3ICsxNDA1MCw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBhcmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gIAlpbnQgaSwgcmV0Owo+ICAKPiAtCWZv cl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiArCWZv cl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4g IAkJaWYgKHN0YXRlLT5sZWdhY3lfY3Vyc29yX3VwZGF0ZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ IEBAIC0xNDA2OSw3ICsxNDA3MCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBhcmVf Y29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPiAgCj4gIAlpZiAoIXJldCAmJiAhbm9uYmxvY2spIHsKPiAtCQlmb3JfZWFj aF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7Cj4gKwkJZm9y X2VhY2hfbmV3X3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsK PiAgCQkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wbGFuZV9zdGF0ZSA9Cj4gIAkJ CQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZV9zdGF0ZSk7Cj4gIAo+IEBAIC0xNDE3MSwxOSAr MTQxNzIsMjEgQEAgc3RhdGljIGJvb2wgbmVlZHNfdmJsYW5rX3dhaXQoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jcnRjKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlLAo+ICAJCQkgICAgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRl LAo+ICsJCQkgICAgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlLAo+ICAJ CQkgICAgICB1bnNpZ25lZCBpbnQgKmNydGNfdmJsYW5rX21hc2spCj4gIHsKPiAgCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlw ZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiAtCWJvb2wgbW9k ZXNldCA9IG5lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpOwo+ICsJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnID0gdG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7 Cj4gKwlib29sIG1vZGVzZXQgPSBuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKTsKPiAgCj4g IAlpZiAobW9kZXNldCkgewo+ICAJCXVwZGF0ZV9zY2FubGluZV9vZmZzZXQoaW50ZWxfY3J0Yyk7 Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUocGlwZV9jb25maWcsIHN0YXRlKTsK PiAgCX0gZWxzZSB7Cj4gLQkJaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZSh0b19pbnRlbF9jcnRjX3N0 YXRlKG9sZF9jcnRjX3N0YXRlKSk7Cj4gKwkJaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZSh0b19pbnRl bF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKSwKPiArCQkJCSAgICAgICBwaXBlX2NvbmZpZyk7 Cj4gIAl9Cj4gIAo+ICAJaWYgKGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX3BsYW5lX3N0YXRlKHN0 YXRlLCBjcnRjLT5wcmltYXJ5KSkgewo+IEBAIC0xNDIwMiwxNSArMTQyMDUsMTUgQEAgc3RhdGlj IHZvaWQgaW50ZWxfdXBkYXRlX2NydGNzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwK PiAgCQkJICAgICAgIHVuc2lnbmVkIGludCAqY3J0Y192YmxhbmtfbWFzaykKPiAgewo+ICAJc3Ry dWN0IGRybV9jcnRjICpjcnRjOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19z dGF0ZTsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdfY3J0 Y19zdGF0ZTsKPiAgCWludCBpOwo+ICAKPiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7Cj4gLQkJaWYgKCFjcnRjLT5zdGF0ZS0+YWN0aXZl KQo+ICsJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRj X3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICsJCWlmICghbmV3X2NydGNfc3RhdGUtPmFj dGl2ZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWludGVsX3VwZGF0ZV9jcnRjKGNydGMsIHN0 YXRlLCBvbGRfY3J0Y19zdGF0ZSwKPiAtCQkJCSAgY3J0Y192YmxhbmtfbWFzayk7Cj4gKwkJCQkg IG5ld19jcnRjX3N0YXRlLCBjcnRjX3ZibGFua19tYXNrKTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAt MTQyMjEsNyArMTQyMjQsNyBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX2NydGNzKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVs X3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiAgCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YzsKPiAtCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gKwlz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7Cj4g IAlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpuZXdfZGRiID0gJmludGVsX3N0YXRlLT53bV9y ZXN1bHRzLmRkYjsKPiAgCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmN1cl9kZGIgPSAmZGV2 X3ByaXYtPndtLnNrbF9ody5kZGI7Cj4gIAl1bnNpZ25lZCBpbnQgdXBkYXRlZCA9IDA7Cj4gQEAg LTE0MjM4LDEyICsxNDI0MSwxMiBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX2NydGNzKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQlpbnQgaTsKPiAgCQlwcm9ncmVzcyA9IGZh bHNlOwo+ICAKPiAtCQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0 Y19zdGF0ZSwgaSkgewo+ICsJCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBj cnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiAgCQkJYm9vbCB2Ymxf d2FpdCA9IGZhbHNlOwo+ICAJCQl1bnNpZ25lZCBpbnQgY21hc2sgPSBkcm1fY3J0Y19tYXNrKGNy dGMpOwo+ICAJCQlwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiAgCj4gLQkJCWlm ICh1cGRhdGVkICYgY21hc2sgfHwgIWNydGMtPnN0YXRlLT5hY3RpdmUpCj4gKwkJCWlmICh1cGRh dGVkICYgY21hc2sgfHwgIW5ld19jcnRjX3N0YXRlLT5hY3RpdmUpCj4gIAkJCQljb250aW51ZTsK PiAgCQkJaWYgKHNrbF9kZGJfYWxsb2NhdGlvbl9vdmVybGFwcyhzdGF0ZSwgY3VyX2RkYiwgbmV3 X2RkYiwKPiAgCQkJCQkJCXBpcGUpKQo+IEBAIC0xNDI1OCwxMiArMTQyNjEsMTIgQEAgc3RhdGlj IHZvaWQgc2tsX3VwZGF0ZV9jcnRjcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4g IAkJCSAqIG5ldyBkZGIgYWxsb2NhdGlvbiB0byB0YWtlIGVmZmVjdC4KPiAgCQkJICovCj4gIAkJ CWlmICghc2tsX2RkYl9hbGxvY2F0aW9uX2VxdWFscyhjdXJfZGRiLCBuZXdfZGRiLCBwaXBlKSAm Jgo+IC0JCQkgICAgIWNydGMtPnN0YXRlLT5hY3RpdmVfY2hhbmdlZCAmJgo+ICsJCQkgICAgIW5l d19jcnRjX3N0YXRlLT5hY3RpdmVfY2hhbmdlZCAmJgo+ICAJCQkgICAgaW50ZWxfc3RhdGUtPndt X3Jlc3VsdHMuZGlydHlfcGlwZXMgIT0gdXBkYXRlZCkKPiAgCQkJCXZibF93YWl0ID0gdHJ1ZTsK PiAgCj4gIAkJCWludGVsX3VwZGF0ZV9jcnRjKGNydGMsIHN0YXRlLCBvbGRfY3J0Y19zdGF0ZSwK PiAtCQkJCQkgIGNydGNfdmJsYW5rX21hc2spOwo+ICsJCQkJCSAgbmV3X2NydGNfc3RhdGUsIGNy dGNfdmJsYW5rX21hc2spOwo+ICAKPiAgCQkJaWYgKHZibF93YWl0KQo+ICAJCQkJaW50ZWxfd2Fp dF9mb3JfdmJsYW5rKGRldiwgcGlwZSk7Cj4gQEAgLTE0Mjc4LDcgKzE0MjgxLDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Owo+ICAJc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUo c3RhdGUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOwo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKPiArCXN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdfY3J0Y19zdGF0ZTsKPiAgCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9j c3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiBAQCAtMTQyODgsNyArMTQyOTEs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQo+ICAJdW5zaWduZWQgY3J0Y192YmxhbmtfbWFzayA9IDA7Cj4gIAlp bnQgaSwgcmV0Owo+ICAKPiAtCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwg cGxhbmVfc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNoX25ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwg cGxhbmUsIHBsYW5lX3N0YXRlLCBpKSB7Cj4gIAkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpp bnRlbF9wbGFuZV9zdGF0ZSA9Cj4gIAkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRl KTsKPiAgCj4gQEAgLTE0MzEzLDIyICsxNDMxNiwyMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9t aWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJCWludGVs X2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fTU9ERVNFVCk7Cj4gIAl9 Cj4gIAo+IC0JZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3Rh dGUsIGkpIHsKPiArCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBv bGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiAgCQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAo+IC0JCWlmIChuZWVkc19t b2Rlc2V0KGNydGMtPnN0YXRlKSB8fAo+IC0JCSAgICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMt PnN0YXRlKS0+dXBkYXRlX3BpcGUpIHsKPiArCQlpZiAobmVlZHNfbW9kZXNldChuZXdfY3J0Y19z dGF0ZSkgfHwKPiArCQkgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSktPnVw ZGF0ZV9waXBlKSB7Cj4gIAkJCWh3X2NoZWNrID0gdHJ1ZTsKPiAgCj4gIAkJCXB1dF9kb21haW5z W3RvX2ludGVsX2NydGMoY3J0YyktPnBpcGVdID0KPiAgCQkJCW1vZGVzZXRfZ2V0X2NydGNfcG93 ZXJfZG9tYWlucyhjcnRjLAo+IC0JCQkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUp KTsKPiArCQkJCQl0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKSk7Cj4gIAkJfQo+ ICAKPiAtCQlpZiAoIW5lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpKQo+ICsJCWlmICghbmVlZHNf bW9kZXNldChuZXdfY3J0Y19zdGF0ZSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpbnRlbF9w cmVfcGxhbmVfdXBkYXRlKHRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpKTsKPiAr CQlpbnRlbF9wcmVfcGxhbmVfdXBkYXRlKHRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3Rh dGUpLAo+ICsJCQkJICAgICAgIHRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpKTsK PiAgCj4gIAkJaWYgKG9sZF9jcnRjX3N0YXRlLT5hY3RpdmUpIHsKPiAgCQkJaW50ZWxfY3J0Y19k aXNhYmxlX3BsYW5lcyhjcnRjLCBvbGRfY3J0Y19zdGF0ZS0+cGxhbmVfbWFzayk7Cj4gQEAgLTE0 MzcyLDE2ICsxNDM3NiwxNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJfQo+ICAKPiAgCS8qIENvbXBsZXRl IHRoZSBldmVudHMgZm9yIHBpcGVzIHRoYXQgaGF2ZSBub3cgYmVlbiBkaXNhYmxlZCAqLwo+IC0J Zm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsK PiAtCQlib29sIG1vZGVzZXQgPSBuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKTsKPiArCWZvcl9l YWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ ICsJCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpOwo+ICAKPiAg CQkvKiBDb21wbGV0ZSBldmVudHMgZm9yIG5vdyBkaXNhYmxlIHBpcGVzIGhlcmUuICovCj4gLQkJ aWYgKG1vZGVzZXQgJiYgIWNydGMtPnN0YXRlLT5hY3RpdmUgJiYgY3J0Yy0+c3RhdGUtPmV2ZW50 KSB7Cj4gKwkJaWYgKG1vZGVzZXQgJiYgIW5ld19jcnRjX3N0YXRlLT5hY3RpdmUgJiYgbmV3X2Ny dGNfc3RhdGUtPmV2ZW50KSB7Cj4gIAkJCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7 Cj4gLQkJCWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIGNydGMtPnN0YXRlLT5ldmVu dCk7Cj4gKwkJCWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KGNydGMsIG5ld19jcnRjX3N0YXRl LT5ldmVudCk7Cj4gIAkJCXNwaW5fdW5sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKPiAgCj4g LQkJCWNydGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7Cj4gKwkJCW5ld19jcnRjX3N0YXRlLT5ldmVu dCA9IE5VTEw7Cj4gIAkJfQo+ICAJfQo+ICAKPiBAQCAtMTQ0MDcsMjAgKzE0NDExLDIwIEBAIHN0 YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpCj4gIAkgKgo+ICAJICogVE9ETzogTW92ZSB0aGlzIChhbmQgb3RoZXIgY2xlYW51 cCkgdG8gYW4gYXN5bmMgd29ya2VyIGV2ZW50dWFsbHkuCj4gIAkgKi8KPiAtCWZvcl9lYWNoX2Ny dGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7Cj4gLQkJaW50ZWxf Y3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Cj4gKwlmb3JfZWFjaF9u ZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiArCQlp bnRlbF9jc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKTsKPiAgCj4g IAkJaWYgKGRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3MpCj4gIAkJCWRldl9w cml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3MoaW50ZWxfY3N0YXRlKTsKPiAgCX0KPiAg Cj4gLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwg aSkgewo+ICsJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9j cnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWludGVsX3Bvc3RfcGxhbmVfdXBk YXRlKHRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpKTsKPiAgCj4gIAkJaWYgKHB1 dF9kb21haW5zW2ldKQo+ICAJCQltb2Rlc2V0X3B1dF9wb3dlcl9kb21haW5zKGRldl9wcml2LCBw dXRfZG9tYWluc1tpXSk7Cj4gIAo+IC0JCWludGVsX21vZGVzZXRfdmVyaWZ5X2NydGMoY3J0Yywg b2xkX2NydGNfc3RhdGUsIGNydGMtPnN0YXRlKTsKPiArCQlpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9j cnRjKGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7Cj4gIAl9Cj4gIAo+ICAJ aWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpICYmIGludGVsX3N0YXRlLT5tb2Rlc2V0ICYmCj4gQEAg LTE0NDY0LDEzICsxNDQ2OCwxMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3dv cmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfYXRv bWljX3RyYWNrX2ZicyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAtCXN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSwgKm5ld19wbGFuZV9zdGF0ZTsKPiAgCXN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lOwo+ICAJaW50IGk7Cj4gIAo+IC0JZm9yX2VhY2hfcGxhbmVfaW5fc3Rh dGUoc3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUsIGkpCj4gKwlmb3JfZWFjaF9vbGRuZXdf cGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUsIG5ld19wbGFuZV9z dGF0ZSwgaSkKPiAgCQlpOTE1X2dlbV90cmFja19mYihpbnRlbF9mYl9vYmoob2xkX3BsYW5lX3N0 YXRlLT5mYiksCj4gLQkJCQkgIGludGVsX2ZiX29iaihwbGFuZS0+c3RhdGUtPmZiKSwKPiArCQkJ CSAgaW50ZWxfZmJfb2JqKG5ld19wbGFuZV9zdGF0ZS0+ZmIpLAo+ICAJCQkJICB0b19pbnRlbF9w bGFuZShwbGFuZSktPmZyb250YnVmZmVyX2JpdCk7Cj4gIH0KPiAgCj4gQEAgLTE2Mjk5LDcgKzE2 MzAzLDcgQEAgcmV0cnk6Cj4gIAl9Cj4gIAo+ICAJLyogV3JpdGUgY2FsY3VsYXRlZCB3YXRlcm1h cmsgdmFsdWVzIGJhY2sgKi8KPiAtCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IGNzdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IGNzdGF0ZSwgaSkgewo+ICAJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcyA9IHRvX2ludGVs X2NydGNfc3RhdGUoY3N0YXRlKTsKPiAgCj4gIAkJY3MtPndtLm5lZWRfcG9zdHZibF91cGRhdGUg PSB0cnVlOwoKQXBhcnQgZnJvbSB0aGF0IGxpbmdlcmluZyBwcmltYXJ5LT5zdGF0ZSBzdHVmZiB0 aGlzIHNlZW1zIGdvb2QuIEkgY2FuJ3QKc2F5IGhvdyBtYW55IG90aGVyIGZvby0+c3RhdGUgZGVy ZWZlcmVuY2VzIHN0aWxsIHJlbWFpbiBhcyBJIGRpZG4ndApjcmF3bCB0aHJvdWdoIHRoZSBlbnRp cmUgY29kZWJhc2UuCgpXaXRoIHRoYXQgY2F2ZWF0IGluIG1pbmQgdGhpcyBpcwpSZXZpZXdlZC1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gLS0g Cj4gMi43LjQKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=