From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v5 3/4] livepatch: NOP if func->new_addr is zero. Date: Sun, 11 Sep 2016 11:48:31 -0400 Message-ID: <1473608912-5913-4-git-send-email-konrad.wilk@oracle.com> References: <1473608912-5913-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bj70B-0001ii-9T for xen-devel@lists.xenproject.org; Sun, 11 Sep 2016 15:49:03 +0000 In-Reply-To: <1473608912-5913-1-git-send-email-konrad.wilk@oracle.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, konrad@kernel.org, ross.lagerwall@citrix.com Cc: andrew.cooper3@citrix.com, Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhlIE5PUCBmdW5jdGlvbmFsaXR5IHdpbGwgTk9QIGFueSBvZiB0aGUgY29kZSBhdAp0aGUgJ29s ZF9hZGRyJyBvciBhdCAnbmFtZScgaWYgdGhlICduZXdfYWRkcicgaXMgemVyby4KVGhlIHB1cnBv c2Ugb2YgdGhpcyBpcyB0byBOT1Agb3V0IGNhbGxzLCBzdWNoIGFzOgoKIGU4IDw0LWJ5dGVzLW9m ZnNldD4KCig1IGJ5dGUgaW5zbiksIG9yIG9uIEFSTSBhIDQgYnl0ZSBpbnNuIGZvciBicmFuY2hp bmcuCgpXZSBuZWVkIHRoZSBFSVAgb2Ygd2hlcmUgd2UgbmVlZCB0byB0aGUgTk9QLCBhbmQgdGhh dCBjYW4KYmUgcHJvdmlkZWQgdmlhIHRoZSBgb2xkX2FkZHJgIG9yIGBuYW1lYC4KCklmIHRoZSBg b2xkX2FkZHJgIGlzIHByb3ZpZGVkIHdlIHdpbGwgTk9QICduZXdfc2l6ZScKYW1vdW50IG9mIGJ5 dGVzIGF0IHRoYXQgbG9jYXRpb24uCgpUaGUgYW1vdW50IGlzIHVwIHRvIDMxIGluc3RydWN0aW9u cyBpZiBkZXNpcmVkICh3aGljaCBpcwp0aGUgc2l6ZSBvZiB0aGUgb3BhcXVlIG1lbWJlcikuIElm IHRoZXJlIGlzIGEgbmVlZCB0byBOT1AKbW9yZSB0aGVuIGVpdGhlciBtb3JlICdzdHJ1Y3QgbGl2 ZXBhdGNoX2Z1bmMnIHN0cnVjdHVyZXMgbmVlZAp0byBiZSBwcmVzZW50IG9yIHdlIGhhdmUgdG8g aW1wbGVtZW50IGEgdmFyaWFibGUgc2l6ZSBidWZmZXIuCgpXaGlsZSBhdCBpdCwgYWxzbyB1bmlm eSB0aGUgY29kZSBvbiB4ODYgcGF0Y2hpbmcgc28KaXQgaXMgYSBiaXQgc2ltcGxlciAoaW5zdGVh ZCBvZiB0d28gc2VwZXJhdGUgd3JpdGVzCmp1c3QgbWFrZSBpdCBvbmUgbWVtY3B5KS4KClNpZ25l ZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4K Ci0tLQpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpD YzogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CkNjOiBKYW4gQmV1 bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVy M0BjaXRyaXguY29tPgoKdjM6IEZpcnN0IHN1Ym1pc3Npb24KdjQ6IEZpeCBkZXNjcmlwdGlvbiAt IGU5IC0+IGU4CiAgICBSZW1vdmUgdGhlIHJlc3RyaWN0aW9uIG9mIG9ubHkgZG9pbmcgNSBvciA0 IGJ5dGVzLgogICAgUmVkbyB0aGUgcGF0Y2hpbmcgY29kZSB0byBkZWFsIHdpdGggdmFyaWFibGUg c2l6ZSBvZiBuZXdfc2l6ZS4KICAgIEV4cGFuZCB0aGUgYW1vdW50IG9mIGJ5dGVzIHdlIGNhbiBO T1AuCiAgICBNb3ZlIHRoZSBQQVRDSF9JTlNOX1NJWkUgZGVmaW5pdGlvbiBpbiBwbGF0Zm9ybSBz cGVjaWZpYyBoZWFkZXJzCiAgICBNb3ZlIHRoZSBnZXRfbGVuIHRvIGxpdmVwYXRjaF9nZXRfaW5z bl9sZW4gaW5saW5lIGZ1bmN0aW9uLgotLS0KIGRvY3MvbWlzYy9saXZlcGF0Y2gubWFya2Rvd24g ICAgICB8ICA3ICsrKysrLS0KIHhlbi9hcmNoL3g4Ni9hbHRlcm5hdGl2ZS5jICAgICAgICB8ICAy ICstCiB4ZW4vYXJjaC94ODYvbGl2ZXBhdGNoLmMgICAgICAgICAgfCAzOCArKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogeGVuL2NvbW1vbi9saXZlcGF0Y2guYyAgICAgICAg ICAgIHwgIDMgKystCiB4ZW4vaW5jbHVkZS9hc20teDg2L2FsdGVybmF0aXZlLmggfCAgMSArCiB4 ZW4vaW5jbHVkZS9hc20teDg2L2xpdmVwYXRjaC5oICAgfCAyMSArKysrKysrKysrKysrKysrKysr KysKIHhlbi9pbmNsdWRlL3hlbi9saXZlcGF0Y2guaCAgICAgICB8ICA5ICsrKysrKysrKwogNyBm aWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9hc20teDg2L2xpdmVwYXRjaC5oCgpkaWZmIC0tZ2l0IGEv ZG9jcy9taXNjL2xpdmVwYXRjaC5tYXJrZG93biBiL2RvY3MvbWlzYy9saXZlcGF0Y2gubWFya2Rv d24KaW5kZXggMDdiZTBhZi4uZTJlYTM1MSAxMDA2NDQKLS0tIGEvZG9jcy9taXNjL2xpdmVwYXRj aC5tYXJrZG93bgorKysgYi9kb2NzL21pc2MvbGl2ZXBhdGNoLm1hcmtkb3duCkBAIC0zMjAsMTAg KzMyMCwxMyBAQCBUaGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGlzIDY0IGJ5dGVzIG9uIDY0LWJp dCBoeXBlcnZpc29ycy4gSXQgd2lsbCBiZQogCiAqIGBuZXdfYWRkcmAgaXMgdGhlIGFkZHJlc3Mg b2YgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgcmVwbGFjaW5nIHRoZSBvbGQKICAgZnVuY3Rpb24uIFRo ZSBhZGRyZXNzIGlzIGZpbGxlZCBpbiBkdXJpbmcgcmVsb2NhdGlvbi4gVGhlIHZhbHVlICoqTVVT VCoqIGJlCi0gIHRoZSBhZGRyZXNzIG9mIHRoZSBuZXcgZnVuY3Rpb24gaW4gdGhlIGZpbGUuCisg IGVpdGhlciB0aGUgYWRkcmVzcyBvZiB0aGUgbmV3IGZ1bmN0aW9uIGluIHRoZSBmaWxlLCBvciB6 ZXJvIGlmIHdlIGFyZSBOT1Bpbmcgb3V0CisgIGF0IGBvbGRfYWRkcmAgKGFuZCBgbmV3X3NpemVg ICoqTVVTVCoqIG5vdCBiZSB6ZXJvKS4KIAogKiBgb2xkX3NpemVgIGFuZCBgbmV3X3NpemVgIGNv bnRhaW4gdGhlIHNpemVzIG9mIHRoZSByZXNwZWN0aXZlIGZ1bmN0aW9ucyBpbiBieXRlcy4KLSAg IFRoZSB2YWx1ZSBvZiBgb2xkX3NpemVgICoqTVVTVCoqIG5vdCBiZSB6ZXJvLgorICAgVGhlIHZh bHVlIG9mIGBvbGRfc2l6ZWAgKipNVVNUKiogbm90IGJlIHplcm8uIElmIHRoZSB2YWx1ZSBvZiBg bmV3X2FkZHJgIGlzCisgICB6ZXJvIHRoZW4gYG5ld19zaXplYCBkZXRlcm1pbmVzIGhvdyBtYW55 IGluc3RydWN0aW9uIGJ5dGVzIHRvIE5PUCAodXAgdG8KKyAgIG9wYXF1ZSBzaXplIG1vZHVsbyBz bWFsbGVzdCBwbGF0Zm9ybSBpbnN0cnVjdGlvbiAtIDEgYnl0ZSB4ODYgYW5kIDQgYnl0ZXMgb24g QVJNKS4KIAogKiBgdmVyc2lvbmAgaXMgdG8gYmUgb25lLgogCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvYWx0ZXJuYXRpdmUuYyBiL3hlbi9hcmNoL3g4Ni9hbHRlcm5hdGl2ZS5jCmluZGV4IDA1 ZTNlYjguLjZlYWExMGYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9hbHRlcm5hdGl2ZS5jCisr KyBiL3hlbi9hcmNoL3g4Ni9hbHRlcm5hdGl2ZS5jCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGlj IHZvaWQgX19pbml0IGFyY2hfaW5pdF9pZGVhbF9ub3BzKHZvaWQpCiB9CiAKIC8qIFVzZSB0aGlz IHRvIGFkZCBub3BzIHRvIGEgYnVmZmVyLCB0aGVuIHRleHRfcG9rZSB0aGUgd2hvbGUgYnVmZmVy LiAqLwotc3RhdGljIHZvaWQgaW5pdF9vcl9saXZlcGF0Y2ggYWRkX25vcHModm9pZCAqaW5zbnMs IHVuc2lnbmVkIGludCBsZW4pCit2b2lkIGluaXRfb3JfbGl2ZXBhdGNoIGFkZF9ub3BzKHZvaWQg Kmluc25zLCB1bnNpZ25lZCBpbnQgbGVuKQogewogICAgIHdoaWxlICggbGVuID4gMCApCiAgICAg ewpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2xpdmVwYXRjaC5jIGIveGVuL2FyY2gveDg2L2xp dmVwYXRjaC5jCmluZGV4IDcyNWIzZjYuLjJmNTRkN2IgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9saXZlcGF0Y2guYworKysgYi94ZW4vYXJjaC94ODYvbGl2ZXBhdGNoLmMKQEAgLTEyLDggKzEy LDcgQEAKICNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+CiAKICNpbmNsdWRlIDxhc20vbm1pLmg+ Ci0KLSNkZWZpbmUgUEFUQ0hfSU5TTl9TSVpFIDUKKyNpbmNsdWRlIDxhc20vbGl2ZXBhdGNoLmg+ CiAKIGludCBhcmNoX2xpdmVwYXRjaF9xdWllc2NlKHZvaWQpCiB7CkBAIC0zMSw4ICszMCw4IEBA IHZvaWQgYXJjaF9saXZlcGF0Y2hfcmV2aXZlKHZvaWQpCiAKIGludCBhcmNoX2xpdmVwYXRjaF92 ZXJpZnlfZnVuYyhjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCiB7Ci0gICAgLyog Tm8gTk9QIHBhdGNoaW5nIHlldC4gKi8KLSAgICBpZiAoICFmdW5jLT5uZXdfc2l6ZSApCisgICAg LyogSWYgTk9QaW5nIG9ubHkgZG8gdXAgdG8gbWF4aW11bSBhbW91bnQgd2UgY2FuIHB1dCBpbiB0 aGUgLT5vcGFxdWUuICovCisgICAgaWYgKCAhZnVuYy0+bmV3X2FkZHIgJiYgZnVuYy0+bmV3X3Np emUgPiBzaXplb2YoZnVuYy0+b3BhcXVlKSApCiAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsK IAogICAgIGlmICggZnVuYy0+b2xkX3NpemUgPCBQQVRDSF9JTlNOX1NJWkUgKQpAQCAtNDMsMjMg KzQyLDM2IEBAIGludCBhcmNoX2xpdmVwYXRjaF92ZXJpZnlfZnVuYyhjb25zdCBzdHJ1Y3QgbGl2 ZXBhdGNoX2Z1bmMgKmZ1bmMpCiAKIHZvaWQgYXJjaF9saXZlcGF0Y2hfYXBwbHlfam1wKHN0cnVj dCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykKIHsKLSAgICBpbnQzMl90IHZhbDsKICAgICB1aW50OF90 ICpvbGRfcHRyOwotCi0gICAgQlVJTERfQlVHX09OKFBBVENIX0lOU05fU0laRSA+IHNpemVvZihm dW5jLT5vcGFxdWUpKTsKLSAgICBCVUlMRF9CVUdfT04oUEFUQ0hfSU5TTl9TSVpFICE9ICgxICsg c2l6ZW9mKHZhbCkpKTsKKyAgICB1aW50OF90IGluc25bc2l6ZW9mKGZ1bmMtPm9wYXF1ZSldOwor ICAgIHNpemVfdCBsZW47CiAKICAgICBvbGRfcHRyID0gZnVuYy0+b2xkX2FkZHI7Ci0gICAgbWVt Y3B5KGZ1bmMtPm9wYXF1ZSwgb2xkX3B0ciwgUEFUQ0hfSU5TTl9TSVpFKTsKKyAgICBsZW4gPSBh cmNoX2xpdmVwYXRjaF9pbnNuX2xlbihmdW5jKTsKKyAgICBpZiAoICFsZW4gKQorICAgICAgICBy ZXR1cm47CisKKyAgICBtZW1jcHkoZnVuYy0+b3BhcXVlLCBvbGRfcHRyLCBsZW4pOworICAgIGlm ICggZnVuYy0+bmV3X2FkZHIgKQorICAgIHsKKyAgICAgICAgaW50MzJfdCB2YWw7CisKKyAgICAg ICAgQlVJTERfQlVHX09OKFBBVENIX0lOU05fU0laRSAhPSAoMSArIHNpemVvZih2YWwpKSk7CisK KyAgICAgICAgaW5zblswXSA9IDB4ZTk7CisgICAgICAgIHZhbCA9IGZ1bmMtPm5ld19hZGRyIC0g ZnVuYy0+b2xkX2FkZHIgLSBQQVRDSF9JTlNOX1NJWkU7CisKKyAgICAgICAgbWVtY3B5KCZpbnNu WzFdLCAmdmFsLCBzaXplb2YodmFsKSk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgYWRkX25v cHMoJmluc24sIGxlbik7CiAKLSAgICAqb2xkX3B0cisrID0gMHhlOTsgLyogUmVsYXRpdmUganVt cCAqLwotICAgIHZhbCA9IGZ1bmMtPm5ld19hZGRyIC0gZnVuYy0+b2xkX2FkZHIgLSBQQVRDSF9J TlNOX1NJWkU7Ci0gICAgbWVtY3B5KG9sZF9wdHIsICZ2YWwsIHNpemVvZih2YWwpKTsKKyAgICBt ZW1jcHkob2xkX3B0ciwgaW5zbiwgbGVuKTsKIH0KIAogdm9pZCBhcmNoX2xpdmVwYXRjaF9yZXZl cnRfam1wKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykKIHsKLSAgICBtZW1jcHko ZnVuYy0+b2xkX2FkZHIsIGZ1bmMtPm9wYXF1ZSwgUEFUQ0hfSU5TTl9TSVpFKTsKKyAgICBtZW1j cHkoZnVuYy0+b2xkX2FkZHIsIGZ1bmMtPm9wYXF1ZSwgYXJjaF9saXZlcGF0Y2hfaW5zbl9sZW4o ZnVuYykpOwogfQogCiAvKiBTZXJpYWxpc2UgdGhlIENQVSBwaXBlbGluZS4gKi8KZGlmZiAtLWdp dCBhL3hlbi9jb21tb24vbGl2ZXBhdGNoLmMgYi94ZW4vY29tbW9uL2xpdmVwYXRjaC5jCmluZGV4 IDIzZTRkNTEuLmYyMThjMjUgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vbGl2ZXBhdGNoLmMKKysr IGIveGVuL2NvbW1vbi9saXZlcGF0Y2guYwpAQCAtNTEwLDcgKzUxMCw4IEBAIHN0YXRpYyBpbnQg cHJlcGFyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLAogICAgICAgICAgICAgcmV0 dXJuIC1FT1BOT1RTVVBQOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCAhZi0+bmV3X2FkZHIg fHwgIWYtPm5ld19zaXplICkKKyAgICAgICAgLyogJ29sZF9hZGRyJywgJ25ld19hZGRyJywgJ25l d19zaXplJyBjYW4gYWxsIGJlIHplcm8uICovCisgICAgICAgIGlmICggIWYtPm9sZF9zaXplICkK ICAgICAgICAgewogICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVz OiBBZGRyZXNzIG9yIHNpemUgZmllbGRzIGFyZSB6ZXJvIVxuIiwKICAgICAgICAgICAgICAgICAg ICAgZWxmLT5uYW1lKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRp dmUuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRpdmUuaAppbmRleCA2N2ZjMGQyLi5k YjRmMDhlIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2FsdGVybmF0aXZlLmgKKysr IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9hbHRlcm5hdGl2ZS5oCkBAIC0yNyw2ICsyNyw3IEBAIHN0 cnVjdCBhbHRfaW5zdHIgewogI2RlZmluZSBBTFRfT1JJR19QVFIoYSkgICAgIF9fQUxUX1BUUihh LCBpbnN0cl9vZmZzZXQpCiAjZGVmaW5lIEFMVF9SRVBMX1BUUihhKSAgICAgX19BTFRfUFRSKGEs IHJlcGxfb2Zmc2V0KQogCitleHRlcm4gdm9pZCBhZGRfbm9wcyh2b2lkICppbnNucywgdW5zaWdu ZWQgaW50IGxlbik7CiAvKiBTaW1pbGFyIHRvIGFsdGVybmF0aXZlX2luc3RydWN0aW9ucyBleGNl cHQgaXQgY2FuIGJlIHJ1biB3aXRoIElSUXMgZW5hYmxlZC4gKi8KIGV4dGVybiB2b2lkIGFwcGx5 X2FsdGVybmF0aXZlcyhjb25zdCBzdHJ1Y3QgYWx0X2luc3RyICpzdGFydCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYWx0X2luc3RyICplbmQpOwpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9saXZlcGF0Y2guaCBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvbGl2ZXBhdGNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNlYTA3 OQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbGl2ZXBhdGNoLmgKQEAg LTAsMCArMSwyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0 cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqLworCisjaWZuZGVmIF9f WEVOX1g4Nl9MSVZFUEFUQ0hfSF9fCisjZGVmaW5lIF9fWEVOX1g4Nl9MSVZFUEFUQ0hfSF9fCisK KyNkZWZpbmUgUEFUQ0hfSU5TTl9TSVpFIDUKKworI2VuZGlmIC8qIF9fWEVOX1g4Nl9MSVZFUEFU Q0hfSF9fICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZp bGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0Cisg KiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUveGVuL2xpdmVwYXRjaC5oIGIveGVuL2luY2x1ZGUveGVuL2xpdmVwYXRjaC5oCmluZGV4 IDI0M2UyNDAuLjgyNThlMDIgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9saXZlcGF0Y2gu aAorKysgYi94ZW4vaW5jbHVkZS94ZW4vbGl2ZXBhdGNoLmgKQEAgLTY2LDcgKzY2LDE2IEBAIGlu dCBhcmNoX2xpdmVwYXRjaF9zZWN1cmUoY29uc3Qgdm9pZCAqdmEsIHVuc2lnbmVkIGludCBwYWdl cywgZW51bSB2YV90eXBlIHR5cGVzCiB2b2lkIGFyY2hfbGl2ZXBhdGNoX2luaXQodm9pZCk7CiAK ICNpbmNsdWRlIDxwdWJsaWMvc3lzY3RsLmg+IC8qIEZvciBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMu ICovCisjaW5jbHVkZSA8YXNtL2xpdmVwYXRjaC5oPiAvKiBGb3IgUEFUQ0hfSU5TTl9TSVpFLiAq LwogaW50IGFyY2hfbGl2ZXBhdGNoX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hf ZnVuYyAqZnVuYyk7CisKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGFyY2hfbGl2ZXBhdGNoX2luc25f bGVuKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZnVuYyAqZnVuYykKK3sKKyAgICBpZiAoICFmdW5j LT5uZXdfYWRkciApCisgICAgICAgIHJldHVybiBmdW5jLT5uZXdfc2l6ZTsKKworICAgIHJldHVy biBQQVRDSF9JTlNOX1NJWkU7Cit9CiAvKgogICogVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQg YXJvdW5kIHRoZSBjcml0aWNhbCByZWdpb24gcGF0Y2hpbmcgbGl2ZSBjb2RlLAogICogZm9yIGFu IGFyY2hpdGVjdHVyZSB0byB0YWtlIG1ha2UgYXBwcm9wcmF0aWUgZ2xvYmFsIHN0YXRlIGFkanVz dG1lbnRzLgotLSAKMi40LjExCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9y ZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==