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 7E1A3CD3427 for ; Sun, 10 May 2026 10:07:35 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E48A710E62C; Sun, 10 May 2026 10:07:07 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; secure) header.d=usp.br header.i=@usp.br header.b="IO3SEi5p"; dkim-atps=neutral Received: from mail-dy1-f182.google.com (mail-dy1-f182.google.com [74.125.82.182]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6A95810E36B for ; Fri, 8 May 2026 23:03:24 +0000 (UTC) Received: by mail-dy1-f182.google.com with SMTP id 5a478bee46e88-2ba9c484e5eso2699654eec.1 for ; Fri, 08 May 2026 16:03:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=usp.br; s=usp-google; t=1778281403; x=1778886203; 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=KXr6NL7ZBeYTJWM7M4//5FYAEGbU7fmtZzlADjfLe6Y=; b=IO3SEi5pi7RfQBBzCh+GTmbg4N4ElcyssNDaxLOC4b3KZFu2q+MOiAmpk2s4Ir3T18 1sJHR0ELAyPpja2fHmAthU6LQTU5DUCZppCDcNkmJUjDIl/lagkuxfb9tVgmuBA298iI 5H25bSlGQHsc8trkv9s9QBV7vaLLtZTgSYnDVg339HThKno75sOzU03PUbsLMm8h0KaB N0IeIkgNyMrTDErxTr9SnO0lwWRXxl3kGocXMRVBLNAlhnIxeUtENlHfnbF6yzZSXf4G 8k2O2kOsIJ/Iqw6WR8NVTw69RnCZYzCSBZTN9PutrL69XtDedc2bVnSdqMuFCZVStAgJ lnhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778281403; x=1778886203; 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=KXr6NL7ZBeYTJWM7M4//5FYAEGbU7fmtZzlADjfLe6Y=; b=EAzeFtGveb8HmvPvJi/JwVfto8u+5Eo2w07z4dl75cHqD3Jsy4daWOI2tQilnimq2M ezWgIDJUQGgDNqu6jBkjyUCiCloNqnaLJnAdqieaOhrf9V6iJWaNIPHgVt5kEh3dpwCd CAgrYFwoJ9ITrNbHeB7R0KF3q7YvZokF+z8hxbN6kBCxC+ui6cegnIFPiofXFhwcbDHo R5I05zRdLriESYyaWjeUvBOw8zqgL4jTN6KY4y2KzU0TZyaA/QX+GOU6mXoyEm3rTW+M eo0N8X1A7I4RP61Kp3eHiZrkOjjnqk+jY04U3LIENuEWD2xTyrGluLc8tuYPa3d5HyDO uwpw== X-Forwarded-Encrypted: i=1; AFNElJ/TRTGPjJHdvZK+jEd/euBqK5JXfsU+ZFWOWvivMwdB5bAX18s2f8q0rMZQ5O7Na9F6PcokZvj1hLo=@lists.freedesktop.org X-Gm-Message-State: AOJu0YxyCvkKkBG1YQ+Dm4yntRcJAN67fkcP+rX69hCHA1L/ROWbcQtu hTTOjd5MVG0M8VE/5HVLe7O9UWCzKLGodccXbFxjosrOtgm/ieMgoC6MoQi4Wrz9JNiVJ0kjLqY bX2fZ X-Gm-Gg: Acq92OH0UtSnb/aI58iK+fmxAEB8bG42XT1oq2MWSb0rfmcZ/hAiH9J3aqRElAtSwL3 mHnuOvz2WIwyMKx2oGc2IlKx3BqmjI+zYV16TlMRoYFMjeUoFL6bzahUJBL310WxTAeOAVj/Xtq FTzYXIqGtbLJ6FslBKi6Gbyn+7X7TWEXPJOsqwzEAbFIftfezjKcxGgSfMrQNdyORhRnIFbRB/q PBTjwBmy+NYvqUBOku5McR9gwwJoULrLmnEiIoUG4BR8ouHIyGYVaWqJTQ8Nw3Nx/Q8Qkxi+BFD 6qloGrV0+qf10zHUb1CU2RfP2zZJIxmBzBGkwPQ9zBpubZst1xOdznD/CK0MczYFt/NbrYbsDI3 biOIOXViZ629NpiUZ5MzT047KlLMaHXDFgDW/iUW5sRbqefdL6mGsrWqz4oxBz7cfEcUixQ1jTF NpZ3IAoy4maghO7fzmfesiqRumSKwoAx+iP3I7VeF6PHO0sMSbApqKtRv4i/81o/SweaG8Youal kFJhBWB X-Received: by 2002:a05:7300:e78d:b0:2d2:d7b7:5c61 with SMTP id 5a478bee46e88-2f548a99ad3mr6861272eec.14.1778281402857; Fri, 08 May 2026 16:03: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 5a478bee46e88-2f88885b820sm4096453eec.20.2026.05.08.16.03.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 16:03:22 -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 v5] drm/amd/pm: Use guard(mutex) instead of manual lock+unlock Date: Fri, 8 May 2026 20:03:12 -0300 Message-ID: <20260508230312.6108-1-andrejhirata@usp.br> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508172345.6680-1-andrejhirata@usp.br> References: <20260508172345.6680-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 ZXJtZXNhbmdhYnJpZWxAdXNwLmJyPgoKdjI6IGluY29ycG9yYXRlIENocmlzdGlhbiBLw7ZuaWcn cyBzdWdnZXN0aW9uczoKICAtIHVzZSByZXR1cm4gZigpIGRpcmVjdGx5IGluc3RlYWQgb2YgcmV0 ID0gZigpOyByZXR1cm4gcmV0OwogIC0gdXNlIGVhcmx5IHJldHVybiBwYXR0ZXJuIGJlZm9yZSBn dWFyZCgpIHdoZXJlIGFwcGxpY2FibGUKCnYzOiBmaXggc3R5bGUgbml0cyBwb2ludGVkIGJ5IENo cmlzdGlhbiBLw7ZuaWc6CiAgLSBkcm9wIHN1cGVyZmx1b3VzIHJldCBpbml0aWFsaXphdGlvbiBp biBzZXRfZ2Z4X3Bvd2VyX3VwX2J5X2ltdQogIC0gZHJvcCB1bm5lY2Vzc2FyeSBicmFjZXMgYXJv dW5kIHNpbmdsZS1saW5lIHNjb3BlZF9ndWFyZAoKdjQ6CiAtIGZpeCBidWlsZCBlcnJvcnMgaW50 cm9kdWNlZCBpbiB2MwogLSBmaXggaW5jb3JyZWN0IGlzX3N1cHBvcnRfc3dfc211KCkgY29uZGl0 aW9uCiAtIHJlbW92ZSBhY2NpZGVudGFsICJyZXR1cm4gPSIgdHlwb3MKCnY1OiBmaXggaW5jb3Jy ZWN0IGRpZmYgaW4gdjQKLS0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYyB8 IDg2OCArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjYxIGlu c2VydGlvbnMoKyksIDYwNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL3BtL2FtZGdwdV9kcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG0vYW1kZ3B1X2Rw bS5jCmluZGV4IGZlYWRmNjA0Yi4uNWZhMDQzMDI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL3BtL2FtZGdwdV9kcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdw dV9kcG0uYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImFtZF9wY2llLmgiCiAjaW5jbHVk ZSAiYW1kZ3B1X2Rpc3BsYXkuaCIKICNpbmNsdWRlICJod21nci5oIgorI2luY2x1ZGUgPGxpbnV4 L2NsZWFudXAuaD4KICNpbmNsdWRlIDxsaW51eC9wb3dlcl9zdXBwbHkuaD4KICNpbmNsdWRlICJh bWRncHVfc211LmgiCiAKQEAgLTQxLDMzICs0MiwyNSBAQAogaW50IGFtZGdwdV9kcG1fZ2V0X3Nj bGsoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgbG93KQogewogCWNvbnN0IHN0cnVj dCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWlu dCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3NjbGspCiAJCXJldHVybiAwOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfc2Nsaygo YWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfc2NsaygoYWRldiktPnBvd2VycGxheS5wcF9oYW5k bGUsCiAJCQkJIGxvdyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1 cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfbWNsayhzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwgYm9vbCBsb3cpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVu Y3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBw X2Z1bmNzLT5nZXRfbWNsaykKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9tY2xrKChhZGV2KS0+cG93ZXJwbGF5LnBwX2hh bmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3Mt PmdldF9tY2xrKChhZGV2KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkgbG93KTsKLQltdXRl eF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRn cHVfZHBtX3NldF9wb3dlcmdhdGluZ19ieV9zbXUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CkBAIC04MCwxMyArNzMsMTIgQEAgaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyZ2F0aW5nX2J5X3Nt dShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAllbnVtIGlwX3Bvd2VyX3N0YXRlIHB3cl9z dGF0ZSA9IGdhdGUgPyBQT1dFUl9TVEFURV9PRkYgOiBQT1dFUl9TVEFURV9PTjsKIAlib29sIGlz X3ZjbiA9IGJsb2NrX3R5cGUgPT0gQU1EX0lQX0JMT0NLX1RZUEVfVkNOOwogCi0JbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJ aWYgKGF0b21pY19yZWFkKCZhZGV2LT5wbS5wd3Jfc3RhdGVbYmxvY2tfdHlwZV0pID09IHB3cl9z dGF0ZSAmJgogCQkJKCFpc192Y24gfHwgYWRldi0+dmNuLm51bV92Y25faW5zdCA9PSAxKSkgewog CQlkZXZfZGJnKGFkZXYtPmRldiwgIklQIGJsb2NrJWQgYWxyZWFkeSBpbiB0aGUgdGFyZ2V0ICVz IHN0YXRlISIsCiAJCQkJYmxvY2tfdHlwZSwgZ2F0ZSA/ICJnYXRlIiA6ICJ1bmdhdGUiKTsKLQkJ Z290byBvdXRfdW5sb2NrOworCQlyZXR1cm4gcmV0OwogCX0KIAogCXN3aXRjaCAoYmxvY2tfdHlw ZSkgewpAQCAtMTE1LDIwICsxMDcsMTYgQEAgaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyZ2F0aW5n X2J5X3NtdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAoIXJldCkKIAkJYXRvbWlj X3NldCgmYWRldi0+cG0ucHdyX3N0YXRlW2Jsb2NrX3R5cGVdLCBwd3Jfc3RhdGUpOwogCi1vdXRf dW5sb2NrOgotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCiAJcmV0dXJuIHJldDsK IH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X2dmeF9wb3dlcl91cF9ieV9pbXUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKKwlpbnQgcmV0OwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9zZXRfZ2Z4X3Bvd2VyX3Vw X2J5X2ltdShzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCXNjb3BlZF9n dWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KQorCQlyZXQgPSBzbXVfc2V0X2dmeF9wb3dlcl91 cF9ieV9pbXUoc211KTsKIAogCW1zbGVlcCgxMCk7CiAKQEAgLTEzOSw0NCArMTI3LDMxIEBAIGlu dCBhbWRncHVfZHBtX2JhY29fZW50ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlp bnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5zZXRfYXNpY19iYWNv X3N0YXRlKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCS8qIGVudGVyIEJBQ08gc3Rh dGUgKi8KLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2FzaWNfYmFjb19zdGF0ZShwcF9oYW5kbGUsIDEp OwotCi0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCXJl dHVybiBwcF9mdW5jcy0+c2V0X2FzaWNfYmFjb19zdGF0ZShwcF9oYW5kbGUsIDEpOwogfQogCiBp bnQgYW1kZ3B1X2RwbV9iYWNvX2V4aXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlp bnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5zZXRfYXNpY19iYWNv X3N0YXRlKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCS8qIGV4aXQgQkFDTyBzdGF0 ZSAqLwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKHBwX2hhbmRsZSwgMCk7 Ci0KLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJcmV0 dXJuIHBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKHBwX2hhbmRsZSwgMCk7CiB9CiAKIGlu dCBhbWRncHVfZHBtX3NldF9tcDFfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJ CQkgICAgIGVudW0gcHBfbXAxX3N0YXRlIG1wMV9zdGF0ZSkKIHsKLQlpbnQgcmV0ID0gMDsKIAlj b25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9m dW5jczsKIAogCWlmIChtcDFfc3RhdGUgPT0gUFBfTVAxX1NUQVRFX0ZMUikgewpAQCAtMTg0LDIz ICsxNTksMTkgQEAgaW50IGFtZGdwdV9kcG1fc2V0X21wMV9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAkJaWYgKGFtZGdwdV9zcmlvdl92ZihhZGV2KSkKIAkJCWFkZXYtPnBtLmRw bV9lbmFibGVkID0gZmFsc2U7CiAJfSBlbHNlIGlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c2V0 X21wMV9zdGF0ZSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQkJcmV0ID0g cHBfZnVuY3MtPnNldF9tcDFfc3RhdGUoCisJCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgp OworCQlyZXR1cm4gcHBfZnVuY3MtPnNldF9tcDFfc3RhdGUoCiAJCQkJYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZSwKIAkJCQltcDFfc3RhdGUpOwotCi0JCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwogCX0KIAotCXJldHVybiByZXQ7CisJcmV0dXJuIDA7CiB9CiAKIGludCBhbWRncHVf ZHBtX2lzX2JhY29fc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWNv bnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1 bmNzOwogCXZvaWQgKnBwX2hhbmRsZSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50 IHJldDsKIAogCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5nZXRfYXNpY19iYWNvX2NhcGFi aWxpdHkpCiAJCXJldHVybiAwOwpAQCAtMjE2LDQ5ICsxODcsMzIgQEAgaW50IGFtZGdwdV9kcG1f aXNfYmFjb19zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKGFkZXYt PmluX3MzKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQot CXJldCA9IHBwX2Z1bmNzLT5nZXRfYXNpY19iYWNvX2NhcGFiaWxpdHkocHBfaGFuZGxlKTsKLQot CW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9hc2ljX2JhY29f Y2FwYWJpbGl0eShwcF9oYW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9tb2RlMl9yZXNldChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNz ICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAl2b2lkICpwcF9oYW5kbGUg PSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9m dW5jcyB8fCAhcHBfZnVuY3MtPmFzaWNfcmVzZXRfbW9kZV8yKQogCQlyZXR1cm4gLUVOT0VOVDsK IAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldCA9IHBwX2Z1bmNzLT5hc2lj X3Jlc2V0X21vZGVfMihwcF9oYW5kbGUpOwotCi0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJl dHVybiBwcF9mdW5jcy0+YXNpY19yZXNldF9tb2RlXzIocHBfaGFuZGxlKTsKIH0KIAogaW50IGFt ZGdwdV9kcG1fZW5hYmxlX2dmeF9mZWF0dXJlcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKIAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl OwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPmFzaWNfcmVz ZXRfZW5hYmxlX2dmeF9mZWF0dXJlcykKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXQgPSBwcF9mdW5jcy0+YXNpY19yZXNldF9lbmFibGVf Z2Z4X2ZlYXR1cmVzKHBwX2hhbmRsZSk7Ci0KLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0 dXJuIHBwX2Z1bmNzLT5hc2ljX3Jlc2V0X2VuYWJsZV9nZnhfZmVhdHVyZXMocHBfaGFuZGxlKTsK IH0KIAogaW50IGFtZGdwdV9kcG1fYmFjb19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKQEAgLTI3MCw3NSArMjI0LDYwIEBAIGludCBhbWRncHVfZHBtX2JhY29fcmVzZXQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnNldF9h c2ljX2JhY29fc3RhdGUpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+ cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCiAJLyogZW50ZXIg QkFDTyBzdGF0ZSAqLwogCXJldCA9IHBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKHBwX2hh bmRsZSwgMSk7CiAJaWYgKHJldCkKLQkJZ290byBvdXQ7CisJCXJldHVybiByZXQ7CiAKIAkvKiBl eGl0IEJBQ08gc3RhdGUgKi8KIAlyZXQgPSBwcF9mdW5jcy0+c2V0X2FzaWNfYmFjb19zdGF0ZShw cF9oYW5kbGUsIDApOwotCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAJ cmV0dXJuIHJldDsKIH0KIAogYm9vbCBhbWRncHVfZHBtX2lzX21vZGUxX3Jlc2V0X3N1cHBvcnRl ZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNt dSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JYm9vbCBzdXBwb3J0X21vZGUxX3Jlc2V0 ID0gZmFsc2U7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCQlzdXBwb3J0X21vZGUxX3Jlc2V0ID0gc211X21vZGUxX3Jl c2V0X2lzX3N1cHBvcnQoc211KTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0J fQorCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJldHVybiBmYWxzZTsKIAotCXJl dHVybiBzdXBwb3J0X21vZGUxX3Jlc2V0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgp OworCXJldHVybiBzbXVfbW9kZTFfcmVzZXRfaXNfc3VwcG9ydChzbXUpCiB9CiAKIGludCBhbWRn cHVfZHBtX21vZGUxX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVj dCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0 ID0gLUVPUE5PVFNVUFA7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0 ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBzbXVfbW9kZTFfcmVzZXQoc211KTsK LQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghaXNfc3VwcG9ydF9z d19zbXUoYWRldikpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVybiByZXQ7CisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9tb2RlMV9yZXNldChzbXUp OwogfQogCiBib29sIGFtZGdwdV9kcG1faXNfbGlua19yZXNldF9zdXBwb3J0ZWQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlOwotCWJvb2wgc3VwcG9ydF9saW5rX3Jlc2V0ID0gZmFsc2U7CiAK LQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCQlzdXBwb3J0X2xpbmtfcmVzZXQgPSBzbXVfbGlua19yZXNldF9pc19zdXBwb3J0 KHNtdSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIWlzX3N1 cHBvcnRfc3dfc211KGFkZXYpKQorCQlyZXR1cm4gZmFsc2U7CiAKLQlyZXR1cm4gc3VwcG9ydF9s aW5rX3Jlc2V0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVf bGlua19yZXNldF9pc19zdXBwb3J0KHNtdSk7CiB9CiAKIGludCBhbWRncHVfZHBtX2xpbmtfcmVz ZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpz bXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsK IAotCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JCXJldCA9IHNtdV9saW5rX3Jlc2V0KHNtdSk7Ci0JCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQorCQly ZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOworCXJldHVybiBzbXVfbGlua19yZXNldChzbXUpOwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9zd2l0Y2hfcG93ZXJfcHJvZmlsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAg LTM0NiwxMDAgKzI4NSw4MiBAQCBpbnQgYW1kZ3B1X2RwbV9zd2l0Y2hfcG93ZXJfcHJvZmlsZShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgYm9vbCBlbikKIHsKIAljb25zdCBz dHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsK LQlpbnQgcmV0ID0gMDsKIAogCWlmIChhbWRncHVfc3Jpb3ZfdmYoYWRldikpCiAJCXJldHVybiAw OwogCi0JaWYgKHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5zd2l0Y2hfcG93ZXJfcHJvZmlsZSkgewot CQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5zd2l0Y2hf cG93ZXJfcHJvZmlsZSgKLQkJCWFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHR5cGUsIGVuKTsK LQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghcHBfZnVuY3MgfHwg IXBwX2Z1bmNzLT5zd2l0Y2hfcG93ZXJfcHJvZmlsZSkKKwkJcmV0dXJuIDA7CiAKLQlyZXR1cm4g cmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+ c3dpdGNoX3Bvd2VyX3Byb2ZpbGUoCisJCQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBl LCBlbik7CiB9CiAKIGludCBhbWRncHVfZHBtX3BhdXNlX3Bvd2VyX3Byb2ZpbGUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgYm9vbCBwYXVzZSkKIHsKIAljb25zdCBzdHJ1Y3Qg YW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQg cmV0ID0gMDsKIAogCWlmIChhbWRncHVfc3Jpb3ZfdmYoYWRldikpCiAJCXJldHVybiAwOwogCi0J aWYgKHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5wYXVzZV9wb3dlcl9wcm9maWxlKSB7Ci0JCW11dGV4 X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnBhdXNlX3Bvd2VyX3By b2ZpbGUoCi0JCQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBwYXVzZSk7Ci0JCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+ cGF1c2VfcG93ZXJfcHJvZmlsZSkKKwkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gcmV0OworCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+cGF1c2VfcG93ZXJf cHJvZmlsZSgKKwkJCWFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHBhdXNlKTsKIH0KIAogaW50 IGFtZGdwdV9kcG1fc2V0X3hnbWlfcHN0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CQkJICAgICAgIHVpbnQzMl90IHBzdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNz ICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAot CWlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c2V0X3hnbWlfcHN0YXRlKSB7Ci0JCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnNldF94Z21pX3BzdGF0ZShh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAotCQkJCQkJCQlwc3RhdGUpOwotCQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnNl dF94Z21pX3BzdGF0ZSkKKwkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X3hnbWlfcHN0YXRlKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJCQkJCQkJCXBzdGF0ZSk7CiB9CiAKIGludCBhbWRn cHVfZHBtX3NldF9kZl9jc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAg IHVpbnQzMl90IGNzdGF0ZSkKIHsKLQlpbnQgcmV0ID0gMDsKIAljb25zdCBzdHJ1Y3QgYW1kX3Bt X2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAl2b2lkICpwcF9o YW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCi0JaWYgKHBwX2Z1bmNzICYmIHBw X2Z1bmNzLT5zZXRfZGZfY3N0YXRlKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK LQkJcmV0ID0gcHBfZnVuY3MtPnNldF9kZl9jc3RhdGUocHBfaGFuZGxlLCBjc3RhdGUpOwotCQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5jcyB8fCAhcHBf ZnVuY3MtPnNldF9kZl9jc3RhdGUpCisJCXJldHVybiAwOwogCi0JcmV0dXJuIHJldDsKKwlndWFy ZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9kZl9jc3Rh dGUocHBfaGFuZGxlLCBjc3RhdGUpOwogfQogCiBzc2l6ZV90IGFtZGdwdV9kcG1fZ2V0X3BtX3Bv bGljeV9pbmZvKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICAgIGVudW0gcHBf cG1fcG9saWN5IHBfdHlwZSwgY2hhciAqYnVmKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211 ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAK LQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCQlyZXQgPSBzbXVfZ2V0X3BtX3BvbGljeV9pbmZvKHNtdSwgcF90eXBlLCBidWYp OwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFpc19zdXBwb3J0 X3N3X3NtdShhZGV2KSkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0dXJuIHJldDsKKwln dWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X2dldF9wbV9wb2xpY3lf aW5mbyhzbXUsIHBfdHlwZSwgYnVmKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3BtX3BvbGlj eShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgaW50IHBvbGljeV90eXBlLAogCQkJICAgICBp bnQgcG9saWN5X2xldmVsKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAKLQlpZiAoaXNfc3Vw cG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQly ZXQgPSBzbXVfc2V0X3BtX3BvbGljeShzbXUsIHBvbGljeV90eXBlLCBwb2xpY3lfbGV2ZWwpOwot CQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFpc19zdXBwb3J0X3N3 X3NtdShhZGV2KSkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0dXJuIHJldDsKKwlndWFy ZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3NldF9wbV9wb2xpY3koc211 LCBwb2xpY3lfdHlwZSwgcG9saWN5X2xldmVsKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZW5hYmxl X21ncHVfZmFuX2Jvb3N0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQpAQCAtNDQ3LDE1ICsz NjgsMTIgQEAgaW50IGFtZGdwdV9kcG1fZW5hYmxlX21ncHVfZmFuX2Jvb3N0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogCXZvaWQgKnBwX2hhbmRsZSA9IGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGU7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPQogCQkJYWRldi0+ cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCi0JaWYgKHBwX2Z1bmNzICYmIHBw X2Z1bmNzLT5lbmFibGVfbWdwdV9mYW5fYm9vc3QpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+ZW5hYmxlX21ncHVfZmFuX2Jvb3N0KHBwX2hhbmRs ZSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNz IHx8ICFwcF9mdW5jcy0+ZW5hYmxlX21ncHVfZmFuX2Jvb3N0KQorCQlyZXR1cm4gMDsKIAotCXJl dHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1 bmNzLT5lbmFibGVfbWdwdV9mYW5fYm9vc3QocHBfaGFuZGxlKTsKIH0KIAogaW50IGFtZGdwdV9k cG1fc2V0X2Nsb2NrZ2F0aW5nX2J5X3NtdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAg LTQ2NCwxNiArMzgyLDEzIEBAIGludCBhbWRncHVfZHBtX3NldF9jbG9ja2dhdGluZ19ieV9zbXUo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZTsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9 CiAJCQlhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKLQlpZiAocHBf ZnVuY3MgJiYgcHBfZnVuY3MtPnNldF9jbG9ja2dhdGluZ19ieV9zbXUpIHsKLQkJbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+c2V0X2Nsb2NrZ2F0aW5nX2J5 X3NtdShwcF9oYW5kbGUsCi0JCQkJCQkgICAgICAgbXNnX2lkKTsKLQkJbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5zZXRfY2xv Y2tnYXRpbmdfYnlfc211KQorCQlyZXR1cm4gMDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfY2xvY2tnYXRpbmdf Ynlfc211KHBwX2hhbmRsZSwKKwkJCQkJCSAgICAgICBtc2dfaWQpOwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9zbXVfaTJjX2J1c19hY2Nlc3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC00 ODIsMjIgKzM5NywxOSBAQCBpbnQgYW1kZ3B1X2RwbV9zbXVfaTJjX2J1c19hY2Nlc3Moc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZTsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9CiAJCQlh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IC1FT1BOT1RTVVBQOwogCi0JaWYg KHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5zbXVfaTJjX2J1c19hY2Nlc3MpIHsKLQkJbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+c211X2kyY19idXNfYWNjZXNz KHBwX2hhbmRsZSwKLQkJCQkJCSAgIGFjcXVpcmUpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnNtdV9pMmNfYnVzX2Fj Y2VzcykKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNtdV9pMmNfYnVzX2FjY2Vz cyhwcF9oYW5kbGUsCisJCQkJCQkgICBhY3F1aXJlKTsKIH0KIAogdm9pZCBhbWRncHVfcG1fYWNw aV9ldmVudF9oYW5kbGVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWlmIChhZGV2 LT5wbS5kcG1fZW5hYmxlZCkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCQlpZiAocG93ZXJfc3VwcGx5X2lzX3N5c3Rl bV9zdXBwbGllZCgpID4gMCkKIAkJCWFkZXYtPnBtLmFjX3Bvd2VyID0gdHJ1ZTsKIAkJZWxzZQpA QCAtNTEwLDcgKzQyMiw2IEBAIHZvaWQgYW1kZ3B1X3BtX2FjcGlfZXZlbnRfaGFuZGxlcihzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJaWYgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQog CQkJc211X3NldF9hY19kYyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKIAotCQltdXRleF91 bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKIAl9CiB9CiAKQEAgLTUxOCw0OSArNDI5LDQwIEBAIGlu dCBhbWRncHVfZHBtX3JlYWRfc2Vuc29yKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBlbnVt IGFtZF9wcF9zZW5zb3JzIHNlbnNvCiAJCQkgICB2b2lkICpkYXRhLCB1aW50MzJfdCAqc2l6ZSkK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gLUVJTlZBTDsKIAogCWlmICghZGF0YSB8fCAhc2l6ZSkK IAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnJlYWRfc2Vu c29yKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3Mt PnJlYWRfc2Vuc29yKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJaWYgKCFwcF9mdW5jcyB8 fCAhcHBfZnVuY3MtPnJlYWRfc2Vuc29yKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+cmVhZF9zZW5zb3IoYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgIHNlbnNvciwKIAkJCQkJICAgIGRhdGEs CiAJCQkJCSAgICBzaXplKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQot Ci0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2FwdV90aGVybWFsX2xpbWl0 KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCAqbGltaXQpCiB7CiAJY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7 Ci0JaW50IHJldCA9IC1FT1BOT1RTVVBQOwogCi0JaWYgKHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5n ZXRfYXB1X3RoZXJtYWxfbGltaXQpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2FwdV90aGVybWFsX2xpbWl0KGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUsIGxpbWl0KTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQor CWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5nZXRfYXB1X3RoZXJtYWxfbGltaXQpCisJCXJl dHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5w bS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfYXB1X3RoZXJtYWxfbGltaXQoYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwgbGltaXQpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfYXB1 X3RoZXJtYWxfbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IGxpbWl0 KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJw bGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKIAotCWlmIChwcF9mdW5jcyAm JiBwcF9mdW5jcy0+c2V0X2FwdV90aGVybWFsX2xpbWl0KSB7Ci0JCW11dGV4X2xvY2soJmFkZXYt PnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnNldF9hcHVfdGhlcm1hbF9saW1pdChhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBsaW1pdCk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+c2V0X2FwdV90aGVybWFs X2xpbWl0KQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X2FwdV90aGVybWFs X2xpbWl0KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIGxpbWl0KTsKIH0KIAogdm9pZCBhbWRn cHVfZHBtX2NvbXB1dGVfY2xvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQpAQCAtNTgz LDkgKzQ4NSw4IEBAIHZvaWQgYW1kZ3B1X2RwbV9jb21wdXRlX2Nsb2NrcyhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKIAkJCWFtZGdwdV9mZW5jZV93YWl0X2VtcHR5KHJpbmcpOwogCX0KIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKIAlwcF9mdW5jcy0+cG1fY29tcHV0ZV9jbG9ja3MoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiB9CiAKIHZvaWQgYW1kZ3B1 X2RwbV9lbmFibGVfdXZkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkK QEAgLTU5MywxNCArNDk0LDE0IEBAIHZvaWQgYW1kZ3B1X2RwbV9lbmFibGVfdXZkKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIAlpbnQgcmV0ID0gMDsKIAogCWlmIChh ZGV2LT5mYW1pbHkgPT0gQU1ER1BVX0ZBTUlMWV9TSSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JCWlmIChlbmFibGUpIHsKLQkJCWFkZXYtPnBtLmRwbS51dmRfYWN0aXZlID0g dHJ1ZTsKLQkJCWFkZXYtPnBtLmRwbS5zdGF0ZSA9IFBPV0VSX1NUQVRFX1RZUEVfSU5URVJOQUxf VVZEOwotCQl9IGVsc2UgewotCQkJYWRldi0+cG0uZHBtLnV2ZF9hY3RpdmUgPSBmYWxzZTsKKwkJ c2NvcGVkX2d1YXJkKG11dGV4LCAmYWRldi0+cG0ubXV0ZXgpIHsKKwkJCWlmIChlbmFibGUpIHsK KwkJCQlhZGV2LT5wbS5kcG0udXZkX2FjdGl2ZSA9IHRydWU7CisJCQkJYWRldi0+cG0uZHBtLnN0 YXRlID0gUE9XRVJfU1RBVEVfVFlQRV9JTlRFUk5BTF9VVkQ7CisJCQl9IGVsc2UgeworCQkJCWFk ZXYtPnBtLmRwbS51dmRfYWN0aXZlID0gZmFsc2U7CisJCQl9CiAJCX0KLQkJbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7CiAKIAkJYW1kZ3B1X2RwbV9jb21wdXRlX2Nsb2NrcyhhZGV2KTsK IAkJcmV0dXJuOwpAQCAtNjI3LDE1ICs1MjgsMTUgQEAgdm9pZCBhbWRncHVfZHBtX2VuYWJsZV92 Y2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgZW5hYmxlKQogCWludCByZXQgPSAw OwogCiAJaWYgKGFkZXYtPmZhbWlseSA9PSBBTURHUFVfRkFNSUxZX1NJKSB7Ci0JCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQkJaWYgKGVuYWJsZSkgewotCQkJYWRldi0+cG0uZHBtLnZj ZV9hY3RpdmUgPSB0cnVlOwotCQkJLyogWFhYIHNlbGVjdCB2Y2UgbGV2ZWwgYmFzZWQgb24gcmlu Zy90YXNrICovCi0JCQlhZGV2LT5wbS5kcG0udmNlX2xldmVsID0gQU1EX1ZDRV9MRVZFTF9BQ19B TEw7Ci0JCX0gZWxzZSB7Ci0JCQlhZGV2LT5wbS5kcG0udmNlX2FjdGl2ZSA9IGZhbHNlOworCQlz Y29wZWRfZ3VhcmQobXV0ZXgsICZhZGV2LT5wbS5tdXRleCkgeworCQkJaWYgKGVuYWJsZSkgewor CQkJCWFkZXYtPnBtLmRwbS52Y2VfYWN0aXZlID0gdHJ1ZTsKKwkJCQkvKiBYWFggc2VsZWN0IHZj ZSBsZXZlbCBiYXNlZCBvbiByaW5nL3Rhc2sgKi8KKwkJCQlhZGV2LT5wbS5kcG0udmNlX2xldmVs ID0gQU1EX1ZDRV9MRVZFTF9BQ19BTEw7CisJCQl9IGVsc2UgeworCQkJCWFkZXYtPnBtLmRwbS52 Y2VfYWN0aXZlID0gZmFsc2U7CisJCQl9CiAJCX0KLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7CiAKIAkJYW1kZ3B1X2RwbV9jb21wdXRlX2Nsb2NrcyhhZGV2KTsKIAkJcmV0dXJuOwpA QCAtNjcwLDg0ICs1NzEsNjYgQEAgdm9pZCBhbWRncHVfZHBtX2VuYWJsZV92cGUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgZW5hYmxlKQogaW50IGFtZGdwdV9wbV9sb2FkX3NtdV9m aXJtd2FyZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgKnNtdV92ZXJzaW9u KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJw bGF5LnBwX2Z1bmNzOwotCWludCByID0gMDsKKwlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVu Y3MgfHwgIXBwX2Z1bmNzLT5sb2FkX2Zpcm13YXJlIHx8CiAJICAgIChpc19zdXBwb3J0X3N3X3Nt dShhZGV2KSAmJiAoYWRldi0+ZmxhZ3MgJiBBTURfSVNfQVBVKSkpCiAJCXJldHVybiAwOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXIgPSBwcF9mdW5jcy0+bG9hZF9maXJtd2Fy ZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKLQlpZiAocikgeworCWd1YXJkKG11dGV4KSgm YWRldi0+cG0ubXV0ZXgpOworCXJldCA9IHBwX2Z1bmNzLT5sb2FkX2Zpcm13YXJlKGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUpOworCWlmIChyZXQpIHsKIAkJcHJfZXJyKCJzbXUgZmlybXdhcmUg bG9hZGluZyBmYWlsZWRcbiIpOwotCQlnb3RvIG91dDsKKwkJcmV0dXJuIHJldDsKIAl9CiAKIAlp ZiAoc211X3ZlcnNpb24pCiAJCSpzbXVfdmVyc2lvbiA9IGFkZXYtPnBtLmZ3X3ZlcnNpb247CiAK LW91dDoKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXR1cm4gcjsKKwlyZXR1 cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9oYW5kbGVfcGFzc3Rocm91Z2hfc2JyKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIHsKLQlpbnQgcmV0ID0gMDsKKwlp ZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQorCQlyZXR1cm4gMDsKIAotCWlmIChpc19zdXBw b3J0X3N3X3NtdShhZGV2KSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJl dCA9IHNtdV9oYW5kbGVfcGFzc3Rocm91Z2hfc2JyKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9oYW5kbGVfcGFz c3Rocm91Z2hfc2JyKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgZW5hYmxlKTsK LQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQotCi0JcmV0dXJuIHJldDsKIH0K IAogaW50IGFtZGdwdV9kcG1fc2VuZF9oYm1fYmFkX3BhZ2VzX251bShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgdWludDMyX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9 IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1 cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3NlbmRfaGJtX2JhZF9wYWdlc19udW0oc211 LCBzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7 CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9zZW5kX2hibV9i YWRfcGFnZXNfbnVtKHNtdSwgc2l6ZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX3NlbmRfaGJtX2Jh ZF9jaGFubmVsX2ZsYWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHNpemUp CiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl OwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0 dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9 IHNtdV9zZW5kX2hibV9iYWRfY2hhbm5lbF9mbGFnKHNtdSwgc2l6ZSk7Ci0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOworCXJldHVybiBzbXVfc2VuZF9oYm1fYmFkX2NoYW5uZWxfZmxhZyhzbXUsIHNp emUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZW5kX3JtYV9yZWFzb24oc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlOwotCWludCByZXQ7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYp KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0JcmV0ID0gc211X3NlbmRfcm1hX3JlYXNvbihzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKKwlyZXR1cm4gc211X3NlbmRfcm1hX3JlYXNvbihzbXUpOwogfQogCiAvKioKQEAgLTc2MSw2 MSArNjQ0LDQ1IEBAIGludCBhbWRncHVfZHBtX3NlbmRfcm1hX3JlYXNvbihzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikKIGJvb2wgYW1kZ3B1X2RwbV9yZXNldF9zZG1hX2lzX3N1cHBvcnRlZChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9 IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JYm9vbCByZXQ7CiAKIAlpZiAoIWlzX3N1cHBv cnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JcmV0ID0gc211X3Jlc2V0X3NkbWFfaXNfc3VwcG9ydGVkKHNtdSk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfcmVzZXRfc2RtYV9pc19zdXBwb3J0ZWQo c211KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fcmVzZXRfc2RtYShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwgdWludDMyX3QgaW5zdF9tYXNrKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211 ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0OwogCiAJaWYgKCFpc19zdXBw b3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9yZXNldF9zZG1hKHNtdSwgaW5zdF9tYXNrKTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9yZXNldF9zZG1hKHNtdSwgaW5z dF9tYXNrKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fcmVzZXRfdmNuKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCB1aW50MzJfdCBpbnN0X21hc2spCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpz bXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQ7CiAKIAlpZiAoIWlzX3N1 cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3Jlc2V0X3ZjbihzbXUsIGluc3RfbWFzayk7 Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfcmVzZXRfdmNuKHNtdSwgaW5z dF9tYXNrKTsKIH0KIAogYm9vbCBhbWRncHVfZHBtX3Jlc2V0X3Zjbl9pc19zdXBwb3J0ZWQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWJvb2wgcmV0OwogCiAJaWYgKCFpc19zdXBwb3J0 X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCXJldCA9IHNtdV9yZXNldF92Y25faXNfc3VwcG9ydGVkKHNtdSk7Ci0JbXV0ZXhf dW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgm YWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfcmVzZXRfdmNuX2lzX3N1cHBvcnRlZChzbXUp OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfZHBtX2ZyZXFfcmFuZ2Uoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCkBAIC04MjMsMjIgKzY5MCwxNyBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRfZHBt X2ZyZXFfcmFuZ2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICB1aW50MzJfdCAq bWluLAogCQkJCSAgdWludDMyX3QgKm1heCkKIHsKLQlpbnQgcmV0ID0gMDsKLQogCWlmICh0eXBl ICE9IFBQX1NDTEspCiAJCXJldHVybiAtRUlOVkFMOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3Nt dShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCXJldCA9IHNtdV9nZXRfZHBtX2ZyZXFfcmFuZ2UoYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X2dl dF9kcG1fZnJlcV9yYW5nZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCSAgICAgU01V X1NDTEssCiAJCQkJICAgICBtaW4sCiAJCQkJICAgICBtYXgpOwotCW11dGV4X3VubG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3Nv ZnRfZnJlcV9yYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTg2MiwxNiArNzI0 LDEyIEBAIGludCBhbWRncHVfZHBtX3NldF9zb2Z0X2ZyZXFfcmFuZ2Uoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCiBpbnQgYW1kZ3B1X2RwbV93cml0ZV93YXRlcm1hcmtzX3RhYmxlKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9y dF9zd19zbXUoYWRldikpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCXJldCA9IHNtdV93cml0ZV93YXRlcm1hcmtzX3RhYmxlKHNtdSk7Ci0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRl di0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfd3JpdGVfd2F0ZXJtYXJrc190YWJsZShzbXUpOwog fQogCiBpbnQgYW1kZ3B1X2RwbV93YWl0X2Zvcl9ldmVudChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKQEAgLTg3OSw3NiArNzM3LDU2IEBAIGludCBhbWRncHVfZHBtX3dhaXRfZm9yX2V2ZW50 KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgICAgdWludDY0X3QgZXZlbnRfYXJn KQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJl dHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQg PSBzbXVfd2FpdF9mb3JfZXZlbnQoc211LCBldmVudCwgZXZlbnRfYXJnKTsKLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV93YWl0X2Zvcl9ldmVudChzbXUsIGV2ZW50LCBldmVu dF9hcmcpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfcmVzaWRlbmN5X2dmeG9mZihzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCB2YWx1ZSkKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQg KnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAo IWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3NldF9yZXNpZGVuY3lfZ2Z4b2Zm KHNtdSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJu IHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3NldF9y ZXNpZGVuY3lfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfcmVz aWRlbmN5X2dmeG9mZihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTMyICp2YWx1ZSkKIHsK IAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0J aW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4g LUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211 X2dldF9yZXNpZGVuY3lfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKKwlyZXR1cm4gc211X2dldF9yZXNpZGVuY3lfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwogfQogCiBp bnQgYW1kZ3B1X2RwbV9nZXRfZW50cnljb3VudF9nZnhvZmYoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHU2NCAqdmFsdWUpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3 X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9nZXRfZW50cnljb3VudF9nZnhvZmYoc211LCB2YWx1ZSk7 Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfZ2V0X2VudHJ5Y291bnRfZ2Z4 b2ZmKHNtdSwgdmFsdWUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfc3RhdHVzX2dmeG9mZihz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgKnZhbHVlKQogewogCXN0cnVjdCBz bXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0g MDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQ UDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfZ2V0X3N0YXR1 c19nZnhvZmYoc211LCB2YWx1ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0K LQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBz bXVfZ2V0X3N0YXR1c19nZnhvZmYoc211LCB2YWx1ZSk7CiB9CiAKIHVpbnQ2NF90IGFtZGdwdV9k cG1fZ2V0X3RoZXJtYWxfdGhyb3R0bGluZ19jb3VudGVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQpAQCAtOTY5LDI4ICs4MDcsMjMgQEAgdWludDY0X3QgYW1kZ3B1X2RwbV9nZXRfdGhlcm1h bF90aHJvdHRsaW5nX2NvdW50ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB2b2lkIGFt ZGdwdV9kcG1fZ2Z4X3N0YXRlX2NoYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJ CQkgZW51bSBnZnhfY2hhbmdlX3N0YXRlIHN0YXRlKQogewotCW11dGV4X2xvY2soJmFkZXYtPnBt Lm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlpZiAoYWRldi0+cG93 ZXJwbGF5LnBwX2Z1bmNzICYmCiAJICAgIGFkZXYtPnBvd2VycGxheS5wcF9mdW5jcy0+Z2Z4X3N0 YXRlX2NoYW5nZV9zZXQpCiAJCSgoYWRldiktPnBvd2VycGxheS5wcF9mdW5jcy0+Z2Z4X3N0YXRl X2NoYW5nZV9zZXQoCiAJCQkoYWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUsIHN0YXRlKSk7Ci0J bXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9l Y2NfaW5mbyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgICB2b2lkICp1bWNfZWNj KQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJl dHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQg PSBzbXVfZ2V0X2VjY19pbmZvKHNtdSwgdW1jX2VjYyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgp OworCXJldHVybiBzbXVfZ2V0X2VjY19pbmZvKHNtdSwgdW1jX2VjYyk7CiB9CiAKIHN0cnVjdCBh bWRfdmNlX3N0YXRlICphbWRncHVfZHBtX2dldF92Y2VfY2xvY2tfc3RhdGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCkBAIC0xMDAyLDEyICs4MzUsOSBAQCBzdHJ1Y3QgYW1kX3ZjZV9zdGF0 ZSAqYW1kZ3B1X2RwbV9nZXRfdmNlX2Nsb2NrX3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAogCWlmICghcHBfZnVuY3MtPmdldF92Y2VfY2xvY2tfc3RhdGUpCiAJCXJldHVybiBOVUxM OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXZzdGF0ZSA9IHBwX2Z1bmNzLT5n ZXRfdmNlX2Nsb2NrX3N0YXRlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfdmNlX2Nsb2NrX3N0 YXRlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgICBpZHgpOwotCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHZzdGF0ZTsKIH0KIAogdm9pZCBh bWRncHVfZHBtX2dldF9jdXJyZW50X3Bvd2VyX3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LApAQCAtMTAxNSwxMSArODQ1LDExIEBAIHZvaWQgYW1kZ3B1X2RwbV9nZXRfY3VycmVudF9w b3dlcl9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIHsKIAljb25zdCBzdHJ1Y3Qg YW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKIAogCWlmICghcHBfZnVuY3MtPmdldF9jdXJyZW50X3Bvd2VyX3N0YXRlKSB7CiAJCSpzdGF0 ZSA9IGFkZXYtPnBtLmRwbS51c2VyX3N0YXRlOwotCQlnb3RvIG91dDsKKwkJcmV0dXJuOwogCX0K IAogCSpzdGF0ZSA9IHBwX2Z1bmNzLT5nZXRfY3VycmVudF9wb3dlcl9zdGF0ZShhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlKTsKQEAgLTEwMjcsMTYgKzg1NywxNCBAQCB2b2lkIGFtZGdwdV9kcG1f Z2V0X2N1cnJlbnRfcG93ZXJfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJICAg ICpzdGF0ZSA+IFBPV0VSX1NUQVRFX1RZUEVfSU5URVJOQUxfM0RQRVJGKQogCQkqc3RhdGUgPSBh ZGV2LT5wbS5kcG0udXNlcl9zdGF0ZTsKIAotb3V0OgotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOworCXJldHVybjsKIH0KIAogdm9pZCBhbWRncHVfZHBtX3NldF9wb3dlcl9zdGF0ZShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQllbnVtIGFtZF9wbV9zdGF0ZV90eXBlIHN0 YXRlKQogewotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlhZGV2LT5wbS5kcG0udXNl cl9zdGF0ZSA9IHN0YXRlOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCXNjb3Bl ZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KQorCQlhZGV2LT5wbS5kcG0udXNlcl9zdGF0 ZSA9IHN0YXRlOwogCiAJaWYgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm47CkBA IC0xMDU1LDEyICs4ODMsMTEgQEAgZW51bSBhbWRfZHBtX2ZvcmNlZF9sZXZlbCBhbWRncHVfZHBt X2dldF9wZXJmb3JtYW5jZV9sZXZlbChzdHJ1Y3QgYW1kZ3B1X2RldmljZQogCWlmICghcHBfZnVu Y3MpCiAJCXJldHVybiBBTURfRFBNX0ZPUkNFRF9MRVZFTF9BVVRPOwogCi0JbXV0ZXhfbG9jaygm YWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCWlmIChw cF9mdW5jcy0+Z2V0X3BlcmZvcm1hbmNlX2xldmVsKQogCQlsZXZlbCA9IHBwX2Z1bmNzLT5nZXRf cGVyZm9ybWFuY2VfbGV2ZWwoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CiAJZWxzZQogCQls ZXZlbCA9IGFkZXYtPnBtLmRwbS5mb3JjZWRfbGV2ZWw7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5w bS5tdXRleCk7CiAKIAlyZXR1cm4gbGV2ZWw7CiB9CkBAIC0xMTUxLDE3ICs5NzgsMTMgQEAgaW50 IGFtZGdwdV9kcG1fZ2V0X3BwX251bV9zdGF0ZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CiAJCQkJIHN0cnVjdCBwcF9zdGF0ZXNfaW5mbyAqc3RhdGVzKQogewogCWNvbnN0IHN0cnVjdCBh bWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCBy ZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3BwX251bV9zdGF0ZXMpCiAJCXJldHVybiAt RU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9m dW5jcy0+Z2V0X3BwX251bV9zdGF0ZXMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFy ZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9wcF9udW1f c3RhdGVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgc3RhdGVzKTsKLQltdXRl eF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRn cHVfZHBtX2Rpc3BhdGNoX3Rhc2soc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xMTY5 LDI0ICs5OTIsMTkgQEAgaW50IGFtZGdwdV9kcG1fZGlzcGF0Y2hfdGFzayhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKIAkJCSAgICAgIGVudW0gYW1kX3BtX3N0YXRlX3R5cGUgKnVzZXJfc3Rh dGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dl cnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5kaXNwYXRj aF90YXNrcykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5kaXNwYXRjaF90YXNrcyhhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9m dW5jcy0+ZGlzcGF0Y2hfdGFza3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkgICAg ICAgdGFza19pZCwKIAkJCQkgICAgICAgdXNlcl9zdGF0ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfcHBf dGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGNoYXIgKip0YWJsZSkKIHsKIAljb25z dCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5j czsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghdGFibGUpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAt MTE5NCwxMiArMTAxMiw5IEBAIGludCBhbWRncHVfZHBtX2dldF9wcF90YWJsZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwgY2hhciAqKnRhYmxlKQogCWlmIChhbWRncHVfc3Jpb3ZfdmYoYWRl dikgfHwgIXBwX2Z1bmNzLT5nZXRfcHBfdGFibGUgfHwgYWRldi0+c2NwbV9lbmFibGVkKQogCQly ZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0 ID0gcHBfZnVuY3MtPmdldF9wcF90YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3BwX3Rh YmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJICAgICB0YWJsZSk7Ci0JbXV0ZXhf dW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9zZXRfZmluZV9ncmFpbl9jbGtfdm9sKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApA QCAtMTIwOCwxOSArMTAyMywxNSBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfZmluZV9ncmFpbl9jbGtf dm9sKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICAgIHVpbnQzMl90IHNpemUp CiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBs YXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfZmluZV9n cmFpbl9jbGtfdm9sKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2ZpbmVfZ3JhaW5fY2xrX3ZvbChhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBw cF9mdW5jcy0+c2V0X2ZpbmVfZ3JhaW5fY2xrX3ZvbChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAogCQkJCQkgICAgICAgdHlwZSwKIAkJCQkJICAgICAgIGlucHV0LAogCQkJCQkgICAgICAgc2l6 ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQog CiBpbnQgYW1kZ3B1X2RwbV9vZG5fZWRpdF9kcG1fdGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCkBAIC0xMjI5LDE5ICsxMDQwLDE1IEBAIGludCBhbWRncHVfZHBtX29kbl9lZGl0X2Rw bV90YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgIHVpbnQzMl90IHNpemUp CiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBs YXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5vZG5fZWRpdF9k cG1fdGFibGUpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHBwX2Z1bmNzLT5vZG5fZWRpdF9kcG1fdGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3Mt Pm9kbl9lZGl0X2RwbV90YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICB0 eXBlLAogCQkJCQkgICBpbnB1dCwKIAkJCQkJICAgc2l6ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9lbWl0X2Ns b2NrX2xldmVscyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTEyNTAsNTIgKzEwNTcs NDAgQEAgaW50IGFtZGdwdV9kcG1fZW1pdF9jbG9ja19sZXZlbHMoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkJICBpbnQgKm9mZnNldCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1 bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsK IAogCWlmICghcHBfZnVuY3MtPmVtaXRfY2xvY2tfbGV2ZWxzKQogCQlyZXR1cm4gLUVOT0VOVDsK IAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+ZW1pdF9j bG9ja19sZXZlbHMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmVtaXRfY2xvY2tfbGV2ZWxzKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgIHR5cGUsCiAJCQkJCSAgIGJ1ZiwKIAkJCQkJ ICAgb2Zmc2V0KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9wcGZlYXR1cmVfc3RhdHVzKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCQkJCSAgICB1aW50NjRfdCBwcGZlYXR1cmVfbWFza3MpCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfcHBmZWF0dXJlX3N0 YXR1cykKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0 ID0gcHBfZnVuY3MtPnNldF9wcGZlYXR1cmVfc3RhdHVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5z ZXRfcHBmZWF0dXJlX3N0YXR1cyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAg IHBwZmVhdHVyZV9tYXNrcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQly ZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfcHBmZWF0dXJlX3N0YXR1cyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgY2hhciAqYnVmKQogewogCWNvbnN0IHN0cnVjdCBhbWRf cG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQg PSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3BwZmVhdHVyZV9zdGF0dXMpCiAJCXJldHVybiAw OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRf cHBmZWF0dXJlX3N0YXR1cyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3BwZmVhdHVyZV9zdGF0 dXMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgICBidWYpOwotCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9k cG1fZm9yY2VfY2xvY2tfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xMzAz LDMzICsxMDk4LDI1IEBAIGludCBhbWRncHVfZHBtX2ZvcmNlX2Nsb2NrX2xldmVsKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAogCQkJCSB1aW50MzJfdCBtYXNrKQogewogCWNvbnN0IHN0cnVj dCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWlu dCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Zm9yY2VfY2xvY2tfbGV2ZWwpCiAJCXJldHVy biAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5m b3JjZV9jbG9ja19sZXZlbChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Zm9yY2VfY2xvY2tfbGV2ZWwo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICB0eXBlLAogCQkJCQkgIG1hc2spOwot CW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50 IGFtZGdwdV9kcG1fZ2V0X3NjbGtfb2Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfc2Nsa19vZCkKIAkJ cmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJl dCA9IHBwX2Z1bmNzLT5nZXRfc2Nsa19vZChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKLQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfc2Nsa19vZChhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3NjbGtfb2Qo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHZhbHVlKQpAQCAtMTMzOSwxMCAr MTEyNiwxMCBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfc2Nsa19vZChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCiAJaWYgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQog CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0J aWYgKHBwX2Z1bmNzLT5zZXRfc2Nsa19vZCkKLQkJcHBfZnVuY3MtPnNldF9zY2xrX29kKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsIHZhbHVlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKKwlzY29wZWRfZ3VhcmQobXV0ZXgsICZhZGV2LT5wbS5tdXRleCkgeworCQlpZiAocHBf ZnVuY3MtPnNldF9zY2xrX29kKQorCQkJcHBfZnVuY3MtPnNldF9zY2xrX29kKGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUsIHZhbHVlKTsKKwl9CiAKIAlpZiAoYW1kZ3B1X2RwbV9kaXNwYXRjaF90 YXNrKGFkZXYsCiAJCQkJICAgICBBTURfUFBfVEFTS19SRUFESlVTVF9QT1dFUl9TVEFURSwKQEAg LTEzNTcsMTYgKzExNDQsMTIgQEAgaW50IGFtZGdwdV9kcG1fc2V0X3NjbGtfb2Qoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHZhbHVlKQogaW50IGFtZGdwdV9kcG1fZ2V0X21j bGtfb2Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9w bV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9 IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfbWNsa19vZCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQ OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRf bWNsa19vZChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKLQltdXRleF91bmxvY2soJmFkZXYt PnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfbWNsa19vZChhZGV2LT5wb3dlcnBsYXkucHBfaGFu ZGxlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X21jbGtfb2Qoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsIHVpbnQzMl90IHZhbHVlKQpAQCAtMTM3NiwxMCArMTE1OSwxMCBAQCBpbnQgYW1k Z3B1X2RwbV9zZXRfbWNsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3Qg dmFsdWUpCiAJaWYgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNV UFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JaWYgKHBwX2Z1bmNzLT5zZXRf bWNsa19vZCkKLQkJcHBfZnVuY3MtPnNldF9tY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsIHZhbHVlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlzY29wZWRfZ3Vh cmQobXV0ZXgsICZhZGV2LT5wbS5tdXRleCkgeworCQlpZiAocHBfZnVuY3MtPnNldF9tY2xrX29k KQorCQkJcHBfZnVuY3MtPnNldF9tY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHZh bHVlKTsKKwl9CiAKIAlpZiAoYW1kZ3B1X2RwbV9kaXNwYXRjaF90YXNrKGFkZXYsCiAJCQkJICAg ICBBTURfUFBfVEFTS19SRUFESlVTVF9QT1dFUl9TVEFURSwKQEAgLTEzOTUsMTcwICsxMTc4LDEz MCBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRfcG93ZXJfcHJvZmlsZV9tb2RlKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCQkJCSAgICAgIGNoYXIgKmJ1ZikKIHsKIAljb25zdCBzdHJ1Y3QgYW1k X3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0 ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9wb3dlcl9wcm9maWxlX21vZGUpCiAJCXJldHVy biAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBw cF9mdW5jcy0+Z2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0 X3Bvd2VyX3Byb2ZpbGVfbW9kZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAg ICAgYnVmKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7 CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9wb3dlcl9wcm9maWxlX21vZGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgICAgbG9uZyAqaW5wdXQsIHVpbnQzMl90IHNpemUpCiB7 CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXku cHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfcG93ZXJfcHJv ZmlsZV9tb2RlKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK LQlyZXQgPSBwcF9mdW5jcy0+c2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZShhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9m dW5jcy0+c2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAog CQkJCQkgICAgICAgaW5wdXQsCiAJCQkJCSAgICAgICBzaXplKTsKLQltdXRleF91bmxvY2soJmFk ZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9n cHVfbWV0cmljcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdm9pZCAqKnRhYmxlKQogewog CWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBw X2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X2dwdV9tZXRyaWNz KQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBw cF9mdW5jcy0+Z2V0X2dwdV9tZXRyaWNzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfZ3B1X21l dHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJdGFibGUpOwotCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogc3NpemVfdCBhbWRn cHVfZHBtX2dldF9wbV9tZXRyaWNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB2b2lkICpw bV9tZXRyaWNzLAogCQkJCSAgc2l6ZV90IHNpemUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9m dW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7 CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfcG1fbWV0cmljcykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQ OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRf cG1fbWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBwbV9tZXRyaWNzLAorCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3BtX21ldHJp Y3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgcG1fbWV0cmljcywKIAkJCQkgICAgICAgc2l6 ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQog CiBpbnQgYW1kZ3B1X2RwbV9nZXRfZmFuX2NvbnRyb2xfbW9kZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIAkJCQkgICAgdWludDMyX3QgKmZhbl9tb2RlKQogewogCWNvbnN0IHN0cnVjdCBh bWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCBy ZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X2Zhbl9jb250cm9sX21vZGUpCiAJCXJldHVy biAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBw cF9mdW5jcy0+Z2V0X2Zhbl9jb250cm9sX21vZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9m YW5fY29udHJvbF9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgZmFu X21vZGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK IH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X2Zhbl9zcGVlZF9wd20oc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkJIHVpbnQzMl90IHNwZWVkKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1f ZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAw OwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X2Zhbl9zcGVlZF9wd20pCiAJCXJldHVybiAtRU9QTk9U U1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+ c2V0X2Zhbl9zcGVlZF9wd20oYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9mYW5fc3BlZWRfcHdt KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgc3BlZWQpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1f Z2V0X2Zhbl9zcGVlZF9wd20oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJIHVpbnQz Ml90ICpzcGVlZCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3Mt PmdldF9mYW5fc3BlZWRfcHdtKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcHdtKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7 CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfZmFuX3NwZWVkX3B3bShhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLAogCQkJCQkgIHNwZWVkKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsK LQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9mYW5fc3BlZWRfcnBtKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSB1aW50MzJfdCAqc3BlZWQpCiB7CiAJY29u c3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVu Y3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZmFuX3NwZWVkX3JwbSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHBwX2Z1bmNzLT5nZXRfZmFuX3NwZWVkX3JwbShhZGV2LT5wb3dlcnBsYXkucHBfaGFu ZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+ Z2V0X2Zhbl9zcGVlZF9ycG0oYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICBzcGVl ZCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQog CiBpbnQgYW1kZ3B1X2RwbV9zZXRfZmFuX3NwZWVkX3JwbShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKIAkJCQkgdWludDMyX3Qgc3BlZWQpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5j cyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAK IAlpZiAoIXBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3JwbSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQ OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRf ZmFuX3NwZWVkX3JwbShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgm YWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X2Zhbl9zcGVlZF9ycG0oYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICBzcGVlZCk7Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRf ZmFuX2NvbnRyb2xfbW9kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgdWlu dDMyX3QgbW9kZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3Mt PnNldF9mYW5fY29udHJvbF9tb2RlKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPnNldF9mYW5fY29udHJvbF9t b2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5t dXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfZmFuX2NvbnRyb2xfbW9kZShhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgIG1vZGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X3Bvd2Vy X2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTU2NywxOSArMTMxMCwxNSBA QCBpbnQgYW1kZ3B1X2RwbV9nZXRfcG93ZXJfbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCiAJCQkgICAgICAgZW51bSBwcF9wb3dlcl90eXBlIHBvd2VyX3R5cGUpCiB7CiAJY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7 Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfcG93ZXJfbGltaXQpCiAJCXJl dHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQg PSBwcF9mdW5jcy0+Z2V0X3Bvd2VyX2xpbWl0KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJ Z3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcG93 ZXJfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJbGltaXQsCiAJCQkJCXBw X2xpbWl0X2xldmVsLAogCQkJCQlwb3dlcl90eXBlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9wb3dlcl9s aW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTE1ODcsMTcgKzEzMjYsMTMgQEAg aW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCQkJICAgICAgIHVpbnQzMl90IGxpbWl0KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVu Y3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwog CiAJaWYgKCFwcF9mdW5jcy0+c2V0X3Bvd2VyX2xpbWl0KQogCQlyZXR1cm4gLUVJTlZBTDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X3Bvd2Vy X2xpbWl0KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5w bS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfcG93ZXJfbGltaXQoYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKIAkJCQkJbGltaXRfdHlwZSwgbGltaXQpOwotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1faXNf Y2Nsa19kcG1fc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQpAQCAtMTYwNyw5 ICsxMzQyLDggQEAgaW50IGFtZGdwdV9kcG1faXNfY2Nsa19kcG1fc3VwcG9ydGVkKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KQogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJl dHVybiBmYWxzZTsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKIAljY2xrX2RwbV9zdXBwb3J0ZWQgPSBpc19zdXBwb3J0X2Nj bGtfZHBtKGFkZXYpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCiAJcmV0dXJu IChpbnQpY2Nsa19kcG1fc3VwcG9ydGVkOwogfQpAQCAtMTYyMiwxMCArMTM1Niw5IEBAIGludCBh bWRncHVfZHBtX2RlYnVnZnNfcHJpbnRfY3VycmVudF9wZXJmb3JtYW5jZV9sZXZlbChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRlCiAJaWYgKCFwcF9mdW5jcy0+ZGVidWdmc19wcmludF9jdXJyZW50 X3BlcmZvcm1hbmNlX2xldmVsKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJcHBf ZnVuY3MtPmRlYnVnZnNfcHJpbnRfY3VycmVudF9wZXJmb3JtYW5jZV9sZXZlbChhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAogCQkJCQkJCSAgbSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE2MzUsMTggKzEzNjgsMTQgQEAgaW50IGFtZGdw dV9kcG1fZ2V0X3NtdV9wcnZfYnVmX2RldGFpbHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CiAJCQkJICAgICAgIHNpemVfdCAqc2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNz ICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAog CWlmICghcHBfZnVuY3MtPmdldF9zbXVfcHJ2X2J1Zl9kZXRhaWxzKQogCQlyZXR1cm4gLUVOT1NZ UzsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0 X3NtdV9wcnZfYnVmX2RldGFpbHMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9zbXVfcHJ2X2J1 Zl9kZXRhaWxzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQlhZGRyLAogCQkJCQkJ c2l6ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0Owog fQogCiBpbnQgYW1kZ3B1X2RwbV9pc19vdmVyZHJpdmVfc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2KQpAQCAtMTY5OCw3ICsxNDI3LDYgQEAgaW50IGFtZGdwdV9kcG1fc2V0X3Bw X3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgIHNpemVfdCBzaXplKQog ewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5 LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFidWYgfHwgIXNpemUpCiAJCXJldHVy biAtRUlOVkFMOwpAQCAtMTcwNiwxMyArMTQzNCwxMCBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfcHBf dGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJaWYgKGFtZGdwdV9zcmlvdl92Zihh ZGV2KSB8fCAhcHBfZnVuY3MtPnNldF9wcF90YWJsZSB8fCBhZGV2LT5zY3BtX2VuYWJsZWQpCiAJ CXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQly ZXQgPSBwcF9mdW5jcy0+c2V0X3BwX3RhYmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJ Z3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfcHBf dGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkgICAgIGJ1ZiwKIAkJCQkgICAg IHNpemUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK IH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X251bV9jcHVfY29yZXMoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCkBAIC0xNzM3LDE3ICsxNDYyLDEzIEBAIGludCBhbWRncHVfZHBtX2Rpc3BsYXlf Y29uZmlndXJhdGlvbl9jaGFuZ2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAg ICBjb25zdCBzdHJ1Y3QgYW1kX3BwX2Rpc3BsYXlfY29uZmlndXJhdGlvbiAqaW5wdXQpCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5kaXNwbGF5X2NvbmZpZ3Vy YXRpb25fY2hhbmdlKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQlyZXQgPSBwcF9mdW5jcy0+ZGlzcGxheV9jb25maWd1cmF0aW9uX2NoYW5nZShhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJl dHVybiBwcF9mdW5jcy0+ZGlzcGxheV9jb25maWd1cmF0aW9uX2NoYW5nZShhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAogCQkJCQkJICAgICBpbnB1dCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tf YnlfdHlwZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTE3NTUsMzUgKzE0NzYsMjcg QEAgaW50IGFtZGdwdV9kcG1fZ2V0X2Nsb2NrX2J5X3R5cGUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiAJCQkJIHN0cnVjdCBhbWRfcHBfY2xvY2tzICpjbG9ja3MpCiB7CiAJY29uc3Qgc3Ry dWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0J aW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfY2xvY2tfYnlfdHlwZSkKIAkJcmV0 dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3Mt PmdldF9jbG9ja19ieV90eXBlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfY2xvY2tfYnlfdHlw ZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHR5cGUsCiAJCQkJCSAgY2xvY2tz KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAK IGludCBhbWRncHVfZHBtX2dldF9kaXNwbGF5X21vZGVfdmFsaWRhdGlvbl9jbGtzKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkJc3RydWN0IGFtZF9wcF9zaW1wbGVfY2xvY2tfaW5m byAqY2xvY2tzKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRl di0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ Z2V0X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Nsb2NrcykKIAkJcmV0dXJuIDA7CiAKLQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9kaXNwbGF5X21v ZGVfdmFsaWRhdGlvbl9jbG9ja3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9kaXNwbGF5X21v ZGVfdmFsaWRhdGlvbl9jbG9ja3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCQkg ICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJl dDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF9sYXRlbmN5KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTc5MSwxOCArMTUwNCwxNCBAQCBpbnQgYW1k Z3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZV93aXRoX2xhdGVuY3koc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkJCSAgICAgIHN0cnVjdCBwcF9jbG9ja19sZXZlbHNfd2l0aF9sYXRlbmN5 ICpjbG9ja3MpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2 LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5n ZXRfY2xvY2tfYnlfdHlwZV93aXRoX2xhdGVuY3kpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfY2xvY2tfYnlfdHlwZV93 aXRoX2xhdGVuY3koYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9jbG9ja19ieV90eXBlX3dpdGhf bGF0ZW5jeShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkJICAgICAgIHR5cGUsCiAJ CQkJCQkgICAgICAgY2xvY2tzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQot CXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlX3dpdGhf dm9sdGFnZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTE4MTAsNjkgKzE1MTksNTMg QEAgaW50IGFtZGdwdV9kcG1fZ2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF92b2x0YWdlKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkgICAgICBzdHJ1Y3QgcHBfY2xvY2tfbGV2ZWxzX3dp dGhfdm9sdGFnZSAqY2xvY2tzKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1 bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFw cF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF92b2x0YWdlKQogCQlyZXR1cm4gMDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Nsb2Nr X2J5X3R5cGVfd2l0aF92b2x0YWdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfY2xvY2tfYnlf dHlwZV93aXRoX3ZvbHRhZ2UoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCSAgICAg ICB0eXBlLAogCQkJCQkJICAgICAgIGNsb2Nrcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfd2F0ZXJtYXJr c19mb3JfY2xvY2tzX3JhbmdlcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICAg ICAgIHZvaWQgKmNsb2NrX3JhbmdlcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpw cF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlm ICghcHBfZnVuY3MtPnNldF93YXRlcm1hcmtzX2Zvcl9jbG9ja3NfcmFuZ2VzKQogCQlyZXR1cm4g LUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBf ZnVuY3MtPnNldF93YXRlcm1hcmtzX2Zvcl9jbG9ja3NfcmFuZ2VzKGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1 bmNzLT5zZXRfd2F0ZXJtYXJrc19mb3JfY2xvY2tzX3JhbmdlcyhhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLAogCQkJCQkJCSBjbG9ja19yYW5nZXMpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZGlzcGxheV9jbG9j a192b2x0YWdlX3JlcXVlc3Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAgICAg c3RydWN0IHBwX2Rpc3BsYXlfY2xvY2tfcmVxdWVzdCAqY2xvY2spCiB7CiAJY29uc3Qgc3RydWN0 IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50 IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5kaXNwbGF5X2Nsb2NrX3ZvbHRhZ2VfcmVxdWVz dCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHBwX2Z1bmNzLT5kaXNwbGF5X2Nsb2NrX3ZvbHRhZ2VfcmVxdWVzdChhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJl dHVybiBwcF9mdW5jcy0+ZGlzcGxheV9jbG9ja192b2x0YWdlX3JlcXVlc3QoYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKIAkJCQkJCSAgICAgIGNsb2NrKTsKLQltdXRleF91bmxvY2soJmFkZXYt PnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9jdXJy ZW50X2Nsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgIHN0cnVjdCBhbWRf cHBfY2xvY2tfaW5mbyAqY2xvY2tzKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYg KCFwcF9mdW5jcy0+Z2V0X2N1cnJlbnRfY2xvY2tzKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9jdXJy ZW50X2Nsb2NrcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRl di0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2N1cnJlbnRfY2xvY2tzKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgIGNsb2Nrcyk7Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiB2b2lkIGFtZGdwdV9kcG1fbm90 aWZ5X3NtdV9lbmFibGVfcHdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQpAQCAtMTg4Miw0 MyArMTU3NSwzNCBAQCB2b2lkIGFtZGdwdV9kcG1fbm90aWZ5X3NtdV9lbmFibGVfcHdlKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogCWlmICghcHBfZnVuY3MtPm5vdGlmeV9zbXVfZW5hYmxl X3B3ZSkKIAkJcmV0dXJuOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCXBwX2Z1bmNzLT5ub3RpZnlfc211X2VuYWJsZV9w d2UoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9hY3RpdmVfZGlzcGxheV9jb3VudChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJdWludDMyX3QgY291bnQpCiB7CiAJY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7 Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfYWN0aXZlX2Rpc3BsYXlfY291 bnQpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2FjdGl2ZV9kaXNwbGF5X2NvdW50KGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJu IHBwX2Z1bmNzLT5zZXRfYWN0aXZlX2Rpc3BsYXlfY291bnQoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwKIAkJCQkJCSBjb3VudCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0K LQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfbWluX2RlZXBfc2xlZXBfZGNl ZmNsayhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICB1aW50MzJfdCBjbG9jaykK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9taW5fZGVl cF9zbGVlcF9kY2VmY2xrKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPnNldF9taW5fZGVlcF9zbGVlcF9kY2Vm Y2xrKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5t dXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfbWluX2RlZXBfc2xlZXBfZGNlZmNsayhhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkJICAgY2xvY2spOwotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogdm9pZCBhbWRncHVfZHBtX3Nl dF9oYXJkX21pbl9kY2VmY2xrX2J5X2ZyZXEoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBA IC0xOTI5LDEwICsxNjEzLDkgQEAgdm9pZCBhbWRncHVfZHBtX3NldF9oYXJkX21pbl9kY2VmY2xr X2J5X2ZyZXEoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJaWYgKCFwcF9mdW5jcy0+c2V0 X2hhcmRfbWluX2RjZWZjbGtfYnlfZnJlcSkKIAkJcmV0dXJuOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCXBwX2Z1bmNz LT5zZXRfaGFyZF9taW5fZGNlZmNsa19ieV9mcmVxKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CiAJCQkJCSAgICAgICBjbG9jayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiB9 CiAKIHZvaWQgYW1kZ3B1X2RwbV9zZXRfaGFyZF9taW5fZmNsa19ieV9mcmVxKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LApAQCAtMTk0Myw0NCArMTYyNiwzNSBAQCB2b2lkIGFtZGdwdV9kcG1f c2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlp ZiAoIXBwX2Z1bmNzLT5zZXRfaGFyZF9taW5fZmNsa19ieV9mcmVxKQogCQlyZXR1cm47CiAKLQlt dXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CiAJcHBfZnVuY3MtPnNldF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEoYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZSwKIAkJCQkJICAgIGNsb2NrKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZGlzcGxheV9kaXNhYmxlX21lbW9yeV9jbG9ja19z d2l0Y2goc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCQkgICBib29sIGRpc2FibGVf bWVtb3J5X2Nsb2NrX3N3aXRjaCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICgh cHBfZnVuY3MtPmRpc3BsYXlfZGlzYWJsZV9tZW1vcnlfY2xvY2tfc3dpdGNoKQogCQlyZXR1cm4g MDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+ZGlz cGxheV9kaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2goYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmRp c3BsYXlfZGlzYWJsZV9tZW1vcnlfY2xvY2tfc3dpdGNoKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsCiAJCQkJCQkJICAgIGRpc2FibGVfbWVtb3J5X2Nsb2NrX3N3aXRjaCk7Ci0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2Rw bV9nZXRfbWF4X3N1c3RhaW5hYmxlX2Nsb2Nrc19ieV9kYyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKIAkJCQkJCXN0cnVjdCBwcF9zbXVfbnZfY2xvY2tfdGFibGUgKm1heF9jbG9ja3MpCiB7 CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXku cHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfbWF4X3N1c3Rh aW5hYmxlX2Nsb2Nrc19ieV9kYykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfbWF4X3N1c3RhaW5hYmxl X2Nsb2Nrc19ieV9kYyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgm YWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X21heF9zdXN0YWluYWJsZV9j bG9ja3NfYnlfZGMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCQkgbWF4X2Nsb2Nr cyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQog CiBlbnVtIHBwX3NtdV9zdGF0dXMgYW1kZ3B1X2RwbV9nZXRfdWNsa19kcG1fc3RhdGVzKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTk4OCwzNSArMTY2MiwyNyBAQCBlbnVtIHBwX3Nt dV9zdGF0dXMgYW1kZ3B1X2RwbV9nZXRfdWNsa19kcG1fc3RhdGVzKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LAogCQkJCQkJICB1bnNpZ25lZCBpbnQgKm51bV9zdGF0ZXMpCiB7CiAJY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7 Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfdWNsa19kcG1fc3RhdGVzKQog CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0J cmV0ID0gcHBfZnVuY3MtPmdldF91Y2xrX2RwbV9zdGF0ZXMoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3Mt PmdldF91Y2xrX2RwbV9zdGF0ZXMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAg IGNsb2NrX3ZhbHVlc19pbl9raHosCiAJCQkJCSAgICBudW1fc3RhdGVzKTsKLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBt X2dldF9kcG1fY2xvY2tfdGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAg c3RydWN0IGRwbV9jbG9ja3MgKmNsb2NrX3RhYmxlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1f ZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAw OwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X2RwbV9jbG9ja190YWJsZSkKIAkJcmV0dXJuIC1FT1BO T1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5nZXRfZHBtX2Nsb2NrX3RhYmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfZHBtX2Nsb2Nr X3RhYmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICBjbG9ja190YWJsZSk7 Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiAv KioKQEAgLTIwMzcsMTcgKzE3MDMsMTMgQEAgc3NpemVfdCBhbWRncHVfZHBtX2dldF90ZW1wX21l dHJpY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgIGVudW0gc211X3RlbXBf bWV0cmljX3R5cGUgdHlwZSwgdm9pZCAqdGFibGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9m dW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldDsKIAog CWlmICghcHBfZnVuY3MtPmdldF90ZW1wX21ldHJpY3MgfHwKIAkgICAgIWFtZGdwdV9kcG1faXNf dGVtcF9tZXRyaWNzX3N1cHBvcnRlZChhZGV2LCB0eXBlKSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQ OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRf dGVtcF9tZXRyaWNzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHR5cGUsIHRhYmxlKTsKLQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfdGVtcF9tZXRyaWNz KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHR5cGUsIHRhYmxlKTsKIH0KIAogLyoqCkBAIC0y MDY0LDE5ICsxNzI2LDE1IEBAIGJvb2wgYW1kZ3B1X2RwbV9pc190ZW1wX21ldHJpY3Nfc3VwcG9y dGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkgIGVudW0gc211X3RlbXBfbWV0 cmljX3R5cGUgdHlwZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9 IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlib29sIHN1cHBvcnRfdGVtcF9tZXRyaWNzID0g ZmFsc2U7CiAKIAlpZiAoIXBwX2Z1bmNzLT50ZW1wX21ldHJpY3NfaXNfc3VwcG9ydGVkKQotCQly ZXR1cm4gc3VwcG9ydF90ZW1wX21ldHJpY3M7CisJCXJldHVybiBmYWxzZTsKIAotCWlmIChpc19z dXBwb3J0X3N3X3NtdShhZGV2KSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0J CXN1cHBvcnRfdGVtcF9tZXRyaWNzID0KLQkJCXBwX2Z1bmNzLT50ZW1wX21ldHJpY3NfaXNfc3Vw cG9ydGVkKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHR5cGUpOwotCQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKKwkJ cmV0dXJuIGZhbHNlOwogCi0JcmV0dXJuIHN1cHBvcnRfdGVtcF9tZXRyaWNzOworCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+dGVtcF9tZXRyaWNzX2lz X3N1cHBvcnRlZChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlKTsKIH0KIAogLyoqCkBA IC0yMDk4LDE3ICsxNzU2LDEzIEBAIHNzaXplX3QgYW1kZ3B1X2RwbV9nZXRfeGNwX21ldHJpY3Mo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGludCB4Y3BfaWQsCiAJCQkJICAgdm9pZCAqdGFi bGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dl cnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfeGNw X21ldHJpY3MpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHBwX2Z1bmNzLT5nZXRfeGNwX21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZSwgeGNwX2lkLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9m dW5jcy0+Z2V0X3hjcF9tZXRyaWNzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHhjcF9pZCwK IAkJCQkJdGFibGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJu IHJldDsKIH0KIAogY29uc3Qgc3RydWN0IHJhc19zbXVfZHJ2ICphbWRncHVfZHBtX2dldF9yYXNf c211X2RyaXZlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKLS0gCjIuNDMuMAoK