From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-iy0-f174.google.com ([209.85.210.174]:62688 "EHLO mail-iy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754218Ab1EPKoP (ORCPT ); Mon, 16 May 2011 06:44:15 -0400 MIME-Version: 1.0 Date: Mon, 16 May 2011 18:44:14 +0800 Message-ID: (sfid-20110516_124426_454019_F4D81B79) Subject: [Patch net-next-2.6] rfkill: remove CONFIG_RFKILL_INPUT From: =?UTF-8?Q?Am=C3=A9rico_Wang?= To: Linux Kernel Network Developers , linux-wireless@vger.kernel.org Cc: "David S. Miller" , Johannes Berg , Andrew Morton Content-Type: multipart/mixed; boundary=90e6ba53a4a82fe4de04a3625689 Sender: linux-wireless-owner@vger.kernel.org List-ID: --90e6ba53a4a82fe4de04a3625689 Content-Type: text/plain; charset=UTF-8 This is scheduled to be removed in 2.6.33, now we are at 2.6.39-rc2. So I think it is safe to remove it completely. Signed-off-by: WANG Cong Cc: Johannes Berg --- --90e6ba53a4a82fe4de04a3625689 Content-Type: text/x-patch; charset=US-ASCII; name="net-rfkill-remove-rfkill-input.diff" Content-Disposition: attachment; filename="net-rfkill-remove-rfkill-input.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gnracaoq0 IERvY3VtZW50YXRpb24vZmVhdHVyZS1yZW1vdmFsLXNjaGVkdWxlLnR4dCB8ICAgIDcgLQogYXJj aC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWcgICAgICAgIHwgICAgMSAtCiBhcmNoL21p cHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWcgICAgICAgfCAgICAxIC0KIG5ldC9yZmtpbGwv S2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgLQogbmV0L3Jma2lsbC9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSAtCiBuZXQvcmZraWxsL2NvcmUuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjAyIC0tLS0tLS0tLS0tLS0tLS0KIG5ldC9yZmtp bGwvaW5wdXQuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzNTAgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogNyBmaWxlcyBjaGFuZ2VkLCAwIGluc2VydGlvbnMoKyksIDU2OCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmUtcmVtb3ZhbC1zY2hl ZHVsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmUtcmVtb3ZhbC1zY2hlZHVsZS50eHQKaW5k ZXggNDY2NzllNC4uZWJmMmRiNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlLXJl bW92YWwtc2NoZWR1bGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZS1yZW1vdmFsLXNj aGVkdWxlLnR4dApAQCAtMzQ1LDEzICszNDUsNiBAQCBXaG86CUFsZXggQ2hpYW5nIDxhY2hpYW5n QGhwLmNvbT4KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoYXQ6CUNPTkZJR19S RktJTExfSU5QVVQKLVdoZW46CTIuNi4zMwotV2h5OglTaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4g dXNlcnNwYWNlLCBwb2xpY3kgZGFlbW9uLgotV2hvOglKb2hhbm5lcyBCZXJnIDxqb2hhbm5lc0Bz aXBzb2x1dGlvbnMubmV0PgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KIFdoYXQ6 CXNvdW5kLXNsb3Qvc2VydmljZS0qIG1vZHVsZSBhbGlhc2VzIGFuZCByZWxhdGVkIGNsdXR0ZXJz IGluCiAJc291bmQvc291bmRfY29yZS5jCiBXaGVuOglBdWd1c3QgMjAxMApkaWZmIC0tZ2l0IGEv YXJjaC9taXBzL2NvbmZpZ3MvYmNtNDd4eF9kZWZjb25maWcgYi9hcmNoL21pcHMvY29uZmlncy9i Y200N3h4X2RlZmNvbmZpZwppbmRleCAyMmZkZjJmLi4zZDcyNGVmIDEwMDY0NAotLS0gYS9hcmNo L21pcHMvY29uZmlncy9iY200N3h4X2RlZmNvbmZpZworKysgYi9hcmNoL21pcHMvY29uZmlncy9i Y200N3h4X2RlZmNvbmZpZwpAQCAtMjY4LDcgKzI2OCw2IEBAIENPTkZJR19NQUM4MDIxMV9SQ19Q SUQ9eQogQ09ORklHX01BQzgwMjExX1JDX0RFRkFVTFRfUElEPXkKIENPTkZJR19NQUM4MDIxMV9N RVNIPXkKIENPTkZJR19SRktJTEw9bQotQ09ORklHX1JGS0lMTF9JTlBVVD15CiBDT05GSUdfVUVW RU5UX0hFTFBFUl9QQVRIPSIvc2Jpbi9ob3RwbHVnIgogQ09ORklHX0ZXX0xPQURFUj1tCiBDT05G SUdfQ09OTkVDVE9SPW0KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2Rl ZmNvbmZpZyBiL2FyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2RlZmNvbmZpZwppbmRleCAxNjdj MWQwLi4zZmZiOTA5IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZj b25maWcKKysrIGIvYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnCkBAIC0xMDMs NyArMTAzLDYgQEAgQ09ORklHX0xJQjgwMjExX0RFQlVHPXkKIENPTkZJR19NQUM4MDIxMT1tCiBD T05GSUdfTUFDODAyMTFfTEVEUz15CiBDT05GSUdfUkZLSUxMPW0KLUNPTkZJR19SRktJTExfSU5Q VVQ9eQogQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iL3NiaW4vaG90cGx1ZyIKIENPTkZJR19C TEtfREVWX0xPT1A9eQogQ09ORklHX0JMS19ERVZfQ1JZUFRPTE9PUD1tCmRpZmYgLS1naXQgYS9u ZXQvcmZraWxsL0tjb25maWcgYi9uZXQvcmZraWxsL0tjb25maWcKaW5kZXggNDg0NjRjYS4uYzE5 MjYwMyAxMDA2NDQKLS0tIGEvbmV0L3Jma2lsbC9LY29uZmlnCisrKyBiL25ldC9yZmtpbGwvS2Nv bmZpZwpAQCAtMTcsMTIgKzE3LDYgQEAgY29uZmlnIFJGS0lMTF9MRURTCiAJZGVwZW5kcyBvbiBM RURTX1RSSUdHRVJTID0geSB8fCBSRktJTEwgPSBMRURTX1RSSUdHRVJTCiAJZGVmYXVsdCB5CiAK LWNvbmZpZyBSRktJTExfSU5QVVQKLQlib29sICJSRiBzd2l0Y2ggaW5wdXQgc3VwcG9ydCIgaWYg RVhQRVJUCi0JZGVwZW5kcyBvbiBSRktJTEwKLQlkZXBlbmRzIG9uIElOUFVUID0geSB8fCBSRktJ TEwgPSBJTlBVVAotCWRlZmF1bHQgeSBpZiAhRVhQRVJUCi0KIGNvbmZpZyBSRktJTExfUkVHVUxB VE9SCiAJdHJpc3RhdGUgIkdlbmVyaWMgcmZraWxsIHJlZ3VsYXRvciBkcml2ZXIiCiAJZGVwZW5k cyBvbiBSRktJTEwgfHwgIVJGS0lMTApkaWZmIC0tZ2l0IGEvbmV0L3Jma2lsbC9NYWtlZmlsZSBi L25ldC9yZmtpbGwvTWFrZWZpbGUKaW5kZXggZDlhNWE1OC4uMGQ1ZTNlMSAxMDA2NDQKLS0tIGEv bmV0L3Jma2lsbC9NYWtlZmlsZQorKysgYi9uZXQvcmZraWxsL01ha2VmaWxlCkBAIC0zLDYgKzMs NSBAQAogIwogCiByZmtpbGwteQkJCSs9IGNvcmUubwotcmZraWxsLSQoQ09ORklHX1JGS0lMTF9J TlBVVCkJKz0gaW5wdXQubwogb2JqLSQoQ09ORklHX1JGS0lMTCkJCSs9IHJma2lsbC5vCiBvYmot JChDT05GSUdfUkZLSUxMX1JFR1VMQVRPUikJKz0gcmZraWxsLXJlZ3VsYXRvci5vCmRpZmYgLS1n aXQgYS9uZXQvcmZraWxsL2NvcmUuYyBiL25ldC9yZmtpbGwvY29yZS5jCmluZGV4IDAxOTgxOTEu LjQ3YWI0NGUgMTAwNjQ0Ci0tLSBhL25ldC9yZmtpbGwvY29yZS5jCisrKyBiL25ldC9yZmtpbGwv Y29yZS5jCkBAIC0zMDQsMTUzICszMDQsNiBAQCBzdGF0aWMgdm9pZCByZmtpbGxfc2V0X2Jsb2Nr KHN0cnVjdCByZmtpbGwgKnJma2lsbCwgYm9vbCBibG9ja2VkKQogCXJma2lsbF9ldmVudChyZmtp bGwpOwogfQogCi0jaWZkZWYgQ09ORklHX1JGS0lMTF9JTlBVVAotc3RhdGljIGF0b21pY190IHJm a2lsbF9pbnB1dF9kaXNhYmxlZCA9IEFUT01JQ19JTklUKDApOwotCi0vKioKLSAqIF9fcmZraWxs X3N3aXRjaF9hbGwgLSBUb2dnbGUgc3RhdGUgb2YgYWxsIHN3aXRjaGVzIG9mIGdpdmVuIHR5cGUK LSAqIEB0eXBlOiB0eXBlIG9mIGludGVyZmFjZXMgdG8gYmUgYWZmZWN0ZWQKLSAqIEBzdGF0ZTog dGhlIG5ldyBzdGF0ZQotICoKLSAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgc3RhdGUgb2YgYWxs IHN3aXRjaGVzIG9mIGdpdmVuIHR5cGUsCi0gKiB1bmxlc3MgYSBzcGVjaWZpYyBzd2l0Y2ggaXMg Y2xhaW1lZCBieSB1c2Vyc3BhY2UgKGluIHdoaWNoIGNhc2UsCi0gKiB0aGF0IHN3aXRjaCBpcyBs ZWZ0IGFsb25lKSBvciBzdXNwZW5kZWQuCi0gKgotICogQ2FsbGVyIG11c3QgaGF2ZSBhY3F1aXJl ZCByZmtpbGxfZ2xvYmFsX211dGV4LgotICovCi1zdGF0aWMgdm9pZCBfX3Jma2lsbF9zd2l0Y2hf YWxsKGNvbnN0IGVudW0gcmZraWxsX3R5cGUgdHlwZSwgYm9vbCBibG9ja2VkKQotewotCXN0cnVj dCByZmtpbGwgKnJma2lsbDsKLQotCXJma2lsbF9nbG9iYWxfc3RhdGVzW3R5cGVdLmN1ciA9IGJs b2NrZWQ7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShyZmtpbGwsICZyZmtpbGxfbGlzdCwgbm9kZSkg ewotCQlpZiAocmZraWxsLT50eXBlICE9IHR5cGUpCi0JCQljb250aW51ZTsKLQotCQlyZmtpbGxf c2V0X2Jsb2NrKHJma2lsbCwgYmxvY2tlZCk7Ci0JfQotfQotCi0vKioKLSAqIHJma2lsbF9zd2l0 Y2hfYWxsIC0gVG9nZ2xlIHN0YXRlIG9mIGFsbCBzd2l0Y2hlcyBvZiBnaXZlbiB0eXBlCi0gKiBA dHlwZTogdHlwZSBvZiBpbnRlcmZhY2VzIHRvIGJlIGFmZmVjdGVkCi0gKiBAc3RhdGU6IHRoZSBu ZXcgc3RhdGUKLSAqCi0gKiBBY3F1aXJlcyByZmtpbGxfZ2xvYmFsX211dGV4IGFuZCBjYWxscyBf X3Jma2lsbF9zd2l0Y2hfYWxsKEB0eXBlLCBAc3RhdGUpLgotICogUGxlYXNlIHJlZmVyIHRvIF9f cmZraWxsX3N3aXRjaF9hbGwoKSBmb3IgZGV0YWlscy4KLSAqCi0gKiBEb2VzIG5vdGhpbmcgaWYg dGhlIEVQTyBsb2NrIGlzIGFjdGl2ZS4KLSAqLwotdm9pZCByZmtpbGxfc3dpdGNoX2FsbChlbnVt IHJma2lsbF90eXBlIHR5cGUsIGJvb2wgYmxvY2tlZCkKLXsKLQlpZiAoYXRvbWljX3JlYWQoJnJm a2lsbF9pbnB1dF9kaXNhYmxlZCkpCi0JCXJldHVybjsKLQotCW11dGV4X2xvY2soJnJma2lsbF9n bG9iYWxfbXV0ZXgpOwotCi0JaWYgKCFyZmtpbGxfZXBvX2xvY2tfYWN0aXZlKQotCQlfX3Jma2ls bF9zd2l0Y2hfYWxsKHR5cGUsIGJsb2NrZWQpOwotCi0JbXV0ZXhfdW5sb2NrKCZyZmtpbGxfZ2xv YmFsX211dGV4KTsKLX0KLQotLyoqCi0gKiByZmtpbGxfZXBvIC0gZW1lcmdlbmN5IHBvd2VyIG9m ZiBhbGwgdHJhbnNtaXR0ZXJzCi0gKgotICogVGhpcyBraWNrcyBhbGwgbm9uLXN1c3BlbmRlZCBy ZmtpbGwgZGV2aWNlcyB0byBSRktJTExfU1RBVEVfU09GVF9CTE9DS0VELAotICogaWdub3Jpbmcg ZXZlcnl0aGluZyBpbiBpdHMgcGF0aCBidXQgcmZraWxsX2dsb2JhbF9tdXRleCBhbmQgcmZraWxs LT5tdXRleC4KLSAqCi0gKiBUaGUgZ2xvYmFsIHN0YXRlIGJlZm9yZSB0aGUgRVBPIGlzIHNhdmVk IGFuZCBjYW4gYmUgcmVzdG9yZWQgbGF0ZXIKLSAqIHVzaW5nIHJma2lsbF9yZXN0b3JlX3N0YXRl cygpLgotICovCi12b2lkIHJma2lsbF9lcG8odm9pZCkKLXsKLQlzdHJ1Y3QgcmZraWxsICpyZmtp bGw7Ci0JaW50IGk7Ci0KLQlpZiAoYXRvbWljX3JlYWQoJnJma2lsbF9pbnB1dF9kaXNhYmxlZCkp Ci0JCXJldHVybjsKLQotCW11dGV4X2xvY2soJnJma2lsbF9nbG9iYWxfbXV0ZXgpOwotCi0JcmZr aWxsX2Vwb19sb2NrX2FjdGl2ZSA9IHRydWU7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShyZmtpbGws ICZyZmtpbGxfbGlzdCwgbm9kZSkKLQkJcmZraWxsX3NldF9ibG9jayhyZmtpbGwsIHRydWUpOwot Ci0JZm9yIChpID0gMDsgaSA8IE5VTV9SRktJTExfVFlQRVM7IGkrKykgewotCQlyZmtpbGxfZ2xv YmFsX3N0YXRlc1tpXS5zYXYgPSByZmtpbGxfZ2xvYmFsX3N0YXRlc1tpXS5jdXI7Ci0JCXJma2ls bF9nbG9iYWxfc3RhdGVzW2ldLmN1ciA9IHRydWU7Ci0JfQotCi0JbXV0ZXhfdW5sb2NrKCZyZmtp bGxfZ2xvYmFsX211dGV4KTsKLX0KLQotLyoqCi0gKiByZmtpbGxfcmVzdG9yZV9zdGF0ZXMgLSBy ZXN0b3JlIGdsb2JhbCBzdGF0ZXMKLSAqCi0gKiBSZXN0b3JlIChhbmQgc3luYyBzd2l0Y2hlcyB0 bykgdGhlIGdsb2JhbCBzdGF0ZSBmcm9tIHRoZQotICogc3RhdGVzIGluIHJma2lsbF9kZWZhdWx0 X3N0YXRlcy4gIFRoaXMgY2FuIHVuZG8gdGhlIGVmZmVjdHMgb2YKLSAqIGEgY2FsbCB0byByZmtp bGxfZXBvKCkuCi0gKi8KLXZvaWQgcmZraWxsX3Jlc3RvcmVfc3RhdGVzKHZvaWQpCi17Ci0JaW50 IGk7Ci0KLQlpZiAoYXRvbWljX3JlYWQoJnJma2lsbF9pbnB1dF9kaXNhYmxlZCkpCi0JCXJldHVy bjsKLQotCW11dGV4X2xvY2soJnJma2lsbF9nbG9iYWxfbXV0ZXgpOwotCi0JcmZraWxsX2Vwb19s b2NrX2FjdGl2ZSA9IGZhbHNlOwotCWZvciAoaSA9IDA7IGkgPCBOVU1fUkZLSUxMX1RZUEVTOyBp KyspCi0JCV9fcmZraWxsX3N3aXRjaF9hbGwoaSwgcmZraWxsX2dsb2JhbF9zdGF0ZXNbaV0uc2F2 KTsKLQltdXRleF91bmxvY2soJnJma2lsbF9nbG9iYWxfbXV0ZXgpOwotfQotCi0vKioKLSAqIHJm a2lsbF9yZW1vdmVfZXBvX2xvY2sgLSB1bmxvY2sgc3RhdGUgY2hhbmdlcwotICoKLSAqIFVzZWQg YnkgcmZraWxsLWlucHV0IG1hbnVhbGx5IHVubG9jayBzdGF0ZSBjaGFuZ2VzLCB3aGVuCi0gKiB0 aGUgRVBPIHN3aXRjaCBpcyBkZWFjdGl2YXRlZC4KLSAqLwotdm9pZCByZmtpbGxfcmVtb3ZlX2Vw b19sb2NrKHZvaWQpCi17Ci0JaWYgKGF0b21pY19yZWFkKCZyZmtpbGxfaW5wdXRfZGlzYWJsZWQp KQotCQlyZXR1cm47Ci0KLQltdXRleF9sb2NrKCZyZmtpbGxfZ2xvYmFsX211dGV4KTsKLQlyZmtp bGxfZXBvX2xvY2tfYWN0aXZlID0gZmFsc2U7Ci0JbXV0ZXhfdW5sb2NrKCZyZmtpbGxfZ2xvYmFs X211dGV4KTsKLX0KLQotLyoqCi0gKiByZmtpbGxfaXNfZXBvX2xvY2tfYWN0aXZlIC0gcmV0dXJu cyB0cnVlIEVQTyBpcyBhY3RpdmUKLSAqCi0gKiBSZXR1cm5zIDAgKGZhbHNlKSBpZiB0aGVyZSBp cyBOT1QgYW4gYWN0aXZlIEVQTyBjb250aWRpb24sCi0gKiBhbmQgMSAodHJ1ZSkgaWYgdGhlcmUg aXMgYW4gYWN0aXZlIEVQTyBjb250aXRpb24sIHdoaWNoCi0gKiBsb2NrcyBhbGwgcmFkaW9zIGlu IG9uZSBvZiB0aGUgQkxPQ0tFRCBzdGF0ZXMuCi0gKgotICogQ2FuIGJlIGNhbGxlZCBpbiBhdG9t aWMgY29udGV4dC4KLSAqLwotYm9vbCByZmtpbGxfaXNfZXBvX2xvY2tfYWN0aXZlKHZvaWQpCi17 Ci0JcmV0dXJuIHJma2lsbF9lcG9fbG9ja19hY3RpdmU7Ci19Ci0KLS8qKgotICogcmZraWxsX2dl dF9nbG9iYWxfc3dfc3RhdGUgLSByZXR1cm5zIGdsb2JhbCBzdGF0ZSBmb3IgYSB0eXBlCi0gKiBA dHlwZTogdGhlIHR5cGUgdG8gZ2V0IHRoZSBnbG9iYWwgc3RhdGUgb2YKLSAqCi0gKiBSZXR1cm5z IHRoZSBjdXJyZW50IGdsb2JhbCBzdGF0ZSBmb3IgYSBnaXZlbiB3aXJlbGVzcwotICogZGV2aWNl IHR5cGUuCi0gKi8KLWJvb2wgcmZraWxsX2dldF9nbG9iYWxfc3dfc3RhdGUoY29uc3QgZW51bSBy ZmtpbGxfdHlwZSB0eXBlKQotewotCXJldHVybiByZmtpbGxfZ2xvYmFsX3N0YXRlc1t0eXBlXS5j dXI7Ci19Ci0jZW5kaWYKLQotCiBib29sIHJma2lsbF9zZXRfaHdfc3RhdGUoc3RydWN0IHJma2ls bCAqcmZraWxsLCBib29sIGJsb2NrZWQpCiB7CiAJYm9vbCByZXQsIGNoYW5nZTsKQEAgLTk1MCwx MyArODAzLDYgQEAgaW50IF9fbXVzdF9jaGVjayByZmtpbGxfcmVnaXN0ZXIoc3RydWN0IHJma2ls bCAqcmZraWxsKQogCiAJaWYgKCFyZmtpbGwtPnBlcnNpc3RlbnQgfHwgcmZraWxsX2Vwb19sb2Nr X2FjdGl2ZSkgewogCQlzY2hlZHVsZV93b3JrKCZyZmtpbGwtPnN5bmNfd29yayk7Ci0JfSBlbHNl IHsKLSNpZmRlZiBDT05GSUdfUkZLSUxMX0lOUFVUCi0JCWJvb2wgc29mdF9ibG9ja2VkID0gISEo cmZraWxsLT5zdGF0ZSAmIFJGS0lMTF9CTE9DS19TVyk7Ci0KLQkJaWYgKCFhdG9taWNfcmVhZCgm cmZraWxsX2lucHV0X2Rpc2FibGVkKSkKLQkJCV9fcmZraWxsX3N3aXRjaF9hbGwocmZraWxsLT50 eXBlLCBzb2Z0X2Jsb2NrZWQpOwotI2VuZGlmCiAJfQogCiAJcmZraWxsX3NlbmRfZXZlbnRzKHJm a2lsbCwgUkZLSUxMX09QX0FERCk7CkBAIC0xMTc5LDQzICsxMDI1LDExIEBAIHN0YXRpYyBpbnQg cmZraWxsX2ZvcF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxl KQogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShldiwgdG1wLCAmZGF0YS0+ZXZlbnRzLCBsaXN0 KQogCQlrZnJlZShldik7CiAKLSNpZmRlZiBDT05GSUdfUkZLSUxMX0lOUFVUCi0JaWYgKGRhdGEt PmlucHV0X2hhbmRsZXIpCi0JCWlmIChhdG9taWNfZGVjX3JldHVybigmcmZraWxsX2lucHV0X2Rp c2FibGVkKSA9PSAwKQotCQkJcHJpbnRrKEtFUk5fREVCVUcgInJma2lsbDogaW5wdXQgaGFuZGxl ciBlbmFibGVkXG4iKTsKLSNlbmRpZgotCiAJa2ZyZWUoZGF0YSk7CiAKIAlyZXR1cm4gMDsKIH0K IAotI2lmZGVmIENPTkZJR19SRktJTExfSU5QVVQKLXN0YXRpYyBsb25nIHJma2lsbF9mb3BfaW9j dGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsCi0JCQkgICAgIHVuc2lnbmVk IGxvbmcgYXJnKQotewotCXN0cnVjdCByZmtpbGxfZGF0YSAqZGF0YSA9IGZpbGUtPnByaXZhdGVf ZGF0YTsKLQotCWlmIChfSU9DX1RZUEUoY21kKSAhPSBSRktJTExfSU9DX01BR0lDKQotCQlyZXR1 cm4gLUVOT1NZUzsKLQotCWlmIChfSU9DX05SKGNtZCkgIT0gUkZLSUxMX0lPQ19OT0lOUFVUKQot CQlyZXR1cm4gLUVOT1NZUzsKLQotCW11dGV4X2xvY2soJmRhdGEtPm10eCk7Ci0KLQlpZiAoIWRh dGEtPmlucHV0X2hhbmRsZXIpIHsKLQkJaWYgKGF0b21pY19pbmNfcmV0dXJuKCZyZmtpbGxfaW5w dXRfZGlzYWJsZWQpID09IDEpCi0JCQlwcmludGsoS0VSTl9ERUJVRyAicmZraWxsOiBpbnB1dCBo YW5kbGVyIGRpc2FibGVkXG4iKTsKLQkJZGF0YS0+aW5wdXRfaGFuZGxlciA9IHRydWU7Ci0JfQot Ci0JbXV0ZXhfdW5sb2NrKCZkYXRhLT5tdHgpOwotCi0JcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQog c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmZraWxsX2ZvcHMgPSB7CiAJLm93 bmVyCQk9IFRISVNfTU9EVUxFLAogCS5vcGVuCQk9IHJma2lsbF9mb3Bfb3BlbiwKQEAgLTEyMjMs MTAgKzEwMzcsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyByZmtpbGxf Zm9wcyA9IHsKIAkud3JpdGUJCT0gcmZraWxsX2ZvcF93cml0ZSwKIAkucG9sbAkJPSByZmtpbGxf Zm9wX3BvbGwsCiAJLnJlbGVhc2UJPSByZmtpbGxfZm9wX3JlbGVhc2UsCi0jaWZkZWYgQ09ORklH X1JGS0lMTF9JTlBVVAotCS51bmxvY2tlZF9pb2N0bAk9IHJma2lsbF9mb3BfaW9jdGwsCi0JLmNv bXBhdF9pb2N0bAk9IHJma2lsbF9mb3BfaW9jdGwsCi0jZW5kaWYKIAkubGxzZWVrCQk9IG5vX2xs c2VlaywKIH07CiAKQEAgLTEyNTQsMTUgKzEwNjQsNiBAQCBzdGF0aWMgaW50IF9faW5pdCByZmtp bGxfaW5pdCh2b2lkKQogCQlnb3RvIG91dDsKIAl9CiAKLSNpZmRlZiBDT05GSUdfUkZLSUxMX0lO UFVUCi0JZXJyb3IgPSByZmtpbGxfaGFuZGxlcl9pbml0KCk7Ci0JaWYgKGVycm9yKSB7Ci0JCW1p c2NfZGVyZWdpc3RlcigmcmZraWxsX21pc2NkZXYpOwotCQljbGFzc191bnJlZ2lzdGVyKCZyZmtp bGxfY2xhc3MpOwotCQlnb3RvIG91dDsKLQl9Ci0jZW5kaWYKLQogIG91dDoKIAlyZXR1cm4gZXJy b3I7CiB9CkBAIC0xMjcwLDkgKzEwNzEsNiBAQCBzdWJzeXNfaW5pdGNhbGwocmZraWxsX2luaXQp OwogCiBzdGF0aWMgdm9pZCBfX2V4aXQgcmZraWxsX2V4aXQodm9pZCkKIHsKLSNpZmRlZiBDT05G SUdfUkZLSUxMX0lOUFVUCi0JcmZraWxsX2hhbmRsZXJfZXhpdCgpOwotI2VuZGlmCiAJbWlzY19k ZXJlZ2lzdGVyKCZyZmtpbGxfbWlzY2Rldik7CiAJY2xhc3NfdW5yZWdpc3RlcigmcmZraWxsX2Ns YXNzKTsKIH0KZGlmZiAtLWdpdCBhL25ldC9yZmtpbGwvaW5wdXQuYyBiL25ldC9yZmtpbGwvaW5w dXQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjYTZkNC4uMDAwMDAwMAotLS0g YS9uZXQvcmZraWxsL2lucHV0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNTAgKzAsMCBAQAotLyoK LSAqIElucHV0IGxheWVyIHRvIFJGIEtpbGwgaW50ZXJmYWNlIGNvbm5lY3RvcgotICoKLSAqIENv cHlyaWdodCAoYykgMjAwNyBEbWl0cnkgVG9yb2tob3YKLSAqIENvcHlyaWdodCAyMDA5IEpvaGFu bmVzIEJlcmcgPGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+Ci0gKgotICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQKLSAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAyIGFzIHB1Ymxpc2hlZAotICogYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KLSAqCi0gKiBJZiB5b3UgZXZlciBydW4gaW50byBhIHNpdHVhdGlvbiBpbiB3aGljaCB5b3Ug aGF2ZSBhIFNXXyB0eXBlIHJma2lsbAotICogaW5wdXQgZGV2aWNlLCB0aGVuIHlvdSBjYW4gcmV2 aXZlIGNvZGUgdGhhdCB3YXMgcmVtb3ZlZCBpbiB0aGUgcGF0Y2gKLSAqICJyZmtpbGwtaW5wdXQ6 IHJlbW92ZSB1bnVzZWQgY29kZSIuCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+Ci0j aW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgotI2lu Y2x1ZGUgPGxpbnV4L2luaXQuaD4KLSNpbmNsdWRlIDxsaW51eC9yZmtpbGwuaD4KLSNpbmNsdWRl IDxsaW51eC9zY2hlZC5oPgotCi0jaW5jbHVkZSAicmZraWxsLmgiCi0KLWVudW0gcmZraWxsX2lu cHV0X21hc3Rlcl9tb2RlIHsKLQlSRktJTExfSU5QVVRfTUFTVEVSX1VOTE9DSyA9IDAsCi0JUkZL SUxMX0lOUFVUX01BU1RFUl9SRVNUT1JFID0gMSwKLQlSRktJTExfSU5QVVRfTUFTVEVSX1VOQkxP Q0tBTEwgPSAyLAotCU5VTV9SRktJTExfSU5QVVRfTUFTVEVSX01PREVTCi19OwotCi0vKiBEZWxh eSAoaW4gbXMpIGJldHdlZW4gY29uc2VjdXRpdmUgc3dpdGNoIG9wcyAqLwotI2RlZmluZSBSRktJ TExfT1BTX0RFTEFZIDIwMAotCi1zdGF0aWMgZW51bSByZmtpbGxfaW5wdXRfbWFzdGVyX21vZGUg cmZraWxsX21hc3Rlcl9zd2l0Y2hfbW9kZSA9Ci0JCQkJCVJGS0lMTF9JTlBVVF9NQVNURVJfVU5C TE9DS0FMTDsKLW1vZHVsZV9wYXJhbV9uYW1lZChtYXN0ZXJfc3dpdGNoX21vZGUsIHJma2lsbF9t YXN0ZXJfc3dpdGNoX21vZGUsIHVpbnQsIDApOwotTU9EVUxFX1BBUk1fREVTQyhtYXN0ZXJfc3dp dGNoX21vZGUsCi0JIlNXX1JGS0lMTF9BTEwgT04gc2hvdWxkOiAwPWRvIG5vdGhpbmcgKG9ubHkg dW5sb2NrKTsgMT1yZXN0b3JlOyAyPXVuYmxvY2sgYWxsIik7Ci0KLXN0YXRpYyBzcGlubG9ja190 IHJma2lsbF9vcF9sb2NrOwotc3RhdGljIGJvb2wgcmZraWxsX29wX3BlbmRpbmc7Ci1zdGF0aWMg dW5zaWduZWQgbG9uZyByZmtpbGxfc3dfcGVuZGluZ1tCSVRTX1RPX0xPTkdTKE5VTV9SRktJTExf VFlQRVMpXTsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIHJma2lsbF9zd19zdGF0ZVtCSVRTX1RPX0xP TkdTKE5VTV9SRktJTExfVFlQRVMpXTsKLQotZW51bSByZmtpbGxfc2NoZWRfb3AgewotCVJGS0lM TF9HTE9CQUxfT1BfRVBPID0gMCwKLQlSRktJTExfR0xPQkFMX09QX1JFU1RPUkUsCi0JUkZLSUxM X0dMT0JBTF9PUF9VTkxPQ0ssCi0JUkZLSUxMX0dMT0JBTF9PUF9VTkJMT0NLLAotfTsKLQotc3Rh dGljIGVudW0gcmZraWxsX3NjaGVkX29wIHJma2lsbF9tYXN0ZXJfc3dpdGNoX29wOwotc3RhdGlj IGVudW0gcmZraWxsX3NjaGVkX29wIHJma2lsbF9vcDsKLQotc3RhdGljIHZvaWQgX19yZmtpbGxf aGFuZGxlX2dsb2JhbF9vcChlbnVtIHJma2lsbF9zY2hlZF9vcCBvcCkKLXsKLQl1bnNpZ25lZCBp bnQgaTsKLQotCXN3aXRjaCAob3ApIHsKLQljYXNlIFJGS0lMTF9HTE9CQUxfT1BfRVBPOgotCQly ZmtpbGxfZXBvKCk7Ci0JCWJyZWFrOwotCWNhc2UgUkZLSUxMX0dMT0JBTF9PUF9SRVNUT1JFOgot CQlyZmtpbGxfcmVzdG9yZV9zdGF0ZXMoKTsKLQkJYnJlYWs7Ci0JY2FzZSBSRktJTExfR0xPQkFM X09QX1VOTE9DSzoKLQkJcmZraWxsX3JlbW92ZV9lcG9fbG9jaygpOwotCQlicmVhazsKLQljYXNl IFJGS0lMTF9HTE9CQUxfT1BfVU5CTE9DSzoKLQkJcmZraWxsX3JlbW92ZV9lcG9fbG9jaygpOwot CQlmb3IgKGkgPSAwOyBpIDwgTlVNX1JGS0lMTF9UWVBFUzsgaSsrKQotCQkJcmZraWxsX3N3aXRj aF9hbGwoaSwgZmFsc2UpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQkvKiBtZW1vcnkgY29ycnVw dGlvbiBvciBidWcsIGZhaWwgc2FmZWx5ICovCi0JCXJma2lsbF9lcG8oKTsKLQkJV0FSTigxLCAi VW5rbm93biByZXF1ZXN0ZWQgb3BlcmF0aW9uICVkISAiCi0JCQkicmZraWxsIEVtZXJnZW5jeSBQ b3dlciBPZmYgYWN0aXZhdGVkXG4iLAotCQkJb3ApOwotCX0KLX0KLQotc3RhdGljIHZvaWQgX19y ZmtpbGxfaGFuZGxlX25vcm1hbF9vcChjb25zdCBlbnVtIHJma2lsbF90eXBlIHR5cGUsCi0JCQkJ ICAgICAgY29uc3QgYm9vbCBjb21wbGVtZW50KQotewotCWJvb2wgYmxvY2tlZDsKLQotCWJsb2Nr ZWQgPSByZmtpbGxfZ2V0X2dsb2JhbF9zd19zdGF0ZSh0eXBlKTsKLQlpZiAoY29tcGxlbWVudCkK LQkJYmxvY2tlZCA9ICFibG9ja2VkOwotCi0JcmZraWxsX3N3aXRjaF9hbGwodHlwZSwgYmxvY2tl ZCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJma2lsbF9vcF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKLXsKLQl1bnNpZ25lZCBpbnQgaTsKLQlib29sIGM7Ci0KLQlzcGluX2xvY2tfaXJx KCZyZmtpbGxfb3BfbG9jayk7Ci0JZG8gewotCQlpZiAocmZraWxsX29wX3BlbmRpbmcpIHsKLQkJ CWVudW0gcmZraWxsX3NjaGVkX29wIG9wID0gcmZraWxsX29wOwotCQkJcmZraWxsX29wX3BlbmRp bmcgPSBmYWxzZTsKLQkJCW1lbXNldChyZmtpbGxfc3dfcGVuZGluZywgMCwKLQkJCQlzaXplb2Yo cmZraWxsX3N3X3BlbmRpbmcpKTsKLQkJCXNwaW5fdW5sb2NrX2lycSgmcmZraWxsX29wX2xvY2sp OwotCi0JCQlfX3Jma2lsbF9oYW5kbGVfZ2xvYmFsX29wKG9wKTsKLQotCQkJc3Bpbl9sb2NrX2ly cSgmcmZraWxsX29wX2xvY2spOwotCi0JCQkvKgotCQkJICogaGFuZGxlIGdsb2JhbCBvcHMgZmly c3QgLS0gZHVyaW5nIHVubG9ja2VkIHBlcmlvZAotCQkJICogd2UgbWlnaHQgaGF2ZSBnb3R0ZW4g YSBuZXcgZ2xvYmFsIG9wLgotCQkJICovCi0JCQlpZiAocmZraWxsX29wX3BlbmRpbmcpCi0JCQkJ Y29udGludWU7Ci0JCX0KLQotCQlpZiAocmZraWxsX2lzX2Vwb19sb2NrX2FjdGl2ZSgpKQotCQkJ Y29udGludWU7Ci0KLQkJZm9yIChpID0gMDsgaSA8IE5VTV9SRktJTExfVFlQRVM7IGkrKykgewot CQkJaWYgKF9fdGVzdF9hbmRfY2xlYXJfYml0KGksIHJma2lsbF9zd19wZW5kaW5nKSkgewotCQkJ CWMgPSBfX3Rlc3RfYW5kX2NsZWFyX2JpdChpLCByZmtpbGxfc3dfc3RhdGUpOwotCQkJCXNwaW5f dW5sb2NrX2lycSgmcmZraWxsX29wX2xvY2spOwotCi0JCQkJX19yZmtpbGxfaGFuZGxlX25vcm1h bF9vcChpLCBjKTsKLQotCQkJCXNwaW5fbG9ja19pcnEoJnJma2lsbF9vcF9sb2NrKTsKLQkJCX0K LQkJfQotCX0gd2hpbGUgKHJma2lsbF9vcF9wZW5kaW5nKTsKLQlzcGluX3VubG9ja19pcnEoJnJm a2lsbF9vcF9sb2NrKTsKLX0KLQotc3RhdGljIERFQ0xBUkVfREVMQVlFRF9XT1JLKHJma2lsbF9v cF93b3JrLCByZmtpbGxfb3BfaGFuZGxlcik7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyByZmtpbGxf bGFzdF9zY2hlZHVsZWQ7Ci0KLXN0YXRpYyB1bnNpZ25lZCBsb25nIHJma2lsbF9yYXRlbGltaXQo Y29uc3QgdW5zaWduZWQgbG9uZyBsYXN0KQotewotCWNvbnN0IHVuc2lnbmVkIGxvbmcgZGVsYXkg PSBtc2Vjc190b19qaWZmaWVzKFJGS0lMTF9PUFNfREVMQVkpOwotCXJldHVybiB0aW1lX2FmdGVy KGppZmZpZXMsIGxhc3QgKyBkZWxheSkgPyAwIDogZGVsYXk7Ci19Ci0KLXN0YXRpYyB2b2lkIHJm a2lsbF9zY2hlZHVsZV9yYXRlbGltaXRlZCh2b2lkKQotewotCWlmIChkZWxheWVkX3dvcmtfcGVu ZGluZygmcmZraWxsX29wX3dvcmspKQotCQlyZXR1cm47Ci0Jc2NoZWR1bGVfZGVsYXllZF93b3Jr KCZyZmtpbGxfb3Bfd29yaywKLQkJCSAgICAgIHJma2lsbF9yYXRlbGltaXQocmZraWxsX2xhc3Rf c2NoZWR1bGVkKSk7Ci0JcmZraWxsX2xhc3Rfc2NoZWR1bGVkID0gamlmZmllczsKLX0KLQotc3Rh dGljIHZvaWQgcmZraWxsX3NjaGVkdWxlX2dsb2JhbF9vcChlbnVtIHJma2lsbF9zY2hlZF9vcCBv cCkKLXsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJnJma2ls bF9vcF9sb2NrLCBmbGFncyk7Ci0JcmZraWxsX29wID0gb3A7Ci0JcmZraWxsX29wX3BlbmRpbmcg PSB0cnVlOwotCWlmIChvcCA9PSBSRktJTExfR0xPQkFMX09QX0VQTyAmJiAhcmZraWxsX2lzX2Vw b19sb2NrX2FjdGl2ZSgpKSB7Ci0JCS8qIGJ5cGFzcyB0aGUgbGltaXRlciBmb3IgRVBPICovCi0J CWNhbmNlbF9kZWxheWVkX3dvcmsoJnJma2lsbF9vcF93b3JrKTsKLQkJc2NoZWR1bGVfZGVsYXll ZF93b3JrKCZyZmtpbGxfb3Bfd29yaywgMCk7Ci0JCXJma2lsbF9sYXN0X3NjaGVkdWxlZCA9IGpp ZmZpZXM7Ci0JfSBlbHNlCi0JCXJma2lsbF9zY2hlZHVsZV9yYXRlbGltaXRlZCgpOwotCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnJma2lsbF9vcF9sb2NrLCBmbGFncyk7Ci19Ci0KLXN0YXRpYyB2 b2lkIHJma2lsbF9zY2hlZHVsZV90b2dnbGUoZW51bSByZmtpbGxfdHlwZSB0eXBlKQotewotCXVu c2lnbmVkIGxvbmcgZmxhZ3M7Ci0KLQlpZiAocmZraWxsX2lzX2Vwb19sb2NrX2FjdGl2ZSgpKQot CQlyZXR1cm47Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmcmZraWxsX29wX2xvY2ssIGZsYWdzKTsK LQlpZiAoIXJma2lsbF9vcF9wZW5kaW5nKSB7Ci0JCV9fc2V0X2JpdCh0eXBlLCByZmtpbGxfc3df cGVuZGluZyk7Ci0JCV9fY2hhbmdlX2JpdCh0eXBlLCByZmtpbGxfc3dfc3RhdGUpOwotCQlyZmtp bGxfc2NoZWR1bGVfcmF0ZWxpbWl0ZWQoKTsKLQl9Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm cmZraWxsX29wX2xvY2ssIGZsYWdzKTsKLX0KLQotc3RhdGljIHZvaWQgcmZraWxsX3NjaGVkdWxl X2V2c3dfcmZraWxsYWxsKGludCBzdGF0ZSkKLXsKLQlpZiAoc3RhdGUpCi0JCXJma2lsbF9zY2hl ZHVsZV9nbG9iYWxfb3AocmZraWxsX21hc3Rlcl9zd2l0Y2hfb3ApOwotCWVsc2UKLQkJcmZraWxs X3NjaGVkdWxlX2dsb2JhbF9vcChSRktJTExfR0xPQkFMX09QX0VQTyk7Ci19Ci0KLXN0YXRpYyB2 b2lkIHJma2lsbF9ldmVudChzdHJ1Y3QgaW5wdXRfaGFuZGxlICpoYW5kbGUsIHVuc2lnbmVkIGlu dCB0eXBlLAotCQkJdW5zaWduZWQgaW50IGNvZGUsIGludCBkYXRhKQotewotCWlmICh0eXBlID09 IEVWX0tFWSAmJiBkYXRhID09IDEpIHsKLQkJc3dpdGNoIChjb2RlKSB7Ci0JCWNhc2UgS0VZX1dM QU46Ci0JCQlyZmtpbGxfc2NoZWR1bGVfdG9nZ2xlKFJGS0lMTF9UWVBFX1dMQU4pOwotCQkJYnJl YWs7Ci0JCWNhc2UgS0VZX0JMVUVUT09USDoKLQkJCXJma2lsbF9zY2hlZHVsZV90b2dnbGUoUkZL SUxMX1RZUEVfQkxVRVRPT1RIKTsKLQkJCWJyZWFrOwotCQljYXNlIEtFWV9VV0I6Ci0JCQlyZmtp bGxfc2NoZWR1bGVfdG9nZ2xlKFJGS0lMTF9UWVBFX1VXQik7Ci0JCQlicmVhazsKLQkJY2FzZSBL RVlfV0lNQVg6Ci0JCQlyZmtpbGxfc2NoZWR1bGVfdG9nZ2xlKFJGS0lMTF9UWVBFX1dJTUFYKTsK LQkJCWJyZWFrOwotCQljYXNlIEtFWV9SRktJTEw6Ci0JCQlyZmtpbGxfc2NoZWR1bGVfdG9nZ2xl KFJGS0lMTF9UWVBFX0FMTCk7Ci0JCQlicmVhazsKLQkJfQotCX0gZWxzZSBpZiAodHlwZSA9PSBF Vl9TVyAmJiBjb2RlID09IFNXX1JGS0lMTF9BTEwpCi0JCXJma2lsbF9zY2hlZHVsZV9ldnN3X3Jm a2lsbGFsbChkYXRhKTsKLX0KLQotc3RhdGljIGludCByZmtpbGxfY29ubmVjdChzdHJ1Y3QgaW5w dXRfaGFuZGxlciAqaGFuZGxlciwgc3RydWN0IGlucHV0X2RldiAqZGV2LAotCQkJICBjb25zdCBz dHJ1Y3QgaW5wdXRfZGV2aWNlX2lkICppZCkKLXsKLQlzdHJ1Y3QgaW5wdXRfaGFuZGxlICpoYW5k bGU7Ci0JaW50IGVycm9yOwotCi0JaGFuZGxlID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGlucHV0 X2hhbmRsZSksIEdGUF9LRVJORUwpOwotCWlmICghaGFuZGxlKQotCQlyZXR1cm4gLUVOT01FTTsK LQotCWhhbmRsZS0+ZGV2ID0gZGV2OwotCWhhbmRsZS0+aGFuZGxlciA9IGhhbmRsZXI7Ci0JaGFu ZGxlLT5uYW1lID0gInJma2lsbCI7Ci0KLQkvKiBjYXVzZXMgcmZraWxsX3N0YXJ0KCkgdG8gYmUg Y2FsbGVkICovCi0JZXJyb3IgPSBpbnB1dF9yZWdpc3Rlcl9oYW5kbGUoaGFuZGxlKTsKLQlpZiAo ZXJyb3IpCi0JCWdvdG8gZXJyX2ZyZWVfaGFuZGxlOwotCi0JZXJyb3IgPSBpbnB1dF9vcGVuX2Rl dmljZShoYW5kbGUpOwotCWlmIChlcnJvcikKLQkJZ290byBlcnJfdW5yZWdpc3Rlcl9oYW5kbGU7 Ci0KLQlyZXR1cm4gMDsKLQotIGVycl91bnJlZ2lzdGVyX2hhbmRsZToKLQlpbnB1dF91bnJlZ2lz dGVyX2hhbmRsZShoYW5kbGUpOwotIGVycl9mcmVlX2hhbmRsZToKLQlrZnJlZShoYW5kbGUpOwot CXJldHVybiBlcnJvcjsKLX0KLQotc3RhdGljIHZvaWQgcmZraWxsX3N0YXJ0KHN0cnVjdCBpbnB1 dF9oYW5kbGUgKmhhbmRsZSkKLXsKLQkvKgotCSAqIFRha2UgZXZlbnRfbG9jayB0byBndWFyZCBh Z2FpbnN0IGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgd2UKLQkgKiBzaG91bGQgYmUgYWJsZSB0byBk ZWFsIHdpdGggY29uY3VycmVuY3kgd2l0aCByZmtpbGxfZXZlbnQoKQotCSAqIGp1c3QgZmluZSAo d2hpY2ggZXZlbnRfbG9jayB3aWxsIGFsc28gYXZvaWQpLgotCSAqLwotCXNwaW5fbG9ja19pcnEo JmhhbmRsZS0+ZGV2LT5ldmVudF9sb2NrKTsKLQotCWlmICh0ZXN0X2JpdChFVl9TVywgaGFuZGxl LT5kZXYtPmV2Yml0KSAmJgotCSAgICB0ZXN0X2JpdChTV19SRktJTExfQUxMLCBoYW5kbGUtPmRl di0+c3diaXQpKQotCQlyZmtpbGxfc2NoZWR1bGVfZXZzd19yZmtpbGxhbGwodGVzdF9iaXQoU1df UkZLSUxMX0FMTCwKLQkJCQkJCQloYW5kbGUtPmRldi0+c3cpKTsKLQotCXNwaW5fdW5sb2NrX2ly cSgmaGFuZGxlLT5kZXYtPmV2ZW50X2xvY2spOwotfQotCi1zdGF0aWMgdm9pZCByZmtpbGxfZGlz Y29ubmVjdChzdHJ1Y3QgaW5wdXRfaGFuZGxlICpoYW5kbGUpCi17Ci0JaW5wdXRfY2xvc2VfZGV2 aWNlKGhhbmRsZSk7Ci0JaW5wdXRfdW5yZWdpc3Rlcl9oYW5kbGUoaGFuZGxlKTsKLQlrZnJlZSho YW5kbGUpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGlucHV0X2RldmljZV9pZCByZmtpbGxf aWRzW10gPSB7Ci0JewotCQkuZmxhZ3MgPSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfRVZCSVQgfCBJ TlBVVF9ERVZJQ0VfSURfTUFUQ0hfS0VZQklULAotCQkuZXZiaXQgPSB7IEJJVF9NQVNLKEVWX0tF WSkgfSwKLQkJLmtleWJpdCA9IHsgW0JJVF9XT1JEKEtFWV9XTEFOKV0gPSBCSVRfTUFTSyhLRVlf V0xBTikgfSwKLQl9LAotCXsKLQkJLmZsYWdzID0gSU5QVVRfREVWSUNFX0lEX01BVENIX0VWQklU IHwgSU5QVVRfREVWSUNFX0lEX01BVENIX0tFWUJJVCwKLQkJLmV2Yml0ID0geyBCSVRfTUFTSyhF Vl9LRVkpIH0sCi0JCS5rZXliaXQgPSB7IFtCSVRfV09SRChLRVlfQkxVRVRPT1RIKV0gPSBCSVRf TUFTSyhLRVlfQkxVRVRPT1RIKSB9LAotCX0sCi0JewotCQkuZmxhZ3MgPSBJTlBVVF9ERVZJQ0Vf SURfTUFUQ0hfRVZCSVQgfCBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfS0VZQklULAotCQkuZXZiaXQg PSB7IEJJVF9NQVNLKEVWX0tFWSkgfSwKLQkJLmtleWJpdCA9IHsgW0JJVF9XT1JEKEtFWV9VV0Ip XSA9IEJJVF9NQVNLKEtFWV9VV0IpIH0sCi0JfSwKLQl7Ci0JCS5mbGFncyA9IElOUFVUX0RFVklD RV9JRF9NQVRDSF9FVkJJVCB8IElOUFVUX0RFVklDRV9JRF9NQVRDSF9LRVlCSVQsCi0JCS5ldmJp dCA9IHsgQklUX01BU0soRVZfS0VZKSB9LAotCQkua2V5Yml0ID0geyBbQklUX1dPUkQoS0VZX1dJ TUFYKV0gPSBCSVRfTUFTSyhLRVlfV0lNQVgpIH0sCi0JfSwKLQl7Ci0JCS5mbGFncyA9IElOUFVU X0RFVklDRV9JRF9NQVRDSF9FVkJJVCB8IElOUFVUX0RFVklDRV9JRF9NQVRDSF9LRVlCSVQsCi0J CS5ldmJpdCA9IHsgQklUX01BU0soRVZfS0VZKSB9LAotCQkua2V5Yml0ID0geyBbQklUX1dPUkQo S0VZX1JGS0lMTCldID0gQklUX01BU0soS0VZX1JGS0lMTCkgfSwKLQl9LAotCXsKLQkJLmZsYWdz ID0gSU5QVVRfREVWSUNFX0lEX01BVENIX0VWQklUIHwgSU5QVVRfREVWSUNFX0lEX01BVENIX1NX QklULAotCQkuZXZiaXQgPSB7IEJJVChFVl9TVykgfSwKLQkJLnN3Yml0ID0geyBbQklUX1dPUkQo U1dfUkZLSUxMX0FMTCldID0gQklUX01BU0soU1dfUkZLSUxMX0FMTCkgfSwKLQl9LAotCXsgfQot fTsKLQotc3RhdGljIHN0cnVjdCBpbnB1dF9oYW5kbGVyIHJma2lsbF9oYW5kbGVyID0gewotCS5u YW1lID0JInJma2lsbCIsCi0JLmV2ZW50ID0gcmZraWxsX2V2ZW50LAotCS5jb25uZWN0ID0gcmZr aWxsX2Nvbm5lY3QsCi0JLnN0YXJ0ID0gcmZraWxsX3N0YXJ0LAotCS5kaXNjb25uZWN0ID0gcmZr aWxsX2Rpc2Nvbm5lY3QsCi0JLmlkX3RhYmxlID0gcmZraWxsX2lkcywKLX07Ci0KLWludCBfX2lu aXQgcmZraWxsX2hhbmRsZXJfaW5pdCh2b2lkKQotewotCXN3aXRjaCAocmZraWxsX21hc3Rlcl9z d2l0Y2hfbW9kZSkgewotCWNhc2UgUkZLSUxMX0lOUFVUX01BU1RFUl9VTkJMT0NLQUxMOgotCQly ZmtpbGxfbWFzdGVyX3N3aXRjaF9vcCA9IFJGS0lMTF9HTE9CQUxfT1BfVU5CTE9DSzsKLQkJYnJl YWs7Ci0JY2FzZSBSRktJTExfSU5QVVRfTUFTVEVSX1JFU1RPUkU6Ci0JCXJma2lsbF9tYXN0ZXJf c3dpdGNoX29wID0gUkZLSUxMX0dMT0JBTF9PUF9SRVNUT1JFOwotCQlicmVhazsKLQljYXNlIFJG S0lMTF9JTlBVVF9NQVNURVJfVU5MT0NLOgotCQlyZmtpbGxfbWFzdGVyX3N3aXRjaF9vcCA9IFJG S0lMTF9HTE9CQUxfT1BfVU5MT0NLOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gLUVJ TlZBTDsKLQl9Ci0KLQlzcGluX2xvY2tfaW5pdCgmcmZraWxsX29wX2xvY2spOwotCi0JLyogQXZv aWQgZGVsYXkgYXQgZmlyc3Qgc2NoZWR1bGUgKi8KLQlyZmtpbGxfbGFzdF9zY2hlZHVsZWQgPQot CQkJamlmZmllcyAtIG1zZWNzX3RvX2ppZmZpZXMoUkZLSUxMX09QU19ERUxBWSkgLSAxOwotCXJl dHVybiBpbnB1dF9yZWdpc3Rlcl9oYW5kbGVyKCZyZmtpbGxfaGFuZGxlcik7Ci19Ci0KLXZvaWQg X19leGl0IHJma2lsbF9oYW5kbGVyX2V4aXQodm9pZCkKLXsKLQlpbnB1dF91bnJlZ2lzdGVyX2hh bmRsZXIoJnJma2lsbF9oYW5kbGVyKTsKLQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnJma2ls bF9vcF93b3JrKTsKLX0K --90e6ba53a4a82fe4de04a3625689--