From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH 18/31] drm/i915: Simplify request_alloc by returning the allocated request Date: Mon, 25 Jul 2016 12:18:45 +0300 Message-ID: <1469438325.5495.36.camel@linux.intel.com> References: <1469432687-22756-1-git-send-email-chris@chris-wilson.co.uk> <1469432687-22756-19-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 4D44B6E354 for ; Mon, 25 Jul 2016 09:18:48 +0000 (UTC) In-Reply-To: <1469432687-22756-19-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gbWEsIDIwMTYtMDctMjUgYXQgMDg6NDQgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJ ZiBpcyBzaW1wbGVyIGFuZCBsZWFkcyB0byBtb3JlIHJlYWRhYmxlIGNvZGUgdGhyb3VnaCB0aGUg Y2FsbHN0YWNrIGlmCj4gdGhlIGFsbG9jYXRpb24gcmV0dXJucyB0aGUgYWxsb2NhdGVkIHN0cnVj dCB0aHJvdWdoIHRoZSByZXR1cm4gdmFsdWUuCj4gCj4gVGhlIGltcG9ydGFuY2Ugb2YgdGhpcyBp cyB0aGF0IGl0IG5vIGxvbmdlciBsb29rcyBsaWtlIHdlIGFjY2lkZW50YWxseQo+IGFsbG9jYXRl IHJlcXVlc3RzIGFzIHNpZGUtZWZmZWN0IG9mIGNhbGxpbmcgY2VydGFpbiBmdW5jdGlvbnMuCj4g CgpEYXZlIHNlZW1zIHRvIGhhdmUgZXhwcmVzc2VkIHRvIHdpc2ggdG8gcmV2aWV3IHRoaXMgYXJv dW5kIEphbnVhcnksIHNvCkNDJ2luZyBoaW0gaGVyZS4KCkZyb20gbWUsCgpSZXZpZXdlZC1ieTog Sm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgoKPiBTaWdu ZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0K PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB8wqDCoDMgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB8IDc1ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IMKgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgMTIgKystLS0KPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuY8KgwqDCoMKgfCA1OCArKysrKysr Ky0tLS0tLS0tLS0tLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5owqDC oMKgwqDCoMKgwqDCoMKgwqB8IDEzICsrKy0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jwqDCoMKgwqDCoMKgwqB8IDM2ICsrKysrKy0tLS0tLS0tCj4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDIgKy0K PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuY8KgwqDCoMKgwqDCoMKgfCAy MCArKysrLS0tLQo+IMKgOCBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCAxNDAgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggMDllNzJiMDUxMGFi Li4xMDMxZjVhNzEyNmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzE3MSw4 ICszMTcxLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiDCoAo+IMKgaW50IF9fbXVzdF9jaGVj ayBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK PiDCoGludCBpOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+IC0JCQnCoHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnRvLAo+IC0JCQnCoHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqKnRvX3JlcSk7Cj4gKwkJCcKgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICp0byk7Cj4gwqB2b2lkIGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBp OTE1X3ZtYSAqdm1hLAo+IMKgCQkJwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxKTsKPiDCoGludCBpOTE1X2dlbV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCA1OTg5MGY1MjNjNWYuLmI2 YzRmZjYzNzI1ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0yODQ1LDUxICsy ODQ1LDM1IEBAIG91dDoKPiDCoAo+IMKgc3RhdGljIGludAo+IMKgX19pOTE1X2dlbV9vYmplY3Rf c3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0JCcKgwqDCoMKgwqDCoMKg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqdG8sCj4gLQkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKmZyb21fcmVxLAo+IC0JCcKgwqDCoMKgwqDCoMKgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICoqdG9fcmVxKQo+ICsJCcKgwqDCoMKgwqDCoMKgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICp0bywKPiArCQnCoMKgwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqZnJvbSkKPiDCoHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmZy b207Cj4gwqAJaW50IHJldDsKPiDCoAo+IC0JZnJvbSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2Vu Z2luZShmcm9tX3JlcSk7Cj4gLQlpZiAodG8gPT0gZnJvbSkKPiArCWlmICh0by0+ZW5naW5lID09 IGZyb20tPmVuZ2luZSkKPiDCoAkJcmV0dXJuIDA7Cj4gwqAKPiAtCWlmIChpOTE1X2dlbV9yZXF1 ZXN0X2NvbXBsZXRlZChmcm9tX3JlcSkpCj4gKwlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0 ZWQoZnJvbSkpCj4gwqAJCXJldHVybiAwOwo+IMKgCj4gwqAJaWYgKCFpOTE1LnNlbWFwaG9yZXMp IHsKPiAtCQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNl LmRldik7Cj4gLQkJcmV0ID0gX19pOTE1X3dhaXRfcmVxdWVzdChmcm9tX3JlcSwKPiAtCQkJCQnC oMKgaTkxNS0+bW0uaW50ZXJydXB0aWJsZSwKPiArCQlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0 KGZyb20sCj4gKwkJCQkJwqDCoGZyb20tPmk5MTUtPm1tLmludGVycnVwdGlibGUsCj4gwqAJCQkJ CcKgwqBOVUxMLAo+IMKgCQkJCQnCoMKgTk9fV0FJVEJPT1NUKTsKPiDCoAkJaWYgKHJldCkKPiDC oAkJCXJldHVybiByZXQ7Cj4gwqAKPiAtCQlpOTE1X2dlbV9vYmplY3RfcmV0aXJlX3JlcXVlc3Qo b2JqLCBmcm9tX3JlcSk7Cj4gKwkJaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9yZXF1ZXN0KG9iaiwg ZnJvbSk7Cj4gwqAJfSBlbHNlIHsKPiAtCQlpbnQgaWR4ID0gaW50ZWxfZW5naW5lX3N5bmNfaW5k ZXgoZnJvbSwgdG8pOwo+IC0JCXUzMiBzZXFubyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5v KGZyb21fcmVxKTsKPiArCQlpbnQgaWR4ID0gaW50ZWxfZW5naW5lX3N5bmNfaW5kZXgoZnJvbS0+ ZW5naW5lLCB0by0+ZW5naW5lKTsKPiArCQl1MzIgc2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dl dF9zZXFubyhmcm9tKTsKPiDCoAo+IC0JCVdBUk5fT04oIXRvX3JlcSk7Cj4gLQo+IC0JCWlmIChz ZXFubyA8PSBmcm9tLT5zZW1hcGhvcmUuc3luY19zZXFub1tpZHhdKQo+ICsJCWlmIChzZXFubyA8 PSBmcm9tLT5lbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3NlcW5vW2lkeF0pCj4gwqAJCQlyZXR1cm4g MDsKPiDCoAo+IC0JCWlmICgqdG9fcmVxID09IE5VTEwpIHsKPiAtCQkJc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gLQo+IC0JCQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9j KHRvLCBOVUxMKTsKPiAtCQkJaWYgKElTX0VSUihyZXEpKQo+IC0JCQkJcmV0dXJuIFBUUl9FUlIo cmVxKTsKPiAtCj4gLQkJCSp0b19yZXEgPSByZXE7Cj4gLQkJfQo+IC0KPiAtCQl0cmFjZV9pOTE1 X2dlbV9yaW5nX3N5bmNfdG8oKnRvX3JlcSwgZnJvbSwgZnJvbV9yZXEpOwo+IC0JCXJldCA9IHRv LT5zZW1hcGhvcmUuc3luY190bygqdG9fcmVxLCBmcm9tLCBzZXFubyk7Cj4gKwkJdHJhY2VfaTkx NV9nZW1fcmluZ19zeW5jX3RvKHRvLCBmcm9tKTsKPiArCQlyZXQgPSB0by0+ZW5naW5lLT5zZW1h cGhvcmUuc3luY190byh0bywgZnJvbS0+ZW5naW5lLCBzZXFubyk7Cj4gwqAJCWlmIChyZXQpCj4g wqAJCQlyZXR1cm4gcmV0Owo+IMKgCj4gQEAgLTI4OTcsOCArMjg4MSw4IEBAIF9faTkxNV9nZW1f b2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiDCoAkJwqAqIG1p Z2h0IGhhdmUganVzdCBjYXVzZWQgc2Vxbm8gd3JhcCB1bmRlcgo+IMKgCQnCoCogdGhlIHJhZGFy Lgo+IMKgCQnCoCovCj4gLQkJZnJvbS0+c2VtYXBob3JlLnN5bmNfc2Vxbm9baWR4XSA9Cj4gLQkJ CWk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9yZWFkX3JlcVtmcm9tLT5pZF0p Owo+ICsJCWZyb20tPmVuZ2luZS0+c2VtYXBob3JlLnN5bmNfc2Vxbm9baWR4XSA9Cj4gKwkJCWk5 MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9yZWFkX3JlcVtmcm9tLT5lbmdpbmUt PmlkXSk7Cj4gwqAJfQo+IMKgCj4gwqAJcmV0dXJuIDA7Cj4gQEAgLTI5MDgsMTcgKzI4OTIsMTIg QEAgX19pOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAo+IMKgICogaTkxNV9nZW1fb2JqZWN0X3N5bmMgLSBzeW5jIGFuIG9iamVjdCB0byBhIHJpbmcu Cj4gwqAgKgo+IMKgICogQG9iajogb2JqZWN0IHdoaWNoIG1heSBiZSBpbiB1c2Ugb24gYW5vdGhl ciByaW5nLgo+IC0gKiBAdG86IHJpbmcgd2Ugd2lzaCB0byB1c2UgdGhlIG9iamVjdCBvbi4gTWF5 IGJlIE5VTEwuCj4gLSAqIEB0b19yZXE6IHJlcXVlc3Qgd2Ugd2lzaCB0byB1c2UgdGhlIG9iamVj dCBmb3IuIFNlZSBiZWxvdy4KPiAtICrCoMKgwqDCoMKgwqDCoMKgwqDCoFRoaXMgd2lsbCBiZSBh bGxvY2F0ZWQgYW5kIHJldHVybmVkIGlmIGEgcmVxdWVzdCBpcwo+IC0gKsKgwqDCoMKgwqDCoMKg wqDCoMKgcmVxdWlyZWQgYnV0IG5vdCBwYXNzZWQgaW4uCj4gKyAqIEB0bzogcmVxdWVzdCB3ZSBh cmUgd2lzaGluZyB0byB1c2UKPiDCoCAqCj4gwqAgKiBUaGlzIGNvZGUgaXMgbWVhbnQgdG8gYWJz dHJhY3Qgb2JqZWN0IHN5bmNocm9uaXphdGlvbiB3aXRoIHRoZSBHUFUuCj4gLSAqIENhbGxpbmcg d2l0aCBOVUxMIGltcGxpZXMgc3luY2hyb25pemluZyB0aGUgb2JqZWN0IHdpdGggdGhlIENQVQo+ IC0gKiByYXRoZXIgdGhhbiBhIHBhcnRpY3VsYXIgR1BVIHJpbmcuIENvbmNlcHR1YWxseSB3ZSBz ZXJpYWxpc2Ugd3JpdGVzCj4gLSAqIGJldHdlZW4gZW5naW5lcyBpbnNpZGUgdGhlIEdQVS4gV2Ug b25seSBhbGxvdyBvbmUgZW5naW5lIHRvIHdyaXRlCj4gLSAqIGludG8gYSBidWZmZXIgYXQgYW55 IHRpbWUsIGJ1dCBtdWx0aXBsZSByZWFkZXJzLiBUbyBlbnN1cmUgZWFjaCBoYXMKPiAtICogYSBj b2hlcmVudCB2aWV3IG9mIG1lbW9yeSwgd2UgbXVzdDoKPiArICogQ29uY2VwdHVhbGx5IHdlIHNl cmlhbGlzZSB3cml0ZXMgYmV0d2VlbiBlbmdpbmVzIGluc2lkZSB0aGUgR1BVLgo+ICsgKiBXZSBv bmx5IGFsbG93IG9uZSBlbmdpbmUgdG8gd3JpdGUgaW50byBhIGJ1ZmZlciBhdCBhbnkgdGltZSwg YnV0Cj4gKyAqIG11bHRpcGxlIHJlYWRlcnMuIFRvIGVuc3VyZSBlYWNoIGhhcyBhIGNvaGVyZW50 IHZpZXcgb2YgbWVtb3J5LCB3ZSBtdXN0Ogo+IMKgICoKPiDCoCAqIC0gSWYgdGhlcmUgaXMgYW4g b3V0c3RhbmRpbmcgd3JpdGUgcmVxdWVzdCB0byB0aGUgb2JqZWN0LCB0aGUgbmV3Cj4gwqAgKsKg wqDCoHJlcXVlc3QgbXVzdCB3YWl0IGZvciBpdCB0byBjb21wbGV0ZSAoZWl0aGVyIENQVSBvciBp biBodywgcmVxdWVzdHMKPiBAQCAtMjkyNywyMiArMjkwNiwxMSBAQCBfX2k5MTVfZ2VtX29iamVj dF9zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gwqAgKiAtIElmIHdlIGFy ZSBhIHdyaXRlIHJlcXVlc3QgKHBlbmRpbmdfd3JpdGVfZG9tYWluIGlzIHNldCksIHRoZSBuZXcK PiDCoCAqwqDCoMKgcmVxdWVzdCBtdXN0IHdhaXQgZm9yIG91dHN0YW5kaW5nIHJlYWQgcmVxdWVz dHMgdG8gY29tcGxldGUuCj4gwqAgKgo+IC0gKiBGb3IgQ1BVIHN5bmNocm9uaXNhdGlvbiAoTlVM TCB0bykgbm8gcmVxdWVzdCBpcyByZXF1aXJlZC4gRm9yIHN5bmNpbmcgd2l0aAo+IC0gKiByaW5n cyB0b19yZXEgbXVzdCBiZSBub24tTlVMTC4gSG93ZXZlciwgYSByZXF1ZXN0IGRvZXMgbm90IGhh dmUgdG8gYmUKPiAtICogcHJlLWFsbG9jYXRlZC4gSWYgKnRvX3JlcSBpcyBOVUxMIGFuZCBzeW5j IGNvbW1hbmRzIHdpbGwgYmUgZW1pdHRlZCB0aGVuIGEKPiAtICogcmVxdWVzdCB3aWxsIGJlIGFs bG9jYXRlZCBhdXRvbWF0aWNhbGx5IGFuZCByZXR1cm5lZCB0aHJvdWdoICp0b19yZXEuIE5vdGUK PiAtICogdGhhdCBpdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0IGNvbW1hbmRzIHdpbGwgYmUgZW1p dHRlZCAoYmVjYXVzZSB0aGUgc3lzdGVtCj4gLSAqIG1pZ2h0IGFscmVhZHkgYmUgaWRsZSkuIEhl bmNlIHRoZXJlIGlzIG5vIG5lZWQgdG8gY3JlYXRlIGEgcmVxdWVzdCB0aGF0Cj4gLSAqIG1pZ2h0 IG5ldmVyIGhhdmUgYW55IHdvcmsgc3VibWl0dGVkLiBOb3RlIGZ1cnRoZXIgdGhhdCBpZiBhIHJl cXVlc3QgaXMKPiAtICogcmV0dXJuZWQgaW4gKnRvX3JlcSwgaXQgaXMgdGhlIHJlc3BvbnNpYmls aXR5IG9mIHRoZSBjYWxsZXIgdG8gc3VibWl0Cj4gLSAqIHRoYXQgcmVxdWVzdCAoYWZ0ZXIgcG90 ZW50aWFsbHkgYWRkaW5nIG1vcmUgd29yayB0byBpdCkuCj4gLSAqCj4gwqAgKiBSZXR1cm5zIDAg aWYgc3VjY2Vzc2Z1bCwgZWxzZSBwcm9wYWdhdGVzIHVwIHRoZSBsb3dlciBsYXllciBlcnJvci4K PiDCoCAqLwo+IMKgaW50Cj4gwqBpOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAo+IC0JCcKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp0 bywKPiAtCQnCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqdG9fcmVxKQo+ ICsJCcKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnRvKQo+IMKgewo+IMKg CWNvbnN0IGJvb2wgcmVhZG9ubHkgPSBvYmotPmJhc2UucGVuZGluZ193cml0ZV9kb21haW4gPT0g MDsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcVtJOTE1X05VTV9FTkdJTkVT XTsKPiBAQCAtMjk1MSw5ICsyOTE5LDYgQEAgaTkxNV9nZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiDCoAlpZiAoIW9iai0+YWN0aXZlKQo+IMKgCQlyZXR1 cm4gMDsKPiDCoAo+IC0JaWYgKHRvID09IE5VTEwpCj4gLQkJcmV0dXJuIGk5MTVfZ2VtX29iamVj dF93YWl0X3JlbmRlcmluZyhvYmosIHJlYWRvbmx5KTsKPiAtCj4gwqAJbiA9IDA7Cj4gwqAJaWYg KHJlYWRvbmx5KSB7Cj4gwqAJCWlmIChvYmotPmxhc3Rfd3JpdGVfcmVxKQo+IEBAIC0yOTY0LDcg KzI5MjksNyBAQCBpOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+IMKgCQkJCXJlcVtuKytdID0gb2JqLT5sYXN0X3JlYWRfcmVxW2ldOwo+IMKgCX0K PiDCoAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Cj4gLQkJcmV0ID0gX19pOTE1X2dlbV9vYmpl Y3Rfc3luYyhvYmosIHRvLCByZXFbaV0sIHRvX3JlcSk7Cj4gKwkJcmV0ID0gX19pOTE1X2dlbV9v YmplY3Rfc3luYyhvYmosIHRvLCByZXFbaV0pOwo+IMKgCQlpZiAocmV0KQo+IMKgCQkJcmV0dXJu IHJldDsKPiDCoAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIu Ywo+IGluZGV4IDA0ODA1MDE3NmZmOS4uNzVkMTk5MzI4NDdkIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC05ODEsNyArOTgxLDcgQEAgaTkx NV9nZW1fZXhlY2J1ZmZlcl9tb3ZlX3RvX2dwdShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKPiDCoAkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOwo+ IMKgCj4gwqAJCWlmIChvYmotPmFjdGl2ZSAmIG90aGVyX3JpbmdzKSB7Cj4gLQkJCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgcmVxLT5lbmdpbmUsICZyZXEpOwo+ICsJCQlyZXQgPSBp OTE1X2dlbV9vYmplY3Rfc3luYyhvYmosIHJlcSk7Cj4gwqAJCQlpZiAocmV0KQo+IMKgCQkJCXJl dHVybiByZXQ7Cj4gwqAJCX0KPiBAQCAtMTQyNyw3ICsxNDI3LDYgQEAgaTkxNV9nZW1fZG9fZXhl Y2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+IMKgewo+IMKgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiDCoAlzdHJ1 Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gJmRldl9wcml2LT5nZ3R0Owo+IC0Jc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEgPSBOVUxMOwo+IMKgCXN0cnVjdCBlYl92bWFzICplYjsKPiDCoAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYmF0Y2hfb2JqOwo+IMKgCXN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY19vYmplY3QyIHNoYWRvd19leGVjX2VudHJ5Owo+IEBAIC0xNjE1LDEzICsxNjE0 LDEzIEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKPiDCoAkJcGFyYW1zLT5iYXRjaF9vYmpfdm1fb2Zmc2V0ID0gaTkxNV9nZW1fb2Jq X29mZnNldChiYXRjaF9vYmosIHZtKTsKPiDCoAo+IMKgCS8qIEFsbG9jYXRlIGEgcmVxdWVzdCBm b3IgdGhpcyBiYXRjaCBidWZmZXIgbmljZSBhbmQgZWFybHkuICovCj4gLQlyZXEgPSBpOTE1X2dl bV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKPiAtCWlmIChJU19FUlIocmVxKSkgewo+IC0J CXJldCA9IFBUUl9FUlIocmVxKTsKPiArCXBhcmFtcy0+cmVxdWVzdCA9IGk5MTVfZ2VtX3JlcXVl c3RfYWxsb2MoZW5naW5lLCBjdHgpOwo+ICsJaWYgKElTX0VSUihwYXJhbXMtPnJlcXVlc3QpKSB7 Cj4gKwkJcmV0ID0gUFRSX0VSUihwYXJhbXMtPnJlcXVlc3QpOwo+IMKgCQlnb3RvIGVycl9iYXRj aF91bnBpbjsKPiDCoAl9Cj4gwqAKPiAtCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWRkX3RvX2Ns aWVudChyZXEsIGZpbGUpOwo+ICsJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hZGRfdG9fY2xpZW50 KHBhcmFtcy0+cmVxdWVzdCwgZmlsZSk7Cj4gwqAJaWYgKHJldCkKPiDCoAkJZ290byBlcnJfcmVx dWVzdDsKPiDCoAo+IEBAIC0xNjM3LDcgKzE2MzYsNiBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gwqAJcGFyYW1zLT5kaXNwYXRj aF9mbGFnc8KgwqDCoMKgwqDCoMKgwqDCoMKgPSBkaXNwYXRjaF9mbGFnczsKPiDCoAlwYXJhbXMt PmJhdGNoX29iasKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gYmF0Y2hfb2JqOwo+IMKg CXBhcmFtcy0+Y3R4wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBj dHg7Cj4gLQlwYXJhbXMtPnJlcXVlc3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg PSByZXE7Cj4gwqAKPiDCoAlyZXQgPSBkZXZfcHJpdi0+Z3QuZXhlY2J1Zl9zdWJtaXQocGFyYW1z LCBhcmdzLCAmZWItPnZtYXMpOwo+IMKgZXJyX3JlcXVlc3Q6Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IGluZGV4IDdiNzcyZDkxNGUyMy4uOTk1YWU5OWU5Y2Y3IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IEBAIC0yOTIsMTAg KzI5MiwyMSBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX2dldF9zZXFubyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiAqc2Vxbm8pCj4gwqAJcmV0dXJuIDA7Cj4gwqB9Cj4gwqAK PiAtc3RhdGljIGlubGluZSBpbnQKPiAtX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAtCQkJwqBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4LAo+IC0JCQnCoHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKnJlcV9vdXQpCj4gKy8q Kgo+ICsgKiBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jIC0gYWxsb2NhdGUgYSByZXF1ZXN0IHN0cnVj dHVyZQo+ICsgKgo+ICsgKiBAZW5naW5lOiBlbmdpbmUgdGhhdCB3ZSB3aXNoIHRvIGlzc3VlIHRo ZSByZXF1ZXN0IG9uLgo+ICsgKiBAY3R4OiBjb250ZXh0IHRoYXQgdGhlIHJlcXVlc3Qgd2lsbCBi ZSBhc3NvY2lhdGVkIHdpdGguCj4gKyAqwqDCoMKgwqDCoMKgwqBUaGlzIGNhbiBiZSBOVUxMIGlm IHRoZSByZXF1ZXN0IGlzIG5vdCBkaXJlY3RseSByZWxhdGVkIHRvCj4gKyAqwqDCoMKgwqDCoMKg wqBhbnkgc3BlY2lmaWMgdXNlciBjb250ZXh0LCBpbiB3aGljaCBjYXNlIHRoaXMgZnVuY3Rpb24g d2lsbAo+ICsgKsKgwqDCoMKgwqDCoMKgY2hvb3NlIGFuIGFwcHJvcHJpYXRlIGNvbnRleHQgdG8g dXNlLgo+ICsgKgo+ICsgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgYWxsb2NhdGVkIHJlcXVl c3QgaWYgc3VjY2Vzc2Z1bCwKPiArICogb3IgYW4gZXJyb3IgY29kZSBpZiBub3QuCj4gKyAqLwo+ ICtzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgo+ICtpOTE1X2dlbV9yZXF1ZXN0X2FsbG9j KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiArCQnCoMKgwqDCoMKgwqDCoHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+IMKgCXVuc2lnbmVkIGludCByZXNldF9jb3Vu dGVyID0gaTkxNV9yZXNldF9jb3VudGVyKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKTsKPiBAQCAtMzAz LDE4ICszMTQsMTMgQEAgX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKPiDCoAl1MzIgc2Vxbm87Cj4gwqAJaW50IHJldDsKPiDCoAo+IC0JaWYg KCFyZXFfb3V0KQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCSpyZXFfb3V0ID0gTlVMTDsK PiAtCj4gwqAJLyogQUJJOiBCZWZvcmUgdXNlcnNwYWNlIGFjY2Vzc2VzIHRoZSBHUFUgKGUuZy4g ZXhlY2J1ZmZlciksIHJlcG9ydAo+IMKgCcKgKiBFSU8gaWYgdGhlIEdQVSBpcyBhbHJlYWR5IHdl ZGdlZCwgb3IgRUFHQUlOIHRvIGRyb3AgdGhlIHN0cnVjdF9tdXRleAo+IMKgCcKgKiBhbmQgcmVz dGFydC4KPiDCoAnCoCovCj4gwqAJcmV0ID0gaTkxNV9nZW1fY2hlY2tfd2VkZ2UocmVzZXRfY291 bnRlciwgZGV2X3ByaXYtPm1tLmludGVycnVwdGlibGUpOwo+IMKgCWlmIChyZXQpCj4gLQkJcmV0 dXJuIHJldDsKPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+IMKgCj4gwqAJLyogTW92ZSB0aGUg b2xkZXN0IHJlcXVlc3QgdG8gdGhlIHNsYWItY2FjaGUgKGlmIG5vdCBpbiB1c2UhKSAqLwo+IMKg CXJlcSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZW5naW5lLT5yZXF1ZXN0X2xpc3QsCj4g QEAgLTMyNCw3ICszMzAsNyBAQCBfX2k5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAo+IMKgCj4gwqAJcmVxID0ga21lbV9jYWNoZV96YWxsb2MoZGV2 X3ByaXYtPnJlcXVlc3RzLCBHRlBfS0VSTkVMKTsKPiDCoAlpZiAoIXJlcSkKPiAtCQlyZXR1cm4g LUVOT01FTTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiDCoAo+IMKgCXJldCA9IGk5 MTVfZ2VtX2dldF9zZXFubyhkZXZfcHJpdiwgJnNlcW5vKTsKPiDCoAlpZiAocmV0KQo+IEBAIC0z NTcsMzkgKzM2MywxMyBAQCBfX2k5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAo+IMKgCWlmIChyZXQpCj4gwqAJCWdvdG8gZXJyX2N0eDsKPiDCoAo+ IC0JKnJlcV9vdXQgPSByZXE7Cj4gLQlyZXR1cm4gMDsKPiArCXJldHVybiByZXE7Cj4gwqAKPiDC oGVycl9jdHg6Cj4gwqAJaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsKPiDCoGVycjoKPiDCoAlr bWVtX2NhY2hlX2ZyZWUoZGV2X3ByaXYtPnJlcXVlc3RzLCByZXEpOwo+IC0JcmV0dXJuIHJldDsK PiAtfQo+IC0KPiAtLyoqCj4gLSAqIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MgLSBhbGxvY2F0ZSBh IHJlcXVlc3Qgc3RydWN0dXJlCj4gLSAqCj4gLSAqIEBlbmdpbmU6IGVuZ2luZSB0aGF0IHdlIHdp c2ggdG8gaXNzdWUgdGhlIHJlcXVlc3Qgb24uCj4gLSAqIEBjdHg6IGNvbnRleHQgdGhhdCB0aGUg cmVxdWVzdCB3aWxsIGJlIGFzc29jaWF0ZWQgd2l0aC4KPiAtICrCoMKgwqDCoMKgwqDCoFRoaXMg Y2FuIGJlIE5VTEwgaWYgdGhlIHJlcXVlc3QgaXMgbm90IGRpcmVjdGx5IHJlbGF0ZWQgdG8KPiAt ICrCoMKgwqDCoMKgwqDCoGFueSBzcGVjaWZpYyB1c2VyIGNvbnRleHQsIGluIHdoaWNoIGNhc2Ug dGhpcyBmdW5jdGlvbiB3aWxsCj4gLSAqwqDCoMKgwqDCoMKgwqBjaG9vc2UgYW4gYXBwcm9wcmlh dGUgY29udGV4dCB0byB1c2UuCj4gLSAqCj4gLSAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBh bGxvY2F0ZWQgcmVxdWVzdCBpZiBzdWNjZXNzZnVsLAo+IC0gKiBvciBhbiBlcnJvciBjb2RlIGlm IG5vdC4KPiAtICovCj4gLXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4gLWk5MTVfZ2Vt X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+IC0JCcKgwqDC oMKgwqDCoMKgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAtewo+IC0Jc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gLQlpbnQgZXJyOwo+IC0KPiAtCWlmICghY3R4KQo+ IC0JCWN0eCA9IGVuZ2luZS0+aTkxNS0+a2VybmVsX2NvbnRleHQ7Cj4gLQllcnIgPSBfX2k5MTVf Z2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgsICZyZXEpOwo+IC0JcmV0dXJuIGVyciA/IEVS Ul9QVFIoZXJyKSA6IHJlcTsKPiArCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gwqB9Cj4gwqAKPiDC oHN0YXRpYyB2b2lkIGk5MTVfZ2VtX21hcmtfYnVzeShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJh Y2UuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaAo+IGluZGV4IDAwNzExMmQx ZTA0OS4uOWU0M2MwYWE2ZTNiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdHJhY2UuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaAo+IEBA IC00NDksMTAgKzQ0OSw5IEBAIFRSQUNFX0VWRU5UKGk5MTVfZ2VtX2V2aWN0X3ZtLAo+IMKgKTsK PiDCoAo+IMKgVFJBQ0VfRVZFTlQoaTkxNV9nZW1fcmluZ19zeW5jX3RvLAo+IC0JwqDCoMKgwqBU UF9QUk9UTyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnRvX3JlcSwKPiAtCQnCoMKgwqDC oMKgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZnJvbSwKPiAtCQnCoMKgwqDCoMKgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpLAo+IC0JwqDCoMKgwqBUUF9BUkdTKHRvX3JlcSwgZnJv bSwgcmVxKSwKPiArCcKgwqDCoMKgVFBfUFJPVE8oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICp0bywKPiArCQnCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpmcm9tKSwK PiArCcKgwqDCoMKgVFBfQVJHUyh0bywgZnJvbSksCj4gwqAKPiDCoAnCoMKgwqDCoFRQX1NUUlVD VF9fZW50cnkoCj4gwqAJCQnCoMKgwqDCoMKgX19maWVsZCh1MzIsIGRldikKPiBAQCAtNDYzLDkg KzQ2Miw5IEBAIFRSQUNFX0VWRU5UKGk5MTVfZ2VtX3Jpbmdfc3luY190bywKPiDCoAo+IMKgCcKg wqDCoMKgVFBfZmFzdF9hc3NpZ24oCj4gwqAJCQnCoMKgwqBfX2VudHJ5LT5kZXYgPSBmcm9tLT5p OTE1LT5kcm0ucHJpbWFyeS0+aW5kZXg7Cj4gLQkJCcKgwqDCoF9fZW50cnktPnN5bmNfZnJvbSA9 IGZyb20tPmlkOwo+IC0JCQnCoMKgwqBfX2VudHJ5LT5zeW5jX3RvID0gdG9fcmVxLT5lbmdpbmUt PmlkOwo+IC0JCQnCoMKgwqBfX2VudHJ5LT5zZXFubyA9IHJlcS0+ZmVuY2Uuc2Vxbm87Cj4gKwkJ CcKgwqDCoF9fZW50cnktPnN5bmNfZnJvbSA9IGZyb20tPmVuZ2luZS0+aWQ7Cj4gKwkJCcKgwqDC oF9fZW50cnktPnN5bmNfdG8gPSB0by0+ZW5naW5lLT5pZDsKPiArCQkJwqDCoMKgX19lbnRyeS0+ c2Vxbm8gPSBmcm9tLT5mZW5jZS5zZXFubzsKPiDCoAkJCcKgwqDCoCksCj4gwqAKPiDCoAnCoMKg wqDCoFRQX3ByaW50aygiZGV2PSV1LCBzeW5jLWZyb209JXUsIHN5bmMtdG89JXUsIHNlcW5vPSV1 IiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggYmZmMTcyYzQ1ZmY3 Li41ZDQ0MjBiNjc2NDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g QEAgLTExNTgzLDcgKzExNTgzLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gwqAJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yazsK PiDCoAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gwqAJYm9vbCBtbWlvX2ZsaXA7 Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QgPSBOVUxMOwo+ICsJc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Owo+IMKgCWludCByZXQ7Cj4gwqAKPiDC oAkvKgo+IEBAIC0xMTY5MCwyMiArMTE2OTAsNiBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFn ZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiDCoAo+IMKgCW1taW9fZmxpcCA9IHVzZV9t bWlvX2ZsaXAoZW5naW5lLCBvYmopOwo+IMKgCj4gLQkvKiBXaGVuIHVzaW5nIENTIGZsaXBzLCB3 ZSB3YW50IHRvIGVtaXQgc2VtYXBob3JlcyBiZXR3ZWVuIHJpbmdzLgo+IC0JwqAqIEhvd2V2ZXIs IHdoZW4gdXNpbmcgbW1pbyBmbGlwcyB3ZSB3aWxsIGNyZWF0ZSBhIHRhc2sgdG8gZG8gdGhlCj4g LQnCoCogc3luY2hyb25pc2F0aW9uLCBzbyBhbGwgd2Ugd2FudCBoZXJlIGlzIHRvIHBpbiB0aGUg ZnJhbWVidWZmZXIKPiAtCcKgKiBpbnRvIHRoZSBkaXNwbGF5IHBsYW5lIGFuZCBza2lwIGFueSB3 YWl0cy4KPiAtCcKgKi8KPiAtCWlmICghbW1pb19mbGlwKSB7Cj4gLQkJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3N5bmMob2JqLCBlbmdpbmUsICZyZXF1ZXN0KTsKPiAtCQlpZiAoIXJldCAmJiAhcmVx dWVzdCkgewo+IC0JCQlyZXF1ZXN0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIE5V TEwpOwo+IC0JCQlyZXQgPSBQVFJfRVJSX09SX1pFUk8ocmVxdWVzdCk7Cj4gLQkJfQo+IC0KPiAt CQlpZiAocmV0KQo+IC0JCQlnb3RvIGNsZWFudXBfcGVuZGluZzsKPiAtCX0KPiAtCj4gwqAJcmV0 ID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooZmIsIHByaW1hcnktPnN0YXRlLT5yb3RhdGlv bik7Cj4gwqAJaWYgKHJldCkKPiDCoAkJZ290byBjbGVhbnVwX3BlbmRpbmc7Cj4gQEAgLTExNzIz LDE0ICsxMTcwNywyNCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiDCoAo+IMKgCQlzY2hlZHVsZV93b3JrKCZ3b3JrLT5tbWlvX3dvcmsp Owo+IMKgCX0gZWxzZSB7Cj4gLQkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJndvcmstPmZsaXBf cXVldWVkX3JlcSwgcmVxdWVzdCk7Cj4gKwkJcmVxdWVzdCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxs b2MoZW5naW5lLCBlbmdpbmUtPmxhc3RfY29udGV4dCk7Cj4gKwkJaWYgKElTX0VSUihyZXF1ZXN0 KSkgewo+ICsJCQlyZXQgPSBQVFJfRVJSKHJlcXVlc3QpOwo+ICsJCQlnb3RvIGNsZWFudXBfdW5w aW47Cj4gKwkJfQo+ICsKPiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc3luYyhvYmosIHJlcXVl c3QpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gY2xlYW51cF9yZXF1ZXN0Owo+ICsKPiDCoAkJ cmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkucXVldWVfZmxpcChkZXYsIGNydGMsIGZiLCBvYmosIHJl cXVlc3QsCj4gwqAJCQkJCQnCoMKgwqBwYWdlX2ZsaXBfZmxhZ3MpOwo+IMKgCQlpZiAocmV0KQo+ IC0JCQlnb3RvIGNsZWFudXBfdW5waW47Cj4gKwkJCWdvdG8gY2xlYW51cF9yZXF1ZXN0Owo+IMKg Cj4gwqAJCWludGVsX21hcmtfcGFnZV9mbGlwX2FjdGl2ZShpbnRlbF9jcnRjLCB3b3JrKTsKPiDC oAo+ICsJCXdvcmstPmZsaXBfcXVldWVkX3JlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0KHJlcXVl c3QpOwo+IMKgCQlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcXVlc3QpOwo+IMKgCX0KPiDC oAo+IEBAIC0xMTc0NSwxMSArMTE3MzksMTEgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2Vf ZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gwqAKPiDCoAlyZXR1cm4gMDsKPiDCoAo+ICtj bGVhbnVwX3JlcXVlc3Q6Cj4gKwlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcXVlc3QpOwo+ IMKgY2xlYW51cF91bnBpbjoKPiDCoAlpbnRlbF91bnBpbl9mYl9vYmooZmIsIGNydGMtPnByaW1h cnktPnN0YXRlLT5yb3RhdGlvbik7Cj4gwqBjbGVhbnVwX3BlbmRpbmc6Cj4gLQlpZiAoIUlTX0VS Ul9PUl9OVUxMKHJlcXVlc3QpKQo+IC0JCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxdWVz dCk7Cj4gwqAJYXRvbWljX2RlYygmaW50ZWxfY3J0Yy0+dW5waW5fd29ya19jb3VudCk7Cj4gwqAJ bXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gwqBjbGVhbnVwOgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCj4gaW5kZXggNjQ4Nzc5NGFjOTZjLi5hMzdhZjE1MzM2MTggMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC02NTUsNyArNjU1LDcgQEAgc3RhdGljIGlu dCBleGVjbGlzdHNfbW92ZV90b19ncHUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs Cj4gwqAJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKPiDCoAo+ IMKgCQlpZiAob2JqLT5hY3RpdmUgJiBvdGhlcl9yaW5ncykgewo+IC0JCQlyZXQgPSBpOTE1X2dl bV9vYmplY3Rfc3luYyhvYmosIHJlcS0+ZW5naW5lLCAmcmVxKTsKPiArCQkJcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X3N5bmMob2JqLCByZXEpOwo+IMKgCQkJaWYgKHJldCkKPiDCoAkJCQlyZXR1cm4g cmV0Owo+IMKgCQl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292 ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+IGluZGV4IDhm MWQ0ZDllZjM0NS4uNjUxZWZlNGU0NjhlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292 ZXJsYXkuYwo+IEBAIC0yMjksMTEgKzIyOSwxOCBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlf ZG9fd2FpdF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAo+IMKgCXJldHVy biAwOwo+IMKgfQo+IMKgCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmFs bG9jX3JlcXVlc3Qoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gK3sKPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG92ZXJsYXktPmk5MTU7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSAmZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwo+ICsKPiAr CXJldHVybiBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgZGV2X3ByaXYtPmtlcm5lbF9j b250ZXh0KTsKPiArfQo+ICsKPiDCoC8qIG92ZXJsYXkgbmVlZHMgdG8gYmUgZGlzYWJsZSBpbiBP Q01EIHJlZyAqLwo+IMKgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29uKHN0cnVjdCBpbnRlbF9v dmVybGF5ICpvdmVybGF5KQo+IMKgewo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IG92ZXJsYXktPmk5MTU7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSAmZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwo+IMKgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxOwo+IMKgCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwo+IMKgCWludCByZXQ7Cj4gQEAg LTI0MSw3ICsyNDgsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0IGludGVs X292ZXJsYXkgKm92ZXJsYXkpCj4gwqAJV0FSTl9PTihvdmVybGF5LT5hY3RpdmUpOwo+IMKgCVdB Uk5fT04oSVNfSTgzMChkZXZfcHJpdikgJiYgIShkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQ RUFfRk9SQ0UpKTsKPiDCoAo+IC0JcmVxID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUs IE5VTEwpOwo+ICsJcmVxID0gYWxsb2NfcmVxdWVzdChvdmVybGF5KTsKPiDCoAlpZiAoSVNfRVJS KHJlcSkpCj4gwqAJCXJldHVybiBQVFJfRVJSKHJlcSk7Cj4gwqAKPiBAQCAtMjY4LDcgKzI3NSw2 IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9jb250aW51ZShzdHJ1Y3QgaW50ZWxfb3Zlcmxh eSAqb3ZlcmxheSwKPiDCoAkJCQnCoMKgYm9vbCBsb2FkX3BvbHlwaGFzZV9maWx0ZXIpCj4gwqB7 Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb3ZlcmxheS0+aTkxNTsK PiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9ICZkZXZfcHJpdi0+ZW5naW5lW1JD U107Cj4gwqAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gwqAJc3RydWN0IGlu dGVsX3JpbmcgKnJpbmc7Cj4gwqAJdTMyIGZsaXBfYWRkciA9IG92ZXJsYXktPmZsaXBfYWRkcjsK PiBAQCAtMjg1LDcgKzI5MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9jb250aW51ZShz dHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKPiDCoAlpZiAodG1wICYgKDEgPDwgMTcpKQo+ IMKgCQlEUk1fREVCVUcoIm92ZXJsYXkgdW5kZXJydW4sIERPVlNUQTogJXhcbiIsIHRtcCk7Cj4g wqAKPiAtCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBOVUxMKTsKPiArCXJl cSA9IGFsbG9jX3JlcXVlc3Qob3ZlcmxheSk7Cj4gwqAJaWYgKElTX0VSUihyZXEpKQo+IMKgCQly ZXR1cm4gUFRSX0VSUihyZXEpOwo+IMKgCj4gQEAgLTMzOCw3ICszNDQsNiBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9vdmVybGF5X29mZl90YWlsKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+ IMKgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29mZihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3Zl cmxheSkKPiDCoHsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvdmVy bGF5LT5pOTE1Owo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gJmRldl9wcml2 LT5lbmdpbmVbUkNTXTsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKPiDC oAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKPiDCoAl1MzIgZmxpcF9hZGRyID0gb3ZlcmxheS0+ ZmxpcF9hZGRyOwo+IEBAIC0zNTIsNyArMzU3LDcgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5 X29mZihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKPiDCoAnCoCogb2YgdGhlIGh3LiBE byBpdCBpbiBib3RoIGNhc2VzICovCj4gwqAJZmxpcF9hZGRyIHw9IE9GQ19VUERBVEU7Cj4gwqAK PiAtCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBOVUxMKTsKPiArCXJlcSA9 IGFsbG9jX3JlcXVlc3Qob3ZlcmxheSk7Cj4gwqAJaWYgKElTX0VSUihyZXEpKQo+IMKgCQlyZXR1 cm4gUFRSX0VSUihyZXEpOwo+IMKgCj4gQEAgLTQxMiw3ICs0MTcsNiBAQCBzdGF0aWMgaW50IGlu dGVsX292ZXJsYXlfcmVjb3Zlcl9mcm9tX2ludGVycnVwdChzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAq b3ZlcmxheSkKPiDCoHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92aWQoc3Ry dWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gb3ZlcmxheS0+aTkxNTsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSA9ICZkZXZfcHJpdi0+ZW5naW5lW1JDU107Cj4gwqAJaW50IHJldDsKPiDCoAo+ IMKgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiBA QCAtNDI4LDcgKzQzMiw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92 aWQoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gwqAJCXN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxOwo+IMKgCQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKPiDCoAo+IC0J CXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBOVUxMKTsKPiArCQlyZXEgPSBh bGxvY19yZXF1ZXN0KG92ZXJsYXkpOwo+IMKgCQlpZiAoSVNfRVJSKHJlcSkpCj4gwqAJCQlyZXR1 cm4gUFRSX0VSUihyZXEpOwo+IMKgCi0tIApKb29uYXMgTGFodGluZW4KT3BlbiBTb3VyY2UgVGVj aG5vbG9neSBDZW50ZXIKSW50ZWwgQ29ycG9yYXRpb24KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==