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 38DEACD37B7 for ; Sun, 10 May 2026 10:07:17 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 97B6D10E154; Sun, 10 May 2026 10:07:05 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; secure) header.d=usp.br header.i=@usp.br header.b="R0kWnzcm"; dkim-atps=neutral Received: from mail-dl1-f54.google.com (mail-dl1-f54.google.com [74.125.82.54]) by gabe.freedesktop.org (Postfix) with ESMTPS id C7A1C10E5E4 for ; Fri, 8 May 2026 11:13:23 +0000 (UTC) Received: by mail-dl1-f54.google.com with SMTP id a92af1059eb24-12713e56abdso1270885c88.1 for ; Fri, 08 May 2026 04:13:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=usp.br; s=usp-google; t=1778238802; x=1778843602; 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=czJ6B0XO34Ora6wY3Zg8cVbAKKwy3PiJZ2oOscMxnwo=; b=R0kWnzcml3GdrHVVzR5A8GgBnp4tIoE/hEBrNKDdy7eTh++soOEICVQqHIxnz96KR/ 180jOrbi41s69K41oLB6Fmci3R2/ffYubnF0M/m0JurTvO5uwlXoKonBC3JFtoy6jEBP kKuKezK9QhLhd/gkfSscV+/1UbPv1nbREyvDzR3cjDQFpAst5LyADnAGfMA42dtFig2B WcCmxWb5FIqIK9UmQiIGdmRdHBMDJvDXOhGqREJ7KBz+2/SGWcuA/r03dWumEANox8Uz XmZWHKEpPKN+Xos0i7w3fCx7H+Xd+WPZ58LL2BpkNVBl7wbgx5eX2Hc+Gfw+diaEeaEE Jrtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778238802; x=1778843602; 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=czJ6B0XO34Ora6wY3Zg8cVbAKKwy3PiJZ2oOscMxnwo=; b=KLkT0YVJqilXk176OJ+FjQIW0N1lXaW7iY0gVcYjMn4HjRgUdA7s7Q+K8b/mO/RMba zs7Qt2+cylxGw0vywPlGz2JN2oQ7VNIJrEJ35vH/7agzxdiypU+2zxw3hiRjNDKk2MEM vyEs5jXdYVkRwfgGWemwf5fGBVndi6bkcz3OShj2MGRaWfVw2arjUf54YvWCNKYcjuRE rSMn9Auf7NW7+XoBybQWmfEXvTJnyapG7u6U/HAVJtp5wE0G1dzTs38hswcRJNl2ZQLy W7wWZ9zCEjJsboQAMJJVjCDOjlc/u7azYn4mIC7ekCOPw51m4szdW7/mGIz2kEi+w26F UssQ== X-Forwarded-Encrypted: i=1; AFNElJ82xp59qbTAYWNSy2Idk+KEqUbu95ExfcK1UYzIPye3cp+/zQOQ48imd7yGKOmKD8CqTGvaNXvQfRg=@lists.freedesktop.org X-Gm-Message-State: AOJu0YwrximdPBvne2OycRrBrSFwH1ga7XhP1LZZg55+HVsb2wXPc25s RvD53gToOQLvz70lg7TMlKtbQ15qc4vaUpuw/35Og9is5mqpkOi6cL3U9tSF2SUpyx0= X-Gm-Gg: AeBDieu8A9LG1+Lv4laY04k2TBZY1LaxLuxcfRRbhhD2E5KeKFhPxmAzSrHJrpWAxCj FMr4j1Trm12PzXLQ8cRZARDBhTn0INmbKp3TKIRj4hFZWlyCtODan7/o6OQR5LbrhgPaNnhGpjh WgFMiuGJdSUDAamBS0F7uNtyOv2LpFCw1BBhp4+JuDWHQMEr7sfk//q2HqRKNIOZXaqdKxoPJ8p HLIWA0vNtDpXZ4CaU9dpXJx1WIbL6W/8lh2PWlOoQL1OhBrHGHY+JmqJyxgYGMdojy+yYbRY5tg PYmqJmKv3u4rYx/tFc0IUyVsz7GvffEBtjtGyr2rabf46CCmuT//5o/dO2/Rp57w76cqyOfLiCM yiWEUjvFsSq/lgLOkdds38Pnq9w7tuHAZJ2Sunc5qMkNJ4af+j+O+M2lve0pRT14UFg9nSQqUL7 ONMBPp/176I7X5UOkcnJyHyHEiPEhSeSwO4aLkoYhfzcQ2EKd+p6tVtO5a8gWgvql/3rcDeCF62 lgRttWkYYblCsLdLME= X-Received: by 2002:a05:7022:160a:b0:132:2555:92f3 with SMTP id a92af1059eb24-1323af9edc0mr2580876c88.14.1778238802150; Fri, 08 May 2026 04:13:22 -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-1327810ffb9sm2303227c88.2.2026.05.08.04.13.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 04:13:21 -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, Andre Jun Hirata Subject: [PATCH v2] drm/amd/pm: Use guard(mutex) instead of manual lock+unlock Date: Fri, 8 May 2026 08:12:13 -0300 Message-ID: <20260508111213.53309-1-andrejhirata@usp.br> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508024744.6523-1-andrejhirata@usp.br> References: <20260508024744.6523-1-andrejhirata@usp.br> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Mailman-Approved-At: Sun, 10 May 2026 10:07:04 +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 ZXJtZXNhbmdhYnJpZWxAdXNwLmJyPgotLS0KdjI6IGluY29ycG9yYXRlIENocmlzdGlhbiBLw7Zu aWcncyBzdWdnZXN0aW9uczoKICAtIHVzZSByZXR1cm4gZigpIGRpcmVjdGx5IGluc3RlYWQgb2Yg cmV0ID0gZigpOyByZXR1cm4gcmV0OwogIC0gdXNlIGVhcmx5IHJldHVybiBwYXR0ZXJuIGJlZm9y ZSBndWFyZCgpIHdoZXJlIGFwcGxpY2FibGUKCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdw dV9kcG0uYyB8IDg0NyArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMjY0IGluc2VydGlvbnMoKyksIDU4MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG0v YW1kZ3B1X2RwbS5jCmluZGV4IGZlYWRmNjA0Yi4uNDU4Mzk4NWNlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L3BtL2FtZGdwdV9kcG0uYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImFtZF9wY2llLmgi CiAjaW5jbHVkZSAiYW1kZ3B1X2Rpc3BsYXkuaCIKICNpbmNsdWRlICJod21nci5oIgorI2luY2x1 ZGUgPGxpbnV4L2NsZWFudXAuaD4KICNpbmNsdWRlIDxsaW51eC9wb3dlcl9zdXBwbHkuaD4KICNp bmNsdWRlICJhbWRncHVfc211LmgiCiAKQEAgLTQxLDMzICs0MiwyNSBAQAogaW50IGFtZGdwdV9k cG1fZ2V0X3NjbGsoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgbG93KQogewogCWNv bnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1 bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3NjbGspCiAJCXJldHVy biAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5n ZXRfc2NsaygoYWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfc2NsaygoYWRldiktPnBvd2VycGxh eS5wcF9oYW5kbGUsCiAJCQkJIGxvdyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfbWNsayhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwgYm9vbCBsb3cpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5j cyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAK IAlpZiAoIXBwX2Z1bmNzLT5nZXRfbWNsaykKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9tY2xrKChhZGV2KS0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4g cHBfZnVuY3MtPmdldF9tY2xrKChhZGV2KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkgbG93 KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAK IGludCBhbWRncHVfZHBtX3NldF9wb3dlcmdhdGluZ19ieV9zbXUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCkBAIC04MCwxMyArNzMsMTIgQEAgaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyZ2F0 aW5nX2J5X3NtdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAllbnVtIGlwX3Bvd2VyX3N0 YXRlIHB3cl9zdGF0ZSA9IGdhdGUgPyBQT1dFUl9TVEFURV9PRkYgOiBQT1dFUl9TVEFURV9PTjsK IAlib29sIGlzX3ZjbiA9IGJsb2NrX3R5cGUgPT0gQU1EX0lQX0JMT0NLX1RZUEVfVkNOOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5t dXRleCk7CiAJaWYgKGF0b21pY19yZWFkKCZhZGV2LT5wbS5wd3Jfc3RhdGVbYmxvY2tfdHlwZV0p ID09IHB3cl9zdGF0ZSAmJgogCQkJKCFpc192Y24gfHwgYWRldi0+dmNuLm51bV92Y25faW5zdCA9 PSAxKSkgewogCQlkZXZfZGJnKGFkZXYtPmRldiwgIklQIGJsb2NrJWQgYWxyZWFkeSBpbiB0aGUg dGFyZ2V0ICVzIHN0YXRlISIsCiAJCQkJYmxvY2tfdHlwZSwgZ2F0ZSA/ICJnYXRlIiA6ICJ1bmdh dGUiKTsKLQkJZ290byBvdXRfdW5sb2NrOworCQlyZXR1cm4gcmV0OwogCX0KIAogCXN3aXRjaCAo YmxvY2tfdHlwZSkgewpAQCAtMTE1LDkgKzEwNyw2IEBAIGludCBhbWRncHVfZHBtX3NldF9wb3dl cmdhdGluZ19ieV9zbXUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJaWYgKCFyZXQpCiAJ CWF0b21pY19zZXQoJmFkZXYtPnBtLnB3cl9zdGF0ZVtibG9ja190eXBlXSwgcHdyX3N0YXRlKTsK IAotb3V0X3VubG9jazoKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQogCXJldHVy biByZXQ7CiB9CiAKQEAgLTEyNiw5ICsxMTUsOSBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfZ2Z4X3Bv d2VyX3VwX2J5X2ltdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAlzdHJ1Y3Qgc211X2Nv bnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7CiAJaW50IHJldCA9IC1FT1BO T1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9zZXRf Z2Z4X3Bvd2VyX3VwX2J5X2ltdShzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OworCXNjb3BlZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KSB7CisJCXJldCA9IHNtdV9z ZXRfZ2Z4X3Bvd2VyX3VwX2J5X2ltdShzbXUpOworCX0KIAogCW1zbGVlcCgxMCk7CiAKQEAgLTEz OSw0NCArMTI4LDMxIEBAIGludCBhbWRncHVfZHBtX2JhY29fZW50ZXIoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1 bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwog CS8qIGVudGVyIEJBQ08gc3RhdGUgKi8KLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2FzaWNfYmFjb19z dGF0ZShwcF9oYW5kbGUsIDEpOwotCi0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0K LQlyZXR1cm4gcmV0OworCXJldHVybiBwcF9mdW5jcy0+c2V0X2FzaWNfYmFjb19zdGF0ZShwcF9o YW5kbGUsIDEpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9iYWNvX2V4aXQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1 bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwog CS8qIGV4aXQgQkFDTyBzdGF0ZSAqLwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0 YXRlKHBwX2hhbmRsZSwgMCk7Ci0KLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQot CXJldHVybiByZXQ7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKHBwX2hh bmRsZSwgMCk7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9tcDFfc3RhdGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgIGVudW0gcHBfbXAxX3N0YXRlIG1wMV9zdGF0ZSkKIHsK LQlpbnQgcmV0ID0gMDsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAogCWlmIChtcDFfc3RhdGUgPT0gUFBfTVAxX1NUQVRF X0ZMUikgewpAQCAtMTg0LDIzICsxNjAsMTkgQEAgaW50IGFtZGdwdV9kcG1fc2V0X21wMV9zdGF0 ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJaWYgKGFtZGdwdV9zcmlvdl92ZihhZGV2 KSkKIAkJCWFkZXYtPnBtLmRwbV9lbmFibGVkID0gZmFsc2U7CiAJfSBlbHNlIGlmIChwcF9mdW5j cyAmJiBwcF9mdW5jcy0+c2V0X21wMV9zdGF0ZSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQkJcmV0ID0gcHBfZnVuY3MtPnNldF9tcDFfc3RhdGUoCisJCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCQlyZXR1cm4gcHBfZnVuY3MtPnNldF9tcDFfc3RhdGUoCiAJ CQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQltcDFfc3RhdGUpOwotCi0JCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCX0KIAotCXJldHVybiByZXQ7CisJcmV0dXJuIDA7 CiB9CiAKIGludCBhbWRncHVfZHBtX2lzX2JhY29fc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRl di0+cG93ZXJwbGF5LnBwX2Z1bmNzOwogCXZvaWQgKnBwX2hhbmRsZSA9IGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGU7Ci0JaW50IHJldDsKIAogCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5n ZXRfYXNpY19iYWNvX2NhcGFiaWxpdHkpCiAJCXJldHVybiAwOwpAQCAtMjE2LDQ5ICsxODgsMzIg QEAgaW50IGFtZGdwdV9kcG1faXNfYmFjb19zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiAJaWYgKGFkZXYtPmluX3MzKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFk ZXYtPnBtLm11dGV4KTsKLQotCXJldCA9IHBwX2Z1bmNzLT5nZXRfYXNpY19iYWNvX2NhcGFiaWxp dHkocHBfaGFuZGxlKTsKLQotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0 dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVu Y3MtPmdldF9hc2ljX2JhY29fY2FwYWJpbGl0eShwcF9oYW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9tb2RlMl9yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBz dHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsK IAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQg PSAwOwogCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPmFzaWNfcmVzZXRfbW9kZV8yKQog CQlyZXR1cm4gLUVOT0VOVDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJl dCA9IHBwX2Z1bmNzLT5hc2ljX3Jlc2V0X21vZGVfMihwcF9oYW5kbGUpOwotCi0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRl di0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+YXNpY19yZXNldF9tb2RlXzIocHBfaGFu ZGxlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZW5hYmxlX2dmeF9mZWF0dXJlcyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5j cyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcyB8fCAh cHBfZnVuY3MtPmFzaWNfcmVzZXRfZW5hYmxlX2dmeF9mZWF0dXJlcykKIAkJcmV0dXJuIC1FTk9F TlQ7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXQgPSBwcF9mdW5jcy0+ YXNpY19yZXNldF9lbmFibGVfZ2Z4X2ZlYXR1cmVzKHBwX2hhbmRsZSk7Ci0KLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5hc2ljX3Jlc2V0X2VuYWJsZV9nZnhfZmVh dHVyZXMocHBfaGFuZGxlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fYmFjb19yZXNldChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTI3MCw3NSArMjI1LDY0IEBAIGludCBhbWRncHVfZHBt X2JhY29fcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKCFwcF9mdW5jcyB8 fCAhcHBfZnVuY3MtPnNldF9hc2ljX2JhY29fc3RhdGUpCiAJCXJldHVybiAtRU5PRU5UOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0 ZXgpOwogCiAJLyogZW50ZXIgQkFDTyBzdGF0ZSAqLwogCXJldCA9IHBwX2Z1bmNzLT5zZXRfYXNp Y19iYWNvX3N0YXRlKHBwX2hhbmRsZSwgMSk7CiAJaWYgKHJldCkKLQkJZ290byBvdXQ7CisJCXJl dHVybiByZXQ7CiAKIAkvKiBleGl0IEJBQ08gc3RhdGUgKi8KIAlyZXQgPSBwcF9mdW5jcy0+c2V0 X2FzaWNfYmFjb19zdGF0ZShwcF9oYW5kbGUsIDApOwotCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7CiAJcmV0dXJuIHJldDsKIH0KIAogYm9vbCBhbWRncHVfZHBtX2lzX21v ZGUxX3Jlc2V0X3N1cHBvcnRlZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1 Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JYm9vbCBz dXBwb3J0X21vZGUxX3Jlc2V0ID0gZmFsc2U7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRl dikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlzdXBwb3J0X21vZGUxX3Jl c2V0ID0gc211X21vZGUxX3Jlc2V0X2lzX3N1cHBvcnQoc211KTsKLQkJbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7CisJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkgeworCQlyZXR1 cm4gZmFsc2U7CiAJfQogCi0JcmV0dXJuIHN1cHBvcnRfbW9kZTFfcmVzZXQ7CisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9tb2RlMV9yZXNldF9pc19zdXBwb3J0 KHNtdSkKIH0KIAogaW50IGFtZGdwdV9kcG1fbW9kZTFfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKIAotCWlmIChpc19zdXBwb3J0X3N3 X3NtdShhZGV2KSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHNt dV9tb2RlMV9yZXNldChzbXUpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlp ZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKSB7CisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAl9 CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBzbXVfbW9kZTFfcmVzZXQoc211KTsKIH0KIAogYm9vbCBhbWRncHVfZHBtX2lzX2xpbmtfcmVz ZXRfc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBzbXVf Y29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlib29sIHN1cHBvcnRf bGlua19yZXNldCA9IGZhbHNlOwogCiAJaWYgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKSB7Ci0J CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJc3VwcG9ydF9saW5rX3Jlc2V0ID0gc211 X2xpbmtfcmVzZXRfaXNfc3VwcG9ydChzbXUpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAotCXJldHVybiBzdXBwb3J0X2xpbmtfcmVzZXQ7 CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9saW5rX3Jlc2V0 X2lzX3N1cHBvcnQoc211KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fbGlua19yZXNldChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IC1FT1BOT1RTVVBQOwogCi0JaWYgKGlz X3N1cHBvcnRfc3dfc211KGFkZXYpKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK LQkJcmV0ID0gc211X2xpbmtfcmVzZXQoc211KTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7CisJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkgeworCQlyZXR1cm4gLUVPUE5P VFNVUFA7CiAJfQogCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKKwlyZXR1cm4gc211X2xpbmtfcmVzZXQoc211KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc3dp dGNoX3Bvd2VyX3Byb2ZpbGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0zNDYsMTAw ICsyOTAsODggQEAgaW50IGFtZGdwdV9kcG1fc3dpdGNoX3Bvd2VyX3Byb2ZpbGUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgIGJvb2wgZW4pCiB7CiAJY29uc3Qgc3RydWN0IGFt ZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJl dCA9IDA7CiAKIAlpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKQogCQlyZXR1cm4gMDsKIAotCWlm IChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c3dpdGNoX3Bvd2VyX3Byb2ZpbGUpIHsKLQkJbXV0ZXhf bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+c3dpdGNoX3Bvd2VyX3By b2ZpbGUoCi0JCQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlLCBlbik7Ci0JCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5z d2l0Y2hfcG93ZXJfcHJvZmlsZSkgeworCQlyZXR1cm4gMDsJCiAJfQogCi0JcmV0dXJuIHJldDsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnN3aXRj aF9wb3dlcl9wcm9maWxlKAorCQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSwgZW4p OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9wYXVzZV9wb3dlcl9wcm9maWxlKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCQkJCSAgIGJvb2wgcGF1c2UpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9w bV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9 IDA7CiAKIAlpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKQogCQlyZXR1cm4gMDsKIAotCWlmIChw cF9mdW5jcyAmJiBwcF9mdW5jcy0+cGF1c2VfcG93ZXJfcHJvZmlsZSkgewotCQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5wYXVzZV9wb3dlcl9wcm9maWxl KAotCQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgcGF1c2UpOwotCQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+cGF1c2VfcG93 ZXJfcHJvZmlsZSkgeworCQlyZXR1cm4gMDsKIAl9CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+cGF1c2VfcG93ZXJfcHJv ZmlsZSgKKwkJCWFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHBhdXNlKTsKIH0KIAogaW50IGFt ZGdwdV9kcG1fc2V0X3hnbWlfcHN0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJ ICAgICAgIHVpbnQzMl90IHBzdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpw cF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAotCWlm IChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c2V0X3hnbWlfcHN0YXRlKSB7Ci0JCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnNldF94Z21pX3BzdGF0ZShhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLAotCQkJCQkJCQlwc3RhdGUpOwotCQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+c2V0X3hnbWlf cHN0YXRlKSB7CisJCXJldHVybiAwOwogCX0KIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgp KCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfeGdtaV9wc3RhdGUoYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwkJCQkJCQkJcHN0YXRlKTsKIH0KIAogaW50IGFtZGdw dV9kcG1fc2V0X2RmX2NzdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgICAg dWludDMyX3QgY3N0YXRlKQogewotCWludCByZXQgPSAwOwogCWNvbnN0IHN0cnVjdCBhbWRfcG1f ZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwogCXZvaWQgKnBwX2hh bmRsZSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBf ZnVuY3MtPnNldF9kZl9jc3RhdGUpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CQlyZXQgPSBwcF9mdW5jcy0+c2V0X2RmX2NzdGF0ZShwcF9oYW5kbGUsIGNzdGF0ZSk7Ci0JCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNz LT5zZXRfZGZfY3N0YXRlKSB7CisJCXJldHVybiAwOwogCX0KIAotCXJldHVybiByZXQ7CisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfZGZfY3N0 YXRlKHBwX2hhbmRsZSwgY3N0YXRlKTsKIH0KIAogc3NpemVfdCBhbWRncHVfZHBtX2dldF9wbV9w b2xpY3lfaW5mbyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgICBlbnVtIHBw X3BtX3BvbGljeSBwX3R5cGUsIGNoYXIgKmJ1ZikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNt dSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IC1FT1BOT1RTVVBQOwog Ci0JaWYgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQkJcmV0ID0gc211X2dldF9wbV9wb2xpY3lfaW5mbyhzbXUsIHBfdHlwZSwgYnVm KTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJaWYgKCFpc19zdXBwb3J0X3N3 X3NtdShhZGV2KSkgeworCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJfQogCi0JcmV0dXJuIHJldDsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X2dldF9wbV9wb2xp Y3lfaW5mbyhzbXUsIHBfdHlwZSwgYnVmKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3BtX3Bv bGljeShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgaW50IHBvbGljeV90eXBlLAogCQkJICAg ICBpbnQgcG9saWN5X2xldmVsKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAKLQlpZiAoaXNf c3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CQlyZXQgPSBzbXVfc2V0X3BtX3BvbGljeShzbXUsIHBvbGljeV90eXBlLCBwb2xpY3lfbGV2ZWwp OwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlpZiAoIWlzX3N1cHBvcnRfc3df c211KGFkZXYpKSB7CisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAl9CiAKLQlyZXR1cm4gcmV0Owor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfc2V0X3BtX3BvbGlj eShzbXUsIHBvbGljeV90eXBlLCBwb2xpY3lfbGV2ZWwpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9l bmFibGVfbWdwdV9mYW5fYm9vc3Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC00NDcs MTUgKzM3OSwxMyBAQCBpbnQgYW1kZ3B1X2RwbV9lbmFibGVfbWdwdV9mYW5fYm9vc3Qoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZTsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9CiAJCQlh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKLQlpZiAocHBfZnVuY3Mg JiYgcHBfZnVuY3MtPmVuYWJsZV9tZ3B1X2Zhbl9ib29zdCkgewotCQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5lbmFibGVfbWdwdV9mYW5fYm9vc3QocHBf aGFuZGxlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJaWYgKCFwcF9mdW5j cyB8fCAhcHBfZnVuY3MtPmVuYWJsZV9tZ3B1X2Zhbl9ib29zdCkgeworCQlyZXR1cm4gMDsKIAl9 CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBwcF9mdW5jcy0+ZW5hYmxlX21ncHVfZmFuX2Jvb3N0KHBwX2hhbmRsZSk7CiB9CiAKIGludCBh bWRncHVfZHBtX3NldF9jbG9ja2dhdGluZ19ieV9zbXUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCkBAIC00NjQsMTYgKzM5NCwxNCBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfY2xvY2tnYXRpbmdf Ynlfc211KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCXZvaWQgKnBwX2hhbmRsZSA9IGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBf ZnVuY3MgPQogCQkJYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCi0J aWYgKHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5zZXRfY2xvY2tnYXRpbmdfYnlfc211KSB7Ci0JCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnNldF9jbG9ja2dh dGluZ19ieV9zbXUocHBfaGFuZGxlLAotCQkJCQkJICAgICAgIG1zZ19pZCk7Ci0JCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5zZXRf Y2xvY2tnYXRpbmdfYnlfc211KSB7CisJCXJldHVybiAwOwogCX0KIAotCXJldHVybiByZXQ7CisJ Z3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfY2xv Y2tnYXRpbmdfYnlfc211KHBwX2hhbmRsZSwKKwkJCQkJCSAgICAgICBtc2dfaWQpOwogfQogCiBp bnQgYW1kZ3B1X2RwbV9zbXVfaTJjX2J1c19hY2Nlc3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCkBAIC00ODIsMjIgKzQxMCwyMCBAQCBpbnQgYW1kZ3B1X2RwbV9zbXVfaTJjX2J1c19hY2Nl c3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZTsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5j cyA9CiAJCQlhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IC1FT1BOT1RTVVBQ OwogCi0JaWYgKHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5zbXVfaTJjX2J1c19hY2Nlc3MpIHsKLQkJ bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+c211X2kyY19i dXNfYWNjZXNzKHBwX2hhbmRsZSwKLQkJCQkJCSAgIGFjcXVpcmUpOwotCQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+c211X2kyY19i dXNfYWNjZXNzKSB7CisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAl9CiAKLQlyZXR1cm4gcmV0Owor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiA9IHBwX2Z1bmNzLT5zbXVf aTJjX2J1c19hY2Nlc3MocHBfaGFuZGxlLAorCQkJCQkJICAgYWNxdWlyZSk7CiB9CiAKIHZvaWQg YW1kZ3B1X3BtX2FjcGlfZXZlbnRfaGFuZGxlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK IHsKIAlpZiAoYWRldi0+cG0uZHBtX2VuYWJsZWQpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOworCQlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAkJaWYgKHBvd2VyX3N1 cHBseV9pc19zeXN0ZW1fc3VwcGxpZWQoKSA+IDApCiAJCQlhZGV2LT5wbS5hY19wb3dlciA9IHRy dWU7CiAJCWVsc2UKQEAgLTUxMCw3ICs0MzYsNiBAQCB2b2lkIGFtZGdwdV9wbV9hY3BpX2V2ZW50 X2hhbmRsZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCWlmIChpc19zdXBwb3J0X3N3 X3NtdShhZGV2KSkKIAkJCXNtdV9zZXRfYWNfZGMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7 CiAKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAJfQogfQogCkBAIC01MTgsNDkg KzQ0Myw0MyBAQCBpbnQgYW1kZ3B1X2RwbV9yZWFkX3NlbnNvcihzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwgZW51bSBhbWRfcHBfc2Vuc29ycyBzZW5zbwogCQkJICAgdm9pZCAqZGF0YSwgdWlu dDMyX3QgKnNpemUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IC1FSU5WQUw7CiAKIAlpZiAoIWRh dGEgfHwgIXNpemUpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKHBwX2Z1bmNzICYmIHBwX2Z1 bmNzLT5yZWFkX3NlbnNvcikgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJl dCA9IHBwX2Z1bmNzLT5yZWFkX3NlbnNvcihhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWlm ICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5yZWFkX3NlbnNvcikgeworCQlyZXR1cm4gLUVJTlZB TDsKKwl9CisKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVu Y3MtPnJlYWRfc2Vuc29yKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICBzZW5z b3IsCiAJCQkJCSAgICBkYXRhLAogCQkJCQkgICAgc2l6ZSk7Ci0JCW11dGV4X3VubG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCX0KLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dl dF9hcHVfdGhlcm1hbF9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3Qg KmxpbWl0KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+ cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKIAotCWlmIChwcF9m dW5jcyAmJiBwcF9mdW5jcy0+Z2V0X2FwdV90aGVybWFsX2xpbWl0KSB7Ci0JCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPmdldF9hcHVfdGhlcm1hbF9saW1p dChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBsaW1pdCk7Ci0JCW11dGV4X3VubG9jaygmYWRl di0+cG0ubXV0ZXgpOworCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5nZXRfYXB1X3RoZXJt YWxfbGltaXQpIHsKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCX0KIAotCXJldHVybiByZXQ7CisJ Z3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfYXB1 X3RoZXJtYWxfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgbGltaXQpOwogfQogCiBp bnQgYW1kZ3B1X2RwbV9zZXRfYXB1X3RoZXJtYWxfbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHVpbnQzMl90IGxpbWl0KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAtRU9QTk9UU1VQ UDsKIAotCWlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c2V0X2FwdV90aGVybWFsX2xpbWl0KSB7 Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnNldF9h cHVfdGhlcm1hbF9saW1pdChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBsaW1pdCk7Ci0JCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNz LT5zZXRfYXB1X3RoZXJtYWxfbGltaXQpIHsKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCX0KIAot CXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBw X2Z1bmNzLT5zZXRfYXB1X3RoZXJtYWxfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwg bGltaXQpOwogfQogCiB2b2lkIGFtZGdwdV9kcG1fY29tcHV0ZV9jbG9ja3Moc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCkBAIC01ODMsOSArNTAyLDggQEAgdm9pZCBhbWRncHVfZHBtX2NvbXB1 dGVfY2xvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCQkJYW1kZ3B1X2ZlbmNlX3dh aXRfZW1wdHkocmluZyk7CiAJfQogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCXBwX2Z1bmNzLT5wbV9jb21wdXRlX2Nsb2Nr cyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKIH0KIAogdm9pZCBhbWRncHVfZHBtX2VuYWJsZV91dmQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsIGJvb2wgZW5hYmxlKQpAQCAtNTkzLDE0ICs1MTEsMTQgQEAgdm9pZCBhbWRncHVf ZHBtX2VuYWJsZV91dmQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgZW5hYmxlKQog CWludCByZXQgPSAwOwogCiAJaWYgKGFkZXYtPmZhbWlseSA9PSBBTURHUFVfRkFNSUxZX1NJKSB7 Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJaWYgKGVuYWJsZSkgewotCQkJYWRl di0+cG0uZHBtLnV2ZF9hY3RpdmUgPSB0cnVlOwotCQkJYWRldi0+cG0uZHBtLnN0YXRlID0gUE9X RVJfU1RBVEVfVFlQRV9JTlRFUk5BTF9VVkQ7Ci0JCX0gZWxzZSB7Ci0JCQlhZGV2LT5wbS5kcG0u dXZkX2FjdGl2ZSA9IGZhbHNlOworCQlzY29wZWRfZ3VhcmQobXV0ZXgsICZhZGV2LT5wbS5tdXRl eCkgeworCQkJaWYgKGVuYWJsZSkgeworCQkJCWFkZXYtPnBtLmRwbS51dmRfYWN0aXZlID0gdHJ1 ZTsKKwkJCQlhZGV2LT5wbS5kcG0uc3RhdGUgPSBQT1dFUl9TVEFURV9UWVBFX0lOVEVSTkFMX1VW RDsKKwkJCX0gZWxzZSB7CisJCQkJYWRldi0+cG0uZHBtLnV2ZF9hY3RpdmUgPSBmYWxzZTsKKwkJ CX0KIAkJfQotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKIAogCQlhbWRncHVfZHBt X2NvbXB1dGVfY2xvY2tzKGFkZXYpOwogCQlyZXR1cm47CkBAIC02MjcsMTUgKzU0NSwxNSBAQCB2 b2lkIGFtZGdwdV9kcG1fZW5hYmxlX3ZjZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9v bCBlbmFibGUpCiAJaW50IHJldCA9IDA7CiAKIAlpZiAoYWRldi0+ZmFtaWx5ID09IEFNREdQVV9G QU1JTFlfU0kpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlpZiAoZW5hYmxl KSB7Ci0JCQlhZGV2LT5wbS5kcG0udmNlX2FjdGl2ZSA9IHRydWU7Ci0JCQkvKiBYWFggc2VsZWN0 IHZjZSBsZXZlbCBiYXNlZCBvbiByaW5nL3Rhc2sgKi8KLQkJCWFkZXYtPnBtLmRwbS52Y2VfbGV2 ZWwgPSBBTURfVkNFX0xFVkVMX0FDX0FMTDsKLQkJfSBlbHNlIHsKLQkJCWFkZXYtPnBtLmRwbS52 Y2VfYWN0aXZlID0gZmFsc2U7CisJCXNjb3BlZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4 KSB7CisJCQlpZiAoZW5hYmxlKSB7CisJCQkJYWRldi0+cG0uZHBtLnZjZV9hY3RpdmUgPSB0cnVl OworCQkJCS8qIFhYWCBzZWxlY3QgdmNlIGxldmVsIGJhc2VkIG9uIHJpbmcvdGFzayAqLworCQkJ CWFkZXYtPnBtLmRwbS52Y2VfbGV2ZWwgPSBBTURfVkNFX0xFVkVMX0FDX0FMTDsKKwkJCX0gZWxz ZSB7CisJCQkJYWRldi0+cG0uZHBtLnZjZV9hY3RpdmUgPSBmYWxzZTsKKwkJCX0KIAkJfQotCQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKIAogCQlhbWRncHVfZHBtX2NvbXB1dGVfY2xv Y2tzKGFkZXYpOwogCQlyZXR1cm47CkBAIC02NzAsMzkgKzU4OCwzNCBAQCB2b2lkIGFtZGdwdV9k cG1fZW5hYmxlX3ZwZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBlbmFibGUpCiBp bnQgYW1kZ3B1X3BtX2xvYWRfc211X2Zpcm13YXJlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCB1aW50MzJfdCAqc211X3ZlcnNpb24pCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAq cHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHIgPSAwOworCWludCBy ZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPmxvYWRfZmlybXdhcmUgfHwK IAkgICAgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpICYmIChhZGV2LT5mbGFncyAmIEFNRF9JU19B UFUpKSkKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JciA9 IHBwX2Z1bmNzLT5sb2FkX2Zpcm13YXJlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCWlm IChyKSB7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0ID0gcHBfZnVuY3Mt PmxvYWRfZmlybXdhcmUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CisJaWYgKHJldCkgewog CQlwcl9lcnIoInNtdSBmaXJtd2FyZSBsb2FkaW5nIGZhaWxlZFxuIik7Ci0JCWdvdG8gb3V0Owor CQlyZXR1cm4gcmV0OwogCX0KIAogCWlmIChzbXVfdmVyc2lvbikKIAkJKnNtdV92ZXJzaW9uID0g YWRldi0+cG0uZndfdmVyc2lvbjsKIAotb3V0OgotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCXJldHVybiByOworCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2hhbmRs ZV9wYXNzdGhyb3VnaF9zYnIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgZW5hYmxl KQogewotCWludCByZXQgPSAwOwotCi0JaWYgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKSB7Ci0J CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gc211X2hhbmRsZV9wYXNzdGhy b3VnaF9zYnIoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKLQkJCQkJCSBlbmFibGUpOwotCQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFk ZXYpKSB7CisJCXJldHVybiAwOwogCX0KIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZh ZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9oYW5kbGVfcGFzc3Rocm91Z2hfc2JyKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsCisJCQkJCQkgZW5hYmxlKTsKIH0KIAogaW50IGFtZGdwdV9k cG1fc2VuZF9oYm1fYmFkX3BhZ2VzX251bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWlu dDMyX3Qgc2l6ZSkKQEAgLTcxMywxMSArNjI2LDggQEAgaW50IGFtZGdwdV9kcG1fc2VuZF9oYm1f YmFkX3BhZ2VzX251bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3Qgc2l6ZSkK IAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3NlbmRfaGJtX2JhZF9w YWdlc19udW0oc211LCBzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQot CXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNt dV9zZW5kX2hibV9iYWRfcGFnZXNfbnVtKHNtdSwgc2l6ZSk7CiB9CiAKIGludCBhbWRncHVfZHBt X3NlbmRfaGJtX2JhZF9jaGFubmVsX2ZsYWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVp bnQzMl90IHNpemUpCkBAIC03MjgsMTEgKzYzOCw4IEBAIGludCBhbWRncHVfZHBtX3NlbmRfaGJt X2JhZF9jaGFubmVsX2ZsYWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHNp CiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwog Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9zZW5kX2hibV9iYWRf Y2hhbm5lbF9mbGFnKHNtdSwgc2l6ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBzbXVfc2VuZF9oYm1fYmFkX2NoYW5uZWxfZmxhZyhzbXUsIHNpemUpOwogfQogCiBpbnQgYW1k Z3B1X2RwbV9zZW5kX3JtYV9yZWFzb24oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC03 NDMsMTEgKzY1MCw4IEBAIGludCBhbWRncHVfZHBtX3NlbmRfcm1hX3JlYXNvbihzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1 cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0g c211X3NlbmRfcm1hX3JlYXNvbihzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1 cm4gc211X3NlbmRfcm1hX3JlYXNvbihzbXUpOwogfQogCiAvKioKQEAgLTc2NiwxMSArNjcwLDgg QEAgYm9vbCBhbWRncHVfZHBtX3Jlc2V0X3NkbWFfaXNfc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KQogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiBm YWxzZTsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfcmVzZXRf c2RtYV9pc19zdXBwb3J0ZWQoc211KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsK LQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJu IHNtdV9yZXNldF9zZG1hX2lzX3N1cHBvcnRlZChzbXUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9y ZXNldF9zZG1hKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCBpbnN0X21hc2sp CkBAIC03ODEsMTEgKzY4Miw4IEBAIGludCBhbWRncHVfZHBtX3Jlc2V0X3NkbWEoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IGluc3RfbWFzaykKIAlpZiAoIWlzX3N1cHBvcnRf c3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3Jlc2V0X3NkbWEoc211LCBpbnN0X21hc2spOwotCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3Jlc2V0X3NkbWEoc211LCBpbnN0X21h c2spOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9yZXNldF92Y24oc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHVpbnQzMl90IGluc3RfbWFzaykKQEAgLTc5NiwxMSArNjk0LDggQEAgaW50IGFtZGdw dV9kcG1fcmVzZXRfdmNuKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCBpbnN0 X21hc2spCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9yZXNldF92 Y24oc211LCBpbnN0X21hc2spOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211 X3Jlc2V0X3ZjbihzbXUsIGluc3RfbWFzayk7CiB9CiAKIGJvb2wgYW1kZ3B1X2RwbV9yZXNldF92 Y25faXNfc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQpAQCAtODExLDExICs3 MDYsOCBAQCBib29sIGFtZGdwdV9kcG1fcmVzZXRfdmNuX2lzX3N1cHBvcnRlZChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1 cm4gZmFsc2U7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3Jl c2V0X3Zjbl9pc19zdXBwb3J0ZWQoc211KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0 dXJuIHNtdV9yZXNldF92Y25faXNfc3VwcG9ydGVkKHNtdSk7CiB9CiAKIGludCBhbWRncHVfZHBt X2dldF9kcG1fZnJlcV9yYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTgyMywy MiArNzE1LDE3IEBAIGludCBhbWRncHVfZHBtX2dldF9kcG1fZnJlcV9yYW5nZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKIAkJCQkgIHVpbnQzMl90ICptaW4sCiAJCQkJICB1aW50MzJfdCAq bWF4KQogewotCWludCByZXQgPSAwOwotCiAJaWYgKHR5cGUgIT0gUFBfU0NMSykKIAkJcmV0dXJu IC1FSU5WQUw7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVP UE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X2dl dF9kcG1fZnJlcV9yYW5nZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfZ2V0X2RwbV9mcmVxX3JhbmdlKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJICAgICBTTVVfU0NMSywKIAkJCQkgICAgIG1pbiwK IAkJCQkgICAgIG1heCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1 cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfc29mdF9mcmVxX3JhbmdlKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LApAQCAtODYyLDE2ICs3NDksMTIgQEAgaW50IGFtZGdwdV9kcG1f c2V0X3NvZnRfZnJlcV9yYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIGludCBhbWRn cHVfZHBtX3dyaXRlX3dhdGVybWFya3NfdGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl OwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0 dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3dyaXRl X3dhdGVybWFya3NfdGFibGUoc211KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsK LQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJu IHNtdV93cml0ZV93YXRlcm1hcmtzX3RhYmxlKHNtdSk7CiB9CiAKIGludCBhbWRncHVfZHBtX3dh aXRfZm9yX2V2ZW50KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtODc5LDc2ICs3NjIs NTYgQEAgaW50IGFtZGdwdV9kcG1fd2FpdF9mb3JfZXZlbnQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiAJCQkgICAgICB1aW50NjRfdCBldmVudF9hcmcpCiB7CiAJc3RydWN0IHNtdV9jb250 ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJ aWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV93YWl0X2Zvcl9ldmVudChz bXUsIGV2ZW50LCBldmVudF9hcmcpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwot Ci0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4g c211X3dhaXRfZm9yX2V2ZW50KHNtdSwgZXZlbnQsIGV2ZW50X2FyZyk7CiB9CiAKIGludCBhbWRn cHVfZHBtX3NldF9yZXNpZGVuY3lfZ2Z4b2ZmKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBi b29sIHZhbHVlKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRl dikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQlyZXQgPSBzbXVfc2V0X3Jlc2lkZW5jeV9nZnhvZmYoc211LCB2YWx1ZSk7Ci0JbXV0ZXhf dW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgm YWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfc2V0X3Jlc2lkZW5jeV9nZnhvZmYoc211LCB2 YWx1ZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9yZXNpZGVuY3lfZ2Z4b2ZmKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCB1MzIgKnZhbHVlKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAq c211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICgh aXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4 X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfZ2V0X3Jlc2lkZW5jeV9nZnhvZmYo c211LCB2YWx1ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4g cmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfZ2V0X3Jl c2lkZW5jeV9nZnhvZmYoc211LCB2YWx1ZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9lbnRy eWNvdW50X2dmeG9mZihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTY0ICp2YWx1ZSkKIHsK IAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0J aW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4g LUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211 X2dldF9lbnRyeWNvdW50X2dmeG9mZihzbXUsIHZhbHVlKTsKLQltdXRleF91bmxvY2soJmFkZXYt PnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CisJcmV0dXJuIHNtdV9nZXRfZW50cnljb3VudF9nZnhvZmYoc211LCB2YWx1ZSk7CiB9CiAK IGludCBhbWRncHVfZHBtX2dldF9zdGF0dXNfZ2Z4b2ZmKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCB1aW50MzJfdCAqdmFsdWUpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0 X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9nZXRfc3RhdHVzX2dmeG9mZihzbXUsIHZhbHVlKTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9nZXRfc3RhdHVzX2dmeG9mZihz bXUsIHZhbHVlKTsKIH0KIAogdWludDY0X3QgYW1kZ3B1X2RwbV9nZXRfdGhlcm1hbF90aHJvdHRs aW5nX2NvdW50ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC05NjksMjggKzgzMiwy MyBAQCB1aW50NjRfdCBhbWRncHVfZHBtX2dldF90aGVybWFsX3Rocm90dGxpbmdfY291bnRlcihz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHZvaWQgYW1kZ3B1X2RwbV9nZnhfc3RhdGVfY2hh bmdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSBlbnVtIGdmeF9jaGFuZ2Vfc3Rh dGUgc3RhdGUpCiB7Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOwogCWlmIChhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3MgJiYKIAkg ICAgYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5nZnhfc3RhdGVfY2hhbmdlX3NldCkKIAkJKChh ZGV2KS0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5nZnhfc3RhdGVfY2hhbmdlX3NldCgKIAkJCShhZGV2 KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgc3RhdGUpKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2VjY19pbmZvKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCQkJICAgIHZvaWQgKnVtY19lY2MpCiB7CiAJc3RydWN0IHNtdV9jb250 ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJ aWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9nZXRfZWNjX2luZm8oc211 LCB1bWNfZWNjKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9nZXRfZWNj X2luZm8oc211LCB1bWNfZWNjKTsKIH0KIAogc3RydWN0IGFtZF92Y2Vfc3RhdGUgKmFtZGdwdV9k cG1fZ2V0X3ZjZV9jbG9ja19zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTEw MDIsMTIgKzg2MCw5IEBAIHN0cnVjdCBhbWRfdmNlX3N0YXRlICphbWRncHVfZHBtX2dldF92Y2Vf Y2xvY2tfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJaWYgKCFwcF9mdW5jcy0+ Z2V0X3ZjZV9jbG9ja19zdGF0ZSkKIAkJcmV0dXJuIE5VTEw7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JdnN0YXRlID0gcHBfZnVuY3MtPmdldF92Y2VfY2xvY2tfc3RhdGUoYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsK KwlyZXR1cm4gcHBfZnVuY3MtPmdldF92Y2VfY2xvY2tfc3RhdGUoYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZSwKIAkJCQkJICAgICAgIGlkeCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0KLQlyZXR1cm4gdnN0YXRlOwogfQogCiB2b2lkIGFtZGdwdV9kcG1fZ2V0X2N1cnJlbnRf cG93ZXJfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xMDE1LDExICs4NzAs MTEgQEAgdm9pZCBhbWRncHVfZHBtX2dldF9jdXJyZW50X3Bvd2VyX3N0YXRlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNz ID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0 ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCiAJaWYgKCFwcF9mdW5jcy0+ Z2V0X2N1cnJlbnRfcG93ZXJfc3RhdGUpIHsKIAkJKnN0YXRlID0gYWRldi0+cG0uZHBtLnVzZXJf c3RhdGU7Ci0JCWdvdG8gb3V0OworCQlyZXR1cm47CiAJfQogCiAJKnN0YXRlID0gcHBfZnVuY3Mt PmdldF9jdXJyZW50X3Bvd2VyX3N0YXRlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwpAQCAt MTAyNywxNiArODgyLDE1IEBAIHZvaWQgYW1kZ3B1X2RwbV9nZXRfY3VycmVudF9wb3dlcl9zdGF0 ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkgICAgKnN0YXRlID4gUE9XRVJfU1RBVEVf VFlQRV9JTlRFUk5BTF8zRFBFUkYpCiAJCSpzdGF0ZSA9IGFkZXYtPnBtLmRwbS51c2VyX3N0YXRl OwogCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuOwogfQog CiB2b2lkIGFtZGdwdV9kcG1fc2V0X3Bvd2VyX3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAogCQkJCWVudW0gYW1kX3BtX3N0YXRlX3R5cGUgc3RhdGUpCiB7Ci0JbXV0ZXhfbG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCWFkZXYtPnBtLmRwbS51c2VyX3N0YXRlID0gc3RhdGU7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJc2NvcGVkX2d1YXJkKG11dGV4LCAmYWRldi0+ cG0ubXV0ZXgpIHsKKwkJYWRldi0+cG0uZHBtLnVzZXJfc3RhdGUgPSBzdGF0ZTsKKwl9CiAKIAlp ZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybjsKQEAgLTEwNTUsMTIgKzkwOSwx MSBAQCBlbnVtIGFtZF9kcG1fZm9yY2VkX2xldmVsIGFtZGdwdV9kcG1fZ2V0X3BlcmZvcm1hbmNl X2xldmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlCiAJaWYgKCFwcF9mdW5jcykKIAkJcmV0dXJuIEFN RF9EUE1fRk9SQ0VEX0xFVkVMX0FVVE87CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7 CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJaWYgKHBwX2Z1bmNzLT5nZXRfcGVy Zm9ybWFuY2VfbGV2ZWwpCiAJCWxldmVsID0gcHBfZnVuY3MtPmdldF9wZXJmb3JtYW5jZV9sZXZl bChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKIAllbHNlCiAJCWxldmVsID0gYWRldi0+cG0u ZHBtLmZvcmNlZF9sZXZlbDsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKIAogCXJl dHVybiBsZXZlbDsKIH0KQEAgLTExNTEsMTcgKzEwMDQsMTMgQEAgaW50IGFtZGdwdV9kcG1fZ2V0 X3BwX251bV9zdGF0ZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJIHN0cnVjdCBw cF9zdGF0ZXNfaW5mbyAqc3RhdGVzKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYg KCFwcF9mdW5jcy0+Z2V0X3BwX251bV9zdGF0ZXMpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X3BwX251 bV9zdGF0ZXMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYt PnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9wcF9udW1fc3RhdGVzKGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgc3RhdGVzKTsKLQltdXRleF91bmxvY2soJmFkZXYt PnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2Rpc3BhdGNo X3Rhc2soc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xMTY5LDI0ICsxMDE4LDE5IEBA IGludCBhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CiAJCQkgICAgICBlbnVtIGFtZF9wbV9zdGF0ZV90eXBlICp1c2VyX3N0YXRlKQogewogCWNvbnN0 IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNz OwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ZGlzcGF0Y2hfdGFza3MpCiAJCXJl dHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQg PSBwcF9mdW5jcy0+ZGlzcGF0Y2hfdGFza3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwln dWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmRpc3BhdGNo X3Rhc2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJICAgICAgIHRhc2tfaWQsCiAJ CQkJICAgICAgIHVzZXJfc3RhdGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwot Ci0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X3BwX3RhYmxlKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBjaGFyICoqdGFibGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9w bV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9 IDA7CiAKIAlpZiAoIXRhYmxlKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTExOTQsMTIgKzEwMzgs OSBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRfcHBfdGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIGNoYXIgKip0YWJsZSkKIAlpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpIHx8ICFwcF9mdW5j cy0+Z2V0X3BwX3RhYmxlIHx8IGFkZXYtPnNjcG1fZW5hYmxlZCkKIAkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5n ZXRfcHBfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKLQkJCQkgICAgIHRhYmxlKTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuID0gcHBfZnVuY3MtPmdldF9wcF90YWJs ZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCQkJCSAgICAgdGFibGUpOwogfQogCiBpbnQg YW1kZ3B1X2RwbV9zZXRfZmluZV9ncmFpbl9jbGtfdm9sKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LApAQCAtMTIwOCwxOSArMTA0OSwxNSBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfZmluZV9ncmFp bl9jbGtfdm9sKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICAgIHVpbnQzMl90 IHNpemUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5w b3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRf ZmluZV9ncmFpbl9jbGtfdm9sKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2ZpbmVfZ3JhaW5fY2xrX3ZvbChhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJl dHVybiA9IHBwX2Z1bmNzLT5zZXRfZmluZV9ncmFpbl9jbGtfdm9sKGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUsCiAJCQkJCSAgICAgICB0eXBlLAogCQkJCQkgICAgICAgaW5wdXQsCiAJCQkJCSAg ICAgICBzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX29kbl9lZGl0X2RwbV90YWJsZShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKQEAgLTEyMjksMTkgKzEwNjYsMTUgQEAgaW50IGFtZGdwdV9kcG1fb2Ru X2VkaXRfZHBtX3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgdWludDMy X3Qgc2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYt PnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPm9k bl9lZGl0X2RwbV90YWJsZSkKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPm9kbl9lZGl0X2RwbV90YWJsZShhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBw cF9mdW5jcy0+b2RuX2VkaXRfZHBtX3RhYmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJ CQkJCSAgIHR5cGUsCiAJCQkJCSAgIGlucHV0LAogCQkJCQkgICBzaXplKTsKLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBt X2VtaXRfY2xvY2tfbGV2ZWxzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTI1MCw1 MiArMTA4Myw0MCBAQCBpbnQgYW1kZ3B1X2RwbV9lbWl0X2Nsb2NrX2xldmVscyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKIAkJCQkgIGludCAqb2Zmc2V0KQogewogCWNvbnN0IHN0cnVjdCBh bWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCBy ZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ZW1pdF9jbG9ja19sZXZlbHMpCiAJCXJldHVybiAt RU5PRU5UOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5lbWl0X2Nsb2NrX2xldmVscyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+ZW1pdF9jbG9ja19sZXZl bHMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgdHlwZSwKIAkJCQkJICAgYnVm LAogCQkJCQkgICBvZmZzZXQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3BwZmVhdHVyZV9zdGF0dXMoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgIHVpbnQ2NF90IHBwZmVhdHVyZV9tYXNr cykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2Vy cGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9wcGZl YXR1cmVfc3RhdHVzKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X3BwZmVhdHVyZV9zdGF0dXMoYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBf ZnVuY3MtPnNldF9wcGZlYXR1cmVfc3RhdHVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJ CQkJCSAgICAgcHBmZWF0dXJlX21hc2tzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9wcGZlYXR1cmVfc3Rh dHVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBjaGFyICpidWYpCiB7CiAJY29uc3Qgc3Ry dWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0J aW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfcHBmZWF0dXJlX3N0YXR1cykKIAkJ cmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVu Y3MtPmdldF9wcGZlYXR1cmVfc3RhdHVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcHBmZWF0 dXJlX3N0YXR1cyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgIGJ1Zik7Ci0J bXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQg YW1kZ3B1X2RwbV9mb3JjZV9jbG9ja19sZXZlbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK QEAgLTEzMDMsMzMgKzExMjQsMjUgQEAgaW50IGFtZGdwdV9kcG1fZm9yY2VfY2xvY2tfbGV2ZWwo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJIHVpbnQzMl90IG1hc2spCiB7CiAJY29u c3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVu Y3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5mb3JjZV9jbG9ja19sZXZlbCkK IAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBf ZnVuY3MtPmZvcmNlX2Nsb2NrX2xldmVsKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5mb3JjZV9jbG9j a19sZXZlbChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHR5cGUsCiAJCQkJCSAg bWFzayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0Owog fQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfc2Nsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2Vy cGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9zY2xr X29kKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9zY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwln dWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9zY2xr X29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRf c2Nsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCkBAIC0x MzM5LDEwICsxMTUyLDEwIEBAIGludCBhbWRncHVfZHBtX3NldF9zY2xrX29kKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCB2YWx1ZSkKIAlpZiAoaXNfc3VwcG9ydF9zd19zbXUo YWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQlpZiAocHBfZnVuY3MtPnNldF9zY2xrX29kKQotCQlwcF9mdW5jcy0+c2V0X3NjbGtf b2QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRl di0+cG0ubXV0ZXgpOworCXNjb3BlZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KSB7CisJ CWlmIChwcF9mdW5jcy0+c2V0X3NjbGtfb2QpCisJCQlwcF9mdW5jcy0+c2V0X3NjbGtfb2QoYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdmFsdWUpOworCX0KIAogCWlmIChhbWRncHVfZHBtX2Rp c3BhdGNoX3Rhc2soYWRldiwKIAkJCQkgICAgIEFNRF9QUF9UQVNLX1JFQURKVVNUX1BPV0VSX1NU QVRFLApAQCAtMTM1NywxNiArMTE3MCwxMiBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfc2Nsa19vZChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCiBpbnQgYW1kZ3B1X2Rw bV9nZXRfbWNsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1 Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlp bnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9tY2xrX29kKQogCQlyZXR1cm4gLUVP UE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVu Y3MtPmdldF9tY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYt PnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9tY2xrX29kKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfbWNsa19vZChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCkBAIC0xMzc2LDEwICsxMTg1LDEwIEBA IGludCBhbWRncHVfZHBtX3NldF9tY2xrX29kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1 aW50MzJfdCB2YWx1ZSkKIAlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAt RU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlpZiAocHBfZnVu Y3MtPnNldF9tY2xrX29kKQotCQlwcF9mdW5jcy0+c2V0X21jbGtfb2QoYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCXNj b3BlZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KSB7CisJCWlmIChwcF9mdW5jcy0+c2V0 X21jbGtfb2QpCisJCQlwcF9mdW5jcy0+c2V0X21jbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwgdmFsdWUpOworCX0KIAogCWlmIChhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soYWRldiwK IAkJCQkgICAgIEFNRF9QUF9UQVNLX1JFQURKVVNUX1BPV0VSX1NUQVRFLApAQCAtMTM5NSwxNzAg KzEyMDQsMTMwIEBAIGludCBhbWRncHVfZHBtX2dldF9wb3dlcl9wcm9maWxlX21vZGUoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgICAgY2hhciAqYnVmKQogewogCWNvbnN0IHN0 cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwot CWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHBwX2Z1bmNzLT5nZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1 bmNzLT5nZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJ CQkJCSAgICAgICBidWYpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0 dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgICBsb25nICppbnB1dCwgdWludDMyX3Qg c2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBv d2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9w b3dlcl9wcm9maWxlX21vZGUpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0 dXJuIHBwX2Z1bmNzLT5zZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGUsCiAJCQkJCSAgICAgICBpbnB1dCwKIAkJCQkJICAgICAgIHNpemUpOwotCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9k cG1fZ2V0X2dwdV9tZXRyaWNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB2b2lkICoqdGFi bGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dl cnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZ3B1 X21ldHJpY3MpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHBwX2Z1bmNzLT5nZXRfZ3B1X21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdl dF9ncHVfbWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQl0YWJsZSk7Ci0J bXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBzc2l6 ZV90IGFtZGdwdV9kcG1fZ2V0X3BtX21ldHJpY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs IHZvaWQgKnBtX21ldHJpY3MsCiAJCQkJICBzaXplX3Qgc2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3Qg YW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQg cmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9wbV9tZXRyaWNzKQogCQlyZXR1cm4gLUVP UE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVu Y3MtPmdldF9wbV9tZXRyaWNzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHBtX21ldHJpY3Ms CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRf cG1fbWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBwbV9tZXRyaWNzLAogCQkJCSAg ICAgICBzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9mYW5fY29udHJvbF9tb2RlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCQkJCSAgICB1aW50MzJfdCAqZmFuX21vZGUpCiB7CiAJY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7 Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZmFuX2NvbnRyb2xfbW9kZSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHBwX2Z1bmNzLT5nZXRfZmFuX2NvbnRyb2xfbW9kZShhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5j cy0+Z2V0X2Zhbl9jb250cm9sX21vZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJ ICAgICBmYW5fbW9kZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1 cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfZmFuX3NwZWVkX3B3bShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKIAkJCQkgdWludDMyX3Qgc3BlZWQpCiB7CiAJY29uc3Qgc3RydWN0 IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50 IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3B3bSkKIAkJcmV0dXJu IC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBw X2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3B3bShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X2Zhbl9z cGVlZF9wd20oYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICBzcGVlZCk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1k Z3B1X2RwbV9nZXRfZmFuX3NwZWVkX3B3bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJ CQkgdWludDMyX3QgKnNwZWVkKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1 bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFw cF9mdW5jcy0+Z2V0X2Zhbl9zcGVlZF9wd20pCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Zhbl9zcGVl ZF9wd20oYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBt Lm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcHdtKGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgc3BlZWQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Zhbl9zcGVl ZF9ycG0oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJIHVpbnQzMl90ICpzcGVlZCkK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9mYW5fc3Bl ZWRfcnBtKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcnBtKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBw X2Z1bmNzLT5nZXRfZmFuX3NwZWVkX3JwbShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJ CQkgIHNwZWVkKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9mYW5fc3BlZWRfcnBtKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCQkJCSB1aW50MzJfdCBzcGVlZCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1k X3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0 ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9mYW5fc3BlZWRfcnBtKQogCQlyZXR1cm4gLUVP UE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVu Y3MtPnNldF9mYW5fc3BlZWRfcnBtKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVk X3JwbShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHNwZWVkKTsKLQltdXRleF91 bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVf ZHBtX3NldF9mYW5fY29udHJvbF9tb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJ CSAgICB1aW50MzJfdCBtb2RlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1 bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFw cF9mdW5jcy0+c2V0X2Zhbl9jb250cm9sX21vZGUpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2Zhbl9j b250cm9sX21vZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9mYW5fY29udHJvbF9tb2RlKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgbW9kZSk7Ci0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9n ZXRfcG93ZXJfbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xNTY3LDE5ICsx MzM2LDE1IEBAIGludCBhbWRncHVfZHBtX2dldF9wb3dlcl9saW1pdChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAkJCSAgICAgICBlbnVtIHBwX3Bvd2VyX3R5cGUgcG93ZXJfdHlwZSkKIHsK IAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5w cF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9wb3dlcl9saW1p dCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfcG93ZXJfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3Mt PmdldF9wb3dlcl9saW1pdChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQlsaW1pdCwK IAkJCQkJcHBfbGltaXRfbGV2ZWwsCiAJCQkJCXBvd2VyX3R5cGUpOwotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0 X3Bvd2VyX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTU4NywxNyArMTM1 MiwxMyBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfcG93ZXJfbGltaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkgICAgICAgdWludDMyX3QgbGltaXQpCiB7CiAJY29uc3Qgc3RydWN0IGFt ZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJl dCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfcG93ZXJfbGltaXQpCiAJCXJldHVybiAtRUlO VkFMOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5z ZXRfcG93ZXJfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCko JmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9wb3dlcl9saW1pdChhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQlsaW1pdF90eXBlLCBsaW1pdCk7Ci0JbXV0ZXhf dW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9pc19jY2xrX2RwbV9zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBA IC0xNjA3LDkgKzEzNjgsOCBAQCBpbnQgYW1kZ3B1X2RwbV9pc19jY2xrX2RwbV9zdXBwb3J0ZWQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2 KSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCWNjbGtfZHBtX3N1cHBvcnRlZCA9IGlzX3N1 cHBvcnRfY2Nsa19kcG0oYWRldik7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAK IAlyZXR1cm4gKGludCljY2xrX2RwbV9zdXBwb3J0ZWQ7CiB9CkBAIC0xNjIyLDEwICsxMzgyLDkg QEAgaW50IGFtZGdwdV9kcG1fZGVidWdmc19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xldmVs KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGUKIAlpZiAoIXBwX2Z1bmNzLT5kZWJ1Z2ZzX3ByaW50 X2N1cnJlbnRfcGVyZm9ybWFuY2VfbGV2ZWwpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKIAlwcF9mdW5jcy0+ZGVidWdmc19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xldmVsKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJICBtKTsKLQltdXRleF91bmxvY2soJmFk ZXYtPnBtLm11dGV4KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTYzNSwxOCArMTM5NCwxNCBAQCBp bnQgYW1kZ3B1X2RwbV9nZXRfc211X3Bydl9idWZfZGV0YWlscyhzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIAkJCQkgICAgICAgc2l6ZV90ICpzaXplKQogewogCWNvbnN0IHN0cnVjdCBhbWRf cG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQg PSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3NtdV9wcnZfYnVmX2RldGFpbHMpCiAJCXJldHVy biAtRU5PU1lTOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1 bmNzLT5nZXRfc211X3Bydl9idWZfZGV0YWlscyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3Nt dV9wcnZfYnVmX2RldGFpbHMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCWFkZHIs CiAJCQkJCQlzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVy biByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2lzX292ZXJkcml2ZV9zdXBwb3J0ZWQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC0xNjk4LDcgKzE0NTMsNiBAQCBpbnQgYW1kZ3B1X2Rw bV9zZXRfcHBfdGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgc2l6ZV90 IHNpemUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5w b3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWJ1ZiB8fCAhc2l6ZSkK IAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xNzA2LDEzICsxNDYwLDEwIEBAIGludCBhbWRncHVfZHBt X3NldF9wcF90YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAoYW1kZ3B1X3Ny aW92X3ZmKGFkZXYpIHx8ICFwcF9mdW5jcy0+c2V0X3BwX3RhYmxlIHx8IGFkZXYtPnNjcG1fZW5h YmxlZCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfcHBfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3Mt PnNldF9wcF90YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCSAgICAgYnVmLAog CQkJCSAgICAgc2l6ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1 cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfbnVtX2NwdV9jb3JlcyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKQEAgLTE3MzcsMTcgKzE0ODgsMTMgQEAgaW50IGFtZGdwdV9kcG1f ZGlzcGxheV9jb25maWd1cmF0aW9uX2NoYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK IAkJCQkJICAgIGNvbnN0IHN0cnVjdCBhbWRfcHBfZGlzcGxheV9jb25maWd1cmF0aW9uICppbnB1 dCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2Vy cGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmRpc3BsYXlf Y29uZmlndXJhdGlvbl9jaGFuZ2UpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdl KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICAgIGlucHV0KTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dl dF9jbG9ja19ieV90eXBlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTc1NSwzNSAr MTUwMiwyNyBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKIAkJCQkgc3RydWN0IGFtZF9wcF9jbG9ja3MgKmNsb2NrcykKIHsKIAlj b25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9m dW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9jbG9ja19ieV90eXBl KQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBw cF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5cGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwln dWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9jbG9j a19ieV90eXBlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgdHlwZSwKIAkJCQkJ ICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJl dDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Nsa3Mo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCQlzdHJ1Y3QgYW1kX3BwX3NpbXBsZV9j bG9ja19pbmZvICpjbG9ja3MpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVu Y3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBw X2Z1bmNzLT5nZXRfZGlzcGxheV9tb2RlX3ZhbGlkYXRpb25fY2xvY2tzKQogCQlyZXR1cm4gMDsK IAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Rp c3BsYXlfbW9kZV92YWxpZGF0aW9uX2Nsb2NrcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiA9IHBwX2Z1bmNzLT5nZXRf ZGlzcGxheV9tb2RlX3ZhbGlkYXRpb25fY2xvY2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CiAJCQkJCQkJICAgY2xvY2tzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQot CXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlX3dpdGhf bGF0ZW5jeShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTE3OTEsMTggKzE1MzAsMTQg QEAgaW50IGFtZGdwdV9kcG1fZ2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF9sYXRlbmN5KHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkgICAgICBzdHJ1Y3QgcHBfY2xvY2tfbGV2ZWxzX3dp dGhfbGF0ZW5jeSAqY2xvY2tzKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1 bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFw cF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF9sYXRlbmN5KQogCQlyZXR1cm4gMDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Nsb2Nr X2J5X3R5cGVfd2l0aF9sYXRlbmN5KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfY2xvY2tfYnlf dHlwZV93aXRoX2xhdGVuY3koYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCSAgICAg ICB0eXBlLAogCQkJCQkJICAgICAgIGNsb2Nrcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlf dHlwZV93aXRoX3ZvbHRhZ2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xODEwLDY5 ICsxNTQ1LDUzIEBAIGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlX3dpdGhfdm9sdGFn ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICAgICAgc3RydWN0IHBwX2Nsb2Nr X2xldmVsc193aXRoX3ZvbHRhZ2UgKmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1 bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsK IAogCWlmICghcHBfZnVuY3MtPmdldF9jbG9ja19ieV90eXBlX3dpdGhfdm9sdGFnZSkKIAkJcmV0 dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3Mt PmdldF9jbG9ja19ieV90eXBlX3dpdGhfdm9sdGFnZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0 X2Nsb2NrX2J5X3R5cGVfd2l0aF92b2x0YWdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJ CQkJCQkgICAgICAgdHlwZSwKIAkJCQkJCSAgICAgICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0 X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19yYW5nZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CiAJCQkJCSAgICAgICB2b2lkICpjbG9ja19yYW5nZXMpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9w bV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9 IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfd2F0ZXJtYXJrc19mb3JfY2xvY2tzX3JhbmdlcykK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHBwX2Z1bmNzLT5zZXRfd2F0ZXJtYXJrc19mb3JfY2xvY2tzX3JhbmdlcyhhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJl dHVybiBwcF9mdW5jcy0+c2V0X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19yYW5nZXMoYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCQkgY2xvY2tfcmFuZ2VzKTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2Rp c3BsYXlfY2xvY2tfdm9sdGFnZV9yZXF1ZXN0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CQkJCQkgICAgIHN0cnVjdCBwcF9kaXNwbGF5X2Nsb2NrX3JlcXVlc3QgKmNsb2NrKQogewogCWNv bnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1 bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ZGlzcGxheV9jbG9ja192b2x0 YWdlX3JlcXVlc3QpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYt PnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+ZGlzcGxheV9jbG9ja192b2x0YWdlX3JlcXVl c3QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmRpc3BsYXlfY2xvY2tfdm9sdGFnZV9yZXF1ZXN0KGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICAgICBjbG9jayk7Ci0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2Rw bV9nZXRfY3VycmVudF9jbG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICBz dHJ1Y3QgYW1kX3BwX2Nsb2NrX2luZm8gKmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3Bt X2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0g MDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9jdXJyZW50X2Nsb2NrcykKIAkJcmV0dXJuIC1FT1BO T1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5nZXRfY3VycmVudF9jbG9ja3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9jdXJyZW50X2Ns b2NrcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICBjbG9ja3MpOwotCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogdm9pZCBhbWRn cHVfZHBtX25vdGlmeV9zbXVfZW5hYmxlX3B3ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK QEAgLTE4ODIsNDMgKzE2MDEsMzQgQEAgdm9pZCBhbWRncHVfZHBtX25vdGlmeV9zbXVfZW5hYmxl X3B3ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAlpZiAoIXBwX2Z1bmNzLT5ub3RpZnlf c211X2VuYWJsZV9wd2UpCiAJCXJldHVybjsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlwcF9mdW5jcy0+bm90aWZ5X3Nt dV9lbmFibGVfcHdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfYWN0aXZlX2Rpc3BsYXlf Y291bnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCXVpbnQzMl90IGNvdW50KQog ewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5 LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X2FjdGl2ZV9k aXNwbGF5X2NvdW50KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPnNldF9hY3RpdmVfZGlzcGxheV9jb3VudChh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgp OworCXJldHVybiBwcF9mdW5jcy0+c2V0X2FjdGl2ZV9kaXNwbGF5X2NvdW50KGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgY291bnQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X21pbl9kZWVw X3NsZWVwX2RjZWZjbGsoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAgdWludDMy X3QgY2xvY2spCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2 LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5z ZXRfbWluX2RlZXBfc2xlZXBfZGNlZmNsaykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0 ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfbWluX2RlZXBf c2xlZXBfZGNlZmNsayhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgm YWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X21pbl9kZWVwX3NsZWVwX2Rj ZWZjbGsoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCSAgIGNsb2NrKTsKLQltdXRl eF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIHZvaWQgYW1k Z3B1X2RwbV9zZXRfaGFyZF9taW5fZGNlZmNsa19ieV9mcmVxKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LApAQCAtMTkyOSwxMCArMTYzOSw5IEBAIHZvaWQgYW1kZ3B1X2RwbV9zZXRfaGFyZF9t aW5fZGNlZmNsa19ieV9mcmVxKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCWlmICghcHBf ZnVuY3MtPnNldF9oYXJkX21pbl9kY2VmY2xrX2J5X2ZyZXEpCiAJCXJldHVybjsKIAotCW11dGV4 X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsK IAlwcF9mdW5jcy0+c2V0X2hhcmRfbWluX2RjZWZjbGtfYnlfZnJlcShhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlLAogCQkJCQkgICAgICAgY2xvY2spOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwogfQogCiB2b2lkIGFtZGdwdV9kcG1fc2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTE5NDMsNDQgKzE2NTIsMzUgQEAgdm9pZCBh bWRncHVfZHBtX3NldF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiAJaWYgKCFwcF9mdW5jcy0+c2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcSkKIAkJcmV0 dXJuOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRl di0+cG0ubXV0ZXgpOwogCXBwX2Z1bmNzLT5zZXRfaGFyZF9taW5fZmNsa19ieV9mcmVxKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICBjbG9jayk7Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7CiB9CiAKIGludCBhbWRncHVfZHBtX2Rpc3BsYXlfZGlzYWJsZV9tZW1v cnlfY2xvY2tfc3dpdGNoKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkJICAgYm9v bCBkaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2gpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9m dW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7 CiAKIAlpZiAoIXBwX2Z1bmNzLT5kaXNwbGF5X2Rpc2FibGVfbWVtb3J5X2Nsb2NrX3N3aXRjaCkK IAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBf ZnVuY3MtPmRpc3BsYXlfZGlzYWJsZV9tZW1vcnlfY2xvY2tfc3dpdGNoKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBw X2Z1bmNzLT5kaXNwbGF5X2Rpc2FibGVfbWVtb3J5X2Nsb2NrX3N3aXRjaChhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAogCQkJCQkJCSAgICBkaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2gpOwot CW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50 IGFtZGdwdV9kcG1fZ2V0X21heF9zdXN0YWluYWJsZV9jbG9ja3NfYnlfZGMoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCiAJCQkJCQlzdHJ1Y3QgcHBfc211X252X2Nsb2NrX3RhYmxlICptYXhf Y2xvY2tzKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+ cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0 X21heF9zdXN0YWluYWJsZV9jbG9ja3NfYnlfZGMpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X21heF9z dXN0YWluYWJsZV9jbG9ja3NfYnlfZGMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFy ZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9tYXhfc3Vz dGFpbmFibGVfY2xvY2tzX2J5X2RjKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJ IG1heF9jbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJu IHJldDsKIH0KIAogZW51bSBwcF9zbXVfc3RhdHVzIGFtZGdwdV9kcG1fZ2V0X3VjbGtfZHBtX3N0 YXRlcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTE5ODgsMzUgKzE2ODgsMjcgQEAg ZW51bSBwcF9zbXVfc3RhdHVzIGFtZGdwdV9kcG1fZ2V0X3VjbGtfZHBtX3N0YXRlcyhzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJCSAgdW5zaWduZWQgaW50ICpudW1fc3RhdGVzKQog ewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5 LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3VjbGtfZHBt X3N0YXRlcykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfdWNsa19kcG1fc3RhdGVzKGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJu IHBwX2Z1bmNzLT5nZXRfdWNsa19kcG1fc3RhdGVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CiAJCQkJCSAgICBjbG9ja192YWx1ZXNfaW5fa2h6LAogCQkJCQkgICAgbnVtX3N0YXRlcyk7Ci0J bXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQg YW1kZ3B1X2RwbV9nZXRfZHBtX2Nsb2NrX3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCQkJCSAgIHN0cnVjdCBkcG1fY2xvY2tzICpjbG9ja190YWJsZSkKIHsKIAljb25zdCBzdHJ1 Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlp bnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9kcG1fY2xvY2tfdGFibGUpCiAJCXJl dHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQg PSBwcF9mdW5jcy0+Z2V0X2RwbV9jbG9ja190YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0 X2RwbV9jbG9ja190YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgY2xv Y2tfdGFibGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJl dDsKIH0KIAogLyoqCkBAIC0yMDM3LDE3ICsxNzI5LDEzIEBAIHNzaXplX3QgYW1kZ3B1X2RwbV9n ZXRfdGVtcF9tZXRyaWNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICBlbnVt IHNtdV90ZW1wX21ldHJpY190eXBlIHR5cGUsIHZvaWQgKnRhYmxlKQogewogCWNvbnN0IHN0cnVj dCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWlu dCByZXQ7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfdGVtcF9tZXRyaWNzIHx8CiAJICAgICFhbWRn cHVfZHBtX2lzX3RlbXBfbWV0cmljc19zdXBwb3J0ZWQoYWRldiwgdHlwZSkpCiAJCXJldHVybiAt RU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9m dW5jcy0+Z2V0X3RlbXBfbWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlLCB0 YWJsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0Owor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3Rl bXBfbWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlLCB0YWJsZSk7CiB9CiAK IC8qKgpAQCAtMjA2NCwxOSArMTc1MiwxNiBAQCBib29sIGFtZGdwdV9kcG1faXNfdGVtcF9tZXRy aWNzX3N1cHBvcnRlZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICBlbnVtIHNt dV90ZW1wX21ldHJpY190eXBlIHR5cGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAq cHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JYm9vbCBzdXBwb3J0X3RlbXBf bWV0cmljcyA9IGZhbHNlOwogCiAJaWYgKCFwcF9mdW5jcy0+dGVtcF9tZXRyaWNzX2lzX3N1cHBv cnRlZCkKLQkJcmV0dXJuIHN1cHBvcnRfdGVtcF9tZXRyaWNzOworCQlyZXR1cm4gZmFsc2U7CiAK LQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCQlzdXBwb3J0X3RlbXBfbWV0cmljcyA9Ci0JCQlwcF9mdW5jcy0+dGVtcF9tZXRy aWNzX2lzX3N1cHBvcnRlZChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlKTsKLQkJbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2 KSkgeworCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JcmV0dXJuIHN1cHBvcnRfdGVtcF9tZXRyaWNz OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+dGVt cF9tZXRyaWNzX2lzX3N1cHBvcnRlZChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlKTsK IH0KIAogLyoqCkBAIC0yMDk4LDE3ICsxNzgzLDEzIEBAIHNzaXplX3QgYW1kZ3B1X2RwbV9nZXRf eGNwX21ldHJpY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGludCB4Y3BfaWQsCiAJCQkJ ICAgdm9pZCAqdGFibGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3Mg PSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1 bmNzLT5nZXRfeGNwX21ldHJpY3MpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfeGNwX21ldHJpY3MoYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwgeGNwX2lkLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwor CXJldHVybiBwcF9mdW5jcy0+Z2V0X3hjcF9tZXRyaWNzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsIHhjcF9pZCwKIAkJCQkJdGFibGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCi0JcmV0dXJuIHJldDsKIH0KIAogY29uc3Qgc3RydWN0IHJhc19zbXVfZHJ2ICphbWRncHVf ZHBtX2dldF9yYXNfc211X2RyaXZlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKLS0gCjIu NDMuMAoK