From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v2 14/18] x86/traps: merge x86_64/compat/traps.c into pv/traps.c Date: Fri, 5 May 2017 15:48:32 +0100 Message-ID: <20170505144836.8612-15-wei.liu2@citrix.com> References: <20170505144836.8612-1-wei.liu2@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 ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d6eys-0004T9-NO for xen-devel@lists.xenproject.org; Fri, 05 May 2017 15:17:18 +0000 In-Reply-To: <20170505144836.8612-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org RXhwb3J0IGh5cGVyY2FsbF9wYWdlX2luaXRpYWxpc2VfcmluZzFfa2VybmVsIGFzIHRoZSBjb2Rl IGlzIG1vdmVkLgoKTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBXZWkgTGl1 IDx3ZWkubGl1MkBjaXRyaXguY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9wdi90cmFwcy5jICAgICAg ICAgICAgfCA0MDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJj aC94ODYveDg2XzY0L2NvbXBhdC90cmFwcy5jIHwgNDE1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni94ODZfNjQvdHJhcHMuYyAgICAgICAgfCAgIDIg LQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9kb21haW4uaCAgICB8ICAgMiArCiA0IGZpbGVzIGNo YW5nZWQsIDQwOCBpbnNlcnRpb25zKCspLCA0MTcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAx MDA2NDQgeGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvdHJhcHMuYwoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9wdi90cmFwcy5jIGIveGVuL2FyY2gveDg2L3B2L3RyYXBzLmMKaW5kZXggMTc4 YWMyNzczYy4uOGNhYmVmN2E0NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L3RyYXBzLmMK KysrIGIveGVuL2FyY2gveDg2L3B2L3RyYXBzLmMKQEAgLTMyLDYgKzMyLDkgQEAKICNpbmNsdWRl IDxhc20vc2hhcmVkLmg+CiAjaW5jbHVkZSA8YXNtL3RyYXBzLmg+CiAKKyNpbmNsdWRlIDxjb21w YXQvY2FsbGJhY2suaD4KKyNpbmNsdWRlIDxjb21wYXQvYXJjaC14ODZfMzIuaD4KKwogI2luY2x1 ZGUgPHB1YmxpYy9jYWxsYmFjay5oPgogCiB2b2lkIGRvX2VudHJ5X2ludDgyKHN0cnVjdCBjcHVf dXNlcl9yZWdzICpyZWdzKQpAQCAtNjg2LDYgKzY4OSw0MDkgQEAgdm9pZCBoeXBlcmNhbGxfcGFn ZV9pbml0aWFsaXNlX3JpbmczX2tlcm5lbCh2b2lkICpoeXBlcmNhbGxfcGFnZSkKICAgICAqKHUx NiAqKShwKyA5KSA9IDB4MDUwZjsgIC8qIHN5c2NhbGwgKi8KIH0KIAorLyogQ29tcGF0IGd1ZXN0 IGludGVyZmFjZXMgKi8KKwordm9pZCBjb21wYXRfc2hvd19ndWVzdF9zdGFjayhzdHJ1Y3QgdmNw dSAqdiwgY29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBkZWJ1Z19zdGFja19saW5lcykKK3sKKyAgICB1bnNpZ25lZCBpbnQg aSwgKnN0YWNrLCBhZGRyLCBtYXNrID0gU1RBQ0tfU0laRTsKKworICAgIHN0YWNrID0gKHVuc2ln bmVkIGludCAqKSh1bnNpZ25lZCBsb25nKXJlZ3MtPmVzcDsKKyAgICBwcmludGsoIkd1ZXN0IHN0 YWNrIHRyYWNlIGZyb20gZXNwPSUwOGx4OlxuICIsICh1bnNpZ25lZCBsb25nKXN0YWNrKTsKKwor ICAgIGlmICggIV9fY29tcGF0X2FjY2Vzc19vayh2LT5kb21haW4sIHN0YWNrLCBzaXplb2YoKnN0 YWNrKSkgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKCJHdWVzdC1pbmFjY2Vzc2libGUgbWVtb3J5 LlxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIHYgIT0gY3VycmVudCAp CisgICAgeworICAgICAgICBzdHJ1Y3QgdmNwdSAqdmNwdTsKKyAgICAgICAgdW5zaWduZWQgbG9u ZyBtZm47CisKKyAgICAgICAgQVNTRVJUKGd1ZXN0X2tlcm5lbF9tb2RlKHYsIHJlZ3MpKTsKKyAg ICAgICAgbWZuID0gcmVhZF9jcjMoKSA+PiBQQUdFX1NISUZUOworICAgICAgICBmb3JfZWFjaF92 Y3B1KCB2LT5kb21haW4sIHZjcHUgKQorICAgICAgICAgICAgaWYgKCBwYWdldGFibGVfZ2V0X3Bm bih2Y3B1LT5hcmNoLmd1ZXN0X3RhYmxlKSA9PSBtZm4gKQorICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICBpZiAoICF2Y3B1ICkKKyAgICAgICAgeworICAgICAgICAgICAgc3RhY2sgPSBk b19wYWdlX3dhbGsodiwgKHVuc2lnbmVkIGxvbmcpc3RhY2spOworICAgICAgICAgICAgaWYgKCAo dW5zaWduZWQgbG9uZylzdGFjayA8IFBBR0VfU0laRSApCisgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgcHJpbnRrKCJJbmFjY2Vzc2libGUgZ3Vlc3QgbWVtb3J5LlxuIik7CisgICAgICAg ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWFzayA9IFBBR0Vf U0laRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoIGkgPSAwOyBpIDwgZGVidWdfc3Rh Y2tfbGluZXMgKiA4OyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCAoKChsb25nKXN0YWNrIC0g MSkgXiAoKGxvbmcpKHN0YWNrICsgMSkgLSAxKSkgJiBtYXNrICkKKyAgICAgICAgICAgIGJyZWFr OworICAgICAgICBpZiAoIF9fZ2V0X3VzZXIoYWRkciwgc3RhY2spICkKKyAgICAgICAgeworICAg ICAgICAgICAgaWYgKCBpICE9IDAgKQorICAgICAgICAgICAgICAgIHByaW50aygiXG4gICAgIik7 CisgICAgICAgICAgICBwcmludGsoIkZhdWx0IHdoaWxlIGFjY2Vzc2luZyBndWVzdCBtZW1vcnku Iik7CisgICAgICAgICAgICBpID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg ICAgICAgIGlmICggKGkgIT0gMCkgJiYgKChpICUgOCkgPT0gMCkgKQorICAgICAgICAgICAgcHJp bnRrKCJcbiAiKTsKKyAgICAgICAgcHJpbnRrKCIgJTA4eCIsIGFkZHIpOworICAgICAgICBzdGFj aysrOworICAgIH0KKyAgICBpZiAoIG1hc2sgPT0gUEFHRV9TSVpFICkKKyAgICB7CisgICAgICAg IEJVSUxEX0JVR19PTihQQUdFX1NJWkUgPT0gU1RBQ0tfU0laRSk7CisgICAgICAgIHVubWFwX2Rv bWFpbl9wYWdlKHN0YWNrKTsKKyAgICB9CisgICAgaWYgKCBpID09IDAgKQorICAgICAgICBwcmlu dGsoIlN0YWNrIGVtcHR5LiIpOworICAgIHByaW50aygiXG4iKTsKK30KKwordW5zaWduZWQgaW50 IGNvbXBhdF9pcmV0KHZvaWQpCit7CisgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MgPSBn dWVzdF9jcHVfdXNlcl9yZWdzKCk7CisgICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OworICAg IHUzMiBlZmxhZ3M7CisKKyAgICAvKiBUcmltIHN0YWNrIHBvaW50ZXIgdG8gMzIgYml0cy4gKi8K KyAgICByZWdzLT5yc3AgPSAodTMyKXJlZ3MtPnJzcDsKKworICAgIC8qIFJlc3RvcmUgRUFYIChj bG9iYmVyZWQgYnkgaHlwZXJjYWxsKS4gKi8KKyAgICBpZiAoIHVubGlrZWx5KF9fZ2V0X3VzZXIo cmVncy0+ZWF4LCAodTMyICopcmVncy0+cnNwKSkgKQorICAgIHsKKyAgICAgICAgZG9tYWluX2Ny YXNoKHYtPmRvbWFpbik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIFJlc3Rv cmUgQ1MgYW5kIEVJUC4gKi8KKyAgICBpZiAoIHVubGlrZWx5KF9fZ2V0X3VzZXIocmVncy0+ZWlw LCAodTMyICopcmVncy0+cnNwICsgMSkpIHx8CisgICAgICAgIHVubGlrZWx5KF9fZ2V0X3VzZXIo cmVncy0+Y3MsICh1MzIgKilyZWdzLT5yc3AgKyAyKSkgKQorICAgIHsKKyAgICAgICAgZG9tYWlu X2NyYXNoKHYtPmRvbWFpbik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qCisg ICAgICogRml4IHVwIGFuZCByZXN0b3JlIEVGTEFHUy4gV2UgZml4IHVwIGluIGEgbG9jYWwgc3Rh Z2luZyBhcmVhCisgICAgICogdG8gYXZvaWQgZmlyaW5nIHRoZSBCVUdfT04oSU9QTCkgY2hlY2sg aW4gYXJjaF9nZXRfaW5mb19ndWVzdC4KKyAgICAgKi8KKyAgICBpZiAoIHVubGlrZWx5KF9fZ2V0 X3VzZXIoZWZsYWdzLCAodTMyICopcmVncy0+cnNwICsgMykpICkKKyAgICB7CisgICAgICAgIGRv bWFpbl9jcmFzaCh2LT5kb21haW4pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBp ZiAoIFZNX0FTU0lTVCh2LT5kb21haW4sIGFyY2hpdGVjdHVyYWxfaW9wbCkgKQorICAgICAgICB2 LT5hcmNoLnB2X3ZjcHUuaW9wbCA9IGVmbGFncyAmIFg4Nl9FRkxBR1NfSU9QTDsKKworICAgIHJl Z3MtPmVmbGFncyA9IChlZmxhZ3MgJiB+WDg2X0VGTEFHU19JT1BMKSB8IFg4Nl9FRkxBR1NfSUY7 CisKKyAgICBpZiAoIHVubGlrZWx5KGVmbGFncyAmIFg4Nl9FRkxBR1NfVk0pICkKKyAgICB7Cisg ICAgICAgIC8qCisgICAgICAgICAqIENhbm5vdCByZXR1cm4gdG8gVk04NiBtb2RlOiBpbmplY3Qg YSBHUCBmYXVsdCBpbnN0ZWFkLiBOb3RlIHRoYXQKKyAgICAgICAgICogdGhlIEdQIGZhdWx0IGlz IHJlcG9ydGVkIG9uIHRoZSBmaXJzdCBWTTg2IG1vZGUgaW5zdHJ1Y3Rpb24sIG5vdCBvbgorICAg ICAgICAgKiB0aGUgSVJFVCAod2hpY2ggaXMgd2h5IHdlIGNhbiBzaW1wbHkgbGVhdmUgdGhlIHN0 YWNrIGZyYW1lIGFzLWlzCisgICAgICAgICAqIChleGNlcHQgZm9yIHBlcmhhcHMgaGF2aW5nIHRv IGNvcHkgaXQpLCB3aGljaCBpbiB0dXJuIHNlZW1zIGJldHRlcgorICAgICAgICAgKiB0aGFuIHRl YWNoaW5nIGNyZWF0ZV9ib3VuY2VfZnJhbWUoKSB0byBuZWVkbGVzc2x5IGRlYWwgd2l0aCB2bTg2 CisgICAgICAgICAqIG1vZGUgZnJhbWVzKS4KKyAgICAgICAgICovCisgICAgICAgIGNvbnN0IHN0 cnVjdCB0cmFwX2luZm8gKnRpOworICAgICAgICB1MzIgeCwga3NwID0gdi0+YXJjaC5wdl92Y3B1 Lmtlcm5lbF9zcCAtIDQwOworICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgaW50IHJj ID0gMDsKKworICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAiVk04NiBtb2RlIHVuYXZhaWxh YmxlIChrc3A6JTA4WC0+JTA4WClcbiIsCisgICAgICAgICAgICAgICAgIHJlZ3MtPmVzcCwga3Nw KTsKKyAgICAgICAgaWYgKCBrc3AgPCByZWdzLT5lc3AgKQorICAgICAgICB7CisgICAgICAgICAg ICBmb3IgKGkgPSAxOyBpIDwgMTA7ICsraSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICByYyB8PSBfX2dldF91c2VyKHgsICh1MzIgKilyZWdzLT5yc3AgKyBpKTsKKyAgICAgICAgICAg ICAgICByYyB8PSBfX3B1dF91c2VyKHgsICh1MzIgKikodW5zaWduZWQgbG9uZylrc3AgKyBpKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgga3NwID4gcmVncy0+ ZXNwICkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICggaSA9IDk7IGkgPiAwOyAtLWkgKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJjIHw9IF9fZ2V0X3VzZXIoeCwgKHUzMiAq KXJlZ3MtPnJzcCArIGkpOworICAgICAgICAgICAgICAgIHJjIHw9IF9fcHV0X3VzZXIoeCwgKHUz MiAqKSh1bnNpZ25lZCBsb25nKWtzcCArIGkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg ICAgICAgIGlmICggcmMgKQorICAgICAgICB7CisgICAgICAgICAgICBkb21haW5fY3Jhc2godi0+ ZG9tYWluKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJlZ3Mt PmVzcCA9IGtzcDsKKyAgICAgICAgcmVncy0+c3MgPSB2LT5hcmNoLnB2X3ZjcHUua2VybmVsX3Nz OworCisgICAgICAgIHRpID0gJnYtPmFyY2gucHZfdmNwdS50cmFwX2N0eHRbVFJBUF9ncF9mYXVs dF07CisgICAgICAgIGlmICggVElfR0VUX0lGKHRpKSApCisgICAgICAgICAgICBlZmxhZ3MgJj0g flg4Nl9FRkxBR1NfSUY7CisgICAgICAgIHJlZ3MtPmVmbGFncyAmPSB+KFg4Nl9FRkxBR1NfVk18 WDg2X0VGTEFHU19SRnwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0VGTEFHU19OVHxY ODZfRUZMQUdTX1RGKTsKKyAgICAgICAgaWYgKCB1bmxpa2VseShfX3B1dF91c2VyKDAsICh1MzIg KilyZWdzLT5yc3ApKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvbWFpbl9jcmFzaCh2LT5k b21haW4pOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmVncy0+ ZWlwID0gdGktPmFkZHJlc3M7CisgICAgICAgIHJlZ3MtPmNzID0gdGktPmNzOworICAgIH0KKyAg ICBlbHNlIGlmICggdW5saWtlbHkocmluZ18wKHJlZ3MpKSApCisgICAgeworICAgICAgICBkb21h aW5fY3Jhc2godi0+ZG9tYWluKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2Ug aWYgKCByaW5nXzEocmVncykgKQorICAgICAgICByZWdzLT5lc3AgKz0gMTY7CisgICAgLyogUmV0 dXJuIHRvIHJpbmcgMi8zOiByZXN0b3JlIEVTUCBhbmQgU1MuICovCisgICAgZWxzZSBpZiAoIF9f Z2V0X3VzZXIocmVncy0+c3MsICh1MzIgKilyZWdzLT5yc3AgKyA1KSB8fAorICAgICAgICAgICAg ICBfX2dldF91c2VyKHJlZ3MtPmVzcCwgKHUzMiAqKXJlZ3MtPnJzcCArIDQpICkKKyAgICB7Cisg ICAgICAgIGRvbWFpbl9jcmFzaCh2LT5kb21haW4pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9 CisKKyAgICAvKiBSZXN0b3JlIHVwY2FsbCBtYXNrIGZyb20gc3VwcGxpZWQgRUZMQUdTLklGLiAq LworICAgIHZjcHVfaW5mbyh2LCBldnRjaG5fdXBjYWxsX21hc2spID0gIShlZmxhZ3MgJiBYODZf RUZMQUdTX0lGKTsKKworICAgIGFzeW5jX2V4Y2VwdGlvbl9jbGVhbnVwKHYpOworCisgICAgLyoK KyAgICAgKiBUaGUgaHlwZXJjYWxsIGV4aXQgcGF0aCB3aWxsIG92ZXJ3cml0ZSBFQVggd2l0aCB0 aGlzIHJldHVybgorICAgICAqIHZhbHVlLgorICAgICAqLworICAgIHJldHVybiByZWdzLT5lYXg7 Cit9CisKK3N0YXRpYyBsb25nIGNvbXBhdF9yZWdpc3Rlcl9ndWVzdF9jYWxsYmFjaygKKyAgICBz dHJ1Y3QgY29tcGF0X2NhbGxiYWNrX3JlZ2lzdGVyICpyZWcpCit7CisgICAgbG9uZyByZXQgPSAw OworICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKKworICAgIGZpeHVwX2d1ZXN0X2NvZGVf c2VsZWN0b3Iodi0+ZG9tYWluLCByZWctPmFkZHJlc3MuY3MpOworCisgICAgc3dpdGNoICggcmVn LT50eXBlICkKKyAgICB7CisgICAgY2FzZSBDQUxMQkFDS1RZUEVfZXZlbnQ6CisgICAgICAgIHYt PmFyY2gucHZfdmNwdS5ldmVudF9jYWxsYmFja19jcyAgICAgPSByZWctPmFkZHJlc3MuY3M7Cisg ICAgICAgIHYtPmFyY2gucHZfdmNwdS5ldmVudF9jYWxsYmFja19laXAgICAgPSByZWctPmFkZHJl c3MuZWlwOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ0FMTEJBQ0tUWVBFX2ZhaWxzYWZl OgorICAgICAgICB2LT5hcmNoLnB2X3ZjcHUuZmFpbHNhZmVfY2FsbGJhY2tfY3MgID0gcmVnLT5h ZGRyZXNzLmNzOworICAgICAgICB2LT5hcmNoLnB2X3ZjcHUuZmFpbHNhZmVfY2FsbGJhY2tfZWlw ID0gcmVnLT5hZGRyZXNzLmVpcDsKKyAgICAgICAgaWYgKCByZWctPmZsYWdzICYgQ0FMTEJBQ0tG X21hc2tfZXZlbnRzICkKKyAgICAgICAgICAgIHNldF9iaXQoX1ZHQ0ZfZmFpbHNhZmVfZGlzYWJs ZXNfZXZlbnRzLAorICAgICAgICAgICAgICAgICAgICAmdi0+YXJjaC52Z2NfZmxhZ3MpOworICAg ICAgICBlbHNlCisgICAgICAgICAgICBjbGVhcl9iaXQoX1ZHQ0ZfZmFpbHNhZmVfZGlzYWJsZXNf ZXZlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICZ2LT5hcmNoLnZnY19mbGFncyk7CisgICAg ICAgIGJyZWFrOworCisgICAgY2FzZSBDQUxMQkFDS1RZUEVfc3lzY2FsbDMyOgorICAgICAgICB2 LT5hcmNoLnB2X3ZjcHUuc3lzY2FsbDMyX2NhbGxiYWNrX2NzICAgICA9IHJlZy0+YWRkcmVzcy5j czsKKyAgICAgICAgdi0+YXJjaC5wdl92Y3B1LnN5c2NhbGwzMl9jYWxsYmFja19laXAgICAgPSBy ZWctPmFkZHJlc3MuZWlwOworICAgICAgICB2LT5hcmNoLnB2X3ZjcHUuc3lzY2FsbDMyX2Rpc2Fi bGVzX2V2ZW50cyA9CisgICAgICAgICAgICAocmVnLT5mbGFncyAmIENBTExCQUNLRl9tYXNrX2V2 ZW50cykgIT0gMDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENBTExCQUNLVFlQRV9zeXNl bnRlcjoKKyAgICAgICAgdi0+YXJjaC5wdl92Y3B1LnN5c2VudGVyX2NhbGxiYWNrX2NzICAgICA9 IHJlZy0+YWRkcmVzcy5jczsKKyAgICAgICAgdi0+YXJjaC5wdl92Y3B1LnN5c2VudGVyX2NhbGxi YWNrX2VpcCAgICA9IHJlZy0+YWRkcmVzcy5laXA7CisgICAgICAgIHYtPmFyY2gucHZfdmNwdS5z eXNlbnRlcl9kaXNhYmxlc19ldmVudHMgPQorICAgICAgICAgICAgKHJlZy0+ZmxhZ3MgJiBDQUxM QkFDS0ZfbWFza19ldmVudHMpICE9IDA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDQUxM QkFDS1RZUEVfbm1pOgorICAgICAgICByZXQgPSByZWdpc3Rlcl9ndWVzdF9ubWlfY2FsbGJhY2so cmVnLT5hZGRyZXNzLmVpcCk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAg ICAgcmV0ID0gLUVOT1NZUzsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJl dDsKK30KKworc3RhdGljIGxvbmcgY29tcGF0X3VucmVnaXN0ZXJfZ3Vlc3RfY2FsbGJhY2soCisg ICAgc3RydWN0IGNvbXBhdF9jYWxsYmFja191bnJlZ2lzdGVyICp1bnJlZykKK3sKKyAgICBsb25n IHJldDsKKworICAgIHN3aXRjaCAoIHVucmVnLT50eXBlICkKKyAgICB7CisgICAgY2FzZSBDQUxM QkFDS1RZUEVfZXZlbnQ6CisgICAgY2FzZSBDQUxMQkFDS1RZUEVfZmFpbHNhZmU6CisgICAgY2Fz ZSBDQUxMQkFDS1RZUEVfc3lzY2FsbDMyOgorICAgIGNhc2UgQ0FMTEJBQ0tUWVBFX3N5c2VudGVy OgorICAgICAgICByZXQgPSAtRUlOVkFMOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ0FM TEJBQ0tUWVBFX25taToKKyAgICAgICAgcmV0ID0gdW5yZWdpc3Rlcl9ndWVzdF9ubWlfY2FsbGJh Y2soKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICByZXQgPSAtRU5P U1lTOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCisKK2xv bmcgY29tcGF0X2NhbGxiYWNrX29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkgYXJn KQoreworICAgIGxvbmcgcmV0OworCisgICAgc3dpdGNoICggY21kICkKKyAgICB7CisgICAgY2Fz ZSBDQUxMQkFDS09QX3JlZ2lzdGVyOgorICAgIHsKKyAgICAgICAgc3RydWN0IGNvbXBhdF9jYWxs YmFja19yZWdpc3RlciByZWc7CisKKyAgICAgICAgcmV0ID0gLUVGQVVMVDsKKyAgICAgICAgaWYg KCBjb3B5X2Zyb21fZ3Vlc3QoJnJlZywgYXJnLCAxKSApCisgICAgICAgICAgICBicmVhazsKKwor ICAgICAgICByZXQgPSBjb21wYXRfcmVnaXN0ZXJfZ3Vlc3RfY2FsbGJhY2soJnJlZyk7CisgICAg fQorICAgIGJyZWFrOworCisgICAgY2FzZSBDQUxMQkFDS09QX3VucmVnaXN0ZXI6CisgICAgewor ICAgICAgICBzdHJ1Y3QgY29tcGF0X2NhbGxiYWNrX3VucmVnaXN0ZXIgdW5yZWc7CisKKyAgICAg ICAgcmV0ID0gLUVGQVVMVDsKKyAgICAgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJnVucmVnLCBh cmcsIDEpICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHJldCA9IGNvbXBhdF91bnJl Z2lzdGVyX2d1ZXN0X2NhbGxiYWNrKCZ1bnJlZyk7CisgICAgfQorICAgIGJyZWFrOworCisgICAg ZGVmYXVsdDoKKyAgICAgICAgcmV0ID0gLUVJTlZBTDsKKyAgICAgICAgYnJlYWs7CisgICAgfQor CisgICAgcmV0dXJuIHJldDsKK30KKworbG9uZyBjb21wYXRfc2V0X2NhbGxiYWNrcyh1bnNpZ25l ZCBsb25nIGV2ZW50X3NlbGVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIGV2ZW50X2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgZmFpbHNhZmVfc2VsZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgZmFpbHNhZmVfYWRkcmVzcykKK3sKKyAgICBzdHJ1Y3QgY29tcGF0X2NhbGxiYWNr X3JlZ2lzdGVyIGV2ZW50ID0geworICAgICAgICAudHlwZSA9IENBTExCQUNLVFlQRV9ldmVudCwK KyAgICAgICAgLmFkZHJlc3MgPSB7CisgICAgICAgICAgICAuY3MgPSBldmVudF9zZWxlY3RvciwK KyAgICAgICAgICAgIC5laXAgPSBldmVudF9hZGRyZXNzCisgICAgICAgIH0KKyAgICB9OworICAg IHN0cnVjdCBjb21wYXRfY2FsbGJhY2tfcmVnaXN0ZXIgZmFpbHNhZmUgPSB7CisgICAgICAgIC50 eXBlID0gQ0FMTEJBQ0tUWVBFX2ZhaWxzYWZlLAorICAgICAgICAuYWRkcmVzcyA9IHsKKyAgICAg ICAgICAgIC5jcyA9IGZhaWxzYWZlX3NlbGVjdG9yLAorICAgICAgICAgICAgLmVpcCA9IGZhaWxz YWZlX2FkZHJlc3MKKyAgICAgICAgfQorICAgIH07CisKKyAgICBjb21wYXRfcmVnaXN0ZXJfZ3Vl c3RfY2FsbGJhY2soJmV2ZW50KTsKKyAgICBjb21wYXRfcmVnaXN0ZXJfZ3Vlc3RfY2FsbGJhY2so JmZhaWxzYWZlKTsKKworICAgIHJldHVybiAwOworfQorCitpbnQgY29tcGF0X3NldF90cmFwX3Rh YmxlKFhFTl9HVUVTVF9IQU5ETEUodHJhcF9pbmZvX2NvbXBhdF90KSB0cmFwcykKK3sKKyAgICBz dHJ1Y3QgY29tcGF0X3RyYXBfaW5mbyBjdXI7CisgICAgc3RydWN0IHRyYXBfaW5mbyAqZHN0ID0g Y3VycmVudC0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4dDsKKyAgICBsb25nIHJjID0gMDsKKworICAg IC8qIElmIG5vIHRhYmxlIGlzIHByZXNlbnRlZCB0aGVuIGNsZWFyIHRoZSBlbnRpcmUgdmlydHVh bCBJRFQuICovCisgICAgaWYgKCBndWVzdF9oYW5kbGVfaXNfbnVsbCh0cmFwcykgKQorICAgIHsK KyAgICAgICAgbWVtc2V0KGRzdCwgMCwgTlJfVkVDVE9SUyAqIHNpemVvZigqZHN0KSk7CisgICAg ICAgIHJldHVybiAwOworICAgIH0KKworICAgIGZvciAoIDsgOyApCisgICAgeworICAgICAgICBp ZiAoIGNvcHlfZnJvbV9ndWVzdCgmY3VyLCB0cmFwcywgMSkgKQorICAgICAgICB7CisgICAgICAg ICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg ICAgIGlmICggY3VyLmFkZHJlc3MgPT0gMCApCisgICAgICAgICAgICBicmVhazsKKworICAgICAg ICBmaXh1cF9ndWVzdF9jb2RlX3NlbGVjdG9yKGN1cnJlbnQtPmRvbWFpbiwgY3VyLmNzKTsKKwor ICAgICAgICBYTEFUX3RyYXBfaW5mbyhkc3QgKyBjdXIudmVjdG9yLCAmY3VyKTsKKworICAgICAg ICBpZiAoIGN1ci52ZWN0b3IgPT0gMHg4MCApCisgICAgICAgICAgICBpbml0X2ludDgwX2RpcmVj dF90cmFwKGN1cnJlbnQpOworCisgICAgICAgIGd1ZXN0X2hhbmRsZV9hZGRfb2Zmc2V0KHRyYXBz LCAxKTsKKworICAgICAgICBpZiAoIGh5cGVyY2FsbF9wcmVlbXB0X2NoZWNrKCkgKQorICAgICAg ICB7CisgICAgICAgICAgICByYyA9IGh5cGVyY2FsbF9jcmVhdGVfY29udGludWF0aW9uKAorICAg ICAgICAgICAgICAgIF9fSFlQRVJWSVNPUl9zZXRfdHJhcF90YWJsZSwgImgiLCB0cmFwcyk7Cisg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByYzsKK30K Kwordm9pZCBoeXBlcmNhbGxfcGFnZV9pbml0aWFsaXNlX3JpbmcxX2tlcm5lbCh2b2lkICpoeXBl cmNhbGxfcGFnZSkKK3sKKyAgICBjaGFyICpwOworICAgIGludCBpOworCisgICAgLyogRmlsbCBp biBhbGwgdGhlIHRyYW5zZmVyIHBvaW50cyB3aXRoIHRlbXBsYXRlIG1hY2hpbmUgY29kZS4gKi8K KworICAgIGZvciAoIGkgPSAwOyBpIDwgKFBBR0VfU0laRSAvIDMyKTsgaSsrICkKKyAgICB7Cisg ICAgICAgIGlmICggaSA9PSBfX0hZUEVSVklTT1JfaXJldCApCisgICAgICAgICAgICBjb250aW51 ZTsKKworICAgICAgICBwID0gKGNoYXIgKikoaHlwZXJjYWxsX3BhZ2UgKyAoaSAqIDMyKSk7Cisg ICAgICAgICoodTggICopKHArIDApID0gMHhiODsgICAgLyogbW92ICAkPGk+LCVlYXggKi8KKyAg ICAgICAgKih1MzIgKikocCsgMSkgPSBpOworICAgICAgICAqKHUxNiAqKShwKyA1KSA9IChIWVBF UkNBTExfVkVDVE9SIDw8IDgpIHwgMHhjZDsgLyogaW50ICAkeHggKi8KKyAgICAgICAgKih1OCAg KikocCsgNykgPSAweGMzOyAgICAvKiByZXQgKi8KKyAgICB9CisKKyAgICAvKgorICAgICAqIEhZ UEVSVklTT1JfaXJldCBpcyBzcGVjaWFsIGJlY2F1c2UgaXQgZG9lc24ndCByZXR1cm4gYW5kIGV4 cGVjdHMgYQorICAgICAqIHNwZWNpYWwgc3RhY2sgZnJhbWUuIEd1ZXN0cyBqdW1wIGF0IHRoaXMg dHJhbnNmZXIgcG9pbnQgaW5zdGVhZCBvZgorICAgICAqIGNhbGxpbmcgaXQuCisgICAgICovCisg ICAgcCA9IChjaGFyICopKGh5cGVyY2FsbF9wYWdlICsgKF9fSFlQRVJWSVNPUl9pcmV0ICogMzIp KTsKKyAgICAqKHU4ICAqKShwKyAwKSA9IDB4NTA7ICAgIC8qIHB1c2ggJWVheCAqLworICAgICoo dTggICopKHArIDEpID0gMHhiODsgICAgLyogbW92ICAkX19IWVBFUlZJU09SX2lyZXQsJWVheCAq LworICAgICoodTMyICopKHArIDIpID0gX19IWVBFUlZJU09SX2lyZXQ7CisgICAgKih1MTYgKiko cCsgNikgPSAoSFlQRVJDQUxMX1ZFQ1RPUiA8PCA4KSB8IDB4Y2Q7IC8qIGludCAgJHh4ICovCit9 CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYveDg2XzY0L2NvbXBhdC90cmFwcy5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9jb21w YXQvdHJhcHMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU5YTExY2NiMC4uMDAw MDAwMDAwMAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L2NvbXBhdC90cmFwcy5jCisrKyAvZGV2 L251bGwKQEAgLTEsNDE1ICswLDAgQEAKLSNpbmNsdWRlIDx4ZW4vZXZlbnQuaD4KLSNpbmNsdWRl IDxhc20vcmVncy5oPgotI2luY2x1ZGUgPGNvbXBhdC9jYWxsYmFjay5oPgotI2luY2x1ZGUgPGNv bXBhdC9hcmNoLXg4Nl8zMi5oPgotCi12b2lkIGNvbXBhdF9zaG93X2d1ZXN0X3N0YWNrKHN0cnVj dCB2Y3B1ICp2LCBjb25zdCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGRlYnVnX3N0YWNrX2xpbmVzKQotewotICAgIHVuc2lnbmVk IGludCBpLCAqc3RhY2ssIGFkZHIsIG1hc2sgPSBTVEFDS19TSVpFOwotCi0gICAgc3RhY2sgPSAo dW5zaWduZWQgaW50ICopKHVuc2lnbmVkIGxvbmcpcmVncy0+ZXNwOwotICAgIHByaW50aygiR3Vl c3Qgc3RhY2sgdHJhY2UgZnJvbSBlc3A9JTA4bHg6XG4gIiwgKHVuc2lnbmVkIGxvbmcpc3RhY2sp OwotCi0gICAgaWYgKCAhX19jb21wYXRfYWNjZXNzX29rKHYtPmRvbWFpbiwgc3RhY2ssIHNpemVv Zigqc3RhY2spKSApCi0gICAgewotICAgICAgICBwcmludGsoIkd1ZXN0LWluYWNjZXNzaWJsZSBt ZW1vcnkuXG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICggdiAhPSBjdXJy ZW50ICkKLSAgICB7Ci0gICAgICAgIHN0cnVjdCB2Y3B1ICp2Y3B1OwotICAgICAgICB1bnNpZ25l ZCBsb25nIG1mbjsKLQotICAgICAgICBBU1NFUlQoZ3Vlc3Rfa2VybmVsX21vZGUodiwgcmVncykp OwotICAgICAgICBtZm4gPSByZWFkX2NyMygpID4+IFBBR0VfU0hJRlQ7Ci0gICAgICAgIGZvcl9l YWNoX3ZjcHUoIHYtPmRvbWFpbiwgdmNwdSApCi0gICAgICAgICAgICBpZiAoIHBhZ2V0YWJsZV9n ZXRfcGZuKHZjcHUtPmFyY2guZ3Vlc3RfdGFibGUpID09IG1mbiApCi0gICAgICAgICAgICAgICAg YnJlYWs7Ci0gICAgICAgIGlmICggIXZjcHUgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGFj ayA9IGRvX3BhZ2Vfd2Fsayh2LCAodW5zaWduZWQgbG9uZylzdGFjayk7Ci0gICAgICAgICAgICBp ZiAoICh1bnNpZ25lZCBsb25nKXN0YWNrIDwgUEFHRV9TSVpFICkKLSAgICAgICAgICAgIHsKLSAg ICAgICAgICAgICAgICBwcmludGsoIkluYWNjZXNzaWJsZSBndWVzdCBtZW1vcnkuXG4iKTsKLSAg ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtYXNrID0g UEFHRV9TSVpFOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZm9yICggaSA9IDA7IGkgPCBkZWJ1 Z19zdGFja19saW5lcyAqIDg7IGkrKyApCi0gICAgewotICAgICAgICBpZiAoICgoKGxvbmcpc3Rh Y2sgLSAxKSBeICgobG9uZykoc3RhY2sgKyAxKSAtIDEpKSAmIG1hc2sgKQotICAgICAgICAgICAg YnJlYWs7Ci0gICAgICAgIGlmICggX19nZXRfdXNlcihhZGRyLCBzdGFjaykgKQotICAgICAgICB7 Ci0gICAgICAgICAgICBpZiAoIGkgIT0gMCApCi0gICAgICAgICAgICAgICAgcHJpbnRrKCJcbiAg ICAiKTsKLSAgICAgICAgICAgIHByaW50aygiRmF1bHQgd2hpbGUgYWNjZXNzaW5nIGd1ZXN0IG1l bW9yeS4iKTsKLSAgICAgICAgICAgIGkgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg IH0KLSAgICAgICAgaWYgKCAoaSAhPSAwKSAmJiAoKGkgJSA4KSA9PSAwKSApCi0gICAgICAgICAg ICBwcmludGsoIlxuICIpOwotICAgICAgICBwcmludGsoIiAlMDh4IiwgYWRkcik7Ci0gICAgICAg IHN0YWNrKys7Ci0gICAgfQotICAgIGlmICggbWFzayA9PSBQQUdFX1NJWkUgKQotICAgIHsKLSAg ICAgICAgQlVJTERfQlVHX09OKFBBR0VfU0laRSA9PSBTVEFDS19TSVpFKTsKLSAgICAgICAgdW5t YXBfZG9tYWluX3BhZ2Uoc3RhY2spOwotICAgIH0KLSAgICBpZiAoIGkgPT0gMCApCi0gICAgICAg IHByaW50aygiU3RhY2sgZW1wdHkuIik7Ci0gICAgcHJpbnRrKCJcbiIpOwotfQotCi11bnNpZ25l ZCBpbnQgY29tcGF0X2lyZXQodm9pZCkKLXsKLSAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVn cyA9IGd1ZXN0X2NwdV91c2VyX3JlZ3MoKTsKLSAgICBzdHJ1Y3QgdmNwdSAqdiA9IGN1cnJlbnQ7 Ci0gICAgdTMyIGVmbGFnczsKLQotICAgIC8qIFRyaW0gc3RhY2sgcG9pbnRlciB0byAzMiBiaXRz LiAqLwotICAgIHJlZ3MtPnJzcCA9ICh1MzIpcmVncy0+cnNwOwotCi0gICAgLyogUmVzdG9yZSBF QVggKGNsb2JiZXJlZCBieSBoeXBlcmNhbGwpLiAqLwotICAgIGlmICggdW5saWtlbHkoX19nZXRf dXNlcihyZWdzLT5lYXgsICh1MzIgKilyZWdzLT5yc3ApKSApCi0gICAgewotICAgICAgICBkb21h aW5fY3Jhc2godi0+ZG9tYWluKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLyog UmVzdG9yZSBDUyBhbmQgRUlQLiAqLwotICAgIGlmICggdW5saWtlbHkoX19nZXRfdXNlcihyZWdz LT5laXAsICh1MzIgKilyZWdzLT5yc3AgKyAxKSkgfHwKLSAgICAgICAgdW5saWtlbHkoX19nZXRf dXNlcihyZWdzLT5jcywgKHUzMiAqKXJlZ3MtPnJzcCArIDIpKSApCi0gICAgewotICAgICAgICBk b21haW5fY3Jhc2godi0+ZG9tYWluKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAg LyoKLSAgICAgKiBGaXggdXAgYW5kIHJlc3RvcmUgRUZMQUdTLiBXZSBmaXggdXAgaW4gYSBsb2Nh bCBzdGFnaW5nIGFyZWEKLSAgICAgKiB0byBhdm9pZCBmaXJpbmcgdGhlIEJVR19PTihJT1BMKSBj aGVjayBpbiBhcmNoX2dldF9pbmZvX2d1ZXN0LgotICAgICAqLwotICAgIGlmICggdW5saWtlbHko X19nZXRfdXNlcihlZmxhZ3MsICh1MzIgKilyZWdzLT5yc3AgKyAzKSkgKQotICAgIHsKLSAgICAg ICAgZG9tYWluX2NyYXNoKHYtPmRvbWFpbik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQot ICAgIGlmICggVk1fQVNTSVNUKHYtPmRvbWFpbiwgYXJjaGl0ZWN0dXJhbF9pb3BsKSApCi0gICAg ICAgIHYtPmFyY2gucHZfdmNwdS5pb3BsID0gZWZsYWdzICYgWDg2X0VGTEFHU19JT1BMOwotCi0g ICAgcmVncy0+ZWZsYWdzID0gKGVmbGFncyAmIH5YODZfRUZMQUdTX0lPUEwpIHwgWDg2X0VGTEFH U19JRjsKLQotICAgIGlmICggdW5saWtlbHkoZWZsYWdzICYgWDg2X0VGTEFHU19WTSkgKQotICAg IHsKLSAgICAgICAgLyoKLSAgICAgICAgICogQ2Fubm90IHJldHVybiB0byBWTTg2IG1vZGU6IGlu amVjdCBhIEdQIGZhdWx0IGluc3RlYWQuIE5vdGUgdGhhdAotICAgICAgICAgKiB0aGUgR1AgZmF1 bHQgaXMgcmVwb3J0ZWQgb24gdGhlIGZpcnN0IFZNODYgbW9kZSBpbnN0cnVjdGlvbiwgbm90IG9u Ci0gICAgICAgICAqIHRoZSBJUkVUICh3aGljaCBpcyB3aHkgd2UgY2FuIHNpbXBseSBsZWF2ZSB0 aGUgc3RhY2sgZnJhbWUgYXMtaXMKLSAgICAgICAgICogKGV4Y2VwdCBmb3IgcGVyaGFwcyBoYXZp bmcgdG8gY29weSBpdCksIHdoaWNoIGluIHR1cm4gc2VlbXMgYmV0dGVyCi0gICAgICAgICAqIHRo YW4gdGVhY2hpbmcgY3JlYXRlX2JvdW5jZV9mcmFtZSgpIHRvIG5lZWRsZXNzbHkgZGVhbCB3aXRo IHZtODYKLSAgICAgICAgICogbW9kZSBmcmFtZXMpLgotICAgICAgICAgKi8KLSAgICAgICAgY29u c3Qgc3RydWN0IHRyYXBfaW5mbyAqdGk7Ci0gICAgICAgIHUzMiB4LCBrc3AgPSB2LT5hcmNoLnB2 X3ZjcHUua2VybmVsX3NwIC0gNDA7Ci0gICAgICAgIHVuc2lnbmVkIGludCBpOwotICAgICAgICBp bnQgcmMgPSAwOwotCi0gICAgICAgIGdkcHJpbnRrKFhFTkxPR19FUlIsICJWTTg2IG1vZGUgdW5h dmFpbGFibGUgKGtzcDolMDhYLT4lMDhYKVxuIiwKLSAgICAgICAgICAgICAgICAgcmVncy0+ZXNw LCBrc3ApOwotICAgICAgICBpZiAoIGtzcCA8IHJlZ3MtPmVzcCApCi0gICAgICAgIHsKLSAgICAg ICAgICAgIGZvciAoaSA9IDE7IGkgPCAxMDsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAg ICAgICAgIHJjIHw9IF9fZ2V0X3VzZXIoeCwgKHUzMiAqKXJlZ3MtPnJzcCArIGkpOwotICAgICAg ICAgICAgICAgIHJjIHw9IF9fcHV0X3VzZXIoeCwgKHUzMiAqKSh1bnNpZ25lZCBsb25nKWtzcCAr IGkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCBrc3AgPiBy ZWdzLT5lc3AgKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKCBpID0gOTsgaSA+IDA7IC0t aSApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmMgfD0gX19nZXRfdXNlcih4LCAo dTMyICopcmVncy0+cnNwICsgaSk7Ci0gICAgICAgICAgICAgICAgcmMgfD0gX19wdXRfdXNlcih4 LCAodTMyICopKHVuc2lnbmVkIGxvbmcpa3NwICsgaSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg IH0KLSAgICAgICAgaWYgKCByYyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRvbWFpbl9jcmFz aCh2LT5kb21haW4pOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAg cmVncy0+ZXNwID0ga3NwOwotICAgICAgICByZWdzLT5zcyA9IHYtPmFyY2gucHZfdmNwdS5rZXJu ZWxfc3M7Ci0KLSAgICAgICAgdGkgPSAmdi0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4dFtUUkFQX2dw X2ZhdWx0XTsKLSAgICAgICAgaWYgKCBUSV9HRVRfSUYodGkpICkKLSAgICAgICAgICAgIGVmbGFn cyAmPSB+WDg2X0VGTEFHU19JRjsKLSAgICAgICAgcmVncy0+ZWZsYWdzICY9IH4oWDg2X0VGTEFH U19WTXxYODZfRUZMQUdTX1JGfAotICAgICAgICAgICAgICAgICAgICAgICAgICBYODZfRUZMQUdT X05UfFg4Nl9FRkxBR1NfVEYpOwotICAgICAgICBpZiAoIHVubGlrZWx5KF9fcHV0X3VzZXIoMCwg KHUzMiAqKXJlZ3MtPnJzcCkpICkKLSAgICAgICAgewotICAgICAgICAgICAgZG9tYWluX2NyYXNo KHYtPmRvbWFpbik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBy ZWdzLT5laXAgPSB0aS0+YWRkcmVzczsKLSAgICAgICAgcmVncy0+Y3MgPSB0aS0+Y3M7Ci0gICAg fQotICAgIGVsc2UgaWYgKCB1bmxpa2VseShyaW5nXzAocmVncykpICkKLSAgICB7Ci0gICAgICAg IGRvbWFpbl9jcmFzaCh2LT5kb21haW4pOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAg ZWxzZSBpZiAoIHJpbmdfMShyZWdzKSApCi0gICAgICAgIHJlZ3MtPmVzcCArPSAxNjsKLSAgICAv KiBSZXR1cm4gdG8gcmluZyAyLzM6IHJlc3RvcmUgRVNQIGFuZCBTUy4gKi8KLSAgICBlbHNlIGlm ICggX19nZXRfdXNlcihyZWdzLT5zcywgKHUzMiAqKXJlZ3MtPnJzcCArIDUpIHx8Ci0gICAgICAg ICAgICAgIF9fZ2V0X3VzZXIocmVncy0+ZXNwLCAodTMyICopcmVncy0+cnNwICsgNCkgKQotICAg IHsKLSAgICAgICAgZG9tYWluX2NyYXNoKHYtPmRvbWFpbik7Ci0gICAgICAgIHJldHVybiAwOwot ICAgIH0KLQotICAgIC8qIFJlc3RvcmUgdXBjYWxsIG1hc2sgZnJvbSBzdXBwbGllZCBFRkxBR1Mu SUYuICovCi0gICAgdmNwdV9pbmZvKHYsIGV2dGNobl91cGNhbGxfbWFzaykgPSAhKGVmbGFncyAm IFg4Nl9FRkxBR1NfSUYpOwotCi0gICAgYXN5bmNfZXhjZXB0aW9uX2NsZWFudXAodik7Ci0KLSAg ICAvKgotICAgICAqIFRoZSBoeXBlcmNhbGwgZXhpdCBwYXRoIHdpbGwgb3ZlcndyaXRlIEVBWCB3 aXRoIHRoaXMgcmV0dXJuCi0gICAgICogdmFsdWUuCi0gICAgICovCi0gICAgcmV0dXJuIHJlZ3Mt PmVheDsKLX0KLQotc3RhdGljIGxvbmcgY29tcGF0X3JlZ2lzdGVyX2d1ZXN0X2NhbGxiYWNrKAot ICAgIHN0cnVjdCBjb21wYXRfY2FsbGJhY2tfcmVnaXN0ZXIgKnJlZykKLXsKLSAgICBsb25nIHJl dCA9IDA7Ci0gICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OwotCi0gICAgZml4dXBfZ3Vlc3Rf Y29kZV9zZWxlY3Rvcih2LT5kb21haW4sIHJlZy0+YWRkcmVzcy5jcyk7Ci0KLSAgICBzd2l0Y2gg KCByZWctPnR5cGUgKQotICAgIHsKLSAgICBjYXNlIENBTExCQUNLVFlQRV9ldmVudDoKLSAgICAg ICAgdi0+YXJjaC5wdl92Y3B1LmV2ZW50X2NhbGxiYWNrX2NzICAgICA9IHJlZy0+YWRkcmVzcy5j czsKLSAgICAgICAgdi0+YXJjaC5wdl92Y3B1LmV2ZW50X2NhbGxiYWNrX2VpcCAgICA9IHJlZy0+ YWRkcmVzcy5laXA7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDQUxMQkFDS1RZUEVfZmFp bHNhZmU6Ci0gICAgICAgIHYtPmFyY2gucHZfdmNwdS5mYWlsc2FmZV9jYWxsYmFja19jcyAgPSBy ZWctPmFkZHJlc3MuY3M7Ci0gICAgICAgIHYtPmFyY2gucHZfdmNwdS5mYWlsc2FmZV9jYWxsYmFj a19laXAgPSByZWctPmFkZHJlc3MuZWlwOwotICAgICAgICBpZiAoIHJlZy0+ZmxhZ3MgJiBDQUxM QkFDS0ZfbWFza19ldmVudHMgKQotICAgICAgICAgICAgc2V0X2JpdChfVkdDRl9mYWlsc2FmZV9k aXNhYmxlc19ldmVudHMsCi0gICAgICAgICAgICAgICAgICAgICZ2LT5hcmNoLnZnY19mbGFncyk7 Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNsZWFyX2JpdChfVkdDRl9mYWlsc2FmZV9kaXNh Ymxlc19ldmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgJnYtPmFyY2gudmdjX2ZsYWdzKTsK LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENBTExCQUNLVFlQRV9zeXNjYWxsMzI6Ci0gICAg ICAgIHYtPmFyY2gucHZfdmNwdS5zeXNjYWxsMzJfY2FsbGJhY2tfY3MgICAgID0gcmVnLT5hZGRy ZXNzLmNzOwotICAgICAgICB2LT5hcmNoLnB2X3ZjcHUuc3lzY2FsbDMyX2NhbGxiYWNrX2VpcCAg ICA9IHJlZy0+YWRkcmVzcy5laXA7Ci0gICAgICAgIHYtPmFyY2gucHZfdmNwdS5zeXNjYWxsMzJf ZGlzYWJsZXNfZXZlbnRzID0KLSAgICAgICAgICAgIChyZWctPmZsYWdzICYgQ0FMTEJBQ0tGX21h c2tfZXZlbnRzKSAhPSAwOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ0FMTEJBQ0tUWVBF X3N5c2VudGVyOgotICAgICAgICB2LT5hcmNoLnB2X3ZjcHUuc3lzZW50ZXJfY2FsbGJhY2tfY3Mg ICAgID0gcmVnLT5hZGRyZXNzLmNzOwotICAgICAgICB2LT5hcmNoLnB2X3ZjcHUuc3lzZW50ZXJf Y2FsbGJhY2tfZWlwICAgID0gcmVnLT5hZGRyZXNzLmVpcDsKLSAgICAgICAgdi0+YXJjaC5wdl92 Y3B1LnN5c2VudGVyX2Rpc2FibGVzX2V2ZW50cyA9Ci0gICAgICAgICAgICAocmVnLT5mbGFncyAm IENBTExCQUNLRl9tYXNrX2V2ZW50cykgIT0gMDsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl IENBTExCQUNLVFlQRV9ubWk6Ci0gICAgICAgIHJldCA9IHJlZ2lzdGVyX2d1ZXN0X25taV9jYWxs YmFjayhyZWctPmFkZHJlc3MuZWlwKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0Ogot ICAgICAgICByZXQgPSAtRU5PU1lTOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1 cm4gcmV0OwotfQotCi1zdGF0aWMgbG9uZyBjb21wYXRfdW5yZWdpc3Rlcl9ndWVzdF9jYWxsYmFj aygKLSAgICBzdHJ1Y3QgY29tcGF0X2NhbGxiYWNrX3VucmVnaXN0ZXIgKnVucmVnKQotewotICAg IGxvbmcgcmV0OwotCi0gICAgc3dpdGNoICggdW5yZWctPnR5cGUgKQotICAgIHsKLSAgICBjYXNl IENBTExCQUNLVFlQRV9ldmVudDoKLSAgICBjYXNlIENBTExCQUNLVFlQRV9mYWlsc2FmZToKLSAg ICBjYXNlIENBTExCQUNLVFlQRV9zeXNjYWxsMzI6Ci0gICAgY2FzZSBDQUxMQkFDS1RZUEVfc3lz ZW50ZXI6Ci0gICAgICAgIHJldCA9IC1FSU5WQUw7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz ZSBDQUxMQkFDS1RZUEVfbm1pOgotICAgICAgICByZXQgPSB1bnJlZ2lzdGVyX2d1ZXN0X25taV9j YWxsYmFjaygpOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldCA9 IC1FTk9TWVM7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiByZXQ7Ci19Ci0K LQotbG9uZyBjb21wYXRfY2FsbGJhY2tfb3AoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRSh2b2lk KSBhcmcpCi17Ci0gICAgbG9uZyByZXQ7Ci0KLSAgICBzd2l0Y2ggKCBjbWQgKQotICAgIHsKLSAg ICBjYXNlIENBTExCQUNLT1BfcmVnaXN0ZXI6Ci0gICAgewotICAgICAgICBzdHJ1Y3QgY29tcGF0 X2NhbGxiYWNrX3JlZ2lzdGVyIHJlZzsKLQotICAgICAgICByZXQgPSAtRUZBVUxUOwotICAgICAg ICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmcmVnLCBhcmcsIDEpICkKLSAgICAgICAgICAgIGJyZWFr OwotCi0gICAgICAgIHJldCA9IGNvbXBhdF9yZWdpc3Rlcl9ndWVzdF9jYWxsYmFjaygmcmVnKTsK LSAgICB9Ci0gICAgYnJlYWs7Ci0KLSAgICBjYXNlIENBTExCQUNLT1BfdW5yZWdpc3RlcjoKLSAg ICB7Ci0gICAgICAgIHN0cnVjdCBjb21wYXRfY2FsbGJhY2tfdW5yZWdpc3RlciB1bnJlZzsKLQot ICAgICAgICByZXQgPSAtRUZBVUxUOwotICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmdW5y ZWcsIGFyZywgMSkgKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgcmV0ID0gY29tcGF0 X3VucmVnaXN0ZXJfZ3Vlc3RfY2FsbGJhY2soJnVucmVnKTsKLSAgICB9Ci0gICAgYnJlYWs7Ci0K LSAgICBkZWZhdWx0OgotICAgICAgICByZXQgPSAtRUlOVkFMOwotICAgICAgICBicmVhazsKLSAg ICB9Ci0KLSAgICByZXR1cm4gcmV0OwotfQotCi1sb25nIGNvbXBhdF9zZXRfY2FsbGJhY2tzKHVu c2lnbmVkIGxvbmcgZXZlbnRfc2VsZWN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgZXZlbnRfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBmYWlsc2FmZV9zZWxlY3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg dW5zaWduZWQgbG9uZyBmYWlsc2FmZV9hZGRyZXNzKQotewotICAgIHN0cnVjdCBjb21wYXRfY2Fs bGJhY2tfcmVnaXN0ZXIgZXZlbnQgPSB7Ci0gICAgICAgIC50eXBlID0gQ0FMTEJBQ0tUWVBFX2V2 ZW50LAotICAgICAgICAuYWRkcmVzcyA9IHsKLSAgICAgICAgICAgIC5jcyA9IGV2ZW50X3NlbGVj dG9yLAotICAgICAgICAgICAgLmVpcCA9IGV2ZW50X2FkZHJlc3MKLSAgICAgICAgfQotICAgIH07 Ci0gICAgc3RydWN0IGNvbXBhdF9jYWxsYmFja19yZWdpc3RlciBmYWlsc2FmZSA9IHsKLSAgICAg ICAgLnR5cGUgPSBDQUxMQkFDS1RZUEVfZmFpbHNhZmUsCi0gICAgICAgIC5hZGRyZXNzID0gewot ICAgICAgICAgICAgLmNzID0gZmFpbHNhZmVfc2VsZWN0b3IsCi0gICAgICAgICAgICAuZWlwID0g ZmFpbHNhZmVfYWRkcmVzcwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIGNvbXBhdF9yZWdpc3Rl cl9ndWVzdF9jYWxsYmFjaygmZXZlbnQpOwotICAgIGNvbXBhdF9yZWdpc3Rlcl9ndWVzdF9jYWxs YmFjaygmZmFpbHNhZmUpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBjb21wYXRfc2V0X3Ry YXBfdGFibGUoWEVOX0dVRVNUX0hBTkRMRSh0cmFwX2luZm9fY29tcGF0X3QpIHRyYXBzKQotewot ICAgIHN0cnVjdCBjb21wYXRfdHJhcF9pbmZvIGN1cjsKLSAgICBzdHJ1Y3QgdHJhcF9pbmZvICpk c3QgPSBjdXJyZW50LT5hcmNoLnB2X3ZjcHUudHJhcF9jdHh0OwotICAgIGxvbmcgcmMgPSAwOwot Ci0gICAgLyogSWYgbm8gdGFibGUgaXMgcHJlc2VudGVkIHRoZW4gY2xlYXIgdGhlIGVudGlyZSB2 aXJ0dWFsIElEVC4gKi8KLSAgICBpZiAoIGd1ZXN0X2hhbmRsZV9pc19udWxsKHRyYXBzKSApCi0g ICAgewotICAgICAgICBtZW1zZXQoZHN0LCAwLCBOUl9WRUNUT1JTICogc2l6ZW9mKCpkc3QpKTsK LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgZm9yICggOyA7ICkKLSAgICB7Ci0gICAg ICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZjdXIsIHRyYXBzLCAxKSApCi0gICAgICAgIHsKLSAg ICAgICAgICAgIHJjID0gLUVGQVVMVDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0K LSAgICAgICAgaWYgKCBjdXIuYWRkcmVzcyA9PSAwICkKLSAgICAgICAgICAgIGJyZWFrOwotCi0g ICAgICAgIGZpeHVwX2d1ZXN0X2NvZGVfc2VsZWN0b3IoY3VycmVudC0+ZG9tYWluLCBjdXIuY3Mp OwotCi0gICAgICAgIFhMQVRfdHJhcF9pbmZvKGRzdCArIGN1ci52ZWN0b3IsICZjdXIpOwotCi0g ICAgICAgIGlmICggY3VyLnZlY3RvciA9PSAweDgwICkKLSAgICAgICAgICAgIGluaXRfaW50ODBf ZGlyZWN0X3RyYXAoY3VycmVudCk7Ci0KLSAgICAgICAgZ3Vlc3RfaGFuZGxlX2FkZF9vZmZzZXQo dHJhcHMsIDEpOwotCi0gICAgICAgIGlmICggaHlwZXJjYWxsX3ByZWVtcHRfY2hlY2soKSApCi0g ICAgICAgIHsKLSAgICAgICAgICAgIHJjID0gaHlwZXJjYWxsX2NyZWF0ZV9jb250aW51YXRpb24o Ci0gICAgICAgICAgICAgICAgX19IWVBFUlZJU09SX3NldF90cmFwX3RhYmxlLCAiaCIsIHRyYXBz KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJj OwotfQotCi1zdGF0aWMgdm9pZCBoeXBlcmNhbGxfcGFnZV9pbml0aWFsaXNlX3JpbmcxX2tlcm5l bCh2b2lkICpoeXBlcmNhbGxfcGFnZSkKLXsKLSAgICBjaGFyICpwOwotICAgIGludCBpOwotCi0g ICAgLyogRmlsbCBpbiBhbGwgdGhlIHRyYW5zZmVyIHBvaW50cyB3aXRoIHRlbXBsYXRlIG1hY2hp bmUgY29kZS4gKi8KLQotICAgIGZvciAoIGkgPSAwOyBpIDwgKFBBR0VfU0laRSAvIDMyKTsgaSsr ICkKLSAgICB7Ci0gICAgICAgIGlmICggaSA9PSBfX0hZUEVSVklTT1JfaXJldCApCi0gICAgICAg ICAgICBjb250aW51ZTsKLQotICAgICAgICBwID0gKGNoYXIgKikoaHlwZXJjYWxsX3BhZ2UgKyAo aSAqIDMyKSk7Ci0gICAgICAgICoodTggICopKHArIDApID0gMHhiODsgICAgLyogbW92ICAkPGk+ LCVlYXggKi8KLSAgICAgICAgKih1MzIgKikocCsgMSkgPSBpOwotICAgICAgICAqKHUxNiAqKShw KyA1KSA9IChIWVBFUkNBTExfVkVDVE9SIDw8IDgpIHwgMHhjZDsgLyogaW50ICAkeHggKi8KLSAg ICAgICAgKih1OCAgKikocCsgNykgPSAweGMzOyAgICAvKiByZXQgKi8KLSAgICB9Ci0KLSAgICAv KgotICAgICAqIEhZUEVSVklTT1JfaXJldCBpcyBzcGVjaWFsIGJlY2F1c2UgaXQgZG9lc24ndCBy ZXR1cm4gYW5kIGV4cGVjdHMgYQotICAgICAqIHNwZWNpYWwgc3RhY2sgZnJhbWUuIEd1ZXN0cyBq dW1wIGF0IHRoaXMgdHJhbnNmZXIgcG9pbnQgaW5zdGVhZCBvZgotICAgICAqIGNhbGxpbmcgaXQu Ci0gICAgICovCi0gICAgcCA9IChjaGFyICopKGh5cGVyY2FsbF9wYWdlICsgKF9fSFlQRVJWSVNP Ul9pcmV0ICogMzIpKTsKLSAgICAqKHU4ICAqKShwKyAwKSA9IDB4NTA7ICAgIC8qIHB1c2ggJWVh eCAqLwotICAgICoodTggICopKHArIDEpID0gMHhiODsgICAgLyogbW92ICAkX19IWVBFUlZJU09S X2lyZXQsJWVheCAqLwotICAgICoodTMyICopKHArIDIpID0gX19IWVBFUlZJU09SX2lyZXQ7Ci0g ICAgKih1MTYgKikocCsgNikgPSAoSFlQRVJDQUxMX1ZFQ1RPUiA8PCA4KSB8IDB4Y2Q7IC8qIGlu dCAgJHh4ICovCi19Ci0KLS8qCi0gKiBMb2NhbCB2YXJpYWJsZXM6Ci0gKiBtb2RlOiBDCi0gKiBj LWZpbGUtc3R5bGU6ICJCU0QiCi0gKiBjLWJhc2ljLW9mZnNldDogNAotICogdGFiLXdpZHRoOiA0 Ci0gKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKLSAqIEVuZDoKLSAqLwpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L3g4Nl82NC90cmFwcy5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC90cmFwcy5jCmlu ZGV4IDIwMjdhNmE0YWUuLmQ2Zjg2MjA4NGEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZf NjQvdHJhcHMuYworKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMKQEAgLTI2NCw4ICsy NjQsNiBAQCB2b2lkIHN1YmFyY2hfcGVyY3B1X3RyYXBzX2luaXQodm9pZCkKICAgICBwdl9wZXJj cHVfdHJhcHNfaW5pdCgpOwogfQogCi0jaW5jbHVkZSAiY29tcGF0L3RyYXBzLmMiCi0KIHZvaWQg aHlwZXJjYWxsX3BhZ2VfaW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkLCB2b2lkICpoeXBlcmNh bGxfcGFnZSkKIHsKICAgICBtZW1zZXQoaHlwZXJjYWxsX3BhZ2UsIDB4Q0MsIFBBR0VfU0laRSk7 CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3B2L2RvbWFpbi5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9wdi9kb21haW4uaAppbmRleCBkZmE2MGIwODBjLi42N2UzNzBlYmYzIDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3B2L2RvbWFpbi5oCisrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvcHYvZG9tYWluLmgKQEAgLTMwLDYgKzMwLDcgQEAgaW50IHB2X2RvbWFpbl9pbml0 aWFsaXNlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBkb21jcl9mbGFncywKICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGVuX2FyY2hfZG9tYWluY29uZmlnICpjb25maWcp OwogCiB2b2lkIGh5cGVyY2FsbF9wYWdlX2luaXRpYWxpc2VfcmluZzNfa2VybmVsKHZvaWQgKmh5 cGVyY2FsbF9wYWdlKTsKK3ZvaWQgaHlwZXJjYWxsX3BhZ2VfaW5pdGlhbGlzZV9yaW5nMV9rZXJu ZWwodm9pZCAqaHlwZXJjYWxsX3BhZ2UpOwogCiAjZWxzZSAgLyogIUNPTkZJR19QViAqLwogCkBA IC00Niw2ICs0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHB2X2RvbWFpbl9pbml0aWFsaXNlKHN0 cnVjdCBkb21haW4gKmQsCiB9CiAKIHZvaWQgaHlwZXJjYWxsX3BhZ2VfaW5pdGlhbGlzZV9yaW5n M19rZXJuZWwodm9pZCAqaHlwZXJjYWxsX3BhZ2UpIHt9Cit2b2lkIGh5cGVyY2FsbF9wYWdlX2lu aXRpYWxpc2VfcmluZzFfa2VybmVsKHZvaWQgKmh5cGVyY2FsbF9wYWdlKSB7fQogCiAjZW5kaWYJ LyogQ09ORklHX1BWICovCiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=