From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dario Faggioli Subject: [PATCH 2/9] xen: credit2: make accessor helpers inline functions instead of macros Date: Thu, 26 Jan 2017 01:30:00 +0100 Message-ID: <148539059998.5464.16714883048946654681.stgit@Solace.fritz.box> References: <148539008889.5464.5896389113741708672.stgit@Solace.fritz.box> 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 1cWXwy-0005Qm-9K for xen-devel@lists.xenproject.org; Thu, 26 Jan 2017 00:30:04 +0000 Received: by mail-wm0-f66.google.com with SMTP id r126so46451353wmr.3 for ; Wed, 25 Jan 2017 16:30:02 -0800 (PST) In-Reply-To: <148539008889.5464.5896389113741708672.stgit@Solace.fritz.box> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: George Dunlap , Anshul Makkar List-Id: xen-devel@lists.xenproject.org VGhlcmUgaXNuJ3QgYW55IHBhcnRpY3VsYXIgcmVhc29uIGZvciB0aGUgYWNjZXNzb3IgaGVscGVy cwp0byBiZSBtYWNybywgc28gdHVybiB0aGVtIGludG8gJ3N0YXRpYyBpbmxpbmUnLXMsIHdoaWNo IGFyZQpiZXR0ZXIuCgpOb3RlIHRoYXQgaXQgaXMgbmVjZXNzYXJ5IHRvIG1vdmUgdGhlIGZ1bmN0 aW9uIGRlZmluaXRpb25zCmJlbG93IHRoZSBzdHJ1Y3R1cmUgZGVjbGFyYXRpb25zLgoKTm8gZnVu Y3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQuCgpTaWduZWQtb2ZmLWJ5OiBEYXJpbyBGYWdnaW9saSA8 ZGFyaW8uZmFnZ2lvbGlAY2l0cml4LmNvbT4KLS0tCkNjOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2Uu ZHVubGFwQGV1LmNpdHJpeC5jb20+CkNjOiBBbnNodWwgTWFra2FyIDxhbnNodWwubWFra2FyQGNp dHJpeC5jb20+Ci0tLQogeGVuL2NvbW1vbi9zY2hlZF9jcmVkaXQyLmMgfCAgMTU4ICsrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOTAg aW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9z Y2hlZF9jcmVkaXQyLmMgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYwppbmRleCAzMjJjZjZi Li4yOTk3M2NmIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYworKysgYi94 ZW4vY29tbW9uL3NjaGVkX2NyZWRpdDIuYwpAQCAtMjA5LDE4ICsyMDksNiBAQCBzdGF0aWMgdW5z aWduZWQgaW50IF9fcmVhZF9tb3N0bHkgb3B0X21pZ3JhdGVfcmVzaXN0ID0gNTAwOwogaW50ZWdl cl9wYXJhbSgic2NoZWRfY3JlZGl0Ml9taWdyYXRlX3Jlc2lzdCIsIG9wdF9taWdyYXRlX3Jlc2lz dCk7CiAKIC8qCi0gKiBVc2VmdWwgbWFjcm9zCi0gKi8KLSNkZWZpbmUgQ1NDSEVEMl9QUklWKF9v cHMpICAgXAotICAgICgoc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqKSgoX29wcyktPnNjaGVkX2Rh dGEpKQotI2RlZmluZSBDU0NIRUQyX1ZDUFUoX3ZjcHUpICAoKHN0cnVjdCBjc2NoZWQyX3ZjcHUg KikgKF92Y3B1KS0+c2NoZWRfcHJpdikKLSNkZWZpbmUgQ1NDSEVEMl9ET00oX2RvbSkgICAgKChz dHJ1Y3QgY3NjaGVkMl9kb20gKikgKF9kb20pLT5zY2hlZF9wcml2KQotLyogQ1BVIHRvIHJ1bnFf aWQgbWFjcm8gKi8KLSNkZWZpbmUgYzJyKF9vcHMsIF9jcHUpICAgICAoQ1NDSEVEMl9QUklWKF9v cHMpLT5ydW5xX21hcFsoX2NwdSldKQotLyogQ1BVIHRvIHJ1bnF1ZXVlIHN0cnVjdCBtYWNybyAq LwotI2RlZmluZSBSUUQoX29wcywgX2NwdSkgICAgICgmQ1NDSEVEMl9QUklWKF9vcHMpLT5ycWRb YzJyKF9vcHMsIF9jcHUpXSkKLQotLyoKICAqIExvYWQgdHJhY2tpbmcgYW5kIGxvYWQgYmFsYW5j aW5nCiAgKgogICogTG9hZCBoaXN0b3J5IG9mIHJ1bnF1ZXVlcyBhbmQgdmNwdXMgaXMgYWNjb3Vu dGVkIGZvciBieSB1c2luZyBhbgpAQCAtNDQxLDYgKzQyOSw0MCBAQCBzdHJ1Y3QgY3NjaGVkMl9k b20gewogfTsKIAogLyoKKyAqIEFjY2Vzc29yIGhlbHBlcnMgZnVuY3Rpb25zLgorICovCitzdGF0 aWMgYWx3YXlzX2lubGluZQorc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqY3NjaGVkMl9wcml2KGNv bnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcykKK3sKKyAgICByZXR1cm4gb3BzLT5zY2hlZF9kYXRh OworfQorCitzdGF0aWMgYWx3YXlzX2lubGluZQorc3RydWN0IGNzY2hlZDJfdmNwdSAqY3NjaGVk Ml92Y3B1KHN0cnVjdCB2Y3B1ICp2KQoreworICAgIHJldHVybiB2LT5zY2hlZF9wcml2OworfQor CitzdGF0aWMgYWx3YXlzX2lubGluZQorc3RydWN0IGNzY2hlZDJfZG9tICpjc2NoZWQyX2RvbShz dHJ1Y3QgZG9tYWluICpkKQoreworICAgIHJldHVybiBkLT5zY2hlZF9wcml2OworfQorCisvKiBD UFUgdG8gcnVucV9pZCBtYWNybyAqLworc3RhdGljIGFsd2F5c19pbmxpbmUgaW50IGMycihjb25z dCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHVuc2lnbmVkIGNwdSkKK3sKKyAgICByZXR1cm4gKGNz Y2hlZDJfcHJpdihvcHMpKS0+cnVucV9tYXBbKGNwdSldOworfQorCisvKiBDUFUgdG8gcnVucXVl dWUgc3RydWN0IG1hY3JvICovCitzdGF0aWMgYWx3YXlzX2lubGluZQorc3RydWN0IGNzY2hlZDJf cnVucXVldWVfZGF0YSAqYzJycWQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB1bnNpZ25l ZCBjcHUpCit7CisgICAgcmV0dXJuICZjc2NoZWQyX3ByaXYob3BzKS0+cnFkW2MycihvcHMsIGNw dSldOworfQorCisvKgogICogSHlwZXJ0aHJlYWRpbmcgKFNNVCkgc3VwcG9ydC4KICAqCiAgKiBX ZSB1c2UgYSBzcGVjaWFsIHBlci1ydW5xIG1hc2sgKHNtdF9pZGxlKSBhbmQgdXBkYXRlIGl0IGFj Y29yZGluZyB0byB0aGUKQEAgLTY5NCw3ICs3MTYsNyBAQCBzdGF0aWMgdm9pZAogX191cGRhdGVf cnVucV9sb2FkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywKICAgICAgICAgICAgICAgICAg IHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwgaW50IGNoYW5nZSwgc190aW1lX3Qg bm93KQogewotICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IENTQ0hFRDJfUFJJVihv cHMpOworICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNzY2hlZDJfcHJpdihvcHMp OwogICAgIHNfdGltZV90IGRlbHRhLCBsb2FkID0gcnFkLT5sb2FkOwogICAgIHVuc2lnbmVkIGlu dCBQLCBXOwogCkBAIC03ODEsNyArODAzLDcgQEAgc3RhdGljIHZvaWQKIF9fdXBkYXRlX3N2Y19s b2FkKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywKICAgICAgICAgICAgICAgICAgIHN0cnVj dCBjc2NoZWQyX3ZjcHUgKnN2YywgaW50IGNoYW5nZSwgc190aW1lX3Qgbm93KQogewotICAgIHN0 cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IENTQ0hFRDJfUFJJVihvcHMpOworICAgIHN0cnVj dCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNzY2hlZDJfcHJpdihvcHMpOwogICAgIHNfdGltZV90 IGRlbHRhLCB2Y3B1X2xvYWQ7CiAgICAgdW5zaWduZWQgaW50IFAsIFc7CiAKQEAgLTg3OCw3ICs5 MDAsNyBAQCBzdGF0aWMgdm9pZAogcnVucV9pbnNlcnQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAq b3BzLCBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpzdmMpCiB7CiAgICAgdW5zaWduZWQgaW50IGNwdSA9 IHN2Yy0+dmNwdS0+cHJvY2Vzc29yOwotICAgIHN0cnVjdCBsaXN0X2hlYWQgKiBydW5xID0gJlJR RChvcHMsIGNwdSktPnJ1bnE7CisgICAgc3RydWN0IGxpc3RfaGVhZCAqIHJ1bnEgPSAmYzJycWQo b3BzLCBjcHUpLT5ydW5xOwogICAgIGludCBwb3MgPSAwOwogCiAgICAgQVNTRVJUKHNwaW5faXNf bG9ja2VkKHBlcl9jcHUoc2NoZWR1bGVfZGF0YSwgY3B1KS5zY2hlZHVsZV9sb2NrKSk7CkBAIC05 MzYsNyArOTU4LDcgQEAgcnVucV90aWNrbGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBz dHJ1Y3QgY3NjaGVkMl92Y3B1ICpuZXcsIHNfdGltZV90IG5vdykKICAgICBpbnQgaSwgaXBpZCA9 IC0xOwogICAgIHNfdGltZV90IGxvd2VzdCA9ICgxPDwzMCk7CiAgICAgdW5zaWduZWQgaW50IGNw dSA9IG5ldy0+dmNwdS0+cHJvY2Vzc29yOwotICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2Rh dGEgKnJxZCA9IFJRRChvcHMsIGNwdSk7CisgICAgc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0 YSAqcnFkID0gYzJycWQob3BzLCBjcHUpOwogICAgIGNwdW1hc2tfdCBtYXNrOwogICAgIHN0cnVj dCBjc2NoZWQyX3ZjcHUgKiBjdXI7CiAKQEAgLTEwMDYsNyArMTAyOCw3IEBAIHJ1bnFfdGlja2xl KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IGNzY2hlZDJfdmNwdSAqbmV3LCBz X3RpbWVfdCBub3cpCiAgICAgY3B1bWFza19hbmQoJm1hc2ssICZtYXNrLCBjcHVtYXNrX3NjcmF0 Y2hfY3B1KGNwdSkpOwogICAgIGlmICggY3B1bWFza190ZXN0X2NwdShjcHUsICZtYXNrKSApCiAg ICAgewotICAgICAgICBjdXIgPSBDU0NIRUQyX1ZDUFUoY3Vycl9vbl9jcHUoY3B1KSk7CisgICAg ICAgIGN1ciA9IGNzY2hlZDJfdmNwdShjdXJyX29uX2NwdShjcHUpKTsKICAgICAgICAgYnVybl9j cmVkaXRzKHJxZCwgY3VyLCBub3cpOwogCiAgICAgICAgIGlmICggY3VyLT5jcmVkaXQgPCBuZXct PmNyZWRpdCApCkBAIC0xMDIzLDcgKzEwNDUsNyBAQCBydW5xX3RpY2tsZShjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMsIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKm5ldywgc190aW1lX3Qgbm93KQog ICAgICAgICBpZiAoIGkgPT0gY3B1ICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg IGN1ciA9IENTQ0hFRDJfVkNQVShjdXJyX29uX2NwdShpKSk7CisgICAgICAgIGN1ciA9IGNzY2hl ZDJfdmNwdShjdXJyX29uX2NwdShpKSk7CiAKICAgICAgICAgLyoKICAgICAgICAgICogRXZlbiBp ZiB0aGUgY3B1IGlzIG5vdCBpbiBycWQtPmlkbGUsIGl0IG1heSBiZSBydW5uaW5nIHRoZQpAQCAt MTA5Niw3ICsxMTE4LDcgQEAgcnVucV90aWNrbGUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3Bz LCBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpuZXcsIHNfdGltZV90IG5vdykKIHN0YXRpYyB2b2lkIHJl c2V0X2NyZWRpdChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUsIHNfdGltZV90 IG5vdywKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpzbmV4 dCkKIHsKLSAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQgPSBSUUQob3BzLCBj cHUpOworICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCA9IGMycnFkKG9wcywg Y3B1KTsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkICppdGVyOwogICAgIGludCBtOwogCkBAIC0xMTc0 LDcgKzExOTYsNyBAQCB2b2lkIGJ1cm5fY3JlZGl0cyhzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9k YXRhICpycWQsCiB7CiAgICAgc190aW1lX3QgZGVsdGE7CiAKLSAgICBBU1NFUlQoc3ZjID09IENT Q0hFRDJfVkNQVShjdXJyX29uX2NwdShzdmMtPnZjcHUtPnByb2Nlc3NvcikpKTsKKyAgICBBU1NF UlQoc3ZjID09IGNzY2hlZDJfdmNwdShjdXJyX29uX2NwdShzdmMtPnZjcHUtPnByb2Nlc3Nvcikp KTsKIAogICAgIGlmICggdW5saWtlbHkoaXNfaWRsZV92Y3B1KHN2Yy0+dmNwdSkpICkKICAgICB7 CkBAIC0xMjYyLDExICsxMjg0LDExIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9tYXhfd2VpZ2h0KHN0 cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwgaW50IG5ld193ZWlnaHQsCiBzdGF0aWMg LyppbmxpbmUqLyB2b2lkCiBfX2NzY2hlZDJfdmNwdV9jaGVjayhzdHJ1Y3QgdmNwdSAqdmMpCiB7 Ci0gICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqIGNvbnN0IHN2YyA9IENTQ0hFRDJfVkNQVSh2Yyk7 CisgICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqIGNvbnN0IHN2YyA9IGNzY2hlZDJfdmNwdSh2Yyk7 CiAgICAgc3RydWN0IGNzY2hlZDJfZG9tICogY29uc3Qgc2RvbSA9IHN2Yy0+c2RvbTsKIAogICAg IEJVR19PTiggc3ZjLT52Y3B1ICE9IHZjICk7Ci0gICAgQlVHX09OKCBzZG9tICE9IENTQ0hFRDJf RE9NKHZjLT5kb21haW4pICk7CisgICAgQlVHX09OKCBzZG9tICE9IGNzY2hlZDJfZG9tKHZjLT5k b21haW4pICk7CiAgICAgaWYgKCBzZG9tICkKICAgICB7CiAgICAgICAgIEJVR19PTiggaXNfaWRs ZV92Y3B1KHZjKSApOwpAQCAtMTMwNiw3ICsxMzI4LDcgQEAgY3NjaGVkMl9hbGxvY192ZGF0YShj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2Yywgdm9pZCAqZGQpCiAg ICAgICAgIHN2Yy0+Y3JlZGl0ID0gQ1NDSEVEMl9DUkVESVRfSU5JVDsKICAgICAgICAgc3ZjLT53 ZWlnaHQgPSBzdmMtPnNkb20tPndlaWdodDsKICAgICAgICAgLyogU3RhcnRpbmcgbG9hZCBvZiA1 MCUgKi8KLSAgICAgICAgc3ZjLT5hdmdsb2FkID0gMVVMTCA8PCAoQ1NDSEVEMl9QUklWKG9wcykt PmxvYWRfcHJlY2lzaW9uX3NoaWZ0IC0gMSk7CisgICAgICAgIHN2Yy0+YXZnbG9hZCA9IDFVTEwg PDwgKGNzY2hlZDJfcHJpdihvcHMpLT5sb2FkX3ByZWNpc2lvbl9zaGlmdCAtIDEpOwogICAgICAg ICBzdmMtPmxvYWRfbGFzdF91cGRhdGUgPSBOT1coKSA+PiBMT0FEQVZHX0dSQU5VTEFSSVRZX1NI SUZUOwogICAgIH0KICAgICBlbHNlCkBAIC0xMzU4LDcgKzEzODAsNyBAQCBydW5xX2Fzc2lnbihj b25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKIAogICAgIEFTU0VS VChzdmMtPnJxZCA9PSBOVUxMKTsKIAotICAgIF9fcnVucV9hc3NpZ24oc3ZjLCBSUUQob3BzLCB2 Yy0+cHJvY2Vzc29yKSk7CisgICAgX19ydW5xX2Fzc2lnbihzdmMsIGMycnFkKG9wcywgdmMtPnBy b2Nlc3NvcikpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTM4Myw3ICsxNDA1LDcgQEAgcnVucV9k ZWFzc2lnbihjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKIHsK ICAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpzdmMgPSB2Yy0+c2NoZWRfcHJpdjsKIAotICAgIEFT U0VSVChzdmMtPnJxZCA9PSBSUUQob3BzLCB2Yy0+cHJvY2Vzc29yKSk7CisgICAgQVNTRVJUKHN2 Yy0+cnFkID09IGMycnFkKG9wcywgdmMtPnByb2Nlc3NvcikpOwogCiAgICAgX19ydW5xX2RlYXNz aWduKHN2Yyk7CiB9CkBAIC0xMzkxLDcgKzE0MTMsNyBAQCBydW5xX2RlYXNzaWduKGNvbnN0IHN0 cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjKQogc3RhdGljIHZvaWQKIGNzY2hl ZDJfdmNwdV9zbGVlcChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2 YykKIHsKLSAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICogY29uc3Qgc3ZjID0gQ1NDSEVEMl9WQ1BV KHZjKTsKKyAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICogY29uc3Qgc3ZjID0gY3NjaGVkMl92Y3B1 KHZjKTsKIAogICAgIEFTU0VSVCghaXNfaWRsZV92Y3B1KHZjKSk7CiAgICAgU0NIRURfU1RBVF9D UkFOSyh2Y3B1X3NsZWVwKTsKQEAgLTE0MDAsNyArMTQyMiw3IEBAIGNzY2hlZDJfdmNwdV9zbGVl cChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKICAgICAgICAg Y3B1X3JhaXNlX3NvZnRpcnEodmMtPnByb2Nlc3NvciwgU0NIRURVTEVfU09GVElSUSk7CiAgICAg ZWxzZSBpZiAoIF9fdmNwdV9vbl9ydW5xKHN2YykgKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHN2 Yy0+cnFkID09IFJRRChvcHMsIHZjLT5wcm9jZXNzb3IpKTsKKyAgICAgICAgQVNTRVJUKHN2Yy0+ cnFkID09IGMycnFkKG9wcywgdmMtPnByb2Nlc3NvcikpOwogICAgICAgICB1cGRhdGVfbG9hZChv cHMsIHN2Yy0+cnFkLCBzdmMsIC0xLCBOT1coKSk7CiAgICAgICAgIF9fcnVucV9yZW1vdmUoc3Zj KTsKICAgICB9CkBAIC0xNDExLDcgKzE0MzMsNyBAQCBjc2NoZWQyX3ZjcHVfc2xlZXAoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCiBzdGF0aWMgdm9pZAogY3Nj aGVkMl92Y3B1X3dha2UoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAq dmMpCiB7Ci0gICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqIGNvbnN0IHN2YyA9IENTQ0hFRDJfVkNQ VSh2Yyk7CisgICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqIGNvbnN0IHN2YyA9IGNzY2hlZDJfdmNw dSh2Yyk7CiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHZjLT5wcm9jZXNzb3I7CiAgICAgc190aW1l X3Qgbm93OwogCkBAIC0xNDQ5LDcgKzE0NzEsNyBAQCBjc2NoZWQyX3ZjcHVfd2FrZShjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YykKICAgICBpZiAoIHN2Yy0+cnFk ID09IE5VTEwgKQogICAgICAgICBydW5xX2Fzc2lnbihvcHMsIHZjKTsKICAgICBlbHNlCi0gICAg ICAgIEFTU0VSVChSUUQob3BzLCB2Yy0+cHJvY2Vzc29yKSA9PSBzdmMtPnJxZCApOworICAgICAg ICBBU1NFUlQoYzJycWQob3BzLCB2Yy0+cHJvY2Vzc29yKSA9PSBzdmMtPnJxZCApOwogCiAgICAg bm93ID0gTk9XKCk7CiAKQEAgLTE0NjYsNyArMTQ4OCw3IEBAIG91dDoKIHN0YXRpYyB2b2lkCiBj c2NoZWQyX3ZjcHVfeWllbGQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNw dSAqdikKIHsKLSAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICogY29uc3Qgc3ZjID0gQ1NDSEVEMl9W Q1BVKHYpOworICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKiBjb25zdCBzdmMgPSBjc2NoZWQyX3Zj cHUodik7CiAKICAgICBfX3NldF9iaXQoX19DU0ZMQUdfdmNwdV95aWVsZCwgJnN2Yy0+ZmxhZ3Mp OwogfQpAQCAtMTQ3NCwxMiArMTQ5NiwxMiBAQCBjc2NoZWQyX3ZjcHVfeWllbGQoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdikKIHN0YXRpYyB2b2lkCiBjc2NoZWQy X2NvbnRleHRfc2F2ZWQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAq dmMpCiB7Ci0gICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqIGNvbnN0IHN2YyA9IENTQ0hFRDJfVkNQ VSh2Yyk7CisgICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqIGNvbnN0IHN2YyA9IGNzY2hlZDJfdmNw dSh2Yyk7CiAgICAgc3BpbmxvY2tfdCAqbG9jayA9IHZjcHVfc2NoZWR1bGVfbG9ja19pcnEodmMp OwogICAgIHNfdGltZV90IG5vdyA9IE5PVygpOwogCi0gICAgQlVHX09OKCAhaXNfaWRsZV92Y3B1 KHZjKSAmJiBzdmMtPnJxZCAhPSBSUUQob3BzLCB2Yy0+cHJvY2Vzc29yKSk7Ci0gICAgQVNTRVJU KGlzX2lkbGVfdmNwdSh2YykgfHwgc3ZjLT5ycWQgPT0gUlFEKG9wcywgdmMtPnByb2Nlc3Nvcikp OworICAgIEJVR19PTiggIWlzX2lkbGVfdmNwdSh2YykgJiYgc3ZjLT5ycWQgIT0gYzJycWQob3Bz LCB2Yy0+cHJvY2Vzc29yKSk7CisgICAgQVNTRVJUKGlzX2lkbGVfdmNwdSh2YykgfHwgc3ZjLT5y cWQgPT0gYzJycWQob3BzLCB2Yy0+cHJvY2Vzc29yKSk7CiAKICAgICAvKiBUaGlzIHZjcHUgaXMg bm93IGVsaWdpYmxlIHRvIGJlIHB1dCBvbiB0aGUgcnVucXVldWUgYWdhaW4gKi8KICAgICBfX2Ns ZWFyX2JpdChfX0NTRkxBR19zY2hlZHVsZWQsICZzdmMtPmZsYWdzKTsKQEAgLTE1MTAsOSArMTUz Miw5IEBAIGNzY2hlZDJfY29udGV4dF9zYXZlZChjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMs IHN0cnVjdCB2Y3B1ICp2YykKIHN0YXRpYyBpbnQKIGNzY2hlZDJfY3B1X3BpY2soY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCiB7Ci0gICAgc3RydWN0IGNzY2hl ZDJfcHJpdmF0ZSAqcHJ2ID0gQ1NDSEVEMl9QUklWKG9wcyk7CisgICAgc3RydWN0IGNzY2hlZDJf cHJpdmF0ZSAqcHJ2ID0gY3NjaGVkMl9wcml2KG9wcyk7CiAgICAgaW50IGksIG1pbl9ycWkgPSAt MSwgbmV3X2NwdSwgY3B1ID0gdmMtPnByb2Nlc3NvcjsKLSAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1 ICpzdmMgPSBDU0NIRUQyX1ZDUFUodmMpOworICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKnN2YyA9 IGNzY2hlZDJfdmNwdSh2Yyk7CiAgICAgc190aW1lX3QgbWluX2F2Z2xvYWQgPSBNQVhfTE9BRDsK IAogICAgIEFTU0VSVCghY3B1bWFza19lbXB0eSgmcHJ2LT5hY3RpdmVfcXVldWVzKSk7CkBAIC0x Nzc1LDcgKzE3OTcsNyBAQCBzdGF0aWMgYm9vbF90IHZjcHVfaXNfbWlncmF0ZWFibGUoc3RydWN0 IGNzY2hlZDJfdmNwdSAqc3ZjLAogCiBzdGF0aWMgdm9pZCBiYWxhbmNlX2xvYWQoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1LCBzX3RpbWVfdCBub3cpCiB7Ci0gICAgc3RydWN0 IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2ID0gQ1NDSEVEMl9QUklWKG9wcyk7CisgICAgc3RydWN0IGNz Y2hlZDJfcHJpdmF0ZSAqcHJ2ID0gY3NjaGVkMl9wcml2KG9wcyk7CiAgICAgaW50IGksIG1heF9k ZWx0YV9ycWkgPSAtMTsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwdXNoX2l0ZXIsICpwdWxsX2l0 ZXI7CiAgICAgYm9vbF90IGlubmVyX2xvYWRfdXBkYXRlZCA9IDA7CkBAIC0xNzkwLDcgKzE4MTIs NyBAQCBzdGF0aWMgdm9pZCBiYWxhbmNlX2xvYWQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3Bz LCBpbnQgY3B1LCBzX3RpbWVfdCBub3cpCiAgICAgICovCiAKICAgICBBU1NFUlQoc3Bpbl9pc19s b2NrZWQocGVyX2NwdShzY2hlZHVsZV9kYXRhLCBjcHUpLnNjaGVkdWxlX2xvY2spKTsKLSAgICBz dC5scnFkID0gUlFEKG9wcywgY3B1KTsKKyAgICBzdC5scnFkID0gYzJycWQob3BzLCBjcHUpOwog CiAgICAgX191cGRhdGVfcnVucV9sb2FkKG9wcywgc3QubHJxZCwgMCwgbm93KTsKIApAQCAtMTk2 MSwxMiArMTk4MywxMiBAQCBjc2NoZWQyX3ZjcHVfbWlncmF0ZSgKICAgICBjb25zdCBzdHJ1Y3Qg c2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YywgdW5zaWduZWQgaW50IG5ld19jcHUpCiB7 CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHZjLT5kb21haW47Ci0gICAgc3RydWN0IGNzY2hlZDJf dmNwdSAqIGNvbnN0IHN2YyA9IENTQ0hFRDJfVkNQVSh2Yyk7CisgICAgc3RydWN0IGNzY2hlZDJf dmNwdSAqIGNvbnN0IHN2YyA9IGNzY2hlZDJfdmNwdSh2Yyk7CiAgICAgc3RydWN0IGNzY2hlZDJf cnVucXVldWVfZGF0YSAqdHJxZDsKICAgICBzX3RpbWVfdCBub3cgPSBOT1coKTsKIAogICAgIC8q IENoZWNrIGlmIG5ld19jcHUgaXMgdmFsaWQgKi8KLSAgICBBU1NFUlQoY3B1bWFza190ZXN0X2Nw dShuZXdfY3B1LCAmQ1NDSEVEMl9QUklWKG9wcyktPmluaXRpYWxpemVkKSk7CisgICAgQVNTRVJU KGNwdW1hc2tfdGVzdF9jcHUobmV3X2NwdSwgJmNzY2hlZDJfcHJpdihvcHMpLT5pbml0aWFsaXpl ZCkpOwogICAgIEFTU0VSVChjcHVtYXNrX3Rlc3RfY3B1KG5ld19jcHUsIHZjLT5jcHVfaGFyZF9h ZmZpbml0eSkpOwogCiAgICAgLyoKQEAgLTE5OTcsNyArMjAxOSw3IEBAIGNzY2hlZDJfdmNwdV9t aWdyYXRlKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdHJxZCA9IFJRRChvcHMsIG5l d19jcHUpOworICAgIHRycWQgPSBjMnJxZChvcHMsIG5ld19jcHUpOwogCiAgICAgLyoKICAgICAg KiBEbyB0aGUgYWN0dWFsIG1vdmVtZW50IHRvd2FyZCBuZXdfY3B1LCBhbmQgdXBkYXRlIHZjLT5w cm9jZXNzb3IuCkBAIC0yMDE5LDggKzIwNDEsOCBAQCBjc2NoZWQyX2RvbV9jbnRsKAogICAgIHN0 cnVjdCBkb21haW4gKmQsCiAgICAgc3RydWN0IHhlbl9kb21jdGxfc2NoZWR1bGVyX29wICpvcCkK IHsKLSAgICBzdHJ1Y3QgY3NjaGVkMl9kb20gKiBjb25zdCBzZG9tID0gQ1NDSEVEMl9ET00oZCk7 Ci0gICAgc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2ID0gQ1NDSEVEMl9QUklWKG9wcyk7Cisg ICAgc3RydWN0IGNzY2hlZDJfZG9tICogY29uc3Qgc2RvbSA9IGNzY2hlZDJfZG9tKGQpOworICAg IHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNzY2hlZDJfcHJpdihvcHMpOwogICAgIHVu c2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgaW50IHJjID0gMDsKIApAQCAtMjA1MywxMCArMjA3NSwx MCBAQCBjc2NoZWQyX2RvbV9jbnRsKAogICAgICAgICAgICAgLyogVXBkYXRlIHdlaWdodHMgZm9y IHZjcHVzLCBhbmQgbWF4X3dlaWdodCBmb3IgcnVucXVldWVzIG9uIHdoaWNoIHRoZXkgcmVzaWRl ICovCiAgICAgICAgICAgICBmb3JfZWFjaF92Y3B1ICggZCwgdiApCiAgICAgICAgICAgICB7Ci0g ICAgICAgICAgICAgICAgc3RydWN0IGNzY2hlZDJfdmNwdSAqc3ZjID0gQ1NDSEVEMl9WQ1BVKHYp OworICAgICAgICAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKnN2YyA9IGNzY2hlZDJfdmNw dSh2KTsKICAgICAgICAgICAgICAgICBzcGlubG9ja190ICpsb2NrID0gdmNwdV9zY2hlZHVsZV9s b2NrKHN2Yy0+dmNwdSk7CiAKLSAgICAgICAgICAgICAgICBBU1NFUlQoc3ZjLT5ycWQgPT0gUlFE KG9wcywgc3ZjLT52Y3B1LT5wcm9jZXNzb3IpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3Zj LT5ycWQgPT0gYzJycWQob3BzLCBzdmMtPnZjcHUtPnByb2Nlc3NvcikpOwogCiAgICAgICAgICAg ICAgICAgc3ZjLT53ZWlnaHQgPSBzZG9tLT53ZWlnaHQ7CiAgICAgICAgICAgICAgICAgdXBkYXRl X21heF93ZWlnaHQoc3ZjLT5ycWQsIHN2Yy0+d2VpZ2h0LCBvbGRfd2VpZ2h0KTsKQEAgLTIwODAs NyArMjEwMiw3IEBAIHN0YXRpYyBpbnQgY3NjaGVkMl9zeXNfY250bChjb25zdCBzdHJ1Y3Qgc2No ZWR1bGVyICpvcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhlbl9zeXNj dGxfc2NoZWR1bGVyX29wICpzYykKIHsKICAgICB4ZW5fc3lzY3RsX2NyZWRpdDJfc2NoZWR1bGVf dCAqcGFyYW1zID0gJnNjLT51LnNjaGVkX2NyZWRpdDI7Ci0gICAgc3RydWN0IGNzY2hlZDJfcHJp dmF0ZSAqcHJ2ID0gQ1NDSEVEMl9QUklWKG9wcyk7CisgICAgc3RydWN0IGNzY2hlZDJfcHJpdmF0 ZSAqcHJ2ID0gY3NjaGVkMl9wcml2KG9wcyk7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKIAog ICAgIHN3aXRjaCAoc2MtPmNtZCApCkBAIC0yMTExLDcgKzIxMzMsNyBAQCBzdGF0aWMgaW50IGNz Y2hlZDJfc3lzX2NudGwoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAogc3RhdGljIHZvaWQg KgogY3NjaGVkMl9hbGxvY19kb21kYXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3Ry dWN0IGRvbWFpbiAqZG9tKQogewotICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IENT Q0hFRDJfUFJJVihvcHMpOworICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNzY2hl ZDJfcHJpdihvcHMpOwogICAgIHN0cnVjdCBjc2NoZWQyX2RvbSAqc2RvbTsKICAgICB1bnNpZ25l ZCBsb25nIGZsYWdzOwogCkBAIC0yMTI3LDcgKzIxNDksNyBAQCBjc2NoZWQyX2FsbG9jX2RvbWRh dGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgZG9tYWluICpkb20pCiAKICAg ICB3cml0ZV9sb2NrX2lycXNhdmUoJnBydi0+bG9jaywgZmxhZ3MpOwogCi0gICAgbGlzdF9hZGRf dGFpbCgmc2RvbS0+c2RvbV9lbGVtLCAmQ1NDSEVEMl9QUklWKG9wcyktPnNkb20pOworICAgIGxp c3RfYWRkX3RhaWwoJnNkb20tPnNkb21fZWxlbSwgJmNzY2hlZDJfcHJpdihvcHMpLT5zZG9tKTsK IAogICAgIHdyaXRlX3VubG9ja19pcnFyZXN0b3JlKCZwcnYtPmxvY2ssIGZsYWdzKTsKIApAQCAt MjE1Niw3ICsyMTc4LDcgQEAgY3NjaGVkMl9mcmVlX2RvbWRhdGEoY29uc3Qgc3RydWN0IHNjaGVk dWxlciAqb3BzLCB2b2lkICpkYXRhKQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAg c3RydWN0IGNzY2hlZDJfZG9tICpzZG9tID0gZGF0YTsKLSAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2 YXRlICpwcnYgPSBDU0NIRUQyX1BSSVYob3BzKTsKKyAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRl ICpwcnYgPSBjc2NoZWQyX3ByaXYob3BzKTsKIAogICAgIHdyaXRlX2xvY2tfaXJxc2F2ZSgmcHJ2 LT5sb2NrLCBmbGFncyk7CiAKQEAgLTIxNzAsOSArMjE5Miw5IEBAIGNzY2hlZDJfZnJlZV9kb21k YXRhKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqZGF0YSkKIHN0YXRpYyB2b2lk CiBjc2NoZWQyX2RvbV9kZXN0cm95KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0 IGRvbWFpbiAqZG9tKQogewotICAgIEFTU0VSVChDU0NIRUQyX0RPTShkb20pLT5ucl92Y3B1cyA9 PSAwKTsKKyAgICBBU1NFUlQoY3NjaGVkMl9kb20oZG9tKS0+bnJfdmNwdXMgPT0gMCk7CiAKLSAg ICBjc2NoZWQyX2ZyZWVfZG9tZGF0YShvcHMsIENTQ0hFRDJfRE9NKGRvbSkpOworICAgIGNzY2hl ZDJfZnJlZV9kb21kYXRhKG9wcywgY3NjaGVkMl9kb20oZG9tKSk7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC0yMjE3LDcgKzIyMzksNyBAQCBjc2NoZWQyX2ZyZWVfdmRhdGEoY29uc3Qgc3RydWN0IHNj aGVkdWxlciAqb3BzLCB2b2lkICpwcml2KQogc3RhdGljIHZvaWQKIGNzY2hlZDJfdmNwdV9yZW1v dmUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMpCiB7Ci0gICAg c3RydWN0IGNzY2hlZDJfdmNwdSAqIGNvbnN0IHN2YyA9IENTQ0hFRDJfVkNQVSh2Yyk7CisgICAg c3RydWN0IGNzY2hlZDJfdmNwdSAqIGNvbnN0IHN2YyA9IGNzY2hlZDJfdmNwdSh2Yyk7CiAgICAg c3BpbmxvY2tfdCAqbG9jazsKIAogICAgIEFTU0VSVCghaXNfaWRsZV92Y3B1KHZjKSk7CkBAIC0y MjQyLDkgKzIyNjQsOSBAQCBjc2NoZWQyX3J1bnRpbWUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAq b3BzLCBpbnQgY3B1LAogewogICAgIHNfdGltZV90IHRpbWUsIG1pbl90aW1lOwogICAgIGludCBy dF9jcmVkaXQ7IC8qIFByb3Bvc2VkIHJ1bnRpbWUgbWVhc3VyZWQgaW4gY3JlZGl0cyAqLwotICAg IHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCA9IFJRRChvcHMsIGNwdSk7CisgICAg c3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0YSAqcnFkID0gYzJycWQob3BzLCBjcHUpOwogICAg IHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEgPSAmcnFkLT5ydW5xOwotICAgIHN0cnVjdCBjc2NoZWQy X3ByaXZhdGUgKnBydiA9IENTQ0hFRDJfUFJJVihvcHMpOworICAgIHN0cnVjdCBjc2NoZWQyX3By aXZhdGUgKnBydiA9IGNzY2hlZDJfcHJpdihvcHMpOwogCiAgICAgLyoKICAgICAgKiBJZiB3ZSdy ZSBpZGxlLCBqdXN0IHN0YXkgc28uIE90aGVycyAob3IgZXh0ZXJuYWwgZXZlbnRzKQpAQCAtMjMz Myw3ICsyMzU1LDcgQEAgcnVucV9jYW5kaWRhdGUoc3RydWN0IGNzY2hlZDJfcnVucXVldWVfZGF0 YSAqcnFkLAogewogICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7CiAgICAgc3RydWN0IGNzY2hl ZDJfdmNwdSAqc25leHQgPSBOVUxMOwotICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9 IENTQ0hFRDJfUFJJVihwZXJfY3B1KHNjaGVkdWxlciwgY3B1KSk7CisgICAgc3RydWN0IGNzY2hl ZDJfcHJpdmF0ZSAqcHJ2ID0gY3NjaGVkMl9wcml2KHBlcl9jcHUoc2NoZWR1bGVyLCBjcHUpKTsK ICAgICBib29sIHlpZWxkID0gX190ZXN0X2FuZF9jbGVhcl9iaXQoX19DU0ZMQUdfdmNwdV95aWVs ZCwgJnNjdXJyLT5mbGFncyk7CiAKICAgICAqc2tpcHBlZCA9IDA7CkBAIC0yMzcyLDcgKzIzOTQs NyBAQCBydW5xX2NhbmRpZGF0ZShzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAg ICAgaWYgKCB2Y3B1X3J1bm5hYmxlKHNjdXJyLT52Y3B1KSApCiAgICAgICAgIHNuZXh0ID0gc2N1 cnI7CiAgICAgZWxzZQotICAgICAgICBzbmV4dCA9IENTQ0hFRDJfVkNQVShpZGxlX3ZjcHVbY3B1 XSk7CisgICAgICAgIHNuZXh0ID0gY3NjaGVkMl92Y3B1KGlkbGVfdmNwdVtjcHVdKTsKIAogICAg IGxpc3RfZm9yX2VhY2goIGl0ZXIsICZycWQtPnJ1bnEgKQogICAgIHsKQEAgLTI0NTIsNyArMjQ3 NCw3IEBAIGNzY2hlZDJfc2NoZWR1bGUoCiB7CiAgICAgY29uc3QgaW50IGNwdSA9IHNtcF9wcm9j ZXNzb3JfaWQoKTsKICAgICBzdHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQ7Ci0gICAg c3RydWN0IGNzY2hlZDJfdmNwdSAqIGNvbnN0IHNjdXJyID0gQ1NDSEVEMl9WQ1BVKGN1cnJlbnQp OworICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKiBjb25zdCBzY3VyciA9IGNzY2hlZDJfdmNwdShj dXJyZW50KTsKICAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1ICpzbmV4dCA9IE5VTEw7CiAgICAgdW5z aWduZWQgaW50IHNraXBwZWRfdmNwdXMgPSAwOwogICAgIHN0cnVjdCB0YXNrX3NsaWNlIHJldDsK QEAgLTI0NjEsOSArMjQ4Myw5IEBAIGNzY2hlZDJfc2NoZWR1bGUoCiAgICAgU0NIRURfU1RBVF9D UkFOSyhzY2hlZHVsZSk7CiAgICAgQ1NDSEVEMl9WQ1BVX0NIRUNLKGN1cnJlbnQpOwogCi0gICAg QlVHX09OKCFjcHVtYXNrX3Rlc3RfY3B1KGNwdSwgJkNTQ0hFRDJfUFJJVihvcHMpLT5pbml0aWFs aXplZCkpOworICAgIEJVR19PTighY3B1bWFza190ZXN0X2NwdShjcHUsICZjc2NoZWQyX3ByaXYo b3BzKS0+aW5pdGlhbGl6ZWQpKTsKIAotICAgIHJxZCA9IFJRRChvcHMsIGNwdSk7CisgICAgcnFk ID0gYzJycWQob3BzLCBjcHUpOwogICAgIEJVR19PTighY3B1bWFza190ZXN0X2NwdShjcHUsICZy cWQtPmFjdGl2ZSkpOwogCiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKHBlcl9jcHUoc2NoZWR1 bGVfZGF0YSwgY3B1KS5zY2hlZHVsZV9sb2NrKSk7CkBAIC0yNTIxLDcgKzI1NDMsNyBAQCBjc2No ZWQyX3NjaGVkdWxlKAogICAgIHsKICAgICAgICAgX19jbGVhcl9iaXQoX19DU0ZMQUdfdmNwdV95 aWVsZCwgJnNjdXJyLT5mbGFncyk7CiAgICAgICAgIHRyYWNlX3ZhcihUUkNfQ1NDSEVEMl9TQ0hF RF9UQVNLTEVULCAxLCAwLCBOVUxMKTsKLSAgICAgICAgc25leHQgPSBDU0NIRUQyX1ZDUFUoaWRs ZV92Y3B1W2NwdV0pOworICAgICAgICBzbmV4dCA9IGNzY2hlZDJfdmNwdShpZGxlX3ZjcHVbY3B1 XSk7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgc25leHQgPSBydW5xX2NhbmRpZGF0ZShycWQs IHNjdXJyLCBjcHUsIG5vdywgJnNraXBwZWRfdmNwdXMpOwpAQCAtMjY0Miw3ICsyNjY0LDcgQEAg Y3NjaGVkMl9kdW1wX3ZjcHUoc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2LCBzdHJ1Y3QgY3Nj aGVkMl92Y3B1ICpzdmMpCiBzdGF0aWMgdm9pZAogY3NjaGVkMl9kdW1wX3BjcHUoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1KQogewotICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZh dGUgKnBydiA9IENTQ0hFRDJfUFJJVihvcHMpOworICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUg KnBydiA9IGNzY2hlZDJfcHJpdihvcHMpOwogICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJ1bnEsICpp dGVyOwogICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKnN2YzsKICAgICB1bnNpZ25lZCBsb25nIGZs YWdzOwpAQCAtMjY2MSw3ICsyNjgzLDcgQEAgY3NjaGVkMl9kdW1wX3BjcHUoY29uc3Qgc3RydWN0 IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1KQogICAgIGxvY2sgPSBwZXJfY3B1KHNjaGVkdWxlX2Rh dGEsIGNwdSkuc2NoZWR1bGVfbG9jazsKICAgICBzcGluX2xvY2sobG9jayk7CiAKLSAgICBydW5x ID0gJlJRRChvcHMsIGNwdSktPnJ1bnE7CisgICAgcnVucSA9ICZjMnJxZChvcHMsIGNwdSktPnJ1 bnE7CiAKICAgICBjcHVtYXNrX3NjbnByaW50ZihjcHVzdHIsIHNpemVvZihjcHVzdHIpLCBwZXJf Y3B1KGNwdV9zaWJsaW5nX21hc2ssIGNwdSkpOwogICAgIHByaW50aygiIHNpYmxpbmc9JXMsICIs IGNwdXN0cik7CkBAIC0yNjY5LDcgKzI2OTEsNyBAQCBjc2NoZWQyX2R1bXBfcGNwdShjb25zdCBz dHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUpCiAgICAgcHJpbnRrKCJjb3JlPSVzXG4iLCBj cHVzdHIpOwogCiAgICAgLyogY3VycmVudCBWQ1BVICovCi0gICAgc3ZjID0gQ1NDSEVEMl9WQ1BV KGN1cnJfb25fY3B1KGNwdSkpOworICAgIHN2YyA9IGNzY2hlZDJfdmNwdShjdXJyX29uX2NwdShj cHUpKTsKICAgICBpZiAoIHN2YyApCiAgICAgewogICAgICAgICBwcmludGsoIlx0cnVuOiAiKTsK QEAgLTI2OTYsNyArMjcxOCw3IEBAIHN0YXRpYyB2b2lkCiBjc2NoZWQyX2R1bXAoY29uc3Qgc3Ry dWN0IHNjaGVkdWxlciAqb3BzKQogewogICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXJfc2RvbTsK LSAgICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBDU0NIRUQyX1BSSVYob3BzKTsKKyAg ICBzdHJ1Y3QgY3NjaGVkMl9wcml2YXRlICpwcnYgPSBjc2NoZWQyX3ByaXYob3BzKTsKICAgICB1 bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIGludCBpLCBsb29wOwogI2RlZmluZSBjcHVzdHIga2V5 aGFuZGxlcl9zY3JhdGNoCkBAIC0yNzU2LDcgKzI3NzgsNyBAQCBjc2NoZWQyX2R1bXAoY29uc3Qg c3RydWN0IHNjaGVkdWxlciAqb3BzKQogCiAgICAgICAgIGZvcl9lYWNoX3ZjcHUoIHNkb20tPmRv bSwgdiApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdCBjc2NoZWQyX3ZjcHUgKiBjb25z dCBzdmMgPSBDU0NIRUQyX1ZDUFUodik7CisgICAgICAgICAgICBzdHJ1Y3QgY3NjaGVkMl92Y3B1 ICogY29uc3Qgc3ZjID0gY3NjaGVkMl92Y3B1KHYpOwogICAgICAgICAgICAgc3BpbmxvY2tfdCAq bG9jazsKIAogICAgICAgICAgICAgbG9jayA9IHZjcHVfc2NoZWR1bGVfbG9jayhzdmMtPnZjcHUp OwpAQCAtMjg5OSw3ICsyOTIxLDcgQEAgaW5pdF9wZGF0YShzdHJ1Y3QgY3NjaGVkMl9wcml2YXRl ICpwcnYsIHVuc2lnbmVkIGludCBjcHUpCiBzdGF0aWMgdm9pZAogY3NjaGVkMl9pbml0X3BkYXRh KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcGRhdGEsIGludCBjcHUpCiB7Ci0g ICAgc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2ID0gQ1NDSEVEMl9QUklWKG9wcyk7CisgICAg c3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2ID0gY3NjaGVkMl9wcml2KG9wcyk7CiAgICAgc3Bp bmxvY2tfdCAqb2xkX2xvY2s7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICB1bnNpZ25l ZCBycWk7CkBAIC0yOTI3LDcgKzI5NDksNyBAQCBzdGF0aWMgdm9pZAogY3NjaGVkMl9zd2l0Y2hf c2NoZWQoc3RydWN0IHNjaGVkdWxlciAqbmV3X29wcywgdW5zaWduZWQgaW50IGNwdSwKICAgICAg ICAgICAgICAgICAgICAgIHZvaWQgKnBkYXRhLCB2b2lkICp2ZGF0YSkKIHsKLSAgICBzdHJ1Y3Qg Y3NjaGVkMl9wcml2YXRlICpwcnYgPSBDU0NIRUQyX1BSSVYobmV3X29wcyk7CisgICAgc3RydWN0 IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2ID0gY3NjaGVkMl9wcml2KG5ld19vcHMpOwogICAgIHN0cnVj dCBjc2NoZWQyX3ZjcHUgKnN2YyA9IHZkYXRhOwogICAgIHVuc2lnbmVkIHJxaTsKIApAQCAtMjk3 NCw3ICsyOTk2LDcgQEAgc3RhdGljIHZvaWQKIGNzY2hlZDJfZGVpbml0X3BkYXRhKGNvbnN0IHN0 cnVjdCBzY2hlZHVsZXIgKm9wcywgdm9pZCAqcGNwdSwgaW50IGNwdSkKIHsKICAgICB1bnNpZ25l ZCBsb25nIGZsYWdzOwotICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IENTQ0hFRDJf UFJJVihvcHMpOworICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNzY2hlZDJfcHJp dihvcHMpOwogICAgIHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZDsKICAgICBpbnQg cnFpOwogCkBAIC0zMDgzLDcgKzMxMDUsNyBAQCBjc2NoZWQyX2RlaW5pdChzdHJ1Y3Qgc2NoZWR1 bGVyICpvcHMpCiB7CiAgICAgc3RydWN0IGNzY2hlZDJfcHJpdmF0ZSAqcHJ2OwogCi0gICAgcHJ2 ID0gQ1NDSEVEMl9QUklWKG9wcyk7CisgICAgcHJ2ID0gY3NjaGVkMl9wcml2KG9wcyk7CiAgICAg b3BzLT5zY2hlZF9kYXRhID0gTlVMTDsKICAgICB4ZnJlZShwcnYpOwogfQoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=