From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S264513AbUE0OQF (ORCPT ); Thu, 27 May 2004 10:16:05 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S264550AbUE0OQF (ORCPT ); Thu, 27 May 2004 10:16:05 -0400 Received: from cfcafw.sgi.com ([198.149.23.1]:23736 "EHLO omx1.americas.sgi.com") by vger.kernel.org with ESMTP id S264513AbUE0OPi (ORCPT ); Thu, 27 May 2004 10:15:38 -0400 Date: Thu, 27 May 2004 09:15:36 -0500 From: Erik Jacobson To: linux-kernel@vger.kernel.org Subject: [PATCH] Process Aggregates (PAGG) update for 2.6.6 Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-2136806248-1669222636-1085667336=:636588" 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-1669222636-1085667336=:636588 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi there. Attached is a fresh PAGG patch for the 2.6.6 kernel. This patch implements the LKML feedback received so far (with very few exceptions). I would be happy to post the inescapable jobs patch (a user of PAGG) as well. It can be found here (along with pagg): http://oss.sgi.com/projects/pagg/ Thanks! -- Erik Jacobson - Linux System Software - Silicon Graphics - Eagan, Minnesota ---2136806248-1669222636-1085667336=:636588 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="linux-2.6.6-pagg.patch-2" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="linux-2.6.6-pagg.patch-2" 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 MDA0LTA1LTI2IDA4OjMxOjAwLjAwMDAwMDAwMCAtMDUwMA0KQEAgLTAsMCAr MSwxOTEgQEANCisvKiANCisgKiBQQUdHIChQcm9jZXNzIEFnZ3JlZ2F0ZXMp 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 DQorLyogDQorICogRnVuY3Rpb24gdXNlZCB3aGVuIGEgcHJvY2VzcyBtdXN0 IGRldGFjaCBmcm9tIHBhZ2cgY29udGFpbmVycyB0byB3aGljaCBpdA0KKyAq IGlzIGN1cnJlbmx0eSBhIG1lbWJlci4NCisgKg0KKyAqLw0KK3N0YXRpYyBp bmxpbmUgdm9pZCBwYWdnX2RldGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2spDQorew0KKwlpZiAoIWxpc3RfZW1wdHkoJnRhc2stPnBhZ2dfbGlzdCkp DQorCQlfX3BhZ2dfZGV0YWNoKHRhc2spOw0KK30NCisNCisvKiANCisgKiBm dW5jdGlvbiB1c2VkIHdoZW4gYSBwcm9jZXNzIGV4ZWMncy4NCisgKg0KKyAq Lw0KK3N0YXRpYyBpbmxpbmUgdm9pZCBwYWdnX2V4ZWMoc3RydWN0IHRhc2tf c3RydWN0ICp0YXNrKQ0KK3sNCisJaWYgKCFsaXN0X2VtcHR5KCZ0YXNrLT5w YWdnX2xpc3QpKQ0KKwkJX19wYWdnX2V4ZWModGFzayk7DQorfQ0KKw0KKy8q DQorICogTWFyY28gVXNlZCBpbiBJTklUX1RBU0sgdG8gc2V0IHRoZSBoZWFk IGFuZCBzZW0gb2YgcGFnZ19saXN0Lg0KKyAqIElmIENPTkZJR19QQUdHIGlz IG9mZiwgaXQgaXMgZGVmaW5lZCBhcyBhbiBlbXB0eSBtYWNybyBiZWxvdy4N CisgKi8NCisjZGVmaW5lIElOSVRfVEFTS19QQUdHKHRzaykgXA0KKwkucGFn Z19saXN0ID0gTElTVF9IRUFEX0lOSVQodHNrLnBhZ2dfbGlzdCksICAgICBc DQorCS5wYWdnX3NlbSAgPSBfX1JXU0VNX0lOSVRJQUxJWkVSKHRzay5wYWdn X3NlbSkgIA0KKw0KKyNlbHNlICAvKiBDT05GSUdfUEFHRyAqLw0KKw0KKy8q IA0KKyAqIFJlcGxhY2VtZW50IG1hY3JvcyB1c2VkIHdoZW4gUEFHRyAoUHJv Y2VzcyBBZ2dyZWdhdGVzKSBzdXBwb3J0IGlzIG5vdA0KKyAqIGNvbXBpbGVk IGludG8gdGhlIGtlcm5lbC4NCisgKi8NCisjZGVmaW5lIElOSVRfVEFTS19Q QUdHKHRzaykNCisjZGVmaW5lIElOSVRfUEFHR19MSVNUKGwpIGRvIHsgfSB3 aGlsZSgwKQ0KKyNkZWZpbmUgcGFnZ19hdHRhY2goY3QsIHB0KSAgZG8geyB9 IHdoaWxlKDApDQorI2RlZmluZSBwYWdnX2RldGFjaCh0KSAgZG8geyAgfSB3 aGlsZSgwKSAgICAgDQorI2RlZmluZSBwYWdnX2V4ZWModCkgIGRvIHsgIH0g d2hpbGUoMCkgICAgIA0KKw0KKyNlbmRpZiAvKiBDT05GSUdfUEFHRyAqLw0K Kw0KKyNlbmRpZiAvKiBfTElOVVhfUEFHR19IICovDQpkaWZmIC1OYXJ1IDIu Ni1wYXRjaC9pbmNsdWRlL2xpbnV4L3NjaGVkLmggMi42cGFnZy1wYXRjaC9p bmNsdWRlL2xpbnV4L3NjaGVkLmgNCi0tLSAyLjYtcGF0Y2gvaW5jbHVkZS9s aW51eC9zY2hlZC5oCTIwMDQtMDUtMTAgMTI6MDY6MTEuMDAwMDAwMDAwIC0w NTAwDQorKysgMi42cGFnZy1wYXRjaC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgJ MjAwNC0wNS0yNiAwODozMToyNC4wMDAwMDAwMDAgLTA1MDANCkBAIC00OTks MTEgKzQ5OSwxNiBAQA0KIA0KIAlzdHJ1Y3QgZGVudHJ5ICpwcm9jX2RlbnRy eTsNCiAJc3RydWN0IGJhY2tpbmdfZGV2X2luZm8gKmJhY2tpbmdfZGV2X2lu Zm87DQotDQogCXN0cnVjdCBpb19jb250ZXh0ICppb19jb250ZXh0Ow0KIA0K IAl1bnNpZ25lZCBsb25nIHB0cmFjZV9tZXNzYWdlOw0KIAlzaWdpbmZvX3Qg Kmxhc3Rfc2lnaW5mbzsgLyogRm9yIHB0cmFjZSB1c2UuICAqLw0KKw0KKyNp ZmRlZiBDT05GSUdfUEFHRw0KKy8qIExpc3Qgb2YgcGFnZyAocHJvY2VzcyBh Z2dyZWdhdGUpIGF0dGFjaG1lbnRzICovDQorCXN0cnVjdCBsaXN0X2hlYWQg cGFnZ19saXN0Ow0KKwlzdHJ1Y3Qgcndfc2VtYXBob3JlIHBhZ2dfc2VtOw0K KyNlbmRpZg0KIH07DQogDQogc3RhdGljIGlubGluZSBwaWRfdCBwcm9jZXNz X2dyb3VwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQ0KZGlmZiAtTmFydSAy LjYtcGF0Y2gvaW5pdC9LY29uZmlnIDIuNnBhZ2ctcGF0Y2gvaW5pdC9LY29u ZmlnDQotLS0gMi42LXBhdGNoL2luaXQvS2NvbmZpZwkyMDA0LTA1LTEwIDEy OjA2OjExLjAwMDAwMDAwMCAtMDUwMA0KKysrIDIuNnBhZ2ctcGF0Y2gvaW5p dC9LY29uZmlnCTIwMDQtMDUtMjAgMTQ6NDY6NDkuMDAwMDAwMDAwIC0wNTAw DQpAQCAtMTIxLDYgKzEyMSwxNCBAQA0KIAkgIHVwIHRvIHRoZSB1c2VyIGxl dmVsIHByb2dyYW0gdG8gZG8gdXNlZnVsIHRoaW5ncyB3aXRoIHRoaXMNCiAJ ICBpbmZvcm1hdGlvbi4gIFRoaXMgaXMgZ2VuZXJhbGx5IGEgZ29vZCBpZGVh LCBzbyBzYXkgWS4NCiANCitjb25maWcgUEFHRw0KKwlib29sICJTdXBwb3J0 IGZvciBwcm9jZXNzIGFnZ3JlZ2F0ZXMgKFBBR0dzKSINCisJaGVscA0KKyAg ICAgU2F5IFkgaGVyZSBpZiB5b3Ugd2lsbCBiZSBsb2FkaW5nIG1vZHVsZXMg d2hpY2ggcHJvdmlkZSBzdXBwb3J0DQorICAgICBmb3IgcHJvY2VzcyBhZ2dy ZWdhdGUgY29udGFpbmVycy4gIEV4YW1wbGVzIG9mIHN1Y2ggbW9kdWxlcyBp bmNsdWRlIHRoZQ0KKyAgICAgTGludXggSm9icyBtb2R1bGUgYW5kIHRoZSBM aW51eCBBcnJheSBTZXNzaW9ucyBtb2R1bGUuICBJZiB5b3Ugd2lsbCBub3Qg DQorICAgICBiZSB1c2luZyBzdWNoIG1vZHVsZXMsIHNheSBOLg0KKw0KIGNv bmZpZyBTWVNDVEwNCiAJYm9vbCAiU3lzY3RsIHN1cHBvcnQiDQogCS0tLWhl bHAtLS0NCmRpZmYgLU5hcnUgMi42LXBhdGNoL2tlcm5lbC9leGl0LmMgMi42 cGFnZy1wYXRjaC9rZXJuZWwvZXhpdC5jDQotLS0gMi42LXBhdGNoL2tlcm5l bC9leGl0LmMJMjAwNC0wNS0xMCAxMjowNjoxMS4wMDAwMDAwMDAgLTA1MDAN CisrKyAyLjZwYWdnLXBhdGNoL2tlcm5lbC9leGl0LmMJMjAwNC0wNS0yMCAx NDo0Njo0OS4wMDAwMDAwMDAgLTA1MDANCkBAIC0yMiw3ICsyMiw3IEBADQog I2luY2x1ZGUgPGxpbnV4L3Byb2ZpbGUuaD4NCiAjaW5jbHVkZSA8bGludXgv bW91bnQuaD4NCiAjaW5jbHVkZSA8bGludXgvcHJvY19mcy5oPg0KLQ0KKyNp bmNsdWRlIDxsaW51eC9wYWdnLmg+DQogI2luY2x1ZGUgPGFzbS91YWNjZXNz Lmg+DQogI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+DQogI2luY2x1ZGUgPGFz bS9tbXVfY29udGV4dC5oPg0KQEAgLTc5OSw2ICs3OTksOSBAQA0KIAkJbW9k dWxlX3B1dCh0c2stPmJpbmZtdC0+bW9kdWxlKTsNCiANCiAJdHNrLT5leGl0 X2NvZGUgPSBjb2RlOw0KKw0KKwlwYWdnX2RldGFjaCh0c2spOw0KKw0KIAll eGl0X25vdGlmeSh0c2spOw0KIAlzY2hlZHVsZSgpOw0KIAlCVUcoKTsNCmRp ZmYgLU5hcnUgMi42LXBhdGNoL2tlcm5lbC9mb3JrLmMgMi42cGFnZy1wYXRj aC9rZXJuZWwvZm9yay5jDQotLS0gMi42LXBhdGNoL2tlcm5lbC9mb3JrLmMJ MjAwNC0wNS0xMCAxMjowNjoxMS4wMDAwMDAwMDAgLTA1MDANCisrKyAyLjZw YWdnLXBhdGNoL2tlcm5lbC9mb3JrLmMJMjAwNC0wNS0yMSAxMDoxMzo1My4w MDAwMDAwMDAgLTA1MDANCkBAIC0zMyw3ICszMyw3IEBADQogI2luY2x1ZGUg PGxpbnV4L3B0cmFjZS5oPg0KICNpbmNsdWRlIDxsaW51eC9tb3VudC5oPg0K ICNpbmNsdWRlIDxsaW51eC9hdWRpdC5oPg0KLQ0KKyNpbmNsdWRlIDxsaW51 eC9wYWdnLmg+DQogI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+DQogI2luY2x1 ZGUgPGFzbS9wZ2FsbG9jLmg+DQogI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+ DQpAQCAtMjM2LDYgKzIzNiw5IEBADQogDQogCWluaXRfdGFzay5ybGltW1JM SU1JVF9OUFJPQ10ucmxpbV9jdXIgPSBtYXhfdGhyZWFkcy8yOw0KIAlpbml0 X3Rhc2sucmxpbVtSTElNSVRfTlBST0NdLnJsaW1fbWF4ID0gbWF4X3RocmVh ZHMvMjsNCisNCisJLyogSW5pdGlhbGl6ZSB0aGUgcGFnZyBsaXN0IGluIHBp ZCAwIGJlZm9yZSBpdCBjYW4gY2xvbmUgaXRzZWxmLiAqLw0KKwlJTklUX1BB R0dfTElTVChjdXJyZW50KTsNCiB9DQogDQogc3RhdGljIHN0cnVjdCB0YXNr X3N0cnVjdCAqZHVwX3Rhc2tfc3RydWN0KHN0cnVjdCB0YXNrX3N0cnVjdCAq b3JpZykNCkBAIC05OTUsNiArOTk4LDEyIEBADQogCSAgIA0KIAlwLT5wYXJl bnRfZXhlY19pZCA9IHAtPnNlbGZfZXhlY19pZDsNCiANCisJLyoNCisJICog Y2FsbCBwYWdnIG1vZHVsZXMgdG8gcHJvcGVybHkgYXR0YWNoIG5ldyBwcm9j ZXNzIHRvIHRoZSBzYW1lDQorCSAqIHByb2Nlc3MgYWdncmVnYXRlIGNvbnRh aW5lcnMgYXMgdGhlIHBhcmVudCBwcm9jZXNzLg0KKwkgKi8NCisJcGFnZ19h dHRhY2gocCwgY3VycmVudCk7DQorDQogCS8qIG9rLCBub3cgd2Ugc2hvdWxk IGJlIHNldCB1cC4uICovDQogCXAtPmV4aXRfc2lnbmFsID0gKGNsb25lX2Zs YWdzICYgQ0xPTkVfVEhSRUFEKSA/IC0xIDogKGNsb25lX2ZsYWdzICYgQ1NJ R05BTCk7DQogCXAtPnBkZWF0aF9zaWduYWwgPSAwOw0KZGlmZiAtTmFydSAy LjYtcGF0Y2gva2VybmVsL01ha2VmaWxlIDIuNnBhZ2ctcGF0Y2gva2VybmVs L01ha2VmaWxlDQotLS0gMi42LXBhdGNoL2tlcm5lbC9NYWtlZmlsZQkyMDA0 LTA1LTEwIDEyOjA2OjExLjAwMDAwMDAwMCAtMDUwMA0KKysrIDIuNnBhZ2ct cGF0Y2gva2VybmVsL01ha2VmaWxlCTIwMDQtMDUtMjAgMTQ6NDY6NDkuMDAw MDAwMDAwIC0wNTAwDQpAQCAtMTgsNiArMTgsNyBAQA0KIG9iai0kKENPTkZJ R19QTSkgKz0gcG93ZXIvDQogb2JqLSQoQ09ORklHX0JTRF9QUk9DRVNTX0FD Q1QpICs9IGFjY3Qubw0KIG9iai0kKENPTkZJR19DT01QQVQpICs9IGNvbXBh dC5vDQorb2JqLSQoQ09ORklHX1BBR0cpICs9IHBhZ2cubw0KIG9iai0kKENP TkZJR19JS0NPTkZJRykgKz0gY29uZmlncy5vDQogb2JqLSQoQ09ORklHX0lL Q09ORklHX1BST0MpICs9IGNvbmZpZ3Mubw0KIG9iai0kKENPTkZJR19TVE9Q X01BQ0hJTkUpICs9IHN0b3BfbWFjaGluZS5vDQpkaWZmIC1OYXJ1IDIuNi1w YXRjaC9rZXJuZWwvcGFnZy5jIDIuNnBhZ2ctcGF0Y2gva2VybmVsL3BhZ2cu Yw0KLS0tIDIuNi1wYXRjaC9rZXJuZWwvcGFnZy5jCTE5NjktMTItMzEgMTg6 MDA6MDAuMDAwMDAwMDAwIC0wNjAwDQorKysgMi42cGFnZy1wYXRjaC9rZXJu ZWwvcGFnZy5jCTIwMDQtMDUtMjUgMTU6MzU6MjkuMDAwMDAwMDAwIC0wNTAw DQpAQCAtMCwwICsxLDM4NSBAQA0KKy8qIA0KKyAqIFBBR0cgKFByb2Nlc3Mg QWdncmVnYXRlcykgaW50ZXJmYWNlDQorICoNCisgKiANCisgKiBDb3B5cmln aHQgKGMpIDIwMDAtMjAwNCBTaWxpY29uIEdyYXBoaWNzLCBJbmMuICBBbGwg UmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkNCisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAqIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yDQorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mDQorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KKyAq IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu DQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KKyAqIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlDQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNl LCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCisgKg0K KyAqDQorICogQ29udGFjdCBpbmZvcm1hdGlvbjogIFNpbGljb24gR3JhcGhp Y3MsIEluYy4sIDE1MDAgQ3JpdHRlbmRlbiBMYW5lLA0KKyAqIE1vdW50YWlu IFZpZXcsIENBICA5NDA0Mywgb3I6DQorICogDQorICogaHR0cDovL3d3dy5z Z2kuY29tIA0KKyAqIA0KKyAqIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIHJl Z2FyZGluZyB0aGlzIG5vdGljZSwgc2VlOiANCisgKiANCisgKiBodHRwOi8v b3NzLnNnaS5jb20vcHJvamVjdHMvR2VuSW5mby9Ob3RpY2VFeHBsYW4NCisg Ki8NCisNCisvKg0KKyAqIERlc2NyaXB0aW9uOiAgVGhpcyBmaWxlLCBrZXJu ZWwvcGFnZy5jLCBjb250YWlucyB0aGUgcm91dGluZXMgdXNlZA0KKyAqICAg ICAgICAgICAgICAgdG8gaW1wbGVtZW50IHByb2Nlc3MgYWdncmVnYXRlcyAo cGFnZ3MpLiAgVGhlIHBhZ2cNCisgKiAgICAgICAgICAgICAgIGV4dGVuZHMg dGhlIHRhc2tfc3RydWN0IHRvIGFsbG93IGZvciB2YXJpb3VzIHByb2Nlc3MN CisgKiAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uIGNvbnRpbmVycy4gIEV4 YW1wbGVzIG9mIHN1Y2ggY29udGFpbmVycw0KKyAqICAgICAgICAgICAgICAg aW5jbHVkZSAiam9icyIgYW5kIGNsdXN0ZXIgYXBwbGljYXRpb25zIElEcy4g IFByb2Nlc3MNCisgKiAgICAgICAgICAgICAgIHNlc3Npb25zIGFuZCBncm91 cHMgY291bGQgaGF2ZSBiZWVuIGltcGxlbWVudGVkIHVzaW5nDQorICogICAg ICAgICAgICAgICBwYWdncyAoYWx0aG91Z2ggdGhlcmUgd291bGQgYmUgbGl0 dGxlIHB1cnBvc2UgaW4NCisgKiAgICAgICAgICAgICAgIG1ha2luZyB0aGF0 IGNoYW5nZSBhdCB0aGlzIGp1bmN0dXJlKS4gIFRoZSBwYWdnDQorICogICAg ICAgICAgICAgICBzdHJ1Y3R1cmUgbWFpbnRhaW5zIHBvaW50ZXJzIHRvIGNh bGxiYWNrIGZ1bmN0aW9ucyBhbmQNCisgKiAgICAgICAgICAgICAgIGRhdGEg c3RydWN1cmVzIG1haW50YWluZWQgaW4gbW9kdWxlcyB0aGF0IGhhdmUNCisg KiAgICAgICAgICAgICAgIHJlZ2lzdGVyZWQgd2l0aCB0aGUga2VybmVsIGFz IHBhZ2cgY29udGFpbmVyDQorICogICAgICAgICAgICAgICBwcm92aWRlcnMu DQorICovDQorDQorI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPg0KKw0KKyNp bmNsdWRlIDxsaW51eC9zbGFiLmg+DQorI2luY2x1ZGUgPGxpbnV4L3NjaGVk Lmg+DQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxs aW51eC9wYWdnLmg+DQorI2luY2x1ZGUgPGFzbS9zZW1hcGhvcmUuaD4NCisN CisvKiBsaXN0IG9mIHBhZ2cgaG9vayBlbnRyaWVzIHRoYXQgcmVmZXJlbmNl IHRoZSAibW9kdWxlIiBpbXBsZW1lbnRhdGlvbnMgKi8NCitzdGF0aWMgTElT VF9IRUFEKHBhZ2dfaG9va19saXN0KTsNCitzdGF0aWMgREVDTEFSRV9SV1NF TShwYWdnX2hvb2tfbGlzdF9zZW0pOw0KKw0KKw0KKy8qIA0KKyAqIHBhZ2df Z2V0DQorICoNCisgKiBHaXZlbiBhIHBhZ2dfbGlzdCBsaXN0IHN0cnVjdHVy ZSwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybg0KKyAqIGEgcG9pbnRlciB0 byB0aGUgcGFnZyBzdHJ1Y3QgdGhhdCBtYXRjaGVzIHRoZSBzZWFyY2gNCisg KiBrZXkuICBJZiB0aGUga2V5IGlzIG5vdCBmb3VuZCwgdGhlIGZ1bmN0aW9u IHdpbGwgcmV0dXJuIE5VTEwuDQorICoNCisgKiBUaGUgY2FsbGVyIHNob3Vs ZCBob2xkIGF0IGxlYXN0IGEgcmVhZCBsb2NrIG9uIHRoZSBwYWdnX2xpc3QN CisgKiBmb3IgdGFzayB1c2luZyBkb3duX3JlYWQoJnRhc2stPnBhZ2dfbGlz dC5zZW0pLg0KKyAqLw0KK3N0cnVjdCBwYWdnICoNCitwYWdnX2dldChzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGNoYXIgKmtleSkNCit7DQorCXN0cnVj dCBwYWdnICpwYWdnOw0KKw0KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBhZ2cs ICZ0YXNrLT5wYWdnX2xpc3QsIGVudHJ5KSB7DQorCQlpZiAoIXN0cmNtcChw YWdnLT5ob29rLT5uYW1lLGtleSkpDQorCQkJcmV0dXJuIHBhZ2c7DQorCX0N CisJcmV0dXJuIE5VTEw7DQorfQ0KKw0KKw0KKy8qDQorICogcGFnZ19hbGxv Yw0KKyAqDQorICogR2l2ZW4gYSB0YXNrIGFuZCBhIHBhZ2cgaG9vaywgdGhp cyBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlDQorICogYSBuZXcgcGFnZyBzdHJ1 Y3R1cmUsIGluaXRpYWxpemUgdGhlIHNldHRpbmdzLCBhbmQgaW5zZXJ0IHRo ZSBwYWdnIGludG8NCisgKiB0aGUgcGFnZ19saXN0IGZvciB0aGUgdGFzay4N CisgKg0KKyAqIFRoZSBjYWxsZXIgZm9yIHRoaXMgZnVuY3Rpb24gc2hvdWxk IGhvbGQgYXQgbGVhc3QgYSByZWFkIGxvY2sgb24gdGhlDQorICogcGFnZ19o b29rX2xpc3Rfc2VtIC0gb3IgZW5zdXJlIHRoYXQgdGhlIHBhZ2cgaG9vayBl bnRyeSBjYW5ub3QgYmUgDQorICogcmVtb3ZlZC4gSWYgdGhpcyBmdW5jdGlv biB3YXMgY2FsbGVkIGZyb20gdGhlIHBhZ2cgbW9kdWxlICh1c3VhbGx5IHRo ZQ0KKyAqIGNhc2UpLCB0aGVuIHRoZSBjYWxsZXIgbmVlZCBub3QgaG9sZCB0 aGlzIGxvY2suIFRoZSBjYWxsZXIgc2hvdWxkIGhvbGQgDQorICogYSB3cml0 ZSBsb2NrIG9uIGZvciB0aGUgdGFza3MgcGFnZ19zZW0uICBUaGlzIGNhbiBi ZSBsb2NrZWQgdXNpbmcgDQorICogZG93bl93cml0ZSgmdGFzay0+cGFnZ19z ZW0pDQorICovDQorc3RydWN0IHBhZ2cgKg0KK3BhZ2dfYWxsb2Moc3RydWN0 IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgcGFnZ19ob29rICpwYWdnX2hv b2spDQorew0KKwlzdHJ1Y3QgcGFnZyAqcGFnZzsNCisNCisJcGFnZyA9IGtt YWxsb2Moc2l6ZW9mKHN0cnVjdCBwYWdnKSwgR0ZQX0tFUk5FTCk7DQorCWlm ICghcGFnZykNCisJCXJldHVybiBOVUxMOw0KKw0KKwlwYWdnLT5ob29rID0g cGFnZ19ob29rOw0KKwlwYWdnLT5kYXRhID0gTlVMTDsNCisJYXRvbWljX2lu YygmcGFnZ19ob29rLT5yZWZjbnQpOyAgLyogSW5jcmVhc2UgaG9vaydzIHJl ZmVyZW5jZSBjb3VudCAqLw0KKwlsaXN0X2FkZF90YWlsKCZwYWdnLT5lbnRy eSwgJnRhc2stPnBhZ2dfbGlzdCk7DQorCXJldHVybiBwYWdnOw0KK30NCisN CisNCisvKg0KKyAqIHBhZ2dfZnJlZQ0KKyAqDQorICogVGhpcyBmdW5jdGlv biB3aWxsIGVuc3VyZSB0aGUgcGFnZyBpcyBkZWxldGVkIGZvcm0gDQorICog dGhlIGxpc3Qgb2YgcGFnZyBlbnRyaWVzIGZvciB0aGUgdGFzay4gRmluYWxs eSwgdGhlIG1lbW9yeSBmb3IgdGhlIA0KKyAqIHBhZ2cgaXMgZGlzY2FyZGVk Lg0KKyAqDQorICogVGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIHNob3Vs ZCBob2xkIGEgd3JpdGUgbG9jayBvbiB0aGUgcGFnZ19zZW0NCisgKiBmb3Ig dGhlIHRhc2suIFRoaXMgY2FuIGJlIGxvY2tlZCB1c2luZyBkb3duX3dyaXRl KCZ0YXNrLT5wYWdnX3NlbSkuDQorICoNCisgKiBQcmlvciB0byBjYWxsaW5n IHBhZ2dfZnJlZSwgdGhlIHBhZ2cgc2hvdWxkIGhhdmUgYmVlbiBkZXRhY2hl ZCBmcm9tIHRoZQ0KKyAqIHBhZ2cgY29udGFpbmVyIHJlcHJlc2VudGVkIGJ5 IHRoaXMgcGFnZy4gIFRoYXQgaXMgdXN1YWxseSBkb25lIHVzaW5nDQorICog cC0+aG9vay0+ZGV0YWNoKHRhc2ssIHBhZ2cpOw0KKyAqLw0KK3ZvaWQNCitw YWdnX2ZyZWUoc3RydWN0IHBhZ2cgKnBhZ2cpIA0KK3sNCisJYXRvbWljX2Rl YygmcGFnZy0+aG9vay0+cmVmY250KTsgLyogZGVjciB0aGUgcmVmZXJlbmNl IGNvdW50IG9uIHRoZSBob29rICovDQorCWxpc3RfZGVsKCZwYWdnLT5lbnRy eSk7DQorCWtmcmVlKHBhZ2cpOw0KK30NCisNCisNCisvKg0KKyAqIGdldF9w YWdnX2hvb2sNCisgKg0KKyAqIEdpdmVuIGEgcGFnZyBob29rIG5hbWUga2V5 LCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGEgcG9pbnRlcg0KKyAqIHRv IHRoZSBwYWdnX2hvb2sgc3RydWN0IHRoYXQgbWF0Y2hlcyB0aGUgbmFtZS4N CisgKiANCisgKiBZb3Ugc2hvdWxkIGhvbGQgZWl0aGVyIHRoZSB3cml0ZSBv ciByZWFkIGxvY2sgZm9yIHBhZ2dfaG9va19saXN0X3NlbQ0KKyAqIGJlZm9y ZSB1c2luZyB0aGlzIGZ1bmN0aW9uLiAgVGhpcyB3aWxsIGVuc3VyZSB0aGF0 IHRoZSBwYWdnX2hvb2tfbGlzdA0KKyAqIGRvZXMgbm90IGNoYW5nZSB3aGls ZSBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgbGlzdCBlbnRyaWVzLg0KKyAqLw0K K3N0YXRpYyBzdHJ1Y3QgcGFnZ19ob29rICoNCitnZXRfcGFnZ19ob29rKGNo YXIgKmtleSkNCit7DQorCXN0cnVjdCBwYWdnX2hvb2sgKnBhZ2dfaG9vazsN CisNCisJbGlzdF9mb3JfZWFjaF9lbnRyeShwYWdnX2hvb2ssICZwYWdnX2hv b2tfbGlzdCwgZW50cnkpIHsNCisJCWlmICghc3RyY21wKHBhZ2dfaG9vay0+ bmFtZSwga2V5KSkgew0KKwkJCXJldHVybiBwYWdnX2hvb2s7DQorCQl9DQor CX0NCisJcmV0dXJuIE5VTEw7DQorfQ0KKw0KKw0KKy8qDQorICogcGFnZ19o b29rX3JlZ2lzdGVyDQorICoNCisgKiBVc2VkIHRvIHJlZ2lzdGVyIGEgbmV3 IHBhZ2cgaG9vayBhbmQgZW50ZXIgaXQgaW50byB0aGUgcGFnZ19ob29rX2xp c3QuDQorICogVGhlIHNlcnZpY2UgbmFtZSBmb3IgYSBwYWdnIGhvb2sgaXMg cmVzdHJpY3RlZCB0byAzMiBjaGFyYWN0ZXJzLg0KKyAqDQorICogSW4gdGhl IGZ1dHVyZSBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBtYXkgYWxzbyBi ZSBkZWZpbmVkIHNvIHRoYXQgYWxsDQorICogZXhpc3RpbmcgdGFza3MgY2Fu IGJlIGFzc2lnbmVkIHRvIGEgZGVmYXVsdCBwYWdnIGVudHJ5IGZvciB0aGUg aG9vay4NCisgKiBIb3dldmVyLCB0aGlzIHdvdWxkIHJlcXVpcmUgaXRlcmF0 aW5nIHRocm91Z2ggdGhlIHRhc2tsaXN0LiAgVG8gZG8gdGhhdA0KKyAqIHJl cXVpcmVzIHRoYXQgdGhlIHRhc2tsaXN0X2xvY2sgYmUgcmVhZCBsb2NrZWQu ICBTaW5jZSB0aGUgaW5pdGlhbGl6YXRpb24NCisgKiBmdW5jdGlvbiBtaWdo dCBiZSBpbiBhIG1vZHVsZSwgYW5kIHRoZXJlZm9yZSBpdCBtaWdodCBzbGVl cCAoaW1wbGVtZW50b3JzDQorICogZGVjaXNpb24pLCBob2xkaW5nIHRoZSB0 YXNrbGlzdF9sb2NrIHNlZW1zIGxpa2UgYSBiYWQgaWRlYS4gSXQgbWF5IGJl IGENCisgKiByZXF1aXJlbWVudCB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBm dW5jdGlvbiB3aWxsIGJlIHN0cmljdGx5IGZvcmJpZGRlbg0KKyAqIGZyb20g bG9ja2luZyAtIGJ5IGdlbnRsZW1hbnMgYWdyZWVtZW50Li4uIA0KKyAqDQor ICogSWYgYSBtZW1vcnkgZXJyb3IgaXMgZW5jb3VudGVyZWQsIHRoZSBwYWdn IGhvb2sgaXMgdW5yZWdpc3RlcmVkIGFuZCBhbnkNCisgKiB0YXNrcyB0aGF0 IGhhdmUgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW5pdGlhbCBwYWdnIGNvbnRh aW5lciBhcmUgZGV0YWNoZWQNCisgKiBmcm9tIHRoYXQgY29udGFpbmVyLg0K KyAqLw0KK2ludA0KK3BhZ2dfaG9va19yZWdpc3RlcihzdHJ1Y3QgcGFnZ19o b29rICpwYWdnX2hvb2tfbmV3KQ0KK3sNCisJc3RydWN0IHBhZ2dfaG9vayAq cGFnZ19ob29rID0gTlVMTDsNCisNCisJLyogQUREIE5FVyBQQUdHIE1PRFVM RSBUTyBBQ0NFU1MgTElTVCAqLw0KKwlpZiAoIXBhZ2dfaG9va19uZXcpDQor CQlyZXR1cm4gLUVJTlZBTDsJCQkvKiBlcnJvciAqLw0KKwlpZiAoIWxpc3Rf ZW1wdHkoJnBhZ2dfaG9va19uZXctPmVudHJ5KSkNCisJCXJldHVybiAtRUlO VkFMOwkJCS8qIGVycm9yICovDQorCWlmIChwYWdnX2hvb2tfbmV3LT5uYW1l ID09IE5VTEwgfHwgc3RybGVuKHBhZ2dfaG9va19uZXctPm5hbWUpID4gUEFH R19OQU1FTE4pIA0KKwkJcmV0dXJuIC1FSU5WQUw7CQkJLyogZXJyb3IgKi8N CisNCisJLyogVHJ5IHRvIGluc2VydCBuZXcgaG9vayBlbnRyeSBpbnRvIHRo ZSBwYWdnIGhvb2sgbGlzdCAqLw0KKwlkb3duX3dyaXRlKCZwYWdnX2hvb2tf bGlzdF9zZW0pOw0KKw0KKwlwYWdnX2hvb2sgPSBnZXRfcGFnZ19ob29rKHBh Z2dfaG9va19uZXctPm5hbWUpOw0KKw0KKwlpZiAocGFnZ19ob29rKSB7DQor CQl1cF93cml0ZSgmcGFnZ19ob29rX2xpc3Rfc2VtKTsNCisJCXByaW50ayhL RVJOX1dBUk5JTkcgIkF0dGVtcHQgdG8gcmVnaXN0ZXIgZHVwbGljYXRlIg0K KwkJCQkiIFBBR0cgc3VwcG9ydCAobmFtZT0lcylcbiIsIHBhZ2dfaG9va19u ZXctPm5hbWUpOw0KKwkJcmV0dXJuIC1FQlVTWTsNCisJfQ0KKw0KKwkvKiBP a2F5LCB3ZSBjYW4gaW5zZXJ0IGludG8gdGhlIHBhZ2cgaG9vayBsaXN0ICov DQorCWxpc3RfYWRkX3RhaWwoJnBhZ2dfaG9va19uZXctPmVudHJ5LCAmcGFn Z19ob29rX2xpc3QpOw0KKwkvKiBzZXQgdGhlIHJlZiBjb3VudCB0byB6ZXJv ICovDQorCWF0b21pY19zZXQoJnBhZ2dfaG9va19uZXctPnJlZmNudCwgMCk7 DQorCS8qIHByaW50aygiREVCVUcgLSBwYWdnIGhvb2sgcmVnaXN0ZXIgLSBy ZWZjbnQgbm93OiAlZFxuIiwgDQorCQkgICAgIGF0b21pY19yZWFkKCZwYWdn X2hvb2tfbmV3LT5yZWZjbnQpKTsgKi8NCisJdXBfd3JpdGUoJnBhZ2dfaG9v a19saXN0X3NlbSk7DQorDQorCXByaW50ayhLRVJOX0lORk8gIlJlZ2lzdGVy aW5nIFBBR0cgc3VwcG9ydCBmb3IgKG5hbWU9JXMpXG4iLA0KKwkJCXBhZ2df aG9va19uZXctPm5hbWUpOw0KKw0KKwlyZXR1cm4gMDsJCQkJCS8qIHN1Y2Nl c3MgKi8NCisNCit9DQorDQorDQorLyoNCisgKiBwYWdnX2hvb2tfdW5yZWdp c3Rlcg0KKyAqDQorICogVXNlZCB0byB1bnJlZ2lzdGVyIHBhZ2cgaG9va3Mg YW5kIHJlbW92ZSB0aGVtIGZyb20gdGhlIHBhZ2dfaG9va19saXN0Lg0KKyAq IE9uY2UgdGhlIHBhZ2cgaG9vayBlbnRyeSBpbiB0aGUgcGFnZ19ob29rX2xp c3QgaXMgZm91bmQsIHdlIGNoZWNrIGlmIA0KKyAqIHRoZSBwYWdnIGhvb2sg aXMgc3RpbGwgaW4gdXNlLiAgDQorICovDQoraW50DQorcGFnZ19ob29rX3Vu cmVnaXN0ZXIoc3RydWN0IHBhZ2dfaG9vayAqcGFnZ19ob29rX29sZCkNCit7 DQorCXN0cnVjdCBwYWdnX2hvb2sgKnBhZ2dfaG9vazsNCisNCisJLyogQ2hl Y2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBhcmd1bWVudHMgKi8NCisJaWYgKCFw YWdnX2hvb2tfb2xkKQ0KKwkJcmV0dXJuIC1FSU5WQUw7CQkJLyogZXJyb3Ig Ki8NCisJaWYgKGxpc3RfZW1wdHkoJnBhZ2dfaG9va19vbGQtPmVudHJ5KSkN CisJCXJldHVybiAtRUlOVkFMOwkJCS8qIGVycm9yICovDQorCWlmIChwYWdn X2hvb2tfb2xkLT5uYW1lID09IE5VTEwpDQorCQlyZXR1cm4gLUVJTlZBTDsJ CQkvKiBlcnJvciAqLw0KKw0KKwlkb3duX3dyaXRlKCZwYWdnX2hvb2tfbGlz dF9zZW0pOw0KKw0KKwlwYWdnX2hvb2sgPSBnZXRfcGFnZ19ob29rKHBhZ2df aG9va19vbGQtPm5hbWUpOw0KKw0KKwkvKiBwcmludGsoIkRFQlVHIC0gcGFn ZyBob29rIHVucmVnaXN0ZXIgLSByZWZjbnQgbm93OiAlZFxuIiwgDQorCSAq CSAgICAgYXRvbWljX3JlYWQoJnBhZ2dfaG9vay0+cmVmY250KSk7DQorCSAq Lw0KKw0KKwlpZiAocGFnZ19ob29rICYmIHBhZ2dfaG9vayA9PSBwYWdnX2hv b2tfb2xkKSB7DQorCQkvKiBJcyB0aGUgcGFnZyBob29rIGJ1c3k/ICBDaGVj ayBpZiB0aGUgcmVmY250IGlzIHplcm8gKi8NCisJCWlmIChhdG9taWNfcmVh ZCgmcGFnZ19ob29rLT5yZWZjbnQpICE9IDApIHsNCisJCQl1cF93cml0ZSgm cGFnZ19ob29rX2xpc3Rfc2VtKTsNCisJCQlwcmludGsoS0VSTl9JTkZPICJG YWlsZWQgYXR0ZW1wdCB0byB1bnJlZ2lzdGVyIGEgUEFHRyBob29rIGZyb206 ICVzXG4iLCBwYWdnX2hvb2tfb2xkLT5uYW1lKTsNCisJCQlyZXR1cm4gLUVC VVNZOw0KKwkJfQ0KKwkJbGlzdF9kZWxfaW5pdCgmcGFnZ19ob29rLT5lbnRy eSk7DQorCQl1cF93cml0ZSgmcGFnZ19ob29rX2xpc3Rfc2VtKTsNCisNCisJ CXByaW50ayhLRVJOX0lORk8gIlVucmVnaXN0ZXJpbmcgUEFHRyBzdXBwb3J0 IGZvciINCisJCQkJIiAobmFtZT0lcylcbiIsIHBhZ2dfaG9va19vbGQtPm5h bWUpOw0KKw0KKwkJcmV0dXJuIDA7CQkJLyogc3VjY2VzcyAqLw0KKwl9DQor DQorCXVwX3dyaXRlKCZwYWdnX2hvb2tfbGlzdF9zZW0pOw0KKw0KKwlwcmlu dGsoS0VSTl9XQVJOSU5HICJBdHRlbXB0IHRvIHVucmVnaXN0ZXIgUEFHRyBz dXBwb3J0IChuYW1lPSVzKSINCisJCQkiIGZhaWxlZCAtIG5vdCBmb3VuZFxu IiwgcGFnZ19ob29rX29sZC0+bmFtZSk7DQorCQ0KKwlyZXR1cm4gLUVJTlZB TDsJCQkJLyogZXJyb3IgKi8NCit9DQorDQorDQorLyoNCisgKiBfX3BhZ2df YXR0YWNoDQorICoNCisgKiBVc2VkIHRvIGF0dGFjaCBhIG5ldyB0YXNrIHRv IHRoZSBzYW1lIHBhZ2cgY29udGFpbmVycyB0byB3aGljaCBpdCdzIHBhcmVu dA0KKyAqIGlzIGF0dGFjaGVkLg0KKyAqDQorICogVGhlICJmcm9tIiBhcmd1 bWVudCBpcyB0aGUgcGFyZW50IHRhc2suICBUaGUgInRvIiBhcmd1bWVudCBp cyB0aGUgY2hpbGQNCisgKiB0YXNrLiANCisgKg0KKyAqLw0KK2ludCBfX3Bh Z2dfYXR0YWNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqdG9fdGFzaywgc3RydWN0 IHRhc2tfc3RydWN0ICpmcm9tX3Rhc2spDQorew0KKwlpbnQgIAkJICAgcmV0 Y29kZSA9IDA7DQorCXN0cnVjdCBwYWdnICpmcm9tX3BhZ2c7DQorDQorCS8q IGxvY2sgdGhlIHBhcmVudHMgcGFnZ19saXN0IHdlIGFyZSBjb3B5aW5nIGZy b20gKi8NCisJZG93bl9yZWFkKCZmcm9tX3Rhc2stPnBhZ2dfc2VtKTsgLyog cmVhZCBsb2NrIHRoZSBwYWdnIGxpc3QgKi8NCisNCisJbGlzdF9mb3JfZWFj aF9lbnRyeShmcm9tX3BhZ2csICZmcm9tX3Rhc2stPnBhZ2dfbGlzdCwgZW50 cnkpIHsNCisJCXN0cnVjdCBwYWdnICp0b19wYWdnID0gTlVMTDsNCisNCisJ CXRvX3BhZ2cgPSBwYWdnX2FsbG9jKHRvX3Rhc2ssIGZyb21fcGFnZy0+aG9v ayk7DQorCQlpZiAoIXRvX3BhZ2cpIHsNCisJCQlyZXRjb2RlID0gLUVOT01F TTsNCisJCQlnb3RvIGVycm9yX3JldHVybjsNCisJCX0NCisJCXJldGNvZGUg PSB0b19wYWdnLT5ob29rLT5hdHRhY2godG9fdGFzaywgdG9fcGFnZywgZnJv bV9wYWdnLT5kYXRhKTsNCisJCWlmIChyZXRjb2RlICE9IDApIHsNCisJCQkv KiBhdHRhY2ggc2hvdWxkIGlzc3VlIGVycm9yIG1lc3NhZ2UgKi8NCisJCQln b3RvIGVycm9yX3JldHVybjsNCisJCX0NCisJfQ0KKw0KKwl1cF9yZWFkKCZm cm9tX3Rhc2stPnBhZ2dfc2VtKTsgLyogdW5sb2NrIHRoZSBwYWdnIGxpc3Qg Ki8NCisNCisJcmV0dXJuIDA7CQkJCQkvKiBzdWNjZXNzICovDQorDQorICBl cnJvcl9yZXR1cm46DQorCS8qIA0KKwkgKiBDbGVhbiB1cCBhbGwgdGhlIHBh Z2cgYXR0YWNobWVudHMgbWFkZSBvbiBiZWhhbGYgb2YgdGhlIG5ldw0KKwkg KiB0YXNrLiAgU2V0IG5ldyB0YXNrIHBhZ2cgcHRyIHRvIE5VTEwgZm9yIHJl dHVybi4NCisJICovDQorCXVwX3JlYWQoJmZyb21fdGFzay0+cGFnZ19zZW0p OyAvKiB1bmxvY2sgdGhlIHBhZ2cgbGlzdCAqLw0KKwlfX3BhZ2dfZGV0YWNo KHRvX3Rhc2spOw0KKwlyZXR1cm4gcmV0Y29kZTsJCQkJLyogZmFpbHVyZSAq Lw0KK30NCisNCisvKg0KKyAqIF9fcGFnZ19kZXRhY2gNCisgKg0KKyAqIFVz ZWQgdG8gZGV0YWNoIGEgdGFzayBmcm9tIGFsbCBwYWdnIGNvbnRhaW5lcnMg dG8gd2hpY2ggaXQgaXMgYXR0YWNoZWQuDQorICogDQorICogbGlzdF9mb3Jf ZWFjaCB1c2VkIGhlcmUgYmVjYXVzZSB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBs aXN0IGFmdGVyIGEgDQorICogcGFnZyBpcyBkZXRhY2hlZC4NCisgKi8NCitp bnQNCitfX3BhZ2dfZGV0YWNoKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykN Cit7DQorCXN0cnVjdCBwYWdnICpwYWdnOw0KKwlzdHJ1Y3QgcGFnZyAqcGFn Z3RtcDsNCisJaW50IHJldGNvZGUgPSAwOw0KKwlpbnQgcmV0dG1wID0gMDsN CisNCisJLyogUmVtb3ZlIHJlZi4gdG8gcGFnZ3MgZnJvbSB0YXNrIGltbWVk aWF0ZWx5ICovDQorCWRvd25fd3JpdGUoJnRhc2stPnBhZ2dfc2VtKTsgLyog d3JpdGUgbG9jayBwYWdnIGxpc3QgKi8NCisNCisJbGlzdF9mb3JfZWFjaF9l bnRyeV9zYWZlKHBhZ2csIHBhZ2d0bXAsICZ0YXNrLT5wYWdnX2xpc3QsIGVu dHJ5KSB7DQorCQlyZXR0bXAgPSBwYWdnLT5ob29rLT5kZXRhY2godGFzaywg cGFnZyk7DQorCQlpZiAocmV0dG1wKSB7DQorCQkJLyogYW4gZXJyb3IgbWVz c2FnZSBzaG91bGQgYmUgbG9nZ2VkIGluIGZyZWVfcGFnZyAqLw0KKwkJCXJl dGNvZGUgPSByZXR0bXA7DQorCQl9DQorCQlwYWdnX2ZyZWUocGFnZyk7DQor CX0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl1 cF93cml0ZSgmdGFzay0+cGFnZ19zZW0pOyAvKiB3cml0ZSB1bmxvY2sgdGhl IHBhZ2cgbGlzdCAqLw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgDQorCXJldHVybiByZXRjb2RlOyAgIC8qIDAgPSBzdWNjZXNzLCBl bHNlIHJldHVybiBsYXN0IGNvZGUgZm9yIGZhaWx1cmUgKi8NCit9DQorDQor DQorLyoNCisgKiBfX3BhZ2dfZXhlYw0KKyAqDQorICogVXNlZCB0byB3aGVu IGEgcHJvY2VzcyB0aGF0IGlzIGluIGEgcGFnZyBjb250YWluZXIgZG9lcyBh biBleGVjLg0KKyAqDQorICogVGhlICJmcm9tIiBhcmd1bWVudCBpcyB0aGUg dGFzay4gIFRoZSAibmFtZSIgYXJndW1lbnQgaXMgdGhlIG5hbWUNCisgKiBv ZiB0aGUgcHJvY2VzcyBiZWluZyBleGVjJ2VkLg0KKyAqDQorICovDQoraW50 IF9fcGFnZ19leGVjKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykgDQorew0K KwlzdHJ1Y3QgcGFnZwkqcGFnZzsNCisNCisJLyogbG9jayB0aGUgcGFyZW50 cyBwYWdnX2xpc3Qgd2UgYXJlIGNvcHlpbmcgZnJvbSAqLw0KKwlkb3duX3Jl YWQoJnRhc2stPnBhZ2dfc2VtKTsgLyogbG9jayB0aGUgcGFnZyBsaXN0ICov DQorDQorCWxpc3RfZm9yX2VhY2hfZW50cnkocGFnZywgJnRhc2stPnBhZ2df bGlzdCwgZW50cnkpIHsNCisJCWlmIChwYWdnLT5ob29rLT5leGVjKSAvKiBj b25kaXRpb25hbCBiZWNhdXNlIGl0J3Mgb3B0aW9uYWwgKi8NCisJCQlwYWdn LT5ob29rLT5leGVjKHRhc2ssIHBhZ2cpOw0KKwl9DQorDQorCXVwX3JlYWQo JnRhc2stPnBhZ2dfc2VtKTsgLyogdW5sb2NrIHRoZSBwYWdnIGxpc3QgKi8N CisJcmV0dXJuIDA7DQorfQ0KKw0KKw0KK0VYUE9SVF9TWU1CT0wocGFnZ19n ZXQpOw0KK0VYUE9SVF9TWU1CT0wocGFnZ19hbGxvYyk7DQorRVhQT1JUX1NZ TUJPTChwYWdnX2ZyZWUpOw0KK0VYUE9SVF9TWU1CT0wocGFnZ19ob29rX3Jl Z2lzdGVyKTsNCitFWFBPUlRfU1lNQk9MKHBhZ2dfaG9va191bnJlZ2lzdGVy KTsNCg== ---2136806248-1669222636-1085667336=:636588--