From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Vrabel Subject: [PATCHv1 2/2] xen/privcmd: add ioctls for locking/unlocking hypercall buffers Date: Wed, 3 Aug 2016 18:03:05 +0100 Message-ID: <1470243785-30523-3-git-send-email-david.vrabel@citrix.com> References: <1470243785-30523-1-git-send-email-david.vrabel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bUzZf-0002sP-3m for xen-devel@lists.xenproject.org; Wed, 03 Aug 2016 17:03:19 +0000 In-Reply-To: <1470243785-30523-1-git-send-email-david.vrabel@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Boris Ostrovsky , David Vrabel List-Id: xen-devel@lists.xenproject.org VXNpbmcgbWxvY2soKSBmb3IgaHlwZXJjYWxsIGJ1ZmZlcnMgaXMgbm90IHN1ZmZpY2llbnQgc2lu Y2UgbWxvY2tlZApwYWdlcyBhcmUgc3RpbGwgc3ViamVjdCB0byBjb21wYWN0aW9uIGFuZCBwYWdl IG1pZ3JhdGlvbi4gIFBhZ2UKbWlncmF0aW9uIGNhbiBiZSBwcmV2ZW50ZWQgYnkgdGFraW5nIGFk ZGl0aW9uYWwgcmVmZXJlbmNlcyB0byB0aGUKcGFnZXMuCgpJbnRyb2R1Y2UgdHdvIG5ldyBpb2N0 bHM6IElPQ1RMX1BSSVZDTURfSENBTExfQlVGX0xPQ0sgYW5kCklPQ1RMX1BSSVZDTURfSENBTExf QlVGX1VOTE9DSyB3aGljaCBnZXQgYW5kIHB1dCB0aGUgbmVjZXNzYXJ5IHBhZ2UKcmVmZXJlbmNl cy4gIFRoZSBidWZmZXJzIGRvIG5vdCBuZWVkIHRvIGJlIHBhZ2UgYWxpZ25lZCBhbmQgdGhleSBt YXkKb3ZlcmxhcCB3aXRoIG90aGVyIGJ1ZmZlcnMuICBIb3dldmVyLCBpdCBpcyBub3QgcG9zc2li bGUgdG8gcGFydGlhbGx5CnVubG9jayBhIGJ1ZmZlciAoaS5lLiwgdGhlIExPQ0svVU5MT0NLIG11 c3QgYWx3YXlzIGJlIHBhaXJlZCkuICBBbnkKbG9ja2VkIGJ1ZmZlcnMgYXJlIGF1dG9tYXRpY2Fs bHkgdW5sb2NrZWQgd2hlbiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzCmNsb3NlZC4KCkFuIGFsdGVy bmF0aXZlIGFwcHJvYWNoIHdvdWxkIGJlIHRvIGV4dGVuZCB0aGUgZHJpdmVyIHdpdGggYW4gaW9j dGwgdG8KcG9wdWxhdGUgYSBWTUEgd2l0aCAic3BlY2lhbCIsIG5vbi1taWdyYXRhYmxlIHBhZ2Vz LiAgQnV0IHRoZQpMT0NLL1VOTE9DSyBpb2N0bHMgYXJlIG1vcmUgZmxleGlibGUgYXMgdGhleSBh bGxvdyBhbnkgcGFnZSB0byBiZSB1c2VkCmZvciBoeXBlcmNhbGxzIChlLmcuLCBzdGFjaywgbW1h cCdkIGZpbGVzLCBldGMuKS4gIFRoaXMgY291bGQgYmUgdXNlZAp0byBtaW5pbWl6ZSBib3VuY2lu ZyBmb3IgcGVyZm9ybWFuY2UgY3JpdGljYWwgaHlwZXJjYWxscy4KCkxvY2tlZCBidWZmZXJzIGFy ZSBzdG9yZWQgaW4gYSByYnRyZWUgZm9yIGZhc3RlciBsb29rdXAgZHVyaW5nIFVOTE9DSywKYW5k IHN0b3JlZCBpbiBhIGxpc3Qgc28gYWxsIGJ1ZmZlcnMgY2FuIGJlIHVubG9ja2VkIHdoZW4gdGhl IGZpbGUKZGVzY3JpcHRvciBpcyBjbG9zZWQuCgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBWcmFiZWwg PGRhdmlkLnZyYWJlbEBjaXRyaXguY29tPgotLS0KIGRyaXZlcnMveGVuL3ByaXZjbWQuYyAgICAg IHwgMjA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5j bHVkZS91YXBpL3hlbi9wcml2Y21kLmggfCAgMzcgKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwg MjQ1IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3hlbi9wcml2Y21kLmMgYi9k cml2ZXJzL3hlbi9wcml2Y21kLmMKaW5kZXggYWM3NmJjNC4uN2ZjOWRiOCAxMDA2NDQKLS0tIGEv ZHJpdmVycy94ZW4vcHJpdmNtZC5jCisrKyBiL2RyaXZlcnMveGVuL3ByaXZjbWQuYwpAQCAtMjIs NiArMjIsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3BhZ2VtYXAuaD4KICNpbmNsdWRlIDxsaW51eC9z ZXFfZmlsZS5oPgogI2luY2x1ZGUgPGxpbnV4L21pc2NkZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51 eC9yYnRyZWUuaD4KIAogI2luY2x1ZGUgPGFzbS9wZ2FsbG9jLmg+CiAjaW5jbHVkZSA8YXNtL3Bn dGFibGUuaD4KQEAgLTQzLDYgKzQ0LDIxIEBAIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIAogI2Rl ZmluZSBQUklWX1ZNQV9MT0NLRUQgKCh2b2lkICopMSkKIAorc3RydWN0IHByaXZjbWRfZGF0YSB7 CisJc3RydWN0IHJiX3Jvb3QgaGJ1Zl9yb290OworCXN0cnVjdCBsaXN0X2hlYWQgaGJ1Zl9saXN0 OworCXN0cnVjdCBtdXRleCBoYnVmX211dGV4OworfTsKKworc3RydWN0IHByaXZjbWRfaGJ1ZiB7 CisJc3RydWN0IHJiX25vZGUgbm9kZTsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHJlbGVhc2Vfbm9kZTsK KwlzdHJ1Y3QgcHJpdmNtZF9oY2FsbF9idWYgYnVmOworCXVuc2lnbmVkIGludCBucl9wYWdlczsK KwlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOworCXVuc2lnbmVkIGludCBjb3VudDsKK307CisKIHN0YXRp YyBpbnQgcHJpdmNtZF92bWFfcmFuZ2VfaXNfbWFwcGVkKAogICAgICAgICAgICAgICAgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFkZHIs CkBAIC01NDgsOSArNTY0LDE2NCBAQCBvdXRfdW5sb2NrOgogCWdvdG8gb3V0OwogfQogCitzdGF0 aWMgaW50IHByaXZjbWRfaGJ1Zl9jb21wYXJlKHN0cnVjdCBwcml2Y21kX2hjYWxsX2J1ZiAqYSwK KwkJCQlzdHJ1Y3QgcHJpdmNtZF9oY2FsbF9idWYgKmIpCit7CisJaWYgKGItPnN0YXJ0ID09IGEt PnN0YXJ0KQorCQlyZXR1cm4gYi0+bGVuIC0gYS0+bGVuOworCXJldHVybiBiLT5zdGFydCAtIGEt PnN0YXJ0OworfQorCitzdGF0aWMgdm9pZCBwcml2Y21kX2hidWZfaW5zZXJ0KHN0cnVjdCBwcml2 Y21kX2RhdGEgKnByaXYsCisJCQkJc3RydWN0IHByaXZjbWRfaGJ1ZiAqaGJ1ZikKK3sKKwlzdHJ1 Y3QgcmJfbm9kZSAqKm5ldyA9ICZwcml2LT5oYnVmX3Jvb3QucmJfbm9kZSwgKnBhcmVudCA9IE5V TEw7CisKKwkvKiBGaWd1cmUgb3V0IHdoZXJlIHRvIHB1dCBuZXcgbm9kZSAqLworCXdoaWxlICgq bmV3KSB7CisJCXN0cnVjdCBwcml2Y21kX2hidWYgKnRoaXMgPSBjb250YWluZXJfb2YoKm5ldywg c3RydWN0IHByaXZjbWRfaGJ1Ziwgbm9kZSk7CisJCWludCByZXN1bHQgPSBwcml2Y21kX2hidWZf Y29tcGFyZSgmaGJ1Zi0+YnVmLCAmdGhpcy0+YnVmKTsKKworCQlwYXJlbnQgPSAqbmV3OworCQlp ZiAocmVzdWx0IDwgMCkKKwkJCW5ldyA9ICYoKm5ldyktPnJiX2xlZnQ7CisJCWVsc2UgaWYgKHJl c3VsdCA+IDApCisJCQluZXcgPSAmKCpuZXcpLT5yYl9yaWdodDsKKwkJZWxzZSB7CisJCQl0aGlz LT5jb3VudCsrOworCQkJa2ZyZWUoaGJ1Zi0+cGFnZXMpOworCQkJa2ZyZWUoaGJ1Zik7CisJCQly ZXR1cm47CisJCX0KKwl9CisKKwkvKiBBZGQgbmV3IG5vZGUgYW5kIHJlYmFsYW5jZSB0cmVlLiAq LworCXJiX2xpbmtfbm9kZSgmaGJ1Zi0+bm9kZSwgcGFyZW50LCBuZXcpOworCXJiX2luc2VydF9j b2xvcigmaGJ1Zi0+bm9kZSwgJnByaXYtPmhidWZfcm9vdCk7CisKKwlsaXN0X2FkZF90YWlsKCZo YnVmLT5yZWxlYXNlX25vZGUsICZwcml2LT5oYnVmX2xpc3QpOworCisJaGJ1Zi0+Y291bnQgPSAx OworfQorCitzdGF0aWMgc3RydWN0IHByaXZjbWRfaGJ1ZiAqcHJpdmNtZF9oYnVmX2xvb2t1cChz dHJ1Y3QgcHJpdmNtZF9kYXRhICpwcml2LAorCQkJCQkJc3RydWN0IHByaXZjbWRfaGNhbGxfYnVm ICprZXkpCit7CisJc3RydWN0IHJiX25vZGUgKm5vZGUgPSBwcml2LT5oYnVmX3Jvb3QucmJfbm9k ZTsKKworCXdoaWxlIChub2RlKSB7CisJCXN0cnVjdCBwcml2Y21kX2hidWYgKmhidWYgPSBjb250 YWluZXJfb2Yobm9kZSwgc3RydWN0IHByaXZjbWRfaGJ1Ziwgbm9kZSk7CisJCWludCByZXN1bHQ7 CisKKwkJcmVzdWx0ID0gcHJpdmNtZF9oYnVmX2NvbXBhcmUoa2V5LCAmaGJ1Zi0+YnVmKTsKKwor CQlpZiAocmVzdWx0IDwgMCkKKwkJCW5vZGUgPSBub2RlLT5yYl9sZWZ0OworCQllbHNlIGlmIChy ZXN1bHQgPiAwKQorCQkJbm9kZSA9IG5vZGUtPnJiX3JpZ2h0OworCQllbHNlCisJCQlyZXR1cm4g aGJ1ZjsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIHByaXZjbWRfaGJ1Zl91 bmxvY2soc3RydWN0IHByaXZjbWRfZGF0YSAqcHJpdiwKKwkJCQlzdHJ1Y3QgcHJpdmNtZF9oYnVm ICpoYnVmKQoreworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0gMDsgaSA8IGhidWYtPm5y X3BhZ2VzOyBpKyspCisJCXB1dF9wYWdlKGhidWYtPnBhZ2VzW2ldKTsKKworCWlmICgtLWhidWYt PmNvdW50ID09IDApIHsKKwkJcmJfZXJhc2UoJmhidWYtPm5vZGUsICZwcml2LT5oYnVmX3Jvb3Qp OworCQlsaXN0X2RlbCgmaGJ1Zi0+cmVsZWFzZV9ub2RlKTsKKwkJa2ZyZWUoaGJ1Zi0+cGFnZXMp OworCQlrZnJlZShoYnVmKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgcHJpdmNtZF9pb2N0bF9oY2Fs bF9idWZfbG9jayhzdHJ1Y3QgcHJpdmNtZF9kYXRhICpwcml2LAorCQkJCQl2b2lkIF9fdXNlciAq dWRhdGEpCit7CisJc3RydWN0IHByaXZjbWRfaGJ1ZiAqaGJ1ZjsKKwl1bnNpZ25lZCBsb25nIHN0 YXJ0LCBlbmQ7CisJaW50IHJldDsKKworCWhidWYgPSBremFsbG9jKHNpemVvZigqaGJ1ZiksIEdG UF9LRVJORUwpOworCWlmICghaGJ1ZikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAoY29weV9m cm9tX3VzZXIoJmhidWYtPmJ1ZiwgdWRhdGEsIHNpemVvZihoYnVmLT5idWYpKSkgeworCQlyZXQg PSAtRUZBVUxUOworCQlnb3RvIGVycm9yOworCX0KKworCXN0YXJ0ID0gKHVuc2lnbmVkIGxvbmcp aGJ1Zi0+YnVmLnN0YXJ0ICYgUEFHRV9NQVNLOworCWVuZCA9IEFMSUdOKCh1bnNpZ25lZCBsb25n KWhidWYtPmJ1Zi5zdGFydCArIGhidWYtPmJ1Zi5sZW4sIFBBR0VfU0laRSk7CisJaGJ1Zi0+bnJf cGFnZXMgPSAoZW5kIC0gc3RhcnQpIC8gUEFHRV9TSVpFOworCisJaGJ1Zi0+cGFnZXMgPSBrY2Fs bG9jKGhidWYtPm5yX3BhZ2VzLCBzaXplb2YoKmhidWYtPnBhZ2VzKSwgR0ZQX0tFUk5FTCk7CisJ aWYgKCFoYnVmLT5wYWdlcykgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycm9yOworCX0K KworCS8qCisJICogVGFrZSBhIHJlZmVyZW5jZSB0byBlYWNoIHBhZ2UsIHRoaXMgd2lsbCBwcmV2 ZW50IHN3YXBwaW5nCisJICogYW5kIHBhZ2UgbWlncmF0aW9uLgorCSAqLworCXJldCA9IGdldF91 c2VyX3BhZ2VzX2Zhc3Qoc3RhcnQsIGhidWYtPm5yX3BhZ2VzLCAxLCBoYnVmLT5wYWdlcyk7CisJ aWYgKHJldCA8IDApCisJCWdvdG8gZXJyb3I7CisKKwltdXRleF9sb2NrKCZwcml2LT5oYnVmX211 dGV4KTsKKwlwcml2Y21kX2hidWZfaW5zZXJ0KHByaXYsIGhidWYpOworCW11dGV4X3VubG9jaygm cHJpdi0+aGJ1Zl9tdXRleCk7CisKKwlyZXR1cm4gMDsKKworICBlcnJvcjoKKwlrZnJlZShoYnVm LT5wYWdlcyk7CisJa2ZyZWUoaGJ1Zik7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBw cml2Y21kX2lvY3RsX2hjYWxsX2J1Zl91bmxvY2soc3RydWN0IHByaXZjbWRfZGF0YSAqcHJpdiwK KwkJCQkJICB2b2lkIF9fdXNlciAqdWRhdGEpCit7CisJc3RydWN0IHByaXZjbWRfaGNhbGxfYnVm IGhjYWxsX2J1ZjsKKwlzdHJ1Y3QgcHJpdmNtZF9oYnVmICpoYnVmOworCisJaWYgKGNvcHlfZnJv bV91c2VyKCZoY2FsbF9idWYsIHVkYXRhLCBzaXplb2YoaGNhbGxfYnVmKSkpCisJCXJldHVybiAt RUZBVUxUOworCisJbXV0ZXhfbG9jaygmcHJpdi0+aGJ1Zl9tdXRleCk7CisKKwloYnVmID0gcHJp dmNtZF9oYnVmX2xvb2t1cChwcml2LCAmaGNhbGxfYnVmKTsKKwlpZiAoaGJ1ZikKKwkJcHJpdmNt ZF9oYnVmX3VubG9jayhwcml2LCBoYnVmKTsKKworCW11dGV4X3VubG9jaygmcHJpdi0+aGJ1Zl9t dXRleCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcHJpdmNtZF9oYnVmX2VyYXNl X2FsbChzdHJ1Y3QgcHJpdmNtZF9kYXRhICpwcml2KQoreworCXdoaWxlICghbGlzdF9lbXB0eSgm cHJpdi0+aGJ1Zl9saXN0KSkgeworCQlzdHJ1Y3QgcHJpdmNtZF9oYnVmICpoYnVmOworCisJCWhi dWYgPSBsaXN0X2ZpcnN0X2VudHJ5KCZwcml2LT5oYnVmX2xpc3QsCisJCQkJCXN0cnVjdCBwcml2 Y21kX2hidWYsIHJlbGVhc2Vfbm9kZSk7CisJCXByaXZjbWRfaGJ1Zl91bmxvY2socHJpdiwgaGJ1 Zik7CisJfQorfQorCiBzdGF0aWMgbG9uZyBwcml2Y21kX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxl LAogCQkJICB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGRhdGEpCiB7CisJc3RydWN0 IHByaXZjbWRfZGF0YSAqcHJpdiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKIAlpbnQgcmV0ID0gLUVO T1NZUzsKIAl2b2lkIF9fdXNlciAqdWRhdGEgPSAodm9pZCBfX3VzZXIgKikgZGF0YTsKIApAQCAt NTcxLDYgKzc0MiwxNCBAQCBzdGF0aWMgbG9uZyBwcml2Y21kX2lvY3RsKHN0cnVjdCBmaWxlICpm aWxlLAogCQlyZXQgPSBwcml2Y21kX2lvY3RsX21tYXBfYmF0Y2godWRhdGEsIDIpOwogCQlicmVh azsKIAorCWNhc2UgSU9DVExfUFJJVkNNRF9IQ0FMTF9CVUZfTE9DSzoKKwkJcmV0ID0gcHJpdmNt ZF9pb2N0bF9oY2FsbF9idWZfbG9jayhwcml2LCB1ZGF0YSk7CisJCWJyZWFrOworCisJY2FzZSBJ T0NUTF9QUklWQ01EX0hDQUxMX0JVRl9VTkxPQ0s6CisJCXJldCA9IHByaXZjbWRfaW9jdGxfaGNh bGxfYnVmX3VubG9jayhwcml2LCB1ZGF0YSk7CisJCWJyZWFrOworCiAJZGVmYXVsdDoKIAkJcmV0 ID0gLUVOT1RUWTsKIAkJYnJlYWs7CkBAIC02NDQsOCArODIzLDM3IEBAIHN0YXRpYyBpbnQgcHJp dmNtZF92bWFfcmFuZ2VfaXNfbWFwcGVkKAogCQkJCSAgIGlzX21hcHBlZF9mbiwgTlVMTCkgIT0g MDsKIH0KIAorc3RhdGljIGludCBwcml2Y21kX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3Ry dWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IHByaXZjbWRfZGF0YSAqcHJpdjsKKworCXByaXYg PSBremFsbG9jKHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOworCWlmICghcHJpdikKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwlwcml2LT5oYnVmX3Jvb3QgPSBSQl9ST09UOworCUlOSVRfTElTVF9I RUFEKCZwcml2LT5oYnVmX2xpc3QpOworCW11dGV4X2luaXQoJnByaXYtPmhidWZfbXV0ZXgpOwor CisJZmlsZS0+cHJpdmF0ZV9kYXRhID0gcHJpdjsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50IHByaXZjbWRfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmls ZSkKK3sKKwlzdHJ1Y3QgcHJpdmNtZF9kYXRhICpwcml2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwor CisJcHJpdmNtZF9oYnVmX2VyYXNlX2FsbChwcml2KTsKKworCWtmcmVlKHByaXYpOworCXJldHVy biAwOworfQorCiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHhlbl9wcml2Y21kX2ZvcHMg PSB7CiAJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLm9wZW4gPSBwcml2Y21kX29wZW4sCisJLnJl bGVhc2UgPSBwcml2Y21kX3JlbGVhc2UsCiAJLnVubG9ja2VkX2lvY3RsID0gcHJpdmNtZF9pb2N0 bCwKIAkubW1hcCA9IHByaXZjbWRfbW1hcCwKIH07CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkv eGVuL3ByaXZjbWQuaCBiL2luY2x1ZGUvdWFwaS94ZW4vcHJpdmNtZC5oCmluZGV4IDdkZGVlZGEu LjQyNWJkMDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS94ZW4vcHJpdmNtZC5oCisrKyBiL2lu Y2x1ZGUvdWFwaS94ZW4vcHJpdmNtZC5oCkBAIC03Nyw2ICs3NywxMSBAQCBzdHJ1Y3QgcHJpdmNt ZF9tbWFwYmF0Y2hfdjIgewogCWludCBfX3VzZXIgKmVycjsgIC8qIGFycmF5IG9mIGVycm9yIGNv ZGVzICovCiB9OwogCitzdHJ1Y3QgcHJpdmNtZF9oY2FsbF9idWYgeworCXZvaWQgKnN0YXJ0Owor CXNpemVfdCBsZW47Cit9OworCiAvKgogICogQGNtZDogSU9DVExfUFJJVkNNRF9IWVBFUkNBTEwK ICAqIEBhcmc6ICZwcml2Y21kX2h5cGVyY2FsbF90CkBAIC05OSw0ICsxMDQsMzYgQEAgc3RydWN0 IHByaXZjbWRfbW1hcGJhdGNoX3YyIHsKICNkZWZpbmUgSU9DVExfUFJJVkNNRF9NTUFQQkFUQ0hf VjIJCQkJXAogCV9JT0MoX0lPQ19OT05FLCAnUCcsIDQsIHNpemVvZihzdHJ1Y3QgcHJpdmNtZF9t bWFwYmF0Y2hfdjIpKQogCisvKgorICogQGNtZDogSU9DVExfUFJJVkNNRF9IQ0FMTF9CVUZfTE9D SworICogQGFyZzogc3RydWN0IHByaXZjbWQgaGNhbGxfYnVmICoKKyAqIFJldHVybjogMCBvbiBz dWNjZXNzLiBPbiBhbiBlcnJvciwgLTEgaXMgcmV0dXJuZWQgYW5kIGVycm5vIGlzIHNldAorICog dG8gRUlOVkFMLCBFTk9NRU0sIG9yIEVGQVVMVC4KKyAqCisgKiBMb2NrcyBhIG1lbW9yeSBidWZm ZXIgc28gaXQgbWF5IGJlIHVzZWQgaW4gYSBoeXBlcmNhbGwuICBUaGlzIGlzCisgKiBzaW1pbGFy IHRvIG1sb2NrKDIpIGJ1dCBhbHNvIHByZXZlbnRzIGNvbXBhY3Rpb24vcGFnZSBtaWdyYXRpb24u CisgKgorICogVGhlIGJ1ZmZlcnMgbWF5IGhhdmUgYW55IGFsaWdubWVudCBhbmQgc2l6ZSBhbmQg bWF5IG92ZXJsYXAgb3RoZXIKKyAqIGJ1ZmZlcnMuCisgKgorICogTG9ja2VkIGJ1ZmZlcnMgYXJl IHVubG9ja2VkIHdpdGggSU9DVExfUFJJVkNNRF9IQ0FMTF9CVUZfVU5MT0NLIG9yCisgKiBieSBj bG9zaW5nIHRoZSBmaWxlIGhhbmRsZS4KKyAqLworI2RlZmluZSBJT0NUTF9QUklWQ01EX0hDQUxM X0JVRl9MT0NLCQkJCVwKKwlfSU9DKF9JT0NfTk9ORSwgJ1AnLCA1LCBzaXplb2Yoc3RydWN0IHBy aXZjbWRfaGNhbGxfYnVmKSkKKworLyoKKyAqIEBjbWQ6IElPQ1RMX1BSSVZDTURfSENBTExfQlVG X1VOTE9DSworICogQGFyZzogc3RydWN0IHByaXZjbWQgaGNhbGxfYnVmICoKKyAqIFJldHVybjog QWx3YXlzIDAuCisgKgorICogVW5sb2NrcyBhIG1lbW9yeSBidWZmZXIgcHJldmlvdXNseSBsb2Nr ZWQgd2l0aAorICogSU9DVExfUFJJVkNNRF9IQ0FMTF9CVUZfTE9DSy4KKyAqCisgKiBJdCBpcyBu b3QgcG9zc2libGUgdG8gcGFydGlhbGx5IHVubG9jayBhIGJ1ZmZlci4gIGkuZS4sIHRoZQorICog TE9DSy9VTkxPQ0sgbXVzdCBiZSBleGFjdGx5IHBhaXJlZC4KKyAqLworI2RlZmluZSBJT0NUTF9Q UklWQ01EX0hDQUxMX0JVRl9VTkxPQ0sJCQkJXAorCV9JT0MoX0lPQ19OT05FLCAnUCcsIDYsIHNp emVvZihzdHJ1Y3QgcHJpdmNtZF9oY2FsbF9idWYpKQorCiAjZW5kaWYgLyogX19MSU5VWF9QVUJM SUNfUFJJVkNNRF9IX18gKi8KLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==