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 E5A49CD37B8 for ; Sun, 10 May 2026 10:07:29 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4091110E615; 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="OZU/c3IE"; dkim-atps=neutral Received: from mail-dy1-f178.google.com (mail-dy1-f178.google.com [74.125.82.178]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2BF3C10F569 for ; Fri, 8 May 2026 17:23:57 +0000 (UTC) Received: by mail-dy1-f178.google.com with SMTP id 5a478bee46e88-2f33ae12f97so1175388eec.1 for ; Fri, 08 May 2026 10:23:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=usp.br; s=usp-google; t=1778261037; x=1778865837; 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=ZUcdcXS5y3vyU0KDKJ6LUxtRKT64HzWj1yituoj313c=; b=OZU/c3IEwgp62ryHjzlE9QhfOQafGP+/3kkWz9QtscZfusELZzhUzBbfqVC/SlEC63 SOKu0mAeh55GMnDmsfF8bqGd+xy0BtmlIrP0lGCalyiRDSJQ6Yz6KUZ2TLW7MrpAiJdr xEoBVuSZUxGdAYji3plDN/ssUSbHk10/yWviELiEb8iCJMpnepniKC8ENFkrwRxFQOM4 ECJPTgP5rGdWFImgJBK8lqUHe6bc9pDSOUrFn8gNXXhdgLH8ce4/6WNyqaqhwZi13kB+ ZsG7bbPMkFo3IrVw12SayEHv8X2Ri2hgYzfLOm+RbCYRbVSutKyANfYoIEJeVts7r3PP PdJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778261037; x=1778865837; 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=ZUcdcXS5y3vyU0KDKJ6LUxtRKT64HzWj1yituoj313c=; b=iLlrFF6cA5LhYdu/ua5tkl1+5UOoJ/s6XcuzSG8WjDD4R6T01jSjF7rkxBpuQOAH+l 4BhVRH9juwha3i7pjh196TLMPcYKdxLI8LPrkwymtQTIJBcCYGO/nL1k8ivs6jCBpm3a EnKKQRXINHCn1eXt00ZxQxWRLSZRGambL95qkDFc+G1KMSNLldzHv4Fq/9FiiZ4SuoiK O5QHdRau17Kj3FnOLnhc/usC5q6wcsmX/rabYNeQQna0JXDT5/rz+VxhPH5KWT/Wsm05 8AzPuyrK/8S18rJ0/QU4lCigewUp69vFBJCHVD2KSuUPzy6fimXrX8Tv6KALxR4llj2X 7xTQ== X-Forwarded-Encrypted: i=1; AFNElJ8ZR7/AXr4DiEDa4uCmwaCDk8tFNOy7BSAH0/ofWXcMctR+v/54+c91u41qMO8sA/Otkvnjr0AyYHo=@lists.freedesktop.org X-Gm-Message-State: AOJu0YyQBqusvK8n4EH4OjL3gzcilzgixqgOYLZcQJKNTW3BP2dDGOge 3jyIzruVpLxEx2nxqwv/YQ68qp1ue9teSJcbnAxmY0aIvhhtUgreTIxOmuORJ3pEe6o= X-Gm-Gg: Acq92OECsS3sKZIQMqC96Dm73RZ0RdxB0fyF2+GYmRcU3FUMKQwShePydzSgy5OEN6x JdyqfjFg6m9rwRJZ7cjJT4GtbU3BP8XpvnYDTOrCKGmwl7kQh5h1uBDke4yZzXk5hN1yZrfC1LG N6jU7sZ291ITJ+29hRyr18Zhb5EEW9PdV56t7bjVEDudW21SNT8gnsBlh+nFyskqPVM7r32qMTY 1C6Uf+c1K34v7/vjWzJh+TvOXW8185qPptpyLMgT9hyhEM5/w9Bb2rwV+wrSZ5lsfDL7PPyYkqF +VoPe5gOB91lDqycJjbp88qgCK2BZPt0KuHYST8aAFsLq1wLTW8OiqzrAtIt4dueGYvyfxamYsX lqoG27GKv6qsjQxUkCNz/BRDfsbrRrVqV1E+gk6fJbhx4Uzga7nQF0Q5T7QWvDjqSvwxuN6mpOj KJLZBk8yzdMdk5Dz4rYnZ0kUsZMt28sRjNXlhz8dQldWFjUqairWmzpW3EJIgQpqf9oadoFyi+b azU1QNwHbOKtyHMsrA= X-Received: by 2002:a05:7300:d70e:b0:2c5:b972:b436 with SMTP id 5a478bee46e88-2f85e036125mr1709157eec.23.1778261036619; Fri, 08 May 2026 10:23:56 -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-2f8893441absm3880500eec.31.2026.05.08.10.23.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 10:23:56 -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 v4] drm/amd/pm: Use guard(mutex) instead of manual lock+unlock Date: Fri, 8 May 2026 14:23:22 -0300 Message-ID: <20260508172345.6680-1-andrejhirata@usp.br> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508142142.7103-1-andrejhirata@usp.br> References: <20260508142142.7103-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 ZXJtZXNhbmdhYnJpZWxAdXNwLmJyPgpSZXZpZXdlZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hy aXN0aWFuLmtvZW5pZ0BhbWQuY29tPgotLS0KdjI6IGluY29ycG9yYXRlIENocmlzdGlhbiBLw7Zu aWcncyBzdWdnZXN0aW9uczoKICAtIHVzZSByZXR1cm4gZigpIGRpcmVjdGx5IGluc3RlYWQgb2Yg cmV0ID0gZigpOyByZXR1cm4gcmV0OwogIC0gdXNlIGVhcmx5IHJldHVybiBwYXR0ZXJuIGJlZm9y ZSBndWFyZCgpIHdoZXJlIGFwcGxpY2FibGUKCnYzOiBmaXggc3R5bGUgbml0cyBwb2ludGVkIGJ5 IENocmlzdGlhbiBLw7ZuaWc6CiAgLSBkcm9wIHN1cGVyZmx1b3VzIHJldCBpbml0aWFsaXphdGlv biBpbiBzZXRfZ2Z4X3Bvd2VyX3VwX2J5X2ltdQogIC0gZHJvcCB1bm5lY2Vzc2FyeSBicmFjZXMg YXJvdW5kIHNpbmdsZS1saW5lIHNjb3BlZF9ndWFyZAoKdjQ6CiAtIGZpeCBidWlsZCBlcnJvcnMg aW50cm9kdWNlZCBpbiB2MwogLSBmaXggaW5jb3JyZWN0IGlzX3N1cHBvcnRfc3dfc211KCkgY29u ZGl0aW9uCiAtIHJlbW92ZSBhY2NpZGVudGFsICJyZXR1cm4gPSIgdHlwb3MKCiBkcml2ZXJzL2dw dS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYyB8IDg2OCArKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgMjYxIGluc2VydGlvbnMoKyksIDYwNyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG0vYW1kZ3B1X2RwbS5jCmluZGV4IGZlYWRmNjA0Yi4uMmEwZjRhYmM0 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYwpAQCAtMzAsNiArMzAsNyBAQAogI2lu Y2x1ZGUgImFtZF9wY2llLmgiCiAjaW5jbHVkZSAiYW1kZ3B1X2Rpc3BsYXkuaCIKICNpbmNsdWRl ICJod21nci5oIgorI2luY2x1ZGUgPGxpbnV4L2NsZWFudXAuaD4KICNpbmNsdWRlIDxsaW51eC9w b3dlcl9zdXBwbHkuaD4KICNpbmNsdWRlICJhbWRncHVfc211LmgiCiAKQEAgLTQxLDMzICs0Miwy NSBAQAogaW50IGFtZGdwdV9kcG1fZ2V0X3NjbGsoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs IGJvb2wgbG93KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRl di0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ Z2V0X3NjbGspCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHBwX2Z1bmNzLT5nZXRfc2NsaygoYWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUsCisJ Z3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfc2Ns aygoYWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJIGxvdyk7Ci0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9n ZXRfbWNsayhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBsb3cpCiB7CiAJY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7 Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfbWNsaykKIAkJcmV0dXJuIDA7 CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9t Y2xrKChhZGV2KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBt Lm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9tY2xrKChhZGV2KS0+cG93ZXJwbGF5LnBw X2hhbmRsZSwKIAkJCQkgbG93KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQot CXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9wb3dlcmdhdGluZ19ieV9zbXUo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC04MCwxMyArNzMsMTIgQEAgaW50IGFtZGdw dV9kcG1fc2V0X3Bvd2VyZ2F0aW5nX2J5X3NtdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK IAllbnVtIGlwX3Bvd2VyX3N0YXRlIHB3cl9zdGF0ZSA9IGdhdGUgPyBQT1dFUl9TVEFURV9PRkYg OiBQT1dFUl9TVEFURV9PTjsKIAlib29sIGlzX3ZjbiA9IGJsb2NrX3R5cGUgPT0gQU1EX0lQX0JM T0NLX1RZUEVfVkNOOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJaWYgKGF0b21pY19yZWFkKCZhZGV2LT5wbS5wd3Jf c3RhdGVbYmxvY2tfdHlwZV0pID09IHB3cl9zdGF0ZSAmJgogCQkJKCFpc192Y24gfHwgYWRldi0+ dmNuLm51bV92Y25faW5zdCA9PSAxKSkgewogCQlkZXZfZGJnKGFkZXYtPmRldiwgIklQIGJsb2Nr JWQgYWxyZWFkeSBpbiB0aGUgdGFyZ2V0ICVzIHN0YXRlISIsCiAJCQkJYmxvY2tfdHlwZSwgZ2F0 ZSA/ICJnYXRlIiA6ICJ1bmdhdGUiKTsKLQkJZ290byBvdXRfdW5sb2NrOworCQlyZXR1cm4gcmV0 OwogCX0KIAogCXN3aXRjaCAoYmxvY2tfdHlwZSkgewpAQCAtMTE1LDkgKzEwNyw2IEBAIGludCBh bWRncHVfZHBtX3NldF9wb3dlcmdhdGluZ19ieV9zbXUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCiAJaWYgKCFyZXQpCiAJCWF0b21pY19zZXQoJmFkZXYtPnBtLnB3cl9zdGF0ZVtibG9ja190 eXBlXSwgcHdyX3N0YXRlKTsKIAotb3V0X3VubG9jazoKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQogCXJldHVybiByZXQ7CiB9CiAKQEAgLTEyNiw5ICsxMTUsOCBAQCBpbnQgYW1k Z3B1X2RwbV9zZXRfZ2Z4X3Bvd2VyX3VwX2J5X2ltdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7 CiAJaW50IHJldCA9IC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHNtdV9zZXRfZ2Z4X3Bvd2VyX3VwX2J5X2ltdShzbXUpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOworCXNjb3BlZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4 KQorCQlyZXQgPSBzbXVfc2V0X2dmeF9wb3dlcl91cF9ieV9pbXUoc211KTsKIAogCW1zbGVlcCgx MCk7CiAKQEAgLTEzOSw0NCArMTI3LDMxIEBAIGludCBhbWRncHVfZHBtX2JhY29fZW50ZXIoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAq cHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxlID0g YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVu Y3MgfHwgIXBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKQogCQlyZXR1cm4gLUVOT0VOVDsK IAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQorCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOwogCS8qIGVudGVyIEJBQ08gc3RhdGUgKi8KLQlyZXQgPSBwcF9mdW5jcy0+c2V0 X2FzaWNfYmFjb19zdGF0ZShwcF9oYW5kbGUsIDEpOwotCi0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCXJldHVybiBwcF9mdW5jcy0+c2V0X2FzaWNfYmFj b19zdGF0ZShwcF9oYW5kbGUsIDEpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9iYWNvX2V4aXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAq cHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxlID0g YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVu Y3MgfHwgIXBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKQogCQlyZXR1cm4gLUVOT0VOVDsK IAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQorCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOwogCS8qIGV4aXQgQkFDTyBzdGF0ZSAqLwotCXJldCA9IHBwX2Z1bmNzLT5zZXRf YXNpY19iYWNvX3N0YXRlKHBwX2hhbmRsZSwgMCk7Ci0KLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfYXNpY19iYWNv X3N0YXRlKHBwX2hhbmRsZSwgMCk7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9tcDFfc3RhdGUo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgIGVudW0gcHBfbXAxX3N0YXRlIG1w MV9zdGF0ZSkKIHsKLQlpbnQgcmV0ID0gMDsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpw cF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAogCWlmIChtcDFfc3RhdGUgPT0g UFBfTVAxX1NUQVRFX0ZMUikgewpAQCAtMTg0LDIzICsxNTksMTkgQEAgaW50IGFtZGdwdV9kcG1f c2V0X21wMV9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJaWYgKGFtZGdwdV9z cmlvdl92ZihhZGV2KSkKIAkJCWFkZXYtPnBtLmRwbV9lbmFibGVkID0gZmFsc2U7CiAJfSBlbHNl IGlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c2V0X21wMV9zdGF0ZSkgewotCQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQkJcmV0ID0gcHBfZnVuY3MtPnNldF9tcDFfc3RhdGUoCisJ CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCQlyZXR1cm4gcHBfZnVuY3MtPnNldF9t cDFfc3RhdGUoCiAJCQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQltcDFfc3RhdGUp OwotCi0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCX0KIAotCXJldHVybiByZXQ7 CisJcmV0dXJuIDA7CiB9CiAKIGludCBhbWRncHVfZHBtX2lzX2JhY29fc3VwcG9ydGVkKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwogCXZvaWQgKnBwX2hhbmRsZSA9IGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldDsKIAogCWlmICghcHBfZnVuY3MgfHwg IXBwX2Z1bmNzLT5nZXRfYXNpY19iYWNvX2NhcGFiaWxpdHkpCiAJCXJldHVybiAwOwpAQCAtMjE2 LDQ5ICsxODcsMzIgQEAgaW50IGFtZGdwdV9kcG1faXNfYmFjb19zdXBwb3J0ZWQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKGFkZXYtPmluX3MzKQogCQlyZXR1cm4gMDsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldCA9IHBwX2Z1bmNzLT5nZXRfYXNpY19i YWNvX2NhcGFiaWxpdHkocHBfaGFuZGxlKTsKLQotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gcHBfZnVuY3MtPmdldF9hc2ljX2JhY29fY2FwYWJpbGl0eShwcF9oYW5kbGUpOwogfQog CiBpbnQgYW1kZ3B1X2RwbV9tb2RlMl9yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKIAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl OwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPmFzaWNfcmVz ZXRfbW9kZV8yKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQotCXJldCA9IHBwX2Z1bmNzLT5hc2ljX3Jlc2V0X21vZGVfMihwcF9oYW5kbGUpOwot Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+YXNpY19yZXNldF9t b2RlXzIocHBfaGFuZGxlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZW5hYmxlX2dmeF9mZWF0dXJl cyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1 bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAl2b2lkICpwcF9oYW5k bGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFw cF9mdW5jcyB8fCAhcHBfZnVuY3MtPmFzaWNfcmVzZXRfZW5hYmxlX2dmeF9mZWF0dXJlcykKIAkJ cmV0dXJuIC1FTk9FTlQ7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXQg PSBwcF9mdW5jcy0+YXNpY19yZXNldF9lbmFibGVfZ2Z4X2ZlYXR1cmVzKHBwX2hhbmRsZSk7Ci0K LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5hc2ljX3Jlc2V0X2Vu YWJsZV9nZnhfZmVhdHVyZXMocHBfaGFuZGxlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fYmFjb19y ZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTI3MCw3NSArMjI0LDYwIEBAIGlu dCBhbWRncHVfZHBtX2JhY29fcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYg KCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnNldF9hc2ljX2JhY29fc3RhdGUpCiAJCXJldHVybiAt RU5PRU5UOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgm YWRldi0+cG0ubXV0ZXgpOwogCiAJLyogZW50ZXIgQkFDTyBzdGF0ZSAqLwogCXJldCA9IHBwX2Z1 bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKHBwX2hhbmRsZSwgMSk7CiAJaWYgKHJldCkKLQkJZ290 byBvdXQ7CisJCXJldHVybiByZXQ7CiAKIAkvKiBleGl0IEJBQ08gc3RhdGUgKi8KIAlyZXQgPSBw cF9mdW5jcy0+c2V0X2FzaWNfYmFjb19zdGF0ZShwcF9oYW5kbGUsIDApOwotCi1vdXQ6Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAJcmV0dXJuIHJldDsKIH0KIAogYm9vbCBhbWRn cHVfZHBtX2lzX21vZGUxX3Jlc2V0X3N1cHBvcnRlZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGU7Ci0JYm9vbCBzdXBwb3J0X21vZGUxX3Jlc2V0ID0gZmFsc2U7CiAKLQlpZiAoaXNfc3VwcG9y dF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlzdXBw b3J0X21vZGUxX3Jlc2V0ID0gc211X21vZGUxX3Jlc2V0X2lzX3N1cHBvcnQoc211KTsKLQkJbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghaXNfc3VwcG9ydF9zd19zbXUo YWRldikpCisJCXJldHVybiBmYWxzZTsKIAotCXJldHVybiBzdXBwb3J0X21vZGUxX3Jlc2V0Owor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfbW9kZTFfcmVzZXRf aXNfc3VwcG9ydChzbXUpCiB9CiAKIGludCBhbWRncHVfZHBtX21vZGUxX3Jlc2V0KHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAKLQlpZiAoaXNf c3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CQlyZXQgPSBzbXVfbW9kZTFfcmVzZXQoc211KTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0JfQorCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJldHVybiAtRU9Q Tk9UU1VQUDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7 CisJcmV0dXJuIHNtdV9tb2RlMV9yZXNldChzbXUpOwogfQogCiBib29sIGFtZGdwdV9kcG1faXNf bGlua19yZXNldF9zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3Ry dWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWJvb2wg c3VwcG9ydF9saW5rX3Jlc2V0ID0gZmFsc2U7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRl dikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlzdXBwb3J0X2xpbmtfcmVz ZXQgPSBzbXVfbGlua19yZXNldF9pc19zdXBwb3J0KHNtdSk7Ci0JCW11dGV4X3VubG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJldHVy biBmYWxzZTsKIAotCXJldHVybiBzdXBwb3J0X2xpbmtfcmVzZXQ7CisJZ3VhcmQobXV0ZXgpKCZh ZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9saW5rX3Jlc2V0X2lzX3N1cHBvcnQoc211KTsK IH0KIAogaW50IGFtZGdwdV9kcG1fbGlua19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGU7Ci0JaW50IHJldCA9IC1FT1BOT1RTVVBQOwogCi0JaWYgKGlzX3N1cHBvcnRfc3dfc211KGFk ZXYpKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gc211X2xpbmtf cmVzZXQoc211KTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICgh aXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVy biByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9saW5r X3Jlc2V0KHNtdSk7CiB9CiAKIGludCBhbWRncHVfZHBtX3N3aXRjaF9wb3dlcl9wcm9maWxlKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMzQ2LDEwMCArMjg1LDgyIEBAIGludCBhbWRn cHVfZHBtX3N3aXRjaF9wb3dlcl9wcm9maWxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CQkJCSAgICBib29sIGVuKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNz ID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKGFtZGdw dV9zcmlvdl92ZihhZGV2KSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVu Y3MtPnN3aXRjaF9wb3dlcl9wcm9maWxlKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQkJcmV0ID0gcHBfZnVuY3MtPnN3aXRjaF9wb3dlcl9wcm9maWxlKAotCQkJYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSwgZW4pOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnN3aXRjaF9wb3dlcl9wcm9m aWxlKQorCQlyZXR1cm4gMDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5w bS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zd2l0Y2hfcG93ZXJfcHJvZmlsZSgKKwkJCWFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHR5cGUsIGVuKTsKIH0KIAogaW50IGFtZGdwdV9kcG1f cGF1c2VfcG93ZXJfcHJvZmlsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICBi b29sIHBhdXNlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRl di0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKGFtZGdwdV9zcmlv dl92ZihhZGV2KSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnBh dXNlX3Bvd2VyX3Byb2ZpbGUpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQly ZXQgPSBwcF9mdW5jcy0+cGF1c2VfcG93ZXJfcHJvZmlsZSgKLQkJCWFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUsIHBhdXNlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQor CWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5wYXVzZV9wb3dlcl9wcm9maWxlKQorCQlyZXR1 cm4gMDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJ cmV0dXJuIHBwX2Z1bmNzLT5wYXVzZV9wb3dlcl9wcm9maWxlKAorCQkJYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZSwgcGF1c2UpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfeGdtaV9wc3RhdGUo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgICAgdWludDMyX3QgcHN0YXRlKQog ewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5 LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCi0JaWYgKHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5z ZXRfeGdtaV9wc3RhdGUpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQg PSBwcF9mdW5jcy0+c2V0X3hnbWlfcHN0YXRlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCi0J CQkJCQkJCXBzdGF0ZSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlp ZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+c2V0X3hnbWlfcHN0YXRlKQorCQlyZXR1cm4gMDsK IAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJu IHBwX2Z1bmNzLT5zZXRfeGdtaV9wc3RhdGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwkJ CQkJCQkJcHN0YXRlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X2RmX2NzdGF0ZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgICAgdWludDMyX3QgY3N0YXRlKQogewotCWludCBy ZXQgPSAwOwogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93 ZXJwbGF5LnBwX2Z1bmNzOwogCXZvaWQgKnBwX2hhbmRsZSA9IGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGU7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnNldF9kZl9jc3RhdGUpIHsKLQkJ bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+c2V0X2RmX2Nz dGF0ZShwcF9oYW5kbGUsIGNzdGF0ZSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCX0KKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+c2V0X2RmX2NzdGF0ZSkKKwkJcmV0 dXJuIDA7CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwor CXJldHVybiBwcF9mdW5jcy0+c2V0X2RmX2NzdGF0ZShwcF9oYW5kbGUsIGNzdGF0ZSk7CiB9CiAK IHNzaXplX3QgYW1kZ3B1X2RwbV9nZXRfcG1fcG9saWN5X2luZm8oc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkJICAgICAgZW51bSBwcF9wbV9wb2xpY3kgcF90eXBlLCBjaGFyICpidWYp CiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl OwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKIAotCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2 KSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHNtdV9nZXRfcG1f cG9saWN5X2luZm8oc211LCBwX3R5cGUsIGJ1Zik7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCX0KKwlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQorCQlyZXR1cm4gLUVP UE5PVFNVUFA7CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgp OworCXJldHVybiBzbXVfZ2V0X3BtX3BvbGljeV9pbmZvKHNtdSwgcF90eXBlLCBidWYpOwogfQog CiBpbnQgYW1kZ3B1X2RwbV9zZXRfcG1fcG9saWN5KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCBpbnQgcG9saWN5X3R5cGUsCiAJCQkgICAgIGludCBwb2xpY3lfbGV2ZWwpCiB7CiAJc3RydWN0 IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQg PSAtRU9QTk9UU1VQUDsKIAotCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkgewotCQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHNtdV9zZXRfcG1fcG9saWN5KHNtdSwg cG9saWN5X3R5cGUsIHBvbGljeV9sZXZlbCk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCX0KKwlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQorCQlyZXR1cm4gLUVPUE5P VFNVUFA7CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwor CXJldHVybiBzbXVfc2V0X3BtX3BvbGljeShzbXUsIHBvbGljeV90eXBlLCBwb2xpY3lfbGV2ZWwp OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9lbmFibGVfbWdwdV9mYW5fYm9vc3Qoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCkBAIC00NDcsMTUgKzM2OCwxMiBAQCBpbnQgYW1kZ3B1X2RwbV9lbmFi bGVfbWdwdV9mYW5fYm9vc3Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJdm9pZCAqcHBf aGFuZGxlID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKIAljb25zdCBzdHJ1Y3QgYW1kX3Bt X2Z1bmNzICpwcF9mdW5jcyA9CiAJCQlhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJl dCA9IDA7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPmVuYWJsZV9tZ3B1X2Zhbl9ib29z dCkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5l bmFibGVfbWdwdV9mYW5fYm9vc3QocHBfaGFuZGxlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JfQorCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5lbmFibGVfbWdwdV9m YW5fYm9vc3QpCisJCXJldHVybiAwOwogCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmVuYWJsZV9tZ3B1X2Zhbl9ib29zdChw cF9oYW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfY2xvY2tnYXRpbmdfYnlfc211KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtNDY0LDE2ICszODIsMTMgQEAgaW50IGFtZGdw dV9kcG1fc2V0X2Nsb2NrZ2F0aW5nX2J5X3NtdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK IAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCWNvbnN0IHN0 cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0KIAkJCWFkZXYtPnBvd2VycGxheS5wcF9mdW5j czsKLQlpbnQgcmV0ID0gMDsKIAotCWlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c2V0X2Nsb2Nr Z2F0aW5nX2J5X3NtdSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9 IHBwX2Z1bmNzLT5zZXRfY2xvY2tnYXRpbmdfYnlfc211KHBwX2hhbmRsZSwKLQkJCQkJCSAgICAg ICBtc2dfaWQpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFw cF9mdW5jcyB8fCAhcHBfZnVuY3MtPnNldF9jbG9ja2dhdGluZ19ieV9zbXUpCisJCXJldHVybiAw OwogCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1 cm4gcHBfZnVuY3MtPnNldF9jbG9ja2dhdGluZ19ieV9zbXUocHBfaGFuZGxlLAorCQkJCQkJICAg ICAgIG1zZ19pZCk7CiB9CiAKIGludCBhbWRncHVfZHBtX3NtdV9pMmNfYnVzX2FjY2VzcyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTQ4MiwyMiArMzk3LDE5IEBAIGludCBhbWRncHVf ZHBtX3NtdV9pMmNfYnVzX2FjY2VzcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAl2b2lk ICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCWNvbnN0IHN0cnVjdCBh bWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0KIAkJCWFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlp bnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnNtdV9p MmNfYnVzX2FjY2VzcykgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9 IHBwX2Z1bmNzLT5zbXVfaTJjX2J1c19hY2Nlc3MocHBfaGFuZGxlLAotCQkJCQkJICAgYWNxdWly ZSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNz IHx8ICFwcF9mdW5jcy0+c211X2kyY19idXNfYWNjZXNzKQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7 CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biA9IHBwX2Z1bmNzLT5zbXVfaTJjX2J1c19hY2Nlc3MocHBfaGFuZGxlLAorCQkJCQkJICAgYWNx dWlyZSk7CiB9CiAKIHZvaWQgYW1kZ3B1X3BtX2FjcGlfZXZlbnRfaGFuZGxlcihzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKIHsKIAlpZiAoYWRldi0+cG0uZHBtX2VuYWJsZWQpIHsKLQkJbXV0 ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCQlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKIAkJaWYgKHBvd2VyX3N1cHBseV9pc19zeXN0ZW1fc3VwcGxpZWQoKSA+IDApCiAJCQlhZGV2 LT5wbS5hY19wb3dlciA9IHRydWU7CiAJCWVsc2UKQEAgLTUxMCw3ICs0MjIsNiBAQCB2b2lkIGFt ZGdwdV9wbV9hY3BpX2V2ZW50X2hhbmRsZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJ CWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJCXNtdV9zZXRfYWNfZGMoYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSk7CiAKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAJ fQogfQogCkBAIC01MTgsNDkgKzQyOSw0MCBAQCBpbnQgYW1kZ3B1X2RwbV9yZWFkX3NlbnNvcihz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgZW51bSBhbWRfcHBfc2Vuc29ycyBzZW5zbwogCQkJ ICAgdm9pZCAqZGF0YSwgdWludDMyX3QgKnNpemUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9m dW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IC1F SU5WQUw7CiAKIAlpZiAoIWRhdGEgfHwgIXNpemUpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYg KHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5yZWFkX3NlbnNvcikgewotCQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5yZWFkX3NlbnNvcihhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAorCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5yZWFkX3NlbnNvcikK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gcHBfZnVuY3MtPnJlYWRfc2Vuc29yKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJ CQkJCSAgICBzZW5zb3IsCiAJCQkJCSAgICBkYXRhLAogCQkJCQkgICAgc2l6ZSk7Ci0JCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBh bWRncHVfZHBtX2dldF9hcHVfdGhlcm1hbF9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgdWludDMyX3QgKmxpbWl0KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1 bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsK IAotCWlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+Z2V0X2FwdV90aGVybWFsX2xpbWl0KSB7Ci0J CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPmdldF9hcHVf dGhlcm1hbF9saW1pdChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBsaW1pdCk7Ci0JCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5j cy0+Z2V0X2FwdV90aGVybWFsX2xpbWl0KQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlyZXR1 cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5j cy0+Z2V0X2FwdV90aGVybWFsX2xpbWl0KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIGxpbWl0 KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X2FwdV90aGVybWFsX2xpbWl0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCBsaW1pdCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3Bt X2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0g LUVPUE5PVFNVUFA7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnNldF9hcHVfdGhlcm1h bF9saW1pdCkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1 bmNzLT5zZXRfYXB1X3RoZXJtYWxfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgbGlt aXQpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5j cyB8fCAhcHBfZnVuY3MtPnNldF9hcHVfdGhlcm1hbF9saW1pdCkKKwkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gcHBfZnVuY3MtPnNldF9hcHVfdGhlcm1hbF9saW1pdChhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLCBsaW1pdCk7CiB9CiAKIHZvaWQgYW1kZ3B1X2RwbV9jb21wdXRlX2Nsb2NrcyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTU4Myw5ICs0ODUsOCBAQCB2b2lkIGFtZGdwdV9k cG1fY29tcHV0ZV9jbG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCQlhbWRncHVf ZmVuY2Vfd2FpdF9lbXB0eShyaW5nKTsKIAl9CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRl eCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJcHBfZnVuY3MtPnBtX2NvbXB1 dGVfY2xvY2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3VubG9jaygmYWRl di0+cG0ubXV0ZXgpOwogfQogCiB2b2lkIGFtZGdwdV9kcG1fZW5hYmxlX3V2ZChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwgYm9vbCBlbmFibGUpCkBAIC01OTMsMTQgKzQ5NCwxNCBAQCB2b2lk IGFtZGdwdV9kcG1fZW5hYmxlX3V2ZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBl bmFibGUpCiAJaW50IHJldCA9IDA7CiAKIAlpZiAoYWRldi0+ZmFtaWx5ID09IEFNREdQVV9GQU1J TFlfU0kpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlpZiAoZW5hYmxlKSB7 Ci0JCQlhZGV2LT5wbS5kcG0udXZkX2FjdGl2ZSA9IHRydWU7Ci0JCQlhZGV2LT5wbS5kcG0uc3Rh dGUgPSBQT1dFUl9TVEFURV9UWVBFX0lOVEVSTkFMX1VWRDsKLQkJfSBlbHNlIHsKLQkJCWFkZXYt PnBtLmRwbS51dmRfYWN0aXZlID0gZmFsc2U7CisJCXNjb3BlZF9ndWFyZChtdXRleCwgJmFkZXYt PnBtLm11dGV4KSB7CisJCQlpZiAoZW5hYmxlKSB7CisJCQkJYWRldi0+cG0uZHBtLnV2ZF9hY3Rp dmUgPSB0cnVlOworCQkJCWFkZXYtPnBtLmRwbS5zdGF0ZSA9IFBPV0VSX1NUQVRFX1RZUEVfSU5U RVJOQUxfVVZEOworCQkJfSBlbHNlIHsKKwkJCQlhZGV2LT5wbS5kcG0udXZkX2FjdGl2ZSA9IGZh bHNlOworCQkJfQogCQl9Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCiAJCWFt ZGdwdV9kcG1fY29tcHV0ZV9jbG9ja3MoYWRldik7CiAJCXJldHVybjsKQEAgLTYyNywxNSArNTI4 LDE1IEBAIHZvaWQgYW1kZ3B1X2RwbV9lbmFibGVfdmNlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCBib29sIGVuYWJsZSkKIAlpbnQgcmV0ID0gMDsKIAogCWlmIChhZGV2LT5mYW1pbHkgPT0g QU1ER1BVX0ZBTUlMWV9TSSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCWlm IChlbmFibGUpIHsKLQkJCWFkZXYtPnBtLmRwbS52Y2VfYWN0aXZlID0gdHJ1ZTsKLQkJCS8qIFhY WCBzZWxlY3QgdmNlIGxldmVsIGJhc2VkIG9uIHJpbmcvdGFzayAqLwotCQkJYWRldi0+cG0uZHBt LnZjZV9sZXZlbCA9IEFNRF9WQ0VfTEVWRUxfQUNfQUxMOwotCQl9IGVsc2UgewotCQkJYWRldi0+ cG0uZHBtLnZjZV9hY3RpdmUgPSBmYWxzZTsKKwkJc2NvcGVkX2d1YXJkKG11dGV4LCAmYWRldi0+ cG0ubXV0ZXgpIHsKKwkJCWlmIChlbmFibGUpIHsKKwkJCQlhZGV2LT5wbS5kcG0udmNlX2FjdGl2 ZSA9IHRydWU7CisJCQkJLyogWFhYIHNlbGVjdCB2Y2UgbGV2ZWwgYmFzZWQgb24gcmluZy90YXNr ICovCisJCQkJYWRldi0+cG0uZHBtLnZjZV9sZXZlbCA9IEFNRF9WQ0VfTEVWRUxfQUNfQUxMOwor CQkJfSBlbHNlIHsKKwkJCQlhZGV2LT5wbS5kcG0udmNlX2FjdGl2ZSA9IGZhbHNlOworCQkJfQog CQl9Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCiAJCWFtZGdwdV9kcG1fY29t cHV0ZV9jbG9ja3MoYWRldik7CiAJCXJldHVybjsKQEAgLTY3MCw4NCArNTcxLDY2IEBAIHZvaWQg YW1kZ3B1X2RwbV9lbmFibGVfdnBlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGVu YWJsZSkKIGludCBhbWRncHVfcG1fbG9hZF9zbXVfZmlybXdhcmUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsIHVpbnQzMl90ICpzbXVfdmVyc2lvbikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3Bt X2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgciA9IDA7 CisJaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+bG9hZF9maXJt d2FyZSB8fAogCSAgICAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikgJiYgKGFkZXYtPmZsYWdzICYg QU1EX0lTX0FQVSkpKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQlyID0gcHBfZnVuY3MtPmxvYWRfZmlybXdhcmUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZSk7Ci0JaWYgKHIpIHsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXQgPSBw cF9mdW5jcy0+bG9hZF9maXJtd2FyZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKKwlpZiAo cmV0KSB7CiAJCXByX2Vycigic211IGZpcm13YXJlIGxvYWRpbmcgZmFpbGVkXG4iKTsKLQkJZ290 byBvdXQ7CisJCXJldHVybiByZXQ7CiAJfQogCiAJaWYgKHNtdV92ZXJzaW9uKQogCQkqc211X3Zl cnNpb24gPSBhZGV2LT5wbS5md192ZXJzaW9uOwogCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0dXJuIHI7CisJcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9k cG1faGFuZGxlX3Bhc3N0aHJvdWdoX3NicihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9v bCBlbmFibGUpCiB7Ci0JaW50IHJldCA9IDA7CisJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2 KSkKKwkJcmV0dXJuIDA7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0 ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBzbXVfaGFuZGxlX3Bhc3N0aHJvdWdo X3NicihhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0u bXV0ZXgpOworCXJldHVybiBzbXVfaGFuZGxlX3Bhc3N0aHJvdWdoX3NicihhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAogCQkJCQkJIGVuYWJsZSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCX0KLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NlbmRfaGJt X2JhZF9wYWdlc19udW0oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHNpemUp CiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl OwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0 dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9 IHNtdV9zZW5kX2hibV9iYWRfcGFnZXNfbnVtKHNtdSwgc2l6ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0u bXV0ZXgpOworCXJldHVybiBzbXVfc2VuZF9oYm1fYmFkX3BhZ2VzX251bShzbXUsIHNpemUpOwog fQogCiBpbnQgYW1kZ3B1X2RwbV9zZW5kX2hibV9iYWRfY2hhbm5lbF9mbGFnKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCBzaXplKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAq c211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICgh aXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4 X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfc2VuZF9oYm1fYmFkX2NoYW5uZWxf ZmxhZyhzbXUsIHNpemUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0 dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3Nl bmRfaGJtX2JhZF9jaGFubmVsX2ZsYWcoc211LCBzaXplKTsKIH0KIAogaW50IGFtZGdwdV9kcG1f c2VuZF9ybWFfcmVhc29uKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBz bXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0Owog CiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwog Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9zZW5kX3JtYV9yZWFz b24oc211KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7 CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9zZW5kX3JtYV9y ZWFzb24oc211KTsKIH0KIAogLyoqCkBAIC03NjEsNjEgKzY0NCw0NSBAQCBpbnQgYW1kZ3B1X2Rw bV9zZW5kX3JtYV9yZWFzb24oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiBib29sIGFtZGdw dV9kcG1fcmVzZXRfc2RtYV9pc19zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl OwotCWJvb2wgcmV0OwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJu IGZhbHNlOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9yZXNl dF9zZG1hX2lzX3N1cHBvcnRlZChzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1 cm4gc211X3Jlc2V0X3NkbWFfaXNfc3VwcG9ydGVkKHNtdSk7CiB9CiAKIGludCBhbWRncHVfZHBt X3Jlc2V0X3NkbWEoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IGluc3RfbWFz aykKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGU7Ci0JaW50IHJldDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVy biAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBz bXVfcmVzZXRfc2RtYShzbXUsIGluc3RfbWFzayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwor CXJldHVybiBzbXVfcmVzZXRfc2RtYShzbXUsIGluc3RfbWFzayk7CiB9CiAKIGludCBhbWRncHVf ZHBtX3Jlc2V0X3ZjbihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgaW5zdF9t YXNrKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZTsKLQlpbnQgcmV0OwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0 dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9 IHNtdV9yZXNldF92Y24oc211LCBpbnN0X21hc2spOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsK KwlyZXR1cm4gc211X3Jlc2V0X3ZjbihzbXUsIGluc3RfbWFzayk7CiB9CiAKIGJvb2wgYW1kZ3B1 X2RwbV9yZXNldF92Y25faXNfc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQog ewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsK LQlib29sIHJldDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiBm YWxzZTsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfcmVzZXRf dmNuX2lzX3N1cHBvcnRlZChzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwot Ci0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4g c211X3Jlc2V0X3Zjbl9pc19zdXBwb3J0ZWQoc211KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0 X2RwbV9mcmVxX3JhbmdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtODIzLDIyICs2 OTAsMTcgQEAgaW50IGFtZGdwdV9kcG1fZ2V0X2RwbV9mcmVxX3JhbmdlKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCQkJCSAgdWludDMyX3QgKm1pbiwKIAkJCQkgIHVpbnQzMl90ICptYXgp CiB7Ci0JaW50IHJldCA9IDA7Ci0KIAlpZiAodHlwZSAhPSBQUF9TQ0xLKQogCQlyZXR1cm4gLUVJ TlZBTDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9U U1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfZ2V0X2Rw bV9mcmVxX3JhbmdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZh ZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9nZXRfZHBtX2ZyZXFfcmFuZ2UoYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkgICAgIFNNVV9TQ0xLLAogCQkJCSAgICAgbWluLAogCQkJ CSAgICAgbWF4KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9zb2Z0X2ZyZXFfcmFuZ2Uoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCkBAIC04NjIsMTYgKzcyNCwxMiBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRf c29mdF9mcmVxX3JhbmdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogaW50IGFtZGdwdV9k cG1fd3JpdGVfd2F0ZXJtYXJrc190YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsK IAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0J aW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4g MDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfd3JpdGVfd2F0 ZXJtYXJrc190YWJsZShzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211 X3dyaXRlX3dhdGVybWFya3NfdGFibGUoc211KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fd2FpdF9m b3JfZXZlbnQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC04NzksNzYgKzczNyw1NiBA QCBpbnQgYW1kZ3B1X2RwbV93YWl0X2Zvcl9ldmVudChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKIAkJCSAgICAgIHVpbnQ2NF90IGV2ZW50X2FyZykKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQg KnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAo IWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3dhaXRfZm9yX2V2ZW50KHNtdSwg ZXZlbnQsIGV2ZW50X2FyZyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQly ZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVf d2FpdF9mb3JfZXZlbnQoc211LCBldmVudCwgZXZlbnRfYXJnKTsKIH0KIAogaW50IGFtZGdwdV9k cG1fc2V0X3Jlc2lkZW5jeV9nZnhvZmYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wg dmFsdWUpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkK IAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHNtdV9zZXRfcmVzaWRlbmN5X2dmeG9mZihzbXUsIHZhbHVlKTsKLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9zZXRfcmVzaWRlbmN5X2dmeG9mZihzbXUsIHZhbHVl KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X3Jlc2lkZW5jeV9nZnhvZmYoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsIHUzMiAqdmFsdWUpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUg PSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19z dXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9nZXRfcmVzaWRlbmN5X2dmeG9mZihzbXUs IHZhbHVlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7 CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9nZXRfcmVzaWRl bmN5X2dmeG9mZihzbXUsIHZhbHVlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2VudHJ5Y291 bnRfZ2Z4b2ZmKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1NjQgKnZhbHVlKQogewogCXN0 cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQg cmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9Q Tk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfZ2V0 X2VudHJ5Y291bnRfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsK KwlyZXR1cm4gc211X2dldF9lbnRyeWNvdW50X2dmeG9mZihzbXUsIHZhbHVlKTsKIH0KIAogaW50 IGFtZGdwdV9kcG1fZ2V0X3N0YXR1c19nZnhvZmYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs IHVpbnQzMl90ICp2YWx1ZSkKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3df c211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JcmV0ID0gc211X2dldF9zdGF0dXNfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwotCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X2dldF9zdGF0dXNfZ2Z4b2ZmKHNtdSwg dmFsdWUpOwogfQogCiB1aW50NjRfdCBhbWRncHVfZHBtX2dldF90aGVybWFsX3Rocm90dGxpbmdf Y291bnRlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTk2OSwyOCArODA3LDIzIEBA IHVpbnQ2NF90IGFtZGdwdV9kcG1fZ2V0X3RoZXJtYWxfdGhyb3R0bGluZ19jb3VudGVyKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogdm9pZCBhbWRncHVfZHBtX2dmeF9zdGF0ZV9jaGFuZ2Uo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJIGVudW0gZ2Z4X2NoYW5nZV9zdGF0ZSBz dGF0ZSkKIHsKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJZ3VhcmQobXV0ZXgpKCZh ZGV2LT5wbS5tdXRleCk7CiAJaWYgKGFkZXYtPnBvd2VycGxheS5wcF9mdW5jcyAmJgogCSAgICBh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3MtPmdmeF9zdGF0ZV9jaGFuZ2Vfc2V0KQogCQkoKGFkZXYp LT5wb3dlcnBsYXkucHBfZnVuY3MtPmdmeF9zdGF0ZV9jaGFuZ2Vfc2V0KAogCQkJKGFkZXYpLT5w b3dlcnBsYXkucHBfaGFuZGxlLCBzdGF0ZSkpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0 ZXgpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfZWNjX2luZm8oc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkgICAgdm9pZCAqdW1jX2VjYykKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQg KnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAo IWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X2dldF9lY2NfaW5mbyhzbXUsIHVt Y19lY2MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X2dldF9lY2NfaW5m byhzbXUsIHVtY19lY2MpOwogfQogCiBzdHJ1Y3QgYW1kX3ZjZV9zdGF0ZSAqYW1kZ3B1X2RwbV9n ZXRfdmNlX2Nsb2NrX3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTAwMiwx MiArODM1LDkgQEAgc3RydWN0IGFtZF92Y2Vfc3RhdGUgKmFtZGdwdV9kcG1fZ2V0X3ZjZV9jbG9j a19zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAoIXBwX2Z1bmNzLT5nZXRf dmNlX2Nsb2NrX3N0YXRlKQogCQlyZXR1cm4gTlVMTDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQl2c3RhdGUgPSBwcF9mdW5jcy0+Z2V0X3ZjZV9jbG9ja19zdGF0ZShhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJl dHVybiBwcF9mdW5jcy0+Z2V0X3ZjZV9jbG9ja19zdGF0ZShhZGV2LT5wb3dlcnBsYXkucHBfaGFu ZGxlLAogCQkJCQkgICAgICAgaWR4KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsK LQotCXJldHVybiB2c3RhdGU7CiB9CiAKIHZvaWQgYW1kZ3B1X2RwbV9nZXRfY3VycmVudF9wb3dl cl9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTEwMTUsMTEgKzg0NSwxMSBA QCB2b2lkIGFtZGdwdV9kcG1fZ2V0X2N1cnJlbnRfcG93ZXJfc3RhdGUoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7 CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRf Y3VycmVudF9wb3dlcl9zdGF0ZSkgewogCQkqc3RhdGUgPSBhZGV2LT5wbS5kcG0udXNlcl9zdGF0 ZTsKLQkJZ290byBvdXQ7CisJCXJldHVybjsKIAl9CiAKIAkqc3RhdGUgPSBwcF9mdW5jcy0+Z2V0 X2N1cnJlbnRfcG93ZXJfc3RhdGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CkBAIC0xMDI3 LDE2ICs4NTcsMTQgQEAgdm9pZCBhbWRncHVfZHBtX2dldF9jdXJyZW50X3Bvd2VyX3N0YXRlKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCSAgICAqc3RhdGUgPiBQT1dFUl9TVEFURV9UWVBF X0lOVEVSTkFMXzNEUEVSRikKIAkJKnN0YXRlID0gYWRldi0+cG0uZHBtLnVzZXJfc3RhdGU7CiAK LW91dDoKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm47CiB9CiAKIHZv aWQgYW1kZ3B1X2RwbV9zZXRfcG93ZXJfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CiAJCQkJZW51bSBhbWRfcG1fc3RhdGVfdHlwZSBzdGF0ZSkKIHsKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JYWRldi0+cG0uZHBtLnVzZXJfc3RhdGUgPSBzdGF0ZTsKLQltdXRleF91 bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlzY29wZWRfZ3VhcmQobXV0ZXgsICZhZGV2LT5wbS5t dXRleCkKKwkJYWRldi0+cG0uZHBtLnVzZXJfc3RhdGUgPSBzdGF0ZTsKIAogCWlmIChpc19zdXBw b3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuOwpAQCAtMTA1NSwxMiArODgzLDExIEBAIGVudW0g YW1kX2RwbV9mb3JjZWRfbGV2ZWwgYW1kZ3B1X2RwbV9nZXRfcGVyZm9ybWFuY2VfbGV2ZWwoc3Ry dWN0IGFtZGdwdV9kZXZpY2UKIAlpZiAoIXBwX2Z1bmNzKQogCQlyZXR1cm4gQU1EX0RQTV9GT1JD RURfTEVWRUxfQVVUTzsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlpZiAocHBfZnVuY3MtPmdldF9wZXJmb3JtYW5jZV9s ZXZlbCkKIAkJbGV2ZWwgPSBwcF9mdW5jcy0+Z2V0X3BlcmZvcm1hbmNlX2xldmVsKGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUpOwogCWVsc2UKIAkJbGV2ZWwgPSBhZGV2LT5wbS5kcG0uZm9yY2Vk X2xldmVsOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCiAJcmV0dXJuIGxldmVs OwogfQpAQCAtMTE1MSwxNyArOTc4LDEzIEBAIGludCBhbWRncHVfZHBtX2dldF9wcF9udW1fc3Rh dGVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSBzdHJ1Y3QgcHBfc3RhdGVzX2lu Zm8gKnN0YXRlcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3Mt PmdldF9wcF9udW1fc3RhdGVzKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9wcF9udW1fc3RhdGVzKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7 CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcHBfbnVtX3N0YXRlcyhhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLAogCQkJCQkgIHN0YXRlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9kaXNwYXRjaF90YXNrKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTE2OSwyNCArOTkyLDE5IEBAIGludCBhbWRncHVf ZHBtX2Rpc3BhdGNoX3Rhc2soc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgICBl bnVtIGFtZF9wbV9zdGF0ZV90eXBlICp1c2VyX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBhbWRf cG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQg PSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ZGlzcGF0Y2hfdGFza3MpCiAJCXJldHVybiAtRU9QTk9U U1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+ ZGlzcGF0Y2hfdGFza3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCko JmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmRpc3BhdGNoX3Rhc2tzKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJICAgICAgIHRhc2tfaWQsCiAJCQkJICAgICAgIHVz ZXJfc3RhdGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJl dDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X3BwX3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCBjaGFyICoqdGFibGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBf ZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAo IXRhYmxlKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTExOTQsMTIgKzEwMTIsOSBAQCBpbnQgYW1k Z3B1X2RwbV9nZXRfcHBfdGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGNoYXIgKip0 YWJsZSkKIAlpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpIHx8ICFwcF9mdW5jcy0+Z2V0X3BwX3Rh YmxlIHx8IGFkZXYtPnNjcG1fZW5hYmxlZCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0 ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfcHBfdGFibGUo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKLQkJCQkgICAgIHRhYmxlKTsKLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuID0gcHBfZnVuY3MtPmdldF9wcF90YWJsZShhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAorCQkJCSAgICAgdGFibGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9z ZXRfZmluZV9ncmFpbl9jbGtfdm9sKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTIw OCwxOSArMTAyMywxNSBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfZmluZV9ncmFpbl9jbGtfdm9sKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICAgIHVpbnQzMl90IHNpemUpCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfZmluZV9ncmFpbl9j bGtfdm9sKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQly ZXQgPSBwcF9mdW5jcy0+c2V0X2ZpbmVfZ3JhaW5fY2xrX3ZvbChhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiA9IHBwX2Z1 bmNzLT5zZXRfZmluZV9ncmFpbl9jbGtfdm9sKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJ CQkJCSAgICAgICB0eXBlLAogCQkJCQkgICAgICAgaW5wdXQsCiAJCQkJCSAgICAgICBzaXplKTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGlu dCBhbWRncHVfZHBtX29kbl9lZGl0X2RwbV90YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKQEAgLTEyMjksMTkgKzEwNDAsMTUgQEAgaW50IGFtZGdwdV9kcG1fb2RuX2VkaXRfZHBtX3Rh YmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgdWludDMyX3Qgc2l6ZSkKIHsK IAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5w cF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPm9kbl9lZGl0X2RwbV90 YWJsZSkKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0 ID0gcHBfZnVuY3MtPm9kbl9lZGl0X2RwbV90YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+b2Ru X2VkaXRfZHBtX3RhYmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgIHR5cGUs CiAJCQkJCSAgIGlucHV0LAogCQkJCQkgICBzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2VtaXRfY2xvY2tf bGV2ZWxzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTI1MCw1MiArMTA1Nyw0MCBA QCBpbnQgYW1kZ3B1X2RwbV9lbWl0X2Nsb2NrX2xldmVscyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKIAkJCQkgIGludCAqb2Zmc2V0KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3Mg KnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJ aWYgKCFwcF9mdW5jcy0+ZW1pdF9jbG9ja19sZXZlbHMpCiAJCXJldHVybiAtRU5PRU5UOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5lbWl0X2Nsb2Nr X2xldmVscyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+ZW1pdF9jbG9ja19sZXZlbHMoYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgdHlwZSwKIAkJCQkJICAgYnVmLAogCQkJCQkgICBv ZmZzZXQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK IH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3BwZmVhdHVyZV9zdGF0dXMoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCiAJCQkJICAgIHVpbnQ2NF90IHBwZmVhdHVyZV9tYXNrcykKIHsKIAljb25z dCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5j czsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9wcGZlYXR1cmVfc3RhdHVz KQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBw cF9mdW5jcy0+c2V0X3BwZmVhdHVyZV9zdGF0dXMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9w cGZlYXR1cmVfc3RhdHVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgcHBm ZWF0dXJlX21hc2tzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVy biByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9wcGZlYXR1cmVfc3RhdHVzKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBjaGFyICpidWYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9m dW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7 CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfcHBmZWF0dXJlX3N0YXR1cykKIAkJcmV0dXJuIDA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9wcGZl YXR1cmVfc3RhdHVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZh ZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcHBmZWF0dXJlX3N0YXR1cyhh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgIGJ1Zik7Ci0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9m b3JjZV9jbG9ja19sZXZlbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTEzMDMsMzMg KzEwOTgsMjUgQEAgaW50IGFtZGdwdV9kcG1fZm9yY2VfY2xvY2tfbGV2ZWwoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCiAJCQkJIHVpbnQzMl90IG1hc2spCiB7CiAJY29uc3Qgc3RydWN0IGFt ZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJl dCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5mb3JjZV9jbG9ja19sZXZlbCkKIAkJcmV0dXJuIDA7 CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmZvcmNl X2Nsb2NrX2xldmVsKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZh ZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5mb3JjZV9jbG9ja19sZXZlbChhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHR5cGUsCiAJCQkJCSAgbWFzayk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1k Z3B1X2RwbV9nZXRfc2Nsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25z dCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5j czsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9zY2xrX29kKQogCQlyZXR1 cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0g cHBfZnVuY3MtPmdldF9zY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCko JmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9zY2xrX29kKGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfc2Nsa19vZChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCkBAIC0xMzM5LDEwICsxMTI2 LDEwIEBAIGludCBhbWRncHVfZHBtX3NldF9zY2xrX29kKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCB1aW50MzJfdCB2YWx1ZSkKIAlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJl dHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlpZiAo cHBfZnVuY3MtPnNldF9zY2xrX29kKQotCQlwcF9mdW5jcy0+c2V0X3NjbGtfb2QoYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OworCXNjb3BlZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KSB7CisJCWlmIChwcF9mdW5j cy0+c2V0X3NjbGtfb2QpCisJCQlwcF9mdW5jcy0+c2V0X3NjbGtfb2QoYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZSwgdmFsdWUpOworCX0KIAogCWlmIChhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2so YWRldiwKIAkJCQkgICAgIEFNRF9QUF9UQVNLX1JFQURKVVNUX1BPV0VSX1NUQVRFLApAQCAtMTM1 NywxNiArMTE0NCwxMiBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfc2Nsa19vZChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCiBpbnQgYW1kZ3B1X2RwbV9nZXRfbWNsa19v ZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1 bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsK IAogCWlmICghcHBfZnVuY3MtPmdldF9tY2xrX29kKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9tY2xr X29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsK KwlyZXR1cm4gcHBfZnVuY3MtPmdldF9tY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUp OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfbWNsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwgdWludDMyX3QgdmFsdWUpCkBAIC0xMzc2LDEwICsxMTU5LDEwIEBAIGludCBhbWRncHVf ZHBtX3NldF9tY2xrX29kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCB2YWx1 ZSkKIAlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsK IAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlpZiAocHBfZnVuY3MtPnNldF9tY2xr X29kKQotCQlwcF9mdW5jcy0+c2V0X21jbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwg dmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCXNjb3BlZF9ndWFyZCht dXRleCwgJmFkZXYtPnBtLm11dGV4KSB7CisJCWlmIChwcF9mdW5jcy0+c2V0X21jbGtfb2QpCisJ CQlwcF9mdW5jcy0+c2V0X21jbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdmFsdWUp OworCX0KIAogCWlmIChhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soYWRldiwKIAkJCQkgICAgIEFN RF9QUF9UQVNLX1JFQURKVVNUX1BPV0VSX1NUQVRFLApAQCAtMTM5NSwxNzAgKzExNzgsMTMwIEBA IGludCBhbWRncHVfZHBtX2dldF9wb3dlcl9wcm9maWxlX21vZGUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkJICAgICAgY2hhciAqYnVmKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1f ZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAw OwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZSkKIAkJcmV0dXJuIC1F T1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1 bmNzLT5nZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJ Z3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcG93 ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgICBi dWYpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0K IAogaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAkJCQkgICAgICBsb25nICppbnB1dCwgdWludDMyX3Qgc2l6ZSkKIHsKIAlj b25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9m dW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9wb3dlcl9wcm9maWxl X21vZGUpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJl dCA9IHBwX2Z1bmNzLT5zZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNz LT5zZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJ CSAgICAgICBpbnB1dCwKIAkJCQkJICAgICAgIHNpemUpOwotCW11dGV4X3VubG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2dwdV9t ZXRyaWNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB2b2lkICoqdGFibGUpCiB7CiAJY29u c3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVu Y3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZ3B1X21ldHJpY3MpCiAJ CXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1 bmNzLT5nZXRfZ3B1X21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9ncHVfbWV0cmlj cyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQl0YWJsZSk7Ci0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBzc2l6ZV90IGFtZGdwdV9k cG1fZ2V0X3BtX21ldHJpY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHZvaWQgKnBtX21l dHJpY3MsCiAJCQkJICBzaXplX3Qgc2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNz ICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAog CWlmICghcHBfZnVuY3MtPmdldF9wbV9tZXRyaWNzKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9wbV9t ZXRyaWNzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHBtX21ldHJpY3MsCisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcG1fbWV0cmljcyhh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBwbV9tZXRyaWNzLAogCQkJCSAgICAgICBzaXplKTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGlu dCBhbWRncHVfZHBtX2dldF9mYW5fY29udHJvbF9tb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LAogCQkJCSAgICB1aW50MzJfdCAqZmFuX21vZGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9w bV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9 IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZmFuX2NvbnRyb2xfbW9kZSkKIAkJcmV0dXJuIC1F T1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1 bmNzLT5nZXRfZmFuX2NvbnRyb2xfbW9kZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2Zhbl9j b250cm9sX21vZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgICBmYW5fbW9k ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQog CiBpbnQgYW1kZ3B1X2RwbV9zZXRfZmFuX3NwZWVkX3B3bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKIAkJCQkgdWludDMyX3Qgc3BlZWQpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5j cyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAK IAlpZiAoIXBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3B3bSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQ OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRf ZmFuX3NwZWVkX3B3bShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgm YWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X2Zhbl9zcGVlZF9wd20oYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICBzcGVlZCk7Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRf ZmFuX3NwZWVkX3B3bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgdWludDMyX3Qg KnNwZWVkKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+ cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0 X2Zhbl9zcGVlZF9wd20pCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFk ZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Zhbl9zcGVlZF9wd20oYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcHdtKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsCiAJCQkJCSAgc3BlZWQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Zhbl9zcGVlZF9ycG0oc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJIHVpbnQzMl90ICpzcGVlZCkKIHsKIAljb25zdCBz dHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsK LQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcnBtKQogCQly ZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0 ID0gcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcnBtKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRf ZmFuX3NwZWVkX3JwbShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHNwZWVkKTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGlu dCBhbWRncHVfZHBtX3NldF9mYW5fc3BlZWRfcnBtKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCQkJCSB1aW50MzJfdCBzcGVlZCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpw cF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlm ICghcHBfZnVuY3MtPnNldF9mYW5fc3BlZWRfcnBtKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPnNldF9mYW5f c3BlZWRfcnBtKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3JwbShhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHNwZWVkKTsKLQltdXRleF91bmxvY2soJmFkZXYt PnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9mYW5f Y29udHJvbF9tb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICB1aW50MzJf dCBtb2RlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+ cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0 X2Zhbl9jb250cm9sX21vZGUpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2Zhbl9jb250cm9sX21vZGUo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9mYW5fY29udHJvbF9tb2RlKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgbW9kZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfcG93ZXJfbGlt aXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xNTY3LDE5ICsxMzEwLDE1IEBAIGlu dCBhbWRncHVfZHBtX2dldF9wb3dlcl9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK IAkJCSAgICAgICBlbnVtIHBwX3Bvd2VyX3R5cGUgcG93ZXJfdHlwZSkKIHsKIAljb25zdCBzdHJ1 Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlp bnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9wb3dlcl9saW1pdCkKIAkJcmV0dXJu IC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBw X2Z1bmNzLT5nZXRfcG93ZXJfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFy ZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9wb3dlcl9s aW1pdChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQlsaW1pdCwKIAkJCQkJcHBfbGlt aXRfbGV2ZWwsCiAJCQkJCXBvd2VyX3R5cGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyX2xpbWl0 KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTU4NywxNyArMTMyNiwxMyBAQCBpbnQg YW1kZ3B1X2RwbV9zZXRfcG93ZXJfbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJ CQkgICAgICAgdWludDMyX3QgbGltaXQpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAq cHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlp ZiAoIXBwX2Z1bmNzLT5zZXRfcG93ZXJfbGltaXQpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JbXV0 ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfcG93ZXJfbGlt aXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9wb3dlcl9saW1pdChhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlLAogCQkJCQlsaW1pdF90eXBlLCBsaW1pdCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9pc19jY2xr X2RwbV9zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC0xNjA3LDkgKzEz NDIsOCBAQCBpbnQgYW1kZ3B1X2RwbV9pc19jY2xrX2RwbV9zdXBwb3J0ZWQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJu IGZhbHNlOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgm YWRldi0+cG0ubXV0ZXgpOwogCWNjbGtfZHBtX3N1cHBvcnRlZCA9IGlzX3N1cHBvcnRfY2Nsa19k cG0oYWRldik7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAKIAlyZXR1cm4gKGlu dCljY2xrX2RwbV9zdXBwb3J0ZWQ7CiB9CkBAIC0xNjIyLDEwICsxMzU2LDkgQEAgaW50IGFtZGdw dV9kcG1fZGVidWdmc19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xldmVsKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGUKIAlpZiAoIXBwX2Z1bmNzLT5kZWJ1Z2ZzX3ByaW50X2N1cnJlbnRfcGVy Zm9ybWFuY2VfbGV2ZWwpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFk ZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlwcF9mdW5j cy0+ZGVidWdmc19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xldmVsKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCiAJCQkJCQkJICBtKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4 KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTYzNSwxOCArMTM2OCwxNCBAQCBpbnQgYW1kZ3B1X2Rw bV9nZXRfc211X3Bydl9idWZfZGV0YWlscyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJ CQkgICAgICAgc2l6ZV90ICpzaXplKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYg KCFwcF9mdW5jcy0+Z2V0X3NtdV9wcnZfYnVmX2RldGFpbHMpCiAJCXJldHVybiAtRU5PU1lTOwog Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfc211 X3Bydl9idWZfZGV0YWlscyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3NtdV9wcnZfYnVmX2Rl dGFpbHMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCWFkZHIsCiAJCQkJCQlzaXpl KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAK IGludCBhbWRncHVfZHBtX2lzX292ZXJkcml2ZV9zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCkBAIC0xNjk4LDcgKzE0MjcsNiBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfcHBfdGFi bGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgc2l6ZV90IHNpemUpCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWJ1ZiB8fCAhc2l6ZSkKIAkJcmV0dXJuIC1F SU5WQUw7CkBAIC0xNzA2LDEzICsxNDM0LDEwIEBAIGludCBhbWRncHVfZHBtX3NldF9wcF90YWJs ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYp IHx8ICFwcF9mdW5jcy0+c2V0X3BwX3RhYmxlIHx8IGFkZXYtPnNjcG1fZW5hYmxlZCkKIAkJcmV0 dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9 IHBwX2Z1bmNzLT5zZXRfcHBfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFy ZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9wcF90YWJs ZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCSAgICAgYnVmLAogCQkJCSAgICAgc2l6 ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQog CiBpbnQgYW1kZ3B1X2RwbV9nZXRfbnVtX2NwdV9jb3JlcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKQEAgLTE3MzcsMTcgKzE0NjIsMTMgQEAgaW50IGFtZGdwdV9kcG1fZGlzcGxheV9jb25m aWd1cmF0aW9uX2NoYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICAgIGNv bnN0IHN0cnVjdCBhbWRfcHBfZGlzcGxheV9jb25maWd1cmF0aW9uICppbnB1dCkKIHsKIAljb25z dCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5j czsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmRpc3BsYXlfY29uZmlndXJhdGlv bl9jaGFuZ2UpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHBwX2Z1bmNzLT5kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlKGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJu IHBwX2Z1bmNzLT5kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlKGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUsCiAJCQkJCQkgICAgIGlucHV0KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90 eXBlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTc1NSwzNSArMTQ3NiwyNyBAQCBp bnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKIAkJCQkgc3RydWN0IGFtZF9wcF9jbG9ja3MgKmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3Qg YW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQg cmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9jbG9ja19ieV90eXBlKQogCQlyZXR1cm4g MDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0 X2Nsb2NrX2J5X3R5cGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCko JmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9jbG9ja19ieV90eXBlKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgdHlwZSwKIAkJCQkJICBjbG9ja3MpOwot CW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50 IGFtZGdwdV9kcG1fZ2V0X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Nsa3Moc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCiAJCQkJCQlzdHJ1Y3QgYW1kX3BwX3NpbXBsZV9jbG9ja19pbmZvICpj bG9ja3MpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5w b3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRf ZGlzcGxheV9tb2RlX3ZhbGlkYXRpb25fY2xvY2tzKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Rpc3BsYXlfbW9kZV92 YWxpZGF0aW9uX2Nsb2NrcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiA9IHBwX2Z1bmNzLT5nZXRfZGlzcGxheV9tb2Rl X3ZhbGlkYXRpb25fY2xvY2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJICAg Y2xvY2tzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7 CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlX3dpdGhfbGF0ZW5jeShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTE3OTEsMTggKzE1MDQsMTQgQEAgaW50IGFtZGdw dV9kcG1fZ2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF9sYXRlbmN5KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogCQkJCQkgICAgICBzdHJ1Y3QgcHBfY2xvY2tfbGV2ZWxzX3dpdGhfbGF0ZW5jeSAq Y2xvY2tzKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+ cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0 X2Nsb2NrX2J5X3R5cGVfd2l0aF9sYXRlbmN5KQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5cGVfd2l0 aF9sYXRlbmN5KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfY2xvY2tfYnlfdHlwZV93aXRoX2xh dGVuY3koYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCSAgICAgICB0eXBlLAogCQkJ CQkJICAgICAgIGNsb2Nrcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQly ZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZV93aXRoX3Zv bHRhZ2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xODEwLDY5ICsxNTE5LDUzIEBA IGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlX3dpdGhfdm9sdGFnZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKIAkJCQkJICAgICAgc3RydWN0IHBwX2Nsb2NrX2xldmVsc193aXRo X3ZvbHRhZ2UgKmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5j cyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBf ZnVuY3MtPmdldF9jbG9ja19ieV90eXBlX3dpdGhfdm9sdGFnZSkKIAkJcmV0dXJuIDA7CiAKLQlt dXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9jbG9ja19i eV90eXBlX3dpdGhfdm9sdGFnZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5 cGVfd2l0aF92b2x0YWdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICAgICAg dHlwZSwKIAkJCQkJCSAgICAgICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3dhdGVybWFya3Nf Zm9yX2Nsb2Nrc19yYW5nZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAgICAg ICB2b2lkICpjbG9ja19yYW5nZXMpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBf ZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAo IXBwX2Z1bmNzLT5zZXRfd2F0ZXJtYXJrc19mb3JfY2xvY2tzX3JhbmdlcykKIAkJcmV0dXJuIC1F T1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1 bmNzLT5zZXRfd2F0ZXJtYXJrc19mb3JfY2xvY2tzX3JhbmdlcyhhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5j cy0+c2V0X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19yYW5nZXMoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwKIAkJCQkJCQkgY2xvY2tfcmFuZ2VzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2Rpc3BsYXlfY2xvY2tf dm9sdGFnZV9yZXF1ZXN0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkgICAgIHN0 cnVjdCBwcF9kaXNwbGF5X2Nsb2NrX3JlcXVlc3QgKmNsb2NrKQogewogCWNvbnN0IHN0cnVjdCBh bWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCBy ZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ZGlzcGxheV9jbG9ja192b2x0YWdlX3JlcXVlc3Qp CiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK LQlyZXQgPSBwcF9mdW5jcy0+ZGlzcGxheV9jbG9ja192b2x0YWdlX3JlcXVlc3QoYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1 cm4gcHBfZnVuY3MtPmRpc3BsYXlfY2xvY2tfdm9sdGFnZV9yZXF1ZXN0KGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCiAJCQkJCQkgICAgICBjbG9jayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfY3VycmVu dF9jbG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICBzdHJ1Y3QgYW1kX3Bw X2Nsb2NrX2luZm8gKmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICgh cHBfZnVuY3MtPmdldF9jdXJyZW50X2Nsb2NrcykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfY3VycmVu dF9jbG9ja3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYt PnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9jdXJyZW50X2Nsb2NrcyhhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogdm9pZCBhbWRncHVfZHBtX25vdGlm eV9zbXVfZW5hYmxlX3B3ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTE4ODIsNDMg KzE1NzUsMzQgQEAgdm9pZCBhbWRncHVfZHBtX25vdGlmeV9zbXVfZW5hYmxlX3B3ZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIAlpZiAoIXBwX2Z1bmNzLT5ub3RpZnlfc211X2VuYWJsZV9w d2UpCiAJCXJldHVybjsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlwcF9mdW5jcy0+bm90aWZ5X3NtdV9lbmFibGVfcHdl KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0 ZXgpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfYWN0aXZlX2Rpc3BsYXlfY291bnQoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCXVpbnQzMl90IGNvdW50KQogewogCWNvbnN0IHN0 cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwot CWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X2FjdGl2ZV9kaXNwbGF5X2NvdW50 KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0JcmV0ID0gcHBfZnVuY3MtPnNldF9hY3RpdmVfZGlzcGxheV9jb3VudChhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBw cF9mdW5jcy0+c2V0X2FjdGl2ZV9kaXNwbGF5X2NvdW50KGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsCiAJCQkJCQkgY291bnQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X21pbl9kZWVwX3NsZWVwX2RjZWZj bGsoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAgdWludDMyX3QgY2xvY2spCiB7 CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXku cHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfbWluX2RlZXBf c2xlZXBfZGNlZmNsaykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfbWluX2RlZXBfc2xlZXBfZGNlZmNs ayhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0 ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X21pbl9kZWVwX3NsZWVwX2RjZWZjbGsoYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCSAgIGNsb2NrKTsKLQltdXRleF91bmxvY2soJmFk ZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIHZvaWQgYW1kZ3B1X2RwbV9zZXRf aGFyZF9taW5fZGNlZmNsa19ieV9mcmVxKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAt MTkyOSwxMCArMTYxMyw5IEBAIHZvaWQgYW1kZ3B1X2RwbV9zZXRfaGFyZF9taW5fZGNlZmNsa19i eV9mcmVxKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCWlmICghcHBfZnVuY3MtPnNldF9o YXJkX21pbl9kY2VmY2xrX2J5X2ZyZXEpCiAJCXJldHVybjsKIAotCW11dGV4X2xvY2soJmFkZXYt PnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlwcF9mdW5jcy0+ c2V0X2hhcmRfbWluX2RjZWZjbGtfYnlfZnJlcShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAog CQkJCQkgICAgICAgY2xvY2spOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogfQog CiB2b2lkIGFtZGdwdV9kcG1fc2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKQEAgLTE5NDMsNDQgKzE2MjYsMzUgQEAgdm9pZCBhbWRncHVfZHBtX3Nl dF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJaWYg KCFwcF9mdW5jcy0+c2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcSkKIAkJcmV0dXJuOwogCi0JbXV0 ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgp OwogCXBwX2Z1bmNzLT5zZXRfaGFyZF9taW5fZmNsa19ieV9mcmVxKGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUsCiAJCQkJCSAgICBjbG9jayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRl eCk7CiB9CiAKIGludCBhbWRncHVfZHBtX2Rpc3BsYXlfZGlzYWJsZV9tZW1vcnlfY2xvY2tfc3dp dGNoKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkJICAgYm9vbCBkaXNhYmxlX21l bW9yeV9jbG9ja19zd2l0Y2gpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVu Y3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBw X2Z1bmNzLT5kaXNwbGF5X2Rpc2FibGVfbWVtb3J5X2Nsb2NrX3N3aXRjaCkKIAkJcmV0dXJuIDA7 CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmRpc3Bs YXlfZGlzYWJsZV9tZW1vcnlfY2xvY2tfc3dpdGNoKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5kaXNw bGF5X2Rpc2FibGVfbWVtb3J5X2Nsb2NrX3N3aXRjaChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAogCQkJCQkJCSAgICBkaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2gpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1f Z2V0X21heF9zdXN0YWluYWJsZV9jbG9ja3NfYnlfZGMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCiAJCQkJCQlzdHJ1Y3QgcHBfc211X252X2Nsb2NrX3RhYmxlICptYXhfY2xvY2tzKQogewog CWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBw X2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X21heF9zdXN0YWlu YWJsZV9jbG9ja3NfYnlfZGMpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X21heF9zdXN0YWluYWJsZV9j bG9ja3NfYnlfZGMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9tYXhfc3VzdGFpbmFibGVfY2xv Y2tzX2J5X2RjKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJIG1heF9jbG9ja3Mp OwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAog ZW51bSBwcF9zbXVfc3RhdHVzIGFtZGdwdV9kcG1fZ2V0X3VjbGtfZHBtX3N0YXRlcyhzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTE5ODgsMzUgKzE2NjIsMjcgQEAgZW51bSBwcF9zbXVf c3RhdHVzIGFtZGdwdV9kcG1fZ2V0X3VjbGtfZHBtX3N0YXRlcyhzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIAkJCQkJCSAgdW5zaWduZWQgaW50ICpudW1fc3RhdGVzKQogewogCWNvbnN0IHN0 cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwot CWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3VjbGtfZHBtX3N0YXRlcykKIAkJ cmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJl dCA9IHBwX2Z1bmNzLT5nZXRfdWNsa19kcG1fc3RhdGVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5n ZXRfdWNsa19kcG1fc3RhdGVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICBj bG9ja192YWx1ZXNfaW5fa2h6LAogCQkJCQkgICAgbnVtX3N0YXRlcyk7Ci0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9n ZXRfZHBtX2Nsb2NrX3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgIHN0 cnVjdCBkcG1fY2xvY2tzICpjbG9ja190YWJsZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1 bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsK IAogCWlmICghcHBfZnVuY3MtPmdldF9kcG1fY2xvY2tfdGFibGUpCiAJCXJldHVybiAtRU9QTk9U U1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+ Z2V0X2RwbV9jbG9ja190YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2RwbV9jbG9ja190 YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgY2xvY2tfdGFibGUpOwot CW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogLyoq CkBAIC0yMDM3LDE3ICsxNzAzLDEzIEBAIHNzaXplX3QgYW1kZ3B1X2RwbV9nZXRfdGVtcF9tZXRy aWNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICBlbnVtIHNtdV90ZW1wX21l dHJpY190eXBlIHR5cGUsIHZvaWQgKnRhYmxlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVu Y3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQ7CiAKIAlp ZiAoIXBwX2Z1bmNzLT5nZXRfdGVtcF9tZXRyaWNzIHx8CiAJICAgICFhbWRncHVfZHBtX2lzX3Rl bXBfbWV0cmljc19zdXBwb3J0ZWQoYWRldiwgdHlwZSkpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsK IAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X3Rl bXBfbWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlLCB0YWJsZSk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3RlbXBfbWV0cmljcyhh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlLCB0YWJsZSk7CiB9CiAKIC8qKgpAQCAtMjA2 NCwxOSArMTcyNiwxNSBAQCBib29sIGFtZGdwdV9kcG1faXNfdGVtcF9tZXRyaWNzX3N1cHBvcnRl ZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICBlbnVtIHNtdV90ZW1wX21ldHJp Y190eXBlIHR5cGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JYm9vbCBzdXBwb3J0X3RlbXBfbWV0cmljcyA9IGZh bHNlOwogCiAJaWYgKCFwcF9mdW5jcy0+dGVtcF9tZXRyaWNzX2lzX3N1cHBvcnRlZCkKLQkJcmV0 dXJuIHN1cHBvcnRfdGVtcF9tZXRyaWNzOworCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoaXNfc3Vw cG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlz dXBwb3J0X3RlbXBfbWV0cmljcyA9Ci0JCQlwcF9mdW5jcy0+dGVtcF9tZXRyaWNzX2lzX3N1cHBv cnRlZChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlKTsKLQkJbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJl dHVybiBmYWxzZTsKIAotCXJldHVybiBzdXBwb3J0X3RlbXBfbWV0cmljczsKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnRlbXBfbWV0cmljc19pc19z dXBwb3J0ZWQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSk7CiB9CiAKIC8qKgpAQCAt MjA5OCwxNyArMTc1NiwxMyBAQCBzc2l6ZV90IGFtZGdwdV9kcG1fZ2V0X3hjcF9tZXRyaWNzKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBpbnQgeGNwX2lkLAogCQkJCSAgIHZvaWQgKnRhYmxl KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJw bGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3hjcF9t ZXRyaWNzKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQly ZXQgPSBwcF9mdW5jcy0+Z2V0X3hjcF9tZXRyaWNzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs IHhjcF9pZCwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVu Y3MtPmdldF94Y3BfbWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB4Y3BfaWQsCiAJ CQkJCXRhYmxlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CiB9CiAKIGNvbnN0IHN0cnVjdCByYXNfc211X2RydiAqYW1kZ3B1X2RwbV9nZXRfcmFzX3Nt dV9kcml2ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCi0tIAoyLjQzLjAKCg==