From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v5 02/11] drm/fb-helper: Avoid race with DRM userspace Date: Mon, 6 May 2019 20:01:30 +0200 Message-ID: <20190506180139.6913-3-noralf@tronnes.org> References: <20190506180139.6913-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190506180139.6913-1-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= List-Id: dri-devel@lists.freedesktop.org ZHJtX2ZiX2hlbHBlcl9pc19ib3VuZCgpIGlzIHVzZWQgdG8gY2hlY2sgaWYgRFJNIHVzZXJzcGFj ZSBpcyBpbiBjb250cm9sLgpUaGlzIGlzIGRvbmUgYnkgbG9va2luZyBhdCB0aGUgZmIgb24gdGhl IHByaW1hcnkgcGxhbmUuIEJ5IHRoZSB0aW1lCmZiLWhlbHBlciBnZXRzIGFyb3VuZCB0byBjb21t aXR0aW5nLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGZhY3RzIGhhdmUKY2hhbmdlZC4KCkF2b2lk IHRoaXMgcmFjZSBieSBob2xkaW5nIHRoZSBkcm1fZGV2aWNlLT5tYXN0ZXJfbXV0ZXggbG9jayB3 aGlsZQpjb21taXR0aW5nLiBXaGVuIERSTSB1c2Vyc3BhY2UgZG9lcyBpdHMgZmlyc3Qgb3Blbiwg aXQgd2lsbCBub3cgd2FpdAp1bnRpbCBmYi1oZWxwZXIgaXMgZG9uZS4gVGhlIGhlbHBlciB3aWxs IHN0YXkgYXdheSBpZiB0aGVyZSdzIGEgbWFzdGVyLgoKVHdvIGlndCB0ZXN0cyBmYWlsIHdpdGgg dGhlIG5ldyAnYmFpbCBvdXQgaWYgbWFzdGVyJyBydWxlLiBXb3JrIGFyb3VuZAp0aGlzIGJ5IHJl bGF4aW5nIHRoaXMgcnVsZSBmb3IgZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX2ZiZGV2X21vZGVfdW5s b2NrZWQoKQp1bnRpbCB0aGUgdGVzdHMgaGF2ZSBiZWVuIGZpeGVkLiBBZGQgdG9kbyBlbnRyeSBm b3IgdGhpcy4KCkxvY2tpbmcgcnVsZTogQWx3YXlzIHRha2UgdGhlIGZiLWhlbHBlciBsb2NrIGZp cnN0LgoKdjU6IGRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkKCk6IFVz ZQogICAgcmVzdG9yZV9mYmRldl9tb2RlX2ZvcmNlKCkKCnYyOgotIFJlbW92ZSBkcm1fZmJfaGVs cGVyX2lzX2JvdW5kKCkgKERhbmllbCBWZXR0ZXIpCi0gTm8gbmVlZCB0byBjaGVjayBmYl9oZWxw ZXItPmRldi0+bWFzdGVyIGluCiAgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoKSwgcmVz dG9yZV9mYmRldl9tb2RlKCkgaGFzIHRoZSBjaGVjay4KClN1Z2dlc3RlZC1ieTogRGFuaWVsIFZl dHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hu bmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+ClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5p ZWwudmV0dGVyQGZmd2xsLmNoPgotLS0KIERvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0ICAgICAg fCAgIDggKysrCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F1dGguYyAgICAgIHwgIDIwICsrKysrKysK IGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgfCAxMDIgKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCAgfCAgIDIgKwog NCBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS90b2RvLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L3Rv ZG8ucnN0CmluZGV4IDA2Y2NmZjkxNjVkNS4uNjZmMDVmNGU0NjlmIDEwMDY0NAotLS0gYS9Eb2N1 bWVudGF0aW9uL2dwdS90b2RvLnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL2dwdS90b2RvLnJzdApA QCAtMjgxLDYgKzI4MSwxNCBAQCBpdCB0byB1c2UgZHJtX21vZGVfaHN5bmMoKSBpbnN0ZWFkLgog CiBDb250YWN0OiBTZWFuIFBhdWwKIAorZHJtX2ZiX2hlbHBlciB0YXNrcworLS0tLS0tLS0tLS0t LS0tLS0tLQorCistIGRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkKCkg c2hvdWxkIGNhbGwgcmVzdG9yZV9mYmRldl9tb2RlKCkKKyAgbm90IHRoZSBfZm9yY2UgdmFyaWFu dCBzbyBpdCBjYW4gYmFpbCBvdXQgaWYgdGhlcmUgaXMgYSBtYXN0ZXIuIEJ1dCBmaXJzdAorICB0 aGVzZSBpZ3QgdGVzdHMgbmVlZCB0byBiZSBmaXhlZDoga21zX2ZiY29uX2ZidEBwc3IgYW5kCisg IGttc19mYmNvbl9mYnRAcHNyLXN1c3BlbmQuCisKIENvcmUgcmVmYWN0b3JpbmdzCiA9PT09PT09 PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F1dGguYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXV0aC5jCmluZGV4IGU4ODE1MWI2NWMyMi4uMzNhYTQ1OWExYjhm IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F1dGguYworKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F1dGguYwpAQCAtMzUzLDMgKzM1MywyMyBAQCB2b2lkIGRybV9tYXN0ZXJfcHV0 KHN0cnVjdCBkcm1fbWFzdGVyICoqbWFzdGVyKQogCSptYXN0ZXIgPSBOVUxMOwogfQogRVhQT1JU X1NZTUJPTChkcm1fbWFzdGVyX3B1dCk7CisKKy8qIFVzZWQgYnkgZHJtX2NsaWVudCBhbmQgZHJt X2ZiX2hlbHBlciAqLworYm9vbCBkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKK3sKKwltdXRleF9sb2NrKCZkZXYtPm1hc3Rlcl9tdXRleCk7CisJaWYg KGRldi0+bWFzdGVyKSB7CisJCW11dGV4X3VubG9jaygmZGV2LT5tYXN0ZXJfbXV0ZXgpOworCQly ZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9t YXN0ZXJfaW50ZXJuYWxfYWNxdWlyZSk7CisKKy8qIFVzZWQgYnkgZHJtX2NsaWVudCBhbmQgZHJt X2ZiX2hlbHBlciAqLwordm9pZCBkcm1fbWFzdGVyX2ludGVybmFsX3JlbGVhc2Uoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKK3sKKwltdXRleF91bmxvY2soJmRldi0+bWFzdGVyX211dGV4KTsKK30K K0VYUE9SVF9TWU1CT0woZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2hlbHBlci5jCmluZGV4IDQ1YzUxMjhhNzgzYi4uNmI0Y2U2MDYwOTg0IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZmJfaGVscGVyLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKIAogI2luY2x1ZGUgImRybV9jcnRjX2ludGVy bmFsLmgiCiAjaW5jbHVkZSAiZHJtX2NydGNfaGVscGVyX2ludGVybmFsLmgiCisjaW5jbHVkZSAi ZHJtX2ludGVybmFsLmgiCiAKIHN0YXRpYyBib29sIGRybV9mYmRldl9lbXVsYXRpb24gPSB0cnVl OwogbW9kdWxlX3BhcmFtX25hbWVkKGZiZGV2X2VtdWxhdGlvbiwgZHJtX2ZiZGV2X2VtdWxhdGlv biwgYm9vbCwgMDYwMCk7CkBAIC01MDksNyArNTEwLDcgQEAgc3RhdGljIGludCByZXN0b3JlX2Zi ZGV2X21vZGVfbGVnYWN5KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJcmV0dXJu IHJldDsKIH0KIAotc3RhdGljIGludCByZXN0b3JlX2ZiZGV2X21vZGUoc3RydWN0IGRybV9mYl9o ZWxwZXIgKmZiX2hlbHBlcikKK3N0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2ZvcmNlKHN0 cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGZiX2hlbHBlci0+ZGV2OwogCkBAIC01MTksNiArNTIwLDIxIEBAIHN0YXRpYyBpbnQgcmVz dG9yZV9mYmRldl9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJCXJldHVy biByZXN0b3JlX2ZiZGV2X21vZGVfbGVnYWN5KGZiX2hlbHBlcik7CiB9CiAKK3N0YXRpYyBpbnQg cmVzdG9yZV9mYmRldl9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCit7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2OworCWludCByZXQ7CisKKwlp ZiAoIWRybV9tYXN0ZXJfaW50ZXJuYWxfYWNxdWlyZShkZXYpKQorCQlyZXR1cm4gLUVCVVNZOwor CisJcmV0ID0gcmVzdG9yZV9mYmRldl9tb2RlX2ZvcmNlKGZiX2hlbHBlcik7CisKKwlkcm1fbWFz dGVyX2ludGVybmFsX3JlbGVhc2UoZGV2KTsKKworCXJldHVybiByZXQ7Cit9CisKIC8qKgogICog ZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQgLSByZXN0b3JlIGZiZGV2 IGNvbmZpZ3VyYXRpb24KICAqIEBmYl9oZWxwZXI6IGRyaXZlci1hbGxvY2F0ZWQgZmJkZXYgaGVs cGVyLCBjYW4gYmUgTlVMTApAQCAtNTQyLDcgKzU1OCwxNyBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9y ZXN0b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl cikKIAkJcmV0dXJuIDA7CiAKIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmxvY2spOwotCXJldCA9 IHJlc3RvcmVfZmJkZXZfbW9kZShmYl9oZWxwZXIpOworCS8qCisJICogVE9ETzoKKwkgKiBXZSBz aG91bGQgYmFpbCBvdXQgaGVyZSBpZiB0aGVyZSBpcyBhIG1hc3RlciBieSBkcm9wcGluZyBfZm9y Y2UuCisJICogQ3VycmVudGx5IHRoZXNlIGlndCB0ZXN0cyBmYWlsIGlmIHdlIGRvIHRoYXQ6CisJ ICogLSBrbXNfZmJjb25fZmJ0QHBzcgorCSAqIC0ga21zX2ZiY29uX2ZidEBwc3Itc3VzcGVuZAor CSAqCisJICogU28gZmlyc3QgdGhlc2UgdGVzdHMgbmVlZCB0byBiZSBmaXhlZCBzbyB0aGV5IGRy b3AgbWFzdGVyIG9yIGRvbid0CisJICogaGF2ZSBhbiBmZCBvcGVuLgorCSAqLworCXJldCA9IHJl c3RvcmVfZmJkZXZfbW9kZV9mb3JjZShmYl9oZWxwZXIpOwogCiAJZG9fZGVsYXllZCA9IGZiX2hl bHBlci0+ZGVsYXllZF9ob3RwbHVnOwogCWlmIChkb19kZWxheWVkKQpAQCAtNTU2LDM0ICs1ODIs NiBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQoc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBl cl9yZXN0b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQpOwogCi1zdGF0aWMgYm9vbCBkcm1fZmJfaGVs cGVyX2lzX2JvdW5kKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCi17Ci0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2OwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKLQlpbnQgYm91bmQgPSAwLCBjcnRjc19ib3VuZCA9IDA7Ci0KLQkvKgotCSAqIFNvbWV0aW1l cyB1c2VyIHNwYWNlIHdhbnRzIGV2ZXJ5dGhpbmcgZGlzYWJsZWQsIHNvIGRvbid0IHN0ZWFsIHRo ZQotCSAqIGRpc3BsYXkgaWYgdGhlcmUncyBhIG1hc3Rlci4KLQkgKi8KLQlpZiAoUkVBRF9PTkNF KGRldi0+bWFzdGVyKSkKLQkJcmV0dXJuIGZhbHNlOwotCi0JZHJtX2Zvcl9lYWNoX2NydGMoY3J0 YywgZGV2KSB7Ci0JCWRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCBOVUxMKTsKLQkJaWYg KGNydGMtPnByaW1hcnktPmZiKQotCQkJY3J0Y3NfYm91bmQrKzsKLQkJaWYgKGNydGMtPnByaW1h cnktPmZiID09IGZiX2hlbHBlci0+ZmIpCi0JCQlib3VuZCsrOwotCQlkcm1fbW9kZXNldF91bmxv Y2soJmNydGMtPm11dGV4KTsKLQl9Ci0KLQlpZiAoYm91bmQgPCBjcnRjc19ib3VuZCkKLQkJcmV0 dXJuIGZhbHNlOwotCi0JcmV0dXJuIHRydWU7Ci19Ci0KICNpZmRlZiBDT05GSUdfTUFHSUNfU1lT UlEKIC8qCiAgKiByZXN0b3JlIGZiY29uIGRpc3BsYXkgZm9yIGFsbCBrbXMgZHJpdmVyJ3MgdXNp bmcgdGhpcyBoZWxwZXIsIHVzZWQgZm9yIHN5c3JxCkBAIC02MDQsNyArNjAyLDcgQEAgc3RhdGlj IGJvb2wgZHJtX2ZiX2hlbHBlcl9mb3JjZV9rZXJuZWxfbW9kZSh2b2lkKQogCQkJY29udGludWU7 CiAKIAkJbXV0ZXhfbG9jaygmaGVscGVyLT5sb2NrKTsKLQkJcmV0ID0gcmVzdG9yZV9mYmRldl9t b2RlKGhlbHBlcik7CisJCXJldCA9IHJlc3RvcmVfZmJkZXZfbW9kZV9mb3JjZShoZWxwZXIpOwog CQlpZiAocmV0KQogCQkJZXJyb3IgPSB0cnVlOwogCQltdXRleF91bmxvY2soJmhlbHBlci0+bG9j ayk7CkBAIC02NjMsMjAgKzY2MSwyMiBAQCBzdGF0aWMgdm9pZCBkcG1zX2xlZ2FjeShzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBpbnQgZHBtc19tb2RlKQogc3RhdGljIHZvaWQgZHJt X2ZiX2hlbHBlcl9kcG1zKHN0cnVjdCBmYl9pbmZvICppbmZvLCBpbnQgZHBtc19tb2RlKQogewog CXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIgPSBpbmZvLT5wYXI7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2OwogCiAJLyoKIAkgKiBGb3IgZWFjaCBDUlRD IGluIHRoaXMgZmIsIHR1cm4gdGhlIGNvbm5lY3RvcnMgb24vb2ZmLgogCSAqLwogCW11dGV4X2xv Y2soJmZiX2hlbHBlci0+bG9jayk7Ci0JaWYgKCFkcm1fZmJfaGVscGVyX2lzX2JvdW5kKGZiX2hl bHBlcikpIHsKLQkJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxvY2spOwotCQlyZXR1cm47Ci0J fQorCWlmICghZHJtX21hc3Rlcl9pbnRlcm5hbF9hY3F1aXJlKGRldikpCisJCWdvdG8gdW5sb2Nr OwogCi0JaWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChmYl9oZWxwZXItPmRldikpCisJ aWYgKGRybV9kcnZfdXNlc19hdG9taWNfbW9kZXNldChkZXYpKQogCQlyZXN0b3JlX2ZiZGV2X21v ZGVfYXRvbWljKGZiX2hlbHBlciwgZHBtc19tb2RlID09IERSTV9NT0RFX0RQTVNfT04pOwogCWVs c2UKIAkJZHBtc19sZWdhY3koZmJfaGVscGVyLCBkcG1zX21vZGUpOworCisJZHJtX21hc3Rlcl9p bnRlcm5hbF9yZWxlYXNlKGRldik7Cit1bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXIt PmxvY2spOwogfQogCkBAIC0xNTA5LDYgKzE1MDksNyBAQCBzdGF0aWMgaW50IHNldGNtYXBfYXRv bWljKHN0cnVjdCBmYl9jbWFwICpjbWFwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIGludCBkcm1f ZmJfaGVscGVyX3NldGNtYXAoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICpp bmZvKQogewogCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIgPSBpbmZvLT5wYXI7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2OwogCWludCByZXQ7CiAKIAlp ZiAob29wc19pbl9wcm9ncmVzcykKQEAgLTE1MTYsOSArMTUxNyw5IEBAIGludCBkcm1fZmJfaGVs cGVyX3NldGNtYXAoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQog CiAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5sb2NrKTsKIAotCWlmICghZHJtX2ZiX2hlbHBlcl9p c19ib3VuZChmYl9oZWxwZXIpKSB7CisJaWYgKCFkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUo ZGV2KSkgewogCQlyZXQgPSAtRUJVU1k7Ci0JCWdvdG8gb3V0OworCQlnb3RvIHVubG9jazsKIAl9 CiAKIAlpZiAoaW5mby0+Zml4LnZpc3VhbCA9PSBGQl9WSVNVQUxfVFJVRUNPTE9SKQpAQCAtMTUy OCw3ICsxNTI5LDggQEAgaW50IGRybV9mYl9oZWxwZXJfc2V0Y21hcChzdHJ1Y3QgZmJfY21hcCAq Y21hcCwgc3RydWN0IGZiX2luZm8gKmluZm8pCiAJZWxzZQogCQlyZXQgPSBzZXRjbWFwX2xlZ2Fj eShjbWFwLCBpbmZvKTsKIAotb3V0OgorCWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYp OwordW5sb2NrOgogCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5sb2NrKTsKIAogCXJldHVybiBy ZXQ7CkBAIC0xNTQ4LDEyICsxNTUwLDEzIEBAIGludCBkcm1fZmJfaGVscGVyX2lvY3RsKHN0cnVj dCBmYl9pbmZvICppbmZvLCB1bnNpZ25lZCBpbnQgY21kLAogCQkJdW5zaWduZWQgbG9uZyBhcmcp CiB7CiAJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsKKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7CiAJc3RydWN0IGRybV9tb2RlX3Nl dCAqbW9kZV9zZXQ7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCWludCByZXQgPSAwOwogCiAJ bXV0ZXhfbG9jaygmZmJfaGVscGVyLT5sb2NrKTsKLQlpZiAoIWRybV9mYl9oZWxwZXJfaXNfYm91 bmQoZmJfaGVscGVyKSkgeworCWlmICghZHJtX21hc3Rlcl9pbnRlcm5hbF9hY3F1aXJlKGRldikp IHsKIAkJcmV0ID0gLUVCVVNZOwogCQlnb3RvIHVubG9jazsKIAl9CkBAIC0xNTkxLDExICsxNTk0 LDEyIEBAIGludCBkcm1fZmJfaGVscGVyX2lvY3RsKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1bnNp Z25lZCBpbnQgY21kLAogCQl9CiAKIAkJcmV0ID0gMDsKLQkJZ290byB1bmxvY2s7CisJCWJyZWFr OwogCWRlZmF1bHQ6CiAJCXJldCA9IC1FTk9UVFk7CiAJfQogCisJZHJtX21hc3Rlcl9pbnRlcm5h bF9yZWxlYXNlKGRldik7CiB1bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxvY2sp OwogCXJldHVybiByZXQ7CkBAIC0xODQ3LDE1ICsxODUxLDE4IEBAIGludCBkcm1fZmJfaGVscGVy X3Bhbl9kaXNwbGF5KHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLAogCQlyZXR1cm4gLUVC VVNZOwogCiAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5sb2NrKTsKLQlpZiAoIWRybV9mYl9oZWxw ZXJfaXNfYm91bmQoZmJfaGVscGVyKSkgewotCQltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9j ayk7Ci0JCXJldHVybiAtRUJVU1k7CisJaWYgKCFkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUo ZGV2KSkgeworCQlyZXQgPSAtRUJVU1k7CisJCWdvdG8gdW5sb2NrOwogCX0KIAogCWlmIChkcm1f ZHJ2X3VzZXNfYXRvbWljX21vZGVzZXQoZGV2KSkKIAkJcmV0ID0gcGFuX2Rpc3BsYXlfYXRvbWlj KHZhciwgaW5mbyk7CiAJZWxzZQogCQlyZXQgPSBwYW5fZGlzcGxheV9sZWdhY3kodmFyLCBpbmZv KTsKKworCWRybV9tYXN0ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOwordW5sb2NrOgogCW11dGV4 X3VubG9jaygmZmJfaGVscGVyLT5sb2NrKTsKIAogCXJldHVybiByZXQ7CkBAIC0yMDE0LDcgKzIw MjEsNyBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCURSTV9JTkZPKCJDYW5ub3QgZmluZCBhbnkgY3J0 YyBvciBzaXplc1xuIik7CiAKIAkJLyogRmlyc3QgdGltZTogZGlzYWJsZSBhbGwgY3J0YydzLi4g Ki8KLQkJaWYgKCFmYl9oZWxwZXItPmRlZmVycmVkX3NldHVwICYmICFSRUFEX09OQ0UoZmJfaGVs cGVyLT5kZXYtPm1hc3RlcikpCisJCWlmICghZmJfaGVscGVyLT5kZWZlcnJlZF9zZXR1cCkKIAkJ CXJlc3RvcmVfZmJkZXZfbW9kZShmYl9oZWxwZXIpOwogCQlyZXR1cm4gLUVBR0FJTjsKIAl9CkBA IC0zMDI5LDYgKzMwMzYsNyBAQCBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfaW5pdGlhbF9j b25maWcpOwogICovCiBpbnQgZHJtX2ZiX2hlbHBlcl9ob3RwbHVnX2V2ZW50KHN0cnVjdCBkcm1f ZmJfaGVscGVyICpmYl9oZWxwZXIpCiB7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiX2hl bHBlci0+ZGV2OwogCWludCBlcnIgPSAwOwogCiAJaWYgKCFkcm1fZmJkZXZfZW11bGF0aW9uIHx8 ICFmYl9oZWxwZXIpCkBAIC0zMDQxLDEyICszMDQ5LDE0IEBAIGludCBkcm1fZmJfaGVscGVyX2hv dHBsdWdfZXZlbnQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIAkJcmV0dXJuIGVy cjsKIAl9CiAKLQlpZiAoIWZiX2hlbHBlci0+ZmIgfHwgIWRybV9mYl9oZWxwZXJfaXNfYm91bmQo ZmJfaGVscGVyKSkgeworCWlmICghZmJfaGVscGVyLT5mYiB8fCAhZHJtX21hc3Rlcl9pbnRlcm5h bF9hY3F1aXJlKGRldikpIHsKIAkJZmJfaGVscGVyLT5kZWxheWVkX2hvdHBsdWcgPSB0cnVlOwog CQltdXRleF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7CiAJCXJldHVybiBlcnI7CiAJfQogCisJ ZHJtX21hc3Rlcl9pbnRlcm5hbF9yZWxlYXNlKGRldik7CisKIAlEUk1fREVCVUdfS01TKCJcbiIp OwogCiAJZHJtX3NldHVwX2NydGNzKGZiX2hlbHBlciwgZmJfaGVscGVyLT5mYi0+d2lkdGgsIGZi X2hlbHBlci0+ZmItPmhlaWdodCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2lu dGVybmFsLmggYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKaW5kZXggZTE5YWM3Y2E2 MDJkLi5lNjI4MWQ5ZjljODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJu YWwuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKQEAgLTkzLDYgKzkzLDgg QEAgaW50IGRybV9kcm9wbWFzdGVyX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogaW50IGRybV9tYXN0ZXJf b3BlbihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7CiB2b2lkIGRybV9tYXN0ZXJfcmVsZWFz ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Citib29sIGRybV9tYXN0ZXJfaW50ZXJuYWxf YWNxdWlyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK3ZvaWQgZHJtX21hc3Rlcl9pbnRlcm5h bF9yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCiAvKiBkcm1fc3lzZnMuYyAqLwog ZXh0ZXJuIHN0cnVjdCBjbGFzcyAqZHJtX2NsYXNzOwotLSAKMi4yMC4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=