Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756009AbZIVOBH (ORCPT ); Tue, 22 Sep 2009 10:01:07 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753828AbZIVOBG (ORCPT ); Tue, 22 Sep 2009 10:01:06 -0400 Received: from ms01.sssup.it ([193.205.80.99]:40458 "EHLO sssup.it" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751084AbZIVOBC (ORCPT ); Tue, 22 Sep 2009 10:01:02 -0400 Subject: Re: [RFC][PATCH] SCHED_EDF scheduling class From: Raistlin To: Daniel Walker Cc: Peter Zijlstra , claudio@evidence.eu.com, michael@evidence.eu.com, mingo@elte.hu, linux-kernel@vger.kernel.org, tglx@linutronix.de, johan.eker@ericsson.com, p.faure@akatech.ch, Fabio Checconi , Dhaval Giani , Steven Rostedt , Tommaso Cucinotta In-Reply-To: <1253625878.6575.34.camel@desktop> References: <1253615424.20345.76.camel@Palantir> <1253625878.6575.34.camel@desktop> Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-8g5AUViK2znou5rZ9ck2" Date: Tue, 22 Sep 2009 16:01:01 +0200 Message-Id: <1253628061.20345.173.camel@Palantir> Mime-Version: 1.0 X-Mailer: Evolution 2.26.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 76067 Lines: 1029 --=-8g5AUViK2znou5rZ9ck2 Content-Type: multipart/mixed; boundary="=-/XI4EVqIonUd8XNy+Ao+" --=-/XI4EVqIonUd8XNy+Ao+ Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Tue, 2009-09-22 at 06:24 -0700, Daniel Walker wrote: > You've got some type of encoding corruption in your patch, >=20 Oops! Sorry about that... :( > See the =3D20 , and =3D3D above.. I'm not sure exactly how that gets into > patches ;( We require utf8 encodings , some people can handle the stuff > above but most scripts and the patch command won't be able to.=20 > I see. Problem is that last time I sent a patch, I inlined it and it worked without any issue... It seems something has changed either in me or my MUA... Too bad. :-( > I realize > this is an RFC , so the next time you submit this try to make it utf8 .. >=20 You're definitely right and, now that you pointed this out to me, I'm not able to produce a clean version, even if I set utf8 encoding... So, I'm sorry, but, for now, the only thing I can do is attaching the patch, hoping it works. The next one will be stop using Evolution! :-/ Regards and sorry again, Dario --=20 <> (Raistlin Majere) ---------------------------------------------------------------------- Dario Faggioli, ReTiS Lab, Scuola Superiore Sant'Anna, Pisa (Italy) http://blog.linux.it/raistlin / raistlin@ekiga.net / dario.faggioli@jabber.org --=-/XI4EVqIonUd8XNy+Ao+ Content-Disposition: attachment; filename="edf.patch" Content-Type: text/x-patch; name="edf.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3VuaXN0ZC5oIGIvYXJjaC9hcm0vaW5j bHVkZS9hc20vdW5pc3RkLmgNCmluZGV4IDg5ZjdlYWQuLmU4NTE2MjUgMTAwNjQ0DQotLS0gYS9h cmNoL2FybS9pbmNsdWRlL2FzbS91bmlzdGQuaA0KKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20v dW5pc3RkLmgNCkBAIC0zOTEsNiArMzkxLDkgQEANCiAjZGVmaW5lIF9fTlJfcHdyaXRldgkJCShf X05SX1NZU0NBTExfQkFTRSszNjIpDQogI2RlZmluZSBfX05SX3J0X3Rnc2lncXVldWVpbmZvCQko X19OUl9TWVNDQUxMX0JBU0UrMzYzKQ0KICNkZWZpbmUgX19OUl9wZXJmX2V2ZW50X29wZW4JCShf X05SX1NZU0NBTExfQkFTRSszNjQpDQorI2RlZmluZSBfX05SX3NjaGVkX3NldHNjaGVkdWxlcl9l eAkoX19OUl9TWVNDQUxMX0JBU0UrMzY1KQ0KKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRwYXJhbV9l eAkJKF9fTlJfU1lTQ0FMTF9CQVNFKzM2NikNCisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0cGFyYW1f ZXgJCShfX05SX1NZU0NBTExfQkFTRSszNjcpDQogDQogLyoNCiAgKiBUaGUgZm9sbG93aW5nIFNX SXMgYXJlIEFSTSBwcml2YXRlLg0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2tlcm5lbC9jYWxscy5T IGIvYXJjaC9hcm0va2VybmVsL2NhbGxzLlMNCmluZGV4IGZhZmNlMWIuLjQyYWQzNjIgMTAwNjQ0 DQotLS0gYS9hcmNoL2FybS9rZXJuZWwvY2FsbHMuUw0KKysrIGIvYXJjaC9hcm0va2VybmVsL2Nh bGxzLlMNCkBAIC0zNzQsNiArMzc0LDkgQEANCiAJCUNBTEwoc3lzX3B3cml0ZXYpDQogCQlDQUxM KHN5c19ydF90Z3NpZ3F1ZXVlaW5mbykNCiAJCUNBTEwoc3lzX3BlcmZfZXZlbnRfb3BlbikNCisv KiAzNjUgKi8JQ0FMTChzeXNfc2NoZWRfc2V0c2NoZWR1bGVyX2V4KQ0KKwkJQ0FMTChzeXNfc2No ZWRfc2V0cGFyYW1fZXgpDQorCQlDQUxMKHN5c19zY2hlZF9nZXRwYXJhbV9leCkNCiAjaWZuZGVm IHN5c2NhbGxzX2NvdW50ZWQNCiAuZXF1IHN5c2NhbGxzX3BhZGRpbmcsICgoTlJfc3lzY2FsbHMg KyAzKSAmIH4zKSAtIE5SX3N5c2NhbGxzDQogI2RlZmluZSBzeXNjYWxsc19jb3VudGVkDQpkaWZm IC0tZ2l0IGEvYXJjaC94ODYvaWEzMi9pYTMyZW50cnkuUyBiL2FyY2gveDg2L2lhMzIvaWEzMmVu dHJ5LlMNCmluZGV4IDc0NjE5YzQuLmZkZTkyYzIgMTAwNjQ0DQotLS0gYS9hcmNoL3g4Ni9pYTMy L2lhMzJlbnRyeS5TDQorKysgYi9hcmNoL3g4Ni9pYTMyL2lhMzJlbnRyeS5TDQpAQCAtODMyLDQg KzgzMiw3IEBAIGlhMzJfc3lzX2NhbGxfdGFibGU6DQogCS5xdWFkIGNvbXBhdF9zeXNfcHdyaXRl dg0KIAkucXVhZCBjb21wYXRfc3lzX3J0X3Rnc2lncXVldWVpbmZvCS8qIDMzNSAqLw0KIAkucXVh ZCBzeXNfcGVyZl9ldmVudF9vcGVuDQorCS5xdWFkIHN5c19zY2hlZF9zZXRzY2hlZHVsZXJfZXgN CisJLnF1YWQgc3lzX3NjaGVkX3NldHBhcmFtX2V4DQorCS5xdWFkIHN5c19zY2hlZF9nZXRwYXJh bV9leA0KIGlhMzJfc3lzY2FsbF9lbmQ6DQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9h c20vdW5pc3RkXzMyLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91bmlzdGRfMzIuaA0KaW5kZXgg NmZiM2MyMC4uYTgzMTYzZiAxMDA2NDQNCi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuaXN0 ZF8zMi5oDQorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91bmlzdGRfMzIuaA0KQEAgLTM0Miw2 ICszNDIsOSBAQA0KICNkZWZpbmUgX19OUl9wd3JpdGV2CQkzMzQNCiAjZGVmaW5lIF9fTlJfcnRf dGdzaWdxdWV1ZWluZm8JMzM1DQogI2RlZmluZSBfX05SX3BlcmZfZXZlbnRfb3BlbgkzMzYNCisj ZGVmaW5lIF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyX2V4CTMzNw0KKyNkZWZpbmUgX19OUl9zY2hl ZF9zZXRwYXJhbV9leAkzMzgNCisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0cGFyYW1fZXgJMzM5DQog DQogI2lmZGVmIF9fS0VSTkVMX18NCiANCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS91bmlzdGRfNjQuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuaXN0ZF82NC5oDQppbmRleCA4 ZDNhZDBhLi5hMTE4MzFjIDEwMDY0NA0KLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdW5pc3Rk XzY0LmgNCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VuaXN0ZF82NC5oDQpAQCAtNjYxLDYg KzY2MSwxMiBAQCBfX1NZU0NBTEwoX19OUl9wd3JpdGV2LCBzeXNfcHdyaXRldikNCiBfX1NZU0NB TEwoX19OUl9ydF90Z3NpZ3F1ZXVlaW5mbywgc3lzX3J0X3Rnc2lncXVldWVpbmZvKQ0KICNkZWZp bmUgX19OUl9wZXJmX2V2ZW50X29wZW4JCQkyOTgNCiBfX1NZU0NBTEwoX19OUl9wZXJmX2V2ZW50 X29wZW4sIHN5c19wZXJmX2V2ZW50X29wZW4pDQorI2RlZmluZSBfX05SX3NjaGVkX3NldHNjaGVk dWxlcl9leAkJMjk5DQorX19TWVNDQUxMKF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyX2V4LCBzeXNf c2NoZWRfc2V0c2NoZWR1bGVyX2V4KQ0KKyNkZWZpbmUgX19OUl9zY2hlZF9zZXRwYXJhbV9leAkJ MjMwDQorX19TWVNDQUxMKF9fTlJfc2NoZWRfc2V0cGFyYW1fZXgsIHN5c19zY2hlZF9zZXRwYXJh bV9leCkNCisjZGVmaW5lIF9fTlJfc2NoZWRfZ2V0cGFyYW1fZXgJCTIzMQ0KK19fU1lTQ0FMTChf X05SX3NjaGVkX2dldHBhcmFtX2V4LCBzeXNfc2NoZWRfZ2V0cGFyYW1fZXgpDQogDQogI2lmbmRl ZiBfX05PX1NUVUJTDQogI2RlZmluZSBfX0FSQ0hfV0FOVF9PTERfUkVBRERJUg0KZGlmZiAtLWdp dCBhL2FyY2gveDg2L2tlcm5lbC9zeXNjYWxsX3RhYmxlXzMyLlMgYi9hcmNoL3g4Ni9rZXJuZWwv c3lzY2FsbF90YWJsZV8zMi5TDQppbmRleCAwMTU3Y2QyLi4zOGYwNTZjIDEwMDY0NA0KLS0tIGEv YXJjaC94ODYva2VybmVsL3N5c2NhbGxfdGFibGVfMzIuUw0KKysrIGIvYXJjaC94ODYva2VybmVs L3N5c2NhbGxfdGFibGVfMzIuUw0KQEAgLTMzNiwzICszMzYsNiBAQCBFTlRSWShzeXNfY2FsbF90 YWJsZSkNCiAJLmxvbmcgc3lzX3B3cml0ZXYNCiAJLmxvbmcgc3lzX3J0X3Rnc2lncXVldWVpbmZv CS8qIDMzNSAqLw0KIAkubG9uZyBzeXNfcGVyZl9ldmVudF9vcGVuDQorCS5sb25nIHN5c19zY2hl ZF9zZXRzY2hlZHVsZXJfZXgNCisJLmxvbmcgc3lzX3NjaGVkX3NldHBhcmFtX2V4DQorCS5sb25n IHN5c19zY2hlZF9nZXRwYXJhbV9leA0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2NoZWQu aCBiL2luY2x1ZGUvbGludXgvc2NoZWQuaA0KaW5kZXggOGZlMzUxYy4uMjU1NGUwOCAxMDA2NDQN Ci0tLSBhL2luY2x1ZGUvbGludXgvc2NoZWQuaA0KKysrIGIvaW5jbHVkZS9saW51eC9zY2hlZC5o DQpAQCAtMzgsNiArMzgsNyBAQA0KICNkZWZpbmUgU0NIRURfQkFUQ0gJCTMNCiAvKiBTQ0hFRF9J U086IHJlc2VydmVkIGJ1dCBub3QgaW1wbGVtZW50ZWQgeWV0ICovDQogI2RlZmluZSBTQ0hFRF9J RExFCQk1DQorI2RlZmluZSBTQ0hFRF9FREYJCTYNCiAvKiBDYW4gYmUgT1JlZCBpbiB0byBtYWtl IHN1cmUgdGhlIHByb2Nlc3MgaXMgcmV2ZXJ0ZWQgYmFjayB0byBTQ0hFRF9OT1JNQUwgb24gZm9y ayAqLw0KICNkZWZpbmUgU0NIRURfUkVTRVRfT05fRk9SSyAgICAgMHg0MDAwMDAwMA0KIA0KQEAg LTk0LDYgKzk1LDE5IEBAIHN0cnVjdCBzY2hlZF9wYXJhbSB7DQogDQogI2luY2x1ZGUgPGFzbS9w cm9jZXNzb3IuaD4NCiANCisvKg0KKyAqIEZvciBhbiB0eXBpY2FsIEVERiBwZXJpb2RpYyBvciBz cG9yYWRpYyB0YXNrIHdlIG5lZWQgYSBydW50aW1lDQorICogYW5kIHBlcmlvZCAoZXF1YWwgdG8g ZGVhZGxpbmUpIHNwZWNpZmljYXRpb24gaW4gdGhlIHNjaGVkX3BhcmFtDQorICogc3RydWN0dXJl Lg0KKyAqIEhvd2V2ZXIsIHRoZSBvcmlnaW5hbCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gY2FuJ3QgYmUg bW9kaWZpZWQsIGZvciBiaW5hcnkNCisgKiBjb21wYXRpYmlsaXR5IGlzc3VlcywgYW5kIHRodXMg dGhpcyBuZXcgb25lIGlzIGNyZWF0ZWQuDQorICovDQorc3RydWN0IHNjaGVkX3BhcmFtX2V4IHsN CisJaW50IHNjaGVkX3ByaW9yaXR5Ow0KKwlzdHJ1Y3QgdGltZXNwZWMgc2NoZWRfcGVyaW9kOw0K KwlzdHJ1Y3QgdGltZXNwZWMgc2NoZWRfcnVudGltZTsNCit9Ow0KKw0KIHN0cnVjdCBleGVjX2Rv bWFpbjsNCiBzdHJ1Y3QgZnV0ZXhfcGlfc3RhdGU7DQogc3RydWN0IHJvYnVzdF9saXN0X2hlYWQ7 DQpAQCAtMTQ3LDEyICsxNjEsMTUgQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZ2V0X3BhcmVudF9p cCh1bnNpZ25lZCBsb25nIGFkZHIpOw0KIA0KIHN0cnVjdCBzZXFfZmlsZTsNCiBzdHJ1Y3QgY2Zz X3JxOw0KK3N0cnVjdCBlZGZfcnE7DQogc3RydWN0IHRhc2tfZ3JvdXA7DQogI2lmZGVmIENPTkZJ R19TQ0hFRF9ERUJVRw0KIGV4dGVybiB2b2lkIHByb2Nfc2NoZWRfc2hvd190YXNrKHN0cnVjdCB0 YXNrX3N0cnVjdCAqcCwgc3RydWN0IHNlcV9maWxlICptKTsNCiBleHRlcm4gdm9pZCBwcm9jX3Nj aGVkX3NldF90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCk7DQogZXh0ZXJuIHZvaWQNCiBwcmlu dF9jZnNfcnEoc3RydWN0IHNlcV9maWxlICptLCBpbnQgY3B1LCBzdHJ1Y3QgY2ZzX3JxICpjZnNf cnEpOw0KK2V4dGVybiB2b2lkDQorcHJpbnRfZWRmX3JxKHN0cnVjdCBzZXFfZmlsZSAqbSwgaW50 IGNwdSwgc3RydWN0IGVkZl9ycSAqZWRmX3JxKTsNCiAjZWxzZQ0KIHN0YXRpYyBpbmxpbmUgdm9p ZA0KIHByb2Nfc2NoZWRfc2hvd190YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHNl cV9maWxlICptKQ0KQEAgLTE2NSw2ICsxODIsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkDQogcHJp bnRfY2ZzX3JxKHN0cnVjdCBzZXFfZmlsZSAqbSwgaW50IGNwdSwgc3RydWN0IGNmc19ycSAqY2Zz X3JxKQ0KIHsNCiB9DQorc3RhdGljIGlubGluZSB2b2lkDQorcHJpbnRfZWRmX3JxKHN0cnVjdCBz ZXFfZmlsZSAqbSwgaW50IGNwdSwgc3RydWN0IGVkZl9ycSAqZWRmX3JxKQ0KK3sNCit9DQogI2Vu ZGlmDQogDQogZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lX3N5bmNfdGhyZXNoOw0KQEAg LTExNjEsNiArMTE4MiwyOCBAQCBzdHJ1Y3Qgc2NoZWRfZW50aXR5IHsNCiAjZW5kaWYNCiB9Ow0K IA0KKyNkZWZpbmUgRURGX05FVwkJMQ0KKyNkZWZpbmUgRURGX0VOREVECTINCisjZGVmaW5lIEVE Rl9SVU5OSU5HCTQNCisNCitzdHJ1Y3Qgc2NoZWRfZWRmX2VudGl0eSB7DQorCXN0cnVjdCByYl9u b2RlCXJiX25vZGU7DQorCS8qIGFjdHVhbCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgKi8NCisJdTY0 CQlkZWFkbGluZTsNCisJczY0CQlydW50aW1lOw0KKwl1bnNpZ25lZCBpbnQJZWRmX2ZsYWdzOw0K Kw0KKwkvKiBvcmlnaW5hbCBwYXJhbWV0ZXJzIHRha2VuIGZyb20gc2NoZWRfcGFyYW1fZXggKi8N CisJdTY0CQlydW50aW1lX21heDsNCisJdTY0CQlwZXJpb2Q7DQorI2lmZGVmIENPTkZJR19FREZf R1JPVVBfU0NIRUQNCisJdTY0CQlidzsNCisjZW5kaWYNCisNCisJaW50CQlucl9jcHVzX2FsbG93 ZWQ7DQorCXN0cnVjdCBocnRpbWVyCWVkZl90aW1lcjsNCit9Ow0KKw0KIHN0cnVjdCBzY2hlZF9y dF9lbnRpdHkgew0KIAlzdHJ1Y3QgbGlzdF9oZWFkIHJ1bl9saXN0Ow0KIAl1bnNpZ25lZCBsb25n IHRpbWVvdXQ7DQpAQCAtMTE5OCw2ICsxMjQxLDcgQEAgc3RydWN0IHRhc2tfc3RydWN0IHsNCiAJ dW5zaWduZWQgaW50IHJ0X3ByaW9yaXR5Ow0KIAljb25zdCBzdHJ1Y3Qgc2NoZWRfY2xhc3MgKnNj aGVkX2NsYXNzOw0KIAlzdHJ1Y3Qgc2NoZWRfZW50aXR5IHNlOw0KKwlzdHJ1Y3Qgc2NoZWRfZWRm X2VudGl0eSBlZGY7DQogCXN0cnVjdCBzY2hlZF9ydF9lbnRpdHkgcnQ7DQogDQogI2lmZGVmIENP TkZJR19QUkVFTVBUX05PVElGSUVSUw0KQEAgLTE1NDMsNiArMTU4NywxOCBAQCBzdGF0aWMgaW5s aW5lIGludCBydF90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkNCiAJcmV0dXJuIHJ0X3ByaW8o cC0+cHJpbyk7DQogfQ0KIA0KK3N0YXRpYyBpbmxpbmUgaW50IGVkZl9wb2xpY3koaW50IHBvbGlj eSkNCit7DQorCWlmICh1bmxpa2VseShwb2xpY3kgPT0gU0NIRURfRURGKSkNCisJCXJldHVybiAx Ow0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgZWRmX3Rhc2soc3RydWN0 IHRhc2tfc3RydWN0ICpwKQ0KK3sNCisJcmV0dXJuIGVkZl9wb2xpY3kocC0+cG9saWN5KTsNCit9 DQorDQogc3RhdGljIGlubGluZSBzdHJ1Y3QgcGlkICp0YXNrX3BpZChzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRhc2spDQogew0KIAlyZXR1cm4gdGFzay0+cGlkc1tQSURUWVBFX1BJRF0ucGlkOw0KZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3lzY2FsbHMuaCBiL2luY2x1ZGUvbGludXgvc3lzY2Fs bHMuaA0KaW5kZXggOGQ4Mjg1YS4uZjViNzZhMSAxMDA2NDQNCi0tLSBhL2luY2x1ZGUvbGludXgv c3lzY2FsbHMuaA0KKysrIGIvaW5jbHVkZS9saW51eC9zeXNjYWxscy5oDQpAQCAtMzMsNiArMzMs NyBAQCBzdHJ1Y3QgcG9sbGZkOw0KIHN0cnVjdCBybGltaXQ7DQogc3RydWN0IHJ1c2FnZTsNCiBz dHJ1Y3Qgc2NoZWRfcGFyYW07DQorc3RydWN0IHNjaGVkX3BhcmFtX2V4Ow0KIHN0cnVjdCBzZW1h cGhvcmU7DQogc3RydWN0IHNlbWJ1ZjsNCiBzdHJ1Y3Qgc2htaWRfZHM7DQpAQCAtMzkwLDExICsz OTEsMTcgQEAgYXNtbGlua2FnZSBsb25nIHN5c19jbG9ja19uYW5vc2xlZXAoY2xvY2tpZF90IHdo aWNoX2Nsb2NrLCBpbnQgZmxhZ3MsDQogYXNtbGlua2FnZSBsb25nIHN5c19uaWNlKGludCBpbmNy ZW1lbnQpOw0KIGFzbWxpbmthZ2UgbG9uZyBzeXNfc2NoZWRfc2V0c2NoZWR1bGVyKHBpZF90IHBp ZCwgaW50IHBvbGljeSwNCiAJCQkJCXN0cnVjdCBzY2hlZF9wYXJhbSBfX3VzZXIgKnBhcmFtKTsN Cithc21saW5rYWdlIGxvbmcgc3lzX3NjaGVkX3NldHNjaGVkdWxlcl9leChwaWRfdCBwaWQsIGlu dCBwb2xpY3ksDQorCQkJCQlzdHJ1Y3Qgc2NoZWRfcGFyYW1fZXggX191c2VyICpwYXJhbSk7DQog YXNtbGlua2FnZSBsb25nIHN5c19zY2hlZF9zZXRwYXJhbShwaWRfdCBwaWQsDQogCQkJCQlzdHJ1 Y3Qgc2NoZWRfcGFyYW0gX191c2VyICpwYXJhbSk7DQorYXNtbGlua2FnZSBsb25nIHN5c19zY2hl ZF9zZXRwYXJhbV9leChwaWRfdCBwaWQsDQorCQkJCQlzdHJ1Y3Qgc2NoZWRfcGFyYW1fZXggX191 c2VyICpwYXJhbSk7DQogYXNtbGlua2FnZSBsb25nIHN5c19zY2hlZF9nZXRzY2hlZHVsZXIocGlk X3QgcGlkKTsNCiBhc21saW5rYWdlIGxvbmcgc3lzX3NjaGVkX2dldHBhcmFtKHBpZF90IHBpZCwN CiAJCQkJCXN0cnVjdCBzY2hlZF9wYXJhbSBfX3VzZXIgKnBhcmFtKTsNCithc21saW5rYWdlIGxv bmcgc3lzX3NjaGVkX2dldHBhcmFtX2V4KHBpZF90IHBpZCwNCisJCQkJCXN0cnVjdCBzY2hlZF9w YXJhbV9leCBfX3VzZXIgKnBhcmFtKTsNCiBhc21saW5rYWdlIGxvbmcgc3lzX3NjaGVkX3NldGFm ZmluaXR5KHBpZF90IHBpZCwgdW5zaWduZWQgaW50IGxlbiwNCiAJCQkJCXVuc2lnbmVkIGxvbmcg X191c2VyICp1c2VyX21hc2tfcHRyKTsNCiBhc21saW5rYWdlIGxvbmcgc3lzX3NjaGVkX2dldGFm ZmluaXR5KHBpZF90IHBpZCwgdW5zaWduZWQgaW50IGxlbiwNCmRpZmYgLS1naXQgYS9pbml0L0tj b25maWcgYi9pbml0L0tjb25maWcNCmluZGV4IDBhYTY1NzkuLmNkMTE5YWMgMTAwNjQ0DQotLS0g YS9pbml0L0tjb25maWcNCisrKyBiL2luaXQvS2NvbmZpZw0KQEAgLTQ1NCw2ICs0NTQsMjAgQEAg Y29uZmlnIFJUX0dST1VQX1NDSEVEDQogCSAgcmVhbHRpbWUgYmFuZHdpZHRoIGZvciB0aGVtLg0K IAkgIFNlZSBEb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1ydC1ncm91cC50eHQgZm9yIG1v cmUgaW5mb3JtYXRpb24uDQogDQorY29uZmlnIEVERl9HUk9VUF9TQ0hFRA0KKwlib29sICJHcm91 cCBzY2hlZHVsaW5nIGZvciBTQ0hFRF9FREYiDQorCWRlcGVuZHMgb24gRVhQRVJJTUVOVEFMDQor CWRlcGVuZHMgb24gR1JPVVBfU0NIRUQNCisJZGVwZW5kcyBvbiBDR1JPVVBTDQorCWRlcGVuZHMg b24gIVVTRVJfU0NIRUQNCisJc2VsZWN0IENQVVNFVFMNCisJZGVmYXVsdCBuDQorCWhlbHANCisJ ICBUaGlzIGZlYXR1cmUgbGV0cyB5b3UgZXhwbGljaXRseSBzcGVjaWZ5LCBpbiB0ZXJtcyBvZiBy dW50aW1lDQorCSAgYW5kIHBlcmlvZCwgdGhlIGJhbmR3aWR0aCBvZiBhIHRhc2sgY29udHJvbCBn cm91cC4gVGhpcyBtZWFucw0KKwkgIHRhc2tzIGFuZCBvdGhlciBjb250cm9sIGdyb3VwcyBjYW4g YmUgYWRkZWQsIHVudGlsIHN1Y2ggYmFuZHdpZHRoDQorCSAgbGltaXQgaXMgcmVhY2hlZCwgYWZ0 ZXIgdGhhdCB0aGV5IHdpbGwgZmFpbC4NCisNCiBjaG9pY2UNCiAJZGVwZW5kcyBvbiBHUk9VUF9T Q0hFRA0KIAlwcm9tcHQgIkJhc2lzIGZvciBncm91cGluZyB0YXNrcyINCmRpZmYgLS1naXQgYS9r ZXJuZWwvZm9yay5jIGIva2VybmVsL2ZvcmsuYw0KaW5kZXggMmNlYmZiMi4uYjRmMzg3NCAxMDA2 NDQNCi0tLSBhL2tlcm5lbC9mb3JrLmMNCisrKyBiL2tlcm5lbC9mb3JrLmMNCkBAIC0xMjAzLDYg KzEyMDMsMTggQEAgc3RhdGljIHN0cnVjdCB0YXNrX3N0cnVjdCAqY29weV9wcm9jZXNzKHVuc2ln bmVkIGxvbmcgY2xvbmVfZmxhZ3MsDQogCQlwLT5wYXJlbnRfZXhlY19pZCA9IGN1cnJlbnQtPnNl bGZfZXhlY19pZDsNCiAJfQ0KIA0KKwkvKg0KKwkgKiBJbiBjYXNlIGFuIEVERiB0YXNrIGlzIGZv cmtpbmcsIGJvdGggcGFyZW50IGFuZCBjaGlsZCBnZXQgaGFsZg0KKwkgKiB0aGUgYmFuZHdpZHRo IG9mIHRoZSBwYXJlbnQgKHZpYSBkaXZpZGluZyBydW50aW1lIGJ5IDIpLg0KKwkgKiBUaGlzIG1h a2UgaXQgYSBsb3QgZWFzaWVyIHRvIGRlYWwgd2l0aCBjb250cm9sIGdyb3VwIGJhbmR3aWR0aCwg YW5kDQorCSAqIGFsc28gcHJldmVudCBhbiBoZWF2aWx5IHNwYXduaW5nIHRhc2sgdG8gZXhoYXVz dCB0aGUgc3lzdGVtIChvcg0KKwkgKiBhIGNvbnRyb2wgZ3JvdXAsIGlmIGVuYWJsZWQpIGJhbmR3 aWRodC4NCisJICovDQorCWlmIChlZGZfdGFzayhwLT5yZWFsX3BhcmVudCkpIHsNCisJCXAtPnJl YWxfcGFyZW50LT5lZGYucnVudGltZV9tYXggLz0gMjsNCisJCXAtPmVkZi5ydW50aW1lX21heCA9 IHAtPnJlYWxfcGFyZW50LT5lZGYucnVudGltZV9tYXg7DQorCX0NCisNCiAJc3Bpbl9sb2NrKCZj dXJyZW50LT5zaWdoYW5kLT5zaWdsb2NrKTsNCiANCiAJLyoNCmRpZmYgLS1naXQgYS9rZXJuZWwv c2NoZWQuYyBiL2tlcm5lbC9zY2hlZC5jDQppbmRleCA5MTg0M2JhLi40NjgxYTVjIDEwMDY0NA0K LS0tIGEva2VybmVsL3NjaGVkLmMNCisrKyBiL2tlcm5lbC9zY2hlZC5jDQpAQCAtMTMxLDYgKzEz MSwxMSBAQCBzdGF0aWMgaW5saW5lIGludCB0YXNrX2hhc19ydF9wb2xpY3koc3RydWN0IHRhc2tf c3RydWN0ICpwKQ0KIAlyZXR1cm4gcnRfcG9saWN5KHAtPnBvbGljeSk7DQogfQ0KIA0KK3N0YXRp YyBpbmxpbmUgaW50IHRhc2tfaGFzX2VkZl9wb2xpY3koc3RydWN0IHRhc2tfc3RydWN0ICpwKQ0K K3sNCisJcmV0dXJuIGVkZl9wb2xpY3kocC0+cG9saWN5KTsNCit9DQorDQogLyoNCiAgKiBUaGlz IGlzIHRoZSBwcmlvcml0eS1xdWV1ZSBkYXRhIHN0cnVjdHVyZSBvZiB0aGUgUlQgc2NoZWR1bGlu ZyBjbGFzczoNCiAgKi8NCkBAIC0yMjcsNiArMjMyLDE2IEBAIHN0YXRpYyB2b2lkIGRlc3Ryb3lf cnRfYmFuZHdpZHRoKHN0cnVjdCBydF9iYW5kd2lkdGggKnJ0X2IpDQogfQ0KICNlbmRpZg0KIA0K K3N0cnVjdCBlZGZfYmFuZHdpZHRoIHsNCisJc3BpbmxvY2tfdAkJbG9jazsNCisJLyogcnVudGlt ZSBhbmQgcGVyaW9kIHRoYXQgZGV0ZXJtaW5lIHRoZSBiYW5kd2lkdGggb2YgdGhlIGdyb3VwICov DQorCXU2NAkJCXJ1bnRpbWVfbWF4Ow0KKwl1NjQJCQlwZXJpb2Q7DQorCXU2NAkJCWJ3Ow0KKwkv KiBhY2N1bXVsYXRvciBmb3IgdGhlIGFjdHVhbCBhbGxvY2F0ZWQgYmFuZHdpZHRoIGluIGEgZ3Jv dXAgKi8NCisJdTY0CQkJdG90YWxfYnc7DQorfTsNCisNCiAvKg0KICAqIHNjaGVkX2RvbWFpbnNf bXV0ZXggc2VyaWFsaXplcyBjYWxscyB0byBhcmNoX2luaXRfc2NoZWRfZG9tYWlucywNCiAgKiBk ZXRhY2hfZGVzdHJveV9kb21haW5zIGFuZCBwYXJ0aXRpb25fc2NoZWRfZG9tYWlucy4NCkBAIC0y NTksNiArMjc0LDExIEBAIHN0cnVjdCB0YXNrX2dyb3VwIHsNCiAJdW5zaWduZWQgbG9uZyBzaGFy ZXM7DQogI2VuZGlmDQogDQorI2lmZGVmIENPTkZJR19FREZfR1JPVVBfU0NIRUQNCisJc3RydWN0 IGVkZl9iYW5kd2lkdGggZWRmX2JhbmR3aWR0aDsNCisJc3RydWN0IGVkZl9ycSAqKmVkZl9ycTsN CisjZW5kaWYNCisNCiAjaWZkZWYgQ09ORklHX1JUX0dST1VQX1NDSEVEDQogCXN0cnVjdCBzY2hl ZF9ydF9lbnRpdHkgKipydF9zZTsNCiAJc3RydWN0IHJ0X3JxICoqcnRfcnE7DQpAQCAtMjk2LDYg KzMxNiwxMCBAQCBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHNjaGVkX2VudGl0eSwgaW5p dF9zY2hlZF9lbnRpdHkpOw0KIHN0YXRpYyBERUZJTkVfUEVSX0NQVV9TSEFSRURfQUxJR05FRChz dHJ1Y3QgY2ZzX3JxLCBpbml0X3RnX2Nmc19ycSk7DQogI2VuZGlmIC8qIENPTkZJR19GQUlSX0dS T1VQX1NDSEVEICovDQogDQorI2lmZGVmIENPTkZJR19FREZfR1JPVVBfU0NIRUQNCitzdGF0aWMg REVGSU5FX1BFUl9DUFUoc3RydWN0IGVkZl9ycSwgaW5pdF9lZGZfcnEpIF9fX19jYWNoZWxpbmVf YWxpZ25lZF9pbl9zbXA7DQorI2VuZGlmDQorDQogI2lmZGVmIENPTkZJR19SVF9HUk9VUF9TQ0hF RA0KIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3Qgc2NoZWRfcnRfZW50aXR5LCBpbml0X3Nj aGVkX3J0X2VudGl0eSk7DQogc3RhdGljIERFRklORV9QRVJfQ1BVX1NIQVJFRF9BTElHTkVEKHN0 cnVjdCBydF9ycSwgaW5pdF9ydF9ycSk7DQpAQCAtNDQ3LDYgKzQ3MSwxOCBAQCBzdHJ1Y3QgY2Zz X3JxIHsNCiAjZW5kaWYNCiB9Ow0KIA0KK3N0cnVjdCBlZGZfcnEgew0KKwl1bnNpZ25lZCBsb25n IGVkZl9ucl9ydW5uaW5nOw0KKw0KKwkvKiBhcyBpbiBDRlMsIHRoZSBydW5xdWV1ZSBpcyBiYXNl ZCBvbiBhbiByYnRyZWUsIGRlYWRsaW5lIG9yZGVyZWQgKi8NCisJc3RydWN0IHJiX3Jvb3QgcmJf cm9vdDsNCisJc3RydWN0IHJiX25vZGUgKnJiX2xlZnRtb3N0Ow0KKw0KKyNpZmRlZiBDT05GSUdf RURGX0dST1VQX1NDSEVEDQorCXN0cnVjdCBycSAqcnE7DQorI2VuZGlmDQorfTsNCisNCiAvKiBS ZWFsLVRpbWUgY2xhc3NlcycgcmVsYXRlZCBmaWVsZCBpbiBhIHJ1bnF1ZXVlOiAqLw0KIHN0cnVj dCBydF9ycSB7DQogCXN0cnVjdCBydF9wcmlvX2FycmF5IGFjdGl2ZTsNCkBAIC01NDQsNiArNTgw LDcgQEAgc3RydWN0IHJxIHsNCiAJdTY0IG5yX21pZ3JhdGlvbnNfaW47DQogDQogCXN0cnVjdCBj ZnNfcnEgY2ZzOw0KKwlzdHJ1Y3QgZWRmX3JxIGVkZjsNCiAJc3RydWN0IHJ0X3JxIHJ0Ow0KIA0K ICNpZmRlZiBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRA0KQEAgLTE4MTYsNyArMTg1Myw5IEBAIHN0 YXRpYyB2b2lkIGNhbGNfbG9hZF9hY2NvdW50X2FjdGl2ZShzdHJ1Y3QgcnEgKnRoaXNfcnEpOw0K ICNpbmNsdWRlICJzY2hlZF9zdGF0cy5oIg0KICNpbmNsdWRlICJzY2hlZF9pZGxldGFzay5jIg0K ICNpbmNsdWRlICJzY2hlZF9mYWlyLmMiDQorI2luY2x1ZGUgInNjaGVkX2VkZi5jIg0KICNpbmNs dWRlICJzY2hlZF9ydC5jIg0KKw0KICNpZmRlZiBDT05GSUdfU0NIRURfREVCVUcNCiAjIGluY2x1 ZGUgInNjaGVkX2RlYnVnLmMiDQogI2VuZGlmDQpAQCAtMTgzNyw3ICsxODc2LDcgQEAgc3RhdGlj IHZvaWQgZGVjX25yX3J1bm5pbmcoc3RydWN0IHJxICpycSkNCiANCiBzdGF0aWMgdm9pZCBzZXRf bG9hZF93ZWlnaHQoc3RydWN0IHRhc2tfc3RydWN0ICpwKQ0KIHsNCi0JaWYgKHRhc2tfaGFzX3J0 X3BvbGljeShwKSkgew0KKwlpZiAodGFza19oYXNfcnRfcG9saWN5KHApIHx8IHRhc2tfaGFzX2Vk Zl9wb2xpY3kocCkpIHsNCiAJCXAtPnNlLmxvYWQud2VpZ2h0ID0gcHJpb190b193ZWlnaHRbMF0g KiAyOw0KIAkJcC0+c2UubG9hZC5pbnZfd2VpZ2h0ID0gcHJpb190b193bXVsdFswXSA+PiAxOw0K IAkJcmV0dXJuOw0KQEAgLTI1MjMsNyArMjU2Miw4IEBAIHZvaWQgc2NoZWRfZm9yayhzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnAsIGludCBjbG9uZV9mbGFncykNCiAJICogUmV2ZXJ0IHRvIGRlZmF1bHQg cHJpb3JpdHkvcG9saWN5IG9uIGZvcmsgaWYgcmVxdWVzdGVkLg0KIAkgKi8NCiAJaWYgKHVubGlr ZWx5KHAtPnNjaGVkX3Jlc2V0X29uX2ZvcmspKSB7DQotCQlpZiAocC0+cG9saWN5ID09IFNDSEVE X0ZJRk8gfHwgcC0+cG9saWN5ID09IFNDSEVEX1JSKQ0KKwkJaWYgKHAtPnBvbGljeSA9PSBTQ0hF RF9GSUZPIHx8IHAtPnBvbGljeSA9PSBTQ0hFRF9SUiB8fA0KKwkJICAgIGVkZl9wb2xpY3kocC0+ cG9saWN5KSkNCiAJCQlwLT5wb2xpY3kgPSBTQ0hFRF9OT1JNQUw7DQogDQogCQlpZiAocC0+bm9y bWFsX3ByaW8gPCBERUZBVUxUX1BSSU8pDQpAQCAtMjU0MSw4ICsyNTgxLDEyIEBAIHZvaWQgc2No ZWRfZm9yayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBjbG9uZV9mbGFncykNCiAJCXAtPnNj aGVkX3Jlc2V0X29uX2ZvcmsgPSAwOw0KIAl9DQogDQotCWlmICghcnRfcHJpbyhwLT5wcmlvKSkN Ci0JCXAtPnNjaGVkX2NsYXNzID0gJmZhaXJfc2NoZWRfY2xhc3M7DQorCWlmICghcnRfcHJpbyhw LT5wcmlvKSkgew0KKwkJaWYgKGVkZl9wb2xpY3kocC0+cG9saWN5KSkNCisJCQlwLT5zY2hlZF9j bGFzcyA9ICZlZGZfc2NoZWRfY2xhc3M7DQorCQllbHNlDQorCQkJcC0+c2NoZWRfY2xhc3MgPSAm ZmFpcl9zY2hlZF9jbGFzczsNCisJfQ0KIA0KICNpZmRlZiBDT05GSUdfU01QDQogCWNwdSA9IHAt PnNjaGVkX2NsYXNzLT5zZWxlY3RfdGFza19ycShwLCBTRF9CQUxBTkNFX0ZPUkssIDApOw0KQEAg LTI1NjUsNiArMjYwOSw2OCBAQCB2b2lkIHNjaGVkX2Zvcmsoc3RydWN0IHRhc2tfc3RydWN0ICpw LCBpbnQgY2xvbmVfZmxhZ3MpDQogCXB1dF9jcHUoKTsNCiB9DQogDQorI2lmIGRlZmluZWQoQ09O RklHX1JUX0dST1VQX1NDSEVEKSB8fCBkZWZpbmVkKENPTkZJR19FREZfR1JPVVBfU0NIRUQpDQor c3RhdGljIHVuc2lnbmVkIGxvbmcgdG9fcmF0aW8odTY0IHBlcmlvZCwgdTY0IHJ1bnRpbWUpDQor ew0KKwlpZiAocnVudGltZSA9PSBSVU5USU1FX0lORikNCisJCXJldHVybiAxVUxMIDw8IDIwOw0K Kw0KKwlyZXR1cm4gZGl2NjRfdTY0KHJ1bnRpbWUgPDwgMjAsIHBlcmlvZCk7DQorfQ0KKw0KKyNp ZmRlZiBDT05GSUdfRURGX0dST1VQX1NDSEVEDQorc3RhdGljIGlubGluZQ0KK3ZvaWQgX19lZGZf dGdfY2xlYXJfdGFza19idyhzdHJ1Y3QgdGFza19ncm91cCAqdGcsIHU2NCB0c2tfYncpDQorew0K Kwl0Zy0+ZWRmX2JhbmR3aWR0aC50b3RhbF9idyAtPSB0c2tfYnc7DQorfQ0KKw0KK3N0YXRpYyBp bmxpbmUNCit2b2lkIF9fZWRmX3RnX2FkZF90YXNrX2J3KHN0cnVjdCB0YXNrX2dyb3VwICp0Zywg dTY0IHRza19idykNCit7DQorCXRnLT5lZGZfYmFuZHdpZHRoLnRvdGFsX2J3ICs9IHRza19idzsN Cit9DQorDQorc3RhdGljIGlubGluZQ0KK2ludCBfX2VkZl9jaGVja190YXNrX3RnX2J3KHN0cnVj dCB0YXNrX3N0cnVjdCAqcCwgc3RydWN0IHRhc2tfZ3JvdXAgKnRnLA0KKwkJCSAgIGludCBwb2xp Y3ksIHN0cnVjdCBzY2hlZF9wYXJhbV9leCAqcGFyYW1fZXgpDQorew0KKwl1NjQgdGdfYncgPSB0 Zy0+ZWRmX2JhbmR3aWR0aC5idzsNCisJdTY0IGJ3ID0gcC0+ZWRmLmJ3Ow0KKwl1NjQgbmV3X2J3 ID0gMDsNCisNCisJaWYgKHRnLT5lZGZfYmFuZHdpZHRoLmJ3IDw9IDApDQorCQlyZXR1cm4gMDsN CisNCisJaWYgKGVkZl9wb2xpY3kocG9saWN5KSkNCisJCW5ld19idyA9IHRvX3JhdGlvKHRpbWVz cGVjX3RvX25zKCZwYXJhbV9leC0+c2NoZWRfcGVyaW9kKSwNCisJCQkJICB0aW1lc3BlY190b19u cygmcGFyYW1fZXgtPnNjaGVkX3J1bnRpbWUpKTsNCisNCisJLyoNCisJICogRWl0aGVyIGlmIGEg dGFzaywgZW50ZXJzLCBsZWF2ZSwgb3Igc3RheXMgU0NIRURfRURGIGJ1dCBjaGFuZ2luZw0KKwkg KiBpdHMgcGFyYW1ldGVycywgd2UgbmVlZCB0byB1cGRhdGUgYWNjb3JkaW5nbHkgdGhlIGFsbG9j YXRlZA0KKwkgKiBiYW5kd2lkdGggb2YgdGhlIGNvbnRyb2wgZ3JvdXAgaXQgaXMgaW5zaWRlLg0K KwkgKi8NCisJaWYgKHRhc2tfaGFzX2VkZl9wb2xpY3kocCkgJiYgIWVkZl9wb2xpY3kocG9saWN5 KSkgew0KKwkJX19lZGZfdGdfY2xlYXJfdGFza19idyh0ZywgYncpOw0KKwkJcmV0dXJuIDE7DQor CX0gZWxzZSBpZiAodGFza19oYXNfZWRmX3BvbGljeShwKSAmJiBlZGZfcG9saWN5KHBvbGljeSkg JiYNCisJCSAgIHRnX2J3ID49IHRnLT5lZGZfYmFuZHdpZHRoLnRvdGFsX2J3IC0gYncgKyBuZXdf YncpIHsNCisJCV9fZWRmX3RnX2NsZWFyX3Rhc2tfYncodGcsIGJ3KTsNCisJCV9fZWRmX3RnX2Fk ZF90YXNrX2J3KHRnLCBuZXdfYncpOw0KKwkJcmV0dXJuIDE7DQorCX0gZWxzZSBpZiAoZWRmX3Bv bGljeShwb2xpY3kpICYmICF0YXNrX2hhc19lZGZfcG9saWN5KHApICYmDQorCQkgICB0Z19idyA+ PSB0Zy0+ZWRmX2JhbmR3aWR0aC50b3RhbF9idyArIG5ld19idykgew0KKwkJX19lZGZfdGdfYWRk X3Rhc2tfYncodGcsIG5ld19idyk7DQorCQlyZXR1cm4gMTsNCisJfQ0KKw0KKwlyZXR1cm4gMDsN Cit9DQorI2VuZGlmIC8qIENPTkZJR19FREZfR1JPVVBfU0NIRUQgKi8NCisNCisjZW5kaWYgLyog Q09ORklHX1JUX0dST1VQX1NDSEVEIHx8IENPTkZJR19FREZfR1JPVVBfU0NIRUQgKi8NCisNCiAv Kg0KICAqIHdha2VfdXBfbmV3X3Rhc2sgLSB3YWtlIHVwIGEgbmV3bHkgY3JlYXRlZCB0YXNrIGZv ciB0aGUgZmlyc3QgdGltZS4NCiAgKg0KQEAgLTI1ODIsNiArMjY4OCwxOCBAQCB2b2lkIHdha2Vf dXBfbmV3X3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICpwLCB1bnNpZ25lZCBsb25nIGNsb25lX2Zs YWdzKQ0KIAl1cGRhdGVfcnFfY2xvY2socnEpOw0KIA0KIAlwLT5wcmlvID0gZWZmZWN0aXZlX3By aW8ocCk7DQorCWlmIChlZGZfdGFzayhwKSkgew0KKwkJc3RydWN0IHNjaGVkX2VkZl9lbnRpdHkg KmVkZl9zZSA9ICZwLT5lZGY7DQorDQorCQkvKg0KKwkJICogSWYgdGhlIG5ldyB0YXNrIHdlIGFy ZSB3YWtpbmcgdXAgaXMgRURGLA0KKwkJICogc29tZSBpbml0aWFsaXphdGlvbiBpcyBuZWVkZWQN CisJCSAqLw0KKwkJUkJfQ0xFQVJfTk9ERSgmZWRmX3NlLT5yYl9ub2RlKTsNCisJCWVkZl9zZS0+ cnVudGltZSA9IGVkZl9zZS0+cnVudGltZV9tYXg7DQorCQllZGZfc2UtPmVkZl9mbGFncyA9IEVE Rl9ORVc7DQorCQlpbml0X2VkZl90aW1lcigmZWRmX3NlLT5lZGZfdGltZXIpOw0KKwl9DQogDQog CWlmICghcC0+c2NoZWRfY2xhc3MtPnRhc2tfbmV3IHx8ICFjdXJyZW50LT5zZS5vbl9ycSkgew0K IAkJYWN0aXZhdGVfdGFzayhycSwgcCwgMCk7DQpAQCAtMjcyNSw2ICsyODQzLDIzIEBAIHN0YXRp YyB2b2lkIGZpbmlzaF90YXNrX3N3aXRjaChzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnByZXYpDQogCWlmIChtbSkNCiAJCW1tZHJvcChtbSk7DQogCWlmICh1bmxpa2VseShwcmV2 X3N0YXRlID09IFRBU0tfREVBRCkpIHsNCisjaWZkZWYgQ09ORklHX0VERl9HUk9VUF9TQ0hFRA0K KwkJaWYgKGVkZl90YXNrKHByZXYpKSB7DQorCQkJc3RydWN0IHRhc2tfZ3JvdXAgKnRnID0gdGFz a19ncm91cChwcmV2KTsNCisJCQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KKw0KKwkJCS8qDQorCQkJ ICogV2hlbiBhbiBFREYgdGFzayBkaWVzLCB3ZSBuZWVkIHRvIGRyYWluIGl0cw0KKwkJCSAqIGJh bmR3aWR0aCBmcm9tIHRoZSBjZ3JvdXAgaXQgd2FzIGFjY29tb2RhdGluZyBoaW1lLA0KKwkJCSAq IHRvIG1ha2Ugc3BhY2UgZm9yIG5ldyB0YXNrcy4NCisJCQkgKi8NCisJCQlzcGluX2xvY2tfaXJx c2F2ZSgmdGctPmVkZl9iYW5kd2lkdGgubG9jaywgZmxhZ3MpOw0KKwkJCV9fZWRmX3RnX2NsZWFy X3Rhc2tfYncodGcsIHByZXYtPmVkZi5idyk7DQorCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm dGctPmVkZl9iYW5kd2lkdGgubG9jaywgZmxhZ3MpOw0KKw0KKwkJCWhydGltZXJfY2FuY2VsKCZw cmV2LT5lZGYuZWRmX3RpbWVyKTsNCisJCX0NCisjZW5kaWYNCiAJCS8qDQogCQkgKiBSZW1vdmUg ZnVuY3Rpb24tcmV0dXJuIHByb2JlIGluc3RhbmNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcw0KIAkJ ICogdGFzayBhbmQgcHV0IHRoZW0gYmFjayBvbiB0aGUgZnJlZSBsaXN0Lg0KQEAgLTU5NTIsOCAr NjA4NywxMiBAQCB2b2lkIHJ0X211dGV4X3NldHByaW8oc3RydWN0IHRhc2tfc3RydWN0ICpwLCBp bnQgcHJpbykNCiANCiAJaWYgKHJ0X3ByaW8ocHJpbykpDQogCQlwLT5zY2hlZF9jbGFzcyA9ICZy dF9zY2hlZF9jbGFzczsNCi0JZWxzZQ0KLQkJcC0+c2NoZWRfY2xhc3MgPSAmZmFpcl9zY2hlZF9j bGFzczsNCisJZWxzZSB7DQorCQlpZiAoIWVkZl90YXNrKHApKQ0KKwkJCXAtPnNjaGVkX2NsYXNz ID0gJmZhaXJfc2NoZWRfY2xhc3M7DQorCQllbHNlDQorCQkJcC0+c2NoZWRfY2xhc3MgPSAmZWRm X3NjaGVkX2NsYXNzOw0KKwl9DQogDQogCXAtPnByaW8gPSBwcmlvOw0KIA0KQEAgLTU5ODcsOSAr NjEyNiw5IEBAIHZvaWQgc2V0X3VzZXJfbmljZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGxvbmcg bmljZSkNCiAJICogVGhlIFJUIHByaW9yaXRpZXMgYXJlIHNldCB2aWEgc2NoZWRfc2V0c2NoZWR1 bGVyKCksIGJ1dCB3ZSBzdGlsbA0KIAkgKiBhbGxvdyB0aGUgJ25vcm1hbCcgbmljZSB2YWx1ZSB0 byBiZSBzZXQgLSBidXQgYXMgZXhwZWN0ZWQNCiAJICogaXQgd29udCBoYXZlIGFueSBlZmZlY3Qg b24gc2NoZWR1bGluZyB1bnRpbCB0aGUgdGFzayBpcw0KLQkgKiBTQ0hFRF9GSUZPL1NDSEVEX1JS Og0KKwkgKiBTQ0hFRF9FREYsIFNDSEVEX0ZJRk8gb3IgU0NIRURfUlI6DQogCSAqLw0KLQlpZiAo dGFza19oYXNfcnRfcG9saWN5KHApKSB7DQorCWlmICh1bmxpa2VseSh0YXNrX2hhc19ydF9wb2xp Y3kocCkgfHwgdGFza19oYXNfZWRmX3BvbGljeShwKSkpIHsNCiAJCXAtPnN0YXRpY19wcmlvID0g TklDRV9UT19QUklPKG5pY2UpOw0KIAkJZ290byBvdXRfdW5sb2NrOw0KIAl9DQpAQCAtNjEzNiw2 ICs2Mjc1LDkgQEAgX19zZXRzY2hlZHVsZXIoc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3Ry dWN0ICpwLCBpbnQgcG9saWN5LCBpbnQgcHJpbykNCiAJY2FzZSBTQ0hFRF9JRExFOg0KIAkJcC0+ c2NoZWRfY2xhc3MgPSAmZmFpcl9zY2hlZF9jbGFzczsNCiAJCWJyZWFrOw0KKwljYXNlIFNDSEVE X0VERjoNCisJCXAtPnNjaGVkX2NsYXNzID0gJmVkZl9zY2hlZF9jbGFzczsNCisJCWJyZWFrOw0K IAljYXNlIFNDSEVEX0ZJRk86DQogCWNhc2UgU0NIRURfUlI6DQogCQlwLT5zY2hlZF9jbGFzcyA9 ICZydF9zY2hlZF9jbGFzczsNCkBAIC02MTQ5LDYgKzYyOTEsMjUgQEAgX19zZXRzY2hlZHVsZXIo c3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgcG9saWN5LCBpbnQgcHJp bykNCiAJc2V0X2xvYWRfd2VpZ2h0KHApOw0KIH0NCiANCitzdGF0aWMgdm9pZA0KK19fc2V0c2No ZWR1bGVyX2V4KHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHBvbGlj eSwNCisJCSAgc3RydWN0IHNjaGVkX3BhcmFtX2V4ICpwYXJhbV9leCkNCit7DQorCXN0cnVjdCBz Y2hlZF9lZGZfZW50aXR5ICplZGZfc2UgPSAmcC0+ZWRmOw0KKw0KKwlSQl9DTEVBUl9OT0RFKCZl ZGZfc2UtPnJiX25vZGUpOw0KKwllZGZfc2UtPmVkZl9mbGFncyA9IEVERl9ORVc7DQorDQorCWVk Zl9zZS0+cnVudGltZV9tYXggPSB0aW1lc3BlY190b19ucygmcGFyYW1fZXgtPnNjaGVkX3J1bnRp bWUpOw0KKwllZGZfc2UtPnBlcmlvZCA9IHRpbWVzcGVjX3RvX25zKCZwYXJhbV9leC0+c2NoZWRf cGVyaW9kKTsNCisJZWRmX3NlLT5idyA9IHRvX3JhdGlvKHRpbWVzcGVjX3RvX25zKCZwYXJhbV9l eC0+c2NoZWRfcGVyaW9kKSwNCisJCQkgICAgICB0aW1lc3BlY190b19ucygmcGFyYW1fZXgtPnNj aGVkX3J1bnRpbWUpKTsNCisNCisJZWRmX3NlLT5ydW50aW1lID0gZWRmX3NlLT5ydW50aW1lX21h eDsNCisNCisJaW5pdF9lZGZfdGltZXIoJmVkZl9zZS0+ZWRmX3RpbWVyKTsNCit9DQorDQogLyoN CiAgKiBjaGVjayB0aGUgdGFyZ2V0IHByb2Nlc3MgaGFzIGEgVUlEIHRoYXQgbWF0Y2hlcyB0aGUg Y3VycmVudCBwcm9jZXNzJ3MNCiAgKi8NCkBAIC02MTY2LDcgKzYzMjcsOSBAQCBzdGF0aWMgYm9v bCBjaGVja19zYW1lX293bmVyKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkNCiB9DQogDQogc3RhdGlj IGludCBfX3NjaGVkX3NldHNjaGVkdWxlcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBwb2xp Y3ksDQotCQkJCXN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0sIGJvb2wgdXNlcikNCisJCQkJc3Ry dWN0IHNjaGVkX3BhcmFtICpwYXJhbSwNCisJCQkJc3RydWN0IHNjaGVkX3BhcmFtX2V4ICpwYXJh bV9leCwNCisJCQkJYm9vbCB1c2VyKQ0KIHsNCiAJaW50IHJldHZhbCwgb2xkcHJpbywgb2xkcG9s aWN5ID0gLTEsIG9uX3JxLCBydW5uaW5nOw0KIAl1bnNpZ25lZCBsb25nIGZsYWdzOw0KQEAgLTYx ODYsNiArNjM0OSw3IEBAIHJlY2hlY2s6DQogCQlwb2xpY3kgJj0gflNDSEVEX1JFU0VUX09OX0ZP Uks7DQogDQogCQlpZiAocG9saWN5ICE9IFNDSEVEX0ZJRk8gJiYgcG9saWN5ICE9IFNDSEVEX1JS ICYmDQorCQkJCXBvbGljeSAhPSBTQ0hFRF9FREYgJiYNCiAJCQkJcG9saWN5ICE9IFNDSEVEX05P Uk1BTCAmJiBwb2xpY3kgIT0gU0NIRURfQkFUQ0ggJiYNCiAJCQkJcG9saWN5ICE9IFNDSEVEX0lE TEUpDQogCQkJcmV0dXJuIC1FSU5WQUw7DQpAQCAtNjIwMCw2ICs2MzY0LDEzIEBAIHJlY2hlY2s6 DQogCSAgICAocC0+bW0gJiYgcGFyYW0tPnNjaGVkX3ByaW9yaXR5ID4gTUFYX1VTRVJfUlRfUFJJ Ty0xKSB8fA0KIAkgICAgKCFwLT5tbSAmJiBwYXJhbS0+c2NoZWRfcHJpb3JpdHkgPiBNQVhfUlRf UFJJTy0xKSkNCiAJCXJldHVybiAtRUlOVkFMOw0KKwlpZiAoZWRmX3BvbGljeShwb2xpY3kpICYm IHBhcmFtX2V4LT5zY2hlZF9wcmlvcml0eSAhPSAwKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCWlm IChlZGZfcG9saWN5KHBvbGljeSkgJiYgKHBhcmFtX2V4ID09IE5VTEwgfHwNCisJICAgIHRpbWVz cGVjX3RvX25zKCZwYXJhbV9leC0+c2NoZWRfcGVyaW9kKSA9PSAwIHx8DQorCSAgICB0aW1lc3Bl Y190b19ucygmcGFyYW1fZXgtPnNjaGVkX3BlcmlvZCkgPA0KKwkgICAgdGltZXNwZWNfdG9fbnMo JnBhcmFtX2V4LT5zY2hlZF9ydW50aW1lKSkpDQorCQlyZXR1cm4gLUVJTlZBTDsNCiAJaWYgKHJ0 X3BvbGljeShwb2xpY3kpICE9IChwYXJhbS0+c2NoZWRfcHJpb3JpdHkgIT0gMCkpDQogCQlyZXR1 cm4gLUVJTlZBTDsNCiANCkBAIC02MjczLDYgKzY0NDQsMjQgQEAgcmVjaGVjazoNCiAJCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnAtPnBpX2xvY2ssIGZsYWdzKTsNCiAJCWdvdG8gcmVjaGVjazsN CiAJfQ0KKyNpZmRlZiBDT05GSUdfRURGX0dST1VQX1NDSEVEDQorCS8qDQorCSAqIElmIEVERiB0 YXNrcyBhcmUgaW52b2x2ZWQsIGNoZWNrIHRoYSBiYW5kd2lkdGggb2YgIGl0cyBncm91cCwNCisJ ICogYW5kIGRvIG5vdCBhbGxvdyBzZXR0aW5nIHRoZSB0YXNrIEVERiBpZiB0aGVyZSBpcyBub3Qg ZW5vdWdoLg0KKwkgKi8NCisJaWYgKGVkZl9wb2xpY3kocG9saWN5KSB8fCBlZGZfdGFzayhwKSkg ew0KKwkJc3RydWN0IHRhc2tfZ3JvdXAgKnRnID0gdGFza19ncm91cChwKTsNCisNCisJCXNwaW5f bG9jaygmdGctPmVkZl9iYW5kd2lkdGgubG9jayk7DQorCQlpZiAoIV9fZWRmX2NoZWNrX3Rhc2tf dGdfYncocCwgdGcsIHBvbGljeSwgcGFyYW1fZXgpKSB7DQorCQkJc3Bpbl91bmxvY2soJnRnLT5l ZGZfYmFuZHdpZHRoLmxvY2spOw0KKwkJCV9fdGFza19ycV91bmxvY2socnEpOw0KKwkJCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnAtPnBpX2xvY2ssIGZsYWdzKTsNCisJCQlyZXR1cm4gLUVQRVJN Ow0KKwkJfQ0KKwkJc3Bpbl91bmxvY2soJnRnLT5lZGZfYmFuZHdpZHRoLmxvY2spOw0KKwl9DQor I2VuZGlmDQogCXVwZGF0ZV9ycV9jbG9jayhycSk7DQogCW9uX3JxID0gcC0+c2Uub25fcnE7DQog CXJ1bm5pbmcgPSB0YXNrX2N1cnJlbnQocnEsIHApOw0KQEAgLTYyODUsNiArNjQ3NCw4IEBAIHJl Y2hlY2s6DQogDQogCW9sZHByaW8gPSBwLT5wcmlvOw0KIAlfX3NldHNjaGVkdWxlcihycSwgcCwg cG9saWN5LCBwYXJhbS0+c2NoZWRfcHJpb3JpdHkpOw0KKwlpZiAoZWRmX3BvbGljeShwb2xpY3kp KQ0KKwkJX19zZXRzY2hlZHVsZXJfZXgocnEsIHAsIHBvbGljeSwgcGFyYW1fZXgpOw0KIA0KIAlp ZiAocnVubmluZykNCiAJCXAtPnNjaGVkX2NsYXNzLT5zZXRfY3Vycl90YXNrKHJxKTsNCkBAIC02 MzEyLDEwICs2NTAzLDE3IEBAIHJlY2hlY2s6DQogaW50IHNjaGVkX3NldHNjaGVkdWxlcihzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnAsIGludCBwb2xpY3ksDQogCQkgICAgICAgc3RydWN0IHNjaGVkX3Bh cmFtICpwYXJhbSkNCiB7DQotCXJldHVybiBfX3NjaGVkX3NldHNjaGVkdWxlcihwLCBwb2xpY3ks IHBhcmFtLCB0cnVlKTsNCisJcmV0dXJuIF9fc2NoZWRfc2V0c2NoZWR1bGVyKHAsIHBvbGljeSwg cGFyYW0sIE5VTEwsIHRydWUpOw0KIH0NCiBFWFBPUlRfU1lNQk9MX0dQTChzY2hlZF9zZXRzY2hl ZHVsZXIpOw0KIA0KK2ludCBzY2hlZF9zZXRzY2hlZHVsZXJfZXgoc3RydWN0IHRhc2tfc3RydWN0 ICpwLCBpbnQgcG9saWN5LA0KKwkJCSAgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSwNCisJCQkg IHN0cnVjdCBzY2hlZF9wYXJhbV9leCAqcGFyYW1fZXgpDQorew0KKwlyZXR1cm4gX19zY2hlZF9z ZXRzY2hlZHVsZXIocCwgcG9saWN5LCBwYXJhbSwgcGFyYW1fZXgsIHRydWUpOw0KK30NCisNCiAv KioNCiAgKiBzY2hlZF9zZXRzY2hlZHVsZXJfbm9jaGVjayAtIGNoYW5nZSB0aGUgc2NoZWR1bGlu ZyBwb2xpY3kgYW5kL29yIFJUIHByaW9yaXR5IG9mIGEgdGhyZWFkIGZyb20ga2VybmVsc3BhY2Uu DQogICogQHA6IHRoZSB0YXNrIGluIHF1ZXN0aW9uLg0KQEAgLTYzMzAsNyArNjUyOCw3IEBAIEVY UE9SVF9TWU1CT0xfR1BMKHNjaGVkX3NldHNjaGVkdWxlcik7DQogaW50IHNjaGVkX3NldHNjaGVk dWxlcl9ub2NoZWNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHBvbGljeSwNCiAJCQkgICAg ICAgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSkNCiB7DQotCXJldHVybiBfX3NjaGVkX3NldHNj aGVkdWxlcihwLCBwb2xpY3ksIHBhcmFtLCBmYWxzZSk7DQorCXJldHVybiBfX3NjaGVkX3NldHNj aGVkdWxlcihwLCBwb2xpY3ksIHBhcmFtLCBOVUxMLCBmYWxzZSk7DQogfQ0KIA0KIHN0YXRpYyBp bnQNCkBAIC02MzU1LDYgKzY1NTMsMzMgQEAgZG9fc2NoZWRfc2V0c2NoZWR1bGVyKHBpZF90IHBp ZCwgaW50IHBvbGljeSwgc3RydWN0IHNjaGVkX3BhcmFtIF9fdXNlciAqcGFyYW0pDQogCXJldHVy biByZXR2YWw7DQogfQ0KIA0KK3N0YXRpYyBpbnQNCitkb19zY2hlZF9zZXRzY2hlZHVsZXJfZXgo cGlkX3QgcGlkLCBpbnQgcG9saWN5LA0KKwkJCSBzdHJ1Y3Qgc2NoZWRfcGFyYW1fZXggX191c2Vy ICpwYXJhbV9leCkNCit7DQorCXN0cnVjdCBzY2hlZF9wYXJhbSBscGFyYW07DQorCXN0cnVjdCBz Y2hlZF9wYXJhbV9leCBscGFyYW1fZXg7DQorCXN0cnVjdCB0YXNrX3N0cnVjdCAqcDsNCisJaW50 IHJldHZhbDsNCisNCisJaWYgKCFwYXJhbV9leCB8fCBwaWQgPCAwKQ0KKwkJcmV0dXJuIC1FSU5W QUw7DQorCWlmIChjb3B5X2Zyb21fdXNlcigmbHBhcmFtX2V4LCBwYXJhbV9leCwNCisJICAgIHNp emVvZihzdHJ1Y3Qgc2NoZWRfcGFyYW1fZXgpKSkNCisJCXJldHVybiAtRUZBVUxUOw0KKw0KKwly Y3VfcmVhZF9sb2NrKCk7DQorCXJldHZhbCA9IC1FU1JDSDsNCisJcCA9IGZpbmRfcHJvY2Vzc19i eV9waWQocGlkKTsNCisJaWYgKHAgIT0gTlVMTCkgew0KKwkJbHBhcmFtLnNjaGVkX3ByaW9yaXR5 ID0gbHBhcmFtX2V4LnNjaGVkX3ByaW9yaXR5Ow0KKwkJcmV0dmFsID0gc2NoZWRfc2V0c2NoZWR1 bGVyX2V4KHAsIHBvbGljeSwgJmxwYXJhbSwgJmxwYXJhbV9leCk7DQorCX0NCisJcmN1X3JlYWRf dW5sb2NrKCk7DQorDQorCXJldHVybiByZXR2YWw7DQorfQkNCisNCiAvKioNCiAgKiBzeXNfc2No ZWRfc2V0c2NoZWR1bGVyIC0gc2V0L2NoYW5nZSB0aGUgc2NoZWR1bGVyIHBvbGljeSBhbmQgUlQg cHJpb3JpdHkNCiAgKiBAcGlkOiB0aGUgcGlkIGluIHF1ZXN0aW9uLg0KQEAgLTYzNzIsNiArNjU5 NywyMiBAQCBTWVNDQUxMX0RFRklORTMoc2NoZWRfc2V0c2NoZWR1bGVyLCBwaWRfdCwgcGlkLCBp bnQsIHBvbGljeSwNCiB9DQogDQogLyoqDQorICogc3lzX3NjaGVkX3NldHNjaGVkdWxlcl9leCAt IHNldC9jaGFuZ2UgdGhlIHNjaGVkdWxlciBwb2xpY3kgYW5kIEVERiBkZWFkbGluZQ0KKyAqIEBw aWQ6IHRoZSBwaWQgaW4gcXVlc3Rpb24uDQorICogQHBvbGljeTogbmV3IHBvbGljeSAoc2hvdWxk IGJlIFNDSEVEX0VERikuDQorICogQHBhcmFtOiBzdHJ1Y3R1cmUgY29udGFpbmcgdGhlIGV4dGVu ZGVkIEVERiBwYXJhbWV0ZXJzLg0KKyAqLw0KK1NZU0NBTExfREVGSU5FMyhzY2hlZF9zZXRzY2hl ZHVsZXJfZXgsIHBpZF90LCBwaWQsIGludCwgcG9saWN5LA0KKwkJc3RydWN0IHNjaGVkX3BhcmFt X2V4IF9fdXNlciAqLCBwYXJhbV9leCkNCit7DQorCWlmIChwb2xpY3kgPCAwKQ0KKwkJcmV0dXJu IC1FSU5WQUw7DQorDQorCXJldHVybiBkb19zY2hlZF9zZXRzY2hlZHVsZXJfZXgocGlkLCBwb2xp Y3ksIHBhcmFtX2V4KTsNCit9DQorDQorDQorLyoqDQogICogc3lzX3NjaGVkX3NldHBhcmFtIC0g c2V0L2NoYW5nZSB0aGUgUlQgcHJpb3JpdHkgb2YgYSB0aHJlYWQNCiAgKiBAcGlkOiB0aGUgcGlk IGluIHF1ZXN0aW9uLg0KICAqIEBwYXJhbTogc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIG5ldyBS VCBwcmlvcml0eS4NCkBAIC02MzgxLDYgKzY2MjIsMTIgQEAgU1lTQ0FMTF9ERUZJTkUyKHNjaGVk X3NldHBhcmFtLCBwaWRfdCwgcGlkLCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gX191c2VyICosIHBhcmFt KQ0KIAlyZXR1cm4gZG9fc2NoZWRfc2V0c2NoZWR1bGVyKHBpZCwgLTEsIHBhcmFtKTsNCiB9DQog DQorU1lTQ0FMTF9ERUZJTkUyKHNjaGVkX3NldHBhcmFtX2V4LCBwaWRfdCwgcGlkLA0KKwkJc3Ry dWN0IHNjaGVkX3BhcmFtX2V4IF9fdXNlciAqLCBwYXJhbV9leCkNCit7DQorCXJldHVybiBkb19z Y2hlZF9zZXRzY2hlZHVsZXJfZXgocGlkLCAtMSwgcGFyYW1fZXgpOw0KK30NCisNCiAvKioNCiAg KiBzeXNfc2NoZWRfZ2V0c2NoZWR1bGVyIC0gZ2V0IHRoZSBwb2xpY3kgKHNjaGVkdWxpbmcgY2xh c3MpIG9mIGEgdGhyZWFkDQogICogQHBpZDogdGhlIHBpZCBpbiBxdWVzdGlvbi4NCkBAIC02NDQ1 LDYgKzY2OTIsMTEgQEAgb3V0X3VubG9jazoNCiAJcmV0dXJuIHJldHZhbDsNCiB9DQogDQorU1lT Q0FMTF9ERUZJTkUyKHNjaGVkX2dldHBhcmFtX2V4LCBwaWRfdCwgcGlkLCBzdHJ1Y3Qgc2NoZWRf cGFyYW1fZXggX191c2VyICosIHBhcmFtKQ0KK3sNCisJcmV0dXJuIC1FTk9TWVM7DQorfQ0KKw0K IGxvbmcgc2NoZWRfc2V0YWZmaW5pdHkocGlkX3QgcGlkLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAq aW5fbWFzaykNCiB7DQogCWNwdW1hc2tfdmFyX3QgY3B1c19hbGxvd2VkLCBuZXdfbWFzazsNCkBA IC05MjEwLDYgKzk0NjIsMTQgQEAgc3RhdGljIHZvaWQgaW5pdF9jZnNfcnEoc3RydWN0IGNmc19y cSAqY2ZzX3JxLCBzdHJ1Y3QgcnEgKnJxKQ0KIAljZnNfcnEtPm1pbl92cnVudGltZSA9ICh1NjQp KC0oMUxMIDw8IDIwKSk7DQogfQ0KIA0KK3N0YXRpYyB2b2lkIGluaXRfZWRmX3JxKHN0cnVjdCBl ZGZfcnEgKmVkZl9ycSwgc3RydWN0IHJxICpycSkNCit7DQorCWVkZl9ycS0+cmJfcm9vdCA9IFJC X1JPT1Q7DQorI2lmZGVmIENPTkZJR19FREZfR1JPVVBfU0NIRUQNCisJZWRmX3JxLT5ycSA9IHJx Ow0KKyNlbmRpZg0KK30NCisNCiBzdGF0aWMgdm9pZCBpbml0X3J0X3JxKHN0cnVjdCBydF9ycSAq cnRfcnEsIHN0cnVjdCBycSAqcnEpDQogew0KIAlzdHJ1Y3QgcnRfcHJpb19hcnJheSAqYXJyYXk7 DQpAQCAtOTI3NSw2ICs5NTM1LDIyIEBAIHN0YXRpYyB2b2lkIGluaXRfdGdfY2ZzX2VudHJ5KHN0 cnVjdCB0YXNrX2dyb3VwICp0Zywgc3RydWN0IGNmc19ycSAqY2ZzX3JxLA0KIH0NCiAjZW5kaWYN CiANCisjaWZkZWYgQ09ORklHX0VERl9HUk9VUF9TQ0hFRA0KK3ZvaWQgaW5pdF90Z19lZGZfZW50 cnkoc3RydWN0IHRhc2tfZ3JvdXAgKnRnLCBzdHJ1Y3QgZWRmX3JxICplZGZfcnEsDQorCQlzdHJ1 Y3Qgc2NoZWRfZWRmX2VudGl0eSAqZWRmX3NlLCBpbnQgY3B1LCBpbnQgYWRkLA0KKwkJc3RydWN0 IHNjaGVkX2VkZl9lbnRpdHkgKnBhcmVudCkNCit7DQorCXN0cnVjdCBycSAqcnEgPSBjcHVfcnEo Y3B1KTsNCisNCisJdGctPmVkZl9ycVtjcHVdID0gJnJxLT5lZGY7DQorDQorCXNwaW5fbG9ja19p bml0KCZ0Zy0+ZWRmX2JhbmR3aWR0aC5sb2NrKTsNCisJdGctPmVkZl9iYW5kd2lkdGgucnVudGlt ZV9tYXggPSAwOw0KKwl0Zy0+ZWRmX2JhbmR3aWR0aC5wZXJpb2QgPSAwOw0KKwl0Zy0+ZWRmX2Jh bmR3aWR0aC50b3RhbF9idyA9IDA7DQorfQ0KKyNlbmRpZg0KKw0KICNpZmRlZiBDT05GSUdfUlRf R1JPVVBfU0NIRUQNCiBzdGF0aWMgdm9pZCBpbml0X3RnX3J0X2VudHJ5KHN0cnVjdCB0YXNrX2dy b3VwICp0Zywgc3RydWN0IHJ0X3JxICpydF9ycSwNCiAJCXN0cnVjdCBzY2hlZF9ydF9lbnRpdHkg KnJ0X3NlLCBpbnQgY3B1LCBpbnQgYWRkLA0KQEAgLTkzMTYsNiArOTU5MiwxMCBAQCB2b2lkIF9f aW5pdCBzY2hlZF9pbml0KHZvaWQpDQogI2lmZGVmIENPTkZJR19SVF9HUk9VUF9TQ0hFRA0KIAlh bGxvY19zaXplICs9IDIgKiBucl9jcHVfaWRzICogc2l6ZW9mKHZvaWQgKiopOw0KICNlbmRpZg0K KyNpZmRlZiBDT05GSUdfRURGX0dST1VQX1NDSEVEDQorCWFsbG9jX3NpemUgKz0gMiAqIG5yX2Nw dV9pZHMgKiBzaXplb2Yodm9pZCAqKik7DQorI2VuZGlmDQorDQogI2lmZGVmIENPTkZJR19VU0VS X1NDSEVEDQogCWFsbG9jX3NpemUgKj0gMjsNCiAjZW5kaWYNCkBAIC05MzQ0LDYgKzk2MjQsMTAg QEAgdm9pZCBfX2luaXQgc2NoZWRfaW5pdCh2b2lkKQ0KIAkJcHRyICs9IG5yX2NwdV9pZHMgKiBz aXplb2Yodm9pZCAqKik7DQogI2VuZGlmIC8qIENPTkZJR19VU0VSX1NDSEVEICovDQogI2VuZGlm IC8qIENPTkZJR19GQUlSX0dST1VQX1NDSEVEICovDQorI2lmZGVmIENPTkZJR19FREZfR1JPVVBf U0NIRUQNCisJCWluaXRfdGFza19ncm91cC5lZGZfcnEgPSAoc3RydWN0IGVkZl9ycSAqKilwdHI7 DQorCQlwdHIgKz0gbnJfY3B1X2lkcyAqIHNpemVvZih2b2lkICoqKTsNCisjZW5kaWYgLyogQ09O RklHX0VERl9HUk9VUF9TQ0hFRCAqLw0KICNpZmRlZiBDT05GSUdfUlRfR1JPVVBfU0NIRUQNCiAJ CWluaXRfdGFza19ncm91cC5ydF9zZSA9IChzdHJ1Y3Qgc2NoZWRfcnRfZW50aXR5ICoqKXB0cjsN CiAJCXB0ciArPSBucl9jcHVfaWRzICogc2l6ZW9mKHZvaWQgKiopOw0KQEAgLTk0MDMsNiArOTY4 Nyw3IEBAIHZvaWQgX19pbml0IHNjaGVkX2luaXQodm9pZCkNCiAJCXJxLT5jYWxjX2xvYWRfYWN0 aXZlID0gMDsNCiAJCXJxLT5jYWxjX2xvYWRfdXBkYXRlID0gamlmZmllcyArIExPQURfRlJFUTsN CiAJCWluaXRfY2ZzX3JxKCZycS0+Y2ZzLCBycSk7DQorCQlpbml0X2VkZl9ycSgmcnEtPmVkZiwg cnEpOw0KIAkJaW5pdF9ydF9ycSgmcnEtPnJ0LCBycSk7DQogI2lmZGVmIENPTkZJR19GQUlSX0dS T1VQX1NDSEVEDQogCQlpbml0X3Rhc2tfZ3JvdXAuc2hhcmVzID0gaW5pdF90YXNrX2dyb3VwX2xv YWQ7DQpAQCAtOTQ1MCw2ICs5NzM1LDEzIEBAIHZvaWQgX19pbml0IHNjaGVkX2luaXQodm9pZCkN CiAjZW5kaWYNCiAjZW5kaWYgLyogQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgKi8NCiANCisjaWZk ZWYgQ09ORklHX0VERl9HUk9VUF9TQ0hFRA0KKyNpZmRlZiBDT05GSUdfQ0dST1VQX1NDSEVEDQor CQlpbml0X3RnX2VkZl9lbnRyeSgmaW5pdF90YXNrX2dyb3VwLCAmcnEtPmVkZiwNCisJCQkJICBO VUxMLCBpLCAxLCBOVUxMKTsNCisjZW5kaWYNCisjZW5kaWYNCisNCiAJCXJxLT5ydC5ydF9ydW50 aW1lID0gZGVmX3J0X2JhbmR3aWR0aC5ydF9ydW50aW1lOw0KICNpZmRlZiBDT05GSUdfUlRfR1JP VVBfU0NIRUQNCiAJCUlOSVRfTElTVF9IRUFEKCZycS0+bGVhZl9ydF9ycV9saXN0KTsNCkBAIC05 NzYwLDYgKzEwMDUyLDY4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1bnJlZ2lzdGVyX2ZhaXJfc2No ZWRfZ3JvdXAoc3RydWN0IHRhc2tfZ3JvdXAgKnRnLCBpbnQgY3B1KQ0KIH0NCiAjZW5kaWYgLyog Q09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgKi8NCiANCisjaWZkZWYgQ09ORklHX0VERl9HUk9VUF9T Q0hFRA0KK3N0YXRpYyB2b2lkIGZyZWVfZWRmX3NjaGVkX2dyb3VwKHN0cnVjdCB0YXNrX2dyb3Vw ICp0ZykNCit7DQorCWtmcmVlKHRnLT5lZGZfcnEpOw0KK30NCisNCitpbnQgYWxsb2NfZWRmX3Nj aGVkX2dyb3VwKHN0cnVjdCB0YXNrX2dyb3VwICp0Zywgc3RydWN0IHRhc2tfZ3JvdXAgKnBhcmVu dCkNCit7DQorCXN0cnVjdCBycSAqcnE7DQorCWludCBpOw0KKw0KKwl0Zy0+ZWRmX3JxID0ga3ph bGxvYyhzaXplb2Yoc3RydWN0IGVkZl9ycSopICogbnJfY3B1X2lkcywgR0ZQX0tFUk5FTCk7DQor CWlmICghdGctPmVkZl9ycSkNCisJCXJldHVybiAwOw0KKw0KKwlmb3JfZWFjaF9wb3NzaWJsZV9j cHUoaSkgew0KKwkJcnEgPSBjcHVfcnEoaSk7DQorCQlpbml0X3RnX2VkZl9lbnRyeSh0ZywgJnJx LT5lZGYsIE5VTEwsIGksIDAsIE5VTEwpOw0KKwl9DQorDQorCXJldHVybiAxOw0KK30NCisNCitp bnQgc2NoZWRfZWRmX2Nhbl9hdHRhY2goc3RydWN0IGNncm91cCAqY2dycCwgc3RydWN0IHRhc2tf c3RydWN0ICp0c2spDQorew0KKwlzdHJ1Y3QgdGFza19ncm91cCAqdGcgPSBjb250YWluZXJfb2Yo Y2dyb3VwX3N1YnN5c19zdGF0ZShjZ3JwLA0KKwkJCQkJICAgICBjcHVfY2dyb3VwX3N1YnN5c19p ZCksDQorCQkJCQkgICAgIHN0cnVjdCB0YXNrX2dyb3VwLCBjc3MpOw0KKwl1NjQgdGdfYncgPSB0 Zy0+ZWRmX2JhbmR3aWR0aC5idzsNCisJdTY0IHRza19idyA9IHRzay0+ZWRmLmJ3Ow0KKw0KKwlp ZiAoIWVkZl90YXNrKHRzaykpDQorCQlyZXR1cm4gMTsNCisNCisJLyoNCisJICogQ2hlY2sgaWYg dGhlIHJlcXVlc3RlZCBncm91cCBoYXMgZW5vdWdoIGZyZWUgc3BhY2UNCisJICogZm9yIHRoaXMg cGFydGljdWxhciB0YXNrLg0KKwkgKi8NCisJaWYgKHRnX2J3IDwgdHNrX2J3ICsgdGctPmVkZl9i YW5kd2lkdGgudG90YWxfYncpDQorCQlyZXR1cm4gMDsNCisNCisJcmV0dXJuIDE7DQorfQ0KKyNl bHNlDQorc3RhdGljIGlubGluZSB2b2lkIGZyZWVfZWRmX3NjaGVkX2dyb3VwKHN0cnVjdCB0YXNr X2dyb3VwICp0ZykNCit7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUNCitpbnQgYWxsb2NfZWRmX3Nj aGVkX2dyb3VwKHN0cnVjdCB0YXNrX2dyb3VwICp0Zywgc3RydWN0IHRhc2tfZ3JvdXAgKnBhcmVu dCkNCit7DQorCXJldHVybiAxOw0KK30NCisjZW5kaWYNCitzdGF0aWMgaW5saW5lIHZvaWQgcmVn aXN0ZXJfZWRmX3NjaGVkX2dyb3VwKHN0cnVjdCB0YXNrX2dyb3VwICp0ZywgaW50IGNwdSkNCit7 DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgdm9pZCB1bnJlZ2lzdGVyX2VkZl9zY2hlZF9ncm91cChz dHJ1Y3QgdGFza19ncm91cCAqdGcsIGludCBjcHUpDQorew0KK30NCisNCiAjaWZkZWYgQ09ORklH X1JUX0dST1VQX1NDSEVEDQogc3RhdGljIHZvaWQgZnJlZV9ydF9zY2hlZF9ncm91cChzdHJ1Y3Qg dGFza19ncm91cCAqdGcpDQogew0KQEAgLTk4NTIsNiArMTAyMDYsNyBAQCBzdGF0aWMgaW5saW5l IHZvaWQgdW5yZWdpc3Rlcl9ydF9zY2hlZF9ncm91cChzdHJ1Y3QgdGFza19ncm91cCAqdGcsIGlu dCBjcHUpDQogc3RhdGljIHZvaWQgZnJlZV9zY2hlZF9ncm91cChzdHJ1Y3QgdGFza19ncm91cCAq dGcpDQogew0KIAlmcmVlX2ZhaXJfc2NoZWRfZ3JvdXAodGcpOw0KKwlmcmVlX2VkZl9zY2hlZF9n cm91cCh0Zyk7DQogCWZyZWVfcnRfc2NoZWRfZ3JvdXAodGcpOw0KIAlrZnJlZSh0Zyk7DQogfQ0K QEAgLTk4NzAsMTIgKzEwMjI1LDE2IEBAIHN0cnVjdCB0YXNrX2dyb3VwICpzY2hlZF9jcmVhdGVf Z3JvdXAoc3RydWN0IHRhc2tfZ3JvdXAgKnBhcmVudCkNCiAJaWYgKCFhbGxvY19mYWlyX3NjaGVk X2dyb3VwKHRnLCBwYXJlbnQpKQ0KIAkJZ290byBlcnI7DQogDQorCWlmICghYWxsb2NfZWRmX3Nj aGVkX2dyb3VwKHRnLCBwYXJlbnQpKQ0KKwkJZ290byBlcnI7DQorDQogCWlmICghYWxsb2NfcnRf c2NoZWRfZ3JvdXAodGcsIHBhcmVudCkpDQogCQlnb3RvIGVycjsNCiANCiAJc3Bpbl9sb2NrX2ly cXNhdmUoJnRhc2tfZ3JvdXBfbG9jaywgZmxhZ3MpOw0KIAlmb3JfZWFjaF9wb3NzaWJsZV9jcHUo aSkgew0KIAkJcmVnaXN0ZXJfZmFpcl9zY2hlZF9ncm91cCh0ZywgaSk7DQorCQlyZWdpc3Rlcl9l ZGZfc2NoZWRfZ3JvdXAodGcsIGkpOw0KIAkJcmVnaXN0ZXJfcnRfc2NoZWRfZ3JvdXAodGcsIGkp Ow0KIAl9DQogCWxpc3RfYWRkX3JjdSgmdGctPmxpc3QsICZ0YXNrX2dyb3Vwcyk7DQpAQCAtOTkw NiwxMiArMTAyNjUsMzEgQEAgdm9pZCBzY2hlZF9kZXN0cm95X2dyb3VwKHN0cnVjdCB0YXNrX2dy b3VwICp0ZykNCiB7DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogCWludCBpOw0KKyNpZmRlZiBD T05GSUdfRURGX0dST1VQX1NDSEVEDQorCXN0cnVjdCB0YXNrX2dyb3VwICpwYXJlbnQgPSB0Zy0+ cGFyZW50Ow0KKwl1NjQgdGdfYncgPSB0Zy0+ZWRmX2JhbmR3aWR0aC5idzsNCiANCiAJc3Bpbl9s b2NrX2lycXNhdmUoJnRhc2tfZ3JvdXBfbG9jaywgZmxhZ3MpOw0KKw0KKwkvKg0KKwkgKiBJZiBh biBFREYgZ3JvdXAgZ29lcyBhd2F5LCBpdHMgcGFyZW50IGdyb3VwDQorCSAqIChpZiBhbnkpLCBl bmRzIHVwIHdpdGggc29tZSBmcmVlIGJhbmR3aWR0aCB0aGF0DQorCSAqIGl0IG1pZ2h0IHVzZSBm b3Igb3RoZXIgZ3JvdXBzL3Rhc2tzLg0KKwkgKi8NCisJc3Bpbl9sb2NrKCZwYXJlbnQtPmVkZl9i YW5kd2lkdGgubG9jayk7DQorCWlmICh0Z19idyAmJiBwYXJlbnQpDQorCQlwYXJlbnQtPmVkZl9i YW5kd2lkdGgudG90YWxfYncgLT0gdGdfYnc7DQorCXNwaW5fdW5sb2NrKCZwYXJlbnQtPmVkZl9i YW5kd2lkdGgubG9jayk7DQorI2Vsc2UNCisJc3Bpbl9sb2NrX2lycXNhdmUoJnRhc2tfZ3JvdXBf bG9jaywgZmxhZ3MpOw0KKyNlbmRpZg0KKw0KIAlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoaSkgew0K IAkJdW5yZWdpc3Rlcl9mYWlyX3NjaGVkX2dyb3VwKHRnLCBpKTsNCisJCXVucmVnaXN0ZXJfZWRm X3NjaGVkX2dyb3VwKHRnLCBpKTsNCiAJCXVucmVnaXN0ZXJfcnRfc2NoZWRfZ3JvdXAodGcsIGkp Ow0KIAl9DQorDQogCWxpc3RfZGVsX3JjdSgmdGctPmxpc3QpOw0KIAlsaXN0X2RlbF9yY3UoJnRn LT5zaWJsaW5ncyk7DQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnRhc2tfZ3JvdXBfbG9jaywg ZmxhZ3MpOw0KQEAgLTEwMDU3LDE0ICsxMDQzNSw2IEBAIHVuc2lnbmVkIGxvbmcgc2NoZWRfZ3Jv dXBfc2hhcmVzKHN0cnVjdCB0YXNrX2dyb3VwICp0ZykNCiAgKi8NCiBzdGF0aWMgREVGSU5FX01V VEVYKHJ0X2NvbnN0cmFpbnRzX211dGV4KTsNCiANCi1zdGF0aWMgdW5zaWduZWQgbG9uZyB0b19y YXRpbyh1NjQgcGVyaW9kLCB1NjQgcnVudGltZSkNCi17DQotCWlmIChydW50aW1lID09IFJVTlRJ TUVfSU5GKQ0KLQkJcmV0dXJuIDFVTEwgPDwgMjA7DQotDQotCXJldHVybiBkaXY2NF91NjQocnVu dGltZSA8PCAyMCwgcGVyaW9kKTsNCi19DQotDQogLyogTXVzdCBiZSBjYWxsZWQgd2l0aCB0YXNr bGlzdF9sb2NrIGhlbGQgKi8NCiBzdGF0aWMgaW5saW5lIGludCB0Z19oYXNfcnRfdGFza3Moc3Ry dWN0IHRhc2tfZ3JvdXAgKnRnKQ0KIHsNCkBAIC0xMDM2OCw5ICsxMDczOCwxNSBAQCBzdGF0aWMg aW50DQogY3B1X2Nncm91cF9jYW5fYXR0YWNoKHN0cnVjdCBjZ3JvdXBfc3Vic3lzICpzcywgc3Ry dWN0IGNncm91cCAqY2dycCwNCiAJCSAgICAgIHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQ0KIHsN CisjaWYgZGVmaW5lZChDT05GSUdfUlRfR1JPVVBfU0NIRUQpIHx8IGRlZmluZWQoQ09ORklHX0VE Rl9HUk9VUF9TQ0hFRCkNCiAjaWZkZWYgQ09ORklHX1JUX0dST1VQX1NDSEVEDQogCWlmICghc2No ZWRfcnRfY2FuX2F0dGFjaChjZ3JvdXBfdGcoY2dycCksIHRzaykpDQogCQlyZXR1cm4gLUVJTlZB TDsNCisjZW5kaWYNCisjaWZkZWYgQ09ORklHX0VERl9HUk9VUF9TQ0hFRA0KKwlpZiAoIXNjaGVk X2VkZl9jYW5fYXR0YWNoKGNncnAsIHRzaykpDQorCQlyZXR1cm4gLUVJTlZBTDsNCisjZW5kaWYN CiAjZWxzZQ0KIAkvKiBXZSBkb24ndCBzdXBwb3J0IFJULXRhc2tzIGJlaW5nIGluIHNlcGFyYXRl IGdyb3VwcyAqLw0KIAlpZiAodHNrLT5zY2hlZF9jbGFzcyAhPSAmZmFpcl9zY2hlZF9jbGFzcykN CkBAIC0xMDM4NCw2ICsxMDc2MCwzMCBAQCBzdGF0aWMgdm9pZA0KIGNwdV9jZ3JvdXBfYXR0YWNo KHN0cnVjdCBjZ3JvdXBfc3Vic3lzICpzcywgc3RydWN0IGNncm91cCAqY2dycCwNCiAJCQlzdHJ1 Y3QgY2dyb3VwICpvbGRfY29udCwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spDQogew0KKyNpZmRl ZiBDT05GSUdfRURGX0dST1VQX1NDSEVEDQorCXN0cnVjdCB0YXNrX2dyb3VwICp0ZyA9IGNvbnRh aW5lcl9vZihjZ3JvdXBfc3Vic3lzX3N0YXRlKGNncnAsDQorCQkJCQkgICAgIGNwdV9jZ3JvdXBf c3Vic3lzX2lkKSwNCisJCQkJCSAgICAgc3RydWN0IHRhc2tfZ3JvdXAsIGNzcyk7DQorCXN0cnVj dCB0YXNrX2dyb3VwICpvbGRfdGcgPSBjb250YWluZXJfb2YoY2dyb3VwX3N1YnN5c19zdGF0ZShv bGRfY29udCwNCisJCQkJCQkgY3B1X2Nncm91cF9zdWJzeXNfaWQpLA0KKwkJCQkJCSBzdHJ1Y3Qg dGFza19ncm91cCwgY3NzKTsNCisJdTY0IHRza19idyA9IHRzay0+ZWRmLmJ3Ow0KKw0KKwkvKg0K KwkgKiBBbiBhbW91bnQgb2YgYmFuZHdpZHRoIGVxdWFsIHRvIHRoZSBiYW5kd2lkdGggb2YgdHNr DQorCSAqIGlzIGZyZWVkIGluIHRoZSBmb3JtZXIgZ3JvdXAgb2YgdHNrLCBhbmQgZGVjbGFyZWQg b2NjdXBpZWQNCisJICogaW4gdGhlIG5ldyBvbmUuDQorCSAqLw0KKwlzcGluX2xvY2tfaXJxKCZ0 Zy0+ZWRmX2JhbmR3aWR0aC5sb2NrKTsNCisJdGctPmVkZl9iYW5kd2lkdGgudG90YWxfYncgKz0g dHNrX2J3Ow0KKwlzcGluX3VubG9ja19pcnEoJnRnLT5lZGZfYmFuZHdpZHRoLmxvY2spOw0KKw0K KwlpZiAob2xkX3RnKSB7DQorCQlzcGluX2xvY2tfaXJxKCZvbGRfdGctPmVkZl9iYW5kd2lkdGgu bG9jayk7DQorCQlvbGRfdGctPmVkZl9iYW5kd2lkdGgudG90YWxfYncgLT0gdHNrX2J3Ow0KKwkJ c3Bpbl91bmxvY2tfaXJxKCZvbGRfdGctPmVkZl9iYW5kd2lkdGgubG9jayk7DQorCX0NCisjZW5k aWYNCiAJc2NoZWRfbW92ZV90YXNrKHRzayk7DQogfQ0KIA0KQEAgLTEwNDI2LDYgKzEwODI2LDEw MCBAQCBzdGF0aWMgdTY0IGNwdV9ydF9wZXJpb2RfcmVhZF91aW50KHN0cnVjdCBjZ3JvdXAgKmNn cnAsIHN0cnVjdCBjZnR5cGUgKmNmdCkNCiB9DQogI2VuZGlmIC8qIENPTkZJR19SVF9HUk9VUF9T Q0hFRCAqLw0KIA0KKyNpZmRlZiBDT05GSUdfRURGX0dST1VQX1NDSEVEDQorLyoNCisgKiBXZSBh bGxvdyBydW50aW1lX21heCA+IHBlcmlvZCwgc2luY2UgaXQgbWFrZXMgc2Vuc2UgdG8NCisgKiBh c3NpZ24gbW9yZSB0aGFuIDEwMCUgYmFuZHdpZHRoIHRvIGEgZ3JvdXAsIGlmIG9uIGFuIFNNUA0K KyAqIG1hY2hpbmUuDQorICovDQorc3RhdGljIGludCBfX2VkZl9zY2hlZHVsYWJsZShzdHJ1Y3Qg dGFza19ncm91cCAqdGcsDQorCQkJICAgICB1NjQgcnVudGltZV9tYXgsIHU2NCBwZXJpb2QpDQor ew0KKwlzdHJ1Y3QgdGFza19ncm91cCAqcGFyZW50ID0gdGctPnBhcmVudDsNCisJdTY0IG9sZF9i dyA9IHRnLT5lZGZfYmFuZHdpZHRoLmJ3Ow0KKwl1NjQgcGFyZW50X2J3ID0gcGFyZW50ID8gcGFy ZW50LT5lZGZfYmFuZHdpZHRoLmJ3IDogMDsNCisJdTY0IGJ3ID0gcGVyaW9kID4gMCA/IHRvX3Jh dGlvKHBlcmlvZCwgcnVudGltZV9tYXgpIDogMDsNCisJaW50IHJldCA9IDA7DQorDQorCWlmIChi dyA8IHRnLT5lZGZfYmFuZHdpZHRoLnRvdGFsX2J3KQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQorDQor CWlmIChwYXJlbnQpIHsNCisJCS8qDQorCQkgKiBBbGwgd2UgbmVlZCB0byBkbyBpcyBjaGVjayBp ZiB0aGUgcGFyZW50IGdyb3VwIGlzIGFibGUNCisJCSAqIHRvIGFjY29tb2RhdGUgdGhlIG5ldyBi YW5kd2lkdGggb2YgdGhpcyBncm91cCBvciBub3QsDQorCQkgKiBnaXZlbiBpdHMgYWN0dWFsIGFs bG9jYXRlZCBiYW5kd2lkdGgsIGUuZy4sIHRvIG90aGVyDQorCQkgKiBncm91cHMgb3IgdGFza3Mu DQorCQkgKi8NCisJCWlmIChwYXJlbnRfYncgPCBwYXJlbnQtPmVkZl9iYW5kd2lkdGgudG90YWxf YncgLQ0KKwkJICAgIG9sZF9idyArIGJ3KQ0KKwkJCXJldHVybiAtRUlOVkFMOw0KKw0KKwkJc3Bp bl9sb2NrX2lycSgmcGFyZW50LT5lZGZfYmFuZHdpZHRoLmxvY2spOw0KKwkJcGFyZW50LT5lZGZf YmFuZHdpZHRoLnRvdGFsX2J3IC09IG9sZF9idzsNCisJCXBhcmVudC0+ZWRmX2JhbmR3aWR0aC50 b3RhbF9idyArPSBidzsNCisJCXNwaW5fdW5sb2NrX2lycSgmcGFyZW50LT5lZGZfYmFuZHdpZHRo LmxvY2spOw0KKwl9DQorDQorCWlmICghcmV0KSB7DQorCQlzcGluX2xvY2tfaXJxKCZ0Zy0+ZWRm X2JhbmR3aWR0aC5sb2NrKTsNCisJCXRnLT5lZGZfYmFuZHdpZHRoLnJ1bnRpbWVfbWF4ID0gcnVu dGltZV9tYXg7DQorCQl0Zy0+ZWRmX2JhbmR3aWR0aC5wZXJpb2QgPSBwZXJpb2Q7DQorCQl0Zy0+ ZWRmX2JhbmR3aWR0aC5idyA9IGJ3Ow0KKwkJc3Bpbl91bmxvY2tfaXJxKCZ0Zy0+ZWRmX2JhbmR3 aWR0aC5sb2NrKTsNCisJfQ0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IGNw dV9lZGZfcnVudGltZV93cml0ZV91aW50KHN0cnVjdCBjZ3JvdXAgKmNncnAsDQorCQkJCSAgICAg IHN0cnVjdCBjZnR5cGUgKmNmdHlwZSwNCisJCQkJICAgICAgdTY0IGVkZl9ydW50aW1lX3VzKQ0K K3sNCisJc3RydWN0IHRhc2tfZ3JvdXAgKnRnID0gY2dyb3VwX3RnKGNncnApOw0KKw0KKwlyZXR1 cm4gX19lZGZfc2NoZWR1bGFibGUodGcsDQorCQkJCSBlZGZfcnVudGltZV91cyAqIE5TRUNfUEVS X1VTRUMsDQorCQkJCSB0Zy0+ZWRmX2JhbmR3aWR0aC5wZXJpb2QpOw0KK30NCisNCitzdGF0aWMg dTY0IGNwdV9lZGZfcnVudGltZV9yZWFkX3VpbnQoc3RydWN0IGNncm91cCAqY2dycCwgc3RydWN0 IGNmdHlwZSAqY2Z0KQ0KK3sNCisJc3RydWN0IHRhc2tfZ3JvdXAgKnRnID0gY2dyb3VwX3RnKGNn cnApOw0KKwl1NjQgcnVudGltZTsNCisNCisJc3Bpbl9sb2NrX2lycSgmdGctPmVkZl9iYW5kd2lk dGgubG9jayk7DQorCXJ1bnRpbWUgPSB0Zy0+ZWRmX2JhbmR3aWR0aC5ydW50aW1lX21heDsNCisJ c3Bpbl91bmxvY2tfaXJxKCZ0Zy0+ZWRmX2JhbmR3aWR0aC5sb2NrKTsNCisJZG9fZGl2KHJ1bnRp bWUsIE5TRUNfUEVSX1VTRUMpOw0KKw0KKwlyZXR1cm4gcnVudGltZTsNCit9DQorDQorc3RhdGlj IGludCBjcHVfZWRmX3BlcmlvZF93cml0ZV91aW50KHN0cnVjdCBjZ3JvdXAgKmNncnAsIHN0cnVj dCBjZnR5cGUgKmNmdHlwZSwNCisJCXU2NCBlZGZfcGVyaW9kX3VzKQ0KK3sNCisJc3RydWN0IHRh c2tfZ3JvdXAgKnRnID0gY2dyb3VwX3RnKGNncnApOw0KKw0KKwlyZXR1cm4gX19lZGZfc2NoZWR1 bGFibGUodGcsDQorCQkJCSB0Zy0+ZWRmX2JhbmR3aWR0aC5ydW50aW1lX21heCwNCisJCQkJIGVk Zl9wZXJpb2RfdXMgKiBOU0VDX1BFUl9VU0VDKTsNCit9DQorDQorc3RhdGljIHU2NCBjcHVfZWRm X3BlcmlvZF9yZWFkX3VpbnQoc3RydWN0IGNncm91cCAqY2dycCwgc3RydWN0IGNmdHlwZSAqY2Z0 KQ0KK3sNCisJc3RydWN0IHRhc2tfZ3JvdXAgKnRnID0gY2dyb3VwX3RnKGNncnApOw0KKwl1NjQg cGVyaW9kOw0KKw0KKwlzcGluX2xvY2tfaXJxKCZ0Zy0+ZWRmX2JhbmR3aWR0aC5sb2NrKTsNCisJ cGVyaW9kID0gdGctPmVkZl9iYW5kd2lkdGgucGVyaW9kOw0KKwlzcGluX3VubG9ja19pcnEoJnRn LT5lZGZfYmFuZHdpZHRoLmxvY2spOw0KKwlkb19kaXYocGVyaW9kLCBOU0VDX1BFUl9VU0VDKTsN CisNCisJcmV0dXJuIHBlcmlvZDsNCit9DQorI2VuZGlmDQorDQogc3RhdGljIHN0cnVjdCBjZnR5 cGUgY3B1X2ZpbGVzW10gPSB7DQogI2lmZGVmIENPTkZJR19GQUlSX0dST1VQX1NDSEVEDQogCXsN CkBAIC0xMDQ0Niw2ICsxMDk0MCwxOSBAQCBzdGF0aWMgc3RydWN0IGNmdHlwZSBjcHVfZmlsZXNb XSA9IHsNCiAJCS53cml0ZV91NjQgPSBjcHVfcnRfcGVyaW9kX3dyaXRlX3VpbnQsDQogCX0sDQog I2VuZGlmDQorI2lmZGVmIENPTkZJR19FREZfR1JPVVBfU0NIRUQNCisJew0KKwkJLm5hbWUgPSAi ZWRmX3J1bnRpbWVfdXMiLA0KKwkJLnJlYWRfdTY0ID0gY3B1X2VkZl9ydW50aW1lX3JlYWRfdWlu dCwNCisJCS53cml0ZV91NjQgPSBjcHVfZWRmX3J1bnRpbWVfd3JpdGVfdWludCwNCisJfSwNCisJ ew0KKwkJLm5hbWUgPSAiZWRmX3BlcmlvZF91cyIsDQorCQkucmVhZF91NjQgPSBjcHVfZWRmX3Bl cmlvZF9yZWFkX3VpbnQsDQorCQkud3JpdGVfdTY0ID0gY3B1X2VkZl9wZXJpb2Rfd3JpdGVfdWlu dCwNCisJfSwNCisjZW5kaWYNCisNCiB9Ow0KIA0KIHN0YXRpYyBpbnQgY3B1X2Nncm91cF9wb3B1 bGF0ZShzdHJ1Y3QgY2dyb3VwX3N1YnN5cyAqc3MsIHN0cnVjdCBjZ3JvdXAgKmNvbnQpDQpkaWZm IC0tZ2l0IGEva2VybmVsL3NjaGVkX2RlYnVnLmMgYi9rZXJuZWwvc2NoZWRfZGVidWcuYw0KaW5k ZXggZWZiODQ0MC4uMTI1MmE0MyAxMDA2NDQNCi0tLSBhL2tlcm5lbC9zY2hlZF9kZWJ1Zy5jDQor KysgYi9rZXJuZWwvc2NoZWRfZGVidWcuYw0KQEAgLTE0Niw3ICsxNDYsOCBAQCBzdGF0aWMgdm9p ZCBwcmludF9ycShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBycSAqcnEsIGludCBycV9jcHUp DQogfQ0KIA0KICNpZiBkZWZpbmVkKENPTkZJR19DR1JPVVBfU0NIRUQpICYmIFwNCi0JKGRlZmlu ZWQoQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQpIHx8IGRlZmluZWQoQ09ORklHX1JUX0dST1VQX1ND SEVEKSkNCisJKGRlZmluZWQoQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQpIHx8IGRlZmluZWQoQ09O RklHX1JUX0dST1VQX1NDSEVEKSB8fCBcDQorCSBkZWZpbmVkKENPTkZJR19FREZfR1JPVVBfU0NI RUQpKQ0KIHN0YXRpYyB2b2lkIHRhc2tfZ3JvdXBfcGF0aChzdHJ1Y3QgdGFza19ncm91cCAqdGcs IGNoYXIgKmJ1ZiwgaW50IGJ1ZmxlbikNCiB7DQogCS8qIG1heSBiZSBOVUxMIGlmIHRoZSB1bmRl cmx5aW5nIGNncm91cCBpc24ndCBmdWxseS1jcmVhdGVkIHlldCAqLw0KQEAgLTIxOCw2ICsyMTks MzggQEAgdm9pZCBwcmludF9jZnNfcnEoc3RydWN0IHNlcV9maWxlICptLCBpbnQgY3B1LCBzdHJ1 Y3QgY2ZzX3JxICpjZnNfcnEpDQogI2VuZGlmDQogfQ0KIA0KK3ZvaWQgcHJpbnRfZWRmX3JxKHN0 cnVjdCBzZXFfZmlsZSAqbSwgaW50IGNwdSwgc3RydWN0IGVkZl9ycSAqZWRmX3JxKQ0KK3sNCisJ czY0IG1pbl9kZWFkbGluZSA9IC0xLCBtYXhfZGVhZGxpbmUgPSAtMTsNCisJc3RydWN0IHJxICpy cSA9ICZwZXJfY3B1KHJ1bnF1ZXVlcywgY3B1KTsNCisJc3RydWN0IHNjaGVkX2VkZl9lbnRpdHkg Kmxhc3Q7DQorCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQorDQorCVNFUV9wcmludGYobSwgIlxuZWRm X3JxWyVkXTpcbiIsIGNwdSk7DQorDQorCXNwaW5fbG9ja19pcnFzYXZlKCZycS0+bG9jaywgZmxh Z3MpOw0KKwlpZiAoZWRmX3JxLT5yYl9sZWZ0bW9zdCkNCisJCW1pbl9kZWFkbGluZSA9IChyYl9l bnRyeShlZGZfcnEtPnJiX2xlZnRtb3N0LA0KKwkJCQkJIHN0cnVjdCBzY2hlZF9lZGZfZW50aXR5 LA0KKwkJCQkJIHJiX25vZGUpKS0+ZGVhZGxpbmU7DQorCWxhc3QgPSBfX3BpY2tfZWRmX2xhc3Rf ZW50aXR5KGVkZl9ycSk7DQorCWlmIChsYXN0KQ0KKwkJbWF4X2RlYWRsaW5lID0gbGFzdC0+ZGVh ZGxpbmU7DQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJxLT5sb2NrLCBmbGFncyk7DQorDQor I2RlZmluZSBQKHgpIFwNCisJU0VRX3ByaW50ZihtLCAiICAuJS0zMHM6ICVMZFxuIiwgI3gsIChs b25nIGxvbmcpKHgpKQ0KKyNkZWZpbmUgUE4oeCkgXA0KKwlTRVFfcHJpbnRmKG0sICIgIC4lLTMw czogJUxkLiUwNmxkXG4iLCAjeCwgU1BMSVRfTlMoeCkpDQorDQorCVAoZWRmX3JxLT5lZGZfbnJf cnVubmluZyk7DQorCVBOKG1pbl9kZWFkbGluZSk7DQorCVBOKG1heF9kZWFkbGluZSk7DQorDQor I3VuZGVmIFBODQorI3VuZGVmIFANCit9DQorDQogdm9pZCBwcmludF9ydF9ycShzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIGludCBjcHUsIHN0cnVjdCBydF9ycSAqcnRfcnEpDQogew0KICNpZiBkZWZpbmVk KENPTkZJR19DR1JPVVBfU0NIRUQpICYmIGRlZmluZWQoQ09ORklHX1JUX0dST1VQX1NDSEVEKQ0K QEAgLTMwMCw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9jcHUoc3RydWN0IHNlcV9maWxl ICptLCBpbnQgY3B1KQ0KICN1bmRlZiBQDQogI2VuZGlmDQogCXByaW50X2Nmc19zdGF0cyhtLCBj cHUpOw0KKwlwcmludF9lZGZfc3RhdHMobSwgY3B1KTsNCiAJcHJpbnRfcnRfc3RhdHMobSwgY3B1 KTsNCiANCiAJcHJpbnRfcnEobSwgcnEsIGNwdSk7DQpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVk X2VkZi5jIGIva2VybmVsL3NjaGVkX2VkZi5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMC4uY2RlYzQzMw0KLS0tIC9kZXYvbnVsbA0KKysrIGIva2VybmVsL3NjaGVkX2VkZi5j DQpAQCAtMCwwICsxLDU1MCBAQA0KKy8qDQorICogRWFybGllc3QgRGVhZGxpbmUgRmlyc2YgKEVE RikgU2NoZWR1bGluZyBDbGFzcyAoU0NIRURfRURGIHBvbGljeSkNCisgKg0KKyAqIEVhcmxpZXN0 IERlYWRsaW5lIEZpcnN0IHNjaGVkdWxpbmcgZm9yIHBlcmlvZGljIG9yIHNwb3JhZGljIHRhc2tz Lg0KKyAqDQorICogQW4gRURGIHRhc2sgc3BlY2lmaWVzOg0KKyAqICAtIGEgbWF4aW11bSBydW50 aW1lLA0KKyAqICAtIGEgcGVyaW9kIG9yIG1pbmltdW0gaW50ZXJhcnJpdmFsIHRpbWUuDQorICog VGhlIHNjaGVkdWxlciwgb24gaXRzIHR1cm46DQorICogIC0gc2NoZWR1bGUgdGhlIHRhc2sgYWNj b3JkaW5nIHRvIGl0cyBkZWFkbGluZSBkPXQrcGVyaW9kLA0KKyAqICAtIGVuZm9yY2VzIHRoZSB0 YXNrIHRvIG5vdCBvdmVyY2FtZSBpdHMgYmFuZHdpZHRoIEI9cnVudGltZV9tYXgvcGVyaW9kLg0K KyAqDQorICogQXQgdGhlIGVuZCBvZiBlYWNoIGluc3RhbmNlIG9mIGEgcGVyaW9kaWMgam9iIChv ciBzcG9yYWRpYyBhY3RpdmF0aW9uKSwNCisgKiB0aGUgdGFzayBtYXkgaW5mb3JtIHRoZSBzY2hl ZHVsZXIgYWJvdXQgc3VjaCBldmVudCwgYnkgY2FsbGluZw0KKyAqIHNjaGVkX3lpZWxkKCksIGFu ZCB0aGVuIHN1c3BlbmRpbmcgdW50aWwgbmV4dCBhY3RpdmF0aW9uIHRpbWUuDQorICoNCisgKiBU aGUgc3RyYXRlZ3kgdXNlZCB0byBjb25maW5lIGVhY2ggdGFzayBpbnNpZGUgaXRzIGJhbmR3aWR0 aCByZXNlcnZhdGlvbg0KKyAqIGlzIHRoZSBDb25zdGFudCBCYW5kd2lkdGggU2VydmVyIChDQlMp IHNjaGVkdWxpbmcsIGEgc2xpZ2h0IHZhcmlhdGlvbiBvbg0KKyAqIEVERiB0aGF0IG1ha2VzIHRo aXMgcG9zc2libGUuDQorICoNCisgKiBDb3JyZWN0IGJlaGF2aW9yLCBpLmUuLCBubyBFREYgdGFz ayBtaXNzZXMgaXRzIGRlYWRsaW5lLCBpcyBvbmx5DQorICogZ3VhcmFudGVlZCBpZiB0aGUgcGFy YW1ldGVycyBvZiBhbGwgdGhlIEVERiBlbnRpdGllcyBpbiB0aGUgc3lzdGVtIGFyZQ0KKyAqIGFz c2lnbmVkIHNvIHRvIHJlc3VsdCBpbiBhIHNjaGVkdWxhYmxlIHNvbHV0aW9uLg0KKyAqIEhvd2V2 ZXIsIHRoYW5rcyB0byBiYW5kd2lkdGggaXNvbGF0aW9uLCBvdmVycnVucyBhbmQgZGVhZGxpbmUg bWlzc2VzDQorICogcmVtYWlucyBsb2NhbCB0byBhIHNpbmdsZSB0YXNrLCBhbmQgZG9lcyBub3Qg YWZmZWN0IGFueSBvdGhlciB0YXNrIGluDQorICogdGhlIHN5c3RlbS4NCisgKg0KKyAqIEdyb3Vw cywgaWYgY29uZmlndXJlZCwgaGF2ZSBiYW5kd2lkdGggYXMgd2VsbCwgYW5kIGl0IGlzIGVuZm9y Y2VkIHRoYXQNCisgKiB0aGUgc3VtIG9mIHRoZSBiYW5kd2lkdGhzIG9mIGVudGl0aWVzICh0YXNr cyBhbmQgZ3JvdXBzKSBiZWxvbmdpbmcgdG8NCisgKiBhIGdyb3VwIHN0YXlzIGJlbG93IGl0cyBv d24gYmFuZHdpZHRoLg0KKyAqDQorICogQ29weXJpZ2h0IChDKSAyMDA5IERhcmlvIEZhZ2dpb2xp LCBNaWNoYWVsIFRyaW1hcmNoaQ0KKyAqLw0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NoZWRf Y2xhc3MgZWRmX3NjaGVkX2NsYXNzOw0KKw0KK3N0YXRpYyBpbmxpbmUgc3RydWN0IHRhc2tfc3Ry dWN0ICplZGZfdGFza19vZihzdHJ1Y3Qgc2NoZWRfZWRmX2VudGl0eSAqZWRmX3NlKQ0KK3sNCisJ cmV0dXJuIGNvbnRhaW5lcl9vZihlZGZfc2UsIHN0cnVjdCB0YXNrX3N0cnVjdCwgZWRmKTsNCit9 DQorDQorc3RhdGljIGlubGluZSBzdHJ1Y3QgcnEgKnJxX29mX2VkZl9ycShzdHJ1Y3QgZWRmX3Jx ICplZGZfcnEpDQorew0KKwlyZXR1cm4gY29udGFpbmVyX29mKGVkZl9ycSwgc3RydWN0IHJxLCBl ZGYpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIHN0cnVjdCBlZGZfcnEgKmVkZl9ycV9vZl9zZShz dHJ1Y3Qgc2NoZWRfZWRmX2VudGl0eSAqZWRmX3NlKQ0KK3sNCisJc3RydWN0IHRhc2tfc3RydWN0 ICpwID0gZWRmX3Rhc2tfb2YoZWRmX3NlKTsNCisJc3RydWN0IHJxICpycSA9IHRhc2tfcnEocCk7 DQorDQorCXJldHVybiAmcnEtPmVkZjsNCit9DQorDQorc3RhdGljIGlubGluZSBpbnQgZWRmX3Nl X2Jvb3N0ZWQoc3RydWN0IHNjaGVkX2VkZl9lbnRpdHkgKmVkZl9zZSkNCit7DQorCXN0cnVjdCB0 YXNrX3N0cnVjdCAqcCA9IGVkZl90YXNrX29mKGVkZl9zZSk7DQorDQorCXJldHVybiBwLT5wcmlv ICE9IHAtPm5vcm1hbF9wcmlvOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBvbl9lZGZfcnEo c3RydWN0IHNjaGVkX2VkZl9lbnRpdHkgKmVkZl9zZSkNCit7DQorCXJldHVybiAhUkJfRU1QVFlf Tk9ERSgmZWRmX3NlLT5yYl9ub2RlKTsNCit9DQorDQorI2RlZmluZSBmb3JfZWFjaF9sZWFmX2Vk Zl9ycShlZGZfcnEsIHJxKSBcDQorICAgICAgICBmb3IgKGVkZl9ycSA9ICZycS0+ZWRmOyBlZGZf cnE7IGVkZl9ycSA9IE5VTEwpDQorDQorc3RhdGljIGlubGluZSBpbnQgZWRmX3RpbWVfYmVmb3Jl KHU2NCBhLCB1NjQgYikNCit7DQorCXJldHVybiAoczY0KShhIC0gYikgPCAwOw0KK30NCisNCitz dGF0aWMgaW5saW5lIHU2NCBlZGZfbWF4X2RlYWRsaW5lKHU2NCBhLCB1NjQgYikNCit7DQorCXM2 NCBkZWx0YSA9IChzNjQpKGIgLSBhKTsNCisJaWYgKGRlbHRhID4gMCkNCisJCWEgPSBiOw0KKw0K KwlyZXR1cm4gYTsNCit9DQorDQorc3RhdGljIGlubGluZSB2b2lkIF9fZWRmX25ld190b19ydW5u aW5nKHN0cnVjdCBzY2hlZF9lZGZfZW50aXR5ICplZGZfc2UpDQorew0KKwlzdHJ1Y3QgZWRmX3Jx ICplZGZfcnEgPSBlZGZfcnFfb2Zfc2UoZWRmX3NlKTsNCisJc3RydWN0IHJxICpycSA9IHJxX29m X2VkZl9ycShlZGZfcnEpOw0KKw0KKwllZGZfc2UtPmVkZl9mbGFncyAmPSB+RURGX05FVzsNCisJ ZWRmX3NlLT5lZGZfZmxhZ3MgfD0gRURGX1JVTk5JTkc7DQorDQorCWVkZl9zZS0+ZGVhZGxpbmUg PSBycS0+Y2xvY2sgKyBlZGZfc2UtPnBlcmlvZDsNCit9DQorDQorc3RhdGljIGlubGluZSB2b2lk IF9fZWRmX2NsZWFyX2VuZGVkKHN0cnVjdCBzY2hlZF9lZGZfZW50aXR5ICplZGZfc2UpDQorew0K KwlzdHJ1Y3QgZWRmX3JxICplZGZfcnEgPSBlZGZfcnFfb2Zfc2UoZWRmX3NlKTsNCisJc3RydWN0 IHJxICpycSA9IHJxX29mX2VkZl9ycShlZGZfcnEpOw0KKw0KKwllZGZfc2UtPmVkZl9mbGFncyAm PSB+RURGX0VOREVEOw0KKw0KKwllZGZfc2UtPnJ1bnRpbWUgPSBlZGZfc2UtPnJ1bnRpbWUgPiAw ID8gMCA6IGVkZl9zZS0+cnVudGltZTsNCisJaWYgKGVkZl90aW1lX2JlZm9yZShlZGZfc2UtPmRl YWRsaW5lLCBycS0+Y2xvY2spKQ0KKwkJZWRmX3NlLT5kZWFkbGluZSA9IHJxLT5jbG9jazsNCit9 DQorDQorc3RhdGljIGlubGluZSB2b2lkIF9fZWRmX3NldF9lbmRlZChzdHJ1Y3Qgc2NoZWRfZWRm X2VudGl0eSAqZWRmX3NlKQ0KK3sNCisJZWRmX3NlLT5lZGZfZmxhZ3MgfD0gRURGX0VOREVEOw0K K30NCisNCitzdGF0aWMgdm9pZCBlbnF1ZXVlX2VkZl9lbnRpdHkoc3RydWN0IHNjaGVkX2VkZl9l bnRpdHkgKmVkZl9zZSk7DQorc3RhdGljIHZvaWQgZGVxdWV1ZV9lZGZfZW50aXR5KHN0cnVjdCBz Y2hlZF9lZGZfZW50aXR5ICplZGZfc2UpOw0KKw0KK3N0YXRpYyB2b2lkIHVwZGF0ZV9lZGZfcGFy YW1zKHN0cnVjdCBzY2hlZF9lZGZfZW50aXR5ICplZGZfc2UpDQorew0KKwlzdHJ1Y3QgZWRmX3Jx ICplZGZfcnEgPSBlZGZfcnFfb2Zfc2UoZWRmX3NlKTsNCisJc3RydWN0IHJxICpycSA9IHJxX29m X2VkZl9ycShlZGZfcnEpOw0KKwl1NjQgbGVmdCwgcmlnaHQ7DQorDQorCUJVR19PTihvbl9lZGZf cnEoZWRmX3NlKSk7DQorDQorCWlmIChlZGZfc2UtPmVkZl9mbGFncyAmIEVERl9ORVcpIHsNCisJ CV9fZWRmX25ld190b19ydW5uaW5nKGVkZl9zZSk7DQorCQlyZXR1cm47DQorCX0NCisJaWYgKGVk Zl9zZS0+ZWRmX2ZsYWdzICYgRURGX0VOREVEKSB7DQorCQlfX2VkZl9jbGVhcl9lbmRlZChlZGZf c2UpOw0KKwkJZ290byB1cGRhdGU7DQorCX0NCisNCisJLyoNCisJICogVXBkYXRlIHRoZSBkZWFk bGluZSB0byB0aGUgY3VycmVudCB0aW1lIG9ubHkgaWY6DQorCSAqIC0gdGhlIGJ1ZGdldCBoYXMg YmVlbiBjb21wbGV0ZWx5IGV4aGF1c3RlZDsNCisJICogLSB1c2luZyB0aGUgcmFtYWluaW5nIGJ1 ZGdldCwgd2l0aCB0aGUgY3VycmVudCBkZWFkbGluZSwgd291bGQNCisJICogICBtYWtlIHRoZSB0 YXNrIGV4Y2VlZCBpdHMgYmFuZHdpZHRoOw0KKwkgKiAtIHRoZSBkZWFkbGluZSBpdHNlbGYgaXMg aW4gdGhlIHBhc3QuDQorCSAqDQorCSAqIEZvciB0aGUgc2Vjb25kIGNvbmRpdGlvbiB0byBob2xk LCB3ZSBjaGVjayBpZjoNCisJICogIHJ1bnRpbWUgLyAoZGVhZGxpbmUgLSBycS0+Y2xvY2spID49 IHJ1bnRpbWVfbWF4IC8gcGVyaW9kDQorCSAqDQorCSAqIFdoaWNoIGJhc2ljYWxseSBzYXlzIGlm LCBpbiB0aGUgdGltZSBsZWZ0IGJlZm9yZSB0aGUgY3VycmVudA0KKwkgKiBkZWFkbGluZSwgdGhl IHRhc2tzIG92ZXJjb21lIGl0cyBleHBlY3RlZCBydW50aW1lIGJ5IHVzaW5nIHRoZQ0KKwkgKiBy ZXNpZHVhbCBidWRnZXQgKGxlZnQgYW5kIHJpZ2h0IGFyZSB0aGUgdHdvIHNpZGVzIG9mIHRoZSBl cXVhdGlvbiwNCisJICogYWZ0ZXIgYSBiaXQgb2Ygc2h1ZmZsaW5nIHRvIHVzZSBtdWx0aXBsaWNh dGlvbnMgaW5zdGVhZCBvZg0KKwkgKiBkaXZpc2lvbnMpLg0KKwkgKi8NCisJbGVmdCA9IGVkZl9z ZS0+cnVudGltZSA+IDAgPyBlZGZfc2UtPnBlcmlvZCAqIGVkZl9zZS0+cnVudGltZSA6IDA7DQor CXJpZ2h0ID0gKGVkZl9zZS0+ZGVhZGxpbmUgLSBycS0+Y2xvY2spICogZWRmX3NlLT5ydW50aW1l X21heDsNCisNCisJaWYgKGVkZl9zZS0+cnVudGltZSA8IDAgfHwgZWRmX3RpbWVfYmVmb3JlKHJp Z2h0LCBsZWZ0KSB8fA0KKwkgICAgZWRmX3RpbWVfYmVmb3JlKGVkZl9zZS0+ZGVhZGxpbmUsIHJx LT5jbG9jaykpIHsNCisJCWVkZl9zZS0+ZGVhZGxpbmUgPSBycS0+Y2xvY2s7DQordXBkYXRlOg0K KwkJLyoNCisJCSAqIEtlZXAgbW92aW5nIHRoZSBkZWFkbGluZSBhbmQgcmVwbGVuaXNoaW5nIHJ1 bnRpbWUgYnkgdGhlDQorCQkgKiBwcm9wZXIgYW1vdW50IGF0IGxlYXN0IHVudGlsIHRoZSBydW50 aW1lIGJlY29tZXMgcG9zaXRpdmUuDQorCQkgKi8NCisJCXdoaWxlIChlZGZfc2UtPnJ1bnRpbWUg PD0gMCkgew0KKwkJCWVkZl9zZS0+ZGVhZGxpbmUgKz0gZWRmX3NlLT5wZXJpb2Q7DQorCQkJaWYg KGVkZl9zZS0+cnVudGltZSArIGVkZl9zZS0+cnVudGltZV9tYXggPCBlZGZfc2UtPnJ1bnRpbWVf bWF4KQ0KKwkJCQllZGZfc2UtPnJ1bnRpbWUgKz0gZWRmX3NlLT5ydW50aW1lX21heDsNCisJCQll bHNlDQorCQkJCWVkZl9zZS0+cnVudGltZSA9IGVkZl9zZS0+cnVudGltZV9tYXg7DQorCQl9DQor CX0NCit9DQorDQorc3RhdGljIGludCBzdGFydF9lZGZfdGltZXIoc3RydWN0IHNjaGVkX2VkZl9l bnRpdHkgKmVkZl9zZSkNCit7DQorCXN0cnVjdCBlZGZfcnEgKmVkZl9ycSA9IGVkZl9ycV9vZl9z ZShlZGZfc2UpOw0KKwlzdHJ1Y3QgcnEgKnJxID0gcnFfb2ZfZWRmX3JxKGVkZl9ycSk7DQorCWt0 aW1lX3Qgbm93LCBkZWx0YSwgYWN0Ow0KKwlrdGltZV90IHNvZnQsIGhhcmQ7DQorCXVuc2lnbmVk IGxvbmcgcmFuZ2U7DQorDQorCW5vdyA9IGhydGltZXJfY2JfZ2V0X3RpbWUoJmVkZl9zZS0+ZWRm X3RpbWVyKTsNCisJZGVsdGEgPSBrdGltZV9zdWJfbnMobm93LCBycS0+Y2xvY2spOw0KKwlhY3Qg PSBuc190b19rdGltZShlZGZfc2UtPmRlYWRsaW5lKTsNCisJYWN0ID0ga3RpbWVfYWRkKGFjdCwg ZGVsdGEpOw0KKw0KKwlocnRpbWVyX3NldF9leHBpcmVzKCZlZGZfc2UtPmVkZl90aW1lciwgYWN0 KTsNCisNCisJc29mdCA9IGhydGltZXJfZ2V0X3NvZnRleHBpcmVzKCZlZGZfc2UtPmVkZl90aW1l cik7DQorCWhhcmQgPSBocnRpbWVyX2dldF9leHBpcmVzKCZlZGZfc2UtPmVkZl90aW1lcik7DQor CXJhbmdlID0ga3RpbWVfdG9fbnMoa3RpbWVfc3ViKGhhcmQsIHNvZnQpKTsNCisJX19ocnRpbWVy X3N0YXJ0X3JhbmdlX25zKCZlZGZfc2UtPmVkZl90aW1lciwgc29mdCwNCisJCQkJIHJhbmdlLCBI UlRJTUVSX01PREVfQUJTLCAwKTsNCisNCisJcmV0dXJuIGhydGltZXJfYWN0aXZlKCZlZGZfc2Ut PmVkZl90aW1lcik7DQorfQ0KKw0KK3N0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBlZGZfdGlt ZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKQ0KK3sNCisJc3RydWN0IHNjaGVkX2VkZl9lbnRpdHkg KmVkZl9zZSA9IGNvbnRhaW5lcl9vZih0aW1lciwNCisJCQkJCQkgICAgICAgc3RydWN0IHNjaGVk X2VkZl9lbnRpdHksDQorCQkJCQkJICAgICAgIGVkZl90aW1lcik7DQorCXN0cnVjdCB0YXNrX3N0 cnVjdCAqcCA9IGVkZl90YXNrX29mKGVkZl9zZSk7DQorCXN0cnVjdCBlZGZfcnEgKmVkZl9ycSA9 IGVkZl9ycV9vZl9zZShlZGZfc2UpOw0KKwlzdHJ1Y3QgcnEgKnJxID0gcnFfb2ZfZWRmX3JxKGVk Zl9ycSk7DQorDQorCXNwaW5fbG9jaygmcnEtPmxvY2spOw0KKwlpZiAoIWVkZl90YXNrKHApKQ0K KwkJZ290byB1bmxvY2s7DQorDQorCXVwZGF0ZV9lZGZfcGFyYW1zKGVkZl9zZSk7DQorCWlmIChw LT5zZS5vbl9ycSAmJiAhb25fZWRmX3JxKGVkZl9zZSkpIHsNCisJCWVucXVldWVfZWRmX2VudGl0 eShlZGZfc2UpOw0KKwkJcmVzY2hlZF90YXNrKHJxLT5jdXJyKTsNCisJfQ0KK3VubG9jazoNCisJ c3Bpbl91bmxvY2soJnJxLT5sb2NrKTsNCisNCisJcmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUOw0K K30NCisNCitzdGF0aWMgdm9pZCBpbml0X2VkZl90aW1lcihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIp DQorew0KKwlpZiAoaHJ0aW1lcl9hY3RpdmUodGltZXIpKSB7DQorCQlocnRpbWVyX3RyeV90b19j YW5jZWwodGltZXIpOw0KKwkJcmV0dXJuOw0KKwl9DQorDQorCWhydGltZXJfaW5pdCh0aW1lciwg Q0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTsNCisJdGltZXItPmZ1bmN0aW9uID0g ZWRmX3RpbWVyOw0KK30NCisNCitzdGF0aWMgaW50IGVkZl9ydW50aW1lX2V4Y2VlZGVkKHN0cnVj dCBzY2hlZF9lZGZfZW50aXR5ICplZGZfc2UpDQorew0KKwlpZiAoZWRmX3NlLT5ydW50aW1lID4g MCB8fCBlZGZfc2VfYm9vc3RlZChlZGZfc2UpKQ0KKwkJcmV0dXJuIDA7DQorDQorCUJVR19PTiho cnRpbWVyX2FjdGl2ZSgmZWRmX3NlLT5lZGZfdGltZXIpKTsNCisNCisJZGVxdWV1ZV9lZGZfZW50 aXR5KGVkZl9zZSk7DQorCWlmICghc3RhcnRfZWRmX3RpbWVyKGVkZl9zZSkpIHsNCisJCXVwZGF0 ZV9lZGZfcGFyYW1zKGVkZl9zZSk7DQorCQllbnF1ZXVlX2VkZl9lbnRpdHkoZWRmX3NlKTsNCisJ fQ0KKw0KKwlyZXR1cm4gMTsNCit9DQorDQorc3RhdGljIHZvaWQgdXBkYXRlX2N1cnJfZWRmKHN0 cnVjdCBycSAqcnEpDQorew0KKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnIgPSBycS0+Y3VycjsN CisJc3RydWN0IHNjaGVkX2VkZl9lbnRpdHkgKmVkZl9zZSA9ICZjdXJyLT5lZGY7DQorCXU2NCBk ZWx0YV9leGVjOw0KKw0KKwlpZiAoIWVkZl90YXNrKGN1cnIpIHx8ICFvbl9lZGZfcnEoZWRmX3Nl KSkNCisJCXJldHVybjsNCisNCisJZGVsdGFfZXhlYyA9IHJxLT5jbG9jayAtIGN1cnItPnNlLmV4 ZWNfc3RhcnQ7DQorCWlmICh1bmxpa2VseSgoczY0KWRlbHRhX2V4ZWMgPCAwKSkNCisJCWRlbHRh X2V4ZWMgPSAwOw0KKw0KKwlzY2hlZHN0YXRfc2V0KGN1cnItPnNlLmV4ZWNfbWF4LCBtYXgoY3Vy ci0+c2UuZXhlY19tYXgsIGRlbHRhX2V4ZWMpKTsNCisNCisJY3Vyci0+c2Uuc3VtX2V4ZWNfcnVu dGltZSArPSBkZWx0YV9leGVjOw0KKwlhY2NvdW50X2dyb3VwX2V4ZWNfcnVudGltZShjdXJyLCBk ZWx0YV9leGVjKTsNCisNCisJY3Vyci0+c2UuZXhlY19zdGFydCA9IHJxLT5jbG9jazsNCisJY3B1 YWNjdF9jaGFyZ2UoY3VyciwgZGVsdGFfZXhlYyk7DQorDQorCWVkZl9zZS0+cnVudGltZSAtPSBk ZWx0YV9leGVjOw0KKwkvKg0KKwkgKiBJZiB3ZSBleGhhdXN0ZWQgb3VyIHJ1bnRpbWUgaXQgaGFz IHRvIGJlIHJlcGxlbmlzaGVkDQorCSAqIGVpdGhlciBpbW1lZGlhdGVseSBvciBhZnRlciBvbmUg KG9yIG1vcmUpIENCUyBwZXJpb2QocykuDQorCSAqLw0KKwlpZiAoZWRmX3J1bnRpbWVfZXhjZWVk ZWQoZWRmX3NlKSkNCisJCXJlc2NoZWRfdGFzayhjdXJyKTsNCit9DQorDQorc3RhdGljIHZvaWQg ZW5xdWV1ZV9lZGZfZW50aXR5KHN0cnVjdCBzY2hlZF9lZGZfZW50aXR5ICplZGZfc2UpDQorew0K KwlzdHJ1Y3QgZWRmX3JxICplZGZfcnEgPSBlZGZfcnFfb2Zfc2UoZWRmX3NlKTsNCisJc3RydWN0 IHJiX25vZGUgKipsaW5rID0gJmVkZl9ycS0+cmJfcm9vdC5yYl9ub2RlOw0KKwlzdHJ1Y3QgcmJf bm9kZSAqcGFyZW50ID0gTlVMTDsNCisJc3RydWN0IHNjaGVkX2VkZl9lbnRpdHkgKmVudHJ5Ow0K KwlpbnQgbGVmdG1vc3QgPSAxOw0KKw0KKwlCVUdfT04oIVJCX0VNUFRZX05PREUoJmVkZl9zZS0+ cmJfbm9kZSkpOw0KKw0KKwl3aGlsZSAoKmxpbmspIHsNCisJCXBhcmVudCA9ICpsaW5rOw0KKwkJ ZW50cnkgPSByYl9lbnRyeShwYXJlbnQsIHN0cnVjdCBzY2hlZF9lZGZfZW50aXR5LCByYl9ub2Rl KTsNCisJCWlmICghZWRmX3RpbWVfYmVmb3JlKGVudHJ5LT5kZWFkbGluZSwgZWRmX3NlLT5kZWFk bGluZSkpDQorCQkJbGluayA9ICZwYXJlbnQtPnJiX2xlZnQ7DQorCQllbHNlIHsNCisJCQlsaW5r ID0gJnBhcmVudC0+cmJfcmlnaHQ7DQorCQkJbGVmdG1vc3QgPSAwOw0KKwkJfQ0KKwl9DQorDQor CWlmIChsZWZ0bW9zdCkNCisJCWVkZl9ycS0+cmJfbGVmdG1vc3QgPSAmZWRmX3NlLT5yYl9ub2Rl Ow0KKw0KKwlyYl9saW5rX25vZGUoJmVkZl9zZS0+cmJfbm9kZSwgcGFyZW50LCBsaW5rKTsNCisJ cmJfaW5zZXJ0X2NvbG9yKCZlZGZfc2UtPnJiX25vZGUsICZlZGZfcnEtPnJiX3Jvb3QpOw0KKw0K KwllZGZfcnEtPmVkZl9ucl9ydW5uaW5nKys7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGRlcXVldWVf ZWRmX2VudGl0eShzdHJ1Y3Qgc2NoZWRfZWRmX2VudGl0eSAqZWRmX3NlKQ0KK3sNCisJc3RydWN0 IGVkZl9ycSAqZWRmX3JxID0gZWRmX3JxX29mX3NlKGVkZl9zZSk7DQorDQorCWlmIChSQl9FTVBU WV9OT0RFKCZlZGZfc2UtPnJiX25vZGUpKQ0KKwkJcmV0dXJuOw0KKw0KKwlpZiAoZWRmX3JxLT5y Yl9sZWZ0bW9zdCA9PSAmZWRmX3NlLT5yYl9ub2RlKSB7DQorCQlzdHJ1Y3QgcmJfbm9kZSAqbmV4 dF9ub2RlOw0KKwkJc3RydWN0IHNjaGVkX2VkZl9lbnRpdHkgKm5leHQ7DQorDQorCQluZXh0X25v ZGUgPSByYl9uZXh0KCZlZGZfc2UtPnJiX25vZGUpOw0KKwkJZWRmX3JxLT5yYl9sZWZ0bW9zdCA9 IG5leHRfbm9kZTsNCisNCisJCWlmIChuZXh0X25vZGUpDQorCQkJbmV4dCA9IHJiX2VudHJ5KG5l eHRfbm9kZSwgc3RydWN0IHNjaGVkX2VkZl9lbnRpdHksDQorCQkJCQlyYl9ub2RlKTsNCisJfQ0K Kw0KKwlyYl9lcmFzZSgmZWRmX3NlLT5yYl9ub2RlLCAmZWRmX3JxLT5yYl9yb290KTsNCisJUkJf Q0xFQVJfTk9ERSgmZWRmX3NlLT5yYl9ub2RlKTsNCisNCisJZWRmX3JxLT5lZGZfbnJfcnVubmlu Zy0tOw0KK30NCisNCitzdGF0aWMgdm9pZCBjaGVja19wcmVlbXB0X2N1cnJfZWRmKHN0cnVjdCBy cSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwNCisJCQkJICAgaW50IHN5bmMpDQorew0KKwlp ZiAodW5saWtlbHkocnRfcHJpbyhwLT5wcmlvKSkpDQorCQlnb3RvIHJlc2NoZWQ7DQorDQorCWlm ICh1bmxpa2VseShwLT5zY2hlZF9jbGFzcyAhPSAmZWRmX3NjaGVkX2NsYXNzKSkNCisJCXJldHVy bjsNCisNCisJaWYgKChzNjQpcC0+ZWRmLmRlYWRsaW5lIC0gcnEtPmN1cnItPmVkZi5kZWFkbGlu ZSA8IDApDQorcmVzY2hlZDoNCisJCXJlc2NoZWRfdGFzayhycS0+Y3Vycik7DQorfQ0KKw0KK3N0 YXRpYyB2b2lkDQorZW5xdWV1ZV90YXNrX2VkZihzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19z dHJ1Y3QgKnAsIGludCB3YWtldXApDQorew0KKwlzdHJ1Y3Qgc2NoZWRfZWRmX2VudGl0eSAqZWRm X3NlID0gJnAtPmVkZjsNCisNCisJQlVHX09OKG9uX2VkZl9ycShlZGZfc2UpKTsNCisNCisJLyoN CisJICogT25seSBlbnF1ZXVlIGVudGl0aWVzIHdpdGggc29tZSByZW1haW5pbmcgcnVudGltZS4N CisJICovDQorCWlmIChlZGZfc2UtPnJ1bnRpbWUgPD0gMCkNCisJCXJldHVybjsNCisNCisJdXBk YXRlX2VkZl9wYXJhbXMoZWRmX3NlKTsNCisJZW5xdWV1ZV9lZGZfZW50aXR5KGVkZl9zZSk7DQor CWNoZWNrX3ByZWVtcHRfY3Vycl9lZGYocnEsIHAsIDApOw0KK30NCisNCitzdGF0aWMgdm9pZA0K K2RlcXVldWVfdGFza19lZGYoc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBp bnQgc2xlZXApDQorew0KKwlzdHJ1Y3Qgc2NoZWRfZWRmX2VudGl0eSAqZWRmX3NlID0gJnAtPmVk ZjsNCisNCisJaWYgKCFvbl9lZGZfcnEoZWRmX3NlKSkNCisJCXJldHVybjsNCisNCisJdXBkYXRl X2N1cnJfZWRmKHJxKTsNCisJZGVxdWV1ZV9lZGZfZW50aXR5KGVkZl9zZSk7DQorfQ0KKw0KK3N0 YXRpYyB2b2lkIHlpZWxkX3Rhc2tfZWRmKHN0cnVjdCBycSAqcnEpDQorew0KKwlzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnAgPSBycS0+Y3VycjsNCisJc3RydWN0IHNjaGVkX2VkZl9lbnRpdHkgKmVkZl9z ZSA9ICZwLT5lZGY7DQorDQorCV9fZWRmX3NldF9lbmRlZChlZGZfc2UpOw0KK30NCisNCisjaWZk ZWYgQ09ORklHX1NDSEVEX0hSVElDSw0KK3N0YXRpYyB2b2lkIHN0YXJ0X2hydGlja19lZGYoc3Ry dWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwKQ0KK3sNCisJc3RydWN0IHNjaGVkX2Vk Zl9lbnRpdHkgKmVkZl9zZSA9ICZwLT5lZGY7DQorCXM2NCBkZWx0YTsNCisNCisJZGVsdGEgPSBl ZGZfc2UtPnJ1bnRpbWVfbWF4IC0gZWRmX3NlLT5ydW50aW1lOw0KKw0KKwlpZiAoZGVsdGEgPiAx MDAwMCkNCisJCWhydGlja19zdGFydChycSwgZGVsdGEpOw0KK30NCisjZWxzZQ0KK3N0YXRpYyB2 b2lkIHN0YXJ0X2hydGlja19lZGYoc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpw KQ0KK3sNCit9DQorI2VuZGlmDQorDQorc3RhdGljIHN0cnVjdCBzY2hlZF9lZGZfZW50aXR5ICpf X3BpY2tfZWRmX2xhc3RfZW50aXR5KHN0cnVjdCBlZGZfcnEgKmVkZl9ycSkNCit7DQorCXN0cnVj dCByYl9ub2RlICpsYXN0ID0gcmJfbGFzdCgmZWRmX3JxLT5yYl9yb290KTsNCisNCisJaWYgKCFs YXN0KQ0KKwkJcmV0dXJuIE5VTEw7DQorDQorCXJldHVybiByYl9lbnRyeShsYXN0LCBzdHJ1Y3Qg c2NoZWRfZWRmX2VudGl0eSwgcmJfbm9kZSk7DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3Qgc2NoZWRf ZWRmX2VudGl0eSAqcGlja19uZXh0X2VkZl9lbnRpdHkoc3RydWN0IHJxICpycSwNCisJCQkJCQkg ICAgIHN0cnVjdCBlZGZfcnEgKmVkZl9ycSkNCit7DQorCXN0cnVjdCByYl9ub2RlICpsZWZ0ID0g ZWRmX3JxLT5yYl9sZWZ0bW9zdDsNCisNCisJaWYgKCFsZWZ0KQ0KKwkJcmV0dXJuIE5VTEw7DQor DQorCXJldHVybiByYl9lbnRyeShsZWZ0LCBzdHJ1Y3Qgc2NoZWRfZWRmX2VudGl0eSwgcmJfbm9k ZSk7DQorfQ0KKw0KK3N0cnVjdCB0YXNrX3N0cnVjdCAqcGlja19uZXh0X3Rhc2tfZWRmKHN0cnVj dCBycSAqcnEpDQorew0KKwlzdHJ1Y3Qgc2NoZWRfZWRmX2VudGl0eSAqZWRmX3NlOw0KKwlzdHJ1 Y3QgZWRmX3JxICplZGZfcnEgPSAmcnEtPmVkZjsNCisJc3RydWN0IHRhc2tfc3RydWN0ICpwOw0K Kw0KKwlCVUdfT04oZWRmX3JxLT5lZGZfbnJfcnVubmluZyA8IDApOw0KKw0KKwlpZiAoIWVkZl9y cS0+ZWRmX25yX3J1bm5pbmcpDQorCQlyZXR1cm4gTlVMTDsNCisNCisJZWRmX3NlID0gcGlja19u ZXh0X2VkZl9lbnRpdHkocnEsIGVkZl9ycSk7DQorCUJVR19PTighZWRmX3NlKTsNCisNCisJcCA9 IGVkZl90YXNrX29mKGVkZl9zZSk7DQorCXAtPnNlLmV4ZWNfc3RhcnQgPSBycS0+Y2xvY2s7DQor CWlmIChocnRpY2tfZW5hYmxlZChycSkpDQorCQlzdGFydF9ocnRpY2tfZWRmKHJxLCBwKTsNCisN CisJcmV0dXJuIHA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHB1dF9wcmV2X3Rhc2tfZWRmKHN0cnVj dCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkNCit7DQorCXVwZGF0ZV9jdXJyX2VkZihy cSk7DQorCXAtPnNlLmV4ZWNfc3RhcnQgPSAwOw0KK30NCisNCitzdGF0aWMgdm9pZCB0YXNrX3Rp Y2tfZWRmKHN0cnVjdCBycSAqcnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwgaW50IHF1ZXVlZCkN Cit7DQorCXVwZGF0ZV9jdXJyX2VkZihycSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHNldF9jdXJy X3Rhc2tfZWRmKHN0cnVjdCBycSAqcnEpDQorew0KKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAgPSBy cS0+Y3VycjsNCisNCisJcC0+c2UuZXhlY19zdGFydCA9IHJxLT5jbG9jazsNCit9DQorDQorc3Rh dGljIHZvaWQgcHJpb19jaGFuZ2VkX2VkZihzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnAsDQorCQkJICAgICBpbnQgb2xkcHJpbywgaW50IHJ1bm5pbmcpDQorew0KKwlpZiAocnVu bmluZykgew0KKwkJaWYgKHAtPnByaW8gPiBvbGRwcmlvKQ0KKwkJCXJlc2NoZWRfdGFzayhycS0+ Y3Vycik7DQorCX0gZWxzZQ0KKwkJY2hlY2tfcHJlZW1wdF9jdXJyX2VkZihycSwgcCwgMCk7DQor fQ0KKw0KK3N0YXRpYyB2b2lkIHN3aXRjaGVkX3RvX2VkZihzdHJ1Y3QgcnEgKnJxLCBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnAsDQorCQkJICAgIGludCBydW5uaW5nKQ0KK3sNCisJaWYgKCFydW5uaW5n KQ0KKwkJY2hlY2tfcHJlZW1wdF9jdXJyX2VkZihycSwgcCwgMCk7DQorfQ0KKw0KKyNpZmRlZiBD T05GSUdfU01QDQorc3RhdGljIGludCBzZWxlY3RfdGFza19ycV9lZGYoc3RydWN0IHRhc2tfc3Ry dWN0ICpwLCBpbnQgc2RfZmxhZywgaW50IGZsYWdzKQ0KK3sNCisJcmV0dXJuIHRhc2tfY3B1KHAp Ow0KK30NCisNCitzdGF0aWMgdW5zaWduZWQgbG9uZw0KK2xvYWRfYmFsYW5jZV9lZGYoc3RydWN0 IHJxICp0aGlzX3JxLCBpbnQgdGhpc19jcHUsIHN0cnVjdCBycSAqYnVzaWVzdCwNCisJCSB1bnNp Z25lZCBsb25nIG1heF9sb2FkX21vdmUsDQorCQkgc3RydWN0IHNjaGVkX2RvbWFpbiAqc2QsIGVu dW0gY3B1X2lkbGVfdHlwZSBpZGxlLA0KKwkJIGludCAqYWxsX3Bpbm5lZCwgaW50ICp0aGlzX2Jl c3RfcHJpbykNCit7DQorICAgICAgICAvKiBmb3Igbm93LCBkb24ndCB0b3VjaCBFREYgdGFza3Mg Ki8NCisgICAgICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50DQorbW92ZV9vbmVfdGFz a19lZGYoc3RydWN0IHJxICp0aGlzX3JxLCBpbnQgdGhpc19jcHUsIHN0cnVjdCBycSAqYnVzaWVz dCwNCisJCSAgc3RydWN0IHNjaGVkX2RvbWFpbiAqc2QsIGVudW0gY3B1X2lkbGVfdHlwZSBpZGxl KQ0KK3sNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHNldF9jcHVzX2FsbG93ZWRf ZWRmKHN0cnVjdCB0YXNrX3N0cnVjdCAqcCwNCisJCQkJIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpu ZXdfbWFzaykNCit7DQorCWludCB3ZWlnaHQgPSBjcHVtYXNrX3dlaWdodChuZXdfbWFzayk7DQor DQorCUJVR19PTighZWRmX3Rhc2socCkpOw0KKw0KKwljcHVtYXNrX2NvcHkoJnAtPmNwdXNfYWxs b3dlZCwgbmV3X21hc2spOw0KKwlwLT5lZGYubnJfY3B1c19hbGxvd2VkID0gd2VpZ2h0Ow0KK30N CisjZW5kaWYNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHNjaGVkX2NsYXNzIGVkZl9zY2hlZF9j bGFzcyA9IHsNCisJLm5leHQJCQk9ICZmYWlyX3NjaGVkX2NsYXNzLA0KKwkuZW5xdWV1ZV90YXNr CQk9IGVucXVldWVfdGFza19lZGYsDQorCS5kZXF1ZXVlX3Rhc2sJCT0gZGVxdWV1ZV90YXNrX2Vk ZiwNCisJLnlpZWxkX3Rhc2sJCT0geWllbGRfdGFza19lZGYsDQorDQorCS5jaGVja19wcmVlbXB0 X2N1cnIJPSBjaGVja19wcmVlbXB0X2N1cnJfZWRmLA0KKw0KKwkucGlja19uZXh0X3Rhc2sJCT0g cGlja19uZXh0X3Rhc2tfZWRmLA0KKwkucHV0X3ByZXZfdGFzawkJPSBwdXRfcHJldl90YXNrX2Vk ZiwNCisNCisjaWZkZWYgQ09ORklHX1NNUA0KKwkuc2VsZWN0X3Rhc2tfcnEJCT0gc2VsZWN0X3Rh c2tfcnFfZWRmLA0KKw0KKwkubG9hZF9iYWxhbmNlICAgICAgICAgICA9IGxvYWRfYmFsYW5jZV9l ZGYsDQorCS5tb3ZlX29uZV90YXNrCQk9IG1vdmVfb25lX3Rhc2tfZWRmLA0KKwkuc2V0X2NwdXNf YWxsb3dlZCAgICAgICA9IHNldF9jcHVzX2FsbG93ZWRfZWRmLA0KKyNlbmRpZg0KKw0KKwkuc2V0 X2N1cnJfdGFzawkJPSBzZXRfY3Vycl90YXNrX2VkZiwNCisJLnRhc2tfdGljawkJPSB0YXNrX3Rp Y2tfZWRmLA0KKw0KKwkucHJpb19jaGFuZ2VkICAgICAgICAgICA9IHByaW9fY2hhbmdlZF9lZGYs DQorCS5zd2l0Y2hlZF90bwkJPSBzd2l0Y2hlZF90b19lZGYsDQorfTsNCisNCisjaWZkZWYgQ09O RklHX1NDSEVEX0RFQlVHDQordm9pZCBwcmludF9lZGZfcnEoc3RydWN0IHNlcV9maWxlICptLCBp bnQgY3B1LCBzdHJ1Y3QgZWRmX3JxICplZGZfcnEpOw0KKw0KK3N0YXRpYyB2b2lkIHByaW50X2Vk Zl9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGludCBjcHUpDQorew0KKwlzdHJ1Y3QgZWRmX3Jx ICplZGZfcnEgPSAmY3B1X3JxKGNwdSktPmVkZjsNCisNCisJcmN1X3JlYWRfbG9jaygpOw0KKwlm b3JfZWFjaF9sZWFmX2VkZl9ycShlZGZfcnEsIGNwdV9ycShjcHUpKQ0KKwkJcHJpbnRfZWRmX3Jx KG0sIGNwdSwgZWRmX3JxKTsNCisJcmN1X3JlYWRfdW5sb2NrKCk7DQorfQ0KKyNlbmRpZiAvKiBD T05GSUdfU0NIRURfREVCVUcgKi8NCisNCmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWRfZmFpci5j IGIva2VybmVsL3NjaGVkX2ZhaXIuYw0KaW5kZXggZWNjNjM3YS4uY2FlN2ZiOCAxMDA2NDQNCi0t LSBhL2tlcm5lbC9zY2hlZF9mYWlyLmMNCisrKyBiL2tlcm5lbC9zY2hlZF9mYWlyLmMNCkBAIC0x NTcxLDEwICsxNTcxLDggQEAgc3RhdGljIHZvaWQgY2hlY2tfcHJlZW1wdF93YWtldXAoc3RydWN0 IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgd2FrZV8NCiANCiAJdXBkYXRlX2N1 cnIoY2ZzX3JxKTsNCiANCi0JaWYgKHVubGlrZWx5KHJ0X3ByaW8ocC0+cHJpbykpKSB7DQorCWlm IChydF9wcmlvKHAtPnByaW8pIHx8IHRhc2tfaGFzX2VkZl9wb2xpY3kocCkpDQogCQlyZXNjaGVk X3Rhc2soY3Vycik7DQotCQlyZXR1cm47DQotCX0NCiANCiAJaWYgKHVubGlrZWx5KHAtPnNjaGVk X2NsYXNzICE9ICZmYWlyX3NjaGVkX2NsYXNzKSkNCiAJCXJldHVybjsNCmRpZmYgLS1naXQgYS9r ZXJuZWwvc2NoZWRfcnQuYyBiL2tlcm5lbC9zY2hlZF9ydC5jDQppbmRleCBhNGQ3OTBjLi40NTEx ZmM5IDEwMDY0NA0KLS0tIGEva2VybmVsL3NjaGVkX3J0LmMNCisrKyBiL2tlcm5lbC9zY2hlZF9y dC5jDQpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAgdW5zaWduZWQgaW50IGdldF9ycl9pbnRlcnZhbF9y dChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spDQogfQ0KIA0KIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c2NoZWRfY2xhc3MgcnRfc2NoZWRfY2xhc3MgPSB7DQotCS5uZXh0CQkJPSAmZmFpcl9zY2hlZF9j bGFzcywNCisJLm5leHQJCQk9ICZlZGZfc2NoZWRfY2xhc3MsDQogCS5lbnF1ZXVlX3Rhc2sJCT0g ZW5xdWV1ZV90YXNrX3J0LA0KIAkuZGVxdWV1ZV90YXNrCQk9IGRlcXVldWVfdGFza19ydCwNCiAJ LnlpZWxkX3Rhc2sJCT0geWllbGRfdGFza19ydCwNCmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2Uv dHJhY2Vfc2NoZWRfd2FrZXVwLmMgYi9rZXJuZWwvdHJhY2UvdHJhY2Vfc2NoZWRfd2FrZXVwLmMN CmluZGV4IDI2MTg1ZDcuLmQzMmFhZjAgMTAwNjQ0DQotLS0gYS9rZXJuZWwvdHJhY2UvdHJhY2Vf c2NoZWRfd2FrZXVwLmMNCisrKyBiL2tlcm5lbC90cmFjZS90cmFjZV9zY2hlZF93YWtldXAuYw0K QEAgLTI0LDYgKzI0LDcgQEAgc3RhdGljIGludCBfX3JlYWRfbW9zdGx5CXRyYWNlcl9lbmFibGVk Ow0KIA0KIHN0YXRpYyBzdHJ1Y3QgdGFza19zdHJ1Y3QJKndha2V1cF90YXNrOw0KIHN0YXRpYyBp bnQJCQl3YWtldXBfY3B1Ow0KK3N0YXRpYyBpbnQJCQl3YWtldXBfZWRmOw0KIHN0YXRpYyBpbnQJ CQl3YWtldXBfY3VycmVudF9jcHU7DQogc3RhdGljIHVuc2lnbmVkCQkJd2FrZXVwX3ByaW8gPSAt MTsNCiBzdGF0aWMgaW50CQkJd2FrZXVwX3J0Ow0KQEAgLTIxNCw2ICsyMTUsOSBAQCBwcm9iZV93 YWtldXAoc3RydWN0IHJxICpycSwgc3RydWN0IHRhc2tfc3RydWN0ICpwLCBpbnQgc3VjY2VzcykN CiAJdHJhY2luZ19yZWNvcmRfY21kbGluZShwKTsNCiAJdHJhY2luZ19yZWNvcmRfY21kbGluZShj dXJyZW50KTsNCiANCisJaWYgKHdha2V1cF9lZGYgJiYgIWVkZl90YXNrKHApKQ0KKwkJcmV0dXJu Ow0KKw0KIAlpZiAoKHdha2V1cF9ydCAmJiAhcnRfdGFzayhwKSkgfHwNCiAJCQlwLT5wcmlvID49 IHdha2V1cF9wcmlvIHx8DQogCQkJcC0+cHJpbyA+PSBjdXJyZW50LT5wcmlvKQ0KQEAgLTM0MCwx MiArMzQ0LDIxIEBAIHN0YXRpYyBpbnQgX193YWtldXBfdHJhY2VyX2luaXQoc3RydWN0IHRyYWNl X2FycmF5ICp0cikNCiANCiBzdGF0aWMgaW50IHdha2V1cF90cmFjZXJfaW5pdChzdHJ1Y3QgdHJh Y2VfYXJyYXkgKnRyKQ0KIHsNCisJd2FrZXVwX2VkZiA9IDA7DQorCXdha2V1cF9ydCA9IDA7DQor CXJldHVybiBfX3dha2V1cF90cmFjZXJfaW5pdCh0cik7DQorfQ0KKw0KK3N0YXRpYyBpbnQgd2Fr ZXVwX2VkZl90cmFjZXJfaW5pdChzdHJ1Y3QgdHJhY2VfYXJyYXkgKnRyKQ0KK3sNCisJd2FrZXVw X2VkZiA9IDE7DQogCXdha2V1cF9ydCA9IDA7DQogCXJldHVybiBfX3dha2V1cF90cmFjZXJfaW5p dCh0cik7DQogfQ0KIA0KIHN0YXRpYyBpbnQgd2FrZXVwX3J0X3RyYWNlcl9pbml0KHN0cnVjdCB0 cmFjZV9hcnJheSAqdHIpDQogew0KKwl3YWtldXBfZWRmID0gMDsNCiAJd2FrZXVwX3J0ID0gMTsN CiAJcmV0dXJuIF9fd2FrZXVwX3RyYWNlcl9pbml0KHRyKTsNCiB9DQpAQCAtMzg0LDYgKzM5Nywy MCBAQCBzdGF0aWMgc3RydWN0IHRyYWNlciB3YWtldXBfdHJhY2VyIF9fcmVhZF9tb3N0bHkgPQ0K ICNlbmRpZg0KIH07DQogDQorc3RhdGljIHN0cnVjdCB0cmFjZXIgd2FrZXVwX2VkZl90cmFjZXIg X19yZWFkX21vc3RseSA9DQorew0KKwkubmFtZQkJPSAid2FrZXVwX2VkZiIsDQorCS5pbml0CQk9 IHdha2V1cF9lZGZfdHJhY2VyX2luaXQsDQorCS5yZXNldAkJPSB3YWtldXBfdHJhY2VyX3Jlc2V0 LA0KKwkuc3RhcnQJCT0gd2FrZXVwX3RyYWNlcl9zdGFydCwNCisJLnN0b3AJCT0gd2FrZXVwX3Ry YWNlcl9zdG9wLA0KKwkud2FpdF9waXBlCT0gcG9sbF93YWl0X3BpcGUsDQorCS5wcmludF9tYXgJ PSAxLA0KKyNpZmRlZiBDT05GSUdfRlRSQUNFX1NFTEZURVNUDQorCS5zZWxmdGVzdCAgICA9IHRy YWNlX3NlbGZ0ZXN0X3N0YXJ0dXBfd2FrZXVwLA0KKyNlbmRpZg0KK307DQorDQogc3RhdGljIHN0 cnVjdCB0cmFjZXIgd2FrZXVwX3J0X3RyYWNlciBfX3JlYWRfbW9zdGx5ID0NCiB7DQogCS5uYW1l CQk9ICJ3YWtldXBfcnQiLA0KQEAgLTQwNiw2ICs0MzMsMTAgQEAgX19pbml0IHN0YXRpYyBpbnQg aW5pdF93YWtldXBfdHJhY2VyKHZvaWQpDQogCWlmIChyZXQpDQogCQlyZXR1cm4gcmV0Ow0KIA0K KwlyZXQgPSByZWdpc3Rlcl90cmFjZXIoJndha2V1cF9lZGZfdHJhY2VyKTsNCisJaWYgKHJldCkN CisJCXJldHVybiByZXQ7DQorDQogCXJldCA9IHJlZ2lzdGVyX3RyYWNlcigmd2FrZXVwX3J0X3Ry YWNlcik7DQogCWlmIChyZXQpDQogCQlyZXR1cm4gcmV0Ow0K --=-/XI4EVqIonUd8XNy+Ao+-- --=-8g5AUViK2znou5rZ9ck2 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) iEYEABECAAYFAkq42J0ACgkQk4XaBE3IOsRXswCffZ9a7BXEMzW5IwNjj2F1mwvW J3YAnA5Yr/LvlpO9WxhhI+6t8rZEn7dx =ztY5 -----END PGP SIGNATURE----- --=-8g5AUViK2znou5rZ9ck2-- -- 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/