From: Mamta Shukla Subject: [PATCH DRM] drm: msm: disp: dpu1: Use DRM_DEV_* instead of DPU_* Date: Sat, 20 Oct 2018 23:33:54 +0530 Message-ID: <20181020180354.GA338@armorer> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pl1-x644.google.com (mail-pl1-x644.google.com [IPv6:2607:f8b0:4864:20::644]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2656A6E2B7 for ; Sat, 20 Oct 2018 18:04:02 +0000 (UTC) Received: by mail-pl1-x644.google.com with SMTP id y11-v6so17244893plt.3 for ; Sat, 20 Oct 2018 11:04:02 -0700 (PDT) Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: outreachy-kernel@googlegroups.com Cc: airlied@linux.ie, daniel.vetter@ffwll.ch, sean@poorly.run, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VXNlIERSTV9ERVZfRVJST1IvREVCVUcgaW5zdGVhZCBvZiBEUFVfRVJST1IvREVCVUcgIHRvIGdl bmVyYXRlCmRybS1mb3JtYXR0ZWQgc3BlY2lmaWMgbG9nIG1lc3NhZ2VzIGluIHRoZSBLZXJuZWwg bG9nIGluIGNhc2Ugb2YKbXVsdGlwbGUgaW5zdGFuY2VzLgoKU2lnbmVkLW9mZi1ieTogTWFtdGEg U2h1a2xhIDxtYW10YXNodWtsYTU1NUBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMgICAgICAgfCAgNTggKysrLS0tLQogZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5jICAgICAgfCAgNjAgKysrLS0tLQog ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyAgICAgICAgICAgfCAxNzYg KysrKysrKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf ZW5jb2Rlci5jICAgICAgICB8IDEzNCArKysrKysrKy0tLS0tLS0tCiAuLi4vZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMgICB8ICA0MCArKy0tLQogLi4uL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jICAgfCAgNDIgKystLS0KIGRy aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9mb3JtYXRzLmMgICAgICAgIHwgIDEwICst CiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jICAgICB8ICAg MiArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NkbS5jICAgICAgICAg fCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jdGwuYyAgICAg ICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50Zi5j ICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2xt LmMgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d19waW5ncG9uZy5jICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfc3NwcC5jICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2h3X3RvcC5jICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9pcnEuYyAgICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfa21zLmMgICAgICAgICAgICB8ICA5MCArKysrKy0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X21kc3MuYyAgICAgICAgICAgfCAgMTAgKy0KIGRy aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9wbGFuZS5jICAgICAgICAgIHwgMTM0ICsr KysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jICAg ICAgICAgICAgIHwgIDk2ICsrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfdmJpZi5jICAgICAgICAgICB8ICAzMiArKy0tCiAyMSBmaWxlcyBjaGFuZ2VkLCA0NTEg aW5zZXJ0aW9ucygrKSwgNDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMKaW5kZXggODc5YzEzZi4uYjlhYTQ1MiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfaXJxLmMKQEAgLTg0LDEyICs4NCwx MiBAQCBzdGF0aWMgaW50IF9kcHVfY29yZV9pcnFfZW5hYmxlKHN0cnVjdCBkcHVfa21zICpkcHVf a21zLCBpbnQgaXJxX2lkeCkKIAlpZiAoIWRwdV9rbXMgfHwgIWRwdV9rbXMtPmh3X2ludHIgfHwK IAkJCSFkcHVfa21zLT5pcnFfb2JqLmVuYWJsZV9jb3VudHMgfHwKIAkJCSFkcHVfa21zLT5pcnFf b2JqLmlycV9jb3VudHMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFtc1xuIik7CisJCURS TV9ERVZfRVJST1IoImludmFsaWQgcGFyYW1zXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQog CiAJaWYgKGlycV9pZHggPCAwIHx8IGlycV9pZHggPj0gZHB1X2ttcy0+aHdfaW50ci0+aXJxX2lk eF90Ymxfc2l6ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgSVJRIGluZGV4OiBbJWRdXG4iLCBp cnFfaWR4KTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBJUlEgaW5kZXg6IFslZF1cbiIsIGly cV9pZHgpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTEwMiwxNSArMTAyLDE1IEBAIHN0 YXRpYyBpbnQgX2RwdV9jb3JlX2lycV9lbmFibGUoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMsIGlu dCBpcnFfaWR4KQogCQkJCWRwdV9rbXMtPmh3X2ludHIsCiAJCQkJaXJxX2lkeCk7CiAJCWlmIChy ZXQpCi0JCQlEUFVfRVJST1IoIkZhaWwgdG8gZW5hYmxlIElSUSBmb3IgaXJxX2lkeDolZFxuIiwK KwkJCURSTV9ERVZfRVJST1IoIkZhaWwgdG8gZW5hYmxlIElSUSBmb3IgaXJxX2lkeDolZFxuIiwK IAkJCQkJaXJxX2lkeCk7CiAKLQkJRFBVX0RFQlVHKCJpcnFfaWR4PSVkIHJldD0lZFxuIiwgaXJx X2lkeCwgcmV0KTsKKwkJRFJNX0RFVl9ERUJVRygiaXJxX2lkeD0lZCByZXQ9JWRcbiIsIGlycV9p ZHgsIHJldCk7CiAKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmRwdV9rbXMtPmlycV9vYmouY2JfbG9j aywgaXJxX2ZsYWdzKTsKIAkJLyogZW1wdHkgY2FsbGJhY2sgbGlzdCBidXQgaW50ZXJydXB0IGlz IGVuYWJsZWQgKi8KIAkJaWYgKGxpc3RfZW1wdHkoJmRwdV9rbXMtPmlycV9vYmouaXJxX2NiX3Ri bFtpcnFfaWR4XSkpCi0JCQlEUFVfRVJST1IoImlycV9pZHg9JWQgZW5hYmxlZCB3aXRoIG5vIGNh bGxiYWNrXG4iLAorCQkJRFJNX0RFVl9FUlJPUigiaXJxX2lkeD0lZCBlbmFibGVkIHdpdGggbm8g Y2FsbGJhY2tcbiIsCiAJCQkJCWlycV9pZHgpOwogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZk cHVfa21zLT5pcnFfb2JqLmNiX2xvY2ssIGlycV9mbGFncyk7CiAJfQpAQCAtMTIzLDcgKzEyMyw3 IEBAIGludCBkcHVfY29yZV9pcnFfZW5hYmxlKHN0cnVjdCBkcHVfa21zICpkcHVfa21zLCBpbnQg KmlycV9pZHhzLCB1MzIgaXJxX2NvdW50KQogCWludCBpLCByZXQgPSAwLCBjb3VudHM7CiAKIAlp ZiAoIWRwdV9rbXMgfHwgIWlycV9pZHhzIHx8ICFpcnFfY291bnQpIHsKLQkJRFBVX0VSUk9SKCJp bnZhbGlkIHBhcmFtc1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgcGFyYW1zXG4iKTsK IAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0xNDcsMTIgKzE0NywxMiBAQCBzdGF0aWMgaW50 IF9kcHVfY29yZV9pcnFfZGlzYWJsZShzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywgaW50IGlycV9p ZHgpCiAJaW50IHJldCA9IDAsIGVuYWJsZV9jb3VudDsKIAogCWlmICghZHB1X2ttcyB8fCAhZHB1 X2ttcy0+aHdfaW50ciB8fCAhZHB1X2ttcy0+aXJxX29iai5lbmFibGVfY291bnRzKSB7Ci0JCURQ VV9FUlJPUigiaW52YWxpZCBwYXJhbXNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIHBh cmFtc1xuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCWlmIChpcnFfaWR4IDwgMCB8fCBp cnFfaWR4ID49IGRwdV9rbXMtPmh3X2ludHItPmlycV9pZHhfdGJsX3NpemUpIHsKLQkJRFBVX0VS Uk9SKCJpbnZhbGlkIElSUSBpbmRleDogWyVkXVxuIiwgaXJxX2lkeCk7CisJCURSTV9ERVZfRVJS T1IoImludmFsaWQgSVJRIGluZGV4OiBbJWRdXG4iLCBpcnFfaWR4KTsKIAkJcmV0dXJuIC1FSU5W QUw7CiAJfQogCkBAIC0xNjUsOSArMTY1LDkgQEAgc3RhdGljIGludCBfZHB1X2NvcmVfaXJxX2Rp c2FibGUoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMsIGludCBpcnFfaWR4KQogCQkJCWRwdV9rbXMt Pmh3X2ludHIsCiAJCQkJaXJxX2lkeCk7CiAJCWlmIChyZXQpCi0JCQlEUFVfRVJST1IoIkZhaWwg dG8gZGlzYWJsZSBJUlEgZm9yIGlycV9pZHg6JWRcbiIsCisJCQlEUk1fREVWX0VSUk9SKCJGYWls IHRvIGRpc2FibGUgSVJRIGZvciBpcnFfaWR4OiVkXG4iLAogCQkJCQlpcnFfaWR4KTsKLQkJRFBV X0RFQlVHKCJpcnFfaWR4PSVkIHJldD0lZFxuIiwgaXJxX2lkeCwgcmV0KTsKKwkJRFJNX0RFVl9E RUJVRygiaXJxX2lkeD0lZCByZXQ9JWRcbiIsIGlycV9pZHgsIHJldCk7CiAJfQogCiAJcmV0dXJu IHJldDsKQEAgLTE3OCw3ICsxNzgsNyBAQCBpbnQgZHB1X2NvcmVfaXJxX2Rpc2FibGUoc3RydWN0 IGRwdV9rbXMgKmRwdV9rbXMsIGludCAqaXJxX2lkeHMsIHUzMiBpcnFfY291bnQpCiAJaW50IGks IHJldCA9IDAsIGNvdW50czsKIAogCWlmICghZHB1X2ttcyB8fCAhaXJxX2lkeHMgfHwgIWlycV9j b3VudCkgewotCQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1zXG4iKTsKKwkJRFJNX0RFVl9FUlJP UigiaW52YWxpZCBwYXJhbXNcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTE5OSw3 ICsxOTksNyBAQCB1MzIgZHB1X2NvcmVfaXJxX3JlYWQoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMs IGludCBpcnFfaWR4LCBib29sIGNsZWFyKQogCQlyZXR1cm4gMDsKIAogCWlmIChpcnFfaWR4IDwg MCkgewotCQlEUFVfRVJST1IoIlslcFNdIGludmFsaWQgaXJxX2lkeD0lZFxuIiwKKwkJRFJNX0RF Vl9FUlJPUigiWyVwU10gaW52YWxpZCBpcnFfaWR4PSVkXG4iLAogCQkJCV9fYnVpbHRpbl9yZXR1 cm5fYWRkcmVzcygwKSwgaXJxX2lkeCk7CiAJCXJldHVybiAwOwogCX0KQEAgLTIxNCwxMiArMjE0 LDEyIEBAIGludCBkcHVfY29yZV9pcnFfcmVnaXN0ZXJfY2FsbGJhY2soc3RydWN0IGRwdV9rbXMg KmRwdV9rbXMsIGludCBpcnFfaWR4LAogCXVuc2lnbmVkIGxvbmcgaXJxX2ZsYWdzOwogCiAJaWYg KCFkcHVfa21zIHx8ICFkcHVfa21zLT5pcnFfb2JqLmlycV9jYl90YmwpIHsKLQkJRFBVX0VSUk9S KCJpbnZhbGlkIHBhcmFtc1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgcGFyYW1zXG4i KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJaWYgKCFyZWdpc3Rlcl9pcnFfY2IgfHwgIXJl Z2lzdGVyX2lycV9jYi0+ZnVuYykgewotCQlEUFVfRVJST1IoImludmFsaWQgaXJxX2NiOiVkIGZ1 bmM6JWRcbiIsCisJCURSTV9ERVZfRVJST1IoImludmFsaWQgaXJxX2NiOiVkIGZ1bmM6JWRcbiIs CiAJCQkJcmVnaXN0ZXJfaXJxX2NiICE9IE5VTEwsCiAJCQkJcmVnaXN0ZXJfaXJxX2NiID8KIAkJ CQkJcmVnaXN0ZXJfaXJxX2NiLT5mdW5jICE9IE5VTEwgOiAtMSk7CkBAIC0yMjcsMTEgKzIyNywx MSBAQCBpbnQgZHB1X2NvcmVfaXJxX3JlZ2lzdGVyX2NhbGxiYWNrKHN0cnVjdCBkcHVfa21zICpk cHVfa21zLCBpbnQgaXJxX2lkeCwKIAl9CiAKIAlpZiAoaXJxX2lkeCA8IDAgfHwgaXJxX2lkeCA+ PSBkcHVfa21zLT5od19pbnRyLT5pcnFfaWR4X3RibF9zaXplKSB7Ci0JCURQVV9FUlJPUigiaW52 YWxpZCBJUlEgaW5kZXg6IFslZF1cbiIsIGlycV9pZHgpOworCQlEUk1fREVWX0VSUk9SKCJpbnZh bGlkIElSUSBpbmRleDogWyVkXVxuIiwgaXJxX2lkeCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0K IAotCURQVV9ERUJVRygiWyVwU10gaXJxX2lkeD0lZFxuIiwgX19idWlsdGluX3JldHVybl9hZGRy ZXNzKDApLCBpcnFfaWR4KTsKKwlEUk1fREVWX0RFQlVHKCJbJXBTXSBpcnFfaWR4PSVkXG4iLCBf X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIGlycV9pZHgpOwogCiAJc3Bpbl9sb2NrX2lycXNh dmUoJmRwdV9rbXMtPmlycV9vYmouY2JfbG9jaywgaXJxX2ZsYWdzKTsKIAl0cmFjZV9kcHVfY29y ZV9pcnFfcmVnaXN0ZXJfY2FsbGJhY2soaXJxX2lkeCwgcmVnaXN0ZXJfaXJxX2NiKTsKQEAgLTI0 OSwxMiArMjQ5LDEyIEBAIGludCBkcHVfY29yZV9pcnFfdW5yZWdpc3Rlcl9jYWxsYmFjayhzdHJ1 Y3QgZHB1X2ttcyAqZHB1X2ttcywgaW50IGlycV9pZHgsCiAJdW5zaWduZWQgbG9uZyBpcnFfZmxh Z3M7CiAKIAlpZiAoIWRwdV9rbXMgfHwgIWRwdV9rbXMtPmlycV9vYmouaXJxX2NiX3RibCkgewot CQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1zXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxp ZCBwYXJhbXNcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlpZiAoIXJlZ2lzdGVyX2ly cV9jYiB8fCAhcmVnaXN0ZXJfaXJxX2NiLT5mdW5jKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBp cnFfY2I6JWQgZnVuYzolZFxuIiwKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBpcnFfY2I6JWQg ZnVuYzolZFxuIiwKIAkJCQlyZWdpc3Rlcl9pcnFfY2IgIT0gTlVMTCwKIAkJCQlyZWdpc3Rlcl9p cnFfY2IgPwogCQkJCQlyZWdpc3Rlcl9pcnFfY2ItPmZ1bmMgIT0gTlVMTCA6IC0xKTsKQEAgLTI2 MiwxMSArMjYyLDExIEBAIGludCBkcHVfY29yZV9pcnFfdW5yZWdpc3Rlcl9jYWxsYmFjayhzdHJ1 Y3QgZHB1X2ttcyAqZHB1X2ttcywgaW50IGlycV9pZHgsCiAJfQogCiAJaWYgKGlycV9pZHggPCAw IHx8IGlycV9pZHggPj0gZHB1X2ttcy0+aHdfaW50ci0+aXJxX2lkeF90Ymxfc2l6ZSkgewotCQlE UFVfRVJST1IoImludmFsaWQgSVJRIGluZGV4OiBbJWRdXG4iLCBpcnFfaWR4KTsKKwkJRFJNX0RF Vl9FUlJPUigiaW52YWxpZCBJUlEgaW5kZXg6IFslZF1cbiIsIGlycV9pZHgpOwogCQlyZXR1cm4g LUVJTlZBTDsKIAl9CiAKLQlEUFVfREVCVUcoIlslcFNdIGlycV9pZHg9JWRcbiIsIF9fYnVpbHRp bl9yZXR1cm5fYWRkcmVzcygwKSwgaXJxX2lkeCk7CisJRFJNX0RFVl9ERUJVRygiWyVwU10gaXJx X2lkeD0lZFxuIiwgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCBpcnFfaWR4KTsKIAogCXNw aW5fbG9ja19pcnFzYXZlKCZkcHVfa21zLT5pcnFfb2JqLmNiX2xvY2ssIGlycV9mbGFncyk7CiAJ dHJhY2VfZHB1X2NvcmVfaXJxX3VucmVnaXN0ZXJfY2FsbGJhY2soaXJxX2lkeCwgcmVnaXN0ZXJf aXJxX2NiKTsKQEAgLTI3NCw3ICsyNzQsNyBAQCBpbnQgZHB1X2NvcmVfaXJxX3VucmVnaXN0ZXJf Y2FsbGJhY2soc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMsIGludCBpcnFfaWR4LAogCS8qIGVtcHR5 IGNhbGxiYWNrIGxpc3QgYnV0IGludGVycnVwdCBpcyBzdGlsbCBlbmFibGVkICovCiAJaWYgKGxp c3RfZW1wdHkoJmRwdV9rbXMtPmlycV9vYmouaXJxX2NiX3RibFtpcnFfaWR4XSkgJiYKIAkJCWF0 b21pY19yZWFkKCZkcHVfa21zLT5pcnFfb2JqLmVuYWJsZV9jb3VudHNbaXJxX2lkeF0pKQotCQlE UFVfRVJST1IoImlycV9pZHg9JWQgZW5hYmxlZCB3aXRoIG5vIGNhbGxiYWNrXG4iLCBpcnFfaWR4 KTsKKwkJRFJNX0RFVl9FUlJPUigiaXJxX2lkeD0lZCBlbmFibGVkIHdpdGggbm8gY2FsbGJhY2tc biIsIGlycV9pZHgpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRwdV9rbXMtPmlycV9vYmou Y2JfbG9jaywgaXJxX2ZsYWdzKTsKIAogCXJldHVybiAwOwpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0 YXRpYyBpbnQgZHB1X2RlYnVnZnNfY29yZV9pcnFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZv aWQgKnYpCiAJaW50IGksIGlycV9jb3VudCwgZW5hYmxlX2NvdW50LCBjYl9jb3VudDsKIAogCWlm ICghaXJxX29iaiB8fCAhaXJxX29iai0+ZW5hYmxlX2NvdW50cyB8fCAhaXJxX29iai0+aXJxX2Ni X3RibCkgewotCQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7CisJCURSTV9ERVZf RVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMzc3 LDEzICszNzcsMTMgQEAgdm9pZCBkcHVfY29yZV9pcnFfcHJlaW5zdGFsbChzdHJ1Y3QgZHB1X2tt cyAqZHB1X2ttcykKIAlpbnQgaTsKIAogCWlmICghZHB1X2ttcykgewotCQlEUFVfRVJST1IoImlu dmFsaWQgZHB1X2ttc1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgZHB1X2ttc1xuIik7 CiAJCXJldHVybjsKIAl9IGVsc2UgaWYgKCFkcHVfa21zLT5kZXYpIHsKLQkJRFBVX0VSUk9SKCJp bnZhbGlkIGRybSBkZXZpY2VcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGRybSBkZXZp Y2VcbiIpOwogCQlyZXR1cm47CiAJfSBlbHNlIGlmICghZHB1X2ttcy0+ZGV2LT5kZXZfcHJpdmF0 ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgZGV2aWNlIHByaXZhdGVcbiIpOworCQlEUk1fREVW X0VSUk9SKCJpbnZhbGlkIGRldmljZSBwcml2YXRlXG4iKTsKIAkJcmV0dXJuOwogCX0KIAlwcml2 ID0gZHB1X2ttcy0+ZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTQyMSwxMyArNDIxLDEzIEBAIHZvaWQg ZHB1X2NvcmVfaXJxX3VuaW5zdGFsbChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKIAlpbnQgaTsK IAogCWlmICghZHB1X2ttcykgewotCQlEUFVfRVJST1IoImludmFsaWQgZHB1X2ttc1xuIik7CisJ CURSTV9ERVZfRVJST1IoImludmFsaWQgZHB1X2ttc1xuIik7CiAJCXJldHVybjsKIAl9IGVsc2Ug aWYgKCFkcHVfa21zLT5kZXYpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGRybSBkZXZpY2VcbiIp OworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGRybSBkZXZpY2VcbiIpOwogCQlyZXR1cm47CiAJ fSBlbHNlIGlmICghZHB1X2ttcy0+ZGV2LT5kZXZfcHJpdmF0ZSkgewotCQlEUFVfRVJST1IoImlu dmFsaWQgZGV2aWNlIHByaXZhdGVcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGRldmlj ZSBwcml2YXRlXG4iKTsKIAkJcmV0dXJuOwogCX0KIAlwcml2ID0gZHB1X2ttcy0+ZGV2LT5kZXZf cHJpdmF0ZTsKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIGRwdV9jb3JlX2lycV91bmluc3RhbGwo c3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpCiAJZm9yIChpID0gMDsgaSA8IGRwdV9rbXMtPmlycV9v YmoudG90YWxfaXJxczsgaSsrKQogCQlpZiAoYXRvbWljX3JlYWQoJmRwdV9rbXMtPmlycV9vYmou ZW5hYmxlX2NvdW50c1tpXSkgfHwKIAkJCQkhbGlzdF9lbXB0eSgmZHB1X2ttcy0+aXJxX29iai5p cnFfY2JfdGJsW2ldKSkKLQkJCURQVV9FUlJPUigiaXJxX2lkeD0lZCBzdGlsbCBlbmFibGVkL3Jl Z2lzdGVyZWRcbiIsIGkpOworCQkJRFJNX0RFVl9FUlJPUigiaXJxX2lkeD0lZCBzdGlsbCBlbmFi bGVkL3JlZ2lzdGVyZWRcbiIsIGkpOwogCiAJZHB1X2NsZWFyX2FsbF9pcnFzKGRwdV9rbXMpOwog CWRwdV9kaXNhYmxlX2FsbF9pcnFzKGRwdV9rbXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2NvcmVfcGVyZi5jCmluZGV4IDQxYzUxOTEuLjVlNGFjYTIgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb3JlX3BlcmYuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29yZV9wZXJmLmMKQEAgLTQ0LDEzICs0 NCwxMyBAQCBzdGF0aWMgc3RydWN0IGRwdV9rbXMgKl9kcHVfY3J0Y19nZXRfa21zKHN0cnVjdCBk cm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2OwogCiAJaWYgKCFj cnRjLT5kZXYgfHwgIWNydGMtPmRldi0+ZGV2X3ByaXZhdGUpIHsKLQkJRFBVX0VSUk9SKCJpbnZh bGlkIGRldmljZVxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgZGV2aWNlXG4iKTsKIAkJ cmV0dXJuIE5VTEw7CiAJfQogCiAJcHJpdiA9IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7CiAJaWYg KCFwcml2IHx8ICFwcml2LT5rbXMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGttc1xuIik7CisJ CURSTV9ERVZfRVJST1IoImludmFsaWQga21zXG4iKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBA IC03Myw3ICs3Myw3IEBAIHN0YXRpYyBib29sIF9kcHVfY29yZV92aWRlb19tb2RlX2ludGZfY29u bmVjdGVkKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlkcm1fZm9yX2VhY2hfY3J0Yyh0bXBfY3J0 YywgY3J0Yy0+ZGV2KSB7CiAJCWlmICgoZHB1X2NydGNfZ2V0X2ludGZfbW9kZSh0bXBfY3J0Yykg PT0gSU5URl9NT0RFX1ZJREVPKSAmJgogCQkJCV9kcHVfY29yZV9wZXJmX2NydGNfaXNfcG93ZXJf b24odG1wX2NydGMpKSB7Ci0JCQlEUFVfREVCVUcoInZpZGVvIGludGVyZmFjZSBjb25uZWN0ZWQg Y3J0YzolZFxuIiwKKwkJCURSTV9ERVZfREVCVUcoInZpZGVvIGludGVyZmFjZSBjb25uZWN0ZWQg Y3J0YzolZFxuIiwKIAkJCQl0bXBfY3J0Yy0+YmFzZS5pZCk7CiAJCQlpbnRmX2Nvbm5lY3RlZCA9 IHRydWU7CiAJCQlnb3RvIGVuZDsKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgX2RwdV9j b3JlX3BlcmZfY2FsY19jcnRjKHN0cnVjdCBkcHVfa21zICprbXMsCiAJaW50IGk7CiAKIAlpZiAo IWttcyB8fCAha21zLT5jYXRhbG9nIHx8ICFjcnRjIHx8ICFzdGF0ZSB8fCAhcGVyZikgewotCQlE UFVfRVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFs aWQgcGFyYW1ldGVyc1xuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBz dGF0aWMgdm9pZCBfZHB1X2NvcmVfcGVyZl9jYWxjX2NydGMoc3RydWN0IGRwdV9rbXMgKmttcywK IAkJcGVyZi0+Y29yZV9jbGtfcmF0ZSA9IGttcy0+cGVyZi5maXhfY29yZV9jbGtfcmF0ZTsKIAl9 CiAKLQlEUFVfREVCVUcoCisJRFJNX0RFVl9ERUJVRygKIAkJImNydGM9JWQgY2xrX3JhdGU9JWxs dSBjb3JlX2liPSVsbHUgY29yZV9hYj0lbGx1IGxsY2NfaWI9JWxsdSBsbGNjX2FiPSVsbHUgbWVt X2liPSVsbHUgbWVtX2FiPSVsbHVcbiIsCiAJCQljcnRjLT5iYXNlLmlkLCBwZXJmLT5jb3JlX2Ns a19yYXRlLAogCQkJcGVyZi0+bWF4X3Blcl9waXBlX2liW0RQVV9QT1dFUl9IQU5ETEVfREJVU19J RF9NTk9DXSwKQEAgLTE0NSwxMyArMTQ1LDEzIEBAIGludCBkcHVfY29yZV9wZXJmX2NydGNfY2hl Y2soc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWludCBpOwogCiAJaWYgKCFjcnRjIHx8ICFzdGF0 ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgY3J0Y1xuIik7CisJCURSTV9ERVZfRVJST1IoImlu dmFsaWQgY3J0Y1xuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCWttcyA9IF9kcHVfY3J0 Y19nZXRfa21zKGNydGMpOwogCWlmICgha21zIHx8ICFrbXMtPmNhdGFsb2cpIHsKLQkJRFBVX0VS Uk9SKCJpbnZhbGlkIHBhcmFtZXRlcnNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIHBh cmFtZXRlcnNcbiIpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBpbnQg ZHB1X2NvcmVfcGVyZl9jcnRjX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQlzdHJ1 Y3QgZHB1X2NydGNfc3RhdGUgKnRtcF9jc3RhdGUgPQogCQkJCQl0b19kcHVfY3J0Y19zdGF0ZSh0 bXBfY3J0Yy0+c3RhdGUpOwogCi0JCQkJRFBVX0RFQlVHKCJjcnRjOiVkIGJ3OiVsbHUgY3RybDol ZFxuIiwKKwkJCQlEUk1fREVWX0RFQlVHKCJjcnRjOiVkIGJ3OiVsbHUgY3RybDolZFxuIiwKIAkJ CQkJdG1wX2NydGMtPmJhc2UuaWQsCiAJCQkJCXRtcF9jc3RhdGUtPm5ld19wZXJmLmJ3X2N0bFtp XSwKIAkJCQkJdG1wX2NzdGF0ZS0+YndfY29udHJvbCk7CkBAIC0xOTMsNyArMTkzLDcgQEAgaW50 IGRwdV9jb3JlX3BlcmZfY3J0Y19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAkJLyog Y29udmVydCBiYW5kd2lkdGggdG8ga2IgKi8KIAkJYncgPSBESVZfUk9VTkRfVVBfVUxMKGJ3X3N1 bV9vZl9pbnRmcywgMTAwMCk7Ci0JCURQVV9ERUJVRygiY2FsY3VsYXRlZCBiYW5kd2lkdGg9JXVr XG4iLCBidyk7CisJCURSTV9ERVZfREVCVUcoImNhbGN1bGF0ZWQgYmFuZHdpZHRoPSV1a1xuIiwg YncpOwogCiAJCWlzX3ZpZGVvX21vZGUgPSBkcHVfY3J0Y19nZXRfaW50Zl9tb2RlKGNydGMpID09 IElOVEZfTU9ERV9WSURFTzsKIAkJdGhyZXNob2xkID0gKGlzX3ZpZGVvX21vZGUgfHwKQEAgLTIw MSwxNSArMjAxLDE1IEBAIGludCBkcHVfY29yZV9wZXJmX2NydGNfY2hlY2soc3RydWN0IGRybV9j cnRjICpjcnRjLAogCQkJa21zLT5jYXRhbG9nLT5wZXJmLm1heF9id19sb3cgOgogCQkJa21zLT5j YXRhbG9nLT5wZXJmLm1heF9id19oaWdoOwogCi0JCURQVV9ERUJVRygiZmluYWwgdGhyZXNob2xk IGJ3IGxpbWl0ID0gJWRcbiIsIHRocmVzaG9sZCk7CisJCURSTV9ERVZfREVCVUcoImZpbmFsIHRo cmVzaG9sZCBidyBsaW1pdCA9ICVkXG4iLCB0aHJlc2hvbGQpOwogCiAJCWlmICghZHB1X2NzdGF0 ZS0+YndfY29udHJvbCkgewotCQkJRFBVX0RFQlVHKCJieXBhc3MgYmFuZHdpZHRoIGNoZWNrXG4i KTsKKwkJCURSTV9ERVZfREVCVUcoImJ5cGFzcyBiYW5kd2lkdGggY2hlY2tcbiIpOwogCQl9IGVs c2UgaWYgKCF0aHJlc2hvbGQpIHsKLQkJCURQVV9FUlJPUigibm8gYmFuZHdpZHRoIGxpbWl0cyBz cGVjaWZpZWRcbiIpOworCQkJRFJNX0RFVl9FUlJPUigibm8gYmFuZHdpZHRoIGxpbWl0cyBzcGVj aWZpZWRcbiIpOwogCQkJcmV0dXJuIC1FMkJJRzsKIAkJfSBlbHNlIGlmIChidyA+IHRocmVzaG9s ZCkgewotCQkJRFBVX0VSUk9SKCJleGNlZWRzIGJhbmR3aWR0aDogJXVrYiA+ICV1a2JcbiIsIGJ3 LAorCQkJRFJNX0RFVl9FUlJPUigiZXhjZWVkcyBiYW5kd2lkdGg6ICV1a2IgPiAldWtiXG4iLCBi dywKIAkJCQkJdGhyZXNob2xkKTsKIAkJCXJldHVybiAtRTJCSUc7CiAJCX0KQEAgLTIzOCw3ICsy MzgsNyBAQCBzdGF0aWMgaW50IF9kcHVfY29yZV9wZXJmX2NydGNfdXBkYXRlX2J1cyhzdHJ1Y3Qg ZHB1X2ttcyAqa21zLAogCQkJCW1heChwZXJmLm1heF9wZXJfcGlwZV9pYltidXNfaWRdLAogCQkJ CWRwdV9jc3RhdGUtPm5ld19wZXJmLm1heF9wZXJfcGlwZV9pYltidXNfaWRdKTsKIAotCQkJRFBV X0RFQlVHKCJjcnRjPSVkIGJ1c19pZD0lZCBidz0lbGx1XG4iLAorCQkJRFJNX0RFVl9ERUJVRygi Y3J0Yz0lZCBidXNfaWQ9JWQgYnc9JWxsdVxuIiwKIAkJCQl0bXBfY3J0Yy0+YmFzZS5pZCwgYnVz X2lkLAogCQkJCWRwdV9jc3RhdGUtPm5ld19wZXJmLmJ3X2N0bFtidXNfaWRdKTsKIAkJfQpAQCAt MjYzLDEzICsyNjMsMTMgQEAgdm9pZCBkcHVfY29yZV9wZXJmX2NydGNfcmVsZWFzZV9idyhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCiAJaW50IGk7CiAKIAlpZiAoIWNydGMpIHsKLQkJRFBVX0VSUk9S KCJpbnZhbGlkIGNydGNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIpOwog CQlyZXR1cm47CiAJfQogCiAJa21zID0gX2RwdV9jcnRjX2dldF9rbXMoY3J0Yyk7CiAJaWYgKCFr bXMgfHwgIWttcy0+Y2F0YWxvZykgewotCQlEUFVfRVJST1IoImludmFsaWQga21zXG4iKTsKKwkJ RFJNX0RFVl9FUlJPUigiaW52YWxpZCBrbXNcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0yOTUs NyArMjk1LDcgQEAgdm9pZCBkcHVfY29yZV9wZXJmX2NydGNfcmVsZWFzZV9idyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCiAJLyogUmVsZWFzZSB0aGUgYmFuZHdpZHRoICovCiAJaWYgKGttcy0+cGVy Zi5lbmFibGVfYndfcmVsZWFzZSkgewogCQl0cmFjZV9kcHVfY21kX3JlbGVhc2VfYncoY3J0Yy0+ YmFzZS5pZCk7Ci0JCURQVV9ERUJVRygiUmVsZWFzZSBCVyBjcnRjPSVkXG4iLCBjcnRjLT5iYXNl LmlkKTsKKwkJRFJNX0RFVl9ERUJVRygiUmVsZWFzZSBCVyBjcnRjPSVkXG4iLCBjcnRjLT5iYXNl LmlkKTsKIAkJZm9yIChpID0gMDsgaSA8IERQVV9QT1dFUl9IQU5ETEVfREJVU19JRF9NQVg7IGkr KykgewogCQkJZHB1X2NydGMtPmN1cl9wZXJmLmJ3X2N0bFtpXSA9IDA7CiAJCQlfZHB1X2NvcmVf cGVyZl9jcnRjX3VwZGF0ZV9idXMoa21zLCBjcnRjLCBpKTsKQEAgLTMzMyw3ICszMzMsNyBAQCBz dGF0aWMgdTY0IF9kcHVfY29yZV9wZXJmX2dldF9jb3JlX2Nsa19yYXRlKHN0cnVjdCBkcHVfa21z ICprbXMpCiAJaWYgKGttcy0+cGVyZi5wZXJmX3R1bmUubW9kZSA9PSBEUFVfUEVSRl9NT0RFX0ZJ WEVEKQogCQljbGtfcmF0ZSA9IGttcy0+cGVyZi5maXhfY29yZV9jbGtfcmF0ZTsKIAotCURQVV9E RUJVRygiY2xrOiVsbHVcbiIsIGNsa19yYXRlKTsKKwlEUk1fREVWX0RFQlVHKCJjbGs6JWxsdVxu IiwgY2xrX3JhdGUpOwogCiAJcmV0dXJuIGNsa19yYXRlOwogfQpAQCAtMzUyLDEzICszNTIsMTMg QEAgaW50IGRwdV9jb3JlX3BlcmZfY3J0Y191cGRhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAog CWludCByZXQ7CiAKIAlpZiAoIWNydGMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIp OworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsK IAl9CiAKIAlrbXMgPSBfZHB1X2NydGNfZ2V0X2ttcyhjcnRjKTsKIAlpZiAoIWttcyB8fCAha21z LT5jYXRhbG9nKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBrbXNcbiIpOworCQlEUk1fREVWX0VS Uk9SKCJpbnZhbGlkIGttc1xuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAlwcml2ID0ga21z LT5kZXYtPmRldl9wcml2YXRlOwpAQCAtMzY2LDcgKzM2Niw3IEBAIGludCBkcHVfY29yZV9wZXJm X2NydGNfdXBkYXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlkcHVfY3J0YyA9IHRvX2RwdV9j cnRjKGNydGMpOwogCWRwdV9jc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7 CiAKLQlEUFVfREVCVUcoImNydGM6JWQgc3RvcF9yZXE6JWQgY29yZV9jbGs6JWxsdVxuIiwKKwlE Uk1fREVWX0RFQlVHKCJjcnRjOiVkIHN0b3BfcmVxOiVkIGNvcmVfY2xrOiVsbHVcbiIsCiAJCQlj cnRjLT5iYXNlLmlkLCBzdG9wX3JlcSwga21zLT5wZXJmLmNvcmVfY2xrX3JhdGUpOwogCiAJb2xk ID0gJmRwdV9jcnRjLT5jdXJfcGVyZjsKQEAgLTM4OSw3ICszODksNyBAQCBpbnQgZHB1X2NvcmVf cGVyZl9jcnRjX3VwZGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJCQlvbGQtPmJ3X2N0 bFtpXSkgfHwKIAkJCQkgIChuZXctPm1heF9wZXJfcGlwZV9pYltpXSA8CiAJCQkJCQlvbGQtPm1h eF9wZXJfcGlwZV9pYltpXSkpKSkgewotCQkJCURQVV9ERUJVRygKKwkJCQlEUk1fREVWX0RFQlVH KAogCQkJCQkiY3J0Yz0lZCBwPSVkIG5ld19idz0lbGx1LG9sZF9idz0lbGx1XG4iLAogCQkJCQlj cnRjLT5iYXNlLmlkLCBwYXJhbXNfY2hhbmdlZCwKIAkJCQkJbmV3LT5id19jdGxbaV0sIG9sZC0+ YndfY3RsW2ldKTsKQEAgLTQwOCw3ICs0MDgsNyBAQCBpbnQgZHB1X2NvcmVfcGVyZl9jcnRjX3Vw ZGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQl1cGRhdGVfY2xrID0gMTsKIAkJfQogCX0g ZWxzZSB7Ci0JCURQVV9ERUJVRygiY3J0Yz0lZCBkaXNhYmxlXG4iLCBjcnRjLT5iYXNlLmlkKTsK KwkJRFJNX0RFVl9ERUJVRygiY3J0Yz0lZCBkaXNhYmxlXG4iLCBjcnRjLT5iYXNlLmlkKTsKIAkJ bWVtc2V0KG9sZCwgMCwgc2l6ZW9mKCpvbGQpKTsKIAkJbWVtc2V0KG5ldywgMCwgc2l6ZW9mKCpu ZXcpKTsKIAkJdXBkYXRlX2J1cyA9IH4wOwpAQCAtNDI1LDcgKzQyNSw3IEBAIGludCBkcHVfY29y ZV9wZXJmX2NydGNfdXBkYXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJaWYgKHVwZGF0ZV9i dXMgJiBCSVQoaSkpIHsKIAkJCXJldCA9IF9kcHVfY29yZV9wZXJmX2NydGNfdXBkYXRlX2J1cyhr bXMsIGNydGMsIGkpOwogCQkJaWYgKHJldCkgewotCQkJCURQVV9FUlJPUigiY3J0Yy0lZDogZmFp bGVkIHRvIHVwZGF0ZSBidyB2b3RlIGZvciBidXMtJWRcbiIsCisJCQkJRFJNX0RFVl9FUlJPUigi Y3J0Yy0lZDogZmFpbGVkIHRvIHVwZGF0ZSBidyB2b3RlIGZvciBidXMtJWRcbiIsCiAJCQkJCSAg Y3J0Yy0+YmFzZS5pZCwgaSk7CiAJCQkJcmV0dXJuIHJldDsKIAkJCX0KQEAgLTQ0MywxMyArNDQz LDEzIEBAIGludCBkcHVfY29yZV9wZXJmX2NydGNfdXBkYXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAogCQlyZXQgPSBfZHB1X2NvcmVfcGVyZl9zZXRfY29yZV9jbGtfcmF0ZShrbXMsIGNsa19y YXRlKTsKIAkJaWYgKHJldCkgewotCQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gc2V0ICVzIGNsb2Nr IHJhdGUgJWxsdVxuIiwKKwkJCURSTV9ERVZfRVJST1IoImZhaWxlZCB0byBzZXQgJXMgY2xvY2sg cmF0ZSAlbGx1XG4iLAogCQkJCQlrbXMtPnBlcmYuY29yZV9jbGstPmNsa19uYW1lLCBjbGtfcmF0 ZSk7CiAJCQlyZXR1cm4gcmV0OwogCQl9CiAKIAkJa21zLT5wZXJmLmNvcmVfY2xrX3JhdGUgPSBj bGtfcmF0ZTsKLQkJRFBVX0RFQlVHKCJ1cGRhdGUgY2xrIHJhdGUgPSAlbGxkIEhaXG4iLCBjbGtf cmF0ZSk7CisJCURSTV9ERVZfREVCVUcoInVwZGF0ZSBjbGsgcmF0ZSA9ICVsbGQgSFpcbiIsIGNs a19yYXRlKTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC01NTAsNyArNTUwLDcgQEAgaW50IGRwdV9j b3JlX3BlcmZfZGVidWdmc19pbml0KHN0cnVjdCBkcHVfY29yZV9wZXJmICpwZXJmLAogCiAJcHJp diA9IHBlcmYtPmRldi0+ZGV2X3ByaXZhdGU7CiAJaWYgKCFwcml2IHx8ICFwcml2LT5rbXMpIHsK LQkJRFBVX0VSUk9SKCJpbnZhbGlkIEtNUyByZWZlcmVuY2VcbiIpOworCQlEUk1fREVWX0VSUk9S KCJpbnZhbGlkIEtNUyByZWZlcmVuY2VcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAg LTU1OCw3ICs1NTgsNyBAQCBpbnQgZHB1X2NvcmVfcGVyZl9kZWJ1Z2ZzX2luaXQoc3RydWN0IGRw dV9jb3JlX3BlcmYgKnBlcmYsCiAKIAlwZXJmLT5kZWJ1Z2ZzX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0 ZV9kaXIoImNvcmVfcGVyZiIsIHBhcmVudCk7CiAJaWYgKCFwZXJmLT5kZWJ1Z2ZzX3Jvb3QpIHsK LQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gY3JlYXRlIGNvcmUgcGVyZiBkZWJ1Z2ZzXG4iKTsKKwkJ RFJNX0RFVl9FUlJPUigiZmFpbGVkIHRvIGNyZWF0ZSBjb3JlIHBlcmYgZGVidWdmc1xuIik7CiAJ CXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNjA0LDcgKzYwNCw3IEBAIGludCBkcHVfY29yZV9w ZXJmX2RlYnVnZnNfaW5pdChzdHJ1Y3QgZHB1X2NvcmVfcGVyZiAqcGVyZiwKIHZvaWQgZHB1X2Nv cmVfcGVyZl9kZXN0cm95KHN0cnVjdCBkcHVfY29yZV9wZXJmICpwZXJmKQogewogCWlmICghcGVy ZikgewotCQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7CisJCURSTV9ERVZfRVJS T1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTYyOSw3ICs2 MjksNyBAQCBpbnQgZHB1X2NvcmVfcGVyZl9pbml0KHN0cnVjdCBkcHVfY29yZV9wZXJmICpwZXJm LAogCiAJcGVyZi0+bWF4X2NvcmVfY2xrX3JhdGUgPSBjb3JlX2Nsay0+bWF4X3JhdGU7CiAJaWYg KCFwZXJmLT5tYXhfY29yZV9jbGtfcmF0ZSkgewotCQlEUFVfREVCVUcoIm9wdGlvbmFsIG1heCBj b3JlIGNsayByYXRlLCB1c2UgZGVmYXVsdFxuIik7CisJCURSTV9ERVZfREVCVUcoIm9wdGlvbmFs IG1heCBjb3JlIGNsayByYXRlLCB1c2UgZGVmYXVsdFxuIik7CiAJCXBlcmYtPm1heF9jb3JlX2Ns a19yYXRlID0gRFBVX1BFUkZfREVGQVVMVF9NQVhfQ09SRV9DTEtfUkFURTsKIAl9CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCmluZGV4IDgwY2JmNzUuLmI1YmU5YjYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwpAQCAtNTQsMTIgKzU0 LDEyIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRwdV9rbXMgKl9kcHVfY3J0Y19nZXRfa21zKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2OwogCiAJ aWYgKCFjcnRjIHx8ICFjcnRjLT5kZXYgfHwgIWNydGMtPmRldi0+ZGV2X3ByaXZhdGUpIHsKLQkJ RFBVX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGNy dGNcbiIpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAJcHJpdiA9IGNydGMtPmRldi0+ZGV2X3ByaXZh dGU7CiAJaWYgKCFwcml2IHx8ICFwcml2LT5rbXMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGtt c1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQga21zXG4iKTsKIAkJcmV0dXJuIE5VTEw7 CiAJfQogCkBAIC03MywxOSArNzMsMTkgQEAgc3RhdGljIGlubGluZSBpbnQgX2RwdV9jcnRjX3Bv d2VyX2VuYWJsZShzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjLCBib29sIGVuYWJsZSkKIAlzdHJ1 Y3QgZHB1X2ttcyAqZHB1X2ttczsKIAogCWlmICghZHB1X2NydGMpIHsKLQkJRFBVX0VSUk9SKCJp bnZhbGlkIGRwdSBjcnRjXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBkcHUgY3J0Y1xu Iik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCWNydGMgPSAmZHB1X2NydGMtPmJhc2U7CiAJ aWYgKCFjcnRjLT5kZXYgfHwgIWNydGMtPmRldi0+ZGV2X3ByaXZhdGUpIHsKLQkJRFBVX0VSUk9S KCJpbnZhbGlkIGRybSBkZXZpY2VcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGRybSBk ZXZpY2VcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlwcml2ID0gY3J0Yy0+ZGV2LT5k ZXZfcHJpdmF0ZTsKIAlpZiAoIXByaXYtPmttcykgewotCQlEUFVfRVJST1IoImludmFsaWQga21z XG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBrbXNcbiIpOwogCQlyZXR1cm4gLUVJTlZB TDsKIAl9CiAKQEAgLTEyNSwxNyArMTI1LDE3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ycF9y ZWNsYWltKHN0cnVjdCBkcHVfY3J0Y19yZXNwb29sICpycCwgYm9vbCBmb3JjZSkKIAogCWNydGMg PSBfZHB1X2NydGNfcnBfdG9fY3J0YyhycCk7CiAJaWYgKCFjcnRjKSB7Ci0JCURQVV9FUlJPUigi aW52YWxpZCBjcnRjXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBjcnRjXG4iKTsKIAkJ cmV0dXJuOwogCX0KIAotCURQVV9ERUJVRygiY3J0YyVkLiV1ICVzXG4iLCBjcnRjLT5iYXNlLmlk LCBycC0+c2VxdWVuY2VfaWQsCisJRFJNX0RFVl9ERUJVRygiY3J0YyVkLiV1ICVzXG4iLCBjcnRj LT5iYXNlLmlkLCBycC0+c2VxdWVuY2VfaWQsCiAJCQlmb3JjZSA/ICJkZXN0cm95IiA6ICJmcmVl X3VudXNlZCIpOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJlcywgbmV4dCwgJnJwLT5y ZXNfbGlzdCwgbGlzdCkgewogCQlpZiAoIWZvcmNlICYmICEocmVzLT5mbGFncyAmIERQVV9DUlRD X1JFU19GTEFHX0ZSRUUpKQogCQkJY29udGludWU7Ci0JCURQVV9ERUJVRygiY3J0YyVkLiV1IHJl Y2xhaW0gcmVzOjB4JXgvMHglbGx4LyVwSy8lZFxuIiwKKwkJRFJNX0RFVl9ERUJVRygiY3J0YyVk LiV1IHJlY2xhaW0gcmVzOjB4JXgvMHglbGx4LyVwSy8lZFxuIiwKIAkJCQljcnRjLT5iYXNlLmlk LCBycC0+c2VxdWVuY2VfaWQsCiAJCQkJcmVzLT50eXBlLCByZXMtPnRhZywgcmVzLT52YWwsCiAJ CQkJYXRvbWljX3JlYWQoJnJlcy0+cmVmY291bnQpKTsKQEAgLTE4MCw3ICsxODAsNyBAQCBzdGF0 aWMgdm9pZCBfZHB1X2NydGNfcnBfZGVzdHJveShzdHJ1Y3QgZHB1X2NydGNfcmVzcG9vbCAqcnAp CiAgKi8KIHN0YXRpYyB2b2lkICpfZHB1X2NydGNfaHdfYmxrX2dldCh2b2lkICp2YWwsIHUzMiB0 eXBlLCB1NjQgdGFnKQogewotCURQVV9ERUJVRygicmVzOiVkLzB4JWxseC8lcEtcbiIsIHR5cGUs IHRhZywgdmFsKTsKKwlEUk1fREVWX0RFQlVHKCJyZXM6JWQvMHglbGx4LyVwS1xuIiwgdHlwZSwg dGFnLCB2YWwpOwogCXJldHVybiBkcHVfaHdfYmxrX2dldCh2YWwsIHR5cGUsIHRhZyk7CiB9CiAK QEAgLTE5MSw3ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCAqX2RwdV9jcnRjX2h3X2Jsa19nZXQodm9p ZCAqdmFsLCB1MzIgdHlwZSwgdTY0IHRhZykKICAqLwogc3RhdGljIHZvaWQgX2RwdV9jcnRjX2h3 X2Jsa19wdXQodm9pZCAqdmFsKQogewotCURQVV9ERUJVRygicmVzOi8vJXBLXG4iLCB2YWwpOwor CURSTV9ERVZfREVCVUcoInJlczovLyVwS1xuIiwgdmFsKTsKIAlkcHVfaHdfYmxrX3B1dCh2YWwp OwogfQogCkBAIC0yMDgsMTcgKzIwOCwxNyBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNfcnBfZHVw bGljYXRlKHN0cnVjdCBkcHVfY3J0Y19yZXNwb29sICpycCwKIAlzdHJ1Y3QgZHJtX2NydGMgKmNy dGM7CiAKIAlpZiAoIXJwIHx8ICFkdXBfcnAgfHwgIXJwLT5ycF9oZWFkKSB7Ci0JCURQVV9FUlJP UigiaW52YWxpZCByZXNvdXJjZSBwb29sXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBy ZXNvdXJjZSBwb29sXG4iKTsKIAkJcmV0dXJuOwogCX0KIAogCWNydGMgPSBfZHB1X2NydGNfcnBf dG9fY3J0YyhycCk7CiAJaWYgKCFjcnRjKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBjcnRjXG4i KTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBjcnRjXG4iKTsKIAkJcmV0dXJuOwogCX0KIAot CURQVV9ERUJVRygiY3J0YyVkLiV1IGR1cGxpY2F0ZVxuIiwgY3J0Yy0+YmFzZS5pZCwgcnAtPnNl cXVlbmNlX2lkKTsKKwlEUk1fREVWX0RFQlVHKCJjcnRjJWQuJXUgZHVwbGljYXRlXG4iLCBjcnRj LT5iYXNlLmlkLCBycC0+c2VxdWVuY2VfaWQpOwogCiAJbXV0ZXhfbG9jayhycC0+cnBfbG9jayk7 CiAJZHVwX3JwLT5zZXF1ZW5jZV9pZCA9IHJwLT5zZXF1ZW5jZV9pZCArIDE7CkBAIC0yMzcsNyAr MjM3LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3JwX2R1cGxpY2F0ZShzdHJ1Y3QgZHB1X2Ny dGNfcmVzcG9vbCAqcnAsCiAJCWR1cF9yZXMtPnZhbCA9IHJlcy0+dmFsOwogCQlkdXBfcmVzLT5v cHMgPSByZXMtPm9wczsKIAkJZHVwX3Jlcy0+ZmxhZ3MgPSBEUFVfQ1JUQ19SRVNfRkxBR19GUkVF OwotCQlEUFVfREVCVUcoImNydGMlZC4ldSBkdXAgcmVzOjB4JXgvMHglbGx4LyVwSy8lZFxuIiwK KwkJRFJNX0RFVl9ERUJVRygiY3J0YyVkLiV1IGR1cCByZXM6MHgleC8weCVsbHgvJXBLLyVkXG4i LAogCQkJCWNydGMtPmJhc2UuaWQsIGR1cF9ycC0+c2VxdWVuY2VfaWQsCiAJCQkJZHVwX3Jlcy0+ dHlwZSwgZHVwX3Jlcy0+dGFnLCBkdXBfcmVzLT52YWwsCiAJCQkJYXRvbWljX3JlYWQoJmR1cF9y ZXMtPnJlZmNvdW50KSk7CkBAIC0yNjQsNyArMjY0LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRj X3JwX3Jlc2V0KHN0cnVjdCBkcHVfY3J0Y19yZXNwb29sICpycCwKIAkJc3RydWN0IG11dGV4ICpy cF9sb2NrLCBzdHJ1Y3QgbGlzdF9oZWFkICpycF9oZWFkKQogewogCWlmICghcnAgfHwgIXJwX2xv Y2sgfHwgIXJwX2hlYWQpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHJlc291cmNlIHBvb2xcbiIp OworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIHJlc291cmNlIHBvb2xcbiIpOwogCQlyZXR1cm47 CiAJfQogCkBAIC0yODQsNyArMjg0LDcgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZGVzdHJveShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YyA9IHRv X2RwdV9jcnRjKGNydGMpOwogCi0JRFBVX0RFQlVHKCJcbiIpOworCURSTV9ERVZfREVCVUcoIlxu Iik7CiAKIAlpZiAoIWNydGMpCiAJCXJldHVybjsKQEAgLTM1Miw3ICszNTIsNyBAQCBzdGF0aWMg dm9pZCBfZHB1X2NydGNfYmxlbmRfc2V0dXBfbWl4ZXIoc3RydWN0IGRybV9jcnRjICpjcnRjLAog CWJvb2wgYmdfYWxwaGFfZW5hYmxlID0gZmFsc2U7CiAKIAlpZiAoIWRwdV9jcnRjIHx8ICFtaXhl cikgewotCQlEUFVfRVJST1IoImludmFsaWQgZHB1X2NydGMgb3IgbWl4ZXJcbiIpOworCQlEUk1f REVWX0VSUk9SKCJpbnZhbGlkIGRwdV9jcnRjIG9yIG1peGVyXG4iKTsKIAkJcmV0dXJuOwogCX0K IApAQCAtMzcxLDcgKzM3MSw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cF9t aXhlcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAkJZHB1X3BsYW5lX2dldF9jdGxfZmx1c2go cGxhbmUsIGN0bCwgJmZsdXNoX21hc2spOwogCi0JCURQVV9ERUJVRygiY3J0YyAlZCBzdGFnZTol ZCAtIHBsYW5lICVkIHNzcHAgJWQgZmIgJWRcbiIsCisJCURSTV9ERVZfREVCVUcoImNydGMgJWQg c3RhZ2U6JWQgLSBwbGFuZSAlZCBzc3BwICVkIGZiICVkXG4iLAogCQkJCWNydGMtPmJhc2UuaWQs CiAJCQkJcHN0YXRlLT5zdGFnZSwKIAkJCQlwbGFuZS0+YmFzZS5pZCwKQEAgLTM4MCw3ICszODAs NyBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNfYmxlbmRfc2V0dXBfbWl4ZXIoc3RydWN0IGRybV9j cnRjICpjcnRjLAogCiAJCWZvcm1hdCA9IHRvX2RwdV9mb3JtYXQobXNtX2ZyYW1lYnVmZmVyX2Zv cm1hdChwc3RhdGUtPmJhc2UuZmIpKTsKIAkJaWYgKCFmb3JtYXQpIHsKLQkJCURQVV9FUlJPUigi aW52YWxpZCBmb3JtYXRcbiIpOworCQkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBmb3JtYXRcbiIp OwogCQkJcmV0dXJuOwogCQl9CiAKQEAgLTQzNywxNiArNDM3LDE2IEBAIHN0YXRpYyB2b2lkIF9k cHVfY3J0Y19ibGVuZF9zZXR1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJZHB1X2NydGNfc3Rh dGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJbWl4ZXIgPSBkcHVfY3J0Yy0+ bWl4ZXJzOwogCi0JRFBVX0RFQlVHKCIlc1xuIiwgZHB1X2NydGMtPm5hbWUpOworCURSTV9ERVZf REVCVUcoIiVzXG4iLCBkcHVfY3J0Yy0+bmFtZSk7CiAKIAlpZiAoZHB1X2NydGMtPm51bV9taXhl cnMgPiBDUlRDX0RVQUxfTUlYRVJTKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBudW1iZXIgbWl4 ZXJzOiAlZFxuIiwgZHB1X2NydGMtPm51bV9taXhlcnMpOworCQlEUk1fREVWX0VSUk9SKCJpbnZh bGlkIG51bWJlciBtaXhlcnM6ICVkXG4iLCBkcHVfY3J0Yy0+bnVtX21peGVycyk7CiAJCXJldHVy bjsKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgZHB1X2NydGMtPm51bV9taXhlcnM7IGkrKykgewog CQlpZiAoIW1peGVyW2ldLmh3X2xtIHx8ICFtaXhlcltpXS5od19jdGwpIHsKLQkJCURQVV9FUlJP UigiaW52YWxpZCBsbSBvciBjdGwgYXNzaWduZWQgdG8gbWl4ZXJcbiIpOworCQkJRFJNX0RFVl9F UlJPUigiaW52YWxpZCBsbSBvciBjdGwgYXNzaWduZWQgdG8gbWl4ZXJcbiIpOwogCQkJcmV0dXJu OwogCQl9CiAJCW1peGVyW2ldLm1peGVyX29wX21vZGUgPSAwOwpAQCAtNDczLDcgKzQ3Myw3IEBA IHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMp CiAJCS8qIHN0YWdlIGNvbmZpZyBmbHVzaCBtYXNrICovCiAJCWN0bC0+b3BzLnVwZGF0ZV9wZW5k aW5nX2ZsdXNoKGN0bCwgbWl4ZXJbaV0uZmx1c2hfbWFzayk7CiAKLQkJRFBVX0RFQlVHKCJsbSAl ZCwgb3BfbW9kZSAweCVYLCBjdGwgJWQsIGZsdXNoIG1hc2sgMHgleFxuIiwKKwkJRFJNX0RFVl9E RUJVRygibG0gJWQsIG9wX21vZGUgMHglWCwgY3RsICVkLCBmbHVzaCBtYXNrIDB4JXhcbiIsCiAJ CQltaXhlcltpXS5od19sbS0+aWR4IC0gTE1fMCwKIAkJCW1peGVyW2ldLm1peGVyX29wX21vZGUs CiAJCQljdGwtPmlkeCAtIENUTF8wLApAQCAtNTE1LDcgKzUxNSw3IEBAIGVudW0gZHB1X2ludGZf bW9kZSBkcHVfY3J0Y19nZXRfaW50Zl9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CiAKIAlpZiAoIWNydGMgfHwgIWNydGMtPmRldikgewot CQlEUFVfRVJST1IoImludmFsaWQgY3J0Y1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQg Y3J0Y1xuIik7CiAJCXJldHVybiBJTlRGX01PREVfTk9ORTsKIAl9CiAKQEAgLTU1MiwxMyArNTUy LDEzIEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2ZyYW1lX2V2ZW50X3dvcmsoc3RydWN0IGt0aHJl YWRfd29yayAqd29yaykKIAlib29sIGZyYW1lX2RvbmUgPSBmYWxzZTsKIAogCWlmICghd29yaykg ewotCQlEUFVfRVJST1IoImludmFsaWQgd29yayBoYW5kbGVcbiIpOworCQlEUk1fREVWX0VSUk9S KCJpbnZhbGlkIHdvcmsgaGFuZGxlXG4iKTsKIAkJcmV0dXJuOwogCX0KIAogCWZldmVudCA9IGNv bnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZHB1X2NydGNfZnJhbWVfZXZlbnQsIHdvcmspOwogCWlm ICghZmV2ZW50LT5jcnRjIHx8ICFmZXZlbnQtPmNydGMtPnN0YXRlKSB7Ci0JCURQVV9FUlJPUigi aW52YWxpZCBjcnRjXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBjcnRjXG4iKTsKIAkJ cmV0dXJuOwogCX0KIApAQCAtNTY3LDcgKzU2Nyw3IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2Zy YW1lX2V2ZW50X3dvcmsoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaykKIAogCWRwdV9rbXMgPSBf ZHB1X2NydGNfZ2V0X2ttcyhjcnRjKTsKIAlpZiAoIWRwdV9rbXMpIHsKLQkJRFBVX0VSUk9SKCJp bnZhbGlkIGttcyBoYW5kbGVcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGttcyBoYW5k bGVcbiIpOwogCQlyZXR1cm47CiAJfQogCXByaXYgPSBkcHVfa21zLT5kZXYtPmRldl9wcml2YXRl OwpAQCAtNjA2LDcgKzYwNiw3IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2ZyYW1lX2V2ZW50X3dv cmsoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaykKIAl9CiAKIAlpZiAoZmV2ZW50LT5ldmVudCAm IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX1BBTkVMX0RFQUQpCi0JCURQVV9FUlJPUigiY3J0YyVk IHRzOiVsbGQgcmVjZWl2ZWQgcGFuZWwgZGVhZCBldmVudFxuIiwKKwkJRFJNX0RFVl9FUlJPUigi Y3J0YyVkIHRzOiVsbGQgcmVjZWl2ZWQgcGFuZWwgZGVhZCBldmVudFxuIiwKIAkJCQljcnRjLT5i YXNlLmlkLCBrdGltZV90b19ucyhmZXZlbnQtPnRzKSk7CiAKIAlpZiAoZnJhbWVfZG9uZSkKQEAg LTYzNyw3ICs2MzcsNyBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19mcmFtZV9ldmVudF9jYih2b2lk ICpkYXRhLCB1MzIgZXZlbnQpCiAJdTMyIGNydGNfaWQ7CiAKIAlpZiAoIWNydGMgfHwgIWNydGMt PmRldiB8fCAhY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQg cGFyYW1ldGVyc1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7 CiAJCXJldHVybjsKIAl9CiAKQEAgLTY3Myw3ICs2NzMsNyBAQCB2b2lkIGRwdV9jcnRjX2NvbXBs ZXRlX2NvbW1pdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCXN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqb2xkX3N0YXRlKQogewogCWlmICghY3J0YyB8fCAhY3J0Yy0+c3RhdGUpIHsKLQkJRFBVX0VS Uk9SKCJpbnZhbGlkIGNydGNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIp OwogCQlyZXR1cm47CiAJfQogCXRyYWNlX2RwdV9jcnRjX2NvbXBsZXRlX2NvbW1pdChEUk1JRChj cnRjKSk7CkBAIC03MDQsNyArNzA0LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21p eGVyX2Zvcl9lbmNvZGVyKAogCiAJCS8qIENUTCBtYXkgYmUgPD0gTE1zLCBpZiA8LCBtdWx0aXBs ZSBMTXMgY29udHJvbGxlZCBieSAxIENUTCAqLwogCQlpZiAoIWRwdV9ybV9nZXRfaHcocm0sICZj dGxfaXRlcikpIHsKLQkJCURQVV9ERUJVRygibm8gY3RsIGFzc2lnbmVkIHRvIGxtICVkLCB1c2lu ZyBwcmV2aW91c1xuIiwKKwkJCURSTV9ERVZfREVCVUcoIm5vIGN0bCBhc3NpZ25lZCB0byBsbSAl ZCwgdXNpbmcgcHJldmlvdXNcbiIsCiAJCQkJCW1peGVyLT5od19sbS0+aWR4IC0gTE1fMCk7CiAJ CQltaXhlci0+aHdfY3RsID0gbGFzdF92YWxpZF9jdGw7CiAJCX0gZWxzZSB7CkBAIC03MTQsNyAr NzE0LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21peGVyX2Zvcl9lbmNvZGVyKAog CiAJCS8qIFNob3VsZG4ndCBoYXBwZW4sIG1peGVycyBhcmUgYWx3YXlzID49IGN0bHMgKi8KIAkJ aWYgKCFtaXhlci0+aHdfY3RsKSB7Ci0JCQlEUFVfRVJST1IoIm5vIHZhbGlkIGN0bHMgZm91bmQg Zm9yIGxtICVkXG4iLAorCQkJRFJNX0RFVl9FUlJPUigibm8gdmFsaWQgY3RscyBmb3VuZCBmb3Ig bG0gJWRcbiIsCiAJCQkJCW1peGVyLT5od19sbS0+aWR4IC0gTE1fMCk7CiAJCQlyZXR1cm47CiAJ CX0KQEAgLTcyMiw5ICs3MjIsOSBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbWl4ZXJf Zm9yX2VuY29kZXIoCiAJCW1peGVyLT5lbmNvZGVyID0gZW5jOwogCiAJCWRwdV9jcnRjLT5udW1f bWl4ZXJzKys7Ci0JCURQVV9ERUJVRygic2V0dXAgbWl4ZXIgJWQ6IGxtICVkXG4iLAorCQlEUk1f REVWX0RFQlVHKCJzZXR1cCBtaXhlciAlZDogbG0gJWRcbiIsCiAJCQkJaSwgbWl4ZXItPmh3X2xt LT5pZHggLSBMTV8wKTsKLQkJRFBVX0RFQlVHKCJzZXR1cCBtaXhlciAlZDogY3RsICVkXG4iLAor CQlEUk1fREVWX0RFQlVHKCJzZXR1cCBtaXhlciAlZDogY3RsICVkXG4iLAogCQkJCWksIG1peGVy LT5od19jdGwtPmlkeCAtIENUTF8wKTsKIAl9CiB9CkBAIC03NjAsNyArNzYwLDcgQEAgc3RhdGlj IHZvaWQgX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ aW50IGk7CiAKIAlpZiAoIWNydGMgfHwgIXN0YXRlKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBh cmdzXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBhcmdzXG4iKTsKIAkJcmV0dXJuOwog CX0KIApAQCAtNzkzLDE3ICs3OTMsMTcgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfYXRvbWljX2Jl Z2luKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlzdHJ1Y3QgZHB1X2NydGNfc21tdV9zdGF0ZV9k YXRhICpzbW11X3N0YXRlOwogCiAJaWYgKCFjcnRjKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBj cnRjXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBjcnRjXG4iKTsKIAkJcmV0dXJuOwog CX0KIAogCWlmICghY3J0Yy0+c3RhdGUtPmVuYWJsZSkgewotCQlEUFVfREVCVUcoImNydGMlZCAt PiBlbmFibGUgJWQsIHNraXAgYXRvbWljX2JlZ2luXG4iLAorCQlEUk1fREVWX0RFQlVHKCJjcnRj JWQgLT4gZW5hYmxlICVkLCBza2lwIGF0b21pY19iZWdpblxuIiwKIAkJCQljcnRjLT5iYXNlLmlk LCBjcnRjLT5zdGF0ZS0+ZW5hYmxlKTsKIAkJcmV0dXJuOwogCX0KIAotCURQVV9ERUJVRygiY3J0 YyVkXG4iLCBjcnRjLT5iYXNlLmlkKTsKKwlEUk1fREVWX0RFQlVHKCJjcnRjJWRcbiIsIGNydGMt PmJhc2UuaWQpOwogCiAJZHB1X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKIAlkZXYgPSBjcnRj LT5kZXY7CkBAIC04NjIsMTcgKzg2MiwxNyBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19hdG9taWNf Zmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0 YXRlOwogCiAJaWYgKCFjcnRjIHx8ICFjcnRjLT5kZXYgfHwgIWNydGMtPmRldi0+ZGV2X3ByaXZh dGUpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJp bnZhbGlkIGNydGNcbiIpOwogCQlyZXR1cm47CiAJfQogCiAJaWYgKCFjcnRjLT5zdGF0ZS0+ZW5h YmxlKSB7Ci0JCURQVV9ERUJVRygiY3J0YyVkIC0+IGVuYWJsZSAlZCwgc2tpcCBhdG9taWNfZmx1 c2hcbiIsCisJCURSTV9ERVZfREVCVUcoImNydGMlZCAtPiBlbmFibGUgJWQsIHNraXAgYXRvbWlj X2ZsdXNoXG4iLAogCQkJCWNydGMtPmJhc2UuaWQsIGNydGMtPnN0YXRlLT5lbmFibGUpOwogCQly ZXR1cm47CiAJfQogCi0JRFBVX0RFQlVHKCJjcnRjJWRcbiIsIGNydGMtPmJhc2UuaWQpOworCURS TV9ERVZfREVCVUcoImNydGMlZFxuIiwgY3J0Yy0+YmFzZS5pZCk7CiAKIAlkcHVfY3J0YyA9IHRv X2RwdV9jcnRjKGNydGMpOwogCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKGNydGMtPnN0YXRl KTsKQEAgLTg4MCwxNCArODgwLDE0IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2F0b21pY19mbHVz aChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAKIAlp ZiAoY3J0Yy0+aW5kZXggPj0gQVJSQVlfU0laRShwcml2LT5ldmVudF90aHJlYWQpKSB7Ci0JCURQ VV9FUlJPUigiaW52YWxpZCBjcnRjIGluZGV4WyVkXVxuIiwgY3J0Yy0+aW5kZXgpOworCQlEUk1f REVWX0VSUk9SKCJpbnZhbGlkIGNydGMgaW5kZXhbJWRdXG4iLCBjcnRjLT5pbmRleCk7CiAJCXJl dHVybjsKIAl9CiAKIAlldmVudF90aHJlYWQgPSAmcHJpdi0+ZXZlbnRfdGhyZWFkW2NydGMtPmlu ZGV4XTsKIAogCWlmIChkcHVfY3J0Yy0+ZXZlbnQpIHsKLQkJRFBVX0RFQlVHKCJhbHJlYWR5IHJl Y2VpdmVkIGRwdV9jcnRjLT5ldmVudFxuIik7CisJCURSTV9ERVZfREVCVUcoImFscmVhZHkgcmVj ZWl2ZWQgZHB1X2NydGMtPmV2ZW50XG4iKTsKIAl9IGVsc2UgewogCQlzcGluX2xvY2tfaXJxc2F2 ZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7CiAJCWRwdV9jcnRjLT5ldmVudCA9IGNydGMtPnN0 YXRlLT5ldmVudDsKQEAgLTk0MiwxNCArOTQyLDE0IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2Rl c3Ryb3lfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBkcHVfY3J0Y19zdGF0 ZSAqY3N0YXRlOwogCiAJaWYgKCFjcnRjIHx8ICFzdGF0ZSkgewotCQlEUFVfRVJST1IoImludmFs aWQgYXJndW1lbnQocylcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50KHMp XG4iKTsKIAkJcmV0dXJuOwogCX0KIAogCWRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7CiAJ Y3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoc3RhdGUpOwogCi0JRFBVX0RFQlVHKCJjcnRjJWRc biIsIGNydGMtPmJhc2UuaWQpOworCURSTV9ERVZfREVCVUcoImNydGMlZFxuIiwgY3J0Yy0+YmFz ZS5pZCk7CiAKIAlfZHB1X2NydGNfcnBfZGVzdHJveSgmY3N0YXRlLT5ycCk7CiAKQEAgLTk2NCwx MyArOTY0LDEzIEBAIHN0YXRpYyBpbnQgX2RwdV9jcnRjX3dhaXRfZm9yX2ZyYW1lX2RvbmUoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQogCWludCByZXQsIHJjID0gMDsKIAogCWlmICghY3J0Yykgewot CQlEUFVfRVJST1IoImludmFsaWQgYXJndW1lbnRcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZh bGlkIGFyZ3VtZW50XG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCWRwdV9jcnRjID0gdG9f ZHB1X2NydGMoY3J0Yyk7CiAKIAlpZiAoIWF0b21pY19yZWFkKCZkcHVfY3J0Yy0+ZnJhbWVfcGVu ZGluZykpIHsKLQkJRFBVX0RFQlVHKCJubyBmcmFtZXMgcGVuZGluZ1xuIik7CisJCURSTV9ERVZf REVCVUcoIm5vIGZyYW1lcyBwZW5kaW5nXG4iKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC05OTcs NyArOTk3LDcgQEAgdm9pZCBkcHVfY3J0Y19jb21taXRfa2lja29mZihzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCiAJaW50IHJldDsKIAogCWlmICghY3J0YykgewotCQlEUFVfRVJST1IoImludmFsaWQg YXJndW1lbnRcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50XG4iKTsKIAkJ cmV0dXJuOwogCX0KIAlkZXYgPSBjcnRjLT5kZXY7CkBAIC0xMDA1LDcgKzEwMDUsNyBAQCB2b2lk IGRwdV9jcnRjX2NvbW1pdF9raWNrb2ZmKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlkcHVfa21z ID0gX2RwdV9jcnRjX2dldF9rbXMoY3J0Yyk7CiAKIAlpZiAoIWRwdV9rbXMgfHwgIWRwdV9rbXMt PmRldiB8fCAhZHB1X2ttcy0+ZGV2LT5kZXZfcHJpdmF0ZSkgewotCQlEUFVfRVJST1IoImludmFs aWQgYXJndW1lbnRcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50XG4iKTsK IAkJcmV0dXJuOwogCX0KIApAQCAtMTA0MCw3ICsxMDQwLDcgQEAgdm9pZCBkcHVfY3J0Y19jb21t aXRfa2lja29mZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJcmV0ID0gX2RwdV9jcnRjX3dhaXRf Zm9yX2ZyYW1lX2RvbmUoY3J0Yyk7CiAJRFBVX0FUUkFDRV9FTkQoIndhaXRfZm9yX2ZyYW1lX2Rv bmVfZXZlbnQiKTsKIAlpZiAocmV0KSB7Ci0JCURQVV9FUlJPUigiY3J0YyVkIHdhaXQgZm9yIGZy YW1lIGRvbmUgZmFpbGVkO2ZyYW1lX3BlbmRpbmclZFxuIiwKKwkJRFJNX0RFVl9FUlJPUigiY3J0 YyVkIHdhaXQgZm9yIGZyYW1lIGRvbmUgZmFpbGVkO2ZyYW1lX3BlbmRpbmclZFxuIiwKIAkJCQlj cnRjLT5iYXNlLmlkLAogCQkJCWF0b21pY19yZWFkKCZkcHVfY3J0Yy0+ZnJhbWVfcGVuZGluZykp OwogCQlnb3RvIGVuZDsKQEAgLTEwNDgsOSArMTA0OCw5IEBAIHZvaWQgZHB1X2NydGNfY29tbWl0 X2tpY2tvZmYoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCiAJaWYgKGF0b21pY19pbmNfcmV0dXJu KCZkcHVfY3J0Yy0+ZnJhbWVfcGVuZGluZykgPT0gMSkgewogCQkvKiBhY3F1aXJlIGJhbmR3aWR0 aCBhbmQgb3RoZXIgcmVzb3VyY2VzICovCi0JCURQVV9ERUJVRygiY3J0YyVkIGZpcnN0IGNvbW1p dFxuIiwgY3J0Yy0+YmFzZS5pZCk7CisJCURSTV9ERVZfREVCVUcoImNydGMlZCBmaXJzdCBjb21t aXRcbiIsIGNydGMtPmJhc2UuaWQpOwogCX0gZWxzZQotCQlEUFVfREVCVUcoImNydGMlZCBjb21t aXRcbiIsIGNydGMtPmJhc2UuaWQpOworCQlEUk1fREVWX0RFQlVHKCJjcnRjJWQgY29tbWl0XG4i LCBjcnRjLT5iYXNlLmlkKTsKIAogCWRwdV9jcnRjLT5wbGF5X2NvdW50Kys7CiAKQEAgLTEwODMs NyArMTA4Myw3IEBAIHN0YXRpYyBpbnQgX2RwdV9jcnRjX3ZibGFua19lbmFibGVfbm9fbG9jaygK IAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYzsKIAogCWlmICghZHB1X2NydGMpIHsKLQkJRFBVX0VS Uk9SKCJpbnZhbGlkIGNydGNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIp OwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTExNDUsMTQgKzExNDUsMTQgQEAgc3RhdGlj IHZvaWQgX2RwdV9jcnRjX3NldF9zdXNwZW5kKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBl bmFibGUpCiAJaW50IHJldCA9IDA7CiAKIAlpZiAoIWNydGMgfHwgIWNydGMtPmRldiB8fCAhY3J0 Yy0+ZGV2LT5kZXZfcHJpdmF0ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgY3J0Y1xuIik7CisJ CURSTV9ERVZfRVJST1IoImludmFsaWQgY3J0Y1xuIik7CiAJCXJldHVybjsKIAl9CiAJZHB1X2Ny dGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKIAlwcml2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZTsK IAogCWlmICghcHJpdi0+a21zKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBjcnRjIGttc1xuIik7 CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgY3J0YyBrbXNcbiIpOwogCQlyZXR1cm47CiAJfQog CWRwdV9rbXMgPSB0b19kcHVfa21zKHByaXYtPmttcyk7CkBAIC0xMTY3LDEyICsxMTY3LDEyIEBA IHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXRfc3VzcGVuZChzdHJ1Y3QgZHJtX2NydGMgKmNydGMs IGJvb2wgZW5hYmxlKQogCSAqLwogCXRyYWNlX2RwdV9jcnRjX3NldF9zdXNwZW5kKERSTUlEKCZk cHVfY3J0Yy0+YmFzZSksIGVuYWJsZSwgZHB1X2NydGMpOwogCWlmIChkcHVfY3J0Yy0+c3VzcGVu ZCA9PSBlbmFibGUpCi0JCURQVV9ERUJVRygiY3J0YyVkIHN1c3BlbmQgYWxyZWFkeSBzZXQgdG8g JWQsIGlnbm9yaW5nIHVwZGF0ZVxuIiwKKwkJRFJNX0RFVl9ERUJVRygiY3J0YyVkIHN1c3BlbmQg YWxyZWFkeSBzZXQgdG8gJWQsIGlnbm9yaW5nIHVwZGF0ZVxuIiwKIAkJCQljcnRjLT5iYXNlLmlk LCBlbmFibGUpOwogCWVsc2UgaWYgKGRwdV9jcnRjLT5lbmFibGVkICYmIGRwdV9jcnRjLT52Ymxh bmtfcmVxdWVzdGVkKSB7CiAJCXJldCA9IF9kcHVfY3J0Y192YmxhbmtfZW5hYmxlX25vX2xvY2so ZHB1X2NydGMsICFlbmFibGUpOwogCQlpZiAocmV0KQotCQkJRFBVX0VSUk9SKCIlcyB2Ymxhbmsg ZW5hYmxlIGZhaWxlZDogJWRcbiIsCisJCQlEUk1fREVWX0VSUk9SKCIlcyB2YmxhbmsgZW5hYmxl IGZhaWxlZDogJWRcbiIsCiAJCQkJCWRwdV9jcnRjLT5uYW1lLCByZXQpOwogCX0KIApAQCAtMTE5 MSw3ICsxMTkxLDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqZHB1X2NydGNfZHVw bGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3QgZHB1X2NydGNfc3Rh dGUgKmNzdGF0ZSwgKm9sZF9jc3RhdGU7CiAKIAlpZiAoIWNydGMgfHwgIWNydGMtPnN0YXRlKSB7 Ci0JCURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVudChzKVxuIik7CisJCURSTV9ERVZfRVJST1Io ImludmFsaWQgYXJndW1lbnQocylcbiIpOwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTExOTks NyArMTE5OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmRwdV9jcnRjX2R1cGxp Y2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJb2xkX2NzdGF0ZSA9IHRvX2RwdV9j cnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKIAljc3RhdGUgPSBrbWVtZHVwKG9sZF9jc3RhdGUsIHNp emVvZigqb2xkX2NzdGF0ZSksIEdGUF9LRVJORUwpOwogCWlmICghY3N0YXRlKSB7Ci0JCURQVV9F UlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlIHN0YXRlXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiZmFp bGVkIHRvIGFsbG9jYXRlIHN0YXRlXG4iKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC0xMjIz LDcgKzEyMjMsNyBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19yZXNldChzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCiAJc3RydWN0IGRwdV9jcnRjX3N0YXRlICpjc3RhdGU7CiAKIAlpZiAoIWNydGMpIHsK LQkJRFBVX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlk IGNydGNcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMjQwLDcgKzEyNDAsNyBAQCBzdGF0aWMg dm9pZCBkcHVfY3J0Y19yZXNldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJZHB1X2NydGMgPSB0 b19kcHVfY3J0YyhjcnRjKTsKIAljc3RhdGUgPSBremFsbG9jKHNpemVvZigqY3N0YXRlKSwgR0ZQ X0tFUk5FTCk7CiAJaWYgKCFjc3RhdGUpIHsKLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gYWxsb2Nh dGUgc3RhdGVcbiIpOworCQlEUk1fREVWX0VSUk9SKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3RhdGVc biIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xMjYwLDcgKzEyNjAsNyBAQCBzdGF0aWMgdm9pZCBk cHVfY3J0Y19oYW5kbGVfcG93ZXJfZXZlbnQodTMyIGV2ZW50X3R5cGUsIHZvaWQgKmFyZykKIAl1 MzIgaSwgbWlzcl9zdGF0dXM7CiAKIAlpZiAoIWNydGMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlk IGNydGNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIpOwogCQlyZXR1cm47 CiAJfQogCWRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7CkBAIC0xMzA4LDcgKzEzMDgsNyBA QCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19oYW5kbGVfcG93ZXJfZXZlbnQodTMyIGV2ZW50X3R5cGUs IHZvaWQgKmFyZykKIAkJICovCiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCURQVV9ERUJVRygiZXZl bnQ6JWQgbm90IGhhbmRsZWRcbiIsIGV2ZW50X3R5cGUpOworCQlEUk1fREVWX0RFQlVHKCJldmVu dDolZCBub3QgaGFuZGxlZFxuIiwgZXZlbnRfdHlwZSk7CiAJCWJyZWFrOwogCX0KIApAQCAtMTMy Niw3ICsxMzI2LDcgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWlmICghY3J0YyB8fCAhY3J0Yy0+ ZGV2IHx8ICFjcnRjLT5kZXYtPmRldl9wcml2YXRlIHx8ICFjcnRjLT5zdGF0ZSkgewotCQlEUFVf RVJST1IoImludmFsaWQgY3J0Y1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgY3J0Y1xu Iik7CiAJCXJldHVybjsKIAl9CiAJZHB1X2NydGMgPSB0b19kcHVfY3J0YyhjcnRjKTsKQEAgLTEz NDYsNyArMTM0Niw3IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9j cnRjICpjcnRjKQogCiAJLyogd2FpdCBmb3IgZnJhbWVfZXZlbnRfZG9uZSBjb21wbGV0aW9uICov CiAJaWYgKF9kcHVfY3J0Y193YWl0X2Zvcl9mcmFtZV9kb25lKGNydGMpKQotCQlEUFVfRVJST1Io ImNydGMlZCB3YWl0IGZvciBmcmFtZSBkb25lIGZhaWxlZDtmcmFtZV9wZW5kaW5nJWRcbiIsCisJ CURSTV9ERVZfRVJST1IoImNydGMlZCB3YWl0IGZvciBmcmFtZSBkb25lIGZhaWxlZDtmcmFtZV9w ZW5kaW5nJWRcbiIsCiAJCQkJY3J0Yy0+YmFzZS5pZCwKIAkJCQlhdG9taWNfcmVhZCgmZHB1X2Ny dGMtPmZyYW1lX3BlbmRpbmcpKTsKIApAQCAtMTM1NSw3ICsxMzU1LDcgQEAgc3RhdGljIHZvaWQg ZHB1X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJCQlkcHVfY3J0Yy0+dmJs YW5rX3JlcXVlc3RlZCkgewogCQlyZXQgPSBfZHB1X2NydGNfdmJsYW5rX2VuYWJsZV9ub19sb2Nr KGRwdV9jcnRjLCBmYWxzZSk7CiAJCWlmIChyZXQpCi0JCQlEUFVfRVJST1IoIiVzIHZibGFuayBl bmFibGUgZmFpbGVkOiAlZFxuIiwKKwkJCURSTV9ERVZfRVJST1IoIiVzIHZibGFuayBlbmFibGUg ZmFpbGVkOiAlZFxuIiwKIAkJCQkJZHB1X2NydGMtPm5hbWUsIHJldCk7CiAJfQogCWRwdV9jcnRj LT5lbmFibGVkID0gZmFsc2U7CkBAIC0xNDA2LDcgKzE0MDYsNyBAQCBzdGF0aWMgdm9pZCBkcHVf Y3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWludCByZXQ7CiAKIAlpZiAoIWNy dGMgfHwgIWNydGMtPmRldiB8fCAhY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZSkgewotCQlEUFVfRVJS T1IoImludmFsaWQgY3J0Y1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgY3J0Y1xuIik7 CiAJCXJldHVybjsKIAl9CiAJcHJpdiA9IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7CkBAIC0xNDI3 LDcgKzE0MjcsNyBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRj ICpjcnRjLAogCQkJZHB1X2NydGMtPnZibGFua19yZXF1ZXN0ZWQpIHsKIAkJcmV0ID0gX2RwdV9j cnRjX3ZibGFua19lbmFibGVfbm9fbG9jayhkcHVfY3J0YywgdHJ1ZSk7CiAJCWlmIChyZXQpCi0J CQlEUFVfRVJST1IoIiVzIHZibGFuayBlbmFibGUgZmFpbGVkOiAlZFxuIiwKKwkJCURSTV9ERVZf RVJST1IoIiVzIHZibGFuayBlbmFibGUgZmFpbGVkOiAlZFxuIiwKIAkJCQkJZHB1X2NydGMtPm5h bWUsIHJldCk7CiAJfQogCWRwdV9jcnRjLT5lbmFibGVkID0gdHJ1ZTsKQEAgLTE0NzIsNyArMTQ3 Miw3IEBAIHN0YXRpYyBpbnQgZHB1X2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKIAlzdHJ1Y3QgZHJtX3JlY3QgY3J0Y19yZWN0ID0geyAwIH07CiAKIAlpZiAoIWNydGMp IHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGNydGNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZh bGlkIGNydGNcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTE0ODIsMTMgKzE0ODIs MTMgQEAgc3RhdGljIGludCBkcHVfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpj cnRjLAogCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKHN0YXRlKTsKIAogCWlmICghc3RhdGUt PmVuYWJsZSB8fCAhc3RhdGUtPmFjdGl2ZSkgewotCQlEUFVfREVCVUcoImNydGMlZCAtPiBlbmFi bGUgJWQsIGFjdGl2ZSAlZCwgc2tpcCBhdG9taWNfY2hlY2tcbiIsCisJCURSTV9ERVZfREVCVUco ImNydGMlZCAtPiBlbmFibGUgJWQsIGFjdGl2ZSAlZCwgc2tpcCBhdG9taWNfY2hlY2tcbiIsCiAJ CQkJY3J0Yy0+YmFzZS5pZCwgc3RhdGUtPmVuYWJsZSwgc3RhdGUtPmFjdGl2ZSk7CiAJCWdvdG8g ZW5kOwogCX0KIAogCW1vZGUgPSAmc3RhdGUtPmFkanVzdGVkX21vZGU7Ci0JRFBVX0RFQlVHKCIl czogY2hlY2siLCBkcHVfY3J0Yy0+bmFtZSk7CisJRFJNX0RFVl9ERUJVRygiJXM6IGNoZWNrIiwg ZHB1X2NydGMtPm5hbWUpOwogCiAJLyogZm9yY2UgYSBmdWxsIG1vZGUgc2V0IGlmIGFjdGl2ZSBz dGF0ZSBjaGFuZ2VkICovCiAJaWYgKHN0YXRlLT5hY3RpdmVfY2hhbmdlZCkKQEAgLTE1MDksNyAr MTUwOSw3IEBAIHN0YXRpYyBpbnQgZHB1X2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIAogCQlpZiAoSVNfRVJSX09SX05VTEwocHN0YXRlKSkgewogCQkJcmMgPSBQVFJf RVJSKHBzdGF0ZSk7Ci0JCQlEUFVfRVJST1IoIiVzOiBmYWlsZWQgdG8gZ2V0IHBsYW5lJWQgc3Rh dGUsICVkXG4iLAorCQkJRFJNX0RFVl9FUlJPUigiJXM6IGZhaWxlZCB0byBnZXQgcGxhbmUlZCBz dGF0ZSwgJWRcbiIsCiAJCQkJCWRwdV9jcnRjLT5uYW1lLCBwbGFuZS0+YmFzZS5pZCwgcmMpOwog CQkJZ290byBlbmQ7CiAJCX0KQEAgLTE1MzcsOCArMTUzNyw4IEBAIHN0YXRpYyBpbnQgZHB1X2Ny dGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJZHN0ID0gZHJtX3BsYW5l X3N0YXRlX2Rlc3QocHN0YXRlKTsKIAkJaWYgKCFkcm1fcmVjdF9pbnRlcnNlY3QoJmNsaXAsICZk c3QpIHx8CiAJCSAgICAhZHJtX3JlY3RfZXF1YWxzKCZjbGlwLCAmZHN0KSkgewotCQkJRFBVX0VS Uk9SKCJpbnZhbGlkIHZlcnRpY2FsL2hvcml6b250YWwgZGVzdGluYXRpb25cbiIpOwotCQkJRFBV X0VSUk9SKCJkaXNwbGF5OiAiIERSTV9SRUNUX0ZNVCAiIHBsYW5lOiAiCisJCQlEUk1fREVWX0VS Uk9SKCJpbnZhbGlkIHZlcnRpY2FsL2hvcml6b250YWwgZGVzdGluYXRpb25cbiIpOworCQkJRFJN X0RFVl9FUlJPUigiZGlzcGxheTogIiBEUk1fUkVDVF9GTVQgIiBwbGFuZTogIgogCQkJCSAgRFJN X1JFQ1RfRk1UICJcbiIsIERSTV9SRUNUX0FSRygmY3J0Y19yZWN0KSwKIAkJCQkgIERSTV9SRUNU X0FSRygmZHN0KSk7CiAJCQlyYyA9IC1FMkJJRzsKQEAgLTE1NTEsNyArMTU1MSw3IEBAIHN0YXRp YyBpbnQgZHB1X2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCWRw dV9wbGFuZV9jbGVhcl9tdWx0aXJlY3QocGlwZV9zdGFnZWRbaV0pOwogCiAJCQlpZiAoaXNfZHB1 X3BsYW5lX3ZpcnR1YWwocGlwZV9zdGFnZWRbaV0tPnBsYW5lKSkgewotCQkJCURQVV9FUlJPUigK KwkJCQlEUk1fREVWX0VSUk9SKAogCQkJCQkicjEgb25seSB2aXJ0IHBsYW5lOiVkIG5vdCBzdXBw b3J0ZWRcbiIsCiAJCQkJCXBpcGVfc3RhZ2VkW2ldLT5wbGFuZS0+YmFzZS5pZCk7CiAJCQkJcmMg ID0gLUVJTlZBTDsKQEAgLTE1NzEsMTMgKzE1NzEsMTMgQEAgc3RhdGljIGludCBkcHVfY3J0Y19h dG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJCS8qIHZlcmlmeSB6X3BvcyBz ZXR0aW5nIGJlZm9yZSB1c2luZyBpdCAqLwogCQlpZiAoel9wb3MgPj0gRFBVX1NUQUdFX01BWCAt IERQVV9TVEFHRV8wKSB7Ci0JCQlEUFVfRVJST1IoIj4gJWQgcGxhbmUgc3RhZ2VzIGFzc2lnbmVk XG4iLAorCQkJRFJNX0RFVl9FUlJPUigiPiAlZCBwbGFuZSBzdGFnZXMgYXNzaWduZWRcbiIsCiAJ CQkJCURQVV9TVEFHRV9NQVggLSBEUFVfU1RBR0VfMCk7CiAJCQlyYyA9IC1FSU5WQUw7CiAJCQln b3RvIGVuZDsKIAkJfSBlbHNlIGlmIChwc3RhdGVzW2ldLmRybV9wc3RhdGUtPmNydGNfeCA8IG1p eGVyX3dpZHRoKSB7CiAJCQlpZiAobGVmdF96cG9zX2NudCA9PSAyKSB7Ci0JCQkJRFBVX0VSUk9S KCI+IDIgcGxhbmVzIEAgc3RhZ2UgJWQgb24gbGVmdFxuIiwKKwkJCQlEUk1fREVWX0VSUk9SKCI+ IDIgcGxhbmVzIEAgc3RhZ2UgJWQgb24gbGVmdFxuIiwKIAkJCQkJel9wb3MpOwogCQkJCXJjID0g LUVJTlZBTDsKIAkJCQlnb3RvIGVuZDsKQEAgLTE1ODYsNyArMTU4Niw3IEBAIHN0YXRpYyBpbnQg ZHB1X2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCQl9IGVsc2Ug ewogCQkJaWYgKHJpZ2h0X3pwb3NfY250ID09IDIpIHsKLQkJCQlEUFVfRVJST1IoIj4gMiBwbGFu ZXMgQCBzdGFnZSAlZCBvbiByaWdodFxuIiwKKwkJCQlEUk1fREVWX0VSUk9SKCI+IDIgcGxhbmVz IEAgc3RhZ2UgJWQgb24gcmlnaHRcbiIsCiAJCQkJCXpfcG9zKTsKIAkJCQlyYyA9IC1FSU5WQUw7 CiAJCQkJZ290byBlbmQ7CkBAIC0xNTk1LDEyICsxNTk1LDEyIEBAIHN0YXRpYyBpbnQgZHB1X2Ny dGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJfQogCiAJCXBzdGF0ZXNb aV0uZHB1X3BzdGF0ZS0+c3RhZ2UgPSB6X3BvcyArIERQVV9TVEFHRV8wOwotCQlEUFVfREVCVUco IiVzOiB6cG9zICVkIiwgZHB1X2NydGMtPm5hbWUsIHpfcG9zKTsKKwkJRFJNX0RFVl9ERUJVRygi JXM6IHpwb3MgJWQiLCBkcHVfY3J0Yy0+bmFtZSwgel9wb3MpOwogCX0KIAogCWZvciAoaSA9IDA7 IGkgPCBtdWx0aXJlY3RfY291bnQ7IGkrKykgewogCQlpZiAoZHB1X3BsYW5lX3ZhbGlkYXRlX211 bHRpcmVjdF92MigmbXVsdGlyZWN0X3BsYW5lW2ldKSkgewotCQkJRFBVX0VSUk9SKAorCQkJRFJN X0RFVl9FUlJPUigKIAkJCSJtdWx0aXJlY3QgdmFsaWRhdGlvbiBmYWlsZWQgZm9yIHBsYW5lcyAo JWQgLSAlZClcbiIsCiAJCQkJCW11bHRpcmVjdF9wbGFuZVtpXS5yMC0+cGxhbmUtPmJhc2UuaWQs CiAJCQkJCW11bHRpcmVjdF9wbGFuZVtpXS5yMS0+cGxhbmUtPmJhc2UuaWQpOwpAQCAtMTYxMSw3 ICsxNjExLDcgQEAgc3RhdGljIGludCBkcHVfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9j cnRjICpjcnRjLAogCiAJcmMgPSBkcHVfY29yZV9wZXJmX2NydGNfY2hlY2soY3J0Yywgc3RhdGUp OwogCWlmIChyYykgewotCQlEUFVfRVJST1IoImNydGMlZCBmYWlsZWQgcGVyZm9ybWFuY2UgY2hl Y2sgJWRcbiIsCisJCURSTV9ERVZfRVJST1IoImNydGMlZCBmYWlsZWQgcGVyZm9ybWFuY2UgY2hl Y2sgJWRcbiIsCiAJCQkJY3J0Yy0+YmFzZS5pZCwgcmMpOwogCQlnb3RvIGVuZDsKIAl9CkBAIC0x NjUzLDEzICsxNjUzLDEzIEBAIHN0YXRpYyBpbnQgZHB1X2NydGNfYXRvbWljX2NoZWNrKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKIAkJICogLSBwbGFuZXMgaW4gc291cmNlIHNwbGl0IG11c3QgaGF2 ZSBzYW1lIGRlc3QgeW9mZiBhbmQgaGVpZ2h0CiAJCSAqLwogCQlpZiAocmlnaHRfcGlkIDwgbGVm dF9waWQpIHsKLQkJCURQVV9FUlJPUigKKwkJCURSTV9ERVZfRVJST1IoCiAJCQkJImludmFsaWQg c3JjIHNwbGl0IGNmZy4gcHJpb3JpdHkgbWlzbWF0Y2guIHN0YWdlOiAlZCBsZWZ0OiAlZCByaWdo dDogJWRcbiIsCiAJCQkJc3RhZ2UsIGxlZnRfcGlkLCByaWdodF9waWQpOwogCQkJcmMgPSAtRUlO VkFMOwogCQkJZ290byBlbmQ7CiAJCX0gZWxzZSBpZiAocmlnaHRfcmVjdC54MSAhPSBkcm1fcmVj dF93aWR0aCgmbGVmdF9yZWN0KSkgewotCQkJRFBVX0VSUk9SKCJub24tY29udGlndW91cyBjb29y ZGluYXRlcyBmb3Igc3JjIHNwbGl0LiAiCisJCQlEUk1fREVWX0VSUk9SKCJub24tY29udGlndW91 cyBjb29yZGluYXRlcyBmb3Igc3JjIHNwbGl0LiAiCiAJCQkJICAic3RhZ2U6ICVkIGxlZnQ6ICIg RFJNX1JFQ1RfRk1UICIgcmlnaHQ6ICIKIAkJCQkgIERSTV9SRUNUX0ZNVCAiXG4iLCBzdGFnZSwK IAkJCQkgIERSTV9SRUNUX0FSRygmbGVmdF9yZWN0KSwKQEAgLTE2NjgsNyArMTY2OCw3IEBAIHN0 YXRpYyBpbnQgZHB1X2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJ CWdvdG8gZW5kOwogCQl9IGVsc2UgaWYgKGxlZnRfcmVjdC55MSAhPSByaWdodF9yZWN0LnkxIHx8 CiAJCQkgICBkcm1fcmVjdF9oZWlnaHQoJmxlZnRfcmVjdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZy aWdodF9yZWN0KSkgewotCQkJRFBVX0VSUk9SKCJzb3VyY2Ugc3BsaXQgYXQgc3RhZ2U6ICVkLiBp bnZhbGlkICIKKwkJCURSTV9ERVZfRVJST1IoInNvdXJjZSBzcGxpdCBhdCBzdGFnZTogJWQuIGlu dmFsaWQgIgogCQkJCSAgInlvZmYvaGVpZ2h0OiBsZWZ0OiAiIERSTV9SRUNUX0ZNVCAiIHJpZ2h0 OiAiCiAJCQkJICBEUk1fUkVDVF9GTVQgIlxuIiwgc3RhZ2UsCiAJCQkJICBEUk1fUkVDVF9BUkco JmxlZnRfcmVjdCksCkBAIC0xNjkwLDcgKzE2OTAsNyBAQCBpbnQgZHB1X2NydGNfdmJsYW5rKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBlbikKIAlpbnQgcmV0OwogCiAJaWYgKCFjcnRjKSB7 Ci0JCURQVV9FUlJPUigiaW52YWxpZCBjcnRjXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxp ZCBjcnRjXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCWRwdV9jcnRjID0gdG9fZHB1X2Ny dGMoY3J0Yyk7CkBAIC0xNzAwLDcgKzE3MDAsNyBAQCBpbnQgZHB1X2NydGNfdmJsYW5rKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywgYm9vbCBlbikKIAlpZiAoZHB1X2NydGMtPmVuYWJsZWQgJiYgIWRw dV9jcnRjLT5zdXNwZW5kKSB7CiAJCXJldCA9IF9kcHVfY3J0Y192YmxhbmtfZW5hYmxlX25vX2xv Y2soZHB1X2NydGMsIGVuKTsKIAkJaWYgKHJldCkKLQkJCURQVV9FUlJPUigiJXMgdmJsYW5rIGVu YWJsZSBmYWlsZWQ6ICVkXG4iLAorCQkJRFJNX0RFVl9FUlJPUigiJXMgdmJsYW5rIGVuYWJsZSBm YWlsZWQ6ICVkXG4iLAogCQkJCQlkcHVfY3J0Yy0+bmFtZSwgcmV0KTsKIAl9CiAJZHB1X2NydGMt PnZibGFua19yZXF1ZXN0ZWQgPSBlbjsKQEAgLTE4NDcsNyArMTg0Nyw3IEBAIHN0YXRpYyBzc2l6 ZV90IF9kcHVfY3J0Y19taXNyX3NldHVwKHN0cnVjdCBmaWxlICpmaWxlLAogCWRwdV9jcnRjID0g ZmlsZS0+cHJpdmF0ZV9kYXRhOwogCWJ1ZmZfY29weSA9IG1pbl90KHNpemVfdCwgY291bnQsIE1J U1JfQlVGRl9TSVpFKTsKIAlpZiAoY29weV9mcm9tX3VzZXIoYnVmLCB1c2VyX2J1ZiwgYnVmZl9j b3B5KSkgewotCQlEUFVfRVJST1IoImJ1ZmZlciBjb3B5IGZhaWxlZFxuIik7CisJCURSTV9ERVZf RVJST1IoImJ1ZmZlciBjb3B5IGZhaWxlZFxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApA QCAtMjEzMyw2ICsyMTMzLDYgQEAgc3RydWN0IGRybV9jcnRjICpkcHVfY3J0Y19pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogCiAJZHB1X2NydGMt PnBoYW5kbGUgPSAma21zLT5waGFuZGxlOwogCi0JRFBVX0RFQlVHKCIlczogc3VjY2Vzc2Z1bGx5 IGluaXRpYWxpemVkIGNydGNcbiIsIGRwdV9jcnRjLT5uYW1lKTsKKwlEUk1fREVWX0RFQlVHKCIl czogc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIGNydGNcbiIsIGRwdV9jcnRjLT5uYW1lKTsKIAly ZXR1cm4gY3J0YzsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9lbmNvZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rl ci5jCmluZGV4IDFiNGRlMzQuLjVjZTVkNGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2VuY29kZXIuYwpAQCAtMzUsMTkgKzM1LDE5IEBACiAjaW5jbHVkZSAiZHB1X3Ry YWNlLmgiCiAjaW5jbHVkZSAiZHB1X2NvcmVfaXJxLmgiCiAKLSNkZWZpbmUgRFBVX0RFQlVHX0VO QyhlLCBmbXQsIC4uLikgRFBVX0RFQlVHKCJlbmMlZCAiIGZtdCxcCisjZGVmaW5lIERQVV9ERUJV R19FTkMoZSwgZm10LCAuLi4pIERSTV9ERVZfREVCVUcoImVuYyVkICIgZm10LFwKIAkJKGUpID8g KGUpLT5iYXNlLmJhc2UuaWQgOiAtMSwgIyNfX1ZBX0FSR1NfXykKIAotI2RlZmluZSBEUFVfRVJS T1JfRU5DKGUsIGZtdCwgLi4uKSBEUFVfRVJST1IoImVuYyVkICIgZm10LFwKKyNkZWZpbmUgRFBV X0VSUk9SX0VOQyhlLCBmbXQsIC4uLikgRFJNX0RFVl9FUlJPUigiZW5jJWQgIiBmbXQsXAogCQko ZSkgPyAoZSktPmJhc2UuYmFzZS5pZCA6IC0xLCAjI19fVkFfQVJHU19fKQogCi0jZGVmaW5lIERQ VV9ERUJVR19QSFlTKHAsIGZtdCwgLi4uKSBEUFVfREVCVUcoImVuYyVkIGludGYlZCBwcCVkICIg Zm10LFwKKyNkZWZpbmUgRFBVX0RFQlVHX1BIWVMocCwgZm10LCAuLi4pIERSTV9ERVZfREVCVUco ImVuYyVkIGludGYlZCBwcCVkICIgZm10LFwKIAkJKHApID8gKHApLT5wYXJlbnQtPmJhc2UuaWQg OiAtMSwgXAogCQkocCkgPyAocCktPmludGZfaWR4IC0gSU5URl8wIDogLTEsIFwKIAkJKHApID8g KChwKS0+aHdfcHAgPyAocCktPmh3X3BwLT5pZHggLSBQSU5HUE9OR18wIDogLTEpIDogLTEsIFwK IAkJIyNfX1ZBX0FSR1NfXykKIAotI2RlZmluZSBEUFVfRVJST1JfUEhZUyhwLCBmbXQsIC4uLikg RFBVX0VSUk9SKCJlbmMlZCBpbnRmJWQgcHAlZCAiIGZtdCxcCisjZGVmaW5lIERQVV9FUlJPUl9Q SFlTKHAsIGZtdCwgLi4uKSBEUk1fREVWX0VSUk9SKCJlbmMlZCBpbnRmJWQgcHAlZCAiIGZtdCxc CiAJCShwKSA/IChwKS0+cGFyZW50LT5iYXNlLmlkIDogLTEsIFwKIAkJKHApID8gKHApLT5pbnRm X2lkeCAtIElOVEZfMCA6IC0xLCBcCiAJCShwKSA/ICgocCktPmh3X3BwID8gKHApLT5od19wcC0+ aWR4IC0gUElOR1BPTkdfMCA6IC0xKSA6IC0xLCBcCkBAIC0yMjUsMTkgKzIyNSwxOSBAQCBzdGF0 aWMgaW5saW5lIGludCBfZHB1X2VuY29kZXJfcG93ZXJfZW5hYmxlKHN0cnVjdCBkcHVfZW5jb2Rl cl92aXJ0ICpkcHVfZW5jLAogCXN0cnVjdCBkcHVfa21zICpkcHVfa21zOwogCiAJaWYgKCFkcHVf ZW5jKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBkcHUgZW5jXG4iKTsKKwkJRFJNX0RFVl9FUlJP UigiaW52YWxpZCBkcHUgZW5jXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJZHJtX2Vu YyA9ICZkcHVfZW5jLT5iYXNlOwogCWlmICghZHJtX2VuYy0+ZGV2IHx8ICFkcm1fZW5jLT5kZXYt PmRldl9wcml2YXRlKSB7Ci0JCURQVV9FUlJPUigiZHJtIGRldmljZSBpbnZhbGlkXG4iKTsKKwkJ RFJNX0RFVl9FUlJPUigiZHJtIGRldmljZSBpbnZhbGlkXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7 CiAJfQogCiAJcHJpdiA9IGRybV9lbmMtPmRldi0+ZGV2X3ByaXZhdGU7CiAJaWYgKCFwcml2LT5r bXMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGttc1xuIik7CisJCURSTV9ERVZfRVJST1IoImlu dmFsaWQga21zXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0yNzYsNyArMjc2LDcg QEAgaW50IGRwdV9lbmNvZGVyX2hlbHBlcl93YWl0X2Zvcl9pcnEoc3RydWN0IGRwdV9lbmNvZGVy X3BoeXMgKnBoeXNfZW5jLAogCWludCByZXQ7CiAKIAlpZiAoIXBoeXNfZW5jIHx8ICF3YWl0X2lu Zm8gfHwgaW50cl9pZHggPj0gSU5UUl9JRFhfTUFYKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBw YXJhbXNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIHBhcmFtc1xuIik7CiAJCXJldHVy biAtRUlOVkFMOwogCX0KIAlpcnEgPSAmcGh5c19lbmMtPmlycVtpbnRyX2lkeF07CkBAIC0zNTEs NyArMzUxLDcgQEAgaW50IGRwdV9lbmNvZGVyX2hlbHBlcl9yZWdpc3Rlcl9pcnEoc3RydWN0IGRw dV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jLAogCWludCByZXQgPSAwOwogCiAJaWYgKCFwaHlzX2Vu YyB8fCBpbnRyX2lkeCA+PSBJTlRSX0lEWF9NQVgpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBh cmFtc1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgcGFyYW1zXG4iKTsKIAkJcmV0dXJu IC1FSU5WQUw7CiAJfQogCWlycSA9ICZwaHlzX2VuYy0+aXJxW2ludHJfaWR4XTsKQEAgLTQwNiw3 ICs0MDYsNyBAQCBpbnQgZHB1X2VuY29kZXJfaGVscGVyX3VucmVnaXN0ZXJfaXJxKHN0cnVjdCBk cHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKIAlpbnQgcmV0OwogCiAJaWYgKCFwaHlzX2VuYykg ewotCQlEUFVfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7CisJCURSTV9ERVZfRVJST1IoImlu dmFsaWQgZW5jb2RlclxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAlpcnEgPSAmcGh5c19l bmMtPmlycVtpbnRyX2lkeF07CkBAIC00NTAsNyArNDUwLDcgQEAgdm9pZCBkcHVfZW5jb2Rlcl9n ZXRfaHdfcmVzb3VyY2VzKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKIAlpbnQgaSA9IDA7 CiAKIAlpZiAoIWh3X3JlcyB8fCAhZHJtX2VuYyB8fCAhY29ubl9zdGF0ZSkgewotCQlEUFVfRVJS T1IoImludmFsaWQgYXJndW1lbnQocyksIGRybV9lbmMgJWQsIHJlcyAlZCwgc3RhdGUgJWRcbiIs CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgYXJndW1lbnQocyksIGRybV9lbmMgJWQsIHJlcyAl ZCwgc3RhdGUgJWRcbiIsCiAJCQkJZHJtX2VuYyAhPSAwLCBod19yZXMgIT0gMCwgY29ubl9zdGF0 ZSAhPSAwKTsKIAkJcmV0dXJuOwogCX0KQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0aWMgdm9pZCBk cHVfZW5jb2Rlcl9kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYykKIAlpbnQgaSA9 IDA7CiAKIAlpZiAoIWRybV9lbmMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIp OworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOwogCQlyZXR1cm47CiAJfQog CkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBkcHVfZW5jb2Rlcl9oZWxwZXJfc3BsaXRfY29uZmln KAogCXN0cnVjdCBtc21fZGlzcGxheV9pbmZvICpkaXNwX2luZm87CiAKIAlpZiAoIXBoeXNfZW5j IHx8ICFwaHlzX2VuYy0+aHdfbWRwdG9wIHx8ICFwaHlzX2VuYy0+cGFyZW50KSB7Ci0JCURQVV9F UlJPUigiaW52YWxpZCBhcmcocyksIGVuY29kZXIgJWRcbiIsIHBoeXNfZW5jICE9IDApOworCQlE Uk1fREVWX0VSUk9SKCJpbnZhbGlkIGFyZyhzKSwgZW5jb2RlciAlZFxuIiwgcGh5c19lbmMgIT0g MCk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCBzdGF0aWMgaW50IGRwdV9l bmNvZGVyX3ZpcnRfYXRvbWljX2NoZWNrKAogCWludCByZXQgPSAwOwogCiAJaWYgKCFkcm1fZW5j IHx8ICFjcnRjX3N0YXRlIHx8ICFjb25uX3N0YXRlKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBh cmcocyksIGRybV9lbmMgJWQsIGNydGMvY29ubiBzdGF0ZSAlZC8lZFxuIiwKKwkJRFJNX0RFVl9F UlJPUigiaW52YWxpZCBhcmcocyksIGRybV9lbmMgJWQsIGNydGMvY29ubiBzdGF0ZSAlZC8lZFxu IiwKIAkJCQlkcm1fZW5jICE9IDAsIGNydGNfc3RhdGUgIT0gMCwgY29ubl9zdGF0ZSAhPSAwKTsK IAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtNjg1LDExICs2ODUsMTEgQEAgc3RhdGljIHZvaWQg X2RwdV9lbmNvZGVyX3VwZGF0ZV92c3luY19zb3VyY2Uoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQg KmRwdV9lbmMsCiAJaW50IGk7CiAKIAlpZiAoIWRwdV9lbmMgfHwgIWRpc3BfaW5mbykgewotCQlE UFVfRVJST1IoImludmFsaWQgcGFyYW0gZHB1X2VuYzolZCBvciBkaXNwX2luZm86JWRcbiIsCisJ CURSTV9ERVZfRVJST1IoImludmFsaWQgcGFyYW0gZHB1X2VuYzolZCBvciBkaXNwX2luZm86JWRc biIsCiAJCQkJCWRwdV9lbmMgIT0gTlVMTCwgZGlzcF9pbmZvICE9IE5VTEwpOwogCQlyZXR1cm47 CiAJfSBlbHNlIGlmIChkcHVfZW5jLT5udW1fcGh5c19lbmNzID4gQVJSQVlfU0laRShkcHVfZW5j LT5od19wcCkpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIG51bSBwaHlzIGVuYyAlZC8lZFxuIiwK KwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBudW0gcGh5cyBlbmMgJWQvJWRcbiIsCiAJCQkJZHB1 X2VuYy0+bnVtX3BoeXNfZW5jcywKIAkJCQkoaW50KSBBUlJBWV9TSVpFKGRwdV9lbmMtPmh3X3Bw KSk7CiAJCXJldHVybjsKQEAgLTcwMSwxMyArNzAxLDEzIEBAIHN0YXRpYyB2b2lkIF9kcHVfZW5j b2Rlcl91cGRhdGVfdnN5bmNfc291cmNlKHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5j LAogCiAJZHB1X2ttcyA9IHRvX2RwdV9rbXMocHJpdi0+a21zKTsKIAlpZiAoIWRwdV9rbXMpIHsK LQkJRFBVX0VSUk9SKCJpbnZhbGlkIGRwdV9rbXNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZh bGlkIGRwdV9rbXNcbiIpOwogCQlyZXR1cm47CiAJfQogCiAJaHdfbWRwdG9wID0gZHB1X2ttcy0+ aHdfbWRwOwogCWlmICghaHdfbWRwdG9wKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBtZHB0b3Bc biIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIG1kcHRvcFxuIik7CiAJCXJldHVybjsKIAl9 CiAKQEAgLTczMiw3ICs3MzIsNyBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfaXJxX2NvbnRy b2woc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLCBib29sIGVuYWJsZSkKIAlpbnQgaTsKIAog CWlmICghZHJtX2VuYykgewotCQlEUFVfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7CisJCURS TV9ERVZfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTc2 Miw3ICs3NjIsNyBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcmVzb3VyY2VfY29udHJvbF9o ZWxwZXIoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAogCXRyYWNlX2RwdV9lbmNfcmNfaGVs cGVyKERSTUlEKGRybV9lbmMpLCBlbmFibGUpOwogCiAJaWYgKCFkcHVfZW5jLT5jdXJfbWFzdGVy KSB7Ci0JCURQVV9FUlJPUigiZW5jb2RlciBtYXN0ZXIgbm90IHNldFxuIik7CisJCURSTV9ERVZf RVJST1IoImVuY29kZXIgbWFzdGVyIG5vdCBzZXRcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC03 OTMsNyArNzkzLDcgQEAgc3RhdGljIGludCBkcHVfZW5jb2Rlcl9yZXNvdXJjZV9jb250cm9sKHN0 cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKIAogCWlmICghZHJtX2VuYyB8fCAhZHJtX2VuYy0+ ZGV2IHx8ICFkcm1fZW5jLT5kZXYtPmRldl9wcml2YXRlIHx8CiAJCQkhZHJtX2VuYy0+Y3J0Yykg ewotCQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7CisJCURSTV9ERVZfRVJST1Io ImludmFsaWQgcGFyYW1ldGVyc1xuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAlkcHVfZW5j ID0gdG9fZHB1X2VuY29kZXJfdmlydChkcm1fZW5jKTsKQEAgLTgwMiw3ICs4MDIsNyBAQCBzdGF0 aWMgaW50IGRwdV9lbmNvZGVyX3Jlc291cmNlX2NvbnRyb2woc3RydWN0IGRybV9lbmNvZGVyICpk cm1fZW5jLAogCQkJCQkJTVNNX0RJU1BMQVlfQ0FQX1ZJRF9NT0RFOwogCiAJaWYgKGRybV9lbmMt PmNydGMtPmluZGV4ID49IEFSUkFZX1NJWkUocHJpdi0+ZGlzcF90aHJlYWQpKSB7Ci0JCURQVV9F UlJPUigiaW52YWxpZCBjcnRjIGluZGV4XG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBj cnRjIGluZGV4XG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCWRpc3BfdGhyZWFkID0gJnBy aXYtPmRpc3BfdGhyZWFkW2RybV9lbmMtPmNydGMtPmluZGV4XTsKQEAgLTEwMjIsNyArMTAyMiw3 IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNv ZGVyICpkcm1fZW5jLAogCWludCBpID0gMCwgcmV0OwogCiAJaWYgKCFkcm1fZW5jKSB7Ci0JCURQ VV9FUlJPUigiaW52YWxpZCBlbmNvZGVyXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBl bmNvZGVyXG4iKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMTA5NCwyMCArMTA5NCwyMCBAQCBzdGF0 aWMgdm9pZCBfZHB1X2VuY29kZXJfdmlydF9lbmFibGVfaGVscGVyKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZHJtX2VuYykKIAlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttczsKIAogCWlmICghZHJtX2VuYyB8 fCAhZHJtX2VuYy0+ZGV2IHx8ICFkcm1fZW5jLT5kZXYtPmRldl9wcml2YXRlKSB7Ci0JCURQVV9F UlJPUigiaW52YWxpZCBwYXJhbWV0ZXJzXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBw YXJhbWV0ZXJzXG4iKTsKIAkJcmV0dXJuOwogCX0KIAogCXByaXYgPSBkcm1fZW5jLT5kZXYtPmRl dl9wcml2YXRlOwogCWRwdV9rbXMgPSB0b19kcHVfa21zKHByaXYtPmttcyk7CiAJaWYgKCFkcHVf a21zKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBkcHVfa21zXG4iKTsKKwkJRFJNX0RFVl9FUlJP UigiaW52YWxpZCBkcHVfa21zXG4iKTsKIAkJcmV0dXJuOwogCX0KIAogCWRwdV9lbmMgPSB0b19k cHVfZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwogCWlmICghZHB1X2VuYyB8fCAhZHB1X2VuYy0+Y3Vy X21hc3RlcikgewotCQlEUFVfRVJST1IoImludmFsaWQgZHB1IGVuY29kZXIvbWFzdGVyXG4iKTsK KwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBkcHUgZW5jb2Rlci9tYXN0ZXJcbiIpOwogCQlyZXR1 cm47CiAJfQogCkBAIC0xMTMyLDcgKzExMzIsNyBAQCB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfcmVz dG9yZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMpCiAJaW50IGk7CiAKIAlpZiAoIWRybV9l bmMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOworCQlEUk1fREVWX0VSUk9S KCJpbnZhbGlkIGVuY29kZXJcbiIpOwogCQlyZXR1cm47CiAJfQogCWRwdV9lbmMgPSB0b19kcHVf ZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgc3RhdGljIHZvaWQg ZHB1X2VuY29kZXJfdmlydF9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jKQogCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICpjdXJfbW9kZSA9IE5VTEw7CiAKIAlpZiAoIWRybV9lbmMp IHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOworCQlEUk1fREVWX0VSUk9SKCJp bnZhbGlkIGVuY29kZXJcbiIpOwogCQlyZXR1cm47CiAJfQogCWRwdV9lbmMgPSB0b19kcHVfZW5j b2Rlcl92aXJ0KGRybV9lbmMpOwpAQCAtMTE3OCw3ICsxMTc4LDcgQEAgc3RhdGljIHZvaWQgZHB1 X2VuY29kZXJfdmlydF9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jKQogCX0KIAog CWlmICghZHB1X2VuYy0+Y3VyX21hc3RlcikgewotCQlEUFVfRVJST1IoInZpcnQgZW5jb2RlciBo YXMgbm8gbWFzdGVyISBudW1fcGh5cyAlZFxuIiwgaSk7CisJCURSTV9ERVZfRVJST1IoInZpcnQg ZW5jb2RlciBoYXMgbm8gbWFzdGVyISBudW1fcGh5cyAlZFxuIiwgaSk7CiAJCXJldHVybjsKIAl9 CiAKQEAgLTEyMjEsMTMgKzEyMjEsMTMgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9k aXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYykKIAlpbnQgaSA9IDA7CiAKIAlpZiAo IWRybV9lbmMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOworCQlEUk1fREVW X0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOwogCQlyZXR1cm47CiAJfSBlbHNlIGlmICghZHJt X2VuYy0+ZGV2KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBkZXZcbiIpOworCQlEUk1fREVWX0VS Uk9SKCJpbnZhbGlkIGRldlxuIik7CiAJCXJldHVybjsKIAl9IGVsc2UgaWYgKCFkcm1fZW5jLT5k ZXYtPmRldl9wcml2YXRlKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBkZXZfcHJpdmF0ZVxuIik7 CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgZGV2X3ByaXZhdGVcbiIpOwogCQlyZXR1cm47CiAJ fQogCkBAIC0xMjU1LDcgKzEyNTUsNyBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X2Rp c2FibGUoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jKQogCiAJLyogYWZ0ZXIgcGh5cyB3YWl0 cyBmb3IgZnJhbWUtZG9uZSwgc2hvdWxkIGJlIG5vIG1vcmUgZnJhbWVzIHBlbmRpbmcgKi8KIAlp ZiAoYXRvbWljX3hjaGcoJmRwdV9lbmMtPmZyYW1lX2RvbmVfdGltZW91dCwgMCkpIHsKLQkJRFBV X0VSUk9SKCJlbmMlZCB0aW1lb3V0IHBlbmRpbmdcbiIsIGRybV9lbmMtPmJhc2UuaWQpOworCQlE Uk1fREVWX0VSUk9SKCJlbmMlZCB0aW1lb3V0IHBlbmRpbmdcbiIsIGRybV9lbmMtPmJhc2UuaWQp OwogCQlkZWxfdGltZXJfc3luYygmZHB1X2VuYy0+ZnJhbWVfZG9uZV90aW1lcik7CiAJfQogCkBA IC0xMzMzLDcgKzEzMzMsNyBAQCB2b2lkIGRwdV9lbmNvZGVyX3JlZ2lzdGVyX3ZibGFua19jYWxs YmFjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsCiAJZW5hYmxlID0gdmJsX2NiID8gdHJ1 ZSA6IGZhbHNlOwogCiAJaWYgKCFkcm1fZW5jKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBlbmNv ZGVyXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBlbmNvZGVyXG4iKTsKIAkJcmV0dXJu OwogCX0KIAl0cmFjZV9kcHVfZW5jX3ZibGFua19jYihEUk1JRChkcm1fZW5jKSwgZW5hYmxlKTsK QEAgLTEzNjIsNyArMTM2Miw3IEBAIHZvaWQgZHB1X2VuY29kZXJfcmVnaXN0ZXJfZnJhbWVfZXZl bnRfY2FsbGJhY2soc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAogCWVuYWJsZSA9IGZyYW1l X2V2ZW50X2NiID8gdHJ1ZSA6IGZhbHNlOwogCiAJaWYgKCFkcm1fZW5jKSB7Ci0JCURQVV9FUlJP UigiaW52YWxpZCBlbmNvZGVyXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBlbmNvZGVy XG4iKTsKIAkJcmV0dXJuOwogCX0KIAl0cmFjZV9kcHVfZW5jX2ZyYW1lX2V2ZW50X2NiKERSTUlE KGRybV9lbmMpLCBlbmFibGUpOwpAQCAtMTQyOCw3ICsxNDI4LDcgQEAgc3RhdGljIHZvaWQgZHB1 X2VuY29kZXJfb2ZmX3dvcmsoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaykKIAkJCXN0cnVjdCBk cHVfZW5jb2Rlcl92aXJ0LCBkZWxheWVkX29mZl93b3JrLndvcmspOwogCiAJaWYgKCFkcHVfZW5j KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBkcHUgZW5jb2RlclxuIik7CisJCURSTV9ERVZfRVJS T1IoImludmFsaWQgZHB1IGVuY29kZXJcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xNDUzLDE5 ICsxNDUzLDE5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZHB1X2VuY29kZXJfdHJpZ2dlcl9mbHVz aChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsCiAJdTMyIHJldCA9IFVJTlRfTUFYOwogCiAJ aWYgKCFkcm1fZW5jIHx8ICFwaHlzKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVudChz KSwgZHJtX2VuYyAlZCwgcGh5c19lbmMgJWRcbiIsCisJCURSTV9ERVZfRVJST1IoImludmFsaWQg YXJndW1lbnQocyksIGRybV9lbmMgJWQsIHBoeXNfZW5jICVkXG4iLAogCQkJCWRybV9lbmMgIT0g MCwgcGh5cyAhPSAwKTsKIAkJcmV0dXJuOwogCX0KIAogCWlmICghcGh5cy0+aHdfcHApIHsKLQkJ RFBVX0VSUk9SKCJpbnZhbGlkIHBpbmdwb25nIGh3XG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52 YWxpZCBwaW5ncG9uZyBod1xuIik7CiAJCXJldHVybjsKIAl9CiAKIAljdGwgPSBwaHlzLT5od19j dGw7CiAJaWYgKCFjdGwgfHwgIWN0bC0+b3BzLnRyaWdnZXJfZmx1c2gpIHsKLQkJRFBVX0VSUk9S KCJtaXNzaW5nIHRyaWdnZXIgY2JcbiIpOworCQlEUk1fREVWX0VSUk9SKCJtaXNzaW5nIHRyaWdn ZXIgY2JcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xNDkwLDEyICsxNDkwLDEyIEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBfZHB1X2VuY29kZXJfdHJpZ2dlcl9mbHVzaChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmRybV9lbmMsCiBzdGF0aWMgaW5saW5lIHZvaWQgX2RwdV9lbmNvZGVyX3RyaWdnZXJfc3Rh cnQoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXMpCiB7CiAJaWYgKCFwaHlzKSB7Ci0JCURQ VV9FUlJPUigiaW52YWxpZCBhcmd1bWVudChzKVxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFs aWQgYXJndW1lbnQocylcbiIpOwogCQlyZXR1cm47CiAJfQogCiAJaWYgKCFwaHlzLT5od19wcCkg ewotCQlEUFVfRVJST1IoImludmFsaWQgcGluZ3BvbmcgaHdcbiIpOworCQlEUk1fREVWX0VSUk9S KCJpbnZhbGlkIHBpbmdwb25nIGh3XG4iKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMTUwOCw3ICsx NTA4LDcgQEAgdm9pZCBkcHVfZW5jb2Rlcl9oZWxwZXJfdHJpZ2dlcl9zdGFydChzdHJ1Y3QgZHB1 X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCiAJc3RydWN0IGRwdV9od19jdGwgKmN0bDsKIAogCWlm ICghcGh5c19lbmMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOworCQlEUk1f REVWX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xNTUx LDcgKzE1NTEsNyBAQCB2b2lkIGRwdV9lbmNvZGVyX2hlbHBlcl9od19yZXNldChzdHJ1Y3QgZHB1 X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCiAJaW50IHJjOwogCiAJaWYgKCFwaHlzX2VuYykgewot CQlEUFVfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFs aWQgZW5jb2RlclxuIik7CiAJCXJldHVybjsKIAl9CiAJZHB1X2VuYyA9IHRvX2RwdV9lbmNvZGVy X3ZpcnQocGh5c19lbmMtPnBhcmVudCk7CkBAIC0xNTg4LDcgKzE1ODgsNyBAQCBzdGF0aWMgdm9p ZCBfZHB1X2VuY29kZXJfa2lja29mZl9waHlzKHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVf ZW5jKQogCXVuc2lnbmVkIGxvbmcgbG9ja19mbGFnczsKIAogCWlmICghZHB1X2VuYykgewotCQlE UFVfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQg ZW5jb2RlclxuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTE2MzksNyArMTYzOSw3IEBAIHZvaWQg ZHB1X2VuY29kZXJfdHJpZ2dlcl9raWNrb2ZmX3BlbmRpbmcoc3RydWN0IGRybV9lbmNvZGVyICpk cm1fZW5jKQogCXN0cnVjdCBtc21fZGlzcGxheV9pbmZvICpkaXNwX2luZm87CiAKIAlpZiAoIWRy bV9lbmMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOworCQlEUk1fREVWX0VS Uk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOwogCQlyZXR1cm47CiAJfQogCWRwdV9lbmMgPSB0b19k cHVfZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwpAQCAtMTY3NiwxOSArMTY3NiwxOSBAQCBzdGF0aWMg dTMyIF9kcHVfZW5jb2Rlcl9jYWxjdWxhdGVfbGluZXRpbWUoc3RydWN0IGRwdV9lbmNvZGVyX3Zp cnQgKmRwdV9lbmMsCiAJCXJldHVybiAwOwogCiAJaWYgKCFkcHVfZW5jLT5jdXJfbWFzdGVyLT5v cHMuZ2V0X2xpbmVfY291bnQpIHsKLQkJRFBVX0VSUk9SKCJnZXRfbGluZV9jb3VudCBmdW5jdGlv biBub3QgZGVmaW5lZFxuIik7CisJCURSTV9ERVZfRVJST1IoImdldF9saW5lX2NvdW50IGZ1bmN0 aW9uIG5vdCBkZWZpbmVkXG4iKTsKIAkJcmV0dXJuIDA7CiAJfQogCiAJcGNsa19yYXRlID0gbW9k ZS0+Y2xvY2s7IC8qIHBpeGVsIGNsb2NrIGluIGtIeiAqLwogCWlmIChwY2xrX3JhdGUgPT0gMCkg ewotCQlEUFVfRVJST1IoInBjbGsgaXMgMCwgY2Fubm90IGNhbGN1bGF0ZSBsaW5lIHRpbWVcbiIp OworCQlEUk1fREVWX0VSUk9SKCJwY2xrIGlzIDAsIGNhbm5vdCBjYWxjdWxhdGUgbGluZSB0aW1l XG4iKTsKIAkJcmV0dXJuIDA7CiAJfQogCiAJcGNsa19wZXJpb2QgPSBESVZfUk9VTkRfVVBfVUxM KDEwMDAwMDAwMDB1bGwsIHBjbGtfcmF0ZSk7CiAJaWYgKHBjbGtfcGVyaW9kID09IDApIHsKLQkJ RFBVX0VSUk9SKCJwY2xrIHBlcmlvZCBpcyAwXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigicGNsayBw ZXJpb2QgaXMgMFxuIik7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMTY5OCw3ICsxNjk4LDcgQEAg c3RhdGljIHUzMiBfZHB1X2VuY29kZXJfY2FsY3VsYXRlX2xpbmV0aW1lKHN0cnVjdCBkcHVfZW5j b2Rlcl92aXJ0ICpkcHVfZW5jLAogCSAqLwogCWxpbmVfdGltZSA9IChwY2xrX3BlcmlvZCAqIG1v ZGUtPmh0b3RhbCkgLyAxMDAwOwogCWlmIChsaW5lX3RpbWUgPT0gMCkgewotCQlEUFVfRVJST1Io ImxpbmUgdGltZSBjYWxjdWxhdGlvbiBpcyAwXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigibGluZSB0 aW1lIGNhbGN1bGF0aW9uIGlzIDBcbiIpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTE3MjIsNyAr MTcyMiw3IEBAIHN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX3dha2V1cF90aW1lKHN0cnVjdCBkcm1f ZW5jb2RlciAqZHJtX2VuYywKIAlkcHVfZW5jID0gdG9fZHB1X2VuY29kZXJfdmlydChkcm1fZW5j KTsKIAogCWlmICghZHJtX2VuYy0+Y3J0YyB8fCAhZHJtX2VuYy0+Y3J0Yy0+c3RhdGUpIHsKLQkJ RFBVX0VSUk9SKCJjcnRjL2NydGMgc3RhdGUgb2JqZWN0IGlzIE5VTExcbiIpOworCQlEUk1fREVW X0VSUk9SKCJjcnRjL2NydGMgc3RhdGUgb2JqZWN0IGlzIE5VTExcbiIpOwogCQlyZXR1cm4gLUVJ TlZBTDsKIAl9CiAJbW9kZSA9ICZkcm1fZW5jLT5jcnRjLT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsK QEAgLTE3NDAsNyArMTc0MCw3IEBAIHN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX3dha2V1cF90aW1l KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKIAkJdGltZV90b192c3luYyA9IGxpbmVfdGlt ZSAqICh2dG90YWwgLSBjdXJfbGluZSk7CiAKIAlpZiAodGltZV90b192c3luYyA9PSAwKSB7Ci0J CURQVV9FUlJPUigidGltZSB0byB2c3luYyBzaG91bGQgbm90IGJlIHplcm8sIHZ0b3RhbD0lZFxu IiwKKwkJRFJNX0RFVl9FUlJPUigidGltZSB0byB2c3luYyBzaG91bGQgbm90IGJlIHplcm8sIHZ0 b3RhbD0lZFxuIiwKIAkJCQl2dG90YWwpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC0xNzY2 LDE5ICsxNzY2LDE5IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZzeW5jX2V2ZW50X2hhbmRs ZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpCiAKIAlpZiAoIWRybV9lbmMtPmRldiB8fCAhZHJtX2Vu Yy0+ZGV2LT5kZXZfcHJpdmF0ZSB8fAogCQkJIWRybV9lbmMtPmNydGMpIHsKLQkJRFBVX0VSUk9S KCJpbnZhbGlkIHBhcmFtZXRlcnNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIHBhcmFt ZXRlcnNcbiIpOwogCQlyZXR1cm47CiAJfQogCiAJcHJpdiA9IGRybV9lbmMtPmRldi0+ZGV2X3By aXZhdGU7CiAKIAlpZiAoZHJtX2VuYy0+Y3J0Yy0+aW5kZXggPj0gQVJSQVlfU0laRShwcml2LT5l dmVudF90aHJlYWQpKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBjcnRjIGluZGV4XG4iKTsKKwkJ RFJNX0RFVl9FUlJPUigiaW52YWxpZCBjcnRjIGluZGV4XG4iKTsKIAkJcmV0dXJuOwogCX0KIAll dmVudF90aHJlYWQgPSAmcHJpdi0+ZXZlbnRfdGhyZWFkW2RybV9lbmMtPmNydGMtPmluZGV4XTsK IAlpZiAoIWV2ZW50X3RocmVhZCkgewotCQlEUFVfRVJST1IoImV2ZW50X3RocmVhZCBub3QgZm91 bmQgZm9yIGNydGM6JWRcbiIsCisJCURSTV9ERVZfRVJST1IoImV2ZW50X3RocmVhZCBub3QgZm91 bmQgZm9yIGNydGM6JWRcbiIsCiAJCQkJZHJtX2VuYy0+Y3J0Yy0+aW5kZXgpOwogCQlyZXR1cm47 CiAJfQpAQCAtMTc5Myw3ICsxNzkzLDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdnN5bmNf ZXZlbnRfd29ya19oYW5kbGVyKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmspCiAJa3RpbWVfdCB3 YWtldXBfdGltZTsKIAogCWlmICghZHB1X2VuYykgewotCQlEUFVfRVJST1IoImludmFsaWQgZHB1 IGVuY29kZXJcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGRwdSBlbmNvZGVyXG4iKTsK IAkJcmV0dXJuOwogCX0KIApAQCAtMTgxNCw3ICsxODE0LDcgQEAgdm9pZCBkcHVfZW5jb2Rlcl9w cmVwYXJlX2Zvcl9raWNrb2ZmKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKIAl1bnNpZ25l ZCBpbnQgaTsKIAogCWlmICghZHJtX2VuYyB8fCAhcGFyYW1zKSB7Ci0JCURQVV9FUlJPUigiaW52 YWxpZCBhcmdzXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBhcmdzXG4iKTsKIAkJcmV0 dXJuOwogCX0KIAlkcHVfZW5jID0gdG9fZHB1X2VuY29kZXJfdmlydChkcm1fZW5jKTsKQEAgLTE4 NTUsNyArMTg1NSw3IEBAIHZvaWQgZHB1X2VuY29kZXJfa2lja29mZihzdHJ1Y3QgZHJtX2VuY29k ZXIgKmRybV9lbmMpCiAJdW5zaWduZWQgaW50IGk7CiAKIAlpZiAoIWRybV9lbmMpIHsKLQkJRFBV X0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGVu Y29kZXJcbiIpOwogCQlyZXR1cm47CiAJfQogCURQVV9BVFJBQ0VfQkVHSU4oImVuY29kZXJfa2lj a29mZiIpOwpAQCAtMTg5Nyw3ICsxODk3LDcgQEAgdm9pZCBkcHVfZW5jb2Rlcl9wcmVwYXJlX2Nv bW1pdChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMpCiAJaW50IGk7CiAKIAlpZiAoIWRybV9l bmMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOworCQlEUk1fREVWX0VSUk9S KCJpbnZhbGlkIGVuY29kZXJcbiIpOwogCQlyZXR1cm47CiAJfQogCWRwdV9lbmMgPSB0b19kcHVf ZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwpAQCAtMjA4NSw3ICsyMDg1LDcgQEAgc3RhdGljIGludCBf ZHB1X2VuY29kZXJfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYykKIAlj aGFyIG5hbWVbRFBVX05BTUVfU0laRV07CiAKIAlpZiAoIWRybV9lbmMgfHwgIWRybV9lbmMtPmRl diB8fCAhZHJtX2VuYy0+ZGV2LT5kZXZfcHJpdmF0ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQg ZW5jb2RlciBvciBrbXNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGVuY29kZXIgb3Ig a21zXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0yMjE1LDcgKzIyMTUsNyBAQCBz dGF0aWMgaW50IGRwdV9lbmNvZGVyX3NldHVwX2Rpc3BsYXkoc3RydWN0IGRwdV9lbmNvZGVyX3Zp cnQgKmRwdV9lbmMsCiAJc3RydWN0IGRwdV9lbmNfcGh5c19pbml0X3BhcmFtcyBwaHlzX3BhcmFt czsKIAogCWlmICghZHB1X2VuYyB8fCAhZHB1X2ttcykgewotCQlEUFVfRVJST1IoImludmFsaWQg YXJnKHMpLCBlbmMgJWQga21zICVkXG4iLAorCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGFyZyhz KSwgZW5jICVkIGttcyAlZFxuIiwKIAkJCQlkcHVfZW5jICE9IDAsIGRwdV9rbXMgIT0gMCk7CiAJ CXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTIyMjYsNyArMjIyNiw3IEBAIHN0YXRpYyBpbnQgZHB1 X2VuY29kZXJfc2V0dXBfZGlzcGxheShzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYywK IAlwaHlzX3BhcmFtcy5wYXJlbnRfb3BzID0gJmRwdV9lbmNvZGVyX3BhcmVudF9vcHM7CiAJcGh5 c19wYXJhbXMuZW5jX3NwaW5sb2NrID0gJmRwdV9lbmMtPmVuY19zcGlubG9jazsKIAotCURQVV9E RUJVRygiXG4iKTsKKwlEUk1fREVWX0RFQlVHKCJcbiIpOwogCiAJaWYgKGRpc3BfaW5mby0+aW50 Zl90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9EU0kpIHsKIAkJKmRybV9lbmNfbW9kZSA9IERS TV9NT0RFX0VOQ09ERVJfRFNJOwpAQCAtMjI0Niw3ICsyMjQ2LDcgQEAgc3RhdGljIGludCBkcHVf ZW5jb2Rlcl9zZXR1cF9kaXNwbGF5KHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jLAog CiAJZHB1X2VuYy0+ZGlzcGxheV9udW1fb2ZfaF90aWxlcyA9IGRpc3BfaW5mby0+bnVtX29mX2hf dGlsZXM7CiAKLQlEUFVfREVCVUcoImRzaV9pbmZvLT5udW1fb2ZfaF90aWxlcyAlZFxuIiwgZGlz cF9pbmZvLT5udW1fb2ZfaF90aWxlcyk7CisJRFJNX0RFVl9ERUJVRygiZHNpX2luZm8tPm51bV9v Zl9oX3RpbGVzICVkXG4iLCBkaXNwX2luZm8tPm51bV9vZl9oX3RpbGVzKTsKIAogCWlmICgoZGlz cF9pbmZvLT5jYXBhYmlsaXRpZXMgJiBNU01fRElTUExBWV9DQVBfQ01EX01PREUpIHx8CiAJICAg IChkaXNwX2luZm8tPmNhcGFiaWxpdGllcyAmIE1TTV9ESVNQTEFZX0NBUF9WSURfTU9ERSkpCkBA IC0yMjcxLDcgKzIyNzEsNyBAQCBzdGF0aWMgaW50IGRwdV9lbmNvZGVyX3NldHVwX2Rpc3BsYXko c3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMsCiAJCQlwaHlzX3BhcmFtcy5zcGxpdF9y b2xlID0gRU5DX1JPTEVfU09MTzsKIAkJfQogCi0JCURQVV9ERUJVRygiaF90aWxlX2luc3RhbmNl ICVkID0gJWQsIHNwbGl0X3JvbGUgJWRcbiIsCisJCURSTV9ERVZfREVCVUcoImhfdGlsZV9pbnN0 YW5jZSAlZCA9ICVkLCBzcGxpdF9yb2xlICVkXG4iLAogCQkJCWksIGNvbnRyb2xsZXJfaWQsIHBo eXNfcGFyYW1zLnNwbGl0X3JvbGUpOwogCiAJCXBoeXNfcGFyYW1zLmludGZfaWR4ID0gZHB1X2Vu Y29kZXJfZ2V0X2ludGYoZHB1X2ttcy0+Y2F0YWxvZywKQEAgLTIzMTQsNyArMjMxNCw3IEBAIHN0 YXRpYyB2b2lkIGRwdV9lbmNvZGVyX2ZyYW1lX2RvbmVfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlz dCAqdCkKIAl1MzIgZXZlbnQ7CiAKIAlpZiAoIWRybV9lbmMtPmRldiB8fCAhZHJtX2VuYy0+ZGV2 LT5kZXZfcHJpdmF0ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7CisJ CURSTV9ERVZfRVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7CiAJCXJldHVybjsKIAl9CiAJ cHJpdiA9IGRybV9lbmMtPmRldi0+ZGV2X3ByaXZhdGU7CkBAIC0yMzk3LDcgKzIzOTcsNyBAQCBp bnQgZHB1X2VuY29kZXJfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9l bmNvZGVyICplbmMsCiAJcmV0dXJuIHJldDsKIAogZmFpbDoKLQlEUFVfRVJST1IoImZhaWxlZCB0 byBjcmVhdGUgZW5jb2RlclxuIik7CisJRFJNX0RFVl9FUlJPUigiZmFpbGVkIHRvIGNyZWF0ZSBl bmNvZGVyXG4iKTsKIAlpZiAoZHJtX2VuYykKIAkJZHB1X2VuY29kZXJfZGVzdHJveShkcm1fZW5j KTsKIApAQCAtMjQzNiw3ICsyNDM2LDcgQEAgaW50IGRwdV9lbmNvZGVyX3dhaXRfZm9yX2V2ZW50 KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKIAlpbnQgaSwgcmV0ID0gMDsKIAogCWlmICgh ZHJtX2VuYykgewotCQlEUFVfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7CisJCURSTV9ERVZf RVJST1IoImludmFsaWQgZW5jb2RlclxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAlkcHVf ZW5jID0gdG9fZHB1X2VuY29kZXJfdmlydChkcm1fZW5jKTsKQEAgLTI0ODEsNyArMjQ4MSw3IEBA IGVudW0gZHB1X2ludGZfbW9kZSBkcHVfZW5jb2Rlcl9nZXRfaW50Zl9tb2RlKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlcikKIAlpbnQgaTsKIAogCWlmICghZW5jb2RlcikgewotCQlEUFVfRVJS T1IoImludmFsaWQgZW5jb2RlclxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgZW5jb2Rl clxuIik7CiAJCXJldHVybiBJTlRGX01PREVfTk9ORTsKIAl9CiAJZHB1X2VuYyA9IHRvX2RwdV9l bmNvZGVyX3ZpcnQoZW5jb2Rlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYwppbmRleCAzMDg0Njc1Li4zMWI0OGI4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2Nt ZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNf Y21kLmMKQEAgLTE5LDEyICsxOSwxMiBAQAogI2luY2x1ZGUgImRwdV9mb3JtYXRzLmgiCiAjaW5j bHVkZSAiZHB1X3RyYWNlLmgiCiAKLSNkZWZpbmUgRFBVX0RFQlVHX0NNREVOQyhlLCBmbXQsIC4u LikgRFBVX0RFQlVHKCJlbmMlZCBpbnRmJWQgIiBmbXQsIFwKKyNkZWZpbmUgRFBVX0RFQlVHX0NN REVOQyhlLCBmbXQsIC4uLikgRFJNX0RFVl9ERUJVRygiZW5jJWQgaW50ZiVkICIgZm10LCBcCiAJ CShlKSAmJiAoZSktPmJhc2UucGFyZW50ID8gXAogCQkoZSktPmJhc2UucGFyZW50LT5iYXNlLmlk IDogLTEsIFwKIAkJKGUpID8gKGUpLT5iYXNlLmludGZfaWR4IC0gSU5URl8wIDogLTEsICMjX19W QV9BUkdTX18pCiAKLSNkZWZpbmUgRFBVX0VSUk9SX0NNREVOQyhlLCBmbXQsIC4uLikgRFBVX0VS Uk9SKCJlbmMlZCBpbnRmJWQgIiBmbXQsIFwKKyNkZWZpbmUgRFBVX0VSUk9SX0NNREVOQyhlLCBm bXQsIC4uLikgRFJNX0RFVl9FUlJPUigiZW5jJWQgaW50ZiVkICIgZm10LCBcCiAJCShlKSAmJiAo ZSktPmJhc2UucGFyZW50ID8gXAogCQkoZSktPmJhc2UucGFyZW50LT5iYXNlLmlkIDogLTEsIFwK IAkJKGUpID8gKGUpLT5iYXNlLmludGZfaWR4IC0gSU5URl8wIDogLTEsICMjX19WQV9BUkdTX18p CkBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfbW9k ZV9zZXQoCiAJaW50IGksIGluc3RhbmNlOwogCiAJaWYgKCFwaHlzX2VuYyB8fCAhbW9kZSB8fCAh YWRqX21vZGUpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3NcbiIpOworCQlEUk1fREVWX0VS Uk9SKCJpbnZhbGlkIGFyZ3NcbiIpOwogCQlyZXR1cm47CiAJfQogCXBoeXNfZW5jLT5jYWNoZWRf bW9kZSA9ICphZGpfbW9kZTsKQEAgLTI4Niw3ICsyODYsNyBAQCBzdGF0aWMgaW50IF9kcHVfZW5j b2Rlcl9waHlzX2NtZF93YWl0X2Zvcl9pZGxlKAogCWludCByZXQ7CiAKIAlpZiAoIXBoeXNfZW5j KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBlbmNvZGVyXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigi aW52YWxpZCBlbmNvZGVyXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0zMTIsNyAr MzEyLDcgQEAgc3RhdGljIGludCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9jb250cm9sX3ZibGFua19p cnEoCiAJaW50IHJlZmNvdW50OwogCiAJaWYgKCFwaHlzX2VuYyB8fCAhcGh5c19lbmMtPmh3X3Bw KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBlbmNvZGVyXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigi aW52YWxpZCBlbmNvZGVyXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0zOTUsNyAr Mzk1LDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfdGVhcmNoZWNrX2NvbmZp ZygKIAlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttczsKIAogCWlmICghcGh5c19lbmMgfHwgIXBoeXNf ZW5jLT5od19wcCkgewotCQlEUFVfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7CisJCURSTV9E RVZfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7CiAJCXJldHVybjsKIAl9CiAJbW9kZSA9ICZw aHlzX2VuYy0+Y2FjaGVkX21vZGU7CkBAIC00MTAsNyArNDEwLDcgQEAgc3RhdGljIHZvaWQgZHB1 X2VuY29kZXJfcGh5c19jbWRfdGVhcmNoZWNrX2NvbmZpZygKIAogCWRwdV9rbXMgPSBwaHlzX2Vu Yy0+ZHB1X2ttczsKIAlpZiAoIWRwdV9rbXMgfHwgIWRwdV9rbXMtPmRldiB8fCAhZHB1X2ttcy0+ ZGV2LT5kZXZfcHJpdmF0ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgZGV2aWNlXG4iKTsKKwkJ RFJNX0RFVl9FUlJPUigiaW52YWxpZCBkZXZpY2VcbiIpOwogCQlyZXR1cm47CiAJfQogCXByaXYg PSBkcHVfa21zLT5kZXYtPmRldl9wcml2YXRlOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHN0YXRpYyB2 b2lkIF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9waW5ncG9uZ19jb25maWcoCiAKIAlpZiAoIXBoeXNf ZW5jIHx8ICFwaHlzX2VuYy0+aHdfY3RsIHx8ICFwaHlzX2VuYy0+aHdfcHAKIAkJCXx8ICFwaHlz X2VuYy0+aHdfY3RsLT5vcHMuc2V0dXBfaW50Zl9jZmcpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlk IGFyZyhzKSwgZW5jICVkXG4iLCBwaHlzX2VuYyAhPSAwKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52 YWxpZCBhcmcocyksIGVuYyAlZFxuIiwgcGh5c19lbmMgIT0gMCk7CiAJCXJldHVybjsKIAl9CiAK QEAgLTUwNiw3ICs1MDYsNyBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9lbmFi bGVfaGVscGVyKAogCXUzMiBmbHVzaF9tYXNrID0gMDsKIAogCWlmICghcGh5c19lbmMgfHwgIXBo eXNfZW5jLT5od19jdGwgfHwgIXBoeXNfZW5jLT5od19wcCkgewotCQlEUFVfRVJST1IoImludmFs aWQgYXJnKHMpLCBlbmNvZGVyICVkXG4iLCBwaHlzX2VuYyAhPSAwKTsKKwkJRFJNX0RFVl9FUlJP UigiaW52YWxpZCBhcmcocyksIGVuY29kZXIgJWRcbiIsIHBoeXNfZW5jICE9IDApOwogCQlyZXR1 cm47CiAJfQogCkBAIC01MzEsMTQgKzUzMSwxNCBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9w aHlzX2NtZF9lbmFibGUoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogCQl0b19k cHVfZW5jb2Rlcl9waHlzX2NtZChwaHlzX2VuYyk7CiAKIAlpZiAoIXBoeXNfZW5jIHx8ICFwaHlz X2VuYy0+aHdfcHApIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBoeXMgZW5jb2RlclxuIik7CisJ CURSTV9ERVZfRVJST1IoImludmFsaWQgcGh5cyBlbmNvZGVyXG4iKTsKIAkJcmV0dXJuOwogCX0K IAogCURQVV9ERUJVR19DTURFTkMoY21kX2VuYywgInBwICVkXG4iLCBwaHlzX2VuYy0+aHdfcHAt PmlkeCAtIFBJTkdQT05HXzApOwogCiAJaWYgKHBoeXNfZW5jLT5lbmFibGVfc3RhdGUgPT0gRFBV X0VOQ19FTkFCTEVEKSB7Ci0JCURQVV9FUlJPUigiYWxyZWFkeSBlbmFibGVkXG4iKTsKKwkJRFJN X0RFVl9FUlJPUigiYWxyZWFkeSBlbmFibGVkXG4iKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNTg3 LDcgKzU4Nyw3IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX2Rpc2FibGUoc3Ry dWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogCQl0b19kcHVfZW5jb2Rlcl9waHlzX2Nt ZChwaHlzX2VuYyk7CiAKIAlpZiAoIXBoeXNfZW5jIHx8ICFwaHlzX2VuYy0+aHdfcHApIHsKLQkJ RFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlk IGVuY29kZXJcbiIpOwogCQlyZXR1cm47CiAJfQogCURSTV9ERUJVR19LTVMoImlkOiV1IHBwOiVk IHN0YXRlOiVkXG4iLCBEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwKQEAgLTYxMCw3ICs2MTAsNyBA QCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9kZXN0cm95KHN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzX2VuYykKIAkJdG9fZHB1X2VuY29kZXJfcGh5c19jbWQocGh5c19lbmMp OwogCiAJaWYgKCFwaHlzX2VuYykgewotCQlEUFVfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7 CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgZW5jb2RlclxuIik7CiAJCXJldHVybjsKIAl9CiAJ a2ZyZWUoY21kX2VuYyk7CkBAIC02MjUsMTIgKzYyNSwxMiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5j b2Rlcl9waHlzX2NtZF9nZXRfaHdfcmVzb3VyY2VzKAogCQl0b19kcHVfZW5jb2Rlcl9waHlzX2Nt ZChwaHlzX2VuYyk7CiAKIAlpZiAoIXBoeXNfZW5jKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBl bmNvZGVyXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBlbmNvZGVyXG4iKTsKIAkJcmV0 dXJuOwogCX0KIAogCWlmICgocGh5c19lbmMtPmludGZfaWR4IC0gSU5URl8wKSA+PSBJTlRGX01B WCkgewotCQlEUFVfRVJST1IoImludmFsaWQgaW50ZiBpZHg6JWRcbiIsIHBoeXNfZW5jLT5pbnRm X2lkeCk7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgaW50ZiBpZHg6JWRcbiIsIHBoeXNfZW5j LT5pbnRmX2lkeCk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTY0Nyw3ICs2NDcsNyBAQCBzdGF0aWMg dm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9wcmVwYXJlX2Zvcl9raWNrb2ZmKAogCWludCByZXQ7 CiAKIAlpZiAoIXBoeXNfZW5jIHx8ICFwaHlzX2VuYy0+aHdfcHApIHsKLQkJRFBVX0VSUk9SKCJp bnZhbGlkIGVuY29kZXJcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIp OwogCQlyZXR1cm47CiAJfQogCURSTV9ERUJVR19LTVMoImlkOiV1IHBwOiVkIHBlbmRpbmdfY250 OiVkXG4iLCBEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwKQEAgLTY4MSw3ICs2ODEsNyBAQCBzdGF0 aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF93YWl0X2Zvcl9jdGxfc3RhcnQoCiAJaW50IHJl dDsKIAogCWlmICghcGh5c19lbmMgfHwgIXBoeXNfZW5jLT5od19jdGwpIHsKLQkJRFBVX0VSUk9S KCJpbnZhbGlkIGFyZ3VtZW50KHMpXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBhcmd1 bWVudChzKVxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtODI3LDEyICs4MjcsMTIg QEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKmRwdV9lbmNvZGVyX3BoeXNfY21kX2luaXQoCiAJ c3RydWN0IGRwdV9lbmNvZGVyX2lycSAqaXJxOwogCWludCBpLCByZXQgPSAwOwogCi0JRFBVX0RF QlVHKCJpbnRmICVkXG4iLCBwLT5pbnRmX2lkeCAtIElOVEZfMCk7CisJRFJNX0RFVl9ERUJVRygi aW50ZiAlZFxuIiwgcC0+aW50Zl9pZHggLSBJTlRGXzApOwogCiAJY21kX2VuYyA9IGt6YWxsb2Mo c2l6ZW9mKCpjbWRfZW5jKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFjbWRfZW5jKSB7CiAJCXJldCA9 IC1FTk9NRU07Ci0JCURQVV9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlXG4iKTsKKwkJRFJNX0RF Vl9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlXG4iKTsKIAkJZ290byBmYWlsOwogCX0KIAlwaHlz X2VuYyA9ICZjbWRfZW5jLT5iYXNlOwpAQCAtODQwLDcgKzg0MCw3IEBAIHN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpkcHVfZW5jb2Rlcl9waHlzX2NtZF9pbml0KAogCWh3X21kcCA9IGRwdV9ybV9n ZXRfbWRwKCZwLT5kcHVfa21zLT5ybSk7CiAJaWYgKElTX0VSUl9PUl9OVUxMKGh3X21kcCkpIHsK IAkJcmV0ID0gUFRSX0VSUihod19tZHApOwotCQlEUFVfRVJST1IoImZhaWxlZCB0byBnZXQgbWRw dG9wXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiZmFpbGVkIHRvIGdldCBtZHB0b3BcbiIpOwogCQln b3RvIGZhaWxfbWRwX2luaXQ7CiAJfQogCXBoeXNfZW5jLT5od19tZHB0b3AgPSBod19tZHA7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlz X3ZpZC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192 aWQuYwppbmRleCAxNGZjN2MyLi5mNjQ1NjUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMKQEAgLTE3LDEzICsxNywxMyBA QAogI2luY2x1ZGUgImRwdV9mb3JtYXRzLmgiCiAjaW5jbHVkZSAiZHB1X3RyYWNlLmgiCiAKLSNk ZWZpbmUgRFBVX0RFQlVHX1ZJREVOQyhlLCBmbXQsIC4uLikgRFBVX0RFQlVHKCJlbmMlZCBpbnRm JWQgIiBmbXQsIFwKKyNkZWZpbmUgRFBVX0RFQlVHX1ZJREVOQyhlLCBmbXQsIC4uLikgRFJNX0RF Vl9ERUJVRygiZW5jJWQgaW50ZiVkICIgZm10LCBcCiAJCShlKSAmJiAoZSktPmJhc2UucGFyZW50 ID8gXAogCQkoZSktPmJhc2UucGFyZW50LT5iYXNlLmlkIDogLTEsIFwKIAkJKGUpICYmIChlKS0+ aHdfaW50ZiA/IFwKIAkJKGUpLT5od19pbnRmLT5pZHggLSBJTlRGXzAgOiAtMSwgIyNfX1ZBX0FS R1NfXykKIAotI2RlZmluZSBEUFVfRVJST1JfVklERU5DKGUsIGZtdCwgLi4uKSBEUFVfRVJST1Io ImVuYyVkIGludGYlZCAiIGZtdCwgXAorI2RlZmluZSBEUFVfRVJST1JfVklERU5DKGUsIGZtdCwg Li4uKSBEUk1fREVWX0VSUk9SKCJlbmMlZCBpbnRmJWQgIiBmbXQsIFwKIAkJKGUpICYmIChlKS0+ YmFzZS5wYXJlbnQgPyBcCiAJCShlKS0+YmFzZS5wYXJlbnQtPmJhc2UuaWQgOiAtMSwgXAogCQko ZSkgJiYgKGUpLT5od19pbnRmID8gXApAQCAtNTYsMTEgKzU2LDExIEBAIHN0YXRpYyB2b2lkIGRy bV9tb2RlX3RvX2ludGZfdGltaW5nX3BhcmFtcygKIAkJCXx8IChtb2RlLT52c3luY19zdGFydCA8 IG1vZGUtPnZkaXNwbGF5KQogCQkJfHwgKG1vZGUtPmhzeW5jX2VuZCA8IG1vZGUtPmhzeW5jX3N0 YXJ0KQogCQkJfHwgKG1vZGUtPnZzeW5jX2VuZCA8IG1vZGUtPnZzeW5jX3N0YXJ0KSkgewotCQlE UFVfRVJST1IoCisJCURSTV9ERVZfRVJST1IoCiAJCSAgICAiaW52YWxpZCBwYXJhbXMgLSBoc3Rh cnQ6JWQsaGVuZDolZCxodG90OiVkLGhkaXNwbGF5OiVkXG4iLAogCQkJCW1vZGUtPmhzeW5jX3N0 YXJ0LCBtb2RlLT5oc3luY19lbmQsCiAJCQkJbW9kZS0+aHRvdGFsLCBtb2RlLT5oZGlzcGxheSk7 Ci0JCURQVV9FUlJPUigidnN0YXJ0OiVkLHZlbmQ6JWQsdnRvdDolZCx2ZGlzcGxheTolZFxuIiwK KwkJRFJNX0RFVl9FUlJPUigidnN0YXJ0OiVkLHZlbmQ6JWQsdnRvdDolZCx2ZGlzcGxheTolZFxu IiwKIAkJCQltb2RlLT52c3luY19zdGFydCwgbW9kZS0+dnN5bmNfZW5kLAogCQkJCW1vZGUtPnZ0 b3RhbCwgbW9kZS0+dmRpc3BsYXkpOwogCQlyZXR1cm47CkBAIC0yNTEsMTQgKzI1MSwxNCBAQCBz dGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9zZXR1cF90aW1pbmdfZW5naW5lKAogCXN0 cnVjdCBkcHVfaHdfaW50Zl9jZmcgaW50Zl9jZmcgPSB7IDAgfTsKIAogCWlmICghcGh5c19lbmMg fHwgIXBoeXNfZW5jLT5od19jdGwtPm9wcy5zZXR1cF9pbnRmX2NmZykgewotCQlEUFVfRVJST1Io ImludmFsaWQgZW5jb2RlciAlZFxuIiwgcGh5c19lbmMgIT0gMCk7CisJCURSTV9ERVZfRVJST1Io ImludmFsaWQgZW5jb2RlciAlZFxuIiwgcGh5c19lbmMgIT0gMCk7CiAJCXJldHVybjsKIAl9CiAK IAltb2RlID0gcGh5c19lbmMtPmNhY2hlZF9tb2RlOwogCXZpZF9lbmMgPSB0b19kcHVfZW5jb2Rl cl9waHlzX3ZpZChwaHlzX2VuYyk7CiAJaWYgKCF2aWRfZW5jLT5od19pbnRmLT5vcHMuc2V0dXBf dGltaW5nX2dlbikgewotCQlEUFVfRVJST1IoInRpbWluZyBlbmdpbmUgc2V0dXAgaXMgbm90IHN1 cHBvcnRlZFxuIik7CisJCURSTV9ERVZfRVJST1IoInRpbWluZyBlbmdpbmUgc2V0dXAgaXMgbm90 IHN1cHBvcnRlZFxuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTQwMSw3ICs0MDEsNyBAQCBzdGF0 aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9tb2RlX3NldCgKIAlzdHJ1Y3QgZHB1X2VuY29k ZXJfcGh5c192aWQgKnZpZF9lbmM7CiAKIAlpZiAoIXBoeXNfZW5jIHx8ICFwaHlzX2VuYy0+ZHB1 X2ttcykgewotCQlEUFVfRVJST1IoImludmFsaWQgZW5jb2Rlci9rbXNcbiIpOworCQlEUk1fREVW X0VSUk9SKCJpbnZhbGlkIGVuY29kZXIva21zXG4iKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNDQx LDcgKzQ0MSw3IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c192aWRfY29udHJvbF92Ymxh bmtfaXJxKAogCWludCByZWZjb3VudDsKIAogCWlmICghcGh5c19lbmMpIHsKLQkJRFBVX0VSUk9S KCJpbnZhbGlkIGVuY29kZXJcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJc biIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMg dm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9lbmFibGUoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMg KnBoeXNfZW5jKQogCiAJaWYgKCFwaHlzX2VuYyB8fCAhcGh5c19lbmMtPnBhcmVudCB8fCAhcGh5 c19lbmMtPnBhcmVudC0+ZGV2IHx8CiAJCQkhcGh5c19lbmMtPnBhcmVudC0+ZGV2LT5kZXZfcHJp dmF0ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgZW5jb2Rlci9kZXZpY2VcbiIpOworCQlEUk1f REVWX0VSUk9SKCJpbnZhbGlkIGVuY29kZXIvZGV2aWNlXG4iKTsKIAkJcmV0dXJuOwogCX0KIAlw cml2ID0gcGh5c19lbmMtPnBhcmVudC0+ZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTQ5Niw3ICs0OTYs NyBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9lbmFibGUoc3RydWN0IGRwdV9l bmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogCWludGYgPSB2aWRfZW5jLT5od19pbnRmOwogCWN0bCA9 IHBoeXNfZW5jLT5od19jdGw7CiAJaWYgKCF2aWRfZW5jLT5od19pbnRmIHx8ICFwaHlzX2VuYy0+ aHdfY3RsKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBod19pbnRmICVkIGh3X2N0bCAlZFxuIiwK KwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBod19pbnRmICVkIGh3X2N0bCAlZFxuIiwKIAkJCQl2 aWRfZW5jLT5od19pbnRmICE9IDAsIHBoeXNfZW5jLT5od19jdGwgIT0gMCk7CiAJCXJldHVybjsK IAl9CkBAIC01MzYsNyArNTM2LDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRf ZGVzdHJveShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCiAJc3RydWN0IGRwdV9l bmNvZGVyX3BoeXNfdmlkICp2aWRfZW5jOwogCiAJaWYgKCFwaHlzX2VuYykgewotCQlEUFVfRVJS T1IoImludmFsaWQgZW5jb2RlclxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgZW5jb2Rl clxuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTU1MywxNCArNTUzLDE0IEBAIHN0YXRpYyB2b2lk IGRwdV9lbmNvZGVyX3BoeXNfdmlkX2dldF9od19yZXNvdXJjZXMoCiAJc3RydWN0IGRwdV9lbmNv ZGVyX3BoeXNfdmlkICp2aWRfZW5jOwogCiAJaWYgKCFwaHlzX2VuYyB8fCAhaHdfcmVzKSB7Ci0J CURQVV9FUlJPUigiaW52YWxpZCBhcmcocyksIGVuYyAlZCBod19yZXMgJWQgY29ubl9zdGF0ZSAl ZFxuIiwKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBhcmcocyksIGVuYyAlZCBod19yZXMgJWQg Y29ubl9zdGF0ZSAlZFxuIiwKIAkJCQlwaHlzX2VuYyAhPSAwLCBod19yZXMgIT0gMCwgY29ubl9z dGF0ZSAhPSAwKTsKIAkJcmV0dXJuOwogCX0KIAogCXZpZF9lbmMgPSB0b19kcHVfZW5jb2Rlcl9w aHlzX3ZpZChwaHlzX2VuYyk7CiAJaWYgKCF2aWRfZW5jLT5od19pbnRmKSB7Ci0JCURQVV9FUlJP UigiaW52YWxpZCBhcmcocyksIGh3X2ludGZcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlk IGFyZyhzKSwgaHdfaW50ZlxuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTYyMCw3ICs2MjAsNyBA QCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9wcmVwYXJlX2Zvcl9raWNrb2ZmKAog CWludCByYzsKIAogCWlmICghcGh5c19lbmMgfHwgIXBhcmFtcykgewotCQlEUFVfRVJST1IoImlu dmFsaWQgZW5jb2Rlci9wYXJhbWV0ZXJzXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBl bmNvZGVyL3BhcmFtZXRlcnNcbiIpOwogCQlyZXR1cm47CiAJfQogCXZpZF9lbmMgPSB0b19kcHVf ZW5jb2Rlcl9waHlzX3ZpZChwaHlzX2VuYyk7CkBAIC02NTEsMTQgKzY1MSwxNCBAQCBzdGF0aWMg dm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9kaXNhYmxlKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlz ICpwaHlzX2VuYykKIAogCWlmICghcGh5c19lbmMgfHwgIXBoeXNfZW5jLT5wYXJlbnQgfHwgIXBo eXNfZW5jLT5wYXJlbnQtPmRldiB8fAogCQkJIXBoeXNfZW5jLT5wYXJlbnQtPmRldi0+ZGV2X3By aXZhdGUpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXIvZGV2aWNlXG4iKTsKKwkJRFJN X0RFVl9FUlJPUigiaW52YWxpZCBlbmNvZGVyL2RldmljZVxuIik7CiAJCXJldHVybjsKIAl9CiAJ cHJpdiA9IHBoeXNfZW5jLT5wYXJlbnQtPmRldi0+ZGV2X3ByaXZhdGU7CiAKIAl2aWRfZW5jID0g dG9fZHB1X2VuY29kZXJfcGh5c192aWQocGh5c19lbmMpOwogCWlmICghdmlkX2VuYy0+aHdfaW50 ZiB8fCAhcGh5c19lbmMtPmh3X2N0bCkgewotCQlEUFVfRVJST1IoImludmFsaWQgaHdfaW50ZiAl ZCBod19jdGwgJWRcbiIsCisJCURSTV9ERVZfRVJST1IoImludmFsaWQgaHdfaW50ZiAlZCBod19j dGwgJWRcbiIsCiAJCQkJdmlkX2VuYy0+aHdfaW50ZiAhPSAwLCBwaHlzX2VuYy0+aHdfY3RsICE9 IDApOwogCQlyZXR1cm47CiAJfQpAQCAtNjY5LDcgKzY2OSw3IEBAIHN0YXRpYyB2b2lkIGRwdV9l bmNvZGVyX3BoeXNfdmlkX2Rpc2FibGUoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5j KQogCQlyZXR1cm47CiAKIAlpZiAocGh5c19lbmMtPmVuYWJsZV9zdGF0ZSA9PSBEUFVfRU5DX0RJ U0FCTEVEKSB7Ci0JCURQVV9FUlJPUigiYWxyZWFkeSBkaXNhYmxlZFxuIik7CisJCURSTV9ERVZf RVJST1IoImFscmVhZHkgZGlzYWJsZWRcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC03MDcsNyAr NzA3LDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfaGFuZGxlX3Bvc3Rfa2lj a29mZigKIAlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c192aWQgKnZpZF9lbmM7CiAKIAlpZiAoIXBo eXNfZW5jKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBlbmNvZGVyXG4iKTsKKwkJRFJNX0RFVl9F UlJPUigiaW52YWxpZCBlbmNvZGVyXG4iKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtODQ5LDcgKzg0 OSw3IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpkcHVfZW5jb2Rlcl9waHlzX3ZpZF9pbml0 KAogCWh3X21kcCA9IGRwdV9ybV9nZXRfbWRwKCZwLT5kcHVfa21zLT5ybSk7CiAJaWYgKElTX0VS Ul9PUl9OVUxMKGh3X21kcCkpIHsKIAkJcmV0ID0gUFRSX0VSUihod19tZHApOwotCQlEUFVfRVJS T1IoImZhaWxlZCB0byBnZXQgbWRwdG9wXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiZmFpbGVkIHRv IGdldCBtZHB0b3BcbiIpOwogCQlnb3RvIGZhaWw7CiAJfQogCXBoeXNfZW5jLT5od19tZHB0b3Ag PSBod19tZHA7CkBAIC04NzEsNyArODcxLDcgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKmRw dV9lbmNvZGVyX3BoeXNfdmlkX2luaXQoCiAKIAlpZiAoIXZpZF9lbmMtPmh3X2ludGYpIHsKIAkJ cmV0ID0gLUVJTlZBTDsKLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGh3X2ludGZcbiIpOwor CQlEUk1fREVWX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGh3X2ludGZcbiIpOwogCQlnb3RvIGZhaWw7 CiAJfQogCkBAIC05MTQsNyArOTE0LDcgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKmRwdV9l bmNvZGVyX3BoeXNfdmlkX2luaXQoCiAJcmV0dXJuIHBoeXNfZW5jOwogCiBmYWlsOgotCURQVV9F UlJPUigiZmFpbGVkIHRvIGNyZWF0ZSBlbmNvZGVyXG4iKTsKKwlEUk1fREVWX0VSUk9SKCJmYWls ZWQgdG8gY3JlYXRlIGVuY29kZXJcbiIpOwogCWlmICh2aWRfZW5jKQogCQlkcHVfZW5jb2Rlcl9w aHlzX3ZpZF9kZXN0cm95KHBoeXNfZW5jKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2Zvcm1hdHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9mb3JtYXRzLmMKaW5kZXggYmZjZDE2NS4uNDhlMjA0MiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Zvcm1hdHMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZm9ybWF0cy5jCkBAIC0xMDkwLDcgKzEwOTAsNyBAQCBj b25zdCBzdHJ1Y3QgZHB1X2Zvcm1hdCAqZHB1X2dldF9kcHVfZm9ybWF0X2V4dCgKIAkgKiBDdXJy ZW50bHkgb25seSBzdXBwb3J0IGV4YWN0bHkgemVybyBvciBvbmUgbW9kaWZpZXIuCiAJICogQWxs IHBsYW5lcyB1c2UgdGhlIHNhbWUgbW9kaWZpZXIuCiAJICovCi0JRFBVX0RFQlVHKCJwbGFuZSBm b3JtYXQgbW9kaWZpZXIgMHglbGxYXG4iLCBtb2RpZmllcik7CisJRFJNX0RFVl9ERUJVRygicGxh bmUgZm9ybWF0IG1vZGlmaWVyIDB4JWxsWFxuIiwgbW9kaWZpZXIpOwogCiAJc3dpdGNoIChtb2Rp ZmllcikgewogCWNhc2UgMDoKQEAgLTExMDAsMTEgKzExMDAsMTEgQEAgY29uc3Qgc3RydWN0IGRw dV9mb3JtYXQgKmRwdV9nZXRfZHB1X2Zvcm1hdF9leHQoCiAJY2FzZSBEUk1fRk9STUFUX01PRF9R Q09NX0NPTVBSRVNTRUQ6CiAJCW1hcCA9IGRwdV9mb3JtYXRfbWFwX3Vid2M7CiAJCW1hcF9zaXpl ID0gQVJSQVlfU0laRShkcHVfZm9ybWF0X21hcF91YndjKTsKLQkJRFBVX0RFQlVHKCJmb3VuZCBm bXQ6ICU0LjRzICBEUk1fRk9STUFUX01PRF9RQ09NX0NPTVBSRVNTRURcbiIsCisJCURSTV9ERVZf REVCVUcoImZvdW5kIGZtdDogJTQuNHMgIERSTV9GT1JNQVRfTU9EX1FDT01fQ09NUFJFU1NFRFxu IiwKIAkJCQkoY2hhciAqKSZmb3JtYXQpOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlEUFVfRVJS T1IoInVuc3VwcG9ydGVkIGZvcm1hdCBtb2RpZmllciAlbGxYXG4iLCBtb2RpZmllcik7CisJCURS TV9ERVZfRVJST1IoInVuc3VwcG9ydGVkIGZvcm1hdCBtb2RpZmllciAlbGxYXG4iLCBtb2RpZmll cik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtMTExNiwxMCArMTExNiwxMCBAQCBjb25zdCBz dHJ1Y3QgZHB1X2Zvcm1hdCAqZHB1X2dldF9kcHVfZm9ybWF0X2V4dCgKIAl9CiAKIAlpZiAoZm10 ID09IE5VTEwpCi0JCURQVV9FUlJPUigidW5zdXBwb3J0ZWQgZm10OiAlNC40cyBtb2RpZmllciAw eCVsbFhcbiIsCisJCURSTV9ERVZfRVJST1IoInVuc3VwcG9ydGVkIGZtdDogJTQuNHMgbW9kaWZp ZXIgMHglbGxYXG4iLAogCQkJKGNoYXIgKikmZm9ybWF0LCBtb2RpZmllcik7CiAJZWxzZQotCQlE UFVfREVCVUcoImZtdCAlNC40cyBtb2QgMHglbGxYIHVid2MgJWQgeXV2ICVkXG4iLAorCQlEUk1f REVWX0RFQlVHKCJmbXQgJTQuNHMgbW9kIDB4JWxsWCB1YndjICVkIHl1diAlZFxuIiwKIAkJCQko Y2hhciAqKSZmb3JtYXQsIG1vZGlmaWVyLAogCQkJCURQVV9GT1JNQVRfSVNfVUJXQyhmbXQpLAog CQkJCURQVV9GT1JNQVRfSVNfWVVWKGZtdCkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9od19jYXRhbG9nLmMKaW5kZXggNDRlZTA2My4uNzA2MjRkNiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jCkBAIC01MDQsNyAr NTA0LDcgQEAgc3RydWN0IGRwdV9tZHNzX2NmZyAqZHB1X2h3X2NhdGFsb2dfaW5pdCh1MzIgaHdf cmV2KQogCQl9CiAJfQogCi0JRFBVX0VSUk9SKCJ1bnN1cHBvcnRlZCBjaGlwc2V0IGlkOiVYXG4i LCBod19yZXYpOworCURSTV9ERVZfRVJST1IoInVuc3VwcG9ydGVkIGNoaXBzZXQgaWQ6JVhcbiIs IGh3X3Jldik7CiAJZHB1X2h3X2NhdGFsb2dfZGVpbml0KGRwdV9jZmcpOwogCXJldHVybiBFUlJf UFRSKC1FTk9ERVYpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2h3X2NkbS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2Nk bS5jCmluZGV4IDU1NDg3NGIuLjgwNWM3MWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19jZG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfaHdfY2RtLmMKQEAgLTI5Nyw3ICsyOTcsNyBAQCBzdHJ1Y3QgZHB1X2h3X2NkbSAq ZHB1X2h3X2NkbV9pbml0KGVudW0gZHB1X2NkbSBpZHgsCiAKIAlyYyA9IGRwdV9od19ibGtfaW5p dCgmYy0+YmFzZSwgRFBVX0hXX0JMS19DRE0sIGlkeCwgJmRwdV9od19vcHMpOwogCWlmIChyYykg ewotCQlEUFVfRVJST1IoImZhaWxlZCB0byBpbml0IGh3IGJsayAlZFxuIiwgcmMpOworCQlEUk1f REVWX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBodyBibGsgJWRcbiIsIHJjKTsKIAkJZ290byBibGtf aW5pdF9lcnJvcjsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od19jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19j dGwuYwppbmRleCAwNmJlN2NmLi44Nzg4OGFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfY3RsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3X2N0bC5jCkBAIC01MjAsNyArNTIwLDcgQEAgc3RydWN0IGRwdV9od19jdGwg KmRwdV9od19jdGxfaW5pdChlbnVtIGRwdV9jdGwgaWR4LAogCiAJcmMgPSBkcHVfaHdfYmxrX2lu aXQoJmMtPmJhc2UsIERQVV9IV19CTEtfQ1RMLCBpZHgsICZkcHVfaHdfb3BzKTsKIAlpZiAocmMp IHsKLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBodyBibGsgJWRcbiIsIHJjKTsKKwkJRFJN X0RFVl9FUlJPUigiZmFpbGVkIHRvIGluaXQgaHcgYmxrICVkXG4iLCByYyk7CiAJCWdvdG8gYmxr X2luaXRfZXJyb3I7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfaHdfaW50Zi5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X2ludGYuYwppbmRleCBkMjgwZGY1Li4zNTQyMzkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfaW50Zi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od19pbnRmLmMKQEAgLTMyOCw3ICszMjgsNyBAQCBzdHJ1Y3QgZHB1X2h3 X2ludGYgKmRwdV9od19pbnRmX2luaXQoZW51bSBkcHVfaW50ZiBpZHgsCiAKIAlyYyA9IGRwdV9o d19ibGtfaW5pdCgmYy0+YmFzZSwgRFBVX0hXX0JMS19JTlRGLCBpZHgsICZkcHVfaHdfb3BzKTsK IAlpZiAocmMpIHsKLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBodyBibGsgJWRcbiIsIHJj KTsKKwkJRFJNX0RFVl9FUlJPUigiZmFpbGVkIHRvIGluaXQgaHcgYmxrICVkXG4iLCByYyk7CiAJ CWdvdG8gYmxrX2luaXRfZXJyb3I7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfbG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9od19sbS5jCmluZGV4IDRhYjcyYjAuLmE1ZTc1YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19sbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19sbS5jCkBAIC0yNDEsNyArMjQxLDcgQEAgc3RydWN0IGRwdV9o d19taXhlciAqZHB1X2h3X2xtX2luaXQoZW51bSBkcHVfbG0gaWR4LAogCiAJcmMgPSBkcHVfaHdf YmxrX2luaXQoJmMtPmJhc2UsIERQVV9IV19CTEtfTE0sIGlkeCwgJmRwdV9od19vcHMpOwogCWlm IChyYykgewotCQlEUFVfRVJST1IoImZhaWxlZCB0byBpbml0IGh3IGJsayAlZFxuIiwgcmMpOwor CQlEUk1fREVWX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBodyBibGsgJWRcbiIsIHJjKTsKIAkJZ290 byBibGtfaW5pdF9lcnJvcjsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2h3X3Bpbmdwb25nLmMKaW5kZXggY2MzYTYyMy4uNzljMTRkNiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmMKQEAgLTIzMCw3ICsy MzAsNyBAQCBzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpkcHVfaHdfcGluZ3BvbmdfaW5pdChlbnVt IGRwdV9waW5ncG9uZyBpZHgsCiAKIAlyYyA9IGRwdV9od19ibGtfaW5pdCgmYy0+YmFzZSwgRFBV X0hXX0JMS19QSU5HUE9ORywgaWR4LCAmZHB1X2h3X29wcyk7CiAJaWYgKHJjKSB7Ci0JCURQVV9F UlJPUigiZmFpbGVkIHRvIGluaXQgaHcgYmxrICVkXG4iLCByYyk7CisJCURSTV9ERVZfRVJST1Io ImZhaWxlZCB0byBpbml0IGh3IGJsayAlZFxuIiwgcmMpOwogCQlnb3RvIGJsa19pbml0X2Vycm9y OwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X3NzcHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19zc3BwLmMKaW5k ZXggYzI1YjUyYS4uYmUyOWM4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3X3NzcHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfc3NwcC5jCkBAIC03MzIsNyArNzMyLDcgQEAgc3RydWN0IGRwdV9od19waXBlICpkcHVf aHdfc3NwcF9pbml0KGVudW0gZHB1X3NzcHAgaWR4LAogCiAJcmMgPSBkcHVfaHdfYmxrX2luaXQo Jmh3X3BpcGUtPmJhc2UsIERQVV9IV19CTEtfU1NQUCwgaWR4LCAmZHB1X2h3X29wcyk7CiAJaWYg KHJjKSB7Ci0JCURQVV9FUlJPUigiZmFpbGVkIHRvIGluaXQgaHcgYmxrICVkXG4iLCByYyk7CisJ CURSTV9ERVZfRVJST1IoImZhaWxlZCB0byBpbml0IGh3IGJsayAlZFxuIiwgcmMpOwogCQlnb3Rv IGJsa19pbml0X2Vycm9yOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2h3X3RvcC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2h3X3RvcC5jCmluZGV4IGRiMjc5OGUuLmFlYzczYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMKQEAgLTM3NSw3ICszNzUsNyBAQCBzdHJ1Y3QgZHB1X2h3 X21kcCAqZHB1X2h3X21kcHRvcF9pbml0KGVudW0gZHB1X21kcCBpZHgsCiAKIAlyYyA9IGRwdV9o d19ibGtfaW5pdCgmbWRwLT5iYXNlLCBEUFVfSFdfQkxLX1RPUCwgaWR4LCAmZHB1X2h3X29wcyk7 CiAJaWYgKHJjKSB7Ci0JCURQVV9FUlJPUigiZmFpbGVkIHRvIGluaXQgaHcgYmxrICVkXG4iLCBy Yyk7CisJCURSTV9ERVZfRVJST1IoImZhaWxlZCB0byBpbml0IGh3IGJsayAlZFxuIiwgcmMpOwog CQlnb3RvIGJsa19pbml0X2Vycm9yOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2lycS5jCmluZGV4IGQ1ZTZjZTAuLjdhZjQzYTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9pcnEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfaXJxLmMKQEAgLTQ0LDcgKzQ0LDcgQEAgaW50IGRwdV9pcnFfcG9zdGluc3Rh bGwoc3RydWN0IG1zbV9rbXMgKmttcykKIAlpbnQgcmM7CiAKIAlpZiAoIWttcykgewotCQlEUFVf RVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQg cGFyYW1ldGVyc1xuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNTgsNyArNTgsNyBA QCB2b2lkIGRwdV9pcnFfdW5pbnN0YWxsKHN0cnVjdCBtc21fa21zICprbXMpCiAJc3RydWN0IGRw dV9rbXMgKmRwdV9rbXMgPSB0b19kcHVfa21zKGttcyk7CiAKIAlpZiAoIWttcykgewotCQlEUFVf RVJST1IoImludmFsaWQgcGFyYW1ldGVyc1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQg cGFyYW1ldGVyc1xuIik7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9rbXMuYwppbmRleCA3ZGQ2YmQyLi5iMjIxZmY1IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2ttcy5jCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBpbnQgX2RwdV9k YW5nZXJfc2lnbmFsX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsCiAJaW50IGk7CiAKIAlpZiAo IWttcyB8fCAha21zLT5kZXYgfHwgIWttcy0+ZGV2LT5kZXZfcHJpdmF0ZSB8fCAha21zLT5od19t ZHApIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZyhzKVxuIik7CisJCURSTV9ERVZfRVJST1Io ImludmFsaWQgYXJnKHMpXG4iKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0xNTAsNyArMTUwLDcg QEAgc3RhdGljIGludCBkcHVfZGVidWdmc19kYW5nZXJfaW5pdChzdHJ1Y3QgZHB1X2ttcyAqZHB1 X2ttcywKIAlkcHVfa21zLT5kZWJ1Z2ZzX2RhbmdlciA9IGRlYnVnZnNfY3JlYXRlX2RpcigiZGFu Z2VyIiwKIAkJCXBhcmVudCk7CiAJaWYgKCFkcHVfa21zLT5kZWJ1Z2ZzX2RhbmdlcikgewotCQlE UFVfRVJST1IoImZhaWxlZCB0byBjcmVhdGUgZGFuZ2VyIGRlYnVnZnNcbiIpOworCQlEUk1fREVW X0VSUk9SKCJmYWlsZWQgdG8gY3JlYXRlIGRhbmdlciBkZWJ1Z2ZzXG4iKTsKIAkJcmV0dXJuIC1F SU5WQUw7CiAJfQogCkBAIC0yODEsNyArMjgxLDcgQEAgc3RhdGljIGludCBfZHB1X2RlYnVnZnNf aW5pdChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcykKIAogCXJjID0gZHB1X2NvcmVfcGVyZl9kZWJ1 Z2ZzX2luaXQoJmRwdV9rbXMtPnBlcmYsIGRwdV9rbXMtPmRlYnVnZnNfcm9vdCk7CiAJaWYgKHJj KSB7Ci0JCURQVV9FUlJPUigiZmFpbGVkIHRvIGluaXQgcGVyZiAlZFxuIiwgcmMpOworCQlEUk1f REVWX0VSUk9SKCJmYWlsZWQgdG8gaW5pdCBwZXJmICVkXG4iLCByYyk7CiAJCXJldHVybiByYzsK IAl9CiAKQEAgLTQwOSwxOSArNDA5LDE5IEBAIHN0YXRpYyB2b2lkIGRwdV9rbXNfd2FpdF9mb3Jf Y29tbWl0X2RvbmUoc3RydWN0IG1zbV9rbXMgKmttcywKIAlpbnQgcmV0OwogCiAJaWYgKCFrbXMg fHwgIWNydGMgfHwgIWNydGMtPnN0YXRlKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbXNc biIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIHBhcmFtc1xuIik7CiAJCXJldHVybjsKIAl9 CiAKIAlkZXYgPSBjcnRjLT5kZXY7CiAKIAlpZiAoIWNydGMtPnN0YXRlLT5lbmFibGUpIHsKLQkJ RFBVX0RFQlVHKCJbY3J0YzolZF0gbm90IGVuYWJsZVxuIiwgY3J0Yy0+YmFzZS5pZCk7CisJCURS TV9ERVZfREVCVUcoIltjcnRjOiVkXSBub3QgZW5hYmxlXG4iLCBjcnRjLT5iYXNlLmlkKTsKIAkJ cmV0dXJuOwogCX0KIAogCWlmICghY3J0Yy0+c3RhdGUtPmFjdGl2ZSkgewotCQlEUFVfREVCVUco IltjcnRjOiVkXSBub3QgYWN0aXZlXG4iLCBjcnRjLT5iYXNlLmlkKTsKKwkJRFJNX0RFVl9ERUJV RygiW2NydGM6JWRdIG5vdCBhY3RpdmVcbiIsIGNydGMtPmJhc2UuaWQpOwogCQlyZXR1cm47CiAJ fQogCkBAIC00MzYsNyArNDM2LDcgQEAgc3RhdGljIHZvaWQgZHB1X2ttc193YWl0X2Zvcl9jb21t aXRfZG9uZShzdHJ1Y3QgbXNtX2ttcyAqa21zLAogCQl0cmFjZV9kcHVfa21zX3dhaXRfZm9yX2Nv bW1pdF9kb25lKERSTUlEKGNydGMpKTsKIAkJcmV0ID0gZHB1X2VuY29kZXJfd2FpdF9mb3JfZXZl bnQoZW5jb2RlciwgTVNNX0VOQ19DT01NSVRfRE9ORSk7CiAJCWlmIChyZXQgJiYgcmV0ICE9IC1F V09VTERCTE9DSykgewotCQkJRFBVX0VSUk9SKCJ3YWl0IGZvciBjb21taXQgZG9uZSByZXR1cm5l ZCAlZFxuIiwgcmV0KTsKKwkJCURSTV9ERVZfRVJST1IoIndhaXQgZm9yIGNvbW1pdCBkb25lIHJl dHVybmVkICVkXG4iLCByZXQpOwogCQkJYnJlYWs7CiAJCX0KIAl9CkBAIC00NTIsNyArNDUyLDcg QEAgc3RhdGljIHZvaWQgX2RwdV9rbXNfaW5pdGlhbGl6ZV9kc2koc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIAkvKlRPRE86IFN1cHBvcnQgdHdvIGluZGVwZW5kZW50IERTSSBjb25uZWN0b3JzICov CiAJZW5jb2RlciA9IGRwdV9lbmNvZGVyX2luaXQoZGV2LCBEUk1fTU9ERV9DT05ORUNUT1JfRFNJ KTsKIAlpZiAoSVNfRVJSX09SX05VTEwoZW5jb2RlcikpIHsKLQkJRFBVX0VSUk9SKCJlbmNvZGVy IGluaXQgZmFpbGVkIGZvciBkc2kgZGlzcGxheVxuIik7CisJCURSTV9ERVZfRVJST1IoImVuY29k ZXIgaW5pdCBmYWlsZWQgZm9yIGRzaSBkaXNwbGF5XG4iKTsKIAkJcmV0dXJuOwogCX0KIApAQCAt NDYwLDEzICs0NjAsMTMgQEAgc3RhdGljIHZvaWQgX2RwdV9rbXNfaW5pdGlhbGl6ZV9kc2koc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHByaXYt PmRzaSk7IGkrKykgewogCQlpZiAoIXByaXYtPmRzaVtpXSkgewotCQkJRFBVX0RFQlVHKCJpbnZh bGlkIG1zbV9kc2kgZm9yIGN0cmwgJWRcbiIsIGkpOworCQkJRFJNX0RFVl9ERUJVRygiaW52YWxp ZCBtc21fZHNpIGZvciBjdHJsICVkXG4iLCBpKTsKIAkJCXJldHVybjsKIAkJfQogCiAJCXJjID0g bXNtX2RzaV9tb2Rlc2V0X2luaXQocHJpdi0+ZHNpW2ldLCBkZXYsIGVuY29kZXIpOwogCQlpZiAo cmMpIHsKLQkJCURQVV9FUlJPUigibW9kZXNldF9pbml0IGZhaWxlZCBmb3IgZHNpWyVkXSwgcmMg PSAlZFxuIiwKKwkJCURSTV9ERVZfRVJST1IoIm1vZGVzZXRfaW5pdCBmYWlsZWQgZm9yIGRzaVsl ZF0sIHJjID0gJWRcbiIsCiAJCQkJaSwgcmMpOwogCQkJY29udGludWU7CiAJCX0KQEAgLTQ5OSwx MyArNDk5LDEzIEBAIHN0YXRpYyB2b2lkIF9kcHVfa21zX2RybV9vYmpfZGVzdHJveShzdHJ1Y3Qg ZHB1X2ttcyAqZHB1X2ttcykKIAlpbnQgaTsKIAogCWlmICghZHB1X2ttcykgewotCQlEUFVfRVJS T1IoImludmFsaWQgZHB1X2ttc1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgZHB1X2tt c1xuIik7CiAJCXJldHVybjsKIAl9IGVsc2UgaWYgKCFkcHVfa21zLT5kZXYpIHsKLQkJRFBVX0VS Uk9SKCJpbnZhbGlkIGRldlxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgZGV2XG4iKTsK IAkJcmV0dXJuOwogCX0gZWxzZSBpZiAoIWRwdV9rbXMtPmRldi0+ZGV2X3ByaXZhdGUpIHsKLQkJ RFBVX0VSUk9SKCJpbnZhbGlkIGRldl9wcml2YXRlXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52 YWxpZCBkZXZfcHJpdmF0ZVxuIik7CiAJCXJldHVybjsKIAl9CiAJcHJpdiA9IGRwdV9rbXMtPmRl di0+ZGV2X3ByaXZhdGU7CkBAIC01NDAsNyArNTQwLDcgQEAgc3RhdGljIGludCBfZHB1X2ttc19k cm1fb2JqX2luaXQoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpCiAJaW50IG1heF9jcnRjX2NvdW50 OwogCiAJaWYgKCFkcHVfa21zIHx8ICFkcHVfa21zLT5kZXYgfHwgIWRwdV9rbXMtPmRldi0+ZGV2 KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBkcHVfa21zXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigi aW52YWxpZCBkcHVfa21zXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC01NjcsNyAr NTY3LDcgQEAgc3RhdGljIGludCBfZHB1X2ttc19kcm1fb2JqX2luaXQoc3RydWN0IGRwdV9rbXMg KmRwdV9rbXMpCiAJCXBsYW5lID0gZHB1X3BsYW5lX2luaXQoZGV2LCBjYXRhbG9nLT5zc3BwW2ld LmlkLCBwcmltYXJ5LAogCQkJCSgxVUwgPDwgbWF4X2NydGNfY291bnQpIC0gMSwgMCk7CiAJCWlm IChJU19FUlIocGxhbmUpKSB7Ci0JCQlEUFVfRVJST1IoImRwdV9wbGFuZV9pbml0IGZhaWxlZFxu Iik7CisJCQlEUk1fREVWX0VSUk9SKCJkcHVfcGxhbmVfaW5pdCBmYWlsZWRcbiIpOwogCQkJcmV0 ID0gUFRSX0VSUihwbGFuZSk7CiAJCQlnb3RvIGZhaWw7CiAJCX0KQEAgLTYwNyw3ICs2MDcsNyBA QCBzdGF0aWMgaW50IGRwdV9rbXNfZGVidWdmc19pbml0KHN0cnVjdCBtc21fa21zICprbXMsIHN0 cnVjdCBkcm1fbWlub3IgKm1pbm9yKQogCWludCByYzsKIAogCWlmICghZHB1X2ttcyB8fCAhZHB1 X2ttcy0+ZGV2IHx8ICFkcHVfa21zLT5kZXYtPmRldikgewotCQlEUFVfRVJST1IoImludmFsaWQg ZHB1X2ttc1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgZHB1X2ttc1xuIik7CiAJCXJl dHVybiAtRUlOVkFMOwogCX0KIApAQCAtNjE1LDcgKzYxNSw3IEBAIHN0YXRpYyBpbnQgZHB1X2tt c19kZWJ1Z2ZzX2luaXQoc3RydWN0IG1zbV9rbXMgKmttcywgc3RydWN0IGRybV9taW5vciAqbWlu b3IpCiAKIAlyYyA9IF9kcHVfZGVidWdmc19pbml0KGRwdV9rbXMpOwogCWlmIChyYykKLQkJRFBV X0VSUk9SKCJkcHVfZGVidWdmcyBpbml0IGZhaWxlZDogJWRcbiIsIHJjKTsKKwkJRFJNX0RFVl9F UlJPUigiZHB1X2RlYnVnZnMgaW5pdCBmYWlsZWQ6ICVkXG4iLCByYyk7CiAKIAlyZXR1cm4gcmM7 CiB9CkBAIC02ODgsNyArNjg4LDcgQEAgc3RhdGljIHZvaWQgZHB1X2ttc19kZXN0cm95KHN0cnVj dCBtc21fa21zICprbXMpCiAJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7CiAKIAlpZiAoIWttcykg ewotCQlEUFVfRVJST1IoImludmFsaWQga21zXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxp ZCBrbXNcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC04NDMsNyArODQzLDcgQEAgc3RhdGljIHZv aWQgX2RwdV9rbXNfc2V0X2VuY29kZXJfbW9kZShzdHJ1Y3QgbXNtX2ttcyAqa21zLAogCiAJcmMg PSBkcHVfZW5jb2Rlcl9zZXR1cChlbmNvZGVyLT5kZXYsIGVuY29kZXIsICZpbmZvKTsKIAlpZiAo cmMpCi0JCURQVV9FUlJPUigiZmFpbGVkIHRvIHNldHVwIERQVSBlbmNvZGVyICVkOiByYzolZFxu IiwKKwkJRFJNX0RFVl9FUlJPUigiZmFpbGVkIHRvIHNldHVwIERQVSBlbmNvZGVyICVkOiByYzol ZFxuIiwKIAkJCWVuY29kZXItPmJhc2UuaWQsIHJjKTsKIH0KIApAQCAtOTEyLDcgKzkxMiw3IEBA IHN0YXRpYyBpbnQgX2RwdV9rbXNfbW11X2luaXQoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMpCiAJ cmV0ID0gYXNwYWNlLT5tbXUtPmZ1bmNzLT5hdHRhY2goYXNwYWNlLT5tbXUsIGlvbW11X3BvcnRz LAogCQkJQVJSQVlfU0laRShpb21tdV9wb3J0cykpOwogCWlmIChyZXQpIHsKLQkJRFBVX0VSUk9S KCJmYWlsZWQgdG8gYXR0YWNoIGlvbW11ICVkXG4iLCByZXQpOworCQlEUk1fREVWX0VSUk9SKCJm YWlsZWQgdG8gYXR0YWNoIGlvbW11ICVkXG4iLCByZXQpOwogCQltc21fZ2VtX2FkZHJlc3Nfc3Bh Y2VfcHV0KGFzcGFjZSk7CiAJCWdvdG8gZmFpbDsKIAl9CkBAIC05NjgsMTQgKzk2OCwxNCBAQCBz dGF0aWMgaW50IGRwdV9rbXNfaHdfaW5pdChzdHJ1Y3QgbXNtX2ttcyAqa21zKQogCWludCBpLCBy YyA9IC1FSU5WQUw7CiAKIAlpZiAoIWttcykgewotCQlEUFVfRVJST1IoImludmFsaWQga21zXG4i KTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBrbXNcbiIpOwogCQlnb3RvIGVuZDsKIAl9CiAK IAlkcHVfa21zID0gdG9fZHB1X2ttcyhrbXMpOwogCWRldiA9IGRwdV9rbXMtPmRldjsKIAlpZiAo IWRldikgewotCQlEUFVfRVJST1IoImludmFsaWQgZGV2aWNlXG4iKTsKKwkJRFJNX0RFVl9FUlJP UigiaW52YWxpZCBkZXZpY2VcbiIpOwogCQlnb3RvIGVuZDsKIAl9CiAKQEAgLTk4NywxNCArOTg3 LDE0IEBAIHN0YXRpYyBpbnQgZHB1X2ttc19od19pbml0KHN0cnVjdCBtc21fa21zICprbXMpCiAK IAlwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlpZiAoIXByaXYpIHsKLQkJRFBVX0VSUk9SKCJp bnZhbGlkIHByaXZhdGUgZGF0YVxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgcHJpdmF0 ZSBkYXRhXG4iKTsKIAkJZ290byBkYmdfZGVzdHJveTsKIAl9CiAKIAlkcHVfa21zLT5tbWlvID0g bXNtX2lvcmVtYXAoZHB1X2ttcy0+cGRldiwgIm1kcCIsICJtZHAiKTsKIAlpZiAoSVNfRVJSKGRw dV9rbXMtPm1taW8pKSB7CiAJCXJjID0gUFRSX0VSUihkcHVfa21zLT5tbWlvKTsKLQkJRFBVX0VS Uk9SKCJtZHAgcmVnaXN0ZXIgbWVtb3J5IG1hcCBmYWlsZWQ6ICVkXG4iLCByYyk7CisJCURSTV9E RVZfRVJST1IoIm1kcCByZWdpc3RlciBtZW1vcnkgbWFwIGZhaWxlZDogJWRcbiIsIHJjKTsKIAkJ ZHB1X2ttcy0+bW1pbyA9IE5VTEw7CiAJCWdvdG8gZXJyb3I7CiAJfQpAQCAtMTAwNCw3ICsxMDA0 LDcgQEAgc3RhdGljIGludCBkcHVfa21zX2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKIAlk cHVfa21zLT52YmlmW1ZCSUZfUlRdID0gbXNtX2lvcmVtYXAoZHB1X2ttcy0+cGRldiwgInZiaWYi LCAidmJpZiIpOwogCWlmIChJU19FUlIoZHB1X2ttcy0+dmJpZltWQklGX1JUXSkpIHsKIAkJcmMg PSBQVFJfRVJSKGRwdV9rbXMtPnZiaWZbVkJJRl9SVF0pOwotCQlEUFVfRVJST1IoInZiaWYgcmVn aXN0ZXIgbWVtb3J5IG1hcCBmYWlsZWQ6ICVkXG4iLCByYyk7CisJCURSTV9ERVZfRVJST1IoInZi aWYgcmVnaXN0ZXIgbWVtb3J5IG1hcCBmYWlsZWQ6ICVkXG4iLCByYyk7CiAJCWRwdV9rbXMtPnZi aWZbVkJJRl9SVF0gPSBOVUxMOwogCQlnb3RvIGVycm9yOwogCX0KQEAgLTEwMTIsNyArMTAxMiw3 IEBAIHN0YXRpYyBpbnQgZHB1X2ttc19od19pbml0KHN0cnVjdCBtc21fa21zICprbXMpCiAJZHB1 X2ttcy0+dmJpZltWQklGX05SVF0gPSBtc21faW9yZW1hcChkcHVfa21zLT5wZGV2LCAidmJpZl9u cnQiLCAidmJpZl9ucnQiKTsKIAlpZiAoSVNfRVJSKGRwdV9rbXMtPnZiaWZbVkJJRl9OUlRdKSkg ewogCQlkcHVfa21zLT52YmlmW1ZCSUZfTlJUXSA9IE5VTEw7Ci0JCURQVV9ERUJVRygiVkJJRiBO UlQgaXMgbm90IGRlZmluZWQiKTsKKwkJRFJNX0RFVl9ERUJVRygiVkJJRiBOUlQgaXMgbm90IGRl ZmluZWQiKTsKIAl9IGVsc2UgewogCQlkcHVfa21zLT52YmlmX2xlbltWQklGX05SVF0gPSBkcHVf aW9tYXBfc2l6ZShkcHVfa21zLT5wZGV2LAogCQkJCQkJCSAgICAgInZiaWZfbnJ0Iik7CkBAIC0x MDIxLDcgKzEwMjEsNyBAQCBzdGF0aWMgaW50IGRwdV9rbXNfaHdfaW5pdChzdHJ1Y3QgbXNtX2tt cyAqa21zKQogCWRwdV9rbXMtPnJlZ19kbWEgPSBtc21faW9yZW1hcChkcHVfa21zLT5wZGV2LCAi cmVnZG1hIiwgInJlZ2RtYSIpOwogCWlmIChJU19FUlIoZHB1X2ttcy0+cmVnX2RtYSkpIHsKIAkJ ZHB1X2ttcy0+cmVnX2RtYSA9IE5VTEw7Ci0JCURQVV9ERUJVRygiUkVHX0RNQSBpcyBub3QgZGVm aW5lZCIpOworCQlEUk1fREVWX0RFQlVHKCJSRUdfRE1BIGlzIG5vdCBkZWZpbmVkIik7CiAJfSBl bHNlIHsKIAkJZHB1X2ttcy0+cmVnX2RtYV9sZW4gPSBkcHVfaW9tYXBfc2l6ZShkcHVfa21zLT5w ZGV2LCAicmVnZG1hIik7CiAJfQpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgc3RhdGljIGludCBkcHVf a21zX2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKIAkJcmMgPSBQVFJfRVJSKGRwdV9rbXMt PmNvcmVfY2xpZW50KTsKIAkJaWYgKCFkcHVfa21zLT5jb3JlX2NsaWVudCkKIAkJCXJjID0gLUVJ TlZBTDsKLQkJRFBVX0VSUk9SKCJkcHUgcG93ZXIgY2xpZW50IGNyZWF0ZSBmYWlsZWQ6ICVkXG4i LCByYyk7CisJCURSTV9ERVZfRVJST1IoImRwdSBwb3dlciBjbGllbnQgY3JlYXRlIGZhaWxlZDog JWRcbiIsIHJjKTsKIAkJZHB1X2ttcy0+Y29yZV9jbGllbnQgPSBOVUxMOwogCQlnb3RvIGVycm9y OwogCX0KQEAgLTEwNDgsNyArMTA0OCw3IEBAIHN0YXRpYyBpbnQgZHB1X2ttc19od19pbml0KHN0 cnVjdCBtc21fa21zICprbXMpCiAJCXJjID0gUFRSX0VSUihkcHVfa21zLT5jYXRhbG9nKTsKIAkJ aWYgKCFkcHVfa21zLT5jYXRhbG9nKQogCQkJcmMgPSAtRUlOVkFMOwotCQlEUFVfRVJST1IoImNh dGFsb2cgaW5pdCBmYWlsZWQ6ICVkXG4iLCByYyk7CisJCURSTV9ERVZfRVJST1IoImNhdGFsb2cg aW5pdCBmYWlsZWQ6ICVkXG4iLCByYyk7CiAJCWRwdV9rbXMtPmNhdGFsb2cgPSBOVUxMOwogCQln b3RvIHBvd2VyX2Vycm9yOwogCX0KQEAgLTEwNjEsMTQgKzEwNjEsMTQgQEAgc3RhdGljIGludCBk cHVfa21zX2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKIAkgKi8KIAlyYyA9IF9kcHVfa21z X21tdV9pbml0KGRwdV9rbXMpOwogCWlmIChyYykgewotCQlEUFVfRVJST1IoImRwdV9rbXNfbW11 X2luaXQgZmFpbGVkOiAlZFxuIiwgcmMpOworCQlEUk1fREVWX0VSUk9SKCJkcHVfa21zX21tdV9p bml0IGZhaWxlZDogJWRcbiIsIHJjKTsKIAkJZ290byBwb3dlcl9lcnJvcjsKIAl9CiAKIAlyYyA9 IGRwdV9ybV9pbml0KCZkcHVfa21zLT5ybSwgZHB1X2ttcy0+Y2F0YWxvZywgZHB1X2ttcy0+bW1p bywKIAkJCWRwdV9rbXMtPmRldik7CiAJaWYgKHJjKSB7Ci0JCURQVV9FUlJPUigicm0gaW5pdCBm YWlsZWQ6ICVkXG4iLCByYyk7CisJCURSTV9ERVZfRVJST1IoInJtIGluaXQgZmFpbGVkOiAlZFxu IiwgcmMpOwogCQlnb3RvIHBvd2VyX2Vycm9yOwogCX0KIApAQCAtMTA3OSw3ICsxMDc5LDcgQEAg c3RhdGljIGludCBkcHVfa21zX2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKIAkJcmMgPSBQ VFJfRVJSKGRwdV9rbXMtPmh3X21kcCk7CiAJCWlmICghZHB1X2ttcy0+aHdfbWRwKQogCQkJcmMg PSAtRUlOVkFMOwotCQlEUFVfRVJST1IoImZhaWxlZCB0byBnZXQgaHdfbWRwOiAlZFxuIiwgcmMp OworCQlEUk1fREVWX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGh3X21kcDogJWRcbiIsIHJjKTsKIAkJ ZHB1X2ttcy0+aHdfbWRwID0gTlVMTDsKIAkJZ290byBwb3dlcl9lcnJvcjsKIAl9CkBAIC0xMDkz LDcgKzEwOTMsNyBAQCBzdGF0aWMgaW50IGRwdV9rbXNfaHdfaW5pdChzdHJ1Y3QgbXNtX2ttcyAq a21zKQogCQkJcmMgPSBQVFJfRVJSKGRwdV9rbXMtPmh3X3ZiaWZbdmJpZl9pZHhdKTsKIAkJCWlm ICghZHB1X2ttcy0+aHdfdmJpZlt2YmlmX2lkeF0pCiAJCQkJcmMgPSAtRUlOVkFMOwotCQkJRFBV X0VSUk9SKCJmYWlsZWQgdG8gaW5pdCB2YmlmICVkOiAlZFxuIiwgdmJpZl9pZHgsIHJjKTsKKwkJ CURSTV9ERVZfRVJST1IoImZhaWxlZCB0byBpbml0IHZiaWYgJWQ6ICVkXG4iLCB2YmlmX2lkeCwg cmMpOwogCQkJZHB1X2ttcy0+aHdfdmJpZlt2YmlmX2lkeF0gPSBOVUxMOwogCQkJZ290byBwb3dl cl9lcnJvcjsKIAkJfQpAQCAtMTEwMywxNCArMTEwMywxNCBAQCBzdGF0aWMgaW50IGRwdV9rbXNf aHdfaW5pdChzdHJ1Y3QgbXNtX2ttcyAqa21zKQogCQkJJmRwdV9rbXMtPnBoYW5kbGUsCiAJCQlf ZHB1X2ttc19nZXRfY2xrKGRwdV9rbXMsICJjb3JlIikpOwogCWlmIChyYykgewotCQlEUFVfRVJS T1IoImZhaWxlZCB0byBpbml0IHBlcmYgJWRcbiIsIHJjKTsKKwkJRFJNX0RFVl9FUlJPUigiZmFp bGVkIHRvIGluaXQgcGVyZiAlZFxuIiwgcmMpOwogCQlnb3RvIHBlcmZfZXJyOwogCX0KIAogCWRw dV9rbXMtPmh3X2ludHIgPSBkcHVfaHdfaW50cl9pbml0KGRwdV9rbXMtPm1taW8sIGRwdV9rbXMt PmNhdGFsb2cpOwogCWlmIChJU19FUlJfT1JfTlVMTChkcHVfa21zLT5od19pbnRyKSkgewogCQly YyA9IFBUUl9FUlIoZHB1X2ttcy0+aHdfaW50cik7Ci0JCURQVV9FUlJPUigiaHdfaW50ciBpbml0 IGZhaWxlZDogJWRcbiIsIHJjKTsKKwkJRFJNX0RFVl9FUlJPUigiaHdfaW50ciBpbml0IGZhaWxl ZDogJWRcbiIsIHJjKTsKIAkJZHB1X2ttcy0+aHdfaW50ciA9IE5VTEw7CiAJCWdvdG8gaHdfaW50 cl9pbml0X2VycjsKIAl9CkBAIC0xMTIxLDcgKzExMjEsNyBAQCBzdGF0aWMgaW50IGRwdV9rbXNf aHdfaW5pdChzdHJ1Y3QgbXNtX2ttcyAqa21zKQogCSAqLwogCXJjID0gX2RwdV9rbXNfZHJtX29i al9pbml0KGRwdV9rbXMpOwogCWlmIChyYykgewotCQlEUFVfRVJST1IoIm1vZGVzZXQgaW5pdCBm YWlsZWQ6ICVkXG4iLCByYyk7CisJCURSTV9ERVZfRVJST1IoIm1vZGVzZXQgaW5pdCBmYWlsZWQ6 ICVkXG4iLCByYyk7CiAJCWdvdG8gZHJtX29ial9pbml0X2VycjsKIAl9CiAKQEAgLTExNzUsNyAr MTE3NSw3IEBAIHN0cnVjdCBtc21fa21zICpkcHVfa21zX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIAlpbnQgaXJxOwogCiAJaWYgKCFkZXYgfHwgIWRldi0+ZGV2X3ByaXZhdGUpIHsKLQkJ RFBVX0VSUk9SKCJkcm0gZGV2aWNlIG5vZGUgaW52YWxpZFxuIik7CisJCURSTV9ERVZfRVJST1Io ImRybSBkZXZpY2Ugbm9kZSBpbnZhbGlkXG4iKTsKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7 CiAJfQogCkBAIC0xMTg0LDcgKzExODQsNyBAQCBzdHJ1Y3QgbXNtX2ttcyAqZHB1X2ttc19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAlpcnEgPSBpcnFfb2ZfcGFyc2VfYW5kX21hcChk cHVfa21zLT5wZGV2LT5kZXYub2Zfbm9kZSwgMCk7CiAJaWYgKGlycSA8IDApIHsKLQkJRFBVX0VS Uk9SKCJmYWlsZWQgdG8gZ2V0IGlycTogJWRcbiIsIGlycSk7CisJCURSTV9ERVZfRVJST1IoImZh aWxlZCB0byBnZXQgaXJxOiAlZFxuIiwgaXJxKTsKIAkJcmV0dXJuIEVSUl9QVFIoaXJxKTsKIAl9 CiAJZHB1X2ttcy0+YmFzZS5pcnEgPSBpcnE7CkBAIC0xMjA4LDcgKzEyMDgsNyBAQCBzdGF0aWMg aW50IGRwdV9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2 b2lkICpkYXRhKQogCW1wID0gJmRwdV9rbXMtPm1wOwogCXJldCA9IG1zbV9kc3NfcGFyc2VfY2xv Y2socGRldiwgbXApOwogCWlmIChyZXQpIHsKLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gcGFyc2Ug Y2xvY2tzLCByZXQ9JWRcbiIsIHJldCk7CisJCURSTV9ERVZfRVJST1IoImZhaWxlZCB0byBwYXJz ZSBjbG9ja3MsIHJldD0lZFxuIiwgcmV0KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKQEAgLTEyNjgs MTggKzEyNjgsMTggQEAgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBkcHVfcnVudGltZV9zdXNw ZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAogCWRkZXYgPSBkcHVfa21zLT5kZXY7CiAJaWYgKCFk ZGV2KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBkcm1fZGV2aWNlXG4iKTsKKwkJRFJNX0RFVl9F UlJPUigiaW52YWxpZCBkcm1fZGV2aWNlXG4iKTsKIAkJZ290byBleGl0OwogCX0KIAogCXJjID0g ZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgmZHB1X2ttcy0+cGhhbmRsZSwKIAkJCWRwdV9rbXMt PmNvcmVfY2xpZW50LCBmYWxzZSk7CiAJaWYgKHJjKQotCQlEUFVfRVJST1IoInJlc291cmNlIGRp c2FibGUgZmFpbGVkOiAlZFxuIiwgcmMpOworCQlEUk1fREVWX0VSUk9SKCJyZXNvdXJjZSBkaXNh YmxlIGZhaWxlZDogJWRcbiIsIHJjKTsKIAogCXJjID0gbXNtX2Rzc19lbmFibGVfY2xrKG1wLT5j bGtfY29uZmlnLCBtcC0+bnVtX2NsaywgZmFsc2UpOwogCWlmIChyYykKLQkJRFBVX0VSUk9SKCJj bG9jayBkaXNhYmxlIGZhaWxlZCByYzolZFxuIiwgcmMpOworCQlEUk1fREVWX0VSUk9SKCJjbG9j ayBkaXNhYmxlIGZhaWxlZCByYzolZFxuIiwgcmMpOwogCiBleGl0OgogCXJldHVybiByYzsKQEAg LTEyOTUsMjAgKzEyOTUsMjAgQEAgc3RhdGljIGludCBfX21heWJlX3VudXNlZCBkcHVfcnVudGlt ZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCiAJZGRldiA9IGRwdV9rbXMtPmRldjsKIAlp ZiAoIWRkZXYpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGRybV9kZXZpY2VcbiIpOworCQlEUk1f REVWX0VSUk9SKCJpbnZhbGlkIGRybV9kZXZpY2VcbiIpOwogCQlnb3RvIGV4aXQ7CiAJfQogCiAJ cmMgPSBtc21fZHNzX2VuYWJsZV9jbGsobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrLCB0cnVl KTsKIAlpZiAocmMpIHsKLQkJRFBVX0VSUk9SKCJjbG9jayBlbmFibGUgZmFpbGVkIHJjOiVkXG4i LCByYyk7CisJCURSTV9ERVZfRVJST1IoImNsb2NrIGVuYWJsZSBmYWlsZWQgcmM6JWRcbiIsIHJj KTsKIAkJZ290byBleGl0OwogCX0KIAogCXJjID0gZHB1X3Bvd2VyX3Jlc291cmNlX2VuYWJsZSgm ZHB1X2ttcy0+cGhhbmRsZSwKIAkJCWRwdV9rbXMtPmNvcmVfY2xpZW50LCB0cnVlKTsKIAlpZiAo cmMpCi0JCURQVV9FUlJPUigicmVzb3VyY2UgZW5hYmxlIGZhaWxlZDogJWRcbiIsIHJjKTsKKwkJ RFJNX0RFVl9FUlJPUigicmVzb3VyY2UgZW5hYmxlIGZhaWxlZDogJWRcbiIsIHJjKTsKIAogZXhp dDoKIAlyZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfbWRzcy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X21kc3MuYwpp bmRleCA5ZTUzM2I4Li5lZTI2YzFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfbWRzcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9tZHNzLmMKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgaW50IF9kcHVfbWRzc19pcnFfZG9t YWluX2FkZChzdHJ1Y3QgZHB1X21kc3MgKmRwdV9tZHNzKQogCWRvbWFpbiA9IGlycV9kb21haW5f YWRkX2xpbmVhcihkZXYtPm9mX25vZGUsIDMyLAogCQkJJmRwdV9tZHNzX2lycWRvbWFpbl9vcHMs IGRwdV9tZHNzKTsKIAlpZiAoIWRvbWFpbikgewotCQlEUFVfRVJST1IoImZhaWxlZCB0byBhZGQg aXJxX2RvbWFpblxuIik7CisJCURSTV9ERVZfRVJST1IoImZhaWxlZCB0byBhZGQgaXJxX2RvbWFp blxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRp YyBpbnQgZHB1X21kc3NfZW5hYmxlKHN0cnVjdCBtc21fbWRzcyAqbWRzcykKIAogCXJldCA9IG1z bV9kc3NfZW5hYmxlX2NsayhtcC0+Y2xrX2NvbmZpZywgbXAtPm51bV9jbGssIHRydWUpOwogCWlm IChyZXQpCi0JCURQVV9FUlJPUigiY2xvY2sgZW5hYmxlIGZhaWxlZCwgcmV0OiVkXG4iLCByZXQp OworCQlEUk1fREVWX0VSUk9SKCJjbG9jayBlbmFibGUgZmFpbGVkLCByZXQ6JWRcbiIsIHJldCk7 CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHN0YXRpYyBpbnQgZHB1X21k c3NfZGlzYWJsZShzdHJ1Y3QgbXNtX21kc3MgKm1kc3MpCiAKIAlyZXQgPSBtc21fZHNzX2VuYWJs ZV9jbGsobXAtPmNsa19jb25maWcsIG1wLT5udW1fY2xrLCBmYWxzZSk7CiAJaWYgKHJldCkKLQkJ RFBVX0VSUk9SKCJjbG9jayBkaXNhYmxlIGZhaWxlZCwgcmV0OiVkXG4iLCByZXQpOworCQlEUk1f REVWX0VSUk9SKCJjbG9jayBkaXNhYmxlIGZhaWxlZCwgcmV0OiVkXG4iLCByZXQpOwogCiAJcmV0 dXJuIHJldDsKIH0KQEAgLTIwNCw3ICsyMDQsNyBAQCBpbnQgZHB1X21kc3NfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogCW1wID0gJmRwdV9tZHNzLT5tcDsKIAlyZXQgPSBtc21fZHNzX3Bh cnNlX2Nsb2NrKHBkZXYsIG1wKTsKIAlpZiAocmV0KSB7Ci0JCURQVV9FUlJPUigiZmFpbGVkIHRv IHBhcnNlIGNsb2NrcywgcmV0PSVkXG4iLCByZXQpOworCQlEUk1fREVWX0VSUk9SKCJmYWlsZWQg dG8gcGFyc2UgY2xvY2tzLCByZXQ9JWRcbiIsIHJldCk7CiAJCWdvdG8gY2xrX3BhcnNlX2VycjsK IAl9CiAKQEAgLTIxOCw3ICsyMTgsNyBAQCBpbnQgZHB1X21kc3NfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQogCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LT5kZXYsIHBsYXRmb3JtX2dl dF9pcnEocGRldiwgMCksCiAJCQlkcHVfbWRzc19pcnEsIDAsICJkcHVfbWRzc19pc3IiLCBkcHVf bWRzcyk7CiAJaWYgKHJldCkgewotCQlEUFVfRVJST1IoImZhaWxlZCB0byBpbml0IGlycTogJWRc biIsIHJldCk7CisJCURSTV9ERVZfRVJST1IoImZhaWxlZCB0byBpbml0IGlycTogJWRcbiIsIHJl dCk7CiAJCWdvdG8gaXJxX2Vycm9yOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfcGxhbmUuYwppbmRleCBlYzk1OWY4Li4xY2U1NzQ5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfcGxhbmUuYwpAQCAtMzMsMTAgKzMzLDEwIEBACiAjaW5jbHVkZSAi ZHB1X3ZiaWYuaCIKICNpbmNsdWRlICJkcHVfcGxhbmUuaCIKIAotI2RlZmluZSBEUFVfREVCVUdf UExBTkUocGwsIGZtdCwgLi4uKSBEUFVfREVCVUcoInBsYW5lJWQgIiBmbXQsXAorI2RlZmluZSBE UFVfREVCVUdfUExBTkUocGwsIGZtdCwgLi4uKSBEUk1fREVWX0RFQlVHKCJwbGFuZSVkICIgZm10 LFwKIAkJKHBsKSA/IChwbCktPmJhc2UuYmFzZS5pZCA6IC0xLCAjI19fVkFfQVJHU19fKQogCi0j ZGVmaW5lIERQVV9FUlJPUl9QTEFORShwbCwgZm10LCAuLi4pIERQVV9FUlJPUigicGxhbmUlZCAi IGZtdCxcCisjZGVmaW5lIERQVV9FUlJPUl9QTEFORShwbCwgZm10LCAuLi4pIERSTV9ERVZfRVJS T1IoInBsYW5lJWQgIiBmbXQsXAogCQkocGwpID8gKHBsKS0+YmFzZS5iYXNlLmlkIDogLTEsICMj X19WQV9BUkdTX18pCiAKICNkZWZpbmUgREVDSU1BVEVEX0RJTUVOU0lPTihkaW0sIGRlY2kpICgo KGRpbSkgKyAoKDEgPDwgKGRlY2kpKSAtIDEpKSA+PiAoZGVjaSkpCkBAIC0xNjEsNyArMTYxLDcg QEAgc3RhdGljIGlubGluZSBpbnQgX2RwdV9wbGFuZV9jYWxjX2ZpbGxfbGV2ZWwoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAJdTMyIHRvdGFsX2ZsOwogCiAJaWYgKCFwbGFuZSB8fCAhZm10IHx8 ICFwbGFuZS0+c3RhdGUgfHwgIXNyY193aWR0aCB8fCAhZm10LT5icHApIHsKLQkJRFBVX0VSUk9S KCJpbnZhbGlkIGFyZ3VtZW50c1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgYXJndW1l bnRzXG4iKTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIGlu bGluZSBpbnQgX2RwdV9wbGFuZV9jYWxjX2ZpbGxfbGV2ZWwoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bXAsICZwZHB1LT5tcGxhbmVfbGlzdCwgbXBsYW5l X2xpc3QpIHsKIAkJaWYgKCFkcHVfcGxhbmVfZW5hYmxlZCh0bXAtPmJhc2Uuc3RhdGUpKQogCQkJ Y29udGludWU7Ci0JCURQVV9ERUJVRygicGxhbmUlZC8lZCBzcmNfd2lkdGg6JWQvJWRcbiIsCisJ CURSTV9ERVZfREVCVUcoInBsYW5lJWQvJWQgc3JjX3dpZHRoOiVkLyVkXG4iLAogCQkJCXBkcHUt PmJhc2UuYmFzZS5pZCwgdG1wLT5iYXNlLmJhc2UuaWQsCiAJCQkJc3JjX3dpZHRoLAogCQkJCWRy bV9yZWN0X3dpZHRoKCZ0bXAtPnBpcGVfY2ZnLnNyY19yZWN0KSk7CkBAIC0yMDAsNyArMjAwLDcg QEAgc3RhdGljIGlubGluZSBpbnQgX2RwdV9wbGFuZV9jYWxjX2ZpbGxfbGV2ZWwoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAJCX0KIAl9CiAKLQlEUFVfREVCVUcoInBsYW5lJXU6IHBudW06JWQg Zm10OiAlNC40cyB3OiV1IGZsOiV1XG4iLAorCURSTV9ERVZfREVCVUcoInBsYW5lJXU6IHBudW06 JWQgZm10OiAlNC40cyB3OiV1IGZsOiV1XG4iLAogCQkJcGxhbmUtPmJhc2UuaWQsIHBkcHUtPnBp cGUgLSBTU1BQX1ZJRzAsCiAJCQkoY2hhciAqKSZmbXQtPmJhc2UucGl4ZWxfZm9ybWF0LAogCQkJ c3JjX3dpZHRoLCB0b3RhbF9mbCk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgc3RhdGljIHZvaWQgX2Rw dV9wbGFuZV9zZXRfcW9zX2x1dChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAl1MzIgdG90YWxf ZmwgPSAwLCBsdXRfdXNhZ2U7CiAKIAlpZiAoIXBsYW5lIHx8ICFmYikgewotCQlEUFVfRVJST1Io ImludmFsaWQgYXJndW1lbnRzIHBsYW5lICVkIGZiICVkXG4iLAorCQlEUk1fREVWX0VSUk9SKCJp bnZhbGlkIGFyZ3VtZW50cyBwbGFuZSAlZCBmYiAlZFxuIiwKIAkJCQlwbGFuZSAhPSAwLCBmYiAh PSAwKTsKIAkJcmV0dXJuOwogCX0KQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0aWMgdm9pZCBfZHB1 X3BsYW5lX3NldF9xb3NfbHV0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCXBkcHUgPSB0b19k cHVfcGxhbmUocGxhbmUpOwogCiAJaWYgKCFwZHB1LT5waXBlX2h3IHx8ICFwZHB1LT5waXBlX3Ni bGsgfHwgIXBkcHUtPmNhdGFsb2cpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50c1xu Iik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgYXJndW1lbnRzXG4iKTsKIAkJcmV0dXJuOwog CX0gZWxzZSBpZiAoIXBkcHUtPnBpcGVfaHctPm9wcy5zZXR1cF9jcmVxX2x1dCkgewogCQlyZXR1 cm47CkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9wbGFuZV9zZXRfcW9zX2x1 dChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCShmbXQpID8gZm10LT5iYXNlLnBpeGVsX2Zv cm1hdCA6IDAsCiAJCQlwZHB1LT5pc19ydF9waXBlLCB0b3RhbF9mbCwgcW9zX2x1dCwgbHV0X3Vz YWdlKTsKIAotCURQVV9ERUJVRygicGxhbmUldTogcG51bTolZCBmbXQ6ICU0LjRzIHJ0OiVkIGZs OiV1IGx1dDoweCVsbHhcbiIsCisJRFJNX0RFVl9ERUJVRygicGxhbmUldTogcG51bTolZCBmbXQ6 ICU0LjRzIHJ0OiVkIGZsOiV1IGx1dDoweCVsbHhcbiIsCiAJCQlwbGFuZS0+YmFzZS5pZCwKIAkJ CXBkcHUtPnBpcGUgLSBTU1BQX1ZJRzAsCiAJCQlmbXQgPyAoY2hhciAqKSZmbXQtPmJhc2UucGl4 ZWxfZm9ybWF0IDogTlVMTCwKQEAgLTMwNywxNCArMzA3LDE0IEBAIHN0YXRpYyB2b2lkIF9kcHVf cGxhbmVfc2V0X2Rhbmdlcl9sdXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJdTMyIGRhbmdl cl9sdXQsIHNhZmVfbHV0OwogCiAJaWYgKCFwbGFuZSB8fCAhZmIpIHsKLQkJRFBVX0VSUk9SKCJp bnZhbGlkIGFyZ3VtZW50c1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgYXJndW1lbnRz XG4iKTsKIAkJcmV0dXJuOwogCX0KIAogCXBkcHUgPSB0b19kcHVfcGxhbmUocGxhbmUpOwogCiAJ aWYgKCFwZHB1LT5waXBlX2h3IHx8ICFwZHB1LT5waXBlX3NibGsgfHwgIXBkcHUtPmNhdGFsb2cp IHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50c1xuIik7CisJCURSTV9ERVZfRVJST1Io ImludmFsaWQgYXJndW1lbnRzXG4iKTsKIAkJcmV0dXJuOwogCX0gZWxzZSBpZiAoIXBkcHUtPnBp cGVfaHctPm9wcy5zZXR1cF9kYW5nZXJfc2FmZV9sdXQpIHsKIAkJcmV0dXJuOwpAQCAtMzUyLDcg KzM1Miw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfcGxhbmVfc2V0X2Rhbmdlcl9sdXQoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAJCQlwZHB1LT5waXBlX3Fvc19jZmcuZGFuZ2VyX2x1dCwKIAkJCXBk cHUtPnBpcGVfcW9zX2NmZy5zYWZlX2x1dCk7CiAKLQlEUFVfREVCVUcoInBsYW5lJXU6IHBudW06 JWQgZm10OiAlNC40cyBtb2RlOiVkIGx1dHNbMHgleCwgMHgleF1cbiIsCisJRFJNX0RFVl9ERUJV RygicGxhbmUldTogcG51bTolZCBmbXQ6ICU0LjRzIG1vZGU6JWQgbHV0c1sweCV4LCAweCV4XVxu IiwKIAkJcGxhbmUtPmJhc2UuaWQsCiAJCXBkcHUtPnBpcGUgLSBTU1BQX1ZJRzAsCiAJCWZtdCA/ IChjaGFyICopJmZtdC0+YmFzZS5waXhlbF9mb3JtYXQgOiBOVUxMLApAQCAtMzc2LDE0ICszNzYs MTQgQEAgc3RhdGljIHZvaWQgX2RwdV9wbGFuZV9zZXRfcW9zX2N0cmwoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCiAJc3RydWN0IGRwdV9wbGFuZSAqcGRwdTsKIAogCWlmICghcGxhbmUpIHsKLQkJ RFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50c1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFs aWQgYXJndW1lbnRzXG4iKTsKIAkJcmV0dXJuOwogCX0KIAogCXBkcHUgPSB0b19kcHVfcGxhbmUo cGxhbmUpOwogCiAJaWYgKCFwZHB1LT5waXBlX2h3IHx8ICFwZHB1LT5waXBlX3NibGspIHsKLQkJ RFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50c1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFs aWQgYXJndW1lbnRzXG4iKTsKIAkJcmV0dXJuOwogCX0gZWxzZSBpZiAoIXBkcHUtPnBpcGVfaHct Pm9wcy5zZXR1cF9xb3NfY3RybCkgewogCQlyZXR1cm47CkBAIC00MTAsNyArNDEwLDcgQEAgc3Rh dGljIHZvaWQgX2RwdV9wbGFuZV9zZXRfcW9zX2N0cmwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs CiAJCXBkcHUtPnBpcGVfcW9zX2NmZy5kYW5nZXJfc2FmZV9lbiA9IGZhbHNlOwogCX0KIAotCURQ VV9ERUJVRygicGxhbmUldTogcG51bTolZCBkczolZCB2YjolZCBwcmlbMHgleCwgMHgleF0gaXNf cnQ6JWRcbiIsCisJRFJNX0RFVl9ERUJVRygicGxhbmUldTogcG51bTolZCBkczolZCB2YjolZCBw cmlbMHgleCwgMHgleF0gaXNfcnQ6JWRcbiIsCiAJCXBsYW5lLT5iYXNlLmlkLAogCQlwZHB1LT5w aXBlIC0gU1NQUF9WSUcwLAogCQlwZHB1LT5waXBlX3Fvc19jZmcuZGFuZ2VyX3NhZmVfZW4sCkBA IC00MzAsMTMgKzQzMCwxMyBAQCBpbnQgZHB1X3BsYW5lX2Rhbmdlcl9zaWduYWxfY3RybChzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwgYm9vbCBlbmFibGUpCiAJc3RydWN0IGRwdV9rbXMgKmRwdV9r bXM7CiAKIAlpZiAoIXBsYW5lIHx8ICFwbGFuZS0+ZGV2KSB7Ci0JCURQVV9FUlJPUigiaW52YWxp ZCBhcmd1bWVudHNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50c1xuIik7 CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAogCXByaXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0 ZTsKIAlpZiAoIXByaXYgfHwgIXByaXYtPmttcykgewotCQlEUFVfRVJST1IoImludmFsaWQgS01T IHJlZmVyZW5jZVxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgS01TIHJlZmVyZW5jZVxu Iik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNDY4LDIxICs0NjgsMjEgQEAgc3RhdGlj IHZvaWQgX2RwdV9wbGFuZV9zZXRfb3RfbGltaXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJ c3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7CiAKIAlpZiAoIXBsYW5lIHx8ICFwbGFuZS0+ZGV2IHx8 ICFjcnRjKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVudHMgcGxhbmUgJWQgY3J0YyAl ZFxuIiwKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBhcmd1bWVudHMgcGxhbmUgJWQgY3J0YyAl ZFxuIiwKIAkJCQlwbGFuZSAhPSAwLCBjcnRjICE9IDApOwogCQlyZXR1cm47CiAJfQogCiAJcHJp diA9IHBsYW5lLT5kZXYtPmRldl9wcml2YXRlOwogCWlmICghcHJpdiB8fCAhcHJpdi0+a21zKSB7 Ci0JCURQVV9FUlJPUigiaW52YWxpZCBLTVMgcmVmZXJlbmNlXG4iKTsKKwkJRFJNX0RFVl9FUlJP UigiaW52YWxpZCBLTVMgcmVmZXJlbmNlXG4iKTsKIAkJcmV0dXJuOwogCX0KIAogCWRwdV9rbXMg PSB0b19kcHVfa21zKHByaXYtPmttcyk7CiAJcGRwdSA9IHRvX2RwdV9wbGFuZShwbGFuZSk7CiAJ aWYgKCFwZHB1LT5waXBlX2h3KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwaXBlIHJlZmVyZW5j ZVxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgcGlwZSByZWZlcmVuY2VcbiIpOwogCQly ZXR1cm47CiAJfQogCkBAIC01MTIsMjAgKzUxMiwyMCBAQCBzdGF0aWMgdm9pZCBfZHB1X3BsYW5l X3NldF9xb3NfcmVtYXAoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJc3RydWN0IGRwdV9rbXMg KmRwdV9rbXM7CiAKIAlpZiAoIXBsYW5lIHx8ICFwbGFuZS0+ZGV2KSB7Ci0JCURQVV9FUlJPUigi aW52YWxpZCBhcmd1bWVudHNcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50 c1xuIik7CiAJCXJldHVybjsKIAl9CiAKIAlwcml2ID0gcGxhbmUtPmRldi0+ZGV2X3ByaXZhdGU7 CiAJaWYgKCFwcml2IHx8ICFwcml2LT5rbXMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIEtNUyBy ZWZlcmVuY2VcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIEtNUyByZWZlcmVuY2VcbiIp OwogCQlyZXR1cm47CiAJfQogCiAJZHB1X2ttcyA9IHRvX2RwdV9rbXMocHJpdi0+a21zKTsKIAlw ZHB1ID0gdG9fZHB1X3BsYW5lKHBsYW5lKTsKIAlpZiAoIXBkcHUtPnBpcGVfaHcpIHsKLQkJRFBV X0VSUk9SKCJpbnZhbGlkIHBpcGUgcmVmZXJlbmNlXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52 YWxpZCBwaXBlIHJlZmVyZW5jZVxuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTUzNiw3ICs1MzYs NyBAQCBzdGF0aWMgdm9pZCBfZHB1X3BsYW5lX3NldF9xb3NfcmVtYXAoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUpCiAJcW9zX3BhcmFtcy5udW0gPSBwZHB1LT5waXBlX2h3LT5pZHggLSBTU1BQX1ZJ RzA7CiAJcW9zX3BhcmFtcy5pc19ydCA9IHBkcHUtPmlzX3J0X3BpcGU7CiAKLQlEUFVfREVCVUco InBsYW5lJWQgcGlwZTolZCB2YmlmOiVkIHhpbjolZCBydDolZCwgY2xrX2N0cmw6JWRcbiIsCisJ RFJNX0RFVl9ERUJVRygicGxhbmUlZCBwaXBlOiVkIHZiaWY6JWQgeGluOiVkIHJ0OiVkLCBjbGtf Y3RybDolZFxuIiwKIAkJCXBsYW5lLT5iYXNlLmlkLCBxb3NfcGFyYW1zLm51bSwKIAkJCXFvc19w YXJhbXMudmJpZl9pZHgsCiAJCQlxb3NfcGFyYW1zLnhpbl9pZCwgcW9zX3BhcmFtcy5pc19ydCwK QEAgLTU1NiwxMyArNTU2LDEzIEBAIHN0YXRpYyBpbnQgX2RwdV9wbGFuZV9nZXRfYXNwYWNlKAog CXN0cnVjdCBkcHVfa21zICprbXM7CiAKIAlpZiAoIXBkcHUgfHwgIXBzdGF0ZSB8fCAhYXNwYWNl KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbWV0ZXJzXG4iKTsKKwkJRFJNX0RFVl9FUlJP UigiaW52YWxpZCBwYXJhbWV0ZXJzXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJa21z ID0gX2RwdV9wbGFuZV9nZXRfa21zKCZwZHB1LT5iYXNlKTsKIAlpZiAoIWttcykgewotCQlEUFVf RVJST1IoImludmFsaWQga21zXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBrbXNcbiIp OwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTU4MSw3ICs1ODEsNyBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgX2RwdV9wbGFuZV9zZXRfc2Nhbm91dChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK IAlpbnQgcmV0OwogCiAJaWYgKCFwbGFuZSB8fCAhcHN0YXRlIHx8ICFwaXBlX2NmZyB8fCAhZmIp IHsKLQkJRFBVX0VSUk9SKAorCQlEUk1fREVWX0VSUk9SKAogCQkJImludmFsaWQgYXJnKHMpLCBw bGFuZSAlZCBzdGF0ZSAlZCBjZmcgJWQgZmIgJWRcbiIsCiAJCQlwbGFuZSAhPSAwLCBwc3RhdGUg IT0gMCwgcGlwZV9jZmcgIT0gMCwgZmIgIT0gMCk7CiAJCXJldHVybjsKQEAgLTYyNCw3ICs2MjQs NyBAQCBzdGF0aWMgdm9pZCBfZHB1X3BsYW5lX3NldHVwX3NjYWxlcjMoc3RydWN0IGRwdV9wbGFu ZSAqcGRwdSwKIAogCWlmICghcGRwdSB8fCAhcHN0YXRlIHx8ICFzY2FsZV9jZmcgfHwgIWZtdCB8 fCAhY2hyb21hX3N1YnNtcGxfaCB8fAogCQkJIWNocm9tYV9zdWJzbXBsX3YpIHsKLQkJRFBVX0VS Uk9SKAorCQlEUk1fREVWX0VSUk9SKAogCQkJInBkcHUgJWQgcHN0YXRlICVkIHNjYWxlX2NmZyAl ZCBmbXQgJWQgc21wX2ggJWQgc21wX3YgJWRcbiIsCiAJCQkhIXBkcHUsICEhcHN0YXRlLCAhIXNj YWxlX2NmZywgISFmbXQsIGNocm9tYV9zdWJzbXBsX2gsCiAJCQljaHJvbWFfc3Vic21wbF92KTsK QEAgLTcxNSw3ICs3MTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2RwdV9wbGFuZV9zZXR1cF9j c2Moc3RydWN0IGRwdV9wbGFuZSAqcGRwdSkKIAl9OwogCiAJaWYgKCFwZHB1KSB7Ci0JCURQVV9F UlJPUigiaW52YWxpZCBwbGFuZVxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgcGxhbmVc biIpOwogCQlyZXR1cm47CiAJfQogCkBAIC03MzgsNyArNzM4LDcgQEAgc3RhdGljIHZvaWQgX2Rw dV9wbGFuZV9zZXR1cF9zY2FsZXIoc3RydWN0IGRwdV9wbGFuZSAqcGRwdSwKIAl1aW50MzJfdCBj aHJvbWFfc3Vic21wbF9oLCBjaHJvbWFfc3Vic21wbF92OwogCiAJaWYgKCFwZHB1IHx8ICFmbXQg fHwgIXBzdGF0ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgYXJnKHMpLCBwbGFuZSAlZCBmbXQg JWQgc3RhdGUgJWRcbiIsCisJCURSTV9ERVZfRVJST1IoImludmFsaWQgYXJnKHMpLCBwbGFuZSAl ZCBmbXQgJWQgc3RhdGUgJWRcbiIsCiAJCQkJcGRwdSAhPSAwLCBmbXQgIT0gMCwgcHN0YXRlICE9 IDApOwogCQlyZXR1cm47CiAJfQpAQCAtNzc2LDcgKzc3Niw3IEBAIHN0YXRpYyBpbnQgX2RwdV9w bGFuZV9jb2xvcl9maWxsKHN0cnVjdCBkcHVfcGxhbmUgKnBkcHUsCiAJc3RydWN0IGRwdV9wbGFu ZV9zdGF0ZSAqcHN0YXRlOwogCiAJaWYgKCFwZHB1IHx8ICFwZHB1LT5iYXNlLnN0YXRlKSB7Ci0J CURQVV9FUlJPUigiaW52YWxpZCBwbGFuZVxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQg cGxhbmVcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTg4MSw3ICs4ODEsNyBAQCBp bnQgZHB1X3BsYW5lX3ZhbGlkYXRlX211bHRpcmVjdF92MihzdHJ1Y3QgZHB1X211bHRpcmVjdF9w bGFuZV9zdGF0ZXMgKnBsYW5lKQogCQlkcHVfcGxhbmVbaV0gPSB0b19kcHVfcGxhbmUoZHJtX3N0 YXRlW2ldLT5wbGFuZSk7CiAKIAkJaWYgKHBzdGF0ZVtpXSA9PSBOVUxMKSB7Ci0JCQlEUFVfRVJS T1IoIkRQVSBwbGFuZSBzdGF0ZSBvZiBwbGFuZSBpZCAlZCBpcyBOVUxMXG4iLAorCQkJRFJNX0RF Vl9FUlJPUigiRFBVIHBsYW5lIHN0YXRlIG9mIHBsYW5lIGlkICVkIGlzIE5VTExcbiIsCiAJCQkJ ZHJtX3N0YXRlW2ldLT5wbGFuZS0+YmFzZS5pZCk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQpA QCAtOTQxLDcgKzk0MSw3IEBAIGludCBkcHVfcGxhbmVfdmFsaWRhdGVfbXVsdGlyZWN0X3YyKHN0 cnVjdCBkcHVfbXVsdGlyZWN0X3BsYW5lX3N0YXRlcyAqcGxhbmUpCiAJCXBzdGF0ZVtSMF0tPm11 bHRpcmVjdF9tb2RlID0gRFBVX1NTUFBfTVVMVElSRUNUX1RJTUVfTVg7CiAJCXBzdGF0ZVtSMV0t Pm11bHRpcmVjdF9tb2RlID0gRFBVX1NTUFBfTVVMVElSRUNUX1RJTUVfTVg7CiAJfSBlbHNlIHsK LQkJRFBVX0VSUk9SKAorCQlEUk1fREVWX0VSUk9SKAogCQkJIk5vIG11bHRpcmVjdCBtb2RlIHBv c3NpYmxlIGZvciB0aGUgcGxhbmVzICglZCAtICVkKVxuIiwKIAkJCWRybV9zdGF0ZVtSMF0tPnBs YW5lLT5iYXNlLmlkLAogCQkJZHJtX3N0YXRlW1IxXS0+cGxhbmUtPmJhc2UuaWQpOwpAQCAtOTc2 LDcgKzk3Niw3IEBAIHZvaWQgZHB1X3BsYW5lX2dldF9jdGxfZmx1c2goc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsIHN0cnVjdCBkcHVfaHdfY3RsICpjdGwsCiAJc3RydWN0IGRwdV9wbGFuZV9zdGF0 ZSAqcHN0YXRlOwogCiAJaWYgKCFwbGFuZSB8fCAhZmx1c2hfc3NwcCkgewotCQlEUFVfRVJST1Io ImludmFsaWQgcGFyYW1ldGVyc1xuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgcGFyYW1l dGVyc1xuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTEwMjcsNyArMTAyNyw3IEBAIHN0YXRpYyBp bnQgZHB1X3BsYW5lX3ByZXBhcmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCXJldCA9 IG1zbV9mcmFtZWJ1ZmZlcl9wcmVwYXJlKG5ld19zdGF0ZS0+ZmIsCiAJCQkJcHN0YXRlLT5hc3Bh Y2UpOwogCQlpZiAocmV0KSB7Ci0JCQlEUFVfRVJST1IoImZhaWxlZCB0byBwcmVwYXJlIGZyYW1l YnVmZmVyXG4iKTsKKwkJCURSTV9ERVZfRVJST1IoImZhaWxlZCB0byBwcmVwYXJlIGZyYW1lYnVm ZmVyXG4iKTsKIAkJCXJldHVybiByZXQ7CiAJCX0KIAl9CkBAIC0xMDkxLDcgKzEwOTEsNyBAQCBz dGF0aWMgaW50IGRwdV9wbGFuZV9zc3BwX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKIAlpbnQgaHNjYWxlID0gMSwgdnNjYWxlID0gMTsKIAogCWlmICghcGxhbmUgfHwgIXN0 YXRlKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBhcmcocyksIHBsYW5lICVkIHN0YXRlICVkXG4i LAorCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGFyZyhzKSwgcGxhbmUgJWQgc3RhdGUgJWRcbiIs CiAJCQkJcGxhbmUgIT0gMCwgc3RhdGUgIT0gMCk7CiAJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8g ZXhpdDsKQEAgLTEyMDUsNyArMTIwNSw3IEBAIHZvaWQgZHB1X3BsYW5lX2ZsdXNoKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lKQogCXN0cnVjdCBkcHVfcGxhbmVfc3RhdGUgKnBzdGF0ZTsKIAogCWlm ICghcGxhbmUgfHwgIXBsYW5lLT5zdGF0ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgcGxhbmVc biIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIHBsYW5lXG4iKTsKIAkJcmV0dXJuOwogCX0K IApAQCAtMTI1OSwxMyArMTI1OSwxMyBAQCBzdGF0aWMgaW50IGRwdV9wbGFuZV9zc3BwX2F0b21p Y191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IGRybV9yZWN0IHNyYywg ZHN0OwogCiAJaWYgKCFwbGFuZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgcGxhbmVcbiIpOwor CQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIHBsYW5lXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJ fSBlbHNlIGlmICghcGxhbmUtPnN0YXRlKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwbGFuZSBz dGF0ZVxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgcGxhbmUgc3RhdGVcbiIpOwogCQly ZXR1cm4gLUVJTlZBTDsKIAl9IGVsc2UgaWYgKCFvbGRfc3RhdGUpIHsKLQkJRFBVX0VSUk9SKCJp bnZhbGlkIG9sZCBzdGF0ZVxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgb2xkIHN0YXRl XG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCkBAIC0xMzk4LDEzICsxMzk4LDEzIEBAIHN0 YXRpYyB2b2lkIF9kcHVfcGxhbmVfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCiAJc3RydWN0IGRwdV9wbGFuZV9zdGF0ZSAqcHN0YXRlOwogCiAJaWYgKCFwbGFuZSkgewot CQlEUFVfRVJST1IoImludmFsaWQgcGxhbmVcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlk IHBsYW5lXG4iKTsKIAkJcmV0dXJuOwogCX0gZWxzZSBpZiAoIXBsYW5lLT5zdGF0ZSkgewotCQlE UFVfRVJST1IoImludmFsaWQgcGxhbmUgc3RhdGVcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZh bGlkIHBsYW5lIHN0YXRlXG4iKTsKIAkJcmV0dXJuOwogCX0gZWxzZSBpZiAoIW9sZF9zdGF0ZSkg ewotCQlEUFVfRVJST1IoImludmFsaWQgb2xkIHN0YXRlXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigi aW52YWxpZCBvbGQgc3RhdGVcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xNDMwLDEwICsxNDMw LDEwIEBAIHN0YXRpYyB2b2lkIGRwdV9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAogCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlOwogCiAJaWYgKCFwbGFu ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgcGxhbmVcbiIpOworCQlEUk1fREVWX0VSUk9SKCJp bnZhbGlkIHBsYW5lXG4iKTsKIAkJcmV0dXJuOwogCX0gZWxzZSBpZiAoIXBsYW5lLT5zdGF0ZSkg ewotCQlEUFVfRVJST1IoImludmFsaWQgcGxhbmUgc3RhdGVcbiIpOworCQlEUk1fREVWX0VSUk9S KCJpbnZhbGlkIHBsYW5lIHN0YXRlXG4iKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMTQ1OSw3ICsx NDU5LDcgQEAgdm9pZCBkcHVfcGxhbmVfcmVzdG9yZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkK IAlzdHJ1Y3QgZHB1X3BsYW5lICpwZHB1OwogCiAJaWYgKCFwbGFuZSB8fCAhcGxhbmUtPnN0YXRl KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwbGFuZVxuIik7CisJCURSTV9ERVZfRVJST1IoImlu dmFsaWQgcGxhbmVcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xNDk4LDcgKzE0OTgsNyBAQCBz dGF0aWMgdm9pZCBkcHVfcGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKIAlzdHJ1Y3QgZHB1X3BsYW5lX3N0YXRlICpwc3RhdGU7CiAKIAlpZiAoIXBsYW5lIHx8ICFz dGF0ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgYXJnKHMpLCBwbGFuZSAlZCBzdGF0ZSAlZFxu IiwKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBhcmcocyksIHBsYW5lICVkIHN0YXRlICVkXG4i LAogCQkJCXBsYW5lICE9IDAsIHN0YXRlICE9IDApOwogCQlyZXR1cm47CiAJfQpAQCAtMTUyMCwx MCArMTUyMCwxMCBAQCBzdGF0aWMgdm9pZCBkcHVfcGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3QgZHB1X3BsYW5lX3N0YXRlICpvbGRfc3RhdGU7CiAK IAlpZiAoIXBsYW5lKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwbGFuZVxuIik7CisJCURSTV9E RVZfRVJST1IoImludmFsaWQgcGxhbmVcbiIpOwogCQlyZXR1cm4gTlVMTDsKIAl9IGVsc2UgaWYg KCFwbGFuZS0+c3RhdGUpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBsYW5lIHN0YXRlXG4iKTsK KwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBwbGFuZSBzdGF0ZVxuIik7CiAJCXJldHVybiBOVUxM OwogCX0KIApAQCAtMTU1MCw3ICsxNTUwLDcgQEAgc3RhdGljIHZvaWQgZHB1X3BsYW5lX3Jlc2V0 KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogCXN0cnVjdCBkcHVfcGxhbmVfc3RhdGUgKnBzdGF0 ZTsKIAogCWlmICghcGxhbmUpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBsYW5lXG4iKTsKKwkJ RFJNX0RFVl9FUlJPUigiaW52YWxpZCBwbGFuZVxuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTE2 MDgsMTAgKzE2MDgsMTAgQEAgc3RhdGljIHZvaWQgX2RwdV9wbGFuZV9zZXRfZGFuZ2VyX3N0YXRl KHN0cnVjdCBkcHVfa21zICprbXMsIGJvb2wgZW5hYmxlKQogCWRybV9mb3JfZWFjaF9wbGFuZShw bGFuZSwga21zLT5kZXYpIHsKIAkJaWYgKHBsYW5lLT5mYiAmJiBwbGFuZS0+c3RhdGUpIHsKIAkJ CWRwdV9wbGFuZV9kYW5nZXJfc2lnbmFsX2N0cmwocGxhbmUsIGVuYWJsZSk7Ci0JCQlEUFVfREVC VUcoInBsYW5lOiVkIGltZzolZHglZCAiLAorCQkJRFJNX0RFVl9ERUJVRygicGxhbmU6JWQgaW1n OiVkeCVkICIsCiAJCQkJcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5mYi0+d2lkdGgsCiAJCQkJcGxh bmUtPmZiLT5oZWlnaHQpOwotCQkJRFBVX0RFQlVHKCJzcmNbJWQsJWQsJWQsJWRdIGRzdFslZCwl ZCwlZCwlZF1cbiIsCisJCQlEUk1fREVWX0RFQlVHKCJzcmNbJWQsJWQsJWQsJWRdIGRzdFslZCwl ZCwlZCwlZF1cbiIsCiAJCQkJcGxhbmUtPnN0YXRlLT5zcmNfeCA+PiAxNiwKIAkJCQlwbGFuZS0+ c3RhdGUtPnNyY195ID4+IDE2LAogCQkJCXBsYW5lLT5zdGF0ZS0+c3JjX3cgPj4gMTYsCkBAIC0x NjE5LDcgKzE2MTksNyBAQCBzdGF0aWMgdm9pZCBfZHB1X3BsYW5lX3NldF9kYW5nZXJfc3RhdGUo c3RydWN0IGRwdV9rbXMgKmttcywgYm9vbCBlbmFibGUpCiAJCQkJcGxhbmUtPnN0YXRlLT5jcnRj X3gsIHBsYW5lLT5zdGF0ZS0+Y3J0Y195LAogCQkJCXBsYW5lLT5zdGF0ZS0+Y3J0Y193LCBwbGFu ZS0+c3RhdGUtPmNydGNfaCk7CiAJCX0gZWxzZSB7Ci0JCQlEUFVfREVCVUcoIkluYWN0aXZlIHBs YW5lOiVkXG4iLCBwbGFuZS0+YmFzZS5pZCk7CisJCQlEUk1fREVWX0RFQlVHKCJJbmFjdGl2ZSBw bGFuZTolZFxuIiwgcGxhbmUtPmJhc2UuaWQpOwogCQl9CiAJfQogfQpAQCAtMTY0OCwxMiArMTY0 OCwxMiBAQCBzdGF0aWMgc3NpemVfdCBfZHB1X3BsYW5lX2Rhbmdlcl93cml0ZShzdHJ1Y3QgZmls ZSAqZmlsZSwKIAogCWlmIChkaXNhYmxlX3BhbmljKSB7CiAJCS8qIERpc2FibGUgcGFuaWMgc2ln bmFsIGZvciBhbGwgYWN0aXZlIHBpcGVzICovCi0JCURQVV9ERUJVRygiRGlzYWJsaW5nIGRhbmdl cjpcbiIpOworCQlEUk1fREVWX0RFQlVHKCJEaXNhYmxpbmcgZGFuZ2VyOlxuIik7CiAJCV9kcHVf cGxhbmVfc2V0X2Rhbmdlcl9zdGF0ZShrbXMsIGZhbHNlKTsKIAkJa21zLT5oYXNfZGFuZ2VyX2N0 cmwgPSBmYWxzZTsKIAl9IGVsc2UgewogCQkvKiBFbmFibGUgcGFuaWMgc2lnbmFsIGZvciBhbGwg YWN0aXZlIHBpcGVzICovCi0JCURQVV9ERUJVRygiRW5hYmxpbmcgZGFuZ2VyOlxuIik7CisJCURS TV9ERVZfREVCVUcoIkVuYWJsaW5nIGRhbmdlcjpcbiIpOwogCQlrbXMtPmhhc19kYW5nZXJfY3Ry bCA9IHRydWU7CiAJCV9kcHVfcGxhbmVfc2V0X2Rhbmdlcl9zdGF0ZShrbXMsIHRydWUpOwogCX0K QEAgLTE2NzYsMTMgKzE2NzYsMTMgQEAgc3RhdGljIGludCBfZHB1X3BsYW5lX2luaXRfZGVidWdm cyhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIAljb25zdCBzdHJ1Y3QgZHB1X3NzcHBfY2ZnICpj ZmcgPSAwOwogCiAJaWYgKCFwbGFuZSB8fCAhcGxhbmUtPmRldikgewotCQlEUFVfRVJST1IoImlu dmFsaWQgYXJndW1lbnRzXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBhcmd1bWVudHNc biIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlwcml2ID0gcGxhbmUtPmRldi0+ZGV2X3By aXZhdGU7CiAJaWYgKCFwcml2IHx8ICFwcml2LT5rbXMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlk IEtNUyByZWZlcmVuY2VcbiIpOworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIEtNUyByZWZlcmVu Y2VcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTE4NDAsMzEgKzE4NDAsMzEgQEAg c3RydWN0IGRybV9wbGFuZSAqZHB1X3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAlpbnQgcmV0ID0gLUVJTlZBTDsKIAogCWlmICghZGV2KSB7Ci0JCURQVV9FUlJPUigiWyV1XWRl dmljZSBpcyBOVUxMXG4iLCBwaXBlKTsKKwkJRFJNX0RFVl9FUlJPUigiWyV1XWRldmljZSBpcyBO VUxMXG4iLCBwaXBlKTsKIAkJZ290byBleGl0OwogCX0KIAogCXByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwogCWlmICghcHJpdikgewotCQlEUFVfRVJST1IoIlsldV1wcml2YXRlIGRhdGEgaXMgTlVM TFxuIiwgcGlwZSk7CisJCURSTV9ERVZfRVJST1IoIlsldV1wcml2YXRlIGRhdGEgaXMgTlVMTFxu IiwgcGlwZSk7CiAJCWdvdG8gZXhpdDsKIAl9CiAKIAlpZiAoIXByaXYtPmttcykgewotCQlEUFVf RVJST1IoIlsldV1pbnZhbGlkIEtNUyByZWZlcmVuY2VcbiIsIHBpcGUpOworCQlEUk1fREVWX0VS Uk9SKCJbJXVdaW52YWxpZCBLTVMgcmVmZXJlbmNlXG4iLCBwaXBlKTsKIAkJZ290byBleGl0Owog CX0KIAlrbXMgPSB0b19kcHVfa21zKHByaXYtPmttcyk7CiAKIAlpZiAoIWttcy0+Y2F0YWxvZykg ewotCQlEUFVfRVJST1IoIlsldV1pbnZhbGlkIGNhdGFsb2cgcmVmZXJlbmNlXG4iLCBwaXBlKTsK KwkJRFJNX0RFVl9FUlJPUigiWyV1XWludmFsaWQgY2F0YWxvZyByZWZlcmVuY2VcbiIsIHBpcGUp OwogCQlnb3RvIGV4aXQ7CiAJfQogCiAJLyogY3JlYXRlIGFuZCB6ZXJvIGxvY2FsIHN0cnVjdHVy ZSAqLwogCXBkcHUgPSBremFsbG9jKHNpemVvZigqcGRwdSksIEdGUF9LRVJORUwpOwogCWlmICgh cGRwdSkgewotCQlEUFVfRVJST1IoIlsldV1mYWlsZWQgdG8gYWxsb2NhdGUgbG9jYWwgcGxhbmUg c3RydWN0XG4iLCBwaXBlKTsKKwkJRFJNX0RFVl9FUlJPUigiWyV1XWZhaWxlZCB0byBhbGxvY2F0 ZSBsb2NhbCBwbGFuZSBzdHJ1Y3RcbiIsIHBpcGUpOwogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3Rv IGV4aXQ7CiAJfQpAQCAtMTg4NSwxMSArMTg4NSwxMSBAQCBzdHJ1Y3QgZHJtX3BsYW5lICpkcHVf cGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXBkcHUtPnBpcGVfaHcgPSBkcHVf aHdfc3NwcF9pbml0KHBpcGUsIGttcy0+bW1pbywga21zLT5jYXRhbG9nLAogCQkJCQkJCW1hc3Rl cl9wbGFuZV9pZCAhPSAwKTsKIAlpZiAoSVNfRVJSKHBkcHUtPnBpcGVfaHcpKSB7Ci0JCURQVV9F UlJPUigiWyV1XVNTUFAgaW5pdCBmYWlsZWRcbiIsIHBpcGUpOworCQlEUk1fREVWX0VSUk9SKCJb JXVdU1NQUCBpbml0IGZhaWxlZFxuIiwgcGlwZSk7CiAJCXJldCA9IFBUUl9FUlIocGRwdS0+cGlw ZV9odyk7CiAJCWdvdG8gY2xlYW5fcGxhbmU7CiAJfSBlbHNlIGlmICghcGRwdS0+cGlwZV9ody0+ Y2FwIHx8ICFwZHB1LT5waXBlX2h3LT5jYXAtPnNibGspIHsKLQkJRFBVX0VSUk9SKCJbJXVdU1NQ UCBpbml0IHJldHVybmVkIGludmFsaWQgY2ZnXG4iLCBwaXBlKTsKKwkJRFJNX0RFVl9FUlJPUigi WyV1XVNTUFAgaW5pdCByZXR1cm5lZCBpbnZhbGlkIGNmZ1xuIiwgcGlwZSk7CiAJCWdvdG8gY2xl YW5fc3NwcDsKIAl9CiAKQEAgLTE4OTcsNyArMTg5Nyw3IEBAIHN0cnVjdCBkcm1fcGxhbmUgKmRw dV9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcGRwdS0+ZmVhdHVyZXMgPSBw ZHB1LT5waXBlX2h3LT5jYXAtPmZlYXR1cmVzOwogCXBkcHUtPnBpcGVfc2JsayA9IHBkcHUtPnBp cGVfaHctPmNhcC0+c2JsazsKIAlpZiAoIXBkcHUtPnBpcGVfc2JsaykgewotCQlEUFVfRVJST1Io IlsldV1pbnZhbGlkIHNibGtcbiIsIHBpcGUpOworCQlEUk1fREVWX0VSUk9SKCJbJXVdaW52YWxp ZCBzYmxrXG4iLCBwaXBlKTsKIAkJZ290byBjbGVhbl9zc3BwOwogCX0KIApAQCAtMTkxMiw3ICsx OTEyLDcgQEAgc3RydWN0IGRybV9wbGFuZSAqZHB1X3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkJCQlBUlJBWV9TSVpFKHBkcHUtPmZvcm1hdHMpKTsKIAogCWlmICghcGRwdS0+ bmZvcm1hdHMpIHsKLQkJRFBVX0VSUk9SKCJbJXVdbm8gdmFsaWQgZm9ybWF0cyBmb3IgcGxhbmVc biIsIHBpcGUpOworCQlEUk1fREVWX0VSUk9SKCJbJXVdbm8gdmFsaWQgZm9ybWF0cyBmb3IgcGxh bmVcbiIsIHBpcGUpOwogCQlnb3RvIGNsZWFuX3NzcHA7CiAJfQogCkBAIC0xOTM5LDcgKzE5Mzks NyBAQCBzdHJ1Y3QgZHJtX3BsYW5lICpkcHVfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogCiAJcmV0ID0gZHJtX3BsYW5lX2NyZWF0ZV96cG9zX3Byb3BlcnR5KHBsYW5lLCAwLCAw LCB6cG9zX21heCk7CiAJaWYgKHJldCkKLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gaW5zdGFsbCB6 cG9zIHByb3BlcnR5LCByYyA9ICVkXG4iLCByZXQpOworCQlEUk1fREVWX0VSUk9SKCJmYWlsZWQg dG8gaW5zdGFsbCB6cG9zIHByb3BlcnR5LCByYyA9ICVkXG4iLCByZXQpOwogCiAJLyogc3VjY2Vz cyEgZmluYWxpemUgaW5pdGlhbGl6YXRpb24gKi8KIAlkcm1fcGxhbmVfaGVscGVyX2FkZChwbGFu ZSwgJmRwdV9wbGFuZV9oZWxwZXJfZnVuY3MpOwpAQCAtMTk0OSw3ICsxOTQ5LDcgQEAgc3RydWN0 IGRybV9wbGFuZSAqZHB1X3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCW11 dGV4X2luaXQoJnBkcHUtPmxvY2spOwogCi0JRFBVX0RFQlVHKCIlcyBjcmVhdGVkIGZvciBwaXBl OiV1IGlkOiV1IHZpcnR1YWw6JXVcbiIsIHBkcHUtPnBpcGVfbmFtZSwKKwlEUk1fREVWX0RFQlVH KCIlcyBjcmVhdGVkIGZvciBwaXBlOiV1IGlkOiV1IHZpcnR1YWw6JXVcbiIsIHBkcHUtPnBpcGVf bmFtZSwKIAkJCQkJcGlwZSwgcGxhbmUtPmJhc2UuaWQsIG1hc3Rlcl9wbGFuZV9pZCk7CiAJcmV0 dXJuIHBsYW5lOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfcm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCmluZGV4IDEz YzBhMzYuLmYxZDBmOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9ybS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCkBA IC0xMTksNyArMTE5LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9ybV9wcmludF9yc3ZwcygKIAlzdHJ1 Y3QgZHB1X3JtX2h3X2JsayAqYmxrOwogCWVudW0gZHB1X2h3X2Jsa190eXBlIHR5cGU7CiAKLQlE UFVfREVCVUcoIiVkXG4iLCBzdGFnZSk7CisJRFJNX0RFVl9ERUJVRygiJWRcbiIsIHN0YWdlKTsK IAogCWxpc3RfZm9yX2VhY2hfZW50cnkocnN2cCwgJnJtLT5yc3ZwcywgbGlzdCkgewogCQlEUk1f REVCVUdfS01TKCIlZCByc3ZwW3MldWUldV0gdG9wb2xvZ3kgJWRcbiIsIHN0YWdlLCByc3ZwLT5z ZXEsCkBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGljIGJvb2wgX2RwdV9ybV9nZXRfaHdfbG9ja2Vk KHN0cnVjdCBkcHVfcm0gKnJtLCBzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgKmkpCiAJc3RydWN0IGxp c3RfaGVhZCAqYmxrX2xpc3Q7CiAKIAlpZiAoIXJtIHx8ICFpIHx8IGktPnR5cGUgPj0gRFBVX0hX X0JMS19NQVgpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHJtXG4iKTsKKwkJRFJNX0RFVl9FUlJP UigiaW52YWxpZCBybVxuIik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTE4MSw3ICsxODEs NyBAQCBzdGF0aWMgYm9vbCBfZHB1X3JtX2dldF9od19sb2NrZWQoc3RydWN0IGRwdV9ybSAqcm0s IHN0cnVjdCBkcHVfcm1faHdfaXRlciAqaSkKIAlibGtfbGlzdCA9ICZybS0+aHdfYmxrc1tpLT50 eXBlXTsKIAogCWlmIChpLT5ibGsgJiYgKCZpLT5ibGstPmxpc3QgPT0gYmxrX2xpc3QpKSB7Ci0J CURQVV9ERUJVRygiYXR0ZW1wdCByZXN1bWUgaXRlcmF0aW9uIHBhc3QgbGFzdFxuIik7CisJCURS TV9ERVZfREVCVUcoImF0dGVtcHQgcmVzdW1lIGl0ZXJhdGlvbiBwYXN0IGxhc3RcbiIpOwogCQly ZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0xOTEsMjAgKzE5MSwyMCBAQCBzdGF0aWMgYm9vbCBfZHB1 X3JtX2dldF9od19sb2NrZWQoc3RydWN0IGRwdV9ybSAqcm0sIHN0cnVjdCBkcHVfcm1faHdfaXRl ciAqaSkKIAkJc3RydWN0IGRwdV9ybV9yc3ZwICpyc3ZwID0gaS0+YmxrLT5yc3ZwOwogCiAJCWlm IChpLT5ibGstPnR5cGUgIT0gaS0+dHlwZSkgewotCQkJRFBVX0VSUk9SKCJmb3VuZCBpbmNvcnJl Y3QgYmxvY2sgdHlwZSAlZCBvbiAlZCBsaXN0XG4iLAorCQkJRFJNX0RFVl9FUlJPUigiZm91bmQg aW5jb3JyZWN0IGJsb2NrIHR5cGUgJWQgb24gJWQgbGlzdFxuIiwKIAkJCQkJaS0+YmxrLT50eXBl LCBpLT50eXBlKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCiAJCWlmICgoaS0+ZW5jX2lkID09 IDApIHx8IChyc3ZwICYmIHJzdnAtPmVuY19pZCA9PSBpLT5lbmNfaWQpKSB7CiAJCQlpLT5odyA9 IGktPmJsay0+aHc7Ci0JCQlEUFVfREVCVUcoImZvdW5kIHR5cGUgJWQgaWQgJWQgZm9yIGVuYyAl ZFxuIiwKKwkJCURSTV9ERVZfREVCVUcoImZvdW5kIHR5cGUgJWQgaWQgJWQgZm9yIGVuYyAlZFxu IiwKIAkJCQkJaS0+dHlwZSwgaS0+YmxrLT5pZCwgaS0+ZW5jX2lkKTsKIAkJCXJldHVybiB0cnVl OwogCQl9CiAJfQogCi0JRFBVX0RFQlVHKCJubyBtYXRjaCwgdHlwZSAlZCBmb3IgZW5jICVkXG4i LCBpLT50eXBlLCBpLT5lbmNfaWQpOworCURSTV9ERVZfREVCVUcoIm5vIG1hdGNoLCB0eXBlICVk IGZvciBlbmMgJWRcbiIsIGktPnR5cGUsIGktPmVuY19pZCk7CiAKIAlyZXR1cm4gZmFsc2U7CiB9 CkBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9ybV9od19kZXN0cm95KGVudW0g ZHB1X2h3X2Jsa190eXBlIHR5cGUsIHZvaWQgKmh3KQogCQkvKiBUb3AgaXMgYSBzaW5nbGV0b24s IG5vdCBtYW5hZ2VkIGluIGh3X2Jsa3MgbGlzdCAqLwogCWNhc2UgRFBVX0hXX0JMS19NQVg6CiAJ ZGVmYXVsdDoKLQkJRFBVX0VSUk9SKCJ1bnN1cHBvcnRlZCBibG9jayB0eXBlICVkXG4iLCB0eXBl KTsKKwkJRFJNX0RFVl9FUlJPUigidW5zdXBwb3J0ZWQgYmxvY2sgdHlwZSAlZFxuIiwgdHlwZSk7 CiAJCWJyZWFrOwogCX0KIH0KQEAgLTI1Nyw3ICsyNTcsNyBAQCBpbnQgZHB1X3JtX2Rlc3Ryb3ko c3RydWN0IGRwdV9ybSAqcm0pCiAJZW51bSBkcHVfaHdfYmxrX3R5cGUgdHlwZTsKIAogCWlmICgh cm0pIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHJtXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiaW52 YWxpZCBybVxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtMzIwLDEyICszMjAsMTIg QEAgc3RhdGljIGludCBfZHB1X3JtX2h3X2Jsa19jcmVhdGUoCiAJCS8qIFRvcCBpcyBhIHNpbmds ZXRvbiwgbm90IG1hbmFnZWQgaW4gaHdfYmxrcyBsaXN0ICovCiAJY2FzZSBEUFVfSFdfQkxLX01B WDoKIAlkZWZhdWx0OgotCQlEUFVfRVJST1IoInVuc3VwcG9ydGVkIGJsb2NrIHR5cGUgJWRcbiIs IHR5cGUpOworCQlEUk1fREVWX0VSUk9SKCJ1bnN1cHBvcnRlZCBibG9jayB0eXBlICVkXG4iLCB0 eXBlKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiAJaWYgKElTX0VSUl9PUl9OVUxMKGh3KSkg ewotCQlEUFVfRVJST1IoImZhaWxlZCBodyBvYmplY3QgY3JlYXRpb246IHR5cGUgJWQsIGVyciAl bGRcbiIsCisJCURSTV9ERVZfRVJST1IoImZhaWxlZCBodyBvYmplY3QgY3JlYXRpb246IHR5cGUg JWQsIGVyciAlbGRcbiIsCiAJCQkJdHlwZSwgUFRSX0VSUihodykpOwogCQlyZXR1cm4gLUVGQVVM VDsKIAl9CkBAIC0zNTMsNyArMzUzLDcgQEAgaW50IGRwdV9ybV9pbml0KHN0cnVjdCBkcHVfcm0g KnJtLAogCWVudW0gZHB1X2h3X2Jsa190eXBlIHR5cGU7CiAKIAlpZiAoIXJtIHx8ICFjYXQgfHwg IW1taW8gfHwgIWRldikgewotCQlEUFVfRVJST1IoImludmFsaWQga21zXG4iKTsKKwkJRFJNX0RF Vl9FUlJPUigiaW52YWxpZCBrbXNcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTM3 Myw3ICszNzMsNyBAQCBpbnQgZHB1X3JtX2luaXQoc3RydWN0IGRwdV9ybSAqcm0sCiAJaWYgKElT X0VSUl9PUl9OVUxMKHJtLT5od19tZHApKSB7CiAJCXJjID0gUFRSX0VSUihybS0+aHdfbWRwKTsK IAkJcm0tPmh3X21kcCA9IE5VTEw7Ci0JCURQVV9FUlJPUigiZmFpbGVkOiBtZHAgaHcgbm90IGF2 YWlsYWJsZVxuIik7CisJCURSTV9ERVZfRVJST1IoImZhaWxlZDogbWRwIGh3IG5vdCBhdmFpbGFi bGVcbiIpOwogCQlnb3RvIGZhaWw7CiAJfQogCkBAIC0zODIsMTQgKzM4MiwxNCBAQCBpbnQgZHB1 X3JtX2luaXQoc3RydWN0IGRwdV9ybSAqcm0sCiAJCXN0cnVjdCBkcHVfbG1fY2ZnICpsbSA9ICZj YXQtPm1peGVyW2ldOwogCiAJCWlmIChsbS0+cGluZ3BvbmcgPT0gUElOR1BPTkdfTUFYKSB7Ci0J CQlEUFVfREVCVUcoInNraXAgbWl4ZXIgJWQgd2l0aG91dCBwaW5ncG9uZ1xuIiwgbG0tPmlkKTsK KwkJCURSTV9ERVZfREVCVUcoInNraXAgbWl4ZXIgJWQgd2l0aG91dCBwaW5ncG9uZ1xuIiwgbG0t PmlkKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKIAkJcmMgPSBfZHB1X3JtX2h3X2Jsa19jcmVhdGUo cm0sIGNhdCwgbW1pbywgRFBVX0hXX0JMS19MTSwKIAkJCQljYXQtPm1peGVyW2ldLmlkLCAmY2F0 LT5taXhlcltpXSk7CiAJCWlmIChyYykgewotCQkJRFBVX0VSUk9SKCJmYWlsZWQ6IGxtIGh3IG5v dCBhdmFpbGFibGVcbiIpOworCQkJRFJNX0RFVl9FUlJPUigiZmFpbGVkOiBsbSBodyBub3QgYXZh aWxhYmxlXG4iKTsKIAkJCWdvdG8gZmFpbDsKIAkJfQogCkBAIC00MDAsNyArNDAwLDcgQEAgaW50 IGRwdV9ybV9pbml0KHN0cnVjdCBkcHVfcm0gKnJtLAogCQkJICogRG9uJ3QgZXhwZWN0IHRvIGhh dmUgaHcgd2hlcmUgbG0gbWF4IHdpZHRocyBkaWZmZXIuCiAJCQkgKiBJZiBmb3VuZCwgdGFrZSB0 aGUgbWluLgogCQkJICovCi0JCQlEUFVfRVJST1IoInVuc3VwcG9ydGVkOiBsbSBtYXh3aWR0aCBk aWZmZXJzXG4iKTsKKwkJCURSTV9ERVZfRVJST1IoInVuc3VwcG9ydGVkOiBsbSBtYXh3aWR0aCBk aWZmZXJzXG4iKTsKIAkJCWlmIChybS0+bG1fbWF4X3dpZHRoID4gbG0tPnNibGstPm1heHdpZHRo KQogCQkJCXJtLT5sbV9tYXhfd2lkdGggPSBsbS0+c2Jsay0+bWF4d2lkdGg7CiAJCX0KQEAgLTQx MCwyMSArNDEwLDIxIEBAIGludCBkcHVfcm1faW5pdChzdHJ1Y3QgZHB1X3JtICpybSwKIAkJcmMg PSBfZHB1X3JtX2h3X2Jsa19jcmVhdGUocm0sIGNhdCwgbW1pbywgRFBVX0hXX0JMS19QSU5HUE9O RywKIAkJCQljYXQtPnBpbmdwb25nW2ldLmlkLCAmY2F0LT5waW5ncG9uZ1tpXSk7CiAJCWlmIChy YykgewotCQkJRFBVX0VSUk9SKCJmYWlsZWQ6IHBwIGh3IG5vdCBhdmFpbGFibGVcbiIpOworCQkJ RFJNX0RFVl9FUlJPUigiZmFpbGVkOiBwcCBodyBub3QgYXZhaWxhYmxlXG4iKTsKIAkJCWdvdG8g ZmFpbDsKIAkJfQogCX0KIAogCWZvciAoaSA9IDA7IGkgPCBjYXQtPmludGZfY291bnQ7IGkrKykg ewogCQlpZiAoY2F0LT5pbnRmW2ldLnR5cGUgPT0gSU5URl9OT05FKSB7Ci0JCQlEUFVfREVCVUco InNraXAgaW50ZiAlZCB3aXRoIHR5cGUgbm9uZVxuIiwgaSk7CisJCQlEUk1fREVWX0RFQlVHKCJz a2lwIGludGYgJWQgd2l0aCB0eXBlIG5vbmVcbiIsIGkpOwogCQkJY29udGludWU7CiAJCX0KIAog CQlyYyA9IF9kcHVfcm1faHdfYmxrX2NyZWF0ZShybSwgY2F0LCBtbWlvLCBEUFVfSFdfQkxLX0lO VEYsCiAJCQkJY2F0LT5pbnRmW2ldLmlkLCAmY2F0LT5pbnRmW2ldKTsKIAkJaWYgKHJjKSB7Ci0J CQlEUFVfRVJST1IoImZhaWxlZDogaW50ZiBodyBub3QgYXZhaWxhYmxlXG4iKTsKKwkJCURSTV9E RVZfRVJST1IoImZhaWxlZDogaW50ZiBodyBub3QgYXZhaWxhYmxlXG4iKTsKIAkJCWdvdG8gZmFp bDsKIAkJfQogCX0KQEAgLTQzMyw3ICs0MzMsNyBAQCBpbnQgZHB1X3JtX2luaXQoc3RydWN0IGRw dV9ybSAqcm0sCiAJCXJjID0gX2RwdV9ybV9od19ibGtfY3JlYXRlKHJtLCBjYXQsIG1taW8sIERQ VV9IV19CTEtfQ1RMLAogCQkJCWNhdC0+Y3RsW2ldLmlkLCAmY2F0LT5jdGxbaV0pOwogCQlpZiAo cmMpIHsKLQkJCURQVV9FUlJPUigiZmFpbGVkOiBjdGwgaHcgbm90IGF2YWlsYWJsZVxuIik7CisJ CQlEUk1fREVWX0VSUk9SKCJmYWlsZWQ6IGN0bCBodyBub3QgYXZhaWxhYmxlXG4iKTsKIAkJCWdv dG8gZmFpbDsKIAkJfQogCX0KQEAgLTQ0Miw3ICs0NDIsNyBAQCBpbnQgZHB1X3JtX2luaXQoc3Ry dWN0IGRwdV9ybSAqcm0sCiAJCXJjID0gX2RwdV9ybV9od19ibGtfY3JlYXRlKHJtLCBjYXQsIG1t aW8sIERQVV9IV19CTEtfQ0RNLAogCQkJCWNhdC0+Y2RtW2ldLmlkLCAmY2F0LT5jZG1baV0pOwog CQlpZiAocmMpIHsKLQkJCURQVV9FUlJPUigiZmFpbGVkOiBjZG0gaHcgbm90IGF2YWlsYWJsZVxu Iik7CisJCQlEUk1fREVWX0VSUk9SKCJmYWlsZWQ6IGNkbSBodyBub3QgYXZhaWxhYmxlXG4iKTsK IAkJCWdvdG8gZmFpbDsKIAkJfQogCX0KQEAgLTQ4Myw3ICs0ODMsNyBAQCBzdGF0aWMgYm9vbCBf ZHB1X3JtX2NoZWNrX2xtX2FuZF9nZXRfY29ubmVjdGVkX2Jsa3MoCiAKIAkqcHAgPSBOVUxMOwog Ci0JRFBVX0RFQlVHKCJjaGVjayBsbSAlZCBwcCAlZFxuIiwKKwlEUk1fREVWX0RFQlVHKCJjaGVj ayBsbSAlZCBwcCAlZFxuIiwKIAkJCSAgIGxtX2NmZy0+aWQsIGxtX2NmZy0+cGluZ3BvbmcpOwog CiAJLyogQ2hlY2sgaWYgdGhpcyBsYXllciBtaXhlciBpcyBhIHBlZXIgb2YgdGhlIHByb3Bvc2Vk IHByaW1hcnkgTE0gKi8KQEAgLTQ5Miw3ICs0OTIsNyBAQCBzdGF0aWMgYm9vbCBfZHB1X3JtX2No ZWNrX2xtX2FuZF9nZXRfY29ubmVjdGVkX2Jsa3MoCiAJCQkJdG9fZHB1X2h3X21peGVyKHByaW1h cnlfbG0tPmh3KS0+Y2FwOwogCiAJCWlmICghdGVzdF9iaXQobG1fY2ZnLT5pZCwgJnByaW1fbG1f Y2ZnLT5sbV9wYWlyX21hc2spKSB7Ci0JCQlEUFVfREVCVUcoImxtICVkIG5vdCBwZWVyIG9mIGxt ICVkXG4iLCBsbV9jZmctPmlkLAorCQkJRFJNX0RFVl9ERUJVRygibG0gJWQgbm90IHBlZXIgb2Yg bG0gJWRcbiIsIGxtX2NmZy0+aWQsCiAJCQkJCXByaW1fbG1fY2ZnLT5pZCk7CiAJCQlyZXR1cm4g ZmFsc2U7CiAJCX0KQEAgLTUwMCw3ICs1MDAsNyBAQCBzdGF0aWMgYm9vbCBfZHB1X3JtX2NoZWNr X2xtX2FuZF9nZXRfY29ubmVjdGVkX2Jsa3MoCiAKIAkvKiBBbHJlYWR5IHJlc2VydmVkPyAqLwog CWlmIChSRVNFUlZFRF9CWV9PVEhFUihsbSwgcnN2cCkpIHsKLQkJRFBVX0RFQlVHKCJsbSAlZCBh bHJlYWR5IHJlc2VydmVkXG4iLCBsbV9jZmctPmlkKTsKKwkJRFJNX0RFVl9ERUJVRygibG0gJWQg YWxyZWFkeSByZXNlcnZlZFxuIiwgbG1fY2ZnLT5pZCk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAK QEAgLTUxMywxMiArNTEzLDEyIEBAIHN0YXRpYyBib29sIF9kcHVfcm1fY2hlY2tfbG1fYW5kX2dl dF9jb25uZWN0ZWRfYmxrcygKIAl9CiAKIAlpZiAoISpwcCkgewotCQlEUFVfRVJST1IoImZhaWxl ZCB0byBnZXQgcHAgb24gbG0gJWRcbiIsIGxtX2NmZy0+cGluZ3BvbmcpOworCQlEUk1fREVWX0VS Uk9SKCJmYWlsZWQgdG8gZ2V0IHBwIG9uIGxtICVkXG4iLCBsbV9jZmctPnBpbmdwb25nKTsKIAkJ cmV0dXJuIGZhbHNlOwogCX0KIAogCWlmIChSRVNFUlZFRF9CWV9PVEhFUigqcHAsIHJzdnApKSB7 Ci0JCURQVV9ERUJVRygibG0gJWQgcHAgJWQgYWxyZWFkeSByZXNlcnZlZFxuIiwgbG0tPmlkLAor CQlEUk1fREVWX0RFQlVHKCJsbSAlZCBwcCAlZCBhbHJlYWR5IHJlc2VydmVkXG4iLCBsbS0+aWQs CiAJCQkJKCpwcCktPmlkKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KQEAgLTUzOSw3ICs1MzksNyBA QCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9sbXMoCiAJaW50IGksIHJjID0gMDsKIAogCWlm ICghcmVxcy0+dG9wb2xvZ3ktPm51bV9sbSkgewotCQlEUFVfRVJST1IoImludmFsaWQgbnVtYmVy IG9mIGxtOiAlZFxuIiwgcmVxcy0+dG9wb2xvZ3ktPm51bV9sbSk7CisJCURSTV9ERVZfRVJST1Io ImludmFsaWQgbnVtYmVyIG9mIGxtOiAlZFxuIiwgcmVxcy0+dG9wb2xvZ3ktPm51bV9sbSk7CiAJ CXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNTc5LDcgKzU3OSw3IEBAIHN0YXRpYyBpbnQgX2Rw dV9ybV9yZXNlcnZlX2xtcygKIAl9CiAKIAlpZiAobG1fY291bnQgIT0gcmVxcy0+dG9wb2xvZ3kt Pm51bV9sbSkgewotCQlEUFVfREVCVUcoInVuYWJsZSB0byBmaW5kIGFwcHJvcHJpYXRlIG1peGVy c1xuIik7CisJCURSTV9ERVZfREVCVUcoInVuYWJsZSB0byBmaW5kIGFwcHJvcHJpYXRlIG1peGVy c1xuIik7CiAJCXJldHVybiAtRU5BVkFJTDsKIAl9CiAKQEAgLTYxOSwxMyArNjE5LDEzIEBAIHN0 YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2N0bHMoCiAKIAkJaGFzX3NwbGl0X2Rpc3BsYXkgPSBC SVQoRFBVX0NUTF9TUExJVF9ESVNQTEFZKSAmIGZlYXR1cmVzOwogCi0JCURQVV9ERUJVRygiY3Rs ICVkIGNhcHMgMHglbFhcbiIsIGl0ZXIuYmxrLT5pZCwgZmVhdHVyZXMpOworCQlEUk1fREVWX0RF QlVHKCJjdGwgJWQgY2FwcyAweCVsWFxuIiwgaXRlci5ibGstPmlkLCBmZWF0dXJlcyk7CiAKIAkJ aWYgKHRvcC0+bmVlZHNfc3BsaXRfZGlzcGxheSAhPSBoYXNfc3BsaXRfZGlzcGxheSkKIAkJCWNv bnRpbnVlOwogCiAJCWN0bHNbaV0gPSBpdGVyLmJsazsKLQkJRFBVX0RFQlVHKCJjdGwgJWQgbWF0 Y2hcbiIsIGl0ZXIuYmxrLT5pZCk7CisJCURSTV9ERVZfREVCVUcoImN0bCAlZCBtYXRjaFxuIiwg aXRlci5ibGstPmlkKTsKIAogCQlpZiAoKytpID09IHRvcC0+bnVtX2N0bCkKIAkJCWJyZWFrOwpA QCAtNjc5LDcgKzY3OSw3IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2NkbSgKIAl9CiAK IAlpZiAoIWl0ZXIuaHcpIHsKLQkJRFBVX0VSUk9SKCJjb3VsZG4ndCByZXNlcnZlIGNkbSBmb3Ig dHlwZSAlZCBpZCAlZFxuIiwgdHlwZSwgaWQpOworCQlEUk1fREVWX0VSUk9SKCJjb3VsZG4ndCBy ZXNlcnZlIGNkbSBmb3IgdHlwZSAlZCBpZCAlZFxuIiwgdHlwZSwgaWQpOwogCQlyZXR1cm4gLUVO QVZBSUw7CiAJfQogCkBAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2Vy dmVfaW50ZigKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChSRVNFUlZFRF9CWV9PVEhFUihpdGVyLmJs aywgcnN2cCkpIHsKLQkJCURQVV9FUlJPUigidHlwZSAlZCBpZCAlZCBhbHJlYWR5IHJlc2VydmVk XG4iLCB0eXBlLCBpZCk7CisJCQlEUk1fREVWX0VSUk9SKCJ0eXBlICVkIGlkICVkIGFscmVhZHkg cmVzZXJ2ZWRcbiIsIHR5cGUsIGlkKTsKIAkJCXJldHVybiAtRU5BVkFJTDsKIAkJfQogCkBAIC03 MTUsNyArNzE1LDcgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50ZigKIAogCS8qIFNo b3VsZG4ndCBoYXBwZW4gc2luY2UgaW50ZnMgYXJlIGZpeGVkIGF0IHByb2JlICovCiAJaWYgKCFp dGVyLmh3KSB7Ci0JCURQVV9FUlJPUigiY291bGRuJ3QgZmluZCB0eXBlICVkIGlkICVkXG4iLCB0 eXBlLCBpZCk7CisJCURSTV9ERVZfRVJST1IoImNvdWxkbid0IGZpbmQgdHlwZSAlZCBpZCAlZFxu IiwgdHlwZSwgaWQpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKQEAgLTc2NSw3ICs3NjUsNyBA QCBzdGF0aWMgaW50IF9kcHVfcm1fbWFrZV9uZXh0X3JzdnAoCiAKIAlyZXQgPSBfZHB1X3JtX3Jl c2VydmVfbG1zKHJtLCByc3ZwLCByZXFzKTsKIAlpZiAocmV0KSB7Ci0JCURQVV9FUlJPUigidW5h YmxlIHRvIGZpbmQgYXBwcm9wcmlhdGUgbWl4ZXJzXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigidW5h YmxlIHRvIGZpbmQgYXBwcm9wcmlhdGUgbWl4ZXJzXG4iKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAK QEAgLTc4MSw3ICs3ODEsNyBAQCBzdGF0aWMgaW50IF9kcHVfcm1fbWFrZV9uZXh0X3JzdnAoCiAJ CV9kcHVfcm1fcmVzZXJ2ZV9jdGxzKHJtLCByc3ZwLCAmdG9wb2xvZ3kpOwogCX0KIAlpZiAocmV0 KSB7Ci0JCURQVV9FUlJPUigidW5hYmxlIHRvIGZpbmQgYXBwcm9wcmlhdGUgQ1RMXG4iKTsKKwkJ RFJNX0RFVl9FUlJPUigidW5hYmxlIHRvIGZpbmQgYXBwcm9wcmlhdGUgQ1RMXG4iKTsKIAkJcmV0 dXJuIHJldDsKIAl9CiAKQEAgLTgxNiw3ICs4MTYsNyBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcG9w dWxhdGVfcmVxdWlyZW1lbnRzKAogCX0KIAogCWlmICghcmVxcy0+dG9wb2xvZ3kpIHsKLQkJRFBV X0VSUk9SKCJpbnZhbGlkIHRvcG9sb2d5IGZvciB0aGUgZGlzcGxheVxuIik7CisJCURSTV9ERVZf RVJST1IoImludmFsaWQgdG9wb2xvZ3kgZm9yIHRoZSBkaXNwbGF5XG4iKTsKIAkJcmV0dXJuIC1F SU5WQUw7CiAJfQogCkBAIC04NDYsNyArODQ2LDcgQEAgc3RhdGljIHN0cnVjdCBkcHVfcm1fcnN2 cCAqX2RwdV9ybV9nZXRfcnN2cCgKIAlzdHJ1Y3QgZHB1X3JtX3JzdnAgKmk7CiAKIAlpZiAoIXJt IHx8ICFlbmMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFtc1xuIik7CisJCURSTV9ERVZf RVJST1IoImludmFsaWQgcGFyYW1zXG4iKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC04OTEs NyArODkxLDcgQEAgc3RhdGljIHZvaWQgX2RwdV9ybV9yZWxlYXNlX3JzdnAoCiAJaWYgKCFyc3Zw KQogCQlyZXR1cm47CiAKLQlEUFVfREVCVUcoInJlbCByc3ZwICVkIGVuYyAlZFxuIiwgcnN2cC0+ c2VxLCByc3ZwLT5lbmNfaWQpOworCURSTV9ERVZfREVCVUcoInJlbCByc3ZwICVkIGVuYyAlZFxu IiwgcnN2cC0+c2VxLCByc3ZwLT5lbmNfaWQpOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZl KHJzdnBfYywgcnN2cF9uLCAmcm0tPnJzdnBzLCBsaXN0KSB7CiAJCWlmIChyc3ZwID09IHJzdnBf YykgewpAQCAtOTA0LDEzICs5MDQsMTMgQEAgc3RhdGljIHZvaWQgX2RwdV9ybV9yZWxlYXNlX3Jz dnAoCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoYmxrLCAmcm0tPmh3X2Jsa3NbdHlwZV0sIGxpc3Qp IHsKIAkJCWlmIChibGstPnJzdnAgPT0gcnN2cCkgewogCQkJCWJsay0+cnN2cCA9IE5VTEw7Ci0J CQkJRFBVX0RFQlVHKCJyZWwgcnN2cCAlZCBlbmMgJWQgJWQgJWRcbiIsCisJCQkJRFJNX0RFVl9E RUJVRygicmVsIHJzdnAgJWQgZW5jICVkICVkICVkXG4iLAogCQkJCQkJcnN2cC0+c2VxLCByc3Zw LT5lbmNfaWQsCiAJCQkJCQlibGstPnR5cGUsIGJsay0+aWQpOwogCQkJfQogCQkJaWYgKGJsay0+ cnN2cF9ueHQgPT0gcnN2cCkgewogCQkJCWJsay0+cnN2cF9ueHQgPSBOVUxMOwotCQkJCURQVV9E RUJVRygicmVsIHJzdnBfbnh0ICVkIGVuYyAlZCAlZCAlZFxuIiwKKwkJCQlEUk1fREVWX0RFQlVH KCJyZWwgcnN2cF9ueHQgJWQgZW5jICVkICVkICVkXG4iLAogCQkJCQkJcnN2cC0+c2VxLCByc3Zw LT5lbmNfaWQsCiAJCQkJCQlibGstPnR5cGUsIGJsay0+aWQpOwogCQkJfQpAQCAtOTI2LDcgKzky Niw3IEBAIHZvaWQgZHB1X3JtX3JlbGVhc2Uoc3RydWN0IGRwdV9ybSAqcm0sIHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jKQogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwogCiAJaWYgKCFybSB8 fCAhZW5jKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbXNcbiIpOworCQlEUk1fREVWX0VS Uk9SKCJpbnZhbGlkIHBhcmFtc1xuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTkzNCwxMyArOTM0 LDEzIEBAIHZvaWQgZHB1X3JtX3JlbGVhc2Uoc3RydWN0IGRwdV9ybSAqcm0sIHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jKQogCiAJcnN2cCA9IF9kcHVfcm1fZ2V0X3JzdnAocm0sIGVuYyk7CiAJaWYg KCFyc3ZwKSB7Ci0JCURQVV9FUlJPUigiZmFpbGVkIHRvIGZpbmQgcnN2cCBmb3IgZW5jICVkXG4i LCBlbmMtPmJhc2UuaWQpOworCQlEUk1fREVWX0VSUk9SKCJmYWlsZWQgdG8gZmluZCByc3ZwIGZv ciBlbmMgJWRcbiIsIGVuYy0+YmFzZS5pZCk7CiAJCWdvdG8gZW5kOwogCX0KIAogCWNvbm4gPSBf ZHB1X3JtX2dldF9jb25uZWN0b3IoZW5jKTsKIAlpZiAoIWNvbm4pIHsKLQkJRFBVX0VSUk9SKCJm YWlsZWQgdG8gZ2V0IGNvbm5lY3RvciBmb3IgZW5jICVkXG4iLCBlbmMtPmJhc2UuaWQpOworCQlE Uk1fREVWX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGNvbm5lY3RvciBmb3IgZW5jICVkXG4iLCBlbmMt PmJhc2UuaWQpOwogCQlnb3RvIGVuZDsKIAl9CiAKQEAgLTk4OCw3ICs5ODgsNyBAQCBpbnQgZHB1 X3JtX3Jlc2VydmUoCiAJaW50IHJldDsKIAogCWlmICghcm0gfHwgIWVuYyB8fCAhY3J0Y19zdGF0 ZSB8fCAhY29ubl9zdGF0ZSkgewotCQlEUFVfRVJST1IoImludmFsaWQgYXJndW1lbnRzXG4iKTsK KwkJRFJNX0RFVl9FUlJPUigiaW52YWxpZCBhcmd1bWVudHNcbiIpOwogCQlyZXR1cm4gLUVJTlZB TDsKIAl9CiAKQEAgLTEwMDcsNyArMTAwNyw3IEBAIGludCBkcHVfcm1fcmVzZXJ2ZSgKIAlyZXQg PSBfZHB1X3JtX3BvcHVsYXRlX3JlcXVpcmVtZW50cyhybSwgZW5jLCBjcnRjX3N0YXRlLAogCQkJ Y29ubl9zdGF0ZSwgJnJlcXMsIHRvcG9sb2d5KTsKIAlpZiAocmV0KSB7Ci0JCURQVV9FUlJPUigi ZmFpbGVkIHRvIHBvcHVsYXRlIGh3IHJlcXVpcmVtZW50c1xuIik7CisJCURSTV9ERVZfRVJST1Io ImZhaWxlZCB0byBwb3B1bGF0ZSBodyByZXF1aXJlbWVudHNcbiIpOwogCQlnb3RvIGVuZDsKIAl9 CiAKQEAgLTEwMzUsNyArMTAzNSw3IEBAIGludCBkcHVfcm1fcmVzZXJ2ZSgKIAkgKiBhdG9taWNf Y2hlY2sgcGhhc2UgYnkgdXNpbmcgdGhpcyBDTEVBUiBiaXQKIAkgKi8KIAlpZiAocnN2cF9jdXIg JiYgdGVzdF9vbmx5ICYmIFJNX1JRX0NMRUFSKCZyZXFzKSkgewotCQlEUFVfREVCVUcoInRlc3Rf b25seSAmIENMRUFSOiBjbGVhciByc3ZwW3MlZGUlZF1cbiIsCisJCURSTV9ERVZfREVCVUcoInRl c3Rfb25seSAmIENMRUFSOiBjbGVhciByc3ZwW3MlZGUlZF1cbiIsCiAJCQkJcnN2cF9jdXItPnNl cSwgcnN2cF9jdXItPmVuY19pZCk7CiAJCV9kcHVfcm1fcmVsZWFzZV9yc3ZwKHJtLCByc3ZwX2N1 ciwgY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKIAkJcnN2cF9jdXIgPSBOVUxMOwpAQCAtMTA0OSw3 ICsxMDQ5LDcgQEAgaW50IGRwdV9ybV9yZXNlcnZlKAogCV9kcHVfcm1fcHJpbnRfcnN2cHMocm0s IERQVV9STV9TVEFHRV9BRlRFUl9SU1ZQTkVYVCk7CiAKIAlpZiAocmV0KSB7Ci0JCURQVV9FUlJP UigiZmFpbGVkIHRvIHJlc2VydmUgaHcgcmVzb3VyY2VzOiAlZFxuIiwgcmV0KTsKKwkJRFJNX0RF Vl9FUlJPUigiZmFpbGVkIHRvIHJlc2VydmUgaHcgcmVzb3VyY2VzOiAlZFxuIiwgcmV0KTsKIAkJ X2RwdV9ybV9yZWxlYXNlX3JzdnAocm0sIHJzdnBfbnh0LCBjb25uX3N0YXRlLT5jb25uZWN0b3Ip OwogCX0gZWxzZSBpZiAodGVzdF9vbmx5ICYmICFSTV9SUV9MT0NLKCZyZXFzKSkgewogCQkvKgpA QCAtMTA1NywxMiArMTA1NywxMiBAQCBpbnQgZHB1X3JtX3Jlc2VydmUoCiAJCSAqIEhvd2V2ZXIs IGlmIHRoZSB1c2VyIHJlcXVlc3RzIExPQ0ssIHRoZW4ga2VlcCB0aGUgcmVzZXJ2YXRpb24KIAkJ ICogbWFkZSBkdXJpbmcgdGhlIGF0b21pY19jaGVjayBwaGFzZS4KIAkJICovCi0JCURQVV9ERUJV RygidGVzdF9vbmx5OiBkaXNjYXJkIHRlc3QgcnN2cFtzJWRlJWRdXG4iLAorCQlEUk1fREVWX0RF QlVHKCJ0ZXN0X29ubHk6IGRpc2NhcmQgdGVzdCByc3ZwW3MlZGUlZF1cbiIsCiAJCQkJcnN2cF9u eHQtPnNlcSwgcnN2cF9ueHQtPmVuY19pZCk7CiAJCV9kcHVfcm1fcmVsZWFzZV9yc3ZwKHJtLCBy c3ZwX254dCwgY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKIAl9IGVsc2UgewogCQlpZiAodGVzdF9v bmx5ICYmIFJNX1JRX0xPQ0soJnJlcXMpKQotCQkJRFBVX0RFQlVHKCJ0ZXN0X29ubHkgJiBMT0NL OiBsb2NrIHJzdnBbcyVkZSVkXVxuIiwKKwkJCURSTV9ERVZfREVCVUcoInRlc3Rfb25seSAmIExP Q0s6IGxvY2sgcnN2cFtzJWRlJWRdXG4iLAogCQkJCQlyc3ZwX254dC0+c2VxLCByc3ZwX254dC0+ ZW5jX2lkKTsKIAogCQlfZHB1X3JtX3JlbGVhc2VfcnN2cChybSwgcnN2cF9jdXIsIGNvbm5fc3Rh dGUtPmNvbm5lY3Rvcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfdmJpZi5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3ZiaWYuYwpp bmRleCAyOTU1MjgyLi5hMjI0ODlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfdmJpZi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV92YmlmLmMKQEAgLTMxLDcgKzMxLDcgQEAgc3RhdGljIGludCBfZHB1X3ZiaWZfd2FpdF9mb3Jf eGluX2hhbHQoc3RydWN0IGRwdV9od192YmlmICp2YmlmLCB1MzIgeGluX2lkKQogCWludCByYzsK IAogCWlmICghdmJpZiB8fCAhdmJpZi0+Y2FwIHx8ICF2YmlmLT5vcHMuZ2V0X2hhbHRfY3RybCkg ewotCQlEUFVfRVJST1IoImludmFsaWQgYXJndW1lbnRzIHZiaWYgJWRcbiIsIHZiaWYgIT0gMCk7 CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgYXJndW1lbnRzIHZiaWYgJWRcbiIsIHZiaWYgIT0g MCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNDksMTEgKzQ5LDExIEBAIHN0YXRpYyBp bnQgX2RwdV92YmlmX3dhaXRfZm9yX3hpbl9oYWx0KHN0cnVjdCBkcHVfaHdfdmJpZiAqdmJpZiwg dTMyIHhpbl9pZCkKIAogCWlmICghc3RhdHVzKSB7CiAJCXJjID0gLUVUSU1FRE9VVDsKLQkJRFBV X0VSUk9SKCJWQklGICVkIGNsaWVudCAlZCBub3QgaGFsdGluZy4gVElNRURPVVQuXG4iLAorCQlE Uk1fREVWX0VSUk9SKCJWQklGICVkIGNsaWVudCAlZCBub3QgaGFsdGluZy4gVElNRURPVVQuXG4i LAogCQkJCXZiaWYtPmlkeCAtIFZCSUZfMCwgeGluX2lkKTsKIAl9IGVsc2UgewogCQlyYyA9IDA7 Ci0JCURQVV9ERUJVRygiVkJJRiAlZCBjbGllbnQgJWQgaXMgaGFsdGVkXG4iLAorCQlEUk1fREVW X0RFQlVHKCJWQklGICVkIGNsaWVudCAlZCBpcyBoYWx0ZWRcbiIsCiAJCQkJdmJpZi0+aWR4IC0g VkJJRl8wLCB4aW5faWQpOwogCX0KIApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBfZHB1 X3ZiaWZfYXBwbHlfZHluYW1pY19vdF9saW1pdChzdHJ1Y3QgZHB1X2h3X3ZiaWYgKnZiaWYsCiAJ CX0KIAl9CiAKLQlEUFVfREVCVUcoInZiaWY6JWQgeGluOiVkIHc6JWQgaDolZCBmcHM6JWQgcHBz OiVsbHUgb3Q6JXVcbiIsCisJRFJNX0RFVl9ERUJVRygidmJpZjolZCB4aW46JWQgdzolZCBoOiVk IGZwczolZCBwcHM6JWxsdSBvdDoldVxuIiwKIAkJCXZiaWYtPmlkeCAtIFZCSUZfMCwgcGFyYW1z LT54aW5faWQsCiAJCQlwYXJhbXMtPndpZHRoLCBwYXJhbXMtPmhlaWdodCwgcGFyYW1zLT5mcmFt ZV9yYXRlLAogCQkJcHBzLCAqb3RfbGltKTsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgdTMy IF9kcHVfdmJpZl9nZXRfb3RfbGltaXQoc3RydWN0IGRwdV9od192YmlmICp2YmlmLAogCXUzMiB2 YWw7CiAKIAlpZiAoIXZiaWYgfHwgIXZiaWYtPmNhcCkgewotCQlEUFVfRVJST1IoImludmFsaWQg YXJndW1lbnRzIHZiaWYgJWRcbiIsIHZiaWYgIT0gMCk7CisJCURSTV9ERVZfRVJST1IoImludmFs aWQgYXJndW1lbnRzIHZiaWYgJWRcbiIsIHZiaWYgIT0gMCk7CiAJCXJldHVybiAtRUlOVkFMOwog CX0KIApAQCAtMTQwLDcgKzE0MCw3IEBAIHN0YXRpYyB1MzIgX2RwdV92YmlmX2dldF9vdF9saW1p dChzdHJ1Y3QgZHB1X2h3X3ZiaWYgKnZiaWYsCiAJfQogCiBleGl0OgotCURQVV9ERUJVRygidmJp ZjolZCB4aW46JWQgb3RfbGltOiVkXG4iLAorCURSTV9ERVZfREVCVUcoInZiaWY6JWQgeGluOiVk IG90X2xpbTolZFxuIiwKIAkJCXZiaWYtPmlkeCAtIFZCSUZfMCwgcGFyYW1zLT54aW5faWQsIG90 X2xpbSk7CiAJcmV0dXJuIG90X2xpbTsKIH0KQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIGRwdV92 YmlmX3NldF9vdF9saW1pdChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcywKIAlpbnQgcmV0LCBpOwog CiAJaWYgKCFkcHVfa21zKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVudHNcbiIpOwor CQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50c1xuIik7CiAJCXJldHVybjsKIAl9CiAJ bWRwID0gZHB1X2ttcy0+aHdfbWRwOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgZHB1X3ZiaWZf c2V0X290X2xpbWl0KHN0cnVjdCBkcHVfa21zICpkcHVfa21zLAogCX0KIAogCWlmICghdmJpZiB8 fCAhbWRwKSB7Ci0JCURQVV9ERUJVRygiaW52YWxpZCBhcmd1bWVudHMgdmJpZiAlZCBtZHAgJWRc biIsCisJCURSTV9ERVZfREVCVUcoImludmFsaWQgYXJndW1lbnRzIHZiaWYgJWQgbWRwICVkXG4i LAogCQkJCXZiaWYgIT0gMCwgbWRwICE9IDApOwogCQlyZXR1cm47CiAJfQpAQCAtMjI0LDcgKzIy NCw3IEBAIHZvaWQgZHB1X3ZiaWZfc2V0X3Fvc19yZW1hcChzdHJ1Y3QgZHB1X2ttcyAqZHB1X2tt cywKIAlpbnQgaTsKIAogCWlmICghZHB1X2ttcyB8fCAhcGFyYW1zIHx8ICFkcHVfa21zLT5od19t ZHApIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50c1xuIik7CisJCURSTV9ERVZfRVJS T1IoImludmFsaWQgYXJndW1lbnRzXG4iKTsKIAkJcmV0dXJuOwogCX0KIAltZHAgPSBkcHVfa21z LT5od19tZHA7CkBAIC0yMzgsMTIgKzIzOCwxMiBAQCB2b2lkIGRwdV92YmlmX3NldF9xb3NfcmVt YXAoc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMsCiAJfQogCiAJaWYgKCF2YmlmIHx8ICF2YmlmLT5j YXApIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHZiaWYgJWRcbiIsIHBhcmFtcy0+dmJpZl9pZHgp OworCQlEUk1fREVWX0VSUk9SKCJpbnZhbGlkIHZiaWYgJWRcbiIsIHBhcmFtcy0+dmJpZl9pZHgp OwogCQlyZXR1cm47CiAJfQogCiAJaWYgKCF2YmlmLT5vcHMuc2V0X3Fvc19yZW1hcCB8fCAhbWRw LT5vcHMuc2V0dXBfY2xrX2ZvcmNlX2N0cmwpIHsKLQkJRFBVX0RFQlVHKCJxb3MgcmVtYXAgbm90 IHN1cHBvcnRlZFxuIik7CisJCURSTV9ERVZfREVCVUcoInFvcyByZW1hcCBub3Qgc3VwcG9ydGVk XG4iKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMjUxLDE0ICsyNTEsMTQgQEAgdm9pZCBkcHVfdmJp Zl9zZXRfcW9zX3JlbWFwKHN0cnVjdCBkcHVfa21zICpkcHVfa21zLAogCQkJJnZiaWYtPmNhcC0+ cW9zX25ydF90Ymw7CiAKIAlpZiAoIXFvc190YmwtPm5wcmlvcml0eV9sdmwgfHwgIXFvc190Ymwt PnByaW9yaXR5X2x2bCkgewotCQlEUFVfREVCVUcoInFvcyB0Ymwgbm90IGRlZmluZWRcbiIpOwor CQlEUk1fREVWX0RFQlVHKCJxb3MgdGJsIG5vdCBkZWZpbmVkXG4iKTsKIAkJcmV0dXJuOwogCX0K IAogCWZvcmNlZF9vbiA9IG1kcC0+b3BzLnNldHVwX2Nsa19mb3JjZV9jdHJsKG1kcCwgcGFyYW1z LT5jbGtfY3RybCwgdHJ1ZSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgcW9zX3RibC0+bnByaW9yaXR5 X2x2bDsgaSsrKSB7Ci0JCURQVV9ERUJVRygidmJpZjolZCB4aW46JWQgbHZsOiVkLyVkXG4iLAor CQlEUk1fREVWX0RFQlVHKCJ2YmlmOiVkIHhpbjolZCBsdmw6JWQvJWRcbiIsCiAJCQkJcGFyYW1z LT52YmlmX2lkeCwgcGFyYW1zLT54aW5faWQsIGksCiAJCQkJcW9zX3RibC0+cHJpb3JpdHlfbHZs W2ldKTsKIAkJdmJpZi0+b3BzLnNldF9xb3NfcmVtYXAodmJpZiwgcGFyYW1zLT54aW5faWQsIGks CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBkcHVfdmJpZl9jbGVhcl9lcnJvcnMoc3RydWN0IGRw dV9rbXMgKmRwdV9rbXMpCiAJdTMyIGksIHBuZCwgc3JjOwogCiAJaWYgKCFkcHVfa21zKSB7Ci0J CURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVudFxuIik7CisJCURSTV9ERVZfRVJST1IoImludmFs aWQgYXJndW1lbnRcbiIpOwogCQlyZXR1cm47CiAJfQogCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9p ZCBkcHVfdmJpZl9pbml0X21lbXR5cGVzKHN0cnVjdCBkcHVfa21zICpkcHVfa21zKQogCWludCBp LCBqOwogCiAJaWYgKCFkcHVfa21zKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVudFxu Iik7CisJCURSTV9ERVZfRVJST1IoImludmFsaWQgYXJndW1lbnRcbiIpOwogCQlyZXR1cm47CiAJ fQogCkBAIC0zMjYsNyArMzI2LDcgQEAgaW50IGRwdV9kZWJ1Z2ZzX3ZiaWZfaW5pdChzdHJ1Y3Qg ZHB1X2ttcyAqZHB1X2ttcywgc3RydWN0IGRlbnRyeSAqZGVidWdmc19yb290KQogCiAJZHB1X2tt cy0+ZGVidWdmc192YmlmID0gZGVidWdmc19jcmVhdGVfZGlyKCJ2YmlmIiwgZGVidWdmc19yb290 KTsKIAlpZiAoIWRwdV9rbXMtPmRlYnVnZnNfdmJpZikgewotCQlEUFVfRVJST1IoImZhaWxlZCB0 byBjcmVhdGUgdmJpZiBkZWJ1Z2ZzXG4iKTsKKwkJRFJNX0RFVl9FUlJPUigiZmFpbGVkIHRvIGNy ZWF0ZSB2YmlmIGRlYnVnZnNcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLS0gCjEuOS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK