Return-path: Received: from mail-pw0-f46.google.com ([209.85.160.46]:64005 "EHLO mail-pw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752887Ab1CHDQg (ORCPT ); Mon, 7 Mar 2011 22:16:36 -0500 Received: by pwi15 with SMTP id 15so860776pwi.19 for ; Mon, 07 Mar 2011 19:16:35 -0800 (PST) From: Sujith MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="7Qk2ZwPchm" Message-ID: <19829.40837.324805.29938@gargle.gargle.HOWL> Date: Tue, 8 Mar 2011 08:46:21 +0530 To: Cc: , Subject: RE: [ath9k-devel] [RFC 00/34] ath9k_htc AP mode In-Reply-To: <6D6CA94E9F944C45ABD35E9F7E1CAE619EC1314D7D@BLR-SJP-MB02.wipro.com> References: <19828.16017.691812.916489@gargle.gargle.HOWL> <19828.16530.504829.571343@gargle.gargle.HOWL> <6D6CA94E9F944C45ABD35E9F7E1CAE619EC1314D7D@BLR-SJP-MB02.wipro.com> Sender: linux-wireless-owner@vger.kernel.org List-ID: --7Qk2ZwPchm Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit raghunathan.kailasanathan@wipro.com wrote: > So this patchset deprecates the one you posted in January ? > Could you please make available a unified patchset ? Sure, attached a unified patch. --7Qk2ZwPchm Content-Type: application/octet-stream; name="k2-ap-all.patch" Content-Description: patch-all Content-Disposition: attachment; filename="k2-ap-all.patch" Content-Transfer-Encoding: base64 RnJvbSBmNDY2MjZlZDA1NGVkNTg5ZGU4M2M4YWIxNGQ1MzdiYWZlY2M4NWNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hhcmFuQGF0 aGVyb3MuY29tPgpEYXRlOiBGcmksIDE3IERlYyAyMDEwIDA2OjUzOjAyICswNTMwClN1YmplY3Q6 IFtQQVRDSCAwMS8zNF0gYXRoOWtfaHRjOiBGaXggV01JIGFuZCBiZWFjb24gaGVhZGVyCgpNYXRj aCB0aGUgYmVhY29uIGhlYWRlciB3aXRoIHRoYXQgb2YgdGhlIGZpcm13YXJlLgpBbHNvLCB0aGUg ZmlybXdhcmUgcmVwb3J0cyB0aGUgVFNGIGZvciBhbiBTV0JBLCBzbwpzdG9yZSBpdC4KClNpZ25l ZC1vZmYtYnk6IFN1aml0aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+ Ci0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oIHwgICAgMiArLQogZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIHwgICAgNyArKysrKystCiBkcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggfCAgICA2ICsrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCAxMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGg5ay9odGMuaAppbmRleCA3NTNhMjQ1Li44YTU5OGM2IDEwMDY0NAotLS0gYS9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDlrL2h0Yy5oCkBAIC05Niw4ICs5Niw4IEBAIHN0cnVjdCB0eF9tZ210X2hkciB7CiB9 IF9fcGFja2VkOwogCiBzdHJ1Y3QgdHhfYmVhY29uX2hlYWRlciB7Ci0JdTggbGVuX2NoYW5nZWQ7 CiAJdTggdmlmX2luZGV4OworCXU4IGxlbl9jaGFuZ2VkOwogCXUxNiByZXY7CiB9IF9fcGFja2Vk OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMKaW5kZXggZDNkMjQ5MC4uNWMzNmM2 NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jCisrKyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYwpAQCAtMTU0LDYgKzE1NCw3IEBA IHN0YXRpYyB2b2lkIGF0aDlrX3dtaV9jdHJsX3J4KHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZm ICpza2IsCiAJc3RydWN0IHdtaV9jbWRfaGRyICpoZHI7CiAJdTE2IGNtZF9pZDsKIAl2b2lkICp3 bWlfZXZlbnQ7CisJc3RydWN0IHdtaV9ldmVudF9zd2JhICpzd2JhOwogI2lmZGVmIENPTkZJR19B VEg5S19IVENfREVCVUdGUwogCV9fYmUzMiB0eHJhdGU7CiAjZW5kaWYKQEAgLTE2OCw3ICsxNjks MTEgQEAgc3RhdGljIHZvaWQgYXRoOWtfd21pX2N0cmxfcngodm9pZCAqcHJpdiwgc3RydWN0IHNr X2J1ZmYgKnNrYiwKIAkJd21pX2V2ZW50ID0gc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IHdt aV9jbWRfaGRyKSk7CiAJCXN3aXRjaCAoY21kX2lkKSB7CiAJCWNhc2UgV01JX1NXQkFfRVZFTlRJ RDoKLQkJCXdtaS0+YmVhY29uX3BlbmRpbmcgPSAqKHU4ICopd21pX2V2ZW50OworCQkJc3diYSA9 IChzdHJ1Y3Qgd21pX2V2ZW50X3N3YmEgKikgd21pX2V2ZW50OworCisJCQl3bWktPnRzZiA9IGJl NjRfdG9fY3B1KHN3YmEtPnRzZik7CisJCQl3bWktPmJlYWNvbl9wZW5kaW5nID0gc3diYS0+YmVh Y29uX3BlbmRpbmc7CisKIAkJCXRhc2tsZXRfc2NoZWR1bGUoJndtaS0+ZHJ2X3ByaXYtPnN3YmFf dGFza2xldCk7CiAJCQlicmVhazsKIAkJY2FzZSBXTUlfRkFUQUxfRVZFTlRJRDoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaCBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay93bWkuaAppbmRleCA0MjA4NDI3Li4yNGYxNmZhIDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKKysrIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCkBAIC0zMSw2ICszMSwxMSBAQCBzdHJ1Y3Qgd21pX2Nt ZF9oZHIgewogCV9fYmUxNiBzZXFfbm87CiB9IF9fcGFja2VkOwogCitzdHJ1Y3Qgd21pX2V2ZW50 X3N3YmEgeworCV9fYmU2NCB0c2Y7CisJdTggYmVhY29uX3BlbmRpbmc7Cit9OworCiBlbnVtIHdt aV9jbWRfaWQgewogCVdNSV9FQ0hPX0NNRElEID0gMHgwMDAxLAogCVdNSV9BQ0NFU1NfTUVNT1JZ X0NNRElELApAQCAtMTAwLDYgKzEwNSw3IEBAIHN0cnVjdCB3bWkgewogCXUzMiBjbWRfcnNwX2xl bjsKIAlib29sIHN0b3BwZWQ7CiAKKwl1NjQgdHNmOwogCXU4IGJlYWNvbl9wZW5kaW5nOwogCXNw aW5sb2NrX3Qgd21pX2xvY2s7CiAKLS0gCjEuNy40LjEKCgpGcm9tIDdhMTY5NDY5MmI5M2ZkZTRi ODZkN2UzMTc2ZGE3NDc1Y2ZiOTk2NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFN1 aml0aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+CkRhdGU6IFR1ZSwg MTEgSmFuIDIwMTEgMDk6NDc6NTMgKzA1MzAKU3ViamVjdDogW1BBVENIIDAyLzM0XSBhdGg5a19o dGM6IEFkZCBiZWFjb24gc2xvdHMKCkJlYWNvbiB0cmFuc21pc3Npb24gaXMgbm93IGhhbmRsZWQg dGhyb3VnaCBhIHNsb3QgbWVjaGFuaXNtLgpUaGlzIGFsbG93cyBtdWx0aXBsZSBiZWFjb25pbmcg aW50ZXJmYWNlcyB0byBiZSBiZSBwcmVzZW50LgoKU2lnbmVkLW9mZi1ieTogU3VqaXRoIE1hbm9o YXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KLS0tCiBkcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoOWsvaHRjLmggICAgICAgICAgICB8ICAgMTMgKystCiBkcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYyB8ICAxMjYgKysrKysrKysrKysrKysr KysrKystLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYyAg IHwgICAgNSArLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5j ICAgfCAgIDEyICsrLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jICAgICAg ICAgICAgfCAgICA0ICstCiA1IGZpbGVzIGNoYW5nZWQsIDE0MCBpbnNlcnRpb25zKCspLCAyMCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv aHRjLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKaW5kZXggOGE1OThj Ni4uZjc4OTdlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0 Yy5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaApAQCAtMjQ0LDYg KzI0NCw3IEBAIHN0cnVjdCBhdGg5a19odGNfdmlmIHsKIAl1OCBpbmRleDsKIAl1MTYgc2VxX25v OwogCWJvb2wgYmVhY29uX2NvbmZpZ3VyZWQ7CisJaW50IGJzbG90OwogfTsKIAogc3RydWN0IGF0 aDlrX3ZpZl9pdGVyX2RhdGEgewpAQCAtMzUxLDEwICszNTIsMTQgQEAgc3RydWN0IGF0aF9sZWQg ewogCWludCBicmlnaHRuZXNzOwogfTsKIAorI2RlZmluZSBCU1RVQ0tfVEhSRVNIT0xEIDEwCisK IHN0cnVjdCBodGNfYmVhY29uX2NvbmZpZyB7CisJc3RydWN0IGllZWU4MDIxMV92aWYgKmJzbG90 W0FUSDlLX0hUQ19NQVhfQkNOX1ZJRl07CiAJdTE2IGJlYWNvbl9pbnRlcnZhbDsKIAl1MTYgZHRp bV9wZXJpb2Q7CiAJdTE2IGJtaXNzX3RpbWVvdXQ7CisJdTMyIGJtaXNzX2NudDsKIH07CiAKIHN0 cnVjdCBhdGhfYnRjb2V4IHsKQEAgLTQxMSw3ICs0MTYsNiBAQCBzdHJ1Y3QgYXRoOWtfaHRjX3By aXYgewogCXUxNiB0eHBvd2xpbWl0OwogCXUxNiBudmlmczsKIAl1MTYgbnN0YXRpb25zOwotCXUz MiBibWlzc19jbnQ7CiAJYm9vbCByZWFybV9hbmk7CiAJYm9vbCByZWNvbmZpZ19iZWFjb247CiAK QEAgLTQyMiw3ICs0MjYsNiBAQCBzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgewogCWJvb2wgdHhfcXVl dWVzX3N0b3A7CiAJc3BpbmxvY2tfdCB0eF9sb2NrOwogCi0Jc3RydWN0IGllZWU4MDIxMV92aWYg KnZpZjsKIAlzdHJ1Y3QgaHRjX2JlYWNvbl9jb25maWcgY3VyX2JlYWNvbl9jb25mOwogCXVuc2ln bmVkIGludCByeGZpbHRlcjsKIAlzdHJ1Y3QgdGFza2xldF9zdHJ1Y3Qgc3diYV90YXNrbGV0OwpA QCAtNDcwLDExICs0NzMsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIGF0aF9yZWFkX2NhY2hlc2l6 ZShzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uLCBpbnQgKmNzeikKIAogdm9pZCBhdGg5a19odGNf cmVzZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KTsKIAordm9pZCBhdGg5a19odGNfYXNz aWduX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKKwkJCSAgICBzdHJ1Y3QgaWVl ZTgwMjExX3ZpZiAqdmlmKTsKK3ZvaWQgYXRoOWtfaHRjX3JlbW92ZV9ic2xvdChzdHJ1Y3QgYXRo OWtfaHRjX3ByaXYgKnByaXYsCisJCQkgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZik7CiB2 b2lkIGF0aDlrX2h0Y19iZWFjb25xX2NvbmZpZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYp Owogdm9pZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnBy aXYsCiAJCQkgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpOwogdm9pZCBhdGg5a19odGNf YmVhY29uX3JlY29uZmlnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7Ci12b2lkIGF0aDlr X2h0Y19zd2JhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgdTggYmVhY29uX3BlbmRpbmcp Owordm9pZCBhdGg5a19odGNfc3diYShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpOwogCiB2 b2lkIGF0aDlrX2h0Y19yeGVwKHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IsCiAJCSAg ICBlbnVtIGh0Y19lbmRwb2ludF9pZCBlcF9pZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jCmluZGV4IDhkMWQ4NzkuLmI0ZmYyNDAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jCisr KyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jCkBAIC0x NzQsMTIgKzE3NCwxNCBAQCBzdGF0aWMgdm9pZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZ19hcChz dHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJCWltYXNrIHw9IEFUSDlLX0lOVF9TV0JBOwog CiAJYXRoX2RiZyhjb21tb24sIEFUSF9EQkdfQ09ORklHLAotCQkiQVAgQmVhY29uIGNvbmZpZywg aW50dmFsOiAlZCwgbmV4dHRidHQ6ICV1IGltYXNrOiAweCV4XG4iLAotCQlic3NfY29uZi0+YmVh Y29uX2ludGVydmFsLCBuZXh0dGJ0dCwgaW1hc2spOworCQkiQVAgQmVhY29uIGNvbmZpZywgaW50 dmFsOiAlZCwgbmV4dHRidHQ6ICV1ICIKKwkJImltYXNrOiAweCV4LCB0c2ZfcmVzZXQ6ICVkXG4i LAorCQlic3NfY29uZi0+YmVhY29uX2ludGVydmFsLCBuZXh0dGJ0dCwgaW1hc2ssCisJCSEhKGlu dHZhbCAmIEFUSDlLX0JFQUNPTl9SRVNFVF9UU0YpKTsKIAogCVdNSV9DTUQoV01JX0RJU0FCTEVf SU5UUl9DTURJRCk7CiAJYXRoOWtfaHdfYmVhY29uaW5pdChwcml2LT5haCwgbmV4dHRidHQsIGlu dHZhbCk7Ci0JcHJpdi0+Ym1pc3NfY250ID0gMDsKKwlwcml2LT5jdXJfYmVhY29uX2NvbmYuYm1p c3NfY250ID0gMDsKIAlodGNfaW1hc2sgPSBjcHVfdG9fYmUzMihpbWFzayk7CiAJV01JX0NNRF9C VUYoV01JX0VOQUJMRV9JTlRSX0NNRElELCAmaHRjX2ltYXNrKTsKIH0KQEAgLTIxNyw3ICsyMTks NyBAQCBzdGF0aWMgdm9pZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZ19hZGhvYyhzdHJ1Y3QgYXRo OWtfaHRjX3ByaXYgKnByaXYsCiAKIAlXTUlfQ01EKFdNSV9ESVNBQkxFX0lOVFJfQ01ESUQpOwog CWF0aDlrX2h3X2JlYWNvbmluaXQocHJpdi0+YWgsIG5leHR0YnR0LCBpbnR2YWwpOwotCXByaXYt PmJtaXNzX2NudCA9IDA7CisJcHJpdi0+Y3VyX2JlYWNvbl9jb25mLmJtaXNzX2NudCA9IDA7CiAJ aHRjX2ltYXNrID0gY3B1X3RvX2JlMzIoaW1hc2spOwogCVdNSV9DTURfQlVGKFdNSV9FTkFCTEVf SU5UUl9DTURJRCwgJmh0Y19pbWFzayk7CiB9CkBAIC0yMjgsOSArMjMwLDExIEBAIHZvaWQgYXRo OWtfaHRjX2JlYWNvbmVwKHZvaWQgKmRydl9wcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWRl dl9rZnJlZV9za2JfYW55KHNrYik7CiB9CiAKLXZvaWQgYXRoOWtfaHRjX3N3YmEoc3RydWN0IGF0 aDlrX2h0Y19wcml2ICpwcml2LCB1OCBiZWFjb25fcGVuZGluZykKK3N0YXRpYyB2b2lkIGF0aDlr X2h0Y19zZW5kX2JlYWNvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCisJCQkJICBpbnQg c2xvdCkKIHsKLQlzdHJ1Y3QgYXRoOWtfaHRjX3ZpZiAqYXZwID0gKHZvaWQgKilwcml2LT52aWYt PmRydl9wcml2OworCXN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWY7CisJc3RydWN0IGF0aDlrX2h0 Y192aWYgKmF2cDsKIAlzdHJ1Y3QgdHhfYmVhY29uX2hlYWRlciBiZWFjb25faGRyOwogCXN0cnVj dCBhdGg5a19odGNfdHhfY3RsIHR4X2N0bDsKIAlzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmlu Zm87CkBAIC0yNDAsMjEgKzI0NCwxOCBAQCB2b2lkIGF0aDlrX2h0Y19zd2JhKHN0cnVjdCBhdGg5 a19odGNfcHJpdiAqcHJpdiwgdTggYmVhY29uX3BlbmRpbmcpCiAJbWVtc2V0KCZiZWFjb25faGRy LCAwLCBzaXplb2Yoc3RydWN0IHR4X2JlYWNvbl9oZWFkZXIpKTsKIAltZW1zZXQoJnR4X2N0bCwg MCwgc2l6ZW9mKHN0cnVjdCBhdGg5a19odGNfdHhfY3RsKSk7CiAKLQkvKiBGSVhNRTogSGFuZGxl IEJNSVNTICovCi0JaWYgKGJlYWNvbl9wZW5kaW5nICE9IDApIHsKLQkJcHJpdi0+Ym1pc3NfY250 Kys7Ci0JCXJldHVybjsKLQl9Ci0KIAlzcGluX2xvY2tfYmgoJnByaXYtPmJlYWNvbl9sb2NrKTsK IAorCXZpZiA9IHByaXYtPmN1cl9iZWFjb25fY29uZi5ic2xvdFtzbG90XTsKKwlhdnAgPSAoc3Ry dWN0IGF0aDlrX2h0Y192aWYgKil2aWYtPmRydl9wcml2OworCiAJaWYgKHVubGlrZWx5KHByaXYt Pm9wX2ZsYWdzICYgT1BfU0NBTk5JTkcpKSB7CiAJCXNwaW5fdW5sb2NrX2JoKCZwcml2LT5iZWFj b25fbG9jayk7CiAJCXJldHVybjsKIAl9CiAKIAkvKiBHZXQgYSBuZXcgYmVhY29uICovCi0JYmVh Y29uID0gaWVlZTgwMjExX2JlYWNvbl9nZXQocHJpdi0+aHcsIHByaXYtPnZpZik7CisJYmVhY29u ID0gaWVlZTgwMjExX2JlYWNvbl9nZXQocHJpdi0+aHcsIHZpZik7CiAJaWYgKCFiZWFjb24pIHsK IAkJc3Bpbl91bmxvY2tfYmgoJnByaXYtPmJlYWNvbl9sb2NrKTsKIAkJcmV0dXJuOwpAQCAtMjc5 LDYgKzI4MCw2OSBAQCB2b2lkIGF0aDlrX2h0Y19zd2JhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAq cHJpdiwgdTggYmVhY29uX3BlbmRpbmcpCiAJc3Bpbl91bmxvY2tfYmgoJnByaXYtPmJlYWNvbl9s b2NrKTsKIH0KIAorc3RhdGljIGludCBhdGg5a19odGNfY2hvb3NlX2JzbG90KHN0cnVjdCBhdGg5 a19odGNfcHJpdiAqcHJpdikKK3sKKwlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtf aHdfY29tbW9uKHByaXYtPmFoKTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCXU2NCB0c2Y7CisJ dTMyIHRzZnR1OworCXUxNiBpbnR2YWw7CisJaW50IHNsb3Q7CisKKwlpbnR2YWwgPSBwcml2LT5j dXJfYmVhY29uX2NvbmYuYmVhY29uX2ludGVydmFsICYgQVRIOUtfQkVBQ09OX1BFUklPRDsKKwor CXNwaW5fbG9ja19pcnFzYXZlKCZwcml2LT53bWktPndtaV9sb2NrLCBmbGFncyk7CisJdHNmID0g cHJpdi0+d21pLT50c2Y7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+d21pLT53bWlf bG9jaywgZmxhZ3MpOworCisJdHNmdHUgPSBUU0ZfVE9fVFUodHNmID4+IDMyLCB0c2YpOworCXNs b3QgPSAoKHRzZnR1ICUgaW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7 CisJc2xvdCA9IEFUSDlLX0hUQ19NQVhfQkNOX1ZJRiAtIHNsb3QgLSAxOworCisJYXRoX2RiZyhj b21tb24sIEFUSF9EQkdfQkVBQ09OLAorCQkiQ2hvb3NlIHNsb3Q6ICVkLCB0c2Y6ICVsbHUsIHRz ZnR1OiAldSwgaW50dmFsOiAldVxuIiwKKwkJc2xvdCwgdHNmLCB0c2Z0dSwgaW50dmFsKTsKKwor CXJldHVybiBzbG90OworfQorCit2b2lkIGF0aDlrX2h0Y19zd2JhKHN0cnVjdCBhdGg5a19odGNf cHJpdiAqcHJpdikKK3sKKwlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29t bW9uKHByaXYtPmFoKTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCWludCBzbG90OworCisJc3Bp bl9sb2NrX2lycXNhdmUoJnByaXYtPndtaS0+d21pX2xvY2ssIGZsYWdzKTsKKwlpZiAocHJpdi0+ d21pLT5iZWFjb25fcGVuZGluZyAhPSAwKSB7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBy aXYtPndtaS0+d21pX2xvY2ssIGZsYWdzKTsKKwkJcHJpdi0+Y3VyX2JlYWNvbl9jb25mLmJtaXNz X2NudCsrOworCQlpZiAocHJpdi0+Y3VyX2JlYWNvbl9jb25mLmJtaXNzX2NudCA+IEJTVFVDS19U SFJFU0hPTEQpIHsKKwkJCWF0aF9kYmcoY29tbW9uLCBBVEhfREJHX0JFQUNPTiwKKwkJCQkiQmVh Y29uIHN0dWNrLCBIVyByZXNldFxuIik7CisJCQlhdGg5a19odGNfcmVzZXQocHJpdik7CisJCX0K KwkJcmV0dXJuOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwcml2LT53bWktPndtaV9s b2NrLCBmbGFncyk7CisKKwlpZiAocHJpdi0+Y3VyX2JlYWNvbl9jb25mLmJtaXNzX2NudCkgewor CQlhdGhfZGJnKGNvbW1vbiwgQVRIX0RCR19CRUFDT04sCisJCQkiUmVzdW1pbmcgYmVhY29uIHht aXQgYWZ0ZXIgJXUgbWlzc2VzXG4iLAorCQkJcHJpdi0+Y3VyX2JlYWNvbl9jb25mLmJtaXNzX2Nu dCk7CisJCXByaXYtPmN1cl9iZWFjb25fY29uZi5ibWlzc19jbnQgPSAwOworCX0KKworCXNsb3Qg PSBhdGg5a19odGNfY2hvb3NlX2JzbG90KHByaXYpOworCXNwaW5fbG9ja19iaCgmcHJpdi0+YmVh Y29uX2xvY2spOworCWlmIChwcml2LT5jdXJfYmVhY29uX2NvbmYuYnNsb3Rbc2xvdF0gPT0gTlVM TCkgeworCQlzcGluX3VubG9ja19iaCgmcHJpdi0+YmVhY29uX2xvY2spOworCQlyZXR1cm47CisJ fQorCXNwaW5fdW5sb2NrX2JoKCZwcml2LT5iZWFjb25fbG9jayk7CisKKwlhdGg5a19odGNfc2Vu ZF9iZWFjb24ocHJpdiwgc2xvdCk7Cit9CisKIC8qIEN1cnJlbnRseSwgb25seSBmb3IgSUJTUyAq Lwogdm9pZCBhdGg5a19odGNfYmVhY29ucV9jb25maWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpw cml2KQogewpAQCAtMzEwLDYgKzM3NCw0MiBAQCB2b2lkIGF0aDlrX2h0Y19iZWFjb25xX2NvbmZp ZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCiAJfQogfQogCit2b2lkIGF0aDlrX2h0Y19h c3NpZ25fYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAorCQkJICAgIHN0cnVjdCBp ZWVlODAyMTFfdmlmICp2aWYpCit7CisJc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlr X2h3X2NvbW1vbihwcml2LT5haCk7CisJc3RydWN0IGF0aDlrX2h0Y192aWYgKmF2cCA9IChzdHJ1 Y3QgYXRoOWtfaHRjX3ZpZiAqKXZpZi0+ZHJ2X3ByaXY7CisJaW50IGkgPSAwOworCisJc3Bpbl9s b2NrX2JoKCZwcml2LT5iZWFjb25fbG9jayk7CisJZm9yIChpID0gMDsgaSA8IEFUSDlLX0hUQ19N QVhfQkNOX1ZJRjsgaSsrKSB7CisJCWlmIChwcml2LT5jdXJfYmVhY29uX2NvbmYuYnNsb3RbaV0g PT0gTlVMTCkgeworCQkJYXZwLT5ic2xvdCA9IGk7CisJCQlicmVhazsKKwkJfQorCX0KKworCXBy aXYtPmN1cl9iZWFjb25fY29uZi5ic2xvdFthdnAtPmJzbG90XSA9IHZpZjsKKwlzcGluX3VubG9j a19iaCgmcHJpdi0+YmVhY29uX2xvY2spOworCisJYXRoX2RiZyhjb21tb24sIEFUSF9EQkdfQ09O RklHLAorCQkiQWRkZWQgaW50ZXJmYWNlIGF0IGJlYWNvbiBzbG90OiAlZFxuIiwgYXZwLT5ic2xv dCk7Cit9CisKK3ZvaWQgYXRoOWtfaHRjX3JlbW92ZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3By aXYgKnByaXYsCisJCQkgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZikKK3sKKwlzdHJ1Y3Qg YXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHByaXYtPmFoKTsKKwlzdHJ1Y3Qg YXRoOWtfaHRjX3ZpZiAqYXZwID0gKHN0cnVjdCBhdGg5a19odGNfdmlmICopdmlmLT5kcnZfcHJp djsKKworCXNwaW5fbG9ja19iaCgmcHJpdi0+YmVhY29uX2xvY2spOworCXByaXYtPmN1cl9iZWFj b25fY29uZi5ic2xvdFthdnAtPmJzbG90XSA9IE5VTEw7CisJc3Bpbl91bmxvY2tfYmgoJnByaXYt PmJlYWNvbl9sb2NrKTsKKworCWF0aF9kYmcoY29tbW9uLCBBVEhfREJHX0NPTkZJRywKKwkJIlJl bW92ZWQgaW50ZXJmYWNlIGF0IGJlYWNvbiBzbG90OiAlZFxuIiwgYXZwLT5ic2xvdCk7Cit9CisK IHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19iZWFjb25faXRlcih2b2lkICpkYXRhLCB1OCAqbWFjLCBz dHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKQogewogCWJvb2wgKmJlYWNvbl9jb25maWd1cmVkID0g KGJvb2wgKilkYXRhOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L2h0Y19kcnZfaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZf aW5pdC5jCmluZGV4IGZjNjdjOTMuLmVjNGUyZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMKQEAgLTY0Niw3ICs2NDYsNyBAQCBzdGF0aWMgaW50 IGF0aDlrX2luaXRfcHJpdihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiB7CiAJc3RydWN0 IGF0aF9odyAqYWggPSBOVUxMOwogCXN0cnVjdCBhdGhfY29tbW9uICpjb21tb247Ci0JaW50IHJl dCA9IDAsIGNzeiA9IDA7CisJaW50IGksIHJldCA9IDAsIGNzeiA9IDA7CiAKIAlwcml2LT5vcF9m bGFncyB8PSBPUF9JTlZBTElEOwogCkBAIC03MDgsNiArNzA4LDkgQEAgc3RhdGljIGludCBhdGg5 a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCWlmIChyZXQpCiAJCWdv dG8gZXJyX3F1ZXVlczsKIAorCWZvciAoaSA9IDA7IGkgPCBBVEg5S19IVENfTUFYX0JDTl9WSUY7 IGkrKykKKwkJcHJpdi0+Y3VyX2JlYWNvbl9jb25mLmJzbG90W2ldID0gTlVMTDsKKwogCWF0aDlr X2luaXRfY3J5cHRvKHByaXYpOwogCWF0aDlrX2luaXRfY2hhbm5lbHNfcmF0ZXMocHJpdik7CiAJ YXRoOWtfaW5pdF9taXNjKHByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L2h0Y19kcnZfbWFpbi5jCmluZGV4IGRiOGMwYzAuLjI5M2E5YjMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYworKysgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMKQEAgLTEyODEsOSArMTI4MSwxMyBA QCBzdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcg Kmh3LAogCiAJcHJpdi0+dmlmX3Nsb3QgfD0gKDEgPDwgYXZwLT5pbmRleCk7CiAJcHJpdi0+bnZp ZnMrKzsKLQlwcml2LT52aWYgPSB2aWY7CiAKIAlJTkNfVklGKHByaXYsIHZpZi0+dHlwZSk7CisK KwlpZiAoKHZpZi0+dHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkgfHwKKwkgICAgKHZpZi0+dHlw ZSA9PSBOTDgwMjExX0lGVFlQRV9BREhPQykpCisJCWF0aDlrX2h0Y19hc3NpZ25fYnNsb3QocHJp diwgdmlmKTsKKwogCWF0aDlrX2h0Y19zZXRfb3Btb2RlKHByaXYpOwogCiAJaWYgKChwcml2LT5h aC0+b3Btb2RlID09IE5MODAyMTFfSUZUWVBFX0FQKSAmJgpAQCAtMTMyMSw5ICsxMzI1LDEzIEBA IHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFf aHcgKmh3LAogCXByaXYtPnZpZl9zbG90ICY9IH4oMSA8PCBhdnAtPmluZGV4KTsKIAogCWF0aDlr X2h0Y19yZW1vdmVfc3RhdGlvbihwcml2LCB2aWYsIE5VTEwpOwotCXByaXYtPnZpZiA9IE5VTEw7 CiAKIAlERUNfVklGKHByaXYsIHZpZi0+dHlwZSk7CisKKwlpZiAoKHZpZi0+dHlwZSA9PSBOTDgw MjExX0lGVFlQRV9BUCkgfHwKKwkgICAgKHZpZi0+dHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BREhP QykpCisJCWF0aDlrX2h0Y19yZW1vdmVfYnNsb3QocHJpdiwgdmlmKTsKKwogCWF0aDlrX2h0Y19z ZXRfb3Btb2RlKHByaXYpOwogCiAJLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGg5ay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYwpp bmRleCA1YzM2YzY2Li43NjgxOTRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvd21pLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5j CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBhdGg5a19zd2JhX3Rhc2tsZXQodW5zaWduZWQgbG9u ZyBkYXRhKQogewogCXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IChzdHJ1Y3QgYXRoOWtf aHRjX3ByaXYgKilkYXRhOwogCi0JYXRoOWtfaHRjX3N3YmEocHJpdiwgcHJpdi0+d21pLT5iZWFj b25fcGVuZGluZyk7CisJYXRoOWtfaHRjX3N3YmEocHJpdik7CiB9CiAKIHZvaWQgYXRoOWtfZmF0 YWxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCkBAIC0xNzEsOCArMTcxLDEwIEBAIHN0 YXRpYyB2b2lkIGF0aDlrX3dtaV9jdHJsX3J4KHZvaWQgKnByaXYsIHN0cnVjdCBza19idWZmICpz a2IsCiAJCWNhc2UgV01JX1NXQkFfRVZFTlRJRDoKIAkJCXN3YmEgPSAoc3RydWN0IHdtaV9ldmVu dF9zd2JhICopIHdtaV9ldmVudDsKIAorCQkJc3Bpbl9sb2NrKCZ3bWktPndtaV9sb2NrKTsKIAkJ CXdtaS0+dHNmID0gYmU2NF90b19jcHUoc3diYS0+dHNmKTsKIAkJCXdtaS0+YmVhY29uX3BlbmRp bmcgPSBzd2JhLT5iZWFjb25fcGVuZGluZzsKKwkJCXNwaW5fdW5sb2NrKCZ3bWktPndtaV9sb2Nr KTsKIAogCQkJdGFza2xldF9zY2hlZHVsZSgmd21pLT5kcnZfcHJpdi0+c3diYV90YXNrbGV0KTsK IAkJCWJyZWFrOwotLSAKMS43LjQuMQoKCkZyb20gZTI0NTkxMjYyODQ0NjRmZDNjOThiN2M5YjQz YjVkYmE4OTUzZmZmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3VqaXRoIE1hbm9o YXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KRGF0ZTogVHVlLCAxMSBKYW4gMjAx MSAxNjo0MToyMSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMDMvMzRdIGF0aDlrX2h0YzogQWRkIFRT RiBhZGp1c3QgY2FwYWJpbGl0eQoKSW4gbXVsdGktaW50ZXJmYWNlIG1vZGUsIGJlYWNvbnMvcHJv YmUgcmVzcG9uc2VzIHRoYXQgYXJlCnNlbnQgb3V0IG11c3QgaGF2ZSB0aGVpciB0aW1lc3RhbXAg ZmllbGQgdXBkYXRlZC4gQ2FsY3VsYXRlCnRoZSBUU0YgYWRqdXN0bWVudCB2YWx1ZSBmb3IgZWFj aCBiZWFjb25pbmcgaW50ZXJmYWNlIGFuZCBzZXQgaXQKaW4gdGhlIGZyYW1lIHByb3Blcmx5LgoK U2lnbmVkLW9mZi1ieTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9z LmNvbT4KLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmggICAgICAgICAg ICB8ICAgIDMgKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNv bi5jIHwgICAzNiArKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jICAgfCAgICA1ICsrLQogZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jICAgfCAgIDEyICsrKysrKystCiA0IGZpbGVzIGNo YW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDlrL2h0Yy5oCmluZGV4IGY3ODk3ZTguLjRmODY1OTggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoOWsvaHRjLmgKQEAgLTI0NSw2ICsyNDUsNyBAQCBzdHJ1Y3QgYXRoOWtfaHRjX3Zp ZiB7CiAJdTE2IHNlcV9ubzsKIAlib29sIGJlYWNvbl9jb25maWd1cmVkOwogCWludCBic2xvdDsK KwlfX2xlNjQgdHNmYWRqdXN0OwogfTsKIAogc3RydWN0IGF0aDlrX3ZpZl9pdGVyX2RhdGEgewpA QCAtNDc3LDYgKzQ3OCw4IEBAIHZvaWQgYXRoOWtfaHRjX2Fzc2lnbl9ic2xvdChzdHJ1Y3QgYXRo OWtfaHRjX3ByaXYgKnByaXYsCiAJCQkgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZik7CiB2 b2lkIGF0aDlrX2h0Y19yZW1vdmVfYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAog CQkJICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpOwordm9pZCBhdGg5a19odGNfc2V0X3Rz ZmFkanVzdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCisJCQkgICAgIHN0cnVjdCBpZWVl ODAyMTFfdmlmICp2aWYpOwogdm9pZCBhdGg5a19odGNfYmVhY29ucV9jb25maWcoc3RydWN0IGF0 aDlrX2h0Y19wcml2ICpwcml2KTsKIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25maWcoc3RydWN0 IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCQkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlm KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2Jl YWNvbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMK aW5kZXggYjRmZjI0MC4uNTJiNjkwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2h0Y19kcnZfYmVhY29uLmMKQEAgLTIzOCw2ICsyMzgsNyBAQCBzdGF0aWMgdm9pZCBh dGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCXN0cnVj dCB0eF9iZWFjb25faGVhZGVyIGJlYWNvbl9oZHI7CiAJc3RydWN0IGF0aDlrX2h0Y190eF9jdGwg dHhfY3RsOwogCXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbzsKKwlzdHJ1Y3QgaWVlZTgw MjExX21nbXQgKm1nbXQ7CiAJc3RydWN0IHNrX2J1ZmYgKmJlYWNvbjsKIAl1OCAqdHhfZmhkcjsK IApAQCAtMjYxLDYgKzI2MiwxMyBAQCBzdGF0aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24o c3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCQlyZXR1cm47CiAJfQogCisJLyoKKwkgKiBV cGRhdGUgdGhlIFRTRiBhZGp1c3QgdmFsdWUgaGVyZSwgdGhlIEhXIHdpbGwKKwkgKiBhZGQgdGhp cyB2YWx1ZSBmb3IgZXZlcnkgYmVhY29uLgorCSAqLworCW1nbXQgPSAoc3RydWN0IGllZWU4MDIx MV9tZ210ICopYmVhY29uLT5kYXRhOworCW1nbXQtPnUuYmVhY29uLnRpbWVzdGFtcCA9IGF2cC0+ dHNmYWRqdXN0OworCiAJaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0IoYmVhY29uKTsKIAlpZiAoaW5m by0+ZmxhZ3MgJiBJRUVFODAyMTFfVFhfQ1RMX0FTU0lHTl9TRVEpIHsKIAkJc3RydWN0IGllZWU4 MDIxMV9oZHIgKmhkciA9CkBAIC00MTAsNiArNDE4LDM0IEBAIHZvaWQgYXRoOWtfaHRjX3JlbW92 ZV9ic2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJCSJSZW1vdmVkIGludGVyZmFj ZSBhdCBiZWFjb24gc2xvdDogJWRcbiIsIGF2cC0+YnNsb3QpOwogfQogCisvKgorICogQ2FsY3Vs YXRlIHRoZSBUU0YgYWRqdXN0bWVudCB2YWx1ZSBmb3IgYWxsIHNsb3RzCisgKiBvdGhlciB0aGFu IHplcm8uCisgKi8KK3ZvaWQgYXRoOWtfaHRjX3NldF90c2ZhZGp1c3Qoc3RydWN0IGF0aDlrX2h0 Y19wcml2ICpwcml2LAorCQkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKQoreworCXN0 cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24ocHJpdi0+YWgpOworCXN0 cnVjdCBhdGg5a19odGNfdmlmICphdnAgPSAoc3RydWN0IGF0aDlrX2h0Y192aWYgKil2aWYtPmRy dl9wcml2OworCXN0cnVjdCBodGNfYmVhY29uX2NvbmZpZyAqY3VyX2NvbmYgPSAmcHJpdi0+Y3Vy X2JlYWNvbl9jb25mOworCXU2NCB0c2ZhZGp1c3Q7CisKKwlpZiAoYXZwLT5ic2xvdCA9PSAwKQor CQlyZXR1cm47CisKKwkvKgorCSAqIFRoZSBiZWFjb24gaW50ZXJ2YWwgY2Fubm90IGJlIGRpZmZl cmVudCBmb3IgbXVsdGktQVAgbW9kZSwKKwkgKiBhbmQgd2UgcmVhY2ggaGVyZSBvbmx5IGZvciBW SUYgc2xvdHMgZ3JlYXRlciB0aGFuIHplcm8sCisJICogc28gYmVhY29uX2ludGVydmFsIGlzIGd1 YXJhbnRlZWQgdG8gYmUgc2V0IGluIGN1cl9jb25mLgorCSAqLworCXRzZmFkanVzdCA9IGN1cl9j b25mLT5iZWFjb25faW50ZXJ2YWwgKiBhdnAtPmJzbG90IC8gQVRIOUtfSFRDX01BWF9CQ05fVklG OworCWF2cC0+dHNmYWRqdXN0ID0gY3B1X3RvX2xlNjQoVFVfVE9fVVNFQyh0c2ZhZGp1c3QpKTsK KworCWF0aF9kYmcoY29tbW9uLCBBVEhfREJHX0NPTkZJRywKKwkJInRzZmFkanVzdCBpczogJWxs dSBmb3IgYnNsb3Q6ICVkXG4iLAorCQkodW5zaWduZWQgbG9uZyBsb25nKXRzZmFkanVzdCwgYXZw LT5ic2xvdCk7Cit9CisKIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19iZWFjb25faXRlcih2b2lkICpk YXRhLCB1OCAqbWFjLCBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKQogewogCWJvb2wgKmJlYWNv bl9jb25maWd1cmVkID0gKGJvb2wgKilkYXRhOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2h0Y19kcnZfbWFpbi5jCmluZGV4IDI5M2E5YjMuLjY5MjZhYzAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYworKysgYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMKQEAgLTEyOTEsOCArMTI5 MSwxMCBAQCBzdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAy MTFfaHcgKmh3LAogCWF0aDlrX2h0Y19zZXRfb3Btb2RlKHByaXYpOwogCiAJaWYgKChwcml2LT5h aC0+b3Btb2RlID09IE5MODAyMTFfSUZUWVBFX0FQKSAmJgotCSAgICAhKHByaXYtPm9wX2ZsYWdz ICYgT1BfQU5JX1JVTk5JTkcpKQorCSAgICAhKHByaXYtPm9wX2ZsYWdzICYgT1BfQU5JX1JVTk5J TkcpKSB7CisJCWF0aDlrX2h3X3NldF90c2ZhZGp1c3QocHJpdi0+YWgsIDEpOwogCQlhdGg5a19o dGNfc3RhcnRfYW5pKHByaXYpOworCX0KIAogCWF0aF9kYmcoY29tbW9uLCBBVEhfREJHX0NPTkZJ RywKIAkJIkF0dGFjaCBhIFZJRiBvZiB0eXBlOiAlZCBhdCBpZHg6ICVkXG4iLCB2aWYtPnR5cGUs IGF2cC0+aW5kZXgpOwpAQCAtMTY1Miw2ICsxNjU0LDcgQEAgc3RhdGljIHZvaWQgYXRoOWtfaHRj X2Jzc19pbmZvX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJaWYgKChjaGFuZ2Vk ICYgQlNTX0NIQU5HRURfQkVBQ09OX0VOQUJMRUQpICYmIGJzc19jb25mLT5lbmFibGVfYmVhY29u KSB7CiAJCWF0aF9kYmcoY29tbW9uLCBBVEhfREJHX0NPTkZJRywKIAkJCSJCZWFjb24gZW5hYmxl ZCBmb3IgQlNTOiAlcE1cbiIsIGJzc19jb25mLT5ic3NpZCk7CisJCWF0aDlrX2h0Y19zZXRfdHNm YWRqdXN0KHByaXYsIHZpZik7CiAJCXByaXYtPm9wX2ZsYWdzIHw9IE9QX0VOQUJMRV9CRUFDT047 CiAJCWF0aDlrX2h0Y19iZWFjb25fY29uZmlnKHByaXYsIHZpZik7CiAJfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCmluZGV4IDRhNGYyN2IuLmIzZjk0 ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4 cnguYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMK QEAgLTgyLDExICs4MiwxMiBAQCBpbnQgYXRoX2h0Y190eHFfdXBkYXRlKHN0cnVjdCBhdGg5a19o dGNfcHJpdiAqcHJpdiwgaW50IHFudW0sCiBpbnQgYXRoOWtfaHRjX3R4X3N0YXJ0KHN0cnVjdCBh dGg5a19odGNfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgaWVl ZTgwMjExX2hkciAqaGRyOworCXN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDsKIAlzdHJ1Y3Qg aWVlZTgwMjExX3R4X2luZm8gKnR4X2luZm8gPSBJRUVFODAyMTFfU0tCX0NCKHNrYik7CiAJc3Ry dWN0IGllZWU4MDIxMV9zdGEgKnN0YSA9IHR4X2luZm8tPmNvbnRyb2wuc3RhOwogCXN0cnVjdCBp ZWVlODAyMTFfdmlmICp2aWYgPSB0eF9pbmZvLT5jb250cm9sLnZpZjsKIAlzdHJ1Y3QgYXRoOWtf aHRjX3N0YSAqaXN0YTsKLQlzdHJ1Y3QgYXRoOWtfaHRjX3ZpZiAqYXZwOworCXN0cnVjdCBhdGg5 a19odGNfdmlmICphdnAgPSBOVUxMOwogCXN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHR4X2N0bDsK IAllbnVtIGh0Y19lbmRwb2ludF9pZCBlcGlkOwogCXUxNiBxbnVtOwpAQCAtMTk1LDYgKzE5Niwx NSBAQCBpbnQgYXRoOWtfaHRjX3R4X3N0YXJ0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwg c3RydWN0IHNrX2J1ZmYgKnNrYikKIAogCQltZW1zZXQoJm1nbXRfaGRyLCAwLCBzaXplb2Yoc3Ry dWN0IHR4X21nbXRfaGRyKSk7CiAKKwkJLyoKKwkJICogU2V0IHRoZSBUU0YgYWRqdXN0IHZhbHVl IGZvciBwcm9iZSByZXNwb25zZQorCQkgKiBmcmFtZSBhbHNvLgorCQkgKi8KKwkJaWYgKGF2cCAm JiB1bmxpa2VseShpZWVlODAyMTFfaXNfcHJvYmVfcmVzcChmYykpKSB7CisJCQltZ210ID0gKHN0 cnVjdCBpZWVlODAyMTFfbWdtdCAqKXNrYi0+ZGF0YTsKKwkJCW1nbXQtPnUucHJvYmVfcmVzcC50 aW1lc3RhbXAgPSBhdnAtPnRzZmFkanVzdDsKKwkJfQorCiAJCXR4X2N0bC50eXBlID0gQVRIOUtf SFRDX05PUk1BTDsKIAogCQltZ210X2hkci5ub2RlX2lkeCA9IHN0YV9pZHg7Ci0tIAoxLjcuNC4x CgoKRnJvbSA1MDQ5MTQ1NjFjZTk1MTFkMzZkNjAzNzRmYTJmMjUxYThjN2RmYWY3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hhcmFu QGF0aGVyb3MuY29tPgpEYXRlOiBUdWUsIDExIEphbiAyMDExIDIxOjQ4OjE1ICswNTMwClN1Ympl Y3Q6IFtQQVRDSCAwNC8zNF0gYXRoOWtfaHRjOiBDb25maWd1cmUgdGhlIGJlYWNvbiBxdWV1ZQoK U2V0IG9wZXJhdGluZyBwYXJhbWV0ZXJzIChjd21pbiwgY3dtYXgpIGZvciB0aGUgYmVhY29uIHF1 ZXVlCmluIEFQIG1vZGUuCgpTaWduZWQtb2ZmLWJ5OiBTdWppdGggTWFub2hhcmFuIDxTdWppdGgu TWFub2hhcmFuQGF0aGVyb3MuY29tPgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGNfZHJ2X2JlYWNvbi5jIHwgICA3NyArKysrKysrKysrKysrKy0tLS0tLS0tLQogMSBmaWxl cyBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jCmluZGV4IDUyYjY5MDcu LjVmMTU4OTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNf ZHJ2X2JlYWNvbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2 X2JlYWNvbi5jCkBAIC0xOCw2ICsxOCw1MCBAQAogCiAjZGVmaW5lIEZVREdFIDIKIAordm9pZCBh dGg5a19odGNfYmVhY29ucV9jb25maWcoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KQorewor CXN0cnVjdCBhdGhfaHcgKmFoID0gcHJpdi0+YWg7CisJc3RydWN0IGF0aDlrX3R4X3F1ZXVlX2lu Zm8gcWksIHFpX2JlOworCisJbWVtc2V0KCZxaSwgMCwgc2l6ZW9mKHN0cnVjdCBhdGg5a190eF9x dWV1ZV9pbmZvKSk7CisJbWVtc2V0KCZxaV9iZSwgMCwgc2l6ZW9mKHN0cnVjdCBhdGg5a190eF9x dWV1ZV9pbmZvKSk7CisKKwlhdGg5a19od19nZXRfdHhxX3Byb3BzKGFoLCBwcml2LT5iZWFjb25x LCAmcWkpOworCisJaWYgKHByaXYtPmFoLT5vcG1vZGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApIHsK KwkJcWkudHFpX2FpZnMgPSAxOworCQlxaS50cWlfY3dtaW4gPSAwOworCQlxaS50cWlfY3dtYXgg PSAwOworCX0gZWxzZSBpZiAocHJpdi0+YWgtPm9wbW9kZSA9PSBOTDgwMjExX0lGVFlQRV9BREhP QykgeworCQlpbnQgcW51bSA9IHByaXYtPmh3cV9tYXBbV01FX0FDX0JFXTsKKworCQlhdGg5a19o d19nZXRfdHhxX3Byb3BzKGFoLCBxbnVtLCAmcWlfYmUpOworCisJCXFpLnRxaV9haWZzID0gcWlf YmUudHFpX2FpZnM7CisKKwkJLyoKKwkJICogRm9yIFdJRkkgQmVhY29uIERpc3RyaWJ1dGlvbgor CQkgKiBMb25nIHNsb3QgdGltZSAgOiAyeCBjd21pbgorCQkgKiBTaG9ydCBzbG90IHRpbWUgOiA0 eCBjd21pbgorCQkgKi8KKwkJaWYgKGFoLT5zbG90dGltZSA9PSBBVEg5S19TTE9UX1RJTUVfMjAp CisJCQlxaS50cWlfY3dtaW4gPSAyKnFpX2JlLnRxaV9jd21pbjsKKwkJZWxzZQorCQkJcWkudHFp X2N3bWluID0gNCpxaV9iZS50cWlfY3dtaW47CisKKwkJcWkudHFpX2N3bWF4ID0gcWlfYmUudHFp X2N3bWF4OworCisJfQorCisJaWYgKCFhdGg5a19od19zZXRfdHhxX3Byb3BzKGFoLCBwcml2LT5i ZWFjb25xLCAmcWkpKSB7CisJCWF0aF9lcnIoYXRoOWtfaHdfY29tbW9uKGFoKSwKKwkJCSJVbmFi bGUgdG8gdXBkYXRlIGJlYWNvbiBxdWV1ZSAldSFcbiIsIHByaXYtPmJlYWNvbnEpOworCX0gZWxz ZSB7CisJCWF0aDlrX2h3X3Jlc2V0dHhxdWV1ZShhaCwgcHJpdi0+YmVhY29ucSk7CisJfQorfQor CisKIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19iZWFjb25fY29uZmlnX3N0YShzdHJ1Y3QgYXRoOWtf aHRjX3ByaXYgKnByaXYsCiAJCQkJCXN0cnVjdCBodGNfYmVhY29uX2NvbmZpZyAqYnNzX2NvbmYp CiB7CkBAIC0xNzksNiArMjIzLDggQEAgc3RhdGljIHZvaWQgYXRoOWtfaHRjX2JlYWNvbl9jb25m aWdfYXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCQlic3NfY29uZi0+YmVhY29uX2lu dGVydmFsLCBuZXh0dGJ0dCwgaW1hc2ssCiAJCSEhKGludHZhbCAmIEFUSDlLX0JFQUNPTl9SRVNF VF9UU0YpKTsKIAorCWF0aDlrX2h0Y19iZWFjb25xX2NvbmZpZyhwcml2KTsKKwogCVdNSV9DTUQo V01JX0RJU0FCTEVfSU5UUl9DTURJRCk7CiAJYXRoOWtfaHdfYmVhY29uaW5pdChwcml2LT5haCwg bmV4dHRidHQsIGludHZhbCk7CiAJcHJpdi0+Y3VyX2JlYWNvbl9jb25mLmJtaXNzX2NudCA9IDA7 CkBAIC0zNTEsMzcgKzM5Nyw2IEBAIHZvaWQgYXRoOWtfaHRjX3N3YmEoc3RydWN0IGF0aDlrX2h0 Y19wcml2ICpwcml2KQogCWF0aDlrX2h0Y19zZW5kX2JlYWNvbihwcml2LCBzbG90KTsKIH0KIAot LyogQ3VycmVudGx5LCBvbmx5IGZvciBJQlNTICovCi12b2lkIGF0aDlrX2h0Y19iZWFjb25xX2Nv bmZpZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCi17Ci0Jc3RydWN0IGF0aF9odyAqYWgg PSBwcml2LT5haDsKLQlzdHJ1Y3QgYXRoOWtfdHhfcXVldWVfaW5mbyBxaSwgcWlfYmU7Ci0JaW50 IHFudW0gPSBwcml2LT5od3FfbWFwW1dNRV9BQ19CRV07Ci0KLQltZW1zZXQoJnFpLCAwLCBzaXpl b2Yoc3RydWN0IGF0aDlrX3R4X3F1ZXVlX2luZm8pKTsKLQltZW1zZXQoJnFpX2JlLCAwLCBzaXpl b2Yoc3RydWN0IGF0aDlrX3R4X3F1ZXVlX2luZm8pKTsKLQotCWF0aDlrX2h3X2dldF90eHFfcHJv cHMoYWgsIHFudW0sICZxaV9iZSk7Ci0KLQlxaS50cWlfYWlmcyA9IHFpX2JlLnRxaV9haWZzOwot CS8qIEZvciBXSUZJIEJlYWNvbiBEaXN0cmlidXRpb24KLQkgKiBMb25nIHNsb3QgdGltZSAgOiAy eCBjd21pbgotCSAqIFNob3J0IHNsb3QgdGltZSA6IDR4IGN3bWluCi0JICovCi0JaWYgKGFoLT5z bG90dGltZSA9PSBBVEg5S19TTE9UX1RJTUVfMjApCi0JCXFpLnRxaV9jd21pbiA9IDIqcWlfYmUu dHFpX2N3bWluOwotCWVsc2UKLQkJcWkudHFpX2N3bWluID0gNCpxaV9iZS50cWlfY3dtaW47Ci0J cWkudHFpX2N3bWF4ID0gcWlfYmUudHFpX2N3bWF4OwotCi0JaWYgKCFhdGg5a19od19zZXRfdHhx X3Byb3BzKGFoLCBwcml2LT5iZWFjb25xLCAmcWkpKSB7Ci0JCWF0aF9lcnIoYXRoOWtfaHdfY29t bW9uKGFoKSwKLQkJCSJVbmFibGUgdG8gdXBkYXRlIGJlYWNvbiBxdWV1ZSAldSFcbiIsIHFudW0p OwotCX0gZWxzZSB7Ci0JCWF0aDlrX2h3X3Jlc2V0dHhxdWV1ZShhaCwgcHJpdi0+YmVhY29ucSk7 Ci0JfQotfQotCiB2b2lkIGF0aDlrX2h0Y19hc3NpZ25fYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19w cml2ICpwcml2LAogCQkJICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpCiB7Ci0tIAoxLjcu NC4xCgoKRnJvbSA3OTA0M2Y1NGQyYTA1MTQ5NGRjM2MyNDRlNTQ2MWVjMDdkMTkwOGRmIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hh cmFuQGF0aGVyb3MuY29tPgpEYXRlOiBXZWQsIDEyIEphbiAyMDExIDEzOjA1OjU1ICswNTMwClN1 YmplY3Q6IFtQQVRDSCAwNS8zNF0gYXRoOWtfaHRjOiBIYW5kbGUgYnVmZmVyZWQgZnJhbWVzIGlu IEFQIG1vZGUKClVzZSB0aGUgQ0FCIGVuZHBvaW50IHRvIHNlbmQgYnVmZmVyZWQgbXVsdGljYXN0 IG9yCmJyb2FkY2FzdCBmcmFtZXMgYWZ0ZXIgZWFjaCBTV0JBIGV2ZW50LgoKU2lnbmVkLW9mZi1i eTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KLS0tCiBk cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmggICAgICAgICAgICB8ICAgIDYgKysr LQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMgfCAgIDQz ICsrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv aHRjX2Rydl9pbml0LmMgICB8ICAgIDMgKy0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGNfZHJ2X21haW4uYyAgIHwgICAgNSArKy0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGg5ay9odGNfZHJ2X3R4cnguYyAgIHwgICAxNCArKysrKystLQogNSBmaWxlcyBjaGFuZ2VkLCA2 NSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGMuaAppbmRleCA0Zjg2NTk4Li5mZmMxOWU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDlrL2h0Yy5oCkBAIC0yOTIsNiArMjkyLDcgQEAgc3RydWN0IGF0aDlrX2h0Y190eF9jdGwgewog CiAjZGVmaW5lIFRYX1NUQVRfSU5DKGMpIChoaWZfZGV2LT5odGNfaGFuZGxlLT5kcnZfcHJpdi0+ ZGVidWcudHhfc3RhdHMuYysrKQogI2RlZmluZSBSWF9TVEFUX0lOQyhjKSAoaGlmX2Rldi0+aHRj X2hhbmRsZS0+ZHJ2X3ByaXYtPmRlYnVnLnJ4X3N0YXRzLmMrKykKKyNkZWZpbmUgQ0FCX1NUQVRf SU5DICAgcHJpdi0+ZGVidWcudHhfc3RhdHMuY2FiX3F1ZXVlZCsrCiAKICNkZWZpbmUgVFhfUVNU QVRfSU5DKHEpIChwcml2LT5kZWJ1Zy50eF9zdGF0cy5xdWV1ZV9zdGF0c1txXSsrKQogCkBAIC0z MDEsNiArMzAyLDcgQEAgc3RydWN0IGF0aF90eF9zdGF0cyB7CiAJdTMyIHNrYl9xdWV1ZWQ7CiAJ dTMyIHNrYl9jb21wbGV0ZWQ7CiAJdTMyIHNrYl9kcm9wcGVkOworCXUzMiBjYWJfcXVldWVkOwog CXUzMiBxdWV1ZV9zdGF0c1tXTUVfTlVNX0FDXTsKIH07CiAKQEAgLTMyNCw2ICszMjYsNyBAQCBz dHJ1Y3QgYXRoOWtfZGVidWcgewogCiAjZGVmaW5lIFRYX1NUQVRfSU5DKGMpIGRvIHsgfSB3aGls ZSAoMCkKICNkZWZpbmUgUlhfU1RBVF9JTkMoYykgZG8geyB9IHdoaWxlICgwKQorI2RlZmluZSBD QUJfU1RBVF9JTkMgICBkbyB7IH0gd2hpbGUgKDApCiAKICNkZWZpbmUgVFhfUVNUQVRfSU5DKGMp IGRvIHsgfSB3aGlsZSAoMCkKIApAQCAtNTAyLDcgKzUwNSw4IEBAIHZvaWQgYXRoOWtfaHRjX3N0 b3BfYW5pKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7CiAKIGludCBhdGg5a190eF9pbml0 KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7CiB2b2lkIGF0aDlrX3R4X3Rhc2tsZXQodW5z aWduZWQgbG9uZyBkYXRhKTsKLWludCBhdGg5a19odGNfdHhfc3RhcnQoc3RydWN0IGF0aDlrX2h0 Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKK2ludCBhdGg5a19odGNfdHhfc3Rh cnQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAorCQkgICAgICAgc3RydWN0IHNrX2J1ZmYg KnNrYiwgYm9vbCBpc19jYWIpOwogdm9pZCBhdGg5a190eF9jbGVhbnVwKHN0cnVjdCBhdGg5a19o dGNfcHJpdiAqcHJpdik7CiBib29sIGF0aDlrX2h0Y190eHFfc2V0dXAoc3RydWN0IGF0aDlrX2h0 Y19wcml2ICpwcml2LCBpbnQgc3VidHlwZSk7CiBpbnQgYXRoOWtfaHRjX2NhYnFfc2V0dXAoc3Ry dWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2h0Y19kcnZfYmVhY29uLmMKaW5kZXggNWYxNTg5Ni4uZjU5NzZlMyAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMKKysrIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMKQEAgLTI3Niw2 ICsyNzYsNDggQEAgdm9pZCBhdGg5a19odGNfYmVhY29uZXAodm9pZCAqZHJ2X3ByaXYsIHN0cnVj dCBza19idWZmICpza2IsCiAJZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsKIH0KIAorc3RhdGljIHZv aWQgYXRoOWtfaHRjX3NlbmRfYnVmZmVyZWQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAor CQkJCSAgICBpbnQgc2xvdCkKK3sKKwlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtf aHdfY29tbW9uKHByaXYtPmFoKTsKKwlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmOworCXN0cnVj dCBza19idWZmICpza2I7CisJc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcjsKKwlpbnQgcGFkcG9z LCBwYWRzaXplLCByZXQ7CisKKwlzcGluX2xvY2tfYmgoJnByaXYtPmJlYWNvbl9sb2NrKTsKKwor CXZpZiA9IHByaXYtPmN1cl9iZWFjb25fY29uZi5ic2xvdFtzbG90XTsKKworCXNrYiA9IGllZWU4 MDIxMV9nZXRfYnVmZmVyZWRfYmMocHJpdi0+aHcsIHZpZik7CisKKwl3aGlsZShza2IpIHsKKwkJ aGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopIHNrYi0+ZGF0YTsKKworCQlwYWRwb3MgPSBh dGg5a19jbW5fcGFkcG9zKGhkci0+ZnJhbWVfY29udHJvbCk7CisJCXBhZHNpemUgPSBwYWRwb3Mg JiAzOworCQlpZiAocGFkc2l6ZSAmJiBza2ItPmxlbiA+IHBhZHBvcykgeworCQkJaWYgKHNrYl9o ZWFkcm9vbShza2IpIDwgcGFkc2l6ZSkgeworCQkJCWRldl9rZnJlZV9za2JfYW55KHNrYik7CisJ CQkJZ290byBuZXh0OworCQkJfQorCQkJc2tiX3B1c2goc2tiLCBwYWRzaXplKTsKKwkJCW1lbW1v dmUoc2tiLT5kYXRhLCBza2ItPmRhdGEgKyBwYWRzaXplLCBwYWRwb3MpOworCQl9CisKKwkJcmV0 ID0gYXRoOWtfaHRjX3R4X3N0YXJ0KHByaXYsIHNrYiwgdHJ1ZSk7CisJCWlmIChyZXQgIT0gMCkg eworCQkJYXRoX2RiZyhjb21tb24sIEFUSF9EQkdfRkFUQUwsCisJCQkJIkZhaWxlZCB0byBzZW5k IENBQiBmcmFtZVxuIik7CisJCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOworCQl9CisJbmV4dDoK KwkJc2tiID0gaWVlZTgwMjExX2dldF9idWZmZXJlZF9iYyhwcml2LT5odywgdmlmKTsKKwl9CisK KwlzcGluX3VubG9ja19iaCgmcHJpdi0+YmVhY29uX2xvY2spOworfQorCiBzdGF0aWMgdm9pZCBh dGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCQkJCSAg aW50IHNsb3QpCiB7CkBAIC0zOTQsNiArNDM2LDcgQEAgdm9pZCBhdGg5a19odGNfc3diYShzdHJ1 Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCiAJfQogCXNwaW5fdW5sb2NrX2JoKCZwcml2LT5iZWFj b25fbG9jayk7CiAKKwlhdGg5a19odGNfc2VuZF9idWZmZXJlZChwcml2LCBzbG90KTsKIAlhdGg5 a19odGNfc2VuZF9iZWFjb24ocHJpdiwgc2xvdCk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYwppbmRleCBlYzRlMmQ3Li4xOWFhMjZjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMKKysr IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jCkBAIC03NDUs NyArNzQ1LDggQEAgc3RhdGljIHZvaWQgYXRoOWtfc2V0X2h3X2NhcGFiKHN0cnVjdCBhdGg5a19o dGNfcHJpdiAqcHJpdiwKIAkJSUVFRTgwMjExX0hXX0hBU19SQVRFX0NPTlRST0wgfAogCQlJRUVF ODAyMTFfSFdfUlhfSU5DTFVERVNfRkNTIHwKIAkJSUVFRTgwMjExX0hXX1NVUFBPUlRTX1BTIHwK LQkJSUVFRTgwMjExX0hXX1BTX05VTExGVU5DX1NUQUNLOworCQlJRUVFODAyMTFfSFdfUFNfTlVM TEZVTkNfU1RBQ0sgfAorCQlJRUVFODAyMTFfSFdfSE9TVF9CUk9BRENBU1RfUFNfQlVGRkVSSU5H OwogCiAJaHctPndpcGh5LT5pbnRlcmZhY2VfbW9kZXMgPQogCQlCSVQoTkw4MDIxMV9JRlRZUEVf U1RBVElPTikgfApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0 Y19kcnZfbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFp bi5jCmluZGV4IDY5MjZhYzAuLjhmMzgwNzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaHRjX2Rydl9tYWluLmMKQEAgLTc5Nyw2ICs3OTcsOSBAQCBzdGF0aWMgc3NpemVf dCByZWFkX2ZpbGVfeG1pdChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVm LAogCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIHNpemVvZihidWYpIC0gbGVuLAogCQkJIiUy MHMgOiAlMTB1XG4iLCAiU0tCcyBkcm9wcGVkIiwKIAkJCXByaXYtPmRlYnVnLnR4X3N0YXRzLnNr Yl9kcm9wcGVkKTsKKwlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxl biwKKwkJCSIlMjBzIDogJTEwdVxuIiwgIkNBQiBxdWV1ZWQiLAorCQkJcHJpdi0+ZGVidWcudHhf c3RhdHMuY2FiX3F1ZXVlZCk7CiAKIAlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2Yo YnVmKSAtIGxlbiwKIAkJCSIlMjBzIDogJTEwdVxuIiwgIkJFIHF1ZXVlZCIsCkBAIC0xMDU0LDcg KzEwNTcsNyBAQCBzdGF0aWMgdm9pZCBhdGg5a19odGNfdHgoc3RydWN0IGllZWU4MDIxMV9odyAq aHcsIHN0cnVjdCBza19idWZmICpza2IpCiAJCW1lbW1vdmUoc2tiLT5kYXRhLCBza2ItPmRhdGEg KyBwYWRzaXplLCBwYWRwb3MpOwogCX0KIAotCXJldCA9IGF0aDlrX2h0Y190eF9zdGFydChwcml2 LCBza2IpOworCXJldCA9IGF0aDlrX2h0Y190eF9zdGFydChwcml2LCBza2IsIGZhbHNlKTsKIAlp ZiAocmV0ICE9IDApIHsKIAkJaWYgKHJldCA9PSAtRU5PTUVNKSB7CiAJCQlhdGhfZGJnKGF0aDlr X2h3X2NvbW1vbihwcml2LT5haCksIEFUSF9EQkdfWE1JVCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYwppbmRleCBiM2Y5NDg1Li4wZTI4NTU4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKKysr IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCkBAIC03OSw3 ICs3OSw4IEBAIGludCBhdGhfaHRjX3R4cV91cGRhdGUoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpw cml2LCBpbnQgcW51bSwKIAlyZXR1cm4gZXJyb3I7CiB9CiAKLWludCBhdGg5a19odGNfdHhfc3Rh cnQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoraW50 IGF0aDlrX2h0Y190eF9zdGFydChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCisJCSAgICAg ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBib29sIGlzX2NhYikKIHsKIAlzdHJ1Y3QgaWVlZTgwMjEx X2hkciAqaGRyOwogCXN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDsKQEAgLTE3MCw2ICsxNzEs MTIgQEAgaW50IGF0aDlrX2h0Y190eF9zdGFydChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYs IHN0cnVjdCBza19idWZmICpza2IpCiAJCXR4X2ZoZHIgPSBza2JfcHVzaChza2IsIHNpemVvZih0 eF9oZHIpKTsKIAkJbWVtY3B5KHR4X2ZoZHIsICh1OCAqKSAmdHhfaGRyLCBzaXplb2YodHhfaGRy KSk7CiAKKwkJaWYgKGlzX2NhYikgeworCQkJQ0FCX1NUQVRfSU5DOworCQkJZXBpZCA9IHByaXYt PmNhYl9lcDsKKwkJCWdvdG8gc2VuZDsKKwkJfQorCiAJCXFudW0gPSBza2JfZ2V0X3F1ZXVlX21h cHBpbmcoc2tiKTsKIAogCQlzd2l0Y2ggKHFudW0pIHsKQEAgLTIyMiw3ICsyMjksNyBAQCBpbnQg YXRoOWtfaHRjX3R4X3N0YXJ0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgc3RydWN0IHNr X2J1ZmYgKnNrYikKIAkJbWVtY3B5KHR4X2ZoZHIsICh1OCAqKSAmbWdtdF9oZHIsIHNpemVvZiht Z210X2hkcikpOwogCQllcGlkID0gcHJpdi0+bWdtdF9lcDsKIAl9Ci0KK3NlbmQ6CiAJcmV0dXJu IGh0Y19zZW5kKHByaXYtPmh0Yywgc2tiLCBlcGlkLCAmdHhfY3RsKTsKIH0KIApAQCAtMzI2LDcg KzMzMyw4IEBAIHZvaWQgYXRoOWtfaHRjX3R4ZXAodm9pZCAqZHJ2X3ByaXYsIHN0cnVjdCBza19i dWZmICpza2IsCiAJfSBlbHNlIGlmICgoZXBfaWQgPT0gcHJpdi0+ZGF0YV9ia19lcCkgfHwKIAkJ ICAgKGVwX2lkID09IHByaXYtPmRhdGFfYmVfZXApIHx8CiAJCSAgIChlcF9pZCA9PSBwcml2LT5k YXRhX3ZpX2VwKSB8fAotCQkgICAoZXBfaWQgPT0gcHJpdi0+ZGF0YV92b19lcCkpIHsKKwkJICAg KGVwX2lkID09IHByaXYtPmRhdGFfdm9fZXApIHx8CisJCSAgIChlcF9pZCA9PSBwcml2LT5jYWJf ZXApKSB7CiAJCXNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB0eF9mcmFtZV9oZHIpKTsKIAl9 IGVsc2UgewogCQlhdGhfZXJyKGNvbW1vbiwgIlVuc3VwcG9ydGVkIFRYIEVQSUQ6ICVkXG4iLCBl cF9pZCk7Ci0tIAoxLjcuNC4xCgoKRnJvbSA3NmEwMDMwN2E4YTg3MTczZmU3MzRiZmMwMGQ2MmY2 N2NhZWNlMzE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdWppdGggTWFub2hhcmFu IDxTdWppdGguTWFub2hhcmFuQGF0aGVyb3MuY29tPgpEYXRlOiBXZWQsIDEyIEphbiAyMDExIDEz OjA3OjMwICswNTMwClN1YmplY3Q6IFtQQVRDSCAwNi8zNF0gYXRoOWtfaHRjOiBFbmFibGUgQVAg bW9kZQoKU2lnbmVkLW9mZi1ieTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBh dGhlcm9zLmNvbT4KLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9p bml0LmMgfCAgICAzICsrLQogMSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0 Y19kcnZfaW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5p dC5jCmluZGV4IDE5YWEyNmMuLmYzYTJiNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaHRjX2Rydl9pbml0LmMKQEAgLTc1MCw3ICs3NTAsOCBAQCBzdGF0aWMgdm9pZCBh dGg5a19zZXRfaHdfY2FwYWIoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCiAJaHctPndp cGh5LT5pbnRlcmZhY2VfbW9kZXMgPQogCQlCSVQoTkw4MDIxMV9JRlRZUEVfU1RBVElPTikgfAot CQlCSVQoTkw4MDIxMV9JRlRZUEVfQURIT0MpOworCQlCSVQoTkw4MDIxMV9JRlRZUEVfQURIT0Mp IHwKKwkJQklUKE5MODAyMTFfSUZUWVBFX0FQKTsKIAogCWh3LT53aXBoeS0+ZmxhZ3MgJj0gfldJ UEhZX0ZMQUdfUFNfT05fQllfREVGQVVMVDsKIAotLSAKMS43LjQuMQoKCkZyb20gYzBiM2FjMDQ2 NDkyYjQ1M2IyMDdlYWJkNTYyMDY1OTNmOGZlODc4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KRGF0 ZTogVGh1LCAxMyBKYW4gMjAxMSAwODo0ODowNSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMDcvMzRd IGF0aDlrX2h0YzogRml4IGJlYWNvbiBtaXNzIHVuZGVyIGhlYXZ5IGxvYWQKClRyYW5zbWlzc2lv biBvZiBiZWFjb25zIGJlY29tZXMgZXJyYXRpYyB3aGVuIFRYIGxvYWQKaXMgaGlnaCwgc2luY2Ug dGhlIGxhdGVuY3kgaW52b2x2ZWQgaW4gdGhlIGdlbmVyYXRpb24Kb2YgYSBTV0JBIGludGVycnVw dCBvbiB0aGUgdGFyZ2V0IHRvIHRoZSBhY3R1YWwgc2VuZGluZwpvZiBhIGJlYWNvbiBpcyBxdWl0 ZSBoaWdoIGZvciBVU0IgZGV2aWNlcy4KCkZpeCB0aGlzIGJ5IGFkanVzdGluZyB0aGUgYmVhY29u IHJlc3BvbnNlIHRpbWUuCgpTaWduZWQtb2ZmLWJ5OiBTdWppdGggTWFub2hhcmFuIDxTdWppdGgu TWFub2hhcmFuQGF0aGVyb3MuY29tPgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGMuaCAgICAgICAgICAgIHwgICAgNyArKysrCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoOWsvaHRjX2Rydl9iZWFjb24uYyB8ICAgNDEgKysrKysrKysrKysrKysrKysrKy0tLQogMiBm aWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaCBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9odGMuaAppbmRleCBmZmMxOWU0Li43Y2M1Y2YzIDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKKysrIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oCkBAIC0zNTgsNiArMzU4LDEzIEBAIHN0cnVjdCBhdGhf bGVkIHsKIAogI2RlZmluZSBCU1RVQ0tfVEhSRVNIT0xEIDEwCiAKKy8qCisgKiBBZGp1c3QgdGhl c2Ugd2hlbiB0aGUgbWF4LiBubyBvZiBiZWFjb25pbmcgaW50ZXJmYWNlcyBpcworICogaW5jcmVh c2VkLgorICovCisjZGVmaW5lIERFRkFVTFRfU1dCQV9SRVNQT05TRSA0MCAvKiBpbiBUVXMgKi8K KyNkZWZpbmUgTUlOX1NXQkFfUkVTUE9OU0UgICAgIDEwIC8qIGluIFRVcyAqLworCiBzdHJ1Y3Qg aHRjX2JlYWNvbl9jb25maWcgewogCXN0cnVjdCBpZWVlODAyMTFfdmlmICpic2xvdFtBVEg5S19I VENfTUFYX0JDTl9WSUZdOwogCXUxNiBiZWFjb25faW50ZXJ2YWw7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYyBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jCmluZGV4IGY1OTc2ZTMuLjFjZDlk ZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2Jl YWNvbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNv bi5jCkBAIC0xOTgsNiArMTk4LDE1IEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19iZWFjb25fY29u ZmlnX2FwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAlpbnR2YWwgLz0gQVRIOUtfSFRD X01BWF9CQ05fVklGOwogCW5leHR0YnR0ID0gaW50dmFsOwogCisJLyoKKwkgKiBUbyByZWR1Y2Ug YmVhY29uIG1pc3NlcyB1bmRlciBoZWF2eSBUWCBsb2FkLAorCSAqIHNldCB0aGUgYmVhY29uIHJl c3BvbnNlIHRpbWUgdG8gYSBsYXJnZXIgdmFsdWUuCisJICovCisJaWYgKGludHZhbCA+IERFRkFV TFRfU1dCQV9SRVNQT05TRSkKKwkJcHJpdi0+YWgtPmNvbmZpZy5zd19iZWFjb25fcmVzcG9uc2Vf dGltZSA9IERFRkFVTFRfU1dCQV9SRVNQT05TRTsKKwllbHNlCisJCXByaXYtPmFoLT5jb25maWcu c3dfYmVhY29uX3Jlc3BvbnNlX3RpbWUgPSBNSU5fU1dCQV9SRVNQT05TRTsKKwogCWlmIChwcml2 LT5vcF9mbGFncyAmIE9QX1RTRl9SRVNFVCkgewogCQlpbnR2YWwgfD0gQVRIOUtfQkVBQ09OX1JF U0VUX1RTRjsKIAkJcHJpdi0+b3BfZmxhZ3MgJj0gfk9QX1RTRl9SRVNFVDsKQEAgLTIxOCwxMCAr MjI3LDExIEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19iZWFjb25fY29uZmlnX2FwKHN0cnVjdCBh dGg5a19odGNfcHJpdiAqcHJpdiwKIAkJaW1hc2sgfD0gQVRIOUtfSU5UX1NXQkE7CiAKIAlhdGhf ZGJnKGNvbW1vbiwgQVRIX0RCR19DT05GSUcsCi0JCSJBUCBCZWFjb24gY29uZmlnLCBpbnR2YWw6 ICVkLCBuZXh0dGJ0dDogJXUgIgorCQkiQVAgQmVhY29uIGNvbmZpZywgaW50dmFsOiAlZCwgbmV4 dHRidHQ6ICV1LCByZXNwX3RpbWU6ICVkICIKIAkJImltYXNrOiAweCV4LCB0c2ZfcmVzZXQ6ICVk XG4iLAotCQlic3NfY29uZi0+YmVhY29uX2ludGVydmFsLCBuZXh0dGJ0dCwgaW1hc2ssCi0JCSEh KGludHZhbCAmIEFUSDlLX0JFQUNPTl9SRVNFVF9UU0YpKTsKKwkJYnNzX2NvbmYtPmJlYWNvbl9p bnRlcnZhbCwgbmV4dHRidHQsCisJCXByaXYtPmFoLT5jb25maWcuc3dfYmVhY29uX3Jlc3BvbnNl X3RpbWUsCisJCWltYXNrLCAhIShpbnR2YWwgJiBBVEg5S19CRUFDT05fUkVTRVRfVFNGKSk7CiAK IAlhdGg5a19odGNfYmVhY29ucV9jb25maWcocHJpdik7CiAKQEAgLTI1NSwxMyArMjY1LDIzIEBA IHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19iZWFjb25fY29uZmlnX2FkaG9jKHN0cnVjdCBhdGg5a19o dGNfcHJpdiAqcHJpdiwKIAkJbmV4dHRidHQgKz0gaW50dmFsOwogCX0gd2hpbGUgKG5leHR0YnR0 IDwgdHNmdHUpOwogCisJLyoKKwkgKiBPbmx5IG9uZSBJQlNTIGludGVyZmNlIGlzIGFsbG93ZWQu CisJICovCisJaWYgKGludHZhbCA+IERFRkFVTFRfU1dCQV9SRVNQT05TRSkKKwkJcHJpdi0+YWgt PmNvbmZpZy5zd19iZWFjb25fcmVzcG9uc2VfdGltZSA9IERFRkFVTFRfU1dCQV9SRVNQT05TRTsK KwllbHNlCisJCXByaXYtPmFoLT5jb25maWcuc3dfYmVhY29uX3Jlc3BvbnNlX3RpbWUgPSBNSU5f U1dCQV9SRVNQT05TRTsKKwogCWludHZhbCB8PSBBVEg5S19CRUFDT05fRU5BOwogCWlmIChwcml2 LT5vcF9mbGFncyAmIE9QX0VOQUJMRV9CRUFDT04pCiAJCWltYXNrIHw9IEFUSDlLX0lOVF9TV0JB OwogCiAJYXRoX2RiZyhjb21tb24sIEFUSF9EQkdfQ09ORklHLAotCQkiSUJTUyBCZWFjb24gY29u ZmlnLCBpbnR2YWw6ICVkLCBuZXh0dGJ0dDogJXUsIGltYXNrOiAweCV4XG4iLAotCQlic3NfY29u Zi0+YmVhY29uX2ludGVydmFsLCBuZXh0dGJ0dCwgaW1hc2spOworCQkiSUJTUyBCZWFjb24gY29u ZmlnLCBpbnR2YWw6ICVkLCBuZXh0dGJ0dDogJXUsICIKKwkJInJlc3BfdGltZTogJWQsIGltYXNr OiAweCV4XG4iLAorCQlic3NfY29uZi0+YmVhY29uX2ludGVydmFsLCBuZXh0dGJ0dCwKKwkJcHJp di0+YWgtPmNvbmZpZy5zd19iZWFjb25fcmVzcG9uc2VfdGltZSwgaW1hc2spOwogCiAJV01JX0NN RChXTUlfRElTQUJMRV9JTlRSX0NNRElEKTsKIAlhdGg5a19od19iZWFjb25pbml0KHByaXYtPmFo LCBuZXh0dGJ0dCwgaW50dmFsKTsKQEAgLTMyMSw2ICszNDEsNyBAQCBzdGF0aWMgdm9pZCBhdGg5 a19odGNfc2VuZF9idWZmZXJlZChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiBzdGF0aWMg dm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAog CQkJCSAgaW50IHNsb3QpCiB7CisJc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3 X2NvbW1vbihwcml2LT5haCk7CiAJc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjsKIAlzdHJ1Y3Qg YXRoOWtfaHRjX3ZpZiAqYXZwOwogCXN0cnVjdCB0eF9iZWFjb25faGVhZGVyIGJlYWNvbl9oZHI7 CkBAIC0zMjksNiArMzUwLDcgQEAgc3RhdGljIHZvaWQgYXRoOWtfaHRjX3NlbmRfYmVhY29uKHN0 cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAlzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7 CiAJc3RydWN0IHNrX2J1ZmYgKmJlYWNvbjsKIAl1OCAqdHhfZmhkcjsKKwlpbnQgcmV0OwogCiAJ bWVtc2V0KCZiZWFjb25faGRyLCAwLCBzaXplb2Yoc3RydWN0IHR4X2JlYWNvbl9oZWFkZXIpKTsK IAltZW1zZXQoJnR4X2N0bCwgMCwgc2l6ZW9mKHN0cnVjdCBhdGg5a19odGNfdHhfY3RsKSk7CkBA IC0zNzEsNyArMzkzLDE0IEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19zZW5kX2JlYWNvbihzdHJ1 Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJdHhfZmhkciA9IHNrYl9wdXNoKGJlYWNvbiwgc2l6 ZW9mKGJlYWNvbl9oZHIpKTsKIAltZW1jcHkodHhfZmhkciwgKHU4ICopICZiZWFjb25faGRyLCBz aXplb2YoYmVhY29uX2hkcikpOwogCi0JaHRjX3NlbmQocHJpdi0+aHRjLCBiZWFjb24sIHByaXYt PmJlYWNvbl9lcCwgJnR4X2N0bCk7CisJcmV0ID0gaHRjX3NlbmQocHJpdi0+aHRjLCBiZWFjb24s IHByaXYtPmJlYWNvbl9lcCwgJnR4X2N0bCk7CisJaWYgKHJldCAhPSAwKSB7CisJCWlmIChyZXQg PT0gLUVOT01FTSkgeworCQkJYXRoX2RiZyhjb21tb24sIEFUSF9EQkdfQlNUVUNLLAorCQkJCSJG YWlsZWQgdG8gc2VuZCBiZWFjb24sIG5vIGZyZWUgVFggYnVmZmVyXG4iKTsKKwkJfQorCQlkZXZf a2ZyZWVfc2tiX2FueShiZWFjb24pOworCX0KIAogCXNwaW5fdW5sb2NrX2JoKCZwcml2LT5iZWFj b25fbG9jayk7CiB9Ci0tIAoxLjcuNC4xCgoKRnJvbSA5MTcyMDg4ODc2YzM5ZWU3MjVkMTU2ZTE1 MTgyZTVhZmE5NjcyNzYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdWppdGggTWFu b2hhcmFuIDxTdWppdGguTWFub2hhcmFuQGF0aGVyb3MuY29tPgpEYXRlOiBGcmksIDE0IEphbiAy MDExIDA3OjM1OjQ2ICswNTMwClN1YmplY3Q6IFtQQVRDSCAwOC8zNF0gYXRoOWtfaHRjOiBRdWV1 ZSBXTUkgZXZlbnRzCgpVc2UgYSBxdWV1ZSB0byBoYW5kbGUgV01JIGV2ZW50cyBhbmQgc2NoZWR1 bGUgYSB0YXNrbGV0CnRvIHByb2Nlc3MgdGhlIGV2ZW50cy4gVGhpcyBmaXhlcyB0aGUgcmFjZSBi ZXR3ZWVuIHRoZQpXTUkgZXZlbnQgSVNSIGFuZCB0aGUgU1dCQSB0YXNrbGV0IHdoZW4gdGhlIGFy cml2YWwgb2YKV01JIGV2ZW50cyBpbiBxdWljayBzdWNjZXNzaW9uIGNvdWxkIG92ZXJ3cml0ZSB0 aGUgU1dCQQpkYXRhIGJlZm9yZSB0aGUgdGFza2xldCBmcm9tIGEgcHJldmlvdXMgaXRlcmF0aW9u IGNvdWxkCmhhdmUgYmVlbiBzY2hlZHVsZWQuIEFsc28sIGRyYWluIHRoZSBXTUkgcXVldWUgcHJv cGVybHkuCgpTaWduZWQtb2ZmLWJ5OiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hhcmFu QGF0aGVyb3MuY29tPgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaCAg ICAgICAgICAgIHwgICAgMyArLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19k cnZfYmVhY29uLmMgfCAgIDI3ICsrKy0tLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGNfZHJ2X2dwaW8uYyAgIHwgICAgMyArCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo OWsvaHRjX2Rydl9pbml0LmMgICB8ICAgIDIgLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDlrL2h0Y19kcnZfbWFpbi5jICAgfCAgICA3ICsrLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL3dtaS5jICAgICAgICAgICAgfCAgIDk3ICsrKysrKysrKysrKysrKy0tLS0tLS0tCiBk cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggICAgICAgICAgICB8ICAgIDcgKy0K IDcgZmlsZXMgY2hhbmdlZCwgODkgaW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oCmluZGV4IDdjYzVjZjMuLjBmNzJjMTkgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaAorKysgYi9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKQEAgLTQ5NCw3ICs0OTQsOCBAQCB2b2lkIGF0 aDlrX2h0Y19iZWFjb25xX2NvbmZpZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpOwogdm9p ZCBhdGg5a19odGNfYmVhY29uX2NvbmZpZyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJ CQkgICAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpOwogdm9pZCBhdGg5a19odGNfYmVhY29u X3JlY29uZmlnKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7Ci12b2lkIGF0aDlrX2h0Y19z d2JhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7Cit2b2lkIGF0aDlrX2h0Y19zd2JhKHN0 cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKKwkJICAgIHN0cnVjdCB3bWlfZXZlbnRfc3diYSAq c3diYSk7CiAKIHZvaWQgYXRoOWtfaHRjX3J4ZXAodm9pZCAqcHJpdiwgc3RydWN0IHNrX2J1ZmYg KnNrYiwKIAkJICAgIGVudW0gaHRjX2VuZHBvaW50X2lkIGVwX2lkKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMKaW5kZXggMWNkOWRkMi4uMGM0 ODQ5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZf YmVhY29uLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVh Y29uLmMKQEAgLTQwNSwxMCArNDA1LDEwIEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19zZW5kX2Jl YWNvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJc3Bpbl91bmxvY2tfYmgoJnByaXYt PmJlYWNvbl9sb2NrKTsKIH0KIAotc3RhdGljIGludCBhdGg5a19odGNfY2hvb3NlX2JzbG90KHN0 cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdikKK3N0YXRpYyBpbnQgYXRoOWtfaHRjX2Nob29zZV9i c2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCisJCQkJICBzdHJ1Y3Qgd21pX2V2ZW50 X3N3YmEgKnN3YmEpCiB7CiAJc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2Nv bW1vbihwcml2LT5haCk7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1NjQgdHNmOwogCXUzMiB0 c2Z0dTsKIAl1MTYgaW50dmFsOwpAQCAtNDE2LDEwICs0MTYsNyBAQCBzdGF0aWMgaW50IGF0aDlr X2h0Y19jaG9vc2VfYnNsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KQogCiAJaW50dmFs ID0gcHJpdi0+Y3VyX2JlYWNvbl9jb25mLmJlYWNvbl9pbnRlcnZhbCAmIEFUSDlLX0JFQUNPTl9Q RVJJT0Q7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+d21pLT53bWlfbG9jaywgZmxhZ3Mp OwotCXRzZiA9IHByaXYtPndtaS0+dHNmOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYt PndtaS0+d21pX2xvY2ssIGZsYWdzKTsKLQorCXRzZiA9IGJlNjRfdG9fY3B1KHN3YmEtPnRzZik7 CiAJdHNmdHUgPSBUU0ZfVE9fVFUodHNmID4+IDMyLCB0c2YpOwogCXNsb3QgPSAoKHRzZnR1ICUg aW50dmFsKSAqIEFUSDlLX0hUQ19NQVhfQkNOX1ZJRikgLyBpbnR2YWw7CiAJc2xvdCA9IEFUSDlL X0hUQ19NQVhfQkNOX1ZJRiAtIHNsb3QgLSAxOwpAQCAtNDMxLDMzICs0MjgsMzEgQEAgc3RhdGlj IGludCBhdGg5a19odGNfY2hvb3NlX2JzbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdikK IAlyZXR1cm4gc2xvdDsKIH0KIAotdm9pZCBhdGg5a19odGNfc3diYShzdHJ1Y3QgYXRoOWtfaHRj X3ByaXYgKnByaXYpCit2b2lkIGF0aDlrX2h0Y19zd2JhKHN0cnVjdCBhdGg5a19odGNfcHJpdiAq cHJpdiwKKwkJICAgIHN0cnVjdCB3bWlfZXZlbnRfc3diYSAqc3diYSkKIHsKIAlzdHJ1Y3QgYXRo X2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHByaXYtPmFoKTsKLQl1bnNpZ25lZCBs b25nIGZsYWdzOwogCWludCBzbG90OwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJnByaXYtPndtaS0+ d21pX2xvY2ssIGZsYWdzKTsKLQlpZiAocHJpdi0+d21pLT5iZWFjb25fcGVuZGluZyAhPSAwKSB7 Ci0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPndtaS0+d21pX2xvY2ssIGZsYWdzKTsK KwlpZiAoc3diYS0+YmVhY29uX3BlbmRpbmcgIT0gMCkgewogCQlwcml2LT5jdXJfYmVhY29uX2Nv bmYuYm1pc3NfY250Kys7CiAJCWlmIChwcml2LT5jdXJfYmVhY29uX2NvbmYuYm1pc3NfY250ID4g QlNUVUNLX1RIUkVTSE9MRCkgewotCQkJYXRoX2RiZyhjb21tb24sIEFUSF9EQkdfQkVBQ09OLAor CQkJYXRoX2RiZyhjb21tb24sIEFUSF9EQkdfQlNUVUNLLAogCQkJCSJCZWFjb24gc3R1Y2ssIEhX IHJlc2V0XG4iKTsKLQkJCWF0aDlrX2h0Y19yZXNldChwcml2KTsKKwkJCWllZWU4MDIxMV9xdWV1 ZV93b3JrKHByaXYtPmh3LAorCQkJCQkgICAgICZwcml2LT5mYXRhbF93b3JrKTsKIAkJfQogCQly ZXR1cm47CiAJfQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnByaXYtPndtaS0+d21pX2xvY2ss IGZsYWdzKTsKIAogCWlmIChwcml2LT5jdXJfYmVhY29uX2NvbmYuYm1pc3NfY250KSB7Ci0JCWF0 aF9kYmcoY29tbW9uLCBBVEhfREJHX0JFQUNPTiwKKwkJYXRoX2RiZyhjb21tb24sIEFUSF9EQkdf QlNUVUNLLAogCQkJIlJlc3VtaW5nIGJlYWNvbiB4bWl0IGFmdGVyICV1IG1pc3Nlc1xuIiwKIAkJ CXByaXYtPmN1cl9iZWFjb25fY29uZi5ibWlzc19jbnQpOwogCQlwcml2LT5jdXJfYmVhY29uX2Nv bmYuYm1pc3NfY250ID0gMDsKIAl9CiAKLQlzbG90ID0gYXRoOWtfaHRjX2Nob29zZV9ic2xvdChw cml2KTsKKwlzbG90ID0gYXRoOWtfaHRjX2Nob29zZV9ic2xvdChwcml2LCBzd2JhKTsKIAlzcGlu X2xvY2tfYmgoJnByaXYtPmJlYWNvbl9sb2NrKTsKIAlpZiAocHJpdi0+Y3VyX2JlYWNvbl9jb25m LmJzbG90W3Nsb3RdID09IE5VTEwpIHsKIAkJc3Bpbl91bmxvY2tfYmgoJnByaXYtPmJlYWNvbl9s b2NrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2 X2dwaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2dwaW8uYwpp bmRleCA3ZTYzMGE4Li40NTliYTBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaHRjX2Rydl9ncGlvLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDlrL2h0Y19kcnZfZ3Bpby5jCkBAIC00MzYsNiArNDM2LDkgQEAgdm9pZCBhdGg5a19odGNfcmFk aW9fZGlzYWJsZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodykKIAkvKiBTdG9wIFJYICovCiAJV01J X0NNRChXTUlfU1RPUF9SRUNWX0NNRElEKTsKIAorCS8qIENsZWFyIHRoZSBXTUkgZXZlbnQgcXVl dWUgKi8KKwlhdGg5a193bWlfZXZlbnRfZHJhaW4ocHJpdik7CisKIAkvKgogCSAqIFRoZSBNSUIg Y291bnRlcnMgaGF2ZSB0byBiZSBkaXNhYmxlZCBoZXJlLAogCSAqIHNpbmNlIHRoZSB0YXJnZXQg ZG9lc24ndCBkbyBpdC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGNfZHJ2X2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2 X2luaXQuYwppbmRleCBmM2EyYjU2Li4yMjUwYWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jCkBAIC02NzMsOCArNjczLDYgQEAgc3RhdGljIGlu dCBhdGg5a19pbml0X3ByaXYoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCXNwaW5fbG9j a19pbml0KCZwcml2LT50eF9sb2NrKTsKIAltdXRleF9pbml0KCZwcml2LT5tdXRleCk7CiAJbXV0 ZXhfaW5pdCgmcHJpdi0+aHRjX3BtX2xvY2spOwotCXRhc2tsZXRfaW5pdCgmcHJpdi0+c3diYV90 YXNrbGV0LCBhdGg5a19zd2JhX3Rhc2tsZXQsCi0JCSAgICAgKHVuc2lnbmVkIGxvbmcpcHJpdik7 CiAJdGFza2xldF9pbml0KCZwcml2LT5yeF90YXNrbGV0LCBhdGg5a19yeF90YXNrbGV0LAogCQkg ICAgICh1bnNpZ25lZCBsb25nKXByaXYpOwogCXRhc2tsZXRfaW5pdCgmcHJpdi0+dHhfdGFza2xl dCwgYXRoOWtfdHhfdGFza2xldCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGg5ay9odGNfZHJ2X21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9o dGNfZHJ2X21haW4uYwppbmRleCA4ZjM4MDc1Li44MWRmZTA3IDEwMDY0NAotLS0gYS9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jCkBAIC0yMDIsNiArMjAyLDggQEAgdm9p ZCBhdGg5a19odGNfcmVzZXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KQogCVdNSV9DTUQo V01JX0RSQUlOX1RYUV9BTExfQ01ESUQpOwogCVdNSV9DTUQoV01JX1NUT1BfUkVDVl9DTURJRCk7 CiAKKwlhdGg5a193bWlfZXZlbnRfZHJhaW4ocHJpdik7CisKIAljYWxkYXRhID0gJnByaXYtPmNh bGRhdGE7CiAJcmV0ID0gYXRoOWtfaHdfcmVzZXQoYWgsIGFoLT5jdXJjaGFuLCBjYWxkYXRhLCBm YWxzZSk7CiAJaWYgKHJldCkgewpAQCAtMjU1LDYgKzI1Nyw4IEBAIHN0YXRpYyBpbnQgYXRoOWtf aHRjX3NldF9jaGFubmVsKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAlXTUlfQ01EKFdN SV9EUkFJTl9UWFFfQUxMX0NNRElEKTsKIAlXTUlfQ01EKFdNSV9TVE9QX1JFQ1ZfQ01ESUQpOwog CisJYXRoOWtfd21pX2V2ZW50X2RyYWluKHByaXYpOworCiAJYXRoX2RiZyhjb21tb24sIEFUSF9E QkdfQ09ORklHLAogCQkiKCV1IE1IeikgLT4gKCV1IE1IeiksIEhUOiAlZCwgSFQ0MDogJWQgZmFz dGNjOiAlZFxuIiwKIAkJcHJpdi0+YWgtPmN1cmNoYW4tPmNoYW5uZWwsCkBAIC0xMTcyLDEyICsx MTc2LDEzIEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcg Kmh3KQogCVdNSV9DTUQoV01JX0RSQUlOX1RYUV9BTExfQ01ESUQpOwogCVdNSV9DTUQoV01JX1NU T1BfUkVDVl9DTURJRCk7CiAKLQl0YXNrbGV0X2tpbGwoJnByaXYtPnN3YmFfdGFza2xldCk7CiAJ dGFza2xldF9raWxsKCZwcml2LT5yeF90YXNrbGV0KTsKIAl0YXNrbGV0X2tpbGwoJnByaXYtPnR4 X3Rhc2tsZXQpOwogCiAJc2tiX3F1ZXVlX3B1cmdlKCZwcml2LT50eF9xdWV1ZSk7CiAKKwlhdGg5 a193bWlfZXZlbnRfZHJhaW4ocHJpdik7CisKIAltdXRleF91bmxvY2soJnByaXYtPm11dGV4KTsK IAogCS8qIENhbmNlbCBhbGwgdGhlIHJ1bm5pbmcgdGltZXJzL3dvcmsgLi4gKi8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYyBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay93bWkuYwppbmRleCA3NjgxOTRkLi4zOTA4OGJlIDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMKKysrIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jCkBAIC0xMDIsOSArMTAyLDEyIEBAIHN0cnVjdCB3bWkg KmF0aDlrX2luaXRfd21pKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdikKIAogCXdtaS0+ZHJ2 X3ByaXYgPSBwcml2OwogCXdtaS0+c3RvcHBlZCA9IGZhbHNlOworCXNrYl9xdWV1ZV9oZWFkX2lu aXQoJndtaS0+d21pX2V2ZW50X3F1ZXVlKTsKIAltdXRleF9pbml0KCZ3bWktPm9wX211dGV4KTsK IAltdXRleF9pbml0KCZ3bWktPm11bHRpX3dyaXRlX211dGV4KTsKIAlpbml0X2NvbXBsZXRpb24o JndtaS0+Y21kX3dhaXQpOworCXRhc2tsZXRfaW5pdCgmd21pLT53bWlfZXZlbnRfdGFza2xldCwg YXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQsCisJCSAgICAgKHVuc2lnbmVkIGxvbmcpd21pKTsKIAog CXJldHVybiB3bWk7CiB9CkBAIC0xMjAsMTEgKzEyMyw2NCBAQCB2b2lkIGF0aDlrX2RlaW5pdF93 bWkoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KQogCWtmcmVlKHByaXYtPndtaSk7CiB9CiAK LXZvaWQgYXRoOWtfc3diYV90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKK3ZvaWQgYXRoOWtf d21pX2V2ZW50X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdikKIHsKLQlzdHJ1Y3Qg YXRoOWtfaHRjX3ByaXYgKnByaXYgPSAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICopZGF0YTsKKwl1 bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JYXRoOWtfaHRjX3N3YmEocHJpdik7CisJdGFza2xldF9r aWxsKCZwcml2LT53bWktPndtaV9ldmVudF90YXNrbGV0KTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgm cHJpdi0+d21pLT53bWlfbG9jaywgZmxhZ3MpOworCV9fc2tiX3F1ZXVlX3B1cmdlKCZwcml2LT53 bWktPndtaV9ldmVudF9xdWV1ZSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+d21p LT53bWlfbG9jaywgZmxhZ3MpOworfQorCit2b2lkIGF0aDlrX3dtaV9ldmVudF90YXNrbGV0KHVu c2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlzdHJ1Y3Qgd21pICp3bWkgPSAoc3RydWN0IHdtaSAqKWRh dGE7CisJc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gd21pLT5kcnZfcHJpdjsKKwlzdHJ1 Y3Qgd21pX2NtZF9oZHIgKmhkcjsKKwl2b2lkICp3bWlfZXZlbnQ7CisJc3RydWN0IHdtaV9ldmVu dF9zd2JhICpzd2JhOworCXN0cnVjdCBza19idWZmICpza2IgPSBOVUxMOworCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CisJdTE2IGNtZF9pZDsKKyNpZmRlZiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMK KwlfX2JlMzIgdHhyYXRlOworI2VuZGlmCisKKwlkbyB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZ3 bWktPndtaV9sb2NrLCBmbGFncyk7CisJCXNrYiA9IF9fc2tiX2RlcXVldWUoJndtaS0+d21pX2V2 ZW50X3F1ZXVlKTsKKwkJaWYgKCFza2IpIHsKKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJndt aS0+d21pX2xvY2ssIGZsYWdzKTsKKwkJCXJldHVybjsKKwkJfQorCQlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZ3bWktPndtaV9sb2NrLCBmbGFncyk7CisKKwkJaGRyID0gKHN0cnVjdCB3bWlfY21k X2hkciAqKSBza2ItPmRhdGE7CisJCWNtZF9pZCA9IGJlMTZfdG9fY3B1KGhkci0+Y29tbWFuZF9p ZCk7CisJCXdtaV9ldmVudCA9IHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCB3bWlfY21kX2hk cikpOworCisJCXN3aXRjaCAoY21kX2lkKSB7CisJCWNhc2UgV01JX1NXQkFfRVZFTlRJRDoKKwkJ CXN3YmEgPSAoc3RydWN0IHdtaV9ldmVudF9zd2JhICopIHdtaV9ldmVudDsKKwkJCWF0aDlrX2h0 Y19zd2JhKHByaXYsIHN3YmEpOworCQkJYnJlYWs7CisJCWNhc2UgV01JX0ZBVEFMX0VWRU5USUQ6 CisJCQlpZWVlODAyMTFfcXVldWVfd29yayh3bWktPmRydl9wcml2LT5odywKKwkJCQkJICAgICAm d21pLT5kcnZfcHJpdi0+ZmF0YWxfd29yayk7CisJCQlicmVhazsKKwkJY2FzZSBXTUlfVFhSQVRF X0VWRU5USUQ6CisjaWZkZWYgQ09ORklHX0FUSDlLX0hUQ19ERUJVR0ZTCisJCQl0eHJhdGUgPSAo KHN0cnVjdCB3bWlfZXZlbnRfdHhyYXRlICopd21pX2V2ZW50KS0+dHhyYXRlOworCQkJd21pLT5k cnZfcHJpdi0+ZGVidWcudHhyYXRlID0gYmUzMl90b19jcHUodHhyYXRlKTsKKyNlbmRpZgorCQkJ YnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCisJCWtmcmVlX3NrYihza2IpOwor CX0gd2hpbGUgKDEpOwogfQogCiB2b2lkIGF0aDlrX2ZhdGFsX3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQpAQCAtMTUzLDExICsyMDksNiBAQCBzdGF0aWMgdm9pZCBhdGg5a193bWlfY3Ry bF9yeCh2b2lkICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXN0cnVjdCB3bWkgKndtaSA9 IChzdHJ1Y3Qgd21pICopIHByaXY7CiAJc3RydWN0IHdtaV9jbWRfaGRyICpoZHI7CiAJdTE2IGNt ZF9pZDsKLQl2b2lkICp3bWlfZXZlbnQ7Ci0Jc3RydWN0IHdtaV9ldmVudF9zd2JhICpzd2JhOwot I2lmZGVmIENPTkZJR19BVEg5S19IVENfREVCVUdGUwotCV9fYmUzMiB0eHJhdGU7Ci0jZW5kaWYK IAogCWlmICh1bmxpa2VseSh3bWktPnN0b3BwZWQpKQogCQlnb3RvIGZyZWVfc2tiOwpAQCAtMTY2 LDMyICsyMTcsMTAgQEAgc3RhdGljIHZvaWQgYXRoOWtfd21pX2N0cmxfcngodm9pZCAqcHJpdiwg c3RydWN0IHNrX2J1ZmYgKnNrYiwKIAljbWRfaWQgPSBiZTE2X3RvX2NwdShoZHItPmNvbW1hbmRf aWQpOwogCiAJaWYgKGNtZF9pZCAmIDB4MTAwMCkgewotCQl3bWlfZXZlbnQgPSBza2JfcHVsbChz a2IsIHNpemVvZihzdHJ1Y3Qgd21pX2NtZF9oZHIpKTsKLQkJc3dpdGNoIChjbWRfaWQpIHsKLQkJ Y2FzZSBXTUlfU1dCQV9FVkVOVElEOgotCQkJc3diYSA9IChzdHJ1Y3Qgd21pX2V2ZW50X3N3YmEg Kikgd21pX2V2ZW50OwotCi0JCQlzcGluX2xvY2soJndtaS0+d21pX2xvY2spOwotCQkJd21pLT50 c2YgPSBiZTY0X3RvX2NwdShzd2JhLT50c2YpOwotCQkJd21pLT5iZWFjb25fcGVuZGluZyA9IHN3 YmEtPmJlYWNvbl9wZW5kaW5nOwotCQkJc3Bpbl91bmxvY2soJndtaS0+d21pX2xvY2spOwotCi0J CQl0YXNrbGV0X3NjaGVkdWxlKCZ3bWktPmRydl9wcml2LT5zd2JhX3Rhc2tsZXQpOwotCQkJYnJl YWs7Ci0JCWNhc2UgV01JX0ZBVEFMX0VWRU5USUQ6Ci0JCQlpZWVlODAyMTFfcXVldWVfd29yayh3 bWktPmRydl9wcml2LT5odywKLQkJCQkJICAgICAmd21pLT5kcnZfcHJpdi0+ZmF0YWxfd29yayk7 Ci0JCQlicmVhazsKLQkJY2FzZSBXTUlfVFhSQVRFX0VWRU5USUQ6Ci0jaWZkZWYgQ09ORklHX0FU SDlLX0hUQ19ERUJVR0ZTCi0JCQl0eHJhdGUgPSAoKHN0cnVjdCB3bWlfZXZlbnRfdHhyYXRlICop d21pX2V2ZW50KS0+dHhyYXRlOwotCQkJd21pLT5kcnZfcHJpdi0+ZGVidWcudHhyYXRlID0gYmUz Ml90b19jcHUodHhyYXRlKTsKLSNlbmRpZgotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlicmVh azsKLQkJfQotCQlrZnJlZV9za2Ioc2tiKTsKKwkJc3Bpbl9sb2NrKCZ3bWktPndtaV9sb2NrKTsK KwkJX19za2JfcXVldWVfdGFpbCgmd21pLT53bWlfZXZlbnRfcXVldWUsIHNrYik7CisJCXNwaW5f dW5sb2NrKCZ3bWktPndtaV9sb2NrKTsKKwkJdGFza2xldF9zY2hlZHVsZSgmd21pLT53bWlfZXZl bnRfdGFza2xldCk7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93 bWkuaAppbmRleCAyNGYxNmZhLi5lZTY3NWRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoOWsvd21pLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L3dtaS5oCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBzdHJ1Y3Qgd21pIHsKIAlzdHJ1Y3QgbXV0ZXgg b3BfbXV0ZXg7CiAJc3RydWN0IGNvbXBsZXRpb24gY21kX3dhaXQ7CiAJZW51bSB3bWlfY21kX2lk IGxhc3RfY21kX2lkOworCXN0cnVjdCBza19idWZmX2hlYWQgd21pX2V2ZW50X3F1ZXVlOworCXN0 cnVjdCB0YXNrbGV0X3N0cnVjdCB3bWlfZXZlbnRfdGFza2xldDsKIAl1MTYgdHhfc2VxX2lkOwog CXU4ICpjbWRfcnNwX2J1ZjsKIAl1MzIgY21kX3JzcF9sZW47CiAJYm9vbCBzdG9wcGVkOwogCi0J dTY0IHRzZjsKLQl1OCBiZWFjb25fcGVuZGluZzsKIAlzcGlubG9ja190IHdtaV9sb2NrOwogCiAJ YXRvbWljX3QgbXdyaXRlX2NudDsKQEAgLTEyMyw4ICsxMjMsOSBAQCBpbnQgYXRoOWtfd21pX2Nt ZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX2NtZF9pZCBjbWRfaWQsCiAJCSAgdTggKmNtZF9i dWYsIHUzMiBjbWRfbGVuLAogCQkgIHU4ICpyc3BfYnVmLCB1MzIgcnNwX2xlbiwKIAkJICB1MzIg dGltZW91dCk7Ci12b2lkIGF0aDlrX3N3YmFfdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpOwor dm9pZCBhdGg5a193bWlfZXZlbnRfdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpOwogdm9pZCBh dGg5a19mYXRhbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7Cit2b2lkIGF0aDlrX3dt aV9ldmVudF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpOwogCiAjZGVmaW5lIFdN SV9DTUQoX3dtaV9jbWQpCQkJCQkJXAogCWRvIHsJCQkJCQkJCVwKLS0gCjEuNy40LjEKCgpGcm9t IGQyNDIwOTkxNzRhNmJhYmE1MGIxNmUyODk1OTkyM2RhNmI4ZTgyMjkgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IFN1aml0aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJv cy5jb20+CkRhdGU6IE1vbiwgMTcgSmFuIDIwMTEgMDg6NDU6MzAgKzA1MzAKU3ViamVjdDogW1BB VENIIDA5LzM0XSBhdGg5a19odGM6IE1vdmUgZGVidWcgY29kZSB0byBhIHNlcGFyYXRlIGZpbGUK ClNpZ25lZC1vZmYtYnk6IFN1aml0aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJv cy5jb20+Ci0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01ha2VmaWxlICAgICAg ICB8ICAgIDIgKwogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcu YyB8ICAyMTkgKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaHRjX2Rydl9tYWluLmMgIHwgIDIxMiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog MyBmaWxlcyBjaGFuZ2VkLCAyMjEgaW5zZXJ0aW9ucygrKSwgMjEyIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2Rl YnVnLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZp bGUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvTWFrZWZpbGUKaW5kZXggNGQ2NmNh OC4uMjM5OTg3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL01h a2VmaWxlCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9NYWtlZmlsZQpAQCAt NDgsNCArNDgsNiBAQCBhdGg5a19odGMteSArPQlodGNfaHN0Lm8gXAogCQlodGNfZHJ2X2luaXQu byBcCiAJCWh0Y19kcnZfZ3Bpby5vCiAKK2F0aDlrX2h0Yy0kKENPTkZJR19BVEg5S19IVENfREVC VUdGUykgKz0gaHRjX2Rydl9kZWJ1Zy5vCisKIG9iai0kKENPTkZJR19BVEg5S19IVEMpICs9IGF0 aDlrX2h0Yy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRj X2Rydl9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVi dWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjY3OWFhCi0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcu YwpAQCAtMCwwICsxLDIxOSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDExIEF0aGVy b3MgQ29tbXVuaWNhdGlvbnMgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBt b2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQorICogcHVycG9z ZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRo ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBh cHBlYXIgaW4gYWxsIGNvcGllcy4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMKKyAqIFdJVEggUkVH QVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YK KyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFV VEhPUiBCRSBMSUFCTEUgRk9SCisgKiBBTlkgU1BFQ0lBTCwgRElSRUNULCBJTkRJUkVDVCwgT1Ig Q09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCisgKiBXSEFUU09FVkVSIFJFU1VM VElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4KKyAq IEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04s IEFSSVNJTkcgT1VUIE9GCisgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJG T1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlICJodGMuaCIKKworc3Rh dGljIHN0cnVjdCBkZW50cnkgKmF0aDlrX2RlYnVnZnNfcm9vdDsKKworc3RhdGljIGludCBhdGg5 a19kZWJ1Z2ZzX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCit7 CisJZmlsZS0+cHJpdmF0ZV9kYXRhID0gaW5vZGUtPmlfcHJpdmF0ZTsKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3RndF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwg Y2hhciBfX3VzZXIgKnVzZXJfYnVmLAorCQkJCSAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9z KQoreworCXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGZpbGUtPnByaXZhdGVfZGF0YTsK KwlzdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF9zdGF0cyBjbWRfcnNwOworCWNoYXIgYnVmWzUxMl07 CisJdW5zaWduZWQgaW50IGxlbiA9IDA7CisJaW50IHJldCA9IDA7CisKKwltZW1zZXQoJmNtZF9y c3AsIDAsIHNpemVvZihjbWRfcnNwKSk7CisKKwlXTUlfQ01EKFdNSV9UR1RfU1RBVFNfQ01ESUQp OworCWlmIChyZXQpCisJCXJldHVybiAtRUlOVkFMOworCisKKwlsZW4gKz0gc25wcmludGYoYnVm ICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKKwkJCSIlMTlzIDogJTEwdVxuIiwgIlRYIFNob3J0 IFJldHJpZXMiLAorCQkJYmUzMl90b19jcHUoY21kX3JzcC50eF9zaG9ydHJldHJ5KSk7CisJbGVu ICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1ZikgLSBsZW4sCisJCQkiJTE5cyA6ICUx MHVcbiIsICJUWCBMb25nIFJldHJpZXMiLAorCQkJYmUzMl90b19jcHUoY21kX3JzcC50eF9sb25n cmV0cnkpKTsKKwlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwK KwkJCSIlMTlzIDogJTEwdVxuIiwgIlRYIFhyZXRyaWVzIiwKKwkJCWJlMzJfdG9fY3B1KGNtZF9y c3AudHhfeHJldHJpZXMpKTsKKwlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVm KSAtIGxlbiwKKwkJCSIlMTlzIDogJTEwdVxuIiwgIlRYIFVuYWdnci4gWHJldHJpZXMiLAorCQkJ YmUzMl90b19jcHUoY21kX3JzcC5odF90eHVuYWdncl94cmV0cnkpKTsKKwlsZW4gKz0gc25wcmlu dGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKKwkJCSIlMTlzIDogJTEwdVxuIiwgIlRY IFhyZXRyaWVzIChIVCkiLAorCQkJYmUzMl90b19jcHUoY21kX3JzcC5odF90eF94cmV0cmllcykp OworCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIHNpemVvZihidWYpIC0gbGVuLAorCQkJIiUx OXMgOiAlMTB1XG4iLCAiVFggUmF0ZSIsIHByaXYtPmRlYnVnLnR4cmF0ZSk7CisKKwlpZiAobGVu ID4gc2l6ZW9mKGJ1ZikpCisJCWxlbiA9IHNpemVvZihidWYpOworCisJcmV0dXJuIHNpbXBsZV9y ZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3RndF9zdGF0cyA9IHsKKwku cmVhZCA9IHJlYWRfZmlsZV90Z3Rfc3RhdHMsCisJLm9wZW4gPSBhdGg5a19kZWJ1Z2ZzX29wZW4s CisJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLAorfTsK Kworc3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3htaXQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIg X191c2VyICp1c2VyX2J1ZiwKKwkJCSAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQor eworCXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlj aGFyIGJ1Zls1MTJdOworCXVuc2lnbmVkIGludCBsZW4gPSAwOworCisJbGVuICs9IHNucHJpbnRm KGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1ZikgLSBsZW4sCisJCQkiJTIwcyA6ICUxMHVcbiIsICJCdWZm ZXJzIHF1ZXVlZCIsCisJCQlwcml2LT5kZWJ1Zy50eF9zdGF0cy5idWZfcXVldWVkKTsKKwlsZW4g Kz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKKwkJCSIlMjBzIDogJTEw dVxuIiwgIkJ1ZmZlcnMgY29tcGxldGVkIiwKKwkJCXByaXYtPmRlYnVnLnR4X3N0YXRzLmJ1Zl9j b21wbGV0ZWQpOworCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIHNpemVvZihidWYpIC0gbGVu LAorCQkJIiUyMHMgOiAlMTB1XG4iLCAiU0tCcyBxdWV1ZWQiLAorCQkJcHJpdi0+ZGVidWcudHhf c3RhdHMuc2tiX3F1ZXVlZCk7CisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1 ZikgLSBsZW4sCisJCQkiJTIwcyA6ICUxMHVcbiIsICJTS0JzIGNvbXBsZXRlZCIsCisJCQlwcml2 LT5kZWJ1Zy50eF9zdGF0cy5za2JfY29tcGxldGVkKTsKKwlsZW4gKz0gc25wcmludGYoYnVmICsg bGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKKwkJCSIlMjBzIDogJTEwdVxuIiwgIlNLQnMgZHJvcHBl ZCIsCisJCQlwcml2LT5kZWJ1Zy50eF9zdGF0cy5za2JfZHJvcHBlZCk7CisJbGVuICs9IHNucHJp bnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1ZikgLSBsZW4sCisJCQkiJTIwcyA6ICUxMHVcbiIsICJD QUIgcXVldWVkIiwKKwkJCXByaXYtPmRlYnVnLnR4X3N0YXRzLmNhYl9xdWV1ZWQpOworCisJbGVu ICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1ZikgLSBsZW4sCisJCQkiJTIwcyA6ICUx MHVcbiIsICJCRSBxdWV1ZWQiLAorCQkJcHJpdi0+ZGVidWcudHhfc3RhdHMucXVldWVfc3RhdHNb V01FX0FDX0JFXSk7CisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1ZikgLSBs ZW4sCisJCQkiJTIwcyA6ICUxMHVcbiIsICJCSyBxdWV1ZWQiLAorCQkJcHJpdi0+ZGVidWcudHhf c3RhdHMucXVldWVfc3RhdHNbV01FX0FDX0JLXSk7CisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxl biwgc2l6ZW9mKGJ1ZikgLSBsZW4sCisJCQkiJTIwcyA6ICUxMHVcbiIsICJWSSBxdWV1ZWQiLAor CQkJcHJpdi0+ZGVidWcudHhfc3RhdHMucXVldWVfc3RhdHNbV01FX0FDX1ZJXSk7CisJbGVuICs9 IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1ZikgLSBsZW4sCisJCQkiJTIwcyA6ICUxMHVc biIsICJWTyBxdWV1ZWQiLAorCQkJcHJpdi0+ZGVidWcudHhfc3RhdHMucXVldWVfc3RhdHNbV01F X0FDX1ZPXSk7CisKKwlpZiAobGVuID4gc2l6ZW9mKGJ1ZikpCisJCWxlbiA9IHNpemVvZihidWYp OworCisJcmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBv cywgYnVmLCBsZW4pOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBm b3BzX3htaXQgPSB7CisJLnJlYWQgPSByZWFkX2ZpbGVfeG1pdCwKKwkub3BlbiA9IGF0aDlrX2Rl YnVnZnNfb3BlbiwKKwkub3duZXIgPSBUSElTX01PRFVMRSwKKwkubGxzZWVrID0gZGVmYXVsdF9s bHNlZWssCit9OworCitzdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfcmVjdihzdHJ1Y3QgZmlsZSAq ZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLAorCQkJICAgICAgc2l6ZV90IGNvdW50LCBsb2Zm X3QgKnBwb3MpCit7CisJc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gZmlsZS0+cHJpdmF0 ZV9kYXRhOworCWNoYXIgYnVmWzUxMl07CisJdW5zaWduZWQgaW50IGxlbiA9IDA7CisKKwlsZW4g Kz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKKwkJCSIlMjBzIDogJTEw dVxuIiwgIlNLQnMgYWxsb2NhdGVkIiwKKwkJCXByaXYtPmRlYnVnLnJ4X3N0YXRzLnNrYl9hbGxv Y2F0ZWQpOworCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIHNpemVvZihidWYpIC0gbGVuLAor CQkJIiUyMHMgOiAlMTB1XG4iLCAiU0tCcyBjb21wbGV0ZWQiLAorCQkJcHJpdi0+ZGVidWcucnhf c3RhdHMuc2tiX2NvbXBsZXRlZCk7CisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9m KGJ1ZikgLSBsZW4sCisJCQkiJTIwcyA6ICUxMHVcbiIsICJTS0JzIERyb3BwZWQiLAorCQkJcHJp di0+ZGVidWcucnhfc3RhdHMuc2tiX2Ryb3BwZWQpOworCisJaWYgKGxlbiA+IHNpemVvZihidWYp KQorCQlsZW4gPSBzaXplb2YoYnVmKTsKKworCXJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZl cih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTsKK30KKworc3RhdGljIGNvbnN0IHN0 cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19yZWN2ID0geworCS5yZWFkID0gcmVhZF9maWxlX3Jl Y3YsCisJLm9wZW4gPSBhdGg5a19kZWJ1Z2ZzX29wZW4sCisJLm93bmVyID0gVEhJU19NT0RVTEUs CisJLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLAorfTsKKworaW50IGF0aDlrX2h0Y19pbml0X2Rl YnVnKHN0cnVjdCBhdGhfaHcgKmFoKQoreworCXN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBh dGg5a19od19jb21tb24oYWgpOworCXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IChzdHJ1 Y3QgYXRoOWtfaHRjX3ByaXYgKikgY29tbW9uLT5wcml2OworCisJaWYgKCFhdGg5a19kZWJ1Z2Zz X3Jvb3QpCisJCXJldHVybiAtRU5PRU5UOworCisJcHJpdi0+ZGVidWcuZGVidWdmc19waHkgPSBk ZWJ1Z2ZzX2NyZWF0ZV9kaXIod2lwaHlfbmFtZShwcml2LT5ody0+d2lwaHkpLAorCQkJCQkJICAg ICBhdGg5a19kZWJ1Z2ZzX3Jvb3QpOworCWlmICghcHJpdi0+ZGVidWcuZGVidWdmc19waHkpCisJ CWdvdG8gZXJyOworCisJcHJpdi0+ZGVidWcuZGVidWdmc190Z3Rfc3RhdHMgPSBkZWJ1Z2ZzX2Ny ZWF0ZV9maWxlKCJ0Z3Rfc3RhdHMiLCBTX0lSVVNSLAorCQkJCQkJICAgIHByaXYtPmRlYnVnLmRl YnVnZnNfcGh5LAorCQkJCQkJICAgIHByaXYsICZmb3BzX3RndF9zdGF0cyk7CisJaWYgKCFwcml2 LT5kZWJ1Zy5kZWJ1Z2ZzX3RndF9zdGF0cykKKwkJZ290byBlcnI7CisKKworCXByaXYtPmRlYnVn LmRlYnVnZnNfeG1pdCA9IGRlYnVnZnNfY3JlYXRlX2ZpbGUoInhtaXQiLCBTX0lSVVNSLAorCQkJ CQkJICAgICAgIHByaXYtPmRlYnVnLmRlYnVnZnNfcGh5LAorCQkJCQkJICAgICAgIHByaXYsICZm b3BzX3htaXQpOworCWlmICghcHJpdi0+ZGVidWcuZGVidWdmc194bWl0KQorCQlnb3RvIGVycjsK KworCXByaXYtPmRlYnVnLmRlYnVnZnNfcmVjdiA9IGRlYnVnZnNfY3JlYXRlX2ZpbGUoInJlY3Yi LCBTX0lSVVNSLAorCQkJCQkJICAgICAgIHByaXYtPmRlYnVnLmRlYnVnZnNfcGh5LAorCQkJCQkJ ICAgICAgIHByaXYsICZmb3BzX3JlY3YpOworCWlmICghcHJpdi0+ZGVidWcuZGVidWdmc19yZWN2 KQorCQlnb3RvIGVycjsKKworCXJldHVybiAwOworCitlcnI6CisJYXRoOWtfaHRjX2V4aXRfZGVi dWcoYWgpOworCXJldHVybiAtRU5PTUVNOworfQorCit2b2lkIGF0aDlrX2h0Y19leGl0X2RlYnVn KHN0cnVjdCBhdGhfaHcgKmFoKQoreworCXN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5 a19od19jb21tb24oYWgpOworCXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IChzdHJ1Y3Qg YXRoOWtfaHRjX3ByaXYgKikgY29tbW9uLT5wcml2OworCisJZGVidWdmc19yZW1vdmUocHJpdi0+ ZGVidWcuZGVidWdmc19yZWN2KTsKKwlkZWJ1Z2ZzX3JlbW92ZShwcml2LT5kZWJ1Zy5kZWJ1Z2Zz X3htaXQpOworCWRlYnVnZnNfcmVtb3ZlKHByaXYtPmRlYnVnLmRlYnVnZnNfdGd0X3N0YXRzKTsK KwlkZWJ1Z2ZzX3JlbW92ZShwcml2LT5kZWJ1Zy5kZWJ1Z2ZzX3BoeSk7Cit9CisKK2ludCBhdGg5 a19odGNfZGVidWdfY3JlYXRlX3Jvb3Qodm9pZCkKK3sKKwlhdGg5a19kZWJ1Z2ZzX3Jvb3QgPSBk ZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JVSUxEX01PRE5BTUUsIE5VTEwpOworCWlmICghYXRoOWtfZGVi dWdmc19yb290KQorCQlyZXR1cm4gLUVOT0VOVDsKKworCXJldHVybiAwOworfQorCit2b2lkIGF0 aDlrX2h0Y19kZWJ1Z19yZW1vdmVfcm9vdCh2b2lkKQoreworCWRlYnVnZnNfcmVtb3ZlKGF0aDlr X2RlYnVnZnNfcm9vdCk7CisJYXRoOWtfZGVidWdmc19yb290ID0gTlVMTDsKK30KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYwppbmRleCA4MWRmZTA3Li41 OTcxMGU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Ry dl9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFp bi5jCkBAIC0xNiwxMCArMTYsNiBAQAogCiAjaW5jbHVkZSAiaHRjLmgiCiAKLSNpZmRlZiBDT05G SUdfQVRIOUtfSFRDX0RFQlVHRlMKLXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICphdGg5a19kZWJ1Z2Zz X3Jvb3Q7Ci0jZW5kaWYKLQogLyoqKioqKioqKioqKiovCiAvKiBVdGlsaXRpZXMgKi8KIC8qKioq KioqKioqKioqLwpAQCAtNzIwLDIxNCArNzE2LDYgQEAgc3RhdGljIGludCBhdGg5a19odGNfdHhf YWdncl9vcGVyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAlyZXR1cm4gcmV0OwogfQog Ci0vKioqKioqKioqLwotLyogREVCVUcgKi8KLS8qKioqKioqKiovCi0KLSNpZmRlZiBDT05GSUdf QVRIOUtfSFRDX0RFQlVHRlMKLQotc3RhdGljIGludCBhdGg5a19kZWJ1Z2ZzX29wZW4oc3RydWN0 IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCi17Ci0JZmlsZS0+cHJpdmF0ZV9kYXRh ID0gaW5vZGUtPmlfcHJpdmF0ZTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHNzaXplX3QgcmVh ZF9maWxlX3RndF9zdGF0cyhzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVm LAotCQkJCSAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQotewotCXN0cnVjdCBhdGg5a19o dGNfcHJpdiAqcHJpdiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKLQlzdHJ1Y3QgYXRoOWtfaHRjX3Rh cmdldF9zdGF0cyBjbWRfcnNwOwotCWNoYXIgYnVmWzUxMl07Ci0JdW5zaWduZWQgaW50IGxlbiA9 IDA7Ci0JaW50IHJldCA9IDA7Ci0KLQltZW1zZXQoJmNtZF9yc3AsIDAsIHNpemVvZihjbWRfcnNw KSk7Ci0KLQlXTUlfQ01EKFdNSV9UR1RfU1RBVFNfQ01ESUQpOwotCWlmIChyZXQpCi0JCXJldHVy biAtRUlOVkFMOwotCi0KLQlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAt IGxlbiwKLQkJCSIlMTlzIDogJTEwdVxuIiwgIlRYIFNob3J0IFJldHJpZXMiLAotCQkJYmUzMl90 b19jcHUoY21kX3JzcC50eF9zaG9ydHJldHJ5KSk7Ci0JbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxl biwgc2l6ZW9mKGJ1ZikgLSBsZW4sCi0JCQkiJTE5cyA6ICUxMHVcbiIsICJUWCBMb25nIFJldHJp ZXMiLAotCQkJYmUzMl90b19jcHUoY21kX3JzcC50eF9sb25ncmV0cnkpKTsKLQlsZW4gKz0gc25w cmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKLQkJCSIlMTlzIDogJTEwdVxuIiwg IlRYIFhyZXRyaWVzIiwKLQkJCWJlMzJfdG9fY3B1KGNtZF9yc3AudHhfeHJldHJpZXMpKTsKLQls ZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKLQkJCSIlMTlzIDog JTEwdVxuIiwgIlRYIFVuYWdnci4gWHJldHJpZXMiLAotCQkJYmUzMl90b19jcHUoY21kX3JzcC5o dF90eHVuYWdncl94cmV0cnkpKTsKLQlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2Yo YnVmKSAtIGxlbiwKLQkJCSIlMTlzIDogJTEwdVxuIiwgIlRYIFhyZXRyaWVzIChIVCkiLAotCQkJ YmUzMl90b19jcHUoY21kX3JzcC5odF90eF94cmV0cmllcykpOwotCWxlbiArPSBzbnByaW50Zihi dWYgKyBsZW4sIHNpemVvZihidWYpIC0gbGVuLAotCQkJIiUxOXMgOiAlMTB1XG4iLCAiVFggUmF0 ZSIsIHByaXYtPmRlYnVnLnR4cmF0ZSk7Ci0KLQlpZiAobGVuID4gc2l6ZW9mKGJ1ZikpCi0JCWxl biA9IHNpemVvZihidWYpOwotCi0JcmV0dXJuIHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJf YnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGZp bGVfb3BlcmF0aW9ucyBmb3BzX3RndF9zdGF0cyA9IHsKLQkucmVhZCA9IHJlYWRfZmlsZV90Z3Rf c3RhdHMsCi0JLm9wZW4gPSBhdGg5a19kZWJ1Z2ZzX29wZW4sCi0JLm93bmVyID0gVEhJU19NT0RV TEUsCi0JLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLAotfTsKLQotc3RhdGljIHNzaXplX3QgcmVh ZF9maWxlX3htaXQoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZiwKLQkJ CSAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQotewotCXN0cnVjdCBhdGg5a19odGNf cHJpdiAqcHJpdiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKLQljaGFyIGJ1Zls1MTJdOwotCXVuc2ln bmVkIGludCBsZW4gPSAwOwotCi0JbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1 ZikgLSBsZW4sCi0JCQkiJTIwcyA6ICUxMHVcbiIsICJCdWZmZXJzIHF1ZXVlZCIsCi0JCQlwcml2 LT5kZWJ1Zy50eF9zdGF0cy5idWZfcXVldWVkKTsKLQlsZW4gKz0gc25wcmludGYoYnVmICsgbGVu LCBzaXplb2YoYnVmKSAtIGxlbiwKLQkJCSIlMjBzIDogJTEwdVxuIiwgIkJ1ZmZlcnMgY29tcGxl dGVkIiwKLQkJCXByaXYtPmRlYnVnLnR4X3N0YXRzLmJ1Zl9jb21wbGV0ZWQpOwotCWxlbiArPSBz bnByaW50ZihidWYgKyBsZW4sIHNpemVvZihidWYpIC0gbGVuLAotCQkJIiUyMHMgOiAlMTB1XG4i LCAiU0tCcyBxdWV1ZWQiLAotCQkJcHJpdi0+ZGVidWcudHhfc3RhdHMuc2tiX3F1ZXVlZCk7Ci0J bGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1ZikgLSBsZW4sCi0JCQkiJTIwcyA6 ICUxMHVcbiIsICJTS0JzIGNvbXBsZXRlZCIsCi0JCQlwcml2LT5kZWJ1Zy50eF9zdGF0cy5za2Jf Y29tcGxldGVkKTsKLQlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxl biwKLQkJCSIlMjBzIDogJTEwdVxuIiwgIlNLQnMgZHJvcHBlZCIsCi0JCQlwcml2LT5kZWJ1Zy50 eF9zdGF0cy5za2JfZHJvcHBlZCk7Ci0JbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9m KGJ1ZikgLSBsZW4sCi0JCQkiJTIwcyA6ICUxMHVcbiIsICJDQUIgcXVldWVkIiwKLQkJCXByaXYt PmRlYnVnLnR4X3N0YXRzLmNhYl9xdWV1ZWQpOwotCi0JbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxl biwgc2l6ZW9mKGJ1ZikgLSBsZW4sCi0JCQkiJTIwcyA6ICUxMHVcbiIsICJCRSBxdWV1ZWQiLAot CQkJcHJpdi0+ZGVidWcudHhfc3RhdHMucXVldWVfc3RhdHNbV01FX0FDX0JFXSk7Ci0JbGVuICs9 IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1ZikgLSBsZW4sCi0JCQkiJTIwcyA6ICUxMHVc biIsICJCSyBxdWV1ZWQiLAotCQkJcHJpdi0+ZGVidWcudHhfc3RhdHMucXVldWVfc3RhdHNbV01F X0FDX0JLXSk7Ci0JbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1ZikgLSBsZW4s Ci0JCQkiJTIwcyA6ICUxMHVcbiIsICJWSSBxdWV1ZWQiLAotCQkJcHJpdi0+ZGVidWcudHhfc3Rh dHMucXVldWVfc3RhdHNbV01FX0FDX1ZJXSk7Ci0JbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwg c2l6ZW9mKGJ1ZikgLSBsZW4sCi0JCQkiJTIwcyA6ICUxMHVcbiIsICJWTyBxdWV1ZWQiLAotCQkJ cHJpdi0+ZGVidWcudHhfc3RhdHMucXVldWVfc3RhdHNbV01FX0FDX1ZPXSk7Ci0KLQlpZiAobGVu ID4gc2l6ZW9mKGJ1ZikpCi0JCWxlbiA9IHNpemVvZihidWYpOwotCi0JcmV0dXJuIHNpbXBsZV9y ZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4pOwotfQotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3htaXQgPSB7Ci0JLnJlYWQg PSByZWFkX2ZpbGVfeG1pdCwKLQkub3BlbiA9IGF0aDlrX2RlYnVnZnNfb3BlbiwKLQkub3duZXIg PSBUSElTX01PRFVMRSwKLQkubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssCi19OwotCi1zdGF0aWMg c3NpemVfdCByZWFkX2ZpbGVfcmVjdihzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVz ZXJfYnVmLAotCQkJICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpCi17Ci0Jc3RydWN0 IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwotCWNoYXIgYnVmWzUx Ml07Ci0JdW5zaWduZWQgaW50IGxlbiA9IDA7Ci0KLQlsZW4gKz0gc25wcmludGYoYnVmICsgbGVu LCBzaXplb2YoYnVmKSAtIGxlbiwKLQkJCSIlMjBzIDogJTEwdVxuIiwgIlNLQnMgYWxsb2NhdGVk IiwKLQkJCXByaXYtPmRlYnVnLnJ4X3N0YXRzLnNrYl9hbGxvY2F0ZWQpOwotCWxlbiArPSBzbnBy aW50ZihidWYgKyBsZW4sIHNpemVvZihidWYpIC0gbGVuLAotCQkJIiUyMHMgOiAlMTB1XG4iLCAi U0tCcyBjb21wbGV0ZWQiLAotCQkJcHJpdi0+ZGVidWcucnhfc3RhdHMuc2tiX2NvbXBsZXRlZCk7 Ci0JbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1ZikgLSBsZW4sCi0JCQkiJTIw cyA6ICUxMHVcbiIsICJTS0JzIERyb3BwZWQiLAotCQkJcHJpdi0+ZGVidWcucnhfc3RhdHMuc2ti X2Ryb3BwZWQpOwotCi0JaWYgKGxlbiA+IHNpemVvZihidWYpKQotCQlsZW4gPSBzaXplb2YoYnVm KTsKLQotCXJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBw b3MsIGJ1ZiwgbGVuKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg Zm9wc19yZWN2ID0gewotCS5yZWFkID0gcmVhZF9maWxlX3JlY3YsCi0JLm9wZW4gPSBhdGg5a19k ZWJ1Z2ZzX29wZW4sCi0JLm93bmVyID0gVEhJU19NT0RVTEUsCi0JLmxsc2VlayA9IGRlZmF1bHRf bGxzZWVrLAotfTsKLQotaW50IGF0aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFo KQotewotCXN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oYWgpOwot CXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKikg Y29tbW9uLT5wcml2OwotCi0JaWYgKCFhdGg5a19kZWJ1Z2ZzX3Jvb3QpCi0JCXJldHVybiAtRU5P RU5UOwotCi0JcHJpdi0+ZGVidWcuZGVidWdmc19waHkgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIod2lw aHlfbmFtZShwcml2LT5ody0+d2lwaHkpLAotCQkJCQkJICAgICBhdGg5a19kZWJ1Z2ZzX3Jvb3Qp OwotCWlmICghcHJpdi0+ZGVidWcuZGVidWdmc19waHkpCi0JCWdvdG8gZXJyOwotCi0JcHJpdi0+ ZGVidWcuZGVidWdmc190Z3Rfc3RhdHMgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJ0Z3Rfc3RhdHMi LCBTX0lSVVNSLAotCQkJCQkJICAgIHByaXYtPmRlYnVnLmRlYnVnZnNfcGh5LAotCQkJCQkJICAg IHByaXYsICZmb3BzX3RndF9zdGF0cyk7Ci0JaWYgKCFwcml2LT5kZWJ1Zy5kZWJ1Z2ZzX3RndF9z dGF0cykKLQkJZ290byBlcnI7Ci0KLQotCXByaXYtPmRlYnVnLmRlYnVnZnNfeG1pdCA9IGRlYnVn ZnNfY3JlYXRlX2ZpbGUoInhtaXQiLCBTX0lSVVNSLAotCQkJCQkJICAgICAgIHByaXYtPmRlYnVn LmRlYnVnZnNfcGh5LAotCQkJCQkJICAgICAgIHByaXYsICZmb3BzX3htaXQpOwotCWlmICghcHJp di0+ZGVidWcuZGVidWdmc194bWl0KQotCQlnb3RvIGVycjsKLQotCXByaXYtPmRlYnVnLmRlYnVn ZnNfcmVjdiA9IGRlYnVnZnNfY3JlYXRlX2ZpbGUoInJlY3YiLCBTX0lSVVNSLAotCQkJCQkJICAg ICAgIHByaXYtPmRlYnVnLmRlYnVnZnNfcGh5LAotCQkJCQkJICAgICAgIHByaXYsICZmb3BzX3Jl Y3YpOwotCWlmICghcHJpdi0+ZGVidWcuZGVidWdmc19yZWN2KQotCQlnb3RvIGVycjsKLQotCXJl dHVybiAwOwotCi1lcnI6Ci0JYXRoOWtfaHRjX2V4aXRfZGVidWcoYWgpOwotCXJldHVybiAtRU5P TUVNOwotfQotCi12b2lkIGF0aDlrX2h0Y19leGl0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQot ewotCXN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oYWgpOwotCXN0 cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKikgY29t bW9uLT5wcml2OwotCi0JZGVidWdmc19yZW1vdmUocHJpdi0+ZGVidWcuZGVidWdmc19yZWN2KTsK LQlkZWJ1Z2ZzX3JlbW92ZShwcml2LT5kZWJ1Zy5kZWJ1Z2ZzX3htaXQpOwotCWRlYnVnZnNfcmVt b3ZlKHByaXYtPmRlYnVnLmRlYnVnZnNfdGd0X3N0YXRzKTsKLQlkZWJ1Z2ZzX3JlbW92ZShwcml2 LT5kZWJ1Zy5kZWJ1Z2ZzX3BoeSk7Ci19Ci0KLWludCBhdGg5a19odGNfZGVidWdfY3JlYXRlX3Jv b3Qodm9pZCkKLXsKLQlhdGg5a19kZWJ1Z2ZzX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoS0JV SUxEX01PRE5BTUUsIE5VTEwpOwotCWlmICghYXRoOWtfZGVidWdmc19yb290KQotCQlyZXR1cm4g LUVOT0VOVDsKLQotCXJldHVybiAwOwotfQotCi12b2lkIGF0aDlrX2h0Y19kZWJ1Z19yZW1vdmVf cm9vdCh2b2lkKQotewotCWRlYnVnZnNfcmVtb3ZlKGF0aDlrX2RlYnVnZnNfcm9vdCk7Ci0JYXRo OWtfZGVidWdmc19yb290ID0gTlVMTDsKLX0KLQotI2VuZGlmIC8qIENPTkZJR19BVEg5S19IVENf REVCVUdGUyAqLwotCiAvKioqKioqKi8KIC8qIEFOSSAqLwogLyoqKioqKiovCi0tIAoxLjcuNC4x CgoKRnJvbSBmYmJmZGQwZDc4NzMwNzRmNTYxNGExMDBmNGZjMDM0NjUwMWZlYzI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hhcmFu QGF0aGVyb3MuY29tPgpEYXRlOiBNb24sIDE3IEphbiAyMDExIDEyOjA4OjM2ICswNTMwClN1Ympl Y3Q6IFtQQVRDSCAxMC8zNF0gYXRoOWtfaHRjOiBBZGQgUlggZXJyb3Igc3RhdGlzdGljcwoKU2ln bmVkLW9mZi1ieTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNv bT4KLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmggICAgICAgICAgIHwg ICAxNiArKysrCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5j IHwgIDEwNyArKysrKysrKysrKysrKysrKysrKysrLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGg5ay9odGNfZHJ2X3R4cnguYyAgfCAgICAyICsKIDMgZmlsZXMgY2hhbmdlZCwgMTE3IGlu c2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDlrL2h0Yy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0 Yy5oCmluZGV4IDBmNzJjMTkuLjQzMWE2YjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9odGMuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv aHRjLmgKQEAgLTI5Niw2ICsyOTYsOSBAQCBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7CiAKICNk ZWZpbmUgVFhfUVNUQVRfSU5DKHEpIChwcml2LT5kZWJ1Zy50eF9zdGF0cy5xdWV1ZV9zdGF0c1tx XSsrKQogCit2b2lkIGF0aDlrX2h0Y19lcnJfc3RhdF9yeChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYg KnByaXYsCisJCQkgICBzdHJ1Y3QgYXRoX2h0Y19yeF9zdGF0dXMgKnJ4cyk7CisKIHN0cnVjdCBh dGhfdHhfc3RhdHMgewogCXUzMiBidWZfcXVldWVkOwogCXUzMiBidWZfY29tcGxldGVkOwpAQCAt MzEwLDYgKzMxMywxNCBAQCBzdHJ1Y3QgYXRoX3J4X3N0YXRzIHsKIAl1MzIgc2tiX2FsbG9jYXRl ZDsKIAl1MzIgc2tiX2NvbXBsZXRlZDsKIAl1MzIgc2tiX2Ryb3BwZWQ7CisJdTMyIGVycl9jcmM7 CisJdTMyIGVycl9kZWNyeXB0X2NyYzsKKwl1MzIgZXJyX21pYzsKKwl1MzIgZXJyX3ByZV9kZWxp bTsKKwl1MzIgZXJyX3Bvc3RfZGVsaW07CisJdTMyIGVycl9kZWNyeXB0X2J1c3k7CisJdTMyIGVy cl9waHk7CisJdTMyIGVycl9waHlfc3RhdHNbQVRIOUtfUEhZRVJSX01BWF07CiB9OwogCiBzdHJ1 Y3QgYXRoOWtfZGVidWcgewpAQCAtMzMwLDYgKzM0MSwxMSBAQCBzdHJ1Y3QgYXRoOWtfZGVidWcg ewogCiAjZGVmaW5lIFRYX1FTVEFUX0lOQyhjKSBkbyB7IH0gd2hpbGUgKDApCiAKK3N0YXRpYyBp bmxpbmUgdm9pZCBhdGg5a19odGNfZXJyX3N0YXRfcngoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpw cml2LAorCQkJCQkgc3RydWN0IGF0aF9odGNfcnhfc3RhdHVzICpyeHMpCit7Cit9CisKICNlbmRp ZiAvKiBDT05GSUdfQVRIOUtfSFRDX0RFQlVHRlMgKi8KIAogI2RlZmluZSBBVEhfTEVEX1BJTl9E RUYgICAgICAgICAgICAgMQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDlrL2h0Y19kcnZfZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNf ZHJ2X2RlYnVnLmMKaW5kZXggOGI2NzlhYS4uNmZjNmNiNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYworKysgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCkBAIC0xMjMsMjcgKzEyMywxMTggQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc194bWl0ID0gewogCS5sbHNl ZWsgPSBkZWZhdWx0X2xsc2VlaywKIH07CiAKK3ZvaWQgYXRoOWtfaHRjX2Vycl9zdGF0X3J4KHN0 cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKKwkJCSAgIHN0cnVjdCBhdGhfaHRjX3J4X3N0YXR1 cyAqcnhzKQoreworI2RlZmluZSBSWF9QSFlfRVJSX0lOQyhjKSBwcml2LT5kZWJ1Zy5yeF9zdGF0 cy5lcnJfcGh5X3N0YXRzW2NdKysKKworCWlmIChyeHMtPnJzX3N0YXR1cyAmIEFUSDlLX1JYRVJS X0NSQykKKwkJcHJpdi0+ZGVidWcucnhfc3RhdHMuZXJyX2NyYysrOworCWlmIChyeHMtPnJzX3N0 YXR1cyAmIEFUSDlLX1JYRVJSX0RFQ1JZUFQpCisJCXByaXYtPmRlYnVnLnJ4X3N0YXRzLmVycl9k ZWNyeXB0X2NyYysrOworCWlmIChyeHMtPnJzX3N0YXR1cyAmIEFUSDlLX1JYRVJSX01JQykKKwkJ cHJpdi0+ZGVidWcucnhfc3RhdHMuZXJyX21pYysrOworCWlmIChyeHMtPnJzX3N0YXR1cyAmIEFU SDlLX1JYX0RFTElNX0NSQ19QUkUpCisJCXByaXYtPmRlYnVnLnJ4X3N0YXRzLmVycl9wcmVfZGVs aW0rKzsKKwlpZiAocnhzLT5yc19zdGF0dXMgJiBBVEg5S19SWF9ERUxJTV9DUkNfUE9TVCkKKwkJ cHJpdi0+ZGVidWcucnhfc3RhdHMuZXJyX3Bvc3RfZGVsaW0rKzsKKwlpZiAocnhzLT5yc19zdGF0 dXMgJiBBVEg5S19SWF9ERUNSWVBUX0JVU1kpCisJCXByaXYtPmRlYnVnLnJ4X3N0YXRzLmVycl9k ZWNyeXB0X2J1c3krKzsKKworCWlmIChyeHMtPnJzX3N0YXR1cyAmIEFUSDlLX1JYRVJSX1BIWSkg eworCQlwcml2LT5kZWJ1Zy5yeF9zdGF0cy5lcnJfcGh5Kys7CisJCWlmIChyeHMtPnJzX3BoeWVy ciA8IEFUSDlLX1BIWUVSUl9NQVgpCisJCQlSWF9QSFlfRVJSX0lOQyhyeHMtPnJzX3BoeWVycik7 CisJfQorCisjdW5kZWYgUlhfUEhZX0VSUl9JTkMKK30KKwogc3RhdGljIHNzaXplX3QgcmVhZF9m aWxlX3JlY3Yoc3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICp1c2VyX2J1ZiwKIAkJCSAg ICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQogeworI2RlZmluZSBQSFlfRVJSKHMsIHAp CQkJCQkJCVwKKwlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCAiJTIwcyA6 ICUxMHVcbiIsIHMsCVwKKwkJCXByaXYtPmRlYnVnLnJ4X3N0YXRzLmVycl9waHlfc3RhdHNbcF0p OworCiAJc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwot CWNoYXIgYnVmWzUxMl07Ci0JdW5zaWduZWQgaW50IGxlbiA9IDA7CisJY2hhciAqYnVmOworCXVu c2lnbmVkIGludCBsZW4gPSAwLCBzaXplID0gMTUwMDsKKwlzc2l6ZV90IHJldHZhbCA9IDA7CiAK LQlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKKwlidWYgPSBr emFsbG9jKHNpemUsIEdGUF9LRVJORUwpOworCWlmIChidWYgPT0gTlVMTCkKKwkJcmV0dXJuIC1F Tk9NRU07CisKKwlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLAogCQkJIiUy MHMgOiAlMTB1XG4iLCAiU0tCcyBhbGxvY2F0ZWQiLAogCQkJcHJpdi0+ZGVidWcucnhfc3RhdHMu c2tiX2FsbG9jYXRlZCk7Ci0JbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9mKGJ1Zikg LSBsZW4sCisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwKIAkJCSIlMjBz IDogJTEwdVxuIiwgIlNLQnMgY29tcGxldGVkIiwKIAkJCXByaXYtPmRlYnVnLnJ4X3N0YXRzLnNr Yl9jb21wbGV0ZWQpOwotCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIHNpemVvZihidWYpIC0g bGVuLAorCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sCiAJCQkiJTIwcyA6 ICUxMHVcbiIsICJTS0JzIERyb3BwZWQiLAogCQkJcHJpdi0+ZGVidWcucnhfc3RhdHMuc2tiX2Ry b3BwZWQpOwogCi0JaWYgKGxlbiA+IHNpemVvZihidWYpKQotCQlsZW4gPSBzaXplb2YoYnVmKTsK LQotCXJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3Ms IGJ1ZiwgbGVuKTsKKwlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLAorCQkJ IiUyMHMgOiAlMTB1XG4iLCAiQ1JDIEVSUiIsCisJCQlwcml2LT5kZWJ1Zy5yeF9zdGF0cy5lcnJf Y3JjKTsKKwlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLAorCQkJIiUyMHMg OiAlMTB1XG4iLCAiREVDUllQVCBDUkMgRVJSIiwKKwkJCXByaXYtPmRlYnVnLnJ4X3N0YXRzLmVy cl9kZWNyeXB0X2NyYyk7CisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwK KwkJCSIlMjBzIDogJTEwdVxuIiwgIk1JQyBFUlIiLAorCQkJcHJpdi0+ZGVidWcucnhfc3RhdHMu ZXJyX21pYyk7CisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwKKwkJCSIl MjBzIDogJTEwdVxuIiwgIlBSRS1ERUxJTSBDUkMgRVJSIiwKKwkJCXByaXYtPmRlYnVnLnJ4X3N0 YXRzLmVycl9wcmVfZGVsaW0pOworCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIHNpemUgLSBs ZW4sCisJCQkiJTIwcyA6ICUxMHVcbiIsICJQT1NULURFTElNIENSQyBFUlIiLAorCQkJcHJpdi0+ ZGVidWcucnhfc3RhdHMuZXJyX3Bvc3RfZGVsaW0pOworCWxlbiArPSBzbnByaW50ZihidWYgKyBs ZW4sIHNpemUgLSBsZW4sCisJCQkiJTIwcyA6ICUxMHVcbiIsICJERUNSWVBUIEJVU1kgRVJSIiwK KwkJCXByaXYtPmRlYnVnLnJ4X3N0YXRzLmVycl9kZWNyeXB0X2J1c3kpOworCWxlbiArPSBzbnBy aW50ZihidWYgKyBsZW4sIHNpemUgLSBsZW4sCisJCQkiJTIwcyA6ICUxMHVcbiIsICJUT1RBTCBQ SFkgRVJSIiwKKwkJCXByaXYtPmRlYnVnLnJ4X3N0YXRzLmVycl9waHkpOworCisKKwlQSFlfRVJS KCJVTkRFUlJVTiIsIEFUSDlLX1BIWUVSUl9VTkRFUlJVTik7CisJUEhZX0VSUigiVElNSU5HIiwg QVRIOUtfUEhZRVJSX1RJTUlORyk7CisJUEhZX0VSUigiUEFSSVRZIiwgQVRIOUtfUEhZRVJSX1BB UklUWSk7CisJUEhZX0VSUigiUkFURSIsIEFUSDlLX1BIWUVSUl9SQVRFKTsKKwlQSFlfRVJSKCJM RU5HVEgiLCBBVEg5S19QSFlFUlJfTEVOR1RIKTsKKwlQSFlfRVJSKCJSQURBUiIsIEFUSDlLX1BI WUVSUl9SQURBUik7CisJUEhZX0VSUigiU0VSVklDRSIsIEFUSDlLX1BIWUVSUl9TRVJWSUNFKTsK KwlQSFlfRVJSKCJUT1IiLCBBVEg5S19QSFlFUlJfVE9SKTsKKwlQSFlfRVJSKCJPRkRNLVRJTUlO RyIsIEFUSDlLX1BIWUVSUl9PRkRNX1RJTUlORyk7CisJUEhZX0VSUigiT0ZETS1TSUdOQUwtUEFS SVRZIiwgQVRIOUtfUEhZRVJSX09GRE1fU0lHTkFMX1BBUklUWSk7CisJUEhZX0VSUigiT0ZETS1S QVRFIiwgQVRIOUtfUEhZRVJSX09GRE1fUkFURV9JTExFR0FMKTsKKwlQSFlfRVJSKCJPRkRNLUxF TkdUSCIsIEFUSDlLX1BIWUVSUl9PRkRNX0xFTkdUSF9JTExFR0FMKTsKKwlQSFlfRVJSKCJPRkRN LVBPV0VSLURST1AiLCBBVEg5S19QSFlFUlJfT0ZETV9QT1dFUl9EUk9QKTsKKwlQSFlfRVJSKCJP RkRNLVNFUlZJQ0UiLCBBVEg5S19QSFlFUlJfT0ZETV9TRVJWSUNFKTsKKwlQSFlfRVJSKCJPRkRN LVJFU1RBUlQiLCBBVEg5S19QSFlFUlJfT0ZETV9SRVNUQVJUKTsKKwlQSFlfRVJSKCJGQUxTRS1S QURBUi1FWFQiLCBBVEg5S19QSFlFUlJfRkFMU0VfUkFEQVJfRVhUKTsKKwlQSFlfRVJSKCJDQ0st VElNSU5HIiwgQVRIOUtfUEhZRVJSX0NDS19USU1JTkcpOworCVBIWV9FUlIoIkNDSy1IRUFERVIt Q1JDIiwgQVRIOUtfUEhZRVJSX0NDS19IRUFERVJfQ1JDKTsKKwlQSFlfRVJSKCJDQ0stUkFURSIs IEFUSDlLX1BIWUVSUl9DQ0tfUkFURV9JTExFR0FMKTsKKwlQSFlfRVJSKCJDQ0stU0VSVklDRSIs IEFUSDlLX1BIWUVSUl9DQ0tfU0VSVklDRSk7CisJUEhZX0VSUigiQ0NLLVJFU1RBUlQiLCBBVEg5 S19QSFlFUlJfQ0NLX1JFU1RBUlQpOworCVBIWV9FUlIoIkNDSy1MRU5HVEgiLCBBVEg5S19QSFlF UlJfQ0NLX0xFTkdUSF9JTExFR0FMKTsKKwlQSFlfRVJSKCJDQ0stUE9XRVItRFJPUCIsIEFUSDlL X1BIWUVSUl9DQ0tfUE9XRVJfRFJPUCk7CisJUEhZX0VSUigiSFQtQ1JDIiwgQVRIOUtfUEhZRVJS X0hUX0NSQ19FUlJPUik7CisJUEhZX0VSUigiSFQtTEVOR1RIIiwgQVRIOUtfUEhZRVJSX0hUX0xF TkdUSF9JTExFR0FMKTsKKwlQSFlfRVJSKCJIVC1SQVRFIiwgQVRIOUtfUEhZRVJSX0hUX1JBVEVf SUxMRUdBTCk7CisKKwlpZiAobGVuID4gc2l6ZSkKKwkJbGVuID0gc2l6ZTsKKworCXJldHZhbCA9 IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBjb3VudCwgcHBvcywgYnVmLCBsZW4p OworCWtmcmVlKGJ1Zik7CisKKwlyZXR1cm4gcmV0dmFsOworCisjdW5kZWYgUEhZX0VSUgogfQog CiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3JlY3YgPSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKaW5kZXggMGUyODU1 OC4uYTYyNDk1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0 Y19kcnZfdHhyeC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2 X3R4cnguYwpAQCAtNTQwLDYgKzU0MCw4IEBAIHN0YXRpYyBib29sIGF0aDlrX3J4X3ByZXBhcmUo c3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCQlnb3RvIHJ4X25leHQ7CiAJfQogCisJYXRo OWtfaHRjX2Vycl9zdGF0X3J4KHByaXYsIHJ4c3RhdHVzKTsKKwogCS8qIEdldCB0aGUgUlggc3Rh dHVzIGluZm9ybWF0aW9uICovCiAJbWVtY3B5KCZyeGJ1Zi0+cnhzdGF0dXMsIHJ4c3RhdHVzLCBI VENfUlhfRlJBTUVfSEVBREVSX1NJWkUpOwogCXNrYl9wdWxsKHNrYiwgSFRDX1JYX0ZSQU1FX0hF QURFUl9TSVpFKTsKLS0gCjEuNy40LjEKCgpGcm9tIGRlZGU0MDkwZjE4ODQyZmRkMDYyMThjZTli MzU5YTEwZDFmMDlmYTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFN1aml0aCBNYW5v aGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+CkRhdGU6IE1vbiwgMTcgSmFuIDIw MTEgMTM6NDA6NDcgKzA1MzAKU3ViamVjdDogW1BBVENIIDExLzM0XSBhdGg5a19odGM6IEZpeCBS WCBsZW5ndGggY2hlY2sKClRoZSBsZW5ndGggb2YgdGhlIHJlY2VpdmVkIFNLQiBjb3VsZCBiZSBl cXVhbCB0bwpIVENfUlhfRlJBTUVfSEVBREVSX1NJWkUgaW4gY2FzZSBvZiBwYWNrZXRzIHdpdGgg cGh5L2NyYyBlcnJvcnMsCmluIHdoaWNoIGNhc2UgdGhleSBhcmUgZHJvcHBlZCB3aXRob3V0IGJl aW5nIHByb2Nlc3NlZC4KRml4IHRoaXMgY2hlY2sgc28gdGhhdCB0aGUgZXJyb3IgY291bnRlcnMg YXJlIHVwZGF0ZWQgY29ycmVjdGx5LgoKU2lnbmVkLW9mZi1ieTogU3VqaXRoIE1hbm9oYXJhbiA8 U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMgfCAgICA1ICsrKy0tCiAxIGZpbGVzIGNoYW5nZWQsIDMg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKaW5kZXggYTYyNDk1ZC4uN2NkM2U0ZSAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCisrKyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYwpAQCAtNTI1LDggKzUy NSw5IEBAIHN0YXRpYyBib29sIGF0aDlrX3J4X3ByZXBhcmUoc3RydWN0IGF0aDlrX2h0Y19wcml2 ICpwcml2LAogCWludCBsYXN0X3Jzc2kgPSBBVEhfUlNTSV9EVU1NWV9NQVJLRVI7CiAJX19sZTE2 IGZjOwogCi0JaWYgKHNrYi0+bGVuIDw9IEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSkgewotCQlh dGhfZXJyKGNvbW1vbiwgIkNvcnJ1cHRlZCBSWCBmcmFtZSwgZHJvcHBpbmdcbiIpOworCWlmIChz a2ItPmxlbiA8IEhUQ19SWF9GUkFNRV9IRUFERVJfU0laRSkgeworCQlhdGhfZXJyKGNvbW1vbiwg IkNvcnJ1cHRlZCBSWCBmcmFtZSwgZHJvcHBpbmcgKGxlbjogJWQpXG4iLAorCQkJc2tiLT5sZW4p OwogCQlnb3RvIHJ4X25leHQ7CiAJfQogCi0tIAoxLjcuNC4xCgoKRnJvbSAzMjNlYzdiNDM1Nzdh NDQ3ZDcyYTg3M2EwYzIyOTExNzQ0NzdhNGJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hhcmFuQGF0aGVyb3MuY29tPgpEYXRlOiBU dWUsIDE4IEphbiAyMDExIDEyOjMyOjU3ICswNTMwClN1YmplY3Q6IFtQQVRDSCAxMi8zNF0gYXRo OWtfaHRjOiBSZW1vdmUgdW51c2VkIFdNSSBjb21tYW5kcwoKV01JX1RHVF9UWFFfRU5BQkxFX0NN RElECldNSV9IT1NUX0FUVEFDSApXTUlfREVCVUdfSU5GT19DTURJRApXTUlfQkVBQ09OX1VQREFU RV9DTURJRApXTUlfUkVTRVRfQ01ESUQKV01JX1JYX0xJTktfQ01ESUQKV01JX1NUT1BfRE1BX1JF Q1ZfQ01ESUQKClNpZ25lZC1vZmYtYnk6IFN1aml0aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFy YW5AYXRoZXJvcy5jb20+Ci0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5j IHwgICAxNCAtLS0tLS0tLS0tLS0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dt aS5oIHwgICAgNyAtLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDAgaW5zZXJ0aW9ucygrKSwgMjEg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jCmluZGV4IDM5MDg4 YmUuLmM4ZWFhYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93 bWkuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMKQEAgLTI3LDE2 ICsyNywxMiBAQCBzdGF0aWMgY29uc3QgY2hhciAqd21pX2NtZF90b19uYW1lKGVudW0gd21pX2Nt ZF9pZCB3bWlfY21kKQogCQlyZXR1cm4gIldNSV9ESVNBQkxFX0lOVFJfQ01ESUQiOwogCWNhc2Ug V01JX0VOQUJMRV9JTlRSX0NNRElEOgogCQlyZXR1cm4gIldNSV9FTkFCTEVfSU5UUl9DTURJRCI7 Ci0JY2FzZSBXTUlfUlhfTElOS19DTURJRDoKLQkJcmV0dXJuICJXTUlfUlhfTElOS19DTURJRCI7 CiAJY2FzZSBXTUlfQVRIX0lOSVRfQ01ESUQ6CiAJCXJldHVybiAiV01JX0FUSF9JTklUX0NNRElE IjsKIAljYXNlIFdNSV9BQk9SVF9UWFFfQ01ESUQ6CiAJCXJldHVybiAiV01JX0FCT1JUX1RYUV9D TURJRCI7CiAJY2FzZSBXTUlfU1RPUF9UWF9ETUFfQ01ESUQ6CiAJCXJldHVybiAiV01JX1NUT1Bf VFhfRE1BX0NNRElEIjsKLQljYXNlIFdNSV9TVE9QX0RNQV9SRUNWX0NNRElEOgotCQlyZXR1cm4g IldNSV9TVE9QX0RNQV9SRUNWX0NNRElEIjsKIAljYXNlIFdNSV9BQk9SVF9UWF9ETUFfQ01ESUQ6 CiAJCXJldHVybiAiV01JX0FCT1JUX1RYX0RNQV9DTURJRCI7CiAJY2FzZSBXTUlfRFJBSU5fVFhR X0NNRElEOgpAQCAtNTEsOCArNDcsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqd21pX2NtZF90b19u YW1lKGVudW0gd21pX2NtZF9pZCB3bWlfY21kKQogCQlyZXR1cm4gIldNSV9GTFVTSF9SRUNWX0NN RElEIjsKIAljYXNlIFdNSV9TRVRfTU9ERV9DTURJRDoKIAkJcmV0dXJuICJXTUlfU0VUX01PREVf Q01ESUQiOwotCWNhc2UgV01JX1JFU0VUX0NNRElEOgotCQlyZXR1cm4gIldNSV9SRVNFVF9DTURJ RCI7CiAJY2FzZSBXTUlfTk9ERV9DUkVBVEVfQ01ESUQ6CiAJCXJldHVybiAiV01JX05PREVfQ1JF QVRFX0NNRElEIjsKIAljYXNlIFdNSV9OT0RFX1JFTU9WRV9DTURJRDoKQEAgLTYxLDggKzU1LDYg QEAgc3RhdGljIGNvbnN0IGNoYXIgKndtaV9jbWRfdG9fbmFtZShlbnVtIHdtaV9jbWRfaWQgd21p X2NtZCkKIAkJcmV0dXJuICJXTUlfVkFQX1JFTU9WRV9DTURJRCI7CiAJY2FzZSBXTUlfVkFQX0NS RUFURV9DTURJRDoKIAkJcmV0dXJuICJXTUlfVkFQX0NSRUFURV9DTURJRCI7Ci0JY2FzZSBXTUlf QkVBQ09OX1VQREFURV9DTURJRDoKLQkJcmV0dXJuICJXTUlfQkVBQ09OX1VQREFURV9DTURJRCI7 CiAJY2FzZSBXTUlfUkVHX1JFQURfQ01ESUQ6CiAJCXJldHVybiAiV01JX1JFR19SRUFEX0NNRElE IjsKIAljYXNlIFdNSV9SRUdfV1JJVEVfQ01ESUQ6CkBAIC03MSwxMCArNjMsNiBAQCBzdGF0aWMg Y29uc3QgY2hhciAqd21pX2NtZF90b19uYW1lKGVudW0gd21pX2NtZF9pZCB3bWlfY21kKQogCQly ZXR1cm4gIldNSV9SQ19TVEFURV9DSEFOR0VfQ01ESUQiOwogCWNhc2UgV01JX1JDX1JBVEVfVVBE QVRFX0NNRElEOgogCQlyZXR1cm4gIldNSV9SQ19SQVRFX1VQREFURV9DTURJRCI7Ci0JY2FzZSBX TUlfREVCVUdfSU5GT19DTURJRDoKLQkJcmV0dXJuICJXTUlfREVCVUdfSU5GT19DTURJRCI7Ci0J Y2FzZSBXTUlfSE9TVF9BVFRBQ0g6Ci0JCXJldHVybiAiV01JX0hPU1RfQVRUQUNIIjsKIAljYXNl IFdNSV9UQVJHRVRfSUNfVVBEQVRFX0NNRElEOgogCQlyZXR1cm4gIldNSV9UQVJHRVRfSUNfVVBE QVRFX0NNRElEIjsKIAljYXNlIFdNSV9UR1RfU1RBVFNfQ01ESUQ6CkBAIC04Myw4ICs3MSw2IEBA IHN0YXRpYyBjb25zdCBjaGFyICp3bWlfY21kX3RvX25hbWUoZW51bSB3bWlfY21kX2lkIHdtaV9j bWQpCiAJCXJldHVybiAiV01JX1RYX0FHR1JfRU5BQkxFX0NNRElEIjsKIAljYXNlIFdNSV9UR1Rf REVUQUNIX0NNRElEOgogCQlyZXR1cm4gIldNSV9UR1RfREVUQUNIX0NNRElEIjsKLQljYXNlIFdN SV9UR1RfVFhRX0VOQUJMRV9DTURJRDoKLQkJcmV0dXJuICJXTUlfVEdUX1RYUV9FTkFCTEVfQ01E SUQiOwogCWNhc2UgV01JX0FHR1JfTElNSVRfQ01EOgogCQlyZXR1cm4gIldNSV9BR0dSX0xJTUlU X0NNRCI7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dt aS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCmluZGV4IGVlNjc1ZGQu Ljc4OTZkZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWku aAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKQEAgLTQzLDExICs0 Myw5IEBAIGVudW0gd21pX2NtZF9pZCB7CiAJLyogQ29tbWFuZHMgdG8gVGFyZ2V0ICovCiAJV01J X0RJU0FCTEVfSU5UUl9DTURJRCwKIAlXTUlfRU5BQkxFX0lOVFJfQ01ESUQsCi0JV01JX1JYX0xJ TktfQ01ESUQsCiAJV01JX0FUSF9JTklUX0NNRElELAogCVdNSV9BQk9SVF9UWFFfQ01ESUQsCiAJ V01JX1NUT1BfVFhfRE1BX0NNRElELAotCVdNSV9TVE9QX0RNQV9SRUNWX0NNRElELAogCVdNSV9B Qk9SVF9UWF9ETUFfQ01ESUQsCiAJV01JX0RSQUlOX1RYUV9DTURJRCwKIAlXTUlfRFJBSU5fVFhR X0FMTF9DTURJRCwKQEAgLTU1LDIzICs1MywxOCBAQCBlbnVtIHdtaV9jbWRfaWQgewogCVdNSV9T VE9QX1JFQ1ZfQ01ESUQsCiAJV01JX0ZMVVNIX1JFQ1ZfQ01ESUQsCiAJV01JX1NFVF9NT0RFX0NN RElELAotCVdNSV9SRVNFVF9DTURJRCwKIAlXTUlfTk9ERV9DUkVBVEVfQ01ESUQsCiAJV01JX05P REVfUkVNT1ZFX0NNRElELAogCVdNSV9WQVBfUkVNT1ZFX0NNRElELAogCVdNSV9WQVBfQ1JFQVRF X0NNRElELAotCVdNSV9CRUFDT05fVVBEQVRFX0NNRElELAogCVdNSV9SRUdfUkVBRF9DTURJRCwK IAlXTUlfUkVHX1dSSVRFX0NNRElELAogCVdNSV9SQ19TVEFURV9DSEFOR0VfQ01ESUQsCiAJV01J X1JDX1JBVEVfVVBEQVRFX0NNRElELAotCVdNSV9ERUJVR19JTkZPX0NNRElELAotCVdNSV9IT1NU X0FUVEFDSCwKIAlXTUlfVEFSR0VUX0lDX1VQREFURV9DTURJRCwKIAlXTUlfVEdUX1NUQVRTX0NN RElELAogCVdNSV9UWF9BR0dSX0VOQUJMRV9DTURJRCwKIAlXTUlfVEdUX0RFVEFDSF9DTURJRCwK LQlXTUlfVEdUX1RYUV9FTkFCTEVfQ01ESUQsCiAJV01JX0FHR1JfTElNSVRfQ01EID0gMHgwMDI2 LAogfTsKIAotLSAKMS43LjQuMQoKCkZyb20gNWQxMzIyYzU3NTQyZWEzNjIzOTc0ZTE0NTg1Zjhk N2I3NGUyYmZlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3VqaXRoIE1hbm9oYXJh biA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KRGF0ZTogV2VkLCAxOSBKYW4gMjAxMSAw ODo1MTo0MyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMTMvMzRdIGF0aDlrX2h0YzogVXNlIFNLQidz IHByaXZhdGUgYXJlYSBmb3IgVFggcGFyYW1ldGVycwoKRm9yIGFsbCBwYWNrZXRzIHNlbnQgdGhy b3VnaCB0aGUgVVNCX1dMQU5fVFhfUElQRSBlbmRwb2ludCwKdGhlIHByaXZhdGUgYXJlYSBvZiB0 aGUgU0tCJ3MgdHhfaW5mbyBjYW4gYmUgdXNlZCB0byBzdG9yZQpkcml2ZXItc3BlY2lmaWMgaW5m b3JtYXRpb24uIEZvciBwYWNrZXRzIHNlbnQgdGhyb3VnaCBVU0JfUkVHX09VVF9QSVBFLAp0aGlz IHdpbGwgbm90IG1ha2UgYSBkaWZmZXJlbmNlIHNpbmNlIHRoZXkgYXJlIHJvdXRlZCB0aHJvdWdo IGEKc2VwYXJhdGUgcm91dGluZSB0aGF0IGRvZXNuJ3QgYWNjZXNzIHRoZSBwcml2YXRlIHJlZ2lv bi4KClRoaXMgd291bGQgaGVscCBpbiBzaXR1YXRpb25zIHdoZXJlIFRYIGluZm9ybWF0aW9uIGlz IHJlcXVpcmVkCmluIHRoZSBVUkIgY2FsbGJhY2suCgpTaWduZWQtb2ZmLWJ5OiBTdWppdGggTWFu b2hhcmFuIDxTdWppdGguTWFub2hhcmFuQGF0aGVyb3MuY29tPgotLS0KIGRyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgICAgICAgIHwgICAxNyArKysrKysrKystLS0tLS0t LQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oICAgICAgICAgICAgfCAgIDE0 ICsrKysrKysrKysrKystCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9i ZWFjb24uYyB8ICAgMTEgKysrKysrKy0tLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGNfZHJ2X3R4cnguYyAgIHwgICAxNSArKysrKysrKy0tLS0tLS0KIGRyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMgICAgICAgIHwgICAxOCArKysrKysrKystLS0tLS0t LS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmggICAgICAgIHwgICAg NSArKy0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jICAgICAgICAgICAg fCAgICAyICstCiA3IGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNi LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCmluZGV4IGYxYjhh ZjYuLmQ1NmExMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9o aWZfdXNiLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYwpA QCAtMjg2LDkgKzI4Niw5IEBAIHN0YXRpYyBpbnQgX19oaWZfdXNiX3R4KHN0cnVjdCBoaWZfZGV2 aWNlX3VzYiAqaGlmX2RldikKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IGhpZl91c2Jf c2VuZF90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpz a2IsCi0JCQkgICBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqdHhfY3RsKQorc3RhdGljIGludCBo aWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2LCBzdHJ1Y3Qgc2tf YnVmZiAqc2tiKQogeworCXN0cnVjdCBhdGg5a19odGNfdHhfY3RsICp0eF9jdGw7CiAJdW5zaWdu ZWQgbG9uZyBmbGFnczsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZoaWZfZGV2LT50eC50eF9sb2Nr LCBmbGFncyk7CkBAIC0zMDcsMTIgKzMwNywxNCBAQCBzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90 eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IsCiAJ X19za2JfcXVldWVfdGFpbCgmaGlmX2Rldi0+dHgudHhfc2tiX3F1ZXVlLCBza2IpOwogCWhpZl9k ZXYtPnR4LnR4X3NrYl9jbnQrKzsKIAotCS8qIFNlbmQgbm9ybWFsIGZyYW1lcyBpbW1lZGlhdGVs eSAqLwotCWlmICghdHhfY3RsIHx8ICh0eF9jdGwgJiYgKHR4X2N0bC0+dHlwZSA9PSBBVEg5S19I VENfTk9STUFMKSkpCisJdHhfY3RsID0gSFRDX1NLQl9DQihza2IpOworCisJLyogU2VuZCBub3Jt YWwvbWdtdC9iZWFjb24gZnJhbWVzIGltbWVkaWF0ZWx5ICovCisJaWYgKHR4X2N0bC0+dHlwZSAh PSBBVEg5S19IVENfQU1QRFUpCiAJCV9faGlmX3VzYl90eChoaWZfZGV2KTsKIAogCS8qIENoZWNr IGlmIEFNUERVcyBoYXZlIHRvIGJlIHNlbnQgaW1tZWRpYXRlbHkgKi8KLQlpZiAodHhfY3RsICYm ICh0eF9jdGwtPnR5cGUgPT0gQVRIOUtfSFRDX0FNUERVKSAmJgorCWlmICgodHhfY3RsLT50eXBl ID09IEFUSDlLX0hUQ19BTVBEVSkgJiYKIAkgICAgKGhpZl9kZXYtPnR4LnR4X2J1Zl9jbnQgPT0g TUFYX1RYX1VSQl9OVU0pICYmCiAJICAgIChoaWZfZGV2LT50eC50eF9za2JfY250IDwgMikpIHsK IAkJX19oaWZfdXNiX3R4KGhpZl9kZXYpOwpAQCAtMzU0LDE1ICszNTYsMTQgQEAgc3RhdGljIHZv aWQgaGlmX3VzYl9zdG9wKHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGVfaWQpCiAJfQogfQogCi1z dGF0aWMgaW50IGhpZl91c2Jfc2VuZCh2b2lkICpoaWZfaGFuZGxlLCB1OCBwaXBlX2lkLCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLAotCQkJc3RydWN0IGF0aDlrX2h0Y190eF9jdGwgKnR4X2N0bCkKK3N0 YXRpYyBpbnQgaGlmX3VzYl9zZW5kKHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGVfaWQsIHN0cnVj dCBza19idWZmICpza2IpCiB7CiAJc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2ID0gKHN0 cnVjdCBoaWZfZGV2aWNlX3VzYiAqKWhpZl9oYW5kbGU7CiAJaW50IHJldCA9IDA7CiAKIAlzd2l0 Y2ggKHBpcGVfaWQpIHsKIAljYXNlIFVTQl9XTEFOX1RYX1BJUEU6Ci0JCXJldCA9IGhpZl91c2Jf c2VuZF90eChoaWZfZGV2LCBza2IsIHR4X2N0bCk7CisJCXJldCA9IGhpZl91c2Jfc2VuZF90eCho aWZfZGV2LCBza2IpOwogCQlicmVhazsKIAljYXNlIFVTQl9SRUdfT1VUX1BJUEU6CiAJCXJldCA9 IGhpZl91c2Jfc2VuZF9yZWdvdXQoaGlmX2Rldiwgc2tiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGg5ay9odGMuaAppbmRleCA0MzFhNmI3Li5lMzQ2OTYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2h0Yy5oCkBAIC02Nyw4ICs2NywxMSBAQCBlbnVtIGh0Y19vcG1vZGUgewogfTsKIAog I2RlZmluZSBBVEg5S19IVENfSERSU1BBQ0Ugc2l6ZW9mKHN0cnVjdCBodGNfZnJhbWVfaGRyKQot I2RlZmluZSBBVEg5S19IVENfQU1QRFUJMQorCisjZGVmaW5lIEFUSDlLX0hUQ19BTVBEVSAgMQog I2RlZmluZSBBVEg5S19IVENfTk9STUFMIDIKKyNkZWZpbmUgQVRIOUtfSFRDX0JFQUNPTiAzCisj ZGVmaW5lIEFUSDlLX0hUQ19NR01UICAgNAogCiAjZGVmaW5lIEFUSDlLX0hUQ19UWF9DVFNPTkxZ ICAgICAgMHgxCiAjZGVmaW5lIEFUSDlLX0hUQ19UWF9SVFNDVFMgICAgICAgMHgyCkBAIC0yODgs NiArMjkxLDE1IEBAIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsIHsKIAl1OCB0eXBlOyAvKiBBVEg5 S19IVENfKiAqLwogfTsKIAorc3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAq SFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQoreworCXN0cnVjdCBpZWVlODAyMTFfdHhf aW5mbyAqdHhfaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTsKKworCUJVSUxEX0JVR19PTihz aXplb2Yoc3RydWN0IGF0aDlrX2h0Y190eF9jdGwpID4KKwkJICAgICBJRUVFODAyMTFfVFhfSU5G T19EUklWRVJfREFUQV9TSVpFKTsKKwlyZXR1cm4gKHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICop ICZ0eF9pbmZvLT5kcml2ZXJfZGF0YTsKK30KKwogI2lmZGVmIENPTkZJR19BVEg5S19IVENfREVC VUdGUwogCiAjZGVmaW5lIFRYX1NUQVRfSU5DKGMpIChoaWZfZGV2LT5odGNfaGFuZGxlLT5kcnZf cHJpdi0+ZGVidWcudHhfc3RhdHMuYysrKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDlrL2h0Y19kcnZfYmVhY29uLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoOWsvaHRjX2Rydl9iZWFjb24uYwppbmRleCAwYzQ4NDk4Li43NzhmOTk5IDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYworKysgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYwpAQCAtMzQ1LDcg KzM0NSw3IEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19zZW5kX2JlYWNvbihzdHJ1Y3QgYXRoOWtf aHRjX3ByaXYgKnByaXYsCiAJc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZjsKIAlzdHJ1Y3QgYXRo OWtfaHRjX3ZpZiAqYXZwOwogCXN0cnVjdCB0eF9iZWFjb25faGVhZGVyIGJlYWNvbl9oZHI7Ci0J c3RydWN0IGF0aDlrX2h0Y190eF9jdGwgdHhfY3RsOworCXN0cnVjdCBhdGg5a19odGNfdHhfY3Rs ICp0eF9jdGw7CiAJc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvOwogCXN0cnVjdCBpZWVl ODAyMTFfbWdtdCAqbWdtdDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqYmVhY29uOwpAQCAtMzUzLDcgKzM1 Myw2IEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19zZW5kX2JlYWNvbihzdHJ1Y3QgYXRoOWtfaHRj X3ByaXYgKnByaXYsCiAJaW50IHJldDsKIAogCW1lbXNldCgmYmVhY29uX2hkciwgMCwgc2l6ZW9m KHN0cnVjdCB0eF9iZWFjb25faGVhZGVyKSk7Ci0JbWVtc2V0KCZ0eF9jdGwsIDAsIHNpemVvZihz dHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCkpOwogCiAJc3Bpbl9sb2NrX2JoKCZwcml2LT5iZWFjb25f bG9jayk7CiAKQEAgLTM4OCwxMiArMzg3LDE2IEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19zZW5k X2JlYWNvbihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJCWhkci0+c2VxX2N0cmwgfD0g Y3B1X3RvX2xlMTYoYXZwLT5zZXFfbm8pOwogCX0KIAotCXR4X2N0bC50eXBlID0gQVRIOUtfSFRD X05PUk1BTDsKKwl0eF9jdGwgPSBIVENfU0tCX0NCKGJlYWNvbik7CisJbWVtc2V0KHR4X2N0bCwg MCwgc2l6ZW9mKCp0eF9jdGwpKTsKKworCXR4X2N0bC0+dHlwZSA9IEFUSDlLX0hUQ19CRUFDT047 CisKIAliZWFjb25faGRyLnZpZl9pbmRleCA9IGF2cC0+aW5kZXg7CiAJdHhfZmhkciA9IHNrYl9w dXNoKGJlYWNvbiwgc2l6ZW9mKGJlYWNvbl9oZHIpKTsKIAltZW1jcHkodHhfZmhkciwgKHU4ICop ICZiZWFjb25faGRyLCBzaXplb2YoYmVhY29uX2hkcikpOwogCi0JcmV0ID0gaHRjX3NlbmQocHJp di0+aHRjLCBiZWFjb24sIHByaXYtPmJlYWNvbl9lcCwgJnR4X2N0bCk7CisJcmV0ID0gaHRjX3Nl bmQocHJpdi0+aHRjLCBiZWFjb24sIHByaXYtPmJlYWNvbl9lcCk7CiAJaWYgKHJldCAhPSAwKSB7 CiAJCWlmIChyZXQgPT0gLUVOT01FTSkgewogCQkJYXRoX2RiZyhjb21tb24sIEFUSF9EQkdfQlNU VUNLLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZf dHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCmlu ZGV4IDdjZDNlNGUuLmFiNTVkZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGg5ay9odGNfZHJ2X3R4cnguYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo OWsvaHRjX2Rydl90eHJ4LmMKQEAgLTg5LDEzICs4OSwxNiBAQCBpbnQgYXRoOWtfaHRjX3R4X3N0 YXJ0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAq dmlmID0gdHhfaW5mby0+Y29udHJvbC52aWY7CiAJc3RydWN0IGF0aDlrX2h0Y19zdGEgKmlzdGE7 CiAJc3RydWN0IGF0aDlrX2h0Y192aWYgKmF2cCA9IE5VTEw7Ci0Jc3RydWN0IGF0aDlrX2h0Y190 eF9jdGwgdHhfY3RsOworCXN0cnVjdCBhdGg5a19odGNfdHhfY3RsICp0eF9jdGw7CiAJZW51bSBo dGNfZW5kcG9pbnRfaWQgZXBpZDsKIAl1MTYgcW51bTsKIAlfX2xlMTYgZmM7CiAJdTggKnR4X2Zo ZHI7CiAJdTggc3RhX2lkeCwgdmlmX2lkeDsKIAorCXR4X2N0bCA9IEhUQ19TS0JfQ0Ioc2tiKTsK KwltZW1zZXQodHhfY3RsLCAwLCBzaXplb2YoKnR4X2N0bCkpOworCiAJaGRyID0gKHN0cnVjdCBp ZWVlODAyMTFfaGRyICopIHNrYi0+ZGF0YTsKIAlmYyA9IGhkci0+ZnJhbWVfY29udHJvbDsKIApA QCAtMTI2LDggKzEyOSw2IEBAIGludCBhdGg5a19odGNfdHhfc3RhcnQoc3RydWN0IGF0aDlrX2h0 Y19wcml2ICpwcml2LAogCQlzdGFfaWR4ID0gcHJpdi0+dmlmX3N0YV9wb3NbdmlmX2lkeF07CiAJ fQogCi0JbWVtc2V0KCZ0eF9jdGwsIDAsIHNpemVvZihzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCkp OwotCiAJaWYgKGllZWU4MDIxMV9pc19kYXRhKGZjKSkgewogCQlzdHJ1Y3QgdHhfZnJhbWVfaGRy IHR4X2hkcjsKIAkJdTMyIGZsYWdzID0gMDsKQEAgLTEzOSwxMCArMTQwLDEwIEBAIGludCBhdGg5 a19odGNfdHhfc3RhcnQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCQl0eF9oZHIudmlm X2lkeCA9IHZpZl9pZHg7CiAKIAkJaWYgKHR4X2luZm8tPmZsYWdzICYgSUVFRTgwMjExX1RYX0NU TF9BTVBEVSkgewotCQkJdHhfY3RsLnR5cGUgPSBBVEg5S19IVENfQU1QRFU7CisJCQl0eF9jdGwt PnR5cGUgPSBBVEg5S19IVENfQU1QRFU7CiAJCQl0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRD X0FNUERVOwogCQl9IGVsc2UgewotCQkJdHhfY3RsLnR5cGUgPSBBVEg5S19IVENfTk9STUFMOwor CQkJdHhfY3RsLT50eXBlID0gQVRIOUtfSFRDX05PUk1BTDsKIAkJCXR4X2hkci5kYXRhX3R5cGUg PSBBVEg5S19IVENfTk9STUFMOwogCQl9CiAKQEAgLTIxMiw3ICsyMTMsNyBAQCBpbnQgYXRoOWtf aHRjX3R4X3N0YXJ0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAkJCW1nbXQtPnUucHJv YmVfcmVzcC50aW1lc3RhbXAgPSBhdnAtPnRzZmFkanVzdDsKIAkJfQogCi0JCXR4X2N0bC50eXBl ID0gQVRIOUtfSFRDX05PUk1BTDsKKwkJdHhfY3RsLT50eXBlID0gQVRIOUtfSFRDX01HTVQ7CiAK IAkJbWdtdF9oZHIubm9kZV9pZHggPSBzdGFfaWR4OwogCQltZ210X2hkci52aWZfaWR4ID0gdmlm X2lkeDsKQEAgLTIzMCw3ICsyMzEsNyBAQCBpbnQgYXRoOWtfaHRjX3R4X3N0YXJ0KHN0cnVjdCBh dGg5a19odGNfcHJpdiAqcHJpdiwKIAkJZXBpZCA9IHByaXYtPm1nbXRfZXA7CiAJfQogc2VuZDoK LQlyZXR1cm4gaHRjX3NlbmQocHJpdi0+aHRjLCBza2IsIGVwaWQsICZ0eF9jdGwpOworCXJldHVy biBodGNfc2VuZChwcml2LT5odGMsIHNrYiwgZXBpZCk7CiB9CiAKIHN0YXRpYyBib29sIGF0aDlr X2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jCmluZGV4IGM0MWFiOGMuLjZlZTUzZGUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMKKysrIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYwpAQCAtMTcsOCArMTcsOCBA QAogI2luY2x1ZGUgImh0Yy5oIgogCiBzdGF0aWMgaW50IGh0Y19pc3N1ZV9zZW5kKHN0cnVjdCBo dGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBza19idWZmKiBza2IsCi0JCQkgIHUxNiBsZW4sIHU4 IGZsYWdzLCB1OCBlcGlkLAotCQkJICBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqdHhfY3RsKQor CQkJICB1MTYgbGVuLCB1OCBmbGFncywgdTggZXBpZCkKKwogewogCXN0cnVjdCBodGNfZnJhbWVf aGRyICpoZHI7CiAJc3RydWN0IGh0Y19lbmRwb2ludCAqZW5kcG9pbnQgPSAmdGFyZ2V0LT5lbmRw b2ludFtlcGlkXTsKQEAgLTMwLDggKzMwLDggQEAgc3RhdGljIGludCBodGNfaXNzdWVfc2VuZChz dHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LCBzdHJ1Y3Qgc2tfYnVmZiogc2tiLAogCWhkci0+Zmxh Z3MgPSBmbGFnczsKIAloZHItPnBheWxvYWRfbGVuID0gY3B1X3RvX2JlMTYobGVuKTsKIAotCXN0 YXR1cyA9IHRhcmdldC0+aGlmLT5zZW5kKHRhcmdldC0+aGlmX2RldiwgZW5kcG9pbnQtPnVsX3Bp cGVpZCwgc2tiLAotCQkJCSAgIHR4X2N0bCk7CisJc3RhdHVzID0gdGFyZ2V0LT5oaWYtPnNlbmQo dGFyZ2V0LT5oaWZfZGV2LCBlbmRwb2ludC0+dWxfcGlwZWlkLCBza2IpOworCiAJcmV0dXJuIHN0 YXR1czsKIH0KIApAQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyBpbnQgaHRjX2NvbmZpZ19waXBl X2NyZWRpdHMoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCkKIAogCXRhcmdldC0+aHRjX2ZsYWdz IHw9IEhUQ19PUF9DT05GSUdfUElQRV9DUkVESVRTOwogCi0JcmV0ID0gaHRjX2lzc3VlX3NlbmQo dGFyZ2V0LCBza2IsIHNrYi0+bGVuLCAwLCBFTkRQT0lOVDAsIE5VTEwpOworCXJldCA9IGh0Y19p c3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItPmxlbiwgMCwgRU5EUE9JTlQwKTsKIAlpZiAocmV0 KQogCQlnb3RvIGVycjsKIApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBpbnQgaHRjX3NldHVw X2NvbXBsZXRlKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQpCiAKIAl0YXJnZXQtPmh0Y19mbGFn cyB8PSBIVENfT1BfU1RBUlRfV0FJVDsKIAotCXJldCA9IGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwg c2tiLCBza2ItPmxlbiwgMCwgRU5EUE9JTlQwLCBOVUxMKTsKKwlyZXQgPSBodGNfaXNzdWVfc2Vu ZCh0YXJnZXQsIHNrYiwgc2tiLT5sZW4sIDAsIEVORFBPSU5UMCk7CiAJaWYgKHJldCkKIAkJZ290 byBlcnI7CiAKQEAgLTI2OCw3ICsyNjgsNyBAQCBpbnQgaHRjX2Nvbm5lY3Rfc2VydmljZShzdHJ1 Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LAogCWNvbm5fbXNnLT5kbF9waXBlaWQgPSBlbmRwb2ludC0+ ZGxfcGlwZWlkOwogCWNvbm5fbXNnLT51bF9waXBlaWQgPSBlbmRwb2ludC0+dWxfcGlwZWlkOwog Ci0JcmV0ID0gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi0+bGVuLCAwLCBFTkRQT0lO VDAsIE5VTEwpOworCXJldCA9IGh0Y19pc3N1ZV9zZW5kKHRhcmdldCwgc2tiLCBza2ItPmxlbiwg MCwgRU5EUE9JTlQwKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycjsKIApAQCAtMjg3LDkgKzI4Nyw5 IEBAIGVycjoKIH0KIAogaW50IGh0Y19zZW5kKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0 cnVjdCBza19idWZmICpza2IsCi0JICAgICBlbnVtIGh0Y19lbmRwb2ludF9pZCBlcGlkLCBzdHJ1 Y3QgYXRoOWtfaHRjX3R4X2N0bCAqdHhfY3RsKQorCSAgICAgZW51bSBodGNfZW5kcG9pbnRfaWQg ZXBpZCkKIHsKLQlyZXR1cm4gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi0+bGVuLCAw LCBlcGlkLCB0eF9jdGwpOworCXJldHVybiBodGNfaXNzdWVfc2VuZCh0YXJnZXQsIHNrYiwgc2ti LT5sZW4sIDAsIGVwaWQpOwogfQogCiB2b2lkIGh0Y19zdG9wKHN0cnVjdCBodGNfdGFyZ2V0ICp0 YXJnZXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hz dC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuaAppbmRleCBlY2Qw MTg3Li4zNTMxNTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv aHRjX2hzdC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmgK QEAgLTM1LDggKzM1LDcgQEAgc3RydWN0IGF0aDlrX2h0Y19oaWYgewogCiAJdm9pZCAoKnN0YXJ0 KSAodm9pZCAqaGlmX2hhbmRsZSwgdTggcGlwZSk7CiAJdm9pZCAoKnN0b3ApICh2b2lkICpoaWZf aGFuZGxlLCB1OCBwaXBlKTsKLQlpbnQgKCpzZW5kKSAodm9pZCAqaGlmX2hhbmRsZSwgdTggcGlw ZSwgc3RydWN0IHNrX2J1ZmYgKmJ1ZiwKLQkJICAgICBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAq dHhfY3RsKTsKKwlpbnQgKCpzZW5kKSAodm9pZCAqaGlmX2hhbmRsZSwgdTggcGlwZSwgc3RydWN0 IHNrX2J1ZmYgKmJ1Zik7CiB9OwogCiBlbnVtIGh0Y19lbmRwb2ludF9pZCB7CkBAIC0yMDYsNyAr MjA1LDcgQEAgaW50IGh0Y19jb25uZWN0X3NlcnZpY2Uoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdl dCwKIAkJCSAgc3RydWN0IGh0Y19zZXJ2aWNlX2Nvbm5yZXEgKnNlcnZpY2VfY29ubnJlcSwKIAkJ CSAgZW51bSBodGNfZW5kcG9pbnRfaWQgKmNvbm5fcnNwX2VpZCk7CiBpbnQgaHRjX3NlbmQoc3Ry dWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKLQkgICAgIGVudW0g aHRjX2VuZHBvaW50X2lkIGVpZCwgc3RydWN0IGF0aDlrX2h0Y190eF9jdGwgKnR4X2N0bCk7CisJ ICAgICBlbnVtIGh0Y19lbmRwb2ludF9pZCBlaWQpOwogdm9pZCBodGNfc3RvcChzdHJ1Y3QgaHRj X3RhcmdldCAqdGFyZ2V0KTsKIHZvaWQgaHRjX3N0YXJ0KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJn ZXQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMKaW5kZXggYzhlYWFiMy4uYTkx NmM5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jCisr KyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYwpAQCAtMjY1LDcgKzI2NSw3 IEBAIHN0YXRpYyBpbnQgYXRoOWtfd21pX2NtZF9pc3N1ZShzdHJ1Y3Qgd21pICp3bWksCiAJaGRy LT5jb21tYW5kX2lkID0gY3B1X3RvX2JlMTYoY21kKTsKIAloZHItPnNlcV9ubyA9IGNwdV90b19i ZTE2KCsrd21pLT50eF9zZXFfaWQpOwogCi0JcmV0dXJuIGh0Y19zZW5kKHdtaS0+aHRjLCBza2Is IHdtaS0+Y3RybF9lcGlkLCBOVUxMKTsKKwlyZXR1cm4gaHRjX3NlbmQod21pLT5odGMsIHNrYiwg d21pLT5jdHJsX2VwaWQpOwogfQogCiBpbnQgYXRoOWtfd21pX2NtZChzdHJ1Y3Qgd21pICp3bWks IGVudW0gd21pX2NtZF9pZCBjbWRfaWQsCi0tIAoxLjcuNC4xCgoKRnJvbSBlMWQwNTZmYmI0ZmUx ZGZlMjYyOTc0ZTNkZDk1YWNkOGNiNzVhMGZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hhcmFuQGF0aGVyb3MuY29tPgpEYXRlOiBT dW4sIDIzIEphbiAyMDExIDA5OjIzOjA4ICswNTMwClN1YmplY3Q6IFtQQVRDSCAxNC8zNF0gYXRo OWtfaHRjOiBTeW5jIHN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3N0YSB3aXRoIEZXCgpTaWduZWQt b2ZmLWJ5OiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hhcmFuQGF0aGVyb3MuY29tPgot LS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaCAgICAgICAgICB8ICAgMjkg KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv aHRjX2Rydl9tYWluLmMgfCAgICA2ICstLS0KIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25z KCspLCAzMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaHRjLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKaW5k ZXggZTM0Njk2Mi4uNzJhYTA0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2h0Yy5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaApA QCAtMTA0LDE3ICsxMDQsNiBAQCBzdHJ1Y3QgdHhfYmVhY29uX2hlYWRlciB7CiAJdTE2IHJldjsK IH0gX19wYWNrZWQ7CiAKLXN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X2h3IHsKLQl1MzIgZmxhZ3M7 Ci0JdTMyIGZsYWdzX2V4dDsKLQl1MzIgYW1wZHVfbGltaXQ7Ci0JdTggYW1wZHVfc3ViZnJhbWVz OwotCXU4IHR4X2NoYWlubWFzazsKLQl1OCB0eF9jaGFpbm1hc2tfbGVnYWN5OwotCXU4IHJ0c2N0 c19yYXRlY29kZTsKLQl1OCBwcm90bW9kZTsKLX0gX19wYWNrZWQ7Ci0KIHN0cnVjdCBhdGg5a19o dGNfY2FwX3RhcmdldCB7CiAJdTMyIGZsYWdzOwogCXUzMiBmbGFnc19leHQ7CkBAIC0xNDYsMjcg KzEzNSwxNSBAQCBzdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF92aWYgewogI2RlZmluZSBBVEhfSFRD X1NUQV9FUlAgICAweDAwMDQKICNkZWZpbmUgQVRIX0hUQ19TVEFfSFQgICAgMHgwMDA4CiAKLS8q IEZJWE1FOiBVQVBTRCB2YXJpYWJsZXMgKi8KIHN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3N0YSB7 Ci0JdTE2IGFzc29jaWQ7Ci0JdTE2IHR4cG93ZXI7Ci0JdTMyIHVjYXN0a2V5OwogCXU4IG1hY2Fk ZHJbRVRIX0FMRU5dOwogCXU4IGJzc2lkW0VUSF9BTEVOXTsKIAl1OCBzdGFfaW5kZXg7CiAJdTgg dmlmX2luZGV4OwotCXU4IHZpZl9zdGE7Ci0JX19iZTE2IGZsYWdzOyAvKiBBVEhfSFRDX1NUQV8q ICovCi0JdTE2IGh0Y2FwOwotCXU4IHZhbGlkOwotCXUxNiBjYXBpbmZvOwotCXN0cnVjdCBhdGg5 a19odGNfdGFyZ2V0X2h3ICpodzsKLQlzdHJ1Y3QgYXRoOWtfaHRjX3RhcmdldF92aWYgKnZpZjsK LQl1MTYgdHhzZXFtZ210OwogCXU4IGlzX3ZpZl9zdGE7Ci0JdTE2IG1heGFtcGR1OwotCXUxNiBp djE2OwotCXUzMiBpdjMyOworCV9fYmUxNiBmbGFnczsgLyogQVRIX0hUQ19TVEFfKiAqLworCV9f YmUxNiBodGNhcDsKKwlfX2JlMTYgbWF4YW1wZHU7CiB9IF9fcGFja2VkOwogCiBzdHJ1Y3QgYXRo OWtfaHRjX3RhcmdldF9hZ2dyIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGg5ay9odGNfZHJ2X21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9o dGNfZHJ2X21haW4uYwppbmRleCA1OTcxMGU3Li45YmIyMGYzIDEwMDY0NAotLS0gYS9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jCkBAIC0zODIsNyArMzgyLDcgQEAgc3Rh dGljIGludCBhdGg5a19odGNfYWRkX21vbml0b3JfaW50ZXJmYWNlKHN0cnVjdCBhdGg5a19odGNf cHJpdiAqcHJpdikKIAl0c3RhLmlzX3ZpZl9zdGEgPSAxOwogCXRzdGEuc3RhX2luZGV4ID0gc3Rh X2lkeDsKIAl0c3RhLnZpZl9pbmRleCA9IGh2aWYuaW5kZXg7Ci0JdHN0YS5tYXhhbXBkdSA9IDB4 ZmZmZjsKKwl0c3RhLm1heGFtcGR1ID0gY3B1X3RvX2JlMTYoMHhmZmZmKTsKIAogCVdNSV9DTURf QlVGKFdNSV9OT0RFX0NSRUFURV9DTURJRCwgJnRzdGEpOwogCWlmIChyZXQpIHsKQEAgLTQ2Myw5 ICs0NjMsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2h0Y19hZGRfc3RhdGlvbihzdHJ1Y3QgYXRoOWtf aHRjX3ByaXYgKnByaXYsCiAJCWlzdGEgPSAoc3RydWN0IGF0aDlrX2h0Y19zdGEgKikgc3RhLT5k cnZfcHJpdjsKIAkJbWVtY3B5KCZ0c3RhLm1hY2FkZHIsIHN0YS0+YWRkciwgRVRIX0FMRU4pOwog CQltZW1jcHkoJnRzdGEuYnNzaWQsIGNvbW1vbi0+Y3VyYnNzaWQsIEVUSF9BTEVOKTsKLQkJdHN0 YS5hc3NvY2lkID0gY29tbW9uLT5jdXJhaWQ7CiAJCXRzdGEuaXNfdmlmX3N0YSA9IDA7Ci0JCXRz dGEudmFsaWQgPSB0cnVlOwogCQlpc3RhLT5pbmRleCA9IHN0YV9pZHg7CiAJfSBlbHNlIHsKIAkJ bWVtY3B5KCZ0c3RhLm1hY2FkZHIsIHZpZi0+YWRkciwgRVRIX0FMRU4pOwpAQCAtNDc0LDcgKzQ3 Miw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9zdGF0aW9uKHN0cnVjdCBhdGg5a19odGNf cHJpdiAqcHJpdiwKIAogCXRzdGEuc3RhX2luZGV4ID0gc3RhX2lkeDsKIAl0c3RhLnZpZl9pbmRl eCA9IGF2cC0+aW5kZXg7Ci0JdHN0YS5tYXhhbXBkdSA9IDB4ZmZmZjsKKwl0c3RhLm1heGFtcGR1 ID0gY3B1X3RvX2JlMTYoMHhmZmZmKTsKIAlpZiAoc3RhICYmIHN0YS0+aHRfY2FwLmh0X3N1cHBv cnRlZCkKIAkJdHN0YS5mbGFncyA9IGNwdV90b19iZTE2KEFUSF9IVENfU1RBX0hUKTsKIAotLSAK MS43LjQuMQoKCkZyb20gYTA4ZjgwNDRkMmE0YmE4MTNmMTY5YjJiYjllODJhOTkyZTBiNmY0NCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1h bm9oYXJhbkBhdGhlcm9zLmNvbT4KRGF0ZTogU3VuLCAyMyBKYW4gMjAxMSAwOTo0MjozNyArMDUz MApTdWJqZWN0OiBbUEFUQ0ggMTUvMzRdIGF0aDlrX2h0YzogU3luYyBzdHJ1Y3QgYXRoOWtfaHRj X3RhcmdldF92aWYgd2l0aCBGVwoKU2lnbmVkLW9mZi1ieTogU3VqaXRoIE1hbm9oYXJhbiA8U3Vq aXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoOWsvaHRjLmggICAgICAgICAgfCAgIDExICsrLS0tLS0tLS0tCiBkcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMgfCAgICA4ICsrKystLS0tCiAyIGZpbGVzIGNo YW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDlrL2h0Yy5oCmluZGV4IDcyYWEwNGUuLmIxMzRkNDEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoOWsvaHRjLmgKQEAgLTExNywxNyArMTE3LDEwIEBAIHN0cnVjdCBhdGg5a19odGNf Y2FwX3RhcmdldCB7CiAKIHN0cnVjdCBhdGg5a19odGNfdGFyZ2V0X3ZpZiB7CiAJdTggaW5kZXg7 Ci0JdTggZGVzX2Jzc2lkW0VUSF9BTEVOXTsKLQlfX2JlMzIgb3Btb2RlOworCXU4IG9wbW9kZTsK IAl1OCBteWFkZHJbRVRIX0FMRU5dOwotCXU4IGJzc2lkW0VUSF9BTEVOXTsKLQl1MzIgZmxhZ3M7 Ci0JdTMyIGZsYWdzX2V4dDsKLQl1MTYgcHNfc3RhOwotCV9fYmUxNiBydHN0aHJlc2hvbGQ7CiAJ dTggYXRoX2NhcDsKLQl1OCBub2RlOwotCXM4IG1jYXN0X3JhdGU7CisJX19iZTE2IHJ0c3RocmVz aG9sZDsKIH0gX19wYWNrZWQ7CiAKICNkZWZpbmUgQVRIX0hUQ19TVEFfQVVUSCAgMHgwMDAxCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMKaW5kZXggOWJi MjBmMy4uNDAwMjI2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L2h0Y19kcnZfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNf ZHJ2X21haW4uYwpAQCAtMzQ5LDcgKzM0OSw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaHRjX2FkZF9t b25pdG9yX2ludGVyZmFjZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCiAJbWVtc2V0KCZo dmlmLCAwLCBzaXplb2Yoc3RydWN0IGF0aDlrX2h0Y190YXJnZXRfdmlmKSk7CiAJbWVtY3B5KCZo dmlmLm15YWRkciwgY29tbW9uLT5tYWNhZGRyLCBFVEhfQUxFTik7CiAKLQlodmlmLm9wbW9kZSA9 IGNwdV90b19iZTMyKEhUQ19NX01PTklUT1IpOworCWh2aWYub3Btb2RlID0gSFRDX01fTU9OSVRP UjsKIAlodmlmLmluZGV4ID0gZmZ6KHByaXYtPnZpZl9zbG90KTsKIAogCVdNSV9DTURfQlVGKFdN SV9WQVBfQ1JFQVRFX0NNRElELCAmaHZpZik7CkBAIC0xMDM5LDEzICsxMDM5LDEzIEBAIHN0YXRp YyBpbnQgYXRoOWtfaHRjX2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAK IAlzd2l0Y2ggKHZpZi0+dHlwZSkgewogCWNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjoKLQkJ aHZpZi5vcG1vZGUgPSBjcHVfdG9fYmUzMihIVENfTV9TVEEpOworCQlodmlmLm9wbW9kZSA9IEhU Q19NX1NUQTsKIAkJYnJlYWs7CiAJY2FzZSBOTDgwMjExX0lGVFlQRV9BREhPQzoKLQkJaHZpZi5v cG1vZGUgPSBjcHVfdG9fYmUzMihIVENfTV9JQlNTKTsKKwkJaHZpZi5vcG1vZGUgPSBIVENfTV9J QlNTOwogCQlicmVhazsKIAljYXNlIE5MODAyMTFfSUZUWVBFX0FQOgotCQlodmlmLm9wbW9kZSA9 IGNwdV90b19iZTMyKEhUQ19NX0hPU1RBUCk7CisJCWh2aWYub3Btb2RlID0gSFRDX01fSE9TVEFQ OwogCQlicmVhazsKIAlkZWZhdWx0OgogCQlhdGhfZXJyKGNvbW1vbiwKLS0gCjEuNy40LjEKCgpG cm9tIDFlYThhMWVjMGZkNzgzNWIyMzg4M2JiMmU2ZTQ3ODgyZTRiOTA5NTYgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IFN1aml0aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRo ZXJvcy5jb20+CkRhdGU6IFdlZCwgMjYgSmFuIDIwMTEgMDk6MDA6NTQgKzA1MzAKU3ViamVjdDog W1BBVENIIDE2LzM0XSBhdGg5a19odGM6IFJlbW92ZSB1bnVzZWQgV01JX1dMQU5fVFhDT01QX0VW RU5USUQKClNpZ25lZC1vZmYtYnk6IFN1aml0aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5A YXRoZXJvcy5jb20+Ci0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oIHwg ICAgMSAtCiAxIGZpbGVzIGNoYW5nZWQsIDAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmggYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKaW5kZXggNzg5NmRlNC4uMDc1OTVmMiAx MDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCisrKyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaApAQCAtNzQsNyArNzQsNiBAQCBlbnVt IHdtaV9ldmVudF9pZCB7CiAJV01JX0ZBVEFMX0VWRU5USUQsCiAJV01JX1RYVE9fRVZFTlRJRCwK IAlXTUlfQk1JU1NfRVZFTlRJRCwKLQlXTUlfV0xBTl9UWENPTVBfRVZFTlRJRCwKIAlXTUlfREVM QkFfRVZFTlRJRCwKIAlXTUlfVFhSQVRFX0VWRU5USUQsCiB9OwotLSAKMS43LjQuMQoKCkZyb20g ZWY3NTI4NTExMThlMWU1MzkzMGJiZTM4MmNjZjExYmU5ZjM0ODVlNiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9z LmNvbT4KRGF0ZTogU2F0LCAyOSBKYW4gMjAxMSAxMjowODowMyArMDUzMApTdWJqZWN0OiBbUEFU Q0ggMTcvMzRdIGF0aDlrX2h0YzogTW92ZSBUWCBzcGVjaWZpYyBzdHVmZiB0byBhIHNlcGFyYXRl IHN0cnVjdHVyZQoKU2lnbmVkLW9mZi1ieTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9o YXJhbkBhdGhlcm9zLmNvbT4KLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRj LmggICAgICAgICAgfCAgIDE5ICsrKysrKysrKysrKy0tLS0tLS0KIGRyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2dwaW8uYyB8ICAgIDggKysrKy0tLS0KIGRyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYyB8ICAgIDIgKy0KIGRyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYyB8ICAgMjIgKysrKysrKysrKystLS0t LS0tLS0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jIHwg ICAyNCArKysrKysrKysrKystLS0tLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0 aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDlrL2h0Yy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5o CmluZGV4IGIxMzRkNDEuLjVmMzBkOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGg5ay9odGMuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRj LmgKQEAgLTI1Nyw2ICsyNTcsMTMgQEAgc3RydWN0IGF0aDlrX2h0Y19yeCB7CiAJc3BpbmxvY2tf dCByeGJ1ZmxvY2s7CiB9OwogCitzdHJ1Y3QgYXRoOWtfaHRjX3R4IHsKKwlib29sIHR4X3F1ZXVl c19zdG9wOworCXNwaW5sb2NrX3QgdHhfbG9jazsKKworCXN0cnVjdCBza19idWZmX2hlYWQgdHhf cXVldWU7Cit9OworCiBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7CiAJdTggdHlwZTsgLyogQVRI OUtfSFRDXyogKi8KIH07CkBAIC00MjcsMjIgKzQzNCwyMCBAQCBzdHJ1Y3QgYXRoOWtfaHRjX3By aXYgewogCXUxNiBuc3RhdGlvbnM7CiAJYm9vbCByZWFybV9hbmk7CiAJYm9vbCByZWNvbmZpZ19i ZWFjb247CisJdW5zaWduZWQgaW50IHJ4ZmlsdGVyOwogCiAJc3RydWN0IGF0aDlrX2h3X2NhbF9k YXRhIGNhbGRhdGE7CisJc3RydWN0IGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZCBzYmFuZHNbSUVF RTgwMjExX05VTV9CQU5EU107CiAKIAlzcGlubG9ja190IGJlYWNvbl9sb2NrOworCXN0cnVjdCBo dGNfYmVhY29uX2NvbmZpZyBjdXJfYmVhY29uX2NvbmY7CiAKLQlib29sIHR4X3F1ZXVlc19zdG9w OwotCXNwaW5sb2NrX3QgdHhfbG9jazsKKwlzdHJ1Y3QgYXRoOWtfaHRjX3J4IHJ4OworCXN0cnVj dCBhdGg5a19odGNfdHggdHg7CiAKLQlzdHJ1Y3QgaHRjX2JlYWNvbl9jb25maWcgY3VyX2JlYWNv bl9jb25mOwotCXVuc2lnbmVkIGludCByeGZpbHRlcjsKIAlzdHJ1Y3QgdGFza2xldF9zdHJ1Y3Qg c3diYV90YXNrbGV0OwogCXN0cnVjdCB0YXNrbGV0X3N0cnVjdCByeF90YXNrbGV0OwotCXN0cnVj dCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgc2JhbmRzW0lFRUU4MDIxMV9OVU1fQkFORFNdOwot CXN0cnVjdCBhdGg5a19odGNfcnggcng7CiAJc3RydWN0IHRhc2tsZXRfc3RydWN0IHR4X3Rhc2ts ZXQ7Ci0Jc3RydWN0IHNrX2J1ZmZfaGVhZCB0eF9xdWV1ZTsKIAlzdHJ1Y3QgZGVsYXllZF93b3Jr IGFuaV93b3JrOwogCXN0cnVjdCB3b3JrX3N0cnVjdCBwc193b3JrOwogCXN0cnVjdCB3b3JrX3N0 cnVjdCBmYXRhbF93b3JrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDlrL2h0Y19kcnZfZ3Bpby5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19k cnZfZ3Bpby5jCmluZGV4IDQ1OWJhMGQuLjFmNmRmNGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2dwaW8uYworKysgYi9kcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9ncGlvLmMKQEAgLTM5OCw5ICszOTgsOSBAQCB2b2lkIGF0 aDlrX2h0Y19yYWRpb19lbmFibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpCiAKIAkvKiBTdGFy dCBUWCAqLwogCWh0Y19zdGFydChwcml2LT5odGMpOwotCXNwaW5fbG9ja19iaCgmcHJpdi0+dHhf bG9jayk7Ci0JcHJpdi0+dHhfcXVldWVzX3N0b3AgPSBmYWxzZTsKLQlzcGluX3VubG9ja19iaCgm cHJpdi0+dHhfbG9jayk7CisJc3Bpbl9sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsKKwlwcml2 LT50eC50eF9xdWV1ZXNfc3RvcCA9IGZhbHNlOworCXNwaW5fdW5sb2NrX2JoKCZwcml2LT50eC50 eF9sb2NrKTsKIAlpZWVlODAyMTFfd2FrZV9xdWV1ZXMoaHcpOwogCiAJV01JX0NNRChXTUlfRU5B QkxFX0lOVFJfQ01ESUQpOwpAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgYXRoOWtfaHRjX3JhZGlv X2Rpc2FibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpCiAJaWVlZTgwMjExX3N0b3BfcXVldWVz KGh3KTsKIAlodGNfc3RvcChwcml2LT5odGMpOwogCVdNSV9DTUQoV01JX0RSQUlOX1RYUV9BTExf Q01ESUQpOwotCXNrYl9xdWV1ZV9wdXJnZSgmcHJpdi0+dHhfcXVldWUpOworCXNrYl9xdWV1ZV9w dXJnZSgmcHJpdi0+dHgudHhfcXVldWUpOwogCiAJLyogU3RvcCBSWCAqLwogCVdNSV9DTUQoV01J X1NUT1BfUkVDVl9DTURJRCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoOWsvaHRjX2Rydl9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRj X2Rydl9pbml0LmMKaW5kZXggMjI1MGFjNS4uMWZhODY5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jCisrKyBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYwpAQCAtNjcwLDcgKzY3MCw3IEBAIHN0YXRp YyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAogCXNw aW5fbG9ja19pbml0KCZwcml2LT53bWktPndtaV9sb2NrKTsKIAlzcGluX2xvY2tfaW5pdCgmcHJp di0+YmVhY29uX2xvY2spOwotCXNwaW5fbG9ja19pbml0KCZwcml2LT50eF9sb2NrKTsKKwlzcGlu X2xvY2tfaW5pdCgmcHJpdi0+dHgudHhfbG9jayk7CiAJbXV0ZXhfaW5pdCgmcHJpdi0+bXV0ZXgp OwogCW11dGV4X2luaXQoJnByaXYtPmh0Y19wbV9sb2NrKTsKIAl0YXNrbGV0X2luaXQoJnByaXYt PnJ4X3Rhc2tsZXQsIGF0aDlrX3J4X3Rhc2tsZXQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaHRjX2Rydl9tYWluLmMKaW5kZXggNDAwMjI2Ny4uZmYzYTQ5NSAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jCisrKyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYwpAQCAtNzA3LDkgKzcw Nyw5IEBAIHN0YXRpYyBpbnQgYXRoOWtfaHRjX3R4X2FnZ3Jfb3BlcihzdHJ1Y3QgYXRoOWtfaHRj X3ByaXYgKnByaXYsCiAJCQkoYWdnci5hZ2dyX2VuYWJsZSkgPyAiU3RhcnRpbmciIDogIlN0b3Bw aW5nIiwKIAkJCXN0YS0+YWRkciwgdGlkKTsKIAotCXNwaW5fbG9ja19iaCgmcHJpdi0+dHhfbG9j ayk7CisJc3Bpbl9sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsKIAlpc3RhLT50aWRfc3RhdGVb dGlkXSA9IChhZ2dyLmFnZ3JfZW5hYmxlICYmICFyZXQpID8gQUdHUl9TVEFSVCA6IEFHR1JfU1RP UDsKLQlzcGluX3VubG9ja19iaCgmcHJpdi0+dHhfbG9jayk7CisJc3Bpbl91bmxvY2tfYmgoJnBy aXYtPnR4LnR4X2xvY2spOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTg1Myw5ICs4NTMsOSBAQCBz dGF0aWMgdm9pZCBhdGg5a19odGNfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBz a19idWZmICpza2IpCiAJCQlhdGhfZGJnKGF0aDlrX2h3X2NvbW1vbihwcml2LT5haCksIEFUSF9E QkdfWE1JVCwKIAkJCQkiU3RvcHBpbmcgVFggcXVldWVzXG4iKTsKIAkJCWllZWU4MDIxMV9zdG9w X3F1ZXVlcyhodyk7Ci0JCQlzcGluX2xvY2tfYmgoJnByaXYtPnR4X2xvY2spOwotCQkJcHJpdi0+ dHhfcXVldWVzX3N0b3AgPSB0cnVlOwotCQkJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnR4X2xvY2sp OworCQkJc3Bpbl9sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsKKwkJCXByaXYtPnR4LnR4X3F1 ZXVlc19zdG9wID0gdHJ1ZTsKKwkJCXNwaW5fdW5sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsK IAkJfSBlbHNlIHsKIAkJCWF0aF9kYmcoYXRoOWtfaHdfY29tbW9uKHByaXYtPmFoKSwgQVRIX0RC R19YTUlULAogCQkJCSJUeCBmYWlsZWRcbiIpOwpAQCAtOTIzLDkgKzkyMyw5IEBAIHN0YXRpYyBp bnQgYXRoOWtfaHRjX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQogCXByaXYtPm9wX2Zs YWdzICY9IH5PUF9JTlZBTElEOwogCWh0Y19zdGFydChwcml2LT5odGMpOwogCi0Jc3Bpbl9sb2Nr X2JoKCZwcml2LT50eF9sb2NrKTsKLQlwcml2LT50eF9xdWV1ZXNfc3RvcCA9IGZhbHNlOwotCXNw aW5fdW5sb2NrX2JoKCZwcml2LT50eF9sb2NrKTsKKwlzcGluX2xvY2tfYmgoJnByaXYtPnR4LnR4 X2xvY2spOworCXByaXYtPnR4LnR4X3F1ZXVlc19zdG9wID0gZmFsc2U7CisJc3Bpbl91bmxvY2tf YmgoJnByaXYtPnR4LnR4X2xvY2spOwogCiAJaWVlZTgwMjExX3dha2VfcXVldWVzKGh3KTsKIApA QCAtOTY1LDcgKzk2NSw3IEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19zdG9wKHN0cnVjdCBpZWVl ODAyMTFfaHcgKmh3KQogCXRhc2tsZXRfa2lsbCgmcHJpdi0+cnhfdGFza2xldCk7CiAJdGFza2xl dF9raWxsKCZwcml2LT50eF90YXNrbGV0KTsKIAotCXNrYl9xdWV1ZV9wdXJnZSgmcHJpdi0+dHhf cXVldWUpOworCXNrYl9xdWV1ZV9wdXJnZSgmcHJpdi0+dHgudHhfcXVldWUpOwogCiAJYXRoOWtf d21pX2V2ZW50X2RyYWluKHByaXYpOwogCkBAIC0xNTYzLDkgKzE1NjMsOSBAQCBzdGF0aWMgaW50 IGF0aDlrX2h0Y19hbXBkdV9hY3Rpb24oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCWJyZWFr OwogCWNhc2UgSUVFRTgwMjExX0FNUERVX1RYX09QRVJBVElPTkFMOgogCQlpc3RhID0gKHN0cnVj dCBhdGg5a19odGNfc3RhICopIHN0YS0+ZHJ2X3ByaXY7Ci0JCXNwaW5fbG9ja19iaCgmcHJpdi0+ dHhfbG9jayk7CisJCXNwaW5fbG9ja19iaCgmcHJpdi0+dHgudHhfbG9jayk7CiAJCWlzdGEtPnRp ZF9zdGF0ZVt0aWRdID0gQUdHUl9PUEVSQVRJT05BTDsKLQkJc3Bpbl91bmxvY2tfYmgoJnByaXYt PnR4X2xvY2spOworCQlzcGluX3VubG9ja19iaCgmcHJpdi0+dHgudHhfbG9jayk7CiAJCWJyZWFr OwogCWRlZmF1bHQ6CiAJCWF0aF9lcnIoYXRoOWtfaHdfY29tbW9uKHByaXYtPmFoKSwgIlVua25v d24gQU1QRFUgYWN0aW9uXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGg5ay9odGNfZHJ2X3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9o dGNfZHJ2X3R4cnguYwppbmRleCBhYjU1ZGZmLi42Zjc5ODdkIDEwMDY0NAotLS0gYS9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKKysrIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCkBAIC0yMzksMTAgKzIzOSwxMCBAQCBz dGF0aWMgYm9vbCBhdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYg KnByaXYsCiB7CiAJYm9vbCByZXQgPSBmYWxzZTsKIAotCXNwaW5fbG9ja19iaCgmcHJpdi0+dHhf bG9jayk7CisJc3Bpbl9sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsKIAlpZiAoKHRpZCA8IEFU SDlLX0hUQ19NQVhfVElEKSAmJiAoaXN0YS0+dGlkX3N0YXRlW3RpZF0gPT0gQUdHUl9TVE9QKSkK IAkJcmV0ID0gdHJ1ZTsKLQlzcGluX3VubG9ja19iaCgmcHJpdi0+dHhfbG9jayk7CisJc3Bpbl91 bmxvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTI1Nyw3 ICsyNTcsNyBAQCB2b2lkIGF0aDlrX3R4X3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCXN0 cnVjdCBza19idWZmICpza2IgPSBOVUxMOwogCV9fbGUxNiBmYzsKIAotCXdoaWxlICgoc2tiID0g c2tiX2RlcXVldWUoJnByaXYtPnR4X3F1ZXVlKSkgIT0gTlVMTCkgeworCXdoaWxlICgoc2tiID0g c2tiX2RlcXVldWUoJnByaXYtPnR4LnR4X3F1ZXVlKSkgIT0gTlVMTCkgewogCiAJCWhkciA9IChz dHJ1Y3QgaWVlZTgwMjExX2hkciAqKSBza2ItPmRhdGE7CiAJCWZjID0gaGRyLT5mcmFtZV9jb250 cm9sOwpAQCAtMjkyLDkgKzI5Miw5IEBAIHZvaWQgYXRoOWtfdHhfdGFza2xldCh1bnNpZ25lZCBs b25nIGRhdGEpCiAKIAkJCQlpZiAoYXRoOWtfaHRjX2NoZWNrX3R4X2FnZ3IocHJpdiwgaXN0YSwg dGlkKSkgewogCQkJCQlpZWVlODAyMTFfc3RhcnRfdHhfYmFfc2Vzc2lvbihzdGEsIHRpZCwgMCk7 Ci0JCQkJCXNwaW5fbG9ja19iaCgmcHJpdi0+dHhfbG9jayk7CisJCQkJCXNwaW5fbG9ja19iaCgm cHJpdi0+dHgudHhfbG9jayk7CiAJCQkJCWlzdGEtPnRpZF9zdGF0ZVt0aWRdID0gQUdHUl9QUk9H UkVTUzsKLQkJCQkJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnR4X2xvY2spOworCQkJCQlzcGluX3Vu bG9ja19iaCgmcHJpdi0+dHgudHhfbG9jayk7CiAJCQkJfQogCQkJfQogCQl9CkBAIC0zMDcsMTYg KzMwNywxNiBAQCB2b2lkIGF0aDlrX3R4X3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCX0K IAogCS8qIFdha2UgVFggcXVldWVzIGlmIG5lZWRlZCAqLwotCXNwaW5fbG9ja19iaCgmcHJpdi0+ dHhfbG9jayk7Ci0JaWYgKHByaXYtPnR4X3F1ZXVlc19zdG9wKSB7Ci0JCXByaXYtPnR4X3F1ZXVl c19zdG9wID0gZmFsc2U7Ci0JCXNwaW5fdW5sb2NrX2JoKCZwcml2LT50eF9sb2NrKTsKKwlzcGlu X2xvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOworCWlmIChwcml2LT50eC50eF9xdWV1ZXNfc3Rv cCkgeworCQlwcml2LT50eC50eF9xdWV1ZXNfc3RvcCA9IGZhbHNlOworCQlzcGluX3VubG9ja19i aCgmcHJpdi0+dHgudHhfbG9jayk7CiAJCWF0aF9kYmcoYXRoOWtfaHdfY29tbW9uKHByaXYtPmFo KSwgQVRIX0RCR19YTUlULAogCQkJIldha2luZyB1cCBUWCBxdWV1ZXNcbiIpOwogCQlpZWVlODAy MTFfd2FrZV9xdWV1ZXMocHJpdi0+aHcpOwogCQlyZXR1cm47CiAJfQotCXNwaW5fdW5sb2NrX2Jo KCZwcml2LT50eF9sb2NrKTsKKwlzcGluX3VubG9ja19iaCgmcHJpdi0+dHgudHhfbG9jayk7CiB9 CiAKIHZvaWQgYXRoOWtfaHRjX3R4ZXAodm9pZCAqZHJ2X3ByaXYsIHN0cnVjdCBza19idWZmICpz a2IsCkBAIC0zNDgsMTMgKzM0OCwxMyBAQCB2b2lkIGF0aDlrX2h0Y190eGVwKHZvaWQgKmRydl9w cml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCWlmICh0eG9rKQogCQl0eF9pbmZvLT5mbGFncyB8 PSBJRUVFODAyMTFfVFhfU1RBVF9BQ0s7CiAKLQlza2JfcXVldWVfdGFpbCgmcHJpdi0+dHhfcXVl dWUsIHNrYik7CisJc2tiX3F1ZXVlX3RhaWwoJnByaXYtPnR4LnR4X3F1ZXVlLCBza2IpOwogCXRh c2tsZXRfc2NoZWR1bGUoJnByaXYtPnR4X3Rhc2tsZXQpOwogfQogCiBpbnQgYXRoOWtfdHhfaW5p dChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCiB7Ci0Jc2tiX3F1ZXVlX2hlYWRfaW5pdCgm cHJpdi0+dHhfcXVldWUpOworCXNrYl9xdWV1ZV9oZWFkX2luaXQoJnByaXYtPnR4LnR4X3F1ZXVl KTsKIAlyZXR1cm4gMDsKIH0KIAotLSAKMS43LjQuMQoKCkZyb20gMzI0YWU5YmI5ZjJiZTkzY2Qx ZTVlNmNiYjM2ZDExOTlmNmU5N2I3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3Vq aXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KRGF0ZTogV2VkLCAy IEZlYiAyMDExIDA4OjEwOjMyICswNTMwClN1YmplY3Q6IFtQQVRDSCAxOC8zNF0gYXRoOWtfaHRj OiBSZWR1Y2UgVFggcXVldWUgc2l6ZQoKVGhlIGN1cnJlbnQgbWF4IHF1ZXVlIGxlbmd0aCBvZiAx MDI0IGlzIHF1aXRlIGxhcmdlCmFuZCB1bm5lY2Vzc2FyeS4gMjU2IHN1ZmZpY2VzIHdlbGwgZW5v dWdoIGV2ZW4gZm9yIGhpZ2gKdGhyb3VnaHB1dCBzaXR1YXRpb25zLgoKU2lnbmVkLW9mZi1ieTog U3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KLS0tCiBkcml2 ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oIHwgICAgMiArLQogMSBmaWxlcyBj aGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgKaW5kZXggN2I5ZDg2My4uZjgyYjMyYiAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaAorKysgYi9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oCkBAIC0zMSw3ICszMSw3IEBACiAKIC8q IEZJWE1FOiBWZXJpZnkgdGhlc2UgbnVtYmVycyAod2l0aCBXaW5kb3dzKSAqLwogI2RlZmluZSBN QVhfVFhfVVJCX05VTSAgOAotI2RlZmluZSBNQVhfVFhfQlVGX05VTSAgMTAyNAorI2RlZmluZSBN QVhfVFhfQlVGX05VTSAgMjU2CiAjZGVmaW5lIE1BWF9UWF9CVUZfU0laRSAzMjc2OAogI2RlZmlu ZSBNQVhfVFhfQUdHUl9OVU0gMjAKIAotLSAKMS43LjQuMQoKCkZyb20gNTMxZGM1MzdjOGQ4ZWNl OGE4OTZjY2FiYjU2ODlmNjRjODZiNzZmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog U3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KRGF0ZTogU2F0 LCAyOSBKYW4gMjAxMSAxMjoxNToyMyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMTkvMzRdIGF0aDlr X2h0YzogU3luYyBNR01UL0RBVEEgcGFja2V0IGhlYWRlcnMgd2l0aCBmaXJtd2FyZQoKQWRkIGEg bmV3IGNvb2tpZSBmaWVsZCB0aGF0IHdvdWxkIGJlIGZpbGxlZCBieSB0aGUgaG9zdC4KVGhpcyBj YW4gYmUgdXNlZCB0byBtYXRjaCB0aGUgVFggc3RhdHVzIFdNSSBldmVudCB3aXRoCnRoZSBhcHBy b3ByaWF0ZSBwYWNrZXQuCgpTaWduZWQtb2ZmLWJ5OiBTdWppdGggTWFub2hhcmFuIDxTdWppdGgu TWFub2hhcmFuQGF0aGVyb3MuY29tPgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGMuaCB8ICAgIDYgKysrKy0tCiAxIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo OWsvaHRjLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKaW5kZXggNWYz MGQ5MS4uMjk0ZmViMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L2h0Yy5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaApAQCAtODUs NyArODUsOCBAQCBzdHJ1Y3QgdHhfZnJhbWVfaGRyIHsKIAlfX2JlMzIgZmxhZ3M7IC8qIEFUSDlL X0hUQ19UWF8qICovCiAJdTgga2V5X3R5cGU7CiAJdTgga2V5aXg7Ci0JdTggcmVzZXJ2ZWRbMjZd OworCXU4IGNvb2tpZTsKKwl1OCBwYWQ7CiB9IF9fcGFja2VkOwogCiBzdHJ1Y3QgdHhfbWdtdF9o ZHIgewpAQCAtOTUsNyArOTYsOCBAQCBzdHJ1Y3QgdHhfbWdtdF9oZHIgewogCXU4IGZsYWdzOwog CXU4IGtleV90eXBlOwogCXU4IGtleWl4OwotCXUxNiByZXNlcnZlZDsKKwl1OCBjb29raWU7CisJ dTggcGFkOwogfSBfX3BhY2tlZDsKIAogc3RydWN0IHR4X2JlYWNvbl9oZWFkZXIgewotLSAKMS43 LjQuMQoKCkZyb20gYzU0ZGU0MzljZGVjY2NkNzM1NmViMDdjNmY5ZDM5YTRhNGQ2YTZhMiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9o YXJhbkBhdGhlcm9zLmNvbT4KRGF0ZTogU2F0LCAyOSBKYW4gMjAxMSAxMjoxMjo1MyArMDUzMApT dWJqZWN0OiBbUEFUQ0ggMjAvMzRdIGF0aDlrX2h0YzogQWRkIGEgbmV3IFdNSSBldmVudCBXTUlf VFhTVEFUVVNfRVZFTlRJRAoKVGhpcyBldmVudCB3aWxsIGJlIGdlbmVyYXRlZCBieSB0aGUgdGFy Z2V0IGZvciBwYWNrZXQgY29tcGxldGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBTdWppdGggTWFub2hh cmFuIDxTdWppdGguTWFub2hhcmFuQGF0aGVyb3MuY29tPgotLS0KIGRyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay93bWkuaCB8ICAgMzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogMSBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaCBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaAppbmRleCAwNzU5NWYyLi4zZmE4NTEwIDEw MDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmgKKysrIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oCkBAIC0zNiw2ICszNiw0MyBAQCBzdHJ1 Y3Qgd21pX2V2ZW50X3N3YmEgewogCXU4IGJlYWNvbl9wZW5kaW5nOwogfTsKIAorLyoKKyAqIDY0 IC0gSFRDIGhlYWRlciAtIFdNSSBoZWFkZXIgLSAxIC8gdHhzdGF0dXMKKyAqIEFuZCBzb21lIG90 aGVyIGhkci4gc3BhY2UgaXMgYWxzbyBhY2NvdW50ZWQgZm9yLgorICogMTQgc2VlbXMgdG8gYmUg dGhlIG1hZ2ljIG51bWJlci4KKyAqLworI2RlZmluZSBIVENfTUFYX1RYX1NUQVRVUyAxNAorCisj ZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfQUNLICAgICAgICBCSVQoMCkKKyNkZWZpbmUgQVRIOUtf SFRDX1RYU1RBVF9GSUxUICAgICAgIEJJVCgxKQorI2RlZmluZSBBVEg5S19IVENfVFhTVEFUX1JU Q19DVFMgICAgQklUKDIpCisjZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfTUNTICAgICAgICBCSVQo MykKKyNkZWZpbmUgQVRIOUtfSFRDX1RYU1RBVF9DVzQwICAgICAgIEJJVCg0KQorI2RlZmluZSBB VEg5S19IVENfVFhTVEFUX1NHSSAgICAgICAgQklUKDUpCisKKy8qCisgKiBMZWdhY3kgcmF0ZXMg YXJlIGluZGljYXRlZCBhcyBpbmRpY2VzLgorICogSFQgcmF0ZXMgYXJlIGluZGljYXRlZCBhcyBk b3QxMSBudW1iZXJzLgorICogVGhpcyBhbGxvd3MgdXMgdG8gcmVzcmljdCB0aGUgcmF0ZSBmaWVs ZAorICogdG8gNCBiaXRzLgorICovCisjZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURSAgICAg ICAweDBmCisjZGVmaW5lIEFUSDlLX0hUQ19UWFNUQVRfUkFURV9TICAgICAwCisKKyNkZWZpbmUg QVRIOUtfSFRDX1RYU1RBVF9FUElEICAgICAgIDB4ZjAKKyNkZWZpbmUgQVRIOUtfSFRDX1RYU1RB VF9FUElEX1MgICAgIDQKKworc3RydWN0IF9fd21pX2V2ZW50X3R4c3RhdHVzIHsKKwl1OCBjb29r aWU7CisJdTggdHNfcmF0ZTsgLyogQWxzbyBob2xkcyBFUCBJRCAqLworCXU4IHRzX2ZsYWdzOwor fTsKKworc3RydWN0IHdtaV9ldmVudF90eHN0YXR1cyB7CisJdTggY250OworCXN0cnVjdCBfX3dt aV9ldmVudF90eHN0YXR1cyB0eHN0YXR1c1tIVENfTUFYX1RYX1NUQVRVU107Cit9IF9fcGFja2Vk OworCiBlbnVtIHdtaV9jbWRfaWQgewogCVdNSV9FQ0hPX0NNRElEID0gMHgwMDAxLAogCVdNSV9B Q0NFU1NfTUVNT1JZX0NNRElELApAQCAtNzYsNiArMTEzLDcgQEAgZW51bSB3bWlfZXZlbnRfaWQg ewogCVdNSV9CTUlTU19FVkVOVElELAogCVdNSV9ERUxCQV9FVkVOVElELAogCVdNSV9UWFJBVEVf RVZFTlRJRCwKKwlXTUlfVFhTVEFUVVNfRVZFTlRJRCwKIH07CiAKICNkZWZpbmUgTUFYX0NNRF9O VU1CRVIgNjIKLS0gCjEuNy40LjEKCgpGcm9tIGI5YjM3ZDhhZDQ3YjNmNmYwNTQxMzFmZmExMWIz N2RhNWE5YjkxODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFN1aml0aCBNYW5vaGFy YW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+CkRhdGU6IFNhdCwgNSBGZWIgMjAxMSAw NzozNDo1OSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMjEvMzRdIGF0aDlrX2h0YzogSW5jcmVhc2Ug VVJCIGNvdW50IGZvciBSRUdfSU4gcGlwZQoKVXNpbmcgYSBzaW5nbGUgVVJCIGZvciByZWNlaXZp bmcgV01JIGV2ZW50cyBpcwppbnN1ZmZpY2llbnQsIGluY3JlYXNlIGl0IHRvIDY0IHRvIG5vdCBs b3NlCldNSSBldmVudHMgaW4gaGlnaCB0aHJvdWdocHV0IHNpdHVhdGlvbnMuCgpTaWduZWQtb2Zm LWJ5OiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hhcmFuQGF0aGVyb3MuY29tPgotLS0K IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMgfCAgIDk5ICsrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hp Zl91c2IuaCB8ICAgIDQgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgNDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKaW5k ZXggZDU2YTEwYy4uYTgxMzRmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2hpZl91c2IuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlm X3VzYi5jCkBAIC01NjgsNiArNTY4LDkgQEAgc3RhdGljIHZvaWQgYXRoOWtfaGlmX3VzYl9yZWdf aW5fY2Ioc3RydWN0IHVyYiAqdXJiKQogCWNhc2UgLUVTSFVURE9XTjoKIAkJZ290byBmcmVlOwog CWRlZmF1bHQ6CisJCXNrYl9yZXNldF90YWlsX3BvaW50ZXIoc2tiKTsKKwkJc2tiX3RyaW0oc2ti LCAwKTsKKwogCQlnb3RvIHJlc3VibWl0OwogCX0KIApAQCAtNTkyLDIzICs1OTUsMTUgQEAgc3Rh dGljIHZvaWQgYXRoOWtfaGlmX3VzYl9yZWdfaW5fY2Ioc3RydWN0IHVyYiAqdXJiKQogCQkJCQkJ IFVTQl9SRUdfSU5fUElQRSksCiAJCQkJIG5za2ItPmRhdGEsIE1BWF9SRUdfSU5fQlVGX1NJWkUs CiAJCQkJIGF0aDlrX2hpZl91c2JfcmVnX2luX2NiLCBuc2tiKTsKLQotCQlyZXQgPSB1c2Jfc3Vi bWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpOwotCQlpZiAocmV0KSB7Ci0JCQlrZnJlZV9za2IobnNr Yik7Ci0JCQl1cmItPmNvbnRleHQgPSBOVUxMOwotCQl9Ci0KLQkJcmV0dXJuOwogCX0KIAogcmVz dWJtaXQ6Ci0Jc2tiX3Jlc2V0X3RhaWxfcG9pbnRlcihza2IpOwotCXNrYl90cmltKHNrYiwgMCk7 Ci0KKwl1c2JfYW5jaG9yX3VyYih1cmIsICZoaWZfZGV2LT5yZWdfaW5fc3VibWl0dGVkKTsKIAly ZXQgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpOwotCWlmIChyZXQpCisJaWYgKHJl dCkgeworCQl1c2JfdW5hbmNob3JfdXJiKHVyYik7CiAJCWdvdG8gZnJlZTsKKwl9CiAKIAlyZXR1 cm47CiBmcmVlOgpAQCAtNzQ5LDQzICs3NDQsNjcgQEAgZXJyX3VyYjoKIAlyZXR1cm4gcmV0Owog fQogCi1zdGF0aWMgdm9pZCBhdGg5a19oaWZfdXNiX2RlYWxsb2NfcmVnX2luX3VyYihzdHJ1Y3Qg aGlmX2RldmljZV91c2IgKmhpZl9kZXYpCitzdGF0aWMgdm9pZCBhdGg5a19oaWZfdXNiX2RlYWxs b2NfcmVnX2luX3VyYnMoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KQogewotCWlmICho aWZfZGV2LT5yZWdfaW5fdXJiKSB7Ci0JCXVzYl9raWxsX3VyYihoaWZfZGV2LT5yZWdfaW5fdXJi KTsKLQkJaWYgKGhpZl9kZXYtPnJlZ19pbl91cmItPmNvbnRleHQpCi0JCQlrZnJlZV9za2IoKHZv aWQgKiloaWZfZGV2LT5yZWdfaW5fdXJiLT5jb250ZXh0KTsKLQkJdXNiX2ZyZWVfdXJiKGhpZl9k ZXYtPnJlZ19pbl91cmIpOwotCQloaWZfZGV2LT5yZWdfaW5fdXJiID0gTlVMTDsKLQl9CisJdXNi X2tpbGxfYW5jaG9yZWRfdXJicygmaGlmX2Rldi0+cmVnX2luX3N1Ym1pdHRlZCk7CiB9CiAKLXN0 YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9hbGxvY19yZWdfaW5fdXJiKHN0cnVjdCBoaWZfZGV2aWNl X3VzYiAqaGlmX2RldikKK3N0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9hbGxvY19yZWdfaW5fdXJi cyhzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpCiB7Ci0Jc3RydWN0IHNrX2J1ZmYgKnNr YjsKKwlzdHJ1Y3QgdXJiICp1cmIgPSBOVUxMOworCXN0cnVjdCBza19idWZmICpza2IgPSBOVUxM OworCWludCBpLCByZXQ7CiAKLQloaWZfZGV2LT5yZWdfaW5fdXJiID0gdXNiX2FsbG9jX3VyYigw LCBHRlBfS0VSTkVMKTsKLQlpZiAoaGlmX2Rldi0+cmVnX2luX3VyYiA9PSBOVUxMKQotCQlyZXR1 cm4gLUVOT01FTTsKKwlpbml0X3VzYl9hbmNob3IoJmhpZl9kZXYtPnJlZ19pbl9zdWJtaXR0ZWQp OwogCi0Jc2tiID0gYWxsb2Nfc2tiKE1BWF9SRUdfSU5fQlVGX1NJWkUsIEdGUF9LRVJORUwpOwot CWlmICghc2tiKQotCQlnb3RvIGVycjsKKwlmb3IgKGkgPSAwOyBpIDwgTUFYX1JFR19JTl9VUkJf TlVNOyBpKyspIHsKIAotCXVzYl9maWxsX2J1bGtfdXJiKGhpZl9kZXYtPnJlZ19pbl91cmIsIGhp Zl9kZXYtPnVkZXYsCi0JCQkgdXNiX3JjdmJ1bGtwaXBlKGhpZl9kZXYtPnVkZXYsCi0JCQkJCSBV U0JfUkVHX0lOX1BJUEUpLAotCQkJIHNrYi0+ZGF0YSwgTUFYX1JFR19JTl9CVUZfU0laRSwKLQkJ CSBhdGg5a19oaWZfdXNiX3JlZ19pbl9jYiwgc2tiKTsKKwkJLyogQWxsb2NhdGUgVVJCICovCisJ CXVyYiA9IHVzYl9hbGxvY191cmIoMCwgR0ZQX0tFUk5FTCk7CisJCWlmICh1cmIgPT0gTlVMTCkg eworCQkJcmV0ID0gLUVOT01FTTsKKwkJCWdvdG8gZXJyX3VyYjsKKwkJfQogCi0JaWYgKHVzYl9z dWJtaXRfdXJiKGhpZl9kZXYtPnJlZ19pbl91cmIsIEdGUF9LRVJORUwpICE9IDApCi0JCWdvdG8g ZXJyOworCQkvKiBBbGxvY2F0ZSBidWZmZXIgKi8KKwkJc2tiID0gYWxsb2Nfc2tiKE1BWF9SRUdf SU5fQlVGX1NJWkUsIEdGUF9LRVJORUwpOworCQlpZiAoIXNrYikgeworCQkJcmV0ID0gLUVOT01F TTsKKwkJCWdvdG8gZXJyX3NrYjsKKwkJfQorCisJCXVzYl9maWxsX2J1bGtfdXJiKHVyYiwgaGlm X2Rldi0+dWRldiwKKwkJCQkgIHVzYl9yY3ZidWxrcGlwZShoaWZfZGV2LT51ZGV2LAorCQkJCQkJ ICBVU0JfUkVHX0lOX1BJUEUpLAorCQkJCSAgc2tiLT5kYXRhLCBNQVhfUkVHX0lOX0JVRl9TSVpF LAorCQkJCSAgYXRoOWtfaGlmX3VzYl9yZWdfaW5fY2IsIHNrYik7CisKKwkJLyogQW5jaG9yIFVS QiAqLworCQl1c2JfYW5jaG9yX3VyYih1cmIsICZoaWZfZGV2LT5yZWdfaW5fc3VibWl0dGVkKTsK KworCQkvKiBTdWJtaXQgVVJCICovCisJCXJldCA9IHVzYl9zdWJtaXRfdXJiKHVyYiwgR0ZQX0tF Uk5FTCk7CisJCWlmIChyZXQpIHsKKwkJCXVzYl91bmFuY2hvcl91cmIodXJiKTsKKwkJCWdvdG8g ZXJyX3N1Ym1pdDsKKwkJfQorCisJCS8qCisJCSAqIERyb3AgcmVmZXJlbmNlIGNvdW50LgorCQkg KiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgVVJCIGlzIGZyZWVkIHdoZW4ga2lsbGluZyB0aGVtLgor CQkgKi8KKwkJdXNiX2ZyZWVfdXJiKHVyYik7CisJfQogCiAJcmV0dXJuIDA7CiAKLWVycjoKLQlh dGg5a19oaWZfdXNiX2RlYWxsb2NfcmVnX2luX3VyYihoaWZfZGV2KTsKLQlyZXR1cm4gLUVOT01F TTsKK2Vycl9zdWJtaXQ6CisJa2ZyZWVfc2tiKHNrYik7CitlcnJfc2tiOgorCXVzYl9mcmVlX3Vy Yih1cmIpOworZXJyX3VyYjoKKwlhdGg5a19oaWZfdXNiX2RlYWxsb2NfcmVnX2luX3VyYnMoaGlm X2Rldik7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBhdGg5a19oaWZfdXNiX2FsbG9j X3VyYnMoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KQpAQCAtODAyLDcgKzgyMSw3IEBA IHN0YXRpYyBpbnQgYXRoOWtfaGlmX3VzYl9hbGxvY191cmJzKHN0cnVjdCBoaWZfZGV2aWNlX3Vz YiAqaGlmX2RldikKIAkJZ290byBlcnJfcng7CiAKIAkvKiBSZWdpc3RlciBSZWFkICovCi0JaWYg KGF0aDlrX2hpZl91c2JfYWxsb2NfcmVnX2luX3VyYihoaWZfZGV2KSA8IDApCisJaWYgKGF0aDlr X2hpZl91c2JfYWxsb2NfcmVnX2luX3VyYnMoaGlmX2RldikgPCAwKQogCQlnb3RvIGVycl9yZWc7 CiAKIAlyZXR1cm4gMDsKQEAgLTgxNyw3ICs4MzYsNyBAQCBlcnI6CiBzdGF0aWMgdm9pZCBhdGg5 a19oaWZfdXNiX2RlYWxsb2NfdXJicyhzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYpCiB7 CiAJdXNiX2tpbGxfYW5jaG9yZWRfdXJicygmaGlmX2Rldi0+cmVnb3V0X3N1Ym1pdHRlZCk7Ci0J YXRoOWtfaGlmX3VzYl9kZWFsbG9jX3JlZ19pbl91cmIoaGlmX2Rldik7CisJYXRoOWtfaGlmX3Vz Yl9kZWFsbG9jX3JlZ19pbl91cmJzKGhpZl9kZXYpOwogCWF0aDlrX2hpZl91c2JfZGVhbGxvY190 eF91cmJzKGhpZl9kZXYpOwogCWF0aDlrX2hpZl91c2JfZGVhbGxvY19yeF91cmJzKGhpZl9kZXYp OwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2Iu aCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgKaW5kZXggZjgyYjMy Yi4uOGI5OGQ2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hp Zl91c2IuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oCkBA IC00MCw3ICs0MCw3IEBACiAjZGVmaW5lIE1BWF9QS1RfTlVNX0lOX1RSQU5TRkVSIDEwCiAKICNk ZWZpbmUgTUFYX1JFR19PVVRfVVJCX05VTSAgMQotI2RlZmluZSBNQVhfUkVHX09VVF9CVUZfTlVN ICA4CisjZGVmaW5lIE1BWF9SRUdfSU5fVVJCX05VTSAgIDY0CiAKICNkZWZpbmUgTUFYX1JFR19J Tl9CVUZfU0laRSA2NAogCkBAIC05MCw5ICs5MCw5IEBAIHN0cnVjdCBoaWZfZGV2aWNlX3VzYiB7 CiAJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmaXJtd2FyZTsKIAlzdHJ1Y3QgaHRjX3RhcmdldCAq aHRjX2hhbmRsZTsKIAlzdHJ1Y3QgaGlmX3VzYl90eCB0eDsKLQlzdHJ1Y3QgdXJiICpyZWdfaW5f dXJiOwogCXN0cnVjdCB1c2JfYW5jaG9yIHJlZ291dF9zdWJtaXR0ZWQ7CiAJc3RydWN0IHVzYl9h bmNob3Igcnhfc3VibWl0dGVkOworCXN0cnVjdCB1c2JfYW5jaG9yIHJlZ19pbl9zdWJtaXR0ZWQ7 CiAJc3RydWN0IHNrX2J1ZmYgKnJlbWFpbl9za2I7CiAJY29uc3QgY2hhciAqZndfbmFtZTsKIAlp bnQgcnhfcmVtYWluX2xlbjsKLS0gCjEuNy40LjEKCgpGcm9tIDM5ZTY0YmE5MTBhYjIxODNhMTQx NGExYzVhOTFjMzFmMzJkMGQ4NzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFN1aml0 aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+CkRhdGU6IEZyaSwgMTEg RmViIDIwMTEgMDk6MTA6MDUgKzA1MzAKU3ViamVjdDogW1BBVENIIDIyLzM0XSBhdGg5a19odGM6 IEZpeCBUWCBxdWV1ZSBtYW5hZ2VtZW50CgpIYW5kbGUgcXVldWUgc3RhcnQvc3RvcCBwcm9wZXJs eSBieSBtYWludGFpbmluZwphIGNvdW50ZXIgdG8gY2hlY2sgaWYgdGhlIHBlbmRpbmcgZnJhbWUg Y291bnQgaGFzCmV4Y2VlZGVkIHRoZSB0aHJlc2hvbGQuIE90aGVyd2lzZSwgcGFja2V0cyB3b3Vs ZCBiZQpkcm9wcGVkIG5lZWRsZXNzbHkuIFdoaWxlIGF0IGl0LCB1c2UgYSBzaW1wbGUgZmxhZwp0 byB0cmFjayBxdWV1ZSBzdGF0dXMgYW5kIHVzZSBoZWxwZXIgZnVuY3Rpb25zIHRvby4KClNpZ25l ZC1vZmYtYnk6IFN1aml0aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+ Ci0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oICAgICAgICAgIHwgICAx MyArKysrKystLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZ3Bpby5j IHwgICAgMiArLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5j IHwgICAyMSArKysrKy0tLS0tLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRj X2Rydl90eHJ4LmMgfCAgIDM5ICsrKysrKysrKysrKysrKysrKy0tLS0tLQogNCBmaWxlcyBjaGFu Z2VkLCA0OCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaHRjLmgKaW5kZXggMjk0ZmViMS4uYTVkNzkxZSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGg5ay9odGMuaApAQCAtMjU5LDExICsyNTksMTYgQEAgc3RydWN0IGF0aDlrX2h0Y19y eCB7CiAJc3BpbmxvY2tfdCByeGJ1ZmxvY2s7CiB9OwogCi1zdHJ1Y3QgYXRoOWtfaHRjX3R4IHsK LQlib29sIHR4X3F1ZXVlc19zdG9wOwotCXNwaW5sb2NrX3QgdHhfbG9jazsKKyNkZWZpbmUgQVRI OUtfSFRDX1RYX1JFU0VSVkUgICAxMAorI2RlZmluZSBBVEg5S19IVENfVFhfVEhSRVNIT0xEIChN QVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKQorCisjZGVmaW5lIEFUSDlLX0hU Q19PUF9UWF9RVUVVRVNfU1RPUCBCSVQoMCkKIAorc3RydWN0IGF0aDlrX2h0Y190eCB7CisJdTgg ZmxhZ3M7CisJaW50IHF1ZXVlZF9jbnQ7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCB0eF9xdWV1ZTsK KwlzcGlubG9ja190IHR4X2xvY2s7CiB9OwogCiBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7CkBA IC01MjYsNiArNTMxLDggQEAgaW50IGF0aDlrX2h0Y19jYWJxX3NldHVwKHN0cnVjdCBhdGg5a19o dGNfcHJpdiAqcHJpdik7CiBpbnQgZ2V0X2h3X3FudW0odTE2IHF1ZXVlLCBpbnQgKmh3cV9tYXAp OwogaW50IGF0aF9odGNfdHhxX3VwZGF0ZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIGlu dCBxbnVtLAogCQkgICAgICAgc3RydWN0IGF0aDlrX3R4X3F1ZXVlX2luZm8gKnFpbmZvKTsKK3Zv aWQgYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJp dik7Cit2b2lkIGF0aDlrX2h0Y19jaGVja193YWtlX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3By aXYgKnByaXYpOwogCiBpbnQgYXRoOWtfcnhfaW5pdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnBy aXYpOwogdm9pZCBhdGg5a19yeF9jbGVhbnVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9ncGlv LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9ncGlvLmMKaW5kZXgg MWY2ZGY0YS4uOTJlNGIzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDlrL2h0Y19kcnZfZ3Bpby5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9o dGNfZHJ2X2dwaW8uYwpAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgYXRoOWtfaHRjX3JhZGlvX2Vu YWJsZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodykKIAkvKiBTdGFydCBUWCAqLwogCWh0Y19zdGFy dChwcml2LT5odGMpOwogCXNwaW5fbG9ja19iaCgmcHJpdi0+dHgudHhfbG9jayk7Ci0JcHJpdi0+ dHgudHhfcXVldWVzX3N0b3AgPSBmYWxzZTsKKwlwcml2LT50eC5mbGFncyAmPSB+QVRIOUtfSFRD X09QX1RYX1FVRVVFU19TVE9QOwogCXNwaW5fdW5sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsK IAlpZWVlODAyMTFfd2FrZV9xdWV1ZXMoaHcpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaHRjX2Rydl9tYWluLmMKaW5kZXggZmYzYTQ5NS4uNjkwMTEzNiAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jCisrKyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYwpAQCAtODMzLDYgKzgz Myw3IEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywg c3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyOwogCXN0 cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGh3LT5wcml2OworCXN0cnVjdCBhdGhfY29tbW9u ICpjb21tb24gPSBhdGg5a19od19jb21tb24ocHJpdi0+YWgpOwogCWludCBwYWRwb3MsIHBhZHNp emUsIHJldDsKIAogCWhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKSBza2ItPmRhdGE7CkBA IC04NDEsMjggKzg0MiwyMiBAQCBzdGF0aWMgdm9pZCBhdGg5a19odGNfdHgoc3RydWN0IGllZWU4 MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IpCiAJcGFkcG9zID0gYXRoOWtfY21uX3Bh ZHBvcyhoZHItPmZyYW1lX2NvbnRyb2wpOwogCXBhZHNpemUgPSBwYWRwb3MgJiAzOwogCWlmIChw YWRzaXplICYmIHNrYi0+bGVuID4gcGFkcG9zKSB7Ci0JCWlmIChza2JfaGVhZHJvb20oc2tiKSA8 IHBhZHNpemUpCisJCWlmIChza2JfaGVhZHJvb20oc2tiKSA8IHBhZHNpemUpIHsKKwkJCWF0aF9k YmcoY29tbW9uLCBBVEhfREJHX1hNSVQsICJObyByb29tIGZvciBwYWRkaW5nXG4iKTsKIAkJCWdv dG8gZmFpbF90eDsKKwkJfQogCQlza2JfcHVzaChza2IsIHBhZHNpemUpOwogCQltZW1tb3ZlKHNr Yi0+ZGF0YSwgc2tiLT5kYXRhICsgcGFkc2l6ZSwgcGFkcG9zKTsKIAl9CiAKIAlyZXQgPSBhdGg5 a19odGNfdHhfc3RhcnQocHJpdiwgc2tiLCBmYWxzZSk7CiAJaWYgKHJldCAhPSAwKSB7Ci0JCWlm IChyZXQgPT0gLUVOT01FTSkgewotCQkJYXRoX2RiZyhhdGg5a19od19jb21tb24ocHJpdi0+YWgp LCBBVEhfREJHX1hNSVQsCi0JCQkJIlN0b3BwaW5nIFRYIHF1ZXVlc1xuIik7Ci0JCQlpZWVlODAy MTFfc3RvcF9xdWV1ZXMoaHcpOwotCQkJc3Bpbl9sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsK LQkJCXByaXYtPnR4LnR4X3F1ZXVlc19zdG9wID0gdHJ1ZTsKLQkJCXNwaW5fdW5sb2NrX2JoKCZw cml2LT50eC50eF9sb2NrKTsKLQkJfSBlbHNlIHsKLQkJCWF0aF9kYmcoYXRoOWtfaHdfY29tbW9u KHByaXYtPmFoKSwgQVRIX0RCR19YTUlULAotCQkJCSJUeCBmYWlsZWRcbiIpOwotCQl9CisJCWF0 aF9kYmcoY29tbW9uLCBBVEhfREJHX1hNSVQsICJUeCBmYWlsZWRcbiIpOwogCQlnb3RvIGZhaWxf dHg7CiAJfQogCisJYXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHByaXYpOworCiAJcmV0dXJu OwogCiBmYWlsX3R4OgpAQCAtOTI0LDcgKzkxOSw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaHRjX3N0 YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KQogCWh0Y19zdGFydChwcml2LT5odGMpOwogCiAJ c3Bpbl9sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsKLQlwcml2LT50eC50eF9xdWV1ZXNfc3Rv cCA9IGZhbHNlOworCXByaXYtPnR4LmZsYWdzICY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NU T1A7CiAJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOwogCiAJaWVlZTgwMjExX3dh a2VfcXVldWVzKGh3KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGNfZHJ2X3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2 X3R4cnguYwppbmRleCA2Zjc5ODdkLi4xY2JlMTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCkBAIC01Myw2ICs1MywyOSBAQCBpbnQgZ2V0X2h3 X3FudW0odTE2IHF1ZXVlLCBpbnQgKmh3cV9tYXApCiAJfQogfQogCit2b2lkIGF0aDlrX2h0Y19j aGVja19zdG9wX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCit7CisJc3Bpbl9s b2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsKKwlwcml2LT50eC5xdWV1ZWRfY250Kys7CisJaWYg KChwcml2LT50eC5xdWV1ZWRfY250ID49IEFUSDlLX0hUQ19UWF9USFJFU0hPTEQpICYmCisJICAg ICEocHJpdi0+dHguZmxhZ3MgJiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7CisJCXBy aXYtPnR4LmZsYWdzIHw9IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUDsKKwkJaWVlZTgwMjEx X3N0b3BfcXVldWVzKHByaXYtPmh3KTsKKwl9CisJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnR4LnR4 X2xvY2spOworfQorCit2b2lkIGF0aDlrX2h0Y19jaGVja193YWtlX3F1ZXVlcyhzdHJ1Y3QgYXRo OWtfaHRjX3ByaXYgKnByaXYpCit7CisJc3Bpbl9sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsK KwlpZiAoKHByaXYtPnR4LnF1ZXVlZF9jbnQgPCBBVEg5S19IVENfVFhfVEhSRVNIT0xEKSAmJgor CSAgICAocHJpdi0+dHguZmxhZ3MgJiBBVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1ApKSB7CisJ CXByaXYtPnR4LmZsYWdzICY9IH5BVEg5S19IVENfT1BfVFhfUVVFVUVTX1NUT1A7CisJCWllZWU4 MDIxMV93YWtlX3F1ZXVlcyhwcml2LT5odyk7CisJfQorCXNwaW5fdW5sb2NrX2JoKCZwcml2LT50 eC50eF9sb2NrKTsKK30KKwogaW50IGF0aF9odGNfdHhxX3VwZGF0ZShzdHJ1Y3QgYXRoOWtfaHRj X3ByaXYgKnByaXYsIGludCBxbnVtLAogCQkgICAgICAgc3RydWN0IGF0aDlrX3R4X3F1ZXVlX2lu Zm8gKnFpbmZvKQogewpAQCAtMzAyLDIxICszMjUsMTcgQEAgdm9pZCBhdGg5a190eF90YXNrbGV0 KHVuc2lnbmVkIGxvbmcgZGF0YSkKIAkJcmN1X3JlYWRfdW5sb2NrKCk7CiAKIAlzZW5kX21hYzgw MjExOgorCQlzcGluX2xvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOworCQlpZiAoV0FSTl9PTigt LXByaXYtPnR4LnF1ZXVlZF9jbnQgPCAwKSkKKwkJCXByaXYtPnR4LnF1ZXVlZF9jbnQgPSAwOwor CQlzcGluX3VubG9ja19iaCgmcHJpdi0+dHgudHhfbG9jayk7CisKIAkJLyogU2VuZCBzdGF0dXMg dG8gbWFjODAyMTEgKi8KIAkJaWVlZTgwMjExX3R4X3N0YXR1cyhwcml2LT5odywgc2tiKTsKIAl9 CiAKIAkvKiBXYWtlIFRYIHF1ZXVlcyBpZiBuZWVkZWQgKi8KLQlzcGluX2xvY2tfYmgoJnByaXYt PnR4LnR4X2xvY2spOwotCWlmIChwcml2LT50eC50eF9xdWV1ZXNfc3RvcCkgewotCQlwcml2LT50 eC50eF9xdWV1ZXNfc3RvcCA9IGZhbHNlOwotCQlzcGluX3VubG9ja19iaCgmcHJpdi0+dHgudHhf bG9jayk7Ci0JCWF0aF9kYmcoYXRoOWtfaHdfY29tbW9uKHByaXYtPmFoKSwgQVRIX0RCR19YTUlU LAotCQkJIldha2luZyB1cCBUWCBxdWV1ZXNcbiIpOwotCQlpZWVlODAyMTFfd2FrZV9xdWV1ZXMo cHJpdi0+aHcpOwotCQlyZXR1cm47Ci0JfQotCXNwaW5fdW5sb2NrX2JoKCZwcml2LT50eC50eF9s b2NrKTsKKwlhdGg5a19odGNfY2hlY2tfd2FrZV9xdWV1ZXMocHJpdik7CiB9CiAKIHZvaWQgYXRo OWtfaHRjX3R4ZXAodm9pZCAqZHJ2X3ByaXYsIHN0cnVjdCBza19idWZmICpza2IsCi0tIAoxLjcu NC4xCgoKRnJvbSBiODA4NGY5ZTg3MTAxY2I0NDFlZDc2NTc1NjE1YzdhYmNhMTcwZjAyIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hh cmFuQGF0aGVyb3MuY29tPgpEYXRlOiBGcmksIDExIEZlYiAyMDExIDEwOjE5OjIwICswNTMwClN1 YmplY3Q6IFtQQVRDSCAyMy8zNF0gYXRoOWtfaHRjOiBJbnRyb2R1Y2UgbmV3IEhUQyBBUEkKCkEg bmV3IHJvdXRpbmUgdGhhdCB0YWtlcyBhbiBlbmRwb2ludCBleHBsaWNpdGx5IGlzCmludHJvZHVj ZWQuIFRoZSBub3JtYWwgaHRjX3NlbmQoKSBub3cgcmV0cmlldmVzIHRoZSBlbmRwb2ludApmcm9t IHRoZSBwYWNrZXQncyBwcml2YXRlIGRhdGEuIFRoaXMgd291bGQgYmUgdXNlZnVsCmluIFRYIGNv bXBsZXRpb24gd2hlbiB0aGUgZW5kcG9pbnQgSUQgd291bGQgYmUgcmVxdWlyZWQuCldoaWxlIGF0 IGl0LCB1c2UgYSBoZWxwZXIgZnVuY3Rpb24gdG8gbWFwIHRoZSBxdWV1ZSB0byBlbmRwb2ludC4K CkRhdGEvbWdtdC9iZWFjb24gcGFja2V0cyB1c2UgaHRjX3NlbmQoKSwgd2hpbGUgV01JIGNvbWFt bmRzCnBhc3MgdGhlIGVuZHBvaW50IHRvIEhUQy4KClNpZ25lZC1vZmYtYnk6IFN1aml0aCBNYW5v aGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+Ci0tLQogZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDlrL2h0Yy5oICAgICAgICAgICAgfCAgICAxICsKIGRyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jIHwgICAgMyArLQogZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jICAgfCAgIDU2ICsrKysrKysrKysrKyst LS0tLS0tLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jICAgICAg ICB8ICAgMTIgKysrKy0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0Lmgg ICAgICAgIHwgICAgNSArLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jICAg ICAgICAgICAgfCAgICAyICstCiA2IGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDMw IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaAppbmRleCBhNWQ3 OTFlLi5hZjc0N2RlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv aHRjLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oCkBAIC0yNzMs NiArMjczLDcgQEAgc3RydWN0IGF0aDlrX2h0Y190eCB7CiAKIHN0cnVjdCBhdGg5a19odGNfdHhf Y3RsIHsKIAl1OCB0eXBlOyAvKiBBVEg5S19IVENfKiAqLworCXU4IGVwaWQ7CiB9OwogCiBzdGF0 aWMgaW5saW5lIHN0cnVjdCBhdGg5a19odGNfdHhfY3RsICpIVENfU0tCX0NCKHN0cnVjdCBza19i dWZmICpza2IpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRj X2Rydl9iZWFjb24uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2Jl YWNvbi5jCmluZGV4IDc3OGY5OTkuLmEwNDg3MjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jCkBAIC0zOTEsMTIgKzM5MSwxMyBAQCBzdGF0 aWMgdm9pZCBhdGg5a19odGNfc2VuZF9iZWFjb24oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2 LAogCW1lbXNldCh0eF9jdGwsIDAsIHNpemVvZigqdHhfY3RsKSk7CiAKIAl0eF9jdGwtPnR5cGUg PSBBVEg5S19IVENfQkVBQ09OOworCXR4X2N0bC0+ZXBpZCA9IHByaXYtPmJlYWNvbl9lcDsKIAog CWJlYWNvbl9oZHIudmlmX2luZGV4ID0gYXZwLT5pbmRleDsKIAl0eF9maGRyID0gc2tiX3B1c2go YmVhY29uLCBzaXplb2YoYmVhY29uX2hkcikpOwogCW1lbWNweSh0eF9maGRyLCAodTggKikgJmJl YWNvbl9oZHIsIHNpemVvZihiZWFjb25faGRyKSk7CiAKLQlyZXQgPSBodGNfc2VuZChwcml2LT5o dGMsIGJlYWNvbiwgcHJpdi0+YmVhY29uX2VwKTsKKwlyZXQgPSBodGNfc2VuZChwcml2LT5odGMs IGJlYWNvbik7CiAJaWYgKHJldCAhPSAwKSB7CiAJCWlmIChyZXQgPT0gLUVOT01FTSkgewogCQkJ YXRoX2RiZyhjb21tb24sIEFUSF9EQkdfQlNUVUNLLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCmluZGV4IDFjYmUxOTQuLmQxNzY2MmYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYworKysgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKQEAgLTc2LDYgKzc2 LDM0IEBAIHZvaWQgYXRoOWtfaHRjX2NoZWNrX3dha2VfcXVldWVzKHN0cnVjdCBhdGg5a19odGNf cHJpdiAqcHJpdikKIAlzcGluX3VubG9ja19iaCgmcHJpdi0+dHgudHhfbG9jayk7CiB9CiAKK3N0 YXRpYyBlbnVtIGh0Y19lbmRwb2ludF9pZCBnZXRfaHRjX2VwaWQoc3RydWN0IGF0aDlrX2h0Y19w cml2ICpwcml2LAorCQkJCQkgdTE2IHFudW0pCit7CisJZW51bSBodGNfZW5kcG9pbnRfaWQgZXBp ZDsKKworCXN3aXRjaCAocW51bSkgeworCWNhc2UgMDoKKwkJVFhfUVNUQVRfSU5DKFdNRV9BQ19W Tyk7CisJCWVwaWQgPSBwcml2LT5kYXRhX3ZvX2VwOworCQlicmVhazsKKwljYXNlIDE6CisJCVRY X1FTVEFUX0lOQyhXTUVfQUNfVkkpOworCQllcGlkID0gcHJpdi0+ZGF0YV92aV9lcDsKKwkJYnJl YWs7CisJY2FzZSAyOgorCQlUWF9RU1RBVF9JTkMoV01FX0FDX0JFKTsKKwkJZXBpZCA9IHByaXYt PmRhdGFfYmVfZXA7CisJCWJyZWFrOworCWNhc2UgMzoKKwlkZWZhdWx0OgorCQlUWF9RU1RBVF9J TkMoV01FX0FDX0JLKTsKKwkJZXBpZCA9IHByaXYtPmRhdGFfYmtfZXA7CisJCWJyZWFrOworCX0K KworCXJldHVybiBlcGlkOworfQorCiBpbnQgYXRoX2h0Y190eHFfdXBkYXRlKHN0cnVjdCBhdGg5 a19odGNfcHJpdiAqcHJpdiwgaW50IHFudW0sCiAJCSAgICAgICBzdHJ1Y3QgYXRoOWtfdHhfcXVl dWVfaW5mbyAqcWluZm8pCiB7CkBAIC0xMTMsNyArMTQxLDYgQEAgaW50IGF0aDlrX2h0Y190eF9z dGFydChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJc3RydWN0IGF0aDlrX2h0Y19zdGEg KmlzdGE7CiAJc3RydWN0IGF0aDlrX2h0Y192aWYgKmF2cCA9IE5VTEw7CiAJc3RydWN0IGF0aDlr X2h0Y190eF9jdGwgKnR4X2N0bDsKLQllbnVtIGh0Y19lbmRwb2ludF9pZCBlcGlkOwogCXUxNiBx bnVtOwogCV9fbGUxNiBmYzsKIAl1OCAqdHhfZmhkcjsKQEAgLTE5NywzMSArMjI0LDEyIEBAIGlu dCBhdGg5a19odGNfdHhfc3RhcnQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCiAJCWlm IChpc19jYWIpIHsKIAkJCUNBQl9TVEFUX0lOQzsKLQkJCWVwaWQgPSBwcml2LT5jYWJfZXA7CisJ CQl0eF9jdGwtPmVwaWQgPSBwcml2LT5jYWJfZXA7CiAJCQlnb3RvIHNlbmQ7CiAJCX0KIAogCQlx bnVtID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7Ci0KLQkJc3dpdGNoIChxbnVtKSB7Ci0J CWNhc2UgMDoKLQkJCVRYX1FTVEFUX0lOQyhXTUVfQUNfVk8pOwotCQkJZXBpZCA9IHByaXYtPmRh dGFfdm9fZXA7Ci0JCQlicmVhazsKLQkJY2FzZSAxOgotCQkJVFhfUVNUQVRfSU5DKFdNRV9BQ19W SSk7Ci0JCQllcGlkID0gcHJpdi0+ZGF0YV92aV9lcDsKLQkJCWJyZWFrOwotCQljYXNlIDI6Ci0J CQlUWF9RU1RBVF9JTkMoV01FX0FDX0JFKTsKLQkJCWVwaWQgPSBwcml2LT5kYXRhX2JlX2VwOwot CQkJYnJlYWs7Ci0JCWNhc2UgMzoKLQkJZGVmYXVsdDoKLQkJCVRYX1FTVEFUX0lOQyhXTUVfQUNf QkspOwotCQkJZXBpZCA9IHByaXYtPmRhdGFfYmtfZXA7Ci0JCQlicmVhazsKLQkJfQorCQl0eF9j dGwtPmVwaWQgPSBnZXRfaHRjX2VwaWQocHJpdiwgcW51bSk7CiAJfSBlbHNlIHsKIAkJc3RydWN0 IHR4X21nbXRfaGRyIG1nbXRfaGRyOwogCkBAIC0yNTEsMTAgKzI1OSwxMCBAQCBpbnQgYXRoOWtf aHRjX3R4X3N0YXJ0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAogCQl0eF9maGRyID0g c2tiX3B1c2goc2tiLCBzaXplb2YobWdtdF9oZHIpKTsKIAkJbWVtY3B5KHR4X2ZoZHIsICh1OCAq KSAmbWdtdF9oZHIsIHNpemVvZihtZ210X2hkcikpOwotCQllcGlkID0gcHJpdi0+bWdtdF9lcDsK KwkJdHhfY3RsLT5lcGlkID0gcHJpdi0+bWdtdF9lcDsKIAl9CiBzZW5kOgotCXJldHVybiBodGNf c2VuZChwcml2LT5odGMsIHNrYiwgZXBpZCk7CisJcmV0dXJuIGh0Y19zZW5kKHByaXYtPmh0Yywg c2tiKTsKIH0KIAogc3RhdGljIGJvb2wgYXRoOWtfaHRjX2NoZWNrX3R4X2FnZ3Ioc3RydWN0IGF0 aDlrX2h0Y19wcml2ICpwcml2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2h0Y19oc3QuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0 LmMKaW5kZXggNmVlNTNkZS4uYmU4N2Y0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDlrL2h0Y19oc3QuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo OWsvaHRjX2hzdC5jCkBAIC0yODYsOCArMjg2LDE2IEBAIGVycjoKIAlyZXR1cm4gcmV0OwogfQog Ci1pbnQgaHRjX3NlbmQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYg KnNrYiwKLQkgICAgIGVudW0gaHRjX2VuZHBvaW50X2lkIGVwaWQpCitpbnQgaHRjX3NlbmQoc3Ry dWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlzdHJ1Y3Qg YXRoOWtfaHRjX3R4X2N0bCAqdHhfY3RsOworCisJdHhfY3RsID0gSFRDX1NLQl9DQihza2IpOwor CXJldHVybiBodGNfaXNzdWVfc2VuZCh0YXJnZXQsIHNrYiwgc2tiLT5sZW4sIDAsIHR4X2N0bC0+ ZXBpZCk7Cit9CisKK2ludCBodGNfc2VuZF9lcGlkKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQs IHN0cnVjdCBza19idWZmICpza2IsCisJCSAgZW51bSBodGNfZW5kcG9pbnRfaWQgZXBpZCkKIHsK IAlyZXR1cm4gaHRjX2lzc3VlX3NlbmQodGFyZ2V0LCBza2IsIHNrYi0+bGVuLCAwLCBlcGlkKTsK IH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0Lmgg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5oCmluZGV4IDM1MzE1NTIu LjA2NGEzMjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNf aHN0LmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuaApAQCAt MjA0LDggKzIwNCw5IEBAIGludCBodGNfaW5pdChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0KTsK IGludCBodGNfY29ubmVjdF9zZXJ2aWNlKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsCiAJCQkg IHN0cnVjdCBodGNfc2VydmljZV9jb25ucmVxICpzZXJ2aWNlX2Nvbm5yZXEsCiAJCQkgIGVudW0g aHRjX2VuZHBvaW50X2lkICpjb25uX3JzcF9laWQpOwotaW50IGh0Y19zZW5kKHN0cnVjdCBodGNf dGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBza19idWZmICpza2IsCi0JICAgICBlbnVtIGh0Y19lbmRw b2ludF9pZCBlaWQpOworaW50IGh0Y19zZW5kKHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0 cnVjdCBza19idWZmICpza2IpOworaW50IGh0Y19zZW5kX2VwaWQoc3RydWN0IGh0Y190YXJnZXQg KnRhcmdldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJICBlbnVtIGh0Y19lbmRwb2ludF9pZCBl cGlkKTsKIHZvaWQgaHRjX3N0b3Aoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCk7CiB2b2lkIGh0 Y19zdGFydChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL3dtaS5jCmluZGV4IGE5MTZjOTIuLjlkMDMwNjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvd21pLmMKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgaW50IGF0aDlrX3dtaV9j bWRfaXNzdWUoc3RydWN0IHdtaSAqd21pLAogCWhkci0+Y29tbWFuZF9pZCA9IGNwdV90b19iZTE2 KGNtZCk7CiAJaGRyLT5zZXFfbm8gPSBjcHVfdG9fYmUxNigrK3dtaS0+dHhfc2VxX2lkKTsKIAot CXJldHVybiBodGNfc2VuZCh3bWktPmh0Yywgc2tiLCB3bWktPmN0cmxfZXBpZCk7CisJcmV0dXJu IGh0Y19zZW5kX2VwaWQod21pLT5odGMsIHNrYiwgd21pLT5jdHJsX2VwaWQpOwogfQogCiBpbnQg YXRoOWtfd21pX2NtZChzdHJ1Y3Qgd21pICp3bWksIGVudW0gd21pX2NtZF9pZCBjbWRfaWQsCi0t IAoxLjcuNC4xCgoKRnJvbSAyMTVmOWRlODY5ZjQ0YTcwZGRmNjk3NzhiMzQwZWZlOWQ5MzY4OGMw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdWppdGggTWFub2hhcmFuIDxTdWppdGgu TWFub2hhcmFuQGF0aGVyb3MuY29tPgpEYXRlOiBGcmksIDExIEZlYiAyMDExIDEwOjU1OjE2ICsw NTMwClN1YmplY3Q6IFtQQVRDSCAyNC8zNF0gYXRoOWtfaHRjOiBNb3ZlIGVuZHBvaW50IGhlYWRl ciBwYXJzaW5nIHRvIFRYIHRhc2tsZXQKClRoZXJlIGlzIG5vIG5lZWQgdG8gZG8gZW5kcG9pbnQg aGVhZGVyIHJlbW92YWwgaW4gdGhlIElTUi4KQWxzbywgdGhpcyBpcyBuZWVkZWQgd2hlbiBUWCBz bG90IG1hbmFnZW1lbnQgaXMgYWRkZWQgbGF0ZXIgb24uClVzZSBhIGhlbHBlciBmdW5jdGlvbiB0 byBzdHJpcCB0aGUgZHJpdmVyIGhlYWRlci4KClNpZ25lZC1vZmYtYnk6IFN1aml0aCBNYW5vaGFy YW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+Ci0tLQogZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDlrL2h0Yy5oICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMgfCAgIDY4ICsrKysrKysrKysrKysrKystLS0tLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmggYi9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKaW5kZXggYWY3NDdkZS4uNTQyNTQ4MyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oCisrKyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaApAQCAtMjc0LDYgKzI3NCw3IEBAIHN0cnVj dCBhdGg5a19odGNfdHggewogc3RydWN0IGF0aDlrX2h0Y190eF9jdGwgewogCXU4IHR5cGU7IC8q IEFUSDlLX0hUQ18qICovCiAJdTggZXBpZDsKKwl1OCB0eG9rOwogfTsKIAogc3RhdGljIGlubGlu ZSBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqSFRDX1NLQl9DQihzdHJ1Y3Qgc2tfYnVmZiAqc2ti KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhy eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCmluZGV4 IGQxNzY2MmYuLjdiMjE4ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGg5ay9odGNfZHJ2X3R4cnguYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv aHRjX2Rydl90eHJ4LmMKQEAgLTEwNCw2ICsxMDQsMzAgQEAgc3RhdGljIGVudW0gaHRjX2VuZHBv aW50X2lkIGdldF9odGNfZXBpZChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJcmV0dXJu IGVwaWQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IHN0cmlwX2Rydl9oZWFkZXIoc3RydWN0IGF0 aDlrX2h0Y19wcml2ICpwcml2LAorCQkJCSAgIHN0cnVjdCBza19idWZmICpza2IpCit7CisJc3Ry dWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihwcml2LT5haCk7CisJc3Ry dWN0IGF0aDlrX2h0Y190eF9jdGwgKnR4X2N0bDsKKworCXR4X2N0bCA9IEhUQ19TS0JfQ0Ioc2ti KTsKKworCWlmICh0eF9jdGwtPmVwaWQgPT0gcHJpdi0+bWdtdF9lcCkgeworCQlza2JfcHVsbChz a2IsIHNpemVvZihzdHJ1Y3QgdHhfbWdtdF9oZHIpKTsKKwl9IGVsc2UgaWYgKCh0eF9jdGwtPmVw aWQgPT0gcHJpdi0+ZGF0YV9ia19lcCkgfHwKKwkJICAgKHR4X2N0bC0+ZXBpZCA9PSBwcml2LT5k YXRhX2JlX2VwKSB8fAorCQkgICAodHhfY3RsLT5lcGlkID09IHByaXYtPmRhdGFfdmlfZXApIHx8 CisJCSAgICh0eF9jdGwtPmVwaWQgPT0gcHJpdi0+ZGF0YV92b19lcCkgfHwKKwkJICAgKHR4X2N0 bC0+ZXBpZCA9PSBwcml2LT5jYWJfZXApKSB7CisJCXNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVj dCB0eF9mcmFtZV9oZHIpKTsKKwl9IGVsc2UgeworCQlhdGhfZXJyKGNvbW1vbiwgIlVuc3VwcG9y dGVkIEVQSUQ6ICVkXG4iLCB0eF9jdGwtPmVwaWQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK KwlyZXR1cm4gMDsKK30KKwogaW50IGF0aF9odGNfdHhxX3VwZGF0ZShzdHJ1Y3QgYXRoOWtfaHRj X3ByaXYgKnByaXYsIGludCBxbnVtLAogCQkgICAgICAgc3RydWN0IGF0aDlrX3R4X3F1ZXVlX2lu Zm8gKnFpbmZvKQogewpAQCAtMjgxLDIyICszMDUsNDAgQEAgc3RhdGljIGJvb2wgYXRoOWtfaHRj X2NoZWNrX3R4X2FnZ3Ioc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogdm9pZCBhdGg5a190 eF90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKIHsKIAlzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYg KnByaXYgPSAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICopZGF0YTsKKwlzdHJ1Y3QgYXRoOWtfaHRj X3R4X2N0bCAqdHhfY3RsOwogCXN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWY7CiAJc3RydWN0IGll ZWU4MDIxMV9zdGEgKnN0YTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyOwogCXN0cnVjdCBp ZWVlODAyMTFfdHhfaW5mbyAqdHhfaW5mbzsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDsK IAlfX2xlMTYgZmM7CisJYm9vbCB0eG9rOwogCiAJd2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZSgm cHJpdi0+dHgudHhfcXVldWUpKSAhPSBOVUxMKSB7CiAKKwkJaWYgKHN0cmlwX2Rydl9oZWFkZXIo cHJpdiwgc2tiKSA8IDApIHsKKwkJCWRldl9rZnJlZV9za2JfYW55KHNrYik7CisJCQljb250aW51 ZTsKKwkJfQorCisJCXR4X2N0bCA9IEhUQ19TS0JfQ0Ioc2tiKTsKIAkJaGRyID0gKHN0cnVjdCBp ZWVlODAyMTFfaGRyICopIHNrYi0+ZGF0YTsKIAkJZmMgPSBoZHItPmZyYW1lX2NvbnRyb2w7CiAJ CXR4X2luZm8gPSBJRUVFODAyMTFfU0tCX0NCKHNrYik7CiAJCXZpZiA9IHR4X2luZm8tPmNvbnRy b2wudmlmOworCQl0eG9rID0gdHhfY3RsLT50eG9rOwogCiAJCW1lbXNldCgmdHhfaW5mby0+c3Rh dHVzLCAwLCBzaXplb2YodHhfaW5mby0+c3RhdHVzKSk7CiAKKwkJLyoKKwkJICogVVJCIHN1Ym1p c3Npb24gZmFpbGVkIGZvciB0aGlzIGZyYW1lLCBpdCBuZXZlciByZWFjaGVkCisJCSAqIHRoZSB0 YXJnZXQuCisJCSAqLworCQlpZiAoIXR4b2spCisJCQlnb3RvIHNlbmRfbWFjODAyMTE7CisKKwkJ dHhfaW5mby0+ZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfQUNLOworCiAJCWlmICghdmlmKQog CQkJZ290byBzZW5kX21hYzgwMjExOwogCkBAIC0zNTAsMzAgKzM5MiwxMCBAQCB2b2lkIGF0aDlr X2h0Y190eGVwKHZvaWQgKmRydl9wcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkgICAgZW51 bSBodGNfZW5kcG9pbnRfaWQgZXBfaWQsIGJvb2wgdHhvaykKIHsKIAlzdHJ1Y3QgYXRoOWtfaHRj X3ByaXYgKnByaXYgPSAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICopIGRydl9wcml2OwotCXN0cnVj dCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24ocHJpdi0+YWgpOwotCXN0cnVj dCBpZWVlODAyMTFfdHhfaW5mbyAqdHhfaW5mbzsKLQotCWlmICghc2tiKQotCQlyZXR1cm47Ci0K LQlpZiAoZXBfaWQgPT0gcHJpdi0+bWdtdF9lcCkgewotCQlza2JfcHVsbChza2IsIHNpemVvZihz dHJ1Y3QgdHhfbWdtdF9oZHIpKTsKLQl9IGVsc2UgaWYgKChlcF9pZCA9PSBwcml2LT5kYXRhX2Jr X2VwKSB8fAotCQkgICAoZXBfaWQgPT0gcHJpdi0+ZGF0YV9iZV9lcCkgfHwKLQkJICAgKGVwX2lk ID09IHByaXYtPmRhdGFfdmlfZXApIHx8Ci0JCSAgIChlcF9pZCA9PSBwcml2LT5kYXRhX3ZvX2Vw KSB8fAotCQkgICAoZXBfaWQgPT0gcHJpdi0+Y2FiX2VwKSkgewotCQlza2JfcHVsbChza2IsIHNp emVvZihzdHJ1Y3QgdHhfZnJhbWVfaGRyKSk7Ci0JfSBlbHNlIHsKLQkJYXRoX2Vycihjb21tb24s ICJVbnN1cHBvcnRlZCBUWCBFUElEOiAlZFxuIiwgZXBfaWQpOwotCQlkZXZfa2ZyZWVfc2tiX2Fu eShza2IpOwotCQlyZXR1cm47Ci0JfQotCi0JdHhfaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2ti KTsKKwlzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqdHhfY3RsOwogCi0JaWYgKHR4b2spCi0JCXR4 X2luZm8tPmZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX0FDSzsKKwl0eF9jdGwgPSBIVENfU0tC X0NCKHNrYik7CisJdHhfY3RsLT50eG9rID0gdHhvazsKIAogCXNrYl9xdWV1ZV90YWlsKCZwcml2 LT50eC50eF9xdWV1ZSwgc2tiKTsKIAl0YXNrbGV0X3NjaGVkdWxlKCZwcml2LT50eF90YXNrbGV0 KTsKLS0gCjEuNy40LjEKCgpGcm9tIDNkYjgwMGE0MWY1ZjRlYWEwYzZmOGZlMjcxMWQ4MmExN2Ex MDgyY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFN1aml0aCBNYW5vaGFyYW4gPFN1 aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+CkRhdGU6IEZyaSwgMTEgRmViIDIwMTEgMTE6Mjk6 MDAgKzA1MzAKU3ViamVjdDogW1BBVENIIDI1LzM0XSBhdGg5a19odGM6IEFkZCBUWCBzbG90cwoK TWFpbnRhaW4gYSBiaXRtYXAgb2Ygc2xvdHMgZm9yIHRyYW5zbWlzc2lvbiBhbmQgdXBkYXRlCnRo ZSBjb29raWUgZmllbGQgZm9yIGV2ZXJ5IHBhY2tldCB3aXRoIHRoZSBzbG90IHZhbHVlLgpUaGlz IHZhbHVlIHdvdWxkIGJlIHVzZWQgZm9yIG1hdGNoaW5nIHBhY2tldHMgd2hlbiBUWApjb21wbGV0 aW9uIHByb2Nlc3NpbmcgaXMgYWRkZWQuCgpTaWduZWQtb2ZmLWJ5OiBTdWppdGggTWFub2hhcmFu IDxTdWppdGguTWFub2hhcmFuQGF0aGVyb3MuY29tPgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGg5ay9odGMuaCAgICAgICAgICAgIHwgICAgNSArKy0KIGRyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2JlYWNvbi5jIHwgICAxNyArKysrKystLQogZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jICAgfCAgIDE0ICsrKysrLQogZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jICAgfCAgIDUxICsrKysr KysrKysrKysrKysrKysrLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDE0 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGMuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaAppbmRleCA1NDI1 NDgzLi4zMzIxNzVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv aHRjLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oCkBAIC0yNjgs NiArMjY4LDcgQEAgc3RydWN0IGF0aDlrX2h0Y190eCB7CiAJdTggZmxhZ3M7CiAJaW50IHF1ZXVl ZF9jbnQ7CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCB0eF9xdWV1ZTsKKwlERUNMQVJFX0JJVE1BUCh0 eF9zbG90LCBNQVhfVFhfQlVGX05VTSk7CiAJc3BpbmxvY2tfdCB0eF9sb2NrOwogfTsKIApAQCAt NTI2LDcgKzUyNyw3IEBAIHZvaWQgYXRoOWtfaHRjX3N0b3BfYW5pKHN0cnVjdCBhdGg5a19odGNf cHJpdiAqcHJpdik7CiBpbnQgYXRoOWtfdHhfaW5pdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnBy aXYpOwogdm9pZCBhdGg5a190eF90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSk7CiBpbnQgYXRo OWtfaHRjX3R4X3N0YXJ0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKLQkJICAgICAgIHN0 cnVjdCBza19idWZmICpza2IsIGJvb2wgaXNfY2FiKTsKKwkJICAgICAgIHN0cnVjdCBza19idWZm ICpza2IsIHU4IHNsb3QsIGJvb2wgaXNfY2FiKTsKIHZvaWQgYXRoOWtfdHhfY2xlYW51cChzdHJ1 Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpOwogYm9vbCBhdGg5a19odGNfdHhxX3NldHVwKHN0cnVj dCBhdGg5a19odGNfcHJpdiAqcHJpdiwgaW50IHN1YnR5cGUpOwogaW50IGF0aDlrX2h0Y19jYWJx X3NldHVwKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7CkBAIC01MzUsNiArNTM2LDggQEAg aW50IGF0aF9odGNfdHhxX3VwZGF0ZShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIGludCBx bnVtLAogCQkgICAgICAgc3RydWN0IGF0aDlrX3R4X3F1ZXVlX2luZm8gKnFpbmZvKTsKIHZvaWQg YXRoOWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7 CiB2b2lkIGF0aDlrX2h0Y19jaGVja193YWtlX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYg KnByaXYpOworaW50IGF0aDlrX2h0Y190eF9nZXRfc2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYg KnByaXYpOwordm9pZCBhdGg5a19odGNfdHhfY2xlYXJfc2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3By aXYgKnByaXYsIGludCBzbG90KTsKIAogaW50IGF0aDlrX3J4X2luaXQoc3RydWN0IGF0aDlrX2h0 Y19wcml2ICpwcml2KTsKIHZvaWQgYXRoOWtfcnhfY2xlYW51cChzdHJ1Y3QgYXRoOWtfaHRjX3By aXYgKnByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0 Y19kcnZfYmVhY29uLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9i ZWFjb24uYwppbmRleCBhMDQ4NzIwLi40ZDA3MWIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYworKysgYi9kcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9iZWFjb24uYwpAQCAtMzAzLDcgKzMwMyw3IEBAIHN0YXRp YyB2b2lkIGF0aDlrX2h0Y19zZW5kX2J1ZmZlcmVkKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJp diwKIAlzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmOwogCXN0cnVjdCBza19idWZmICpza2I7CiAJ c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcjsKLQlpbnQgcGFkcG9zLCBwYWRzaXplLCByZXQ7CisJ aW50IHBhZHBvcywgcGFkc2l6ZSwgcmV0LCB0eF9zbG90OwogCiAJc3Bpbl9sb2NrX2JoKCZwcml2 LT5iZWFjb25fbG9jayk7CiAKQEAgLTMyNSwxMSArMzI1LDIwIEBAIHN0YXRpYyB2b2lkIGF0aDlr X2h0Y19zZW5kX2J1ZmZlcmVkKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAkJCW1lbW1v dmUoc2tiLT5kYXRhLCBza2ItPmRhdGEgKyBwYWRzaXplLCBwYWRwb3MpOwogCQl9CiAKLQkJcmV0 ID0gYXRoOWtfaHRjX3R4X3N0YXJ0KHByaXYsIHNrYiwgdHJ1ZSk7CisJCXR4X3Nsb3QgPSBhdGg5 a19odGNfdHhfZ2V0X3Nsb3QocHJpdik7CisJCWlmICh0eF9zbG90ICE9IDApIHsKKwkJCWF0aF9k YmcoY29tbW9uLCBBVEhfREJHX1hNSVQsICJObyBmcmVlIENBQiBzbG90XG4iKTsKKwkJCWRldl9r ZnJlZV9za2JfYW55KHNrYik7CisJCQlnb3RvIG5leHQ7CisJCX0KKworCQlyZXQgPSBhdGg5a19o dGNfdHhfc3RhcnQocHJpdiwgc2tiLCB0eF9zbG90LCB0cnVlKTsKIAkJaWYgKHJldCAhPSAwKSB7 Ci0JCQlhdGhfZGJnKGNvbW1vbiwgQVRIX0RCR19GQVRBTCwKLQkJCQkiRmFpbGVkIHRvIHNlbmQg Q0FCIGZyYW1lXG4iKTsKKwkJCWF0aDlrX2h0Y190eF9jbGVhcl9zbG90KHByaXYsIHR4X3Nsb3Qp OwogCQkJZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsKKworCQkJYXRoX2RiZyhjb21tb24sIEFUSF9E QkdfWE1JVCwKKwkJCQkiRmFpbGVkIHRvIHNlbmQgQ0FCIGZyYW1lXG4iKTsKIAkJfQogCW5leHQ6 CiAJCXNrYiA9IGllZWU4MDIxMV9nZXRfYnVmZmVyZWRfYmMocHJpdi0+aHcsIHZpZik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMKaW5kZXggNjkwMTEz Ni4uYzdlMDU2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0 Y19kcnZfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2 X21haW4uYwpAQCAtODM0LDcgKzgzNCw3IEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eChzdHJ1 Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAlzdHJ1Y3QgaWVlZTgw MjExX2hkciAqaGRyOwogCXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IGh3LT5wcml2Owog CXN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24ocHJpdi0+YWgpOwot CWludCBwYWRwb3MsIHBhZHNpemUsIHJldDsKKwlpbnQgcGFkcG9zLCBwYWRzaXplLCByZXQsIHNs b3Q7CiAKIAloZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikgc2tiLT5kYXRhOwogCkBAIC04 NTAsMTYgKzg1MCwyNCBAQCBzdGF0aWMgdm9pZCBhdGg5a19odGNfdHgoc3RydWN0IGllZWU4MDIx MV9odyAqaHcsIHN0cnVjdCBza19idWZmICpza2IpCiAJCW1lbW1vdmUoc2tiLT5kYXRhLCBza2It PmRhdGEgKyBwYWRzaXplLCBwYWRwb3MpOwogCX0KIAotCXJldCA9IGF0aDlrX2h0Y190eF9zdGFy dChwcml2LCBza2IsIGZhbHNlKTsKKwlzbG90ID0gYXRoOWtfaHRjX3R4X2dldF9zbG90KHByaXYp OworCWlmIChzbG90IDwgMCkgeworCQlhdGhfZGJnKGNvbW1vbiwgQVRIX0RCR19YTUlULCAiTm8g ZnJlZSBUWCBzbG90XG4iKTsKKwkJZ290byBmYWlsX3R4OworCX0KKworCXJldCA9IGF0aDlrX2h0 Y190eF9zdGFydChwcml2LCBza2IsIHNsb3QsIGZhbHNlKTsKIAlpZiAocmV0ICE9IDApIHsKIAkJ YXRoX2RiZyhjb21tb24sIEFUSF9EQkdfWE1JVCwgIlR4IGZhaWxlZFxuIik7Ci0JCWdvdG8gZmFp bF90eDsKKwkJZ290byBjbGVhcl9zbG90OwogCX0KIAogCWF0aDlrX2h0Y19jaGVja19zdG9wX3F1 ZXVlcyhwcml2KTsKIAogCXJldHVybjsKIAorY2xlYXJfc2xvdDoKKwlhdGg5a19odGNfdHhfY2xl YXJfc2xvdChwcml2LCBzbG90KTsKIGZhaWxfdHg6CiAJZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsK IH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4 cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYwppbmRl eCA3YjIxOGRhLi5lZTViM2UyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoOWsvaHRjX2Rydl90eHJ4LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L2h0Y19kcnZfdHhyeC5jCkBAIC03Niw2ICs3NiwyOSBAQCB2b2lkIGF0aDlrX2h0Y19jaGVja193 YWtlX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCiAJc3Bpbl91bmxvY2tfYmgo JnByaXYtPnR4LnR4X2xvY2spOwogfQogCitpbnQgYXRoOWtfaHRjX3R4X2dldF9zbG90KHN0cnVj dCBhdGg5a19odGNfcHJpdiAqcHJpdikKK3sKKwlpbnQgc2xvdDsKKworCXNwaW5fbG9ja19iaCgm cHJpdi0+dHgudHhfbG9jayk7CisJc2xvdCA9IGZpbmRfZmlyc3RfemVyb19iaXQocHJpdi0+dHgu dHhfc2xvdCwgTUFYX1RYX0JVRl9OVU0pOworCWlmIChzbG90ID49IE1BWF9UWF9CVUZfTlVNKSB7 CisJCXNwaW5fdW5sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsKKwkJcmV0dXJuIC1FTk9CVUZT OworCX0KKwlfX3NldF9iaXQoc2xvdCwgcHJpdi0+dHgudHhfc2xvdCk7CisJc3Bpbl91bmxvY2tf YmgoJnByaXYtPnR4LnR4X2xvY2spOworCisJcmV0dXJuIHNsb3Q7Cit9CisKK3ZvaWQgYXRoOWtf aHRjX3R4X2NsZWFyX3Nsb3Qoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LCBpbnQgc2xvdCkK K3sKKwlzcGluX2xvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOworCV9fY2xlYXJfYml0KHNsb3Qs IHByaXYtPnR4LnR4X3Nsb3QpOworCXNwaW5fdW5sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsK K30KKwogc3RhdGljIGVudW0gaHRjX2VuZHBvaW50X2lkIGdldF9odGNfZXBpZChzdHJ1Y3QgYXRo OWtfaHRjX3ByaXYgKnByaXYsCiAJCQkJCSB1MTYgcW51bSkKIHsKQEAgLTEwNCwyOCArMTI3LDM4 IEBAIHN0YXRpYyBlbnVtIGh0Y19lbmRwb2ludF9pZCBnZXRfaHRjX2VwaWQoc3RydWN0IGF0aDlr X2h0Y19wcml2ICpwcml2LAogCXJldHVybiBlcGlkOwogfQogCisvKgorICogUmVtb3ZlcyB0aGUg ZHJpdmVyIGhlYWRlciBhbmQgcmV0dXJucyB0aGUgVFggc2xvdCBudW1iZXIKKyAqLwogc3RhdGlj IGlubGluZSBpbnQgc3RyaXBfZHJ2X2hlYWRlcihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYs CiAJCQkJICAgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29t bW9uID0gYXRoOWtfaHdfY29tbW9uKHByaXYtPmFoKTsKIAlzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0 bCAqdHhfY3RsOworCWludCBzbG90OwogCiAJdHhfY3RsID0gSFRDX1NLQl9DQihza2IpOwogCiAJ aWYgKHR4X2N0bC0+ZXBpZCA9PSBwcml2LT5tZ210X2VwKSB7CisJCXN0cnVjdCB0eF9tZ210X2hk ciAqdHhfbWhkciA9CisJCQkoc3RydWN0IHR4X21nbXRfaGRyICopc2tiLT5kYXRhOworCQlzbG90 ID0gdHhfbWhkci0+Y29va2llOwogCQlza2JfcHVsbChza2IsIHNpemVvZihzdHJ1Y3QgdHhfbWdt dF9oZHIpKTsKIAl9IGVsc2UgaWYgKCh0eF9jdGwtPmVwaWQgPT0gcHJpdi0+ZGF0YV9ia19lcCkg fHwKIAkJICAgKHR4X2N0bC0+ZXBpZCA9PSBwcml2LT5kYXRhX2JlX2VwKSB8fAogCQkgICAodHhf Y3RsLT5lcGlkID09IHByaXYtPmRhdGFfdmlfZXApIHx8CiAJCSAgICh0eF9jdGwtPmVwaWQgPT0g cHJpdi0+ZGF0YV92b19lcCkgfHwKIAkJICAgKHR4X2N0bC0+ZXBpZCA9PSBwcml2LT5jYWJfZXAp KSB7CisJCXN0cnVjdCB0eF9mcmFtZV9oZHIgKnR4X2ZoZHIgPQorCQkJKHN0cnVjdCB0eF9mcmFt ZV9oZHIgKilza2ItPmRhdGE7CisJCXNsb3QgPSB0eF9maGRyLT5jb29raWU7CiAJCXNrYl9wdWxs KHNrYiwgc2l6ZW9mKHN0cnVjdCB0eF9mcmFtZV9oZHIpKTsKIAl9IGVsc2UgewogCQlhdGhfZXJy KGNvbW1vbiwgIlVuc3VwcG9ydGVkIEVQSUQ6ICVkXG4iLCB0eF9jdGwtPmVwaWQpOwotCQlyZXR1 cm4gLUVJTlZBTDsKKwkJc2xvdCA9IC1FSU5WQUw7CiAJfQogCi0JcmV0dXJuIDA7CisJcmV0dXJu IHNsb3Q7CiB9CiAKIGludCBhdGhfaHRjX3R4cV91cGRhdGUoc3RydWN0IGF0aDlrX2h0Y19wcml2 ICpwcml2LCBpbnQgcW51bSwKQEAgLTE1NSw3ICsxODgsOCBAQCBpbnQgYXRoX2h0Y190eHFfdXBk YXRlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgaW50IHFudW0sCiB9CiAKIGludCBhdGg5 a19odGNfdHhfc3RhcnQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAotCQkgICAgICAgc3Ry dWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCBpc19jYWIpCisJCSAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAq c2tiLAorCQkgICAgICAgdTggc2xvdCwgYm9vbCBpc19jYWIpCiB7CiAJc3RydWN0IGllZWU4MDIx MV9oZHIgKmhkcjsKIAlzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7CkBAIC0yMTIsNiArMjQ2 LDcgQEAgaW50IGF0aDlrX2h0Y190eF9zdGFydChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYs CiAKIAkJdHhfaGRyLm5vZGVfaWR4ID0gc3RhX2lkeDsKIAkJdHhfaGRyLnZpZl9pZHggPSB2aWZf aWR4OworCQl0eF9oZHIuY29va2llID0gc2xvdDsKIAogCQlpZiAodHhfaW5mby0+ZmxhZ3MgJiBJ RUVFODAyMTFfVFhfQ1RMX0FNUERVKSB7CiAJCQl0eF9jdGwtPnR5cGUgPSBBVEg5S19IVENfQU1Q RFU7CkBAIC0yNzQsNiArMzA5LDcgQEAgaW50IGF0aDlrX2h0Y190eF9zdGFydChzdHJ1Y3QgYXRo OWtfaHRjX3ByaXYgKnByaXYsCiAJCW1nbXRfaGRyLnZpZl9pZHggPSB2aWZfaWR4OwogCQltZ210 X2hkci50aWRubyA9IDA7CiAJCW1nbXRfaGRyLmZsYWdzID0gMDsKKwkJbWdtdF9oZHIuY29va2ll ID0gc2xvdDsKIAogCQltZ210X2hkci5rZXlfdHlwZSA9IGF0aDlrX2Ntbl9nZXRfaHdfY3J5cHRv X2tleXR5cGUoc2tiKTsKIAkJaWYgKG1nbXRfaGRyLmtleV90eXBlID09IEFUSDlLX0tFWV9UWVBF X0NMRUFSKQpAQCAtMzEzLDEwICszNDksMTIgQEAgdm9pZCBhdGg5a190eF90YXNrbGV0KHVuc2ln bmVkIGxvbmcgZGF0YSkKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDsKIAlfX2xlMTYgZmM7 CiAJYm9vbCB0eG9rOworCWludCBzbG90OwogCiAJd2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZSgm cHJpdi0+dHgudHhfcXVldWUpKSAhPSBOVUxMKSB7CiAKLQkJaWYgKHN0cmlwX2Rydl9oZWFkZXIo cHJpdiwgc2tiKSA8IDApIHsKKwkJc2xvdCA9IHN0cmlwX2Rydl9oZWFkZXIocHJpdiwgc2tiKTsK KwkJaWYgKHNsb3QgPCAwKSB7CiAJCQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQkJY29udGlu dWU7CiAJCX0KQEAgLTM0Nyw4ICszODUsNyBAQCB2b2lkIGF0aDlrX3R4X3Rhc2tsZXQodW5zaWdu ZWQgbG9uZyBkYXRhKQogCQlzdGEgPSBpZWVlODAyMTFfZmluZF9zdGEodmlmLCBoZHItPmFkZHIx KTsKIAkJaWYgKCFzdGEpIHsKIAkJCXJjdV9yZWFkX3VubG9jaygpOwotCQkJaWVlZTgwMjExX3R4 X3N0YXR1cyhwcml2LT5odywgc2tiKTsKLQkJCWNvbnRpbnVlOworCQkJZ290byBzZW5kX21hYzgw MjExOwogCQl9CiAKIAkJLyogQ2hlY2sgaWYgd2UgbmVlZCB0byBzdGFydCBhZ2dyZWdhdGlvbiAq LwpAQCAtMzgwLDYgKzQxNyw4IEBAIHZvaWQgYXRoOWtfdHhfdGFza2xldCh1bnNpZ25lZCBsb25n IGRhdGEpCiAJCQlwcml2LT50eC5xdWV1ZWRfY250ID0gMDsKIAkJc3Bpbl91bmxvY2tfYmgoJnBy aXYtPnR4LnR4X2xvY2spOwogCisJCWF0aDlrX2h0Y190eF9jbGVhcl9zbG90KHByaXYsIHNsb3Qp OworCiAJCS8qIFNlbmQgc3RhdHVzIHRvIG1hYzgwMjExICovCiAJCWllZWU4MDIxMV90eF9zdGF0 dXMocHJpdi0+aHcsIHNrYik7CiAJfQotLSAKMS43LjQuMQoKCkZyb20gZGMwYWY4ZDNmYjM5MDhk YWY5ZTU2MDcxYWQyYmU4ODc3ZTM1MDAzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog U3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KRGF0ZTogTW9u LCAxNCBGZWIgMjAxMSAwOTowMDoyNiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMjYvMzRdIGF0aDlr X2h0YzogVXNlIGhlbHBlciBmdW5jdGlvbnMgZm9yIFRYIHByb2Nlc3NpbmcKClNpZ25lZC1vZmYt Ynk6IFN1aml0aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+Ci0tLQog ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jIHwgIDEzNyArKysr KysrKysrKysrLS0tLS0tLS0tLS0tCiAxIGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyks IDY0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGg5ay9odGNfZHJ2X3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNf ZHJ2X3R4cnguYwppbmRleCBlZTViM2UyLi45NDQ0NDBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKKysrIGIvZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCkBAIC0zMjUsOCArMzI1LDggQEAgc2VuZDoK IAlyZXR1cm4gaHRjX3NlbmQocHJpdi0+aHRjLCBza2IpOwogfQogCi1zdGF0aWMgYm9vbCBhdGg5 a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCi0JCQkJICAg IHN0cnVjdCBhdGg5a19odGNfc3RhICppc3RhLCB1OCB0aWQpCitzdGF0aWMgaW5saW5lIGJvb2wg X19hdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCisJ CQkJCSAgICAgc3RydWN0IGF0aDlrX2h0Y19zdGEgKmlzdGEsIHU4IHRpZCkKIHsKIAlib29sIHJl dCA9IGZhbHNlOwogCkBAIC0zMzgsODkgKzMzOCw5OCBAQCBzdGF0aWMgYm9vbCBhdGg5a19odGNf Y2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJcmV0dXJuIHJldDsK IH0KIAotdm9pZCBhdGg5a190eF90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKK3N0YXRpYyB2 b2lkIGF0aDlrX2h0Y19jaGVja190eF9hZ2dyKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwK KwkJCQkgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwKKwkJCQkgICAgc3RydWN0IHNrX2J1 ZmYgKnNrYikKIHsKLQlzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYgPSAoc3RydWN0IGF0aDlr X2h0Y19wcml2ICopZGF0YTsKLQlzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqdHhfY3RsOwotCXN0 cnVjdCBpZWVlODAyMTFfdmlmICp2aWY7CiAJc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTsKIAlz dHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyOwotCXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhf aW5mbzsKLQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDsKIAlfX2xlMTYgZmM7Ci0JYm9vbCB0 eG9rOwotCWludCBzbG90OwogCi0Jd2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZSgmcHJpdi0+dHgu dHhfcXVldWUpKSAhPSBOVUxMKSB7CisJaGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopIHNr Yi0+ZGF0YTsKKwlmYyA9IGhkci0+ZnJhbWVfY29udHJvbDsKIAotCQlzbG90ID0gc3RyaXBfZHJ2 X2hlYWRlcihwcml2LCBza2IpOwotCQlpZiAoc2xvdCA8IDApIHsKLQkJCWRldl9rZnJlZV9za2Jf YW55KHNrYik7Ci0JCQljb250aW51ZTsKLQkJfQorCXJjdV9yZWFkX2xvY2soKTsKIAotCQl0eF9j dGwgPSBIVENfU0tCX0NCKHNrYik7Ci0JCWhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKSBz a2ItPmRhdGE7Ci0JCWZjID0gaGRyLT5mcmFtZV9jb250cm9sOwotCQl0eF9pbmZvID0gSUVFRTgw MjExX1NLQl9DQihza2IpOwotCQl2aWYgPSB0eF9pbmZvLT5jb250cm9sLnZpZjsKLQkJdHhvayA9 IHR4X2N0bC0+dHhvazsKKwlzdGEgPSBpZWVlODAyMTFfZmluZF9zdGEodmlmLCBoZHItPmFkZHIx KTsKKwlpZiAoIXN0YSkgeworCQlyY3VfcmVhZF91bmxvY2soKTsKKwkJcmV0dXJuOworCX0KIAot CQltZW1zZXQoJnR4X2luZm8tPnN0YXR1cywgMCwgc2l6ZW9mKHR4X2luZm8tPnN0YXR1cykpOwor CWlmIChzdGEgJiYgY29uZl9pc19odCgmcHJpdi0+aHctPmNvbmYpICYmCisJICAgICEoc2tiLT5w cm90b2NvbCA9PSBjcHVfdG9fYmUxNihFVEhfUF9QQUUpKSkgeworCQlpZiAoaWVlZTgwMjExX2lz X2RhdGFfcW9zKGZjKSkgeworCQkJdTggKnFjLCB0aWQ7CisJCQlzdHJ1Y3QgYXRoOWtfaHRjX3N0 YSAqaXN0YTsKIAotCQkvKgotCQkgKiBVUkIgc3VibWlzc2lvbiBmYWlsZWQgZm9yIHRoaXMgZnJh bWUsIGl0IG5ldmVyIHJlYWNoZWQKLQkJICogdGhlIHRhcmdldC4KLQkJICovCi0JCWlmICghdHhv aykKLQkJCWdvdG8gc2VuZF9tYWM4MDIxMTsKKwkJCXFjID0gaWVlZTgwMjExX2dldF9xb3NfY3Rs KGhkcik7CisJCQl0aWQgPSBxY1swXSAmIDB4ZjsKKwkJCWlzdGEgPSAoc3RydWN0IGF0aDlrX2h0 Y19zdGEgKilzdGEtPmRydl9wcml2OworCQkJaWYgKF9fYXRoOWtfaHRjX2NoZWNrX3R4X2FnZ3Io cHJpdiwgaXN0YSwgdGlkKSkgeworCQkJCWllZWU4MDIxMV9zdGFydF90eF9iYV9zZXNzaW9uKHN0 YSwgdGlkLCAwKTsKKwkJCQlzcGluX2xvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOworCQkJCWlz dGEtPnRpZF9zdGF0ZVt0aWRdID0gQUdHUl9QUk9HUkVTUzsKKwkJCQlzcGluX3VubG9ja19iaCgm cHJpdi0+dHgudHhfbG9jayk7CisJCQl9CisJCX0KKwl9CiAKLQkJdHhfaW5mby0+ZmxhZ3MgfD0g SUVFRTgwMjExX1RYX1NUQVRfQUNLOworCXJjdV9yZWFkX3VubG9jaygpOworfQogCi0JCWlmICgh dmlmKQotCQkJZ290byBzZW5kX21hYzgwMjExOworc3RhdGljIHZvaWQgYXRoOWtfaHRjX3R4X3By b2Nlc3Moc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAorCQkJCSBzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQoreworCXN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWY7CisJc3RydWN0IGF0aDlrX2h0Y190 eF9jdGwgKnR4X2N0bDsKKwlzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKnR4X2luZm87CisJYm9v bCB0eG9rOworCWludCBzbG90OwogCi0JCXJjdV9yZWFkX2xvY2soKTsKKwlzbG90ID0gc3RyaXBf ZHJ2X2hlYWRlcihwcml2LCBza2IpOworCWlmIChzbG90IDwgMCkgeworCQlkZXZfa2ZyZWVfc2ti X2FueShza2IpOworCQlyZXR1cm47CisJfQogCi0JCXN0YSA9IGllZWU4MDIxMV9maW5kX3N0YSh2 aWYsIGhkci0+YWRkcjEpOwotCQlpZiAoIXN0YSkgewotCQkJcmN1X3JlYWRfdW5sb2NrKCk7Ci0J CQlnb3RvIHNlbmRfbWFjODAyMTE7Ci0JCX0KKwl0eF9jdGwgPSBIVENfU0tCX0NCKHNrYik7CisJ dHhvayA9IHR4X2N0bC0+dHhvazsKKwl0eF9pbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpOwor CXZpZiA9IHR4X2luZm8tPmNvbnRyb2wudmlmOwogCi0JCS8qIENoZWNrIGlmIHdlIG5lZWQgdG8g c3RhcnQgYWdncmVnYXRpb24gKi8KKwltZW1zZXQoJnR4X2luZm8tPnN0YXR1cywgMCwgc2l6ZW9m KHR4X2luZm8tPnN0YXR1cykpOwogCi0JCWlmIChzdGEgJiYgY29uZl9pc19odCgmcHJpdi0+aHct PmNvbmYpICYmCi0JCSAgICAhKHNrYi0+cHJvdG9jb2wgPT0gY3B1X3RvX2JlMTYoRVRIX1BfUEFF KSkpIHsKLQkJCWlmIChpZWVlODAyMTFfaXNfZGF0YV9xb3MoZmMpKSB7Ci0JCQkJdTggKnFjLCB0 aWQ7Ci0JCQkJc3RydWN0IGF0aDlrX2h0Y19zdGEgKmlzdGE7CisJLyoKKwkgKiBVUkIgc3VibWlz c2lvbiBmYWlsZWQgZm9yIHRoaXMgZnJhbWUsIGl0IG5ldmVyIHJlYWNoZWQKKwkgKiB0aGUgdGFy Z2V0LgorCSAqLworCWlmICghdHhvayB8fCAhdmlmKQorCQlnb3RvIHNlbmRfbWFjODAyMTE7CiAK LQkJCQlxYyA9IGllZWU4MDIxMV9nZXRfcW9zX2N0bChoZHIpOwotCQkJCXRpZCA9IHFjWzBdICYg MHhmOwotCQkJCWlzdGEgPSAoc3RydWN0IGF0aDlrX2h0Y19zdGEgKilzdGEtPmRydl9wcml2Owor CXR4X2luZm8tPmZsYWdzIHw9IElFRUU4MDIxMV9UWF9TVEFUX0FDSzsKIAotCQkJCWlmIChhdGg5 a19odGNfY2hlY2tfdHhfYWdncihwcml2LCBpc3RhLCB0aWQpKSB7Ci0JCQkJCWllZWU4MDIxMV9z dGFydF90eF9iYV9zZXNzaW9uKHN0YSwgdGlkLCAwKTsKLQkJCQkJc3Bpbl9sb2NrX2JoKCZwcml2 LT50eC50eF9sb2NrKTsKLQkJCQkJaXN0YS0+dGlkX3N0YXRlW3RpZF0gPSBBR0dSX1BST0dSRVNT OwotCQkJCQlzcGluX3VubG9ja19iaCgmcHJpdi0+dHgudHhfbG9jayk7Ci0JCQkJfQotCQkJfQot CQl9CisJYXRoOWtfaHRjX2NoZWNrX3R4X2FnZ3IocHJpdiwgdmlmLCBza2IpOwogCi0JCXJjdV9y ZWFkX3VubG9jaygpOworc2VuZF9tYWM4MDIxMToKKwlzcGluX2xvY2tfYmgoJnByaXYtPnR4LnR4 X2xvY2spOworCWlmIChXQVJOX09OKC0tcHJpdi0+dHgucXVldWVkX2NudCA8IDApKQorCQlwcml2 LT50eC5xdWV1ZWRfY250ID0gMDsKKwlzcGluX3VubG9ja19iaCgmcHJpdi0+dHgudHhfbG9jayk7 CiAKLQlzZW5kX21hYzgwMjExOgotCQlzcGluX2xvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOwot CQlpZiAoV0FSTl9PTigtLXByaXYtPnR4LnF1ZXVlZF9jbnQgPCAwKSkKLQkJCXByaXYtPnR4LnF1 ZXVlZF9jbnQgPSAwOwotCQlzcGluX3VubG9ja19iaCgmcHJpdi0+dHgudHhfbG9jayk7CisJYXRo OWtfaHRjX3R4X2NsZWFyX3Nsb3QocHJpdiwgc2xvdCk7CisKKwkvKiBTZW5kIHN0YXR1cyB0byBt YWM4MDIxMSAqLworCWllZWU4MDIxMV90eF9zdGF0dXMocHJpdi0+aHcsIHNrYik7Cit9CiAKLQkJ YXRoOWtfaHRjX3R4X2NsZWFyX3Nsb3QocHJpdiwgc2xvdCk7Cit2b2lkIGF0aDlrX3R4X3Rhc2ts ZXQodW5zaWduZWQgbG9uZyBkYXRhKQoreworCXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9 IChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKilkYXRhOworCXN0cnVjdCBza19idWZmICpza2IgPSBO VUxMOwogCi0JCS8qIFNlbmQgc3RhdHVzIHRvIG1hYzgwMjExICovCi0JCWllZWU4MDIxMV90eF9z dGF0dXMocHJpdi0+aHcsIHNrYik7CisJd2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZSgmcHJpdi0+ dHgudHhfcXVldWUpKSAhPSBOVUxMKSB7CisJCWF0aDlrX2h0Y190eF9wcm9jZXNzKHByaXYsIHNr Yik7CiAJfQogCiAJLyogV2FrZSBUWCBxdWV1ZXMgaWYgbmVlZGVkICovCi0tIAoxLjcuNC4xCgoK RnJvbSAzZDljNGU5OTMyNjgyMWJiNTgwZGI2ZGRkODE3MTI3Mzc5MWM2ZjExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hhcmFuQGF0 aGVyb3MuY29tPgpEYXRlOiBNb24sIDE0IEZlYiAyMDExIDEzOjIzOjQ5ICswNTMwClN1YmplY3Q6 IFtQQVRDSCAyNy8zNF0gYXRoOWtfaHRjOiBEcmFpbiBwZW5kaW5nIFRYIGZyYW1lcyBwcm9wZXJs eQoKV2hlbiBkb2luZyBhIGNoYW5uZWwgc2V0IG9yIGEgcmVzZXQgb3BlcmF0aW9uIHRoZSBwZW5k aW5nCmZyYW1lcyBxdWV1ZWQgdXAgZm9yIHRyYW5zbWlzc2lvbiBoYXZlIHRvIGJlIGZsdXNoZWQg YW5kCnNlbnQgdG8gbWFjODAyMTEuIEZpeGluZyB0aGlzIGhhcyB0byBiZSBkb25lIGluIHR3byBz ZXBhcmF0ZQpzdGVwczoKCiAgKiBGbHVzaCBxdWV1ZWQgZnJhbWVzIGFuZCBraWxsIHRoZSBVUkIg VFggY29tcGxldGlvbiBoYW5kbGVyLgogICogQ29tcGxldGUgYWxsIHRoZSBmcmFtZXMgdGhhdCBp biB0aGUgVFggcGVuZGluZyBxdWV1ZS4KClRoaXMgcGF0Y2ggYWRkcyBwcm9wZXIgc3VwcG9ydCBm b3IgZHJhaW5pbmcgYW5kIGFsbCB0aGUgY2FsbHNpdGVzCm5hbWVseSwgY2hhbm5lbCBjaGFuZ2Uv cmVzZXQvaWRsZS9zdG9wIGFyZSBmaXhlZC4gQSBzZXBhcmF0ZSBxdWV1ZQppcyB1c2VkIGZvciBo YW5kbGluZyBmYWlsZWQgZnJhbWVzLgoKU2lnbmVkLW9mZi1ieTogU3VqaXRoIE1hbm9oYXJhbiA8 U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaGlmX3VzYi5jICAgICAgIHwgICA1NSArKysrKysrKystLS0tLS0tLS0tLS0tLS0K IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaCAgICAgICAgICAgfCAgICA2ICsr LQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyB8ICAgIDgg KystLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZ3Bpby5jICB8ICAg IDMgKy0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYyAgfCAg IDE1ICsrKystLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cngu YyAgfCAgIDMxICsrKysrKysrKysrKystCiA2IGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMo KyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3Vz Yi5jCmluZGV4IGE4MTM0ZjguLjQ3ZmRkMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDlrL2hpZl91c2IuYwpAQCAtMTMzLDcgKzEzMywxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXRo OWtfc2tiX3F1ZXVlX3B1cmdlKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldiwKIAogCXdo aWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShsaXN0KSkgIT0gTlVMTCkgewogCQlkZXZfa2ZyZWVf c2tiX2FueShza2IpOwotCQlUWF9TVEFUX0lOQyhza2JfZHJvcHBlZCk7CisJfQorfQorCitzdGF0 aWMgaW5saW5lIHZvaWQgYXRoOWtfc2tiX3F1ZXVlX2NvbXBsZXRlKHN0cnVjdCBoaWZfZGV2aWNl X3VzYiAqaGlmX2RldiwKKwkJCQkJICAgIHN0cnVjdCBza19idWZmX2hlYWQgKnF1ZXVlLAorCQkJ CQkgICAgYm9vbCB0eG9rKQoreworCXN0cnVjdCBza19idWZmICpza2I7CisKKwl3aGlsZSAoKHNr YiA9IF9fc2tiX2RlcXVldWUocXVldWUpKSAhPSBOVUxMKSB7CisJCWF0aDlrX2h0Y190eGNvbXBs ZXRpb25fY2IoaGlmX2Rldi0+aHRjX2hhbmRsZSwKKwkJCQkJICBza2IsIHR4b2spOworCQkodHhv aykgPyBUWF9TVEFUX0lOQyhza2Jfc3VjY2VzcykgOiBUWF9TVEFUX0lOQyhza2JfZmFpbGVkKTsK IAl9CiB9CiAKQEAgLTE0MSw3ICsxNTMsNyBAQCBzdGF0aWMgdm9pZCBoaWZfdXNiX3R4X2NiKHN0 cnVjdCB1cmIgKnVyYikKIHsKIAlzdHJ1Y3QgdHhfYnVmICp0eF9idWYgPSAoc3RydWN0IHR4X2J1 ZiAqKSB1cmItPmNvbnRleHQ7CiAJc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2OwotCXN0 cnVjdCBza19idWZmICpza2I7CisJYm9vbCB0eG9rID0gdHJ1ZTsKIAogCWlmICghdHhfYnVmIHx8 ICF0eF9idWYtPmhpZl9kZXYpCiAJCXJldHVybjsKQEAgLTE1NSwxMCArMTY3LDcgQEAgc3RhdGlj IHZvaWQgaGlmX3VzYl90eF9jYihzdHJ1Y3QgdXJiICp1cmIpCiAJY2FzZSAtRUNPTk5SRVNFVDoK IAljYXNlIC1FTk9ERVY6CiAJY2FzZSAtRVNIVVRET1dOOgotCQkvKgotCQkgKiBUaGUgVVJCIGhh cyBiZWVuIGtpbGxlZCwgZnJlZSB0aGUgU0tCcy4KLQkJICovCi0JCWF0aDlrX3NrYl9xdWV1ZV9w dXJnZShoaWZfZGV2LCAmdHhfYnVmLT5za2JfcXVldWUpOworCQl0eG9rID0gZmFsc2U7CiAKIAkJ LyoKIAkJICogSWYgdGhlIFVSQnMgYXJlIGJlaW5nIGZsdXNoZWQsIG5vIG5lZWQgdG8gYWRkIHRo aXMKQEAgLTE2Nyw0MSArMTc2LDE5IEBAIHN0YXRpYyB2b2lkIGhpZl91c2JfdHhfY2Ioc3RydWN0 IHVyYiAqdXJiKQogCQlzcGluX2xvY2soJmhpZl9kZXYtPnR4LnR4X2xvY2spOwogCQlpZiAoaGlm X2Rldi0+dHguZmxhZ3MgJiBISUZfVVNCX1RYX0ZMVVNIKSB7CiAJCQlzcGluX3VubG9jaygmaGlm X2Rldi0+dHgudHhfbG9jayk7CisJCQlhdGg5a19za2JfcXVldWVfcHVyZ2UoaGlmX2RldiwgJnR4 X2J1Zi0+c2tiX3F1ZXVlKTsKIAkJCXJldHVybjsKIAkJfQogCQlzcGluX3VubG9jaygmaGlmX2Rl di0+dHgudHhfbG9jayk7CiAKLQkJLyoKLQkJICogSW4gdGhlIHN0b3AoKSBjYXNlLCB0aGlzIFVS QiBoYXMgdG8gYmUgYWRkZWQgdG8KLQkJICogdGhlIGZyZWUgbGlzdC4KLQkJICovCi0JCWdvdG8g YWRkX2ZyZWU7CisJCWJyZWFrOwogCWRlZmF1bHQ6CisJCXR4b2sgPSBmYWxzZTsKIAkJYnJlYWs7 CiAJfQogCi0JLyoKLQkgKiBDaGVjayBpZiBUWCBoYXMgYmVlbiBzdG9wcGVkLCB0aGlzIGlzIG5l ZWRlZCBiZWNhdXNlCi0JICogdGhpcyBDQiBjb3VsZCBoYXZlIGJlZW4gaW52b2tlZCBqdXN0IGFm dGVyIHRoZSBUWCBsb2NrCi0JICogd2FzIHJlbGVhc2VkIGluIGhpZl9zdG9wKCkgYW5kIGtpbGxf dXJiKCkgaGFzbid0IGJlZW4KLQkgKiBjYWxsZWQgeWV0LgotCSAqLwotCXNwaW5fbG9jaygmaGlm X2Rldi0+dHgudHhfbG9jayk7Ci0JaWYgKGhpZl9kZXYtPnR4LmZsYWdzICYgSElGX1VTQl9UWF9T VE9QKSB7Ci0JCXNwaW5fdW5sb2NrKCZoaWZfZGV2LT50eC50eF9sb2NrKTsKLQkJYXRoOWtfc2ti X3F1ZXVlX3B1cmdlKGhpZl9kZXYsICZ0eF9idWYtPnNrYl9xdWV1ZSk7Ci0JCWdvdG8gYWRkX2Zy ZWU7Ci0JfQotCXNwaW5fdW5sb2NrKCZoaWZfZGV2LT50eC50eF9sb2NrKTsKLQotCS8qIENvbXBs ZXRlIHRoZSBxdWV1ZWQgU0tCcy4gKi8KLQl3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoJnR4 X2J1Zi0+c2tiX3F1ZXVlKSkgIT0gTlVMTCkgewotCQlhdGg5a19odGNfdHhjb21wbGV0aW9uX2Ni KGhpZl9kZXYtPmh0Y19oYW5kbGUsCi0JCQkJCSAgc2tiLCAxKTsKLQkJVFhfU1RBVF9JTkMoc2ti X2NvbXBsZXRlZCk7Ci0JfQorCWF0aDlrX3NrYl9xdWV1ZV9jb21wbGV0ZShoaWZfZGV2LCAmdHhf YnVmLT5za2JfcXVldWUsIHR4b2spOwogCi1hZGRfZnJlZToKIAkvKiBSZS1pbml0aWFsaXplIHRo ZSBTS0IgcXVldWUgKi8KIAl0eF9idWYtPmxlbiA9IHR4X2J1Zi0+b2Zmc2V0ID0gMDsKIAlfX3Nr Yl9xdWV1ZV9oZWFkX2luaXQoJnR4X2J1Zi0+c2tiX3F1ZXVlKTsKQEAgLTI3NCw3ICsyNjEsNyBA QCBzdGF0aWMgaW50IF9faGlmX3VzYl90eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYp CiAJcmV0ID0gdXNiX3N1Ym1pdF91cmIodHhfYnVmLT51cmIsIEdGUF9BVE9NSUMpOwogCWlmIChy ZXQpIHsKIAkJdHhfYnVmLT5sZW4gPSB0eF9idWYtPm9mZnNldCA9IDA7Ci0JCWF0aDlrX3NrYl9x dWV1ZV9wdXJnZShoaWZfZGV2LCAmdHhfYnVmLT5za2JfcXVldWUpOworCQlhdGg5a19za2JfcXVl dWVfY29tcGxldGUoaGlmX2RldiwgJnR4X2J1Zi0+c2tiX3F1ZXVlLCBmYWxzZSk7CiAJCV9fc2ti X3F1ZXVlX2hlYWRfaW5pdCgmdHhfYnVmLT5za2JfcXVldWUpOwogCQlsaXN0X21vdmVfdGFpbCgm dHhfYnVmLT5saXN0LCAmaGlmX2Rldi0+dHgudHhfYnVmKTsKIAkJaGlmX2Rldi0+dHgudHhfYnVm X2NudCsrOwpAQCAtMzQ0LDcgKzMzMSw3IEBAIHN0YXRpYyB2b2lkIGhpZl91c2Jfc3RvcCh2b2lk ICpoaWZfaGFuZGxlLCB1OCBwaXBlX2lkKQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlzcGlu X2xvY2tfaXJxc2F2ZSgmaGlmX2Rldi0+dHgudHhfbG9jaywgZmxhZ3MpOwotCWF0aDlrX3NrYl9x dWV1ZV9wdXJnZShoaWZfZGV2LCAmaGlmX2Rldi0+dHgudHhfc2tiX3F1ZXVlKTsKKwlhdGg5a19z a2JfcXVldWVfY29tcGxldGUoaGlmX2RldiwgJmhpZl9kZXYtPnR4LnR4X3NrYl9xdWV1ZSwgZmFs c2UpOwogCWhpZl9kZXYtPnR4LnR4X3NrYl9jbnQgPSAwOwogCWhpZl9kZXYtPnR4LmZsYWdzIHw9 IEhJRl9VU0JfVFhfU1RPUDsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZoaWZfZGV2LT50eC50 eF9sb2NrLCBmbGFncyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo OWsvaHRjLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKaW5kZXggMzMy MTc1ZS4uZmM4NzMwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L2h0Yy5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaApAQCAtMjY4 LDYgKzI2OCw3IEBAIHN0cnVjdCBhdGg5a19odGNfdHggewogCXU4IGZsYWdzOwogCWludCBxdWV1 ZWRfY250OwogCXN0cnVjdCBza19idWZmX2hlYWQgdHhfcXVldWU7CisJc3RydWN0IHNrX2J1ZmZf aGVhZCB0eF9mYWlsZWQ7CiAJREVDTEFSRV9CSVRNQVAodHhfc2xvdCwgTUFYX1RYX0JVRl9OVU0p OwogCXNwaW5sb2NrX3QgdHhfbG9jazsKIH07CkBAIC0zMDIsOCArMzAzLDggQEAgc3RydWN0IGF0 aF90eF9zdGF0cyB7CiAJdTMyIGJ1Zl9xdWV1ZWQ7CiAJdTMyIGJ1Zl9jb21wbGV0ZWQ7CiAJdTMy IHNrYl9xdWV1ZWQ7Ci0JdTMyIHNrYl9jb21wbGV0ZWQ7Ci0JdTMyIHNrYl9kcm9wcGVkOworCXUz MiBza2Jfc3VjY2VzczsKKwl1MzIgc2tiX2ZhaWxlZDsKIAl1MzIgY2FiX3F1ZXVlZDsKIAl1MzIg cXVldWVfc3RhdHNbV01FX05VTV9BQ107CiB9OwpAQCAtNTM4LDYgKzUzOSw3IEBAIHZvaWQgYXRo OWtfaHRjX2NoZWNrX3N0b3BfcXVldWVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7CiB2 b2lkIGF0aDlrX2h0Y19jaGVja193YWtlX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnBy aXYpOwogaW50IGF0aDlrX2h0Y190eF9nZXRfc2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnBy aXYpOwogdm9pZCBhdGg5a19odGNfdHhfY2xlYXJfc2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYg KnByaXYsIGludCBzbG90KTsKK3ZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19o dGNfcHJpdiAqcHJpdik7CiAKIGludCBhdGg5a19yeF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJp diAqcHJpdik7CiB2b2lkIGF0aDlrX3J4X2NsZWFudXAoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpw cml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2 X2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5j CmluZGV4IDZmYzZjYjcuLjkxYTQ4NmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2h0Y19kcnZfZGVidWcuYwpAQCAtODgsMTEgKzg4LDExIEBAIHN0YXRpYyBzc2l6ZV90 IHJlYWRfZmlsZV94bWl0KHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqdXNlcl9idWYs CiAJCQkiJTIwcyA6ICUxMHVcbiIsICJTS0JzIHF1ZXVlZCIsCiAJCQlwcml2LT5kZWJ1Zy50eF9z dGF0cy5za2JfcXVldWVkKTsKIAlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVm KSAtIGxlbiwKLQkJCSIlMjBzIDogJTEwdVxuIiwgIlNLQnMgY29tcGxldGVkIiwKLQkJCXByaXYt PmRlYnVnLnR4X3N0YXRzLnNrYl9jb21wbGV0ZWQpOworCQkJIiUyMHMgOiAlMTB1XG4iLCAiU0tC cyBzdWNjZXNzIiwKKwkJCXByaXYtPmRlYnVnLnR4X3N0YXRzLnNrYl9zdWNjZXNzKTsKIAlsZW4g Kz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKLQkJCSIlMjBzIDogJTEw dVxuIiwgIlNLQnMgZHJvcHBlZCIsCi0JCQlwcml2LT5kZWJ1Zy50eF9zdGF0cy5za2JfZHJvcHBl ZCk7CisJCQkiJTIwcyA6ICUxMHVcbiIsICJTS0JzIGZhaWxlZCIsCisJCQlwcml2LT5kZWJ1Zy50 eF9zdGF0cy5za2JfZmFpbGVkKTsKIAlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2Yo YnVmKSAtIGxlbiwKIAkJCSIlMjBzIDogJTEwdVxuIiwgIkNBQiBxdWV1ZWQiLAogCQkJcHJpdi0+ ZGVidWcudHhfc3RhdHMuY2FiX3F1ZXVlZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9ncGlvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoOWsvaHRjX2Rydl9ncGlvLmMKaW5kZXggOTJlNGIzMS4uZGMwYjMzZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZ3Bpby5jCisrKyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2dwaW8uYwpAQCAtNDI5LDkgKzQyOSw4 IEBAIHZvaWQgYXRoOWtfaHRjX3JhZGlvX2Rpc2FibGUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcp CiAKIAkvKiBTdG9wIFRYICovCiAJaWVlZTgwMjExX3N0b3BfcXVldWVzKGh3KTsKLQlodGNfc3Rv cChwcml2LT5odGMpOworCWF0aDlrX2h0Y190eF9kcmFpbihwcml2KTsKIAlXTUlfQ01EKFdNSV9E UkFJTl9UWFFfQUxMX0NNRElEKTsKLQlza2JfcXVldWVfcHVyZ2UoJnByaXYtPnR4LnR4X3F1ZXVl KTsKIAogCS8qIFN0b3AgUlggKi8KIAlXTUlfQ01EKFdNSV9TVE9QX1JFQ1ZfQ01ESUQpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jCmluZGV4IGM3ZTA1 NmIuLmZiOWZmMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9o dGNfZHJ2X21haW4uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Ry dl9tYWluLmMKQEAgLTE5Myw3ICsxOTMsOSBAQCB2b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3Qg YXRoOWtfaHRjX3ByaXYgKnByaXYpCiAKIAlhdGg5a19odGNfc3RvcF9hbmkocHJpdik7CiAJaWVl ZTgwMjExX3N0b3BfcXVldWVzKHByaXYtPmh3KTsKLQlodGNfc3RvcChwcml2LT5odGMpOworCisJ YXRoOWtfaHRjX3R4X2RyYWluKHByaXYpOworCiAJV01JX0NNRChXTUlfRElTQUJMRV9JTlRSX0NN RElEKTsKIAlXTUlfQ01EKFdNSV9EUkFJTl9UWFFfQUxMX0NNRElEKTsKIAlXTUlfQ01EKFdNSV9T VE9QX1JFQ1ZfQ01ESUQpOwpAQCAtMjQ4LDcgKzI1MCw5IEBAIHN0YXRpYyBpbnQgYXRoOWtfaHRj X3NldF9jaGFubmVsKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAlmYXN0Y2MgPSAhISho dy0+Y29uZi5mbGFncyAmIElFRUU4MDIxMV9DT05GX09GRkNIQU5ORUwpOwogCiAJYXRoOWtfaHRj X3BzX3dha2V1cChwcml2KTsKLQlodGNfc3RvcChwcml2LT5odGMpOworCisJYXRoOWtfaHRjX3R4 X2RyYWluKHByaXYpOworCiAJV01JX0NNRChXTUlfRElTQUJMRV9JTlRSX0NNRElEKTsKIAlXTUlf Q01EKFdNSV9EUkFJTl9UWFFfQUxMX0NNRElEKTsKIAlXTUlfQ01EKFdNSV9TVE9QX1JFQ1ZfQ01E SUQpOwpAQCAtMjYzLDYgKzI2Nyw3IEBAIHN0YXRpYyBpbnQgYXRoOWtfaHRjX3NldF9jaGFubmVs KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAogCWlmICghZmFzdGNjKQogCQljYWxkYXRh ID0gJnByaXYtPmNhbGRhdGE7CisKIAlyZXQgPSBhdGg5a19od19yZXNldChhaCwgaGNoYW4sIGNh bGRhdGEsIGZhc3RjYyk7CiAJaWYgKHJldCkgewogCQlhdGhfZXJyKGNvbW1vbiwKQEAgLTk2MCwx NiArOTY1LDE0IEBAIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y19zdG9wKHN0cnVjdCBpZWVlODAyMTFf aHcgKmh3KQogCX0KIAogCWF0aDlrX2h0Y19wc193YWtldXAocHJpdik7Ci0JaHRjX3N0b3AocHJp di0+aHRjKTsKKwogCVdNSV9DTUQoV01JX0RJU0FCTEVfSU5UUl9DTURJRCk7CiAJV01JX0NNRChX TUlfRFJBSU5fVFhRX0FMTF9DTURJRCk7CiAJV01JX0NNRChXTUlfU1RPUF9SRUNWX0NNRElEKTsK IAogCXRhc2tsZXRfa2lsbCgmcHJpdi0+cnhfdGFza2xldCk7Ci0JdGFza2xldF9raWxsKCZwcml2 LT50eF90YXNrbGV0KTsKLQotCXNrYl9xdWV1ZV9wdXJnZSgmcHJpdi0+dHgudHhfcXVldWUpOwog CisJYXRoOWtfaHRjX3R4X2RyYWluKHByaXYpOwogCWF0aDlrX3dtaV9ldmVudF9kcmFpbihwcml2 KTsKIAogCW11dGV4X3VubG9jaygmcHJpdi0+bXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCmluZGV4IDk0NDQ0MGMuLjllMGMzNGIgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYworKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKQEAgLTQyMyw2 ICs0MjMsMjYgQEAgc2VuZF9tYWM4MDIxMToKIAlpZWVlODAyMTFfdHhfc3RhdHVzKHByaXYtPmh3 LCBza2IpOwogfQogCit2b2lkIGF0aDlrX2h0Y190eF9kcmFpbihzdHJ1Y3QgYXRoOWtfaHRjX3By aXYgKnByaXYpCit7CisJc3RydWN0IHNrX2J1ZmYgKnNrYiA9IE5VTEw7CisKKwkvKgorCSAqIEVu c3VyZSB0aGF0IGFsbCBwZW5kaW5nIFRYIGZyYW1lcyBhcmUgZmx1c2hlZCwKKwkgKiBhbmQgdGhh dCB0aGUgVFggY29tcGxldGlvbiB0YXNrbGV0IGlzIGtpbGxlZC4KKwkgKi8KKwlodGNfc3RvcChw cml2LT5odGMpOworCXRhc2tsZXRfa2lsbCgmcHJpdi0+dHhfdGFza2xldCk7CisKKwl3aGlsZSAo KHNrYiA9IHNrYl9kZXF1ZXVlKCZwcml2LT50eC50eF9xdWV1ZSkpICE9IE5VTEwpIHsKKwkJYXRo OWtfaHRjX3R4X3Byb2Nlc3MocHJpdiwgc2tiKTsKKwl9CisKKwl3aGlsZSAoKHNrYiA9IHNrYl9k ZXF1ZXVlKCZwcml2LT50eC50eF9mYWlsZWQpKSAhPSBOVUxMKSB7CisJCWF0aDlrX2h0Y190eF9w cm9jZXNzKHByaXYsIHNrYik7CisJfQorfQorCiB2b2lkIGF0aDlrX3R4X3Rhc2tsZXQodW5zaWdu ZWQgbG9uZyBkYXRhKQogewogCXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IChzdHJ1Y3Qg YXRoOWtfaHRjX3ByaXYgKilkYXRhOwpAQCAtNDMyLDYgKzQ1MiwxMCBAQCB2b2lkIGF0aDlrX3R4 X3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogCQlhdGg5a19odGNfdHhfcHJvY2Vzcyhwcml2 LCBza2IpOwogCX0KIAorCXdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoJnByaXYtPnR4LnR4X2Zh aWxlZCkpICE9IE5VTEwpIHsKKwkJYXRoOWtfaHRjX3R4X3Byb2Nlc3MocHJpdiwgc2tiKTsKKwl9 CisKIAkvKiBXYWtlIFRYIHF1ZXVlcyBpZiBuZWVkZWQgKi8KIAlhdGg5a19odGNfY2hlY2tfd2Fr ZV9xdWV1ZXMocHJpdik7CiB9CkBAIC00NDUsMTMgKzQ2OSwxOCBAQCB2b2lkIGF0aDlrX2h0Y190 eGVwKHZvaWQgKmRydl9wcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXR4X2N0bCA9IEhUQ19T S0JfQ0Ioc2tiKTsKIAl0eF9jdGwtPnR4b2sgPSB0eG9rOwogCi0Jc2tiX3F1ZXVlX3RhaWwoJnBy aXYtPnR4LnR4X3F1ZXVlLCBza2IpOworCWlmICh0eG9rKQorCQlza2JfcXVldWVfdGFpbCgmcHJp di0+dHgudHhfcXVldWUsIHNrYik7CisJZWxzZQorCQlza2JfcXVldWVfdGFpbCgmcHJpdi0+dHgu dHhfZmFpbGVkLCBza2IpOworCiAJdGFza2xldF9zY2hlZHVsZSgmcHJpdi0+dHhfdGFza2xldCk7 CiB9CiAKIGludCBhdGg5a190eF9pbml0KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdikKIHsK IAlza2JfcXVldWVfaGVhZF9pbml0KCZwcml2LT50eC50eF9xdWV1ZSk7CisJc2tiX3F1ZXVlX2hl YWRfaW5pdCgmcHJpdi0+dHgudHhfZmFpbGVkKTsKIAlyZXR1cm4gMDsKIH0KIAotLSAKMS43LjQu MQoKCkZyb20gNTFmYmU5NDQwNWU3OTlhY2E5ZDJiOTY0MGIzMTFjOGE2MTIzODEzNiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJh bkBhdGhlcm9zLmNvbT4KRGF0ZTogVHVlLCAxNSBGZWIgMjAxMSAxMzozMjoxMiArMDUzMApTdWJq ZWN0OiBbUEFUQ0ggMjgvMzRdIGF0aDlrX2h0YzogT3B0aW1pemUgSFRDIHN0YXJ0L3N0b3AgQVBJ CgpUaGVyZSBpcyBubyBwb2ludCBpbiBsb29waW5nIG92ZXIgYWxsIHRoZSBlbmRwb2ludHMsCnNp bmNlIHRoZSBISUYgbGF5ZXIgdXNlcyB0aGUgc3RhcnQvc3RvcCBBUElzIG9ubHkKZm9yIHRoZSBU WCBwaXBlLiBTaW1wbGlmeSB0aGUgQVBJIGFjY29yZGluZ2x5LgoKU2lnbmVkLW9mZi1ieTogU3Vq aXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KLS0tCiBkcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jIHwgICAgNCArKy0tCiBkcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jIHwgICAxOSArKy0tLS0tLS0tLS0tLS0tLS0t CiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5oIHwgICAgNCArKy0tCiAz IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMv bmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmMKaW5kZXggNDdmZGQxOS4uNDA1YTA5ZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYworKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCkBAIC0zMTIsNyArMzEy LDcgQEAgc3RhdGljIGludCBoaWZfdXNiX3NlbmRfdHgoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpo aWZfZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9p ZCBoaWZfdXNiX3N0YXJ0KHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGVfaWQpCitzdGF0aWMgdm9p ZCBoaWZfdXNiX3N0YXJ0KHZvaWQgKmhpZl9oYW5kbGUpCiB7CiAJc3RydWN0IGhpZl9kZXZpY2Vf dXNiICpoaWZfZGV2ID0gKHN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqKWhpZl9oYW5kbGU7CiAJdW5z aWduZWQgbG9uZyBmbGFnczsKQEAgLTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgdm9pZCBoaWZfdXNi X3N0YXJ0KHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGVfaWQpCiAJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmaGlmX2Rldi0+dHgudHhfbG9jaywgZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9pZCBoaWZf dXNiX3N0b3Aodm9pZCAqaGlmX2hhbmRsZSwgdTggcGlwZV9pZCkKK3N0YXRpYyB2b2lkIGhpZl91 c2Jfc3RvcCh2b2lkICpoaWZfaGFuZGxlKQogewogCXN0cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlm X2RldiA9IChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKiloaWZfaGFuZGxlOwogCXN0cnVjdCB0eF9i dWYgKnR4X2J1ZiA9IE5VTEwsICp0eF9idWZfdG1wID0gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoOWsvaHRjX2hzdC5jCmluZGV4IGJlODdmNDcuLjdjZWQ4YWIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMKKysrIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYwpAQCAtMzAyLDI3ICszMDIsMTIgQEAgaW50 IGh0Y19zZW5kX2VwaWQoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYg KnNrYiwKIAogdm9pZCBodGNfc3RvcChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0KQogewotCWVu dW0gaHRjX2VuZHBvaW50X2lkIGVwaWQ7Ci0Jc3RydWN0IGh0Y19lbmRwb2ludCAqZW5kcG9pbnQ7 Ci0KLQlmb3IgKGVwaWQgPSBFTkRQT0lOVDA7IGVwaWQgPCBFTkRQT0lOVF9NQVg7IGVwaWQrKykg ewotCQllbmRwb2ludCA9ICZ0YXJnZXQtPmVuZHBvaW50W2VwaWRdOwotCQlpZiAoZW5kcG9pbnQt PnNlcnZpY2VfaWQgIT0gMCkKLQkJCXRhcmdldC0+aGlmLT5zdG9wKHRhcmdldC0+aGlmX2Rldiwg ZW5kcG9pbnQtPnVsX3BpcGVpZCk7Ci0JfQorCXRhcmdldC0+aGlmLT5zdG9wKHRhcmdldC0+aGlm X2Rldik7CiB9CiAKIHZvaWQgaHRjX3N0YXJ0KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQpCiB7 Ci0JZW51bSBodGNfZW5kcG9pbnRfaWQgZXBpZDsKLQlzdHJ1Y3QgaHRjX2VuZHBvaW50ICplbmRw b2ludDsKLQotCWZvciAoZXBpZCA9IEVORFBPSU5UMDsgZXBpZCA8IEVORFBPSU5UX01BWDsgZXBp ZCsrKSB7Ci0JCWVuZHBvaW50ID0gJnRhcmdldC0+ZW5kcG9pbnRbZXBpZF07Ci0JCWlmIChlbmRw b2ludC0+c2VydmljZV9pZCAhPSAwKQotCQkJdGFyZ2V0LT5oaWYtPnN0YXJ0KHRhcmdldC0+aGlm X2RldiwKLQkJCQkJICAgZW5kcG9pbnQtPnVsX3BpcGVpZCk7Ci0JfQorCXRhcmdldC0+aGlmLT5z dGFydCh0YXJnZXQtPmhpZl9kZXYpOwogfQogCiB2b2lkIGF0aDlrX2h0Y190eGNvbXBsZXRpb25f Y2Ioc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2h0Y19oc3QuaAppbmRleCAwNjRhMzI0Li4xOTFlM2MwIDEwMDY0NAotLS0gYS9kcml2 ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5oCisrKyBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmgKQEAgLTMzLDggKzMzLDggQEAgc3RydWN0IGF0aDlr X2h0Y19oaWYgewogCXU4IGNvbnRyb2xfZGxfcGlwZTsKIAl1OCBjb250cm9sX3VsX3BpcGU7CiAK LQl2b2lkICgqc3RhcnQpICh2b2lkICpoaWZfaGFuZGxlLCB1OCBwaXBlKTsKLQl2b2lkICgqc3Rv cCkgKHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGUpOworCXZvaWQgKCpzdGFydCkgKHZvaWQgKmhp Zl9oYW5kbGUpOworCXZvaWQgKCpzdG9wKSAodm9pZCAqaGlmX2hhbmRsZSk7CiAJaW50ICgqc2Vu ZCkgKHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBpcGUsIHN0cnVjdCBza19idWZmICpidWYpOwogfTsK IAotLSAKMS43LjQuMQoKCkZyb20gZWQwOTk4MTk4NmUxMWViNDllOTFhY2RjZTM5NDNjYTI3YWM3 N2M5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU3VqaXRoIE1hbm9oYXJhbiA8U3Vq aXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KRGF0ZTogVHVlLCAyMiBGZWIgMjAxMSAwNzozNjow NSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMjkvMzRdIGF0aDlrX2h0YzogRHJhaW4gcGFja2V0cyBv biBzdGF0aW9uIHJlbW92YWwKCldoZW4gYSBzdGF0aW9uIGVudHJ5IGlzIHJlbW92ZWQsIHRoZXJl IGNvdWxkIHN0aWxsIGJlCnBlbmRpbmcgcGFja2V0cyBkZXN0aW5lZCBmb3IgdGhhdCBzdGF0aW9u IGluIHRoZSBISUYgbGF5ZXIuClNlbmRpbmcgdGhlc2UgdG8gdGhlIHRhcmdldCBpcyBub3QgbmVj ZXNzYXJ5LCBzbyBkcmFpbiB0aGVtCmluIHRoZSBkcml2ZXIgaXRzZWxmLgoKU2lnbmVkLW9mZi1i eTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KLS0tCiBk cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jICAgICAgfCAgIDM1ICsrKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMu aCAgICAgICAgICB8ICAgIDEgKwogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19k cnZfbWFpbi5jIHwgICAgMyArKwogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19k cnZfdHhyeC5jIHwgICAgOCArKysrKwogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0 Y19oc3QuYyAgICAgIHwgICAgNSArKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9o dGNfaHN0LmggICAgICB8ICAgIDIgKwogNiBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCsp LCAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGg5ay9oaWZfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5j CmluZGV4IDQwNWEwOWQuLjRmYjk1ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGg5ay9oaWZfdXNiLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L2hpZl91c2IuYwpAQCAtMzY1LDYgKzM2NSw0MCBAQCBzdGF0aWMgaW50IGhpZl91c2Jfc2VuZCh2 b2lkICpoaWZfaGFuZGxlLCB1OCBwaXBlX2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXJldHVy biByZXQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja19pbmRleChzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCB1OCBpZHgpCit7CisJc3RydWN0IGF0aDlrX2h0Y190eF9jdGwgKnR4X2N0bDsKKwor CXR4X2N0bCA9IEhUQ19TS0JfQ0Ioc2tiKTsKKworCWlmICgodHhfY3RsLT50eXBlID09IEFUSDlL X0hUQ19BTVBEVSkgJiYKKwkgICAgKHR4X2N0bC0+c3RhX2lkeCA9PSBpZHgpKQorCQlyZXR1cm4g dHJ1ZTsKKworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgaGlmX3VzYl9zdGFfZHJh aW4odm9pZCAqaGlmX2hhbmRsZSwgdTggaWR4KQoreworCXN0cnVjdCBoaWZfZGV2aWNlX3VzYiAq aGlmX2RldiA9IChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKiloaWZfaGFuZGxlOworCXN0cnVjdCBz a19idWZmICpza2IsICp0bXA7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19p cnFzYXZlKCZoaWZfZGV2LT50eC50eF9sb2NrLCBmbGFncyk7CisKKwlza2JfcXVldWVfd2Fsa19z YWZlKCZoaWZfZGV2LT50eC50eF9za2JfcXVldWUsIHNrYiwgdG1wKSB7CisJCWlmIChjaGVja19p bmRleChza2IsIGlkeCkpIHsKKwkJCV9fc2tiX3VubGluayhza2IsICZoaWZfZGV2LT50eC50eF9z a2JfcXVldWUpOworCQkJYXRoOWtfaHRjX3R4Y29tcGxldGlvbl9jYihoaWZfZGV2LT5odGNfaGFu ZGxlLAorCQkJCQkJICBza2IsIGZhbHNlKTsKKwkJCWhpZl9kZXYtPnR4LnR4X3NrYl9jbnQtLTsK KwkJCVRYX1NUQVRfSU5DKHNrYl9mYWlsZWQpOworCQl9CisJfQorCisJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmaGlmX2Rldi0+dHgudHhfbG9jaywgZmxhZ3MpOworfQorCiBzdGF0aWMgc3RydWN0 IGF0aDlrX2h0Y19oaWYgaGlmX3VzYiA9IHsKIAkudHJhbnNwb3J0ID0gQVRIOUtfSElGX1VTQiwK IAkubmFtZSA9ICJhdGg5a19oaWZfdXNiIiwKQEAgLTM3NCw2ICs0MDgsNyBAQCBzdGF0aWMgc3Ry dWN0IGF0aDlrX2h0Y19oaWYgaGlmX3VzYiA9IHsKIAogCS5zdGFydCA9IGhpZl91c2Jfc3RhcnQs CiAJLnN0b3AgPSBoaWZfdXNiX3N0b3AsCisJLnN0YV9kcmFpbiA9IGhpZl91c2Jfc3RhX2RyYWlu LAogCS5zZW5kID0gaGlmX3VzYl9zZW5kLAogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L2h0Yy5oCmluZGV4IGZjODczMGUuLjVjMTc3NDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9odGMuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo OWsvaHRjLmgKQEAgLTI3Nyw2ICsyNzcsNyBAQCBzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCB7CiAJ dTggdHlwZTsgLyogQVRIOUtfSFRDXyogKi8KIAl1OCBlcGlkOwogCXU4IHR4b2s7CisJdTggc3Rh X2lkeDsKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGF0aDlrX2h0Y190eF9jdGwgKkhUQ19T S0JfQ0Ioc3RydWN0IHNrX2J1ZmYgKnNrYikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGg5ay9odGNfZHJ2X21haW4uYwppbmRleCBmYjlmZjExLi5hZTg1Y2M0IDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMKKysrIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jCkBAIC0xMzAzLDEwICsxMzAz LDEzIEBAIHN0YXRpYyBpbnQgYXRoOWtfaHRjX3N0YV9yZW1vdmUoc3RydWN0IGllZWU4MDIxMV9o dyAqaHcsCiAJCQkJc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSkKIHsKIAlzdHJ1Y3QgYXRoOWtf aHRjX3ByaXYgKnByaXYgPSBody0+cHJpdjsKKwlzdHJ1Y3QgYXRoOWtfaHRjX3N0YSAqaXN0YTsK IAlpbnQgcmV0OwogCiAJbXV0ZXhfbG9jaygmcHJpdi0+bXV0ZXgpOwogCWF0aDlrX2h0Y19wc193 YWtldXAocHJpdik7CisJaXN0YSA9IChzdHJ1Y3QgYXRoOWtfaHRjX3N0YSAqKSBzdGEtPmRydl9w cml2OworCWh0Y19zdGFfZHJhaW4ocHJpdi0+aHRjLCBpc3RhLT5pbmRleCk7CiAJcmV0ID0gYXRo OWtfaHRjX3JlbW92ZV9zdGF0aW9uKHByaXYsIHZpZiwgc3RhKTsKIAlhdGg5a19odGNfcHNfcmVz dG9yZShwcml2KTsKIAltdXRleF91bmxvY2soJnByaXYtPm11dGV4KTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYyBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYwppbmRleCA5ZTBjMzRiLi4wNzkwMDcw IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4 LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCkBA IC0yNDgsNiArMjQ4LDE0IEBAIGludCBhdGg5a19odGNfdHhfc3RhcnQoc3RydWN0IGF0aDlrX2h0 Y19wcml2ICpwcml2LAogCQl0eF9oZHIudmlmX2lkeCA9IHZpZl9pZHg7CiAJCXR4X2hkci5jb29r aWUgPSBzbG90OwogCisJCS8qCisJCSAqIFRoaXMgaXMgYSBiaXQgcmVkdW5kYW50IGJ1dCBpdCBo ZWxwcyB0byBnZXQKKwkJICogdGhlIHBlci1wYWNrZXQgaW5kZXggcXVpY2tseSB3aGVuIGRyYWlu aW5nIHRoZQorCQkgKiBUWCBxdWV1ZSBpbiB0aGUgSElGIGxheWVyLiBPdGhlcndpc2Ugd2Ugd291 bGQKKwkJICogaGF2ZSB0byBwYXJzZSB0aGUgcGFja2V0IGNvbnRlbnRzIC4uLgorCQkgKi8KKwkJ dHhfY3RsLT5zdGFfaWR4ID0gc3RhX2lkeDsKKwogCQlpZiAodHhfaW5mby0+ZmxhZ3MgJiBJRUVF ODAyMTFfVFhfQ1RMX0FNUERVKSB7CiAJCQl0eF9jdGwtPnR5cGUgPSBBVEg5S19IVENfQU1QRFU7 CiAJCQl0eF9oZHIuZGF0YV90eXBlID0gQVRIOUtfSFRDX0FNUERVOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMKaW5kZXggN2NlZDhhYi4uNWM3NjM1MiAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYworKysgYi9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jCkBAIC0zMTAsNiArMzEwLDExIEBAIHZv aWQgaHRjX3N0YXJ0KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQpCiAJdGFyZ2V0LT5oaWYtPnN0 YXJ0KHRhcmdldC0+aGlmX2Rldik7CiB9CiAKK3ZvaWQgaHRjX3N0YV9kcmFpbihzdHJ1Y3QgaHRj X3RhcmdldCAqdGFyZ2V0LCB1OCBpZHgpCit7CisJdGFyZ2V0LT5oaWYtPnN0YV9kcmFpbih0YXJn ZXQtPmhpZl9kZXYsIGlkeCk7Cit9CisKIHZvaWQgYXRoOWtfaHRjX3R4Y29tcGxldGlvbl9jYihz dHJ1Y3QgaHRjX3RhcmdldCAqaHRjX2hhbmRsZSwKIAkJCSAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAq c2tiLCBib29sIHR4b2spCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoOWsvaHRjX2hzdC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3Qu aAppbmRleCAxOTFlM2MwLi5jYjkxNzRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoOWsvaHRjX2hzdC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGNfaHN0LmgKQEAgLTM1LDYgKzM1LDcgQEAgc3RydWN0IGF0aDlrX2h0Y19oaWYgewogCiAJ dm9pZCAoKnN0YXJ0KSAodm9pZCAqaGlmX2hhbmRsZSk7CiAJdm9pZCAoKnN0b3ApICh2b2lkICpo aWZfaGFuZGxlKTsKKwl2b2lkICgqc3RhX2RyYWluKSAodm9pZCAqaGlmX2hhbmRsZSwgdTggaWR4 KTsKIAlpbnQgKCpzZW5kKSAodm9pZCAqaGlmX2hhbmRsZSwgdTggcGlwZSwgc3RydWN0IHNrX2J1 ZmYgKmJ1Zik7CiB9OwogCkBAIC0yMDksNiArMjEwLDcgQEAgaW50IGh0Y19zZW5kX2VwaWQoc3Ry dWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJICBlbnVtIGh0 Y19lbmRwb2ludF9pZCBlcGlkKTsKIHZvaWQgaHRjX3N0b3Aoc3RydWN0IGh0Y190YXJnZXQgKnRh cmdldCk7CiB2b2lkIGh0Y19zdGFydChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0KTsKK3ZvaWQg aHRjX3N0YV9kcmFpbihzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LCB1OCBpZHgpOwogCiB2b2lk IGF0aDlrX2h0Y19yeF9tc2coc3RydWN0IGh0Y190YXJnZXQgKmh0Y19oYW5kbGUsCiAJCSAgICAg IHN0cnVjdCBza19idWZmICpza2IsIHUzMiBsZW4sIHU4IHBpcGVfaWQpOwotLSAKMS43LjQuMQoK CkZyb20gNTZhNmYyNjQyOWJkZTkyZTZjNzBhODVjNjhlMjM4NjA5YmI0ZGNjNSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBh dGhlcm9zLmNvbT4KRGF0ZTogV2VkLCAxNiBGZWIgMjAxMSAwODoxODoxMCArMDUzMApTdWJqZWN0 OiBbUEFUQ0ggMzAvMzRdIGF0aDlrX2h0YzogQWRkIHN1cHBvcnQgZm9yIFRYIGNvbXBsZXRpb24K Ck5vdyB0aGF0IHRoZSBpbmZyYXN0cnVjdHVyZSBpcyBpbiBwbGFjZSwgcHJvY2VzcyBXTUkKVFgg c3RhdHVzIGV2ZW50cyBhbmQgY29tcGxldGUgcGFja2V0cy4KClNpZ25lZC1vZmYtYnk6IFN1aml0 aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+Ci0tLQogZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oICAgICAgICAgIHwgICAxNCArKy0KIGRyaXZlcnMv bmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYyB8ICAgIDIgKy0KIGRyaXZlcnMv bmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYyB8ICAyMDggKysrKysrKysrKysr KysrKysrKysrKy0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jICAgICAg ICAgIHwgICAxMCArKwogNCBmaWxlcyBjaGFuZ2VkLCAyMDUgaW5zZXJ0aW9ucygrKSwgMjkgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0 Yy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oCmluZGV4IDVjMTc3NDUu LjA3YTYzY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMu aAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKQEAgLTI2MywxMSAr MjYzLDE3IEBAIHN0cnVjdCBhdGg5a19odGNfcnggewogI2RlZmluZSBBVEg5S19IVENfVFhfVEhS RVNIT0xEIChNQVhfVFhfQlVGX05VTSAtIEFUSDlLX0hUQ19UWF9SRVNFUlZFKQogCiAjZGVmaW5l IEFUSDlLX0hUQ19PUF9UWF9RVUVVRVNfU1RPUCBCSVQoMCkKKyNkZWZpbmUgQVRIOUtfSFRDX09Q X1RYX0RSQUlOICAgICAgIEJJVCgxKQogCiBzdHJ1Y3QgYXRoOWtfaHRjX3R4IHsKIAl1OCBmbGFn czsKIAlpbnQgcXVldWVkX2NudDsKLQlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIHR4X3F1ZXVlOworCXN0 cnVjdCBza19idWZmX2hlYWQgbWdtdF9lcF9xdWV1ZTsKKwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGNh Yl9lcF9xdWV1ZTsKKwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGRhdGFfYmVfcXVldWU7CisJc3RydWN0 IHNrX2J1ZmZfaGVhZCBkYXRhX2JrX3F1ZXVlOworCXN0cnVjdCBza19idWZmX2hlYWQgZGF0YV92 aV9xdWV1ZTsKKwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGRhdGFfdm9fcXVldWU7CiAJc3RydWN0IHNr X2J1ZmZfaGVhZCB0eF9mYWlsZWQ7CiAJREVDTEFSRV9CSVRNQVAodHhfc2xvdCwgTUFYX1RYX0JV Rl9OVU0pOwogCXNwaW5sb2NrX3QgdHhfbG9jazsKQEAgLTQ1OSw4ICs0NjUsOCBAQCBzdHJ1Y3Qg YXRoOWtfaHRjX3ByaXYgewogCiAJc3RydWN0IHRhc2tsZXRfc3RydWN0IHN3YmFfdGFza2xldDsK IAlzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgcnhfdGFza2xldDsKLQlzdHJ1Y3QgdGFza2xldF9zdHJ1 Y3QgdHhfdGFza2xldDsKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIGFuaV93b3JrOworCXN0cnVjdCB0 YXNrbGV0X3N0cnVjdCB0eF9mYWlsZWRfdGFza2xldDsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcHNf d29yazsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZmF0YWxfd29yazsKIApAQCAtNTI3LDcgKzUzMyw2 IEBAIHZvaWQgYXRoOWtfaHRjX3N0YXJ0X2FuaShzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYp Owogdm9pZCBhdGg5a19odGNfc3RvcF9hbmkoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KTsK IAogaW50IGF0aDlrX3R4X2luaXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KTsKLXZvaWQg YXRoOWtfdHhfdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpOwogaW50IGF0aDlrX2h0Y190eF9z dGFydChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJCSAgICAgICBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCB1OCBzbG90LCBib29sIGlzX2NhYik7CiB2b2lkIGF0aDlrX3R4X2NsZWFudXAoc3Ry dWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KTsKQEAgLTU0MSw2ICs1NDYsOSBAQCB2b2lkIGF0aDlr X2h0Y19jaGVja193YWtlX3F1ZXVlcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpOwogaW50 IGF0aDlrX2h0Y190eF9nZXRfc2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpOwogdm9p ZCBhdGg5a19odGNfdHhfY2xlYXJfc2xvdChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsIGlu dCBzbG90KTsKIHZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAq cHJpdik7Cit2b2lkIGF0aDlrX2h0Y190eHN0YXR1cyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnBy aXYsIHZvaWQgKndtaV9ldmVudCk7Cit2b2lkIGF0aDlrX2h0Y190eF9mYWlsZWQoc3RydWN0IGF0 aDlrX2h0Y19wcml2ICpwcml2KTsKK3ZvaWQgYXRoOWtfdHhfZmFpbGVkX3Rhc2tsZXQodW5zaWdu ZWQgbG9uZyBkYXRhKTsKIAogaW50IGF0aDlrX3J4X2luaXQoc3RydWN0IGF0aDlrX2h0Y19wcml2 ICpwcml2KTsKIHZvaWQgYXRoOWtfcnhfY2xlYW51cChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnBy aXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZf aW5pdC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jCmlu ZGV4IDFmYTg2OWEuLjBmMWE4ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGg5ay9odGNfZHJ2X2luaXQuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo OWsvaHRjX2Rydl9pbml0LmMKQEAgLTY3NSw3ICs2NzUsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2lu aXRfcHJpdihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJbXV0ZXhfaW5pdCgmcHJpdi0+ aHRjX3BtX2xvY2spOwogCXRhc2tsZXRfaW5pdCgmcHJpdi0+cnhfdGFza2xldCwgYXRoOWtfcnhf dGFza2xldCwKIAkJICAgICAodW5zaWduZWQgbG9uZylwcml2KTsKLQl0YXNrbGV0X2luaXQoJnBy aXYtPnR4X3Rhc2tsZXQsIGF0aDlrX3R4X3Rhc2tsZXQsCisJdGFza2xldF9pbml0KCZwcml2LT50 eF9mYWlsZWRfdGFza2xldCwgYXRoOWtfdHhfZmFpbGVkX3Rhc2tsZXQsCiAJCSAgICAgKHVuc2ln bmVkIGxvbmcpcHJpdik7CiAJSU5JVF9ERUxBWUVEX1dPUksoJnByaXYtPmFuaV93b3JrLCBhdGg5 a19odGNfYW5pX3dvcmspOwogCUlOSVRfV09SSygmcHJpdi0+cHNfd29yaywgYXRoOWtfcHNfd29y ayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90 eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4LmMKaW5k ZXggMDc5MDA3MC4uYTliNmJiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2h0Y19kcnZfdHhyeC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9odGNfZHJ2X3R4cnguYwpAQCAtOTksOCArOTksOCBAQCB2b2lkIGF0aDlrX2h0Y190eF9jbGVh cl9zbG90KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgaW50IHNsb3QpCiAJc3Bpbl91bmxv Y2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOwogfQogCi1zdGF0aWMgZW51bSBodGNfZW5kcG9pbnRf aWQgZ2V0X2h0Y19lcGlkKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKLQkJCQkJIHUxNiBx bnVtKQorc3RhdGljIGlubGluZSBlbnVtIGh0Y19lbmRwb2ludF9pZCBnZXRfaHRjX2VwaWQoc3Ry dWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAorCQkJCQkJdTE2IHFudW0pCiB7CiAJZW51bSBodGNf ZW5kcG9pbnRfaWQgZXBpZDsKIApAQCAtMTI3LDYgKzEyNywzMCBAQCBzdGF0aWMgZW51bSBodGNf ZW5kcG9pbnRfaWQgZ2V0X2h0Y19lcGlkKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKIAly ZXR1cm4gZXBpZDsKIH0KIAorc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZl9oZWFkKgorZ2V0 X2h0Y19lcGlkX3F1ZXVlKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgdTggZXBpZCkKK3sK KwlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHByaXYtPmFoKTsK KwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkICplcGlkX3F1ZXVlID0gTlVMTDsKKworCWlmIChlcGlkID09 IHByaXYtPm1nbXRfZXApCisJCWVwaWRfcXVldWUgPSAmcHJpdi0+dHgubWdtdF9lcF9xdWV1ZTsK KwllbHNlIGlmIChlcGlkID09IHByaXYtPmNhYl9lcCkKKwkJZXBpZF9xdWV1ZSA9ICZwcml2LT50 eC5jYWJfZXBfcXVldWU7CisJZWxzZSBpZiAoZXBpZCA9PSBwcml2LT5kYXRhX2JlX2VwKQorCQll cGlkX3F1ZXVlID0gJnByaXYtPnR4LmRhdGFfYmVfcXVldWU7CisJZWxzZSBpZiAoZXBpZCA9PSBw cml2LT5kYXRhX2JrX2VwKQorCQllcGlkX3F1ZXVlID0gJnByaXYtPnR4LmRhdGFfYmtfcXVldWU7 CisJZWxzZSBpZiAoZXBpZCA9PSBwcml2LT5kYXRhX3ZpX2VwKQorCQllcGlkX3F1ZXVlID0gJnBy aXYtPnR4LmRhdGFfdmlfcXVldWU7CisJZWxzZSBpZiAoZXBpZCA9PSBwcml2LT5kYXRhX3ZvX2Vw KQorCQllcGlkX3F1ZXVlID0gJnByaXYtPnR4LmRhdGFfdm9fcXVldWU7CisJZWxzZQorCQlhdGhf ZXJyKGNvbW1vbiwgIkludmFsaWQgRVBJRDogJWRcbiIsIGVwaWQpOworCisJcmV0dXJuIGVwaWRf cXVldWU7Cit9CisKIC8qCiAgKiBSZW1vdmVzIHRoZSBkcml2ZXIgaGVhZGVyIGFuZCByZXR1cm5z IHRoZSBUWCBzbG90IG51bWJlcgogICovCkBAIC0zODcsMTEgKzQxMSwxNSBAQCBzdGF0aWMgdm9p ZCBhdGg5a19odGNfY2hlY2tfdHhfYWdncihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiB9 CiAKIHN0YXRpYyB2b2lkIGF0aDlrX2h0Y190eF9wcm9jZXNzKHN0cnVjdCBhdGg5a19odGNfcHJp diAqcHJpdiwKLQkJCQkgc3RydWN0IHNrX2J1ZmYgKnNrYikKKwkJCQkgc3RydWN0IHNrX2J1ZmYg KnNrYiwKKwkJCQkgc3RydWN0IF9fd21pX2V2ZW50X3R4c3RhdHVzICp0eHMpCiB7CiAJc3RydWN0 IGllZWU4MDIxMV92aWYgKnZpZjsKIAlzdHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqdHhfY3RsOwog CXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhfaW5mbzsKKwlzdHJ1Y3QgaWVlZTgwMjExX3R4 X3JhdGUgKnJhdGU7CisJc3RydWN0IGllZWU4MDIxMV9jb25mICpjdXJfY29uZiA9ICZwcml2LT5o dy0+Y29uZjsKKwlzdHJ1Y3QgaWVlZTgwMjExX3N1cHBvcnRlZF9iYW5kICpzYmFuZDsKIAlib29s IHR4b2s7CiAJaW50IHNsb3Q7CiAKQEAgLTQwNSw2ICs0MzMsOCBAQCBzdGF0aWMgdm9pZCBhdGg5 a19odGNfdHhfcHJvY2VzcyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJdHhvayA9IHR4 X2N0bC0+dHhvazsKIAl0eF9pbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpOwogCXZpZiA9IHR4 X2luZm8tPmNvbnRyb2wudmlmOworCXJhdGUgPSAmdHhfaW5mby0+c3RhdHVzLnJhdGVzWzBdOwor CXNiYW5kID0gcHJpdi0+aHctPndpcGh5LT5iYW5kc1tjdXJfY29uZi0+Y2hhbm5lbC0+YmFuZF07 CiAKIAltZW1zZXQoJnR4X2luZm8tPnN0YXR1cywgMCwgc2l6ZW9mKHR4X2luZm8tPnN0YXR1cykp OwogCkBAIC00MTIsMTAgKzQ0MiwzMiBAQCBzdGF0aWMgdm9pZCBhdGg5a19odGNfdHhfcHJvY2Vz cyhzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJICogVVJCIHN1Ym1pc3Npb24gZmFpbGVk IGZvciB0aGlzIGZyYW1lLCBpdCBuZXZlciByZWFjaGVkCiAJICogdGhlIHRhcmdldC4KIAkgKi8K LQlpZiAoIXR4b2sgfHwgIXZpZikKKwlpZiAoIXR4b2sgfHwgIXZpZiB8fCAhdHhzKQogCQlnb3Rv IHNlbmRfbWFjODAyMTE7CiAKLQl0eF9pbmZvLT5mbGFncyB8PSBJRUVFODAyMTFfVFhfU1RBVF9B Q0s7CisJaWYgKHR4cy0+dHNfZmxhZ3MgJiBBVEg5S19IVENfVFhTVEFUX0FDSykKKwkJdHhfaW5m by0+ZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1NUQVRfQUNLOworCisJaWYgKHR4cy0+dHNfZmxhZ3Mg JiBBVEg5S19IVENfVFhTVEFUX0ZJTFQpCisJCXR4X2luZm8tPmZsYWdzIHw9IElFRUU4MDIxMV9U WF9TVEFUX1RYX0ZJTFRFUkVEOworCisJaWYgKHR4cy0+dHNfZmxhZ3MgJiBBVEg5S19IVENfVFhT VEFUX1JUQ19DVFMpCisJCXJhdGUtPmZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NU UzsKKworCXJhdGUtPmNvdW50ID0gMTsKKwlyYXRlLT5pZHggPSBNUyh0eHMtPnRzX3JhdGUsIEFU SDlLX0hUQ19UWFNUQVRfUkFURSk7CisKKwlpZiAodHhzLT50c19mbGFncyAmIEFUSDlLX0hUQ19U WFNUQVRfTUNTKSB7CisJCXJhdGUtPmZsYWdzIHw9IElFRUU4MDIxMV9UWF9SQ19NQ1M7CisKKwkJ aWYgKHR4cy0+dHNfZmxhZ3MgJiBBVEg5S19IVENfVFhTVEFUX0NXNDApCisJCQlyYXRlLT5mbGFn cyB8PSBJRUVFODAyMTFfVFhfUkNfNDBfTUhaX1dJRFRIOworCQlpZiAodHhzLT50c19mbGFncyAm IEFUSDlLX0hUQ19UWFNUQVRfU0dJKQorCQkJcmF0ZS0+ZmxhZ3MgfD0gSUVFRTgwMjExX1RYX1JD X1NIT1JUX0dJOworCX0gZWxzZSB7CisJCWlmIChjdXJfY29uZi0+Y2hhbm5lbC0+YmFuZCA9PSBJ RUVFODAyMTFfQkFORF81R0haKQorCQkJcmF0ZS0+aWR4ICs9IDQ7IC8qIE5vIENDSyByYXRlcyAq LworCX0KIAogCWF0aDlrX2h0Y19jaGVja190eF9hZ2dyKHByaXYsIHZpZiwgc2tiKTsKIApAQCAt NDMxLDM3ICs0ODMsMTMwIEBAIHNlbmRfbWFjODAyMTE6CiAJaWVlZTgwMjExX3R4X3N0YXR1cyhw cml2LT5odywgc2tiKTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y190eF9kcmFp bnEoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAorCQkJCSAgICAgICBzdHJ1Y3Qgc2tfYnVm Zl9oZWFkICpxdWV1ZSkKK3sKKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCisJd2hpbGUgKChza2Ig PSBza2JfZGVxdWV1ZShxdWV1ZSkpICE9IE5VTEwpIHsKKwkJYXRoOWtfaHRjX3R4X3Byb2Nlc3Mo cHJpdiwgc2tiLCBOVUxMKTsKKwl9Cit9CisKIHZvaWQgYXRoOWtfaHRjX3R4X2RyYWluKHN0cnVj dCBhdGg5a19odGNfcHJpdiAqcHJpdikKIHsKLQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gTlVMTDsK KwlzcGluX2xvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOworCXByaXYtPnR4LmZsYWdzIHw9IEFU SDlLX0hUQ19PUF9UWF9EUkFJTjsKKwlzcGluX3VubG9ja19iaCgmcHJpdi0+dHgudHhfbG9jayk7 CiAKIAkvKgogCSAqIEVuc3VyZSB0aGF0IGFsbCBwZW5kaW5nIFRYIGZyYW1lcyBhcmUgZmx1c2hl ZCwKLQkgKiBhbmQgdGhhdCB0aGUgVFggY29tcGxldGlvbiB0YXNrbGV0IGlzIGtpbGxlZC4KKwkg KiBhbmQgdGhhdCB0aGUgVFggY29tcGxldGlvbi9mYWlsZWQgdGFza2xldHMgaXMga2lsbGVkLgog CSAqLwogCWh0Y19zdG9wKHByaXYtPmh0Yyk7Ci0JdGFza2xldF9raWxsKCZwcml2LT50eF90YXNr bGV0KTsKKwl0YXNrbGV0X2tpbGwoJnByaXYtPndtaS0+d21pX2V2ZW50X3Rhc2tsZXQpOworCXRh c2tsZXRfa2lsbCgmcHJpdi0+dHhfZmFpbGVkX3Rhc2tsZXQpOwogCi0Jd2hpbGUgKChza2IgPSBz a2JfZGVxdWV1ZSgmcHJpdi0+dHgudHhfcXVldWUpKSAhPSBOVUxMKSB7Ci0JCWF0aDlrX2h0Y190 eF9wcm9jZXNzKHByaXYsIHNrYik7Ci0JfQorCWF0aDlrX2h0Y190eF9kcmFpbnEocHJpdiwgJnBy aXYtPnR4Lm1nbXRfZXBfcXVldWUpOworCWF0aDlrX2h0Y190eF9kcmFpbnEocHJpdiwgJnByaXYt PnR4LmNhYl9lcF9xdWV1ZSk7CisJYXRoOWtfaHRjX3R4X2RyYWlucShwcml2LCAmcHJpdi0+dHgu ZGF0YV9iZV9xdWV1ZSk7CisJYXRoOWtfaHRjX3R4X2RyYWlucShwcml2LCAmcHJpdi0+dHguZGF0 YV9ia19xdWV1ZSk7CisJYXRoOWtfaHRjX3R4X2RyYWlucShwcml2LCAmcHJpdi0+dHguZGF0YV92 aV9xdWV1ZSk7CisJYXRoOWtfaHRjX3R4X2RyYWlucShwcml2LCAmcHJpdi0+dHguZGF0YV92b19x dWV1ZSk7CisJYXRoOWtfaHRjX3R4X2RyYWlucShwcml2LCAmcHJpdi0+dHgudHhfZmFpbGVkKTsK IAotCXdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoJnByaXYtPnR4LnR4X2ZhaWxlZCkpICE9IE5V TEwpIHsKLQkJYXRoOWtfaHRjX3R4X3Byb2Nlc3MocHJpdiwgc2tiKTsKLQl9CisJc3Bpbl9sb2Nr X2JoKCZwcml2LT50eC50eF9sb2NrKTsKKwlwcml2LT50eC5mbGFncyAmPSB+QVRIOUtfSFRDX09Q X1RYX0RSQUlOOworCXNwaW5fdW5sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsKIH0KIAotdm9p ZCBhdGg5a190eF90YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKK3ZvaWQgYXRoOWtfdHhfZmFp bGVkX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQogewogCXN0cnVjdCBhdGg5a19odGNfcHJp diAqcHJpdiA9IChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKilkYXRhOwotCXN0cnVjdCBza19idWZm ICpza2IgPSBOVUxMOwogCi0Jd2hpbGUgKChza2IgPSBza2JfZGVxdWV1ZSgmcHJpdi0+dHgudHhf cXVldWUpKSAhPSBOVUxMKSB7Ci0JCWF0aDlrX2h0Y190eF9wcm9jZXNzKHByaXYsIHNrYik7CisJ c3Bpbl9sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsKKwlpZiAocHJpdi0+dHguZmxhZ3MgJiBB VEg5S19IVENfT1BfVFhfRFJBSU4pIHsKKwkJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnR4LnR4X2xv Y2spOworCQlyZXR1cm47CiAJfQorCXNwaW5fdW5sb2NrX2JoKCZwcml2LT50eC50eF9sb2NrKTsK IAotCXdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoJnByaXYtPnR4LnR4X2ZhaWxlZCkpICE9IE5V TEwpIHsKLQkJYXRoOWtfaHRjX3R4X3Byb2Nlc3MocHJpdiwgc2tiKTsKKwlhdGg5a19odGNfdHhf ZHJhaW5xKHByaXYsICZwcml2LT50eC50eF9mYWlsZWQpOworfQorCitzdGF0aWMgaW5saW5lIGJv b2wgY2hlY2tfY29va2llKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwKKwkJCQlzdHJ1Y3Qg c2tfYnVmZiAqc2tiLAorCQkJCXU4IGNvb2tpZSwgdTggZXBpZCkKK3sKKwl1OCBmY29va2llID0g MDsKKworCWlmIChlcGlkID09IHByaXYtPm1nbXRfZXApIHsKKwkJc3RydWN0IHR4X21nbXRfaGRy ICpoZHI7CisJCWhkciA9IChzdHJ1Y3QgdHhfbWdtdF9oZHIgKikgc2tiLT5kYXRhOworCQlmY29v a2llID0gaGRyLT5jb29raWU7CisJfSBlbHNlIGlmICgoZXBpZCA9PSBwcml2LT5kYXRhX2JrX2Vw KSB8fAorCQkgICAoZXBpZCA9PSBwcml2LT5kYXRhX2JlX2VwKSB8fAorCQkgICAoZXBpZCA9PSBw cml2LT5kYXRhX3ZpX2VwKSB8fAorCQkgICAoZXBpZCA9PSBwcml2LT5kYXRhX3ZvX2VwKSB8fAor CQkgICAoZXBpZCA9PSBwcml2LT5jYWJfZXApKSB7CisJCXN0cnVjdCB0eF9mcmFtZV9oZHIgKmhk cjsKKwkJaGRyID0gKHN0cnVjdCB0eF9mcmFtZV9oZHIgKikgc2tiLT5kYXRhOworCQlmY29va2ll ID0gaGRyLT5jb29raWU7CisJfQorCisJaWYgKGZjb29raWUgPT0gY29va2llKQorCQlyZXR1cm4g dHJ1ZTsKKworCXJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHN0cnVjdCBza19idWZmKiBhdGg5 a19odGNfdHhfZ2V0X3BhY2tldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCisJCQkJCSAg ICAgICBzdHJ1Y3QgX193bWlfZXZlbnRfdHhzdGF0dXMgKnR4cykKK3sKKwlzdHJ1Y3QgYXRoX2Nv bW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29tbW9uKHByaXYtPmFoKTsKKwlzdHJ1Y3Qgc2tfYnVm Zl9oZWFkICplcGlkX3F1ZXVlOworCXN0cnVjdCBza19idWZmICpza2IsICp0bXA7CisJdW5zaWdu ZWQgbG9uZyBmbGFnczsKKwl1OCBlcGlkID0gTVModHhzLT50c19yYXRlLCBBVEg5S19IVENfVFhT VEFUX0VQSUQpOworCisJZXBpZF9xdWV1ZSA9IGdldF9odGNfZXBpZF9xdWV1ZShwcml2LCBlcGlk KTsKKwlpZiAoIWVwaWRfcXVldWUpCisJCXJldHVybiBOVUxMOworCisJc3Bpbl9sb2NrX2lycXNh dmUoJmVwaWRfcXVldWUtPmxvY2ssIGZsYWdzKTsKKwlza2JfcXVldWVfd2Fsa19zYWZlKGVwaWRf cXVldWUsIHNrYiwgdG1wKSB7CisJCWlmIChjaGVja19jb29raWUocHJpdiwgc2tiLCB0eHMtPmNv b2tpZSwgZXBpZCkpIHsKKwkJCV9fc2tiX3VubGluayhza2IsIGVwaWRfcXVldWUpOworCQkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmZXBpZF9xdWV1ZS0+bG9jaywgZmxhZ3MpOworCQkJcmV0dXJu IHNrYjsKKwkJfQorCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlcGlkX3F1ZXVlLT5sb2Nr LCBmbGFncyk7CisKKwlhdGhfZGJnKGNvbW1vbiwgQVRIX0RCR19YTUlULAorCQkiTm8gbWF0Y2hp bmcgcGFja2V0IGZvciBjb29raWU6ICVkLCBlcGlkOiAlZFxuIiwKKwkJdHhzLT5jb29raWUsIGVw aWQpOworCisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgYXRoOWtfaHRjX3R4c3RhdHVzKHN0cnVj dCBhdGg5a19odGNfcHJpdiAqcHJpdiwgdm9pZCAqd21pX2V2ZW50KQoreworCXN0cnVjdCB3bWlf ZXZlbnRfdHhzdGF0dXMgKnR4cyA9IChzdHJ1Y3Qgd21pX2V2ZW50X3R4c3RhdHVzICopd21pX2V2 ZW50OworCXN0cnVjdCBfX3dtaV9ldmVudF90eHN0YXR1cyAqX190eHM7CisJc3RydWN0IHNrX2J1 ZmYgKnNrYjsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCB0eHMtPmNudDsgaSsrKSB7CisJ CVdBUk5fT04odHhzLT5jbnQgPiBIVENfTUFYX1RYX1NUQVRVUyk7CisKKwkJX190eHMgPSAmdHhz LT50eHN0YXR1c1tpXTsKKworCQlza2IgPSBhdGg5a19odGNfdHhfZ2V0X3BhY2tldChwcml2LCBf X3R4cyk7CisJCWlmICghc2tiKQorCQkJY29udGludWU7CisKKwkJYXRoOWtfaHRjX3R4X3Byb2Nl c3MocHJpdiwgc2tiLCBfX3R4cyk7CiAJfQogCiAJLyogV2FrZSBUWCBxdWV1ZXMgaWYgbmVlZGVk ICovCkBAIC00NzMsMjEgKzYxOCwzNCBAQCB2b2lkIGF0aDlrX2h0Y190eGVwKHZvaWQgKmRydl9w cml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogewogCXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJp diA9IChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKikgZHJ2X3ByaXY7CiAJc3RydWN0IGF0aDlrX2h0 Y190eF9jdGwgKnR4X2N0bDsKKwlzdHJ1Y3Qgc2tfYnVmZl9oZWFkICplcGlkX3F1ZXVlOwogCiAJ dHhfY3RsID0gSFRDX1NLQl9DQihza2IpOwogCXR4X2N0bC0+dHhvayA9IHR4b2s7CiAKLQlpZiAo dHhvaykKLQkJc2tiX3F1ZXVlX3RhaWwoJnByaXYtPnR4LnR4X3F1ZXVlLCBza2IpOwotCWVsc2UK KwlpZiAoIXR4b2spIHsKIAkJc2tiX3F1ZXVlX3RhaWwoJnByaXYtPnR4LnR4X2ZhaWxlZCwgc2ti KTsKKwkJdGFza2xldF9zY2hlZHVsZSgmcHJpdi0+dHhfZmFpbGVkX3Rhc2tsZXQpOworCQlyZXR1 cm47CisJfQorCisJZXBpZF9xdWV1ZSA9IGdldF9odGNfZXBpZF9xdWV1ZShwcml2LCBlcF9pZCk7 CisJaWYgKCFlcGlkX3F1ZXVlKSB7CisJCWRldl9rZnJlZV9za2JfYW55KHNrYik7CisJCXJldHVy bjsKKwl9CiAKLQl0YXNrbGV0X3NjaGVkdWxlKCZwcml2LT50eF90YXNrbGV0KTsKKwlza2JfcXVl dWVfdGFpbChlcGlkX3F1ZXVlLCBza2IpOwogfQogCiBpbnQgYXRoOWtfdHhfaW5pdChzdHJ1Y3Qg YXRoOWtfaHRjX3ByaXYgKnByaXYpCiB7Ci0Jc2tiX3F1ZXVlX2hlYWRfaW5pdCgmcHJpdi0+dHgu dHhfcXVldWUpOworCXNrYl9xdWV1ZV9oZWFkX2luaXQoJnByaXYtPnR4Lm1nbXRfZXBfcXVldWUp OworCXNrYl9xdWV1ZV9oZWFkX2luaXQoJnByaXYtPnR4LmNhYl9lcF9xdWV1ZSk7CisJc2tiX3F1 ZXVlX2hlYWRfaW5pdCgmcHJpdi0+dHguZGF0YV9iZV9xdWV1ZSk7CisJc2tiX3F1ZXVlX2hlYWRf aW5pdCgmcHJpdi0+dHguZGF0YV9ia19xdWV1ZSk7CisJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmcHJp di0+dHguZGF0YV92aV9xdWV1ZSk7CisJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmcHJpdi0+dHguZGF0 YV92b19xdWV1ZSk7CiAJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmcHJpdi0+dHgudHhfZmFpbGVkKTsK IAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYwppbmRleCA5ZDAz MDY5Li41YzE1ZDhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv d21pLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jCkBAIC0xNjEs NiArMTYxLDE2IEBAIHZvaWQgYXRoOWtfd21pX2V2ZW50X3Rhc2tsZXQodW5zaWduZWQgbG9uZyBk YXRhKQogCQkJd21pLT5kcnZfcHJpdi0+ZGVidWcudHhyYXRlID0gYmUzMl90b19jcHUodHhyYXRl KTsKICNlbmRpZgogCQkJYnJlYWs7CisJCWNhc2UgV01JX1RYU1RBVFVTX0VWRU5USUQ6CisJCQlz cGluX2xvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOworCQkJaWYgKHByaXYtPnR4LmZsYWdzICYg QVRIOUtfSFRDX09QX1RYX0RSQUlOKSB7CisJCQkJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnR4LnR4 X2xvY2spOworCQkJCWJyZWFrOworCQkJfQorCQkJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnR4LnR4 X2xvY2spOworCisJCQlhdGg5a19odGNfdHhzdGF0dXMocHJpdiwgd21pX2V2ZW50KTsKKwkJCWJy ZWFrOwogCQlkZWZhdWx0OgogCQkJYnJlYWs7CiAJCX0KLS0gCjEuNy40LjEKCgpGcm9tIGVjNmEx NmQyZTQ2ZDkxNjJiYTQwNjhkOTVhZTcwMjU2MmE4NTJhMGUgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IFN1aml0aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+ CkRhdGU6IFR1ZSwgMSBNYXIgMjAxMSAyMTozMzoxOSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMzEv MzRdIGF0aDlrX2h0YzogQWRkIGEgZGVidWdmcyBmaWxlIHRvIGR1bXAgVFggc2xvdCBpbmZvcm1h dGlvbgoKTG9jYXRpb246IGF0aDlrX2h0Yy9waHkjL3Nsb3QKClNpZ25lZC1vZmYtYnk6IFN1aml0 aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+Ci0tLQogZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oICAgICAgICAgICB8ICAgIDEgKwogZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYyB8ICAgNDIgKysrKysrKysrKysr KysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDAgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5o IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oCmluZGV4IDA3YTYzY2MuLjMy NTUyZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaAor KysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKQEAgLTMzNSw2ICszMzUs NyBAQCBzdHJ1Y3QgYXRoOWtfZGVidWcgewogCXN0cnVjdCBkZW50cnkgKmRlYnVnZnNfdGd0X3N0 YXRzOwogCXN0cnVjdCBkZW50cnkgKmRlYnVnZnNfeG1pdDsKIAlzdHJ1Y3QgZGVudHJ5ICpkZWJ1 Z2ZzX3JlY3Y7CisJc3RydWN0IGRlbnRyeSAqZGVidWdmc19zbG90OwogCXN0cnVjdCBhdGhfdHhf c3RhdHMgdHhfc3RhdHM7CiAJc3RydWN0IGF0aF9yeF9zdGF0cyByeF9zdGF0czsKIAl1MzIgdHhy YXRlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZf ZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMK aW5kZXggOTFhNDg2Yy4uMTE5Y2M1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDlrL2h0Y19kcnZfZGVidWcuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCkBAIC0yNDQsNiArMjQ0LDQxIEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcmVjdiA9IHsKIAkubGxzZWVrID0gZGVmYXVsdF9s bHNlZWssCiB9OwogCitzdGF0aWMgc3NpemVfdCByZWFkX2ZpbGVfc2xvdChzdHJ1Y3QgZmlsZSAq ZmlsZSwgY2hhciBfX3VzZXIgKnVzZXJfYnVmLAorCQkJICAgICAgc2l6ZV90IGNvdW50LCBsb2Zm X3QgKnBwb3MpCit7CisJc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gZmlsZS0+cHJpdmF0 ZV9kYXRhOworCWNoYXIgYnVmWzUxMl07CisJdW5zaWduZWQgaW50IGxlbiA9IDA7CisKKwlzcGlu X2xvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOworCisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxl biwgc2l6ZW9mKGJ1ZikgLSBsZW4sICJUWCBzbG90IGJpdG1hcCA6ICIpOworCisJbGVuICs9IGJp dG1hcF9zY25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKKwkJCSAgICAgICBw cml2LT50eC50eF9zbG90LCBNQVhfVFhfQlVGX05VTSk7CisKKwlsZW4gKz0gc25wcmludGYoYnVm ICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwgIlxuIik7CisKKwlsZW4gKz0gc25wcmludGYoYnVm ICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwKKwkJCSJVc2VkIHNsb3RzICAgICA6ICVkXG4iLAor CQkJYml0bWFwX3dlaWdodChwcml2LT50eC50eF9zbG90LCBNQVhfVFhfQlVGX05VTSkpOworCisJ c3Bpbl91bmxvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOworCisJaWYgKGxlbiA+IHNpemVvZihi dWYpKQorCQlsZW4gPSBzaXplb2YoYnVmKTsKKworCXJldHVybiBzaW1wbGVfcmVhZF9mcm9tX2J1 ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTsKK30KKworc3RhdGljIGNvbnN0 IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19zbG90ID0geworCS5yZWFkID0gcmVhZF9maWxl X3Nsb3QsCisJLm9wZW4gPSBhdGg5a19kZWJ1Z2ZzX29wZW4sCisJLm93bmVyID0gVEhJU19NT0RV TEUsCisJLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLAorfTsKKwogaW50IGF0aDlrX2h0Y19pbml0 X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogewogCXN0cnVjdCBhdGhfY29tbW9uICpjb21tb24g PSBhdGg5a19od19jb21tb24oYWgpOwpAQCAtMjc2LDYgKzMxMSwxMiBAQCBpbnQgYXRoOWtfaHRj X2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpCiAJaWYgKCFwcml2LT5kZWJ1Zy5kZWJ1Z2Zz X3JlY3YpCiAJCWdvdG8gZXJyOwogCisJcHJpdi0+ZGVidWcuZGVidWdmc19zbG90ID0gZGVidWdm c19jcmVhdGVfZmlsZSgic2xvdCIsIFNfSVJVU1IsCisJCQkJCQkgICAgICAgcHJpdi0+ZGVidWcu ZGVidWdmc19waHksCisJCQkJCQkgICAgICAgcHJpdiwgJmZvcHNfc2xvdCk7CisJaWYgKCFwcml2 LT5kZWJ1Zy5kZWJ1Z2ZzX3Nsb3QpCisJCWdvdG8gZXJyOworCiAJcmV0dXJuIDA7CiAKIGVycjoK QEAgLTI4OCw2ICszMjksNyBAQCB2b2lkIGF0aDlrX2h0Y19leGl0X2RlYnVnKHN0cnVjdCBhdGhf aHcgKmFoKQogCXN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21tb24oYWgp OwogCXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYg KikgY29tbW9uLT5wcml2OwogCisJZGVidWdmc19yZW1vdmUocHJpdi0+ZGVidWcuZGVidWdmc19z bG90KTsKIAlkZWJ1Z2ZzX3JlbW92ZShwcml2LT5kZWJ1Zy5kZWJ1Z2ZzX3JlY3YpOwogCWRlYnVn ZnNfcmVtb3ZlKHByaXYtPmRlYnVnLmRlYnVnZnNfeG1pdCk7CiAJZGVidWdmc19yZW1vdmUocHJp di0+ZGVidWcuZGVidWdmc190Z3Rfc3RhdHMpOwotLSAKMS43LjQuMQoKCkZyb20gNDdiODQ3YjNi OTkwYTA4NWUwZmYzN2IyYTg0ZTZkMjRhY2U0MjhkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KRGF0 ZTogVHVlLCAxIE1hciAyMDExIDIyOjA4OjA1ICswNTMwClN1YmplY3Q6IFtQQVRDSCAzMi8zNF0g YXRoOWtfaHRjOiBBZGQgYSBkZWJ1Z2ZzIGZpbGUgc2hvd2luZyBlbmRwb2ludCBzdGF0dXMKCkxv Y2F0aW9uOiBhdGg5a19odGMvcGh5Iy9xdWV1ZQoKU2lnbmVkLW9mZi1ieTogU3VqaXRoIE1hbm9o YXJhbiA8U3VqaXRoLk1hbm9oYXJhbkBhdGhlcm9zLmNvbT4KLS0tCiBkcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoOWsvaHRjLmggICAgICAgICAgIHwgICAgMSArCiBkcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jIHwgICA1NCArKysrKysrKysrKysrKysrKysr KysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmggYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjLmgKaW5kZXggMzI1NTJlNC4uYzYyNWMxMCAx MDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oCisrKyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaApAQCAtMzM2LDYgKzMzNiw3IEBAIHN0 cnVjdCBhdGg5a19kZWJ1ZyB7CiAJc3RydWN0IGRlbnRyeSAqZGVidWdmc194bWl0OwogCXN0cnVj dCBkZW50cnkgKmRlYnVnZnNfcmVjdjsKIAlzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3Nsb3Q7CisJ c3RydWN0IGRlbnRyeSAqZGVidWdmc19xdWV1ZTsKIAlzdHJ1Y3QgYXRoX3R4X3N0YXRzIHR4X3N0 YXRzOwogCXN0cnVjdCBhdGhfcnhfc3RhdHMgcnhfc3RhdHM7CiAJdTMyIHR4cmF0ZTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2RlYnVnLmMgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9kZWJ1Zy5jCmluZGV4IDExOWNj NTQuLjk2MWJlYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9o dGNfZHJ2X2RlYnVnLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19k cnZfZGVidWcuYwpAQCAtMjc5LDYgKzI3OSw1MyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVf b3BlcmF0aW9ucyBmb3BzX3Nsb3QgPSB7CiAJLmxsc2VlayA9IGRlZmF1bHRfbGxzZWVrLAogfTsK IAorc3RhdGljIHNzaXplX3QgcmVhZF9maWxlX3F1ZXVlKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFy IF9fdXNlciAqdXNlcl9idWYsCisJCQkgICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3Mp Cit7CisJc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwor CWNoYXIgYnVmWzUxMl07CisJdW5zaWduZWQgaW50IGxlbiA9IDA7CisKKwlsZW4gKz0gc25wcmlu dGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwgIiUxNnMgOiAlM2RcbiIsCisJCQkiTWdt dCBlbmRwb2ludCIsIHNrYl9xdWV1ZV9sZW4oJnByaXYtPnR4Lm1nbXRfZXBfcXVldWUpKTsKKwor CWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIHNpemVvZihidWYpIC0gbGVuLCAiJTE2cyA6ICUz ZFxuIiwKKwkJCSJDYWIgZW5kcG9pbnQiLCBza2JfcXVldWVfbGVuKCZwcml2LT50eC5jYWJfZXBf cXVldWUpKTsKKworCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIHNpemVvZihidWYpIC0gbGVu LCAiJTE2cyA6ICUzZFxuIiwKKwkJCSJEYXRhIEJFIGVuZHBvaW50Iiwgc2tiX3F1ZXVlX2xlbigm cHJpdi0+dHguZGF0YV9iZV9xdWV1ZSkpOworCisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwg c2l6ZW9mKGJ1ZikgLSBsZW4sICIlMTZzIDogJTNkXG4iLAorCQkJIkRhdGEgQksgZW5kcG9pbnQi LCBza2JfcXVldWVfbGVuKCZwcml2LT50eC5kYXRhX2JrX3F1ZXVlKSk7CisKKwlsZW4gKz0gc25w cmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwgIiUxNnMgOiAlM2RcbiIsCisJCQki RGF0YSBWSSBlbmRwb2ludCIsIHNrYl9xdWV1ZV9sZW4oJnByaXYtPnR4LmRhdGFfdmlfcXVldWUp KTsKKworCWxlbiArPSBzbnByaW50ZihidWYgKyBsZW4sIHNpemVvZihidWYpIC0gbGVuLCAiJTE2 cyA6ICUzZFxuIiwKKwkJCSJEYXRhIFZPIGVuZHBvaW50Iiwgc2tiX3F1ZXVlX2xlbigmcHJpdi0+ dHguZGF0YV92b19xdWV1ZSkpOworCisJbGVuICs9IHNucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZW9m KGJ1ZikgLSBsZW4sICIlMTZzIDogJTNkXG4iLAorCQkJIkZhaWxlZCBxdWV1ZSIsIHNrYl9xdWV1 ZV9sZW4oJnByaXYtPnR4LnR4X2ZhaWxlZCkpOworCisJc3Bpbl9sb2NrX2JoKCZwcml2LT50eC50 eF9sb2NrKTsKKwlsZW4gKz0gc25wcmludGYoYnVmICsgbGVuLCBzaXplb2YoYnVmKSAtIGxlbiwg IiUxNnMgOiAlM2RcbiIsCisJCQkiUXVldWVkIGNvdW50IiwgcHJpdi0+dHgucXVldWVkX2NudCk7 CisJc3Bpbl91bmxvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOworCisJaWYgKGxlbiA+IHNpemVv ZihidWYpKQorCQlsZW4gPSBzaXplb2YoYnVmKTsKKworCXJldHVybiBzaW1wbGVfcmVhZF9mcm9t X2J1ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTsKKworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3F1ZXVlID0geworCS5yZWFkID0gcmVh ZF9maWxlX3F1ZXVlLAorCS5vcGVuID0gYXRoOWtfZGVidWdmc19vcGVuLAorCS5vd25lciA9IFRI SVNfTU9EVUxFLAorCS5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlaywKK307CisKIGludCBhdGg5a19o dGNfaW5pdF9kZWJ1ZyhzdHJ1Y3QgYXRoX2h3ICphaCkKIHsKIAlzdHJ1Y3QgYXRoX2NvbW1vbiAq Y29tbW9uID0gYXRoOWtfaHdfY29tbW9uKGFoKTsKQEAgLTMxNyw2ICszNjQsMTIgQEAgaW50IGF0 aDlrX2h0Y19pbml0X2RlYnVnKHN0cnVjdCBhdGhfaHcgKmFoKQogCWlmICghcHJpdi0+ZGVidWcu ZGVidWdmc19zbG90KQogCQlnb3RvIGVycjsKIAorCXByaXYtPmRlYnVnLmRlYnVnZnNfcXVldWUg PSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJxdWV1ZSIsIFNfSVJVU1IsCisJCQkJCQkJcHJpdi0+ZGVi dWcuZGVidWdmc19waHksCisJCQkJCQkJcHJpdiwgJmZvcHNfcXVldWUpOworCWlmICghcHJpdi0+ ZGVidWcuZGVidWdmc19xdWV1ZSkKKwkJZ290byBlcnI7CisKIAlyZXR1cm4gMDsKIAogZXJyOgpA QCAtMzI5LDYgKzM4Miw3IEBAIHZvaWQgYXRoOWtfaHRjX2V4aXRfZGVidWcoc3RydWN0IGF0aF9o dyAqYWgpCiAJc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9IGF0aDlrX2h3X2NvbW1vbihhaCk7 CiAJc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2ID0gKHN0cnVjdCBhdGg5a19odGNfcHJpdiAq KSBjb21tb24tPnByaXY7CiAKKwlkZWJ1Z2ZzX3JlbW92ZShwcml2LT5kZWJ1Zy5kZWJ1Z2ZzX3F1 ZXVlKTsKIAlkZWJ1Z2ZzX3JlbW92ZShwcml2LT5kZWJ1Zy5kZWJ1Z2ZzX3Nsb3QpOwogCWRlYnVn ZnNfcmVtb3ZlKHByaXYtPmRlYnVnLmRlYnVnZnNfcmVjdik7CiAJZGVidWdmc19yZW1vdmUocHJp di0+ZGVidWcuZGVidWdmc194bWl0KTsKLS0gCjEuNy40LjEKCgpGcm9tIDRiYjBkZDIxMGNkYmYw ZDZhZDIxYmI5Y2NkMWQxMzk5YjYzZjVlY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IFN1aml0aCBNYW5vaGFyYW4gPFN1aml0aC5NYW5vaGFyYW5AYXRoZXJvcy5jb20+CkRhdGU6IEZy aSwgNCBNYXIgMjAxMSAxNTozMjozMCArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMzMvMzRdIGF0aDlr X2h0YzogQWRkIGEgdGltZXIgdG8gY2xlYW51cCBXTUkgZXZlbnRzCgpPY2Nhc2lvbmFsbHksIGEg V01JIGV2ZW50IHdvdWxkIGFycml2ZSBhaGVhZCBvZiB0aGUgVFgKVVJCIGNvbXBsZXRpb24gaGFu ZGxlci4gRGlzY2FyZGluZyB0aGVzZSBldmVudHMgd291bGQgZXhoYXVzdAp0aGUgYXZhaWxhYmxl IFRYIHNsb3RzLCBzbyBoYW5kbGUgdGhlbSBieSBydW5uaW5nIGEgdGltZXIKY2xlYW5pbmcgdXAg c3VjaCBldmVudHMuCgpTaWduZWQtb2ZmLWJ5OiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFu b2hhcmFuQGF0aGVyb3MuY29tPgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9o dGMuaCAgICAgICAgICB8ICAgIDMgKwogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0 Y19kcnZfaW5pdC5jIHwgICAgMyArLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0 Y19kcnZfbWFpbi5jIHwgICAxMiArKysrKwogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L2h0Y19kcnZfdHhyeC5jIHwgICA1OSArKysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvd21pLmMgICAgICAgICAgfCAgICAzICsKIGRyaXZlcnMv bmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaCAgICAgICAgICB8ICAgIDggKysrCiA2IGZpbGVz IGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Yy5oIGIvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDlrL2h0Yy5oCmluZGV4IGM2MjVjMTAuLmYzYzg1MzcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGMuaAorKysgYi9kcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoOWsvaHRjLmgKQEAgLTI1OSw2ICsyNTksNyBAQCBzdHJ1Y3QgYXRoOWtfaHRj X3J4IHsKIAlzcGlubG9ja190IHJ4YnVmbG9jazsKIH07CiAKKyNkZWZpbmUgQVRIOUtfSFRDX1RY X0NMRUFOVVBfSU5URVJWQUwgMTAwIC8qIG1zICovCiAjZGVmaW5lIEFUSDlLX0hUQ19UWF9SRVNF UlZFICAgMTAKICNkZWZpbmUgQVRIOUtfSFRDX1RYX1RIUkVTSE9MRCAoTUFYX1RYX0JVRl9OVU0g LSBBVEg5S19IVENfVFhfUkVTRVJWRSkKIApAQCAtMjc2LDYgKzI3Nyw3IEBAIHN0cnVjdCBhdGg5 a19odGNfdHggewogCXN0cnVjdCBza19idWZmX2hlYWQgZGF0YV92b19xdWV1ZTsKIAlzdHJ1Y3Qg c2tfYnVmZl9oZWFkIHR4X2ZhaWxlZDsKIAlERUNMQVJFX0JJVE1BUCh0eF9zbG90LCBNQVhfVFhf QlVGX05VTSk7CisJc3RydWN0IHRpbWVyX2xpc3QgY2xlYW51cF90aW1lcjsKIAlzcGlubG9ja190 IHR4X2xvY2s7CiB9OwogCkBAIC01NTEsNiArNTUzLDcgQEAgdm9pZCBhdGg5a19odGNfdHhfZHJh aW4oc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KTsKIHZvaWQgYXRoOWtfaHRjX3R4c3RhdHVz KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgdm9pZCAqd21pX2V2ZW50KTsKIHZvaWQgYXRo OWtfaHRjX3R4X2ZhaWxlZChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpOwogdm9pZCBhdGg5 a190eF9mYWlsZWRfdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpOwordm9pZCBhdGg5a19odGNf dHhfY2xlYW51cF90aW1lcih1bnNpZ25lZCBsb25nIGRhdGEpOwogCiBpbnQgYXRoOWtfcnhfaW5p dChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpOwogdm9pZCBhdGg5a19yeF9jbGVhbnVwKHN0 cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJl bGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoOWsvaHRjX2Rydl9pbml0LmMKaW5kZXggMGYxYThkYS4uNzcxNDAyMiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfaW5pdC5jCisrKyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X2luaXQuYwpAQCAtNjY4LDcgKzY2OCw2 IEBAIHN0YXRpYyBpbnQgYXRoOWtfaW5pdF9wcml2KHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJp diwKIAljb21tb24tPnByaXYgPSBwcml2OwogCWNvbW1vbi0+ZGVidWdfbWFzayA9IGF0aDlrX2Rl YnVnOwogCi0Jc3Bpbl9sb2NrX2luaXQoJnByaXYtPndtaS0+d21pX2xvY2spOwogCXNwaW5fbG9j a19pbml0KCZwcml2LT5iZWFjb25fbG9jayk7CiAJc3Bpbl9sb2NrX2luaXQoJnByaXYtPnR4LnR4 X2xvY2spOwogCW11dGV4X2luaXQoJnByaXYtPm11dGV4KTsKQEAgLTY4MCw2ICs2NzksOCBAQCBz dGF0aWMgaW50IGF0aDlrX2luaXRfcHJpdihzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAJ SU5JVF9ERUxBWUVEX1dPUksoJnByaXYtPmFuaV93b3JrLCBhdGg5a19odGNfYW5pX3dvcmspOwog CUlOSVRfV09SSygmcHJpdi0+cHNfd29yaywgYXRoOWtfcHNfd29yayk7CiAJSU5JVF9XT1JLKCZw cml2LT5mYXRhbF93b3JrLCBhdGg5a19mYXRhbF93b3JrKTsKKwlzZXR1cF90aW1lcigmcHJpdi0+ dHguY2xlYW51cF90aW1lciwgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIsCisJCSAgICAodW5z aWduZWQgbG9uZylwcml2KTsKIAogCS8qCiAJICogQ2FjaGUgbGluZSBzaXplIGlzIHVzZWQgdG8g c2l6ZSBhbmQgYWxpZ24gdmFyaW91cwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDlrL2h0Y19kcnZfbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L2h0Y19kcnZfbWFpbi5jCmluZGV4IGFlODVjYzQuLjRkZTM4NjQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X21haW4uYworKysgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl9tYWluLmMKQEAgLTE5NCw2ICsxOTQsNyBAQCB2 b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCiAJYXRoOWtf aHRjX3N0b3BfYW5pKHByaXYpOwogCWllZWU4MDIxMV9zdG9wX3F1ZXVlcyhwcml2LT5odyk7CiAK KwlkZWxfdGltZXJfc3luYygmcHJpdi0+dHguY2xlYW51cF90aW1lcik7CiAJYXRoOWtfaHRjX3R4 X2RyYWluKHByaXYpOwogCiAJV01JX0NNRChXTUlfRElTQUJMRV9JTlRSX0NNRElEKTsKQEAgLTIy NSw2ICsyMjYsOSBAQCB2b2lkIGF0aDlrX2h0Y19yZXNldChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYg KnByaXYpCiAJYXRoOWtfaHRjX3ZpZl9yZWNvbmZpZyhwcml2KTsKIAlpZWVlODAyMTFfd2FrZV9x dWV1ZXMocHJpdi0+aHcpOwogCisJbW9kX3RpbWVyKCZwcml2LT50eC5jbGVhbnVwX3RpbWVyLAor CQkgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlLX0hUQ19UWF9DTEVBTlVQX0lOVEVS VkFMKSk7CisKIAlhdGg5a19odGNfcHNfcmVzdG9yZShwcml2KTsKIAltdXRleF91bmxvY2soJnBy aXYtPm11dGV4KTsKIH0KQEAgLTI1MSw2ICsyNTUsNyBAQCBzdGF0aWMgaW50IGF0aDlrX2h0Y19z ZXRfY2hhbm5lbChzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYsCiAKIAlhdGg5a19odGNfcHNf d2FrZXVwKHByaXYpOwogCisJZGVsX3RpbWVyX3N5bmMoJnByaXYtPnR4LmNsZWFudXBfdGltZXIp OwogCWF0aDlrX2h0Y190eF9kcmFpbihwcml2KTsKIAogCVdNSV9DTUQoV01JX0RJU0FCTEVfSU5U Ul9DTURJRCk7CkBAIC0zMDEsNiArMzA2LDkgQEAgc3RhdGljIGludCBhdGg5a19odGNfc2V0X2No YW5uZWwoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCSAgICAhKGh3LT5jb25mLmZsYWdz ICYgSUVFRTgwMjExX0NPTkZfT0ZGQ0hBTk5FTCkpCiAJCWF0aDlrX2h0Y192aWZfcmVjb25maWco cHJpdik7CiAKKwltb2RfdGltZXIoJnByaXYtPnR4LmNsZWFudXBfdGltZXIsCisJCSAgamlmZmll cyArIG1zZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTsKKwog ZXJyOgogCWF0aDlrX2h0Y19wc19yZXN0b3JlKHByaXYpOwogCXJldHVybiByZXQ7CkBAIC05Mzcs NiArOTQ1LDkgQEAgc3RhdGljIGludCBhdGg5a19odGNfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9o dyAqaHcpCiAKIAlpZWVlODAyMTFfd2FrZV9xdWV1ZXMoaHcpOwogCisJbW9kX3RpbWVyKCZwcml2 LT50eC5jbGVhbnVwX3RpbWVyLAorCQkgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKEFUSDlL X0hUQ19UWF9DTEVBTlVQX0lOVEVSVkFMKSk7CisKIAlpZiAoYWgtPmJ0Y29leF9ody5zY2hlbWUg PT0gQVRIX0JUQ09FWF9DRkdfM1dJUkUpIHsKIAkJYXRoOWtfaHdfYnRjb2V4X3NldF93ZWlnaHQo YWgsIEFSX0JUX0NPRVhfV0dIVCwKIAkJCQkJICAgQVJfU1RPTVBfTE9XX1dMQU5fV0dIVCk7CkBA IC05NzIsNiArOTgzLDcgQEAgc3RhdGljIHZvaWQgYXRoOWtfaHRjX3N0b3Aoc3RydWN0IGllZWU4 MDIxMV9odyAqaHcpCiAKIAl0YXNrbGV0X2tpbGwoJnByaXYtPnJ4X3Rhc2tsZXQpOwogCisJZGVs X3RpbWVyX3N5bmMoJnByaXYtPnR4LmNsZWFudXBfdGltZXIpOwogCWF0aDlrX2h0Y190eF9kcmFp bihwcml2KTsKIAlhdGg5a193bWlfZXZlbnRfZHJhaW4ocHJpdik7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYyBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfZHJ2X3R4cnguYwppbmRleCBhOWI2YmIxLi43NjMyMzM4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2Rydl90eHJ4 LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19kcnZfdHhyeC5jCkBA IC00OTUsNiArNDk1LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX2h0Y190eF9kcmFpbnEo c3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2LAogCiB2b2lkIGF0aDlrX2h0Y190eF9kcmFpbihz dHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKnByaXYpCiB7CisJc3RydWN0IGF0aDlrX2h0Y190eF9ldmVu dCAqZXZlbnQsICp0bXA7CisKIAlzcGluX2xvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOwogCXBy aXYtPnR4LmZsYWdzIHw9IEFUSDlLX0hUQ19PUF9UWF9EUkFJTjsKIAlzcGluX3VubG9ja19iaCgm cHJpdi0+dHgudHhfbG9jayk7CkBAIC01MTUsNiArNTE3LDE2IEBAIHZvaWQgYXRoOWtfaHRjX3R4 X2RyYWluKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdikKIAlhdGg5a19odGNfdHhfZHJhaW5x KHByaXYsICZwcml2LT50eC5kYXRhX3ZvX3F1ZXVlKTsKIAlhdGg5a19odGNfdHhfZHJhaW5xKHBy aXYsICZwcml2LT50eC50eF9mYWlsZWQpOwogCisJLyoKKwkgKiBUaGUgVFggY2xlYW51cCB0aW1l ciBoYXMgYWxyZWFkeSBiZWVuIGtpbGxlZC4KKwkgKi8KKwlzcGluX2xvY2tfYmgoJnByaXYtPndt aS0+ZXZlbnRfbG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGV2ZW50LCB0bXAsICZw cml2LT53bWktPnBlbmRpbmdfdHhfZXZlbnRzLCBsaXN0KSB7CisJCWxpc3RfZGVsKCZldmVudC0+ bGlzdCk7CisJCWtmcmVlKGV2ZW50KTsKKwl9CisJc3Bpbl91bmxvY2tfYmgoJnByaXYtPndtaS0+ ZXZlbnRfbG9jayk7CisKIAlzcGluX2xvY2tfYmgoJnByaXYtPnR4LnR4X2xvY2spOwogCXByaXYt PnR4LmZsYWdzICY9IH5BVEg5S19IVENfT1BfVFhfRFJBSU47CiAJc3Bpbl91bmxvY2tfYmgoJnBy aXYtPnR4LnR4X2xvY2spOwpAQCAtNTk1LDYgKzYwNyw3IEBAIHZvaWQgYXRoOWtfaHRjX3R4c3Rh dHVzKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiwgdm9pZCAqd21pX2V2ZW50KQogCXN0cnVj dCB3bWlfZXZlbnRfdHhzdGF0dXMgKnR4cyA9IChzdHJ1Y3Qgd21pX2V2ZW50X3R4c3RhdHVzICop d21pX2V2ZW50OwogCXN0cnVjdCBfX3dtaV9ldmVudF90eHN0YXR1cyAqX190eHM7CiAJc3RydWN0 IHNrX2J1ZmYgKnNrYjsKKwlzdHJ1Y3QgYXRoOWtfaHRjX3R4X2V2ZW50ICp0eF9wZW5kOwogCWlu dCBpOwogCiAJZm9yIChpID0gMDsgaSA8IHR4cy0+Y250OyBpKyspIHsKQEAgLTYwMyw4ICs2MTYs MjMgQEAgdm9pZCBhdGg5a19odGNfdHhzdGF0dXMoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2 LCB2b2lkICp3bWlfZXZlbnQpCiAJCV9fdHhzID0gJnR4cy0+dHhzdGF0dXNbaV07CiAKIAkJc2ti ID0gYXRoOWtfaHRjX3R4X2dldF9wYWNrZXQocHJpdiwgX190eHMpOwotCQlpZiAoIXNrYikKKwkJ aWYgKCFza2IpIHsKKwkJCS8qCisJCQkgKiBTdG9yZSB0aGlzIGV2ZW50LCBzbyB0aGF0IHRoZSBU WCBjbGVhbnVwCisJCQkgKiByb3V0aW5lIGNhbiBjaGVjayBsYXRlciBmb3IgdGhlIG5lZWRlZCBw YWNrZXQuCisJCQkgKi8KKwkJCXR4X3BlbmQgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgYXRoOWtf aHRjX3R4X2V2ZW50KSwKKwkJCQkJICBHRlBfQVRPTUlDKTsKKwkJCW1lbWNweSgmdHhfcGVuZC0+ dHhzLCBfX3R4cywKKwkJCSAgICAgICBzaXplb2Yoc3RydWN0IF9fd21pX2V2ZW50X3R4c3RhdHVz KSk7CisKKwkJCXNwaW5fbG9jaygmcHJpdi0+d21pLT5ldmVudF9sb2NrKTsKKwkJCWxpc3RfYWRk X3RhaWwoJnR4X3BlbmQtPmxpc3QsCisJCQkJICAgICAgJnByaXYtPndtaS0+cGVuZGluZ190eF9l dmVudHMpOworCQkJc3Bpbl91bmxvY2soJnByaXYtPndtaS0+ZXZlbnRfbG9jayk7CisKIAkJCWNv bnRpbnVlOworCQl9CiAKIAkJYXRoOWtfaHRjX3R4X3Byb2Nlc3MocHJpdiwgc2tiLCBfX3R4cyk7 CiAJfQpAQCAtNjM4LDYgKzY2NiwzNSBAQCB2b2lkIGF0aDlrX2h0Y190eGVwKHZvaWQgKmRydl9w cml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXNrYl9xdWV1ZV90YWlsKGVwaWRfcXVldWUsIHNr Yik7CiB9CiAKK3ZvaWQgYXRoOWtfaHRjX3R4X2NsZWFudXBfdGltZXIodW5zaWduZWQgbG9uZyBk YXRhKQoreworCXN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdiA9IChzdHJ1Y3QgYXRoOWtfaHRj X3ByaXYgKikgZGF0YTsKKwlzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9uID0gYXRoOWtfaHdfY29t bW9uKHByaXYtPmFoKTsKKwlzdHJ1Y3QgYXRoOWtfaHRjX3R4X2V2ZW50ICpldmVudCwgKnRtcDsK KwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCisJc3Bpbl9sb2NrKCZwcml2LT53bWktPmV2ZW50X2xv Y2spOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShldmVudCwgdG1wLCAmcHJpdi0+d21pLT5w ZW5kaW5nX3R4X2V2ZW50cywgbGlzdCkgeworCisJCXNrYiA9IGF0aDlrX2h0Y190eF9nZXRfcGFj a2V0KHByaXYsICZldmVudC0+dHhzKTsKKwkJaWYgKHNrYikgeworCQkJYXRoX2RiZyhjb21tb24s IEFUSF9EQkdfWE1JVCwKKwkJCQkiRm91bmQgcGFja2V0IGZvciBjb29raWU6ICVkLCBlcGlkOiAl ZFxuIiwKKwkJCQlldmVudC0+dHhzLmNvb2tpZSwKKwkJCQlNUyhldmVudC0+dHhzLnRzX3JhdGUs IEFUSDlLX0hUQ19UWFNUQVRfRVBJRCkpOworCisJCQlhdGg5a19odGNfdHhfcHJvY2Vzcyhwcml2 LCBza2IsICZldmVudC0+dHhzKTsKKwkJfQorCisJCWxpc3RfZGVsKCZldmVudC0+bGlzdCk7CisJ CWtmcmVlKGV2ZW50KTsKKwl9CisJc3Bpbl91bmxvY2soJnByaXYtPndtaS0+ZXZlbnRfbG9jayk7 CisKKwltb2RfdGltZXIoJnByaXYtPnR4LmNsZWFudXBfdGltZXIsCisJCSAgamlmZmllcyArIG1z ZWNzX3RvX2ppZmZpZXMoQVRIOUtfSFRDX1RYX0NMRUFOVVBfSU5URVJWQUwpKTsKK30KKwogaW50 IGF0aDlrX3R4X2luaXQoc3RydWN0IGF0aDlrX2h0Y19wcml2ICpwcml2KQogewogCXNrYl9xdWV1 ZV9oZWFkX2luaXQoJnByaXYtPnR4Lm1nbXRfZXBfcXVldWUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL3dtaS5jCmluZGV4IDVjMTVkOGUuLjYzNDhlM2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvd21pLmMKQEAgLTg5LDkgKzg5LDEyIEBAIHN0cnVjdCB3bWkgKmF0aDlrX2luaXRf d21pKHN0cnVjdCBhdGg5a19odGNfcHJpdiAqcHJpdikKIAl3bWktPmRydl9wcml2ID0gcHJpdjsK IAl3bWktPnN0b3BwZWQgPSBmYWxzZTsKIAlza2JfcXVldWVfaGVhZF9pbml0KCZ3bWktPndtaV9l dmVudF9xdWV1ZSk7CisJc3Bpbl9sb2NrX2luaXQoJndtaS0+d21pX2xvY2spOworCXNwaW5fbG9j a19pbml0KCZ3bWktPmV2ZW50X2xvY2spOwogCW11dGV4X2luaXQoJndtaS0+b3BfbXV0ZXgpOwog CW11dGV4X2luaXQoJndtaS0+bXVsdGlfd3JpdGVfbXV0ZXgpOwogCWluaXRfY29tcGxldGlvbigm d21pLT5jbWRfd2FpdCk7CisJSU5JVF9MSVNUX0hFQUQoJndtaS0+cGVuZGluZ190eF9ldmVudHMp OwogCXRhc2tsZXRfaW5pdCgmd21pLT53bWlfZXZlbnRfdGFza2xldCwgYXRoOWtfd21pX2V2ZW50 X3Rhc2tsZXQsCiAJCSAgICAgKHVuc2lnbmVkIGxvbmcpd21pKTsKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDlrL3dtaS5oCmluZGV4IDNmYTg1MTAuLjk1YWM3NGIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay93bWkuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoOWsvd21pLmgKQEAgLTEyMyw2ICsxMjMsMTEgQEAgc3RydWN0IHJlZ2lzdGVyX3dy aXRlIHsKIAlfX2JlMzIgdmFsOwogfTsKIAorc3RydWN0IGF0aDlrX2h0Y190eF9ldmVudCB7CisJ c3RydWN0IF9fd21pX2V2ZW50X3R4c3RhdHVzIHR4czsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7 Cit9OworCiBzdHJ1Y3Qgd21pIHsKIAlzdHJ1Y3QgYXRoOWtfaHRjX3ByaXYgKmRydl9wcml2Owog CXN0cnVjdCBodGNfdGFyZ2V0ICpodGM7CkBAIC0xMzcsNiArMTQyLDkgQEAgc3RydWN0IHdtaSB7 CiAJdTMyIGNtZF9yc3BfbGVuOwogCWJvb2wgc3RvcHBlZDsKIAorCXN0cnVjdCBsaXN0X2hlYWQg cGVuZGluZ190eF9ldmVudHM7CisJc3BpbmxvY2tfdCBldmVudF9sb2NrOworCiAJc3BpbmxvY2tf dCB3bWlfbG9jazsKIAogCWF0b21pY190IG13cml0ZV9jbnQ7Ci0tIAoxLjcuNC4xCgoKRnJvbSBj Y2M1OGIwZDA2NWM3Y2EyZjA1YTZkOTg5MDA1ZjUzNTViYjFiNmQyIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBTdWppdGggTWFub2hhcmFuIDxTdWppdGguTWFub2hhcmFuQGF0aGVyb3Mu Y29tPgpEYXRlOiBNb24sIDcgTWFyIDIwMTEgMDc6MTY6NDggKzA1MzAKU3ViamVjdDogW1BBVENI IDM0LzM0XSBhdGg5a19odGM6IFVzZSBzZXBhcmF0ZSBVUkIgcG9vbCBmb3IgbWFuYWdlbWVudCBm cmFtZXMKCkJlYWNvbiB0cmFuc21pc3Npb24gbmVlZHMgdG8gaW52b2x2ZSBhcyBsaXR0bGUgbGF0 ZW5jeQphcyBwb3NzaWJsZSBhZnRlciByZWNlaXZpbmcgYSBTV0JBIGV2ZW50IGZyb20gdGhlIHRh cmdldC4KU2luY2UgcGFja2V0cyBhcmUgYnVmZmVyZWQgdG8gdXNlIFRYIHN0cmVhbSBtb2RlLCBi ZWFjb24KZnJhbWVzIHNvbWV0aW1lcyBnZXRzIHF1ZXVlZCB1cCBhbmQgYXJlIG5vdCBzZW50IG91 dCBpbW1lZGlhdGVseS4KRml4IHRoaXMgYnkgZGVjb3VwbGluZyBtYW5hZ2VtZW50IGZyYW1lIHRy YW5zbWlzc2lvbiBmcm9tIHRoZQpub3JtYWwgZGF0YSBwYXRoIGFuZCBzZW5kIHRoZW0gb3V0IGlt bWVkaWF0ZWx5LgoKU2lnbmVkLW9mZi1ieTogU3VqaXRoIE1hbm9oYXJhbiA8U3VqaXRoLk1hbm9o YXJhbkBhdGhlcm9zLmNvbT4KLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlm X3VzYi5jIHwgIDExNiArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIGRyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmggfCAgICAxICsKIDIgZmlsZXMgY2hhbmdlZCwg MTA4IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGg5ay9oaWZfdXNiLmMKaW5kZXggNGZiOTU4NS4uZTdjY2NmOCAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuYworKysgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5jCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyB2b2lk IGhpZl91c2JfcmVnb3V0X2NiKHN0cnVjdCB1cmIgKnVyYikKIAogCWlmIChjbWQpIHsKIAkJYXRo OWtfaHRjX3R4Y29tcGxldGlvbl9jYihjbWQtPmhpZl9kZXYtPmh0Y19oYW5kbGUsCi0JCQkJCSAg Y21kLT5za2IsIDEpOworCQkJCQkgIGNtZC0+c2tiLCB0cnVlKTsKIAkJa2ZyZWUoY21kKTsKIAl9 CiAKQEAgLTEyNiw2ICsxMjYsOTAgQEAgc3RhdGljIGludCBoaWZfdXNiX3NlbmRfcmVnb3V0KHN0 cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2RldiwKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMg dm9pZCBoaWZfdXNiX21nbXRfY2Ioc3RydWN0IHVyYiAqdXJiKQoreworCXN0cnVjdCBjbWRfYnVm ICpjbWQgPSAoc3RydWN0IGNtZF9idWYgKil1cmItPmNvbnRleHQ7CisJc3RydWN0IGhpZl9kZXZp Y2VfdXNiICpoaWZfZGV2ID0gY21kLT5oaWZfZGV2OworCWJvb2wgdHhvayA9IHRydWU7CisKKwlp ZiAoIWNtZCB8fCAhY21kLT5za2IgfHwgIWNtZC0+aGlmX2RldikKKwkJcmV0dXJuOworCisJc3dp dGNoICh1cmItPnN0YXR1cykgeworCWNhc2UgMDoKKwkJYnJlYWs7CisJY2FzZSAtRU5PRU5UOgor CWNhc2UgLUVDT05OUkVTRVQ6CisJY2FzZSAtRU5PREVWOgorCWNhc2UgLUVTSFVURE9XTjoKKwkJ dHhvayA9IGZhbHNlOworCisJCS8qCisJCSAqIElmIHRoZSBVUkJzIGFyZSBiZWluZyBmbHVzaGVk LCBubyBuZWVkIHRvIGNvbXBsZXRlCisJCSAqIHRoaXMgcGFja2V0LgorCQkgKi8KKwkJc3Bpbl9s b2NrKCZoaWZfZGV2LT50eC50eF9sb2NrKTsKKwkJaWYgKGhpZl9kZXYtPnR4LmZsYWdzICYgSElG X1VTQl9UWF9GTFVTSCkgeworCQkJc3Bpbl91bmxvY2soJmhpZl9kZXYtPnR4LnR4X2xvY2spOwor CQkJZGV2X2tmcmVlX3NrYl9hbnkoY21kLT5za2IpOworCQkJa2ZyZWUoY21kKTsKKwkJCXJldHVy bjsKKwkJfQorCQlzcGluX3VubG9jaygmaGlmX2Rldi0+dHgudHhfbG9jayk7CisKKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJdHhvayA9IGZhbHNlOworCQlicmVhazsKKwl9CisKKwlza2JfcHVsbChj bWQtPnNrYiwgNCk7CisJYXRoOWtfaHRjX3R4Y29tcGxldGlvbl9jYihjbWQtPmhpZl9kZXYtPmh0 Y19oYW5kbGUsCisJCQkJICBjbWQtPnNrYiwgdHhvayk7CisJa2ZyZWUoY21kKTsKK30KKworc3Rh dGljIGludCBoaWZfdXNiX3NlbmRfbWdtdChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYs CisJCQkgICAgIHN0cnVjdCBza19idWZmICpza2IpCit7CisJc3RydWN0IHVyYiAqdXJiOworCXN0 cnVjdCBjbWRfYnVmICpjbWQ7CisJaW50IHJldCA9IDA7CisJX19sZTE2ICpoZHI7CisKKwl1cmIg PSB1c2JfYWxsb2NfdXJiKDAsIEdGUF9BVE9NSUMpOworCWlmICh1cmIgPT0gTlVMTCkKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwljbWQgPSBremFsbG9jKHNpemVvZigqY21kKSwgR0ZQX0FUT01JQyk7 CisJaWYgKGNtZCA9PSBOVUxMKSB7CisJCXVzYl9mcmVlX3VyYih1cmIpOworCQlyZXR1cm4gLUVO T01FTTsKKwl9CisKKwljbWQtPnNrYiA9IHNrYjsKKwljbWQtPmhpZl9kZXYgPSBoaWZfZGV2Owor CisJaGRyID0gKF9fbGUxNiAqKSBza2JfcHVzaChza2IsIDQpOworCSpoZHIrKyA9IGNwdV90b19s ZTE2KHNrYi0+bGVuKTsKKwkqaGRyKysgPSBjcHVfdG9fbGUxNihBVEhfVVNCX1RYX1NUUkVBTV9N T0RFX1RBRyk7CisKKwl1c2JfZmlsbF9idWxrX3VyYih1cmIsIGhpZl9kZXYtPnVkZXYsCisJCQkg dXNiX3NuZGJ1bGtwaXBlKGhpZl9kZXYtPnVkZXYsIFVTQl9XTEFOX1RYX1BJUEUpLAorCQkJIHNr Yi0+ZGF0YSwgc2tiLT5sZW4sCisJCQkgaGlmX3VzYl9tZ210X2NiLCBjbWQpOworCisJdXNiX2Fu Y2hvcl91cmIodXJiLCAmaGlmX2Rldi0+bWdtdF9zdWJtaXR0ZWQpOworCXJldCA9IHVzYl9zdWJt aXRfdXJiKHVyYiwgR0ZQX0FUT01JQyk7CisJaWYgKHJldCkgeworCQl1c2JfdW5hbmNob3JfdXJi KHVyYik7CisJCWtmcmVlKGNtZCk7CisJfQorCXVzYl9mcmVlX3VyYih1cmIpOworCisJcmV0dXJu IHJldDsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIGF0aDlrX3NrYl9xdWV1ZV9wdXJnZShzdHJ1 Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsCiAJCQkJCSBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICps aXN0KQogewpAQCAtMjc3LDYgKzM2MSw3IEBAIHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kX3R4KHN0 cnVjdCBoaWZfZGV2aWNlX3VzYiAqaGlmX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlz dHJ1Y3QgYXRoOWtfaHRjX3R4X2N0bCAqdHhfY3RsOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJ aW50IHJldCA9IDA7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmaGlmX2Rldi0+dHgudHhfbG9jaywg ZmxhZ3MpOwogCkBAIC0yOTEsMjUgKzM3NiwzMyBAQCBzdGF0aWMgaW50IGhpZl91c2Jfc2VuZF90 eChzdHJ1Y3QgaGlmX2RldmljZV91c2IgKmhpZl9kZXYsIHN0cnVjdCBza19idWZmICpza2IpCiAJ CXJldHVybiAtRU5PTUVNOwogCX0KIAotCV9fc2tiX3F1ZXVlX3RhaWwoJmhpZl9kZXYtPnR4LnR4 X3NrYl9xdWV1ZSwgc2tiKTsKLQloaWZfZGV2LT50eC50eF9za2JfY250Kys7CisJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmaGlmX2Rldi0+dHgudHhfbG9jaywgZmxhZ3MpOwogCiAJdHhfY3RsID0g SFRDX1NLQl9DQihza2IpOwogCi0JLyogU2VuZCBub3JtYWwvbWdtdC9iZWFjb24gZnJhbWVzIGlt bWVkaWF0ZWx5ICovCi0JaWYgKHR4X2N0bC0+dHlwZSAhPSBBVEg5S19IVENfQU1QRFUpCi0JCV9f aGlmX3VzYl90eChoaWZfZGV2KTsKKwkvKiBNZ210L0JlYWNvbiBmcmFtZXMgZG9uJ3QgdXNlIHRo ZSBUWCBidWZmZXIgcG9vbCAqLworCWlmICgodHhfY3RsLT50eXBlID09IEFUSDlLX0hUQ19NR01U KSB8fAorCSAgICAodHhfY3RsLT50eXBlID09IEFUSDlLX0hUQ19CRUFDT04pKSB7CisJCXJldCA9 IGhpZl91c2Jfc2VuZF9tZ210KGhpZl9kZXYsIHNrYik7CisJfQorCisJc3Bpbl9sb2NrX2lycXNh dmUoJmhpZl9kZXYtPnR4LnR4X2xvY2ssIGZsYWdzKTsKKworCWlmICgodHhfY3RsLT50eXBlID09 IEFUSDlLX0hUQ19OT1JNQUwpIHx8CisJICAgICh0eF9jdGwtPnR5cGUgPT0gQVRIOUtfSFRDX0FN UERVKSkgeworCQlfX3NrYl9xdWV1ZV90YWlsKCZoaWZfZGV2LT50eC50eF9za2JfcXVldWUsIHNr Yik7CisJCWhpZl9kZXYtPnR4LnR4X3NrYl9jbnQrKzsKKwl9CiAKIAkvKiBDaGVjayBpZiBBTVBE VXMgaGF2ZSB0byBiZSBzZW50IGltbWVkaWF0ZWx5ICovCi0JaWYgKCh0eF9jdGwtPnR5cGUgPT0g QVRIOUtfSFRDX0FNUERVKSAmJgotCSAgICAoaGlmX2Rldi0+dHgudHhfYnVmX2NudCA9PSBNQVhf VFhfVVJCX05VTSkgJiYKKwlpZiAoKGhpZl9kZXYtPnR4LnR4X2J1Zl9jbnQgPT0gTUFYX1RYX1VS Ql9OVU0pICYmCiAJICAgIChoaWZfZGV2LT50eC50eF9za2JfY250IDwgMikpIHsKIAkJX19oaWZf dXNiX3R4KGhpZl9kZXYpOwogCX0KIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmhpZl9kZXYt PnR4LnR4X2xvY2ssIGZsYWdzKTsKIAotCXJldHVybiAwOworCXJldHVybiByZXQ7CiB9CiAKIHN0 YXRpYyB2b2lkIGhpZl91c2Jfc3RhcnQodm9pZCAqaGlmX2hhbmRsZSkKQEAgLTM0MSw2ICs0MzQs OCBAQCBzdGF0aWMgdm9pZCBoaWZfdXNiX3N0b3Aodm9pZCAqaGlmX2hhbmRsZSkKIAkJCQkgJmhp Zl9kZXYtPnR4LnR4X3BlbmRpbmcsIGxpc3QpIHsKIAkJdXNiX2tpbGxfdXJiKHR4X2J1Zi0+dXJi KTsKIAl9CisKKwl1c2Jfa2lsbF9hbmNob3JlZF91cmJzKCZoaWZfZGV2LT5tZ210X3N1Ym1pdHRl ZCk7CiB9CiAKIHN0YXRpYyBpbnQgaGlmX3VzYl9zZW5kKHZvaWQgKmhpZl9oYW5kbGUsIHU4IHBp cGVfaWQsIHN0cnVjdCBza19idWZmICpza2IpCkBAIC02NTksNiArNzU0LDggQEAgc3RhdGljIHZv aWQgYXRoOWtfaGlmX3VzYl9kZWFsbG9jX3R4X3VyYnMoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpo aWZfZGV2KQogCQlrZnJlZSh0eF9idWYtPmJ1Zik7CiAJCWtmcmVlKHR4X2J1Zik7CiAJfQorCisJ dXNiX2tpbGxfYW5jaG9yZWRfdXJicygmaGlmX2Rldi0+bWdtdF9zdWJtaXR0ZWQpOwogfQogCiBz dGF0aWMgaW50IGF0aDlrX2hpZl91c2JfYWxsb2NfdHhfdXJicyhzdHJ1Y3QgaGlmX2RldmljZV91 c2IgKmhpZl9kZXYpCkBAIC02NzAsNiArNzY3LDcgQEAgc3RhdGljIGludCBhdGg5a19oaWZfdXNi X2FsbG9jX3R4X3VyYnMoc3RydWN0IGhpZl9kZXZpY2VfdXNiICpoaWZfZGV2KQogCUlOSVRfTElT VF9IRUFEKCZoaWZfZGV2LT50eC50eF9wZW5kaW5nKTsKIAlzcGluX2xvY2tfaW5pdCgmaGlmX2Rl di0+dHgudHhfbG9jayk7CiAJX19za2JfcXVldWVfaGVhZF9pbml0KCZoaWZfZGV2LT50eC50eF9z a2JfcXVldWUpOworCWluaXRfdXNiX2FuY2hvcigmaGlmX2Rldi0+bWdtdF9zdWJtaXR0ZWQpOwog CiAJZm9yIChpID0gMDsgaSA8IE1BWF9UWF9VUkJfTlVNOyBpKyspIHsKIAkJdHhfYnVmID0ga3ph bGxvYyhzaXplb2Yoc3RydWN0IHR4X2J1ZiksIEdGUF9LRVJORUwpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaCBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9oaWZfdXNiLmgKaW5kZXggOGI5OGQ2NC4uZjU5ZGY0OCAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2hpZl91c2IuaAorKysgYi9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaGlmX3VzYi5oCkBAIC05Myw2ICs5Myw3IEBAIHN0cnVj dCBoaWZfZGV2aWNlX3VzYiB7CiAJc3RydWN0IHVzYl9hbmNob3IgcmVnb3V0X3N1Ym1pdHRlZDsK IAlzdHJ1Y3QgdXNiX2FuY2hvciByeF9zdWJtaXR0ZWQ7CiAJc3RydWN0IHVzYl9hbmNob3IgcmVn X2luX3N1Ym1pdHRlZDsKKwlzdHJ1Y3QgdXNiX2FuY2hvciBtZ210X3N1Ym1pdHRlZDsKIAlzdHJ1 Y3Qgc2tfYnVmZiAqcmVtYWluX3NrYjsKIAljb25zdCBjaGFyICpmd19uYW1lOwogCWludCByeF9y ZW1haW5fbGVuOwotLSAKMS43LjQuMQoK --7Qk2ZwPchm--