From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v6 3/6] livepatch: NOP if func->new_addr is zero. Date: Fri, 16 Sep 2016 11:29:11 -0400 Message-ID: <1474039754-25816-4-git-send-email-konrad.wilk@oracle.com> References: <1474039754-25816-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bkv50-0003yV-HQ for xen-devel@lists.xenproject.org; Fri, 16 Sep 2016 15:29:30 +0000 In-Reply-To: <1474039754-25816-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, andrew.cooper3@citrix.com Cc: Jan Beulich , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhlIE5PUCBmdW5jdGlvbmFsaXR5IHdpbGwgTk9QIGFueSBvZiB0aGUgY29kZSBhdAp0aGUgJ29s ZF9hZGRyJyBvciBhdCAnbmFtZScgaWYgdGhlICduZXdfYWRkcicgaXMgemVyby4KVGhlIHB1cnBv c2Ugb2YgdGhpcyBpcyB0byBOT1Agb3V0IGNhbGxzLCBzdWNoIGFzOgoKIGU4IDw0LWJ5dGVzLW9m ZnNldD4KCig1IGJ5dGUgaW5zbiksIG9yIG9uIEFSTSBhIDQgYnl0ZSBpbnNuIGZvciBicmFuY2hp bmcuCgpXZSBuZWVkIHRoZSBFSVAgb2Ygd2hlcmUgd2UgbmVlZCB0byB0aGUgTk9QLCBhbmQgdGhh dCBjYW4KYmUgcHJvdmlkZWQgdmlhIHRoZSBgb2xkX2FkZHJgIG9yIGBuYW1lYC4KCklmIHRoZSBg b2xkX2FkZHJgIGlzIHByb3ZpZGVkIHdlIHdpbGwgTk9QICduZXdfc2l6ZScKYW1vdW50IG9mIGJ5 dGVzIGF0IHRoYXQgbG9jYXRpb24uCgpUaGUgYW1vdW50IGlzIHVwIHRvIDMxIGluc3RydWN0aW9u cyBpZiBkZXNpcmVkICh3aGljaCBpcwp0aGUgc2l6ZSBvZiB0aGUgb3BhcXVlIG1lbWJlcikuIElm IHRoZXJlIGlzIGEgbmVlZCB0byBOT1AKbW9yZSB0aGVuOiBhKSBtb3JlICdzdHJ1Y3QgbGl2ZXBh dGNoX2Z1bmMnIHN0cnVjdHVyZXMgbmVlZAp0byBiZSBwcmVzZW50LCBiKSB3ZSBoYXZlIHRvIGlt cGxlbWVudCBhIHZhcmlhYmxlIHNpemUKYnVmZmVyIChpbiB0aGUgZnV0dXJlKSwgb3IgYykgZmly c3QgYnl0ZSBhbiB1bmNvbmRpdGlvbmFsCmJyYW5jaCBza2lwcGluZyB0aGUgdG8gYmUgZGlzYWJs ZWQgY29kZSAob2YgY291cnNlIHByb3ZpZGVkCnRoZXJlIGFyZSBubyBicmFuY2ggdGFyZ2V0cyBp biB0aGUgbWlkZGxlKS4KCldoaWxlIGF0IGl0LCBhbHNvIHVuaWZ5IHRoZSBjb2RlIG9uIHg4NiBw YXRjaGluZyBzbwppdCBpcyBhIGJpdCBzaW1wbGVyIChpbnN0ZWFkIG9mIHR3byBzZXBlcmF0ZSB3 cml0ZXMKanVzdCBtYWtlIGl0IG9uZSBtZW1jcHkpLgoKQW5kIGludHJvZHVjZSBhIGdlbmVyYWwg bGl2ZXBhdGNoX2luc25fbGVuIGlubGluZSBmdW5jdGlvbgp0aGF0IHdvdWxkIGRlcGVuZCBvbiBw bGF0Zm9ybSBzcGVjaWZpYyBpbnN0cnVjdGlvbiBzaXplCihmb3IgYSB1bmNvbmRpdGlvbmFsIGJy YW5jaCkuIEFzIHN1Y2ggd2UgYWxzbyByZW5hbWUgdGhlClBBVENIX0lOU05fU0laRSB0byBBUkNI X1BBVENIX0lOU05fU0laRS4KClNpZ25lZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8 a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KCi0tLQpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxr b25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxs QGNpdHJpeC5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRy ZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgoKdjM6IEZpcnN0IHN1Ym1pc3Np b24KdjQ6IEZpeCBkZXNjcmlwdGlvbiAtIGU5IC0+IGU4CiAgICBSZW1vdmUgdGhlIHJlc3RyaWN0 aW9uIG9mIG9ubHkgZG9pbmcgNSBvciA0IGJ5dGVzLgogICAgUmVkbyB0aGUgcGF0Y2hpbmcgY29k ZSB0byBkZWFsIHdpdGggdmFyaWFibGUgc2l6ZSBvZiBuZXdfc2l6ZS4KICAgIEV4cGFuZCB0aGUg YW1vdW50IG9mIGJ5dGVzIHdlIGNhbiBOT1AuCiAgICBNb3ZlIHRoZSBQQVRDSF9JTlNOX1NJWkUg ZGVmaW5pdGlvbiBpbiBwbGF0Zm9ybSBzcGVjaWZpYyBoZWFkZXJzCiAgICBNb3ZlIHRoZSBnZXRf bGVuIHRvIGxpdmVwYXRjaF9nZXRfaW5zbl9sZW4gaW5saW5lIGZ1bmN0aW9uLgp2NTogcy9QQVRD SF9JTlNOX1NJWkUvQVJDSF9QQVRDSF9JTlNOX1NJWkUvCiAgICBzL2FyY2hfbGl2ZXBhdGNoX2lu c25fbGVuL2xpdmVwYXRjaF9pbnNuX2xlbi8KICAgIHMvc2l6ZV90IGxlbi91bnNpZ25lZCBpbnQg bGVuLwogICAgQWRkIGluIGNvbW1pdCBkZXNjcmlwdGlvbiB0aGUgYykgbWVjaGFuaXNtIChpbnNl cnQgYW4gdW5jb25kaXRpb25hbAogICAgYnJhbmNoKS4KLS0tCiBkb2NzL21pc2MvbGl2ZXBhdGNo Lm1hcmtkb3duICAgICAgfCAgNyArKysrKy0tCiB4ZW4vYXJjaC94ODYvYWx0ZXJuYXRpdmUuYyAg ICAgICAgfCAgMiArLQogeGVuL2FyY2gveDg2L2xpdmVwYXRjaC5jICAgICAgICAgIHwgNDAgKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiB4ZW4vY29tbW9uL2xpdmVwYXRj aC5jICAgICAgICAgICAgfCAgMyArKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRpdmUu aCB8ICAxICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvbGl2ZXBhdGNoLmggICB8IDIxICsrKysrKysr KysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS94ZW4vbGl2ZXBhdGNoLmggICAgICAgfCAgOSArKysr KysrKysKIDcgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvYXNtLXg4Ni9saXZlcGF0Y2guaAoKZGlm ZiAtLWdpdCBhL2RvY3MvbWlzYy9saXZlcGF0Y2gubWFya2Rvd24gYi9kb2NzL21pc2MvbGl2ZXBh dGNoLm1hcmtkb3duCmluZGV4IDgxZjRmYzkuLmE4ZTcwYTggMTAwNjQ0Ci0tLSBhL2RvY3MvbWlz Yy9saXZlcGF0Y2gubWFya2Rvd24KKysrIGIvZG9jcy9taXNjL2xpdmVwYXRjaC5tYXJrZG93bgpA QCAtMzIwLDEwICszMjAsMTMgQEAgVGhlIHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpcyA2NCBieXRl cyBvbiA2NC1iaXQgaHlwZXJ2aXNvcnMuIEl0IHdpbGwgYmUKIAogKiBgbmV3X2FkZHJgIGlzIHRo ZSBhZGRyZXNzIG9mIHRoZSBmdW5jdGlvbiB0aGF0IGlzIHJlcGxhY2luZyB0aGUgb2xkCiAgIGZ1 bmN0aW9uLiBUaGUgYWRkcmVzcyBpcyBmaWxsZWQgaW4gZHVyaW5nIHJlbG9jYXRpb24uIFRoZSB2 YWx1ZSAqKk1VU1QqKiBiZQotICB0aGUgYWRkcmVzcyBvZiB0aGUgbmV3IGZ1bmN0aW9uIGluIHRo ZSBmaWxlLgorICBlaXRoZXIgdGhlIGFkZHJlc3Mgb2YgdGhlIG5ldyBmdW5jdGlvbiBpbiB0aGUg ZmlsZSwgb3IgemVybyBpZiB3ZSBhcmUgTk9QaW5nIG91dAorICBhdCBgb2xkX2FkZHJgIChhbmQg YG5ld19zaXplYCAqKk1VU1QqKiBub3QgYmUgemVybykuCiAKICogYG9sZF9zaXplYCBhbmQgYG5l d19zaXplYCBjb250YWluIHRoZSBzaXplcyBvZiB0aGUgcmVzcGVjdGl2ZSBmdW5jdGlvbnMgaW4g Ynl0ZXMuCi0gICBUaGUgdmFsdWUgb2YgYG9sZF9zaXplYCAqKk1VU1QqKiBub3QgYmUgemVyby4K KyAgIFRoZSB2YWx1ZSBvZiBgb2xkX3NpemVgICoqTVVTVCoqIG5vdCBiZSB6ZXJvLiBJZiB0aGUg dmFsdWUgb2YgYG5ld19hZGRyYCBpcworICAgemVybyB0aGVuIGBuZXdfc2l6ZWAgZGV0ZXJtaW5l cyBob3cgbWFueSBpbnN0cnVjdGlvbiBieXRlcyB0byBOT1AgKHVwIHRvCisgICBvcGFxdWUgc2l6 ZSBtb2R1bG8gc21hbGxlc3QgcGxhdGZvcm0gaW5zdHJ1Y3Rpb24gLSAxIGJ5dGUgeDg2IGFuZCA0 IGJ5dGVzIG9uIEFSTSkuCiAKICogYHZlcnNpb25gIGlzIHRvIGJlIG9uZS4KIApkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2FsdGVybmF0aXZlLmMgYi94ZW4vYXJjaC94ODYvYWx0ZXJuYXRpdmUu YwppbmRleCAwNWUzZWI4Li42ZWFhMTBmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYWx0ZXJu YXRpdmUuYworKysgYi94ZW4vYXJjaC94ODYvYWx0ZXJuYXRpdmUuYwpAQCAtMTAxLDcgKzEwMSw3 IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBhcmNoX2luaXRfaWRlYWxfbm9wcyh2b2lkKQogfQogCiAv KiBVc2UgdGhpcyB0byBhZGQgbm9wcyB0byBhIGJ1ZmZlciwgdGhlbiB0ZXh0X3Bva2UgdGhlIHdo b2xlIGJ1ZmZlci4gKi8KLXN0YXRpYyB2b2lkIGluaXRfb3JfbGl2ZXBhdGNoIGFkZF9ub3BzKHZv aWQgKmluc25zLCB1bnNpZ25lZCBpbnQgbGVuKQordm9pZCBpbml0X29yX2xpdmVwYXRjaCBhZGRf bm9wcyh2b2lkICppbnNucywgdW5zaWduZWQgaW50IGxlbikKIHsKICAgICB3aGlsZSAoIGxlbiA+ IDAgKQogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9saXZlcGF0Y2guYyBiL3hlbi9h cmNoL3g4Ni9saXZlcGF0Y2guYwppbmRleCA3MjViM2Y2Li4wYjg2NDJiIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvbGl2ZXBhdGNoLmMKKysrIGIveGVuL2FyY2gveDg2L2xpdmVwYXRjaC5jCkBA IC0xMiw4ICsxMiw3IEBACiAjaW5jbHVkZSA8eGVuL2xpdmVwYXRjaC5oPgogCiAjaW5jbHVkZSA8 YXNtL25taS5oPgotCi0jZGVmaW5lIFBBVENIX0lOU05fU0laRSA1CisjaW5jbHVkZSA8YXNtL2xp dmVwYXRjaC5oPgogCiBpbnQgYXJjaF9saXZlcGF0Y2hfcXVpZXNjZSh2b2lkKQogewpAQCAtMzEs MTEgKzMwLDExIEBAIHZvaWQgYXJjaF9saXZlcGF0Y2hfcmV2aXZlKHZvaWQpCiAKIGludCBhcmNo X2xpdmVwYXRjaF92ZXJpZnlfZnVuYyhjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMp CiB7Ci0gICAgLyogTm8gTk9QIHBhdGNoaW5nIHlldC4gKi8KLSAgICBpZiAoICFmdW5jLT5uZXdf c2l6ZSApCisgICAgLyogSWYgTk9QaW5nIG9ubHkgZG8gdXAgdG8gbWF4aW11bSBhbW91bnQgd2Ug Y2FuIHB1dCBpbiB0aGUgLT5vcGFxdWUuICovCisgICAgaWYgKCAhZnVuYy0+bmV3X2FkZHIgJiYg ZnVuYy0+bmV3X3NpemUgPiBzaXplb2YoZnVuYy0+b3BhcXVlKSApCiAgICAgICAgIHJldHVybiAt RU9QTk9UU1VQUDsKIAotICAgIGlmICggZnVuYy0+b2xkX3NpemUgPCBQQVRDSF9JTlNOX1NJWkUg KQorICAgIGlmICggZnVuYy0+b2xkX3NpemUgPCBBUkNIX1BBVENIX0lOU05fU0laRSApCiAgICAg ICAgIHJldHVybiAtRUlOVkFMOwogCiAgICAgcmV0dXJuIDA7CkBAIC00MywyMyArNDIsMzYgQEAg aW50IGFyY2hfbGl2ZXBhdGNoX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZnVu YyAqZnVuYykKIAogdm9pZCBhcmNoX2xpdmVwYXRjaF9hcHBseV9qbXAoc3RydWN0IGxpdmVwYXRj aF9mdW5jICpmdW5jKQogewotICAgIGludDMyX3QgdmFsOwogICAgIHVpbnQ4X3QgKm9sZF9wdHI7 Ci0KLSAgICBCVUlMRF9CVUdfT04oUEFUQ0hfSU5TTl9TSVpFID4gc2l6ZW9mKGZ1bmMtPm9wYXF1 ZSkpOwotICAgIEJVSUxEX0JVR19PTihQQVRDSF9JTlNOX1NJWkUgIT0gKDEgKyBzaXplb2YodmFs KSkpOworICAgIHVpbnQ4X3QgaW5zbltzaXplb2YoZnVuYy0+b3BhcXVlKV07CisgICAgdW5zaWdu ZWQgaW50IGxlbjsKIAogICAgIG9sZF9wdHIgPSBmdW5jLT5vbGRfYWRkcjsKLSAgICBtZW1jcHko ZnVuYy0+b3BhcXVlLCBvbGRfcHRyLCBQQVRDSF9JTlNOX1NJWkUpOworICAgIGxlbiA9IGxpdmVw YXRjaF9pbnNuX2xlbihmdW5jKTsKKyAgICBpZiAoICFsZW4gKQorICAgICAgICByZXR1cm47CisK KyAgICBtZW1jcHkoZnVuYy0+b3BhcXVlLCBvbGRfcHRyLCBsZW4pOworICAgIGlmICggZnVuYy0+ bmV3X2FkZHIgKQorICAgIHsKKyAgICAgICAgaW50MzJfdCB2YWw7CisKKyAgICAgICAgQlVJTERf QlVHX09OKEFSQ0hfUEFUQ0hfSU5TTl9TSVpFICE9ICgxICsgc2l6ZW9mKHZhbCkpKTsKKworICAg ICAgICBpbnNuWzBdID0gMHhlOTsKKyAgICAgICAgdmFsID0gZnVuYy0+bmV3X2FkZHIgLSBmdW5j LT5vbGRfYWRkciAtIEFSQ0hfUEFUQ0hfSU5TTl9TSVpFOworCisgICAgICAgIG1lbWNweSgmaW5z blsxXSwgJnZhbCwgc2l6ZW9mKHZhbCkpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGFkZF9u b3BzKCZpbnNuLCBsZW4pOwogCi0gICAgKm9sZF9wdHIrKyA9IDB4ZTk7IC8qIFJlbGF0aXZlIGp1 bXAgKi8KLSAgICB2YWwgPSBmdW5jLT5uZXdfYWRkciAtIGZ1bmMtPm9sZF9hZGRyIC0gUEFUQ0hf SU5TTl9TSVpFOwotICAgIG1lbWNweShvbGRfcHRyLCAmdmFsLCBzaXplb2YodmFsKSk7CisgICAg bWVtY3B5KG9sZF9wdHIsIGluc24sIGxlbik7CiB9CiAKIHZvaWQgYXJjaF9saXZlcGF0Y2hfcmV2 ZXJ0X2ptcChjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCiB7Ci0gICAgbWVtY3B5 KGZ1bmMtPm9sZF9hZGRyLCBmdW5jLT5vcGFxdWUsIFBBVENIX0lOU05fU0laRSk7CisgICAgbWVt Y3B5KGZ1bmMtPm9sZF9hZGRyLCBmdW5jLT5vcGFxdWUsIGxpdmVwYXRjaF9pbnNuX2xlbihmdW5j KSk7CiB9CiAKIC8qIFNlcmlhbGlzZSB0aGUgQ1BVIHBpcGVsaW5lLiAqLwpkaWZmIC0tZ2l0IGEv eGVuL2NvbW1vbi9saXZlcGF0Y2guYyBiL3hlbi9jb21tb24vbGl2ZXBhdGNoLmMKaW5kZXggOTY3 OTg1Yy4uMjE4YjM4OSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9saXZlcGF0Y2guYworKysgYi94 ZW4vY29tbW9uL2xpdmVwYXRjaC5jCkBAIC01MjAsNyArNTIwLDggQEAgc3RhdGljIGludCBwcmVw YXJlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxvYWQsCiAgICAgICAgICAgICByZXR1cm4g LUVPUE5PVFNVUFA7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoICFmLT5uZXdfYWRkciB8fCAh Zi0+bmV3X3NpemUgKQorICAgICAgICAvKiAnb2xkX2FkZHInLCAnbmV3X2FkZHInLCAnbmV3X3Np emUnIGNhbiBhbGwgYmUgemVyby4gKi8KKyAgICAgICAgaWYgKCAhZi0+b2xkX3NpemUgKQogICAg ICAgICB7CiAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIExJVkVQQVRDSCAiJXM6IEFk ZHJlc3Mgb3Igc2l6ZSBmaWVsZHMgYXJlIHplcm8hXG4iLAogICAgICAgICAgICAgICAgICAgICBl bGYtPm5hbWUpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9hbHRlcm5hdGl2ZS5o IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9hbHRlcm5hdGl2ZS5oCmluZGV4IDY3ZmMwZDIuLmRiNGYw OGUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRpdmUuaAorKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L2FsdGVybmF0aXZlLmgKQEAgLTI3LDYgKzI3LDcgQEAgc3RydWN0 IGFsdF9pbnN0ciB7CiAjZGVmaW5lIEFMVF9PUklHX1BUUihhKSAgICAgX19BTFRfUFRSKGEsIGlu c3RyX29mZnNldCkKICNkZWZpbmUgQUxUX1JFUExfUFRSKGEpICAgICBfX0FMVF9QVFIoYSwgcmVw bF9vZmZzZXQpCiAKK2V4dGVybiB2b2lkIGFkZF9ub3BzKHZvaWQgKmluc25zLCB1bnNpZ25lZCBp bnQgbGVuKTsKIC8qIFNpbWlsYXIgdG8gYWx0ZXJuYXRpdmVfaW5zdHJ1Y3Rpb25zIGV4Y2VwdCBp dCBjYW4gYmUgcnVuIHdpdGggSVJRcyBlbmFibGVkLiAqLwogZXh0ZXJuIHZvaWQgYXBwbHlfYWx0 ZXJuYXRpdmVzKGNvbnN0IHN0cnVjdCBhbHRfaW5zdHIgKnN0YXJ0LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBhbHRfaW5zdHIgKmVuZCk7CmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20teDg2L2xpdmVwYXRjaC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9s aXZlcGF0Y2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTA0YWExCi0t LSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9saXZlcGF0Y2guaApAQCAtMCww ICsxLDIxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQvb3IgaXRzIGFm ZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICovCisKKyNpZm5kZWYgX19YRU5f WDg2X0xJVkVQQVRDSF9IX18KKyNkZWZpbmUgX19YRU5fWDg2X0xJVkVQQVRDSF9IX18KKworI2Rl ZmluZSBBUkNIX1BBVENIX0lOU05fU0laRSA1CisKKyNlbmRpZiAvKiBfX1hFTl9YODZfTElWRVBB VENIX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1m aWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAor ICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3hlbi9saXZlcGF0Y2guaCBiL3hlbi9pbmNsdWRlL3hlbi9saXZlcGF0Y2guaAppbmRl eCA0NmI5ZmMyLi5iNzE0ZmJjIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vbGl2ZXBhdGNo LmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2xpdmVwYXRjaC5oCkBAIC02OCw3ICs2OCwxNiBAQCBp bnQgYXJjaF9saXZlcGF0Y2hfc2VjdXJlKGNvbnN0IHZvaWQgKnZhLCB1bnNpZ25lZCBpbnQgcGFn ZXMsIGVudW0gdmFfdHlwZSB0eXBlcwogdm9pZCBhcmNoX2xpdmVwYXRjaF9pbml0KHZvaWQpOwog CiAjaW5jbHVkZSA8cHVibGljL3N5c2N0bC5oPiAvKiBGb3Igc3RydWN0IGxpdmVwYXRjaF9mdW5j LiAqLworI2luY2x1ZGUgPGFzbS9saXZlcGF0Y2guaD4gLyogRm9yIEFSQ0hfUEFUQ0hfSU5TTl9T SVpFLiAqLwogaW50IGFyY2hfbGl2ZXBhdGNoX3ZlcmlmeV9mdW5jKGNvbnN0IHN0cnVjdCBsaXZl cGF0Y2hfZnVuYyAqZnVuYyk7CisKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGxpdmVwYXRjaF9pbnNu X2xlbihjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCit7CisgICAgaWYgKCAhZnVu Yy0+bmV3X2FkZHIgKQorICAgICAgICByZXR1cm4gZnVuYy0+bmV3X3NpemU7CisKKyAgICByZXR1 cm4gQVJDSF9QQVRDSF9JTlNOX1NJWkU7Cit9CiAvKgogICogVGhlc2UgZnVuY3Rpb25zIGFyZSBj YWxsZWQgYXJvdW5kIHRoZSBjcml0aWNhbCByZWdpb24gcGF0Y2hpbmcgbGl2ZSBjb2RlLAogICog Zm9yIGFuIGFyY2hpdGVjdHVyZSB0byB0YWtlIG1ha2UgYXBwcm9wcmF0aWUgZ2xvYmFsIHN0YXRl IGFkanVzdG1lbnRzLgotLSAKMi41LjUKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK