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 D0DE6CD4F24 for ; Wed, 13 May 2026 07:54:26 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8D88A10ED25; Wed, 13 May 2026 07:54:25 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; secure) header.d=usp.br header.i=@usp.br header.b="nF19RC9B"; dkim-atps=neutral Received: from mail-dy1-f169.google.com (mail-dy1-f169.google.com [74.125.82.169]) by gabe.freedesktop.org (Postfix) with ESMTPS id 85C7810EC56 for ; Tue, 12 May 2026 23:06:13 +0000 (UTC) Received: by mail-dy1-f169.google.com with SMTP id 5a478bee46e88-2f0ad52830cso8984705eec.1 for ; Tue, 12 May 2026 16:06:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=usp.br; s=usp-google; t=1778627172; x=1779231972; 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=rAUOnH/LR5VFJv8y6HULBmKrsMP8uw6Bi/Uu29zO4DU=; b=nF19RC9BheP+aWNrBt4QtAv3xOUG25UBZ69F2/YkOa2rEdWtajlI8G7wObTkDdKLSC FL4Vol/3EXV3vt/FUe7GCJFs3dHPl1mhMjboPtn/07f4gWcoDLXiWXnuJxUvdhKXAquy OmjZA9lYhdUwAccaqlnLmshrWBOVv7EmXPZIuDaA6hWILzgwmNu6gF2Xekbh6EWB48cK YuQN+15SkV37TMLIqUiAkTe3IKeKsntaa4QwXYPae15JzZLlLmKEgLhMfLcNcEVGz1uX g++VZQSHO61HPzZzNLraCB54ooJg9ktn6FUyP1IFHfo9LIarof5ePJ8OOB97aVxPnXD0 1QxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778627172; x=1779231972; 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=rAUOnH/LR5VFJv8y6HULBmKrsMP8uw6Bi/Uu29zO4DU=; b=VHgQ+haomJarG7EtdTRkiuuZPmeCK0PLt7ONTy9Cu3YkSFxG3L+DcKlmA45ccgirbV /NbwbQH8FWnf2pJ0fyJ12pm+FkTORDrI0nAi8phjTR7SYGvjz3Ai7mmhV2OPL53ZO4z4 WDg/FjveF4srMpO+nH7pXkp5kxlACj49gD0sxBAbN34uiCewtS3bqJsMsGT01PJniJrU 0qF2HZIC71UcpC6mKUoRfpGCi9Kjn0vbvOubIGarZXpHsu2PGuoJT340K8PMHZ1FH7MV Nl7nLEjZ27xn7W7HckMO1fBweX+rEGjN5kiXECh32n/kUIU0xrnAD7qw8TQRwz5/kXWy pd4A== X-Forwarded-Encrypted: i=1; AFNElJ8fjHjXuoLX/731lFZgC8A88/STqbPbMFBhm2sfHHNta7IVpoIA/2nnZ3qtroUJTFGWa+Y1KDF41Do=@lists.freedesktop.org X-Gm-Message-State: AOJu0YyWHXTjZgEyGuAb7jj+9UgL+PyGuOoCSwfqCwouEB5vp+O0s3HJ hwStmmNBPhrcfEkTUnYEhXvngsaRwNzF33OJS5Beumi/ylfmaa0LWL8Z0x6XxMv7La0= X-Gm-Gg: Acq92OHSQXt/FZj0soqppTawDXsXNOhEEqgSddsxB/F/T33LGQnPEh1jgK2hzqK5JYM /+gFpHNAogc14brqPtJLl8i9HS6tR8NCqNf5teEwDCW6/P4v04rNkw525G9qOuys09Fbv/Ww9Sn 67gH/IJBXNgZGVzpMkgRmxYWXB0EADHK0xN4BSFnlcC1eQXrdHZWGje35WbJ5tOP51Qk4hHzpBN GTMC9/eUKtbywojgg3FXCbRFC2IYLSrck3N3C4vrotWvDNFjA56vCvLHJeEO259wmWrSrgv20Ir DvXD5TCRtOUJQOFqYoFJKHnONqp22WY7o7fWACcXpr807oOQancorjCv0nlpfFRfcVFHkOGi8Hp LKOg2h+XwKfEPijuZiH9RB5GOwCBQY0FC7/CpzXWPFDg/h1CbCx+0s7+KF+T33Qdv66U4ReKRoM BlQjL6r02dmnu4j4ptU19Q34We9h/0uKUebS38Fw9C4Q/3F+XL/8HH/oag8txnAoxIa5lRwWvuw LioIwfb X-Received: by 2002:a05:7301:6006:b0:2ed:e12:3768 with SMTP id 5a478bee46e88-3011a467cbamr579604eec.30.1778627172190; Tue, 12 May 2026 16:06:12 -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-2f8860ce1bfsm20614401eec.9.2026.05.12.16.06.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2026 16:06:11 -0700 (PDT) From: Andre Jun Hirata To: kenneth.feng@amd.com, alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, gabriel.dimant@usp.br, guilhermesangabriel@usp.br, kevinyang.wang@amd.com, lijo.lazar@amd.com, Andre Jun Hirata Subject: [PATCH v7] drm/amd/pm: Use guard(mutex) instead of manual lock+unlock Date: Tue, 12 May 2026 20:04:54 -0300 Message-ID: <20260512230531.7444-1-andrejhirata@usp.br> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Mailman-Approved-At: Wed, 13 May 2026 07:53:28 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" VXNlIGd1YXJkKCkgYW5kIHNjb3BlZF9ndWFyZCgpIGZvciBoYW5kbGluZyBtdXRleCBsb2NrIGlu c3RlYWQgb2YKbWFudWFsbHkgbG9ja2luZyBhbmQgdW5sb2NraW5nIHRoZSBtdXRleC4gVGhpcyBw cmV2ZW50cyBmb3Jnb3R0ZW4KbG9ja3MgZHVlIHRvIGVhcmx5IGV4aXRzIGFuZCByZW1vdmVzIHRo ZSBuZWVkIG9mIGdvdG9zLgoKU2lnbmVkLW9mZi1ieTogQW5kcmUgSnVuIEhpcmF0YSA8YW5kcmVq aGlyYXRhQHVzcC5icj4KQ28tZGV2ZWxvcGVkLWJ5OiBHYWJyaWVsIERpbWFudCA8Z2FicmllbC5k aW1hbnRAdXNwLmJyPgpTaWduZWQtb2ZmLWJ5OiBHYWJyaWVsIERpbWFudCA8Z2FicmllbC5kaW1h bnRAdXNwLmJyPgpDby1kZXZlbG9wZWQtYnk6IEd1aWxoZXJtZSBHYWJyaWVsIDxndWlsaGVybWVz YW5nYWJyaWVsQHVzcC5icj4KU2lnbmVkLW9mZi1ieTogR3VpbGhlcm1lIEdhYnJpZWwgPGd1aWxo ZXJtZXNhbmdhYnJpZWxAdXNwLmJyPgoKUmV2aWV3ZWQtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNo cmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IFlhbmcgV2FuZyA8a2V2aW55YW5n LndhbmdAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IExpam8gTGF6YXIgPGxpam8ubGF6YXJAYW1kLmNv bT4KLS0tCnYyOiBpbmNvcnBvcmF0ZSBDaHJpc3RpYW4gS8O2bmlnJ3Mgc3VnZ2VzdGlvbnM6CiAg LSB1c2UgcmV0dXJuIGYoKSBkaXJlY3RseSBpbnN0ZWFkIG9mIHJldCA9IGYoKTsgcmV0dXJuIHJl dDsKICAtIHVzZSBlYXJseSByZXR1cm4gcGF0dGVybiBiZWZvcmUgZ3VhcmQoKSB3aGVyZSBhcHBs aWNhYmxlCgp2MzogZml4IHN0eWxlIG5pdHMgcG9pbnRlZCBieSBDaHJpc3RpYW4gS8O2bmlnOgog IC0gZHJvcCBzdXBlcmZsdW91cyByZXQgaW5pdGlhbGl6YXRpb24gaW4gc2V0X2dmeF9wb3dlcl91 cF9ieV9pbXUKICAtIGRyb3AgdW5uZWNlc3NhcnkgYnJhY2VzIGFyb3VuZCBzaW5nbGUtbGluZSBz Y29wZWRfZ3VhcmQKCnY0OgogLSBmaXggYnVpbGQgZXJyb3JzIGludHJvZHVjZWQgaW4gdjMKIC0g Zml4IGluY29ycmVjdCBpc19zdXBwb3J0X3N3X3NtdSgpIGNvbmRpdGlvbgogLSByZW1vdmUgYWNj aWRlbnRhbCAicmV0dXJuID0iIHR5cG9zCgp2NTogZml4IGluY29ycmVjdCBkaWZmIGluIHY0Cgp2 NjogZml4IG1pc3Npbmcgc2VtaWNvbG9uIGluIHNtdV9tb2RlMV9yZXNldF9pc19zdXBwb3J0KCkg cmV0dXJuIHN0YXRlbWVudAoKdjc6IGFkZHJlc3MgTGlqbyBMYXphcidzIHJldmlldyBjb21tZW50 czoKICAgLSB1c2UgZWFybHkgcmV0dXJuIHdoZW4gKCFhZGV2LT5wbS5kcG1fZW5hYmxlZCkgaW4g YWNwaV9ldmVudF9oYW5kbGVyCiAgIC0gZHJvcCB1bm5lY2Vzc2FyeSByZXQgaW5pdCBpbiBhbWRn cHVfcG1fbG9hZF9zbXVfZmlybXdhcmUKICAgLSBjaGVjayBmdW5jdGlvbiBwb2ludGVyIGJlZm9y ZSB0YWtpbmcgbXV0ZXggaW4gc2V0X3NjbGtfb2QgYW5kIHNldF9tY2xrX29kCiAgIC0gcmV0dXJu IGRpcmVjdGx5IGluIGFtZGdwdV9kcG1faXNfY2Nsa19kcG1fc3VwcG9ydGVkCgogZHJpdmVycy9n cHUvZHJtL2FtZC9wbS9hbWRncHVfZHBtLmMgfCA4OTYgKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDI3MiBpbnNlcnRpb25zKCspLCA2MjQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wbS9hbWRncHVfZHBtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYwppbmRleCBmZWFkZjYwNGIuLmIxNGJkMzlj YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wbS9hbWRncHVfZHBtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9wbS9hbWRncHVfZHBtLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNp bmNsdWRlICJhbWRfcGNpZS5oIgogI2luY2x1ZGUgImFtZGdwdV9kaXNwbGF5LmgiCiAjaW5jbHVk ZSAiaHdtZ3IuaCIKKyNpbmNsdWRlIDxsaW51eC9jbGVhbnVwLmg+CiAjaW5jbHVkZSA8bGludXgv cG93ZXJfc3VwcGx5Lmg+CiAjaW5jbHVkZSAiYW1kZ3B1X3NtdS5oIgogCkBAIC00MSwzMyArNDIs MjUgQEAKIGludCBhbWRncHVfZHBtX2dldF9zY2xrKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCBib29sIGxvdykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3Mt PmdldF9zY2xrKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK LQlyZXQgPSBwcF9mdW5jcy0+Z2V0X3NjbGsoKGFkZXYpLT5wb3dlcnBsYXkucHBfaGFuZGxlLAor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3Nj bGsoKGFkZXYpLT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCSBsb3cpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1f Z2V0X21jbGsoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgbG93KQogewogCWNvbnN0 IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNz OwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X21jbGspCiAJCXJldHVybiAw OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRf bWNsaygoYWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5w bS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfbWNsaygoYWRldiktPnBvd2VycGxheS5w cF9oYW5kbGUsCiAJCQkJIGxvdyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0K LQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfcG93ZXJnYXRpbmdfYnlfc211 KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtODAsMTMgKzczLDEyIEBAIGludCBhbWRn cHVfZHBtX3NldF9wb3dlcmdhdGluZ19ieV9zbXUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CiAJZW51bSBpcF9wb3dlcl9zdGF0ZSBwd3Jfc3RhdGUgPSBnYXRlID8gUE9XRVJfU1RBVEVfT0ZG IDogUE9XRVJfU1RBVEVfT047CiAJYm9vbCBpc192Y24gPSBibG9ja190eXBlID09IEFNRF9JUF9C TE9DS19UWVBFX1ZDTjsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQorCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCWlmIChhdG9taWNfcmVhZCgmYWRldi0+cG0ucHdy X3N0YXRlW2Jsb2NrX3R5cGVdKSA9PSBwd3Jfc3RhdGUgJiYKIAkJCSghaXNfdmNuIHx8IGFkZXYt PnZjbi5udW1fdmNuX2luc3QgPT0gMSkpIHsKIAkJZGV2X2RiZyhhZGV2LT5kZXYsICJJUCBibG9j ayVkIGFscmVhZHkgaW4gdGhlIHRhcmdldCAlcyBzdGF0ZSEiLAogCQkJCWJsb2NrX3R5cGUsIGdh dGUgPyAiZ2F0ZSIgOiAidW5nYXRlIik7Ci0JCWdvdG8gb3V0X3VubG9jazsKKwkJcmV0dXJuIHJl dDsKIAl9CiAKIAlzd2l0Y2ggKGJsb2NrX3R5cGUpIHsKQEAgLTExNSwyMCArMTA3LDE2IEBAIGlu dCBhbWRncHVfZHBtX3NldF9wb3dlcmdhdGluZ19ieV9zbXUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiAJaWYgKCFyZXQpCiAJCWF0b21pY19zZXQoJmFkZXYtPnBtLnB3cl9zdGF0ZVtibG9j a190eXBlXSwgcHdyX3N0YXRlKTsKIAotb3V0X3VubG9jazoKLQltdXRleF91bmxvY2soJmFkZXYt PnBtLm11dGV4KTsKLQogCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9nZnhf cG93ZXJfdXBfYnlfaW11KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBz bXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0g LUVPUE5PVFNVUFA7CisJaW50IHJldDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK LQlyZXQgPSBzbXVfc2V0X2dmeF9wb3dlcl91cF9ieV9pbXUoc211KTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKKwlzY29wZWRfZ3VhcmQobXV0ZXgsICZhZGV2LT5wbS5tdXRleCkK KwkJcmV0ID0gc211X3NldF9nZnhfcG93ZXJfdXBfYnlfaW11KHNtdSk7CiAKIAltc2xlZXAoMTAp OwogCkBAIC0xMzksNDQgKzEyNywzMSBAQCBpbnQgYW1kZ3B1X2RwbV9iYWNvX2VudGVyKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwogCXZvaWQgKnBwX2hhbmRsZSA9IGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNz IHx8ICFwcF9mdW5jcy0+c2V0X2FzaWNfYmFjb19zdGF0ZSkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KKwlndWFyZChtdXRleCkoJmFkZXYtPnBt Lm11dGV4KTsKIAkvKiBlbnRlciBCQUNPIHN0YXRlICovCi0JcmV0ID0gcHBfZnVuY3MtPnNldF9h c2ljX2JhY29fc3RhdGUocHBfaGFuZGxlLCAxKTsKLQotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9hc2ljX2JhY29f c3RhdGUocHBfaGFuZGxlLCAxKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fYmFjb19leGl0KHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwogCXZvaWQgKnBwX2hhbmRsZSA9IGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNz IHx8ICFwcF9mdW5jcy0+c2V0X2FzaWNfYmFjb19zdGF0ZSkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KKwlndWFyZChtdXRleCkoJmFkZXYtPnBt Lm11dGV4KTsKIAkvKiBleGl0IEJBQ08gc3RhdGUgKi8KLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2Fz aWNfYmFjb19zdGF0ZShwcF9oYW5kbGUsIDApOwotCi0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCXJldHVybiBwcF9mdW5jcy0+c2V0X2FzaWNfYmFjb19z dGF0ZShwcF9oYW5kbGUsIDApOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfbXAxX3N0YXRlKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgICBlbnVtIHBwX21wMV9zdGF0ZSBtcDFf c3RhdGUpCiB7Ci0JaW50IHJldCA9IDA7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBf ZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAKIAlpZiAobXAxX3N0YXRlID09IFBQ X01QMV9TVEFURV9GTFIpIHsKQEAgLTE4NCwyMyArMTU5LDE5IEBAIGludCBhbWRncHVfZHBtX3Nl dF9tcDFfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCWlmIChhbWRncHVfc3Jp b3ZfdmYoYWRldikpCiAJCQlhZGV2LT5wbS5kcG1fZW5hYmxlZCA9IGZhbHNlOwogCX0gZWxzZSBp ZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnNldF9tcDFfc3RhdGUpIHsKLQkJbXV0ZXhfbG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCi0JCXJldCA9IHBwX2Z1bmNzLT5zZXRfbXAxX3N0YXRlKAorCQln dWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwkJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfbXAx X3N0YXRlKAogCQkJCWFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJbXAxX3N0YXRlKTsK LQotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKIAl9CiAKLQlyZXR1cm4gcmV0Owor CXJldHVybiAwOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9pc19iYWNvX3N1cHBvcnRlZChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQ7CiAKIAlpZiAoIXBwX2Z1bmNzIHx8ICFw cF9mdW5jcy0+Z2V0X2FzaWNfYmFjb19jYXBhYmlsaXR5KQogCQlyZXR1cm4gMDsKQEAgLTIxNiw0 OSArMTg3LDMyIEBAIGludCBhbWRncHVfZHBtX2lzX2JhY29fc3VwcG9ydGVkKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogCWlmIChhZGV2LT5pbl9zMykKIAkJcmV0dXJuIDA7CiAKLQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2FzaWNfYmFj b19jYXBhYmlsaXR5KHBwX2hhbmRsZSk7Ci0KLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0 dXJuIHBwX2Z1bmNzLT5nZXRfYXNpY19iYWNvX2NhcGFiaWxpdHkocHBfaGFuZGxlKTsKIH0KIAog aW50IGFtZGdwdV9kcG1fbW9kZTJfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7 CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXku cHBfZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsK LQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5hc2ljX3Jlc2V0 X21vZGVfMikKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0KLQlyZXQgPSBwcF9mdW5jcy0+YXNpY19yZXNldF9tb2RlXzIocHBfaGFuZGxlKTsKLQot CW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmFzaWNfcmVzZXRfbW9k ZV8yKHBwX2hhbmRsZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX2VuYWJsZV9nZnhfZmVhdHVyZXMo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5j cyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxl ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBf ZnVuY3MgfHwgIXBwX2Z1bmNzLT5hc2ljX3Jlc2V0X2VuYWJsZV9nZnhfZmVhdHVyZXMpCiAJCXJl dHVybiAtRU5PRU5UOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0ID0g cHBfZnVuY3MtPmFzaWNfcmVzZXRfZW5hYmxlX2dmeF9mZWF0dXJlcyhwcF9oYW5kbGUpOwotCi0J bXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+YXNpY19yZXNldF9lbmFi bGVfZ2Z4X2ZlYXR1cmVzKHBwX2hhbmRsZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX2JhY29fcmVz ZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC0yNzAsNzUgKzIyNCw2MCBAQCBpbnQg YW1kZ3B1X2RwbV9iYWNvX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCWlmICgh cHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKQogCQlyZXR1cm4gLUVO T0VOVDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKIAogCS8qIGVudGVyIEJBQ08gc3RhdGUgKi8KIAlyZXQgPSBwcF9mdW5j cy0+c2V0X2FzaWNfYmFjb19zdGF0ZShwcF9oYW5kbGUsIDEpOwogCWlmIChyZXQpCi0JCWdvdG8g b3V0OworCQlyZXR1cm4gcmV0OwogCiAJLyogZXhpdCBCQUNPIHN0YXRlICovCiAJcmV0ID0gcHBf ZnVuY3MtPnNldF9hc2ljX2JhY29fc3RhdGUocHBfaGFuZGxlLCAwKTsKLQotb3V0OgotCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCXJldHVybiByZXQ7CiB9CiAKIGJvb2wgYW1kZ3B1 X2RwbV9pc19tb2RlMV9yZXNldF9zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl OwotCWJvb2wgc3VwcG9ydF9tb2RlMV9yZXNldCA9IGZhbHNlOwogCi0JaWYgKGlzX3N1cHBvcnRf c3dfc211KGFkZXYpKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJc3VwcG9y dF9tb2RlMV9yZXNldCA9IHNtdV9tb2RlMV9yZXNldF9pc19zdXBwb3J0KHNtdSk7Ci0JCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFk ZXYpKQorCQlyZXR1cm4gZmFsc2U7CiAKLQlyZXR1cm4gc3VwcG9ydF9tb2RlMV9yZXNldDsKKwln dWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X21vZGUxX3Jlc2V0X2lz X3N1cHBvcnQoc211KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fbW9kZTFfcmVzZXQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKIAotCWlmIChpc19z dXBwb3J0X3N3X3NtdShhZGV2KSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0J CXJldCA9IHNtdV9tb2RlMV9yZXNldChzbXUpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQl9CisJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKKwkJcmV0dXJuIC1FT1BO T1RTVVBQOwogCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsK KwlyZXR1cm4gc211X21vZGUxX3Jlc2V0KHNtdSk7CiB9CiAKIGJvb2wgYW1kZ3B1X2RwbV9pc19s aW5rX3Jlc2V0X3N1cHBvcnRlZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1 Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JYm9vbCBz dXBwb3J0X2xpbmtfcmVzZXQgPSBmYWxzZTsKIAotCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2 KSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXN1cHBvcnRfbGlua19yZXNl dCA9IHNtdV9saW5rX3Jlc2V0X2lzX3N1cHBvcnQoc211KTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JfQorCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJldHVy 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 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTQ4Miw4NSArMzk3LDcyIEBAIGludCBhbWRncHVf ZHBtX3NtdV9pMmNfYnVzX2FjY2VzcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAl2b2lk ICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCWNvbnN0IHN0cnVjdCBh bWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0KIAkJCWFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlp bnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnNtdV9p MmNfYnVzX2FjY2VzcykgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9 IHBwX2Z1bmNzLT5zbXVfaTJjX2J1c19hY2Nlc3MocHBfaGFuZGxlLAotCQkJCQkJICAgYWNxdWly ZSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNz IHx8ICFwcF9mdW5jcy0+c211X2kyY19idXNfYWNjZXNzKQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7 CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBwcF9mdW5jcy0+c211X2kyY19idXNfYWNjZXNzKHBwX2hhbmRsZSwKKwkJCQkJCSAgIGFjcXVp cmUpOwogfQogCiB2b2lkIGFtZGdwdV9wbV9hY3BpX2V2ZW50X2hhbmRsZXIoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiB7Ci0JaWYgKGFkZXYtPnBtLmRwbV9lbmFibGVkKSB7Ci0JCW11dGV4 X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJaWYgKHBvd2VyX3N1cHBseV9pc19zeXN0ZW1fc3Vw cGxpZWQoKSA+IDApCi0JCQlhZGV2LT5wbS5hY19wb3dlciA9IHRydWU7Ci0JCWVsc2UKLQkJCWFk ZXYtPnBtLmFjX3Bvd2VyID0gZmFsc2U7CisJaWYgKCFhZGV2LT5wbS5kcG1fZW5hYmxlZCkKKwkJ cmV0dXJuOwogCi0JCWlmIChhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3MgJiYKLQkJICAgIGFkZXYt PnBvd2VycGxheS5wcF9mdW5jcy0+ZW5hYmxlX2JhcG0pCi0JCQlhbWRncHVfZHBtX2VuYWJsZV9i YXBtKGFkZXYsIGFkZXYtPnBtLmFjX3Bvd2VyKTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKKwlpZiAocG93ZXJfc3VwcGx5X2lzX3N5c3RlbV9zdXBwbGllZCgpID4gMCkKKwkJYWRl di0+cG0uYWNfcG93ZXIgPSB0cnVlOworCWVsc2UKKwkJYWRldi0+cG0uYWNfcG93ZXIgPSBmYWxz ZTsKIAotCQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCi0JCQlzbXVfc2V0X2FjX2RjKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOworCWlmIChhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3Mg JiYKKwkgICAgYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5lbmFibGVfYmFwbSkKKwkJYW1kZ3B1 X2RwbV9lbmFibGVfYmFwbShhZGV2LCBhZGV2LT5wbS5hY19wb3dlcik7CiAKLQkJbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkK KwkJc211X3NldF9hY19kYyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKIH0KIAogaW50IGFt ZGdwdV9kcG1fcmVhZF9zZW5zb3Ioc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGVudW0gYW1k X3BwX3NlbnNvcnMgc2Vuc29yLAogCQkJICAgdm9pZCAqZGF0YSwgdWludDMyX3QgKnNpemUpCiB7 CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXku cHBfZnVuY3M7Ci0JaW50IHJldCA9IC1FSU5WQUw7CiAKIAlpZiAoIWRhdGEgfHwgIXNpemUpCiAJ CXJldHVybiAtRUlOVkFMOwogCi0JaWYgKHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5yZWFkX3NlbnNv cikgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5y ZWFkX3NlbnNvcihhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWlmICghcHBfZnVuY3MgfHwg IXBwX2Z1bmNzLT5yZWFkX3NlbnNvcikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnJlYWRfc2Vuc29yKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICBzZW5zb3IsCiAJCQkJCSAgICBkYXRhLAog CQkJCQkgICAgc2l6ZSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KLQot CXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9hcHVfdGhlcm1hbF9saW1pdChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgKmxpbWl0KQogewogCWNvbnN0IHN0 cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwot CWludCByZXQgPSAtRU9QTk9UU1VQUDsKIAotCWlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+Z2V0 X2FwdV90aGVybWFsX2xpbWl0KSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJ cmV0ID0gcHBfZnVuY3MtPmdldF9hcHVfdGhlcm1hbF9saW1pdChhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLCBsaW1pdCk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlp ZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+Z2V0X2FwdV90aGVybWFsX2xpbWl0KQorCQlyZXR1 cm4gLUVPUE5PVFNVUFA7CiAKLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0u bXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2FwdV90aGVybWFsX2xpbWl0KGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUsIGxpbWl0KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X2FwdV90 aGVybWFsX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCBsaW1pdCkK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAKLQlpZiAocHBfZnVuY3MgJiYg cHBfZnVuY3MtPnNldF9hcHVfdGhlcm1hbF9saW1pdCkgewotCQltdXRleF9sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5zZXRfYXB1X3RoZXJtYWxfbGltaXQoYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwgbGltaXQpOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnNldF9hcHVfdGhlcm1hbF9s aW1pdCkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9hcHVfdGhlcm1hbF9s aW1pdChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBsaW1pdCk7CiB9CiAKIHZvaWQgYW1kZ3B1 X2RwbV9jb21wdXRlX2Nsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTU4Myw5 ICs0ODUsOCBAQCB2b2lkIGFtZGdwdV9kcG1fY29tcHV0ZV9jbG9ja3Moc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiAJCQlhbWRncHVfZmVuY2Vfd2FpdF9lbXB0eShyaW5nKTsKIAl9CiAKLQlt dXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CiAJcHBfZnVuY3MtPnBtX2NvbXB1dGVfY2xvY2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogfQogCiB2b2lkIGFtZGdwdV9k cG1fZW5hYmxlX3V2ZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBlbmFibGUpCkBA IC01OTMsMTQgKzQ5NCwxNCBAQCB2b2lkIGFtZGdwdV9kcG1fZW5hYmxlX3V2ZChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwgYm9vbCBlbmFibGUpCiAJaW50IHJldCA9IDA7CiAKIAlpZiAoYWRl di0+ZmFtaWx5ID09IEFNREdQVV9GQU1JTFlfU0kpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCQlpZiAoZW5hYmxlKSB7Ci0JCQlhZGV2LT5wbS5kcG0udXZkX2FjdGl2ZSA9IHRy dWU7Ci0JCQlhZGV2LT5wbS5kcG0uc3RhdGUgPSBQT1dFUl9TVEFURV9UWVBFX0lOVEVSTkFMX1VW RDsKLQkJfSBlbHNlIHsKLQkJCWFkZXYtPnBtLmRwbS51dmRfYWN0aXZlID0gZmFsc2U7CisJCXNj b3BlZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KSB7CisJCQlpZiAoZW5hYmxlKSB7CisJ CQkJYWRldi0+cG0uZHBtLnV2ZF9hY3RpdmUgPSB0cnVlOworCQkJCWFkZXYtPnBtLmRwbS5zdGF0 ZSA9IFBPV0VSX1NUQVRFX1RZUEVfSU5URVJOQUxfVVZEOworCQkJfSBlbHNlIHsKKwkJCQlhZGV2 LT5wbS5kcG0udXZkX2FjdGl2ZSA9IGZhbHNlOworCQkJfQogCQl9Ci0JCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwogCiAJCWFtZGdwdV9kcG1fY29tcHV0ZV9jbG9ja3MoYWRldik7CiAJ CXJldHVybjsKQEAgLTYyNywxNSArNTI4LDE1IEBAIHZvaWQgYW1kZ3B1X2RwbV9lbmFibGVfdmNl KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIAlpbnQgcmV0ID0gMDsK IAogCWlmIChhZGV2LT5mYW1pbHkgPT0gQU1ER1BVX0ZBTUlMWV9TSSkgewotCQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JCWlmIChlbmFibGUpIHsKLQkJCWFkZXYtPnBtLmRwbS52Y2Vf YWN0aXZlID0gdHJ1ZTsKLQkJCS8qIFhYWCBzZWxlY3QgdmNlIGxldmVsIGJhc2VkIG9uIHJpbmcv dGFzayAqLwotCQkJYWRldi0+cG0uZHBtLnZjZV9sZXZlbCA9IEFNRF9WQ0VfTEVWRUxfQUNfQUxM OwotCQl9IGVsc2UgewotCQkJYWRldi0+cG0uZHBtLnZjZV9hY3RpdmUgPSBmYWxzZTsKKwkJc2Nv cGVkX2d1YXJkKG11dGV4LCAmYWRldi0+cG0ubXV0ZXgpIHsKKwkJCWlmIChlbmFibGUpIHsKKwkJ CQlhZGV2LT5wbS5kcG0udmNlX2FjdGl2ZSA9IHRydWU7CisJCQkJLyogWFhYIHNlbGVjdCB2Y2Ug bGV2ZWwgYmFzZWQgb24gcmluZy90YXNrICovCisJCQkJYWRldi0+cG0uZHBtLnZjZV9sZXZlbCA9 IEFNRF9WQ0VfTEVWRUxfQUNfQUxMOworCQkJfSBlbHNlIHsKKwkJCQlhZGV2LT5wbS5kcG0udmNl X2FjdGl2ZSA9IGZhbHNlOworCQkJfQogCQl9Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0 ZXgpOwogCiAJCWFtZGdwdV9kcG1fY29tcHV0ZV9jbG9ja3MoYWRldik7CiAJCXJldHVybjsKQEAg LTY3MCw4NCArNTcxLDY2IEBAIHZvaWQgYW1kZ3B1X2RwbV9lbmFibGVfdnBlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIGludCBhbWRncHVfcG1fbG9hZF9zbXVfZmly bXdhcmUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90ICpzbXVfdmVyc2lvbikK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgciA9IDA7CisJaW50IHJldDsKIAogCWlmICghcHBfZnVuY3MgfHwg IXBwX2Z1bmNzLT5sb2FkX2Zpcm13YXJlIHx8CiAJICAgIChpc19zdXBwb3J0X3N3X3NtdShhZGV2 KSAmJiAoYWRldi0+ZmxhZ3MgJiBBTURfSVNfQVBVKSkpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhf bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXIgPSBwcF9mdW5jcy0+bG9hZF9maXJtd2FyZShhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKLQlpZiAocikgeworCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOworCXJldCA9IHBwX2Z1bmNzLT5sb2FkX2Zpcm13YXJlKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUpOworCWlmIChyZXQpIHsKIAkJcHJfZXJyKCJzbXUgZmlybXdhcmUgbG9hZGlu ZyBmYWlsZWRcbiIpOwotCQlnb3RvIG91dDsKKwkJcmV0dXJuIHJldDsKIAl9CiAKIAlpZiAoc211 X3ZlcnNpb24pCiAJCSpzbXVfdmVyc2lvbiA9IGFkZXYtPnBtLmZ3X3ZlcnNpb247CiAKLW91dDoK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXR1cm4gcjsKKwlyZXR1cm4gcmV0 OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9oYW5kbGVfcGFzc3Rocm91Z2hfc2JyKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIHsKLQlpbnQgcmV0ID0gMDsKKwlpZiAoIWlz X3N1cHBvcnRfc3dfc211KGFkZXYpKQorCQlyZXR1cm4gMDsKIAotCWlmIChpc19zdXBwb3J0X3N3 X3NtdShhZGV2KSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHNt dV9oYW5kbGVfcGFzc3Rocm91Z2hfc2JyKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9oYW5kbGVfcGFzc3Rocm91 Z2hfc2JyKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgZW5hYmxlKTsKLQkJbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50 IGFtZGdwdV9kcG1fc2VuZF9oYm1fYmFkX3BhZ2VzX251bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwgdWludDMyX3Qgc2l6ZSkKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRf c3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3NlbmRfaGJtX2JhZF9wYWdlc19udW0oc211LCBzaXpl KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9zZW5kX2hibV9iYWRfcGFn ZXNfbnVtKHNtdSwgc2l6ZSk7CiB9CiAKIGludCBhbWRncHVfZHBtX3NlbmRfaGJtX2JhZF9jaGFu bmVsX2ZsYWcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHNpemUpCiB7CiAJ c3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWlu dCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1F T1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9z ZW5kX2hibV9iYWRfY2hhbm5lbF9mbGFnKHNtdSwgc2l6ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0 ZXgpOworCXJldHVybiBzbXVfc2VuZF9oYm1fYmFkX2NoYW5uZWxfZmxhZyhzbXUsIHNpemUpOwog fQogCiBpbnQgYW1kZ3B1X2RwbV9zZW5kX3JtYV9yZWFzb24oc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlOwotCWludCByZXQ7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQly ZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0 ID0gc211X3NlbmRfcm1hX3JlYXNvbihzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gc211X3NlbmRfcm1hX3JlYXNvbihzbXUpOwogfQogCiAvKioKQEAgLTc2MSw2MSArNjQ0 LDQ1IEBAIGludCBhbWRncHVfZHBtX3NlbmRfcm1hX3JlYXNvbihzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldikKIGJvb2wgYW1kZ3B1X2RwbV9yZXNldF9zZG1hX2lzX3N1cHBvcnRlZChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JYm9vbCByZXQ7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3df c211KGFkZXYpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0JcmV0ID0gc211X3Jlc2V0X3NkbWFfaXNfc3VwcG9ydGVkKHNtdSk7Ci0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRl di0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfcmVzZXRfc2RtYV9pc19zdXBwb3J0ZWQoc211KTsK IH0KIAogaW50IGFtZGdwdV9kcG1fcmVzZXRfc2RtYShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgdWludDMyX3QgaW5zdF9tYXNrKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0OwogCiAJaWYgKCFpc19zdXBwb3J0X3N3 X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+ cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9yZXNldF9zZG1hKHNtdSwgaW5zdF9tYXNrKTsKLQltdXRl eF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgp KCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9yZXNldF9zZG1hKHNtdSwgaW5zdF9tYXNr KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fcmVzZXRfdmNuKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCB1aW50MzJfdCBpbnN0X21hc2spCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQ7CiAKIAlpZiAoIWlzX3N1cHBvcnRf c3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3Jlc2V0X3ZjbihzbXUsIGluc3RfbWFzayk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfcmVzZXRfdmNuKHNtdSwgaW5zdF9tYXNr KTsKIH0KIAogYm9vbCBhbWRncHVfZHBtX3Jlc2V0X3Zjbl9pc19zdXBwb3J0ZWQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlOwotCWJvb2wgcmV0OwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3Nt dShhZGV2KSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHNtdV9yZXNldF92Y25faXNfc3VwcG9ydGVkKHNtdSk7Ci0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOworCXJldHVybiBzbXVfcmVzZXRfdmNuX2lzX3N1cHBvcnRlZChzbXUpOwogfQog CiBpbnQgYW1kZ3B1X2RwbV9nZXRfZHBtX2ZyZXFfcmFuZ2Uoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCkBAIC04MjMsMjIgKzY5MCwxNyBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRfZHBtX2ZyZXFf cmFuZ2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICB1aW50MzJfdCAqbWluLAog CQkJCSAgdWludDMyX3QgKm1heCkKIHsKLQlpbnQgcmV0ID0gMDsKLQogCWlmICh0eXBlICE9IFBQ X1NDTEspCiAJCXJldHVybiAtRUlOVkFMOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2 KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHNtdV9nZXRfZHBtX2ZyZXFfcmFuZ2UoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X2dldF9kcG1f ZnJlcV9yYW5nZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCSAgICAgU01VX1NDTEss CiAJCQkJICAgICBtaW4sCiAJCQkJICAgICBtYXgpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3NvZnRfZnJl cV9yYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTg2MiwxNiArNzI0LDEyIEBA IGludCBhbWRncHVfZHBtX3NldF9zb2Z0X2ZyZXFfcmFuZ2Uoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiBpbnQgYW1kZ3B1X2RwbV93cml0ZV93YXRlcm1hcmtzX3RhYmxlKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19z bXUoYWRldikpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwot CXJldCA9IHNtdV93cml0ZV93YXRlcm1hcmtzX3RhYmxlKHNtdSk7Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0u bXV0ZXgpOworCXJldHVybiBzbXVfd3JpdGVfd2F0ZXJtYXJrc190YWJsZShzbXUpOwogfQogCiBp bnQgYW1kZ3B1X2RwbV93YWl0X2Zvcl9ldmVudChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK QEAgLTg3OSw3NiArNzM3LDU2IEBAIGludCBhbWRncHVfZHBtX3dhaXRfZm9yX2V2ZW50KHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJICAgICAgdWludDY0X3QgZXZlbnRfYXJnKQogewog CXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlp bnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAt RU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVf d2FpdF9mb3JfZXZlbnQoc211LCBldmVudCwgZXZlbnRfYXJnKTsKLQltdXRleF91bmxvY2soJmFk ZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5t dXRleCk7CisJcmV0dXJuIHNtdV93YWl0X2Zvcl9ldmVudChzbXUsIGV2ZW50LCBldmVudF9hcmcp OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfcmVzaWRlbmN5X2dmeG9mZihzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgYm9vbCB2YWx1ZSkKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9 IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1 cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3NldF9yZXNpZGVuY3lfZ2Z4b2ZmKHNtdSwg dmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3NldF9yZXNpZGVu Y3lfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfcmVzaWRlbmN5 X2dmeG9mZihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTMyICp2YWx1ZSkKIHsKIAlzdHJ1 Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJl dCA9IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5P VFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X2dldF9y ZXNpZGVuY3lfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gc211X2dldF9yZXNpZGVuY3lfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwogfQogCiBpbnQgYW1k Z3B1X2RwbV9nZXRfZW50cnljb3VudF9nZnhvZmYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs IHU2NCAqdmFsdWUpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShh ZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCXJldCA9IHNtdV9nZXRfZW50cnljb3VudF9nZnhvZmYoc211LCB2YWx1ZSk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfZ2V0X2VudHJ5Y291bnRfZ2Z4b2ZmKHNt dSwgdmFsdWUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfc3RhdHVzX2dmeG9mZihzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgKnZhbHVlKQogewogCXN0cnVjdCBzbXVfY29u dGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAog CWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfZ2V0X3N0YXR1c19nZnhv ZmYoc211LCB2YWx1ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1 cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfZ2V0 X3N0YXR1c19nZnhvZmYoc211LCB2YWx1ZSk7CiB9CiAKIHVpbnQ2NF90IGFtZGdwdV9kcG1fZ2V0 X3RoZXJtYWxfdGhyb3R0bGluZ19jb3VudGVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQpA QCAtOTY5LDI4ICs4MDcsMjMgQEAgdWludDY0X3QgYW1kZ3B1X2RwbV9nZXRfdGhlcm1hbF90aHJv dHRsaW5nX2NvdW50ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB2b2lkIGFtZGdwdV9k cG1fZ2Z4X3N0YXRlX2NoYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgZW51 bSBnZnhfY2hhbmdlX3N0YXRlIHN0YXRlKQogewotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlpZiAoYWRldi0+cG93ZXJwbGF5 LnBwX2Z1bmNzICYmCiAJICAgIGFkZXYtPnBvd2VycGxheS5wcF9mdW5jcy0+Z2Z4X3N0YXRlX2No YW5nZV9zZXQpCiAJCSgoYWRldiktPnBvd2VycGxheS5wcF9mdW5jcy0+Z2Z4X3N0YXRlX2NoYW5n ZV9zZXQoCiAJCQkoYWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUsIHN0YXRlKSk7Ci0JbXV0ZXhf dW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9lY2NfaW5m byhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgICB2b2lkICp1bWNfZWNjKQogewog CXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlp bnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAt RU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVf Z2V0X2VjY19pbmZvKHNtdSwgdW1jX2VjYyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJl dHVybiBzbXVfZ2V0X2VjY19pbmZvKHNtdSwgdW1jX2VjYyk7CiB9CiAKIHN0cnVjdCBhbWRfdmNl X3N0YXRlICphbWRncHVfZHBtX2dldF92Y2VfY2xvY2tfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCkBAIC0xMDAyLDEyICs4MzUsOSBAQCBzdHJ1Y3QgYW1kX3ZjZV9zdGF0ZSAqYW1k Z3B1X2RwbV9nZXRfdmNlX2Nsb2NrX3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CWlmICghcHBfZnVuY3MtPmdldF92Y2VfY2xvY2tfc3RhdGUpCiAJCXJldHVybiBOVUxMOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXZzdGF0ZSA9IHBwX2Z1bmNzLT5nZXRfdmNl X2Nsb2NrX3N0YXRlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZh ZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfdmNlX2Nsb2NrX3N0YXRlKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgICBpZHgpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHZzdGF0ZTsKIH0KIAogdm9pZCBhbWRncHVf ZHBtX2dldF9jdXJyZW50X3Bvd2VyX3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApA QCAtMTAxNSwyOCArODQ1LDI0IEBAIHZvaWQgYW1kZ3B1X2RwbV9nZXRfY3VycmVudF9wb3dlcl9z dGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3Bt X2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAog CWlmICghcHBfZnVuY3MtPmdldF9jdXJyZW50X3Bvd2VyX3N0YXRlKSB7CiAJCSpzdGF0ZSA9IGFk ZXYtPnBtLmRwbS51c2VyX3N0YXRlOwotCQlnb3RvIG91dDsKKwkJcmV0dXJuOwogCX0KIAogCSpz dGF0ZSA9IHBwX2Z1bmNzLT5nZXRfY3VycmVudF9wb3dlcl9zdGF0ZShhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlKTsKIAlpZiAoKnN0YXRlIDwgUE9XRVJfU1RBVEVfVFlQRV9ERUZBVUxUIHx8CiAJ ICAgICpzdGF0ZSA+IFBPV0VSX1NUQVRFX1RZUEVfSU5URVJOQUxfM0RQRVJGKQogCQkqc3RhdGUg PSBhZGV2LT5wbS5kcG0udXNlcl9zdGF0ZTsKLQotb3V0OgotCW11dGV4X3VubG9jaygmYWRldi0+ cG0ubXV0ZXgpOwogfQogCiB2b2lkIGFtZGdwdV9kcG1fc2V0X3Bvd2VyX3N0YXRlKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAogCQkJCWVudW0gYW1kX3BtX3N0YXRlX3R5cGUgc3RhdGUpCiB7 Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCWFkZXYtPnBtLmRwbS51c2VyX3N0YXRl ID0gc3RhdGU7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJc2NvcGVkX2d1YXJk KG11dGV4LCAmYWRldi0+cG0ubXV0ZXgpCisJCWFkZXYtPnBtLmRwbS51c2VyX3N0YXRlID0gc3Rh dGU7CiAKIAlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybjsKQEAgLTEwNTUs MTIgKzg4MSwxMSBAQCBlbnVtIGFtZF9kcG1fZm9yY2VkX2xldmVsIGFtZGdwdV9kcG1fZ2V0X3Bl cmZvcm1hbmNlX2xldmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlCiAJaWYgKCFwcF9mdW5jcykKIAkJ cmV0dXJuIEFNRF9EUE1fRk9SQ0VEX0xFVkVMX0FVVE87CiAKLQltdXRleF9sb2NrKCZhZGV2LT5w bS5tdXRleCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJaWYgKHBwX2Z1bmNz LT5nZXRfcGVyZm9ybWFuY2VfbGV2ZWwpCiAJCWxldmVsID0gcHBfZnVuY3MtPmdldF9wZXJmb3Jt YW5jZV9sZXZlbChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKIAllbHNlCiAJCWxldmVsID0g YWRldi0+cG0uZHBtLmZvcmNlZF9sZXZlbDsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4 KTsKIAogCXJldHVybiBsZXZlbDsKIH0KQEAgLTExNTEsMTcgKzk3NiwxMyBAQCBpbnQgYW1kZ3B1 X2RwbV9nZXRfcHBfbnVtX3N0YXRlcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkg c3RydWN0IHBwX3N0YXRlc19pbmZvICpzdGF0ZXMpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9m dW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7 CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfcHBfbnVtX3N0YXRlcykKIAkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5n ZXRfcHBfbnVtX3N0YXRlcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3BwX251bV9zdGF0ZXMo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICBzdGF0ZXMpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1f ZGlzcGF0Y2hfdGFzayhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTExNjksMjQgKzk5 MCwxOSBAQCBpbnQgYW1kZ3B1X2RwbV9kaXNwYXRjaF90YXNrKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogCQkJICAgICAgZW51bSBhbWRfcG1fc3RhdGVfdHlwZSAqdXNlcl9zdGF0ZSkKIHsK IAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5w cF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmRpc3BhdGNoX3Rhc2tz KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0JcmV0ID0gcHBfZnVuY3MtPmRpc3BhdGNoX3Rhc2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5k aXNwYXRjaF90YXNrcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCSAgICAgICB0YXNr X2lkLAogCQkJCSAgICAgICB1c2VyX3N0YXRlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9wcF90YWJsZShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgY2hhciAqKnRhYmxlKQogewogCWNvbnN0IHN0cnVj dCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWlu dCByZXQgPSAwOwogCiAJaWYgKCF0YWJsZSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xMTk0LDEy ICsxMDEwLDkgQEAgaW50IGFtZGdwdV9kcG1fZ2V0X3BwX3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCBjaGFyICoqdGFibGUpCiAJaWYgKGFtZGdwdV9zcmlvdl92ZihhZGV2KSB8fCAh cHBfZnVuY3MtPmdldF9wcF90YWJsZSB8fCBhZGV2LT5zY3BtX2VuYWJsZWQpCiAJCXJldHVybiAt RU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9m dW5jcy0+Z2V0X3BwX3RhYmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcHBfdGFibGUoYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkgICAgIHRhYmxlKTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3Nl dF9maW5lX2dyYWluX2Nsa192b2woc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xMjA4 LDE5ICsxMDIxLDE1IEBAIGludCBhbWRncHVfZHBtX3NldF9maW5lX2dyYWluX2Nsa192b2woc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICAgICAgdWludDMyX3Qgc2l6ZSkKIHsKIAlj b25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9m dW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9maW5lX2dyYWluX2Ns a192b2wpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJl dCA9IHBwX2Z1bmNzLT5zZXRfZmluZV9ncmFpbl9jbGtfdm9sKGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNz LT5zZXRfZmluZV9ncmFpbl9jbGtfdm9sKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJ CSAgICAgICB0eXBlLAogCQkJCQkgICAgICAgaW5wdXQsCiAJCQkJCSAgICAgICBzaXplKTsKLQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBh bWRncHVfZHBtX29kbl9lZGl0X2RwbV90YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK QEAgLTEyMjksMTkgKzEwMzgsMTUgQEAgaW50IGFtZGdwdV9kcG1fb2RuX2VkaXRfZHBtX3RhYmxl KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgdWludDMyX3Qgc2l6ZSkKIHsKIAlj b25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9m dW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPm9kbl9lZGl0X2RwbV90YWJs ZSkKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0g cHBfZnVuY3MtPm9kbl9lZGl0X2RwbV90YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+b2RuX2Vk aXRfZHBtX3RhYmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgIHR5cGUsCiAJ CQkJCSAgIGlucHV0LAogCQkJCQkgICBzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2VtaXRfY2xvY2tfbGV2 ZWxzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTI1MCw1MiArMTA1NSw0MCBAQCBp bnQgYW1kZ3B1X2RwbV9lbWl0X2Nsb2NrX2xldmVscyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKIAkJCQkgIGludCAqb2Zmc2V0KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYg KCFwcF9mdW5jcy0+ZW1pdF9jbG9ja19sZXZlbHMpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JbXV0 ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5lbWl0X2Nsb2NrX2xl dmVscyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0u bXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+ZW1pdF9jbG9ja19sZXZlbHMoYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgdHlwZSwKIAkJCQkJICAgYnVmLAogCQkJCQkgICBvZmZz ZXQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0K IAogaW50IGFtZGdwdV9kcG1fc2V0X3BwZmVhdHVyZV9zdGF0dXMoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkJICAgIHVpbnQ2NF90IHBwZmVhdHVyZV9tYXNrcykKIHsKIAljb25zdCBz dHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsK LQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9wcGZlYXR1cmVfc3RhdHVzKQog CQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9m dW5jcy0+c2V0X3BwZmVhdHVyZV9zdGF0dXMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwln dWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9wcGZl YXR1cmVfc3RhdHVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgcHBmZWF0 dXJlX21hc2tzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9wcGZlYXR1cmVfc3RhdHVzKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCBjaGFyICpidWYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5j cyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAK IAlpZiAoIXBwX2Z1bmNzLT5nZXRfcHBmZWF0dXJlX3N0YXR1cykKIAkJcmV0dXJuIDA7CiAKLQlt dXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9wcGZlYXR1 cmVfc3RhdHVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcHBmZWF0dXJlX3N0YXR1cyhhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgIGJ1Zik7Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9mb3Jj ZV9jbG9ja19sZXZlbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTEzMDMsMzMgKzEw OTYsMjUgQEAgaW50IGFtZGdwdV9kcG1fZm9yY2VfY2xvY2tfbGV2ZWwoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCiAJCQkJIHVpbnQzMl90IG1hc2spCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9w bV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9 IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5mb3JjZV9jbG9ja19sZXZlbCkKIAkJcmV0dXJuIDA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmZvcmNlX2Ns b2NrX2xldmVsKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5mb3JjZV9jbG9ja19sZXZlbChhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHR5cGUsCiAJCQkJCSAgbWFzayk7Ci0JbXV0ZXhf dW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9nZXRfc2Nsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBz dHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsK LQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9zY2xrX29kKQogCQlyZXR1cm4g LUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBf ZnVuY3MtPmdldF9zY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9zY2xrX29kKGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfc2Nsa19vZChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCkBAIC0xMzM5LDEwICsxMTI0LDEw IEBAIGludCBhbWRncHVfZHBtX3NldF9zY2xrX29kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LCB1aW50MzJfdCB2YWx1ZSkKIAlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVy biAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlpZiAocHBf ZnVuY3MtPnNldF9zY2xrX29kKQotCQlwcF9mdW5jcy0+c2V0X3NjbGtfb2QoYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwor CWlmIChwcF9mdW5jcy0+c2V0X3NjbGtfb2QpIHsKKwkJc2NvcGVkX2d1YXJkKG11dGV4LCAmYWRl di0+cG0ubXV0ZXgpCisJCQlwcF9mdW5jcy0+c2V0X3NjbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZSwgdmFsdWUpOworCX0KIAogCWlmIChhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soYWRl diwKIAkJCQkgICAgIEFNRF9QUF9UQVNLX1JFQURKVVNUX1BPV0VSX1NUQVRFLApAQCAtMTM1Nywx NiArMTE0MiwxMiBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfc2Nsa19vZChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCiBpbnQgYW1kZ3B1X2RwbV9nZXRfbWNsa19vZChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNz ICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAog CWlmICghcHBfZnVuY3MtPmdldF9tY2xrX29kKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlt dXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9tY2xrX29k KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0 ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gcHBfZnVuY3MtPmdldF9tY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwog fQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfbWNsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgdWludDMyX3QgdmFsdWUpCkBAIC0xMzc2LDEwICsxMTU3LDEwIEBAIGludCBhbWRncHVfZHBt X3NldF9tY2xrX29kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCB2YWx1ZSkK IAlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlpZiAocHBfZnVuY3MtPnNldF9tY2xrX29k KQotCQlwcF9mdW5jcy0+c2V0X21jbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdmFs dWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWlmIChwcF9mdW5jcy0+c2V0 X21jbGtfb2QpIHsKKwkJc2NvcGVkX2d1YXJkKG11dGV4LCAmYWRldi0+cG0ubXV0ZXgpCisJCQlw cF9mdW5jcy0+c2V0X21jbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdmFsdWUpOwor CX0KIAogCWlmIChhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soYWRldiwKIAkJCQkgICAgIEFNRF9Q UF9UQVNLX1JFQURKVVNUX1BPV0VSX1NUQVRFLApAQCAtMTM5NSwxNzAgKzExNzYsMTMwIEBAIGlu dCBhbWRncHVfZHBtX2dldF9wb3dlcl9wcm9maWxlX21vZGUoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCiAJCQkJICAgICAgY2hhciAqYnVmKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVu Y3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwog CiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZSkKIAkJcmV0dXJuIC1FT1BO T1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5nZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcG93ZXJf cHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgICBidWYp OwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAog aW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIAkJCQkgICAgICBsb25nICppbnB1dCwgdWludDMyX3Qgc2l6ZSkKIHsKIAljb25z dCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5j czsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9wb3dlcl9wcm9maWxlX21v ZGUpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9 IHBwX2Z1bmNzLT5zZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5z ZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAg ICAgICBpbnB1dCwKIAkJCQkJICAgICAgIHNpemUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2dwdV9tZXRy aWNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB2b2lkICoqdGFibGUpCiB7CiAJY29uc3Qg c3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7 Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZ3B1X21ldHJpY3MpCiAJCXJl dHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5nZXRfZ3B1X21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9ncHVfbWV0cmljcyhh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQl0YWJsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBzc2l6ZV90IGFtZGdwdV9kcG1f Z2V0X3BtX21ldHJpY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHZvaWQgKnBtX21ldHJp Y3MsCiAJCQkJICBzaXplX3Qgc2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpw cF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlm ICghcHBfZnVuY3MtPmdldF9wbV9tZXRyaWNzKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlt dXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9wbV9tZXRy aWNzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHBtX21ldHJpY3MsCisJZ3VhcmQobXV0ZXgp KCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcG1fbWV0cmljcyhhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBwbV9tZXRyaWNzLAogCQkJCSAgICAgICBzaXplKTsKLQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBh bWRncHVfZHBtX2dldF9mYW5fY29udHJvbF9tb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCQkJCSAgICB1aW50MzJfdCAqZmFuX21vZGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9m dW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7 CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZmFuX2NvbnRyb2xfbW9kZSkKIAkJcmV0dXJuIC1FT1BO T1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5nZXRfZmFuX2NvbnRyb2xfbW9kZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2Zhbl9jb250 cm9sX21vZGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgICBmYW5fbW9kZSk7 Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBp bnQgYW1kZ3B1X2RwbV9zZXRfZmFuX3NwZWVkX3B3bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKIAkJCQkgdWludDMyX3Qgc3BlZWQpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAq cHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlp ZiAoIXBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3B3bSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwog Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfZmFu X3NwZWVkX3B3bShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRl di0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X2Zhbl9zcGVlZF9wd20oYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICBzcGVlZCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfZmFu X3NwZWVkX3B3bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgdWludDMyX3QgKnNw ZWVkKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93 ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X2Zh bl9zcGVlZF9wd20pCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYt PnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Zhbl9zcGVlZF9wd20oYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1 cm4gcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcHdtKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CiAJCQkJCSAgc3BlZWQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0 dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Zhbl9zcGVlZF9ycG0oc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJIHVpbnQzMl90ICpzcGVlZCkKIHsKIAljb25zdCBzdHJ1 Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlp bnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcnBtKQogCQlyZXR1 cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0g cHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcnBtKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJ Z3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfZmFu X3NwZWVkX3JwbShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHNwZWVkKTsKLQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBh bWRncHVfZHBtX3NldF9mYW5fc3BlZWRfcnBtKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAog CQkJCSB1aW50MzJfdCBzcGVlZCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICgh cHBfZnVuY3MtPnNldF9mYW5fc3BlZWRfcnBtKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlt dXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPnNldF9mYW5fc3Bl ZWRfcnBtKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5w bS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3JwbShhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHNwZWVkKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9mYW5fY29u dHJvbF9tb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICB1aW50MzJfdCBt b2RlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93 ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X2Zh bl9jb250cm9sX21vZGUpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFk ZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2Zhbl9jb250cm9sX21vZGUoYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsK KwlyZXR1cm4gcHBfZnVuY3MtPnNldF9mYW5fY29udHJvbF9tb2RlKGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUsCiAJCQkJCSAgICAgbW9kZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfcG93ZXJfbGltaXQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xNTY3LDE5ICsxMzA4LDE1IEBAIGludCBh bWRncHVfZHBtX2dldF9wb3dlcl9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJ CSAgICAgICBlbnVtIHBwX3Bvd2VyX3R5cGUgcG93ZXJfdHlwZSkKIHsKIAljb25zdCBzdHJ1Y3Qg YW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQg cmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9wb3dlcl9saW1pdCkKIAkJcmV0dXJuIC1F T1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1 bmNzLT5nZXRfcG93ZXJfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZCht dXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9wb3dlcl9saW1p dChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQlsaW1pdCwKIAkJCQkJcHBfbGltaXRf bGV2ZWwsCiAJCQkJCXBvd2VyX3R5cGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyX2xpbWl0KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTU4NywzMSArMTMyNCwyMiBAQCBpbnQgYW1k Z3B1X2RwbV9zZXRfcG93ZXJfbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkg ICAgICAgdWludDMyX3QgbGltaXQpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBf ZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAo IXBwX2Z1bmNzLT5zZXRfcG93ZXJfbGltaXQpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JbXV0ZXhf bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfcG93ZXJfbGltaXQo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9wb3dlcl9saW1pdChhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLAogCQkJCQlsaW1pdF90eXBlLCBsaW1pdCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9pc19jY2xrX2Rw bV9zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7Ci0JYm9vbCBjY2xrX2Rw bV9zdXBwb3J0ZWQgPSBmYWxzZTsKLQogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJ CXJldHVybiBmYWxzZTsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQljY2xrX2Rw bV9zdXBwb3J0ZWQgPSBpc19zdXBwb3J0X2NjbGtfZHBtKGFkZXYpOwotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIChpbnQpY2Nsa19kcG1fc3VwcG9ydGVkOworCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBpc19zdXBwb3J0X2NjbGtfZHBt KGFkZXYpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9kZWJ1Z2ZzX3ByaW50X2N1cnJlbnRfcGVyZm9y bWFuY2VfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xNjIyLDEwICsxMzUw LDkgQEAgaW50IGFtZGdwdV9kcG1fZGVidWdmc19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xl dmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGUKIAlpZiAoIXBwX2Z1bmNzLT5kZWJ1Z2ZzX3By aW50X2N1cnJlbnRfcGVyZm9ybWFuY2VfbGV2ZWwpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKIAlwcF9mdW5jcy0+ZGVidWdmc19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xldmVs KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJICBtKTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKIAogCXJldHVybiAwOwogfQpAQCAtMTYzNSwxOCArMTM2MiwxNCBA QCBpbnQgYW1kZ3B1X2RwbV9nZXRfc211X3Bydl9idWZfZGV0YWlscyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAkJCQkgICAgICAgc2l6ZV90ICpzaXplKQogewogCWNvbnN0IHN0cnVjdCBh bWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCBy ZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3NtdV9wcnZfYnVmX2RldGFpbHMpCiAJCXJl dHVybiAtRU5PU1lTOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBw X2Z1bmNzLT5nZXRfc211X3Bydl9idWZfZGV0YWlscyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0 X3NtdV9wcnZfYnVmX2RldGFpbHMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCWFk ZHIsCiAJCQkJCQlzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJl dHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2lzX292ZXJkcml2ZV9zdXBwb3J0ZWQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC0xNjk4LDcgKzE0MjEsNiBAQCBpbnQgYW1kZ3B1 X2RwbV9zZXRfcHBfdGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgc2l6 ZV90IHNpemUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2 LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWJ1ZiB8fCAhc2l6 ZSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xNzA2LDEzICsxNDI4LDEwIEBAIGludCBhbWRncHVf ZHBtX3NldF9wcF90YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAoYW1kZ3B1 X3NyaW92X3ZmKGFkZXYpIHx8ICFwcF9mdW5jcy0+c2V0X3BwX3RhYmxlIHx8IGFkZXYtPnNjcG1f ZW5hYmxlZCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfcHBfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVu Y3MtPnNldF9wcF90YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCSAgICAgYnVm LAogCQkJCSAgICAgc2l6ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQly ZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfbnVtX2NwdV9jb3JlcyhzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTE3MzcsMTcgKzE0NTYsMTMgQEAgaW50IGFtZGdwdV9k cG1fZGlzcGxheV9jb25maWd1cmF0aW9uX2NoYW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKIAkJCQkJICAgIGNvbnN0IHN0cnVjdCBhbWRfcHBfZGlzcGxheV9jb25maWd1cmF0aW9uICpp bnB1dCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBv d2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmRpc3Bs YXlfY29uZmlndXJhdGlvbl9jaGFuZ2UpCiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hh bmdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5t dXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICAgIGlucHV0KTsKLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBt X2dldF9jbG9ja19ieV90eXBlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTc1NSwz NSArMTQ3MCwyNyBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKIAkJCQkgc3RydWN0IGFtZF9wcF9jbG9ja3MgKmNsb2NrcykKIHsK IAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5w cF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9jbG9ja19ieV90 eXBlKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQg PSBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5cGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9j bG9ja19ieV90eXBlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgdHlwZSwKIAkJ CQkJICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJu IHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Ns a3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCQlzdHJ1Y3QgYW1kX3BwX3NpbXBs ZV9jbG9ja19pbmZvICpjbG9ja3MpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBf ZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAo IXBwX2Z1bmNzLT5nZXRfZGlzcGxheV9tb2RlX3ZhbGlkYXRpb25fY2xvY2tzKQogCQlyZXR1cm4g MDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0 X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Nsb2NrcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0 X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Nsb2NrcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAogCQkJCQkJCSAgIGNsb2Nrcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0K LQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZV93aXRo X2xhdGVuY3koc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xNzkxLDE4ICsxNDk4LDE0 IEBAIGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlX3dpdGhfbGF0ZW5jeShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICAgICAgc3RydWN0IHBwX2Nsb2NrX2xldmVsc193 aXRoX2xhdGVuY3kgKmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICgh cHBfZnVuY3MtPmdldF9jbG9ja19ieV90eXBlX3dpdGhfbGF0ZW5jeSkKIAkJcmV0dXJuIDA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9jbG9j a19ieV90eXBlX3dpdGhfbGF0ZW5jeShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJk KG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5 X3R5cGVfd2l0aF9sYXRlbmN5KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICAg ICAgdHlwZSwKIAkJCQkJCSAgICAgICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Nsb2NrX2J5 X3R5cGVfd2l0aF92b2x0YWdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTgxMCw2 OSArMTUxMyw1MyBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZV93aXRoX3ZvbHRh Z2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAgICAgIHN0cnVjdCBwcF9jbG9j a19sZXZlbHNfd2l0aF92b2x0YWdlICpjbG9ja3MpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9m dW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7 CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfY2xvY2tfYnlfdHlwZV93aXRoX3ZvbHRhZ2UpCiAJCXJl dHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5nZXRfY2xvY2tfYnlfdHlwZV93aXRoX3ZvbHRhZ2UoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdl dF9jbG9ja19ieV90eXBlX3dpdGhfdm9sdGFnZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAog CQkJCQkJICAgICAgIHR5cGUsCiAJCQkJCQkgICAgICAgY2xvY2tzKTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3Nl dF93YXRlcm1hcmtzX2Zvcl9jbG9ja3NfcmFuZ2VzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCQkJCQkgICAgICAgdm9pZCAqY2xvY2tfcmFuZ2VzKQogewogCWNvbnN0IHN0cnVjdCBhbWRf cG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQg PSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19yYW5nZXMp CiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK LQlyZXQgPSBwcF9mdW5jcy0+c2V0X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19yYW5nZXMoYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gcHBfZnVuY3MtPnNldF93YXRlcm1hcmtzX2Zvcl9jbG9ja3NfcmFuZ2VzKGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJIGNsb2NrX3Jhbmdlcyk7Ci0JbXV0ZXhfdW5sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9k aXNwbGF5X2Nsb2NrX3ZvbHRhZ2VfcmVxdWVzdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK IAkJCQkJICAgICBzdHJ1Y3QgcHBfZGlzcGxheV9jbG9ja19yZXF1ZXN0ICpjbG9jaykKIHsKIAlj b25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9m dW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmRpc3BsYXlfY2xvY2tfdm9s dGFnZV9yZXF1ZXN0KQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmRpc3BsYXlfY2xvY2tfdm9sdGFnZV9yZXF1 ZXN0KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5t dXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5kaXNwbGF5X2Nsb2NrX3ZvbHRhZ2VfcmVxdWVzdChh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkJICAgICAgY2xvY2spOwotCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9k cG1fZ2V0X2N1cnJlbnRfY2xvY2tzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAg c3RydWN0IGFtZF9wcF9jbG9ja19pbmZvICpjbG9ja3MpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9w bV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9 IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfY3VycmVudF9jbG9ja3MpCiAJCXJldHVybiAtRU9Q Tk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5j cy0+Z2V0X2N1cnJlbnRfY2xvY2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfY3VycmVudF9j bG9ja3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgY2xvY2tzKTsKLQltdXRl eF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIHZvaWQgYW1k Z3B1X2RwbV9ub3RpZnlfc211X2VuYWJsZV9wd2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp CkBAIC0xODgyLDQzICsxNTY5LDM0IEBAIHZvaWQgYW1kZ3B1X2RwbV9ub3RpZnlfc211X2VuYWJs ZV9wd2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKCFwcF9mdW5jcy0+bm90aWZ5 X3NtdV9lbmFibGVfcHdlKQogCQlyZXR1cm47CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRl eCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJcHBfZnVuY3MtPm5vdGlmeV9z bXVfZW5hYmxlX3B3ZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKLQltdXRleF91bmxvY2so JmFkZXYtPnBtLm11dGV4KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X2FjdGl2ZV9kaXNwbGF5 X2NvdW50KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQl1aW50MzJfdCBjb3VudCkK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9hY3RpdmVf ZGlzcGxheV9jb3VudCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfYWN0aXZlX2Rpc3BsYXlfY291bnQo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9hY3RpdmVfZGlzcGxheV9jb3VudChhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAogCQkJCQkJIGNvdW50KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9taW5fZGVl cF9zbGVlcF9kY2VmY2xrKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkgIHVpbnQz Ml90IGNsb2NrKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRl di0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ c2V0X21pbl9kZWVwX3NsZWVwX2RjZWZjbGspCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X21pbl9kZWVw X3NsZWVwX2RjZWZjbGsoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCko JmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9taW5fZGVlcF9zbGVlcF9k Y2VmY2xrKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICBjbG9jayk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiB2b2lkIGFt ZGdwdV9kcG1fc2V0X2hhcmRfbWluX2RjZWZjbGtfYnlfZnJlcShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKQEAgLTE5MjksMTAgKzE2MDcsOSBAQCB2b2lkIGFtZGdwdV9kcG1fc2V0X2hhcmRf bWluX2RjZWZjbGtfYnlfZnJlcShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAoIXBw X2Z1bmNzLT5zZXRfaGFyZF9taW5fZGNlZmNsa19ieV9mcmVxKQogCQlyZXR1cm47CiAKLQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7 CiAJcHBfZnVuY3MtPnNldF9oYXJkX21pbl9kY2VmY2xrX2J5X2ZyZXEoYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZSwKIAkJCQkJICAgICAgIGNsb2NrKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKIH0KIAogdm9pZCBhbWRncHVfZHBtX3NldF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xOTQzLDQ0ICsxNjIwLDM1IEBAIHZvaWQg YW1kZ3B1X2RwbV9zZXRfaGFyZF9taW5fZmNsa19ieV9mcmVxKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogCWlmICghcHBfZnVuY3MtPnNldF9oYXJkX21pbl9mY2xrX2J5X2ZyZXEpCiAJCXJl dHVybjsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKIAlwcF9mdW5jcy0+c2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcShhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgY2xvY2spOwotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9kaXNwbGF5X2Rpc2FibGVfbWVt b3J5X2Nsb2NrX3N3aXRjaChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJCSAgIGJv b2wgZGlzYWJsZV9tZW1vcnlfY2xvY2tfc3dpdGNoKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1f ZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAw OwogCiAJaWYgKCFwcF9mdW5jcy0+ZGlzcGxheV9kaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2gp CiAJCXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBw X2Z1bmNzLT5kaXNwbGF5X2Rpc2FibGVfbWVtb3J5X2Nsb2NrX3N3aXRjaChhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBw cF9mdW5jcy0+ZGlzcGxheV9kaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2goYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKIAkJCQkJCQkgICAgZGlzYWJsZV9tZW1vcnlfY2xvY2tfc3dpdGNoKTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGlu dCBhbWRncHVfZHBtX2dldF9tYXhfc3VzdGFpbmFibGVfY2xvY2tzX2J5X2RjKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAogCQkJCQkJc3RydWN0IHBwX3NtdV9udl9jbG9ja190YWJsZSAqbWF4 X2Nsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYt PnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdl dF9tYXhfc3VzdGFpbmFibGVfY2xvY2tzX2J5X2RjKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9tYXhf c3VzdGFpbmFibGVfY2xvY2tzX2J5X2RjKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfbWF4X3N1 c3RhaW5hYmxlX2Nsb2Nrc19ieV9kYyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkJ CSBtYXhfY2xvY2tzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVy biByZXQ7CiB9CiAKIGVudW0gcHBfc211X3N0YXR1cyBhbWRncHVfZHBtX2dldF91Y2xrX2RwbV9z dGF0ZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xOTg4LDM1ICsxNjU2LDI3IEBA IGVudW0gcHBfc211X3N0YXR1cyBhbWRncHVfZHBtX2dldF91Y2xrX2RwbV9zdGF0ZXMoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCQkgIHVuc2lnbmVkIGludCAqbnVtX3N0YXRlcykK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF91Y2xrX2Rw bV9zdGF0ZXMpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X3VjbGtfZHBtX3N0YXRlcyhhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBwcF9mdW5jcy0+Z2V0X3VjbGtfZHBtX3N0YXRlcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAogCQkJCQkgICAgY2xvY2tfdmFsdWVzX2luX2toeiwKIAkJCQkJICAgIG51bV9zdGF0ZXMpOwot CW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50 IGFtZGdwdV9kcG1fZ2V0X2RwbV9jbG9ja190YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKIAkJCQkgICBzdHJ1Y3QgZHBtX2Nsb2NrcyAqY2xvY2tfdGFibGUpCiB7CiAJY29uc3Qgc3Ry dWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0J aW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZHBtX2Nsb2NrX3RhYmxlKQogCQly ZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0 ID0gcHBfZnVuY3MtPmdldF9kcG1fY2xvY2tfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdl dF9kcG1fY2xvY2tfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgIGNs b2NrX3RhYmxlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiBy ZXQ7CiB9CiAKIC8qKgpAQCAtMjAzNywxNyArMTY5NywxMyBAQCBzc2l6ZV90IGFtZGdwdV9kcG1f Z2V0X3RlbXBfbWV0cmljcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgZW51 bSBzbXVfdGVtcF9tZXRyaWNfdHlwZSB0eXBlLCB2b2lkICp0YWJsZSkKIHsKIAljb25zdCBzdHJ1 Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlp bnQgcmV0OwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3RlbXBfbWV0cmljcyB8fAogCSAgICAhYW1k Z3B1X2RwbV9pc190ZW1wX21ldHJpY3Nfc3VwcG9ydGVkKGFkZXYsIHR5cGUpKQogCQlyZXR1cm4g LUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBf ZnVuY3MtPmdldF90ZW1wX21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSwg dGFibGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF90 ZW1wX21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSwgdGFibGUpOwogfQog CiAvKioKQEAgLTIwNjQsMTkgKzE3MjAsMTUgQEAgYm9vbCBhbWRncHVfZHBtX2lzX3RlbXBfbWV0 cmljc19zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAgZW51bSBz bXVfdGVtcF9tZXRyaWNfdHlwZSB0eXBlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3Mg KnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWJvb2wgc3VwcG9ydF90ZW1w X21ldHJpY3MgPSBmYWxzZTsKIAogCWlmICghcHBfZnVuY3MtPnRlbXBfbWV0cmljc19pc19zdXBw b3J0ZWQpCi0JCXJldHVybiBzdXBwb3J0X3RlbXBfbWV0cmljczsKKwkJcmV0dXJuIGZhbHNlOwog Ci0JaWYgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQkJc3VwcG9ydF90ZW1wX21ldHJpY3MgPQotCQkJcHBfZnVuY3MtPnRlbXBfbWV0 cmljc19pc19zdXBwb3J0ZWQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSk7Ci0JCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIWlzX3N1cHBvcnRfc3dfc211 KGFkZXYpKQorCQlyZXR1cm4gZmFsc2U7CiAKLQlyZXR1cm4gc3VwcG9ydF90ZW1wX21ldHJpY3M7 CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT50ZW1w X21ldHJpY3NfaXNfc3VwcG9ydGVkKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHR5cGUpOwog fQogCiAvKioKQEAgLTIwOTgsMTcgKzE3NTAsMTMgQEAgc3NpemVfdCBhbWRncHVfZHBtX2dldF94 Y3BfbWV0cmljcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgaW50IHhjcF9pZCwKIAkJCQkg ICB2b2lkICp0YWJsZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9 IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVu Y3MtPmdldF94Y3BfbWV0cmljcykKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5w bS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF94Y3BfbWV0cmljcyhhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLCB4Y3BfaWQsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJ cmV0dXJuIHBwX2Z1bmNzLT5nZXRfeGNwX21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRs ZSwgeGNwX2lkLAogCQkJCQl0YWJsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBjb25zdCBzdHJ1Y3QgcmFzX3NtdV9kcnYgKmFtZGdwdV9k cG1fZ2V0X3Jhc19zbXVfZHJpdmVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQotLSAKMi40 My4wCgo=