From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesper Dangaard Brouer Subject: [PATCH] Fix make/compile error for iptables-1.4.0rc1 Date: Fri, 23 Nov 2007 17:16:52 +0100 Message-ID: <1195834612.3866.42.camel@localhost.localdomain> References: <1195245146.15945.50.camel@localhost.localdomain> <1195390182.15945.57.camel@localhost.localdomain> <1195395787.15945.77.camel@localhost.localdomain> <1195600242.1228.7.camel@localhost.localdomain> <4743E403.8090408@trash.net> <1195673456.1228.14.camel@localhost.localdomain> <47455A68.3030309@trash.net> <1195828201.3866.20.camel@localhost.localdomain> Reply-To: jdb@comx.dk Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-G74KisDnNjvKKh34e3Tr" Cc: yasuyuki@netfilter.org, Netfilter Developers To: Patrick McHardy Return-path: Received: from lanfw001a.cxnet.dk ([87.72.215.196]:52696 "EHLO lanfw001a.cxnet.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751989AbXKWQSf (ORCPT ); Fri, 23 Nov 2007 11:18:35 -0500 In-Reply-To: <1195828201.3866.20.camel@localhost.localdomain> Sender: netfilter-devel-owner@vger.kernel.org List-Id: netfilter-devel.vger.kernel.org --=-G74KisDnNjvKKh34e3Tr Content-Type: text/plain Content-Transfer-Encoding: 7bit On Fri, 2007-11-23 at 15:30 +0100, Jesper Dangaard Brouer wrote: > > Since you seem to be able to test it, would you care to send a > patch? :) > > Okay, I'll post a patch. It should be a quite simple task, of adding > include/linux/netfilter_ipv4/ip_tables.h and > include/linux/netfilter/x_tables.h from kernel source. I also need to add include/linux/netfilter_ipv6/ip6_tables.h I have attached the patch, which is also located at http://people.netfilter.org/hawk/patches/iptables-1.4.0rc1/iptables-1.4.0rc1__fix_compile__add_include_files.patch Commit text: ------------ Fixing a make/compile issue with iptables, release candidate 1.4.0rc1, which has existed since SVN changeset 6920. This patch adds ip_tables.h and ip6_tables.h, and updates x_tables.h, taken from Linus'es git tree. Changeset 6920 added the include file x_tables.h from kernel source, but didn't add ip_tables.h and ip6_tables.h. At some point (Tue Nov 14 19:48:48 2006, by Yasuyuki Kozakai) these kernel headers where changed, which actually removes certain depencencies from ip_tables.h and ip6_tables.h to x_tables.h. If compiling will fail, with old kernel headers (ip_tables.h and ip6_tables.h) available in systems include path, because they depend on certaine defines in x_tables.h with is missing in the version in SVN. Remember we now need to keep these include files in sync with kernel. -- Med venlig hilsen / Best regards Jesper Brouer ComX Networks A/S Linux Network developer Cand. Scient Datalog / MSc. Author of http://adsl-optimizer.dk LinkedIn: http://www.linkedin.com/in/brouer --=-G74KisDnNjvKKh34e3Tr Content-Disposition: attachment; filename=iptables-1.4.0rc1__fix_compile__add_include_files.patch Content-Type: text/x-patch; name=iptables-1.4.0rc1__fix_compile__add_include_files.patch; charset=us-ascii Content-Transfer-Encoding: base64 SW5kZXg6IGluY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2lwdjYvaXA2X3RhYmxlcy5oDQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQotLS0gaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni9pcDZfdGFibGVzLmgJKHJldmlz aW9uIDApDQorKysgaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfaXB2Ni9pcDZfdGFibGVzLmgJKHJl dmlzaW9uIDApDQpAQCAtMCwwICsxLDM1OCBAQA0KKy8qDQorICogMjUtSnVsLTE5OTggTWFqb3Ig Y2hhbmdlcyB0byBhbGxvdyBmb3IgaXAgY2hhaW4gdGFibGUNCisgKg0KKyAqIDMtSmFuLTIwMDAg TmFtZWQgdGFibGVzIHRvIGFsbG93IHBhY2tldCBzZWxlY3Rpb24gZm9yIGRpZmZlcmVudCB1c2Vz Lg0KKyAqLw0KKw0KKy8qDQorICogCUZvcm1hdCBvZiBhbiBJUDYgZmlyZXdhbGwgZGVzY3JpcHRv cg0KKyAqDQorICogCXNyYywgZHN0LCBzcmNfbWFzaywgZHN0X21hc2sgYXJlIGFsd2F5cyBzdG9y ZWQgaW4gbmV0d29yayBieXRlIG9yZGVyLg0KKyAqIAlmbGFncyBhcmUgc3RvcmVkIGluIGhvc3Qg Ynl0ZSBvcmRlciAob2YgY291cnNlKS4NCisgKiAJUG9ydCBudW1iZXJzIGFyZSBzdG9yZWQgaW4g SE9TVCBieXRlIG9yZGVyLg0KKyAqLw0KKw0KKyNpZm5kZWYgX0lQNl9UQUJMRVNfSA0KKyNkZWZp bmUgX0lQNl9UQUJMRVNfSA0KKw0KKyNpZmRlZiBfX0tFUk5FTF9fDQorI2luY2x1ZGUgPGxpbnV4 L2lmLmg+DQorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQorI2luY2x1ZGUgPGxpbnV4L2luNi5o Pg0KKyNpbmNsdWRlIDxsaW51eC9pcHY2Lmg+DQorI2luY2x1ZGUgPGxpbnV4L3NrYnVmZi5oPg0K KyNlbmRpZg0KKyNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPg0KKyNpbmNsdWRlIDxsaW51eC9u ZXRmaWx0ZXJfaXB2Ni5oPg0KKw0KKyNpbmNsdWRlIDxsaW51eC9uZXRmaWx0ZXIveF90YWJsZXMu aD4NCisNCisjZGVmaW5lIElQNlRfRlVOQ1RJT05fTUFYTkFNRUxFTiBYVF9GVU5DVElPTl9NQVhO QU1FTEVODQorI2RlZmluZSBJUDZUX1RBQkxFX01BWE5BTUVMRU4gWFRfVEFCTEVfTUFYTkFNRUxF Tg0KKw0KKyNkZWZpbmUgaXA2dF9tYXRjaCB4dF9tYXRjaA0KKyNkZWZpbmUgaXA2dF90YXJnZXQg eHRfdGFyZ2V0DQorI2RlZmluZSBpcDZ0X3RhYmxlIHh0X3RhYmxlDQorI2RlZmluZSBpcDZ0X2dl dF9yZXZpc2lvbiB4dF9nZXRfcmV2aXNpb24NCisNCisvKiBZZXMsIFZpcmdpbmlhLCB5b3UgaGF2 ZSB0byB6ZXJvIHRoZSBwYWRkaW5nLiAqLw0KK3N0cnVjdCBpcDZ0X2lwNiB7DQorCS8qIFNvdXJj ZSBhbmQgZGVzdGluYXRpb24gSVA2IGFkZHIgKi8NCisJc3RydWN0IGluNl9hZGRyIHNyYywgZHN0 OwkJDQorCS8qIE1hc2sgZm9yIHNyYyBhbmQgZGVzdCBJUDYgYWRkciAqLw0KKwlzdHJ1Y3QgaW42 X2FkZHIgc21zaywgZG1zazsNCisJY2hhciBpbmlmYWNlW0lGTkFNU0laXSwgb3V0aWZhY2VbSUZO QU1TSVpdOw0KKwl1bnNpZ25lZCBjaGFyIGluaWZhY2VfbWFza1tJRk5BTVNJWl0sIG91dGlmYWNl X21hc2tbSUZOQU1TSVpdOw0KKw0KKwkvKiBVcHBlciBwcm90b2NvbCBudW1iZXINCisJICogLSBU aGUgYWxsb3dlZCB2YWx1ZSBpcyAwIChhbnkpIG9yIHByb3RvY29sIG51bWJlciBvZiBsYXN0IHBh cnNhYmxlDQorCSAqICAgaGVhZGVyLCB3aGljaCBpcyA1MCAoRVNQKSwgNTkgKE5vIE5leHQgSGVh ZGVyKSwgMTM1IChNSCksIG9yDQorCSAqICAgdGhlIG5vbiBJUHY2IGV4dGVuc2lvbiBoZWFkZXJz Lg0KKwkgKiAtIFRoZSBwcm90b2NvbCBudW1iZXJzIG9mIElQdjYgZXh0ZW5zaW9uIGhlYWRlcnMg ZXhjZXB0IG9mIEVTUCBhbmQNCisJICogICBNSCBkbyBub3QgbWF0Y2ggYW55IHBhY2tldHMuDQor CSAqIC0gWW91IGFsc28gbmVlZCB0byBzZXQgSVA2VF9GTEFHU19QUk9UTyB0byAiZmxhZ3MiIHRv IGNoZWNrIHByb3RvY29sLg0KKwkgKi8NCisJdV9pbnQxNl90IHByb3RvOw0KKwkvKiBUT1MgdG8g bWF0Y2ggaWZmIGZsYWdzICYgSVA2VF9GX1RPUyAqLw0KKwl1X2ludDhfdCB0b3M7DQorDQorCS8q IEZsYWdzIHdvcmQgKi8NCisJdV9pbnQ4X3QgZmxhZ3M7DQorCS8qIEludmVyc2UgZmxhZ3MgKi8N CisJdV9pbnQ4X3QgaW52ZmxhZ3M7DQorfTsNCisNCisjZGVmaW5lIGlwNnRfZW50cnlfbWF0Y2gg eHRfZW50cnlfbWF0Y2gNCisjZGVmaW5lIGlwNnRfZW50cnlfdGFyZ2V0IHh0X2VudHJ5X3Rhcmdl dA0KKyNkZWZpbmUgaXA2dF9zdGFuZGFyZF90YXJnZXQgeHRfc3RhbmRhcmRfdGFyZ2V0DQorDQor I2RlZmluZSBpcDZ0X2NvdW50ZXJzCXh0X2NvdW50ZXJzDQorDQorLyogVmFsdWVzIGZvciAiZmxh ZyIgZmllbGQgaW4gc3RydWN0IGlwNnRfaXA2IChnZW5lcmFsIGlwNiBzdHJ1Y3R1cmUpLiAqLw0K KyNkZWZpbmUgSVA2VF9GX1BST1RPCQkweDAxCS8qIFNldCBpZiBydWxlIGNhcmVzIGFib3V0IHVw cGVyIA0KKwkJCQkJICAgcHJvdG9jb2xzICovDQorI2RlZmluZSBJUDZUX0ZfVE9TCQkweDAyCS8q IE1hdGNoIHRoZSBUT1MuICovDQorI2RlZmluZSBJUDZUX0ZfR09UTwkJMHgwNAkvKiBTZXQgaWYg anVtcCBpcyBhIGdvdG8gKi8NCisjZGVmaW5lIElQNlRfRl9NQVNLCQkweDA3CS8qIEFsbCBwb3Nz aWJsZSBmbGFnIGJpdHMgbWFzay4gKi8NCisNCisvKiBWYWx1ZXMgZm9yICJpbnYiIGZpZWxkIGlu IHN0cnVjdCBpcDZ0X2lwNi4gKi8NCisjZGVmaW5lIElQNlRfSU5WX1ZJQV9JTgkJMHgwMQkvKiBJ bnZlcnQgdGhlIHNlbnNlIG9mIElOIElGQUNFLiAqLw0KKyNkZWZpbmUgSVA2VF9JTlZfVklBX09V VAkJMHgwMgkvKiBJbnZlcnQgdGhlIHNlbnNlIG9mIE9VVCBJRkFDRSAqLw0KKyNkZWZpbmUgSVA2 VF9JTlZfVE9TCQkweDA0CS8qIEludmVydCB0aGUgc2Vuc2Ugb2YgVE9TLiAqLw0KKyNkZWZpbmUg SVA2VF9JTlZfU1JDSVAJCTB4MDgJLyogSW52ZXJ0IHRoZSBzZW5zZSBvZiBTUkMgSVAuICovDQor I2RlZmluZSBJUDZUX0lOVl9EU1RJUAkJMHgxMAkvKiBJbnZlcnQgdGhlIHNlbnNlIG9mIERTVCBP UC4gKi8NCisjZGVmaW5lIElQNlRfSU5WX0ZSQUcJCTB4MjAJLyogSW52ZXJ0IHRoZSBzZW5zZSBv ZiBGUkFHLiAqLw0KKyNkZWZpbmUgSVA2VF9JTlZfUFJPVE8JCVhUX0lOVl9QUk9UTw0KKyNkZWZp bmUgSVA2VF9JTlZfTUFTSwkJMHg3RgkvKiBBbGwgcG9zc2libGUgZmxhZyBiaXRzIG1hc2suICov DQorDQorLyogVGhpcyBzdHJ1Y3R1cmUgZGVmaW5lcyBlYWNoIG9mIHRoZSBmaXJld2FsbCBydWxl cy4gIENvbnNpc3RzIG9mIDMNCisgICBwYXJ0cyB3aGljaCBhcmUgMSkgZ2VuZXJhbCBJUCBoZWFk ZXIgc3R1ZmYgMikgbWF0Y2ggc3BlY2lmaWMNCisgICBzdHVmZiAzKSB0aGUgdGFyZ2V0IHRvIHBl cmZvcm0gaWYgdGhlIHJ1bGUgbWF0Y2hlcyAqLw0KK3N0cnVjdCBpcDZ0X2VudHJ5DQorew0KKwlz dHJ1Y3QgaXA2dF9pcDYgaXB2NjsNCisNCisJLyogTWFyayB3aXRoIGZpZWxkcyB0aGF0IHdlIGNh cmUgYWJvdXQuICovDQorCXVuc2lnbmVkIGludCBuZmNhY2hlOw0KKw0KKwkvKiBTaXplIG9mIGlw dF9lbnRyeSArIG1hdGNoZXMgKi8NCisJdV9pbnQxNl90IHRhcmdldF9vZmZzZXQ7DQorCS8qIFNp emUgb2YgaXB0X2VudHJ5ICsgbWF0Y2hlcyArIHRhcmdldCAqLw0KKwl1X2ludDE2X3QgbmV4dF9v ZmZzZXQ7DQorDQorCS8qIEJhY2sgcG9pbnRlciAqLw0KKwl1bnNpZ25lZCBpbnQgY29tZWZyb207 DQorDQorCS8qIFBhY2tldCBhbmQgYnl0ZSBjb3VudGVycy4gKi8NCisJc3RydWN0IHh0X2NvdW50 ZXJzIGNvdW50ZXJzOw0KKw0KKwkvKiBUaGUgbWF0Y2hlcyAoaWYgYW55KSwgdGhlbiB0aGUgdGFy Z2V0LiAqLw0KKwl1bnNpZ25lZCBjaGFyIGVsZW1zWzBdOw0KK307DQorDQorLyogU3RhbmRhcmQg ZW50cnkgKi8NCitzdHJ1Y3QgaXA2dF9zdGFuZGFyZA0KK3sNCisJc3RydWN0IGlwNnRfZW50cnkg ZW50cnk7DQorCXN0cnVjdCBpcDZ0X3N0YW5kYXJkX3RhcmdldCB0YXJnZXQ7DQorfTsNCisNCitz dHJ1Y3QgaXA2dF9lcnJvcl90YXJnZXQNCit7DQorCXN0cnVjdCBpcDZ0X2VudHJ5X3RhcmdldCB0 YXJnZXQ7DQorCWNoYXIgZXJyb3JuYW1lW0lQNlRfRlVOQ1RJT05fTUFYTkFNRUxFTl07DQorfTsN CisNCitzdHJ1Y3QgaXA2dF9lcnJvcg0KK3sNCisJc3RydWN0IGlwNnRfZW50cnkgZW50cnk7DQor CXN0cnVjdCBpcDZ0X2Vycm9yX3RhcmdldCB0YXJnZXQ7DQorfTsNCisNCisjZGVmaW5lIElQNlRf RU5UUllfSU5JVChfX3NpemUpCQkJCQkJICAgICAgIFwNCit7CQkJCQkJCQkJICAgICAgIFwNCisJ LnRhcmdldF9vZmZzZXQJPSBzaXplb2Yoc3RydWN0IGlwNnRfZW50cnkpLAkJCSAgICAgICBcDQor CS5uZXh0X29mZnNldAk9IChfX3NpemUpLAkJCQkJICAgICAgIFwNCit9DQorDQorI2RlZmluZSBJ UDZUX1NUQU5EQVJEX0lOSVQoX192ZXJkaWN0KQkJCQkJICAgICAgIFwNCit7CQkJCQkJCQkJICAg ICAgIFwNCisJLmVudHJ5CQk9IElQNlRfRU5UUllfSU5JVChzaXplb2Yoc3RydWN0IGlwNnRfc3Rh bmRhcmQpKSwgICAgICAgXA0KKwkudGFyZ2V0CQk9IFhUX1RBUkdFVF9JTklUKElQNlRfU1RBTkRB UkRfVEFSR0VULAkJICAgICAgIFwNCisJCQkJCSBzaXplb2Yoc3RydWN0IGlwNnRfc3RhbmRhcmRf dGFyZ2V0KSksIFwNCisJLnRhcmdldC52ZXJkaWN0CT0gLShfX3ZlcmRpY3QpIC0gMSwJCQkJICAg ICAgIFwNCit9DQorDQorI2RlZmluZSBJUDZUX0VSUk9SX0lOSVQJCQkJCQkJICAgICAgIFwNCit7 CQkJCQkJCQkJICAgICAgIFwNCisJLmVudHJ5CQk9IElQNlRfRU5UUllfSU5JVChzaXplb2Yoc3Ry dWN0IGlwNnRfZXJyb3IpKSwJICAgICAgIFwNCisJLnRhcmdldAkJPSBYVF9UQVJHRVRfSU5JVChJ UDZUX0VSUk9SX1RBUkdFVCwJCSAgICAgICBcDQorCQkJCQkgc2l6ZW9mKHN0cnVjdCBpcDZ0X2Vy cm9yX3RhcmdldCkpLCAgICBcDQorCS50YXJnZXQuZXJyb3JuYW1lID0gIkVSUk9SIiwJCQkJCSAg ICAgICBcDQorfQ0KKw0KKy8qDQorICogTmV3IElQIGZpcmV3YWxsIG9wdGlvbnMgZm9yIFtnc11l dHNvY2tvcHQgYXQgdGhlIFJBVyBJUCBsZXZlbC4NCisgKiBVbmxpa2UgQlNEIExpbnV4IGluaGVy aXRzIElQIG9wdGlvbnMgc28geW91IGRvbid0IGhhdmUgdG8gdXNlDQorICogYSByYXcgc29ja2V0 IGZvciB0aGlzLiBJbnN0ZWFkIHdlIGNoZWNrIHJpZ2h0cyBpbiB0aGUgY2FsbHMuDQorICoNCisg KiBBVFRFTlRJT046IGNoZWNrIGxpbnV4L2luNi5oIGJlZm9yZSBhZGRpbmcgbmV3IG51bWJlciBo ZXJlLg0KKyAqLw0KKyNkZWZpbmUgSVA2VF9CQVNFX0NUTAkJCTY0DQorDQorI2RlZmluZSBJUDZU X1NPX1NFVF9SRVBMQUNFCQkoSVA2VF9CQVNFX0NUTCkNCisjZGVmaW5lIElQNlRfU09fU0VUX0FE RF9DT1VOVEVSUwkoSVA2VF9CQVNFX0NUTCArIDEpDQorI2RlZmluZSBJUDZUX1NPX1NFVF9NQVgJ CQlJUDZUX1NPX1NFVF9BRERfQ09VTlRFUlMNCisNCisjZGVmaW5lIElQNlRfU09fR0VUX0lORk8J CShJUDZUX0JBU0VfQ1RMKQ0KKyNkZWZpbmUgSVA2VF9TT19HRVRfRU5UUklFUwkJKElQNlRfQkFT RV9DVEwgKyAxKQ0KKyNkZWZpbmUgSVA2VF9TT19HRVRfUkVWSVNJT05fTUFUQ0gJKElQNlRfQkFT RV9DVEwgKyA0KQ0KKyNkZWZpbmUgSVA2VF9TT19HRVRfUkVWSVNJT05fVEFSR0VUCShJUDZUX0JB U0VfQ1RMICsgNSkNCisjZGVmaW5lIElQNlRfU09fR0VUX01BWAkJCUlQNlRfU09fR0VUX1JFVklT SU9OX1RBUkdFVA0KKw0KKy8qIENPTlRJTlVFIHZlcmRpY3QgZm9yIHRhcmdldHMgKi8NCisjZGVm aW5lIElQNlRfQ09OVElOVUUgWFRfQ09OVElOVUUNCisNCisvKiBGb3Igc3RhbmRhcmQgdGFyZ2V0 ICovDQorI2RlZmluZSBJUDZUX1JFVFVSTiBYVF9SRVRVUk4NCisNCisvKiBUQ1AvVURQIG1hdGNo aW5nIHN0dWZmICovDQorI2luY2x1ZGUgPGxpbnV4L25ldGZpbHRlci94dF90Y3B1ZHAuaD4NCisN CisjZGVmaW5lIGlwNnRfdGNwIHh0X3RjcA0KKyNkZWZpbmUgaXA2dF91ZHAgeHRfdWRwDQorDQor LyogVmFsdWVzIGZvciAiaW52IiBmaWVsZCBpbiBzdHJ1Y3QgaXB0X3RjcC4gKi8NCisjZGVmaW5l IElQNlRfVENQX0lOVl9TUkNQVAlYVF9UQ1BfSU5WX1NSQ1BUDQorI2RlZmluZSBJUDZUX1RDUF9J TlZfRFNUUFQJWFRfVENQX0lOVl9EU1RQVA0KKyNkZWZpbmUgSVA2VF9UQ1BfSU5WX0ZMQUdTCVhU X1RDUF9JTlZfRkxBR1MNCisjZGVmaW5lIElQNlRfVENQX0lOVl9PUFRJT04JWFRfVENQX0lOVl9P UFRJT04NCisjZGVmaW5lIElQNlRfVENQX0lOVl9NQVNLCVhUX1RDUF9JTlZfTUFTSw0KKw0KKy8q IFZhbHVlcyBmb3IgImludmZsYWdzIiBmaWVsZCBpbiBzdHJ1Y3QgaXB0X3VkcC4gKi8NCisjZGVm aW5lIElQNlRfVURQX0lOVl9TUkNQVAlYVF9VRFBfSU5WX1NSQ1BUDQorI2RlZmluZSBJUDZUX1VE UF9JTlZfRFNUUFQJWFRfVURQX0lOVl9EU1RQVA0KKyNkZWZpbmUgSVA2VF9VRFBfSU5WX01BU0sJ WFRfVURQX0lOVl9NQVNLDQorDQorLyogSUNNUCBtYXRjaGluZyBzdHVmZiAqLw0KK3N0cnVjdCBp cDZ0X2ljbXANCit7DQorCXVfaW50OF90IHR5cGU7CQkJCS8qIHR5cGUgdG8gbWF0Y2ggKi8NCisJ dV9pbnQ4X3QgY29kZVsyXTsJCQkvKiByYW5nZSBvZiBjb2RlICovDQorCXVfaW50OF90IGludmZs YWdzOwkJCS8qIEludmVyc2UgZmxhZ3MgKi8NCit9Ow0KKw0KKy8qIFZhbHVlcyBmb3IgImludiIg ZmllbGQgZm9yIHN0cnVjdCBpcHRfaWNtcC4gKi8NCisjZGVmaW5lIElQNlRfSUNNUF9JTlYJMHgw MQkvKiBJbnZlcnQgdGhlIHNlbnNlIG9mIHR5cGUvY29kZSB0ZXN0ICovDQorDQorLyogVGhlIGFy Z3VtZW50IHRvIElQNlRfU09fR0VUX0lORk8gKi8NCitzdHJ1Y3QgaXA2dF9nZXRpbmZvDQorew0K KwkvKiBXaGljaCB0YWJsZTogY2FsbGVyIGZpbGxzIHRoaXMgaW4uICovDQorCWNoYXIgbmFtZVtJ UDZUX1RBQkxFX01BWE5BTUVMRU5dOw0KKw0KKwkvKiBLZXJuZWwgZmlsbHMgdGhlc2UgaW4uICov DQorCS8qIFdoaWNoIGhvb2sgZW50cnkgcG9pbnRzIGFyZSB2YWxpZDogYml0bWFzayAqLw0KKwl1 bnNpZ25lZCBpbnQgdmFsaWRfaG9va3M7DQorDQorCS8qIEhvb2sgZW50cnkgcG9pbnRzOiBvbmUg cGVyIG5ldGZpbHRlciBob29rLiAqLw0KKwl1bnNpZ25lZCBpbnQgaG9va19lbnRyeVtORl9JUDZf TlVNSE9PS1NdOw0KKw0KKwkvKiBVbmRlcmZsb3cgcG9pbnRzLiAqLw0KKwl1bnNpZ25lZCBpbnQg dW5kZXJmbG93W05GX0lQNl9OVU1IT09LU107DQorDQorCS8qIE51bWJlciBvZiBlbnRyaWVzICov DQorCXVuc2lnbmVkIGludCBudW1fZW50cmllczsNCisNCisJLyogU2l6ZSBvZiBlbnRyaWVzLiAq Lw0KKwl1bnNpZ25lZCBpbnQgc2l6ZTsNCit9Ow0KKw0KKy8qIFRoZSBhcmd1bWVudCB0byBJUDZU X1NPX1NFVF9SRVBMQUNFLiAqLw0KK3N0cnVjdCBpcDZ0X3JlcGxhY2UNCit7DQorCS8qIFdoaWNo IHRhYmxlLiAqLw0KKwljaGFyIG5hbWVbSVA2VF9UQUJMRV9NQVhOQU1FTEVOXTsNCisNCisJLyog V2hpY2ggaG9vayBlbnRyeSBwb2ludHMgYXJlIHZhbGlkOiBiaXRtYXNrLiAgWW91IGNhbid0DQor ICAgICAgICAgICBjaGFuZ2UgdGhpcy4gKi8NCisJdW5zaWduZWQgaW50IHZhbGlkX2hvb2tzOw0K Kw0KKwkvKiBOdW1iZXIgb2YgZW50cmllcyAqLw0KKwl1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7 DQorDQorCS8qIFRvdGFsIHNpemUgb2YgbmV3IGVudHJpZXMgKi8NCisJdW5zaWduZWQgaW50IHNp emU7DQorDQorCS8qIEhvb2sgZW50cnkgcG9pbnRzLiAqLw0KKwl1bnNpZ25lZCBpbnQgaG9va19l bnRyeVtORl9JUDZfTlVNSE9PS1NdOw0KKw0KKwkvKiBVbmRlcmZsb3cgcG9pbnRzLiAqLw0KKwl1 bnNpZ25lZCBpbnQgdW5kZXJmbG93W05GX0lQNl9OVU1IT09LU107DQorDQorCS8qIEluZm9ybWF0 aW9uIGFib3V0IG9sZCBlbnRyaWVzOiAqLw0KKwkvKiBOdW1iZXIgb2YgY291bnRlcnMgKG11c3Qg YmUgZXF1YWwgdG8gY3VycmVudCBudW1iZXIgb2YgZW50cmllcykuICovDQorCXVuc2lnbmVkIGlu dCBudW1fY291bnRlcnM7DQorCS8qIFRoZSBvbGQgZW50cmllcycgY291bnRlcnMuICovDQorCXN0 cnVjdCB4dF9jb3VudGVycyBfX3VzZXIgKmNvdW50ZXJzOw0KKw0KKwkvKiBUaGUgZW50cmllcyAo aGFuZyBvZmYgZW5kOiBub3QgcmVhbGx5IGFuIGFycmF5KS4gKi8NCisJc3RydWN0IGlwNnRfZW50 cnkgZW50cmllc1swXTsNCit9Ow0KKw0KKy8qIFRoZSBhcmd1bWVudCB0byBJUDZUX1NPX0FERF9D T1VOVEVSUy4gKi8NCisjZGVmaW5lIGlwNnRfY291bnRlcnNfaW5mbyB4dF9jb3VudGVyc19pbmZv DQorDQorLyogVGhlIGFyZ3VtZW50IHRvIElQNlRfU09fR0VUX0VOVFJJRVMuICovDQorc3RydWN0 IGlwNnRfZ2V0X2VudHJpZXMNCit7DQorCS8qIFdoaWNoIHRhYmxlOiB1c2VyIGZpbGxzIHRoaXMg aW4uICovDQorCWNoYXIgbmFtZVtJUDZUX1RBQkxFX01BWE5BTUVMRU5dOw0KKw0KKwkvKiBVc2Vy IGZpbGxzIHRoaXMgaW46IHRvdGFsIGVudHJ5IHNpemUuICovDQorCXVuc2lnbmVkIGludCBzaXpl Ow0KKw0KKwkvKiBUaGUgZW50cmllcy4gKi8NCisJc3RydWN0IGlwNnRfZW50cnkgZW50cnl0YWJs ZVswXTsNCit9Ow0KKw0KKy8qIFN0YW5kYXJkIHJldHVybiB2ZXJkaWN0LCBvciBkbyBqdW1wLiAq Lw0KKyNkZWZpbmUgSVA2VF9TVEFOREFSRF9UQVJHRVQgWFRfU1RBTkRBUkRfVEFSR0VUDQorLyog RXJyb3IgdmVyZGljdC4gKi8NCisjZGVmaW5lIElQNlRfRVJST1JfVEFSR0VUIFhUX0VSUk9SX1RB UkdFVA0KKw0KKy8qIEhlbHBlciBmdW5jdGlvbnMgKi8NCitzdGF0aWMgX19pbmxpbmVfXyBzdHJ1 Y3QgaXA2dF9lbnRyeV90YXJnZXQgKg0KK2lwNnRfZ2V0X3RhcmdldChzdHJ1Y3QgaXA2dF9lbnRy eSAqZSkNCit7DQorCXJldHVybiAodm9pZCAqKWUgKyBlLT50YXJnZXRfb2Zmc2V0Ow0KK30NCisN CisvKiBmbiByZXR1cm5zIDAgdG8gY29udGludWUgaXRlcmF0aW9uICovDQorI2RlZmluZSBJUDZU X01BVENIX0lURVJBVEUoZSwgZm4sIGFyZ3MuLi4pCVwNCisoewkJCQkJCVwNCisJdW5zaWduZWQg aW50IF9faTsJCQlcDQorCWludCBfX3JldCA9IDA7CQkJCVwNCisJc3RydWN0IGlwNnRfZW50cnlf bWF0Y2ggKl9fbTsJCVwNCisJCQkJCQlcDQorCWZvciAoX19pID0gc2l6ZW9mKHN0cnVjdCBpcDZ0 X2VudHJ5KTsJXA0KKwkgICAgIF9faSA8IChlKS0+dGFyZ2V0X29mZnNldDsJCVwNCisJICAgICBf X2kgKz0gX19tLT51Lm1hdGNoX3NpemUpIHsJXA0KKwkJX19tID0gKHZvaWQgKikoZSkgKyBfX2k7 CVwNCisJCQkJCQlcDQorCQlfX3JldCA9IGZuKF9fbSAsICMjIGFyZ3MpOwlcDQorCQlpZiAoX19y ZXQgIT0gMCkJCQlcDQorCQkJYnJlYWs7CQkJXA0KKwl9CQkJCQlcDQorCV9fcmV0OwkJCQkJXA0K K30pDQorDQorLyogZm4gcmV0dXJucyAwIHRvIGNvbnRpbnVlIGl0ZXJhdGlvbiAqLw0KKyNkZWZp bmUgSVA2VF9FTlRSWV9JVEVSQVRFKGVudHJpZXMsIHNpemUsIGZuLCBhcmdzLi4uKQkJXA0KKyh7 CQkJCQkJCQlcDQorCXVuc2lnbmVkIGludCBfX2k7CQkJCQlcDQorCWludCBfX3JldCA9IDA7CQkJ CQkJXA0KKwlzdHJ1Y3QgaXA2dF9lbnRyeSAqX19lOwkJCQkJXA0KKwkJCQkJCQkJXA0KKwlmb3Ig KF9faSA9IDA7IF9faSA8IChzaXplKTsgX19pICs9IF9fZS0+bmV4dF9vZmZzZXQpIHsJXA0KKwkJ X19lID0gKHZvaWQgKikoZW50cmllcykgKyBfX2k7CQkJXA0KKwkJCQkJCQkJXA0KKwkJX19yZXQg PSBmbihfX2UgLCAjIyBhcmdzKTsJCQlcDQorCQlpZiAoX19yZXQgIT0gMCkJCQkJCVwNCisJCQli cmVhazsJCQkJCVwNCisJfQkJCQkJCQlcDQorCV9fcmV0OwkJCQkJCQlcDQorfSkNCisNCisvKg0K KyAqCU1haW4gZmlyZXdhbGwgY2hhaW5zIGRlZmluaXRpb25zIGFuZCBnbG9iYWwgdmFyJ3MgZGVm aW5pdGlvbnMuDQorICovDQorDQorI2lmZGVmIF9fS0VSTkVMX18NCisNCisjaW5jbHVkZSA8bGlu dXgvaW5pdC5oPg0KK2V4dGVybiB2b2lkIGlwNnRfaW5pdCh2b2lkKSBfX2luaXQ7DQorDQorZXh0 ZXJuIGludCBpcDZ0X3JlZ2lzdGVyX3RhYmxlKHN0cnVjdCB4dF90YWJsZSAqdGFibGUsDQorCQkJ ICAgICAgIGNvbnN0IHN0cnVjdCBpcDZ0X3JlcGxhY2UgKnJlcGwpOw0KK2V4dGVybiB2b2lkIGlw NnRfdW5yZWdpc3Rlcl90YWJsZShzdHJ1Y3QgeHRfdGFibGUgKnRhYmxlKTsNCitleHRlcm4gdW5z aWduZWQgaW50IGlwNnRfZG9fdGFibGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwNCisJCQkJICB1bnNp Z25lZCBpbnQgaG9vaywNCisJCQkJICBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqaW4sDQorCQkJ CSAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKm91dCwNCisJCQkJICBzdHJ1Y3QgeHRfdGFibGUg KnRhYmxlKTsNCisNCisvKiBDaGVjayBmb3IgYW4gZXh0ZW5zaW9uICovDQorZXh0ZXJuIGludCBp cDZ0X2V4dF9oZHIodTggbmV4dGhkcik7DQorLyogZmluZCBzcGVjaWZpZWQgaGVhZGVyIGFuZCBn ZXQgb2Zmc2V0IHRvIGl0ICovDQorZXh0ZXJuIGludCBpcHY2X2ZpbmRfaGRyKGNvbnN0IHN0cnVj dCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCAqb2Zmc2V0LA0KKwkJCSBpbnQgdGFyZ2V0LCB1 bnNpZ25lZCBzaG9ydCAqZnJhZ29mZik7DQorDQorZXh0ZXJuIGludCBpcDZfbWFza2VkX2FkZHJj bXAoY29uc3Qgc3RydWN0IGluNl9hZGRyICphZGRyMSwNCisJCQkgICAgICBjb25zdCBzdHJ1Y3Qg aW42X2FkZHIgKm1hc2ssDQorCQkJICAgICAgY29uc3Qgc3RydWN0IGluNl9hZGRyICphZGRyMik7 DQorDQorI2RlZmluZSBJUDZUX0FMSUdOKHMpICgoKHMpICsgKF9fYWxpZ25vZl9fKHN0cnVjdCBp cDZ0X2VudHJ5KS0xKSkgJiB+KF9fYWxpZ25vZl9fKHN0cnVjdCBpcDZ0X2VudHJ5KS0xKSkNCisN CisjZW5kaWYgLypfX0tFUk5FTF9fKi8NCisjZW5kaWYgLyogX0lQNl9UQUJMRVNfSCAqLw0KSW5k ZXg6IGluY2x1ZGUvbGludXgvbmV0ZmlsdGVyL3hfdGFibGVzLmgNCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBp bmNsdWRlL2xpbnV4L25ldGZpbHRlci94X3RhYmxlcy5oCShyZXZpc2lvbiA3MDkwKQ0KKysrIGlu Y2x1ZGUvbGludXgvbmV0ZmlsdGVyL3hfdGFibGVzLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xLDgg KzEsNiBAQA0KICNpZm5kZWYgX1hfVEFCTEVTX0gNCiAjZGVmaW5lIF9YX1RBQkxFU19IDQogDQot I2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KLQ0KICNkZWZpbmUgWFRfRlVOQ1RJT05fTUFYTkFNRUxF TiAzMA0KICNkZWZpbmUgWFRfVEFCTEVfTUFYTkFNRUxFTiAzMg0KIA0KQEAgLTU2LDYgKzU0LDE0 IEBADQogCXVuc2lnbmVkIGNoYXIgZGF0YVswXTsNCiB9Ow0KIA0KKyNkZWZpbmUgWFRfVEFSR0VU X0lOSVQoX19uYW1lLCBfX3NpemUpCQkJCQkgICAgICAgXA0KK3sJCQkJCQkJCQkgICAgICAgXA0K KwkudGFyZ2V0LnUudXNlciA9IHsJCQkJCQkgICAgICAgXA0KKwkJLnRhcmdldF9zaXplCT0gWFRf QUxJR04oX19zaXplKSwJCQkgICAgICAgXA0KKwkJLm5hbWUJCT0gX19uYW1lLAkJCQkgICAgICAg XA0KKwl9LAkJCQkJCQkJICAgICAgIFwNCit9DQorDQogc3RydWN0IHh0X3N0YW5kYXJkX3Rhcmdl dA0KIHsNCiAJc3RydWN0IHh0X2VudHJ5X3RhcmdldCB0YXJnZXQ7DQpAQCAtMTIwLDQgKzEyNiwy NzEgQEANCiANCiAjZGVmaW5lIFhUX0lOVl9QUk9UTwkJMHg0MAkvKiBJbnZlcnQgdGhlIHNlbnNl IG9mIFBST1RPLiAqLw0KIA0KKyNpZmRlZiBfX0tFUk5FTF9fDQorDQorI2luY2x1ZGUgPGxpbnV4 L25ldGRldmljZS5oPg0KKw0KK3N0cnVjdCB4dF9tYXRjaA0KK3sNCisJc3RydWN0IGxpc3RfaGVh ZCBsaXN0Ow0KKw0KKwljb25zdCBjaGFyIG5hbWVbWFRfRlVOQ1RJT05fTUFYTkFNRUxFTi0xXTsN CisNCisJLyogUmV0dXJuIHRydWUgb3IgZmFsc2U6IHJldHVybiBGQUxTRSBhbmQgc2V0ICpob3Rk cm9wID0gMSB0bw0KKyAgICAgICAgICAgZm9yY2UgaW1tZWRpYXRlIHBhY2tldCBkcm9wLiAqLw0K KwkvKiBBcmd1bWVudHMgY2hhbmdlZCBzaW5jZSAyLjYuOSwgYXMgdGhpcyBtdXN0IG5vdyBoYW5k bGUNCisJICAgbm9uLWxpbmVhciBza2IsIHVzaW5nIHNrYl9oZWFkZXJfcG9pbnRlciBhbmQNCisJ ICAgc2tiX2lwX21ha2Vfd3JpdGFibGUuICovDQorCWJvb2wgKCptYXRjaCkoY29uc3Qgc3RydWN0 IHNrX2J1ZmYgKnNrYiwNCisJCSAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICppbiwNCisJ CSAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpvdXQsDQorCQkgICAgICBjb25zdCBzdHJ1 Y3QgeHRfbWF0Y2ggKm1hdGNoLA0KKwkJICAgICAgY29uc3Qgdm9pZCAqbWF0Y2hpbmZvLA0KKwkJ ICAgICAgaW50IG9mZnNldCwNCisJCSAgICAgIHVuc2lnbmVkIGludCBwcm90b2ZmLA0KKwkJICAg ICAgYm9vbCAqaG90ZHJvcCk7DQorDQorCS8qIENhbGxlZCB3aGVuIHVzZXIgdHJpZXMgdG8gaW5z ZXJ0IGFuIGVudHJ5IG9mIHRoaXMgdHlwZS4gKi8NCisJLyogU2hvdWxkIHJldHVybiB0cnVlIG9y IGZhbHNlLiAqLw0KKwlib29sICgqY2hlY2tlbnRyeSkoY29uc3QgY2hhciAqdGFibGVuYW1lLA0K KwkJCSAgIGNvbnN0IHZvaWQgKmlwLA0KKwkJCSAgIGNvbnN0IHN0cnVjdCB4dF9tYXRjaCAqbWF0 Y2gsDQorCQkJICAgdm9pZCAqbWF0Y2hpbmZvLA0KKwkJCSAgIHVuc2lnbmVkIGludCBob29rX21h c2spOw0KKw0KKwkvKiBDYWxsZWQgd2hlbiBlbnRyeSBvZiB0aGlzIHR5cGUgZGVsZXRlZC4gKi8N CisJdm9pZCAoKmRlc3Ryb3kpKGNvbnN0IHN0cnVjdCB4dF9tYXRjaCAqbWF0Y2gsIHZvaWQgKm1h dGNoaW5mbyk7DQorDQorCS8qIENhbGxlZCB3aGVuIHVzZXJzcGFjZSBhbGlnbiBkaWZmZXJzIGZy b20ga2VybmVsIHNwYWNlIG9uZSAqLw0KKwl2b2lkICgqY29tcGF0X2Zyb21fdXNlcikodm9pZCAq ZHN0LCB2b2lkICpzcmMpOw0KKwlpbnQgKCpjb21wYXRfdG9fdXNlcikodm9pZCBfX3VzZXIgKmRz dCwgdm9pZCAqc3JjKTsNCisNCisJLyogU2V0IHRoaXMgdG8gVEhJU19NT0RVTEUgaWYgeW91IGFy ZSBhIG1vZHVsZSwgb3RoZXJ3aXNlIE5VTEwgKi8NCisJc3RydWN0IG1vZHVsZSAqbWU7DQorDQor CS8qIEZyZWUgdG8gdXNlIGJ5IGVhY2ggbWF0Y2ggKi8NCisJdW5zaWduZWQgbG9uZyBkYXRhOw0K Kw0KKwljaGFyICp0YWJsZTsNCisJdW5zaWduZWQgaW50IG1hdGNoc2l6ZTsNCisJdW5zaWduZWQg aW50IGNvbXBhdHNpemU7DQorCXVuc2lnbmVkIGludCBob29rczsNCisJdW5zaWduZWQgc2hvcnQg cHJvdG87DQorDQorCXVuc2lnbmVkIHNob3J0IGZhbWlseTsNCisJdV9pbnQ4X3QgcmV2aXNpb247 DQorfTsNCisNCisvKiBSZWdpc3RyYXRpb24gaG9va3MgZm9yIHRhcmdldHMuICovDQorc3RydWN0 IHh0X3RhcmdldA0KK3sNCisJc3RydWN0IGxpc3RfaGVhZCBsaXN0Ow0KKw0KKwljb25zdCBjaGFy IG5hbWVbWFRfRlVOQ1RJT05fTUFYTkFNRUxFTi0xXTsNCisNCisJLyogUmV0dXJucyB2ZXJkaWN0 LiBBcmd1bWVudCBvcmRlciBjaGFuZ2VkIHNpbmNlIDIuNi45LCBhcyB0aGlzDQorCSAgIG11c3Qg bm93IGhhbmRsZSBub24tbGluZWFyIHNrYnMsIHVzaW5nIHNrYl9jb3B5X2JpdHMgYW5kDQorCSAg IHNrYl9pcF9tYWtlX3dyaXRhYmxlLiAqLw0KKwl1bnNpZ25lZCBpbnQgKCp0YXJnZXQpKHN0cnVj dCBza19idWZmICpza2IsDQorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICppbiwN CisJCQkgICAgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKm91dCwNCisJCQkgICAgICAgdW5z aWduZWQgaW50IGhvb2tudW0sDQorCQkJICAgICAgIGNvbnN0IHN0cnVjdCB4dF90YXJnZXQgKnRh cmdldCwNCisJCQkgICAgICAgY29uc3Qgdm9pZCAqdGFyZ2luZm8pOw0KKw0KKwkvKiBDYWxsZWQg d2hlbiB1c2VyIHRyaWVzIHRvIGluc2VydCBhbiBlbnRyeSBvZiB0aGlzIHR5cGU6DQorICAgICAg ICAgICBob29rX21hc2sgaXMgYSBiaXRtYXNrIG9mIGhvb2tzIGZyb20gd2hpY2ggaXQgY2FuIGJl DQorICAgICAgICAgICBjYWxsZWQuICovDQorCS8qIFNob3VsZCByZXR1cm4gdHJ1ZSBvciBmYWxz ZS4gKi8NCisJYm9vbCAoKmNoZWNrZW50cnkpKGNvbnN0IGNoYXIgKnRhYmxlbmFtZSwNCisJCQkg ICBjb25zdCB2b2lkICplbnRyeSwNCisJCQkgICBjb25zdCBzdHJ1Y3QgeHRfdGFyZ2V0ICp0YXJn ZXQsDQorCQkJICAgdm9pZCAqdGFyZ2luZm8sDQorCQkJICAgdW5zaWduZWQgaW50IGhvb2tfbWFz ayk7DQorDQorCS8qIENhbGxlZCB3aGVuIGVudHJ5IG9mIHRoaXMgdHlwZSBkZWxldGVkLiAqLw0K Kwl2b2lkICgqZGVzdHJveSkoY29uc3Qgc3RydWN0IHh0X3RhcmdldCAqdGFyZ2V0LCB2b2lkICp0 YXJnaW5mbyk7DQorDQorCS8qIENhbGxlZCB3aGVuIHVzZXJzcGFjZSBhbGlnbiBkaWZmZXJzIGZy b20ga2VybmVsIHNwYWNlIG9uZSAqLw0KKwl2b2lkICgqY29tcGF0X2Zyb21fdXNlcikodm9pZCAq ZHN0LCB2b2lkICpzcmMpOw0KKwlpbnQgKCpjb21wYXRfdG9fdXNlcikodm9pZCBfX3VzZXIgKmRz dCwgdm9pZCAqc3JjKTsNCisNCisJLyogU2V0IHRoaXMgdG8gVEhJU19NT0RVTEUgaWYgeW91IGFy ZSBhIG1vZHVsZSwgb3RoZXJ3aXNlIE5VTEwgKi8NCisJc3RydWN0IG1vZHVsZSAqbWU7DQorDQor CWNoYXIgKnRhYmxlOw0KKwl1bnNpZ25lZCBpbnQgdGFyZ2V0c2l6ZTsNCisJdW5zaWduZWQgaW50 IGNvbXBhdHNpemU7DQorCXVuc2lnbmVkIGludCBob29rczsNCisJdW5zaWduZWQgc2hvcnQgcHJv dG87DQorDQorCXVuc2lnbmVkIHNob3J0IGZhbWlseTsNCisJdV9pbnQ4X3QgcmV2aXNpb247DQor fTsNCisNCisvKiBGdXJuaXR1cmUgc2hvcHBpbmcuLi4gKi8NCitzdHJ1Y3QgeHRfdGFibGUNCit7 DQorCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsNCisNCisJLyogQSB1bmlxdWUgbmFtZS4uLiAqLw0K KwljaGFyIG5hbWVbWFRfVEFCTEVfTUFYTkFNRUxFTl07DQorDQorCS8qIFdoYXQgaG9va3MgeW91 IHdpbGwgZW50ZXIgb24gKi8NCisJdW5zaWduZWQgaW50IHZhbGlkX2hvb2tzOw0KKw0KKwkvKiBM b2NrIGZvciB0aGUgY3VydGFpbiAqLw0KKwlyd2xvY2tfdCBsb2NrOw0KKw0KKwkvKiBNYW4gYmVo aW5kIHRoZSBjdXJ0YWluLi4uICovDQorCS8vc3RydWN0IGlwNnRfdGFibGVfaW5mbyAqcHJpdmF0 ZTsNCisJdm9pZCAqcHJpdmF0ZTsNCisNCisJLyogU2V0IHRoaXMgdG8gVEhJU19NT0RVTEUgaWYg eW91IGFyZSBhIG1vZHVsZSwgb3RoZXJ3aXNlIE5VTEwgKi8NCisJc3RydWN0IG1vZHVsZSAqbWU7 DQorDQorCWludCBhZjsJCS8qIGFkZHJlc3MvcHJvdG9jb2wgZmFtaWx5ICovDQorfTsNCisNCisj aW5jbHVkZSA8bGludXgvbmV0ZmlsdGVyX2lwdjQuaD4NCisNCisvKiBUaGUgdGFibGUgaXRzZWxm ICovDQorc3RydWN0IHh0X3RhYmxlX2luZm8NCit7DQorCS8qIFNpemUgcGVyIHRhYmxlICovDQor CXVuc2lnbmVkIGludCBzaXplOw0KKwkvKiBOdW1iZXIgb2YgZW50cmllczogRklYTUUuIC0tUlIg Ki8NCisJdW5zaWduZWQgaW50IG51bWJlcjsNCisJLyogSW5pdGlhbCBudW1iZXIgb2YgZW50cmll cy4gTmVlZGVkIGZvciBtb2R1bGUgdXNhZ2UgY291bnQgKi8NCisJdW5zaWduZWQgaW50IGluaXRp YWxfZW50cmllczsNCisNCisJLyogRW50cnkgcG9pbnRzIGFuZCB1bmRlcmZsb3dzICovDQorCXVu c2lnbmVkIGludCBob29rX2VudHJ5W05GX0lQX05VTUhPT0tTXTsNCisJdW5zaWduZWQgaW50IHVu ZGVyZmxvd1tORl9JUF9OVU1IT09LU107DQorDQorCS8qIGlwdF9lbnRyeSB0YWJsZXM6IG9uZSBw ZXIgQ1BVICovDQorCWNoYXIgKmVudHJpZXNbTlJfQ1BVU107DQorfTsNCisNCitleHRlcm4gaW50 IHh0X3JlZ2lzdGVyX3RhcmdldChzdHJ1Y3QgeHRfdGFyZ2V0ICp0YXJnZXQpOw0KK2V4dGVybiB2 b2lkIHh0X3VucmVnaXN0ZXJfdGFyZ2V0KHN0cnVjdCB4dF90YXJnZXQgKnRhcmdldCk7DQorZXh0 ZXJuIGludCB4dF9yZWdpc3Rlcl90YXJnZXRzKHN0cnVjdCB4dF90YXJnZXQgKnRhcmdldCwgdW5z aWduZWQgaW50IG4pOw0KK2V4dGVybiB2b2lkIHh0X3VucmVnaXN0ZXJfdGFyZ2V0cyhzdHJ1Y3Qg eHRfdGFyZ2V0ICp0YXJnZXQsIHVuc2lnbmVkIGludCBuKTsNCisNCitleHRlcm4gaW50IHh0X3Jl Z2lzdGVyX21hdGNoKHN0cnVjdCB4dF9tYXRjaCAqdGFyZ2V0KTsNCitleHRlcm4gdm9pZCB4dF91 bnJlZ2lzdGVyX21hdGNoKHN0cnVjdCB4dF9tYXRjaCAqdGFyZ2V0KTsNCitleHRlcm4gaW50IHh0 X3JlZ2lzdGVyX21hdGNoZXMoc3RydWN0IHh0X21hdGNoICptYXRjaCwgdW5zaWduZWQgaW50IG4p Ow0KK2V4dGVybiB2b2lkIHh0X3VucmVnaXN0ZXJfbWF0Y2hlcyhzdHJ1Y3QgeHRfbWF0Y2ggKm1h dGNoLCB1bnNpZ25lZCBpbnQgbik7DQorDQorZXh0ZXJuIGludCB4dF9jaGVja19tYXRjaChjb25z dCBzdHJ1Y3QgeHRfbWF0Y2ggKm1hdGNoLCB1bnNpZ25lZCBzaG9ydCBmYW1pbHksDQorCQkJICB1 bnNpZ25lZCBpbnQgc2l6ZSwgY29uc3QgY2hhciAqdGFibGUsIHVuc2lnbmVkIGludCBob29rLA0K KwkJCSAgdW5zaWduZWQgc2hvcnQgcHJvdG8sIGludCBpbnZfcHJvdG8pOw0KK2V4dGVybiBpbnQg eHRfY2hlY2tfdGFyZ2V0KGNvbnN0IHN0cnVjdCB4dF90YXJnZXQgKnRhcmdldCwgdW5zaWduZWQg c2hvcnQgZmFtaWx5LA0KKwkJCSAgIHVuc2lnbmVkIGludCBzaXplLCBjb25zdCBjaGFyICp0YWJs ZSwgdW5zaWduZWQgaW50IGhvb2ssDQorCQkJICAgdW5zaWduZWQgc2hvcnQgcHJvdG8sIGludCBp bnZfcHJvdG8pOw0KKw0KK2V4dGVybiBpbnQgeHRfcmVnaXN0ZXJfdGFibGUoc3RydWN0IHh0X3Rh YmxlICp0YWJsZSwNCisJCQkgICAgIHN0cnVjdCB4dF90YWJsZV9pbmZvICpib290c3RyYXAsDQor CQkJICAgICBzdHJ1Y3QgeHRfdGFibGVfaW5mbyAqbmV3aW5mbyk7DQorZXh0ZXJuIHZvaWQgKnh0 X3VucmVnaXN0ZXJfdGFibGUoc3RydWN0IHh0X3RhYmxlICp0YWJsZSk7DQorDQorZXh0ZXJuIHN0 cnVjdCB4dF90YWJsZV9pbmZvICp4dF9yZXBsYWNlX3RhYmxlKHN0cnVjdCB4dF90YWJsZSAqdGFi bGUsDQorCQkJCQkgICAgICB1bnNpZ25lZCBpbnQgbnVtX2NvdW50ZXJzLA0KKwkJCQkJICAgICAg c3RydWN0IHh0X3RhYmxlX2luZm8gKm5ld2luZm8sDQorCQkJCQkgICAgICBpbnQgKmVycm9yKTsN CisNCitleHRlcm4gc3RydWN0IHh0X21hdGNoICp4dF9maW5kX21hdGNoKGludCBhZiwgY29uc3Qg Y2hhciAqbmFtZSwgdTggcmV2aXNpb24pOw0KK2V4dGVybiBzdHJ1Y3QgeHRfdGFyZ2V0ICp4dF9m aW5kX3RhcmdldChpbnQgYWYsIGNvbnN0IGNoYXIgKm5hbWUsIHU4IHJldmlzaW9uKTsNCitleHRl cm4gc3RydWN0IHh0X3RhcmdldCAqeHRfcmVxdWVzdF9maW5kX3RhcmdldChpbnQgYWYsIGNvbnN0 IGNoYXIgKm5hbWUsIA0KKwkJCQkJCXU4IHJldmlzaW9uKTsNCitleHRlcm4gaW50IHh0X2ZpbmRf cmV2aXNpb24oaW50IGFmLCBjb25zdCBjaGFyICpuYW1lLCB1OCByZXZpc2lvbiwgaW50IHRhcmdl dCwNCisJCQkgICAgaW50ICplcnIpOw0KKw0KK2V4dGVybiBzdHJ1Y3QgeHRfdGFibGUgKnh0X2Zp bmRfdGFibGVfbG9jayhpbnQgYWYsIGNvbnN0IGNoYXIgKm5hbWUpOw0KK2V4dGVybiB2b2lkIHh0 X3RhYmxlX3VubG9jayhzdHJ1Y3QgeHRfdGFibGUgKnQpOw0KKw0KK2V4dGVybiBpbnQgeHRfcHJv dG9faW5pdChpbnQgYWYpOw0KK2V4dGVybiB2b2lkIHh0X3Byb3RvX2ZpbmkoaW50IGFmKTsNCisN CitleHRlcm4gc3RydWN0IHh0X3RhYmxlX2luZm8gKnh0X2FsbG9jX3RhYmxlX2luZm8odW5zaWdu ZWQgaW50IHNpemUpOw0KK2V4dGVybiB2b2lkIHh0X2ZyZWVfdGFibGVfaW5mbyhzdHJ1Y3QgeHRf dGFibGVfaW5mbyAqaW5mbyk7DQorDQorI2lmZGVmIENPTkZJR19DT01QQVQNCisjaW5jbHVkZSA8 bmV0L2NvbXBhdC5oPg0KKw0KK3N0cnVjdCBjb21wYXRfeHRfZW50cnlfbWF0Y2gNCit7DQorCXVu aW9uIHsNCisJCXN0cnVjdCB7DQorCQkJdV9pbnQxNl90IG1hdGNoX3NpemU7DQorCQkJY2hhciBu YW1lW1hUX0ZVTkNUSU9OX01BWE5BTUVMRU4gLSAxXTsNCisJCQl1X2ludDhfdCByZXZpc2lvbjsN CisJCX0gdXNlcjsNCisJCXN0cnVjdCB7DQorCQkJdV9pbnQxNl90IG1hdGNoX3NpemU7DQorCQkJ Y29tcGF0X3VwdHJfdCBtYXRjaDsNCisJCX0ga2VybmVsOw0KKwkJdV9pbnQxNl90IG1hdGNoX3Np emU7DQorCX0gdTsNCisJdW5zaWduZWQgY2hhciBkYXRhWzBdOw0KK307DQorDQorc3RydWN0IGNv bXBhdF94dF9lbnRyeV90YXJnZXQNCit7DQorCXVuaW9uIHsNCisJCXN0cnVjdCB7DQorCQkJdV9p bnQxNl90IHRhcmdldF9zaXplOw0KKwkJCWNoYXIgbmFtZVtYVF9GVU5DVElPTl9NQVhOQU1FTEVO IC0gMV07DQorCQkJdV9pbnQ4X3QgcmV2aXNpb247DQorCQl9IHVzZXI7DQorCQlzdHJ1Y3Qgew0K KwkJCXVfaW50MTZfdCB0YXJnZXRfc2l6ZTsNCisJCQljb21wYXRfdXB0cl90IHRhcmdldDsNCisJ CX0ga2VybmVsOw0KKwkJdV9pbnQxNl90IHRhcmdldF9zaXplOw0KKwl9IHU7DQorCXVuc2lnbmVk IGNoYXIgZGF0YVswXTsNCit9Ow0KKw0KKy8qIEZJWE1FOiB0aGlzIHdvcmtzIG9ubHkgb24gMzIg Yml0IHRhc2tzDQorICogbmVlZCB0byBjaGFuZ2Ugd2hvbGUgYXBwcm9hY2ggaW4gb3JkZXIgdG8g Y2FsY3VsYXRlIGFsaWduIGFzIGZ1bmN0aW9uIG9mDQorICogY3VycmVudCB0YXNrIGFsaWdubWVu dCAqLw0KKw0KK3N0cnVjdCBjb21wYXRfeHRfY291bnRlcnMNCit7DQorI2lmIGRlZmluZWQoQ09O RklHX1g4Nl82NCkgfHwgZGVmaW5lZChDT05GSUdfSUE2NCkNCisJdV9pbnQzMl90IGNudFs0XTsN CisjZWxzZQ0KKwl1X2ludDY0X3QgY250WzJdOw0KKyNlbmRpZg0KK307DQorDQorc3RydWN0IGNv bXBhdF94dF9jb3VudGVyc19pbmZvDQorew0KKwljaGFyIG5hbWVbWFRfVEFCTEVfTUFYTkFNRUxF Tl07DQorCWNvbXBhdF91aW50X3QgbnVtX2NvdW50ZXJzOw0KKwlzdHJ1Y3QgY29tcGF0X3h0X2Nv dW50ZXJzIGNvdW50ZXJzWzBdOw0KK307DQorDQorI2RlZmluZSBDT01QQVRfWFRfQUxJR04ocykg KCgocykgKyAoX19hbGlnbm9mX18oc3RydWN0IGNvbXBhdF94dF9jb3VudGVycyktMSkpIFwNCisJ CSYgfihfX2FsaWdub2ZfXyhzdHJ1Y3QgY29tcGF0X3h0X2NvdW50ZXJzKS0xKSkNCisNCitleHRl cm4gdm9pZCB4dF9jb21wYXRfbG9jayhpbnQgYWYpOw0KK2V4dGVybiB2b2lkIHh0X2NvbXBhdF91 bmxvY2soaW50IGFmKTsNCisNCitleHRlcm4gaW50IHh0X2NvbXBhdF9tYXRjaF9vZmZzZXQoc3Ry dWN0IHh0X21hdGNoICptYXRjaCk7DQorZXh0ZXJuIHZvaWQgeHRfY29tcGF0X21hdGNoX2Zyb21f dXNlcihzdHJ1Y3QgeHRfZW50cnlfbWF0Y2ggKm0sDQorCQkJCSAgICAgIHZvaWQgKipkc3RwdHIs IGludCAqc2l6ZSk7DQorZXh0ZXJuIGludCB4dF9jb21wYXRfbWF0Y2hfdG9fdXNlcihzdHJ1Y3Qg eHRfZW50cnlfbWF0Y2ggKm0sDQorCQkJCSAgIHZvaWQgX191c2VyICoqZHN0cHRyLCBpbnQgKnNp emUpOw0KKw0KK2V4dGVybiBpbnQgeHRfY29tcGF0X3RhcmdldF9vZmZzZXQoc3RydWN0IHh0X3Rh cmdldCAqdGFyZ2V0KTsNCitleHRlcm4gdm9pZCB4dF9jb21wYXRfdGFyZ2V0X2Zyb21fdXNlcihz dHJ1Y3QgeHRfZW50cnlfdGFyZ2V0ICp0LA0KKwkJCQkgICAgICAgdm9pZCAqKmRzdHB0ciwgaW50 ICpzaXplKTsNCitleHRlcm4gaW50IHh0X2NvbXBhdF90YXJnZXRfdG9fdXNlcihzdHJ1Y3QgeHRf ZW50cnlfdGFyZ2V0ICp0LA0KKwkJCQkgICAgdm9pZCBfX3VzZXIgKipkc3RwdHIsIGludCAqc2l6 ZSk7DQorDQorI2VuZGlmIC8qIENPTkZJR19DT01QQVQgKi8NCisjZW5kaWYgLyogX19LRVJORUxf XyAqLw0KKw0KICNlbmRpZiAvKiBfWF9UQUJMRVNfSCAqLw0KSW5kZXg6IGluY2x1ZGUvbGludXgv bmV0ZmlsdGVyX2lwdjQvaXBfdGFibGVzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBpbmNsdWRlL2xpbnV4 L25ldGZpbHRlcl9pcHY0L2lwX3RhYmxlcy5oCShyZXZpc2lvbiAwKQ0KKysrIGluY2x1ZGUvbGlu dXgvbmV0ZmlsdGVyX2lwdjQvaXBfdGFibGVzLmgJKHJldmlzaW9uIDApDQpAQCAtMCwwICsxLDM2 NiBAQA0KKy8qDQorICogMjUtSnVsLTE5OTggTWFqb3IgY2hhbmdlcyB0byBhbGxvdyBmb3IgaXAg Y2hhaW4gdGFibGUNCisgKg0KKyAqIDMtSmFuLTIwMDAgTmFtZWQgdGFibGVzIHRvIGFsbG93IHBh Y2tldCBzZWxlY3Rpb24gZm9yIGRpZmZlcmVudCB1c2VzLg0KKyAqLw0KKw0KKy8qDQorICogCUZv cm1hdCBvZiBhbiBJUCBmaXJld2FsbCBkZXNjcmlwdG9yDQorICoNCisgKiAJc3JjLCBkc3QsIHNy Y19tYXNrLCBkc3RfbWFzayBhcmUgYWx3YXlzIHN0b3JlZCBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIu DQorICogCWZsYWdzIGFyZSBzdG9yZWQgaW4gaG9zdCBieXRlIG9yZGVyIChvZiBjb3Vyc2UpLg0K KyAqIAlQb3J0IG51bWJlcnMgYXJlIHN0b3JlZCBpbiBIT1NUIGJ5dGUgb3JkZXIuDQorICovDQor DQorI2lmbmRlZiBfSVBUQUJMRVNfSA0KKyNkZWZpbmUgX0lQVEFCTEVTX0gNCisNCisjaWZkZWYg X19LRVJORUxfXw0KKyNpbmNsdWRlIDxsaW51eC9pZi5oPg0KKyNpbmNsdWRlIDxsaW51eC90eXBl cy5oPg0KKyNpbmNsdWRlIDxsaW51eC9pbi5oPg0KKyNpbmNsdWRlIDxsaW51eC9pcC5oPg0KKyNp bmNsdWRlIDxsaW51eC9za2J1ZmYuaD4NCisjZW5kaWYNCisjaW5jbHVkZSA8bGludXgvY29tcGls ZXIuaD4NCisjaW5jbHVkZSA8bGludXgvbmV0ZmlsdGVyX2lwdjQuaD4NCisNCisjaW5jbHVkZSA8 bGludXgvbmV0ZmlsdGVyL3hfdGFibGVzLmg+DQorDQorI2RlZmluZSBJUFRfRlVOQ1RJT05fTUFY TkFNRUxFTiBYVF9GVU5DVElPTl9NQVhOQU1FTEVODQorI2RlZmluZSBJUFRfVEFCTEVfTUFYTkFN RUxFTiBYVF9UQUJMRV9NQVhOQU1FTEVODQorI2RlZmluZSBpcHRfbWF0Y2ggeHRfbWF0Y2gNCisj ZGVmaW5lIGlwdF90YXJnZXQgeHRfdGFyZ2V0DQorI2RlZmluZSBpcHRfdGFibGUgeHRfdGFibGUN CisjZGVmaW5lIGlwdF9nZXRfcmV2aXNpb24geHRfZ2V0X3JldmlzaW9uDQorDQorLyogWWVzLCBW aXJnaW5pYSwgeW91IGhhdmUgdG8gemVybyB0aGUgcGFkZGluZy4gKi8NCitzdHJ1Y3QgaXB0X2lw IHsNCisJLyogU291cmNlIGFuZCBkZXN0aW5hdGlvbiBJUCBhZGRyICovDQorCXN0cnVjdCBpbl9h ZGRyIHNyYywgZHN0Ow0KKwkvKiBNYXNrIGZvciBzcmMgYW5kIGRlc3QgSVAgYWRkciAqLw0KKwlz dHJ1Y3QgaW5fYWRkciBzbXNrLCBkbXNrOw0KKwljaGFyIGluaWZhY2VbSUZOQU1TSVpdLCBvdXRp ZmFjZVtJRk5BTVNJWl07DQorCXVuc2lnbmVkIGNoYXIgaW5pZmFjZV9tYXNrW0lGTkFNU0laXSwg b3V0aWZhY2VfbWFza1tJRk5BTVNJWl07DQorDQorCS8qIFByb3RvY29sLCAwID0gQU5ZICovDQor CXVfaW50MTZfdCBwcm90bzsNCisNCisJLyogRmxhZ3Mgd29yZCAqLw0KKwl1X2ludDhfdCBmbGFn czsNCisJLyogSW52ZXJzZSBmbGFncyAqLw0KKwl1X2ludDhfdCBpbnZmbGFnczsNCit9Ow0KKw0K KyNkZWZpbmUgaXB0X2VudHJ5X21hdGNoIHh0X2VudHJ5X21hdGNoDQorI2RlZmluZSBpcHRfZW50 cnlfdGFyZ2V0IHh0X2VudHJ5X3RhcmdldA0KKyNkZWZpbmUgaXB0X3N0YW5kYXJkX3RhcmdldCB4 dF9zdGFuZGFyZF90YXJnZXQNCisNCisjZGVmaW5lIGlwdF9jb3VudGVycyB4dF9jb3VudGVycw0K Kw0KKy8qIFZhbHVlcyBmb3IgImZsYWciIGZpZWxkIGluIHN0cnVjdCBpcHRfaXAgKGdlbmVyYWwg aXAgc3RydWN0dXJlKS4gKi8NCisjZGVmaW5lIElQVF9GX0ZSQUcJCTB4MDEJLyogU2V0IGlmIHJ1 bGUgaXMgYSBmcmFnbWVudCBydWxlICovDQorI2RlZmluZSBJUFRfRl9HT1RPCQkweDAyCS8qIFNl dCBpZiBqdW1wIGlzIGEgZ290byAqLw0KKyNkZWZpbmUgSVBUX0ZfTUFTSwkJMHgwMwkvKiBBbGwg cG9zc2libGUgZmxhZyBiaXRzIG1hc2suICovDQorDQorLyogVmFsdWVzIGZvciAiaW52IiBmaWVs ZCBpbiBzdHJ1Y3QgaXB0X2lwLiAqLw0KKyNkZWZpbmUgSVBUX0lOVl9WSUFfSU4JCTB4MDEJLyog SW52ZXJ0IHRoZSBzZW5zZSBvZiBJTiBJRkFDRS4gKi8NCisjZGVmaW5lIElQVF9JTlZfVklBX09V VAkJMHgwMgkvKiBJbnZlcnQgdGhlIHNlbnNlIG9mIE9VVCBJRkFDRSAqLw0KKyNkZWZpbmUgSVBU X0lOVl9UT1MJCTB4MDQJLyogSW52ZXJ0IHRoZSBzZW5zZSBvZiBUT1MuICovDQorI2RlZmluZSBJ UFRfSU5WX1NSQ0lQCQkweDA4CS8qIEludmVydCB0aGUgc2Vuc2Ugb2YgU1JDIElQLiAqLw0KKyNk ZWZpbmUgSVBUX0lOVl9EU1RJUAkJMHgxMAkvKiBJbnZlcnQgdGhlIHNlbnNlIG9mIERTVCBPUC4g Ki8NCisjZGVmaW5lIElQVF9JTlZfRlJBRwkJMHgyMAkvKiBJbnZlcnQgdGhlIHNlbnNlIG9mIEZS QUcuICovDQorI2RlZmluZSBJUFRfSU5WX1BST1RPCQlYVF9JTlZfUFJPVE8NCisjZGVmaW5lIElQ VF9JTlZfTUFTSwkJMHg3RgkvKiBBbGwgcG9zc2libGUgZmxhZyBiaXRzIG1hc2suICovDQorDQor LyogVGhpcyBzdHJ1Y3R1cmUgZGVmaW5lcyBlYWNoIG9mIHRoZSBmaXJld2FsbCBydWxlcy4gIENv bnNpc3RzIG9mIDMNCisgICBwYXJ0cyB3aGljaCBhcmUgMSkgZ2VuZXJhbCBJUCBoZWFkZXIgc3R1 ZmYgMikgbWF0Y2ggc3BlY2lmaWMNCisgICBzdHVmZiAzKSB0aGUgdGFyZ2V0IHRvIHBlcmZvcm0g aWYgdGhlIHJ1bGUgbWF0Y2hlcyAqLw0KK3N0cnVjdCBpcHRfZW50cnkNCit7DQorCXN0cnVjdCBp cHRfaXAgaXA7DQorDQorCS8qIE1hcmsgd2l0aCBmaWVsZHMgdGhhdCB3ZSBjYXJlIGFib3V0LiAq Lw0KKwl1bnNpZ25lZCBpbnQgbmZjYWNoZTsNCisNCisJLyogU2l6ZSBvZiBpcHRfZW50cnkgKyBt YXRjaGVzICovDQorCXVfaW50MTZfdCB0YXJnZXRfb2Zmc2V0Ow0KKwkvKiBTaXplIG9mIGlwdF9l bnRyeSArIG1hdGNoZXMgKyB0YXJnZXQgKi8NCisJdV9pbnQxNl90IG5leHRfb2Zmc2V0Ow0KKw0K KwkvKiBCYWNrIHBvaW50ZXIgKi8NCisJdW5zaWduZWQgaW50IGNvbWVmcm9tOw0KKw0KKwkvKiBQ YWNrZXQgYW5kIGJ5dGUgY291bnRlcnMuICovDQorCXN0cnVjdCB4dF9jb3VudGVycyBjb3VudGVy czsNCisNCisJLyogVGhlIG1hdGNoZXMgKGlmIGFueSksIHRoZW4gdGhlIHRhcmdldC4gKi8NCisJ dW5zaWduZWQgY2hhciBlbGVtc1swXTsNCit9Ow0KKw0KKy8qDQorICogTmV3IElQIGZpcmV3YWxs IG9wdGlvbnMgZm9yIFtnc11ldHNvY2tvcHQgYXQgdGhlIFJBVyBJUCBsZXZlbC4NCisgKiBVbmxp a2UgQlNEIExpbnV4IGluaGVyaXRzIElQIG9wdGlvbnMgc28geW91IGRvbid0IGhhdmUgdG8gdXNl IGEgcmF3DQorICogc29ja2V0IGZvciB0aGlzLiBJbnN0ZWFkIHdlIGNoZWNrIHJpZ2h0cyBpbiB0 aGUgY2FsbHMuDQorICoNCisgKiBBVFRFTlRJT046IGNoZWNrIGxpbnV4L2luLmggYmVmb3JlIGFk ZGluZyBuZXcgbnVtYmVyIGhlcmUuDQorICovDQorI2RlZmluZSBJUFRfQkFTRV9DVEwJCTY0DQor DQorI2RlZmluZSBJUFRfU09fU0VUX1JFUExBQ0UJKElQVF9CQVNFX0NUTCkNCisjZGVmaW5lIElQ VF9TT19TRVRfQUREX0NPVU5URVJTCShJUFRfQkFTRV9DVEwgKyAxKQ0KKyNkZWZpbmUgSVBUX1NP X1NFVF9NQVgJCUlQVF9TT19TRVRfQUREX0NPVU5URVJTDQorDQorI2RlZmluZSBJUFRfU09fR0VU X0lORk8JCQkoSVBUX0JBU0VfQ1RMKQ0KKyNkZWZpbmUgSVBUX1NPX0dFVF9FTlRSSUVTCQkoSVBU X0JBU0VfQ1RMICsgMSkNCisjZGVmaW5lIElQVF9TT19HRVRfUkVWSVNJT05fTUFUQ0gJKElQVF9C QVNFX0NUTCArIDIpDQorI2RlZmluZSBJUFRfU09fR0VUX1JFVklTSU9OX1RBUkdFVAkoSVBUX0JB U0VfQ1RMICsgMykNCisjZGVmaW5lIElQVF9TT19HRVRfTUFYCQkJSVBUX1NPX0dFVF9SRVZJU0lP Tl9UQVJHRVQNCisNCisjZGVmaW5lIElQVF9DT05USU5VRSBYVF9DT05USU5VRQ0KKyNkZWZpbmUg SVBUX1JFVFVSTiBYVF9SRVRVUk4NCisNCisjaW5jbHVkZSA8bGludXgvbmV0ZmlsdGVyL3h0X3Rj cHVkcC5oPg0KKyNkZWZpbmUgaXB0X3VkcCB4dF91ZHANCisjZGVmaW5lIGlwdF90Y3AgeHRfdGNw DQorDQorI2RlZmluZSBJUFRfVENQX0lOVl9TUkNQVAlYVF9UQ1BfSU5WX1NSQ1BUDQorI2RlZmlu ZSBJUFRfVENQX0lOVl9EU1RQVAlYVF9UQ1BfSU5WX0RTVFBUDQorI2RlZmluZSBJUFRfVENQX0lO Vl9GTEFHUwlYVF9UQ1BfSU5WX0ZMQUdTDQorI2RlZmluZSBJUFRfVENQX0lOVl9PUFRJT04JWFRf VENQX0lOVl9PUFRJT04NCisjZGVmaW5lIElQVF9UQ1BfSU5WX01BU0sJWFRfVENQX0lOVl9NQVNL DQorDQorI2RlZmluZSBJUFRfVURQX0lOVl9TUkNQVAlYVF9VRFBfSU5WX1NSQ1BUDQorI2RlZmlu ZSBJUFRfVURQX0lOVl9EU1RQVAlYVF9VRFBfSU5WX0RTVFBUDQorI2RlZmluZSBJUFRfVURQX0lO Vl9NQVNLCVhUX1VEUF9JTlZfTUFTSw0KKw0KKy8qIElDTVAgbWF0Y2hpbmcgc3R1ZmYgKi8NCitz dHJ1Y3QgaXB0X2ljbXANCit7DQorCXVfaW50OF90IHR5cGU7CQkJCS8qIHR5cGUgdG8gbWF0Y2gg Ki8NCisJdV9pbnQ4X3QgY29kZVsyXTsJCQkvKiByYW5nZSBvZiBjb2RlICovDQorCXVfaW50OF90 IGludmZsYWdzOwkJCS8qIEludmVyc2UgZmxhZ3MgKi8NCit9Ow0KKw0KKy8qIFZhbHVlcyBmb3Ig ImludiIgZmllbGQgZm9yIHN0cnVjdCBpcHRfaWNtcC4gKi8NCisjZGVmaW5lIElQVF9JQ01QX0lO VgkweDAxCS8qIEludmVydCB0aGUgc2Vuc2Ugb2YgdHlwZS9jb2RlIHRlc3QgKi8NCisNCisvKiBU aGUgYXJndW1lbnQgdG8gSVBUX1NPX0dFVF9JTkZPICovDQorc3RydWN0IGlwdF9nZXRpbmZvDQor ew0KKwkvKiBXaGljaCB0YWJsZTogY2FsbGVyIGZpbGxzIHRoaXMgaW4uICovDQorCWNoYXIgbmFt ZVtJUFRfVEFCTEVfTUFYTkFNRUxFTl07DQorDQorCS8qIEtlcm5lbCBmaWxscyB0aGVzZSBpbi4g Ki8NCisJLyogV2hpY2ggaG9vayBlbnRyeSBwb2ludHMgYXJlIHZhbGlkOiBiaXRtYXNrICovDQor CXVuc2lnbmVkIGludCB2YWxpZF9ob29rczsNCisNCisJLyogSG9vayBlbnRyeSBwb2ludHM6IG9u ZSBwZXIgbmV0ZmlsdGVyIGhvb2suICovDQorCXVuc2lnbmVkIGludCBob29rX2VudHJ5W05GX0lQ X05VTUhPT0tTXTsNCisNCisJLyogVW5kZXJmbG93IHBvaW50cy4gKi8NCisJdW5zaWduZWQgaW50 IHVuZGVyZmxvd1tORl9JUF9OVU1IT09LU107DQorDQorCS8qIE51bWJlciBvZiBlbnRyaWVzICov DQorCXVuc2lnbmVkIGludCBudW1fZW50cmllczsNCisNCisJLyogU2l6ZSBvZiBlbnRyaWVzLiAq Lw0KKwl1bnNpZ25lZCBpbnQgc2l6ZTsNCit9Ow0KKw0KKy8qIFRoZSBhcmd1bWVudCB0byBJUFRf U09fU0VUX1JFUExBQ0UuICovDQorc3RydWN0IGlwdF9yZXBsYWNlDQorew0KKwkvKiBXaGljaCB0 YWJsZS4gKi8NCisJY2hhciBuYW1lW0lQVF9UQUJMRV9NQVhOQU1FTEVOXTsNCisNCisJLyogV2hp Y2ggaG9vayBlbnRyeSBwb2ludHMgYXJlIHZhbGlkOiBiaXRtYXNrLiAgWW91IGNhbid0DQorICAg ICAgICAgICBjaGFuZ2UgdGhpcy4gKi8NCisJdW5zaWduZWQgaW50IHZhbGlkX2hvb2tzOw0KKw0K KwkvKiBOdW1iZXIgb2YgZW50cmllcyAqLw0KKwl1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7DQor DQorCS8qIFRvdGFsIHNpemUgb2YgbmV3IGVudHJpZXMgKi8NCisJdW5zaWduZWQgaW50IHNpemU7 DQorDQorCS8qIEhvb2sgZW50cnkgcG9pbnRzLiAqLw0KKwl1bnNpZ25lZCBpbnQgaG9va19lbnRy eVtORl9JUF9OVU1IT09LU107DQorDQorCS8qIFVuZGVyZmxvdyBwb2ludHMuICovDQorCXVuc2ln bmVkIGludCB1bmRlcmZsb3dbTkZfSVBfTlVNSE9PS1NdOw0KKw0KKwkvKiBJbmZvcm1hdGlvbiBh Ym91dCBvbGQgZW50cmllczogKi8NCisJLyogTnVtYmVyIG9mIGNvdW50ZXJzIChtdXN0IGJlIGVx dWFsIHRvIGN1cnJlbnQgbnVtYmVyIG9mIGVudHJpZXMpLiAqLw0KKwl1bnNpZ25lZCBpbnQgbnVt X2NvdW50ZXJzOw0KKwkvKiBUaGUgb2xkIGVudHJpZXMnIGNvdW50ZXJzLiAqLw0KKwlzdHJ1Y3Qg eHRfY291bnRlcnMgX191c2VyICpjb3VudGVyczsNCisNCisJLyogVGhlIGVudHJpZXMgKGhhbmcg b2ZmIGVuZDogbm90IHJlYWxseSBhbiBhcnJheSkuICovDQorCXN0cnVjdCBpcHRfZW50cnkgZW50 cmllc1swXTsNCit9Ow0KKw0KKy8qIFRoZSBhcmd1bWVudCB0byBJUFRfU09fQUREX0NPVU5URVJT LiAqLw0KKyNkZWZpbmUgaXB0X2NvdW50ZXJzX2luZm8geHRfY291bnRlcnNfaW5mbw0KKw0KKy8q IFRoZSBhcmd1bWVudCB0byBJUFRfU09fR0VUX0VOVFJJRVMuICovDQorc3RydWN0IGlwdF9nZXRf ZW50cmllcw0KK3sNCisJLyogV2hpY2ggdGFibGU6IHVzZXIgZmlsbHMgdGhpcyBpbi4gKi8NCisJ Y2hhciBuYW1lW0lQVF9UQUJMRV9NQVhOQU1FTEVOXTsNCisNCisJLyogVXNlciBmaWxscyB0aGlz IGluOiB0b3RhbCBlbnRyeSBzaXplLiAqLw0KKwl1bnNpZ25lZCBpbnQgc2l6ZTsNCisNCisJLyog VGhlIGVudHJpZXMuICovDQorCXN0cnVjdCBpcHRfZW50cnkgZW50cnl0YWJsZVswXTsNCit9Ow0K Kw0KKy8qIFN0YW5kYXJkIHJldHVybiB2ZXJkaWN0LCBvciBkbyBqdW1wLiAqLw0KKyNkZWZpbmUg SVBUX1NUQU5EQVJEX1RBUkdFVCBYVF9TVEFOREFSRF9UQVJHRVQNCisvKiBFcnJvciB2ZXJkaWN0 LiAqLw0KKyNkZWZpbmUgSVBUX0VSUk9SX1RBUkdFVCBYVF9FUlJPUl9UQVJHRVQNCisNCisvKiBI ZWxwZXIgZnVuY3Rpb25zICovDQorc3RhdGljIF9faW5saW5lX18gc3RydWN0IGlwdF9lbnRyeV90 YXJnZXQgKg0KK2lwdF9nZXRfdGFyZ2V0KHN0cnVjdCBpcHRfZW50cnkgKmUpDQorew0KKwlyZXR1 cm4gKHZvaWQgKillICsgZS0+dGFyZ2V0X29mZnNldDsNCit9DQorDQorLyogZm4gcmV0dXJucyAw IHRvIGNvbnRpbnVlIGl0ZXJhdGlvbiAqLw0KKyNkZWZpbmUgSVBUX01BVENIX0lURVJBVEUoZSwg Zm4sIGFyZ3MuLi4pCVwNCisoewkJCQkJCVwNCisJdW5zaWduZWQgaW50IF9faTsJCQlcDQorCWlu dCBfX3JldCA9IDA7CQkJCVwNCisJc3RydWN0IGlwdF9lbnRyeV9tYXRjaCAqX19tYXRjaDsJXA0K KwkJCQkJCVwNCisJZm9yIChfX2kgPSBzaXplb2Yoc3RydWN0IGlwdF9lbnRyeSk7CVwNCisJICAg ICBfX2kgPCAoZSktPnRhcmdldF9vZmZzZXQ7CQlcDQorCSAgICAgX19pICs9IF9fbWF0Y2gtPnUu bWF0Y2hfc2l6ZSkgewlcDQorCQlfX21hdGNoID0gKHZvaWQgKikoZSkgKyBfX2k7CVwNCisJCQkJ CQlcDQorCQlfX3JldCA9IGZuKF9fbWF0Y2ggLCAjIyBhcmdzKTsJXA0KKwkJaWYgKF9fcmV0ICE9 IDApCQkJXA0KKwkJCWJyZWFrOwkJCVwNCisJfQkJCQkJXA0KKwlfX3JldDsJCQkJCVwNCit9KQ0K Kw0KKy8qIGZuIHJldHVybnMgMCB0byBjb250aW51ZSBpdGVyYXRpb24gKi8NCisjZGVmaW5lIElQ VF9FTlRSWV9JVEVSQVRFKGVudHJpZXMsIHNpemUsIGZuLCBhcmdzLi4uKQkJXA0KKyh7CQkJCQkJ CQlcDQorCXVuc2lnbmVkIGludCBfX2k7CQkJCQlcDQorCWludCBfX3JldCA9IDA7CQkJCQkJXA0K KwlzdHJ1Y3QgaXB0X2VudHJ5ICpfX2VudHJ5OwkJCQlcDQorCQkJCQkJCQlcDQorCWZvciAoX19p ID0gMDsgX19pIDwgKHNpemUpOyBfX2kgKz0gX19lbnRyeS0+bmV4dF9vZmZzZXQpIHsgXA0KKwkJ X19lbnRyeSA9ICh2b2lkICopKGVudHJpZXMpICsgX19pOwkJXA0KKwkJCQkJCQkJXA0KKwkJX19y ZXQgPSBmbihfX2VudHJ5ICwgIyMgYXJncyk7CQkJXA0KKwkJaWYgKF9fcmV0ICE9IDApCQkJCQlc DQorCQkJYnJlYWs7CQkJCQlcDQorCX0JCQkJCQkJXA0KKwlfX3JldDsJCQkJCQkJXA0KK30pDQor DQorLyogZm4gcmV0dXJucyAwIHRvIGNvbnRpbnVlIGl0ZXJhdGlvbiAqLw0KKyNkZWZpbmUgSVBU X0VOVFJZX0lURVJBVEVfQ09OVElOVUUoZW50cmllcywgc2l6ZSwgbiwgZm4sIGFyZ3MuLi4pIFwN CisoewkJCQkJCQkJXA0KKwl1bnNpZ25lZCBpbnQgX19pLCBfX247CQkJCQlcDQorCWludCBfX3Jl dCA9IDA7CQkJCQkJXA0KKwlzdHJ1Y3QgaXB0X2VudHJ5ICpfX2VudHJ5OwkJCQlcDQorCQkJCQkJ CQlcDQorCWZvciAoX19pID0gMCwgX19uID0gMDsgX19pIDwgKHNpemUpOwkJCVwNCisJICAgICBf X2kgKz0gX19lbnRyeS0+bmV4dF9vZmZzZXQsIF9fbisrKSB7IAkJXA0KKwkJX19lbnRyeSA9ICh2 b2lkICopKGVudHJpZXMpICsgX19pOwkJXA0KKwkJaWYgKF9fbiA8IG4pCQkJCQlcDQorCQkJY29u dGludWU7CQkJCVwNCisJCQkJCQkJCVwNCisJCV9fcmV0ID0gZm4oX19lbnRyeSAsICMjIGFyZ3Mp OwkJCVwNCisJCWlmIChfX3JldCAhPSAwKQkJCQkJXA0KKwkJCWJyZWFrOwkJCQkJXA0KKwl9CQkJ CQkJCVwNCisJX19yZXQ7CQkJCQkJCVwNCit9KQ0KKw0KKy8qDQorICoJTWFpbiBmaXJld2FsbCBj aGFpbnMgZGVmaW5pdGlvbnMgYW5kIGdsb2JhbCB2YXIncyBkZWZpbml0aW9ucy4NCisgKi8NCisj aWZkZWYgX19LRVJORUxfXw0KKw0KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+DQorZXh0ZXJuIHZv aWQgaXB0X2luaXQodm9pZCkgX19pbml0Ow0KKw0KK2V4dGVybiBpbnQgaXB0X3JlZ2lzdGVyX3Rh YmxlKHN0cnVjdCB4dF90YWJsZSAqdGFibGUsDQorCQkJICAgICAgY29uc3Qgc3RydWN0IGlwdF9y ZXBsYWNlICpyZXBsKTsNCitleHRlcm4gdm9pZCBpcHRfdW5yZWdpc3Rlcl90YWJsZShzdHJ1Y3Qg eHRfdGFibGUgKnRhYmxlKTsNCisNCisvKiBTdGFuZGFyZCBlbnRyeS4gKi8NCitzdHJ1Y3QgaXB0 X3N0YW5kYXJkDQorew0KKwlzdHJ1Y3QgaXB0X2VudHJ5IGVudHJ5Ow0KKwlzdHJ1Y3QgaXB0X3N0 YW5kYXJkX3RhcmdldCB0YXJnZXQ7DQorfTsNCisNCitzdHJ1Y3QgaXB0X2Vycm9yX3RhcmdldA0K K3sNCisJc3RydWN0IGlwdF9lbnRyeV90YXJnZXQgdGFyZ2V0Ow0KKwljaGFyIGVycm9ybmFtZVtJ UFRfRlVOQ1RJT05fTUFYTkFNRUxFTl07DQorfTsNCisNCitzdHJ1Y3QgaXB0X2Vycm9yDQorew0K KwlzdHJ1Y3QgaXB0X2VudHJ5IGVudHJ5Ow0KKwlzdHJ1Y3QgaXB0X2Vycm9yX3RhcmdldCB0YXJn ZXQ7DQorfTsNCisNCisjZGVmaW5lIElQVF9FTlRSWV9JTklUKF9fc2l6ZSkJCQkJCQkgICAgICAg XA0KK3sJCQkJCQkJCQkgICAgICAgXA0KKwkudGFyZ2V0X29mZnNldAk9IHNpemVvZihzdHJ1Y3Qg aXB0X2VudHJ5KSwJCQkgICAgICAgXA0KKwkubmV4dF9vZmZzZXQJPSAoX19zaXplKSwJCQkJCSAg ICAgICBcDQorfQ0KKw0KKyNkZWZpbmUgSVBUX1NUQU5EQVJEX0lOSVQoX192ZXJkaWN0KQkJCQkJ ICAgICAgIFwNCit7CQkJCQkJCQkJICAgICAgIFwNCisJLmVudHJ5CQk9IElQVF9FTlRSWV9JTklU KHNpemVvZihzdHJ1Y3QgaXB0X3N0YW5kYXJkKSksCSAgICAgICBcDQorCS50YXJnZXQJCT0gWFRf VEFSR0VUX0lOSVQoSVBUX1NUQU5EQVJEX1RBUkdFVCwJCSAgICAgICBcDQorCQkJCQkgc2l6ZW9m KHN0cnVjdCB4dF9zdGFuZGFyZF90YXJnZXQpKSwgICBcDQorCS50YXJnZXQudmVyZGljdAk9IC0o X192ZXJkaWN0KSAtIDEsCQkJCSAgICAgICBcDQorfQ0KKw0KKyNkZWZpbmUgSVBUX0VSUk9SX0lO SVQJCQkJCQkJICAgICAgIFwNCit7CQkJCQkJCQkJICAgICAgIFwNCisJLmVudHJ5CQk9IElQVF9F TlRSWV9JTklUKHNpemVvZihzdHJ1Y3QgaXB0X2Vycm9yKSksCSAgICAgICBcDQorCS50YXJnZXQJ CT0gWFRfVEFSR0VUX0lOSVQoSVBUX0VSUk9SX1RBUkdFVCwJCSAgICAgICBcDQorCQkJCQkgc2l6 ZW9mKHN0cnVjdCBpcHRfZXJyb3JfdGFyZ2V0KSksICAgICBcDQorCS50YXJnZXQuZXJyb3JuYW1l ID0gIkVSUk9SIiwJCQkJCSAgICAgICBcDQorfQ0KKw0KK2V4dGVybiB1bnNpZ25lZCBpbnQgaXB0 X2RvX3RhYmxlKHN0cnVjdCBza19idWZmICpza2IsDQorCQkJCSB1bnNpZ25lZCBpbnQgaG9vaywN CisJCQkJIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICppbiwNCisJCQkJIGNvbnN0IHN0cnVjdCBu ZXRfZGV2aWNlICpvdXQsDQorCQkJCSBzdHJ1Y3QgeHRfdGFibGUgKnRhYmxlKTsNCisNCisjZGVm aW5lIElQVF9BTElHTihzKSBYVF9BTElHTihzKQ0KKw0KKyNpZmRlZiBDT05GSUdfQ09NUEFUDQor I2luY2x1ZGUgPG5ldC9jb21wYXQuaD4NCisNCitzdHJ1Y3QgY29tcGF0X2lwdF9lbnRyeQ0KK3sN CisJc3RydWN0IGlwdF9pcCBpcDsNCisJY29tcGF0X3VpbnRfdCBuZmNhY2hlOw0KKwl1X2ludDE2 X3QgdGFyZ2V0X29mZnNldDsNCisJdV9pbnQxNl90IG5leHRfb2Zmc2V0Ow0KKwljb21wYXRfdWlu dF90IGNvbWVmcm9tOw0KKwlzdHJ1Y3QgY29tcGF0X3h0X2NvdW50ZXJzIGNvdW50ZXJzOw0KKwl1 bnNpZ25lZCBjaGFyIGVsZW1zWzBdOw0KK307DQorDQorI2RlZmluZSBDT01QQVRfSVBUX0FMSUdO KHMpIAlDT01QQVRfWFRfQUxJR04ocykNCisNCisjZW5kaWYgLyogQ09ORklHX0NPTVBBVCAqLw0K KyNlbmRpZiAvKl9fS0VSTkVMX18qLw0KKyNlbmRpZiAvKiBfSVBUQUJMRVNfSCAqLw0K --=-G74KisDnNjvKKh34e3Tr--