From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm: make drm_get_format_name thread-safe Date: Mon, 15 Aug 2016 12:54:01 +0300 Message-ID: <87eg5quzly.fsf@intel.com> References: <20160815000247.20063-1-eric@engestrom.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160815000247.20063-1-eric@engestrom.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: linux-kernel@vger.kernel.org Cc: Tom St Denis , Archit Taneja , David Airlie , intel-gfx@lists.freedesktop.org, Eric Engestrom , Michel =?utf-8?Q?D=C3=A4nzer?= , Wei Yongjun , dri-devel@lists.freedesktop.org, Junwei Zhang , Xinliang Liu , David Zhang , Xinwei Kong , Vitaly Prosyak , Alex Deucher , Daniel Vetter , Flora Cui , Gustavo Padovan , Christian =?utf-8?Q?K=C3=B6nig?= List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAxNSBBdWcgMjAxNiwgRXJpYyBFbmdlc3Ryb20gPGVyaWNAZW5nZXN0cm9tLmNoPiB3 cm90ZToKPiBTaWduZWQtb2ZmLWJ5OiBFcmljIEVuZ2VzdHJvbSA8ZXJpY0Blbmdlc3Ryb20uY2g+ Cj4gLS0tCj4KPiBJIG1vdmVkIHRoZSBtYWluIGJpdHMgdG8gYmUgdGhlIGZpcnN0IGRpZmZzLCBz aG91bGRuJ3QgYWZmZWN0IGFueXRoaW5nCj4gd2hlbiBhcHBseWluZyB0aGUgcGF0Y2gsIGJ1dCBJ IHdhbnRlZCB0byBhc2s6Cj4gSSBkb24ndCBsaWtlIHRoZSBoYXJkLWNvZGVkIGAzMmAgdGhlIGFw cGVhcnMgaW4gYm90aCBrbWFsbG9jKCkgYW5kCj4gc25wcmludGYoKSwgd2hhdCBkbyB5b3UgdGhp bms/IElmIHlvdSBkb24ndCBsaWtlIGl0IGVpdGhlciwgd2hhdCB3b3VsZAo+IHlvdSBzdWdnZXN0 PyBTaG91bGQgSSAjZGVmaW5lIGl0Pwo+Cj4gU2Vjb25kIHF1ZXN0aW9uIGlzIGFib3V0IHRoZSBw YXRjaCBtYWlsIGl0c2VsZjogc2hvdWxkIEkgc2VuZCB0aGlzIGtpbmQKPiBvZiBwYXRjaCBzZXBh cmF0ZWQgYnkgbW9kdWxlLCB3aXRoIGEgbm90ZSByZXF1ZXN0aW5nIHRoZW0gdG8gYmUgc3F1YXNo ZWQKPiB3aGVuIGFwcGx5aW5nPyBJdCBoYXMgdG8gbGFuZCBhcyBhIHNpbmdsZSBwYXRjaCwgYnV0 IGZvciByZXZpZXcgaXQgbWlnaHQKPiBiZSBlYXNpZXIgaWYgcGVvcGxlIG9ubHkgc2VlIHRoZSBi aXRzIHRoZXkgZWFjaCBjYXJlIGFib3V0LCBhcyB3ZWxsIGFzCj4gdG8gY29sbGVjdCBhY2sncy9y LWIncy4KPgo+IENoZWVycywKPiAgIEVyaWMKPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9kY2VfdjEwXzAuYyAgICAgICAgICB8ICA2ICsrLS0KPiAgZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvZGNlX3YxMV8wLmMgICAgICAgICAgfCAgNiArKy0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2RjZV92OF8wLmMgICAgICAgICAgIHwgIDYgKystLQo+ICBkcml2ZXJz L2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAgICAgICAgICAgICAgICB8ICA1ICsrLS0KPiAgZHJp dmVycy9ncHUvZHJtL2RybV9jcnRjLmMgICAgICAgICAgICAgICAgICAgICAgfCAyMSArKysrKysr Ky0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMgICAgICAgICAgICAgICAgICAg IHwgMTcgKysrKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJp bl9kcm1fYWRlLmMgfCAgNiArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jICAgICAgICAgICAgIHwgMTEgKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdG9taWNfcGxhbmUuYyAgICAgICB8ICA2ICsrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jICAgICAgICAgICAgfCAzOSArKysrKysrKysrKysrKysrLS0tLS0tLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vYXRvbWJpb3NfY3J0Yy5jICAgICAgICAgIHwgMTIg KysrKystLS0KPiAgaW5jbHVkZS9kcm0vZHJtX2ZvdXJjYy5oICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMiArLQo+ICAxMiBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCspLCA0OCBkZWxl dGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvdXJjYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYwo+IGluZGV4IDA2NDVjODUuLjM4MjE2YTEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZm91cmNjLmMKPiBAQCAtMzksMTYgKzM5LDE0IEBAIHN0YXRpYyBjaGFyIHBy aW50YWJsZV9jaGFyKGludCBjKQo+ICAgKiBkcm1fZ2V0X2Zvcm1hdF9uYW1lIC0gcmV0dXJuIGEg c3RyaW5nIGZvciBkcm0gZm91cmNjIGZvcm1hdAo+ICAgKiBAZm9ybWF0OiBmb3JtYXQgdG8gY29t cHV0ZSBuYW1lIG9mCj4gICAqCj4gLSAqIE5vdGUgdGhhdCB0aGUgYnVmZmVyIHVzZWQgYnkgdGhp cyBmdW5jdGlvbiBpcyBnbG9iYWxseSBzaGFyZWQgYW5kIG93bmVkIGJ5Cj4gLSAqIHRoZSBmdW5j dGlvbiBpdHNlbGYuCj4gLSAqCj4gLSAqIEZJWE1FOiBUaGlzIGlzbid0IHJlYWxseSBtdWx0aXRo cmVhZGluZyBzYWZlLgo+ICsgKiBOb3RlIHRoYXQgdGhlIGJ1ZmZlciByZXR1cm5lZCBieSB0aGlz IGZ1bmN0aW9uIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIKPiArICogYW5kIHdpbGwgbmVlZCB0byBi ZSBmcmVlZC4KPiAgICovCj4gIGNvbnN0IGNoYXIgKmRybV9nZXRfZm9ybWF0X25hbWUodWludDMy X3QgZm9ybWF0KQoKSSBmaW5kIGl0IHN1cnByaXNpbmcgdGhhdCBhIGZ1bmN0aW9uIHRoYXQgYWxs b2NhdGVzIGEgYnVmZmVyIHJldHVybnMgYQpjb25zdCBwb2ludGVyLiBTb21lIHVzZXJzcGFjZSBs aWJyYXJpZXMgaGF2ZSBjb252ZW50aW9ucyBhYm91dCB0aGUKb3duZXJzaGlwIGJhc2VkIG9uIGNv bnN0bmVzcy4KCihJIGFsc28gZmluZCBpdCBzdXByaXNpbmcgdGhhdCBrZnJlZSgpIHRha2VzIGEg Y29uc3QgcG9pbnRlcjsgYXJndWFibHkKdGhhdCBjYWxsIGNoYW5nZXMgdGhlIG1lbW9yeS4pCgpJ cyB0aGVyZSBwcmVjZWRlbnQgZm9yIHRoaXM/CgpCUiwKSmFuaS4KCgo+ICB7Cj4gLQlzdGF0aWMg Y2hhciBidWZbMzJdOwo+ICsJY2hhciAqYnVmID0ga21hbGxvYygzMiwgR0ZQX0tFUk5FTCk7Cj4g IAo+IC0Jc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKPiArCXNucHJpbnRmKGJ1ZiwgMzIsCj4g IAkJICIlYyVjJWMlYyAlcy1lbmRpYW4gKDB4JTA4eCkiLAo+ICAJCSBwcmludGFibGVfY2hhcihm b3JtYXQgJiAweGZmKSwKPiAgCQkgcHJpbnRhYmxlX2NoYXIoKGZvcm1hdCA+PiA4KSAmIDB4ZmYp LAo+IEBAIC03Myw2ICs3MSw4IEBAIEVYUE9SVF9TWU1CT0woZHJtX2dldF9mb3JtYXRfbmFtZSk7 Cj4gIHZvaWQgZHJtX2ZiX2dldF9icHBfZGVwdGgodWludDMyX3QgZm9ybWF0LCB1bnNpZ25lZCBp bnQgKmRlcHRoLAo+ICAJCQkgIGludCAqYnBwKQo+ICB7Cj4gKwljb25zdCBjaGFyICpmb3JtYXRf bmFtZTsKPiArCj4gIAlzd2l0Y2ggKGZvcm1hdCkgewo+ICAJY2FzZSBEUk1fRk9STUFUX0M4Ogo+ ICAJY2FzZSBEUk1fRk9STUFUX1JHQjMzMjoKPiBAQCAtMTI3LDggKzEyNyw5IEBAIHZvaWQgZHJt X2ZiX2dldF9icHBfZGVwdGgodWludDMyX3QgZm9ybWF0LCB1bnNpZ25lZCBpbnQgKmRlcHRoLAo+ ICAJCSpicHAgPSAzMjsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gLQkJRFJNX0RFQlVHX0tN UygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICVzXG4iLAo+IC0JCQkgICAgICBkcm1fZ2V0X2Zv cm1hdF9uYW1lKGZvcm1hdCkpOwo+ICsJCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFt ZShmb3JtYXQpOwo+ICsJCURSTV9ERUJVR19LTVMoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdCAl c1xuIiwgZm9ybWF0X25hbWUpOwo+ICsJCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQkqZGVwdGgg PSAwOwo+ICAJCSpicHAgPSAwOwo+ICAJCWJyZWFrOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Ry bS9kcm1fZm91cmNjLmggYi9pbmNsdWRlL2RybS9kcm1fZm91cmNjLmgKPiBpbmRleCA3ZjkwYTM5 Li4wMzBkMjJkIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9mb3VyY2MuaAo+ICsrKyBi L2luY2x1ZGUvZHJtL2RybV9mb3VyY2MuaAo+IEBAIC0zMiw2ICszMiw2IEBAIGludCBkcm1fZm9y bWF0X2hvcnpfY2hyb21hX3N1YnNhbXBsaW5nKHVpbnQzMl90IGZvcm1hdCk7Cj4gIGludCBkcm1f Zm9ybWF0X3ZlcnRfY2hyb21hX3N1YnNhbXBsaW5nKHVpbnQzMl90IGZvcm1hdCk7Cj4gIGludCBk cm1fZm9ybWF0X3BsYW5lX3dpZHRoKGludCB3aWR0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQgcGxh bmUpOwo+ICBpbnQgZHJtX2Zvcm1hdF9wbGFuZV9oZWlnaHQoaW50IGhlaWdodCwgdWludDMyX3Qg Zm9ybWF0LCBpbnQgcGxhbmUpOwo+IC1jb25zdCBjaGFyICpkcm1fZ2V0X2Zvcm1hdF9uYW1lKHVp bnQzMl90IGZvcm1hdCk7Cj4gK2NvbnN0IGNoYXIgKmRybV9nZXRfZm9ybWF0X25hbWUodWludDMy X3QgZm9ybWF0KSBfX21hbGxvYzsKPiAgCj4gICNlbmRpZiAvKiBfX0RSTV9GT1VSQ0NfSF9fICov Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92MTBfMC5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3YxMF8wLmMKPiBpbmRleCBjMWIwNGU5Li4w YmY4OTU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92MTBf MC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3YxMF8wLmMKPiBAQCAt MjA3MSw2ICsyMDcxLDcgQEAgc3RhdGljIGludCBkY2VfdjEwXzBfY3J0Y19kb19zZXRfYmFzZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAl1MzIgdG1wLCB2aWV3cG9ydF93LCB2aWV3cG9ydF9o Owo+ICAJaW50IHI7Cj4gIAlib29sIGJ5cGFzc19sdXQgPSBmYWxzZTsKPiArCWNvbnN0IGNoYXIg KmZvcm1hdF9uYW1lOwo+ICAKPiAgCS8qIG5vIGZiIGJvdW5kICovCj4gIAlpZiAoIWF0b21pYyAm JiAhY3J0Yy0+cHJpbWFyeS0+ZmIpIHsKPiBAQCAtMjE4Miw4ICsyMTgzLDkgQEAgc3RhdGljIGlu dCBkY2VfdjEwXzBfY3J0Y19kb19zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJ YnlwYXNzX2x1dCA9IHRydWU7Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0JCURSTV9FUlJP UigiVW5zdXBwb3J0ZWQgc2NyZWVuIGZvcm1hdCAlc1xuIiwKPiAtCQkJZHJtX2dldF9mb3JtYXRf bmFtZSh0YXJnZXRfZmItPnBpeGVsX2Zvcm1hdCkpOwo+ICsJCWZvcm1hdF9uYW1lID0gZHJtX2dl dF9mb3JtYXRfbmFtZSh0YXJnZXRfZmItPnBpeGVsX2Zvcm1hdCk7Cj4gKwkJRFJNX0VSUk9SKCJV bnN1cHBvcnRlZCBzY3JlZW4gZm9ybWF0ICVzXG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJa2ZyZWUo Zm9ybWF0X25hbWUpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3YxMV8wLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9kY2VfdjExXzAuYwo+IGluZGV4IGQ0YmYxMzMuLjE1NThhOTcgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3YxMV8wLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjExXzAuYwo+IEBAIC0yMDQ2LDYgKzIwNDYs NyBAQCBzdGF0aWMgaW50IGRjZV92MTFfMF9jcnRjX2RvX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiAgCXUzMiB0bXAsIHZpZXdwb3J0X3csIHZpZXdwb3J0X2g7Cj4gIAlpbnQgcjsK PiAgCWJvb2wgYnlwYXNzX2x1dCA9IGZhbHNlOwo+ICsJY29uc3QgY2hhciAqZm9ybWF0X25hbWU7 Cj4gIAo+ICAJLyogbm8gZmIgYm91bmQgKi8KPiAgCWlmICghYXRvbWljICYmICFjcnRjLT5wcmlt YXJ5LT5mYikgewo+IEBAIC0yMTU3LDggKzIxNTgsOSBAQCBzdGF0aWMgaW50IGRjZV92MTFfMF9j cnRjX2RvX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlieXBhc3NfbHV0ID0g dHJ1ZTsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gLQkJRFJNX0VSUk9SKCJVbnN1cHBvcnRl ZCBzY3JlZW4gZm9ybWF0ICVzXG4iLAo+IC0JCQlkcm1fZ2V0X2Zvcm1hdF9uYW1lKHRhcmdldF9m Yi0+cGl4ZWxfZm9ybWF0KSk7Cj4gKwkJZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1l KHRhcmdldF9mYi0+cGl4ZWxfZm9ybWF0KTsKPiArCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIHNj cmVlbiBmb3JtYXQgJXNcbiIsIGZvcm1hdF9uYW1lKTsKPiArCQlrZnJlZShmb3JtYXRfbmFtZSk7 Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9kY2VfdjhfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv ZGNlX3Y4XzAuYwo+IGluZGV4IDRmZGZhYjEuLjcxYTAzNzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Y4XzAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2RjZV92OF8wLmMKPiBAQCAtMTk1Miw2ICsxOTUyLDcgQEAgc3RhdGljIGludCBk Y2VfdjhfMF9jcnRjX2RvX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXUzMiB2 aWV3cG9ydF93LCB2aWV3cG9ydF9oOwo+ICAJaW50IHI7Cj4gIAlib29sIGJ5cGFzc19sdXQgPSBm YWxzZTsKPiArCWNvbnN0IGNoYXIgKmZvcm1hdF9uYW1lOwo+ICAKPiAgCS8qIG5vIGZiIGJvdW5k ICovCj4gIAlpZiAoIWF0b21pYyAmJiAhY3J0Yy0+cHJpbWFyeS0+ZmIpIHsKPiBAQCAtMjA1Niw4 ICsyMDU3LDkgQEAgc3RhdGljIGludCBkY2VfdjhfMF9jcnRjX2RvX3NldF9iYXNlKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiAgCQlieXBhc3NfbHV0ID0gdHJ1ZTsKPiAgCQlicmVhazsKPiAgCWRl ZmF1bHQ6Cj4gLQkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBzY3JlZW4gZm9ybWF0ICVzXG4iLAo+ IC0JCQkgIGRybV9nZXRfZm9ybWF0X25hbWUodGFyZ2V0X2ZiLT5waXhlbF9mb3JtYXQpKTsKPiAr CQlmb3JtYXRfbmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUodGFyZ2V0X2ZiLT5waXhlbF9mb3Jt YXQpOwo+ICsJCURSTV9FUlJPUigiVW5zdXBwb3J0ZWQgc2NyZWVuIGZvcm1hdCAlc1xuIiwgZm9y bWF0X25hbWUpOwo+ICsJCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gaW5kZXggZmEzOTMwNy4uMDg3MzkxZiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWMuYwo+IEBAIC04MzcsOCArODM3LDkgQEAgc3RhdGljIGludCBkcm1f YXRvbWljX3BsYW5lX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJLyogQ2hlY2sg d2hldGhlciB0aGlzIHBsYW5lIHN1cHBvcnRzIHRoZSBmYiBwaXhlbCBmb3JtYXQuICovCj4gIAly ZXQgPSBkcm1fcGxhbmVfY2hlY2tfcGl4ZWxfZm9ybWF0KHBsYW5lLCBzdGF0ZS0+ZmItPnBpeGVs X2Zvcm1hdCk7Cj4gIAlpZiAocmV0KSB7Cj4gLQkJRFJNX0RFQlVHX0FUT01JQygiSW52YWxpZCBw aXhlbCBmb3JtYXQgJXNcbiIsCj4gLQkJCQkgZHJtX2dldF9mb3JtYXRfbmFtZShzdGF0ZS0+ZmIt PnBpeGVsX2Zvcm1hdCkpOwo+ICsJCWNvbnN0IGNoYXIgKmZvcm1hdF9uYW1lID0gZHJtX2dldF9m b3JtYXRfbmFtZShzdGF0ZS0+ZmItPnBpeGVsX2Zvcm1hdCk7Cj4gKwkJRFJNX0RFQlVHX0FUT01J QygiSW52YWxpZCBwaXhlbCBmb3JtYXQgJXNcbiIsIGZvcm1hdF9uYW1lKTsKPiArCQlrZnJlZShm b3JtYXRfbmFtZSk7Cj4gIAkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBp bmRleCBiMWRiYjYwLi43ZGE1ZDMzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f Y3J0Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBAQCAtMjU5Miw4ICsy NTkyLDkgQEAgc3RhdGljIGludCBfX3NldHBsYW5lX2ludGVybmFsKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+ICAJLyogQ2hlY2sgd2hldGhlciB0aGlzIHBsYW5lIHN1cHBvcnRzIHRoZSBmYiBw aXhlbCBmb3JtYXQuICovCj4gIAlyZXQgPSBkcm1fcGxhbmVfY2hlY2tfcGl4ZWxfZm9ybWF0KHBs YW5lLCBmYi0+cGl4ZWxfZm9ybWF0KTsKPiAgCWlmIChyZXQpIHsKPiAtCQlEUk1fREVCVUdfS01T KCJJbnZhbGlkIHBpeGVsIGZvcm1hdCAlc1xuIiwKPiAtCQkJICAgICAgZHJtX2dldF9mb3JtYXRf bmFtZShmYi0+cGl4ZWxfZm9ybWF0KSk7Cj4gKwkJY29uc3QgY2hhciAqZm9ybWF0X25hbWUgPSBk cm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5waXhlbF9mb3JtYXQpOwo+ICsJCURSTV9ERUJVR19LTVMo IkludmFsaWQgcGl4ZWwgZm9ybWF0ICVzXG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJa2ZyZWUoZm9y bWF0X25hbWUpOwo+ICAJCWdvdG8gb3V0Owo+ICAJfQo+ICAKPiBAQCAtMjkwMiw4ICsyOTAzLDkg QEAgaW50IGRybV9tb2RlX3NldGNydGMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKPiAgCQkJcmV0ID0gZHJtX3BsYW5lX2NoZWNrX3BpeGVsX2Zvcm1hdChjcnRjLT5wcmltYXJ5 LAo+ICAJCQkJCQkJICAgZmItPnBpeGVsX2Zvcm1hdCk7Cj4gIAkJCWlmIChyZXQpIHsKPiAtCQkJ CURSTV9ERUJVR19LTVMoIkludmFsaWQgcGl4ZWwgZm9ybWF0ICVzXG4iLAo+IC0JCQkJCWRybV9n ZXRfZm9ybWF0X25hbWUoZmItPnBpeGVsX2Zvcm1hdCkpOwo+ICsJCQkJY29uc3QgY2hhciAqZm9y bWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5waXhlbF9mb3JtYXQpOwo+ICsJCQkJ RFJNX0RFQlVHX0tNUygiSW52YWxpZCBwaXhlbCBmb3JtYXQgJXNcbiIsIGZvcm1hdF9uYW1lKTsK PiArCQkJCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQkJCWdvdG8gb3V0Owo+ICAJCQl9Cj4gIAkJ fQo+IEBAIC0zMjc5LDYgKzMyODEsNyBAQCBpbnQgZHJtX21vZGVfYWRkZmIoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgc3RhdGljIGludCBmb3JtYXRfY2hlY2soY29uc3Qgc3RydWN0IGRybV9t b2RlX2ZiX2NtZDIgKnIpCj4gIHsKPiAgCXVpbnQzMl90IGZvcm1hdCA9IHItPnBpeGVsX2Zvcm1h dCAmIH5EUk1fRk9STUFUX0JJR19FTkRJQU47Cj4gKwljb25zdCBjaGFyICpmb3JtYXRfbmFtZTsK PiAgCj4gIAlzd2l0Y2ggKGZvcm1hdCkgewo+ICAJY2FzZSBEUk1fRk9STUFUX0M4Ogo+IEBAIC0z MzQzLDggKzMzNDYsOSBAQCBzdGF0aWMgaW50IGZvcm1hdF9jaGVjayhjb25zdCBzdHJ1Y3QgZHJt X21vZGVfZmJfY21kMiAqcikKPiAgCWNhc2UgRFJNX0ZPUk1BVF9ZVlU0NDQ6Cj4gIAkJcmV0dXJu IDA7Cj4gIAlkZWZhdWx0Ogo+IC0JCURSTV9ERUJVR19LTVMoImludmFsaWQgcGl4ZWwgZm9ybWF0 ICVzXG4iLAo+IC0JCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHItPnBpeGVsX2Zvcm1hdCkp Owo+ICsJCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZShyLT5waXhlbF9mb3JtYXQp Owo+ICsJCURSTV9ERUJVR19LTVMoImludmFsaWQgcGl4ZWwgZm9ybWF0ICVzXG4iLCBmb3JtYXRf bmFtZSk7Cj4gKwkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJ fQo+ICB9Cj4gQEAgLTMzNTUsOCArMzM1OSw5IEBAIHN0YXRpYyBpbnQgZnJhbWVidWZmZXJfY2hl Y2soY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKnIpCj4gIAo+ICAJcmV0ID0gZm9ybWF0 X2NoZWNrKHIpOwo+ICAJaWYgKHJldCkgewo+IC0JCURSTV9ERUJVR19LTVMoImJhZCBmcmFtZWJ1 ZmZlciBmb3JtYXQgJXNcbiIsCj4gLQkJCSAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUoci0+cGl4 ZWxfZm9ybWF0KSk7Cj4gKwkJY29uc3QgY2hhciAqZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1h dF9uYW1lKHItPnBpeGVsX2Zvcm1hdCk7Cj4gKwkJRFJNX0RFQlVHX0tNUygiYmFkIGZyYW1lYnVm ZmVyIGZvcm1hdCAlc1xuIiwgZm9ybWF0X25hbWUpOwo+ICsJCWtmcmVlKGZvcm1hdF9uYW1lKTsK PiAgCQlyZXR1cm4gcmV0Owo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2hpc2lsaWNvbi9raXJpbi9raXJpbl9kcm1fYWRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxp Y29uL2tpcmluL2tpcmluX2RybV9hZGUuYwo+IGluZGV4IGMzNzA3ZDQuLmFjN2ZhMDIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9raXJpbi9raXJpbl9kcm1fYWRlLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmluX2RybV9hZGUuYwo+ IEBAIC02MDgsMTUgKzYwOCwxNyBAQCBzdGF0aWMgdm9pZCBhZGVfcmRtYV9zZXQodm9pZCBfX2lv bWVtICpiYXNlLCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgCQkJIHUzMiBjaCwgdTMy IHksIHUzMiBpbl9oLCB1MzIgZm10KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0 ICpvYmogPSBkcm1fZmJfY21hX2dldF9nZW1fb2JqKGZiLCAwKTsKPiArCWNvbnN0IGNoYXIgKmZv cm1hdF9uYW1lOwo+ICAJdTMyIHJlZ19jdHJsLCByZWdfYWRkciwgcmVnX3NpemUsIHJlZ19zdHJp ZGUsIHJlZ19zcGFjZSwgcmVnX2VuOwo+ICAJdTMyIHN0cmlkZSA9IGZiLT5waXRjaGVzWzBdOwo+ ICAJdTMyIGFkZHIgPSAodTMyKW9iai0+cGFkZHIgKyB5ICogc3RyaWRlOwo+ICAKPiAgCURSTV9E RUJVR19EUklWRVIoInJkbWElZDogKHk9JWQsIGhlaWdodD0lZCksIHN0cmlkZT0lZCwgcGFkZHI9 MHgleFxuIiwKPiAgCQkJIGNoICsgMSwgeSwgaW5faCwgc3RyaWRlLCAodTMyKW9iai0+cGFkZHIp Owo+ICsJZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5waXhlbF9mb3JtYXQp Owo+ICAJRFJNX0RFQlVHX0RSSVZFUigiYWRkcj0weCV4LCBmYjolZHglZCwgcGl4ZWxfZm9ybWF0 PSVkKCVzKVxuIiwKPiAtCQkJIGFkZHIsIGZiLT53aWR0aCwgZmItPmhlaWdodCwgZm10LAo+IC0J CQkgZHJtX2dldF9mb3JtYXRfbmFtZShmYi0+cGl4ZWxfZm9ybWF0KSk7Cj4gKwkJCSBhZGRyLCBm Yi0+d2lkdGgsIGZiLT5oZWlnaHQsIGZtdCwgZm9ybWF0X25hbWUpOwo+ICsJa2ZyZWUoZm9ybWF0 X25hbWUpOwo+ICAKPiAgCS8qIGdldCByZWcgb2Zmc2V0ICovCj4gIAlyZWdfY3RybCA9IFJEX0NI X0NUUkwoY2gpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggODQ0ZmVh Ny4uOTA0NzIwYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTMx MDksNiArMzEwOSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3BsYW5lX2luZm8oc3RydWN0IHNlcV9m aWxlICptLCBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAgCWZvcl9lYWNoX2ludGVs X3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkgewo+ICAJCXN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlOwo+ICAJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0g JmludGVsX3BsYW5lLT5iYXNlOwo+ICsJCWNvbnN0IGNoYXIgKmZvcm1hdF9uYW1lOwo+ICAKPiAg CQlpZiAoIXBsYW5lLT5zdGF0ZSkgewo+ICAJCQlzZXFfcHV0cyhtLCAicGxhbmUtPnN0YXRlIGlz IE5VTEwhXG4iKTsKPiBAQCAtMzExNyw2ICszMTE4LDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bs YW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YykKPiAgCj4gIAkJc3RhdGUgPSBwbGFuZS0+c3RhdGU7Cj4gIAo+ICsJCWlmIChzdGF0ZS0+ZmIp IHsKPiArCQkJZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHN0YXRlLT5mYi0+cGl4 ZWxfZm9ybWF0KTsKPiArCQl9IGVsc2Ugewo+ICsJCQlmb3JtYXRfbmFtZSA9IGtzdHJkdXAoIk4v QSIsIEdGUF9LRVJORUwpOwo+ICsJCX0KPiArCj4gIAkJc2VxX3ByaW50ZihtLCAiXHQtLVBsYW5l IGlkICVkOiB0eXBlPSVzLCBjcnRjX3Bvcz0lNGR4JTRkLCBjcnRjX3NpemU9JTRkeCU0ZCwgc3Jj X3Bvcz0lZC4lMDR1eCVkLiUwNHUsIHNyY19zaXplPSVkLiUwNHV4JWQuJTA0dSwgZm9ybWF0PSVz LCByb3RhdGlvbj0lc1xuIiwKPiAgCQkJICAgcGxhbmUtPmJhc2UuaWQsCj4gIAkJCSAgIHBsYW5l X3R5cGUoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSksCj4gQEAgLTMxMzAsOCArMzEzNywxMCBAQCBz dGF0aWMgdm9pZCBpbnRlbF9wbGFuZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMpCj4gIAkJCSAgICgoc3RhdGUtPnNyY193ICYgMHhmZmZmKSAq IDE1NjI1KSA+PiAxMCwKPiAgCQkJICAgKHN0YXRlLT5zcmNfaCA+PiAxNiksCj4gIAkJCSAgICgo c3RhdGUtPnNyY19oICYgMHhmZmZmKSAqIDE1NjI1KSA+PiAxMCwKPiAtCQkJICAgc3RhdGUtPmZi ID8gZHJtX2dldF9mb3JtYXRfbmFtZShzdGF0ZS0+ZmItPnBpeGVsX2Zvcm1hdCkgOiAiTi9BIiwK PiArCQkJICAgZm9ybWF0X25hbWUsCj4gIAkJCSAgIHBsYW5lX3JvdGF0aW9uKHN0YXRlLT5yb3Rh dGlvbikpOwo+ICsKPiArCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAl9Cj4gIH0KPiAgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiBpbmRleCA3ZGU3NzIxLi5l MDYxMzFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19w bGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMK PiBAQCAtMTU3LDYgKzE1Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNr KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlID8g Y3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCA6IDA7Cj4gIAo+ICAJaWYgKHN0YXRlLT5mYiAmJiBpbnRl bF9yb3RhdGlvbl85MF9vcl8yNzAoc3RhdGUtPnJvdGF0aW9uKSkgewo+ICsJCWNvbnN0IGNoYXIg KmZvcm1hdF9uYW1lOwo+ICAJCWlmICghKHN0YXRlLT5mYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9G T1JNQVRfTU9EX1lfVElMRUQgfHwKPiAgCQkJc3RhdGUtPmZiLT5tb2RpZmllclswXSA9PSBJOTE1 X0ZPUk1BVF9NT0RfWWZfVElMRUQpKSB7Cj4gIAkJCURSTV9ERUJVR19LTVMoIlkvWWYgdGlsaW5n IHJlcXVpcmVkIGZvciA5MC8yNzAhXG4iKTsKPiBAQCAtMTcxLDggKzE3Miw5IEBAIHN0YXRpYyBp bnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJ CXN3aXRjaCAoc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQpIHsKPiAgCQljYXNlIERSTV9GT1JNQVRf Qzg6Cj4gIAkJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKPiAtCQkJRFJNX0RFQlVHX0tNUygiVW5z dXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICVzIGZvciA5MC8yNzAhXG4iLAo+IC0JCQkJCWRybV9nZXRf Zm9ybWF0X25hbWUoc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQpKTsKPiArCQkJZm9ybWF0X25hbWUg PSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0KTsKPiArCQkJRFJN X0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICVzIGZvciA5MC8yNzAhXG4iLCBm b3JtYXRfbmFtZSk7Cj4gKwkJCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQkJcmV0dXJuIC1FSU5W QUw7Cj4gIAo+ICAJCWRlZmF1bHQ6Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ IGluZGV4IGM0NTdlZWQuLjA3MTM5OWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gQEAgLTEyMjgyLDYgKzEyMjgyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9w aXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIAlEUk1fREVCVUdfS01T KCJwbGFuZXMgb24gdGhpcyBjcnRjXG4iKTsKPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkocGxhbmUs ICZkZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QsIGhlYWQpIHsKPiArCQljb25zdCBjaGFyICpm b3JtYXRfbmFtZTsKPiAgCQlpbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAg CQlpZiAoaW50ZWxfcGxhbmUtPnBpcGUgIT0gY3J0Yy0+cGlwZSkKPiAgCQkJY29udGludWU7Cj4g QEAgLTEyMjk0LDExICsxMjI5NSwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQljb250aW51ZTsKPiAgCQl9Cj4gIAo+ ICsJCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZShmYi0+cGl4ZWxfZm9ybWF0KTsK PiArCj4gIAkJRFJNX0RFQlVHX0tNUygiW1BMQU5FOiVkOiVzXSBlbmFibGVkIiwKPiAgCQkJICAg ICAgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lKTsKPiAgCQlEUk1fREVCVUdfS01TKCJcdEZC OiVkLCBmYiA9ICV1eCV1IGZvcm1hdCA9ICVzIiwKPiAtCQkJICAgICAgZmItPmJhc2UuaWQsIGZi LT53aWR0aCwgZmItPmhlaWdodCwKPiAtCQkJICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShmYi0+ cGl4ZWxfZm9ybWF0KSk7Cj4gKwkJCSAgICAgIGZiLT5iYXNlLmlkLCBmYi0+d2lkdGgsIGZiLT5o ZWlnaHQsIGZvcm1hdF9uYW1lKTsKPiAgCQlEUk1fREVCVUdfS01TKCJcdHNjYWxlcjolZCBzcmMg JWR4JWQrJWQrJWQgZHN0ICVkeCVkKyVkKyVkXG4iLAo+ICAJCQkgICAgICBzdGF0ZS0+c2NhbGVy X2lkLAo+ICAJCQkgICAgICBzdGF0ZS0+c3JjLngxID4+IDE2LCBzdGF0ZS0+c3JjLnkxID4+IDE2 LAo+IEBAIC0xMjMwNyw2ICsxMjMwOSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGlwZV9j b25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCSAgICAgIHN0YXRlLT5kc3QueDEs IHN0YXRlLT5kc3QueTEsCj4gIAkJCSAgICAgIGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+ZHN0KSwK PiAgCQkJICAgICAgZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+ZHN0KSk7Cj4gKwo+ICsJCWtmcmVl KGZvcm1hdF9uYW1lKTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAtMTQ5MzYsNiArMTQ5NDAsNyBAQCBz dGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCXVuc2lnbmVkIGludCBhbGlnbmVkX2hlaWdodDsKPiAgCWludCByZXQ7Cj4gIAl1MzIgcGl0 Y2hfbGltaXQsIHN0cmlkZV9hbGlnbm1lbnQ7Cj4gKwljb25zdCBjaGFyICpmb3JtYXRfbmFtZTsK PiAgCj4gIAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7Cj4g IAo+IEBAIC0xNTAwOSwxNiArMTUwMTQsMTggQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZl cl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJYnJlYWs7Cj4gIAljYXNlIERSTV9G T1JNQVRfWFJHQjE1NTU6Cj4gIAkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gMykgewo+IC0J CQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4gLQkJCQkgIGRy bV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCkpOwo+ICsJCQlmb3JtYXRf bmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCk7Cj4gKwkJ CURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwgZm9ybWF0X25hbWUp Owo+ICsJCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0K PiAgCQlicmVhazsKPiAgCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKPiAgCQlpZiAoIUlTX1ZB TExFWVZJRVcoZGV2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXYpICYmCj4gIAkJICAgIElOVEVMX0lO Rk8oZGV2KS0+Z2VuIDwgOSkgewo+IC0JCQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZv cm1hdDogJXNcbiIsCj4gLQkJCQkgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVs X2Zvcm1hdCkpOwo+ICsJCQlmb3JtYXRfbmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9j bWQtPnBpeGVsX2Zvcm1hdCk7Cj4gKwkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9y bWF0OiAlc1xuIiwgZm9ybWF0X25hbWUpOwo+ICsJCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJ CXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiAgCQlicmVhazsKPiBAQCAtMTUwMjYsMTUgKzE1MDMz LDE3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICAJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgo+ICAJY2FzZSBEUk1fRk9S TUFUX1hCR1IyMTAxMDEwOgo+ICAJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpIHsKPiAt CQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+IC0JCQkJICBk cm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpKTsKPiArCQkJZm9ybWF0 X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpOwo+ICsJ CQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsIGZvcm1hdF9uYW1l KTsKPiArCQkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiAgCQl9 Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIERSTV9GT1JNQVRfQUJHUjIxMDEwMTA6Cj4gIAkJaWYgKCFJ U19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSkgewo+IC0JCQlEUk1fREVC VUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4gLQkJCQkgIGRybV9nZXRfZm9y bWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCkpOwo+ICsJCQlmb3JtYXRfbmFtZSA9IGRy bV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCk7Cj4gKwkJCURSTV9ERUJV RygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwgZm9ybWF0X25hbWUpOwo+ICsJCQlr ZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiAgCQlicmVh azsKPiBAQCAtMTUwNDMsMTQgKzE1MDUyLDE2IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZm ZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJY2FzZSBEUk1fRk9STUFUX1lWWVU6 Cj4gIAljYXNlIERSTV9GT1JNQVRfVllVWToKPiAgCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PCA1KSB7Cj4gLQkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwK PiAtCQkJCSAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KSk7Cj4g KwkJCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9y bWF0KTsKPiArCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLCBm b3JtYXRfbmFtZSk7Cj4gKwkJCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQkJcmV0dXJuIC1FSU5W QUw7Cj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAtCQlEUk1fREVCVUcoInVuc3Vw cG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4gLQkJCSAgZHJtX2dldF9mb3JtYXRfbmFtZSht b2RlX2NtZC0+cGl4ZWxfZm9ybWF0KSk7Cj4gKwkJZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1h dF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpOwo+ICsJCURSTV9ERUJVRygidW5zdXBwb3J0 ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwgZm9ybWF0X25hbWUpOwo+ICsJCWtmcmVlKGZvcm1hdF9u YW1lKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9yYWRlb24vYXRvbWJpb3NfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9hdG9tYmlvc19jcnRjLmMKPiBpbmRleCBhOTdhYmM4Li45ODFjYTNmIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vYXRvbWJpb3NfY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9hdG9tYmlvc19jcnRjLmMKPiBAQCAtMTE1NCw2ICsxMTU0LDcgQEAgc3Rh dGljIGludCBkY2U0X2NydGNfZG9fc2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJ dTMyIHRtcCwgdmlld3BvcnRfdywgdmlld3BvcnRfaDsKPiAgCWludCByOwo+ICAJYm9vbCBieXBh c3NfbHV0ID0gZmFsc2U7Cj4gKwljb25zdCBjaGFyICpmb3JtYXRfbmFtZTsKPiAgCj4gIAkvKiBu byBmYiBib3VuZCAqLwo+ICAJaWYgKCFhdG9taWMgJiYgIWNydGMtPnByaW1hcnktPmZiKSB7Cj4g QEAgLTEyNTcsOCArMTI1OCw5IEBAIHN0YXRpYyBpbnQgZGNlNF9jcnRjX2RvX3NldF9iYXNlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlieXBhc3NfbHV0ID0gdHJ1ZTsKPiAgCQlicmVhazsK PiAgCWRlZmF1bHQ6Cj4gLQkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBzY3JlZW4gZm9ybWF0ICVz XG4iLAo+IC0JCQkgIGRybV9nZXRfZm9ybWF0X25hbWUodGFyZ2V0X2ZiLT5waXhlbF9mb3JtYXQp KTsKPiArCQlmb3JtYXRfbmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUodGFyZ2V0X2ZiLT5waXhl bF9mb3JtYXQpOwo+ICsJCURSTV9FUlJPUigiVW5zdXBwb3J0ZWQgc2NyZWVuIGZvcm1hdCAlc1xu IiwgZm9ybWF0X25hbWUpOwo+ICsJCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQlyZXR1cm4gLUVJ TlZBTDsKPiAgCX0KPiAgCj4gQEAgLTE0NjksNiArMTQ3MSw3IEBAIHN0YXRpYyBpbnQgYXZpdm9f Y3J0Y19kb19zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAl1MzIgdmlld3BvcnRf dywgdmlld3BvcnRfaDsKPiAgCWludCByOwo+ICAJYm9vbCBieXBhc3NfbHV0ID0gZmFsc2U7Cj4g Kwljb25zdCBjaGFyICpmb3JtYXRfbmFtZTsKPiAgCj4gIAkvKiBubyBmYiBib3VuZCAqLwo+ICAJ aWYgKCFhdG9taWMgJiYgIWNydGMtPnByaW1hcnktPmZiKSB7Cj4gQEAgLTE1NTgsOCArMTU2MSw5 IEBAIHN0YXRpYyBpbnQgYXZpdm9fY3J0Y19kb19zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gIAkJYnlwYXNzX2x1dCA9IHRydWU7Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0J CURSTV9FUlJPUigiVW5zdXBwb3J0ZWQgc2NyZWVuIGZvcm1hdCAlc1xuIiwKPiAtCQkJICBkcm1f Z2V0X2Zvcm1hdF9uYW1lKHRhcmdldF9mYi0+cGl4ZWxfZm9ybWF0KSk7Cj4gKwkJZm9ybWF0X25h bWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHRhcmdldF9mYi0+cGl4ZWxfZm9ybWF0KTsKPiArCQlE Uk1fRVJST1IoIlVuc3VwcG9ydGVkIHNjcmVlbiBmb3JtYXQgJXNcbiIsIGZvcm1hdF9uYW1lKTsK PiArCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9CgotLSAK SmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=