From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB05BC4332F for ; Thu, 22 Dec 2022 22:32:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230357AbiLVWct (ORCPT ); Thu, 22 Dec 2022 17:32:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38360 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230022AbiLVWcp (ORCPT ); Thu, 22 Dec 2022 17:32:45 -0500 Received: from eu-smtp-delivery-151.mimecast.com (eu-smtp-delivery-151.mimecast.com [185.58.86.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8340B15FC4 for ; Thu, 22 Dec 2022 14:32:41 -0800 (PST) Received: from AcuMS.aculab.com (156.67.243.121 [156.67.243.121]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id uk-mta-153-g-PWTtL5M2S2s8G0RMPCcA-1; Thu, 22 Dec 2022 22:32:36 +0000 X-MC-Unique: g-PWTtL5M2S2s8G0RMPCcA-1 Received: from AcuMS.Aculab.com (10.202.163.4) by AcuMS.aculab.com (10.202.163.4) with Microsoft SMTP Server (TLS) id 15.0.1497.42; Thu, 22 Dec 2022 22:32:34 +0000 Received: from AcuMS.Aculab.com ([::1]) by AcuMS.aculab.com ([::1]) with mapi id 15.00.1497.044; Thu, 22 Dec 2022 22:32:34 +0000 From: David Laight To: 'Linus Torvalds' CC: LKML , Andy Shevchenko , Andrew Morton , Steven Rostedt , "Joe Perches" Subject: [RFC PATCH v2 0/1] Slightly relax the type checking done by min() and max(). Thread-Topic: [RFC PATCH v2 0/1] Slightly relax the type checking done by min() and max(). Thread-Index: AdkWVR8osKG04sBiQPebtSxuGI0OCg== Date: Thu, 22 Dec 2022 22:32:34 +0000 Message-ID: <6dc9a68ca3394a3c94164fd7cff9fa47@AcuMS.aculab.com> References: <58cac72242e54380971cfa842f824470@AcuMS.aculab.com> <433b8b44fe6e43b2b576c311bb55cc8a@AcuMS.aculab.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: aculab.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org U2xpZ2h0bHkgcmVsYXggdGhlIHR5cGUgY2hlY2tpbmcgZG9uZSBieSBtaW4oKSBhbmQgbWF4KCku DQoNClRoZSBtaW4oKSBhbmQgbWF4KCkgZGVmaW5lcyBpbmNsdWRlIGEgdHlwZSBjaGVjayB0byBh dm9pZCB0aGUgdW5leHBlY3RlZA0KICBiZWhhdmlvdXIgd2hlbiBhIG5lZ2F0aXZlIHZhbHVlIGlz IGNvbXBhcmVkIGFnYWluc3QgYW5kIHVuc2lnbmVkIHZhbHVlLg0KSG93ZXZlciBhIGxvdCBvZiBj b2RlIGhpdHMgdGhpcyBjaGVjayBhbmQgdXNlcyBtaW5fdCgpIHRvIGF2b2lkIHRoZSBlcnJvci4N CkV2ZW4gd2hlbiBqdXN0IGNoYW5naW5nIGEgbG9jYWwgdG8gYW4gdW5zaWduZWQgdHlwZSB3b3Vs ZCByZW1vdmUgdGhlIGVycm9yLg0KTWFueSBvZiB0aGVzZSBhcmUganVzdCBwbGFpbiB3cm9uZy4N Cg0KVGhvc2UgY2FzdGluZyB0byB1OCBvciB1MTYgYXJlIHBhcnRpY3VsYXJseSBzdXNwZWN0LCBl ZzoNCmtlcm5lbC9wcmludGsvcHJpbnRrX3JpbmdidWZmZXIuYzoxNzM4DQoJZGF0YV9zaXplID0g bWluX3QodTE2LCBidWZfc2l6ZSwgbGVuKTsNCg0KVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgdHlw ZW9mKCkgY2hlY2sgd2l0aCBleHBsaWNpdCB0eXBlIGNoZWNrcy4NCm1pbigpIGFuZCBtYXgoKSBh bGxvdyB0aGUgZm9sbG93aW5nIHJlZ2FyZGxlc3Mgb2YgdGhlIHNpemVzIG9mIHRoZSB0eXBlcy4N Ci0gY29tcGFyaXNvbnMgd2hlcmUgYm90aCB0eXBlcyBhcmUgc2lnbmVkLg0KLSBjb21wYXJpc29u cyB3aGVyZSBib3RoIHR5cGVzIGFyZSB1bnNpZ25lZC4NCi0gY29tcGFyaXNvbnMgd2hlcmUgdGhl IGxhcmdlciB0eXBlIGlzIHNpZ25lZC4NCi0gY29tcGFyaXNvbnMgYmV0d2VlbiB1bnNpZ25lZCB2 YWx1ZXMgYW5kIG5vbi1uZWdhdGl2ZSBzaWduZWQgY29uc3RhbnRzLg0KSW4gYWxsIHRoZSBhYm92 ZSBjYXNlcyB0aGUgbm9ybWFsIGludGVnZXIgcHJvbW90aW9uIHJ1bGVzIGdpdmUgdGhlDQpleHBl Y3RlZCByZXN1bHQuDQoNClRoZXJlIGlzIG9uZSBmdXJ0aGVyIGNvbW1vbiBjYXNlOiBjb21wYXJp bmcgYSBzaWduZWQgdmFsdWUgYWdhaW5zdCBhbg0KdW5zaWduZWQgY29uc3RhbnQgKGJlbG93IElO VF9NQVgpLg0KVHlwaWNhbGx5IG1pbihzaWduZWRfbGVuZ3RoLCBzaXplb2YoYnVmZmVyKSksIHdo aWxlIGEgbmVnYXRpdmUgbGVuZ3RoDQppcyBwcm9iYWJseSBhbiBlcnJvciAob3IgYWxyZWFkeSBj aGVja2VkKSB0aGlzIGlzbid0IHJlYWxseSBhbnkgbW9yZQ0KcHJvYmxlbWF0aWMgdGhhbiBtaW4o c2lnbmVkX2xlbmd0aCwgMTYpLg0KSG93ZXZlciB0aGUgaW50ZWdlciBwcm9tb3Rpb24gcnVsZXMg bWVhbiB0aGF0IG1pbigtNSwgMTZ1KSBpcyAxNnUNCmJ1dCBtaW4oLTUsIDE2KSBpcyAtNS4gVGhl IGxhdHRlciBpcyBtb3JlIGxpa2VseSB0aGUgZXhwZWN0ZWQgcmVzdWx0Lg0KVGhpcyBjYW4gYmUg Zml4ZWQgYnkgY2FzdGluZyB1bnNpZ25lZCBjb25zdGFudHMgKGJlbG93IE1BWF9JTlQpIHRvIChp bnQpDQpwcmlvciB0byB0aGUgY29tcGFyaXNvbi4NClRoZSBtaW5fc2lnbmVkKCkgKGFuZCBtYXhf c2lnbmVkKCkpIGZ1bmN0aW9ucyBhcmUgYWx0ZXJuYXRpdmVzIGZvciBtaW4vbWF4DQp0aGF0IGFs bG93IHN1Y2ggY29tcGFyaXNvbnMuDQoNCkknbSBwb3N0aW5nIHRoaXMgYXMgYW4gUkZDIGJlY2F1 c2UgaXQgZG9lc24ndCByZWFsbHkgbWFrZSBzZW5zZSB0bw0KaGF2ZSBtaW5fc2lnbmVkKCkgYXMg YSBzZXBhcmF0ZSBmdW5jdGlvbiwganVzdCBhcyBhbiBhbHRlcm5hdGl2ZQ0KaW1wbGVtZW1udGF0 aW9uIG9mIG1pbigpIGl0c2VsZi4NClNxdWFzaGluZyBvdXQgdGhlIGV4dHJhIHZhcmlhbnQgbWFr ZXMgdGhlIGhlYWRlciBlYXNpZXIgdG8gcmVhZC4NCg0KSW4gYWRkaXRpb24gbW9zdCBvZiB0aGUg bWluX3QoKSBjYWxscyBhcmUgdGhlcmUgdG8gY29tcGFyZSBhIHNpZ25lZCB0eXBlDQoodGhhdCBo b2xkcyBhIG5vbi1uZWdhdGl2ZSB2YWx1ZSkgd2l0aCBhbiB1bnNpZ25lZCB2YWx1ZS4NClRoZSBk ZWZpbml0aW9uOg0KI2RlZmluZSBtaW5fdW5zaWduZWQoeCx5KSBtaW4oKHgpICsgMHUgKyAwdWxs LCAoeSkgKyAwdSArIDB1bGwpDQp3aWxsIGRvIGFuIHVuc2lnbmVkIGNvbXBhcmlzb24gd2l0aG91 dCAnYWNjaWRlbnRhbGx5JyBtYXNraW5nIG9mZg0KYW55IG5vbi16ZXJvIGhpZ2ggYml0cy4NCg0K QlVJTERfQlVHX09OKCkgY2FuJ3QgYmUgdXNlZCB0byByZXBvcnQgZXJyb3JzIGJlY2F1c2UgaXQg aXNuJ3QgJ2NvbnN0YW50DQplbm91Z2gnLCBpbnN0ZWFkIGFuICdpbnZhbGlkIHBvaW50ZXIgY29t cGFyaXNvbicgZXJyb3IgaXMgZ2VuZXJhdGVkLg0KVGhpcyBhbHNvIGFsbG93cyBzb21lICdzZWxm IHRlc3RzJyB0byBiZSB3cml0dGVuIHRoYXQgYWRqdXN0IHRoZSByZXR1cm5lZA0KdmFsdWUgaW5z dGVhZCBvZiBmYWlsaW5nIHRoZSBjb21waWxhdGlvbi4NCkJ1dCBJJ20gbm90IHN1cmUgb2YgdGhl IGluZnJhc3RydWN0dXJlIGZvciBhbnkgc3VjaCB0ZXN0cy4NCg0KRGF2aWQgTGFpZ2h0ICgxKToN CiAgU2xpZ2h0bHkgcmVsYXggdGhlIHR5cGUgY2hlY2tpbmcgZG9uZSBieSBtaW4oKSBhbmQgbWF4 KCkuDQoNCiBpbmNsdWRlL2xpbnV4L21pbm1heC5oIHwgMTI3ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tDQogMSBmaWxlIGNoYW5nZWQsIDEwNiBpbnNlcnRpb25zKCsp LCAyMSBkZWxldGlvbnMoLSkNCg0KVGhpcyByYXRoZXIgbG9uZyBkaWZmIGlzIHRoZSBjaGFuZ2Vz IEkgaGFkIHRvIG1ha2UgdG8gZ2V0IGEga2VybmVsDQp0byBjb21waWxlIHdpdGggbWluX3QoKSBk ZWZpbmVkIHRvIGJlIG1pbl9zaWduZWQoKS4NCk1vc3RseSBjaGFuZ2luZyBtaW5fdCgpIHRvIG1p bl91bnNpZ25lZCgpLg0KVGhlcmUgYXJlIGEgdmVyeSBzbWFsbCBudW1iZXIgb24gbWluX190KCkg KHRoZSBvcmlnaW5hbCBtaW5fdCkgd2hlcmUNCkkgY291bGRuJ3QgY29udmluY2UgbXlzZWxmIHRo ZSB2YWx1ZXMgd2VyZSBhY3R1YWxseSBub24tbmVnYXRpdmUuDQoNClRoZXJlIGFyZSBzb21lIHF1 aXRlIHN1c3BlY3QgYml0cyBvZiBjb2RlLg0KSSdtIG5vdCBzdXJlIHNvbWUgb2YgdGhlIGJ0cmZz IGNvZGUgZG9lc24ndCBkaXNjYXJkIGhpZ2ggYml0cy4NCkkgZGlkbid0IHRyeSB0byB3b3JrIG91 dCB3aGF0IGJwZiB3YXMgZG9pbmcgd2l0aCBzaWduZWQgbWluKCkgdGVzdHMuDQpCdXQgSSBkb24n dCBleHBlY3QgYW55b25lIHRvIGFjdHVhbGxpeSByZWFkIGFsbCB0aGVzZSENCg0KZGlmZiAtLWdp dCBhL2FyY2gveDg2L2t2bS92bXgvcG11X2ludGVsLmMgYi9hcmNoL3g4Ni9rdm0vdm14L3BtdV9p bnRlbC5jDQppbmRleCAxMGIzM2RhOWJkMDUuLjYxMjRlMGJiMjFjOCAxMDA2NDQNCi0tLSBhL2Fy Y2gveDg2L2t2bS92bXgvcG11X2ludGVsLmMNCisrKyBiL2FyY2gveDg2L2t2bS92bXgvcG11X2lu dGVsLmMNCkBAIC01MzYsMTIgKzUzNiwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wbXVfcmVmcmVz aChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpDQogCWlmICghcG11LT52ZXJzaW9uKQ0KIAkJcmV0dXJu Ow0KIA0KLQlwbXUtPm5yX2FyY2hfZ3BfY291bnRlcnMgPSBtaW5fdChpbnQsIGVheC5zcGxpdC5u dW1fY291bnRlcnMsDQorCXBtdS0+bnJfYXJjaF9ncF9jb3VudGVycyA9IG1pbl9fdChpbnQsIGVh eC5zcGxpdC5udW1fY291bnRlcnMsDQogCQkJCQkga3ZtX3BtdV9jYXAubnVtX2NvdW50ZXJzX2dw KTsNCi0JZWF4LnNwbGl0LmJpdF93aWR0aCA9IG1pbl90KGludCwgZWF4LnNwbGl0LmJpdF93aWR0 aCwNCisJZWF4LnNwbGl0LmJpdF93aWR0aCA9IG1pbl9fdChpbnQsIGVheC5zcGxpdC5iaXRfd2lk dGgsDQogCQkJCSAgICBrdm1fcG11X2NhcC5iaXRfd2lkdGhfZ3ApOw0KIAlwbXUtPmNvdW50ZXJf Yml0bWFza1tLVk1fUE1DX0dQXSA9ICgodTY0KTEgPDwgZWF4LnNwbGl0LmJpdF93aWR0aCkgLSAx Ow0KLQllYXguc3BsaXQubWFza19sZW5ndGggPSBtaW5fdChpbnQsIGVheC5zcGxpdC5tYXNrX2xl bmd0aCwNCisJZWF4LnNwbGl0Lm1hc2tfbGVuZ3RoID0gbWluX190KGludCwgZWF4LnNwbGl0Lm1h c2tfbGVuZ3RoLA0KIAkJCQkgICAgICBrdm1fcG11X2NhcC5ldmVudHNfbWFza19sZW4pOw0KIAlw bXUtPmF2YWlsYWJsZV9ldmVudF90eXBlcyA9IH5lbnRyeS0+ZWJ4ICYNCiAJCQkJCSgoMXVsbCA8 PCBlYXguc3BsaXQubWFza19sZW5ndGgpIC0gMSk7DQpAQCAtNTUzLDcgKzU1Myw3IEBAIHN0YXRp YyB2b2lkIGludGVsX3BtdV9yZWZyZXNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkNCiAJCQltaW4z KEFSUkFZX1NJWkUoZml4ZWRfcG1jX2V2ZW50cyksDQogCQkJICAgICAoc2l6ZV90KSBlZHguc3Bs aXQubnVtX2NvdW50ZXJzX2ZpeGVkLA0KIAkJCSAgICAgKHNpemVfdClrdm1fcG11X2NhcC5udW1f Y291bnRlcnNfZml4ZWQpOw0KLQkJZWR4LnNwbGl0LmJpdF93aWR0aF9maXhlZCA9IG1pbl90KGlu dCwgZWR4LnNwbGl0LmJpdF93aWR0aF9maXhlZCwNCisJCWVkeC5zcGxpdC5iaXRfd2lkdGhfZml4 ZWQgPSBtaW5fX3QoaW50LCBlZHguc3BsaXQuYml0X3dpZHRoX2ZpeGVkLA0KIAkJCQkJCSAga3Zt X3BtdV9jYXAuYml0X3dpZHRoX2ZpeGVkKTsNCiAJCXBtdS0+Y291bnRlcl9iaXRtYXNrW0tWTV9Q TUNfRklYRURdID0NCiAJCQkoKHU2NCkxIDw8IGVkeC5zcGxpdC5iaXRfd2lkdGhfZml4ZWQpIC0g MTsNCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jIGIvYXJjaC94ODYv bW0vcGF0L3NldF9tZW1vcnkuYw0KaW5kZXggMmU1YTA0NTczMWRlLi5mZDAxMTk4Y2YwNzUgMTAw NjQ0DQotLS0gYS9hcmNoL3g4Ni9tbS9wYXQvc2V0X21lbW9yeS5jDQorKysgYi9hcmNoL3g4Ni9t bS9wYXQvc2V0X21lbW9yeS5jDQpAQCAtMTMwNiw3ICsxMzA2LDcgQEAgc3RhdGljIGxvbmcgcG9w dWxhdGVfcG1kKHN0cnVjdCBjcGFfZGF0YSAqY3BhLA0KIAkJCSB1bnNpZ25lZCBsb25nIHN0YXJ0 LCB1bnNpZ25lZCBsb25nIGVuZCwNCiAJCQkgdW5zaWduZWQgbnVtX3BhZ2VzLCBwdWRfdCAqcHVk LCBwZ3Byb3RfdCBwZ3Byb3QpDQogew0KLQlsb25nIGN1cl9wYWdlcyA9IDA7DQorCXVuc2lnbmVk IGxvbmcgY3VyX3BhZ2VzID0gMDsNCiAJcG1kX3QgKnBtZDsNCiAJcGdwcm90X3QgcG1kX3BncHJv dDsNCiANCmRpZmYgLS1naXQgYS9ibG9jay9iaW8uYyBiL2Jsb2NrL2Jpby5jDQppbmRleCA1N2My ZjMyNzIyNWIuLjk5NmUzZWU1ZWEwZiAxMDA2NDQNCi0tLSBhL2Jsb2NrL2Jpby5jDQorKysgYi9i bG9jay9iaW8uYw0KQEAgLTEyMzQsNyArMTIzNCw3IEBAIHN0YXRpYyBpbnQgX19iaW9faW92X2l0 ZXJfZ2V0X3BhZ2VzKHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGlvdl9pdGVyICppdGVyKQ0KIAlm b3IgKGxlZnQgPSBzaXplLCBpID0gMDsgbGVmdCA+IDA7IGxlZnQgLT0gbGVuLCBpKyspIHsNCiAJ CXN0cnVjdCBwYWdlICpwYWdlID0gcGFnZXNbaV07DQogDQotCQlsZW4gPSBtaW5fdChzaXplX3Qs IFBBR0VfU0laRSAtIG9mZnNldCwgbGVmdCk7DQorCQlsZW4gPSBtaW5fdW5zaWduZWQoUEFHRV9T SVpFIC0gb2Zmc2V0LCBsZWZ0KTsNCiAJCWlmIChiaW9fb3AoYmlvKSA9PSBSRVFfT1BfWk9ORV9B UFBFTkQpIHsNCiAJCQlyZXQgPSBiaW9faW92X2FkZF96b25lX2FwcGVuZF9wYWdlKGJpbywgcGFn ZSwgbGVuLA0KIAkJCQkJb2Zmc2V0KTsNCmRpZmYgLS1naXQgYS9ibG9jay9ic2cuYyBiL2Jsb2Nr L2JzZy5jDQppbmRleCAyYWIxMzUxZWIwODIuLjQ5ZWI3ZTQxYjliNCAxMDA2NDQNCi0tLSBhL2Js b2NrL2JzZy5jDQorKysgYi9ibG9jay9ic2cuYw0KQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMg bG9uZyBic2dfaW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2ln bmVkIGxvbmcgYXJnKQ0KIAkJaWYgKHZhbCA8IDApDQogCQkJcmV0dXJuIC1FSU5WQUw7DQogCQli ZC0+cmVzZXJ2ZWRfc2l6ZSA9DQotCQkJbWluX3QodW5zaWduZWQgaW50LCB2YWwsIHF1ZXVlX21h eF9ieXRlcyhxKSk7DQorCQkJbWluX3Vuc2lnbmVkKHZhbCwgcXVldWVfbWF4X2J5dGVzKHEpKTsN CiAJCXJldHVybiAwOw0KIAljYXNlIFNHX0VNVUxBVEVEX0hPU1Q6DQogCQlyZXR1cm4gcHV0X3Vz ZXIoMSwgaW50cCk7DQpkaWZmIC0tZ2l0IGEvYmxvY2svcGFydGl0aW9ucy9lZmkuYyBiL2Jsb2Nr L3BhcnRpdGlvbnMvZWZpLmMNCmluZGV4IDVlOWJlMTNhNTZhOC4uYjExMTA4NjFkZTU0IDEwMDY0 NA0KLS0tIGEvYmxvY2svcGFydGl0aW9ucy9lZmkuYw0KKysrIGIvYmxvY2svcGFydGl0aW9ucy9l ZmkuYw0KQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgaW50IGlzX3BtYnJfdmFsaWQobGVnYWN5 X21iciAqbWJyLCBzZWN0b3JfdCB0b3RhbF9zZWN0b3JzKQ0KIAkJc3ogPSBsZTMyX3RvX2NwdSht YnItPnBhcnRpdGlvbl9yZWNvcmRbcGFydF0uc2l6ZV9pbl9sYmEpOw0KIAkJaWYgKHN6ICE9ICh1 aW50MzJfdCkgdG90YWxfc2VjdG9ycyAtIDEgJiYgc3ogIT0gMHhGRkZGRkZGRikNCiAJCQlwcl9k ZWJ1ZygiR1BUOiBtYnIgc2l6ZSBpbiBsYmEgKCV1KSBkaWZmZXJlbnQgdGhhbiB3aG9sZSBkaXNr ICgldSkuXG4iLA0KLQkJCQkgc3osIG1pbl90KHVpbnQzMl90LA0KKwkJCQkgc3osIG1pbl9fdCh1 aW50MzJfdCwNCiAJCQkJCSAgIHRvdGFsX3NlY3RvcnMgLSAxLCAweEZGRkZGRkZGKSk7DQogCX0N CiBkb25lOg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9zd25vZGUuYyBiL2RyaXZlcnMvYmFz ZS9zd25vZGUuYw0KaW5kZXggMGE0ODIyMTJjN2U4Li5iN2Y2ZTI0YTg4ZDggMTAwNjQ0DQotLS0g YS9kcml2ZXJzL2Jhc2Uvc3dub2RlLmMNCisrKyBiL2RyaXZlcnMvYmFzZS9zd25vZGUuYw0KQEAg LTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgaW50IHByb3BlcnR5X2VudHJ5X3JlYWRfc3RyaW5nX2Fy cmF5KGNvbnN0IHN0cnVjdCBwcm9wZXJ0eV9lbnRyeSAqcHJvcHMsDQogCWlmICghc3RyaW5ncykN CiAJCXJldHVybiBhcnJheV9sZW47DQogDQotCWFycmF5X2xlbiA9IG1pbl90KHNpemVfdCwgbnZh bCwgYXJyYXlfbGVuKTsNCisJYXJyYXlfbGVuID0gbWluX3Vuc2lnbmVkKG52YWwsIGFycmF5X2xl bik7DQogCWxlbmd0aCA9IGFycmF5X2xlbiAqIHNpemVvZigqc3RyaW5ncyk7DQogDQogCXBvaW50 ZXIgPSBwcm9wZXJ0eV9lbnRyeV9maW5kKHByb3BzLCBwcm9wbmFtZSwgbGVuZ3RoKTsNCmRpZmYg LS1naXQgYS9kcml2ZXJzL2NoYXIvdHBtL3RwbS1kZXYtY29tbW9uLmMgYi9kcml2ZXJzL2NoYXIv dHBtL3RwbS1kZXYtY29tbW9uLmMNCmluZGV4IGRjNGMwYTBhNTEyOS4uYThhYzgxNzM2YjE3IDEw MDY0NA0KLS0tIGEvZHJpdmVycy9jaGFyL3RwbS90cG0tZGV2LWNvbW1vbi5jDQorKysgYi9kcml2 ZXJzL2NoYXIvdHBtL3RwbS1kZXYtY29tbW9uLmMNCkBAIC0xMzQsNyArMTM0LDcgQEAgc3NpemVf dCB0cG1fY29tbW9uX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsDQog CWlmIChwcml2LT5yZXNwb25zZV9sZW5ndGgpIHsNCiAJCXByaXYtPnJlc3BvbnNlX3JlYWQgPSB0 cnVlOw0KIA0KLQkJcmV0X3NpemUgPSBtaW5fdChzc2l6ZV90LCBzaXplLCBwcml2LT5yZXNwb25z ZV9sZW5ndGgpOw0KKwkJcmV0X3NpemUgPSBtaW5fX3Qoc3NpemVfdCwgc2l6ZSwgcHJpdi0+cmVz cG9uc2VfbGVuZ3RoKTsNCiAJCWlmIChyZXRfc2l6ZSA8PSAwKSB7DQogCQkJcHJpdi0+cmVzcG9u c2VfbGVuZ3RoID0gMDsNCiAJCQlnb3RvIG91dDsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2NoYXIv dHBtL3RwbV90aXNfY29yZS5jIGIvZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX2NvcmUuYw0KaW5k ZXggNzU3NjIzYmFjZmQ1Li4wNzc3ZWY2MGIyMjcgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2NoYXIv dHBtL3RwbV90aXNfY29yZS5jDQorKysgYi9kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfY29yZS5j DQpAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyBpbnQgcmVjdl9kYXRhKHN0cnVjdCB0cG1fY2hp cCAqY2hpcCwgdTggKmJ1Ziwgc2l6ZV90IGNvdW50KQ0KIAkJCWRldl9lcnIoJmNoaXAtPmRldiwg IlVuYWJsZSB0byByZWFkIGJ1cnN0Y291bnRcbiIpOw0KIAkJCXJldHVybiBidXJzdGNudDsNCiAJ CX0NCi0JCWJ1cnN0Y250ID0gbWluX3QoaW50LCBidXJzdGNudCwgY291bnQgLSBzaXplKTsNCisJ CWJ1cnN0Y250ID0gbWluX3Vuc2lnbmVkKGJ1cnN0Y250LCBjb3VudCAtIHNpemUpOw0KIA0KIAkJ cmMgPSB0cG1fdGlzX3JlYWRfYnl0ZXMocHJpdiwgVFBNX0RBVEFfRklGTyhwcml2LT5sb2NhbGl0 eSksDQogCQkJCQlidXJzdGNudCwgYnVmICsgc2l6ZSk7DQpAQCAtMzcxLDcgKzM3MSw3IEBAIHN0 YXRpYyBpbnQgdHBtX3Rpc19zZW5kX2RhdGEoc3RydWN0IHRwbV9jaGlwICpjaGlwLCBjb25zdCB1 OCAqYnVmLCBzaXplX3QgbGVuKQ0KIAkJCXJjID0gYnVyc3RjbnQ7DQogCQkJZ290byBvdXRfZXJy Ow0KIAkJfQ0KLQkJYnVyc3RjbnQgPSBtaW5fdChpbnQsIGJ1cnN0Y250LCBsZW4gLSBjb3VudCAt IDEpOw0KKwkJYnVyc3RjbnQgPSBtaW5fdW5zaWduZWQoYnVyc3RjbnQsIGxlbiAtIGNvdW50IC0g MSk7DQogCQlyYyA9IHRwbV90aXNfd3JpdGVfYnl0ZXMocHJpdiwgVFBNX0RBVEFfRklGTyhwcml2 LT5sb2NhbGl0eSksDQogCQkJCQkgYnVyc3RjbnQsIGJ1ZiArIGNvdW50KTsNCiAJCWlmIChyYyA8 IDApDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvY2xrLWRpdmlkZXIuYyBiL2RyaXZlcnMvY2xr L2Nsay1kaXZpZGVyLmMNCmluZGV4IGEyYzJiNTIwM2IwYS4uY2MxMDJmZDE4Yjc3IDEwMDY0NA0K LS0tIGEvZHJpdmVycy9jbGsvY2xrLWRpdmlkZXIuYw0KKysrIGIvZHJpdmVycy9jbGsvY2xrLWRp dmlkZXIuYw0KQEAgLTQ4MCw3ICs0ODAsNyBAQCBpbnQgZGl2aWRlcl9nZXRfdmFsKHVuc2lnbmVk IGxvbmcgcmF0ZSwgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSwNCiANCiAJdmFsdWUgPSBfZ2V0 X3ZhbCh0YWJsZSwgZGl2LCBmbGFncywgd2lkdGgpOw0KIA0KLQlyZXR1cm4gbWluX3QodW5zaWdu ZWQgaW50LCB2YWx1ZSwgY2xrX2Rpdl9tYXNrKHdpZHRoKSk7DQorCXJldHVybiBtaW5fdW5zaWdu ZWQodmFsdWUsIGNsa19kaXZfbWFzayh3aWR0aCkpOw0KIH0NCiBFWFBPUlRfU1lNQk9MX0dQTChk aXZpZGVyX2dldF92YWwpOw0KIA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2lvYXQvcHJlcC5j IGIvZHJpdmVycy9kbWEvaW9hdC9wcmVwLmMNCmluZGV4IDAzM2Q5ZjJiM2UyYS4uZGVhMzFlZjk1 YTM5IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9kbWEvaW9hdC9wcmVwLmMNCisrKyBiL2RyaXZlcnMv ZG1hL2lvYXQvcHJlcC5jDQpAQCAtMTIwLDcgKzEyMCw3IEBAIGlvYXRfZG1hX3ByZXBfbWVtY3B5 X2xvY2soc3RydWN0IGRtYV9jaGFuICpjLCBkbWFfYWRkcl90IGRtYV9kZXN0LA0KIAkJcmV0dXJu IE5VTEw7DQogCWkgPSAwOw0KIAlkbyB7DQotCQlzaXplX3QgY29weSA9IG1pbl90KHNpemVfdCwg bGVuLCAxIDw8IGlvYXRfY2hhbi0+eGZlcmNhcF9sb2cpOw0KKwkJc2l6ZV90IGNvcHkgPSBtaW5f dW5zaWduZWQobGVuLCAxIDw8IGlvYXRfY2hhbi0+eGZlcmNhcF9sb2cpOw0KIA0KIAkJZGVzYyA9 IGlvYXRfZ2V0X3JpbmdfZW50KGlvYXRfY2hhbiwgaWR4ICsgaSk7DQogCQlodyA9IGRlc2MtPmh3 Ow0KQEAgLTE5MCw4ICsxOTAsNyBAQCBfX2lvYXRfcHJlcF94b3JfbG9jayhzdHJ1Y3QgZG1hX2No YW4gKmMsIGVudW0gc3VtX2NoZWNrX2ZsYWdzICpyZXN1bHQsDQogCWkgPSAwOw0KIAlkbyB7DQog CQlzdHJ1Y3QgaW9hdF9yYXdfZGVzY3JpcHRvciAqZGVzY3NbMl07DQotCQlzaXplX3QgeGZlcl9z aXplID0gbWluX3Qoc2l6ZV90LA0KLQkJCQkJIGxlbiwgMSA8PCBpb2F0X2NoYW4tPnhmZXJjYXBf bG9nKTsNCisJCXNpemVfdCB4ZmVyX3NpemUgPSBtaW5fdW5zaWduZWQoIGxlbiwgMSA8PCBpb2F0 X2NoYW4tPnhmZXJjYXBfbG9nKTsNCiAJCWludCBzOw0KIA0KIAkJZGVzYyA9IGlvYXRfZ2V0X3Jp bmdfZW50KGlvYXRfY2hhbiwgaWR4ICsgaSk7DQpAQCAtMzg2LDcgKzM4NSw3IEBAIF9faW9hdF9w cmVwX3BxX2xvY2soc3RydWN0IGRtYV9jaGFuICpjLCBlbnVtIHN1bV9jaGVja19mbGFncyAqcmVz dWx0LA0KIAlpID0gMDsNCiAJZG8gew0KIAkJc3RydWN0IGlvYXRfcmF3X2Rlc2NyaXB0b3IgKmRl c2NzWzJdOw0KLQkJc2l6ZV90IHhmZXJfc2l6ZSA9IG1pbl90KHNpemVfdCwgbGVuLA0KKwkJc2l6 ZV90IHhmZXJfc2l6ZSA9IG1pbl91bnNpZ25lZChsZW4sDQogCQkJCQkgMSA8PCBpb2F0X2NoYW4t PnhmZXJjYXBfbG9nKTsNCiANCiAJCWRlc2MgPSBpb2F0X2dldF9yaW5nX2VudChpb2F0X2NoYW4s IGlkeCArIGkpOw0KQEAgLTQ5NCw3ICs0OTMsNyBAQCBfX2lvYXRfcHJlcF9wcTE2X2xvY2soc3Ry dWN0IGRtYV9jaGFuICpjLCBlbnVtIHN1bV9jaGVja19mbGFncyAqcmVzdWx0LA0KIA0KIAlkbyB7 DQogCQlzdHJ1Y3QgaW9hdF9yYXdfZGVzY3JpcHRvciAqZGVzY3NbNF07DQotCQlzaXplX3QgeGZl cl9zaXplID0gbWluX3Qoc2l6ZV90LCBsZW4sDQorCQlzaXplX3QgeGZlcl9zaXplID0gbWluX3Vu c2lnbmVkKGxlbiwNCiAJCQkJCSAxIDw8IGlvYXRfY2hhbi0+eGZlcmNhcF9sb2cpOw0KIA0KIAkJ ZGVzYyA9IGlvYXRfZ2V0X3JpbmdfZW50KGlvYXRfY2hhbiwgaWR4ICsgaSk7DQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZmJfaGVscGVyLmMNCmluZGV4IDcxZWRiODBmZTBmYi4uZTJhMTI4ODJiYzhkIDEwMDY0NA0KLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYw0KKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9mYl9oZWxwZXIuYw0KQEAgLTE3MjUsOSArMTcyNSw5IEBAIHN0YXRpYyBpbnQgZHJtX2Zi X2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwN CiAJCX0NCiANCiAJCWlmIChsYXN0aCkNCi0JCQlzaXplcy5mYl93aWR0aCAgPSBtaW5fdCh1MzIs IGRlc2lyZWRfbW9kZS0+aGRpc3BsYXkgKyB4LCBzaXplcy5mYl93aWR0aCk7DQorCQkJc2l6ZXMu ZmJfd2lkdGggID0gbWluX3Vuc2lnbmVkKGRlc2lyZWRfbW9kZS0+aGRpc3BsYXkgKyB4LCBzaXpl cy5mYl93aWR0aCk7DQogCQlpZiAobGFzdHYpDQotCQkJc2l6ZXMuZmJfaGVpZ2h0ID0gbWluX3Qo dTMyLCBkZXNpcmVkX21vZGUtPnZkaXNwbGF5ICsgeSwgc2l6ZXMuZmJfaGVpZ2h0KTsNCisJCQlz aXplcy5mYl9oZWlnaHQgPSBtaW5fdW5zaWduZWQoZGVzaXJlZF9tb2RlLT52ZGlzcGxheSArIHks IHNpemVzLmZiX2hlaWdodCk7DQogCX0NCiAJbXV0ZXhfdW5sb2NrKCZjbGllbnQtPm1vZGVzZXRf bXV0ZXgpOw0KIA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbnQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fcHJpbnQuYw0KaW5kZXggNWI5M2MxMTg5NWJiLi41ZTEyMTFkOGMw NjYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW50LmMNCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fcHJpbnQuYw0KQEAgLTc5LDcgKzc5LDcgQEAgbW9kdWxlX3BhcmFtX2Ni KGRlYnVnLCAmcGFyYW1fb3BzX2R5bmRiZ19jbGFzc2VzLCAmZHJtX2RlYnVnX2JpdG1hcCwgMDYw MCk7DQogdm9pZCBfX2RybV9wdXRzX2NvcmVkdW1wKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgY29u c3QgY2hhciAqc3RyKQ0KIHsNCiAJc3RydWN0IGRybV9wcmludF9pdGVyYXRvciAqaXRlcmF0b3Ig PSBwLT5hcmc7DQotCXNzaXplX3QgbGVuOw0KKwlzaXplX3QgbGVuOw0KIA0KIAlpZiAoIWl0ZXJh dG9yLT5yZW1haW4pDQogCQlyZXR1cm47DQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgX19kcm1f cHV0c19jb3JlZHVtcChzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIGNvbnN0IGNoYXIgKnN0cikNCiAJ fSBlbHNlIHsNCiAJCXNzaXplX3QgcG9zID0gaXRlcmF0b3ItPm9mZnNldCAtIGl0ZXJhdG9yLT5z dGFydDsNCiANCi0JCWxlbiA9IG1pbl90KHNzaXplX3QsIHN0cmxlbihzdHIpLCBpdGVyYXRvci0+ cmVtYWluKTsNCisJCWxlbiA9IG1pbl91bnNpZ25lZChzdHJsZW4oc3RyKSwgaXRlcmF0b3ItPnJl bWFpbik7DQogDQogCQltZW1jcHkoaXRlcmF0b3ItPmRhdGEgKyBwb3MsIHN0ciwgbGVuKTsNCiAN CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fd2FpdC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3dhaXQuYw0KaW5kZXggZTZlMDFjMmE3 NGE2Li5jNmY1OWI1OGZkNzQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fd2FpdC5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f d2FpdC5jDQpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBu c2Vjc190b19qaWZmaWVzX3RpbWVvdXQoY29uc3QgdTY0IG4pDQogCSAgICBkaXZfdTY0KG4sIE5T RUNfUEVSX1NFQykgPj0gTUFYX0pJRkZZX09GRlNFVCAvIEhaKQ0KIAkJcmV0dXJuIE1BWF9KSUZG WV9PRkZTRVQ7DQogDQotCXJldHVybiBtaW5fdCh1NjQsIE1BWF9KSUZGWV9PRkZTRVQsIG5zZWNz X3RvX2ppZmZpZXM2NChuKSArIDEpOw0KKwlyZXR1cm4gbWluX3Vuc2lnbmVkKE1BWF9KSUZGWV9P RkZTRVQsIG5zZWNzX3RvX2ppZmZpZXM2NChuKSArIDEpOw0KIH0NCiANCiBzdGF0aWMgdW5zaWdu ZWQgbG9uZyB0b193YWl0X3RpbWVvdXQoczY0IHRpbWVvdXRfbnMpDQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfbWlncmF0ZS5jDQppbmRleCBhYWFmMTkwNjAyNmMuLmZkZjM4MTI5NDg0NSAx MDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21pZ3JhdGUuYw0KKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0ZS5jDQpAQCAtMzUyLDcgKzM1 Miw3IEBAIHN0YXRpYyBpbnQgZW1pdF9wdGUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsDQogCWNv bnN0IHU2NCBlbmNvZGUgPSBycS0+Y29udGV4dC0+dm0tPnB0ZV9lbmNvZGUoMCwgY2FjaGVfbGV2 ZWwsDQogCQkJCQkJICAgICAgIGlzX2xtZW0gPyBQVEVfTE0gOiAwKTsNCiAJc3RydWN0IGludGVs X3JpbmcgKnJpbmcgPSBycS0+cmluZzsNCi0JaW50IHBrdCwgZHdvcmRfbGVuZ3RoOw0KKwl1bnNp Z25lZCBpbnQgcGt0LCBkd29yZF9sZW5ndGg7DQogCXUzMiB0b3RhbCA9IDA7DQogCXUzMiBwYWdl X3NpemU7DQogCXUzMiAqaGRyLCAqY3M7DQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHN0YXRpYyBpbnQg ZW1pdF9wdGUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsDQogDQogCWRvIHsNCiAJCWlmIChjcyAt IGhkciA+PSBwa3QpIHsNCi0JCQlpbnQgZHdvcmRfcmVtOw0KKwkJCXVuc2lnbmVkIGludCBkd29y ZF9yZW07DQogDQogCQkJKmhkciArPSBjcyAtIGhkciAtIDI7DQogCQkJKmNzKysgPSBNSV9OT09Q Ow0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYw0KaW5kZXggMWUyNzUwMjEwODMxLi43MTJlYTU0 N2FmMjQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMNCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYw0KQEAgLTc0LDcgKzc0LDcgQEAg aTkxNV9sM19yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qga29iamVjdCAqa29iaiwNCiAJ CXJldHVybiByZXQ7DQogDQogCWNvdW50ID0gcm91bmRfZG93bihjb3VudCwgc2l6ZW9mKHUzMikp Ow0KLQljb3VudCA9IG1pbl90KHNpemVfdCwgR0VON19MM0xPR19TSVpFIC0gb2Zmc2V0LCBjb3Vu dCk7DQorCWNvdW50ID0gbWluX3Vuc2lnbmVkKEdFTjdfTDNMT0dfU0laRSAtIG9mZnNldCwgY291 bnQpOw0KIAltZW1zZXQoYnVmLCAwLCBjb3VudCk7DQogDQogCXNwaW5fbG9jaygmaTkxNS0+Z2Vt LmNvbnRleHRzLmxvY2spOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf dXRpbHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaA0KaW5kZXggNmMxNGQx MzM2NGJmLi4xMmQ0ZjgwZWZlOWMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3V0aWxzLmgNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaA0KQEAg LTIyNiw3ICsyMjYsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbXNlY3NfdG9famlm Zmllc190aW1lb3V0KGNvbnN0IHVuc2lnbmVkIGludCBtKQ0KIHsNCiAJdW5zaWduZWQgbG9uZyBq ID0gbXNlY3NfdG9famlmZmllcyhtKTsNCiANCi0JcmV0dXJuIG1pbl90KHVuc2lnbmVkIGxvbmcs IE1BWF9KSUZGWV9PRkZTRVQsIGogKyAxKTsNCisJcmV0dXJuIG1pbl91bnNpZ25lZChNQVhfSklG RllfT0ZGU0VULCBqICsgMSk7DQogfQ0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZp bmliYW5kL2NvcmUvY3EuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NxLmMNCmluZGV4IGE3 MDg3NmEwYTIzMS4uMTNhMTc0MWFhNWZlIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9pbmZpbmliYW5k L2NvcmUvY3EuYw0KKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuYw0KQEAgLTMwNCw3 ICszMDQsNyBAQCBzdHJ1Y3QgaWJfY3EgKl9faWJfYWxsb2NfY3FfYW55KHN0cnVjdCBpYl9kZXZp Y2UgKmRldiwgdm9pZCAqcHJpdmF0ZSwNCiAJaWYgKGRldi0+bnVtX2NvbXBfdmVjdG9ycyA+IDEp DQogCQljb21wX3ZlY3RvciA9DQogCQkJYXRvbWljX2luY19yZXR1cm4oJmNvdW50ZXIpICUNCi0J CQltaW5fdChpbnQsIGRldi0+bnVtX2NvbXBfdmVjdG9ycywgbnVtX29ubGluZV9jcHVzKCkpOw0K KwkJCW1pbl91bnNpZ25lZChkZXYtPm51bV9jb21wX3ZlY3RvcnMsIG51bV9vbmxpbmVfY3B1cygp KTsNCiANCiAJcmV0dXJuIF9faWJfYWxsb2NfY3EoZGV2LCBwcml2YXRlLCBucl9jcWUsIGNvbXBf dmVjdG9yLCBwb2xsX2N0eCwNCiAJCQkgICAgIGNhbGxlcik7DQpAQCAtMzgyLDkgKzM4Miw5IEBA IHN0YXRpYyBpbnQgaWJfYWxsb2NfY3FzKHN0cnVjdCBpYl9kZXZpY2UgKmRldiwgdW5zaWduZWQg aW50IG5yX2NxZXMsDQogCSAqIGEgcmVhc29uYWJsZSBiYXRjaCBzaXplIHNvIHRoYXQgd2UgY2Fu IHNoYXJlIENRcyBiZXR3ZWVuDQogCSAqIG11bHRpcGxlIHVzZXJzIGluc3RlYWQgb2YgYWxsb2Nh dGluZyBhIGxhcmdlciBudW1iZXIgb2YgQ1FzLg0KIAkgKi8NCi0JbnJfY3FlcyA9IG1pbl90KHVu c2lnbmVkIGludCwgZGV2LT5hdHRycy5tYXhfY3FlLA0KKwlucl9jcWVzID0gbWluX3Vuc2lnbmVk KGRldi0+YXR0cnMubWF4X2NxZSwNCiAJCQltYXgobnJfY3FlcywgSUJfTUFYX1NIQVJFRF9DUV9T WikpOw0KLQlucl9jcXMgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGRldi0+bnVtX2NvbXBfdmVjdG9y cywgbnVtX29ubGluZV9jcHVzKCkpOw0KKwlucl9jcXMgPSBtaW5fdW5zaWduZWQoZGV2LT5udW1f Y29tcF92ZWN0b3JzLCBudW1fb25saW5lX2NwdXMoKSk7DQogCWZvciAoaSA9IDA7IGkgPCBucl9j cXM7IGkrKykgew0KIAkJY3EgPSBpYl9hbGxvY19jcShkZXYsIE5VTEwsIG5yX2NxZXMsIGksIHBv bGxfY3R4KTsNCiAJCWlmIChJU19FUlIoY3EpKSB7DQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHN0cnVj dCBpYl9jcSAqaWJfY3FfcG9vbF9nZXQoc3RydWN0IGliX2RldmljZSAqZGV2LCB1bnNpZ25lZCBp bnQgbnJfY3FlLA0KIAl9DQogDQogCW51bV9jb21wX3ZlY3RvcnMgPQ0KLQkJbWluX3QodW5zaWdu ZWQgaW50LCBkZXYtPm51bV9jb21wX3ZlY3RvcnMsIG51bV9vbmxpbmVfY3B1cygpKTsNCisJCW1p bl91bnNpZ25lZChkZXYtPm51bV9jb21wX3ZlY3RvcnMsIG51bV9vbmxpbmVfY3B1cygpKTsNCiAJ LyogUHJvamVjdCB0aGUgYWZmaW50eSB0byB0aGUgZGV2aWNlIGNvbXBsZXRpb24gdmVjdG9yIHJh bmdlICovDQogCWlmIChjb21wX3ZlY3Rvcl9oaW50IDwgMCkgew0KIAkJY29tcF92ZWN0b3JfaGlu dCA9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvcncuYyBiL2RyaXZlcnMv aW5maW5pYmFuZC9jb3JlL3J3LmMNCmluZGV4IDgzNjc5NzRiNzk5OC4uYzE1MjE4ZmMyNDRhIDEw MDY0NA0KLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvcncuYw0KKysrIGIvZHJpdmVycy9p bmZpbmliYW5kL2NvcmUvcncuYw0KQEAgLTY4MSw3ICs2ODEsNyBAQCB2b2lkIHJkbWFfcndfaW5p dF9xcChzdHJ1Y3QgaWJfZGV2aWNlICpkZXYsIHN0cnVjdCBpYl9xcF9pbml0X2F0dHIgKmF0dHIp DQogCSAqIGV2ZW4gc3VwcG9ydCBhbGwgd2UgbmVlZCwgYW5kIHdlJ2xsIGhhdmUgdG8gbGl2ZSB3 aXRoIHdoYXQgd2UgZ2V0Li4NCiAJICovDQogCWF0dHItPmNhcC5tYXhfc2VuZF93ciA9DQotCQlt aW5fdCh1MzIsIGF0dHItPmNhcC5tYXhfc2VuZF93ciwgZGV2LT5hdHRycy5tYXhfcXBfd3IpOw0K KwkJbWluX3Vuc2lnbmVkKGF0dHItPmNhcC5tYXhfc2VuZF93ciwgZGV2LT5hdHRycy5tYXhfcXBf d3IpOw0KIH0NCiANCiBpbnQgcmRtYV9yd19pbml0X21ycyhzdHJ1Y3QgaWJfcXAgKnFwLCBzdHJ1 Y3QgaWJfcXBfaW5pdF9hdHRyICphdHRyKQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFu ZC9jb3JlL3ZlcmJzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS92ZXJicy5jDQppbmRleCAy NmIwMjFmNDNiYTQuLmY0ZmM3MjFjOWNmNCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvaW5maW5pYmFu ZC9jb3JlL3ZlcmJzLmMNCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL3ZlcmJzLmMNCkBA IC0xMzU5LDcgKzEzNTksNyBAQCBzdHJ1Y3QgaWJfcXAgKmliX2NyZWF0ZV9xcF9rZXJuZWwoc3Ry dWN0IGliX3BkICpwZCwNCiAJICogbWF4X3NlbmRfc2dlIDw9IG1heF9zZ2VfcmQuDQogCSAqLw0K IAlxcC0+bWF4X3dyaXRlX3NnZSA9IHFwX2luaXRfYXR0ci0+Y2FwLm1heF9zZW5kX3NnZTsNCi0J cXAtPm1heF9yZWFkX3NnZSA9IG1pbl90KHUzMiwgcXBfaW5pdF9hdHRyLT5jYXAubWF4X3NlbmRf c2dlLA0KKwlxcC0+bWF4X3JlYWRfc2dlID0gbWluX3Vuc2lnbmVkKHFwX2luaXRfYXR0ci0+Y2Fw Lm1heF9zZW5kX3NnZSwNCiAJCQkJIGRldmljZS0+YXR0cnMubWF4X3NnZV9yZCk7DQogCWlmIChx cF9pbml0X2F0dHItPmNyZWF0ZV9mbGFncyAmIElCX1FQX0NSRUFURV9JTlRFR1JJVFlfRU4pDQog CQlxcC0+aW50ZWdyaXR5X2VuID0gdHJ1ZTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2lu dGVsL3Bhc2lkLmMgYi9kcml2ZXJzL2lvbW11L2ludGVsL3Bhc2lkLmMNCmluZGV4IGUxM2Q3ZTUy NzNlMS4uZTk4ZjA3NTJmY2E4IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9pb21tdS9pbnRlbC9wYXNp ZC5jDQorKysgYi9kcml2ZXJzL2lvbW11L2ludGVsL3Bhc2lkLmMNCkBAIC0xMDksNyArMTA5LDcg QEAgaW50IGludGVsX3Bhc2lkX2FsbG9jX3RhYmxlKHN0cnVjdCBkZXZpY2UgKmRldikNCiAJCXJl dHVybiAtRU5PTUVNOw0KIA0KIAlpZiAoaW5mby0+cGFzaWRfc3VwcG9ydGVkKQ0KLQkJbWF4X3Bh c2lkID0gbWluX3QodTMyLCBwY2lfbWF4X3Bhc2lkcyh0b19wY2lfZGV2KGRldikpLA0KKwkJbWF4 X3Bhc2lkID0gbWluX3Vuc2lnbmVkKHBjaV9tYXhfcGFzaWRzKHRvX3BjaV9kZXYoZGV2KSksDQog CQkJCSAgaW50ZWxfcGFzaWRfbWF4X2lkKTsNCiANCiAJc2l6ZSA9IG1heF9wYXNpZCA+PiAoUEFT SURfUERFX1NISUZUIC0gMyk7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9yYWlkNS5jIGIvZHJp dmVycy9tZC9yYWlkNS5jDQppbmRleCA3YjgyMGI4MWQ4YzIuLmFmN2MyNjI5ZjlhYyAxMDA2NDQN Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDUuYw0KKysrIGIvZHJpdmVycy9tZC9yYWlkNS5jDQpAQCAt NjI3Nyw4ICs2Mjc3LDggQEAgc3RhdGljIHNlY3Rvcl90IHJlc2hhcGVfcmVxdWVzdChzdHJ1Y3Qg bWRkZXYgKm1kZGV2LCBzZWN0b3JfdCBzZWN0b3JfbnIsIGludCAqc2sNCiAJCSAqIEEgbmVnYXRp dmUgbnVtYmVyIGlzIG92ZXJseSBwZXNzaW1pc3RpYywgYW5kIGNhdXNlcw0KIAkJICogb2J2aW91 cyBwcm9ibGVtcyBmb3IgdW5zaWduZWQgc3RvcmFnZS4gIFNvIGNsaXAgdG8gMC4NCiAJCSAqLw0K LQkJcmVhZHBvcyAtPSBtaW5fdChzZWN0b3JfdCwgcmVzaGFwZV9zZWN0b3JzLCByZWFkcG9zKTsN Ci0JCXNhZmVwb3MgLT0gbWluX3Qoc2VjdG9yX3QsIHJlc2hhcGVfc2VjdG9ycywgc2FmZXBvcyk7 DQorCQlyZWFkcG9zIC09IG1pbl91bnNpZ25lZChyZXNoYXBlX3NlY3RvcnMsIHJlYWRwb3MpOw0K KwkJc2FmZXBvcyAtPSBtaW5fdW5zaWduZWQocmVzaGFwZV9zZWN0b3JzLCBzYWZlcG9zKTsNCiAJ fQ0KIA0KIAkvKiBIYXZpbmcgY2FsY3VsYXRlZCB0aGUgJ3dyaXRlcG9zJyBwb3NzaWJseSB1c2Ug aXQNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9kZXYu YyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2Rldi5jDQppbmRleCBkNjFj ZDMyZWMzYjYuLjczMGY3ZjM3OTM0NSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0 L3Fsb2dpYy9xZWQvcWVkX2Rldi5jDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMv cWVkL3FlZF9kZXYuYw0KQEAgLTM1OTQsMTUgKzM1OTQsMTQgQEAgc3RhdGljIHZvaWQgcWVkX2h3 X3NldF9mZWF0KHN0cnVjdCBxZWRfaHdmbiAqcF9od2ZuKQ0KIAkJICogY29uc2lkZXJhdGlvbiBh cyB0byBob3cgbWFueSBsMiBxdWV1ZXMgLyBjbnFzIHdlIGhhdmUuDQogCQkgKi8NCiAJCWZlYXRf bnVtW1FFRF9SRE1BX0NOUV0gPQ0KLQkJCW1pbl90KHUzMiwgc2JfY250LmNudCAvIDIsDQorCQkJ bWluX3Vuc2lnbmVkKHNiX2NudC5jbnQgLyAyLA0KIAkJCSAgICAgIFJFU0NfTlVNKHBfaHdmbiwg UUVEX1JETUFfQ05RX1JBTSkpOw0KIA0KIAkJbm9uX2wyX3NicyA9IGZlYXRfbnVtW1FFRF9SRE1B X0NOUV07DQogCX0NCiAJaWYgKFFFRF9JU19MMl9QRVJTT05BTElUWShwX2h3Zm4pKSB7DQogCQkv KiBTdGFydCBieSBhbGxvY2F0aW5nIFZGIHF1ZXVlcywgdGhlbiBQRidzICovDQotCQlmZWF0X251 bVtRRURfVkZfTDJfUVVFXSA9IG1pbl90KHUzMiwNCi0JCQkJCQlSRVNDX05VTShwX2h3Zm4sIFFF RF9MMl9RVUVVRSksDQorCQlmZWF0X251bVtRRURfVkZfTDJfUVVFXSA9IG1pbl91bnNpZ25lZChS RVNDX05VTShwX2h3Zm4sIFFFRF9MMl9RVUVVRSksDQogCQkJCQkJc2JfY250Lmlvdl9jbnQpOw0K IAkJZmVhdF9udW1bUUVEX1BGX0wyX1FVRV0gPSBtaW5fdCh1MzIsDQogCQkJCQkJc2JfY250LmNu dCAtIG5vbl9sMl9zYnMsDQpAQCAtMzYxMywxNyArMzYxMiwxNyBAQCBzdGF0aWMgdm9pZCBxZWRf aHdfc2V0X2ZlYXQoc3RydWN0IHFlZF9od2ZuICpwX2h3Zm4pDQogCX0NCiANCiAJaWYgKFFFRF9J U19GQ09FX1BFUlNPTkFMSVRZKHBfaHdmbikpDQotCQlmZWF0X251bVtRRURfRkNPRV9DUV0gPSAg bWluX3QodTMyLCBzYl9jbnQuY250LA0KKwkJZmVhdF9udW1bUUVEX0ZDT0VfQ1FdID0gIG1pbl91 bnNpZ25lZCAoc2JfY250LmNudCwNCiAJCQkJCSAgICAgICBSRVNDX05VTShwX2h3Zm4sDQogCQkJ CQkJCVFFRF9DTURRU19DUVMpKTsNCiANCiAJaWYgKFFFRF9JU19JU0NTSV9QRVJTT05BTElUWShw X2h3Zm4pKQ0KLQkJZmVhdF9udW1bUUVEX0lTQ1NJX0NRXSA9IG1pbl90KHUzMiwgc2JfY250LmNu dCwNCisJCWZlYXRfbnVtW1FFRF9JU0NTSV9DUV0gPSBtaW5fdW5zaWduZWQoc2JfY250LmNudCwN CiAJCQkJCSAgICAgICBSRVNDX05VTShwX2h3Zm4sDQogCQkJCQkJCVFFRF9DTURRU19DUVMpKTsN CiANCiAJaWYgKFFFRF9JU19OVk1FVENQX1BFUlNPTkFMSVRZKHBfaHdmbikpDQotCQlmZWF0X251 bVtRRURfTlZNRVRDUF9DUV0gPSBtaW5fdCh1MzIsIHNiX2NudC5jbnQsDQorCQlmZWF0X251bVtR RURfTlZNRVRDUF9DUV0gPSBtaW5fdW5zaWduZWQoc2JfY250LmNudCwNCiAJCQkJCQkgUkVTQ19O VU0ocF9od2ZuLA0KIAkJCQkJCQkgIFFFRF9DTURRU19DUVMpKTsNCiANCmRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9zcmlvdi5jIGIvZHJpdmVycy9uZXQv ZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfc3Jpb3YuYw0KaW5kZXggMDg0OGI1NTI5ZDQ4Li42NjBm NTg3ODk3Y2IgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3Fl ZF9zcmlvdi5jDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9zcmlv di5jDQpAQCAtNDc4OCw3ICs0Nzg4LDcgQEAgdm9pZCBxZWRfaW5mb3JtX3ZmX2xpbmtfc3RhdGUo c3RydWN0IHFlZF9od2ZuICpod2ZuKQ0KIAkJCXN0cnVjdCBxZWRfcHR0ICpwdHQ7DQogCQkJaW50 IHJhdGU7DQogDQotCQkJcmF0ZSA9IG1pbl90KGludCwgdmZfaW5mby0+dHhfcmF0ZSwgbGluay5z cGVlZCk7DQorCQkJcmF0ZSA9IG1pbl91bnNpZ25lZCh2Zl9pbmZvLT50eF9yYXRlLCBsaW5rLnNw ZWVkKTsNCiANCiAJCQlwdHQgPSBxZWRfcHR0X2FjcXVpcmUoaHdmbik7DQogCQkJaWYgKCFwdHQp IHsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2NzaV9pb2N0bC5jIGIvZHJpdmVycy9zY3Np L3Njc2lfaW9jdGwuYw0KaW5kZXggMmQyMGRhNTVmYjY0Li4zYmZhMmFmZjkyOGEgMTAwNjQ0DQot LS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9pb2N0bC5jDQorKysgYi9kcml2ZXJzL3Njc2kvc2NzaV9p b2N0bC5jDQpAQCAtMjAxLDcgKzIwMSw3IEBAIHN0YXRpYyBpbnQgc2dfc2V0X3Jlc2VydmVkX3Np emUoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2LCBpbnQgX191c2VyICpwKQ0KIAlpZiAoc2l6ZSA8 IDApDQogCQlyZXR1cm4gLUVJTlZBTDsNCiANCi0Jc2Rldi0+c2dfcmVzZXJ2ZWRfc2l6ZSA9IG1p bl90KHVuc2lnbmVkIGludCwgc2l6ZSwNCisJc2Rldi0+c2dfcmVzZXJ2ZWRfc2l6ZSA9IG1pbl91 bnNpZ25lZChzaXplLA0KIAkJCQkgICAgICAgcXVldWVfbWF4X2J5dGVzKHNkZXYtPnJlcXVlc3Rf cXVldWUpKTsNCiAJcmV0dXJuIDA7DQogfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3Np X3NjYW4uYyBiL2RyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYw0KaW5kZXggNWQyN2Y1MTk2ZGU2Li4x YjdiMjRjNzhmZTYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9zY2FuLmMNCisrKyBi L2RyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYw0KQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgaW50 IHNjc2lfcmVhbGxvY19zZGV2X2J1ZGdldF9tYXAoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2LA0K IAlpbnQgcmV0Ow0KIAlzdHJ1Y3Qgc2JpdG1hcCBzYl9iYWNrdXA7DQogDQotCWRlcHRoID0gbWlu X3QodW5zaWduZWQgaW50LCBkZXB0aCwgc2NzaV9kZXZpY2VfbWF4X3F1ZXVlX2RlcHRoKHNkZXYp KTsNCisJZGVwdGggPSBtaW5fdW5zaWduZWQoZGVwdGgsIHNjc2lfZGV2aWNlX21heF9xdWV1ZV9k ZXB0aChzZGV2KSk7DQogDQogCS8qDQogCSAqIHJlYWxsb2MgaWYgbmV3IHNoaWZ0IGlzIGNhbGN1 bGF0ZWQsIHdoaWNoIGlzIGNhdXNlZCBieSBzZXR0aW5nDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9z Y3NpL3NkX3piYy5jIGIvZHJpdmVycy9zY3NpL3NkX3piYy5jDQppbmRleCBiZDE1NjI0YzYzMjIu Ljk0NTgwZWVmYjYyYSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvc2NzaS9zZF96YmMuYw0KKysrIGIv ZHJpdmVycy9zY3NpL3NkX3piYy5jDQpAQCAtMjExLDkgKzIxMSw5IEBAIHN0YXRpYyB2b2lkICpz ZF96YmNfYWxsb2NfcmVwb3J0X2J1ZmZlcihzdHJ1Y3Qgc2NzaV9kaXNrICpzZGtwLA0KIAkgKi8N CiAJbnJfem9uZXMgPSBtaW4obnJfem9uZXMsIHNka3AtPnpvbmVfaW5mby5ucl96b25lcyk7DQog CWJ1ZnNpemUgPSByb3VuZHVwKChucl96b25lcyArIDEpICogNjQsIFNFQ1RPUl9TSVpFKTsNCi0J YnVmc2l6ZSA9IG1pbl90KHNpemVfdCwgYnVmc2l6ZSwNCisJYnVmc2l6ZSA9IG1pbl91bnNpZ25l ZChidWZzaXplLA0KIAkJCXF1ZXVlX21heF9od19zZWN0b3JzKHEpIDw8IFNFQ1RPUl9TSElGVCk7 DQotCWJ1ZnNpemUgPSBtaW5fdChzaXplX3QsIGJ1ZnNpemUsIHF1ZXVlX21heF9zZWdtZW50cyhx KSA8PCBQQUdFX1NISUZUKTsNCisJYnVmc2l6ZSA9IG1pbl91bnNpZ25lZChidWZzaXplLCBxdWV1 ZV9tYXhfc2VnbWVudHMocSkgPDwgUEFHRV9TSElGVCk7DQogDQogCXdoaWxlIChidWZzaXplID49 IFNFQ1RPUl9TSVpFKSB7DQogCQlidWYgPSBfX3ZtYWxsb2MoYnVmc2l6ZSwNCkBAIC04ODAsNyAr ODgwLDcgQEAgaW50IHNkX3piY19yZXZhbGlkYXRlX3pvbmVzKHN0cnVjdCBzY3NpX2Rpc2sgKnNk a3ApDQogCQlnb3RvIHVubG9jazsNCiAJfQ0KIA0KLQltYXhfYXBwZW5kID0gbWluX3QodTMyLCBs b2dpY2FsX3RvX3NlY3RvcnMoc2RrcC0+ZGV2aWNlLCB6b25lX2Jsb2NrcyksDQorCW1heF9hcHBl bmQgPSBtaW5fdW5zaWduZWQobG9naWNhbF90b19zZWN0b3JzKHNka3AtPmRldmljZSwgem9uZV9i bG9ja3MpLA0KIAkJCSAgIHEtPmxpbWl0cy5tYXhfc2VnbWVudHMgPDwgKFBBR0VfU0hJRlQgLSA5 KSk7DQogCW1heF9hcHBlbmQgPSBtaW5fdCh1MzIsIG1heF9hcHBlbmQsIHF1ZXVlX21heF9od19z ZWN0b3JzKHEpKTsNCiANCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc2cuYyBiL2RyaXZlcnMv c2NzaS9zZy5jDQppbmRleCBjZTM0YThhZDUzYjQuLmE0ZjVlZmNmZjcwMSAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvc2NzaS9zZy5jDQorKysgYi9kcml2ZXJzL3Njc2kvc2cuYw0KQEAgLTEwNDEsNyAr MTA0MSw3IEBAIHNnX2lvY3RsX2NvbW1vbihzdHJ1Y3QgZmlsZSAqZmlscCwgU2dfZGV2aWNlICpz ZHAsIFNnX2ZkICpzZnAsDQogCQltdXRleF91bmxvY2soJnNmcC0+Zl9tdXRleCk7DQogCQlyZXR1 cm4gMDsNCiAJY2FzZSBTR19HRVRfUkVTRVJWRURfU0laRToNCi0JCXZhbCA9IG1pbl90KGludCwg c2ZwLT5yZXNlcnZlLmJ1ZmZsZW4sDQorCQl2YWwgPSBtaW5fdW5zaWduZWQoc2ZwLT5yZXNlcnZl LmJ1ZmZsZW4sDQogCQkJICAgIG1heF9zZWN0b3JzX2J5dGVzKHNkcC0+ZGV2aWNlLT5yZXF1ZXN0 X3F1ZXVlKSk7DQogCQlyZXR1cm4gcHV0X3VzZXIodmFsLCBpcCk7DQogCWNhc2UgU0dfU0VUX0NP TU1BTkRfUToNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGkuYyBiL2RyaXZlcnMvc3BpL3Nw aS5jDQppbmRleCA1ZjlhZWRkMWYwYjYuLmI1NmUxYjAxN2MwYSAxMDA2NDQNCi0tLSBhL2RyaXZl cnMvc3BpL3NwaS5jDQorKysgYi9kcml2ZXJzL3NwaS9zcGkuYw0KQEAgLTEwMjMsNyArMTAyMyw3 IEBAIHN0YXRpYyBpbnQgc3BpX21hcF9idWZfYXR0cnMoc3RydWN0IHNwaV9jb250cm9sbGVyICpj dGxyLCBzdHJ1Y3QgZGV2aWNlICpkZXYsDQogI2Vsc2UNCiAJY29uc3QgYm9vbCBrbWFwX2J1ZiA9 IGZhbHNlOw0KICNlbmRpZg0KLQlpbnQgZGVzY19sZW47DQorCXVuc2lnbmVkIGludCBkZXNjX2xl bjsNCiAJaW50IHNnczsNCiAJc3RydWN0IHBhZ2UgKnZtX3BhZ2U7DQogCXN0cnVjdCBzY2F0dGVy bGlzdCAqc2c7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvbl90dHkuYyBiL2RyaXZlcnMvdHR5 L25fdHR5LmMNCmluZGV4IDU5NzAxOTY5MGFlNi4uODNjOGNiNjM5NTA0IDEwMDY0NA0KLS0tIGEv ZHJpdmVycy90dHkvbl90dHkuYw0KKysrIGIvZHJpdmVycy90dHkvbl90dHkuYw0KQEAgLTE1MDks MTQgKzE1MDksMTQgQEAgbl90dHlfcmVjZWl2ZV9idWZfcmVhbF9yYXcoc3RydWN0IHR0eV9zdHJ1 Y3QgKnR0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqY3AsDQogCXNpemVfdCBuLCBoZWFkOw0KIA0K IAloZWFkID0gbGRhdGEtPnJlYWRfaGVhZCAmIChOX1RUWV9CVUZfU0laRSAtIDEpOw0KLQluID0g bWluX3Qoc2l6ZV90LCBjb3VudCwgTl9UVFlfQlVGX1NJWkUgLSBoZWFkKTsNCisJbiA9IG1pbl91 bnNpZ25lZChjb3VudCwgTl9UVFlfQlVGX1NJWkUgLSBoZWFkKTsNCiAJbWVtY3B5KHJlYWRfYnVm X2FkZHIobGRhdGEsIGhlYWQpLCBjcCwgbik7DQogCWxkYXRhLT5yZWFkX2hlYWQgKz0gbjsNCiAJ Y3AgKz0gbjsNCiAJY291bnQgLT0gbjsNCiANCiAJaGVhZCA9IGxkYXRhLT5yZWFkX2hlYWQgJiAo Tl9UVFlfQlVGX1NJWkUgLSAxKTsNCi0JbiA9IG1pbl90KHNpemVfdCwgY291bnQsIE5fVFRZX0JV Rl9TSVpFIC0gaGVhZCk7DQorCW4gPSBtaW5fdW5zaWduZWQoY291bnQsIE5fVFRZX0JVRl9TSVpF IC0gaGVhZCk7DQogCW1lbWNweShyZWFkX2J1Zl9hZGRyKGxkYXRhLCBoZWFkKSwgY3AsIG4pOw0K IAlsZGF0YS0+cmVhZF9oZWFkICs9IG47DQogfQ0KQEAgLTE1OTUsNyArMTU5NSw3IEBAIHN0YXRp YyB2b2lkIF9fcmVjZWl2ZV9idWYoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgY29uc3QgdW5zaWdu ZWQgY2hhciAqY3AsDQogew0KIAlzdHJ1Y3Qgbl90dHlfZGF0YSAqbGRhdGEgPSB0dHktPmRpc2Nf ZGF0YTsNCiAJYm9vbCBwcmVvcHMgPSBJX0lTVFJJUCh0dHkpIHx8IChJX0lVQ0xDKHR0eSkgJiYg TF9JRVhURU4odHR5KSk7DQotCXNpemVfdCBsYV9jb3VudCA9IG1pbl90KHNpemVfdCwgbGRhdGEt Pmxvb2thaGVhZF9jb3VudCwgY291bnQpOw0KKwlzaXplX3QgbGFfY291bnQgPSBtaW5fdW5zaWdu ZWQobGRhdGEtPmxvb2thaGVhZF9jb3VudCwgY291bnQpOw0KIA0KIAlpZiAobGRhdGEtPnJlYWxf cmF3KQ0KIAkJbl90dHlfcmVjZWl2ZV9idWZfcmVhbF9yYXcodHR5LCBjcCwgZnAsIGNvdW50KTsN CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS90dHlfYnVmZmVyLmMgYi9kcml2ZXJzL3R0eS90dHlf YnVmZmVyLmMNCmluZGV4IDVlMjg3ZGVkY2UwMS4uZDk3NTVlODczODA4IDEwMDY0NA0KLS0tIGEv ZHJpdmVycy90dHkvdHR5X2J1ZmZlci5jDQorKysgYi9kcml2ZXJzL3R0eS90dHlfYnVmZmVyLmMN CkBAIC00NTYsNyArNDU2LDcgQEAgaW50IHR0eV9sZGlzY19yZWNlaXZlX2J1ZihzdHJ1Y3QgdHR5 X2xkaXNjICpsZCwgY29uc3QgdW5zaWduZWQgY2hhciAqcCwNCiAJaWYgKGxkLT5vcHMtPnJlY2Vp dmVfYnVmMikNCiAJCWNvdW50ID0gbGQtPm9wcy0+cmVjZWl2ZV9idWYyKGxkLT50dHksIHAsIGYs IGNvdW50KTsNCiAJZWxzZSB7DQotCQljb3VudCA9IG1pbl90KGludCwgY291bnQsIGxkLT50dHkt PnJlY2VpdmVfcm9vbSk7DQorCQljb3VudCA9IG1pbl91bnNpZ25lZChjb3VudCwgbGQtPnR0eS0+ cmVjZWl2ZV9yb29tKTsNCiAJCWlmIChjb3VudCAmJiBsZC0+b3BzLT5yZWNlaXZlX2J1ZikNCiAJ CQlsZC0+b3BzLT5yZWNlaXZlX2J1ZihsZC0+dHR5LCBwLCBmLCBjb3VudCk7DQogCX0NCmRpZmYg LS1naXQgYS9kcml2ZXJzL3R0eS92dC9zZWxlY3Rpb24uYyBiL2RyaXZlcnMvdHR5L3Z0L3NlbGVj dGlvbi5jDQppbmRleCA2ZWYyMmYwMWNjNTEuLjdjNDM1YzNjNmVkNyAxMDA2NDQNCi0tLSBhL2Ry aXZlcnMvdHR5L3Z0L3NlbGVjdGlvbi5jDQorKysgYi9kcml2ZXJzL3R0eS92dC9zZWxlY3Rpb24u Yw0KQEAgLTMyNywxMCArMzI3LDEwIEBAIHN0YXRpYyBpbnQgdmNfc2VsZWN0aW9uKHN0cnVjdCB2 Y19kYXRhICp2Yywgc3RydWN0IHRpb2NsX3NlbGVjdGlvbiAqdiwNCiAJCXJldHVybiAwOw0KIAl9 DQogDQotCXYtPnhzID0gbWluX3QodTE2LCB2LT54cyAtIDEsIHZjLT52Y19jb2xzIC0gMSk7DQot CXYtPnlzID0gbWluX3QodTE2LCB2LT55cyAtIDEsIHZjLT52Y19yb3dzIC0gMSk7DQotCXYtPnhl ID0gbWluX3QodTE2LCB2LT54ZSAtIDEsIHZjLT52Y19jb2xzIC0gMSk7DQotCXYtPnllID0gbWlu X3QodTE2LCB2LT55ZSAtIDEsIHZjLT52Y19yb3dzIC0gMSk7DQorCXYtPnhzID0gbWluX3Vuc2ln bmVkKHYtPnhzIC0gMSwgdmMtPnZjX2NvbHMgLSAxKTsNCisJdi0+eXMgPSBtaW5fdW5zaWduZWQo di0+eXMgLSAxLCB2Yy0+dmNfcm93cyAtIDEpOw0KKwl2LT54ZSA9IG1pbl91bnNpZ25lZCh2LT54 ZSAtIDEsIHZjLT52Y19jb2xzIC0gMSk7DQorCXYtPnllID0gbWluX3Vuc2lnbmVkKHYtPnllIC0g MSwgdmMtPnZjX3Jvd3MgLSAxKTsNCiANCiAJaWYgKG1vdXNlX3JlcG9ydGluZygpICYmICh2LT5z ZWxfbW9kZSAmIFRJT0NMX1NFTE1PVVNFUkVQT1JUKSkgew0KIAkJbW91c2VfcmVwb3J0KHR0eSwg di0+c2VsX21vZGUgJiBUSU9DTF9TRUxCVVRUT05NQVNLLCB2LT54cywNCmRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9ob3N0L2VoY2ktcS5jIGIvZHJpdmVycy91c2IvaG9zdC9laGNpLXEuYw0KaW5k ZXggNjY2ZjVjNGRiMjVhLi4zZDUzYTU2OTllNzMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3VzYi9o b3N0L2VoY2ktcS5jDQorKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktcS5jDQpAQCAtNjM0LDcg KzYzNCw3IEBAIHFoX3VyYl90cmFuc2FjdGlvbiAoDQogCQkvKiB1cmItPnRyYW5zZmVyX2J1ZmZl cl9sZW5ndGggbWF5IGJlIHNtYWxsZXIgdGhhbiB0aGUNCiAJCSAqIHNpemUgb2YgdGhlIHNjYXR0 ZXJsaXN0IChvciB2aWNlIHZlcnNhKQ0KIAkJICovDQotCQl0aGlzX3NnX2xlbiA9IG1pbl90KGlu dCwgc2dfZG1hX2xlbihzZyksIGxlbik7DQorCQl0aGlzX3NnX2xlbiA9IG1pbl91bnNpZ25lZChz Z19kbWFfbGVuKHNnKSwgbGVuKTsNCiAJfSBlbHNlIHsNCiAJCXNnID0gTlVMTDsNCiAJCWJ1ZiA9 IHVyYi0+dHJhbnNmZXJfZG1hOw0KQEAgLTY3OCw3ICs2NzgsNyBAQCBxaF91cmJfdHJhbnNhY3Rp b24gKA0KIAkJCQlicmVhazsNCiAJCQlzZyA9IHNnX25leHQoc2cpOw0KIAkJCWJ1ZiA9IHNnX2Rt YV9hZGRyZXNzKHNnKTsNCi0JCQl0aGlzX3NnX2xlbiA9IG1pbl90KGludCwgc2dfZG1hX2xlbihz ZyksIGxlbik7DQorCQkJdGhpc19zZ19sZW4gPSBtaW5fdW5zaWduZWQoc2dfZG1hX2xlbihzZyks IGxlbik7DQogCQl9DQogDQogCQlxdGRfcHJldiA9IHF0ZDsNCkBAIC04MzAsNyArODMwLDcgQEAg cWhfbWFrZSAoDQogCQkJCQkxIDw8ICh1cmItPmVwLT5kZXNjLmJJbnRlcnZhbCAtIDEpKTsNCiAN CiAJCQkvKiBBbGxvdyB1cmItPmludGVydmFsIHRvIG92ZXJyaWRlICovDQotCQkJcWgtPnBzLmJ3 X3VwZXJpb2QgPSBtaW5fdCh1bnNpZ25lZCwgdG1wLCB1cmItPmludGVydmFsKTsNCisJCQlxaC0+ cHMuYndfdXBlcmlvZCA9IG1pbl91bnNpZ25lZCh0bXAsIHVyYi0+aW50ZXJ2YWwpOw0KIAkJCXFo LT5wcy5id19wZXJpb2QgPSBxaC0+cHMuYndfdXBlcmlvZCA+PiAzOw0KIAkJfSBlbHNlIHsNCiAJ CQlpbnQJCXRoaW5rX3RpbWU7DQpAQCAtODYyLDcgKzg2Miw3IEBAIHFoX21ha2UgKA0KIAkJCXRt cCA9IHJvdW5kZG93bl9wb3dfb2ZfdHdvKHRtcCk7DQogDQogCQkJLyogQWxsb3cgdXJiLT5pbnRl cnZhbCB0byBvdmVycmlkZSAqLw0KLQkJCXFoLT5wcy5id19wZXJpb2QgPSBtaW5fdCh1bnNpZ25l ZCwgdG1wLCB1cmItPmludGVydmFsKTsNCisJCQlxaC0+cHMuYndfcGVyaW9kID0gbWluX3Vuc2ln bmVkKHRtcCwgdXJiLT5pbnRlcnZhbCk7DQogCQkJcWgtPnBzLmJ3X3VwZXJpb2QgPSBxaC0+cHMu YndfcGVyaW9kIDw8IDM7DQogCQl9DQogCX0NCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0 L2VoY2ktc2NoZWQuYyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1zY2hlZC5jDQppbmRleCBiZDU0 MmI2ZmM0NmIuLjQ4NGUzNDk3MjRiNSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvZWhj aS1zY2hlZC5jDQorKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktc2NoZWQuYw0KQEAgLTEwNTks NyArMTA1OSw3IEBAIGlzb19zdHJlYW1faW5pdCgNCiAJCQkJMSA8PCAodXJiLT5lcC0+ZGVzYy5i SW50ZXJ2YWwgLSAxKSk7DQogDQogCQkvKiBBbGxvdyB1cmItPmludGVydmFsIHRvIG92ZXJyaWRl ICovDQotCQlzdHJlYW0tPnBzLmJ3X3VwZXJpb2QgPSBtaW5fdCh1bnNpZ25lZCwgdG1wLCB1cmIt PmludGVydmFsKTsNCisJCXN0cmVhbS0+cHMuYndfdXBlcmlvZCA9IG1pbl91bnNpZ25lZCh0bXAs IHVyYi0+aW50ZXJ2YWwpOw0KIA0KIAkJc3RyZWFtLT51cGVyaW9kID0gdXJiLT5pbnRlcnZhbDsN CiAJCXN0cmVhbS0+cHMucGVyaW9kID0gdXJiLT5pbnRlcnZhbCA+PiAzOw0KQEAgLTExMDIsNyAr MTEwMiw3IEBAIGlzb19zdHJlYW1faW5pdCgNCiAJCQkJMSA8PCAodXJiLT5lcC0+ZGVzYy5iSW50 ZXJ2YWwgLSAxKSk7DQogDQogCQkvKiBBbGxvdyB1cmItPmludGVydmFsIHRvIG92ZXJyaWRlICov DQotCQlzdHJlYW0tPnBzLmJ3X3BlcmlvZCA9IG1pbl90KHVuc2lnbmVkLCB0bXAsIHVyYi0+aW50 ZXJ2YWwpOw0KKwkJc3RyZWFtLT5wcy5id19wZXJpb2QgPSBtaW5fdW5zaWduZWQodG1wLCB1cmIt PmludGVydmFsKTsNCiAJCXN0cmVhbS0+cHMuYndfdXBlcmlvZCA9IHN0cmVhbS0+cHMuYndfcGVy aW9kIDw8IDM7DQogDQogCQlzdHJlYW0tPnBzLnBlcmlvZCA9IHVyYi0+aW50ZXJ2YWw7DQpkaWZm IC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLWhjZC5jIGIvZHJpdmVycy91c2IvaG9zdC9v aGNpLWhjZC5jDQppbmRleCAwNDU3ZGQ5ZjZjMTkuLjYzNDk4Mjg2Yjc4YSAxMDA2NDQNCi0tLSBh L2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1oY2QuYw0KKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNp LWhjZC5jDQpAQCAtMTE2LDcgKzExNiw3IEBAIE1PRFVMRV9QQVJNX0RFU0MgKG5vX2hhbmRzaGFr ZSwgInRydWUgKG5vdCBkZWZhdWx0KSBkaXNhYmxlcyBCSU9TIGhhbmRzaGFrZSIpOw0KIA0KIHN0 YXRpYyBpbnQgbnVtYmVyX29mX3RkcyhzdHJ1Y3QgdXJiICp1cmIpDQogew0KLQlpbnQJCQlsZW4s IGksIG51bSwgdGhpc19zZ19sZW47DQorCXVuc2lnbmVkIGludAkJbGVuLCBpLCBudW0sIHRoaXNf c2dfbGVuOw0KIAlzdHJ1Y3Qgc2NhdHRlcmxpc3QJKnNnOw0KIA0KIAlsZW4gPSB1cmItPnRyYW5z ZmVyX2J1ZmZlcl9sZW5ndGg7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLXEu YyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1xLmMNCmluZGV4IDNiNDQ1MzEyYmVlYS4uNmUwNTlh MTcwN2Q2IDEwMDY0NA0KLS0tIGEvZHJpdmVycy91c2IvaG9zdC9vaGNpLXEuYw0KKysrIGIvZHJp dmVycy91c2IvaG9zdC9vaGNpLXEuYw0KQEAgLTYyNCw3ICs2MjQsNyBAQCBzdGF0aWMgdm9pZCB0 ZF9zdWJtaXRfdXJiICgNCiAJCSAqIHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCBtYXkgYmUg c21hbGxlciB0aGFuIHRoZQ0KIAkJICogc2l6ZSBvZiB0aGUgc2NhdHRlcmxpc3QgKG9yIHZpY2Ug dmVyc2EpDQogCQkgKi8NCi0JCXRoaXNfc2dfbGVuID0gbWluX3QoaW50LCBzZ19kbWFfbGVuKHNn KSwgZGF0YV9sZW4pOw0KKwkJdGhpc19zZ19sZW4gPSBtaW5fdW5zaWduZWQoc2dfZG1hX2xlbihz ZyksIGRhdGFfbGVuKTsNCiAJfSBlbHNlIHsNCiAJCXNnID0gTlVMTDsNCiAJCWlmIChkYXRhX2xl bikNCkBAIC02NzIsNyArNjcyLDcgQEAgc3RhdGljIHZvaWQgdGRfc3VibWl0X3VyYiAoDQogCQkJ CQlicmVhazsNCiAJCQkJc2cgPSBzZ19uZXh0KHNnKTsNCiAJCQkJZGF0YSA9IHNnX2RtYV9hZGRy ZXNzKHNnKTsNCi0JCQkJdGhpc19zZ19sZW4gPSBtaW5fdChpbnQsIHNnX2RtYV9sZW4oc2cpLA0K KwkJCQl0aGlzX3NnX2xlbiA9IG1pbl91bnNpZ25lZChzZ19kbWFfbGVuKHNnKSwNCiAJCQkJCQlk YXRhX2xlbik7DQogCQkJfQ0KIAkJfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvdWhj aS1xLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3VoY2ktcS5jDQppbmRleCAzNWZjYjgyNjE1MmMuLjYw YTI3Y2EyYTUxOSAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvdXNiL2hvc3QvdWhjaS1xLmMNCisrKyBi L2RyaXZlcnMvdXNiL2hvc3QvdWhjaS1xLmMNCkBAIC05NTAsNyArOTUwLDcgQEAgc3RhdGljIGlu dCB1aGNpX3N1Ym1pdF9jb21tb24oc3RydWN0IHVoY2lfaGNkICp1aGNpLCBzdHJ1Y3QgdXJiICp1 cmIsDQogCQkvKiB1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggbWF5IGJlIHNtYWxsZXIgdGhh biB0aGUNCiAJCSAqIHNpemUgb2YgdGhlIHNjYXR0ZXJsaXN0IChvciB2aWNlIHZlcnNhKQ0KIAkJ ICovDQotCQl0aGlzX3NnX2xlbiA9IG1pbl90KGludCwgc2dfZG1hX2xlbihzZyksIGxlbik7DQor CQl0aGlzX3NnX2xlbiA9IG1pbl91bnNpZ25lZChzZ19kbWFfbGVuKHNnKSwgbGVuKTsNCiAJfSBl bHNlIHsNCiAJCXNnID0gTlVMTDsNCiAJCWRhdGEgPSB1cmItPnRyYW5zZmVyX2RtYTsNCkBAIC05 OTMsNyArOTkzLDcgQEAgc3RhdGljIGludCB1aGNpX3N1Ym1pdF9jb21tb24oc3RydWN0IHVoY2lf aGNkICp1aGNpLCBzdHJ1Y3QgdXJiICp1cmIsDQogCQkJCWJyZWFrOw0KIAkJCXNnID0gc2dfbmV4 dChzZyk7DQogCQkJZGF0YSA9IHNnX2RtYV9hZGRyZXNzKHNnKTsNCi0JCQl0aGlzX3NnX2xlbiA9 IG1pbl90KGludCwgc2dfZG1hX2xlbihzZyksIGxlbik7DQorCQkJdGhpc19zZ19sZW4gPSBtaW5f dW5zaWduZWQoc2dfZG1hX2xlbihzZyksIGxlbik7DQogCQl9DQogCX0NCiANCmRpZmYgLS1naXQg YS9mcy9haW8uYyBiL2ZzL2Fpby5jDQppbmRleCA1YjJmZjIwYWQzMjIuLjI5YzVlN2UzYjRlNiAx MDA2NDQNCi0tLSBhL2ZzL2Fpby5jDQorKysgYi9mcy9haW8uYw0KQEAgLTEyNDQsNyArMTI0NCw3 IEBAIHN0YXRpYyBsb25nIGFpb19yZWFkX2V2ZW50c19yaW5nKHN0cnVjdCBraW9jdHggKmN0eCwN CiAJCXBvcyAlPSBBSU9fRVZFTlRTX1BFUl9QQUdFOw0KIA0KIAkJYXZhaWwgPSBtaW4oYXZhaWws IG5yIC0gcmV0KTsNCi0JCWF2YWlsID0gbWluX3QobG9uZywgYXZhaWwsIEFJT19FVkVOVFNfUEVS X1BBR0UgLSBwb3MpOw0KKwkJYXZhaWwgPSBtaW5fdW5zaWduZWQoYXZhaWwsIEFJT19FVkVOVFNf UEVSX1BBR0UgLSBwb3MpOw0KIA0KIAkJZXYgPSBrbWFwKHBhZ2UpOw0KIAkJY29weV9yZXQgPSBj b3B5X3RvX3VzZXIoZXZlbnQgKyByZXQsIGV2ICsgcG9zLA0KZGlmZiAtLWdpdCBhL2ZzL2J0cmZz L2Jsb2NrLWdyb3VwLmMgYi9mcy9idHJmcy9ibG9jay1ncm91cC5jDQppbmRleCBkZWViYzhkZGJk OTMuLjZlZGU0ZDA1ZmMzZSAxMDA2NDQNCi0tLSBhL2ZzL2J0cmZzL2Jsb2NrLWdyb3VwLmMNCisr KyBiL2ZzL2J0cmZzL2Jsb2NrLWdyb3VwLmMNCkBAIC0xODcwLDcgKzE4NzAsNyBAQCBzdGF0aWMg aW50IGV4Y2x1ZGVfc3VwZXJfc3RyaXBlcyhzdHJ1Y3QgYnRyZnNfYmxvY2tfZ3JvdXAgKmNhY2hl KQ0KIAkJfQ0KIA0KIAkJd2hpbGUgKG5yLS0pIHsNCi0JCQl1NjQgbGVuID0gbWluX3QodTY0LCBz dHJpcGVfbGVuLA0KKwkJCXU2NCBsZW4gPSBtaW5fdW5zaWduZWQoc3RyaXBlX2xlbiwNCiAJCQkJ Y2FjaGUtPnN0YXJ0ICsgY2FjaGUtPmxlbmd0aCAtIGxvZ2ljYWxbbnJdKTsNCiANCiAJCQljYWNo ZS0+Ynl0ZXNfc3VwZXIgKz0gbGVuOw0KZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2V4dGVudC10cmVl LmMgYi9mcy9idHJmcy9leHRlbnQtdHJlZS5jDQppbmRleCAyODAxYzk5MTgxNGYuLjNkZGRlNTM0 ZDgzOSAxMDA2NDQNCi0tLSBhL2ZzL2J0cmZzL2V4dGVudC10cmVlLmMNCisrKyBiL2ZzL2J0cmZz L2V4dGVudC10cmVlLmMNCkBAIC01MDcyLDcgKzUwNzIsNyBAQCBzdGF0aWMgbm9pbmxpbmUgdm9p ZCByZWFkYV93YWxrX2Rvd24oc3RydWN0IGJ0cmZzX3RyYW5zX2hhbmRsZSAqdHJhbnMsDQogCQl3 Yy0+cmVhZGFfY291bnQgPSBtYXgod2MtPnJlYWRhX2NvdW50LCAyKTsNCiAJfSBlbHNlIHsNCiAJ CXdjLT5yZWFkYV9jb3VudCA9IHdjLT5yZWFkYV9jb3VudCAqIDMgLyAyOw0KLQkJd2MtPnJlYWRh X2NvdW50ID0gbWluX3QoaW50LCB3Yy0+cmVhZGFfY291bnQsDQorCQl3Yy0+cmVhZGFfY291bnQg PSBtaW5fdW5zaWduZWQod2MtPnJlYWRhX2NvdW50LA0KIAkJCQkJQlRSRlNfTk9ERVBUUlNfUEVS X0JMT0NLKGZzX2luZm8pKTsNCiAJfQ0KIA0KZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2V4dGVudF9p by5jIGIvZnMvYnRyZnMvZXh0ZW50X2lvLmMNCmluZGV4IDRkY2YyMmUwNTFmZi4uYzdmN2ZiMDMy ZWU2IDEwMDY0NA0KLS0tIGEvZnMvYnRyZnMvZXh0ZW50X2lvLmMNCisrKyBiL2ZzL2J0cmZzL2V4 dGVudF9pby5jDQpAQCAtMTk4MSw3ICsxOTgxLDcgQEAgc3RhdGljIG5vaW5saW5lX2Zvcl9zdGFj ayBpbnQgd3JpdGVwYWdlX2RlbGFsbG9jKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsDQogCQlk ZWxhbGxvY19zdGFydCA9IGRlbGFsbG9jX2VuZCArIDE7DQogCX0NCiAJaWYgKHdiYy0+bnJfdG9f d3JpdGUgPCBkZWxhbGxvY190b193cml0ZSkgew0KLQkJaW50IHRocmVzaCA9IDgxOTI7DQorCQl1 bnNpZ25lZCBpbnQgdGhyZXNoID0gODE5MjsNCiANCiAJCWlmIChkZWxhbGxvY190b193cml0ZSA8 IHRocmVzaCAqIDIpDQogCQkJdGhyZXNoID0gZGVsYWxsb2NfdG9fd3JpdGU7DQpkaWZmIC0tZ2l0 IGEvZnMvYnRyZnMvZmlsZS1pdGVtLmMgYi9mcy9idHJmcy9maWxlLWl0ZW0uYw0KaW5kZXggNmJi OWZhOTYxYTZhLi45OWM4ZDg2ZmI4MjcgMTAwNjQ0DQotLS0gYS9mcy9idHJmcy9maWxlLWl0ZW0u Yw0KKysrIGIvZnMvYnRyZnMvZmlsZS1pdGVtLmMNCkBAIC0xMTM2LDcgKzExMzYsNyBAQCBpbnQg YnRyZnNfY3N1bV9maWxlX2Jsb2NrcyhzdHJ1Y3QgYnRyZnNfdHJhbnNfaGFuZGxlICp0cmFucywN CiANCiAJCQl0bXAgPSAobmV4dF9vZmZzZXQgLSBieXRlbnIpID4+IGZzX2luZm8tPnNlY3RvcnNp emVfYml0czsNCiAJCQlpZiAodG1wIDw9IElOVF9NQVgpDQotCQkJCWV4dGVuZF9uciA9IG1pbl90 KGludCwgZXh0ZW5kX25yLCB0bXApOw0KKwkJCQlleHRlbmRfbnIgPSBtaW5fdW5zaWduZWQoZXh0 ZW5kX25yLCB0bXApOw0KIAkJfQ0KIA0KIAkJZGlmZiA9IChjc3VtX29mZnNldCArIGV4dGVuZF9u cikgKiBjc3VtX3NpemU7DQpAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgaW50IGJ0cmZzX2NzdW1fZmls ZV9ibG9ja3Moc3RydWN0IGJ0cmZzX3RyYW5zX2hhbmRsZSAqdHJhbnMsDQogCQkJICAgTUFYX0NT VU1fSVRFTVMoZnNfaW5mbywgY3N1bV9zaXplKSAqIGNzdW1fc2l6ZSk7DQogDQogCQlkaWZmID0g ZGlmZiAtIGJ0cmZzX2l0ZW1fc2l6ZShsZWFmLCBwYXRoLT5zbG90c1swXSk7DQotCQlkaWZmID0g bWluX3QodTMyLCBidHJmc19sZWFmX2ZyZWVfc3BhY2UobGVhZiksIGRpZmYpOw0KKwkJZGlmZiA9 IG1pbl91bnNpZ25lZChidHJmc19sZWFmX2ZyZWVfc3BhY2UobGVhZiksIGRpZmYpOw0KIAkJZGlm ZiAvPSBjc3VtX3NpemU7DQogCQlkaWZmICo9IGNzdW1fc2l6ZTsNCiANCmRpZmYgLS1naXQgYS9m cy9idHJmcy9maWxlLmMgYi9mcy9idHJmcy9maWxlLmMNCmluZGV4IGQwMTYzMWQ0NzgwNi4uYzM0 Yjg2ODM4Mzg3IDEwMDY0NA0KLS0tIGEvZnMvYnRyZnMvZmlsZS5jDQorKysgYi9mcy9idHJmcy9m aWxlLmMNCkBAIC0zNDM2LDcgKzM0MzYsNyBAQCBzdGF0aWMgbG9uZyBidHJmc19mYWxsb2NhdGUo c3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLA0KIAkJCWJyZWFrOw0KIAkJfQ0KIAkJbGFzdF9i eXRlID0gbWluKGV4dGVudF9tYXBfZW5kKGVtKSwgYWxsb2NfZW5kKTsNCi0JCWFjdHVhbF9lbmQg PSBtaW5fdCh1NjQsIGV4dGVudF9tYXBfZW5kKGVtKSwgb2Zmc2V0ICsgbGVuKTsNCisJCWFjdHVh bF9lbmQgPSBtaW5fdW5zaWduZWQoZXh0ZW50X21hcF9lbmQoZW0pLCBvZmZzZXQgKyBsZW4pOw0K IAkJbGFzdF9ieXRlID0gQUxJR04obGFzdF9ieXRlLCBibG9ja3NpemUpOw0KIAkJaWYgKGVtLT5i bG9ja19zdGFydCA9PSBFWFRFTlRfTUFQX0hPTEUgfHwNCiAJCSAgICAoY3VyX29mZnNldCA+PSBp bm9kZS0+aV9zaXplICYmDQpAQCAtMzk2Miw3ICszOTYyLDcgQEAgc3RhdGljIGxvZmZfdCBmaW5k X2Rlc2lyZWRfZXh0ZW50KHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQs DQogCWlmICh3aGVuY2UgPT0gU0VFS19EQVRBICYmIHN0YXJ0ID49IGlfc2l6ZSkNCiAJCXJldHVy biAtRU5YSU87DQogDQotCXJldHVybiBtaW5fdChsb2ZmX3QsIHN0YXJ0LCBpX3NpemUpOw0KKwly ZXR1cm4gbWluX3Vuc2lnbmVkKHN0YXJ0LCBpX3NpemUpOw0KIH0NCiANCiBzdGF0aWMgbG9mZl90 IGJ0cmZzX2ZpbGVfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQg d2hlbmNlKQ0KZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lub2RlLmMgYi9mcy9idHJmcy9pbm9kZS5j DQppbmRleCAwZTUxNmFlZmJmNTEuLjdlYTdiYTM4YmRlMSAxMDA2NDQNCi0tLSBhL2ZzL2J0cmZz L2lub2RlLmMNCisrKyBiL2ZzL2J0cmZzL2lub2RlLmMNCkBAIC0xMjEyLDcgKzEyMTIsNyBAQCBz dGF0aWMgbm9pbmxpbmUgaW50IGNvd19maWxlX3JhbmdlKHN0cnVjdCBidHJmc19pbm9kZSAqaW5v ZGUsDQogCSAqIFNvIGhlcmUgd2Ugc2tpcCBpbmxpbmUgZXh0ZW50IGNyZWF0aW9uIGNvbXBsZXRl bHkuDQogCSAqLw0KIAlpZiAoc3RhcnQgPT0gMCAmJiBmc19pbmZvLT5zZWN0b3JzaXplID09IFBB R0VfU0laRSkgew0KLQkJdTY0IGFjdHVhbF9lbmQgPSBtaW5fdCh1NjQsIGlfc2l6ZV9yZWFkKCZp bm9kZS0+dmZzX2lub2RlKSwNCisJCXU2NCBhY3R1YWxfZW5kID0gbWluX3Vuc2lnbmVkKGlfc2l6 ZV9yZWFkKCZpbm9kZS0+dmZzX2lub2RlKSwNCiAJCQkJICAgICAgIGVuZCArIDEpOw0KIA0KIAkJ LyogbGV0cyB0cnkgdG8gbWFrZSBhbiBpbmxpbmUgZXh0ZW50ICovDQpAQCAtMTAxNzEsNyArMTAx NzEsNyBAQCBzdGF0aWMgc3NpemVfdCBidHJmc19lbmNvZGVkX3JlYWRfaW5saW5lKA0KIAlyYW1f Ynl0ZXMgPSBidHJmc19maWxlX2V4dGVudF9yYW1fYnl0ZXMobGVhZiwgaXRlbSk7DQogCXB0ciA9 IGJ0cmZzX2ZpbGVfZXh0ZW50X2lubGluZV9zdGFydChpdGVtKTsNCiANCi0JZW5jb2RlZC0+bGVu ID0gbWluX3QodTY0LCBleHRlbnRfc3RhcnQgKyByYW1fYnl0ZXMsDQorCWVuY29kZWQtPmxlbiA9 IG1pbl91bnNpZ25lZChleHRlbnRfc3RhcnQgKyByYW1fYnl0ZXMsDQogCQkJICAgICBpbm9kZS0+ dmZzX2lub2RlLmlfc2l6ZSkgLSBpb2NiLT5raV9wb3M7DQogCXJldCA9IGJ0cmZzX2VuY29kZWRf aW9fY29tcHJlc3Npb25fZnJvbV9leHRlbnQoZnNfaW5mbywNCiAJCQkJIGJ0cmZzX2ZpbGVfZXh0 ZW50X2NvbXByZXNzaW9uKGxlYWYsIGl0ZW0pKTsNCkBAIC0xMDUxMiw3ICsxMDUxMiw3IEBAIHNz aXplX3QgYnRyZnNfZW5jb2RlZF9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9p dGVyICppdGVyLA0KIAkgKiBXZSBvbmx5IHdhbnQgdG8gcmV0dXJuIHVwIHRvIEVPRiBldmVuIGlm IHRoZSBleHRlbnQgZXh0ZW5kcyBiZXlvbmQNCiAJICogdGhhdC4NCiAJICovDQotCWVuY29kZWQt PmxlbiA9IG1pbl90KHU2NCwgZXh0ZW50X21hcF9lbmQoZW0pLA0KKwllbmNvZGVkLT5sZW4gPSBt aW5fdW5zaWduZWQoZXh0ZW50X21hcF9lbmQoZW0pLA0KIAkJCSAgICAgaW5vZGUtPnZmc19pbm9k ZS5pX3NpemUpIC0gaW9jYi0+a2lfcG9zOw0KIAlpZiAoZW0tPmJsb2NrX3N0YXJ0ID09IEVYVEVO VF9NQVBfSE9MRSB8fA0KIAkgICAgdGVzdF9iaXQoRVhURU5UX0ZMQUdfUFJFQUxMT0MsICZlbS0+ ZmxhZ3MpKSB7DQpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvcWdyb3VwLmMgYi9mcy9idHJmcy9xZ3Jv dXAuYw0KaW5kZXggOTMzNGMzMTU3YzIyLi42MGM5OTkyYWE4ODkgMTAwNjQ0DQotLS0gYS9mcy9i dHJmcy9xZ3JvdXAuYw0KKysrIGIvZnMvYnRyZnMvcWdyb3VwLmMNCkBAIC0zOTUyLDExICszOTUy LDExIEBAIHN0YXRpYyBpbnQgc3ViX3Jvb3RfbWV0YV9yc3Yoc3RydWN0IGJ0cmZzX3Jvb3QgKnJv b3QsIGludCBudW1fYnl0ZXMsDQogDQogCXNwaW5fbG9jaygmcm9vdC0+cWdyb3VwX21ldGFfcnN2 X2xvY2spOw0KIAlpZiAodHlwZSA9PSBCVFJGU19RR1JPVVBfUlNWX01FVEFfUFJFQUxMT0MpIHsN Ci0JCW51bV9ieXRlcyA9IG1pbl90KHU2NCwgcm9vdC0+cWdyb3VwX21ldGFfcnN2X3ByZWFsbG9j LA0KKwkJbnVtX2J5dGVzID0gbWluX3Vuc2lnbmVkKHJvb3QtPnFncm91cF9tZXRhX3Jzdl9wcmVh bGxvYywNCiAJCQkJICBudW1fYnl0ZXMpOw0KIAkJcm9vdC0+cWdyb3VwX21ldGFfcnN2X3ByZWFs bG9jIC09IG51bV9ieXRlczsNCiAJfSBlbHNlIHsNCi0JCW51bV9ieXRlcyA9IG1pbl90KHU2NCwg cm9vdC0+cWdyb3VwX21ldGFfcnN2X3BlcnRyYW5zLA0KKwkJbnVtX2J5dGVzID0gbWluX3Vuc2ln bmVkKHJvb3QtPnFncm91cF9tZXRhX3Jzdl9wZXJ0cmFucywNCiAJCQkJICBudW1fYnl0ZXMpOw0K IAkJcm9vdC0+cWdyb3VwX21ldGFfcnN2X3BlcnRyYW5zIC09IG51bV9ieXRlczsNCiAJfQ0KZGlm ZiAtLWdpdCBhL2ZzL2J0cmZzL3NwYWNlLWluZm8uYyBiL2ZzL2J0cmZzL3NwYWNlLWluZm8uYw0K aW5kZXggZjE3MWJmODc1NjMzLi4zZWFiMjE2M2U0MmYgMTAwNjQ0DQotLS0gYS9mcy9idHJmcy9z cGFjZS1pbmZvLmMNCisrKyBiL2ZzL2J0cmZzL3NwYWNlLWluZm8uYw0KQEAgLTYxOSw3ICs2MTks NyBAQCBzdGF0aWMgdm9pZCBzaHJpbmtfZGVsYWxsb2Moc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZz X2luZm8sDQogCWxvb3BzID0gMDsNCiAJd2hpbGUgKChkZWxhbGxvY19ieXRlcyB8fCBvcmRlcmVk X2J5dGVzKSAmJiBsb29wcyA8IDMpIHsNCiAJCXU2NCB0ZW1wID0gbWluKGRlbGFsbG9jX2J5dGVz LCB0b19yZWNsYWltKSA+PiBQQUdFX1NISUZUOw0KLQkJbG9uZyBucl9wYWdlcyA9IG1pbl90KHU2 NCwgdGVtcCwgTE9OR19NQVgpOw0KKwkJbG9uZyBucl9wYWdlcyA9IG1pbl91bnNpZ25lZCh0ZW1w LCBMT05HX01BWCk7DQogCQlpbnQgYXN5bmNfcGFnZXM7DQogDQogCQlidHJmc19zdGFydF9kZWxh bGxvY19yb290cyhmc19pbmZvLCBucl9wYWdlcywgdHJ1ZSk7DQpkaWZmIC0tZ2l0IGEvZnMvYnRy ZnMvdm9sdW1lcy5jIGIvZnMvYnRyZnMvdm9sdW1lcy5jDQppbmRleCA2MzVmNDVmMWEyZWYuLmZi OWYyN2ZkN2FlOCAxMDA2NDQNCi0tLSBhL2ZzL2J0cmZzL3ZvbHVtZXMuYw0KKysrIGIvZnMvYnRy ZnMvdm9sdW1lcy5jDQpAQCAtNjAwNyw3ICs2MDA3LDcgQEAgc3RydWN0IGJ0cmZzX2Rpc2NhcmRf c3RyaXBlICpidHJmc19tYXBfZGlzY2FyZChzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywN CiAJCQlzdWJfc3RyaXBlcyA9IG1hcC0+c3ViX3N0cmlwZXM7DQogDQogCQlmYWN0b3IgPSBtYXAt Pm51bV9zdHJpcGVzIC8gc3ViX3N0cmlwZXM7DQotCQkqbnVtX3N0cmlwZXMgPSBtaW5fdCh1NjQs IG1hcC0+bnVtX3N0cmlwZXMsDQorCQkqbnVtX3N0cmlwZXMgPSBtaW5fdW5zaWduZWQobWFwLT5u dW1fc3RyaXBlcywNCiAJCQkJICAgIHN1Yl9zdHJpcGVzICogc3RyaXBlX2NudCk7DQogCQlzdHJp cGVfbnIgPSBkaXZfdTY0X3JlbShzdHJpcGVfbnIsIGZhY3RvciwgJnN0cmlwZV9pbmRleCk7DQog CQlzdHJpcGVfaW5kZXggKj0gc3ViX3N0cmlwZXM7DQpkaWZmIC0tZ2l0IGEvZnMvZXhlYy5jIGIv ZnMvZXhlYy5jDQppbmRleCBhMGIxZjAzMzdhNjIuLjZkNDgxMThlNmY4MSAxMDA2NDQNCi0tLSBh L2ZzL2V4ZWMuYw0KKysrIGIvZnMvZXhlYy5jDQpAQCAtNjI2LDcgKzYyNiw3IEBAIGludCBjb3B5 X3N0cmluZ19rZXJuZWwoY29uc3QgY2hhciAqYXJnLCBzdHJ1Y3QgbGludXhfYmlucHJtICpicHJt KQ0KIAkJcmV0dXJuIC1FMkJJRzsNCiANCiAJd2hpbGUgKGxlbiA+IDApIHsNCi0JCXVuc2lnbmVk IGludCBieXRlc190b19jb3B5ID0gbWluX3QodW5zaWduZWQgaW50LCBsZW4sDQorCQl1bnNpZ25l ZCBpbnQgYnl0ZXNfdG9fY29weSA9IG1pbl91bnNpZ25lZChsZW4sDQogCQkJCW1pbl9ub3RfemVy byhvZmZzZXRfaW5fcGFnZShwb3MpLCBQQUdFX1NJWkUpKTsNCiAJCXN0cnVjdCBwYWdlICpwYWdl Ow0KIA0KZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5kaXJlY3QuYyBiL2ZzL2V4dDQvaW5kaXJlY3Qu Yw0KaW5kZXggODYwZmM1MTE5MDA5Li4zN2Q3MzhlZGY5MTIgMTAwNjQ0DQotLS0gYS9mcy9leHQ0 L2luZGlyZWN0LmMNCisrKyBiL2ZzL2V4dDQvaW5kaXJlY3QuYw0KQEAgLTU4MSw3ICs1ODEsNyBA QCBpbnQgZXh0NF9pbmRfbWFwX2Jsb2NrcyhoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUg Kmlub2RlLA0KIAkJY291bnQrKzsNCiAJCS8qIEZpbGwgaW4gc2l6ZSBvZiBhIGhvbGUgd2UgZm91 bmQgKi8NCiAJCW1hcC0+bV9wYmxrID0gMDsNCi0JCW1hcC0+bV9sZW4gPSBtaW5fdCh1bnNpZ25l ZCBpbnQsIG1hcC0+bV9sZW4sIGNvdW50KTsNCisJCW1hcC0+bV9sZW4gPSBtaW5fdW5zaWduZWQo bWFwLT5tX2xlbiwgY291bnQpOw0KIAkJZ290byBjbGVhbnVwOw0KIAl9DQogDQpkaWZmIC0tZ2l0 IGEvZnMvZmF0L2Rpci5jIGIvZnMvZmF0L2Rpci5jDQppbmRleCAwMDIzNWI4YTE4MjMuLmM0ZDU5 NWRlYzlkZSAxMDA2NDQNCi0tLSBhL2ZzL2ZhdC9kaXIuYw0KKysrIGIvZnMvZmF0L2Rpci5jDQpA QCAtMTM0Miw3ICsxMzQyLDcgQEAgaW50IGZhdF9hZGRfZW50cmllcyhzdHJ1Y3QgaW5vZGUgKmRp ciwgdm9pZCAqc2xvdHMsIGludCBucl9zbG90cywNCiANCiAJCS8qIEZpbGwgdGhlIGxvbmcgbmFt ZSBzbG90cy4gKi8NCiAJCWZvciAoaSA9IDA7IGkgPCBsb25nX2JoczsgaSsrKSB7DQotCQkJaW50 IGNvcHkgPSBtaW5fdChpbnQsIHNiLT5zX2Jsb2Nrc2l6ZSAtIG9mZnNldCwgc2l6ZSk7DQorCQkJ aW50IGNvcHkgPSBtaW5fdW5zaWduZWQoc2ItPnNfYmxvY2tzaXplIC0gb2Zmc2V0LCBzaXplKTsN CiAJCQltZW1jcHkoYmhzW2ldLT5iX2RhdGEgKyBvZmZzZXQsIHNsb3RzLCBjb3B5KTsNCiAJCQlt YXJrX2J1ZmZlcl9kaXJ0eV9pbm9kZShiaHNbaV0sIGRpcik7DQogCQkJb2Zmc2V0ID0gMDsNCkBA IC0xMzUzLDcgKzEzNTMsNyBAQCBpbnQgZmF0X2FkZF9lbnRyaWVzKHN0cnVjdCBpbm9kZSAqZGly LCB2b2lkICpzbG90cywgaW50IG5yX3Nsb3RzLA0KIAkJCWVyciA9IGZhdF9zeW5jX2JocyhiaHMs IGxvbmdfYmhzKTsNCiAJCWlmICghZXJyICYmIGkgPCBucl9iaHMpIHsNCiAJCQkvKiBGaWxsIHRo ZSBzaG9ydCBuYW1lIHNsb3QuICovDQotCQkJaW50IGNvcHkgPSBtaW5fdChpbnQsIHNiLT5zX2Js b2Nrc2l6ZSAtIG9mZnNldCwgc2l6ZSk7DQorCQkJaW50IGNvcHkgPSBtaW5fdW5zaWduZWQoc2It PnNfYmxvY2tzaXplIC0gb2Zmc2V0LCBzaXplKTsNCiAJCQltZW1jcHkoYmhzW2ldLT5iX2RhdGEg KyBvZmZzZXQsIHNsb3RzLCBjb3B5KTsNCiAJCQltYXJrX2J1ZmZlcl9kaXJ0eV9pbm9kZShiaHNb aV0sIGRpcik7DQogCQkJaWYgKElTX0RJUlNZTkMoZGlyKSkNCmRpZmYgLS1naXQgYS9mcy9pb21h cC9idWZmZXJlZC1pby5jIGIvZnMvaW9tYXAvYnVmZmVyZWQtaW8uYw0KaW5kZXggOTFlZTBiMzA4 ZTEzLi41NWFmZDA4MGI0NTYgMTAwNjQ0DQotLS0gYS9mcy9pb21hcC9idWZmZXJlZC1pby5jDQor KysgYi9mcy9pb21hcC9idWZmZXJlZC1pby5jDQpAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgdm9p ZCBpb21hcF9hZGp1c3RfcmVhZF9yYW5nZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZm9s aW8gKmZvbGlvLA0KIAl1bnNpZ25lZCBibG9ja19iaXRzID0gaW5vZGUtPmlfYmxrYml0czsNCiAJ dW5zaWduZWQgYmxvY2tfc2l6ZSA9ICgxIDw8IGJsb2NrX2JpdHMpOw0KIAlzaXplX3QgcG9mZiA9 IG9mZnNldF9pbl9mb2xpbyhmb2xpbywgKnBvcyk7DQotCXNpemVfdCBwbGVuID0gbWluX3QobG9m Zl90LCBmb2xpb19zaXplKGZvbGlvKSAtIHBvZmYsIGxlbmd0aCk7DQorCXNpemVfdCBwbGVuID0g bWluX3Vuc2lnbmVkKGZvbGlvX3NpemUoZm9saW8pIC0gcG9mZiwgbGVuZ3RoKTsNCiAJdW5zaWdu ZWQgZmlyc3QgPSBwb2ZmID4+IGJsb2NrX2JpdHM7DQogCXVuc2lnbmVkIGxhc3QgPSAocG9mZiAr IHBsZW4gLSAxKSA+PiBibG9ja19iaXRzOw0KIA0KQEAgLTg1MCw3ICs4NTAsNyBAQCBzdGF0aWMg bG9mZl90IGlvbWFwX3Vuc2hhcmVfaXRlcihzdHJ1Y3QgaW9tYXBfaXRlciAqaXRlcikNCiANCiAJ ZG8gew0KIAkJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBvZmZzZXRfaW5fcGFnZShwb3MpOw0KLQkJ dW5zaWduZWQgbG9uZyBieXRlcyA9IG1pbl90KGxvZmZfdCwgUEFHRV9TSVpFIC0gb2Zmc2V0LCBs ZW5ndGgpOw0KKwkJdW5zaWduZWQgbG9uZyBieXRlcyA9IG1pbl91bnNpZ25lZChQQUdFX1NJWkUg LSBvZmZzZXQsIGxlbmd0aCk7DQogCQlzdHJ1Y3QgZm9saW8gKmZvbGlvOw0KIA0KIAkJc3RhdHVz ID0gaW9tYXBfd3JpdGVfYmVnaW4oaXRlciwgcG9zLCBieXRlcywgJmZvbGlvKTsNCkBAIC05MDYs NyArOTA2LDcgQEAgc3RhdGljIGxvZmZfdCBpb21hcF96ZXJvX2l0ZXIoc3RydWN0IGlvbWFwX2l0 ZXIgKml0ZXIsIGJvb2wgKmRpZF96ZXJvKQ0KIAkJc3RydWN0IGZvbGlvICpmb2xpbzsNCiAJCWlu dCBzdGF0dXM7DQogCQlzaXplX3Qgb2Zmc2V0Ow0KLQkJc2l6ZV90IGJ5dGVzID0gbWluX3QodTY0 LCBTSVpFX01BWCwgbGVuZ3RoKTsNCisJCXNpemVfdCBieXRlcyA9IG1pbl91bnNpZ25lZChTSVpF X01BWCwgbGVuZ3RoKTsNCiANCiAJCXN0YXR1cyA9IGlvbWFwX3dyaXRlX2JlZ2luKGl0ZXIsIHBv cywgYnl0ZXMsICZmb2xpbyk7DQogCQlpZiAoc3RhdHVzKQ0KZGlmZiAtLWdpdCBhL2ZzL2tlcm5l bF9yZWFkX2ZpbGUuYyBiL2ZzL2tlcm5lbF9yZWFkX2ZpbGUuYw0KaW5kZXggNWQ4MjYyNzQ1NzBj Li4xYzM0NDQ4MjcyZTIgMTAwNjQ0DQotLS0gYS9mcy9rZXJuZWxfcmVhZF9maWxlLmMNCisrKyBi L2ZzL2tlcm5lbF9yZWFkX2ZpbGUuYw0KQEAgLTg3LDcgKzg3LDcgQEAgc3NpemVfdCBrZXJuZWxf cmVhZF9maWxlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCB2b2lkICoqYnVmLA0K IAljb3BpZWQgPSAwOw0KIAl3aGlsZSAoY29waWVkIDwgYnVmX3NpemUpIHsNCiAJCXNzaXplX3Qg Ynl0ZXM7DQotCQlzaXplX3Qgd2FudGVkID0gbWluX3Qoc2l6ZV90LCBidWZfc2l6ZSAtIGNvcGll ZCwNCisJCXNpemVfdCB3YW50ZWQgPSBtaW5fdW5zaWduZWQoYnVmX3NpemUgLSBjb3BpZWQsDQog CQkJCQkgICAgICBpX3NpemUgLSBwb3MpOw0KIA0KIAkJYnl0ZXMgPSBrZXJuZWxfcmVhZChmaWxl LCAqYnVmICsgY29waWVkLCB3YW50ZWQsICZwb3MpOw0KZGlmZiAtLWdpdCBhL2ZzL3NwbGljZS5j IGIvZnMvc3BsaWNlLmMNCmluZGV4IDA4NzhiODUyYjM1NS4uMzRjOGY3MmUyOWE1IDEwMDY0NA0K LS0tIGEvZnMvc3BsaWNlLmMNCisrKyBiL2ZzL3NwbGljZS5jDQpAQCAtMTE3Myw3ICsxMTczLDcg QEAgc3RhdGljIGludCBpdGVyX3RvX3BpcGUoc3RydWN0IGlvdl9pdGVyICpmcm9tLA0KIA0KIAkJ biA9IERJVl9ST1VORF9VUChsZWZ0ICsgc3RhcnQsIFBBR0VfU0laRSk7DQogCQlmb3IgKGkgPSAw OyBpIDwgbjsgaSsrKSB7DQotCQkJaW50IHNpemUgPSBtaW5fdChpbnQsIGxlZnQsIFBBR0VfU0la RSAtIHN0YXJ0KTsNCisJCQlpbnQgc2l6ZSA9IG1pbl91bnNpZ25lZChsZWZ0LCBQQUdFX1NJWkUg LSBzdGFydCk7DQogDQogCQkJYnVmLnBhZ2UgPSBwYWdlc1tpXTsNCiAJCQlidWYub2Zmc2V0ID0g c3RhcnQ7DQpkaWZmIC0tZ2l0IGEvZnMvc3F1YXNoZnMvYmxvY2suYyBiL2ZzL3NxdWFzaGZzL2Js b2NrLmMNCmluZGV4IDgzM2FjYTkyMzAxZi4uN2YzMzk4NjYwMjc3IDEwMDY0NA0KLS0tIGEvZnMv c3F1YXNoZnMvYmxvY2suYw0KKysrIGIvZnMvc3F1YXNoZnMvYmxvY2suYw0KQEAgLTk4LDcgKzk4 LDcgQEAgc3RhdGljIGludCBzcXVhc2hmc19iaW9fcmVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNi LCB1NjQgaW5kZXgsIGludCBsZW5ndGgsDQogDQogCWZvciAoaSA9IDA7IGkgPCBwYWdlX2NvdW50 OyArK2kpIHsNCiAJCXVuc2lnbmVkIGludCBsZW4gPQ0KLQkJCW1pbl90KHVuc2lnbmVkIGludCwg UEFHRV9TSVpFIC0gb2Zmc2V0LCB0b3RhbF9sZW4pOw0KKwkJCW1pbl91bnNpZ25lZChQQUdFX1NJ WkUgLSBvZmZzZXQsIHRvdGFsX2xlbik7DQogCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFsbG9jX3Bh Z2UoR0ZQX05PSU8pOw0KIA0KIAkJaWYgKCFwYWdlKSB7DQpkaWZmIC0tZ2l0IGEvZnMvc3F1YXNo ZnMvY2FjaGUuYyBiL2ZzL3NxdWFzaGZzL2NhY2hlLmMNCmluZGV4IDUwNjIzMjZkMGVmYi4uMmRl NjI0YTA0YzM4IDEwMDY0NA0KLS0tIGEvZnMvc3F1YXNoZnMvY2FjaGUuYw0KKysrIGIvZnMvc3F1 YXNoZnMvY2FjaGUuYw0KQEAgLTMwMyw3ICszMDMsNyBAQCBpbnQgc3F1YXNoZnNfY29weV9kYXRh KHZvaWQgKmJ1ZmZlciwgc3RydWN0IHNxdWFzaGZzX2NhY2hlX2VudHJ5ICplbnRyeSwNCiAJd2hp bGUgKG9mZnNldCA8IGVudHJ5LT5sZW5ndGgpIHsNCiAJCXZvaWQgKmJ1ZmYgPSBlbnRyeS0+ZGF0 YVtvZmZzZXQgLyBQQUdFX1NJWkVdDQogCQkJCSsgKG9mZnNldCAlIFBBR0VfU0laRSk7DQotCQlp bnQgYnl0ZXMgPSBtaW5fdChpbnQsIGVudHJ5LT5sZW5ndGggLSBvZmZzZXQsDQorCQlpbnQgYnl0 ZXMgPSBtaW5fdW5zaWduZWQoZW50cnktPmxlbmd0aCAtIG9mZnNldCwNCiAJCQkJUEFHRV9TSVpF IC0gKG9mZnNldCAlIFBBR0VfU0laRSkpOw0KIA0KIAkJaWYgKGJ5dGVzID49IHJlbWFpbmluZykg ew0KZGlmZiAtLWdpdCBhL2ZzL3N5c2ZzL2ZpbGUuYyBiL2ZzL3N5c2ZzL2ZpbGUuYw0KaW5kZXgg YTEyYWMwMzU2YzY5Li5kNjJhNjA4YzRiZDUgMTAwNjQ0DQotLS0gYS9mcy9zeXNmcy9maWxlLmMN CisrKyBiL2ZzL3N5c2ZzL2ZpbGUuYw0KQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgc3NpemVf dCBzeXNmc19rZl9yZWFkKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLA0K IAkJbGVuIC09IHBvczsNCiAJCW1lbW1vdmUoYnVmLCBidWYgKyBwb3MsIGxlbik7DQogCX0NCi0J cmV0dXJuIG1pbl90KHNzaXplX3QsIGNvdW50LCBsZW4pOw0KKwlyZXR1cm4gbWluX3Vuc2lnbmVk KGNvdW50LCBsZW4pOw0KIH0NCiANCiAvKiBrZXJuZnMgd3JpdGUgY2FsbGJhY2sgZm9yIHJlZ3Vs YXIgc3lzZnMgZmlsZXMgKi8NCkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIHNzaXplX3Qgc3lz ZnNfa2ZfYmluX3dyaXRlKHN0cnVjdCBrZXJuZnNfb3Blbl9maWxlICpvZiwgY2hhciAqYnVmLA0K IAlpZiAoc2l6ZSkgew0KIAkJaWYgKHNpemUgPD0gcG9zKQ0KIAkJCXJldHVybiAtRUZCSUc7DQot CQljb3VudCA9IG1pbl90KHNzaXplX3QsIGNvdW50LCBzaXplIC0gcG9zKTsNCisJCWNvdW50ID0g bWluX3Vuc2lnbmVkKGNvdW50LCBzaXplIC0gcG9zKTsNCiAJfQ0KIAlpZiAoIWNvdW50KQ0KIAkJ cmV0dXJuIDA7DQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZnNfZnMuaCBiL2luY2x1ZGUv bGludXgvbmZzX2ZzLmgNCmluZGV4IDc5MzFmYTQ3MjU2MS4uZDBlY2NlNmRjM2FhIDEwMDY0NA0K LS0tIGEvaW5jbHVkZS9saW51eC9uZnNfZnMuaA0KKysrIGIvaW5jbHVkZS9saW51eC9uZnNfZnMu aA0KQEAgLTYwMyw3ICs2MDMsNyBAQCB2b2lkIG5mc19yZWFkYWhlYWQoc3RydWN0IHJlYWRhaGVh ZF9jb250cm9sICopOw0KIA0KIHN0YXRpYyBpbmxpbmUgbG9mZl90IG5mc19zaXplX3RvX2xvZmZf dChfX3U2NCBzaXplKQ0KIHsNCi0JcmV0dXJuIG1pbl90KHU2NCwgc2l6ZSwgT0ZGU0VUX01BWCk7 DQorCXJldHVybiBtaW5fX3QodTY0LCBzaXplLCBPRkZTRVRfTUFYKTsNCiB9DQogDQogc3RhdGlj IGlubGluZSBpbm9fdA0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNs dWRlL2xpbnV4L3NrYnVmZi5oDQppbmRleCA3YmU1YmI0Yzk0YjYuLjBhYTEwM2M3MzEzOCAxMDA2 NDQNCi0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmgNCisrKyBiL2luY2x1ZGUvbGludXgvc2ti dWZmLmgNCkBAIC00MzIsNyArNDMyLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNrYl9mcmFnX211 c3RfbG9vcChzdHJ1Y3QgcGFnZSAqcCkNCiAJZm9yIChwID0gc2tiX2ZyYWdfcGFnZShmKSArICgo Zl9vZmYpID4+IFBBR0VfU0hJRlQpLAkJXA0KIAkgICAgIHBfb2ZmID0gKGZfb2ZmKSAmIChQQUdF X1NJWkUgLSAxKSwJCQkJXA0KIAkgICAgIHBfbGVuID0gc2tiX2ZyYWdfbXVzdF9sb29wKHApID8J CQkJXA0KLQkgICAgIG1pbl90KHUzMiwgZl9sZW4sIFBBR0VfU0laRSAtIHBfb2ZmKSA6IGZfbGVu LAkJXA0KKwkgICAgIG1pbl91bnNpZ25lZChmX2xlbiwgUEFHRV9TSVpFIC0gcF9vZmYpIDogZl9s ZW4sCQlcDQogCSAgICAgY29waWVkID0gMDsJCQkJCQlcDQogCSAgICAgY29waWVkIDwgZl9sZW47 CQkJCQkJXA0KIAkgICAgIGNvcGllZCArPSBwX2xlbiwgcCsrLCBwX29mZiA9IDAsCQkJCVwNCmRp ZmYgLS1naXQgYS9rZXJuZWwvYnBmL2Nncm91cC5jIGIva2VybmVsL2JwZi9jZ3JvdXAuYw0KaW5k ZXggYmYyZmRiMzNmYjMxLi44OGZjNTU4YTMwYzcgMTAwNjQ0DQotLS0gYS9rZXJuZWwvYnBmL2Nn cm91cC5jDQorKysgYi9rZXJuZWwvYnBmL2Nncm91cC5jDQpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAg c3RhdGljIGludCBfX2Nncm91cF9icGZfcXVlcnkoc3RydWN0IGNncm91cCAqY2dycCwgY29uc3Qg dW5pb24gYnBmX2F0dHIgKmF0dHIsDQogCQkJdTMyIGlkOw0KIA0KIAkJCXByb2dzID0gJmNncnAt PmJwZi5wcm9nc1thdHlwZV07DQotCQkJY250ID0gbWluX3QoaW50LCBwcm9nX2xpc3RfbGVuZ3Ro KHByb2dzKSwgdG90YWxfY250KTsNCisJCQljbnQgPSBtaW5fdW5zaWduZWQocHJvZ19saXN0X2xl bmd0aChwcm9ncyksIHRvdGFsX2NudCk7DQogCQkJaSA9IDA7DQogCQkJaGxpc3RfZm9yX2VhY2hf ZW50cnkocGwsIHByb2dzLCBub2RlKSB7DQogCQkJCXByb2cgPSBwcm9nX2xpc3RfcHJvZyhwbCk7 DQpkaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmll ci5jDQppbmRleCAyNjRiM2RjNzE0Y2MuLjRmMDI5NTJhMzUzMSAxMDA2NDQNCi0tLSBhL2tlcm5l bC9icGYvdmVyaWZpZXIuYw0KKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jDQpAQCAtMTQ3OSw3 ICsxNDc5LDcgQEAgc3RhdGljIHZvaWQgX191cGRhdGVfcmVnMzJfYm91bmRzKHN0cnVjdCBicGZf cmVnX3N0YXRlICpyZWcpDQogCXJlZy0+czMyX21pbl92YWx1ZSA9IG1heF90KHMzMiwgcmVnLT5z MzJfbWluX3ZhbHVlLA0KIAkJCXZhcjMyX29mZi52YWx1ZSB8ICh2YXIzMl9vZmYubWFzayAmIFMz Ml9NSU4pKTsNCiAJLyogbWF4IHNpZ25lZCBpcyBtaW4oc2lnbiBiaXQpIHwgbWF4KG90aGVyIGJp dHMpICovDQotCXJlZy0+czMyX21heF92YWx1ZSA9IG1pbl90KHMzMiwgcmVnLT5zMzJfbWF4X3Zh bHVlLA0KKwlyZWctPnMzMl9tYXhfdmFsdWUgPSBtaW5fX3QoczMyLCByZWctPnMzMl9tYXhfdmFs dWUsDQogCQkJdmFyMzJfb2ZmLnZhbHVlIHwgKHZhcjMyX29mZi5tYXNrICYgUzMyX01BWCkpOw0K IAlyZWctPnUzMl9taW5fdmFsdWUgPSBtYXhfdCh1MzIsIHJlZy0+dTMyX21pbl92YWx1ZSwgKHUz Mil2YXIzMl9vZmYudmFsdWUpOw0KIAlyZWctPnUzMl9tYXhfdmFsdWUgPSBtaW4ocmVnLT51MzJf bWF4X3ZhbHVlLA0KQEAgLTE0OTIsNyArMTQ5Miw3IEBAIHN0YXRpYyB2b2lkIF9fdXBkYXRlX3Jl ZzY0X2JvdW5kcyhzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnKQ0KIAlyZWctPnNtaW5fdmFsdWUg PSBtYXhfdChzNjQsIHJlZy0+c21pbl92YWx1ZSwNCiAJCQkJcmVnLT52YXJfb2ZmLnZhbHVlIHwg KHJlZy0+dmFyX29mZi5tYXNrICYgUzY0X01JTikpOw0KIAkvKiBtYXggc2lnbmVkIGlzIG1pbihz aWduIGJpdCkgfCBtYXgob3RoZXIgYml0cykgKi8NCi0JcmVnLT5zbWF4X3ZhbHVlID0gbWluX3Qo czY0LCByZWctPnNtYXhfdmFsdWUsDQorCXJlZy0+c21heF92YWx1ZSA9IG1pbl9fdChzNjQsIHJl Zy0+c21heF92YWx1ZSwNCiAJCQkJcmVnLT52YXJfb2ZmLnZhbHVlIHwgKHJlZy0+dmFyX29mZi5t YXNrICYgUzY0X01BWCkpOw0KIAlyZWctPnVtaW5fdmFsdWUgPSBtYXgocmVnLT51bWluX3ZhbHVl LCByZWctPnZhcl9vZmYudmFsdWUpOw0KIAlyZWctPnVtYXhfdmFsdWUgPSBtaW4ocmVnLT51bWF4 X3ZhbHVlLA0KQEAgLTE1MTcsNyArMTUxNyw3IEBAIHN0YXRpYyB2b2lkIF9fcmVnMzJfZGVkdWNl X2JvdW5kcyhzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnKQ0KIAkJcmVnLT5zMzJfbWluX3ZhbHVl ID0gcmVnLT51MzJfbWluX3ZhbHVlID0NCiAJCQltYXhfdCh1MzIsIHJlZy0+czMyX21pbl92YWx1 ZSwgcmVnLT51MzJfbWluX3ZhbHVlKTsNCiAJCXJlZy0+czMyX21heF92YWx1ZSA9IHJlZy0+dTMy X21heF92YWx1ZSA9DQotCQkJbWluX3QodTMyLCByZWctPnMzMl9tYXhfdmFsdWUsIHJlZy0+dTMy X21heF92YWx1ZSk7DQorCQkJbWluX3Vuc2lnbmVkKHJlZy0+czMyX21heF92YWx1ZSwgcmVnLT51 MzJfbWF4X3ZhbHVlKTsNCiAJCXJldHVybjsNCiAJfQ0KIAkvKiBMZWFybiBzaWduIGZyb20gdW5z aWduZWQgYm91bmRzLiAgU2lnbmVkIGJvdW5kcyBjcm9zcyB0aGUgc2lnbg0KQEAgLTE1MjksNyAr MTUyOSw3IEBAIHN0YXRpYyB2b2lkIF9fcmVnMzJfZGVkdWNlX2JvdW5kcyhzdHJ1Y3QgYnBmX3Jl Z19zdGF0ZSAqcmVnKQ0KIAkJICovDQogCQlyZWctPnMzMl9taW5fdmFsdWUgPSByZWctPnUzMl9t aW5fdmFsdWU7DQogCQlyZWctPnMzMl9tYXhfdmFsdWUgPSByZWctPnUzMl9tYXhfdmFsdWUgPQ0K LQkJCW1pbl90KHUzMiwgcmVnLT5zMzJfbWF4X3ZhbHVlLCByZWctPnUzMl9tYXhfdmFsdWUpOw0K KwkJCW1pbl91bnNpZ25lZChyZWctPnMzMl9tYXhfdmFsdWUsIHJlZy0+dTMyX21heF92YWx1ZSk7 DQogCX0gZWxzZSBpZiAoKHMzMilyZWctPnUzMl9taW5fdmFsdWUgPCAwKSB7DQogCQkvKiBOZWdh dGl2ZS4gIFdlIGNhbid0IGxlYXJuIGFueXRoaW5nIGZyb20gdGhlIHNtYXgsIGJ1dCBzbWluDQog CQkgKiBpcyBuZWdhdGl2ZSwgaGVuY2Ugc2FmZS4NCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCBzdGF0 aWMgdm9pZCBfX3JlZzY0X2RlZHVjZV9ib3VuZHMoc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZykN CiAJaWYgKHJlZy0+c21pbl92YWx1ZSA+PSAwIHx8IHJlZy0+c21heF92YWx1ZSA8IDApIHsNCiAJ CXJlZy0+c21pbl92YWx1ZSA9IHJlZy0+dW1pbl92YWx1ZSA9IG1heF90KHU2NCwgcmVnLT5zbWlu X3ZhbHVlLA0KIAkJCQkJCQkgIHJlZy0+dW1pbl92YWx1ZSk7DQotCQlyZWctPnNtYXhfdmFsdWUg PSByZWctPnVtYXhfdmFsdWUgPSBtaW5fdCh1NjQsIHJlZy0+c21heF92YWx1ZSwNCisJCXJlZy0+ c21heF92YWx1ZSA9IHJlZy0+dW1heF92YWx1ZSA9IG1pbl91bnNpZ25lZChyZWctPnNtYXhfdmFs dWUsDQogCQkJCQkJCSAgcmVnLT51bWF4X3ZhbHVlKTsNCiAJCXJldHVybjsNCiAJfQ0KQEAgLTE1 NjIsNyArMTU2Miw3IEBAIHN0YXRpYyB2b2lkIF9fcmVnNjRfZGVkdWNlX2JvdW5kcyhzdHJ1Y3Qg YnBmX3JlZ19zdGF0ZSAqcmVnKQ0KIAkJICogaXMgcG9zaXRpdmUsIGhlbmNlIHNhZmUuDQogCQkg Ki8NCiAJCXJlZy0+c21pbl92YWx1ZSA9IHJlZy0+dW1pbl92YWx1ZTsNCi0JCXJlZy0+c21heF92 YWx1ZSA9IHJlZy0+dW1heF92YWx1ZSA9IG1pbl90KHU2NCwgcmVnLT5zbWF4X3ZhbHVlLA0KKwkJ cmVnLT5zbWF4X3ZhbHVlID0gcmVnLT51bWF4X3ZhbHVlID0gbWluX3Vuc2lnbmVkKHJlZy0+c21h eF92YWx1ZSwNCiAJCQkJCQkJICByZWctPnVtYXhfdmFsdWUpOw0KIAl9IGVsc2UgaWYgKChzNjQp cmVnLT51bWluX3ZhbHVlIDwgMCkgew0KIAkJLyogTmVnYXRpdmUuICBXZSBjYW4ndCBsZWFybiBh bnl0aGluZyBmcm9tIHRoZSBzbWF4LCBidXQgc21pbg0KZGlmZiAtLWdpdCBhL2tlcm5lbC9kZWJ1 Zy9rZGIva2RiX3N1cHBvcnQuYyBiL2tlcm5lbC9kZWJ1Zy9rZGIva2RiX3N1cHBvcnQuYw0KaW5k ZXggMGEzOTQ5NzE0MGJmLi44YTU2Y2U0NGVhYzMgMTAwNjQ0DQotLS0gYS9rZXJuZWwvZGVidWcv a2RiL2tkYl9zdXBwb3J0LmMNCisrKyBiL2tlcm5lbC9kZWJ1Zy9rZGIva2RiX3N1cHBvcnQuYw0K QEAgLTEzNSw3ICsxMzUsNyBAQCBpbnQga2FsbHN5bXNfc3ltYm9sX2NvbXBsZXRlKGNoYXIgKnBy ZWZpeF9uYW1lLCBpbnQgbWF4X2xlbikNCiAJCQlzdHJzY3B5KGtzX25hbWVidWYsIG5hbWUsIHNp emVvZihrc19uYW1lYnVmKSk7DQogCQkJLyogV29yayBvdXQgdGhlIGxvbmdlc3QgbmFtZSB0aGF0 IG1hdGNoZXMgdGhlIHByZWZpeCAqLw0KIAkJCWlmICgrK251bWJlciA9PSAxKSB7DQotCQkJCXBy ZXZfbGVuID0gbWluX3QoaW50LCBtYXhfbGVuLTEsDQorCQkJCXByZXZfbGVuID0gbWluX3Vuc2ln bmVkKG1heF9sZW4tMSwNCiAJCQkJCQkgc3RybGVuKGtzX25hbWVidWYpKTsNCiAJCQkJbWVtY3B5 KGtzX25hbWVidWZfcHJldiwga3NfbmFtZWJ1ZiwgcHJldl9sZW4pOw0KIAkJCQlrc19uYW1lYnVm X3ByZXZbcHJldl9sZW5dID0gJ1wwJzsNCmRpZmYgLS1naXQgYS9rZXJuZWwvZXZlbnRzL2NvcmUu YyBiL2tlcm5lbC9ldmVudHMvY29yZS5jDQppbmRleCA4ODQ4NzE0MjdhOTQuLjczZDhmNTE5Yzdm YyAxMDA2NDQNCi0tLSBhL2tlcm5lbC9ldmVudHMvY29yZS5jDQorKysgYi9rZXJuZWwvZXZlbnRz L2NvcmUuYw0KQEAgLTc1NTIsNyArNzU1Miw3IEBAIHZvaWQgcGVyZl9wcmVwYXJlX3NhbXBsZShz dHJ1Y3QgcGVyZl9ldmVudF9oZWFkZXIgKmhlYWRlciwNCiAJCSAqIE1ha2Ugc3VyZSB0aGlzIGRv ZXNuJ3QgaGFwcGVuIGJ5IHVzaW5nIHVwIHRvIFUxNl9NQVggYnl0ZXMNCiAJCSAqIHBlciBzYW1w bGUgaW4gdG90YWwgKHJvdW5kZWQgZG93biB0byA4IGJ5dGUgYm91bmRhcnkpLg0KIAkJICovDQot CQlzaXplID0gbWluX3Qoc2l6ZV90LCBVMTZfTUFYIC0gaGVhZGVyLT5zaXplLA0KKwkJc2l6ZSA9 IG1pbl91bnNpZ25lZChVMTZfTUFYIC0gaGVhZGVyLT5zaXplLA0KIAkJCSAgICAgZXZlbnQtPmF0 dHIuYXV4X3NhbXBsZV9zaXplKTsNCiAJCXNpemUgPSByb3VuZGRvd24oc2l6ZSwgOCk7DQogCQlz aXplID0gcGVyZl9wcmVwYXJlX3NhbXBsZV9hdXgoZXZlbnQsIGRhdGEsIHNpemUpOw0KZGlmZiAt LWdpdCBhL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jIGIva2VybmVsL2V2ZW50cy91cHJvYmVzLmMN CmluZGV4IGQ5ZTM1N2I3ZTE3Yy4uMzVlZWY5NGE4ZGViIDEwMDY0NA0KLS0tIGEva2VybmVsL2V2 ZW50cy91cHJvYmVzLmMNCisrKyBiL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jDQpAQCAtODExLDcg KzgxMSw3IEBAIHN0YXRpYyBpbnQgY29weV9pbnNuKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3Ry dWN0IGZpbGUgKmZpbHApDQogCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gdXByb2Jl LT5pbm9kZS0+aV9tYXBwaW5nOw0KIAlsb2ZmX3Qgb2ZmcyA9IHVwcm9iZS0+b2Zmc2V0Ow0KIAl2 b2lkICppbnNuID0gJnVwcm9iZS0+YXJjaC5pbnNuOw0KLQlpbnQgc2l6ZSA9IHNpemVvZih1cHJv YmUtPmFyY2guaW5zbik7DQorCXVuc2lnbmVkIGludCBzaXplID0gc2l6ZW9mKHVwcm9iZS0+YXJj aC5pbnNuKTsNCiAJaW50IGxlbiwgZXJyID0gLUVJTzsNCiANCiAJLyogQ29weSBvbmx5IGF2YWls YWJsZSBieXRlcywgLUVJTyBpZiBub3RoaW5nIHdhcyByZWFkICovDQpkaWZmIC0tZ2l0IGEva2Vy bmVsL3NjaGVkL3J0LmMgYi9rZXJuZWwvc2NoZWQvcnQuYw0KaW5kZXggZWQyYTQ3ZTRkZGFlLi4w MjEwZmYzYmM5NTYgMTAwNjQ0DQotLS0gYS9rZXJuZWwvc2NoZWQvcnQuYw0KKysrIGIva2VybmVs L3NjaGVkL3J0LmMNCkBAIC04MjUsNyArODI1LDcgQEAgc3RhdGljIHZvaWQgX19kaXNhYmxlX3J1 bnRpbWUoc3RydWN0IHJxICpycSkNCiANCiAJCQlyYXdfc3Bpbl9sb2NrKCZpdGVyLT5ydF9ydW50 aW1lX2xvY2spOw0KIAkJCWlmICh3YW50ID4gMCkgew0KLQkJCQlkaWZmID0gbWluX3QoczY0LCBp dGVyLT5ydF9ydW50aW1lLCB3YW50KTsNCisJCQkJZGlmZiA9IG1pbl91bnNpZ25lZChpdGVyLT5y dF9ydW50aW1lLCB3YW50KTsNCiAJCQkJaXRlci0+cnRfcnVudGltZSAtPSBkaWZmOw0KIAkJCQl3 YW50IC09IGRpZmY7DQogCQkJfSBlbHNlIHsNCmRpZmYgLS1naXQgYS9rZXJuZWwvdGltZS90aWNr LXNjaGVkLmMgYi9rZXJuZWwvdGltZS90aWNrLXNjaGVkLmMNCmluZGV4IGIwZTNjOTIwNTk0Ni4u YWNkNzFlMjhkZWMxIDEwMDY0NA0KLS0tIGEva2VybmVsL3RpbWUvdGljay1zY2hlZC5jDQorKysg Yi9rZXJuZWwvdGltZS90aWNrLXNjaGVkLmMNCkBAIC0xMjQzLDcgKzEyNDMsNyBAQCBrdGltZV90 IHRpY2tfbm9oel9nZXRfc2xlZXBfbGVuZ3RoKGt0aW1lX3QgKmRlbHRhX25leHQpDQogCSAqIElm IHRoZSBuZXh0IGhpZ2hyZXMgdGltZXIgdG8gZXhwaXJlIGlzIGVhcmxpZXIgdGhhbiBuZXh0X2V2 ZW50LCB0aGUNCiAJICogaWRsZSBnb3Zlcm5vciBuZWVkcyB0byBrbm93IHRoYXQuDQogCSAqLw0K LQluZXh0X2V2ZW50ID0gbWluX3QodTY0LCBuZXh0X2V2ZW50LA0KKwluZXh0X2V2ZW50ID0gbWlu X190KHU2NCwgbmV4dF9ldmVudCwNCiAJCQkgICBocnRpbWVyX25leHRfZXZlbnRfd2l0aG91dCgm dHMtPnNjaGVkX3RpbWVyKSk7DQogDQogCXJldHVybiBrdGltZV9zdWIobmV4dF9ldmVudCwgbm93 KTsNCmRpZmYgLS1naXQgYS9saWIvbXBpL21waWNvZGVyLmMgYi9saWIvbXBpL21waWNvZGVyLmMN CmluZGV4IDM5YzRjNjczMTA5NC4uNTJlODhjMDhlZmQ5IDEwMDY0NA0KLS0tIGEvbGliL21waS9t cGljb2Rlci5jDQorKysgYi9saWIvbXBpL21waWNvZGVyLmMNCkBAIC0zODMsNyArMzgzLDcgQEAg aW50IG1waV93cml0ZV90b19zZ2woTVBJIGEsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLCB1bnNp Z25lZCBuYnl0ZXMsDQogCXAyID0gbWl0ZXIuYWRkcjsNCiANCiAJd2hpbGUgKG5ieXRlcyA+IG4p IHsNCi0JCWkgPSBtaW5fdCh1bnNpZ25lZCwgbmJ5dGVzIC0gbiwgYnVmX2xlbik7DQorCQlpID0g bWluX3Vuc2lnbmVkKG5ieXRlcyAtIG4sIGJ1Zl9sZW4pOw0KIAkJbWVtc2V0KHAyLCAwLCBpKTsN CiAJCXAyICs9IGk7DQogCQluYnl0ZXMgLT0gaTsNCmRpZmYgLS1naXQgYS9saWIvdnNwcmludGYu YyBiL2xpYi92c3ByaW50Zi5jDQppbmRleCAyNGYzN2JhYjhiYzEuLjhlOTQzNjUwNTIyOSAxMDA2 NDQNCi0tLSBhL2xpYi92c3ByaW50Zi5jDQorKysgYi9saWIvdnNwcmludGYuYw0KQEAgLTExNzMs NyArMTE3Myw3IEBAIGNoYXIgKmhleF9zdHJpbmcoY2hhciAqYnVmLCBjaGFyICplbmQsIHU4ICph ZGRyLCBzdHJ1Y3QgcHJpbnRmX3NwZWMgc3BlYywNCiAJfQ0KIA0KIAlpZiAoc3BlYy5maWVsZF93 aWR0aCA+IDApDQotCQlsZW4gPSBtaW5fdChpbnQsIHNwZWMuZmllbGRfd2lkdGgsIDY0KTsNCisJ CWxlbiA9IG1pbl91bnNpZ25lZChzcGVjLmZpZWxkX3dpZHRoLCA2NCk7DQogDQogCWZvciAoaSA9 IDA7IGkgPCBsZW47ICsraSkgew0KIAkJaWYgKGJ1ZiA8IGVuZCkNCmRpZmYgLS1naXQgYS9tbS9m aWxlbWFwLmMgYi9tbS9maWxlbWFwLmMNCmluZGV4IDA4MzQxNjE2YWU3YS4uN2M5MTY4YjA0Nzg5 IDEwMDY0NA0KLS0tIGEvbW0vZmlsZW1hcC5jDQorKysgYi9tbS9maWxlbWFwLmMNCkBAIC0yNjg3 LDcgKzI2ODcsNyBAQCBzc2l6ZV90IGZpbGVtYXBfcmVhZChzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0 cnVjdCBpb3ZfaXRlciAqaXRlciwNCiAJCWlzaXplID0gaV9zaXplX3JlYWQoaW5vZGUpOw0KIAkJ aWYgKHVubGlrZWx5KGlvY2ItPmtpX3BvcyA+PSBpc2l6ZSkpDQogCQkJZ290byBwdXRfZm9saW9z Ow0KLQkJZW5kX29mZnNldCA9IG1pbl90KGxvZmZfdCwgaXNpemUsIGlvY2ItPmtpX3BvcyArIGl0 ZXItPmNvdW50KTsNCisJCWVuZF9vZmZzZXQgPSBtaW5fX3QobG9mZl90LCBpc2l6ZSwgaW9jYi0+ a2lfcG9zICsgaXRlci0+Y291bnQpOw0KIA0KIAkJLyoNCiAJCSAqIE9uY2Ugd2Ugc3RhcnQgY29w eWluZyBkYXRhLCB3ZSBkb24ndCB3YW50IHRvIGJlIHRvdWNoaW5nIGFueQ0KQEAgLTI3MDcsNyAr MjcwNyw3IEBAIHNzaXplX3QgZmlsZW1hcF9yZWFkKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0 IGlvdl9pdGVyICppdGVyLA0KIAkJCXN0cnVjdCBmb2xpbyAqZm9saW8gPSBmYmF0Y2guZm9saW9z W2ldOw0KIAkJCXNpemVfdCBmc2l6ZSA9IGZvbGlvX3NpemUoZm9saW8pOw0KIAkJCXNpemVfdCBv ZmZzZXQgPSBpb2NiLT5raV9wb3MgJiAoZnNpemUgLSAxKTsNCi0JCQlzaXplX3QgYnl0ZXMgPSBt aW5fdChsb2ZmX3QsIGVuZF9vZmZzZXQgLSBpb2NiLT5raV9wb3MsDQorCQkJc2l6ZV90IGJ5dGVz ID0gbWluX190KGxvZmZfdCwgZW5kX29mZnNldCAtIGlvY2ItPmtpX3BvcywNCiAJCQkJCSAgICAg ZnNpemUgLSBvZmZzZXQpOw0KIAkJCXNpemVfdCBjb3BpZWQ7DQogDQpkaWZmIC0tZ2l0IGEvbW0v Z3VwLmMgYi9tbS9ndXAuYw0KaW5kZXggZmUxOTVkNDdkZTc0Li5mZWY4YTJiZWFlYWQgMTAwNjQ0 DQotLS0gYS9tbS9ndXAuYw0KKysrIGIvbW0vZ3VwLmMNCkBAIC0yNTksNyArMjU5LDcgQEAgc3Rh dGljIGlubGluZSBzdHJ1Y3QgZm9saW8gKmd1cF9mb2xpb19yYW5nZV9uZXh0KHN0cnVjdCBwYWdl ICpzdGFydCwNCiAJdW5zaWduZWQgaW50IG5yID0gMTsNCiANCiAJaWYgKGZvbGlvX3Rlc3RfbGFy Z2UoZm9saW8pKQ0KLQkJbnIgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIG5wYWdlcyAtIGksDQorCQlu ciA9IG1pbl91bnNpZ25lZChucGFnZXMgLSBpLA0KIAkJCSAgIGZvbGlvX25yX3BhZ2VzKGZvbGlv KSAtIGZvbGlvX3BhZ2VfaWR4KGZvbGlvLCBuZXh0KSk7DQogDQogCSpudGFpbHMgPSBucjsNCmRp ZmYgLS1naXQgYS9tbS9tZW1jb250cm9sLmMgYi9tbS9tZW1jb250cm9sLmMNCmluZGV4IDJkODU0 OWFlMWIzMC4uNDYwOTIwMGM3MWJlIDEwMDY0NA0KLS0tIGEvbW0vbWVtY29udHJvbC5jDQorKysg Yi9tbS9tZW1jb250cm9sLmMNCkBAIC03NDU4LDcgKzc0NTgsNyBAQCB2b2lkIF9fbWVtX2Nncm91 cF91bmNoYXJnZV9zd2FwKHN3cF9lbnRyeV90IGVudHJ5LCB1bnNpZ25lZCBpbnQgbnJfcGFnZXMp DQogDQogbG9uZyBtZW1fY2dyb3VwX2dldF9ucl9zd2FwX3BhZ2VzKHN0cnVjdCBtZW1fY2dyb3Vw ICptZW1jZykNCiB7DQotCWxvbmcgbnJfc3dhcF9wYWdlcyA9IGdldF9ucl9zd2FwX3BhZ2VzKCk7 DQorCXVuc2lnbmVkIGxvbmcgbnJfc3dhcF9wYWdlcyA9IGdldF9ucl9zd2FwX3BhZ2VzKCk7DQog DQogCWlmIChtZW1fY2dyb3VwX2Rpc2FibGVkKCkgfHwgZG9fbWVtc3dfYWNjb3VudCgpKQ0KIAkJ cmV0dXJuIG5yX3N3YXBfcGFnZXM7DQpkaWZmIC0tZ2l0IGEvbW0vcGVyY3B1LmMgYi9tbS9wZXJj cHUuYw0KaW5kZXggMjc2OTdiMjQyOWMyLi4zNmJkZjA4ODM0NGMgMTAwNjQ0DQotLS0gYS9tbS9w ZXJjcHUuYw0KKysrIGIvbW0vcGVyY3B1LmMNCkBAIC04NjYsNyArODY2LDcgQEAgc3RhdGljIHZv aWQgcGNwdV9ibG9ja191cGRhdGVfaGludF9hbGxvYyhzdHJ1Y3QgcGNwdV9jaHVuayAqY2h1bmss IGludCBiaXRfb2ZmLA0KIAkJLyogdXBkYXRlIGxlZnQgYW5kIHJpZ2h0IGNvbnRpZyBtYW51YWxs eSAqLw0KIAkJc19ibG9jay0+bGVmdF9mcmVlID0gbWluKHNfYmxvY2stPmxlZnRfZnJlZSwgc19v ZmYpOw0KIAkJaWYgKHNfaW5kZXggPT0gZV9pbmRleCkNCi0JCQlzX2Jsb2NrLT5yaWdodF9mcmVl ID0gbWluX3QoaW50LCBzX2Jsb2NrLT5yaWdodF9mcmVlLA0KKwkJCXNfYmxvY2stPnJpZ2h0X2Zy ZWUgPSBtaW5fdW5zaWduZWQoc19ibG9jay0+cmlnaHRfZnJlZSwNCiAJCQkJCVBDUFVfQklUTUFQ X0JMT0NLX0JJVFMgLSBlX29mZik7DQogCQllbHNlDQogCQkJc19ibG9jay0+cmlnaHRfZnJlZSA9 IDA7DQpAQCAtOTAwLDcgKzkwMCw3IEBAIHN0YXRpYyB2b2lkIHBjcHVfYmxvY2tfdXBkYXRlX2hp bnRfYWxsb2Moc3RydWN0IHBjcHVfY2h1bmsgKmNodW5rLCBpbnQgYml0X29mZiwNCiAJCQkJcGNw dV9ibG9ja19yZWZyZXNoX2hpbnQoY2h1bmssIGVfaW5kZXgpOw0KIAkJCX0gZWxzZSB7DQogCQkJ CWVfYmxvY2stPnJpZ2h0X2ZyZWUgPQ0KLQkJCQkJbWluX3QoaW50LCBlX2Jsb2NrLT5yaWdodF9m cmVlLA0KKwkJCQkJbWluX3Vuc2lnbmVkKGVfYmxvY2stPnJpZ2h0X2ZyZWUsDQogCQkJCQkgICAg ICBQQ1BVX0JJVE1BUF9CTE9DS19CSVRTIC0gZV9vZmYpOw0KIAkJCX0NCiAJCX0NCkBAIC0xMjI0 LDcgKzEyMjQsNyBAQCBzdGF0aWMgaW50IHBjcHVfYWxsb2NfYXJlYShzdHJ1Y3QgcGNwdV9jaHVu ayAqY2h1bmssIGludCBhbGxvY19iaXRzLA0KIAkvKg0KIAkgKiBTZWFyY2ggdG8gZmluZCBhIGZp dC4NCiAJICovDQotCWVuZCA9IG1pbl90KGludCwgc3RhcnQgKyBhbGxvY19iaXRzICsgUENQVV9C SVRNQVBfQkxPQ0tfQklUUywNCisJZW5kID0gbWluX3Vuc2lnbmVkKHN0YXJ0ICsgYWxsb2NfYml0 cyArIFBDUFVfQklUTUFQX0JMT0NLX0JJVFMsDQogCQkgICAgcGNwdV9jaHVua19tYXBfYml0cyhj aHVuaykpOw0KIAliaXRfb2ZmID0gcGNwdV9maW5kX3plcm9fYXJlYShjaHVuay0+YWxsb2NfbWFw LCBlbmQsIHN0YXJ0LCBhbGxvY19iaXRzLA0KIAkJCQkgICAgICBhbGlnbl9tYXNrLCAmYXJlYV9v ZmYsICZhcmVhX2JpdHMpOw0KQEAgLTIwNDIsNyArMjA0Miw4IEBAIHN0YXRpYyB2b2lkIHBjcHVf YmFsYW5jZV9wb3B1bGF0ZWQodm9pZCkNCiAJLyogZ2ZwIGZsYWdzIHBhc3NlZCB0byB1bmRlcmx5 aW5nIGFsbG9jYXRvcnMgKi8NCiAJY29uc3QgZ2ZwX3QgZ2ZwID0gR0ZQX0tFUk5FTCB8IF9fR0ZQ X05PUkVUUlkgfCBfX0dGUF9OT1dBUk47DQogCXN0cnVjdCBwY3B1X2NodW5rICpjaHVuazsNCi0J aW50IHNsb3QsIG5yX3RvX3BvcCwgcmV0Ow0KKwl1bnNpZ25lZCBpbnQgc2xvdCwgbnJfdG9fcG9w Ow0KKwlpbnQgcmV0Ow0KIA0KIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZwY3B1X2xvY2spOw0KIA0K ZGlmZiAtLWdpdCBhL21tL3V0aWwuYyBiL21tL3V0aWwuYw0KaW5kZXggMTI5ODRlNzY3NjdlLi5i YWViZGJkMGVlODEgMTAwNjQ0DQotLS0gYS9tbS91dGlsLmMNCisrKyBiL21tL3V0aWwuYw0KQEAg LTEwMTYsNyArMTAxNiw3IEBAIGludCBfX3ZtX2Vub3VnaF9tZW1vcnkoc3RydWN0IG1tX3N0cnVj dCAqbW0sIGxvbmcgcGFnZXMsIGludCBjYXBfc3lzX2FkbWluKQ0KIAkgKiBEb24ndCBsZXQgYSBz aW5nbGUgcHJvY2VzcyBncm93IHNvIGJpZyBhIHVzZXIgY2FuJ3QgcmVjb3Zlcg0KIAkgKi8NCiAJ aWYgKG1tKSB7DQotCQlsb25nIHJlc2VydmUgPSBzeXNjdGxfdXNlcl9yZXNlcnZlX2tieXRlcyA+ PiAoUEFHRV9TSElGVCAtIDEwKTsNCisJCXVuc2lnbmVkIGxvbmcgcmVzZXJ2ZSA9IHN5c2N0bF91 c2VyX3Jlc2VydmVfa2J5dGVzID4+IChQQUdFX1NISUZUIC0gMTApOw0KIA0KIAkJYWxsb3dlZCAt PSBtaW5fdChsb25nLCBtbS0+dG90YWxfdm0gLyAzMiwgcmVzZXJ2ZSk7DQogCX0NCmRpZmYgLS1n aXQgYS9uZXQvY29yZS9kYXRhZ3JhbS5jIGIvbmV0L2NvcmUvZGF0YWdyYW0uYw0KaW5kZXggZTRm ZjJkYjQwYzk4Li5hMDJjNjg2OGQ1ZjUgMTAwNjQ0DQotLS0gYS9uZXQvY29yZS9kYXRhZ3JhbS5j DQorKysgYi9uZXQvY29yZS9kYXRhZ3JhbS5jDQpAQCAtNjUxLDcgKzY1MSw3IEBAIGludCBfX3pl cm9jb3B5X3NnX2Zyb21faXRlcihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBzb2NrICpzaywN CiAJCQlyZWZjb3VudF9hZGQodHJ1ZXNpemUsICZza2ItPnNrLT5za193bWVtX2FsbG9jKTsNCiAJ CX0NCiAJCWZvciAocmVmcyA9IDA7IGNvcGllZCAhPSAwOyBzdGFydCA9IDApIHsNCi0JCQlpbnQg c2l6ZSA9IG1pbl90KGludCwgY29waWVkLCBQQUdFX1NJWkUgLSBzdGFydCk7DQorCQkJaW50IHNp emUgPSBtaW5fdW5zaWduZWQoY29waWVkLCBQQUdFX1NJWkUgLSBzdGFydCk7DQogCQkJc3RydWN0 IHBhZ2UgKmhlYWQgPSBjb21wb3VuZF9oZWFkKHBhZ2VzW25dKTsNCiANCiAJCQlzdGFydCArPSAo cGFnZXNbbl0gLSBoZWFkKSA8PCBQQUdFX1NISUZUOw0KZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Zp bHRlci5jIGIvbmV0L2NvcmUvZmlsdGVyLmMNCmluZGV4IGJiMDEzNmU3YThlNC4uNjk0ZTM5NTcw OGE4IDEwMDY0NA0KLS0tIGEvbmV0L2NvcmUvZmlsdGVyLmMNCisrKyBiL25ldC9jb3JlL2ZpbHRl ci5jDQpAQCAtNDAwOCw3ICs0MDA4LDcgQEAgc3RhdGljIGludCBicGZfeGRwX2ZyYWdzX3Nocmlu a190YWlsKHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCBpbnQgb2Zmc2V0KQ0KIA0KIAlmb3IgKGkgPSBz aW5mby0+bnJfZnJhZ3MgLSAxOyBpID49IDAgJiYgb2Zmc2V0ID4gMDsgaS0tKSB7DQogCQlza2Jf ZnJhZ190ICpmcmFnID0gJnNpbmZvLT5mcmFnc1tpXTsNCi0JCWludCBzaHJpbmsgPSBtaW5fdChp bnQsIG9mZnNldCwgc2tiX2ZyYWdfc2l6ZShmcmFnKSk7DQorCQlpbnQgc2hyaW5rID0gbWluX3Vu c2lnbmVkKG9mZnNldCwgc2tiX2ZyYWdfc2l6ZShmcmFnKSk7DQogDQogCQlsZW5fZnJlZSArPSBz aHJpbms7DQogCQlvZmZzZXQgLT0gc2hyaW5rOw0KZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Zsb3df ZGlzc2VjdG9yLmMgYi9uZXQvY29yZS9mbG93X2Rpc3NlY3Rvci5jDQppbmRleCAyNWNkMzVmNTky MmUuLjhiMmFjYTRhMWMyMCAxMDA2NDQNCi0tLSBhL25ldC9jb3JlL2Zsb3dfZGlzc2VjdG9yLmMN CisrKyBiL25ldC9jb3JlL2Zsb3dfZGlzc2VjdG9yLmMNCkBAIC0xNTYwLDcgKzE1NjAsNyBAQCBi b29sIF9fc2tiX2Zsb3dfZGlzc2VjdChjb25zdCBzdHJ1Y3QgbmV0ICpuZXQsDQogCXJldCA9IHRy dWU7DQogDQogb3V0Og0KLQlrZXlfY29udHJvbC0+dGhvZmYgPSBtaW5fdCh1MTYsIG5ob2ZmLCBz a2IgPyBza2ItPmxlbiA6IGhsZW4pOw0KKwlrZXlfY29udHJvbC0+dGhvZmYgPSBtaW5fdW5zaWdu ZWQobmhvZmYsIHNrYiA/IHNrYi0+bGVuIDogaGxlbik7DQogCWtleV9iYXNpYy0+bl9wcm90byA9 IHByb3RvOw0KIAlrZXlfYmFzaWMtPmlwX3Byb3RvID0gaXBfcHJvdG87DQogDQpkaWZmIC0tZ2l0 IGEvbmV0L2NvcmUvc2tidWZmLmMgYi9uZXQvY29yZS9za2J1ZmYuYw0KaW5kZXggODhmYTQwNTcx ZDBjLi44ODBlZGY3NzA4ZjUgMTAwNjQ0DQotLS0gYS9uZXQvY29yZS9za2J1ZmYuYw0KKysrIGIv bmV0L2NvcmUvc2tidWZmLmMNCkBAIC05NjAsNyArOTYwLDcgQEAgdm9pZCBza2JfZHVtcChjb25z dCBjaGFyICpsZXZlbCwgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCBmdWxsX3BrdCkN CiAJCXByaW50X2hleF9kdW1wKGxldmVsLCAic2tiIGhlYWRyb29tOiAiLCBEVU1QX1BSRUZJWF9P RkZTRVQsDQogCQkJICAgICAgIDE2LCAxLCBza2ItPmhlYWQsIGhlYWRyb29tLCBmYWxzZSk7DQog DQotCXNlZ19sZW4gPSBtaW5fdChpbnQsIHNrYl9oZWFkbGVuKHNrYiksIGxlbik7DQorCXNlZ19s ZW4gPSBtaW5fdW5zaWduZWQoc2tiX2hlYWRsZW4oc2tiKSwgbGVuKTsNCiAJaWYgKHNlZ19sZW4p DQogCQlwcmludF9oZXhfZHVtcChsZXZlbCwgInNrYiBsaW5lYXI6ICAgIiwgRFVNUF9QUkVGSVhf T0ZGU0VULA0KIAkJCSAgICAgICAxNiwgMSwgc2tiLT5kYXRhLCBzZWdfbGVuLCBmYWxzZSk7DQpA QCAtOTc5LDcgKzk3OSw3IEBAIHZvaWQgc2tiX2R1bXAoY29uc3QgY2hhciAqbGV2ZWwsIGNvbnN0 IHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgZnVsbF9wa3QpDQogCQlza2JfZnJhZ19mb3JlYWNo X3BhZ2UoZnJhZywgc2tiX2ZyYWdfb2ZmKGZyYWcpLA0KIAkJCQkgICAgICBza2JfZnJhZ19zaXpl KGZyYWcpLCBwLCBwX29mZiwgcF9sZW4sDQogCQkJCSAgICAgIGNvcGllZCkgew0KLQkJCXNlZ19s ZW4gPSBtaW5fdChpbnQsIHBfbGVuLCBsZW4pOw0KKwkJCXNlZ19sZW4gPSBtaW5fdW5zaWduZWQo cF9sZW4sIGxlbik7DQogCQkJdmFkZHIgPSBrbWFwX2F0b21pYyhwKTsNCiAJCQlwcmludF9oZXhf ZHVtcChsZXZlbCwgInNrYiBmcmFnOiAgICAgIiwNCiAJCQkJICAgICAgIERVTVBfUFJFRklYX09G RlNFVCwNCkBAIC0yODAxLDcgKzI4MDEsNyBAQCBzdGF0aWMgaW50IF9fc2tiX3NlbmRfc29jayhz dHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsIGludCBvZmZzZXQsDQogCQlzdHJ1 Y3Qga3ZlYyBrdjsNCiAJCXN0cnVjdCBtc2doZHIgbXNnOw0KIA0KLQkJc2xlbiA9IG1pbl90KGlu dCwgbGVuLCBza2JfaGVhZGxlbihza2IpIC0gb2Zmc2V0KTsNCisJCXNsZW4gPSBtaW5fdW5zaWdu ZWQobGVuLCBza2JfaGVhZGxlbihza2IpIC0gb2Zmc2V0KTsNCiAJCWt2Lmlvdl9iYXNlID0gc2ti LT5kYXRhICsgb2Zmc2V0Ow0KIAkJa3YuaW92X2xlbiA9IHNsZW47DQogCQltZW1zZXQoJm1zZywg MCwgc2l6ZW9mKG1zZykpOw0KQEAgLTI4MzYsNyArMjgzNiw3IEBAIHN0YXRpYyBpbnQgX19za2Jf c2VuZF9zb2NrKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IG9mZnNl dCwNCiAJZm9yICg7IGxlbiAmJiBmcmFnaWR4IDwgc2tiX3NoaW5mbyhza2IpLT5ucl9mcmFnczsg ZnJhZ2lkeCsrKSB7DQogCQlza2JfZnJhZ190ICpmcmFnICA9ICZza2Jfc2hpbmZvKHNrYiktPmZy YWdzW2ZyYWdpZHhdOw0KIA0KLQkJc2xlbiA9IG1pbl90KHNpemVfdCwgbGVuLCBza2JfZnJhZ19z aXplKGZyYWcpIC0gb2Zmc2V0KTsNCisJCXNsZW4gPSBtaW5fdW5zaWduZWQobGVuLCBza2JfZnJh Z19zaXplKGZyYWcpIC0gb2Zmc2V0KTsNCiANCiAJCXdoaWxlIChzbGVuKSB7DQogCQkJcmV0ID0g SU5ESVJFQ1RfQ0FMTF8yKHNlbmRwYWdlLCBrZXJuZWxfc2VuZHBhZ2VfbG9ja2VkLA0KQEAgLTMz MTYsNyArMzMxNiw3IEBAIHNrYl96ZXJvY29weShzdHJ1Y3Qgc2tfYnVmZiAqdG8sIHN0cnVjdCBz a19idWZmICpmcm9tLCBpbnQgbGVuLCBpbnQgaGxlbikNCiAJCQlyZXR1cm4gcmV0Ow0KIAkJbGVu IC09IGhsZW47DQogCX0gZWxzZSB7DQotCQlwbGVuID0gbWluX3QoaW50LCBza2JfaGVhZGxlbihm cm9tKSwgbGVuKTsNCisJCXBsZW4gPSBtaW5fdW5zaWduZWQoc2tiX2hlYWRsZW4oZnJvbSksIGxl bik7DQogCQlpZiAocGxlbikgew0KIAkJCXBhZ2UgPSB2aXJ0X3RvX2hlYWRfcGFnZShmcm9tLT5o ZWFkKTsNCiAJCQlvZmZzZXQgPSBmcm9tLT5kYXRhIC0gKHVuc2lnbmVkIGNoYXIgKilwYWdlX2Fk ZHJlc3MocGFnZSk7DQpAQCAtMzM0MSw3ICszMzQxLDcgQEAgc2tiX3plcm9jb3B5KHN0cnVjdCBz a19idWZmICp0bywgc3RydWN0IHNrX2J1ZmYgKmZyb20sIGludCBsZW4sIGludCBobGVuKQ0KIAkJ aWYgKCFsZW4pDQogCQkJYnJlYWs7DQogCQlza2Jfc2hpbmZvKHRvKS0+ZnJhZ3Nbal0gPSBza2Jf c2hpbmZvKGZyb20pLT5mcmFnc1tpXTsNCi0JCXNpemUgPSBtaW5fdChpbnQsIHNrYl9mcmFnX3Np emUoJnNrYl9zaGluZm8odG8pLT5mcmFnc1tqXSksDQorCQlzaXplID0gbWluX3Vuc2lnbmVkKHNr Yl9mcmFnX3NpemUoJnNrYl9zaGluZm8odG8pLT5mcmFnc1tqXSksDQogCQkJCQlsZW4pOw0KIAkJ c2tiX2ZyYWdfc2l6ZV9zZXQoJnNrYl9zaGluZm8odG8pLT5mcmFnc1tqXSwgc2l6ZSk7DQogCQls ZW4gLT0gc2l6ZTsNCmRpZmYgLS1naXQgYS9uZXQvY29yZS9za21zZy5jIGIvbmV0L2NvcmUvc2tt c2cuYw0KaW5kZXggZTZiOWNlZDNlZGE4Li42ZGExYmVmZDc4N2YgMTAwNjQ0DQotLS0gYS9uZXQv Y29yZS9za21zZy5jDQorKysgYi9uZXQvY29yZS9za21zZy5jDQpAQCAtNDIsNyArNDIsNyBAQCBp bnQgc2tfbXNnX2FsbG9jKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX21zZyAqbXNnLCBpbnQg bGVuLA0KIAkJfQ0KIA0KIAkJb3JpZ19vZmZzZXQgPSBwZnJhZy0+b2Zmc2V0Ow0KLQkJdXNlID0g bWluX3QoaW50LCBsZW4sIHBmcmFnLT5zaXplIC0gb3JpZ19vZmZzZXQpOw0KKwkJdXNlID0gbWlu X3Vuc2lnbmVkKGxlbiwgcGZyYWctPnNpemUgLSBvcmlnX29mZnNldCk7DQogCQlpZiAoIXNrX3dt ZW1fc2NoZWR1bGUoc2ssIHVzZSkpIHsNCiAJCQlyZXQgPSAtRU5PTUVNOw0KIAkJCWdvdG8gbXNn X3RyaW07DQpAQCAtMzM1LDcgKzMzNSw3IEBAIGludCBza19tc2dfemVyb2NvcHlfZnJvbV9pdGVy KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGlvdl9pdGVyICpmcm9tLA0KIAkJbXNnLT5zZy5zaXpl ICs9IGNvcGllZDsNCiANCiAJCXdoaWxlIChjb3BpZWQpIHsNCi0JCQl1c2UgPSBtaW5fdChpbnQs IGNvcGllZCwgUEFHRV9TSVpFIC0gb2Zmc2V0KTsNCisJCQl1c2UgPSBtaW5fdW5zaWduZWQoY29w aWVkLCBQQUdFX1NJWkUgLSBvZmZzZXQpOw0KIAkJCXNnX3NldF9wYWdlKCZtc2ctPnNnLmRhdGFb bXNnLT5zZy5lbmRdLA0KIAkJCQkgICAgcGFnZXNbaV0sIHVzZSwgb2Zmc2V0KTsNCiAJCQlzZ191 bm1hcmtfZW5kKCZtc2ctPnNnLmRhdGFbbXNnLT5zZy5lbmRdKTsNCmRpZmYgLS1naXQgYS9uZXQv Y29yZS9zb2NrLmMgYi9uZXQvY29yZS9zb2NrLmMNCmluZGV4IGEzYmEwMzU4Yzc3Yy4uYTg4Yjhi ZGRkZDFmIDEwMDY0NA0KLS0tIGEvbmV0L2NvcmUvc29jay5jDQorKysgYi9uZXQvY29yZS9zb2Nr LmMNCkBAIC0xMTM3LDcgKzExMzcsNyBAQCBpbnQgc2tfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAq c2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsDQogCQkgKiBwbGF5ICdndWVzcyB0aGUgYmlnZ2Vz dCBzaXplJyBnYW1lcy4gUkNWQlVGL1NOREJVRg0KIAkJICogYXJlIHRyZWF0ZWQgaW4gQlNEIGFz IGhpbnRzDQogCQkgKi8NCi0JCXZhbCA9IG1pbl90KHUzMiwgdmFsLCBSRUFEX09OQ0Uoc3lzY3Rs X3dtZW1fbWF4KSk7DQorCQl2YWwgPSBtaW5fdW5zaWduZWQodmFsLCBSRUFEX09OQ0Uoc3lzY3Rs X3dtZW1fbWF4KSk7DQogc2V0X3NuZGJ1ZjoNCiAJCS8qIEVuc3VyZSB2YWwgKiAyIGZpdHMgaW50 byBhbiBpbnQsIHRvIHByZXZlbnQgbWF4X3QoKQ0KIAkJICogZnJvbSB0cmVhdGluZyBpdCBhcyBh IG5lZ2F0aXZlIHZhbHVlLg0KQEAgLTExNjksNyArMTE2OSw3IEBAIGludCBza19zZXRzb2Nrb3B0 KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwNCiAJCSAqIHBsYXkgJ2d1 ZXNzIHRoZSBiaWdnZXN0IHNpemUnIGdhbWVzLiBSQ1ZCVUYvU05EQlVGDQogCQkgKiBhcmUgdHJl YXRlZCBpbiBCU0QgYXMgaGludHMNCiAJCSAqLw0KLQkJX19zb2NrX3NldF9yY3ZidWYoc2ssIG1p bl90KHUzMiwgdmFsLCBSRUFEX09OQ0Uoc3lzY3RsX3JtZW1fbWF4KSkpOw0KKwkJX19zb2NrX3Nl dF9yY3ZidWYoc2ssIG1pbl91bnNpZ25lZCh2YWwsIFJFQURfT05DRShzeXNjdGxfcm1lbV9tYXgp KSk7DQogCQlicmVhazsNCiANCiAJY2FzZSBTT19SQ1ZCVUZGT1JDRToNCmRpZmYgLS1naXQgYS9u ZXQvaXB2NC9pY21wLmMgYi9uZXQvaXB2NC9pY21wLmMNCmluZGV4IGQ1ZDc0NWMzZTM0NS4uODlk ODk4YzJmNjc5IDEwMDY0NA0KLS0tIGEvbmV0L2lwdjQvaWNtcC5jDQorKysgYi9uZXQvaXB2NC9p Y21wLmMNCkBAIC0yNTcsNyArMjU3LDcgQEAgYm9vbCBpY21wX2dsb2JhbF9hbGxvdyh2b2lkKQ0K IAkJaWYgKGluY3IpDQogCQkJV1JJVEVfT05DRShpY21wX2dsb2JhbC5zdGFtcCwgbm93KTsNCiAJ fQ0KLQljcmVkaXQgPSBtaW5fdCh1MzIsIGljbXBfZ2xvYmFsLmNyZWRpdCArIGluY3IsDQorCWNy ZWRpdCA9IG1pbl91bnNpZ25lZChpY21wX2dsb2JhbC5jcmVkaXQgKyBpbmNyLA0KIAkJICAgICAg IFJFQURfT05DRShzeXNjdGxfaWNtcF9tc2dzX2J1cnN0KSk7DQogCWlmIChjcmVkaXQpIHsNCiAJ CS8qIFdlIHdhbnQgdG8gdXNlIGEgY3JlZGl0IG9mIG9uZSBpbiBhdmVyYWdlLCBidXQgbmVlZCB0 byByYW5kb21pemUNCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9vdXRwdXQuYyBiL25ldC9pcHY0 L2lwX291dHB1dC5jDQppbmRleCA5MjJjODdlZjFhYjUuLjFlMDdjZWI5NTNlZSAxMDA2NDQNCi0t LSBhL25ldC9pcHY0L2lwX291dHB1dC5jDQorKysgYi9uZXQvaXB2NC9pcF9vdXRwdXQuYw0KQEAg LTEyMjUsNyArMTIyNSw3IEBAIHN0YXRpYyBpbnQgX19pcF9hcHBlbmRfZGF0YShzdHJ1Y3Qgc29j ayAqc2ssDQogCQkJCXNrYl9zaGluZm8oc2tiKS0+bnJfZnJhZ3MgPSArK2k7DQogCQkJCWdldF9w YWdlKHBmcmFnLT5wYWdlKTsNCiAJCQl9DQotCQkJY29weSA9IG1pbl90KGludCwgY29weSwgcGZy YWctPnNpemUgLSBwZnJhZy0+b2Zmc2V0KTsNCisJCQljb3B5ID0gbWluX3Vuc2lnbmVkKGNvcHks IHBmcmFnLT5zaXplIC0gcGZyYWctPm9mZnNldCk7DQogCQkJaWYgKGdldGZyYWcoZnJvbSwNCiAJ CQkJICAgIHBhZ2VfYWRkcmVzcyhwZnJhZy0+cGFnZSkgKyBwZnJhZy0+b2Zmc2V0LA0KIAkJCQkg ICAgb2Zmc2V0LCBjb3B5LCBza2ItPmxlbiwgc2tiKSA8IDApDQpkaWZmIC0tZ2l0IGEvbmV0L2lw djQvdGNwLmMgYi9uZXQvaXB2NC90Y3AuYw0KaW5kZXggNTQ4MzZhNmI4MWQ2Li4wM2E3YmQxY2Q5 ZDYgMTAwNjQ0DQotLS0gYS9uZXQvaXB2NC90Y3AuYw0KKysrIGIvbmV0L2lwdjQvdGNwLmMNCkBA IC0xMzYxLDcgKzEzNjEsNyBAQCBpbnQgdGNwX3NlbmRtc2dfbG9ja2VkKHN0cnVjdCBzb2NrICpz aywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3Qgc2l6ZSkNCiAJCQkJbWVyZ2UgPSBmYWxzZTsN CiAJCQl9DQogDQotCQkJY29weSA9IG1pbl90KGludCwgY29weSwgcGZyYWctPnNpemUgLSBwZnJh Zy0+b2Zmc2V0KTsNCisJCQljb3B5ID0gbWluX3Vuc2lnbmVkKGNvcHksIHBmcmFnLT5zaXplIC0g cGZyYWctPm9mZnNldCk7DQogDQogCQkJaWYgKHVubGlrZWx5KHNrYl96Y29weV9wdXJlKHNrYikg fHwgc2tiX3pjb3B5X21hbmFnZWQoc2tiKSkpIHsNCiAJCQkJaWYgKHRjcF9kb3duZ3JhZGVfemNv cHlfcHVyZShzaywgc2tiKSkNCkBAIC0yMDU0LDcgKzIwNTQsNyBAQCBzdGF0aWMgaW50IHRjcF96 Y19oYW5kbGVfbGVmdG92ZXIoc3RydWN0IHRjcF96ZXJvY29weV9yZWNlaXZlICp6YywNCiAJCQkJ ICBzMzIgY29weWJ1Zl9sZW4sDQogCQkJCSAgc3RydWN0IHNjbV90aW1lc3RhbXBpbmdfaW50ZXJu YWwgKnRzcykNCiB7DQotCXUzMiBvZmZzZXQsIGNvcHlsZW4gPSBtaW5fdCh1MzIsIGNvcHlidWZf bGVuLCB6Yy0+cmVjdl9za2lwX2hpbnQpOw0KKwl1MzIgb2Zmc2V0LCBjb3B5bGVuID0gbWluX3Vu c2lnbmVkKGNvcHlidWZfbGVuLCB6Yy0+cmVjdl9za2lwX2hpbnQpOw0KIA0KIAlpZiAoIWNvcHls ZW4pDQogCQlyZXR1cm4gMDsNCkBAIC0yMjMwLDcgKzIyMzAsNyBAQCBzdGF0aWMgaW50IHRjcF96 ZXJvY29weV9yZWNlaXZlKHN0cnVjdCBzb2NrICpzaywNCiAJCXJldHVybiAtRUlOVkFMOw0KIAl9 DQogCXZtYV9sZW4gPSBtaW5fdCh1bnNpZ25lZCBsb25nLCB6Yy0+bGVuZ3RoLCB2bWEtPnZtX2Vu ZCAtIGFkZHJlc3MpOw0KLQlhdmFpbF9sZW4gPSBtaW5fdCh1MzIsIHZtYV9sZW4sIGlucSk7DQor CWF2YWlsX2xlbiA9IG1pbl91bnNpZ25lZCh2bWFfbGVuLCBpbnEpOw0KIAl0b3RhbF9ieXRlc190 b19tYXAgPSBhdmFpbF9sZW4gJiB+KFBBR0VfU0laRSAtIDEpOw0KIAlpZiAodG90YWxfYnl0ZXNf dG9fbWFwKSB7DQogCQlpZiAoISh6Yy0+ZmxhZ3MgJiBUQ1BfUkVDRUlWRV9aRVJPQ09QWV9GTEFH X1RMQl9DTEVBTl9ISU5UKSkNCkBAIC00MTM1LDcgKzQxMzUsNyBAQCBpbnQgZG9fdGNwX2dldHNv Y2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsDQogCQlpZiAoY2Ffb3BzICYmIGNhX29w cy0+Z2V0X2luZm8pDQogCQkJc3ogPSBjYV9vcHMtPmdldF9pbmZvKHNrLCB+MFUsICZhdHRyLCAm aW5mbyk7DQogDQotCQlsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwgc3opOw0KKwkJbGVu ID0gbWluX3Vuc2lnbmVkKGxlbiwgc3opOw0KIAkJaWYgKGNvcHlfdG9fc29ja3B0cihvcHRsZW4s ICZsZW4sIHNpemVvZihpbnQpKSkNCiAJCQlyZXR1cm4gLUVGQVVMVDsNCiAJCWlmIChjb3B5X3Rv X3NvY2twdHIob3B0dmFsLCAmaW5mbywgbGVuKSkNCkBAIC00MTgxLDcgKzQxODEsNyBAQCBpbnQg ZG9fdGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsDQogDQogCQlrZXlf bGVuID0gdGNwX2Zhc3RvcGVuX2dldF9jaXBoZXIobmV0LCBpY3NrLCBrZXkpICoNCiAJCQkJVENQ X0ZBU1RPUEVOX0tFWV9MRU5HVEg7DQotCQlsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGxlbiwg a2V5X2xlbik7DQorCQlsZW4gPSBtaW5fdW5zaWduZWQobGVuLCBrZXlfbGVuKTsNCiAJCWlmIChj b3B5X3RvX3NvY2twdHIob3B0bGVuLCAmbGVuLCBzaXplb2YoaW50KSkpDQogCQkJcmV0dXJuIC1F RkFVTFQ7DQogCQlpZiAoY29weV90b19zb2NrcHRyKG9wdHZhbCwga2V5LCBsZW4pKQ0KZGlmZiAt LWdpdCBhL25ldC9pcHY0L3RjcF9pbnB1dC5jIGIvbmV0L2lwdjQvdGNwX2lucHV0LmMNCmluZGV4 IDA2NDA0NTNmY2U1NC4uY2U4Nzg0ZWQ1NWNjIDEwMDY0NA0KLS0tIGEvbmV0L2lwdjQvdGNwX2lu cHV0LmMNCisrKyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jDQpAQCAtNDk4LDcgKzQ5OCw3IEBAIHN0 YXRpYyB2b2lkIHRjcF9ncm93X3dpbmRvdyhzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBz a19idWZmICpza2IsDQogCXN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spOw0KIAlpbnQg cm9vbTsNCiANCi0Jcm9vbSA9IG1pbl90KGludCwgdHAtPndpbmRvd19jbGFtcCwgdGNwX3NwYWNl KHNrKSkgLSB0cC0+cmN2X3NzdGhyZXNoOw0KKwlyb29tID0gbWluX3Vuc2lnbmVkKHRwLT53aW5k b3dfY2xhbXAsIHRjcF9zcGFjZShzaykpIC0gdHAtPnJjdl9zc3RocmVzaDsNCiANCiAJaWYgKHJv b20gPD0gMCkNCiAJCXJldHVybjsNCkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCB0Y3BfcmN2X3Nw YWNlX2FkanVzdChzdHJ1Y3Qgc29jayAqc2spDQogCQkJcmN2bWVtICs9IDEyODsNCiANCiAJCWRv X2RpdihyY3Z3aW4sIHRwLT5hZHZtc3MpOw0KLQkJcmN2YnVmID0gbWluX3QodTY0LCByY3Z3aW4g KiByY3ZtZW0sDQorCQlyY3ZidWYgPSBtaW5fdW5zaWduZWQocmN2d2luICogcmN2bWVtLA0KIAkJ CSAgICAgICBSRUFEX09OQ0Uoc29ja19uZXQoc2spLT5pcHY0LnN5c2N0bF90Y3Bfcm1lbVsyXSkp Ow0KIAkJaWYgKHJjdmJ1ZiA+IHNrLT5za19yY3ZidWYpIHsNCiAJCQlXUklURV9PTkNFKHNrLT5z a19yY3ZidWYsIHJjdmJ1Zik7DQpAQCAtMTA1MCw3ICsxMDUwLDcgQEAgc3RhdGljIHZvaWQgdGNw X2NoZWNrX3NhY2tfcmVvcmRlcmluZyhzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHUzMiBsb3dfc2Vx LA0KIAkJCSB0cC0+c2Fja2VkX291dCwNCiAJCQkgdHAtPnVuZG9fbWFya2VyID8gdHAtPnVuZG9f cmV0cmFucyA6IDApOw0KICNlbmRpZg0KLQkJdHAtPnJlb3JkZXJpbmcgPSBtaW5fdCh1MzIsICht ZXRyaWMgKyBtc3MgLSAxKSAvIG1zcywNCisJCXRwLT5yZW9yZGVyaW5nID0gbWluX3Vuc2lnbmVk KChtZXRyaWMgKyBtc3MgLSAxKSAvIG1zcywNCiAJCQkJICAgICAgIFJFQURfT05DRShzb2NrX25l dChzayktPmlwdjQuc3lzY3RsX3RjcF9tYXhfcmVvcmRlcmluZykpOw0KIAl9DQogDQpAQCAtMjAy OSw3ICsyMDI5LDcgQEAgc3RhdGljIHZvaWQgdGNwX2NoZWNrX3Jlbm9fcmVvcmRlcmluZyhzdHJ1 Y3Qgc29jayAqc2ssIGNvbnN0IGludCBhZGRlbmQpDQogCWlmICghdGNwX2xpbWl0X3Jlbm9fc2Fj a2VkKHRwKSkNCiAJCXJldHVybjsNCiANCi0JdHAtPnJlb3JkZXJpbmcgPSBtaW5fdCh1MzIsIHRw LT5wYWNrZXRzX291dCArIGFkZGVuZCwNCisJdHAtPnJlb3JkZXJpbmcgPSBtaW5fdW5zaWduZWQo dHAtPnBhY2tldHNfb3V0ICsgYWRkZW5kLA0KIAkJCSAgICAgICBSRUFEX09OQ0Uoc29ja19uZXQo c2spLT5pcHY0LnN5c2N0bF90Y3BfbWF4X3Jlb3JkZXJpbmcpKTsNCiAJdHAtPnJlb3JkX3NlZW4r KzsNCiAJTkVUX0lOQ19TVEFUUyhzb2NrX25ldChzayksIExJTlVYX01JQl9UQ1BSRU5PUkVPUkRF Uik7DQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX291dHB1dC5jIGIvbmV0L2lwdjQvdGNwX291 dHB1dC5jDQppbmRleCBjNjlmNGQ5NjYwMjQuLjljYzcwZjU1OWZjNCAxMDA2NDQNCi0tLSBhL25l dC9pcHY0L3RjcF9vdXRwdXQuYw0KKysrIGIvbmV0L2lwdjQvdGNwX291dHB1dC5jDQpAQCAtMjQ1 LDcgKzI0NSw3IEBAIHZvaWQgdGNwX3NlbGVjdF9pbml0aWFsX3dpbmRvdyhjb25zdCBzdHJ1Y3Qg c29jayAqc2ssIGludCBfX3NwYWNlLCBfX3UzMiBtc3MsDQogCQkJCSAgICAgIDAsIFRDUF9NQVhf V1NDQUxFKTsNCiAJfQ0KIAkvKiBTZXQgdGhlIGNsYW1wIG5vIGhpZ2hlciB0aGFuIG1heCByZXBy ZXNlbnRhYmxlIHZhbHVlICovDQotCSgqd2luZG93X2NsYW1wKSA9IG1pbl90KF9fdTMyLCBVMTZf TUFYIDw8ICgqcmN2X3dzY2FsZSksICp3aW5kb3dfY2xhbXApOw0KKwkoKndpbmRvd19jbGFtcCkg PSBtaW5fdW5zaWduZWQoVTE2X01BWCA8PCAoKnJjdl93c2NhbGUpLCAqd2luZG93X2NsYW1wKTsN CiB9DQogRVhQT1JUX1NZTUJPTCh0Y3Bfc2VsZWN0X2luaXRpYWxfd2luZG93KTsNCiANCkBAIC0x NDcxLDcgKzE0NzEsNyBAQCBzdGF0aWMgdm9pZCB0Y3BfYWRqdXN0X3Bjb3VudChzdHJ1Y3Qgc29j ayAqc2ssIGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIGludCBkZQ0KIA0KIAkvKiBSZW5vIGNh c2UgaXMgc3BlY2lhbC4gU2lnaC4uLiAqLw0KIAlpZiAodGNwX2lzX3Jlbm8odHApICYmIGRlY3Ig PiAwKQ0KLQkJdHAtPnNhY2tlZF9vdXQgLT0gbWluX3QodTMyLCB0cC0+c2Fja2VkX291dCwgZGVj cik7DQorCQl0cC0+c2Fja2VkX291dCAtPSBtaW5fdW5zaWduZWQodHAtPnNhY2tlZF9vdXQsIGRl Y3IpOw0KIA0KIAlpZiAodHAtPmxvc3Rfc2tiX2hpbnQgJiYNCiAJICAgIGJlZm9yZShUQ1BfU0tC X0NCKHNrYiktPnNlcSwgVENQX1NLQl9DQih0cC0+bG9zdF9za2JfaGludCktPnNlcSkgJiYNCkBA IC0xNjI5LDcgKzE2MjksNyBAQCBzdGF0aWMgaW50IF9fcHNrYl90cmltX2hlYWQoc3RydWN0IHNr X2J1ZmYgKnNrYiwgaW50IGxlbikNCiAJc3RydWN0IHNrYl9zaGFyZWRfaW5mbyAqc2hpbmZvOw0K IAlpbnQgaSwgaywgZWF0Ow0KIA0KLQllYXQgPSBtaW5fdChpbnQsIGxlbiwgc2tiX2hlYWRsZW4o c2tiKSk7DQorCWVhdCA9IG1pbl91bnNpZ25lZChsZW4sIHNrYl9oZWFkbGVuKHNrYikpOw0KIAlp ZiAoZWF0KSB7DQogCQlfX3NrYl9wdWxsKHNrYiwgZWF0KTsNCiAJCWxlbiAtPSBlYXQ7DQpAQCAt MjQxNyw3ICsyNDE3LDcgQEAgc3RhdGljIGludCB0Y3BfbXR1X3Byb2JlKHN0cnVjdCBzb2NrICpz aykNCiANCiAJbGVuID0gMDsNCiAJdGNwX2Zvcl93cml0ZV9xdWV1ZV9mcm9tX3NhZmUoc2tiLCBu ZXh0LCBzaykgew0KLQkJY29weSA9IG1pbl90KGludCwgc2tiLT5sZW4sIHByb2JlX3NpemUgLSBs ZW4pOw0KKwkJY29weSA9IG1pbl91bnNpZ25lZChza2ItPmxlbiwgcHJvYmVfc2l6ZSAtIGxlbik7 DQogCQlza2JfY29weV9iaXRzKHNrYiwgMCwgc2tiX3B1dChuc2tiLCBjb3B5KSwgY29weSk7DQog DQogCQlpZiAoc2tiLT5sZW4gPD0gY29weSkgew0KQEAgLTI1MDgsNyArMjUwOCw3IEBAIHN0YXRp YyBib29sIHRjcF9zbWFsbF9xdWV1ZV9jaGVjayhzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVj dCBza19idWZmICpza2IsDQogCQkgICAgICAyICogc2tiLT50cnVlc2l6ZSwNCiAJCSAgICAgIHNr LT5za19wYWNpbmdfcmF0ZSA+PiBSRUFEX09OQ0Uoc2stPnNrX3BhY2luZ19zaGlmdCkpOw0KIAlp ZiAoc2stPnNrX3BhY2luZ19zdGF0dXMgPT0gU0tfUEFDSU5HX05PTkUpDQotCQlsaW1pdCA9IG1p bl90KHVuc2lnbmVkIGxvbmcsIGxpbWl0LA0KKwkJbGltaXQgPSBtaW5fdW5zaWduZWQobGltaXQs DQogCQkJICAgICAgUkVBRF9PTkNFKHNvY2tfbmV0KHNrKS0+aXB2NC5zeXNjdGxfdGNwX2xpbWl0 X291dHB1dF9ieXRlcykpOw0KIAlsaW1pdCA8PD0gZmFjdG9yOw0KIA0KQEAgLTI2NzMsOSArMjY3 Myw3IEBAIHN0YXRpYyBib29sIHRjcF93cml0ZV94bWl0KHN0cnVjdCBzb2NrICpzaywgdW5zaWdu ZWQgaW50IG1zc19ub3csIGludCBub25hZ2xlLA0KIAkJbGltaXQgPSBtc3Nfbm93Ow0KIAkJaWYg KHRzb19zZWdzID4gMSAmJiAhdGNwX3VyZ19tb2RlKHRwKSkNCiAJCQlsaW1pdCA9IHRjcF9tc3Nf c3BsaXRfcG9pbnQoc2ssIHNrYiwgbXNzX25vdywNCi0JCQkJCQkgICAgbWluX3QodW5zaWduZWQg aW50LA0KLQkJCQkJCQkgIGN3bmRfcXVvdGEsDQotCQkJCQkJCSAgbWF4X3NlZ3MpLA0KKwkJCQkJ CSAgICBtaW5fdW5zaWduZWQoY3duZF9xdW90YSwgbWF4X3NlZ3MpLA0KIAkJCQkJCSAgICBub25h Z2xlKTsNCiANCiAJCWlmIChza2ItPmxlbiA+IGxpbWl0ICYmDQpAQCAtMjk2NCw3ICsyOTYyLDcg QEAgdTMyIF9fdGNwX3NlbGVjdF93aW5kb3coc3RydWN0IHNvY2sgKnNrKQ0KIAlpZiAoc2tfaXNf bXB0Y3Aoc2spKQ0KIAkJbXB0Y3Bfc3BhY2Uoc2ssICZmcmVlX3NwYWNlLCAmYWxsb3dlZF9zcGFj ZSk7DQogDQotCWZ1bGxfc3BhY2UgPSBtaW5fdChpbnQsIHRwLT53aW5kb3dfY2xhbXAsIGFsbG93 ZWRfc3BhY2UpOw0KKwlmdWxsX3NwYWNlID0gbWluX3Vuc2lnbmVkKHRwLT53aW5kb3dfY2xhbXAs IGFsbG93ZWRfc3BhY2UpOw0KIA0KIAlpZiAodW5saWtlbHkobXNzID4gZnVsbF9zcGFjZSkpIHsN CiAJCW1zcyA9IGZ1bGxfc3BhY2U7DQpAQCAtMzIwMSw3ICszMTk5LDcgQEAgaW50IF9fdGNwX3Jl dHJhbnNtaXRfc2tiKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IHNl Z3MpDQogCQlkaWZmIC09IHRjcF9za2JfcGNvdW50KHNrYik7DQogCQlpZiAoZGlmZikNCiAJCQl0 Y3BfYWRqdXN0X3Bjb3VudChzaywgc2tiLCBkaWZmKTsNCi0JCWF2YWlsX3duZCA9IG1pbl90KGlu dCwgYXZhaWxfd25kLCBjdXJfbXNzKTsNCisJCWF2YWlsX3duZCA9IG1pbl91bnNpZ25lZChhdmFp bF93bmQsIGN1cl9tc3MpOw0KIAkJaWYgKHNrYi0+bGVuIDwgYXZhaWxfd25kKQ0KIAkJCXRjcF9y ZXRyYW5zX3RyeV9jb2xsYXBzZShzaywgc2tiLCBhdmFpbF93bmQpOw0KIAl9DQpAQCAtMzMyNCw3 ICszMzIyLDcgQEAgdm9pZCB0Y3BfeG1pdF9yZXRyYW5zbWl0X3F1ZXVlKHN0cnVjdCBzb2NrICpz aykNCiAJCS8qIEluIGNhc2UgdGNwX3NoaWZ0X3NrYl9kYXRhKCkgaGF2ZSBhZ2dyZWdhdGVkIGxh cmdlIHNrYnMsDQogCQkgKiB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBub3Qgc2VuZGluZyB0b28gYmln cyBUU08gcGFja2V0cw0KIAkJICovDQotCQlzZWdzID0gbWluX3QoaW50LCBzZWdzLCBtYXhfc2Vn cyk7DQorCQlzZWdzID0gbWluX3Vuc2lnbmVkKHNlZ3MsIG1heF9zZWdzKTsNCiANCiAJCWlmICh0 cC0+cmV0cmFuc19vdXQgPj0gdHAtPmxvc3Rfb3V0KSB7DQogCQkJYnJlYWs7DQpAQCAtMzc0OSw3 ICszNzQ3LDggQEAgc3RhdGljIGludCB0Y3Bfc2VuZF9zeW5fZGF0YShzdHJ1Y3Qgc29jayAqc2ss IHN0cnVjdCBza19idWZmICpzeW4pDQogCXN0cnVjdCBpbmV0X2Nvbm5lY3Rpb25fc29jayAqaWNz ayA9IGluZXRfY3NrKHNrKTsNCiAJc3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7DQog CXN0cnVjdCB0Y3BfZmFzdG9wZW5fcmVxdWVzdCAqZm8gPSB0cC0+ZmFzdG9wZW5fcmVxOw0KLQlp bnQgc3BhY2UsIGVyciA9IDA7DQorCXVuc2lnbmVkIGludCBzcGFjZTsNCisJaW50IGVyciA9IDA7 DQogCXN0cnVjdCBza19idWZmICpzeW5fZGF0YTsNCiANCiAJdHAtPnJ4X29wdC5tc3NfY2xhbXAg PSB0cC0+YWR2bXNzOyAgLyogSWYgTVNTIGlzIG5vdCBjYWNoZWQgKi8NCkBAIC0zOTIzLDcgKzM5 MjIsNyBAQCB2b2lkIHRjcF9zZW5kX2RlbGF5ZWRfYWNrKHN0cnVjdCBzb2NrICpzaykNCiAJCWF0 byA9IG1pbihhdG8sIG1heF9hdG8pOw0KIAl9DQogDQotCWF0byA9IG1pbl90KHUzMiwgYXRvLCBp bmV0X2NzayhzayktPmljc2tfZGVsYWNrX21heCk7DQorCWF0byA9IG1pbl91bnNpZ25lZChhdG8s IGluZXRfY3NrKHNrKS0+aWNza19kZWxhY2tfbWF4KTsNCiANCiAJLyogU3RheSB3aXRoaW4gdGhl IGxpbWl0IHdlIHdlcmUgZ2l2ZW4gKi8NCiAJdGltZW91dCA9IGppZmZpZXMgKyBhdG87DQpkaWZm IC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmNvbmYuYyBiL25ldC9pcHY2L2FkZHJjb25mLmMNCmluZGV4 IDljM2Y1MjAyYTk3Yi4uYzQ0ZmQ1ZGRlNTU5IDEwMDY0NA0KLS0tIGEvbmV0L2lwdjYvYWRkcmNv bmYuYw0KKysrIGIvbmV0L2lwdjYvYWRkcmNvbmYuYw0KQEAgLTEzNjksOCArMTM2OSw3IEBAIHN0 YXRpYyBpbnQgaXB2Nl9jcmVhdGVfdGVtcGFkZHIoc3RydWN0IGluZXQ2X2lmYWRkciAqaWZwLCBi b29sIGJsb2NrKQ0KIAkgKiBpZGV2LT5kZXN5bmNfZmFjdG9yIGlmIGl0J3MgbGFyZ2VyDQogCSAq Lw0KIAljbmZfdGVtcF9wcmVmZXJyZWRfbGZ0ID0gUkVBRF9PTkNFKGlkZXYtPmNuZi50ZW1wX3By ZWZlcmVkX2xmdCk7DQotCW1heF9kZXN5bmNfZmFjdG9yID0gbWluX3QoX191MzIsDQotCQkJCSAg aWRldi0+Y25mLm1heF9kZXN5bmNfZmFjdG9yLA0KKwltYXhfZGVzeW5jX2ZhY3RvciA9IG1pbl91 bnNpZ25lZChpZGV2LT5jbmYubWF4X2Rlc3luY19mYWN0b3IsDQogCQkJCSAgY25mX3RlbXBfcHJl ZmVycmVkX2xmdCAtIHJlZ2VuX2FkdmFuY2UpOw0KIA0KIAlpZiAodW5saWtlbHkoaWRldi0+ZGVz eW5jX2ZhY3RvciA+IG1heF9kZXN5bmNfZmFjdG9yKSkgew0KZGlmZiAtLWdpdCBhL25ldC9pcHY2 L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYw0KaW5kZXggZTE5NTA3NjE0ZjY0 Li5kMDliZTJlMGYyMGMgMTAwNjQ0DQotLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMNCisrKyBi L25ldC9pcHY2L2lwNl9vdXRwdXQuYw0KQEAgLTE3NzksNyArMTc3OSw3IEBAIHN0YXRpYyBpbnQg X19pcDZfYXBwZW5kX2RhdGEoc3RydWN0IHNvY2sgKnNrLA0KIAkJCQlza2Jfc2hpbmZvKHNrYikt Pm5yX2ZyYWdzID0gKytpOw0KIAkJCQlnZXRfcGFnZShwZnJhZy0+cGFnZSk7DQogCQkJfQ0KLQkJ CWNvcHkgPSBtaW5fdChpbnQsIGNvcHksIHBmcmFnLT5zaXplIC0gcGZyYWctPm9mZnNldCk7DQor CQkJY29weSA9IG1pbl91bnNpZ25lZChjb3B5LCBwZnJhZy0+c2l6ZSAtIHBmcmFnLT5vZmZzZXQp Ow0KIAkJCWlmIChnZXRmcmFnKGZyb20sDQogCQkJCSAgICBwYWdlX2FkZHJlc3MocGZyYWctPnBh Z2UpICsgcGZyYWctPm9mZnNldCwNCiAJCQkJICAgIG9mZnNldCwgY29weSwgc2tiLT5sZW4sIHNr YikgPCAwKQ0KZGlmZiAtLWdpdCBhL25ldC9uZXRsaW5rL2dlbmV0bGluay5jIGIvbmV0L25ldGxp bmsvZ2VuZXRsaW5rLmMNCmluZGV4IDNlMTY1MjdiZWI5MS4uYjM2MmI4MTA1NzdjIDEwMDY0NA0K LS0tIGEvbmV0L25ldGxpbmsvZ2VuZXRsaW5rLmMNCisrKyBiL25ldC9uZXRsaW5rL2dlbmV0bGlu ay5jDQpAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBpbnQgZ2VubF9hbGxvY2F0ZV9yZXNlcnZl X2dyb3VwcyhpbnQgbl9ncm91cHMsIGludCAqZmlyc3RfaWQpDQogDQogCQlmaXRzID0gdHJ1ZTsN CiAJCWZvciAoaSA9IGlkOw0KLQkJICAgICBpIDwgbWluX3QoaW50LCBpZCArIG5fZ3JvdXBzLA0K KwkJICAgICBpIDwgbWluX3Vuc2lnbmVkKGlkICsgbl9ncm91cHMsDQogCQkJICAgICAgIG1jX2dy b3Vwc19sb25ncyAqIEJJVFNfUEVSX0xPTkcpOw0KIAkJICAgICBpKyspIHsNCiAJCQlpZiAodGVz dF9iaXQoaSwgbWNfZ3JvdXBzKSkgew0KZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0 LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jDQppbmRleCA2Y2U4ZGQxOWYzM2MuLmM0OGM5OGQ5 OTBmZSAxMDA2NDQNCi0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMNCisrKyBiL25ldC9wYWNr ZXQvYWZfcGFja2V0LmMNCkBAIC0xNDA3LDcgKzE0MDcsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50 IGZhbm91dF9kZW11eF9yb2xsb3ZlcihzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZiwNCiAJCXBvX3Nr aXAgPSBwbzsNCiAJfQ0KIA0KLQlpID0gaiA9IG1pbl90KGludCwgcG8tPnJvbGxvdmVyLT5zb2Nr LCBudW0gLSAxKTsNCisJaSA9IGogPSBtaW5fdW5zaWduZWQocG8tPnJvbGxvdmVyLT5zb2NrLCBu dW0gLSAxKTsNCiAJZG8gew0KIAkJcG9fbmV4dCA9IHBrdF9zayhyY3VfZGVyZWZlcmVuY2UoZi0+ YXJyW2ldKSk7DQogCQlpZiAocG9fbmV4dCAhPSBwb19za2lwICYmICFSRUFEX09OQ0UocG9fbmV4 dC0+cHJlc3N1cmUpICYmDQpAQCAtMzAxMiw3ICszMDEyLDcgQEAgc3RhdGljIGludCBwYWNrZXRf c25kKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IGxlbikN CiAJaGxlbiA9IExMX1JFU0VSVkVEX1NQQUNFKGRldik7DQogCXRsZW4gPSBkZXYtPm5lZWRlZF90 YWlscm9vbTsNCiAJbGluZWFyID0gX192aXJ0aW8xNl90b19jcHUodmlvX2xlKCksIHZuZXRfaGRy Lmhkcl9sZW4pOw0KLQlsaW5lYXIgPSBtYXgobGluZWFyLCBtaW5fdChpbnQsIGxlbiwgZGV2LT5o YXJkX2hlYWRlcl9sZW4pKTsNCisJbGluZWFyID0gbWF4X3Vuc2lnbmVkKGxpbmVhciwgbWluX3Vu c2lnbmVkKGxlbiwgZGV2LT5oYXJkX2hlYWRlcl9sZW4pKTsNCiAJc2tiID0gcGFja2V0X2FsbG9j X3NrYihzaywgaGxlbiArIHRsZW4sIGhsZW4sIGxlbiwgbGluZWFyLA0KIAkJCSAgICAgICBtc2ct Pm1zZ19mbGFncyAmIE1TR19ET05UV0FJVCwgJmVycik7DQogCWlmIChza2IgPT0gTlVMTCkNCmRp ZmYgLS1naXQgYS9uZXQvc2N0cC9hc3NvY2lvbGEuYyBiL25ldC9zY3RwL2Fzc29jaW9sYS5jDQpp bmRleCAzNDYwYWJjZWJhNDQuLjUxOWZlNTg0OTk2ZiAxMDA2NDQNCi0tLSBhL25ldC9zY3RwL2Fz c29jaW9sYS5jDQorKysgYi9uZXQvc2N0cC9hc3NvY2lvbGEuYw0KQEAgLTE0MDMsNyArMTQwMyw3 IEBAIHZvaWQgc2N0cF9hc3NvY191cGRhdGVfZnJhZ19wb2ludChzdHJ1Y3Qgc2N0cF9hc3NvY2lh dGlvbiAqYXNvYykNCiAJCQkJICAgIHNjdHBfZGF0YWNoa19sZW4oJmFzb2MtPnN0cmVhbSkpOw0K IA0KIAlpZiAoYXNvYy0+dXNlcl9mcmFnKQ0KLQkJZnJhZyA9IG1pbl90KGludCwgZnJhZywgYXNv Yy0+dXNlcl9mcmFnKTsNCisJCWZyYWcgPSBtaW5fdW5zaWduZWQoZnJhZywgYXNvYy0+dXNlcl9m cmFnKTsNCiANCiAJZnJhZyA9IG1pbl90KGludCwgZnJhZywgU0NUUF9NQVhfQ0hVTktfTEVOIC0N CiAJCQkJc2N0cF9kYXRhY2hrX2xlbigmYXNvYy0+c3RyZWFtKSk7DQpkaWZmIC0tZ2l0IGEvbmV0 L3VuaXgvYWZfdW5peC5jIGIvbmV0L3VuaXgvYWZfdW5peC5jDQppbmRleCBiMzU0NWZjNjgwOTcu Ljk3YmI1Yzk2NTUyNSAxMDA2NDQNCi0tLSBhL25ldC91bml4L2FmX3VuaXguYw0KKysrIGIvbmV0 L3VuaXgvYWZfdW5peC5jDQpAQCAtMjE5MCw3ICsyMTkwLDcgQEAgc3RhdGljIGludCB1bml4X3N0 cmVhbV9zZW5kbXNnKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBtc2doZHIgKm1zZywNCiAJ CXNpemUgPSBtaW5fdChpbnQsIHNpemUsIChzay0+c2tfc25kYnVmID4+IDEpIC0gNjQpOw0KIA0K IAkJLyogYWxsb3cgZmFsbGJhY2sgdG8gb3JkZXItMCBhbGxvY2F0aW9ucyAqLw0KLQkJc2l6ZSA9 IG1pbl90KGludCwgc2l6ZSwgU0tCX01BWF9IRUFEKDApICsgVU5JWF9TS0JfRlJBR1NfU1opOw0K KwkJc2l6ZSA9IG1pbl91bnNpZ25lZChzaXplLCBTS0JfTUFYX0hFQUQoMCkgKyBVTklYX1NLQl9G UkFHU19TWik7DQogDQogCQlkYXRhX2xlbiA9IG1heF90KGludCwgMCwgc2l6ZSAtIFNLQl9NQVhf SEVBRCgwKSk7DQogDQpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfY3J5 cHRvLmMgYi9zZWN1cml0eS9pbnRlZ3JpdHkvaW1hL2ltYV9jcnlwdG8uYw0KaW5kZXggNjQ0OTkw NTY2NDhhLi5jZTU3MWYxODFlOGQgMTAwNjQ0DQotLS0gYS9zZWN1cml0eS9pbnRlZ3JpdHkvaW1h L2ltYV9jcnlwdG8uYw0KKysrIGIvc2VjdXJpdHkvaW50ZWdyaXR5L2ltYS9pbWFfY3J5cHRvLmMN CkBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIGludCBpbWFfY2FsY19maWxlX2hhc2hfYXRmbShz dHJ1Y3QgZmlsZSAqZmlsZSwNCiAJCQkJZ290byBvdXQzOw0KIAkJfQ0KIAkJLyogcmVhZCBidWZm ZXIgKi8NCi0JCXJidWZfbGVuID0gbWluX3QobG9mZl90LCBpX3NpemUgLSBvZmZzZXQsIHJidWZf c2l6ZVthY3RpdmVdKTsNCisJCXJidWZfbGVuID0gbWluX3Vuc2lnbmVkKGlfc2l6ZSAtIG9mZnNl dCwgcmJ1Zl9zaXplW2FjdGl2ZV0pOw0KIAkJcmMgPSBpbnRlZ3JpdHlfa2VybmVsX3JlYWQoZmls ZSwgb2Zmc2V0LCByYnVmW2FjdGl2ZV0sDQogCQkJCQkgICByYnVmX2xlbik7DQogCQlpZiAocmMg IT0gcmJ1Zl9sZW4pIHsNCi0tIA0KMi4xNy4xDQoNCi0NClJlZ2lzdGVyZWQgQWRkcmVzcyBMYWtl c2lkZSwgQnJhbWxleSBSb2FkLCBNb3VudCBGYXJtLCBNaWx0b24gS2V5bmVzLCBNSzEgMVBULCBV Sw0KUmVnaXN0cmF0aW9uIE5vOiAxMzk3Mzg2IChXYWxlcykNCg==