From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v2] drm: move allocation out of drm_get_format_name() Date: Mon, 07 Nov 2016 10:10:13 +0200 Message-ID: <8760nzaexm.fsf@intel.com> References: <20161107004713.GA26032@engestrom.ch> <20161107004821.25369-1-eric@engestrom.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161107004821.25369-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: David Airlie , dri-devel@lists.freedesktop.org, Wei Yongjun , Daniel Vetter , Flora Cui , Gustavo Padovan , Tom St Denis , Chunming Zhou , Thomas Hellstrom , Laurent Pinchart , Sinclair Yeh , Xinliang Liu , Xinwei Kong , VMware Graphics , Vitaly Prosyak , Eric Engestrom , Alexandre Demers , intel-gfx@lists.freedesktop.org, Eric Engestrom , Emily Deng , Colin Ian King List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCAwNyBOb3YgMjAxNiwgRXJpYyBFbmdlc3Ryb20gPGVyaWNAZW5nZXN0cm9tLmNoPiB3 cm90ZToKPiBGaXhlczogOTA4NDRmMDAwNDllOWY0MjU3M2ZkMzFkN2MzMmU4ZmQzMWQzZmQwNwo+ Cj4gICAgIGRybTogbWFrZSBkcm1fZ2V0X2Zvcm1hdF9uYW1lIHRocmVhZC1zYWZlCj4KPiAgICAg U2lnbmVkLW9mZi1ieTogRXJpYyBFbmdlc3Ryb20gPGVyaWNAZW5nZXN0cm9tLmNoPgo+ICAgICBb ZGFudmV0OiBDbGFyaWZ5IHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgbXVzdCBiZSBmcmVlZCB3 aXRoCj4gICAgIGtmcmVlKCkuXQo+ICAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxk YW5pZWwudmV0dGVyQGZmd2xsLmNoPgoKVGhlIEZpeGVzOiBmb3JtYXQgaXM6CgpGaXhlczogOTA4 NDRmMDAwNDllICgiZHJtOiBtYWtlIGRybV9nZXRfZm9ybWF0X25hbWUgdGhyZWFkLXNhZmUiKQoK QnV0IGlzIHRoaXMgYSBmaXgsIHJlYWxseSwgb3IganVzdCBhbiBpbXByb3ZlbWVudD8gV2hhdCBl eGFjdGx5IGlzIHRoZQpidWcgYmVpbmcgZml4ZWQ/IFRoZSBjb21taXQgbWVzc2FnZSBpcyBub3Qg c3VmZmljaWVudC4KCj4gQ2M6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KPiBDYzog Q2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+IFN1Z2dlc3RlZC1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBTaWdu ZWQtb2ZmLWJ5OiBFcmljIEVuZ2VzdHJvbSA8ZXJpY0Blbmdlc3Ryb20uY2g+Cj4gLS0tCj4KPiB2 MjogdXNlIHNpbmdsZS1maWVsZCBzdHJ1Y3QgaW5zdGVhZCBvZiB0eXBlZGVmIHRvIGxldCB0aGUg Y29tcGlsZXIKPiAgICAgZW5mb3JjZSB0aGUgdHlwZSAoQ2hyaXN0aWFuIEvDtm5pZykKCkp1c3Qg dG8gbWFrZSBpdCBjbGVhcjogTkFLIHRocmVlIHRpbWVzIG92ZXIgZm9yIHYxLiBUaGlzIHBhdGNo IGlzCmRlZmluaXRlbHkgYSBiZXR0ZXIgYWx0ZXJuYXRpdmUuCgo+Cj4gLS0tCj4gIGluY2x1ZGUv ZHJtL2RybV9mb3VyY2MuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKystCj4gIGRy aXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMgICAgICAgICAgICAgICAgICAgIHwgMTQgKysrLS0t LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92MTBfMC5jICAgICAgICAgIHwg IDcgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3YxMV8wLmMgICAgICAg ICAgfCAgNyArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjZfMC5jICAg ICAgICAgICB8ICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92OF8wLmMg ICAgICAgICAgIHwgIDcgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAg ICAgICAgICAgICAgICAgfCAgNyArKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyAg ICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZnJh bWVidWZmZXIuYyAgICAgICAgICAgICAgIHwgIDcgKysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9tb2Rlc2V0X2hlbHBlci5jICAgICAgICAgICAgfCAgNyArKystLQo+ICBkcml2ZXJzL2dwdS9k cm0vZHJtX3BsYW5lLmMgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKy0tCj4gIGRyaXZlcnMv Z3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2FkZS5jIHwgIDcgKystLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgICAgfCAxMCArKystLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgICAgICAgfCAgOCAr Ky0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgICAgICB8 IDQxICsrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9h dG9tYmlvc19jcnRjLmMgICAgICAgICAgfCAxNCArKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfa21zLmMgICAgICAgICAgICAgfCAgMyArLQo+ICAxNyBmaWxlcyBjaGFu Z2VkLCA4MCBpbnNlcnRpb25zKCspLCA4NiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fZm91cmNjLmggYi9pbmNsdWRlL2RybS9kcm1fZm91cmNjLmgKPiBpbmRl eCBkYzBhYWZhLi40YjAzY2EwIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9mb3VyY2Mu aAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9mb3VyY2MuaAo+IEBAIC00NSw2ICs0NSwxNCBAQCBz dHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIHsKPiAgCXU4IHZzdWI7Cj4gIH07Cj4gIAo+ICsvKioKPiAr ICogc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgLSBuYW1lIG9mIGEgRFJNIGZvcm1hdAo+ICsg KiBAc3RyOiBzdHJpbmcgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGZvcm1hdCBuYW1lCj4gKyAqLwo+ ICtzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiB7Cj4gKwljaGFyIHN0clszMl07Cj4gK307Cj4g Kwo+ICBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICpfX2RybV9mb3JtYXRfaW5mbyh1MzIg Zm9ybWF0KTsKPiAgY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqZHJtX2Zvcm1hdF9pbmZv KHUzMiBmb3JtYXQpOwo+ICB1aW50MzJfdCBkcm1fbW9kZV9sZWdhY3lfZmJfZm9ybWF0KHVpbnQz Ml90IGJwcCwgdWludDMyX3QgZGVwdGgpOwo+IEBAIC01NCw2ICs2Miw2IEBAIGludCBkcm1fZm9y bWF0X2hvcnpfY2hyb21hX3N1YnNhbXBsaW5nKHVpbnQzMl90IGZvcm1hdCk7Cj4gIGludCBkcm1f Zm9ybWF0X3ZlcnRfY2hyb21hX3N1YnNhbXBsaW5nKHVpbnQzMl90IGZvcm1hdCk7Cj4gIGludCBk cm1fZm9ybWF0X3BsYW5lX3dpZHRoKGludCB3aWR0aCwgdWludDMyX3QgZm9ybWF0LCBpbnQgcGxh bmUpOwo+ICBpbnQgZHJtX2Zvcm1hdF9wbGFuZV9oZWlnaHQoaW50IGhlaWdodCwgdWludDMyX3Qg Zm9ybWF0LCBpbnQgcGxhbmUpOwo+IC1jaGFyICpkcm1fZ2V0X2Zvcm1hdF9uYW1lKHVpbnQzMl90 IGZvcm1hdCkgX19tYWxsb2M7Cj4gK2NoYXIgKmRybV9nZXRfZm9ybWF0X25hbWUodWludDMyX3Qg Zm9ybWF0LCBzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiAqYnVmKTsKCkkgd29uZGVyIGlmIGl0 IHdvdWxkIGJlIGJldHRlciB0byBtYWtlIHRoYXQgcmV0dXJuICJjb25zdCBjaGFyICoiLiBJZgp0 aGUgdXNlciByZWFsbHkgd2FudHMgdG8gbG9vayB1bmRlciB0aGUgaG9vZCwgdGhlcmUncyBidWYt PnN0ci4gKnNocnVnKgoKV2l0aCB0aGUgY29tbWl0IG1lc3NhZ2UgaW1wcm92ZWQsCgpSZXZpZXdl ZC1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KCj4gIAo+ICAjZW5kaWYg LyogX19EUk1fRk9VUkNDX0hfXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2ZvdXJjYy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYwo+IGluZGV4IGNiYjhiNzcu Ljk5YjBiNjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMKPiBAQCAtNzksMTcgKzc5LDEzIEBAIHVp bnQzMl90IGRybV9tb2RlX2xlZ2FjeV9mYl9mb3JtYXQodWludDMyX3QgYnBwLCB1aW50MzJfdCBk ZXB0aCkKPiAgRVhQT1JUX1NZTUJPTChkcm1fbW9kZV9sZWdhY3lfZmJfZm9ybWF0KTsKPiAgCj4g IC8qKgo+IC0gKiBkcm1fZ2V0X2Zvcm1hdF9uYW1lIC0gcmV0dXJuIGEgc3RyaW5nIGZvciBkcm0g Zm91cmNjIGZvcm1hdAo+ICsgKiBkcm1fZ2V0X2Zvcm1hdF9uYW1lIC0gZmlsbCBhIHN0cmluZyB3 aXRoIGEgZHJtIGZvdXJjYyBmb3JtYXQncyBuYW1lCj4gICAqIEBmb3JtYXQ6IGZvcm1hdCB0byBj b21wdXRlIG5hbWUgb2YKPiArICogQGJ1ZjogY2FsbGVyLXN1cHBsaWVkIGJ1ZmZlcgo+IC0gKgo+ IC0gKiBOb3RlIHRoYXQgdGhlIGJ1ZmZlciByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGlzIG93 bmVkIGJ5IHRoZSBjYWxsZXIKPiAtICogYW5kIHdpbGwgbmVlZCB0byBiZSBmcmVlZCB1c2luZyBr ZnJlZSgpLgo+ICAgKi8KPiAtY2hhciAqZHJtX2dldF9mb3JtYXRfbmFtZSh1aW50MzJfdCBmb3Jt YXQpCj4gK2NoYXIgKmRybV9nZXRfZm9ybWF0X25hbWUodWludDMyX3QgZm9ybWF0LCBzdHJ1Y3Qg ZHJtX2Zvcm1hdF9uYW1lX2J1ZiAqYnVmKQo+ICB7Cj4gLQljaGFyICpidWYgPSBrbWFsbG9jKDMy LCBHRlBfS0VSTkVMKTsKPiAtCj4gLQlzbnByaW50ZihidWYsIDMyLAo+ICsJc25wcmludGYoYnVm LT5zdHIsIHNpemVvZihidWYtPnN0ciksCj4gIAkJICIlYyVjJWMlYyAlcy1lbmRpYW4gKDB4JTA4 eCkiLAo+ICAJCSBwcmludGFibGVfY2hhcihmb3JtYXQgJiAweGZmKSwKPiAgCQkgcHJpbnRhYmxl X2NoYXIoKGZvcm1hdCA+PiA4KSAmIDB4ZmYpLAo+IEBAIC05OCw3ICs5NCw3IEBAIGNoYXIgKmRy bV9nZXRfZm9ybWF0X25hbWUodWludDMyX3QgZm9ybWF0KQo+ICAJCSBmb3JtYXQgJiBEUk1fRk9S TUFUX0JJR19FTkRJQU4gPyAiYmlnIiA6ICJsaXR0bGUiLAo+ICAJCSBmb3JtYXQpOwo+ICAKPiAt CXJldHVybiBidWY7Cj4gKwlyZXR1cm4gYnVmLT5zdHI7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChk cm1fZ2V0X2Zvcm1hdF9uYW1lKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2RjZV92MTBfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Yx MF8wLmMKPiBpbmRleCAxOTlkM2Y3Li4yOTI0Y2RkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2RjZV92MTBfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvZGNlX3YxMF8wLmMKPiBAQCAtMjAzMiw3ICsyMDMyLDcgQEAgc3RhdGljIGludCBkY2Vf djEwXzBfY3J0Y19kb19zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAl1MzIgdG1w LCB2aWV3cG9ydF93LCB2aWV3cG9ydF9oOwo+ICAJaW50IHI7Cj4gIAlib29sIGJ5cGFzc19sdXQg PSBmYWxzZTsKPiAtCWNoYXIgKmZvcm1hdF9uYW1lOwo+ICsJc3RydWN0IGRybV9mb3JtYXRfbmFt ZV9idWYgZm9ybWF0X25hbWU7Cj4gIAo+ICAJLyogbm8gZmIgYm91bmQgKi8KPiAgCWlmICghYXRv bWljICYmICFjcnRjLT5wcmltYXJ5LT5mYikgewo+IEBAIC0yMTQ0LDkgKzIxNDQsOCBAQCBzdGF0 aWMgaW50IGRjZV92MTBfMF9jcnRjX2RvX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiAgCQlieXBhc3NfbHV0ID0gdHJ1ZTsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gLQkJZm9y bWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHRhcmdldF9mYi0+cGl4ZWxfZm9ybWF0KTsK PiAtCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIHNjcmVlbiBmb3JtYXQgJXNcbiIsIGZvcm1hdF9u YW1lKTsKPiArCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIHNjcmVlbiBmb3JtYXQgJXNcbiIsCj4g KwkJICAgICAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUodGFyZ2V0X2ZiLT5waXhlbF9mb3JtYXQs ICZmb3JtYXRfbmFtZSkpOwo+IC0JCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQlyZXR1cm4gLUVJ TlZBTDsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2RjZV92MTFfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3YxMV8wLmMKPiBp bmRleCBlY2QwMDBlLi5mMGUzYzVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2RjZV92MTFfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNl X3YxMV8wLmMKPiBAQCAtMjAxMyw3ICsyMDEzLDcgQEAgc3RhdGljIGludCBkY2VfdjExXzBfY3J0 Y19kb19zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAl1MzIgdG1wLCB2aWV3cG9y dF93LCB2aWV3cG9ydF9oOwo+ICAJaW50IHI7Cj4gIAlib29sIGJ5cGFzc19sdXQgPSBmYWxzZTsK PiAtCWNoYXIgKmZvcm1hdF9uYW1lOwo+ICsJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9y bWF0X25hbWU7Cj4gIAo+ICAJLyogbm8gZmIgYm91bmQgKi8KPiAgCWlmICghYXRvbWljICYmICFj cnRjLT5wcmltYXJ5LT5mYikgewo+IEBAIC0yMTI1LDkgKzIxMjUsOCBAQCBzdGF0aWMgaW50IGRj ZV92MTFfMF9jcnRjX2RvX3NldF9iYXNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQlieXBh c3NfbHV0ID0gdHJ1ZTsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gLQkJZm9ybWF0X25hbWUg PSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHRhcmdldF9mYi0+cGl4ZWxfZm9ybWF0KTsKPiAtCQlEUk1f RVJST1IoIlVuc3VwcG9ydGVkIHNjcmVlbiBmb3JtYXQgJXNcbiIsIGZvcm1hdF9uYW1lKTsKPiAr CQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIHNjcmVlbiBmb3JtYXQgJXNcbiIsCj4gKwkJICAgICAg ICAgIGRybV9nZXRfZm9ybWF0X25hbWUodGFyZ2V0X2ZiLT5waXhlbF9mb3JtYXQsICZmb3JtYXRf bmFtZSkpOwo+IC0JCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAg CX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2RjZV92Nl8w LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjZfMC5jCj4gaW5kZXggNDQ1NDdm OS4uNWM2YjgyZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2Vf djZfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Y2XzAuYwo+IEBA IC0xNDU2LDYgKzE0NTYsNyBAQCBzdGF0aWMgaW50IGRjZV92Nl8wX2NydGNfZG9fc2V0X2Jhc2Uo c3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJdTMyIHZpZXdwb3J0X3csIHZpZXdwb3J0X2g7Cj4g IAlpbnQgcjsKPiAgCWJvb2wgYnlwYXNzX2x1dCA9IGZhbHNlOwo+ICsJc3RydWN0IGRybV9mb3Jt YXRfbmFtZV9idWYgZm9ybWF0X25hbWU7Cj4gIAo+ICAJLyogbm8gZmIgYm91bmQgKi8KPiAgCWlm ICghYXRvbWljICYmICFjcnRjLT5wcmltYXJ5LT5mYikgewo+IEBAIC0xNTU5LDcgKzE1NjAsNyBA QCBzdGF0aWMgaW50IGRjZV92Nl8wX2NydGNfZG9fc2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAgCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVk IHNjcmVlbiBmb3JtYXQgJXNcbiIsCj4gLQkJCSAgZHJtX2dldF9mb3JtYXRfbmFtZSh0YXJnZXRf ZmItPnBpeGVsX2Zvcm1hdCkpOwo+ICsJCSAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHRh cmdldF9mYi0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKPiAgCQlyZXR1cm4gLUVJTlZB TDsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Rj ZV92OF8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9kY2VfdjhfMC5jCj4gaW5kZXgg OTc5YWVkZi4uNWFlZjE5ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9kY2VfdjhfMC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZGNlX3Y4XzAu Ywo+IEBAIC0xOTEwLDcgKzE5MTAsNyBAQCBzdGF0aWMgaW50IGRjZV92OF8wX2NydGNfZG9fc2V0 X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJdTMyIHZpZXdwb3J0X3csIHZpZXdwb3J0 X2g7Cj4gIAlpbnQgcjsKPiAgCWJvb2wgYnlwYXNzX2x1dCA9IGZhbHNlOwo+IC0JY2hhciAqZm9y bWF0X25hbWU7Cj4gKwlzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAg Cj4gIAkvKiBubyBmYiBib3VuZCAqLwo+ICAJaWYgKCFhdG9taWMgJiYgIWNydGMtPnByaW1hcnkt PmZiKSB7Cj4gQEAgLTIwMTUsOSArMjAxNSw4IEBAIHN0YXRpYyBpbnQgZGNlX3Y4XzBfY3J0Y19k b19zZXRfYmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJYnlwYXNzX2x1dCA9IHRydWU7 Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0JCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3Jt YXRfbmFtZSh0YXJnZXRfZmItPnBpeGVsX2Zvcm1hdCk7Cj4gLQkJRFJNX0VSUk9SKCJVbnN1cHBv cnRlZCBzY3JlZW4gZm9ybWF0ICVzXG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJRFJNX0VSUk9SKCJV bnN1cHBvcnRlZCBzY3JlZW4gZm9ybWF0ICVzXG4iLAo+ICsJCSAgICAgICAgICBkcm1fZ2V0X2Zv cm1hdF9uYW1lKHRhcmdldF9mYi0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKPiAtCQlr ZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWMuYwo+IGluZGV4IGMzMmZiM2MuLmYyOWQzYzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj LmMKPiBAQCAtODM1LDkgKzgzNSwxMCBAQCBzdGF0aWMgaW50IGRybV9hdG9taWNfcGxhbmVfY2hl Y2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkvKiBDaGVjayB3aGV0aGVyIHRoaXMgcGxh bmUgc3VwcG9ydHMgdGhlIGZiIHBpeGVsIGZvcm1hdC4gKi8KPiAgCXJldCA9IGRybV9wbGFuZV9j aGVja19waXhlbF9mb3JtYXQocGxhbmUsIHN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0KTsKPiAgCWlm IChyZXQpIHsKPiAtCQljaGFyICpmb3JtYXRfbmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUoc3Rh dGUtPmZiLT5waXhlbF9mb3JtYXQpOwo+IC0JCURSTV9ERUJVR19BVE9NSUMoIkludmFsaWQgcGl4 ZWwgZm9ybWF0ICVzXG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJc3RydWN0IGRybV9mb3JtYXRfbmFt ZV9idWYgZm9ybWF0X25hbWU7Cj4gKwkJRFJNX0RFQlVHX0FUT01JQygiSW52YWxpZCBwaXhlbCBm b3JtYXQgJXNcbiIsCj4gKwkJICAgICAgICAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHN0 YXRlLT5mYi0+cGl4ZWxfZm9ybWF0LAo+ICsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmZm9ybWF0X25hbWUpKTsKPiAtCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJcmV0 dXJuIHJldDsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0 Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBpbmRleCAxMzQ0MWUyLi4wOGFjMjE2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9jcnRjLmMKPiBAQCAtODI3LDkgKzgyNywxMCBAQCBpbnQgZHJtX21vZGVf c2V0Y3J0YyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJCQlyZXQgPSBk cm1fcGxhbmVfY2hlY2tfcGl4ZWxfZm9ybWF0KGNydGMtPnByaW1hcnksCj4gIAkJCQkJCQkgICBm Yi0+cGl4ZWxfZm9ybWF0KTsKPiAgCQkJaWYgKHJldCkgewo+IC0JCQkJY2hhciAqZm9ybWF0X25h bWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5waXhlbF9mb3JtYXQpOwo+IC0JCQkJRFJNX0RF QlVHX0tNUygiSW52YWxpZCBwaXhlbCBmb3JtYXQgJXNcbiIsIGZvcm1hdF9uYW1lKTsKPiArCQkJ CXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZvcm1hdF9uYW1lOwo+ICsJCQkJRFJNX0RFQlVH X0tNUygiSW52YWxpZCBwaXhlbCBmb3JtYXQgJXNcbiIsCj4gKwkJCQkgICAgICAgICAgICAgIGRy bV9nZXRfZm9ybWF0X25hbWUoZmItPnBpeGVsX2Zvcm1hdCwKPiArCQkJCSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmZm9ybWF0X25hbWUpKTsKPiAtCQkJCWtmcmVlKGZvcm1hdF9u YW1lKTsKPiAgCQkJCWdvdG8gb3V0Owo+ICAJCQl9Cj4gIAkJfQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZyYW1l YnVmZmVyLmMKPiBpbmRleCA0OWZkN2RiLi5kZjZiMTgwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZnJhbWVidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZnJh bWVidWZmZXIuYwo+IEBAIC0xMzMsOSArMTMzLDEwIEBAIHN0YXRpYyBpbnQgZnJhbWVidWZmZXJf Y2hlY2soY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKnIpCj4gIAo+ICAJaW5mbyA9IF9f ZHJtX2Zvcm1hdF9pbmZvKHItPnBpeGVsX2Zvcm1hdCAmIH5EUk1fRk9STUFUX0JJR19FTkRJQU4p Owo+ICAJaWYgKCFpbmZvKSB7Cj4gLQkJY2hhciAqZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1h dF9uYW1lKHItPnBpeGVsX2Zvcm1hdCk7Cj4gLQkJRFJNX0RFQlVHX0tNUygiYmFkIGZyYW1lYnVm ZmVyIGZvcm1hdCAlc1xuIiwgZm9ybWF0X25hbWUpOwo+ICsJCXN0cnVjdCBkcm1fZm9ybWF0X25h bWVfYnVmIGZvcm1hdF9uYW1lOwo+ICsJCURSTV9ERUJVR19LTVMoImJhZCBmcmFtZWJ1ZmZlciBm b3JtYXQgJXNcbiIsCj4gKwkJICAgICAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHItPnBp eGVsX2Zvcm1hdCwKPiArCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1h dF9uYW1lKSk7Cj4gLQkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2hlbHBl ci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlci5jCj4gaW5kZXggMjU0NGRm ZS4uMmY0NTJiMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzZXRfaGVs cGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzZXRfaGVscGVyLmMKPiBAQCAt NzUsMTAgKzc1LDExIEBAIHZvaWQgZHJtX2hlbHBlcl9tb2RlX2ZpbGxfZmJfc3RydWN0KHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICAKPiAgCWluZm8gPSBkcm1fZm9ybWF0X2luZm8obW9k ZV9jbWQtPnBpeGVsX2Zvcm1hdCk7Cj4gIAlpZiAoIWluZm8gfHwgIWluZm8tPmRlcHRoKSB7Cj4g LQkJY2hhciAqZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhl bF9mb3JtYXQpOwo+ICsJCXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZvcm1hdF9uYW1lOwo+ ICAKPiAtCQlEUk1fREVCVUdfS01TKCJub24tUkdCIHBpeGVsIGZvcm1hdCAlc1xuIiwgZm9ybWF0 X25hbWUpOwo+ICsJCURSTV9ERUJVR19LTVMoIm5vbi1SR0IgcGl4ZWwgZm9ybWF0ICVzXG4iLAo+ ICsJCSAgICAgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9y bWF0LAo+ICsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0X25hbWUp KTsKPiAtCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAo+ICAJCWZiLT5kZXB0aCA9IDA7Cj4gIAkJ ZmItPmJpdHNfcGVyX3BpeGVsID0gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4gaW5kZXggMjQ5YzBhZS4u MmJhMGMyMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKPiBAQCAtNDc5LDkgKzQ3OSwxMCBAQCBzdGF0 aWMgaW50IF9fc2V0cGxhbmVfaW50ZXJuYWwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkv KiBDaGVjayB3aGV0aGVyIHRoaXMgcGxhbmUgc3VwcG9ydHMgdGhlIGZiIHBpeGVsIGZvcm1hdC4g Ki8KPiAgCXJldCA9IGRybV9wbGFuZV9jaGVja19waXhlbF9mb3JtYXQocGxhbmUsIGZiLT5waXhl bF9mb3JtYXQpOwo+ICAJaWYgKHJldCkgewo+IC0JCWNoYXIgKmZvcm1hdF9uYW1lID0gZHJtX2dl dF9mb3JtYXRfbmFtZShmYi0+cGl4ZWxfZm9ybWF0KTsKPiAtCQlEUk1fREVCVUdfS01TKCJJbnZh bGlkIHBpeGVsIGZvcm1hdCAlc1xuIiwgZm9ybWF0X25hbWUpOwo+ICsJCXN0cnVjdCBkcm1fZm9y bWF0X25hbWVfYnVmIGZvcm1hdF9uYW1lOwo+ICsJCURSTV9ERUJVR19LTVMoIkludmFsaWQgcGl4 ZWwgZm9ybWF0ICVzXG4iLAo+ICsJCSAgICAgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShm Yi0+cGl4ZWxfZm9ybWF0LAo+ICsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm Zm9ybWF0X25hbWUpKTsKPiAtCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJZ290byBvdXQ7Cj4g IAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2tpcmluL2tp cmluX2RybV9hZGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJt X2FkZS5jCj4gaW5kZXggN2U3YTRkNC4uYWZjMmI1ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaGlzaWxpY29uL2tpcmluL2tpcmluX2RybV9hZGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9oaXNpbGljb24va2lyaW4va2lyaW5fZHJtX2FkZS5jCj4gQEAgLTYwOCwxNyArNjA4LDE2 IEBAIHN0YXRpYyB2b2lkIGFkZV9yZG1hX3NldCh2b2lkIF9faW9tZW0gKmJhc2UsIHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiLAo+ICAJCQkgdTMyIGNoLCB1MzIgeSwgdTMyIGluX2gsIHUzMiBm bXQpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKm9iaiA9IGRybV9mYl9jbWFf Z2V0X2dlbV9vYmooZmIsIDApOwo+IC0JY2hhciAqZm9ybWF0X25hbWU7Cj4gKwlzdHJ1Y3QgZHJt X2Zvcm1hdF9uYW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAgCXUzMiByZWdfY3RybCwgcmVnX2FkZHIs IHJlZ19zaXplLCByZWdfc3RyaWRlLCByZWdfc3BhY2UsIHJlZ19lbjsKPiAgCXUzMiBzdHJpZGUg PSBmYi0+cGl0Y2hlc1swXTsKPiAgCXUzMiBhZGRyID0gKHUzMilvYmotPnBhZGRyICsgeSAqIHN0 cmlkZTsKPiAgCj4gIAlEUk1fREVCVUdfRFJJVkVSKCJyZG1hJWQ6ICh5PSVkLCBoZWlnaHQ9JWQp LCBzdHJpZGU9JWQsIHBhZGRyPTB4JXhcbiIsCj4gIAkJCSBjaCArIDEsIHksIGluX2gsIHN0cmlk ZSwgKHUzMilvYmotPnBhZGRyKTsKPiAtCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFt ZShmYi0+cGl4ZWxfZm9ybWF0KTsKPiAgCURSTV9ERUJVR19EUklWRVIoImFkZHI9MHgleCwgZmI6 JWR4JWQsIHBpeGVsX2Zvcm1hdD0lZCglcylcbiIsCj4gLQkJCSBhZGRyLCBmYi0+d2lkdGgsIGZi LT5oZWlnaHQsIGZtdCwgZm9ybWF0X25hbWUpOwo+ICsJCQkgYWRkciwgZmItPndpZHRoLCBmYi0+ aGVpZ2h0LCBmbXQsCj4gKwkJCSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5waXhlbF9mb3JtYXQs ICZmb3JtYXRfbmFtZSkpOwo+IC0Ja2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAKPiAgCS8qIGdldCBy ZWcgb2Zmc2V0ICovCj4gIAlyZWdfY3RybCA9IFJEX0NIX0NUUkwoY2gpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggMjA2MzhkMi4uNjcwNDIzZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTI5NzEsNyArMjk3MSw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX3BsYW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YykKPiAgCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRl bF9jcnRjLCBpbnRlbF9wbGFuZSkgewo+ICAJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRl Owo+ICAJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gJmludGVsX3BsYW5lLT5iYXNlOwo+IC0J CWNoYXIgKmZvcm1hdF9uYW1lOwo+ICsJCXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZvcm1h dF9uYW1lOwo+ICAKPiAgCQlpZiAoIXBsYW5lLT5zdGF0ZSkgewo+ICAJCQlzZXFfcHV0cyhtLCAi cGxhbmUtPnN0YXRlIGlzIE5VTEwhXG4iKTsKPiBAQCAtMjk4MSw5ICsyOTgxLDkgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcGxhbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjKQo+ICAJCXN0YXRlID0gcGxhbmUtPnN0YXRlOwo+ICAKPiAgCQlpZiAo c3RhdGUtPmZiKSB7Cj4gLQkJCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZShzdGF0 ZS0+ZmItPnBpeGVsX2Zvcm1hdCk7Cj4gKwkJCWRybV9nZXRfZm9ybWF0X25hbWUoc3RhdGUtPmZi LT5waXhlbF9mb3JtYXQsICZmb3JtYXRfbmFtZSk7Cj4gIAkJfSBlbHNlIHsKPiAtCQkJZm9ybWF0 X25hbWUgPSBrc3RyZHVwKCJOL0EiLCBHRlBfS0VSTkVMKTsKPiArCQkJc3ByaW50Zihmb3JtYXRf bmFtZS5zdHIsICJOL0EiKTsKPiAgCQl9Cj4gIAo+ICAJCXNlcV9wcmludGYobSwgIlx0LS1QbGFu ZSBpZCAlZDogdHlwZT0lcywgY3J0Y19wb3M9JTRkeCU0ZCwgY3J0Y19zaXplPSU0ZHglNGQsIHNy Y19wb3M9JWQuJTA0dXglZC4lMDR1LCBzcmNfc2l6ZT0lZC4lMDR1eCVkLiUwNHUsIGZvcm1hdD0l cywgcm90YXRpb249JXNcbiIsCj4gQEAgLTI5OTksMTAgKzI5OTksOCBAQCBzdGF0aWMgdm9pZCBp bnRlbF9wbGFuZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMpCj4gIAkJCSAgICgoc3RhdGUtPnNyY193ICYgMHhmZmZmKSAqIDE1NjI1KSA+PiAx MCwKPiAgCQkJICAgKHN0YXRlLT5zcmNfaCA+PiAxNiksCj4gIAkJCSAgICgoc3RhdGUtPnNyY19o ICYgMHhmZmZmKSAqIDE1NjI1KSA+PiAxMCwKPiAtCQkJICAgZm9ybWF0X25hbWUsCj4gKwkJCSAg IGZvcm1hdF9uYW1lLnN0ciwKPiAgCQkJICAgcGxhbmVfcm90YXRpb24oc3RhdGUtPnJvdGF0aW9u KSk7Cj4gLQo+IC0JCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCX0KPiAgfQo+ICAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IGluZGV4IGM3NjJhZTUuLjZjNzZl M2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5l LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IEBA IC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2soc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUgPyBjcnRj X3N0YXRlLT5waXBlX3NyY19oIDogMDsKPiAgCj4gIAlpZiAoc3RhdGUtPmZiICYmIGRybV9yb3Rh dGlvbl85MF9vcl8yNzAoc3RhdGUtPnJvdGF0aW9uKSkgewo+IC0JCWNoYXIgKmZvcm1hdF9uYW1l Owo+ICsJCXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZvcm1hdF9uYW1lOwo+ICAKPiAgCQlp ZiAoIShzdGF0ZS0+ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8 Cj4gIAkJCXN0YXRlLT5mYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVE KSkgewo+IEBAIC0xNTksOSArMTU5LDkgQEAgc3RhdGljIGludCBpbnRlbF9wbGFuZV9hdG9taWNf Y2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJc3dpdGNoIChzdGF0ZS0+ZmItPnBp eGVsX2Zvcm1hdCkgewo+ICAJCWNhc2UgRFJNX0ZPUk1BVF9DODoKPiAgCQljYXNlIERSTV9GT1JN QVRfUkdCNTY1Ogo+IC0JCQlmb3JtYXRfbmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUoc3RhdGUt PmZiLT5waXhlbF9mb3JtYXQpOwo+IC0JCQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBwaXhl bCBmb3JtYXQgJXMgZm9yIDkwLzI3MCFcbiIsIGZvcm1hdF9uYW1lKTsKPiArCQkJRFJNX0RFQlVH X0tNUygiVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICVzIGZvciA5MC8yNzAhXG4iLAo+ICsJCQkg ICAgICAgICAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUoc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQs Cj4gKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0X25hbWUpKTsK PiAtCQkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAkJ ZGVmYXVsdDoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNmY4ZjZl Yy4uODIwOTE3MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAt MTI4NzEsNyArMTI4NzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29uZmlnKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAKPiAgCURSTV9ERUJVR19LTVMoInBsYW5lcyBvbiB0 aGlzIGNydGNcbiIpOwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShwbGFuZSwgJmRldi0+bW9kZV9j b25maWcucGxhbmVfbGlzdCwgaGVhZCkgewo+IC0JCWNoYXIgKmZvcm1hdF9uYW1lOwo+ICsJCXN0 cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZvcm1hdF9uYW1lOwo+ICAJCWludGVsX3BsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICAJCWlmIChpbnRlbF9wbGFuZS0+cGlwZSAhPSBjcnRj LT5waXBlKQo+ICAJCQljb250aW51ZTsKPiBAQCAtMTI4ODQsMTIgKzEyODg0LDExIEBAIHN0YXRp YyB2b2lkIGludGVsX2R1bXBfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4g IAkJCWNvbnRpbnVlOwo+ICAJCX0KPiAgCj4gLQkJZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1h dF9uYW1lKGZiLT5waXhlbF9mb3JtYXQpOwo+IC0KPiAgCQlEUk1fREVCVUdfS01TKCJbUExBTkU6 JWQ6JXNdIGVuYWJsZWQiLAo+ICAJCQkgICAgICBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUp Owo+ICAJCURSTV9ERUJVR19LTVMoIlx0RkI6JWQsIGZiID0gJXV4JXUgZm9ybWF0ID0gJXMiLAo+ IC0JCQkgICAgICBmYi0+YmFzZS5pZCwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LCBmb3JtYXRfbmFt ZSk7Cj4gKwkJCSAgICAgIGZiLT5iYXNlLmlkLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCj4gKwkJ CSAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUoZmItPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9uYW1l KSk7Cj4gIAkJRFJNX0RFQlVHX0tNUygiXHRzY2FsZXI6JWQgc3JjICVkeCVkKyVkKyVkIGRzdCAl ZHglZCslZCslZFxuIiwKPiAgCQkJICAgICAgc3RhdGUtPnNjYWxlcl9pZCwKPiAgCQkJICAgICAg c3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2LAo+IEBAIC0xMjg5OSw4ICsxMjg5OCw2IEBAIHN0YXRp YyB2b2lkIGludGVsX2R1bXBfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4g IAkJCSAgICAgIHN0YXRlLT5iYXNlLmRzdC54MSwgc3RhdGUtPmJhc2UuZHN0LnkxLAo+ICAJCQkg ICAgICBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPmJhc2UuZHN0KSwKPiAgCQkJICAgICAgZHJtX3Jl Y3RfaGVpZ2h0KCZzdGF0ZS0+YmFzZS5kc3QpKTsKPiAtCj4gLQkJa2ZyZWUoZm9ybWF0X25hbWUp Owo+ICAJfQo+ICB9Cj4gIAo+IEBAIC0xNTc0OSw3ICsxNTc0Niw3IEBAIHN0YXRpYyBpbnQgaW50 ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJdW5zaWduZWQg aW50IHRpbGluZyA9IGk5MTVfZ2VtX29iamVjdF9nZXRfdGlsaW5nKG9iaik7Cj4gIAlpbnQgcmV0 Owo+ICAJdTMyIHBpdGNoX2xpbWl0LCBzdHJpZGVfYWxpZ25tZW50Owo+IC0JY2hhciAqZm9ybWF0 X25hbWU7Cj4gKwlzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAgCj4g IAlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7Cj4gIAo+IEBA IC0xNTg0MCwxOCArMTU4MzcsMTYgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJYnJlYWs7Cj4gIAljYXNlIERSTV9GT1JNQVRf WFJHQjE1NTU6Cj4gIAkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gMykgewo+IC0JCQlmb3Jt YXRfbmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCk7Cj4g LQkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwgZm9ybWF0X25h bWUpOwo+ICsJCQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4g KwkJCSAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQs ICZmb3JtYXRfbmFtZSkpOwo+IC0JCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4gIAkJCXJldHVybiAt RUlOVkFMOwo+ICAJCX0KPiAgCQlicmVhazsKPiAgCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoK PiAgCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVXKGRldl9w cml2KSAmJgo+ICAJCSAgICBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpIHsKPiAtCQkJZm9ybWF0 X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpOwo+IC0J CQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsIGZvcm1hdF9uYW1l KTsKPiArCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+ICsJ CQkgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0LCAm Zm9ybWF0X25hbWUpKTsKPiAtCQkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCQlyZXR1cm4gLUVJ TlZBTDsKPiAgCQl9Cj4gIAkJYnJlYWs7Cj4gQEAgLTE1ODU5LDE3ICsxNTg1NCwxNSBAQCBzdGF0 aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg CWNhc2UgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMDoKPiAgCWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEw MTAxMDoKPiAgCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KSB7Cj4gLQkJCWZvcm1hdF9u YW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KTsKPiAtCQkJ RFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLCBmb3JtYXRfbmFtZSk7 Cj4gKwkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwKPiArCQkJ ICAgICAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgJmZv cm1hdF9uYW1lKSk7Cj4gLQkJCWtmcmVlKGZvcm1hdF9uYW1lKTsKPiAgCQkJcmV0dXJuIC1FSU5W QUw7Cj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAJY2FzZSBEUk1fRk9STUFUX0FCR1IyMTAxMDEwOgo+ ICAJCWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2X3By aXYpKSB7Cj4gLQkJCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+ cGl4ZWxfZm9ybWF0KTsKPiAtCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6 ICVzXG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwg Zm9ybWF0OiAlc1xuIiwKPiArCQkJICAgICAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9j bWQtPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9uYW1lKSk7Cj4gLQkJCWtmcmVlKGZvcm1hdF9uYW1l KTsKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJfQo+ICAJCWJyZWFrOwo+IEBAIC0xNTg3OCwx NiArMTU4NzEsMTQgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gIAljYXNlIERSTV9GT1JNQVRfWVZZVToKPiAgCWNhc2UgRFJNX0ZP Uk1BVF9WWVVZOgo+ICAJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDUpIHsKPiAtCQkJZm9y bWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpOwo+ IC0JCQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsIGZvcm1hdF9u YW1lKTsKPiArCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAo+ ICsJCQkgICAgICAgICAgZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0 LCAmZm9ybWF0X25hbWUpKTsKPiAtCQkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCQlyZXR1cm4g LUVJTlZBTDsKPiAgCQl9Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0JCWZvcm1hdF9uYW1l ID0gZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KTsKPiAtCQlEUk1f REVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsIGZvcm1hdF9uYW1lKTsKPiAr CQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNcbiIsCj4gKwkJICAgICAg ICAgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgJmZvcm1hdF9u YW1lKSk7Cj4gLQkJa2ZyZWUoZm9ybWF0X25hbWUpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJ fQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlvc19jcnRj LmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMuYwo+IGluZGV4IDc0Zjk5 YmEuLjA1ZjRlYmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9hdG9tYmlv c19jcnRjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2F0b21iaW9zX2NydGMuYwo+ IEBAIC0xMTU2LDcgKzExNTYsNyBAQCBzdGF0aWMgaW50IGRjZTRfY3J0Y19kb19zZXRfYmFzZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAl1MzIgdG1wLCB2aWV3cG9ydF93LCB2aWV3cG9ydF9o Owo+ICAJaW50IHI7Cj4gIAlib29sIGJ5cGFzc19sdXQgPSBmYWxzZTsKPiAtCWNoYXIgKmZvcm1h dF9uYW1lOwo+ICsJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7Cj4gIAo+ ICAJLyogbm8gZmIgYm91bmQgKi8KPiAgCWlmICghYXRvbWljICYmICFjcnRjLT5wcmltYXJ5LT5m Yikgewo+IEBAIC0xMjYwLDkgKzEyNjAsOCBAQCBzdGF0aWMgaW50IGRjZTRfY3J0Y19kb19zZXRf YmFzZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJYnlwYXNzX2x1dCA9IHRydWU7Cj4gIAkJ YnJlYWs7Cj4gIAlkZWZhdWx0Ogo+IC0JCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFt ZSh0YXJnZXRfZmItPnBpeGVsX2Zvcm1hdCk7Cj4gLQkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBz Y3JlZW4gZm9ybWF0ICVzXG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJRFJNX0VSUk9SKCJVbnN1cHBv cnRlZCBzY3JlZW4gZm9ybWF0ICVzXG4iLAo+ICsJCSAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9u YW1lKHRhcmdldF9mYi0+cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKPiAtCQlrZnJlZShm b3JtYXRfbmFtZSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IEBAIC0xNDczLDcg KzE0NzIsNyBAQCBzdGF0aWMgaW50IGF2aXZvX2NydGNfZG9fc2V0X2Jhc2Uoc3RydWN0IGRybV9j cnRjICpjcnRjLAo+ICAJdTMyIHZpZXdwb3J0X3csIHZpZXdwb3J0X2g7Cj4gIAlpbnQgcjsKPiAg CWJvb2wgYnlwYXNzX2x1dCA9IGZhbHNlOwo+IC0JY2hhciAqZm9ybWF0X25hbWU7Cj4gKwlzdHJ1 Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAgCj4gIAkvKiBubyBmYiBib3Vu ZCAqLwo+ICAJaWYgKCFhdG9taWMgJiYgIWNydGMtPnByaW1hcnktPmZiKSB7Cj4gQEAgLTE1NjMs OSArMTU2Miw4IEBAIHN0YXRpYyBpbnQgYXZpdm9fY3J0Y19kb19zZXRfYmFzZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gIAkJYnlwYXNzX2x1dCA9IHRydWU7Cj4gIAkJYnJlYWs7Cj4gIAlkZWZh dWx0Ogo+IC0JCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZSh0YXJnZXRfZmItPnBp eGVsX2Zvcm1hdCk7Cj4gLQkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBzY3JlZW4gZm9ybWF0ICVz XG4iLCBmb3JtYXRfbmFtZSk7Cj4gKwkJRFJNX0VSUk9SKCJVbnN1cHBvcnRlZCBzY3JlZW4gZm9y bWF0ICVzXG4iLAo+ICsJCSAgICAgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKHRhcmdldF9mYi0+ cGl4ZWxfZm9ybWF0LCAmZm9ybWF0X25hbWUpKTsKPiAtCQlrZnJlZShmb3JtYXRfbmFtZSk7Cj4g IAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2tt cy5jCj4gaW5kZXggYzk2NTUxNC4uZTNmNjhjYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X2ttcy5jCj4gQEAgLTk4NSw4ICs5ODUsOSBAQCBzdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqdm13X2ttc19mYl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAlp bmZvID0gZHJtX2Zvcm1hdF9pbmZvKG1vZGVfY21kMi0+cGl4ZWxfZm9ybWF0KTsKPiAgCWlmICgh aW5mbyB8fCAhaW5mby0+ZGVwdGgpIHsKPiArCQlzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiBm b3JtYXRfbmFtZTsKPiAgCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIGZyYW1lYnVmZmVyIGZvcm1h dCAlc1xuIiwKPiAtCQkJICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kMi0+cGl4ZWxfZm9y bWF0KSk7Cj4gKwkJICAgICAgICAgIGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQyLT5waXhl bF9mb3JtYXQsICZmb3JtYXRfbmFtZSkpOwo+ICAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ ICAJfQoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRl cgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752198AbcKGIKx convert rfc822-to-8bit (ORCPT ); Mon, 7 Nov 2016 03:10:53 -0500 Received: from mga14.intel.com ([192.55.52.115]:60524 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751218AbcKGIKb (ORCPT ); Mon, 7 Nov 2016 03:10:31 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,605,1473145200"; d="scan'208";a="783325809" From: Jani Nikula To: Eric Engestrom , linux-kernel@vger.kernel.org Cc: Ville =?utf-8?B?U3lyasOkbMOk?= , Eric Engestrom , Rob Clark , Christian =?utf-8?Q?K=C3=B6nig?= , Alex Deucher , David Airlie , Xinliang Liu , Daniel Vetter , VMware Graphics , Sinclair Yeh , Thomas Hellstrom , Tom St Denis , Michel =?utf-8?Q?D=C3=A4nzer?= , Gustavo Padovan , Emily Deng , Chunming Zhou , Flora Cui , Vitaly Prosyak , Colin Ian King , Ken Wang , Alexandre Demers , Eric Engestrom , Junwei Zhang , Xinwei Kong , Wei Yongjun , Chris Wilson , Laurent Pinchart , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Subject: Re: [PATCH v2] drm: move allocation out of drm_get_format_name() In-Reply-To: <20161107004821.25369-1-eric@engestrom.ch> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20161107004713.GA26032@engestrom.ch> <20161107004821.25369-1-eric@engestrom.ch> Date: Mon, 07 Nov 2016 10:10:13 +0200 Message-ID: <8760nzaexm.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 07 Nov 2016, Eric Engestrom wrote: > Fixes: 90844f00049e9f42573fd31d7c32e8fd31d3fd07 > > drm: make drm_get_format_name thread-safe > > Signed-off-by: Eric Engestrom > [danvet: Clarify that the returned pointer must be freed with > kfree().] > Signed-off-by: Daniel Vetter The Fixes: format is: Fixes: 90844f00049e ("drm: make drm_get_format_name thread-safe") But is this a fix, really, or just an improvement? What exactly is the bug being fixed? The commit message is not sufficient. > Cc: Rob Clark > Cc: Christian König > Suggested-by: Ville Syrjälä > Signed-off-by: Eric Engestrom > --- > > v2: use single-field struct instead of typedef to let the compiler > enforce the type (Christian König) Just to make it clear: NAK three times over for v1. This patch is definitely a better alternative. > > --- > include/drm/drm_fourcc.h | 10 +++++- > drivers/gpu/drm/drm_fourcc.c | 14 +++------ > drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 7 ++--- > drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 7 ++--- > drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 3 +- > drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 7 ++--- > drivers/gpu/drm/drm_atomic.c | 7 +++-- > drivers/gpu/drm/drm_crtc.c | 7 +++-- > drivers/gpu/drm/drm_framebuffer.c | 7 +++-- > drivers/gpu/drm/drm_modeset_helper.c | 7 +++-- > drivers/gpu/drm/drm_plane.c | 7 +++-- > drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c | 7 ++--- > drivers/gpu/drm/i915/i915_debugfs.c | 10 +++--- > drivers/gpu/drm/i915/intel_atomic_plane.c | 8 ++--- > drivers/gpu/drm/i915/intel_display.c | 41 ++++++++++--------------- > drivers/gpu/drm/radeon/atombios_crtc.c | 14 ++++----- > drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 3 +- > 17 files changed, 80 insertions(+), 86 deletions(-) > > diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h > index dc0aafa..4b03ca0 100644 > --- a/include/drm/drm_fourcc.h > +++ b/include/drm/drm_fourcc.h > @@ -45,6 +45,14 @@ struct drm_format_info { > u8 vsub; > }; > > +/** > + * struct drm_format_name_buf - name of a DRM format > + * @str: string buffer containing the format name > + */ > +struct drm_format_name_buf { > + char str[32]; > +}; > + > const struct drm_format_info *__drm_format_info(u32 format); > const struct drm_format_info *drm_format_info(u32 format); > uint32_t drm_mode_legacy_fb_format(uint32_t bpp, uint32_t depth); > @@ -54,6 +62,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); > -char *drm_get_format_name(uint32_t format) __malloc; > +char *drm_get_format_name(uint32_t format, struct drm_format_name_buf *buf); I wonder if it would be better to make that return "const char *". If the user really wants to look under the hood, there's buf->str. *shrug* With the commit message improved, Reviewed-by: Jani Nikula > > #endif /* __DRM_FOURCC_H__ */ > diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c > index cbb8b77..99b0b60 100644 > --- a/drivers/gpu/drm/drm_fourcc.c > +++ b/drivers/gpu/drm/drm_fourcc.c > @@ -79,17 +79,13 @@ uint32_t drm_mode_legacy_fb_format(uint32_t bpp, uint32_t depth) > EXPORT_SYMBOL(drm_mode_legacy_fb_format); > > /** > - * drm_get_format_name - return a string for drm fourcc format > + * drm_get_format_name - fill a string with a drm fourcc format's name > * @format: format to compute name of > + * @buf: caller-supplied buffer > - * > - * Note that the buffer returned by this function is owned by the caller > - * and will need to be freed using kfree(). > */ > -char *drm_get_format_name(uint32_t format) > +char *drm_get_format_name(uint32_t format, struct drm_format_name_buf *buf) > { > - char *buf = kmalloc(32, GFP_KERNEL); > - > - snprintf(buf, 32, > + snprintf(buf->str, sizeof(buf->str), > "%c%c%c%c %s-endian (0x%08x)", > printable_char(format & 0xff), > printable_char((format >> 8) & 0xff), > @@ -98,7 +94,7 @@ char *drm_get_format_name(uint32_t format) > format & DRM_FORMAT_BIG_ENDIAN ? "big" : "little", > format); > > - return buf; > + return buf->str; > } > EXPORT_SYMBOL(drm_get_format_name); > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > index 199d3f7..2924cdd 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > @@ -2032,7 +2032,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; > - char *format_name; > + struct drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -2144,9 +2144,8 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - format_name = drm_get_format_name(target_fb->pixel_format); > - DRM_ERROR("Unsupported screen format %s\n", format_name); > + DRM_ERROR("Unsupported screen format %s\n", > + drm_get_format_name(target_fb->pixel_format, &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 ecd000e..f0e3c5c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c > @@ -2013,7 +2013,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; > - char *format_name; > + struct drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -2125,9 +2125,8 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - format_name = drm_get_format_name(target_fb->pixel_format); > - DRM_ERROR("Unsupported screen format %s\n", format_name); > + DRM_ERROR("Unsupported screen format %s\n", > + drm_get_format_name(target_fb->pixel_format, &format_name)); > - kfree(format_name); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c > index 44547f9..5c6b82f 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c > @@ -1456,6 +1456,7 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc, > u32 viewport_w, viewport_h; > int r; > bool bypass_lut = false; > + struct drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -1559,7 +1560,7 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc, > break; > default: > DRM_ERROR("Unsupported screen format %s\n", > - drm_get_format_name(target_fb->pixel_format)); > + drm_get_format_name(target_fb->pixel_format, &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 979aedf..5aef19d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c > @@ -1910,7 +1910,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; > - char *format_name; > + struct drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -2015,9 +2015,8 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - format_name = drm_get_format_name(target_fb->pixel_format); > - DRM_ERROR("Unsupported screen format %s\n", format_name); > + DRM_ERROR("Unsupported screen format %s\n", > + drm_get_format_name(target_fb->pixel_format, &format_name)); > - kfree(format_name); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c > index c32fb3c..f29d3c5 100644 > --- a/drivers/gpu/drm/drm_atomic.c > +++ b/drivers/gpu/drm/drm_atomic.c > @@ -835,9 +835,10 @@ 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) { > - char *format_name = drm_get_format_name(state->fb->pixel_format); > - DRM_DEBUG_ATOMIC("Invalid pixel format %s\n", format_name); > + struct drm_format_name_buf format_name; > + DRM_DEBUG_ATOMIC("Invalid pixel format %s\n", > + drm_get_format_name(state->fb->pixel_format, > + &format_name)); > - kfree(format_name); > return ret; > } > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 13441e2..08ac216 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -827,9 +827,10 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data, > ret = drm_plane_check_pixel_format(crtc->primary, > fb->pixel_format); > if (ret) { > - char *format_name = drm_get_format_name(fb->pixel_format); > - DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name); > + struct drm_format_name_buf format_name; > + DRM_DEBUG_KMS("Invalid pixel format %s\n", > + drm_get_format_name(fb->pixel_format, > + &format_name)); > - kfree(format_name); > goto out; > } > } > diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c > index 49fd7db..df6b180 100644 > --- a/drivers/gpu/drm/drm_framebuffer.c > +++ b/drivers/gpu/drm/drm_framebuffer.c > @@ -133,9 +133,10 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r) > > info = __drm_format_info(r->pixel_format & ~DRM_FORMAT_BIG_ENDIAN); > if (!info) { > - char *format_name = drm_get_format_name(r->pixel_format); > - DRM_DEBUG_KMS("bad framebuffer format %s\n", format_name); > + struct drm_format_name_buf format_name; > + DRM_DEBUG_KMS("bad framebuffer format %s\n", > + drm_get_format_name(r->pixel_format, > + &format_name)); > - kfree(format_name); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/drm_modeset_helper.c b/drivers/gpu/drm/drm_modeset_helper.c > index 2544dfe..2f452b3 100644 > --- a/drivers/gpu/drm/drm_modeset_helper.c > +++ b/drivers/gpu/drm/drm_modeset_helper.c > @@ -75,10 +75,11 @@ void drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb, > > info = drm_format_info(mode_cmd->pixel_format); > if (!info || !info->depth) { > - char *format_name = drm_get_format_name(mode_cmd->pixel_format); > + struct drm_format_name_buf format_name; > > - DRM_DEBUG_KMS("non-RGB pixel format %s\n", format_name); > + DRM_DEBUG_KMS("non-RGB pixel format %s\n", > + drm_get_format_name(mode_cmd->pixel_format, > + &format_name)); > - kfree(format_name); > > fb->depth = 0; > fb->bits_per_pixel = 0; > diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c > index 249c0ae..2ba0c22 100644 > --- a/drivers/gpu/drm/drm_plane.c > +++ b/drivers/gpu/drm/drm_plane.c > @@ -479,9 +479,10 @@ 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) { > - char *format_name = drm_get_format_name(fb->pixel_format); > - DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name); > + struct drm_format_name_buf format_name; > + DRM_DEBUG_KMS("Invalid pixel format %s\n", > + drm_get_format_name(fb->pixel_format, > + &format_name)); > - kfree(format_name); > goto out; > } > > diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > index 7e7a4d4..afc2b5d 100644 > --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c > @@ -608,17 +608,16 @@ 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); > - char *format_name; > + struct drm_format_name_buf 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, format_name); > + addr, fb->width, fb->height, fmt, > + drm_get_format_name(fb->pixel_format, &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 20638d2..670423e 100644 > --- a/drivers/gpu/drm/i915/i915_debugfs.c > +++ b/drivers/gpu/drm/i915/i915_debugfs.c > @@ -2971,7 +2971,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; > - char *format_name; > + struct drm_format_name_buf format_name; > > if (!plane->state) { > seq_puts(m, "plane->state is NULL!\n"); > @@ -2981,9 +2981,9 @@ 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); > + drm_get_format_name(state->fb->pixel_format, &format_name); > } else { > - format_name = kstrdup("N/A", GFP_KERNEL); > + sprintf(format_name.str, "N/A"); > } > > 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", > @@ -2999,10 +2999,8 @@ 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, > - format_name, > + format_name.str, > 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 c762ae5..6c76e3d 100644 > --- a/drivers/gpu/drm/i915/intel_atomic_plane.c > +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c > @@ -143,7 +143,7 @@ static int intel_plane_atomic_check(struct drm_plane *plane, > crtc_state->base.enable ? crtc_state->pipe_src_h : 0; > > if (state->fb && drm_rotation_90_or_270(state->rotation)) { > - char *format_name; > + struct drm_format_name_buf format_name; > > if (!(state->fb->modifier[0] == I915_FORMAT_MOD_Y_TILED || > state->fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED)) { > @@ -159,9 +159,9 @@ static int intel_plane_atomic_check(struct drm_plane *plane, > switch (state->fb->pixel_format) { > case DRM_FORMAT_C8: > case DRM_FORMAT_RGB565: > - format_name = drm_get_format_name(state->fb->pixel_format); > - DRM_DEBUG_KMS("Unsupported pixel format %s for 90/270!\n", format_name); > + DRM_DEBUG_KMS("Unsupported pixel format %s for 90/270!\n", > + drm_get_format_name(state->fb->pixel_format, > + &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 6f8f6ec..8209170 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -12871,7 +12871,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) { > - char *format_name; > + struct drm_format_name_buf format_name; > intel_plane = to_intel_plane(plane); > if (intel_plane->pipe != crtc->pipe) > continue; > @@ -12884,12 +12884,11 @@ 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, format_name); > + fb->base.id, fb->width, fb->height, > + drm_get_format_name(fb->pixel_format, &format_name)); > DRM_DEBUG_KMS("\tscaler:%d src %dx%d+%d+%d dst %dx%d+%d+%d\n", > state->scaler_id, > state->base.src.x1 >> 16, > @@ -12899,8 +12898,6 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc, > state->base.dst.x1, state->base.dst.y1, > drm_rect_width(&state->base.dst), > drm_rect_height(&state->base.dst)); > - > - kfree(format_name); > } > } > > @@ -15749,7 +15746,7 @@ static int intel_framebuffer_init(struct drm_device *dev, > unsigned int tiling = i915_gem_object_get_tiling(obj); > int ret; > u32 pitch_limit, stride_alignment; > - char *format_name; > + struct drm_format_name_buf format_name; > > WARN_ON(!mutex_is_locked(&dev->struct_mutex)); > > @@ -15840,18 +15837,16 @@ static int intel_framebuffer_init(struct drm_device *dev, > break; > case DRM_FORMAT_XRGB1555: > if (INTEL_INFO(dev)->gen > 3) { > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, &format_name)); > - kfree(format_name); > return -EINVAL; > } > break; > case DRM_FORMAT_ABGR8888: > if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv) && > INTEL_INFO(dev)->gen < 9) { > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, &format_name)); > - kfree(format_name); > return -EINVAL; > } > break; > @@ -15859,17 +15854,15 @@ static int intel_framebuffer_init(struct drm_device *dev, > case DRM_FORMAT_XRGB2101010: > case DRM_FORMAT_XBGR2101010: > if (INTEL_INFO(dev)->gen < 4) { > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, &format_name)); > - kfree(format_name); > return -EINVAL; > } > break; > case DRM_FORMAT_ABGR2101010: > if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv)) { > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, &format_name)); > - kfree(format_name); > return -EINVAL; > } > break; > @@ -15878,16 +15871,14 @@ static int intel_framebuffer_init(struct drm_device *dev, > case DRM_FORMAT_YVYU: > case DRM_FORMAT_VYUY: > if (INTEL_INFO(dev)->gen < 5) { > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, &format_name)); > - kfree(format_name); > return -EINVAL; > } > break; > default: > - format_name = drm_get_format_name(mode_cmd->pixel_format); > - DRM_DEBUG("unsupported pixel format: %s\n", format_name); > + DRM_DEBUG("unsupported pixel format: %s\n", > + drm_get_format_name(mode_cmd->pixel_format, &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 74f99ba..05f4ebe 100644 > --- a/drivers/gpu/drm/radeon/atombios_crtc.c > +++ b/drivers/gpu/drm/radeon/atombios_crtc.c > @@ -1156,7 +1156,7 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, > u32 tmp, viewport_w, viewport_h; > int r; > bool bypass_lut = false; > - char *format_name; > + struct drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -1260,9 +1260,8 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - format_name = drm_get_format_name(target_fb->pixel_format); > - DRM_ERROR("Unsupported screen format %s\n", format_name); > + DRM_ERROR("Unsupported screen format %s\n", > + drm_get_format_name(target_fb->pixel_format, &format_name)); > - kfree(format_name); > return -EINVAL; > } > > @@ -1473,7 +1472,7 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc, > u32 viewport_w, viewport_h; > int r; > bool bypass_lut = false; > - char *format_name; > + struct drm_format_name_buf format_name; > > /* no fb bound */ > if (!atomic && !crtc->primary->fb) { > @@ -1563,9 +1562,8 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc, > bypass_lut = true; > break; > default: > - format_name = drm_get_format_name(target_fb->pixel_format); > - DRM_ERROR("Unsupported screen format %s\n", format_name); > + DRM_ERROR("Unsupported screen format %s\n", > + drm_get_format_name(target_fb->pixel_format, &format_name)); > - kfree(format_name); > return -EINVAL; > } > > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > index c965514..e3f68cc 100644 > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c > @@ -985,8 +985,9 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev, > > info = drm_format_info(mode_cmd2->pixel_format); > if (!info || !info->depth) { > + struct drm_format_name_buf format_name; > DRM_ERROR("Unsupported framebuffer format %s\n", > - drm_get_format_name(mode_cmd2->pixel_format)); > + drm_get_format_name(mode_cmd2->pixel_format, &format_name)); > return ERR_PTR(-EINVAL); > } -- Jani Nikula, Intel Open Source Technology Center