From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sumit Semwal Subject: [PATCH v2] dma-buf: cleanup dma_buf_export() to make it easily extensible Date: Wed, 28 Jan 2015 11:30:45 +0530 Message-ID: <1422424845-14906-1-git-send-email-sumit.semwal@linaro.org> 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: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-arm-kernel@lists.infradead.org, rmk+kernel@arm.linux.org.uk, airlied@linux.ie, kgene@kernel.org, daniel.vetter@intel.com, thierry.reding@gmail.com, pawel@osciak.com, m.szyprowski@samsung.com, mchehab@osg.samsung.com, gregkh@linuxfoundation.org Cc: linaro-kernel@lists.linaro.org, intel-gfx@lists.freedesktop.org, linux-tegra@vger.kernel.org List-Id: linux-tegra@vger.kernel.org QXQgcHJlc2VudCwgZG1hX2J1Zl9leHBvcnQoKSB0YWtlcyBhIHNlcmllcyBvZiBwYXJhbWV0ZXJz LCB3aGljaAptYWtlcyBpdCBkaWZmaWN1bHQgdG8gYWRkIGFueSBuZXcgcGFyYW1ldGVycyBmb3Ig ZXhwb3J0ZXJzLCBpZiByZXF1aXJlZC4KCk1ha2UgaXQgc2ltcGxlciBieSBtb3ZpbmcgYWxsIHRo ZXNlIHBhcmFtZXRlcnMgaW50byBhIHN0cnVjdCwgYW5kIHBhc3MKdGhlIHN0cnVjdCAqIGFzIHBh cmFtZXRlciB0byBkbWFfYnVmX2V4cG9ydCgpLgoKV2hpbGUgYXQgaXQsIHVuaXRlIGRtYV9idWZf ZXhwb3J0X25hbWVkKCkgd2l0aCBkbWFfYnVmX2V4cG9ydCgpLCBhbmQKY2hhbmdlIGFsbCBjYWxs ZXJzIGFjY29yZGluZ2x5LgoKU2lnbmVkLW9mZi1ieTogU3VtaXQgU2Vtd2FsIDxzdW1pdC5zZW13 YWxAbGluYXJvLm9yZz4KLS0tCnYyOiBhZGQgbWFjcm8gdG8gemVybyBvdXQgbG9jYWwgc3RydWN0 LCBhbmQgZmlsbCBLQlVJTERfTU9ETkFNRSBieSBkZWZhdWx0CgogZHJpdmVycy9kbWEtYnVmL2Rt YS1idWYuYyAgICAgICAgICAgICAgICAgICAgICB8IDQ3ICsrKysrKysrKysrKystLS0tLS0tLS0t LS0tCiBkcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9nZW0uYyAgICAgICAgICAgIHwgMTAg KysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMgICAgICAgICAgICAgICAgICAgIHwg MTIgKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RtYWJ1Zi5jICAg ICB8ICA5ICsrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYyAgICAg ICAgIHwgMTAgKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2dlbV9kbWFidWYu YyAgICAgIHwgIDkgKysrKy0KIGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9nZW0uYyAgICAgICAgICAg ICAgICAgICAgfCAxMCArKysrLS0KIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX29iamVjdC5jICAg ICAgICAgICAgICAgfCAgOSArKystLQogZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZG1hYnVmLmMg ICAgICAgICAgICAgICB8ICA5ICsrKystCiBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1 ZjItZG1hLWNvbnRpZy5jIHwgIDggKysrKy0KIGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVv YnVmMi1kbWEtc2cuYyAgICAgfCAgOCArKysrLQogZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdmlk ZW9idWYyLXZtYWxsb2MuYyAgICB8ICA4ICsrKystCiBkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9p b24vaW9uLmMgICAgICAgICAgICAgIHwgIDkgKysrLS0KIGluY2x1ZGUvbGludXgvZG1hLWJ1Zi5o ICAgICAgICAgICAgICAgICAgICAgICAgfCAzNSArKysrKysrKysrKysrKystLS0tCiAxNCBmaWxl cyBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMK aW5kZXggNWJlMjI1YzJiYTk4Li42ZDNkZjNkZDkzMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1h LWJ1Zi9kbWEtYnVmLmMKKysrIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwpAQCAtMjY1LDcg KzI2NSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGlzX2RtYV9idWZfZmlsZShzdHJ1Y3QgZmlsZSAq ZmlsZSkKIH0KIAogLyoqCi0gKiBkbWFfYnVmX2V4cG9ydF9uYW1lZCAtIENyZWF0ZXMgYSBuZXcg ZG1hX2J1ZiwgYW5kIGFzc29jaWF0ZXMgYW4gYW5vbiBmaWxlCisgKiBkbWFfYnVmX2V4cG9ydCAt IENyZWF0ZXMgYSBuZXcgZG1hX2J1ZiwgYW5kIGFzc29jaWF0ZXMgYW4gYW5vbiBmaWxlCiAgKiB3 aXRoIHRoaXMgYnVmZmVyLCBzbyBpdCBjYW4gYmUgZXhwb3J0ZWQuCiAgKiBBbHNvIGNvbm5lY3Qg dGhlIGFsbG9jYXRvciBzcGVjaWZpYyBkYXRhIGFuZCBvcHMgdG8gdGhlIGJ1ZmZlci4KICAqIEFk ZGl0aW9uYWxseSwgcHJvdmlkZSBhIG5hbWUgc3RyaW5nIGZvciBleHBvcnRlcjsgdXNlZnVsIGlu IGRlYnVnZ2luZy4KQEAgLTI3NywzMSArMjc3LDMyIEBAIHN0YXRpYyBpbmxpbmUgaW50IGlzX2Rt YV9idWZfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSkKICAqIEBleHBfbmFtZToJW2luXQluYW1lIG9m IHRoZSBleHBvcnRpbmcgbW9kdWxlIC0gdXNlZnVsIGZvciBkZWJ1Z2dpbmcuCiAgKiBAcmVzdjoJ W2luXQlyZXNlcnZhdGlvbi1vYmplY3QsIE5VTEwgdG8gYWxsb2NhdGUgZGVmYXVsdCBvbmUuCiAg KgorICogQWxsIHRoZSBhYm92ZSBpbmZvIGNvbWVzIGZyb20gc3RydWN0IGRtYV9idWZfZXhwb3J0 X2luZm8uCisgKgogICogUmV0dXJucywgb24gc3VjY2VzcywgYSBuZXdseSBjcmVhdGVkIGRtYV9i dWYgb2JqZWN0LCB3aGljaCB3cmFwcyB0aGUKICAqIHN1cHBsaWVkIHByaXZhdGUgZGF0YSBhbmQg b3BlcmF0aW9ucyBmb3IgZG1hX2J1Zl9vcHMuIE9uIGVpdGhlciBtaXNzaW5nCiAgKiBvcHMsIG9y IGVycm9yIGluIGFsbG9jYXRpbmcgc3RydWN0IGRtYV9idWYsIHdpbGwgcmV0dXJuIG5lZ2F0aXZl IGVycm9yLgogICoKICAqLwotc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZXhwb3J0X25hbWVkKHZv aWQgKnByaXYsIGNvbnN0IHN0cnVjdCBkbWFfYnVmX29wcyAqb3BzLAotCQkJCXNpemVfdCBzaXpl LCBpbnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmV4cF9uYW1lLAotCQkJCXN0cnVjdCByZXNlcnZhdGlv bl9vYmplY3QgKnJlc3YpCitzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnQoc3RydWN0IGRt YV9idWZfZXhwb3J0X2luZm8gKmV4cF9pbmZvKQogewogCXN0cnVjdCBkbWFfYnVmICpkbWFidWY7 CiAJc3RydWN0IGZpbGUgKmZpbGU7CiAJc2l6ZV90IGFsbG9jX3NpemUgPSBzaXplb2Yoc3RydWN0 IGRtYV9idWYpOwotCWlmICghcmVzdikKKwlpZiAoIWV4cF9pbmZvLT5yZXN2KQogCQlhbGxvY19z aXplICs9IHNpemVvZihzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0KTsKIAllbHNlCiAJCS8qIHBy ZXZlbnQgJmRtYV9idWZbMV0gPT0gZG1hX2J1Zi0+cmVzdiAqLwogCQlhbGxvY19zaXplICs9IDE7 CiAKLQlpZiAoV0FSTl9PTighcHJpdiB8fCAhb3BzCi0JCQkgIHx8ICFvcHMtPm1hcF9kbWFfYnVm Ci0JCQkgIHx8ICFvcHMtPnVubWFwX2RtYV9idWYKLQkJCSAgfHwgIW9wcy0+cmVsZWFzZQotCQkJ ICB8fCAhb3BzLT5rbWFwX2F0b21pYwotCQkJICB8fCAhb3BzLT5rbWFwCi0JCQkgIHx8ICFvcHMt Pm1tYXApKSB7CisJaWYgKFdBUk5fT04oIWV4cF9pbmZvLT5wcml2CisJCQkgIHx8ICFleHBfaW5m by0+b3BzCisJCQkgIHx8ICFleHBfaW5mby0+b3BzLT5tYXBfZG1hX2J1ZgorCQkJICB8fCAhZXhw X2luZm8tPm9wcy0+dW5tYXBfZG1hX2J1ZgorCQkJICB8fCAhZXhwX2luZm8tPm9wcy0+cmVsZWFz ZQorCQkJICB8fCAhZXhwX2luZm8tPm9wcy0+a21hcF9hdG9taWMKKwkJCSAgfHwgIWV4cF9pbmZv LT5vcHMtPmttYXAKKwkJCSAgfHwgIWV4cF9pbmZvLT5vcHMtPm1tYXApKSB7CiAJCXJldHVybiBF UlJfUFRSKC1FSU5WQUwpOwogCX0KIApAQCAtMzA5LDIxICszMTAsMjIgQEAgc3RydWN0IGRtYV9i dWYgKmRtYV9idWZfZXhwb3J0X25hbWVkKHZvaWQgKnByaXYsIGNvbnN0IHN0cnVjdCBkbWFfYnVm X29wcyAqb3BzLAogCWlmIChkbWFidWYgPT0gTlVMTCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7CiAKLQlkbWFidWYtPnByaXYgPSBwcml2OwotCWRtYWJ1Zi0+b3BzID0gb3BzOwotCWRtYWJ1 Zi0+c2l6ZSA9IHNpemU7Ci0JZG1hYnVmLT5leHBfbmFtZSA9IGV4cF9uYW1lOworCWRtYWJ1Zi0+ cHJpdiA9IGV4cF9pbmZvLT5wcml2OworCWRtYWJ1Zi0+b3BzID0gZXhwX2luZm8tPm9wczsKKwlk bWFidWYtPnNpemUgPSBleHBfaW5mby0+c2l6ZTsKKwlkbWFidWYtPmV4cF9uYW1lID0gZXhwX2lu Zm8tPmV4cF9uYW1lOwogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmRtYWJ1Zi0+cG9sbCk7CiAJZG1h YnVmLT5jYl9leGNsLnBvbGwgPSBkbWFidWYtPmNiX3NoYXJlZC5wb2xsID0gJmRtYWJ1Zi0+cG9s bDsKIAlkbWFidWYtPmNiX2V4Y2wuYWN0aXZlID0gZG1hYnVmLT5jYl9zaGFyZWQuYWN0aXZlID0g MDsKIAotCWlmICghcmVzdikgewotCQlyZXN2ID0gKHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3Qg KikmZG1hYnVmWzFdOwotCQlyZXNlcnZhdGlvbl9vYmplY3RfaW5pdChyZXN2KTsKKwlpZiAoIWV4 cF9pbmZvLT5yZXN2KSB7CisJCWV4cF9pbmZvLT5yZXN2ID0gKHN0cnVjdCByZXNlcnZhdGlvbl9v YmplY3QgKikmZG1hYnVmWzFdOworCQlyZXNlcnZhdGlvbl9vYmplY3RfaW5pdChleHBfaW5mby0+ cmVzdik7CiAJfQotCWRtYWJ1Zi0+cmVzdiA9IHJlc3Y7CisJZG1hYnVmLT5yZXN2ID0gZXhwX2lu Zm8tPnJlc3Y7CiAKLQlmaWxlID0gYW5vbl9pbm9kZV9nZXRmaWxlKCJkbWFidWYiLCAmZG1hX2J1 Zl9mb3BzLCBkbWFidWYsIGZsYWdzKTsKKwlmaWxlID0gYW5vbl9pbm9kZV9nZXRmaWxlKCJkbWFi dWYiLCAmZG1hX2J1Zl9mb3BzLCBkbWFidWYsCisJCQkJCWV4cF9pbmZvLT5mbGFncyk7CiAJaWYg KElTX0VSUihmaWxlKSkgewogCQlrZnJlZShkbWFidWYpOwogCQlyZXR1cm4gRVJSX0NBU1QoZmls ZSk7CkBAIC0zNDEsOCArMzQzLDcgQEAgc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZXhwb3J0X25h bWVkKHZvaWQgKnByaXYsIGNvbnN0IHN0cnVjdCBkbWFfYnVmX29wcyAqb3BzLAogCiAJcmV0dXJu IGRtYWJ1ZjsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfZXhwb3J0X25hbWVkKTsKLQor RVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9leHBvcnQpOwogCiAvKioKICAqIGRtYV9idWZfZmQg LSByZXR1cm5zIGEgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZ2l2ZW4gZG1hX2J1ZgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfZ2VtLmMgYi9kcml2ZXJzL2dwdS9k cm0vYXJtYWRhL2FybWFkYV9nZW0uYwppbmRleCBlZjVmZWVlY2VjODQuLjU4MGUxMGFjYWEzYSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfZ2VtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfZ2VtLmMKQEAgLTUzOCw4ICs1MzgsMTQgQEAgc3Ry dWN0IGRtYV9idWYgKgogYXJtYWRhX2dlbV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCiAJaW50IGZsYWdzKQogewotCXJldHVy biBkbWFfYnVmX2V4cG9ydChvYmosICZhcm1hZGFfZ2VtX3ByaW1lX2RtYWJ1Zl9vcHMsIG9iai0+ c2l6ZSwKLQkJCSAgICAgIE9fUkRXUiwgTlVMTCk7CisJREVGSU5FX0RNQV9CVUZfRVhQT1JUX0lO Rk8oZXhwX2luZm8pOworCisJZXhwX2luZm8ub3BzID0gJmFybWFkYV9nZW1fcHJpbWVfZG1hYnVm X29wczsKKwlleHBfaW5mby5zaXplID0gb2JqLT5zaXplOworCWV4cF9pbmZvLmZsYWdzID0gT19S RFdSOworCWV4cF9pbmZvLnByaXYgPSBvYmo7CisKKwlyZXR1cm4gZG1hX2J1Zl9leHBvcnQoJmV4 cF9pbmZvKTsKIH0KIAogc3RydWN0IGRybV9nZW1fb2JqZWN0ICoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYwppbmRl eCA3NDgyYjA2Y2QwOGYuLjdmZWMxOTFiNDVmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9wcmltZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYwpAQCAtMzM5LDEz ICszMzksMTcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFfYnVmX29wcyBkcm1fZ2VtX3ByaW1l X2RtYWJ1Zl9vcHMgPSAgewogc3RydWN0IGRtYV9idWYgKmRybV9nZW1fcHJpbWVfZXhwb3J0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aiwgaW50IGZsYWdzKQogewotCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJvYmogPSBOVUxM OworCURFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPKGV4cF9pbmZvKTsKKworCWV4cF9pbmZvLm9w cyA9ICZkcm1fZ2VtX3ByaW1lX2RtYWJ1Zl9vcHM7CisJZXhwX2luZm8uc2l6ZSA9IG9iai0+c2l6 ZTsKKwlleHBfaW5mby5mbGFncyA9IGZsYWdzOworCWV4cF9pbmZvLnByaXYgPSBvYmo7CiAKIAlp ZiAoZGV2LT5kcml2ZXItPmdlbV9wcmltZV9yZXNfb2JqKQotCQlyb2JqID0gZGV2LT5kcml2ZXIt PmdlbV9wcmltZV9yZXNfb2JqKG9iaik7CisJCWV4cF9pbmZvLnJlc3YgPSBkZXYtPmRyaXZlci0+ Z2VtX3ByaW1lX3Jlc19vYmoob2JqKTsKIAotCXJldHVybiBkbWFfYnVmX2V4cG9ydChvYmosICZk cm1fZ2VtX3ByaW1lX2RtYWJ1Zl9vcHMsIG9iai0+c2l6ZSwKLQkJCSAgICAgIGZsYWdzLCByb2Jq KTsKKwlyZXR1cm4gZG1hX2J1Zl9leHBvcnQoJmV4cF9pbmZvKTsKIH0KIEVYUE9SVF9TWU1CT0wo ZHJtX2dlbV9wcmltZV9leHBvcnQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcm1fZG1hYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cm1fZG1hYnVmLmMKaW5kZXggNjAxOTJlZDU0NGYwLi5mYzI5M2ExNzlmMzYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kbWFidWYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZG1hYnVmLmMKQEAgLTE4NSw5ICsxODUsMTQgQEAg c3RydWN0IGRtYV9idWYgKmV4eW5vc19kbWFidWZfcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2 aWNlICpkcm1fZGV2LAogCQkJCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBpbnQgZmxhZ3Mp CiB7CiAJc3RydWN0IGV4eW5vc19kcm1fZ2VtX29iaiAqZXh5bm9zX2dlbV9vYmogPSB0b19leHlu b3NfZ2VtX29iaihvYmopOworCURFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPKGV4cF9pbmZvKTsK IAotCXJldHVybiBkbWFfYnVmX2V4cG9ydChvYmosICZleHlub3NfZG1hYnVmX29wcywKLQkJCQll eHlub3NfZ2VtX29iai0+YmFzZS5zaXplLCBmbGFncywgTlVMTCk7CisJZXhwX2luZm8ub3BzID0g JmV4eW5vc19kbWFidWZfb3BzOworCWV4cF9pbmZvLnNpemUgPSBleHlub3NfZ2VtX29iai0+YmFz ZS5zaXplOworCWV4cF9pbmZvLmZsYWdzID0gZmxhZ3M7CisJZXhwX2luZm8ucHJpdiA9IG9iajsK KworCXJldHVybiBkbWFfYnVmX2V4cG9ydCgmZXhwX2luZm8pOwogfQogCiBzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKmV4eW5vc19kbWFidWZfcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpk cm1fZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVm LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwppbmRleCA4MmExZjRi NTc3NzguLjc5OThkYTI3YzUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZG1hYnVmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVm LmMKQEAgLTIzMCw2ICsyMzAsMTMgQEAgc3RydWN0IGRtYV9idWYgKmk5MTVfZ2VtX3ByaW1lX2V4 cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgICAgIHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqZ2VtX29iaiwgaW50IGZsYWdzKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmogPSB0b19pbnRlbF9ibyhnZW1fb2JqKTsKKwlERUZJTkVfRE1BX0JVRl9FWFBPUlRfSU5G TyhleHBfaW5mbyk7CisKKwlleHBfaW5mby5vcHMgPSAmaTkxNV9kbWFidWZfb3BzOworCWV4cF9p bmZvLnNpemUgPSBnZW1fb2JqLT5zaXplOworCWV4cF9pbmZvLmZsYWdzID0gZmxhZ3M7CisJZXhw X2luZm8ucHJpdiA9IGdlbV9vYmo7CisKIAogCWlmIChvYmotPm9wcy0+ZG1hYnVmX2V4cG9ydCkg ewogCQlpbnQgcmV0ID0gb2JqLT5vcHMtPmRtYWJ1Zl9leHBvcnQob2JqKTsKQEAgLTIzNyw4ICsy NDQsNyBAQCBzdHJ1Y3QgZG1hX2J1ZiAqaTkxNV9nZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCX0KIAotCXJldHVybiBkbWFf YnVmX2V4cG9ydChnZW1fb2JqLCAmaTkxNV9kbWFidWZfb3BzLCBnZW1fb2JqLT5zaXplLCBmbGFn cywKLQkJCSAgICAgIE5VTEwpOworCXJldHVybiBkbWFfYnVmX2V4cG9ydCgmZXhwX2luZm8pOwog fQogCiBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZG1hYnVmKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21h cGRybS9vbWFwX2dlbV9kbWFidWYuYyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZ2Vt X2RtYWJ1Zi5jCmluZGV4IGEyZGJmYjE3MzdiNC4uNTg3NGM1OGU3MmMxIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2dlbV9kbWFidWYuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vb21hcGRybS9vbWFwX2dlbV9kbWFidWYuYwpAQCAtMTcxLDcgKzE3MSwxNCBAQCBzdGF0 aWMgc3RydWN0IGRtYV9idWZfb3BzIG9tYXBfZG1hYnVmX29wcyA9IHsKIHN0cnVjdCBkbWFfYnVm ICpvbWFwX2dlbV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmosIGludCBmbGFncykKIHsKLQlyZXR1cm4gZG1hX2J1Zl9leHBv cnQob2JqLCAmb21hcF9kbWFidWZfb3BzLCBvYmotPnNpemUsIGZsYWdzLCBOVUxMKTsKKwlERUZJ TkVfRE1BX0JVRl9FWFBPUlRfSU5GTyhleHBfaW5mbyk7CisKKwlleHBfaW5mby5vcHMgPSAmb21h cF9kbWFidWZfb3BzOworCWV4cF9pbmZvLnNpemUgPSBvYmotPnNpemU7CisJZXhwX2luZm8uZmxh Z3MgPSBmbGFnczsKKwlleHBfaW5mby5wcml2ID0gb2JqOworCisJcmV0dXJuIGRtYV9idWZfZXhw b3J0KCZleHBfaW5mbyk7CiB9CiAKIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb21hcF9nZW1fcHJp bWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vdGVncmEvZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMKaW5kZXggODc3 N2I3Zjc1NzkxLi4xZjg5NWI5NTNmOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90ZWdy YS9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMKQEAgLTY1OCw4ICs2NTgs MTQgQEAgc3RydWN0IGRtYV9idWYgKnRlZ3JhX2dlbV9wcmltZV9leHBvcnQoc3RydWN0IGRybV9k ZXZpY2UgKmRybSwKIAkJCQkgICAgICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW0sCiAJCQkJ ICAgICAgIGludCBmbGFncykKIHsKLQlyZXR1cm4gZG1hX2J1Zl9leHBvcnQoZ2VtLCAmdGVncmFf Z2VtX3ByaW1lX2RtYWJ1Zl9vcHMsIGdlbS0+c2l6ZSwKLQkJCSAgICAgIGZsYWdzLCBOVUxMKTsK KwlERUZJTkVfRE1BX0JVRl9FWFBPUlRfSU5GTyhleHBfaW5mbyk7CisKKwlleHBfaW5mby5vcHMg PSAmdGVncmFfZ2VtX3ByaW1lX2RtYWJ1Zl9vcHM7CisJZXhwX2luZm8uc2l6ZSA9IGdlbS0+c2l6 ZTsKKwlleHBfaW5mby5mbGFncyA9IGZsYWdzOworCWV4cF9pbmZvLnByaXYgPSBnZW07CisKKwly ZXR1cm4gZG1hX2J1Zl9leHBvcnQoJmV4cF9pbmZvKTsKIH0KIAogc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICp0ZWdyYV9nZW1fcHJpbWVfaW1wb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2Ry bS90dG0vdHRtX29iamVjdC5jCmluZGV4IDEyYzg3MTEwZGIzYS4uNGY1ZmE4ZDY1ZmU5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9vYmplY3QuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vdHRtL3R0bV9vYmplY3QuYwpAQCAtNjgzLDYgKzY4MywxMiBAQCBpbnQgdHRtX3ByaW1l X2hhbmRsZV90b19mZChzdHJ1Y3QgdHRtX29iamVjdF9maWxlICp0ZmlsZSwKIAogCWRtYV9idWYg PSBwcmltZS0+ZG1hX2J1ZjsKIAlpZiAoIWRtYV9idWYgfHwgIWdldF9kbWFfYnVmX3VubGVzc19k b29tZWQoZG1hX2J1ZikpIHsKKwkJREVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oZXhwX2luZm8p OworCisJCWV4cF9pbmZvLm9wcyA9ICZ0ZGV2LT5vcHM7CisJCWV4cF9pbmZvLnNpemUgPSBwcmlt ZS0+c2l6ZTsKKwkJZXhwX2luZm8uZmxhZ3MgPSBmbGFnczsKKwkJZXhwX2luZm8ucHJpdiA9IHBy aW1lOwogCiAJCS8qCiAJCSAqIE5lZWQgdG8gY3JlYXRlIGEgbmV3IGRtYV9idWYsIHdpdGggbWVt b3J5IGFjY291bnRpbmcuCkBAIC02OTQsOCArNzAwLDcgQEAgaW50IHR0bV9wcmltZV9oYW5kbGVf dG9fZmQoc3RydWN0IHR0bV9vYmplY3RfZmlsZSAqdGZpbGUsCiAJCQlnb3RvIG91dF91bnJlZjsK IAkJfQogCi0JCWRtYV9idWYgPSBkbWFfYnVmX2V4cG9ydChwcmltZSwgJnRkZXYtPm9wcywKLQkJ CQkJIHByaW1lLT5zaXplLCBmbGFncywgTlVMTCk7CisJCWRtYV9idWYgPSBkbWFfYnVmX2V4cG9y dCgmZXhwX2luZm8pOwogCQlpZiAoSVNfRVJSKGRtYV9idWYpKSB7CiAJCQlyZXQgPSBQVFJfRVJS KGRtYV9idWYpOwogCQkJdHRtX21lbV9nbG9iYWxfZnJlZSh0ZGV2LT5tZW1fZ2xvYiwKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2RtYWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJt L3VkbC91ZGxfZG1hYnVmLmMKaW5kZXggYWM4YTY2YjRkZmMyLi5lMjI0M2VkZDFjZTMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2RtYWJ1Zi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS91ZGwvdWRsX2RtYWJ1Zi5jCkBAIC0yMDIsNyArMjAyLDE0IEBAIHN0YXRpYyBzdHJ1Y3Qg ZG1hX2J1Zl9vcHMgdWRsX2RtYWJ1Zl9vcHMgPSB7CiBzdHJ1Y3QgZG1hX2J1ZiAqdWRsX2dlbV9w cmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAgIHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqLCBpbnQgZmxhZ3MpCiB7Ci0JcmV0dXJuIGRtYV9idWZfZXhwb3J0KG9i aiwgJnVkbF9kbWFidWZfb3BzLCBvYmotPnNpemUsIGZsYWdzLCBOVUxMKTsKKwlERUZJTkVfRE1B X0JVRl9FWFBPUlRfSU5GTyhleHBfaW5mbyk7CisKKwlleHBfaW5mby5vcHMgPSAmdWRsX2RtYWJ1 Zl9vcHM7CisJZXhwX2luZm8uc2l6ZSA9IG9iai0+c2l6ZTsKKwlleHBfaW5mby5mbGFncyA9IGZs YWdzOworCWV4cF9pbmZvLnByaXYgPSBvYmo7CisKKwlyZXR1cm4gZG1hX2J1Zl9leHBvcnQoJmV4 cF9pbmZvKTsKIH0KIAogc3RhdGljIGludCB1ZGxfcHJpbWVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjIt ZG1hLWNvbnRpZy5jIGIvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdmlkZW9idWYyLWRtYS1jb250 aWcuYwppbmRleCBiNDgxZDIwYzgzNzIuLjRhZDkyYTE0NzkxOSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9tZWRpYS92NGwyLWNvcmUvdmlkZW9idWYyLWRtYS1jb250aWcuYworKysgYi9kcml2ZXJzL21l ZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItZG1hLWNvbnRpZy5jCkBAIC00MDIsNiArNDAyLDEyIEBA IHN0YXRpYyBzdHJ1Y3QgZG1hX2J1ZiAqdmIyX2RjX2dldF9kbWFidWYodm9pZCAqYnVmX3ByaXYs IHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiB7CiAJc3RydWN0IHZiMl9kY19idWYgKmJ1ZiA9IGJ1Zl9w cml2OwogCXN0cnVjdCBkbWFfYnVmICpkYnVmOworCURFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZP KGV4cF9pbmZvKTsKKworCWV4cF9pbmZvLm9wcyA9ICZ2YjJfZGNfZG1hYnVmX29wczsKKwlleHBf aW5mby5zaXplID0gYnVmLT5zaXplOworCWV4cF9pbmZvLmZsYWdzID0gZmxhZ3M7CisJZXhwX2lu Zm8ucHJpdiA9IGJ1ZjsKIAogCWlmICghYnVmLT5zZ3RfYmFzZSkKIAkJYnVmLT5zZ3RfYmFzZSA9 IHZiMl9kY19nZXRfYmFzZV9zZ3QoYnVmKTsKQEAgLTQwOSw3ICs0MTUsNyBAQCBzdGF0aWMgc3Ry dWN0IGRtYV9idWYgKnZiMl9kY19nZXRfZG1hYnVmKHZvaWQgKmJ1Zl9wcml2LCB1bnNpZ25lZCBs b25nIGZsYWdzKQogCWlmIChXQVJOX09OKCFidWYtPnNndF9iYXNlKSkKIAkJcmV0dXJuIE5VTEw7 CiAKLQlkYnVmID0gZG1hX2J1Zl9leHBvcnQoYnVmLCAmdmIyX2RjX2RtYWJ1Zl9vcHMsIGJ1Zi0+ c2l6ZSwgZmxhZ3MsIE5VTEwpOworCWRidWYgPSBkbWFfYnVmX2V4cG9ydCgmZXhwX2luZm8pOwog CWlmIChJU19FUlIoZGJ1ZikpCiAJCXJldHVybiBOVUxMOwogCmRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItZG1hLXNnLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDIt Y29yZS92aWRlb2J1ZjItZG1hLXNnLmMKaW5kZXggYjE4MzhhYmI2ZDAwLi40NWM3MDhlNDYzYjkg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVvYnVmMi1kbWEtc2cuYwor KysgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItZG1hLXNnLmMKQEAgLTU4Mywx MSArNTgzLDE3IEBAIHN0YXRpYyBzdHJ1Y3QgZG1hX2J1ZiAqdmIyX2RtYV9zZ19nZXRfZG1hYnVm KHZvaWQgKmJ1Zl9wcml2LCB1bnNpZ25lZCBsb25nIGZsYWdzCiB7CiAJc3RydWN0IHZiMl9kbWFf c2dfYnVmICpidWYgPSBidWZfcHJpdjsKIAlzdHJ1Y3QgZG1hX2J1ZiAqZGJ1ZjsKKwlERUZJTkVf RE1BX0JVRl9FWFBPUlRfSU5GTyhleHBfaW5mbyk7CisKKwlleHBfaW5mby5vcHMgPSAmdmIyX2Rt YV9zZ19kbWFidWZfb3BzOworCWV4cF9pbmZvLnNpemUgPSBidWYtPnNpemU7CisJZXhwX2luZm8u ZmxhZ3MgPSBmbGFnczsKKwlleHBfaW5mby5wcml2ID0gYnVmOwogCiAJaWYgKFdBUk5fT04oIWJ1 Zi0+ZG1hX3NndCkpCiAJCXJldHVybiBOVUxMOwogCi0JZGJ1ZiA9IGRtYV9idWZfZXhwb3J0KGJ1 ZiwgJnZiMl9kbWFfc2dfZG1hYnVmX29wcywgYnVmLT5zaXplLCBmbGFncywgTlVMTCk7CisJZGJ1 ZiA9IGRtYV9idWZfZXhwb3J0KCZleHBfaW5mbyk7CiAJaWYgKElTX0VSUihkYnVmKSkKIAkJcmV0 dXJuIE5VTEw7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVvYnVm Mi12bWFsbG9jLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItdm1hbGxvYy5j CmluZGV4IGZiYTk0NGU1MDIyNy4uOTkyYjFiNTk0MDljIDEwMDY0NAotLS0gYS9kcml2ZXJzL21l ZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItdm1hbGxvYy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdjRs Mi1jb3JlL3ZpZGVvYnVmMi12bWFsbG9jLmMKQEAgLTM2NywxMSArMzY3LDE3IEBAIHN0YXRpYyBz dHJ1Y3QgZG1hX2J1ZiAqdmIyX3ZtYWxsb2NfZ2V0X2RtYWJ1Zih2b2lkICpidWZfcHJpdiwgdW5z aWduZWQgbG9uZyBmbGFnCiB7CiAJc3RydWN0IHZiMl92bWFsbG9jX2J1ZiAqYnVmID0gYnVmX3By aXY7CiAJc3RydWN0IGRtYV9idWYgKmRidWY7CisJREVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8o ZXhwX2luZm8pOworCisJZXhwX2luZm8ub3BzID0gJnZiMl92bWFsbG9jX2RtYWJ1Zl9vcHM7CisJ ZXhwX2luZm8uc2l6ZSA9IGJ1Zi0+c2l6ZTsKKwlleHBfaW5mby5mbGFncyA9IGZsYWdzOworCWV4 cF9pbmZvLnByaXYgPSBidWY7CiAKIAlpZiAoV0FSTl9PTighYnVmLT52YWRkcikpCiAJCXJldHVy biBOVUxMOwogCi0JZGJ1ZiA9IGRtYV9idWZfZXhwb3J0KGJ1ZiwgJnZiMl92bWFsbG9jX2RtYWJ1 Zl9vcHMsIGJ1Zi0+c2l6ZSwgZmxhZ3MsIE5VTEwpOworCWRidWYgPSBkbWFfYnVmX2V4cG9ydCgm ZXhwX2luZm8pOwogCWlmIChJU19FUlIoZGJ1ZikpCiAJCXJldHVybiBOVUxMOwogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vaW9uLmMgYi9kcml2ZXJzL3N0YWdpbmcv YW5kcm9pZC9pb24vaW9uLmMKaW5kZXggMjk2ZDM0NzY2MGZjLi5hNDI5N2JlOGYxMmYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYworKysgYi9kcml2ZXJzL3N0 YWdpbmcvYW5kcm9pZC9pb24vaW9uLmMKQEAgLTExMDYsNiArMTEwNiwxMiBAQCBzdHJ1Y3QgZG1h X2J1ZiAqaW9uX3NoYXJlX2RtYV9idWYoc3RydWN0IGlvbl9jbGllbnQgKmNsaWVudCwKIAlzdHJ1 Y3QgaW9uX2J1ZmZlciAqYnVmZmVyOwogCXN0cnVjdCBkbWFfYnVmICpkbWFidWY7CiAJYm9vbCB2 YWxpZF9oYW5kbGU7CisJREVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oZXhwX2luZm8pOworCisJ ZXhwX2luZm8ub3BzID0gJmRtYV9idWZfb3BzOworCWV4cF9pbmZvLnNpemUgPSBidWZmZXItPnNp emU7CisJZXhwX2luZm8uZmxhZ3MgPSBPX1JEV1I7CisJZXhwX2luZm8ucHJpdiA9IGJ1ZmZlcjsK IAogCW11dGV4X2xvY2soJmNsaWVudC0+bG9jayk7CiAJdmFsaWRfaGFuZGxlID0gaW9uX2hhbmRs ZV92YWxpZGF0ZShjbGllbnQsIGhhbmRsZSk7CkBAIC0xMTE4LDggKzExMjQsNyBAQCBzdHJ1Y3Qg ZG1hX2J1ZiAqaW9uX3NoYXJlX2RtYV9idWYoc3RydWN0IGlvbl9jbGllbnQgKmNsaWVudCwKIAlp b25fYnVmZmVyX2dldChidWZmZXIpOwogCW11dGV4X3VubG9jaygmY2xpZW50LT5sb2NrKTsKIAot CWRtYWJ1ZiA9IGRtYV9idWZfZXhwb3J0KGJ1ZmZlciwgJmRtYV9idWZfb3BzLCBidWZmZXItPnNp emUsIE9fUkRXUiwKLQkJCQlOVUxMKTsKKwlkbWFidWYgPSBkbWFfYnVmX2V4cG9ydCgmZXhwX2lu Zm8pOwogCWlmIChJU19FUlIoZG1hYnVmKSkgewogCQlpb25fYnVmZmVyX3B1dChidWZmZXIpOwog CQlyZXR1cm4gZG1hYnVmOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbWEtYnVmLmggYi9p bmNsdWRlL2xpbnV4L2RtYS1idWYuaAppbmRleCA2OTRlMWZlMWM0YjQuLjIyYzIxYTIyNGUzMiAx MDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKKysrIGIvaW5jbHVkZS9saW51eC9k bWEtYnVmLmgKQEAgLTE2Myw2ICsxNjMsMzQgQEAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCB7 CiB9OwogCiAvKioKKyAqIHN0cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZvIC0gaG9sZHMgaW5mb3Jt YXRpb24gbmVlZGVkIHRvIGV4cG9ydCBhIGRtYV9idWYKKyAqIEBleHBfbmFtZToJbmFtZSBvZiB0 aGUgZXhwb3J0aW5nIG1vZHVsZSAtIHVzZWZ1bCBmb3IgZGVidWdnaW5nLgorICogQG9wczoJQXR0 YWNoIGFsbG9jYXRvci1kZWZpbmVkIGRtYSBidWYgb3BzIHRvIHRoZSBuZXcgYnVmZmVyCisgKiBA c2l6ZToJU2l6ZSBvZiB0aGUgYnVmZmVyCisgKiBAZmxhZ3M6CW1vZGUgZmxhZ3MgZm9yIHRoZSBm aWxlCisgKiBAcmVzdjoJcmVzZXJ2YXRpb24tb2JqZWN0LCBOVUxMIHRvIGFsbG9jYXRlIGRlZmF1 bHQgb25lCisgKiBAcHJpdjoJQXR0YWNoIHByaXZhdGUgZGF0YSBvZiBhbGxvY2F0b3IgdG8gdGhp cyBidWZmZXIKKyAqCisgKiBUaGlzIHN0cnVjdHVyZSBob2xkcyB0aGUgaW5mb3JtYXRpb24gcmVx dWlyZWQgdG8gZXhwb3J0IHRoZSBidWZmZXIuIFVzZWQKKyAqIHdpdGggZG1hX2J1Zl9leHBvcnQo KSBvbmx5LgorICovCitzdHJ1Y3QgZG1hX2J1Zl9leHBvcnRfaW5mbyB7CisJY29uc3QgY2hhciAq ZXhwX25hbWU7CisJY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzICpvcHM7CisJc2l6ZV90IHNpemU7 CisJaW50IGZsYWdzOworCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7CisJdm9pZCAq cHJpdjsKK307CisKKy8qKgorICogaGVscGVyIG1hY3JvIGZvciBleHBvcnRlcnM7IHplcm9zIGFu ZCBmaWxscyBpbiBtb3N0IGNvbW1vbiB2YWx1ZXMKKyAqLworI2RlZmluZSBERUZJTkVfRE1BX0JV Rl9FWFBPUlRfSU5GTyhhKQkJCVwKKwlzdHJ1Y3QgZG1hX2J1Zl9leHBvcnRfaW5mbyBhID0gezB9 OwkJXAorCWV4cF9pbmZvLmV4cF9uYW1lID0gS0JVSUxEX01PRE5BTUUKKworLyoqCiAgKiBnZXRf ZG1hX2J1ZiAtIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIGdldF9maWxlLgogICogQGRtYWJ1ZjoJ W2luXQlwb2ludGVyIHRvIGRtYV9idWYKICAqCkBAIC0xODEsMTIgKzIwOSw3IEBAIHN0cnVjdCBk bWFfYnVmX2F0dGFjaG1lbnQgKmRtYV9idWZfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYs CiB2b2lkIGRtYV9idWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCiAJCQkJc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudCAqZG1hYnVmX2F0dGFjaCk7CiAKLXN0cnVjdCBkbWFfYnVmICpk bWFfYnVmX2V4cG9ydF9uYW1lZCh2b2lkICpwcml2LCBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMg Km9wcywKLQkJCSAgICAgICBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzLCBjb25zdCBjaGFyICosCi0J CQkgICAgICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqKTsKLQotI2RlZmluZSBkbWFfYnVm X2V4cG9ydChwcml2LCBvcHMsIHNpemUsIGZsYWdzLCByZXN2KQlcCi0JZG1hX2J1Zl9leHBvcnRf bmFtZWQocHJpdiwgb3BzLCBzaXplLCBmbGFncywgS0JVSUxEX01PRE5BTUUsIHJlc3YpCitzdHJ1 Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnQoc3RydWN0IGRtYV9idWZfZXhwb3J0X2luZm8gKmV4 cF9pbmZvKTsKIAogaW50IGRtYV9idWZfZmQoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgaW50IGZs YWdzKTsKIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmX2dldChpbnQgZmQpOwotLSAKMS45LjEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==