From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 18/23] drm/i915: Replace struct_mutex for batch pool serialisation Date: Tue, 23 Jul 2019 19:38:37 +0100 Message-ID: <20190723183842.20372-18-chris@chris-wilson.co.uk> References: <20190723183842.20372-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id CB3906E386 for ; Tue, 23 Jul 2019 18:38:58 +0000 (UTC) In-Reply-To: <20190723183842.20372-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Matthew Auld List-Id: intel-gfx@lists.freedesktop.org U3dpdGNoIHRvIHRyYWNraW5nIGFjdGl2aXR5IHZpYSBpOTE1X2FjdGl2ZSBvbiBpbmRpdmlkdWFs IG5vZGVzLCBvbmx5CmtlZXBpbmcgYSBsaXN0IG9mIHJldGlyZWQgb2JqZWN0cyBpbiB0aGUgY2Fj aGUsIGFuZCByZWFwaW5nIHRoZSBjYWNoZQp3aGVuIHRoZSBlbmdpbmUgaXRzZWxmIGlkbGVzLgoK U2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClJl dmlld2VkLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAyICstCiAuLi4v Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgICAgfCAgNTggKysrLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMgICAgfCAgIDEgLQogLi4u L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmggIHwgICAxIC0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jICAgICAgICB8ICAgNCArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggICAgICAgIHwgICAxIC0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAgICB8ICAxMSArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wb29sLmMgICB8IDE3NyArKysrKysrKysrKysrKysr KysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wb29sLmggICB8ICAzNCAr KysrCiAuLi4vZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wb29sX3R5cGVzLmggfCAgMjkg KysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCAgfCAgIDYg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMgICAgICAgICB8ICAgMyAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgfCAgNjYgLS0t LS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jICAgIHwgMTMy IC0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wu aCAgICB8ICAyNiAtLS0KIDE2IGZpbGVzIGNoYW5nZWQsIDI5MCBpbnNlcnRpb25zKCspLCAyNjMg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX3Bvb2wuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV9wb29sLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG9vbF90eXBlcy5oCiBkZWxldGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5jCiBkZWxldGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5oCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZQppbmRleCBkMmMxZGNkYTIwYTEuLmUyM2I1NjhhNDUzZSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKQEAgLTczLDYgKzczLDcgQEAgb2JqLXkgKz0gZ3QvCiBndC15ICs9IFwKIAln dC9pbnRlbF9icmVhZGNydW1icy5vIFwKIAlndC9pbnRlbF9jb250ZXh0Lm8gXAorCWd0L2ludGVs X2VuZ2luZV9wb29sLm8gXAogCWd0L2ludGVsX2VuZ2luZV9jcy5vIFwKIAlndC9pbnRlbF9lbmdp bmVfcG0ubyBcCiAJZ3QvaW50ZWxfZW5naW5lX3VzZXIubyBcCkBAIC0xMjcsNyArMTI4LDYgQEAg aTkxNS15ICs9IFwKIAkgICQoZ2VtLXkpIFwKIAkgIGk5MTVfYWN0aXZlLm8gXAogCSAgaTkxNV9j bWRfcGFyc2VyLm8gXAotCSAgaTkxNV9nZW1fYmF0Y2hfcG9vbC5vIFwKIAkgIGk5MTVfZ2VtX2V2 aWN0Lm8gXAogCSAgaTkxNV9nZW1fZmVuY2VfcmVnLm8gXAogCSAgaTkxNV9nZW1fZ3R0Lm8gXApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5kZXgg NDRhZGQxNzJjZGM4Li4xOWYwZjIxZWU1OWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAi Z2VtL2k5MTVfZ2VtX2lvY3Rscy5oIgogI2luY2x1ZGUgImd0L2ludGVsX2NvbnRleHQuaCIKKyNp bmNsdWRlICJndC9pbnRlbF9lbmdpbmVfcG9vbC5oIgogI2luY2x1ZGUgImd0L2ludGVsX2d0Lmgi CiAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3RfcG0uaCIKIApAQCAtMTE0MSwyNSArMTE0MiwyNiBAQCBz dGF0aWMgaW50IF9fcmVsb2NfZ3B1X2FsbG9jKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAog CQkJICAgICB1bnNpZ25lZCBpbnQgbGVuKQogewogCXN0cnVjdCByZWxvY19jYWNoZSAqY2FjaGUg PSAmZWItPnJlbG9jX2NhY2hlOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJ c3RydWN0IGludGVsX2VuZ2luZV9wb29sX25vZGUgKnBvb2w7CiAJc3RydWN0IGk5MTVfcmVxdWVz dCAqcnE7CiAJc3RydWN0IGk5MTVfdm1hICpiYXRjaDsKIAl1MzIgKmNtZDsKIAlpbnQgZXJyOwog Ci0Jb2JqID0gaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoJmViLT5lbmdpbmUtPmJhdGNoX3Bvb2ws IFBBR0VfU0laRSk7Ci0JaWYgKElTX0VSUihvYmopKQotCQlyZXR1cm4gUFRSX0VSUihvYmopOwor CXBvb2wgPSBpbnRlbF9lbmdpbmVfcG9vbF9nZXQoJmViLT5lbmdpbmUtPnBvb2wsIFBBR0VfU0la RSk7CisJaWYgKElTX0VSUihwb29sKSkKKwkJcmV0dXJuIFBUUl9FUlIocG9vbCk7CiAKLQljbWQg PSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosCisJY21kID0gaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAocG9vbC0+b2JqLAogCQkJCSAgICAgIGNhY2hlLT5oYXNfbGxjID8KIAkJCQkgICAgICBJ OTE1X01BUF9GT1JDRV9XQiA6CiAJCQkJICAgICAgSTkxNV9NQVBfRk9SQ0VfV0MpOwotCWk5MTVf Z2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwotCWlmIChJU19FUlIoY21kKSkKLQkJcmV0dXJu IFBUUl9FUlIoY21kKTsKKwlpZiAoSVNfRVJSKGNtZCkpIHsKKwkJZXJyID0gUFRSX0VSUihjbWQp OworCQlnb3RvIG91dF9wb29sOworCX0KIAotCWJhdGNoID0gaTkxNV92bWFfaW5zdGFuY2Uob2Jq LCB2bWEtPnZtLCBOVUxMKTsKKwliYXRjaCA9IGk5MTVfdm1hX2luc3RhbmNlKHBvb2wtPm9iaiwg dm1hLT52bSwgTlVMTCk7CiAJaWYgKElTX0VSUihiYXRjaCkpIHsKIAkJZXJyID0gUFRSX0VSUihi YXRjaCk7CiAJCWdvdG8gZXJyX3VubWFwOwpAQCAtMTE3NSw2ICsxMTc3LDEwIEBAIHN0YXRpYyBp bnQgX19yZWxvY19ncHVfYWxsb2Moc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCiAJCWdvdG8g ZXJyX3VucGluOwogCX0KIAorCWVyciA9IGludGVsX2VuZ2luZV9wb29sX21hcmtfYWN0aXZlKHBv b2wsIHJxKTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycl9yZXF1ZXN0OworCiAJZXJyID0gcmVsb2Nf bW92ZV90b19ncHUocnEsIHZtYSk7CiAJaWYgKGVycikKIAkJZ290byBlcnJfcmVxdWVzdDsKQEAg LTEyMDAsNyArMTIwNiw3IEBAIHN0YXRpYyBpbnQgX19yZWxvY19ncHVfYWxsb2Moc3RydWN0IGk5 MTVfZXhlY2J1ZmZlciAqZWIsCiAJY2FjaGUtPnJxX3NpemUgPSAwOwogCiAJLyogUmV0dXJuIHdp dGggYmF0Y2ggbWFwcGluZyAoY21kKSBzdGlsbCBwaW5uZWQgKi8KLQlyZXR1cm4gMDsKKwlnb3Rv IG91dF9wb29sOwogCiBza2lwX3JlcXVlc3Q6CiAJaTkxNV9yZXF1ZXN0X3NraXAocnEsIGVycik7 CkBAIC0xMjA5LDcgKzEyMTUsOSBAQCBzdGF0aWMgaW50IF9fcmVsb2NfZ3B1X2FsbG9jKHN0cnVj dCBpOTE1X2V4ZWNidWZmZXIgKmViLAogZXJyX3VucGluOgogCWk5MTVfdm1hX3VucGluKGJhdGNo KTsKIGVycl91bm1hcDoKLQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CisJaTkxNV9n ZW1fb2JqZWN0X3VucGluX21hcChwb29sLT5vYmopOworb3V0X3Bvb2w6CisJaW50ZWxfZW5naW5l X3Bvb2xfcHV0KHBvb2wpOwogCXJldHVybiBlcnI7CiB9CiAKQEAgLTE5NTMsMTggKzE5NjEsMTcg QEAgc3RhdGljIGludCBpOTE1X3Jlc2V0X2dlbjdfc29sX29mZnNldHMoc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCiAKIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKmViX3BhcnNlKHN0cnVjdCBpOTE1 X2V4ZWNidWZmZXIgKmViLCBib29sIGlzX21hc3RlcikKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqc2hhZG93X2JhdGNoX29iajsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX3Bvb2xfbm9k ZSAqcG9vbDsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAlpbnQgZXJyOwogCi0Jc2hhZG93X2Jh dGNoX29iaiA9IGk5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KCZlYi0+ZW5naW5lLT5iYXRjaF9wb29s LAotCQkJCQkJICAgUEFHRV9BTElHTihlYi0+YmF0Y2hfbGVuKSk7Ci0JaWYgKElTX0VSUihzaGFk b3dfYmF0Y2hfb2JqKSkKLQkJcmV0dXJuIEVSUl9DQVNUKHNoYWRvd19iYXRjaF9vYmopOworCXBv b2wgPSBpbnRlbF9lbmdpbmVfcG9vbF9nZXQoJmViLT5lbmdpbmUtPnBvb2wsIGViLT5iYXRjaF9s ZW4pOworCWlmIChJU19FUlIocG9vbCkpCisJCXJldHVybiBFUlJfQ0FTVChwb29sKTsKIAogCWVy ciA9IGludGVsX2VuZ2luZV9jbWRfcGFyc2VyKGViLT5lbmdpbmUsCiAJCQkJICAgICAgZWItPmJh dGNoLT5vYmosCi0JCQkJICAgICAgc2hhZG93X2JhdGNoX29iaiwKKwkJCQkgICAgICBwb29sLT5v YmosCiAJCQkJICAgICAgZWItPmJhdGNoX3N0YXJ0X29mZnNldCwKIAkJCQkgICAgICBlYi0+YmF0 Y2hfbGVuLAogCQkJCSAgICAgIGlzX21hc3Rlcik7CkBAIC0xOTczLDEyICsxOTgwLDEyIEBAIHN0 YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKmViX3BhcnNlKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmVi LCBib29sIGlzX21hc3RlcikKIAkJCXZtYSA9IE5VTEw7CiAJCWVsc2UKIAkJCXZtYSA9IEVSUl9Q VFIoZXJyKTsKLQkJZ290byBvdXQ7CisJCWdvdG8gZXJyOwogCX0KIAotCXZtYSA9IGk5MTVfZ2Vt X29iamVjdF9nZ3R0X3BpbihzaGFkb3dfYmF0Y2hfb2JqLCBOVUxMLCAwLCAwLCAwKTsKKwl2bWEg PSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ocG9vbC0+b2JqLCBOVUxMLCAwLCAwLCAwKTsKIAlp ZiAoSVNfRVJSKHZtYSkpCi0JCWdvdG8gb3V0OworCQlnb3RvIGVycjsKIAogCWViLT52bWFbZWIt PmJ1ZmZlcl9jb3VudF0gPSBpOTE1X3ZtYV9nZXQodm1hKTsKIAllYi0+ZmxhZ3NbZWItPmJ1ZmZl cl9jb3VudF0gPQpAQCAtMTk4Niw4ICsxOTkzLDExIEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEg KmViX3BhcnNlKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLCBib29sIGlzX21hc3RlcikKIAl2 bWEtPmV4ZWNfZmxhZ3MgPSAmZWItPmZsYWdzW2ViLT5idWZmZXJfY291bnRdOwogCWViLT5idWZm ZXJfY291bnQrKzsKIAotb3V0OgotCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhzaGFkb3df YmF0Y2hfb2JqKTsKKwl2bWEtPnByaXZhdGUgPSBwb29sOworCXJldHVybiB2bWE7CisKK2VycjoK KwlpbnRlbF9lbmdpbmVfcG9vbF9wdXQocG9vbCk7CiAJcmV0dXJuIHZtYTsKIH0KIApAQCAtMjYx Miw2ICsyNjIyLDggQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCSAqIHRvIGV4cGxpY2l0bHkgaG9sZCBhbm90aGVyIHJlZmVyZW5jZSBoZXJlLgogCSAq LwogCWViLnJlcXVlc3QtPmJhdGNoID0gZWIuYmF0Y2g7CisJaWYgKGViLmJhdGNoLT5wcml2YXRl KQorCQlpbnRlbF9lbmdpbmVfcG9vbF9tYXJrX2FjdGl2ZShlYi5iYXRjaC0+cHJpdmF0ZSwgZWIu cmVxdWVzdCk7CiAKIAl0cmFjZV9pOTE1X3JlcXVlc3RfcXVldWUoZWIucmVxdWVzdCwgZWIuYmF0 Y2hfZmxhZ3MpOwogCWVyciA9IGViX3N1Ym1pdCgmZWIpOwpAQCAtMjYzNiw2ICsyNjQ4LDggQEAg aTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogZXJyX2JhdGNo X3VucGluOgogCWlmIChlYi5iYXRjaF9mbGFncyAmIEk5MTVfRElTUEFUQ0hfU0VDVVJFKQogCQlp OTE1X3ZtYV91bnBpbihlYi5iYXRjaCk7CisJaWYgKGViLmJhdGNoLT5wcml2YXRlKQorCQlpbnRl bF9lbmdpbmVfcG9vbF9wdXQoZWIuYmF0Y2gtPnByaXZhdGUpOwogZXJyX3ZtYToKIAlpZiAoZWIu ZXhlYykKIAkJZWJfcmVsZWFzZV92bWFzKCZlYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fb2JqZWN0LmMKaW5kZXggNGVhOTdmY2E5YzM1Li5lY2NkN2Y0NzY4ZjggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKQEAgLTY2LDcgKzY2LDYg QEAgdm9pZCBpOTE1X2dlbV9vYmplY3RfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAogCUlOSVRfTElTVF9IRUFEKCZvYmotPm1tLmxpbmspOwogCiAJSU5JVF9MSVNUX0hFQUQo Jm9iai0+bHV0X2xpc3QpOwotCUlOSVRfTElTVF9IRUFEKCZvYmotPmJhdGNoX3Bvb2xfbGluayk7 CiAKIAlpbml0X3JjdV9oZWFkKCZvYmotPnJjdSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaAppbmRleCAzNGI1MWZhZDAyZGUuLmQ0NzRj NmFjNDEwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdF90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmpl Y3RfdHlwZXMuaApAQCAtMTE0LDcgKzExNCw2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 IHsKIAl1bnNpZ25lZCBpbnQgdXNlcmZhdWx0X2NvdW50OwogCXN0cnVjdCBsaXN0X2hlYWQgdXNl cmZhdWx0X2xpbms7CiAKLQlzdHJ1Y3QgbGlzdF9oZWFkIGJhdGNoX3Bvb2xfbGluazsKIAlJOTE1 X1NFTEZURVNUX0RFQ0xBUkUoc3RydWN0IGxpc3RfaGVhZCBzdF9saW5rKTsKIAogCS8qCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jCmluZGV4IGNjY2IwMmI4NTdkZS4uZDgwY2Rl NDU4ZTQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0uYwpAQCAtMzQsMTAg KzM0LDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcGFyayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp OwogCi0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKKwlmb3JfZWFjaF9lbmdp bmUoZW5naW5lLCBpOTE1LCBpZCkKIAkJY2FsbF9pZGxlX2JhcnJpZXJzKGVuZ2luZSk7IC8qIGNs ZWFudXAgYWZ0ZXIgd2VkZ2luZyAqLwotCQlpOTE1X2dlbV9iYXRjaF9wb29sX2ZpbmkoJmVuZ2lu ZS0+YmF0Y2hfcG9vbCk7Ci0JfQogCiAJaTkxNV92bWFfcGFya2VkKGk5MTUpOwogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oCmluZGV4IDMwODU2MzgzZTRjNS4uNTJmMjllNjE4 Njk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmUuaApAQCAtOSw3ICs5LDYg QEAKICNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KICNpbmNsdWRlIDxsaW51eC9zZXFsb2NrLmg+ CiAKLSNpbmNsdWRlICJpOTE1X2dlbV9iYXRjaF9wb29sLmgiCiAjaW5jbHVkZSAiaTkxNV9wbXUu aCIKICNpbmNsdWRlICJpOTE1X3JlZy5oIgogI2luY2x1ZGUgImk5MTVfcmVxdWVzdC5oIgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCAzNjhlYTUwODcxNzEu LjQwNTQ2NGJlZjVhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2Nz LmMKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgImludGVsX2VuZ2luZS5oIgogI2luY2x1 ZGUgImludGVsX2VuZ2luZV9wbS5oIgorI2luY2x1ZGUgImludGVsX2VuZ2luZV9wb29sLmgiCiAj aW5jbHVkZSAiaW50ZWxfZW5naW5lX3VzZXIuaCIKICNpbmNsdWRlICJpbnRlbF9jb250ZXh0Lmgi CiAjaW5jbHVkZSAiaW50ZWxfbHJjLmgiCkBAIC00OTQsMTEgKzQ5NSw2IEBAIGludCBpbnRlbF9l bmdpbmVzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJcmV0dXJuIGVycjsK IH0KIAotc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfYmF0Y2hfcG9vbChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCi17Ci0JaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KCZlbmdp bmUtPmJhdGNoX3Bvb2wsIGVuZ2luZSk7Ci19Ci0KIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfZXhl Y2xpc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsK QEAgLTYyNCwxMCArNjIwLDExIEBAIHN0YXRpYyBpbnQgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1v bihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaW50ZWxfZW5naW5lX2luaXRfYnJl YWRjcnVtYnMoZW5naW5lKTsKIAlpbnRlbF9lbmdpbmVfaW5pdF9leGVjbGlzdHMoZW5naW5lKTsK IAlpbnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soZW5naW5lKTsKLQlpbnRlbF9lbmdpbmVfaW5p dF9iYXRjaF9wb29sKGVuZ2luZSk7CiAJaW50ZWxfZW5naW5lX2luaXRfY21kX3BhcnNlcihlbmdp bmUpOwogCWludGVsX2VuZ2luZV9pbml0X19wbShlbmdpbmUpOwogCisJaW50ZWxfZW5naW5lX3Bv b2xfaW5pdCgmZW5naW5lLT5wb29sKTsKKwogCS8qIFVzZSB0aGUgd2hvbGUgZGV2aWNlIGJ5IGRl ZmF1bHQgKi8KIAllbmdpbmUtPnNzZXUgPQogCQlpbnRlbF9zc2V1X2Zyb21fZGV2aWNlX2luZm8o JlJVTlRJTUVfSU5GTyhlbmdpbmUtPmk5MTUpLT5zc2V1KTsKQEAgLTg2OSw5ICs4NjYsOSBAQCB2 b2lkIGludGVsX2VuZ2luZV9jbGVhbnVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiAKIAljbGVhbnVwX3N0YXR1c19wYWdlKGVuZ2luZSk7CiAKKwlpbnRlbF9lbmdpbmVf cG9vbF9maW5pKCZlbmdpbmUtPnBvb2wpOwogCWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJz KGVuZ2luZSk7CiAJaW50ZWxfZW5naW5lX2NsZWFudXBfY21kX3BhcnNlcihlbmdpbmUpOwotCWk5 MTVfZ2VtX2JhdGNoX3Bvb2xfZmluaSgmZW5naW5lLT5iYXRjaF9wb29sKTsKIAogCWlmIChlbmdp bmUtPmRlZmF1bHRfc3RhdGUpCiAJCWk5MTVfZ2VtX29iamVjdF9wdXQoZW5naW5lLT5kZWZhdWx0 X3N0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMKaW5kZXgg MDcyZjY1ZTZhMDllLi43NmM4MjhkMTFiMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV9wbS5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAK ICNpbmNsdWRlICJpbnRlbF9lbmdpbmUuaCIKKyNpbmNsdWRlICJpbnRlbF9lbmdpbmVfcG9vbC5o IgogI2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgogI2luY2x1ZGUgImludGVsX2d0LmgiCiAj aW5jbHVkZSAiaW50ZWxfZ3RfcG0uaCIKQEAgLTExNyw2ICsxMTgsNyBAQCBzdGF0aWMgaW50IF9f ZW5naW5lX3Bhcmsoc3RydWN0IGludGVsX3dha2VyZWYgKndmKQogCUdFTV9UUkFDRSgiJXNcbiIs IGVuZ2luZS0+bmFtZSk7CiAKIAlpbnRlbF9lbmdpbmVfZGlzYXJtX2JyZWFkY3J1bWJzKGVuZ2lu ZSk7CisJaW50ZWxfZW5naW5lX3Bvb2xfcGFyaygmZW5naW5lLT5wb29sKTsKIAogCS8qIE11c3Qg YmUgcmVzZXQgdXBvbiBpZGxpbmcsIG9yIHdlIG1heSBtaXNzIHRoZSBidXN5IHdha2V1cC4gKi8K IAlHRU1fQlVHX09OKGVuZ2luZS0+ZXhlY2xpc3RzLnF1ZXVlX3ByaW9yaXR5X2hpbnQgIT0gSU5U X01JTik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf cG9vbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3Bvb2wuYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAzZDkwYjQ5NTg0YQotLS0gL2Rl di9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wb29sLmMK QEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisg KgorICogQ29weXJpZ2h0IMKpIDIwMTQtMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNp bmNsdWRlICJnZW0vaTkxNV9nZW1fb2JqZWN0LmgiCisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgor I2luY2x1ZGUgImludGVsX2VuZ2luZV9wbS5oIgorI2luY2x1ZGUgImludGVsX2VuZ2luZV9wb29s LmgiCisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp0b19lbmdpbmUoc3RydWN0IGlu dGVsX2VuZ2luZV9wb29sICpwb29sKQoreworCXJldHVybiBjb250YWluZXJfb2YocG9vbCwgc3Ry dWN0IGludGVsX2VuZ2luZV9jcywgcG9vbCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFk ICoKK2J1Y2tldF9mb3Jfc2l6ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX3Bvb2wgKnBvb2wsIHNpemVf dCBzeikKK3sKKwlpbnQgbjsKKworCS8qCisJICogQ29tcHV0ZSBhIHBvd2VyLW9mLXR3byBidWNr ZXQsIGJ1dCB0aHJvdyBldmVyeXRoaW5nIGdyZWF0ZXIgdGhhbgorCSAqIDE2S2lCIGludG8gdGhl IHNhbWUgYnVja2V0OiBpLmUuIHRoZSBidWNrZXRzIGhvbGQgb2JqZWN0cyBvZgorCSAqICgxIHBh Z2UsIDIgcGFnZXMsIDQgcGFnZXMsIDgrIHBhZ2VzKS4KKwkgKi8KKwluID0gZmxzKHN6ID4+IFBB R0VfU0hJRlQpIC0gMTsKKwlpZiAobiA+PSBBUlJBWV9TSVpFKHBvb2wtPmNhY2hlX2xpc3QpKQor CQluID0gQVJSQVlfU0laRShwb29sLT5jYWNoZV9saXN0KSAtIDE7CisKKwlyZXR1cm4gJnBvb2wt PmNhY2hlX2xpc3Rbbl07Cit9CisKK3N0YXRpYyB2b2lkIG5vZGVfZnJlZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX3Bvb2xfbm9kZSAqbm9kZSkKK3sKKwlpOTE1X2dlbV9vYmplY3RfcHV0KG5vZGUtPm9i aik7CisJaTkxNV9hY3RpdmVfZmluaSgmbm9kZS0+YWN0aXZlKTsKKwlrZnJlZShub2RlKTsKK30K Kworc3RhdGljIGludCBwb29sX2FjdGl2ZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZikKK3sKKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX3Bvb2xfbm9kZSAqbm9kZSA9CisJCWNvbnRhaW5lcl9vZihyZWYs IHR5cGVvZigqbm9kZSksIGFjdGl2ZSk7CisJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVz diA9IG5vZGUtPm9iai0+YmFzZS5yZXN2OworCWludCBlcnI7CisKKwlpZiAocmVzZXJ2YXRpb25f b2JqZWN0X3RyeWxvY2socmVzdikpIHsKKwkJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9leGNsX2Zl bmNlKHJlc3YsIE5VTEwpOworCQlyZXNlcnZhdGlvbl9vYmplY3RfdW5sb2NrKHJlc3YpOworCX0K KworCWVyciA9IGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMobm9kZS0+b2JqKTsKKwlpZiAoZXJy KQorCQlyZXR1cm4gZXJyOworCisJLyogSGlkZSB0aGlzIHBpbm5lZCBvYmplY3QgZnJvbSB0aGUg c2hyaW5rZXIgdW50aWwgcmV0aXJlZCAqLworCWk5MTVfZ2VtX29iamVjdF9tYWtlX3Vuc2hyaW5r YWJsZShub2RlLT5vYmopOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHBvb2xfcmV0 aXJlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfcG9v bF9ub2RlICpub2RlID0KKwkJY29udGFpbmVyX29mKHJlZiwgdHlwZW9mKCpub2RlKSwgYWN0aXZl KTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX3Bvb2wgKnBvb2wgPSBub2RlLT5wb29sOworCXN0cnVj dCBsaXN0X2hlYWQgKmxpc3QgPSBidWNrZXRfZm9yX3NpemUocG9vbCwgbm9kZS0+b2JqLT5iYXNl LnNpemUpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlHRU1fQlVHX09OKCFpbnRlbF9lbmdp bmVfcG1faXNfYXdha2UodG9fZW5naW5lKHBvb2wpKSk7CisKKwlpOTE1X2dlbV9vYmplY3RfdW5w aW5fcGFnZXMobm9kZS0+b2JqKTsKKworCS8qIFJldHVybiB0aGlzIG9iamVjdCB0byB0aGUgc2hy aW5rZXIgcG9vbCAqLworCWk5MTVfZ2VtX29iamVjdF9tYWtlX3B1cmdlYWJsZShub2RlLT5vYmop OworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnBvb2wtPmxvY2ssIGZsYWdzKTsKKwlsaXN0X2FkZCgm bm9kZS0+bGluaywgbGlzdCk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcG9vbC0+bG9jaywg ZmxhZ3MpOworfQorCitzdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9wb29sX25vZGUgKgorbm9k ZV9jcmVhdGUoc3RydWN0IGludGVsX2VuZ2luZV9wb29sICpwb29sLCBzaXplX3Qgc3opCit7CisJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gdG9fZW5naW5lKHBvb2wpOworCXN0cnVj dCBpbnRlbF9lbmdpbmVfcG9vbF9ub2RlICpub2RlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmo7CisKKwlub2RlID0ga21hbGxvYyhzaXplb2YoKm5vZGUpLAorCQkgICAgICAgR0ZQ X0tFUk5FTCB8IF9fR0ZQX1JFVFJZX01BWUZBSUwgfCBfX0dGUF9OT1dBUk4pOworCWlmICghbm9k ZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwlub2RlLT5wb29sID0gcG9vbDsKKwlp OTE1X2FjdGl2ZV9pbml0KGVuZ2luZS0+aTkxNSwgJm5vZGUtPmFjdGl2ZSwgcG9vbF9hY3RpdmUs IHBvb2xfcmV0aXJlKTsKKworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwo ZW5naW5lLT5pOTE1LCBzeik7CisJaWYgKElTX0VSUihvYmopKSB7CisJCWk5MTVfYWN0aXZlX2Zp bmkoJm5vZGUtPmFjdGl2ZSk7CisJCWtmcmVlKG5vZGUpOworCQlyZXR1cm4gRVJSX0NBU1Qob2Jq KTsKKwl9CisKKwlub2RlLT5vYmogPSBvYmo7CisJcmV0dXJuIG5vZGU7Cit9CisKK3N0cnVjdCBp bnRlbF9lbmdpbmVfcG9vbF9ub2RlICoKK2ludGVsX2VuZ2luZV9wb29sX2dldChzdHJ1Y3QgaW50 ZWxfZW5naW5lX3Bvb2wgKnBvb2wsIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBpbnRlbF9lbmdp bmVfcG9vbF9ub2RlICpub2RlOworCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7CisJdW5zaWduZWQg bG9uZyBmbGFnczsKKwlpbnQgcmV0OworCisJR0VNX0JVR19PTighaW50ZWxfZW5naW5lX3BtX2lz X2F3YWtlKHRvX2VuZ2luZShwb29sKSkpOworCisJc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7CisJ bGlzdCA9IGJ1Y2tldF9mb3Jfc2l6ZShwb29sLCBzaXplKTsKKworCXNwaW5fbG9ja19pcnFzYXZl KCZwb29sLT5sb2NrLCBmbGFncyk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShub2RlLCBsaXN0LCBs aW5rKSB7CisJCWlmIChub2RlLT5vYmotPmJhc2Uuc2l6ZSA8IHNpemUpCisJCQljb250aW51ZTsK KwkJbGlzdF9kZWwoJm5vZGUtPmxpbmspOworCQlicmVhazsKKwl9CisJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmcG9vbC0+bG9jaywgZmxhZ3MpOworCisJaWYgKCZub2RlLT5saW5rID09IGxpc3Qp IHsKKwkJbm9kZSA9IG5vZGVfY3JlYXRlKHBvb2wsIHNpemUpOworCQlpZiAoSVNfRVJSKG5vZGUp KQorCQkJcmV0dXJuIG5vZGU7CisJfQorCisJcmV0ID0gaTkxNV9hY3RpdmVfYWNxdWlyZSgmbm9k ZS0+YWN0aXZlKTsKKwlpZiAocmV0KSB7CisJCW5vZGVfZnJlZShub2RlKTsKKwkJcmV0dXJuIEVS Ul9QVFIocmV0KTsKKwl9CisKKwlyZXR1cm4gbm9kZTsKK30KKwordm9pZCBpbnRlbF9lbmdpbmVf cG9vbF9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfcG9vbCAqcG9vbCkKK3sKKwlpbnQgbjsKKwor CXNwaW5fbG9ja19pbml0KCZwb29sLT5sb2NrKTsKKwlmb3IgKG4gPSAwOyBuIDwgQVJSQVlfU0la RShwb29sLT5jYWNoZV9saXN0KTsgbisrKQorCQlJTklUX0xJU1RfSEVBRCgmcG9vbC0+Y2FjaGVf bGlzdFtuXSk7Cit9CisKK3ZvaWQgaW50ZWxfZW5naW5lX3Bvb2xfcGFyayhzdHJ1Y3QgaW50ZWxf ZW5naW5lX3Bvb2wgKnBvb2wpCit7CisJaW50IG47CisKKwlmb3IgKG4gPSAwOyBuIDwgQVJSQVlf U0laRShwb29sLT5jYWNoZV9saXN0KTsgbisrKSB7CisJCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3Qg PSAmcG9vbC0+Y2FjaGVfbGlzdFtuXTsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9wb29sX25vZGUg Km5vZGUsICpubjsKKworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobm9kZSwgbm4sIGxpc3Qs IGxpbmspCisJCQlub2RlX2ZyZWUobm9kZSk7CisKKwkJSU5JVF9MSVNUX0hFQUQobGlzdCk7CisJ fQorfQorCit2b2lkIGludGVsX2VuZ2luZV9wb29sX2Zpbmkoc3RydWN0IGludGVsX2VuZ2luZV9w b29sICpwb29sKQoreworCWludCBuOworCisJZm9yIChuID0gMDsgbiA8IEFSUkFZX1NJWkUocG9v bC0+Y2FjaGVfbGlzdCk7IG4rKykKKwkJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcG9vbC0+Y2Fj aGVfbGlzdFtuXSkpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZW5naW5lX3Bvb2wuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9w b29sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mN2EwYTY2MGMx YzkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdp bmVfcG9vbC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogTUlUCisgKgorICogQ29weXJpZ2h0IMKpIDIwMTQtMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgor ICovCisKKyNpZm5kZWYgSU5URUxfRU5HSU5FX1BPT0xfSAorI2RlZmluZSBJTlRFTF9FTkdJTkVf UE9PTF9ICisKKyNpbmNsdWRlICJpbnRlbF9lbmdpbmVfcG9vbF90eXBlcy5oIgorI2luY2x1ZGUg Imk5MTVfYWN0aXZlLmgiCisjaW5jbHVkZSAiaTkxNV9yZXF1ZXN0LmgiCisKK3N0cnVjdCBpbnRl bF9lbmdpbmVfcG9vbF9ub2RlICoKK2ludGVsX2VuZ2luZV9wb29sX2dldChzdHJ1Y3QgaW50ZWxf ZW5naW5lX3Bvb2wgKnBvb2wsIHNpemVfdCBzaXplKTsKKworc3RhdGljIGlubGluZSBpbnQKK2lu dGVsX2VuZ2luZV9wb29sX21hcmtfYWN0aXZlKHN0cnVjdCBpbnRlbF9lbmdpbmVfcG9vbF9ub2Rl ICpub2RlLAorCQkJICAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCit7CisJcmV0dXJuIGk5 MTVfYWN0aXZlX3JlZigmbm9kZS0+YWN0aXZlLCBycS0+ZmVuY2UuY29udGV4dCwgcnEpOworfQor CitzdGF0aWMgaW5saW5lIHZvaWQKK2ludGVsX2VuZ2luZV9wb29sX3B1dChzdHJ1Y3QgaW50ZWxf ZW5naW5lX3Bvb2xfbm9kZSAqbm9kZSkKK3sKKwlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZub2RlLT5h Y3RpdmUpOworfQorCit2b2lkIGludGVsX2VuZ2luZV9wb29sX2luaXQoc3RydWN0IGludGVsX2Vu Z2luZV9wb29sICpwb29sKTsKK3ZvaWQgaW50ZWxfZW5naW5lX3Bvb2xfcGFyayhzdHJ1Y3QgaW50 ZWxfZW5naW5lX3Bvb2wgKnBvb2wpOwordm9pZCBpbnRlbF9lbmdpbmVfcG9vbF9maW5pKHN0cnVj dCBpbnRlbF9lbmdpbmVfcG9vbCAqcG9vbCk7CisKKyNlbmRpZiAvKiBJTlRFTF9FTkdJTkVfUE9P TF9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf cG9vbF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3Bvb2xf dHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUzMWVlMzYx Yjc2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Vu Z2luZV9wb29sX3R5cGVzLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBNSVQKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAxNC0yMDE4IEludGVsIENvcnBv cmF0aW9uCisgKi8KKworI2lmbmRlZiBJTlRFTF9FTkdJTkVfUE9PTF9UWVBFU19ICisjZGVmaW5l IElOVEVMX0VOR0lORV9QT09MX1RZUEVTX0gKKworI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNp bmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorCisjaW5jbHVkZSAiaTkxNV9hY3RpdmVfdHlwZXMu aCIKKworc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Q7CisKK3N0cnVjdCBpbnRlbF9lbmdpbmVf cG9vbCB7CisJc3BpbmxvY2tfdCBsb2NrOworCXN0cnVjdCBsaXN0X2hlYWQgY2FjaGVfbGlzdFs0 XTsKK307CisKK3N0cnVjdCBpbnRlbF9lbmdpbmVfcG9vbF9ub2RlIHsKKwlzdHJ1Y3QgaTkxNV9h Y3RpdmUgYWN0aXZlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0 IGxpc3RfaGVhZCBsaW5rOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfcG9vbCAqcG9vbDsKK307CisK KyNlbmRpZiAvKiBJTlRFTF9FTkdJTkVfUE9PTF9UWVBFU19IICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCmluZGV4IDNjODQ5NzMyNzVhZS4uZDc2NGVm YzIwODA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf dHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMu aApAQCAtMTcsMTIgKzE3LDEyIEBACiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KIAogI2luY2x1 ZGUgImk5MTVfZ2VtLmgiCi0jaW5jbHVkZSAiaTkxNV9nZW1fYmF0Y2hfcG9vbC5oIgogI2luY2x1 ZGUgImk5MTVfcG11LmgiCiAjaW5jbHVkZSAiaTkxNV9wcmlvbGlzdF90eXBlcy5oIgogI2luY2x1 ZGUgImk5MTVfc2VsZnRlc3QuaCIKLSNpbmNsdWRlICJndC9pbnRlbF90aW1lbGluZV90eXBlcy5o IgorI2luY2x1ZGUgImludGVsX2VuZ2luZV9wb29sX3R5cGVzLmgiCiAjaW5jbHVkZSAiaW50ZWxf c3NldS5oIgorI2luY2x1ZGUgImludGVsX3RpbWVsaW5lX3R5cGVzLmgiCiAjaW5jbHVkZSAiaW50 ZWxfd2FrZXJlZi5oIgogI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRzX3R5cGVzLmgiCiAKQEAg LTM1Nyw3ICszNTcsNyBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAkgKiB3aGVuIHRoZSBj b21tYW5kIHBhcnNlciBpcyBlbmFibGVkLiBQcmV2ZW50cyB0aGUgY2xpZW50IGZyb20KIAkgKiBt b2RpZnlpbmcgdGhlIGJhdGNoIGNvbnRlbnRzIGFmdGVyIHNvZnR3YXJlIHBhcnNpbmcuCiAJICov Ci0Jc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgYmF0Y2hfcG9vbDsKKwlzdHJ1Y3QgaW50ZWxf ZW5naW5lX3Bvb2wgcG9vbDsKIAogCXN0cnVjdCBpbnRlbF9od19zdGF0dXNfcGFnZSBzdGF0dXNf cGFnZTsKIAlzdHJ1Y3QgaTkxNV9jdHhfd29ya2Fyb3VuZHMgd2FfY3R4OwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L21vY2tfZW5naW5lLmMKaW5kZXggNDI3NzY2NzJjNTliLi40YWFiYzc1YjkyYzIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L21vY2tfZW5naW5lLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvbW9ja19lbmdpbmUuYwpAQCAtMjcsNiArMjcsNyBAQAogI2lu Y2x1ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaW50ZWxfY29udGV4dC5oIgogI2luY2x1ZGUg ImludGVsX2VuZ2luZV9wbS5oIgorI2luY2x1ZGUgImludGVsX2VuZ2luZV9wb29sLmgiCiAKICNp bmNsdWRlICJtb2NrX2VuZ2luZS5oIgogI2luY2x1ZGUgInNlbGZ0ZXN0cy9tb2NrX3JlcXVlc3Qu aCIKQEAgLTI5Miw2ICsyOTMsOCBAQCBpbnQgbW9ja19lbmdpbmVfaW5pdChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCiAJaW50ZWxfZW5naW5lX2luaXRfZXhlY2xpc3RzKGVuZ2luZSk7 CiAJaW50ZWxfZW5naW5lX2luaXRfX3BtKGVuZ2luZSk7CiAKKwlpbnRlbF9lbmdpbmVfcG9vbF9p bml0KCZlbmdpbmUtPnBvb2wpOworCiAJZW5naW5lLT5rZXJuZWxfY29udGV4dCA9CiAJCWk5MTVf Z2VtX2NvbnRleHRfZ2V0X2VuZ2luZShpOTE1LT5rZXJuZWxfY29udGV4dCwgZW5naW5lLT5pZCk7 CiAJaWYgKElTX0VSUihlbmdpbmUtPmtlcm5lbF9jb250ZXh0KSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKaW5kZXggZjlhOWY1ODlkNjMxLi45OWZkZWY4NTRjOWUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yOTUsMjYgKzI5NSw2IEBAIHN0YXRpYyBpbnQgcGVy X2ZpbGVfc3RhdHMoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpCiAJCQkgICBzdGF0cy5j bG9zZWQpOyBcCiB9IHdoaWxlICgwKQogCi1zdGF0aWMgdm9pZCBwcmludF9iYXRjaF9wb29sX3N0 YXRzKHN0cnVjdCBzZXFfZmlsZSAqbSwKLQkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCi17Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0Jc3RydWN0IGZpbGVfc3RhdHMgc3RhdHMgPSB7fTsK LQlpbnQgajsKLQotCWZvcl9lYWNoX3VzZXJfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYpIHsKLQkJ Zm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoZW5naW5lLT5iYXRjaF9wb29sLmNhY2hlX2xpc3Qp OyBqKyspIHsKLQkJCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLAotCQkJCQkgICAgJmVuZ2luZS0+ YmF0Y2hfcG9vbC5jYWNoZV9saXN0W2pdLAotCQkJCQkgICAgYmF0Y2hfcG9vbF9saW5rKQotCQkJ CXBlcl9maWxlX3N0YXRzKDAsIG9iaiwgJnN0YXRzKTsKLQkJfQotCX0KLQotCXByaW50X2ZpbGVf c3RhdHMobSwgIltrXWJhdGNoIHBvb2wiLCBzdGF0cyk7Ci19Ci0KIHN0YXRpYyB2b2lkIHByaW50 X2NvbnRleHRfc3RhdHMoc3RydWN0IHNlcV9maWxlICptLAogCQkJCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogewpAQCAtMzc3LDU3ICszNTcsMTIgQEAgc3RhdGljIGludCBpOTE1X2dl bV9vYmplY3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAotCXByaW50X2JhdGNoX3Bvb2xfc3RhdHMobSwgaTkxNSk7CiAJcHJp bnRfY29udGV4dF9zdGF0cyhtLCBpOTE1KTsKIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwogCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgaTkxNV9nZW1fYmF0Y2hf cG9vbF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKLXsKLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Ci0Jc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwotCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCWludCB0 b3RhbCA9IDA7Ci0JaW50IHJldCwgajsKLQotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJs ZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlmb3Jf ZWFjaF91c2VyX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KSB7Ci0JCWZvciAoaiA9IDA7IGogPCBB UlJBWV9TSVpFKGVuZ2luZS0+YmF0Y2hfcG9vbC5jYWNoZV9saXN0KTsgaisrKSB7Ci0JCQlpbnQg Y291bnQ7Ci0KLQkJCWNvdW50ID0gMDsKLQkJCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLAotCQkJ CQkgICAgJmVuZ2luZS0+YmF0Y2hfcG9vbC5jYWNoZV9saXN0W2pdLAotCQkJCQkgICAgYmF0Y2hf cG9vbF9saW5rKQotCQkJCWNvdW50Kys7Ci0JCQlzZXFfcHJpbnRmKG0sICIlcyBjYWNoZVslZF06 ICVkIG9iamVjdHNcbiIsCi0JCQkJICAgZW5naW5lLT5uYW1lLCBqLCBjb3VudCk7Ci0KLQkJCWxp c3RfZm9yX2VhY2hfZW50cnkob2JqLAotCQkJCQkgICAgJmVuZ2luZS0+YmF0Y2hfcG9vbC5jYWNo ZV9saXN0W2pdLAotCQkJCQkgICAgYmF0Y2hfcG9vbF9saW5rKSB7Ci0JCQkJc2VxX3B1dHMobSwg IiAgICIpOwotCQkJCWRlc2NyaWJlX29iaihtLCBvYmopOwotCQkJCXNlcV9wdXRjKG0sICdcbicp OwotCQkJfQotCi0JCQl0b3RhbCArPSBjb3VudDsKLQkJfQotCX0KLQotCXNlcV9wcmludGYobSwg InRvdGFsOiAlZFxuIiwgdG90YWwpOwotCi0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgZ2VuOF9kaXNwbGF5X2ludGVycnVw dF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7CkBAIC00Mzc5LDcgKzQzMTQsNiBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pbmZvX2xpc3QgaTkxNV9kZWJ1Z2ZzX2xpc3RbXSA9 IHsKIAl7Imk5MTVfZ2VtX29iamVjdHMiLCBpOTE1X2dlbV9vYmplY3RfaW5mbywgMH0sCiAJeyJp OTE1X2dlbV9mZW5jZV9yZWdzIiwgaTkxNV9nZW1fZmVuY2VfcmVnc19pbmZvLCAwfSwKIAl7Imk5 MTVfZ2VtX2ludGVycnVwdCIsIGk5MTVfaW50ZXJydXB0X2luZm8sIDB9LAotCXsiaTkxNV9nZW1f YmF0Y2hfcG9vbCIsIGk5MTVfZ2VtX2JhdGNoX3Bvb2xfaW5mbywgMH0sCiAJeyJpOTE1X2d1Y19p bmZvIiwgaTkxNV9ndWNfaW5mbywgMH0sCiAJeyJpOTE1X2d1Y19sb2FkX3N0YXR1cyIsIGk5MTVf Z3VjX2xvYWRfc3RhdHVzX2luZm8sIDB9LAogCXsiaTkxNV9ndWNfbG9nX2R1bXAiLCBpOTE1X2d1 Y19sb2dfZHVtcCwgMH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9iYXRjaF9wb29sLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29s LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxN2YyMzk5MTI1My4uMDAwMDAwMDAw MDAwCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYworKysg L2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi0vKgotICogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IE1JVAotICoKLSAqIENvcHlyaWdodCDCqSAyMDE0LTIwMTggSW50ZWwgQ29ycG9yYXRpb24K LSAqLwotCi0jaW5jbHVkZSAiaTkxNV9nZW1fYmF0Y2hfcG9vbC5oIgotI2luY2x1ZGUgImk5MTVf ZHJ2LmgiCi0KLS8qKgotICogRE9DOiBiYXRjaCBwb29sCi0gKgotICogSW4gb3JkZXIgdG8gc3Vi bWl0IGJhdGNoIGJ1ZmZlcnMgYXMgJ3NlY3VyZScsIHRoZSBzb2Z0d2FyZSBjb21tYW5kIHBhcnNl cgotICogbXVzdCBlbnN1cmUgdGhhdCBhIGJhdGNoIGJ1ZmZlciBjYW5ub3QgYmUgbW9kaWZpZWQg YWZ0ZXIgcGFyc2luZy4gSXQgZG9lcwotICogdGhpcyBieSBjb3B5aW5nIHRoZSB1c2VyIHByb3Zp ZGVkIGJhdGNoIGJ1ZmZlciBjb250ZW50cyB0byBhIGtlcm5lbCBvd25lZAotICogYnVmZmVyIGZy b20gd2hpY2ggdGhlIGhhcmR3YXJlIHdpbGwgYWN0dWFsbHkgZXhlY3V0ZSwgYW5kIGJ5IGNhcmVm dWxseQotICogbWFuYWdpbmcgdGhlIGFkZHJlc3Mgc3BhY2UgYmluZGluZ3MgZm9yIHN1Y2ggYnVm ZmVycy4KLSAqCi0gKiBUaGUgYmF0Y2ggcG9vbCBmcmFtZXdvcmsgcHJvdmlkZXMgYSBtZWNoYW5p c20gZm9yIHRoZSBkcml2ZXIgdG8gbWFuYWdlIGEKLSAqIHNldCBvZiBzY3JhdGNoIGJ1ZmZlcnMg dG8gdXNlIGZvciB0aGlzIHB1cnBvc2UuIFRoZSBmcmFtZXdvcmsgY2FuIGJlCi0gKiBleHRlbmRl ZCB0byBzdXBwb3J0IG90aGVyIHVzZXMgY2FzZXMgc2hvdWxkIHRoZXkgYXJpc2UuCi0gKi8KLQot LyoqCi0gKiBpOTE1X2dlbV9iYXRjaF9wb29sX2luaXQoKSAtIGluaXRpYWxpemUgYSBiYXRjaCBi dWZmZXIgcG9vbAotICogQHBvb2w6IHRoZSBiYXRjaCBidWZmZXIgcG9vbAotICogQGVuZ2luZTog dGhlIGFzc29jaWF0ZWQgcmVxdWVzdCBzdWJtaXNzaW9uIGVuZ2luZQotICovCi12b2lkIGk5MTVf Z2VtX2JhdGNoX3Bvb2xfaW5pdChzdHJ1Y3QgaTkxNV9nZW1fYmF0Y2hfcG9vbCAqcG9vbCwKLQkJ CSAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKLXsKLQlpbnQgbjsKLQotCXBv b2wtPmVuZ2luZSA9IGVuZ2luZTsKLQotCWZvciAobiA9IDA7IG4gPCBBUlJBWV9TSVpFKHBvb2wt PmNhY2hlX2xpc3QpOyBuKyspCi0JCUlOSVRfTElTVF9IRUFEKCZwb29sLT5jYWNoZV9saXN0W25d KTsKLX0KLQotLyoqCi0gKiBpOTE1X2dlbV9iYXRjaF9wb29sX2ZpbmkoKSAtIGNsZWFuIHVwIGEg YmF0Y2ggYnVmZmVyIHBvb2wKLSAqIEBwb29sOiB0aGUgcG9vbCB0byBjbGVhbiB1cAotICoKLSAq IE5vdGU6IENhbGxlcnMgbXVzdCBob2xkIHRoZSBzdHJ1Y3RfbXV0ZXguCi0gKi8KLXZvaWQgaTkx NV9nZW1fYmF0Y2hfcG9vbF9maW5pKHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sKQot ewotCWludCBuOwotCi0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmcG9vbC0+ZW5naW5lLT5pOTE1LT5k cm0uc3RydWN0X211dGV4KTsKLQotCWZvciAobiA9IDA7IG4gPCBBUlJBWV9TSVpFKHBvb2wtPmNh Y2hlX2xpc3QpOyBuKyspIHsKLQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgKm5l eHQ7Ci0KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9iaiwgbmV4dCwKLQkJCQkJICZwb29s LT5jYWNoZV9saXN0W25dLAotCQkJCQkgYmF0Y2hfcG9vbF9saW5rKQotCQkJaTkxNV9nZW1fb2Jq ZWN0X3B1dChvYmopOwotCi0JCUlOSVRfTElTVF9IRUFEKCZwb29sLT5jYWNoZV9saXN0W25dKTsK LQl9Ci19Ci0KLS8qKgotICogaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoKSAtIGFsbG9jYXRlIGEg YnVmZmVyIGZyb20gdGhlIHBvb2wKLSAqIEBwb29sOiB0aGUgYmF0Y2ggYnVmZmVyIHBvb2wKLSAq IEBzaXplOiB0aGUgbWluaW11bSBkZXNpcmVkIHNpemUgb2YgdGhlIHJldHVybmVkIGJ1ZmZlcgot ICoKLSAqIFJldHVybnMgYW4gaW5hY3RpdmUgYnVmZmVyIGZyb20gQHBvb2wgd2l0aCBhdCBsZWFz dCBAc2l6ZSBieXRlcywKLSAqIHdpdGggdGhlIHBhZ2VzIHBpbm5lZC4gVGhlIGNhbGxlciBtdXN0 IGk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcygpCi0gKiBvbiB0aGUgcmV0dXJuZWQgb2JqZWN0 LgotICoKLSAqIE5vdGU6IENhbGxlcnMgbXVzdCBob2xkIHRoZSBzdHJ1Y3RfbXV0ZXgKLSAqCi0g KiBSZXR1cm46IHRoZSBidWZmZXIgb2JqZWN0IG9yIGFuIGVycm9yIHBvaW50ZXIKLSAqLwotc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgotaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3RydWN0 IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBvb2wsCi0JCQlzaXplX3Qgc2l6ZSkKLXsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7Ci0JaW50 IG4sIHJldDsKLQotCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnBvb2wtPmVuZ2luZS0+aTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Ci0KLQkvKiBDb21wdXRlIGEgcG93ZXItb2YtdHdvIGJ1Y2tldCwgYnV0 IHRocm93IGV2ZXJ5dGhpbmcgZ3JlYXRlciB0aGFuCi0JICogMTZLaUIgaW50byB0aGUgc2FtZSBi dWNrZXQ6IGkuZS4gdGhlIHRoZSBidWNrZXRzIGhvbGQgb2JqZWN0cyBvZgotCSAqICgxIHBhZ2Us IDIgcGFnZXMsIDQgcGFnZXMsIDgrIHBhZ2VzKS4KLQkgKi8KLQluID0gZmxzKHNpemUgPj4gUEFH RV9TSElGVCkgLSAxOwotCWlmIChuID49IEFSUkFZX1NJWkUocG9vbC0+Y2FjaGVfbGlzdCkpCi0J CW4gPSBBUlJBWV9TSVpFKHBvb2wtPmNhY2hlX2xpc3QpIC0gMTsKLQlsaXN0ID0gJnBvb2wtPmNh Y2hlX2xpc3Rbbl07Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9iaiwgbGlzdCwgYmF0Y2hfcG9v bF9saW5rKSB7Ci0JCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YgPSBvYmotPmJhc2Uu cmVzdjsKLQotCQkvKiBUaGUgYmF0Y2hlcyBhcmUgc3RyaWN0bHkgTFJVIG9yZGVyZWQgKi8KLQkJ aWYgKCFyZXNlcnZhdGlvbl9vYmplY3RfdGVzdF9zaWduYWxlZF9yY3UocmVzdiwgdHJ1ZSkpCi0J CQlicmVhazsKLQotCQkvKgotCQkgKiBUaGUgb2JqZWN0IGlzIG5vdyBpZGxlLCBjbGVhciB0aGUg YXJyYXkgb2Ygc2hhcmVkCi0JCSAqIGZlbmNlcyBiZWZvcmUgd2UgYWRkIGEgbmV3IHJlcXVlc3Qu IEFsdGhvdWdoLCB3ZQotCQkgKiByZW1haW4gb24gdGhlIHNhbWUgZW5naW5lLCB3ZSBtYXkgYmUg b24gYSBkaWZmZXJlbnQKLQkJICogdGltZWxpbmUgYW5kIHNvIG1heSBjb250aW51YWxseSBncm93 IHRoZSBhcnJheSwKLQkJICogdHJhcHBpbmcgYSByZWZlcmVuY2UgdG8gYWxsIHRoZSBvbGQgZmVu Y2VzLCByYXRoZXIKLQkJICogdGhhbiByZXBsYWNlIHRoZSBleGlzdGluZyBmZW5jZS4KLQkJICov Ci0JCWlmIChyY3VfYWNjZXNzX3BvaW50ZXIocmVzdi0+ZmVuY2UpKSB7Ci0JCQlyZXNlcnZhdGlv bl9vYmplY3RfbG9jayhyZXN2LCBOVUxMKTsKLQkJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhj bF9mZW5jZShyZXN2LCBOVUxMKTsKLQkJCXJlc2VydmF0aW9uX29iamVjdF91bmxvY2socmVzdik7 Ci0JCX0KLQotCQlpZiAob2JqLT5iYXNlLnNpemUgPj0gc2l6ZSkKLQkJCWdvdG8gZm91bmQ7Ci0J fQotCi0Jb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChwb29sLT5lbmdpbmUt Pmk5MTUsIHNpemUpOwotCWlmIChJU19FUlIob2JqKSkKLQkJcmV0dXJuIG9iajsKLQotZm91bmQ6 Ci0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwotCWlmIChyZXQpCi0JCXJl dHVybiBFUlJfUFRSKHJldCk7Ci0KLQlsaXN0X21vdmVfdGFpbCgmb2JqLT5iYXRjaF9wb29sX2xp bmssIGxpc3QpOwotCXJldHVybiBvYmo7Ci19CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9iYXRjaF9wb29sLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlZWVlZWFhNTRk OC4uMDAwMDAwMDAwMDAwCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNo X3Bvb2wuaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8qCi0gKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogTUlUCi0gKgotICogQ29weXJpZ2h0IMKpIDIwMTQtMjAxOCBJbnRlbCBD b3Jwb3JhdGlvbgotICovCi0KLSNpZm5kZWYgSTkxNV9HRU1fQkFUQ0hfUE9PTF9ICi0jZGVmaW5l IEk5MTVfR0VNX0JBVENIX1BPT0xfSAotCi0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLQotc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3Q7Ci1zdHJ1Y3QgaW50ZWxfZW5naW5lX2NzOwotCi1zdHJ1 Y3QgaTkxNV9nZW1fYmF0Y2hfcG9vbCB7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OwotCXN0cnVjdCBsaXN0X2hlYWQgY2FjaGVfbGlzdFs0XTsKLX07Ci0KLXZvaWQgaTkxNV9nZW1f YmF0Y2hfcG9vbF9pbml0KHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sLAotCQkJICAg ICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKLXZvaWQgaTkxNV9nZW1fYmF0Y2hf cG9vbF9maW5pKHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29sKTsKLXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICoKLWk5MTVfZ2VtX2JhdGNoX3Bvb2xfZ2V0KHN0cnVjdCBpOTE1X2dl bV9iYXRjaF9wb29sICpwb29sLCBzaXplX3Qgc2l6ZSk7Ci0KLSNlbmRpZiAvKiBJOTE1X0dFTV9C QVRDSF9QT09MX0ggKi8KLS0gCjIuMjIuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4