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 8D2D2CD4851 for ; Wed, 13 May 2026 07:54:13 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2D0B210ED15; Wed, 13 May 2026 07:54:10 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; secure) header.d=usp.br header.i=@usp.br header.b="djLYzU0w"; dkim-atps=neutral Received: from mail-dl1-f48.google.com (mail-dl1-f48.google.com [74.125.82.48]) by gabe.freedesktop.org (Postfix) with ESMTPS id DADFD10E712 for ; Mon, 11 May 2026 12:42:55 +0000 (UTC) Received: by mail-dl1-f48.google.com with SMTP id a92af1059eb24-132c3280e8fso1844021c88.1 for ; Mon, 11 May 2026 05:42:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=usp.br; s=usp-google; t=1778503375; x=1779108175; 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=IIA/PCGHwUuYzFYf0JdmLWFIb4EL/tR2tlYs3hzPt0s=; b=djLYzU0wubU4rYjMDnuqvL9HzTNIS5nYrRKmwhwYbL/2SDdd90ssVL396RxVIUmpPS hb2NJA9rKWgoe7Si38khovlCURcZubGXHJ5yRUVeXkgtGNeHRJtusR7quTD1qn4d1Itd pZ4NO5ebPzEeCU9YPFO9SP0IKOWAtSbNMuxCAsQ3YUM3Buv13LjBnVAl4nsPpU5KP3nd 01oarCrkQF2p5W47lgfjl9BAvsigISlaAmmgAzGUpkckh5pSSdcP/S/Xmb9taTRSD37a JrxijQvr6csl5QRLIR7Vnd5qxxrQe4pWm2U6JzN41Rs8lVhVYuzMSOPnor5ZjzfxtCI2 +WbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778503375; x=1779108175; 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=IIA/PCGHwUuYzFYf0JdmLWFIb4EL/tR2tlYs3hzPt0s=; b=hjw34TjvcF3A37J18aT7gViAnih6EBn1OGoFrZy2lX1YjHs8H++EWMmWyPbuWGS6KJ 6hTfK/fHXIZ1xKN44HMB6Uu6C7pW/BUP6laAM9uu4w2bKfcyu+gCa6H1lN4RLqi6rPBh hqZuHgxrvdMy4R8oI26Q/y5s+v9RYjid4HlIKT25b3Um2PuI1dF8EvJUj9UHlveUnwJG 3WEl2aTlsGJoNqJ7DCKjHyfQYOusM+fKkFdkpC98yH2dXTVkJgHNtX+lNoouhBhCvObg QWkv3Fj47D/eA6oKgRfDba49ADQ+rA0xhjKdF23NoV/dUjDUHOjzHyd6vKULsX015ccj D4oQ== X-Forwarded-Encrypted: i=1; AFNElJ/Kc6nRoA0tY//dzfvk6/pKQdF00u1b+WrV/zyomvWsMdteM2yLrEdEJBOrz4LfDixA9lkJkmEqxnU=@lists.freedesktop.org X-Gm-Message-State: AOJu0Yz89j06h7o+eO0UjusOBiBc3XmzFjHjUFRD1sW/4qat0Amy7dLT 0TZCMlub9oKT2HyZGH8dFzhna6cU/UGou193M4ML6g2UqCIHbwo2GtYbTPqG5ILhe5w= X-Gm-Gg: Acq92OG0Wxy1olujmlERj9NrXdQ30uIkMX3M/+czyor/IIbk93f8GcxzTsXjKxbb6uw Ke1x/xDTlgrPaz0fAV/aoYrhU4hE2oINyNyNyibedrgA7T7qqglJ1b3LZr3+a9Bdw5AphswpsM6 RMCOsk77n9DX3vf6rwQlEXv+gShctj/k04zEDrclkZ+feXGEHUWf4yiZ75LA5L1BH3/VmZ208bm luMfF28xNHb/FOe95NEX+IUyMSaZDh4zflT39hnV9X6JKt2K2PqidghdIC5sajnoyRP5W55Cy/b dIZr736wjEPULJ2pExWM7YWK7lnJWLxQ126cuCBy7auq2YfVhuMrHBtn53S73DoJVwrfqGL+y3e 3Uhh6qKXy+stL11X67yLdfe46F8fq20GLHSMtTA5TXK8kaUQ2t1ETbAFklBcKFCMMM5mgjx4Zu8 UdbZXc2Zt+iMU7fHh7FMhud8ATgOGfzpNfC6qDLAhc8f68C0A4JsqRLN1U33sX9tA1d5xzG2v95 ohXZ4ngN0LOSmfwrLk= X-Received: by 2002:a05:7022:629:b0:130:c9cc:3395 with SMTP id a92af1059eb24-132a84f722amr4613117c88.29.1778503374676; Mon, 11 May 2026 05:42:54 -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-1327865700asm14267977c88.9.2026.05.11.05.42.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 05:42:54 -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: Andre Jun Hirata , Gabriel Dimant , Guilherme Gabriel , Yang Wang , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH v6] drm/amd/pm: Use guard(mutex) instead of manual lock+unlock Date: Mon, 11 May 2026 09:42:27 -0300 Message-ID: <20260511124240.8484-1-andrejhirata@usp.br> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: 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 LndhbmdAYW1kLmNvbT4KLS0tCnYyOiBpbmNvcnBvcmF0ZSBDaHJpc3RpYW4gS8O2bmlnJ3Mgc3Vn Z2VzdGlvbnM6CiAgLSB1c2UgcmV0dXJuIGYoKSBkaXJlY3RseSBpbnN0ZWFkIG9mIHJldCA9IGYo KTsgcmV0dXJuIHJldDsKICAtIHVzZSBlYXJseSByZXR1cm4gcGF0dGVybiBiZWZvcmUgZ3VhcmQo KSB3aGVyZSBhcHBsaWNhYmxlCgp2MzogZml4IHN0eWxlIG5pdHMgcG9pbnRlZCBieSBDaHJpc3Rp YW4gS8O2bmlnOgogIC0gZHJvcCBzdXBlcmZsdW91cyByZXQgaW5pdGlhbGl6YXRpb24gaW4gc2V0 X2dmeF9wb3dlcl91cF9ieV9pbXUKICAtIGRyb3AgdW5uZWNlc3NhcnkgYnJhY2VzIGFyb3VuZCBz aW5nbGUtbGluZSBzY29wZWRfZ3VhcmQKCnY0OgogLSBmaXggYnVpbGQgZXJyb3JzIGludHJvZHVj ZWQgaW4gdjMKIC0gZml4IGluY29ycmVjdCBpc19zdXBwb3J0X3N3X3NtdSgpIGNvbmRpdGlvbgog LSByZW1vdmUgYWNjaWRlbnRhbCAicmV0dXJuID0iIHR5cG9zCgp2NTogZml4IGluY29ycmVjdCBk aWZmIGluIHY0Cgp2NjogZml4IG1pc3Npbmcgc2VtaWNvbG9uIGluIHNtdV9tb2RlMV9yZXNldF9p c19zdXBwb3J0KCkgcmV0dXJuIHN0YXRlbWVudAoKIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG0vYW1k Z3B1X2RwbS5jIHwgODY4ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCAyNjAgaW5zZXJ0aW9ucygrKSwgNjA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG0vYW1kZ3B1X2RwbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9w bS9hbWRncHVfZHBtLmMKaW5kZXggZmVhZGY2MDRiLi5lN2ZmYjJiMWIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG0vYW1kZ3B1X2RwbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG0vYW1kZ3B1X2RwbS5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiYW1kX3BjaWUu aCIKICNpbmNsdWRlICJhbWRncHVfZGlzcGxheS5oIgogI2luY2x1ZGUgImh3bWdyLmgiCisjaW5j bHVkZSA8bGludXgvY2xlYW51cC5oPgogI2luY2x1ZGUgPGxpbnV4L3Bvd2VyX3N1cHBseS5oPgog I2luY2x1ZGUgImFtZGdwdV9zbXUuaCIKIApAQCAtNDEsMzMgKzQyLDI1IEBACiBpbnQgYW1kZ3B1 X2RwbV9nZXRfc2NsayhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBsb3cpCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfc2NsaykKIAkJcmV0 dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3Mt PmdldF9zY2xrKChhZGV2KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9zY2xrKChhZGV2KS0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKIAkJCQkgbG93KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9tY2xrKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBib29sIGxvdykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1 bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsK IAogCWlmICghcHBfZnVuY3MtPmdldF9tY2xrKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X21jbGsoKGFkZXYpLT5wb3dl cnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBwcF9mdW5jcy0+Z2V0X21jbGsoKGFkZXYpLT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCSBs b3cpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0K IAogaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyZ2F0aW5nX2J5X3NtdShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKQEAgLTgwLDEzICs3MywxMiBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfcG93ZXJn YXRpbmdfYnlfc211KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCWVudW0gaXBfcG93ZXJf c3RhdGUgcHdyX3N0YXRlID0gZ2F0ZSA/IFBPV0VSX1NUQVRFX09GRiA6IFBPV0VSX1NUQVRFX09O OwogCWJvb2wgaXNfdmNuID0gYmxvY2tfdHlwZSA9PSBBTURfSVBfQkxPQ0tfVFlQRV9WQ047CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KKwlndWFyZChtdXRleCkoJmFkZXYtPnBt Lm11dGV4KTsKIAlpZiAoYXRvbWljX3JlYWQoJmFkZXYtPnBtLnB3cl9zdGF0ZVtibG9ja190eXBl XSkgPT0gcHdyX3N0YXRlICYmCiAJCQkoIWlzX3ZjbiB8fCBhZGV2LT52Y24ubnVtX3Zjbl9pbnN0 ID09IDEpKSB7CiAJCWRldl9kYmcoYWRldi0+ZGV2LCAiSVAgYmxvY2slZCBhbHJlYWR5IGluIHRo ZSB0YXJnZXQgJXMgc3RhdGUhIiwKIAkJCQlibG9ja190eXBlLCBnYXRlID8gImdhdGUiIDogInVu Z2F0ZSIpOwotCQlnb3RvIG91dF91bmxvY2s7CisJCXJldHVybiByZXQ7CiAJfQogCiAJc3dpdGNo IChibG9ja190eXBlKSB7CkBAIC0xMTUsMjAgKzEwNywxNiBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRf cG93ZXJnYXRpbmdfYnlfc211KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCWlmICghcmV0 KQogCQlhdG9taWNfc2V0KCZhZGV2LT5wbS5wd3Jfc3RhdGVbYmxvY2tfdHlwZV0sIHB3cl9zdGF0 ZSk7CiAKLW91dF91bmxvY2s6Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KIAly ZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfZ2Z4X3Bvd2VyX3VwX2J5X2ltdShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9 IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IC1FT1BOT1RTVVBQOworCWlu dCByZXQ7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3NldF9n ZnhfcG93ZXJfdXBfYnlfaW11KHNtdSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7 CisJc2NvcGVkX2d1YXJkKG11dGV4LCAmYWRldi0+cG0ubXV0ZXgpCisJCXJldCA9IHNtdV9zZXRf Z2Z4X3Bvd2VyX3VwX2J5X2ltdShzbXUpOwogCiAJbXNsZWVwKDEwKTsKIApAQCAtMTM5LDQ0ICsx MjcsMzEgQEAgaW50IGFtZGdwdV9kcG1fYmFjb19lbnRlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBv d2VycGxheS5wcF9mdW5jczsKIAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnNl dF9hc2ljX2JhY29fc3RhdGUpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJLyogZW50 ZXIgQkFDTyBzdGF0ZSAqLwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKHBw X2hhbmRsZSwgMSk7Ci0KLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVy biByZXQ7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKHBwX2hhbmRsZSwg MSk7CiB9CiAKIGludCBhbWRncHVfZHBtX2JhY29fZXhpdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBv d2VycGxheS5wcF9mdW5jczsKIAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnNl dF9hc2ljX2JhY29fc3RhdGUpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJLyogZXhp dCBCQUNPIHN0YXRlICovCi0JcmV0ID0gcHBfZnVuY3MtPnNldF9hc2ljX2JhY29fc3RhdGUocHBf aGFuZGxlLCAwKTsKLQotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJu IHJldDsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9hc2ljX2JhY29fc3RhdGUocHBfaGFuZGxlLCAw KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X21wMV9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIAkJCSAgICAgZW51bSBwcF9tcDFfc3RhdGUgbXAxX3N0YXRlKQogewotCWludCBy ZXQgPSAwOwogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93 ZXJwbGF5LnBwX2Z1bmNzOwogCiAJaWYgKG1wMV9zdGF0ZSA9PSBQUF9NUDFfU1RBVEVfRkxSKSB7 CkBAIC0xODQsMjMgKzE1OSwxOSBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfbXAxX3N0YXRlKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAogCQlpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKQogCQkJ YWRldi0+cG0uZHBtX2VuYWJsZWQgPSBmYWxzZTsKIAl9IGVsc2UgaWYgKHBwX2Z1bmNzICYmIHBw X2Z1bmNzLT5zZXRfbXAxX3N0YXRlKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK LQotCQlyZXQgPSBwcF9mdW5jcy0+c2V0X21wMV9zdGF0ZSgKKwkJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJCXJldHVybiBwcF9mdW5jcy0+c2V0X21wMV9zdGF0ZSgKIAkJCQlhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCW1wMV9zdGF0ZSk7Ci0KLQkJbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7CiAJfQogCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4gMDsKIH0KIAog aW50IGFtZGdwdV9kcG1faXNfYmFjb19zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dl cnBsYXkucHBfZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZTsKLQlpbnQgcmV0OwogCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPmdldF9hc2lj X2JhY29fY2FwYWJpbGl0eSkKIAkJcmV0dXJuIDA7CkBAIC0yMTYsNDkgKzE4NywzMiBAQCBpbnQg YW1kZ3B1X2RwbV9pc19iYWNvX3N1cHBvcnRlZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK IAlpZiAoYWRldi0+aW5fczMpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0ID0gcHBfZnVuY3MtPmdldF9hc2ljX2JhY29fY2FwYWJpbGl0eShwcF9o YW5kbGUpOwotCi0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0 OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0 X2FzaWNfYmFjb19jYXBhYmlsaXR5KHBwX2hhbmRsZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX21v ZGUyX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWNvbnN0IHN0cnVjdCBh bWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwogCXZvaWQg KnBwX2hhbmRsZSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAK IAlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+YXNpY19yZXNldF9tb2RlXzIpCiAJCXJldHVy biAtRU5PRU5UOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0ID0gcHBf ZnVuY3MtPmFzaWNfcmVzZXRfbW9kZV8yKHBwX2hhbmRsZSk7Ci0KLQltdXRleF91bmxvY2soJmFk ZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5t dXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5hc2ljX3Jlc2V0X21vZGVfMihwcF9oYW5kbGUpOwog fQogCiBpbnQgYW1kZ3B1X2RwbV9lbmFibGVfZ2Z4X2ZlYXR1cmVzKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRl di0+cG93ZXJwbGF5LnBwX2Z1bmNzOwogCXZvaWQgKnBwX2hhbmRsZSA9IGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5j cy0+YXNpY19yZXNldF9lbmFibGVfZ2Z4X2ZlYXR1cmVzKQogCQlyZXR1cm4gLUVOT0VOVDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldCA9IHBwX2Z1bmNzLT5hc2ljX3Jl c2V0X2VuYWJsZV9nZnhfZmVhdHVyZXMocHBfaGFuZGxlKTsKLQotCW11dGV4X3VubG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmFzaWNfcmVzZXRfZW5hYmxlX2dmeF9mZWF0dXJlcyhw cF9oYW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9iYWNvX3Jlc2V0KHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KQpAQCAtMjcwLDc1ICsyMjQsNjAgQEAgaW50IGFtZGdwdV9kcG1fYmFjb19y ZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9m dW5jcy0+c2V0X2FzaWNfYmFjb19zdGF0ZSkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQltdXRleF9s b2NrKCZhZGV2LT5wbS5tdXRleCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAK IAkvKiBlbnRlciBCQUNPIHN0YXRlICovCiAJcmV0ID0gcHBfZnVuY3MtPnNldF9hc2ljX2JhY29f c3RhdGUocHBfaGFuZGxlLCAxKTsKIAlpZiAocmV0KQotCQlnb3RvIG91dDsKKwkJcmV0dXJuIHJl dDsKIAogCS8qIGV4aXQgQkFDTyBzdGF0ZSAqLwogCXJldCA9IHBwX2Z1bmNzLT5zZXRfYXNpY19i YWNvX3N0YXRlKHBwX2hhbmRsZSwgMCk7Ci0KLW91dDoKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKIAlyZXR1cm4gcmV0OwogfQogCiBib29sIGFtZGdwdV9kcG1faXNfbW9kZTFfcmVz ZXRfc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBzbXVf Y29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlib29sIHN1cHBvcnRf bW9kZTFfcmVzZXQgPSBmYWxzZTsKIAotCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkgewot CQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXN1cHBvcnRfbW9kZTFfcmVzZXQgPSBz bXVfbW9kZTFfcmVzZXRfaXNfc3VwcG9ydChzbXUpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQl9CisJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKKwkJcmV0dXJuIGZh bHNlOwogCi0JcmV0dXJuIHN1cHBvcnRfbW9kZTFfcmVzZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9tb2RlMV9yZXNldF9pc19zdXBwb3J0KHNtdSk7CiB9 CiAKIGludCBhbWRncHVfZHBtX21vZGUxX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 KQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZTsKLQlpbnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRl dikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBzbXVfbW9kZTFf cmVzZXQoc211KTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICgh aXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVy biByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9tb2Rl MV9yZXNldChzbXUpOwogfQogCiBib29sIGFtZGdwdV9kcG1faXNfbGlua19yZXNldF9zdXBwb3J0 ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpz bXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWJvb2wgc3VwcG9ydF9saW5rX3Jlc2V0 ID0gZmFsc2U7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCQlzdXBwb3J0X2xpbmtfcmVzZXQgPSBzbXVfbGlua19yZXNl dF9pc19zdXBwb3J0KHNtdSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0K KwlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQorCQlyZXR1cm4gZmFsc2U7CiAKLQlyZXR1 cm4gc3VwcG9ydF9saW5rX3Jlc2V0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwor CXJldHVybiBzbXVfbGlua19yZXNldF9pc19zdXBwb3J0KHNtdSk7CiB9CiAKIGludCBhbWRncHVf ZHBtX2xpbmtfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNt dV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAt RU9QTk9UU1VQUDsKIAotCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkgewotCQltdXRleF9s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHNtdV9saW5rX3Jlc2V0KHNtdSk7Ci0JCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIWlzX3N1cHBvcnRfc3dfc211 KGFkZXYpKQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfbGlua19yZXNldChzbXUpOwogfQog CiBpbnQgYW1kZ3B1X2RwbV9zd2l0Y2hfcG93ZXJfcHJvZmlsZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKQEAgLTM0NiwxMDAgKzI4NSw4MiBAQCBpbnQgYW1kZ3B1X2RwbV9zd2l0Y2hfcG93 ZXJfcHJvZmlsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgYm9vbCBlbikK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmIChhbWRncHVfc3Jpb3ZfdmYoYWRldikp CiAJCXJldHVybiAwOwogCi0JaWYgKHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5zd2l0Y2hfcG93ZXJf cHJvZmlsZSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1 bmNzLT5zd2l0Y2hfcG93ZXJfcHJvZmlsZSgKLQkJCWFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs IHR5cGUsIGVuKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICgh cHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5zd2l0Y2hfcG93ZXJfcHJvZmlsZSkKKwkJcmV0dXJuIDA7 CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBwcF9mdW5jcy0+c3dpdGNoX3Bvd2VyX3Byb2ZpbGUoCisJCQlhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLCB0eXBlLCBlbik7CiB9CiAKIGludCBhbWRncHVfZHBtX3BhdXNlX3Bvd2VyX3Byb2Zp bGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgYm9vbCBwYXVzZSkKIHsKIAlj b25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9m dW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmIChhbWRncHVfc3Jpb3ZfdmYoYWRldikpCiAJCXJl dHVybiAwOwogCi0JaWYgKHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5wYXVzZV9wb3dlcl9wcm9maWxl KSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnBh dXNlX3Bvd2VyX3Byb2ZpbGUoCi0JCQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBwYXVzZSk7 Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNzIHx8 ICFwcF9mdW5jcy0+cGF1c2VfcG93ZXJfcHJvZmlsZSkKKwkJcmV0dXJuIDA7CiAKLQlyZXR1cm4g cmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+ cGF1c2VfcG93ZXJfcHJvZmlsZSgKKwkJCWFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHBhdXNl KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3hnbWlfcHN0YXRlKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAogCQkJICAgICAgIHVpbnQzMl90IHBzdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3Qg YW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQg cmV0ID0gMDsKIAotCWlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c2V0X3hnbWlfcHN0YXRlKSB7 Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnNldF94 Z21pX3BzdGF0ZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAotCQkJCQkJCQlwc3RhdGUpOwot CQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5jcyB8fCAh cHBfZnVuY3MtPnNldF94Z21pX3BzdGF0ZSkKKwkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gcmV0Owor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X3hn bWlfcHN0YXRlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJCQkJCQkJCXBzdGF0ZSk7CiB9 CiAKIGludCBhbWRncHVfZHBtX3NldF9kZl9jc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCiAJCQkgICAgIHVpbnQzMl90IGNzdGF0ZSkKIHsKLQlpbnQgcmV0ID0gMDsKIAljb25zdCBz dHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsK IAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCi0JaWYgKHBw X2Z1bmNzICYmIHBwX2Z1bmNzLT5zZXRfZGZfY3N0YXRlKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYt PnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnNldF9kZl9jc3RhdGUocHBfaGFuZGxlLCBj c3RhdGUpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFwcF9m dW5jcyB8fCAhcHBfZnVuY3MtPnNldF9kZl9jc3RhdGUpCisJCXJldHVybiAwOwogCi0JcmV0dXJu IHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3Mt PnNldF9kZl9jc3RhdGUocHBfaGFuZGxlLCBjc3RhdGUpOwogfQogCiBzc2l6ZV90IGFtZGdwdV9k cG1fZ2V0X3BtX3BvbGljeV9pbmZvKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAg ICAgIGVudW0gcHBfcG1fcG9saWN5IHBfdHlwZSwgY2hhciAqYnVmKQogewogCXN0cnVjdCBzbXVf Y29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gLUVP UE5PVFNVUFA7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBzbXVfZ2V0X3BtX3BvbGljeV9pbmZvKHNtdSwg cF90eXBlLCBidWYpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYg KCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0 dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X2dl dF9wbV9wb2xpY3lfaW5mbyhzbXUsIHBfdHlwZSwgYnVmKTsKIH0KIAogaW50IGFtZGdwdV9kcG1f c2V0X3BtX3BvbGljeShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgaW50IHBvbGljeV90eXBl LAogCQkJICAgICBpbnQgcG9saWN5X2xldmVsKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211 ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAK LQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCQlyZXQgPSBzbXVfc2V0X3BtX3BvbGljeShzbXUsIHBvbGljeV90eXBlLCBwb2xp Y3lfbGV2ZWwpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFp c19zdXBwb3J0X3N3X3NtdShhZGV2KSkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0dXJu IHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3NldF9w bV9wb2xpY3koc211LCBwb2xpY3lfdHlwZSwgcG9saWN5X2xldmVsKTsKIH0KIAogaW50IGFtZGdw dV9kcG1fZW5hYmxlX21ncHVfZmFuX2Jvb3N0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQpA QCAtNDQ3LDE1ICszNjgsMTIgQEAgaW50IGFtZGdwdV9kcG1fZW5hYmxlX21ncHVfZmFuX2Jvb3N0 KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCXZvaWQgKnBwX2hhbmRsZSA9IGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGU7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3Mg PQogCQkJYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCi0JaWYgKHBw X2Z1bmNzICYmIHBwX2Z1bmNzLT5lbmFibGVfbWdwdV9mYW5fYm9vc3QpIHsKLQkJbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+ZW5hYmxlX21ncHVfZmFuX2Jv b3N0KHBwX2hhbmRsZSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlp ZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+ZW5hYmxlX21ncHVfZmFuX2Jvb3N0KQorCQlyZXR1 cm4gMDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJ cmV0dXJuIHBwX2Z1bmNzLT5lbmFibGVfbWdwdV9mYW5fYm9vc3QocHBfaGFuZGxlKTsKIH0KIAog aW50IGFtZGdwdV9kcG1fc2V0X2Nsb2NrZ2F0aW5nX2J5X3NtdShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKQEAgLTQ2NCwxNiArMzgyLDEzIEBAIGludCBhbWRncHVfZHBtX3NldF9jbG9ja2dh dGluZ19ieV9zbXUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJdm9pZCAqcHBfaGFuZGxl ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNz ICpwcF9mdW5jcyA9CiAJCQlhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7 CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnNldF9jbG9ja2dhdGluZ19ieV9zbXUpIHsK LQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+c2V0X2Ns b2NrZ2F0aW5nX2J5X3NtdShwcF9oYW5kbGUsCi0JCQkJCQkgICAgICAgbXNnX2lkKTsKLQkJbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1 bmNzLT5zZXRfY2xvY2tnYXRpbmdfYnlfc211KQorCQlyZXR1cm4gMDsKIAotCXJldHVybiByZXQ7 CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRf Y2xvY2tnYXRpbmdfYnlfc211KHBwX2hhbmRsZSwKKwkJCQkJCSAgICAgICBtc2dfaWQpOwogfQog CiBpbnQgYW1kZ3B1X2RwbV9zbXVfaTJjX2J1c19hY2Nlc3Moc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCkBAIC00ODIsMjIgKzM5NywxOSBAQCBpbnQgYW1kZ3B1X2RwbV9zbXVfaTJjX2J1c19h Y2Nlc3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJdm9pZCAqcHBfaGFuZGxlID0gYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9CiAJCQlhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IC1FT1BOT1RT VVBQOwogCi0JaWYgKHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5zbXVfaTJjX2J1c19hY2Nlc3MpIHsK LQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+c211X2ky Y19idXNfYWNjZXNzKHBwX2hhbmRsZSwKLQkJCQkJCSAgIGFjcXVpcmUpOwotCQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnNt dV9pMmNfYnVzX2FjY2VzcykKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0dXJuIHJldDsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNtdV9p MmNfYnVzX2FjY2VzcyhwcF9oYW5kbGUsCisJCQkJCQkgICBhY3F1aXJlKTsKIH0KIAogdm9pZCBh bWRncHVfcG1fYWNwaV9ldmVudF9oYW5kbGVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQog ewogCWlmIChhZGV2LT5wbS5kcG1fZW5hYmxlZCkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5t dXRleCk7CisJCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCQlpZiAocG93ZXJfc3Vw cGx5X2lzX3N5c3RlbV9zdXBwbGllZCgpID4gMCkKIAkJCWFkZXYtPnBtLmFjX3Bvd2VyID0gdHJ1 ZTsKIAkJZWxzZQpAQCAtNTEwLDcgKzQyMiw2IEBAIHZvaWQgYW1kZ3B1X3BtX2FjcGlfZXZlbnRf aGFuZGxlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJaWYgKGlzX3N1cHBvcnRfc3df c211KGFkZXYpKQogCQkJc211X3NldF9hY19kYyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsK IAotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKIAl9CiB9CiAKQEAgLTUxOCw0OSAr NDI5LDQwIEBAIGludCBhbWRncHVfZHBtX3JlYWRfc2Vuc29yKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCBlbnVtIGFtZF9wcF9zZW5zb3JzIHNlbnNvCiAJCQkgICB2b2lkICpkYXRhLCB1aW50 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+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByID0gMDsKKwlpbnQgcmV0ID0gMDsKIAog CWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5sb2FkX2Zpcm13YXJlIHx8CiAJICAgIChpc19z dXBwb3J0X3N3X3NtdShhZGV2KSAmJiAoYWRldi0+ZmxhZ3MgJiBBTURfSVNfQVBVKSkpCiAJCXJl dHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXIgPSBwcF9mdW5jcy0+ bG9hZF9maXJtd2FyZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKLQlpZiAocikgeworCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldCA9IHBwX2Z1bmNzLT5sb2FkX2Zpcm13 YXJlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOworCWlmIChyZXQpIHsKIAkJcHJfZXJyKCJz bXUgZmlybXdhcmUgbG9hZGluZyBmYWlsZWRcbiIpOwotCQlnb3RvIG91dDsKKwkJcmV0dXJuIHJl dDsKIAl9CiAKIAlpZiAoc211X3ZlcnNpb24pCiAJCSpzbXVfdmVyc2lvbiA9IGFkZXYtPnBtLmZ3 X3ZlcnNpb247CiAKLW91dDoKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXR1 cm4gcjsKKwlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9oYW5kbGVfcGFzc3Rocm91 Z2hfc2JyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIHsKLQlpbnQg cmV0ID0gMDsKKwlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQorCQlyZXR1cm4gMDsKIAot CWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0JCXJldCA9IHNtdV9oYW5kbGVfcGFzc3Rocm91Z2hfc2JyKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNt dV9oYW5kbGVfcGFzc3Rocm91Z2hfc2JyKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJ CQkgZW5hYmxlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQotCi0JcmV0 dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2VuZF9oYm1fYmFkX3BhZ2VzX251bShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3Qgc211X2Nv bnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAK IAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3NlbmRfaGJtX2JhZF9w YWdlc19udW0oc211LCBzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQot CXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNt dV9zZW5kX2hibV9iYWRfcGFnZXNfbnVtKHNtdSwgc2l6ZSk7CiB9CiAKIGludCBhbWRncHVfZHBt X3NlbmRfaGJtX2JhZF9jaGFubmVsX2ZsYWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVp bnQzMl90IHNpemUpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShh ZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCXJldCA9IHNtdV9zZW5kX2hibV9iYWRfY2hhbm5lbF9mbGFnKHNtdSwgc2l6ZSk7Ci0J bXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfc2VuZF9oYm1fYmFkX2NoYW5uZWxf ZmxhZyhzbXUsIHNpemUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZW5kX3JtYV9yZWFzb24oc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQ7CiAKIAlpZiAoIWlzX3N1cHBvcnRf c3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3NlbmRfcm1hX3JlYXNvbihzbXUpOwotCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3NlbmRfcm1hX3JlYXNvbihzbXUpOwogfQogCiAv KioKQEAgLTc2MSw2MSArNjQ0LDQ1IEBAIGludCBhbWRncHVfZHBtX3NlbmRfcm1hX3JlYXNvbihz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIGJvb2wgYW1kZ3B1X2RwbV9yZXNldF9zZG1hX2lz X3N1cHBvcnRlZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1Y3Qgc211X2Nv bnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JYm9vbCByZXQ7CiAKIAlp ZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQltdXRleF9s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3Jlc2V0X3NkbWFfaXNfc3VwcG9ydGVk KHNtdSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0Owor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfcmVzZXRfc2RtYV9p c19zdXBwb3J0ZWQoc211KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fcmVzZXRfc2RtYShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgaW5zdF9tYXNrKQogewogCXN0cnVjdCBzbXVf Y29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0OwogCiAJ aWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9yZXNldF9zZG1hKHNtdSwg aW5zdF9tYXNrKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9yZXNldF9z ZG1hKHNtdSwgaW5zdF9tYXNrKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fcmVzZXRfdmNuKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCBpbnN0X21hc2spCiB7CiAJc3RydWN0IHNt dV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQ7CiAK IAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3Jlc2V0X3ZjbihzbXUs IGluc3RfbWFzayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4g cmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfcmVzZXRf dmNuKHNtdSwgaW5zdF9tYXNrKTsKIH0KIAogYm9vbCBhbWRncHVfZHBtX3Jlc2V0X3Zjbl9pc19z dXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250 ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWJvb2wgcmV0OwogCiAJaWYg KCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9yZXNldF92Y25faXNfc3VwcG9ydGVkKHNt dSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfcmVzZXRfdmNuX2lzX3N1 cHBvcnRlZChzbXUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfZHBtX2ZyZXFfcmFuZ2Uoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC04MjMsMjIgKzY5MCwxNyBAQCBpbnQgYW1kZ3B1 X2RwbV9nZXRfZHBtX2ZyZXFfcmFuZ2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJ ICB1aW50MzJfdCAqbWluLAogCQkJCSAgdWludDMyX3QgKm1heCkKIHsKLQlpbnQgcmV0ID0gMDsK LQogCWlmICh0eXBlICE9IFBQX1NDTEspCiAJCXJldHVybiAtRUlOVkFMOwogCiAJaWYgKCFpc19z dXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9nZXRfZHBtX2ZyZXFfcmFuZ2UoYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gc211X2dldF9kcG1fZnJlcV9yYW5nZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAog CQkJCSAgICAgU01VX1NDTEssCiAJCQkJICAgICBtaW4sCiAJCQkJICAgICBtYXgpOwotCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdw dV9kcG1fc2V0X3NvZnRfZnJlcV9yYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAg LTg2MiwxNiArNzI0LDEyIEBAIGludCBhbWRncHVfZHBtX3NldF9zb2Z0X2ZyZXFfcmFuZ2Uoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiBpbnQgYW1kZ3B1X2RwbV93cml0ZV93YXRlcm1hcmtz X3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBzbXVfY29udGV4 dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlm ICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV93cml0ZV93YXRlcm1hcmtzX3RhYmxlKHNtdSk7 Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfd3JpdGVfd2F0ZXJtYXJrc190 YWJsZShzbXUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV93YWl0X2Zvcl9ldmVudChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKQEAgLTg3OSw3NiArNzM3LDU2IEBAIGludCBhbWRncHVfZHBtX3dh aXRfZm9yX2V2ZW50KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgICAgdWludDY0 X3QgZXZlbnRfYXJnKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUo YWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQlyZXQgPSBzbXVfd2FpdF9mb3JfZXZlbnQoc211LCBldmVudCwgZXZlbnRfYXJnKTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV93YWl0X2Zvcl9ldmVudChzbXUs IGV2ZW50LCBldmVudF9hcmcpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfcmVzaWRlbmN5X2dm eG9mZihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCB2YWx1ZSkKIHsKIAlzdHJ1Y3Qg c211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9 IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNV UFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3NldF9yZXNp ZGVuY3lfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1 cm4gc211X3NldF9yZXNpZGVuY3lfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9nZXRfcmVzaWRlbmN5X2dmeG9mZihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTMy ICp2YWx1ZSkKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYp KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0JcmV0ID0gc211X2dldF9yZXNpZGVuY3lfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwotCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X2dldF9yZXNpZGVuY3lfZ2Z4b2ZmKHNtdSwgdmFs dWUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfZW50cnljb3VudF9nZnhvZmYoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHU2NCAqdmFsdWUpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpz bXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFp c19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhf bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9nZXRfZW50cnljb3VudF9nZnhvZmYo c211LCB2YWx1ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4g cmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfZ2V0X2Vu dHJ5Y291bnRfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfc3Rh dHVzX2dmeG9mZihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgKnZhbHVlKQog ewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsK LQlpbnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVy biAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBz bXVfZ2V0X3N0YXR1c19nZnhvZmYoc211LCB2YWx1ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgp OworCXJldHVybiBzbXVfZ2V0X3N0YXR1c19nZnhvZmYoc211LCB2YWx1ZSk7CiB9CiAKIHVpbnQ2 NF90IGFtZGdwdV9kcG1fZ2V0X3RoZXJtYWxfdGhyb3R0bGluZ19jb3VudGVyKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQpAQCAtOTY5LDI4ICs4MDcsMjMgQEAgdWludDY0X3QgYW1kZ3B1X2Rw bV9nZXRfdGhlcm1hbF90aHJvdHRsaW5nX2NvdW50ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCiB2b2lkIGFtZGdwdV9kcG1fZ2Z4X3N0YXRlX2NoYW5nZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIAkJCQkgZW51bSBnZnhfY2hhbmdlX3N0YXRlIHN0YXRlKQogewotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlp ZiAoYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzICYmCiAJICAgIGFkZXYtPnBvd2VycGxheS5wcF9m dW5jcy0+Z2Z4X3N0YXRlX2NoYW5nZV9zZXQpCiAJCSgoYWRldiktPnBvd2VycGxheS5wcF9mdW5j cy0+Z2Z4X3N0YXRlX2NoYW5nZV9zZXQoCiAJCQkoYWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUs IHN0YXRlKSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiB9CiAKIGludCBhbWRn cHVfZHBtX2dldF9lY2NfaW5mbyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgICB2 b2lkICp1bWNfZWNjKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUo YWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQlyZXQgPSBzbXVfZ2V0X2VjY19pbmZvKHNtdSwgdW1jX2VjYyk7Ci0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRl di0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfZ2V0X2VjY19pbmZvKHNtdSwgdW1jX2VjYyk7CiB9 CiAKIHN0cnVjdCBhbWRfdmNlX3N0YXRlICphbWRncHVfZHBtX2dldF92Y2VfY2xvY2tfc3RhdGUo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xMDAyLDEyICs4MzUsOSBAQCBzdHJ1Y3Qg YW1kX3ZjZV9zdGF0ZSAqYW1kZ3B1X2RwbV9nZXRfdmNlX2Nsb2NrX3N0YXRlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCWlmICghcHBfZnVuY3MtPmdldF92Y2VfY2xvY2tfc3RhdGUpCiAJ CXJldHVybiBOVUxMOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXZzdGF0ZSA9 IHBwX2Z1bmNzLT5nZXRfdmNlX2Nsb2NrX3N0YXRlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRf dmNlX2Nsb2NrX3N0YXRlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgICBp ZHgpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHZzdGF0ZTsK IH0KIAogdm9pZCBhbWRncHVfZHBtX2dldF9jdXJyZW50X3Bvd2VyX3N0YXRlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LApAQCAtMTAxNSwyOCArODQ1LDI0IEBAIHZvaWQgYW1kZ3B1X2RwbV9n ZXRfY3VycmVudF9wb3dlcl9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIHsKIAlj b25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9m dW5jczsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKIAogCWlmICghcHBfZnVuY3MtPmdldF9jdXJyZW50X3Bvd2VyX3N0YXRl KSB7CiAJCSpzdGF0ZSA9IGFkZXYtPnBtLmRwbS51c2VyX3N0YXRlOwotCQlnb3RvIG91dDsKKwkJ cmV0dXJuOwogCX0KIAogCSpzdGF0ZSA9IHBwX2Z1bmNzLT5nZXRfY3VycmVudF9wb3dlcl9zdGF0 ZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKIAlpZiAoKnN0YXRlIDwgUE9XRVJfU1RBVEVf VFlQRV9ERUZBVUxUIHx8CiAJICAgICpzdGF0ZSA+IFBPV0VSX1NUQVRFX1RZUEVfSU5URVJOQUxf M0RQRVJGKQogCQkqc3RhdGUgPSBhZGV2LT5wbS5kcG0udXNlcl9zdGF0ZTsKLQotb3V0OgotCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogfQogCiB2b2lkIGFtZGdwdV9kcG1fc2V0X3Bv d2VyX3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCWVudW0gYW1kX3BtX3N0 YXRlX3R5cGUgc3RhdGUpCiB7Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCWFkZXYt PnBtLmRwbS51c2VyX3N0YXRlID0gc3RhdGU7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRl eCk7CisJc2NvcGVkX2d1YXJkKG11dGV4LCAmYWRldi0+cG0ubXV0ZXgpCisJCWFkZXYtPnBtLmRw bS51c2VyX3N0YXRlID0gc3RhdGU7CiAKIAlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJ CXJldHVybjsKQEAgLTEwNTUsMTIgKzg4MSwxMSBAQCBlbnVtIGFtZF9kcG1fZm9yY2VkX2xldmVs IGFtZGdwdV9kcG1fZ2V0X3BlcmZvcm1hbmNlX2xldmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlCiAJ aWYgKCFwcF9mdW5jcykKIAkJcmV0dXJuIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX0FVVE87CiAKLQlt dXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CiAJaWYgKHBwX2Z1bmNzLT5nZXRfcGVyZm9ybWFuY2VfbGV2ZWwpCiAJCWxldmVsID0gcHBf ZnVuY3MtPmdldF9wZXJmb3JtYW5jZV9sZXZlbChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsK IAllbHNlCiAJCWxldmVsID0gYWRldi0+cG0uZHBtLmZvcmNlZF9sZXZlbDsKLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKIAogCXJldHVybiBsZXZlbDsKIH0KQEAgLTExNTEsMTcgKzk3 NiwxMyBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRfcHBfbnVtX3N0YXRlcyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAkJCQkgc3RydWN0IHBwX3N0YXRlc19pbmZvICpzdGF0ZXMpCiB7CiAJY29u c3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVu Y3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfcHBfbnVtX3N0YXRlcykK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHBwX2Z1bmNzLT5nZXRfcHBfbnVtX3N0YXRlcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFu ZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+ Z2V0X3BwX251bV9zdGF0ZXMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICBzdGF0 ZXMpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0K IAogaW50IGFtZGdwdV9kcG1fZGlzcGF0Y2hfdGFzayhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKQEAgLTExNjksMjQgKzk5MCwxOSBAQCBpbnQgYW1kZ3B1X2RwbV9kaXNwYXRjaF90YXNrKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgICAgZW51bSBhbWRfcG1fc3RhdGVfdHlw ZSAqdXNlcl9zdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9 IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVu Y3MtPmRpc3BhdGNoX3Rhc2tzKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmRpc3BhdGNoX3Rhc2tzKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJ cmV0dXJuIHBwX2Z1bmNzLT5kaXNwYXRjaF90YXNrcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAogCQkJCSAgICAgICB0YXNrX2lkLAogCQkJCSAgICAgICB1c2VyX3N0YXRlKTsKLQltdXRleF91 bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVf ZHBtX2dldF9wcF90YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgY2hhciAqKnRhYmxl KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJw bGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCF0YWJsZSkKIAkJcmV0dXJuIC1F SU5WQUw7CkBAIC0xMTk0LDEyICsxMDEwLDkgQEAgaW50IGFtZGdwdV9kcG1fZ2V0X3BwX3RhYmxl KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBjaGFyICoqdGFibGUpCiAJaWYgKGFtZGdwdV9z cmlvdl92ZihhZGV2KSB8fCAhcHBfZnVuY3MtPmdldF9wcF90YWJsZSB8fCBhZGV2LT5zY3BtX2Vu YWJsZWQpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X3BwX3RhYmxlKGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNz LT5nZXRfcHBfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkgICAgIHRhYmxl KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAK IGludCBhbWRncHVfZHBtX3NldF9maW5lX2dyYWluX2Nsa192b2woc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCkBAIC0xMjA4LDE5ICsxMDIxLDE1IEBAIGludCBhbWRncHVfZHBtX3NldF9maW5l X2dyYWluX2Nsa192b2woc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgICAgdWlu dDMyX3Qgc2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3Mt PnNldF9maW5lX2dyYWluX2Nsa192b2wpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfZmluZV9ncmFpbl9jbGtfdm9sKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7 CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfZmluZV9ncmFpbl9jbGtfdm9sKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgICB0eXBlLAogCQkJCQkgICAgICAgaW5wdXQsCiAJCQkJ CSAgICAgICBzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVy biByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX29kbl9lZGl0X2RwbV90YWJsZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKQEAgLTEyMjksMTkgKzEwMzgsMTUgQEAgaW50IGFtZGdwdV9kcG1f b2RuX2VkaXRfZHBtX3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgdWlu dDMyX3Qgc2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3Mt Pm9kbl9lZGl0X2RwbV90YWJsZSkKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPm9kbl9lZGl0X2RwbV90YWJsZShhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBwcF9mdW5jcy0+b2RuX2VkaXRfZHBtX3RhYmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CiAJCQkJCSAgIHR5cGUsCiAJCQkJCSAgIGlucHV0LAogCQkJCQkgICBzaXplKTsKLQltdXRleF91 bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVf ZHBtX2VtaXRfY2xvY2tfbGV2ZWxzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTI1 MCw1MiArMTA1NSw0MCBAQCBpbnQgYW1kZ3B1X2RwbV9lbWl0X2Nsb2NrX2xldmVscyhzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgIGludCAqb2Zmc2V0KQogewogCWNvbnN0IHN0cnVj dCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWlu dCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ZW1pdF9jbG9ja19sZXZlbHMpCiAJCXJldHVy biAtRU5PRU5UOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1 bmNzLT5lbWl0X2Nsb2NrX2xldmVscyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+ZW1pdF9jbG9ja19s ZXZlbHMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgdHlwZSwKIAkJCQkJICAg YnVmLAogCQkJCQkgICBvZmZzZXQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwot Ci0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3BwZmVhdHVyZV9zdGF0dXMo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgIHVpbnQ2NF90IHBwZmVhdHVyZV9t YXNrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBv d2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9w cGZlYXR1cmVfc3RhdHVzKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X3BwZmVhdHVyZV9zdGF0dXMoYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4g cHBfZnVuY3MtPnNldF9wcGZlYXR1cmVfc3RhdHVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CiAJCQkJCSAgICAgcHBmZWF0dXJlX21hc2tzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9wcGZlYXR1cmVf c3RhdHVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBjaGFyICpidWYpCiB7CiAJY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7 Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfcHBmZWF0dXJlX3N0YXR1cykK IAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBf ZnVuY3MtPmdldF9wcGZlYXR1cmVfc3RhdHVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJ Z3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcHBm ZWF0dXJlX3N0YXR1cyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgIGJ1Zik7 Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBp bnQgYW1kZ3B1X2RwbV9mb3JjZV9jbG9ja19sZXZlbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKQEAgLTEzMDMsMzMgKzEwOTYsMjUgQEAgaW50IGFtZGdwdV9kcG1fZm9yY2VfY2xvY2tfbGV2 ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJIHVpbnQzMl90IG1hc2spCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5mb3JjZV9jbG9ja19sZXZl bCkKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0g cHBfZnVuY3MtPmZvcmNlX2Nsb2NrX2xldmVsKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJ Z3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5mb3JjZV9j bG9ja19sZXZlbChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHR5cGUsCiAJCQkJ CSAgbWFzayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0 OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfc2Nsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBv d2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9z Y2xrX29kKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9zY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9z Y2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9z ZXRfc2Nsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCkBA IC0xMzM5LDEwICsxMTI0LDEwIEBAIGludCBhbWRncHVfZHBtX3NldF9zY2xrX29kKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCB2YWx1ZSkKIAlpZiAoaXNfc3VwcG9ydF9zd19z bXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQlpZiAocHBfZnVuY3MtPnNldF9zY2xrX29kKQotCQlwcF9mdW5jcy0+c2V0X3Nj bGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOworCXNjb3BlZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KSB7 CisJCWlmIChwcF9mdW5jcy0+c2V0X3NjbGtfb2QpCisJCQlwcF9mdW5jcy0+c2V0X3NjbGtfb2Qo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdmFsdWUpOworCX0KIAogCWlmIChhbWRncHVfZHBt X2Rpc3BhdGNoX3Rhc2soYWRldiwKIAkJCQkgICAgIEFNRF9QUF9UQVNLX1JFQURKVVNUX1BPV0VS X1NUQVRFLApAQCAtMTM1NywxNiArMTE0MiwxMiBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfc2Nsa19v ZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCiBpbnQgYW1kZ3B1 X2RwbV9nZXRfbWNsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBz dHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsK LQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9tY2xrX29kKQogCQlyZXR1cm4g LUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBf ZnVuY3MtPmdldF9tY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9tY2xrX29kKGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfbWNsa19vZChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCkBAIC0xMzc2LDEwICsxMTU3LDEw IEBAIGludCBhbWRncHVfZHBtX3NldF9tY2xrX29kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCB1aW50MzJfdCB2YWx1ZSkKIAlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVy biAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlpZiAocHBf ZnVuY3MtPnNldF9tY2xrX29kKQotCQlwcF9mdW5jcy0+c2V0X21jbGtfb2QoYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwor CXNjb3BlZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KSB7CisJCWlmIChwcF9mdW5jcy0+ c2V0X21jbGtfb2QpCisJCQlwcF9mdW5jcy0+c2V0X21jbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZSwgdmFsdWUpOworCX0KIAogCWlmIChhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soYWRl diwKIAkJCQkgICAgIEFNRF9QUF9UQVNLX1JFQURKVVNUX1BPV0VSX1NUQVRFLApAQCAtMTM5NSwx NzAgKzExNzYsMTMwIEBAIGludCBhbWRncHVfZHBtX2dldF9wb3dlcl9wcm9maWxlX21vZGUoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgICAgY2hhciAqYnVmKQogewogCWNvbnN0 IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNz OwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3Bvd2VyX3Byb2ZpbGVfbW9k ZSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBw X2Z1bmNzLT5nZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CiAJCQkJCSAgICAgICBidWYpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgICBsb25nICppbnB1dCwgdWludDMy X3Qgc2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYt PnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNl dF9wb3dlcl9wcm9maWxlX21vZGUpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJ cmV0dXJuIHBwX2Z1bmNzLT5zZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUsCiAJCQkJCSAgICAgICBpbnB1dCwKIAkJCQkJICAgICAgIHNpemUpOwotCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdw dV9kcG1fZ2V0X2dwdV9tZXRyaWNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB2b2lkICoq dGFibGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5w b3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRf Z3B1X21ldHJpY3MpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfZ3B1X21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3Mt PmdldF9ncHVfbWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQl0YWJsZSk7 Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBz c2l6ZV90IGFtZGdwdV9kcG1fZ2V0X3BtX21ldHJpY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHZvaWQgKnBtX21ldHJpY3MsCiAJCQkJICBzaXplX3Qgc2l6ZSkKIHsKIAljb25zdCBzdHJ1 Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlp bnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9wbV9tZXRyaWNzKQogCQlyZXR1cm4g LUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBf ZnVuY3MtPmdldF9wbV9tZXRyaWNzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHBtX21ldHJp Y3MsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5n ZXRfcG1fbWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBwbV9tZXRyaWNzLAogCQkJ CSAgICAgICBzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVy biByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9mYW5fY29udHJvbF9tb2RlKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICB1aW50MzJfdCAqZmFuX21vZGUpCiB7CiAJY29u c3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVu Y3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZmFuX2NvbnRyb2xfbW9k ZSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfZmFuX2NvbnRyb2xfbW9kZShhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9m dW5jcy0+Z2V0X2Zhbl9jb250cm9sX21vZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJ CQkJICAgICBmYW5fbW9kZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQly ZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfZmFuX3NwZWVkX3B3bShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgdWludDMyX3Qgc3BlZWQpCiB7CiAJY29uc3Qgc3Ry dWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0J aW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3B3bSkKIAkJcmV0 dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9 IHBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3B3bShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X2Zh bl9zcGVlZF9wd20oYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICBzcGVlZCk7Ci0J bXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQg YW1kZ3B1X2RwbV9nZXRfZmFuX3NwZWVkX3B3bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK IAkJCQkgdWludDMyX3QgKnNwZWVkKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYg KCFwcF9mdW5jcy0+Z2V0X2Zhbl9zcGVlZF9wd20pCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Zhbl9z cGVlZF9wd20oYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYt PnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcHdtKGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgc3BlZWQpOwotCW11dGV4X3VubG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Zhbl9z cGVlZF9ycG0oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJIHVpbnQzMl90ICpzcGVl ZCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2Vy cGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9mYW5f c3BlZWRfcnBtKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcnBtKGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJu IHBwX2Z1bmNzLT5nZXRfZmFuX3NwZWVkX3JwbShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAog CQkJCQkgIHNwZWVkKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVy biByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9mYW5fc3BlZWRfcnBtKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCQkJCSB1aW50MzJfdCBzcGVlZCkKIHsKIAljb25zdCBzdHJ1Y3Qg YW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQg cmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9mYW5fc3BlZWRfcnBtKQogCQlyZXR1cm4g LUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBf ZnVuY3MtPnNldF9mYW5fc3BlZWRfcnBtKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfZmFuX3Nw ZWVkX3JwbShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHNwZWVkKTsKLQltdXRl eF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRn cHVfZHBtX3NldF9mYW5fY29udHJvbF9tb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CQkJCSAgICB1aW50MzJfdCBtb2RlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYg KCFwcF9mdW5jcy0+c2V0X2Zhbl9jb250cm9sX21vZGUpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsK IAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2Zh bl9jb250cm9sX21vZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCko JmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9mYW5fY29udHJvbF9tb2Rl KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgbW9kZSk7Ci0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2Rw bV9nZXRfcG93ZXJfbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xNTY3LDE5 ICsxMzA4LDE1IEBAIGludCBhbWRncHVfZHBtX2dldF9wb3dlcl9saW1pdChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKIAkJCSAgICAgICBlbnVtIHBwX3Bvd2VyX3R5cGUgcG93ZXJfdHlwZSkK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9wb3dlcl9s aW1pdCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfcG93ZXJfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVu Y3MtPmdldF9wb3dlcl9saW1pdChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQlsaW1p dCwKIAkJCQkJcHBfbGltaXRfbGV2ZWwsCiAJCQkJCXBvd2VyX3R5cGUpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1f c2V0X3Bvd2VyX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTU4NywxNyAr MTMyNCwxMyBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfcG93ZXJfbGltaXQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCiAJCQkgICAgICAgdWludDMyX3QgbGltaXQpCiB7CiAJY29uc3Qgc3RydWN0 IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50 IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfcG93ZXJfbGltaXQpCiAJCXJldHVybiAt RUlOVkFMOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5zZXRfcG93ZXJfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9wb3dlcl9saW1pdChh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQlsaW1pdF90eXBlLCBsaW1pdCk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1k Z3B1X2RwbV9pc19jY2xrX2RwbV9zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CkBAIC0xNjA3LDkgKzEzNDAsOCBAQCBpbnQgYW1kZ3B1X2RwbV9pc19jY2xrX2RwbV9zdXBwb3J0 ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShh ZGV2KSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCWNjbGtfZHBtX3N1cHBvcnRlZCA9IGlz X3N1cHBvcnRfY2Nsa19kcG0oYWRldik7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7 CiAKIAlyZXR1cm4gKGludCljY2xrX2RwbV9zdXBwb3J0ZWQ7CiB9CkBAIC0xNjIyLDEwICsxMzU0 LDkgQEAgaW50IGFtZGdwdV9kcG1fZGVidWdmc19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xl dmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGUKIAlpZiAoIXBwX2Z1bmNzLT5kZWJ1Z2ZzX3By aW50X2N1cnJlbnRfcGVyZm9ybWFuY2VfbGV2ZWwpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKIAlwcF9mdW5jcy0+ZGVidWdmc19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xldmVs KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJICBtKTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTYzNSwxOCArMTM2NiwxNCBA QCBpbnQgYW1kZ3B1X2RwbV9nZXRfc211X3Bydl9idWZfZGV0YWlscyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAkJCQkgICAgICAgc2l6ZV90ICpzaXplKQogewogCWNvbnN0IHN0cnVjdCBh bWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCBy ZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3NtdV9wcnZfYnVmX2RldGFpbHMpCiAJCXJl dHVybiAtRU5PU1lTOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBw X2Z1bmNzLT5nZXRfc211X3Bydl9idWZfZGV0YWlscyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0 X3NtdV9wcnZfYnVmX2RldGFpbHMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCWFk ZHIsCiAJCQkJCQlzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJl dHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2lzX292ZXJkcml2ZV9zdXBwb3J0ZWQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC0xNjk4LDcgKzE0MjUsNiBAQCBpbnQgYW1kZ3B1 X2RwbV9zZXRfcHBfdGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgc2l6 ZV90IHNpemUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2 LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWJ1ZiB8fCAhc2l6 ZSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xNzA2LDEzICsxNDMyLDEwIEBAIGludCBhbWRncHVf ZHBtX3NldF9wcF90YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAoYW1kZ3B1 X3NyaW92X3ZmKGFkZXYpIHx8ICFwcF9mdW5jcy0+c2V0X3BwX3RhYmxlIHx8IGFkZXYtPnNjcG1f ZW5hYmxlZCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfcHBfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVu Y3MtPnNldF9wcF90YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCSAgICAgYnVm LAogCQkJCSAgICAgc2l6ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQly ZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfbnVtX2NwdV9jb3JlcyhzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTE3MzcsMTcgKzE0NjAsMTMgQEAgaW50IGFtZGdwdV9k cG1fZGlzcGxheV9jb25maWd1cmF0aW9uX2NoYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKIAkJCQkJICAgIGNvbnN0IHN0cnVjdCBhbWRfcHBfZGlzcGxheV9jb25maWd1cmF0aW9uICpp bnB1dCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBv d2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmRpc3Bs YXlfY29uZmlndXJhdGlvbl9jaGFuZ2UpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hh bmdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5t dXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICAgIGlucHV0KTsKLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBt X2dldF9jbG9ja19ieV90eXBlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTc1NSwz NSArMTQ3NCwyNyBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKIAkJCQkgc3RydWN0IGFtZF9wcF9jbG9ja3MgKmNsb2NrcykKIHsK IAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5w cF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9jbG9ja19ieV90 eXBlKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQg PSBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5cGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9j bG9ja19ieV90eXBlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgdHlwZSwKIAkJ CQkJICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJu IHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Ns a3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCQlzdHJ1Y3QgYW1kX3BwX3NpbXBs ZV9jbG9ja19pbmZvICpjbG9ja3MpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBf ZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAo IXBwX2Z1bmNzLT5nZXRfZGlzcGxheV9tb2RlX3ZhbGlkYXRpb25fY2xvY2tzKQogCQlyZXR1cm4g MDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0 X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Nsb2NrcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0 X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Nsb2NrcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAogCQkJCQkJCSAgIGNsb2Nrcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0K LQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZV93aXRo X2xhdGVuY3koc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xNzkxLDE4ICsxNTAyLDE0 IEBAIGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlX3dpdGhfbGF0ZW5jeShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICAgICAgc3RydWN0IHBwX2Nsb2NrX2xldmVsc193 aXRoX2xhdGVuY3kgKmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICgh cHBfZnVuY3MtPmdldF9jbG9ja19ieV90eXBlX3dpdGhfbGF0ZW5jeSkKIAkJcmV0dXJuIDA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9jbG9j a19ieV90eXBlX3dpdGhfbGF0ZW5jeShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5 X3R5cGVfd2l0aF9sYXRlbmN5KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICAg ICAgdHlwZSwKIAkJCQkJCSAgICAgICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Nsb2NrX2J5 X3R5cGVfd2l0aF92b2x0YWdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTgxMCw2 OSArMTUxNyw1MyBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZV93aXRoX3ZvbHRh Z2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAgICAgIHN0cnVjdCBwcF9jbG9j a19sZXZlbHNfd2l0aF92b2x0YWdlICpjbG9ja3MpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9m dW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7 CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfY2xvY2tfYnlfdHlwZV93aXRoX3ZvbHRhZ2UpCiAJCXJl dHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5nZXRfY2xvY2tfYnlfdHlwZV93aXRoX3ZvbHRhZ2UoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdl dF9jbG9ja19ieV90eXBlX3dpdGhfdm9sdGFnZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAog CQkJCQkJICAgICAgIHR5cGUsCiAJCQkJCQkgICAgICAgY2xvY2tzKTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3Nl dF93YXRlcm1hcmtzX2Zvcl9jbG9ja3NfcmFuZ2VzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCQkJCQkgICAgICAgdm9pZCAqY2xvY2tfcmFuZ2VzKQogewogCWNvbnN0IHN0cnVjdCBhbWRf cG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQg PSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19yYW5nZXMp CiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK LQlyZXQgPSBwcF9mdW5jcy0+c2V0X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19yYW5nZXMoYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gcHBfZnVuY3MtPnNldF93YXRlcm1hcmtzX2Zvcl9jbG9ja3NfcmFuZ2VzKGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJIGNsb2NrX3Jhbmdlcyk7Ci0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9k aXNwbGF5X2Nsb2NrX3ZvbHRhZ2VfcmVxdWVzdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK IAkJCQkJICAgICBzdHJ1Y3QgcHBfZGlzcGxheV9jbG9ja19yZXF1ZXN0ICpjbG9jaykKIHsKIAlj b25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9m dW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmRpc3BsYXlfY2xvY2tfdm9s dGFnZV9yZXF1ZXN0KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmRpc3BsYXlfY2xvY2tfdm9sdGFnZV9yZXF1 ZXN0KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5t dXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5kaXNwbGF5X2Nsb2NrX3ZvbHRhZ2VfcmVxdWVzdChh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkJICAgICAgY2xvY2spOwotCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9k cG1fZ2V0X2N1cnJlbnRfY2xvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAg c3RydWN0IGFtZF9wcF9jbG9ja19pbmZvICpjbG9ja3MpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9w bV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9 IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfY3VycmVudF9jbG9ja3MpCiAJCXJldHVybiAtRU9Q Tk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5j cy0+Z2V0X2N1cnJlbnRfY2xvY2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfY3VycmVudF9j bG9ja3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgY2xvY2tzKTsKLQltdXRl eF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIHZvaWQgYW1k Z3B1X2RwbV9ub3RpZnlfc211X2VuYWJsZV9wd2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CkBAIC0xODgyLDQzICsxNTczLDM0IEBAIHZvaWQgYW1kZ3B1X2RwbV9ub3RpZnlfc211X2VuYWJs ZV9wd2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKCFwcF9mdW5jcy0+bm90aWZ5 X3NtdV9lbmFibGVfcHdlKQogCQlyZXR1cm47CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRl eCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJcHBfZnVuY3MtPm5vdGlmeV9z bXVfZW5hYmxlX3B3ZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X2FjdGl2ZV9kaXNwbGF5 X2NvdW50KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQl1aW50MzJfdCBjb3VudCkK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9hY3RpdmVf ZGlzcGxheV9jb3VudCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfYWN0aXZlX2Rpc3BsYXlfY291bnQo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9hY3RpdmVfZGlzcGxheV9jb3VudChhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAogCQkJCQkJIGNvdW50KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9taW5fZGVl cF9zbGVlcF9kY2VmY2xrKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkgIHVpbnQz Ml90IGNsb2NrKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRl di0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ c2V0X21pbl9kZWVwX3NsZWVwX2RjZWZjbGspCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X21pbl9kZWVw X3NsZWVwX2RjZWZjbGsoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCko JmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9taW5fZGVlcF9zbGVlcF9k Y2VmY2xrKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICBjbG9jayk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiB2b2lkIGFt ZGdwdV9kcG1fc2V0X2hhcmRfbWluX2RjZWZjbGtfYnlfZnJlcShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKQEAgLTE5MjksMTAgKzE2MTEsOSBAQCB2b2lkIGFtZGdwdV9kcG1fc2V0X2hhcmRf bWluX2RjZWZjbGtfYnlfZnJlcShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAoIXBw X2Z1bmNzLT5zZXRfaGFyZF9taW5fZGNlZmNsa19ieV9mcmVxKQogCQlyZXR1cm47CiAKLQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7 CiAJcHBfZnVuY3MtPnNldF9oYXJkX21pbl9kY2VmY2xrX2J5X2ZyZXEoYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZSwKIAkJCQkJICAgICAgIGNsb2NrKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKIH0KIAogdm9pZCBhbWRncHVfZHBtX3NldF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xOTQzLDQ0ICsxNjI0LDM1IEBAIHZvaWQg YW1kZ3B1X2RwbV9zZXRfaGFyZF9taW5fZmNsa19ieV9mcmVxKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogCWlmICghcHBfZnVuY3MtPnNldF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEpCiAJCXJl dHVybjsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKIAlwcF9mdW5jcy0+c2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcShhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgY2xvY2spOwotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9kaXNwbGF5X2Rpc2FibGVfbWVt b3J5X2Nsb2NrX3N3aXRjaChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJCSAgIGJv b2wgZGlzYWJsZV9tZW1vcnlfY2xvY2tfc3dpdGNoKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1f ZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAw OwogCiAJaWYgKCFwcF9mdW5jcy0+ZGlzcGxheV9kaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2gp CiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBw X2Z1bmNzLT5kaXNwbGF5X2Rpc2FibGVfbWVtb3J5X2Nsb2NrX3N3aXRjaChhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBw cF9mdW5jcy0+ZGlzcGxheV9kaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2goYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKIAkJCQkJCQkgICAgZGlzYWJsZV9tZW1vcnlfY2xvY2tfc3dpdGNoKTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGlu dCBhbWRncHVfZHBtX2dldF9tYXhfc3VzdGFpbmFibGVfY2xvY2tzX2J5X2RjKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCQkJCQkJc3RydWN0IHBwX3NtdV9udl9jbG9ja190YWJsZSAqbWF4 X2Nsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYt PnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdl dF9tYXhfc3VzdGFpbmFibGVfY2xvY2tzX2J5X2RjKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9tYXhf c3VzdGFpbmFibGVfY2xvY2tzX2J5X2RjKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfbWF4X3N1 c3RhaW5hYmxlX2Nsb2Nrc19ieV9kYyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkJ CSBtYXhfY2xvY2tzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVy biByZXQ7CiB9CiAKIGVudW0gcHBfc211X3N0YXR1cyBhbWRncHVfZHBtX2dldF91Y2xrX2RwbV9z dGF0ZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xOTg4LDM1ICsxNjYwLDI3IEBA IGVudW0gcHBfc211X3N0YXR1cyBhbWRncHVfZHBtX2dldF91Y2xrX2RwbV9zdGF0ZXMoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCQkgIHVuc2lnbmVkIGludCAqbnVtX3N0YXRlcykK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF91Y2xrX2Rw bV9zdGF0ZXMpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X3VjbGtfZHBtX3N0YXRlcyhhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBwcF9mdW5jcy0+Z2V0X3VjbGtfZHBtX3N0YXRlcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAogCQkJCQkgICAgY2xvY2tfdmFsdWVzX2luX2toeiwKIAkJCQkJICAgIG51bV9zdGF0ZXMpOwot CW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50 IGFtZGdwdV9kcG1fZ2V0X2RwbV9jbG9ja190YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKIAkJCQkgICBzdHJ1Y3QgZHBtX2Nsb2NrcyAqY2xvY2tfdGFibGUpCiB7CiAJY29uc3Qgc3Ry dWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0J aW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZHBtX2Nsb2NrX3RhYmxlKQogCQly ZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0 ID0gcHBfZnVuY3MtPmdldF9kcG1fY2xvY2tfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdl dF9kcG1fY2xvY2tfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgIGNs b2NrX3RhYmxlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CiB9CiAKIC8qKgpAQCAtMjAzNywxNyArMTcwMSwxMyBAQCBzc2l6ZV90IGFtZGdwdV9kcG1f Z2V0X3RlbXBfbWV0cmljcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgZW51 bSBzbXVfdGVtcF9tZXRyaWNfdHlwZSB0eXBlLCB2b2lkICp0YWJsZSkKIHsKIAljb25zdCBzdHJ1 Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlp bnQgcmV0OwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3RlbXBfbWV0cmljcyB8fAogCSAgICAhYW1k Z3B1X2RwbV9pc190ZW1wX21ldHJpY3Nfc3VwcG9ydGVkKGFkZXYsIHR5cGUpKQogCQlyZXR1cm4g LUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBf ZnVuY3MtPmdldF90ZW1wX21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSwg dGFibGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF90 ZW1wX21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSwgdGFibGUpOwogfQog CiAvKioKQEAgLTIwNjQsMTkgKzE3MjQsMTUgQEAgYm9vbCBhbWRncHVfZHBtX2lzX3RlbXBfbWV0 cmljc19zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAgZW51bSBz bXVfdGVtcF9tZXRyaWNfdHlwZSB0eXBlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3Mg KnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWJvb2wgc3VwcG9ydF90ZW1w X21ldHJpY3MgPSBmYWxzZTsKIAogCWlmICghcHBfZnVuY3MtPnRlbXBfbWV0cmljc19pc19zdXBw b3J0ZWQpCi0JCXJldHVybiBzdXBwb3J0X3RlbXBfbWV0cmljczsKKwkJcmV0dXJuIGZhbHNlOwog Ci0JaWYgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQkJc3VwcG9ydF90ZW1wX21ldHJpY3MgPQotCQkJcHBfZnVuY3MtPnRlbXBfbWV0 cmljc19pc19zdXBwb3J0ZWQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSk7Ci0JCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIWlzX3N1cHBvcnRfc3dfc211 KGFkZXYpKQorCQlyZXR1cm4gZmFsc2U7CiAKLQlyZXR1cm4gc3VwcG9ydF90ZW1wX21ldHJpY3M7 CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT50ZW1w X21ldHJpY3NfaXNfc3VwcG9ydGVkKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHR5cGUpOwog fQogCiAvKioKQEAgLTIwOTgsMTcgKzE3NTQsMTMgQEAgc3NpemVfdCBhbWRncHVfZHBtX2dldF94 Y3BfbWV0cmljcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgaW50IHhjcF9pZCwKIAkJCQkg ICB2b2lkICp0YWJsZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9 IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVu Y3MtPmdldF94Y3BfbWV0cmljcykKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF94Y3BfbWV0cmljcyhhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLCB4Y3BfaWQsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJ cmV0dXJuIHBwX2Z1bmNzLT5nZXRfeGNwX21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZSwgeGNwX2lkLAogCQkJCQl0YWJsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBjb25zdCBzdHJ1Y3QgcmFzX3NtdV9kcnYgKmFtZGdwdV9k cG1fZ2V0X3Jhc19zbXVfZHJpdmVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQotLSAKMi40 My4wCgo=