From mboxrd@z Thu Jan 1 00:00:00 1970 From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" Subject: [PATCH 1/4] dma-buf: add reservation_object_fences helper Date: Wed, 7 Aug 2019 15:53:09 +0200 Message-ID: <20190807135312.1730-1-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, dri-devel@lists.freedesktop.org, chris@chris-wilson.co.uk List-Id: dri-devel@lists.freedesktop.org QWRkIGEgbmV3IGhlbHBlciB0byBnZXQgYSBjb25zaXN0ZW50IHNldCBvZiBwb2ludGVycyBmcm9t IHRoZSByZXNlcnZhdGlvbgpvYmplY3QuIFdoaWxlIGF0IGl0IGdyb3VwIGFsbCBhY2Nlc3MgaGVs cGVycyB0b2dldGhlciBpbiB0aGUgaGVhZGVyIGZpbGUuCgp2MjogY29ycmVjdGx5IHJldHVybiBz aGFyZWRfY291bnQgYXMgd2VsbAoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hy aXN0aWFuLmtvZW5pZ0BhbWQuY29tPgotLS0KIGRyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMgICAg IHwgIDMxICsrLS0tLS0tLQogZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMgfCAgODIgKysr KysrKystLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2xpbnV4L3Jlc2VydmF0aW9uLmggICB8IDEx NSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDEw MSBpbnNlcnRpb25zKCspLCAxMjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9k bWEtYnVmL2RtYS1idWYuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKaW5kZXggZjQ1YmZi MjllZjk2Li42NzUxMGYyYmU4YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVm LmMKKysrIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0 YXRpYyBfX3BvbGxfdCBkbWFfYnVmX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUg KnBvbGwpCiAJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdF9saXN0ICpmb2JqOwogCXN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlX2V4Y2w7CiAJX19wb2xsX3QgZXZlbnRzOwotCXVuc2lnbmVkIHNoYXJl ZF9jb3VudCwgc2VxOworCXVuc2lnbmVkIHNoYXJlZF9jb3VudDsKIAogCWRtYWJ1ZiA9IGZpbGUt PnByaXZhdGVfZGF0YTsKIAlpZiAoIWRtYWJ1ZiB8fCAhZG1hYnVmLT5yZXN2KQpAQCAtMjEzLDIx ICsyMTMsOCBAQCBzdGF0aWMgX19wb2xsX3QgZG1hX2J1Zl9wb2xsKHN0cnVjdCBmaWxlICpmaWxl LCBwb2xsX3RhYmxlICpwb2xsKQogCWlmICghZXZlbnRzKQogCQlyZXR1cm4gMDsKIAotcmV0cnk6 Ci0Jc2VxID0gcmVhZF9zZXFjb3VudF9iZWdpbigmcmVzdi0+c2VxKTsKIAlyY3VfcmVhZF9sb2Nr KCk7Ci0KLQlmb2JqID0gcmN1X2RlcmVmZXJlbmNlKHJlc3YtPmZlbmNlKTsKLQlpZiAoZm9iaikK LQkJc2hhcmVkX2NvdW50ID0gZm9iai0+c2hhcmVkX2NvdW50OwotCWVsc2UKLQkJc2hhcmVkX2Nv dW50ID0gMDsKLQlmZW5jZV9leGNsID0gcmN1X2RlcmVmZXJlbmNlKHJlc3YtPmZlbmNlX2V4Y2wp OwotCWlmIChyZWFkX3NlcWNvdW50X3JldHJ5KCZyZXN2LT5zZXEsIHNlcSkpIHsKLQkJcmN1X3Jl YWRfdW5sb2NrKCk7Ci0JCWdvdG8gcmV0cnk7Ci0JfQotCisJcmVzZXJ2YXRpb25fb2JqZWN0X2Zl bmNlcyhyZXN2LCAmZmVuY2VfZXhjbCwgJmZvYmosICZzaGFyZWRfY291bnQpOwogCWlmIChmZW5j ZV9leGNsICYmICghKGV2ZW50cyAmIEVQT0xMT1VUKSB8fCBzaGFyZWRfY291bnQgPT0gMCkpIHsK IAkJc3RydWN0IGRtYV9idWZfcG9sbF9jYl90ICpkY2IgPSAmZG1hYnVmLT5jYl9leGNsOwogCQlf X3BvbGxfdCBwZXZlbnRzID0gRVBPTExJTjsKQEAgLTExNTcsNyArMTE0NCw2IEBAIHN0YXRpYyBp bnQgZG1hX2J1Zl9kZWJ1Z19zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKQog CXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJvYmo7CiAJc3RydWN0IHJlc2VydmF0aW9uX29i amVjdF9saXN0ICpmb2JqOwogCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwotCXVuc2lnbmVkIHNl cTsKIAlpbnQgY291bnQgPSAwLCBhdHRhY2hfY291bnQsIHNoYXJlZF9jb3VudCwgaTsKIAlzaXpl X3Qgc2l6ZSA9IDA7CiAKQEAgLTExODgsMTYgKzExNzQsOSBAQCBzdGF0aWMgaW50IGRtYV9idWZf ZGVidWdfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZCkKIAkJCQlidWZfb2Jq LT5uYW1lID86ICIiKTsKIAogCQlyb2JqID0gYnVmX29iai0+cmVzdjsKLQkJd2hpbGUgKHRydWUp IHsKLQkJCXNlcSA9IHJlYWRfc2VxY291bnRfYmVnaW4oJnJvYmotPnNlcSk7Ci0JCQlyY3VfcmVh ZF9sb2NrKCk7Ci0JCQlmb2JqID0gcmN1X2RlcmVmZXJlbmNlKHJvYmotPmZlbmNlKTsKLQkJCXNo YXJlZF9jb3VudCA9IGZvYmogPyBmb2JqLT5zaGFyZWRfY291bnQgOiAwOwotCQkJZmVuY2UgPSBy Y3VfZGVyZWZlcmVuY2Uocm9iai0+ZmVuY2VfZXhjbCk7Ci0JCQlpZiAoIXJlYWRfc2VxY291bnRf cmV0cnkoJnJvYmotPnNlcSwgc2VxKSkKLQkJCQlicmVhazsKLQkJCXJjdV9yZWFkX3VubG9jaygp OwotCQl9CisJCXJjdV9yZWFkX2xvY2soKTsKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2ZlbmNlcyhy b2JqLCAmZmVuY2UsICZmb2JqLCAmc2hhcmVkX2NvdW50KTsKKwkJcmN1X3JlYWRfdW5sb2NrKCk7 CiAKIAkJaWYgKGZlbmNlKQogCQkJc2VxX3ByaW50ZihzLCAiXHRFeGNsdXNpdmUgZmVuY2U6ICVz ICVzICVzc2lnbmFsbGVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0 aW9uLmMgYi9kcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYwppbmRleCBhZDY3NzViMzJhNzMu LjhmY2FkZGZmZDVkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMK KysrIGIvZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMKQEAgLTMxNywxNyArMzE3LDE1IEBA IGludCByZXNlcnZhdGlvbl9vYmplY3RfY29weV9mZW5jZXMoc3RydWN0IHJlc2VydmF0aW9uX29i amVjdCAqZHN0LAogewogCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCAqc3JjX2xpc3Qs ICpkc3RfbGlzdDsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICpvbGQsICpuZXc7Ci0JdW5zaWduZWQgaTsK Kwl1bnNpZ25lZCBpbnQgaSwgc2hhcmVkX2NvdW50OwogCiAJcmVzZXJ2YXRpb25fb2JqZWN0X2Fz c2VydF9oZWxkKGRzdCk7CiAKIAlyY3VfcmVhZF9sb2NrKCk7Ci0Jc3JjX2xpc3QgPSByY3VfZGVy ZWZlcmVuY2Uoc3JjLT5mZW5jZSk7CiAKIHJldHJ5OgotCWlmIChzcmNfbGlzdCkgewotCQl1bnNp Z25lZCBzaGFyZWRfY291bnQgPSBzcmNfbGlzdC0+c2hhcmVkX2NvdW50OwotCisJcmVzZXJ2YXRp b25fb2JqZWN0X2ZlbmNlcyhzcmMsICZuZXcsICZzcmNfbGlzdCwgJnNoYXJlZF9jb3VudCk7CisJ aWYgKHNoYXJlZF9jb3VudCkgewogCQlyY3VfcmVhZF91bmxvY2soKTsKIAogCQlkc3RfbGlzdCA9 IHJlc2VydmF0aW9uX29iamVjdF9saXN0X2FsbG9jKHNoYXJlZF9jb3VudCk7CkBAIC0zMzUsMTQg KzMzMywxNCBAQCBpbnQgcmVzZXJ2YXRpb25fb2JqZWN0X2NvcHlfZmVuY2VzKHN0cnVjdCByZXNl cnZhdGlvbl9vYmplY3QgKmRzdCwKIAkJCXJldHVybiAtRU5PTUVNOwogCiAJCXJjdV9yZWFkX2xv Y2soKTsKLQkJc3JjX2xpc3QgPSByY3VfZGVyZWZlcmVuY2Uoc3JjLT5mZW5jZSk7Ci0JCWlmICgh c3JjX2xpc3QgfHwgc3JjX2xpc3QtPnNoYXJlZF9jb3VudCA+IHNoYXJlZF9jb3VudCkgeworCQly ZXNlcnZhdGlvbl9vYmplY3RfZmVuY2VzKHNyYywgJm5ldywgJnNyY19saXN0LCAmc2hhcmVkX2Nv dW50KTsKKwkJaWYgKCFzcmNfbGlzdCB8fCBzaGFyZWRfY291bnQgPiBkc3RfbGlzdC0+c2hhcmVk X21heCkgewogCQkJa2ZyZWUoZHN0X2xpc3QpOwogCQkJZ290byByZXRyeTsKIAkJfQogCiAJCWRz dF9saXN0LT5zaGFyZWRfY291bnQgPSAwOwotCQlmb3IgKGkgPSAwOyBpIDwgc3JjX2xpc3QtPnNo YXJlZF9jb3VudDsgKytpKSB7CisJCWZvciAoaSA9IDA7IGkgPCBzaGFyZWRfY291bnQ7ICsraSkg ewogCQkJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7CiAKIAkJCWZlbmNlID0gcmN1X2RlcmVmZXJl bmNlKHNyY19saXN0LT5zaGFyZWRbaV0pOwpAQCAtMzUyLDcgKzM1MCw2IEBAIGludCByZXNlcnZh dGlvbl9vYmplY3RfY29weV9mZW5jZXMoc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqZHN0LAog CiAJCQlpZiAoIWRtYV9mZW5jZV9nZXRfcmN1KGZlbmNlKSkgewogCQkJCXJlc2VydmF0aW9uX29i amVjdF9saXN0X2ZyZWUoZHN0X2xpc3QpOwotCQkJCXNyY19saXN0ID0gcmN1X2RlcmVmZXJlbmNl KHNyYy0+ZmVuY2UpOwogCQkJCWdvdG8gcmV0cnk7CiAJCQl9CiAKQEAgLTM2Nyw3ICszNjQsMTAg QEAgaW50IHJlc2VydmF0aW9uX29iamVjdF9jb3B5X2ZlbmNlcyhzdHJ1Y3QgcmVzZXJ2YXRpb25f b2JqZWN0ICpkc3QsCiAJCWRzdF9saXN0ID0gTlVMTDsKIAl9CiAKLQluZXcgPSBkbWFfZmVuY2Vf Z2V0X3JjdV9zYWZlKCZzcmMtPmZlbmNlX2V4Y2wpOworCWlmIChuZXcgJiYgIWRtYV9mZW5jZV9n ZXRfcmN1KG5ldykpIHsKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2xpc3RfZnJlZShkc3RfbGlzdCk7 CisJCWdvdG8gcmV0cnk7CisJfQogCXJjdV9yZWFkX3VubG9jaygpOwogCiAJc3JjX2xpc3QgPSBy ZXNlcnZhdGlvbl9vYmplY3RfZ2V0X2xpc3QoZHN0KTsKQEAgLTQxMywxOSArNDEzLDE4IEBAIGlu dCByZXNlcnZhdGlvbl9vYmplY3RfZ2V0X2ZlbmNlc19yY3Uoc3RydWN0IHJlc2VydmF0aW9uX29i amVjdCAqb2JqLAogCiAJZG8gewogCQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0X2xpc3QgKmZv Ymo7Ci0JCXVuc2lnbmVkIGludCBpLCBzZXE7CisJCXVuc2lnbmVkIGludCBpOwogCQlzaXplX3Qg c3ogPSAwOwogCi0JCXNoYXJlZF9jb3VudCA9IGkgPSAwOworCQlpID0gMDsKIAogCQlyY3VfcmVh ZF9sb2NrKCk7Ci0JCXNlcSA9IHJlYWRfc2VxY291bnRfYmVnaW4oJm9iai0+c2VxKTsKKwkJcmVz ZXJ2YXRpb25fb2JqZWN0X2ZlbmNlcyhvYmosICZmZW5jZV9leGNsLCAmZm9iaiwKKwkJCQkJICAm c2hhcmVkX2NvdW50KTsKIAotCQlmZW5jZV9leGNsID0gcmN1X2RlcmVmZXJlbmNlKG9iai0+ZmVu Y2VfZXhjbCk7CiAJCWlmIChmZW5jZV9leGNsICYmICFkbWFfZmVuY2VfZ2V0X3JjdShmZW5jZV9l eGNsKSkKIAkJCWdvdG8gdW5sb2NrOwogCi0JCWZvYmogPSByY3VfZGVyZWZlcmVuY2Uob2JqLT5m ZW5jZSk7CiAJCWlmIChmb2JqKQogCQkJc3ogKz0gc2l6ZW9mKCpzaGFyZWQpICogZm9iai0+c2hh cmVkX21heDsKIApAQCAtNDUzLDcgKzQ1Miw2IEBAIGludCByZXNlcnZhdGlvbl9vYmplY3RfZ2V0 X2ZlbmNlc19yY3Uoc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqb2JqLAogCQkJCWJyZWFrOwog CQkJfQogCQkJc2hhcmVkID0gbnNoYXJlZDsKLQkJCXNoYXJlZF9jb3VudCA9IGZvYmogPyBmb2Jq LT5zaGFyZWRfY291bnQgOiAwOwogCQkJZm9yIChpID0gMDsgaSA8IHNoYXJlZF9jb3VudDsgKytp KSB7CiAJCQkJc2hhcmVkW2ldID0gcmN1X2RlcmVmZXJlbmNlKGZvYmotPnNoYXJlZFtpXSk7CiAJ CQkJaWYgKCFkbWFfZmVuY2VfZ2V0X3JjdShzaGFyZWRbaV0pKQpAQCAtNDYxLDcgKzQ1OSw3IEBA IGludCByZXNlcnZhdGlvbl9vYmplY3RfZ2V0X2ZlbmNlc19yY3Uoc3RydWN0IHJlc2VydmF0aW9u X29iamVjdCAqb2JqLAogCQkJfQogCQl9CiAKLQkJaWYgKGkgIT0gc2hhcmVkX2NvdW50IHx8IHJl YWRfc2VxY291bnRfcmV0cnkoJm9iai0+c2VxLCBzZXEpKSB7CisJCWlmIChpICE9IHNoYXJlZF9j b3VudCkgewogCQkJd2hpbGUgKGktLSkKIAkJCQlkbWFfZmVuY2VfcHV0KHNoYXJlZFtpXSk7CiAJ CQlkbWFfZmVuY2VfcHV0KGZlbmNlX2V4Y2wpOwpAQCAtNTA1LDE4ICs1MDMsMTcgQEAgbG9uZyBy ZXNlcnZhdGlvbl9vYmplY3Rfd2FpdF90aW1lb3V0X3JjdShzdHJ1Y3QgcmVzZXJ2YXRpb25fb2Jq ZWN0ICpvYmosCiAJCQkJCSBib29sIHdhaXRfYWxsLCBib29sIGludHIsCiAJCQkJCSB1bnNpZ25l ZCBsb25nIHRpbWVvdXQpCiB7CisJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdF9saXN0ICpmb2Jq OwogCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwotCXVuc2lnbmVkIHNlcSwgc2hhcmVkX2NvdW50 OworCXVuc2lnbmVkIHNoYXJlZF9jb3VudDsKIAlsb25nIHJldCA9IHRpbWVvdXQgPyB0aW1lb3V0 IDogMTsKIAlpbnQgaTsKIAogcmV0cnk6Ci0Jc2hhcmVkX2NvdW50ID0gMDsKLQlzZXEgPSByZWFk X3NlcWNvdW50X2JlZ2luKCZvYmotPnNlcSk7CiAJcmN1X3JlYWRfbG9jaygpOwogCWkgPSAtMTsK IAotCWZlbmNlID0gcmN1X2RlcmVmZXJlbmNlKG9iai0+ZmVuY2VfZXhjbCk7CisJcmVzZXJ2YXRp b25fb2JqZWN0X2ZlbmNlcyhvYmosICZmZW5jZSwgJmZvYmosICZzaGFyZWRfY291bnQpOwogCWlm IChmZW5jZSAmJiAhdGVzdF9iaXQoRE1BX0ZFTkNFX0ZMQUdfU0lHTkFMRURfQklULCAmZmVuY2Ut PmZsYWdzKSkgewogCQlpZiAoIWRtYV9mZW5jZV9nZXRfcmN1KGZlbmNlKSkKIAkJCWdvdG8gdW5s b2NrX3JldHJ5OwpAQCAtNTMxLDEyICs1MjgsNiBAQCBsb25nIHJlc2VydmF0aW9uX29iamVjdF93 YWl0X3RpbWVvdXRfcmN1KHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKm9iaiwKIAl9CiAKIAlp ZiAod2FpdF9hbGwpIHsKLQkJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdF9saXN0ICpmb2JqID0K LQkJCQkJCXJjdV9kZXJlZmVyZW5jZShvYmotPmZlbmNlKTsKLQotCQlpZiAoZm9iaikKLQkJCXNo YXJlZF9jb3VudCA9IGZvYmotPnNoYXJlZF9jb3VudDsKLQogCQlmb3IgKGkgPSAwOyAhZmVuY2Ug JiYgaSA8IHNoYXJlZF9jb3VudDsgKytpKSB7CiAJCQlzdHJ1Y3QgZG1hX2ZlbmNlICpsZmVuY2Ug PSByY3VfZGVyZWZlcmVuY2UoZm9iai0+c2hhcmVkW2ldKTsKIApAQCAtNTU5LDExICs1NTAsNiBA QCBsb25nIHJlc2VydmF0aW9uX29iamVjdF93YWl0X3RpbWVvdXRfcmN1KHN0cnVjdCByZXNlcnZh dGlvbl9vYmplY3QgKm9iaiwKIAogCXJjdV9yZWFkX3VubG9jaygpOwogCWlmIChmZW5jZSkgewot CQlpZiAocmVhZF9zZXFjb3VudF9yZXRyeSgmb2JqLT5zZXEsIHNlcSkpIHsKLQkJCWRtYV9mZW5j ZV9wdXQoZmVuY2UpOwotCQkJZ290byByZXRyeTsKLQkJfQotCiAJCXJldCA9IGRtYV9mZW5jZV93 YWl0X3RpbWVvdXQoZmVuY2UsIGludHIsIHJldCk7CiAJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwog CQlpZiAocmV0ID4gMCAmJiB3YWl0X2FsbCAmJiAoaSArIDEgPCBzaGFyZWRfY291bnQpKQpAQCAt NjA4LDI0ICs1OTQsMTkgQEAgcmVzZXJ2YXRpb25fb2JqZWN0X3Rlc3Rfc2lnbmFsZWRfc2luZ2xl KHN0cnVjdCBkbWFfZmVuY2UgKnBhc3NlZF9mZW5jZSkKIGJvb2wgcmVzZXJ2YXRpb25fb2JqZWN0 X3Rlc3Rfc2lnbmFsZWRfcmN1KHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKm9iaiwKIAkJCQkJ ICBib29sIHRlc3RfYWxsKQogewotCXVuc2lnbmVkIHNlcSwgc2hhcmVkX2NvdW50OworCXN0cnVj dCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCAqZm9iajsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5j ZV9leGNsOworCXVuc2lnbmVkIHNoYXJlZF9jb3VudDsKIAlpbnQgcmV0OwogCiAJcmN1X3JlYWRf bG9jaygpOwogcmV0cnk6CiAJcmV0ID0gdHJ1ZTsKLQlzaGFyZWRfY291bnQgPSAwOwotCXNlcSA9 IHJlYWRfc2VxY291bnRfYmVnaW4oJm9iai0+c2VxKTsKIAorCXJlc2VydmF0aW9uX29iamVjdF9m ZW5jZXMob2JqLCAmZmVuY2VfZXhjbCwgJmZvYmosICZzaGFyZWRfY291bnQpOwogCWlmICh0ZXN0 X2FsbCkgewogCQl1bnNpZ25lZCBpOwogCi0JCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlz dCAqZm9iaiA9Ci0JCQkJCQlyY3VfZGVyZWZlcmVuY2Uob2JqLT5mZW5jZSk7Ci0KLQkJaWYgKGZv YmopCi0JCQlzaGFyZWRfY291bnQgPSBmb2JqLT5zaGFyZWRfY291bnQ7Ci0KIAkJZm9yIChpID0g MDsgaSA8IHNoYXJlZF9jb3VudDsgKytpKSB7CiAJCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSA9 IHJjdV9kZXJlZmVyZW5jZShmb2JqLT5zaGFyZWRbaV0pOwogCkBAIC02MzUsMjMgKzYxNiwxMiBA QCBib29sIHJlc2VydmF0aW9uX29iamVjdF90ZXN0X3NpZ25hbGVkX3JjdShzdHJ1Y3QgcmVzZXJ2 YXRpb25fb2JqZWN0ICpvYmosCiAJCQllbHNlIGlmICghcmV0KQogCQkJCWJyZWFrOwogCQl9Ci0K LQkJaWYgKHJlYWRfc2VxY291bnRfcmV0cnkoJm9iai0+c2VxLCBzZXEpKQotCQkJZ290byByZXRy eTsKIAl9CiAKLQlpZiAoIXNoYXJlZF9jb3VudCkgewotCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5j ZV9leGNsID0gcmN1X2RlcmVmZXJlbmNlKG9iai0+ZmVuY2VfZXhjbCk7Ci0KLQkJaWYgKGZlbmNl X2V4Y2wpIHsKLQkJCXJldCA9IHJlc2VydmF0aW9uX29iamVjdF90ZXN0X3NpZ25hbGVkX3Npbmds ZSgKLQkJCQkJCQkJZmVuY2VfZXhjbCk7Ci0JCQlpZiAocmV0IDwgMCkKLQkJCQlnb3RvIHJldHJ5 OwotCi0JCQlpZiAocmVhZF9zZXFjb3VudF9yZXRyeSgmb2JqLT5zZXEsIHNlcSkpCi0JCQkJZ290 byByZXRyeTsKLQkJfQorCWlmICghc2hhcmVkX2NvdW50ICYmIGZlbmNlX2V4Y2wpIHsKKwkJcmV0 ID0gcmVzZXJ2YXRpb25fb2JqZWN0X3Rlc3Rfc2lnbmFsZWRfc2luZ2xlKGZlbmNlX2V4Y2wpOwor CQlpZiAocmV0IDwgMCkKKwkJCWdvdG8gcmV0cnk7CiAJfQogCiAJcmN1X3JlYWRfdW5sb2NrKCk7 CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Jlc2VydmF0aW9uLmggYi9pbmNsdWRlL2xpbnV4 L3Jlc2VydmF0aW9uLmgKaW5kZXggNTZiNzgyZmVjNDliLi4wNDRhNWNkNGFmNTAgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvbGludXgvcmVzZXJ2YXRpb24uaAorKysgYi9pbmNsdWRlL2xpbnV4L3Jlc2Vy dmF0aW9uLmgKQEAgLTgxLDYgKzgxLDUxIEBAIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3Qgewog I2RlZmluZSByZXNlcnZhdGlvbl9vYmplY3RfYXNzZXJ0X2hlbGQob2JqKSBcCiAJbG9ja2RlcF9h c3NlcnRfaGVsZCgmKG9iaiktPmxvY2suYmFzZSkKIAorLyoqCisgKiByZXNlcnZhdGlvbl9vYmpl Y3RfZ2V0X2V4Y2wgLSBnZXQgdGhlIHJlc2VydmF0aW9uIG9iamVjdCdzCisgKiBleGNsdXNpdmUg ZmVuY2UsIHdpdGggdXBkYXRlLXNpZGUgbG9jayBoZWxkCisgKiBAb2JqOiB0aGUgcmVzZXJ2YXRp b24gb2JqZWN0CisgKgorICogUmV0dXJucyB0aGUgZXhjbHVzaXZlIGZlbmNlIChpZiBhbnkpLiAg RG9lcyBOT1QgdGFrZSBhCisgKiByZWZlcmVuY2UuIFdyaXRlcnMgbXVzdCBob2xkIG9iai0+bG9j aywgcmVhZGVycyBtYXkgb25seQorICogaG9sZCBhIFJDVSByZWFkIHNpZGUgbG9jay4KKyAqCisg KiBSRVRVUk5TCisgKiBUaGUgZXhjbHVzaXZlIGZlbmNlIG9yIE5VTEwKKyAqLworc3RhdGljIGlu bGluZSBzdHJ1Y3QgZG1hX2ZlbmNlICoKK3Jlc2VydmF0aW9uX29iamVjdF9nZXRfZXhjbChzdHJ1 Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpvYmopCit7CisJcmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9w cm90ZWN0ZWQob2JqLT5mZW5jZV9leGNsLAorCQkJCQkgcmVzZXJ2YXRpb25fb2JqZWN0X2hlbGQo b2JqKSk7Cit9CisKKy8qKgorICogcmVzZXJ2YXRpb25fb2JqZWN0X2dldF9leGNsX3JjdSAtIGdl dCB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0J3MKKyAqIGV4Y2x1c2l2ZSBmZW5jZSwgd2l0aG91dCBs b2NrIGhlbGQuCisgKiBAb2JqOiB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0CisgKgorICogSWYgdGhl cmUgaXMgYW4gZXhjbHVzaXZlIGZlbmNlLCB0aGlzIGF0b21pY2FsbHkgaW5jcmVtZW50cyBpdCdz CisgKiByZWZlcmVuY2UgY291bnQgYW5kIHJldHVybnMgaXQuCisgKgorICogUkVUVVJOUworICog VGhlIGV4Y2x1c2l2ZSBmZW5jZSBvciBOVUxMIGlmIG5vbmUKKyAqLworc3RhdGljIGlubGluZSBz dHJ1Y3QgZG1hX2ZlbmNlICoKK3Jlc2VydmF0aW9uX29iamVjdF9nZXRfZXhjbF9yY3Uoc3RydWN0 IHJlc2VydmF0aW9uX29iamVjdCAqb2JqKQoreworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwor CisJaWYgKCFyY3VfYWNjZXNzX3BvaW50ZXIob2JqLT5mZW5jZV9leGNsKSkKKwkJcmV0dXJuIE5V TEw7CisKKwlyY3VfcmVhZF9sb2NrKCk7CisJZmVuY2UgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZl KCZvYmotPmZlbmNlX2V4Y2wpOworCXJjdV9yZWFkX3VubG9jaygpOworCisJcmV0dXJuIGZlbmNl OworfQorCiAvKioKICAqIHJlc2VydmF0aW9uX29iamVjdF9nZXRfbGlzdCAtIGdldCB0aGUgcmVz ZXJ2YXRpb24gb2JqZWN0J3MKICAqIHNoYXJlZCBmZW5jZSBsaXN0LCB3aXRoIHVwZGF0ZS1zaWRl IGxvY2sgaGVsZApAQCAtOTYsNiArMTQxLDMxIEBAIHJlc2VydmF0aW9uX29iamVjdF9nZXRfbGlz dChzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpvYmopCiAJCQkJCSByZXNlcnZhdGlvbl9vYmpl Y3RfaGVsZChvYmopKTsKIH0KIAorLyoqCisgKiByZXNlcnZhdGlvbl9vYmplY3RfZmVuY2VzIC0g cmVhZCBjb25zaXN0ZW50IGZlbmNlIHBvaW50ZXJzCisgKiBAb2JqOiByZXNlcnZhdGlvbiBvYmpl Y3Qgd2hlcmUgd2UgZ2V0IHRoZSBmZW5jZXMgZnJvbQorICogQGV4Y2w6IHBvaW50ZXIgZm9yIHRo ZSBleGNsdXNpdmUgZmVuY2UKKyAqIEBsaXN0OiBwb2ludGVyIGZvciB0aGUgc2hhcmVkIGZlbmNl IGxpc3QKKyAqCisgKiBNYWtlIHN1cmUgd2UgaGF2ZSBhIGNvbnNpc3RlbiBleGNsdXNpdmUgZmVu Y2UgYW5kIHNoYXJlZCBmZW5jZSBsaXN0LgorICogTXVzdCBiZSBjYWxsZWQgd2l0aCByY3UgcmVh ZCBzaWRlIGxvY2sgaGVsZC4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCityZXNlcnZhdGlvbl9v YmplY3RfZmVuY2VzKHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKm9iaiwKKwkJCSAgc3RydWN0 IGRtYV9mZW5jZSAqKmV4Y2wsCisJCQkgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCAq Kmxpc3QsCisJCQkgIHUzMiAqc2hhcmVkX2NvdW50KQoreworCXVuc2lnbmVkIGludCBzZXE7CisK KwlkbyB7CisJCXNlcSA9IHJlYWRfc2VxY291bnRfYmVnaW4oJm9iai0+c2VxKTsKKwkJKmV4Y2wg PSByY3VfZGVyZWZlcmVuY2Uob2JqLT5mZW5jZV9leGNsKTsKKwkJKmxpc3QgPSByY3VfZGVyZWZl cmVuY2Uob2JqLT5mZW5jZSk7CisJCSpzaGFyZWRfY291bnQgPSAqbGlzdCA/ICgqbGlzdCktPnNo YXJlZF9jb3VudCA6IDA7CisJfSB3aGlsZSAocmVhZF9zZXFjb3VudF9yZXRyeSgmb2JqLT5zZXEs IHNlcSkpOworfQorCiAvKioKICAqIHJlc2VydmF0aW9uX29iamVjdF9sb2NrIC0gbG9jayB0aGUg cmVzZXJ2YXRpb24gb2JqZWN0CiAgKiBAb2JqOiB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0CkBAIC0y MzksNTEgKzMwOSw2IEBAIHJlc2VydmF0aW9uX29iamVjdF91bmxvY2soc3RydWN0IHJlc2VydmF0 aW9uX29iamVjdCAqb2JqKQogCXd3X211dGV4X3VubG9jaygmb2JqLT5sb2NrKTsKIH0KIAotLyoq Ci0gKiByZXNlcnZhdGlvbl9vYmplY3RfZ2V0X2V4Y2wgLSBnZXQgdGhlIHJlc2VydmF0aW9uIG9i amVjdCdzCi0gKiBleGNsdXNpdmUgZmVuY2UsIHdpdGggdXBkYXRlLXNpZGUgbG9jayBoZWxkCi0g KiBAb2JqOiB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0Ci0gKgotICogUmV0dXJucyB0aGUgZXhjbHVz aXZlIGZlbmNlIChpZiBhbnkpLiAgRG9lcyBOT1QgdGFrZSBhCi0gKiByZWZlcmVuY2UuIFdyaXRl cnMgbXVzdCBob2xkIG9iai0+bG9jaywgcmVhZGVycyBtYXkgb25seQotICogaG9sZCBhIFJDVSBy ZWFkIHNpZGUgbG9jay4KLSAqCi0gKiBSRVRVUk5TCi0gKiBUaGUgZXhjbHVzaXZlIGZlbmNlIG9y IE5VTEwKLSAqLwotc3RhdGljIGlubGluZSBzdHJ1Y3QgZG1hX2ZlbmNlICoKLXJlc2VydmF0aW9u X29iamVjdF9nZXRfZXhjbChzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpvYmopCi17Ci0JcmV0 dXJuIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQob2JqLT5mZW5jZV9leGNsLAotCQkJCQkgcmVz ZXJ2YXRpb25fb2JqZWN0X2hlbGQob2JqKSk7Ci19Ci0KLS8qKgotICogcmVzZXJ2YXRpb25fb2Jq ZWN0X2dldF9leGNsX3JjdSAtIGdldCB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0J3MKLSAqIGV4Y2x1 c2l2ZSBmZW5jZSwgd2l0aG91dCBsb2NrIGhlbGQuCi0gKiBAb2JqOiB0aGUgcmVzZXJ2YXRpb24g b2JqZWN0Ci0gKgotICogSWYgdGhlcmUgaXMgYW4gZXhjbHVzaXZlIGZlbmNlLCB0aGlzIGF0b21p Y2FsbHkgaW5jcmVtZW50cyBpdCdzCi0gKiByZWZlcmVuY2UgY291bnQgYW5kIHJldHVybnMgaXQu Ci0gKgotICogUkVUVVJOUwotICogVGhlIGV4Y2x1c2l2ZSBmZW5jZSBvciBOVUxMIGlmIG5vbmUK LSAqLwotc3RhdGljIGlubGluZSBzdHJ1Y3QgZG1hX2ZlbmNlICoKLXJlc2VydmF0aW9uX29iamVj dF9nZXRfZXhjbF9yY3Uoc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqb2JqKQotewotCXN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlOwotCi0JaWYgKCFyY3VfYWNjZXNzX3BvaW50ZXIob2JqLT5mZW5j ZV9leGNsKSkKLQkJcmV0dXJuIE5VTEw7Ci0KLQlyY3VfcmVhZF9sb2NrKCk7Ci0JZmVuY2UgPSBk bWFfZmVuY2VfZ2V0X3JjdV9zYWZlKCZvYmotPmZlbmNlX2V4Y2wpOwotCXJjdV9yZWFkX3VubG9j aygpOwotCi0JcmV0dXJuIGZlbmNlOwotfQotCiB2b2lkIHJlc2VydmF0aW9uX29iamVjdF9pbml0 KHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKm9iaik7CiB2b2lkIHJlc2VydmF0aW9uX29iamVj dF9maW5pKHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKm9iaik7CiBpbnQgcmVzZXJ2YXRpb25f b2JqZWN0X3Jlc2VydmVfc2hhcmVkKHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKm9iaiwKLS0g CjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs