Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp873840yba; Wed, 24 Apr 2019 11:00:30 -0700 (PDT) X-Google-Smtp-Source: APXvYqwvV1KXCw6bHMzibaWchu3jXj5waOdBj09XXjcKJyzSe5Ch0wAhCJoZ23CVP+aN5tYMO0kC X-Received: by 2002:a17:902:7e04:: with SMTP id b4mr11869418plm.211.1556128830715; Wed, 24 Apr 2019 11:00:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556128830; cv=none; d=google.com; s=arc-20160816; b=Ftc9nyiRE/cBLWAIKhJdUKd97+QuX9XXXZIIM6Vzde2hIKl0hRRKqrphkCF2Ma5T2F OmmqtG/TT1tzyWfMpGYsrDIuCrq8AOJErUo2sDUyOTgk7xk3Jtj1uOZhlugHWr3jT3L1 MglpZ8u2eWT226P4CX64rMvvKPJpEgh6waN5BTziEfoTf6wXL1o2BAMvCtb6ZAZOaOQ+ CO+PadzAYHyGdMeZGTRPF0P3LIA1k2JvEFLzdXOi60hUjF2s5Jgt2vSn/R+ChOm/k9fg w1lmZJuR9U6jWKlIBszXis7G/09+6nBMlXPZV0eqa4ZaSk5mLTmUCSnw/W4D+hoK7izk phOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :dlp-reaction:dlp-version:dlp-product:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from; bh=MUZfkqJLRICCnbxp7jhAEG5mP/z6gmDpkQrMd6R6c2k=; b=HVrkdjcnMPDMzAF/Gzq2cOovugzjBjMKe+42wlLz9gG/MOA9K4aNglXRh5xv1XNOEr sk4xh0XDEHzXfa2s9TEoKKDa96v9lfS6bmemzsiKwyNWwiUSuGvm2m5sNdRTH3ohlTvU 0BDSG3edBdbwyFXeBkQlnTxu/SwEyI7KxW5Wo5PZu+YngfiNTCvek1ROZVep4KHSrGji SL1hA4rXl7XDyeWPKaOuVoixLRUI+NnoTmS+zAxMiT7hLyx+vTLRCrTN7Q96DFnh693w d+GTWOSn7DL+XWNDS1tLfaQCzcbRUlb2n0OKBB6y0QCTFCvAF+al2OFOXlZW/H6e5Hqu jfhg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l6si13561882pgp.489.2019.04.24.11.00.14; Wed, 24 Apr 2019 11:00:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392348AbfDXR6i (ORCPT + 99 others); Wed, 24 Apr 2019 13:58:38 -0400 Received: from mga09.intel.com ([134.134.136.24]:8452 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389582AbfDXR4i (ORCPT ); Wed, 24 Apr 2019 13:56:38 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Apr 2019 10:56:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,390,1549958400"; d="scan'208";a="294223209" Received: from orsmsx104.amr.corp.intel.com ([10.22.225.131]) by orsmga004.jf.intel.com with ESMTP; 24 Apr 2019 10:56:35 -0700 Received: from orsmsx116.amr.corp.intel.com ([169.254.7.36]) by ORSMSX104.amr.corp.intel.com ([169.254.4.183]) with mapi id 14.03.0415.000; Wed, 24 Apr 2019 10:56:35 -0700 From: "Xing, Cedric" To: Andy Lutomirski CC: LKML , X86 ML , "linux-sgx@vger.kernel.org" , Andrew Morton , "Hansen, Dave" , "Christopherson, Sean J" , "nhorman@redhat.com" , "npmccallum@redhat.com" , "Ayoun, Serge" , "Katz-zamir, Shay" , "Huang, Haitao" , Andy Shevchenko , Thomas Gleixner , "Svahn, Kai" , Borislav Petkov , "Josh Triplett" , "Huang, Kai" , "David Rientjes" , Jarkko Sakkinen Subject: RE: [RFC PATCH v1 2/3] x86/vdso: Modify __vdso_sgx_enter_enclave() to allow parameter passing on untrusted stack Thread-Topic: [RFC PATCH v1 2/3] x86/vdso: Modify __vdso_sgx_enter_enclave() to allow parameter passing on untrusted stack Thread-Index: AQHU+Usmf1evzVuGMEWn0D2ZOnnJnqZJabSAgAIvAvA= Date: Wed, 24 Apr 2019 17:56:34 +0000 Message-ID: <960B34DE67B9E140824F1DCDEC400C0F4E87E388@ORSMSX116.amr.corp.intel.com> References: <20190417103938.7762-1-jarkko.sakkinen@linux.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNDBlOWYyMjktMmUwNC00MWFmLThiNTUtYjhiNjMwNWI3ODQwIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoicmUxODNGRGJZM1wvdGJSb0NFa242NzhSXC9sakQ5N2RKSEYxN3ZvUHBmNWM2emxTUzY1d3YzU3RzbjV2Wm5jZmYzIn0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [10.22.254.138] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgQW5keSwNCg0KSSBzZW50IG91dCBteSBSRkMgcGF0Y2ggdjIgbGFzdCBuaWdodCwgdGhhdCBo YXMgeW91ciBzdWdnZXN0aW9ucyBpbmNvcnBvcmF0ZWQsIHBsdXMgYSBuZXcgdW53aW5kIHRlc3Qg dG8gc2luZ2xlIHN0ZXAgdGhyb3VnaCB0aGUgdkRTTyBBUEkgdG8gdGVzdCBvdXQgdGhlIENGSSBk aXJlY3RpdmVzLiBIb3BlZnVsbHkgaXQgaXMgYWJsZSB0byBhZGRyZXNzIGFsbCBvZiB5b3VyIGNv bmNlcm5zLiBJdCdzIHdvcnRoIG5vdGluZyB0aGF0LCBnaXZlbiB0aGUgY3VycmVudCBwYXRjaCBm aXhlcyB1cCAjREIgYW5kICNCUCBhdCBFTkNMVSwgdGhlIHVud2luZCB0ZXN0IGNhbm5vdCBydW4g dG8gY29tcGxldGlvbi4gSSBhc3N1bWUgU2VhbiB3aWxsIHJldmlzZSB0aGUgZml4dXAgY29kZSBz b29uLg0KDQpUaGFua3MhDQoNCi1DZWRyaWMNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiBGcm9tOiBBbmR5IEx1dG9taXJza2kgW21haWx0bzpsdXRvQGtlcm5lbC5vcmddDQo+IFNl bnQ6IE1vbmRheSwgQXByaWwgMjIsIDIwMTkgNjoyNiBQTQ0KPiBUbzogWGluZywgQ2VkcmljIDxj ZWRyaWMueGluZ0BpbnRlbC5jb20+DQo+IENjOiBMS01MIDxsaW51eC1rZXJuZWxAdmdlci5rZXJu ZWwub3JnPjsgWDg2IE1MIDx4ODZAa2VybmVsLm9yZz47IGxpbnV4LQ0KPiBzZ3hAdmdlci5rZXJu ZWwub3JnOyBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPjsgSGFuc2Vu LA0KPiBEYXZlIDxkYXZlLmhhbnNlbkBpbnRlbC5jb20+OyBDaHJpc3RvcGhlcnNvbiwgU2VhbiBK DQo+IDxzZWFuLmouY2hyaXN0b3BoZXJzb25AaW50ZWwuY29tPjsgbmhvcm1hbkByZWRoYXQuY29t Ow0KPiBucG1jY2FsbHVtQHJlZGhhdC5jb207IEF5b3VuLCBTZXJnZSA8c2VyZ2UuYXlvdW5AaW50 ZWwuY29tPjsgS2F0ei16YW1pciwNCj4gU2hheSA8c2hheS5rYXR6LXphbWlyQGludGVsLmNvbT47 IEh1YW5nLCBIYWl0YW8gPGhhaXRhby5odWFuZ0BpbnRlbC5jb20+Ow0KPiBBbmR5IFNoZXZjaGVu a28gPGFuZHJpeS5zaGV2Y2hlbmtvQGxpbnV4LmludGVsLmNvbT47IFRob21hcyBHbGVpeG5lcg0K PiA8dGdseEBsaW51dHJvbml4LmRlPjsgU3ZhaG4sIEthaSA8a2FpLnN2YWhuQGludGVsLmNvbT47 IEJvcmlzbGF2IFBldGtvdg0KPiA8YnBAYWxpZW44LmRlPjsgSm9zaCBUcmlwbGV0dCA8am9zaEBq b3NodHJpcGxldHQub3JnPjsgQW5kcmV3IEx1dG9taXJza2kNCj4gPGx1dG9Aa2VybmVsLm9yZz47 IEh1YW5nLCBLYWkgPGthaS5odWFuZ0BpbnRlbC5jb20+OyBEYXZpZCBSaWVudGplcw0KPiA8cmll bnRqZXNAZ29vZ2xlLmNvbT47IEphcmtrbyBTYWtraW5lbiA8amFya2tvLnNha2tpbmVuQGxpbnV4 LmludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtSRkMgUEFUQ0ggdjEgMi8zXSB4ODYvdmRzbzog TW9kaWZ5DQo+IF9fdmRzb19zZ3hfZW50ZXJfZW5jbGF2ZSgpIHRvIGFsbG93IHBhcmFtZXRlciBw YXNzaW5nIG9uIHVudHJ1c3RlZCBzdGFjaw0KPiANCj4gT24gTW9uLCBBcHIgMjIsIDIwMTkgYXQg NTozNyBQTSBDZWRyaWMgWGluZyA8Y2VkcmljLnhpbmdAaW50ZWwuY29tPg0KPiB3cm90ZToNCj4g Pg0KPiA+IFRoZSBwcmV2aW91cyBfX3Zkc29fc2d4X2VudGVyX2VuY2xhdmUoKSByZXF1aXJlcyBl bmNsYXZlcyB0byBwcmVzZXJ2ZQ0KPiA+ICVyc3AsIHdoaWNoIHByb2hpYml0cyBlbmNsYXZlcyBm cm9tIGFsbG9jYXRpbmcgYW5kIHBhc3NpbmcgcGFyYW1ldGVycw0KPiA+IGZvciB1bnRydXN0ZWQg ZnVuY3Rpb24gY2FsbHMgKGFrYS4gby1jYWxscykuDQo+ID4NCj4gPiBUaGlzIHBhdGNoIGFkZHJl c3NlcyB0aGUgcHJvYmxlbSBhYm92ZSBieSBpbnRyb2R1Y2luZyBhIG5ldyBBQkkgdGhhdA0KPiA+ IHByZXNlcnZlcyAlcmJwIGluc3RlYWQgb2YgJXJzcC4gVGhlbiBfX3Zkc29fc2d4X2VudGVyX2Vu Y2xhdmUoKSBjYW4NCj4gPiBhbmNob3IgaXRzIGZyYW1lIHVzaW5nICVyYnAgc28gdGhhdCBlbmNs YXZlcyBhcmUgYWxsb3dlZCB0byBhbGxvY2F0ZQ0KPiA+IHNwYWNlIG9uIHRoZSB1bnRydXN0ZWQg c3RhY2sgYnkgZGVjcmVtZW50aW5nICVyc3AuIFBsZWFzZSBub3RlIHRoYXQNCj4gPiB0aGUgc3Rh Y2sgc3BhY2UgYWxsb2NhdGVkIGluIHN1Y2ggd2F5IHdpbGwgYmUgcGFydCBvZg0KPiA+IF9fdmRz b19zZ3hfZW50ZXJfZW5jbGF2ZSgpJ3MgZnJhbWUgc28gd2lsbCBiZSBmcmVlZCBhZnRlcg0KPiA+ IF9fdmRzb19zZ3hfZW50ZXJfZW5jbGF2ZSgpIHJldHVybnMuIFRoZXJlZm9yZSwNCj4gPiBfX3Zk c29fc2d4X2VudGVyX2VuY2xhdmUoKSBoYXMgYmVlbiBjaGFuZ2VkIHRvIHRha2UgYSBjYWxsYmFj aw0KPiA+IGZ1bmN0aW9uIGFzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciwgd2hpY2ggaWYgc3VwcGxp ZWQsIHdpbGwgYmUgaW52b2tlZA0KPiA+IHVwb24gZW5jbGF2ZSBleGl0cyAoYm90aCBBRVggKEFz eW5jaHJvbm91cyBFbmNsYXZlDQo+ID4gZVhpdCkgYW5kIG5vcm1hbCBleGl0cyksIHdpdGggdGhl IHZhbHVlIG9mICVyc3AgbGVmdCBvZmYgYnkgdGhlDQo+ID4gZW5jbGF2ZSBhcyBhIHBhcmFtZXRl ciB0byB0aGUgY2FsbGJhY2suDQo+ID4NCj4gPiBIZXJlJ3MgdGhlIHN1bW1hcnkgb2YgQVBJL0FC SSBjaGFuZ2VzIGluIHRoaXMgcGF0Y2guIE1vcmUgZGV0YWlscw0KPiA+IGNvdWxkIGJlIGZvdW5k IGluIGFyY2gveDg2L2VudHJ5L3Zkc28vdnNneF9lbnRlcl9lbmNsYXZlLlMuDQo+ID4gKiAnc3Ry dWN0IHNneF9lbmNsYXZlX2V4Y2VwdGlvbicgaXMgcmVuYW1lZCB0byAnc3RydWN0DQo+IHNneF9l bmNsYXZlX2V4aW5mbycNCj4gPiAgIGJlY2F1c2UgaXQgaXMgZmlsbGVkIHVwb24gYm90aCBBRVgg KGkuZS4gZXhjZXB0aW9ucykgYW5kIG5vcm1hbA0KPiBlbmNsYXZlDQo+ID4gICBleGl0cy4NCj4g PiAqIF9fdmRzb19zZ3hfZW50ZXJfZW5jbGF2ZSgpIGFuY2hvcnMgaXRzIGZyYW1lIHVzaW5nICVy YnAgKGluc3RlYWQNCj4gb2YgJXJzcCBpbg0KPiA+ICAgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0 aW9uKS4NCj4gPiAqIF9fdmRzb19zZ3hfZW50ZXJfZW5jbGF2ZSgpIHRha2VzIG9uZSBtb3JlIHBh cmFtZXRlciAtIGEgY2FsbGJhY2sNCj4gZnVuY3Rpb24gdG8NCj4gPiAgIGJlIGludm9rZWQgdXBv biBlbmNsYXZlIGV4aXRzLiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLCBhbmQgaWYgbm90DQo+ ID4gICBzdXBwbGllZCwgd2lsbCBjYXVzZSBfX3Zkc29fc2d4X2VudGVyX2VuY2xhdmUoKSB0byBy ZXR1cm4gdXBvbg0KPiBlbmNsYXZlIGV4aXRzDQo+ID4gICAoc2FtZSBiZWhhdmlvciBhcyBwcmV2 aW91cyBpbXBsZW1lbnRhdGlvbikuDQo+ID4gKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gaXMgZ2l2 ZW4gYXMgYSBwYXJhbWV0ZXIgdGhlIHZhbHVlIG9mICVyc3AgYXQNCj4gZW5jbGF2ZQ0KPiA+ICAg ZXhpdCB0byBhZGRyZXNzIGRhdGEgInB1c2hlZCIgYnkgdGhlIGVuY2xhdmUuIEEgcG9zaXRpdmUg dmFsdWUNCj4gcmV0dXJuZWQgYnkNCj4gPiAgIHRoZSBjYWxsYmFjayB3aWxsIGJlIHRyZWF0ZWQg YXMgYW4gRU5DTFUgbGVhZiBmb3IgcmUtZW50ZXJpbmcgdGhlDQo+IGVuY2xhdmUsDQo+ID4gICB3 aGlsZSBhIHplcm8gb3IgbmVnYXRpdmUgdmFsdWUgd2lsbCBiZSBwYXNzZWQgdGhyb3VnaCBhcyB0 aGUgcmV0dXJuDQo+ID4gICB2YWx1ZSBvZiBfX3Zkc29fc2d4X2VudGVyX2VuY2xhdmUoKSB0byBp dHMgY2FsbGVyLiBJdCdzIGFsc28gc2FmZSB0bw0KPiA+ICAgbGVhdmUgY2FsbGJhY2sgYnkgbG9u Z2ptcCgpIG9yIGJ5IHRocm93aW5nIGEgQysrIGV4Y2VwdGlvbi4NCj4gPg0KPiA+IFNpZ25lZC1v ZmYtYnk6IENlZHJpYyBYaW5nIDxjZWRyaWMueGluZ0BpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4g IGFyY2gveDg2L2VudHJ5L3Zkc28vdnNneF9lbnRlcl9lbmNsYXZlLlMgfCAxNTYgKysrKysrKysr KysrKystLS0tLS0tLQ0KPiAtDQo+ID4gIGFyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vc2d4Lmgg ICAgICAgICAgfCAgMTQgKy0NCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygr KSwgNzAgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYvZW50cnkv dmRzby92c2d4X2VudGVyX2VuY2xhdmUuUw0KPiA+IGIvYXJjaC94ODYvZW50cnkvdmRzby92c2d4 X2VudGVyX2VuY2xhdmUuUw0KPiA+IGluZGV4IGZlMGJmNjY3MWQ2ZC4uMjEwZjQzNjYzNzRhIDEw MDY0NA0KPiA+IC0tLSBhL2FyY2gveDg2L2VudHJ5L3Zkc28vdnNneF9lbnRlcl9lbmNsYXZlLlMN Cj4gPiArKysgYi9hcmNoL3g4Ni9lbnRyeS92ZHNvL3ZzZ3hfZW50ZXJfZW5jbGF2ZS5TDQo+ID4g QEAgLTE0LDg4ICsxNCwxMTggQEANCj4gPiAgLmNvZGU2NA0KPiA+ICAuc2VjdGlvbiAudGV4dCwg ImF4Ig0KPiA+DQo+ID4gLSNpZmRlZiBTR1hfS0VSTkVMX0RPQw0KPiA+ICAvKioNCj4gPiAgICog X192ZHNvX3NneF9lbnRlcl9lbmNsYXZlKCkgLSBFbnRlciBhbiBTR1ggZW5jbGF2ZQ0KPiA+ICAg Kg0KPiA+ICAgKiBAbGVhZjogICAgICAqKklOIFwlZWF4KiogLSBFTkNMVSBsZWFmLCBtdXN0IGJl IEVFTlRFUiBvciBFUkVTVU1FDQo+ID4gLSAqIEB0Y3M6ICAgICAgICoqSU4gXCVyYngqKiAtIFRD UywgbXVzdCBiZSBub24tTlVMTA0KPiA+IC0gKiBAZXhfaW5mbzogICAqKklOIFwlcmN4KiogLSBP cHRpb25hbCAnc3RydWN0IHNneF9lbmNsYXZlX2V4Y2VwdGlvbicNCj4gcG9pbnRlcg0KPiA+ICsg KiBAdGNzOiAgICAgICAqKklOIDB4MDgoXCVyc3ApKiogLSBUQ1MsIG11c3QgYmUgbm9uLU5VTEwN Cj4gPiArICogQGV4X2luZm86ICAgKipJTiAweDEwKFwlcnNwKSoqIC0gT3B0aW9uYWwgJ3N0cnVj dA0KPiBzZ3hfZW5jbGF2ZV9leGluZm8nDQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBvaW50ZXINCj4gPiArICogQGNhbGxiYWNrOiAgKipJTiAweDE4KFwlcnNwKSoq IC0gT3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUNCj4gY2FsbGVkIG9uDQo+ID4gKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY2xhdmUgZXhpdCBvciBleGNlcHRp b24NCj4gPiAgICoNCj4gPiAgICogUmV0dXJuOg0KPiA+ICAgKiAgKipPVVQgXCVlYXgqKiAtDQo+ ID4gLSAqICAlMCBvbiBhIGNsZWFuIGVudHJ5L2V4aXQgdG8vZnJvbSB0aGUgZW5jbGF2ZSwgJS1F SU5WQUwgaWYgRU5DTFUNCj4gPiBsZWFmIGlzDQo+ID4gLSAqICBub3QgYWxsb3dlZCBvciBpZiBU Q1MgaXMgTlVMTCwgJS1FRkFVTFQgaWYgRU5DTFUgb3IgdGhlIGVuY2xhdmUNCj4gPiBmYXVsdHMN Cj4gPiArICogICUwIG9uIGEgY2xlYW4gZW50cnkvZXhpdCB0by9mcm9tIHRoZSBlbmNsYXZlLCAl LUVJTlZBTCBpZiBFTkNMVQ0KPiA+ICsgbGVhZiBpcyBub3QNCj4gPiArICogIGFsbG93ZWQsICUt RUZBVUxUIGlmIEVOQ0xVIG9yIHRoZSBlbmNsYXZlIGZhdWx0cywgb3IgYQ0KPiA+ICsgbm9uLXBv c2l0aXZlIHZhbHVlDQo+ID4gKyAqICByZXR1cm5lZCBmcm9tIGBgY2FsbGJhY2tgYCAoaWYgb25l IGlzIHN1cHBsaWVkKS4NCj4gPiAgICoNCj4gPiAgICogKipJbXBvcnRhbnQhKiogIF9fdmRzb19z Z3hfZW50ZXJfZW5jbGF2ZSgpIGlzICoqTk9UKiogY29tcGxpYW50DQo+IHdpdGggdGhlDQo+ID4g LSAqIHg4Ni02NCBBQkksIGkuZS4gY2Fubm90IGJlIGNhbGxlZCBmcm9tIHN0YW5kYXJkIEMgY29k ZS4gICBBcyBub3RlZA0KPiBhYm92ZSwNCj4gPiAtICogaW5wdXQgcGFyYW1ldGVycyBtdXN0IGJl IHBhc3NlZCB2aWEgYGAlZWF4YGAsIGBgJXJieGBgIGFuZA0KPiA+IGBgJXJjeGBgLCB3aXRoDQo+ ID4gLSAqIHRoZSByZXR1cm4gdmFsdWUgcGFzc2VkIHZpYSBgYCVlYXhgYC4gIEFsbCByZWdpc3Rl cnMgZXhjZXB0DQo+ID4gYGAlcnNwYGAgbXVzdA0KPiA+IC0gKiBiZSB0cmVhdGVkIGFzIHZvbGF0 aWxlIGZyb20gdGhlIGNhbGxlcidzIHBlcnNwZWN0aXZlLCBpbmNsdWRpbmcNCj4gPiBidXQgbm90 DQo+ID4gLSAqIGxpbWl0ZWQgdG8gR1BScywgRUZMQUdTLkRGLCBNWENTUiwgRkNXLCBldGMuLi4g IENvbnZlcnNlbHksIHRoZQ0KPiA+IGVuY2xhdmUNCj4gPiAtICogYmVpbmcgcnVuICoqbXVzdCoq IHByZXNlcnZlIHRoZSB1bnRydXN0ZWQgYGAlcnNwYGAgYW5kIHN0YWNrLg0KPiA+ICsgKiB4ODYt NjQgQUJJLCBpLmUuIGNhbm5vdCBiZSBjYWxsZWQgZnJvbSBzdGFuZGFyZCBDIGNvZGUuIEFzIG5v dGVkDQo+ID4gKyBhYm92ZSwNCj4gPiArICogaW5wdXQgcGFyYW1ldGVycyBtdXN0IGJlIHBhc3Nl ZCB2aWEgYGAlZWF4YGAsIGBgOCglcnNwKWBgLA0KPiA+ICsgYGAweDEwKCVyc3ApYGAgYW5kDQo+ ID4gKyAqIGBgMHgxOCglcnNwKWBgLCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgcGFzc2VkIHZpYSBg YCVlYXhgYC4gQWxsDQo+ID4gKyBvdGhlciByZWdpc3RlcnMNCj4gPiArICogd2lsbCBiZSBwYXNz ZWQgdGhyb3VnaCB0byB0aGUgZW5jbGF2ZSBhcyBpcy4gQWxsIHJlZ2lzdGVycyBleGNlcHQNCj4g PiArIGBgJXJicGBgDQo+ID4gKyAqIG11c3QgYmUgdHJlYXRlZCBhcyB2b2xhdGlsZSBmcm9tIHRo ZSBjYWxsZXIncyBwZXJzcGVjdGl2ZSwNCj4gPiArIGluY2x1ZGluZyBidXQgbm90DQo+ID4gKyAq IGxpbWl0ZWQgdG8gR1BScywgRUZMQUdTLkRGLCBNWENTUiwgRkNXLCBldGMuLi4gQ29udmVyc2Vs eSwgdGhlDQo+ID4gKyBlbmNsYXZlIGJlaW5nDQo+ID4gKyAqIHJ1biAqKm11c3QqKiBwcmVzZXJ2 ZSB0aGUgdW50cnVzdGVkIGBgJXJicGBgLg0KPiA+ICsgKg0KPiA+ICsgKiBgYGNhbGxiYWNrYGAg aGFzIHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlOg0KPiA+ICsgKiBpbnQgY2FsbGJhY2sobG9uZyBy ZGksIGxvbmcgcnNpLCBsb25nIHJkeCwNCj4gPiArICogICAgICAgICAgICAgc3RydWN0IHNneF9l bmNsYXZlX2V4aW5mbyAqZXhfaW5mbywgbG9uZyByOCwgbG9uZyByOSwNCj4gPiArICogICAgICAg ICAgICAgdm9pZCAqdGNzLCBsb25nIHVyc3ApOw0KPiA+ICsgKiBgYGNhbGxiYWNrYGAgKipzaGFs bCoqIGZvbGxvdyB4ODZfNjQgQUJJLiBBbGwgR1BScyAqKmV4Y2VwdCoqDQo+ID4gKyBgYCVyYXhg YCwgYGAlcmJ4YGANCj4gPiArICogYW5kIGBgcmN4YGAgYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGBg Y2FsbGJhY2tgYC4gYGAlcmRpYGAsDQo+ID4gKyBgYCVyc2lgYCwgYGAlcmR4YGAsDQo+ID4gKyAq IGBgJXI4YGAsIGBgJXI5YGAsIGFsb25nIHdpdGggdGhlIHZhbHVlIG9mIGBgJXJzcGBgIHdoZW4g dGhlDQo+ID4gKyBlbmNsYXZlIGV4aXRlZC9leGNlcHRlZCwNCj4gPiArICogY2FuIGJlIGFjY2Vz c2VkIGRpcmVjdGx5IGFzIGlucHV0IHBhcmFtZXRlcnMsIHdoaWxlIG90aGVyIEdQUnMgY2FuDQo+ ID4gKyBiZQ0KPiA+ICsgKiBhY2Nlc3NlZCBpbiBhc3NlbWJseSBpZiBuZWVkZWQuDQo+ID4gKyAq IEEgcG9zaXRpdmUgdmFsdWUgcmV0dXJuZWQgZnJvbSBgYGNhbGxiYWNrYGAgd2lsbCBiZSB0cmVh dGVkIGFzIGFuDQo+ID4gKyBFTkNMVSBsZWFmDQo+ID4gKyAqIChlLmcuIEVFTlRFUi9FUkVTVU1F KSB0byByZWVudGVyIHRoZSBlbmNsYXZlLCB3aGlsZSAwIG9yIGENCj4gPiArIG5lZ2F0aXZlIHJl dHVybg0KPiANCj4gInRvIHJlZW50ZXIgdGhlIGVuY2xhdmUgd2l0aG91dCBwb3BwaW5nIHRoZSBl eHRyYSBkYXRhIHB1c2hlZCBieSB0aGUNCj4gZW5jbGF2ZSBvZmYgdGhlIHN0YWNrIiBvciBzaW1p bGFyLiAgV2UgcmVhbGx5IGRvbid0IHdhbnQgYSBzaXR1YXRpb24NCj4gd2hlcmUgc29tZW9uZSBw dXRzIGFsbCB0aGVyZSAia2VlcCBvbiBnb2luZyIgbG9naWMgaW4gdGhlIGNhbGxiYWNrIGFuZA0K PiB0aGUgc3RhY2sgdXNhZ2UgZ3Jvd3Mgd2l0aG91dCBib3VuZC4NCj4gDQo+ID4gKyAqIHZhbHVl IHdpbGwgYmUgcGFzc2VkIGJhY2sgdG8gdGhlIGNhbGxlciBvZg0KPiBfX3Zkc29fc2d4X2VudGVy X2VuY2xhdmUoKS4NCj4gPiArICogSXQgaXMgYWxzbyAqKnNhZmUqKiB0byBgYGxvbmdqbXAoKWBg IG91dCBvZiBgYGNhbGxiYWNrYGAuDQo+IA0KPiBJJ20gbm90IHN1cmUgdGhhdCAic2FmZSIgbmVl ZHMgZW1waGFzaXMuDQo+IA0KPiA+ICAgKi8NCj4gPiAtX192ZHNvX3NneF9lbnRlcl9lbmNsYXZl KHUzMiBsZWFmLCB2b2lkICp0Y3MsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBzZ3hfZW5jbGF2ZV9leGNlcHRpb24gKmV4X2luZm8pDQo+ID4gLXsNCj4gPiAtICAgICAgIGlm IChsZWFmICE9IFNHWF9FRU5URVIgJiYgbGVhZiAhPSBTR1hfRVJFU1VNRSkNCj4gPiAtICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gLQ0KPiA+IC0gICAgICAgaWYgKCF0Y3MpDQo+ ID4gLSAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+IC0NCj4gPiAtICAgICAgIHRy eSB7DQo+ID4gLSAgICAgICAgICAgICAgIEVOQ0xVW2xlYWZdOw0KPiA+IC0gICAgICAgfSBjYXRj aCAoZXhjZXB0aW9uKSB7DQo+ID4gLSAgICAgICAgICAgICAgIGlmIChlKQ0KPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICplID0gZXhjZXB0aW9uOw0KPiA+IC0gICAgICAgICAgICAgICByZXR1 cm4gLUVGQVVMVDsNCj4gPiAtICAgICAgIH0NCj4gPiAtDQo+ID4gLSAgICAgICByZXR1cm4gMDsN Cj4gPiAtfQ0KPiA+IC0jZW5kaWYNCj4gPiAgRU5UUlkoX192ZHNvX3NneF9lbnRlcl9lbmNsYXZl KQ0KPiA+IC0gICAgICAgLyogRUVOVEVSIDw9IGxlYWYgPD0gRVJFU1VNRSAqLw0KPiA+ICsgICAg ICAgLyogUHJvbG9nICovDQo+ID4gKyAgICAgICAuY2ZpX3N0YXJ0cHJvYw0KPiA+ICsgICAgICAg cHVzaCAgICAlcmJwDQo+ID4gKyAgICAgICAuY2ZpX2FkanVzdF9jZmFfb2Zmc2V0ICA4DQo+ID4g KyAgICAgICAuY2ZpX3JlbF9vZmZzZXQgICAgICAgICAlcmJwLCAwDQo+ID4gKyAgICAgICBtb3Yg ICAgICVyc3AsICVyYnANCj4gPiArICAgICAgIC5jZmlfZGVmX2NmYV9yZWdpc3RlciAgICVyYnAN Cj4gPiArDQo+ID4gKzE6ICAgICAvKiBFRU5URVIgPD0gbGVhZiA8PSBFUkVTVU1FICovDQo+ID4g ICAgICAgICBjbXAgICAgICQweDIsICVlYXgNCj4gPiAtICAgICAgIGpiICAgICAgYmFkX2lucHV0 DQo+ID4gLQ0KPiA+ICsgICAgICAgamIgICAgICA2Zg0KPiA+ICAgICAgICAgY21wICAgICAkMHgz LCAlZWF4DQo+ID4gLSAgICAgICBqYSAgICAgIGJhZF9pbnB1dA0KPiA+ICsgICAgICAgamEgICAg ICA2Zg0KPiA+DQo+ID4gLSAgICAgICAvKiBUQ1MgbXVzdCBiZSBub24tTlVMTCAqLw0KPiA+IC0g ICAgICAgdGVzdCAgICAlcmJ4LCAlcmJ4DQo+ID4gLSAgICAgICBqZSAgICAgIGJhZF9pbnB1dA0K PiA+ICsgICAgICAgLyogTG9hZCBUQ1MgYW5kIEFFUCAqLw0KPiA+ICsgICAgICAgbW92ICAgICAw eDEwKCVyYnApLCAlcmJ4DQo+ID4gKyAgICAgICBsZWEgICAgIDJmKCVyaXApLCAlcmN4DQo+ID4N Cj4gPiAtICAgICAgIC8qIFNhdmUgQGV4Y2VwdGlvbl9pbmZvICovDQo+ID4gLSAgICAgICBwdXNo ICAgICVyY3gNCj4gPiAtDQo+ID4gLSAgICAgICAvKiBMb2FkIEFFUCBmb3IgRU5DTFUgKi8NCj4g PiAtICAgICAgIGxlYSAgICAgMWYoJXJpcCksICAlcmN4DQo+ID4gLTE6ICAgICBlbmNsdQ0KPiA+ IC0NCj4gPiAtICAgICAgIGFkZCAgICAgJDB4OCwgJXJzcA0KPiA+IC0gICAgICAgeG9yICAgICAl ZWF4LCAlZWF4DQo+ID4gLSAgICAgICByZXQNCj4gPiAtDQo+ID4gLWJhZF9pbnB1dDoNCj4gPiAt ICAgICAgIG1vdiAgICAgJCgtRUlOVkFMKSwgJXJheA0KPiA+IC0gICAgICAgcmV0DQo+ID4gLQ0K PiA+IC0ucHVzaHNlY3Rpb24gLmZpeHVwLCAiYXgiDQo+ID4gLSAgICAgICAvKiBSZS1sb2FkIEBl eGNlcHRpb25faW5mbyBhbmQgZmlsbCBpdCAoaWYgaXQncyBub24tTlVMTCkgKi8NCj4gPiAtMjog ICAgIHBvcCAgICAgJXJjeA0KPiA+IC0gICAgICAgdGVzdCAgICAlcmN4LCAlcmN4DQo+ID4gLSAg ICAgICBqZSAgICAgIDNmDQo+ID4gKyAgICAgICAvKiBTaW5nbGUgRU5DTFUgc2VydmluZyBhcyBi b3RoIEVFTlRFUiBhbmQgQUVQIChFUkVTVU1FKSAqLw0KPiA+ICsyOiAgICAgZW5jbHUNCj4gPg0K PiA+ICsgICAgICAgLyogRUVYSVQgcGF0aCAqLw0KPiA+ICsgICAgICAgeG9yICAgICAlZWJ4LCAl ZWJ4DQo+ID4gKzM6ICAgICBtb3YgICAgIDB4MTgoJXJicCksICVyY3gNCj4gPiArICAgICAgIGpy Y3h6ICAgNGYNCj4gPiAgICAgICAgIG1vdiAgICAgJWVheCwgRVhfTEVBRiglcmN4KQ0KPiA+IC0g ICAgICAgbW92ICAgICAlZGksICBFWF9UUkFQTlIoJXJjeCkNCj4gPiAtICAgICAgIG1vdiAgICAg JXNpLCAgRVhfRVJST1JfQ09ERSglcmN4KQ0KPiA+ICsgICAgICAgam5jICAgICA0Zg0KPiA+ICsg ICAgICAgbW92ICAgICAlZGksIEVYX1RSQVBOUiglcmN4KQ0KPiA+ICsgICAgICAgbW92ICAgICAl c2ksIEVYX0VSUk9SX0NPREUoJXJjeCkNCj4gPiAgICAgICAgIG1vdiAgICAgJXJkeCwgRVhfQURE UkVTUyglcmN4KQ0KPiA+IC0zOiAgICAgbW92ICAgICAkKC1FRkFVTFQpLCAlcmF4DQo+ID4gKw0K PiA+ICs0OiAgICAgLyogQ2FsbCAqY2FsbGJhY2sgaWYgc3VwcGxpZWQgKi8NCj4gPiArICAgICAg IG1vdiAgICAgMHgyMCglcmJwKSwgJXJheA0KPiA+ICsgICAgICAgdGVzdCAgICAlcmF4LCAlcmF4 DQo+IA0KPiBNYXliZSBoYXZlIGEgY29tbWVudCBsaWtlICJBdCB0aGlzIHBvaW50LCB0aGUgZWZm ZWN0aXZlIHJldHVybiB2YWx1ZSBpcw0KPiBpbiBSQlguICBJZiB0aGVyZSBpcyBubyBjYWxsYmFj aywgdGhlbiByZXR1cm4gaXQuIg0KPiANCj4gPiArICAgICAgIGNtb3Z6ICAgJXJieCwgJXJheA0K PiA+ICsgICAgICAganogICAgICA3Zg0KPiA+ICsgICAgICAgLyogQWxpZ24gc3RhY2sgYW5kIGNs ZWFyIFJGTEFHUy5ERiBwZXIgeDg2XzY0IEFCSSAqLw0KPiA+ICsgICAgICAgbW92ICAgICAlcnNw LCAlcmJ4DQo+IA0KPiBXaG9hLCB0aGlzIGlzIHRvbyBzdWJ0bGUgaGVyZS4gIENhbiB5b3UgdXBk YXRlIHRoZSBjb21tZW50IHRvIGNsYXJpZnkNCj4gdGhhdCB0aGUgdVJTUCB2YWx1ZSBzZXQgYnkg dGhlIGVuY2xhdmUgbmVlZHMgdG8gYmUgc2F2ZWQgc28gdGhhdCB0aGUNCj4gZW5jbGF2ZSBjYW4g YmUgcmVzdW1lZCBpZiBuZWVkZWQ/DQo+IA0KPiA+ICsgICAgICAgYW5kICAgICAkLTB4MTAsICVy c3ANCj4gPiArICAgICAgIGNsZA0KPiA+ICsgICAgICAgLyogUGFyYW1ldGVycyBmb3IgKmNhbGxi YWNrICovDQo+ID4gKyAgICAgICBwdXNoICAgICVyYngNCj4gPiArICAgICAgIHB1c2ggICAgMHgx MCglcmJwKQ0KPiA+ICsgICAgICAgLyogQ2FsbCB2aWEgcmV0cG9saW5lICovDQo+ID4gKyAgICAg ICBjYWxsICAgIDQwZg0KPiA+ICsgICAgICAgLyogQ2xlYW51cCBzdGFjayAqLw0KPiA+ICsgICAg ICAgbW92ICAgICAlcmJ4LCAlcnNwDQo+IA0KPiBUbyBtZSwgIkNsZWFudXAgc3RhY2siIG1ha2Vz IG1lIHRoaW5rIHRoYXQgeW91J3JlIHJlc3RvcmluZyB0aGUgb3JpZ2luYWwNCj4gUlNQLCBidXQg eW91J3JlIGFjdHVhbGx5IGp1c3QgdW5kb2luZyBpbiB0aGUgc3RhY2sgYWxpZ25tZW50Lg0KPiBI b3cgYWJvdXQgIlVuZG8gc3RhY2sgYWxpZ25tZW50Ij8NCj4gDQo+IEJ1dCBJJ20gbm90IHNlZWlu ZyB0aGUgY29kZSB0aGF0IGNhdXNlcyBhIHJldHVybiB2YWx1ZSBSQVggPD0gMCB0byBqdXN0DQo+ IHJldHVybi4NCj4gDQo+ID4gKyAgICAgICBqbXAgICAgIDFiDQo+ID4gKzQwOiAgICAvKiByZXRw b2xpbmUgKi8NCj4gPiArICAgICAgIGNhbGwgICAgNDJmDQo+ID4gKzQxOiAgICBwYXVzZQ0KPiA+ ICsgICAgICAgbGZlbmNlDQo+ID4gKyAgICAgICBqbXAgICAgIDQxYg0KPiA+ICs0MjogICAgbW92 ICAgICAlcmF4LCAoJXJzcCkNCj4gPiArICAgICAgIHJldA0KPiA+ICsNCj4gPiArNTogICAgIC8q IEV4Y2VwdGlvbiBwYXRoICovDQo+ID4gKyAgICAgICBtb3YgICAgICQtRUZBVUxULCAlZWJ4DQo+ ID4gKyAgICAgICBzdGMNCj4gPiArICAgICAgIGptcCAgICAgM2INCj4gPiArDQo+ID4gKzY6ICAg ICAvKiBVbnN1cHBvcnRlZCBFTkNMVSBsZWFmICovDQo+ID4gKyAgICAgICBjbXAgICAgICQwLCAl ZWF4DQo+ID4gKyAgICAgICBqbGUgICAgIDdmDQo+ID4gKyAgICAgICBtb3YgICAgICQtRUlOVkFM LCAlZWF4DQo+ID4gKw0KPiA+ICs3OiAgICAgLyogRXBpbG9nICovDQo+ID4gKyAgICAgICBsZWF2 ZQ0KPiA+ICsgICAgICAgLmNmaV9kZWZfY2ZhICAgICAgICAgICAgJXJzcCwgOA0KPiA+ICAgICAg ICAgcmV0DQo+ID4gLS5wb3BzZWN0aW9uDQo+ID4gKyAgICAgICAuY2ZpX2VuZHByb2MNCj4gPg0K PiA+IC1fQVNNX1ZEU09fRVhUQUJMRV9IQU5ETEUoMWIsIDJiKQ0KPiA+ICtfQVNNX1ZEU09fRVhU QUJMRV9IQU5ETEUoMmIsIDViKQ0KPiANCj4gLS1BbmR5DQo=