From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7F4F8CD4F39 for ; Wed, 13 May 2026 07:54:36 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BAD8C10ED18; Wed, 13 May 2026 07:54:32 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; secure) header.d=usp.br header.i=@usp.br header.b="oZoUFa5H"; dkim-atps=neutral Received: from mail-dl1-f49.google.com (mail-dl1-f49.google.com [74.125.82.49]) by gabe.freedesktop.org (Postfix) with ESMTPS id A6CA710E5BE for ; Wed, 13 May 2026 05:39:03 +0000 (UTC) Received: by mail-dl1-f49.google.com with SMTP id a92af1059eb24-130c9dcbd25so5907929c88.1 for ; Tue, 12 May 2026 22:39:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=usp.br; s=usp-google; t=1778650743; x=1779255543; darn=lists.freedesktop.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LDfPvB2VvKBEamZ5srJwiejs/2SJBu7ohlrHv3HIdWo=; b=oZoUFa5HqPFY4lQ1ZNwXL0lsCpvuwUm8Bmxw3Bn03wqOAfaOoqeptQkv49oQBmOOlC fI5C+8e9kpuu8Hl3xK9Lns0DbC/kC627TVTaJiq+1NX6DAM8HEyPbaNHrsMakXpxUk7Q cTValYcdeinWzNK8mj0vHZDziB1s3Ls3gCaVGCllfKdBldFCM49noFhpUfbZ+GZ7TWcj myvdcAmaVSRSjsAjZeT7XeJF3uCiDYOcmEXQbuYgiQrbHSfq3e8wxFc1XYPPtm1dQi+1 5fE3oqE3rM4ALTd+tPvCbcw6XcxPo3a8YjgDjcVbxymH0HIEzf3yfsQ3ypFAjUDpREDj MpzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778650743; x=1779255543; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=LDfPvB2VvKBEamZ5srJwiejs/2SJBu7ohlrHv3HIdWo=; b=izcWmleQ5Lddqcg6bvELhcSj0ZHBXFtPyfLGtLXpXKtZiN3f+eUXmbutHGFGNhrqGb rPAEVecU6AVQ/5j0gGpoxPq6cchAae78O6DLBaR8M+sx1Ew9/jODHx8To9h4C0PbijhP ChFsfUN4zBzdIGkZ1nmmz7Ox2+JADiUrcwRwVQje+lfiarsZWbajxzEdUeVmprn0cXsd Z0f3ezhmlmcrKJJ8c9u9woWuMC6H4FQ9SUI56eGbV5Co0fz2F/K88vRmQzzfBo9CK2gl xOr9PmAjr8FZPTFlj7uy0NTn0aRRJrZVwt68RLKBiMZi1cA/1bOMd1vzWmn8h+wDKGf2 Xi/A== X-Forwarded-Encrypted: i=1; AFNElJ8lhkGhw+Up4hsTO43uiqaVfod5IqaCOCP6hfS26YXkYJj7nrktjmM/TAEoIx2Y6YmTQQzqPhuvrls=@lists.freedesktop.org X-Gm-Message-State: AOJu0YwBNeZgMutjpUT0TJAzS594yaiowfczZpulpKG1xD1/VSnp/3BP VXLfKDqygjG6C4D7KRcCNvc4m0SsXUDKa1Uyr36u/9Hj3my/arFBeo6/gxzj8HlrhMU= X-Gm-Gg: Acq92OG+3vMr89E4d7qQaC0bvT3WzJFcGLOXxsNjTmv/BhskASK71whSyrKnqgRqUF9 FIDzzb4x5kw0+4vFzKMEK3MyBjfdVwKueiShmO6NxIJ4sP4nb7wPzUgdysBk+Pwvl6F6RPPhxPv awZuCV6cvYxt86+8zJgVT41kX3jl9gYNbB50U9B4KUsSU98pLHUwTxoQ9HgvBlagr6U8RivkUrs fGUP0IgTk5P31HaO0RMigKcfZ55TrXTfrLZxhQVFfwcKkVFlhvTqXuV4yBGQ6UuN6DJs2BjJsmc 8lk7A4qApmHQtEoxKS2BevkCIthYriJ086hIruehXrwMgb7p8KklnsjIwiyAgKChAyR036h63e+ Y6irpqyFELOBGQxBgbS2EKSPubJ2+bPwo6qj3bHZJ1zMIcPR75fxV8F0jCpw6n3pn97SoojgWph VPPdLduV4JHfFOG3wUHCAWmMkmCDQ5DHLN/n+l8YVZw1NDEF4Ld1EpZOinjmvubRrWjSO3ie0P4 RHbPsx2 X-Received: by 2002:a05:7022:2606:b0:12c:6ec9:3f1 with SMTP id a92af1059eb24-1333b3df2e8mr3988521c88.21.1778650742546; Tue, 12 May 2026 22:39:02 -0700 (PDT) Received: from DontFreeze.tail1d9320.ts.net (201-68-218-231.dsl.telesp.net.br. [201.68.218.231]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-132787673ffsm28552959c88.15.2026.05.12.22.38.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2026 22:39:02 -0700 (PDT) From: Andre Jun Hirata To: kenneth.feng@amd.com, alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, gabriel.dimant@usp.br, guilhermesangabriel@usp.br, kevinyang.wang@amd.com, lijo.lazar@amd.com, Andre Jun Hirata Subject: [PATCH v8] drm/amd/pm: Use guard(mutex) instead of manual lock+unlock Date: Wed, 13 May 2026 02:38:51 -0300 Message-ID: <20260513053851.6100-1-andrejhirata@usp.br> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260512230531.7444-1-andrejhirata@usp.br> References: <20260512230531.7444-1-andrejhirata@usp.br> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Mailman-Approved-At: Wed, 13 May 2026 07:53:28 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" VXNlIGd1YXJkKCkgYW5kIHNjb3BlZF9ndWFyZCgpIGZvciBoYW5kbGluZyBtdXRleCBsb2NrIGlu c3RlYWQgb2YKbWFudWFsbHkgbG9ja2luZyBhbmQgdW5sb2NraW5nIHRoZSBtdXRleC4gVGhpcyBw cmV2ZW50cyBmb3Jnb3R0ZW4KbG9ja3MgZHVlIHRvIGVhcmx5IGV4aXRzIGFuZCByZW1vdmVzIHRo ZSBuZWVkIG9mIGdvdG9zLgoKU2lnbmVkLW9mZi1ieTogQW5kcmUgSnVuIEhpcmF0YSA8YW5kcmVq aGlyYXRhQHVzcC5icj4KQ28tZGV2ZWxvcGVkLWJ5OiBHYWJyaWVsIERpbWFudCA8Z2FicmllbC5k aW1hbnRAdXNwLmJyPgpTaWduZWQtb2ZmLWJ5OiBHYWJyaWVsIERpbWFudCA8Z2FicmllbC5kaW1h bnRAdXNwLmJyPgpDby1kZXZlbG9wZWQtYnk6IEd1aWxoZXJtZSBHYWJyaWVsIDxndWlsaGVybWVz YW5nYWJyaWVsQHVzcC5icj4KU2lnbmVkLW9mZi1ieTogR3VpbGhlcm1lIEdhYnJpZWwgPGd1aWxo ZXJtZXNhbmdhYnJpZWxAdXNwLmJyPgoKUmV2aWV3ZWQtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNo cmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IFlhbmcgV2FuZyA8a2V2aW55YW5n LndhbmdAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IExpam8gTGF6YXIgPGxpam8ubGF6YXJAYW1kLmNv bT4KLS0tCnYyOiBpbmNvcnBvcmF0ZSBDaHJpc3RpYW4gS8O2bmlnJ3Mgc3VnZ2VzdGlvbnM6CiAg LSB1c2UgcmV0dXJuIGYoKSBkaXJlY3RseSBpbnN0ZWFkIG9mIHJldCA9IGYoKTsgcmV0dXJuIHJl dDsKICAtIHVzZSBlYXJseSByZXR1cm4gcGF0dGVybiBiZWZvcmUgZ3VhcmQoKSB3aGVyZSBhcHBs aWNhYmxlCgp2MzogZml4IHN0eWxlIG5pdHMgcG9pbnRlZCBieSBDaHJpc3RpYW4gS8O2bmlnOgog IC0gZHJvcCBzdXBlcmZsdW91cyByZXQgaW5pdGlhbGl6YXRpb24gaW4gc2V0X2dmeF9wb3dlcl91 cF9ieV9pbXUKICAtIGRyb3AgdW5uZWNlc3NhcnkgYnJhY2VzIGFyb3VuZCBzaW5nbGUtbGluZSBz Y29wZWRfZ3VhcmQKCnY0OgogLSBmaXggYnVpbGQgZXJyb3JzIGludHJvZHVjZWQgaW4gdjMKIC0g Zml4IGluY29ycmVjdCBpc19zdXBwb3J0X3N3X3NtdSgpIGNvbmRpdGlvbgogLSByZW1vdmUgYWNj aWRlbnRhbCAicmV0dXJuID0iIHR5cG9zCgp2NTogZml4IGluY29ycmVjdCBkaWZmIGluIHY0Cgp2 NjogZml4IG1pc3Npbmcgc2VtaWNvbG9uIGluIHNtdV9tb2RlMV9yZXNldF9pc19zdXBwb3J0KCkg cmV0dXJuIHN0YXRlbWVudAoKdjc6IGFkZHJlc3MgTGlqbyBMYXphcidzIHJldmlldyBjb21tZW50 czoKICAgLSB1c2UgZWFybHkgcmV0dXJuIHdoZW4gKCFhZGV2LT5wbS5kcG1fZW5hYmxlZCkgaW4g YWNwaV9ldmVudF9oYW5kbGVyCiAgIC0gZHJvcCB1bm5lY2Vzc2FyeSByZXQgaW5pdCBpbiBhbWRn cHVfcG1fbG9hZF9zbXVfZmlybXdhcmUKICAgLSBjaGVjayBmdW5jdGlvbiBwb2ludGVyIGJlZm9y ZSB0YWtpbmcgbXV0ZXggaW4gc2V0X3NjbGtfb2QgYW5kIHNldF9tY2xrX29kCiAgIC0gcmV0dXJu IGRpcmVjdGx5IGluIGFtZGdwdV9kcG1faXNfY2Nsa19kcG1fc3VwcG9ydGVkCgp2ODogcmVtb3Zl IHVudXNlZCB2YXJpYWJsZSAndnN0YXRlJyBpbiBhbWRncHVfZHBtX2dldF92Y2VfY2xvY2tfc3Rh dGUKCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYyB8IDg5NyArKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjcyIGluc2VydGlvbnMoKyksIDYy NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdw dV9kcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG0vYW1kZ3B1X2RwbS5jCmluZGV4IGZlYWRm NjA0Yi4uYmZhOTRiZGFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdw dV9kcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYwpAQCAtMzAs NiArMzAsNyBAQAogI2luY2x1ZGUgImFtZF9wY2llLmgiCiAjaW5jbHVkZSAiYW1kZ3B1X2Rpc3Bs YXkuaCIKICNpbmNsdWRlICJod21nci5oIgorI2luY2x1ZGUgPGxpbnV4L2NsZWFudXAuaD4KICNp bmNsdWRlIDxsaW51eC9wb3dlcl9zdXBwbHkuaD4KICNpbmNsdWRlICJhbWRncHVfc211LmgiCiAK QEAgLTQxLDMzICs0MiwyNSBAQAogaW50IGFtZGdwdV9kcG1fZ2V0X3NjbGsoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsIGJvb2wgbG93KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3Mg KnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJ aWYgKCFwcF9mdW5jcy0+Z2V0X3NjbGspCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfc2NsaygoYWRldiktPnBvd2VycGxh eS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBw X2Z1bmNzLT5nZXRfc2NsaygoYWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJIGxvdyk7 Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBp bnQgYW1kZ3B1X2RwbV9nZXRfbWNsayhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBs b3cpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dl cnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfbWNs aykKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0g cHBfZnVuY3MtPmdldF9tY2xrKChhZGV2KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9tY2xrKChhZGV2 KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkgbG93KTsKLQltdXRleF91bmxvY2soJmFkZXYt PnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9wb3dl cmdhdGluZ19ieV9zbXUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC04MCwxMyArNzMs MTIgQEAgaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyZ2F0aW5nX2J5X3NtdShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKIAllbnVtIGlwX3Bvd2VyX3N0YXRlIHB3cl9zdGF0ZSA9IGdhdGUgPyBQ T1dFUl9TVEFURV9PRkYgOiBQT1dFUl9TVEFURV9PTjsKIAlib29sIGlzX3ZjbiA9IGJsb2NrX3R5 cGUgPT0gQU1EX0lQX0JMT0NLX1RZUEVfVkNOOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJaWYgKGF0b21pY19yZWFk KCZhZGV2LT5wbS5wd3Jfc3RhdGVbYmxvY2tfdHlwZV0pID09IHB3cl9zdGF0ZSAmJgogCQkJKCFp c192Y24gfHwgYWRldi0+dmNuLm51bV92Y25faW5zdCA9PSAxKSkgewogCQlkZXZfZGJnKGFkZXYt PmRldiwgIklQIGJsb2NrJWQgYWxyZWFkeSBpbiB0aGUgdGFyZ2V0ICVzIHN0YXRlISIsCiAJCQkJ YmxvY2tfdHlwZSwgZ2F0ZSA/ICJnYXRlIiA6ICJ1bmdhdGUiKTsKLQkJZ290byBvdXRfdW5sb2Nr OworCQlyZXR1cm4gcmV0OwogCX0KIAogCXN3aXRjaCAoYmxvY2tfdHlwZSkgewpAQCAtMTE1LDIw ICsxMDcsMTYgQEAgaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyZ2F0aW5nX2J5X3NtdShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAoIXJldCkKIAkJYXRvbWljX3NldCgmYWRldi0+cG0u cHdyX3N0YXRlW2Jsb2NrX3R5cGVdLCBwd3Jfc3RhdGUpOwogCi1vdXRfdW5sb2NrOgotCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCiAJcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdw dV9kcG1fc2V0X2dmeF9wb3dlcl91cF9ieV9pbXUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl OwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKKwlpbnQgcmV0OwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9zZXRfZ2Z4X3Bvd2VyX3VwX2J5X2ltdShzbXUpOwot CW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCXNjb3BlZF9ndWFyZChtdXRleCwgJmFk ZXYtPnBtLm11dGV4KQorCQlyZXQgPSBzbXVfc2V0X2dmeF9wb3dlcl91cF9ieV9pbXUoc211KTsK IAogCW1zbGVlcCgxMCk7CiAKQEAgLTEzOSw0NCArMTI3LDMxIEBAIGludCBhbWRncHVfZHBtX2Jh Y29fZW50ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJY29uc3Qgc3RydWN0IGFt ZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAJdm9pZCAq cHBfaGFuZGxlID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAog CWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKQogCQlyZXR1 cm4gLUVOT0VOVDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQorCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCS8qIGVudGVyIEJBQ08gc3RhdGUgKi8KLQlyZXQgPSBw cF9mdW5jcy0+c2V0X2FzaWNfYmFjb19zdGF0ZShwcF9oYW5kbGUsIDEpOwotCi0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCXJldHVybiBwcF9mdW5jcy0+ c2V0X2FzaWNfYmFjb19zdGF0ZShwcF9oYW5kbGUsIDEpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9i YWNvX2V4aXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJY29uc3Qgc3RydWN0IGFt ZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAJdm9pZCAq cHBfaGFuZGxlID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAog CWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKQogCQlyZXR1 cm4gLUVOT0VOVDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQorCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCS8qIGV4aXQgQkFDTyBzdGF0ZSAqLwotCXJldCA9IHBw X2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKHBwX2hhbmRsZSwgMCk7Ci0KLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJcmV0dXJuIHBwX2Z1bmNzLT5z ZXRfYXNpY19iYWNvX3N0YXRlKHBwX2hhbmRsZSwgMCk7CiB9CiAKIGludCBhbWRncHVfZHBtX3Nl dF9tcDFfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgIGVudW0gcHBf bXAxX3N0YXRlIG1wMV9zdGF0ZSkKIHsKLQlpbnQgcmV0ID0gMDsKIAljb25zdCBzdHJ1Y3QgYW1k X3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAogCWlmICht cDFfc3RhdGUgPT0gUFBfTVAxX1NUQVRFX0ZMUikgewpAQCAtMTg0LDIzICsxNTksMTkgQEAgaW50 IGFtZGdwdV9kcG1fc2V0X21wMV9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJ aWYgKGFtZGdwdV9zcmlvdl92ZihhZGV2KSkKIAkJCWFkZXYtPnBtLmRwbV9lbmFibGVkID0gZmFs c2U7CiAJfSBlbHNlIGlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c2V0X21wMV9zdGF0ZSkgewot CQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQkJcmV0ID0gcHBfZnVuY3MtPnNldF9t cDFfc3RhdGUoCisJCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCQlyZXR1cm4gcHBf ZnVuY3MtPnNldF9tcDFfc3RhdGUoCiAJCQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJ CQltcDFfc3RhdGUpOwotCi0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCX0KIAot CXJldHVybiByZXQ7CisJcmV0dXJuIDA7CiB9CiAKIGludCBhbWRncHVfZHBtX2lzX2JhY29fc3Vw cG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWNvbnN0IHN0cnVjdCBhbWRf cG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwogCXZvaWQgKnBw X2hhbmRsZSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldDsKIAogCWlmICgh cHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5nZXRfYXNpY19iYWNvX2NhcGFiaWxpdHkpCiAJCXJldHVy biAwOwpAQCAtMjE2LDQ5ICsxODcsMzIgQEAgaW50IGFtZGdwdV9kcG1faXNfYmFjb19zdXBwb3J0 ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKGFkZXYtPmluX3MzKQogCQlyZXR1 cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldCA9IHBwX2Z1bmNz LT5nZXRfYXNpY19iYWNvX2NhcGFiaWxpdHkocHBfaGFuZGxlKTsKLQotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBt Lm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9hc2ljX2JhY29fY2FwYWJpbGl0eShwcF9o YW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9tb2RlMl9yZXNldChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVu Y3MtPmFzaWNfcmVzZXRfbW9kZV8yKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQotCXJldCA9IHBwX2Z1bmNzLT5hc2ljX3Jlc2V0X21vZGVfMihw cF9oYW5kbGUpOwotCi0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4g cmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+ YXNpY19yZXNldF9tb2RlXzIocHBfaGFuZGxlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZW5hYmxl X2dmeF9mZWF0dXJlcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1 Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAl2 b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAw OwogCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPmFzaWNfcmVzZXRfZW5hYmxlX2dmeF9m ZWF0dXJlcykKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0KLQlyZXQgPSBwcF9mdW5jcy0+YXNpY19yZXNldF9lbmFibGVfZ2Z4X2ZlYXR1cmVzKHBw X2hhbmRsZSk7Ci0KLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5h c2ljX3Jlc2V0X2VuYWJsZV9nZnhfZmVhdHVyZXMocHBfaGFuZGxlKTsKIH0KIAogaW50IGFtZGdw dV9kcG1fYmFjb19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTI3MCw3NSAr MjI0LDYwIEBAIGludCBhbWRncHVfZHBtX2JhY29fcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnNldF9hc2ljX2JhY29fc3RhdGUp CiAJCXJldHVybiAtRU5PRU5UOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCiAJLyogZW50ZXIgQkFDTyBzdGF0ZSAqLwog CXJldCA9IHBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKHBwX2hhbmRsZSwgMSk7CiAJaWYg KHJldCkKLQkJZ290byBvdXQ7CisJCXJldHVybiByZXQ7CiAKIAkvKiBleGl0IEJBQ08gc3RhdGUg Ki8KIAlyZXQgPSBwcF9mdW5jcy0+c2V0X2FzaWNfYmFjb19zdGF0ZShwcF9oYW5kbGUsIDApOwot Ci1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAJcmV0dXJuIHJldDsKIH0K IAogYm9vbCBhbWRncHVfZHBtX2lzX21vZGUxX3Jlc2V0X3N1cHBvcnRlZChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGU7Ci0JYm9vbCBzdXBwb3J0X21vZGUxX3Jlc2V0ID0gZmFsc2U7CiAKLQlp ZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCQlzdXBwb3J0X21vZGUxX3Jlc2V0ID0gc211X21vZGUxX3Jlc2V0X2lzX3N1cHBvcnQo c211KTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghaXNfc3Vw cG9ydF9zd19zbXUoYWRldikpCisJCXJldHVybiBmYWxzZTsKIAotCXJldHVybiBzdXBwb3J0X21v ZGUxX3Jlc2V0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVf bW9kZTFfcmVzZXRfaXNfc3VwcG9ydChzbXUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9tb2RlMV9y ZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQg KnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IC1FT1BOT1RTVVBQ OwogCi0JaWYgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYt PnBtLm11dGV4KTsKLQkJcmV0ID0gc211X21vZGUxX3Jlc2V0KHNtdSk7Ci0JCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQor CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRl di0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfbW9kZTFfcmVzZXQoc211KTsKIH0KIAogYm9vbCBh bWRncHVfZHBtX2lzX2xpbmtfcmVzZXRfc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZTsKLQlib29sIHN1cHBvcnRfbGlua19yZXNldCA9IGZhbHNlOwogCi0JaWYgKGlzX3N1cHBv cnRfc3dfc211KGFkZXYpKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJc3Vw cG9ydF9saW5rX3Jlc2V0ID0gc211X2xpbmtfcmVzZXRfaXNfc3VwcG9ydChzbXUpOwotCQltdXRl eF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShh ZGV2KSkKKwkJcmV0dXJuIGZhbHNlOwogCi0JcmV0dXJuIHN1cHBvcnRfbGlua19yZXNldDsKKwln dWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X2xpbmtfcmVzZXRfaXNf c3VwcG9ydChzbXUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9saW5rX3Jlc2V0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAKLQlpZiAoaXNfc3Vw cG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQly ZXQgPSBzbXVfbGlua19yZXNldChzbXUpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQl9CisJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKKwkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gc211X2xpbmtfcmVzZXQoc211KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc3dpdGNoX3Bv d2VyX3Byb2ZpbGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0zNDYsMTAwICsyODUs ODIgQEAgaW50IGFtZGdwdV9kcG1fc3dpdGNoX3Bvd2VyX3Byb2ZpbGUoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCiAJCQkJICAgIGJvb2wgZW4pCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9m dW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7 CiAKIAlpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKQogCQlyZXR1cm4gMDsKIAotCWlmIChwcF9m dW5jcyAmJiBwcF9mdW5jcy0+c3dpdGNoX3Bvd2VyX3Byb2ZpbGUpIHsKLQkJbXV0ZXhfbG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+c3dpdGNoX3Bvd2VyX3Byb2ZpbGUo Ci0JCQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlLCBlbik7Ci0JCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+c3dp dGNoX3Bvd2VyX3Byb2ZpbGUpCisJCXJldHVybiAwOwogCi0JcmV0dXJuIHJldDsKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnN3aXRjaF9wb3dlcl9w cm9maWxlKAorCQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSwgZW4pOwogfQogCiBp bnQgYW1kZ3B1X2RwbV9wYXVzZV9wb3dlcl9wcm9maWxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAogCQkJCSAgIGJvb2wgcGF1c2UpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAq cHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlp ZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKQogCQlyZXR1cm4gMDsKIAotCWlmIChwcF9mdW5jcyAm JiBwcF9mdW5jcy0+cGF1c2VfcG93ZXJfcHJvZmlsZSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5wYXVzZV9wb3dlcl9wcm9maWxlKAotCQkJYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgcGF1c2UpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnBhdXNlX3Bvd2VyX3By b2ZpbGUpCisJCXJldHVybiAwOwogCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYt PnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnBhdXNlX3Bvd2VyX3Byb2ZpbGUoCisJCQlh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBwYXVzZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX3Nl dF94Z21pX3BzdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgICAgICB1aW50 MzJfdCBwc3RhdGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKLQlpZiAocHBfZnVuY3Mg JiYgcHBfZnVuY3MtPnNldF94Z21pX3BzdGF0ZSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5zZXRfeGdtaV9wc3RhdGUoYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZSwKLQkJCQkJCQkJcHN0YXRlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0JfQorCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5zZXRfeGdtaV9wc3RhdGUp CisJCXJldHVybiAwOwogCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF94Z21pX3BzdGF0ZShhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlLAorCQkJCQkJCQlwc3RhdGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfZGZf Y3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgICB1aW50MzJfdCBjc3Rh dGUpCiB7Ci0JaW50IHJldCA9IDA7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVu Y3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZTsKIAotCWlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c2V0X2Rm X2NzdGF0ZSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1 bmNzLT5zZXRfZGZfY3N0YXRlKHBwX2hhbmRsZSwgY3N0YXRlKTsKLQkJbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5zZXRfZGZf Y3N0YXRlKQorCQlyZXR1cm4gMDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfZGZfY3N0YXRlKHBwX2hhbmRsZSwg Y3N0YXRlKTsKIH0KIAogc3NpemVfdCBhbWRncHVfZHBtX2dldF9wbV9wb2xpY3lfaW5mbyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgICBlbnVtIHBwX3BtX3BvbGljeSBwX3R5 cGUsIGNoYXIgKmJ1ZikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IC1FT1BOT1RTVVBQOwogCi0JaWYgKGlzX3N1cHBv cnRfc3dfc211KGFkZXYpKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0 ID0gc211X2dldF9wbV9wb2xpY3lfaW5mbyhzbXUsIHBfdHlwZSwgYnVmKTsKLQkJbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikp CisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZh ZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9nZXRfcG1fcG9saWN5X2luZm8oc211LCBwX3R5 cGUsIGJ1Zik7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9wbV9wb2xpY3koc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsIGludCBwb2xpY3lfdHlwZSwKIAkJCSAgICAgaW50IHBvbGljeV9sZXZl bCkKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGU7Ci0JaW50IHJldCA9IC1FT1BOT1RTVVBQOwogCi0JaWYgKGlzX3N1cHBvcnRfc3dfc211KGFk ZXYpKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gc211X3NldF9w bV9wb2xpY3koc211LCBwb2xpY3lfdHlwZSwgcG9saWN5X2xldmVsKTsKLQkJbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJ CXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9zZXRfcG1fcG9saWN5KHNtdSwgcG9saWN5X3R5cGUs IHBvbGljeV9sZXZlbCk7CiB9CiAKIGludCBhbWRncHVfZHBtX2VuYWJsZV9tZ3B1X2Zhbl9ib29z dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTQ0NywxNSArMzY4LDEyIEBAIGludCBh bWRncHVfZHBtX2VuYWJsZV9tZ3B1X2Zhbl9ib29zdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKIAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCWNvbnN0 IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0KIAkJCWFkZXYtPnBvd2VycGxheS5wcF9m dW5jczsKLQlpbnQgcmV0ID0gMDsKIAotCWlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+ZW5hYmxl X21ncHVfZmFuX2Jvb3N0KSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0 ID0gcHBfZnVuY3MtPmVuYWJsZV9tZ3B1X2Zhbl9ib29zdChwcF9oYW5kbGUpOwotCQltdXRleF91 bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3Mt PmVuYWJsZV9tZ3B1X2Zhbl9ib29zdCkKKwkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gcmV0OworCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+ZW5hYmxlX21n cHVfZmFuX2Jvb3N0KHBwX2hhbmRsZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9jbG9ja2dh dGluZ19ieV9zbXUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC00NjQsMTYgKzM4Miwx MyBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfY2xvY2tnYXRpbmdfYnlfc211KHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCXZvaWQgKnBwX2hhbmRsZSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGU7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPQogCQkJYWRldi0+cG93 ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCi0JaWYgKHBwX2Z1bmNzICYmIHBwX2Z1 bmNzLT5zZXRfY2xvY2tnYXRpbmdfYnlfc211KSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnNldF9jbG9ja2dhdGluZ19ieV9zbXUocHBfaGFuZGxl LAotCQkJCQkJICAgICAgIG1zZ19pZCk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCX0KKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+c2V0X2Nsb2NrZ2F0aW5nX2J5X3Nt dSkKKwkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0u bXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X2Nsb2NrZ2F0aW5nX2J5X3NtdShwcF9oYW5k bGUsCisJCQkJCQkgICAgICAgbXNnX2lkKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc211X2kyY19i dXNfYWNjZXNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtNDgyLDg1ICszOTcsNzIg QEAgaW50IGFtZGdwdV9kcG1fc211X2kyY19idXNfYWNjZXNzKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogCXZvaWQgKnBwX2hhbmRsZSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPQogCQkJYWRldi0+cG93ZXJwbGF5 LnBwX2Z1bmNzOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKIAotCWlmIChwcF9mdW5jcyAmJiBw cF9mdW5jcy0+c211X2kyY19idXNfYWNjZXNzKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnNtdV9pMmNfYnVzX2FjY2VzcyhwcF9oYW5kbGUsCi0J CQkJCQkgICBhY3F1aXJlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQor CWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5zbXVfaTJjX2J1c19hY2Nlc3MpCisJCXJldHVy biAtRU9QTk9UU1VQUDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5t dXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zbXVfaTJjX2J1c19hY2Nlc3MocHBfaGFuZGxlLAor CQkJCQkJICAgYWNxdWlyZSk7CiB9CiAKIHZvaWQgYW1kZ3B1X3BtX2FjcGlfZXZlbnRfaGFuZGxl cihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKLQlpZiAoYWRldi0+cG0uZHBtX2VuYWJs ZWQpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlpZiAocG93ZXJfc3VwcGx5 X2lzX3N5c3RlbV9zdXBwbGllZCgpID4gMCkKLQkJCWFkZXYtPnBtLmFjX3Bvd2VyID0gdHJ1ZTsK LQkJZWxzZQotCQkJYWRldi0+cG0uYWNfcG93ZXIgPSBmYWxzZTsKKwlpZiAoIWFkZXYtPnBtLmRw bV9lbmFibGVkKQorCQlyZXR1cm47CiAKLQkJaWYgKGFkZXYtPnBvd2VycGxheS5wcF9mdW5jcyAm JgotCQkgICAgYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5lbmFibGVfYmFwbSkKLQkJCWFtZGdw dV9kcG1fZW5hYmxlX2JhcG0oYWRldiwgYWRldi0+cG0uYWNfcG93ZXIpOworCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCWlmIChwb3dlcl9zdXBwbHlfaXNfc3lzdGVtX3N1cHBsaWVk KCkgPiAwKQorCQlhZGV2LT5wbS5hY19wb3dlciA9IHRydWU7CisJZWxzZQorCQlhZGV2LT5wbS5h Y19wb3dlciA9IGZhbHNlOwogCi0JCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKLQkJCXNt dV9zZXRfYWNfZGMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CisJaWYgKGFkZXYtPnBvd2Vy cGxheS5wcF9mdW5jcyAmJgorCSAgICBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3MtPmVuYWJsZV9i YXBtKQorCQlhbWRncHVfZHBtX2VuYWJsZV9iYXBtKGFkZXYsIGFkZXYtPnBtLmFjX3Bvd2VyKTsK IAotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKGlzX3N1cHBvcnRf c3dfc211KGFkZXYpKQorCQlzbXVfc2V0X2FjX2RjKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUp OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9yZWFkX3NlbnNvcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwgZW51bSBhbWRfcHBfc2Vuc29ycyBzZW5zb3IsCiAJCQkgICB2b2lkICpkYXRhLCB1aW50 MzJfdCAqc2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gLUVJTlZBTDsKIAogCWlmICghZGF0 YSB8fCAhc2l6ZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVu Y3MtPnJlYWRfc2Vuc29yKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0 ID0gcHBfZnVuY3MtPnJlYWRfc2Vuc29yKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJaWYg KCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnJlYWRfc2Vuc29yKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+cmVh ZF9zZW5zb3IoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgIHNlbnNvciwKIAkJ CQkJICAgIGRhdGEsCiAJCQkJCSAgICBzaXplKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0JfQotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2FwdV90 aGVybWFsX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCAqbGltaXQp CiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBs YXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IC1FT1BOT1RTVVBQOwogCi0JaWYgKHBwX2Z1bmNzICYm IHBwX2Z1bmNzLT5nZXRfYXB1X3RoZXJtYWxfbGltaXQpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2FwdV90aGVybWFsX2xpbWl0KGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsIGxpbWl0KTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0JfQorCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5nZXRfYXB1X3RoZXJtYWxf bGltaXQpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfYXB1X3RoZXJtYWxf bGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgbGltaXQpOwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9zZXRfYXB1X3RoZXJtYWxfbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVp bnQzMl90IGxpbWl0KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0g YWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKIAotCWlm IChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c2V0X2FwdV90aGVybWFsX2xpbWl0KSB7Ci0JCW11dGV4 X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnNldF9hcHVfdGhlcm1h bF9saW1pdChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBsaW1pdCk7Ci0JCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+c2V0 X2FwdV90aGVybWFsX2xpbWl0KQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlyZXR1cm4gcmV0 OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0 X2FwdV90aGVybWFsX2xpbWl0KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIGxpbWl0KTsKIH0K IAogdm9pZCBhbWRncHVfZHBtX2NvbXB1dGVfY2xvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQpAQCAtNTgzLDkgKzQ4NSw4IEBAIHZvaWQgYW1kZ3B1X2RwbV9jb21wdXRlX2Nsb2Nrcyhz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJCWFtZGdwdV9mZW5jZV93YWl0X2VtcHR5KHJp bmcpOwogCX0KIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCko JmFkZXYtPnBtLm11dGV4KTsKIAlwcF9mdW5jcy0+cG1fY29tcHV0ZV9jbG9ja3MoYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiB9CiAK IHZvaWQgYW1kZ3B1X2RwbV9lbmFibGVfdXZkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBi b29sIGVuYWJsZSkKQEAgLTU5MywxNCArNDk0LDE0IEBAIHZvaWQgYW1kZ3B1X2RwbV9lbmFibGVf dXZkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIAlpbnQgcmV0ID0g MDsKIAogCWlmIChhZGV2LT5mYW1pbHkgPT0gQU1ER1BVX0ZBTUlMWV9TSSkgewotCQltdXRleF9s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCWlmIChlbmFibGUpIHsKLQkJCWFkZXYtPnBtLmRwbS51 dmRfYWN0aXZlID0gdHJ1ZTsKLQkJCWFkZXYtPnBtLmRwbS5zdGF0ZSA9IFBPV0VSX1NUQVRFX1RZ UEVfSU5URVJOQUxfVVZEOwotCQl9IGVsc2UgewotCQkJYWRldi0+cG0uZHBtLnV2ZF9hY3RpdmUg PSBmYWxzZTsKKwkJc2NvcGVkX2d1YXJkKG11dGV4LCAmYWRldi0+cG0ubXV0ZXgpIHsKKwkJCWlm IChlbmFibGUpIHsKKwkJCQlhZGV2LT5wbS5kcG0udXZkX2FjdGl2ZSA9IHRydWU7CisJCQkJYWRl di0+cG0uZHBtLnN0YXRlID0gUE9XRVJfU1RBVEVfVFlQRV9JTlRFUk5BTF9VVkQ7CisJCQl9IGVs c2UgeworCQkJCWFkZXYtPnBtLmRwbS51dmRfYWN0aXZlID0gZmFsc2U7CisJCQl9CiAJCX0KLQkJ bXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAKIAkJYW1kZ3B1X2RwbV9jb21wdXRlX2Ns b2NrcyhhZGV2KTsKIAkJcmV0dXJuOwpAQCAtNjI3LDE1ICs1MjgsMTUgQEAgdm9pZCBhbWRncHVf ZHBtX2VuYWJsZV92Y2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgZW5hYmxlKQog CWludCByZXQgPSAwOwogCiAJaWYgKGFkZXYtPmZhbWlseSA9PSBBTURHUFVfRkFNSUxZX1NJKSB7 Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJaWYgKGVuYWJsZSkgewotCQkJYWRl di0+cG0uZHBtLnZjZV9hY3RpdmUgPSB0cnVlOwotCQkJLyogWFhYIHNlbGVjdCB2Y2UgbGV2ZWwg YmFzZWQgb24gcmluZy90YXNrICovCi0JCQlhZGV2LT5wbS5kcG0udmNlX2xldmVsID0gQU1EX1ZD RV9MRVZFTF9BQ19BTEw7Ci0JCX0gZWxzZSB7Ci0JCQlhZGV2LT5wbS5kcG0udmNlX2FjdGl2ZSA9 IGZhbHNlOworCQlzY29wZWRfZ3VhcmQobXV0ZXgsICZhZGV2LT5wbS5tdXRleCkgeworCQkJaWYg KGVuYWJsZSkgeworCQkJCWFkZXYtPnBtLmRwbS52Y2VfYWN0aXZlID0gdHJ1ZTsKKwkJCQkvKiBY WFggc2VsZWN0IHZjZSBsZXZlbCBiYXNlZCBvbiByaW5nL3Rhc2sgKi8KKwkJCQlhZGV2LT5wbS5k cG0udmNlX2xldmVsID0gQU1EX1ZDRV9MRVZFTF9BQ19BTEw7CisJCQl9IGVsc2UgeworCQkJCWFk ZXYtPnBtLmRwbS52Y2VfYWN0aXZlID0gZmFsc2U7CisJCQl9CiAJCX0KLQkJbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7CiAKIAkJYW1kZ3B1X2RwbV9jb21wdXRlX2Nsb2NrcyhhZGV2KTsK IAkJcmV0dXJuOwpAQCAtNjcwLDg0ICs1NzEsNjYgQEAgdm9pZCBhbWRncHVfZHBtX2VuYWJsZV92 cGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgZW5hYmxlKQogaW50IGFtZGdwdV9w bV9sb2FkX3NtdV9maXJtd2FyZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3Qg KnNtdV92ZXJzaW9uKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0g YWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByID0gMDsKKwlpbnQgcmV0OwogCiAJaWYg KCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPmxvYWRfZmlybXdhcmUgfHwKIAkgICAgKGlzX3N1cHBv cnRfc3dfc211KGFkZXYpICYmIChhZGV2LT5mbGFncyAmIEFNRF9JU19BUFUpKSkKIAkJcmV0dXJu IDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JciA9IHBwX2Z1bmNzLT5sb2Fk X2Zpcm13YXJlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCWlmIChyKSB7CisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0ID0gcHBfZnVuY3MtPmxvYWRfZmlybXdhcmUo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CisJaWYgKHJldCkgewogCQlwcl9lcnIoInNtdSBm aXJtd2FyZSBsb2FkaW5nIGZhaWxlZFxuIik7Ci0JCWdvdG8gb3V0OworCQlyZXR1cm4gcmV0Owog CX0KIAogCWlmIChzbXVfdmVyc2lvbikKIAkJKnNtdV92ZXJzaW9uID0gYWRldi0+cG0uZndfdmVy c2lvbjsKIAotb3V0OgotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldHVybiBy OworCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2hhbmRsZV9wYXNzdGhyb3VnaF9z YnIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgZW5hYmxlKQogewotCWludCByZXQg PSAwOworCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJldHVybiAwOwogCi0JaWYg KGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQkJcmV0ID0gc211X2hhbmRsZV9wYXNzdGhyb3VnaF9zYnIoYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X2hh bmRsZV9wYXNzdGhyb3VnaF9zYnIoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCSBl bmFibGUpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9Ci0KLQlyZXR1cm4g cmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZW5kX2hibV9iYWRfcGFnZXNfbnVtKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCBzaXplKQogewogCXN0cnVjdCBzbXVfY29udGV4 dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlm ICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfc2VuZF9oYm1fYmFkX3BhZ2Vz X251bShzbXUsIHNpemUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0 dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3Nl bmRfaGJtX2JhZF9wYWdlc19udW0oc211LCBzaXplKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2Vu ZF9oYm1fYmFkX2NoYW5uZWxfZmxhZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMy X3Qgc2l6ZSkKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYp KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0JcmV0ID0gc211X3NlbmRfaGJtX2JhZF9jaGFubmVsX2ZsYWcoc211LCBzaXplKTsKLQltdXRl eF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgp KCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9zZW5kX2hibV9iYWRfY2hhbm5lbF9mbGFn KHNtdSwgc2l6ZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX3NlbmRfcm1hX3JlYXNvbihzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19z bXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQlyZXQgPSBzbXVfc2VuZF9ybWFfcmVhc29uKHNtdSk7Ci0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOworCXJldHVybiBzbXVfc2VuZF9ybWFfcmVhc29uKHNtdSk7CiB9CiAKIC8qKgpA QCAtNzYxLDYxICs2NDQsNDUgQEAgaW50IGFtZGdwdV9kcG1fc2VuZF9ybWFfcmVhc29uKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogYm9vbCBhbWRncHVfZHBtX3Jlc2V0X3NkbWFfaXNfc3Vw cG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBzbXVfY29udGV4 dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlib29sIHJldDsKIAogCWlmICgh aXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiBmYWxzZTsKIAotCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfcmVzZXRfc2RtYV9pc19zdXBwb3J0ZWQoc211 KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9yZXNldF9zZG1hX2lzX3N1 cHBvcnRlZChzbXUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9yZXNldF9zZG1hKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCBpbnN0X21hc2spCiB7CiAJc3RydWN0IHNtdV9jb250 ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQ7CiAKIAlpZiAo IWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3Jlc2V0X3NkbWEoc211LCBpbnN0 X21hc2spOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3Jlc2V0X3NkbWEo c211LCBpbnN0X21hc2spOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9yZXNldF92Y24oc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IGluc3RfbWFzaykKIHsKIAlzdHJ1Y3Qgc211X2Nv bnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldDsKIAogCWlm ICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfcmVzZXRfdmNuKHNtdSwgaW5z dF9tYXNrKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7 CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9yZXNldF92Y24o c211LCBpbnN0X21hc2spOwogfQogCiBib29sIGFtZGdwdV9kcG1fcmVzZXRfdmNuX2lzX3N1cHBv cnRlZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQg KnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JYm9vbCByZXQ7CiAKIAlpZiAoIWlz X3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQltdXRleF9sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3Jlc2V0X3Zjbl9pc19zdXBwb3J0ZWQoc211KTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9yZXNldF92Y25faXNfc3VwcG9y dGVkKHNtdSk7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9kcG1fZnJlcV9yYW5nZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTgyMywyMiArNjkwLDE3IEBAIGludCBhbWRncHVfZHBt X2dldF9kcG1fZnJlcV9yYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgIHVp bnQzMl90ICptaW4sCiAJCQkJICB1aW50MzJfdCAqbWF4KQogewotCWludCByZXQgPSAwOwotCiAJ aWYgKHR5cGUgIT0gUFBfU0NMSykKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlpZiAoIWlzX3N1cHBv cnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X2dldF9kcG1fZnJlcV9yYW5nZShhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBzbXVfZ2V0X2RwbV9mcmVxX3JhbmdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJ ICAgICBTTVVfU0NMSywKIAkJCQkgICAgIG1pbiwKIAkJCQkgICAgIG1heCk7Ci0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2Rw bV9zZXRfc29mdF9mcmVxX3JhbmdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtODYy LDE2ICs3MjQsMTIgQEAgaW50IGFtZGdwdV9kcG1fc2V0X3NvZnRfZnJlcV9yYW5nZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIGludCBhbWRncHVfZHBtX3dyaXRlX3dhdGVybWFya3NfdGFi bGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpz bXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFp c19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3dyaXRlX3dhdGVybWFya3NfdGFibGUoc211KTsKLQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV93cml0ZV93YXRlcm1hcmtzX3RhYmxl KHNtdSk7CiB9CiAKIGludCBhbWRncHVfZHBtX3dhaXRfZm9yX2V2ZW50KHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LApAQCAtODc5LDc2ICs3MzcsNTYgQEAgaW50IGFtZGdwdV9kcG1fd2FpdF9m b3JfZXZlbnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgICB1aW50NjRfdCBl dmVudF9hcmcpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2 KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHNtdV93YWl0X2Zvcl9ldmVudChzbXUsIGV2ZW50LCBldmVudF9hcmcpOwotCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3dhaXRfZm9yX2V2ZW50KHNtdSwgZXZl bnQsIGV2ZW50X2FyZyk7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9yZXNpZGVuY3lfZ2Z4b2Zm KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIHZhbHVlKQogewogCXN0cnVjdCBzbXVf Y29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsK IAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsK IAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfc2V0X3Jlc2lkZW5j eV9nZnhvZmYoc211LCB2YWx1ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0K LQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBz bXVfc2V0X3Jlc2lkZW5jeV9nZnhvZmYoc211LCB2YWx1ZSk7CiB9CiAKIGludCBhbWRncHVfZHBt X2dldF9yZXNpZGVuY3lfZ2Z4b2ZmKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgKnZh bHVlKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJ CXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQly ZXQgPSBzbXVfZ2V0X3Jlc2lkZW5jeV9nZnhvZmYoc211LCB2YWx1ZSk7Ci0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOworCXJldHVybiBzbXVfZ2V0X3Jlc2lkZW5jeV9nZnhvZmYoc211LCB2YWx1ZSk7 CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9lbnRyeWNvdW50X2dmeG9mZihzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgdTY0ICp2YWx1ZSkKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9 IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1 cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X2dldF9lbnRyeWNvdW50X2dmeG9mZihzbXUs IHZhbHVlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7 CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9nZXRfZW50cnlj b3VudF9nZnhvZmYoc211LCB2YWx1ZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9zdGF0dXNf Z2Z4b2ZmKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCAqdmFsdWUpCiB7CiAJ c3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWlu dCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1F T1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9n ZXRfc3RhdHVzX2dmeG9mZihzbXUsIHZhbHVlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJ cmV0dXJuIHNtdV9nZXRfc3RhdHVzX2dmeG9mZihzbXUsIHZhbHVlKTsKIH0KIAogdWludDY0X3Qg YW1kZ3B1X2RwbV9nZXRfdGhlcm1hbF90aHJvdHRsaW5nX2NvdW50ZXIoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCkBAIC05NjksNDUgKzgwNywzNiBAQCB1aW50NjRfdCBhbWRncHVfZHBtX2dl dF90aGVybWFsX3Rocm90dGxpbmdfY291bnRlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK IHZvaWQgYW1kZ3B1X2RwbV9nZnhfc3RhdGVfY2hhbmdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAogCQkJCSBlbnVtIGdmeF9jaGFuZ2Vfc3RhdGUgc3RhdGUpCiB7Ci0JbXV0ZXhfbG9jaygm YWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCWlmIChh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3MgJiYKIAkgICAgYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNz LT5nZnhfc3RhdGVfY2hhbmdlX3NldCkKIAkJKChhZGV2KS0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5n Znhfc3RhdGVfY2hhbmdlX3NldCgKIAkJCShhZGV2KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgc3Rh dGUpKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKIH0KIAogaW50IGFtZGdwdV9k cG1fZ2V0X2VjY19pbmZvKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgIHZvaWQg KnVtY19lY2MpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2 KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHNtdV9nZXRfZWNjX2luZm8oc211LCB1bWNfZWNjKTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5w bS5tdXRleCk7CisJcmV0dXJuIHNtdV9nZXRfZWNjX2luZm8oc211LCB1bWNfZWNjKTsKIH0KIAog c3RydWN0IGFtZF92Y2Vfc3RhdGUgKmFtZGdwdV9kcG1fZ2V0X3ZjZV9jbG9ja19zdGF0ZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJCSAgICAgdWludDMyX3QgaWR4KQogewogCWNv bnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1 bmNzOwotCXN0cnVjdCBhbWRfdmNlX3N0YXRlICp2c3RhdGUgPSBOVUxMOwogCiAJaWYgKCFwcF9m dW5jcy0+Z2V0X3ZjZV9jbG9ja19zdGF0ZSkKIAkJcmV0dXJuIE5VTEw7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JdnN0YXRlID0gcHBfZnVuY3MtPmdldF92Y2VfY2xvY2tfc3Rh dGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF92Y2VfY2xvY2tfc3RhdGUoYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgICAgIGlkeCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0KLQlyZXR1cm4gdnN0YXRlOwogfQogCiB2b2lkIGFtZGdwdV9kcG1fZ2V0X2N1 cnJlbnRfcG93ZXJfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xMDE1LDI4 ICs4NDQsMjQgQEAgdm9pZCBhbWRncHVfZHBtX2dldF9jdXJyZW50X3Bvd2VyX3N0YXRlKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+ cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCiAJaWYgKCFwcF9m dW5jcy0+Z2V0X2N1cnJlbnRfcG93ZXJfc3RhdGUpIHsKIAkJKnN0YXRlID0gYWRldi0+cG0uZHBt LnVzZXJfc3RhdGU7Ci0JCWdvdG8gb3V0OworCQlyZXR1cm47CiAJfQogCiAJKnN0YXRlID0gcHBf ZnVuY3MtPmdldF9jdXJyZW50X3Bvd2VyX3N0YXRlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUp OwogCWlmICgqc3RhdGUgPCBQT1dFUl9TVEFURV9UWVBFX0RFRkFVTFQgfHwKIAkgICAgKnN0YXRl ID4gUE9XRVJfU1RBVEVfVFlQRV9JTlRFUk5BTF8zRFBFUkYpCiAJCSpzdGF0ZSA9IGFkZXYtPnBt LmRwbS51c2VyX3N0YXRlOwotCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7 CiB9CiAKIHZvaWQgYW1kZ3B1X2RwbV9zZXRfcG93ZXJfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkJZW51bSBhbWRfcG1fc3RhdGVfdHlwZSBzdGF0ZSkKIHsKLQltdXRleF9s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JYWRldi0+cG0uZHBtLnVzZXJfc3RhdGUgPSBzdGF0ZTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlzY29wZWRfZ3VhcmQobXV0ZXgsICZh ZGV2LT5wbS5tdXRleCkKKwkJYWRldi0+cG0uZHBtLnVzZXJfc3RhdGUgPSBzdGF0ZTsKIAogCWlm IChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuOwpAQCAtMTA1NSwxMiArODgwLDEx IEBAIGVudW0gYW1kX2RwbV9mb3JjZWRfbGV2ZWwgYW1kZ3B1X2RwbV9nZXRfcGVyZm9ybWFuY2Vf bGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UKIAlpZiAoIXBwX2Z1bmNzKQogCQlyZXR1cm4gQU1E X0RQTV9GT1JDRURfTEVWRUxfQVVUTzsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlpZiAocHBfZnVuY3MtPmdldF9wZXJm b3JtYW5jZV9sZXZlbCkKIAkJbGV2ZWwgPSBwcF9mdW5jcy0+Z2V0X3BlcmZvcm1hbmNlX2xldmVs KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwogCWVsc2UKIAkJbGV2ZWwgPSBhZGV2LT5wbS5k cG0uZm9yY2VkX2xldmVsOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCiAJcmV0 dXJuIGxldmVsOwogfQpAQCAtMTE1MSwxNyArOTc1LDEzIEBAIGludCBhbWRncHVfZHBtX2dldF9w cF9udW1fc3RhdGVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSBzdHJ1Y3QgcHBf c3RhdGVzX2luZm8gKnN0YXRlcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICgh cHBfZnVuY3MtPmdldF9wcF9udW1fc3RhdGVzKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlt dXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9wcF9udW1f c3RhdGVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5w bS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcHBfbnVtX3N0YXRlcyhhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHN0YXRlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9kaXNwYXRjaF90 YXNrKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTE2OSwyNCArOTg5LDE5IEBAIGlu dCBhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJ CQkgICAgICBlbnVtIGFtZF9wbV9zdGF0ZV90eXBlICp1c2VyX3N0YXRlKQogewogCWNvbnN0IHN0 cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwot CWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ZGlzcGF0Y2hfdGFza3MpCiAJCXJldHVy biAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBw cF9mdW5jcy0+ZGlzcGF0Y2hfdGFza3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFy ZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmRpc3BhdGNoX3Rh c2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJICAgICAgIHRhc2tfaWQsCiAJCQkJ ICAgICAgIHVzZXJfc3RhdGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X3BwX3RhYmxlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCBjaGFyICoqdGFibGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9m dW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7 CiAKIAlpZiAoIXRhYmxlKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTExOTQsMTIgKzEwMDksOSBA QCBpbnQgYW1kZ3B1X2RwbV9nZXRfcHBfdGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs IGNoYXIgKip0YWJsZSkKIAlpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpIHx8ICFwcF9mdW5jcy0+ Z2V0X3BwX3RhYmxlIHx8IGFkZXYtPnNjcG1fZW5hYmxlZCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQ OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRf cHBfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYt PnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9wcF90YWJsZShhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAogCQkJCSAgICAgdGFibGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X2ZpbmVfZ3Jh aW5fY2xrX3ZvbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTEyMDgsMTkgKzEwMjAs MTUgQEAgaW50IGFtZGdwdV9kcG1fc2V0X2ZpbmVfZ3JhaW5fY2xrX3ZvbChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKIAkJCQkgICAgICB1aW50MzJfdCBzaXplKQogewogCWNvbnN0IHN0cnVj dCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWlu dCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X2ZpbmVfZ3JhaW5fY2xrX3ZvbCkKIAkJ cmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVu Y3MtPnNldF9maW5lX2dyYWluX2Nsa192b2woYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwln dWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9maW5l X2dyYWluX2Nsa192b2woYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgICAgIHR5 cGUsCiAJCQkJCSAgICAgICBpbnB1dCwKIAkJCQkJICAgICAgIHNpemUpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1f b2RuX2VkaXRfZHBtX3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTIyOSwx OSArMTAzNywxNSBAQCBpbnQgYW1kZ3B1X2RwbV9vZG5fZWRpdF9kcG1fdGFibGUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICB1aW50MzJfdCBzaXplKQogewogCWNvbnN0IHN0cnVj dCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWlu dCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+b2RuX2VkaXRfZHBtX3RhYmxlKQogCQlyZXR1 cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+ b2RuX2VkaXRfZHBtX3RhYmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5vZG5fZWRpdF9kcG1fdGFi bGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgdHlwZSwKIAkJCQkJICAgaW5w dXQsCiAJCQkJCSAgIHNpemUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZW1pdF9jbG9ja19sZXZlbHMoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xMjUwLDUyICsxMDU0LDQwIEBAIGludCBhbWRncHVf ZHBtX2VtaXRfY2xvY2tfbGV2ZWxzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAg aW50ICpvZmZzZXQpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNz LT5lbWl0X2Nsb2NrX2xldmVscykKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQltdXRleF9sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmVtaXRfY2xvY2tfbGV2ZWxzKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJ cmV0dXJuIHBwX2Z1bmNzLT5lbWl0X2Nsb2NrX2xldmVscyhhZGV2LT5wb3dlcnBsYXkucHBfaGFu ZGxlLAogCQkJCQkgICB0eXBlLAogCQkJCQkgICBidWYsCiAJCQkJCSAgIG9mZnNldCk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1k Z3B1X2RwbV9zZXRfcHBmZWF0dXJlX3N0YXR1cyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK IAkJCQkgICAgdWludDY0X3QgcHBmZWF0dXJlX21hc2tzKQogewogCWNvbnN0IHN0cnVjdCBhbWRf cG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQg PSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X3BwZmVhdHVyZV9zdGF0dXMpCiAJCXJldHVybiAw OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRf cHBmZWF0dXJlX3N0YXR1cyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X3BwZmVhdHVyZV9zdGF0 dXMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgICBwcGZlYXR1cmVfbWFza3Mp OwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAog aW50IGFtZGdwdV9kcG1fZ2V0X3BwZmVhdHVyZV9zdGF0dXMoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIGNoYXIgKmJ1ZikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5j cyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBf ZnVuY3MtPmdldF9wcGZlYXR1cmVfc3RhdHVzKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X3BwZmVhdHVyZV9zdGF0dXMo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9wcGZlYXR1cmVfc3RhdHVzKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgYnVmKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2ZvcmNlX2Nsb2NrX2xl dmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTMwMywzMyArMTA5NSwyNSBAQCBp bnQgYW1kZ3B1X2RwbV9mb3JjZV9jbG9ja19sZXZlbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKIAkJCQkgdWludDMyX3QgbWFzaykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpw cF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlm ICghcHBfZnVuY3MtPmZvcmNlX2Nsb2NrX2xldmVsKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Zm9yY2VfY2xvY2tfbGV2ZWwo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmZvcmNlX2Nsb2NrX2xldmVsKGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUsCiAJCQkJCSAgdHlwZSwKIAkJCQkJICBtYXNrKTsKLQltdXRleF91bmxvY2soJmFk ZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9z Y2xrX29kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWNvbnN0IHN0cnVjdCBhbWRf cG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQg PSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3NjbGtfb2QpCiAJCXJldHVybiAtRU9QTk9UU1VQ UDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0 X3NjbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0 ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3NjbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9zY2xrX29kKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCB1aW50MzJfdCB2YWx1ZSkKQEAgLTEzMzksMTAgKzExMjMsMTAgQEAgaW50IGFt ZGdwdV9kcG1fc2V0X3NjbGtfb2Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90 IHZhbHVlKQogCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCWlmIChwcF9mdW5jcy0+c2V0 X3NjbGtfb2QpCi0JCXBwX2Z1bmNzLT5zZXRfc2Nsa19vZChhZGV2LT5wb3dlcnBsYXkucHBfaGFu ZGxlLCB2YWx1ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJaWYgKHBwX2Z1 bmNzLT5zZXRfc2Nsa19vZCkgeworCQlzY29wZWRfZ3VhcmQobXV0ZXgsICZhZGV2LT5wbS5tdXRl eCkKKwkJCXBwX2Z1bmNzLT5zZXRfc2Nsa19vZChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB2 YWx1ZSk7CisJfQogCiAJaWYgKGFtZGdwdV9kcG1fZGlzcGF0Y2hfdGFzayhhZGV2LAogCQkJCSAg ICAgQU1EX1BQX1RBU0tfUkVBREpVU1RfUE9XRVJfU1RBVEUsCkBAIC0xMzU3LDE2ICsxMTQxLDEy IEBAIGludCBhbWRncHVfZHBtX3NldF9zY2xrX29kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCB1aW50MzJfdCB2YWx1ZSkKIGludCBhbWRncHVfZHBtX2dldF9tY2xrX29kKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNz ID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9m dW5jcy0+Z2V0X21jbGtfb2QpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X21jbGtfb2QoYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQly ZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9m dW5jcy0+Z2V0X21jbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CiB9CiAKIGludCBh bWRncHVfZHBtX3NldF9tY2xrX29kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJf dCB2YWx1ZSkKQEAgLTEzNzYsMTAgKzExNTYsMTAgQEAgaW50IGFtZGdwdV9kcG1fc2V0X21jbGtf b2Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHZhbHVlKQogCWlmIChpc19z dXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCWlmIChwcF9mdW5jcy0+c2V0X21jbGtfb2QpCi0JCXBwX2Z1 bmNzLT5zZXRfbWNsa19vZChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB2YWx1ZSk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJaWYgKHBwX2Z1bmNzLT5zZXRfbWNsa19vZCkg eworCQlzY29wZWRfZ3VhcmQobXV0ZXgsICZhZGV2LT5wbS5tdXRleCkKKwkJCXBwX2Z1bmNzLT5z ZXRfbWNsa19vZChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB2YWx1ZSk7CisJfQogCiAJaWYg KGFtZGdwdV9kcG1fZGlzcGF0Y2hfdGFzayhhZGV2LAogCQkJCSAgICAgQU1EX1BQX1RBU0tfUkVB REpVU1RfUE9XRVJfU1RBVEUsCkBAIC0xMzk1LDE3MCArMTE3NSwxMzAgQEAgaW50IGFtZGdwdV9k cG1fZ2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJ CQkgICAgICBjaGFyICpidWYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVu Y3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBw X2Z1bmNzLT5nZXRfcG93ZXJfcHJvZmlsZV9tb2RlKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9wb3dl cl9wcm9maWxlX21vZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCko JmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9wb3dlcl9wcm9maWxlX21v ZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgICAgIGJ1Zik7Ci0JbXV0ZXhf dW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9zZXRfcG93ZXJfcHJvZmlsZV9tb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CQkJCSAgICAgIGxvbmcgKmlucHV0LCB1aW50MzJfdCBzaXplKQogewogCWNvbnN0IHN0cnVjdCBh bWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCBy ZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZSkKIAkJcmV0 dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3Mt PnNldF9wb3dlcl9wcm9maWxlX21vZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFy ZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9wb3dlcl9w cm9maWxlX21vZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgICAgIGlucHV0 LAogCQkJCQkgICAgICAgc2l6ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0K LQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfZ3B1X21ldHJpY3Moc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHZvaWQgKip0YWJsZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1k X3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0 ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9ncHVfbWV0cmljcykKIAkJcmV0dXJuIDA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9ncHVf bWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2dwdV9tZXRyaWNzKGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUsCiAJCQkJCXRhYmxlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIHNzaXplX3QgYW1kZ3B1X2RwbV9nZXRfcG1fbWV0 cmljcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdm9pZCAqcG1fbWV0cmljcywKIAkJCQkg IHNpemVfdCBzaXplKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0g YWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5j cy0+Z2V0X3BtX21ldHJpY3MpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X3BtX21ldHJpY3MoYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwgcG1fbWV0cmljcywKKwlndWFyZChtdXRleCkoJmFkZXYtPnBt Lm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9wbV9tZXRyaWNzKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsIHBtX21ldHJpY3MsCiAJCQkJICAgICAgIHNpemUpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1f Z2V0X2Zhbl9jb250cm9sX21vZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAg IHVpbnQzMl90ICpmYW5fbW9kZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICgh cHBfZnVuY3MtPmdldF9mYW5fY29udHJvbF9tb2RlKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9mYW5f Y29udHJvbF9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZh ZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfZmFuX2NvbnRyb2xfbW9kZShh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgIGZhbl9tb2RlKTsKLQltdXRleF91 bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVf ZHBtX3NldF9mYW5fc3BlZWRfcHdtKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSB1 aW50MzJfdCBzcGVlZCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9 IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVu Y3MtPnNldF9mYW5fc3BlZWRfcHdtKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPnNldF9mYW5fc3BlZWRfcHdt KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3B3bShhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlLAogCQkJCQkgIHNwZWVkKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9mYW5fc3BlZWRfcHdt KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSB1aW50MzJfdCAqc3BlZWQpCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZmFuX3NwZWVkX3B3 bSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfZmFuX3NwZWVkX3B3bShhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5j cy0+Z2V0X2Zhbl9zcGVlZF9wd20oYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICBz cGVlZCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0Owog fQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfZmFuX3NwZWVkX3JwbShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIAkJCQkgdWludDMyX3QgKnNwZWVkKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1f ZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAw OwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X2Zhbl9zcGVlZF9ycG0pCiAJCXJldHVybiAtRU9QTk9U U1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+ Z2V0X2Zhbl9zcGVlZF9ycG0oYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcnBt KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgc3BlZWQpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1f c2V0X2Zhbl9zcGVlZF9ycG0oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJIHVpbnQz Ml90IHNwZWVkKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRl di0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ c2V0X2Zhbl9zcGVlZF9ycG0pCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2Zhbl9zcGVlZF9ycG0oYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsK KwlyZXR1cm4gcHBfZnVuY3MtPnNldF9mYW5fc3BlZWRfcnBtKGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGUsCiAJCQkJCSAgc3BlZWQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwot Ci0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X2Zhbl9jb250cm9sX21vZGUo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgIHVpbnQzMl90IG1vZGUpCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfZmFuX2NvbnRyb2xf bW9kZSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfZmFuX2NvbnRyb2xfbW9kZShhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBw cF9mdW5jcy0+c2V0X2Zhbl9jb250cm9sX21vZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwK IAkJCQkJICAgICBtb2RlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJl dHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9wb3dlcl9saW1pdChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKQEAgLTE1NjcsMTkgKzEzMDcsMTUgQEAgaW50IGFtZGdwdV9kcG1f Z2V0X3Bvd2VyX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgICAgIGVu dW0gcHBfcG93ZXJfdHlwZSBwb3dlcl90eXBlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVu Y3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwog CiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3Bvd2VyX2xpbWl0KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7 CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9w b3dlcl9saW1pdChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRl di0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3Bvd2VyX2xpbWl0KGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCWxpbWl0LAogCQkJCQlwcF9saW1pdF9sZXZlbCwKIAkJ CQkJcG93ZXJfdHlwZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1 cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfcG93ZXJfbGltaXQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCkBAIC0xNTg3LDMxICsxMzIzLDIyIEBAIGludCBhbWRncHVfZHBtX3Nl dF9wb3dlcl9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgICAgICB1aW50 MzJfdCBsaW1pdCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3Mt PnNldF9wb3dlcl9saW1pdCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPnNldF9wb3dlcl9saW1pdChhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBwcF9mdW5jcy0+c2V0X3Bvd2VyX2xpbWl0KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJ CQkJCWxpbWl0X3R5cGUsIGxpbWl0KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsK LQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2lzX2NjbGtfZHBtX3N1cHBvcnRl ZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKLQlib29sIGNjbGtfZHBtX3N1cHBvcnRl ZCA9IGZhbHNlOwotCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIGZh bHNlOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCWNjbGtfZHBtX3N1cHBvcnRl ZCA9IGlzX3N1cHBvcnRfY2Nsa19kcG0oYWRldik7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQlyZXR1cm4gKGludCljY2xrX2RwbV9zdXBwb3J0ZWQ7CisJZ3VhcmQobXV0ZXgp KCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIGlzX3N1cHBvcnRfY2Nsa19kcG0oYWRldik7CiB9 CiAKIGludCBhbWRncHVfZHBtX2RlYnVnZnNfcHJpbnRfY3VycmVudF9wZXJmb3JtYW5jZV9sZXZl bChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTE2MjIsMTAgKzEzNDksOSBAQCBpbnQg YW1kZ3B1X2RwbV9kZWJ1Z2ZzX3ByaW50X2N1cnJlbnRfcGVyZm9ybWFuY2VfbGV2ZWwoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZQogCWlmICghcHBfZnVuY3MtPmRlYnVnZnNfcHJpbnRfY3VycmVu dF9wZXJmb3JtYW5jZV9sZXZlbCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCXBw X2Z1bmNzLT5kZWJ1Z2ZzX3ByaW50X2N1cnJlbnRfcGVyZm9ybWFuY2VfbGV2ZWwoYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCQkgIG0pOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNjM1LDE4ICsxMzYxLDE0IEBAIGludCBhbWRn cHVfZHBtX2dldF9zbXVfcHJ2X2J1Zl9kZXRhaWxzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCQkJCSAgICAgICBzaXplX3QgKnNpemUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5j cyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAK IAlpZiAoIXBwX2Z1bmNzLT5nZXRfc211X3Bydl9idWZfZGV0YWlscykKIAkJcmV0dXJuIC1FTk9T WVM7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdl dF9zbXVfcHJ2X2J1Zl9kZXRhaWxzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfc211X3Bydl9i dWZfZGV0YWlscyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkJYWRkciwKIAkJCQkJ CXNpemUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK IH0KIAogaW50IGFtZGdwdV9kcG1faXNfb3ZlcmRyaXZlX3N1cHBvcnRlZChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKQEAgLTE2OTgsNyArMTQyMCw2IEBAIGludCBhbWRncHVfZHBtX3NldF9w cF90YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgICBzaXplX3Qgc2l6ZSkK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghYnVmIHx8ICFzaXplKQogCQlyZXR1 cm4gLUVJTlZBTDsKQEAgLTE3MDYsMTMgKzE0MjcsMTAgQEAgaW50IGFtZGdwdV9kcG1fc2V0X3Bw X3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCWlmIChhbWRncHVfc3Jpb3ZfdmYo YWRldikgfHwgIXBwX2Z1bmNzLT5zZXRfcHBfdGFibGUgfHwgYWRldi0+c2NwbV9lbmFibGVkKQog CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0J cmV0ID0gcHBfZnVuY3MtPnNldF9wcF90YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X3Bw X3RhYmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJICAgICBidWYsCiAJCQkJICAg ICBzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7 CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9udW1fY3B1X2NvcmVzKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQpAQCAtMTczNywxNyArMTQ1NSwxMyBAQCBpbnQgYW1kZ3B1X2RwbV9kaXNwbGF5 X2NvbmZpZ3VyYXRpb25fY2hhbmdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkg ICAgY29uc3Qgc3RydWN0IGFtZF9wcF9kaXNwbGF5X2NvbmZpZ3VyYXRpb24gKmlucHV0KQogewog CWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBw X2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ZGlzcGxheV9jb25maWd1 cmF0aW9uX2NoYW5nZSkKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmRpc3BsYXlfY29uZmlndXJhdGlvbl9jaGFuZ2UoYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gcHBfZnVuY3MtPmRpc3BsYXlfY29uZmlndXJhdGlvbl9jaGFuZ2UoYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKIAkJCQkJCSAgICAgaW5wdXQpOwotCW11dGV4X3VubG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Nsb2Nr X2J5X3R5cGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xNzU1LDM1ICsxNDY5LDI3 IEBAIGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogCQkJCSBzdHJ1Y3QgYW1kX3BwX2Nsb2NrcyAqY2xvY2tzKQogewogCWNvbnN0IHN0 cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwot CWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5cGUpCiAJCXJl dHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5nZXRfY2xvY2tfYnlfdHlwZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5 cGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICB0eXBlLAogCQkJCQkgIGNsb2Nr cyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQog CiBpbnQgYW1kZ3B1X2RwbV9nZXRfZGlzcGxheV9tb2RlX3ZhbGlkYXRpb25fY2xrcyhzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJCXN0cnVjdCBhbWRfcHBfc2ltcGxlX2Nsb2NrX2lu Zm8gKmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3Mt PmdldF9kaXNwbGF5X21vZGVfdmFsaWRhdGlvbl9jbG9ja3MpCiAJCXJldHVybiAwOwogCi0JbXV0 ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfZGlzcGxheV9t b2RlX3ZhbGlkYXRpb25fY2xvY2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfZGlzcGxheV9t b2RlX3ZhbGlkYXRpb25fY2xvY2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJ ICAgY2xvY2tzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlX3dpdGhfbGF0ZW5jeShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTE3OTEsMTggKzE0OTcsMTQgQEAgaW50IGFt ZGdwdV9kcG1fZ2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF9sYXRlbmN5KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAogCQkJCQkgICAgICBzdHJ1Y3QgcHBfY2xvY2tfbGV2ZWxzX3dpdGhfbGF0ZW5j eSAqY2xvY2tzKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRl di0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ Z2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF9sYXRlbmN5KQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5cGVf d2l0aF9sYXRlbmN5KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZh ZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfY2xvY2tfYnlfdHlwZV93aXRo X2xhdGVuY3koYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCSAgICAgICB0eXBlLAog CQkJCQkJICAgICAgIGNsb2Nrcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0K LQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZV93aXRo X3ZvbHRhZ2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xODEwLDY5ICsxNTEyLDUz IEBAIGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlX3dpdGhfdm9sdGFnZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICAgICAgc3RydWN0IHBwX2Nsb2NrX2xldmVsc193 aXRoX3ZvbHRhZ2UgKmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICgh cHBfZnVuY3MtPmdldF9jbG9ja19ieV90eXBlX3dpdGhfdm9sdGFnZSkKIAkJcmV0dXJuIDA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9jbG9j a19ieV90eXBlX3dpdGhfdm9sdGFnZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5 X3R5cGVfd2l0aF92b2x0YWdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICAg ICAgdHlwZSwKIAkJCQkJCSAgICAgICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3dhdGVybWFy a3NfZm9yX2Nsb2Nrc19yYW5nZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAg ICAgICB2b2lkICpjbG9ja19yYW5nZXMpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAq cHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlp ZiAoIXBwX2Z1bmNzLT5zZXRfd2F0ZXJtYXJrc19mb3JfY2xvY2tzX3JhbmdlcykKIAkJcmV0dXJu IC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBw X2Z1bmNzLT5zZXRfd2F0ZXJtYXJrc19mb3JfY2xvY2tzX3JhbmdlcyhhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9m dW5jcy0+c2V0X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19yYW5nZXMoYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZSwKIAkJCQkJCQkgY2xvY2tfcmFuZ2VzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2Rpc3BsYXlfY2xv Y2tfdm9sdGFnZV9yZXF1ZXN0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkgICAg IHN0cnVjdCBwcF9kaXNwbGF5X2Nsb2NrX3JlcXVlc3QgKmNsb2NrKQogewogCWNvbnN0IHN0cnVj dCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWlu dCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ZGlzcGxheV9jbG9ja192b2x0YWdlX3JlcXVl c3QpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQlyZXQgPSBwcF9mdW5jcy0+ZGlzcGxheV9jbG9ja192b2x0YWdlX3JlcXVlc3QoYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gcHBfZnVuY3MtPmRpc3BsYXlfY2xvY2tfdm9sdGFnZV9yZXF1ZXN0KGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICAgICBjbG9jayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfY3Vy cmVudF9jbG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICBzdHJ1Y3QgYW1k X3BwX2Nsb2NrX2luZm8gKmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpw cF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlm ICghcHBfZnVuY3MtPmdldF9jdXJyZW50X2Nsb2NrcykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwog Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfY3Vy cmVudF9jbG9ja3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9jdXJyZW50X2Nsb2NrcyhhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogdm9pZCBhbWRncHVfZHBtX25v dGlmeV9zbXVfZW5hYmxlX3B3ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTE4ODIs NDMgKzE1NjgsMzQgQEAgdm9pZCBhbWRncHVfZHBtX25vdGlmeV9zbXVfZW5hYmxlX3B3ZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAlpZiAoIXBwX2Z1bmNzLT5ub3RpZnlfc211X2VuYWJs ZV9wd2UpCiAJCXJldHVybjsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFy ZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlwcF9mdW5jcy0+bm90aWZ5X3NtdV9lbmFibGVf cHdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfYWN0aXZlX2Rpc3BsYXlfY291bnQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCXVpbnQzMl90IGNvdW50KQogewogCWNvbnN0 IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNz OwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X2FjdGl2ZV9kaXNwbGF5X2Nv dW50KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0JcmV0ID0gcHBfZnVuY3MtPnNldF9hY3RpdmVfZGlzcGxheV9jb3VudChhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBwcF9mdW5jcy0+c2V0X2FjdGl2ZV9kaXNwbGF5X2NvdW50KGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGUsCiAJCQkJCQkgY291bnQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwot Ci0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X21pbl9kZWVwX3NsZWVwX2Rj ZWZjbGsoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAgdWludDMyX3QgY2xvY2sp CiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBs YXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfbWluX2Rl ZXBfc2xlZXBfZGNlZmNsaykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfbWluX2RlZXBfc2xlZXBfZGNl ZmNsayhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0u bXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X21pbl9kZWVwX3NsZWVwX2RjZWZjbGsoYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCSAgIGNsb2NrKTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIHZvaWQgYW1kZ3B1X2RwbV9z ZXRfaGFyZF9taW5fZGNlZmNsa19ieV9mcmVxKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApA QCAtMTkyOSwxMCArMTYwNiw5IEBAIHZvaWQgYW1kZ3B1X2RwbV9zZXRfaGFyZF9taW5fZGNlZmNs a19ieV9mcmVxKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCWlmICghcHBfZnVuY3MtPnNl dF9oYXJkX21pbl9kY2VmY2xrX2J5X2ZyZXEpCiAJCXJldHVybjsKIAotCW11dGV4X2xvY2soJmFk ZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlwcF9mdW5j cy0+c2V0X2hhcmRfbWluX2RjZWZjbGtfYnlfZnJlcShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAogCQkJCQkgICAgICAgY2xvY2spOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwog fQogCiB2b2lkIGFtZGdwdV9kcG1fc2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKQEAgLTE5NDMsNDQgKzE2MTksMzUgQEAgdm9pZCBhbWRncHVfZHBt X3NldF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJ aWYgKCFwcF9mdW5jcy0+c2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcSkKIAkJcmV0dXJuOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0 ZXgpOwogCXBwX2Z1bmNzLT5zZXRfaGFyZF9taW5fZmNsa19ieV9mcmVxKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCiAJCQkJCSAgICBjbG9jayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7CiB9CiAKIGludCBhbWRncHVfZHBtX2Rpc3BsYXlfZGlzYWJsZV9tZW1vcnlfY2xvY2tf c3dpdGNoKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkJICAgYm9vbCBkaXNhYmxl X21lbW9yeV9jbG9ja19zd2l0Y2gpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBf ZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAo IXBwX2Z1bmNzLT5kaXNwbGF5X2Rpc2FibGVfbWVtb3J5X2Nsb2NrX3N3aXRjaCkKIAkJcmV0dXJu IDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmRp c3BsYXlfZGlzYWJsZV9tZW1vcnlfY2xvY2tfc3dpdGNoKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5k aXNwbGF5X2Rpc2FibGVfbWVtb3J5X2Nsb2NrX3N3aXRjaChhZGV2LT5wb3dlcnBsYXkucHBfaGFu ZGxlLAogCQkJCQkJCSAgICBkaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2gpOwotCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9k cG1fZ2V0X21heF9zdXN0YWluYWJsZV9jbG9ja3NfYnlfZGMoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiAJCQkJCQlzdHJ1Y3QgcHBfc211X252X2Nsb2NrX3RhYmxlICptYXhfY2xvY2tzKQog ewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5 LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X21heF9zdXN0 YWluYWJsZV9jbG9ja3NfYnlfZGMpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X21heF9zdXN0YWluYWJs ZV9jbG9ja3NfYnlfZGMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCko JmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9tYXhfc3VzdGFpbmFibGVf Y2xvY2tzX2J5X2RjKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJIG1heF9jbG9j a3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0K IAogZW51bSBwcF9zbXVfc3RhdHVzIGFtZGdwdV9kcG1fZ2V0X3VjbGtfZHBtX3N0YXRlcyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTE5ODgsMzUgKzE2NTUsMjcgQEAgZW51bSBwcF9z bXVfc3RhdHVzIGFtZGdwdV9kcG1fZ2V0X3VjbGtfZHBtX3N0YXRlcyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAkJCQkJCSAgdW5zaWduZWQgaW50ICpudW1fc3RhdGVzKQogewogCWNvbnN0 IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNz OwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3VjbGtfZHBtX3N0YXRlcykK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHBwX2Z1bmNzLT5nZXRfdWNsa19kcG1fc3RhdGVzKGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNz LT5nZXRfdWNsa19kcG1fc3RhdGVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAg ICBjbG9ja192YWx1ZXNfaW5fa2h6LAogCQkJCQkgICAgbnVtX3N0YXRlcyk7Ci0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2Rw bV9nZXRfZHBtX2Nsb2NrX3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAg IHN0cnVjdCBkcG1fY2xvY2tzICpjbG9ja190YWJsZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3Bt X2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0g MDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9kcG1fY2xvY2tfdGFibGUpCiAJCXJldHVybiAtRU9Q Tk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5j cy0+Z2V0X2RwbV9jbG9ja190YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2RwbV9jbG9j a190YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgY2xvY2tfdGFibGUp OwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAog LyoqCkBAIC0yMDM3LDE3ICsxNjk2LDEzIEBAIHNzaXplX3QgYW1kZ3B1X2RwbV9nZXRfdGVtcF9t ZXRyaWNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICBlbnVtIHNtdV90ZW1w X21ldHJpY190eXBlIHR5cGUsIHZvaWQgKnRhYmxlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1f ZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQ7CiAK IAlpZiAoIXBwX2Z1bmNzLT5nZXRfdGVtcF9tZXRyaWNzIHx8CiAJICAgICFhbWRncHVfZHBtX2lz X3RlbXBfbWV0cmljc19zdXBwb3J0ZWQoYWRldiwgdHlwZSkpCiAJCXJldHVybiAtRU9QTk9UU1VQ UDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0 X3RlbXBfbWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlLCB0YWJsZSk7Ci0J bXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3RlbXBfbWV0cmlj cyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlLCB0YWJsZSk7CiB9CiAKIC8qKgpAQCAt MjA2NCwxOSArMTcxOSwxNSBAQCBib29sIGFtZGdwdV9kcG1faXNfdGVtcF9tZXRyaWNzX3N1cHBv cnRlZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICBlbnVtIHNtdV90ZW1wX21l dHJpY190eXBlIHR5cGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3Mg PSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JYm9vbCBzdXBwb3J0X3RlbXBfbWV0cmljcyA9 IGZhbHNlOwogCiAJaWYgKCFwcF9mdW5jcy0+dGVtcF9tZXRyaWNzX2lzX3N1cHBvcnRlZCkKLQkJ cmV0dXJuIHN1cHBvcnRfdGVtcF9tZXRyaWNzOworCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoaXNf c3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CQlzdXBwb3J0X3RlbXBfbWV0cmljcyA9Ci0JCQlwcF9mdW5jcy0+dGVtcF9tZXRyaWNzX2lzX3N1 cHBvcnRlZChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlKTsKLQkJbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJ CXJldHVybiBmYWxzZTsKIAotCXJldHVybiBzdXBwb3J0X3RlbXBfbWV0cmljczsKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnRlbXBfbWV0cmljc19p c19zdXBwb3J0ZWQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSk7CiB9CiAKIC8qKgpA QCAtMjA5OCwxNyArMTc0OSwxMyBAQCBzc2l6ZV90IGFtZGdwdV9kcG1fZ2V0X3hjcF9tZXRyaWNz KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBpbnQgeGNwX2lkLAogCQkJCSAgIHZvaWQgKnRh YmxlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93 ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3hj cF9tZXRyaWNzKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK LQlyZXQgPSBwcF9mdW5jcy0+Z2V0X3hjcF9tZXRyaWNzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsIHhjcF9pZCwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBf ZnVuY3MtPmdldF94Y3BfbWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB4Y3BfaWQs CiAJCQkJCXRhYmxlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVy biByZXQ7CiB9CiAKIGNvbnN0IHN0cnVjdCByYXNfc211X2RydiAqYW1kZ3B1X2RwbV9nZXRfcmFz X3NtdV9kcml2ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCi0tIAoyLjQzLjAKCg==