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 76C38CD3427 for ; Sun, 10 May 2026 10:07:13 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6850410E0F1; Sun, 10 May 2026 10:07:05 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; secure) header.d=usp.br header.i=@usp.br header.b="zAP6YyhE"; dkim-atps=neutral Received: from mail-dy1-f177.google.com (mail-dy1-f177.google.com [74.125.82.177]) by gabe.freedesktop.org (Postfix) with ESMTPS id D9F2410F4E7 for ; Fri, 8 May 2026 14:21:55 +0000 (UTC) Received: by mail-dy1-f177.google.com with SMTP id 5a478bee46e88-2ee1054627bso2495665eec.1 for ; Fri, 08 May 2026 07:21:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=usp.br; s=usp-google; t=1778250115; x=1778854915; 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=9oybKgWGrdSrX9eknGp6NH6btmZDhUagbD7C71tP0OM=; b=zAP6YyhEF4Xj+TdL1DiCTUKzW2gXJdXQH47xLfR8xakWHnePViNhJ3Big1vJR6zcs3 nf+H6f84r8xo0rc72iMbj/Nc5+MVtCG4lL8VfwN0H3yhfeaDhfUkUEY8TC9u9ajaDqpE J61nHIFssSdBS0KcSReKGN4HddN6xty62rVbUExiYAf+8SxY++MaljkFpw0eD8W8ykmH S+zYxSCMruCNwrWYJp3lwVFZV4jfBocfNVDbb0EAZtpNaSa51qPV7XRVxFVKGvOHHK1s IVdPgdVmT7VRNSvsJCksRquYrLCmr4O/l392vwzR7DsHTLOlXJAhTu7l0eOQje9fdJle Q8Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778250115; x=1778854915; 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=9oybKgWGrdSrX9eknGp6NH6btmZDhUagbD7C71tP0OM=; b=Q5HkEKiCQpU8laJFIYDGKy+t67RRI31D5AGZxF6MGg0Vr4oukyBhhT34KDm1SUBHBS U7pu7MsfEquhb7ilD4L3eJuZYmsDR/B51DxXurOhQaMJpaFf8jTQHnF7477EI4zNLAFx 99BBwXVNOhSzDf6lHGej0M2fu51EABk7a1bR5OAAM9f7/+pWi25qdLqyVUUPqScSxwee DQ9Vi49PwDTtPNuHobwRD1DhEKOM6vdEJ3iv/58dO03w4q/t8hHNxjh1AihF2Yadvz0b lwBiu8bLT16gz5r6wSMPok8kLFW3VN7TX/bkrdmeXRFwIITFkWUkqABu/+zw17l+ns7S hzeQ== X-Forwarded-Encrypted: i=1; AFNElJ/Qpbe/9qUKkxZrC439k31myNRqbXl4jF3W278+qQljBbgIADDK2D4MWW0x+eZAyRdb2SnUYBCpODA=@lists.freedesktop.org X-Gm-Message-State: AOJu0Yx3XAQ3Ol4GRbUxHWBxilwP3HjAFwtNGtbRmerwLpxYMDqLF7ns 3Hp5YKHNUYltjE+ph34E96Tdvh7m+JKf6bUMbsjbnqT6eFx5dDCXYRaKV1WDDvzQ3XU= X-Gm-Gg: AeBDies8lcDX9S1zpmgzI3xtbawMz8TccWD3DO+9cXuEMdW3vBANug5sfLu+2fZh205 4mdfgg4BI5hvC6LLmdBmNH85Vn8q+xfKIK307FJlX4qQet7knDrJ44cA+IvdszUqTGyH16xXGIQ RWLrH4dzqIXBKmHUweejS9eyHpw3JbcGgcRdd5bb3RxcnAhx/ypuudzauYCxek2pCdNl0stmi8y gUSEXLxiEPs6nyJNSOe6X6suYJJr7aOi4ZRgPHxRr4H4Nyimj/ViTVDrcqOr5FEd++V5vKTFKJ3 JhTLcK0FjlCs2wDM0gSNH+3TogpIYI+RHfvg9hVgzeOUWwygab7s+Tsl7GbD5vTiIloLZQGtkJ1 r1L19oLezoQ8lOHvgKcRIQQeeAdjg2KV8RQyrSnq9wU4QI5CL+0BbCNax6w/4isshFlIogHq2ba zgMt3TIv3IpPFQbfWaAp2igz9rwiYrmWin6LaukMokV0zTgaHgtLeDIPKWilVkkuzf0btbIWGJA 49p0vE0 X-Received: by 2002:a05:7300:148c:b0:2c1:67e1:61a9 with SMTP id 5a478bee46e88-2f6e4374892mr3087610eec.13.1778250114741; Fri, 08 May 2026 07:21:54 -0700 (PDT) Received: from DontFreeze.tail1d9320.ts.net (201-68-218-231.dsl.telesp.net.br. [201.68.218.231]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f888c469b6sm2324767eec.24.2026.05.08.07.21.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 07:21:54 -0700 (PDT) From: Andre Jun Hirata To: kenneth.feng@amd.com, alexander.deucher@amd.com, christian.koenig@amd.com, airlied@gmail.com, simona@ffwll.ch Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, gabriel.dimant@usp.br, guilhermesangabriel@usp.br, Andre Jun Hirata Subject: [PATCH v3] drm/amd/pm: Use guard(mutex) instead of manual lock+unlock Date: Fri, 8 May 2026 11:21:42 -0300 Message-ID: <20260508142142.7103-1-andrejhirata@usp.br> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260508111213.53309-1-andrejhirata@usp.br> References: <20260508111213.53309-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 aXN0aWFuLmtvZW5pZ0BhbWQuY29tPgoKLS0tCnYyOiBpbmNvcnBvcmF0ZSBDaHJpc3RpYW4gS8O2 bmlnJ3Mgc3VnZ2VzdGlvbnM6CiAgLSB1c2UgcmV0dXJuIGYoKSBkaXJlY3RseSBpbnN0ZWFkIG9m IHJldCA9IGYoKTsgcmV0dXJuIHJldDsKICAtIHVzZSBlYXJseSByZXR1cm4gcGF0dGVybiBiZWZv cmUgZ3VhcmQoKSB3aGVyZSBhcHBsaWNhYmxlCgp2MzogZml4IHN0eWxlIG5pdHMgcG9pbnRlZCBi eSBDaHJpc3RpYW4gS8O2bmlnOgogIC0gZHJvcCBzdXBlcmZsdW91cyByZXQgaW5pdGlhbGl6YXRp b24gaW4gc2V0X2dmeF9wb3dlcl91cF9ieV9pbXUKICAtIGRyb3AgdW5uZWNlc3NhcnkgYnJhY2Vz IGFyb3VuZCBzaW5nbGUtbGluZSBzY29wZWRfZ3VhcmQKCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bt L2FtZGdwdV9kcG0uYyB8IDg2OCArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMjYxIGluc2VydGlvbnMoKyksIDYwNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG0vYW1kZ3B1X2RwbS5jCmluZGV4IGZlYWRmNjA0Yi4uMmEwZjRhYmM0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL3BtL2FtZGdwdV9kcG0uYworKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL3BtL2FtZGdwdV9kcG0uYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImFtZF9w Y2llLmgiCiAjaW5jbHVkZSAiYW1kZ3B1X2Rpc3BsYXkuaCIKICNpbmNsdWRlICJod21nci5oIgor I2luY2x1ZGUgPGxpbnV4L2NsZWFudXAuaD4KICNpbmNsdWRlIDxsaW51eC9wb3dlcl9zdXBwbHku aD4KICNpbmNsdWRlICJhbWRncHVfc211LmgiCiAKQEAgLTQxLDMzICs0MiwyNSBAQAogaW50IGFt ZGdwdV9kcG1fZ2V0X3NjbGsoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgbG93KQog ewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5 LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3NjbGspCiAJ CXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1 bmNzLT5nZXRfc2NsaygoYWRldiktPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgp KCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfc2NsaygoYWRldiktPnBv d2VycGxheS5wcF9oYW5kbGUsCiAJCQkJIGxvdyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfbWNsayhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBsb3cpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9w bV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9 IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfbWNsaykKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9tY2xrKChhZGV2KS0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwly ZXR1cm4gcHBfZnVuY3MtPmdldF9tY2xrKChhZGV2KS0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJ CQkgbG93KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7 CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9wb3dlcmdhdGluZ19ieV9zbXUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCkBAIC04MCwxMyArNzMsMTIgQEAgaW50IGFtZGdwdV9kcG1fc2V0X3Bv d2VyZ2F0aW5nX2J5X3NtdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAllbnVtIGlwX3Bv d2VyX3N0YXRlIHB3cl9zdGF0ZSA9IGdhdGUgPyBQT1dFUl9TVEFURV9PRkYgOiBQT1dFUl9TVEFU RV9PTjsKIAlib29sIGlzX3ZjbiA9IGJsb2NrX3R5cGUgPT0gQU1EX0lQX0JMT0NLX1RZUEVfVkNO OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CiAJaWYgKGF0b21pY19yZWFkKCZhZGV2LT5wbS5wd3Jfc3RhdGVbYmxvY2tf dHlwZV0pID09IHB3cl9zdGF0ZSAmJgogCQkJKCFpc192Y24gfHwgYWRldi0+dmNuLm51bV92Y25f aW5zdCA9PSAxKSkgewogCQlkZXZfZGJnKGFkZXYtPmRldiwgIklQIGJsb2NrJWQgYWxyZWFkeSBp biB0aGUgdGFyZ2V0ICVzIHN0YXRlISIsCiAJCQkJYmxvY2tfdHlwZSwgZ2F0ZSA/ICJnYXRlIiA6 ICJ1bmdhdGUiKTsKLQkJZ290byBvdXRfdW5sb2NrOworCQlyZXR1cm4gcmV0OwogCX0KIAogCXN3 aXRjaCAoYmxvY2tfdHlwZSkgewpAQCAtMTE1LDkgKzEwNyw2IEBAIGludCBhbWRncHVfZHBtX3Nl dF9wb3dlcmdhdGluZ19ieV9zbXUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJaWYgKCFy ZXQpCiAJCWF0b21pY19zZXQoJmFkZXYtPnBtLnB3cl9zdGF0ZVtibG9ja190eXBlXSwgcHdyX3N0 YXRlKTsKIAotb3V0X3VubG9jazoKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQog CXJldHVybiByZXQ7CiB9CiAKQEAgLTEyNiw5ICsxMTUsOCBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRf Z2Z4X3Bvd2VyX3VwX2J5X2ltdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAlzdHJ1Y3Qg c211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7CiAJaW50IHJldCA9 IC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNt dV9zZXRfZ2Z4X3Bvd2VyX3VwX2J5X2ltdShzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOworCXNjb3BlZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KQorCQlyZXQgPSBz bXVfc2V0X2dmeF9wb3dlcl91cF9ieV9pbXUoc211KTsKIAogCW1zbGVlcCgxMCk7CiAKQEAgLTEz OSw0NCArMTI3LDMxIEBAIGludCBhbWRncHVfZHBtX2JhY29fZW50ZXIoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1 bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwog CS8qIGVudGVyIEJBQ08gc3RhdGUgKi8KLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2FzaWNfYmFjb19z dGF0ZShwcF9oYW5kbGUsIDEpOwotCi0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0K LQlyZXR1cm4gcmV0OworCXJldHVybiBwcF9mdW5jcy0+c2V0X2FzaWNfYmFjb19zdGF0ZShwcF9o YW5kbGUsIDEpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9iYWNvX2V4aXQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7CiAJdm9pZCAqcHBfaGFuZGxlID0gYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1 bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKQogCQlyZXR1cm4gLUVOT0VOVDsKIAotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwog CS8qIGV4aXQgQkFDTyBzdGF0ZSAqLwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0 YXRlKHBwX2hhbmRsZSwgMCk7Ci0KLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQot CXJldHVybiByZXQ7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfYXNpY19iYWNvX3N0YXRlKHBwX2hh bmRsZSwgMCk7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9tcDFfc3RhdGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgIGVudW0gcHBfbXAxX3N0YXRlIG1wMV9zdGF0ZSkKIHsK LQlpbnQgcmV0ID0gMDsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAogCWlmIChtcDFfc3RhdGUgPT0gUFBfTVAxX1NUQVRF X0ZMUikgewpAQCAtMTg0LDIzICsxNTksMTkgQEAgaW50IGFtZGdwdV9kcG1fc2V0X21wMV9zdGF0 ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJaWYgKGFtZGdwdV9zcmlvdl92ZihhZGV2 KSkKIAkJCWFkZXYtPnBtLmRwbV9lbmFibGVkID0gZmFsc2U7CiAJfSBlbHNlIGlmIChwcF9mdW5j cyAmJiBwcF9mdW5jcy0+c2V0X21wMV9zdGF0ZSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQkJcmV0ID0gcHBfZnVuY3MtPnNldF9tcDFfc3RhdGUoCisJCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCQlyZXR1cm4gcHBfZnVuY3MtPnNldF9tcDFfc3RhdGUoCiAJ CQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQltcDFfc3RhdGUpOwotCi0JCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCX0KIAotCXJldHVybiByZXQ7CisJcmV0dXJuIDA7 CiB9CiAKIGludCBhbWRncHVfZHBtX2lzX2JhY29fc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRl di0+cG93ZXJwbGF5LnBwX2Z1bmNzOwogCXZvaWQgKnBwX2hhbmRsZSA9IGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGU7Ci0JaW50IHJldDsKIAogCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5n ZXRfYXNpY19iYWNvX2NhcGFiaWxpdHkpCiAJCXJldHVybiAwOwpAQCAtMjE2LDQ5ICsxODcsMzIg QEAgaW50IGFtZGdwdV9kcG1faXNfYmFjb19zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpCiAJaWYgKGFkZXYtPmluX3MzKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFk ZXYtPnBtLm11dGV4KTsKLQotCXJldCA9IHBwX2Z1bmNzLT5nZXRfYXNpY19iYWNvX2NhcGFiaWxp dHkocHBfaGFuZGxlKTsKLQotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0 dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVu Y3MtPmdldF9hc2ljX2JhY29fY2FwYWJpbGl0eShwcF9oYW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9tb2RlMl9yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBz dHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsK IAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQg PSAwOwogCiAJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPmFzaWNfcmVzZXRfbW9kZV8yKQog CQlyZXR1cm4gLUVOT0VOVDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJl dCA9IHBwX2Z1bmNzLT5hc2ljX3Jlc2V0X21vZGVfMihwcF9oYW5kbGUpOwotCi0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRl di0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+YXNpY19yZXNldF9tb2RlXzIocHBfaGFu ZGxlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZW5hYmxlX2dmeF9mZWF0dXJlcyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5j cyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKIAl2b2lkICpwcF9oYW5kbGUgPSBhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcyB8fCAh cHBfZnVuY3MtPmFzaWNfcmVzZXRfZW5hYmxlX2dmeF9mZWF0dXJlcykKIAkJcmV0dXJuIC1FTk9F TlQ7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXQgPSBwcF9mdW5jcy0+ YXNpY19yZXNldF9lbmFibGVfZ2Z4X2ZlYXR1cmVzKHBwX2hhbmRsZSk7Ci0KLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2 LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5hc2ljX3Jlc2V0X2VuYWJsZV9nZnhfZmVh dHVyZXMocHBfaGFuZGxlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fYmFjb19yZXNldChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTI3MCw3NSArMjI0LDYwIEBAIGludCBhbWRncHVfZHBt X2JhY29fcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJaWYgKCFwcF9mdW5jcyB8 fCAhcHBfZnVuY3MtPnNldF9hc2ljX2JhY29fc3RhdGUpCiAJCXJldHVybiAtRU5PRU5UOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0 ZXgpOwogCiAJLyogZW50ZXIgQkFDTyBzdGF0ZSAqLwogCXJldCA9IHBwX2Z1bmNzLT5zZXRfYXNp Y19iYWNvX3N0YXRlKHBwX2hhbmRsZSwgMSk7CiAJaWYgKHJldCkKLQkJZ290byBvdXQ7CisJCXJl dHVybiByZXQ7CiAKIAkvKiBleGl0IEJBQ08gc3RhdGUgKi8KIAlyZXQgPSBwcF9mdW5jcy0+c2V0 X2FzaWNfYmFjb19zdGF0ZShwcF9oYW5kbGUsIDApOwotCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7CiAJcmV0dXJuIHJldDsKIH0KIAogYm9vbCBhbWRncHVfZHBtX2lzX21v ZGUxX3Jlc2V0X3N1cHBvcnRlZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1 Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JYm9vbCBz dXBwb3J0X21vZGUxX3Jlc2V0ID0gZmFsc2U7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRl dikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlzdXBwb3J0X21vZGUxX3Jl c2V0ID0gc211X21vZGUxX3Jlc2V0X2lzX3N1cHBvcnQoc211KTsKLQkJbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJl dHVybiBmYWxzZTsKIAotCXJldHVybiBzdXBwb3J0X21vZGUxX3Jlc2V0OworCWd1YXJkKG11dGV4 KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfbW9kZTFfcmVzZXRfaXNfc3VwcG9ydChz bXUpCiB9CiAKIGludCBhbWRncHVfZHBtX21vZGUxX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZTsKLQlpbnQgcmV0ID0gLUVPUE5PVFNVUFA7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19z bXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBzbXVf bW9kZTFfcmVzZXQoc211KTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQor CWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAot CXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNt dV9tb2RlMV9yZXNldChzbXUpOwogfQogCiBib29sIGFtZGdwdV9kcG1faXNfbGlua19yZXNldF9z dXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0IHNtdV9jb250 ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWJvb2wgc3VwcG9ydF9saW5r X3Jlc2V0ID0gZmFsc2U7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0 ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlzdXBwb3J0X2xpbmtfcmVzZXQgPSBzbXVfbGlu a19yZXNldF9pc19zdXBwb3J0KHNtdSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCX0KKwlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJldHVybiBmYWxzZTsKIAot CXJldHVybiBzdXBwb3J0X2xpbmtfcmVzZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CisJcmV0dXJuIHNtdV9saW5rX3Jlc2V0X2lzX3N1cHBvcnQoc211KTsKIH0KIAogaW50IGFt ZGdwdV9kcG1fbGlua19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1 Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJl dCA9IC1FT1BOT1RTVVBQOwogCi0JaWYgKGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKSB7Ci0JCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gc211X2xpbmtfcmVzZXQoc211KTsK LQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghaXNfc3VwcG9ydF9z d19zbXUoYWRldikpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCXJldHVybiByZXQ7CisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9saW5rX3Jlc2V0KHNtdSk7 CiB9CiAKIGludCBhbWRncHVfZHBtX3N3aXRjaF9wb3dlcl9wcm9maWxlKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LApAQCAtMzQ2LDEwMCArMjg1LDgyIEBAIGludCBhbWRncHVfZHBtX3N3aXRj aF9wb3dlcl9wcm9maWxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICBib29s IGVuKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93 ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKGFtZGdwdV9zcmlvdl92Zihh ZGV2KSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnN3aXRjaF9w b3dlcl9wcm9maWxlKSB7Ci0JCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0g cHBfZnVuY3MtPnN3aXRjaF9wb3dlcl9wcm9maWxlKAotCQkJYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwgdHlwZSwgZW4pOwotCQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJ aWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVuY3MtPnN3aXRjaF9wb3dlcl9wcm9maWxlKQorCQlyZXR1 cm4gMDsKIAotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJ cmV0dXJuIHBwX2Z1bmNzLT5zd2l0Y2hfcG93ZXJfcHJvZmlsZSgKKwkJCWFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsIHR5cGUsIGVuKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fcGF1c2VfcG93ZXJf cHJvZmlsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICBib29sIHBhdXNlKQog ewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5 LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKGFtZGdwdV9zcmlvdl92ZihhZGV2KSkK IAkJcmV0dXJuIDA7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnBhdXNlX3Bvd2VyX3By b2ZpbGUpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5j cy0+cGF1c2VfcG93ZXJfcHJvZmlsZSgKLQkJCWFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHBh dXNlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JfQorCWlmICghcHBfZnVu Y3MgfHwgIXBwX2Z1bmNzLT5wYXVzZV9wb3dlcl9wcm9maWxlKQorCQlyZXR1cm4gMDsKIAotCXJl dHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1 bmNzLT5wYXVzZV9wb3dlcl9wcm9maWxlKAorCQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwg cGF1c2UpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfeGdtaV9wc3RhdGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgICAgdWludDMyX3QgcHN0YXRlKQogewogCWNvbnN0IHN0 cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwot CWludCByZXQgPSAwOwogCi0JaWYgKHBwX2Z1bmNzICYmIHBwX2Z1bmNzLT5zZXRfeGdtaV9wc3Rh dGUpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+ c2V0X3hnbWlfcHN0YXRlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCi0JCQkJCQkJCXBzdGF0 ZSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNz IHx8ICFwcF9mdW5jcy0+c2V0X3hnbWlfcHN0YXRlKQorCQlyZXR1cm4gMDsKIAotCXJldHVybiBy ZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5z ZXRfeGdtaV9wc3RhdGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwkJCQkJCQkJcHN0YXRl KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X2RmX2NzdGF0ZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKIAkJCSAgICAgdWludDMyX3QgY3N0YXRlKQogewotCWludCByZXQgPSAwOwogCWNv bnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1 bmNzOwogCXZvaWQgKnBwX2hhbmRsZSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7CiAKLQlp ZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnNldF9kZl9jc3RhdGUpIHsKLQkJbXV0ZXhfbG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCQlyZXQgPSBwcF9mdW5jcy0+c2V0X2RmX2NzdGF0ZShwcF9oYW5k bGUsIGNzdGF0ZSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAo IXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+c2V0X2RmX2NzdGF0ZSkKKwkJcmV0dXJuIDA7CiAKLQly ZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9m dW5jcy0+c2V0X2RmX2NzdGF0ZShwcF9oYW5kbGUsIGNzdGF0ZSk7CiB9CiAKIHNzaXplX3QgYW1k Z3B1X2RwbV9nZXRfcG1fcG9saWN5X2luZm8oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJ CQkJICAgICAgZW51bSBwcF9wbV9wb2xpY3kgcF90eXBlLCBjaGFyICpidWYpCiB7CiAJc3RydWN0 IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQg PSAtRU9QTk9UU1VQUDsKIAotCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkgewotCQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHNtdV9nZXRfcG1fcG9saWN5X2luZm8o c211LCBwX3R5cGUsIGJ1Zik7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0K KwlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAK LQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBz bXVfZ2V0X3BtX3BvbGljeV9pbmZvKHNtdSwgcF90eXBlLCBidWYpOwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9zZXRfcG1fcG9saWN5KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBpbnQgcG9saWN5 X3R5cGUsCiAJCQkgICAgIGludCBwb2xpY3lfbGV2ZWwpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0 ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAtRU9QTk9UU1VQ UDsKIAotCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkgewotCQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JCXJldCA9IHNtdV9zZXRfcG1fcG9saWN5KHNtdSwgcG9saWN5X3R5cGUs IHBvbGljeV9sZXZlbCk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlp ZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQly ZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVf c2V0X3BtX3BvbGljeShzbXUsIHBvbGljeV90eXBlLCBwb2xpY3lfbGV2ZWwpOwogfQogCiBpbnQg YW1kZ3B1X2RwbV9lbmFibGVfbWdwdV9mYW5fYm9vc3Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCkBAIC00NDcsMTUgKzM2OCwxMiBAQCBpbnQgYW1kZ3B1X2RwbV9lbmFibGVfbWdwdV9mYW5f Ym9vc3Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJdm9pZCAqcHBfaGFuZGxlID0gYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9CiAJCQlhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKLQlp ZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPmVuYWJsZV9tZ3B1X2Zhbl9ib29zdCkgewotCQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5lbmFibGVfbWdwdV9m YW5fYm9vc3QocHBfaGFuZGxlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0J fQorCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5lbmFibGVfbWdwdV9mYW5fYm9vc3QpCisJ CXJldHVybiAwOwogCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmVuYWJsZV9tZ3B1X2Zhbl9ib29zdChwcF9oYW5kbGUpOwog fQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfY2xvY2tnYXRpbmdfYnlfc211KHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LApAQCAtNDY0LDE2ICszODIsMTMgQEAgaW50IGFtZGdwdV9kcG1fc2V0X2Ns b2NrZ2F0aW5nX2J5X3NtdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAl2b2lkICpwcF9o YW5kbGUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCWNvbnN0IHN0cnVjdCBhbWRfcG1f ZnVuY3MgKnBwX2Z1bmNzID0KIAkJCWFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0 ID0gMDsKIAotCWlmIChwcF9mdW5jcyAmJiBwcF9mdW5jcy0+c2V0X2Nsb2NrZ2F0aW5nX2J5X3Nt dSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5z ZXRfY2xvY2tnYXRpbmdfYnlfc211KHBwX2hhbmRsZSwKLQkJCQkJCSAgICAgICBtc2dfaWQpOwot CQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5jcyB8fCAh cHBfZnVuY3MtPnNldF9jbG9ja2dhdGluZ19ieV9zbXUpCisJCXJldHVybiAwOwogCi0JcmV0dXJu IHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3Mt PnNldF9jbG9ja2dhdGluZ19ieV9zbXUocHBfaGFuZGxlLAorCQkJCQkJICAgICAgIG1zZ19pZCk7 CiB9CiAKIGludCBhbWRncHVfZHBtX3NtdV9pMmNfYnVzX2FjY2VzcyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKQEAgLTQ4MiwyMiArMzk3LDE5IEBAIGludCBhbWRncHVfZHBtX3NtdV9pMmNf YnVzX2FjY2VzcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAl2b2lkICpwcF9oYW5kbGUg PSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3Mg KnBwX2Z1bmNzID0KIAkJCWFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gLUVP UE5PVFNVUFA7CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnNtdV9pMmNfYnVzX2FjY2Vz cykgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5z bXVfaTJjX2J1c19hY2Nlc3MocHBfaGFuZGxlLAotCQkJCQkJICAgYWNxdWlyZSk7Ci0JCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5j cy0+c211X2kyY19idXNfYWNjZXNzKQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlyZXR1cm4g cmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiA9IHBwX2Z1bmNz LT5zbXVfaTJjX2J1c19hY2Nlc3MocHBfaGFuZGxlLAorCQkJCQkJICAgYWNxdWlyZSk7CiB9CiAK IHZvaWQgYW1kZ3B1X3BtX2FjcGlfZXZlbnRfaGFuZGxlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKIHsKIAlpZiAoYWRldi0+cG0uZHBtX2VuYWJsZWQpIHsKLQkJbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOworCQlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAkJaWYgKHBv d2VyX3N1cHBseV9pc19zeXN0ZW1fc3VwcGxpZWQoKSA+IDApCiAJCQlhZGV2LT5wbS5hY19wb3dl ciA9IHRydWU7CiAJCWVsc2UKQEAgLTUxMCw3ICs0MjIsNiBAQCB2b2lkIGFtZGdwdV9wbV9hY3Bp X2V2ZW50X2hhbmRsZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCWlmIChpc19zdXBw b3J0X3N3X3NtdShhZGV2KSkKIAkJCXNtdV9zZXRfYWNfZGMoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSk7CiAKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAJfQogfQogCkBAIC01 MTgsNDkgKzQyOSw0MCBAQCBpbnQgYW1kZ3B1X2RwbV9yZWFkX3NlbnNvcihzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgZW51bSBhbWRfcHBfc2Vuc29ycyBzZW5zbwogCQkJICAgdm9pZCAqZGF0 YSwgdWludDMyX3QgKnNpemUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVu Y3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IC1FSU5WQUw7CiAKIAlp ZiAoIWRhdGEgfHwgIXNpemUpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKHBwX2Z1bmNzICYm IHBwX2Z1bmNzLT5yZWFkX3NlbnNvcikgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0JCXJldCA9IHBwX2Z1bmNzLT5yZWFkX3NlbnNvcihhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAorCWlmICghcHBfZnVuY3MgfHwgIXBwX2Z1bmNzLT5yZWFkX3NlbnNvcikKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVu Y3MtPnJlYWRfc2Vuc29yKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICBzZW5z b3IsCiAJCQkJCSAgICBkYXRhLAogCQkJCQkgICAgc2l6ZSk7Ci0JCW11dGV4X3VubG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCX0KLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dl dF9hcHVfdGhlcm1hbF9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3Qg KmxpbWl0KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+ cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAtRU9QTk9UU1VQUDsKIAotCWlmIChwcF9m dW5jcyAmJiBwcF9mdW5jcy0+Z2V0X2FwdV90aGVybWFsX2xpbWl0KSB7Ci0JCW11dGV4X2xvY2so JmFkZXYtPnBtLm11dGV4KTsKLQkJcmV0ID0gcHBfZnVuY3MtPmdldF9hcHVfdGhlcm1hbF9saW1p dChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBsaW1pdCk7Ci0JCW11dGV4X3VubG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCX0KKwlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+Z2V0X2FwdV90 aGVybWFsX2xpbWl0KQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQlyZXR1cm4gcmV0OworCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2FwdV90 aGVybWFsX2xpbWl0KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIGxpbWl0KTsKIH0KIAogaW50 IGFtZGdwdV9kcG1fc2V0X2FwdV90aGVybWFsX2xpbWl0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCB1aW50MzJfdCBsaW1pdCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gLUVPUE5PVFNVUFA7 CiAKLQlpZiAocHBfZnVuY3MgJiYgcHBfZnVuY3MtPnNldF9hcHVfdGhlcm1hbF9saW1pdCkgewot CQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCXJldCA9IHBwX2Z1bmNzLT5zZXRfYXB1 X3RoZXJtYWxfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgbGltaXQpOwotCQltdXRl eF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl9CisJaWYgKCFwcF9mdW5jcyB8fCAhcHBfZnVu Y3MtPnNldF9hcHVfdGhlcm1hbF9saW1pdCkKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JcmV0 dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVu Y3MtPnNldF9hcHVfdGhlcm1hbF9saW1pdChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBsaW1p dCk7CiB9CiAKIHZvaWQgYW1kZ3B1X2RwbV9jb21wdXRlX2Nsb2NrcyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldikKQEAgLTU4Myw5ICs0ODUsOCBAQCB2b2lkIGFtZGdwdV9kcG1fY29tcHV0ZV9j bG9ja3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiAJCQlhbWRncHVfZmVuY2Vfd2FpdF9l bXB0eShyaW5nKTsKIAl9CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAJcHBfZnVuY3MtPnBtX2NvbXB1dGVfY2xvY2tzKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OwogfQogCiB2b2lkIGFtZGdwdV9kcG1fZW5hYmxlX3V2ZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwgYm9vbCBlbmFibGUpCkBAIC01OTMsMTQgKzQ5NCwxNCBAQCB2b2lkIGFtZGdwdV9kcG1f ZW5hYmxlX3V2ZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBlbmFibGUpCiAJaW50 IHJldCA9IDA7CiAKIAlpZiAoYWRldi0+ZmFtaWx5ID09IEFNREdQVV9GQU1JTFlfU0kpIHsKLQkJ bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlpZiAoZW5hYmxlKSB7Ci0JCQlhZGV2LT5w bS5kcG0udXZkX2FjdGl2ZSA9IHRydWU7Ci0JCQlhZGV2LT5wbS5kcG0uc3RhdGUgPSBQT1dFUl9T VEFURV9UWVBFX0lOVEVSTkFMX1VWRDsKLQkJfSBlbHNlIHsKLQkJCWFkZXYtPnBtLmRwbS51dmRf YWN0aXZlID0gZmFsc2U7CisJCXNjb3BlZF9ndWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KSB7 CisJCQlpZiAoZW5hYmxlKSB7CisJCQkJYWRldi0+cG0uZHBtLnV2ZF9hY3RpdmUgPSB0cnVlOwor CQkJCWFkZXYtPnBtLmRwbS5zdGF0ZSA9IFBPV0VSX1NUQVRFX1RZUEVfSU5URVJOQUxfVVZEOwor CQkJfSBlbHNlIHsKKwkJCQlhZGV2LT5wbS5kcG0udXZkX2FjdGl2ZSA9IGZhbHNlOworCQkJfQog CQl9Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCiAJCWFtZGdwdV9kcG1fY29t cHV0ZV9jbG9ja3MoYWRldik7CiAJCXJldHVybjsKQEAgLTYyNywxNSArNTI4LDE1IEBAIHZvaWQg YW1kZ3B1X2RwbV9lbmFibGVfdmNlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGVu YWJsZSkKIAlpbnQgcmV0ID0gMDsKIAogCWlmIChhZGV2LT5mYW1pbHkgPT0gQU1ER1BVX0ZBTUlM WV9TSSkgewotCQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JCWlmIChlbmFibGUpIHsK LQkJCWFkZXYtPnBtLmRwbS52Y2VfYWN0aXZlID0gdHJ1ZTsKLQkJCS8qIFhYWCBzZWxlY3QgdmNl IGxldmVsIGJhc2VkIG9uIHJpbmcvdGFzayAqLwotCQkJYWRldi0+cG0uZHBtLnZjZV9sZXZlbCA9 IEFNRF9WQ0VfTEVWRUxfQUNfQUxMOwotCQl9IGVsc2UgewotCQkJYWRldi0+cG0uZHBtLnZjZV9h Y3RpdmUgPSBmYWxzZTsKKwkJc2NvcGVkX2d1YXJkKG11dGV4LCAmYWRldi0+cG0ubXV0ZXgpIHsK KwkJCWlmIChlbmFibGUpIHsKKwkJCQlhZGV2LT5wbS5kcG0udmNlX2FjdGl2ZSA9IHRydWU7CisJ CQkJLyogWFhYIHNlbGVjdCB2Y2UgbGV2ZWwgYmFzZWQgb24gcmluZy90YXNrICovCisJCQkJYWRl di0+cG0uZHBtLnZjZV9sZXZlbCA9IEFNRF9WQ0VfTEVWRUxfQUNfQUxMOworCQkJfSBlbHNlIHsK KwkJCQlhZGV2LT5wbS5kcG0udmNlX2FjdGl2ZSA9IGZhbHNlOworCQkJfQogCQl9Ci0JCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCiAJCWFtZGdwdV9kcG1fY29tcHV0ZV9jbG9ja3Mo YWRldik7CiAJCXJldHVybjsKQEAgLTY3MCw4NCArNTcxLDY2IEBAIHZvaWQgYW1kZ3B1X2RwbV9l bmFibGVfdnBlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sIGVuYWJsZSkKIGludCBh bWRncHVfcG1fbG9hZF9zbXVfZmlybXdhcmUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVp bnQzMl90ICpzbXVfdmVyc2lvbikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9m dW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgciA9IDA7CisJaW50IHJldCA9 IDA7CiAKIAlpZiAoIXBwX2Z1bmNzIHx8ICFwcF9mdW5jcy0+bG9hZF9maXJtd2FyZSB8fAogCSAg ICAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikgJiYgKGFkZXYtPmZsYWdzICYgQU1EX0lTX0FQVSkp KQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyID0gcHBf ZnVuY3MtPmxvYWRfZmlybXdhcmUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7Ci0JaWYgKHIp IHsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXQgPSBwcF9mdW5jcy0+bG9h ZF9maXJtd2FyZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKKwlpZiAocmV0KSB7CiAJCXBy X2Vycigic211IGZpcm13YXJlIGxvYWRpbmcgZmFpbGVkXG4iKTsKLQkJZ290byBvdXQ7CisJCXJl dHVybiByZXQ7CiAJfQogCiAJaWYgKHNtdV92ZXJzaW9uKQogCQkqc211X3ZlcnNpb24gPSBhZGV2 LT5wbS5md192ZXJzaW9uOwogCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0JcmV0dXJuIHI7CisJcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1faGFuZGxlX3Bh c3N0aHJvdWdoX3NicihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgYm9vbCBlbmFibGUpCiB7 Ci0JaW50IHJldCA9IDA7CisJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKKwkJcmV0dXJu IDA7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCQlyZXQgPSBzbXVfaGFuZGxlX3Bhc3N0aHJvdWdoX3NicihhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJl dHVybiBzbXVfaGFuZGxlX3Bhc3N0aHJvdWdoX3NicihhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAogCQkJCQkJIGVuYWJsZSk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCX0K LQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NlbmRfaGJtX2JhZF9wYWdlc19u dW0oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHNpemUpCiB7CiAJc3RydWN0 IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWludCByZXQg PSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9zZW5kX2hi bV9iYWRfcGFnZXNfbnVtKHNtdSwgc2l6ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJl dHVybiBzbXVfc2VuZF9oYm1fYmFkX3BhZ2VzX251bShzbXUsIHNpemUpOwogfQogCiBpbnQgYW1k Z3B1X2RwbV9zZW5kX2hibV9iYWRfY2hhbm5lbF9mbGFnKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LCB1aW50MzJfdCBzaXplKQogewogCXN0cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghaXNfc3VwcG9ydF9z d19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYt PnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfc2VuZF9oYm1fYmFkX2NoYW5uZWxfZmxhZyhzbXUsIHNp emUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwln dWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3NlbmRfaGJtX2JhZF9j aGFubmVsX2ZsYWcoc211LCBzaXplKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2VuZF9ybWFfcmVh c29uKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBzbXVfY29udGV4dCAq c211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0OwogCiAJaWYgKCFpc19z dXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9zZW5kX3JtYV9yZWFzb24oc211KTsKLQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9zZW5kX3JtYV9yZWFzb24oc211KTsK IH0KIAogLyoqCkBAIC03NjEsNjEgKzY0NCw0NSBAQCBpbnQgYW1kZ3B1X2RwbV9zZW5kX3JtYV9y ZWFzb24oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiBib29sIGFtZGdwdV9kcG1fcmVzZXRf c2RtYV9pc19zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJc3RydWN0 IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWJvb2wgcmV0 OwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIGZhbHNlOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9yZXNldF9zZG1hX2lzX3N1 cHBvcnRlZChzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJu IHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3Jlc2V0 X3NkbWFfaXNfc3VwcG9ydGVkKHNtdSk7CiB9CiAKIGludCBhbWRncHVfZHBtX3Jlc2V0X3NkbWEo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IGluc3RfbWFzaykKIHsKIAlzdHJ1 Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJl dDsKIAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQ UDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfcmVzZXRfc2Rt YShzbXUsIGluc3RfbWFzayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQly ZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVf cmVzZXRfc2RtYShzbXUsIGluc3RfbWFzayk7CiB9CiAKIGludCBhbWRncHVfZHBtX3Jlc2V0X3Zj bihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgaW5zdF9tYXNrKQogewogCXN0 cnVjdCBzbXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQg cmV0OwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9yZXNldF92 Y24oc211LCBpbnN0X21hc2spOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211 X3Jlc2V0X3ZjbihzbXUsIGluc3RfbWFzayk7CiB9CiAKIGJvb2wgYW1kZ3B1X2RwbV9yZXNldF92 Y25faXNfc3VwcG9ydGVkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogewogCXN0cnVjdCBz bXVfY29udGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlib29sIHJldDsK IAogCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiBmYWxzZTsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfcmVzZXRfdmNuX2lzX3N1cHBv cnRlZChzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJl dDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3Jlc2V0X3Zj bl9pc19zdXBwb3J0ZWQoc211KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2RwbV9mcmVxX3Jh bmdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtODIzLDIyICs2OTAsMTcgQEAgaW50 IGFtZGdwdV9kcG1fZ2V0X2RwbV9mcmVxX3JhbmdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LAogCQkJCSAgdWludDMyX3QgKm1pbiwKIAkJCQkgIHVpbnQzMl90ICptYXgpCiB7Ci0JaW50IHJl dCA9IDA7Ci0KIAlpZiAodHlwZSAhPSBQUF9TQ0xLKQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCWlm ICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfZ2V0X2RwbV9mcmVxX3Jhbmdl KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CisJcmV0dXJuIHNtdV9nZXRfZHBtX2ZyZXFfcmFuZ2UoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwKIAkJCQkgICAgIFNNVV9TQ0xLLAogCQkJCSAgICAgbWluLAogCQkJCSAgICAgbWF4KTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGlu dCBhbWRncHVfZHBtX3NldF9zb2Z0X2ZyZXFfcmFuZ2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCkBAIC04NjIsMTYgKzcyNCwxMiBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfc29mdF9mcmVxX3Jh bmdlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogaW50IGFtZGdwdV9kcG1fd3JpdGVfd2F0 ZXJtYXJrc190YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAlzdHJ1Y3Qgc211 X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7 CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQogCQlyZXR1cm4gMDsKIAotCW11dGV4 X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfd3JpdGVfd2F0ZXJtYXJrc190YWJs ZShzbXUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X3dyaXRlX3dhdGVy bWFya3NfdGFibGUoc211KTsKIH0KIAogaW50IGFtZGdwdV9kcG1fd2FpdF9mb3JfZXZlbnQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC04NzksNzYgKzczNyw1NiBAQCBpbnQgYW1kZ3B1 X2RwbV93YWl0X2Zvcl9ldmVudChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgICAg IHVpbnQ2NF90IGV2ZW50X2FyZykKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRf c3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X3dhaXRfZm9yX2V2ZW50KHNtdSwgZXZlbnQsIGV2ZW50 X2FyZyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0Owor CWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBzbXVfd2FpdF9mb3JfZXZl bnQoc211LCBldmVudCwgZXZlbnRfYXJnKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3Jlc2lk ZW5jeV9nZnhvZmYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgdmFsdWUpCiB7CiAJ c3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlOwotCWlu dCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIC1F T1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHNtdV9z ZXRfcmVzaWRlbmN5X2dmeG9mZihzbXUsIHZhbHVlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7 CisJcmV0dXJuIHNtdV9zZXRfcmVzaWRlbmN5X2dmeG9mZihzbXUsIHZhbHVlKTsKIH0KIAogaW50 IGFtZGdwdV9kcG1fZ2V0X3Jlc2lkZW5jeV9nZnhvZmYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsIHUzMiAqdmFsdWUpCiB7CiAJc3RydWN0IHNtdV9jb250ZXh0ICpzbXUgPSBhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFpc19zdXBwb3J0X3N3X3Nt dShhZGV2KSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCXJldCA9IHNtdV9nZXRfcmVzaWRlbmN5X2dmeG9mZihzbXUsIHZhbHVlKTsKLQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHNtdV9nZXRfcmVzaWRlbmN5X2dmeG9mZihz bXUsIHZhbHVlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2VudHJ5Y291bnRfZ2Z4b2ZmKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1NjQgKnZhbHVlKQogewogCXN0cnVjdCBzbXVfY29u dGV4dCAqc211ID0gYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZTsKLQlpbnQgcmV0ID0gMDsKIAog CWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAot CW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBzbXVfZ2V0X2VudHJ5Y291bnRf Z2Z4b2ZmKHNtdSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211 X2dldF9lbnRyeWNvdW50X2dmeG9mZihzbXUsIHZhbHVlKTsKIH0KIAogaW50IGFtZGdwdV9kcG1f Z2V0X3N0YXR1c19nZnhvZmYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90ICp2 YWx1ZSkKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRfc3dfc211KGFkZXYpKQog CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0J cmV0ID0gc211X2dldF9zdGF0dXNfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBt Lm11dGV4KTsKKwlyZXR1cm4gc211X2dldF9zdGF0dXNfZ2Z4b2ZmKHNtdSwgdmFsdWUpOwogfQog CiB1aW50NjRfdCBhbWRncHVfZHBtX2dldF90aGVybWFsX3Rocm90dGxpbmdfY291bnRlcihzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTk2OSwyOCArODA3LDIzIEBAIHVpbnQ2NF90IGFt ZGdwdV9kcG1fZ2V0X3RoZXJtYWxfdGhyb3R0bGluZ19jb3VudGVyKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQogdm9pZCBhbWRncHVfZHBtX2dmeF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCiAJCQkJIGVudW0gZ2Z4X2NoYW5nZV9zdGF0ZSBzdGF0ZSkKIHsKLQlt dXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CiAJaWYgKGFkZXYtPnBvd2VycGxheS5wcF9mdW5jcyAmJgogCSAgICBhZGV2LT5wb3dlcnBs YXkucHBfZnVuY3MtPmdmeF9zdGF0ZV9jaGFuZ2Vfc2V0KQogCQkoKGFkZXYpLT5wb3dlcnBsYXku cHBfZnVuY3MtPmdmeF9zdGF0ZV9jaGFuZ2Vfc2V0KAogCQkJKGFkZXYpLT5wb3dlcnBsYXkucHBf aGFuZGxlLCBzdGF0ZSkpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogfQogCiBp bnQgYW1kZ3B1X2RwbV9nZXRfZWNjX2luZm8oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJ CQkgICAgdm9pZCAqdW1jX2VjYykKIHsKIAlzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSA9IGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGU7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIWlzX3N1cHBvcnRf c3dfc211KGFkZXYpKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2 LT5wbS5tdXRleCk7Ci0JcmV0ID0gc211X2dldF9lY2NfaW5mbyhzbXUsIHVtY19lY2MpOwotCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gc211X2dldF9lY2NfaW5mbyhzbXUsIHVtY19l Y2MpOwogfQogCiBzdHJ1Y3QgYW1kX3ZjZV9zdGF0ZSAqYW1kZ3B1X2RwbV9nZXRfdmNlX2Nsb2Nr X3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTAwMiwxMiArODM1LDkgQEAg c3RydWN0IGFtZF92Y2Vfc3RhdGUgKmFtZGdwdV9kcG1fZ2V0X3ZjZV9jbG9ja19zdGF0ZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfdmNlX2Nsb2NrX3N0 YXRlKQogCQlyZXR1cm4gTlVMTDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQl2 c3RhdGUgPSBwcF9mdW5jcy0+Z2V0X3ZjZV9jbG9ja19zdGF0ZShhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5j cy0+Z2V0X3ZjZV9jbG9ja19zdGF0ZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkg ICAgICAgaWR4KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiB2 c3RhdGU7CiB9CiAKIHZvaWQgYW1kZ3B1X2RwbV9nZXRfY3VycmVudF9wb3dlcl9zdGF0ZShzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTEwMTUsMTEgKzg0NSwxMSBAQCB2b2lkIGFtZGdw dV9kcG1fZ2V0X2N1cnJlbnRfcG93ZXJfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBs YXkucHBfZnVuY3M7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfY3VycmVudF9wb3dl cl9zdGF0ZSkgewogCQkqc3RhdGUgPSBhZGV2LT5wbS5kcG0udXNlcl9zdGF0ZTsKLQkJZ290byBv dXQ7CisJCXJldHVybjsKIAl9CiAKIAkqc3RhdGUgPSBwcF9mdW5jcy0+Z2V0X2N1cnJlbnRfcG93 ZXJfc3RhdGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CkBAIC0xMDI3LDE2ICs4NTcsMTQg QEAgdm9pZCBhbWRncHVfZHBtX2dldF9jdXJyZW50X3Bvd2VyX3N0YXRlKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCSAgICAqc3RhdGUgPiBQT1dFUl9TVEFURV9UWVBFX0lOVEVSTkFMXzNE UEVSRikKIAkJKnN0YXRlID0gYWRldi0+cG0uZHBtLnVzZXJfc3RhdGU7CiAKLW91dDoKLQltdXRl eF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm47CiB9CiAKIHZvaWQgYW1kZ3B1X2Rw bV9zZXRfcG93ZXJfc3RhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJZW51bSBh bWRfcG1fc3RhdGVfdHlwZSBzdGF0ZSkKIHsKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0JYWRldi0+cG0uZHBtLnVzZXJfc3RhdGUgPSBzdGF0ZTsKLQltdXRleF91bmxvY2soJmFkZXYt PnBtLm11dGV4KTsKKwlzY29wZWRfZ3VhcmQobXV0ZXgsICZhZGV2LT5wbS5tdXRleCkKKwkJYWRl di0+cG0uZHBtLnVzZXJfc3RhdGUgPSBzdGF0ZTsKIAogCWlmIChpc19zdXBwb3J0X3N3X3NtdShh ZGV2KSkKIAkJcmV0dXJuOwpAQCAtMTA1NSwxMiArODgzLDExIEBAIGVudW0gYW1kX2RwbV9mb3Jj ZWRfbGV2ZWwgYW1kZ3B1X2RwbV9nZXRfcGVyZm9ybWFuY2VfbGV2ZWwoc3RydWN0IGFtZGdwdV9k ZXZpY2UKIAlpZiAoIXBwX2Z1bmNzKQogCQlyZXR1cm4gQU1EX0RQTV9GT1JDRURfTEVWRUxfQVVU TzsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYt PnBtLm11dGV4KTsKIAlpZiAocHBfZnVuY3MtPmdldF9wZXJmb3JtYW5jZV9sZXZlbCkKIAkJbGV2 ZWwgPSBwcF9mdW5jcy0+Z2V0X3BlcmZvcm1hbmNlX2xldmVsKGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGUpOwogCWVsc2UKIAkJbGV2ZWwgPSBhZGV2LT5wbS5kcG0uZm9yY2VkX2xldmVsOwotCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogCiAJcmV0dXJuIGxldmVsOwogfQpAQCAtMTE1 MSwxNyArOTc4LDEzIEBAIGludCBhbWRncHVfZHBtX2dldF9wcF9udW1fc3RhdGVzKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAogCQkJCSBzdHJ1Y3QgcHBfc3RhdGVzX2luZm8gKnN0YXRlcykK IHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxh eS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9wcF9udW1f c3RhdGVzKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9wcF9udW1fc3RhdGVzKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBw X2Z1bmNzLT5nZXRfcHBfbnVtX3N0YXRlcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJ CQkgIHN0YXRlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4g cmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9kaXNwYXRjaF90YXNrKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LApAQCAtMTE2OSwyNCArOTkyLDE5IEBAIGludCBhbWRncHVfZHBtX2Rpc3BhdGNo X3Rhc2soc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgICBlbnVtIGFtZF9wbV9z dGF0ZV90eXBlICp1c2VyX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBw X2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYg KCFwcF9mdW5jcy0+ZGlzcGF0Y2hfdGFza3MpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+ZGlzcGF0Y2hfdGFz a3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmRpc3BhdGNoX3Rhc2tzKGFkZXYtPnBvd2VycGxheS5w cF9oYW5kbGUsCiAJCQkJICAgICAgIHRhc2tfaWQsCiAJCQkJICAgICAgIHVzZXJfc3RhdGUpOwot CW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50 IGFtZGdwdV9kcG1fZ2V0X3BwX3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBjaGFy ICoqdGFibGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2 LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXRhYmxlKQogCQly ZXR1cm4gLUVJTlZBTDsKQEAgLTExOTQsMTIgKzEwMTIsOSBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRf cHBfdGFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGNoYXIgKip0YWJsZSkKIAlpZiAo YW1kZ3B1X3NyaW92X3ZmKGFkZXYpIHx8ICFwcF9mdW5jcy0+Z2V0X3BwX3RhYmxlIHx8IGFkZXYt PnNjcG1fZW5hYmxlZCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfcHBfdGFibGUoYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKLQkJCQkgICAgIHRhYmxlKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQotCXJldHVybiByZXQ7CisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7 CisJcmV0dXJuID0gcHBfZnVuY3MtPmdldF9wcF90YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFu ZGxlLAorCQkJCSAgICAgdGFibGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfZmluZV9ncmFp bl9jbGtfdm9sKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTIwOCwxOSArMTAyMywx NSBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfZmluZV9ncmFpbl9jbGtfdm9sKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAogCQkJCSAgICAgIHVpbnQzMl90IHNpemUpCiB7CiAJY29uc3Qgc3RydWN0 IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50 IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfZmluZV9ncmFpbl9jbGtfdm9sKQogCQly ZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5j cy0+c2V0X2ZpbmVfZ3JhaW5fY2xrX3ZvbChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiA9IHBwX2Z1bmNzLT5zZXRfZmlu ZV9ncmFpbl9jbGtfdm9sKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgICB0 eXBlLAogCQkJCQkgICAgICAgaW5wdXQsCiAJCQkJCSAgICAgICBzaXplKTsKLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBt X29kbl9lZGl0X2RwbV90YWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTEyMjks MTkgKzEwNDAsMTUgQEAgaW50IGFtZGdwdV9kcG1fb2RuX2VkaXRfZHBtX3RhYmxlKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgdWludDMyX3Qgc2l6ZSkKIHsKIAljb25zdCBzdHJ1 Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlp bnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPm9kbl9lZGl0X2RwbV90YWJsZSkKIAkJcmV0 dXJuIDA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3Mt Pm9kbl9lZGl0X2RwbV90YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11 dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+b2RuX2VkaXRfZHBtX3Rh YmxlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgIHR5cGUsCiAJCQkJCSAgIGlu cHV0LAogCQkJCQkgICBzaXplKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQot CXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2VtaXRfY2xvY2tfbGV2ZWxzKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTI1MCw1MiArMTA1Nyw0MCBAQCBpbnQgYW1kZ3B1 X2RwbV9lbWl0X2Nsb2NrX2xldmVscyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkg IGludCAqb2Zmc2V0KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0g YWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5j cy0+ZW1pdF9jbG9ja19sZXZlbHMpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JbXV0ZXhfbG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5lbWl0X2Nsb2NrX2xldmVscyhhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwor CXJldHVybiBwcF9mdW5jcy0+ZW1pdF9jbG9ja19sZXZlbHMoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwKIAkJCQkJICAgdHlwZSwKIAkJCQkJICAgYnVmLAogCQkJCQkgICBvZmZzZXQpOwotCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFt ZGdwdV9kcG1fc2V0X3BwZmVhdHVyZV9zdGF0dXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs CiAJCQkJICAgIHVpbnQ2NF90IHBwZmVhdHVyZV9tYXNrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1k X3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0 ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9wcGZlYXR1cmVfc3RhdHVzKQogCQlyZXR1cm4g MDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0 X3BwZmVhdHVyZV9zdGF0dXMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRl eCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9wcGZlYXR1cmVfc3Rh dHVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgcHBmZWF0dXJlX21hc2tz KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAK IGludCBhbWRncHVfZHBtX2dldF9wcGZlYXR1cmVfc3RhdHVzKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCBjaGFyICpidWYpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVu Y3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBw X2Z1bmNzLT5nZXRfcHBmZWF0dXJlX3N0YXR1cykKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9wcGZlYXR1cmVfc3RhdHVz KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcHBmZWF0dXJlX3N0YXR1cyhhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLAogCQkJCQkgICAgIGJ1Zik7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9mb3JjZV9jbG9ja19s ZXZlbChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKQEAgLTEzMDMsMzMgKzEwOTgsMjUgQEAg aW50IGFtZGdwdV9kcG1fZm9yY2VfY2xvY2tfbGV2ZWwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCiAJCQkJIHVpbnQzMl90IG1hc2spCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAq cHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlp ZiAoIXBwX2Z1bmNzLT5mb3JjZV9jbG9ja19sZXZlbCkKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmZvcmNlX2Nsb2NrX2xldmVs KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRl eCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5mb3JjZV9jbG9ja19sZXZlbChhZGV2LT5wb3dlcnBsYXku cHBfaGFuZGxlLAogCQkJCQkgIHR5cGUsCiAJCQkJCSAgbWFzayk7Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRf c2Nsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1k X3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0 ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9zY2xrX29kKQogCQlyZXR1cm4gLUVPUE5PVFNV UFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdl dF9zY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3VubG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9zY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9o YW5kbGUpOwogfQogCiBpbnQgYW1kZ3B1X2RwbV9zZXRfc2Nsa19vZChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgdWludDMyX3QgdmFsdWUpCkBAIC0xMzM5LDEwICsxMTI2LDEwIEBAIGludCBh bWRncHVfZHBtX3NldF9zY2xrX29kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJf dCB2YWx1ZSkKIAlpZiAoaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9U U1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlpZiAocHBfZnVuY3MtPnNl dF9zY2xrX29kKQotCQlwcF9mdW5jcy0+c2V0X3NjbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwgdmFsdWUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCXNjb3BlZF9n dWFyZChtdXRleCwgJmFkZXYtPnBtLm11dGV4KSB7CisJCWlmIChwcF9mdW5jcy0+c2V0X3NjbGtf b2QpCisJCQlwcF9mdW5jcy0+c2V0X3NjbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwg dmFsdWUpOworCX0KIAogCWlmIChhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soYWRldiwKIAkJCQkg ICAgIEFNRF9QUF9UQVNLX1JFQURKVVNUX1BPV0VSX1NUQVRFLApAQCAtMTM1NywxNiArMTE0NCwx MiBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfc2Nsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgdWludDMyX3QgdmFsdWUpCiBpbnQgYW1kZ3B1X2RwbV9nZXRfbWNsa19vZChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5j cyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBf ZnVuY3MtPmdldF9tY2xrX29kKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9tY2xrX29kKGFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0J cmV0dXJuIHJldDsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBf ZnVuY3MtPmdldF9tY2xrX29kKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOwogfQogCiBpbnQg YW1kZ3B1X2RwbV9zZXRfbWNsa19vZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMy X3QgdmFsdWUpCkBAIC0xMzc2LDEwICsxMTU5LDEwIEBAIGludCBhbWRncHVfZHBtX3NldF9tY2xr X29kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCB2YWx1ZSkKIAlpZiAoaXNf c3VwcG9ydF9zd19zbXUoYWRldikpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQlpZiAocHBfZnVuY3MtPnNldF9tY2xrX29kKQotCQlwcF9m dW5jcy0+c2V0X21jbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdmFsdWUpOwotCW11 dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCXNjb3BlZF9ndWFyZChtdXRleCwgJmFkZXYt PnBtLm11dGV4KSB7CisJCWlmIChwcF9mdW5jcy0+c2V0X21jbGtfb2QpCisJCQlwcF9mdW5jcy0+ c2V0X21jbGtfb2QoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdmFsdWUpOworCX0KIAogCWlm IChhbWRncHVfZHBtX2Rpc3BhdGNoX3Rhc2soYWRldiwKIAkJCQkgICAgIEFNRF9QUF9UQVNLX1JF QURKVVNUX1BPV0VSX1NUQVRFLApAQCAtMTM5NSwxNzAgKzExNzgsMTMwIEBAIGludCBhbWRncHVf ZHBtX2dldF9wb3dlcl9wcm9maWxlX21vZGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJ CQkJICAgICAgY2hhciAqYnVmKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1 bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFw cF9mdW5jcy0+Z2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwog Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfcG93 ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgp KCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcG93ZXJfcHJvZmlsZV9t b2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgICBidWYpOwotCW11dGV4 X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdw dV9kcG1fc2V0X3Bvd2VyX3Byb2ZpbGVfbW9kZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwK IAkJCQkgICAgICBsb25nICppbnB1dCwgdWludDMyX3Qgc2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3Qg YW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQg cmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPnNldF9wb3dlcl9wcm9maWxlX21vZGUpCiAJCXJl dHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5zZXRfcG93ZXJfcHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3Vh cmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfcG93ZXJf cHJvZmlsZV9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICAgICBpbnB1 dCwKIAkJCQkJICAgICAgIHNpemUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwot Ci0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2dwdV9tZXRyaWNzKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCB2b2lkICoqdGFibGUpCiB7CiAJY29uc3Qgc3RydWN0IGFt ZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJl dCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZ3B1X21ldHJpY3MpCiAJCXJldHVybiAwOwog Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfZ3B1 X21ldHJpY3MoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYt PnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9ncHVfbWV0cmljcyhhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAogCQkJCQl0YWJsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBzc2l6ZV90IGFtZGdwdV9kcG1fZ2V0X3BtX21l dHJpY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHZvaWQgKnBtX21ldHJpY3MsCiAJCQkJ ICBzaXplX3Qgc2l6ZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9 IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVu Y3MtPmdldF9wbV9tZXRyaWNzKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9wbV9tZXRyaWNzKGFkZXYt PnBvd2VycGxheS5wcF9oYW5kbGUsIHBtX21ldHJpY3MsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5w bS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfcG1fbWV0cmljcyhhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLCBwbV9tZXRyaWNzLAogCQkJCSAgICAgICBzaXplKTsKLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBt X2dldF9mYW5fY29udHJvbF9tb2RlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAg ICB1aW50MzJfdCAqZmFuX21vZGUpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBf ZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAo IXBwX2Z1bmNzLT5nZXRfZmFuX2NvbnRyb2xfbW9kZSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwog Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfZmFu X2NvbnRyb2xfbW9kZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgm YWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2Zhbl9jb250cm9sX21vZGUo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJICAgICBmYW5fbW9kZSk7Ci0JbXV0ZXhf dW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9zZXRfZmFuX3NwZWVkX3B3bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkg dWludDMyX3Qgc3BlZWQpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3Mg PSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1 bmNzLT5zZXRfZmFuX3NwZWVkX3B3bSkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhf bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3B3 bShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0 ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X2Zhbl9zcGVlZF9wd20oYWRldi0+cG93ZXJwbGF5 LnBwX2hhbmRsZSwKIAkJCQkJICBzcGVlZCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfZmFuX3NwZWVkX3B3 bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgdWludDMyX3QgKnNwZWVkKQogewog CWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBw X2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X2Zhbl9zcGVlZF9w d20pCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Zhbl9zcGVlZF9wd20oYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVu Y3MtPmdldF9mYW5fc3BlZWRfcHdtKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAg c3BlZWQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK IH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X2Zhbl9zcGVlZF9ycG0oc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkJIHVpbnQzMl90ICpzcGVlZCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3Bt X2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0g MDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9mYW5fc3BlZWRfcnBtKQogCQlyZXR1cm4gLUVPUE5P VFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3Mt PmdldF9mYW5fc3BlZWRfcnBtKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfZmFuX3NwZWVkX3Jw bShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgIHNwZWVkKTsKLQltdXRleF91bmxv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBt X3NldF9mYW5fc3BlZWRfcnBtKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSB1aW50 MzJfdCBzcGVlZCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFk ZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3Mt PnNldF9mYW5fc3BlZWRfcnBtKQogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2Nr KCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPnNldF9mYW5fc3BlZWRfcnBtKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7 CisJcmV0dXJuIHBwX2Z1bmNzLT5zZXRfZmFuX3NwZWVkX3JwbShhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLAogCQkJCQkgIHNwZWVkKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsK LQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX3NldF9mYW5fY29udHJvbF9tb2Rl KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICB1aW50MzJfdCBtb2RlKQogewog CWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBw X2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X2Zhbl9jb250cm9s X21vZGUpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+c2V0X2Zhbl9jb250cm9sX21vZGUoYWRldi0+cG93ZXJw bGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4g cHBfZnVuY3MtPnNldF9mYW5fY29udHJvbF9tb2RlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CiAJCQkJCSAgICAgbW9kZSk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQly ZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfcG93ZXJfbGltaXQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xNTY3LDE5ICsxMzEwLDE1IEBAIGludCBhbWRncHVfZHBt X2dldF9wb3dlcl9saW1pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCSAgICAgICBl bnVtIHBwX3Bvd2VyX3R5cGUgcG93ZXJfdHlwZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1 bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsK IAogCWlmICghcHBfZnVuY3MtPmdldF9wb3dlcl9saW1pdCkKIAkJcmV0dXJuIC1FT1BOT1RTVVBQ OwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRf cG93ZXJfbGltaXQoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9wb3dlcl9saW1pdChhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQlsaW1pdCwKIAkJCQkJcHBfbGltaXRfbGV2ZWwsCiAJ CQkJCXBvd2VyX3R5cGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0 dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3Bvd2VyX2xpbWl0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LApAQCAtMTU4NywxNyArMTMyNiwxMyBAQCBpbnQgYW1kZ3B1X2RwbV9z ZXRfcG93ZXJfbGltaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgICAgdWlu dDMyX3QgbGltaXQpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBh ZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNz LT5zZXRfcG93ZXJfbGltaXQpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfcG93ZXJfbGltaXQoYWRldi0+cG93 ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1 cm4gcHBfZnVuY3MtPnNldF9wb3dlcl9saW1pdChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAog CQkJCQlsaW1pdF90eXBlLCBsaW1pdCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7 Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9pc19jY2xrX2RwbV9zdXBwb3J0 ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBAIC0xNjA3LDkgKzEzNDIsOCBAQCBpbnQg YW1kZ3B1X2RwbV9pc19jY2xrX2RwbV9zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCiAJaWYgKCFpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkKIAkJcmV0dXJuIGZhbHNlOwogCi0J bXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0 ZXgpOwogCWNjbGtfZHBtX3N1cHBvcnRlZCA9IGlzX3N1cHBvcnRfY2Nsa19kcG0oYWRldik7Ci0J bXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiAKIAlyZXR1cm4gKGludCljY2xrX2RwbV9z dXBwb3J0ZWQ7CiB9CkBAIC0xNjIyLDEwICsxMzU2LDkgQEAgaW50IGFtZGdwdV9kcG1fZGVidWdm c19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xldmVsKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGUKIAlpZiAoIXBwX2Z1bmNzLT5kZWJ1Z2ZzX3ByaW50X2N1cnJlbnRfcGVyZm9ybWFuY2VfbGV2 ZWwpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4 KTsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlwcF9mdW5jcy0+ZGVidWdmc19w cmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xldmVsKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CiAJCQkJCQkJICBtKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKIAogCXJldHVy biAwOwogfQpAQCAtMTYzNSwxOCArMTM2OCwxNCBAQCBpbnQgYW1kZ3B1X2RwbV9nZXRfc211X3By dl9idWZfZGV0YWlscyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgICAgICAgc2l6 ZV90ICpzaXplKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRl di0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+ Z2V0X3NtdV9wcnZfYnVmX2RldGFpbHMpCiAJCXJldHVybiAtRU5PU1lTOwogCi0JbXV0ZXhfbG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfc211X3Bydl9idWZfZGV0 YWlscyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0u bXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3NtdV9wcnZfYnVmX2RldGFpbHMoYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCWFkZHIsCiAJCQkJCQlzaXplKTsKLQltdXRleF91 bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVf ZHBtX2lzX292ZXJkcml2ZV9zdXBwb3J0ZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCkBA IC0xNjk4LDcgKzE0MjcsNiBAQCBpbnQgYW1kZ3B1X2RwbV9zZXRfcHBfdGFibGUoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkgICAgc2l6ZV90IHNpemUpCiB7CiAJY29uc3Qgc3RydWN0 IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50 IHJldCA9IDA7CiAKIAlpZiAoIWJ1ZiB8fCAhc2l6ZSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0x NzA2LDEzICsxNDM0LDEwIEBAIGludCBhbWRncHVfZHBtX3NldF9wcF90YWJsZShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKIAlpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpIHx8ICFwcF9mdW5j cy0+c2V0X3BwX3RhYmxlIHx8IGFkZXYtPnNjcG1fZW5hYmxlZCkKIAkJcmV0dXJuIC1FT1BOT1RT VVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5z ZXRfcHBfdGFibGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFk ZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnNldF9wcF90YWJsZShhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAogCQkJCSAgICAgYnVmLAogCQkJCSAgICAgc2l6ZSk7Ci0JbXV0ZXhf dW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1 X2RwbV9nZXRfbnVtX2NwdV9jb3JlcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTE3 MzcsMTcgKzE0NjIsMTMgQEAgaW50IGFtZGdwdV9kcG1fZGlzcGxheV9jb25maWd1cmF0aW9uX2No YW5nZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkJICAgIGNvbnN0IHN0cnVjdCBh bWRfcHBfZGlzcGxheV9jb25maWd1cmF0aW9uICppbnB1dCkKIHsKIAljb25zdCBzdHJ1Y3QgYW1k X3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0 ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmRpc3BsYXlfY29uZmlndXJhdGlvbl9jaGFuZ2UpCiAJ CXJldHVybiAwOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1 bmNzLT5kaXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5k bGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5k aXNwbGF5X2NvbmZpZ3VyYXRpb25fY2hhbmdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJ CQkJCQkgICAgIGlucHV0KTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJl dHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LApAQCAtMTc1NSwzNSArMTQ3NiwyNyBAQCBpbnQgYW1kZ3B1X2Rw bV9nZXRfY2xvY2tfYnlfdHlwZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJCQkgc3Ry dWN0IGFtZF9wcF9jbG9ja3MgKmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNz ICpwcF9mdW5jcyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAog CWlmICghcHBfZnVuY3MtPmdldF9jbG9ja19ieV90eXBlKQogCQlyZXR1cm4gMDsKIAotCW11dGV4 X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5 cGUoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11 dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9jbG9ja19ieV90eXBlKGFkZXYtPnBvd2VycGxh eS5wcF9oYW5kbGUsCiAJCQkJCSAgdHlwZSwKIAkJCQkJICBjbG9ja3MpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1f Z2V0X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Nsa3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCiAJCQkJCQlzdHJ1Y3QgYW1kX3BwX3NpbXBsZV9jbG9ja19pbmZvICpjbG9ja3MpCiB7CiAJ Y29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBf ZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5nZXRfZGlzcGxheV9tb2Rl X3ZhbGlkYXRpb25fY2xvY2tzKQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBt Lm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Rpc3BsYXlfbW9kZV92YWxpZGF0aW9uX2Ns b2NrcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0u bXV0ZXgpOworCXJldHVybiA9IHBwX2Z1bmNzLT5nZXRfZGlzcGxheV9tb2RlX3ZhbGlkYXRpb25f Y2xvY2tzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJICAgY2xvY2tzKTsKLQlt dXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGludCBh bWRncHVfZHBtX2dldF9jbG9ja19ieV90eXBlX3dpdGhfbGF0ZW5jeShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKQEAgLTE3OTEsMTggKzE1MDQsMTQgQEAgaW50IGFtZGdwdV9kcG1fZ2V0X2Ns b2NrX2J5X3R5cGVfd2l0aF9sYXRlbmN5KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJ CQkgICAgICBzdHJ1Y3QgcHBfY2xvY2tfbGV2ZWxzX3dpdGhfbGF0ZW5jeSAqY2xvY2tzKQogewog CWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBw X2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5 cGVfd2l0aF9sYXRlbmN5KQogCQlyZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF9sYXRlbmN5KGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7 CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfY2xvY2tfYnlfdHlwZV93aXRoX2xhdGVuY3koYWRldi0+ cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJCSAgICAgICB0eXBlLAogCQkJCQkJICAgICAgIGNs b2Nrcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0Owog fQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfY2xvY2tfYnlfdHlwZV93aXRoX3ZvbHRhZ2Uoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCkBAIC0xODEwLDY5ICsxNTE5LDUzIEBAIGludCBhbWRncHVf ZHBtX2dldF9jbG9ja19ieV90eXBlX3dpdGhfdm9sdGFnZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwKIAkJCQkJICAgICAgc3RydWN0IHBwX2Nsb2NrX2xldmVsc193aXRoX3ZvbHRhZ2UgKmNs b2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYtPnBv d2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdldF9j bG9ja19ieV90eXBlX3dpdGhfdm9sdGFnZSkKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmdldF9jbG9ja19ieV90eXBlX3dpdGhf dm9sdGFnZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF92b2x0 YWdlKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkgICAgICAgdHlwZSwKIAkJCQkJ CSAgICAgICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0 dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X3dhdGVybWFya3NfZm9yX2Nsb2Nrc19y YW5nZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAgICAgICB2b2lkICpjbG9j a19yYW5nZXMpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2 LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5z ZXRfd2F0ZXJtYXJrc19mb3JfY2xvY2tzX3JhbmdlcykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwog Ci0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfd2F0 ZXJtYXJrc19mb3JfY2xvY2tzX3JhbmdlcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1 YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0X3dhdGVy bWFya3NfZm9yX2Nsb2Nrc19yYW5nZXMoYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKIAkJCQkJ CQkgY2xvY2tfcmFuZ2VzKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJl dHVybiByZXQ7CiB9CiAKIGludCBhbWRncHVfZHBtX2Rpc3BsYXlfY2xvY2tfdm9sdGFnZV9yZXF1 ZXN0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkgICAgIHN0cnVjdCBwcF9kaXNw bGF5X2Nsb2NrX3JlcXVlc3QgKmNsb2NrKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3Mg KnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAwOwogCiAJ aWYgKCFwcF9mdW5jcy0+ZGlzcGxheV9jbG9ja192b2x0YWdlX3JlcXVlc3QpCiAJCXJldHVybiAt RU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9m dW5jcy0+ZGlzcGxheV9jbG9ja192b2x0YWdlX3JlcXVlc3QoYWRldi0+cG93ZXJwbGF5LnBwX2hh bmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3Mt PmRpc3BsYXlfY2xvY2tfdm9sdGFnZV9yZXF1ZXN0KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUs CiAJCQkJCQkgICAgICBjbG9jayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0K LQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfY3VycmVudF9jbG9ja3Moc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJICBzdHJ1Y3QgYW1kX3BwX2Nsb2NrX2luZm8g KmNsb2NrcykKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5jcyA9IGFkZXYt PnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBfZnVuY3MtPmdl dF9jdXJyZW50X2Nsb2NrcykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygm YWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNzLT5nZXRfY3VycmVudF9jbG9ja3MoYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsK KwlyZXR1cm4gcHBfZnVuY3MtPmdldF9jdXJyZW50X2Nsb2NrcyhhZGV2LT5wb3dlcnBsYXkucHBf aGFuZGxlLAogCQkJCQkgICBjbG9ja3MpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCi0JcmV0dXJuIHJldDsKIH0KIAogdm9pZCBhbWRncHVfZHBtX25vdGlmeV9zbXVfZW5hYmxl X3B3ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKQEAgLTE4ODIsNDMgKzE1NzUsMzQgQEAg dm9pZCBhbWRncHVfZHBtX25vdGlmeV9zbXVfZW5hYmxlX3B3ZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldikKIAlpZiAoIXBwX2Z1bmNzLT5ub3RpZnlfc211X2VuYWJsZV9wd2UpCiAJCXJldHVy bjsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKKwlndWFyZChtdXRleCkoJmFkZXYt PnBtLm11dGV4KTsKIAlwcF9mdW5jcy0+bm90aWZ5X3NtdV9lbmFibGVfcHdlKGFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogfQogCiBp bnQgYW1kZ3B1X2RwbV9zZXRfYWN0aXZlX2Rpc3BsYXlfY291bnQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCiAJCQkJCXVpbnQzMl90IGNvdW50KQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1f ZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAw OwogCiAJaWYgKCFwcF9mdW5jcy0+c2V0X2FjdGl2ZV9kaXNwbGF5X2NvdW50KQogCQlyZXR1cm4g LUVPUE5PVFNVUFA7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBf ZnVuY3MtPnNldF9hY3RpdmVfZGlzcGxheV9jb3VudChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxl LAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+c2V0 X2FjdGl2ZV9kaXNwbGF5X2NvdW50KGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkg Y291bnQpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsK IH0KIAogaW50IGFtZGdwdV9kcG1fc2V0X21pbl9kZWVwX3NsZWVwX2RjZWZjbGsoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCSAgdWludDMyX3QgY2xvY2spCiB7CiAJY29uc3Qgc3Ry dWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBsYXkucHBfZnVuY3M7Ci0J aW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5zZXRfbWluX2RlZXBfc2xlZXBfZGNlZmNs aykKIAkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgp OwotCXJldCA9IHBwX2Z1bmNzLT5zZXRfbWluX2RlZXBfc2xlZXBfZGNlZmNsayhhZGV2LT5wb3dl cnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOworCXJldHVy biBwcF9mdW5jcy0+c2V0X21pbl9kZWVwX3NsZWVwX2RjZWZjbGsoYWRldi0+cG93ZXJwbGF5LnBw X2hhbmRsZSwKIAkJCQkJCSAgIGNsb2NrKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4 KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIHZvaWQgYW1kZ3B1X2RwbV9zZXRfaGFyZF9taW5fZGNl ZmNsa19ieV9mcmVxKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LApAQCAtMTkyOSwxMCArMTYx Myw5IEBAIHZvaWQgYW1kZ3B1X2RwbV9zZXRfaGFyZF9taW5fZGNlZmNsa19ieV9mcmVxKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAogCWlmICghcHBfZnVuY3MtPnNldF9oYXJkX21pbl9kY2Vm Y2xrX2J5X2ZyZXEpCiAJCXJldHVybjsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsK KwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKIAlwcF9mdW5jcy0+c2V0X2hhcmRfbWlu X2RjZWZjbGtfYnlfZnJlcShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgICAg Y2xvY2spOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOwogfQogCiB2b2lkIGFtZGdw dV9kcG1fc2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwKQEAgLTE5NDMsNDQgKzE2MjYsMzUgQEAgdm9pZCBhbWRncHVfZHBtX3NldF9oYXJkX21pbl9m Y2xrX2J5X2ZyZXEoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJaWYgKCFwcF9mdW5jcy0+ c2V0X2hhcmRfbWluX2ZjbGtfYnlfZnJlcSkKIAkJcmV0dXJuOwogCi0JbXV0ZXhfbG9jaygmYWRl di0+cG0ubXV0ZXgpOworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0ubXV0ZXgpOwogCXBwX2Z1bmNz LT5zZXRfaGFyZF9taW5fZmNsa19ieV9mcmVxKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJ CQkJCSAgICBjbG9jayk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRleCk7CiB9CiAKIGlu dCBhbWRncHVfZHBtX2Rpc3BsYXlfZGlzYWJsZV9tZW1vcnlfY2xvY2tfc3dpdGNoKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkJICAgYm9vbCBkaXNhYmxlX21lbW9yeV9jbG9ja19z d2l0Y2gpCiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5w b3dlcnBsYXkucHBfZnVuY3M7Ci0JaW50IHJldCA9IDA7CiAKIAlpZiAoIXBwX2Z1bmNzLT5kaXNw bGF5X2Rpc2FibGVfbWVtb3J5X2Nsb2NrX3N3aXRjaCkKIAkJcmV0dXJuIDA7CiAKLQltdXRleF9s b2NrKCZhZGV2LT5wbS5tdXRleCk7Ci0JcmV0ID0gcHBfZnVuY3MtPmRpc3BsYXlfZGlzYWJsZV9t ZW1vcnlfY2xvY2tfc3dpdGNoKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQobXV0 ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5kaXNwbGF5X2Rpc2FibGVf bWVtb3J5X2Nsb2NrX3N3aXRjaChhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkJCSAg ICBkaXNhYmxlX21lbW9yeV9jbG9ja19zd2l0Y2gpOwotCW11dGV4X3VubG9jaygmYWRldi0+cG0u bXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogaW50IGFtZGdwdV9kcG1fZ2V0X21heF9zdXN0 YWluYWJsZV9jbG9ja3NfYnlfZGMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCiAJCQkJCQlz dHJ1Y3QgcHBfc211X252X2Nsb2NrX3RhYmxlICptYXhfY2xvY2tzKQogewogCWNvbnN0IHN0cnVj dCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWlu dCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X21heF9zdXN0YWluYWJsZV9jbG9ja3Nf YnlfZGMpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11 dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X21heF9zdXN0YWluYWJsZV9jbG9ja3NfYnlfZGMo YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSwKKwlndWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4 KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF9tYXhfc3VzdGFpbmFibGVfY2xvY2tzX2J5X2RjKGFk ZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCQkJIG1heF9jbG9ja3MpOwotCW11dGV4X3Vu bG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogZW51bSBwcF9zbXVf c3RhdHVzIGFtZGdwdV9kcG1fZ2V0X3VjbGtfZHBtX3N0YXRlcyhzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKQEAgLTE5ODgsMzUgKzE2NjIsMjcgQEAgZW51bSBwcF9zbXVfc3RhdHVzIGFtZGdw dV9kcG1fZ2V0X3VjbGtfZHBtX3N0YXRlcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKIAkJ CQkJCSAgdW5zaWduZWQgaW50ICpudW1fc3RhdGVzKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1f ZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQgPSAw OwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3VjbGtfZHBtX3N0YXRlcykKIAkJcmV0dXJuIC1FT1BO T1RTVVBQOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCXJldCA9IHBwX2Z1bmNz LT5nZXRfdWNsa19kcG1fc3RhdGVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCisJZ3VhcmQo bXV0ZXgpKCZhZGV2LT5wbS5tdXRleCk7CisJcmV0dXJuIHBwX2Z1bmNzLT5nZXRfdWNsa19kcG1f c3RhdGVzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsCiAJCQkJCSAgICBjbG9ja192YWx1ZXNf aW5fa2h6LAogCQkJCQkgICAgbnVtX3N0YXRlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5t dXRleCk7Ci0KLQlyZXR1cm4gcmV0OwogfQogCiBpbnQgYW1kZ3B1X2RwbV9nZXRfZHBtX2Nsb2Nr X3RhYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgIHN0cnVjdCBkcG1fY2xv Y2tzICpjbG9ja190YWJsZSkKIHsKIAljb25zdCBzdHJ1Y3QgYW1kX3BtX2Z1bmNzICpwcF9mdW5j cyA9IGFkZXYtPnBvd2VycGxheS5wcF9mdW5jczsKLQlpbnQgcmV0ID0gMDsKIAogCWlmICghcHBf ZnVuY3MtPmdldF9kcG1fY2xvY2tfdGFibGUpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11 dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X2RwbV9jbG9j a190YWJsZShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLAorCWd1YXJkKG11dGV4KSgmYWRldi0+ cG0ubXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X2RwbV9jbG9ja190YWJsZShhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLAogCQkJCQkgICAgY2xvY2tfdGFibGUpOwotCW11dGV4X3VubG9j aygmYWRldi0+cG0ubXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogLyoqCkBAIC0yMDM3LDE3 ICsxNzAzLDEzIEBAIHNzaXplX3QgYW1kZ3B1X2RwbV9nZXRfdGVtcF9tZXRyaWNzKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LAogCQkJCSAgICBlbnVtIHNtdV90ZW1wX21ldHJpY190eXBlIHR5 cGUsIHZvaWQgKnRhYmxlKQogewogCWNvbnN0IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNz ID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzOwotCWludCByZXQ7CiAKIAlpZiAoIXBwX2Z1bmNz LT5nZXRfdGVtcF9tZXRyaWNzIHx8CiAJICAgICFhbWRncHVfZHBtX2lzX3RlbXBfbWV0cmljc19z dXBwb3J0ZWQoYWRldiwgdHlwZSkpCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCW11dGV4X2xv Y2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5jcy0+Z2V0X3RlbXBfbWV0cmljcyhh ZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlLCB0YWJsZSk7Ci0JbXV0ZXhfdW5sb2NrKCZh ZGV2LT5wbS5tdXRleCk7Ci0KLQlyZXR1cm4gcmV0OworCWd1YXJkKG11dGV4KSgmYWRldi0+cG0u bXV0ZXgpOworCXJldHVybiBwcF9mdW5jcy0+Z2V0X3RlbXBfbWV0cmljcyhhZGV2LT5wb3dlcnBs YXkucHBfaGFuZGxlLCB0eXBlLCB0YWJsZSk7CiB9CiAKIC8qKgpAQCAtMjA2NCwxOSArMTcyNiwx NSBAQCBib29sIGFtZGdwdV9kcG1faXNfdGVtcF9tZXRyaWNzX3N1cHBvcnRlZChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwKIAkJCQkJICBlbnVtIHNtdV90ZW1wX21ldHJpY190eXBlIHR5cGUp CiB7CiAJY29uc3Qgc3RydWN0IGFtZF9wbV9mdW5jcyAqcHBfZnVuY3MgPSBhZGV2LT5wb3dlcnBs YXkucHBfZnVuY3M7Ci0JYm9vbCBzdXBwb3J0X3RlbXBfbWV0cmljcyA9IGZhbHNlOwogCiAJaWYg KCFwcF9mdW5jcy0+dGVtcF9tZXRyaWNzX2lzX3N1cHBvcnRlZCkKLQkJcmV0dXJuIHN1cHBvcnRf dGVtcF9tZXRyaWNzOworCQlyZXR1cm4gZmFsc2U7CiAKLQlpZiAoaXNfc3VwcG9ydF9zd19zbXUo YWRldikpIHsKLQkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwotCQlzdXBwb3J0X3RlbXBf bWV0cmljcyA9Ci0JCQlwcF9mdW5jcy0+dGVtcF9tZXRyaWNzX2lzX3N1cHBvcnRlZChhZGV2LT5w b3dlcnBsYXkucHBfaGFuZGxlLCB0eXBlKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5wbS5tdXRl eCk7Ci0JfQorCWlmICghaXNfc3VwcG9ydF9zd19zbXUoYWRldikpCisJCXJldHVybiBmYWxzZTsK IAotCXJldHVybiBzdXBwb3J0X3RlbXBfbWV0cmljczsKKwlndWFyZChtdXRleCkoJmFkZXYtPnBt Lm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPnRlbXBfbWV0cmljc19pc19zdXBwb3J0ZWQoYWRl di0+cG93ZXJwbGF5LnBwX2hhbmRsZSwgdHlwZSk7CiB9CiAKIC8qKgpAQCAtMjA5OCwxNyArMTc1 NiwxMyBAQCBzc2l6ZV90IGFtZGdwdV9kcG1fZ2V0X3hjcF9tZXRyaWNzKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LCBpbnQgeGNwX2lkLAogCQkJCSAgIHZvaWQgKnRhYmxlKQogewogCWNvbnN0 IHN0cnVjdCBhbWRfcG1fZnVuY3MgKnBwX2Z1bmNzID0gYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNz OwotCWludCByZXQgPSAwOwogCiAJaWYgKCFwcF9mdW5jcy0+Z2V0X3hjcF9tZXRyaWNzKQogCQly ZXR1cm4gMDsKIAotCW11dGV4X2xvY2soJmFkZXYtPnBtLm11dGV4KTsKLQlyZXQgPSBwcF9mdW5j cy0+Z2V0X3hjcF9tZXRyaWNzKGFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUsIHhjcF9pZCwKKwln dWFyZChtdXRleCkoJmFkZXYtPnBtLm11dGV4KTsKKwlyZXR1cm4gcHBfZnVuY3MtPmdldF94Y3Bf bWV0cmljcyhhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCB4Y3BfaWQsCiAJCQkJCXRhYmxlKTsK LQltdXRleF91bmxvY2soJmFkZXYtPnBtLm11dGV4KTsKLQotCXJldHVybiByZXQ7CiB9CiAKIGNv bnN0IHN0cnVjdCByYXNfc211X2RydiAqYW1kZ3B1X2RwbV9nZXRfcmFzX3NtdV9kcml2ZXIoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCi0tIAoyLjQzLjAKCg==