From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH v3 5/7] drm: Introduce drm_gem_object_{get,put}() Date: Tue, 28 Feb 2017 15:46:41 +0100 Message-ID: <20170228144643.5668-6-thierry.reding@gmail.com> References: <20170228144643.5668-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x241.google.com (mail-wr0-x241.google.com [IPv6:2a00:1450:400c:c0c::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7DFC86E747 for ; Tue, 28 Feb 2017 14:46:57 +0000 (UTC) Received: by mail-wr0-x241.google.com with SMTP id g10so1925899wrg.0 for ; Tue, 28 Feb 2017 06:46:57 -0800 (PST) In-Reply-To: <20170228144643.5668-1-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Daniel Vetter , =?UTF-8?q?Christian=20K=C3=B6nig?= List-Id: dri-devel@lists.freedesktop.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KCkZvciBjb25zaXN0ZW5j eSB3aXRoIG90aGVyIHJlZmVyZW5jZSBjb3VudGluZyBBUElzIGluIHRoZSBrZXJuZWwsIGFkZApk cm1fZ2VtX29iamVjdF9nZXQoKSBhbmQgZHJtX2dlbV9vYmplY3RfcHV0KCksIGFzIHdlbGwgYXMg YW4gdW5sb2NrZWQKdmFyaWFudCBvZiB0aGUgbGF0dGVyLCB0byByZWZlcmVuY2UgY291bnQgR0VN IGJ1ZmZlciBvYmplY3RzLgoKQ29tcGF0aWJpbGl0eSBhbGlhc2VzIGFyZSBhZGRlZCB0byBrZWVw IGV4aXN0aW5nIGNvZGUgd29ya2luZy4gVG8gaGVscApzcGVlZCB1cCB0aGUgdHJhbnNpdGlvbiwg YWxsIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG9sZCBmdW5jdGlvbnMgaW4gdGhlCkRSTSBjb3JlIGFy ZSBhbHJlYWR5IHJlcGxhY2VkIGluIHRoaXMgY29tbWl0LgoKVGhlIGV4aXN0aW5nIHNlbWFudGlj IHBhdGNoIGZvciB0aGUgRFJNIHN1YnN5c3RlbS13aWRlIGNvbnZlcnNpb24gaXMKZXh0ZW5kZWQg dG8gYWNjb3VudCBmb3IgdGhlc2UgbmV3IGhlbHBlcnMuCgpSZXZpZXdlZC1ieTogU2VhbiBQYXVs IDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+CkFja2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJp c3RpYW4ua29lbmlnQGFtZC5jb20+ClNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVk aW5nQG52aWRpYS5jb20+Ci0tLQogRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdCAgICAgICAg ICAgICB8IDE0ICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMgICAg ICB8IDE2ICsrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMgICAgICAgICAgICAgICAg fCA0NCArKysrKysrKystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2NtYV9oZWxw ZXIuYyAgICAgfCAxMCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMgICAgICAgICAg ICAgIHwgMTAgKystLQogaW5jbHVkZS9kcm0vZHJtX2dlbS5oICAgICAgICAgICAgICAgICAgICB8 IDgwICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiBzY3JpcHRzL2NvY2NpbmVsbGUv YXBpL2RybS1nZXQtcHV0LmNvY2NpIHwgMjAgKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgMTMw IGluc2VydGlvbnMoKyksIDY0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vZ3B1L2RybS1tbS5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0CmluZGV4IGY1 NzYwYjE0MGYxMy4uZmQzNTk5OGFjZWZjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9k cm0tbW0ucnN0CisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QKQEAgLTE4MywxNCAr MTgzLDEyIEBAIEdFTSBPYmplY3RzIExpZmV0aW1lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBB bGwgR0VNIG9iamVjdHMgYXJlIHJlZmVyZW5jZS1jb3VudGVkIGJ5IHRoZSBHRU0gY29yZS4gUmVm ZXJlbmNlcyBjYW4gYmUKLWFjcXVpcmVkIGFuZCByZWxlYXNlIGJ5IDpjOmZ1bmM6YGNhbGxpbmcK LWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgpYCBhbmQKLTpjOmZ1bmM6YGRybV9nZW1fb2JqZWN0 X3VucmVmZXJlbmNlKClgIHJlc3BlY3RpdmVseS4gVGhlIGNhbGxlcgotbXVzdCBob2xkIHRoZSA6 Yzp0eXBlOmBzdHJ1Y3QgZHJtX2RldmljZSA8ZHJtX2RldmljZT5gCi1zdHJ1Y3RfbXV0ZXggbG9j ayB3aGVuIGNhbGxpbmcKLTpjOmZ1bmM6YGRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZSgpYC4gQXMg YSBjb252ZW5pZW5jZSwgR0VNCi1wcm92aWRlcyA6YzpmdW5jOmBkcm1fZ2VtX29iamVjdF91bnJl ZmVyZW5jZV91bmxvY2tlZCgpYAotZnVuY3Rpb25zIHRoYXQgY2FuIGJlIGNhbGxlZCB3aXRob3V0 IGhvbGRpbmcgdGhlIGxvY2suCithY3F1aXJlZCBhbmQgcmVsZWFzZSBieSA6YzpmdW5jOmBjYWxs aW5nIGRybV9nZW1fb2JqZWN0X2dldCgpYCBhbmQKKzpjOmZ1bmM6YGRybV9nZW1fb2JqZWN0X3B1 dCgpYCByZXNwZWN0aXZlbHkuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZQorOmM6dHlwZTpgc3Ry dWN0IGRybV9kZXZpY2UgPGRybV9kZXZpY2U+YCBzdHJ1Y3RfbXV0ZXggbG9jayB3aGVuIGNhbGxp bmcKKzpjOmZ1bmM6YGRybV9nZW1fb2JqZWN0X2dldCgpYC4gQXMgYSBjb252ZW5pZW5jZSwgR0VN IHByb3ZpZGVzCis6YzpmdW5jOmBkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoKWAgZnVuY3Rp b25zIHRoYXQgY2FuIGJlIGNhbGxlZCB3aXRob3V0Citob2xkaW5nIHRoZSBsb2NrLgogCiBXaGVu IHRoZSBsYXN0IHJlZmVyZW5jZSB0byBhIEdFTSBvYmplY3QgaXMgcmVsZWFzZWQgdGhlIEdFTSBj b3JlIGNhbGxzCiB0aGUgOmM6dHlwZTpgc3RydWN0IGRybV9kcml2ZXIgPGRybV9kcml2ZXI+YCBn ZW1fZnJlZV9vYmplY3QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hl bHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9jbWFfaGVscGVyLmMKaW5kZXggNTk2ZmFi ZjE4YzNlLi5lY2NjMDdkMjA5MjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJf Y21hX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfY21hX2hlbHBlci5jCkBA IC0xMDIsNyArMTAyLDcgQEAgdm9pZCBkcm1fZmJfY21hX2Rlc3Ryb3koc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIpCiAKIAlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAJCWlmIChmYl9jbWEt Pm9ialtpXSkKLQkJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKCZmYl9jbWEt Pm9ialtpXS0+YmFzZSk7CisJCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoJmZiX2NtYS0+ b2JqW2ldLT5iYXNlKTsKIAl9CiAKIAlkcm1fZnJhbWVidWZmZXJfY2xlYW51cChmYik7CkBAIC0x OTAsNyArMTkwLDcgQEAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZHJtX2ZiX2NtYV9jcmVhdGVf d2l0aF9mdW5jcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlpZiAoIW9iaikgewogCQkJZGV2 X2VycihkZXYtPmRldiwgIkZhaWxlZCB0byBsb29rdXAgR0VNIG9iamVjdFxuIik7CiAJCQlyZXQg PSAtRU5YSU87Ci0JCQlnb3RvIGVycl9nZW1fb2JqZWN0X3VucmVmZXJlbmNlOworCQkJZ290byBl cnJfZ2VtX29iamVjdF9wdXQ7CiAJCX0KIAogCQltaW5fc2l6ZSA9IChoZWlnaHQgLSAxKSAqIG1v ZGVfY21kLT5waXRjaGVzW2ldCkBAIC0xOTgsOSArMTk4LDkgQEAgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZHJtX2ZiX2NtYV9jcmVhdGVfd2l0aF9mdW5jcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQkJICsgbW9kZV9jbWQtPm9mZnNldHNbaV07CiAKIAkJaWYgKG9iai0+c2l6ZSA8IG1pbl9z aXplKSB7Ci0JCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOworCQkJ ZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7CiAJCQlyZXQgPSAtRUlOVkFMOwotCQkJ Z290byBlcnJfZ2VtX29iamVjdF91bnJlZmVyZW5jZTsKKwkJCWdvdG8gZXJyX2dlbV9vYmplY3Rf cHV0OwogCQl9CiAJCW9ianNbaV0gPSB0b19kcm1fZ2VtX2NtYV9vYmoob2JqKTsKIAl9CkBAIC0y MDgsMTQgKzIwOCwxNCBAQCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpkcm1fZmJfY21hX2NyZWF0 ZV93aXRoX2Z1bmNzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJZmJfY21hID0gZHJtX2ZiX2Nt YV9hbGxvYyhkZXYsIG1vZGVfY21kLCBvYmpzLCBpLCBmdW5jcyk7CiAJaWYgKElTX0VSUihmYl9j bWEpKSB7CiAJCXJldCA9IFBUUl9FUlIoZmJfY21hKTsKLQkJZ290byBlcnJfZ2VtX29iamVjdF91 bnJlZmVyZW5jZTsKKwkJZ290byBlcnJfZ2VtX29iamVjdF9wdXQ7CiAJfQogCiAJcmV0dXJuICZm Yl9jbWEtPmZiOwogCi1lcnJfZ2VtX29iamVjdF91bnJlZmVyZW5jZToKK2Vycl9nZW1fb2JqZWN0 X3B1dDoKIAlmb3IgKGktLTsgaSA+PSAwOyBpLS0pCi0JCWRybV9nZW1fb2JqZWN0X3VucmVmZXJl bmNlX3VubG9ja2VkKCZvYmpzW2ldLT5iYXNlKTsKKwkJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9j a2VkKCZvYmpzW2ldLT5iYXNlKTsKIAlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQogRVhQT1JUX1NZ TUJPTF9HUEwoZHJtX2ZiX2NtYV9jcmVhdGVfd2l0aF9mdW5jcyk7CkBAIC00NzcsNyArNDc3LDcg QEAgZHJtX2ZiZGV2X2NtYV9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKIGVy cl9mYl9pbmZvX2Rlc3Ryb3k6CiAJZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaShoZWxwZXIpOwog ZXJyX2dlbV9mcmVlX29iamVjdDoKLQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tl ZCgmb2JqLT5iYXNlKTsKKwlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoJm9iai0+YmFzZSk7 CiAJcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0u YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKaW5kZXggYmM5M2RlMzA4NjczLi5iMWUyOGM5 NDQ2MzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9nZW0uYwpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyB2b2lkIGRybV9n ZW1fb2JqZWN0X2V4cG9ydGVkX2RtYV9idWZfZnJlZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aikKIH0KIAogc3RhdGljIHZvaWQKLWRybV9nZW1fb2JqZWN0X2hhbmRsZV91bnJlZmVyZW5jZV91 bmxvY2tlZChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK2RybV9nZW1fb2JqZWN0X2hhbmRs ZV9wdXRfdW5sb2NrZWQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCiB7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2OwogCWJvb2wgZmluYWwgPSBmYWxzZTsKQEAgLTI0MSw3 ICsyNDEsNyBAQCBkcm1fZ2VtX29iamVjdF9oYW5kbGVfdW5yZWZlcmVuY2VfdW5sb2NrZWQoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCiAJbXV0ZXhfdW5sb2NrKCZkZXYtPm9iamVjdF9uYW1l X2xvY2spOwogCiAJaWYgKGZpbmFsKQotCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxv Y2tlZChvYmopOworCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKIH0KIAogLyoK QEAgLTI2Miw3ICsyNjIsNyBAQCBkcm1fZ2VtX29iamVjdF9yZWxlYXNlX2hhbmRsZShpbnQgaWQs IHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKIAlpZiAoZGV2LT5kcml2ZXItPmdlbV9jbG9zZV9vYmpl Y3QpCiAJCWRldi0+ZHJpdmVyLT5nZW1fY2xvc2Vfb2JqZWN0KG9iaiwgZmlsZV9wcml2KTsKIAot CWRybV9nZW1fb2JqZWN0X2hhbmRsZV91bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOworCWRybV9n ZW1fb2JqZWN0X2hhbmRsZV9wdXRfdW5sb2NrZWQob2JqKTsKIAogCXJldHVybiAwOwogfQpAQCAt MzUyLDcgKzM1Miw3IEBAIGRybV9nZW1faGFuZGxlX2NyZWF0ZV90YWlsKHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2LAogCiAJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXYtPm9iamVjdF9u YW1lX2xvY2spKTsKIAlpZiAob2JqLT5oYW5kbGVfY291bnQrKyA9PSAwKQotCQlkcm1fZ2VtX29i amVjdF9yZWZlcmVuY2Uob2JqKTsKKwkJZHJtX2dlbV9vYmplY3RfZ2V0KG9iaik7CiAKIAkvKgog CSAqIEdldCB0aGUgdXNlci12aXNpYmxlIGhhbmRsZSB1c2luZyBpZHIuICBQcmVsb2FkIGFuZCBw ZXJmb3JtCkBAIC0zOTIsNyArMzkyLDcgQEAgZHJtX2dlbV9oYW5kbGVfY3JlYXRlX3RhaWwoc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAJaWRyX3JlbW92ZSgmZmlsZV9wcml2LT5vYmplY3Rf aWRyLCBoYW5kbGUpOwogCXNwaW5fdW5sb2NrKCZmaWxlX3ByaXYtPnRhYmxlX2xvY2spOwogZXJy X3VucmVmOgotCWRybV9nZW1fb2JqZWN0X2hhbmRsZV91bnJlZmVyZW5jZV91bmxvY2tlZChvYmop OworCWRybV9nZW1fb2JqZWN0X2hhbmRsZV9wdXRfdW5sb2NrZWQob2JqKTsKIAlyZXR1cm4gcmV0 OwogfQogCkBAIC02MDYsNyArNjA2LDcgQEAgZHJtX2dlbV9vYmplY3RfbG9va3VwKHN0cnVjdCBk cm1fZmlsZSAqZmlscCwgdTMyIGhhbmRsZSkKIAkvKiBDaGVjayBpZiB3ZSBjdXJyZW50bHkgaGF2 ZSBhIHJlZmVyZW5jZSBvbiB0aGUgb2JqZWN0ICovCiAJb2JqID0gaWRyX2ZpbmQoJmZpbHAtPm9i amVjdF9pZHIsIGhhbmRsZSk7CiAJaWYgKG9iaikKLQkJZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNl KG9iaik7CisJCWRybV9nZW1fb2JqZWN0X2dldChvYmopOwogCiAJc3Bpbl91bmxvY2soJmZpbHAt PnRhYmxlX2xvY2spOwogCkBAIC02ODMsNyArNjgzLDcgQEAgZHJtX2dlbV9mbGlua19pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiBlcnI6CiAJbXV0ZXhfdW5sb2Nr KCZkZXYtPm9iamVjdF9uYW1lX2xvY2spOwotCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3Vu bG9ja2VkKG9iaik7CisJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7CiAJcmV0dXJu IHJldDsKIH0KIApAQCAtNzEzLDcgKzcxMyw3IEBAIGRybV9nZW1fb3Blbl9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCW11dGV4X2xvY2soJmRldi0+b2JqZWN0X25h bWVfbG9jayk7CiAJb2JqID0gaWRyX2ZpbmQoJmRldi0+b2JqZWN0X25hbWVfaWRyLCAoaW50KSBh cmdzLT5uYW1lKTsKIAlpZiAob2JqKSB7Ci0JCWRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZShvYmop OworCQlkcm1fZ2VtX29iamVjdF9nZXQob2JqKTsKIAl9IGVsc2UgewogCQltdXRleF91bmxvY2so JmRldi0+b2JqZWN0X25hbWVfbG9jayk7CiAJCXJldHVybiAtRU5PRU5UOwpAQCAtNzIxLDcgKzcy MSw3IEBAIGRybV9nZW1fb3Blbl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAogCiAJLyogZHJtX2dlbV9oYW5kbGVfY3JlYXRlX3RhaWwgdW5sb2NrcyBkZXYtPm9iamVj dF9uYW1lX2xvY2suICovCiAJcmV0ID0gZHJtX2dlbV9oYW5kbGVfY3JlYXRlX3RhaWwoZmlsZV9w cml2LCBvYmosICZoYW5kbGUpOwotCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2Vk KG9iaik7CisJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKIApAQCAtODA5LDE2ICs4MDksMTYgQEAgZHJtX2dlbV9vYmplY3RfZnJlZShz dHJ1Y3Qga3JlZiAqa3JlZikKIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9vYmplY3RfZnJlZSk7CiAK IC8qKgotICogZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQgLSByZWxlYXNlIGEg R0VNIEJPIHJlZmVyZW5jZQorICogZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkIC0gZHJvcCBh IEdFTSBidWZmZXIgb2JqZWN0IHJlZmVyZW5jZQogICogQG9iajogR0VNIGJ1ZmZlciBvYmplY3QK ICAqCiAgKiBUaGlzIHJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIEBvYmouIENhbGxlcnMgbXVzdCBu b3QgaG9sZCB0aGUKICAqICZkcm1fZGV2aWNlLnN0cnVjdF9tdXRleCBsb2NrIHdoZW4gY2FsbGlu ZyB0aGlzIGZ1bmN0aW9uLgogICoKLSAqIFNlZSBhbHNvIF9fZHJtX2dlbV9vYmplY3RfdW5yZWZl cmVuY2UoKS4KKyAqIFNlZSBhbHNvIF9fZHJtX2dlbV9vYmplY3RfcHV0KCkuCiAgKi8KIHZvaWQK LWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqKQorZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqb2JqKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAKQEAgLTgzNCwxMCArODM0LDEw IEBAIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqKQogCQkJCSZkZXYtPnN0cnVjdF9tdXRleCkpCiAJCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwogfQotRVhQT1JUX1NZTUJPTChkcm1fZ2VtX29iamVjdF91bnJlZmVy ZW5jZV91bmxvY2tlZCk7CitFWFBPUlRfU1lNQk9MKGRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tl ZCk7CiAKIC8qKgotICogZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UgLSByZWxlYXNlIGEgR0VN IEJPIHJlZmVyZW5jZQorICogZHJtX2dlbV9vYmplY3RfcHV0IC0gcmVsZWFzZSBhIEdFTSBidWZm ZXIgb2JqZWN0IHJlZmVyZW5jZQogICogQG9iajogR0VNIGJ1ZmZlciBvYmplY3QKICAqCiAgKiBU aGlzIHJlbGVhc2VzIGEgcmVmZXJlbmNlIHRvIEBvYmouIENhbGxlcnMgbXVzdCBob2xkIHRoZQpA QCAtODQ1LDEwICs4NDUsMTAgQEAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX29iamVjdF91bnJlZmVy ZW5jZV91bmxvY2tlZCk7CiAgKiBkcml2ZXIgZG9lc24ndCB1c2UgJmRybV9kZXZpY2Uuc3RydWN0 X211dGV4IGZvciBhbnl0aGluZy4KICAqCiAgKiBGb3IgZHJpdmVycyBub3QgZW5jdW1iZXJlZCB3 aXRoIGxlZ2FjeSBsb2NraW5nIHVzZQotICogZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5s b2NrZWQoKSBpbnN0ZWFkLgorICogZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKCkgaW5zdGVh ZC4KICAqLwogdm9pZAotZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmopCitkcm1fZ2VtX29iamVjdF9wdXQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopCiB7CiAJaWYgKG9iaikgewogCQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJm9iai0+ZGV2 LT5zdHJ1Y3RfbXV0ZXgpKTsKQEAgLTg1Niw3ICs4NTYsNyBAQCBkcm1fZ2VtX29iamVjdF91bnJl ZmVyZW5jZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKIAkJa3JlZl9wdXQoJm9iai0+cmVm Y291bnQsIGRybV9nZW1fb2JqZWN0X2ZyZWUpOwogCX0KIH0KLUVYUE9SVF9TWU1CT0woZHJtX2dl bV9vYmplY3RfdW5yZWZlcmVuY2UpOworRVhQT1JUX1NZTUJPTChkcm1fZ2VtX29iamVjdF9wdXQp OwogCiAvKioKICAqIGRybV9nZW1fdm1fb3BlbiAtIHZtYS0+b3BzLT5vcGVuIGltcGxlbWVudGF0 aW9uIGZvciBHRU0KQEAgLTg2OSw3ICs4NjksNyBAQCB2b2lkIGRybV9nZW1fdm1fb3BlbihzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9 IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOwogCi0JZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKG9iaik7 CisJZHJtX2dlbV9vYmplY3RfZ2V0KG9iaik7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9nZW1fdm1f b3Blbik7CiAKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIGRybV9nZW1fdm1fY2xvc2Uoc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEpCiB7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSB2 bWEtPnZtX3ByaXZhdGVfZGF0YTsKIAotCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9j a2VkKG9iaik7CisJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7CiB9CiBFWFBPUlRf U1lNQk9MKGRybV9nZW1fdm1fY2xvc2UpOwogCkBAIC05MzUsNyArOTM1LDcgQEAgaW50IGRybV9n ZW1fbW1hcF9vYmooc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGxvbmcgb2Jq X3NpemUsCiAJICogKHdoaWNoIHNob3VsZCBoYXBwZW4gd2hldGhlciB0aGUgdm1hIHdhcyBjcmVh dGVkIGJ5IHRoaXMgY2FsbCwgb3IKIAkgKiBieSBhIHZtX29wZW4gZHVlIHRvIG1yZW1hcCBvciBw YXJ0aWFsIHVubWFwIG9yIHdoYXRldmVyKS4KIAkgKi8KLQlkcm1fZ2VtX29iamVjdF9yZWZlcmVu Y2Uob2JqKTsKKwlkcm1fZ2VtX29iamVjdF9nZXQob2JqKTsKIAogCXJldHVybiAwOwogfQpAQCAt OTkyLDE0ICs5OTIsMTQgQEAgaW50IGRybV9nZW1fbW1hcChzdHJ1Y3QgZmlsZSAqZmlscCwgc3Ry dWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiAJCXJldHVybiAtRUlOVkFMOwogCiAJaWYgKCFkcm1f dm1hX25vZGVfaXNfYWxsb3dlZChub2RlLCBwcml2KSkgewotCQlkcm1fZ2VtX29iamVjdF91bnJl ZmVyZW5jZV91bmxvY2tlZChvYmopOworCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2Jq KTsKIAkJcmV0dXJuIC1FQUNDRVM7CiAJfQogCiAJcmV0ID0gZHJtX2dlbV9tbWFwX29iaihvYmos IGRybV92bWFfbm9kZV9zaXplKG5vZGUpIDw8IFBBR0VfU0hJRlQsCiAJCQkgICAgICAgdm1hKTsK IAotCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7CisJZHJtX2dlbV9v YmplY3RfcHV0X3VubG9ja2VkKG9iaik7CiAKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9nZW1fY21hX2hlbHBlci5jCmluZGV4IGY3YmEzMmJmZTM5Yi4uYmI5NjhlNzY3NzliIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5jCkBAIC0xMjEsNyArMTIxLDcgQEAgc3RydWN0 IGRybV9nZW1fY21hX29iamVjdCAqZHJtX2dlbV9jbWFfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkcm0sCiAJcmV0dXJuIGNtYV9vYmo7CiAKIGVycm9yOgotCWRybV9nZW1fb2JqZWN0X3VucmVm ZXJlbmNlX3VubG9ja2VkKCZjbWFfb2JqLT5iYXNlKTsKKwlkcm1fZ2VtX29iamVjdF9wdXRfdW5s b2NrZWQoJmNtYV9vYmotPmJhc2UpOwogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CiBFWFBPUlRf U1lNQk9MX0dQTChkcm1fZ2VtX2NtYV9jcmVhdGUpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIGRybV9n ZW1fY21hX2NyZWF0ZV93aXRoX2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAkg Ki8KIAlyZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZV9wcml2LCBnZW1fb2JqLCBoYW5k bGUpOwogCS8qIGRyb3AgcmVmZXJlbmNlIGZyb20gYWxsb2NhdGUgLSBoYW5kbGUgaG9sZHMgaXQg bm93LiAqLwotCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKGdlbV9vYmopOwor CWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChnZW1fb2JqKTsKIAlpZiAocmV0KQogCQlyZXR1 cm4gRVJSX1BUUihyZXQpOwogCkBAIC0yOTMsNyArMjkzLDcgQEAgaW50IGRybV9nZW1fY21hX2R1 bWJfbWFwX29mZnNldChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAogCSpvZmZzZXQgPSBk cm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoJmdlbV9vYmotPnZtYV9ub2RlKTsKIAotCWRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKGdlbV9vYmopOworCWRybV9nZW1fb2JqZWN0X3B1 dF91bmxvY2tlZChnZW1fb2JqKTsKIAogCXJldHVybiAwOwogfQpAQCAtNDE2LDEzICs0MTYsMTMg QEAgdW5zaWduZWQgbG9uZyBkcm1fZ2VtX2NtYV9nZXRfdW5tYXBwZWRfYXJlYShzdHJ1Y3QgZmls ZSAqZmlscCwKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlpZiAoIWRybV92bWFfbm9kZV9pc19hbGxv d2VkKG5vZGUsIHByaXYpKSB7Ci0JCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2Vk KG9iaik7CisJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwogCQlyZXR1cm4gLUVB Q0NFUzsKIAl9CiAKIAljbWFfb2JqID0gdG9fZHJtX2dlbV9jbWFfb2JqKG9iaik7CiAKLQlkcm1f Z2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOworCWRybV9nZW1fb2JqZWN0X3B1 dF91bmxvY2tlZChvYmopOwogCiAJcmV0dXJuIGNtYV9vYmotPnZhZGRyID8gKHVuc2lnbmVkIGxv bmcpY21hX29iai0+dmFkZHIgOiAtRUlOVkFMOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9wcmltZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jCmluZGV4IDI1YWE0 NTU4ZjFiNS4uODY2YjI5NGU3YzYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3By aW1lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jCkBAIC0zMTgsNyArMzE4LDcg QEAgc3RydWN0IGRtYV9idWYgKmRybV9nZW1fZG1hYnVmX2V4cG9ydChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCQlyZXR1cm4gZG1hX2J1ZjsKIAogCWRybV9kZXZfcmVmKGRldik7Ci0JZHJtX2dl bV9vYmplY3RfcmVmZXJlbmNlKGV4cF9pbmZvLT5wcml2KTsKKwlkcm1fZ2VtX29iamVjdF9nZXQo ZXhwX2luZm8tPnByaXYpOwogCiAJcmV0dXJuIGRtYV9idWY7CiB9CkBAIC0zMzksNyArMzM5LDcg QEAgdm9pZCBkcm1fZ2VtX2RtYWJ1Zl9yZWxlYXNlKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKQog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsKIAogCS8qIGRyb3AgdGhlIHJlZmVy ZW5jZSBvbiB0aGUgZXhwb3J0IGZkIGhvbGRzICovCi0JZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVu Y2VfdW5sb2NrZWQob2JqKTsKKwlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKIAog CWRybV9kZXZfdW5yZWYoZGV2KTsKIH0KQEAgLTU4NSw3ICs1ODUsNyBAQCBpbnQgZHJtX2dlbV9w cmltZV9oYW5kbGVfdG9fZmQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIGZhaWxfcHV0X2RtYWJ1 ZjoKIAlkbWFfYnVmX3B1dChkbWFidWYpOwogb3V0OgotCWRybV9nZW1fb2JqZWN0X3VucmVmZXJl bmNlX3VubG9ja2VkKG9iaik7CisJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9iaik7CiBv dXRfdW5sb2NrOgogCW11dGV4X3VubG9jaygmZmlsZV9wcml2LT5wcmltZS5sb2NrKTsKIApAQCAt NjE2LDcgKzYxNiw3IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZHJtX2dlbV9wcmltZV9pbXBv cnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAqIEltcG9ydGluZyBkbWFidWYgZXhwb3J0 ZWQgZnJvbSBvdXQgb3duIGdlbSBpbmNyZWFzZXMKIAkJCSAqIHJlZmNvdW50IG9uIGdlbSBpdHNl bGYgaW5zdGVhZCBvZiBmX2NvdW50IG9mIGRtYWJ1Zi4KIAkJCSAqLwotCQkJZHJtX2dlbV9vYmpl Y3RfcmVmZXJlbmNlKG9iaik7CisJCQlkcm1fZ2VtX29iamVjdF9nZXQob2JqKTsKIAkJCXJldHVy biBvYmo7CiAJCX0KIAl9CkBAIC03MDQsNyArNzA0LDcgQEAgaW50IGRybV9nZW1fcHJpbWVfZmRf dG9faGFuZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAkvKiBfaGFuZGxlX2NyZWF0ZV90 YWlsIHVuY29uZGl0aW9uYWxseSB1bmxvY2tzIGRldi0+b2JqZWN0X25hbWVfbG9jay4gKi8KIAly ZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGVfdGFpbChmaWxlX3ByaXYsIG9iaiwgaGFuZGxlKTsK LQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOworCWRybV9nZW1fb2Jq ZWN0X3B1dF91bmxvY2tlZChvYmopOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3B1dDsKIApkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dlbS5oIGIvaW5jbHVkZS9kcm0vZHJtX2dlbS5oCmlu ZGV4IDQ0OWE0MWI1NmZmYy4uM2IyYTI4ZjdmNDlmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9k cm1fZ2VtLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2dlbS5oCkBAIC00OCw5ICs0OCw5IEBAIHN0 cnVjdCBkcm1fZ2VtX29iamVjdCB7CiAJICoKIAkgKiBSZWZlcmVuY2UgY291bnQgb2YgdGhpcyBv YmplY3QKIAkgKgotCSAqIFBsZWFzZSB1c2UgZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKCkgdG8g YWNxdWlyZSBhbmQKLQkgKiBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgpIG9yIGRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKCkKLQkgKiB0byByZWxlYXNlIGEgcmVmZXJlbmNl IHRvIGEgR0VNIGJ1ZmZlciBvYmplY3QuCisJICogUGxlYXNlIHVzZSBkcm1fZ2VtX29iamVjdF9n ZXQoKSB0byBhY3F1aXJlIGFuZCBkcm1fZ2VtX29iamVjdF9wdXQoKQorCSAqIG9yIGRybV9nZW1f b2JqZWN0X3B1dF91bmxvY2tlZCgpIHRvIHJlbGVhc2UgYSByZWZlcmVuY2UgdG8gYSBHRU0KKwkg KiBidWZmZXIgb2JqZWN0LgogCSAqLwogCXN0cnVjdCBrcmVmIHJlZmNvdW50OwogCkBAIC0xODcs NDIgKzE4Nyw5MCBAQCBpbnQgZHJtX2dlbV9tbWFwX29iaihzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwgdW5zaWduZWQgbG9uZyBvYmpfc2l6ZSwKIGludCBkcm1fZ2VtX21tYXAoc3RydWN0IGZp bGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKIAogLyoqCi0gKiBkcm1fZ2Vt X29iamVjdF9yZWZlcmVuY2UgLSBhY3F1aXJlIGEgR0VNIEJPIHJlZmVyZW5jZQorICogZHJtX2dl bV9vYmplY3RfZ2V0IC0gYWNxdWlyZSBhIEdFTSBidWZmZXIgb2JqZWN0IHJlZmVyZW5jZQogICog QG9iajogR0VNIGJ1ZmZlciBvYmplY3QKICAqCi0gKiBUaGlzIGFjcXVpcmVzIGFkZGl0aW9uYWwg cmVmZXJlbmNlIHRvIEBvYmouIEl0IGlzIGlsbGVnYWwgdG8gY2FsbCB0aGlzCi0gKiB3aXRob3V0 IGFscmVhZHkgaG9sZGluZyBhIHJlZmVyZW5jZS4gTm8gbG9ja3MgcmVxdWlyZWQuCisgKiBUaGlz IGZ1bmN0aW9uIGFjcXVpcmVzIGFuIGFkZGl0aW9uYWwgcmVmZXJlbmNlIHRvIEBvYmouIEl0IGlz IGlsbGVnYWwgdG8KKyAqIGNhbGwgdGhpcyB3aXRob3V0IGFscmVhZHkgaG9sZGluZyBhIHJlZmVy ZW5jZS4gTm8gbG9ja3MgcmVxdWlyZWQuCiAgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotZHJtX2dl bV9vYmplY3RfcmVmZXJlbmNlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQorc3RhdGljIGlu bGluZSB2b2lkIGRybV9nZW1fb2JqZWN0X2dldChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikK IHsKIAlrcmVmX2dldCgmb2JqLT5yZWZjb3VudCk7CiB9CiAKIC8qKgotICogX19kcm1fZ2VtX29i amVjdF91bnJlZmVyZW5jZSAtIHJhdyBmdW5jdGlvbiB0byByZWxlYXNlIGEgR0VNIEJPIHJlZmVy ZW5jZQorICogX19kcm1fZ2VtX29iamVjdF9wdXQgLSByYXcgZnVuY3Rpb24gdG8gcmVsZWFzZSBh IEdFTSBidWZmZXIgb2JqZWN0IHJlZmVyZW5jZQogICogQG9iajogR0VNIGJ1ZmZlciBvYmplY3QK ICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGJlIHVzZWQgYnkgZHJpdmVycyB3aGlj aCBhcmUgbm90IGVuY3VtYmVyZWQgd2l0aAogICogJmRybV9kZXZpY2Uuc3RydWN0X211dGV4IGxl Z2FjeSBsb2NraW5nIGFuZCB3aGljaCBhcmUgdXNpbmcgdGhlCiAgKiBnZW1fZnJlZV9vYmplY3Rf dW5sb2NrZWQgY2FsbGJhY2suIEl0IGF2b2lkcyBhbGwgdGhlIGxvY2tpbmcgY2hlY2tzIGFuZAot ICogbG9ja2luZyBvdmVyaGVhZCBvZiBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgpIGFuZAot ICogZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQoKS4KKyAqIGxvY2tpbmcgb3Zl cmhlYWQgb2YgZHJtX2dlbV9vYmplY3RfcHV0KCkgYW5kIGRybV9nZW1fb2JqZWN0X3B1dF91bmxv Y2tlZCgpLgogICoKICAqIERyaXZlcnMgc2hvdWxkIG5ldmVyIGNhbGwgdGhpcyBkaXJlY3RseSBp biB0aGVpciBjb2RlLiBJbnN0ZWFkIHRoZXkgc2hvdWxkCi0gKiB3cmFwIGl0IHVwIGludG8gYSBg YGRyaXZlcl9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKHN0cnVjdCBkcml2ZXJfZ2VtX29iamVjdAot ICogKm9iailgYCB3cmFwcGVyIGZ1bmN0aW9uLCBhbmQgdXNlIHRoYXQuIFNoYXJlZCBjb2RlIHNo b3VsZCBuZXZlciBjYWxsIHRoaXMsIHRvCisgKiB3cmFwIGl0IHVwIGludG8gYSBgYGRyaXZlcl9n ZW1fb2JqZWN0X3B1dChzdHJ1Y3QgZHJpdmVyX2dlbV9vYmplY3QgKm9iailgYAorICogd3JhcHBl ciBmdW5jdGlvbiwgYW5kIHVzZSB0aGF0LiBTaGFyZWQgY29kZSBzaG91bGQgbmV2ZXIgY2FsbCB0 aGlzLCB0bwogICogYXZvaWQgYnJlYWtpbmcgZHJpdmVycyBieSBhY2NpZGVudCB3aGljaCBzdGls bCBkZXBlbmQgdXBvbgogICogJmRybV9kZXZpY2Uuc3RydWN0X211dGV4IGxvY2tpbmcuCiAgKi8K IHN0YXRpYyBpbmxpbmUgdm9pZAotX19kcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaikKK19fZHJtX2dlbV9vYmplY3RfcHV0KHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqKQogewogCWtyZWZfcHV0KCZvYmotPnJlZmNvdW50LCBkcm1fZ2VtX29iamVj dF9mcmVlKTsKIH0KIAotdm9pZCBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Ci12b2lkIGRybV9nZW1fb2JqZWN0X3VucmVmZXJl bmNlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKK3ZvaWQgZHJtX2dlbV9vYmplY3RfcHV0 X3VubG9ja2VkKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKK3ZvaWQgZHJtX2dlbV9vYmpl Y3RfcHV0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKKworLyoqCisgKiBkcm1fZ2VtX29i amVjdF9yZWZlcmVuY2UgLSBhY3F1aXJlIGEgR0VNIGJ1ZmZlciBvYmplY3QgcmVmZXJlbmNlCisg KiBAb2JqOiBHRU0gYnVmZmVyIG9iamVjdAorICoKKyAqIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5 IGFsaWFzIGZvciBkcm1fZ2VtX29iamVjdF9nZXQoKSBhbmQgc2hvdWxkIG5vdCBiZQorICogdXNl ZCBieSBuZXcgY29kZS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIGRybV9nZW1fb2JqZWN0X3Jl ZmVyZW5jZShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKK3sKKwlkcm1fZ2VtX29iamVjdF9n ZXQob2JqKTsKK30KKworLyoqCisgKiBfX2RybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlIC0gcmF3 IGZ1bmN0aW9uIHRvIHJlbGVhc2UgYSBHRU0gYnVmZmVyIG9iamVjdAorICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZQorICogQG9iajogR0VNIGJ1ZmZlciBvYmplY3QK KyAqCisgKiBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBhbGlhcyBmb3IgX19kcm1fZ2VtX29iamVj dF9wdXQoKSBhbmQgc2hvdWxkIG5vdCBiZQorICogdXNlZCBieSBuZXcgY29kZS4KKyAqLworc3Rh dGljIGlubGluZSB2b2lkIF9fZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Uoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmopCit7CisJX19kcm1fZ2VtX29iamVjdF9wdXQob2JqKTsKK30KKworLyoq CisgKiBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZCAtIHJlbGVhc2UgYSBHRU0g YnVmZmVyIG9iamVjdCByZWZlcmVuY2UKKyAqIEBvYmo6IEdFTSBidWZmZXIgb2JqZWN0CisgKgor ICogVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgYWxpYXMgZm9yIGRybV9nZW1fb2JqZWN0X3B1dF91 bmxvY2tlZCgpIGFuZCBzaG91bGQKKyAqIG5vdCBiZSB1c2VkIGJ5IG5ldyBjb2RlLgorICovCitz dGF0aWMgaW5saW5lIHZvaWQKK2RybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQoreworCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tl ZChvYmopOworfQorCisvKioKKyAqIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlIC0gcmVsZWFz ZSBhIEdFTSBidWZmZXIgb2JqZWN0IHJlZmVyZW5jZQorICogQG9iajogR0VNIGJ1ZmZlciBvYmpl Y3QKKyAqCisgKiBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBhbGlhcyBmb3IgZHJtX2dlbV9vYmpl Y3RfcHV0KCkgYW5kIHNob3VsZCBub3QgYmUKKyAqIHVzZWQgYnkgbmV3IGNvZGUuCisgKi8KK3N0 YXRpYyBpbmxpbmUgdm9pZCBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iaikKK3sKKwlkcm1fZ2VtX29iamVjdF9wdXQob2JqKTsKK30KIAogaW50IGRy bV9nZW1faGFuZGxlX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAkJCSAgc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCmRpZmYgLS1naXQgYS9zY3JpcHRzL2NvY2NpbmVsbGUv YXBpL2RybS1nZXQtcHV0LmNvY2NpIGIvc2NyaXB0cy9jb2NjaW5lbGxlL2FwaS9kcm0tZ2V0LXB1 dC5jb2NjaQppbmRleCBmZDI5OGMyNGE0NjUuLjI0ODgyNTQ3YjRkMSAxMDA2NDQKLS0tIGEvc2Ny aXB0cy9jb2NjaW5lbGxlL2FwaS9kcm0tZ2V0LXB1dC5jb2NjaQorKysgYi9zY3JpcHRzL2NvY2Np bmVsbGUvYXBpL2RybS1nZXQtcHV0LmNvY2NpCkBAIC0zMiw2ICszMiwxOCBAQCBleHByZXNzaW9u IG9iamVjdDsKIHwKIC0gZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKG9iamVjdCkKICsgZHJt X2ZyYW1lYnVmZmVyX3B1dChvYmplY3QpCit8CistIGRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZShv YmplY3QpCisrIGRybV9nZW1fb2JqZWN0X2dldChvYmplY3QpCit8CistIGRybV9nZW1fb2JqZWN0 X3VucmVmZXJlbmNlKG9iamVjdCkKKysgZHJtX2dlbV9vYmplY3RfcHV0KG9iamVjdCkKK3wKKy0g X19kcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmplY3QpCisrIF9fZHJtX2dlbV9vYmplY3Rf cHV0KG9iamVjdCkKK3wKKy0gZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQob2Jq ZWN0KQorKyBkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqZWN0KQogKQogCiBAciBkZXBl bmRzIG9uIHJlcG9ydEAKQEAgLTUxLDYgKzYzLDE0IEBAIGRybV9jb25uZWN0b3JfcmVmZXJlbmNl QHAob2JqZWN0KQogZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlQHAob2JqZWN0KQogfAogZHJt X2ZyYW1lYnVmZmVyX3JlZmVyZW5jZUBwKG9iamVjdCkKK3wKK2RybV9nZW1fb2JqZWN0X3VucmVm ZXJlbmNlQHAob2JqZWN0KQorfAorZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlQHAob2JqZWN0KQor fAorX19kcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmplY3QpCit8Citkcm1fZ2VtX29iamVj dF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmplY3QpCiApCiAKIEBzY3JpcHQ6cHl0aG9uIGRlcGVu ZHMgb24gcmVwb3J0QAotLSAKMi4xMS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK