From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Hubbard Subject: [PATCH 07/19] mm/gup: introduce pin_user_pages*() and FOLL_PIN Date: Sun, 24 Nov 2019 20:19:59 -0800 Message-ID: <20191125042011.3002372-8-jhubbard@nvidia.com> References: <20191125042011.3002372-1-jhubbard@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from hqemgate14.nvidia.com (hqemgate14.nvidia.com [216.228.121.143]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9B6B289DDD for ; Mon, 25 Nov 2019 04:20:14 +0000 (UTC) In-Reply-To: <20191125042011.3002372-1-jhubbard@nvidia.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Andrew Morton Cc: Michal Hocko , Jan Kara , kvm@vger.kernel.org, linux-doc@vger.kernel.org, David Airlie , Dave Chinner , dri-devel@lists.freedesktop.org, LKML , linux-mm@kvack.org, Paul Mackerras , linux-kselftest@vger.kernel.org, Ira Weiny , Jonathan Corbet , linux-rdma@vger.kernel.org, Michael Ellerman , Mike Rapoport , Christoph Hellwig , Jason Gunthorpe , Vlastimil Babka , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , linux-media@vger.kernel.org, Shuah Khan , John Hubbard , linux-block@vger.kernel.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Al Viro List-Id: dri-devel@lists.freedesktop.org SW50cm9kdWNlIHBpbl91c2VyX3BhZ2VzKigpIHZhcmlhdGlvbnMgb2YgZ2V0X3VzZXJfcGFnZXMq KCkgY2FsbHMsCmFuZCBhbHNvIHBpbl9sb25ndGVybV9wYWdlcyooKSB2YXJpYXRpb25zLgoKRm9y IG5vdywgdGhlc2UgYXJlIHBsYWNlaG9sZGVyIGNhbGxzLCB1bnRpbCB0aGUgdmFyaW91cyBjYWxs IHNpdGVzCmFyZSBjb252ZXJ0ZWQgdG8gdXNlIHRoZSBjb3JyZWN0IGdldF91c2VyX3BhZ2VzKigp IG9yCnBpbl91c2VyX3BhZ2VzKigpIEFQSS4KClRoZXNlIHZhcmlhbnRzIHdpbGwgZXZlbnR1YWxs eSBhbGwgc2V0IEZPTExfUElOLCB3aGljaCBpcyBhbHNvCmludHJvZHVjZWQsIGFuZCB0aG9yb3Vn aGx5IGRvY3VtZW50ZWQuCgogICAgcGluX3VzZXJfcGFnZXMoKQogICAgcGluX3VzZXJfcGFnZXNf cmVtb3RlKCkKICAgIHBpbl91c2VyX3BhZ2VzX2Zhc3QoKQoKQWxsIHBhZ2VzIHRoYXQgYXJlIHBp bm5lZCB2aWEgdGhlIGFib3ZlIGNhbGxzLCBtdXN0IGJlIHVucGlubmVkIHZpYQpwdXRfdXNlcl9w YWdlKCkuCgpUaGUgdW5kZXJseWluZyBydWxlcyBhcmU6CgoqIEZPTExfUElOIGlzIGEgZ3VwLWlu dGVybmFsIGZsYWcsIHNvIHRoZSBjYWxsIHNpdGVzIHNob3VsZCBub3QgZGlyZWN0bHkKc2V0IGl0 LiBUaGF0IGJlaGF2aW9yIGlzIGVuZm9yY2VkIHdpdGggYXNzZXJ0aW9ucy4KCiogQ2FsbCBzaXRl cyB0aGF0IHdhbnQgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IGFyZSBnb2luZyB0byBkbyBEaXJlY3RJ TwogICgiRElPIikgb3Igc29tZXRoaW5nIHdpdGggc2ltaWxhciBjaGFyYWN0ZXJpc3RpY3MsIHNo b3VsZCBjYWxsIGEKICBnZXRfdXNlcl9wYWdlcygpLWxpa2Ugd3JhcHBlciBjYWxsIHRoYXQgc2V0 cyBGT0xMX1BJTi4gVGhlc2Ugd3JhcHBlcnMKICB3aWxsOgogICAgICAgICogU3RhcnQgd2l0aCAi cGluX3VzZXJfcGFnZXMiIGluc3RlYWQgb2YgImdldF91c2VyX3BhZ2VzIi4gVGhhdAogICAgICAg ICAgbWFrZXMgaXQgZWFzeSB0byBmaW5kIGFuZCBhdWRpdCB0aGUgY2FsbCBzaXRlcy4KICAgICAg ICAqIFNldCBGT0xMX1BJTgoKKiBGb3IgcGFnZXMgdGhhdCBhcmUgcmVjZWl2ZWQgdmlhIEZPTExf UElOLCB0aG9zZSBwYWdlcyBtdXN0IGJlIHJldHVybmVkCiAgdmlhIHB1dF91c2VyX3BhZ2UoKS4K ClRoYW5rcyB0byBKYW4gS2FyYSBhbmQgVmxhc3RpbWlsIEJhYmthIGZvciBleHBsYWluaW5nIHRo ZSA0IGNhc2VzCmluIHRoaXMgZG9jdW1lbnRhdGlvbi4gKEkndmUgcmV3b3JkZWQgaXQgYW5kIGV4 cGFuZGVkIHVwb24gaXQuKQoKUmV2aWV3ZWQtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+ClJl dmlld2VkLWJ5OiBNaWtlIFJhcG9wb3J0IDxycHB0QGxpbnV4LmlibS5jb20+ICAjIERvY3VtZW50 YXRpb24KUmV2aWV3ZWQtYnk6IErDqXLDtG1lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgpD YzogSm9uYXRoYW4gQ29yYmV0IDxjb3JiZXRAbHduLm5ldD4KQ2M6IElyYSBXZWlueSA8aXJhLndl aW55QGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBudmlk aWEuY29tPgotLS0KIERvY3VtZW50YXRpb24vY29yZS1hcGkvaW5kZXgucnN0ICAgICAgICAgIHwg ICAxICsKIERvY3VtZW50YXRpb24vY29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0IHwgMjMzICsr KysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvbGludXgvbW0uaCAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDYzICsrKystLQogbW0vZ3VwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAxNTMgKysrKysrKysrKysrLS0KIDQgZmlsZXMgY2hhbmdlZCwgNDE2IGluc2VydGlv bnMoKyksIDM0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24v Y29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9j b3JlLWFwaS9pbmRleC5yc3QgYi9Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2luZGV4LnJzdAppbmRl eCBhYjBlYWUxYzE1M2EuLjQxM2Y3ZDdjODY0MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9j b3JlLWFwaS9pbmRleC5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9pbmRleC5yc3QK QEAgLTMxLDYgKzMxLDcgQEAgQ29yZSB1dGlsaXRpZXMKICAgIGdlbmVyaWMtcmFkaXgtdHJlZQog ICAgbWVtb3J5LWFsbG9jYXRpb24KICAgIG1tLWFwaQorICAgcGluX3VzZXJfcGFnZXMKICAgIGdm cF9tYXNrLWZyb20tZnMtaW8KICAgIHRpbWVrZWVwaW5nCiAgICBib290LXRpbWUtbW0KZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vY29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0IGIvRG9jdW1l bnRhdGlvbi9jb3JlLWFwaS9waW5fdXNlcl9wYWdlcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi40ZjI2NjM3YTUwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1 bWVudGF0aW9uL2NvcmUtYXBpL3Bpbl91c2VyX3BhZ2VzLnJzdApAQCAtMCwwICsxLDIzMyBAQAor Li4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorcGluX3VzZXJfcGFnZXMoKSBhbmQg cmVsYXRlZCBjYWxscworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorCisuLiBjb250ZW50czo6IDpsb2NhbDoKKworT3ZlcnZpZXcKKz09PT09PT09 CisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOiA6Ogor CisgcGluX3VzZXJfcGFnZXMKKyBwaW5fdXNlcl9wYWdlc19mYXN0CisgcGluX3VzZXJfcGFnZXNf cmVtb3RlCisKK0Jhc2ljIGRlc2NyaXB0aW9uIG9mIEZPTExfUElOCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorCitGT0xMX1BJTiBhbmQgRk9MTF9MT05HVEVSTSBhcmUgZmxhZ3MgdGhh dCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBnZXRfdXNlcl9wYWdlcyooKQorKCJndXAiKSBmYW1pbHkg b2YgZnVuY3Rpb25zLiBGT0xMX1BJTiBoYXMgc2lnbmlmaWNhbnQgaW50ZXJhY3Rpb25zIGFuZAor aW50ZXJkZXBlbmRlbmNpZXMgd2l0aCBGT0xMX0xPTkdURVJNLCBzbyBib3RoIGFyZSBjb3ZlcmVk IGhlcmUuCisKK0ZPTExfUElOIGlzIGludGVybmFsIHRvIGd1cCwgbWVhbmluZyB0aGF0IGl0IHNo b3VsZCBub3QgYXBwZWFyIGF0IHRoZSBndXAgY2FsbAorc2l0ZXMuIFRoaXMgYWxsb3dzIHRoZSBh c3NvY2lhdGVkIHdyYXBwZXIgZnVuY3Rpb25zICAocGluX3VzZXJfcGFnZXMqKCkgYW5kCitvdGhl cnMpIHRvIHNldCB0aGUgY29ycmVjdCBjb21iaW5hdGlvbiBvZiB0aGVzZSBmbGFncywgYW5kIHRv IGNoZWNrIGZvciBwcm9ibGVtcworYXMgd2VsbC4KKworRk9MTF9MT05HVEVSTSwgb24gdGhlIG90 aGVyIGhhbmQsICppcyogYWxsb3dlZCB0byBiZSBzZXQgYXQgdGhlIGd1cCBjYWxsIHNpdGVzLgor VGhpcyBpcyBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIGxhcmdlIG51bWJlciBvZiB3cmFw cGVyIGZ1bmN0aW9ucyB0byBjb3ZlcgorYWxsIGNvbWJpbmF0aW9ucyBvZiBnZXQqKCksIHBpbioo KSwgRk9MTF9MT05HVEVSTSwgYW5kIG1vcmUuIEFsc28sIHRoZQorcGluX3VzZXJfcGFnZXMqKCkg QVBJcyBhcmUgY2xlYXJseSBkaXN0aW5jdCBmcm9tIHRoZSBnZXRfdXNlcl9wYWdlcyooKSBBUElz LCBzbwordGhhdCdzIGEgbmF0dXJhbCBkaXZpZGluZyBsaW5lLCBhbmQgYSBnb29kIHBvaW50IHRv IG1ha2Ugc2VwYXJhdGUgd3JhcHBlciBjYWxscy4KK0luIG90aGVyIHdvcmRzLCB1c2UgcGluX3Vz ZXJfcGFnZXMqKCkgZm9yIERNQS1waW5uZWQgcGFnZXMsIGFuZAorZ2V0X3VzZXJfcGFnZXMqKCkg Zm9yIG90aGVyIGNhc2VzLiBUaGVyZSBhcmUgZm91ciBjYXNlcyBkZXNjcmliZWQgbGF0ZXIgb24g aW4KK3RoaXMgZG9jdW1lbnQsIHRvIGZ1cnRoZXIgY2xhcmlmeSB0aGF0IGNvbmNlcHQuCisKK0ZP TExfUElOIGFuZCBGT0xMX0dFVCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciBhIGdpdmVuIGd1 cCBjYWxsLiBIb3dldmVyLAorbXVsdGlwbGUgdGhyZWFkcyBhbmQgY2FsbCBzaXRlcyBhcmUgZnJl ZSB0byBwaW4gdGhlIHNhbWUgc3RydWN0IHBhZ2VzLCB2aWEgYm90aAorRk9MTF9QSU4gYW5kIEZP TExfR0VULiBJdCdzIGp1c3QgdGhlIGNhbGwgc2l0ZSB0aGF0IG5lZWRzIHRvIGNob29zZSBvbmUg b3IgdGhlCitvdGhlciwgbm90IHRoZSBzdHJ1Y3QgcGFnZShzKS4KKworVGhlIEZPTExfUElOIGlt cGxlbWVudGF0aW9uIGlzIG5lYXJseSB0aGUgc2FtZSBhcyBGT0xMX0dFVCwgZXhjZXB0IHRoYXQg Rk9MTF9QSU4KK3VzZXMgYSBkaWZmZXJlbnQgcmVmZXJlbmNlIGNvdW50aW5nIHRlY2huaXF1ZS4K KworRk9MTF9QSU4gaXMgYSBwcmVyZXF1aXNpdGUgdG8gRk9MTF9MT05HVEdFUk0uIEFub3RoZXIg d2F5IG9mIHNheWluZyB0aGF0IGlzLAorRk9MTF9MT05HVEVSTSBpcyBhIHNwZWNpZmljIGNhc2Us IG1vcmUgcmVzdHJpY3RpdmUgY2FzZSBvZiBGT0xMX1BJTi4KKworV2hpY2ggZmxhZ3MgYXJlIHNl dCBieSBlYWNoIHdyYXBwZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK K0ZvciB0aGVzZSBwaW5fdXNlcl9wYWdlcyooKSBmdW5jdGlvbnMsIEZPTExfUElOIGlzIE9SJ2Qg aW4gd2l0aCB3aGF0ZXZlciBndXAKK2ZsYWdzIHRoZSBjYWxsZXIgcHJvdmlkZXMuIFRoZSBjYWxs ZXIgaXMgcmVxdWlyZWQgdG8gcGFzcyBpbiBhIG5vbi1udWxsIHN0cnVjdAorcGFnZXMqIGFycmF5 LCBhbmQgdGhlIGZ1bmN0aW9uIHRoZW4gcGluIHBhZ2VzIGJ5IGluY3JlbWVudGluZyBlYWNoIGJ5 IGEgc3BlY2lhbAordmFsdWUuIEZvciBub3csIHRoYXQgdmFsdWUgaXMgKzEsIGp1c3QgbGlrZSBn ZXRfdXNlcl9wYWdlcyooKS46OgorCisgRnVuY3Rpb24KKyAtLS0tLS0tLQorIHBpbl91c2VyX3Bh Z2VzICAgICAgICAgIEZPTExfUElOIGlzIGFsd2F5cyBzZXQgaW50ZXJuYWxseSBieSB0aGlzIGZ1 bmN0aW9uLgorIHBpbl91c2VyX3BhZ2VzX2Zhc3QgICAgIEZPTExfUElOIGlzIGFsd2F5cyBzZXQg aW50ZXJuYWxseSBieSB0aGlzIGZ1bmN0aW9uLgorIHBpbl91c2VyX3BhZ2VzX3JlbW90ZSAgIEZP TExfUElOIGlzIGFsd2F5cyBzZXQgaW50ZXJuYWxseSBieSB0aGlzIGZ1bmN0aW9uLgorCitGb3Ig dGhlc2UgZ2V0X3VzZXJfcGFnZXMqKCkgZnVuY3Rpb25zLCBGT0xMX0dFVCBtaWdodCBub3QgZXZl biBiZSBzcGVjaWZpZWQuCitCZWhhdmlvciBpcyBhIGxpdHRsZSBtb3JlIGNvbXBsZXggdGhhbiBh Ym92ZS4gSWYgRk9MTF9HRVQgd2FzICpub3QqIHNwZWNpZmllZCwKK2J1dCB0aGUgY2FsbGVyIHBh c3NlZCBpbiBhIG5vbi1udWxsIHN0cnVjdCBwYWdlcyogYXJyYXksIHRoZW4gdGhlIGZ1bmN0aW9u CitzZXRzIEZPTExfR0VUIGZvciB5b3UsIGFuZCBwcm9jZWVkcyB0byBwaW4gcGFnZXMgYnkgaW5j cmVtZW50aW5nIHRoZSByZWZjb3VudAorb2YgZWFjaCBwYWdlIGJ5ICsxLjo6CisKKyBGdW5jdGlv bgorIC0tLS0tLS0tCisgZ2V0X3VzZXJfcGFnZXMgICAgICAgICAgIEZPTExfR0VUIGlzIHNvbWV0 aW1lcyBzZXQgaW50ZXJuYWxseSBieSB0aGlzIGZ1bmN0aW9uLgorIGdldF91c2VyX3BhZ2VzX2Zh c3QgICAgICBGT0xMX0dFVCBpcyBzb21ldGltZXMgc2V0IGludGVybmFsbHkgYnkgdGhpcyBmdW5j dGlvbi4KKyBnZXRfdXNlcl9wYWdlc19yZW1vdGUgICAgRk9MTF9HRVQgaXMgc29tZXRpbWVzIHNl dCBpbnRlcm5hbGx5IGJ5IHRoaXMgZnVuY3Rpb24uCisKK1RyYWNraW5nIGRtYS1waW5uZWQgcGFn ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBvZiB0aGUga2V5IGRlc2lnbiBj b25zdHJhaW50cywgYW5kIHNvbHV0aW9ucywgZm9yIHRyYWNraW5nIGRtYS1waW5uZWQKK3BhZ2Vz OgorCisqIEFuIGFjdHVhbCByZWZlcmVuY2UgY291bnQsIHBlciBzdHJ1Y3QgcGFnZSwgaXMgcmVx dWlyZWQuIFRoaXMgaXMgYmVjYXVzZQorICBtdWx0aXBsZSBwcm9jZXNzZXMgbWF5IHBpbiBhbmQg dW5waW4gYSBwYWdlLgorCisqIEZhbHNlIHBvc2l0aXZlcyAocmVwb3J0aW5nIHRoYXQgYSBwYWdl IGlzIGRtYS1waW5uZWQsIHdoZW4gaW4gZmFjdCBpdCBpcyBub3QpCisgIGFyZSBhY2NlcHRhYmxl LCBidXQgZmFsc2UgbmVnYXRpdmVzIGFyZSBub3QuCisKKyogc3RydWN0IHBhZ2UgbWF5IG5vdCBi ZSBpbmNyZWFzZWQgaW4gc2l6ZSBmb3IgdGhpcywgYW5kIGFsbCBmaWVsZHMgYXJlIGFscmVhZHkK KyAgdXNlZC4KKworKiBHaXZlbiB0aGUgYWJvdmUsIHdlIGNhbiBvdmVybG9hZCB0aGUgcGFnZS0+ X3JlZmNvdW50IGZpZWxkIGJ5IHVzaW5nLCBzb3J0IG9mLAorICB0aGUgdXBwZXIgYml0cyBpbiB0 aGF0IGZpZWxkIGZvciBhIGRtYS1waW5uZWQgY291bnQuICJTb3J0IG9mIiwgbWVhbnMgdGhhdCwK KyAgcmF0aGVyIHRoYW4gZGl2aWRpbmcgcGFnZS0+X3JlZmNvdW50IGludG8gYml0IGZpZWxkcywg d2Ugc2ltcGxlIGFkZCBhIG1lZGl1bS0KKyAgbGFyZ2UgdmFsdWUgKEdVUF9QSU5fQ09VTlRJTkdf QklBUywgaW5pdGlhbGx5IGNob3NlbiB0byBiZSAxMDI0OiAxMCBiaXRzKSB0bworICBwYWdlLT5f cmVmY291bnQuIFRoaXMgcHJvdmlkZXMgZnV6enkgYmVoYXZpb3I6IGlmIGEgcGFnZSBoYXMgZ2V0 X3BhZ2UoKSBjYWxsZWQKKyAgb24gaXQgMTAyNCB0aW1lcywgdGhlbiBpdCB3aWxsIGFwcGVhciB0 byBoYXZlIGEgc2luZ2xlIGRtYS1waW5uZWQgY291bnQuCisgIEFuZCBhZ2FpbiwgdGhhdCdzIGFj Y2VwdGFibGUuCisKK1RoaXMgYWxzbyBsZWFkcyB0byBsaW1pdGF0aW9uczogdGhlcmUgYXJlIG9u bHkgMzEtMTA9PTIxIGJpdHMgYXZhaWxhYmxlIGZvciBhCitjb3VudGVyIHRoYXQgaW5jcmVtZW50 cyAxMCBiaXRzIGF0IGEgdGltZS4KKworVE9ETzogZm9yIDFHQiBhbmQgbGFyZ2VyIGh1Z2UgcGFn ZXMsIHRoaXMgaXMgY3V0dGluZyBpdCBjbG9zZS4gVGhhdCdzIGJlY2F1c2UKK3doZW4gcGluX3Vz ZXJfcGFnZXMoKSBmb2xsb3dzIHN1Y2ggcGFnZXMsIGl0IGluY3JlbWVudHMgdGhlIGhlYWQgcGFn ZSBieSAiMSIKKyh3aGVyZSAiMSIgdXNlZCB0byBtZWFuICIrMSIgZm9yIGdldF91c2VyX3BhZ2Vz KCksIGJ1dCBub3cgbWVhbnMgIisxMDI0IiBmb3IKK3Bpbl91c2VyX3BhZ2VzKCkpIGZvciBlYWNo IHRhaWwgcGFnZS4gU28gaWYgeW91IGhhdmUgYSAxR0IgaHVnZSBwYWdlOgorCisqIFRoZXJlIGFy ZSAyNTZLICgxOCBiaXRzKSB3b3J0aCBvZiA0IEtCIHRhaWwgcGFnZXMuCisqIFRoZXJlIGFyZSAy MSBiaXRzIGF2YWlsYWJsZSB0byBjb3VudCB1cCB2aWEgR1VQX1BJTl9DT1VOVElOR19CSUFTICh0 aGF0IGlzLAorICAxMCBiaXRzIGF0IGEgdGltZSkKKyogVGhlcmUgYXJlIDIxIC0gMTggPT0gMyBi aXRzIGF2YWlsYWJsZSB0byBjb3VudC4gRXhjZXB0IHRoYXQgdGhlcmUgYXJlbid0LAorICBiZWNh dXNlIHlvdSBuZWVkIHRvIGFsbG93IGZvciBhIGZldyBub3JtYWwgZ2V0X3BhZ2UoKSBjYWxscyBv biB0aGUgaGVhZCBwYWdlLAorICBhcyB3ZWxsLiBGb3J0dW5hdGVseSwgdGhlIGFwcHJvYWNoIG9m IHVzaW5nIGFkZGl0aW9uLCByYXRoZXIgdGhhbiAiaGFyZCIKKyAgYml0ZmllbGRzLCB3aXRoaW4g cGFnZS0+X3JlZmNvdW50LCBhbGxvd3MgZm9yIHNoYXJpbmcgdGhlc2UgYml0cyBncmFjZWZ1bGx5 LgorICBCdXQgd2UncmUgc3RpbGwgbG9va2luZyBhdCBhYm91dCA4IHJlZmVyZW5jZXMuCisKK1Ro aXMsIGhvd2V2ZXIsIGlzIGEgbWlzc2luZyBmZWF0dXJlIG1vcmUgdGhhbiBhbnl0aGluZyBlbHNl LCBiZWNhdXNlIGl0J3MgZWFzaWx5Citzb2x2ZWQgYnkgYWRkcmVzc2luZyBhbiBvYnZpb3VzIGlu ZWZmaWNpZW5jeSBpbiB0aGUgb3JpZ2luYWwgZ2V0X3VzZXJfcGFnZXMoKQorYXBwcm9hY2ggb2Yg cmV0cmlldmluZyBwYWdlczogc3RvcCB0cmVhdGluZyBhbGwgdGhlIHBhZ2VzIGFzIGlmIHRoZXkg d2VyZQorUEFHRV9TSVpFLiBSZXRyaWV2ZSBodWdlIHBhZ2VzIGFzIGh1Z2UgcGFnZXMuIFRoZSBj YWxsZXJzIG5lZWQgdG8gYmUgYXdhcmUgb2YKK3RoaXMsIHNvIHNvbWUgd29yayBpcyByZXF1aXJl ZC4gT25jZSB0aGF0J3MgaW4gcGxhY2UsIHRoaXMgbGltaXRhdGlvbiBtb3N0bHkKK2Rpc2FwcGVh cnMgZnJvbSB2aWV3LCBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgYW1wbGUgcmVmY291bnRpbmcgcmFu Z2UgYXZhaWxhYmxlLgorCisqIENhbGxlcnMgbXVzdCBzcGVjaWZpY2FsbHkgcmVxdWVzdCAiZG1h LXBpbm5lZCB0cmFja2luZyBvZiBwYWdlcyIuIEluIG90aGVyCisgIHdvcmRzLCBqdXN0IGNhbGxp bmcgZ2V0X3VzZXJfcGFnZXMoKSB3aWxsIG5vdCBzdWZmaWNlOyBhIG5ldyBzZXQgb2YgZnVuY3Rp b25zLAorICBwaW5fdXNlcl9wYWdlKCkgYW5kIHJlbGF0ZWQsIG11c3QgYmUgdXNlZC4KKworRk9M TF9QSU4sIEZPTExfR0VULCBGT0xMX0xPTkdURVJNOiB3aGVuIHRvIHVzZSB3aGljaCBmbGFncwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCitUaGFua3MgdG8gSmFuIEthcmEsIFZsYXN0aW1pbCBCYWJrYSBhbmQgc2V2ZXJhbCBvdGhl ciAtbW0gcGVvcGxlLCBmb3IgZGVzY3JpYmluZwordGhlc2UgY2F0ZWdvcmllczoKKworQ0FTRSAx OiBEaXJlY3QgSU8gKERJTykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGVyZSBhcmUgR1VQ IHJlZmVyZW5jZXMgdG8gcGFnZXMgdGhhdCBhcmUgc2VydmluZworYXMgRElPIGJ1ZmZlcnMuIFRo ZXNlIGJ1ZmZlcnMgYXJlIG5lZWRlZCBmb3IgYSByZWxhdGl2ZWx5IHNob3J0IHRpbWUgKHNvIHRo ZXkKK2FyZSBub3QgImxvbmcgdGVybSIpLiBObyBzcGVjaWFsIHN5bmNocm9uaXphdGlvbiB3aXRo IHBhZ2VfbWtjbGVhbigpIG9yCittdW5tYXAoKSBpcyBwcm92aWRlZC4gVGhlcmVmb3JlLCBmbGFn cyB0byBzZXQgYXQgdGhlIGNhbGwgc2l0ZSBhcmU6IDo6CisKKyAgICBGT0xMX1BJTgorCisuLi5i dXQgcmF0aGVyIHRoYW4gc2V0dGluZyBGT0xMX1BJTiBkaXJlY3RseSwgY2FsbCBzaXRlcyBzaG91 bGQgdXNlIG9uZSBvZgordGhlIHBpbl91c2VyX3BhZ2VzKigpIHJvdXRpbmVzIHRoYXQgc2V0IEZP TExfUElOLgorCitDQVNFIDI6IFJETUEKKy0tLS0tLS0tLS0tLQorVGhlcmUgYXJlIEdVUCByZWZl cmVuY2VzIHRvIHBhZ2VzIHRoYXQgYXJlIHNlcnZpbmcgYXMgRE1BCitidWZmZXJzLiBUaGVzZSBi dWZmZXJzIGFyZSBuZWVkZWQgZm9yIGEgbG9uZyB0aW1lICgibG9uZyB0ZXJtIikuIE5vIHNwZWNp YWwKK3N5bmNocm9uaXphdGlvbiB3aXRoIHBhZ2VfbWtjbGVhbigpIG9yIG11bm1hcCgpIGlzIHBy b3ZpZGVkLiBUaGVyZWZvcmUsIGZsYWdzCit0byBzZXQgYXQgdGhlIGNhbGwgc2l0ZSBhcmU6IDo6 CisKKyAgICBGT0xMX1BJTiB8IEZPTExfTE9OR1RFUk0KKworTk9URTogU29tZSBwYWdlcywgc3Vj aCBhcyBEQVggcGFnZXMsIGNhbm5vdCBiZSBwaW5uZWQgd2l0aCBsb25ndGVybSBwaW5zLiBUaGF0 J3MKK2JlY2F1c2UgREFYIHBhZ2VzIGRvIG5vdCBoYXZlIGEgc2VwYXJhdGUgcGFnZSBjYWNoZSwg YW5kIHNvICJwaW5uaW5nIiBpbXBsaWVzCitsb2NraW5nIGRvd24gZmlsZSBzeXN0ZW0gYmxvY2tz LCB3aGljaCBpcyBub3QgKHlldCkgc3VwcG9ydGVkIGluIHRoYXQgd2F5LgorCitDQVNFIDM6IEhh cmR3YXJlIHdpdGggcGFnZSBmYXVsdGluZyBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIZXJlLCBhIHdlbGwtd3JpdHRlbiBkcml2ZXIgZG9lc24n dCBub3JtYWxseSBuZWVkIHRvIHBpbiBwYWdlcyBhdCBhbGwuIEhvd2V2ZXIsCitpZiB0aGUgZHJp dmVyIGRvZXMgY2hvb3NlIHRvIGRvIHNvLCBpdCBjYW4gcmVnaXN0ZXIgTU1VIG5vdGlmaWVycyBm b3IgdGhlIHJhbmdlLAorYW5kIHdpbGwgYmUgY2FsbGVkIGJhY2sgdXBvbiBpbnZhbGlkYXRpb24u IEVpdGhlciB3YXkgKGF2b2lkaW5nIHBhZ2UgcGlubmluZywgb3IKK3VzaW5nIE1NVSBub3RpZmll cnMgdG8gdW5waW4gdXBvbiByZXF1ZXN0KSwgdGhlcmUgaXMgcHJvcGVyIHN5bmNocm9uaXphdGlv biB3aXRoCitib3RoIGZpbGVzeXN0ZW0gYW5kIG1tIChwYWdlX21rY2xlYW4oKSwgbXVubWFwKCks IGV0YykuCisKK1RoZXJlZm9yZSwgbmVpdGhlciBmbGFnIG5lZWRzIHRvIGJlIHNldC4KKworSW4g dGhpcyBjYXNlLCBpZGVhbGx5LCBuZWl0aGVyIGdldF91c2VyX3BhZ2VzKCkgbm9yIHBpbl91c2Vy X3BhZ2VzKCkgc2hvdWxkIGJlCitjYWxsZWQuIEluc3RlYWQsIHRoZSBzb2Z0d2FyZSBzaG91bGQg YmUgd3JpdHRlbiBzbyB0aGF0IGl0IGRvZXMgbm90IHBpbiBwYWdlcy4KK1RoaXMgYWxsb3dzIG1t IGFuZCBmaWxlc3lzdGVtcyB0byBvcGVyYXRlIG1vcmUgZWZmaWNpZW50bHkgYW5kIHJlbGlhYmx5 LgorCitDQVNFIDQ6IFBpbm5pbmcgZm9yIHN0cnVjdCBwYWdlIG1hbmlwdWxhdGlvbiBvbmx5Cist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIZXJlLCBu b3JtYWwgR1VQIGNhbGxzIGFyZSBzdWZmaWNpZW50LCBzbyBuZWl0aGVyIGZsYWcgbmVlZHMgdG8g YmUgc2V0LgorCitwYWdlX2RtYV9waW5uZWQoKTogdGhlIHdob2xlIHBvaW50IG9mIHBpbm5pbmcK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgd2hv bGUgcG9pbnQgb2YgbWFya2luZyBwYWdlcyBhcyAiRE1BLXBpbm5lZCIgb3IgImd1cC1waW5uZWQi IGlzIHRvIGJlIGFibGUKK3RvIHF1ZXJ5LCAiaXMgdGhpcyBwYWdlIERNQS1waW5uZWQ/IiBUaGF0 IGFsbG93cyBjb2RlIHN1Y2ggYXMgcGFnZV9ta2NsZWFuKCkKKyhhbmQgZmlsZSBzeXN0ZW0gd3Jp dGViYWNrIGNvZGUgaW4gZ2VuZXJhbCkgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQK K3doYXQgdG8gZG8gd2hlbiBhIHBhZ2UgY2Fubm90IGJlIHVubWFwcGVkIGR1ZSB0byBzdWNoIHBp bnMuCisKK1doYXQgdG8gZG8gaW4gdGhvc2UgY2FzZXMgaXMgdGhlIHN1YmplY3Qgb2YgYSB5ZWFy cy1sb25nIHNlcmllcyBvZiBkaXNjdXNzaW9ucworYW5kIGRlYmF0ZXMgKHNlZSB0aGUgUmVmZXJl bmNlcyBhdCB0aGUgZW5kIG9mIHRoaXMgZG9jdW1lbnQpLiBJdCdzIGEgVE9ETyBpdGVtCitoZXJl OiBmaWxsIGluIHRoZSBkZXRhaWxzIG9uY2UgdGhhdCdzIHdvcmtlZCBvdXQuIE1lYW53aGlsZSwg aXQncyBzYWZlIHRvIHNheQordGhhdCBoYXZpbmcgdGhpcyBhdmFpbGFibGU6IDo6CisKKyAgICAg ICAgc3RhdGljIGlubGluZSBib29sIHBhZ2VfZG1hX3Bpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkK KworLi4uaXMgYSBwcmVyZXF1aXNpdGUgdG8gc29sdmluZyB0aGUgbG9uZy1ydW5uaW5nIGd1cCtE TUEgcHJvYmxlbS4KKworQW5vdGhlciB3YXkgb2YgdGhpbmtpbmcgYWJvdXQgRk9MTF9HRVQsIEZP TExfUElOLCBhbmQgRk9MTF9MT05HVEVSTQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBbm90aGVyIHdheSBvZiB0 aGlua2luZyBhYm91dCB0aGVzZSBmbGFncyBpcyBhcyBhIHByb2dyZXNzaW9uIG9mIHJlc3RyaWN0 aW9uczoKK0ZPTExfR0VUIGlzIGZvciBzdHJ1Y3QgcGFnZSBtYW5pcHVsYXRpb24sIHdpdGhvdXQg YWZmZWN0aW5nIHRoZSBkYXRhIHRoYXQgdGhlCitzdHJ1Y3QgcGFnZSByZWZlcnMgdG8uIEZPTExf UElOIGlzIGEgKnJlcGxhY2VtZW50KiBmb3IgRk9MTF9HRVQsIGFuZCBpcyBmb3IKK3Nob3J0IHRl cm0gcGlucyBvbiBwYWdlcyB3aG9zZSBkYXRhICp3aWxsKiBnZXQgYWNjZXNzZWQuIEFzIHN1Y2gs IEZPTExfUElOIGlzCithICJtb3JlIHNldmVyZSIgZm9ybSBvZiBwaW5uaW5nLiBBbmQgZmluYWxs eSwgRk9MTF9MT05HVEVSTSBpcyBhbiBldmVuIG1vcmUKK3Jlc3RyaWN0aXZlIGNhc2UgdGhhdCBo YXMgRk9MTF9QSU4gYXMgYSBwcmVyZXF1aXNpdGU6IHRoaXMgaXMgZm9yIHBhZ2VzIHRoYXQKK3dp bGwgYmUgcGlubmVkIGxvbmd0ZXJtLCBhbmQgd2hvc2UgZGF0YSB3aWxsIGJlIGFjY2Vzc2VkLgor CitVbml0IHRlc3RpbmcKKz09PT09PT09PT09PQorVGhpcyBmaWxlOjoKKworIHRvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL3ZtL2d1cF9iZW5jaG1hcmsuYworCitoYXMgdGhlIGZvbGxvd2luZyBuZXcg Y2FsbHMgdG8gZXhlcmNpc2UgdGhlIG5ldyBwaW4qKCkgd3JhcHBlciBmdW5jdGlvbnM6CisKKyog UElOX0ZBU1RfQkVOQ0hNQVJLICguL2d1cF9iZW5jaG1hcmsgLWEpCisqIFBJTl9MT05HVEVSTV9C RU5DSE1BUksgKC4vZ3VwX2JlbmNobWFyayAtYSkKKyogUElOX0JFTkNITUFSSyAoLi9ndXBfYmVu Y2htYXJrIC1hKQorCitZb3UgY2FuIG1vbml0b3IgaG93IG1hbnkgdG90YWwgZG1hLXBpbm5lZCBw YWdlcyBoYXZlIGJlZW4gYWNxdWlyZWQgYW5kIHJlbGVhc2VkCitzaW5jZSB0aGUgc3lzdGVtIHdh cyBib290ZWQsIHZpYSB0d28gbmV3IC9wcm9jL3Ztc3RhdCBlbnRyaWVzOiA6OgorCisgICAgL3By b2Mvdm1zdGF0L25yX2ZvbGxfcGluX3JlcXVlc3RlZAorICAgIC9wcm9jL3Ztc3RhdC9ucl9mb2xs X3Bpbl9yZXF1ZXN0ZWQKKworVGhvc2UgYXJlIGJvdGggZ29pbmcgdG8gc2hvdyB6ZXJvLCB1bmxl c3MgQ09ORklHX0RFQlVHX1ZNIGlzIHNldC4gVGhpcyBpcworYmVjYXVzZSB0aGVyZSBpcyBhIG5v dGljZWFibGUgcGVyZm9ybWFuY2UgZHJvcCBpbiBwdXRfdXNlcl9wYWdlKCksIHdoZW4gdGhleQor YXJlIGFjdGl2YXRlZC4KKworUmVmZXJlbmNlcworPT09PT09PT09PQorCisqIGBTb21lIHNsb3cg cHJvZ3Jlc3Mgb24gZ2V0X3VzZXJfcGFnZXMoKSAoQXByIDIsIDIwMTkpIDxodHRwczovL2x3bi5u ZXQvQXJ0aWNsZXMvNzg0NTc0Lz5gXworKiBgRE1BIGFuZCBnZXRfdXNlcl9wYWdlcygpIChMUEM6 IERlYyAxMiwgMjAxOCkgPGh0dHBzOi8vbHduLm5ldC9BcnRpY2xlcy83NzQ0MTEvPmBfCisqIGBU aGUgdHJvdWJsZSB3aXRoIGdldF91c2VyX3BhZ2VzKCkgKEFwciAzMCwgMjAxOCkgPGh0dHBzOi8v bHduLm5ldC9BcnRpY2xlcy83NTMwMjcvPmBfCisKK0pvaG4gSHViYmFyZCwgT2N0b2JlciwgMjAx OQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oCmlu ZGV4IGYwNjg4ZmNhMzAzOS4uNWZhYmJjNWQxMGYzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L21tLmgKKysrIGIvaW5jbHVkZS9saW51eC9tbS5oCkBAIC0xMDM5LDE2ICsxMDM5LDE0IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBwdXRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKICAqIHB1dF91c2Vy X3BhZ2UoKSAtIHJlbGVhc2UgYSBndXAtcGlubmVkIHBhZ2UKICAqIEBwYWdlOiAgICAgICAgICAg IHBvaW50ZXIgdG8gcGFnZSB0byBiZSByZWxlYXNlZAogICoKLSAqIFBhZ2VzIHRoYXQgd2VyZSBw aW5uZWQgdmlhIGdldF91c2VyX3BhZ2VzKigpIG11c3QgYmUgcmVsZWFzZWQgdmlhCi0gKiBlaXRo ZXIgcHV0X3VzZXJfcGFnZSgpLCBvciBvbmUgb2YgdGhlIHB1dF91c2VyX3BhZ2VzKigpIHJvdXRp bmVzCi0gKiBiZWxvdy4gVGhpcyBpcyBzbyB0aGF0IGV2ZW50dWFsbHksIHBhZ2VzIHRoYXQgYXJl IHBpbm5lZCB2aWEKLSAqIGdldF91c2VyX3BhZ2VzKigpIGNhbiBiZSBzZXBhcmF0ZWx5IHRyYWNr ZWQgYW5kIHVuaXF1ZWx5IGhhbmRsZWQuIEluCi0gKiBwYXJ0aWN1bGFyLCBpbnRlcmFjdGlvbnMg d2l0aCBSRE1BIGFuZCBmaWxlc3lzdGVtcyBuZWVkIHNwZWNpYWwKLSAqIGhhbmRsaW5nLgorICog UGFnZXMgdGhhdCB3ZXJlIHBpbm5lZCB2aWEgcGluX3VzZXJfcGFnZXMqKCkgbXVzdCBiZSByZWxl YXNlZCB2aWEgZWl0aGVyCisgKiBwdXRfdXNlcl9wYWdlKCksIG9yIG9uZSBvZiB0aGUgcHV0X3Vz ZXJfcGFnZXMqKCkgcm91dGluZXMuIFRoaXMgaXMgc28gdGhhdAorICogZXZlbnR1YWxseSBzdWNo IHBhZ2VzIGNhbiBiZSBzZXBhcmF0ZWx5IHRyYWNrZWQgYW5kIHVuaXF1ZWx5IGhhbmRsZWQuIElu CisgKiBwYXJ0aWN1bGFyLCBpbnRlcmFjdGlvbnMgd2l0aCBSRE1BIGFuZCBmaWxlc3lzdGVtcyBu ZWVkIHNwZWNpYWwgaGFuZGxpbmcuCiAgKgogICogcHV0X3VzZXJfcGFnZSgpIGFuZCBwdXRfcGFn ZSgpIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLCBkZXNwaXRlIHRoaXMgZWFybHkKICAqIGltcGxl bWVudGF0aW9uIHRoYXQgbWFrZXMgdGhlbSBsb29rIHRoZSBzYW1lLiBwdXRfdXNlcl9wYWdlKCkg Y2FsbHMgbXVzdAotICogYmUgcGVyZmVjdGx5IG1hdGNoZWQgdXAgd2l0aCBnZXRfdXNlcl9wYWdl KCkgY2FsbHMuCisgKiBiZSBwZXJmZWN0bHkgbWF0Y2hlZCB1cCB3aXRoIHBpbiooKSBjYWxscy4K ICAqLwogc3RhdGljIGlubGluZSB2b2lkIHB1dF91c2VyX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2Up CiB7CkBAIC0xNTA2LDkgKzE1MDQsMTYgQEAgbG9uZyBnZXRfdXNlcl9wYWdlc19yZW1vdGUoc3Ry dWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCQkJICAgIHVuc2ln bmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAJCQkgICAgdW5zaWduZWQg aW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcywKIAkJCSAgICBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKip2bWFzLCBpbnQgKmxvY2tlZCk7Citsb25nIHBpbl91c2VyX3BhZ2VzX3JlbW90 ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCisJCQkgICB1 bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAorCQkJICAgdW5zaWdu ZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcywKKwkJCSAgIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqKnZtYXMsIGludCAqbG9ja2VkKTsKIGxvbmcgZ2V0X3VzZXJfcGFnZXModW5z aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKIAkJCSAgICB1bnNpZ25l ZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAogCQkJICAgIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqKnZtYXMpOworbG9uZyBwaW5fdXNlcl9wYWdlcyh1bnNpZ25lZCBsb25nIHN0 YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAorCQkgICAgdW5zaWduZWQgaW50IGd1cF9mbGFn cywgc3RydWN0IHBhZ2UgKipwYWdlcywKKwkJICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZt YXMpOwogbG9uZyBnZXRfdXNlcl9wYWdlc19sb2NrZWQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5z aWduZWQgbG9uZyBucl9wYWdlcywKIAkJICAgIHVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVj dCBwYWdlICoqcGFnZXMsIGludCAqbG9ja2VkKTsKIGxvbmcgZ2V0X3VzZXJfcGFnZXNfdW5sb2Nr ZWQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKQEAgLTE1MTYs NiArMTUyMSw4IEBAIGxvbmcgZ2V0X3VzZXJfcGFnZXNfdW5sb2NrZWQodW5zaWduZWQgbG9uZyBz dGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKIAogaW50IGdldF91c2VyX3BhZ2VzX2Zhc3Qo dW5zaWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2VzLAogCQkJdW5zaWduZWQgaW50IGd1cF9m bGFncywgc3RydWN0IHBhZ2UgKipwYWdlcyk7CitpbnQgcGluX3VzZXJfcGFnZXNfZmFzdCh1bnNp Z25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCisJCQl1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdz LCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKTsKIAogaW50IGFjY291bnRfbG9ja2VkX3ZtKHN0cnVjdCBt bV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHBhZ2VzLCBib29sIGluYyk7CiBpbnQgX19hY2Nv dW50X2xvY2tlZF92bShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBwYWdlcywg Ym9vbCBpbmMsCkBAIC0yNTc5LDEzICsyNTg2LDE1IEBAIHN0cnVjdCBwYWdlICpmb2xsb3dfcGFn ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAogI2Rl ZmluZSBGT0xMX0FOT04JMHg4MDAwCS8qIGRvbid0IGRvIGZpbGUgbWFwcGluZ3MgKi8KICNkZWZp bmUgRk9MTF9MT05HVEVSTQkweDEwMDAwCS8qIG1hcHBpbmcgbGlmZXRpbWUgaXMgaW5kZWZpbml0 ZTogc2VlIGJlbG93ICovCiAjZGVmaW5lIEZPTExfU1BMSVRfUE1ECTB4MjAwMDAJLyogc3BsaXQg aHVnZSBwbWQgYmVmb3JlIHJldHVybmluZyAqLworI2RlZmluZSBGT0xMX1BJTgkweDQwMDAwCS8q IHBhZ2VzIG11c3QgYmUgcmVsZWFzZWQgdmlhIHB1dF91c2VyX3BhZ2UoKSAqLwogCiAvKgotICog Tk9URSBvbiBGT0xMX0xPTkdURVJNOgorICogRk9MTF9QSU4gYW5kIEZPTExfTE9OR1RFUk0gbWF5 IGJlIHVzZWQgaW4gdmFyaW91cyBjb21iaW5hdGlvbnMgd2l0aCBlYWNoCisgKiBvdGhlci4gSGVy ZSBpcyB3aGF0IHRoZXkgbWVhbiwgYW5kIGhvdyB0byB1c2UgdGhlbToKICAqCiAgKiBGT0xMX0xP TkdURVJNIGluZGljYXRlcyB0aGF0IHRoZSBwYWdlIHdpbGwgYmUgaGVsZCBmb3IgYW4gaW5kZWZp bml0ZSB0aW1lCi0gKiBwZXJpb2QgX29mdGVuXyB1bmRlciB1c2Vyc3BhY2UgY29udHJvbC4gIFRo aXMgaXMgY29udHJhc3RlZCB3aXRoCi0gKiBpb3ZfaXRlcl9nZXRfcGFnZXMoKSB3aGVyZSB1c2Fn ZXMgd2hpY2ggYXJlIHRyYW5zaWVudC4KKyAqIHBlcmlvZCBfb2Z0ZW5fIHVuZGVyIHVzZXJzcGFj ZSBjb250cm9sLiAgVGhpcyBpcyBpbiBjb250cmFzdCB0bworICogaW92X2l0ZXJfZ2V0X3BhZ2Vz KCksIHdob3NlIHVzYWdlcyBhcmUgdHJhbnNpZW50LgogICoKICAqIEZJWE1FOiBGb3IgcGFnZXMg d2hpY2ggYXJlIHBhcnQgb2YgYSBmaWxlc3lzdGVtLCBtYXBwaW5ncyBhcmUgc3ViamVjdCB0byB0 aGUKICAqIGxpZmV0aW1lIGVuZm9yY2VkIGJ5IHRoZSBmaWxlc3lzdGVtIGFuZCB3ZSBuZWVkIGd1 YXJhbnRlZXMgdGhhdCBsb25ndGVybQpAQCAtMjYwMCwxMSArMjYwOSwzOSBAQCBzdHJ1Y3QgcGFn ZSAqZm9sbG93X3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcg YWRkcmVzcywKICAqIEN1cnJlbnRseSBvbmx5IGdldF91c2VyX3BhZ2VzKCkgYW5kIGdldF91c2Vy X3BhZ2VzX2Zhc3QoKSBzdXBwb3J0IHRoaXMgZmxhZwogICogYW5kIGNhbGxzIHRvIGdldF91c2Vy X3BhZ2VzX1t1bl1sb2NrZWQgYXJlIHNwZWNpZmljYWxseSBub3QgYWxsb3dlZC4gIFRoaXMKICAq IGlzIGR1ZSB0byBhbiBpbmNvbXBhdGliaWxpdHkgd2l0aCB0aGUgRlMgREFYIGNoZWNrIGFuZAot ICogRkFVTFRfRkxBR19BTExPV19SRVRSWQorICogRkFVTFRfRkxBR19BTExPV19SRVRSWS4KICAq Ci0gKiBJbiB0aGUgQ01BIGNhc2U6IGxvbmd0ZXJtIHBpbnMgaW4gYSBDTUEgcmVnaW9uIHdvdWxk IHVubmVjZXNzYXJpbHkgZnJhZ21lbnQKLSAqIHRoYXQgcmVnaW9uLiAgQW5kIHNvIENNQSBhdHRl bXB0cyB0byBtaWdyYXRlIHRoZSBwYWdlIGJlZm9yZSBwaW5uaW5nIHdoZW4KKyAqIEluIHRoZSBD TUEgY2FzZTogbG9uZyB0ZXJtIHBpbnMgaW4gYSBDTUEgcmVnaW9uIHdvdWxkIHVubmVjZXNzYXJp bHkgZnJhZ21lbnQKKyAqIHRoYXQgcmVnaW9uLiAgQW5kIHNvLCBDTUEgYXR0ZW1wdHMgdG8gbWln cmF0ZSB0aGUgcGFnZSBiZWZvcmUgcGlubmluZywgd2hlbgogICogRk9MTF9MT05HVEVSTSBpcyBz cGVjaWZpZWQuCisgKgorICogRk9MTF9QSU4gaW5kaWNhdGVzIHRoYXQgYSBzcGVjaWFsIGtpbmQg b2YgdHJhY2tpbmcgKG5vdCBqdXN0IHBhZ2UtPl9yZWZjb3VudCwKKyAqIGJ1dCBhbiBhZGRpdGlv bmFsIHBpbiBjb3VudGluZyBzeXN0ZW0pIHdpbGwgYmUgaW52b2tlZC4gVGhpcyBpcyBpbnRlbmRl ZCBmb3IKKyAqIGFueXRoaW5nIHRoYXQgZ2V0cyBhIHBhZ2UgcmVmZXJlbmNlIGFuZCB0aGVuIHRv dWNoZXMgcGFnZSBkYXRhIChmb3IgZXhhbXBsZSwKKyAqIERpcmVjdCBJTykuIFRoaXMgbGV0cyB0 aGUgZmlsZXN5c3RlbSBrbm93IHRoYXQgc29tZSBub24tZmlsZS1zeXN0ZW0gZW50aXR5IGlzCisg KiBwb3RlbnRpYWxseSBjaGFuZ2luZyB0aGUgcGFnZXMnIGRhdGEuIEluIGNvbnRyYXN0IHRvIEZP TExfR0VUICh3aG9zZSBwYWdlcworICogYXJlIHJlbGVhc2VkIHZpYSBwdXRfcGFnZSgpKSwgRk9M TF9QSU4gcGFnZXMgbXVzdCBiZSByZWxlYXNlZCwgdWx0aW1hdGVseSwgYnkKKyAqIGEgY2FsbCB0 byBwdXRfdXNlcl9wYWdlKCkuCisgKgorICogRk9MTF9QSU4gaXMgc2ltaWxhciB0byBGT0xMX0dF VDogYm90aCBvZiB0aGVzZSBwaW4gcGFnZXMuIFRoZXkgdXNlIGRpZmZlcmVudAorICogYW5kIHNl cGFyYXRlIHJlZmNvdW50aW5nIG1lY2hhbmlzbXMsIGhvd2V2ZXIsIGFuZCB0aGF0IG1lYW5zIHRo YXQgZWFjaCBoYXMKKyAqIGl0cyBvd24gYWNxdWlyZSBhbmQgcmVsZWFzZSBtZWNoYW5pc21zOgor ICoKKyAqICAgICBGT0xMX0dFVDogZ2V0X3VzZXJfcGFnZXMqKCkgdG8gYWNxdWlyZSwgYW5kIHB1 dF9wYWdlKCkgdG8gcmVsZWFzZS4KKyAqCisgKiAgICAgRk9MTF9QSU46IHBpbl91c2VyX3BhZ2Vz KigpIHRvIGFjcXVpcmUsIGFuZCBwdXRfdXNlcl9wYWdlcyB0byByZWxlYXNlLgorICoKKyAqIEZP TExfUElOIGFuZCBGT0xMX0dFVCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciBhIGdpdmVuIGZ1 bmN0aW9uIGNhbGwuCisgKiAoVGhlIHVuZGVybHlpbmcgcGFnZXMgbWF5IGV4cGVyaWVuY2UgYm90 aCBGT0xMX0dFVC1iYXNlZCBhbmQgRk9MTF9QSU4tYmFzZWQKKyAqIGNhbGxzIGFwcGxpZWQgdG8g dGhlbSwgYW5kIHRoYXQncyBwZXJmZWN0bHkgT0suIFRoaXMgaXMgYSBjb25zdHJhaW50IG9uIHRo ZQorICogY2FsbGVycywgbm90IG9uIHRoZSBwYWdlcy4pCisgKgorICogRk9MTF9QSU4gc2hvdWxk IGJlIHNldCBpbnRlcm5hbGx5IGJ5IHRoZSBwaW5fdXNlcl9wYWdlcyooKSBBUElzLCBuZXZlcgor ICogZGlyZWN0bHkgYnkgdGhlIGNhbGxlci4gVGhhdCdzIGluIG9yZGVyIHRvIGhlbHAgYXZvaWQg bWlzbWF0Y2hlcyB3aGVuCisgKiByZWxlYXNpbmcgcGFnZXM6IGdldF91c2VyX3BhZ2VzKigpIHBh Z2VzIG11c3QgYmUgcmVsZWFzZWQgdmlhIHB1dF9wYWdlKCksCisgKiB3aGlsZSBwaW5fdXNlcl9w YWdlcyooKSBwYWdlcyBtdXN0IGJlIHJlbGVhc2VkIHZpYSBwdXRfdXNlcl9wYWdlKCkuCisgKgor ICogUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL3ZtL3Bpbl91c2VyX3BhZ2VzLnJzdCBmb3IgbW9y ZSBpbmZvcm1hdGlvbi4KICAqLwogCiBzdGF0aWMgaW5saW5lIGludCB2bV9mYXVsdF90b19lcnJu byh2bV9mYXVsdF90IHZtX2ZhdWx0LCBpbnQgZm9sbF9mbGFncykKZGlmZiAtLWdpdCBhL21tL2d1 cC5jIGIvbW0vZ3VwLmMKaW5kZXggYzBjNTY4ODhlN2NjLi5lZjFiZmQzNzRhMTEgMTAwNjQ0Ci0t LSBhL21tL2d1cC5jCisrKyBiL21tL2d1cC5jCkBAIC0yMDEsNiArMjAxLDEwIEBAIHN0YXRpYyBz dHJ1Y3QgcGFnZSAqZm9sbG93X3BhZ2VfcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAog CXNwaW5sb2NrX3QgKnB0bDsKIAlwdGVfdCAqcHRlcCwgcHRlOwogCisJLyogRk9MTF9HRVQgYW5k IEZPTExfUElOIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuICovCisJaWYgKFdBUk5fT05fT05DRSgo ZmxhZ3MgJiAoRk9MTF9QSU4gfCBGT0xMX0dFVCkpID09CisJCQkgKEZPTExfUElOIHwgRk9MTF9H RVQpKSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiByZXRyeToKIAlpZiAodW5saWtlbHko cG1kX2JhZCgqcG1kKSkpCiAJCXJldHVybiBub19wYWdlX3RhYmxlKHZtYSwgZmxhZ3MpOwpAQCAt ODE4LDcgKzgyMiw3IEBAIHN0YXRpYyBsb25nIF9fZ2V0X3VzZXJfcGFnZXMoc3RydWN0IHRhc2tf c3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCiAJc3RhcnQgPSB1bnRhZ2dlZF9h ZGRyKHN0YXJ0KTsKIAotCVZNX0JVR19PTighIXBhZ2VzICE9ICEhKGd1cF9mbGFncyAmIEZPTExf R0VUKSk7CisJVk1fQlVHX09OKCEhcGFnZXMgIT0gISEoZ3VwX2ZsYWdzICYgKEZPTExfR0VUIHwg Rk9MTF9QSU4pKSk7CiAKIAkvKgogCSAqIElmIEZPTExfRk9SQ0UgaXMgc2V0IHRoZW4gZG8gbm90 IGZvcmNlIGEgZnVsbCBmYXVsdCBhcyB0aGUgaGludGluZwpAQCAtMTA0Miw3ICsxMDQ2LDE2IEBA IHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgbG9uZyBfX2dldF91c2VyX3BhZ2VzX2xvY2tlZChzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRzaywKIAkJQlVHX09OKCpsb2NrZWQgIT0gMSk7CiAJfQogCi0JaWYg KHBhZ2VzKQorCS8qCisJICogRk9MTF9QSU4gYW5kIEZPTExfR0VUIGFyZSBtdXR1YWxseSBleGNs dXNpdmUuIFRyYWRpdGlvbmFsIGJlaGF2aW9yCisJICogaXMgdG8gc2V0IEZPTExfR0VUIGlmIHRo ZSBjYWxsZXIgd2FudHMgcGFnZXNbXSBmaWxsZWQgaW4gKGJ1dCBoYXMKKwkgKiBjYXJlbGVzc2x5 IGZhaWxlZCB0byBzcGVjaWZ5IEZPTExfR0VUKSwgc28ga2VlcCBkb2luZyB0aGF0LCBidXQgb25s eQorCSAqIGZvciBGT0xMX0dFVCwgbm90IGZvciB0aGUgbmV3ZXIgRk9MTF9QSU4uCisJICoKKwkg KiBGT0xMX1BJTiBhbHdheXMgZXhwZWN0cyBwYWdlcyB0byBiZSBub24tbnVsbCwgYnV0IG5vIG5l ZWQgdG8gYXNzZXJ0CisJICogdGhhdCBoZXJlLCBhcyBhbnkgZmFpbHVyZXMgd2lsbCBiZSBvYnZp b3VzIGVub3VnaC4KKwkgKi8KKwlpZiAocGFnZXMgJiYgIShmbGFncyAmIEZPTExfUElOKSkKIAkJ ZmxhZ3MgfD0gRk9MTF9HRVQ7CiAKIAlwYWdlc19kb25lID0gMDsKQEAgLTExODUsNiArMTE5OCwx MyBAQCBsb25nIGdldF91c2VyX3BhZ2VzX3JlbW90ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywg c3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCXVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBw YWdlICoqcGFnZXMsCiAJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMsIGludCAqbG9ja2Vk KQogeworCS8qCisJICogRk9MTF9QSU4gbXVzdCBvbmx5IGJlIHNldCBpbnRlcm5hbGx5IGJ5IHRo ZSBwaW5fdXNlcl9wYWdlcyooKSBBUElzLAorCSAqIG5ldmVyIGRpcmVjdGx5IGJ5IHRoZSBjYWxs ZXIsIHNvIGVuZm9yY2UgdGhhdCB3aXRoIGFuIGFzc2VydGlvbjoKKwkgKi8KKwlpZiAoV0FSTl9P Tl9PTkNFKGd1cF9mbGFncyAmIEZPTExfUElOKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAkvKgog CSAqIFBhcnRzIG9mIEZPTExfTE9OR1RFUk0gYmVoYXZpb3IgYXJlIGluY29tcGF0aWJsZSB3aXRo CiAJICogRkFVTFRfRkxBR19BTExPV19SRVRSWSBiZWNhdXNlIG9mIHRoZSBGUyBEQVggY2hlY2sg cmVxdWlyZW1lbnQgb24KQEAgLTE2NTQsNiArMTY3NCwxMyBAQCBsb25nIGdldF91c2VyX3BhZ2Vz KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAJCXVuc2lnbmVk IGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCiAJCXN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqKnZtYXMpCiB7CisJLyoKKwkgKiBGT0xMX1BJTiBtdXN0IG9ubHkgYmUgc2V0IGludGVy bmFsbHkgYnkgdGhlIHBpbl91c2VyX3BhZ2VzKigpIEFQSXMsCisJICogbmV2ZXIgZGlyZWN0bHkg YnkgdGhlIGNhbGxlciwgc28gZW5mb3JjZSB0aGF0IHdpdGggYW4gYXNzZXJ0aW9uOgorCSAqLwor CWlmIChXQVJOX09OX09OQ0UoZ3VwX2ZsYWdzICYgRk9MTF9QSU4pKQorCQlyZXR1cm4gLUVJTlZB TDsKKwogCXJldHVybiBfX2d1cF9sb25ndGVybV9sb2NrZWQoY3VycmVudCwgY3VycmVudC0+bW0s IHN0YXJ0LCBucl9wYWdlcywKIAkJCQkgICAgIHBhZ2VzLCB2bWFzLCBndXBfZmxhZ3MgfCBGT0xM X1RPVUNIKTsKIH0KQEAgLTIzOTIsMjkgKzI0MTksMTQgQEAgc3RhdGljIGludCBfX2d1cF9sb25n dGVybV91bmxvY2tlZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCiAJcmV0dXJu IHJldDsKIH0KIAotLyoqCi0gKiBnZXRfdXNlcl9wYWdlc19mYXN0KCkgLSBwaW4gdXNlciBwYWdl cyBpbiBtZW1vcnkKLSAqIEBzdGFydDoJc3RhcnRpbmcgdXNlciBhZGRyZXNzCi0gKiBAbnJfcGFn ZXM6CW51bWJlciBvZiBwYWdlcyBmcm9tIHN0YXJ0IHRvIHBpbgotICogQGd1cF9mbGFnczoJZmxh Z3MgbW9kaWZ5aW5nIHBpbiBiZWhhdmlvdXIKLSAqIEBwYWdlczoJYXJyYXkgdGhhdCByZWNlaXZl cyBwb2ludGVycyB0byB0aGUgcGFnZXMgcGlubmVkLgotICoJCVNob3VsZCBiZSBhdCBsZWFzdCBu cl9wYWdlcyBsb25nLgotICoKLSAqIEF0dGVtcHQgdG8gcGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5 IHdpdGhvdXQgdGFraW5nIG1tLT5tbWFwX3NlbS4KLSAqIElmIG5vdCBzdWNjZXNzZnVsLCBpdCB3 aWxsIGZhbGwgYmFjayB0byB0YWtpbmcgdGhlIGxvY2sgYW5kCi0gKiBjYWxsaW5nIGdldF91c2Vy X3BhZ2VzKCkuCi0gKgotICogUmV0dXJucyBudW1iZXIgb2YgcGFnZXMgcGlubmVkLiBUaGlzIG1h eSBiZSBmZXdlciB0aGFuIHRoZSBudW1iZXIKLSAqIHJlcXVlc3RlZC4gSWYgbnJfcGFnZXMgaXMg MCBvciBuZWdhdGl2ZSwgcmV0dXJucyAwLiBJZiBubyBwYWdlcwotICogd2VyZSBwaW5uZWQsIHJl dHVybnMgLWVycm5vLgotICovCi1pbnQgZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25n IHN0YXJ0LCBpbnQgbnJfcGFnZXMsCi0JCQl1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3Qg cGFnZSAqKnBhZ2VzKQorc3RhdGljIGludCBpbnRlcm5hbF9nZXRfdXNlcl9wYWdlc19mYXN0KHVu c2lnbmVkIGxvbmcgc3RhcnQsIGludCBucl9wYWdlcywKKwkJCQkJdW5zaWduZWQgaW50IGd1cF9m bGFncywKKwkJCQkJc3RydWN0IHBhZ2UgKipwYWdlcykKIHsKIAl1bnNpZ25lZCBsb25nIGFkZHIs IGxlbiwgZW5kOwogCWludCBuciA9IDAsIHJldCA9IDA7CiAKLQlpZiAoV0FSTl9PTl9PTkNFKGd1 cF9mbGFncyAmIH4oRk9MTF9XUklURSB8IEZPTExfTE9OR1RFUk0pKSkKKwlpZiAoV0FSTl9PTl9P TkNFKGd1cF9mbGFncyAmIH4oRk9MTF9XUklURSB8IEZPTExfTE9OR1RFUk0gfCBGT0xMX1BJTikp KQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXN0YXJ0ID0gdW50YWdnZWRfYWRkcihzdGFydCkgJiBQ QUdFX01BU0s7CkBAIC0yNDU0LDQgKzI0NjYsMTAzIEBAIGludCBnZXRfdXNlcl9wYWdlc19mYXN0 KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGludCBucl9wYWdlcywKIAogCXJldHVybiByZXQ7CiB9CisK Ky8qKgorICogZ2V0X3VzZXJfcGFnZXNfZmFzdCgpIC0gcGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5 CisgKiBAc3RhcnQ6CXN0YXJ0aW5nIHVzZXIgYWRkcmVzcworICogQG5yX3BhZ2VzOgludW1iZXIg b2YgcGFnZXMgZnJvbSBzdGFydCB0byBwaW4KKyAqIEBndXBfZmxhZ3M6CWZsYWdzIG1vZGlmeWlu ZyBwaW4gYmVoYXZpb3VyCisgKiBAcGFnZXM6CWFycmF5IHRoYXQgcmVjZWl2ZXMgcG9pbnRlcnMg dG8gdGhlIHBhZ2VzIHBpbm5lZC4KKyAqCQlTaG91bGQgYmUgYXQgbGVhc3QgbnJfcGFnZXMgbG9u Zy4KKyAqCisgKiBBdHRlbXB0IHRvIHBpbiB1c2VyIHBhZ2VzIGluIG1lbW9yeSB3aXRob3V0IHRh a2luZyBtbS0+bW1hcF9zZW0uCisgKiBJZiBub3Qgc3VjY2Vzc2Z1bCwgaXQgd2lsbCBmYWxsIGJh Y2sgdG8gdGFraW5nIHRoZSBsb2NrIGFuZAorICogY2FsbGluZyBnZXRfdXNlcl9wYWdlcygpLgor ICoKKyAqIFJldHVybnMgbnVtYmVyIG9mIHBhZ2VzIHBpbm5lZC4gVGhpcyBtYXkgYmUgZmV3ZXIg dGhhbiB0aGUgbnVtYmVyIHJlcXVlc3RlZC4KKyAqIElmIG5yX3BhZ2VzIGlzIDAgb3IgbmVnYXRp dmUsIHJldHVybnMgMC4gSWYgbm8gcGFnZXMgd2VyZSBwaW5uZWQsIHJldHVybnMKKyAqIC1lcnJu by4KKyAqLworaW50IGdldF91c2VyX3BhZ2VzX2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwgaW50 IG5yX3BhZ2VzLAorCQkJdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdl cykKK3sKKwkvKgorCSAqIEZPTExfUElOIG11c3Qgb25seSBiZSBzZXQgaW50ZXJuYWxseSBieSB0 aGUgcGluX3VzZXJfcGFnZXMqKCkgQVBJcywKKwkgKiBuZXZlciBkaXJlY3RseSBieSB0aGUgY2Fs bGVyLCBzbyBlbmZvcmNlIHRoYXQ6CisJICovCisJaWYgKFdBUk5fT05fT05DRShndXBfZmxhZ3Mg JiBGT0xMX1BJTikpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIGludGVybmFsX2dldF91 c2VyX3BhZ2VzX2Zhc3Qoc3RhcnQsIG5yX3BhZ2VzLCBndXBfZmxhZ3MsIHBhZ2VzKTsKK30KIEVY UE9SVF9TWU1CT0xfR1BMKGdldF91c2VyX3BhZ2VzX2Zhc3QpOworCisvKioKKyAqIHBpbl91c2Vy X3BhZ2VzX2Zhc3QoKSAtIHBpbiB1c2VyIHBhZ2VzIGluIG1lbW9yeSB3aXRob3V0IHRha2luZyBs b2NrcworICoKKyAqIEZvciBub3csIHRoaXMgaXMgYSBwbGFjZWhvbGRlciBmdW5jdGlvbiwgdW50 aWwgdmFyaW91cyBjYWxsIHNpdGVzIGFyZQorICogY29udmVydGVkIHRvIHVzZSB0aGUgY29ycmVj dCBnZXRfdXNlcl9wYWdlcyooKSBvciBwaW5fdXNlcl9wYWdlcyooKSBBUEkuIFNvLAorICogdGhp cyBpcyBpZGVudGljYWwgdG8gZ2V0X3VzZXJfcGFnZXNfZmFzdCgpLgorICoKKyAqIFRoaXMgaXMg aW50ZW5kZWQgZm9yIENhc2UgMSAoRElPKSBpbiBEb2N1bWVudGF0aW9uL3ZtL3Bpbl91c2VyX3Bh Z2VzLnJzdC4gSXQKKyAqIGlzIE5PVCBpbnRlbmRlZCBmb3IgQ2FzZSAyIChSRE1BOiBsb25nLXRl cm0gcGlucykuCisgKi8KK2ludCBwaW5fdXNlcl9wYWdlc19mYXN0KHVuc2lnbmVkIGxvbmcgc3Rh cnQsIGludCBucl9wYWdlcywKKwkJCXVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdl ICoqcGFnZXMpCit7CisJLyoKKwkgKiBUaGlzIGlzIGEgcGxhY2Vob2xkZXIsIHVudGlsIHRoZSBw aW4gZnVuY3Rpb25hbGl0eSBpcyBhY3RpdmF0ZWQuCisJICogVW50aWwgdGhlbiwganVzdCBiZWhh dmUgbGlrZSB0aGUgY29ycmVzcG9uZGluZyBnZXRfdXNlcl9wYWdlcyooKQorCSAqIHJvdXRpbmUu CisJICovCisJcmV0dXJuIGdldF91c2VyX3BhZ2VzX2Zhc3Qoc3RhcnQsIG5yX3BhZ2VzLCBndXBf ZmxhZ3MsIHBhZ2VzKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHBpbl91c2VyX3BhZ2VzX2Zhc3Qp OworCisvKioKKyAqIHBpbl91c2VyX3BhZ2VzX3JlbW90ZSgpIC0gcGluIHBhZ2VzIG9mIGEgcmVt b3RlIHByb2Nlc3MgKHRhc2sgIT0gY3VycmVudCkKKyAqCisgKiBGb3Igbm93LCB0aGlzIGlzIGEg cGxhY2Vob2xkZXIgZnVuY3Rpb24sIHVudGlsIHZhcmlvdXMgY2FsbCBzaXRlcyBhcmUKKyAqIGNv bnZlcnRlZCB0byB1c2UgdGhlIGNvcnJlY3QgZ2V0X3VzZXJfcGFnZXMqKCkgb3IgcGluX3VzZXJf cGFnZXMqKCkgQVBJLiBTbywKKyAqIHRoaXMgaXMgaWRlbnRpY2FsIHRvIGdldF91c2VyX3BhZ2Vz X3JlbW90ZSgpLgorICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQgZm9yIENhc2UgMSAoRElPKSBpbiBE b2N1bWVudGF0aW9uL3ZtL3Bpbl91c2VyX3BhZ2VzLnJzdC4gSXQKKyAqIGlzIE5PVCBpbnRlbmRl ZCBmb3IgQ2FzZSAyIChSRE1BOiBsb25nLXRlcm0gcGlucykuCisgKi8KK2xvbmcgcGluX3VzZXJf cGFnZXNfcmVtb3RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICpt bSwKKwkJCSAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCisJ CQkgICB1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAorCQkJICAg c3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1hcywgaW50ICpsb2NrZWQpCit7CisJLyoKKwkgKiBU aGlzIGlzIGEgcGxhY2Vob2xkZXIsIHVudGlsIHRoZSBwaW4gZnVuY3Rpb25hbGl0eSBpcyBhY3Rp dmF0ZWQuCisJICogVW50aWwgdGhlbiwganVzdCBiZWhhdmUgbGlrZSB0aGUgY29ycmVzcG9uZGlu ZyBnZXRfdXNlcl9wYWdlcyooKQorCSAqIHJvdXRpbmUuCisJICovCisJcmV0dXJuIGdldF91c2Vy X3BhZ2VzX3JlbW90ZSh0c2ssIG1tLCBzdGFydCwgbnJfcGFnZXMsIGd1cF9mbGFncywgcGFnZXMs CisJCQkJICAgICB2bWFzLCBsb2NrZWQpOworfQorRVhQT1JUX1NZTUJPTChwaW5fdXNlcl9wYWdl c19yZW1vdGUpOworCisvKioKKyAqIHBpbl91c2VyX3BhZ2VzKCkgLSBwaW4gdXNlciBwYWdlcyBp biBtZW1vcnkgZm9yIHVzZSBieSBvdGhlciBkZXZpY2VzCisgKgorICogRm9yIG5vdywgdGhpcyBp cyBhIHBsYWNlaG9sZGVyIGZ1bmN0aW9uLCB1bnRpbCB2YXJpb3VzIGNhbGwgc2l0ZXMgYXJlCisg KiBjb252ZXJ0ZWQgdG8gdXNlIHRoZSBjb3JyZWN0IGdldF91c2VyX3BhZ2VzKigpIG9yIHBpbl91 c2VyX3BhZ2VzKigpIEFQSS4gU28sCisgKiB0aGlzIGlzIGlkZW50aWNhbCB0byBnZXRfdXNlcl9w YWdlcygpLgorICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQgZm9yIENhc2UgMSAoRElPKSBpbiBEb2N1 bWVudGF0aW9uL3ZtL3Bpbl91c2VyX3BhZ2VzLnJzdC4gSXQKKyAqIGlzIE5PVCBpbnRlbmRlZCBm b3IgQ2FzZSAyIChSRE1BOiBsb25nLXRlcm0gcGlucykuCisgKi8KK2xvbmcgcGluX3VzZXJfcGFn ZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKKwkJICAgIHVu c2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCisJCSAgICBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKip2bWFzKQoreworCS8qCisJICogVGhpcyBpcyBhIHBsYWNlaG9sZGVy LCB1bnRpbCB0aGUgcGluIGZ1bmN0aW9uYWxpdHkgaXMgYWN0aXZhdGVkLgorCSAqIFVudGlsIHRo ZW4sIGp1c3QgYmVoYXZlIGxpa2UgdGhlIGNvcnJlc3BvbmRpbmcgZ2V0X3VzZXJfcGFnZXMqKCkK KwkgKiByb3V0aW5lLgorCSAqLworCXJldHVybiBnZXRfdXNlcl9wYWdlcyhzdGFydCwgbnJfcGFn ZXMsIGd1cF9mbGFncywgcGFnZXMsIHZtYXMpOworfQorRVhQT1JUX1NZTUJPTChwaW5fdXNlcl9w YWdlcyk7Ci0tIAoyLjI0LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbA== 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, 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 799DEC43141 for ; Mon, 25 Nov 2019 04:20:22 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 5AD0920855 for ; Mon, 25 Nov 2019 04:20:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5AD0920855 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=nvidia.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9DFDC89DEA; Mon, 25 Nov 2019 04:20:18 +0000 (UTC) Received: from hqemgate14.nvidia.com (hqemgate14.nvidia.com [216.228.121.143]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9B6B289DDD for ; Mon, 25 Nov 2019 04:20:14 +0000 (UTC) Received: from hqpgpgate102.nvidia.com (Not Verified[216.228.121.13]) by hqemgate14.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Sun, 24 Nov 2019 20:20:17 -0800 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate102.nvidia.com (PGP Universal service); Sun, 24 Nov 2019 20:20:14 -0800 X-PGP-Universal: processed; by hqpgpgate102.nvidia.com on Sun, 24 Nov 2019 20:20:14 -0800 Received: from HQMAIL105.nvidia.com (172.20.187.12) by HQMAIL111.nvidia.com (172.20.187.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Mon, 25 Nov 2019 04:20:13 +0000 Received: from hqnvemgw03.nvidia.com (10.124.88.68) by HQMAIL105.nvidia.com (172.20.187.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Mon, 25 Nov 2019 04:20:13 +0000 Received: from blueforge.nvidia.com (Not Verified[10.110.48.28]) by hqnvemgw03.nvidia.com with Trustwave SEG (v7, 5, 8, 10121) id ; Sun, 24 Nov 2019 20:20:13 -0800 From: John Hubbard To: Andrew Morton Subject: [PATCH 07/19] mm/gup: introduce pin_user_pages*() and FOLL_PIN Date: Sun, 24 Nov 2019 20:19:59 -0800 Message-ID: <20191125042011.3002372-8-jhubbard@nvidia.com> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191125042011.3002372-1-jhubbard@nvidia.com> References: <20191125042011.3002372-1-jhubbard@nvidia.com> MIME-Version: 1.0 X-NVConfidentiality: public X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1574655617; bh=4V+mToQodaBHii6QPzolJvEWuvQ4rDXqIS9RxW02Hxw=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:X-NVConfidentiality: Content-Type:Content-Transfer-Encoding; b=rSWjBVN4KRjQdojnXe3kdOpOqnx9+l1YKu9qh2gUqqm7vMZ0ewV6nWSQS0otcMjjG aQ3VgsmstqGtecL+kAoAsH5g7STdnB5xitmTEOUd6LrLMBiajkq68QEFosVn8qBhbU We34YWZ4StTXKZyvPwnbKUUaAx1oNIV1RYkepWCVSABi9EG538peRFrwr1xRwKYe2p hreTCC8/TUHT1GAUMduIbg1K06gCGijGpbHnoXa4wYhz+zA14AB/+psXhNqNnipl4w opleAuq+l5wEDyWQaMG7URIlMy+v5yCO+fGgSd2i1Jxdm7MK3BdOW5FhE6YPsY738+ sgrIXHTODkYoA== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michal Hocko , Jan Kara , kvm@vger.kernel.org, linux-doc@vger.kernel.org, David Airlie , Dave Chinner , dri-devel@lists.freedesktop.org, LKML , linux-mm@kvack.org, Paul Mackerras , linux-kselftest@vger.kernel.org, Ira Weiny , Jonathan Corbet , linux-rdma@vger.kernel.org, Michael Ellerman , Mike Rapoport , Christoph Hellwig , Jason Gunthorpe , Vlastimil Babka , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , linux-media@vger.kernel.org, Shuah Khan , John Hubbard , linux-block@vger.kernel.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Al Viro , Dan Williams , Mauro Carvalho Chehab , Magnus Karlsson , Jens Axboe , netdev@vger.kernel.org, Alex Williamson , linux-fsdevel@vger.kernel.org, bpf@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, "David S . Miller" , Mike Kravetz Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Message-ID: <20191125041959.LerHfXfRjPeYLnYGsdzkDUy6cmR4XP7Ffmjkw8iz220@z> SW50cm9kdWNlIHBpbl91c2VyX3BhZ2VzKigpIHZhcmlhdGlvbnMgb2YgZ2V0X3VzZXJfcGFnZXMq KCkgY2FsbHMsCmFuZCBhbHNvIHBpbl9sb25ndGVybV9wYWdlcyooKSB2YXJpYXRpb25zLgoKRm9y IG5vdywgdGhlc2UgYXJlIHBsYWNlaG9sZGVyIGNhbGxzLCB1bnRpbCB0aGUgdmFyaW91cyBjYWxs IHNpdGVzCmFyZSBjb252ZXJ0ZWQgdG8gdXNlIHRoZSBjb3JyZWN0IGdldF91c2VyX3BhZ2VzKigp IG9yCnBpbl91c2VyX3BhZ2VzKigpIEFQSS4KClRoZXNlIHZhcmlhbnRzIHdpbGwgZXZlbnR1YWxs eSBhbGwgc2V0IEZPTExfUElOLCB3aGljaCBpcyBhbHNvCmludHJvZHVjZWQsIGFuZCB0aG9yb3Vn aGx5IGRvY3VtZW50ZWQuCgogICAgcGluX3VzZXJfcGFnZXMoKQogICAgcGluX3VzZXJfcGFnZXNf cmVtb3RlKCkKICAgIHBpbl91c2VyX3BhZ2VzX2Zhc3QoKQoKQWxsIHBhZ2VzIHRoYXQgYXJlIHBp bm5lZCB2aWEgdGhlIGFib3ZlIGNhbGxzLCBtdXN0IGJlIHVucGlubmVkIHZpYQpwdXRfdXNlcl9w YWdlKCkuCgpUaGUgdW5kZXJseWluZyBydWxlcyBhcmU6CgoqIEZPTExfUElOIGlzIGEgZ3VwLWlu dGVybmFsIGZsYWcsIHNvIHRoZSBjYWxsIHNpdGVzIHNob3VsZCBub3QgZGlyZWN0bHkKc2V0IGl0 LiBUaGF0IGJlaGF2aW9yIGlzIGVuZm9yY2VkIHdpdGggYXNzZXJ0aW9ucy4KCiogQ2FsbCBzaXRl cyB0aGF0IHdhbnQgdG8gaW5kaWNhdGUgdGhhdCB0aGV5IGFyZSBnb2luZyB0byBkbyBEaXJlY3RJ TwogICgiRElPIikgb3Igc29tZXRoaW5nIHdpdGggc2ltaWxhciBjaGFyYWN0ZXJpc3RpY3MsIHNo b3VsZCBjYWxsIGEKICBnZXRfdXNlcl9wYWdlcygpLWxpa2Ugd3JhcHBlciBjYWxsIHRoYXQgc2V0 cyBGT0xMX1BJTi4gVGhlc2Ugd3JhcHBlcnMKICB3aWxsOgogICAgICAgICogU3RhcnQgd2l0aCAi cGluX3VzZXJfcGFnZXMiIGluc3RlYWQgb2YgImdldF91c2VyX3BhZ2VzIi4gVGhhdAogICAgICAg ICAgbWFrZXMgaXQgZWFzeSB0byBmaW5kIGFuZCBhdWRpdCB0aGUgY2FsbCBzaXRlcy4KICAgICAg ICAqIFNldCBGT0xMX1BJTgoKKiBGb3IgcGFnZXMgdGhhdCBhcmUgcmVjZWl2ZWQgdmlhIEZPTExf UElOLCB0aG9zZSBwYWdlcyBtdXN0IGJlIHJldHVybmVkCiAgdmlhIHB1dF91c2VyX3BhZ2UoKS4K ClRoYW5rcyB0byBKYW4gS2FyYSBhbmQgVmxhc3RpbWlsIEJhYmthIGZvciBleHBsYWluaW5nIHRo ZSA0IGNhc2VzCmluIHRoaXMgZG9jdW1lbnRhdGlvbi4gKEkndmUgcmV3b3JkZWQgaXQgYW5kIGV4 cGFuZGVkIHVwb24gaXQuKQoKUmV2aWV3ZWQtYnk6IEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+ClJl dmlld2VkLWJ5OiBNaWtlIFJhcG9wb3J0IDxycHB0QGxpbnV4LmlibS5jb20+ICAjIERvY3VtZW50 YXRpb24KUmV2aWV3ZWQtYnk6IErDqXLDtG1lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgpD YzogSm9uYXRoYW4gQ29yYmV0IDxjb3JiZXRAbHduLm5ldD4KQ2M6IElyYSBXZWlueSA8aXJhLndl aW55QGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBudmlk aWEuY29tPgotLS0KIERvY3VtZW50YXRpb24vY29yZS1hcGkvaW5kZXgucnN0ICAgICAgICAgIHwg ICAxICsKIERvY3VtZW50YXRpb24vY29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0IHwgMjMzICsr KysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvbGludXgvbW0uaCAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDYzICsrKystLQogbW0vZ3VwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAxNTMgKysrKysrKysrKysrLS0KIDQgZmlsZXMgY2hhbmdlZCwgNDE2IGluc2VydGlv bnMoKyksIDM0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24v Y29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9j b3JlLWFwaS9pbmRleC5yc3QgYi9Eb2N1bWVudGF0aW9uL2NvcmUtYXBpL2luZGV4LnJzdAppbmRl eCBhYjBlYWUxYzE1M2EuLjQxM2Y3ZDdjODY0MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9j b3JlLWFwaS9pbmRleC5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9pbmRleC5yc3QK QEAgLTMxLDYgKzMxLDcgQEAgQ29yZSB1dGlsaXRpZXMKICAgIGdlbmVyaWMtcmFkaXgtdHJlZQog ICAgbWVtb3J5LWFsbG9jYXRpb24KICAgIG1tLWFwaQorICAgcGluX3VzZXJfcGFnZXMKICAgIGdm cF9tYXNrLWZyb20tZnMtaW8KICAgIHRpbWVrZWVwaW5nCiAgICBib290LXRpbWUtbW0KZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vY29yZS1hcGkvcGluX3VzZXJfcGFnZXMucnN0IGIvRG9jdW1l bnRhdGlvbi9jb3JlLWFwaS9waW5fdXNlcl9wYWdlcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi40ZjI2NjM3YTUwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1 bWVudGF0aW9uL2NvcmUtYXBpL3Bpbl91c2VyX3BhZ2VzLnJzdApAQCAtMCwwICsxLDIzMyBAQAor Li4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorcGluX3VzZXJfcGFnZXMoKSBhbmQg cmVsYXRlZCBjYWxscworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorCisuLiBjb250ZW50czo6IDpsb2NhbDoKKworT3ZlcnZpZXcKKz09PT09PT09 CisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOiA6Ogor CisgcGluX3VzZXJfcGFnZXMKKyBwaW5fdXNlcl9wYWdlc19mYXN0CisgcGluX3VzZXJfcGFnZXNf cmVtb3RlCisKK0Jhc2ljIGRlc2NyaXB0aW9uIG9mIEZPTExfUElOCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorCitGT0xMX1BJTiBhbmQgRk9MTF9MT05HVEVSTSBhcmUgZmxhZ3MgdGhh dCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBnZXRfdXNlcl9wYWdlcyooKQorKCJndXAiKSBmYW1pbHkg b2YgZnVuY3Rpb25zLiBGT0xMX1BJTiBoYXMgc2lnbmlmaWNhbnQgaW50ZXJhY3Rpb25zIGFuZAor aW50ZXJkZXBlbmRlbmNpZXMgd2l0aCBGT0xMX0xPTkdURVJNLCBzbyBib3RoIGFyZSBjb3ZlcmVk IGhlcmUuCisKK0ZPTExfUElOIGlzIGludGVybmFsIHRvIGd1cCwgbWVhbmluZyB0aGF0IGl0IHNo b3VsZCBub3QgYXBwZWFyIGF0IHRoZSBndXAgY2FsbAorc2l0ZXMuIFRoaXMgYWxsb3dzIHRoZSBh c3NvY2lhdGVkIHdyYXBwZXIgZnVuY3Rpb25zICAocGluX3VzZXJfcGFnZXMqKCkgYW5kCitvdGhl cnMpIHRvIHNldCB0aGUgY29ycmVjdCBjb21iaW5hdGlvbiBvZiB0aGVzZSBmbGFncywgYW5kIHRv IGNoZWNrIGZvciBwcm9ibGVtcworYXMgd2VsbC4KKworRk9MTF9MT05HVEVSTSwgb24gdGhlIG90 aGVyIGhhbmQsICppcyogYWxsb3dlZCB0byBiZSBzZXQgYXQgdGhlIGd1cCBjYWxsIHNpdGVzLgor VGhpcyBpcyBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIGxhcmdlIG51bWJlciBvZiB3cmFw cGVyIGZ1bmN0aW9ucyB0byBjb3ZlcgorYWxsIGNvbWJpbmF0aW9ucyBvZiBnZXQqKCksIHBpbioo KSwgRk9MTF9MT05HVEVSTSwgYW5kIG1vcmUuIEFsc28sIHRoZQorcGluX3VzZXJfcGFnZXMqKCkg QVBJcyBhcmUgY2xlYXJseSBkaXN0aW5jdCBmcm9tIHRoZSBnZXRfdXNlcl9wYWdlcyooKSBBUElz LCBzbwordGhhdCdzIGEgbmF0dXJhbCBkaXZpZGluZyBsaW5lLCBhbmQgYSBnb29kIHBvaW50IHRv IG1ha2Ugc2VwYXJhdGUgd3JhcHBlciBjYWxscy4KK0luIG90aGVyIHdvcmRzLCB1c2UgcGluX3Vz ZXJfcGFnZXMqKCkgZm9yIERNQS1waW5uZWQgcGFnZXMsIGFuZAorZ2V0X3VzZXJfcGFnZXMqKCkg Zm9yIG90aGVyIGNhc2VzLiBUaGVyZSBhcmUgZm91ciBjYXNlcyBkZXNjcmliZWQgbGF0ZXIgb24g aW4KK3RoaXMgZG9jdW1lbnQsIHRvIGZ1cnRoZXIgY2xhcmlmeSB0aGF0IGNvbmNlcHQuCisKK0ZP TExfUElOIGFuZCBGT0xMX0dFVCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciBhIGdpdmVuIGd1 cCBjYWxsLiBIb3dldmVyLAorbXVsdGlwbGUgdGhyZWFkcyBhbmQgY2FsbCBzaXRlcyBhcmUgZnJl ZSB0byBwaW4gdGhlIHNhbWUgc3RydWN0IHBhZ2VzLCB2aWEgYm90aAorRk9MTF9QSU4gYW5kIEZP TExfR0VULiBJdCdzIGp1c3QgdGhlIGNhbGwgc2l0ZSB0aGF0IG5lZWRzIHRvIGNob29zZSBvbmUg b3IgdGhlCitvdGhlciwgbm90IHRoZSBzdHJ1Y3QgcGFnZShzKS4KKworVGhlIEZPTExfUElOIGlt cGxlbWVudGF0aW9uIGlzIG5lYXJseSB0aGUgc2FtZSBhcyBGT0xMX0dFVCwgZXhjZXB0IHRoYXQg Rk9MTF9QSU4KK3VzZXMgYSBkaWZmZXJlbnQgcmVmZXJlbmNlIGNvdW50aW5nIHRlY2huaXF1ZS4K KworRk9MTF9QSU4gaXMgYSBwcmVyZXF1aXNpdGUgdG8gRk9MTF9MT05HVEdFUk0uIEFub3RoZXIg d2F5IG9mIHNheWluZyB0aGF0IGlzLAorRk9MTF9MT05HVEVSTSBpcyBhIHNwZWNpZmljIGNhc2Us IG1vcmUgcmVzdHJpY3RpdmUgY2FzZSBvZiBGT0xMX1BJTi4KKworV2hpY2ggZmxhZ3MgYXJlIHNl dCBieSBlYWNoIHdyYXBwZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK K0ZvciB0aGVzZSBwaW5fdXNlcl9wYWdlcyooKSBmdW5jdGlvbnMsIEZPTExfUElOIGlzIE9SJ2Qg aW4gd2l0aCB3aGF0ZXZlciBndXAKK2ZsYWdzIHRoZSBjYWxsZXIgcHJvdmlkZXMuIFRoZSBjYWxs ZXIgaXMgcmVxdWlyZWQgdG8gcGFzcyBpbiBhIG5vbi1udWxsIHN0cnVjdAorcGFnZXMqIGFycmF5 LCBhbmQgdGhlIGZ1bmN0aW9uIHRoZW4gcGluIHBhZ2VzIGJ5IGluY3JlbWVudGluZyBlYWNoIGJ5 IGEgc3BlY2lhbAordmFsdWUuIEZvciBub3csIHRoYXQgdmFsdWUgaXMgKzEsIGp1c3QgbGlrZSBn ZXRfdXNlcl9wYWdlcyooKS46OgorCisgRnVuY3Rpb24KKyAtLS0tLS0tLQorIHBpbl91c2VyX3Bh Z2VzICAgICAgICAgIEZPTExfUElOIGlzIGFsd2F5cyBzZXQgaW50ZXJuYWxseSBieSB0aGlzIGZ1 bmN0aW9uLgorIHBpbl91c2VyX3BhZ2VzX2Zhc3QgICAgIEZPTExfUElOIGlzIGFsd2F5cyBzZXQg aW50ZXJuYWxseSBieSB0aGlzIGZ1bmN0aW9uLgorIHBpbl91c2VyX3BhZ2VzX3JlbW90ZSAgIEZP TExfUElOIGlzIGFsd2F5cyBzZXQgaW50ZXJuYWxseSBieSB0aGlzIGZ1bmN0aW9uLgorCitGb3Ig dGhlc2UgZ2V0X3VzZXJfcGFnZXMqKCkgZnVuY3Rpb25zLCBGT0xMX0dFVCBtaWdodCBub3QgZXZl biBiZSBzcGVjaWZpZWQuCitCZWhhdmlvciBpcyBhIGxpdHRsZSBtb3JlIGNvbXBsZXggdGhhbiBh Ym92ZS4gSWYgRk9MTF9HRVQgd2FzICpub3QqIHNwZWNpZmllZCwKK2J1dCB0aGUgY2FsbGVyIHBh c3NlZCBpbiBhIG5vbi1udWxsIHN0cnVjdCBwYWdlcyogYXJyYXksIHRoZW4gdGhlIGZ1bmN0aW9u CitzZXRzIEZPTExfR0VUIGZvciB5b3UsIGFuZCBwcm9jZWVkcyB0byBwaW4gcGFnZXMgYnkgaW5j cmVtZW50aW5nIHRoZSByZWZjb3VudAorb2YgZWFjaCBwYWdlIGJ5ICsxLjo6CisKKyBGdW5jdGlv bgorIC0tLS0tLS0tCisgZ2V0X3VzZXJfcGFnZXMgICAgICAgICAgIEZPTExfR0VUIGlzIHNvbWV0 aW1lcyBzZXQgaW50ZXJuYWxseSBieSB0aGlzIGZ1bmN0aW9uLgorIGdldF91c2VyX3BhZ2VzX2Zh c3QgICAgICBGT0xMX0dFVCBpcyBzb21ldGltZXMgc2V0IGludGVybmFsbHkgYnkgdGhpcyBmdW5j dGlvbi4KKyBnZXRfdXNlcl9wYWdlc19yZW1vdGUgICAgRk9MTF9HRVQgaXMgc29tZXRpbWVzIHNl dCBpbnRlcm5hbGx5IGJ5IHRoaXMgZnVuY3Rpb24uCisKK1RyYWNraW5nIGRtYS1waW5uZWQgcGFn ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBvZiB0aGUga2V5IGRlc2lnbiBj b25zdHJhaW50cywgYW5kIHNvbHV0aW9ucywgZm9yIHRyYWNraW5nIGRtYS1waW5uZWQKK3BhZ2Vz OgorCisqIEFuIGFjdHVhbCByZWZlcmVuY2UgY291bnQsIHBlciBzdHJ1Y3QgcGFnZSwgaXMgcmVx dWlyZWQuIFRoaXMgaXMgYmVjYXVzZQorICBtdWx0aXBsZSBwcm9jZXNzZXMgbWF5IHBpbiBhbmQg dW5waW4gYSBwYWdlLgorCisqIEZhbHNlIHBvc2l0aXZlcyAocmVwb3J0aW5nIHRoYXQgYSBwYWdl IGlzIGRtYS1waW5uZWQsIHdoZW4gaW4gZmFjdCBpdCBpcyBub3QpCisgIGFyZSBhY2NlcHRhYmxl LCBidXQgZmFsc2UgbmVnYXRpdmVzIGFyZSBub3QuCisKKyogc3RydWN0IHBhZ2UgbWF5IG5vdCBi ZSBpbmNyZWFzZWQgaW4gc2l6ZSBmb3IgdGhpcywgYW5kIGFsbCBmaWVsZHMgYXJlIGFscmVhZHkK KyAgdXNlZC4KKworKiBHaXZlbiB0aGUgYWJvdmUsIHdlIGNhbiBvdmVybG9hZCB0aGUgcGFnZS0+ X3JlZmNvdW50IGZpZWxkIGJ5IHVzaW5nLCBzb3J0IG9mLAorICB0aGUgdXBwZXIgYml0cyBpbiB0 aGF0IGZpZWxkIGZvciBhIGRtYS1waW5uZWQgY291bnQuICJTb3J0IG9mIiwgbWVhbnMgdGhhdCwK KyAgcmF0aGVyIHRoYW4gZGl2aWRpbmcgcGFnZS0+X3JlZmNvdW50IGludG8gYml0IGZpZWxkcywg d2Ugc2ltcGxlIGFkZCBhIG1lZGl1bS0KKyAgbGFyZ2UgdmFsdWUgKEdVUF9QSU5fQ09VTlRJTkdf QklBUywgaW5pdGlhbGx5IGNob3NlbiB0byBiZSAxMDI0OiAxMCBiaXRzKSB0bworICBwYWdlLT5f cmVmY291bnQuIFRoaXMgcHJvdmlkZXMgZnV6enkgYmVoYXZpb3I6IGlmIGEgcGFnZSBoYXMgZ2V0 X3BhZ2UoKSBjYWxsZWQKKyAgb24gaXQgMTAyNCB0aW1lcywgdGhlbiBpdCB3aWxsIGFwcGVhciB0 byBoYXZlIGEgc2luZ2xlIGRtYS1waW5uZWQgY291bnQuCisgIEFuZCBhZ2FpbiwgdGhhdCdzIGFj Y2VwdGFibGUuCisKK1RoaXMgYWxzbyBsZWFkcyB0byBsaW1pdGF0aW9uczogdGhlcmUgYXJlIG9u bHkgMzEtMTA9PTIxIGJpdHMgYXZhaWxhYmxlIGZvciBhCitjb3VudGVyIHRoYXQgaW5jcmVtZW50 cyAxMCBiaXRzIGF0IGEgdGltZS4KKworVE9ETzogZm9yIDFHQiBhbmQgbGFyZ2VyIGh1Z2UgcGFn ZXMsIHRoaXMgaXMgY3V0dGluZyBpdCBjbG9zZS4gVGhhdCdzIGJlY2F1c2UKK3doZW4gcGluX3Vz ZXJfcGFnZXMoKSBmb2xsb3dzIHN1Y2ggcGFnZXMsIGl0IGluY3JlbWVudHMgdGhlIGhlYWQgcGFn ZSBieSAiMSIKKyh3aGVyZSAiMSIgdXNlZCB0byBtZWFuICIrMSIgZm9yIGdldF91c2VyX3BhZ2Vz KCksIGJ1dCBub3cgbWVhbnMgIisxMDI0IiBmb3IKK3Bpbl91c2VyX3BhZ2VzKCkpIGZvciBlYWNo IHRhaWwgcGFnZS4gU28gaWYgeW91IGhhdmUgYSAxR0IgaHVnZSBwYWdlOgorCisqIFRoZXJlIGFy ZSAyNTZLICgxOCBiaXRzKSB3b3J0aCBvZiA0IEtCIHRhaWwgcGFnZXMuCisqIFRoZXJlIGFyZSAy MSBiaXRzIGF2YWlsYWJsZSB0byBjb3VudCB1cCB2aWEgR1VQX1BJTl9DT1VOVElOR19CSUFTICh0 aGF0IGlzLAorICAxMCBiaXRzIGF0IGEgdGltZSkKKyogVGhlcmUgYXJlIDIxIC0gMTggPT0gMyBi aXRzIGF2YWlsYWJsZSB0byBjb3VudC4gRXhjZXB0IHRoYXQgdGhlcmUgYXJlbid0LAorICBiZWNh dXNlIHlvdSBuZWVkIHRvIGFsbG93IGZvciBhIGZldyBub3JtYWwgZ2V0X3BhZ2UoKSBjYWxscyBv biB0aGUgaGVhZCBwYWdlLAorICBhcyB3ZWxsLiBGb3J0dW5hdGVseSwgdGhlIGFwcHJvYWNoIG9m IHVzaW5nIGFkZGl0aW9uLCByYXRoZXIgdGhhbiAiaGFyZCIKKyAgYml0ZmllbGRzLCB3aXRoaW4g cGFnZS0+X3JlZmNvdW50LCBhbGxvd3MgZm9yIHNoYXJpbmcgdGhlc2UgYml0cyBncmFjZWZ1bGx5 LgorICBCdXQgd2UncmUgc3RpbGwgbG9va2luZyBhdCBhYm91dCA4IHJlZmVyZW5jZXMuCisKK1Ro aXMsIGhvd2V2ZXIsIGlzIGEgbWlzc2luZyBmZWF0dXJlIG1vcmUgdGhhbiBhbnl0aGluZyBlbHNl LCBiZWNhdXNlIGl0J3MgZWFzaWx5Citzb2x2ZWQgYnkgYWRkcmVzc2luZyBhbiBvYnZpb3VzIGlu ZWZmaWNpZW5jeSBpbiB0aGUgb3JpZ2luYWwgZ2V0X3VzZXJfcGFnZXMoKQorYXBwcm9hY2ggb2Yg cmV0cmlldmluZyBwYWdlczogc3RvcCB0cmVhdGluZyBhbGwgdGhlIHBhZ2VzIGFzIGlmIHRoZXkg d2VyZQorUEFHRV9TSVpFLiBSZXRyaWV2ZSBodWdlIHBhZ2VzIGFzIGh1Z2UgcGFnZXMuIFRoZSBj YWxsZXJzIG5lZWQgdG8gYmUgYXdhcmUgb2YKK3RoaXMsIHNvIHNvbWUgd29yayBpcyByZXF1aXJl ZC4gT25jZSB0aGF0J3MgaW4gcGxhY2UsIHRoaXMgbGltaXRhdGlvbiBtb3N0bHkKK2Rpc2FwcGVh cnMgZnJvbSB2aWV3LCBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgYW1wbGUgcmVmY291bnRpbmcgcmFu Z2UgYXZhaWxhYmxlLgorCisqIENhbGxlcnMgbXVzdCBzcGVjaWZpY2FsbHkgcmVxdWVzdCAiZG1h LXBpbm5lZCB0cmFja2luZyBvZiBwYWdlcyIuIEluIG90aGVyCisgIHdvcmRzLCBqdXN0IGNhbGxp bmcgZ2V0X3VzZXJfcGFnZXMoKSB3aWxsIG5vdCBzdWZmaWNlOyBhIG5ldyBzZXQgb2YgZnVuY3Rp b25zLAorICBwaW5fdXNlcl9wYWdlKCkgYW5kIHJlbGF0ZWQsIG11c3QgYmUgdXNlZC4KKworRk9M TF9QSU4sIEZPTExfR0VULCBGT0xMX0xPTkdURVJNOiB3aGVuIHRvIHVzZSB3aGljaCBmbGFncwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCitUaGFua3MgdG8gSmFuIEthcmEsIFZsYXN0aW1pbCBCYWJrYSBhbmQgc2V2ZXJhbCBvdGhl ciAtbW0gcGVvcGxlLCBmb3IgZGVzY3JpYmluZwordGhlc2UgY2F0ZWdvcmllczoKKworQ0FTRSAx OiBEaXJlY3QgSU8gKERJTykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGVyZSBhcmUgR1VQ IHJlZmVyZW5jZXMgdG8gcGFnZXMgdGhhdCBhcmUgc2VydmluZworYXMgRElPIGJ1ZmZlcnMuIFRo ZXNlIGJ1ZmZlcnMgYXJlIG5lZWRlZCBmb3IgYSByZWxhdGl2ZWx5IHNob3J0IHRpbWUgKHNvIHRo ZXkKK2FyZSBub3QgImxvbmcgdGVybSIpLiBObyBzcGVjaWFsIHN5bmNocm9uaXphdGlvbiB3aXRo IHBhZ2VfbWtjbGVhbigpIG9yCittdW5tYXAoKSBpcyBwcm92aWRlZC4gVGhlcmVmb3JlLCBmbGFn cyB0byBzZXQgYXQgdGhlIGNhbGwgc2l0ZSBhcmU6IDo6CisKKyAgICBGT0xMX1BJTgorCisuLi5i dXQgcmF0aGVyIHRoYW4gc2V0dGluZyBGT0xMX1BJTiBkaXJlY3RseSwgY2FsbCBzaXRlcyBzaG91 bGQgdXNlIG9uZSBvZgordGhlIHBpbl91c2VyX3BhZ2VzKigpIHJvdXRpbmVzIHRoYXQgc2V0IEZP TExfUElOLgorCitDQVNFIDI6IFJETUEKKy0tLS0tLS0tLS0tLQorVGhlcmUgYXJlIEdVUCByZWZl cmVuY2VzIHRvIHBhZ2VzIHRoYXQgYXJlIHNlcnZpbmcgYXMgRE1BCitidWZmZXJzLiBUaGVzZSBi dWZmZXJzIGFyZSBuZWVkZWQgZm9yIGEgbG9uZyB0aW1lICgibG9uZyB0ZXJtIikuIE5vIHNwZWNp YWwKK3N5bmNocm9uaXphdGlvbiB3aXRoIHBhZ2VfbWtjbGVhbigpIG9yIG11bm1hcCgpIGlzIHBy b3ZpZGVkLiBUaGVyZWZvcmUsIGZsYWdzCit0byBzZXQgYXQgdGhlIGNhbGwgc2l0ZSBhcmU6IDo6 CisKKyAgICBGT0xMX1BJTiB8IEZPTExfTE9OR1RFUk0KKworTk9URTogU29tZSBwYWdlcywgc3Vj aCBhcyBEQVggcGFnZXMsIGNhbm5vdCBiZSBwaW5uZWQgd2l0aCBsb25ndGVybSBwaW5zLiBUaGF0 J3MKK2JlY2F1c2UgREFYIHBhZ2VzIGRvIG5vdCBoYXZlIGEgc2VwYXJhdGUgcGFnZSBjYWNoZSwg YW5kIHNvICJwaW5uaW5nIiBpbXBsaWVzCitsb2NraW5nIGRvd24gZmlsZSBzeXN0ZW0gYmxvY2tz LCB3aGljaCBpcyBub3QgKHlldCkgc3VwcG9ydGVkIGluIHRoYXQgd2F5LgorCitDQVNFIDM6IEhh cmR3YXJlIHdpdGggcGFnZSBmYXVsdGluZyBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIZXJlLCBhIHdlbGwtd3JpdHRlbiBkcml2ZXIgZG9lc24n dCBub3JtYWxseSBuZWVkIHRvIHBpbiBwYWdlcyBhdCBhbGwuIEhvd2V2ZXIsCitpZiB0aGUgZHJp dmVyIGRvZXMgY2hvb3NlIHRvIGRvIHNvLCBpdCBjYW4gcmVnaXN0ZXIgTU1VIG5vdGlmaWVycyBm b3IgdGhlIHJhbmdlLAorYW5kIHdpbGwgYmUgY2FsbGVkIGJhY2sgdXBvbiBpbnZhbGlkYXRpb24u IEVpdGhlciB3YXkgKGF2b2lkaW5nIHBhZ2UgcGlubmluZywgb3IKK3VzaW5nIE1NVSBub3RpZmll cnMgdG8gdW5waW4gdXBvbiByZXF1ZXN0KSwgdGhlcmUgaXMgcHJvcGVyIHN5bmNocm9uaXphdGlv biB3aXRoCitib3RoIGZpbGVzeXN0ZW0gYW5kIG1tIChwYWdlX21rY2xlYW4oKSwgbXVubWFwKCks IGV0YykuCisKK1RoZXJlZm9yZSwgbmVpdGhlciBmbGFnIG5lZWRzIHRvIGJlIHNldC4KKworSW4g dGhpcyBjYXNlLCBpZGVhbGx5LCBuZWl0aGVyIGdldF91c2VyX3BhZ2VzKCkgbm9yIHBpbl91c2Vy X3BhZ2VzKCkgc2hvdWxkIGJlCitjYWxsZWQuIEluc3RlYWQsIHRoZSBzb2Z0d2FyZSBzaG91bGQg YmUgd3JpdHRlbiBzbyB0aGF0IGl0IGRvZXMgbm90IHBpbiBwYWdlcy4KK1RoaXMgYWxsb3dzIG1t IGFuZCBmaWxlc3lzdGVtcyB0byBvcGVyYXRlIG1vcmUgZWZmaWNpZW50bHkgYW5kIHJlbGlhYmx5 LgorCitDQVNFIDQ6IFBpbm5pbmcgZm9yIHN0cnVjdCBwYWdlIG1hbmlwdWxhdGlvbiBvbmx5Cist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIZXJlLCBu b3JtYWwgR1VQIGNhbGxzIGFyZSBzdWZmaWNpZW50LCBzbyBuZWl0aGVyIGZsYWcgbmVlZHMgdG8g YmUgc2V0LgorCitwYWdlX2RtYV9waW5uZWQoKTogdGhlIHdob2xlIHBvaW50IG9mIHBpbm5pbmcK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgd2hv bGUgcG9pbnQgb2YgbWFya2luZyBwYWdlcyBhcyAiRE1BLXBpbm5lZCIgb3IgImd1cC1waW5uZWQi IGlzIHRvIGJlIGFibGUKK3RvIHF1ZXJ5LCAiaXMgdGhpcyBwYWdlIERNQS1waW5uZWQ/IiBUaGF0 IGFsbG93cyBjb2RlIHN1Y2ggYXMgcGFnZV9ta2NsZWFuKCkKKyhhbmQgZmlsZSBzeXN0ZW0gd3Jp dGViYWNrIGNvZGUgaW4gZ2VuZXJhbCkgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQK K3doYXQgdG8gZG8gd2hlbiBhIHBhZ2UgY2Fubm90IGJlIHVubWFwcGVkIGR1ZSB0byBzdWNoIHBp bnMuCisKK1doYXQgdG8gZG8gaW4gdGhvc2UgY2FzZXMgaXMgdGhlIHN1YmplY3Qgb2YgYSB5ZWFy cy1sb25nIHNlcmllcyBvZiBkaXNjdXNzaW9ucworYW5kIGRlYmF0ZXMgKHNlZSB0aGUgUmVmZXJl bmNlcyBhdCB0aGUgZW5kIG9mIHRoaXMgZG9jdW1lbnQpLiBJdCdzIGEgVE9ETyBpdGVtCitoZXJl OiBmaWxsIGluIHRoZSBkZXRhaWxzIG9uY2UgdGhhdCdzIHdvcmtlZCBvdXQuIE1lYW53aGlsZSwg aXQncyBzYWZlIHRvIHNheQordGhhdCBoYXZpbmcgdGhpcyBhdmFpbGFibGU6IDo6CisKKyAgICAg ICAgc3RhdGljIGlubGluZSBib29sIHBhZ2VfZG1hX3Bpbm5lZChzdHJ1Y3QgcGFnZSAqcGFnZSkK KworLi4uaXMgYSBwcmVyZXF1aXNpdGUgdG8gc29sdmluZyB0aGUgbG9uZy1ydW5uaW5nIGd1cCtE TUEgcHJvYmxlbS4KKworQW5vdGhlciB3YXkgb2YgdGhpbmtpbmcgYWJvdXQgRk9MTF9HRVQsIEZP TExfUElOLCBhbmQgRk9MTF9MT05HVEVSTQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBbm90aGVyIHdheSBvZiB0 aGlua2luZyBhYm91dCB0aGVzZSBmbGFncyBpcyBhcyBhIHByb2dyZXNzaW9uIG9mIHJlc3RyaWN0 aW9uczoKK0ZPTExfR0VUIGlzIGZvciBzdHJ1Y3QgcGFnZSBtYW5pcHVsYXRpb24sIHdpdGhvdXQg YWZmZWN0aW5nIHRoZSBkYXRhIHRoYXQgdGhlCitzdHJ1Y3QgcGFnZSByZWZlcnMgdG8uIEZPTExf UElOIGlzIGEgKnJlcGxhY2VtZW50KiBmb3IgRk9MTF9HRVQsIGFuZCBpcyBmb3IKK3Nob3J0IHRl cm0gcGlucyBvbiBwYWdlcyB3aG9zZSBkYXRhICp3aWxsKiBnZXQgYWNjZXNzZWQuIEFzIHN1Y2gs IEZPTExfUElOIGlzCithICJtb3JlIHNldmVyZSIgZm9ybSBvZiBwaW5uaW5nLiBBbmQgZmluYWxs eSwgRk9MTF9MT05HVEVSTSBpcyBhbiBldmVuIG1vcmUKK3Jlc3RyaWN0aXZlIGNhc2UgdGhhdCBo YXMgRk9MTF9QSU4gYXMgYSBwcmVyZXF1aXNpdGU6IHRoaXMgaXMgZm9yIHBhZ2VzIHRoYXQKK3dp bGwgYmUgcGlubmVkIGxvbmd0ZXJtLCBhbmQgd2hvc2UgZGF0YSB3aWxsIGJlIGFjY2Vzc2VkLgor CitVbml0IHRlc3RpbmcKKz09PT09PT09PT09PQorVGhpcyBmaWxlOjoKKworIHRvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL3ZtL2d1cF9iZW5jaG1hcmsuYworCitoYXMgdGhlIGZvbGxvd2luZyBuZXcg Y2FsbHMgdG8gZXhlcmNpc2UgdGhlIG5ldyBwaW4qKCkgd3JhcHBlciBmdW5jdGlvbnM6CisKKyog UElOX0ZBU1RfQkVOQ0hNQVJLICguL2d1cF9iZW5jaG1hcmsgLWEpCisqIFBJTl9MT05HVEVSTV9C RU5DSE1BUksgKC4vZ3VwX2JlbmNobWFyayAtYSkKKyogUElOX0JFTkNITUFSSyAoLi9ndXBfYmVu Y2htYXJrIC1hKQorCitZb3UgY2FuIG1vbml0b3IgaG93IG1hbnkgdG90YWwgZG1hLXBpbm5lZCBw YWdlcyBoYXZlIGJlZW4gYWNxdWlyZWQgYW5kIHJlbGVhc2VkCitzaW5jZSB0aGUgc3lzdGVtIHdh cyBib290ZWQsIHZpYSB0d28gbmV3IC9wcm9jL3Ztc3RhdCBlbnRyaWVzOiA6OgorCisgICAgL3By b2Mvdm1zdGF0L25yX2ZvbGxfcGluX3JlcXVlc3RlZAorICAgIC9wcm9jL3Ztc3RhdC9ucl9mb2xs X3Bpbl9yZXF1ZXN0ZWQKKworVGhvc2UgYXJlIGJvdGggZ29pbmcgdG8gc2hvdyB6ZXJvLCB1bmxl c3MgQ09ORklHX0RFQlVHX1ZNIGlzIHNldC4gVGhpcyBpcworYmVjYXVzZSB0aGVyZSBpcyBhIG5v dGljZWFibGUgcGVyZm9ybWFuY2UgZHJvcCBpbiBwdXRfdXNlcl9wYWdlKCksIHdoZW4gdGhleQor YXJlIGFjdGl2YXRlZC4KKworUmVmZXJlbmNlcworPT09PT09PT09PQorCisqIGBTb21lIHNsb3cg cHJvZ3Jlc3Mgb24gZ2V0X3VzZXJfcGFnZXMoKSAoQXByIDIsIDIwMTkpIDxodHRwczovL2x3bi5u ZXQvQXJ0aWNsZXMvNzg0NTc0Lz5gXworKiBgRE1BIGFuZCBnZXRfdXNlcl9wYWdlcygpIChMUEM6 IERlYyAxMiwgMjAxOCkgPGh0dHBzOi8vbHduLm5ldC9BcnRpY2xlcy83NzQ0MTEvPmBfCisqIGBU aGUgdHJvdWJsZSB3aXRoIGdldF91c2VyX3BhZ2VzKCkgKEFwciAzMCwgMjAxOCkgPGh0dHBzOi8v bHduLm5ldC9BcnRpY2xlcy83NTMwMjcvPmBfCisKK0pvaG4gSHViYmFyZCwgT2N0b2JlciwgMjAx OQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oCmlu ZGV4IGYwNjg4ZmNhMzAzOS4uNWZhYmJjNWQxMGYzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L21tLmgKKysrIGIvaW5jbHVkZS9saW51eC9tbS5oCkBAIC0xMDM5LDE2ICsxMDM5LDE0IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBwdXRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKICAqIHB1dF91c2Vy X3BhZ2UoKSAtIHJlbGVhc2UgYSBndXAtcGlubmVkIHBhZ2UKICAqIEBwYWdlOiAgICAgICAgICAg IHBvaW50ZXIgdG8gcGFnZSB0byBiZSByZWxlYXNlZAogICoKLSAqIFBhZ2VzIHRoYXQgd2VyZSBw aW5uZWQgdmlhIGdldF91c2VyX3BhZ2VzKigpIG11c3QgYmUgcmVsZWFzZWQgdmlhCi0gKiBlaXRo ZXIgcHV0X3VzZXJfcGFnZSgpLCBvciBvbmUgb2YgdGhlIHB1dF91c2VyX3BhZ2VzKigpIHJvdXRp bmVzCi0gKiBiZWxvdy4gVGhpcyBpcyBzbyB0aGF0IGV2ZW50dWFsbHksIHBhZ2VzIHRoYXQgYXJl IHBpbm5lZCB2aWEKLSAqIGdldF91c2VyX3BhZ2VzKigpIGNhbiBiZSBzZXBhcmF0ZWx5IHRyYWNr ZWQgYW5kIHVuaXF1ZWx5IGhhbmRsZWQuIEluCi0gKiBwYXJ0aWN1bGFyLCBpbnRlcmFjdGlvbnMg d2l0aCBSRE1BIGFuZCBmaWxlc3lzdGVtcyBuZWVkIHNwZWNpYWwKLSAqIGhhbmRsaW5nLgorICog UGFnZXMgdGhhdCB3ZXJlIHBpbm5lZCB2aWEgcGluX3VzZXJfcGFnZXMqKCkgbXVzdCBiZSByZWxl YXNlZCB2aWEgZWl0aGVyCisgKiBwdXRfdXNlcl9wYWdlKCksIG9yIG9uZSBvZiB0aGUgcHV0X3Vz ZXJfcGFnZXMqKCkgcm91dGluZXMuIFRoaXMgaXMgc28gdGhhdAorICogZXZlbnR1YWxseSBzdWNo IHBhZ2VzIGNhbiBiZSBzZXBhcmF0ZWx5IHRyYWNrZWQgYW5kIHVuaXF1ZWx5IGhhbmRsZWQuIElu CisgKiBwYXJ0aWN1bGFyLCBpbnRlcmFjdGlvbnMgd2l0aCBSRE1BIGFuZCBmaWxlc3lzdGVtcyBu ZWVkIHNwZWNpYWwgaGFuZGxpbmcuCiAgKgogICogcHV0X3VzZXJfcGFnZSgpIGFuZCBwdXRfcGFn ZSgpIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlLCBkZXNwaXRlIHRoaXMgZWFybHkKICAqIGltcGxl bWVudGF0aW9uIHRoYXQgbWFrZXMgdGhlbSBsb29rIHRoZSBzYW1lLiBwdXRfdXNlcl9wYWdlKCkg Y2FsbHMgbXVzdAotICogYmUgcGVyZmVjdGx5IG1hdGNoZWQgdXAgd2l0aCBnZXRfdXNlcl9wYWdl KCkgY2FsbHMuCisgKiBiZSBwZXJmZWN0bHkgbWF0Y2hlZCB1cCB3aXRoIHBpbiooKSBjYWxscy4K ICAqLwogc3RhdGljIGlubGluZSB2b2lkIHB1dF91c2VyX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2Up CiB7CkBAIC0xNTA2LDkgKzE1MDQsMTYgQEAgbG9uZyBnZXRfdXNlcl9wYWdlc19yZW1vdGUoc3Ry dWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCQkJICAgIHVuc2ln bmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAJCQkgICAgdW5zaWduZWQg aW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcywKIAkJCSAgICBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKip2bWFzLCBpbnQgKmxvY2tlZCk7Citsb25nIHBpbl91c2VyX3BhZ2VzX3JlbW90 ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc3RydWN0IG1tX3N0cnVjdCAqbW0sCisJCQkgICB1 bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAorCQkJICAgdW5zaWdu ZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdlcywKKwkJCSAgIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqKnZtYXMsIGludCAqbG9ja2VkKTsKIGxvbmcgZ2V0X3VzZXJfcGFnZXModW5z aWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKIAkJCSAgICB1bnNpZ25l ZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAogCQkJICAgIHN0cnVjdCB2bV9h cmVhX3N0cnVjdCAqKnZtYXMpOworbG9uZyBwaW5fdXNlcl9wYWdlcyh1bnNpZ25lZCBsb25nIHN0 YXJ0LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLAorCQkgICAgdW5zaWduZWQgaW50IGd1cF9mbGFn cywgc3RydWN0IHBhZ2UgKipwYWdlcywKKwkJICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZt YXMpOwogbG9uZyBnZXRfdXNlcl9wYWdlc19sb2NrZWQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5z aWduZWQgbG9uZyBucl9wYWdlcywKIAkJICAgIHVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVj dCBwYWdlICoqcGFnZXMsIGludCAqbG9ja2VkKTsKIGxvbmcgZ2V0X3VzZXJfcGFnZXNfdW5sb2Nr ZWQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKQEAgLTE1MTYs NiArMTUyMSw4IEBAIGxvbmcgZ2V0X3VzZXJfcGFnZXNfdW5sb2NrZWQodW5zaWduZWQgbG9uZyBz dGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKIAogaW50IGdldF91c2VyX3BhZ2VzX2Zhc3Qo dW5zaWduZWQgbG9uZyBzdGFydCwgaW50IG5yX3BhZ2VzLAogCQkJdW5zaWduZWQgaW50IGd1cF9m bGFncywgc3RydWN0IHBhZ2UgKipwYWdlcyk7CitpbnQgcGluX3VzZXJfcGFnZXNfZmFzdCh1bnNp Z25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCisJCQl1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdz LCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKTsKIAogaW50IGFjY291bnRfbG9ja2VkX3ZtKHN0cnVjdCBt bV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBsb25nIHBhZ2VzLCBib29sIGluYyk7CiBpbnQgX19hY2Nv dW50X2xvY2tlZF92bShzdHJ1Y3QgbW1fc3RydWN0ICptbSwgdW5zaWduZWQgbG9uZyBwYWdlcywg Ym9vbCBpbmMsCkBAIC0yNTc5LDEzICsyNTg2LDE1IEBAIHN0cnVjdCBwYWdlICpmb2xsb3dfcGFn ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAogI2Rl ZmluZSBGT0xMX0FOT04JMHg4MDAwCS8qIGRvbid0IGRvIGZpbGUgbWFwcGluZ3MgKi8KICNkZWZp bmUgRk9MTF9MT05HVEVSTQkweDEwMDAwCS8qIG1hcHBpbmcgbGlmZXRpbWUgaXMgaW5kZWZpbml0 ZTogc2VlIGJlbG93ICovCiAjZGVmaW5lIEZPTExfU1BMSVRfUE1ECTB4MjAwMDAJLyogc3BsaXQg aHVnZSBwbWQgYmVmb3JlIHJldHVybmluZyAqLworI2RlZmluZSBGT0xMX1BJTgkweDQwMDAwCS8q IHBhZ2VzIG11c3QgYmUgcmVsZWFzZWQgdmlhIHB1dF91c2VyX3BhZ2UoKSAqLwogCiAvKgotICog Tk9URSBvbiBGT0xMX0xPTkdURVJNOgorICogRk9MTF9QSU4gYW5kIEZPTExfTE9OR1RFUk0gbWF5 IGJlIHVzZWQgaW4gdmFyaW91cyBjb21iaW5hdGlvbnMgd2l0aCBlYWNoCisgKiBvdGhlci4gSGVy ZSBpcyB3aGF0IHRoZXkgbWVhbiwgYW5kIGhvdyB0byB1c2UgdGhlbToKICAqCiAgKiBGT0xMX0xP TkdURVJNIGluZGljYXRlcyB0aGF0IHRoZSBwYWdlIHdpbGwgYmUgaGVsZCBmb3IgYW4gaW5kZWZp bml0ZSB0aW1lCi0gKiBwZXJpb2QgX29mdGVuXyB1bmRlciB1c2Vyc3BhY2UgY29udHJvbC4gIFRo aXMgaXMgY29udHJhc3RlZCB3aXRoCi0gKiBpb3ZfaXRlcl9nZXRfcGFnZXMoKSB3aGVyZSB1c2Fn ZXMgd2hpY2ggYXJlIHRyYW5zaWVudC4KKyAqIHBlcmlvZCBfb2Z0ZW5fIHVuZGVyIHVzZXJzcGFj ZSBjb250cm9sLiAgVGhpcyBpcyBpbiBjb250cmFzdCB0bworICogaW92X2l0ZXJfZ2V0X3BhZ2Vz KCksIHdob3NlIHVzYWdlcyBhcmUgdHJhbnNpZW50LgogICoKICAqIEZJWE1FOiBGb3IgcGFnZXMg d2hpY2ggYXJlIHBhcnQgb2YgYSBmaWxlc3lzdGVtLCBtYXBwaW5ncyBhcmUgc3ViamVjdCB0byB0 aGUKICAqIGxpZmV0aW1lIGVuZm9yY2VkIGJ5IHRoZSBmaWxlc3lzdGVtIGFuZCB3ZSBuZWVkIGd1 YXJhbnRlZXMgdGhhdCBsb25ndGVybQpAQCAtMjYwMCwxMSArMjYwOSwzOSBAQCBzdHJ1Y3QgcGFn ZSAqZm9sbG93X3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcg YWRkcmVzcywKICAqIEN1cnJlbnRseSBvbmx5IGdldF91c2VyX3BhZ2VzKCkgYW5kIGdldF91c2Vy X3BhZ2VzX2Zhc3QoKSBzdXBwb3J0IHRoaXMgZmxhZwogICogYW5kIGNhbGxzIHRvIGdldF91c2Vy X3BhZ2VzX1t1bl1sb2NrZWQgYXJlIHNwZWNpZmljYWxseSBub3QgYWxsb3dlZC4gIFRoaXMKICAq IGlzIGR1ZSB0byBhbiBpbmNvbXBhdGliaWxpdHkgd2l0aCB0aGUgRlMgREFYIGNoZWNrIGFuZAot ICogRkFVTFRfRkxBR19BTExPV19SRVRSWQorICogRkFVTFRfRkxBR19BTExPV19SRVRSWS4KICAq Ci0gKiBJbiB0aGUgQ01BIGNhc2U6IGxvbmd0ZXJtIHBpbnMgaW4gYSBDTUEgcmVnaW9uIHdvdWxk IHVubmVjZXNzYXJpbHkgZnJhZ21lbnQKLSAqIHRoYXQgcmVnaW9uLiAgQW5kIHNvIENNQSBhdHRl bXB0cyB0byBtaWdyYXRlIHRoZSBwYWdlIGJlZm9yZSBwaW5uaW5nIHdoZW4KKyAqIEluIHRoZSBD TUEgY2FzZTogbG9uZyB0ZXJtIHBpbnMgaW4gYSBDTUEgcmVnaW9uIHdvdWxkIHVubmVjZXNzYXJp bHkgZnJhZ21lbnQKKyAqIHRoYXQgcmVnaW9uLiAgQW5kIHNvLCBDTUEgYXR0ZW1wdHMgdG8gbWln cmF0ZSB0aGUgcGFnZSBiZWZvcmUgcGlubmluZywgd2hlbgogICogRk9MTF9MT05HVEVSTSBpcyBz cGVjaWZpZWQuCisgKgorICogRk9MTF9QSU4gaW5kaWNhdGVzIHRoYXQgYSBzcGVjaWFsIGtpbmQg b2YgdHJhY2tpbmcgKG5vdCBqdXN0IHBhZ2UtPl9yZWZjb3VudCwKKyAqIGJ1dCBhbiBhZGRpdGlv bmFsIHBpbiBjb3VudGluZyBzeXN0ZW0pIHdpbGwgYmUgaW52b2tlZC4gVGhpcyBpcyBpbnRlbmRl ZCBmb3IKKyAqIGFueXRoaW5nIHRoYXQgZ2V0cyBhIHBhZ2UgcmVmZXJlbmNlIGFuZCB0aGVuIHRv dWNoZXMgcGFnZSBkYXRhIChmb3IgZXhhbXBsZSwKKyAqIERpcmVjdCBJTykuIFRoaXMgbGV0cyB0 aGUgZmlsZXN5c3RlbSBrbm93IHRoYXQgc29tZSBub24tZmlsZS1zeXN0ZW0gZW50aXR5IGlzCisg KiBwb3RlbnRpYWxseSBjaGFuZ2luZyB0aGUgcGFnZXMnIGRhdGEuIEluIGNvbnRyYXN0IHRvIEZP TExfR0VUICh3aG9zZSBwYWdlcworICogYXJlIHJlbGVhc2VkIHZpYSBwdXRfcGFnZSgpKSwgRk9M TF9QSU4gcGFnZXMgbXVzdCBiZSByZWxlYXNlZCwgdWx0aW1hdGVseSwgYnkKKyAqIGEgY2FsbCB0 byBwdXRfdXNlcl9wYWdlKCkuCisgKgorICogRk9MTF9QSU4gaXMgc2ltaWxhciB0byBGT0xMX0dF VDogYm90aCBvZiB0aGVzZSBwaW4gcGFnZXMuIFRoZXkgdXNlIGRpZmZlcmVudAorICogYW5kIHNl cGFyYXRlIHJlZmNvdW50aW5nIG1lY2hhbmlzbXMsIGhvd2V2ZXIsIGFuZCB0aGF0IG1lYW5zIHRo YXQgZWFjaCBoYXMKKyAqIGl0cyBvd24gYWNxdWlyZSBhbmQgcmVsZWFzZSBtZWNoYW5pc21zOgor ICoKKyAqICAgICBGT0xMX0dFVDogZ2V0X3VzZXJfcGFnZXMqKCkgdG8gYWNxdWlyZSwgYW5kIHB1 dF9wYWdlKCkgdG8gcmVsZWFzZS4KKyAqCisgKiAgICAgRk9MTF9QSU46IHBpbl91c2VyX3BhZ2Vz KigpIHRvIGFjcXVpcmUsIGFuZCBwdXRfdXNlcl9wYWdlcyB0byByZWxlYXNlLgorICoKKyAqIEZP TExfUElOIGFuZCBGT0xMX0dFVCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZvciBhIGdpdmVuIGZ1 bmN0aW9uIGNhbGwuCisgKiAoVGhlIHVuZGVybHlpbmcgcGFnZXMgbWF5IGV4cGVyaWVuY2UgYm90 aCBGT0xMX0dFVC1iYXNlZCBhbmQgRk9MTF9QSU4tYmFzZWQKKyAqIGNhbGxzIGFwcGxpZWQgdG8g dGhlbSwgYW5kIHRoYXQncyBwZXJmZWN0bHkgT0suIFRoaXMgaXMgYSBjb25zdHJhaW50IG9uIHRo ZQorICogY2FsbGVycywgbm90IG9uIHRoZSBwYWdlcy4pCisgKgorICogRk9MTF9QSU4gc2hvdWxk IGJlIHNldCBpbnRlcm5hbGx5IGJ5IHRoZSBwaW5fdXNlcl9wYWdlcyooKSBBUElzLCBuZXZlcgor ICogZGlyZWN0bHkgYnkgdGhlIGNhbGxlci4gVGhhdCdzIGluIG9yZGVyIHRvIGhlbHAgYXZvaWQg bWlzbWF0Y2hlcyB3aGVuCisgKiByZWxlYXNpbmcgcGFnZXM6IGdldF91c2VyX3BhZ2VzKigpIHBh Z2VzIG11c3QgYmUgcmVsZWFzZWQgdmlhIHB1dF9wYWdlKCksCisgKiB3aGlsZSBwaW5fdXNlcl9w YWdlcyooKSBwYWdlcyBtdXN0IGJlIHJlbGVhc2VkIHZpYSBwdXRfdXNlcl9wYWdlKCkuCisgKgor ICogUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL3ZtL3Bpbl91c2VyX3BhZ2VzLnJzdCBmb3IgbW9y ZSBpbmZvcm1hdGlvbi4KICAqLwogCiBzdGF0aWMgaW5saW5lIGludCB2bV9mYXVsdF90b19lcnJu byh2bV9mYXVsdF90IHZtX2ZhdWx0LCBpbnQgZm9sbF9mbGFncykKZGlmZiAtLWdpdCBhL21tL2d1 cC5jIGIvbW0vZ3VwLmMKaW5kZXggYzBjNTY4ODhlN2NjLi5lZjFiZmQzNzRhMTEgMTAwNjQ0Ci0t LSBhL21tL2d1cC5jCisrKyBiL21tL2d1cC5jCkBAIC0yMDEsNiArMjAxLDEwIEBAIHN0YXRpYyBz dHJ1Y3QgcGFnZSAqZm9sbG93X3BhZ2VfcHRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAog CXNwaW5sb2NrX3QgKnB0bDsKIAlwdGVfdCAqcHRlcCwgcHRlOwogCisJLyogRk9MTF9HRVQgYW5k IEZPTExfUElOIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuICovCisJaWYgKFdBUk5fT05fT05DRSgo ZmxhZ3MgJiAoRk9MTF9QSU4gfCBGT0xMX0dFVCkpID09CisJCQkgKEZPTExfUElOIHwgRk9MTF9H RVQpKSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiByZXRyeToKIAlpZiAodW5saWtlbHko cG1kX2JhZCgqcG1kKSkpCiAJCXJldHVybiBub19wYWdlX3RhYmxlKHZtYSwgZmxhZ3MpOwpAQCAt ODE4LDcgKzgyMiw3IEBAIHN0YXRpYyBsb25nIF9fZ2V0X3VzZXJfcGFnZXMoc3RydWN0IHRhc2tf c3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCiAJc3RhcnQgPSB1bnRhZ2dlZF9h ZGRyKHN0YXJ0KTsKIAotCVZNX0JVR19PTighIXBhZ2VzICE9ICEhKGd1cF9mbGFncyAmIEZPTExf R0VUKSk7CisJVk1fQlVHX09OKCEhcGFnZXMgIT0gISEoZ3VwX2ZsYWdzICYgKEZPTExfR0VUIHwg Rk9MTF9QSU4pKSk7CiAKIAkvKgogCSAqIElmIEZPTExfRk9SQ0UgaXMgc2V0IHRoZW4gZG8gbm90 IGZvcmNlIGEgZnVsbCBmYXVsdCBhcyB0aGUgaGludGluZwpAQCAtMTA0Miw3ICsxMDQ2LDE2IEBA IHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgbG9uZyBfX2dldF91c2VyX3BhZ2VzX2xvY2tlZChzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRzaywKIAkJQlVHX09OKCpsb2NrZWQgIT0gMSk7CiAJfQogCi0JaWYg KHBhZ2VzKQorCS8qCisJICogRk9MTF9QSU4gYW5kIEZPTExfR0VUIGFyZSBtdXR1YWxseSBleGNs dXNpdmUuIFRyYWRpdGlvbmFsIGJlaGF2aW9yCisJICogaXMgdG8gc2V0IEZPTExfR0VUIGlmIHRo ZSBjYWxsZXIgd2FudHMgcGFnZXNbXSBmaWxsZWQgaW4gKGJ1dCBoYXMKKwkgKiBjYXJlbGVzc2x5 IGZhaWxlZCB0byBzcGVjaWZ5IEZPTExfR0VUKSwgc28ga2VlcCBkb2luZyB0aGF0LCBidXQgb25s eQorCSAqIGZvciBGT0xMX0dFVCwgbm90IGZvciB0aGUgbmV3ZXIgRk9MTF9QSU4uCisJICoKKwkg KiBGT0xMX1BJTiBhbHdheXMgZXhwZWN0cyBwYWdlcyB0byBiZSBub24tbnVsbCwgYnV0IG5vIG5l ZWQgdG8gYXNzZXJ0CisJICogdGhhdCBoZXJlLCBhcyBhbnkgZmFpbHVyZXMgd2lsbCBiZSBvYnZp b3VzIGVub3VnaC4KKwkgKi8KKwlpZiAocGFnZXMgJiYgIShmbGFncyAmIEZPTExfUElOKSkKIAkJ ZmxhZ3MgfD0gRk9MTF9HRVQ7CiAKIAlwYWdlc19kb25lID0gMDsKQEAgLTExODUsNiArMTE5OCwx MyBAQCBsb25nIGdldF91c2VyX3BhZ2VzX3JlbW90ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywg c3RydWN0IG1tX3N0cnVjdCAqbW0sCiAJCXVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBw YWdlICoqcGFnZXMsCiAJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKnZtYXMsIGludCAqbG9ja2Vk KQogeworCS8qCisJICogRk9MTF9QSU4gbXVzdCBvbmx5IGJlIHNldCBpbnRlcm5hbGx5IGJ5IHRo ZSBwaW5fdXNlcl9wYWdlcyooKSBBUElzLAorCSAqIG5ldmVyIGRpcmVjdGx5IGJ5IHRoZSBjYWxs ZXIsIHNvIGVuZm9yY2UgdGhhdCB3aXRoIGFuIGFzc2VydGlvbjoKKwkgKi8KKwlpZiAoV0FSTl9P Tl9PTkNFKGd1cF9mbGFncyAmIEZPTExfUElOKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAkvKgog CSAqIFBhcnRzIG9mIEZPTExfTE9OR1RFUk0gYmVoYXZpb3IgYXJlIGluY29tcGF0aWJsZSB3aXRo CiAJICogRkFVTFRfRkxBR19BTExPV19SRVRSWSBiZWNhdXNlIG9mIHRoZSBGUyBEQVggY2hlY2sg cmVxdWlyZW1lbnQgb24KQEAgLTE2NTQsNiArMTY3NCwxMyBAQCBsb25nIGdldF91c2VyX3BhZ2Vz KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCiAJCXVuc2lnbmVk IGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCiAJCXN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqKnZtYXMpCiB7CisJLyoKKwkgKiBGT0xMX1BJTiBtdXN0IG9ubHkgYmUgc2V0IGludGVy bmFsbHkgYnkgdGhlIHBpbl91c2VyX3BhZ2VzKigpIEFQSXMsCisJICogbmV2ZXIgZGlyZWN0bHkg YnkgdGhlIGNhbGxlciwgc28gZW5mb3JjZSB0aGF0IHdpdGggYW4gYXNzZXJ0aW9uOgorCSAqLwor CWlmIChXQVJOX09OX09OQ0UoZ3VwX2ZsYWdzICYgRk9MTF9QSU4pKQorCQlyZXR1cm4gLUVJTlZB TDsKKwogCXJldHVybiBfX2d1cF9sb25ndGVybV9sb2NrZWQoY3VycmVudCwgY3VycmVudC0+bW0s IHN0YXJ0LCBucl9wYWdlcywKIAkJCQkgICAgIHBhZ2VzLCB2bWFzLCBndXBfZmxhZ3MgfCBGT0xM X1RPVUNIKTsKIH0KQEAgLTIzOTIsMjkgKzI0MTksMTQgQEAgc3RhdGljIGludCBfX2d1cF9sb25n dGVybV91bmxvY2tlZCh1bnNpZ25lZCBsb25nIHN0YXJ0LCBpbnQgbnJfcGFnZXMsCiAJcmV0dXJu IHJldDsKIH0KIAotLyoqCi0gKiBnZXRfdXNlcl9wYWdlc19mYXN0KCkgLSBwaW4gdXNlciBwYWdl cyBpbiBtZW1vcnkKLSAqIEBzdGFydDoJc3RhcnRpbmcgdXNlciBhZGRyZXNzCi0gKiBAbnJfcGFn ZXM6CW51bWJlciBvZiBwYWdlcyBmcm9tIHN0YXJ0IHRvIHBpbgotICogQGd1cF9mbGFnczoJZmxh Z3MgbW9kaWZ5aW5nIHBpbiBiZWhhdmlvdXIKLSAqIEBwYWdlczoJYXJyYXkgdGhhdCByZWNlaXZl cyBwb2ludGVycyB0byB0aGUgcGFnZXMgcGlubmVkLgotICoJCVNob3VsZCBiZSBhdCBsZWFzdCBu cl9wYWdlcyBsb25nLgotICoKLSAqIEF0dGVtcHQgdG8gcGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5 IHdpdGhvdXQgdGFraW5nIG1tLT5tbWFwX3NlbS4KLSAqIElmIG5vdCBzdWNjZXNzZnVsLCBpdCB3 aWxsIGZhbGwgYmFjayB0byB0YWtpbmcgdGhlIGxvY2sgYW5kCi0gKiBjYWxsaW5nIGdldF91c2Vy X3BhZ2VzKCkuCi0gKgotICogUmV0dXJucyBudW1iZXIgb2YgcGFnZXMgcGlubmVkLiBUaGlzIG1h eSBiZSBmZXdlciB0aGFuIHRoZSBudW1iZXIKLSAqIHJlcXVlc3RlZC4gSWYgbnJfcGFnZXMgaXMg MCBvciBuZWdhdGl2ZSwgcmV0dXJucyAwLiBJZiBubyBwYWdlcwotICogd2VyZSBwaW5uZWQsIHJl dHVybnMgLWVycm5vLgotICovCi1pbnQgZ2V0X3VzZXJfcGFnZXNfZmFzdCh1bnNpZ25lZCBsb25n IHN0YXJ0LCBpbnQgbnJfcGFnZXMsCi0JCQl1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3Qg cGFnZSAqKnBhZ2VzKQorc3RhdGljIGludCBpbnRlcm5hbF9nZXRfdXNlcl9wYWdlc19mYXN0KHVu c2lnbmVkIGxvbmcgc3RhcnQsIGludCBucl9wYWdlcywKKwkJCQkJdW5zaWduZWQgaW50IGd1cF9m bGFncywKKwkJCQkJc3RydWN0IHBhZ2UgKipwYWdlcykKIHsKIAl1bnNpZ25lZCBsb25nIGFkZHIs IGxlbiwgZW5kOwogCWludCBuciA9IDAsIHJldCA9IDA7CiAKLQlpZiAoV0FSTl9PTl9PTkNFKGd1 cF9mbGFncyAmIH4oRk9MTF9XUklURSB8IEZPTExfTE9OR1RFUk0pKSkKKwlpZiAoV0FSTl9PTl9P TkNFKGd1cF9mbGFncyAmIH4oRk9MTF9XUklURSB8IEZPTExfTE9OR1RFUk0gfCBGT0xMX1BJTikp KQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXN0YXJ0ID0gdW50YWdnZWRfYWRkcihzdGFydCkgJiBQ QUdFX01BU0s7CkBAIC0yNDU0LDQgKzI0NjYsMTAzIEBAIGludCBnZXRfdXNlcl9wYWdlc19mYXN0 KHVuc2lnbmVkIGxvbmcgc3RhcnQsIGludCBucl9wYWdlcywKIAogCXJldHVybiByZXQ7CiB9CisK Ky8qKgorICogZ2V0X3VzZXJfcGFnZXNfZmFzdCgpIC0gcGluIHVzZXIgcGFnZXMgaW4gbWVtb3J5 CisgKiBAc3RhcnQ6CXN0YXJ0aW5nIHVzZXIgYWRkcmVzcworICogQG5yX3BhZ2VzOgludW1iZXIg b2YgcGFnZXMgZnJvbSBzdGFydCB0byBwaW4KKyAqIEBndXBfZmxhZ3M6CWZsYWdzIG1vZGlmeWlu ZyBwaW4gYmVoYXZpb3VyCisgKiBAcGFnZXM6CWFycmF5IHRoYXQgcmVjZWl2ZXMgcG9pbnRlcnMg dG8gdGhlIHBhZ2VzIHBpbm5lZC4KKyAqCQlTaG91bGQgYmUgYXQgbGVhc3QgbnJfcGFnZXMgbG9u Zy4KKyAqCisgKiBBdHRlbXB0IHRvIHBpbiB1c2VyIHBhZ2VzIGluIG1lbW9yeSB3aXRob3V0IHRh a2luZyBtbS0+bW1hcF9zZW0uCisgKiBJZiBub3Qgc3VjY2Vzc2Z1bCwgaXQgd2lsbCBmYWxsIGJh Y2sgdG8gdGFraW5nIHRoZSBsb2NrIGFuZAorICogY2FsbGluZyBnZXRfdXNlcl9wYWdlcygpLgor ICoKKyAqIFJldHVybnMgbnVtYmVyIG9mIHBhZ2VzIHBpbm5lZC4gVGhpcyBtYXkgYmUgZmV3ZXIg dGhhbiB0aGUgbnVtYmVyIHJlcXVlc3RlZC4KKyAqIElmIG5yX3BhZ2VzIGlzIDAgb3IgbmVnYXRp dmUsIHJldHVybnMgMC4gSWYgbm8gcGFnZXMgd2VyZSBwaW5uZWQsIHJldHVybnMKKyAqIC1lcnJu by4KKyAqLworaW50IGdldF91c2VyX3BhZ2VzX2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwgaW50 IG5yX3BhZ2VzLAorCQkJdW5zaWduZWQgaW50IGd1cF9mbGFncywgc3RydWN0IHBhZ2UgKipwYWdl cykKK3sKKwkvKgorCSAqIEZPTExfUElOIG11c3Qgb25seSBiZSBzZXQgaW50ZXJuYWxseSBieSB0 aGUgcGluX3VzZXJfcGFnZXMqKCkgQVBJcywKKwkgKiBuZXZlciBkaXJlY3RseSBieSB0aGUgY2Fs bGVyLCBzbyBlbmZvcmNlIHRoYXQ6CisJICovCisJaWYgKFdBUk5fT05fT05DRShndXBfZmxhZ3Mg JiBGT0xMX1BJTikpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIGludGVybmFsX2dldF91 c2VyX3BhZ2VzX2Zhc3Qoc3RhcnQsIG5yX3BhZ2VzLCBndXBfZmxhZ3MsIHBhZ2VzKTsKK30KIEVY UE9SVF9TWU1CT0xfR1BMKGdldF91c2VyX3BhZ2VzX2Zhc3QpOworCisvKioKKyAqIHBpbl91c2Vy X3BhZ2VzX2Zhc3QoKSAtIHBpbiB1c2VyIHBhZ2VzIGluIG1lbW9yeSB3aXRob3V0IHRha2luZyBs b2NrcworICoKKyAqIEZvciBub3csIHRoaXMgaXMgYSBwbGFjZWhvbGRlciBmdW5jdGlvbiwgdW50 aWwgdmFyaW91cyBjYWxsIHNpdGVzIGFyZQorICogY29udmVydGVkIHRvIHVzZSB0aGUgY29ycmVj dCBnZXRfdXNlcl9wYWdlcyooKSBvciBwaW5fdXNlcl9wYWdlcyooKSBBUEkuIFNvLAorICogdGhp cyBpcyBpZGVudGljYWwgdG8gZ2V0X3VzZXJfcGFnZXNfZmFzdCgpLgorICoKKyAqIFRoaXMgaXMg aW50ZW5kZWQgZm9yIENhc2UgMSAoRElPKSBpbiBEb2N1bWVudGF0aW9uL3ZtL3Bpbl91c2VyX3Bh Z2VzLnJzdC4gSXQKKyAqIGlzIE5PVCBpbnRlbmRlZCBmb3IgQ2FzZSAyIChSRE1BOiBsb25nLXRl cm0gcGlucykuCisgKi8KK2ludCBwaW5fdXNlcl9wYWdlc19mYXN0KHVuc2lnbmVkIGxvbmcgc3Rh cnQsIGludCBucl9wYWdlcywKKwkJCXVuc2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdl ICoqcGFnZXMpCit7CisJLyoKKwkgKiBUaGlzIGlzIGEgcGxhY2Vob2xkZXIsIHVudGlsIHRoZSBw aW4gZnVuY3Rpb25hbGl0eSBpcyBhY3RpdmF0ZWQuCisJICogVW50aWwgdGhlbiwganVzdCBiZWhh dmUgbGlrZSB0aGUgY29ycmVzcG9uZGluZyBnZXRfdXNlcl9wYWdlcyooKQorCSAqIHJvdXRpbmUu CisJICovCisJcmV0dXJuIGdldF91c2VyX3BhZ2VzX2Zhc3Qoc3RhcnQsIG5yX3BhZ2VzLCBndXBf ZmxhZ3MsIHBhZ2VzKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKHBpbl91c2VyX3BhZ2VzX2Zhc3Qp OworCisvKioKKyAqIHBpbl91c2VyX3BhZ2VzX3JlbW90ZSgpIC0gcGluIHBhZ2VzIG9mIGEgcmVt b3RlIHByb2Nlc3MgKHRhc2sgIT0gY3VycmVudCkKKyAqCisgKiBGb3Igbm93LCB0aGlzIGlzIGEg cGxhY2Vob2xkZXIgZnVuY3Rpb24sIHVudGlsIHZhcmlvdXMgY2FsbCBzaXRlcyBhcmUKKyAqIGNv bnZlcnRlZCB0byB1c2UgdGhlIGNvcnJlY3QgZ2V0X3VzZXJfcGFnZXMqKCkgb3IgcGluX3VzZXJf cGFnZXMqKCkgQVBJLiBTbywKKyAqIHRoaXMgaXMgaWRlbnRpY2FsIHRvIGdldF91c2VyX3BhZ2Vz X3JlbW90ZSgpLgorICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQgZm9yIENhc2UgMSAoRElPKSBpbiBE b2N1bWVudGF0aW9uL3ZtL3Bpbl91c2VyX3BhZ2VzLnJzdC4gSXQKKyAqIGlzIE5PVCBpbnRlbmRl ZCBmb3IgQ2FzZSAyIChSRE1BOiBsb25nLXRlcm0gcGlucykuCisgKi8KK2xvbmcgcGluX3VzZXJf cGFnZXNfcmVtb3RlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBzdHJ1Y3QgbW1fc3RydWN0ICpt bSwKKwkJCSAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsCisJ CQkgICB1bnNpZ25lZCBpbnQgZ3VwX2ZsYWdzLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAorCQkJICAg c3RydWN0IHZtX2FyZWFfc3RydWN0ICoqdm1hcywgaW50ICpsb2NrZWQpCit7CisJLyoKKwkgKiBU aGlzIGlzIGEgcGxhY2Vob2xkZXIsIHVudGlsIHRoZSBwaW4gZnVuY3Rpb25hbGl0eSBpcyBhY3Rp dmF0ZWQuCisJICogVW50aWwgdGhlbiwganVzdCBiZWhhdmUgbGlrZSB0aGUgY29ycmVzcG9uZGlu ZyBnZXRfdXNlcl9wYWdlcyooKQorCSAqIHJvdXRpbmUuCisJICovCisJcmV0dXJuIGdldF91c2Vy X3BhZ2VzX3JlbW90ZSh0c2ssIG1tLCBzdGFydCwgbnJfcGFnZXMsIGd1cF9mbGFncywgcGFnZXMs CisJCQkJICAgICB2bWFzLCBsb2NrZWQpOworfQorRVhQT1JUX1NZTUJPTChwaW5fdXNlcl9wYWdl c19yZW1vdGUpOworCisvKioKKyAqIHBpbl91c2VyX3BhZ2VzKCkgLSBwaW4gdXNlciBwYWdlcyBp biBtZW1vcnkgZm9yIHVzZSBieSBvdGhlciBkZXZpY2VzCisgKgorICogRm9yIG5vdywgdGhpcyBp cyBhIHBsYWNlaG9sZGVyIGZ1bmN0aW9uLCB1bnRpbCB2YXJpb3VzIGNhbGwgc2l0ZXMgYXJlCisg KiBjb252ZXJ0ZWQgdG8gdXNlIHRoZSBjb3JyZWN0IGdldF91c2VyX3BhZ2VzKigpIG9yIHBpbl91 c2VyX3BhZ2VzKigpIEFQSS4gU28sCisgKiB0aGlzIGlzIGlkZW50aWNhbCB0byBnZXRfdXNlcl9w YWdlcygpLgorICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQgZm9yIENhc2UgMSAoRElPKSBpbiBEb2N1 bWVudGF0aW9uL3ZtL3Bpbl91c2VyX3BhZ2VzLnJzdC4gSXQKKyAqIGlzIE5PVCBpbnRlbmRlZCBm b3IgQ2FzZSAyIChSRE1BOiBsb25nLXRlcm0gcGlucykuCisgKi8KK2xvbmcgcGluX3VzZXJfcGFn ZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcywKKwkJICAgIHVu c2lnbmVkIGludCBndXBfZmxhZ3MsIHN0cnVjdCBwYWdlICoqcGFnZXMsCisJCSAgICBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKip2bWFzKQoreworCS8qCisJICogVGhpcyBpcyBhIHBsYWNlaG9sZGVy LCB1bnRpbCB0aGUgcGluIGZ1bmN0aW9uYWxpdHkgaXMgYWN0aXZhdGVkLgorCSAqIFVudGlsIHRo ZW4sIGp1c3QgYmVoYXZlIGxpa2UgdGhlIGNvcnJlc3BvbmRpbmcgZ2V0X3VzZXJfcGFnZXMqKCkK KwkgKiByb3V0aW5lLgorCSAqLworCXJldHVybiBnZXRfdXNlcl9wYWdlcyhzdGFydCwgbnJfcGFn ZXMsIGd1cF9mbGFncywgcGFnZXMsIHZtYXMpOworfQorRVhQT1JUX1NZTUJPTChwaW5fdXNlcl9w YWdlcyk7Ci0tIAoyLjI0LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbA==