From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S263824AbUE1TWc (ORCPT ); Fri, 28 May 2004 15:22:32 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S263818AbUE1TWc (ORCPT ); Fri, 28 May 2004 15:22:32 -0400 Received: from cfcafw.sgi.com ([198.149.23.1]:18419 "EHLO omx1.americas.sgi.com") by vger.kernel.org with ESMTP id S263815AbUE1TV7 (ORCPT ); Fri, 28 May 2004 15:21:59 -0400 Date: Fri, 28 May 2004 14:21:44 -0500 From: Erik Jacobson To: Christoph Hellwig cc: linux-kernel@vger.kernel.org Subject: Re: [PATCH] Process Aggregates (PAGG) update for 2.6.6 In-Reply-To: <20040528141939.GA28626@infradead.org> Message-ID: References: <20040528141939.GA28626@infradead.org> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-2136806248-59764729-1085772104=:725933" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---2136806248-59764729-1085772104=:725933 Content-Type: TEXT/PLAIN; charset=US-ASCII > Looks nice to me. Can you fix up the comments a little to use kernel-doc I just did this. Hopefully it looks ok? > And after all that we have a nice hookin mechanism without users, so where > are the modules layering ontop of pagg hiding? ;-) We'll post the job patch shortly. Inescapable jobs makes use of PAGG. New patch attached. Thanks for the suggestions. -- Erik Jacobson - Linux System Software - Silicon Graphics - Eagan, Minnesota ---2136806248-59764729-1085772104=:725933 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="linux-2.6.6-pagg.patch-3" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="linux-2.6.6-pagg.patch-3" ZGlmZiAtTmFydSAyLjYtcGF0Y2gvRG9jdW1lbnRhdGlvbi9wYWdnLnR4dCAy LjZwYWdnLXBhdGNoL0RvY3VtZW50YXRpb24vcGFnZy50eHQNCi0tLSAyLjYt cGF0Y2gvRG9jdW1lbnRhdGlvbi9wYWdnLnR4dAkxOTY5LTEyLTMxIDE4OjAw OjAwLjAwMDAwMDAwMCAtMDYwMA0KKysrIDIuNnBhZ2ctcGF0Y2gvRG9jdW1l bnRhdGlvbi9wYWdnLnR4dAkyMDA0LTA1LTI0IDA4OjA4OjM0LjAwMDAwMDAw MCAtMDUwMA0KQEAgLTAsMCArMSwzMiBAQA0KK0xpbnV4IFByb2Nlc3MgQWdn cmVnYXRlcyAoUEFHRykNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQorDQorVGhlIHByb2Nlc3MgYWdncmVnYXRlcyBpbmZyYXN0cnVjdHVy ZSwgb3IgUEFHRywgcHJvdmlkZXMgYSBnZW5lcmFsaXplZA0KK21lY2hhbmlz bSBmb3IgcHJvdmlkaW5nIGFyYml0cmFyeSBwcm9jZXNzIGdyb3VwcyBpbiBM aW51eC4gIFBBR0cgY29uc2lzdHMNCitvZiBhIHNlcmllcyBvZiBmdW5jdGlv bnMgZm9yIHJlZ2lzdGVyaW5nIGFuZCB1bnJlZ2lzdGVyaW5nIHN1cHBvcnQN Citmb3IgbmV3IHR5cGVzIG9mIHByb2Nlc3MgYWdncmVnYXRpb24gY29udGFp bmVycyB3aXRoIHRoZSBrZXJuZWwuDQorVGhpcyBpcyBzaW1pbGFyIHRvIHRo ZSBzdXBwb3J0IGN1cnJlbnRseSBwcm92aWRlZCB3aXRoaW4gTGludXggdGhh dA0KK2FsbG93cyBmb3IgZHluYW1pYyBzdXBwb3J0IG9mIGZpbGVzeXN0ZW1z LCBibG9jayBhbmQgY2hhcmFjdGVyIGRldmljZXMsDQorc3ltYm9sIHRhYmxl cywgbmV0d29yayBkZXZpY2VzLCBzZXJpYWwgZGV2aWNlcywgYW5kIGV4ZWN1 dGlvbiBkb21haW5zLg0KK1RoaXMgaW1wbGVtZW50YXRpb24gb2YgUEFHRyBw cm92aWRlcyBkZXZlbG9wZXJzIHRoZSBiYXNpYyBob29rcyBuZWNlc3NhcnkN Cit0byBpbXBsZW1lbnQga2VybmVsIG1vZHVsZXMgZm9yIHNwZWNpZmljIHBy b2Nlc3MgY29udGFpbmVycywgc3VjaCBhcw0KK3RoZSBqb2IgY29udGFpbmVy Lg0KKw0KK1RoZSBkb19mb3JrIGZ1bmN0aW9uIGluIHRoZSBrZXJuZWwgd2Fz IGFsdGVyZWQgdG8gc3VwcG9ydCBQQUdHLiAgSWYgYQ0KK3Byb2Nlc3MgaXMg YXR0YWNoZWQgdG8gYW55IFBBR0cgY29udGFpbmVycyBhbmQgc3Vic2VxdWVu dGx5IGZvcmtzIGENCitjaGlsZCBwcm9jZXNzLCB0aGUgY2hpbGQgcHJvY2Vz cyB3aWxsIGFsc28gYmUgYXR0YWNoZWQgdG8gdGhlIHNhbWUgUEFHRw0KK2Nv bnRhaW5lcnMuICBUaGUgUEFHRyBjb250YWluZXJzIGludm9sdmVkIGR1cmlu ZyB0aGUgZm9yayBhcmUgbm90aWZpZWQNCit0aGF0IGEgbmV3IHByb2Nlc3Mg aGFzIGJlZW4gYXR0YWNoZWQuICBUaGUgbm90aWZpY2F0aW9uIGlzIGFjY29t cGxpc2hlZA0KK3ZpYSBhIGNhbGxiYWNrIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5 IHRoZSBQQUdHIG1vZHVsZS4NCisNCitUaGUgZG9fZXhpdCBmdW5jdGlvbiBp biB0aGUga2VybmVsIGhhcyBhbHNvIGJlZW4gYWx0ZXJlZC4gIElmIGEgcHJv Y2Vzcw0KK2lzIGF0dGFjaGVkIHRvIGFueSBQQUdHIGNvbnRhaW5lcnMgYW5k IHRoYXQgcHJvY2VzcyBpcyBleGl0aW5nLCB0aGUgUEFHRw0KK2NvbnRhaW5l cnMgYXJlIG5vdGlmaWVkIHRoYXQgYSBwcm9jZXNzIGhhcyBkZXRhY2hlZCBm cm9tIHRoZSBjb250YWluZXIuDQorVGhlIG5vdGlmaWNhdGlvbiBpcyBhY2Nv bXBsaXNoZWQgdmlhIGEgY2FsbGJhY2sgZnVuY3Rpb24gcHJvdmlkZWQgYnkN Cit0aGUgUEFHRyBtb2R1bGUuDQorDQorVGhlIHN5c19leGVjdmUgZnVuY3Rp b24gaGFzIGJlZW4gbW9kaWZpZWQgdG8gc3VwcG9ydCBhbiBvcHRpb25hbCBj YWxsb3V0DQordGhhdCBjYW4gYmUgcnVuIHdoZW4gYSBwcm9jZXNzIGluIGEg cGFnZyBsaXN0IGRvZXMgYW4gZXhlYy4gIEl0IGNhbiBiZSANCit1c2VkLCBm b3IgZXhhbXBsZSwgYnkgb3RoZXIga2VybmVsIG1vZHVsZXMgdGhhdCB3aXNo IHRvIGRvIGFkdmFuY2VkIENQVQ0KK3BsYWNlbWVudCBvbiBtdWx0aS1wcm9j ZXNzb3Igc3lzdGVtcyAoanVzdCBvbmUgZXhhbXBsZSkuDQorDQpkaWZmIC1O YXJ1IDIuNi1wYXRjaC9mcy9leGVjLmMgMi42cGFnZy1wYXRjaC9mcy9leGVj LmMNCi0tLSAyLjYtcGF0Y2gvZnMvZXhlYy5jCTIwMDQtMDUtMTAgMTI6MDY6 MTEuMDAwMDAwMDAwIC0wNTAwDQorKysgMi42cGFnZy1wYXRjaC9mcy9leGVj LmMJMjAwNC0wNS0yMCAxNDo0Njo0OS4wMDAwMDAwMDAgLTA1MDANCkBAIC00 Niw3ICs0Niw3IEBADQogI2luY2x1ZGUgPGxpbnV4L3NlY3VyaXR5Lmg+DQog I2luY2x1ZGUgPGxpbnV4L3N5c2NhbGxzLmg+DQogI2luY2x1ZGUgPGxpbnV4 L3JtYXAuaD4NCi0NCisjaW5jbHVkZSA8bGludXgvcGFnZy5oPg0KICNpbmNs dWRlIDxhc20vdWFjY2Vzcy5oPg0KICNpbmNsdWRlIDxhc20vcGdhbGxvYy5o Pg0KICNpbmNsdWRlIDxhc20vbW11X2NvbnRleHQuaD4NCkBAIC0xMTQyLDYg KzExNDIsNyBAQA0KIAlyZXR2YWwgPSBzZWFyY2hfYmluYXJ5X2hhbmRsZXIo JmJwcm0scmVncyk7DQogCWlmIChyZXR2YWwgPj0gMCkgew0KIAkJZnJlZV9h cmdfcGFnZXMoJmJwcm0pOw0KKwkJcGFnZ19leGVjKGN1cnJlbnQpOw0KIA0K IAkJLyogZXhlY3ZlIHN1Y2Nlc3MgKi8NCiAJCXNlY3VyaXR5X2Jwcm1fZnJl ZSgmYnBybSk7DQpkaWZmIC1OYXJ1IDIuNi1wYXRjaC9pbmNsdWRlL2xpbnV4 L2luaXRfdGFzay5oIDIuNnBhZ2ctcGF0Y2gvaW5jbHVkZS9saW51eC9pbml0 X3Rhc2suaA0KLS0tIDIuNi1wYXRjaC9pbmNsdWRlL2xpbnV4L2luaXRfdGFz ay5oCTIwMDQtMDUtMTAgMTI6MDY6MTEuMDAwMDAwMDAwIC0wNTAwDQorKysg Mi42cGFnZy1wYXRjaC9pbmNsdWRlL2xpbnV4L2luaXRfdGFzay5oCTIwMDQt MDUtMjAgMTQ6NDY6NDkuMDAwMDAwMDAwIC0wNTAwDQpAQCAtMiw2ICsyLDcg QEANCiAjZGVmaW5lIF9MSU5VWF9fSU5JVF9UQVNLX0gNCiANCiAjaW5jbHVk ZSA8bGludXgvZmlsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9wYWdnLmg+DQog DQogI2RlZmluZSBJTklUX0ZJTEVTIFwNCiB7IAkJCQkJCQlcDQpAQCAtMTEy LDYgKzExMyw3IEBADQogCS5wcm9jX2xvY2sJPSBTUElOX0xPQ0tfVU5MT0NL RUQsCQkJCVwNCiAJLnN3aXRjaF9sb2NrCT0gU1BJTl9MT0NLX1VOTE9DS0VE LAkJCQlcDQogCS5qb3VybmFsX2luZm8JPSBOVUxMLAkJCQkJCVwNCisJSU5J VF9UQVNLX1BBR0codHNrKQkJCQkJCVwNCiB9DQogDQogDQpkaWZmIC1OYXJ1 IDIuNi1wYXRjaC9pbmNsdWRlL2xpbnV4L3BhZ2cuaCAyLjZwYWdnLXBhdGNo L2luY2x1ZGUvbGludXgvcGFnZy5oDQotLS0gMi42LXBhdGNoL2luY2x1ZGUv bGludXgvcGFnZy5oCTE5NjktMTItMzEgMTg6MDA6MDAuMDAwMDAwMDAwIC0w NjAwDQorKysgMi42cGFnZy1wYXRjaC9pbmNsdWRlL2xpbnV4L3BhZ2cuaAky MDA0LTA1LTI4IDEzOjU2OjUyLjAwMDAwMDAwMCAtMDUwMA0KQEAgLTAsMCAr MSwxOTYgQEANCisvKiANCisgKiBQQUdHIChQcm9jZXNzIEFnZ3JlZ2F0ZXMp IGludGVyZmFjZQ0KKyAqDQorICogDQorICogQ29weXJpZ2h0IChjKSAyMDAw LTIwMDIsIDIwMDQgU2lsaWNvbiBHcmFwaGljcywgSW5jLiAgQWxsIFJpZ2h0 cyBSZXNlcnZlZC4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 DQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCisgKiB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcg0KKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uDQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgKiBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAq DQorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgKiBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQ0KKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQorICoNCisgKg0K KyAqIENvbnRhY3QgaW5mb3JtYXRpb246ICBTaWxpY29uIEdyYXBoaWNzLCBJ bmMuLCAxNTAwIENyaXR0ZW5kZW4gTGFuZSwNCisgKiBNb3VudGFpbiBWaWV3 LCBDQSAgOTQwNDMsIG9yOg0KKyAqIA0KKyAqIGh0dHA6Ly93d3cuc2dpLmNv bSANCisgKiANCisgKiBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiByZWdhcmRp bmcgdGhpcyBub3RpY2UsIHNlZTogDQorICogDQorICogaHR0cDovL29zcy5z Z2kuY29tL3Byb2plY3RzL0dlbkluZm8vTm90aWNlRXhwbGFuDQorICovDQor DQorLyoNCisgKiBEYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9ucyBhbmQgZnVu Y3Rpb24gcHJvdG90eXBlcyB1c2VkIHRvIGltcGxlbWVudA0KKyAqIHByb2Nl c3MgYWdncmVnYXRlcyAocGFnZ3MpLg0KKyAqDQorICogUGFnZ3MgcHJvdmlk ZXMgYSBnZW5lcmFsaXplZCB3YXkgdG8gaW1wbGVtZW50IHByb2Nlc3MgZ3Jv dXBpbmdzIG9yDQorICogY29udGFpbmVycy4gIE1vZHVsZXMgdXNlIHRoZXNl IGZ1bmN0aW9ucyB0byByZWdpc3RlciB3aXRoIHRoZSBrZXJuZWwgYXMNCisg KiBwcm92aWRlcnMgb2YgcHJvY2VzcyBhZ2dyZWdhdGlvbiBjb250YWluZXJz LiBUaGUgcGFnZyBkYXRhIHN0cnVjdHVyZXMNCisgKiBkZWZpbmUgdGhlIGNh bGxiYWNrIGZ1bmN0aW9ucyBhbmQgZGF0YSBhY2Nlc3MgcG9pbnRlcnMgYmFj ayBpbnRvIHRoZQ0KKyAqIHBhZ2cgbW9kdWxlcy4NCisgKi8NCisNCisjaWZu ZGVmIF9MSU5VWF9QQUdHX0gNCisjZGVmaW5lIF9MSU5VWF9QQUdHX0gNCisN CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4NCisNCisjaWZkZWYgQ09ORklH X1BBR0cNCisNCisjZGVmaW5lIFBBR0dfTkFNRUxOCTMyCQkvKiBNYXggY2hh cnMgaW4gUEFHRyBtb2R1bGUgbmFtZSAqLw0KKw0KKw0KKy8qIE1hY3JvIHVz ZWQgdG8gaW5pdGlhbGl6ZSBhIHBhZ2dfbGlzdCBzdHJ1Y3R1cmUgYWZ0ZXIg ZGVjbGFyYXRpb24gDQorICoNCisgKiBNYWNybyBhcmd1bWVudHM6DQorICog CWw6CVRhc2sgc3RydWN0IHRvIGluaXQgdGhlIHBhZ2dfbGlzdCBhbmQgc2Vt YXBob3JlIGluDQorICovDQorI2RlZmluZSBJTklUX1BBR0dfTElTVChfbCkJ CQkJCQlcDQorZG8gewkJCQkJCQkJCVwNCisJSU5JVF9MSVNUX0hFQUQoJihf bCktPnBhZ2dfbGlzdCk7CQkJCQlcDQorCWluaXRfcndzZW0oJihfbCktPnBh Z2dfc2VtKTsJCQkJCQlcDQorfSB3aGlsZSgwKQ0KKwkNCisNCisvKg0KKyAq IFVzZWQgYnkgdGFza19zdHJ1Y3QgdG8gbWFuYWdlIGxpc3Qgb2YgcGFnZyBh dHRhY2htZW50cyBmb3IgdGhlIHByb2Nlc3MuICANCisgKiBFYWNoIHBhZ2cg cHJvdmlkZXMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgcHJvY2VzcyBhbmQgdGhl IA0KKyAqIGNvcnJlY3QgcGFnZyBjb250YWluZXIuDQorICoNCisgKiBTVFJV Q1QgTUVNQkVSUzoNCisgKiAgICAgaG9vazoJUmVmZXJlbmNlIHRvIHBhZ2cg bW9kdWxlIHN0cnVjdHVyZS4gIFRoYXQgc3RydWN0DQorICogICAgIAkJaG9s ZHMgdGhlIG5hbWUga2V5IGFuZCBmdW5jdGlvbiBwb2ludGVycy4NCisgKiAg ICAgZGF0YToJT3BhcXVlIGRhdGEgcG9pbnRlciAtIGRlZmluZWQgYnkgcGFn ZyBtb2R1bGVzLg0KKyAqICAgICBlbnRyeToJTGlzdCBwb2ludGVycw0KKyAq Lw0KK3N0cnVjdCBwYWdnIHsNCisgICAgICAgc3RydWN0IHBhZ2dfaG9vawkq aG9vazsNCisgICAgICAgdm9pZAkJKmRhdGE7DQorICAgICAgIHN0cnVjdCBs aXN0X2hlYWQJZW50cnk7DQorfTsNCisNCisvKg0KKyAqIFVzZWQgYnkgcGFn ZyBtb2R1bGVzIHRvIGRlZmluZSB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIGlu dG8gdGhlIA0KKyAqIG1vZHVsZS4NCisgKg0KKyAqIFNUUlVDVCBNRU1CRVJT Og0KKyAqICAgICBuYW1lOiAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHBh Z2cgY29udGFpbmVyIHR5cGUgcHJvdmlkZWQgYnkNCisgKiAgICAgICAgICAg ICAgICAgICAgIHRoZSBtb2R1bGUuIFRoaXMgd2lsbCBiZSBzZXQgYnkgdGhl IHBhZ2cgbW9kdWxlLg0KKyAqICAgICBhdHRhY2g6ICAgICAgICAgRnVuY3Rp b24gcG9pbnRlciB0byBmdW5jdGlvbiB1c2VkIHdoZW4gYXR0YWNoaW5nDQor ICogICAgICAgICAgICAgICAgICAgICBhIHByb2Nlc3MgdG8gdGhlIHBhZ2cg Y29udGFpbmVyIHJlZmVyZW5jZWQgYnkgDQorICogICAgICAgICAgICAgICAg ICAgICB0aGlzIHN0cnVjdC4NCisgKiAgICAgZGV0YWNoOiAgICAgICAgIEZ1 bmN0aW9uIHBvaW50ZXIgdG8gZnVuY3Rpb24gdXNlZCB3aGVuIGRldGFjaGlu Zw0KKyAqICAgICAgICAgICAgICAgICAgICAgYSBwcm9jZXNzIHRvIHRoZSBw YWdnIGNvbnRhaW5lciByZWZlcmVuY2VkIGJ5IA0KKyAqICAgICAgICAgICAg ICAgICAgICAgdGhpcyBzdHJ1Y3QuDQorICogICAgIGluaXQ6ICAgICAgICAg ICBGdW5jdGlvbiBwb2ludGVyIHRvIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9u LiAgVGhpcw0KKyAqICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaXMg dXNlZCB3aGVuIHRoZSBtb2R1bGUgaXMgbG9hZGVkIHRvIGF0dGFjaA0KKyAq ICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcgcHJvY2Vzc2VzIHRvIGEg ZGVmYXVsdCBjb250YWluZXIgYXMgZGVmaW5lZCBieQ0KKyAqICAgICAgICAg ICAgICAgICAgICAgdGhlIHBhZ2cgbW9kdWxlLiBUaGlzIGlzIG9wdGlvbmFs IGFuZCBtYXkgYmUgc2V0IHRvIA0KKyAqICAgICAgICAgICAgICAgICAgICAg TlVMTCBpZiBpdCBpcyBub3QgbmVlZGVkIGJ5IHRoZSBwYWdnIG1vZHVsZS4N CisgKiAgICAgZGF0YTogICAgICAgICAgIE9wYXF1ZSBkYXRhIHBvaW50ZXIg LSBkZWZpbmVkIGJ5IHBhZ2cgbW9kdWxlcy4NCisgKiAgICAgbW9kdWxlOiAg ICAgICAgIFBvaW50ZXIgdG8ga2VybmVsIG1vZHVsZSBzdHJ1Y3QuICBVc2Vk IHRvIGluY3JlbWVudCAmIA0KKyAqICAgICAgICAgICAgICAgICAgICAgZGVj cmVtZW50IHRoZSB1c2UgY291bnQgZm9yIHRoZSBtb2R1bGUuDQorICogICAg IGVudHJ5OgkgICAgICAgTGlzdCBwb2ludGVycw0KKyAqICAgICBleGVjOiAg ICAgICAgICAgRnVuY3Rpb24gcG9pbnRlciB0byBmdW5jdGlvbiB1c2VkIHdo ZW4gYSBwcm9jZXNzDQorICogICAgICAgICAgICAgICAgICAgICBpbiB0aGUg cGFnZyBjb250YWluZXIgZXhlYydzIGEgbmV3IHByb2Nlc3MuIFRoaXMNCisg KiAgICAgICAgICAgICAgICAgICAgIGlzIG9wdGlvbmFsIGFuZCBtYXkgYmUg c2V0IHRvIE5VTEwgaWYgaXQgaXMgbm90IA0KKyAqICAgICAgICAgICAgICAg ICAgICAgbmVlZGVkIGJ5IHRoZSBwYWdnIG1vZHVsZS4NCisgKiAgICAgcmVm Y250OiAgICAgICAgIEtlZXAgdHJhY2sgb2YgdXNlciBjb3VudCBvZiB0aGUg cGFnZyBob29rDQorICovDQorc3RydWN0IHBhZ2dfaG9vayB7DQorICAgICAg IHN0cnVjdCBtb2R1bGUJKm1vZHVsZTsNCisgICAgICAgY2hhcgkJKm5hbWU7 CS8qIE5hbWUgS2V5IC0gcmVzdHJpY3RlZCB0byAzMiBjaGFyYWN0ZXJzICov DQorICAgICAgIHZvaWQJCSpkYXRhOwkvKiBPcGFxdWUgbW9kdWxlIHNwZWNp ZmljIGRhdGEgKi8NCisgICAgICAgc3RydWN0IGxpc3RfaGVhZAllbnRyeTsJ LyogTGlzdCBwb2ludGVycyAqLw0KKwkJIGF0b21pY190IHJlZmNudDsgLyog dXNhZ2UgY291bnRlciAqLw0KKyAgICAgICBpbnQJCSgqaW5pdCkoc3RydWN0 IHRhc2tfc3RydWN0ICosIHN0cnVjdCBwYWdnICopOw0KKyAgICAgICBpbnQJ CSgqYXR0YWNoKShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHBhZ2cg Kiwgdm9pZCopOw0KKyAgICAgICBpbnQJCSgqZGV0YWNoKShzdHJ1Y3QgdGFz a19zdHJ1Y3QgKiwgc3RydWN0IHBhZ2cgKik7DQorICAgICAgIHZvaWQJCSgq ZXhlYykoc3RydWN0IHRhc2tfc3RydWN0ICosIHN0cnVjdCBwYWdnICopOw0K K307DQorDQorDQorLyogS2VybmVsIHNlcnZpY2UgZnVuY3Rpb25zIGZvciBw cm92aWRpbmcgUEFHRyBzdXBwb3J0ICovDQorZXh0ZXJuIHN0cnVjdCBwYWdn ICpwYWdnX2dldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGNoYXIgKmtl eSk7DQorZXh0ZXJuIHN0cnVjdCBwYWdnICpwYWdnX2FsbG9jKHN0cnVjdCB0 YXNrX3N0cnVjdCAqdGFzaywgDQorCQkJICAgICAgIHN0cnVjdCBwYWdnX2hv b2sgKnB0KTsNCitleHRlcm4gdm9pZCBwYWdnX2ZyZWUoc3RydWN0IHBhZ2cg KnBhZ2cpOw0KK2V4dGVybiBpbnQgcGFnZ19ob29rX3JlZ2lzdGVyKHN0cnVj dCBwYWdnX2hvb2sgKnB0X25ldyk7DQorZXh0ZXJuIGludCBwYWdnX2hvb2tf dW5yZWdpc3RlcihzdHJ1Y3QgcGFnZ19ob29rICpwdF9vbGQpOw0KK2V4dGVy biBpbnQgX19wYWdnX2F0dGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRvX3Rh c2ssIA0KKwkJCSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmZyb21fdGFzayk7DQor ZXh0ZXJuIGludCBfX3BhZ2dfZGV0YWNoKHN0cnVjdCB0YXNrX3N0cnVjdCAq dGFzayk7DQorZXh0ZXJuIGludCBfX3BhZ2dfZXhlYyhzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2spOw0KKw0KKy8qIGZ1bmN0aW9uIHVzZWQgd2hlbiBhIGNo aWxkIHByb2Nlc3MgbXVzdCBpbmhlcml0IGF0dGFjaG1lbnQgdG8gcGFnZw0K KyAqIGNvbnRhaW5lcnMgZnJvbSB0aGUgcGFyZW50Lg0KKyAqLw0KK3N0YXRp YyBpbmxpbmUgaW50IHBhZ2dfYXR0YWNoKHN0cnVjdCB0YXNrX3N0cnVjdCAq Y2hpbGQsIA0KKwkJCSAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqcGFyZW50 KQ0KK3sNCisJSU5JVF9QQUdHX0xJU1QoY2hpbGQpOw0KKwlpZiAoIWxpc3Rf ZW1wdHkoJnBhcmVudC0+cGFnZ19saXN0KSkNCisJCXJldHVybiBfX3BhZ2df YXR0YWNoKGNoaWxkLCBwYXJlbnQpOw0KKwlyZXR1cm4gMDsNCit9DQorDQor DQorLyoqDQorICogcGFnZ19kZXRhY2ggLSBEZXRhY2ggYSBwcm9jZXNzIGZy b20gYSBwYWdnIGNvbnRhaW5lciBpdCBpcyBhIG1lbWJlciBvZg0KKyAqIEB0 YXNrOiBUaGUgdGFzayB0aGUgcGFnZyB3aWxsIGJlIGRldGFjaGVkIGZyb20N CisgKg0KKyAqLw0KK3N0YXRpYyBpbmxpbmUgdm9pZCBwYWdnX2RldGFjaChz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spDQorew0KKwlpZiAoIWxpc3RfZW1w dHkoJnRhc2stPnBhZ2dfbGlzdCkpDQorCQlfX3BhZ2dfZGV0YWNoKHRhc2sp Ow0KK30NCisNCisvKioNCisgKiBwYWdnX2V4ZWMgLSBVc2VkIHdoZW4gYSBw cm9jZXNzIGV4ZWMncw0KKyAqIEB0YXNrOiBUaGUgcHJvY2VzcyBkb2luZyB0 aGUgZXhlYw0KKyAqDQorICovDQorc3RhdGljIGlubGluZSB2b2lkIHBhZ2df ZXhlYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spDQorew0KKwlpZiAoIWxp c3RfZW1wdHkoJnRhc2stPnBhZ2dfbGlzdCkpDQorCQlfX3BhZ2dfZXhlYyh0 YXNrKTsNCit9DQorDQorLyoqIA0KKyAqIElOSVRfVEFTS19QQUdHIC0gVXNl ZCBpbiBJTklUX1RBU0sgdG8gc2V0IHRoZSBoZWFkIGFuZCBzZW0gb2YgcGFn Z19saXN0DQorICogQHRzazogVGhlIHRhc2sgd29yayB3aXRoDQorICoNCisg KiBNYXJjbyBVc2VkIGluIElOSVRfVEFTSyB0byBzZXQgdGhlIGhlYWQgYW5k IHNlbSBvZiBwYWdnX2xpc3QuDQorICogSWYgQ09ORklHX1BBR0cgaXMgb2Zm LCBpdCBpcyBkZWZpbmVkIGFzIGFuIGVtcHR5IG1hY3JvIGJlbG93Lg0KKyAq DQorICovDQorI2RlZmluZSBJTklUX1RBU0tfUEFHRyh0c2spIFwNCisJLnBh Z2dfbGlzdCA9IExJU1RfSEVBRF9JTklUKHRzay5wYWdnX2xpc3QpLCAgICAg XA0KKwkucGFnZ19zZW0gID0gX19SV1NFTV9JTklUSUFMSVpFUih0c2sucGFn Z19zZW0pICANCisNCisjZWxzZSAgLyogQ09ORklHX1BBR0cgKi8NCisNCisv KiANCisgKiBSZXBsYWNlbWVudCBtYWNyb3MgdXNlZCB3aGVuIFBBR0cgKFBy b2Nlc3MgQWdncmVnYXRlcykgc3VwcG9ydCBpcyBub3QNCisgKiBjb21waWxl ZCBpbnRvIHRoZSBrZXJuZWwuDQorICovDQorI2RlZmluZSBJTklUX1RBU0tf UEFHRyh0c2spDQorI2RlZmluZSBJTklUX1BBR0dfTElTVChsKSBkbyB7IH0g d2hpbGUoMCkNCisjZGVmaW5lIHBhZ2dfYXR0YWNoKGN0LCBwdCkgIGRvIHsg fSB3aGlsZSgwKQ0KKyNkZWZpbmUgcGFnZ19kZXRhY2godCkgIGRvIHsgIH0g d2hpbGUoMCkgICAgIA0KKyNkZWZpbmUgcGFnZ19leGVjKHQpICBkbyB7ICB9 IHdoaWxlKDApICAgICANCisNCisjZW5kaWYgLyogQ09ORklHX1BBR0cgKi8N CisNCisjZW5kaWYgLyogX0xJTlVYX1BBR0dfSCAqLw0KZGlmZiAtTmFydSAy LjYtcGF0Y2gvaW5jbHVkZS9saW51eC9zY2hlZC5oIDIuNnBhZ2ctcGF0Y2gv aW5jbHVkZS9saW51eC9zY2hlZC5oDQotLS0gMi42LXBhdGNoL2luY2x1ZGUv bGludXgvc2NoZWQuaAkyMDA0LTA1LTEwIDEyOjA2OjExLjAwMDAwMDAwMCAt MDUwMA0KKysrIDIuNnBhZ2ctcGF0Y2gvaW5jbHVkZS9saW51eC9zY2hlZC5o CTIwMDQtMDUtMjYgMDg6MzE6MjQuMDAwMDAwMDAwIC0wNTAwDQpAQCAtNDk5 LDExICs0OTksMTYgQEANCiANCiAJc3RydWN0IGRlbnRyeSAqcHJvY19kZW50 cnk7DQogCXN0cnVjdCBiYWNraW5nX2Rldl9pbmZvICpiYWNraW5nX2Rldl9p bmZvOw0KLQ0KIAlzdHJ1Y3QgaW9fY29udGV4dCAqaW9fY29udGV4dDsNCiAN CiAJdW5zaWduZWQgbG9uZyBwdHJhY2VfbWVzc2FnZTsNCiAJc2lnaW5mb190 ICpsYXN0X3NpZ2luZm87IC8qIEZvciBwdHJhY2UgdXNlLiAgKi8NCisNCisj aWZkZWYgQ09ORklHX1BBR0cNCisvKiBMaXN0IG9mIHBhZ2cgKHByb2Nlc3Mg YWdncmVnYXRlKSBhdHRhY2htZW50cyAqLw0KKwlzdHJ1Y3QgbGlzdF9oZWFk IHBhZ2dfbGlzdDsNCisJc3RydWN0IHJ3X3NlbWFwaG9yZSBwYWdnX3NlbTsN CisjZW5kaWYNCiB9Ow0KIA0KIHN0YXRpYyBpbmxpbmUgcGlkX3QgcHJvY2Vz c19ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykNCmRpZmYgLU5hcnUg Mi42LXBhdGNoL2luaXQvS2NvbmZpZyAyLjZwYWdnLXBhdGNoL2luaXQvS2Nv bmZpZw0KLS0tIDIuNi1wYXRjaC9pbml0L0tjb25maWcJMjAwNC0wNS0xMCAx MjowNjoxMS4wMDAwMDAwMDAgLTA1MDANCisrKyAyLjZwYWdnLXBhdGNoL2lu aXQvS2NvbmZpZwkyMDA0LTA1LTIwIDE0OjQ2OjQ5LjAwMDAwMDAwMCAtMDUw MA0KQEAgLTEyMSw2ICsxMjEsMTQgQEANCiAJICB1cCB0byB0aGUgdXNlciBs ZXZlbCBwcm9ncmFtIHRvIGRvIHVzZWZ1bCB0aGluZ3Mgd2l0aCB0aGlzDQog CSAgaW5mb3JtYXRpb24uICBUaGlzIGlzIGdlbmVyYWxseSBhIGdvb2QgaWRl YSwgc28gc2F5IFkuDQogDQorY29uZmlnIFBBR0cNCisJYm9vbCAiU3VwcG9y dCBmb3IgcHJvY2VzcyBhZ2dyZWdhdGVzIChQQUdHcykiDQorCWhlbHANCisg ICAgIFNheSBZIGhlcmUgaWYgeW91IHdpbGwgYmUgbG9hZGluZyBtb2R1bGVz IHdoaWNoIHByb3ZpZGUgc3VwcG9ydA0KKyAgICAgZm9yIHByb2Nlc3MgYWdn cmVnYXRlIGNvbnRhaW5lcnMuICBFeGFtcGxlcyBvZiBzdWNoIG1vZHVsZXMg aW5jbHVkZSB0aGUNCisgICAgIExpbnV4IEpvYnMgbW9kdWxlIGFuZCB0aGUg TGludXggQXJyYXkgU2Vzc2lvbnMgbW9kdWxlLiAgSWYgeW91IHdpbGwgbm90 IA0KKyAgICAgYmUgdXNpbmcgc3VjaCBtb2R1bGVzLCBzYXkgTi4NCisNCiBj b25maWcgU1lTQ1RMDQogCWJvb2wgIlN5c2N0bCBzdXBwb3J0Ig0KIAktLS1o ZWxwLS0tDQpkaWZmIC1OYXJ1IDIuNi1wYXRjaC9rZXJuZWwvZXhpdC5jIDIu NnBhZ2ctcGF0Y2gva2VybmVsL2V4aXQuYw0KLS0tIDIuNi1wYXRjaC9rZXJu ZWwvZXhpdC5jCTIwMDQtMDUtMTAgMTI6MDY6MTEuMDAwMDAwMDAwIC0wNTAw DQorKysgMi42cGFnZy1wYXRjaC9rZXJuZWwvZXhpdC5jCTIwMDQtMDUtMjAg MTQ6NDY6NDkuMDAwMDAwMDAwIC0wNTAwDQpAQCAtMjIsNyArMjIsNyBAQA0K ICNpbmNsdWRlIDxsaW51eC9wcm9maWxlLmg+DQogI2luY2x1ZGUgPGxpbnV4 L21vdW50Lmg+DQogI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4NCi0NCisj aW5jbHVkZSA8bGludXgvcGFnZy5oPg0KICNpbmNsdWRlIDxhc20vdWFjY2Vz cy5oPg0KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPg0KICNpbmNsdWRlIDxh c20vbW11X2NvbnRleHQuaD4NCkBAIC03OTksNiArNzk5LDkgQEANCiAJCW1v ZHVsZV9wdXQodHNrLT5iaW5mbXQtPm1vZHVsZSk7DQogDQogCXRzay0+ZXhp dF9jb2RlID0gY29kZTsNCisNCisJcGFnZ19kZXRhY2godHNrKTsNCisNCiAJ ZXhpdF9ub3RpZnkodHNrKTsNCiAJc2NoZWR1bGUoKTsNCiAJQlVHKCk7DQpk aWZmIC1OYXJ1IDIuNi1wYXRjaC9rZXJuZWwvZm9yay5jIDIuNnBhZ2ctcGF0 Y2gva2VybmVsL2ZvcmsuYw0KLS0tIDIuNi1wYXRjaC9rZXJuZWwvZm9yay5j CTIwMDQtMDUtMTAgMTI6MDY6MTEuMDAwMDAwMDAwIC0wNTAwDQorKysgMi42 cGFnZy1wYXRjaC9rZXJuZWwvZm9yay5jCTIwMDQtMDUtMjEgMTA6MTM6NTMu MDAwMDAwMDAwIC0wNTAwDQpAQCAtMzMsNyArMzMsNyBAQA0KICNpbmNsdWRl IDxsaW51eC9wdHJhY2UuaD4NCiAjaW5jbHVkZSA8bGludXgvbW91bnQuaD4N CiAjaW5jbHVkZSA8bGludXgvYXVkaXQuaD4NCi0NCisjaW5jbHVkZSA8bGlu dXgvcGFnZy5oPg0KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPg0KICNpbmNs dWRlIDxhc20vcGdhbGxvYy5oPg0KICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5o Pg0KQEAgLTIzNiw2ICsyMzYsOSBAQA0KIA0KIAlpbml0X3Rhc2sucmxpbVtS TElNSVRfTlBST0NdLnJsaW1fY3VyID0gbWF4X3RocmVhZHMvMjsNCiAJaW5p dF90YXNrLnJsaW1bUkxJTUlUX05QUk9DXS5ybGltX21heCA9IG1heF90aHJl YWRzLzI7DQorDQorCS8qIEluaXRpYWxpemUgdGhlIHBhZ2cgbGlzdCBpbiBw aWQgMCBiZWZvcmUgaXQgY2FuIGNsb25lIGl0c2VsZi4gKi8NCisJSU5JVF9Q QUdHX0xJU1QoY3VycmVudCk7DQogfQ0KIA0KIHN0YXRpYyBzdHJ1Y3QgdGFz a19zdHJ1Y3QgKmR1cF90YXNrX3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1Y3Qg Km9yaWcpDQpAQCAtOTk1LDYgKzk5OCwxMiBAQA0KIAkgICANCiAJcC0+cGFy ZW50X2V4ZWNfaWQgPSBwLT5zZWxmX2V4ZWNfaWQ7DQogDQorCS8qDQorCSAq IGNhbGwgcGFnZyBtb2R1bGVzIHRvIHByb3Blcmx5IGF0dGFjaCBuZXcgcHJv Y2VzcyB0byB0aGUgc2FtZQ0KKwkgKiBwcm9jZXNzIGFnZ3JlZ2F0ZSBjb250 YWluZXJzIGFzIHRoZSBwYXJlbnQgcHJvY2Vzcy4NCisJICovDQorCXBhZ2df YXR0YWNoKHAsIGN1cnJlbnQpOw0KKw0KIAkvKiBvaywgbm93IHdlIHNob3Vs ZCBiZSBzZXQgdXAuLiAqLw0KIAlwLT5leGl0X3NpZ25hbCA9IChjbG9uZV9m bGFncyAmIENMT05FX1RIUkVBRCkgPyAtMSA6IChjbG9uZV9mbGFncyAmIENT SUdOQUwpOw0KIAlwLT5wZGVhdGhfc2lnbmFsID0gMDsNCmRpZmYgLU5hcnUg Mi42LXBhdGNoL2tlcm5lbC9NYWtlZmlsZSAyLjZwYWdnLXBhdGNoL2tlcm5l bC9NYWtlZmlsZQ0KLS0tIDIuNi1wYXRjaC9rZXJuZWwvTWFrZWZpbGUJMjAw NC0wNS0xMCAxMjowNjoxMS4wMDAwMDAwMDAgLTA1MDANCisrKyAyLjZwYWdn LXBhdGNoL2tlcm5lbC9NYWtlZmlsZQkyMDA0LTA1LTIwIDE0OjQ2OjQ5LjAw MDAwMDAwMCAtMDUwMA0KQEAgLTE4LDYgKzE4LDcgQEANCiBvYmotJChDT05G SUdfUE0pICs9IHBvd2VyLw0KIG9iai0kKENPTkZJR19CU0RfUFJPQ0VTU19B Q0NUKSArPSBhY2N0Lm8NCiBvYmotJChDT05GSUdfQ09NUEFUKSArPSBjb21w YXQubw0KK29iai0kKENPTkZJR19QQUdHKSArPSBwYWdnLm8NCiBvYmotJChD T05GSUdfSUtDT05GSUcpICs9IGNvbmZpZ3Mubw0KIG9iai0kKENPTkZJR19J S0NPTkZJR19QUk9DKSArPSBjb25maWdzLm8NCiBvYmotJChDT05GSUdfU1RP UF9NQUNISU5FKSArPSBzdG9wX21hY2hpbmUubw0KZGlmZiAtTmFydSAyLjYt cGF0Y2gva2VybmVsL3BhZ2cuYyAyLjZwYWdnLXBhdGNoL2tlcm5lbC9wYWdn LmMNCi0tLSAyLjYtcGF0Y2gva2VybmVsL3BhZ2cuYwkxOTY5LTEyLTMxIDE4 OjAwOjAwLjAwMDAwMDAwMCAtMDYwMA0KKysrIDIuNnBhZ2ctcGF0Y2gva2Vy bmVsL3BhZ2cuYwkyMDA0LTA1LTI4IDEzOjA2OjExLjAwMDAwMDAwMCAtMDUw MA0KQEAgLTAsMCArMSwzODAgQEANCisvKiANCisgKiBQQUdHIChQcm9jZXNz IEFnZ3JlZ2F0ZXMpIGludGVyZmFjZQ0KKyAqDQorICogDQorICogQ29weXJp Z2h0IChjKSAyMDAwLTIwMDQgU2lsaWNvbiBHcmFwaGljcywgSW5jLiAgQWxs IFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5DQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCisgKiB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvcg0KKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uDQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisg KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisg KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz Lg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCisgKiBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQ0KKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBDQorICoN CisgKiBDb250YWN0IGluZm9ybWF0aW9uOiAgU2lsaWNvbiBHcmFwaGljcywg SW5jLiwgMTUwMCBDcml0dGVuZGVuIExhbmUsDQorICogTW91bnRhaW4gVmll dywgQ0EgIDk0MDQzLCBvcjoNCisgKiANCisgKiBodHRwOi8vd3d3LnNnaS5j b20gDQorICovDQorDQorI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPg0KKyNp bmNsdWRlIDxsaW51eC9zbGFiLmg+DQorI2luY2x1ZGUgPGxpbnV4L3NjaGVk Lmg+DQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxs aW51eC9wYWdnLmg+DQorI2luY2x1ZGUgPGFzbS9zZW1hcGhvcmUuaD4NCisN CisvKiBsaXN0IG9mIHBhZ2cgaG9vayBlbnRyaWVzIHRoYXQgcmVmZXJlbmNl IHRoZSAibW9kdWxlIiBpbXBsZW1lbnRhdGlvbnMgKi8NCitzdGF0aWMgTElT VF9IRUFEKHBhZ2dfaG9va19saXN0KTsNCitzdGF0aWMgREVDTEFSRV9SV1NF TShwYWdnX2hvb2tfbGlzdF9zZW0pOw0KKw0KKw0KKy8qKg0KKyAqIHBhZ2df Z2V0IC0gZ2V0IGEgcGFnZyBnaXZlbiBhIHNlYXJjaCBrZXkNCisgKiBAdGFz azogV2UgZXhhbWluZSB0aGUgcGFnZ19saXN0IGZyb20gdGhlIGdpdmVuIHRh c2sNCisgKiBAa2V5OiBLZXkgbmFtZSBvZiBwYWdnIHdlIHdpc2ggdG8gcmV0 cmlldmUNCisgKg0KKyAqIEdpdmVuIGEgcGFnZ19saXN0IGxpc3Qgc3RydWN0 dXJlLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuDQorICogYSBwb2ludGVy IHRvIHRoZSBwYWdnIHN0cnVjdCB0aGF0IG1hdGNoZXMgdGhlIHNlYXJjaA0K KyAqIGtleS4gIElmIHRoZSBrZXkgaXMgbm90IGZvdW5kLCB0aGUgZnVuY3Rp b24gd2lsbCByZXR1cm4gTlVMTC4NCisgKg0KKyAqIFRoZSBjYWxsZXIgc2hv dWxkIGhvbGQgYXQgbGVhc3QgYSByZWFkIGxvY2sgb24gdGhlIHBhZ2dfbGlz dA0KKyAqIGZvciB0YXNrIHVzaW5nIGRvd25fcmVhZCgmdGFzay0+cGFnZ19s aXN0LnNlbSkuDQorICoNCisgKi8NCitzdHJ1Y3QgcGFnZyAqDQorcGFnZ19n ZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBjaGFyICprZXkpDQorew0K KwlzdHJ1Y3QgcGFnZyAqcGFnZzsNCisNCisJbGlzdF9mb3JfZWFjaF9lbnRy eShwYWdnLCAmdGFzay0+cGFnZ19saXN0LCBlbnRyeSkgew0KKwkJaWYgKCFz dHJjbXAocGFnZy0+aG9vay0+bmFtZSxrZXkpKQ0KKwkJCXJldHVybiBwYWdn Ow0KKwl9DQorCXJldHVybiBOVUxMOw0KK30NCisNCisNCisvKioNCisgKiBw YWdnX2FsbG9jIC0gSW5zZXJ0IGEgbmV3IHBhZ2cgaW4gdG8gdGhlIHBhZ2df bGlzdCBmb3IgYSB0YXNrDQorICogQHRhc2s6IFRhc2sgd2Ugd2FudCB0byBp bnNlcnQgdGhlIHBhZ2cgaW4gdG8NCisgKiBAcGFnZ19ob29rOiBQYWdnIGhv b2sgdG8gYXNzb2NpYXRlIHdpdGggdGhlIG5ldyBwYWdnDQorICoNCisgKiBH aXZlbiBhIHRhc2sgYW5kIGEgcGFnZyBob29rLCB0aGlzIGZ1bmN0aW9uIHdp bGwgYWxsb2NhdGUNCisgKiBhIG5ldyBwYWdnIHN0cnVjdHVyZSwgaW5pdGlh bGl6ZSB0aGUgc2V0dGluZ3MsIGFuZCBpbnNlcnQgdGhlIHBhZ2cgaW50bw0K KyAqIHRoZSBwYWdnX2xpc3QgZm9yIHRoZSB0YXNrLg0KKyAqDQorICogVGhl IGNhbGxlciBmb3IgdGhpcyBmdW5jdGlvbiBzaG91bGQgaG9sZCBhdCBsZWFz dCBhIHJlYWQgbG9jayBvbiB0aGUNCisgKiBwYWdnX2hvb2tfbGlzdF9zZW0g LSBvciBlbnN1cmUgdGhhdCB0aGUgcGFnZyBob29rIGVudHJ5IGNhbm5vdCBi ZSANCisgKiByZW1vdmVkLiBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBjYWxsZWQg ZnJvbSB0aGUgcGFnZyBtb2R1bGUgKHVzdWFsbHkgdGhlDQorICogY2FzZSks IHRoZW4gdGhlIGNhbGxlciBuZWVkIG5vdCBob2xkIHRoaXMgbG9jay4gVGhl IGNhbGxlciBzaG91bGQgaG9sZCANCisgKiBhIHdyaXRlIGxvY2sgb24gZm9y IHRoZSB0YXNrcyBwYWdnX3NlbS4gIFRoaXMgY2FuIGJlIGxvY2tlZCB1c2lu ZyANCisgKiBkb3duX3dyaXRlKCZ0YXNrLT5wYWdnX3NlbSkNCisgKiANCisg Ki8NCitzdHJ1Y3QgcGFnZyAqDQorcGFnZ19hbGxvYyhzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2ssIHN0cnVjdCBwYWdnX2hvb2sgKnBhZ2dfaG9vaykNCit7 DQorCXN0cnVjdCBwYWdnICpwYWdnOw0KKw0KKwlwYWdnID0ga21hbGxvYyhz aXplb2Yoc3RydWN0IHBhZ2cpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFwYWdn KQ0KKwkJcmV0dXJuIE5VTEw7DQorDQorCXBhZ2ctPmhvb2sgPSBwYWdnX2hv b2s7DQorCXBhZ2ctPmRhdGEgPSBOVUxMOw0KKwlhdG9taWNfaW5jKCZwYWdn X2hvb2stPnJlZmNudCk7ICAvKiBJbmNyZWFzZSBob29rJ3MgcmVmZXJlbmNl IGNvdW50ICovDQorCWxpc3RfYWRkX3RhaWwoJnBhZ2ctPmVudHJ5LCAmdGFz ay0+cGFnZ19saXN0KTsNCisJcmV0dXJuIHBhZ2c7DQorfQ0KKw0KKw0KKy8q Kg0KKyAqIHBhZ2dfZnJlZSAtIERlbGV0ZSBwYWdnIGZyb20gdGhlIGxpc3Qg YW5kIGZyZWUgaXRzIG1lbW9yeQ0KKyAqIEBwYWdnOiBUaGUgcGFnZyB0byBm cmVlDQorICoNCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgZW5zdXJlIHRoZSBw YWdnIGlzIGRlbGV0ZWQgZm9ybSANCisgKiB0aGUgbGlzdCBvZiBwYWdnIGVu dHJpZXMgZm9yIHRoZSB0YXNrLiBGaW5hbGx5LCB0aGUgbWVtb3J5IGZvciB0 aGUgDQorICogcGFnZyBpcyBkaXNjYXJkZWQuDQorICoNCisgKiBUaGUgY2Fs bGVyIG9mIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGhvbGQgYSB3cml0ZSBsb2Nr IG9uIHRoZSBwYWdnX3NlbQ0KKyAqIGZvciB0aGUgdGFzay4gVGhpcyBjYW4g YmUgbG9ja2VkIHVzaW5nIGRvd25fd3JpdGUoJnRhc2stPnBhZ2dfc2VtKS4N CisgKg0KKyAqIFByaW9yIHRvIGNhbGxpbmcgcGFnZ19mcmVlLCB0aGUgcGFn ZyBzaG91bGQgaGF2ZSBiZWVuIGRldGFjaGVkIGZyb20gdGhlDQorICogcGFn ZyBjb250YWluZXIgcmVwcmVzZW50ZWQgYnkgdGhpcyBwYWdnLiAgVGhhdCBp cyB1c3VhbGx5IGRvbmUgdXNpbmcNCisgKiBwLT5ob29rLT5kZXRhY2godGFz aywgcGFnZyk7DQorICogDQorICovDQordm9pZA0KK3BhZ2dfZnJlZShzdHJ1 Y3QgcGFnZyAqcGFnZykgDQorew0KKwlhdG9taWNfZGVjKCZwYWdnLT5ob29r LT5yZWZjbnQpOyAvKiBkZWNyIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhl IGhvb2sgKi8NCisJbGlzdF9kZWwoJnBhZ2ctPmVudHJ5KTsNCisJa2ZyZWUo cGFnZyk7DQorfQ0KKw0KKw0KKy8qKg0KKyAqIGdldF9wYWdnX2hvb2sgLSBH ZXQgdGhlIHBhZ2cgaG9vayBtYXRjaGluZyB0aGUgcmVxdWVzdGVkIG5hbWUN CisgKiBAa2V5OiBUaGUgbmFtZSBvZiB0aGUgcGFnZyBob29rIHRvIGdldA0K KyAqDQorICogR2l2ZW4gYSBwYWdnIGhvb2sgbmFtZSBrZXksIHRoaXMgZnVu Y3Rpb24gd2lsbCByZXR1cm4gYSBwb2ludGVyDQorICogdG8gdGhlIHBhZ2df aG9vayBzdHJ1Y3QgdGhhdCBtYXRjaGVzIHRoZSBuYW1lLg0KKyAqIA0KKyAq IFlvdSBzaG91bGQgaG9sZCBlaXRoZXIgdGhlIHdyaXRlIG9yIHJlYWQgbG9j ayBmb3IgcGFnZ19ob29rX2xpc3Rfc2VtDQorICogYmVmb3JlIHVzaW5nIHRo aXMgZnVuY3Rpb24uICBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIHBhZ2df aG9va19saXN0DQorICogZG9lcyBub3QgY2hhbmdlIHdoaWxlIGl0ZXJhdGlu ZyB0aHJvdWdoIHRoZSBsaXN0IGVudHJpZXMuDQorICoNCisgKi8NCitzdGF0 aWMgc3RydWN0IHBhZ2dfaG9vayAqDQorZ2V0X3BhZ2dfaG9vayhjaGFyICpr ZXkpDQorew0KKwlzdHJ1Y3QgcGFnZ19ob29rICpwYWdnX2hvb2s7DQorDQor CWxpc3RfZm9yX2VhY2hfZW50cnkocGFnZ19ob29rLCAmcGFnZ19ob29rX2xp c3QsIGVudHJ5KSB7DQorCQlpZiAoIXN0cmNtcChwYWdnX2hvb2stPm5hbWUs IGtleSkpIHsNCisJCQlyZXR1cm4gcGFnZ19ob29rOw0KKwkJfQ0KKwl9DQor CXJldHVybiBOVUxMOw0KK30NCisNCisNCisvKioNCisgKiBwYWdnX2hvb2tf cmVnaXN0ZXIgLSBSZWdpc3RlciBhIG5ldyBwYWdnIGhvb2sgYW5kIGVudGVy IGl0IHRoZSBsaXN0DQorICogQHBhZ2dfaG9va19uZXc6IFRoZSBuZXcgcGFn ZyBob29rIHRvIHJlZ2lzdGVyDQorICoNCisgKiBVc2VkIHRvIHJlZ2lzdGVy IGEgbmV3IHBhZ2cgaG9vayBhbmQgZW50ZXIgaXQgaW50byB0aGUgcGFnZ19o b29rX2xpc3QuDQorICogVGhlIHNlcnZpY2UgbmFtZSBmb3IgYSBwYWdnIGhv b2sgaXMgcmVzdHJpY3RlZCB0byAzMiBjaGFyYWN0ZXJzLg0KKyAqDQorICog SW4gdGhlIGZ1dHVyZSBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBtYXkg YWxzbyBiZSBkZWZpbmVkIHNvIHRoYXQgYWxsDQorICogZXhpc3RpbmcgdGFz a3MgY2FuIGJlIGFzc2lnbmVkIHRvIGEgZGVmYXVsdCBwYWdnIGVudHJ5IGZv ciB0aGUgaG9vay4NCisgKiBIb3dldmVyLCB0aGlzIHdvdWxkIHJlcXVpcmUg aXRlcmF0aW5nIHRocm91Z2ggdGhlIHRhc2tsaXN0LiAgVG8gZG8gdGhhdA0K KyAqIHJlcXVpcmVzIHRoYXQgdGhlIHRhc2tsaXN0X2xvY2sgYmUgcmVhZCBs b2NrZWQuICBTaW5jZSB0aGUgaW5pdGlhbGl6YXRpb24NCisgKiBmdW5jdGlv biBtaWdodCBiZSBpbiBhIG1vZHVsZSwgYW5kIHRoZXJlZm9yZSBpdCBtaWdo dCBzbGVlcCAoaW1wbGVtZW50b3JzDQorICogZGVjaXNpb24pLCBob2xkaW5n IHRoZSB0YXNrbGlzdF9sb2NrIHNlZW1zIGxpa2UgYSBiYWQgaWRlYS4gSXQg bWF5IGJlIGENCisgKiByZXF1aXJlbWVudCB0aGF0IHRoZSBpbml0aWFsaXph dGlvbiBmdW5jdGlvbiB3aWxsIGJlIHN0cmljdGx5IGZvcmJpZGRlbg0KKyAq IGZyb20gbG9ja2luZyAtIGJ5IGdlbnRsZW1hbnMgYWdyZWVtZW50Li4uIA0K KyAqDQorICogSWYgYSBtZW1vcnkgZXJyb3IgaXMgZW5jb3VudGVyZWQsIHRo ZSBwYWdnIGhvb2sgaXMgdW5yZWdpc3RlcmVkIGFuZCBhbnkNCisgKiB0YXNr cyB0aGF0IGhhdmUgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW5pdGlhbCBwYWdn IGNvbnRhaW5lciBhcmUgZGV0YWNoZWQNCisgKiBmcm9tIHRoYXQgY29udGFp bmVyLg0KKyAqDQorICovDQoraW50DQorcGFnZ19ob29rX3JlZ2lzdGVyKHN0 cnVjdCBwYWdnX2hvb2sgKnBhZ2dfaG9va19uZXcpDQorew0KKwlzdHJ1Y3Qg cGFnZ19ob29rICpwYWdnX2hvb2sgPSBOVUxMOw0KKw0KKwkvKiBBREQgTkVX IFBBR0cgTU9EVUxFIFRPIEFDQ0VTUyBMSVNUICovDQorCWlmICghcGFnZ19o b29rX25ldykNCisJCXJldHVybiAtRUlOVkFMOwkJCS8qIGVycm9yICovDQor CWlmICghbGlzdF9lbXB0eSgmcGFnZ19ob29rX25ldy0+ZW50cnkpKQ0KKwkJ cmV0dXJuIC1FSU5WQUw7CQkJLyogZXJyb3IgKi8NCisJaWYgKHBhZ2dfaG9v a19uZXctPm5hbWUgPT0gTlVMTCB8fCBzdHJsZW4ocGFnZ19ob29rX25ldy0+ bmFtZSkgPiBQQUdHX05BTUVMTikgDQorCQlyZXR1cm4gLUVJTlZBTDsJCQkv KiBlcnJvciAqLw0KKw0KKwkvKiBUcnkgdG8gaW5zZXJ0IG5ldyBob29rIGVu dHJ5IGludG8gdGhlIHBhZ2cgaG9vayBsaXN0ICovDQorCWRvd25fd3JpdGUo JnBhZ2dfaG9va19saXN0X3NlbSk7DQorDQorCXBhZ2dfaG9vayA9IGdldF9w YWdnX2hvb2socGFnZ19ob29rX25ldy0+bmFtZSk7DQorDQorCWlmIChwYWdn X2hvb2spIHsNCisJCXVwX3dyaXRlKCZwYWdnX2hvb2tfbGlzdF9zZW0pOw0K KwkJcHJpbnRrKEtFUk5fV0FSTklORyAiQXR0ZW1wdCB0byByZWdpc3RlciBk dXBsaWNhdGUiDQorCQkJCSIgUEFHRyBzdXBwb3J0IChuYW1lPSVzKVxuIiwg cGFnZ19ob29rX25ldy0+bmFtZSk7DQorCQlyZXR1cm4gLUVCVVNZOw0KKwl9 DQorDQorCS8qIE9rYXksIHdlIGNhbiBpbnNlcnQgaW50byB0aGUgcGFnZyBo b29rIGxpc3QgKi8NCisJbGlzdF9hZGRfdGFpbCgmcGFnZ19ob29rX25ldy0+ ZW50cnksICZwYWdnX2hvb2tfbGlzdCk7DQorCS8qIHNldCB0aGUgcmVmIGNv dW50IHRvIHplcm8gKi8NCisJYXRvbWljX3NldCgmcGFnZ19ob29rX25ldy0+ cmVmY250LCAwKTsNCisJLyogcHJpbnRrKCJERUJVRyAtIHBhZ2cgaG9vayBy ZWdpc3RlciAtIHJlZmNudCBub3c6ICVkXG4iLCANCisJCSAgICAgYXRvbWlj X3JlYWQoJnBhZ2dfaG9va19uZXctPnJlZmNudCkpOyAqLw0KKwl1cF93cml0 ZSgmcGFnZ19ob29rX2xpc3Rfc2VtKTsNCisNCisJcHJpbnRrKEtFUk5fSU5G TyAiUmVnaXN0ZXJpbmcgUEFHRyBzdXBwb3J0IGZvciAobmFtZT0lcylcbiIs DQorCQkJcGFnZ19ob29rX25ldy0+bmFtZSk7DQorDQorCXJldHVybiAwOwkJ CQkJLyogc3VjY2VzcyAqLw0KKw0KK30NCisNCisNCisvKioNCisgKiBwYWdn X2hvb2tfdW5yZWdpc3RlciAtIFVucmVnaXN0ZXIgcGFnZyBob29rIGFuZCBy ZW1vdmUgaXQgZnJvbSB0aGUgbGlzdA0KKyAqIEBwYWdnX2hvb2tfb2xkOiBU aGUgaG9vayB0byB1bnJlZ2lzdGVyIGFuZCByZW1vdmUNCisgKg0KKyAqIFVz ZWQgdG8gdW5yZWdpc3RlciBwYWdnIGhvb2tzIGFuZCByZW1vdmUgdGhlbSBm cm9tIHRoZSBwYWdnX2hvb2tfbGlzdC4NCisgKiBPbmNlIHRoZSBwYWdnIGhv b2sgZW50cnkgaW4gdGhlIHBhZ2dfaG9va19saXN0IGlzIGZvdW5kLCB3ZSBj aGVjayBpZiANCisgKiB0aGUgcGFnZyBob29rIGlzIHN0aWxsIGluIHVzZS4g IA0KKyAqIA0KKyAqLw0KK2ludA0KK3BhZ2dfaG9va191bnJlZ2lzdGVyKHN0 cnVjdCBwYWdnX2hvb2sgKnBhZ2dfaG9va19vbGQpDQorew0KKwlzdHJ1Y3Qg cGFnZ19ob29rICpwYWdnX2hvb2s7DQorDQorCS8qIENoZWNrIHRoZSB2YWxp ZGl0eSBvZiB0aGUgYXJndW1lbnRzICovDQorCWlmICghcGFnZ19ob29rX29s ZCkNCisJCXJldHVybiAtRUlOVkFMOwkJCS8qIGVycm9yICovDQorCWlmIChs aXN0X2VtcHR5KCZwYWdnX2hvb2tfb2xkLT5lbnRyeSkpDQorCQlyZXR1cm4g LUVJTlZBTDsJCQkvKiBlcnJvciAqLw0KKwlpZiAocGFnZ19ob29rX29sZC0+ bmFtZSA9PSBOVUxMKQ0KKwkJcmV0dXJuIC1FSU5WQUw7CQkJLyogZXJyb3Ig Ki8NCisNCisJZG93bl93cml0ZSgmcGFnZ19ob29rX2xpc3Rfc2VtKTsNCisN CisJcGFnZ19ob29rID0gZ2V0X3BhZ2dfaG9vayhwYWdnX2hvb2tfb2xkLT5u YW1lKTsNCisNCisJLyogcHJpbnRrKCJERUJVRyAtIHBhZ2cgaG9vayB1bnJl Z2lzdGVyIC0gcmVmY250IG5vdzogJWRcbiIsIA0KKwkgKgkgICAgIGF0b21p Y19yZWFkKCZwYWdnX2hvb2stPnJlZmNudCkpOw0KKwkgKi8NCisNCisJaWYg KHBhZ2dfaG9vayAmJiBwYWdnX2hvb2sgPT0gcGFnZ19ob29rX29sZCkgew0K KwkJLyogSXMgdGhlIHBhZ2cgaG9vayBidXN5PyAgQ2hlY2sgaWYgdGhlIHJl ZmNudCBpcyB6ZXJvICovDQorCQlpZiAoYXRvbWljX3JlYWQoJnBhZ2dfaG9v ay0+cmVmY250KSAhPSAwKSB7DQorCQkJdXBfd3JpdGUoJnBhZ2dfaG9va19s aXN0X3NlbSk7DQorCQkJcHJpbnRrKEtFUk5fSU5GTyAiRmFpbGVkIGF0dGVt cHQgdG8gdW5yZWdpc3RlciBhIFBBR0cgaG9vayBmcm9tOiAlc1xuIiwgcGFn Z19ob29rX29sZC0+bmFtZSk7DQorCQkJcmV0dXJuIC1FQlVTWTsNCisJCX0N CisJCWxpc3RfZGVsX2luaXQoJnBhZ2dfaG9vay0+ZW50cnkpOw0KKwkJdXBf d3JpdGUoJnBhZ2dfaG9va19saXN0X3NlbSk7DQorDQorCQlwcmludGsoS0VS Tl9JTkZPICJVbnJlZ2lzdGVyaW5nIFBBR0cgc3VwcG9ydCBmb3IiDQorCQkJ CSIgKG5hbWU9JXMpXG4iLCBwYWdnX2hvb2tfb2xkLT5uYW1lKTsNCisNCisJ CXJldHVybiAwOwkJCS8qIHN1Y2Nlc3MgKi8NCisJfQ0KKw0KKwl1cF93cml0 ZSgmcGFnZ19ob29rX2xpc3Rfc2VtKTsNCisNCisJcHJpbnRrKEtFUk5fV0FS TklORyAiQXR0ZW1wdCB0byB1bnJlZ2lzdGVyIFBBR0cgc3VwcG9ydCAobmFt ZT0lcykiDQorCQkJIiBmYWlsZWQgLSBub3QgZm91bmRcbiIsIHBhZ2dfaG9v a19vbGQtPm5hbWUpOw0KKwkNCisJcmV0dXJuIC1FSU5WQUw7CQkJCS8qIGVy cm9yICovDQorfQ0KKw0KKw0KKy8qKg0KKyAqIF9fcGFnZ19hdHRhY2ggLSBB dHRhY2ggYSBuZXcgdGFzayB0byB0aGUgc2FtZSBjb250YWluZXJzIG9mIGl0 cyBwYXJlbnQNCisgKiBAdG9fdGFzazogVGhlIGNoaWxkIHRhc2sgdGhhdCB3 aWxsIGluaGVyaXQgdGhlIHBhcmVudCdzIGNvbnRhaW5lcnMNCisgKiBAZnJv bV90YXNrOiBUaGUgcGFyZW50IHRhc2sgDQorICoNCisgKiBVc2VkIHRvIGF0 dGFjaCBhIG5ldyB0YXNrIHRvIHRoZSBzYW1lIHBhZ2cgY29udGFpbmVycyB0 byB3aGljaCBpdCdzIHBhcmVudA0KKyAqIGlzIGF0dGFjaGVkLg0KKyAqDQor ICogVGhlICJmcm9tIiBhcmd1bWVudCBpcyB0aGUgcGFyZW50IHRhc2suICBU aGUgInRvIiBhcmd1bWVudCBpcyB0aGUgY2hpbGQNCisgKiB0YXNrLiANCisg Kg0KKyAqLw0KK2ludCBfX3BhZ2dfYXR0YWNoKHN0cnVjdCB0YXNrX3N0cnVj dCAqdG9fdGFzaywgc3RydWN0IHRhc2tfc3RydWN0ICpmcm9tX3Rhc2spDQor ew0KKwlpbnQgIAkJICAgcmV0Y29kZSA9IDA7DQorCXN0cnVjdCBwYWdnICpm cm9tX3BhZ2c7DQorDQorCS8qIGxvY2sgdGhlIHBhcmVudHMgcGFnZ19saXN0 IHdlIGFyZSBjb3B5aW5nIGZyb20gKi8NCisJZG93bl9yZWFkKCZmcm9tX3Rh c2stPnBhZ2dfc2VtKTsgLyogcmVhZCBsb2NrIHRoZSBwYWdnIGxpc3QgKi8N CisNCisJbGlzdF9mb3JfZWFjaF9lbnRyeShmcm9tX3BhZ2csICZmcm9tX3Rh c2stPnBhZ2dfbGlzdCwgZW50cnkpIHsNCisJCXN0cnVjdCBwYWdnICp0b19w YWdnID0gTlVMTDsNCisNCisJCXRvX3BhZ2cgPSBwYWdnX2FsbG9jKHRvX3Rh c2ssIGZyb21fcGFnZy0+aG9vayk7DQorCQlpZiAoIXRvX3BhZ2cpIHsNCisJ CQlyZXRjb2RlID0gLUVOT01FTTsNCisJCQlnb3RvIGVycm9yX3JldHVybjsN CisJCX0NCisJCXJldGNvZGUgPSB0b19wYWdnLT5ob29rLT5hdHRhY2godG9f dGFzaywgdG9fcGFnZywgZnJvbV9wYWdnLT5kYXRhKTsNCisJCWlmIChyZXRj b2RlICE9IDApIHsNCisJCQkvKiBhdHRhY2ggc2hvdWxkIGlzc3VlIGVycm9y IG1lc3NhZ2UgKi8NCisJCQlnb3RvIGVycm9yX3JldHVybjsNCisJCX0NCisJ fQ0KKw0KKwl1cF9yZWFkKCZmcm9tX3Rhc2stPnBhZ2dfc2VtKTsgLyogdW5s b2NrIHRoZSBwYWdnIGxpc3QgKi8NCisNCisJcmV0dXJuIDA7CQkJCQkvKiBz dWNjZXNzICovDQorDQorICBlcnJvcl9yZXR1cm46DQorCS8qIA0KKwkgKiBD bGVhbiB1cCBhbGwgdGhlIHBhZ2cgYXR0YWNobWVudHMgbWFkZSBvbiBiZWhh bGYgb2YgdGhlIG5ldw0KKwkgKiB0YXNrLiAgU2V0IG5ldyB0YXNrIHBhZ2cg cHRyIHRvIE5VTEwgZm9yIHJldHVybi4NCisJICovDQorCXVwX3JlYWQoJmZy b21fdGFzay0+cGFnZ19zZW0pOyAvKiB1bmxvY2sgdGhlIHBhZ2cgbGlzdCAq Lw0KKwlfX3BhZ2dfZGV0YWNoKHRvX3Rhc2spOw0KKwlyZXR1cm4gcmV0Y29k ZTsJCQkJLyogZmFpbHVyZSAqLw0KK30NCisNCisvKioNCisgKiBfX3BhZ2df ZGV0YWNoIC0gRGV0YWNoIGEgdGFzayBmcm9tIGFsbCBwYWdnIGNvbnRhaW5l cnMgaXQgaXMgYXR0YWNoZWQgdG8NCisgKiBAdGFzazogVGFzayB0byBkZXRh Y2ggZnJvbSBwYWdnIGNvbnRhaW5lcnMNCisgKg0KKyAqIFVzZWQgdG8gZGV0 YWNoIGEgdGFzayBmcm9tIGFsbCBwYWdnIGNvbnRhaW5lcnMgdG8gd2hpY2gg aXQgaXMgYXR0YWNoZWQuDQorICogDQorICovDQoraW50DQorX19wYWdnX2Rl dGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spDQorew0KKwlzdHJ1Y3Qg cGFnZyAqcGFnZzsNCisJc3RydWN0IHBhZ2cgKnBhZ2d0bXA7DQorCWludCBy ZXRjb2RlID0gMDsNCisJaW50IHJldHRtcCA9IDA7DQorDQorCS8qIFJlbW92 ZSByZWYuIHRvIHBhZ2dzIGZyb20gdGFzayBpbW1lZGlhdGVseSAqLw0KKwlk b3duX3dyaXRlKCZ0YXNrLT5wYWdnX3NlbSk7IC8qIHdyaXRlIGxvY2sgcGFn ZyBsaXN0ICovDQorDQorCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwYWdn LCBwYWdndG1wLCAmdGFzay0+cGFnZ19saXN0LCBlbnRyeSkgew0KKwkJcmV0 dG1wID0gcGFnZy0+aG9vay0+ZGV0YWNoKHRhc2ssIHBhZ2cpOw0KKwkJaWYg KHJldHRtcCkgew0KKwkJCS8qIGFuIGVycm9yIG1lc3NhZ2Ugc2hvdWxkIGJl IGxvZ2dlZCBpbiBmcmVlX3BhZ2cgKi8NCisJCQlyZXRjb2RlID0gcmV0dG1w Ow0KKwkJfQ0KKwkJcGFnZ19mcmVlKHBhZ2cpOw0KKwl9DQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJdXBfd3JpdGUoJnRhc2st PnBhZ2dfc2VtKTsgLyogd3JpdGUgdW5sb2NrIHRoZSBwYWdnIGxpc3QgKi8N CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlyZXR1 cm4gcmV0Y29kZTsgICAvKiAwID0gc3VjY2VzcywgZWxzZSByZXR1cm4gbGFz dCBjb2RlIGZvciBmYWlsdXJlICovDQorfQ0KKw0KKw0KKy8qKg0KKyAqIF9f cGFnZ19leGVjIC0gRXhlY3V0ZSBjYWxsYmFjayB3aGVuIGEgcHJvY2VzcyBp biBhIGNvbnRhaW5lciBleGVjcw0KKyAqIEB0YXNrOiBXZSBnbyB0aHJvdWdo IHRoZSBwYWdnIGxpc3QgaW4gdGhlIGdpdmVuIHRhc2sNCisgKg0KKyAqIFVz ZWQgdG8gd2hlbiBhIHByb2Nlc3MgdGhhdCBpcyBpbiBhIHBhZ2cgY29udGFp bmVyIGRvZXMgYW4gZXhlYy4NCisgKg0KKyAqIFRoZSAiZnJvbSIgYXJndW1l bnQgaXMgdGhlIHRhc2suICBUaGUgIm5hbWUiIGFyZ3VtZW50IGlzIHRoZSBu YW1lDQorICogb2YgdGhlIHByb2Nlc3MgYmVpbmcgZXhlYydlZC4NCisgKg0K KyAqLw0KK2ludCBfX3BhZ2dfZXhlYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2spIA0KK3sNCisJc3RydWN0IHBhZ2cJKnBhZ2c7DQorDQorCS8qIGxvY2sg dGhlIHBhcmVudHMgcGFnZ19saXN0IHdlIGFyZSBjb3B5aW5nIGZyb20gKi8N CisJZG93bl9yZWFkKCZ0YXNrLT5wYWdnX3NlbSk7IC8qIGxvY2sgdGhlIHBh Z2cgbGlzdCAqLw0KKw0KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2csICZ0 YXNrLT5wYWdnX2xpc3QsIGVudHJ5KSB7DQorCQlpZiAocGFnZy0+aG9vay0+ ZXhlYykgLyogY29uZGl0aW9uYWwgYmVjYXVzZSBpdCdzIG9wdGlvbmFsICov DQorCQkJcGFnZy0+aG9vay0+ZXhlYyh0YXNrLCBwYWdnKTsNCisJfQ0KKw0K Kwl1cF9yZWFkKCZ0YXNrLT5wYWdnX3NlbSk7IC8qIHVubG9jayB0aGUgcGFn ZyBsaXN0ICovDQorCXJldHVybiAwOw0KK30NCisNCisNCitFWFBPUlRfU1lN Qk9MKHBhZ2dfZ2V0KTsNCitFWFBPUlRfU1lNQk9MKHBhZ2dfYWxsb2MpOw0K K0VYUE9SVF9TWU1CT0wocGFnZ19mcmVlKTsNCitFWFBPUlRfU1lNQk9MKHBh Z2dfaG9va19yZWdpc3Rlcik7DQorRVhQT1JUX1NZTUJPTChwYWdnX2hvb2tf dW5yZWdpc3Rlcik7DQo= ---2136806248-59764729-1085772104=:725933--