From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S265240AbUETVRb (ORCPT ); Thu, 20 May 2004 17:17:31 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S265250AbUETVRb (ORCPT ); Thu, 20 May 2004 17:17:31 -0400 Received: from cfcafw.SGI.COM ([198.149.23.1]:1199 "EHLO omx1.americas.sgi.com") by vger.kernel.org with ESMTP id S265240AbUETVQw (ORCPT ); Thu, 20 May 2004 17:16:52 -0400 Date: Thu, 20 May 2004 16:16:49 -0500 From: Erik Jacobson To: linux-kernel@vger.kernel.org Subject: Re: [PATCH] Process Aggregates (PAGG) support for the 2.6 kernel In-Reply-To: Message-ID: References: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-2136806248-259741563-1085087809=:212943" 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-259741563-1085087809=:212943 Content-Type: TEXT/PLAIN; charset=US-ASCII Attached is a new PAGG patch for the 2.6.6 kernel. I'm just inserting it here in the old discussion thread for now. Note that this patch implements much of the feedback received. However, there are still some pieces of feedback we need to implement yet. -- Erik Jacobson - Linux System Software - Silicon Graphics - Eagan, Minnesota ---2136806248-259741563-1085087809=:212943 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="linux-2.6.6-pagg.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="linux-2.6.6-pagg.patch" ZGlmZiAtTmFydSAyLjYtcGF0Y2gvRG9jdW1lbnRhdGlvbi9wYWdnLnR4dCAy LjZwYWdnLXBhdGNoL0RvY3VtZW50YXRpb24vcGFnZy50eHQNCi0tLSAyLjYt cGF0Y2gvRG9jdW1lbnRhdGlvbi9wYWdnLnR4dAkxOTY5LTEyLTMxIDE4OjAw OjAwLjAwMDAwMDAwMCAtMDYwMA0KKysrIDIuNnBhZ2ctcGF0Y2gvRG9jdW1l bnRhdGlvbi9wYWdnLnR4dAkyMDA0LTA0LTMwIDE2OjU3OjM4LjAwMDAwMDAw MCAtMDUwMA0KQEAgLTAsMCArMSwxNTcgQEANCitMaW51eCBQcm9jZXNzIEFn Z3JlZ2F0ZXMgKFBBR0cpDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KKw0KKzEuIERlc2NyaXB0aW9uDQorDQorVGhlIHByb2Nlc3MgYWdn cmVnYXRlcyBpbmZyYXN0cnVjdHVyZSwgb3IgUEFHRywgcHJvdmlkZXMgYSBn ZW5lcmFsaXplZA0KK21lY2hhbmlzbSBmb3IgcHJvdmlkaW5nIGFyYml0cmFy eSBwcm9jZXNzIGdyb3VwcyBpbiBMaW51eC4gIFBBR0cgY29uc2lzdHMNCitv ZiBhIHNlcmllcyBvZiBmdW5jdGlvbnMgZm9yIHJlZ2lzdGVyaW5nIGFuZCB1 bnJlZ2lzdGVyaW5nIHN1cHBvcnQNCitmb3IgbmV3IHR5cGVzIG9mIHByb2Nl c3MgYWdncmVnYXRpb24gY29udGFpbmVycyB3aXRoIHRoZSBrZXJuZWwuDQor VGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBzdXBwb3J0IGN1cnJlbnRseSBwcm92 aWRlZCB3aXRoaW4gTGludXggdGhhdA0KK2FsbG93cyBmb3IgZHluYW1pYyBz dXBwb3J0IG9mIGZpbGVzeXN0ZW1zLCBibG9jayBhbmQgY2hhcmFjdGVyIGRl dmljZXMsDQorc3ltYm9sIHRhYmxlcywgbmV0d29yayBkZXZpY2VzLCBzZXJp YWwgZGV2aWNlcywgYW5kIGV4ZWN1dGlvbiBkb21haW5zLg0KK1RoaXMgaW1w bGVtZW50YXRpb24gb2YgUEFHRyBwcm92aWRlcyBkZXZlbG9wZXJzIHRoZSBi YXNpYyBob29rcyBuZWNlc3NhcnkNCit0byBpbXBsZW1lbnQga2VybmVsIG1v ZHVsZXMgZm9yIHNwZWNpZmljIHByb2Nlc3MgY29udGFpbmVycywgc3VjaCBh cw0KK3RoZSBqb2IgY29udGFpbmVyLg0KKw0KK1RoZSBkb19mb3JrIGZ1bmN0 aW9uIGluIHRoZSBrZXJuZWwgd2FzIGFsdGVyZWQgdG8gc3VwcG9ydCBQQUdH LiAgSWYgYQ0KK3Byb2Nlc3MgaXMgYXR0YWNoZWQgdG8gYW55IFBBR0cgY29u dGFpbmVycyBhbmQgc3Vic2VxdWVudGx5IGZvcmtzIGENCitjaGlsZCBwcm9j ZXNzLCB0aGUgY2hpbGQgcHJvY2VzcyB3aWxsIGFsc28gYmUgYXR0YWNoZWQg dG8gdGhlIHNhbWUgUEFHRw0KK2NvbnRhaW5lcnMuICBUaGUgUEFHRyBjb250 YWluZXJzIGludm9sdmVkIGR1cmluZyB0aGUgZm9yayBhcmUgbm90aWZpZWQN Cit0aGF0IGEgbmV3IHByb2Nlc3MgaGFzIGJlZW4gYXR0YWNoZWQuICBUaGUg bm90aWZpY2F0aW9uIGlzIGFjY29tcGxpc2hlZA0KK3ZpYSBhIGNhbGxiYWNr IGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IHRoZSBQQUdHIG1vZHVsZS4NCisNCitU aGUgZG9fZXhpdCBmdW5jdGlvbiBpbiB0aGUga2VybmVsIGhhcyBhbHNvIGJl ZW4gYWx0ZXJlZC4gIElmIGEgcHJvY2Vzcw0KK2lzIGF0dGFjaGVkIHRvIGFu eSBQQUdHIGNvbnRhaW5lcnMgYW5kIHRoYXQgcHJvY2VzcyBpcyBleGl0aW5n LCB0aGUgUEFHRw0KK2NvbnRhaW5lcnMgYXJlIG5vdGlmaWVkIHRoYXQgYSBw cm9jZXNzIGhhcyBkZXRhY2hlZCBmcm9tIHRoZSBjb250YWluZXIuDQorVGhl IG5vdGlmaWNhdGlvbiBpcyBhY2NvbXBsaXNoZWQgdmlhIGEgY2FsbGJhY2sg ZnVuY3Rpb24gcHJvdmlkZWQgYnkNCit0aGUgUEFHRyBtb2R1bGUuDQorDQor VGhlIHN5c19leGVjdmUgZnVuY3Rpb24gaGFzIGJlZW4gbW9kaWZpZWQgdG8g c3VwcG9ydCBhbiBvcHRpb25hbCBjYWxsb3V0DQordGhhdCBjYW4gYmUgcnVu IHdoZW4gYSBwcm9jZXNzIGluIGEgcGFnZyBsaXN0IGRvZXMgYW4gZXhlYy4g IEl0IGNhbiBiZSANCit1c2VkLCBmb3IgZXhhbXBsZSwgYnkgb3RoZXIga2Vy bmVsIG1vZHVsZXMgdGhhdCB3aXNoIHRvIGRvIGFkdmFuY2VkIENQVQ0KK3Bs YWNlbWVudCBvbiBtdWx0aS1wcm9jZXNzb3Igc3lzdGVtcyAoanVzdCBvbmUg ZXhhbXBsZSkuDQorDQorQWRkaXRpb25hbCBkZXRhaWxzIGNvbmNlcm5pbmcg dGhpcyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcHJvY2VzcyBhZ2dyZWdhdGVz DQoraW5mcmFzdHJ1Y3R1cmUgYXJlIGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlv bnMgdGhhdCBmb2xsb3cuDQorDQorDQorMi4gIEtlcm5lbCBDaGFuZ2VzDQor DQorVGhpcyBzZWN0aW9uIGRlc2NyaWJlIHRoZSBmaWxlcyBhbmQgZGF0YSBz dHJjdXRydWVzIHRoYXQgYXJlIGludm9sdmVkIGluIHRoaXMNCitpbXBsZW1l bnRhdGlvbiBvZiBQQUdHLiAgQm90aCBtb2RpZmllZCBhcyB3ZWxsIGFzIG5l dyBmaWxlcyBhbmQgZGF0YQ0KK3N0cnVjdHVyZXMgYXJlIGRpc2N1c3NlZC4N CisNCisyLjEuIE1vZGlmaWVkIEZpbGVzDQorDQorVGhlIGZvbGxvd2luZyBm aWxlcyB3ZXJlIG1vZGlmaWVkIHRvIGltcGxlbWVudCBQQUdHOg0KKw0KKy0g IGluY2x1ZGUvbGludXgvaW5pdF90YXNrLmgNCistICBpbmNsdWRlL2xpbnV4 L3NjaGVkLmgNCistICBrZXJuZWwvTWFrZWZpbGUNCistICBrZXJuZWwvZXhp dC5jDQorLSAga2VybmVsL2ZvcmsuYw0KKy0gIGZzL2V4ZWMuYw0KKy0gIGlu aXQvS2NvbmZpZw0KKw0KKzIuMi4gTmV3IEZpbGVzDQorDQorVGhlIGZvbGxv d2luZyBmaWxlcyB3ZXJlIGFkZGVkIHRvIGltcGxlbWVudCBQQUdHOg0KKw0K Ky0gIERvY3VtZW50YXRpb24vcGFnZy50eHQNCistICBpbmNsdWRlL2xpbnV4 L3BhZ2cuaA0KKy0gIGtlcm5lbC9wYWdnLmMNCisNCisNCisyLjMuIE1vZGlm aWVkIERhdGEgU3RydWN0dXJlcw0KKw0KK1RoZSBmb2xsb3dpbmcgZXhpc3Rp bmcgZGF0YSBzdHJ1Y3R1cmVzIHdlcmUgYWx0ZXJlZCB0byBpbXBsZW1lbnQg UEFHRy4NCisNCistICBzdHJ1Y3QgdGFza19zdHJ1Y3Q6ICAgICAgICAgIChp bmNsdWRlL2xpbnV4L3NjaGVkLmgpDQorICAgICBzdHJ1Y3QgcGFnZ19saXN0 ICBwYWdnX2xpc3Q7ICAgICAvKiBMaXN0IG9mIHBhZ2cgY29udGFpbmVycyAq Lw0KKw0KK1RoaXMgbmV3IG1lbWJlciBpbiB0YXNrX3N0cnVjdCwgcGFnZ19s aXN0LCBwb2ludHMgdG8gdGhlIGxpc3Qgb2YgcGFnZw0KK2NvbnRhaW5lcnMg dG8gd2hpY2ggdGhlIHByb2Nlc3MgaXMgY3VycmVudGx5IGF0dGFjaGVkLg0K Kw0KKzIuNC4gTmV3IERhdGEgU3RydWN0dXJlcw0KKw0KK1RoZSBmb2xsb3dp bmcgbmV3IGRhdGEgc3RydWN0dXJlcyB3ZXJlIGludHJvZHVjZWQgdG8gaW1w bGVtZW50IFBBR0cuDQorDQorLSAgc3RydWN0IHBhZ2c6ICAgICAgICAgIChp bmNsdWRlL2xpbnV4L3BhZ2cuaCkNCisgICAgIHN0cnVjdCBwYWdnX2hvb2sg Kmhvb2sJCSAgICAgLyogUHRyIHRvIHBhZ2cgbW9kdWxlIGVudHJ5ICovDQor ICAgICB2b2lkIAkJKmRhdGE7ICAgICAgICAgICAgICAgLyogVGFzayBzcGVj aWZpYyBkYXRhICovDQorICAgICBzdHJ1Y3QgbGlzdF9oZWFkICAgZW50cnk7 CSAgIAkgICAgIC8qIExpc3QgY29ubmVjdGlvbiAqLwkNCisgICAgIA0KKy0g IHN0cnVjdCBwYWdnX2hvb2s6ICAgICAgICAoaW5jbHVkZS9saW51eC9wYWdn LmgpDQorICAgICBzdHJ1Y3QgbW9kdWxlICptb2R1bGU7ICAgICAgICAgICAg ICAgICAgLyogUHRyIHRvIFBBR0cgbW9kdWxlICovDQorICAgICBjaGFyICpu YW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEFHRyBob29r IG5hbWUgLSByZXN0cmljdGVkDQorCQkJCQkgICAgICAqIHRvIDMyIGNoYXJh Y3RlcnMuICAqLw0KKyAgICAgaW50ICAoKmF0dGFjaCkoc3RydWN0IHRhc2tf c3RydWN0ICosIC8qIEZ1bmN0aW9uIHRvIGF0dGFjaCAqLw0KKyAgICAgICAg ICAgICAgIHN0cnVjdCBwYWdnICosDQorICAgICAgICAgICAgICAgdm9pZCAq KTsNCisgICAgIGludCAgKCpkZXRhY2gpKHN0cnVjdCB0YXNrX3N0cnVjdCAq LCAvKiBGdW5jdGlvbiB0byBkZXRhY2ggKi8NCisgICAgICAgICAgICAgICBz dHJ1Y3QgcGFnZyAqKTsNCisgICAgIGludCAgKCppbml0KShzdHJ1Y3QgdGFz a19zdHJ1Y3QgKiwgICAvKiBMb2FkIHRhc2sgaW5pdCBmdW5jLiAqLw0KKwkJ ICAgICBzdHJ1Y3QgcGFnZyAqKTsNCisgICAgIHZvaWQgICpkYXRhOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBNb2R1bGUgc3BlY2lmaWMgZGF0 YSAqLw0KKyAgICAgc3RydWN0IGxpc3RfaGVhZCBlbnRyeTsJCSAgICAgLyog TGlzdCBjb25uZWN0aW9uICovDQorICAgICB2b2lkICAgICgqZXhlYykoc3Ry dWN0IHRhc2tfc3RydWN0ICosIHN0cnVjdCBwYWdnICopOyAvKiBleGVjIGZ1 bmMgcHRyICovDQorDQorVGhlIHBhZ2cgc3RydWN0dXJlIHByb3ZpZGVzIHRo ZSBwcm9jZXNzJyByZWZlcmVuY2UgdG8gdGhlIFBBR0cNCitjb250YWluZXJz IHByb3ZpZGVkIGJ5IHRoZSBQQUdHIG1vZHVsZXMuICBUaGUgYXR0YWNoIGZ1 bmN0aW9uIHBvaW50ZXINCitpcyB0aGUgZnVuY3Rpb24gdXNlZCB0byBub3Rp ZnkgdGhlIHJlZmVyZW5jZWQgUEFHRyBjb250YWluZXIgdGhhdCB0aGUNCitw cm9jZXNzIGlzIGJlaW5nIGF0dGFjaGVkLiAgVGhlIGRldGFjaCBmdW5jdGlv biBwb2ludGVyIGlzIHVzZWQgdG8gbm90aWZ5DQordGhlIHJlZmVyZW5jZWQg UEFHRyBjb250YWluZXIgdGhhdCB0aGUgcHJvY2VzcyBpcyBleGl0aW5nIG9y IG90aGVyd2lzZQ0KK2RldGFjaGluZyBmcm9tIHRoZSBjb250YWluZXIuICBU aGUgZXhlYyBmdW5jdGlvbiBwb2ludGVyIGlzIHVzZWQgd2hlbiBhDQorcHJv Y2VzcyBpbiB0aGUgcGFnZyBjb250YWluZXIgZXhlYydzIGEgbmV3IHByb2Nl c3MuICBUaGlzIGlzIG9wdGlvbmFsIGFuZA0KK21heSBiZSBzZXQgdG8gTlVM TCBpZiBpdCBpcyBub3QgbmVlZGVkIGJ5IHRoZSBwYWdnIG1vZHVsZS4NCisN CitUaGUgcGFnZ19ob29rIHN0cnVjdHVyZSBwcm92aWRlcyB0aGUgcmVmZXJl bmNlIHRvIHRoZSBtb2R1bGUgdGhhdA0KK2ltcGxlbWVudHMgYSB0eXBlIG9m IFBBR0cgY29udGFpbmVyLiAgSW4gYWRkaXRpb24gdG8gdGhlIGZ1bmN0aW9u IHBvaW50ZXJzDQorZGVzY3JpYmVkIGNvbmNlcm5pbmcgcGFnZywgdGhpcyBz dHJ1Y3R1cmUgcHJvdmlkZXMgYW4gYWRkaXRpb24NCitmdW5jdGlvbiBwb2lu dGVyLiAgVGhlIGluaXQgZnVuY3Rpb24gcG9pbnRlciBpcyBjdXJyZW50bHkg bm90IHVzZWQNCitidXQgd2lsbCBiZSBhdmFpbGFibGUgaW4gdGhlIGZ1dHVy ZS4gIEZ1dHVyZSB1c2Ugb2YgdGhlIGluaXQgZnVuY3Rpb24NCit3aWxsIGJl IG9wdGlvbmFsIGFuZCB3aWxsIHVzZWQgdG8gYXR0YWNoIGN1cnJlbnRseSBy dW5uaW5nIHByb2Nlc3NlcyB0bw0KK2EgZGVmYXVsdCBQQUdHIGNvbnRhaW5l ciB3aGVuIGEgUEFHRyBtb2R1bGUgaXMgbG9hZGVkIG9uIGEgcnVubmluZyBz eXN0ZW0uDQorDQorDQorMi41LiBNb2RpZmllZCBGdW5jdGlvbnMNCisNCitU aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJlIGNoYW5nZWQgdG8gaW1wbGVt ZW50IFBBR0c6DQorDQorLSAgZG9fZm9yazogICAgIChrZXJuZWwvZm9yay5j KQ0KKyAgICAgLyogZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHBzZXVkb2NvZGUg YmVmb3JlIGFkZCB0byBydW4tcXVldWUgICovICANCisgICAgIElmIHBhcmVu dCBwcm9jZXNzIHBhZ2cgbGlzdCBpcyBub3QgZW1wdHkNCisgICAgICAgICAg Q2FsbCBhdHRhY2hfcGFnZ19saXN0IGZ1bmN0aW9uIHdpdGggY2hpbGQgdGFz a19zdHJ1Y3QgYXMgYXJndW1lbnQNCistICBkb19leGl0OiAgICAgKGtlcm5l bC9leGl0LmMpDQorICAgICAvKiBleGVjdXRlIHRoZSBmb2xsb3dpbmcgcHNl dWRvY29kZSBwcmlvciB0byBzY2hlZHVsZSBjYWxsICovDQorICAgICBJZiBj dXJyZW50IHByb2Nlc3MgcGFnZyBsaXN0IGlzIG5vdCBlbXB0eQ0KKyAgICAg ICAgICAgICAgIENhbGwgZGV0YWNoX3BhZ2dfbGlzdCBmdW5jdGlvbiB3aXRo IGN1cnJlbnQgdGFza19zdHJ1Y3QgDQorLSAgc3lzX2V4ZWN2ZTogIChmcy9l eGVjLmMpDQorICAgICAvKiBXaGVuIGEgcHJvY2VzcyBpbiBhIHBhZ2cgZXhl YydzLCBhbiBvcHRpb25hbCBjYWxsb3V0IGNhbiBiZSBydW4uICBUaGlzDQor ICAgICAgICBpcyBpbXBsZW1lbnRlZCB3aXRoIGFuIG9wdGlvbmFsIGZ1bmN0 aW9uIHBvaW50ZXIgaW4gdGhlIHBhZ2dfaG9vay4gICovDQorDQorMi42IE5l dyBGdW5jdGlvbnMNCisNCitUaGUgZm9sbG93aW5nIG5ldyBmdW5jdGlvbnMg d2VyZSBhZGRlZCB0byBpbXBsZW1lbnQgUEFHRzoNCisNCistICBpbnQgIHJl Z2lzdGVyX3BhZ2dfaG9vayhzdHJ1Y3QgcGFnZ19ob29rICopOyAgKGtlcm5l bC9wYWdnLmMpDQorICAgICBBZGQgbW9kdWxlIGVudHJ5IGludG8gdGFibGUg b2YgcGFnZyBtb2R1bGVzDQorLSAgaW50IHVucmVnaXN0ZXJfcGFnZ19ob29r KHN0cnVjdCBwYWdnX2hvb2sgKik7IChrZXJuZWwvcGFnZy5jKQ0KKyAgICAg RmluZCBtb2R1bGUgZW50cnkgaW4gbGlzdCBvZiBwYWdnIG1vZHVsZXMNCisg ICAgICAgICAgRm9yZWFjaCB0YXNrDQorCQlJZiB0YXNrIGlzIGF0dGFjaGVk IHRvIHRoaXMgcGFnZyBtb2R1bGUNCisJCQlyZXR1cm4gZXJyb3INCisJICBJ ZiBubyB0YXNrcyBhcmUgcmVmZXJlbmNpbmcgdGhpcyBtb2R1bGUNCisJCXJl bW92ZSBtb2R1bGUgZW50cnkgZnJvbSBsaXN0IG9mIHBhZ2cgbW9kdWxlcw0K Ky0gIGludCBhdHRhY2hfcGFnZ19saXN0KHN0cnVjdCB0YXNrX3N0cnVjdCAq KTsgICAgICAgKGtlcm5lbC9wYWdnLmMpDQorICAgICAvKiBBc3N1bWVkIHRh c2sgcGFnZyBsaXN0IHB0cyB0byBwYWdncyB0aGF0IGl0IGF0dGFjaGVzIHRv ICovDQorICAgICBXaGlsZSBhbm90aGVyIHBhZ2cgY29udGFpbmVyIHJlZmVy ZW5jZQ0KKyAgICAgICAgICBNYWtlIGNvcHkgb2YgcGFnZyBjb250YWluZXIg cmVmZXJlbmNlICYgaW5zZXJ0IGludG8gbmV3IGxpc3QNCisgICAgICAgICAg QXR0YWNoIHRhc2sgdG8gcGFnZyBjb250YWluZXIgdXNpbmcgbmV3IGNvbnRh aW5lciByZWZlcmVuY2UNCisgICAgICAgICAgR2V0IG5leHQgcGFnZyBjb250 YWluZXIgcmVmZXJlbmNlDQorICAgICBNYWtlIHRhc2sgcGFnZyBsaXN0IHVz ZSB0aGUgbmV3IHBhZ2cgbGlzdA0KKy0gIGludCBkZXRhY2hfcGFnZ19saXN0 KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsgICAgICAgKGtlcm5lbC9wYWdnLmMp DQorICAgICBXaGlsZSBhbm90aGVyIHBhZ2cgY29udGFpbmVyIHJlZmVyZW5j ZQ0KKyAgICAgICAgICBEZXRhY2ggdGFzayBmcm9tIHBhZ2cgY29udGFpbmVy IHVzaW5nIHJlZmVyZW5jZQ0KKw0KZGlmZiAtTmFydSAyLjYtcGF0Y2gvZnMv ZXhlYy5jIDIuNnBhZ2ctcGF0Y2gvZnMvZXhlYy5jDQotLS0gMi42LXBhdGNo L2ZzL2V4ZWMuYwkyMDA0LTA1LTEwIDEyOjA2OjExLjAwMDAwMDAwMCAtMDUw MA0KKysrIDIuNnBhZ2ctcGF0Y2gvZnMvZXhlYy5jCTIwMDQtMDUtMjAgMTQ6 NDY6NDkuMDAwMDAwMDAwIC0wNTAwDQpAQCAtNDYsNyArNDYsNyBAQA0KICNp bmNsdWRlIDxsaW51eC9zZWN1cml0eS5oPg0KICNpbmNsdWRlIDxsaW51eC9z eXNjYWxscy5oPg0KICNpbmNsdWRlIDxsaW51eC9ybWFwLmg+DQotDQorI2lu Y2x1ZGUgPGxpbnV4L3BhZ2cuaD4NCiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3Mu aD4NCiAjaW5jbHVkZSA8YXNtL3BnYWxsb2MuaD4NCiAjaW5jbHVkZSA8YXNt L21tdV9jb250ZXh0Lmg+DQpAQCAtMTE0Miw2ICsxMTQyLDcgQEANCiAJcmV0 dmFsID0gc2VhcmNoX2JpbmFyeV9oYW5kbGVyKCZicHJtLHJlZ3MpOw0KIAlp ZiAocmV0dmFsID49IDApIHsNCiAJCWZyZWVfYXJnX3BhZ2VzKCZicHJtKTsN CisJCXBhZ2dfZXhlYyhjdXJyZW50KTsNCiANCiAJCS8qIGV4ZWN2ZSBzdWNj ZXNzICovDQogCQlzZWN1cml0eV9icHJtX2ZyZWUoJmJwcm0pOw0KZGlmZiAt TmFydSAyLjYtcGF0Y2gvaW5jbHVkZS9saW51eC9pbml0X3Rhc2suaCAyLjZw YWdnLXBhdGNoL2luY2x1ZGUvbGludXgvaW5pdF90YXNrLmgNCi0tLSAyLjYt cGF0Y2gvaW5jbHVkZS9saW51eC9pbml0X3Rhc2suaAkyMDA0LTA1LTEwIDEy OjA2OjExLjAwMDAwMDAwMCAtMDUwMA0KKysrIDIuNnBhZ2ctcGF0Y2gvaW5j bHVkZS9saW51eC9pbml0X3Rhc2suaAkyMDA0LTA1LTIwIDE0OjQ2OjQ5LjAw MDAwMDAwMCAtMDUwMA0KQEAgLTIsNiArMiw3IEBADQogI2RlZmluZSBfTElO VVhfX0lOSVRfVEFTS19IDQogDQogI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4N CisjaW5jbHVkZSA8bGludXgvcGFnZy5oPg0KIA0KICNkZWZpbmUgSU5JVF9G SUxFUyBcDQogeyAJCQkJCQkJXA0KQEAgLTExMiw2ICsxMTMsNyBAQA0KIAku cHJvY19sb2NrCT0gU1BJTl9MT0NLX1VOTE9DS0VELAkJCQlcDQogCS5zd2l0 Y2hfbG9jawk9IFNQSU5fTE9DS19VTkxPQ0tFRCwJCQkJXA0KIAkuam91cm5h bF9pbmZvCT0gTlVMTCwJCQkJCQlcDQorCUlOSVRfVEFTS19QQUdHKHRzaykJ CQkJCQlcDQogfQ0KIA0KIA0KZGlmZiAtTmFydSAyLjYtcGF0Y2gvaW5jbHVk ZS9saW51eC9wYWdnLmggMi42cGFnZy1wYXRjaC9pbmNsdWRlL2xpbnV4L3Bh Z2cuaA0KLS0tIDIuNi1wYXRjaC9pbmNsdWRlL2xpbnV4L3BhZ2cuaAkxOTY5 LTEyLTMxIDE4OjAwOjAwLjAwMDAwMDAwMCAtMDYwMA0KKysrIDIuNnBhZ2ct cGF0Y2gvaW5jbHVkZS9saW51eC9wYWdnLmgJMjAwNC0wNC0zMCAxNDo1NTo1 MS4wMDAwMDAwMDAgLTA1MDANCkBAIC0wLDAgKzEsMjQ2IEBADQorLyogDQor ICogUEFHRyAoUHJvY2VzcyBBZ2dyZWdhdGVzKSBpbnRlcmZhY2UNCisgKg0K KyAqIA0KKyAqIENvcHlyaWdodCAoYykgMjAwMC0yMDAyLCAyMDA0IFNpbGlj b24gR3JhcGhpY3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoN CisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAqIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5DQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCisgKiAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICog VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisg KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlDQorICogR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgKg0KKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlDQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCisgKiBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMS0xMzA3IFVTQQ0KKyAqDQorICoNCisgKiBDb250YWN0IGluZm9y bWF0aW9uOiAgU2lsaWNvbiBHcmFwaGljcywgSW5jLiwgMTUwMCBDcml0dGVu ZGVuIExhbmUsDQorICogTW91bnRhaW4gVmlldywgQ0EgIDk0MDQzLCBvcjoN CisgKiANCisgKiBodHRwOi8vd3d3LnNnaS5jb20gDQorICogDQorICogRm9y IGZ1cnRoZXIgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoaXMgbm90aWNlLCBz ZWU6IA0KKyAqIA0KKyAqIGh0dHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy9H ZW5JbmZvL05vdGljZUV4cGxhbg0KKyAqLw0KKw0KKy8qDQorICogRGVzY3Jp cHRpb246CVRoaXMgZmlsZSwgaW5jbHVkZS9saW51eC9wYWdnLmgsIGNvbnRh aW5zIHRoZSBkYXRhDQorICogICAgICAgICAgICAgIHN0cnVjdHVyZSBkZWZp bml0aW9ucyBhbmQgZnVuY3Rpb24gcHJvdG90eXBlcyB1c2VkIHRvDQorICog ICAgICAgICAgICAgIGltcGxlbWVudCBwcm9jZXNzIGFnZ3JlZ2F0ZXMgKHBh Z2dzKS4gUGFnZ3MgcHJvdmlkZXMgYQ0KKyAqICAgICAgICAgICAgICBnZW5l cmFsaXplZCB3YXkgdG8gaW1wbGVtZW50IHByb2Nlc3MgZ3JvdXBpbmdzIG9y DQorICogICAgICAgICAgICAgIGNvbnRhaW5lcnMuICBNb2R1bGVzIHVzZSB0 aGVzZSBmdW5jdGlvbnMgdG8gcmVnaXN0ZXINCisgKiAgICAgICAgICAgICAg d2l0aCB0aGUga2VybmVsIGFzIHByb3ZpZGVycyBvZiBwcm9jZXNzIGFnZ3Jl Z2F0aW9uDQorICogICAgICAgICAgICAgIGNvbnRhaW5lcnMuIFRoZSBwYWdn IGRhdGEgc3RydWN0dXJlcyBkZWZpbmUgdGhlDQorICogICAgICAgICAgICAg IGNhbGxiYWNrIGZ1bmN0aW9ucyBhbmQgZGF0YSBhY2Nlc3MgcG9pbnRlcnMg YmFjayBpbnRvDQorICogICAgICAgICAgICAgIHRoZSBwYWdnIG1vZHVsZXMu DQorICovDQorDQorI2lmbmRlZiBfTElOVVhfUEFHR19IDQorI2RlZmluZSBf TElOVVhfUEFHR19IDQorDQorI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPg0K Kw0KKy8qDQorICogVXNlZCBieSB0YXNrX3N0cnVjdCB0byBtYW5hZ2UgYSBs aXN0IG9mIHBhZ2cgYXR0YWNobWVudHMgZm9yIHRoZSB0YXNrLg0KKyAqIFRo ZSBsaXN0IHdpbGwgYmUgdXNlZCB0byBob2xkIHJlZmVyZW5jZXMgdG8gcGFn ZyBzdHJ1Y3R1cmVzLiAgDQorICogVGhlc2Ugc3RydWN0dXJlcyBkZWZpbmUg dGhlIHBhZ2cgYXR0YWNobWVudHMgZm9yIHRoZSB0YXNrLiAgDQorICoNCisg KiBTVFJVQ1QgTUVNQkVSUzoNCisgKiAJbGlzdDoJCVRoZSBsaXN0IGhlYWQg cG9pbnRlciBmb3IgdGhlIGxpc3Qgb2YgcGFnZw0KKyAqIAkJCXN0cnVjdHVy ZXMuDQorICogCXNlbToJCVRoZSBzZW1hcGhvcmUgdXNlZCAgdG8gbG9jayB0 aGUgbGlzdC4NCisgKi8NCitzdHJ1Y3QgcGFnZ19saXN0IHsNCisJc3RydWN0 IGxpc3RfaGVhZAloZWFkOwkNCisJc3RydWN0IHJ3X3NlbWFwaG9yZQlzZW07 DQorfTsNCisNCisjaWZkZWYgQ09ORklHX1BBR0cNCisNCisjZGVmaW5lIFBB R0dfTkFNRUxOCTMyCQkvKiBNYXggY2hhcnMgaW4gUEFHRyBtb2R1bGUgbmFt ZSAqLw0KKw0KKw0KKy8qIE1hY3JvIHVzZWQgdG8gaW5pdGlhbGl6ZSBhIHBh Z2dfbGlzdCBzdHJ1Y3R1cmUgYWZ0ZXIgZGVjbGFyYXRpb24gDQorICoNCisg KiBNYWNybyBhcmd1bWVudHM6DQorICogCWw6CXRoZSBwYWdnIGxpc3QgKHN0 cnVjdCBwYWdnX2xpc3QpDQorICovDQorI2RlZmluZSBJTklUX1BBR0dfTElT VChfbCkJCQkJCQlcDQorZG8gewkJCQkJCQkJCVwNCisJSU5JVF9MSVNUX0hF QUQoX2wuaGVhZCk7CQkJCQlcDQorCWluaXRfcndzZW0oX2wuc2VtKTsJCQkJ CQlcDQorfSB3aGlsZSgwKQ0KKwkNCisNCisvKg0KKyAqIFVzZWQgYnkgdGFz a19zdHJ1Y3QgdG8gbWFuYWdlIGxpc3Qgb2YgcGFnZyBhdHRhY2htZW50cyBm b3IgdGhlIHByb2Nlc3MuICANCisgKiBFYWNoIHBhZ2cgcHJvdmlkZXMgdGhl IGxpbmsgYmV0d2VlbiB0aGUgcHJvY2VzcyBhbmQgdGhlIA0KKyAqIGNvcnJl Y3QgcGFnZyBjb250YWluZXIuDQorICoNCisgKiBTVFJVQ1QgTUVNQkVSUzoN CisgKiAgICAgaG9vazoJUmVmZXJlbmNlIHRvIHBhZ2cgbW9kdWxlIHN0cnVj dHVyZS4gIFRoYXQgc3RydWN0DQorICogICAgIAkJaG9sZHMgdGhlIG5hbWUg a2V5IGFuZCBmdW5jdGlvbiBwb2ludGVycy4NCisgKiAgICAgZGF0YToJT3Bh cXVlIGRhdGEgcG9pbnRlciAtIGRlZmluZWQgYnkgcGFnZyBtb2R1bGVzLg0K KyAqICAgICBlbnRyeToJTGlzdCBwb2ludGVycw0KKyAqLw0KK3N0cnVjdCBw YWdnIHsNCisgICAgICAgc3RydWN0IHBhZ2dfaG9vawkqaG9vazsNCisgICAg ICAgdm9pZAkJKmRhdGE7DQorICAgICAgIHN0cnVjdCBsaXN0X2hlYWQJZW50 cnk7DQorfTsNCisNCisvKg0KKyAqIFVzZWQgYnkgcGFnZyBtb2R1bGVzIHRv IGRlZmluZSB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIGludG8gdGhlIA0KKyAq IG1vZHVsZS4NCisgKg0KKyAqIFNUUlVDVCBNRU1CRVJTOg0KKyAqICAgICBu YW1lOiAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhZ2cgY29udGFpbmVy IHR5cGUgcHJvdmlkZWQgYnkNCisgKiAgICAgICAgICAgICAgICAgICAgIHRo ZSBtb2R1bGUuIFRoaXMgd2lsbCBiZSBzZXQgYnkgdGhlIHBhZ2cgbW9kdWxl Lg0KKyAqICAgICBhdHRhY2g6ICAgICAgICAgRnVuY3Rpb24gcG9pbnRlciB0 byBmdW5jdGlvbiB1c2VkIHdoZW4gYXR0YWNoaW5nDQorICogICAgICAgICAg ICAgICAgICAgICBhIHByb2Nlc3MgdG8gdGhlIHBhZ2cgY29udGFpbmVyIHJl ZmVyZW5jZWQgYnkgDQorICogICAgICAgICAgICAgICAgICAgICB0aGlzIHN0 cnVjdC4NCisgKiAgICAgZGV0YWNoOiAgICAgICAgIEZ1bmN0aW9uIHBvaW50 ZXIgdG8gZnVuY3Rpb24gdXNlZCB3aGVuIGRldGFjaGluZw0KKyAqICAgICAg ICAgICAgICAgICAgICAgYSBwcm9jZXNzIHRvIHRoZSBwYWdnIGNvbnRhaW5l ciByZWZlcmVuY2VkIGJ5IA0KKyAqICAgICAgICAgICAgICAgICAgICAgdGhp cyBzdHJ1Y3QuDQorICogICAgIGluaXQ6ICAgICAgICAgICBGdW5jdGlvbiBw b2ludGVyIHRvIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiAgVGhpcw0KKyAq ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaXMgdXNlZCB3aGVuIHRo ZSBtb2R1bGUgaXMgbG9hZGVkIHRvIGF0dGFjaA0KKyAqICAgICAgICAgICAg ICAgICAgICAgZXhpc3RpbmcgcHJvY2Vzc2VzIHRvIGEgZGVmYXVsdCBjb250 YWluZXIgYXMgZGVmaW5lZCBieQ0KKyAqICAgICAgICAgICAgICAgICAgICAg dGhlIHBhZ2cgbW9kdWxlLiBUaGlzIGlzIG9wdGlvbmFsIGFuZCBtYXkgYmUg c2V0IHRvIA0KKyAqICAgICAgICAgICAgICAgICAgICAgTlVMTCBpZiBpdCBp cyBub3QgbmVlZGVkIGJ5IHRoZSBwYWdnIG1vZHVsZS4NCisgKiAgICAgZGF0 YTogICAgICAgICAgIE9wYXF1ZSBkYXRhIHBvaW50ZXIgLSBkZWZpbmVkIGJ5 IHBhZ2cgbW9kdWxlcy4NCisgKiAgICAgbW9kdWxlOiAgICAgICAgIFBvaW50 ZXIgdG8ga2VybmVsIG1vZHVsZSBzdHJ1Y3QuICBVc2VkIHRvIGluY3JlbWVu dCAmIA0KKyAqICAgICAgICAgICAgICAgICAgICAgZGVjcmVtZW50IHRoZSB1 c2UgY291bnQgZm9yIHRoZSBtb2R1bGUuDQorICogICAgIGVudHJ5OgkgICAg ICAgTGlzdCBwb2ludGVycw0KKyAqICAgICBleGVjOiAgICAgICAgICAgRnVu Y3Rpb24gcG9pbnRlciB0byBmdW5jdGlvbiB1c2VkIHdoZW4gYSBwcm9jZXNz DQorICogICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcGFnZyBjb250YWlu ZXIgZXhlYydzIGEgbmV3IHByb2Nlc3MuIFRoaXMNCisgKiAgICAgICAgICAg ICAgICAgICAgIGlzIG9wdGlvbmFsIGFuZCBtYXkgYmUgc2V0IHRvIE5VTEwg aWYgaXQgaXMgbm90IA0KKyAqICAgICAgICAgICAgICAgICAgICAgbmVlZGVk IGJ5IHRoZSBwYWdnIG1vZHVsZS4NCisgKi8NCitzdHJ1Y3QgcGFnZ19ob29r IHsNCisgICAgICAgc3RydWN0IG1vZHVsZQkqbW9kdWxlOw0KKyAgICAgICBj aGFyCQkqbmFtZTsJLyogTmFtZSBLZXkgLSByZXN0cmljdGVkIHRvIDMyIGNo YXJhY3RlcnMgKi8NCisgICAgICAgdm9pZAkJKmRhdGE7CS8qIE9wYXF1ZSBt b2R1bGUgc3BlY2lmaWMgZGF0YSAqLw0KKyAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkCWVudHJ5OwkvKiBMaXN0IHBvaW50ZXJzICovDQorICAgICAgIGludAkJ KCppbml0KShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHBhZ2cgKik7 DQorICAgICAgIGludAkJKCphdHRhY2gpKHN0cnVjdCB0YXNrX3N0cnVjdCAq LCBzdHJ1Y3QgcGFnZyAqLCB2b2lkKik7DQorICAgICAgIGludAkJKCpkZXRh Y2gpKHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBzdHJ1Y3QgcGFnZyAqKTsNCisg ICAgICAgdm9pZAkJKCpleGVjKShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3Ry dWN0IHBhZ2cgKik7DQorfTsNCisNCisNCisvKiBLZXJuZWwgc2VydmljZSBm dW5jdGlvbnMgZm9yIHByb3ZpZGluZyBQQUdHIHN1cHBvcnQgKi8NCitleHRl cm4gc3RydWN0IHBhZ2cgKnBhZ2dfZ2V0KHN0cnVjdCB0YXNrX3N0cnVjdCAq dGFzaywgY2hhciAqa2V5KTsNCitleHRlcm4gc3RydWN0IHBhZ2cgKnBhZ2df YWxsb2Moc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCANCisJCQkgICAgICAg c3RydWN0IHBhZ2dfaG9vayAqcHQpOw0KK2V4dGVybiB2b2lkIHBhZ2dfZnJl ZShzdHJ1Y3QgcGFnZyAqcGFnZyk7DQorZXh0ZXJuIGludCBwYWdnX2hvb2tf cmVnaXN0ZXIoc3RydWN0IHBhZ2dfaG9vayAqcHRfbmV3KTsNCitleHRlcm4g aW50IHBhZ2dfaG9va191bnJlZ2lzdGVyKHN0cnVjdCBwYWdnX2hvb2sgKnB0 X29sZCk7DQorZXh0ZXJuIGludCBfX3BhZ2dfYXR0YWNoKHN0cnVjdCB0YXNr X3N0cnVjdCAqdG9fdGFzaywgDQorCQkJIHN0cnVjdCB0YXNrX3N0cnVjdCAq ZnJvbV90YXNrKTsNCitleHRlcm4gaW50IF9fcGFnZ19kZXRhY2goc3RydWN0 IHRhc2tfc3RydWN0ICp0YXNrKTsNCitleHRlcm4gaW50IF9fcGFnZ19leGVj KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7DQorDQorLyogbWFjcm9zIHVz ZWQgd2hlbiBhIGNoaWxkIHByb2Nlc3MgbXVzdCBpbmhlcml0IGF0dGFjaG1l bnQgdG8gcGFnZw0KKyAqIGNvbnRhaW5lcnMgZnJvbSB0aGUgcGFyZW50Lg0K KyAqIA0KKyAqIFVzaW5nIHN0YXRpYyBpbmxpbmUgd291bGQgcmVzdWx0IGlu IG5vdCBmdWxseSBkZWZpbmVkIHR5cGUgZXJyb3JzLg0KKyAqIGJhZF9mb3Jr X2NsZWFudXAgaXMgZGVmaW5lZCBpbiBmb3JrLmMuDQorICovDQorDQorI2Rl ZmluZSBwYWdnX2F0dGFjaChjaGlsZCwgcGFyZW50KQkJCQkJXA0KK2RvIHsJ CQkJCQkJCQlcDQorCUlOSVRfUEFHR19MSVNUKCZjaGlsZC0+cGFnZ19saXN0 KTsJCQkJXA0KKwlpZiAoIWxpc3RfZW1wdHkoJnBhcmVudC0+cGFnZ19saXN0 LmhlYWQpKQkJCVwNCisJCWlmIChfX3BhZ2dfYXR0YWNoKGNoaWxkLCBwYXJl bnQpICE9IDApCQkJXA0KKwkJCWdvdG8gYmFkX2ZvcmtfY2xlYW51cDsJCQkJ XA0KK30gd2hpbGUoMCkNCisNCisvKiANCisgKiBtYWNybyB1c2VkIHdoZW4g YSBwcm9jZXNzIG11c3QgZGV0YWNoIGZyb20gcGFnZyBjb250YWluZXJzIHRv IHdoaWNoIGl0DQorICogaXMgY3VycmVubHR5IGEgbWVtYmVyLg0KKyAqDQor ICovDQorI2RlZmluZSBwYWdnX2RldGFjaCh0YXNrKQkJCQkJCVwNCitkbyB7 CQkJCQkJCQkJXA0KKwlpZiAoIWxpc3RfZW1wdHkoJnRhc2stPnBhZ2dfbGlz dC5oZWFkKSkJCQkJXA0KKwkJX19wYWdnX2RldGFjaCh0YXNrKTsJCQkJCVwN Cit9IHdoaWxlKDApDQorDQorLyogDQorICogbWFjcm8gdXNlZCB3aGVuIGEg cHJvY2VzcyBleGVjJ3MuDQorICoNCisgKi8NCisjZGVmaW5lIHBhZ2dfZXhl Yyh0YXNrKQkJCQkJCQlcDQorZG8gewkJCQkJCQkJCVwNCisJaWYgKCFsaXN0 X2VtcHR5KCZ0YXNrLT5wYWdnX2xpc3QuaGVhZCkpCQkJCVwNCisJCV9fcGFn Z19leGVjKHRhc2spOwkJCQkJXA0KK30gd2hpbGUoMCkNCisNCisvKiBUaGUg c3RhdGljIGlubGluZXMgY29tbWVudGVkIG91dCBmb3Igbm93IHdpdGggdGhl IGlmZGVmIGJlbG93ICovDQorI2lmZGVmIE5PVERFRklORUQNCisNCisvKiBm dW5jdGlvbiB1c2VkIHdoZW4gYSBjaGlsZCBwcm9jZXNzIG11c3QgaW5oZXJp dCBhdHRhY2htZW50IHRvIHBhZ2cNCisgKiBjb250YWluZXJzIGZyb20gdGhl IHBhcmVudC4NCisgKi8NCitzdGF0aWMgaW5saW5lIGludCBwYWdnX2F0dGFj aChzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkLCANCisJCQkgICAgICBzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnBhcmVudCkNCit7DQorCUlOSVRfUEFHR19MSVNU KCZjaGlsZC0+cGFnZ19saXN0KTsNCisJaWYgKCFsaXN0X2VtcHR5KCZwYXJl bnQtPnBhZ2dfbGlzdC5oZWFkKSkNCisJCXJldHVybiBfX3BhZ2dfYXR0YWNo KGNoaWxkLCBwYXJlbnQpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyogDQor ICogRnVuY3Rpb24gdXNlZCB3aGVuIGEgcHJvY2VzcyBtdXN0IGRldGFjaCBm cm9tIHBhZ2cgY29udGFpbmVycyB0byB3aGljaCBpdA0KKyAqIGlzIGN1cnJl bmx0eSBhIG1lbWJlci4NCisgKg0KKyAqLw0KK3N0YXRpYyBpbmxpbmUgdm9p ZCBwYWdnX2RldGFjaChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spDQorew0K KwlpZiAoIWxpc3RfZW1wdHkoJnRhc2stPnBhZ2dfbGlzdC5oZWFkKSkNCisJ CV9fcGFnZ19kZXRhY2godGFzayk7DQorfQ0KKw0KKy8qIA0KKyAqIGZ1bmN0 aW9uIHVzZWQgd2hlbiBhIHByb2Nlc3MgZXhlYydzLg0KKyAqDQorICovDQor c3RhdGljIGlubGluZSB2b2lkIHBhZ2dfZXhlYyhzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRhc2spDQorew0KKwlpZiAoIWxpc3RfZW1wdHkoJnRhc2stPnBhZ2df bGlzdC5oZWFkKSkNCisJCV9fcGFnZ19leGVjKHRhc2spOw0KK30NCisjZW5k aWYgLyogTk9ULURFRklORUQganVzdCBjb21tZW50IG91dCB0aGUgYmxvY2sg YWJvdmUgZm9yIG5vdyAqLw0KKw0KKy8qDQorICogTWFyY28gVXNlZCBpbiBJ TklUX1RBU0sgdG8gc2V0IHRoZSBoZWFkIGFuZCBzZW0gb2YgcGFnZ19saXN0 Lg0KKyAqIElmIENPTkZJR19QQUdHIGlzIG9mZiwgaXQgaXMgZGVmaW5lZCBh cyBhbiBlbXB0eSBtYWNybyBiZWxvdy4NCisgKi8NCisjZGVmaW5lIElOSVRf VEFTS19QQUdHKHRzaykgXA0KKwkucGFnZ19saXN0ICA9IHsgICAgICAgICAg ICAgICAgICBcDQorCS5oZWFkID0gTElTVF9IRUFEX0lOSVQodHNrLnBhZ2df bGlzdC5oZWFkKSwgICAgIFwNCisJLnNlbSAgPSBfX1JXU0VNX0lOSVRJQUxJ WkVSKHRzay5wYWdnX2xpc3Quc2VtKSAgXA0KKwl9LCBcDQorDQorI2Vsc2Ug IC8qIENPTkZJR19QQUdHICovDQorDQorLyogDQorICogUmVwbGFjZW1lbnQg bWFjcm9zIHVzZWQgd2hlbiBQQUdHIChQcm9jZXNzIEFnZ3JlZ2F0ZXMpIHN1 cHBvcnQgaXMgbm90DQorICogY29tcGlsZWQgaW50byB0aGUga2VybmVsLg0K KyAqLw0KKyNkZWZpbmUgSU5JVF9UQVNLX1BBR0codHNrKQ0KKyNkZWZpbmUg SU5JVF9QQUdHX0xJU1QobCkgZG8geyB9IHdoaWxlKDApDQorI2RlZmluZSBw YWdnX2F0dGFjaChjdCwgcHQpICBkbyB7IH0gd2hpbGUoMCkNCisjZGVmaW5l IHBhZ2dfZGV0YWNoKHQpICBkbyB7ICB9IHdoaWxlKDApICAgICANCisjZGVm aW5lIHBhZ2dfZXhlYyh0KSAgZG8geyAgfSB3aGlsZSgwKSAgICAgDQorDQor I2VuZGlmIC8qIENPTkZJR19QQUdHICovDQorDQorI2VuZGlmIC8qIF9MSU5V WF9QQUdHX0ggKi8NCmRpZmYgLU5hcnUgMi42LXBhdGNoL2luY2x1ZGUvbGlu dXgvc2NoZWQuaCAyLjZwYWdnLXBhdGNoL2luY2x1ZGUvbGludXgvc2NoZWQu aA0KLS0tIDIuNi1wYXRjaC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgJMjAwNC0w NS0xMCAxMjowNjoxMS4wMDAwMDAwMDAgLTA1MDANCisrKyAyLjZwYWdnLXBh dGNoL2luY2x1ZGUvbGludXgvc2NoZWQuaAkyMDA0LTA1LTIwIDE0OjQ2OjQ5 LjAwMDAwMDAwMCAtMDUwMA0KQEAgLTI5LDYgKzI5LDcgQEANCiAjaW5jbHVk ZSA8bGludXgvY29tcGxldGlvbi5oPg0KICNpbmNsdWRlIDxsaW51eC9waWQu aD4NCiAjaW5jbHVkZSA8bGludXgvcGVyY3B1Lmg+DQorI2luY2x1ZGUgPGxp bnV4L3BhZ2cuaD4NCiANCiBzdHJ1Y3QgZXhlY19kb21haW47DQogDQpAQCAt NDk5LDExICs1MDAsMTUgQEANCiANCiAJc3RydWN0IGRlbnRyeSAqcHJvY19k ZW50cnk7DQogCXN0cnVjdCBiYWNraW5nX2Rldl9pbmZvICpiYWNraW5nX2Rl dl9pbmZvOw0KLQ0KIAlzdHJ1Y3QgaW9fY29udGV4dCAqaW9fY29udGV4dDsN CiANCiAJdW5zaWduZWQgbG9uZyBwdHJhY2VfbWVzc2FnZTsNCiAJc2lnaW5m b190ICpsYXN0X3NpZ2luZm87IC8qIEZvciBwdHJhY2UgdXNlLiAgKi8NCisN CisjaWZkZWYgQ09ORklHX1BBR0cNCisvKiBMaXN0IG9mIHBhZ2cgKHByb2Nl c3MgYWdncmVnYXRlKSBhdHRhY2htZW50cyAqLw0KKwlzdHJ1Y3QgcGFnZ19s aXN0IHBhZ2dfbGlzdDsNCisjZW5kaWYNCiB9Ow0KIA0KIHN0YXRpYyBpbmxp bmUgcGlkX3QgcHJvY2Vzc19ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRz aykNCmRpZmYgLU5hcnUgMi42LXBhdGNoL2luaXQvS2NvbmZpZyAyLjZwYWdn LXBhdGNoL2luaXQvS2NvbmZpZw0KLS0tIDIuNi1wYXRjaC9pbml0L0tjb25m aWcJMjAwNC0wNS0xMCAxMjowNjoxMS4wMDAwMDAwMDAgLTA1MDANCisrKyAy LjZwYWdnLXBhdGNoL2luaXQvS2NvbmZpZwkyMDA0LTA1LTIwIDE0OjQ2OjQ5 LjAwMDAwMDAwMCAtMDUwMA0KQEAgLTEyMSw2ICsxMjEsMTQgQEANCiAJICB1 cCB0byB0aGUgdXNlciBsZXZlbCBwcm9ncmFtIHRvIGRvIHVzZWZ1bCB0aGlu Z3Mgd2l0aCB0aGlzDQogCSAgaW5mb3JtYXRpb24uICBUaGlzIGlzIGdlbmVy YWxseSBhIGdvb2QgaWRlYSwgc28gc2F5IFkuDQogDQorY29uZmlnIFBBR0cN CisJYm9vbCAiU3VwcG9ydCBmb3IgcHJvY2VzcyBhZ2dyZWdhdGVzIChQQUdH cykiDQorCWhlbHANCisgICAgIFNheSBZIGhlcmUgaWYgeW91IHdpbGwgYmUg bG9hZGluZyBtb2R1bGVzIHdoaWNoIHByb3ZpZGUgc3VwcG9ydA0KKyAgICAg Zm9yIHByb2Nlc3MgYWdncmVnYXRlIGNvbnRhaW5lcnMuICBFeGFtcGxlcyBv ZiBzdWNoIG1vZHVsZXMgaW5jbHVkZSB0aGUNCisgICAgIExpbnV4IEpvYnMg bW9kdWxlIGFuZCB0aGUgTGludXggQXJyYXkgU2Vzc2lvbnMgbW9kdWxlLiAg SWYgeW91IHdpbGwgbm90IA0KKyAgICAgYmUgdXNpbmcgc3VjaCBtb2R1bGVz LCBzYXkgTi4NCisNCiBjb25maWcgU1lTQ1RMDQogCWJvb2wgIlN5c2N0bCBz dXBwb3J0Ig0KIAktLS1oZWxwLS0tDQpkaWZmIC1OYXJ1IDIuNi1wYXRjaC9r ZXJuZWwvZXhpdC5jIDIuNnBhZ2ctcGF0Y2gva2VybmVsL2V4aXQuYw0KLS0t IDIuNi1wYXRjaC9rZXJuZWwvZXhpdC5jCTIwMDQtMDUtMTAgMTI6MDY6MTEu MDAwMDAwMDAwIC0wNTAwDQorKysgMi42cGFnZy1wYXRjaC9rZXJuZWwvZXhp dC5jCTIwMDQtMDUtMjAgMTQ6NDY6NDkuMDAwMDAwMDAwIC0wNTAwDQpAQCAt MjIsNyArMjIsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9wcm9maWxlLmg+DQog I2luY2x1ZGUgPGxpbnV4L21vdW50Lmg+DQogI2luY2x1ZGUgPGxpbnV4L3By b2NfZnMuaD4NCi0NCisjaW5jbHVkZSA8bGludXgvcGFnZy5oPg0KICNpbmNs dWRlIDxhc20vdWFjY2Vzcy5oPg0KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5o Pg0KICNpbmNsdWRlIDxhc20vbW11X2NvbnRleHQuaD4NCkBAIC03OTksNiAr Nzk5LDkgQEANCiAJCW1vZHVsZV9wdXQodHNrLT5iaW5mbXQtPm1vZHVsZSk7 DQogDQogCXRzay0+ZXhpdF9jb2RlID0gY29kZTsNCisNCisJcGFnZ19kZXRh Y2godHNrKTsNCisNCiAJZXhpdF9ub3RpZnkodHNrKTsNCiAJc2NoZWR1bGUo KTsNCiAJQlVHKCk7DQpkaWZmIC1OYXJ1IDIuNi1wYXRjaC9rZXJuZWwvZm9y ay5jIDIuNnBhZ2ctcGF0Y2gva2VybmVsL2ZvcmsuYw0KLS0tIDIuNi1wYXRj aC9rZXJuZWwvZm9yay5jCTIwMDQtMDUtMTAgMTI6MDY6MTEuMDAwMDAwMDAw IC0wNTAwDQorKysgMi42cGFnZy1wYXRjaC9rZXJuZWwvZm9yay5jCTIwMDQt MDUtMjAgMTQ6NDY6NDkuMDAwMDAwMDAwIC0wNTAwDQpAQCAtMzMsNyArMzMs NyBAQA0KICNpbmNsdWRlIDxsaW51eC9wdHJhY2UuaD4NCiAjaW5jbHVkZSA8 bGludXgvbW91bnQuaD4NCiAjaW5jbHVkZSA8bGludXgvYXVkaXQuaD4NCi0N CisjaW5jbHVkZSA8bGludXgvcGFnZy5oPg0KICNpbmNsdWRlIDxhc20vcGd0 YWJsZS5oPg0KICNpbmNsdWRlIDxhc20vcGdhbGxvYy5oPg0KICNpbmNsdWRl IDxhc20vdWFjY2Vzcy5oPg0KQEAgLTIzNiw2ICsyMzYsOSBAQA0KIA0KIAlp bml0X3Rhc2sucmxpbVtSTElNSVRfTlBST0NdLnJsaW1fY3VyID0gbWF4X3Ro cmVhZHMvMjsNCiAJaW5pdF90YXNrLnJsaW1bUkxJTUlUX05QUk9DXS5ybGlt X21heCA9IG1heF90aHJlYWRzLzI7DQorDQorCS8qIEluaXRpYWxpemUgdGhl IHBhZ2cgbGlzdCBpbiBwaWQgMCBiZWZvcmUgaXQgY2FuIGNsb25lIGl0c2Vs Zi4gKi8NCisJSU5JVF9QQUdHX0xJU1QoJmN1cnJlbnQtPnBhZ2dfbGlzdCk7 DQogfQ0KIA0KIHN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmR1cF90YXNr X3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm9yaWcpDQpAQCAtOTk1LDYg Kzk5OCwxMiBAQA0KIAkgICANCiAJcC0+cGFyZW50X2V4ZWNfaWQgPSBwLT5z ZWxmX2V4ZWNfaWQ7DQogDQorCS8qDQorCSAqIGNhbGwgcGFnZyBtb2R1bGVz IHRvIHByb3Blcmx5IGF0dGFjaCBuZXcgcHJvY2VzcyB0byB0aGUgc2FtZQ0K KwkgKiBwcm9jZXNzIGFnZ3JlZ2F0ZSBjb250YWluZXJzIGFzIHRoZSBwYXJl bnQgcHJvY2Vzcy4NCisJICovDQorCXBhZ2dfYXR0YWNoKHAsIGN1cnJlbnQp Ow0KKw0KIAkvKiBvaywgbm93IHdlIHNob3VsZCBiZSBzZXQgdXAuLiAqLw0K IAlwLT5leGl0X3NpZ25hbCA9IChjbG9uZV9mbGFncyAmIENMT05FX1RIUkVB RCkgPyAtMSA6IChjbG9uZV9mbGFncyAmIENTSUdOQUwpOw0KIAlwLT5wZGVh dGhfc2lnbmFsID0gMDsNCmRpZmYgLU5hcnUgMi42LXBhdGNoL2tlcm5lbC9N YWtlZmlsZSAyLjZwYWdnLXBhdGNoL2tlcm5lbC9NYWtlZmlsZQ0KLS0tIDIu Ni1wYXRjaC9rZXJuZWwvTWFrZWZpbGUJMjAwNC0wNS0xMCAxMjowNjoxMS4w MDAwMDAwMDAgLTA1MDANCisrKyAyLjZwYWdnLXBhdGNoL2tlcm5lbC9NYWtl ZmlsZQkyMDA0LTA1LTIwIDE0OjQ2OjQ5LjAwMDAwMDAwMCAtMDUwMA0KQEAg LTE4LDYgKzE4LDcgQEANCiBvYmotJChDT05GSUdfUE0pICs9IHBvd2VyLw0K IG9iai0kKENPTkZJR19CU0RfUFJPQ0VTU19BQ0NUKSArPSBhY2N0Lm8NCiBv YmotJChDT05GSUdfQ09NUEFUKSArPSBjb21wYXQubw0KK29iai0kKENPTkZJ R19QQUdHKSArPSBwYWdnLm8NCiBvYmotJChDT05GSUdfSUtDT05GSUcpICs9 IGNvbmZpZ3Mubw0KIG9iai0kKENPTkZJR19JS0NPTkZJR19QUk9DKSArPSBj b25maWdzLm8NCiBvYmotJChDT05GSUdfU1RPUF9NQUNISU5FKSArPSBzdG9w X21hY2hpbmUubw0KZGlmZiAtTmFydSAyLjYtcGF0Y2gva2VybmVsL3BhZ2cu YyAyLjZwYWdnLXBhdGNoL2tlcm5lbC9wYWdnLmMNCi0tLSAyLjYtcGF0Y2gv a2VybmVsL3BhZ2cuYwkxOTY5LTEyLTMxIDE4OjAwOjAwLjAwMDAwMDAwMCAt MDYwMA0KKysrIDIuNnBhZ2ctcGF0Y2gva2VybmVsL3BhZ2cuYwkyMDA0LTA1 LTIwIDEzOjM2OjM3LjAwMDAwMDAwMCAtMDUwMA0KQEAgLTAsMCArMSw0MDYg QEANCisvKiANCisgKiBQQUdHIChQcm9jZXNzIEFnZ3JlZ2F0ZXMpIGludGVy ZmFjZQ0KKyAqDQorICogDQorICogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDQg U2lsaWNvbiBHcmFwaGljcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4N CisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICogaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkNCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcg0K KyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoN CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv Zg0KKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCisgKiBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KKyAqDQorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UNCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAqIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExLTEzMDcgVVNBDQorICoNCisgKg0KKyAqIENvbnRhY3Qg aW5mb3JtYXRpb246ICBTaWxpY29uIEdyYXBoaWNzLCBJbmMuLCAxNTAwIENy aXR0ZW5kZW4gTGFuZSwNCisgKiBNb3VudGFpbiBWaWV3LCBDQSAgOTQwNDMs IG9yOg0KKyAqIA0KKyAqIGh0dHA6Ly93d3cuc2dpLmNvbSANCisgKiANCisg KiBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhpcyBub3Rp Y2UsIHNlZTogDQorICogDQorICogaHR0cDovL29zcy5zZ2kuY29tL3Byb2pl Y3RzL0dlbkluZm8vTm90aWNlRXhwbGFuDQorICovDQorDQorLyoNCisgKiBE ZXNjcmlwdGlvbjogIFRoaXMgZmlsZSwga2VybmVsL3BhZ2cuYywgY29udGFp bnMgdGhlIHJvdXRpbmVzIHVzZWQNCisgKiAgICAgICAgICAgICAgIHRvIGlt cGxlbWVudCBwcm9jZXNzIGFnZ3JlZ2F0ZXMgKHBhZ2dzKS4gIFRoZSBwYWdn DQorICogICAgICAgICAgICAgICBleHRlbmRzIHRoZSB0YXNrX3N0cnVjdCB0 byBhbGxvdyBmb3IgdmFyaW91cyBwcm9jZXNzDQorICogICAgICAgICAgICAg ICBhZ2dyZWdhdGlvbiBjb250aW5lcnMuICBFeGFtcGxlcyBvZiBzdWNoIGNv bnRhaW5lcnMNCisgKiAgICAgICAgICAgICAgIGluY2x1ZGUgImpvYnMiIGFu ZCBjbHVzdGVyIGFwcGxpY2F0aW9ucyBJRHMuICBQcm9jZXNzDQorICogICAg ICAgICAgICAgICBzZXNzaW9ucyBhbmQgZ3JvdXBzIGNvdWxkIGhhdmUgYmVl biBpbXBsZW1lbnRlZCB1c2luZw0KKyAqICAgICAgICAgICAgICAgcGFnZ3Mg KGFsdGhvdWdoIHRoZXJlIHdvdWxkIGJlIGxpdHRsZSBwdXJwb3NlIGluDQor ICogICAgICAgICAgICAgICBtYWtpbmcgdGhhdCBjaGFuZ2UgYXQgdGhpcyBq dW5jdHVyZSkuICBUaGUgcGFnZw0KKyAqICAgICAgICAgICAgICAgc3RydWN0 dXJlIG1haW50YWlucyBwb2ludGVycyB0byBjYWxsYmFjayBmdW5jdGlvbnMg YW5kDQorICogICAgICAgICAgICAgICBkYXRhIHN0cnVjdXJlcyBtYWludGFp bmVkIGluIG1vZHVsZXMgdGhhdCBoYXZlDQorICogICAgICAgICAgICAgICBy ZWdpc3RlcmVkIHdpdGggdGhlIGtlcm5lbCBhcyBwYWdnIGNvbnRhaW5lcg0K KyAqICAgICAgICAgICAgICAgcHJvdmlkZXJzLg0KKyAqLw0KKw0KKyNpbmNs dWRlIDxsaW51eC9jb25maWcuaD4NCisNCisjaW5jbHVkZSA8bGludXgvc2xh Yi5oPg0KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPg0KKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgvcGFnZy5oPg0KKyNp bmNsdWRlIDxhc20vc2VtYXBob3JlLmg+DQorDQorLyogbGlzdCBvZiBwYWdn IGhvb2sgZW50cmllcyB0aGF0IHJlZmVyZW5jZSB0aGUgIm1vZHVsZSIgaW1w bGVtZW50YXRpb25zICovDQorc3RhdGljIExJU1RfSEVBRChwYWdnX2hvb2tf bGlzdCk7DQorc3RhdGljIERFQ0xBUkVfUldTRU0ocGFnZ19ob29rX2xpc3Rf c2VtKTsNCisNCisNCisvKiANCisgKiBwYWdnX2dldA0KKyAqDQorICogR2l2 ZW4gYSBwYWdnX2xpc3QgbGlzdCBzdHJ1Y3R1cmUsIHRoaXMgZnVuY3Rpb24g d2lsbCByZXR1cm4NCisgKiBhIHBvaW50ZXIgdG8gdGhlIHBhZ2cgc3RydWN0 IHRoYXQgbWF0Y2hlcyB0aGUgc2VhcmNoDQorICoga2V5LiAgSWYgdGhlIGtl eSBpcyBub3QgZm91bmQsIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBOVUxM Lg0KKyAqDQorICogVGhlIGNhbGxlciBzaG91bGQgaG9sZCBhdCBsZWFzdCBh IHJlYWQgbG9jayBvbiB0aGUgcGFnZ19saXN0DQorICogZm9yIHRhc2sgdXNp bmcgZG93bl9yZWFkKCZ0YXNrLT5wYWdnX2xpc3Quc2VtKS4NCisgKi8NCitz dHJ1Y3QgcGFnZyAqDQorcGFnZ19nZXQoc3RydWN0IHRhc2tfc3RydWN0ICp0 YXNrLCBjaGFyICprZXkpDQorew0KKwlzdHJ1Y3QgcGFnZyAqcGFnZzsNCisN CisJbGlzdF9mb3JfZWFjaF9lbnRyeShwYWdnLCAmdGFzay0+cGFnZ19saXN0 LmhlYWQsIGVudHJ5KSB7DQorCQlpZiAoIXN0cmNtcChwYWdnLT5ob29rLT5u YW1lLGtleSkpDQorCQkJcmV0dXJuIHBhZ2c7DQorCX0NCisJcmV0dXJuIE5V TEw7DQorfQ0KKw0KKw0KKy8qDQorICogcGFnZ19hbGxvYw0KKyAqDQorICog R2l2ZW4gYSB0YXNrIGFuZCBhIHBhZ2cgaG9vaywgdGhpcyBmdW5jdGlvbiB3 aWxsIGFsbG9jYXRlDQorICogYSBuZXcgcGFnZyBzdHJ1Y3R1cmUsIGluaXRp YWxpemUgdGhlIHNldHRpbmdzLCBhbmQgaW5zZXJ0IHRoZSBwYWdnIGludG8N CisgKiB0aGUgcGFnZ19saXN0IGZvciB0aGUgdGFzay4NCisgKg0KKyAqIFRo ZSBjYWxsZXIgZm9yIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGhvbGQgYXQgbGVh c3QgYSByZWFkIGxvY2sgb24gdGhlDQorICogcGFnZ19ob29rX2xpc3Rfc2Vt IC0gb3IgZW5zdXJlIHRoYXQgdGhlIHBhZ2cgaG9vayBlbnRyeSBjYW5ub3Qg YmUgDQorICogcmVtb3ZlZC4gSWYgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVk IGZyb20gdGhlIHBhZ2cgbW9kdWxlICh1c3VhbGx5IHRoZQ0KKyAqIGNhc2Up LCB0aGVuIHRoZSBjYWxsZXIgbmVlZCBub3QgaG9sZCB0aGlzIGxvY2suIFRo ZSBjYWxsZXIgc2hvdWxkIGhvbGQgDQorICogYSB3cml0ZSBsb2NrIG9uIGZv ciB0aGUgdGFza3MgcGFnZ19saXN0LnNlbS4gIFRoaXMgY2FuIGJlIGxvY2tl ZCB1c2luZyANCisgKiBkb3duX3dyaXRlKCZ0YXNrLT5wYWdnX2xpc3Quc2Vt KQ0KKyAqLw0KK3N0cnVjdCBwYWdnICoNCitwYWdnX2FsbG9jKHN0cnVjdCB0 YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0IHBhZ2dfaG9vayAqcGFnZ19ob29r KQ0KK3sNCisJc3RydWN0IHBhZ2cgKnBhZ2c7DQorDQorCXBhZ2cgPSBrbWFs bG9jKHNpemVvZihzdHJ1Y3QgcGFnZyksIEdGUF9LRVJORUwpOw0KKwlpZiAo IXBhZ2cpDQorCQlyZXR1cm4gTlVMTDsNCisNCisJcGFnZy0+aG9vayA9IHBh Z2dfaG9vazsNCisJcGFnZy0+ZGF0YSA9IE5VTEw7DQorCWxpc3RfYWRkX3Rh aWwoJnBhZ2ctPmVudHJ5LCAmdGFzay0+cGFnZ19saXN0LmhlYWQpOw0KKwly ZXR1cm4gcGFnZzsNCit9DQorDQorDQorLyoNCisgKiBwYWdnX2ZyZWUNCisg Kg0KKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBlbnN1cmUgdGhlIHBhZ2cgaXMg ZGVsZXRlZCBmb3JtIA0KKyAqIHRoZSBsaXN0IG9mIHBhZ2cgZW50cmllcyBm b3IgdGhlIHRhc2suIEZpbmFsbHksIHRoZSBtZW1vcnkgZm9yIHRoZSANCisg KiBwYWdnIGlzIGRpc2NhcmRlZC4NCisgKg0KKyAqIFRoZSBjYWxsZXIgb2Yg dGhpcyBmdW5jdGlvbiBzaG91bGQgaG9sZCBhIHdyaXRlIGxvY2sgb24gdGhl IHBhZ2dfbGlzdC5zZW0NCisgKiBmb3IgdGhlIHRhc2suIFRoaXMgY2FuIGJl IGxvY2tlZCB1c2luZyBkb3duX3dyaXRlKCZ0YXNrLT5wYWdnX2xpc3Quc2Vt KS4NCisgKg0KKyAqIFByaW9yIHRvIGNhbGxpbmcgcGFnZ19mcmVlLCB0aGUg cGFnZyBzaG91bGQgaGF2ZSBiZWVuIGRldGFjaGVkIGZyb20gdGhlDQorICog cGFnZyBjb250YWluZXIgcmVwcmVzZW50ZWQgYnkgdGhpcyBwYWdnLiAgVGhh dCBpcyB1c3VhbGx5IGRvbmUgdXNpbmcNCisgKiBwLT5ob29rLT5kZXRhY2go dGFzaywgcGFnZyk7DQorICovDQordm9pZA0KK3BhZ2dfZnJlZShzdHJ1Y3Qg cGFnZyAqcGFnZykgDQorew0KKwlsaXN0X2RlbCgmcGFnZy0+ZW50cnkpOw0K KwlrZnJlZShwYWdnKTsNCit9DQorDQorDQorLyoNCisgKiBnZXRfcGFnZ19o b29rDQorICoNCisgKiBHaXZlbiBhIHBhZ2cgaG9vayBuYW1lIGtleSwgdGhp cyBmdW5jdGlvbiB3aWxsIHJldHVybiBhIHBvaW50ZXINCisgKiB0byB0aGUg cGFnZ19ob29rIHN0cnVjdCB0aGF0IGNvbnRhaW5zIHRoYXQgbWF0Y2hlcyB0 aGUgbmFtZS4NCisgKiANCisgKiBZb3Ugc2hvdWxkIGhvbGQgZWl0aGVyIHRo ZSB3cml0ZSBvciByZWFkIGxvY2sgZm9yIHBhZ2dfaG9va19saXN0X3NlbQ0K KyAqIGJlZm9yZSB1c2luZyB0aGlzIGZ1bmN0aW9uLiAgVGhpcyB3aWxsIGVu c3VyZSB0aGF0IHRoZSBwYWdnX2hvb2tfbGlzdA0KKyAqIGRvZXMgbm90IGNo YW5nZSB3aGlsZSBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgbGlzdCBlbnRyaWVz Lg0KKyAqLw0KK3N0YXRpYyBzdHJ1Y3QgcGFnZ19ob29rICoNCitnZXRfcGFn Z19ob29rKGNoYXIgKmtleSkNCit7DQorCXN0cnVjdCBwYWdnX2hvb2sgKnBh Z2dfaG9vazsNCisNCisJbGlzdF9mb3JfZWFjaF9lbnRyeShwYWdnX2hvb2ss ICZwYWdnX2hvb2tfbGlzdCwgZW50cnkpIHsNCisJCWlmICghc3RyY21wKHBh Z2dfaG9vay0+bmFtZSwga2V5KSkgew0KKwkJCXJldHVybiBwYWdnX2hvb2s7 DQorCQl9DQorCX0NCisJcmV0dXJuIE5VTEw7DQorfQ0KKw0KKw0KKy8qDQor ICogcGFnZ19ob29rX3JlZ2lzdGVyDQorICoNCisgKiBVc2VkIHRvIHJlZ2lz dGVyIGEgbmV3IHBhZ2cgaG9vayBhbmQgZW50ZXIgaXQgaW50byB0aGUgcGFn Z19ob29rX2xpc3QuDQorICogVGhlIHNlcnZpY2UgbmFtZSBmb3IgYSBwYWdn IGhvb2sgaXMgcmVzdHJpY3RlZCB0byAzMiBjaGFyYWN0ZXJzLg0KKyAqDQor ICogSW4gdGhlIGZ1dHVyZSBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBt YXkgYWxzbyBiZSBkZWZpbmVkIHNvIHRoYXQgYWxsDQorICogZXhpc3Rpbmcg dGFza3MgY2FuIGJlIGFzc2lnbmVkIHRvIGEgZGVmYXVsdCBwYWdnIGVudHJ5 IGZvciB0aGUgaG9vay4NCisgKiBIb3dldmVyLCB0aGlzIHdvdWxkIHJlcXVp cmUgaXRlcmF0aW5nIHRocm91Z2ggdGhlIHRhc2tsaXN0LiAgVG8gZG8gdGhh dA0KKyAqIHJlcXVpcmVzIHRoYXQgdGhlIHRhc2tsaXN0X2xvY2sgYmUgcmVh ZCBsb2NrZWQuICBTaW5jZSB0aGUgaW5pdGlhbGl6YXRpb24NCisgKiBmdW5j dGlvbiBtaWdodCBiZSBpbiBhIG1vZHVsZSwgYW5kIHRoZXJlZm9yZSBpdCBt aWdodCBzbGVlcCAoaW1wbGVtZW50b3JzDQorICogZGVjaXNpb24pLCBob2xk aW5nIHRoZSB0YXNrbGlzdF9sb2NrIHNlZW1zIGxpa2UgYSBiYWQgaWRlYS4g SXQgbWF5IGJlIGENCisgKiByZXF1aXJlbWVudCB0aGF0IHRoZSBpbml0aWFs aXphdGlvbiBmdW5jdGlvbiB3aWxsIGJlIHN0cmljdGx5IGZvcmJpZGRlbg0K KyAqIGZyb20gbG9ja2luZyAtIGJ5IGdlbnRsZW1hbnMgYWdyZWVtZW50Li4u IA0KKyAqDQorICogSWYgYSBtZW1vcnkgZXJyb3IgaXMgZW5jb3VudGVyZWQs IHRoZSBwYWdnIGhvb2sgaXMgdW5yZWdpc3RlcmVkIGFuZCBhbnkNCisgKiB0 YXNrcyB0aGF0IGhhdmUgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW5pdGlhbCBw YWdnIGNvbnRhaW5lciBhcmUgZGV0YWNoZWQNCisgKiBmcm9tIHRoYXQgY29u dGFpbmVyLg0KKyAqLw0KK2ludA0KK3BhZ2dfaG9va19yZWdpc3RlcihzdHJ1 Y3QgcGFnZ19ob29rICpwYWdnX2hvb2tfbmV3KQ0KK3sNCisJc3RydWN0IHBh Z2dfaG9vayAqcGFnZ19ob29rID0gTlVMTDsNCisNCisJLyogQUREIE5FVyBQ QUdHIE1PRFVMRSBUTyBBQ0NFU1MgTElTVCAqLw0KKwlpZiAoIXBhZ2dfaG9v a19uZXcpDQorCQlyZXR1cm4gLUVJTlZBTDsJCQkvKiBlcnJvciAqLw0KKwlp ZiAoIWxpc3RfZW1wdHkoJnBhZ2dfaG9va19uZXctPmVudHJ5KSkNCisJCXJl dHVybiAtRUlOVkFMOwkJCS8qIGVycm9yICovDQorCWlmIChwYWdnX2hvb2tf bmV3LT5uYW1lID09IE5VTEwgfHwgc3RybGVuKHBhZ2dfaG9va19uZXctPm5h bWUpID4gUEFHR19OQU1FTE4pIA0KKwkJcmV0dXJuIC1FSU5WQUw7CQkJLyog ZXJyb3IgKi8NCisNCisJLyogVHJ5IHRvIGluc2VydCBuZXcgaG9vayBlbnRy eSBpbnRvIHRoZSBwYWdnIGhvb2sgbGlzdCAqLw0KKwlkb3duX3dyaXRlKCZw YWdnX2hvb2tfbGlzdF9zZW0pOw0KKw0KKwlwYWdnX2hvb2sgPSBnZXRfcGFn Z19ob29rKHBhZ2dfaG9va19uZXctPm5hbWUpOw0KKw0KKwlpZiAocGFnZ19o b29rKSB7DQorCQl1cF93cml0ZSgmcGFnZ19ob29rX2xpc3Rfc2VtKTsNCisJ CXByaW50ayhLRVJOX1dBUk5JTkcgIkF0dGVtcHQgdG8gcmVnaXN0ZXIgZHVw bGljYXRlIg0KKwkJCQkiIFBBR0cgc3VwcG9ydCAobmFtZT0lcylcbiIsIHBh Z2dfaG9va19uZXctPm5hbWUpOw0KKwkJcmV0dXJuIC1FQlVTWTsNCisJfQ0K Kw0KKwkvKiBPa2F5LCB3ZSBjYW4gaW5zZXJ0IGludG8gdGhlIHBhZ2cgaG9v ayBsaXN0ICovDQorCWxpc3RfYWRkX3RhaWwoJnBhZ2dfaG9va19uZXctPmVu dHJ5LCAmcGFnZ19ob29rX2xpc3QpOw0KKwl1cF93cml0ZSgmcGFnZ19ob29r X2xpc3Rfc2VtKTsNCisNCisJcHJpbnRrKEtFUk5fSU5GTyAiUmVnaXN0ZXJp bmcgUEFHRyBzdXBwb3J0IGZvciAobmFtZT0lcylcbiIsDQorCQkJcGFnZ19o b29rX25ldy0+bmFtZSk7DQorDQorCXJldHVybiAwOwkJCQkJLyogc3VjY2Vz cyAqLw0KKw0KK30NCisNCisNCisvKg0KKyAqIHBhZ2dfaG9va191bnJlZ2lz dGVyDQorICoNCisgKiBVc2VkIHRvIHVucmVnaXN0ZXIgcGFnZyBob29rcyBh bmQgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgcGFnZ19ob29rX2xpc3QuDQorICog T25jZSB0aGUgcGFnZyBob29rIGVudHJ5IGluIHRoZSBwYWdnX2hvb2tfbGlz dCBpcyBmb3VuZCwgYWxsIG9mIHRoZQ0KKyAqIHRhc2tzIGFyZSBzY2FubmVk IGFuZCBkZXRhY2hlZCBmcm9tIGFueSBwYWdnIGNvbnRhaW5lcnMgZGVmaW5l ZCBieSB0aGUNCisgKiBwYWdnIGltcGxlbWVudGF0aW9uIG1vZHVsZS4NCisg Ki8NCitpbnQNCitwYWdnX2hvb2tfdW5yZWdpc3RlcihzdHJ1Y3QgcGFnZ19o b29rICpwYWdnX2hvb2tfb2xkKQ0KK3sNCisJc3RydWN0IHBhZ2dfaG9vayAq cGFnZ19ob29rOw0KKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7DQorDQor DQorCS8qIENoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgYXJndW1lbnRzICov DQorCWlmICghcGFnZ19ob29rX29sZCkNCisJCXJldHVybiAtRUlOVkFMOwkJ CS8qIGVycm9yICovDQorCWlmIChsaXN0X2VtcHR5KCZwYWdnX2hvb2tfb2xk LT5lbnRyeSkpDQorCQlyZXR1cm4gLUVJTlZBTDsJCQkvKiBlcnJvciAqLw0K KwlpZiAocGFnZ19ob29rX29sZC0+bmFtZSA9PSBOVUxMKQ0KKwkJcmV0dXJu IC1FSU5WQUw7CQkJLyogZXJyb3IgKi8NCisNCisJZG93bl93cml0ZSgmcGFn Z19ob29rX2xpc3Rfc2VtKTsNCisNCisJcGFnZ19ob29rID0gZ2V0X3BhZ2df aG9vayhwYWdnX2hvb2tfb2xkLT5uYW1lKTsNCisJaWYgKHBhZ2dfaG9vayAm JiBwYWdnX2hvb2sgPT0gcGFnZ19ob29rX29sZCkgew0KKwkJLyogDQorCQkg KiBTY2FuIHRocm91Z2ggcHJvY2Vzc2VzIG9uIHN5c3RlbSBhbmQgY2hlY2sg Zm9yICANCisJCSAqIHJlZmVyZW5jZXMgdG8gcGFnZyBjb250YWluZXJzIGZv ciB0aGlzIHBhZ2cgaG9vay4NCisJCSAqIA0KKwkJICogVGhlIG1vZHVsZSBj YW5ub3QgYmUgdW5sb2FkZWQgaWYgdGhlcmUgYXJlIHJlZmVyZW5jZXMuDQor CQkgKi8NCisJCXJlYWRfbG9jaygmdGFza2xpc3RfbG9jayk7DQorCQlmb3Jf ZWFjaF9wcm9jZXNzKHRhc2spIHsNCisJCQlzdHJ1Y3QgcGFnZyAqcGFnZyA9 IE5VTEw7DQorDQorCQkJZ2V0X3Rhc2tfc3RydWN0KHRhc2spOyAvKiBTbyB0 aGUgdGFzayBkb2Vzbid0IHZhbmlzaCBvbiB1cyAqLw0KKwkJCXJlYWRfdW5s b2NrKCZ0YXNrbGlzdF9sb2NrKTsNCisJCQlkb3duX3JlYWQoJnRhc2stPnBh Z2dfbGlzdC5zZW0pOyAvKiBsb2NrIHRoZSBwYWdnIGxpc3QgKi8NCisJCQlw YWdnID0gcGFnZ19nZXQodGFzaywgcGFnZ19ob29rX29sZC0+bmFtZSk7DQor CQkJcHV0X3Rhc2tfc3RydWN0KHRhc2spOw0KKwkJCS8qIA0KKwkJCSAqIFdl IHdvbid0IGJlIGFjY2Vzc2luZyBwYWdnJ3MgbWVtb3J5LCBqdXN0IG5lZWQN CisJCQkgKiB0byBzZWUgaWYgb25lIGV4aXN0ZWQgLSBzbyB3ZSBjYW4gcmVs ZWFzZSB0aGUgdGFzaw0KKwkJCSAqIGxvY2sgbm93Lg0KKwkJCSAqLw0KKwkJ CXVwX3JlYWQoJnRhc2stPnBhZ2dfbGlzdC5zZW0pOyAvKiB1bmxvY2sgdGhl IHBhZ2cgbGlzdCAqLw0KKwkJCWlmIChwYWdnKSB7DQorCQkJCXVwX3dyaXRl KCZwYWdnX2hvb2tfbGlzdF9zZW0pOw0KKwkJCQlyZXR1cm4gLUVCVVNZOw0K KwkJCX0NCisNCisJCQkvKiBsb2NrIHRoZSB0YXNrIGxpc3QgYWdhaW4gc28g d2UgZ2V0IGEgdmFsaWQgdGFzayBpbiB0aGUgbG9vcCAqLw0KKwkJCXJlYWRf bG9jaygmdGFza2xpc3RfbG9jayk7DQorCQl9DQorCQlyZWFkX3VubG9jaygm dGFza2xpc3RfbG9jayk7DQorCQlsaXN0X2RlbF9pbml0KCZwYWdnX2hvb2st PmVudHJ5KTsNCisJCXVwX3dyaXRlKCZwYWdnX2hvb2tfbGlzdF9zZW0pOw0K Kw0KKwkJcHJpbnRrKEtFUk5fSU5GTyAiVW5yZWdpc3RlcmluZyBQQUdHIHN1 cHBvcnQgZm9yIg0KKwkJCQkiIChuYW1lPSVzKVxuIiwgcGFnZ19ob29rX29s ZC0+bmFtZSk7DQorDQorCQlyZXR1cm4gMDsJCQkvKiBzdWNjZXNzICovDQor CX0NCisNCisJdXBfd3JpdGUoJnBhZ2dfaG9va19saXN0X3NlbSk7DQorDQor CXByaW50ayhLRVJOX1dBUk5JTkcgIkF0dGVtcHQgdG8gdW5yZWdpc3RlciBQ QUdHIHN1cHBvcnQgKG5hbWU9JXMpIg0KKwkJCSIgZmFpbGVkIC0gbm90IGZv dW5kXG4iLCBwYWdnX2hvb2tfb2xkLT5uYW1lKTsNCisJDQorCXJldHVybiAt RUlOVkFMOwkJCQkvKiBlcnJvciAqLw0KK30NCisNCisNCisvKg0KKyAqIF9f cGFnZ19hdHRhY2gNCisgKg0KKyAqIFVzZWQgdG8gYXR0YWNoIGEgbmV3IHRh c2sgdG8gdGhlIHNhbWUgcGFnZyBjb250YWluZXJzIHRvIHdoaWNoIGl0J3Mg cGFyZW50DQorICogaXMgYXR0YWNoZWQuDQorICoNCisgKiBUaGUgImZyb20i IGFyZ3VtZW50IGlzIHRoZSBwYXJlbnQgdGFzay4gIFRoZSAidG8iIGFyZ3Vt ZW50IGlzIHRoZSBjaGlsZA0KKyAqIHRhc2suIA0KKyAqDQorICovDQoraW50 IF9fcGFnZ19hdHRhY2goc3RydWN0IHRhc2tfc3RydWN0ICp0b190YXNrLCBz dHJ1Y3QgdGFza19zdHJ1Y3QgKmZyb21fdGFzaykNCit7DQorCXN0cnVjdCBs aXN0X2hlYWQgICAqZW50cnk7DQorCWludCAgCQkgICByZXRjb2RlID0gMDsN CisNCisJLyogbG9jayB0aGUgcGFyZW50cyBwYWdnX2xpc3Qgd2UgYXJlIGNv cHlpbmcgZnJvbSAqLw0KKwlkb3duX3JlYWQoJmZyb21fdGFzay0+cGFnZ19s aXN0LnNlbSk7IC8qIHJlYWQgbG9jayB0aGUgcGFnZyBsaXN0ICovDQorDQor CWxpc3RfZm9yX2VhY2goZW50cnksICZmcm9tX3Rhc2stPnBhZ2dfbGlzdC5o ZWFkKSB7DQorCQlzdHJ1Y3QgcGFnZyAqdG9fcGFnZyA9IE5VTEw7DQorCQlz dHJ1Y3QgcGFnZyAqZnJvbV9wYWdnID0gbGlzdF9lbnRyeShlbnRyeSwgc3Ry dWN0IHBhZ2csIA0KKwkJCQkJCQllbnRyeSk7DQorCQl0b19wYWdnID0gcGFn Z19hbGxvYyh0b190YXNrLCBmcm9tX3BhZ2ctPmhvb2spOw0KKwkJaWYgKCF0 b19wYWdnKSB7DQorCQkJcmV0Y29kZSA9IC1FTk9NRU07DQorCQkJZ290byBl cnJvcl9yZXR1cm47DQorCQl9DQorCQlyZXRjb2RlID0gdG9fcGFnZy0+aG9v ay0+YXR0YWNoKHRvX3Rhc2ssIHRvX3BhZ2csIGZyb21fcGFnZy0+ZGF0YSk7 DQorCQlpZiAocmV0Y29kZSAhPSAwKSB7DQorCQkJLyogYXR0YWNoIHNob3Vs ZCBpc3N1ZSBlcnJvciBtZXNzYWdlICovDQorCQkJZ290byBlcnJvcl9yZXR1 cm47DQorCQl9DQorCX0NCisNCisJdXBfcmVhZCgmZnJvbV90YXNrLT5wYWdn X2xpc3Quc2VtKTsgLyogdW5sb2NrIHRoZSBwYWdnIGxpc3QgKi8NCisNCisJ cmV0dXJuIDA7CQkJCQkvKiBzdWNjZXNzICovDQorDQorICBlcnJvcl9yZXR1 cm46DQorCS8qIA0KKwkgKiBDbGVhbiB1cCBhbGwgdGhlIHBhZ2cgYXR0YWNo bWVudHMgbWFkZSBvbiBiZWhhbGYgb2YgdGhlIG5ldw0KKwkgKiB0YXNrLiAg U2V0IG5ldyB0YXNrIHBhZ2cgcHRyIHRvIE5VTEwgZm9yIHJldHVybi4NCisJ ICovDQorCXVwX3JlYWQoJmZyb21fdGFzay0+cGFnZ19saXN0LnNlbSk7IC8q IHVubG9jayB0aGUgcGFnZyBsaXN0ICovDQorCV9fcGFnZ19kZXRhY2godG9f dGFzayk7DQorCXJldHVybiByZXRjb2RlOwkJCQkvKiBmYWlsdXJlICovDQor fQ0KKw0KKy8qDQorICogX19wYWdnX2RldGFjaA0KKyAqDQorICogVXNlZCB0 byBkZXRhY2ggYSB0YXNrIGZyb20gYWxsIHBhZ2cgY29udGFpbmVycyB0byB3 aGljaCBpdCBpcyBhdHRhY2hlZC4NCisgKiANCisgKiBsaXN0X2Zvcl9lYWNo IHVzZWQgaGVyZSBiZWNhdXNlIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGxpc3Qg YWZ0ZXIgYSANCisgKiBwYWdnIGlzIGRldGFjaGVkLg0KKyAqLw0KK2ludA0K K19fcGFnZ19kZXRhY2goc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQ0KK3sN CisJc3RydWN0IGxpc3RfaGVhZCAgICplbnRyeTsNCisJaW50IHJldGNvZGUg PSAwOw0KKwlpbnQgcmV0dG1wID0gMDsNCisNCisJLyogUmVtb3ZlIHJlZi4g dG8gcGFnZ3MgZnJvbSB0YXNrIGltbWVkaWF0ZWx5ICovDQorCWRvd25fd3Jp dGUoJnRhc2stPnBhZ2dfbGlzdC5zZW0pOyAvKiB3cml0ZSBsb2NrIHBhZ2cg bGlzdCAqLw0KKw0KKwlsaXN0X2Zvcl9lYWNoKGVudHJ5LCAmdGFzay0+cGFn Z19saXN0LmhlYWQpIHsNCisJCWludCByZXR0ZW1wID0gMDsNCisJCXN0cnVj dCBwYWdnICpwYWdnID0gbGlzdF9lbnRyeShlbnRyeSwgc3RydWN0IHBhZ2cs IGVudHJ5KTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IA0KKwkJZW50cnkgPSAmdGFzay0+cGFnZ19saXN0LmhlYWQ7DQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCXJldHRlbXAgPSBw YWdnLT5ob29rLT5kZXRhY2godGFzaywgcGFnZyk7DQorCQlpZiAocmV0dG1w KSB7DQorCQkJLyogYW4gZXJyb3IgbWVzc2FnZSBzaG91bGQgYmUgbG9nZ2Vk IGluIGZyZWVfcGFnZyAqLw0KKwkJCXJldGNvZGUgPSByZXR0bXA7DQorCQl9 DQorCQlwYWdnX2ZyZWUocGFnZyk7DQorCX0NCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIA0KKwl1cF93cml0ZSgmdGFzay0+cGFnZ19s aXN0LnNlbSk7IC8qIHdyaXRlIHVubG9jayB0aGUgcGFnZyBsaXN0ICovDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJcmV0dXJu IHJldGNvZGU7ICAgLyogMCA9IHN1Y2Nlc3MsIGVsc2UgcmV0dXJuIGxhc3Qg Y29kZSBmb3IgZmFpbHVyZSAqLw0KK30NCisNCisNCisvKg0KKyAqIF9fcGFn Z19leGVjDQorICoNCisgKiBVc2VkIHRvIHdoZW4gYSBwcm9jZXNzIHRoYXQg aXMgaW4gYSBwYWdnIGNvbnRhaW5lciBkb2VzIGFuIGV4ZWMuDQorICoNCisg KiBUaGUgImZyb20iIGFyZ3VtZW50IGlzIHRoZSB0YXNrLiAgVGhlICJuYW1l IiBhcmd1bWVudCBpcyB0aGUgbmFtZQ0KKyAqIG9mIHRoZSBwcm9jZXNzIGJl aW5nIGV4ZWMnZWQuDQorICoNCisgKi8NCitpbnQgX19wYWdnX2V4ZWMoc3Ry dWN0IHRhc2tfc3RydWN0ICp0YXNrKSANCit7DQorCXN0cnVjdCBwYWdnCSpw YWdnOw0KKw0KKwkvKiBsb2NrIHRoZSBwYXJlbnRzIHBhZ2dfbGlzdCB3ZSBh cmUgY29weWluZyBmcm9tICovDQorCWRvd25fcmVhZCgmdGFzay0+cGFnZ19s aXN0LnNlbSk7IC8qIGxvY2sgdGhlIHBhZ2cgbGlzdCAqLw0KKw0KKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5KHBhZ2csICZ0YXNrLT5wYWdnX2xpc3QuaGVhZCwg ZW50cnkpIHsNCisJCWlmIChwYWdnLT5ob29rLT5leGVjKSAvKiBjb25kaXRp b25hbCBiZWNhdXNlIGl0J3Mgb3B0aW9uYWwgKi8NCisJCQlwYWdnLT5ob29r LT5leGVjKHRhc2ssIHBhZ2cpOw0KKwl9DQorDQorCXVwX3JlYWQoJnRhc2st PnBhZ2dfbGlzdC5zZW0pOyAvKiB1bmxvY2sgdGhlIHBhZ2cgbGlzdCAqLw0K KwlyZXR1cm4gMDsNCit9DQorDQorDQorRVhQT1JUX1NZTUJPTChwYWdnX2dl dCk7DQorRVhQT1JUX1NZTUJPTChwYWdnX2FsbG9jKTsNCitFWFBPUlRfU1lN Qk9MKHBhZ2dfZnJlZSk7DQorRVhQT1JUX1NZTUJPTChwYWdnX2hvb2tfcmVn aXN0ZXIpOw0KK0VYUE9SVF9TWU1CT0wocGFnZ19ob29rX3VucmVnaXN0ZXIp Ow0K ---2136806248-259741563-1085087809=:212943--