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: dri-devel@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= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752783AbcHOJyK (ORCPT ); Mon, 15 Aug 2016 05:54:10 -0400 Received: from mga02.intel.com ([134.134.136.20]:7351 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752106AbcHOJyI (ORCPT ); Mon, 15 Aug 2016 05:54:08 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,524,1464678000"; d="scan'208";a="1041299525" From: Jani Nikula To: Eric Engestrom , linux-kernel@vger.kernel.org Cc: Eric Engestrom , Alex Deucher , Christian =?utf-8?Q?K=C3=B6nig?= , David Airlie , Xinliang Liu , Daniel Vetter , Michel =?utf-8?Q?D=C3=A4nzer?= , Tom St Denis , Gustavo Padovan , David Zhang , Flora Cui , Vitaly Prosyak , Junwei Zhang , Xinwei Kong , Archit Taneja , Wei Yongjun , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Subject: Re: [PATCH] drm: make drm_get_format_name thread-safe In-Reply-To: <20160815000247.20063-1-eric@engestrom.ch> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20160815000247.20063-1-eric@engestrom.ch> User-Agent: Notmuch/0.22.1+63~g648dcc7 (https://notmuchmail.org) Emacs/24.4.1 (x86_64-pc-linux-gnu) Date: Mon, 15 Aug 2016 12:54:01 +0300 Message-ID: <87eg5quzly.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 15 Aug 2016, Eric Engestrom wrote: > Signed-off-by: Eric Engestrom > --- > > I moved the main bits to be the first diffs, shouldn't affect anything > when applying the patch, but I wanted to ask: > I don't like the hard-coded `32` the appears in both kmalloc() and > snprintf(), what do you think? If you don't like it either, what would > you suggest? Should I #define it? > > Second question is about the patch mail itself: should I send this kind > of patch separated by module, with a note requesting them to be squashed > when applying? It has to land as a single patch, but for review it might > be easier if people only see the bits they each care about, as well as > to collect ack's/r-b's. > > Cheers, > Eric > > --- > drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 6 ++-- > drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 6 ++-- > drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 6 ++-- > drivers/gpu/drm/drm_atomic.c | 5 ++-- > drivers/gpu/drm/drm_crtc.c | 21 ++++++++----- > drivers/gpu/drm/drm_fourcc.c | 17 ++++++----- > drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 6 ++-- > drivers/gpu/drm/i915/i915_debugfs.c | 11 ++++++- > drivers/gpu/drm/i915/intel_atomic_plane.c | 6 ++-- > drivers/gpu/drm/i915/intel_display.c | 39 ++++++++++++++++--------- > drivers/gpu/drm/radeon/atombios_crtc.c | 12 +++++--- > include/drm/drm_fourcc.h | 2 +- > 12 files changed, 89 insertions(+), 48 deletions(-) > > diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c > index 0645c85..38216a1 100644 > --- a/drivers/gpu/drm/drm_fourcc.c > +++ b/drivers/gpu/drm/drm_fourcc.c > @@ -39,16 +39,14 @@ static char printable_char(int c) > * drm_get_format_name - return a string for drm fourcc format > * @format: format to compute name of > * > - * Note that the buffer used by this function is globally shared and owned by > - * the function itself. > - * > - * FIXME: This isn't really multithreading safe. > + * Note that the buffer returned by this function is owned by the caller > + * and will need to be freed. > */ > const char *drm_get_format_name(uint32_t format) I find it surprising that a function that allocates a buffer returns a const pointer. Some userspace libraries have conventions about the ownership based on constness. (I also find it suprising that kfree() takes a const pointer; arguably that call changes the memory.) Is there precedent for this? BR, Jani. > { > - static char buf[32]; > + char *buf = kmalloc(32, GFP_KERNEL); > > - snprintf(buf, sizeof(buf), > + snprintf(buf, 32, > "%c%c%c%c %s-endian (0x%08x)", > printable_char(format & 0xff), > printable_char((format >> 8) & 0xff), > @@ -73,6 +71,8 @@ EXPORT_SYMBOL(drm_get_format_name); > void drm_fb_get_bpp_depth(uint32_t format, unsigned int *depth, > int *bpp) > { > + const char *format_name; > + > switch (format) { > case DRM_FORMAT_C8: > case DRM_FORMAT_RGB332: > @@ -127,8 +127,9 @@ void drm_fb_get_bpp_depth(uint32_t format, unsigned int *depth, > *bpp = 32; > break; > default: > - DRM_DEBUG_KMS("unsupported pixel format %s\n", > - drm_get_format_name(format)); > + format_name = drm_get_format_name(format); > + DRM_DEBUG_KMS("unsupported pixel format %s\n", format_name); > + kfree(format_name); > *depth = 0; > *bpp = 0; > break; > diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h > index 7f90a39..030d22d 100644 > --- a/include/drm/drm_fourcc.h > +++ b/include/drm/drm_fourcc.h > @@ -32,6 +32,6 @@ int drm_format_horz_chroma_subsampling(uint32_t format); > int drm_format_vert_chroma_subsampling(uint32_t format); > int drm_format_plane_width(int width, uint32_t format, int plane); > int drm_format_plane_height(int height, uint32_t format, int plane); > -const char *drm_get_format_name(uint32_t format); > +const char *drm_get_format_name(uint32_t format) __malloc; > > #endif /* __DRM_FOURCC_H__ */ > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > index c1b04e9..0bf8959 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > @@ -2071,6 +2071,7 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc, > u32 tmp, viewport_w, viewport_h; > int r; > bool bypass_lut = false; > + const char *format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -2182,8 +2183,9 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - DRM_ERROR("Unsupported screen format %s\n", > - drm_get_format_name(target_fb->pixel_format)); > + format_name = drm_get_format_name(target_fb->pixel_format); > + DRM_ERROR("Unsupported screen format %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c > index d4bf133..1558a97 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c > @@ -2046,6 +2046,7 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc, > u32 tmp, viewport_w, viewport_h; > int r; > bool bypass_lut = false; > + const char *format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -2157,8 +2158,9 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - DRM_ERROR("Unsupported screen format %s\n", > - drm_get_format_name(target_fb->pixel_format)); > + format_name = drm_get_format_name(target_fb->pixel_format); > + DRM_ERROR("Unsupported screen format %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c > index 4fdfab1..71a0375 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c > @@ -1952,6 +1952,7 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc, > u32 viewport_w, viewport_h; > int r; > bool bypass_lut = false; > + const char *format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -2056,8 +2057,9 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - DRM_ERROR("Unsupported screen format %s\n", > - drm_get_format_name(target_fb->pixel_format)); > + format_name = drm_get_format_name(target_fb->pixel_format); > + DRM_ERROR("Unsupported screen format %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c > index fa39307..087391f 100644 > --- a/drivers/gpu/drm/drm_atomic.c > +++ b/drivers/gpu/drm/drm_atomic.c > @@ -837,8 +837,9 @@ static int drm_atomic_plane_check(struct drm_plane *plane, > /* Check whether this plane supports the fb pixel format. */ > ret = drm_plane_check_pixel_format(plane, state->fb->pixel_format); > if (ret) { > - DRM_DEBUG_ATOMIC("Invalid pixel format %s\n", > - drm_get_format_name(state->fb->pixel_format)); > + const char *format_name = drm_get_format_name(state->fb->pixel_format); > + DRM_DEBUG_ATOMIC("Invalid pixel format %s\n", format_name); > + kfree(format_name); > return ret; > } > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index b1dbb60..7da5d33 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -2592,8 +2592,9 @@ static int __setplane_internal(struct drm_plane *plane, > /* Check whether this plane supports the fb pixel format. */ > ret = drm_plane_check_pixel_format(plane, fb->pixel_format); > if (ret) { > - DRM_DEBUG_KMS("Invalid pixel format %s\n", > - drm_get_format_name(fb->pixel_format)); > + const char *format_name = drm_get_format_name(fb->pixel_format); > + DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name); > + kfree(format_name); > goto out; > } > > @@ -2902,8 +2903,9 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data, > ret = drm_plane_check_pixel_format(crtc->primary, > fb->pixel_format); > if (ret) { > - DRM_DEBUG_KMS("Invalid pixel format %s\n", > - drm_get_format_name(fb->pixel_format)); > + const char *format_name = drm_get_format_name(fb->pixel_format); > + DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name); > + kfree(format_name); > goto out; > } > } > @@ -3279,6 +3281,7 @@ int drm_mode_addfb(struct drm_device *dev, > static int format_check(const struct drm_mode_fb_cmd2 *r) > { > uint32_t format = r->pixel_format & ~DRM_FORMAT_BIG_ENDIAN; > + const char *format_name; > > switch (format) { > case DRM_FORMAT_C8: > @@ -3343,8 +3346,9 @@ static int format_check(const struct drm_mode_fb_cmd2 *r) > case DRM_FORMAT_YVU444: > return 0; > default: > - DRM_DEBUG_KMS("invalid pixel format %s\n", > - drm_get_format_name(r->pixel_format)); > + format_name = drm_get_format_name(r->pixel_format); > + DRM_DEBUG_KMS("invalid pixel format %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } > } > @@ -3355,8 +3359,9 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r) > > ret = format_check(r); > if (ret) { > - DRM_DEBUG_KMS("bad framebuffer format %s\n", > - drm_get_format_name(r->pixel_format)); > + const char *format_name = drm_get_format_name(r->pixel_format); > + DRM_DEBUG_KMS("bad framebuffer format %s\n", format_name); > + kfree(format_name); > return ret; > } > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > index c3707d4..ac7fa02 100644 > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > @@ -608,15 +608,17 @@ static void ade_rdma_set(void __iomem *base, struct drm_framebuffer *fb, > u32 ch, u32 y, u32 in_h, u32 fmt) > { > struct drm_gem_cma_object *obj = drm_fb_cma_get_gem_obj(fb, 0); > + const char *format_name; > u32 reg_ctrl, reg_addr, reg_size, reg_stride, reg_space, reg_en; > u32 stride = fb->pitches[0]; > u32 addr = (u32)obj->paddr + y * stride; > > DRM_DEBUG_DRIVER("rdma%d: (y=%d, height=%d), stride=%d, paddr=0x%x\n", > ch + 1, y, in_h, stride, (u32)obj->paddr); > + format_name = drm_get_format_name(fb->pixel_format); > DRM_DEBUG_DRIVER("addr=0x%x, fb:%dx%d, pixel_format=%d(%s)\n", > - addr, fb->width, fb->height, fmt, > - drm_get_format_name(fb->pixel_format)); > + addr, fb->width, fb->height, fmt, format_name); > + kfree(format_name); > > /* get reg offset */ > reg_ctrl = RD_CH_CTRL(ch); > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c > index 844fea7..904720b 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -3109,6 +3109,7 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc) > for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) { > struct drm_plane_state *state; > struct drm_plane *plane = &intel_plane->base; > + const char *format_name; > > if (!plane->state) { > seq_puts(m, "plane->state is NULL!\n"); > @@ -3117,6 +3118,12 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc) > > state = plane->state; > > + if (state->fb) { > + format_name = drm_get_format_name(state->fb->pixel_format); > + } else { > + format_name = kstrdup("N/A", GFP_KERNEL); > + } > + > seq_printf(m, "\t--Plane id %d: type=%s, crtc_pos=%4dx%4d, crtc_size=%4dx%4d, src_pos=%d.%04ux%d.%04u, src_size=%d.%04ux%d.%04u, format=%s, rotation=%s\n", > plane->base.id, > plane_type(intel_plane->base.type), > @@ -3130,8 +3137,10 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc) > ((state->src_w & 0xffff) * 15625) >> 10, > (state->src_h >> 16), > ((state->src_h & 0xffff) * 15625) >> 10, > - state->fb ? drm_get_format_name(state->fb->pixel_format) : "N/A", > + format_name, > plane_rotation(state->rotation)); > + > + kfree(format_name); > } > } > > diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c > index 7de7721..e06131a 100644 > --- a/drivers/gpu/drm/i915/intel_atomic_plane.c > +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c > @@ -157,6 +157,7 @@ static int intel_plane_atomic_check(struct drm_plane *plane, > crtc_state->base.enable ? crtc_state->pipe_src_h : 0; > > if (state->fb && intel_rotation_90_or_270(state->rotation)) { > + const char *format_name; > if (!(state->fb->modifier[0] == I915_FORMAT_MOD_Y_TILED || > state->fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED)) { > DRM_DEBUG_KMS("Y/Yf tiling required for 90/270!\n"); > @@ -171,8 +172,9 @@ static int intel_plane_atomic_check(struct drm_plane *plane, > switch (state->fb->pixel_format) { > case DRM_FORMAT_C8: > case DRM_FORMAT_RGB565: > - DRM_DEBUG_KMS("Unsupported pixel format %s for 90/270!\n", > - drm_get_format_name(state->fb->pixel_format)); > + format_name = drm_get_format_name(state->fb->pixel_format); > + DRM_DEBUG_KMS("Unsupported pixel format %s for 90/270!\n", format_name); > + kfree(format_name); > return -EINVAL; > > default: > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index c457eed..071399b 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -12282,6 +12282,7 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc, > > DRM_DEBUG_KMS("planes on this crtc\n"); > list_for_each_entry(plane, &dev->mode_config.plane_list, head) { > + const char *format_name; > intel_plane = to_intel_plane(plane); > if (intel_plane->pipe != crtc->pipe) > continue; > @@ -12294,11 +12295,12 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc, > continue; > } > > + format_name = drm_get_format_name(fb->pixel_format); > + > DRM_DEBUG_KMS("[PLANE:%d:%s] enabled", > plane->base.id, plane->name); > DRM_DEBUG_KMS("\tFB:%d, fb = %ux%u format = %s", > - fb->base.id, fb->width, fb->height, > - drm_get_format_name(fb->pixel_format)); > + fb->base.id, fb->width, fb->height, format_name); > DRM_DEBUG_KMS("\tscaler:%d src %dx%d+%d+%d dst %dx%d+%d+%d\n", > state->scaler_id, > state->src.x1 >> 16, state->src.y1 >> 16, > @@ -12307,6 +12309,8 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc, > state->dst.x1, state->dst.y1, > drm_rect_width(&state->dst), > drm_rect_height(&state->dst)); > + > + kfree(format_name); > } > } > > @@ -14936,6 +14940,7 @@ static int intel_framebuffer_init(struct drm_device *dev, > unsigned int aligned_height; > int ret; > u32 pitch_limit, stride_alignment; > + const char *format_name; > > WARN_ON(!mutex_is_locked(&dev->struct_mutex)); > > @@ -15009,16 +15014,18 @@ static int intel_framebuffer_init(struct drm_device *dev, > break; > case DRM_FORMAT_XRGB1555: > if (INTEL_INFO(dev)->gen > 3) { > - DRM_DEBUG("unsupported pixel format: %s\n", > - drm_get_format_name(mode_cmd->pixel_format)); > + format_name = drm_get_format_name(mode_cmd->pixel_format); > + DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } > break; > case DRM_FORMAT_ABGR8888: > if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) && > INTEL_INFO(dev)->gen < 9) { > - DRM_DEBUG("unsupported pixel format: %s\n", > - drm_get_format_name(mode_cmd->pixel_format)); > + format_name = drm_get_format_name(mode_cmd->pixel_format); > + DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } > break; > @@ -15026,15 +15033,17 @@ static int intel_framebuffer_init(struct drm_device *dev, > case DRM_FORMAT_XRGB2101010: > case DRM_FORMAT_XBGR2101010: > if (INTEL_INFO(dev)->gen < 4) { > - DRM_DEBUG("unsupported pixel format: %s\n", > - drm_get_format_name(mode_cmd->pixel_format)); > + format_name = drm_get_format_name(mode_cmd->pixel_format); > + DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } > break; > case DRM_FORMAT_ABGR2101010: > if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) { > - DRM_DEBUG("unsupported pixel format: %s\n", > - drm_get_format_name(mode_cmd->pixel_format)); > + format_name = drm_get_format_name(mode_cmd->pixel_format); > + DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } > break; > @@ -15043,14 +15052,16 @@ static int intel_framebuffer_init(struct drm_device *dev, > case DRM_FORMAT_YVYU: > case DRM_FORMAT_VYUY: > if (INTEL_INFO(dev)->gen < 5) { > - DRM_DEBUG("unsupported pixel format: %s\n", > - drm_get_format_name(mode_cmd->pixel_format)); > + format_name = drm_get_format_name(mode_cmd->pixel_format); > + DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } > break; > default: > - DRM_DEBUG("unsupported pixel format: %s\n", > - drm_get_format_name(mode_cmd->pixel_format)); > + format_name = drm_get_format_name(mode_cmd->pixel_format); > + DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c > index a97abc8..981ca3f 100644 > --- a/drivers/gpu/drm/radeon/atombios_crtc.c > +++ b/drivers/gpu/drm/radeon/atombios_crtc.c > @@ -1154,6 +1154,7 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, > u32 tmp, viewport_w, viewport_h; > int r; > bool bypass_lut = false; > + const char *format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -1257,8 +1258,9 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - DRM_ERROR("Unsupported screen format %s\n", > - drm_get_format_name(target_fb->pixel_format)); > + format_name = drm_get_format_name(target_fb->pixel_format); > + DRM_ERROR("Unsupported screen format %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } > > @@ -1469,6 +1471,7 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc, > u32 viewport_w, viewport_h; > int r; > bool bypass_lut = false; > + const char *format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -1558,8 +1561,9 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - DRM_ERROR("Unsupported screen format %s\n", > - drm_get_format_name(target_fb->pixel_format)); > + format_name = drm_get_format_name(target_fb->pixel_format); > + DRM_ERROR("Unsupported screen format %s\n", format_name); > + kfree(format_name); > return -EINVAL; > } -- Jani Nikula, Intel Open Source Technology Center