From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH v3 10/15] argo: implement the notify op Date: Sun, 6 Jan 2019 23:42:43 -0800 Message-ID: <1546846968-7372-11-git-send-email-christopher.w.clark@gmail.com> References: <1546846968-7372-1-git-send-email-christopher.w.clark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ggPZG-0004pl-L1 for xen-devel@lists.xenproject.org; Mon, 07 Jan 2019 07:43:26 +0000 Received: by mail-pf1-x434.google.com with SMTP id 64so21430122pfr.9 for ; Sun, 06 Jan 2019 23:43:24 -0800 (PST) In-Reply-To: <1546846968-7372-1-git-send-email-christopher.w.clark@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , Ross Philipson , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Jason Andryuk , Ian Jackson , Rich Persaud , Tim Deegan , Daniel Smith , Julien Grall , Paul Durrant , Jan Beulich , James McKenzie , Eric Chanudet , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org UXVlcmllcyBmb3IgZGF0YSBhYm91dCBzcGFjZSBhdmFpbGFiaWxpdHkgaW4gcmVnaXN0ZXJlZCBy aW5ncyBhbmQKY2F1c2VzIG5vdGlmaWNhdGlvbiB0byBiZSBzZW50IHdoZW4gc3BhY2UgaGFzIGJl Y29tZSBhdmFpbGFibGUuCgpUaGUgaHlwZXJjYWxsIG9wIHBvcHVsYXRlcyBhIHN1cHBsaWVkIGRh dGEgc3RydWN0dXJlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQKcmluZyBzdGF0ZSwgYW5kIGlmIGlu c3VmZmljZW50IHNwYWNlIGlzIGN1cnJlbnRseSBhdmFpbGFibGUgaW4gYSBnaXZlbiByaW5nLAp0 aGUgaHlwZXJ2aXNvciB3aWxsIHJlY29yZCB0aGUgZG9tYWluJ3MgZXhwcmVzc2VkIGludGVyZXN0 IGFuZCBub3RpZnkgaXQKd2hlbiBpdCBvYnNlcnZlcyB0aGF0IHNwYWNlIGhhcyBiZWNvbWUgYXZh aWxhYmxlLgoKQ2hlY2tzIGZvciBmcmVlIHNwYWNlIG9jY3VyIHdoZW4gdGhpcyBub3RpZnkgb3Ag aXMgaW52b2tlZCwgc28gaXQgbWF5IGJlCmludGVudGlvbmFsbHkgaW52b2tlZCB3aXRoIG5vIGRh dGEgc3RydWN0dXJlIHRvIHBvcHVsYXRlCihpZS4gYSBOVUxMIGFyZ3VtZW50KSB0byB0cmlnZ2Vy IHN1Y2ggYSBjaGVjayBhbmQgY29uc2VxdWVudCBub3RpZmljYXRpb25zLgoKTGltaXQgdGhlIG1h eGltdW0gbnVtYmVyIG9mIG5vdGlmeSByZXF1ZXN0cyBpbiBhIHNpbmdsZSBvcGVyYXRpb24gdG8g YQpzaW1wbGUgZml4ZWQgbGltaXQgb2YgMjU2LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIg Q2xhcmsgPGNocmlzdG9waGVyLmNsYXJrNkBiYWVzeXN0ZW1zLmNvbT4KLS0tCnYyIGZlZWRiYWNr IEphbjogZHJvcCBjb29raWUsIGltcGxlbWVudCB0ZWFyZG93bgp2MiBub3RpZnk6IGFkZCBmbGFn IHRvIGluZGljYXRlIHJpbmcgaXMgc2hhcmVkCnYyIGFyZ3VtZW50IG5hbWUgZm9yIGZpbGxfcmlu Z19kYXRhIGFyZyBpcyBub3cgY3VycmQKdjIgc2VsZjogY2hlY2sgcmluZyBzaXplIHZzIHJlcXVl c3QgYW5kIGZsYWcgZXJyb3IgcmF0aGVyIHRoYW4gcXVldWUgc2lnbmFsCnYyIGZlZWRiYWNrIEph bjogZHJvcCAnbWVzc2FnZScgZnJvbSAnYXJnb19tZXNzYWdlX29wJwp2MiBzZWxmOiBzaW1wbGlm eSBzaWduYWxfZG9taWQsIGRyb3AgdW5uZWNlc3NhcnkgbGFiZWwgKyBnb3RvCnYyIHNlbGY6IHNr aXAgdGhlIGNvb2tpZSBjaGVjayBpbiBwZW5kaW5nX2NhbmNlbAp2MiBzZWxmOiBpbXBsZW1lbnQg bnBlbmRpbmcgbGltaXQgb24gbnVtYmVyIG9mIHBlbmRpbmcgZW50cmllcwp2MSBmZWVkYmFjayAj MTYgSmFuOiBzYW5pdGl6ZV9yaW5nIGluIHJpbmdidWZfcGF5bG9hZF9zcGFjZQp2MiBzZWxmOiBp bmxpbmUgZmlsbF9yaW5nX2RhdGFfYXJyYXkKdjIgc2VsZjogYXZvaWQgcmV0ZXN0aW5nIGRzdF9k IGZvciBwdXRfZG9tYWluCnYyIHNlbGYvSmFuOiByZW1vdmUgdXNlIG9mIG1hZ2ljIHZlcmlmaWNh dGlvbiBmaWVsZCBhbmQgdGlkeSB1cAp2MSBmZWVkYmFjayAjMTYgSmFuOiByZW1vdmUgdGVzdGlu ZyBvZiBtYWdpYyBpbiBndWVzdC1zdXBwbGllZCBzdHJ1Y3R1cmUKdjIgc2VsZjogcy9hcmdvX3Bl bmRpbmdfZW50L3BlbmRpbmdfZW50L2cKdjIgZmVlZGJhY2sgdjEjMTMgUm9nZXI6IHVzZSBPUy1z dXBwbGllZCByb3VuZHVwOyBkcm9wIGZyb20gcHVibGljIGhlYWRlcgp2MSwyIGZlZWRiYWNrIEph bi9Sb2dlci9QYXVsOiBkcm9wIGVycm5vIHJldHVybmluZyBndWVzdCBhY2Nlc3MgZnVuY3Rpb25z CnYxIGZlZWRiYWNrIFJvZ2VyLCBKYW46IGRyb3AgYXJnbyBwcmVmaXggb24gc3RhdGljIGZ1bmN0 aW9ucwp2MiBzZWxmOiByZWR1Y2UgaW5kZW50YXRpb24gdmlhIGdvdG8gb3V0IGlmIGFyZyBOVUxM CnYxIGZlZWRiYWNrICMxMyBKYW46IHJlc29sdmUgY2hlY2tpbmcgb2YgYXJyYXkgaGFuZGxlIGFu ZCB1c2Ugb2YgX19jb3B5Cgp2MSAjNSAoIzE2KSBmZWVkYmFjayBQYXVsOiBub3RpZnkgb3A6IHVz ZSBjdXJyZCBpbiBkb19hcmdvX21lc3NhZ2Vfb3AKdjEgIzUgKCMxNikgZmVlZGJhY2sgUGF1bDog bm90aWZ5IG9wOiB1c2UgY3VycmQgaW4gYXJnb19ub3RpZnkKdjEgIzUgKCMxNikgZmVlZGJhY2sg UGF1bDogbm90aWZ5IG9wOiB1c2UgY3VycmQgaW4gYXJnb19ub3RpZnlfY2hlY2tfcGVuZGluZwp2 MSAjNSAoIzE2KSBmZWVkYmFjayBQYXVsOiBub3RpZnkgb3A6IHVzZSBjdXJyZCBpbiBhcmdvX2Zp bGxfcmluZ19kYXRhX2FycmF5CnYxICMxMyAoIzE2KSBmZWVkYmFjayBQYXVsOiBub3RpZnkgb3A6 IGRvL3doaWxlOiByZWluZGVudCBvbmx5CnYxICMxMyAoIzE2KSBmZWVkYmFjayBQYXVsOiBub3Rp Znkgb3A6IGRvL3doaWxlOiBnb3RvCnYxIDogYWRkIGNvbXBhdCB4bGF0LmxzdCBlbnRyaWVzCnYx OiBhZGQgZGVmaW5pdGlvbiBmb3IgY29weV9maWVsZF9mcm9tX2d1ZXN0X2Vycm5vCnYxICMxMyBm ZWVkYmFjayBKYW46IG1ha2UgJ3JpbmcgZGF0YScgY29tbWVudCBjb21wbHkgd2l0aCBzaW5nbGUt bGluZSBzdHlsZQp2MSBmZWVkYmFjayAjMTMgSmFuOiB1c2UgX19jb3B5OyBzbyBkZWZpbmUgYW5k IHVzZSBfX2NvcHlfZmllbGRfdG9fZ3Vlc3RfZXJybm8KdjE6ICMxMyBmZWVkYmFjayBKYW46IHB1 YmxpYyBuYW1lc3BhY2U6IHByZWZpeCB3aXRoIHhlbgp2MTogIzEzIGZlZWRiYWNrIEphbjogYWRk IGJsYW5rIGxpbmUgYWZ0ZXIgY2FzZSBpbiBkb19hcmdvX21lc3NhZ2Vfb3AKdjE6IHNlbGY6IHJl bmFtZSBlbnQgaWQgdG8gZG9tYWluX2lkCnYxOiBzZWxmOiBlbnQgaWQtPiBkb21haW5faWQKdjE6 IHNlbGY6IGRyb3Agc2lnbmFsIGlmIGRvbWFpbl9jb29raWUgbWlzbWF0Y2hlcwp2MS4gZmVlZGJh Y2sgIzE1IEphbjogbWFrZSBsb29wIGkgdW5zaWduZWQKdjEuIHNlbGY6IGRyb3AgdW5uZWNlc3Nh cnkgbWIoKSBpbiBhcmdvX25vdGlmeV9jaGVja19wZW5kaW5nCnYxLiBzZWxmOiBhZGQgYmxhbmsg bGluZQp2MSAjMTYgZmVlZGJhY2sgSmFuOiBjb25zdCBkb21haW4gYXJnIHRvICthcmdvX2ZpbGxf cmluZ19kYXRhCnYxLiBmZWVkYmFjayAjMTUgSmFuOiBjaGVjayB1bnVzdWVkIGh5cGVyY2FsbCBh cmdzIGFyZSB6ZXJvCnYxIGZlZWRiYWNrICMxNiBKYW46IGFkZCBjb21tZW50IG9uIHNwYWNlIGF2 YWlsYWJsZSBzaWduYWwgcG9saWN5CnYxLiBmZWVkYmFjayAjMTYgSmFuOiBtb3ZlIGRlY2xyLCBk cm9wIGJyYWNlcywgbG93ZXIgaW5kZW50CnYxLiBmZWVkYmFjayAjMTggSmFuOiBtZWxkIHRoZSBy ZXNvdXJjZSBsaW1pdHMgaW50byB0aGUgbWFpbiBjb21taXQKdjEuIGZlZWRiYWNrICMxNiBKYW46 IGNsYXJpZnkgdXNlIG9mIG1hZ2ljIGZpZWxkCnYxLiBzZWxmOiB1c2Ugc2luZ2xlIGNvcHkgdG8g cmVhZCBub3RpZnkgcmluZyBkYXRhIHN0cnVjdAp2MTogYXJnb19maWxsX3JpbmdfZGF0YTogZml4 IGRwcmludGsgdHlwZXMgZm9yIHBvcnQgZmllbGQKdjE6IHNlbGY6IHVzZSAleCBmb3IgcHJpbnRp bmcgcG9ydCBhcyBwZXIgb3RoZXIgcHJpbnQgc2l0ZXMKdjEuIGZlZWRiYWNrIEphbjogYWRkIGNv bW1lbnRzIGV4cGxhaW5pbmcgcmluZyBmdWxsIHZzIGVtcHR5CnYxLiBmb2xsb3dpbmcgSmFuOiBm aXggYXJnb19yaW5nYnVmX3BheWxvYWRfc3BhY2UgY2FsY3VsYXRpb24gZm9yIGVtcHR5IHJpbmcK CiB4ZW4vY29tbW9uL2FyZ28uYyAgICAgICAgIHwgMzU5ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmggfCAgNjcg KysrKysrKysrCiB4ZW4vaW5jbHVkZS94bGF0LmxzdCAgICAgIHwgICAyICsKIDMgZmlsZXMgY2hh bmdlZCwgNDI4IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2FyZ28uYyBi L3hlbi9jb21tb24vYXJnby5jCmluZGV4IDQ1NDg0MzUuLjM3ZWIyOTEgMTAwNjQ0Ci0tLSBhL3hl bi9jb21tb24vYXJnby5jCisrKyBiL3hlbi9jb21tb24vYXJnby5jCkBAIC0yOSw2ICsyOSw3IEBA CiAjaW5jbHVkZSA8cHVibGljL2FyZ28uaD4KIAogI2RlZmluZSBNQVhfUklOR1NfUEVSX0RPTUFJ TiAgICAgICAgICAgIDEyOFUKKyNkZWZpbmUgTUFYX05PVElGWV9DT1VOVCAgICAgICAgICAgICAg ICAyNTZVCiAjZGVmaW5lIE1BWF9QRU5ESU5HX1BFUl9SSU5HICAgICAgICAgICAgIDMyVQogCiAv KiBBbGwgbWVzc2FnZXMgb24gdGhlIHJpbmcgYXJlIHBhZGRlZCB0byBhIG11bHRpcGxlIG9mIHRo ZSBzbG90IHNpemUuICovCkBAIC00Myw2ICs0NCw4IEBAIERFRklORV9YRU5fR1VFU1RfSEFORExF KHhlbl9hcmdvX2lvdl90KTsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3BhZ2Vf ZGVzY3JfdCk7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYXJnb19yZWdpc3Rlcl9yaW5n X3QpOwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29fcmluZ190KTsKK0RFRklORV9Y RU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3JpbmdfZGF0YV90KTsKK0RFRklORV9YRU5fR1VFU1Rf SEFORExFKHhlbl9hcmdvX3JpbmdfZGF0YV9lbnRfdCk7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRM RSh4ZW5fYXJnb19zZW5kX2FkZHJfdCk7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYXJn b191bnJlZ2lzdGVyX3JpbmdfdCk7CiAKQEAgLTIzMSw2ICsyMzQsMTMgQEAgc3RhdGljIERFRklO RV9SV0xPQ0soYXJnb19sb2NrKTsgLyogTDEgKi8KICNkZWZpbmUgYXJnb19kcHJpbnRrKGZvcm1h dCwgLi4uICkgKCh2b2lkKTApCiAjZW5kaWYKIAorc3RhdGljIHN0cnVjdCBhcmdvX3JpbmdfaW5m byAqCityaW5nX2ZpbmRfaW5mbyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3Qg YXJnb19yaW5nX2lkICppZCk7CisKK3N0YXRpYyBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKgorcmlu Z19maW5kX2luZm9fYnlfbWF0Y2goY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3QgcG9y dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbWlkX3QgcGFydG5lcl9pZCk7CisKIC8qCiAg KiBUaGlzIGhhc2ggZnVuY3Rpb24gaXMgdXNlZCB0byBkaXN0cmlidXRlIHJpbmdzIHdpdGhpbiB0 aGUgcGVyLWRvbWFpbgogICogaGFzaCB0YWJsZXMgKGQtPmFyZ28tPnJpbmdfaGFzaCBhbmQgZC0+ YXJnb19zZW5kX2hhc2gpLiBUaGUgaGFzaCB0YWJsZQpAQCAtMjY1LDYgKzI3NSwxNyBAQCBzaWdu YWxfZG9tYWluKHN0cnVjdCBkb21haW4gKmQpCiB9CiAKIHN0YXRpYyB2b2lkCitzaWduYWxfZG9t aWQoZG9taWRfdCBkb21haW5faWQpCit7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9IGdldF9kb21h aW5fYnlfaWQoZG9tYWluX2lkKTsKKyAgICBpZiAoICFkICkKKyAgICAgICAgcmV0dXJuOworCisg ICAgc2lnbmFsX2RvbWFpbihkKTsKKyAgICBwdXRfZG9tYWluKGQpOworfQorCitzdGF0aWMgdm9p ZAogcmluZ191bm1hcChzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKIHsKICAgICB1 bnNpZ25lZCBpbnQgaTsKQEAgLTQ3Myw2ICs0OTQsNjIgQEAgZ2V0X3Nhbml0aXplZF9yaW5nKHhl bl9hcmdvX3JpbmdfdCAqcmluZywgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8pCiAg ICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB1aW50MzJfdAorcmluZ2J1Zl9wYXlsb2FkX3NwYWNl KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvKQorewor ICAgIHhlbl9hcmdvX3JpbmdfdCByaW5nOworICAgIHVpbnQzMl90IGxlbjsKKyAgICBpbnQzMl90 IHJldDsKKworICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcmluZ19pbmZvLT5sb2NrKSk7CisK KyAgICBsZW4gPSByaW5nX2luZm8tPmxlbjsKKyAgICBpZiAoICFsZW4gKQorICAgICAgICByZXR1 cm4gMDsKKworICAgIHJldCA9IGdldF9zYW5pdGl6ZWRfcmluZygmcmluZywgcmluZ19pbmZvKTsK KyAgICBpZiAoIHJldCApCisgICAgICAgIHJldHVybiAwOworCisgICAgYXJnb19kcHJpbnRrKCJz YW5pdGl6ZWQgcmluZ2J1Zl9wYXlsb2FkX3NwYWNlOiB0eF9wdHI9JWQgcnhfcHRyPSVkXG4iLAor ICAgICAgICAgICAgICAgICByaW5nLnR4X3B0ciwgcmluZy5yeF9wdHIpOworCisgICAgLyoKKyAg ICAgKiByeF9wdHIgPT0gdHhfcHRyIG1lYW5zIHRoYXQgdGhlIHJpbmcgaGFzIGJlZW4gZW1wdGll ZCwgc28gcmV0dXJuCisgICAgICogdGhlIG1heGltdW0gcGF5bG9hZCBzaXplIHRoYXQgY2FuIGJl IGFjY2VwdGVkIC0tIHNlZSBtZXNzYWdlIHNpemUKKyAgICAgKiBjaGVja2luZyBsb2dpYyBpbiB0 aGUgZW50cnkgdG8gcmluZ2J1Zl9pbnNlcnQgd2hpY2ggZW5zdXJlcyB0aGF0CisgICAgICogdGhl cmUgaXMgYWx3YXlzIG9uZSBtZXNzYWdlIHNsb3QgKG9mIHNpemUgUk9VTkRVUF9NRVNTQUdFKDEp KSBsZWZ0CisgICAgICogYXZhaWxhYmxlLCBwcmV2ZW50aW5nIGEgcmluZyBmcm9tIGJlaW5nIGVu dGlyZWx5IGZpbGxlZC4gVGhpcyBlbnN1cmVzCisgICAgICogdGhhdCBtYXRjaGluZyByaW5nIGlu ZGV4ZXMgYWx3YXlzIGluZGljYXRlIGFuIGVtcHR5IHJpbmcgYW5kIG5vdCBhCisgICAgICogZnVs bCBvbmUuCisgICAgICogVGhlIHN1YnRyYWN0aW9uIGhlcmUgd2lsbCBub3QgdW5kZXJmbG93IGR1 ZSB0byBtaW5pbXVtIHNpemUgY29uc3RyYWludHMKKyAgICAgKiBlbmZvcmNlZCBvbiByaW5nIHNp emUgZWxzZXdoZXJlLgorICAgICAqLworICAgIGlmICggcmluZy5yeF9wdHIgPT0gcmluZy50eF9w dHIgKQorICAgICAgICByZXR1cm4gbGVuIC0gc2l6ZW9mKHN0cnVjdCB4ZW5fYXJnb19yaW5nX21l c3NhZ2VfaGVhZGVyKQorICAgICAgICAgICAgICAgICAgIC0gUk9VTkRVUF9NRVNTQUdFKDEpOwor CisgICAgcmV0ID0gcmluZy5yeF9wdHIgLSByaW5nLnR4X3B0cjsKKyAgICBpZiAoIHJldCA8IDAg KQorICAgICAgICByZXQgKz0gbGVuOworCisgICAgLyoKKyAgICAgKiBUaGUgbWF4aW11bSBzaXpl IHBheWxvYWQgZm9yIGEgbWVzc2FnZSB0aGF0IHdpbGwgYmUgYWNjZXB0ZWQgaXM6CisgICAgICog KHRoZSBhdmFpbGFibGUgc3BhY2UgYmV0d2VlbiB0aGUgcmluZyBpbmRleGVzKQorICAgICAqICAg IG1pbnVzIChzcGFjZSBmb3IgYSBtZXNzYWdlIGhlYWRlcikKKyAgICAgKiAgICBtaW51cyAoc3Bh Y2UgZm9yIG9uZSBtZXNzYWdlIHNsb3QpCisgICAgICogc2luY2UgcmluZ2J1Zl9pbnNlcnQgcmVx dWlyZXMgdGhhdCBvbmUgbWVzc2FnZSBzbG90IGJlIGxlZnQKKyAgICAgKiB1bmZpbGxlZCwgdG8g YXZvaWQgZmlsbGluZyB0aGUgcmluZyB0byBjYXBhY2l0eSBhbmQgY29uZnVzaW5nIGEgZnVsbAor ICAgICAqIHJpbmcgd2l0aCBhbiBlbXB0eSBvbmUuCisgICAgICogU2luY2UgdGhlIHJpbmcgaW5k ZXhlcyBhcmUgc2FuaXRpemVkLCB0aGUgdmFsdWUgaW4gcmV0IGlzIGFsaWduZWQsIHNvCisgICAg ICogdGhlIHNpbXBsZSBzdWJ0cmFjdGlvbiBoZXJlIHdvcmtzIHRvIHJldHVybiB0aGUgYWxpZ25l ZCB2YWx1ZSBuZWVkZWQ6CisgICAgICovCisgICAgcmV0IC09IHNpemVvZihzdHJ1Y3QgeGVuX2Fy Z29fcmluZ19tZXNzYWdlX2hlYWRlcik7CisgICAgcmV0IC09IFJPVU5EVVBfTUVTU0FHRSgxKTsK KworICAgIHJldHVybiAocmV0IDwgMCkgPyAwIDogcmV0OworfQorCiAvKgogICogaW92X2NvdW50 IHJldHVybnMgaXRzIGNvdW50IG9uIHN1Y2Nlc3MgdmlhIGFuIG91dCB2YXJpYWJsZSB0byBhdm9p ZAogICogcG90ZW50aWFsIGZvciBhIG5lZ2F0aXZlIHJldHVybiB2YWx1ZSB0byBiZSB1c2VkIGlu Y29ycmVjdGx5CkBAIC04MTIsNiArODg5LDYxIEBAIHBlbmRpbmdfcmVtb3ZlX2FsbChzdHJ1Y3Qg YXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKICAgICByaW5nX2luZm8tPm5wZW5kaW5nID0gMDsK IH0KIAorc3RhdGljIHZvaWQKK3BlbmRpbmdfbm90aWZ5KHN0cnVjdCBobGlzdF9oZWFkICp0b19u b3RpZnkpCit7CisgICAgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUsICpuZXh0OworICAgIHN0cnVj dCBwZW5kaW5nX2VudCAqZW50OworCisgICAgQVNTRVJUKHJ3X2lzX2xvY2tlZCgmYXJnb19sb2Nr KSk7CisKKyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudCwgbm9kZSwgbmV4dCwgdG9f bm90aWZ5LCBub2RlKQorICAgIHsKKyAgICAgICAgaGxpc3RfZGVsKCZlbnQtPm5vZGUpOworICAg ICAgICBzaWduYWxfZG9taWQoZW50LT5kb21haW5faWQpOworICAgICAgICB4ZnJlZShlbnQpOwor ICAgIH0KK30KKworc3RhdGljIHZvaWQKK3BlbmRpbmdfZmluZChjb25zdCBzdHJ1Y3QgZG9tYWlu ICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbywKKyAgICAgICAgICAgICB1aW50 MzJfdCBwYXlsb2FkX3NwYWNlLCBzdHJ1Y3QgaGxpc3RfaGVhZCAqdG9fbm90aWZ5KQoreworICAg IHN0cnVjdCBobGlzdF9ub2RlICpub2RlLCAqbmV4dDsKKyAgICBzdHJ1Y3QgcGVuZGluZ19lbnQg KmVudDsKKworICAgIEFTU0VSVChyd19pc19sb2NrZWQoJmQtPmFyZ28tPmxvY2spKTsKKworICAg IC8qCisgICAgICogVE9ETzogQ3VycmVudCBwb2xpY3kgaGVyZSBpcyB0byBzaWduYWwgX2FsbF8g b2YgdGhlIHdhaXRpbmcgZG9tYWlucworICAgICAqICAgICAgIGludGVyZXN0ZWQgaW4gc2VuZGlu ZyBhIG1lc3NhZ2Ugb2Ygc2l6ZSBsZXNzIHRoYW4gcGF5bG9hZF9zcGFjZS4KKyAgICAgKgorICAg ICAqIFRoaXMgaXMgbGlrZWx5IHRvIGJlIHN1Ym9wdGltYWwsIHNpbmNlIG9uY2Ugb25lIG9mIHRo ZW0gaGFzIGFkZGVkCisgICAgICogdGhlaXIgbWVzc2FnZSB0byB0aGUgcmluZywgdGhlcmUgbWF5 IHdlbGwgYmUgaW5zdWZmaWNpZW50IHJvb20KKyAgICAgKiBhdmFpbGFibGUgZm9yIGFueSBvZiB0 aGUgb3RoZXJzIHRvIHRyYW5zbWl0LCBtZWFuaW5nIHRoYXQgdGhleSB3ZXJlCisgICAgICogd29r ZW4gaW4gdmFpbiwgd2hpY2ggY3JlYXRlZCBleHRyYSB3b3JrIGp1c3QgdG8gcmVxdWV1ZSB0aGVp ciB3YWl0LgorICAgICAqCisgICAgICogUmV0YWluIHRoaXMgc2ltcGxlIHBvbGljeSBmb3Igbm93 IHNpbmNlIGl0IGF0IGxlYXN0IGF2b2lkcyBzdGFydmluZyBhCisgICAgICogZG9tYWluIG9mIGF2 YWlsYWJsZSBzcGFjZSBub3RpZmljYXRpb25zIGJlY2F1c2Ugb2YgYSBwb2xpY3kgdGhhdCBvbmx5 CisgICAgICogbm90aWZpZWQgb3RoZXIgZG9tYWlucyBpbnN0ZWFkLiBJbXByb3ZlbWVudCBtYXkg YmUgcG9zc2libGU7CisgICAgICogaW52ZXN0aWdhdGlvbiByZXF1aXJlZC4KKyAgICAgKi8KKwor ICAgIHNwaW5fbG9jaygmcmluZ19pbmZvLT5sb2NrKTsKKyAgICBobGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKGVudCwgbm9kZSwgbmV4dCwgJnJpbmdfaW5mby0+cGVuZGluZywgbm9kZSkKKyAgICB7 CisgICAgICAgIGlmICggcGF5bG9hZF9zcGFjZSA+PSBlbnQtPmxlbiApCisgICAgICAgIHsKKyAg ICAgICAgICAgIGlmICggcmluZ19pbmZvLT5pZC5wYXJ0bmVyX2lkID09IFhFTl9BUkdPX0RPTUlE X0FOWSApCisgICAgICAgICAgICAgICAgd2lsZGNhcmRfcGVuZGluZ19saXN0X3JlbW92ZShlbnQt PmRvbWFpbl9pZCwgZW50KTsKKyAgICAgICAgICAgIGhsaXN0X2RlbCgmZW50LT5ub2RlKTsKKyAg ICAgICAgICAgIHJpbmdfaW5mby0+bnBlbmRpbmctLTsKKyAgICAgICAgICAgIGhsaXN0X2FkZF9o ZWFkKCZlbnQtPm5vZGUsIHRvX25vdGlmeSk7CisgICAgICAgIH0KKyAgICB9CisgICAgc3Bpbl91 bmxvY2soJnJpbmdfaW5mby0+bG9jayk7Cit9CisKIHN0YXRpYyBpbnQKIHBlbmRpbmdfcXVldWUo c3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8sIGRvbWlkX3Qgc3JjX2lkLAogICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgbGVuKQpAQCAtODc0LDYgKzEwMDYsMjcgQEAgcGVuZGluZ19y ZXF1ZXVlKHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvLCBkb21pZF90IHNyY19pZCwK IH0KIAogc3RhdGljIHZvaWQKK3BlbmRpbmdfY2FuY2VsKHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAq cmluZ19pbmZvLCBkb21pZF90IHNyY19pZCkKK3sKKyAgICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9k ZSwgKm5leHQ7CisgICAgc3RydWN0IHBlbmRpbmdfZW50ICplbnQ7CisKKyAgICBBU1NFUlQoc3Bp bl9pc19sb2NrZWQoJnJpbmdfaW5mby0+bG9jaykpOworCisgICAgaGxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZShlbnQsIG5vZGUsIG5leHQsICZyaW5nX2luZm8tPnBlbmRpbmcsIG5vZGUpCisgICAg eworICAgICAgICBpZiAoIGVudC0+ZG9tYWluX2lkID09IHNyY19pZCApCisgICAgICAgIHsKKyAg ICAgICAgICAgIGlmICggcmluZ19pbmZvLT5pZC5wYXJ0bmVyX2lkID09IFhFTl9BUkdPX0RPTUlE X0FOWSApCisgICAgICAgICAgICAgICAgd2lsZGNhcmRfcGVuZGluZ19saXN0X3JlbW92ZShlbnQt PmRvbWFpbl9pZCwgZW50KTsKKyAgICAgICAgICAgIGhsaXN0X2RlbCgmZW50LT5ub2RlKTsKKyAg ICAgICAgICAgIHhmcmVlKGVudCk7CisgICAgICAgICAgICByaW5nX2luZm8tPm5wZW5kaW5nLS07 CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCiB3aWxkY2FyZF9yaW5nc19wZW5k aW5nX3JlbW92ZShzdHJ1Y3QgZG9tYWluICpkKQogewogICAgIHN0cnVjdCBobGlzdF9ub2RlICpu b2RlLCAqbmV4dDsKQEAgLTk5NCw2ICsxMTQ3LDkyIEBAIHBhcnRuZXJfcmluZ3NfcmVtb3ZlKHN0 cnVjdCBkb21haW4gKnNyY19kKQogfQogCiBzdGF0aWMgaW50CitmaWxsX3JpbmdfZGF0YShjb25z dCBzdHJ1Y3QgZG9tYWluICpjdXJyZCwKKyAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEUo eGVuX2FyZ29fcmluZ19kYXRhX2VudF90KSBkYXRhX2VudF9obmQpCit7CisgICAgeGVuX2FyZ29f cmluZ19kYXRhX2VudF90IGVudDsKKyAgICBzdHJ1Y3QgZG9tYWluICpkc3RfZDsKKyAgICBzdHJ1 Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbzsKKyAgICBpbnQgcmV0OworCisgICAgQVNTRVJU KHJ3X2lzX2xvY2tlZCgmYXJnb19sb2NrKSk7CisKKyAgICByZXQgPSBfX2NvcHlfZnJvbV9ndWVz dCgmZW50LCBkYXRhX2VudF9obmQsIDEpID8gLUVGQVVMVCA6IDA7CisgICAgaWYgKCByZXQgKQor ICAgICAgICBnb3RvIG91dDsKKworICAgIGFyZ29fZHByaW50aygiZmlsbF9yaW5nX2RhdGE6IGVu dC5yaW5nLmRvbWFpbj0ldSxlbnQucmluZy5wb3J0PSV4XG4iLAorICAgICAgICAgICAgICAgICBl bnQucmluZy5kb21haW5faWQsIGVudC5yaW5nLnBvcnQpOworCisgICAgZW50LmZsYWdzID0gMDsK KworICAgIGRzdF9kID0gZ2V0X2RvbWFpbl9ieV9pZChlbnQucmluZy5kb21haW5faWQpOworICAg IGlmICggZHN0X2QgKQorICAgIHsKKyAgICAgICAgaWYgKCBkc3RfZC0+YXJnbyApCisgICAgICAg IHsKKyAgICAgICAgICAgIHJlYWRfbG9jaygmZHN0X2QtPmFyZ28tPmxvY2spOworCisgICAgICAg ICAgICByaW5nX2luZm8gPSByaW5nX2ZpbmRfaW5mb19ieV9tYXRjaChkc3RfZCwgZW50LnJpbmcu cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1 cnJkLT5kb21haW5faWQpOworICAgICAgICAgICAgaWYgKCByaW5nX2luZm8gKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IHNwYWNlX2F2YWlsOworCisgICAgICAgICAg ICAgICAgZW50LmZsYWdzIHw9IFhFTl9BUkdPX1JJTkdfREFUQV9GX0VYSVNUUzsKKyAgICAgICAg ICAgICAgICBlbnQubWF4X21lc3NhZ2Vfc2l6ZSA9IHJpbmdfaW5mby0+bGVuIC0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCB4ZW5fYXJnb19yaW5nX21l c3NhZ2VfaGVhZGVyKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPVU5E VVBfTUVTU0FHRSgxKTsKKworICAgICAgICAgICAgICAgIGlmICggcmluZ19pbmZvLT5pZC5wYXJ0 bmVyX2lkID09IFhFTl9BUkdPX0RPTUlEX0FOWSApCisgICAgICAgICAgICAgICAgICAgIGVudC5m bGFncyB8PSBYRU5fQVJHT19SSU5HX0RBVEFfRl9TSEFSRUQ7CisKKyAgICAgICAgICAgICAgICBz cGluX2xvY2soJnJpbmdfaW5mby0+bG9jayk7CisKKyAgICAgICAgICAgICAgICBzcGFjZV9hdmFp bCA9IHJpbmdidWZfcGF5bG9hZF9zcGFjZShkc3RfZCwgcmluZ19pbmZvKTsKKworICAgICAgICAg ICAgICAgIGFyZ29fZHByaW50aygiZmlsbF9yaW5nX2RhdGE6IHBvcnQ9JXggc3BhY2VfYXZhaWw9 JXUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc3BhY2Vfd2FudGVkPSV1XG4iLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaW5nX2luZm8tPmlkLnBvcnQsIHNwYWNlX2F2 YWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnQuc3BhY2VfcmVxdWlyZWQpOwor CisgICAgICAgICAgICAgICAgLyogRG8gbm90IHF1ZXVlIGEgbm90aWZpY2F0aW9uIGZvciBhbiB1 bmFjaGlldmFibGUgc2l6ZSAqLworICAgICAgICAgICAgICAgIGlmICggZW50LnNwYWNlX3JlcXVp cmVkID4gZW50Lm1heF9tZXNzYWdlX3NpemUgKQorICAgICAgICAgICAgICAgICAgICBlbnQuZmxh Z3MgfD0gWEVOX0FSR09fUklOR19EQVRBX0ZfRU1TR1NJWkU7CisgICAgICAgICAgICAgICAgZWxz ZSBpZiAoIHNwYWNlX2F2YWlsID49IGVudC5zcGFjZV9yZXF1aXJlZCApCisgICAgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgICAgICBwZW5kaW5nX2NhbmNlbChyaW5nX2luZm8sIGN1cnJk LT5kb21haW5faWQpOworICAgICAgICAgICAgICAgICAgICBlbnQuZmxhZ3MgfD0gWEVOX0FSR09f UklOR19EQVRBX0ZfU1VGRklDSUVOVDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGVuZGluZ19y ZXF1ZXVlKHJpbmdfaW5mbywgY3VycmQtPmRvbWFpbl9pZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudC5zcGFjZV9yZXF1aXJlZCk7CisgICAgICAgICAgICAgICAgICAg IGVudC5mbGFncyB8PSBYRU5fQVJHT19SSU5HX0RBVEFfRl9QRU5ESU5HOworICAgICAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZyaW5nX2luZm8tPmxvY2spOwor CisgICAgICAgICAgICAgICAgaWYgKCBzcGFjZV9hdmFpbCA9PSBlbnQubWF4X21lc3NhZ2Vfc2l6 ZSApCisgICAgICAgICAgICAgICAgICAgIGVudC5mbGFncyB8PSBYRU5fQVJHT19SSU5HX0RBVEFf Rl9FTVBUWTsKKworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVhZF91bmxvY2soJmRzdF9k LT5hcmdvLT5sb2NrKTsKKyAgICAgICAgfQorICAgICAgICBwdXRfZG9tYWluKGRzdF9kKTsKKyAg ICB9CisKKyAgICByZXQgPSBfX2NvcHlfZmllbGRfdG9fZ3Vlc3QoZGF0YV9lbnRfaG5kLCAmZW50 LCBmbGFncykgPyAtRUZBVUxUIDogMDsKKyAgICBpZiAoIHJldCApCisgICAgICAgIGdvdG8gb3V0 OworCisgICAgcmV0ID0gX19jb3B5X2ZpZWxkX3RvX2d1ZXN0KGRhdGFfZW50X2huZCwgJmVudCwg bWF4X21lc3NhZ2Vfc2l6ZSkgPworICAgICAgICAgICAgICAgIC1FRkFVTFQgOiAwOworIG91dDoK KyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CiBmaW5kX3JpbmdfbWZuKHN0cnVjdCBk b21haW4gKmQsIGdmbl90IGdmbiwgbWZuX3QgKm1mbikKIHsKICAgICBwMm1fdHlwZV90IHAybXQ7 CkBAIC0xNTI2LDYgKzE3NjUsMTExIEBAIHJlZ2lzdGVyX3Jpbmcoc3RydWN0IGRvbWFpbiAqY3Vy cmQsCiAgICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHZvaWQKK25vdGlmeV9yaW5nKHN0cnVj dCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvLAorICAgICAgICAg ICAgc3RydWN0IGhsaXN0X2hlYWQgKnRvX25vdGlmeSkKK3sKKyAgICB1aW50MzJfdCBzcGFjZTsK KworICAgIEFTU0VSVChyd19pc19sb2NrZWQoJmFyZ29fbG9jaykpOworICAgIEFTU0VSVChyd19p c19sb2NrZWQoJmQtPmFyZ28tPmxvY2spKTsKKworICAgIHNwaW5fbG9jaygmcmluZ19pbmZvLT5s b2NrKTsKKworICAgIGlmICggcmluZ19pbmZvLT5sZW4gKQorICAgICAgICBzcGFjZSA9IHJpbmdi dWZfcGF5bG9hZF9zcGFjZShkLCByaW5nX2luZm8pOworICAgIGVsc2UKKyAgICAgICAgc3BhY2Ug PSAwOworCisgICAgc3Bpbl91bmxvY2soJnJpbmdfaW5mby0+bG9jayk7CisKKyAgICBpZiAoIHNw YWNlICkKKyAgICAgICAgcGVuZGluZ19maW5kKGQsIHJpbmdfaW5mbywgc3BhY2UsIHRvX25vdGlm eSk7Cit9CisKK3N0YXRpYyB2b2lkCitub3RpZnlfY2hlY2tfcGVuZGluZyhzdHJ1Y3QgZG9tYWlu ICpjdXJyZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBITElTVF9IRUFEKHRvX25vdGlm eSk7CisKKyAgICBBU1NFUlQocndfaXNfbG9ja2VkKCZhcmdvX2xvY2spKTsKKworICAgIHJlYWRf bG9jaygmY3VycmQtPmFyZ28tPmxvY2spOworCisgICAgZm9yICggaSA9IDA7IGkgPCBBUkdPX0hU QUJMRV9TSVpFOyBpKysgKQorICAgIHsKKyAgICAgICAgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUs ICpuZXh0OworICAgICAgICBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbzsKKworICAg ICAgICBobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJpbmdfaW5mbywgbm9kZSwgbmV4dCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VycmQtPmFyZ28tPnJpbmdfaGFzaFtp XSwgbm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgbm90aWZ5X3JpbmcoY3VycmQsIHJpbmdf aW5mbywgJnRvX25vdGlmeSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZWFkX3VubG9jaygm Y3VycmQtPmFyZ28tPmxvY2spOworCisgICAgaWYgKCAhaGxpc3RfZW1wdHkoJnRvX25vdGlmeSkg KQorICAgICAgICBwZW5kaW5nX25vdGlmeSgmdG9fbm90aWZ5KTsKK30KKworc3RhdGljIGxvbmcK K25vdGlmeShzdHJ1Y3QgZG9tYWluICpjdXJyZCwKKyAgICAgICBYRU5fR1VFU1RfSEFORExFX1BB UkFNKHhlbl9hcmdvX3JpbmdfZGF0YV90KSByaW5nX2RhdGFfaG5kKQoreworICAgIFhFTl9HVUVT VF9IQU5ETEUoeGVuX2FyZ29fcmluZ19kYXRhX2VudF90KSBlbnRfaG5kOworICAgIHhlbl9hcmdv X3JpbmdfZGF0YV90IHJpbmdfZGF0YTsKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIHJlYWRfbG9j aygmYXJnb19sb2NrKTsKKworICAgIGlmICggIWN1cnJkLT5hcmdvICkKKyAgICB7CisgICAgICAg IGFyZ29fZHByaW50aygiIWQtPmFyZ28sIEVOT0RFVlxuIik7CisgICAgICAgIHJldCA9IC1FTk9E RVY7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIG5vdGlmeV9jaGVja19wZW5kaW5n KGN1cnJkKTsKKworICAgIGlmICggZ3Vlc3RfaGFuZGxlX2lzX251bGwocmluZ19kYXRhX2huZCkg KQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJldCA9IGNvcHlfZnJvbV9ndWVzdCgmcmluZ19k YXRhLCByaW5nX2RhdGFfaG5kLCAxKSA/IC1FRkFVTFQgOiAwOworICAgIGlmICggcmV0ICkKKyAg ICAgICAgZ290byBvdXQ7CisKKyAgICBpZiAoIHJpbmdfZGF0YS5uZW50ID4gTUFYX05PVElGWV9D T1VOVCApCisgICAgeworICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsCisgICAgICAgICAgICAg ICAgImFyZ286IG5vdGlmeSBlbnRyeSBjb3VudCgldSkgZXhjZWVkcyBtYXgoJXUpXG4iLAorICAg ICAgICAgICAgICAgIHJpbmdfZGF0YS5uZW50LCBNQVhfTk9USUZZX0NPVU5UKTsKKyAgICAgICAg cmV0ID0gLUVBQ0NFUzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgZW50X2huZCA9 IGd1ZXN0X2hhbmRsZV9mb3JfZmllbGQocmluZ19kYXRhX2huZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB4ZW5fYXJnb19yaW5nX2RhdGFfZW50X3QsIGRhdGFbMF0pOwor ICAgIGlmICggdW5saWtlbHkoIWd1ZXN0X2hhbmRsZV9va2F5KGVudF9obmQsIHJpbmdfZGF0YS5u ZW50KSkgKQorICAgIHsKKyAgICAgICAgcmV0ID0gLUVGQVVMVDsKKyAgICAgICAgZ290byBvdXQ7 CisgICAgfQorCisgICAgd2hpbGUgKCAhcmV0ICYmIHJpbmdfZGF0YS5uZW50LS0gKQorICAgIHsK KyAgICAgICAgcmV0ID0gZmlsbF9yaW5nX2RhdGEoY3VycmQsIGVudF9obmQpOworICAgICAgICBn dWVzdF9oYW5kbGVfYWRkX29mZnNldChlbnRfaG5kLCAxKTsKKyAgICB9CisKKyBvdXQ6CisgICAg cmVhZF91bmxvY2soJmFyZ29fbG9jayk7CisKKyAgICByZXR1cm4gcmV0OworfQorCiBzdGF0aWMg bG9uZwogc2VuZHYoc3RydWN0IGRvbWFpbiAqc3JjX2QsIGNvbnN0IHhlbl9hcmdvX2FkZHJfdCAq c3JjX2FkZHIsCiAgICAgICBjb25zdCB4ZW5fYXJnb19hZGRyX3QgKmRzdF9hZGRyLApAQCAtMTcy Niw2ICsyMDcwLDIxIEBAIGRvX2FyZ29fb3AodW5zaWduZWQgaW50IGNtZCwgWEVOX0dVRVNUX0hB TkRMRV9QQVJBTSh2b2lkKSBhcmcxLAogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl IFhFTl9BUkdPX09QX25vdGlmeToKKyAgICB7CisgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFS QU0oeGVuX2FyZ29fcmluZ19kYXRhX3QpIHJpbmdfZGF0YV9obmQgPQorICAgICAgICAgICAgICAg ICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZzEsIHhlbl9hcmdvX3JpbmdfZGF0YV90KTsKKworICAg ICAgICBpZiAoIHVubGlrZWx5KCghZ3Vlc3RfaGFuZGxlX2lzX251bGwoYXJnMikpIHx8IGFyZzMg fHwgYXJnNCkgKQorICAgICAgICB7CisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gbm90aWZ5KGN1cnJkLCByaW5n X2RhdGFfaG5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAg ICAgcmMgPSAtRU9QTk9UU1VQUDsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vaW5j bHVkZS9wdWJsaWMvYXJnby5oIGIveGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaAppbmRleCA4Zjdk MDVkLi4yNWZlZDgyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oCisrKyBi L3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgKQEAgLTEyOCw2ICsxMjgsNDIgQEAgdHlwZWRlZiBz dHJ1Y3QgeGVuX2FyZ29fdW5yZWdpc3Rlcl9yaW5nCiAvKiBNZXNzYWdlcyBvbiB0aGUgcmluZyBh cmUgcGFkZGVkIHRvIGEgbXVsdGlwbGUgb2YgdGhpcyBzaXplLiAqLwogI2RlZmluZSBYRU5fQVJH T19NU0dfU0xPVF9TSVpFIDB4MTAKIAorLyoKKyAqIE5vdGlmeSBmbGFncworICovCisvKiBSaW5n IGlzIGVtcHR5ICovCisjZGVmaW5lIFhFTl9BUkdPX1JJTkdfREFUQV9GX0VNUFRZICAgICAgICgx VSA8PCAwKQorLyogUmluZyBleGlzdHMgKi8KKyNkZWZpbmUgWEVOX0FSR09fUklOR19EQVRBX0Zf RVhJU1RTICAgICAgKDFVIDw8IDEpCisvKiBQZW5kaW5nIGludGVycnVwdCBleGlzdHMuIERvIG5v dCByZWx5IG9uIHRoaXMgZmllbGQgLSBmb3IgcHJvZmlsaW5nIG9ubHkgKi8KKyNkZWZpbmUgWEVO X0FSR09fUklOR19EQVRBX0ZfUEVORElORyAgICAgKDFVIDw8IDIpCisvKiBTdWZmaWNpZW50IHNw YWNlIHRvIHF1ZXVlIHNwYWNlX3JlcXVpcmVkIGJ5dGVzIGV4aXN0cyAqLworI2RlZmluZSBYRU5f QVJHT19SSU5HX0RBVEFfRl9TVUZGSUNJRU5UICAoMVUgPDwgMykKKy8qIEluc3VmZmljaWVudCBy aW5nIHNpemUgZm9yIHNwYWNlX3JlcXVpcmVkIGJ5dGVzICovCisjZGVmaW5lIFhFTl9BUkdPX1JJ TkdfREFUQV9GX0VNU0dTSVpFICAgICgxVSA8PCA0KQorLyogUmluZyBpcyBzaGFyZWQsIG5vdCB1 bmljYXN0ICovCisjZGVmaW5lIFhFTl9BUkdPX1JJTkdfREFUQV9GX1NIQVJFRCAgICAgICgxVSA8 PCA1KQorCit0eXBlZGVmIHN0cnVjdCB4ZW5fYXJnb19yaW5nX2RhdGFfZW50Cit7CisgICAgeGVu X2FyZ29fYWRkcl90IHJpbmc7CisgICAgdWludDE2X3QgZmxhZ3M7CisgICAgdWludDE2X3QgcGFk OworICAgIHVpbnQzMl90IHNwYWNlX3JlcXVpcmVkOworICAgIHVpbnQzMl90IG1heF9tZXNzYWdl X3NpemU7Cit9IHhlbl9hcmdvX3JpbmdfZGF0YV9lbnRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeGVu X2FyZ29fcmluZ19kYXRhCit7CisgICAgdWludDMyX3QgbmVudDsKKyAgICB1aW50MzJfdCBwYWQ7 CisjaWYgZGVmaW5lZChfX1NURENfVkVSU0lPTl9fKSAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5 OTkwMUwKKyAgICB4ZW5fYXJnb19yaW5nX2RhdGFfZW50X3QgZGF0YVtdOworI2VsaWYgZGVmaW5l ZChfX0dOVUNfXykKKyAgICB4ZW5fYXJnb19yaW5nX2RhdGFfZW50X3QgZGF0YVswXTsKKyNlbmRp ZgorfSB4ZW5fYXJnb19yaW5nX2RhdGFfdDsKKwogc3RydWN0IHhlbl9hcmdvX3JpbmdfbWVzc2Fn ZV9oZWFkZXIKIHsKICAgICB1aW50MzJfdCBsZW47CkBAIC0yMDcsNCArMjQzLDM1IEBAIHN0cnVj dCB4ZW5fYXJnb19yaW5nX21lc3NhZ2VfaGVhZGVyCiAgKi8KICNkZWZpbmUgWEVOX0FSR09fT1Bf c2VuZHYgICAgICAgICAgICAgICAzCiAKKy8qCisgKiBYRU5fQVJHT19PUF9ub3RpZnkKKyAqCisg KiBBc2tzIFhlbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgcmluZ3MgaW4gdGhlIHN5c3Rl bS4KKyAqCisgKiBlbnQtPnJpbmcgaXMgdGhlIHhlbl9hcmdvX2FkZHJfdCBvZiB0aGUgcmluZyB5 b3Ugd2FudCBpbmZvcm1hdGlvbiBvbi4KKyAqIFVzZXMgdGhlIHNhbWUgcmluZyBtYXRjaGluZyBy dWxlcyBhcyBYRU5fQVJHT19PUF9zZW5kdi4KKyAqCisgKiBlbnQtPnNwYWNlX3JlcXVpcmVkIDog aWYgdGhpcyBmaWVsZCBpcyBub3QgbnVsbCB0aGVuIFhlbiB3aWxsIGNoZWNrCisgKiB0aGF0IHRo ZXJlIGlzIHNwYWNlIGluIHRoZSBkZXN0aW5hdGlvbiByaW5nIGZvciB0aGlzIG1hbnkgYnl0ZXMg b2YgcGF5bG9hZC4KKyAqIElmIHRoZSByaW5nIGlzIHRvbyBzbWFsbCBmb3IgdGhlIHJlcXVlc3Rl ZCBzcGFjZV9yZXF1aXJlZCwgaXQgd2lsbCBzZXQgdGhlCisgKiBYRU5fQVJHT19SSU5HX0RBVEFf Rl9FTVNHU0laRSBmbGFnIG9uIHJldHVybi4KKyAqIElmIHN1ZmZpY2llbnQgc3BhY2UgaXMgYXZh aWxhYmxlLCBpdCB3aWxsIHNldCBYRU5fQVJHT19SSU5HX0RBVEFfRl9TVUZGSUNJRU5UCisgKiBh bmQgQ0FOQ0VMIGFueSBwZW5kaW5nIG5vdGlmaWNhdGlvbiBmb3IgdGhhdCBlbnQtPnJpbmc7IG90 aGVyd2lzZSBpdAorICogd2lsbCBzY2hlZHVsZSBhIG5vdGlmaWNhdGlvbiBldmVudCBhbmQgdGhl IGZsYWcgd2lsbCBub3QgYmUgc2V0LgorICoKKyAqIFRoZXNlIGZsYWdzIGFyZSBzZXQgYnkgWGVu IHdoZW4gbm90aWZ5IHJlcGxpZXM6CisgKiBYRU5fQVJHT19SSU5HX0RBVEFfRl9FTVBUWSAgICAg IHJpbmcgaXMgZW1wdHkKKyAqIFhFTl9BUkdPX1JJTkdfREFUQV9GX1BFTkRJTkcgICAgbm90aWZ5 IGV2ZW50IGlzIHBlbmRpbmcgKmRvbid0IHJlbHkgb24gdGhpcyoKKyAqIFhFTl9BUkdPX1JJTkdf REFUQV9GX1NVRkZJQ0lFTlQgc3VmZmljaWVudCBzcGFjZSBmb3Igc3BhY2VfcmVxdWlyZWQgaXMg dGhlcmUKKyAqIFhFTl9BUkdPX1JJTkdfREFUQV9GX0VYSVNUUyAgICAgcmluZyBleGlzdHMKKyAq IFhFTl9BUkdPX1JJTkdfREFUQV9GX0VNU0dTSVpFICAgc3BhY2VfcmVxdWlyZWQgdG9vIGxhcmdl IGZvciB0aGUgcmluZyBzaXplCisgKiBYRU5fQVJHT19SSU5HX0RBVEFfRl9TSEFSRUQgICAgIHJp bmcgaXMgcmVnaXN0ZXJlZCBmb3Igd2lsZGNhcmQgcGFydG5lcgorICoKKyAqIGFyZzE6IFhFTl9H VUVTVF9IQU5ETEUoeGVuX2FyZ29fcmluZ19kYXRhX3QpIHJpbmdfZGF0YSAobWF5IGJlIE5VTEwp CisgKiBhcmcyOiBOVUxMCisgKiBhcmczOiAwIChaRVJPKQorICogYXJnNDogMCAoWkVSTykKKyAq LworI2RlZmluZSBYRU5fQVJHT19PUF9ub3RpZnkgICAgICAgICAgICAgIDQKKwogI2VuZGlmCmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94bGF0LmxzdCBiL3hlbi9pbmNsdWRlL3hsYXQubHN0Cmlu ZGV4IDM3MjM5ODAuLmU0NWI2MGUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hsYXQubHN0Cisr KyBiL3hlbi9pbmNsdWRlL3hsYXQubHN0CkBAIC0xNTQsMyArMTU0LDUgQEAKID8JYXJnb191bnJl Z2lzdGVyX3JpbmcJCWFyZ28uaAogPwlhcmdvX2lvdgkJCWFyZ28uaAogPwlhcmdvX3NlbmRfYWRk cgkJCWFyZ28uaAorPwlhcmdvX3JpbmdfZGF0YV9lbnQJCWFyZ28uaAorPwlhcmdvX3JpbmdfZGF0 YQkJCWFyZ28uaAotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5w cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8v eGVuLWRldmVs