From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH for-next v3 18/22] x86/traps: merge x86_64/compat/traps.c into pv/traps.c Date: Thu, 18 May 2017 18:10:00 +0100 Message-ID: <20170518171004.27204-19-wei.liu2@citrix.com> References: <20170518171004.27204-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dBP2E-00049c-Sn for xen-devel@lists.xenproject.org; Thu, 18 May 2017 17:16:23 +0000 In-Reply-To: <20170518171004.27204-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 ICAgICAgfCA0MDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJj aC94ODYveDg2XzY0L2NvbXBhdC90cmFwcy5jIHwgNDE2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni94ODZfNjQvdHJhcHMuYyAgICAgICAgfCAgIDIg LQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9kb21haW4uaCAgICB8ICAgMiArCiA0IGZpbGVzIGNo YW5nZWQsIDQwNyBpbnNlcnRpb25zKCspLCA0MTggZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAx MDA2NDQgeGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvdHJhcHMuYwoKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9wdi90cmFwcy5jIGIveGVuL2FyY2gveDg2L3B2L3RyYXBzLmMKaW5kZXggNGY1 MmQzZTRkMy4uZGI5MmY2ZDUyMCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L3RyYXBzLmMK KysrIGIveGVuL2FyY2gveDg2L3B2L3RyYXBzLmMKQEAgLTMxLDYgKzMxLDkgQEAKICNpbmNsdWRl IDxhc20vc2hhcmVkLmg+CiAjaW5jbHVkZSA8YXNtL3RyYXBzLmg+CiAKKyNpbmNsdWRlIDxjb21w YXQvY2FsbGJhY2suaD4KKyNpbmNsdWRlIDxjb21wYXQvYXJjaC14ODZfMzIuaD4KKwogI2luY2x1 ZGUgPHB1YmxpYy9jYWxsYmFjay5oPgogCiB2b2lkIGRvX2VudHJ5X2ludDgyKHN0cnVjdCBjcHVf dXNlcl9yZWdzICpyZWdzKQpAQCAtNjE2LDYgKzYxOSw0MDggQEAgdm9pZCBoeXBlcmNhbGxfcGFn 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 U1lTOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCitsb25n IGNvbXBhdF9jYWxsYmFja19vcChpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFKHZvaWQpIGFyZykK K3sKKyAgICBsb25nIHJldDsKKworICAgIHN3aXRjaCAoIGNtZCApCisgICAgeworICAgIGNhc2Ug Q0FMTEJBQ0tPUF9yZWdpc3RlcjoKKyAgICB7CisgICAgICAgIHN0cnVjdCBjb21wYXRfY2FsbGJh Y2tfcmVnaXN0ZXIgcmVnOworCisgICAgICAgIHJldCA9IC1FRkFVTFQ7CisgICAgICAgIGlmICgg Y29weV9mcm9tX2d1ZXN0KCZyZWcsIGFyZywgMSkgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg ICAgICAgcmV0ID0gY29tcGF0X3JlZ2lzdGVyX2d1ZXN0X2NhbGxiYWNrKCZyZWcpOworICAgIH0K KyAgICBicmVhazsKKworICAgIGNhc2UgQ0FMTEJBQ0tPUF91bnJlZ2lzdGVyOgorICAgIHsKKyAg ICAgICAgc3RydWN0IGNvbXBhdF9jYWxsYmFja191bnJlZ2lzdGVyIHVucmVnOworCisgICAgICAg IHJldCA9IC1FRkFVTFQ7CisgICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZ1bnJlZywgYXJn LCAxKSApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICByZXQgPSBjb21wYXRfdW5yZWdp c3Rlcl9ndWVzdF9jYWxsYmFjaygmdW5yZWcpOworICAgIH0KKyAgICBicmVhazsKKworICAgIGRl ZmF1bHQ6CisgICAgICAgIHJldCA9IC1FSU5WQUw7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor ICAgIHJldHVybiByZXQ7Cit9CisKK2xvbmcgY29tcGF0X3NldF9jYWxsYmFja3ModW5zaWduZWQg bG9uZyBldmVudF9zZWxlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBldmVudF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nIGZhaWxzYWZlX3NlbGVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIGZhaWxzYWZlX2FkZHJlc3MpCit7CisgICAgc3RydWN0IGNvbXBhdF9jYWxsYmFja19y ZWdpc3RlciBldmVudCA9IHsKKyAgICAgICAgLnR5cGUgPSBDQUxMQkFDS1RZUEVfZXZlbnQsCisg ICAgICAgIC5hZGRyZXNzID0geworICAgICAgICAgICAgLmNzID0gZXZlbnRfc2VsZWN0b3IsCisg ICAgICAgICAgICAuZWlwID0gZXZlbnRfYWRkcmVzcworICAgICAgICB9CisgICAgfTsKKyAgICBz dHJ1Y3QgY29tcGF0X2NhbGxiYWNrX3JlZ2lzdGVyIGZhaWxzYWZlID0geworICAgICAgICAudHlw ZSA9IENBTExCQUNLVFlQRV9mYWlsc2FmZSwKKyAgICAgICAgLmFkZHJlc3MgPSB7CisgICAgICAg ICAgICAuY3MgPSBmYWlsc2FmZV9zZWxlY3RvciwKKyAgICAgICAgICAgIC5laXAgPSBmYWlsc2Fm ZV9hZGRyZXNzCisgICAgICAgIH0KKyAgICB9OworCisgICAgY29tcGF0X3JlZ2lzdGVyX2d1ZXN0 X2NhbGxiYWNrKCZldmVudCk7CisgICAgY29tcGF0X3JlZ2lzdGVyX2d1ZXN0X2NhbGxiYWNrKCZm YWlsc2FmZSk7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IGNvbXBhdF9zZXRfdHJhcF90YWJs ZShYRU5fR1VFU1RfSEFORExFKHRyYXBfaW5mb19jb21wYXRfdCkgdHJhcHMpCit7CisgICAgc3Ry dWN0IGNvbXBhdF90cmFwX2luZm8gY3VyOworICAgIHN0cnVjdCB0cmFwX2luZm8gKmRzdCA9IGN1 cnJlbnQtPmFyY2gucHZfdmNwdS50cmFwX2N0eHQ7CisgICAgbG9uZyByYyA9IDA7CisKKyAgICAv KiBJZiBubyB0YWJsZSBpcyBwcmVzZW50ZWQgdGhlbiBjbGVhciB0aGUgZW50aXJlIHZpcnR1YWwg SURULiAqLworICAgIGlmICggZ3Vlc3RfaGFuZGxlX2lzX251bGwodHJhcHMpICkKKyAgICB7Cisg ICAgICAgIG1lbXNldChkc3QsIDAsIE5SX1ZFQ1RPUlMgKiBzaXplb2YoKmRzdCkpOworICAgICAg ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBmb3IgKCA7IDsgKQorICAgIHsKKyAgICAgICAgaWYg KCBjb3B5X2Zyb21fZ3Vlc3QoJmN1ciwgdHJhcHMsIDEpICkKKyAgICAgICAgeworICAgICAgICAg ICAgcmMgPSAtRUZBVUxUOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg ICBpZiAoIGN1ci5hZGRyZXNzID09IDAgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg Zml4dXBfZ3Vlc3RfY29kZV9zZWxlY3RvcihjdXJyZW50LT5kb21haW4sIGN1ci5jcyk7CisKKyAg ICAgICAgWExBVF90cmFwX2luZm8oZHN0ICsgY3VyLnZlY3RvciwgJmN1cik7CisKKyAgICAgICAg aWYgKCBjdXIudmVjdG9yID09IDB4ODAgKQorICAgICAgICAgICAgaW5pdF9pbnQ4MF9kaXJlY3Rf dHJhcChjdXJyZW50KTsKKworICAgICAgICBndWVzdF9oYW5kbGVfYWRkX29mZnNldCh0cmFwcywg MSk7CisKKyAgICAgICAgaWYgKCBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygpICkKKyAgICAgICAg eworICAgICAgICAgICAgcmMgPSBoeXBlcmNhbGxfY3JlYXRlX2NvbnRpbnVhdGlvbigKKyAgICAg ICAgICAgICAgICBfX0hZUEVSVklTT1Jfc2V0X3RyYXBfdGFibGUsICJoIiwgdHJhcHMpOworICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CisK K3ZvaWQgaHlwZXJjYWxsX3BhZ2VfaW5pdGlhbGlzZV9yaW5nMV9rZXJuZWwodm9pZCAqaHlwZXJj YWxsX3BhZ2UpCit7CisgICAgY2hhciAqcDsKKyAgICBpbnQgaTsKKworICAgIC8qIEZpbGwgaW4g YWxsIHRoZSB0cmFuc2ZlciBwb2ludHMgd2l0aCB0ZW1wbGF0ZSBtYWNoaW5lIGNvZGUuICovCisK KyAgICBmb3IgKCBpID0gMDsgaSA8IChQQUdFX1NJWkUgLyAzMik7IGkrKyApCisgICAgeworICAg ICAgICBpZiAoIGkgPT0gX19IWVBFUlZJU09SX2lyZXQgKQorICAgICAgICAgICAgY29udGludWU7 CisKKyAgICAgICAgcCA9IChjaGFyICopKGh5cGVyY2FsbF9wYWdlICsgKGkgKiAzMikpOworICAg ICAgICAqKHU4ICAqKShwKyAwKSA9IDB4Yjg7ICAgIC8qIG1vdiAgJDxpPiwlZWF4ICovCisgICAg ICAgICoodTMyICopKHArIDEpID0gaTsKKyAgICAgICAgKih1MTYgKikocCsgNSkgPSAoSFlQRVJD QUxMX1ZFQ1RPUiA8PCA4KSB8IDB4Y2Q7IC8qIGludCAgJHh4ICovCisgICAgICAgICoodTggICop KHArIDcpID0gMHhjMzsgICAgLyogcmV0ICovCisgICAgfQorCisgICAgLyoKKyAgICAgKiBIWVBF UlZJU09SX2lyZXQgaXMgc3BlY2lhbCBiZWNhdXNlIGl0IGRvZXNuJ3QgcmV0dXJuIGFuZCBleHBl Y3RzIGEKKyAgICAgKiBzcGVjaWFsIHN0YWNrIGZyYW1lLiBHdWVzdHMganVtcCBhdCB0aGlzIHRy YW5zZmVyIHBvaW50IGluc3RlYWQgb2YKKyAgICAgKiBjYWxsaW5nIGl0LgorICAgICAqLworICAg IHAgPSAoY2hhciAqKShoeXBlcmNhbGxfcGFnZSArIChfX0hZUEVSVklTT1JfaXJldCAqIDMyKSk7 CisgICAgKih1OCAgKikocCsgMCkgPSAweDUwOyAgICAvKiBwdXNoICVlYXggKi8KKyAgICAqKHU4 ICAqKShwKyAxKSA9IDB4Yjg7ICAgIC8qIG1vdiAgJF9fSFlQRVJWSVNPUl9pcmV0LCVlYXggKi8K KyAgICAqKHUzMiAqKShwKyAyKSA9IF9fSFlQRVJWSVNPUl9pcmV0OworICAgICoodTE2ICopKHAr IDYpID0gKEhZUEVSQ0FMTF9WRUNUT1IgPDwgOCkgfCAweGNkOyAvKiBpbnQgICR4eCAqLworfQor CiAvKgogICogTG9jYWwgdmFyaWFibGVzOgogICogbW9kZTogQwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L3g4Nl82NC9jb21wYXQvdHJhcHMuYyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvY29tcGF0 L3RyYXBzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NTFlYzY3ZTguLjAwMDAw MDAwMDAKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvdHJhcHMuYworKysgL2Rldi9u dWxsCkBAIC0xLDQxNiArMCwwIEBACi0jaW5jbHVkZSA8eGVuL2V2ZW50Lmg+Ci0jaW5jbHVkZSA8 YXNtL3JlZ3MuaD4KLSNpbmNsdWRlIDxjb21wYXQvY2FsbGJhY2suaD4KLSNpbmNsdWRlIDxjb21w YXQvYXJjaC14ODZfMzIuaD4KLQotdm9pZCBjb21wYXRfc2hvd19ndWVzdF9zdGFjayhzdHJ1Y3Qg dmNwdSAqdiwgY29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBkZWJ1Z19zdGFja19saW5lcykKLXsKLSAgICB1bnNpZ25lZCBp bnQgaSwgKnN0YWNrLCBhZGRyLCBtYXNrID0gU1RBQ0tfU0laRTsKLQotICAgIHN0YWNrID0gKHVu c2lnbmVkIGludCAqKSh1bnNpZ25lZCBsb25nKXJlZ3MtPmVzcDsKLSAgICBwcmludGsoIkd1ZXN0 IHN0YWNrIHRyYWNlIGZyb20gZXNwPSUwOGx4OlxuICIsICh1bnNpZ25lZCBsb25nKXN0YWNrKTsK LQotICAgIGlmICggIV9fY29tcGF0X2FjY2Vzc19vayh2LT5kb21haW4sIHN0YWNrLCBzaXplb2Yo KnN0YWNrKSkgKQotICAgIHsKLSAgICAgICAgcHJpbnRrKCJHdWVzdC1pbmFjY2Vzc2libGUgbWVt b3J5LlxuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIHYgIT0gY3VycmVu dCApCi0gICAgewotICAgICAgICBzdHJ1Y3QgdmNwdSAqdmNwdTsKLSAgICAgICAgdW5zaWduZWQg bG9uZyBtZm47Ci0KLSAgICAgICAgQVNTRVJUKGd1ZXN0X2tlcm5lbF9tb2RlKHYsIHJlZ3MpKTsK LSAgICAgICAgbWZuID0gcmVhZF9jcjMoKSA+PiBQQUdFX1NISUZUOwotICAgICAgICBmb3JfZWFj aF92Y3B1KCB2LT5kb21haW4sIHZjcHUgKQotICAgICAgICAgICAgaWYgKCBwYWdldGFibGVfZ2V0 X3Bmbih2Y3B1LT5hcmNoLmd1ZXN0X3RhYmxlKSA9PSBtZm4gKQotICAgICAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICBpZiAoICF2Y3B1ICkKLSAgICAgICAgewotICAgICAgICAgICAgc3RhY2sg PSBkb19wYWdlX3dhbGsodiwgKHVuc2lnbmVkIGxvbmcpc3RhY2spOwotICAgICAgICAgICAgaWYg KCAodW5zaWduZWQgbG9uZylzdGFjayA8IFBBR0VfU0laRSApCi0gICAgICAgICAgICB7Ci0gICAg ICAgICAgICAgICAgcHJpbnRrKCJJbmFjY2Vzc2libGUgZ3Vlc3QgbWVtb3J5LlxuIik7Ci0gICAg ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbWFzayA9IFBB R0VfU0laRTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoIGkgPSAwOyBpIDwgZGVidWdf c3RhY2tfbGluZXMgKiA4OyBpKysgKQotICAgIHsKLSAgICAgICAgaWYgKCAoKChsb25nKXN0YWNr IC0gMSkgXiAoKGxvbmcpKHN0YWNrICsgMSkgLSAxKSkgJiBtYXNrICkKLSAgICAgICAgICAgIGJy ZWFrOwotICAgICAgICBpZiAoIF9fZ2V0X3VzZXIoYWRkciwgc3RhY2spICkKLSAgICAgICAgewot ICAgICAgICAgICAgaWYgKCBpICE9IDAgKQotICAgICAgICAgICAgICAgIHByaW50aygiXG4gICAg Iik7Ci0gICAgICAgICAgICBwcmludGsoIkZhdWx0IHdoaWxlIGFjY2Vzc2luZyBndWVzdCBtZW1v cnkuIik7Ci0gICAgICAgICAgICBpID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9 Ci0gICAgICAgIGlmICggKGkgIT0gMCkgJiYgKChpICUgOCkgPT0gMCkgKQotICAgICAgICAgICAg cHJpbnRrKCJcbiAiKTsKLSAgICAgICAgcHJpbnRrKCIgJTA4eCIsIGFkZHIpOwotICAgICAgICBz dGFjaysrOwotICAgIH0KLSAgICBpZiAoIG1hc2sgPT0gUEFHRV9TSVpFICkKLSAgICB7Ci0gICAg ICAgIEJVSUxEX0JVR19PTihQQUdFX1NJWkUgPT0gU1RBQ0tfU0laRSk7Ci0gICAgICAgIHVubWFw X2RvbWFpbl9wYWdlKHN0YWNrKTsKLSAgICB9Ci0gICAgaWYgKCBpID09IDAgKQotICAgICAgICBw cmludGsoIlN0YWNrIGVtcHR5LiIpOwotICAgIHByaW50aygiXG4iKTsKLX0KLQotdW5zaWduZWQg aW50IGNvbXBhdF9pcmV0KHZvaWQpCi17Ci0gICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3Mg PSBndWVzdF9jcHVfdXNlcl9yZWdzKCk7Ci0gICAgc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50Owot ICAgIHUzMiBlZmxhZ3M7Ci0KLSAgICAvKiBUcmltIHN0YWNrIHBvaW50ZXIgdG8gMzIgYml0cy4g Ki8KLSAgICByZWdzLT5yc3AgPSAodTMyKXJlZ3MtPnJzcDsKLQotICAgIC8qIFJlc3RvcmUgRUFY IChjbG9iYmVyZWQgYnkgaHlwZXJjYWxsKS4gKi8KLSAgICBpZiAoIHVubGlrZWx5KF9fZ2V0X3Vz ZXIocmVncy0+ZWF4LCAodTMyICopcmVncy0+cnNwKSkgKQotICAgIHsKLSAgICAgICAgZG9tYWlu X2NyYXNoKHYtPmRvbWFpbik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qIFJl c3RvcmUgQ1MgYW5kIEVJUC4gKi8KLSAgICBpZiAoIHVubGlrZWx5KF9fZ2V0X3VzZXIocmVncy0+ ZWlwLCAodTMyICopcmVncy0+cnNwICsgMSkpIHx8Ci0gICAgICAgIHVubGlrZWx5KF9fZ2V0X3Vz ZXIocmVncy0+Y3MsICh1MzIgKilyZWdzLT5yc3AgKyAyKSkgKQotICAgIHsKLSAgICAgICAgZG9t YWluX2NyYXNoKHYtPmRvbWFpbik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8q Ci0gICAgICogRml4IHVwIGFuZCByZXN0b3JlIEVGTEFHUy4gV2UgZml4IHVwIGluIGEgbG9jYWwg c3RhZ2luZyBhcmVhCi0gICAgICogdG8gYXZvaWQgZmlyaW5nIHRoZSBCVUdfT04oSU9QTCkgY2hl Y2sgaW4gYXJjaF9nZXRfaW5mb19ndWVzdC4KLSAgICAgKi8KLSAgICBpZiAoIHVubGlrZWx5KF9f Z2V0X3VzZXIoZWZsYWdzLCAodTMyICopcmVncy0+cnNwICsgMykpICkKLSAgICB7Ci0gICAgICAg IGRvbWFpbl9jcmFzaCh2LT5kb21haW4pOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAg ICBpZiAoIFZNX0FTU0lTVCh2LT5kb21haW4sIGFyY2hpdGVjdHVyYWxfaW9wbCkgKQotICAgICAg ICB2LT5hcmNoLnB2X3ZjcHUuaW9wbCA9IGVmbGFncyAmIFg4Nl9FRkxBR1NfSU9QTDsKLQotICAg IHJlZ3MtPmVmbGFncyA9IChlZmxhZ3MgJiB+WDg2X0VGTEFHU19JT1BMKSB8IFg4Nl9FRkxBR1Nf SUY7Ci0KLSAgICBpZiAoIHVubGlrZWx5KGVmbGFncyAmIFg4Nl9FRkxBR1NfVk0pICkKLSAgICB7 Ci0gICAgICAgIC8qCi0gICAgICAgICAqIENhbm5vdCByZXR1cm4gdG8gVk04NiBtb2RlOiBpbmpl Y3QgYSBHUCBmYXVsdCBpbnN0ZWFkLiBOb3RlIHRoYXQKLSAgICAgICAgICogdGhlIEdQIGZhdWx0 IGlzIHJlcG9ydGVkIG9uIHRoZSBmaXJzdCBWTTg2IG1vZGUgaW5zdHJ1Y3Rpb24sIG5vdCBvbgot ICAgICAgICAgKiB0aGUgSVJFVCAod2hpY2ggaXMgd2h5IHdlIGNhbiBzaW1wbHkgbGVhdmUgdGhl IHN0YWNrIGZyYW1lIGFzLWlzCi0gICAgICAgICAqIChleGNlcHQgZm9yIHBlcmhhcHMgaGF2aW5n IHRvIGNvcHkgaXQpLCB3aGljaCBpbiB0dXJuIHNlZW1zIGJldHRlcgotICAgICAgICAgKiB0aGFu IHRlYWNoaW5nIGNyZWF0ZV9ib3VuY2VfZnJhbWUoKSB0byBuZWVkbGVzc2x5IGRlYWwgd2l0aCB2 bTg2Ci0gICAgICAgICAqIG1vZGUgZnJhbWVzKS4KLSAgICAgICAgICovCi0gICAgICAgIGNvbnN0 IHN0cnVjdCB0cmFwX2luZm8gKnRpOwotICAgICAgICB1MzIgeCwga3NwID0gdi0+YXJjaC5wdl92 Y3B1Lmtlcm5lbF9zcCAtIDQwOwotICAgICAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICAgICAgaW50 IHJjID0gMDsKLQotICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLCAiVk04NiBtb2RlIHVuYXZh aWxhYmxlIChrc3A6JTA4WC0+JTA4WClcbiIsCi0gICAgICAgICAgICAgICAgIHJlZ3MtPmVzcCwg a3NwKTsKLSAgICAgICAgaWYgKCBrc3AgPCByZWdzLT5lc3AgKQotICAgICAgICB7Ci0gICAgICAg ICAgICBmb3IgKGkgPSAxOyBpIDwgMTA7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgICByYyB8PSBfX2dldF91c2VyKHgsICh1MzIgKilyZWdzLT5yc3AgKyBpKTsKLSAgICAgICAg ICAgICAgICByYyB8PSBfX3B1dF91c2VyKHgsICh1MzIgKikodW5zaWduZWQgbG9uZylrc3AgKyBp KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgga3NwID4gcmVn cy0+ZXNwICkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICggaSA9IDk7IGkgPiAwOyAtLWkg KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJjIHw9IF9fZ2V0X3VzZXIoeCwgKHUz MiAqKXJlZ3MtPnJzcCArIGkpOwotICAgICAgICAgICAgICAgIHJjIHw9IF9fcHV0X3VzZXIoeCwg KHUzMiAqKSh1bnNpZ25lZCBsb25nKWtzcCArIGkpOwotICAgICAgICAgICAgfQotICAgICAgICB9 Ci0gICAgICAgIGlmICggcmMgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkb21haW5fY3Jhc2go di0+ZG9tYWluKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIHJl Z3MtPmVzcCA9IGtzcDsKLSAgICAgICAgcmVncy0+c3MgPSB2LT5hcmNoLnB2X3ZjcHUua2VybmVs X3NzOwotCi0gICAgICAgIHRpID0gJnYtPmFyY2gucHZfdmNwdS50cmFwX2N0eHRbVFJBUF9ncF9m YXVsdF07Ci0gICAgICAgIGlmICggVElfR0VUX0lGKHRpKSApCi0gICAgICAgICAgICBlZmxhZ3Mg Jj0gflg4Nl9FRkxBR1NfSUY7Ci0gICAgICAgIHJlZ3MtPmVmbGFncyAmPSB+KFg4Nl9FRkxBR1Nf Vk18WDg2X0VGTEFHU19SRnwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgWDg2X0VGTEFHU19O VHxYODZfRUZMQUdTX1RGKTsKLSAgICAgICAgaWYgKCB1bmxpa2VseShfX3B1dF91c2VyKDAsICh1 MzIgKilyZWdzLT5yc3ApKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRvbWFpbl9jcmFzaCh2 LT5kb21haW4pOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgcmVn cy0+ZWlwID0gdGktPmFkZHJlc3M7Ci0gICAgICAgIHJlZ3MtPmNzID0gdGktPmNzOwotICAgIH0K LSAgICBlbHNlIGlmICggdW5saWtlbHkocmluZ18wKHJlZ3MpKSApCi0gICAgewotICAgICAgICBk b21haW5fY3Jhc2godi0+ZG9tYWluKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGVs c2UgaWYgKCByaW5nXzEocmVncykgKQotICAgICAgICByZWdzLT5lc3AgKz0gMTY7Ci0gICAgLyog UmV0dXJuIHRvIHJpbmcgMi8zOiByZXN0b3JlIEVTUCBhbmQgU1MuICovCi0gICAgZWxzZSBpZiAo IF9fZ2V0X3VzZXIocmVncy0+c3MsICh1MzIgKilyZWdzLT5yc3AgKyA1KSB8fAotICAgICAgICAg ICAgICBfX2dldF91c2VyKHJlZ3MtPmVzcCwgKHUzMiAqKXJlZ3MtPnJzcCArIDQpICkKLSAgICB7 Ci0gICAgICAgIGRvbWFpbl9jcmFzaCh2LT5kb21haW4pOwotICAgICAgICByZXR1cm4gMDsKLSAg ICB9Ci0KLSAgICAvKiBSZXN0b3JlIHVwY2FsbCBtYXNrIGZyb20gc3VwcGxpZWQgRUZMQUdTLklG LiAqLwotICAgIHZjcHVfaW5mbyh2LCBldnRjaG5fdXBjYWxsX21hc2spID0gIShlZmxhZ3MgJiBY ODZfRUZMQUdTX0lGKTsKLQotICAgIGFzeW5jX2V4Y2VwdGlvbl9jbGVhbnVwKHYpOwotCi0gICAg LyoKLSAgICAgKiBUaGUgaHlwZXJjYWxsIGV4aXQgcGF0aCB3aWxsIG92ZXJ3cml0ZSBFQVggd2l0 aCB0aGlzIHJldHVybgotICAgICAqIHZhbHVlLgotICAgICAqLwotICAgIHJldHVybiByZWdzLT5l YXg7Ci19Ci0KLXN0YXRpYyBsb25nIGNvbXBhdF9yZWdpc3Rlcl9ndWVzdF9jYWxsYmFjaygKLSAg ICBzdHJ1Y3QgY29tcGF0X2NhbGxiYWNrX3JlZ2lzdGVyICpyZWcpCi17Ci0gICAgbG9uZyByZXQg PSAwOwotICAgIHN0cnVjdCB2Y3B1ICp2ID0gY3VycmVudDsKLQotICAgIGZpeHVwX2d1ZXN0X2Nv ZGVfc2VsZWN0b3Iodi0+ZG9tYWluLCByZWctPmFkZHJlc3MuY3MpOwotCi0gICAgc3dpdGNoICgg cmVnLT50eXBlICkKLSAgICB7Ci0gICAgY2FzZSBDQUxMQkFDS1RZUEVfZXZlbnQ6Ci0gICAgICAg IHYtPmFyY2gucHZfdmNwdS5ldmVudF9jYWxsYmFja19jcyAgICAgPSByZWctPmFkZHJlc3MuY3M7 Ci0gICAgICAgIHYtPmFyY2gucHZfdmNwdS5ldmVudF9jYWxsYmFja19laXAgICAgPSByZWctPmFk ZHJlc3MuZWlwOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ0FMTEJBQ0tUWVBFX2ZhaWxz YWZlOgotICAgICAgICB2LT5hcmNoLnB2X3ZjcHUuZmFpbHNhZmVfY2FsbGJhY2tfY3MgID0gcmVn LT5hZGRyZXNzLmNzOwotICAgICAgICB2LT5hcmNoLnB2X3ZjcHUuZmFpbHNhZmVfY2FsbGJhY2tf ZWlwID0gcmVnLT5hZGRyZXNzLmVpcDsKLSAgICAgICAgaWYgKCByZWctPmZsYWdzICYgQ0FMTEJB Q0tGX21hc2tfZXZlbnRzICkKLSAgICAgICAgICAgIHNldF9iaXQoX1ZHQ0ZfZmFpbHNhZmVfZGlz YWJsZXNfZXZlbnRzLAotICAgICAgICAgICAgICAgICAgICAmdi0+YXJjaC52Z2NfZmxhZ3MpOwot ICAgICAgICBlbHNlCi0gICAgICAgICAgICBjbGVhcl9iaXQoX1ZHQ0ZfZmFpbHNhZmVfZGlzYWJs ZXNfZXZlbnRzLAotICAgICAgICAgICAgICAgICAgICAgICZ2LT5hcmNoLnZnY19mbGFncyk7Ci0g ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDQUxMQkFDS1RZUEVfc3lzY2FsbDMyOgotICAgICAg ICB2LT5hcmNoLnB2X3ZjcHUuc3lzY2FsbDMyX2NhbGxiYWNrX2NzICAgICA9IHJlZy0+YWRkcmVz cy5jczsKLSAgICAgICAgdi0+YXJjaC5wdl92Y3B1LnN5c2NhbGwzMl9jYWxsYmFja19laXAgICAg PSByZWctPmFkZHJlc3MuZWlwOwotICAgICAgICB2LT5hcmNoLnB2X3ZjcHUuc3lzY2FsbDMyX2Rp c2FibGVzX2V2ZW50cyA9Ci0gICAgICAgICAgICAocmVnLT5mbGFncyAmIENBTExCQUNLRl9tYXNr X2V2ZW50cykgIT0gMDsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENBTExCQUNLVFlQRV9z eXNlbnRlcjoKLSAgICAgICAgdi0+YXJjaC5wdl92Y3B1LnN5c2VudGVyX2NhbGxiYWNrX2NzICAg ICA9IHJlZy0+YWRkcmVzcy5jczsKLSAgICAgICAgdi0+YXJjaC5wdl92Y3B1LnN5c2VudGVyX2Nh bGxiYWNrX2VpcCAgICA9IHJlZy0+YWRkcmVzcy5laXA7Ci0gICAgICAgIHYtPmFyY2gucHZfdmNw dS5zeXNlbnRlcl9kaXNhYmxlc19ldmVudHMgPQotICAgICAgICAgICAgKHJlZy0+ZmxhZ3MgJiBD QUxMQkFDS0ZfbWFza19ldmVudHMpICE9IDA7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBD QUxMQkFDS1RZUEVfbm1pOgotICAgICAgICByZXQgPSByZWdpc3Rlcl9ndWVzdF9ubWlfY2FsbGJh Y2socmVnLT5hZGRyZXNzLmVpcCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAg ICAgICAgcmV0ID0gLUVOT1NZUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJu IHJldDsKLX0KLQotc3RhdGljIGxvbmcgY29tcGF0X3VucmVnaXN0ZXJfZ3Vlc3RfY2FsbGJhY2so Ci0gICAgc3RydWN0IGNvbXBhdF9jYWxsYmFja191bnJlZ2lzdGVyICp1bnJlZykKLXsKLSAgICBs b25nIHJldDsKLQotICAgIHN3aXRjaCAoIHVucmVnLT50eXBlICkKLSAgICB7Ci0gICAgY2FzZSBD QUxMQkFDS1RZUEVfZXZlbnQ6Ci0gICAgY2FzZSBDQUxMQkFDS1RZUEVfZmFpbHNhZmU6Ci0gICAg Y2FzZSBDQUxMQkFDS1RZUEVfc3lzY2FsbDMyOgotICAgIGNhc2UgQ0FMTEJBQ0tUWVBFX3N5c2Vu dGVyOgotICAgICAgICByZXQgPSAtRUlOVkFMOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug Q0FMTEJBQ0tUWVBFX25taToKLSAgICAgICAgcmV0ID0gdW5yZWdpc3Rlcl9ndWVzdF9ubWlfY2Fs bGJhY2soKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXQgPSAt RU5PU1lTOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0OwotfQotCi0K LWxvbmcgY29tcGF0X2NhbGxiYWNrX29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEUodm9pZCkg YXJnKQotewotICAgIGxvbmcgcmV0OwotCi0gICAgc3dpdGNoICggY21kICkKLSAgICB7Ci0gICAg Y2FzZSBDQUxMQkFDS09QX3JlZ2lzdGVyOgotICAgIHsKLSAgICAgICAgc3RydWN0IGNvbXBhdF9j YWxsYmFja19yZWdpc3RlciByZWc7Ci0KLSAgICAgICAgcmV0ID0gLUVGQVVMVDsKLSAgICAgICAg aWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJnJlZywgYXJnLCAxKSApCi0gICAgICAgICAgICBicmVhazsK LQotICAgICAgICByZXQgPSBjb21wYXRfcmVnaXN0ZXJfZ3Vlc3RfY2FsbGJhY2soJnJlZyk7Ci0g ICAgfQotICAgIGJyZWFrOwotCi0gICAgY2FzZSBDQUxMQkFDS09QX3VucmVnaXN0ZXI6Ci0gICAg ewotICAgICAgICBzdHJ1Y3QgY29tcGF0X2NhbGxiYWNrX3VucmVnaXN0ZXIgdW5yZWc7Ci0KLSAg ICAgICAgcmV0ID0gLUVGQVVMVDsKLSAgICAgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJnVucmVn LCBhcmcsIDEpICkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIHJldCA9IGNvbXBhdF91 bnJlZ2lzdGVyX2d1ZXN0X2NhbGxiYWNrKCZ1bnJlZyk7Ci0gICAgfQotICAgIGJyZWFrOwotCi0g ICAgZGVmYXVsdDoKLSAgICAgICAgcmV0ID0gLUVJTlZBTDsKLSAgICAgICAgYnJlYWs7Ci0gICAg fQotCi0gICAgcmV0dXJuIHJldDsKLX0KLQotbG9uZyBjb21wYXRfc2V0X2NhbGxiYWNrcyh1bnNp Z25lZCBsb25nIGV2ZW50X3NlbGVjdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIGV2ZW50X2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgZmFpbHNhZmVfc2VsZWN0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgZmFpbHNhZmVfYWRkcmVzcykKLXsKLSAgICBzdHJ1Y3QgY29tcGF0X2NhbGxi YWNrX3JlZ2lzdGVyIGV2ZW50ID0gewotICAgICAgICAudHlwZSA9IENBTExCQUNLVFlQRV9ldmVu dCwKLSAgICAgICAgLmFkZHJlc3MgPSB7Ci0gICAgICAgICAgICAuY3MgPSBldmVudF9zZWxlY3Rv ciwKLSAgICAgICAgICAgIC5laXAgPSBldmVudF9hZGRyZXNzCi0gICAgICAgIH0KLSAgICB9Owot ICAgIHN0cnVjdCBjb21wYXRfY2FsbGJhY2tfcmVnaXN0ZXIgZmFpbHNhZmUgPSB7Ci0gICAgICAg IC50eXBlID0gQ0FMTEJBQ0tUWVBFX2ZhaWxzYWZlLAotICAgICAgICAuYWRkcmVzcyA9IHsKLSAg ICAgICAgICAgIC5jcyA9IGZhaWxzYWZlX3NlbGVjdG9yLAotICAgICAgICAgICAgLmVpcCA9IGZh aWxzYWZlX2FkZHJlc3MKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBjb21wYXRfcmVnaXN0ZXJf Z3Vlc3RfY2FsbGJhY2soJmV2ZW50KTsKLSAgICBjb21wYXRfcmVnaXN0ZXJfZ3Vlc3RfY2FsbGJh Y2soJmZhaWxzYWZlKTsKLQotICAgIHJldHVybiAwOwotfQotCi1pbnQgY29tcGF0X3NldF90cmFw X3RhYmxlKFhFTl9HVUVTVF9IQU5ETEUodHJhcF9pbmZvX2NvbXBhdF90KSB0cmFwcykKLXsKLSAg ICBzdHJ1Y3QgY29tcGF0X3RyYXBfaW5mbyBjdXI7Ci0gICAgc3RydWN0IHRyYXBfaW5mbyAqZHN0 ID0gY3VycmVudC0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4dDsKLSAgICBsb25nIHJjID0gMDsKLQot ICAgIC8qIElmIG5vIHRhYmxlIGlzIHByZXNlbnRlZCB0aGVuIGNsZWFyIHRoZSBlbnRpcmUgdmly dHVhbCBJRFQuICovCi0gICAgaWYgKCBndWVzdF9oYW5kbGVfaXNfbnVsbCh0cmFwcykgKQotICAg IHsKLSAgICAgICAgbWVtc2V0KGRzdCwgMCwgTlJfVkVDVE9SUyAqIHNpemVvZigqZHN0KSk7Ci0g ICAgICAgIGluaXRfaW50ODBfZGlyZWN0X3RyYXAoY3VycmVudCk7Ci0gICAgICAgIHJldHVybiAw OwotICAgIH0KLQotICAgIGZvciAoIDsgOyApCi0gICAgewotICAgICAgICBpZiAoIGNvcHlfZnJv bV9ndWVzdCgmY3VyLCB0cmFwcywgMSkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByYyA9IC1F RkFVTFQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICggY3Vy LmFkZHJlc3MgPT0gMCApCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBmaXh1cF9ndWVz dF9jb2RlX3NlbGVjdG9yKGN1cnJlbnQtPmRvbWFpbiwgY3VyLmNzKTsKLQotICAgICAgICBYTEFU X3RyYXBfaW5mbyhkc3QgKyBjdXIudmVjdG9yLCAmY3VyKTsKLQotICAgICAgICBpZiAoIGN1ci52 ZWN0b3IgPT0gMHg4MCApCi0gICAgICAgICAgICBpbml0X2ludDgwX2RpcmVjdF90cmFwKGN1cnJl bnQpOwotCi0gICAgICAgIGd1ZXN0X2hhbmRsZV9hZGRfb2Zmc2V0KHRyYXBzLCAxKTsKLQotICAg ICAgICBpZiAoIGh5cGVyY2FsbF9wcmVlbXB0X2NoZWNrKCkgKQotICAgICAgICB7Ci0gICAgICAg ICAgICByYyA9IGh5cGVyY2FsbF9jcmVhdGVfY29udGludWF0aW9uKAotICAgICAgICAgICAgICAg IF9fSFlQRVJWSVNPUl9zZXRfdHJhcF90YWJsZSwgImgiLCB0cmFwcyk7Ci0gICAgICAgICAgICBi cmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByYzsKLX0KLQotc3RhdGljIHZv aWQgaHlwZXJjYWxsX3BhZ2VfaW5pdGlhbGlzZV9yaW5nMV9rZXJuZWwodm9pZCAqaHlwZXJjYWxs X3BhZ2UpCi17Ci0gICAgY2hhciAqcDsKLSAgICBpbnQgaTsKLQotICAgIC8qIEZpbGwgaW4gYWxs IHRoZSB0cmFuc2ZlciBwb2ludHMgd2l0aCB0ZW1wbGF0ZSBtYWNoaW5lIGNvZGUuICovCi0KLSAg ICBmb3IgKCBpID0gMDsgaSA8IChQQUdFX1NJWkUgLyAzMik7IGkrKyApCi0gICAgewotICAgICAg ICBpZiAoIGkgPT0gX19IWVBFUlZJU09SX2lyZXQgKQotICAgICAgICAgICAgY29udGludWU7Ci0K LSAgICAgICAgcCA9IChjaGFyICopKGh5cGVyY2FsbF9wYWdlICsgKGkgKiAzMikpOwotICAgICAg ICAqKHU4ICAqKShwKyAwKSA9IDB4Yjg7ICAgIC8qIG1vdiAgJDxpPiwlZWF4ICovCi0gICAgICAg ICoodTMyICopKHArIDEpID0gaTsKLSAgICAgICAgKih1MTYgKikocCsgNSkgPSAoSFlQRVJDQUxM X1ZFQ1RPUiA8PCA4KSB8IDB4Y2Q7IC8qIGludCAgJHh4ICovCi0gICAgICAgICoodTggICopKHAr IDcpID0gMHhjMzsgICAgLyogcmV0ICovCi0gICAgfQotCi0gICAgLyoKLSAgICAgKiBIWVBFUlZJ U09SX2lyZXQgaXMgc3BlY2lhbCBiZWNhdXNlIGl0IGRvZXNuJ3QgcmV0dXJuIGFuZCBleHBlY3Rz IGEKLSAgICAgKiBzcGVjaWFsIHN0YWNrIGZyYW1lLiBHdWVzdHMganVtcCBhdCB0aGlzIHRyYW5z ZmVyIHBvaW50IGluc3RlYWQgb2YKLSAgICAgKiBjYWxsaW5nIGl0LgotICAgICAqLwotICAgIHAg PSAoY2hhciAqKShoeXBlcmNhbGxfcGFnZSArIChfX0hZUEVSVklTT1JfaXJldCAqIDMyKSk7Ci0g ICAgKih1OCAgKikocCsgMCkgPSAweDUwOyAgICAvKiBwdXNoICVlYXggKi8KLSAgICAqKHU4ICAq KShwKyAxKSA9IDB4Yjg7ICAgIC8qIG1vdiAgJF9fSFlQRVJWSVNPUl9pcmV0LCVlYXggKi8KLSAg ICAqKHUzMiAqKShwKyAyKSA9IF9fSFlQRVJWSVNPUl9pcmV0OwotICAgICoodTE2ICopKHArIDYp ID0gKEhZUEVSQ0FMTF9WRUNUT1IgPDwgOCkgfCAweGNkOyAvKiBpbnQgICR4eCAqLwotfQotCi0v KgotICogTG9jYWwgdmFyaWFibGVzOgotICogbW9kZTogQwotICogYy1maWxlLXN0eWxlOiAiQlNE IgotICogYy1iYXNpYy1vZmZzZXQ6IDQKLSAqIHRhYi13aWR0aDogNAotICogaW5kZW50LXRhYnMt bW9kZTogbmlsCi0gKiBFbmQ6Ci0gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQv dHJhcHMuYyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvdHJhcHMuYwppbmRleCA3YTRkZDQ0NThlLi5k ZWNhMmNhMWY2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L3RyYXBzLmMKKysrIGIv eGVuL2FyY2gveDg2L3g4Nl82NC90cmFwcy5jCkBAIC0zMzUsOCArMzM1LDYgQEAgdm9pZCBzdWJh cmNoX3BlcmNwdV90cmFwc19pbml0KHZvaWQpCiAgICAgd3Jtc3JsKE1TUl9TWVNDQUxMX01BU0ss IFhFTl9TWVNDQUxMX01BU0spOwogfQogCi0jaW5jbHVkZSAiY29tcGF0L3RyYXBzLmMiCi0KIHZv aWQgaHlwZXJjYWxsX3BhZ2VfaW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkLCB2b2lkICpoeXBl cmNhbGxfcGFnZSkKIHsKICAgICBtZW1zZXQoaHlwZXJjYWxsX3BhZ2UsIDB4Q0MsIFBBR0VfU0la RSk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3B2L2RvbWFpbi5oIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9wdi9kb21haW4uaAppbmRleCBkZmE2MGIwODBjLi42N2UzNzBlYmYzIDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3B2L2RvbWFpbi5oCisrKyBiL3hlbi9pbmNs dWRlL2FzbS14ODYvcHYvZG9tYWluLmgKQEAgLTMwLDYgKzMwLDcgQEAgaW50IHB2X2RvbWFpbl9p bml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBkb21jcl9mbGFncywKICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGVuX2FyY2hfZG9tYWluY29uZmlnICpjb25m aWcpOwogCiB2b2lkIGh5cGVyY2FsbF9wYWdlX2luaXRpYWxpc2VfcmluZzNfa2VybmVsKHZvaWQg Kmh5cGVyY2FsbF9wYWdlKTsKK3ZvaWQgaHlwZXJjYWxsX3BhZ2VfaW5pdGlhbGlzZV9yaW5nMV9r ZXJuZWwodm9pZCAqaHlwZXJjYWxsX3BhZ2UpOwogCiAjZWxzZSAgLyogIUNPTkZJR19QViAqLwog CkBAIC00Niw2ICs0Nyw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHB2X2RvbWFpbl9pbml0aWFsaXNl KHN0cnVjdCBkb21haW4gKmQsCiB9CiAKIHZvaWQgaHlwZXJjYWxsX3BhZ2VfaW5pdGlhbGlzZV9y aW5nM19rZXJuZWwodm9pZCAqaHlwZXJjYWxsX3BhZ2UpIHt9Cit2b2lkIGh5cGVyY2FsbF9wYWdl X2luaXRpYWxpc2VfcmluZzFfa2VybmVsKHZvaWQgKmh5cGVyY2FsbF9wYWdlKSB7fQogCiAjZW5k aWYJLyogQ09ORklHX1BWICovCiAKLS0gCjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=