From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1295C32756 for ; Fri, 9 Aug 2019 14:59:19 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 78E94208C4 for ; Fri, 9 Aug 2019 14:59:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 78E94208C4 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hw6MB-0006tT-9G; Fri, 09 Aug 2019 14:59:03 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hw6M1-0006Zt-68 for xen-devel@lists.xenproject.org; Fri, 09 Aug 2019 14:58:53 +0000 X-Inumbo-ID: 2ea544fe-bab6-11e9-9bb7-f37360988314 Received: from mx1.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 2ea544fe-bab6-11e9-9bb7-f37360988314; Fri, 09 Aug 2019 14:58:44 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 66D6CB08C; Fri, 9 Aug 2019 14:58:43 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Fri, 9 Aug 2019 16:58:01 +0200 Message-Id: <20190809145833.1020-17-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20190809145833.1020-1-jgross@suse.com> References: <20190809145833.1020-1-jgross@suse.com> Subject: [Xen-devel] [PATCH v2 16/48] xen/sched: make credit scheduler vcpu agnostic. X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , George Dunlap , Dario Faggioli MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" U3dpdGNoIGNyZWRpdCBzY2hlZHVsZXIgY29tcGxldGVseSBmcm9tIHZjcHUgdG8gc2NoZWRfdW5p dCB1c2FnZS4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4K LS0tCiB4ZW4vY29tbW9uL3NjaGVkX2NyZWRpdC5jIHwgNTAzICsrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNTAgaW5zZXJ0aW9u cygrKSwgMjUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vc2NoZWRfY3Jl ZGl0LmMgYi94ZW4vY29tbW9uL3NjaGVkX2NyZWRpdC5jCmluZGV4IDE0M2M3NTQzZTguLjYwZWI0 ZDMyNDQgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWRfY3JlZGl0LmMKKysrIGIveGVuL2Nv bW1vbi9zY2hlZF9jcmVkaXQuYwpAQCAtNzAsMTAgKzcwLDEwIEBACiAgKiBpbmNvbnNpc3RlbnQg c2V0IG9mIGxvY2tzLiBUaGVyZWZvcmUgYXRvbWljLXNhZmUgYml0IG9wZXJhdGlvbnMgbXVzdAog ICogYmUgdXNlZCBmb3IgYWNjZXNzaW5nIGl0LgogICovCi0jZGVmaW5lIENTQ0hFRF9GTEFHX1ZD UFVfUEFSS0VEICAgIDB4MCAgLyogVkNQVSBvdmVyIGNhcHBlZCBjcmVkaXRzICovCi0jZGVmaW5l IENTQ0hFRF9GTEFHX1ZDUFVfWUlFTEQgICAgIDB4MSAgLyogVkNQVSB5aWVsZGluZyAqLwotI2Rl ZmluZSBDU0NIRURfRkxBR19WQ1BVX01JR1JBVElORyAweDIgIC8qIFZDUFUgbWF5IGhhdmUgbW92 ZWQgdG8gYSBuZXcgcGNwdSAqLwotI2RlZmluZSBDU0NIRURfRkxBR19WQ1BVX1BJTk5FRCAgICAw eDQgIC8qIFZDUFUgY2FuIHJ1biBvbmx5IG9uIDEgcGNwdSAqLworI2RlZmluZSBDU0NIRURfRkxB R19VTklUX1BBUktFRCAgICAweDAgIC8qIFVOSVQgb3ZlciBjYXBwZWQgY3JlZGl0cyAqLworI2Rl ZmluZSBDU0NIRURfRkxBR19VTklUX1lJRUxEICAgICAweDEgIC8qIFVOSVQgeWllbGRpbmcgKi8K KyNkZWZpbmUgQ1NDSEVEX0ZMQUdfVU5JVF9NSUdSQVRJTkcgMHgyICAvKiBVTklUIG1heSBoYXZl IG1vdmVkIHRvIGEgbmV3IHBjcHUgKi8KKyNkZWZpbmUgQ1NDSEVEX0ZMQUdfVU5JVF9QSU5ORUQg ICAgMHg0ICAvKiBVTklUIGNhbiBydW4gb25seSBvbiAxIHBjcHUgKi8KIAogCiAvKgpAQCAtOTEs NyArOTEsNyBAQAogLyoKICAqIENTQ0hFRF9TVEFUUwogICoKLSAqIE1hbmFnZSB2ZXJ5IGJhc2lj IHBlci12Q1BVIGNvdW50ZXJzIGFuZCBzdGF0cy4KKyAqIE1hbmFnZSB2ZXJ5IGJhc2ljIHBlci11 bml0IGNvdW50ZXJzIGFuZCBzdGF0cy4KICAqCiAgKiBVc2VmdWwgZm9yIGRlYnVnZ2luZyBsaXZl IHN5c3RlbXMuIFRoZSBzdGF0cyBhcmUgZGlzcGxheWVkCiAgKiB3aXRoIHJ1bnEgZHVtcHMgKCdy JyBvbiB0aGUgWGVuIGNvbnNvbGUpLgpAQCAtMTAwLDIzICsxMDAsMjMgQEAKIAogI2RlZmluZSBD U0NIRURfU1RBVFMKIAotI2RlZmluZSBTQ0hFRF9WQ1BVX1NUQVRTX1JFU0VUKF9WKSAgICAgICAg ICAgICAgICAgICAgICBcCisjZGVmaW5lIFNDSEVEX1VOSVRfU1RBVFNfUkVTRVQoX1YpICAgICAg ICAgICAgICAgICAgICAgIFwKICAgICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIG1lbXNldCgmKF9WKS0+c3RhdHMsIDAsIHNp emVvZigoX1YpLT5zdGF0cykpOyAgIFwKICAgICB9IHdoaWxlICggMCApCiAKLSNkZWZpbmUgU0NI RURfVkNQVV9TVEFUX0NSQU5LKF9WLCBfWCkgICAgICAgKCgoX1YpLT5zdGF0cy5fWCkrKykKKyNk ZWZpbmUgU0NIRURfVU5JVF9TVEFUX0NSQU5LKF9WLCBfWCkgICAgICAgKCgoX1YpLT5zdGF0cy5f WCkrKykKIAotI2RlZmluZSBTQ0hFRF9WQ1BVX1NUQVRfU0VUKF9WLCBfWCwgX1kpICAgICAoKChf ViktPnN0YXRzLl9YKSA9IChfWSkpCisjZGVmaW5lIFNDSEVEX1VOSVRfU1RBVF9TRVQoX1YsIF9Y LCBfWSkgICAgICgoKF9WKS0+c3RhdHMuX1gpID0gKF9ZKSkKIAogI2Vsc2UgLyogIVNDSEVEX1NU QVRTICovCiAKICN1bmRlZiBDU0NIRURfU1RBVFMKIAotI2RlZmluZSBTQ0hFRF9WQ1BVX1NUQVRT X1JFU0VUKF9WKSAgICAgICAgIGRvIHt9IHdoaWxlICggMCApCi0jZGVmaW5lIFNDSEVEX1ZDUFVf U1RBVF9DUkFOSyhfViwgX1gpICAgICAgZG8ge30gd2hpbGUgKCAwICkKLSNkZWZpbmUgU0NIRURf VkNQVV9TVEFUX1NFVChfViwgX1gsIF9ZKSAgICBkbyB7fSB3aGlsZSAoIDAgKQorI2RlZmluZSBT Q0hFRF9VTklUX1NUQVRTX1JFU0VUKF9WKSAgICAgICAgIGRvIHt9IHdoaWxlICggMCApCisjZGVm aW5lIFNDSEVEX1VOSVRfU1RBVF9DUkFOSyhfViwgX1gpICAgICAgZG8ge30gd2hpbGUgKCAwICkK KyNkZWZpbmUgU0NIRURfVU5JVF9TVEFUX1NFVChfViwgX1gsIF9ZKSAgICBkbyB7fSB3aGlsZSAo IDAgKQogCiAjZW5kaWYgLyogU0NIRURfU1RBVFMgKi8KIApAQCAtMTI4LDcgKzEyOCw3IEBACiAj ZGVmaW5lIFRSQ19DU0NIRURfU0NIRURfVEFTS0xFVCBUUkNfU0NIRURfQ0xBU1NfRVZUKENTQ0hF RCwgMSkKICNkZWZpbmUgVFJDX0NTQ0hFRF9BQ0NPVU5UX1NUQVJUIFRSQ19TQ0hFRF9DTEFTU19F VlQoQ1NDSEVELCAyKQogI2RlZmluZSBUUkNfQ1NDSEVEX0FDQ09VTlRfU1RPUCAgVFJDX1NDSEVE X0NMQVNTX0VWVChDU0NIRUQsIDMpCi0jZGVmaW5lIFRSQ19DU0NIRURfU1RPTEVOX1ZDUFUgICBU UkNfU0NIRURfQ0xBU1NfRVZUKENTQ0hFRCwgNCkKKyNkZWZpbmUgVFJDX0NTQ0hFRF9TVE9MRU5f VU5JVCAgIFRSQ19TQ0hFRF9DTEFTU19FVlQoQ1NDSEVELCA0KQogI2RlZmluZSBUUkNfQ1NDSEVE X1BJQ0tFRF9DUFUgICAgVFJDX1NDSEVEX0NMQVNTX0VWVChDU0NIRUQsIDUpCiAjZGVmaW5lIFRS Q19DU0NIRURfVElDS0xFICAgICAgICBUUkNfU0NIRURfQ0xBU1NfRVZUKENTQ0hFRCwgNikKICNk ZWZpbmUgVFJDX0NTQ0hFRF9CT09TVF9TVEFSVCAgIFRSQ19TQ0hFRF9DTEFTU19FVlQoQ1NDSEVE LCA3KQpAQCAtMTU4LDE1ICsxNTgsMTUgQEAgc3RydWN0IGNzY2hlZF9wY3B1IHsKIH07CiAKIC8q Ci0gKiBWaXJ0dWFsIENQVQorICogVmlydHVhbCBVTklUCiAgKi8KIHN0cnVjdCBjc2NoZWRfdW5p dCB7CiAgICAgc3RydWN0IGxpc3RfaGVhZCBydW5xX2VsZW07Ci0gICAgc3RydWN0IGxpc3RfaGVh ZCBhY3RpdmVfdmNwdV9lbGVtOworICAgIHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3VuaXRfZWxl bTsKIAogICAgIC8qIFVwLXBvaW50ZXJzICovCiAgICAgc3RydWN0IGNzY2hlZF9kb20gKnNkb207 Ci0gICAgc3RydWN0IHZjcHUgKnZjcHU7CisgICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQ7CiAK ICAgICBzX3RpbWVfdCBzdGFydF90aW1lOyAgIC8qIFdoZW4gd2Ugd2VyZSBzY2hlZHVsZWQgKHVz ZWQgZm9yIGNyZWRpdCkgKi8KICAgICB1bnNpZ25lZCBmbGFnczsKQEAgLTE5NCwxMCArMTk0LDEw IEBAIHN0cnVjdCBjc2NoZWRfdW5pdCB7CiAgKiBEb21haW4KICAqLwogc3RydWN0IGNzY2hlZF9k b20gewotICAgIHN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX3ZjcHU7CisgICAgc3RydWN0IGxpc3Rf aGVhZCBhY3RpdmVfdW5pdDsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9zZG9tX2VsZW07 CiAgICAgc3RydWN0IGRvbWFpbiAqZG9tOwotICAgIHVpbnQxNl90IGFjdGl2ZV92Y3B1X2NvdW50 OworICAgIHVpbnQxNl90IGFjdGl2ZV91bml0X2NvdW50OwogICAgIHVpbnQxNl90IHdlaWdodDsK ICAgICB1aW50MTZfdCBjYXA7CiB9OwpAQCAtMjE3LDcgKzIxNyw3IEBAIHN0cnVjdCBjc2NoZWRf cHJpdmF0ZSB7CiAKICAgICAvKiBQZXJpb2Qgb2YgbWFzdGVyIGFuZCB0aWNrIGluIG1pbGxpc2Vj b25kcyAqLwogICAgIHVuc2lnbmVkIGludCB0aWNrX3BlcmlvZF91cywgdGlja3NfcGVyX3RzbGlj ZTsKLSAgICBzX3RpbWVfdCByYXRlbGltaXQsIHRzbGljZSwgdmNwdV9taWdyX2RlbGF5OworICAg IHNfdGltZV90IHJhdGVsaW1pdCwgdHNsaWNlLCB1bml0X21pZ3JfZGVsYXk7CiAKICAgICBzdHJ1 Y3QgbGlzdF9oZWFkIGFjdGl2ZV9zZG9tOwogICAgIHVpbnQzMl90IHdlaWdodDsKQEAgLTIzMyw3 ICsyMzMsNyBAQCBzdGF0aWMgdm9pZCBjc2NoZWRfdGljayh2b2lkICpfY3B1KTsKIHN0YXRpYyB2 b2lkIGNzY2hlZF9hY2N0KHZvaWQgKmR1bW15KTsKIAogc3RhdGljIGlubGluZSBpbnQKLV9fdmNw dV9vbl9ydW5xKHN0cnVjdCBjc2NoZWRfdW5pdCAqc3ZjKQorX191bml0X29uX3J1bnEoc3RydWN0 IGNzY2hlZF91bml0ICpzdmMpCiB7CiAgICAgcmV0dXJuICFsaXN0X2VtcHR5KCZzdmMtPnJ1bnFf ZWxlbSk7CiB9CkBAIC0yNDQsNyArMjQ0LDcgQEAgX19ydW5xX2VsZW0oc3RydWN0IGxpc3RfaGVh ZCAqZWxlbSkKICAgICByZXR1cm4gbGlzdF9lbnRyeShlbGVtLCBzdHJ1Y3QgY3NjaGVkX3VuaXQs IHJ1bnFfZWxlbSk7CiB9CiAKLS8qIElzIHRoZSBmaXJzdCBlbGVtZW50IG9mIGNwdSdzIHJ1bnEg KGlmIGFueSkgY3B1J3MgaWRsZSB2Y3B1PyAqLworLyogSXMgdGhlIGZpcnN0IGVsZW1lbnQgb2Yg Y3B1J3MgcnVucSAoaWYgYW55KSBjcHUncyBpZGxlIHVuaXQ/ICovCiBzdGF0aWMgaW5saW5lIGJv b2xfdCBpc19ydW5xX2lkbGUodW5zaWduZWQgaW50IGNwdSkKIHsKICAgICAvKgpAQCAtMjUzLDcg KzI1Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbF90IGlzX3J1bnFfaWRsZSh1bnNpZ25lZCBpbnQg Y3B1KQogICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZChnZXRfc2NoZWRfcmVzKGNwdSktPnNjaGVk dWxlX2xvY2spKTsKIAogICAgIHJldHVybiBsaXN0X2VtcHR5KFJVTlEoY3B1KSkgfHwKLSAgICAg ICAgICAgaXNfaWRsZV92Y3B1KF9fcnVucV9lbGVtKFJVTlEoY3B1KS0+bmV4dCktPnZjcHUpOwor ICAgICAgICAgICBpc19pZGxlX3VuaXQoX19ydW5xX2VsZW0oUlVOUShjcHUpLT5uZXh0KS0+dW5p dCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZApAQCAtMjc1LDExICsyNzUsMTEgQEAgZGVjX25y X3J1bm5hYmxlKHVuc2lnbmVkIGludCBjcHUpCiBzdGF0aWMgaW5saW5lIHZvaWQKIF9fcnVucV9p bnNlcnQoc3RydWN0IGNzY2hlZF91bml0ICpzdmMpCiB7Ci0gICAgdW5zaWduZWQgaW50IGNwdSA9 IHN2Yy0+dmNwdS0+cHJvY2Vzc29yOworICAgIHVuc2lnbmVkIGludCBjcHUgPSBzY2hlZF91bml0 X2NwdShzdmMtPnVuaXQpOwogICAgIGNvbnN0IHN0cnVjdCBsaXN0X2hlYWQgKiBjb25zdCBydW5x ID0gUlVOUShjcHUpOwogICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXI7CiAKLSAgICBCVUdfT04o IF9fdmNwdV9vbl9ydW5xKHN2YykgKTsKKyAgICBCVUdfT04oIF9fdW5pdF9vbl9ydW5xKHN2Yykg KTsKIAogICAgIGxpc3RfZm9yX2VhY2goIGl0ZXIsIHJ1bnEgKQogICAgIHsKQEAgLTI4OCwxMCAr Mjg4LDEwIEBAIF9fcnVucV9pbnNlcnQoc3RydWN0IGNzY2hlZF91bml0ICpzdmMpCiAgICAgICAg ICAgICBicmVhazsKICAgICB9CiAKLSAgICAvKiBJZiB0aGUgdmNwdSB5aWVsZGVkLCB0cnkgdG8g cHV0IGl0IGJlaGluZCBvbmUgbG93ZXItcHJpb3JpdHkKLSAgICAgKiBydW5uYWJsZSB2Y3B1IGlm IHdlIGNhbi4gIFRoZSBuZXh0IHJ1bnFfc29ydCB3aWxsIGJyaW5nIGl0IGZvcndhcmQKKyAgICAv KiBJZiB0aGUgdW5pdCB5aWVsZGVkLCB0cnkgdG8gcHV0IGl0IGJlaGluZCBvbmUgbG93ZXItcHJp b3JpdHkKKyAgICAgKiBydW5uYWJsZSB1bml0IGlmIHdlIGNhbi4gIFRoZSBuZXh0IHJ1bnFfc29y dCB3aWxsIGJyaW5nIGl0IGZvcndhcmQKICAgICAgKiB3aXRoaW4gMzBtcyBpZiB0aGUgcXVldWUg dG9vIGxvbmcuICovCi0gICAgaWYgKCB0ZXN0X2JpdChDU0NIRURfRkxBR19WQ1BVX1lJRUxELCAm c3ZjLT5mbGFncykKKyAgICBpZiAoIHRlc3RfYml0KENTQ0hFRF9GTEFHX1VOSVRfWUlFTEQsICZz dmMtPmZsYWdzKQogICAgICAgICAgJiYgX19ydW5xX2VsZW0oaXRlciktPnByaSA+IENTQ0hFRF9Q UklfSURMRSApCiAgICAgewogICAgICAgICBpdGVyPWl0ZXItPm5leHQ7CkBAIC0zMDcsMjAgKzMw NywyMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQKIHJ1bnFfaW5zZXJ0KHN0cnVjdCBjc2NoZWRfdW5p dCAqc3ZjKQogewogICAgIF9fcnVucV9pbnNlcnQoc3ZjKTsKLSAgICBpbmNfbnJfcnVubmFibGUo c3ZjLT52Y3B1LT5wcm9jZXNzb3IpOworICAgIGluY19ucl9ydW5uYWJsZShzY2hlZF91bml0X2Nw dShzdmMtPnVuaXQpKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkCiBfX3J1bnFfcmVtb3ZlKHN0 cnVjdCBjc2NoZWRfdW5pdCAqc3ZjKQogewotICAgIEJVR19PTiggIV9fdmNwdV9vbl9ydW5xKHN2 YykgKTsKKyAgICBCVUdfT04oICFfX3VuaXRfb25fcnVucShzdmMpICk7CiAgICAgbGlzdF9kZWxf aW5pdCgmc3ZjLT5ydW5xX2VsZW0pOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQKIHJ1bnFfcmVt b3ZlKHN0cnVjdCBjc2NoZWRfdW5pdCAqc3ZjKQogewotICAgIGRlY19ucl9ydW5uYWJsZShzdmMt PnZjcHUtPnByb2Nlc3Nvcik7CisgICAgZGVjX25yX3J1bm5hYmxlKHNjaGVkX3VuaXRfY3B1KHN2 Yy0+dW5pdCkpOwogICAgIF9fcnVucV9yZW1vdmUoc3ZjKTsKIH0KIApAQCAtMzMxLDcgKzMzMSw3 IEBAIHN0YXRpYyB2b2lkIGJ1cm5fY3JlZGl0cyhzdHJ1Y3QgY3NjaGVkX3VuaXQgKnN2Yywgc190 aW1lX3Qgbm93KQogICAgIHVuc2lnbmVkIGludCBjcmVkaXRzOwogCiAgICAgLyogQXNzZXJ0IHN2 YyBpcyBjdXJyZW50ICovCi0gICAgQVNTRVJUKCBzdmMgPT0gQ1NDSEVEX1VOSVQoY3Vycl9vbl9j cHUoc3ZjLT52Y3B1LT5wcm9jZXNzb3IpKSApOworICAgIEFTU0VSVCggc3ZjID09IENTQ0hFRF9V TklUKGN1cnJfb25fY3B1KHNjaGVkX3VuaXRfY3B1KHN2Yy0+dW5pdCkpKSApOwogCiAgICAgaWYg KCAoZGVsdGEgPSBub3cgLSBzdmMtPnN0YXJ0X3RpbWUpIDw9IDAgKQogICAgICAgICByZXR1cm47 CkBAIC0zNTEsOCArMzUxLDggQEAgREVGSU5FX1BFUl9DUFUodW5zaWduZWQgaW50LCBsYXN0X3Rp Y2tsZV9jcHUpOwogCiBzdGF0aWMgaW5saW5lIHZvaWQgX19ydW5xX3RpY2tsZShzdHJ1Y3QgY3Nj aGVkX3VuaXQgKm5ldykKIHsKLSAgICB1bnNpZ25lZCBpbnQgY3B1ID0gbmV3LT52Y3B1LT5wcm9j ZXNzb3I7Ci0gICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQgPSBuZXctPnZjcHUtPnNjaGVkX3Vu aXQ7CisgICAgdW5zaWduZWQgaW50IGNwdSA9IHNjaGVkX3VuaXRfY3B1KG5ldy0+dW5pdCk7Cisg ICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQgPSBuZXctPnVuaXQ7CiAgICAgc3RydWN0IGNzY2hl ZF91bml0ICogY29uc3QgY3VyID0gQ1NDSEVEX1VOSVQoY3Vycl9vbl9jcHUoY3B1KSk7CiAgICAg c3RydWN0IGNzY2hlZF9wcml2YXRlICpwcnYgPSBDU0NIRURfUFJJVihwZXJfY3B1KHNjaGVkdWxl ciwgY3B1KSk7CiAgICAgY3B1bWFza190IG1hc2ssIGlkbGVfbWFzaywgKm9ubGluZTsKQEAgLTM2 NiwxNiArMzY2LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3J1bnFfdGlja2xlKHN0cnVjdCBj c2NoZWRfdW5pdCAqbmV3KQogICAgIGlkbGVyc19lbXB0eSA9IGNwdW1hc2tfZW1wdHkoJmlkbGVf bWFzayk7CiAKICAgICAvKgotICAgICAqIEV4Y2x1c2l2ZSBwaW5uaW5nIGlzIHdoZW4gYSB2Y3B1 IGhhcyBoYXJkLWFmZmluaXR5IHdpdGggb25seSBvbmUKLSAgICAgKiBjcHUsIGFuZCB0aGVyZSBp cyBubyBvdGhlciB2Y3B1IHRoYXQgaGFzIGhhcmQtYWZmaW5pdHkgd2l0aCB0aGF0CisgICAgICog RXhjbHVzaXZlIHBpbm5pbmcgaXMgd2hlbiBhIHVuaXQgaGFzIGhhcmQtYWZmaW5pdHkgd2l0aCBv bmx5IG9uZQorICAgICAqIGNwdSwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHVuaXQgdGhhdCBoYXMg aGFyZC1hZmZpbml0eSB3aXRoIHRoYXQKICAgICAgKiBzYW1lIGNwdS4gVGhpcyBpcyBpbmZyZXF1 ZW50LCBidXQgaWYgaXQgaGFwcGVucywgaXMgZm9yIGFjaGlldmluZwogICAgICAqIHRoZSBtb3N0 IHBvc3NpYmxlIGRldGVybWluaXNtLCBhbmQgbGVhc3QgcG9zc2libGUgb3ZlcmhlYWQgZm9yCi0g ICAgICogdGhlIHZjcHVzIGluIHF1ZXN0aW9uLgorICAgICAqIHRoZSB1bml0cyBpbiBxdWVzdGlv bi4KICAgICAgKgogICAgICAqIFRyeSB0byBpZGVudGlmeSB0aGUgdmFzdCBtYWpvcml0eSBvZiB0 aGVzZSBzaXR1YXRpb25zLCBhbmQgZGVhbAogICAgICAqIHdpdGggdGhlbSBxdWlja2x5LgogICAg ICAqLwotICAgIGlmICggdW5saWtlbHkodGVzdF9iaXQoQ1NDSEVEX0ZMQUdfVkNQVV9QSU5ORUQs ICZuZXctPmZsYWdzKSAmJgorICAgIGlmICggdW5saWtlbHkodGVzdF9iaXQoQ1NDSEVEX0ZMQUdf VU5JVF9QSU5ORUQsICZuZXctPmZsYWdzKSAmJgogICAgICAgICAgICAgICAgICAgY3B1bWFza190 ZXN0X2NwdShjcHUsICZpZGxlX21hc2spKSApCiAgICAgewogICAgICAgICBBU1NFUlQoY3B1bWFz a19jeWNsZShjcHUsIHVuaXQtPmNwdV9oYXJkX2FmZmluaXR5KSA9PSBjcHUpOwpAQCAtMzg2LDcg KzM4Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3J1bnFfdGlja2xlKHN0cnVjdCBjc2NoZWRf dW5pdCAqbmV3KQogCiAgICAgLyoKICAgICAgKiBJZiB0aGUgcGNwdSBpcyBpZGxlLCBvciB0aGVy ZSBhcmUgbm8gaWRsZXJzIGFuZCB0aGUgbmV3Ci0gICAgICogdmNwdSBpcyBhIGhpZ2hlciBwcmlv cml0eSB0aGFuIHRoZSBvbGQgdmNwdSwgcnVuIGl0IGhlcmUuCisgICAgICogdW5pdCBpcyBhIGhp Z2hlciBwcmlvcml0eSB0aGFuIHRoZSBvbGQgdW5pdCwgcnVuIGl0IGhlcmUuCiAgICAgICoKICAg ICAgKiBJZiB0aGVyZSBhcmUgaWRsZSBjcHVzLCBmaXJzdCB0cnkgdG8gZmluZCBvbmUgc3VpdGFi bGUgdG8gcnVuCiAgICAgICogbmV3LCBzbyB3ZSBjYW4gYXZvaWQgcHJlZW1wdGluZyBjdXIuICBJ ZiB3ZSBjYW5ub3QgZmluZCBhCkBAIC00MDUsNyArNDA1LDcgQEAgc3RhdGljIGlubGluZSB2b2lk IF9fcnVucV90aWNrbGUoc3RydWN0IGNzY2hlZF91bml0ICpuZXcpCiAgICAgZWxzZSBpZiAoICFp ZGxlcnNfZW1wdHkgKQogICAgIHsKICAgICAgICAgLyoKLSAgICAgICAgICogU29mdCBhbmQgaGFy ZCBhZmZpbml0eSBiYWxhbmNpbmcgbG9vcC4gRm9yIHZjcHVzIHdpdGhvdXQKKyAgICAgICAgICog U29mdCBhbmQgaGFyZCBhZmZpbml0eSBiYWxhbmNpbmcgbG9vcC4gRm9yIHVuaXRzIHdpdGhvdXQK ICAgICAgICAgICogYSB1c2VmdWwgc29mdCBhZmZpbml0eSwgY29uc2lkZXIgaGFyZCBhZmZpbml0 eSBvbmx5LgogICAgICAgICAgKi8KICAgICAgICAgZm9yX2VhY2hfYWZmaW5pdHlfYmFsYW5jZV9z dGVwKCBiYWxhbmNlX3N0ZXAgKQpAQCAtNDQ4LDEwICs0NDgsMTAgQEAgc3RhdGljIGlubGluZSB2 b2lkIF9fcnVucV90aWNrbGUoc3RydWN0IGNzY2hlZF91bml0ICpuZXcpCiAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgaWYgKCBjcHVtYXNrX2ludGVyc2VjdHModW5pdC0+Y3B1X2hhcmRf YWZmaW5pdHksICZpZGxlX21hc2spICkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg ICAgICAgIFNDSEVEX1ZDUFVfU1RBVF9DUkFOSyhjdXIsIGtpY2tlZF9hd2F5KTsKLSAgICAgICAg ICAgICAgICAgICAgU0NIRURfVkNQVV9TVEFUX0NSQU5LKGN1ciwgbWlncmF0ZV9yKTsKKyAgICAg ICAgICAgICAgICAgICAgU0NIRURfVU5JVF9TVEFUX0NSQU5LKGN1ciwga2lja2VkX2F3YXkpOwor ICAgICAgICAgICAgICAgICAgICBTQ0hFRF9VTklUX1NUQVRfQ1JBTksoY3VyLCBtaWdyYXRlX3Ip OwogICAgICAgICAgICAgICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKG1pZ3JhdGVfa2lja2VkX2F3 YXkpOwotICAgICAgICAgICAgICAgICAgICBzZXRfYml0KF9WUEZfbWlncmF0aW5nLCAmY3VyLT52 Y3B1LT5wYXVzZV9mbGFncyk7CisgICAgICAgICAgICAgICAgICAgIHNjaGVkX3NldF9wYXVzZV9m bGFnc19hdG9taWMoY3VyLT51bml0LCBfVlBGX21pZ3JhdGluZyk7CiAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgIC8qIFRpY2tsZSBjcHUgYW55d2F5LCB0byBsZXQgbmV3IHByZWVt cHQgY3VyLiAqLwogICAgICAgICAgICAgICAgIFNDSEVEX1NUQVRfQ1JBTksodGlja2xlZF9idXN5 X2NwdSk7CkBAIC02MDcsNyArNjA3LDcgQEAgaW5pdF9wZGF0YShzdHJ1Y3QgY3NjaGVkX3ByaXZh dGUgKnBydiwgc3RydWN0IGNzY2hlZF9wY3B1ICpzcGMsIGludCBjcHUpCiAgICAgc3BjLT5pZGxl X2JpYXMgPSBucl9jcHVfaWRzIC0gMTsKIAogICAgIC8qIFN0YXJ0IG9mZiBpZGxpbmcuLi4gKi8K LSAgICBCVUdfT04oIWlzX2lkbGVfdmNwdShjdXJyX29uX2NwdShjcHUpLT52Y3B1X2xpc3QpKTsK KyAgICBCVUdfT04oIWlzX2lkbGVfdW5pdChjdXJyX29uX2NwdShjcHUpKSk7CiAgICAgY3B1bWFz a19zZXRfY3B1KGNwdSwgcHJ2LT5pZGxlcnMpOwogICAgIHNwYy0+bnJfcnVubmFibGUgPSAwOwog fQpAQCAtNjMyLDkgKzYzMiw5IEBAIGNzY2hlZF9zd2l0Y2hfc2NoZWQoc3RydWN0IHNjaGVkdWxl ciAqbmV3X29wcywgdW5zaWduZWQgaW50IGNwdSwKICAgICBzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUg KnBydiA9IENTQ0hFRF9QUklWKG5ld19vcHMpOwogICAgIHN0cnVjdCBjc2NoZWRfdW5pdCAqc3Zj ID0gdmRhdGE7CiAKLSAgICBBU1NFUlQoc3ZjICYmIGlzX2lkbGVfdmNwdShzdmMtPnZjcHUpKTsK KyAgICBBU1NFUlQoc3ZjICYmIGlzX2lkbGVfdW5pdChzdmMtPnVuaXQpKTsKIAotICAgIGlkbGVf dmNwdVtjcHVdLT5zY2hlZF91bml0LT5wcml2ID0gdmRhdGE7CisgICAgc2NoZWRfaWRsZV91bml0 KGNwdSktPnByaXYgPSB2ZGF0YTsKIAogICAgIC8qCiAgICAgICogV2UgYXJlIGhvbGRpbmcgdGhl IHJ1bnF1ZXVlIGxvY2sgYWxyZWFkeSAoaXQncyBiZWVuIHRha2VuIGluCkBAIC02NTEsMzMgKzY1 MSwzMyBAQCBjc2NoZWRfc3dpdGNoX3NjaGVkKHN0cnVjdCBzY2hlZHVsZXIgKm5ld19vcHMsIHVu c2lnbmVkIGludCBjcHUsCiAKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgaW5saW5lIHZvaWQKLV9f Y3NjaGVkX3ZjcHVfY2hlY2soc3RydWN0IHZjcHUgKnZjKQorX19jc2NoZWRfdW5pdF9jaGVjayhz dHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAgICBzdHJ1Y3QgY3NjaGVkX3VuaXQgKiBjb25z dCBzdmMgPSBDU0NIRURfVU5JVCh2Yy0+c2NoZWRfdW5pdCk7CisgICAgc3RydWN0IGNzY2hlZF91 bml0ICogY29uc3Qgc3ZjID0gQ1NDSEVEX1VOSVQodW5pdCk7CiAgICAgc3RydWN0IGNzY2hlZF9k b20gKiBjb25zdCBzZG9tID0gc3ZjLT5zZG9tOwogCi0gICAgQlVHX09OKCBzdmMtPnZjcHUgIT0g dmMgKTsKLSAgICBCVUdfT04oIHNkb20gIT0gQ1NDSEVEX0RPTSh2Yy0+ZG9tYWluKSApOworICAg IEJVR19PTiggc3ZjLT51bml0ICE9IHVuaXQgKTsKKyAgICBCVUdfT04oIHNkb20gIT0gQ1NDSEVE X0RPTSh1bml0LT5kb21haW4pICk7CiAgICAgaWYgKCBzZG9tICkKICAgICB7Ci0gICAgICAgIEJV R19PTiggaXNfaWRsZV92Y3B1KHZjKSApOwotICAgICAgICBCVUdfT04oIHNkb20tPmRvbSAhPSB2 Yy0+ZG9tYWluICk7CisgICAgICAgIEJVR19PTiggaXNfaWRsZV91bml0KHVuaXQpICk7CisgICAg ICAgIEJVR19PTiggc2RvbS0+ZG9tICE9IHVuaXQtPmRvbWFpbiApOwogICAgIH0KICAgICBlbHNl CiAgICAgewotICAgICAgICBCVUdfT04oICFpc19pZGxlX3ZjcHUodmMpICk7CisgICAgICAgIEJV R19PTiggIWlzX2lkbGVfdW5pdCh1bml0KSApOwogICAgIH0KIAogICAgIFNDSEVEX1NUQVRfQ1JB TksodW5pdF9jaGVjayk7CiB9Ci0jZGVmaW5lIENTQ0hFRF9WQ1BVX0NIRUNLKF92YykgIChfX2Nz Y2hlZF92Y3B1X2NoZWNrKF92YykpCisjZGVmaW5lIENTQ0hFRF9VTklUX0NIRUNLKHVuaXQpICAo X19jc2NoZWRfdW5pdF9jaGVjayh1bml0KSkKICNlbHNlCi0jZGVmaW5lIENTQ0hFRF9WQ1BVX0NI RUNLKF92YykKKyNkZWZpbmUgQ1NDSEVEX1VOSVRfQ0hFQ0sodW5pdCkKICNlbmRpZgogCiAvKgot ICogRGVsYXksIGluIG1pY3Jvc2Vjb25kcywgYmV0d2VlbiBtaWdyYXRpb25zIG9mIGEgVkNQVSBi ZXR3ZWVuIFBDUFVzLgotICogVGhpcyBwcmV2ZW50cyByYXBpZCBmbHV0dGVyaW5nIG9mIGEgVkNQ VSBiZXR3ZWVuIENQVXMsIGFuZCByZWR1Y2VzIHRoZQorICogRGVsYXksIGluIG1pY3Jvc2Vjb25k cywgYmV0d2VlbiBtaWdyYXRpb25zIG9mIGEgVU5JVCBiZXR3ZWVuIFBDUFVzLgorICogVGhpcyBw cmV2ZW50cyByYXBpZCBmbHV0dGVyaW5nIG9mIGEgVU5JVCBiZXR3ZWVuIENQVXMsIGFuZCByZWR1 Y2VzIHRoZQogICogaW1wbGljaXQgb3ZlcmhlYWRzIHN1Y2ggYXMgY2FjaGUtd2FybWluZy4gMW1z ICgxMDAwKSBoYXMgYmVlbiBtZWFzdXJlZAogICogYXMgYSBnb29kIHZhbHVlLgogICovCkBAIC02 ODgsOCArNjg4LDggQEAgc3RhdGljIGlubGluZSBib29sCiBfX2NzY2hlZF92Y3B1X2lzX2NhY2hl X2hvdChjb25zdCBzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBydiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBjc2NoZWRfdW5pdCAqc3ZjKQogewotICAgIGJvb2wgaG90 ID0gcHJ2LT52Y3B1X21pZ3JfZGVsYXkgJiYKLSAgICAgICAgICAgICAgIChOT1coKSAtIHN2Yy0+ bGFzdF9zY2hlZF90aW1lKSA8IHBydi0+dmNwdV9taWdyX2RlbGF5OworICAgIGJvb2wgaG90ID0g cHJ2LT51bml0X21pZ3JfZGVsYXkgJiYKKyAgICAgICAgICAgICAgIChOT1coKSAtIHN2Yy0+bGFz dF9zY2hlZF90aW1lKSA8IHBydi0+dW5pdF9taWdyX2RlbGF5OwogCiAgICAgaWYgKCBob3QgKQog ICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHVuaXRfaG90KTsKQEAgLTY5OCwzNyArNjk4LDM5IEBA IF9fY3NjaGVkX3ZjcHVfaXNfY2FjaGVfaG90KGNvbnN0IHN0cnVjdCBjc2NoZWRfcHJpdmF0ZSAq cHJ2LAogfQogCiBzdGF0aWMgaW5saW5lIGludAotX19jc2NoZWRfdmNwdV9pc19taWdyYXRlYWJs ZShjb25zdCBzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBydiwgc3RydWN0IHZjcHUgKnZjLAorX19j c2NoZWRfdW5pdF9pc19taWdyYXRlYWJsZShjb25zdCBzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBy diwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0X2NwdSwgY3B1bWFza190ICpt YXNrKQogewotICAgIGNvbnN0IHN0cnVjdCBjc2NoZWRfdW5pdCAqc3ZjID0gQ1NDSEVEX1VOSVQo dmMtPnNjaGVkX3VuaXQpOworICAgIGNvbnN0IHN0cnVjdCBjc2NoZWRfdW5pdCAqc3ZjID0gQ1ND SEVEX1VOSVQodW5pdCk7CiAgICAgLyoKICAgICAgKiBEb24ndCBwaWNrIHVwIHdvcmsgdGhhdCdz IGhvdCBvbiBwZWVyIFBDUFUsIG9yIHRoYXQgY2FuJ3QgKG9yCiAgICAgICogd291bGQgcHJlZmVy IG5vdCB0bykgcnVuIG9uIGNwdS4KICAgICAgKgotICAgICAqIFRoZSBjYWxsZXIgaXMgc3VwcG9z ZWQgdG8gaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB2YyBpcyBhbHNvCisgICAgICogVGhlIGNh bGxlciBpcyBzdXBwb3NlZCB0byBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHVuaXQgaXMgYWxz bwogICAgICAqIG5vdCBydW5uaW5nLgogICAgICAqLwotICAgIEFTU0VSVCghdmMtPnNjaGVkX3Vu aXQtPmlzX3J1bm5pbmcpOworICAgIEFTU0VSVCghdW5pdC0+aXNfcnVubmluZyk7CiAKICAgICBy ZXR1cm4gIV9fY3NjaGVkX3ZjcHVfaXNfY2FjaGVfaG90KHBydiwgc3ZjKSAmJgogICAgICAgICAg ICBjcHVtYXNrX3Rlc3RfY3B1KGRlc3RfY3B1LCBtYXNrKTsKIH0KIAogc3RhdGljIGludAotX2Nz Y2hlZF9jcHVfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2 YywgYm9vbF90IGNvbW1pdCkKK19jc2NoZWRfY3B1X3BpY2soY29uc3Qgc3RydWN0IHNjaGVkdWxl ciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCwKKyAgICAgICAgICAgICAgICAgYm9vbF90 IGNvbW1pdCkKIHsKLSAgICAvKiBXZSBtdXN0IGFsd2F5cyB1c2UgdmMtPnByb2Nzc29yJ3Mgc2Ny YXRjaCBzcGFjZSAqLwotICAgIGNwdW1hc2tfdCAqY3B1cyA9IGNwdW1hc2tfc2NyYXRjaF9jcHUo dmMtPnByb2Nlc3Nvcik7CisgICAgaW50IGNwdSA9IHNjaGVkX3VuaXRfY3B1KHVuaXQpOworICAg IC8qIFdlIG11c3QgYWx3YXlzIHVzZSBjcHUncyBzY3JhdGNoIHNwYWNlICovCisgICAgY3B1bWFz a190ICpjcHVzID0gY3B1bWFza19zY3JhdGNoX2NwdShjcHUpOwogICAgIGNwdW1hc2tfdCBpZGxl cnM7Ci0gICAgY3B1bWFza190ICpvbmxpbmUgPSBjcHVwb29sX2RvbWFpbl9jcHVtYXNrKHZjLT5k b21haW4pOworICAgIGNwdW1hc2tfdCAqb25saW5lID0gY3B1cG9vbF9kb21haW5fY3B1bWFzayh1 bml0LT5kb21haW4pOwogICAgIHN0cnVjdCBjc2NoZWRfcGNwdSAqc3BjID0gTlVMTDsKLSAgICBp bnQgY3B1ID0gdmMtPnByb2Nlc3NvcjsKICAgICBpbnQgYmFsYW5jZV9zdGVwOwogCiAgICAgZm9y X2VhY2hfYWZmaW5pdHlfYmFsYW5jZV9zdGVwKCBiYWxhbmNlX3N0ZXAgKQogICAgIHsKLSAgICAg ICAgYWZmaW5pdHlfYmFsYW5jZV9jcHVtYXNrKHZjLT5zY2hlZF91bml0LCBiYWxhbmNlX3N0ZXAs IGNwdXMpOworICAgICAgICBhZmZpbml0eV9iYWxhbmNlX2NwdW1hc2sodW5pdCwgYmFsYW5jZV9z dGVwLCBjcHVzKTsKICAgICAgICAgY3B1bWFza19hbmQoY3B1cywgb25saW5lLCBjcHVzKTsKICAg ICAgICAgLyoKICAgICAgICAgICogV2Ugd2FudCB0byBwaWNrIHVwIGEgcGNwdSBhbW9uZyB0aGUg b25lcyB0aGF0IGFyZSBvbmxpbmUgYW5kCkBAIC03NDcsMTIgKzc0OSwxMyBAQCBfY3NjaGVkX2Nw dV9waWNrKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHZjcHUgKnZjLCBib29s X3QgY29tbWl0KQogICAgICAgICAgKiBiYWxhbmNpbmcgc3RlcCBhbGwgdG9nZXRoZXIuCiAgICAg ICAgICAqLwogICAgICAgICBpZiAoIGJhbGFuY2Vfc3RlcCA9PSBCQUxBTkNFX1NPRlRfQUZGSU5J VFkgJiYKLSAgICAgICAgICAgICAoIWhhc19zb2Z0X2FmZmluaXR5KHZjLT5zY2hlZF91bml0KSB8 fCBjcHVtYXNrX2VtcHR5KGNwdXMpKSApCisgICAgICAgICAgICAgKCFoYXNfc29mdF9hZmZpbml0 eSh1bml0KSB8fCBjcHVtYXNrX2VtcHR5KGNwdXMpKSApCiAgICAgICAgICAgICBjb250aW51ZTsK IAogICAgICAgICAvKiBJZiBwcmVzZW50LCBwcmVmZXIgdmMncyBjdXJyZW50IHByb2Nlc3NvciAq LwotICAgICAgICBjcHUgPSBjcHVtYXNrX3Rlc3RfY3B1KHZjLT5wcm9jZXNzb3IsIGNwdXMpCi0g ICAgICAgICAgICAgICAgPyB2Yy0+cHJvY2Vzc29yIDogY3B1bWFza19jeWNsZSh2Yy0+cHJvY2Vz c29yLCBjcHVzKTsKKyAgICAgICAgY3B1ID0gY3B1bWFza190ZXN0X2NwdShzY2hlZF91bml0X2Nw dSh1bml0KSwgY3B1cykKKyAgICAgICAgICAgICAgICA/IHNjaGVkX3VuaXRfY3B1KHVuaXQpCisg ICAgICAgICAgICAgICAgOiBjcHVtYXNrX2N5Y2xlKHNjaGVkX3VuaXRfY3B1KHVuaXQpLCBjcHVz KTsKICAgICAgICAgQVNTRVJUKGNwdW1hc2tfdGVzdF9jcHUoY3B1LCBjcHVzKSk7CiAKICAgICAg ICAgLyoKQEAgLTc2NCwxNSArNzY3LDE1IEBAIF9jc2NoZWRfY3B1X3BpY2soY29uc3Qgc3RydWN0 IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3QgdmNwdSAqdmMsIGJvb2xfdCBjb21taXQpCiAgICAgICAg ICAqIFdlIGdpdmUgcHJlZmVyZW5jZSB0byB0aGUgaWRsZSBleGVjdXRpb24gdmVoaWNsZSB3aXRo IHRoZSBtb3N0CiAgICAgICAgICAqIGlkbGluZyBuZWlnaGJvdXJzIGluIGl0cyBncm91cGluZy4g VGhpcyBkaXN0cmlidXRlcyB3b3JrIGFjcm9zcwogICAgICAgICAgKiBkaXN0aW5jdCBjb3JlcyBm aXJzdCBhbmQgZ3VhcmFudGVlcyB3ZSBkb24ndCBkbyBzb21ldGhpbmcgc3R1cGlkCi0gICAgICAg ICAqIGxpa2UgcnVuIHR3byBWQ1BVcyBvbiBjby1oeXBlcnRocmVhZHMgd2hpbGUgdGhlcmUgYXJl IGlkbGUgY29yZXMKKyAgICAgICAgICogbGlrZSBydW4gdHdvIFVOSVRzIG9uIGNvLWh5cGVydGhy ZWFkcyB3aGlsZSB0aGVyZSBhcmUgaWRsZSBjb3JlcwogICAgICAgICAgKiBvciBzb2NrZXRzLgog ICAgICAgICAgKgogICAgICAgICAgKiBOb3RpY2UgdGhhdCwgd2hlbiBjb21wdXRpbmcgdGhlICJp ZGxlbmVzcyIgb2YgY3B1LCB3ZSBtYXkgd2FudCB0bwotICAgICAgICAgKiBkaXNjb3VudCB2Yy4g VGhhdCBpcywgaWZmIHZjIGlzIHRoZSBjdXJyZW50bHkgcnVubmluZyBhbmQgdGhlIG9ubHkKLSAg ICAgICAgICogcnVubmFibGUgdmNwdSBvbiBjcHUsIHdlIGFkZCBjcHUgdG8gdGhlIGlkbGVycy4K KyAgICAgICAgICogZGlzY291bnQgdW5pdC4gVGhhdCBpcywgaWZmIHVuaXQgaXMgdGhlIGN1cnJl bnRseSBydW5uaW5nIGFuZCB0aGUKKyAgICAgICAgICogb25seSBydW5uYWJsZSB1bml0IG9uIGNw dSwgd2UgYWRkIGNwdSB0byB0aGUgaWRsZXJzLgogICAgICAgICAgKi8KICAgICAgICAgY3B1bWFz a19hbmQoJmlkbGVycywgJmNwdV9vbmxpbmVfbWFwLCBDU0NIRURfUFJJVihvcHMpLT5pZGxlcnMp OwotICAgICAgICBpZiAoIHZjLT5wcm9jZXNzb3IgPT0gY3B1ICYmIGlzX3J1bnFfaWRsZShjcHUp ICkKKyAgICAgICAgaWYgKCBzY2hlZF91bml0X2NwdSh1bml0KSA9PSBjcHUgJiYgaXNfcnVucV9p ZGxlKGNwdSkgKQogICAgICAgICAgICAgX19jcHVtYXNrX3NldF9jcHUoY3B1LCAmaWRsZXJzKTsK ICAgICAgICAgY3B1bWFza19hbmQoY3B1cywgJmlkbGVycywgY3B1cyk7CiAKQEAgLTc4Miw3ICs3 ODUsNyBAQCBfY3NjaGVkX2NwdV9waWNrKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3Ry dWN0IHZjcHUgKnZjLCBib29sX3QgY29tbWl0KQogICAgICAgICAgKiBDUFUsIGFzIHdlIGp1c3Qg JiYtZWQgaXQgd2l0aCBpZGxlcnMpLiBJbiBmYWN0LCBpZiB3ZSBhcmUgb24gU01ULCBhbmQKICAg ICAgICAgICogY3B1IHBvaW50cyB0byBhIGJ1c3kgdGhyZWFkIHdpdGggYW4gaWRsZSBzaWJsaW5n LCBib3RoIHRoZSB0aHJlYWRzCiAgICAgICAgICAqIHdpbGwgYmUgY29uc2lkZXJlZCB0aGUgc2Ft ZSwgZnJvbSB0aGUgImlkbGVuZXNzIiBjYWxjdWxhdGlvbiBwb2ludAotICAgICAgICAgKiBvZiB2 aWV3IiwgcHJldmVudGluZyB2Y3B1IGZyb20gYmVpbmcgbW92ZWQgdG8gdGhlIHRocmVhZCB0aGF0 IGlzCisgICAgICAgICAqIG9mIHZpZXciLCBwcmV2ZW50aW5nIHVuaXQgZnJvbSBiZWluZyBtb3Zl ZCB0byB0aGUgdGhyZWFkIHRoYXQgaXMKICAgICAgICAgICogYWN0dWFsbHkgaWRsZS4KICAgICAg ICAgICoKICAgICAgICAgICogTm90aWNlIHRoYXQgY3B1bWFza190ZXN0X2NwdSgpIGlzIHF1aWNr ZXIgdGhhbiBjcHVtYXNrX2VtcHR5KCksIHNvCkBAIC04NDgsNyArODUxLDggQEAgX2NzY2hlZF9j cHVfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2Y3B1ICp2YywgYm9v bF90IGNvbW1pdCkKICAgICBpZiAoIGNvbW1pdCAmJiBzcGMgKQogICAgICAgIHNwYy0+aWRsZV9i aWFzID0gY3B1OwogCi0gICAgVFJBQ0VfM0QoVFJDX0NTQ0hFRF9QSUNLRURfQ1BVLCB2Yy0+ZG9t YWluLT5kb21haW5faWQsIHZjLT52Y3B1X2lkLCBjcHUpOworICAgIFRSQUNFXzNEKFRSQ19DU0NI RURfUElDS0VEX0NQVSwgdW5pdC0+ZG9tYWluLT5kb21haW5faWQsIHVuaXQtPnVuaXRfaWQsCisg ICAgICAgICAgICAgY3B1KTsKIAogICAgIHJldHVybiBjcHU7CiB9CkBAIC04NTYsNyArODYwLDYg QEAgX2NzY2hlZF9jcHVfcGljayhjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCB2 Y3B1ICp2YywgYm9vbF90IGNvbW1pdCkKIHN0YXRpYyBzdHJ1Y3Qgc2NoZWRfcmVzb3VyY2UgKgog Y3NjaGVkX3Jlc19waWNrKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVk X3VuaXQgKnVuaXQpCiB7Ci0gICAgc3RydWN0IHZjcHUgKnZjID0gdW5pdC0+dmNwdV9saXN0Owog ICAgIHN0cnVjdCBjc2NoZWRfdW5pdCAqc3ZjID0gQ1NDSEVEX1VOSVQodW5pdCk7CiAKICAgICAv KgpAQCAtODY2LDI2ICs4NjksMjYgQEAgY3NjaGVkX3Jlc19waWNrKGNvbnN0IHN0cnVjdCBzY2hl ZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVuaXQpCiAgICAgICogY3NjaGVkX3VuaXRf d2FrZSgpIChzdGlsbCBjYWxsZWQgZnJvbSB2Y3B1X21pZ3JhdGUoKSkgd2Ugd29uJ3QKICAgICAg KiBnZXQgYm9vc3RlZCwgd2hpY2ggd2UgZG9uJ3QgZGVzZXJ2ZSBhcyB3ZSBhcmUgIm9ubHkiIG1p Z3JhdGluZy4KICAgICAgKi8KLSAgICBzZXRfYml0KENTQ0hFRF9GTEFHX1ZDUFVfTUlHUkFUSU5H LCAmc3ZjLT5mbGFncyk7Ci0gICAgcmV0dXJuIGdldF9zY2hlZF9yZXMoX2NzY2hlZF9jcHVfcGlj ayhvcHMsIHZjLCAxKSk7CisgICAgc2V0X2JpdChDU0NIRURfRkxBR19VTklUX01JR1JBVElORywg JnN2Yy0+ZmxhZ3MpOworICAgIHJldHVybiBnZXRfc2NoZWRfcmVzKF9jc2NoZWRfY3B1X3BpY2so b3BzLCB1bml0LCAxKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAotX19jc2NoZWRfdmNwdV9h Y2N0X3N0YXJ0KHN0cnVjdCBjc2NoZWRfcHJpdmF0ZSAqcHJ2LCBzdHJ1Y3QgY3NjaGVkX3VuaXQg KnN2YykKK19fY3NjaGVkX3VuaXRfYWNjdF9zdGFydChzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBy diwgc3RydWN0IGNzY2hlZF91bml0ICpzdmMpCiB7CiAgICAgc3RydWN0IGNzY2hlZF9kb20gKiBj b25zdCBzZG9tID0gc3ZjLT5zZG9tOwogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKICAgICBz cGluX2xvY2tfaXJxc2F2ZSgmcHJ2LT5sb2NrLCBmbGFncyk7CiAKLSAgICBpZiAoIGxpc3RfZW1w dHkoJnN2Yy0+YWN0aXZlX3ZjcHVfZWxlbSkgKQorICAgIGlmICggbGlzdF9lbXB0eSgmc3ZjLT5h Y3RpdmVfdW5pdF9lbGVtKSApCiAgICAgewotICAgICAgICBTQ0hFRF9WQ1BVX1NUQVRfQ1JBTkso c3ZjLCBzdGF0ZV9hY3RpdmUpOworICAgICAgICBTQ0hFRF9VTklUX1NUQVRfQ1JBTksoc3ZjLCBz dGF0ZV9hY3RpdmUpOwogICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKGFjY3RfdW5pdF9hY3RpdmUp OwogCi0gICAgICAgIHNkb20tPmFjdGl2ZV92Y3B1X2NvdW50Kys7Ci0gICAgICAgIGxpc3RfYWRk KCZzdmMtPmFjdGl2ZV92Y3B1X2VsZW0sICZzZG9tLT5hY3RpdmVfdmNwdSk7Ci0gICAgICAgIC8q IE1ha2Ugd2VpZ2h0IHBlci12Y3B1ICovCisgICAgICAgIHNkb20tPmFjdGl2ZV91bml0X2NvdW50 Kys7CisgICAgICAgIGxpc3RfYWRkKCZzdmMtPmFjdGl2ZV91bml0X2VsZW0sICZzZG9tLT5hY3Rp dmVfdW5pdCk7CisgICAgICAgIC8qIE1ha2Ugd2VpZ2h0IHBlci11bml0ICovCiAgICAgICAgIHBy di0+d2VpZ2h0ICs9IHNkb20tPndlaWdodDsKICAgICAgICAgaWYgKCBsaXN0X2VtcHR5KCZzZG9t LT5hY3RpdmVfc2RvbV9lbGVtKSApCiAgICAgICAgIHsKQEAgLTg5NCw1NiArODk3LDU2IEBAIF9f Y3NjaGVkX3ZjcHVfYWNjdF9zdGFydChzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBydiwgc3RydWN0 IGNzY2hlZF91bml0ICpzdmMpCiAgICAgfQogCiAgICAgVFJBQ0VfM0QoVFJDX0NTQ0hFRF9BQ0NP VU5UX1NUQVJULCBzZG9tLT5kb20tPmRvbWFpbl9pZCwKLSAgICAgICAgICAgICBzdmMtPnZjcHUt PnZjcHVfaWQsIHNkb20tPmFjdGl2ZV92Y3B1X2NvdW50KTsKKyAgICAgICAgICAgICBzdmMtPnVu aXQtPnVuaXRfaWQsIHNkb20tPmFjdGl2ZV91bml0X2NvdW50KTsKIAogICAgIHNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJnBydi0+bG9jaywgZmxhZ3MpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQK LV9fY3NjaGVkX3ZjcHVfYWNjdF9zdG9wX2xvY2tlZChzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBy diwKK19fY3NjaGVkX3VuaXRfYWNjdF9zdG9wX2xvY2tlZChzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUg KnBydiwKICAgICBzdHJ1Y3QgY3NjaGVkX3VuaXQgKnN2YykKIHsKICAgICBzdHJ1Y3QgY3NjaGVk X2RvbSAqIGNvbnN0IHNkb20gPSBzdmMtPnNkb207CiAKLSAgICBCVUdfT04oIGxpc3RfZW1wdHko JnN2Yy0+YWN0aXZlX3ZjcHVfZWxlbSkgKTsKKyAgICBCVUdfT04oIGxpc3RfZW1wdHkoJnN2Yy0+ YWN0aXZlX3VuaXRfZWxlbSkgKTsKIAotICAgIFNDSEVEX1ZDUFVfU1RBVF9DUkFOSyhzdmMsIHN0 YXRlX2lkbGUpOworICAgIFNDSEVEX1VOSVRfU1RBVF9DUkFOSyhzdmMsIHN0YXRlX2lkbGUpOwog ICAgIFNDSEVEX1NUQVRfQ1JBTksoYWNjdF91bml0X2lkbGUpOwogCiAgICAgQlVHX09OKCBwcnYt PndlaWdodCA8IHNkb20tPndlaWdodCApOwotICAgIHNkb20tPmFjdGl2ZV92Y3B1X2NvdW50LS07 Ci0gICAgbGlzdF9kZWxfaW5pdCgmc3ZjLT5hY3RpdmVfdmNwdV9lbGVtKTsKKyAgICBzZG9tLT5h Y3RpdmVfdW5pdF9jb3VudC0tOworICAgIGxpc3RfZGVsX2luaXQoJnN2Yy0+YWN0aXZlX3VuaXRf ZWxlbSk7CiAgICAgcHJ2LT53ZWlnaHQgLT0gc2RvbS0+d2VpZ2h0OwotICAgIGlmICggbGlzdF9l bXB0eSgmc2RvbS0+YWN0aXZlX3ZjcHUpICkKKyAgICBpZiAoIGxpc3RfZW1wdHkoJnNkb20tPmFj dGl2ZV91bml0KSApCiAgICAgewogICAgICAgICBsaXN0X2RlbF9pbml0KCZzZG9tLT5hY3RpdmVf c2RvbV9lbGVtKTsKICAgICB9CiAKICAgICBUUkFDRV8zRChUUkNfQ1NDSEVEX0FDQ09VTlRfU1RP UCwgc2RvbS0+ZG9tLT5kb21haW5faWQsCi0gICAgICAgICAgICAgc3ZjLT52Y3B1LT52Y3B1X2lk LCBzZG9tLT5hY3RpdmVfdmNwdV9jb3VudCk7CisgICAgICAgICAgICAgc3ZjLT51bml0LT51bml0 X2lkLCBzZG9tLT5hY3RpdmVfdW5pdF9jb3VudCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1jc2NoZWRf dmNwdV9hY2N0KHN0cnVjdCBjc2NoZWRfcHJpdmF0ZSAqcHJ2LCB1bnNpZ25lZCBpbnQgY3B1KQor Y3NjaGVkX3VuaXRfYWNjdChzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBydiwgdW5zaWduZWQgaW50 IGNwdSkKIHsKICAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqY3VycnVuaXQgPSBjdXJyZW50LT5zY2hl ZF91bml0OwogICAgIHN0cnVjdCBjc2NoZWRfdW5pdCAqIGNvbnN0IHN2YyA9IENTQ0hFRF9VTklU KGN1cnJ1bml0KTsKICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMgPSBwZXJfY3B1KHNj aGVkdWxlciwgY3B1KTsKIAotICAgIEFTU0VSVCggY3VycmVudC0+cHJvY2Vzc29yID09IGNwdSAp OworICAgIEFTU0VSVCggc2NoZWRfdW5pdF9jcHUoY3VycnVuaXQpID09IGNwdSApOwogICAgIEFT U0VSVCggc3ZjLT5zZG9tICE9IE5VTEwgKTsKLSAgICBBU1NFUlQoICFpc19pZGxlX3ZjcHUoc3Zj LT52Y3B1KSApOworICAgIEFTU0VSVCggIWlzX2lkbGVfdW5pdChzdmMtPnVuaXQpICk7CiAKICAg ICAvKgotICAgICAqIElmIHRoaXMgVkNQVSdzIHByaW9yaXR5IHdhcyBib29zdGVkIHdoZW4gaXQg bGFzdCBhd29rZSwgcmVzZXQgaXQuCi0gICAgICogSWYgdGhlIFZDUFUgaXMgZm91bmQgaGVyZSwg dGhlbiBpdCdzIGNvbnN1bWluZyBhIG5vbi1uZWdsaWdlYWJsZQorICAgICAqIElmIHRoaXMgVU5J VCdzIHByaW9yaXR5IHdhcyBib29zdGVkIHdoZW4gaXQgbGFzdCBhd29rZSwgcmVzZXQgaXQuCisg ICAgICogSWYgdGhlIFVOSVQgaXMgZm91bmQgaGVyZSwgdGhlbiBpdCdzIGNvbnN1bWluZyBhIG5v bi1uZWdsaWdlYWJsZQogICAgICAqIGFtb3VudCBvZiBDUFUgcmVzb3VyY2VzIGFuZCBzaG91bGQg bm8gbG9uZ2VyIGJlIGJvb3N0ZWQuCiAgICAgICovCiAgICAgaWYgKCBzdmMtPnByaSA9PSBDU0NI RURfUFJJX1RTX0JPT1NUICkKICAgICB7CiAgICAgICAgIHN2Yy0+cHJpID0gQ1NDSEVEX1BSSV9U U19VTkRFUjsKICAgICAgICAgVFJBQ0VfMkQoVFJDX0NTQ0hFRF9CT09TVF9FTkQsIHN2Yy0+c2Rv bS0+ZG9tLT5kb21haW5faWQsCi0gICAgICAgICAgICAgICAgIHN2Yy0+dmNwdS0+dmNwdV9pZCk7 CisgICAgICAgICAgICAgICAgIHN2Yy0+dW5pdC0+dW5pdF9pZCk7CiAgICAgfQogCiAgICAgLyoK QEAgLTk1MiwxMiArOTU1LDEyIEBAIGNzY2hlZF92Y3B1X2FjY3Qoc3RydWN0IGNzY2hlZF9wcml2 YXRlICpwcnYsIHVuc2lnbmVkIGludCBjcHUpCiAgICAgYnVybl9jcmVkaXRzKHN2YywgTk9XKCkp OwogCiAgICAgLyoKLSAgICAgKiBQdXQgdGhpcyBWQ1BVIGFuZCBkb21haW4gYmFjayBvbiB0aGUg YWN0aXZlIGxpc3QgaWYgaXQgd2FzCisgICAgICogUHV0IHRoaXMgVU5JVCBhbmQgZG9tYWluIGJh Y2sgb24gdGhlIGFjdGl2ZSBsaXN0IGlmIGl0IHdhcwogICAgICAqIGlkbGluZy4KICAgICAgKi8K LSAgICBpZiAoIGxpc3RfZW1wdHkoJnN2Yy0+YWN0aXZlX3ZjcHVfZWxlbSkgKQorICAgIGlmICgg bGlzdF9lbXB0eSgmc3ZjLT5hY3RpdmVfdW5pdF9lbGVtKSApCiAgICAgewotICAgICAgICBfX2Nz Y2hlZF92Y3B1X2FjY3Rfc3RhcnQocHJ2LCBzdmMpOworICAgICAgICBfX2NzY2hlZF91bml0X2Fj Y3Rfc3RhcnQocHJ2LCBzdmMpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtOTcwLDE1ICs5 NzMsMTUgQEAgY3NjaGVkX3ZjcHVfYWNjdChzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBydiwgdW5z aWduZWQgaW50IGNwdSkKICAgICAgICAgICogbWlncmF0aW5nIGl0IHRvIHJ1biBlbHNld2hlcmUg KHNlZSBtdWx0aS1jb3JlIGFuZCBtdWx0aS10aHJlYWQKICAgICAgICAgICogc3VwcG9ydCBpbiBj c2NoZWRfcmVzX3BpY2soKSkuCiAgICAgICAgICAqLwotICAgICAgICBuZXdfY3B1ID0gX2NzY2hl ZF9jcHVfcGljayhvcHMsIGN1cnJlbnQsIDApOworICAgICAgICBuZXdfY3B1ID0gX2NzY2hlZF9j cHVfcGljayhvcHMsIGN1cnJ1bml0LCAwKTsKIAogICAgICAgICB1bml0X3NjaGVkdWxlX3VubG9j a19pcnFyZXN0b3JlKGxvY2ssIGZsYWdzLCBjdXJydW5pdCk7CiAKICAgICAgICAgaWYgKCBuZXdf Y3B1ICE9IGNwdSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNDSEVEX1ZDUFVfU1RBVF9DUkFO SyhzdmMsIG1pZ3JhdGVfcik7CisgICAgICAgICAgICBTQ0hFRF9VTklUX1NUQVRfQ1JBTksoc3Zj LCBtaWdyYXRlX3IpOwogICAgICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyhtaWdyYXRlX3J1bm5p bmcpOwotICAgICAgICAgICAgc2V0X2JpdChfVlBGX21pZ3JhdGluZywgJmN1cnJlbnQtPnBhdXNl X2ZsYWdzKTsKKyAgICAgICAgICAgIHNjaGVkX3NldF9wYXVzZV9mbGFnc19hdG9taWMoY3VycnVu aXQsIF9WUEZfbWlncmF0aW5nKTsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBBcyB3 ZSBhcmUgYWJvdXQgdG8gdGlja2xlIGNwdSwgd2Ugc2hvdWxkIGNsZWFyIGl0cyBiaXQgaW4KICAg ICAgICAgICAgICAqIGlkbGVycy4gQnV0LCBpZiB3ZSBhcmUgaGVyZSwgaXQgbWVhbnMgdGhlcmUg aXMgc29tZW9uZSBydW5uaW5nCkBAIC05OTUsMjEgKzk5OCwyMCBAQCBzdGF0aWMgdm9pZCAqCiBj c2NoZWRfYWxsb2NfdmRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2No ZWRfdW5pdCAqdW5pdCwKICAgICAgICAgICAgICAgICAgICB2b2lkICpkZCkKIHsKLSAgICBzdHJ1 Y3QgdmNwdSAqdmMgPSB1bml0LT52Y3B1X2xpc3Q7CiAgICAgc3RydWN0IGNzY2hlZF91bml0ICpz dmM7CiAKLSAgICAvKiBBbGxvY2F0ZSBwZXItVkNQVSBpbmZvICovCisgICAgLyogQWxsb2NhdGUg cGVyLVVOSVQgaW5mbyAqLwogICAgIHN2YyA9IHh6YWxsb2Moc3RydWN0IGNzY2hlZF91bml0KTsK ICAgICBpZiAoIHN2YyA9PSBOVUxMICkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBJTklU X0xJU1RfSEVBRCgmc3ZjLT5ydW5xX2VsZW0pOwotICAgIElOSVRfTElTVF9IRUFEKCZzdmMtPmFj dGl2ZV92Y3B1X2VsZW0pOworICAgIElOSVRfTElTVF9IRUFEKCZzdmMtPmFjdGl2ZV91bml0X2Vs ZW0pOwogICAgIHN2Yy0+c2RvbSA9IGRkOwotICAgIHN2Yy0+dmNwdSA9IHZjOwotICAgIHN2Yy0+ cHJpID0gaXNfaWRsZV9kb21haW4odmMtPmRvbWFpbikgPworICAgIHN2Yy0+dW5pdCA9IHVuaXQ7 CisgICAgc3ZjLT5wcmkgPSBpc19pZGxlX3VuaXQodW5pdCkgPwogICAgICAgICBDU0NIRURfUFJJ X0lETEUgOiBDU0NIRURfUFJJX1RTX1VOREVSOwotICAgIFNDSEVEX1ZDUFVfU1RBVFNfUkVTRVQo c3ZjKTsKKyAgICBTQ0hFRF9VTklUX1NUQVRTX1JFU0VUKHN2Yyk7CiAgICAgU0NIRURfU1RBVF9D UkFOSyh1bml0X2FsbG9jKTsKICAgICByZXR1cm4gc3ZjOwogfQpAQCAtMTAxNywyNCArMTAxOSwy MSBAQCBjc2NoZWRfYWxsb2NfdmRhdGEoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1 Y3Qgc2NoZWRfdW5pdCAqdW5pdCwKIHN0YXRpYyB2b2lkCiBjc2NoZWRfdW5pdF9pbnNlcnQoY29u c3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKIHsKLSAg ICBzdHJ1Y3QgdmNwdSAqdmMgPSB1bml0LT52Y3B1X2xpc3Q7CiAgICAgc3RydWN0IGNzY2hlZF91 bml0ICpzdmMgPSB1bml0LT5wcml2OwogICAgIHNwaW5sb2NrX3QgKmxvY2s7CiAKLSAgICBCVUdf T04oIGlzX2lkbGVfdmNwdSh2YykgKTsKKyAgICBCVUdfT04oIGlzX2lkbGVfdW5pdCh1bml0KSAp OwogCiAgICAgLyogY3NjaGVkX3Jlc19waWNrKCkgbG9va3MgaW4gdmMtPnByb2Nlc3NvcidzIHJ1 bnEsIHNvIHdlIG5lZWQgdGhlIGxvY2suICovCiAgICAgbG9jayA9IHVuaXRfc2NoZWR1bGVfbG9j a19pcnEodW5pdCk7CiAKLSAgICB1bml0LT5yZXMgPSBjc2NoZWRfcmVzX3BpY2sob3BzLCB1bml0 KTsKLSAgICB2Yy0+cHJvY2Vzc29yID0gdW5pdC0+cmVzLT5wcm9jZXNzb3I7CisgICAgc2NoZWRf c2V0X3Jlcyh1bml0LCBjc2NoZWRfcmVzX3BpY2sob3BzLCB1bml0KSk7CiAKICAgICBzcGluX3Vu bG9ja19pcnEobG9jayk7CiAKICAgICBsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrX2lycSh1bml0 KTsKIAotICAgIGlmICggIV9fdmNwdV9vbl9ydW5xKHN2YykgJiYgdmNwdV9ydW5uYWJsZSh2Yykg JiYKLSAgICAgICAgICF2Yy0+c2NoZWRfdW5pdC0+aXNfcnVubmluZyApCisgICAgaWYgKCAhX191 bml0X29uX3J1bnEoc3ZjKSAmJiB1bml0X3J1bm5hYmxlKHVuaXQpICYmICF1bml0LT5pc19ydW5u aW5nICkKICAgICAgICAgcnVucV9pbnNlcnQoc3ZjKTsKIAogICAgIHVuaXRfc2NoZWR1bGVfdW5s b2NrX2lycShsb2NrLCB1bml0KTsKQEAgLTEwNjEsMTggKzEwNjAsMTggQEAgY3NjaGVkX3VuaXRf cmVtb3ZlKGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgc3RydWN0IHNjaGVkX3VuaXQgKnVu aXQpCiAKICAgICBTQ0hFRF9TVEFUX0NSQU5LKHVuaXRfcmVtb3ZlKTsKIAotICAgIEFTU0VSVCgh X192Y3B1X29uX3J1bnEoc3ZjKSk7CisgICAgQVNTRVJUKCFfX3VuaXRfb25fcnVucShzdmMpKTsK IAotICAgIGlmICggdGVzdF9hbmRfY2xlYXJfYml0KENTQ0hFRF9GTEFHX1ZDUFVfUEFSS0VELCAm c3ZjLT5mbGFncykgKQorICAgIGlmICggdGVzdF9hbmRfY2xlYXJfYml0KENTQ0hFRF9GTEFHX1VO SVRfUEFSS0VELCAmc3ZjLT5mbGFncykgKQogICAgIHsKICAgICAgICAgU0NIRURfU1RBVF9DUkFO Syh1bml0X3VucGFyayk7Ci0gICAgICAgIHZjcHVfdW5wYXVzZShzdmMtPnZjcHUpOworICAgICAg ICB2Y3B1X3VucGF1c2Uoc3ZjLT51bml0LT52Y3B1X2xpc3QpOwogICAgIH0KIAogICAgIHNwaW5f bG9ja19pcnEoJnBydi0+bG9jayk7CiAKLSAgICBpZiAoICFsaXN0X2VtcHR5KCZzdmMtPmFjdGl2 ZV92Y3B1X2VsZW0pICkKLSAgICAgICAgX19jc2NoZWRfdmNwdV9hY2N0X3N0b3BfbG9ja2VkKHBy diwgc3ZjKTsKKyAgICBpZiAoICFsaXN0X2VtcHR5KCZzdmMtPmFjdGl2ZV91bml0X2VsZW0pICkK KyAgICAgICAgX19jc2NoZWRfdW5pdF9hY2N0X3N0b3BfbG9ja2VkKHBydiwgc3ZjKTsKIAogICAg IHNwaW5fdW5sb2NrX2lycSgmcHJ2LT5sb2NrKTsKIApAQCAtMTA4Miw4NiArMTA4MSw4NSBAQCBj c2NoZWRfdW5pdF9yZW1vdmUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2No ZWRfdW5pdCAqdW5pdCkKIHN0YXRpYyB2b2lkCiBjc2NoZWRfdW5pdF9zbGVlcChjb25zdCBzdHJ1 Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0KQogewotICAgIHN0cnVj dCB2Y3B1ICp2YyA9IHVuaXQtPnZjcHVfbGlzdDsKICAgICBzdHJ1Y3QgY3NjaGVkX3VuaXQgKiBj b25zdCBzdmMgPSBDU0NIRURfVU5JVCh1bml0KTsKLSAgICB1bnNpZ25lZCBpbnQgY3B1ID0gdmMt PnByb2Nlc3NvcjsKKyAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc2NoZWRfdW5pdF9jcHUodW5pdCk7 CiAKICAgICBTQ0hFRF9TVEFUX0NSQU5LKHVuaXRfc2xlZXApOwogCi0gICAgQlVHX09OKCBpc19p ZGxlX3ZjcHUodmMpICk7CisgICAgQlVHX09OKCBpc19pZGxlX3VuaXQodW5pdCkgKTsKIAogICAg IGlmICggY3Vycl9vbl9jcHUoY3B1KSA9PSB1bml0ICkKICAgICB7CiAgICAgICAgIC8qCiAgICAg ICAgICAqIFdlIGFyZSBhYm91dCB0byB0aWNrbGUgY3B1LCBzbyB3ZSBzaG91bGQgY2xlYXIgaXRz IGJpdCBpbiBpZGxlcnMuCi0gICAgICAgICAqIEJ1dCwgd2UgYXJlIGhlcmUgYmVjYXVzZSB2YyBp cyBnb2luZyB0byBzbGVlcCB3aGlsZSBydW5uaW5nIG9uIGNwdSwKKyAgICAgICAgICogQnV0LCB3 ZSBhcmUgaGVyZSBiZWNhdXNlIHVuaXQgaXMgZ29pbmcgdG8gc2xlZXAgd2hpbGUgcnVubmluZyBv biBjcHUsCiAgICAgICAgICAqIHNvIHRoZSBiaXQgbXVzdCBiZSB6ZXJvIGFscmVhZHkuCiAgICAg ICAgICAqLwogICAgICAgICBBU1NFUlQoIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCBDU0NIRURfUFJJ VihwZXJfY3B1KHNjaGVkdWxlciwgY3B1KSktPmlkbGVycykpOwogICAgICAgICBjcHVfcmFpc2Vf c29mdGlycShjcHUsIFNDSEVEVUxFX1NPRlRJUlEpOwogICAgIH0KLSAgICBlbHNlIGlmICggX192 Y3B1X29uX3J1bnEoc3ZjKSApCisgICAgZWxzZSBpZiAoIF9fdW5pdF9vbl9ydW5xKHN2YykgKQog ICAgICAgICBydW5xX3JlbW92ZShzdmMpOwogfQogCiBzdGF0aWMgdm9pZAogY3NjaGVkX3VuaXRf d2FrZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIHN0cnVjdCBzY2hlZF91bml0ICp1bml0 KQogewotICAgIHN0cnVjdCB2Y3B1ICp2YyA9IHVuaXQtPnZjcHVfbGlzdDsKICAgICBzdHJ1Y3Qg Y3NjaGVkX3VuaXQgKiBjb25zdCBzdmMgPSBDU0NIRURfVU5JVCh1bml0KTsKICAgICBib29sX3Qg bWlncmF0aW5nOwogCi0gICAgQlVHX09OKCBpc19pZGxlX3ZjcHUodmMpICk7CisgICAgQlVHX09O KCBpc19pZGxlX3VuaXQodW5pdCkgKTsKIAotICAgIGlmICggdW5saWtlbHkoY3Vycl9vbl9jcHUo dmMtPnByb2Nlc3NvcikgPT0gdW5pdCkgKQorICAgIGlmICggdW5saWtlbHkoY3Vycl9vbl9jcHUo c2NoZWRfdW5pdF9jcHUodW5pdCkpID09IHVuaXQpICkKICAgICB7CiAgICAgICAgIFNDSEVEX1NU QVRfQ1JBTksodW5pdF93YWtlX3J1bm5pbmcpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg IGlmICggdW5saWtlbHkoX192Y3B1X29uX3J1bnEoc3ZjKSkgKQorICAgIGlmICggdW5saWtlbHko X191bml0X29uX3J1bnEoc3ZjKSkgKQogICAgIHsKICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyh1 bml0X3dha2Vfb25ydW5xKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICggbGlr ZWx5KHZjcHVfcnVubmFibGUodmMpKSApCisgICAgaWYgKCBsaWtlbHkodW5pdF9ydW5uYWJsZSh1 bml0KSkgKQogICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHVuaXRfd2FrZV9ydW5uYWJsZSk7CiAg ICAgZWxzZQogICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKHVuaXRfd2FrZV9ub3RfcnVubmFibGUp OwogCiAgICAgLyoKLSAgICAgKiBXZSB0ZW1wb3Jhcmx5IGJvb3N0IHRoZSBwcmlvcml0eSBvZiBh d2FraW5nIFZDUFVzIQorICAgICAqIFdlIHRlbXBvcmFyaWx5IGJvb3N0IHRoZSBwcmlvcml0eSBv ZiBhd2FraW5nIFVOSVRzIQogICAgICAqCi0gICAgICogSWYgdGhpcyBWQ1BVIGNvbnN1bWVzIGEg bm9uIG5lZ2xpZ2VhYmxlIGFtb3VudCBvZiBDUFUsIGl0CisgICAgICogSWYgdGhpcyBVTklUIGNv bnN1bWVzIGEgbm9uIG5lZ2xpZ2libGUgYW1vdW50IG9mIENQVSwgaXQKICAgICAgKiB3aWxsIGV2 ZW50dWFsbHkgZmluZCBpdHNlbGYgaW4gdGhlIGNyZWRpdCBhY2NvdW50aW5nIGNvZGUKICAgICAg KiBwYXRoIHdoZXJlIGl0cyBwcmlvcml0eSB3aWxsIGJlIHJlc2V0IHRvIG5vcm1hbC4KICAgICAg KgotICAgICAqIElmIG9uIHRoZSBvdGhlciBoYW5kIHRoZSBWQ1BVIGNvbnN1bWVzIGxpdHRsZSBD UFUgYW5kIGlzCisgICAgICogSWYgb24gdGhlIG90aGVyIGhhbmQgdGhlIFVOSVQgY29uc3VtZXMg bGl0dGxlIENQVSBhbmQgaXMKICAgICAgKiBibG9ja2luZyBhbmQgYXdva2VuIGEgbG90IChkb2lu ZyBJL08gZm9yIGV4YW1wbGUpLCBpdHMKICAgICAgKiBwcmlvcml0eSB3aWxsIHJlbWFpbiBib29z dGVkLCBvcHRpbWl6aW5nIGl0J3Mgd2FrZS10by1ydW4KICAgICAgKiBsYXRlbmNpZXMuCiAgICAg ICoKLSAgICAgKiBUaGlzIGFsbG93cyB3YWtlLXRvLXJ1biBsYXRlbmN5IHNlbnNpdGl2ZSBWQ1BV cyB0byBwcmVlbXB0Ci0gICAgICogbW9yZSBDUFUgcmVzb3VyY2UgaW50ZW5zaXZlIFZDUFVzIHdp dGhvdXQgaW1wYWN0aW5nIG92ZXJhbGwgCisgICAgICogVGhpcyBhbGxvd3Mgd2FrZS10by1ydW4g bGF0ZW5jeSBzZW5zaXRpdmUgVU5JVHMgdG8gcHJlZW1wdAorICAgICAqIG1vcmUgQ1BVIHJlc291 cmNlIGludGVuc2l2ZSBVTklUcyB3aXRob3V0IGltcGFjdGluZyBvdmVyYWxsCiAgICAgICogc3lz dGVtIGZhaXJuZXNzLgogICAgICAqCiAgICAgICogVGhlcmUgYXJlIHR3byBjYXNlcywgd2hlbiB3 ZSBkb24ndCB3YW50IHRvIGJvb3N0OgotICAgICAqICAtIFZDUFVzIHRoYXQgYXJlIHdha2luZyB1 cCBhZnRlciBhIG1pZ3JhdGlvbiwgcmF0aGVyIHRoYW4KKyAgICAgKiAgLSBVTklUcyB0aGF0IGFy ZSB3YWtpbmcgdXAgYWZ0ZXIgYSBtaWdyYXRpb24sIHJhdGhlciB0aGFuCiAgICAgICogICAgYWZ0 ZXIgaGF2aW5nIGJsb2NrOwotICAgICAqICAtIFZDUFVzIG9mIGNhcHBlZCBkb21haW5zIHVucGF1 c2luZyBhZnRlciBlYXJuaW5nIGNyZWRpdHMKKyAgICAgKiAgLSBVTklUcyBvZiBjYXBwZWQgZG9t YWlucyB1bnBhdXNpbmcgYWZ0ZXIgZWFybmluZyBjcmVkaXRzCiAgICAgICogICAgdGhleSBoYWQg b3ZlcnNwZW50LgogICAgICAqLwotICAgIG1pZ3JhdGluZyA9IHRlc3RfYW5kX2NsZWFyX2JpdChD U0NIRURfRkxBR19WQ1BVX01JR1JBVElORywgJnN2Yy0+ZmxhZ3MpOworICAgIG1pZ3JhdGluZyA9 IHRlc3RfYW5kX2NsZWFyX2JpdChDU0NIRURfRkxBR19VTklUX01JR1JBVElORywgJnN2Yy0+Zmxh Z3MpOwogCiAgICAgaWYgKCAhbWlncmF0aW5nICYmIHN2Yy0+cHJpID09IENTQ0hFRF9QUklfVFNf VU5ERVIgJiYKLSAgICAgICAgICF0ZXN0X2JpdChDU0NIRURfRkxBR19WQ1BVX1BBUktFRCwgJnN2 Yy0+ZmxhZ3MpICkKKyAgICAgICAgICF0ZXN0X2JpdChDU0NIRURfRkxBR19VTklUX1BBUktFRCwg JnN2Yy0+ZmxhZ3MpICkKICAgICB7Ci0gICAgICAgIFRSQUNFXzJEKFRSQ19DU0NIRURfQk9PU1Rf U1RBUlQsIHZjLT5kb21haW4tPmRvbWFpbl9pZCwgdmMtPnZjcHVfaWQpOworICAgICAgICBUUkFD RV8yRChUUkNfQ1NDSEVEX0JPT1NUX1NUQVJULCB1bml0LT5kb21haW4tPmRvbWFpbl9pZCwKKyAg ICAgICAgICAgICAgICAgdW5pdC0+dW5pdF9pZCk7CiAgICAgICAgIFNDSEVEX1NUQVRfQ1JBTkso dW5pdF9ib29zdCk7CiAgICAgICAgIHN2Yy0+cHJpID0gQ1NDSEVEX1BSSV9UU19CT09TVDsKICAg ICB9CiAKLSAgICAvKiBQdXQgdGhlIFZDUFUgb24gdGhlIHJ1bnEgYW5kIHRpY2tsZSBDUFVzICov CisgICAgLyogUHV0IHRoZSBVTklUIG9uIHRoZSBydW5xIGFuZCB0aWNrbGUgQ1BVcyAqLwogICAg IHJ1bnFfaW5zZXJ0KHN2Yyk7CiAgICAgX19ydW5xX3RpY2tsZShzdmMpOwogfQpAQCAtMTE3Miw3 ICsxMTcwLDcgQEAgY3NjaGVkX3VuaXRfeWllbGQoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3Bz LCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKICAgICBzdHJ1Y3QgY3NjaGVkX3VuaXQgKiBjb25z dCBzdmMgPSBDU0NIRURfVU5JVCh1bml0KTsKIAogICAgIC8qIExldCB0aGUgc2NoZWR1bGVyIGtu b3cgdGhhdCB0aGlzIHZjcHUgaXMgdHJ5aW5nIHRvIHlpZWxkICovCi0gICAgc2V0X2JpdChDU0NI RURfRkxBR19WQ1BVX1lJRUxELCAmc3ZjLT5mbGFncyk7CisgICAgc2V0X2JpdChDU0NIRURfRkxB R19VTklUX1lJRUxELCAmc3ZjLT5mbGFncyk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTEyMDEsOCAr MTE5OSw4IEBAIGNzY2hlZF9kb21fY250bCgKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCAh bGlzdF9lbXB0eSgmc2RvbS0+YWN0aXZlX3Nkb21fZWxlbSkgKQogICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgIHBydi0+d2VpZ2h0IC09IHNkb20tPndlaWdodCAqIHNkb20tPmFjdGl2ZV92 Y3B1X2NvdW50OwotICAgICAgICAgICAgICAgIHBydi0+d2VpZ2h0ICs9IG9wLT51LmNyZWRpdC53 ZWlnaHQgKiBzZG9tLT5hY3RpdmVfdmNwdV9jb3VudDsKKyAgICAgICAgICAgICAgICBwcnYtPndl aWdodCAtPSBzZG9tLT53ZWlnaHQgKiBzZG9tLT5hY3RpdmVfdW5pdF9jb3VudDsKKyAgICAgICAg ICAgICAgICBwcnYtPndlaWdodCArPSBvcC0+dS5jcmVkaXQud2VpZ2h0ICogc2RvbS0+YWN0aXZl X3VuaXRfY291bnQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzZG9tLT53ZWlnaHQgPSBv cC0+dS5jcmVkaXQud2VpZ2h0OwogICAgICAgICB9CkBAIC0xMjMxLDkgKzEyMjksOSBAQCBjc2No ZWRfYWZmX2NudGwoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBzdHJ1Y3Qgc2NoZWRfdW5p dCAqdW5pdCwKIAogICAgIC8qIEFyZSB3ZSBiZWNvbWluZyBleGNsdXNpdmVseSBwaW5uZWQ/ICov CiAgICAgaWYgKCBjcHVtYXNrX3dlaWdodChoYXJkKSA9PSAxICkKLSAgICAgICAgc2V0X2JpdChD U0NIRURfRkxBR19WQ1BVX1BJTk5FRCwgJnN2Yy0+ZmxhZ3MpOworICAgICAgICBzZXRfYml0KENT Q0hFRF9GTEFHX1VOSVRfUElOTkVELCAmc3ZjLT5mbGFncyk7CiAgICAgZWxzZQotICAgICAgICBj bGVhcl9iaXQoQ1NDSEVEX0ZMQUdfVkNQVV9QSU5ORUQsICZzdmMtPmZsYWdzKTsKKyAgICAgICAg Y2xlYXJfYml0KENTQ0hFRF9GTEFHX1VOSVRfUElOTkVELCAmc3ZjLT5mbGFncyk7CiB9CiAKIHN0 YXRpYyBpbmxpbmUgdm9pZApAQCAtMTI3NiwxNCArMTI3NCwxNCBAQCBjc2NoZWRfc3lzX2NudGwo Y29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLAogICAgICAgICBlbHNlIGlmICggcHJ2LT5yYXRl bGltaXQgJiYgIXBhcmFtcy0+cmF0ZWxpbWl0X3VzICkKICAgICAgICAgICAgIHByaW50ayhYRU5M T0dfSU5GTyAiRGlzYWJsaW5nIGNvbnRleHQgc3dpdGNoIHJhdGUgbGltaXRpbmdcbiIpOwogICAg ICAgICBwcnYtPnJhdGVsaW1pdCA9IE1JQ1JPU0VDUyhwYXJhbXMtPnJhdGVsaW1pdF91cyk7Ci0g ICAgICAgIHBydi0+dmNwdV9taWdyX2RlbGF5ID0gTUlDUk9TRUNTKHBhcmFtcy0+dmNwdV9taWdy X2RlbGF5X3VzKTsKKyAgICAgICAgcHJ2LT51bml0X21pZ3JfZGVsYXkgPSBNSUNST1NFQ1MocGFy YW1zLT52Y3B1X21pZ3JfZGVsYXlfdXMpOwogICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZwcnYtPmxvY2ssIGZsYWdzKTsKIAogICAgICAgICAvKiBGQUxMVEhSVSAqLwogICAgIGNhc2Ug WEVOX1NZU0NUTF9TQ0hFRE9QX2dldGluZm86CiAgICAgICAgIHBhcmFtcy0+dHNsaWNlX21zID0g cHJ2LT50c2xpY2UgLyBNSUxMSVNFQ1MoMSk7CiAgICAgICAgIHBhcmFtcy0+cmF0ZWxpbWl0X3Vz ID0gcHJ2LT5yYXRlbGltaXQgLyBNSUNST1NFQ1MoMSk7Ci0gICAgICAgIHBhcmFtcy0+dmNwdV9t aWdyX2RlbGF5X3VzID0gcHJ2LT52Y3B1X21pZ3JfZGVsYXkgLyBNSUNST1NFQ1MoMSk7CisgICAg ICAgIHBhcmFtcy0+dmNwdV9taWdyX2RlbGF5X3VzID0gcHJ2LT51bml0X21pZ3JfZGVsYXkgLyBN SUNST1NFQ1MoMSk7CiAgICAgICAgIHJjID0gMDsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt MTMwMSw3ICsxMjk5LDcgQEAgY3NjaGVkX2FsbG9jX2RvbWRhdGEoY29uc3Qgc3RydWN0IHNjaGVk dWxlciAqb3BzLCBzdHJ1Y3QgZG9tYWluICpkb20pCiAgICAgICAgIHJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwogCiAgICAgLyogSW5pdGlhbGl6ZSBjcmVkaXQgYW5kIHdlaWdodCAqLwotICAgIElO SVRfTElTVF9IRUFEKCZzZG9tLT5hY3RpdmVfdmNwdSk7CisgICAgSU5JVF9MSVNUX0hFQUQoJnNk b20tPmFjdGl2ZV91bml0KTsKICAgICBJTklUX0xJU1RfSEVBRCgmc2RvbS0+YWN0aXZlX3Nkb21f ZWxlbSk7CiAgICAgc2RvbS0+ZG9tID0gZG9tOwogICAgIHNkb20tPndlaWdodCA9IENTQ0hFRF9E RUZBVUxUX1dFSUdIVDsKQEAgLTEzMTgsNyArMTMxNiw3IEBAIGNzY2hlZF9mcmVlX2RvbWRhdGEo Y29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCB2b2lkICpkYXRhKQogLyoKICAqIFRoaXMgaXMg YSBPKG4pIG9wdGltaXplZCBzb3J0IG9mIHRoZSBydW5xLgogICoKLSAqIFRpbWUtc2hhcmUgVkNQ VXMgY2FuIG9ubHkgYmUgb25lIG9mIHR3byBwcmlvcml0aWVzLCBVTkRFUiBvciBPVkVSLiBXZSB3 YWxrCisgKiBUaW1lLXNoYXJlIFVOSVRzIGNhbiBvbmx5IGJlIG9uZSBvZiB0d28gcHJpb3JpdGll cywgVU5ERVIgb3IgT1ZFUi4gV2Ugd2FsawogICogdGhyb3VnaCB0aGUgcnVucSBhbmQgbW92ZSB1 cCBhbnkgVU5ERVJzIHRoYXQgYXJlIHByZWNlZGVkIGJ5IE9WRVJTLiBXZQogICogcmVtZW1iZXIg dGhlIGxhc3QgVU5ERVIgdG8gbWFrZSB0aGUgbW92ZSB1cCBvcGVyYXRpb24gTygxKS4KICAqLwpA QCAtMTM3MSw3ICsxMzY5LDcgQEAgY3NjaGVkX2FjY3Qodm9pZCogZHVtbXkpCiB7CiAgICAgc3Ry dWN0IGNzY2hlZF9wcml2YXRlICpwcnYgPSBkdW1teTsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdz OwotICAgIHN0cnVjdCBsaXN0X2hlYWQgKml0ZXJfdmNwdSwgKm5leHRfdmNwdTsKKyAgICBzdHJ1 Y3QgbGlzdF9oZWFkICppdGVyX3VuaXQsICpuZXh0X3VuaXQ7CiAgICAgc3RydWN0IGxpc3RfaGVh ZCAqaXRlcl9zZG9tLCAqbmV4dF9zZG9tOwogICAgIHN0cnVjdCBjc2NoZWRfdW5pdCAqc3ZjOwog ICAgIHN0cnVjdCBjc2NoZWRfZG9tICpzZG9tOwpAQCAtMTQxOCwyNiArMTQxNiwyNiBAQCBjc2No ZWRfYWNjdCh2b2lkKiBkdW1teSkKICAgICAgICAgc2RvbSA9IGxpc3RfZW50cnkoaXRlcl9zZG9t LCBzdHJ1Y3QgY3NjaGVkX2RvbSwgYWN0aXZlX3Nkb21fZWxlbSk7CiAKICAgICAgICAgQlVHX09O KCBpc19pZGxlX2RvbWFpbihzZG9tLT5kb20pICk7Ci0gICAgICAgIEJVR19PTiggc2RvbS0+YWN0 aXZlX3ZjcHVfY291bnQgPT0gMCApOworICAgICAgICBCVUdfT04oIHNkb20tPmFjdGl2ZV91bml0 X2NvdW50ID09IDAgKTsKICAgICAgICAgQlVHX09OKCBzZG9tLT53ZWlnaHQgPT0gMCApOwotICAg ICAgICBCVUdfT04oIChzZG9tLT53ZWlnaHQgKiBzZG9tLT5hY3RpdmVfdmNwdV9jb3VudCkgPiB3 ZWlnaHRfbGVmdCApOworICAgICAgICBCVUdfT04oIChzZG9tLT53ZWlnaHQgKiBzZG9tLT5hY3Rp dmVfdW5pdF9jb3VudCkgPiB3ZWlnaHRfbGVmdCApOwogCi0gICAgICAgIHdlaWdodF9sZWZ0IC09 ICggc2RvbS0+d2VpZ2h0ICogc2RvbS0+YWN0aXZlX3ZjcHVfY291bnQgKTsKKyAgICAgICAgd2Vp Z2h0X2xlZnQgLT0gKCBzZG9tLT53ZWlnaHQgKiBzZG9tLT5hY3RpdmVfdW5pdF9jb3VudCApOwog CiAgICAgICAgIC8qCiAgICAgICAgICAqIEEgZG9tYWluJ3MgZmFpciBzaGFyZSBpcyBjb21wdXRl ZCB1c2luZyBpdHMgd2VpZ2h0IGluIGNvbXBldGl0aW9uCiAgICAgICAgICAqIHdpdGggdGhhdCBv ZiBhbGwgb3RoZXIgYWN0aXZlIGRvbWFpbnMuCiAgICAgICAgICAqCi0gICAgICAgICAqIEF0IG1v c3QsIGEgZG9tYWluIGNhbiB1c2UgY3JlZGl0cyB0byBydW4gYWxsIGl0cyBhY3RpdmUgVkNQVXMK KyAgICAgICAgICogQXQgbW9zdCwgYSBkb21haW4gY2FuIHVzZSBjcmVkaXRzIHRvIHJ1biBhbGwg aXRzIGFjdGl2ZSBVTklUcwogICAgICAgICAgKiBmb3Igb25lIGZ1bGwgYWNjb3VudGluZyBwZXJp b2QuIFdlIGFsbG93IGEgZG9tYWluIHRvIGVhcm4gbW9yZQogICAgICAgICAgKiBvbmx5IHdoZW4g dGhlIHN5c3RlbS13aWRlIGNyZWRpdCBiYWxhbmNlIGlzIG5lZ2F0aXZlLgogICAgICAgICAgKi8K LSAgICAgICAgY3JlZGl0X3BlYWsgPSBzZG9tLT5hY3RpdmVfdmNwdV9jb3VudCAqIHBydi0+Y3Jl ZGl0c19wZXJfdHNsaWNlOworICAgICAgICBjcmVkaXRfcGVhayA9IHNkb20tPmFjdGl2ZV91bml0 X2NvdW50ICogcHJ2LT5jcmVkaXRzX3Blcl90c2xpY2U7CiAgICAgICAgIGlmICggcHJ2LT5jcmVk aXRfYmFsYW5jZSA8IDAgKQogICAgICAgICB7CiAgICAgICAgICAgICBjcmVkaXRfcGVhayArPSAo ICggLXBydi0+Y3JlZGl0X2JhbGFuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq IHNkb20tPndlaWdodAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2RvbS0+YWN0 aXZlX3ZjcHVfY291bnQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNkb20t PmFjdGl2ZV91bml0X2NvdW50KSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3ZWln aHRfdG90YWwgLSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAvIHdlaWdodF90b3Rh bDsKICAgICAgICAgfQpAQCAtMTQ0OCwxNCArMTQ0NiwxNCBAQCBjc2NoZWRfYWNjdCh2b2lkKiBk dW1teSkKICAgICAgICAgICAgIGlmICggY3JlZGl0X2NhcCA8IGNyZWRpdF9wZWFrICkKICAgICAg ICAgICAgICAgICBjcmVkaXRfcGVhayA9IGNyZWRpdF9jYXA7CiAKLSAgICAgICAgICAgIC8qIEZJ WE1FIC0tIHNldCBjYXAgcGVyLXZjcHUgYXMgd2VsbC4uLj8gKi8KLSAgICAgICAgICAgIGNyZWRp dF9jYXAgPSAoIGNyZWRpdF9jYXAgKyAoIHNkb20tPmFjdGl2ZV92Y3B1X2NvdW50IC0gMSApCi0g ICAgICAgICAgICAgICAgICAgICAgICAgKSAvIHNkb20tPmFjdGl2ZV92Y3B1X2NvdW50OworICAg ICAgICAgICAgLyogRklYTUUgLS0gc2V0IGNhcCBwZXItdW5pdCBhcyB3ZWxsLi4uPyAqLworICAg ICAgICAgICAgY3JlZGl0X2NhcCA9ICggY3JlZGl0X2NhcCArICggc2RvbS0+YWN0aXZlX3VuaXRf Y291bnQgLSAxICkKKyAgICAgICAgICAgICAgICAgICAgICAgICApIC8gc2RvbS0+YWN0aXZlX3Vu aXRfY291bnQ7CiAgICAgICAgIH0KIAogICAgICAgICBjcmVkaXRfZmFpciA9ICggKCBjcmVkaXRf dG90YWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzZG9tLT53ZWlnaHQKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgKiBzZG9tLT5hY3RpdmVfdmNwdV9jb3VudCApCisgICAgICAgICAg ICAgICAgICAgICAgICAgICogc2RvbS0+YWN0aXZlX3VuaXRfY291bnQgKQogICAgICAgICAgICAg ICAgICAgICAgICAgKyAod2VpZ2h0X3RvdGFsIC0gMSkKICAgICAgICAgICAgICAgICAgICAgICAp IC8gd2VpZ2h0X3RvdGFsOwogCkBAIC0xNDg5LDE0ICsxNDg3LDE0IEBAIGNzY2hlZF9hY2N0KHZv aWQqIGR1bW15KQogICAgICAgICAgICAgY3JlZGl0X2ZhaXIgPSBjcmVkaXRfcGVhazsKICAgICAg ICAgfQogCi0gICAgICAgIC8qIENvbXB1dGUgZmFpciBzaGFyZSBwZXIgVkNQVSAqLwotICAgICAg ICBjcmVkaXRfZmFpciA9ICggY3JlZGl0X2ZhaXIgKyAoIHNkb20tPmFjdGl2ZV92Y3B1X2NvdW50 IC0gMSApCi0gICAgICAgICAgICAgICAgICAgICAgKSAvIHNkb20tPmFjdGl2ZV92Y3B1X2NvdW50 OworICAgICAgICAvKiBDb21wdXRlIGZhaXIgc2hhcmUgcGVyIFVOSVQgKi8KKyAgICAgICAgY3Jl ZGl0X2ZhaXIgPSAoIGNyZWRpdF9mYWlyICsgKCBzZG9tLT5hY3RpdmVfdW5pdF9jb3VudCAtIDEg KQorICAgICAgICAgICAgICAgICAgICAgICkgLyBzZG9tLT5hY3RpdmVfdW5pdF9jb3VudDsKIAog Ci0gICAgICAgIGxpc3RfZm9yX2VhY2hfc2FmZSggaXRlcl92Y3B1LCBuZXh0X3ZjcHUsICZzZG9t LT5hY3RpdmVfdmNwdSApCisgICAgICAgIGxpc3RfZm9yX2VhY2hfc2FmZSggaXRlcl91bml0LCBu ZXh0X3VuaXQsICZzZG9tLT5hY3RpdmVfdW5pdCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN2 YyA9IGxpc3RfZW50cnkoaXRlcl92Y3B1LCBzdHJ1Y3QgY3NjaGVkX3VuaXQsIGFjdGl2ZV92Y3B1 X2VsZW0pOworICAgICAgICAgICAgc3ZjID0gbGlzdF9lbnRyeShpdGVyX3VuaXQsIHN0cnVjdCBj c2NoZWRfdW5pdCwgYWN0aXZlX3VuaXRfZWxlbSk7CiAgICAgICAgICAgICBCVUdfT04oIHNkb20g IT0gc3ZjLT5zZG9tICk7CiAKICAgICAgICAgICAgIC8qIEluY3JlbWVudCBjcmVkaXQgKi8KQEAg LTE1MDQsMjAgKzE1MDIsMjAgQEAgY3NjaGVkX2FjY3Qodm9pZCogZHVtbXkpCiAgICAgICAgICAg ICBjcmVkaXQgPSBhdG9taWNfcmVhZCgmc3ZjLT5jcmVkaXQpOwogCiAgICAgICAgICAgICAvKgot ICAgICAgICAgICAgICogUmVjb21wdXRlIHByaW9yaXR5IG9yLCBpZiBWQ1BVIGlzIGlkbGluZywg cmVtb3ZlIGl0IGZyb20KKyAgICAgICAgICAgICAqIFJlY29tcHV0ZSBwcmlvcml0eSBvciwgaWYg VU5JVCBpcyBpZGxpbmcsIHJlbW92ZSBpdCBmcm9tCiAgICAgICAgICAgICAgKiB0aGUgYWN0aXZl IGxpc3QuCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmICggY3JlZGl0IDwgMCApCiAg ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3ZjLT5wcmkgPSBDU0NIRURfUFJJX1RTX09W RVI7CiAKLSAgICAgICAgICAgICAgICAvKiBQYXJrIHJ1bm5pbmcgVkNQVXMgb2YgY2FwcGVkLW91 dCBkb21haW5zICovCisgICAgICAgICAgICAgICAgLyogUGFyayBydW5uaW5nIFVOSVRzIG9mIGNh cHBlZC1vdXQgZG9tYWlucyAqLwogICAgICAgICAgICAgICAgIGlmICggc2RvbS0+Y2FwICE9IDBV ICYmCiAgICAgICAgICAgICAgICAgICAgICBjcmVkaXQgPCAtY3JlZGl0X2NhcCAmJgotICAgICAg ICAgICAgICAgICAgICAgIXRlc3RfYW5kX3NldF9iaXQoQ1NDSEVEX0ZMQUdfVkNQVV9QQVJLRUQs ICZzdmMtPmZsYWdzKSApCisgICAgICAgICAgICAgICAgICAgICAhdGVzdF9hbmRfc2V0X2JpdChD U0NIRURfRkxBR19VTklUX1BBUktFRCwgJnN2Yy0+ZmxhZ3MpICkKICAgICAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgICAgICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF9wYXJrKTsKLSAgICAg ICAgICAgICAgICAgICAgdmNwdV9wYXVzZV9ub3N5bmMoc3ZjLT52Y3B1KTsKKyAgICAgICAgICAg ICAgICAgICAgdmNwdV9wYXVzZV9ub3N5bmMoc3ZjLT51bml0LT52Y3B1X2xpc3QpOwogICAgICAg ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8qIExvd2VyIGJvdW5kIG9uIGNyZWRpdHMg Ki8KQEAgLTE1MzMsMjIgKzE1MzEsMjIgQEAgY3NjaGVkX2FjY3Qodm9pZCogZHVtbXkpCiAgICAg ICAgICAgICAgICAgc3ZjLT5wcmkgPSBDU0NIRURfUFJJX1RTX1VOREVSOwogCiAgICAgICAgICAg ICAgICAgLyogVW5wYXJrIGFueSBjYXBwZWQgZG9tYWlucyB3aG9zZSBjcmVkaXRzIGdvIHBvc2l0 aXZlICovCi0gICAgICAgICAgICAgICAgaWYgKCB0ZXN0X2JpdChDU0NIRURfRkxBR19WQ1BVX1BB UktFRCwgJnN2Yy0+ZmxhZ3MpICkKKyAgICAgICAgICAgICAgICBpZiAoIHRlc3RfYml0KENTQ0hF RF9GTEFHX1VOSVRfUEFSS0VELCAmc3ZjLT5mbGFncykgKQogICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICogSXQncyBpbXBvcnRh bnQgdG8gdW5zZXQgdGhlIGZsYWcgQUZURVIgdGhlIHVucGF1c2UoKQotICAgICAgICAgICAgICAg ICAgICAgKiBjYWxsIHRvIG1ha2Ugc3VyZSB0aGUgVkNQVSdzIHByaW9yaXR5IGlzIG5vdCBib29z dGVkCisgICAgICAgICAgICAgICAgICAgICAqIGNhbGwgdG8gbWFrZSBzdXJlIHRoZSBVTklUJ3Mg cHJpb3JpdHkgaXMgbm90IGJvb3N0ZWQKICAgICAgICAgICAgICAgICAgICAgICogaWYgaXQgaXMg d29rZW4gdXAgaGVyZS4KICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAg ICAgIFNDSEVEX1NUQVRfQ1JBTksodW5pdF91bnBhcmspOwotICAgICAgICAgICAgICAgICAgICB2 Y3B1X3VucGF1c2Uoc3ZjLT52Y3B1KTsKLSAgICAgICAgICAgICAgICAgICAgY2xlYXJfYml0KENT Q0hFRF9GTEFHX1ZDUFVfUEFSS0VELCAmc3ZjLT5mbGFncyk7CisgICAgICAgICAgICAgICAgICAg IHZjcHVfdW5wYXVzZShzdmMtPnVuaXQtPnZjcHVfbGlzdCk7CisgICAgICAgICAgICAgICAgICAg IGNsZWFyX2JpdChDU0NIRURfRkxBR19VTklUX1BBUktFRCwgJnN2Yy0+ZmxhZ3MpOwogICAgICAg ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIC8qIFVwcGVyIGJvdW5kIG9uIGNyZWRpdHMg bWVhbnMgVkNQVSBzdG9wcyBlYXJuaW5nICovCisgICAgICAgICAgICAgICAgLyogVXBwZXIgYm91 bmQgb24gY3JlZGl0cyBtZWFucyBVTklUIHN0b3BzIGVhcm5pbmcgKi8KICAgICAgICAgICAgICAg ICBpZiAoIGNyZWRpdCA+IHBydi0+Y3JlZGl0c19wZXJfdHNsaWNlICkKICAgICAgICAgICAgICAg ICB7Ci0gICAgICAgICAgICAgICAgICAgIF9fY3NjaGVkX3ZjcHVfYWNjdF9zdG9wX2xvY2tlZChw cnYsIHN2Yyk7CisgICAgICAgICAgICAgICAgICAgIF9fY3NjaGVkX3VuaXRfYWNjdF9zdG9wX2xv Y2tlZChwcnYsIHN2Yyk7CiAgICAgICAgICAgICAgICAgICAgIC8qIERpdmlkZSBjcmVkaXRzIGlu IGhhbGYsIHNvIHRoYXQgd2hlbiBpdCBzdGFydHMKICAgICAgICAgICAgICAgICAgICAgICogYWNj b3VudGluZyBhZ2FpbiwgaXQgc3RhcnRzIGEgbGl0dGxlIGJpdCAiYWhlYWQiICovCiAgICAgICAg ICAgICAgICAgICAgIGNyZWRpdCAvPSAyOwpAQCAtMTU1Niw4ICsxNTU0LDggQEAgY3NjaGVkX2Fj Y3Qodm9pZCogZHVtbXkpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAg ICAgICAgICBTQ0hFRF9WQ1BVX1NUQVRfU0VUKHN2YywgY3JlZGl0X2xhc3QsIGNyZWRpdCk7Ci0g ICAgICAgICAgICBTQ0hFRF9WQ1BVX1NUQVRfU0VUKHN2YywgY3JlZGl0X2luY3IsIGNyZWRpdF9m YWlyKTsKKyAgICAgICAgICAgIFNDSEVEX1VOSVRfU1RBVF9TRVQoc3ZjLCBjcmVkaXRfbGFzdCwg Y3JlZGl0KTsKKyAgICAgICAgICAgIFNDSEVEX1VOSVRfU1RBVF9TRVQoc3ZjLCBjcmVkaXRfaW5j ciwgY3JlZGl0X2ZhaXIpOwogICAgICAgICAgICAgY3JlZGl0X2JhbGFuY2UgKz0gY3JlZGl0Owog ICAgICAgICB9CiAgICAgfQpAQCAtMTU4MywxMCArMTU4MSwxMCBAQCBjc2NoZWRfdGljayh2b2lk ICpfY3B1KQogICAgIHNwYy0+dGljaysrOwogCiAgICAgLyoKLSAgICAgKiBBY2NvdW50aW5nIGZv ciBydW5uaW5nIFZDUFUKKyAgICAgKiBBY2NvdW50aW5nIGZvciBydW5uaW5nIFVOSVQKICAgICAg Ki8KLSAgICBpZiAoICFpc19pZGxlX3ZjcHUoY3VycmVudCkgKQotICAgICAgICBjc2NoZWRfdmNw dV9hY2N0KHBydiwgY3B1KTsKKyAgICBpZiAoICFpc19pZGxlX3VuaXQoY3VycmVudC0+c2NoZWRf dW5pdCkgKQorICAgICAgICBjc2NoZWRfdW5pdF9hY2N0KHBydiwgY3B1KTsKIAogICAgIC8qCiAg ICAgICogQ2hlY2sgaWYgcnVucSBuZWVkcyB0byBiZSBzb3J0ZWQKQEAgLTE2MDcsNyArMTYwNSw3 IEBAIGNzY2hlZF9ydW5xX3N0ZWFsKGludCBwZWVyX2NwdSwgaW50IGNwdSwgaW50IHByaSwgaW50 IGJhbGFuY2Vfc3RlcCkKICAgICBjb25zdCBzdHJ1Y3QgY3NjaGVkX3BjcHUgKiBjb25zdCBwZWVy X3BjcHUgPSBDU0NIRURfUENQVShwZWVyX2NwdSk7CiAgICAgc3RydWN0IGNzY2hlZF91bml0ICpz cGVlcjsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkICppdGVyOwotICAgIHN0cnVjdCB2Y3B1ICp2YzsK KyAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdDsKIAogICAgIEFTU0VSVChwZWVyX3BjcHUgIT0g TlVMTCk7CiAKQEAgLTE2MTUsNyArMTYxMyw3IEBAIGNzY2hlZF9ydW5xX3N0ZWFsKGludCBwZWVy X2NwdSwgaW50IGNwdSwgaW50IHByaSwgaW50IGJhbGFuY2Vfc3RlcCkKICAgICAgKiBEb24ndCBz dGVhbCBmcm9tIGFuIGlkbGUgQ1BVJ3MgcnVucSBiZWNhdXNlIGl0J3MgYWJvdXQgdG8KICAgICAg KiBwaWNrIHVwIHdvcmsgZnJvbSBpdCBpdHNlbGYuCiAgICAgICovCi0gICAgaWYgKCB1bmxpa2Vs eShpc19pZGxlX3ZjcHUoY3Vycl9vbl9jcHUocGVlcl9jcHUpLT52Y3B1X2xpc3QpKSApCisgICAg aWYgKCB1bmxpa2VseShpc19pZGxlX3VuaXQoY3Vycl9vbl9jcHUocGVlcl9jcHUpKSkgKQogICAg ICAgICBnb3RvIG91dDsKIAogICAgIGxpc3RfZm9yX2VhY2goIGl0ZXIsICZwZWVyX3BjcHUtPnJ1 bnEgKQpAQCAtMTYyMyw0NiArMTYyMSw0NCBAQCBjc2NoZWRfcnVucV9zdGVhbChpbnQgcGVlcl9j cHUsIGludCBjcHUsIGludCBwcmksIGludCBiYWxhbmNlX3N0ZXApCiAgICAgICAgIHNwZWVyID0g X19ydW5xX2VsZW0oaXRlcik7CiAKICAgICAgICAgLyoKLSAgICAgICAgICogSWYgbmV4dCBhdmFp bGFibGUgVkNQVSBoZXJlIGlzIG5vdCBvZiBzdHJpY3RseSBoaWdoZXIKKyAgICAgICAgICogSWYg bmV4dCBhdmFpbGFibGUgVU5JVCBoZXJlIGlzIG5vdCBvZiBzdHJpY3RseSBoaWdoZXIKICAgICAg ICAgICogcHJpb3JpdHkgdGhhbiBvdXJzLCB0aGlzIFBDUFUgaXMgdXNlbGVzcyB0byB1cy4KICAg ICAgICAgICovCiAgICAgICAgIGlmICggc3BlZXItPnByaSA8PSBwcmkgKQogICAgICAgICAgICAg YnJlYWs7CiAKLSAgICAgICAgLyogSXMgdGhpcyBWQ1BVIHJ1bm5hYmxlIG9uIG91ciBQQ1BVPyAq LwotICAgICAgICB2YyA9IHNwZWVyLT52Y3B1OwotICAgICAgICBCVUdfT04oIGlzX2lkbGVfdmNw dSh2YykgKTsKKyAgICAgICAgLyogSXMgdGhpcyBVTklUIHJ1bm5hYmxlIG9uIG91ciBQQ1BVPyAq LworICAgICAgICB1bml0ID0gc3BlZXItPnVuaXQ7CisgICAgICAgIEJVR19PTiggaXNfaWRsZV91 bml0KHVuaXQpICk7CiAKICAgICAgICAgLyoKLSAgICAgICAgICogSWYgdGhlIHZjcHUgaXMgc3Rp bGwgaW4gcGVlcl9jcHUncyBzY2hlZHVsaW5nIHRhaWwsIG9yIGlmIGl0CisgICAgICAgICAqIElm IHRoZSB1bml0IGlzIHN0aWxsIGluIHBlZXJfY3B1J3Mgc2NoZWR1bGluZyB0YWlsLCBvciBpZiBp dAogICAgICAgICAgKiBoYXMgbm8gdXNlZnVsIHNvZnQgYWZmaW5pdHksIHNraXAgaXQuCiAgICAg ICAgICAqCiAgICAgICAgICAqIEluIGZhY3QsIHdoYXQgd2Ugd2FudCBpcyB0byBjaGVjayBpZiB3 ZSBoYXZlIGFueSAic29mdC1hZmZpbmUKICAgICAgICAgICogd29yayIgdG8gc3RlYWwsIGJlZm9y ZSBzdGFydGluZyB0byBsb29rIGF0ICJoYXJkLWFmZmluZSB3b3JrIi4KICAgICAgICAgICoKLSAg ICAgICAgICogTm90aWNlIHRoYXQsIGlmIG5vdCBldmVuIG9uZSB2Q1BVIG9uIHRoaXMgcnVucSBo YXMgYSB1c2VmdWwKKyAgICAgICAgICogTm90aWNlIHRoYXQsIGlmIG5vdCBldmVuIG9uZSB1bml0 IG9uIHRoaXMgcnVucSBoYXMgYSB1c2VmdWwKICAgICAgICAgICogc29mdCBhZmZpbml0eSwgd2Ug Y291bGQgaGF2ZSBhdm9pZCBjb25zaWRlcmluZyB0aGlzIHJ1bnEgZm9yCiAgICAgICAgICAqIGEg c29mdCBiYWxhbmNpbmcgc3RlcCBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoaXMsIGZvciBpbnN0YW5j ZSwKICAgICAgICAgICogY2FuIGJlIGltcGxlbWVudGVkIGJ5IHRha2luZyBub3RlIG9mIG9uIHdo YXQgcnVucSB0aGVyZSBhcmUKLSAgICAgICAgICogdkNQVXMgd2l0aCB1c2VmdWwgc29mdCBhZmZp bml0aWVzIGluIHNvbWUgc29ydCBvZiBiaXRtYXAKKyAgICAgICAgICogdW5pdHMgd2l0aCB1c2Vm dWwgc29mdCBhZmZpbml0aWVzIGluIHNvbWUgc29ydCBvZiBiaXRtYXAKICAgICAgICAgICogb3Ig Y291bnRlci4KICAgICAgICAgICovCi0gICAgICAgIGlmICggdmMtPnNjaGVkX3VuaXQtPmlzX3J1 bm5pbmcgfHwKLSAgICAgICAgICAgICAoYmFsYW5jZV9zdGVwID09IEJBTEFOQ0VfU09GVF9BRkZJ TklUWSAmJgotICAgICAgICAgICAgICAhaGFzX3NvZnRfYWZmaW5pdHkodmMtPnNjaGVkX3VuaXQp KSApCisgICAgICAgIGlmICggdW5pdC0+aXNfcnVubmluZyB8fCAoYmFsYW5jZV9zdGVwID09IEJB TEFOQ0VfU09GVF9BRkZJTklUWSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICFoYXNfc29mdF9hZmZpbml0eSh1bml0KSkgKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg ICAgICAgYWZmaW5pdHlfYmFsYW5jZV9jcHVtYXNrKHZjLT5zY2hlZF91bml0LCBiYWxhbmNlX3N0 ZXAsIGNwdW1hc2tfc2NyYXRjaCk7Ci0gICAgICAgIGlmICggX19jc2NoZWRfdmNwdV9pc19taWdy YXRlYWJsZShwcnYsIHZjLCBjcHUsIGNwdW1hc2tfc2NyYXRjaCkgKQorICAgICAgICBhZmZpbml0 eV9iYWxhbmNlX2NwdW1hc2sodW5pdCwgYmFsYW5jZV9zdGVwLCBjcHVtYXNrX3NjcmF0Y2gpOwor ICAgICAgICBpZiAoIF9fY3NjaGVkX3VuaXRfaXNfbWlncmF0ZWFibGUocHJ2LCB1bml0LCBjcHUs IGNwdW1hc2tfc2NyYXRjaCkgKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBXZSBnb3QgYSBj YW5kaWRhdGUuIEdyYWIgaXQhICovCi0gICAgICAgICAgICBUUkFDRV8zRChUUkNfQ1NDSEVEX1NU T0xFTl9WQ1BVLCBwZWVyX2NwdSwKLSAgICAgICAgICAgICAgICAgICAgIHZjLT5kb21haW4tPmRv bWFpbl9pZCwgdmMtPnZjcHVfaWQpOwotICAgICAgICAgICAgU0NIRURfVkNQVV9TVEFUX0NSQU5L KHNwZWVyLCBtaWdyYXRlX3EpOworICAgICAgICAgICAgVFJBQ0VfM0QoVFJDX0NTQ0hFRF9TVE9M RU5fVU5JVCwgcGVlcl9jcHUsCisgICAgICAgICAgICAgICAgICAgICB1bml0LT5kb21haW4tPmRv bWFpbl9pZCwgdW5pdC0+dW5pdF9pZCk7CisgICAgICAgICAgICBTQ0hFRF9VTklUX1NUQVRfQ1JB Tksoc3BlZXIsIG1pZ3JhdGVfcSk7CiAgICAgICAgICAgICBTQ0hFRF9TVEFUX0NSQU5LKG1pZ3Jh dGVfcXVldWVkKTsKLSAgICAgICAgICAgIFdBUk5fT04odmMtPmlzX3VyZ2VudCk7CiAgICAgICAg ICAgICBydW5xX3JlbW92ZShzcGVlcik7Ci0gICAgICAgICAgICBzY2hlZF9zZXRfcmVzKHZjLT5z Y2hlZF91bml0LCBnZXRfc2NoZWRfcmVzKGNwdSkpOworICAgICAgICAgICAgc2NoZWRfc2V0X3Jl cyh1bml0LCBnZXRfc2NoZWRfcmVzKGNwdSkpOwogICAgICAgICAgICAgLyoKICAgICAgICAgICAg ICAqIHNwZWVyIHdpbGwgc3RhcnQgZXhlY3V0aW5nIGRpcmVjdGx5IG9uIGNwdSwgd2l0aG91dCBo YXZpbmcgdG8KICAgICAgICAgICAgICAqIGdvIHRocm91Z2ggcnVucV9pbnNlcnQoKS4gU28gd2Ug bXVzdCB1cGRhdGUgdGhlIHJ1bm5hYmxlIGNvdW50CkBAIC0xNjg4LDcgKzE2ODQsNyBAQCBjc2No ZWRfbG9hZF9iYWxhbmNlKHN0cnVjdCBjc2NoZWRfcHJpdmF0ZSAqcHJ2LCBpbnQgY3B1LAogICAg IGludCBwZWVyX2NwdSwgZmlyc3RfY3B1LCBwZWVyX25vZGUsIGJzdGVwOwogICAgIGludCBub2Rl ID0gY3B1X3RvX25vZGUoY3B1KTsKIAotICAgIEJVR19PTiggY3B1ICE9IHNuZXh0LT52Y3B1LT5w cm9jZXNzb3IgKTsKKyAgICBCVUdfT04oIGNwdSAhPSBzY2hlZF91bml0X2NwdShzbmV4dC0+dW5p dCkgKTsKICAgICBvbmxpbmUgPSBjcHVwb29sX29ubGluZV9jcHVtYXNrKGMpOwogCiAgICAgLyoK QEAgLTE3MTcsNyArMTcxMyw3IEBAIGNzY2hlZF9sb2FkX2JhbGFuY2Uoc3RydWN0IGNzY2hlZF9w cml2YXRlICpwcnYsIGludCBjcHUsCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdlIHBlZWsgYXQg dGhlIG5vbi1pZGxpbmcgQ1BVcyBpbiBhIG5vZGUtd2lzZSBmYXNoaW9uLiBJbiBmYWN0LAogICAg ICAgICAgKiBpdCBpcyBtb3JlIGxpa2VseSB0aGF0IHdlIGZpbmQgc29tZSBhZmZpbmUgd29yayBv biBvdXIgc2FtZQotICAgICAgICAgKiBub2RlLCBub3QgdG8gbWVudGlvbiB0aGF0IG1pZ3JhdGlu ZyB2Y3B1cyB3aXRoaW4gdGhlIHNhbWUgbm9kZQorICAgICAgICAgKiBub2RlLCBub3QgdG8gbWVu dGlvbiB0aGF0IG1pZ3JhdGluZyB1bml0cyB3aXRoaW4gdGhlIHNhbWUgbm9kZQogICAgICAgICAg KiBjb3VsZCB3ZWxsIGV4cGVjdGVkIHRvIGJlIGNoZWFwZXIgdGhhbiBhY3Jvc3Mtbm9kZXMgKG1l bW9yeQogICAgICAgICAgKiBzdGF5cyBsb2NhbCwgdGhlcmUgbWlnaHQgYmUgc29tZSBub2RlLXdp ZGUgY2FjaGVbc10sIGV0Yy4pLgogICAgICAgICAgKi8KQEAgLTE3MzgsNyArMTczNCw3IEBAIGNz Y2hlZF9sb2FkX2JhbGFuY2Uoc3RydWN0IGNzY2hlZF9wcml2YXRlICpwcnYsIGludCBjcHUsCiAg ICAgICAgICAgICAgICAgc3BpbmxvY2tfdCAqbG9jazsKIAogICAgICAgICAgICAgICAgIC8qCi0g ICAgICAgICAgICAgICAgICogSWYgdGhlcmUgaXMgb25seSBvbmUgcnVubmFibGUgdkNQVSBvbiBw ZWVyX2NwdSwgaXQgbWVhbnMKKyAgICAgICAgICAgICAgICAgKiBJZiB0aGVyZSBpcyBvbmx5IG9u ZSBydW5uYWJsZSB1bml0IG9uIHBlZXJfY3B1LCBpdCBtZWFucwogICAgICAgICAgICAgICAgICAq IHRoZXJlJ3Mgbm8gb25lIHRvIGJlIHN0b2xlbiBpbiBpdHMgcnVucXVldWUsIHNvIHNraXAgaXQu CiAgICAgICAgICAgICAgICAgICoKICAgICAgICAgICAgICAgICAgKiBDaGVja2luZyB0aGlzIHdp dGhvdXQgaG9sZGluZyB0aGUgbG9jayBpcyByYWN5Li4uIEJ1dCB0aGF0J3MKQEAgLTE3NTEsMTMg KzE3NDcsMTMgQEAgY3NjaGVkX2xvYWRfYmFsYW5jZShzdHJ1Y3QgY3NjaGVkX3ByaXZhdGUgKnBy diwgaW50IGNwdSwKICAgICAgICAgICAgICAgICAgKiAgIEFuZCB3ZSBjYW4gYXZvaWQgdGhhdCBi eSByZS1jaGVja2luZyBucl9ydW5uYWJsZSBhZnRlcgogICAgICAgICAgICAgICAgICAqICAgaGF2 aW5nIGdyYWJiZWQgdGhlIGxvY2ssIGlmIHdlIHdhbnQ7CiAgICAgICAgICAgICAgICAgICogLSBp ZiB3ZSByYWNlIHdpdGggaW5jX25yX3J1bm5hYmxlKCksIHdlIHNraXAgYSBwQ1BVIHRoYXQgbWF5 Ci0gICAgICAgICAgICAgICAgICogICBoYXZlIHJ1bm5hYmxlIHZDUFVzIGluIGl0cyBydW5xdWV1 ZSwgYnV0IHRoYXQncyBub3QgYQorICAgICAgICAgICAgICAgICAqICAgaGF2ZSBydW5uYWJsZSB1 bml0cyBpbiBpdHMgcnVucXVldWUsIGJ1dCB0aGF0J3Mgbm90IGEKICAgICAgICAgICAgICAgICAg KiAgIHByb2JsZW0gYmVjYXVzZToKICAgICAgICAgICAgICAgICAgKiAgICsgaWYgcmFjaW5nIHdp dGggY3NjaGVkX3VuaXRfaW5zZXJ0KCkgb3IgY3NjaGVkX3VuaXRfd2FrZSgpLAotICAgICAgICAg ICAgICAgICAqICAgICBfX3J1bnFfdGlja2xlKCkgd2lsbCBiZSBjYWxsZWQgYWZ0ZXJ3b3Jkcywg c28gdGhlIHZDUFUKKyAgICAgICAgICAgICAgICAgKiAgICAgX19ydW5xX3RpY2tsZSgpIHdpbGwg YmUgY2FsbGVkIGFmdGVyd29yZHMsIHNvIHRoZSB1bml0CiAgICAgICAgICAgICAgICAgICogICAg IHdvbid0IGdldCBzdHVjayBpbiB0aGUgcnVucXVldWUgZm9yIHRvbyBsb25nOwotICAgICAgICAg ICAgICAgICAqICAgKyBpZiByYWNpbmcgd2l0aCBjc2NoZWRfcnVucV9zdGVhbCgpLCBpdCBtYXkg YmUgdGhhdCBhCi0gICAgICAgICAgICAgICAgICogICAgIHZDUFUgdGhhdCB3ZSBjb3VsZCBoYXZl IHBpY2tlZCB1cCwgc3RheXMgaW4gYSBydW5xdWV1ZQorICAgICAgICAgICAgICAgICAqICAgKyBp ZiByYWNpbmcgd2l0aCBjc2NoZWRfcnVucV9zdGVhbCgpLCBpdCBtYXkgYmUgdGhhdCBhbgorICAg ICAgICAgICAgICAgICAqICAgICB1bml0IHRoYXQgd2UgY291bGQgaGF2ZSBwaWNrZWQgdXAsIHN0 YXlzIGluIGEgcnVucXVldWUKICAgICAgICAgICAgICAgICAgKiAgICAgdW50aWwgc29tZW9uZSBl bHNlIHRyaWVzIHRvIHN0ZWFsIGl0IGFnYWluLiBCdXQgdGhpcyBpcwogICAgICAgICAgICAgICAg ICAqICAgICBubyB3b3JzZSB0aGFuIHdoYXQgY2FuIGhhcHBlbiBhbHJlYWR5ICh3aXRob3V0IHRo aXMKICAgICAgICAgICAgICAgICAgKiAgICAgb3B0aW1pemF0aW9uKSwgaXQgdGhlIHBDUFUgd291 bGQgc2NoZWR1bGUgcmlnaHQgYWZ0ZXIgd2UKQEAgLTE3OTIsNyArMTc4OCw3IEBAIGNzY2hlZF9s b2FkX2JhbGFuY2Uoc3RydWN0IGNzY2hlZF9wcml2YXRlICpwcnYsIGludCBjcHUsCiAgICAgICAg ICAgICAgICAgICAgIGNzY2hlZF9ydW5xX3N0ZWFsKHBlZXJfY3B1LCBjcHUsIHNuZXh0LT5wcmks IGJzdGVwKSA6IE5VTEw7CiAgICAgICAgICAgICAgICAgcGNwdV9zY2hlZHVsZV91bmxvY2sobG9j aywgcGVlcl9jcHUpOwogCi0gICAgICAgICAgICAgICAgLyogQXMgc29vbiBhcyBvbmUgdmNwdSBp cyBmb3VuZCwgYmFsYW5jaW5nIGVuZHMgKi8KKyAgICAgICAgICAgICAgICAvKiBBcyBzb29uIGFz IG9uZSB1bml0IGlzIGZvdW5kLCBiYWxhbmNpbmcgZW5kcyAqLwogICAgICAgICAgICAgICAgIGlm ICggc3BlZXIgIT0gTlVMTCApCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg ICAqc3RvbGVuID0gMTsKQEAgLTE4MzEsMTQgKzE4MjcsMTUgQEAgY3NjaGVkX3NjaGVkdWxlKAog ewogICAgIGNvbnN0IGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAgICAgc3RydWN0IGxp c3RfaGVhZCAqIGNvbnN0IHJ1bnEgPSBSVU5RKGNwdSk7Ci0gICAgc3RydWN0IGNzY2hlZF91bml0 ICogY29uc3Qgc2N1cnIgPSBDU0NIRURfVU5JVChjdXJyZW50LT5zY2hlZF91bml0KTsKKyAgICBz dHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCA9IGN1cnJlbnQtPnNjaGVkX3VuaXQ7CisgICAgc3RydWN0 IGNzY2hlZF91bml0ICogY29uc3Qgc2N1cnIgPSBDU0NIRURfVU5JVCh1bml0KTsKICAgICBzdHJ1 Y3QgY3NjaGVkX3ByaXZhdGUgKnBydiA9IENTQ0hFRF9QUklWKG9wcyk7CiAgICAgc3RydWN0IGNz Y2hlZF91bml0ICpzbmV4dDsKICAgICBzdHJ1Y3QgdGFza19zbGljZSByZXQ7CiAgICAgc190aW1l X3QgcnVudGltZSwgdHNsaWNlOwogCiAgICAgU0NIRURfU1RBVF9DUkFOSyhzY2hlZHVsZSk7Ci0g ICAgQ1NDSEVEX1ZDUFVfQ0hFQ0soY3VycmVudCk7CisgICAgQ1NDSEVEX1VOSVRfQ0hFQ0sodW5p dCk7CiAKICAgICAvKgogICAgICAqIEhlcmUgaW4gQ3JlZGl0MSBjb2RlLCB3ZSB1c3VhbGx5IGp1 c3QgY2FsbCBUUkFDRV9uRCgpIGhlbHBlcnMsIGFuZApAQCAtMTg1MiwzMSArMTg0OSwzMSBAQCBj c2NoZWRfc2NoZWR1bGUoCiAgICAgICAgIH0gZDsKICAgICAgICAgZC5jcHUgPSBjcHU7CiAgICAg ICAgIGQudGFza2xldCA9IHRhc2tsZXRfd29ya19zY2hlZHVsZWQ7Ci0gICAgICAgIGQuaWRsZSA9 IGlzX2lkbGVfdmNwdShjdXJyZW50KTsKKyAgICAgICAgZC5pZGxlID0gaXNfaWRsZV91bml0KHVu aXQpOwogICAgICAgICBfX3RyYWNlX3ZhcihUUkNfQ1NDSEVEX1NDSEVEVUxFLCAxLCBzaXplb2Yo ZCksCiAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopJmQpOwogICAgIH0KIAot ICAgIHJ1bnRpbWUgPSBub3cgLSBjdXJyZW50LT5zY2hlZF91bml0LT5zdGF0ZV9lbnRyeV90aW1l OworICAgIHJ1bnRpbWUgPSBub3cgLSB1bml0LT5zdGF0ZV9lbnRyeV90aW1lOwogICAgIGlmICgg cnVudGltZSA8IDAgKSAvKiBEb2VzIHRoaXMgZXZlciBoYXBwZW4/ICovCiAgICAgICAgIHJ1bnRp bWUgPSAwOwogCi0gICAgaWYgKCAhaXNfaWRsZV92Y3B1KHNjdXJyLT52Y3B1KSApCisgICAgaWYg KCAhaXNfaWRsZV91bml0KHVuaXQpICkKICAgICB7Ci0gICAgICAgIC8qIFVwZGF0ZSBjcmVkaXRz IG9mIGEgbm9uLWlkbGUgVkNQVS4gKi8KKyAgICAgICAgLyogVXBkYXRlIGNyZWRpdHMgb2YgYSBu b24taWRsZSBVTklULiAqLwogICAgICAgICBidXJuX2NyZWRpdHMoc2N1cnIsIG5vdyk7CiAgICAg ICAgIHNjdXJyLT5zdGFydF90aW1lIC09IG5vdzsKICAgICAgICAgc2N1cnItPmxhc3Rfc2NoZWRf dGltZSA9IG5vdzsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgLyogUmUtaW5zdGF0 ZSBhIGJvb3N0ZWQgaWRsZSBWQ1BVIGFzIG5vcm1hbC1pZGxlLiAqLworICAgICAgICAvKiBSZS1p bnN0YXRlIGEgYm9vc3RlZCBpZGxlIFVOSVQgYXMgbm9ybWFsLWlkbGUuICovCiAgICAgICAgIHNj dXJyLT5wcmkgPSBDU0NIRURfUFJJX0lETEU7CiAgICAgfQogCiAgICAgLyogQ2hvaWNlcywgY2hv aWNlczoKLSAgICAgKiAtIElmIHdlIGhhdmUgYSB0YXNrbGV0LCB3ZSBuZWVkIHRvIHJ1biB0aGUg aWRsZSB2Y3B1IG5vIG1hdHRlciB3aGF0LgotICAgICAqIC0gSWYgc2NoZWQgcmF0ZSBsaW1pdGlu ZyBpcyBpbiBlZmZlY3QsIGFuZCB0aGUgY3VycmVudCB2Y3B1IGhhcworICAgICAqIC0gSWYgd2Ug aGF2ZSBhIHRhc2tsZXQsIHdlIG5lZWQgdG8gcnVuIHRoZSBpZGxlIHVuaXQgbm8gbWF0dGVyIHdo YXQuCisgICAgICogLSBJZiBzY2hlZCByYXRlIGxpbWl0aW5nIGlzIGluIGVmZmVjdCwgYW5kIHRo ZSBjdXJyZW50IHVuaXQgaGFzCiAgICAgICogICBydW4gZm9yIGxlc3MgdGhhbiB0aGF0IGFtb3Vu dCBvZiB0aW1lLCBjb250aW51ZSB0aGUgY3VycmVudCBvbmUsCiAgICAgICogICBidXQgd2l0aCBh IHNob3J0ZXIgdGltZXNsaWNlIGFuZCByZXR1cm4gaXQgaW1tZWRpYXRlbHkKICAgICAgKiAtIE90 aGVyd2lzZSwgY2hvc2UgdGhlIG9uZSB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5ICh3aGljaCBt YXkKQEAgLTE4OTQsMTEgKzE4OTEsMTEgQEAgY3NjaGVkX3NjaGVkdWxlKAogICAgICAqIEluIGZh Y3QsIGl0IG1heSBiZSB0aGUgY2FzZSB0aGF0IHNjdXJyIGlzIGFib3V0IHRvIHNwaW4sIGFuZCB0 aGVyZSdzCiAgICAgICogbm8gcG9pbnQgZm9yY2luZyBpdCB0byBkbyBzbyB1bnRpbCByYXRlIGxp bWl0aW5nIGV4cGlyZXMuCiAgICAgICovCi0gICAgaWYgKCAhdGVzdF9iaXQoQ1NDSEVEX0ZMQUdf VkNQVV9ZSUVMRCwgJnNjdXJyLT5mbGFncykKKyAgICBpZiAoICF0ZXN0X2JpdChDU0NIRURfRkxB R19VTklUX1lJRUxELCAmc2N1cnItPmZsYWdzKQogICAgICAgICAgJiYgIXRhc2tsZXRfd29ya19z Y2hlZHVsZWQKICAgICAgICAgICYmIHBydi0+cmF0ZWxpbWl0Ci0gICAgICAgICAmJiB2Y3B1X3J1 bm5hYmxlKGN1cnJlbnQpCi0gICAgICAgICAmJiAhaXNfaWRsZV92Y3B1KGN1cnJlbnQpCisgICAg ICAgICAmJiB1bml0X3J1bm5hYmxlKHVuaXQpCisgICAgICAgICAmJiAhaXNfaWRsZV91bml0KHVu aXQpCiAgICAgICAgICAmJiBydW50aW1lIDwgcHJ2LT5yYXRlbGltaXQgKQogICAgIHsKICAgICAg ICAgc25leHQgPSBzY3VycjsKQEAgLTE5MTYsMTEgKzE5MTMsMTEgQEAgY3NjaGVkX3NjaGVkdWxl KAogICAgICAgICBpZiAoIHVubGlrZWx5KHRiX2luaXRfZG9uZSkgKQogICAgICAgICB7CiAgICAg ICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZjcHU6MTYsIGRvbTox NjsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCB1bml0OjE2LCBkb206MTY7CiAgICAgICAgICAg ICAgICAgdW5zaWduZWQgcnVudGltZTsKICAgICAgICAgICAgIH0gZDsKLSAgICAgICAgICAgIGQu ZG9tID0gc2N1cnItPnZjcHUtPmRvbWFpbi0+ZG9tYWluX2lkOwotICAgICAgICAgICAgZC52Y3B1 ID0gc2N1cnItPnZjcHUtPnZjcHVfaWQ7CisgICAgICAgICAgICBkLmRvbSA9IHVuaXQtPmRvbWFp bi0+ZG9tYWluX2lkOworICAgICAgICAgICAgZC51bml0ID0gdW5pdC0+dW5pdF9pZDsKICAgICAg ICAgICAgIGQucnVudGltZSA9IHJ1bnRpbWU7CiAgICAgICAgICAgICBfX3RyYWNlX3ZhcihUUkNf Q1NDSEVEX1JBVEVMSU1JVCwgMSwgc2l6ZW9mKGQpLAogICAgICAgICAgICAgICAgICAgICAgICAg KHVuc2lnbmVkIGNoYXIgKikmZCk7CkBAIC0xOTMyLDEzICsxOTI5LDEzIEBAIGNzY2hlZF9zY2hl ZHVsZSgKICAgICB0c2xpY2UgPSBwcnYtPnRzbGljZTsKIAogICAgIC8qCi0gICAgICogU2VsZWN0 IG5leHQgcnVubmFibGUgbG9jYWwgVkNQVSAoaWUgdG9wIG9mIGxvY2FsIHJ1bnEpCisgICAgICog U2VsZWN0IG5leHQgcnVubmFibGUgbG9jYWwgVU5JVCAoaWUgdG9wIG9mIGxvY2FsIHJ1bnEpCiAg ICAgICovCi0gICAgaWYgKCB2Y3B1X3J1bm5hYmxlKGN1cnJlbnQpICkKKyAgICBpZiAoIHVuaXRf cnVubmFibGUodW5pdCkgKQogICAgICAgICBfX3J1bnFfaW5zZXJ0KHNjdXJyKTsKICAgICBlbHNl CiAgICAgewotICAgICAgICBCVUdfT04oIGlzX2lkbGVfdmNwdShjdXJyZW50KSB8fCBsaXN0X2Vt cHR5KHJ1bnEpICk7CisgICAgICAgIEJVR19PTiggaXNfaWRsZV91bml0KHVuaXQpIHx8IGxpc3Rf ZW1wdHkocnVucSkgKTsKICAgICAgICAgLyogQ3VycmVudCBoYXMgYmxvY2tlZC4gVXBkYXRlIHRo ZSBydW5uYWJsZSBjb3VudGVyIGZvciB0aGlzIGNwdS4gKi8KICAgICAgICAgZGVjX25yX3J1bm5h YmxlKGNwdSk7CiAgICAgfQpAQCAtMTk0NiwyMyArMTk0MywyMyBAQCBjc2NoZWRfc2NoZWR1bGUo CiAgICAgc25leHQgPSBfX3J1bnFfZWxlbShydW5xLT5uZXh0KTsKICAgICByZXQubWlncmF0ZWQg PSAwOwogCi0gICAgLyogVGFza2xldCB3b3JrICh3aGljaCBydW5zIGluIGlkbGUgVkNQVSBjb250 ZXh0KSBvdmVycmlkZXMgYWxsIGVsc2UuICovCisgICAgLyogVGFza2xldCB3b3JrICh3aGljaCBy dW5zIGluIGlkbGUgVU5JVCBjb250ZXh0KSBvdmVycmlkZXMgYWxsIGVsc2UuICovCiAgICAgaWYg KCB0YXNrbGV0X3dvcmtfc2NoZWR1bGVkICkKICAgICB7CiAgICAgICAgIFRSQUNFXzBEKFRSQ19D U0NIRURfU0NIRURfVEFTS0xFVCk7Ci0gICAgICAgIHNuZXh0ID0gQ1NDSEVEX1VOSVQoaWRsZV92 Y3B1W2NwdV0tPnNjaGVkX3VuaXQpOworICAgICAgICBzbmV4dCA9IENTQ0hFRF9VTklUKHNjaGVk X2lkbGVfdW5pdChjcHUpKTsKICAgICAgICAgc25leHQtPnByaSA9IENTQ0hFRF9QUklfVFNfQk9P U1Q7CiAgICAgfQogCiAgICAgLyoKICAgICAgKiBDbGVhciBZSUVMRCBmbGFnIGJlZm9yZSBzY2hl ZHVsaW5nIG91dAogICAgICAqLwotICAgIGNsZWFyX2JpdChDU0NIRURfRkxBR19WQ1BVX1lJRUxE LCAmc2N1cnItPmZsYWdzKTsKKyAgICBjbGVhcl9iaXQoQ1NDSEVEX0ZMQUdfVU5JVF9ZSUVMRCwg JnNjdXJyLT5mbGFncyk7CiAKICAgICAvKgogICAgICAqIFNNUCBMb2FkIGJhbGFuY2U6CiAgICAg ICoKLSAgICAgKiBJZiB0aGUgbmV4dCBoaWdoZXN0IHByaW9yaXR5IGxvY2FsIHJ1bm5hYmxlIFZD UFUgaGFzIGFscmVhZHkgZWF0ZW4KKyAgICAgKiBJZiB0aGUgbmV4dCBoaWdoZXN0IHByaW9yaXR5 IGxvY2FsIHJ1bm5hYmxlIFVOSVQgaGFzIGFscmVhZHkgZWF0ZW4KICAgICAgKiB0aHJvdWdoIGl0 cyBjcmVkaXRzLCBsb29rIG9uIG90aGVyIFBDUFVzIHRvIHNlZSBpZiB3ZSBoYXZlIG1vcmUKICAg ICAgKiB1cmdlbnQgd29yay4uLiBJZiBub3QsIGNzY2hlZF9sb2FkX2JhbGFuY2UoKSB3aWxsIHJl dHVybiBzbmV4dCwgYnV0CiAgICAgICogYWxyZWFkeSByZW1vdmVkIGZyb20gdGhlIHJ1bnEuCkBA IC0xOTg2LDMyICsxOTgzLDMyIEBAIGNzY2hlZF9zY2hlZHVsZSgKICAgICAgICAgY3B1bWFza19j bGVhcl9jcHUoY3B1LCBwcnYtPmlkbGVycyk7CiAgICAgfQogCi0gICAgaWYgKCAhaXNfaWRsZV92 Y3B1KHNuZXh0LT52Y3B1KSApCisgICAgaWYgKCAhaXNfaWRsZV91bml0KHNuZXh0LT51bml0KSAp CiAgICAgICAgIHNuZXh0LT5zdGFydF90aW1lICs9IG5vdzsKIAogb3V0OgogICAgIC8qCiAgICAg ICogUmV0dXJuIHRhc2sgdG8gcnVuIG5leHQuLi4KICAgICAgKi8KLSAgICByZXQudGltZSA9IChp c19pZGxlX3ZjcHUoc25leHQtPnZjcHUpID8KKyAgICByZXQudGltZSA9IChpc19pZGxlX3VuaXQo c25leHQtPnVuaXQpID8KICAgICAgICAgICAgICAgICAtMSA6IHRzbGljZSk7Ci0gICAgcmV0LnRh c2sgPSBzbmV4dC0+dmNwdS0+c2NoZWRfdW5pdDsKKyAgICByZXQudGFzayA9IHNuZXh0LT51bml0 OwogCi0gICAgQ1NDSEVEX1ZDUFVfQ0hFQ0socmV0LnRhc2stPnZjcHVfbGlzdCk7CisgICAgQ1ND SEVEX1VOSVRfQ0hFQ0socmV0LnRhc2spOwogICAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2 b2lkCi1jc2NoZWRfZHVtcF92Y3B1KHN0cnVjdCBjc2NoZWRfdW5pdCAqc3ZjKQorY3NjaGVkX2R1 bXBfdW5pdChzdHJ1Y3QgY3NjaGVkX3VuaXQgKnN2YykKIHsKICAgICBzdHJ1Y3QgY3NjaGVkX2Rv bSAqIGNvbnN0IHNkb20gPSBzdmMtPnNkb207CiAKICAgICBwcmludGsoIlslaS4laV0gcHJpPSVp IGZsYWdzPSV4IGNwdT0laSIsCi0gICAgICAgICAgICBzdmMtPnZjcHUtPmRvbWFpbi0+ZG9tYWlu X2lkLAotICAgICAgICAgICAgc3ZjLT52Y3B1LT52Y3B1X2lkLAorICAgICAgICAgICAgc3ZjLT51 bml0LT5kb21haW4tPmRvbWFpbl9pZCwKKyAgICAgICAgICAgIHN2Yy0+dW5pdC0+dW5pdF9pZCwK ICAgICAgICAgICAgIHN2Yy0+cHJpLAogICAgICAgICAgICAgc3ZjLT5mbGFncywKLSAgICAgICAg ICAgIHN2Yy0+dmNwdS0+cHJvY2Vzc29yKTsKKyAgICAgICAgICAgIHNjaGVkX3VuaXRfY3B1KHN2 Yy0+dW5pdCkpOwogCiAgICAgaWYgKCBzZG9tICkKICAgICB7CkBAIC0yMDQ1LDcgKzIwNDIsNyBA QCBjc2NoZWRfZHVtcF9wY3B1KGNvbnN0IHN0cnVjdCBzY2hlZHVsZXIgKm9wcywgaW50IGNwdSkK IAogICAgIC8qCiAgICAgICogV2UgbmVlZCBib3RoIGxvY2tzOgotICAgICAqIC0gY3NjaGVkX2R1 bXBfdmNwdSgpIHdhbnRzIHRvIGFjY2VzcyBkb21haW5zJyBzY2hlZHVsaW5nCisgICAgICogLSBj c2NoZWRfZHVtcF91bml0KCkgd2FudHMgdG8gYWNjZXNzIGRvbWFpbnMnIHNjaGVkdWxpbmcKICAg ICAgKiAgIHBhcmFtZXRlcnMsIHdoaWNoIGFyZSBwcm90ZWN0ZWQgYnkgdGhlIHByaXZhdGUgc2No ZWR1bGVyIGxvY2s7CiAgICAgICogLSB3ZSBzY2FuIHRocm91Z2ggdGhlIHJ1bnF1ZXVlLCBzbyB3 ZSBuZWVkIHRoZSBwcm9wZXIgcnVucXVldWUKICAgICAgKiAgIGxvY2sgKHRoZSBvbmUgb2YgdGhl IHJ1bnF1ZXVlIG9mIHRoaXMgY3B1KS4KQEAgLTIwNjEsMTIgKzIwNTgsMTIgQEAgY3NjaGVkX2R1 bXBfcGNwdShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGludCBjcHUpCiAgICAgICAgICAg IENQVU1BU0tfUFIocGVyX2NwdShjcHVfc2libGluZ19tYXNrLCBjcHUpKSwKICAgICAgICAgICAg Q1BVTUFTS19QUihwZXJfY3B1KGNwdV9jb3JlX21hc2ssIGNwdSkpKTsKIAotICAgIC8qIGN1cnJl bnQgVkNQVSAobm90aGluZyB0byBzYXkgaWYgdGhhdCdzIHRoZSBpZGxlIHZjcHUpLiAqLworICAg IC8qIGN1cnJlbnQgVU5JVCAobm90aGluZyB0byBzYXkgaWYgdGhhdCdzIHRoZSBpZGxlIHVuaXQp LiAqLwogICAgIHN2YyA9IENTQ0hFRF9VTklUKGN1cnJfb25fY3B1KGNwdSkpOwotICAgIGlmICgg c3ZjICYmICFpc19pZGxlX3ZjcHUoc3ZjLT52Y3B1KSApCisgICAgaWYgKCBzdmMgJiYgIWlzX2lk bGVfdW5pdChzdmMtPnVuaXQpICkKICAgICB7CiAgICAgICAgIHByaW50aygiXHRydW46ICIpOwot ICAgICAgICBjc2NoZWRfZHVtcF92Y3B1KHN2Yyk7CisgICAgICAgIGNzY2hlZF9kdW1wX3VuaXQo c3ZjKTsKICAgICB9CiAKICAgICBsb29wID0gMDsKQEAgLTIwNzYsNyArMjA3Myw3IEBAIGNzY2hl ZF9kdW1wX3BjcHUoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzLCBpbnQgY3B1KQogICAgICAg ICBpZiAoIHN2YyApCiAgICAgICAgIHsKICAgICAgICAgICAgIHByaW50aygiXHQlM2Q6ICIsICsr bG9vcCk7Ci0gICAgICAgICAgICBjc2NoZWRfZHVtcF92Y3B1KHN2Yyk7CisgICAgICAgICAgICBj c2NoZWRfZHVtcF91bml0KHN2Yyk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIxMTgsMjkgKzIx MTUsMjkgQEAgY3NjaGVkX2R1bXAoY29uc3Qgc3RydWN0IHNjaGVkdWxlciAqb3BzKQogICAgICAg ICAgICBwcnYtPnJhdGVsaW1pdCAvIE1JQ1JPU0VDUygxKSwKICAgICAgICAgICAgQ1NDSEVEX0NS RURJVFNfUEVSX01TRUMsCiAgICAgICAgICAgIHBydi0+dGlja3NfcGVyX3RzbGljZSwKLSAgICAg ICAgICAgcHJ2LT52Y3B1X21pZ3JfZGVsYXkvIE1JQ1JPU0VDUygxKSk7CisgICAgICAgICAgIHBy di0+dW5pdF9taWdyX2RlbGF5LyBNSUNST1NFQ1MoMSkpOwogCiAgICAgcHJpbnRrKCJpZGxlcnM6 ICUqcGJcbiIsIENQVU1BU0tfUFIocHJ2LT5pZGxlcnMpKTsKIAotICAgIHByaW50aygiYWN0aXZl IHZjcHVzOlxuIik7CisgICAgcHJpbnRrKCJhY3RpdmUgdW5pdHM6XG4iKTsKICAgICBsb29wID0g MDsKICAgICBsaXN0X2Zvcl9lYWNoKCBpdGVyX3Nkb20sICZwcnYtPmFjdGl2ZV9zZG9tICkKICAg ICB7CiAgICAgICAgIHN0cnVjdCBjc2NoZWRfZG9tICpzZG9tOwogICAgICAgICBzZG9tID0gbGlz dF9lbnRyeShpdGVyX3Nkb20sIHN0cnVjdCBjc2NoZWRfZG9tLCBhY3RpdmVfc2RvbV9lbGVtKTsK IAotICAgICAgICBsaXN0X2Zvcl9lYWNoKCBpdGVyX3N2YywgJnNkb20tPmFjdGl2ZV92Y3B1ICkK KyAgICAgICAgbGlzdF9mb3JfZWFjaCggaXRlcl9zdmMsICZzZG9tLT5hY3RpdmVfdW5pdCApCiAg ICAgICAgIHsKICAgICAgICAgICAgIHN0cnVjdCBjc2NoZWRfdW5pdCAqc3ZjOwogICAgICAgICAg ICAgc3BpbmxvY2tfdCAqbG9jazsKIAotICAgICAgICAgICAgc3ZjID0gbGlzdF9lbnRyeShpdGVy X3N2Yywgc3RydWN0IGNzY2hlZF91bml0LCBhY3RpdmVfdmNwdV9lbGVtKTsKLSAgICAgICAgICAg IGxvY2sgPSB1bml0X3NjaGVkdWxlX2xvY2soc3ZjLT52Y3B1LT5zY2hlZF91bml0KTsKKyAgICAg ICAgICAgIHN2YyA9IGxpc3RfZW50cnkoaXRlcl9zdmMsIHN0cnVjdCBjc2NoZWRfdW5pdCwgYWN0 aXZlX3VuaXRfZWxlbSk7CisgICAgICAgICAgICBsb2NrID0gdW5pdF9zY2hlZHVsZV9sb2NrKHN2 Yy0+dW5pdCk7CiAKICAgICAgICAgICAgIHByaW50aygiXHQlM2Q6ICIsICsrbG9vcCk7Ci0gICAg ICAgICAgICBjc2NoZWRfZHVtcF92Y3B1KHN2Yyk7CisgICAgICAgICAgICBjc2NoZWRfZHVtcF91 bml0KHN2Yyk7CiAKLSAgICAgICAgICAgIHVuaXRfc2NoZWR1bGVfdW5sb2NrKGxvY2ssIHN2Yy0+ dmNwdS0+c2NoZWRfdW5pdCk7CisgICAgICAgICAgICB1bml0X3NjaGVkdWxlX3VubG9jayhsb2Nr LCBzdmMtPnVuaXQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMjE0LDcgKzIyMTEsNyBAQCBj c2NoZWRfaW5pdChzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMpCiAgICAgZWxzZQogICAgICAgICBwcnYt PnJhdGVsaW1pdCA9IE1JQ1JPU0VDUyhzY2hlZF9yYXRlbGltaXRfdXMpOwogCi0gICAgcHJ2LT52 Y3B1X21pZ3JfZGVsYXkgPSBNSUNST1NFQ1ModmNwdV9taWdyYXRpb25fZGVsYXlfdXMpOworICAg IHBydi0+dW5pdF9taWdyX2RlbGF5ID0gTUlDUk9TRUNTKHZjcHVfbWlncmF0aW9uX2RlbGF5X3Vz KTsKIAogICAgIHJldHVybiAwOwogfQotLSAKMi4xNi40CgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==