From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH 2/2] drm/fb-helper: Automatically clean up fb_info Date: Tue, 7 Feb 2017 15:10:50 +0100 Message-ID: <20170207141050.1129-2-daniel.vetter@ffwll.ch> References: <20170207141050.1129-1-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7214C6E6C9 for ; Tue, 7 Feb 2017 14:10:58 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id r18so28592070wmd.3 for ; Tue, 07 Feb 2017 06:10:58 -0800 (PST) In-Reply-To: <20170207141050.1129-1-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: DRI Development Cc: Daniel Vetter , Intel Graphics Development , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org Tm90aWNlZCB0aGF0IGV2ZXJ5b25lIGR1cGxpY2F0ZXMgdGhlIHNhbWUgbG9naWMgaGVyZSBhbmQg d2UgY291bGQgc2FmZQphIGZldyBsaW5lcyBwZXIgZHJpdmVyLiBZYXkgZm9yIGxvdHMgb2YgZHJp dmVycyB0byBtYWtlIHN1Y2ggdGlueQpyZWZhY3RvcnMgd29ydGgtd2hpbGUhCgpDYzogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBTZWFuIFBhdWwgPHNlYW5wYXVs QGNocm9taXVtLm9yZz4KQ2M6IE5vcmFsZiBUcsO4bm5lcyA8bm9yYWxmQHRyb25uZXMub3JnPgpT aWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYyAgICAgICAgICAgIHwgMTEg KysrKy0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hcm1hZGEvYXJtYWRhX2ZiZGV2LmMgICAgICAg ICAgICAgfCAgMiAtLQogZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZmIuYyAgICAgICAgICAgICAg ICAgICAgICB8ICA5ICsrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2JvY2hzL2JvY2hzX2ZiZGV2 LmMgICAgICAgICAgICAgICB8ICA1ICstLS0tCiBkcml2ZXJzL2dwdS9kcm0vY2lycnVzL2NpcnJ1 c19mYmRldi5jICAgICAgICAgICAgIHwgIDEgLQogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFf aGVscGVyLmMgICAgICAgICAgICAgICB8ICAzICstLQogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9o ZWxwZXIuYyAgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrKysrKysrLS0KIGRyaXZlcnMv Z3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9mYmRldi5jICAgICAgICAgfCAgMiAtLQogZHJpdmVy cy9ncHUvZHJtL2dtYTUwMC9mcmFtZWJ1ZmZlci5jICAgICAgICAgICAgICB8ICA5ICsrKy0tLS0t LQogZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZmJkZXYuYyB8ICAz ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyAgICAgICAgICAgICAgICB8 ICA1ICstLS0tCiBkcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2ZiLmMgICAgICAgICAg ICAgIHwgIDUgKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZiZGV2LmMgICAgICAgICAg ICAgICAgICAgfCAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2ZiY29uLmMg ICAgICAgICAgIHwgIDEgLQogZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9mYmRldi5jICAg ICAgICAgICAgICB8ICA0IC0tLS0KIGRyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2ZiLmMgICAgICAg ICAgICAgICAgICAgICAgfCAgNSArLS0tLQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25f ZmIuYyAgICAgICAgICAgICAgICB8IDExICsrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvcm9ja2NoaXBfZHJtX2ZiZGV2LmMgICAgIHwgIDkgKysrLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vdGVncmEvZmIuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUgKy0tLS0KIGRyaXZl cnMvZ3B1L2RybS91ZGwvdWRsX2ZiLmMgICAgICAgICAgICAgICAgICAgICAgfCAgNSArLS0tLQog ZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2ZiLmMgICAgICAgICAgICAgICB8ICA1ICst LS0tCiBpbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmggICAgICAgICAgICAgICAgICAgICAgIHwg IDQgLS0tLQogMjIgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYwppbmRleCA4Mzg5NDNkMDk2 MmUuLmY0YTJmMWYwYTZjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2ZiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMK QEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgaW50IGFtZGdwdWZiX2NyZWF0ZShzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqaGVscGVyLAogCWluZm8gPSBkcm1fZmJfaGVscGVyX2FsbG9jX2ZiaShoZWxw ZXIpOwogCWlmIChJU19FUlIoaW5mbykpIHsKIAkJcmV0ID0gUFRSX0VSUihpbmZvKTsKLQkJZ290 byBvdXRfdW5yZWY7CisJCWdvdG8gb3V0OwogCX0KIAogCWluZm8tPnBhciA9IHJmYmRldjsKQEAg LTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMgaW50IGFtZGdwdWZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqaGVscGVyLAogCXJldCA9IGFtZGdwdV9mcmFtZWJ1ZmZlcl9pbml0KGFkZXYtPmRk ZXYsICZyZmJkZXYtPnJmYiwgJm1vZGVfY21kLCBnb2JqKTsKIAlpZiAocmV0KSB7CiAJCURSTV9F UlJPUigiZmFpbGVkIHRvIGluaXRpYWxpemUgZnJhbWVidWZmZXIgJWRcbiIsIHJldCk7Ci0JCWdv dG8gb3V0X2Rlc3Ryb3lfZmJpOworCQlnb3RvIG91dDsKIAl9CiAKIAlmYiA9ICZyZmJkZXYtPnJm Yi5iYXNlOwpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1ZmJfY3JlYXRlKHN0 cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCiAKIAlpZiAoaW5mby0+c2NyZWVuX2Jhc2UgPT0g TlVMTCkgewogCQlyZXQgPSAtRU5PU1BDOwotCQlnb3RvIG91dF9kZXN0cm95X2ZiaTsKKwkJZ290 byBvdXQ7CiAJfQogCiAJRFJNX0lORk8oImZiIG1hcHBhYmxlIGF0IDB4JWxYXG4iLCAgaW5mby0+ Zml4LnNtZW1fc3RhcnQpOwpAQCAtMjc4LDkgKzI3OCw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1ZmJf Y3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCiAJdmdhX3N3aXRjaGVyb29fY2xp ZW50X2ZiX3NldChhZGV2LT5kZGV2LT5wZGV2LCBpbmZvKTsKIAlyZXR1cm4gMDsKIAotb3V0X2Rl c3Ryb3lfZmJpOgotCWRybV9mYl9oZWxwZXJfcmVsZWFzZV9mYmkoaGVscGVyKTsKLW91dF91bnJl ZjoKK291dDoKIAlpZiAoYWJvKSB7CiAKIAl9CkBAIC0zMDQsNyArMzAyLDYgQEAgc3RhdGljIGlu dCBhbWRncHVfZmJkZXZfZGVzdHJveShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgYW1k Z3B1X2ZiZGV2ICpyZmIKIAlzdHJ1Y3QgYW1kZ3B1X2ZyYW1lYnVmZmVyICpyZmIgPSAmcmZiZGV2 LT5yZmI7CiAKIAlkcm1fZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJpKCZyZmJkZXYtPmhlbHBlcik7 Ci0JZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaSgmcmZiZGV2LT5oZWxwZXIpOwogCiAJaWYgKHJm Yi0+b2JqKSB7CiAJCWFtZGdwdWZiX2Rlc3Ryb3lfcGlubmVkX29iamVjdChyZmItPm9iaik7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9mYmRldi5jIGIvZHJpdmVy cy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfZmJkZXYuYwppbmRleCA3ODMzNTEwMGNiYzMuLjdmMTg0 YTUyNTk0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfZmJkZXYu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9mYmRldi5jCkBAIC0xNTcsNyAr MTU3LDYgQEAgaW50IGFybWFkYV9mYmRldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAK IAlyZXR1cm4gMDsKICBlcnJfZmJfc2V0dXA6Ci0JZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaShm YmgpOwogCWRybV9mYl9oZWxwZXJfZmluaShmYmgpOwogIGVycl9mYl9oZWxwZXI6CiAJcHJpdi0+ ZmJkZXYgPSBOVUxMOwpAQCAtMTc5LDcgKzE3OCw2IEBAIHZvaWQgYXJtYWRhX2ZiZGV2X2Zpbmko c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCWlmIChmYmgpIHsKIAkJZHJtX2ZiX2hlbHBlcl91 bnJlZ2lzdGVyX2ZiaShmYmgpOwotCQlkcm1fZmJfaGVscGVyX3JlbGVhc2VfZmJpKGZiaCk7CiAK IAkJZHJtX2ZiX2hlbHBlcl9maW5pKGZiaCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hc3QvYXN0X2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9mYi5jCmluZGV4IGIwODUx NDBmYWU5NS4uZjg0MjFkMjM5NDZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2Fz dF9mYi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2ZiLmMKQEAgLTIxNSwxMyArMjE1 LDEzIEBAIHN0YXRpYyBpbnQgYXN0ZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxw ZXIsCiAJaW5mbyA9IGRybV9mYl9oZWxwZXJfYWxsb2NfZmJpKGhlbHBlcik7CiAJaWYgKElTX0VS UihpbmZvKSkgewogCQlyZXQgPSBQVFJfRVJSKGluZm8pOwotCQlnb3RvIGVycl9mcmVlX3ZyYW07 CisJCWdvdG8gb3V0OwogCX0KIAlpbmZvLT5wYXIgPSBhZmJkZXY7CiAKIAlyZXQgPSBhc3RfZnJh bWVidWZmZXJfaW5pdChkZXYsICZhZmJkZXYtPmFmYiwgJm1vZGVfY21kLCBnb2JqKTsKIAlpZiAo cmV0KQotCQlnb3RvIGVycl9yZWxlYXNlX2ZiaTsKKwkJZ290byBvdXQ7CiAKIAlhZmJkZXYtPnN5 c3JhbSA9IHN5c3JhbTsKIAlhZmJkZXYtPnNpemUgPSBzaXplOwpAQCAtMjUwLDkgKzI1MCw3IEBA IHN0YXRpYyBpbnQgYXN0ZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCiAK IAlyZXR1cm4gMDsKIAotZXJyX3JlbGVhc2VfZmJpOgotCWRybV9mYl9oZWxwZXJfcmVsZWFzZV9m YmkoaGVscGVyKTsKLWVycl9mcmVlX3ZyYW06CitvdXQ6CiAJdmZyZWUoc3lzcmFtKTsKIAlyZXR1 cm4gcmV0OwogfQpAQCAtMjg3LDcgKzI4NSw2IEBAIHN0YXRpYyB2b2lkIGFzdF9mYmRldl9kZXN0 cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3RydWN0IGFzdF9mcmFtZWJ1ZmZlciAqYWZi ID0gJmFmYmRldi0+YWZiOwogCiAJZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaSgmYWZiZGV2 LT5oZWxwZXIpOwotCWRybV9mYl9oZWxwZXJfcmVsZWFzZV9mYmkoJmFmYmRldi0+aGVscGVyKTsK IAogCWlmIChhZmItPm9iaikgewogCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tl ZChhZmItPm9iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYm9jaHMvYm9jaHNfZmJk ZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9ib2Nocy9ib2Noc19mYmRldi5jCmluZGV4IDAzMTdjM2Rm NmEyMi4uZDk4MjFlNmQyYzNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYm9jaHMvYm9j aHNfZmJkZXYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYm9jaHMvYm9jaHNfZmJkZXYuYwpAQCAt MTA3LDEwICsxMDcsOCBAQCBzdGF0aWMgaW50IGJvY2hzZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJf aGVscGVyICpoZWxwZXIsCiAJaW5mby0+cGFyID0gJmJvY2hzLT5mYi5oZWxwZXI7CiAKIAlyZXQg PSBib2Noc19mcmFtZWJ1ZmZlcl9pbml0KGJvY2hzLT5kZXYsICZib2Nocy0+ZmIuZ2ZiLCAmbW9k ZV9jbWQsIGdvYmopOwotCWlmIChyZXQpIHsKLQkJZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaSho ZWxwZXIpOworCWlmIChyZXQpCiAJCXJldHVybiByZXQ7Ci0JfQogCiAJYm9jaHMtPmZiLnNpemUg PSBzaXplOwogCkBAIC0xNDQsNyArMTQyLDYgQEAgc3RhdGljIGludCBib2Noc19mYmRldl9kZXN0 cm95KHN0cnVjdCBib2Noc19kZXZpY2UgKmJvY2hzKQogCURSTV9ERUJVR19EUklWRVIoIlxuIik7 CiAKIAlkcm1fZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJpKCZib2Nocy0+ZmIuaGVscGVyKTsKLQlk cm1fZmJfaGVscGVyX3JlbGVhc2VfZmJpKCZib2Nocy0+ZmIuaGVscGVyKTsKIAogCWlmIChnZmIt Pm9iaikgewogCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChnZmItPm9iaik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vY2lycnVzL2NpcnJ1c19mYmRldi5jIGIvZHJp dmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfZmJkZXYuYwppbmRleCA3OWE1Y2QxMDgyNDUuLjYw NmRhMTU5NTVmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfZmJk ZXYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vY2lycnVzL2NpcnJ1c19mYmRldi5jCkBAIC0yNTAs NyArMjUwLDYgQEAgc3RhdGljIGludCBjaXJydXNfZmJkZXZfZGVzdHJveShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCXN0cnVjdCBjaXJydXNfZnJhbWVidWZmZXIgKmdmYiA9ICZnZmJkZXYtPmdm YjsKIAogCWRybV9mYl9oZWxwZXJfdW5yZWdpc3Rlcl9mYmkoJmdmYmRldi0+aGVscGVyKTsKLQlk cm1fZmJfaGVscGVyX3JlbGVhc2VfZmJpKCZnZmJkZXYtPmhlbHBlcik7CiAKIAlpZiAoZ2ZiLT5v YmopIHsKIAkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoZ2ZiLT5vYmopOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2ZiX2NtYV9oZWxwZXIuYwppbmRleCAwZWY4YjI4NGE0YjguLjQ1ZGYyNDVi NzlhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKQEAgLTQ3NSw3ICs0NzUsNyBA QCBkcm1fZmJkZXZfY21hX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogZXJy X2NtYV9kZXN0cm95OgogCWRybV9mcmFtZWJ1ZmZlcl9yZW1vdmUoJmZiZGV2X2NtYS0+ZmItPmZi KTsKIGVycl9mYl9pbmZvX2Rlc3Ryb3k6Ci0JZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaShoZWxw ZXIpOworCWRybV9mYl9oZWxwZXJfZmluaShoZWxwZXIpOwogZXJyX2dlbV9mcmVlX29iamVjdDoK IAlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZCgmb2JqLT5iYXNlKTsKIAlyZXR1 cm4gcmV0OwpAQCAtNTcxLDcgKzU3MSw2IEBAIHZvaWQgZHJtX2ZiZGV2X2NtYV9maW5pKHN0cnVj dCBkcm1fZmJkZXZfY21hICpmYmRldl9jbWEpCiAJZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2Zi aSgmZmJkZXZfY21hLT5mYl9oZWxwZXIpOwogCWlmIChmYmRldl9jbWEtPmZiX2hlbHBlci5mYmRl dikKIAkJZHJtX2ZiZGV2X2NtYV9kZWZpb19maW5pKGZiZGV2X2NtYS0+ZmJfaGVscGVyLmZiZGV2 KTsKLQlkcm1fZmJfaGVscGVyX3JlbGVhc2VfZmJpKCZmYmRldl9jbWEtPmZiX2hlbHBlcik7CiAK IAlpZiAoZmJkZXZfY21hLT5mYikKIAkJZHJtX2ZyYW1lYnVmZmVyX3JlbW92ZSgmZmJkZXZfY21h LT5mYi0+ZmIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKaW5kZXggNTIyMGE3YjVlNmZmLi4wNzRh YjIyYTdjZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwpAQCAtNzgxLDcgKzc4MSw5IEBAIEVY UE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9pbml0KTsKICAqIEBmYl9oZWxwZXI6IGRyaXZlci1h bGxvY2F0ZWQgZmJkZXYgaGVscGVyCiAgKgogICogQSBoZWxwZXIgdG8gYWxsb2MgZmJfaW5mbyBh bmQgdGhlIG1lbWJlcnMgY21hcCBhbmQgYXBlcnR1cmVzLiBDYWxsZWQKLSAqIGJ5IHRoZSBkcml2 ZXIgd2l0aGluIHRoZSBmYl9wcm9iZSBmYl9oZWxwZXIgY2FsbGJhY2sgZnVuY3Rpb24uCisgKiBi eSB0aGUgZHJpdmVyIHdpdGhpbiB0aGUgZmJfcHJvYmUgZmJfaGVscGVyIGNhbGxiYWNrIGZ1bmN0 aW9uLiBEcml2ZXJzIGRvIG5vdAorICogbmVlZCB0byByZWxlYXNlIHRoZSBhbGxvY2F0ZWQgZmJf aW5mbyBzdHJ1Y3R1cmUgdGhlbXNlbHZlcywgdGhpcyBpcworICogYXV0b21hdGljYWxseSBkb25l IHdoZW4gY2FsbGluZyBkcm1fZmJfaGVscGVyX2ZpbmkoKS4KICAqCiAgKiBSRVRVUk5TOgogICog ZmJfaW5mbyBwb2ludGVyIGlmIHRoaW5ncyB3ZW50IG9rYXksIHBvaW50ZXIgY29udGFpbmluZyBl cnJvciBjb2RlCkBAIC04NjYsOSArODY4LDE5IEBAIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBl cl9yZWxlYXNlX2ZiaSk7CiAgKi8KIHZvaWQgZHJtX2ZiX2hlbHBlcl9maW5pKHN0cnVjdCBkcm1f ZmJfaGVscGVyICpmYl9oZWxwZXIpCiB7Ci0JaWYgKCFkcm1fZmJkZXZfZW11bGF0aW9uKQorCXN0 cnVjdCBmYl9pbmZvICppbmZvOworCisJaWYgKCFkcm1fZmJkZXZfZW11bGF0aW9uIHx8ICFmYl9o ZWxwZXIpCiAJCXJldHVybjsKIAorCWluZm8gPSBmYl9oZWxwZXItPmZiZGV2OworCWlmIChpbmZv KSB7CisJCWlmIChpbmZvLT5jbWFwLmxlbikKKwkJCWZiX2RlYWxsb2NfY21hcCgmaW5mby0+Y21h cCk7CisJCWZyYW1lYnVmZmVyX3JlbGVhc2UoaW5mbyk7CisJfQorCWZiX2hlbHBlci0+ZmJkZXYg PSBOVUxMOworCiAJbXV0ZXhfbG9jaygma2VybmVsX2ZiX2hlbHBlcl9sb2NrKTsKIAlpZiAoIWxp c3RfZW1wdHkoJmZiX2hlbHBlci0+a2VybmVsX2ZiX2xpc3QpKSB7CiAJCWxpc3RfZGVsKCZmYl9o ZWxwZXItPmtlcm5lbF9mYl9saXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlu b3MvZXh5bm9zX2RybV9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJt X2ZiZGV2LmMKaW5kZXggYTc4ODRiZWE0MmViLi4zNjkzM2ViNjNkMTkgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9mYmRldi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9leHlub3MvZXh5bm9zX2RybV9mYmRldi5jCkBAIC05OSw3ICs5OSw2IEBAIHN0YXRpYyBp bnQgZXh5bm9zX2RybV9mYmRldl91cGRhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwK IAkJCQlWTV9NQVAsIHBncHJvdF93cml0ZWNvbWJpbmUoUEFHRV9LRVJORUwpKTsKIAlpZiAoIWV4 eW5vc19nZW0tPmt2YWRkcikgewogCQlEUk1fRVJST1IoImZhaWxlZCB0byBtYXAgcGFnZXMgdG8g a2VybmVsIHNwYWNlLlxuIik7Ci0JCWRybV9mYl9oZWxwZXJfcmVsZWFzZV9mYmkoaGVscGVyKTsK IAkJcmV0dXJuIC1FSU87CiAJfQogCkBAIC0yNzUsNyArMjc0LDYgQEAgc3RhdGljIHZvaWQgZXh5 bm9zX2RybV9mYmRldl9kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJfQogCiAJZHJt X2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaShmYl9oZWxwZXIpOwotCWRybV9mYl9oZWxwZXJfcmVs ZWFzZV9mYmkoZmJfaGVscGVyKTsKIAogCWRybV9mYl9oZWxwZXJfZmluaShmYl9oZWxwZXIpOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2dtYTUwMC9mcmFtZWJ1ZmZlci5jIGIvZHJp dmVycy9ncHUvZHJtL2dtYTUwMC9mcmFtZWJ1ZmZlci5jCmluZGV4IGZkMTQ4OGJmNTE4OS4uMWI0 NTA3NWZjN2IwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZ21hNTAwL2ZyYW1lYnVmZmVy LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2dtYTUwMC9mcmFtZWJ1ZmZlci5jCkBAIC0zOTIsNyAr MzkyLDcgQEAgc3RhdGljIGludCBwc2JmYl9jcmVhdGUoc3RydWN0IHBzYl9mYmRldiAqZmJkZXYs CiAJaW5mbyA9IGRybV9mYl9oZWxwZXJfYWxsb2NfZmJpKCZmYmRldi0+cHNiX2ZiX2hlbHBlcik7 CiAJaWYgKElTX0VSUihpbmZvKSkgewogCQlyZXQgPSBQVFJfRVJSKGluZm8pOwotCQlnb3RvIGVy cl9mcmVlX3JhbmdlOworCQlnb3RvIG91dDsKIAl9CiAJaW5mby0+cGFyID0gZmJkZXY7CiAKQEAg LTQwMCw3ICs0MDAsNyBAQCBzdGF0aWMgaW50IHBzYmZiX2NyZWF0ZShzdHJ1Y3QgcHNiX2ZiZGV2 ICpmYmRldiwKIAogCXJldCA9IHBzYl9mcmFtZWJ1ZmZlcl9pbml0KGRldiwgcHNiZmIsICZtb2Rl X2NtZCwgYmFja2luZyk7CiAJaWYgKHJldCkKLQkJZ290byBlcnJfcmVsZWFzZTsKKwkJZ290byBv dXQ7CiAKIAlmYiA9ICZwc2JmYi0+YmFzZTsKIAlwc2JmYi0+ZmJkZXYgPSBpbmZvOwpAQCAtNDQ1 LDkgKzQ0NSw3IEBAIHN0YXRpYyBpbnQgcHNiZmJfY3JlYXRlKHN0cnVjdCBwc2JfZmJkZXYgKmZi ZGV2LAogCQkJCQlwc2JmYi0+YmFzZS53aWR0aCwgcHNiZmItPmJhc2UuaGVpZ2h0KTsKIAogCXJl dHVybiAwOwotZXJyX3JlbGVhc2U6Ci0JZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaSgmZmJkZXYt PnBzYl9mYl9oZWxwZXIpOwotZXJyX2ZyZWVfcmFuZ2U6CitvdXQ6CiAJcHNiX2d0dF9mcmVlX3Jh bmdlKGRldiwgYmFja2luZyk7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTUzNiw3ICs1MzQsNiBAQCBz dGF0aWMgaW50IHBzYl9mYmRldl9kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBwc2JfZmJkZXYgKmZiZGV2KQogCXN0cnVjdCBwc2JfZnJhbWVidWZmZXIgKnBzYmZiID0gJmZi ZGV2LT5wZmI7CiAKIAlkcm1fZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJpKCZmYmRldi0+cHNiX2Zi X2hlbHBlcik7Ci0JZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaSgmZmJkZXYtPnBzYl9mYl9oZWxw ZXIpOwogCiAJZHJtX2ZiX2hlbHBlcl9maW5pKCZmYmRldi0+cHNiX2ZiX2hlbHBlcik7CiAJZHJt X2ZyYW1lYnVmZmVyX3VucmVnaXN0ZXJfcHJpdmF0ZSgmcHNiZmItPmJhc2UpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZmJkZXYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvaGlibWNfZHJtX2ZiZGV2LmMKaW5kZXggMTZm ZTc5MDUzZWUxLi5kMzlkZGU4OGZhMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9oaXNp bGljb24vaGlibWMvaGlibWNfZHJtX2ZiZGV2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2hpc2ls aWNvbi9oaWJtYy9oaWJtY19kcm1fZmJkZXYuYwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBp bnQgaGlibWNfZHJtX2ZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAogCXJl dHVybiAwOwogCiBvdXRfcmVsZWFzZV9mYmk6Ci0JZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaSho ZWxwZXIpOworCWRybV9mYl9oZWxwZXJfZmluaShoZWxwZXIpOwogCXJldDEgPSB0dG1fYm9fcmVz ZXJ2ZSgmYm8tPmJvLCB0cnVlLCBmYWxzZSwgTlVMTCk7CiAJaWYgKHJldDEpIHsKIAkJRFJNX0VS Uk9SKCJmYWlsZWQgdG8gcnN2IHR0bV9ibyB3aGVuIHJlbGVhc2UgZmJpOiAlZFxuIiwgcmV0MSk7 CkBAIC0xNzAsNyArMTcwLDYgQEAgc3RhdGljIHZvaWQgaGlibWNfZmJkZXZfZGVzdHJveShzdHJ1 Y3QgaGlibWNfZmJkZXYgKmZiZGV2KQogCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYmggPSAmZmJk ZXYtPmhlbHBlcjsKIAogCWRybV9mYl9oZWxwZXJfdW5yZWdpc3Rlcl9mYmkoZmJoKTsKLQlkcm1f ZmJfaGVscGVyX3JlbGVhc2VfZmJpKGZiaCk7CiAKIAlkcm1fZmJfaGVscGVyX2ZpbmkoZmJoKTsK IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKaW5kZXggZTBkOWU3MmNmM2QxLi44ZWEyYmQ4 NWE0NzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwpAQCAtMjUzLDcgKzI1Myw3IEBA IHN0YXRpYyBpbnQgaW50ZWxmYl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwK IAlpZiAoSVNfRVJSKHZhZGRyKSkgewogCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZW1hcCBmcmFt ZWJ1ZmZlciBpbnRvIHZpcnR1YWwgbWVtb3J5XG4iKTsKIAkJcmV0ID0gUFRSX0VSUih2YWRkcik7 Ci0JCWdvdG8gb3V0X2Rlc3Ryb3lfZmJpOworCQlnb3RvIG91dF91bnBpbjsKIAl9CiAJaW5mby0+ c2NyZWVuX2Jhc2UgPSB2YWRkcjsKIAlpbmZvLT5zY3JlZW5fc2l6ZSA9IHZtYS0+bm9kZS5zaXpl OwpAQCAtMjgxLDggKzI4MSw2IEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9jcmVhdGUoc3RydWN0IGRy bV9mYl9oZWxwZXIgKmhlbHBlciwKIAl2Z2Ffc3dpdGNoZXJvb19jbGllbnRfZmJfc2V0KHBkZXYs IGluZm8pOwogCXJldHVybiAwOwogCi1vdXRfZGVzdHJveV9mYmk6Ci0JZHJtX2ZiX2hlbHBlcl9y ZWxlYXNlX2ZiaShoZWxwZXIpOwogb3V0X3VucGluOgogCWludGVsX3VucGluX2ZiX3ZtYSh2bWEp Owogb3V0X3VubG9jazoKQEAgLTU0Myw3ICs1NDEsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmRl dl9kZXN0cm95KHN0cnVjdCBpbnRlbF9mYmRldiAqaWZiZGV2KQogCSAqLwogCiAJZHJtX2ZiX2hl bHBlcl91bnJlZ2lzdGVyX2ZiaSgmaWZiZGV2LT5oZWxwZXIpOwotCWRybV9mYl9oZWxwZXJfcmVs ZWFzZV9mYmkoJmlmYmRldi0+aGVscGVyKTsKIAogCWRybV9mYl9oZWxwZXJfZmluaSgmaWZiZGV2 LT5oZWxwZXIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAw X2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2ZiLmMKaW5kZXggMWE2NjVl MTY3MWI4Li4zMjBiMGQzM2MzODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAw L21nYWcyMDBfZmIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2ZiLmMK QEAgLTE5OCw3ICsxOTgsNyBAQCBzdGF0aWMgaW50IG1nYWcyMDBmYl9jcmVhdGUoc3RydWN0IGRy bV9mYl9oZWxwZXIgKmhlbHBlciwKIAogCXJldCA9IG1nYWcyMDBfZnJhbWVidWZmZXJfaW5pdChk ZXYsICZtZmJkZXYtPm1mYiwgJm1vZGVfY21kLCBnb2JqKTsKIAlpZiAocmV0KQotCQlnb3RvIGVy cl9mcmFtZWJ1ZmZlcl9pbml0OworCQlnb3RvIGVycl9hbGxvY19mYmk7CiAKIAltZmJkZXYtPnN5 c3JhbSA9IHN5c3JhbTsKIAltZmJkZXYtPnNpemUgPSBzaXplOwpAQCAtMjMwLDggKzIzMCw2IEBA IHN0YXRpYyBpbnQgbWdhZzIwMGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVy LAogCiAJcmV0dXJuIDA7CiAKLWVycl9mcmFtZWJ1ZmZlcl9pbml0OgotCWRybV9mYl9oZWxwZXJf cmVsZWFzZV9mYmkoaGVscGVyKTsKIGVycl9hbGxvY19mYmk6CiAJdmZyZWUoc3lzcmFtKTsKIGVy cl9zeXNyYW06CkBAIC0yNDYsNyArMjQ0LDYgQEAgc3RhdGljIGludCBtZ2FfZmJkZXZfZGVzdHJv eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXN0cnVjdCBtZ2FfZnJhbWVidWZmZXIgKm1mYiA9 ICZtZmJkZXYtPm1mYjsKIAogCWRybV9mYl9oZWxwZXJfdW5yZWdpc3Rlcl9mYmkoJm1mYmRldi0+ aGVscGVyKTsKLQlkcm1fZmJfaGVscGVyX3JlbGVhc2VfZmJpKCZtZmJkZXYtPmhlbHBlcik7CiAK IAlpZiAobWZiLT5vYmopIHsKIAkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQo bWZiLT5vYmopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZmJkZXYuYyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZiZGV2LmMKaW5kZXggZjhhNTg3ZWFjNmI4Li5hN2Q5 YjhlM2Y4Y2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZiZGV2LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZmJkZXYuYwpAQCAtMjM2LDcgKzIzNiw2IEBAIHZv aWQgbXNtX2ZiZGV2X2ZyZWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlEQkcoKTsKIAogCWRy bV9mYl9oZWxwZXJfdW5yZWdpc3Rlcl9mYmkoaGVscGVyKTsKLQlkcm1fZmJfaGVscGVyX3JlbGVh c2VfZmJpKGhlbHBlcik7CiAKIAlkcm1fZmJfaGVscGVyX2ZpbmkoaGVscGVyKTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9mYmNvbi5jIGIvZHJpdmVycy9n cHUvZHJtL25vdXZlYXUvbm91dmVhdV9mYmNvbi5jCmluZGV4IGM2OTlkNzc4NGRhMi4uM2M4Zjhk ZDg5MjM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2ZiY29u LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9mYmNvbi5jCkBAIC00NDQs NyArNDQ0LDYgQEAgbm91dmVhdV9mYmNvbl9kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBub3V2ZWF1X2ZiZGV2ICpmYmNvbikKIAlzdHJ1Y3Qgbm91dmVhdV9mcmFtZWJ1ZmZl ciAqbm91dmVhdV9mYiA9IG5vdXZlYXVfZnJhbWVidWZmZXIoZmJjb24tPmhlbHBlci5mYik7CiAK IAlkcm1fZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJpKCZmYmNvbi0+aGVscGVyKTsKLQlkcm1fZmJf aGVscGVyX3JlbGVhc2VfZmJpKCZmYmNvbi0+aGVscGVyKTsKIAlkcm1fZmJfaGVscGVyX2Zpbmko JmZiY29uLT5oZWxwZXIpOwogCiAJaWYgKG5vdXZlYXVfZmItPm52Ym8pIHsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZmJkZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9v bWFwZHJtL29tYXBfZmJkZXYuYwppbmRleCAyYTgzOTk1NmRhZTYuLjJjOWUyZjM2YTlkMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9mYmRldi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZmJkZXYuYwpAQCAtMjIyLDkgKzIyMiw2IEBAIHN0YXRp YyBpbnQgb21hcF9mYmRldl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKIGZh aWw6CiAKIAlpZiAocmV0KSB7Ci0KLQkJZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaShoZWxwZXIp OwotCiAJCWlmIChmYikKIAkJCWRybV9mcmFtZWJ1ZmZlcl9yZW1vdmUoZmIpOwogCX0KQEAgLTMw Miw3ICsyOTksNiBAQCB2b2lkIG9tYXBfZmJkZXZfZnJlZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCURCRygpOwogCiAJZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaShoZWxwZXIpOwotCWRy bV9mYl9oZWxwZXJfcmVsZWFzZV9mYmkoaGVscGVyKTsKIAogCWRybV9mYl9oZWxwZXJfZmluaSho ZWxwZXIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9mYi5jIGIvZHJp dmVycy9ncHUvZHJtL3F4bC9xeGxfZmIuYwppbmRleCBlNmFkZTZhYWI1NGMuLmEwZjU1NzUwZTJk MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZmIuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vcXhsL3F4bF9mYi5jCkBAIC0zMDUsNyArMzA1LDcgQEAgc3RhdGljIGludCBxeGxm Yl9jcmVhdGUoc3RydWN0IHF4bF9mYmRldiAqcWZiZGV2LAogCiAJaWYgKGluZm8tPnNjcmVlbl9i YXNlID09IE5VTEwpIHsKIAkJcmV0ID0gLUVOT1NQQzsKLQkJZ290byBvdXRfZGVzdHJveV9mYmk7 CisJCWdvdG8gb3V0X3VucmVmOwogCX0KIAogI2lmZGVmIENPTkZJR19EUk1fRkJERVZfRU1VTEFU SU9OCkBAIC0zMjAsOCArMzIwLDYgQEAgc3RhdGljIGludCBxeGxmYl9jcmVhdGUoc3RydWN0IHF4 bF9mYmRldiAqcWZiZGV2LAogCQkgZmItPmZvcm1hdC0+ZGVwdGgsIGZiLT5waXRjaGVzWzBdLCBm Yi0+d2lkdGgsIGZiLT5oZWlnaHQpOwogCXJldHVybiAwOwogCi1vdXRfZGVzdHJveV9mYmk6Ci0J ZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaSgmcWZiZGV2LT5oZWxwZXIpOwogb3V0X3VucmVmOgog CWlmIChxYm8pIHsKIAkJcmV0ID0gcXhsX2JvX3Jlc2VydmUocWJvLCBmYWxzZSk7CkBAIC0zNjMs NyArMzYxLDYgQEAgc3RhdGljIGludCBxeGxfZmJkZXZfZGVzdHJveShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBzdHJ1Y3QgcXhsX2ZiZGV2ICpxZmJkZXYpCiAJc3RydWN0IHF4bF9mcmFtZWJ1ZmZl ciAqcWZiID0gJnFmYmRldi0+cWZiOwogCiAJZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaSgm cWZiZGV2LT5oZWxwZXIpOwotCWRybV9mYl9oZWxwZXJfcmVsZWFzZV9mYmkoJnFmYmRldi0+aGVs cGVyKTsKIAogCWlmIChxZmItPm9iaikgewogCQlxeGxmYl9kZXN0cm95X3Bpbm5lZF9vYmplY3Qo cWZiLT5vYmopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZmIu YyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ZiLmMKaW5kZXggNmMxMGE4M2YzMzYy Li42MTVjZjk2NWVlN2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X2ZiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZmIuYwpAQCAtMjQyLDcg KzI0Miw3IEBAIHN0YXRpYyBpbnQgcmFkZW9uZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVy ICpoZWxwZXIsCiAJaW5mbyA9IGRybV9mYl9oZWxwZXJfYWxsb2NfZmJpKGhlbHBlcik7CiAJaWYg KElTX0VSUihpbmZvKSkgewogCQlyZXQgPSBQVFJfRVJSKGluZm8pOwotCQlnb3RvIG91dF91bnJl ZjsKKwkJZ290byBvdXQ7CiAJfQogCiAJaW5mby0+cGFyID0gcmZiZGV2OwpAQCAtMjUxLDcgKzI1 MSw3IEBAIHN0YXRpYyBpbnQgcmFkZW9uZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpo ZWxwZXIsCiAJcmV0ID0gcmFkZW9uX2ZyYW1lYnVmZmVyX2luaXQocmRldi0+ZGRldiwgJnJmYmRl di0+cmZiLCAmbW9kZV9jbWQsIGdvYmopOwogCWlmIChyZXQpIHsKIAkJRFJNX0VSUk9SKCJmYWls ZWQgdG8gaW5pdGlhbGl6ZSBmcmFtZWJ1ZmZlciAlZFxuIiwgcmV0KTsKLQkJZ290byBvdXRfZGVz dHJveV9mYmk7CisJCWdvdG8gb3V0OwogCX0KIAogCWZiID0gJnJmYmRldi0+cmZiLmJhc2U7CkBA IC0yODQsNyArMjg0LDcgQEAgc3RhdGljIGludCByYWRlb25mYl9jcmVhdGUoc3RydWN0IGRybV9m Yl9oZWxwZXIgKmhlbHBlciwKIAogCWlmIChpbmZvLT5zY3JlZW5fYmFzZSA9PSBOVUxMKSB7CiAJ CXJldCA9IC1FTk9TUEM7Ci0JCWdvdG8gb3V0X2Rlc3Ryb3lfZmJpOworCQlnb3RvIG91dDsKIAl9 CiAKIAlEUk1fSU5GTygiZmIgbWFwcGFibGUgYXQgMHglbFhcbiIsICBpbmZvLT5maXguc21lbV9z dGFydCk7CkBAIC0yOTYsOSArMjk2LDcgQEAgc3RhdGljIGludCByYWRlb25mYl9jcmVhdGUoc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKIAl2Z2Ffc3dpdGNoZXJvb19jbGllbnRfZmJfc2V0 KHJkZXYtPmRkZXYtPnBkZXYsIGluZm8pOwogCXJldHVybiAwOwogCi1vdXRfZGVzdHJveV9mYmk6 Ci0JZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaShoZWxwZXIpOwotb3V0X3VucmVmOgorb3V0Ogog CWlmIChyYm8pIHsKIAogCX0KQEAgLTMyMiw3ICszMjAsNiBAQCBzdGF0aWMgaW50IHJhZGVvbl9m YmRldl9kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCByYWRlb25fZmJkZXYg KnJmYgogCXN0cnVjdCByYWRlb25fZnJhbWVidWZmZXIgKnJmYiA9ICZyZmJkZXYtPnJmYjsKIAog CWRybV9mYl9oZWxwZXJfdW5yZWdpc3Rlcl9mYmkoJnJmYmRldi0+aGVscGVyKTsKLQlkcm1fZmJf aGVscGVyX3JlbGVhc2VfZmJpKCZyZmJkZXYtPmhlbHBlcik7CiAKIAlpZiAocmZiLT5vYmopIHsK IAkJcmFkZW9uZmJfZGVzdHJveV9waW5uZWRfb2JqZWN0KHJmYi0+b2JqKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmJkZXYuYyBiL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmJkZXYuYwppbmRleCA1MmQxZmRmOWY5ZGEu LjlkNDA5Y2FhYzJiNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tj aGlwX2RybV9mYmRldi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9k cm1fZmJkZXYuYwpAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2RybV9mYmRl dl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKIAlpZiAoSVNfRVJSKGZiaSkp IHsKIAkJZGV2X2VycihkZXYtPmRldiwgIkZhaWxlZCB0byBjcmVhdGUgZnJhbWVidWZmZXIgaW5m by5cbiIpOwogCQlyZXQgPSBQVFJfRVJSKGZiaSk7Ci0JCWdvdG8gZXJyX3JvY2tjaGlwX2dlbV9m cmVlX29iamVjdDsKKwkJZ290byBvdXQ7CiAJfQogCiAJaGVscGVyLT5mYiA9IHJvY2tjaGlwX2Ry bV9mcmFtZWJ1ZmZlcl9pbml0KGRldiwgJm1vZGVfY21kLApAQCAtODYsNyArODYsNyBAQCBzdGF0 aWMgaW50IHJvY2tjaGlwX2RybV9mYmRldl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhl bHBlciwKIAlpZiAoSVNfRVJSKGhlbHBlci0+ZmIpKSB7CiAJCWRldl9lcnIoZGV2LT5kZXYsICJG YWlsZWQgdG8gYWxsb2NhdGUgRFJNIGZyYW1lYnVmZmVyLlxuIik7CiAJCXJldCA9IFBUUl9FUlIo aGVscGVyLT5mYik7Ci0JCWdvdG8gZXJyX3JlbGVhc2VfZmJpOworCQlnb3RvIG91dDsKIAl9CiAK IAlmYmktPnBhciA9IGhlbHBlcjsKQEAgLTExNCw5ICsxMTQsNyBAQCBzdGF0aWMgaW50IHJvY2tj aGlwX2RybV9mYmRldl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKIAogCXJl dHVybiAwOwogCi1lcnJfcmVsZWFzZV9mYmk6Ci0JZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaSho ZWxwZXIpOwotZXJyX3JvY2tjaGlwX2dlbV9mcmVlX29iamVjdDoKK291dDoKIAlyb2NrY2hpcF9n ZW1fZnJlZV9vYmplY3QoJnJrX29iai0+YmFzZSk7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTE3Niw3 ICsxNzQsNiBAQCB2b2lkIHJvY2tjaGlwX2RybV9mYmRldl9maW5pKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJaGVscGVyID0gJnByaXZhdGUtPmZiZGV2X2hlbHBlcjsKIAogCWRybV9mYl9oZWxw ZXJfdW5yZWdpc3Rlcl9mYmkoaGVscGVyKTsKLQlkcm1fZmJfaGVscGVyX3JlbGVhc2VfZmJpKGhl bHBlcik7CiAKIAlpZiAoaGVscGVyLT5mYikKIAkJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNl KGhlbHBlci0+ZmIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2ZiLmMgYi9k cml2ZXJzL2dwdS9kcm0vdGVncmEvZmIuYwppbmRleCBmODk2ZTJmZjdkNDcuLjI4ZmYzMGNiN2Iw ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2ZiLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL3RlZ3JhL2ZiLmMKQEAgLTIzNSw3ICsyMzUsNyBAQCBzdGF0aWMgaW50IHRlZ3JhX2Zi ZGV2X3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCiAJCWRldl9lcnIoZHJtLT5k ZXYsICJmYWlsZWQgdG8gYWxsb2NhdGUgRFJNIGZyYW1lYnVmZmVyOiAlZFxuIiwKIAkJCWVycik7 CiAJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKCZiby0+Z2VtKTsKLQkJZ290 byByZWxlYXNlOworCQlyZXR1cm4gUFRSX0VSUihmYmRldi0+ZmIpOwogCX0KIAogCWZiID0gJmZi ZGV2LT5mYi0+YmFzZTsKQEAgLTI3Miw4ICsyNzIsNiBAQCBzdGF0aWMgaW50IHRlZ3JhX2ZiZGV2 X3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCiAKIGRlc3Ryb3k6CiAJZHJtX2Zy YW1lYnVmZmVyX3JlbW92ZShmYik7Ci1yZWxlYXNlOgotCWRybV9mYl9oZWxwZXJfcmVsZWFzZV9m YmkoaGVscGVyKTsKIAlyZXR1cm4gZXJyOwogfQogCkBAIC0zMzksNyArMzM3LDYgQEAgc3RhdGlj IGludCB0ZWdyYV9mYmRldl9pbml0KHN0cnVjdCB0ZWdyYV9mYmRldiAqZmJkZXYsCiBzdGF0aWMg dm9pZCB0ZWdyYV9mYmRldl9leGl0KHN0cnVjdCB0ZWdyYV9mYmRldiAqZmJkZXYpCiB7CiAJZHJt X2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaSgmZmJkZXYtPmJhc2UpOwotCWRybV9mYl9oZWxwZXJf cmVsZWFzZV9mYmkoJmZiZGV2LT5iYXNlKTsKIAogCWlmIChmYmRldi0+ZmIpCiAJCWRybV9mcmFt ZWJ1ZmZlcl9yZW1vdmUoJmZiZGV2LT5mYi0+YmFzZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdWRsL3VkbF9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZmIuYwppbmRleCBi OGRjMDZkNjg3NzcuLjA2Mzc0M2FkMDliZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Vk bC91ZGxfZmIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9mYi5jCkBAIC0zODEsNyAr MzgxLDcgQEAgc3RhdGljIGludCB1ZGxmYl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhl bHBlciwKIAogCXJldCA9IHVkbF9mcmFtZWJ1ZmZlcl9pbml0KGRldiwgJnVmYmRldi0+dWZiLCAm bW9kZV9jbWQsIG9iaik7CiAJaWYgKHJldCkKLQkJZ290byBvdXRfZGVzdHJveV9mYmk7CisJCWdv dG8gb3V0X2dmcmVlOwogCiAJZmIgPSAmdWZiZGV2LT51ZmIuYmFzZTsKIApAQCAtNDAzLDggKzQw Myw2IEBAIHN0YXRpYyBpbnQgdWRsZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxw ZXIsCiAJCSAgICAgIHVmYmRldi0+dWZiLm9iai0+dm1hcHBpbmcpOwogCiAJcmV0dXJuIHJldDsK LW91dF9kZXN0cm95X2ZiaToKLQlkcm1fZmJfaGVscGVyX3JlbGVhc2VfZmJpKGhlbHBlcik7CiBv dXRfZ2ZyZWU6CiAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoJnVmYmRldi0+ dWZiLm9iai0+YmFzZSk7CiBvdXQ6CkBAIC00MTksNyArNDE3LDYgQEAgc3RhdGljIHZvaWQgdWRs X2ZiZGV2X2Rlc3Ryb3koc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAgICAgIHN0cnVjdCB1 ZGxfZmJkZXYgKnVmYmRldikKIHsKIAlkcm1fZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJpKCZ1ZmJk ZXYtPmhlbHBlcik7Ci0JZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaSgmdWZiZGV2LT5oZWxwZXIp OwogCWRybV9mYl9oZWxwZXJfZmluaSgmdWZiZGV2LT5oZWxwZXIpOwogCWRybV9mcmFtZWJ1ZmZl cl91bnJlZ2lzdGVyX3ByaXZhdGUoJnVmYmRldi0+dWZiLmJhc2UpOwogCWRybV9mcmFtZWJ1ZmZl cl9jbGVhbnVwKCZ1ZmJkZXYtPnVmYi5iYXNlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS92aXJ0aW8vdmlydGdwdV9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2Zi LmMKaW5kZXggMjRmOTlmYzlkOGE0Li5hNzk5MGM3NDU0OTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS92aXJ0aW8vdmlydGdwdV9mYi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92aXJ0aW8v dmlydGdwdV9mYi5jCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RhdGljIGludCB2aXJ0aW9fZ3B1ZmJf Y3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCiAJcmV0ID0gdmlydGlvX2dwdV9m cmFtZWJ1ZmZlcl9pbml0KGRldiwgJnZmYmRldi0+dmdmYiwKIAkJCQkJICAmbW9kZV9jbWQsICZv YmotPmdlbV9iYXNlKTsKIAlpZiAocmV0KQotCQlnb3RvIGVycl9mYl9pbml0OworCQlnb3RvIGVy cl9mYl9hbGxvYzsKIAogCWZiID0gJnZmYmRldi0+dmdmYi5iYXNlOwogCkBAIC0zNDEsOCArMzQx LDYgQEAgc3RhdGljIGludCB2aXJ0aW9fZ3B1ZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVy ICpoZWxwZXIsCiAJaW5mby0+Zml4Lm1taW9fbGVuID0gMDsKIAlyZXR1cm4gMDsKIAotZXJyX2Zi X2luaXQ6Ci0JZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaShoZWxwZXIpOwogZXJyX2ZiX2FsbG9j OgogCXZpcnRpb19ncHVfY21kX3Jlc291cmNlX2ludmFsX2JhY2tpbmcodmdkZXYsIHJlc2lkKTsK IGVycl9vYmpfYXR0YWNoOgpAQCAtMzU3LDcgKzM1NSw2IEBAIHN0YXRpYyBpbnQgdmlydGlvX2dw dV9mYmRldl9kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3RydWN0IHZpcnRpb19n cHVfZnJhbWVidWZmZXIgKnZnZmIgPSAmdmdmYmRldi0+dmdmYjsKIAogCWRybV9mYl9oZWxwZXJf dW5yZWdpc3Rlcl9mYmkoJnZnZmJkZXYtPmhlbHBlcik7Ci0JZHJtX2ZiX2hlbHBlcl9yZWxlYXNl X2ZiaSgmdmdmYmRldi0+aGVscGVyKTsKIAogCWlmICh2Z2ZiLT5vYmopCiAJCXZnZmItPm9iaiA9 IE5VTEw7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmggYi9pbmNsdWRl L2RybS9kcm1fZmJfaGVscGVyLmgKaW5kZXggZTYyZTFjZjIyNjc4Li43ZDVkMGRiYTEwZmMgMTAw NjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2RybS9k cm1fZmJfaGVscGVyLmgKQEAgLTI1MCw3ICsyNTAsNiBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9yZXN0 b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcik7 CiAKIHN0cnVjdCBmYl9pbmZvICpkcm1fZmJfaGVscGVyX2FsbG9jX2ZiaShzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqZmJfaGVscGVyKTsKIHZvaWQgZHJtX2ZiX2hlbHBlcl91bnJlZ2lzdGVyX2ZiaShz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKTsKLXZvaWQgZHJtX2ZiX2hlbHBlcl9yZWxl YXNlX2ZiaShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKTsKIHZvaWQgZHJtX2ZiX2hl bHBlcl9maWxsX3ZhcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3RydWN0IGRybV9mYl9oZWxwZXIg KmZiX2hlbHBlciwKIAkJCSAgICB1aW50MzJfdCBmYl93aWR0aCwgdWludDMyX3QgZmJfaGVpZ2h0 KTsKIHZvaWQgZHJtX2ZiX2hlbHBlcl9maWxsX2ZpeChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdWlu dDMyX3QgcGl0Y2gsCkBAIC0zNTUsOSArMzU0LDYgQEAgZHJtX2ZiX2hlbHBlcl9hbGxvY19mYmko c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIHN0YXRpYyBpbmxpbmUgdm9pZCBkcm1f ZmJfaGVscGVyX3VucmVnaXN0ZXJfZmJpKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIp CiB7CiB9Ci1zdGF0aWMgaW5saW5lIHZvaWQgZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaShzdHJ1 Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQotewotfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg ZHJtX2ZiX2hlbHBlcl9maWxsX3ZhcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKIAkJCQkJICBzdHJ1 Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK