From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8752C28CC0 for ; Thu, 30 May 2019 14:22:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7354122CF5 for ; Thu, 30 May 2019 14:22:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726015AbfE3OWm (ORCPT ); Thu, 30 May 2019 10:22:42 -0400 Received: from imap1.codethink.co.uk ([176.9.8.82]:55467 "EHLO imap1.codethink.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725934AbfE3OWl (ORCPT ); Thu, 30 May 2019 10:22:41 -0400 Received: from [167.98.27.226] (helo=xylophone) by imap1.codethink.co.uk with esmtpsa (Exim 4.84_2 #1 (Debian)) id 1hWLwh-0006ZJ-Jv; Thu, 30 May 2019 15:22:19 +0100 Message-ID: <1559226139.2631.30.camel@codethink.co.uk> Subject: [4.4] Security fixes From: Ben Hutchings To: Greg Kroah-Hartman , Sasha Levin Cc: stable Date: Thu, 30 May 2019 15:22:19 +0100 Organization: Codethink Ltd. Content-Type: multipart/mixed; boundary="=-yS4p5FQK3QJ8GxF+mee1" X-Mailer: Evolution 3.22.6-1+deb9u1 Mime-Version: 1.0 Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org --=-yS4p5FQK3QJ8GxF+mee1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit I've attached the following fixes to 4.4, as an mbox: - binder: Replace "%p" with "%pK" for stable - binder: replace "%p" with "%pK" - net: create skb_gso_validate_mac_len() - bnx2x: disable GSO where gso_size is too big for hardware - brcmfmac: Add length checks on firmware events - brcmfmac: screening firmware event packet - brcmfmac: revise handling events in receive path - brcmfmac: fix incorrect event channel deduction - brcmfmac: add length checks in scheduled scan result handler - brcmfmac: add subtype check for event handling in data path - userfaultfd: don't pin the user memory in userfaultfd_file_create() - coredump: fix race condition between mmget_not_zero()/get_task_mm() and core dumping The userfaultfd commit might not be a security fix but the next one depends on it. Ben. -- Ben Hutchings, Software Developer   Codethink Ltd https://www.codethink.co.uk/ Dale House, 35 Dale Street Manchester, M1 2HF, United Kingdom --=-yS4p5FQK3QJ8GxF+mee1 Content-Type: application/mbox; name="security-4.4.mbox" Content-Disposition: attachment; filename="security-4.4.mbox" Content-Transfer-Encoding: base64 RnJvbSAwMjEwNWE3OTgyYTBhMzAwZTk4NzQ2NGUyN2Y3ZjVkNjBmOTU2YjRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGlu ay5jby51az4KRGF0ZTogV2VkLCAyOSBNYXkgMjAxOSAxODowMjo0NCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMDEvMTJdIGJpbmRlcjogUmVwbGFjZSAiJXAiIHdpdGggIiVwSyIgZm9yIHN0YWJsZQoK VGhpcyB3YXMgZG9uZSBhcyBwYXJ0IG9mIHVwc3RyZWFtIGNvbW1pdHMgZmRmYjRhOTliNmFiICI4 aW5kZXI6CnNlcGFyYXRlIGJpbmRlciBhbGxvY2F0b3Igc3RydWN0dXJlIGZyb20gYmluZGVyIHBy b2MiLCAxOWM5ODcyNDFjYTEKImJpbmRlcjogc2VwYXJhdGUgb3V0IGJpbmRlcl9hbGxvYyBmdW5j dGlvbnMiLCBhbmQgN2E0NDA4YzZiZDNlCiJiaW5kZXI6IG1ha2Ugc3VyZSBhY2Nlc3NlcyB0byBw cm9jL3RocmVhZCBhcmUgc2FmZSIuICBIb3dldmVyLCB0aG9zZQpjb21taXRzIG1hZGUgbG90cyBv ZiBvdGhlciBjaGFuZ2VzIHRoYXQgYXJlIG5vdCBzdWl0YWJsZSBmb3Igc3RhYmxlLgoKU2lnbmVk LW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0t LQogZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jIHwgMjggKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYyBiL2RyaXZlcnMvYW5kcm9pZC9i aW5kZXIuYwppbmRleCAyNjBjZTBlNjAxODcuLjI3MmM1M2NhZjIwYSAxMDA2NDQKLS0tIGEvZHJp dmVycy9hbmRyb2lkL2JpbmRlci5jCisrKyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIuYwpAQCAt NDc3LDcgKzQ3Nyw3IEBAIHN0YXRpYyB2b2lkIGJpbmRlcl9pbnNlcnRfZnJlZV9idWZmZXIoc3Ry dWN0IGJpbmRlcl9wcm9jICpwcm9jLAogCW5ld19idWZmZXJfc2l6ZSA9IGJpbmRlcl9idWZmZXJf c2l6ZShwcm9jLCBuZXdfYnVmZmVyKTsKIAogCWJpbmRlcl9kZWJ1ZyhCSU5ERVJfREVCVUdfQlVG RkVSX0FMTE9DLAotCQkgICAgICIlZDogYWRkIGZyZWUgYnVmZmVyLCBzaXplICV6ZCwgYXQgJXBc biIsCisJCSAgICAgIiVkOiBhZGQgZnJlZSBidWZmZXIsIHNpemUgJXpkLCBhdCAlcEtcbiIsCiAJ CSAgICAgIHByb2MtPnBpZCwgbmV3X2J1ZmZlcl9zaXplLCBuZXdfYnVmZmVyKTsKIAogCXdoaWxl ICgqcCkgewpAQCAtNTU1LDcgKzU1NSw3IEBAIHN0YXRpYyBpbnQgYmluZGVyX3VwZGF0ZV9wYWdl X3JhbmdlKHN0cnVjdCBiaW5kZXJfcHJvYyAqcHJvYywgaW50IGFsbG9jYXRlLAogCXN0cnVjdCBt bV9zdHJ1Y3QgKm1tOwogCiAJYmluZGVyX2RlYnVnKEJJTkRFUl9ERUJVR19CVUZGRVJfQUxMT0Ms Ci0JCSAgICAgIiVkOiAlcyBwYWdlcyAlcC0lcFxuIiwgcHJvYy0+cGlkLAorCQkgICAgICIlZDog JXMgcGFnZXMgJXBLLSVwS1xuIiwgcHJvYy0+cGlkLAogCQkgICAgIGFsbG9jYXRlID8gImFsbG9j YXRlIiA6ICJmcmVlIiwgc3RhcnQsIGVuZCk7CiAKIAlpZiAoZW5kIDw9IHN0YXJ0KQpAQCAtNTk1 LDcgKzU5NSw3IEBAIHN0YXRpYyBpbnQgYmluZGVyX3VwZGF0ZV9wYWdlX3JhbmdlKHN0cnVjdCBi aW5kZXJfcHJvYyAqcHJvYywgaW50IGFsbG9jYXRlLAogCQlCVUdfT04oKnBhZ2UpOwogCQkqcGFn ZSA9IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCB8IF9fR0ZQX0hJR0hNRU0gfCBfX0dGUF9aRVJPKTsK IAkJaWYgKCpwYWdlID09IE5VTEwpIHsKLQkJCXByX2VycigiJWQ6IGJpbmRlcl9hbGxvY19idWYg ZmFpbGVkIGZvciBwYWdlIGF0ICVwXG4iLAorCQkJcHJfZXJyKCIlZDogYmluZGVyX2FsbG9jX2J1 ZiBmYWlsZWQgZm9yIHBhZ2UgYXQgJXBLXG4iLAogCQkJCXByb2MtPnBpZCwgcGFnZV9hZGRyKTsK IAkJCWdvdG8gZXJyX2FsbG9jX3BhZ2VfZmFpbGVkOwogCQl9CkBAIC02MDQsNyArNjA0LDcgQEAg c3RhdGljIGludCBiaW5kZXJfdXBkYXRlX3BhZ2VfcmFuZ2Uoc3RydWN0IGJpbmRlcl9wcm9jICpw cm9jLCBpbnQgYWxsb2NhdGUsCiAJCWZsdXNoX2NhY2hlX3ZtYXAoKHVuc2lnbmVkIGxvbmcpcGFn ZV9hZGRyLAogCQkJCSh1bnNpZ25lZCBsb25nKXBhZ2VfYWRkciArIFBBR0VfU0laRSk7CiAJCWlm IChyZXQgIT0gMSkgewotCQkJcHJfZXJyKCIlZDogYmluZGVyX2FsbG9jX2J1ZiBmYWlsZWQgdG8g bWFwIHBhZ2UgYXQgJXAgaW4ga2VybmVsXG4iLAorCQkJcHJfZXJyKCIlZDogYmluZGVyX2FsbG9j X2J1ZiBmYWlsZWQgdG8gbWFwIHBhZ2UgYXQgJXBLIGluIGtlcm5lbFxuIiwKIAkJCSAgICAgICBw cm9jLT5waWQsIHBhZ2VfYWRkcik7CiAJCQlnb3RvIGVycl9tYXBfa2VybmVsX2ZhaWxlZDsKIAkJ fQpAQCAtNzA4LDcgKzcwOCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmluZGVyX2J1ZmZlciAqYmluZGVy X2FsbG9jX2J1ZihzdHJ1Y3QgYmluZGVyX3Byb2MgKnByb2MsCiAJfQogCiAJYmluZGVyX2RlYnVn KEJJTkRFUl9ERUJVR19CVUZGRVJfQUxMT0MsCi0JCSAgICAgIiVkOiBiaW5kZXJfYWxsb2NfYnVm IHNpemUgJXpkIGdvdCBidWZmZXIgJXAgc2l6ZSAlemRcbiIsCisJCSAgICAgIiVkOiBiaW5kZXJf YWxsb2NfYnVmIHNpemUgJXpkIGdvdCBidWZmZXIgJXBLIHNpemUgJXpkXG4iLAogCQkgICAgICBw cm9jLT5waWQsIHNpemUsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOwogCiAJaGFzX3BhZ2VfYWRkciA9 CkBAIC03MzgsNyArNzM4LDcgQEAgc3RhdGljIHN0cnVjdCBiaW5kZXJfYnVmZmVyICpiaW5kZXJf YWxsb2NfYnVmKHN0cnVjdCBiaW5kZXJfcHJvYyAqcHJvYywKIAkJYmluZGVyX2luc2VydF9mcmVl X2J1ZmZlcihwcm9jLCBuZXdfYnVmZmVyKTsKIAl9CiAJYmluZGVyX2RlYnVnKEJJTkRFUl9ERUJV R19CVUZGRVJfQUxMT0MsCi0JCSAgICAgIiVkOiBiaW5kZXJfYWxsb2NfYnVmIHNpemUgJXpkIGdv dCAlcFxuIiwKKwkJICAgICAiJWQ6IGJpbmRlcl9hbGxvY19idWYgc2l6ZSAlemQgZ290ICVwS1xu IiwKIAkJICAgICAgcHJvYy0+cGlkLCBzaXplLCBidWZmZXIpOwogCWJ1ZmZlci0+ZGF0YV9zaXpl ID0gZGF0YV9zaXplOwogCWJ1ZmZlci0+b2Zmc2V0c19zaXplID0gb2Zmc2V0c19zaXplOwpAQCAt Nzc4LDcgKzc3OCw3IEBAIHN0YXRpYyB2b2lkIGJpbmRlcl9kZWxldGVfZnJlZV9idWZmZXIoc3Ry dWN0IGJpbmRlcl9wcm9jICpwcm9jLAogCQlpZiAoYnVmZmVyX2VuZF9wYWdlKHByZXYpID09IGJ1 ZmZlcl9lbmRfcGFnZShidWZmZXIpKQogCQkJZnJlZV9wYWdlX2VuZCA9IDA7CiAJCWJpbmRlcl9k ZWJ1ZyhCSU5ERVJfREVCVUdfQlVGRkVSX0FMTE9DLAotCQkJICAgICAiJWQ6IG1lcmdlIGZyZWUs IGJ1ZmZlciAlcCBzaGFyZSBwYWdlIHdpdGggJXBcbiIsCisJCQkgICAgICIlZDogbWVyZ2UgZnJl ZSwgYnVmZmVyICVwSyBzaGFyZSBwYWdlIHdpdGggJXBLXG4iLAogCQkJICAgICAgcHJvYy0+cGlk LCBidWZmZXIsIHByZXYpOwogCX0KIApAQCAtNzkxLDE0ICs3OTEsMTQgQEAgc3RhdGljIHZvaWQg YmluZGVyX2RlbGV0ZV9mcmVlX2J1ZmZlcihzdHJ1Y3QgYmluZGVyX3Byb2MgKnByb2MsCiAJCQkg ICAgYnVmZmVyX3N0YXJ0X3BhZ2UoYnVmZmVyKSkKIAkJCQlmcmVlX3BhZ2Vfc3RhcnQgPSAwOwog CQkJYmluZGVyX2RlYnVnKEJJTkRFUl9ERUJVR19CVUZGRVJfQUxMT0MsCi0JCQkJICAgICAiJWQ6 IG1lcmdlIGZyZWUsIGJ1ZmZlciAlcCBzaGFyZSBwYWdlIHdpdGggJXBcbiIsCisJCQkJICAgICAi JWQ6IG1lcmdlIGZyZWUsIGJ1ZmZlciAlcEsgc2hhcmUgcGFnZSB3aXRoICVwS1xuIiwKIAkJCQkg ICAgICBwcm9jLT5waWQsIGJ1ZmZlciwgcHJldik7CiAJCX0KIAl9CiAJbGlzdF9kZWwoJmJ1ZmZl ci0+ZW50cnkpOwogCWlmIChmcmVlX3BhZ2Vfc3RhcnQgfHwgZnJlZV9wYWdlX2VuZCkgewogCQli aW5kZXJfZGVidWcoQklOREVSX0RFQlVHX0JVRkZFUl9BTExPQywKLQkJCSAgICAgIiVkOiBtZXJn ZSBmcmVlLCBidWZmZXIgJXAgZG8gbm90IHNoYXJlIHBhZ2UlcyVzIHdpdGggJXAgb3IgJXBcbiIs CisJCQkgICAgICIlZDogbWVyZ2UgZnJlZSwgYnVmZmVyICVwSyBkbyBub3Qgc2hhcmUgcGFnZSVz JXMgd2l0aCAlcEsgb3IgJXBLXG4iLAogCQkJICAgICBwcm9jLT5waWQsIGJ1ZmZlciwgZnJlZV9w YWdlX3N0YXJ0ID8gIiIgOiAiIGVuZCIsCiAJCQkgICAgIGZyZWVfcGFnZV9lbmQgPyAiIiA6ICIg c3RhcnQiLCBwcmV2LCBuZXh0KTsKIAkJYmluZGVyX3VwZGF0ZV9wYWdlX3JhbmdlKHByb2MsIDAs IGZyZWVfcGFnZV9zdGFydCA/CkBAIC04MTksNyArODE5LDcgQEAgc3RhdGljIHZvaWQgYmluZGVy X2ZyZWVfYnVmKHN0cnVjdCBiaW5kZXJfcHJvYyAqcHJvYywKIAkJQUxJR04oYnVmZmVyLT5vZmZz ZXRzX3NpemUsIHNpemVvZih2b2lkICopKTsKIAogCWJpbmRlcl9kZWJ1ZyhCSU5ERVJfREVCVUdf QlVGRkVSX0FMTE9DLAotCQkgICAgICIlZDogYmluZGVyX2ZyZWVfYnVmICVwIHNpemUgJXpkIGJ1 ZmZlcl9zaXplICV6ZFxuIiwKKwkJICAgICAiJWQ6IGJpbmRlcl9mcmVlX2J1ZiAlcEsgc2l6ZSAl emQgYnVmZmVyX3NpemUgJXpkXG4iLAogCQkgICAgICBwcm9jLT5waWQsIGJ1ZmZlciwgc2l6ZSwg YnVmZmVyX3NpemUpOwogCiAJQlVHX09OKGJ1ZmZlci0+ZnJlZSk7CkBAIC0yOTEyLDcgKzI5MTIs NyBAQCBzdGF0aWMgaW50IGJpbmRlcl9tbWFwKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSkKICNpZmRlZiBDT05GSUdfQ1BVX0NBQ0hFX1ZJUFQKIAlpZiAoY2Fj aGVfaXNfdmlwdF9hbGlhc2luZygpKSB7CiAJCXdoaWxlIChDQUNIRV9DT0xPVVIoKHZtYS0+dm1f c3RhcnQgXiAodWludDMyX3QpcHJvYy0+YnVmZmVyKSkpIHsKLQkJCXByX2luZm8oImJpbmRlcl9t bWFwOiAlZCAlbHgtJWx4IG1hcHMgJXAgYmFkIGFsaWdubWVudFxuIiwgcHJvYy0+cGlkLCB2bWEt PnZtX3N0YXJ0LCB2bWEtPnZtX2VuZCwgcHJvYy0+YnVmZmVyKTsKKwkJCXByX2luZm8oImJpbmRl cl9tbWFwOiAlZCAlbHgtJWx4IG1hcHMgJXBLIGJhZCBhbGlnbm1lbnRcbiIsIHByb2MtPnBpZCwg dm1hLT52bV9zdGFydCwgdm1hLT52bV9lbmQsIHByb2MtPmJ1ZmZlcik7CiAJCQl2bWEtPnZtX3N0 YXJ0ICs9IFBBR0VfU0laRTsKIAkJfQogCX0KQEAgLTMxNzAsNyArMzE3MCw3IEBAIHN0YXRpYyB2 b2lkIGJpbmRlcl9kZWZlcnJlZF9yZWxlYXNlKHN0cnVjdCBiaW5kZXJfcHJvYyAqcHJvYykKIAog CQkJcGFnZV9hZGRyID0gcHJvYy0+YnVmZmVyICsgaSAqIFBBR0VfU0laRTsKIAkJCWJpbmRlcl9k ZWJ1ZyhCSU5ERVJfREVCVUdfQlVGRkVSX0FMTE9DLAotCQkJCSAgICAgIiVzOiAlZDogcGFnZSAl ZCBhdCAlcCBub3QgZnJlZWRcbiIsCisJCQkJICAgICAiJXM6ICVkOiBwYWdlICVkIGF0ICVwSyBu b3QgZnJlZWRcbiIsCiAJCQkJICAgICBfX2Z1bmNfXywgcHJvYy0+cGlkLCBpLCBwYWdlX2FkZHIp OwogCQkJdW5tYXBfa2VybmVsX3JhbmdlKCh1bnNpZ25lZCBsb25nKXBhZ2VfYWRkciwgUEFHRV9T SVpFKTsKIAkJCV9fZnJlZV9wYWdlKHByb2MtPnBhZ2VzW2ldKTsKQEAgLTMyNzEsNyArMzI3MSw3 IEBAIHN0YXRpYyB2b2lkIHByaW50X2JpbmRlcl90cmFuc2FjdGlvbihzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIGNvbnN0IGNoYXIgKnByZWZpeCwKIHN0YXRpYyB2b2lkIHByaW50X2JpbmRlcl9idWZmZXIo c3RydWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJc3RydWN0IGJpbmRl cl9idWZmZXIgKmJ1ZmZlcikKIHsKLQlzZXFfcHJpbnRmKG0sICIlcyAlZDogJXAgc2l6ZSAlemQ6 JXpkICVzXG4iLAorCXNlcV9wcmludGYobSwgIiVzICVkOiAlcEsgc2l6ZSAlemQ6JXpkICVzXG4i LAogCQkgICBwcmVmaXgsIGJ1ZmZlci0+ZGVidWdfaWQsIGJ1ZmZlci0+ZGF0YSwKIAkJICAgYnVm ZmVyLT5kYXRhX3NpemUsIGJ1ZmZlci0+b2Zmc2V0c19zaXplLAogCQkgICBidWZmZXItPnRyYW5z YWN0aW9uID8gImFjdGl2ZSIgOiAiZGVsaXZlcmVkIik7CkBAIC0zMzc0LDcgKzMzNzQsNyBAQCBz dGF0aWMgdm9pZCBwcmludF9iaW5kZXJfbm9kZShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBi aW5kZXJfbm9kZSAqbm9kZSkKIAogc3RhdGljIHZvaWQgcHJpbnRfYmluZGVyX3JlZihzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHN0cnVjdCBiaW5kZXJfcmVmICpyZWYpCiB7Ci0Jc2VxX3ByaW50ZihtLCAi ICByZWYgJWQ6IGRlc2MgJWQgJXNub2RlICVkIHMgJWQgdyAlZCBkICVwXG4iLAorCXNlcV9wcmlu dGYobSwgIiAgcmVmICVkOiBkZXNjICVkICVzbm9kZSAlZCBzICVkIHcgJWQgZCAlcEtcbiIsCiAJ CSAgIHJlZi0+ZGVidWdfaWQsIHJlZi0+ZGVzYywgcmVmLT5ub2RlLT5wcm9jID8gIiIgOiAiZGVh ZCAiLAogCQkgICByZWYtPm5vZGUtPmRlYnVnX2lkLCByZWYtPnN0cm9uZywgcmVmLT53ZWFrLCBy ZWYtPmRlYXRoKTsKIH0KLS0gCkJlbiBIdXRjaGluZ3MsIFNvZnR3YXJlIERldmVsb3BlciAgICAg ICAgICAgICAgICAgICAgICAgICBDb2RldGhpbmsgTHRkCmh0dHBzOi8vd3d3LmNvZGV0aGluay5j by51ay8gICAgICAgICAgICAgICAgIERhbGUgSG91c2UsIDM1IERhbGUgU3RyZWV0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5jaGVzdGVyLCBNMSAySEYsIFVuaXRlZCBL aW5nZG9tCgoKRnJvbSAzZTRlYjVhYmI5YTkxMTdkYTNiMWVhNWQyY2NiZTgzYWJhMzQ2ZWJjIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb2RkIEtqb3MgPHRram9zQGFuZHJvaWQuY29t PgpEYXRlOiBXZWQsIDcgRmViIDIwMTggMTM6NTc6MzcgLTA4MDAKU3ViamVjdDogW1BBVENIIDAy LzEyXSBiaW5kZXI6IHJlcGxhY2UgIiVwIiB3aXRoICIlcEsiCgpjb21taXQgOGNhODZmMTYzOWVj NTg5MGQ0MDBmZmY5MjExYWNhMjJkMGEzOTJlYiB1cHN0cmVhbS4KClRoZSBmb3JtYXQgc3BlY2lm aWVyICIlcCIgY2FuIGxlYWsga2VybmVsIGFkZHJlc3Nlcy4gVXNlCiIlcEsiIGluc3RlYWQuIFRo ZXJlIHdlcmUgNCByZW1haW5pbmcgY2FzZXMgaW4gYmluZGVyLmMuCgpTaWduZWQtb2ZmLWJ5OiBU b2RkIEtqb3MgPHRram9zQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFy dG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Cltid2g6IEJhY2twb3J0ZWQgdG8gNC40 OiBhZGp1c3QgY29udGV4dF0KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNo aW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogZHJpdmVycy9hbmRyb2lkL2JpbmRlci5jIHwgOCAr KysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyLmMgYi9kcml2ZXJzL2FuZHJvaWQv YmluZGVyLmMKaW5kZXggMjcyYzUzY2FmMjBhLi43ZGM1MmJhMjdlYWMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvYW5kcm9pZC9iaW5kZXIuYworKysgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyLmMKQEAg LTEyNDksNyArMTI0OSw3IEBAIHN0YXRpYyB2b2lkIGJpbmRlcl90cmFuc2FjdGlvbl9idWZmZXJf cmVsZWFzZShzdHJ1Y3QgYmluZGVyX3Byb2MgKnByb2MsCiAJaW50IGRlYnVnX2lkID0gYnVmZmVy LT5kZWJ1Z19pZDsKIAogCWJpbmRlcl9kZWJ1ZyhCSU5ERVJfREVCVUdfVFJBTlNBQ1RJT04sCi0J CSAgICAgIiVkIGJ1ZmZlciByZWxlYXNlICVkLCBzaXplICV6ZC0lemQsIGZhaWxlZCBhdCAlcFxu IiwKKwkJICAgICAiJWQgYnVmZmVyIHJlbGVhc2UgJWQsIHNpemUgJXpkLSV6ZCwgZmFpbGVkIGF0 ICVwS1xuIiwKIAkJICAgICBwcm9jLT5waWQsIGJ1ZmZlci0+ZGVidWdfaWQsCiAJCSAgICAgYnVm ZmVyLT5kYXRhX3NpemUsIGJ1ZmZlci0+b2Zmc2V0c19zaXplLCBmYWlsZWRfYXQpOwogCkBAIC0y MTA1LDcgKzIxMDUsNyBAQCBzdGF0aWMgaW50IGJpbmRlcl90aHJlYWRfd3JpdGUoc3RydWN0IGJp bmRlcl9wcm9jICpwcm9jLAogCQkJCX0KIAkJCX0KIAkJCWJpbmRlcl9kZWJ1ZyhCSU5ERVJfREVC VUdfREVBRF9CSU5ERVIsCi0JCQkJICAgICAiJWQ6JWQgQkNfREVBRF9CSU5ERVJfRE9ORSAlMDE2 bGx4IGZvdW5kICVwXG4iLAorCQkJCSAgICAgIiVkOiVkIEJDX0RFQURfQklOREVSX0RPTkUgJTAx NmxseCBmb3VuZCAlcEtcbiIsCiAJCQkJICAgICBwcm9jLT5waWQsIHRocmVhZC0+cGlkLCAodTY0 KWNvb2tpZSwKIAkJCQkgICAgIGRlYXRoKTsKIAkJCWlmIChkZWF0aCA9PSBOVUxMKSB7CkBAIC0z MjQ5LDcgKzMyNDksNyBAQCBzdGF0aWMgdm9pZCBwcmludF9iaW5kZXJfdHJhbnNhY3Rpb24oc3Ry dWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJICAgICBzdHJ1Y3QgYmlu ZGVyX3RyYW5zYWN0aW9uICp0KQogewogCXNlcV9wcmludGYobSwKLQkJICAgIiVzICVkOiAlcCBm cm9tICVkOiVkIHRvICVkOiVkIGNvZGUgJXggZmxhZ3MgJXggcHJpICVsZCByJWQiLAorCQkgICAi JXMgJWQ6ICVwSyBmcm9tICVkOiVkIHRvICVkOiVkIGNvZGUgJXggZmxhZ3MgJXggcHJpICVsZCBy JWQiLAogCQkgICBwcmVmaXgsIHQtPmRlYnVnX2lkLCB0LAogCQkgICB0LT5mcm9tID8gdC0+ZnJv bS0+cHJvYy0+cGlkIDogMCwKIAkJICAgdC0+ZnJvbSA/IHQtPmZyb20tPnBpZCA6IDAsCkBAIC0z MjYzLDcgKzMyNjMsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9iaW5kZXJfdHJhbnNhY3Rpb24oc3Ry dWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJaWYgKHQtPmJ1ZmZlci0+dGFy Z2V0X25vZGUpCiAJCXNlcV9wcmludGYobSwgIiBub2RlICVkIiwKIAkJCSAgIHQtPmJ1ZmZlci0+ dGFyZ2V0X25vZGUtPmRlYnVnX2lkKTsKLQlzZXFfcHJpbnRmKG0sICIgc2l6ZSAlemQ6JXpkIGRh dGEgJXBcbiIsCisJc2VxX3ByaW50ZihtLCAiIHNpemUgJXpkOiV6ZCBkYXRhICVwS1xuIiwKIAkJ ICAgdC0+YnVmZmVyLT5kYXRhX3NpemUsIHQtPmJ1ZmZlci0+b2Zmc2V0c19zaXplLAogCQkgICB0 LT5idWZmZXItPmRhdGEpOwogfQotLSAKQmVuIEh1dGNoaW5ncywgU29mdHdhcmUgRGV2ZWxvcGVy ICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayBMdGQKaHR0cHM6Ly93d3cuY29kZXRo aW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwgMzUgRGFsZSBTdHJlZXQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmNoZXN0ZXIsIE0xIDJIRiwgVW5p dGVkIEtpbmdkb20KCgpGcm9tIGI0Y2M0MGYyMWY3ZjI5MDhlM2MyYmUzMGE2MDQ2NTExZDIzYjk3 ZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IERhbmllbCBBeHRlbnMgPGRqYUBheHRl bnMubmV0PgpEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDE0OjE1OjMzICsxMTAwClN1YmplY3Q6IFtQ QVRDSCAwMy8xMl0gbmV0OiBjcmVhdGUgc2tiX2dzb192YWxpZGF0ZV9tYWNfbGVuKCkKCmNvbW1p dCAyYjE2ZjA0ODcyOWJmMzVlNmMyOGE0MGNiZmFkMDcyMzlmOWRjZDkwIHVwc3RyZWFtLgoKSWYg eW91IHRha2UgYSBHU08gc2tiLCBhbmQgc3BsaXQgaXQgaW50byBwYWNrZXRzLCB3aWxsIHRoZSBN QUMKbGVuZ3RoIChMMiArIEwzICsgTDQgaGVhZGVycyArIHBheWxvYWQpIG9mIHRob3NlIHBhY2tl dHMgYmUgc21hbGwKZW5vdWdoIHRvIGZpdCB3aXRoaW4gYSBnaXZlbiBsZW5ndGg/CgpNb3ZlIHNr Yl9nc29fbWFjX3NlZ2xlbigpIHRvIHNrYnVmZi5oIHdpdGggb3RoZXIgcmVsYXRlZCBmdW5jdGlv bnMKbGlrZSBza2JfZ3NvX25ldHdvcmtfc2VnbGVuKCkgc28gd2UgY2FuIHVzZSBpdCwgYW5kIHRo ZW4gY3JlYXRlCnNrYl9nc29fdmFsaWRhdGVfbWFjX2xlbiB0byBkbyB0aGUgZnVsbCBjYWxjdWxh dGlvbi4KClNpZ25lZC1vZmYtYnk6IERhbmllbCBBeHRlbnMgPGRqYUBheHRlbnMubmV0PgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Cltid2g6IEJh Y2twb3J0ZWQgdG8gNC40OiBUaGVyZSBpcyBubyBHU09fQllfRlJBR1MgY2FzZSB0byBoYW5kbGUs IHNvCiBza2JfZ3NvX3ZhbGlkYXRlX21hY19sZW4oKSBiZWNvbWVzIGEgdHJpdmlhbCBjb21wYXJp c29uLiBQdXQgaXQgaW5saW5lIGluCiA8bGludXgvc2tidWZmLmg+Ll0KU2lnbmVkLW9mZi1ieTog QmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogaW5jbHVk ZS9saW51eC9za2J1ZmYuaCB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogbmV0 L3NjaGVkL3NjaF90YmYuYyAgICB8IDEwIC0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMzAg aW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9za2J1ZmYuaCBiL2luY2x1ZGUvbGludXgvc2tidWZmLmgKaW5kZXggNTAyNzg3YzI5Y2U5Li5h MmYxMmQzNzdkMjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmgKKysrIGIvaW5j bHVkZS9saW51eC9za2J1ZmYuaApAQCAtMzY2NCw1ICszNjY0LDM1IEBAIHN0YXRpYyBpbmxpbmUg dW5zaWduZWQgaW50IHNrYl9nc29fbmV0d29ya19zZWdsZW4oY29uc3Qgc3RydWN0IHNrX2J1ZmYg KnNrYikKIAlyZXR1cm4gaGRyX2xlbiArIHNrYl9nc29fdHJhbnNwb3J0X3NlZ2xlbihza2IpOwog fQogCisvKioKKyAqIHNrYl9nc29fbWFjX3NlZ2xlbiAtIFJldHVybiBsZW5ndGggb2YgaW5kaXZp ZHVhbCBzZWdtZW50cyBvZiBhIGdzbyBwYWNrZXQKKyAqCisgKiBAc2tiOiBHU08gc2tiCisgKgor ICogc2tiX2dzb19tYWNfc2VnbGVuIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSByZWFsIHNpemUg b2YgdGhlCisgKiBpbmRpdmlkdWFsIHNlZ21lbnRzLCBpbmNsdWRpbmcgTUFDL0wyLCBMYXllcjMg KElQLCBJUHY2KSBhbmQgTDQKKyAqIGhlYWRlcnMgKFRDUC9VRFApLgorICovCitzdGF0aWMgaW5s aW5lIHVuc2lnbmVkIGludCBza2JfZ3NvX21hY19zZWdsZW4oY29uc3Qgc3RydWN0IHNrX2J1ZmYg KnNrYikKK3sKKwl1bnNpZ25lZCBpbnQgaGRyX2xlbiA9IHNrYl90cmFuc3BvcnRfaGVhZGVyKHNr YikgLSBza2JfbWFjX2hlYWRlcihza2IpOworCXJldHVybiBoZHJfbGVuICsgc2tiX2dzb190cmFu c3BvcnRfc2VnbGVuKHNrYik7Cit9CisKKy8qKgorICogc2tiX2dzb192YWxpZGF0ZV9tYWNfbGVu IC0gV2lsbCBhIHNwbGl0IEdTTyBza2IgZml0IGluIGEgZ2l2ZW4gbGVuZ3RoPworICoKKyAqIEBz a2I6IEdTTyBza2IKKyAqIEBsZW46IGxlbmd0aCB0byB2YWxpZGF0ZSBhZ2FpbnN0CisgKgorICog c2tiX2dzb192YWxpZGF0ZV9tYWNfbGVuIHZhbGlkYXRlcyBpZiBhIGdpdmVuIHNrYiB3aWxsIGZp dCBhIHdhbnRlZAorICogbGVuZ3RoIG9uY2Ugc3BsaXQsIGluY2x1ZGluZyBMMiwgTDMgYW5kIEw0 IGhlYWRlcnMgYW5kIHRoZSBwYXlsb2FkLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK3NrYl9n c29fdmFsaWRhdGVfbWFjX2xlbihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBp bnQgbGVuKQoreworCXJldHVybiBza2JfZ3NvX21hY19zZWdsZW4oc2tiKSA8PSBsZW47Cit9CisK ICNlbmRpZgkvKiBfX0tFUk5FTF9fICovCiAjZW5kaWYJLyogX0xJTlVYX1NLQlVGRl9IICovCmRp ZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RiZi5jIGIvbmV0L3NjaGVkL3NjaF90YmYuYwppbmRl eCBhMDZjOWQ2YmZjOWMuLjA1YzdhNjZmNjRkYSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF90 YmYuYworKysgYi9uZXQvc2NoZWQvc2NoX3RiZi5jCkBAIC0xNDIsMTYgKzE0Miw2IEBAIHN0YXRp YyB1NjQgcHNjaGVkX25zX3QybChjb25zdCBzdHJ1Y3QgcHNjaGVkX3JhdGVjZmcgKnIsCiAJcmV0 dXJuIGxlbjsKIH0KIAotLyoKLSAqIFJldHVybiBsZW5ndGggb2YgaW5kaXZpZHVhbCBzZWdtZW50 cyBvZiBhIGdzbyBwYWNrZXQsCi0gKiBpbmNsdWRpbmcgYWxsIGhlYWRlcnMgKE1BQywgSVAsIFRD UC9VRFApCi0gKi8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgc2tiX2dzb19tYWNfc2VnbGVuKGNvbnN0 IHN0cnVjdCBza19idWZmICpza2IpCi17Ci0JdW5zaWduZWQgaW50IGhkcl9sZW4gPSBza2JfdHJh bnNwb3J0X2hlYWRlcihza2IpIC0gc2tiX21hY19oZWFkZXIoc2tiKTsKLQlyZXR1cm4gaGRyX2xl biArIHNrYl9nc29fdHJhbnNwb3J0X3NlZ2xlbihza2IpOwotfQotCiAvKiBHU08gcGFja2V0IGlz IHRvbyBiaWcsIHNlZ21lbnQgaXQgc28gdGhhdCB0YmYgY2FuIHRyYW5zbWl0CiAgKiBlYWNoIHNl Z21lbnQgaW4gdGltZQogICovCi0tIApCZW4gSHV0Y2hpbmdzLCBTb2Z0d2FyZSBEZXZlbG9wZXIg ICAgICAgICAgICAgICAgICAgICAgICAgQ29kZXRoaW5rIEx0ZApodHRwczovL3d3dy5jb2RldGhp bmsuY28udWsvICAgICAgICAgICAgICAgICBEYWxlIEhvdXNlLCAzNSBEYWxlIFN0cmVldAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuY2hlc3RlciwgTTEgMkhGLCBVbml0 ZWQgS2luZ2RvbQoKCkZyb20gODJlMTk1MzM1ZTBlMjQ4NGJjNDE2MWM5ZjY3ZjhhNzEyY2UwYjgw YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRGFuaWVsIEF4dGVucyA8ZGphQGF4dGVu cy5uZXQ+CkRhdGU6IFdlZCwgMzEgSmFuIDIwMTggMTQ6MTU6MzQgKzExMDAKU3ViamVjdDogW1BB VENIIDA0LzEyXSBibngyeDogZGlzYWJsZSBHU08gd2hlcmUgZ3NvX3NpemUgaXMgdG9vIGJpZyBm b3IKIGhhcmR3YXJlCgpjb21taXQgODkxNGE1OTUxMTBhNmVjYTY5YTVlMjc1YjMyM2Y1ZDA5ZTE4 ZjRmOSB1cHN0cmVhbS4KCklmIGEgYm54MnggY2FyZCBpcyBwYXNzZWQgYSBHU08gcGFja2V0IHdp dGggYSBnc29fc2l6ZSBsYXJnZXIgdGhhbgp+OTcwMCBieXRlcywgaXQgd2lsbCBjYXVzZSBhIGZp cm13YXJlIGVycm9yIHRoYXQgd2lsbCBicmluZyB0aGUgY2FyZApkb3duOgoKYm54Mng6IFtibngy eF9hdHRuX2ludF9kZWFzc2VydGVkMzo0MzIzKGVuUDI0cDFzMGYwKV1NQyBhc3NlcnQhCmJueDJ4 OiBbYm54MnhfbWNfYXNzZXJ0OjcyMChlblAyNHAxczBmMCldWFNUT1JNX0FTU0VSVF9MSVNUX0lO REVYIDB4MgpibngyeDogW2JueDJ4X21jX2Fzc2VydDo3MzYoZW5QMjRwMXMwZjApXVhTVE9STV9B U1NFUlRfSU5ERVggMHgwID0gMHgwMDAwMDAwMCAweDI1ZTQzZTQ3IDB4MDA0NjNlMDEgMHgwMDAx MDA1MgpibngyeDogW2JueDJ4X21jX2Fzc2VydDo3NTAoZW5QMjRwMXMwZjApXUNoaXAgUmV2aXNp b246IGV2ZXJlc3QzLCBGVyBWZXJzaW9uOiA3XzEzXzEKLi4uIChkdW1wIG9mIHZhbHVlcyBjb250 aW51ZXMpIC4uLgoKRGV0ZWN0IHdoZW4gdGhlIG1hYyBsZW5ndGggb2YgYSBHU08gcGFja2V0IGlz IGdyZWF0ZXIgdGhhbiB0aGUgbWF4aW11bQpwYWNrZXQgc2l6ZSAoOTcwMCBieXRlcykgYW5kIGRp c2FibGUgR1NPLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIEF4dGVucyA8ZGphQGF4dGVucy5uZXQ+ ClJldmlld2VkLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ClNpZ25lZC1v ZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1i eTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogZHJp dmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jIHwgMTggKysrKysr KysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYwppbmRleCA0MDNm YThkOThhYTMuLmQ0NTBkOGIzNzA4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQv YnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jy b2FkY29tL2JueDJ4L2JueDJ4X21haW4uYwpAQCAtMTI4MjQsNiArMTI4MjQsMjQgQEAgc3RhdGlj IG5ldGRldl9mZWF0dXJlc190IGJueDJ4X2ZlYXR1cmVzX2NoZWNrKHN0cnVjdCBza19idWZmICpz a2IsCiAJCQkJCSAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJCSAgICAgIG5ldGRl dl9mZWF0dXJlc190IGZlYXR1cmVzKQogeworCS8qCisJICogQSBza2Igd2l0aCBnc29fc2l6ZSAr IGhlYWRlciBsZW5ndGggPiA5NzAwIHdpbGwgY2F1c2UgYQorCSAqIGZpcm13YXJlIHBhbmljLiBE cm9wIEdTTyBzdXBwb3J0LgorCSAqCisJICogRXZlbnR1YWxseSB0aGUgdXBwZXIgbGF5ZXIgc2hv dWxkIG5vdCBwYXNzIHRoZXNlIHBhY2tldHMgZG93bi4KKwkgKgorCSAqIEZvciBzcGVlZCwgaWYg dGhlIGdzb19zaXplIGlzIDw9IDkwMDAsIGFzc3VtZSB0aGVyZSB3aWxsCisJICogbm90IGJlIDcw MCBieXRlcyBvZiBoZWFkZXJzIGFuZCBwYXNzIGl0IHRocm91Z2guIE9ubHkgZG8gYQorCSAqIGZ1 bGwgKHNsb3cpIHZhbGlkYXRpb24gaWYgdGhlIGdzb19zaXplIGlzID4gOTAwMC4KKwkgKgorCSAq IChEdWUgdG8gdGhlIHdheSBTS0JfQllfRlJBR1Mgd29ya3MgdGhpcyB3aWxsIGFsc28gZG8gYSBm dWxsCisJICogdmFsaWRhdGlvbiBpbiB0aGF0IGNhc2UuKQorCSAqLworCWlmICh1bmxpa2VseShz a2JfaXNfZ3NvKHNrYikgJiYKKwkJICAgICAoc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSA+IDkw MDApICYmCisJCSAgICAgIXNrYl9nc29fdmFsaWRhdGVfbWFjX2xlbihza2IsIDk3MDApKSkKKwkJ ZmVhdHVyZXMgJj0gfk5FVElGX0ZfR1NPX01BU0s7CisKIAlmZWF0dXJlcyA9IHZsYW5fZmVhdHVy ZXNfY2hlY2soc2tiLCBmZWF0dXJlcyk7CiAJcmV0dXJuIHZ4bGFuX2ZlYXR1cmVzX2NoZWNrKHNr YiwgZmVhdHVyZXMpOwogfQotLSAKQmVuIEh1dGNoaW5ncywgU29mdHdhcmUgRGV2ZWxvcGVyICAg ICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayBMdGQKaHR0cHM6Ly93d3cuY29kZXRoaW5r LmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwgMzUgRGFsZSBTdHJlZXQKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmNoZXN0ZXIsIE0xIDJIRiwgVW5pdGVk IEtpbmdkb20KCgpGcm9tIGM3ZjQ2YmQ1NDZhOTJmNmQ3ZjI2M2I1YjZjNzVlOTRiNjI0NWE1ZGIg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEhhbnRlIE1ldWxlbWFuIDxtZXVsZW1hbkBi cm9hZGNvbS5jb20+CkRhdGU6IFdlZCwgMTcgRmViIDIwMTYgMTE6MjY6NTQgKzAxMDAKU3ViamVj dDogW1BBVENIIDA1LzEyXSBicmNtZm1hYzogQWRkIGxlbmd0aCBjaGVja3Mgb24gZmlybXdhcmUg ZXZlbnRzCgpjb21taXQgMGFlZGJjYWY2ZjE4MjY5MDc5MGQ5OGQ5MGQ1ZmUxZTY0Yzg0NmMzNCB1 cHN0cmVhbS4KCkFkZCBhZGRpdGlvbmFsIGxlbmd0aCBjaGVja3Mgb24gZmlybXdhcmUgZXZlbnRz IHRvIGNyZWF0ZSBtb3JlCnJvYnVzdCBjb2RlLgoKUmV2aWV3ZWQtYnk6IEFyZW5kIFZhbiBTcHJp ZWwgPGFyZW5kQGJyb2FkY29tLmNvbT4KUmV2aWV3ZWQtYnk6IEZyYW5reSAoWmhlbmh1aSkgTGlu IDxmcmFua3lsQGJyb2FkY29tLmNvbT4KUmV2aWV3ZWQtYnk6IFBpZXRlci1QYXVsIEdpZXNiZXJ0 cyA8cGlldGVycGdAYnJvYWRjb20uY29tPgpSZXZpZXdlZC1ieTogTGVpIFpoYW5nIDxsZWl6aEBi cm9hZGNvbS5jb20+ClNpZ25lZC1vZmYtYnk6IEhhbnRlIE1ldWxlbWFuIDxtZXVsZW1hbkBicm9h ZGNvbS5jb20+ClNpZ25lZC1vZmYtYnk6IEFyZW5kIHZhbiBTcHJpZWwgPGFyZW5kQGJyb2FkY29t LmNvbT4KU2lnbmVkLW9mZi1ieTogS2FsbGUgVmFsbyA8a3ZhbG9AY29kZWF1cm9yYS5vcmc+Clti d2g6IEJhY2twb3J0ZWQgdG8gNC40OgogLSBEcm9wIGNoYW5nZXMgdG8gYnJjbWZfd293bF9uZF9y ZXN1bHRzKCkKIC0gQWRqdXN0IGZpbGVuYW1lc10KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5n cyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogZHJpdmVycy9uZXQvd2lyZWxl c3MvYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMgfCAgNSArKwogZHJpdmVycy9uZXQvd2ly ZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL2Z3ZWguYyAgICAgfCA1NyArKysrLS0tLS0tLS0tLS0t LS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9md2VoLmggICAgIHwg NjggKysrKysrKysrKysrKysrKystLS0tLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjEx L2JyY21mbWFjL3AycC5jICAgICAgfCAxMCArKysrCiA0IGZpbGVzIGNoYW5nZWQsIDgyIGluc2Vy dGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMKaW5kZXggYWQzNWU3NjBlZDNmLi4yYTc3NTQ5 MDVlMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1h Yy9jZmc4MDIxMS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1h Yy9jZmc4MDIxMS5jCkBAIC0zMzMxLDYgKzMzMzEsMTEgQEAgYnJjbWZfbm90aWZ5X3NjaGVkX3Nj YW5fcmVzdWx0cyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwKIAogCWJyY21mX2RiZyhTQ0FOLCAiRW50 ZXJcbiIpOwogCisJaWYgKGUtPmRhdGFsZW4gPCAoc2l6ZW9mKCpwZm5fcmVzdWx0KSArIHNpemVv ZigqbmV0aW5mbykpKSB7CisJCWJyY21mX2RiZyhTQ0FOLCAiRXZlbnQgZGF0YSB0byBzbWFsbC4g SWdub3JlXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCiAJaWYgKGUtPmV2ZW50X2NvZGUgPT0gQlJD TUZfRV9QRk5fTkVUX0xPU1QpIHsKIAkJYnJjbWZfZGJnKFNDQU4sICJQRk4gTkVUIExPU1QgZXZl bnQuIERvIE5vdGhpbmdcbiIpOwogCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9md2VoLmMgYi9kcml2ZXJzL25ldC93aXJlbGVz cy9icmNtODAyMTEvYnJjbWZtYWMvZndlaC5jCmluZGV4IDM4NzhiNmY2Y2ZjZS4uZjlhYTM3MDMy YzJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMv ZndlaC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9md2Vo LmMKQEAgLTI2LDUwICsyNiw2IEBACiAjaW5jbHVkZSAiZndpbC5oIgogCiAvKioKLSAqIHN0cnVj dCBicmNtX2V0aGhkciAtIGJyb2FkY29tIHNwZWNpZmljIGV0aGVyIGhlYWRlci4KLSAqCi0gKiBA c3VidHlwZTogc3VidHlwZSBmb3IgdGhpcyBwYWNrZXQuCi0gKiBAbGVuZ3RoOiBUT0RPOiBsZW5n dGggb2YgYXBwZW5kZWQgZGF0YS4KLSAqIEB2ZXJzaW9uOiB2ZXJzaW9uIGluZGljYXRpb24uCi0g KiBAb3VpOiBPVUkgb2YgdGhpcyBwYWNrZXQuCi0gKiBAdXNyX3N1YnR5cGU6IHN1YnR5cGUgZm9y IHRoaXMgT1VJLgotICovCi1zdHJ1Y3QgYnJjbV9ldGhoZHIgewotCV9fYmUxNiBzdWJ0eXBlOwot CV9fYmUxNiBsZW5ndGg7Ci0JdTggdmVyc2lvbjsKLQl1OCBvdWlbM107Ci0JX19iZTE2IHVzcl9z dWJ0eXBlOwotfSBfX3BhY2tlZDsKLQotc3RydWN0IGJyY21mX2V2ZW50X21zZ19iZSB7Ci0JX19i ZTE2IHZlcnNpb247Ci0JX19iZTE2IGZsYWdzOwotCV9fYmUzMiBldmVudF90eXBlOwotCV9fYmUz MiBzdGF0dXM7Ci0JX19iZTMyIHJlYXNvbjsKLQlfX2JlMzIgYXV0aF90eXBlOwotCV9fYmUzMiBk YXRhbGVuOwotCXU4IGFkZHJbRVRIX0FMRU5dOwotCWNoYXIgaWZuYW1lW0lGTkFNU0laXTsKLQl1 OCBpZmlkeDsKLQl1OCBic3NjZmdpZHg7Ci19IF9fcGFja2VkOwotCi0vKioKLSAqIHN0cnVjdCBi cmNtZl9ldmVudCAtIGNvbnRlbnRzIG9mIGJyb2FkY29tIGV2ZW50IHBhY2tldC4KLSAqCi0gKiBA ZXRoOiBzdGFuZGFyZCBldGhlciBoZWFkZXIuCi0gKiBAaGRyOiBicm9hZGNvbSBzcGVjaWZpYyBl dGhlciBoZWFkZXIuCi0gKiBAbXNnOiBjb21tb24gcGFydCBvZiB0aGUgYWN0dWFsIGV2ZW50IG1l c3NhZ2UuCi0gKi8KLXN0cnVjdCBicmNtZl9ldmVudCB7Ci0Jc3RydWN0IGV0aGhkciBldGg7Ci0J c3RydWN0IGJyY21fZXRoaGRyIGhkcjsKLQlzdHJ1Y3QgYnJjbWZfZXZlbnRfbXNnX2JlIG1zZzsK LX0gX19wYWNrZWQ7Ci0KLS8qKgogICogc3RydWN0IGJyY21mX2Z3ZWhfcXVldWVfaXRlbSAtIGV2 ZW50IGl0ZW0gb24gZXZlbnQgcXVldWUuCiAgKgogICogQHE6IGxpc3QgZWxlbWVudCBmb3IgcXVl dWluZy4KQEAgLTg1LDYgKzQxLDcgQEAgc3RydWN0IGJyY21mX2Z3ZWhfcXVldWVfaXRlbSB7CiAJ dTggaWZpZHg7CiAJdTggaWZhZGRyW0VUSF9BTEVOXTsKIAlzdHJ1Y3QgYnJjbWZfZXZlbnRfbXNn X2JlIGVtc2c7CisJdTMyIGRhdGFsZW47CiAJdTggZGF0YVswXTsKIH07CiAKQEAgLTI5NCw2ICsy NTEsMTEgQEAgc3RhdGljIHZvaWQgYnJjbWZfZndlaF9ldmVudF93b3JrZXIoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQogCQlicmNtZl9kYmdfaGV4X2R1bXAoQlJDTUZfRVZFTlRfT04oKSwgZXZl bnQtPmRhdGEsCiAJCQkJICAgbWluX3QodTMyLCBlbXNnLmRhdGFsZW4sIDY0KSwKIAkJCQkgICAi ZXZlbnQgcGF5bG9hZCwgbGVuPSVkXG4iLCBlbXNnLmRhdGFsZW4pOworCQlpZiAoZW1zZy5kYXRh bGVuID4gZXZlbnQtPmRhdGFsZW4pIHsKKwkJCWJyY21mX2VycigiZXZlbnQgaW52YWxpZCBsZW5n dGggaGVhZGVyPSVkLCBtc2c9JWRcbiIsCisJCQkJICBldmVudC0+ZGF0YWxlbiwgZW1zZy5kYXRh bGVuKTsKKwkJCWdvdG8gZXZlbnRfZnJlZTsKKwkJfQogCiAJCS8qIHNwZWNpYWwgaGFuZGxpbmcg b2YgaW50ZXJmYWNlIGV2ZW50ICovCiAJCWlmIChldmVudC0+Y29kZSA9PSBCUkNNRl9FX0lGKSB7 CkBAIC00MzksNyArNDAxLDggQEAgaW50IGJyY21mX2Z3ZWhfYWN0aXZhdGVfZXZlbnRzKHN0cnVj dCBicmNtZl9pZiAqaWZwKQogICogZGlzcGF0Y2ggdGhlIGV2ZW50IHRvIGEgcmVnaXN0ZXJlZCBo YW5kbGVyICh1c2luZyB3b3JrZXIpLgogICovCiB2b2lkIGJyY21mX2Z3ZWhfcHJvY2Vzc19ldmVu dChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLAotCQkJICAgICAgc3RydWN0IGJyY21mX2V2ZW50ICpl dmVudF9wYWNrZXQpCisJCQkgICAgICBzdHJ1Y3QgYnJjbWZfZXZlbnQgKmV2ZW50X3BhY2tldCwK KwkJCSAgICAgIHUzMiBwYWNrZXRfbGVuKQogewogCWVudW0gYnJjbWZfZndlaF9ldmVudF9jb2Rl IGNvZGU7CiAJc3RydWN0IGJyY21mX2Z3ZWhfaW5mbyAqZndlaCA9ICZkcnZyLT5md2VoOwpAQCAt NDU5LDYgKzQyMiw5IEBAIHZvaWQgYnJjbWZfZndlaF9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNt Zl9wdWIgKmRydnIsCiAJaWYgKGNvZGUgIT0gQlJDTUZfRV9JRiAmJiAhZndlaC0+ZXZ0X2hhbmRs ZXJbY29kZV0pCiAJCXJldHVybjsKIAorCWlmIChkYXRhbGVuID4gQlJDTUZfRENNRF9NQVhMRU4p CisJCXJldHVybjsKKwogCWlmIChpbl9pbnRlcnJ1cHQoKSkKIAkJYWxsb2NfZmxhZyA9IEdGUF9B VE9NSUM7CiAKQEAgLTQ3Miw2ICs0MzgsNyBAQCB2b2lkIGJyY21mX2Z3ZWhfcHJvY2Vzc19ldmVu dChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLAogCS8qIHVzZSBtZW1jcHkgdG8gZ2V0IGFsaWduZWQg ZXZlbnQgbWVzc2FnZSAqLwogCW1lbWNweSgmZXZlbnQtPmVtc2csICZldmVudF9wYWNrZXQtPm1z Zywgc2l6ZW9mKGV2ZW50LT5lbXNnKSk7CiAJbWVtY3B5KGV2ZW50LT5kYXRhLCBkYXRhLCBkYXRh bGVuKTsKKwlldmVudC0+ZGF0YWxlbiA9IGRhdGFsZW47CiAJbWVtY3B5KGV2ZW50LT5pZmFkZHIs IGV2ZW50X3BhY2tldC0+ZXRoLmhfZGVzdCwgRVRIX0FMRU4pOwogCiAJYnJjbWZfZndlaF9xdWV1 ZV9ldmVudChmd2VoLCBldmVudCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9i cmNtODAyMTEvYnJjbWZtYWMvZndlaC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjEx L2JyY21mbWFjL2Z3ZWguaAppbmRleCBkOWE5NDI4NDIzODIuLmQ4NDQ3ODU2YmY1NCAxMDA2NDQK LS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL2Z3ZWguaAorKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvZndlaC5oCkBAIC0yNyw3 ICsyNyw2IEBACiBzdHJ1Y3QgYnJjbWZfcHViOwogc3RydWN0IGJyY21mX2lmOwogc3RydWN0IGJy Y21mX2NmZzgwMjExX2luZm87Ci1zdHJ1Y3QgYnJjbWZfZXZlbnQ7CiAKIC8qIGxpc3Qgb2YgZmly bXdhcmUgZXZlbnRzICovCiAjZGVmaW5lIEJSQ01GX0ZXRUhfRVZFTlRfRU5VTV9ERUZMSVNUIFwK QEAgLTE4MCwxMyArMTc5LDU1IEBAIGVudW0gYnJjbWZfZndlaF9ldmVudF9jb2RlIHsKIC8qKgog ICogZGVmaW5pdGlvbnMgZm9yIGV2ZW50IHBhY2tldCB2YWxpZGF0aW9uLgogICovCi0jZGVmaW5l IEJSQ01GX0VWRU5UX09VSV9PRkZTRVQJCTE5Ci0jZGVmaW5lIEJSQ01fT1VJCQkJIlx4MDBceDEw XHgxOCIKLSNkZWZpbmUgRE9UMTFfT1VJX0xFTgkJCTMKLSNkZWZpbmUgQkNNSUxDUF9CQ01fU1VC VFlQRV9FVkVOVAkxCisjZGVmaW5lIEJSQ01fT1VJCQkJCSJceDAwXHgxMFx4MTgiCisjZGVmaW5l IEJDTUlMQ1BfQkNNX1NVQlRZUEVfRVZFTlQJCTEKIAogCiAvKioKKyAqIHN0cnVjdCBicmNtX2V0 aGhkciAtIGJyb2FkY29tIHNwZWNpZmljIGV0aGVyIGhlYWRlci4KKyAqCisgKiBAc3VidHlwZTog c3VidHlwZSBmb3IgdGhpcyBwYWNrZXQuCisgKiBAbGVuZ3RoOiBUT0RPOiBsZW5ndGggb2YgYXBw ZW5kZWQgZGF0YS4KKyAqIEB2ZXJzaW9uOiB2ZXJzaW9uIGluZGljYXRpb24uCisgKiBAb3VpOiBP VUkgb2YgdGhpcyBwYWNrZXQuCisgKiBAdXNyX3N1YnR5cGU6IHN1YnR5cGUgZm9yIHRoaXMgT1VJ LgorICovCitzdHJ1Y3QgYnJjbV9ldGhoZHIgeworCV9fYmUxNiBzdWJ0eXBlOworCV9fYmUxNiBs ZW5ndGg7CisJdTggdmVyc2lvbjsKKwl1OCBvdWlbM107CisJX19iZTE2IHVzcl9zdWJ0eXBlOwor fSBfX3BhY2tlZDsKKworc3RydWN0IGJyY21mX2V2ZW50X21zZ19iZSB7CisJX19iZTE2IHZlcnNp b247CisJX19iZTE2IGZsYWdzOworCV9fYmUzMiBldmVudF90eXBlOworCV9fYmUzMiBzdGF0dXM7 CisJX19iZTMyIHJlYXNvbjsKKwlfX2JlMzIgYXV0aF90eXBlOworCV9fYmUzMiBkYXRhbGVuOwor CXU4IGFkZHJbRVRIX0FMRU5dOworCWNoYXIgaWZuYW1lW0lGTkFNU0laXTsKKwl1OCBpZmlkeDsK Kwl1OCBic3NjZmdpZHg7Cit9IF9fcGFja2VkOworCisvKioKKyAqIHN0cnVjdCBicmNtZl9ldmVu dCAtIGNvbnRlbnRzIG9mIGJyb2FkY29tIGV2ZW50IHBhY2tldC4KKyAqCisgKiBAZXRoOiBzdGFu ZGFyZCBldGhlciBoZWFkZXIuCisgKiBAaGRyOiBicm9hZGNvbSBzcGVjaWZpYyBldGhlciBoZWFk ZXIuCisgKiBAbXNnOiBjb21tb24gcGFydCBvZiB0aGUgYWN0dWFsIGV2ZW50IG1lc3NhZ2UuCisg Ki8KK3N0cnVjdCBicmNtZl9ldmVudCB7CisJc3RydWN0IGV0aGhkciBldGg7CisJc3RydWN0IGJy Y21fZXRoaGRyIGhkcjsKKwlzdHJ1Y3QgYnJjbWZfZXZlbnRfbXNnX2JlIG1zZzsKK30gX19wYWNr ZWQ7CisKKy8qKgogICogc3RydWN0IGJyY21mX2V2ZW50X21zZyAtIGZpcm13YXJlIGV2ZW50IG1l c3NhZ2UuCiAgKgogICogQHZlcnNpb246IHZlcnNpb24gaW5mb3JtYXRpb24uCkBAIC0yNTYsMzQg KzI5NywzNSBAQCB2b2lkIGJyY21mX2Z3ZWhfdW5yZWdpc3RlcihzdHJ1Y3QgYnJjbWZfcHViICpk cnZyLAogCQkJICAgZW51bSBicmNtZl9md2VoX2V2ZW50X2NvZGUgY29kZSk7CiBpbnQgYnJjbWZf ZndlaF9hY3RpdmF0ZV9ldmVudHMoc3RydWN0IGJyY21mX2lmICppZnApOwogdm9pZCBicmNtZl9m d2VoX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwKLQkJCSAgICAgIHN0cnVj dCBicmNtZl9ldmVudCAqZXZlbnRfcGFja2V0KTsKKwkJCSAgICAgIHN0cnVjdCBicmNtZl9ldmVu dCAqZXZlbnRfcGFja2V0LAorCQkJICAgICAgdTMyIHBhY2tldF9sZW4pOwogdm9pZCBicmNtZl9m d2VoX3AycGRldl9zZXR1cChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgYm9vbCBvbmdvaW5nKTsKIAog c3RhdGljIGlubGluZSB2b2lkIGJyY21mX2Z3ZWhfcHJvY2Vzc19za2Ioc3RydWN0IGJyY21mX3B1 YiAqZHJ2ciwKIAkJCQkJICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewogCXN0cnVjdCBicmNtZl9l dmVudCAqZXZlbnRfcGFja2V0OwotCXU4ICpkYXRhOwogCXUxNiB1c3Jfc3R5cGU7CiAKIAkvKiBv bmx5IHByb2Nlc3MgZXZlbnRzIHdoZW4gcHJvdG9jb2wgbWF0Y2hlcyAqLwogCWlmIChza2ItPnBy b3RvY29sICE9IGNwdV90b19iZTE2KEVUSF9QX0xJTktfQ1RMKSkKIAkJcmV0dXJuOwogCisJaWYg KChza2ItPmxlbiArIEVUSF9ITEVOKSA8IHNpemVvZigqZXZlbnRfcGFja2V0KSkKKwkJcmV0dXJu OworCiAJLyogY2hlY2sgZm9yIEJSQ00gb3VpIG1hdGNoICovCiAJZXZlbnRfcGFja2V0ID0gKHN0 cnVjdCBicmNtZl9ldmVudCAqKXNrYl9tYWNfaGVhZGVyKHNrYik7Ci0JZGF0YSA9ICh1OCAqKWV2 ZW50X3BhY2tldDsKLQlkYXRhICs9IEJSQ01GX0VWRU5UX09VSV9PRkZTRVQ7Ci0JaWYgKG1lbWNt cChCUkNNX09VSSwgZGF0YSwgRE9UMTFfT1VJX0xFTikpCisJaWYgKG1lbWNtcChCUkNNX09VSSwg JmV2ZW50X3BhY2tldC0+aGRyLm91aVswXSwKKwkJICAgc2l6ZW9mKGV2ZW50X3BhY2tldC0+aGRy Lm91aSkpKQogCQlyZXR1cm47CiAKIAkvKiBmaW5hbCBtYXRjaCBvbiB1c3Jfc3VidHlwZSAqLwot CWRhdGEgKz0gRE9UMTFfT1VJX0xFTjsKLQl1c3Jfc3R5cGUgPSBnZXRfdW5hbGlnbmVkX2JlMTYo ZGF0YSk7CisJdXNyX3N0eXBlID0gZ2V0X3VuYWxpZ25lZF9iZTE2KCZldmVudF9wYWNrZXQtPmhk ci51c3Jfc3VidHlwZSk7CiAJaWYgKHVzcl9zdHlwZSAhPSBCQ01JTENQX0JDTV9TVUJUWVBFX0VW RU5UKQogCQlyZXR1cm47CiAKLQlicmNtZl9md2VoX3Byb2Nlc3NfZXZlbnQoZHJ2ciwgZXZlbnRf cGFja2V0KTsKKwlicmNtZl9md2VoX3Byb2Nlc3NfZXZlbnQoZHJ2ciwgZXZlbnRfcGFja2V0LCBz a2ItPmxlbiArIEVUSF9ITEVOKTsKIH0KIAogI2VuZGlmIC8qIEZXRUhfSF8gKi8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYwppbmRleCAzMTk2MjQ1YWI4 MjAuLmU2YzhiMGQ1YWZlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgw MjExL2JyY21mbWFjL3AycC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9i cmNtZm1hYy9wMnAuYwpAQCAtMTM2NSw2ICsxMzY1LDExIEBAIGludCBicmNtZl9wMnBfbm90aWZ5 X2FjdGlvbl9mcmFtZV9yeChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwKIAl1MTYgbWdtdF90eXBlOwog CXU4IGFjdGlvbjsKIAorCWlmIChlLT5kYXRhbGVuIDwgc2l6ZW9mKCpyeGZyYW1lKSkgeworCQli cmNtZl9kYmcoU0NBTiwgIkV2ZW50IGRhdGEgdG8gc21hbGwuIElnbm9yZVxuIik7CisJCXJldHVy biAwOworCX0KKwogCWNoLmNoc3BlYyA9IGJlMTZfdG9fY3B1KHJ4ZnJhbWUtPmNoYW5zcGVjKTsK IAljZmctPmQxMWluZi5kZWNjaHNwZWMoJmNoKTsKIAkvKiBDaGVjayBpZiB3cGFfc3VwcGxpY2Fu dCBoYXMgcmVnaXN0ZXJlZCBmb3IgdGhpcyBmcmFtZSAqLwpAQCAtMTg2Miw2ICsxODY3LDExIEBA IHMzMiBicmNtZl9wMnBfbm90aWZ5X3J4X21nbXRfcDJwX3Byb2JlcmVxKHN0cnVjdCBicmNtZl9p ZiAqaWZwLAogCWJyY21mX2RiZyhJTkZPLCAiRW50ZXI6IGV2ZW50ICVkIHJlYXNvbiAlZFxuIiwg ZS0+ZXZlbnRfY29kZSwKIAkJICBlLT5yZWFzb24pOwogCisJaWYgKGUtPmRhdGFsZW4gPCBzaXpl b2YoKnJ4ZnJhbWUpKSB7CisJCWJyY21mX2RiZyhTQ0FOLCAiRXZlbnQgZGF0YSB0byBzbWFsbC4g SWdub3JlXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCiAJY2guY2hzcGVjID0gYmUxNl90b19jcHUo cnhmcmFtZS0+Y2hhbnNwZWMpOwogCWNmZy0+ZDExaW5mLmRlY2Noc3BlYygmY2gpOwogCi0tIApC ZW4gSHV0Y2hpbmdzLCBTb2Z0d2FyZSBEZXZlbG9wZXIgICAgICAgICAgICAgICAgICAgICAgICAg Q29kZXRoaW5rIEx0ZApodHRwczovL3d3dy5jb2RldGhpbmsuY28udWsvICAgICAgICAgICAgICAg ICBEYWxlIEhvdXNlLCAzNSBEYWxlIFN0cmVldAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTWFuY2hlc3RlciwgTTEgMkhGLCBVbml0ZWQgS2luZ2RvbQoKCkZyb20gM2MyZmFi MjU2NzUyZjgxYTRlZTY3NjVkYTJmYjVmZmQzMjc4ODQ4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogRnJhbmt5IExpbiA8ZnJhbmt5LmxpbkBicm9hZGNvbS5jb20+CkRhdGU6IE1vbiwg MTEgQXByIDIwMTYgMTE6MzU6MjUgKzAyMDAKU3ViamVjdDogW1BBVENIIDA2LzEyXSBicmNtZm1h Yzogc2NyZWVuaW5nIGZpcm13YXJlIGV2ZW50IHBhY2tldAoKY29tbWl0IGM1NmNhYTlkYjhhYmJi ZmI5ZTMxMzI1ZTA4OTc3MDVhYTg5N2RiMzcgdXBzdHJlYW0uCgpGaXJtd2FyZSB1c2VzIGFzeW5j aHJvbml6ZWQgZXZlbnRzIGFzIGEgY29tbXVuaWNhdGlvbiBtZXRob2QgdG8gdGhlCmhvc3QuIFRo ZSBldmVudCBwYWNrZXRzIGFyZSBtYXJrZWQgYXMgRVRIX1BfTElOS19DVEwgcHJvdG9jb2wgdHlw ZS4gRm9yClNESU8gYW5kIFBDSWUgYnVzLCB0aGlzIGtpbmQgb2YgcGFja2V0cyBhcmUgZGVsaXZl cmVkIHRocm91Z2ggdmlydHVhbApldmVudCBjaGFubmVsIG5vdCBkYXRhIGNoYW5uZWwuIFRoaXMg cGF0Y2ggYWRkcyBhIHNjcmVlbmluZyBsb2dpYyB0bwptYWtlIHN1cmUgdGhlIGV2ZW50IGhhbmRs ZXIgb25seSBwcm9jZXNzZXMgdGhlIGV2ZW50cyBjb21pbmcgZnJvbSB0aGUKY29ycmVjdCBjaGFu bmVsLgoKUmV2aWV3ZWQtYnk6IFBpZXRlci1QYXVsIEdpZXNiZXJ0cyA8cGlldGVyLXBhdWwuZ2ll c2JlcnRzQGJyb2FkY29tLmNvbT4KU2lnbmVkLW9mZi1ieTogRnJhbmt5IExpbiA8ZnJhbmt5Lmxp bkBicm9hZGNvbS5jb20+ClNpZ25lZC1vZmYtYnk6IEFyZW5kIHZhbiBTcHJpZWwgPGFyZW5kQGJy b2FkY29tLmNvbT4KU2lnbmVkLW9mZi1ieTogS2FsbGUgVmFsbyA8a3ZhbG9AY29kZWF1cm9yYS5v cmc+Cltid2g6IEJhY2twb3J0ZWQgdG8gNC40IGFkanVzdCBmaWxlbmFtZXNdClNpZ25lZC1vZmYt Ynk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGRy aXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9idXMuaCAgICB8ICA0ICsrLQog ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYyAgIHwgNDYgKysr KysrKysrKysrKysrKysrLS0tLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJj bWZtYWMvY29yZS5oICAgfCAgMyArLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2Jy Y21mbWFjL21zZ2J1Zi5jIHwgNDIgKysrKysrKysrKysrLS0tLS0tLS0tLQogZHJpdmVycy9uZXQv d2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYyAgIHwgMzIgKysrKysrKysrKysrLS0t LS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy91c2IuYyAgICB8ICAy ICstCiA2IGZpbGVzIGNoYW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9idXMu aCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9idXMuaAppbmRleCAy MzBjYWQ3ODhhY2UuLmZhZmJiMjQzY2QxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jy Y204MDIxMS9icmNtZm1hYy9idXMuaApAQCAtMjE0LDcgKzIxNCw5IEBAIGJvb2wgYnJjbWZfY19w cmVjX2VucShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwa3RxICpxLCBzdHJ1Y3Qgc2tfYnVm ZiAqcGt0LAogCQkgICAgICBpbnQgcHJlYyk7CiAKIC8qIFJlY2VpdmUgZnJhbWUgZm9yIGRlbGl2 ZXJ5IHRvIE9TLiAgQ2FsbGVlIGRpc3Bvc2VzIG9mIHJ4cC4gKi8KLXZvaWQgYnJjbWZfcnhfZnJh bWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqcnhwKTsKK3ZvaWQgYnJjbWZf cnhfZnJhbWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqcnhwLCBib29sIGhh bmRsZV9ldm50KTsKKy8qIFJlY2VpdmUgYXN5bmMgZXZlbnQgcGFja2V0IGZyb20gZmlybXdhcmUu IENhbGxlZSBkaXNwb3NlcyBvZiByeHAuICovCit2b2lkIGJyY21mX3J4X2V2ZW50KHN0cnVjdCBk ZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnJ4cCk7CiAKIC8qIEluZGljYXRpb24gZnJvbSBi dXMgbW9kdWxlIHJlZ2FyZGluZyBwcmVzZW5jZS9pbnNlcnRpb24gb2YgZG9uZ2xlLiAqLwogaW50 IGJyY21mX2F0dGFjaChzdHJ1Y3QgZGV2aWNlICpkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmMKaW5kZXggODI3NTNlN2M3ZTdjLi5mYjA3ZWQz ODE1ODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1h Yy9jb3JlLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL2Nv cmUuYwpAQCAtMzAxLDE2ICszMDEsMTcgQEAgdm9pZCBicmNtZl90eGZsb3dibG9jayhzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGJvb2wgc3RhdGUpCiAJYnJjbWZfZndzX2J1c19ibG9ja2VkKGRydnIsIHN0 YXRlKTsKIH0KIAotdm9pZCBicmNtZl9uZXRpZl9yeChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3Ry dWN0IHNrX2J1ZmYgKnNrYikKK3ZvaWQgYnJjbWZfbmV0aWZfcngoc3RydWN0IGJyY21mX2lmICpp ZnAsIHN0cnVjdCBza19idWZmICpza2IsCisJCSAgICBib29sIGhhbmRsZV9ldmVudCkKIHsKLQlz a2ItPmRldiA9IGlmcC0+bmRldjsKLQlza2ItPnByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMoc2ti LCBza2ItPmRldik7CisJc2tiLT5wcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgaWZwLT5u ZGV2KTsKIAogCWlmIChza2ItPnBrdF90eXBlID09IFBBQ0tFVF9NVUxUSUNBU1QpCiAJCWlmcC0+ c3RhdHMubXVsdGljYXN0Kys7CiAKIAkvKiBQcm9jZXNzIHNwZWNpYWwgZXZlbnQgcGFja2V0cyAq LwotCWJyY21mX2Z3ZWhfcHJvY2Vzc19za2IoaWZwLT5kcnZyLCBza2IpOworCWlmIChoYW5kbGVf ZXZlbnQpCisJCWJyY21mX2Z3ZWhfcHJvY2Vzc19za2IoaWZwLT5kcnZyLCBza2IpOwogCiAJaWYg KCEoaWZwLT5uZGV2LT5mbGFncyAmIElGRl9VUCkpIHsKIAkJYnJjbXVfcGt0X2J1Zl9mcmVlX3Nr Yihza2IpOwpAQCAtMzcxLDcgKzM3Miw3IEBAIHN0YXRpYyB2b2lkIGJyY21mX3J4cmVvcmRlcl9w cm9jZXNzX2luZm8oc3RydWN0IGJyY21mX2lmICppZnAsIHU4ICpyZW9yZGVyX2RhdGEsCiAJLyog dmFsaWRhdGUgZmxhZ3MgYW5kIGZsb3cgaWQgKi8KIAlpZiAoZmxhZ3MgPT0gMHhGRikgewogCQli cmNtZl9lcnIoImludmFsaWQgZmxhZ3MuLi5zbyBpZ25vcmUgdGhpcyBwYWNrZXRcbiIpOwotCQli cmNtZl9uZXRpZl9yeChpZnAsIHBrdCk7CisJCWJyY21mX25ldGlmX3J4KGlmcCwgcGt0LCBmYWxz ZSk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTM4Myw3ICszODQsNyBAQCBzdGF0aWMgdm9pZCBicmNt Zl9yeHJlb3JkZXJfcHJvY2Vzc19pbmZvKHN0cnVjdCBicmNtZl9pZiAqaWZwLCB1OCAqcmVvcmRl cl9kYXRhLAogCQlpZiAocmZpID09IE5VTEwpIHsKIAkJCWJyY21mX2RiZyhJTkZPLCAicmVjZWl2 ZWQgZmxhZ3MgdG8gY2xlYW51cCwgYnV0IG5vIGZsb3cgKCVkKSB5ZXRcbiIsCiAJCQkJICBmbG93 X2lkKTsKLQkJCWJyY21mX25ldGlmX3J4KGlmcCwgcGt0KTsKKwkJCWJyY21mX25ldGlmX3J4KGlm cCwgcGt0LCBmYWxzZSk7CiAJCQlyZXR1cm47CiAJCX0KIApAQCAtNDA4LDcgKzQwOSw3IEBAIHN0 YXRpYyB2b2lkIGJyY21mX3J4cmVvcmRlcl9wcm9jZXNzX2luZm8oc3RydWN0IGJyY21mX2lmICpp ZnAsIHU4ICpyZW9yZGVyX2RhdGEsCiAJCXJmaSA9IGt6YWxsb2MoYnVmX3NpemUsIEdGUF9BVE9N SUMpOwogCQlpZiAocmZpID09IE5VTEwpIHsKIAkJCWJyY21mX2VycigiZmFpbGVkIHRvIGFsbG9j IGJ1ZmZlclxuIik7Ci0JCQlicmNtZl9uZXRpZl9yeChpZnAsIHBrdCk7CisJCQlicmNtZl9uZXRp Zl9yeChpZnAsIHBrdCwgZmFsc2UpOwogCQkJcmV0dXJuOwogCQl9CiAKQEAgLTUyMiwxMSArNTIz LDExIEBAIHN0YXRpYyB2b2lkIGJyY21mX3J4cmVvcmRlcl9wcm9jZXNzX2luZm8oc3RydWN0IGJy Y21mX2lmICppZnAsIHU4ICpyZW9yZGVyX2RhdGEsCiBuZXRpZl9yeDoKIAlza2JfcXVldWVfd2Fs a19zYWZlKCZyZW9yZGVyX2xpc3QsIHBrdCwgcG5leHQpIHsKIAkJX19za2JfdW5saW5rKHBrdCwg JnJlb3JkZXJfbGlzdCk7Ci0JCWJyY21mX25ldGlmX3J4KGlmcCwgcGt0KTsKKwkJYnJjbWZfbmV0 aWZfcngoaWZwLCBwa3QsIGZhbHNlKTsKIAl9CiB9CiAKLXZvaWQgYnJjbWZfcnhfZnJhbWUoc3Ry dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQordm9pZCBicmNtZl9yeF9mcmFt ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgaGFuZGxlX2V2 bnQpCiB7CiAJc3RydWN0IGJyY21mX2lmICppZnA7CiAJc3RydWN0IGJyY21mX2J1cyAqYnVzX2lm ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CkBAIC01NTAsNyArNTUxLDMyIEBAIHZvaWQgYnJjbWZf cnhfZnJhbWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmIChy ZC0+cmVvcmRlcikKIAkJYnJjbWZfcnhyZW9yZGVyX3Byb2Nlc3NfaW5mbyhpZnAsIHJkLT5yZW9y ZGVyLCBza2IpOwogCWVsc2UKLQkJYnJjbWZfbmV0aWZfcngoaWZwLCBza2IpOworCQlicmNtZl9u ZXRpZl9yeChpZnAsIHNrYiwgaGFuZGxlX2V2bnQpOworfQorCit2b2lkIGJyY21mX3J4X2V2ZW50 KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKK3sKKwlzdHJ1Y3QgYnJj bWZfaWYgKmlmcDsKKwlzdHJ1Y3QgYnJjbWZfYnVzICpidXNfaWYgPSBkZXZfZ2V0X2RydmRhdGEo ZGV2KTsKKwlzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gYnVzX2lmLT5kcnZyOworCWludCByZXQ7 CisKKwlicmNtZl9kYmcoRVZFTlQsICJFbnRlcjogJXM6IHJ4cD0lcFxuIiwgZGV2X25hbWUoZGV2 KSwgc2tiKTsKKworCS8qIHByb2Nlc3MgYW5kIHJlbW92ZSBwcm90b2NvbC1zcGVjaWZpYyBoZWFk ZXIgKi8KKwlyZXQgPSBicmNtZl9wcm90b19oZHJwdWxsKGRydnIsIHRydWUsIHNrYiwgJmlmcCk7 CisKKwlpZiAocmV0IHx8ICFpZnAgfHwgIWlmcC0+bmRldikgeworCQlpZiAocmV0ICE9IC1FTk9E QVRBICYmIGlmcCkKKwkJCWlmcC0+c3RhdHMucnhfZXJyb3JzKys7CisJCWJyY211X3BrdF9idWZf ZnJlZV9za2Ioc2tiKTsKKwkJcmV0dXJuOworCX0KKworCXNrYi0+cHJvdG9jb2wgPSBldGhfdHlw ZV90cmFucyhza2IsIGlmcC0+bmRldik7CisKKwlicmNtZl9md2VoX3Byb2Nlc3Nfc2tiKGlmcC0+ ZHJ2ciwgc2tiKTsKKwlicmNtdV9wa3RfYnVmX2ZyZWVfc2tiKHNrYik7CiB9CiAKIHZvaWQgYnJj bWZfdHhmaW5hbGl6ZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3RydWN0IHNrX2J1ZmYgKnR4cCwg Ym9vbCBzdWNjZXNzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjEx L2JyY21mbWFjL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1h Yy9jb3JlLmgKaW5kZXggMmY5MTAxYjJhZDM0Li5lNDNkM2U3MjkzMmQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmgKKysrIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL2NvcmUuaApAQCAtMjE1LDcgKzIxNSw4 IEBAIGludCBicmNtZl9nZXRfbmV4dF9mcmVlX2Jzc2NmZ2lkeChzdHJ1Y3QgYnJjbWZfcHViICpk cnZyKTsKIHZvaWQgYnJjbWZfdHhmbG93YmxvY2tfaWYoc3RydWN0IGJyY21mX2lmICppZnAsCiAJ CQkgIGVudW0gYnJjbWZfbmV0aWZfc3RvcF9yZWFzb24gcmVhc29uLCBib29sIHN0YXRlKTsKIHZv aWQgYnJjbWZfdHhmaW5hbGl6ZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgc3RydWN0IHNrX2J1ZmYg KnR4cCwgYm9vbCBzdWNjZXNzKTsKLXZvaWQgYnJjbWZfbmV0aWZfcngoc3RydWN0IGJyY21mX2lm ICppZnAsIHN0cnVjdCBza19idWZmICpza2IpOwordm9pZCBicmNtZl9uZXRpZl9yeChzdHJ1Y3Qg YnJjbWZfaWYgKmlmcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJICAgIGJvb2wgaGFuZGxlX2V2 ZW50KTsKIHZvaWQgYnJjbWZfbmV0X3NldGNhcnJpZXIoc3RydWN0IGJyY21mX2lmICppZnAsIGJv b2wgb24pOwogCiAjZW5kaWYgLyogQlJDTUZNQUNfQ09SRV9IICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMKaW5kZXggNDRlNjE4ZjlkODkw Li5iOTliYTZlMDU5ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIx MS9icmNtZm1hYy9tc2didWYuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEv YnJjbWZtYWMvbXNnYnVmLmMKQEAgLTIwLDYgKzIwLDcgQEAKIAogI2luY2x1ZGUgPGxpbnV4L3R5 cGVzLmg+CiAjaW5jbHVkZSA8bGludXgvbmV0ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXRo ZXJkZXZpY2UuaD4KIAogI2luY2x1ZGUgPGJyY211X3V0aWxzLmg+CiAjaW5jbHVkZSA8YnJjbXVf d2lmaS5oPgpAQCAtMTA3NiwyOCArMTA3NywxMyBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZf cnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpCiB9CiAKIAotc3Rh dGljIHZvaWQKLWJyY21mX21zZ2J1Zl9yeF9za2Ioc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVm LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAotCQkgICAgdTggaWZpZHgpCi17Ci0Jc3RydWN0IGJyY21m X2lmICppZnA7Ci0KLQlpZnAgPSBicmNtZl9nZXRfaWZwKG1zZ2J1Zi0+ZHJ2ciwgaWZpZHgpOwot CWlmICghaWZwIHx8ICFpZnAtPm5kZXYpIHsKLQkJYnJjbWZfZXJyKCJSZWNlaXZlZCBwa3QgZm9y IGludmFsaWQgaWZpZHggJWRcbiIsIGlmaWR4KTsKLQkJYnJjbXVfcGt0X2J1Zl9mcmVlX3NrYihz a2IpOwotCQlyZXR1cm47Ci0JfQotCWJyY21mX25ldGlmX3J4KGlmcCwgc2tiKTsKLX0KLQotCiBz dGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19ldmVudChzdHJ1Y3QgYnJjbWZfbXNnYnVm ICptc2didWYsIHZvaWQgKmJ1ZikKIHsKIAlzdHJ1Y3QgbXNnYnVmX3J4X2V2ZW50ICpldmVudDsK IAl1MzIgaWR4OwogCXUxNiBidWZsZW47CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKwlzdHJ1Y3Qg YnJjbWZfaWYgKmlmcDsKIAogCWV2ZW50ID0gKHN0cnVjdCBtc2didWZfcnhfZXZlbnQgKilidWY7 CiAJaWR4ID0gbGUzMl90b19jcHUoZXZlbnQtPm1zZy5yZXF1ZXN0X2lkKTsKQEAgLTExMTcsNyAr MTEwMywxOSBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19ldmVudChzdHJ1Y3Qg YnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIAogCXNrYl90cmltKHNrYiwgYnVmbGVu KTsKIAotCWJyY21mX21zZ2J1Zl9yeF9za2IobXNnYnVmLCBza2IsIGV2ZW50LT5tc2cuaWZpZHgp OworCWlmcCA9IGJyY21mX2dldF9pZnAobXNnYnVmLT5kcnZyLCBldmVudC0+bXNnLmlmaWR4KTsK KwlpZiAoIWlmcCB8fCAhaWZwLT5uZGV2KSB7CisJCWJyY21mX2VycigiUmVjZWl2ZWQgcGt0IGZv ciBpbnZhbGlkIGlmaWR4ICVkXG4iLAorCQkJICBldmVudC0+bXNnLmlmaWR4KTsKKwkJZ290byBl eGl0OworCX0KKworCXNrYi0+cHJvdG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGlmcC0+bmRl dik7CisKKwlicmNtZl9md2VoX3Byb2Nlc3Nfc2tiKGlmcC0+ZHJ2ciwgc2tiKTsKKworZXhpdDoK KwlicmNtdV9wa3RfYnVmX2ZyZWVfc2tiKHNrYik7CiB9CiAKIApAQCAtMTEyOSw2ICsxMTI3LDcg QEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAq bXNnYnVmLCB2b2lkICpidWYpCiAJdTE2IGRhdGFfb2Zmc2V0OwogCXUxNiBidWZsZW47CiAJdTMy IGlkeDsKKwlzdHJ1Y3QgYnJjbWZfaWYgKmlmcDsKIAogCWJyY21mX21zZ2J1Zl91cGRhdGVfcnhi dWZwb3N0X2NvdW50KG1zZ2J1ZiwgMSk7CiAKQEAgLTExNDksNyArMTE0OCwxNCBAQCBicmNtZl9t c2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZv aWQgKmJ1ZikKIAogCXNrYl90cmltKHNrYiwgYnVmbGVuKTsKIAotCWJyY21mX21zZ2J1Zl9yeF9z a2IobXNnYnVmLCBza2IsIHJ4X2NvbXBsZXRlLT5tc2cuaWZpZHgpOworCWlmcCA9IGJyY21mX2dl dF9pZnAobXNnYnVmLT5kcnZyLCByeF9jb21wbGV0ZS0+bXNnLmlmaWR4KTsKKwlpZiAoIWlmcCB8 fCAhaWZwLT5uZGV2KSB7CisJCWJyY21mX2VycigiUmVjZWl2ZWQgcGt0IGZvciBpbnZhbGlkIGlm aWR4ICVkXG4iLAorCQkJICByeF9jb21wbGV0ZS0+bXNnLmlmaWR4KTsKKwkJYnJjbXVfcGt0X2J1 Zl9mcmVlX3NrYihza2IpOworCQlyZXR1cm47CisJfQorCWJyY21mX25ldGlmX3J4KGlmcCwgc2ti LCBmYWxzZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgw MjExL2JyY21mbWFjL3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNt Zm1hYy9zZGlvLmMKaW5kZXggMzVmNjJiMDBmMWRmLi43ODkwNDRlYTZjOGQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmMKKysrIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYwpAQCAtMTM5NCw2ICsx Mzk0LDE3IEBAIHN0YXRpYyBpbmxpbmUgdTggYnJjbWZfc2Rpb19nZXRkYXRvZmZzZXQodTggKnN3 aGVhZGVyKQogCXJldHVybiAodTgpKChoZHJ2YWx1ZSAmIFNEUENNX0RPRkZTRVRfTUFTSykgPj4g U0RQQ01fRE9GRlNFVF9TSElGVCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBicmNtZl9zZGlv X2Zyb21ldm50Y2hhbih1OCAqc3doZWFkZXIpCit7CisJdTMyIGhkcnZhbHVlOworCXU4IHJldDsK KworCWhkcnZhbHVlID0gKih1MzIgKilzd2hlYWRlcjsKKwlyZXQgPSAodTgpKChoZHJ2YWx1ZSAm IFNEUENNX0NIQU5ORUxfTUFTSykgPj4gU0RQQ01fQ0hBTk5FTF9TSElGVCk7CisKKwlyZXR1cm4g KHJldCA9PSBTRFBDTV9FVkVOVF9DSEFOTkVMKTsKK30KKwogc3RhdGljIGludCBicmNtZl9zZGlv X2hkcGFyc2Uoc3RydWN0IGJyY21mX3NkaW8gKmJ1cywgdTggKmhlYWRlciwKIAkJCSAgICAgIHN0 cnVjdCBicmNtZl9zZGlvX2hkcmluZm8gKnJkLAogCQkJICAgICAgZW51bSBicmNtZl9zZGlvX2Zy bXR5cGUgdHlwZSkKQEAgLTE3NTQsNyArMTc2NSwxMSBAQCBzdGF0aWMgdTggYnJjbWZfc2Rpb19y eGdsb20oc3RydWN0IGJyY21mX3NkaW8gKmJ1cywgdTggcnhzZXEpCiAJCQkJCSAgIHBmaXJzdC0+ bGVuLCBwZmlyc3QtPm5leHQsCiAJCQkJCSAgIHBmaXJzdC0+cHJldik7CiAJCQlza2JfdW5saW5r KHBmaXJzdCwgJmJ1cy0+Z2xvbSk7Ci0JCQlicmNtZl9yeF9mcmFtZShidXMtPnNkaW9kZXYtPmRl diwgcGZpcnN0KTsKKwkJCWlmIChicmNtZl9zZGlvX2Zyb21ldm50Y2hhbihwZmlyc3QtPmRhdGEp KQorCQkJCWJyY21mX3J4X2V2ZW50KGJ1cy0+c2Rpb2Rldi0+ZGV2LCBwZmlyc3QpOworCQkJZWxz ZQorCQkJCWJyY21mX3J4X2ZyYW1lKGJ1cy0+c2Rpb2Rldi0+ZGV2LCBwZmlyc3QsCisJCQkJCSAg ICAgICBmYWxzZSk7CiAJCQlidXMtPnNkY250LnJ4Z2xvbXBrdHMrKzsKIAkJfQogCkBAIC0yMDgx LDE4ICsyMDk2LDE5IEBAIHN0YXRpYyB1aW50IGJyY21mX3NkaW9fcmVhZGZyYW1lcyhzdHJ1Y3Qg YnJjbWZfc2RpbyAqYnVzLCB1aW50IG1heGZyYW1lcykKIAkJX19za2JfdHJpbShwa3QsIHJkLT5s ZW4pOwogCQlza2JfcHVsbChwa3QsIHJkLT5kYXRfb2Zmc2V0KTsKIAorCQlpZiAocGt0LT5sZW4g PT0gMCkKKwkJCWJyY211X3BrdF9idWZfZnJlZV9za2IocGt0KTsKKwkJZWxzZSBpZiAocmQtPmNo YW5uZWwgPT0gU0RQQ01fRVZFTlRfQ0hBTk5FTCkKKwkJCWJyY21mX3J4X2V2ZW50KGJ1cy0+c2Rp b2Rldi0+ZGV2LCBwa3QpOworCQllbHNlCisJCQlicmNtZl9yeF9mcmFtZShidXMtPnNkaW9kZXYt PmRldiwgcGt0LAorCQkJCSAgICAgICBmYWxzZSk7CisKIAkJLyogcHJlcGFyZSB0aGUgZGVzY3Jp cHRvciBmb3IgdGhlIG5leHQgcmVhZCAqLwogCQlyZC0+bGVuID0gcmQtPmxlbl9ueHRmcm0gPDwg NDsKIAkJcmQtPmxlbl9ueHRmcm0gPSAwOwogCQkvKiB0cmVhdCBhbGwgcGFja2V0IGFzIGV2ZW50 IGlmIHdlIGRvbid0IGtub3cgKi8KIAkJcmQtPmNoYW5uZWwgPSBTRFBDTV9FVkVOVF9DSEFOTkVM OwotCi0JCWlmIChwa3QtPmxlbiA9PSAwKSB7Ci0JCQlicmNtdV9wa3RfYnVmX2ZyZWVfc2tiKHBr dCk7Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCWJyY21mX3J4X2ZyYW1lKGJ1cy0+c2Rpb2Rldi0+ ZGV2LCBwa3QpOwogCX0KIAogCXJ4Y291bnQgPSBtYXhmcmFtZXMgLSByeGxlZnQ7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMgYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMKaW5kZXggNjg5ZTY0ZDAw NGJjLi5kNDdjOTBhZjE1OTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204 MDIxMS9icmNtZm1hYy91c2IuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEv YnJjbWZtYWMvdXNiLmMKQEAgLTUwMiw3ICs1MDIsNyBAQCBzdGF0aWMgdm9pZCBicmNtZl91c2Jf cnhfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKQogCiAJaWYgKGRldmluZm8tPmJ1c19wdWIuc3Rh dGUgPT0gQlJDTUZNQUNfVVNCX1NUQVRFX1VQKSB7CiAJCXNrYl9wdXQoc2tiLCB1cmItPmFjdHVh bF9sZW5ndGgpOwotCQlicmNtZl9yeF9mcmFtZShkZXZpbmZvLT5kZXYsIHNrYik7CisJCWJyY21m X3J4X2ZyYW1lKGRldmluZm8tPmRldiwgc2tiLCB0cnVlKTsKIAkJYnJjbWZfdXNiX3J4X3JlZmls bChkZXZpbmZvLCByZXEpOwogCX0gZWxzZSB7CiAJCWJyY211X3BrdF9idWZfZnJlZV9za2Ioc2ti KTsKLS0gCkJlbiBIdXRjaGluZ3MsIFNvZnR3YXJlIERldmVsb3BlciAgICAgICAgICAgICAgICAg ICAgICAgICBDb2RldGhpbmsgTHRkCmh0dHBzOi8vd3d3LmNvZGV0aGluay5jby51ay8gICAgICAg ICAgICAgICAgIERhbGUgSG91c2UsIDM1IERhbGUgU3RyZWV0CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNYW5jaGVzdGVyLCBNMSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJv bSBmMTVmYTM4MTdjNzBkZWJjZTdkYTk1NTdmMWFhMTJhZWExMDM3Y2FiIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBBcmVuZCB2YW4gU3ByaWVsIDxhcmVuZEBicm9hZGNvbS5jb20+CkRh dGU6IE1vbiwgMTEgQXByIDIwMTYgMTE6MzU6MjcgKzAyMDAKU3ViamVjdDogW1BBVENIIDA3LzEy XSBicmNtZm1hYzogcmV2aXNlIGhhbmRsaW5nIGV2ZW50cyBpbiByZWNlaXZlIHBhdGgKCmNvbW1p dCA5YzM0OTg5MmNjYzkwYzZkZTJiYWFhNjljYzc4NDQ5ZjU4MDgyMjczIHVwc3RyZWFtLgoKTW92 ZSBldmVudCBoYW5kbGluZyBvdXQgb2YgYnJjbWZfbmV0aWZfcngoKSBhdm9pZGluZyB0aGUgbmVl ZAp0byBwYXNzIGEgZmxhZy4gVGhpcyBmbGFnIGlzIG9ubHkgZXZlciB0cnVlIGZvciBVU0IgaG9z dHMgYXMKb3RoZXIgaW50ZXJmYWNlIHVzZSBzZXBhcmF0ZSBicmNtZl9yeF9ldmVudCgpIGZ1bmN0 aW9uLgoKUmV2aWV3ZWQtYnk6IEhhbnRlIE1ldWxlbWFuIDxoYW50ZS5tZXVsZW1hbkBicm9hZGNv bS5jb20+ClJldmlld2VkLWJ5OiBQaWV0ZXItUGF1bCBHaWVzYmVydHMgPHBpZXRlci1wYXVsLmdp ZXNiZXJ0c0Bicm9hZGNvbS5jb20+ClJldmlld2VkLWJ5OiBGcmFua3kgTGluIDxmcmFua3kubGlu QGJyb2FkY29tLmNvbT4KU2lnbmVkLW9mZi1ieTogQXJlbmQgdmFuIFNwcmllbCA8YXJlbmRAYnJv YWRjb20uY29tPgpTaWduZWQtb2ZmLWJ5OiBLYWxsZSBWYWxvIDxrdmFsb0Bjb2RlYXVyb3JhLm9y Zz4KW2J3aDogQmFja3BvcnRlZCB0byA0LjQgYXMgZGVwZW5kZW5jeSBvZiBjb21taXQgYTQxNzZl YzM1NmM3CiAiYnJjbWZtYWM6IGFkZCBzdWJ0eXBlIGNoZWNrIGZvciBldmVudCBoYW5kbGluZyBp biBkYXRhIHBhdGgiCiAtIEFkanVzdCBmaWxlbmFtZXMsIGNvbnRleHRdClNpZ25lZC1vZmYtYnk6 IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGRyaXZl cnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9idXMuaCAgICB8ICAyICstCiBkcml2 ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jICAgfCAzMiArKysrKysr KysrKystLS0tLS0tLS0tLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1h Yy9jb3JlLmggICB8ICAzICstLQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21m bWFjL21zZ2J1Zi5jIHwgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwg MjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgw MjExL2JyY21mbWFjL2J1cy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21m bWFjL2J1cy5oCmluZGV4IGZhZmJiMjQzY2QxYi4uODRiOGIxZWFhMjJjIDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgKKysrIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oCkBAIC0yMTQsNyArMjE0LDcg QEAgYm9vbCBicmNtZl9jX3ByZWNfZW5xKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHBrdHEg KnEsIHN0cnVjdCBza19idWZmICpwa3QsCiAJCSAgICAgIGludCBwcmVjKTsKIAogLyogUmVjZWl2 ZSBmcmFtZSBmb3IgZGVsaXZlcnkgdG8gT1MuICBDYWxsZWUgZGlzcG9zZXMgb2YgcnhwLiAqLwot dm9pZCBicmNtZl9yeF9mcmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpy eHAsIGJvb2wgaGFuZGxlX2V2bnQpOwordm9pZCBicmNtZl9yeF9mcmFtZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBza19idWZmICpyeHAsIGJvb2wgaGFuZGxlX2V2ZW50KTsKIC8qIFJlY2Vp dmUgYXN5bmMgZXZlbnQgcGFja2V0IGZyb20gZmlybXdhcmUuIENhbGxlZSBkaXNwb3NlcyBvZiBy eHAuICovCiB2b2lkIGJyY21mX3J4X2V2ZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNr X2J1ZmYgKnJ4cCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIx MS9icmNtZm1hYy9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZt YWMvY29yZS5jCmluZGV4IGZiMDdlZDM4MTU4Ny4uZWIzZTJhNjg1N2ZkIDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jCisrKyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmMKQEAgLTMwMSwxOCArMzAx LDExIEBAIHZvaWQgYnJjbWZfdHhmbG93YmxvY2soc3RydWN0IGRldmljZSAqZGV2LCBib29sIHN0 YXRlKQogCWJyY21mX2Z3c19idXNfYmxvY2tlZChkcnZyLCBzdGF0ZSk7CiB9CiAKLXZvaWQgYnJj bWZfbmV0aWZfcngoc3RydWN0IGJyY21mX2lmICppZnAsIHN0cnVjdCBza19idWZmICpza2IsCi0J CSAgICBib29sIGhhbmRsZV9ldmVudCkKK3ZvaWQgYnJjbWZfbmV0aWZfcngoc3RydWN0IGJyY21m X2lmICppZnAsIHN0cnVjdCBza19idWZmICpza2IpCiB7Ci0Jc2tiLT5wcm90b2NvbCA9IGV0aF90 eXBlX3RyYW5zKHNrYiwgaWZwLT5uZGV2KTsKLQogCWlmIChza2ItPnBrdF90eXBlID09IFBBQ0tF VF9NVUxUSUNBU1QpCiAJCWlmcC0+c3RhdHMubXVsdGljYXN0Kys7CiAKLQkvKiBQcm9jZXNzIHNw ZWNpYWwgZXZlbnQgcGFja2V0cyAqLwotCWlmIChoYW5kbGVfZXZlbnQpCi0JCWJyY21mX2Z3ZWhf cHJvY2Vzc19za2IoaWZwLT5kcnZyLCBza2IpOwotCiAJaWYgKCEoaWZwLT5uZGV2LT5mbGFncyAm IElGRl9VUCkpIHsKIAkJYnJjbXVfcGt0X2J1Zl9mcmVlX3NrYihza2IpOwogCQlyZXR1cm47CkBA IC0zNzIsNyArMzY1LDcgQEAgc3RhdGljIHZvaWQgYnJjbWZfcnhyZW9yZGVyX3Byb2Nlc3NfaW5m byhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgdTggKnJlb3JkZXJfZGF0YSwKIAkvKiB2YWxpZGF0ZSBm bGFncyBhbmQgZmxvdyBpZCAqLwogCWlmIChmbGFncyA9PSAweEZGKSB7CiAJCWJyY21mX2Vycigi aW52YWxpZCBmbGFncy4uLnNvIGlnbm9yZSB0aGlzIHBhY2tldFxuIik7Ci0JCWJyY21mX25ldGlm X3J4KGlmcCwgcGt0LCBmYWxzZSk7CisJCWJyY21mX25ldGlmX3J4KGlmcCwgcGt0KTsKIAkJcmV0 dXJuOwogCX0KIApAQCAtMzg0LDcgKzM3Nyw3IEBAIHN0YXRpYyB2b2lkIGJyY21mX3J4cmVvcmRl cl9wcm9jZXNzX2luZm8oc3RydWN0IGJyY21mX2lmICppZnAsIHU4ICpyZW9yZGVyX2RhdGEsCiAJ CWlmIChyZmkgPT0gTlVMTCkgewogCQkJYnJjbWZfZGJnKElORk8sICJyZWNlaXZlZCBmbGFncyB0 byBjbGVhbnVwLCBidXQgbm8gZmxvdyAoJWQpIHlldFxuIiwKIAkJCQkgIGZsb3dfaWQpOwotCQkJ YnJjbWZfbmV0aWZfcngoaWZwLCBwa3QsIGZhbHNlKTsKKwkJCWJyY21mX25ldGlmX3J4KGlmcCwg cGt0KTsKIAkJCXJldHVybjsKIAkJfQogCkBAIC00MDksNyArNDAyLDcgQEAgc3RhdGljIHZvaWQg YnJjbWZfcnhyZW9yZGVyX3Byb2Nlc3NfaW5mbyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgdTggKnJl b3JkZXJfZGF0YSwKIAkJcmZpID0ga3phbGxvYyhidWZfc2l6ZSwgR0ZQX0FUT01JQyk7CiAJCWlm IChyZmkgPT0gTlVMTCkgewogCQkJYnJjbWZfZXJyKCJmYWlsZWQgdG8gYWxsb2MgYnVmZmVyXG4i KTsKLQkJCWJyY21mX25ldGlmX3J4KGlmcCwgcGt0LCBmYWxzZSk7CisJCQlicmNtZl9uZXRpZl9y eChpZnAsIHBrdCk7CiAJCQlyZXR1cm47CiAJCX0KIApAQCAtNTIzLDExICs1MTYsMTEgQEAgc3Rh dGljIHZvaWQgYnJjbWZfcnhyZW9yZGVyX3Byb2Nlc3NfaW5mbyhzdHJ1Y3QgYnJjbWZfaWYgKmlm cCwgdTggKnJlb3JkZXJfZGF0YSwKIG5ldGlmX3J4OgogCXNrYl9xdWV1ZV93YWxrX3NhZmUoJnJl b3JkZXJfbGlzdCwgcGt0LCBwbmV4dCkgewogCQlfX3NrYl91bmxpbmsocGt0LCAmcmVvcmRlcl9s aXN0KTsKLQkJYnJjbWZfbmV0aWZfcngoaWZwLCBwa3QsIGZhbHNlKTsKKwkJYnJjbWZfbmV0aWZf cngoaWZwLCBwa3QpOwogCX0KIH0KIAotdm9pZCBicmNtZl9yeF9mcmFtZShzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgaGFuZGxlX2V2bnQpCit2b2lkIGJyY21m X3J4X2ZyYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCBo YW5kbGVfZXZlbnQpCiB7CiAJc3RydWN0IGJyY21mX2lmICppZnA7CiAJc3RydWN0IGJyY21mX2J1 cyAqYnVzX2lmID0gZGV2X2dldF9kcnZkYXRhKGRldik7CkBAIC01NDcsMTEgKzU0MCwxOCBAQCB2 b2lkIGJyY21mX3J4X2ZyYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNr YiwgYm9vbCBoYW5kbGVfZXZudCkKIAkJcmV0dXJuOwogCX0KIAorCXNrYi0+cHJvdG9jb2wgPSBl dGhfdHlwZV90cmFucyhza2IsIGlmcC0+bmRldik7CisKIAlyZCA9IChzdHJ1Y3QgYnJjbWZfc2ti X3Jlb3JkZXJfZGF0YSAqKXNrYi0+Y2I7Ci0JaWYgKHJkLT5yZW9yZGVyKQorCWlmIChyZC0+cmVv cmRlcikgewogCQlicmNtZl9yeHJlb3JkZXJfcHJvY2Vzc19pbmZvKGlmcCwgcmQtPnJlb3JkZXIs IHNrYik7Ci0JZWxzZQotCQlicmNtZl9uZXRpZl9yeChpZnAsIHNrYiwgaGFuZGxlX2V2bnQpOwor CX0gZWxzZSB7CisJCS8qIFByb2Nlc3Mgc3BlY2lhbCBldmVudCBwYWNrZXRzICovCisJCWlmICho YW5kbGVfZXZlbnQpCisJCQlicmNtZl9md2VoX3Byb2Nlc3Nfc2tiKGlmcC0+ZHJ2ciwgc2tiKTsK KworCQlicmNtZl9uZXRpZl9yeChpZnAsIHNrYik7CisJfQogfQogCiB2b2lkIGJyY21mX3J4X2V2 ZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmggYi9kcml2ZXJz L25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5oCmluZGV4IGU0M2QzZTcyOTMy ZC4uMmY5MTAxYjJhZDM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAy MTEvYnJjbWZtYWMvY29yZS5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9i cmNtZm1hYy9jb3JlLmgKQEAgLTIxNSw4ICsyMTUsNyBAQCBpbnQgYnJjbWZfZ2V0X25leHRfZnJl ZV9ic3NjZmdpZHgoc3RydWN0IGJyY21mX3B1YiAqZHJ2cik7CiB2b2lkIGJyY21mX3R4Zmxvd2Js b2NrX2lmKHN0cnVjdCBicmNtZl9pZiAqaWZwLAogCQkJICBlbnVtIGJyY21mX25ldGlmX3N0b3Bf cmVhc29uIHJlYXNvbiwgYm9vbCBzdGF0ZSk7CiB2b2lkIGJyY21mX3R4ZmluYWxpemUoc3RydWN0 IGJyY21mX2lmICppZnAsIHN0cnVjdCBza19idWZmICp0eHAsIGJvb2wgc3VjY2Vzcyk7Ci12b2lk IGJyY21mX25ldGlmX3J4KHN0cnVjdCBicmNtZl9pZiAqaWZwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2ti LAotCQkgICAgYm9vbCBoYW5kbGVfZXZlbnQpOwordm9pZCBicmNtZl9uZXRpZl9yeChzdHJ1Y3Qg YnJjbWZfaWYgKmlmcCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiB2b2lkIGJyY21mX25ldF9zZXRj YXJyaWVyKHN0cnVjdCBicmNtZl9pZiAqaWZwLCBib29sIG9uKTsKIAogI2VuZGlmIC8qIEJSQ01G TUFDX0NPUkVfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjEx L2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21m bWFjL21zZ2J1Zi5jCmluZGV4IGI5OWJhNmUwNTllZi4uMzI2YmVkZTdiZjk5IDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMKKysrIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jCkBAIC0xMTU1 LDcgKzExNTUsNyBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJj bWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIAkJYnJjbXVfcGt0X2J1Zl9mcmVlX3NrYihz a2IpOwogCQlyZXR1cm47CiAJfQotCWJyY21mX25ldGlmX3J4KGlmcCwgc2tiLCBmYWxzZSk7CisJ YnJjbWZfbmV0aWZfcngoaWZwLCBza2IpOwogfQogCiAKLS0gCkJlbiBIdXRjaGluZ3MsIFNvZnR3 YXJlIERldmVsb3BlciAgICAgICAgICAgICAgICAgICAgICAgICBDb2RldGhpbmsgTHRkCmh0dHBz Oi8vd3d3LmNvZGV0aGluay5jby51ay8gICAgICAgICAgICAgICAgIERhbGUgSG91c2UsIDM1IERh bGUgU3RyZWV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5jaGVzdGVy LCBNMSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJvbSBjYTU2MjRlM2JkZDgzZjM0Yzk1YTAyOTNi OTZjZTdmNjQ1MDk3ZjkxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHYXZpbiBMaSA8 Z2l0QHRoZWdhdmlubGkuY29tPgpEYXRlOiBUdWUsIDE3IEphbiAyMDE3IDE1OjI0OjA1IC0wODAw ClN1YmplY3Q6IFtQQVRDSCAwOC8xMl0gYnJjbWZtYWM6IGZpeCBpbmNvcnJlY3QgZXZlbnQgY2hh bm5lbCBkZWR1Y3Rpb24KCmNvbW1pdCA4ZTI5MGNlY2RkMDE3OGYzZDRjZjdkNDYzYzUxZGM3ZTQ2 Mjg0M2I0IHVwc3RyZWFtLgoKYnJjbWZfc2Rpb19mcm9tZXZudGNoYW4oKSB3YXMgYmVpbmcgY2Fs bGVkIG9uIHRoZSB0aGUgZGF0YSBmcmFtZQpyYXRoZXIgdGhhbiB0aGUgc29mdHdhcmUgaGVhZGVy LCBjYXVzaW5nIHNvbWUgZnJhbWVzIHRvIGJlCm1pc2NoYXJhY3Rlcml6ZWQgYXMgb24gdGhlIGV2 ZW50IGNoYW5uZWwgcmF0aGVyIHRoYW4gdGhlIGRhdGEgY2hhbm5lbC4KClRoaXMgZml4ZXMgYSBt YWpvciBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIChkdWUgdG8gZHJvcHBlZCBwYWNrZXRzKS4gV2l0 aAp0aGlzIHBhdGNoIHRoZSBkb3dubG9hZCBzcGVlZCBqdW1wZWQgZnJvbSAxTWJpdC9zIGJhY2sg dXAgdG8gNDBNQml0L3MgZHVlCnRvIHRoZSBzaGVlciBhbW91bnQgb2YgcGFja2V0cyBiZWluZyBp bmNvcnJlY3RseSBwcm9jZXNzZWQuCgpGaXhlczogYzU2Y2FhOWRiOGFiICgiYnJjbWZtYWM6IHNj cmVlbmluZyBmaXJtd2FyZSBldmVudCBwYWNrZXQiKQpTaWduZWQtb2ZmLWJ5OiBHYXZpbiBMaSA8 Z2l0QHRoZWdhdmlubGkuY29tPgpBY2tlZC1ieTogQXJlbmQgdmFuIFNwcmllbCA8YXJlbmQudmFu c3ByaWVsQGJyb2FkY29tLmNvbT4KW2t2YWxvQGNvZGVhdXJvcmEub3JnOiBpbXByb3ZlIGNvbW1p dCBsb2dzIGJhc2VkIG9uIGVtYWlsIGRpc2N1c3Npb25dClNpZ25lZC1vZmYtYnk6IEthbGxlIFZh bG8gPGt2YWxvQGNvZGVhdXJvcmEub3JnPgpbYndoOiBCYWNrcG9ydGVkIHRvIDQuNDogYWRqdXN0 IGZpbGVuYW1lXQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNv ZGV0aGluay5jby51az4KLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZt YWMvc2Rpby5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJjbTgwMjExL2JyY21m bWFjL3NkaW8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9zZGlv LmMKaW5kZXggNzg5MDQ0ZWE2YzhkLi45OTU0ZTY0MWM5NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmMKKysrIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvYnJjbTgwMjExL2JyY21mbWFjL3NkaW8uYwpAQCAtMTc2NSw3ICsxNzY1LDcgQEAg c3RhdGljIHU4IGJyY21mX3NkaW9fcnhnbG9tKHN0cnVjdCBicmNtZl9zZGlvICpidXMsIHU4IHJ4 c2VxKQogCQkJCQkgICBwZmlyc3QtPmxlbiwgcGZpcnN0LT5uZXh0LAogCQkJCQkgICBwZmlyc3Qt PnByZXYpOwogCQkJc2tiX3VubGluayhwZmlyc3QsICZidXMtPmdsb20pOwotCQkJaWYgKGJyY21m X3NkaW9fZnJvbWV2bnRjaGFuKHBmaXJzdC0+ZGF0YSkpCisJCQlpZiAoYnJjbWZfc2Rpb19mcm9t ZXZudGNoYW4oJmRwdHJbU0RQQ01fSFdIRFJfTEVOXSkpCiAJCQkJYnJjbWZfcnhfZXZlbnQoYnVz LT5zZGlvZGV2LT5kZXYsIHBmaXJzdCk7CiAJCQllbHNlCiAJCQkJYnJjbWZfcnhfZnJhbWUoYnVz LT5zZGlvZGV2LT5kZXYsIHBmaXJzdCwKLS0gCkJlbiBIdXRjaGluZ3MsIFNvZnR3YXJlIERldmVs b3BlciAgICAgICAgICAgICAgICAgICAgICAgICBDb2RldGhpbmsgTHRkCmh0dHBzOi8vd3d3LmNv ZGV0aGluay5jby51ay8gICAgICAgICAgICAgICAgIERhbGUgSG91c2UsIDM1IERhbGUgU3RyZWV0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5jaGVzdGVyLCBNMSAySEYs IFVuaXRlZCBLaW5nZG9tCgoKRnJvbSBmZWZkOTVlZGZjYWY2ZjVkMmYyYmEyYmRkZGE0MzE5NzY5 NmI1YWQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBcmVuZCBWYW4gU3ByaWVsIDxh cmVuZC52YW5zcHJpZWxAYnJvYWRjb20uY29tPgpEYXRlOiBUaHUsIDYgQXByIDIwMTcgMTM6MTQ6 NDAgKzAxMDAKU3ViamVjdDogW1BBVENIIDA5LzEyXSBicmNtZm1hYzogYWRkIGxlbmd0aCBjaGVj a3MgaW4gc2NoZWR1bGVkIHNjYW4gcmVzdWx0CiBoYW5kbGVyCgpjb21taXQgNDgzNWYzN2UzYmFm YzEzOGY4YmZhM2NiZWQyOTIwZGQ1NmZlZDI4MyB1cHN0cmVhbS4KCkFzc3VyZSB0aGUgZXZlbnQg ZGF0YSBidWZmZXIgaXMgbG9uZyBlbm91Z2ggdG8gaG9sZCB0aGUgYXJyYXkKb2YgbmV0aW5mbyBp dGVtcyBhbmQgdGhhdCBTU0lEIGxlbmd0aCBkb2VzIG5vdCBleGNlZWQgdGhlIG1heGltdW0Kb2Yg MzIgY2hhcmFjdGVycyBhcyBwZXIgODAyLjExIHNwZWMuCgpSZXZpZXdlZC1ieTogSGFudGUgTWV1 bGVtYW4gPGhhbnRlLm1ldWxlbWFuQGJyb2FkY29tLmNvbT4KUmV2aWV3ZWQtYnk6IFBpZXRlci1Q YXVsIEdpZXNiZXJ0cyA8cGlldGVyLXBhdWwuZ2llc2JlcnRzQGJyb2FkY29tLmNvbT4KUmV2aWV3 ZWQtYnk6IEZyYW5reSBMaW4gPGZyYW5reS5saW5AYnJvYWRjb20uY29tPgpTaWduZWQtb2ZmLWJ5 OiBBcmVuZCB2YW4gU3ByaWVsIDxhcmVuZC52YW5zcHJpZWxAYnJvYWRjb20uY29tPgpTaWduZWQt b2ZmLWJ5OiBLYWxsZSBWYWxvIDxrdmFsb0Bjb2RlYXVyb3JhLm9yZz4KW2J3aDogQmFja3BvcnRl ZCB0byA0LjQ6CiAtIE1vdmUgdGhlIGFzc2lnbm1lbnQgdG8gImRhdGEiIGFsb25nIHdpdGggdGhl IGFzc2lnbm1lbnQgdG8gIm5ldGluZm9fc3RhcnQiCiAgIHRoYXQgZGVwZW5kcyBvbiBpdAogLSBB ZGp1c3QgZmlsZW5hbWUsIGNvbnRleHQsIGluZGVudGF0aW9uXQpTaWduZWQtb2ZmLWJ5OiBCZW4g SHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBkcml2ZXJzL25l dC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyB8IDE0ICsrKysrKysrKysr LS0tCiAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAy MTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5j CmluZGV4IDJhNzc1NDkwNWUyMS4uZTc0YTViMTEyYjcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25l dC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYworKysgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwpAQCAtMzMyOCw2ICszMzI4 LDcgQEAgYnJjbWZfbm90aWZ5X3NjaGVkX3NjYW5fcmVzdWx0cyhzdHJ1Y3QgYnJjbWZfaWYgKmlm cCwKIAlzdHJ1Y3QgYnJjbWZfcG5vX3NjYW5yZXN1bHRzX2xlICpwZm5fcmVzdWx0OwogCXUzMiBy ZXN1bHRfY291bnQ7CiAJdTMyIHN0YXR1czsKKwl1MzIgZGF0YWxlbjsKIAogCWJyY21mX2RiZyhT Q0FOLCAiRW50ZXJcbiIpOwogCkBAIC0zMzU0LDYgKzMzNTUsMTQgQEAgYnJjbWZfbm90aWZ5X3Nj aGVkX3NjYW5fcmVzdWx0cyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwKIAlpZiAocmVzdWx0X2NvdW50 ID4gMCkgewogCQlpbnQgaTsKIAorCQlkYXRhICs9IHNpemVvZihzdHJ1Y3QgYnJjbWZfcG5vX3Nj YW5yZXN1bHRzX2xlKTsKKwkJbmV0aW5mb19zdGFydCA9IChzdHJ1Y3QgYnJjbWZfcG5vX25ldF9p bmZvX2xlICopZGF0YTsKKwkJZGF0YWxlbiA9IGUtPmRhdGFsZW4gLSAoKHZvaWQgKiluZXRpbmZv X3N0YXJ0IC0gKHZvaWQgKilwZm5fcmVzdWx0KTsKKwkJaWYgKGRhdGFsZW4gPCByZXN1bHRfY291 bnQgKiBzaXplb2YoKm5ldGluZm8pKSB7CisJCQlicmNtZl9lcnIoImluc3VmZmljaWVudCBldmVu dCBkYXRhXG4iKTsKKwkJCWdvdG8gb3V0X2VycjsKKwkJfQorCiAJCXJlcXVlc3QgPSBremFsbG9j KHNpemVvZigqcmVxdWVzdCksIEdGUF9LRVJORUwpOwogCQlzc2lkID0ga2NhbGxvYyhyZXN1bHRf Y291bnQsIHNpemVvZigqc3NpZCksIEdGUF9LRVJORUwpOwogCQljaGFubmVsID0ga2NhbGxvYyhy ZXN1bHRfY291bnQsIHNpemVvZigqY2hhbm5lbCksIEdGUF9LRVJORUwpOwpAQCAtMzM2Myw5ICsz MzcyLDYgQEAgYnJjbWZfbm90aWZ5X3NjaGVkX3NjYW5fcmVzdWx0cyhzdHJ1Y3QgYnJjbWZfaWYg KmlmcCwKIAkJfQogCiAJCXJlcXVlc3QtPndpcGh5ID0gd2lwaHk7Ci0JCWRhdGEgKz0gc2l6ZW9m KHN0cnVjdCBicmNtZl9wbm9fc2NhbnJlc3VsdHNfbGUpOwotCQluZXRpbmZvX3N0YXJ0ID0gKHN0 cnVjdCBicmNtZl9wbm9fbmV0X2luZm9fbGUgKilkYXRhOwotCiAJCWZvciAoaSA9IDA7IGkgPCBy ZXN1bHRfY291bnQ7IGkrKykgewogCQkJbmV0aW5mbyA9ICZuZXRpbmZvX3N0YXJ0W2ldOwogCQkJ aWYgKCFuZXRpbmZvKSB7CkBAIC0zMzc1LDYgKzMzODEsOCBAQCBicmNtZl9ub3RpZnlfc2NoZWRf c2Nhbl9yZXN1bHRzKHN0cnVjdCBicmNtZl9pZiAqaWZwLAogCQkJCWdvdG8gb3V0X2VycjsKIAkJ CX0KIAorCQkJaWYgKG5ldGluZm8tPlNTSURfbGVuID4gSUVFRTgwMjExX01BWF9TU0lEX0xFTikK KwkJCQluZXRpbmZvLT5TU0lEX2xlbiA9IElFRUU4MDIxMV9NQVhfU1NJRF9MRU47CiAJCQlicmNt Zl9kYmcoU0NBTiwgIlNTSUQ6JXMgQ2hhbm5lbDolZFxuIiwKIAkJCQkgIG5ldGluZm8tPlNTSUQs IG5ldGluZm8tPmNoYW5uZWwpOwogCQkJbWVtY3B5KHNzaWRbaV0uc3NpZCwgbmV0aW5mby0+U1NJ RCwgbmV0aW5mby0+U1NJRF9sZW4pOwotLSAKQmVuIEh1dGNoaW5ncywgU29mdHdhcmUgRGV2ZWxv cGVyICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayBMdGQKaHR0cHM6Ly93d3cuY29k ZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwgMzUgRGFsZSBTdHJlZXQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmNoZXN0ZXIsIE0xIDJIRiwg VW5pdGVkIEtpbmdkb20KCgpGcm9tIGM4OGJkMmI4YTFiZWU5MzBmYmYxYzA1ZGY1NTdhZThmN2M3 MzI3ODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEFyZW5kIHZhbiBTcHJpZWwgPGFy ZW5kLnZhbnNwcmllbEBicm9hZGNvbS5jb20+CkRhdGU6IFRodSwgMTQgRmViIDIwMTkgMTM6NDM6 NDggKzAxMDAKU3ViamVjdDogW1BBVENIIDEwLzEyXSBicmNtZm1hYzogYWRkIHN1YnR5cGUgY2hl Y2sgZm9yIGV2ZW50IGhhbmRsaW5nIGluIGRhdGEKIHBhdGgKCmNvbW1pdCBhNDE3NmVjMzU2Yzcz YTQ2YzA3YzE4MWM2ZDA0MDM5ZmFmYTM0YTlmIHVwc3RyZWFtLgoKRm9yIFVTQiB0aGVyZSBpcyBu byBzZXBhcmF0ZSBjaGFubmVsIGJlaW5nIHVzZWQgdG8gcGFzcyBldmVudHMKZnJvbSBmaXJtd2Fy ZSB0byB0aGUgaG9zdCBkcml2ZXIgYW5kIGFzIHN1Y2ggYXJlIHBhc3NlZCBvdmVyIHRoZQpkYXRh IHBhdGguIEluIG9yZGVyIHRvIGRldGVjdCBtb2NrIGV2ZW50IG1lc3NhZ2VzIGFuIGFkZGl0aW9u YWwKY2hlY2sgaXMgbmVlZGVkIG9uIGV2ZW50IHN1YnR5cGUuIFRoaXMgY2hlY2sgaXMgYWRkZWQg Y29uZGl0aW9uYWxseQp1c2luZyB1bmxpa2VseSgpIGtleXdvcmQuCgpSZXZpZXdlZC1ieTogSGFu dGUgTWV1bGVtYW4gPGhhbnRlLm1ldWxlbWFuQGJyb2FkY29tLmNvbT4KUmV2aWV3ZWQtYnk6IFBp ZXRlci1QYXVsIEdpZXNiZXJ0cyA8cGlldGVyLXBhdWwuZ2llc2JlcnRzQGJyb2FkY29tLmNvbT4K UmV2aWV3ZWQtYnk6IEZyYW5reSBMaW4gPGZyYW5reS5saW5AYnJvYWRjb20uY29tPgpTaWduZWQt b2ZmLWJ5OiBBcmVuZCB2YW4gU3ByaWVsIDxhcmVuZC52YW5zcHJpZWxAYnJvYWRjb20uY29tPgpT aWduZWQtb2ZmLWJ5OiBLYWxsZSBWYWxvIDxrdmFsb0Bjb2RlYXVyb3JhLm9yZz4KW2J3aDogQmFj a3BvcnRlZCB0byA0LjQ6IGFkanVzdCBmaWxlbmFtZXNdClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRj aGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGRyaXZlcnMvbmV0L3dp cmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmMgICB8ICA1ICsrKy0tCiBkcml2ZXJzL25l dC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvZndlaC5oICAgfCAxNiArKysrKysrKysrKyst LS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgfCAg MiArLQogMyBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9jb3Jl LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jCmluZGV4 IGViM2UyYTY4NTdmZC4uMzA4MjM5MWMzMDYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJl bGVzcy9icmNtODAyMTEvYnJjbWZtYWMvY29yZS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L2JyY204MDIxMS9icmNtZm1hYy9jb3JlLmMKQEAgLTU0OCw3ICs1NDgsOCBAQCB2b2lkIGJyY21m X3J4X2ZyYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCBo YW5kbGVfZXZlbnQpCiAJfSBlbHNlIHsKIAkJLyogUHJvY2VzcyBzcGVjaWFsIGV2ZW50IHBhY2tl dHMgKi8KIAkJaWYgKGhhbmRsZV9ldmVudCkKLQkJCWJyY21mX2Z3ZWhfcHJvY2Vzc19za2IoaWZw LT5kcnZyLCBza2IpOworCQkJYnJjbWZfZndlaF9wcm9jZXNzX3NrYihpZnAtPmRydnIsIHNrYiwK KwkJCQkJICAgICAgIEJDTUlMQ1BfU1VCVFlQRV9WRU5ET1JfTE9ORyk7CiAKIAkJYnJjbWZfbmV0 aWZfcngoaWZwLCBza2IpOwogCX0KQEAgLTU3NSw3ICs1NzYsNyBAQCB2b2lkIGJyY21mX3J4X2V2 ZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAogCXNrYi0+cHJv dG9jb2wgPSBldGhfdHlwZV90cmFucyhza2IsIGlmcC0+bmRldik7CiAKLQlicmNtZl9md2VoX3By b2Nlc3Nfc2tiKGlmcC0+ZHJ2ciwgc2tiKTsKKwlicmNtZl9md2VoX3Byb2Nlc3Nfc2tiKGlmcC0+ ZHJ2ciwgc2tiLCAwKTsKIAlicmNtdV9wa3RfYnVmX2ZyZWVfc2tiKHNrYik7CiB9CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9md2VoLmggYi9k cml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvZndlaC5oCmluZGV4IGQ4NDQ3 ODU2YmY1NC4uYjUzZGI5MjM0MWNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9i cmNtODAyMTEvYnJjbWZtYWMvZndlaC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204 MDIxMS9icmNtZm1hYy9md2VoLmgKQEAgLTE4MSw3ICsxODEsNyBAQCBlbnVtIGJyY21mX2Z3ZWhf ZXZlbnRfY29kZSB7CiAgKi8KICNkZWZpbmUgQlJDTV9PVUkJCQkJIlx4MDBceDEwXHgxOCIKICNk ZWZpbmUgQkNNSUxDUF9CQ01fU1VCVFlQRV9FVkVOVAkJMQotCisjZGVmaW5lIEJDTUlMQ1BfU1VC VFlQRV9WRU5ET1JfTE9ORwkJMzI3NjkKIAogLyoqCiAgKiBzdHJ1Y3QgYnJjbV9ldGhoZHIgLSBi cm9hZGNvbSBzcGVjaWZpYyBldGhlciBoZWFkZXIuCkBAIC0zMDIsMTAgKzMwMiwxMCBAQCB2b2lk IGJyY21mX2Z3ZWhfcHJvY2Vzc19ldmVudChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLAogdm9pZCBi cmNtZl9md2VoX3AycGRldl9zZXR1cChzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgYm9vbCBvbmdvaW5n KTsKIAogc3RhdGljIGlubGluZSB2b2lkIGJyY21mX2Z3ZWhfcHJvY2Vzc19za2Ioc3RydWN0IGJy Y21mX3B1YiAqZHJ2ciwKLQkJCQkJICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQorCQkJCQkgIHN0cnVj dCBza19idWZmICpza2IsIHUxNiBzdHlwZSkKIHsKIAlzdHJ1Y3QgYnJjbWZfZXZlbnQgKmV2ZW50 X3BhY2tldDsKLQl1MTYgdXNyX3N0eXBlOworCXUxNiBzdWJ0eXBlLCB1c3Jfc3R5cGU7CiAKIAkv KiBvbmx5IHByb2Nlc3MgZXZlbnRzIHdoZW4gcHJvdG9jb2wgbWF0Y2hlcyAqLwogCWlmIChza2It PnByb3RvY29sICE9IGNwdV90b19iZTE2KEVUSF9QX0xJTktfQ1RMKSkKQEAgLTMxNCw4ICszMTQs MTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGJyY21mX2Z3ZWhfcHJvY2Vzc19za2Ioc3RydWN0IGJy Y21mX3B1YiAqZHJ2ciwKIAlpZiAoKHNrYi0+bGVuICsgRVRIX0hMRU4pIDwgc2l6ZW9mKCpldmVu dF9wYWNrZXQpKQogCQlyZXR1cm47CiAKLQkvKiBjaGVjayBmb3IgQlJDTSBvdWkgbWF0Y2ggKi8K IAlldmVudF9wYWNrZXQgPSAoc3RydWN0IGJyY21mX2V2ZW50ICopc2tiX21hY19oZWFkZXIoc2ti KTsKKworCS8qIGNoZWNrIHN1YnR5cGUgaWYgbmVlZGVkICovCisJaWYgKHVubGlrZWx5KHN0eXBl KSkgeworCQlzdWJ0eXBlID0gZ2V0X3VuYWxpZ25lZF9iZTE2KCZldmVudF9wYWNrZXQtPmhkci5z dWJ0eXBlKTsKKwkJaWYgKHN1YnR5cGUgIT0gc3R5cGUpCisJCQlyZXR1cm47CisJfQorCisJLyog Y2hlY2sgZm9yIEJSQ00gb3VpIG1hdGNoICovCiAJaWYgKG1lbWNtcChCUkNNX09VSSwgJmV2ZW50 X3BhY2tldC0+aGRyLm91aVswXSwKIAkJICAgc2l6ZW9mKGV2ZW50X3BhY2tldC0+aGRyLm91aSkp KQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEv YnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZt YWMvbXNnYnVmLmMKaW5kZXggMzI2YmVkZTdiZjk5Li42ZjcxMzhjZWE1NTUgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYworKysgYi9k cml2ZXJzL25ldC93aXJlbGVzcy9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMKQEAgLTExMTIs NyArMTExMiw3IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVj dCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCiAJc2tiLT5wcm90b2NvbCA9IGV0 aF90eXBlX3RyYW5zKHNrYiwgaWZwLT5uZGV2KTsKIAotCWJyY21mX2Z3ZWhfcHJvY2Vzc19za2Io aWZwLT5kcnZyLCBza2IpOworCWJyY21mX2Z3ZWhfcHJvY2Vzc19za2IoaWZwLT5kcnZyLCBza2Is IDApOwogCiBleGl0OgogCWJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTsKLS0gCkJlbiBIdXRj aGluZ3MsIFNvZnR3YXJlIERldmVsb3BlciAgICAgICAgICAgICAgICAgICAgICAgICBDb2RldGhp bmsgTHRkCmh0dHBzOi8vd3d3LmNvZGV0aGluay5jby51ay8gICAgICAgICAgICAgICAgIERhbGUg SG91c2UsIDM1IERhbGUgU3RyZWV0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNYW5jaGVzdGVyLCBNMSAySEYsIFVuaXRlZCBLaW5nZG9tCgoKRnJvbSBlMjE2ZDQzMWE1MWYx MGI3NDY5OTFmNmY0M2IyM2QyMjA5MzUyYWU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBPbGVnIE5lc3Rlcm92IDxvbGVnQHJlZGhhdC5jb20+CkRhdGU6IEZyaSwgMjAgTWF5IDIwMTYg MTY6NTg6MzYgLTA3MDAKU3ViamVjdDogW1BBVENIIDExLzEyXSB1c2VyZmF1bHRmZDogZG9uJ3Qg cGluIHRoZSB1c2VyIG1lbW9yeSBpbgogdXNlcmZhdWx0ZmRfZmlsZV9jcmVhdGUoKQoKY29tbWl0 IGQyMDA1ZTNmNDFkNGY5Mjk5ZTJkZjZhOTY3YzhiZWI1MDg2OTY3YTkgdXBzdHJlYW0uCgp1c2Vy ZmF1bHRmZF9maWxlX2NyZWF0ZSgpIGluY3JlbWVudHMgbW0tPm1tX3VzZXJzOyB0aGlzIG1lYW5z IHRoYXQgdGhlCm1lbW9yeSB3b24ndCBiZSB1bm1hcHBlZC9mcmVlZCBpZiBtbSBvd25lciBleGl0 cy9leGVjcywgYW5kIFVGRkRJT19DT1BZCmFmdGVyIHRoYXQgY2FuIHBvcHVsYXRlIHRoZSBvcnBo YW5lZCBtbSBtb3JlLgoKQ2hhbmdlIHVzZXJmYXVsdGZkX2ZpbGVfY3JlYXRlKCkgYW5kIHVzZXJm YXVsdGZkX2N0eF9wdXQoKSB0byB1c2UKbW0tPm1tX2NvdW50IHRvIHBpbiBtbV9zdHJ1Y3QuICBU aGlzIG1lYW5zIHRoYXQKYXRvbWljX2luY19ub3RfemVybyhtbS0+bW1fdXNlcnMpIGlzIG5lZWRl ZCB3aGVuIHdlIGFyZSBnb2luZyB0bwphY3R1YWxseSBwbGF5IHdpdGggdGhpcyBtZW1vcnkuICBF eGNlcHQgaGFuZGxlX3VzZXJmYXVsdCgpIHBhdGggZG9lc24ndApuZWVkIHRoaXMsIHRoZSBjYWxs ZXIgbXVzdCBhbHJlYWR5IGhhdmUgYSByZWZlcmVuY2UuCgpUaGUgcGF0Y2ggYWRkcyB0aGUgbmV3 IHRyaXZpYWwgaGVscGVyLCBtbWdldF9ub3RfemVybygpLCBpdCBjYW4gaGF2ZQptb3JlIHVzZXJz LgoKTGluazogaHR0cDovL2xrbWwua2VybmVsLm9yZy9yLzIwMTYwNTE2MTcyMjU0LkdBODU5NUBy ZWRoYXQuY29tClNpZ25lZC1vZmYtYnk6IE9sZWcgTmVzdGVyb3YgPG9sZWdAcmVkaGF0LmNvbT4K Q2M6IEFuZHJlYSBBcmNhbmdlbGkgPGFhcmNhbmdlQHJlZGhhdC5jb20+CkNjOiBNaWNoYWwgSG9j a28gPG1ob2Nrb0BrZXJuZWwub3JnPgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgTW9ydG9uIDxha3Bt QGxpbnV4LWZvdW5kYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBMaW51cyBUb3J2YWxkcyA8dG9y dmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3Mg PGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGZzL3VzZXJmYXVsdGZkLmMgICAg ICB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBpbmNsdWRl L2xpbnV4L3NjaGVkLmggfCAgNyArKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlv bnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL3VzZXJmYXVsdGZkLmMgYi9m cy91c2VyZmF1bHRmZC5jCmluZGV4IDU5ZDU4YmRhZDdkMy4uZTkzNTQxMjgyYWExIDEwMDY0NAot LS0gYS9mcy91c2VyZmF1bHRmZC5jCisrKyBiL2ZzL3VzZXJmYXVsdGZkLmMKQEAgLTEzNyw3ICsx MzcsNyBAQCBzdGF0aWMgdm9pZCB1c2VyZmF1bHRmZF9jdHhfcHV0KHN0cnVjdCB1c2VyZmF1bHRm ZF9jdHggKmN0eCkKIAkJVk1fQlVHX09OKHdhaXRxdWV1ZV9hY3RpdmUoJmN0eC0+ZmF1bHRfd3Fo KSk7CiAJCVZNX0JVR19PTihzcGluX2lzX2xvY2tlZCgmY3R4LT5mZF93cWgubG9jaykpOwogCQlW TV9CVUdfT04od2FpdHF1ZXVlX2FjdGl2ZSgmY3R4LT5mZF93cWgpKTsKLQkJbW1wdXQoY3R4LT5t bSk7CisJCW1tZHJvcChjdHgtPm1tKTsKIAkJa21lbV9jYWNoZV9mcmVlKHVzZXJmYXVsdGZkX2N0 eF9jYWNoZXAsIGN0eCk7CiAJfQogfQpAQCAtNDM0LDYgKzQzNCw5IEBAIHN0YXRpYyBpbnQgdXNl cmZhdWx0ZmRfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkK IAogCUFDQ0VTU19PTkNFKGN0eC0+cmVsZWFzZWQpID0gdHJ1ZTsKIAorCWlmICghbW1nZXRfbm90 X3plcm8obW0pKQorCQlnb3RvIHdha2V1cDsKKwogCS8qCiAJICogRmx1c2ggcGFnZSBmYXVsdHMg b3V0IG9mIGFsbCBDUFVzLiBOT1RFOiBhbGwgcGFnZSBmYXVsdHMKIAkgKiBtdXN0IGJlIHJldHJp ZWQgd2l0aG91dCByZXR1cm5pbmcgVk1fRkFVTFRfU0lHQlVTIGlmCkBAIC00NjYsNyArNDY5LDgg QEAgc3RhdGljIGludCB1c2VyZmF1bHRmZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmaWxlICpmaWxlKQogCQl2bWEtPnZtX3VzZXJmYXVsdGZkX2N0eCA9IE5VTExfVk1fVUZG RF9DVFg7CiAJfQogCXVwX3dyaXRlKCZtbS0+bW1hcF9zZW0pOwotCisJbW1wdXQobW0pOword2Fr ZXVwOgogCS8qCiAJICogQWZ0ZXIgbm8gbmV3IHBhZ2UgZmF1bHRzIGNhbiB3YWl0IG9uIHRoaXMg ZmF1bHRfKndxaCwgZmx1c2gKIAkgKiB0aGUgbGFzdCBwYWdlIGZhdWx0cyB0aGF0IG1heSBoYXZl IGJlZW4gYWxyZWFkeSB3YWl0aW5nIG9uCkBAIC03NjAsMTAgKzc2NCwxMiBAQCBzdGF0aWMgaW50 IHVzZXJmYXVsdGZkX3JlZ2lzdGVyKHN0cnVjdCB1c2VyZmF1bHRmZF9jdHggKmN0eCwKIAlzdGFy dCA9IHVmZmRpb19yZWdpc3Rlci5yYW5nZS5zdGFydDsKIAllbmQgPSBzdGFydCArIHVmZmRpb19y ZWdpc3Rlci5yYW5nZS5sZW47CiAKKwlyZXQgPSAtRU5PTUVNOworCWlmICghbW1nZXRfbm90X3pl cm8obW0pKQorCQlnb3RvIG91dDsKKwogCWRvd25fd3JpdGUoJm1tLT5tbWFwX3NlbSk7CiAJdm1h ID0gZmluZF92bWFfcHJldihtbSwgc3RhcnQsICZwcmV2KTsKLQotCXJldCA9IC1FTk9NRU07CiAJ aWYgKCF2bWEpCiAJCWdvdG8gb3V0X3VubG9jazsKIApAQCAtODY0LDYgKzg3MCw3IEBAIHN0YXRp YyBpbnQgdXNlcmZhdWx0ZmRfcmVnaXN0ZXIoc3RydWN0IHVzZXJmYXVsdGZkX2N0eCAqY3R4LAog CX0gd2hpbGUgKHZtYSAmJiB2bWEtPnZtX3N0YXJ0IDwgZW5kKTsKIG91dF91bmxvY2s6CiAJdXBf d3JpdGUoJm1tLT5tbWFwX3NlbSk7CisJbW1wdXQobW0pOwogCWlmICghcmV0KSB7CiAJCS8qCiAJ CSAqIE5vdyB0aGF0IHdlIHNjYW5uZWQgYWxsIHZtYXMgd2UgY2FuIGFscmVhZHkgdGVsbApAQCAt OTAyLDEwICs5MDksMTIgQEAgc3RhdGljIGludCB1c2VyZmF1bHRmZF91bnJlZ2lzdGVyKHN0cnVj dCB1c2VyZmF1bHRmZF9jdHggKmN0eCwKIAlzdGFydCA9IHVmZmRpb191bnJlZ2lzdGVyLnN0YXJ0 OwogCWVuZCA9IHN0YXJ0ICsgdWZmZGlvX3VucmVnaXN0ZXIubGVuOwogCisJcmV0ID0gLUVOT01F TTsKKwlpZiAoIW1tZ2V0X25vdF96ZXJvKG1tKSkKKwkJZ290byBvdXQ7CisKIAlkb3duX3dyaXRl KCZtbS0+bW1hcF9zZW0pOwogCXZtYSA9IGZpbmRfdm1hX3ByZXYobW0sIHN0YXJ0LCAmcHJldik7 Ci0KLQlyZXQgPSAtRU5PTUVNOwogCWlmICghdm1hKQogCQlnb3RvIG91dF91bmxvY2s7CiAKQEAg LTk5OCw2ICsxMDA3LDcgQEAgc3RhdGljIGludCB1c2VyZmF1bHRmZF91bnJlZ2lzdGVyKHN0cnVj dCB1c2VyZmF1bHRmZF9jdHggKmN0eCwKIAl9IHdoaWxlICh2bWEgJiYgdm1hLT52bV9zdGFydCA8 IGVuZCk7CiBvdXRfdW5sb2NrOgogCXVwX3dyaXRlKCZtbS0+bW1hcF9zZW0pOworCW1tcHV0KG1t KTsKIG91dDoKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTA2Nyw5ICsxMDc3LDExIEBAIHN0YXRpYyBp bnQgdXNlcmZhdWx0ZmRfY29weShzdHJ1Y3QgdXNlcmZhdWx0ZmRfY3R4ICpjdHgsCiAJCWdvdG8g b3V0OwogCWlmICh1ZmZkaW9fY29weS5tb2RlICYgflVGRkRJT19DT1BZX01PREVfRE9OVFdBS0Up CiAJCWdvdG8gb3V0OwotCi0JcmV0ID0gbWNvcHlfYXRvbWljKGN0eC0+bW0sIHVmZmRpb19jb3B5 LmRzdCwgdWZmZGlvX2NvcHkuc3JjLAotCQkJICAgdWZmZGlvX2NvcHkubGVuKTsKKwlpZiAobW1n ZXRfbm90X3plcm8oY3R4LT5tbSkpIHsKKwkJcmV0ID0gbWNvcHlfYXRvbWljKGN0eC0+bW0sIHVm ZmRpb19jb3B5LmRzdCwgdWZmZGlvX2NvcHkuc3JjLAorCQkJCSAgIHVmZmRpb19jb3B5Lmxlbik7 CisJCW1tcHV0KGN0eC0+bW0pOworCX0KIAlpZiAodW5saWtlbHkocHV0X3VzZXIocmV0LCAmdXNl cl91ZmZkaW9fY29weS0+Y29weSkpKQogCQlyZXR1cm4gLUVGQVVMVDsKIAlpZiAocmV0IDwgMCkK QEAgLTExMTAsOCArMTEyMiwxMSBAQCBzdGF0aWMgaW50IHVzZXJmYXVsdGZkX3plcm9wYWdlKHN0 cnVjdCB1c2VyZmF1bHRmZF9jdHggKmN0eCwKIAlpZiAodWZmZGlvX3plcm9wYWdlLm1vZGUgJiB+ VUZGRElPX1pFUk9QQUdFX01PREVfRE9OVFdBS0UpCiAJCWdvdG8gb3V0OwogCi0JcmV0ID0gbWZp bGxfemVyb3BhZ2UoY3R4LT5tbSwgdWZmZGlvX3plcm9wYWdlLnJhbmdlLnN0YXJ0LAotCQkJICAg ICB1ZmZkaW9femVyb3BhZ2UucmFuZ2UubGVuKTsKKwlpZiAobW1nZXRfbm90X3plcm8oY3R4LT5t bSkpIHsKKwkJcmV0ID0gbWZpbGxfemVyb3BhZ2UoY3R4LT5tbSwgdWZmZGlvX3plcm9wYWdlLnJh bmdlLnN0YXJ0LAorCQkJCSAgICAgdWZmZGlvX3plcm9wYWdlLnJhbmdlLmxlbik7CisJCW1tcHV0 KGN0eC0+bW0pOworCX0KIAlpZiAodW5saWtlbHkocHV0X3VzZXIocmV0LCAmdXNlcl91ZmZkaW9f emVyb3BhZ2UtPnplcm9wYWdlKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCWlmIChyZXQgPCAwKQpA QCAtMTI4OSwxMiArMTMwNCwxMiBAQCBzdGF0aWMgc3RydWN0IGZpbGUgKnVzZXJmYXVsdGZkX2Zp bGVfY3JlYXRlKGludCBmbGFncykKIAljdHgtPnJlbGVhc2VkID0gZmFsc2U7CiAJY3R4LT5tbSA9 IGN1cnJlbnQtPm1tOwogCS8qIHByZXZlbnQgdGhlIG1tIHN0cnVjdCB0byBiZSBmcmVlZCAqLwot CWF0b21pY19pbmMoJmN0eC0+bW0tPm1tX3VzZXJzKTsKKwlhdG9taWNfaW5jKCZjdHgtPm1tLT5t bV9jb3VudCk7CiAKIAlmaWxlID0gYW5vbl9pbm9kZV9nZXRmaWxlKCJbdXNlcmZhdWx0ZmRdIiwg JnVzZXJmYXVsdGZkX2ZvcHMsIGN0eCwKIAkJCQkgIE9fUkRXUiB8IChmbGFncyAmIFVGRkRfU0hB UkVEX0ZDTlRMX0ZMQUdTKSk7CiAJaWYgKElTX0VSUihmaWxlKSkgewotCQltbXB1dChjdHgtPm1t KTsKKwkJbW1kcm9wKGN0eC0+bW0pOwogCQlrbWVtX2NhY2hlX2ZyZWUodXNlcmZhdWx0ZmRfY3R4 X2NhY2hlcCwgY3R4KTsKIAl9CiBvdXQ6CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NjaGVk LmggYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKaW5kZXggYTBiNTQwZjgwMGQ5Li4zMTVkZjE0NGMx NTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2NoZWQuaAorKysgYi9pbmNsdWRlL2xpbnV4 L3NjaGVkLmgKQEAgLTI2MTQsMTIgKzI2MTQsMTcgQEAgZXh0ZXJuIHN0cnVjdCBtbV9zdHJ1Y3Qg KiBtbV9hbGxvYyh2b2lkKTsKIAogLyogbW1kcm9wIGRyb3BzIHRoZSBtbSBhbmQgdGhlIHBhZ2Ug dGFibGVzICovCiBleHRlcm4gdm9pZCBfX21tZHJvcChzdHJ1Y3QgbW1fc3RydWN0ICopOwotc3Rh dGljIGlubGluZSB2b2lkIG1tZHJvcChzdHJ1Y3QgbW1fc3RydWN0ICogbW0pCitzdGF0aWMgaW5s aW5lIHZvaWQgbW1kcm9wKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogewogCWlmICh1bmxpa2VseShh dG9taWNfZGVjX2FuZF90ZXN0KCZtbS0+bW1fY291bnQpKSkKIAkJX19tbWRyb3AobW0pOwogfQog CitzdGF0aWMgaW5saW5lIGJvb2wgbW1nZXRfbm90X3plcm8oc3RydWN0IG1tX3N0cnVjdCAqbW0p Cit7CisJcmV0dXJuIGF0b21pY19pbmNfbm90X3plcm8oJm1tLT5tbV91c2Vycyk7Cit9CisKIC8q IG1tcHV0IGdldHMgcmlkIG9mIHRoZSBtYXBwaW5ncyBhbmQgYWxsIHVzZXItc3BhY2UgKi8KIGV4 dGVybiB2b2lkIG1tcHV0KHN0cnVjdCBtbV9zdHJ1Y3QgKik7CiAvKiBHcmFiIGEgcmVmZXJlbmNl IHRvIGEgdGFzaydzIG1tLCBpZiBpdCBpcyBub3QgYWxyZWFkeSBnb2luZyBhd2F5ICovCi0tIApC ZW4gSHV0Y2hpbmdzLCBTb2Z0d2FyZSBEZXZlbG9wZXIgICAgICAgICAgICAgICAgICAgICAgICAg Q29kZXRoaW5rIEx0ZApodHRwczovL3d3dy5jb2RldGhpbmsuY28udWsvICAgICAgICAgICAgICAg ICBEYWxlIEhvdXNlLCAzNSBEYWxlIFN0cmVldAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTWFuY2hlc3RlciwgTTEgMkhGLCBVbml0ZWQgS2luZ2RvbQoKCkZyb20gOTU2MGQy ZTNmNGExODhlYjJiNzhlNDAwOWUzMjkzNjg2ODk2YTExMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogQW5kcmVhIEFyY2FuZ2VsaSA8YWFyY2FuZ2VAcmVkaGF0LmNvbT4KRGF0ZTogVGh1 LCAxOCBBcHIgMjAxOSAxNzo1MDo1MiAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMTIvMTJdIGNvcmVk dW1wOiBmaXggcmFjZSBjb25kaXRpb24gYmV0d2VlbgogbW1nZXRfbm90X3plcm8oKS9nZXRfdGFz a19tbSgpIGFuZCBjb3JlIGR1bXBpbmcKCmNvbW1pdCAwNGY1ODY2ZTQxZmI3MDY5MGUyODM5NzQ4 N2Q4YmQ4ZWVhN2Q3MTJhIHVwc3RyZWFtLgoKVGhlIGNvcmUgZHVtcGluZyBjb2RlIGhhcyBhbHdh eXMgcnVuIHdpdGhvdXQgaG9sZGluZyB0aGUgbW1hcF9zZW0gZm9yCndyaXRpbmcsIGRlc3BpdGUg dGhhdCBpcyB0aGUgb25seSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhlIGVudGlyZSB2bWEKbGF5b3V0 IHdpbGwgbm90IGNoYW5nZSBmcm9tIHVuZGVyIGl0LiAgT25seSB1c2luZyBzb21lIHNpZ25hbApz ZXJpYWxpemF0aW9uIG9uIHRoZSBwcm9jZXNzZXMgYmVsb25naW5nIHRvIHRoZSBtbSBpcyBub3Qg bmVhcmx5IGVub3VnaC4KVGhpcyB3YXMgcG9pbnRlZCBvdXQgZWFybGllci4gIEZvciBleGFtcGxl IGluIEh1Z2gncyBwb3N0IGZyb20gSnVsIDIwMTc6CgogIGh0dHBzOi8vbGttbC5rZXJuZWwub3Jn L3IvYWxwaW5lLkxTVS4yLjExLjE3MDcxOTE3MTYwMzAuMjA1NUBlZ2dseS5hbnZpbHMKCiAgIk5v dCBzdHJpY3RseSByZWxldmFudCBoZXJlLCBidXQgYSByZWxhdGVkIG5vdGU6IEkgd2FzIHZlcnkg c3VycHJpc2VkCiAgIHRvIGRpc2NvdmVyLCBvbmx5IHF1aXRlIHJlY2VudGx5LCBob3cgaGFuZGxl X21tX2ZhdWx0KCkgbWF5IGJlIGNhbGxlZAogICB3aXRob3V0IGRvd25fcmVhZChtbWFwX3NlbSkg LSB3aGVuIGNvcmUgZHVtcGluZy4gVGhhdCBzZWVtcyBhCiAgIG1pc2d1aWRlZCBvcHRpbWl6YXRp b24gdG8gbWUsIHdoaWNoIHdvdWxkIGFsc28gYmUgbmljZSB0byBjb3JyZWN0IgoKSW4gcGFydGlj dWxhciBiZWNhdXNlIHRoZSBncm93c2Rvd24gYW5kIGdyb3dzdXAgY2FuIG1vdmUgdGhlCnZtX3N0 YXJ0L3ZtX2VuZCB0aGUgdmFyaW91cyBsb29wcyB0aGUgY29yZSBkdW1wIGRvZXMgYXJvdW5kIHRo ZSB2bWEgd2lsbApub3QgYmUgY29uc2lzdGVudCBpZiBwYWdlIGZhdWx0cyBjYW4gaGFwcGVuIGNv bmN1cnJlbnRseS4KClByZXR0eSBtdWNoIGFsbCB1c2VycyBjYWxsaW5nIG1tZ2V0X25vdF96ZXJv KCkvZ2V0X3Rhc2tfbW0oKSBhbmQgdGhlbgp0YWtpbmcgdGhlIG1tYXBfc2VtIGhhZCB0aGUgcG90 ZW50aWFsIHRvIGludHJvZHVjZSB1bmV4cGVjdGVkIHNpZGUKZWZmZWN0cyBpbiB0aGUgY29yZSBk dW1waW5nIGNvZGUuCgpBZGRpbmcgbW1hcF9zZW0gZm9yIHdyaXRpbmcgYXJvdW5kIHRoZSAtPmNv cmVfZHVtcCBpbnZvY2F0aW9uIGlzIGEKdmlhYmxlIGxvbmcgdGVybSBmaXgsIGJ1dCBpdCByZXF1 aXJlcyByZW1vdmluZyBhbGwgY29weSB1c2VyIGFuZCBwYWdlCmZhdWx0cyBhbmQgdG8gcmVwbGFj ZSB0aGVtIHdpdGggZ2V0X2R1bXBfcGFnZSgpIGZvciBhbGwgYmluYXJ5IGZvcm1hdHMKd2hpY2gg aXMgbm90IHN1aXRhYmxlIGFzIGEgc2hvcnQgdGVybSBmaXguCgpGb3IgdGhlIHRpbWUgYmVpbmcg dGhpcyBzb2x1dGlvbiBtYW51YWxseSBjb3ZlcnMgdGhlIHBsYWNlcyB0aGF0IGNhbgpjb25mdXNl IHRoZSBjb3JlIGR1bXAgZWl0aGVyIGJ5IGFsdGVyaW5nIHRoZSB2bWEgbGF5b3V0IG9yIHRoZSB2 bWEgZmxhZ3MKd2hpbGUgaXQgcnVucy4gIE9uY2UgLT5jb3JlX2R1bXAgcnVucyB1bmRlciBtbWFw X3NlbSBmb3Igd3JpdGluZyB0aGUKZnVuY3Rpb24gbW1nZXRfc3RpbGxfdmFsaWQoKSBjYW4gYmUg ZHJvcHBlZC4KCkFsbG93aW5nIG1tYXBfc2VtIHByb3RlY3RlZCBzZWN0aW9ucyB0byBydW4gaW4g cGFyYWxsZWwgd2l0aCB0aGUKY29yZWR1bXAgcHJvdmlkZXMgc29tZSBtaW5vciBwYXJhbGxlbGlz bSBhZHZhbnRhZ2UgdG8gdGhlIHN3YXBvZmYgY29kZQood2hpY2ggc2VlbXMgdG8gYmUgc2FmZSBl bm91Z2ggYnkgbmV2ZXIgbWFuZ2xpbmcgYW55IHZtYSBmaWVsZCBhbmQgY2FuCmtlZXAgZG9pbmcg c3dhcGlucyBpbiBwYXJhbGxlbCB0byB0aGUgY29yZSBkdW1waW5nKSBhbmQgdG8gc29tZSBvdGhl cgpjb3JuZXIgY2FzZS4KCkluIG9yZGVyIHRvIGZhY2lsaXRhdGUgdGhlIGJhY2twb3J0aW5nIEkg YWRkZWQgIkZpeGVzOiA4NjAzOWJkM2I0ZTYiCmhvd2V2ZXIgdGhlIHNpZGUgZWZmZWN0IG9mIHRo aXMgc2FtZSByYWNlIGNvbmRpdGlvbiBpbiAvcHJvYy9waWQvbWVtCnNob3VsZCBiZSByZXByb2R1 Y2libGUgc2luY2UgYmVmb3JlIDIuNi4xMi1yYzIgc28gSSBjb3VsZG4ndCBhZGQgYW55Cm90aGVy ICJGaXhlczoiIGJlY2F1c2UgdGhlcmUncyBubyBoYXNoIGJleW9uZCB0aGUgZ2l0IGdlbmVzaXMg Y29tbWl0LgoKQmVjYXVzZSBmaW5kX2V4dGVuZF92bWEoKSBpcyB0aGUgb25seSBsb2NhdGlvbiBv dXRzaWRlIG9mIHRoZSBwcm9jZXNzCmNvbnRleHQgdGhhdCBjb3VsZCBtb2RpZnkgdGhlICJtbSIg c3RydWN0dXJlcyB1bmRlciBtbWFwX3NlbSBmb3IKcmVhZGluZywgYnkgYWRkaW5nIHRoZSBtbWdl dF9zdGlsbF92YWxpZCgpIGNoZWNrIHRvIGl0LCBhbGwgb3RoZXIgY2FzZXMKdGhhdCB0YWtlIHRo ZSBtbWFwX3NlbSBmb3IgcmVhZGluZyBkb24ndCBuZWVkIHRoZSBuZXcgY2hlY2sgYWZ0ZXIKbW1n ZXRfbm90X3plcm8oKS9nZXRfdGFza19tbSgpLiAgVGhlIGV4cGFuZF9zdGFjaygpIGluIHBhZ2Ug ZmF1bHQKY29udGV4dCBhbHNvIGRvZXNuJ3QgbmVlZCB0aGUgbmV3IGNoZWNrLCBiZWNhdXNlIGFs bCB0YXNrcyB1bmRlciBjb3JlCmR1bXBpbmcgYXJlIGZyb3plbi4KCkxpbms6IGh0dHA6Ly9sa21s Lmtlcm5lbC5vcmcvci8yMDE5MDMyNTIyNDk0OS4xMTA2OC0xLWFhcmNhbmdlQHJlZGhhdC5jb20K Rml4ZXM6IDg2MDM5YmQzYjRlNiAoInVzZXJmYXVsdGZkOiBhZGQgbmV3IHN5c2NhbGwgdG8gcHJv dmlkZSBtZW1vcnkgZXh0ZXJuYWxpemF0aW9uIikKU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFyY2Fu Z2VsaSA8YWFyY2FuZ2VAcmVkaGF0LmNvbT4KUmVwb3J0ZWQtYnk6IEphbm4gSG9ybiA8amFubmhA Z29vZ2xlLmNvbT4KU3VnZ2VzdGVkLWJ5OiBPbGVnIE5lc3Rlcm92IDxvbGVnQHJlZGhhdC5jb20+ CkFja2VkLWJ5OiBQZXRlciBYdSA8cGV0ZXJ4QHJlZGhhdC5jb20+ClJldmlld2VkLWJ5OiBNaWtl IFJhcG9wb3J0IDxycHB0QGxpbnV4LmlibS5jb20+ClJldmlld2VkLWJ5OiBPbGVnIE5lc3Rlcm92 IDxvbGVnQHJlZGhhdC5jb20+ClJldmlld2VkLWJ5OiBKYW5uIEhvcm4gPGphbm5oQGdvb2dsZS5j b20+CkFja2VkLWJ5OiBKYXNvbiBHdW50aG9ycGUgPGpnZ0BtZWxsYW5veC5jb20+CkFja2VkLWJ5 OiBNaWNoYWwgSG9ja28gPG1ob2Nrb0BzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogQW5kcmV3IE1v cnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogTGludXMgVG9y dmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPgpbYndoOiBCYWNrcG9ydGVkIHRv IDQuNDoKIC0gRHJvcCBjaGFuZ2VzIGluIEluZmluaWJhbmQgYW5kIHVzZXJmYXVsdGZkX2V2ZW50 X3dhaXRfY29tcGxldGlvbigpCiAtIEFkanVzdCBmaWxlbmFtZSwgY29udGV4dF0KU2lnbmVkLW9m Zi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQog ZnMvcHJvYy90YXNrX21tdS5jICAgIHwgMTggKysrKysrKysrKysrKysrKysrCiBmcy91c2VyZmF1 bHRmZC5jICAgICAgfCAgNyArKysrKysrCiBpbmNsdWRlL2xpbnV4L3NjaGVkLmggfCAyMSArKysr KysrKysrKysrKysrKysrKysKIG1tL21tYXAuYyAgICAgICAgICAgICB8ICA3ICsrKysrKy0KIDQg ZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL2ZzL3Byb2MvdGFza19tbXUuYyBiL2ZzL3Byb2MvdGFza19tbXUuYwppbmRleCA3NTY5MWEy MDMxM2MuLmFkMWNjZGNlZjc0ZSAxMDA2NDQKLS0tIGEvZnMvcHJvYy90YXNrX21tdS5jCisrKyBi L2ZzL3Byb2MvdGFza19tbXUuYwpAQCAtOTQ3LDYgKzk0NywyNCBAQCBzdGF0aWMgc3NpemVfdCBj bGVhcl9yZWZzX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVm LAogCQkJCQljb250aW51ZTsKIAkJCQl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOwogCQkJCWRvd25f d3JpdGUoJm1tLT5tbWFwX3NlbSk7CisJCQkJLyoKKwkJCQkgKiBBdm9pZCB0byBtb2RpZnkgdm1h LT52bV9mbGFncworCQkJCSAqIHdpdGhvdXQgbG9ja2VkIG9wcyB3aGlsZSB0aGUKKwkJCQkgKiBj b3JlZHVtcCByZWFkcyB0aGUgdm1fZmxhZ3MuCisJCQkJICovCisJCQkJaWYgKCFtbWdldF9zdGls bF92YWxpZChtbSkpIHsKKwkJCQkJLyoKKwkJCQkJICogU2lsZW50bHkgcmV0dXJuICJjb3VudCIK KwkJCQkJICogbGlrZSBpZiBnZXRfdGFza19tbSgpCisJCQkJCSAqIGZhaWxlZC4gRklYTUU6IHNo b3VsZCB0aGlzCisJCQkJCSAqIGZ1bmN0aW9uIGhhdmUgcmV0dXJuZWQKKwkJCQkJICogLUVTUkNI IGlmIGdldF90YXNrX21tKCkKKwkJCQkJICogZmFpbGVkIGxpa2UgaWYKKwkJCQkJICogZ2V0X3By b2NfdGFzaygpIGZhaWxzPworCQkJCQkgKi8KKwkJCQkJdXBfd3JpdGUoJm1tLT5tbWFwX3NlbSk7 CisJCQkJCWdvdG8gb3V0X21tOworCQkJCX0KIAkJCQlmb3IgKHZtYSA9IG1tLT5tbWFwOyB2bWE7 IHZtYSA9IHZtYS0+dm1fbmV4dCkgewogCQkJCQl2bWEtPnZtX2ZsYWdzICY9IH5WTV9TT0ZURElS VFk7CiAJCQkJCXZtYV9zZXRfcGFnZV9wcm90KHZtYSk7CmRpZmYgLS1naXQgYS9mcy91c2VyZmF1 bHRmZC5jIGIvZnMvdXNlcmZhdWx0ZmQuYwppbmRleCBlOTM1NDEyODJhYTEuLmYxODdlMDJkMjY3 ZSAxMDA2NDQKLS0tIGEvZnMvdXNlcmZhdWx0ZmQuYworKysgYi9mcy91c2VyZmF1bHRmZC5jCkBA IC00NDYsNiArNDQ2LDggQEAgc3RhdGljIGludCB1c2VyZmF1bHRmZF9yZWxlYXNlKHN0cnVjdCBp bm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQogCSAqIHRha2luZyB0aGUgbW1hcF9zZW0g Zm9yIHdyaXRpbmcuCiAJICovCiAJZG93bl93cml0ZSgmbW0tPm1tYXBfc2VtKTsKKwlpZiAoIW1t Z2V0X3N0aWxsX3ZhbGlkKG1tKSkKKwkJZ290byBza2lwX21tOwogCXByZXYgPSBOVUxMOwogCWZv ciAodm1hID0gbW0tPm1tYXA7IHZtYTsgdm1hID0gdm1hLT52bV9uZXh0KSB7CiAJCWNvbmRfcmVz Y2hlZCgpOwpAQCAtNDY4LDYgKzQ3MCw3IEBAIHN0YXRpYyBpbnQgdXNlcmZhdWx0ZmRfcmVsZWFz ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIAkJdm1hLT52bV9mbGFn cyA9IG5ld19mbGFnczsKIAkJdm1hLT52bV91c2VyZmF1bHRmZF9jdHggPSBOVUxMX1ZNX1VGRkRf Q1RYOwogCX0KK3NraXBfbW06CiAJdXBfd3JpdGUoJm1tLT5tbWFwX3NlbSk7CiAJbW1wdXQobW0p Owogd2FrZXVwOgpAQCAtNzY5LDYgKzc3Miw4IEBAIHN0YXRpYyBpbnQgdXNlcmZhdWx0ZmRfcmVn aXN0ZXIoc3RydWN0IHVzZXJmYXVsdGZkX2N0eCAqY3R4LAogCQlnb3RvIG91dDsKIAogCWRvd25f d3JpdGUoJm1tLT5tbWFwX3NlbSk7CisJaWYgKCFtbWdldF9zdGlsbF92YWxpZChtbSkpCisJCWdv dG8gb3V0X3VubG9jazsKIAl2bWEgPSBmaW5kX3ZtYV9wcmV2KG1tLCBzdGFydCwgJnByZXYpOwog CWlmICghdm1hKQogCQlnb3RvIG91dF91bmxvY2s7CkBAIC05MTQsNiArOTE5LDggQEAgc3RhdGlj IGludCB1c2VyZmF1bHRmZF91bnJlZ2lzdGVyKHN0cnVjdCB1c2VyZmF1bHRmZF9jdHggKmN0eCwK IAkJZ290byBvdXQ7CiAKIAlkb3duX3dyaXRlKCZtbS0+bW1hcF9zZW0pOworCWlmICghbW1nZXRf c3RpbGxfdmFsaWQobW0pKQorCQlnb3RvIG91dF91bmxvY2s7CiAJdm1hID0gZmluZF92bWFfcHJl dihtbSwgc3RhcnQsICZwcmV2KTsKIAlpZiAoIXZtYSkKIAkJZ290byBvdXRfdW5sb2NrOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zY2hlZC5oIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCmlu ZGV4IDMxNWRmMTQ0YzE1Ni4uYmU2ZjM1NzI5MzBjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L3NjaGVkLmgKKysrIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCkBAIC0yNjI1LDYgKzI2MjUsMjcg QEAgc3RhdGljIGlubGluZSBib29sIG1tZ2V0X25vdF96ZXJvKHN0cnVjdCBtbV9zdHJ1Y3QgKm1t KQogCXJldHVybiBhdG9taWNfaW5jX25vdF96ZXJvKCZtbS0+bW1fdXNlcnMpOwogfQogCisvKgor ICogVGhpcyBoYXMgdG8gYmUgY2FsbGVkIGFmdGVyIGEgZ2V0X3Rhc2tfbW0oKS9tbWdldF9ub3Rf emVybygpCisgKiBmb2xsb3dlZCBieSB0YWtpbmcgdGhlIG1tYXBfc2VtIGZvciB3cml0aW5nIGJl Zm9yZSBtb2RpZnlpbmcgdGhlCisgKiB2bWFzIG9yIGFueXRoaW5nIHRoZSBjb3JlZHVtcCBwcmV0 ZW5kcyBub3QgdG8gY2hhbmdlIGZyb20gdW5kZXIgaXQuCisgKgorICogTk9URTogZmluZF9leHRl bmRfdm1hKCkgY2FsbGVkIGZyb20gR1VQIGNvbnRleHQgaXMgdGhlIG9ubHkgcGxhY2UKKyAqIHRo YXQgY2FuIG1vZGlmeSB0aGUgIm1tIiAobm90YWJseSB0aGUgdm1fc3RhcnQvZW5kKSB1bmRlciBt bWFwX3NlbQorICogZm9yIHJlYWRpbmcgYW5kIG91dHNpZGUgdGhlIGNvbnRleHQgb2YgdGhlIHBy b2Nlc3MsIHNvIGl0IGlzIGFsc28KKyAqIHRoZSBvbmx5IGNhc2UgdGhhdCBob2xkcyB0aGUgbW1h cF9zZW0gZm9yIHJlYWRpbmcgdGhhdCBtdXN0IGNhbGwKKyAqIHRoaXMgZnVuY3Rpb24uIEdlbmVy YWxseSBpZiB0aGUgbW1hcF9zZW0gaXMgaG9sZCBmb3IgcmVhZGluZworICogdGhlcmUncyBubyBu ZWVkIG9mIHRoaXMgY2hlY2sgYWZ0ZXIgZ2V0X3Rhc2tfbW0oKS9tbWdldF9ub3RfemVybygpLgor ICoKKyAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIG9ic29sZXRlZCBhbmQgdGhlIGNoZWNrIGNhbiBi ZSByZW1vdmVkLCBhZnRlcgorICogdGhlIGNvcmVkdW1wIGNvZGUgd2lsbCBob2xkIHRoZSBtbWFw X3NlbSBmb3Igd3JpdGluZyBiZWZvcmUKKyAqIGludm9raW5nIHRoZSAtPmNvcmVfZHVtcCBtZXRo b2RzLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wgbW1nZXRfc3RpbGxfdmFsaWQoc3RydWN0IG1t X3N0cnVjdCAqbW0pCit7CisJcmV0dXJuIGxpa2VseSghbW0tPmNvcmVfc3RhdGUpOworfQorCiAv KiBtbXB1dCBnZXRzIHJpZCBvZiB0aGUgbWFwcGluZ3MgYW5kIGFsbCB1c2VyLXNwYWNlICovCiBl eHRlcm4gdm9pZCBtbXB1dChzdHJ1Y3QgbW1fc3RydWN0ICopOwogLyogR3JhYiBhIHJlZmVyZW5j ZSB0byBhIHRhc2sncyBtbSwgaWYgaXQgaXMgbm90IGFscmVhZHkgZ29pbmcgYXdheSAqLwpkaWZm IC0tZ2l0IGEvbW0vbW1hcC5jIGIvbW0vbW1hcC5jCmluZGV4IGJhYTRjMTI4MGJmZi4uYjM4Yjll YjMyYmNjIDEwMDY0NAotLS0gYS9tbS9tbWFwLmMKKysrIGIvbW0vbW1hcC5jCkBAIC00Miw2ICs0 Miw3IEBACiAjaW5jbHVkZSA8bGludXgvbWVtb3J5Lmg+CiAjaW5jbHVkZSA8bGludXgvcHJpbnRr Lmg+CiAjaW5jbHVkZSA8bGludXgvdXNlcmZhdWx0ZmRfay5oPgorI2luY2x1ZGUgPGxpbnV4L3Nj aGVkLmg+CiAKICNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGFzbS9jYWNoZWZs dXNoLmg+CkBAIC0yMzk4LDcgKzIzOTksOCBAQCBmaW5kX2V4dGVuZF92bWEoc3RydWN0IG1tX3N0 cnVjdCAqbW0sIHVuc2lnbmVkIGxvbmcgYWRkcikKIAl2bWEgPSBmaW5kX3ZtYV9wcmV2KG1tLCBh ZGRyLCAmcHJldik7CiAJaWYgKHZtYSAmJiAodm1hLT52bV9zdGFydCA8PSBhZGRyKSkKIAkJcmV0 dXJuIHZtYTsKLQlpZiAoIXByZXYgfHwgZXhwYW5kX3N0YWNrKHByZXYsIGFkZHIpKQorCS8qIGRv bid0IGFsdGVyIHZtX2VuZCBpZiB0aGUgY29yZWR1bXAgaXMgcnVubmluZyAqLworCWlmICghcHJl diB8fCAhbW1nZXRfc3RpbGxfdmFsaWQobW0pIHx8IGV4cGFuZF9zdGFjayhwcmV2LCBhZGRyKSkK IAkJcmV0dXJuIE5VTEw7CiAJaWYgKHByZXYtPnZtX2ZsYWdzICYgVk1fTE9DS0VEKQogCQlwb3B1 bGF0ZV92bWFfcGFnZV9yYW5nZShwcmV2LCBhZGRyLCBwcmV2LT52bV9lbmQsIE5VTEwpOwpAQCAt MjQyNCw2ICsyNDI2LDkgQEAgZmluZF9leHRlbmRfdm1hKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1 bnNpZ25lZCBsb25nIGFkZHIpCiAJCXJldHVybiB2bWE7CiAJaWYgKCEodm1hLT52bV9mbGFncyAm IFZNX0dST1dTRE9XTikpCiAJCXJldHVybiBOVUxMOworCS8qIGRvbid0IGFsdGVyIHZtX3N0YXJ0 IGlmIHRoZSBjb3JlZHVtcCBpcyBydW5uaW5nICovCisJaWYgKCFtbWdldF9zdGlsbF92YWxpZCht bSkpCisJCXJldHVybiBOVUxMOwogCXN0YXJ0ID0gdm1hLT52bV9zdGFydDsKIAlpZiAoZXhwYW5k X3N0YWNrKHZtYSwgYWRkcikpCiAJCXJldHVybiBOVUxMOwotLSAKQmVuIEh1dGNoaW5ncywgU29m dHdhcmUgRGV2ZWxvcGVyICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayBMdGQKaHR0 cHM6Ly93d3cuY29kZXRoaW5rLmNvLnVrLyAgICAgICAgICAgICAgICAgRGFsZSBIb3VzZSwgMzUg RGFsZSBTdHJlZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmNoZXN0 ZXIsIE0xIDJIRiwgVW5pdGVkIEtpbmdkb20KCn== --=-yS4p5FQK3QJ8GxF+mee1--