Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S263600AbUDZWFq (ORCPT ); Mon, 26 Apr 2004 18:05:46 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S263601AbUDZWFq (ORCPT ); Mon, 26 Apr 2004 18:05:46 -0400 Received: from cfcafw.sgi.com ([198.149.23.1]:20672 "EHLO omx1.americas.sgi.com") by vger.kernel.org with ESMTP id S263600AbUDZWEq (ORCPT ); Mon, 26 Apr 2004 18:04:46 -0400 Date: Mon, 26 Apr 2004 17:04:39 -0500 From: Erik Jacobson To: linux-kernel@vger.kernel.org Subject: [PATCH] Process Aggregates (PAGG) support for the 2.6 kernel Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-2136806248-1191388539-1083017079=:591647" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 49146 Lines: 834 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-1191388539-1083017079=:591647 Content-Type: TEXT/PLAIN; charset=US-ASCII Here, I am proposing Process Aggregates support for the 2.6 kernel. What is Process Aggregates (PAGG)? ---------------------------------- PAGG provides for the implementation of arbitrary process groups in Linux. It is a building block for kernel modules that can group processes together into a single set for specific purposes beyond the traditional process groups. What types of things could make use of PAGG? -------------------------------------------- Some example uses for PAGG include: - System accounting - the CSA module makes use of it (see below) - Clustering - Keeping track of processes for clustering - NUMA placement - Making sure groups of processes run on specific CPUs or chunks of memory - Batch Queuing systems - Ensure specific jobs run in their designated places. More information about PAGG --------------------------- There is a web page for the PAGG project at SGI: http://oss.sgi.com/projects/pagg/ Also, the patch includes the file Documentation/pagg.txt. You may look there for detailed information. One project that makes extensive use of PAGG is Comprehensive System Accounting (CSA). Details on that can be found here: http://oss.sgi.com/projects/csa/ Info on the attached patch -------------------------- This patch is made to apply to the 2.6.5 kernel. Patches for some other versions of the kernel (including 2.4 and 2.6 versions) may be found on the PAGG web site above. -- Erik Jacobson - Linux System Software - Silicon Graphics - Eagan, Minnesota ---2136806248-1191388539-1083017079=:591647 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="linux-2.6.5-pagg.patch-2" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="linux-2.6.5-pagg.patch-2" ZGlmZiAtTmFydSAyLjYtcGF0Y2gvRG9jdW1lbnRhdGlvbi9wYWdnLnR4dCAy LjZwYWdnLXBhdGNoL0RvY3VtZW50YXRpb24vcGFnZy50eHQNCi0tLSAyLjYt cGF0Y2gvRG9jdW1lbnRhdGlvbi9wYWdnLnR4dAkxOTY5LTEyLTMxIDE4OjAw OjAwLjAwMDAwMDAwMCAtMDYwMA0KKysrIDIuNnBhZ2ctcGF0Y2gvRG9jdW1l bnRhdGlvbi9wYWdnLnR4dAkyMDA0LTA0LTI2IDE0OjM2OjA1LjAwMDAwMDAw MCAtMDUwMA0KQEAgLTAsMCArMSwxNjIgQEANCitMaW51eCBQcm9jZXNzIEFn 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 CisNCiszLjEuIE1vZGlmaWVkIEZpbGVzDQorDQorVGhlIGZvbGxvd2luZyBm aWxlcyB3ZXJlIG1vZGlmaWVkIHRvIGltcGxlbWVudCBQQUdHOg0KKw0KKy0g IGluY2x1ZGUvbGludXgvaW5pdF90YXNrLmgNCistICBpbmNsdWRlL2xpbnV4 L3NjaGVkLmgNCistICBpbml0L0NvbmZpZy5oZWxwDQorLSAgaW5pdC9Db25m aWcuaW4NCistICBrZXJuZWwvTWFrZWZpbGUNCistICBrZXJuZWwvZXhpdC5j DQorLSAga2VybmVsL2ZvcmsuYw0KKy0gIGZzL2V4ZWMuYw0KKy0gIERvY3Vt ZW50YXRpb24vQ29uZmlndXJlLmhlbHANCistICBpbml0L0tjb25maWcNCisN CitUaGlzIGltcGxlbWVudGF0aW9uIG9mIFBBR0cgc3VwcG9ydHMgdGhlIGkz ODYgYW5kIGlhNjQgYXJjaGl0ZWN0dXJlLg0KKw0KKzIuMi4gTmV3IEZpbGVz DQorDQorVGhlIGZvbGxvd2luZyBmaWxlcyB3ZXJlIGFkZGVkIHRvIGltcGxl bWVudCBQQUdHOg0KKw0KKy0gIERvY3VtZW50YXRpb24vcGFnZy50eHQNCist ICBpbmNsdWRlL2xpbnV4L3BhZ2cuaA0KKy0gIGtlcm5lbC9wYWdnLmMNCisN CisNCisyLjMuIE1vZGlmaWVkIERhdGEgU3RydWN0dXJlcw0KKw0KK1RoZSBm b2xsb3dpbmcgZXhpc3RpbmcgZGF0YSBzdHJ1Y3R1cmVzIHdlcmUgYWx0ZXJl ZCB0byBpbXBsZW1lbnQgUEFHRy4NCisNCistICBzdHJ1Y3QgdGFza19zdHJ1 Y3Q6ICAgICAgICAgIChpbmNsdWRlL2xpbnV4L3NjaGVkLmgpDQorICAgICBz dHJ1Y3QgcGFnZ19saXN0ICBwYWdnX2xpc3Q7ICAgICAvKiBMaXN0IG9mIHBh Z2cgY29udGFpbmVycyAqLw0KKw0KK1RoaXMgbmV3IG1lbWJlciBpbiB0YXNr X3N0cnVjdCwgcGFnZ19saXN0LCBwb2ludHMgdG8gdGhlIGxpc3Qgb2YgcGFn Zw0KK2NvbnRhaW5lcnMgdG8gd2hpY2ggdGhlIHByb2Nlc3MgaXMgY3VycmVu dGx5IGF0dGFjaGVkLg0KKw0KKzIuNC4gTmV3IERhdGEgU3RydWN0dXJlcw0K Kw0KK1RoZSBmb2xsb3dpbmcgbmV3IGRhdGEgc3RydWN0dXJlcyB3ZXJlIGlu dHJvZHVjZWQgdG8gaW1wbGVtZW50IFBBR0cuDQorDQorLSAgc3RydWN0IHBh Z2c6ICAgICAgICAgIChpbmNsdWRlL2xpbnV4L3BhZ2cuaCkNCisgICAgIHN0 cnVjdCBwYWdnX2hvb2sgKmhvb2sJCSAgICAgLyogUHRyIHRvIHBhZ2cgbW9k dWxlIGVudHJ5ICovDQorICAgICB2b2lkIAkJKmRhdGE7ICAgICAgICAgICAg ICAgLyogVGFzayBzcGVjaWZpYyBkYXRhICovDQorICAgICBzdHJ1Y3QgbGlz dF9oZWFkICAgZW50cnk7CSAgIAkgICAgIC8qIExpc3QgY29ubmVjdGlvbiAq LwkNCisgICAgIA0KKy0gIHN0cnVjdCBwYWdnX2hvb2s6ICAgICAgICAoaW5j bHVkZS9saW51eC9wYWdnLmgpDQorICAgICBzdHJ1Y3QgbW9kdWxlICptb2R1 bGU7ICAgICAgICAgICAgICAgICAgLyogUHRyIHRvIFBBR0cgbW9kdWxlICov DQorICAgICBjaGFyICpuYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogUEFHRyBob29rIG5hbWUgLSByZXN0cmljdGVkDQorCQkJCQkgICAg ICAqIHRvIDMyIGNoYXJhY3RlcnMuICAqLw0KKyAgICAgaW50ICAoKmF0dGFj aCkoc3RydWN0IHRhc2tfc3RydWN0ICosIC8qIEZ1bmN0aW9uIHRvIGF0dGFj aCAqLw0KKyAgICAgICAgICAgICAgIHN0cnVjdCBwYWdnICosDQorICAgICAg ICAgICAgICAgdm9pZCAqKTsNCisgICAgIGludCAgKCpkZXRhY2gpKHN0cnVj dCB0YXNrX3N0cnVjdCAqLCAvKiBGdW5jdGlvbiB0byBkZXRhY2ggKi8NCisg ICAgICAgICAgICAgICBzdHJ1Y3QgcGFnZyAqKTsNCisgICAgIGludCAgKCpp bml0KShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgICAvKiBMb2FkIHRhc2sgaW5p dCBmdW5jLiAqLw0KKwkJICAgICBzdHJ1Y3QgcGFnZyAqKTsNCisgICAgIHZv aWQgICpkYXRhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNb2R1 bGUgc3BlY2lmaWMgZGF0YSAqLw0KKyAgICAgc3RydWN0IGxpc3RfaGVhZCBl bnRyeTsJCSAgICAgLyogTGlzdCBjb25uZWN0aW9uICovDQorICAgICB2b2lk ICAgICgqZXhlYykoc3RydWN0IHRhc2tfc3RydWN0ICosIHN0cnVjdCBwYWdn ICopOyAvKiBleGVjIGZ1bmMgcHRyICovDQorDQorVGhlIHBhZ2cgc3RydWN0 dXJlIHByb3ZpZGVzIHRoZSBwcm9jZXNzJyByZWZlcmVuY2UgdG8gdGhlIFBB R0cNCitjb250YWluZXJzIHByb3ZpZGVkIGJ5IHRoZSBQQUdHIG1vZHVsZXMu ICBUaGUgYXR0YWNoIGZ1bmN0aW9uIHBvaW50ZXINCitpcyB0aGUgZnVuY3Rp b24gdXNlZCB0byBub3RpZnkgdGhlIHJlZmVyZW5jZWQgUEFHRyBjb250YWlu ZXIgdGhhdCB0aGUNCitwcm9jZXNzIGlzIGJlaW5nIGF0dGFjaGVkLiAgVGhl IGRldGFjaCBmdW5jdGlvbiBwb2ludGVyIGlzIHVzZWQgdG8gbm90aWZ5DQor dGhlIHJlZmVyZW5jZWQgUEFHRyBjb250YWluZXIgdGhhdCB0aGUgcHJvY2Vz cyBpcyBleGl0aW5nIG9yIG90aGVyd2lzZQ0KK2RldGFjaGluZyBmcm9tIHRo ZSBjb250YWluZXIuICBUaGUgZXhlYyBmdW5jdGlvbiBwb2ludGVyIGlzIHVz ZWQgd2hlbiBhDQorcHJvY2VzcyBpbiB0aGUgcGFnZyBjb250YWluZXIgZXhl YydzIGEgbmV3IHByb2Nlc3MuICBUaGlzIGlzIG9wdGlvbmFsIGFuZA0KK21h eSBiZSBzZXQgdG8gTlVMTCBpZiBpdCBpcyBub3QgbmVlZGVkIGJ5IHRoZSBw YWdnIG1vZHVsZS4NCisNCitUaGUgcGFnZ19ob29rIHN0cnVjdHVyZSBwcm92 aWRlcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBtb2R1bGUgdGhhdA0KK2ltcGxl bWVudHMgYSB0eXBlIG9mIFBBR0cgY29udGFpbmVyLiAgSW4gYWRkaXRpb24g dG8gdGhlIGZ1bmN0aW9uIHBvaW50ZXJzDQorZGVzY3JpYmVkIGNvbmNlcm5p bmcgcGFnZywgdGhpcyBzdHJ1Y3R1cmUgcHJvdmlkZXMgYW4gYWRkaXRpb24N CitmdW5jdGlvbiBwb2ludGVyLiAgVGhlIGluaXQgZnVuY3Rpb24gcG9pbnRl ciBpcyBjdXJyZW50bHkgbm90IHVzZWQNCitidXQgd2lsbCBiZSBhdmFpbGFi bGUgaW4gdGhlIGZ1dHVyZS4gIEZ1dHVyZSB1c2Ugb2YgdGhlIGluaXQgZnVu Y3Rpb24NCit3aWxsIGJlIG9wdGlvbmFsIGFuZCB3aWxsIHVzZWQgdG8gYXR0 YWNoIGN1cnJlbnRseSBydW5uaW5nIHByb2Nlc3NlcyB0bw0KK2EgZGVmYXVs dCBQQUdHIGNvbnRhaW5lciB3aGVuIGEgUEFHRyBtb2R1bGUgaXMgbG9hZGVk IG9uIGEgcnVubmluZyBzeXN0ZW0uDQorDQorDQorMi41LiBNb2RpZmllZCBG dW5jdGlvbnMNCisNCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB3ZXJlIGNo YW5nZWQgdG8gaW1wbGVtZW50IFBBR0c6DQorDQorLSAgZG9fZm9yazogICAg IChrZXJuZWwvZm9yay5jKQ0KKyAgICAgLyogZXhlY3V0ZSB0aGUgZm9sbG93 aW5nIHBzZXVkb2NvZGUgYmVmb3JlIGFkZCB0byBydW4tcXVldWUgICovICAN CisgICAgIElmIHBhcmVudCBwcm9jZXNzIHBhZ2cgbGlzdCBpcyBub3QgZW1w dHkNCisgICAgICAgICAgQ2FsbCBhdHRhY2hfcGFnZ19saXN0IGZ1bmN0aW9u IHdpdGggY2hpbGQgdGFza19zdHJ1Y3QgYXMgYXJndW1lbnQNCistICBkb19l eGl0OiAgICAgKGtlcm5lbC9leGl0LmMpDQorICAgICAvKiBleGVjdXRlIHRo ZSBmb2xsb3dpbmcgcHNldWRvY29kZSBwcmlvciB0byBzY2hlZHVsZSBjYWxs ICovDQorICAgICBJZiBjdXJyZW50IHByb2Nlc3MgcGFnZyBsaXN0IGlzIG5v dCBlbXB0eQ0KKyAgICAgICAgICAgICAgIENhbGwgZGV0YWNoX3BhZ2dfbGlz dCBmdW5jdGlvbiB3aXRoIGN1cnJlbnQgdGFza19zdHJ1Y3QgDQorLSAgc3lz X2V4ZWN2ZTogIChmcy9leGVjLmMpDQorICAgICAvKiBXaGVuIGEgcHJvY2Vz cyBpbiBhIHBhZ2cgZXhlYydzLCBhbiBvcHRpb25hbCBjYWxsb3V0IGNhbiBi ZSBydW4uICBUaGlzDQorICAgICAgICBpcyBpbXBsZW1lbnRlZCB3aXRoIGFu IG9wdGlvbmFsIGZ1bmN0aW9uIHBvaW50ZXIgaW4gdGhlIHBhZ2dfaG9vay4g ICovDQorDQorMi42IE5ldyBGdW5jdGlvbnMNCisNCitUaGUgZm9sbG93aW5n IG5ldyBmdW5jdGlvbnMgd2VyZSBhZGRlZCB0byBpbXBsZW1lbnQgUEFHRzoN CisNCistICBpbnQgIHJlZ2lzdGVyX3BhZ2dfaG9vayhzdHJ1Y3QgcGFnZ19o b29rICopOyAgKGtlcm5lbC9wYWdnLmMpDQorICAgICBBZGQgbW9kdWxlIGVu dHJ5IGludG8gdGFibGUgb2YgcGFnZyBtb2R1bGVzDQorLSAgaW50IHVucmVn aXN0ZXJfcGFnZ19ob29rKHN0cnVjdCBwYWdnX2hvb2sgKik7IChrZXJuZWwv cGFnZy5jKQ0KKyAgICAgRmluZCBtb2R1bGUgZW50cnkgaW4gbGlzdCBvZiBw YWdnIG1vZHVsZXMNCisgICAgICAgICAgRm9yZWFjaCB0YXNrDQorCQlJZiB0 YXNrIGlzIGF0dGFjaGVkIHRvIHRoaXMgcGFnZyBtb2R1bGUNCisJCQlyZXR1 cm4gZXJyb3INCisJICBJZiBubyB0YXNrcyBhcmUgcmVmZXJlbmNpbmcgdGhp cyBtb2R1bGUNCisJCXJlbW92ZSBtb2R1bGUgZW50cnkgZnJvbSBsaXN0IG9m IHBhZ2cgbW9kdWxlcw0KKy0gIGludCBhdHRhY2hfcGFnZ19saXN0KHN0cnVj dCB0YXNrX3N0cnVjdCAqKTsgICAgICAgKGtlcm5lbC9wYWdnLmMpDQorICAg ICAvKiBBc3N1bWVkIHRhc2sgcGFnZyBsaXN0IHB0cyB0byBwYWdncyB0aGF0 IGl0IGF0dGFjaGVzIHRvICovDQorICAgICBXaGlsZSBhbm90aGVyIHBhZ2cg Y29udGFpbmVyIHJlZmVyZW5jZQ0KKyAgICAgICAgICBNYWtlIGNvcHkgb2Yg cGFnZyBjb250YWluZXIgcmVmZXJlbmNlICYgaW5zZXJ0IGludG8gbmV3IGxp c3QNCisgICAgICAgICAgQXR0YWNoIHRhc2sgdG8gcGFnZyBjb250YWluZXIg dXNpbmcgbmV3IGNvbnRhaW5lciByZWZlcmVuY2UNCisgICAgICAgICAgR2V0 IG5leHQgcGFnZyBjb250YWluZXIgcmVmZXJlbmNlDQorICAgICBNYWtlIHRh c2sgcGFnZyBsaXN0IHVzZSB0aGUgbmV3IHBhZ2cgbGlzdA0KKy0gIGludCBk ZXRhY2hfcGFnZ19saXN0KHN0cnVjdCB0YXNrX3N0cnVjdCAqKTsgICAgICAg KGtlcm5lbC9wYWdnLmMpDQorICAgICBXaGlsZSBhbm90aGVyIHBhZ2cgY29u dGFpbmVyIHJlZmVyZW5jZQ0KKyAgICAgICAgICBEZXRhY2ggdGFzayBmcm9t IHBhZ2cgY29udGFpbmVyIHVzaW5nIHJlZmVyZW5jZQ0KKw0KZGlmZiAtTmFy dSAyLjYtcGF0Y2gvZnMvZXhlYy5jIDIuNnBhZ2ctcGF0Y2gvZnMvZXhlYy5j DQotLS0gMi42LXBhdGNoL2ZzL2V4ZWMuYwkyMDA0LTAzLTE2IDE0OjEzOjMw LjAwMDAwMDAwMCAtMDYwMA0KKysrIDIuNnBhZ2ctcGF0Y2gvZnMvZXhlYy5j CTIwMDQtMDQtMjYgMTI6MjM6MDIuMDAwMDAwMDAwIC0wNTAwDQpAQCAtNDYs NiArNDYsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9zZWN1cml0eS5oPg0KICNp bmNsdWRlIDxsaW51eC9zeXNjYWxscy5oPg0KICNpbmNsdWRlIDxsaW51eC9y bWFwLWxvY2tpbmcuaD4NCisjaW5jbHVkZSA8bGludXgvcGFnZy5oPg0KIA0K ICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPg0KICNpbmNsdWRlIDxhc20vcGdh bGxvYy5oPg0KQEAgLTExNTEsNiArMTE1Miw3IEBADQogCXJldHZhbCA9IHNl YXJjaF9iaW5hcnlfaGFuZGxlcigmYnBybSxyZWdzKTsNCiAJaWYgKHJldHZh bCA+PSAwKSB7DQogCQlmcmVlX2FyZ19wYWdlcygmYnBybSk7DQorCQlleGVj X3BhZ2dfbGlzdF9jaGsoY3VycmVudCk7DQogDQogCQkvKiBleGVjdmUgc3Vj Y2VzcyAqLw0KIAkJc2VjdXJpdHlfYnBybV9mcmVlKCZicHJtKTsNCmRpZmYg LU5hcnUgMi42LXBhdGNoL2luY2x1ZGUvbGludXgvaW5pdF90YXNrLmggMi42 cGFnZy1wYXRjaC9pbmNsdWRlL2xpbnV4L2luaXRfdGFzay5oDQotLS0gMi42 LXBhdGNoL2luY2x1ZGUvbGludXgvaW5pdF90YXNrLmgJMjAwNC0wMy0xNiAx NDoxMzozMC4wMDAwMDAwMDAgLTA2MDANCisrKyAyLjZwYWdnLXBhdGNoL2lu Y2x1ZGUvbGludXgvaW5pdF90YXNrLmgJMjAwNC0wNC0xMyAyMTo0MjozNS4w MDAwMDAwMDAgLTA1MDANCkBAIC0yLDYgKzIsNyBAQA0KICNkZWZpbmUgX0xJ TlVYX19JTklUX1RBU0tfSA0KIA0KICNpbmNsdWRlIDxsaW51eC9maWxlLmg+ DQorI2luY2x1ZGUgPGxpbnV4L3BhZ2cuaD4NCiANCiAjZGVmaW5lIElOSVRf RklMRVMgXA0KIHsgCQkJCQkJCVwNCkBAIC0xMTIsNiArMTEzLDcgQEANCiAJ LnByb2NfbG9jawk9IFNQSU5fTE9DS19VTkxPQ0tFRCwJCQkJXA0KIAkuc3dp dGNoX2xvY2sJPSBTUElOX0xPQ0tfVU5MT0NLRUQsCQkJCVwNCiAJLmpvdXJu YWxfaW5mbwk9IE5VTEwsCQkJCQkJXA0KKwlJTklUX1RBU0tfUEFHRyh0c2sp CQkJCQkJXA0KIH0NCiANCiANCmRpZmYgLU5hcnUgMi42LXBhdGNoL2luY2x1 ZGUvbGludXgvcGFnZy5oIDIuNnBhZ2ctcGF0Y2gvaW5jbHVkZS9saW51eC9w YWdnLmgNCi0tLSAyLjYtcGF0Y2gvaW5jbHVkZS9saW51eC9wYWdnLmgJMTk2 OS0xMi0zMSAxODowMDowMC4wMDAwMDAwMDAgLTA2MDANCisrKyAyLjZwYWdn LXBhdGNoL2luY2x1ZGUvbGludXgvcGFnZy5oCTIwMDQtMDQtMjYgMTI6MjM6 MDIuMDAwMDAwMDAwIC0wNTAwDQpAQCAtMCwwICsxLDI0OSBAQA0KKy8qIA0K KyAqIFBBR0cgKFByb2Nlc3MgQWdncmVnYXRlcykgaW50ZXJmYWNlDQorICoN CisgKiANCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiwgMjAwNCBTaWxp Y29uIEdyYXBoaWNzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAq DQorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCisgKiBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQ0KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQorICog KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAq IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQor ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQ0KKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQ0KKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICogRm91bmRhdGlv biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg TUEgMDIxMTEtMTMwNyBVU0ENCisgKg0KKyAqDQorICogQ29udGFjdCBpbmZv cm1hdGlvbjogIFNpbGljb24gR3JhcGhpY3MsIEluYy4sIDE1MDAgQ3JpdHRl bmRlbiBMYW5lLA0KKyAqIE1vdW50YWluIFZpZXcsIENBICA5NDA0Mywgb3I6 DQorICogDQorICogaHR0cDovL3d3dy5zZ2kuY29tIA0KKyAqIA0KKyAqIEZv ciBmdXJ0aGVyIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGlzIG5vdGljZSwg c2VlOiANCisgKiANCisgKiBodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMv R2VuSW5mby9Ob3RpY2VFeHBsYW4NCisgKi8NCisNCisvKg0KKyAqIERlc2Ny aXB0aW9uOglUaGlzIGZpbGUsIGluY2x1ZGUvbGludXgvcGFnZy5oLCBjb250 YWlucyB0aGUgZGF0YQ0KKyAqICAgICAgICAgICAgICBzdHJ1Y3R1cmUgZGVm aW5pdGlvbnMgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXMgdXNlZCB0bw0KKyAq ICAgICAgICAgICAgICBpbXBsZW1lbnQgcHJvY2VzcyBhZ2dyZWZhdGVzIChw YWdncykuIFBhZ2dzIHByb3ZpZGVzIGENCisgKiAgICAgICAgICAgICAgZ2Vu ZXJhbGl6ZWQgd2FzIHRvIGltcGxlbWVudCBwcm9jZXNzIGdyb3VwaW5ncyBv cg0KKyAqICAgICAgICAgICAgICBjb250YWluZXJzLiAgTW9kdWxlcyB1c2Ug dGhlc2UgZnVuY3Rpb25zIHRvIHJlZ2lzdGVyDQorICogICAgICAgICAgICAg IHdpdGggdGhlIGtlcm5lbCBhcyBwcm92aWRlcnMgb2YgcHJvY2VzcyBhZ2dy ZWdhdGlvbg0KKyAqICAgICAgICAgICAgICBjb250YWluZXJzLiBUaGUgcGFn ZyBkYXRhIHN0cnVjdHVyZXMgZGVmaW5lIHRoZQ0KKyAqICAgICAgICAgICAg ICBjYWxsYmFjayBmdW5jdGlvbnMgYW5kIGRhdGEgYWNjZXNzIHBvaW50ZXJz IGJhY2sgaW50bw0KKyAqICAgICAgICAgICAgICB0aGUgcGFnZyBtb2R1bGVz Lg0KKyAqLw0KKw0KKyNpZm5kZWYgX1BBR0dfSA0KKyNkZWZpbmUgX1BBR0df SA0KKw0KKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4NCisNCisvKg0KKyAq IFVzZWQgYnkgdGFza19zdHJ1Y3QgdG8gbWFuYWdlIGEgbGlzdCBvZiBwYWdn IGF0dGFjaG1lbnRzIGZvciB0aGUgdGFzay4NCisgKiBUaGUgbGlzdCB3aWxs IGJlIHVzZWQgdG8gaG9sZCByZWZlcmVuY2VzIHRvIHBhZ2cgc3RydWN0dXJl cy4gIA0KKyAqIFRoZXNlIHN0cnVjdHVyZXMgZGVmaW5lIHRoZSBwYWdnIGF0 dGFjaG1lbnRzIGZvciB0aGUgdGFzay4gIA0KKyAqDQorICogU1RSVUNUIE1F TUJFUlM6DQorICogCWxpc3Q6CQlUaGUgbGlzdCBoZWFkIHBvaW50ZXIgZm9y IHRoZSBsaXN0IG9mIHBhZ2cNCisgKiAJCQlzdHJ1Y3R1cmVzLg0KKyAqIAlz ZW06CQlUaGUgc2VtYXBob3JlIHVzZWQgIHRvIGxvY2sgdGhlIGxpc3QuDQor ICovDQorc3RydWN0IHBhZ2dfbGlzdCB7DQorCXN0cnVjdCBsaXN0X2hlYWQJ aGVhZDsJDQorCXN0cnVjdCByd19zZW1hcGhvcmUJc2VtOw0KK307DQorDQor I2lmZGVmIENPTkZJR19QQUdHDQorDQorI2RlZmluZSBQQUdHX05BTUVMTgkz MgkJLyogTWF4IGNoYXJzIGluIFBBR0cgbW9kdWxlIG5hbWUgKi8NCisNCisN CisvKiBNYWNybyB1c2VkIHRvIGluaXRpYWxpemUgYSBwYWdnX2xpc3Qgc3Ry dWN0dXJlIGFmdGVyIGRlY2xhcmF0aW9uIA0KKyAqDQorICogTWFjcm8gYXJn dW1lbnRzOg0KKyAqIAlsOgl0aGUgcGFnZyBsaXN0IChzdHJ1Y3QgcGFnZ19s aXN0KQ0KKyAqLw0KKyNkZWZpbmUgSU5JVF9QQUdHX0xJU1QobCkJCQkJCQlc DQorZG8gewkJCQkJCQkJCVwNCisJSU5JVF9MSVNUX0hFQUQobC5oZWFkKTsJ CQkJCQlcDQorCWluaXRfcndzZW0obC5zZW0pOwkJCQkJCVwNCit9IHdoaWxl KDApDQorCQ0KKw0KKy8qDQorICogVXNlZCBieSB0YXNrX3N0cnVjdCB0byBt YW5hZ2UgbGlzdCBvZiBwYWdnIGF0dGFjaG1lbnRzIGZvciB0aGUgcHJvY2Vz cy4gIA0KKyAqIEVhY2ggcGFnZyBwcm92aWRlcyB0aGUgbGluayBiZXR3ZWVu IHRoZSBwcm9jZXNzIGFuZCB0aGUgDQorICogY29ycmVjdCBwYWdnIGNvbnRh aW5lci4NCisgKg0KKyAqIFNUUlVDVCBNRU1CRVJTOg0KKyAqICAgICBob29r OglSZWZlcmVuY2UgdG8gcGFnZyBtb2R1bGUgc3RydWN0dXJlLiAgVGhhdCBz dHJ1Y3QNCisgKiAgICAgCQlob2xkcyB0aGUgbmFtZSBrZXkgYW5kIGZ1bmN0 aW9uIHBvaW50ZXJzLg0KKyAqICAgICBkYXRhOglPcGFxdWUgZGF0YSBwb2lu dGVyIC0gZGVmaW5lZCBieSBwYWdnIG1vZHVsZXMuDQorICogICAgIGVudHJ5 OglMaXN0IHBvaW50ZXJzDQorICovDQorc3RydWN0IHBhZ2cgew0KKyAgICAg ICBzdHJ1Y3QgcGFnZ19ob29rCSpob29rOw0KKyAgICAgICB2b2lkCQkqZGF0 YTsNCisgICAgICAgc3RydWN0IGxpc3RfaGVhZAllbnRyeTsNCit9Ow0KKw0K Ky8qDQorICogVXNlZCBieSBwYWdnIG1vZHVsZXMgdG8gZGVmaW5lIHRoZSBj YWxsYmFjayBmdW5jdGlvbnMgaW50byB0aGUgDQorICogbW9kdWxlLg0KKyAq DQorICogU1RSVUNUIE1FTUJFUlM6DQorICogICAgIG5hbWU6ICAgICAgICAg ICBUaGUgbmFtZSBvZiB0aGUgcGFnZyBjb250YWluZXIgdHlwZSBwcm92aWRl ZCBieQ0KKyAqICAgICAgICAgICAgICAgICAgICAgdGhlIG1vZHVsZS4gVGhp cyB3aWxsIGJlIHNldCBieSB0aGUgcGFnZyBtb2R1bGUuDQorICogICAgIGF0 dGFjaDogICAgICAgICBGdW5jdGlvbiBwb2ludGVyIHRvIGZ1bmN0aW9uIHVz ZWQgd2hlbiBhdHRhY2hpbmcNCisgKiAgICAgICAgICAgICAgICAgICAgIGEg cHJvY2VzcyB0byB0aGUgcGFnZyBjb250YWluZXIgcmVmZXJlbmNlZCBieSAN CisgKiAgICAgICAgICAgICAgICAgICAgIHRoaXMgc3RydWN0Lg0KKyAqICAg ICBkZXRhY2g6ICAgICAgICAgRnVuY3Rpb24gcG9pbnRlciB0byBmdW5jdGlv biB1c2VkIHdoZW4gZGV0YWNoaW5nDQorICogICAgICAgICAgICAgICAgICAg ICBhIHByb2Nlc3MgdG8gdGhlIHBhZ2cgY29udGFpbmVyIHJlZmVyZW5jZWQg YnkgDQorICogICAgICAgICAgICAgICAgICAgICB0aGlzIHN0cnVjdC4NCisg KiAgICAgaW5pdDogICAgICAgICAgIEZ1bmN0aW9uIHBvaW50ZXIgdG8gaW5p dGlhbGl6YXRpb24gZnVuY3Rpb24uICBUaGlzDQorICogICAgICAgICAgICAg ICAgICAgICBmdW5jdGlvbiBpcyB1c2VkIHdoZW4gdGhlIG1vZHVsZSBpcyBs b2FkZWQgdG8gYXR0YWNoDQorICogICAgICAgICAgICAgICAgICAgICBleGlz dGluZyBwcm9jZXNzZXMgdG8gYSBkZWZhdWx0IGNvbnRhaW5lciBhcyBkZWZp bmVkIGJ5DQorICogICAgICAgICAgICAgICAgICAgICB0aGUgcGFnZyBtb2R1 bGUuIFRoaXMgaXMgb3B0aW9uYWwgYW5kIG1heSBiZSBzZXQgdG8gDQorICog ICAgICAgICAgICAgICAgICAgICBOVUxMIGlmIGl0IGlzIG5vdCBuZWVkZWQg YnkgdGhlIHBhZ2cgbW9kdWxlLg0KKyAqICAgICBkYXRhOiAgICAgICAgICAg T3BhcXVlIGRhdGEgcG9pbnRlciAtIGRlZmluZWQgYnkgcGFnZyBtb2R1bGVz Lg0KKyAqICAgICBtb2R1bGU6ICAgICAgICAgUG9pbnRlciB0byBrZXJuZWwg bW9kdWxlIHN0cnVjdC4gIFVzZWQgdG8gaW5jcmVtZW50ICYgDQorICogICAg ICAgICAgICAgICAgICAgICBkZWNyZW1lbnQgdGhlIHVzZSBjb3VudCBmb3Ig dGhlIG1vZHVsZS4NCisgKiAgICAgZW50cnk6CSAgICAgICBMaXN0IHBvaW50 ZXJzDQorICogICAgIGV4ZWM6ICAgICAgICAgICBGdW5jdGlvbiBwb2ludGVy IHRvIGZ1bmN0aW9uIHVzZWQgd2hlbiBhIHByb2Nlc3MNCisgKiAgICAgICAg ICAgICAgICAgICAgIGluIHRoZSBwYWdnIGNvbnRhaW5lciBleGVjJ3MgYSBu ZXcgcHJvY2Vzcy4gVGhpcw0KKyAqICAgICAgICAgICAgICAgICAgICAgaXMg b3B0aW9uYWwgYW5kIG1heSBiZSBzZXQgdG8gTlVMTCBpZiBpdCBpcyBub3Qg DQorICogICAgICAgICAgICAgICAgICAgICBuZWVkZWQgYnkgdGhlIHBhZ2cg bW9kdWxlLg0KKyAqLw0KK3N0cnVjdCBwYWdnX2hvb2sgew0KKyAgICAgICBz dHJ1Y3QgbW9kdWxlCSptb2R1bGU7DQorICAgICAgIGNoYXIJCSpuYW1lOwkv KiBOYW1lIEtleSAtIHJlc3RyaWN0ZWQgdG8gMzIgY2hhcmFjdGVycyAqLw0K KyAgICAgICBpbnQJCSgqYXR0YWNoKShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwg c3RydWN0IHBhZ2cgKiwgdm9pZCopOw0KKyAgICAgICBpbnQJCSgqZGV0YWNo KShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0IHBhZ2cgKik7DQorICAg ICAgIGludAkJKCppbml0KShzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgc3RydWN0 IHBhZ2cgKik7DQorICAgICAgIHZvaWQJCSpkYXRhOwkvKiBPcGFxdWUgbW9k dWxlIHNwZWNpZmljIGRhdGEgKi8NCisgICAgICAgc3RydWN0IGxpc3RfaGVh ZAllbnRyeTsJLyogTGlzdCBwb2ludGVycyAqLw0KKyAgICAgICB2b2lkCQko KmV4ZWMpKHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBzdHJ1Y3QgcGFnZyAqKTsN Cit9Ow0KKw0KKw0KKy8qIEtlcm5lbCBzZXJ2aWNlIGZ1bmN0aW9ucyBmb3Ig cHJvdmlkaW5nIFBBR0cgc3VwcG9ydCAqLw0KK2V4dGVybiBzdHJ1Y3QgcGFn ZyAqZ2V0X3BhZ2coc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBjaGFyICpr ZXkpOw0KK2V4dGVybiBzdHJ1Y3QgcGFnZyAqYWxsb2NfcGFnZyhzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRhc2ssIA0KKwkJCQkgICAgICBzdHJ1Y3QgcGFnZ19o b29rICpwdCk7DQorZXh0ZXJuIHZvaWQgZnJlZV9wYWdnKHN0cnVjdCBwYWdn ICpwYWdnKTsNCitleHRlcm4gaW50IHJlZ2lzdGVyX3BhZ2dfaG9vayhzdHJ1 Y3QgcGFnZ19ob29rICpwdF9uZXcpOw0KK2V4dGVybiBpbnQgdW5yZWdpc3Rl cl9wYWdnX2hvb2soc3RydWN0IHBhZ2dfaG9vayAqcHRfb2xkKTsNCitleHRl cm4gaW50IGF0dGFjaF9wYWdnX2xpc3Qoc3RydWN0IHRhc2tfc3RydWN0ICp0 b190YXNrLCANCisJCQkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqZnJvbV90YXNr KTsNCitleHRlcm4gaW50IGRldGFjaF9wYWdnX2xpc3Qoc3RydWN0IHRhc2tf c3RydWN0ICp0YXNrKTsNCitleHRlcm4gaW50IGV4ZWNfcGFnZ19saXN0KHN0 cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7DQorDQorLyogDQorICogIE1hY3Jv IHVzZWQgd2hlbiBhIGNoaWxkIHByb2Nlc3MgbXVzdCBpbmhlcml0IGF0dGFj aG1lbnQgdG8gcGFnZyANCisgKiAgY29udGFpbmVycyBmcm9tIHRoZSBwYXJl bnQuDQorICoNCisgKiAgQXJndW1lbnRzOg0KKyAqCWN0OgljaGlsZCAoc3Ry dWN0IHRhc2tfc3RydWN0ICopDQorICoJcHQ6CXBhcmVudCAoc3RydWN0IHRh c2tfc3RydWN0ICopDQorICoJY2Y6CWNsb25lX2ZsYWdzDQorICovDQorI2Rl ZmluZSBhdHRhY2hfcGFnZ19saXN0X2NoayhjdCwgcHQpCQkJCQlcDQorZG8g ewkJCQkJCQkJCVwNCisJSU5JVF9QQUdHX0xJU1QoJmN0LT5wYWdnX2xpc3Qp OwkJCQkJXA0KKwlpZiAoIWxpc3RfZW1wdHkoJnB0LT5wYWdnX2xpc3QuaGVh ZCkpIHsJCQkJXA0KKwkJaWYgKGF0dGFjaF9wYWdnX2xpc3QoY3QsIHB0KSAh PSAwKQkJCVwNCisJCQlnb3RvIGJhZF9mb3JrX2NsZWFudXA7CQkJCVwNCisJ fQkJCQkJCQkJXA0KK30gd2hpbGUoMCkNCisNCisvKiANCisgKiBNYWNybyB1 c2VkIHdoZW4gYSBwcm9jZXNzIG11c3QgZGV0YWNoIGZyb20gcGFnZyBjb250 YWluZXJzIHRvIHdoaWNoIGl0DQorICogaXMgY3VycmVubHR5IGEgbWVtYmVy Lg0KKyAqDQorICogQWd1bWVudHM6DQorICogCXQ6CXRhc2sgKHN0cnVjdCB0 YXNrX3N0cnVjdCAqKQ0KKyAqLw0KKyNkZWZpbmUgZGV0YWNoX3BhZ2dfbGlz dF9jaGsodCkJCQkJCVwNCitkbyB7CQkJCQkJCQkJXA0KKwlpZiAoIWxpc3Rf ZW1wdHkoJnQtPnBhZ2dfbGlzdC5oZWFkKSkgewkJCQlcDQorCQlkZXRhY2hf cGFnZ19saXN0KHQpOwkJCQkJXA0KKwl9CQkJCQkJCQlcDQorfSB3aGlsZSgw KQ0KKw0KKw0KKy8qIA0KKyAqIE1hY3JvIHVzZWQgd2hlbiBhIHByb2Nlc3Mg ZXhlYydzLg0KKyAqDQorICogQWd1bWVudHM6DQorICogCXQ6CXRhc2sgKHN0 cnVjdCB0YXNrX3N0cnVjdCAqKQ0KKyAqLw0KKyNkZWZpbmUgZXhlY19wYWdn X2xpc3RfY2hrKHQpCQkJCQkJXA0KK2RvIHsJCQkJCQkJCQlcDQorCWlmICgh bGlzdF9lbXB0eSgmdC0+cGFnZ19saXN0LmhlYWQpKSB7CQkJCVwNCisJCWV4 ZWNfcGFnZ19saXN0KHQpOwkJCQkJXA0KKwl9CQkJCQkJCQlcDQorfSB3aGls ZSgwKQ0KKw0KKw0KKy8qDQorICogVXRpbGl0eSBtYWNyb3MgZm9yIHBhZ2cg aGFuZGxpbmcgYW5kIGxvY2tpbmcgcGFnZyBsaXN0cy4NCisgKg0KKyAqIEFy Z3VtZW50czoNCisgKiAJdDoJdGFzayAgKHN0cnVjdCB0YXNrX2xpc3QgKikN CisgKiAJcDoJcGFnZyAgKHN0cnVjdCBwYWdnICopDQorICogCWQ6CWRhdGEg IChwdHIgdG8gZGF0YSBtYWludGFpbmVkIGJ5IHRoZSANCisgKiAJCQlwYWdn IG1vZHVsZSAtIGNvbnZlcnRzIHRvIHZvaWQgcHRyKQ0KKyAqLw0KKwkvKiBJ bnZva2UgbW9kdWxlIGRldGFjaCBjYWxsYmFjayBmb3IgdGhlIHBhZ2cgJiB0 YXNrICovDQorI2RlZmluZSBkZXRhY2hfcGFnZyh0LCBwKQkJcC0+aG9vay0+ ZGV0YWNoKHQsIHApDQorCS8qIEludm9rZSBtb2R1bGUgYXR0YWNoIGNhbGxi YWNrIGZvciB0aGUgcGFnZyAmIHRhc2sgKi8NCisjZGVmaW5lIGF0dGFjaF9w YWdnKHQsIHAsIGQpICAJCXAtPmhvb2stPmF0dGFjaCh0LCBwLCAodm9pZCAq KWQpDQorCS8qIEFsbG93cyBvcHRpb25hbCBjYWxsb3V0IGF0IGV4ZWMgKi8N CisjZGVmaW5lIGV4ZWNfcGFnZyh0LCBwKSAgCQlkbyB7CQkJCVwNCisJCQkJ CQlpZiAocC0+aG9vay0+ZXhlYykJXA0KKwkJCQkJCSAgICBwLT5ob29rLT5l eGVjKHQsIHApO1wNCisJCQkJCX0gd2hpbGUoMCkNCisJLyogQWxsb3dzIG1v ZHVsZSB0byBzZXQgZGF0YSBpdGVtIGZvciBwYWdnICovDQorI2RlZmluZSBz ZXRfcGFnZyhwLCBkKSAgIAkJcC0+ZGF0YSA9ICh2b2lkICopZA0KKwkvKiBE b3duIHRoZSByZWFkIHNlbWFwaG9yZSBmb3IgdGhlIHRhc2sncyBwYWdnX2xp c3QgKi8NCisjZGVmaW5lIHJlYWRfbG9ja19wYWdnX2xpc3QodCkJCWRvd25f cmVhZCgmdC0+cGFnZ19saXN0LnNlbSkNCisJLyogVXAgdGhlIHJlYWQgc2Vt YXBob3JlIGZvciB0aGUgdGFzaydzIHBhZ2dfbGlzdCAqLw0KKyNkZWZpbmUg cmVhZF91bmxvY2tfcGFnZ19saXN0KHQpIAl1cF9yZWFkKCZ0LT5wYWdnX2xp c3Quc2VtKQ0KKwkvKiBEb3duIHRoZSB3cml0ZSBzZW1hcGhvcmUgZm9yIHRo ZSB0YXNrJ3MgcGFnZ19saXN0ICovDQorI2RlZmluZSB3cml0ZV9sb2NrX3Bh Z2dfbGlzdCh0KQkJZG93bl93cml0ZSgmdC0+cGFnZ19saXN0LnNlbSkNCisJ LyogVXAgdGhlIHdyaXRlIHNlbWFwaG9yZSBmb3IgdGhlIHRhc2sncyBwYWdn X2xpc3QgKi8NCisjZGVmaW5lIHdyaXRlX3VubG9ja19wYWdnX2xpc3QodCkg CXVwX3dyaXRlKCZ0LT5wYWdnX2xpc3Quc2VtKQ0KKw0KKy8qDQorICogTWFy Y28gVXNlZCBpbiBJTklUX1RBU0sgdG8gc2V0IHRoZSBoZWFkIGFuZCBzZW0g b2YgcGFnZ19saXN0Lg0KKyAqIElmIENPTkZJR19QQUdHIGlzIG9mZiwgaXQg aXMgZGVmaW5lZCBhcyBhbiBlbXB0eSBtYWNybyBiZWxvdy4NCisgKi8NCisj ZGVmaW5lIElOSVRfVEFTS19QQUdHKHRzaykgXA0KKwkucGFnZ19saXN0ICA9 IHsgICAgICAgICAgICAgICAgICBcDQorCS5oZWFkID0gTElTVF9IRUFEX0lO SVQodHNrLnBhZ2dfbGlzdC5oZWFkKSwgICAgIFwNCisJLnNlbSAgPSBfX1JX U0VNX0lOSVRJQUxJWkVSKHRzay5wYWdnX2xpc3Quc2VtKSAgXA0KKwl9LCBc DQorDQorI2Vsc2UgIC8qIENPTkZJR19QQUdHICovDQorDQorLyogDQorICog UmVwbGFjZW1lbnQgbWFjcm9zIHVzZWQgd2hlbiBQQUdHIChQcm9jZXNzIEFn Z3JlZ2F0ZXMpIHN1cHBvcnQgaXMgbm90DQorICogY29tcGlsZWQgaW50byB0 aGUga2VybmVsLg0KKyAqLw0KKyNkZWZpbmUgSU5JVF9UQVNLX1BBR0codHNr KQ0KKyNkZWZpbmUgSU5JVF9QQUdHX0xJU1QobCkgZG8geyB9IHdoaWxlKDAp DQorI2RlZmluZSBhdHRhY2hfcGFnZ19saXN0X2NoayhjdCwgcHQpICBkbyB7 IH0gd2hpbGUoMCkNCisjZGVmaW5lIGRldGFjaF9wYWdnX2xpc3RfY2hrKHQp ICBkbyB7ICB9IHdoaWxlKDApICAgICANCisjZGVmaW5lIGV4ZWNfcGFnZ19s aXN0X2Noayh0KSAgZG8geyAgfSB3aGlsZSgwKSAgICAgDQorDQorI2VuZGlm IC8qIENPTkZJR19QQUdHICovDQorDQorI2VuZGlmIC8qIF9QQUdHX0ggKi8N CmRpZmYgLU5hcnUgMi42LXBhdGNoL2luY2x1ZGUvbGludXgvc2NoZWQuaCAy LjZwYWdnLXBhdGNoL2luY2x1ZGUvbGludXgvc2NoZWQuaA0KLS0tIDIuNi1w YXRjaC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgJMjAwNC0wNC0wNSAxNDoxODow NS4wMDAwMDAwMDAgLTA1MDANCisrKyAyLjZwYWdnLXBhdGNoL2luY2x1ZGUv bGludXgvc2NoZWQuaAkyMDA0LTA0LTE0IDA3OjUyOjE2LjAwMDAwMDAwMCAt MDUwMA0KQEAgLTI5LDYgKzI5LDcgQEANCiAjaW5jbHVkZSA8bGludXgvY29t cGxldGlvbi5oPg0KICNpbmNsdWRlIDxsaW51eC9waWQuaD4NCiAjaW5jbHVk ZSA8bGludXgvcGVyY3B1Lmg+DQorI2luY2x1ZGUgPGxpbnV4L3BhZ2cuaD4N CiANCiBzdHJ1Y3QgZXhlY19kb21haW47DQogDQpAQCAtNDg4LDExICs0ODks MTUgQEANCiANCiAJc3RydWN0IGRlbnRyeSAqcHJvY19kZW50cnk7DQogCXN0 cnVjdCBiYWNraW5nX2Rldl9pbmZvICpiYWNraW5nX2Rldl9pbmZvOw0KLQ0K IAlzdHJ1Y3QgaW9fY29udGV4dCAqaW9fY29udGV4dDsNCiANCiAJdW5zaWdu ZWQgbG9uZyBwdHJhY2VfbWVzc2FnZTsNCiAJc2lnaW5mb190ICpsYXN0X3Np Z2luZm87IC8qIEZvciBwdHJhY2UgdXNlLiAgKi8NCisNCisjaWYgZGVmaW5l ZChDT05GSUdfUEFHRykNCisvKiBMaXN0IG9mIHBhZ2cgKHByb2Nlc3MgYWdn cmVnYXRlKSBhdHRhY2htZW50cyAqLw0KKwlzdHJ1Y3QgcGFnZ19saXN0IHBh Z2dfbGlzdDsNCisjZW5kaWYNCiB9Ow0KIA0KIHN0YXRpYyBpbmxpbmUgcGlk X3QgcHJvY2Vzc19ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykNCmRp ZmYgLU5hcnUgMi42LXBhdGNoL2luaXQvS2NvbmZpZyAyLjZwYWdnLXBhdGNo L2luaXQvS2NvbmZpZw0KLS0tIDIuNi1wYXRjaC9pbml0L0tjb25maWcJMjAw NC0wMy0xNiAxNDoxMzozMC4wMDAwMDAwMDAgLTA2MDANCisrKyAyLjZwYWdn LXBhdGNoL2luaXQvS2NvbmZpZwkyMDA0LTA0LTI2IDE0OjI1OjI1LjAwMDAw MDAwMCAtMDUwMA0KQEAgLTEwNCw2ICsxMDQsMTQgQEANCiAJICB1cCB0byB0 aGUgdXNlciBsZXZlbCBwcm9ncmFtIHRvIGRvIHVzZWZ1bCB0aGluZ3Mgd2l0 aCB0aGlzDQogCSAgaW5mb3JtYXRpb24uICBUaGlzIGlzIGdlbmVyYWxseSBh IGdvb2QgaWRlYSwgc28gc2F5IFkuDQogDQorY29uZmlnIFBBR0cNCisJYm9v bCAiU3VwcG9ydCBmb3IgcHJvY2VzcyBhZ2dyZWdhdGVzIChQQUdHcykiDQor CWhlbHANCisgICAgIFNheSBZIGhlcmUgaWYgeW91IHdpbGwgYmUgbG9hZGlu ZyBtb2R1bGVzIHdoaWNoIHByb3ZpZGUgc3VwcG9ydA0KKyAgICAgZm9yIHBy b2Nlc3MgYWdncmVnYXRlIGNvbnRhaW5lcnMuICBFeGFtcGxlcyBvZiBzdWNo IG1vZHVsZXMgaW5jbHVkZSB0aGUNCisgICAgIExpbnV4IEpvYnMgbW9kdWxl IGFuZCB0aGUgTGludXggQXJyYXkgU2Vzc2lvbnMgbW9kdWxlLiAgSWYgeW91 IHdpbGwgbm90IA0KKyAgICAgYmUgdXNpbmcgc3VjaCBtb2R1bGVzLCBzYXkg Ti4NCisNCiBjb25maWcgU1lTQ1RMDQogCWJvb2wgIlN5c2N0bCBzdXBwb3J0 Ig0KIAktLS1oZWxwLS0tDQpkaWZmIC1OYXJ1IDIuNi1wYXRjaC9rZXJuZWwv ZXhpdC5jIDIuNnBhZ2ctcGF0Y2gva2VybmVsL2V4aXQuYw0KLS0tIDIuNi1w YXRjaC9rZXJuZWwvZXhpdC5jCTIwMDQtMDQtMDUgMTQ6MTg6MDUuMDAwMDAw MDAwIC0wNTAwDQorKysgMi42cGFnZy1wYXRjaC9rZXJuZWwvZXhpdC5jCTIw MDQtMDQtMTQgMDc6NTI6MTYuMDAwMDAwMDAwIC0wNTAwDQpAQCAtMjIsNyAr MjIsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9wcm9maWxlLmg+DQogI2luY2x1 ZGUgPGxpbnV4L21vdW50Lmg+DQogI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMu aD4NCi0NCisjaW5jbHVkZSA8bGludXgvcGFnZy5oPg0KICNpbmNsdWRlIDxh c20vdWFjY2Vzcy5oPg0KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPg0KICNp bmNsdWRlIDxhc20vbW11X2NvbnRleHQuaD4NCkBAIC03ODgsNiArNzg4LDkg QEANCiAJCW1vZHVsZV9wdXQodHNrLT5iaW5mbXQtPm1vZHVsZSk7DQogDQog CXRzay0+ZXhpdF9jb2RlID0gY29kZTsNCisNCisJZGV0YWNoX3BhZ2dfbGlz dF9jaGsodHNrKTsNCisNCiAJZXhpdF9ub3RpZnkodHNrKTsNCiAJc2NoZWR1 bGUoKTsNCiAJQlVHKCk7DQpkaWZmIC1OYXJ1IDIuNi1wYXRjaC9rZXJuZWwv Zm9yay5jIDIuNnBhZ2ctcGF0Y2gva2VybmVsL2ZvcmsuYw0KLS0tIDIuNi1w YXRjaC9rZXJuZWwvZm9yay5jCTIwMDQtMDMtMTYgMTQ6MTM6MzAuMDAwMDAw MDAwIC0wNjAwDQorKysgMi42cGFnZy1wYXRjaC9rZXJuZWwvZm9yay5jCTIw MDQtMDQtMTMgMjE6NDI6MzUuMDAwMDAwMDAwIC0wNTAwDQpAQCAtMzEsNyAr MzEsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9mdXRleC5oPg0KICNpbmNsdWRl IDxsaW51eC9wdHJhY2UuaD4NCiAjaW5jbHVkZSA8bGludXgvbW91bnQuaD4N Ci0NCisjaW5jbHVkZSA8bGludXgvcGFnZy5oPg0KICNpbmNsdWRlIDxhc20v cGd0YWJsZS5oPg0KICNpbmNsdWRlIDxhc20vcGdhbGxvYy5oPg0KICNpbmNs dWRlIDxhc20vdWFjY2Vzcy5oPg0KQEAgLTIzMiw2ICsyMzIsOSBAQA0KIA0K IAlpbml0X3Rhc2sucmxpbVtSTElNSVRfTlBST0NdLnJsaW1fY3VyID0gbWF4 X3RocmVhZHMvMjsNCiAJaW5pdF90YXNrLnJsaW1bUkxJTUlUX05QUk9DXS5y bGltX21heCA9IG1heF90aHJlYWRzLzI7DQorDQorCS8qIEluaXRpYWxpemUg dGhlIHBhZ2cgbGlzdCBpbiBwaWQgMCBiZWZvcmUgaXQgY2FuIGNsb25lIGl0 c2VsZi4gKi8NCisJSU5JVF9QQUdHX0xJU1QoJmN1cnJlbnQtPnBhZ2dfbGlz dCk7DQogfQ0KIA0KIHN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmR1cF90 YXNrX3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm9yaWcpDQpAQCAtOTg1 LDYgKzk4OCwxMiBAQA0KIAkgICANCiAJcC0+cGFyZW50X2V4ZWNfaWQgPSBw LT5zZWxmX2V4ZWNfaWQ7DQogDQorCS8qDQorCSAqIGNhbGwgcGFnZyBtb2R1 bGVzIHRvIHByb3Blcmx5IGF0dGFjaCBuZXcgcHJvY2VzcyB0byB0aGUgc2Ft ZQ0KKwkgKiBwcm9jZXNzIGFnZ3JlZ2F0ZSBjb250YWluZXJzIGFzIHRoZSBw YXJlbnQgcHJvY2Vzcy4NCisJICovDQorCWF0dGFjaF9wYWdnX2xpc3RfY2hr KHAsIGN1cnJlbnQpOw0KKw0KIAkvKiBvaywgbm93IHdlIHNob3VsZCBiZSBz ZXQgdXAuLiAqLw0KIAlwLT5leGl0X3NpZ25hbCA9IChjbG9uZV9mbGFncyAm IENMT05FX1RIUkVBRCkgPyAtMSA6IChjbG9uZV9mbGFncyAmIENTSUdOQUwp Ow0KIAlwLT5wZGVhdGhfc2lnbmFsID0gMDsNCmRpZmYgLU5hcnUgMi42LXBh dGNoL2tlcm5lbC9NYWtlZmlsZSAyLjZwYWdnLXBhdGNoL2tlcm5lbC9NYWtl ZmlsZQ0KLS0tIDIuNi1wYXRjaC9rZXJuZWwvTWFrZWZpbGUJMjAwNC0wMy0x NiAxNDoxMzozMC4wMDAwMDAwMDAgLTA2MDANCisrKyAyLjZwYWdnLXBhdGNo L2tlcm5lbC9NYWtlZmlsZQkyMDA0LTA0LTEzIDIxOjQyOjM1LjAwMDAwMDAw MCAtMDUwMA0KQEAgLTcsNyArNyw3IEBADQogCSAgICBzeXNjdGwubyBjYXBh YmlsaXR5Lm8gcHRyYWNlLm8gdGltZXIubyB1c2VyLm8gXA0KIAkgICAgc2ln bmFsLm8gc3lzLm8ga21vZC5vIHdvcmtxdWV1ZS5vIHBpZC5vIFwNCiAJICAg IHJjdXBkYXRlLm8gaW50ZXJtb2R1bGUubyBleHRhYmxlLm8gcGFyYW1zLm8g cG9zaXgtdGltZXJzLm8gXA0KLQkgICAga3RocmVhZC5vDQorCSAgICBrdGhy ZWFkLm8gcGFnZy5vDQogDQogb2JqLSQoQ09ORklHX0ZVVEVYKSArPSBmdXRl eC5vDQogb2JqLSQoQ09ORklHX0dFTkVSSUNfSVNBX0RNQSkgKz0gZG1hLm8N CkBAIC0xOCw2ICsxOCw3IEBADQogb2JqLSQoQ09ORklHX1BNKSArPSBwb3dl ci8NCiBvYmotJChDT05GSUdfQlNEX1BST0NFU1NfQUNDVCkgKz0gYWNjdC5v DQogb2JqLSQoQ09ORklHX0NPTVBBVCkgKz0gY29tcGF0Lm8NCitvYmotJChD T05GSUdfUEFHRykgKz0gcGFnZy5vDQogb2JqLSQoQ09ORklHX0lLQ09ORklH KSArPSBjb25maWdzLm8NCiBvYmotJChDT05GSUdfSUtDT05GSUdfUFJPQykg Kz0gY29uZmlncy5vDQogb2JqLSQoQ09ORklHX1NUT1BfTUFDSElORSkgKz0g c3RvcF9tYWNoaW5lLm8NCmRpZmYgLU5hcnUgMi42LXBhdGNoL2tlcm5lbC9w YWdnLmMgMi42cGFnZy1wYXRjaC9rZXJuZWwvcGFnZy5jDQotLS0gMi42LXBh dGNoL2tlcm5lbC9wYWdnLmMJMTk2OS0xMi0zMSAxODowMDowMC4wMDAwMDAw MDAgLTA2MDANCisrKyAyLjZwYWdnLXBhdGNoL2tlcm5lbC9wYWdnLmMJMjAw NC0wNC0yNiAxMjoyMzowMi4wMDAwMDAwMDAgLTA1MDANCkBAIC0wLDAgKzEs NDI2IEBADQorLyogDQorICogUEFHRyAoUHJvY2VzcyBBZ2dyZWdhdGVzKSBp bnRlcmZhY2UNCisgKg0KKyAqIA0KKyAqIENvcHlyaWdodCAoYykgMjAwMC0y MDA0IFNpbGljb24gR3JhcGhpY3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2 ZWQuDQorICoNCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICogdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg b3INCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0K KyAqDQorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICogYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YNCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQorICogR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCisgKg0KKyAqIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlDQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCisgKiBG b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KKyAqDQorICoNCisgKiBDb250 YWN0IGluZm9ybWF0aW9uOiAgU2lsaWNvbiBHcmFwaGljcywgSW5jLiwgMTUw MCBDcml0dGVuZGVuIExhbmUsDQorICogTW91bnRhaW4gVmlldywgQ0EgIDk0 MDQzLCBvcjoNCisgKiANCisgKiBodHRwOi8vd3d3LnNnaS5jb20gDQorICog DQorICogRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoaXMg bm90aWNlLCBzZWU6IA0KKyAqIA0KKyAqIGh0dHA6Ly9vc3Muc2dpLmNvbS9w cm9qZWN0cy9HZW5JbmZvL05vdGljZUV4cGxhbg0KKyAqLw0KKw0KKy8qDQor ICogRGVzY3JpcHRpb246ICBUaGlzIGZpbGUsIGtlcm5lbC9wYWdnLmMsIGNv bnRhaW5zIHRoZSByb3V0aW5lcyB1c2VkDQorICogICAgICAgICAgICAgICB0 byBpbXBsZW1lbnQgcHJvY2VzcyBhZ2dyZWdhdGVzIChwYWdncykuICBUaGUg cGFnZw0KKyAqICAgICAgICAgICAgICAgZXh0ZW5kcyB0aGUgdGFza19zdHJ1 Y3QgdG8gYWxsb3cgZm9yIHZhcmlvdXMgcHJvY2Vzcw0KKyAqICAgICAgICAg ICAgICAgYWdncmVnYXRpb24gY29udGluZXJzLiAgRXhhbXBsZXMgb2Ygc3Vj aCBjb250YWluZXJzDQorICogICAgICAgICAgICAgICBpbmNsdWRlICJqb2Jz IiBhbmQgY2x1c3RlciBhcHBsaWNhdGlvbnMgSURzLiAgUHJvY2Vzcw0KKyAq ICAgICAgICAgICAgICAgc2Vzc2lvbnMgYW5kIGdyb3VwcyBjb3VsZCBoYXZl IGJlZW4gaW1wbGVtZW50ZWQgdXNpbmcNCisgKiAgICAgICAgICAgICAgIHBh Z2dzIChhbHRob3VnaCB0aGVyZSB3b3VsZCBiZSBsaXR0bGUgcHVycG9zZSBp bg0KKyAqICAgICAgICAgICAgICAgbWFraW5nIHRoYXQgY2hhbmdlIGF0IHRo aXMganVuY3R1cmUpLiAgVGhlIHBhZ2cNCisgKiAgICAgICAgICAgICAgIHN0 cnVjdHVyZSBtYWludGFpbnMgcG9pbnRlcnMgdG8gY2FsbGJhY2sgZnVuY3Rp b25zIGFuZA0KKyAqICAgICAgICAgICAgICAgZGF0YSBzdHJ1Y3VyZXMgbWFp bnRhaW5lZCBpbiBtb2R1bGVzIHRoYXQgaGF2ZQ0KKyAqICAgICAgICAgICAg ICAgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwgYXMgcGFnZyBjb250YWlu ZXINCisgKiAgICAgICAgICAgICAgIHByb3ZpZGVycy4NCisgKi8NCisNCisj aW5jbHVkZSA8bGludXgvY29uZmlnLmg+DQorDQorI2lmZGVmIENPTkZJR19Q QUdHDQorDQorI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+DQorI2luY2x1ZGUg PGxpbnV4L3NsYWIuaD4NCisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4NCisj aW5jbHVkZSA8YXNtL3NlbWFwaG9yZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9z bXBfbG9jay5oPg0KKyNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9wYWdn Lmg+DQorDQorLyogbGlzdCBvZiBwYWdnIGhvb2sgZW50cmllcyB0aGF0IHJl ZmVyZW5jZSB0aGUgIm1vZHVsZSIgaW1wbGVtZW50YXRpb25zICovDQorc3Rh dGljIExJU1RfSEVBRChwYWdnX2hvb2tfbGlzdCk7DQorc3RhdGljIERFQ0xB UkVfUldTRU0ocGFnZ19ob29rX2xpc3Rfc2VtKTsNCisNCisNCisvKiANCisg KiBnZXRfcGFnZw0KKyAqDQorICogR2l2ZW4gYSBwYWdnX2xpc3QgbGlzdCBz dHJ1Y3R1cmUsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4NCisgKiBhIHBv aW50ZXIgdG8gdGhlIHBhZ2cgc3RydWN0IHRoYXQgbWF0Y2hlcyB0aGUgc2Vh cmNoDQorICoga2V5LiAgSWYgdGhlIGtleSBpcyBub3QgZm91bmQsIHRoZSBm dW5jdGlvbiB3aWxsIHJldHVybiBOVUxMLg0KKyAqDQorICogVGhlIGNhbGxl ciBzaG91bGQgaG9sZCBhdCBsZWFzdCBhIHJlYWQgbG9jayBvbiB0aGUgcGFn Z19saXN0DQorICogZm9yIHRhc2sgdXNpbmcgcmVhZF9sb2NrX3BhZ2dfbGlz dCh0YXNrKS4NCisgKi8NCitzdHJ1Y3QgcGFnZyAqDQorZ2V0X3BhZ2coc3Ry dWN0IHRhc2tfc3RydWN0ICp0YXNrLCBjaGFyICprZXkpDQorew0KKwlzdHJ1 Y3QgbGlzdF9oZWFkICplbnRyeTsNCisNCisJbGlzdF9mb3JfZWFjaChlbnRy eSwgJnRhc2stPnBhZ2dfbGlzdC5oZWFkKSB7DQorCQlzdHJ1Y3QgcGFnZyAq cGFnZyA9IGxpc3RfZW50cnkoZW50cnksIHN0cnVjdCBwYWdnLCBlbnRyeSk7 DQorCQlpZiAoIXN0cmNtcChwYWdnLT5ob29rLT5uYW1lLGtleSkpIHsNCisJ CQlyZXR1cm4gcGFnZzsNCisJCX0NCisJfQ0KKwlyZXR1cm4gTlVMTDsNCit9 DQorDQorDQorLyoNCisgKiBhbGxvY19wYWdnDQorICoNCisgKiBHaXZlbiBh IHRhc2sgYW5kIGEgcGFnZyBob29rLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWxs b2NhdGUNCisgKiBhIG5ldyBwYWdnIHN0cnVjdHVyZSwgaW5pdGlhbGl6ZSB0 aGUgc2V0dGluZ3MsIGFuZCBpbnNlcnQgdGhlIHBhZ2cgaW50bw0KKyAqIHRo ZSBwYWdnX2xpc3QgZm9yIHRoZSB0YXNrLg0KKyAqDQorICogVGhlIGNhbGxl ciBmb3IgdGhpcyBmdW5jdGlvbiBzaG91bGQgaG9sZCBhdCBsZWFzdCBhIHJl YWQgbG9jayBvbiB0aGUNCisgKiBwYWdnX2hvb2tfbGlzdF9zZW0gLSBvciBl bnN1cmUgdGhhdCB0aGUgcGFnZyBob29rIGVudHJ5IGNhbm5vdCBiZSANCisg KiByZW1vdmVkLiBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBjYWxsZWQgZnJvbSB0 aGUgcGFnZyBtb2R1bGUgKHVzdWFsbHkgdGhlDQorICogY2FzZSksIHRoZW4g dGhlIGNhbGxlciBuZWVkIG5vdCBob2xkIHRoaXMgbG9jay4gVGhlIGNhbGxl ciBzaG91bGQgaG9sZCANCisgKiBhIHdyaXRlIGxvY2sgb24gZm9yIHRoZSB0 YXNrcyBwYWdnX2xpc3Quc2VtLiAgVGhpcyBjYW4gYmUgbG9ja2VkIHVzaW5n IHRoZQ0KKyAqIHdyaXRlX2xvY2tfcGFnZ19saXN0KHRhc2spIG1hY3JvLg0K KyAqLw0KK3N0cnVjdCBwYWdnICoNCithbGxvY19wYWdnKHN0cnVjdCB0YXNr X3N0cnVjdCAqdGFzaywgc3RydWN0IHBhZ2dfaG9vayAqcGFnZ19ob29rKQ0K K3sNCisJc3RydWN0IHBhZ2cgKnBhZ2c7DQorDQorCXBhZ2cgPSAoc3RydWN0 IHBhZ2cgKilrbWFsbG9jKHNpemVvZihzdHJ1Y3QgcGFnZyksIEdGUF9LRVJO RUwpOw0KKwlpZiAoIXBhZ2cpDQorCQlyZXR1cm4gTlVMTDsNCisNCisJcGFn Zy0+aG9vayA9IHBhZ2dfaG9vazsNCisJcGFnZy0+ZGF0YSA9IE5VTEw7DQor CWxpc3RfYWRkX3RhaWwoJnBhZ2ctPmVudHJ5LCAmdGFzay0+cGFnZ19saXN0 LmhlYWQpOw0KKwlyZXR1cm4gcGFnZzsNCit9DQorDQorDQorLyoNCisgKiBm cmVlX3BhZ2cNCisgKg0KKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBlbnN1cmUg dGhlIHBhZ2cgaXMgZGVsZXRlZCBmb3JtIA0KKyAqIHRoZSBsaXN0IG9mIHBh Z2cgZW50cmllcyBmb3IgdGhlIHRhc2suIEZpbmFsbHksIHRoZSBtZW1vcnkg Zm9yIHRoZSANCisgKiBwYWdnIGlzIGRpc2NhcmRlZC4NCisgKg0KKyAqIFRo ZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgaG9sZCBhIHdyaXRl IGxvY2sgb24gdGhlIHBhZ2dfbGlzdC5zZW0NCisgKiBmb3IgdGhlIHRhc2su IFRoaXMgY2FuIGJlIGxvY2tlIGR1c2luZyB0aGUgd3JpdGVfbG9ja19wYWdn X2xpc3QodGFzaykgDQorICogbWFjcm8uDQorICoNCisgKiBQcmlvciB0byBj YWxsaW5nIGZyZWVfcGFnZywgdGhlIHBhZ2cgc2hvdWxkIGhhdmUgYmVlbiBk ZXRhY2hlZCBmcm9tIHRoZQ0KKyAqIHBhZ2cgY29udGFpbmVyIHJlcHJlc2Vu dGVkIGJ5IHRoaXMgcGFnZy4gIFRoYXQgaXMgdXN1YWxseSBkb25lIHVzaW5n IHRoZQ0KKyAqIG1hY3JvIGRldGFjaF9wYWdnKHBhZ2cpLg0KKyAqLw0KK3Zv aWQNCitmcmVlX3BhZ2coc3RydWN0IHBhZ2cgKnBhZ2cpIA0KK3sNCisNCisJ bGlzdF9kZWwoJnBhZ2ctPmVudHJ5KTsNCisJa2ZyZWUocGFnZyk7DQorfQ0K Kw0KKw0KKy8qDQorICogZ2V0X3BhZ2dfaG9vaw0KKyAqDQorICogR2l2ZW4g YSBwYWdnIGhvb2sgbmFtZSBrZXksIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1 cm4gYSBwb2ludGVyDQorICogdG8gdGhlIHBhZ2dfaG9vayBzdHJ1Y3QgdGhh dCBjb250YWlucyB0aGF0IG1hdGNoZXMgdGhlIG5hbWUuDQorICogDQorICog WW91IHNob3VsZCBob2xkIGVpdGhlciB0aGUgd3JpdGUgb3IgcmVhZCBsb2Nr IGZvciBwYWdnX2hvb2tfbGlzdF9zZW0NCisgKiBiZWZvcmUgdXNpbmcgdGhp cyBmdW5jdGlvbi4gIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB0aGUgcGFnZ19o b29rX2xpc3QNCisgKiBkb2VzIG5vdCBjaGFuZ2Ugd2hpbGUgaXRlcmF0aW5n IHRocm91Z2ggdGhlIGxpc3QgZW50cmllcy4NCisgKi8NCitzdGF0aWMgc3Ry dWN0IHBhZ2dfaG9vayAqDQorZ2V0X3BhZ2dfaG9vayhjaGFyICprZXkpDQor ew0KKwlzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeTsNCisJc3RydWN0IHBhZ2df aG9vayAqcGFnZ19ob29rOw0KKw0KKwlsaXN0X2Zvcl9lYWNoKGVudHJ5LCAm cGFnZ19ob29rX2xpc3QpIHsNCisJCXBhZ2dfaG9vayA9IGxpc3RfZW50cnko ZW50cnksIHN0cnVjdCBwYWdnX2hvb2ssIGVudHJ5KTsNCisJCWlmICghc3Ry Y21wKHBhZ2dfaG9vay0+bmFtZSwga2V5KSkgew0KKwkJCXJldHVybiBwYWdn X2hvb2s7DQorCQl9DQorCX0NCisJcmV0dXJuIE5VTEw7DQorfQ0KKw0KKw0K Ky8qDQorICogcmVnaXN0ZXJfcGFnZ19ob29rDQorICoNCisgKiBVc2VkIHRv IHJlZ2lzdGVyIGEgbmV3IHBhZ2cgaG9vayBhbmQgZW50ZXIgaXQgaW50byB0 aGUgcGFnZ19ob29rX2xpc3QuDQorICogVGhlIHNlcnZpY2UgbmFtZSBmb3Ig YSBwYWdnIGhvb2sgaXMgcmVzdHJpY3RlZCB0byAzMiBjaGFyYWN0ZXJzLg0K KyAqDQorICogSW4gdGhlIGZ1dHVyZSBhbiBpbml0aWFsaXphdGlvbiBmdW5j dGlvbiBtYXkgYWxzbyBiZSBkZWZpbmVkIHNvIHRoYXQgYWxsDQorICogZXhp c3RpbmcgdGFza3MgY2FuIGJlIGFzc2lnbmVkIHRvIGEgZGVmYXVsdCBwYWdn IGVudHJ5IGZvciB0aGUgaG9vay4NCisgKiBIb3dldmVyLCB0aGlzIHdvdWxk IHJlcXVpcmUgaXRlcmF0aW5nIHRocm91Z2ggdGhlIHRhc2tsaXN0LiAgVG8g ZG8gdGhhdA0KKyAqIHJlcXVpcmVzIHRoYXQgdGhlIHRhc2tsaXN0X2xvY2sg YmUgcmVhZCBsb2NrZWQuICBTaW5jZSB0aGUgaW5pdGlhbGl6YXRpb24NCisg KiBmdW5jdGlvbiBtaWdodCBiZSBpbiBhIG1vZHVsZSwgYW5kIHRoZXJlZm9y ZSBpdCBtaWdodCBzbGVlcCAoaW1wbGVtZW50b3JzDQorICogZGVjaXNpb24p LCBob2xkaW5nIHRoZSB0YXNrbGlzdF9sb2NrIHNlZW1zIGxpa2UgYSBiYWQg aWRlYS4gSXQgbWF5IGJlIGENCisgKiByZXF1aXJlbWVudCB0aGF0IHRoZSBp bml0aWFsaXphdGlvbiBmdW5jdGlvbiB3aWxsIGJlIHN0cmljdGx5IGZvcmJp ZGRlbg0KKyAqIGZyb20gbG9ja2luZyAtIGJ5IGdlbnRsZW1hbnMgYWdyZWVt ZW50Li4uIA0KKyAqDQorICogSWYgYSBtZW1vcnkgZXJyb3IgaXMgZW5jb3Vu dGVyZWQsIHRoZSBwYWdnIGhvb2sgaXMgdW5yZWdpc3RlcmVkIGFuZCBhbnkN CisgKiB0YXNrcyB0aGF0IGhhdmUgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW5p dGlhbCBwYWdnIGNvbnRhaW5lciBhcmUgZGV0YWNoZWQNCisgKiBmcm9tIHRo YXQgY29udGFpbmVyLg0KKyAqLw0KK2ludA0KK3JlZ2lzdGVyX3BhZ2dfaG9v ayhzdHJ1Y3QgcGFnZ19ob29rICpwYWdnX2hvb2tfbmV3KQ0KK3sNCisJc3Ry dWN0IHBhZ2dfaG9vayAqcGFnZ19ob29rID0gTlVMTDsNCisNCisJLyogQURE IE5FVyBQQUdHIE1PRFVMRSBUTyBBQ0NFU1MgTElTVCAqLw0KKwlpZiAoIXBh Z2dfaG9va19uZXcpDQorCQlyZXR1cm4gLUVJTlZBTDsJCQkvKiBlcnJvciAq Lw0KKwlpZiAoIWxpc3RfZW1wdHkoJnBhZ2dfaG9va19uZXctPmVudHJ5KSkN CisJCXJldHVybiAtRUlOVkFMOwkJCS8qIGVycm9yICovDQorCWlmIChwYWdn X2hvb2tfbmV3LT5uYW1lID09IE5VTEwgfHwgc3RybGVuKHBhZ2dfaG9va19u ZXctPm5hbWUpID4gUEFHR19OQU1FTE4pIA0KKwkJcmV0dXJuIC1FSU5WQUw7 CQkJLyogZXJyb3IgKi8NCisNCisJLyogVHJ5IHRvIGluc2VydCBuZXcgaG9v ayBlbnRyeSBpbnRvIHRoZSBwYWdnIGhvb2sgbGlzdCAqLw0KKwlkb3duX3dy aXRlKCZwYWdnX2hvb2tfbGlzdF9zZW0pOw0KKw0KKwlwYWdnX2hvb2sgPSBn ZXRfcGFnZ19ob29rKHBhZ2dfaG9va19uZXctPm5hbWUpOw0KKw0KKwlpZiAo cGFnZ19ob29rKSB7DQorCQl1cF93cml0ZSgmcGFnZ19ob29rX2xpc3Rfc2Vt KTsNCisJCXByaW50ayhLRVJOX1dBUk5JTkcgIkF0dGVtcHQgdG8gcmVnaXN0 ZXIgZHVwbGljYXRlIg0KKwkJCQkiIFBBR0cgc3VwcG9ydCAobmFtZT0lcylc biIsIHBhZ2dfaG9va19uZXctPm5hbWUpOw0KKwkJcmV0dXJuIC1FQlVTWTsN CisJfQ0KKw0KKwkvKiBPa2F5LCB3ZSBjYW4gaW5zZXJ0IGludG8gdGhlIHBh Z2cgaG9vayBsaXN0ICovDQorCWxpc3RfYWRkX3RhaWwoJnBhZ2dfaG9va19u ZXctPmVudHJ5LCAmcGFnZ19ob29rX2xpc3QpOw0KKwl1cF93cml0ZSgmcGFn Z19ob29rX2xpc3Rfc2VtKTsNCisNCisJcHJpbnRrKEtFUk5fSU5GTyAiUmVn aXN0ZXJpbmcgUEFHRyBzdXBwb3J0IGZvciAobmFtZT0lcylcbiIsDQorCQkJ cGFnZ19ob29rX25ldy0+bmFtZSk7DQorDQorCXJldHVybiAwOwkJCQkJLyog c3VjY2VzcyAqLw0KKw0KK30NCisNCisNCisvKg0KKyAqIHVucmVnaXN0ZXJf cGFnZ19ob29rDQorICoNCisgKiBVc2VkIHRvIHVucmVnaXN0ZXIgcGFnZyBo b29rcyBhbmQgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgcGFnZ19ob29rX2xpc3Qu DQorICogT25jZSB0aGUgcGFnZyBob29rIGVudHJ5IGluIHRoZSBwYWdnX2hv b2tfbGlzdCBpcyBmb3VuZCwgYWxsIG9mIHRoZQ0KKyAqIHRhc2tzIGFyZSBz Y2FubmVkIGFuZCBkZXRhY2hlZCBmcm9tIGFueSBwYWdnIGNvbnRhaW5lcnMg ZGVmaW5lZCBieSB0aGUNCisgKiBwYWdnIGltcGxlbWVudGF0aW9uIG1vZHVs ZS4NCisgKi8NCitpbnQNCit1bnJlZ2lzdGVyX3BhZ2dfaG9vayhzdHJ1Y3Qg cGFnZ19ob29rICpwYWdnX2hvb2tfb2xkKQ0KK3sNCisJc3RydWN0IHBhZ2df aG9vayAqcGFnZ19ob29rOw0KKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7 DQorDQorDQorCS8qIENoZWNrIHRoZSB2YWxpZGl0eSBvZiB0aGUgYXJndW1l bnRzICovDQorCWlmICghcGFnZ19ob29rX29sZCkNCisJCXJldHVybiAtRUlO VkFMOwkJCS8qIGVycm9yICovDQorCWlmIChsaXN0X2VtcHR5KCZwYWdnX2hv b2tfb2xkLT5lbnRyeSkpDQorCQlyZXR1cm4gLUVJTlZBTDsJCQkvKiBlcnJv ciAqLw0KKwlpZiAocGFnZ19ob29rX29sZC0+bmFtZSA9PSBOVUxMKQ0KKwkJ cmV0dXJuIC1FSU5WQUw7CQkJLyogZXJyb3IgKi8NCisNCisJZG93bl93cml0 ZSgmcGFnZ19ob29rX2xpc3Rfc2VtKTsNCisNCisJcGFnZ19ob29rID0gZ2V0 X3BhZ2dfaG9vayhwYWdnX2hvb2tfb2xkLT5uYW1lKTsNCisJaWYgKHBhZ2df aG9vayAmJiBwYWdnX2hvb2sgPT0gcGFnZ19ob29rX29sZCkgew0KKwkJLyog DQorCQkgKiBTY2FuIHRocm91Z2ggcHJvY2Vzc2VzIG9uIHN5c3RlbSBhbmQg Y2hlY2sgZm9yICANCisJCSAqIHJlZmVyZW5jZXMgdG8gcGFnZyBjb250YWlu ZXJzIGZvciB0aGlzIHBhZ2cgaG9vay4NCisJCSAqIA0KKwkJICogVGhlIG1v ZHVsZSBjYW5ub3QgYmUgdW5sb2FkZWQgaWYgdGhlcmUgYXJlIHJlZmVyZW5j ZXMuDQorCQkgKi8NCisJCXJlYWRfbG9jaygmdGFza2xpc3RfbG9jayk7DQor CQlmb3JfZWFjaF9wcm9jZXNzKHRhc2spIHsNCisJCQlzdHJ1Y3QgcGFnZyAq cGFnZyA9IE5VTEw7DQorDQorCQkJcmVhZF9sb2NrX3BhZ2dfbGlzdCh0YXNr KTsNCisJCQlwYWdnID0gZ2V0X3BhZ2codGFzaywgcGFnZ19ob29rX29sZC0+ bmFtZSk7DQorCQkJLyogDQorCQkJICogV2Ugd29uJ3QgYmUgYWNjZXNzaW5n IHBhZ2cncyBtZW1vcnksIGp1c3QgbmVlZA0KKwkJCSAqIHRvIHNlZSBpZiBv bmUgZXhpc3RlZCAtIHNvIHdlIGNhbiByZWxlYXNlIHRoZSB0YXNrDQorCQkJ ICogbG9jayBub3cuDQorCQkJICovDQorCQkJcmVhZF91bmxvY2tfcGFnZ19s aXN0KHRhc2spOw0KKwkJCWlmIChwYWdnKSB7DQorCQkJCXJlYWRfdW5sb2Nr KCZ0YXNrbGlzdF9sb2NrKTsNCisJCQkJdXBfd3JpdGUoJnBhZ2dfaG9va19s aXN0X3NlbSk7DQorCQkJCXJldHVybiAtRUJVU1k7DQorCQkJfQ0KKwkJfQ0K KwkJbGlzdF9kZWxfaW5pdCgmcGFnZ19ob29rLT5lbnRyeSk7DQorCQlyZWFk X3VubG9jaygmdGFza2xpc3RfbG9jayk7DQorDQorCQl1cF93cml0ZSgmcGFn Z19ob29rX2xpc3Rfc2VtKTsNCisNCisJCXByaW50ayhLRVJOX0lORk8gIlVu cmVnaXN0ZXJpbmcgUEFHRyBzdXBwb3J0IGZvciINCisJCQkJIiAobmFtZT0l cylcbiIsIHBhZ2dfaG9va19vbGQtPm5hbWUpOw0KKw0KKwkJcmV0dXJuIDA7 CQkJLyogc3VjY2VzcyAqLw0KKwl9DQorDQorCXVwX3dyaXRlKCZwYWdnX2hv b2tfbGlzdF9zZW0pOw0KKw0KKwlwcmludGsoS0VSTl9XQVJOSU5HICJBdHRl bXB0IHRvIHVucmVnaXN0ZXIgUEFHRyBzdXBwb3J0IChuYW1lPSVzKSINCisJ CQkiIGZhaWxlZCAtIG5vdCBmb3VuZFxuIiwgcGFnZ19ob29rX29sZC0+bmFt ZSk7DQorCQ0KKwlyZXR1cm4gLUVJTlZBTDsJCQkJLyogZXJyb3IgKi8NCit9 DQorDQorDQorLyoNCisgKiBhdHRhY2hfcGFnZ19saXN0DQorICoNCisgKiBV c2VkIHRvIGF0dGFjaCBhIG5ldyB0YXNrIHRvIHRoZSBzYW1lIHBhZ2cgY29u dGFpbmVycyB0byB3aGljaCBpdCdzIHBhcmVudA0KKyAqIGlzIGF0dGFjaGVk Lg0KKyAqDQorICogVGhlICJmcm9tIiBhcmd1bWVudCBpcyB0aGUgcGFyZW50 IHRhc2suICBUaGUgInRvIiBhcmd1bWVudCBpcyB0aGUgY2hpbGQNCisgKiB0 YXNrLiANCisgKg0KKyAqLw0KK2ludA0KK2F0dGFjaF9wYWdnX2xpc3Qoc3Ry dWN0IHRhc2tfc3RydWN0ICp0b190YXNrLCBzdHJ1Y3QgdGFza19zdHJ1Y3Qg KmZyb21fdGFzaykNCit7DQorCXN0cnVjdCBsaXN0X2hlYWQgICAqZW50cnk7 DQorCWludCAgCQkgICByZXRjb2RlID0gMDsNCisNCisNCisNCisJLyogbG9j ayB0aGUgcGFyZW50cyBwYWdnX2xpc3Qgd2UgYXJlIGNvcHlpbmcgZnJvbSAq Lw0KKwlyZWFkX2xvY2tfcGFnZ19saXN0KGZyb21fdGFzayk7DQorDQorCWxp c3RfZm9yX2VhY2goZW50cnksICZmcm9tX3Rhc2stPnBhZ2dfbGlzdC5oZWFk KSB7DQorCQlzdHJ1Y3QgcGFnZyAqdG9fcGFnZyA9IE5VTEw7DQorCQlzdHJ1 Y3QgcGFnZyAqZnJvbV9wYWdnID0gbGlzdF9lbnRyeShlbnRyeSwgc3RydWN0 IHBhZ2csIA0KKwkJCQkJCQllbnRyeSk7DQorCQl0b19wYWdnID0gYWxsb2Nf cGFnZyh0b190YXNrLCBmcm9tX3BhZ2ctPmhvb2spOw0KKwkJaWYgKCF0b19w YWdnKSB7DQorCQkJcmV0Y29kZSA9IC1FTk9NRU07DQorCQkJZ290byBlcnJv cl9yZXR1cm47DQorCQl9DQorCQlyZXRjb2RlID0gYXR0YWNoX3BhZ2codG9f dGFzaywgdG9fcGFnZywgZnJvbV9wYWdnLT5kYXRhKTsNCisJCWlmIChyZXRj b2RlICE9IDApIHsNCisJCQkvKiBhdHRhY2ggc2hvdWxkIGlzc3VlIGVycm9y IG1lc3NhZ2UgKi8NCisJCQlnb3RvIGVycm9yX3JldHVybjsNCisJCX0NCisJ fQ0KKw0KKwlyZWFkX3VubG9ja19wYWdnX2xpc3QoZnJvbV90YXNrKTsNCisN CisJcmV0dXJuIDA7CQkJCQkvKiBzdWNjZXNzICovDQorDQorICBlcnJvcl9y ZXR1cm46DQorCS8qIA0KKwkgKiBDbGVhbiB1cCBhbGwgdGhlIHBhZ2cgYXR0 YWNobWVudHMgbWFkZSBvbiBiZWhhbGYgb2YgdGhlIG5ldw0KKwkgKiB0YXNr LiAgU2V0IG5ldyB0YXNrIHBhZ2cgcHRyIHRvIE5VTEwgZm9yIHJldHVybi4N CisJICovDQorCXJlYWRfdW5sb2NrX3BhZ2dfbGlzdChmcm9tX3Rhc2spOw0K KwlkZXRhY2hfcGFnZ19saXN0KHRvX3Rhc2spOw0KKwlyZXR1cm4gcmV0Y29k ZTsJCQkJLyogZmFpbHVyZSAqLw0KK30NCisNCisNCisvKg0KKyAqIGRldGFj aF9wYWdnX2xpc3QNCisgKg0KKyAqIFVzZWQgdG8gZGV0YWNoIGEgdGFzayBm cm9tIGFsbCBwYWdnIGNvbnRhaW5lcnMgdG8gd2hpY2ggaXQgaXMgYXR0YWNo ZWQuDQorICovDQoraW50DQorZGV0YWNoX3BhZ2dfbGlzdChzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnRhc2spDQorew0KKwlzdHJ1Y3QgbGlzdF9oZWFkICAgKmVu dHJ5Ow0KKwlpbnQgcmV0Y29kZSA9IDA7DQorCWludCByZXR0bXAgPSAwOw0K Kw0KKwkvKiBSZW1vdmUgcmVmLiB0byBwYWdncyBmcm9tIHRhc2sgaW1tZWRp YXRlbHkgKi8NCisJd3JpdGVfbG9ja19wYWdnX2xpc3QodGFzayk7DQorDQor CWlmIChsaXN0X2VtcHR5KCZ0YXNrLT5wYWdnX2xpc3QuaGVhZCkpIHsNCisJ CXdyaXRlX3VubG9ja19wYWdnX2xpc3QodGFzayk7DQorCQlyZXR1cm4gcmV0 Y29kZTsNCisJfSANCisNCisJbGlzdF9mb3JfZWFjaChlbnRyeSwgJnRhc2st PnBhZ2dfbGlzdC5oZWFkKSB7DQorCQlpbnQgcmV0dGVtcCA9IDA7DQorCQlz dHJ1Y3QgcGFnZyAqcGFnZyA9IGxpc3RfZW50cnkoZW50cnksIHN0cnVjdCBw YWdnLCBlbnRyeSk7DQorDQorCQllbnRyeSA9ICZ0YXNrLT5wYWdnX2xpc3Qu aGVhZDsNCisNCisJCXJldHRlbXAgPSBkZXRhY2hfcGFnZyh0YXNrLCBwYWdn KTsNCisJCWlmIChyZXR0bXApIHsNCisJCQkvKiBhbiBlcnJvciBtZXNzYWdl IHNob3VsZCBiZSBsb2dnZWQgaW4gZnJlZV9wYWdnICovDQorCQkJcmV0Y29k ZSA9IHJldHRtcDsNCisJCX0NCisJCWZyZWVfcGFnZyhwYWdnKTsNCisJfQ0K Kw0KKwl3cml0ZV91bmxvY2tfcGFnZ19saXN0KHRhc2spOw0KKw0KKwlyZXR1 cm4gcmV0Y29kZTsJLyogMCA9IHN1Y2Nlc3MsIGVsc2UgcmV0dXJuIGxhc3Qg Y29kZSBmb3IgZmFpbHVyZSAqLw0KK30NCisNCisNCisvKg0KKyAqIGV4ZWNf cGFnZ19saXN0DQorICoNCisgKiBVc2VkIHRvIHdoZW4gYSBwcm9jZXNzIHRo YXQgaXMgaW4gYSBwYWdnIGNvbnRhaW5lciBkb2VzIGFuIGV4ZWMuDQorICoN CisgKiBUaGUgImZyb20iIGFyZ3VtZW50IGlzIHRoZSB0YXNrLiAgVGhlICJu YW1lIiBhcmd1bWVudCBpcyB0aGUgbmFtZQ0KKyAqIG9mIHRoZSBwcm9jZXNz IGJlaW5nIGV4ZWMnZWQuDQorICoNCisgKi8NCitpbnQgZXhlY19wYWdnX2xp c3Qoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKSB7DQorCXN0cnVjdCBsaXN0 X2hlYWQgICAqZW50cnk7DQorDQorDQorDQorCS8qIGxvY2sgdGhlIHBhcmVu dHMgcGFnZ19saXN0IHdlIGFyZSBjb3B5aW5nIGZyb20gKi8NCisJcmVhZF9s b2NrX3BhZ2dfbGlzdCh0YXNrKTsNCisNCisJbGlzdF9mb3JfZWFjaChlbnRy eSwgJnRhc2stPnBhZ2dfbGlzdC5oZWFkKSB7DQorCQlzdHJ1Y3QgcGFnZyAq cGFnZyA9IGxpc3RfZW50cnkoZW50cnksIHN0cnVjdCBwYWdnLCANCisJCQkJ CQkJZW50cnkpOw0KKwkJZXhlY19wYWdnKHRhc2ssIHBhZ2cpOw0KKwl9DQor DQorCXJlYWRfdW5sb2NrX3BhZ2dfbGlzdCh0YXNrKTsNCisJcmV0dXJuIDA7 DQorfQ0KKw0KKw0KK0VYUE9SVF9TWU1CT0woZ2V0X3BhZ2cpOw0KK0VYUE9S VF9TWU1CT0woYWxsb2NfcGFnZyk7DQorRVhQT1JUX1NZTUJPTChmcmVlX3Bh Z2cpOw0KK0VYUE9SVF9TWU1CT0woYXR0YWNoX3BhZ2dfbGlzdCk7DQorRVhQ T1JUX1NZTUJPTChkZXRhY2hfcGFnZ19saXN0KTsNCitFWFBPUlRfU1lNQk9M KGV4ZWNfcGFnZ19saXN0KTsNCitFWFBPUlRfU1lNQk9MKHJlZ2lzdGVyX3Bh Z2dfaG9vayk7DQorRVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX3BhZ2dfaG9v ayk7DQorDQorI2VuZGlmIC8qIENPTkZJR19QQUdHICovDQo= ---2136806248-1191388539-1083017079=:591647-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/