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 X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8C50BC2D0DA for ; Thu, 26 Dec 2019 08:17:52 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D55F520882 for ; Thu, 26 Dec 2019 08:17:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=alsa-project.org header.i=@alsa-project.org header.b="ZsGafOKK" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D55F520882 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=renesas.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id F1C9816E2; Thu, 26 Dec 2019 09:16:59 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz F1C9816E2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1577348270; bh=6HS/DerdRgjDyJ/3Vhep9otQ9KP9W/PG+oQ6njvv+lI=; h=Date:From:To:In-Reply-To:References:Cc:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=ZsGafOKK8YFo/iZ0PESpziReg90SX2da+fDwh/tP1IHCPETA6qruAxJ5AuoN7xP5g Jx0cTtkhJF7AHDwub8w5+JxgLMONGxIvZQzssEg5zDjjZ1CK1M5wrAtHaNM9PkV9Mc ka+j4VPWCzHB1hkJM2cSgtPkCHbtnedfGuX6Z2XI= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 855FBF80138; Thu, 26 Dec 2019 09:16:59 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 94233F80139; Thu, 26 Dec 2019 09:16:58 +0100 (CET) Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by alsa1.perex.cz (Postfix) with ESMTP id EB466F8012E for ; Thu, 26 Dec 2019 09:16:50 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz EB466F8012E Date: 26 Dec 2019 17:16:47 +0900 X-IronPort-AV: E=Sophos;i="5.69,358,1571670000"; d="scan'208";a="35409083" Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie5.idc.renesas.com with ESMTP; 26 Dec 2019 17:16:47 +0900 Received: from morimoto-PC.renesas.com (unknown [10.166.18.140]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 66820400D0F0; Thu, 26 Dec 2019 17:16:47 +0900 (JST) Message-ID: <87tv5nsdqo.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto To: Bard liao In-Reply-To: <20191225191501.23848-2-yung-chuan.liao@linux.intel.com> References: <20191225191501.23848-1-yung-chuan.liao@linux.intel.com> <20191225191501.23848-2-yung-chuan.liao@linux.intel.com> User-Agent: Wanderlust/2.15.9 Emacs/24.5 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: multipart/mixed; boundary="Multipart_Thu_Dec_26_17:16:47_2019-1" Cc: alsa-devel@alsa-project.org, tiwai@suse.de, pierre-louis.bossart@linux.intel.com, liam.r.girdwood@linux.intel.com, broonie@kernel.org, bard.liao@intel.com Subject: Re: [alsa-devel] [PATCH RFC 1/3] ASoC: Add initial support for multiple CPU DAIs X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" --Multipart_Thu_Dec_26_17:16:47_2019-1 Content-Type: text/plain; charset=US-ASCII Hi Bard Actually I have plan to post semi-multi CPU DAI support as part of ASoC cleanup. The reason why "semi-multi" is that I can't test all features. It cares Multi-CPU as much as possible. Thus, your and my patches are 100% conflict :) But, it is OK for me. I'm happy to adjust to yours. Some comment from me > From: Shreyas NC > > ASoC core supports multiple codec DAIs but supports only a CPU DAI. > To support multiple cpu DAIs, add cpu_dai and num_cpu_dai in > snd_soc_dai_link and snd_soc_pcm_runtime structures similar to > support for codec_dai. This is intended as a preparatory patch to > eventually support the unification of the Codec and CPU DAI. > > Inline with multiple codec DAI approach, add support to allocate, > init, bind and probe multiple cpu_dai on init if driver specifies > that. Also add support to loop over multiple cpu_dai during > suspend and resume. > > This is intended as a preparatory patch to eventually unify the CPU > and Codec DAI into DAI components. > > Signed-off-by: Shreyas NC > Signed-off-by: Bard Liao > --- (snip) > @@ -1149,6 +1154,9 @@ struct snd_soc_pcm_runtime { > struct snd_soc_dai **codec_dais; > unsigned int num_codecs; > > + struct snd_soc_dai **cpu_dais; > + unsigned int num_cpu_dai; Codec is using "num_codecs"; So, I think "num_cpus" is better for CPU. > @@ -1020,14 +1036,6 @@ static int soc_dai_link_sanity_check(struct snd_soc_card *card, > return -EPROBE_DEFER; > } > > - /* FIXME */ > - if (link->num_cpus > 1) { > - dev_err(card->dev, > - "ASoC: multi cpu is not yet supported %s\n", > - link->name); > - return -EINVAL; > - } > - > /* > * CPU device may be specified by either name or OF node, but > * can be left unspecified, and will be matched based on DAI I think you want to sanity check for each CPU DAI by using for_each_rtd_cpu_dai() here, not only removing FIXME ? In my quick check, I think your patch-set doesn't care these functions ? # Mine version is also doesn't care. Thus it indicates warning message there. # Because I'm not sure how to handle these... - soc_init_pcm_runtime() - snd_dmaengine_pcm_prepare_slave_config() - dmaengine_pcm_set_runtime_hwparams() - dmaengine_pcm_compat_request_channel() - dpcm_state_read_file() - dpcm_path_get() - dpcm_runtime_merge_chan() - soc_new_pcm() - soc_dpcm_fe_runtime_update() For soc_new_pcm(), I think you need to care playback/capture flag for Multi-CPU/Codec. For soc_dpcm_fe_runtime_update(), you need to care about Multi-CPU. But, it doesn't care Multi-Codec, either... I attached mine version. Thank you for your help !! Best regards --- Kuninori Morimoto --Multipart_Thu_Dec_26_17:16:47_2019-1 Content-Type: text/plain; type=patch; name="semi-multi-cpu.patch"; charset=US-ASCII Content-Disposition: attachment; filename="semi-multi-cpu.patch" Content-Transfer-Encoding: base64 Y29tbWl0IDc2ZTc5MGJiZjI2MzJiY2U4MWU3Njg5ZWQzYWYyNDEyMzZmNGJmMTQKQXV0aG9yOiBL dW5pbm9yaSBNb3JpbW90byA8a3VuaW5vcmkubW9yaW1vdG8uZ3hAcmVuZXNhcy5jb20+CkRhdGU6 ICAgV2VkIERlYyAxOCAxNDo0Mzo1NCAyMDE5ICswOTAwCgogICAgQVNvQzogQWRkIFNlbWktTXVs dGktQ1BVIHN1cHBvcnQKICAgIAogICAgQUxTQSBTb0MgaXMgbm93IHJlYWR5IHRvIHN1cHBvcnQg TXVsdGktQ1BVLCBhbmQgd2Ugd2FudCBpdC4KICAgIEl0IGlzIGVhc3kgdG8gc3VwcG9ydCBpdCBh dCBzb21lIG9mIGZ1bmN0aW9uLCBidXQsIGlzIHZlcnkgZGlmZmljdWx0CiAgICBhdCBzb21lIGZ1 bmN0aW9uLCBiZWNhdXNlIHdlIHN0aWxsIGRvbid0IGhhdmUgc3VjaCBIVy4KICAgIAogICAgVGh1 cywgdGhpcyBwYXRjaCBhZGRzICJTZW1pIiBNdWx0aS1DUFUgc3VwcG9ydC4KICAgIFRoaXMgbWVh bnMsIGl0IGNvbnZlcnRzIFNpZ25sZS1DUFUgREFJIG9wZXJhdGlvbiB0byBNdWx0aS1DUFUgREFJ CiAgICBvcGVyYXRpb24gaWYgaXQgd2FzIGVhc3kgdG8gY29udmVydCwgb3RoZXJ3aXNlLCBpdCBq dXN0IGluZGljYXRlIHdhcm5pbmcuCiAgICBJdCBpcyBlYXN5IHRvIGZpbmQgbWlzc2luZyBwb3J0 aW9uIGluIHRoZSBmdXR1cmUgaWYgc29tZW9uZSB0cnkgdG8gdXNlCiAgICByZWFsIE11bHRpLUNQ VS4KICAgIAogICAgVGhpcyBwYXRjaCBpcyB0ZXN0ZWQgb24gU2luZ2xlLUNQVSBwbGF0Zm9ybS4K ICAgIAogICAgU2lnbmVkLW9mZi1ieTogS3VuaW5vcmkgTW9yaW1vdG8gPGt1bmlub3JpLm1vcmlt b3RvLmd4QHJlbmVzYXMuY29tPgoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvc29jLmggYi9p bmNsdWRlL3NvdW5kL3NvYy5oCmluZGV4IDA4M2U1ZjkuLmM0Y2EwYTYgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvc291bmQvc29jLmgKKysrIGIvaW5jbHVkZS9zb3VuZC9zb2MuaApAQCAtODQ5LDExICs4 NDksMTQgQEAgc3RydWN0IHNuZF9zb2NfZGFpX2xpbmsgewogCXN0cnVjdCBzbmRfc29jX2RvYmog ZG9iajsgLyogRm9yIHRvcG9sb2d5ICovCiAjZW5kaWYKIH07CisjZGVmaW5lIGZvcl9lYWNoX2xp bmtfY3B1cyhsaW5rLCBpLCBjcHUpCQkJCVwKKwlmb3IgKChpKSA9IDA7CQkJCQkJCVwKKwkgICAg ICgoaSkgPCBsaW5rLT5udW1fY3B1cykgJiYgKChjcHUpID0gJmxpbmstPmNwdXNbaV0pOwlcCisJ ICAgICAoaSkrKykKICNkZWZpbmUgZm9yX2VhY2hfbGlua19jb2RlY3MobGluaywgaSwgY29kZWMp CQkJCVwKIAlmb3IgKChpKSA9IDA7CQkJCQkJCVwKIAkgICAgICgoaSkgPCBsaW5rLT5udW1fY29k ZWNzKSAmJiAoKGNvZGVjKSA9ICZsaW5rLT5jb2RlY3NbaV0pOwlcCiAJICAgICAoaSkrKykKLQog I2RlZmluZSBmb3JfZWFjaF9saW5rX3BsYXRmb3JtcyhsaW5rLCBpLCBwbGF0Zm9ybSkJCQlcCiAJ Zm9yICgoaSkgPSAwOwkJCQkJCQlcCiAJICAgICAoKGkpIDwgbGluay0+bnVtX3BsYXRmb3Jtcykg JiYJCQkJXApAQCAtMTE0Miw2ICsxMTQ1LDggQEAgc3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUg ewogCXN0cnVjdCBzbmRfc29jX2RhaSAqY29kZWNfZGFpOwogCXN0cnVjdCBzbmRfc29jX2RhaSAq Y3B1X2RhaTsKIAorCXN0cnVjdCBzbmRfc29jX2RhaSAqKmNwdV9kYWlzOworCXVuc2lnbmVkIGlu dCBudW1fY3B1czsKIAlzdHJ1Y3Qgc25kX3NvY19kYWkgKipjb2RlY19kYWlzOwogCXVuc2lnbmVk IGludCBudW1fY29kZWNzOwogCkBAIC0xMTY1LDYgKzExNzAsMTAgQEAgc3RydWN0IHNuZF9zb2Nf cGNtX3J1bnRpbWUgewogCWZvciAoKGkpID0gMDsJCQkJCQkJXAogCSAgICAgKChpKSA8IHJ0ZC0+ bnVtX2NvbXBvbmVudHMpICYmICgoY29tcG9uZW50KSA9IHJ0ZC0+Y29tcG9uZW50c1tpXSk7XAog CSAgICAgKGkpKyspCisjZGVmaW5lIGZvcl9lYWNoX3J0ZF9jcHVfZGFpcyhydGQsIGksIGRhaSkJ CQkJXAorCWZvciAoKGkpID0gMDsJCQkJCQkJXAorCSAgICAgKChpKSA8IHJ0ZC0+bnVtX2NwdXMp ICYmICgoZGFpKSA9IHJ0ZC0+Y3B1X2RhaXNbaV0pOwlcCisJICAgICAoaSkrKykKICNkZWZpbmUg Zm9yX2VhY2hfcnRkX2NvZGVjX2RhaXMocnRkLCBpLCBkYWkpXAogCWZvciAoKGkpID0gMDsJCQkJ CQkgICAgICAgXAogCSAgICAgKChpKSA8IHJ0ZC0+bnVtX2NvZGVjcykgJiYgKChkYWkpID0gcnRk LT5jb2RlY19kYWlzW2ldKTsgXApkaWZmIC0tZ2l0IGEvc291bmQvc29jL3NvYy1jb21wcmVzcy5j IGIvc291bmQvc29jL3NvYy1jb21wcmVzcy5jCmluZGV4IDIyM2NkMDQuLjVjOTllMGQgMTAwNjQ0 Ci0tLSBhL3NvdW5kL3NvYy9zb2MtY29tcHJlc3MuYworKysgYi9zb3VuZC9zb2Mvc29jLWNvbXBy ZXNzLmMKQEAgLTgxMCw5ICs4MTAsMTAgQEAgaW50IHNuZF9zb2NfbmV3X2NvbXByZXNzKHN0cnVj dCBzbmRfc29jX3BjbV9ydW50aW1lICpydGQsIGludCBudW0pCiAJaW50IHBsYXliYWNrID0gMCwg Y2FwdHVyZSA9IDA7CiAJaW50IGk7CiAKLQlpZiAocnRkLT5udW1fY29kZWNzID4gMSkgeworCWlm ICgocnRkLT5udW1fY3B1cyA+IDEpIHx8CisJICAgIChydGQtPm51bV9jb2RlY3MgPiAxKSkgewog CQlkZXZfZXJyKHJ0ZC0+Y2FyZC0+ZGV2LAotCQkJIkNvbXByZXNzIEFTb0M6IE11bHRpY29kZWMg bm90IHN1cHBvcnRlZFxuIik7CisJCQkiQ29tcHJlc3MgQVNvQzogTXVsdGkgQ1BVL0NvZGVjIG5v dCBzdXBwb3J0ZWRcbiIpOwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKZGlmZiAtLWdpdCBhL3Nv dW5kL3NvYy9zb2MtY29yZS5jIGIvc291bmQvc29jL3NvYy1jb3JlLmMKaW5kZXggMThiZDc5MS4u ODQxNzY1OCAxMDA2NDQKLS0tIGEvc291bmQvc29jL3NvYy1jb3JlLmMKKysrIGIvc291bmQvc29j L3NvYy1jb3JlLmMKQEAgLTQ3NSw2ICs0NzUsMTUgQEAgc3RhdGljIHN0cnVjdCBzbmRfc29jX3Bj bV9ydW50aW1lICpzb2NfbmV3X3BjbV9ydW50aW1lKAogCUlOSVRfREVMQVlFRF9XT1JLKCZydGQt PmRlbGF5ZWRfd29yaywgY2xvc2VfZGVsYXllZF93b3JrKTsKIAogCS8qCisJICogZm9yIHJ0ZC0+ Y3B1X2RhaXMKKwkgKi8KKwlydGQtPmNwdV9kYWlzID0gZGV2bV9rY2FsbG9jKGRldiwgZGFpX2xp bmstPm51bV9jcHVzLAorCQkJCSAgICAgc2l6ZW9mKHN0cnVjdCBzbmRfc29jX2RhaSAqKSwKKwkJ CQkgICAgIEdGUF9LRVJORUwpOworCWlmICghcnRkLT5jcHVfZGFpcykKKwkJZ290byBmcmVlX3J0 ZDsKKworCS8qCiAJICogZm9yIHJ0ZC0+Y29kZWNfZGFpcwogCSAqLwogCXJ0ZC0+Y29kZWNfZGFp cyA9IGRldm1fa2NhbGxvYyhkZXYsIGRhaV9saW5rLT5udW1fY29kZWNzLApAQCAtNzI0LDkgKzcz MywxMSBAQCBpbnQgc25kX3NvY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCSAqIGR1ZSB0 byBJL08gY29zdHMgYW5kIGFudGktcG9wIHNvIGhhbmRsZSB0aGVtIG91dCBvZiBsaW5lLgogCSAq LwogCWZvcl9lYWNoX2NhcmRfcnRkcyhjYXJkLCBydGQpIHsKLQkJc3RydWN0IHNuZF9zb2NfZGFp ICpjcHVfZGFpID0gcnRkLT5jcHVfZGFpOworCQlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWk7 CisJCWludCBpOwogCi0JCWJ1c19jb250cm9sIHw9IGNwdV9kYWktPmRyaXZlci0+YnVzX2NvbnRy b2w7CisJCWZvcl9lYWNoX3J0ZF9jcHVfZGFpcyhydGQsIGksIGNwdV9kYWkpCisJCQlidXNfY29u dHJvbCB8PSBjcHVfZGFpLT5kcml2ZXItPmJ1c19jb250cm9sOwogCX0KIAlpZiAoYnVzX2NvbnRy b2wpIHsKIAkJZGV2X2RiZyhkZXYsICJBU29DOiBSZXN1bWluZyBjb250cm9sIGJ1cyBtYXN0ZXIg aW1tZWRpYXRlbHlcbiIpOwpAQCAtODUxLDcgKzg2Miw3IEBAIHN0YXRpYyBpbnQgc29jX2RhaV9s aW5rX3Nhbml0eV9jaGVjayhzdHJ1Y3Qgc25kX3NvY19jYXJkICpjYXJkLAogCQkJCSAgICAgc3Ry dWN0IHNuZF9zb2NfZGFpX2xpbmsgKmxpbmspCiB7CiAJaW50IGk7Ci0Jc3RydWN0IHNuZF9zb2Nf ZGFpX2xpbmtfY29tcG9uZW50ICpjb2RlYywgKnBsYXRmb3JtOworCXN0cnVjdCBzbmRfc29jX2Rh aV9saW5rX2NvbXBvbmVudCAqY3B1LCAqY29kZWMsICpwbGF0Zm9ybTsKIAogCWZvcl9lYWNoX2xp bmtfY29kZWNzKGxpbmssIGksIGNvZGVjKSB7CiAJCS8qCkBAIC05MDIsNDIgKzkxMyw0NCBAQCBz dGF0aWMgaW50IHNvY19kYWlfbGlua19zYW5pdHlfY2hlY2soc3RydWN0IHNuZF9zb2NfY2FyZCAq Y2FyZCwKIAogCS8qIEZJWE1FICovCiAJaWYgKGxpbmstPm51bV9jcHVzID4gMSkgewotCQlkZXZf ZXJyKGNhcmQtPmRldiwKLQkJCSJBU29DOiBtdWx0aSBjcHUgaXMgbm90IHlldCBzdXBwb3J0ZWQg JXNcbiIsCisJCWRldl93YXJuKGNhcmQtPmRldiwKKwkJCSJBU29DOiBtdWx0aSBjcHUgaXMgbm90 IHlldCBmdWxsIHN1cHBvcnRlZCAlc1xuIiwKIAkJCWxpbmstPm5hbWUpOwotCQlyZXR1cm4gLUVJ TlZBTDsKIAl9CiAKLQkvKgotCSAqIENQVSBkZXZpY2UgbWF5IGJlIHNwZWNpZmllZCBieSBlaXRo ZXIgbmFtZSBvciBPRiBub2RlLCBidXQKLQkgKiBjYW4gYmUgbGVmdCB1bnNwZWNpZmllZCwgYW5k IHdpbGwgYmUgbWF0Y2hlZCBiYXNlZCBvbiBEQUkKLQkgKiBuYW1lIGFsb25lLi4KLQkgKi8KLQlp ZiAobGluay0+Y3B1cy0+bmFtZSAmJiBsaW5rLT5jcHVzLT5vZl9ub2RlKSB7Ci0JCWRldl9lcnIo Y2FyZC0+ZGV2LAotCQkJIkFTb0M6IE5laXRoZXIvYm90aCBjcHUgbmFtZS9vZl9ub2RlIGFyZSBz ZXQgZm9yICVzXG4iLAotCQkJbGluay0+bmFtZSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KKwlm b3JfZWFjaF9saW5rX2NwdXMobGluaywgaSwgY3B1KSB7CiAKLQkvKgotCSAqIERlZmVyIGNhcmQg cmVnaXN0cmF0aW9uIGlmIGNwdSBkYWkgY29tcG9uZW50IGlzIG5vdCBhZGRlZCB0bwotCSAqIGNv bXBvbmVudCBsaXN0LgotCSAqLwotCWlmICgobGluay0+Y3B1cy0+b2Zfbm9kZSB8fCBsaW5rLT5j cHVzLT5uYW1lKSAmJgotCSAgICAhc29jX2ZpbmRfY29tcG9uZW50KGxpbmstPmNwdXMpKQotCQly ZXR1cm4gLUVQUk9CRV9ERUZFUjsKKwkJLyoKKwkJICogQ1BVIGRldmljZSBtYXkgYmUgc3BlY2lm aWVkIGJ5IGVpdGhlciBuYW1lIG9yIE9GIG5vZGUsIGJ1dAorCQkgKiBjYW4gYmUgbGVmdCB1bnNw ZWNpZmllZCwgYW5kIHdpbGwgYmUgbWF0Y2hlZCBiYXNlZCBvbiBEQUkKKwkJICogbmFtZSBhbG9u ZS4uCisJCSAqLworCQlpZiAoY3B1LT5uYW1lICYmIGNwdS0+b2Zfbm9kZSkgeworCQkJZGV2X2Vy cihjYXJkLT5kZXYsCisJCQkJIkFTb0M6IE5laXRoZXIvYm90aCBjcHUgbmFtZS9vZl9ub2RlIGFy ZSBzZXQgZm9yICVzXG4iLAorCQkJCWxpbmstPm5hbWUpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJ CX0KIAotCS8qCi0JICogQXQgbGVhc3Qgb25lIG9mIENQVSBEQUkgbmFtZSBvciBDUFUgZGV2aWNl IG5hbWUvbm9kZSBtdXN0IGJlCi0JICogc3BlY2lmaWVkCi0JICovCi0JaWYgKCFsaW5rLT5jcHVz LT5kYWlfbmFtZSAmJgotCSAgICAhKGxpbmstPmNwdXMtPm5hbWUgfHwgbGluay0+Y3B1cy0+b2Zf bm9kZSkpIHsKLQkJZGV2X2VycihjYXJkLT5kZXYsCi0JCQkiQVNvQzogTmVpdGhlciBjcHVfZGFp X25hbWUgbm9yIGNwdV9uYW1lL29mX25vZGUgYXJlIHNldCBmb3IgJXNcbiIsCi0JCQlsaW5rLT5u YW1lKTsKLQkJcmV0dXJuIC1FSU5WQUw7CisJCS8qCisJCSAqIERlZmVyIGNhcmQgcmVnaXN0cmF0 aW9uIGlmIGNwdSBkYWkgY29tcG9uZW50IGlzIG5vdCBhZGRlZCB0bworCQkgKiBjb21wb25lbnQg bGlzdC4KKwkJICovCisJCWlmICgoY3B1LT5vZl9ub2RlIHx8IGNwdS0+bmFtZSkgJiYKKwkJICAg ICFzb2NfZmluZF9jb21wb25lbnQoY3B1KSkKKwkJCXJldHVybiAtRVBST0JFX0RFRkVSOworCisJ CS8qCisJCSAqIEF0IGxlYXN0IG9uZSBvZiBDUFUgREFJIG5hbWUgb3IgQ1BVIGRldmljZSBuYW1l L25vZGUgbXVzdCBiZQorCQkgKiBzcGVjaWZpZWQKKwkJICovCisJCWlmICghY3B1LT5kYWlfbmFt ZSAmJgorCQkgICAgIShjcHUtPm5hbWUgfHwgY3B1LT5vZl9ub2RlKSkgeworCQkJZGV2X2Vycihj YXJkLT5kZXYsCisJCQkJIkFTb0M6IE5laXRoZXIgY3B1X2RhaV9uYW1lIG5vciBjcHVfbmFtZS9v Zl9ub2RlIGFyZSBzZXQgZm9yICVzXG4iLAorCQkJCWxpbmstPm5hbWUpOworCQkJcmV0dXJuIC1F SU5WQUw7CisJCX0KIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTk4MCw3ICs5OTMsNyBAQCBpbnQgc25k X3NvY19hZGRfcGNtX3J1bnRpbWUoc3RydWN0IHNuZF9zb2NfY2FyZCAqY2FyZCwKIAkJCSAgICBz dHJ1Y3Qgc25kX3NvY19kYWlfbGluayAqZGFpX2xpbmspCiB7CiAJc3RydWN0IHNuZF9zb2NfcGNt X3J1bnRpbWUgKnJ0ZDsKLQlzdHJ1Y3Qgc25kX3NvY19kYWlfbGlua19jb21wb25lbnQgKmNvZGVj LCAqcGxhdGZvcm07CisJc3RydWN0IHNuZF9zb2NfZGFpX2xpbmtfY29tcG9uZW50ICpjcHUsICpj b2RlYywgKnBsYXRmb3JtOwogCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50Owog CWludCBpLCByZXQ7CiAKQEAgLTEwMDUsMTQgKzEwMTgsMjEgQEAgaW50IHNuZF9zb2NfYWRkX3Bj bV9ydW50aW1lKHN0cnVjdCBzbmRfc29jX2NhcmQgKmNhcmQsCiAJaWYgKCFydGQpCiAJCXJldHVy biAtRU5PTUVNOwogCi0JLyogRklYTUU6IHdlIG5lZWQgbXVsdGkgQ1BVIHN1cHBvcnQgaW4gdGhl IGZ1dHVyZSAqLwotCXJ0ZC0+Y3B1X2RhaSA9IHNuZF9zb2NfZmluZF9kYWkoZGFpX2xpbmstPmNw dXMpOwotCWlmICghcnRkLT5jcHVfZGFpKSB7Ci0JCWRldl9pbmZvKGNhcmQtPmRldiwgIkFTb0M6 IENQVSBEQUkgJXMgbm90IHJlZ2lzdGVyZWRcbiIsCi0JCQkgZGFpX2xpbmstPmNwdXMtPmRhaV9u YW1lKTsKLQkJZ290byBfZXJyX2RlZmVyOworCS8qIEZJWE1FOiB3ZSBuZWVkIGZ1bGwgbXVsdGkg Q1BVIHN1cHBvcnQgaW4gdGhlIGZ1dHVyZSAqLworCXJ0ZC0+bnVtX2NwdXMgPSBkYWlfbGluay0+ bnVtX2NwdXM7CisKKwkvKiBGaW5kIENQVSBmcm9tIHJlZ2lzdGVyZWQgQ1BVcyAqLworCWZvcl9l YWNoX2xpbmtfY3B1cyhkYWlfbGluaywgaSwgY3B1KSB7CisJCXJ0ZC0+Y3B1X2RhaXNbaV0gPSBz bmRfc29jX2ZpbmRfZGFpKGNwdSk7CisJCWlmICghcnRkLT5jcHVfZGFpc1tpXSkgeworCQkJZGV2 X2luZm8oY2FyZC0+ZGV2LCAiQVNvQzogQ1BVIERBSSAlcyBub3QgcmVnaXN0ZXJlZFxuIiwKKwkJ CQkgY3B1LT5kYWlfbmFtZSk7CisJCQlnb3RvIF9lcnJfZGVmZXI7CisJCX0KKwkJc25kX3NvY19y dGRfYWRkX2NvbXBvbmVudChydGQsIHJ0ZC0+Y3B1X2RhaXNbaV0tPmNvbXBvbmVudCk7CiAJfQot CXNuZF9zb2NfcnRkX2FkZF9jb21wb25lbnQocnRkLCBydGQtPmNwdV9kYWktPmNvbXBvbmVudCk7 CisJLyogU2luZ2xlIGNwdSBsaW5rcyBleHBlY3QgY3B1IGFuZCBjcHVfZGFpIGluIHJ1bnRpbWUg ZGF0YSAqLworCXJ0ZC0+Y3B1X2RhaSA9IHJ0ZC0+Y3B1X2RhaXNbMF07CiAKIAkvKiBGaW5kIENP REVDIGZyb20gcmVnaXN0ZXJlZCBDT0RFQ3MgKi8KIAlydGQtPm51bV9jb2RlY3MgPSBkYWlfbGlu ay0+bnVtX2NvZGVjczsKQEAgLTExMTYsNiArMTEzNiwxMSBAQCBzdGF0aWMgaW50IHNvY19pbml0 X3BjbV9ydW50aW1lKHN0cnVjdCBzbmRfc29jX2NhcmQgKmNhcmQsCiAJCQludW0gPSBydGQtPmRh aV9saW5rLT5pZDsKIAl9CiAKKwkvKiBob3cgdG8gY29udHJvbCBzbmRfc29jX2RhaV9jb21wcmVz c19uZXcoKSBpbiBtdWx0aSBDUFUgPyAqLworCWlmIChydGQtPm51bV9jcHVzID4gMSkKKwkJZGV2 X3dhcm4ocnRkLT5kZXYsCisJCQkgIiVzIGRvZXNuJ3Qgc3VwcG9ydCBNdWx0aSBDUFUgeWV0XG4i LCBfX2Z1bmNfXyk7CisKIAkvKiBjcmVhdGUgY29tcHJlc3NfZGV2aWNlIGlmIHBvc3NpYmxlICov CiAJcmV0ID0gc25kX3NvY19kYWlfY29tcHJlc3NfbmV3KGNwdV9kYWksIHJ0ZCwgbnVtKTsKIAlp ZiAocmV0ICE9IC1FTk9UU1VQUCkgewpAQCAtMTMyMyw2ICsxMzQ4LDcgQEAgc3RhdGljIGludCBz b2NfcHJvYmVfZGFpKHN0cnVjdCBzbmRfc29jX2RhaSAqZGFpLCBpbnQgb3JkZXIpCiBzdGF0aWMg dm9pZCBzb2NfcmVtb3ZlX2xpbmtfZGFpcyhzdHJ1Y3Qgc25kX3NvY19jYXJkICpjYXJkKQogewog CWludCBpOworCXN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaTsKIAlzdHJ1Y3Qgc25kX3NvY19k YWkgKmNvZGVjX2RhaTsKIAlzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkOwogCWludCBv cmRlcjsKQEAgLTEzMzMsMTMgKzEzNTksMTUgQEAgc3RhdGljIHZvaWQgc29jX3JlbW92ZV9saW5r X2RhaXMoc3RydWN0IHNuZF9zb2NfY2FyZCAqY2FyZCkKIAkJCWZvcl9lYWNoX3J0ZF9jb2RlY19k YWlzKHJ0ZCwgaSwgY29kZWNfZGFpKQogCQkJCXNvY19yZW1vdmVfZGFpKGNvZGVjX2RhaSwgb3Jk ZXIpOwogCi0JCQlzb2NfcmVtb3ZlX2RhaShydGQtPmNwdV9kYWksIG9yZGVyKTsKKwkJCWZvcl9l YWNoX3J0ZF9jcHVfZGFpcyhydGQsIGksIGNwdV9kYWkpCisJCQkJc29jX3JlbW92ZV9kYWkoY3B1 X2RhaSwgb3JkZXIpOwogCQl9CiAJfQogfQogCiBzdGF0aWMgaW50IHNvY19wcm9iZV9saW5rX2Rh aXMoc3RydWN0IHNuZF9zb2NfY2FyZCAqY2FyZCkKIHsKKwlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNw dV9kYWk7CiAJc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19kYWk7CiAJc3RydWN0IHNuZF9zb2Nf cGNtX3J1bnRpbWUgKnJ0ZDsKIAlpbnQgaSwgb3JkZXIsIHJldDsKQEAgLTEzNTEsMTAgKzEzNzks MTEgQEAgc3RhdGljIGludCBzb2NfcHJvYmVfbGlua19kYWlzKHN0cnVjdCBzbmRfc29jX2NhcmQg KmNhcmQpCiAJCQkJIkFTb0M6IHByb2JlICVzIGRhaSBsaW5rICVkIGxhdGUgJWRcbiIsCiAJCQkJ Y2FyZC0+bmFtZSwgcnRkLT5udW0sIG9yZGVyKTsKIAotCQkJcmV0ID0gc29jX3Byb2JlX2RhaShy dGQtPmNwdV9kYWksIG9yZGVyKTsKLQkJCWlmIChyZXQpCi0JCQkJcmV0dXJuIHJldDsKLQorCQkJ Zm9yX2VhY2hfcnRkX2NwdV9kYWlzKHJ0ZCwgaSwgY3B1X2RhaSkgeworCQkJCXJldCA9IHNvY19w cm9iZV9kYWkoY3B1X2RhaSwgb3JkZXIpOworCQkJCWlmIChyZXQpCisJCQkJCXJldHVybiByZXQ7 CisJCQl9CiAJCQkvKiBwcm9iZSB0aGUgQ09ERUMgREFJICovCiAJCQlmb3JfZWFjaF9ydGRfY29k ZWNfZGFpcyhydGQsIGksIGNvZGVjX2RhaSkgewogCQkJCXJldCA9IHNvY19wcm9iZV9kYWkoY29k ZWNfZGFpLCBvcmRlcik7CkBAIC0xNDg1LDggKzE1MTQsOSBAQCBzdGF0aWMgdm9pZCBzb2NfcmVt b3ZlX2F1eF9kZXZpY2VzKHN0cnVjdCBzbmRfc29jX2NhcmQgKmNhcmQpCiBpbnQgc25kX3NvY19y dW50aW1lX3NldF9kYWlfZm10KHN0cnVjdCBzbmRfc29jX3BjbV9ydW50aW1lICpydGQsCiAJdW5z aWduZWQgaW50IGRhaV9mbXQpCiB7Ci0Jc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpID0gcnRk LT5jcHVfZGFpOworCXN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaTsKIAlzdHJ1Y3Qgc25kX3Nv Y19kYWkgKmNvZGVjX2RhaTsKKwl1bnNpZ25lZCBpbnQgaW52X2RhaV9mbXQ7CiAJdW5zaWduZWQg aW50IGk7CiAJaW50IHJldDsKIApAQCAtMTUwMywzMyArMTUzMywzNSBAQCBpbnQgc25kX3NvY19y dW50aW1lX3NldF9kYWlfZm10KHN0cnVjdCBzbmRfc29jX3BjbV9ydW50aW1lICpydGQsCiAJICog RmxpcCB0aGUgcG9sYXJpdHkgZm9yIHRoZSAiQ1BVIiBlbmQgb2YgYSBDT0RFQzwtPkNPREVDIGxp bmsKIAkgKiB0aGUgY29tcG9uZW50IHdoaWNoIGhhcyBub25fbGVnYWN5X2RhaV9uYW1pbmcgaXMg Q29kZWMKIAkgKi8KLQlpZiAoY3B1X2RhaS0+Y29tcG9uZW50LT5kcml2ZXItPm5vbl9sZWdhY3lf ZGFpX25hbWluZykgewotCQl1bnNpZ25lZCBpbnQgaW52X2RhaV9mbXQ7CisJaW52X2RhaV9mbXQg PSBkYWlfZm10ICYgflNORF9TT0NfREFJRk1UX01BU1RFUl9NQVNLOworCXN3aXRjaCAoZGFpX2Zt dCAmIFNORF9TT0NfREFJRk1UX01BU1RFUl9NQVNLKSB7CisJY2FzZSBTTkRfU09DX0RBSUZNVF9D Qk1fQ0ZNOgorCQlpbnZfZGFpX2ZtdCB8PSBTTkRfU09DX0RBSUZNVF9DQlNfQ0ZTOworCQlicmVh azsKKwljYXNlIFNORF9TT0NfREFJRk1UX0NCTV9DRlM6CisJCWludl9kYWlfZm10IHw9IFNORF9T T0NfREFJRk1UX0NCU19DRk07CisJCWJyZWFrOworCWNhc2UgU05EX1NPQ19EQUlGTVRfQ0JTX0NG TToKKwkJaW52X2RhaV9mbXQgfD0gU05EX1NPQ19EQUlGTVRfQ0JNX0NGUzsKKwkJYnJlYWs7CisJ Y2FzZSBTTkRfU09DX0RBSUZNVF9DQlNfQ0ZTOgorCQlpbnZfZGFpX2ZtdCB8PSBTTkRfU09DX0RB SUZNVF9DQk1fQ0ZNOworCQlicmVhazsKKwl9CiAKLQkJaW52X2RhaV9mbXQgPSBkYWlfZm10ICYg flNORF9TT0NfREFJRk1UX01BU1RFUl9NQVNLOwotCQlzd2l0Y2ggKGRhaV9mbXQgJiBTTkRfU09D X0RBSUZNVF9NQVNURVJfTUFTSykgewotCQljYXNlIFNORF9TT0NfREFJRk1UX0NCTV9DRk06Ci0J CQlpbnZfZGFpX2ZtdCB8PSBTTkRfU09DX0RBSUZNVF9DQlNfQ0ZTOwotCQkJYnJlYWs7Ci0JCWNh c2UgU05EX1NPQ19EQUlGTVRfQ0JNX0NGUzoKLQkJCWludl9kYWlfZm10IHw9IFNORF9TT0NfREFJ Rk1UX0NCU19DRk07Ci0JCQlicmVhazsKLQkJY2FzZSBTTkRfU09DX0RBSUZNVF9DQlNfQ0ZNOgot CQkJaW52X2RhaV9mbXQgfD0gU05EX1NPQ19EQUlGTVRfQ0JNX0NGUzsKLQkJCWJyZWFrOwotCQlj YXNlIFNORF9TT0NfREFJRk1UX0NCU19DRlM6Ci0JCQlpbnZfZGFpX2ZtdCB8PSBTTkRfU09DX0RB SUZNVF9DQk1fQ0ZNOwotCQkJYnJlYWs7Ci0JCX0KKwlmb3JfZWFjaF9ydGRfY3B1X2RhaXMocnRk LCBpLCBjcHVfZGFpKSB7CisJCXVuc2lnbmVkIGludCBmbXQgPSBkYWlfZm10OwogCi0JCWRhaV9m bXQgPSBpbnZfZGFpX2ZtdDsKLQl9CisJCS8qIENPREVDPC0+Q09ERUMgbGluayAqLworCQlpZiAo Y3B1X2RhaS0+Y29tcG9uZW50LT5kcml2ZXItPm5vbl9sZWdhY3lfZGFpX25hbWluZykKKwkJCWZt dCA9IGludl9kYWlfZm10OwogCi0JcmV0ID0gc25kX3NvY19kYWlfc2V0X2ZtdChjcHVfZGFpLCBk YWlfZm10KTsKLQlpZiAocmV0ICE9IDAgJiYgcmV0ICE9IC1FTk9UU1VQUCkgewotCQlkZXZfd2Fy bihjcHVfZGFpLT5kZXYsCi0JCQkgIkFTb0M6IEZhaWxlZCB0byBzZXQgREFJIGZvcm1hdDogJWRc biIsIHJldCk7Ci0JCXJldHVybiByZXQ7CisJCXJldCA9IHNuZF9zb2NfZGFpX3NldF9mbXQoY3B1 X2RhaSwgZm10KTsKKwkJaWYgKHJldCAhPSAwICYmIHJldCAhPSAtRU5PVFNVUFApIHsKKwkJCWRl dl93YXJuKGNwdV9kYWktPmRldiwKKwkJCQkgIkFTb0M6IEZhaWxlZCB0byBzZXQgREFJIGZvcm1h dDogJWRcbiIsIHJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9CiAJfQogCiAJcmV0dXJuIDA7CmRp ZmYgLS1naXQgYS9zb3VuZC9zb2Mvc29jLWRhcG0uYyBiL3NvdW5kL3NvYy9zb2MtZGFwbS5jCmlu ZGV4IDE3YmM3ZjQuLjc3NGZkMzIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9zb2MtZGFwbS5jCisr KyBiL3NvdW5kL3NvYy9zb2MtZGFwbS5jCkBAIC00Mjg4LDYgKzQyODgsMTAgQEAgc3RhdGljIHZv aWQgZGFwbV9jb25uZWN0X2RhaV9saW5rX3dpZGdldHMoc3RydWN0IHNuZF9zb2NfY2FyZCAqY2Fy ZCwKIAlzdHJ1Y3Qgc25kX3BjbV9zdHIgKnN0cmVhbXMgPSBydGQtPnBjbS0+c3RyZWFtczsKIAlp bnQgaTsKIAorCWlmIChydGQtPm51bV9jcHVzID4gMSkKKwkJZGV2X3dhcm4ocnRkLT5kZXYsCisJ CQkgIiVzIGRvZXNuJ3Qgc3VwcG9ydCBNdWx0aSBDUFUgeWV0XG4iLCBfX2Z1bmNfXyk7CisKIAlp ZiAocnRkLT5kYWlfbGluay0+cGFyYW1zKSB7CiAJCXBsYXliYWNrX2NwdSA9IGNwdV9kYWktPmNh cHR1cmVfd2lkZ2V0OwogCQljYXB0dXJlX2NwdSA9IGNwdV9kYWktPnBsYXliYWNrX3dpZGdldDsK QEAgLTQ0MTgsOSArNDQyMiwxMSBAQCBzdGF0aWMgdm9pZCBzb2NfZGFwbV9zdHJlYW1fZXZlbnQo c3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKnJ0ZCwgaW50IHN0cmVhbSwKIAlpbnQgZXZlbnQp CiB7CiAJc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19kYWk7CisJc3RydWN0IHNuZF9zb2NfZGFp ICpjcHVfZGFpOwogCWludCBpOwogCi0Jc29jX2RhcG1fZGFpX3N0cmVhbV9ldmVudChydGQtPmNw dV9kYWksIHN0cmVhbSwgZXZlbnQpOworCWZvcl9lYWNoX3J0ZF9jcHVfZGFpcyhydGQsIGksIGNw dV9kYWkpCisJCXNvY19kYXBtX2RhaV9zdHJlYW1fZXZlbnQoY3B1X2RhaSwgc3RyZWFtLCBldmVu dCk7CiAJZm9yX2VhY2hfcnRkX2NvZGVjX2RhaXMocnRkLCBpLCBjb2RlY19kYWkpCiAJCXNvY19k YXBtX2RhaV9zdHJlYW1fZXZlbnQoY29kZWNfZGFpLCBzdHJlYW0sIGV2ZW50KTsKIApkaWZmIC0t Z2l0IGEvc291bmQvc29jL3NvYy1nZW5lcmljLWRtYWVuZ2luZS1wY20uYyBiL3NvdW5kL3NvYy9z b2MtZ2VuZXJpYy1kbWFlbmdpbmUtcGNtLmMKaW5kZXggZGY1N2VjNC4uYTZjODYyMyAxMDA2NDQK LS0tIGEvc291bmQvc29jL3NvYy1nZW5lcmljLWRtYWVuZ2luZS1wY20uYworKysgYi9zb3VuZC9z b2Mvc29jLWdlbmVyaWMtZG1hZW5naW5lLXBjbS5jCkBAIC02Miw2ICs2MiwxMCBAQCBpbnQgc25k X2RtYWVuZ2luZV9wY21fcHJlcGFyZV9zbGF2ZV9jb25maWcoc3RydWN0IHNuZF9wY21fc3Vic3Ry ZWFtICpzdWJzdHJlYW0sCiAJc3RydWN0IHNuZF9kbWFlbmdpbmVfZGFpX2RtYV9kYXRhICpkbWFf ZGF0YTsKIAlpbnQgcmV0OwogCisJaWYgKHJ0ZC0+bnVtX2NwdXMgPiAxKQorCQlkZXZfd2Fybihy dGQtPmRldiwKKwkJCSAiJXMgZG9lc24ndCBzdXBwb3J0IE11bHRpIENQVSB5ZXRcbiIsIF9fZnVu Y19fKTsKKwogCWRtYV9kYXRhID0gc25kX3NvY19kYWlfZ2V0X2RtYV9kYXRhKHJ0ZC0+Y3B1X2Rh aSwgc3Vic3RyZWFtKTsKIAogCXJldCA9IHNuZF9od3BhcmFtc190b19kbWFfc2xhdmVfY29uZmln KHN1YnN0cmVhbSwgcGFyYW1zLCBzbGF2ZV9jb25maWcpOwpAQCAtMTE5LDYgKzEyMywxMCBAQCBk bWFlbmdpbmVfcGNtX3NldF9ydW50aW1lX2h3cGFyYW1zKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVu dCAqY29tcG9uZW50LAogCXN0cnVjdCBzbmRfcGNtX2hhcmR3YXJlIGh3OwogCWludCByZXQ7CiAK KwlpZiAocnRkLT5udW1fY3B1cyA+IDEpCisJCWRldl93YXJuKHJ0ZC0+ZGV2LAorCQkJICIlcyBk b2Vzbid0IHN1cHBvcnQgTXVsdGkgQ1BVIHlldFxuIiwgX19mdW5jX18pOworCiAJaWYgKHBjbS0+ Y29uZmlnICYmIHBjbS0+Y29uZmlnLT5wY21faGFyZHdhcmUpCiAJCXJldHVybiBzbmRfc29jX3Nl dF9ydW50aW1lX2h3cGFyYW1zKHN1YnN0cmVhbSwKIAkJCQlwY20tPmNvbmZpZy0+cGNtX2hhcmR3 YXJlKTsKQEAgLTE4Myw2ICsxOTEsMTAgQEAgc3RhdGljIHN0cnVjdCBkbWFfY2hhbiAqZG1hZW5n aW5lX3BjbV9jb21wYXRfcmVxdWVzdF9jaGFubmVsKAogCXN0cnVjdCBzbmRfZG1hZW5naW5lX2Rh aV9kbWFfZGF0YSAqZG1hX2RhdGE7CiAJZG1hX2ZpbHRlcl9mbiBmbiA9IE5VTEw7CiAKKwlpZiAo cnRkLT5udW1fY3B1cyA+IDEpCisJCWRldl93YXJuKHJ0ZC0+ZGV2LAorCQkJICIlcyBkb2Vzbid0 IHN1cHBvcnQgTXVsdGkgQ1BVIHlldFxuIiwgX19mdW5jX18pOworCiAJZG1hX2RhdGEgPSBzbmRf c29jX2RhaV9nZXRfZG1hX2RhdGEocnRkLT5jcHVfZGFpLCBzdWJzdHJlYW0pOwogCiAJaWYgKChw Y20tPmZsYWdzICYgU05EX0RNQUVOR0lORV9QQ01fRkxBR19IQUxGX0RVUExFWCkgJiYgcGNtLT5j aGFuWzBdKQpkaWZmIC0tZ2l0IGEvc291bmQvc29jL3NvYy1wY20uYyBiL3NvdW5kL3NvYy9zb2Mt cGNtLmMKaW5kZXggNDdmMjYyOC4uMDZiODdjMSAxMDA2NDQKLS0tIGEvc291bmQvc29jL3NvYy1w Y20uYworKysgYi9zb3VuZC9zb2Mvc29jLXBjbS5jCkBAIC0xMzAsNiArMTMwLDEwIEBAIHN0YXRp YyBzc2l6ZV90IGRwY21fc3RhdGVfcmVhZF9maWxlKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9f dXNlciAqdXNlcl9idWYsCiAJaWYgKCFidWYpCiAJCXJldHVybiAtRU5PTUVNOwogCisJaWYgKGZl LT5udW1fY3B1cyA+IDEpCisJCWRldl93YXJuKGZlLT5kZXYsCisJCQkgIiVzIGRvZXNuJ3Qgc3Vw cG9ydCBNdWx0aSBDUFUgeWV0XG4iLCBfX2Z1bmNfXyk7CisKIAlmb3JfZWFjaF9wY21fc3RyZWFt cyhzdHJlYW0pCiAJCWlmIChzbmRfc29jX2RhaV9zdHJlYW1fdmFsaWQoZmUtPmNwdV9kYWksIHN0 cmVhbSkpCiAJCQlvZmZzZXQgKz0gZHBjbV9zaG93X3N0YXRlKGZlLCBzdHJlYW0sCkBAIC0yNTQs MTggKzI1OCwyMSBAQCBzdGF0aWMgaW50IHNvY19ydGRfdHJpZ2dlcihzdHJ1Y3Qgc25kX3NvY19w Y21fcnVudGltZSAqcnRkLAogc3RhdGljIHZvaWQgc25kX3NvY19ydW50aW1lX2FjdGlvbihzdHJ1 Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkLAogCQkJCSAgIGludCBzdHJlYW0sIGludCBhY3Rp b24pCiB7Ci0Jc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpID0gcnRkLT5jcHVfZGFpOworCXN0 cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaTsKIAlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNvZGVjX2Rh aTsKIAlpbnQgaTsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJ0ZC0+Y2FyZC0+cGNtX211dGV4 KTsKIAotCWNwdV9kYWktPnN0cmVhbV9hY3RpdmVbc3RyZWFtXSArPSBhY3Rpb247CisJZm9yX2Vh Y2hfcnRkX2NwdV9kYWlzKHJ0ZCwgaSwgY3B1X2RhaSkKKwkJY3B1X2RhaS0+c3RyZWFtX2FjdGl2 ZVtzdHJlYW1dICs9IGFjdGlvbjsKIAlmb3JfZWFjaF9ydGRfY29kZWNfZGFpcyhydGQsIGksIGNv ZGVjX2RhaSkKIAkJY29kZWNfZGFpLT5zdHJlYW1fYWN0aXZlW3N0cmVhbV0gKz0gYWN0aW9uOwog Ci0JY3B1X2RhaS0+YWN0aXZlICs9IGFjdGlvbjsKLQljcHVfZGFpLT5jb21wb25lbnQtPmFjdGl2 ZSArPSBhY3Rpb247CisJZm9yX2VhY2hfcnRkX2NwdV9kYWlzKHJ0ZCwgaSwgY3B1X2RhaSkgewor CQljcHVfZGFpLT5hY3RpdmUgKz0gYWN0aW9uOworCQljcHVfZGFpLT5jb21wb25lbnQtPmFjdGl2 ZSArPSBhY3Rpb247CisJfQogCWZvcl9lYWNoX3J0ZF9jb2RlY19kYWlzKHJ0ZCwgaSwgY29kZWNf ZGFpKSB7CiAJCWNvZGVjX2RhaS0+YWN0aXZlICs9IGFjdGlvbjsKIAkJY29kZWNfZGFpLT5jb21w b25lbnQtPmFjdGl2ZSArPSBhY3Rpb247CkBAIC00MzUsNyArNDQyLDcgQEAgc3RhdGljIGludCBz b2NfcGNtX3BhcmFtc19zeW1tZXRyeShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVh bSwKIAkJCQlzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcykKIHsKIAlzdHJ1Y3Qgc25k X3NvY19wY21fcnVudGltZSAqcnRkID0gc3Vic3RyZWFtLT5wcml2YXRlX2RhdGE7Ci0Jc3RydWN0 IHNuZF9zb2NfZGFpICpjcHVfZGFpID0gcnRkLT5jcHVfZGFpOworCXN0cnVjdCBzbmRfc29jX2Rh aSAqY3B1X2RhaTsKIAlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNvZGVjX2RhaTsKIAl1bnNpZ25lZCBp bnQgcmF0ZSwgY2hhbm5lbHMsIHNhbXBsZV9iaXRzLCBzeW1tZXRyeSwgaTsKIApAQCAtNDQ0LDQx ICs0NTEsNTIgQEAgc3RhdGljIGludCBzb2NfcGNtX3BhcmFtc19zeW1tZXRyeShzdHJ1Y3Qgc25k X3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAlzYW1wbGVfYml0cyA9IHNuZF9wY21fZm9ybWF0 X3BoeXNpY2FsX3dpZHRoKHBhcmFtc19mb3JtYXQocGFyYW1zKSk7CiAKIAkvKiByZWplY3QgdW5t YXRjaGVkIHBhcmFtZXRlcnMgd2hlbiBhcHBseWluZyBzeW1tZXRyeSAqLwotCXN5bW1ldHJ5ID0g Y3B1X2RhaS0+ZHJpdmVyLT5zeW1tZXRyaWNfcmF0ZXMgfHwKLQkJcnRkLT5kYWlfbGluay0+c3lt bWV0cmljX3JhdGVzOworCXN5bW1ldHJ5ID0gcnRkLT5kYWlfbGluay0+c3ltbWV0cmljX3JhdGVz OwogCisJZm9yX2VhY2hfcnRkX2NwdV9kYWlzKHJ0ZCwgaSwgY3B1X2RhaSkKKwkJc3ltbWV0cnkg fD0gY3B1X2RhaS0+ZHJpdmVyLT5zeW1tZXRyaWNfcmF0ZXM7CiAJZm9yX2VhY2hfcnRkX2NvZGVj X2RhaXMocnRkLCBpLCBjb2RlY19kYWkpCiAJCXN5bW1ldHJ5IHw9IGNvZGVjX2RhaS0+ZHJpdmVy LT5zeW1tZXRyaWNfcmF0ZXM7CiAKLQlpZiAoc3ltbWV0cnkgJiYgY3B1X2RhaS0+cmF0ZSAmJiBj cHVfZGFpLT5yYXRlICE9IHJhdGUpIHsKLQkJZGV2X2VycihydGQtPmRldiwgIkFTb0M6IHVubWF0 Y2hlZCByYXRlIHN5bW1ldHJ5OiAlZCAtICVkXG4iLAotCQkJCWNwdV9kYWktPnJhdGUsIHJhdGUp OwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9CisJaWYgKHN5bW1ldHJ5KQorCQlmb3JfZWFjaF9ydGRf Y3B1X2RhaXMocnRkLCBpLCBjcHVfZGFpKQorCQkJaWYgKGNwdV9kYWktPnJhdGUgJiYgY3B1X2Rh aS0+cmF0ZSAhPSByYXRlKSB7CisJCQkJZGV2X2VycihydGQtPmRldiwgIkFTb0M6IHVubWF0Y2hl ZCByYXRlIHN5bW1ldHJ5OiAlZCAtICVkXG4iLAorCQkJCQljcHVfZGFpLT5yYXRlLCByYXRlKTsK KwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCX0KIAotCXN5bW1ldHJ5ID0gY3B1X2RhaS0+ZHJpdmVy LT5zeW1tZXRyaWNfY2hhbm5lbHMgfHwKLQkJcnRkLT5kYWlfbGluay0+c3ltbWV0cmljX2NoYW5u ZWxzOworCXN5bW1ldHJ5ID0gcnRkLT5kYWlfbGluay0+c3ltbWV0cmljX2NoYW5uZWxzOwogCisJ Zm9yX2VhY2hfcnRkX2NwdV9kYWlzKHJ0ZCwgaSwgY3B1X2RhaSkKKwkJc3ltbWV0cnkgfD0gY3B1 X2RhaS0+ZHJpdmVyLT5zeW1tZXRyaWNfY2hhbm5lbHM7CiAJZm9yX2VhY2hfcnRkX2NvZGVjX2Rh aXMocnRkLCBpLCBjb2RlY19kYWkpCiAJCXN5bW1ldHJ5IHw9IGNvZGVjX2RhaS0+ZHJpdmVyLT5z eW1tZXRyaWNfY2hhbm5lbHM7CiAKLQlpZiAoc3ltbWV0cnkgJiYgY3B1X2RhaS0+Y2hhbm5lbHMg JiYgY3B1X2RhaS0+Y2hhbm5lbHMgIT0gY2hhbm5lbHMpIHsKLQkJZGV2X2VycihydGQtPmRldiwg IkFTb0M6IHVubWF0Y2hlZCBjaGFubmVsIHN5bW1ldHJ5OiAlZCAtICVkXG4iLAotCQkJCWNwdV9k YWktPmNoYW5uZWxzLCBjaGFubmVscyk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KKwlpZiAoc3lt bWV0cnkpCisJCWZvcl9lYWNoX3J0ZF9jcHVfZGFpcyhydGQsIGksIGNwdV9kYWkpCisJCQlpZiAo Y3B1X2RhaS0+Y2hhbm5lbHMgJiYKKwkJCSAgICBjcHVfZGFpLT5jaGFubmVscyAhPSBjaGFubmVs cykgeworCQkJCWRldl9lcnIocnRkLT5kZXYsICJBU29DOiB1bm1hdGNoZWQgY2hhbm5lbCBzeW1t ZXRyeTogJWQgLSAlZFxuIiwKKwkJCQkJY3B1X2RhaS0+Y2hhbm5lbHMsIGNoYW5uZWxzKTsKKwkJ CQlyZXR1cm4gLUVJTlZBTDsKKwkJCX0KIAotCXN5bW1ldHJ5ID0gY3B1X2RhaS0+ZHJpdmVyLT5z eW1tZXRyaWNfc2FtcGxlYml0cyB8fAotCQlydGQtPmRhaV9saW5rLT5zeW1tZXRyaWNfc2FtcGxl Yml0czsKKwlzeW1tZXRyeSA9IHJ0ZC0+ZGFpX2xpbmstPnN5bW1ldHJpY19zYW1wbGViaXRzOwog CisJZm9yX2VhY2hfcnRkX2NwdV9kYWlzKHJ0ZCwgaSwgY3B1X2RhaSkKKwkJc3ltbWV0cnkgfD0g Y3B1X2RhaS0+ZHJpdmVyLT5zeW1tZXRyaWNfc2FtcGxlYml0czsKIAlmb3JfZWFjaF9ydGRfY29k ZWNfZGFpcyhydGQsIGksIGNvZGVjX2RhaSkKIAkJc3ltbWV0cnkgfD0gY29kZWNfZGFpLT5kcml2 ZXItPnN5bW1ldHJpY19zYW1wbGViaXRzOwogCi0JaWYgKHN5bW1ldHJ5ICYmIGNwdV9kYWktPnNh bXBsZV9iaXRzICYmIGNwdV9kYWktPnNhbXBsZV9iaXRzICE9IHNhbXBsZV9iaXRzKSB7Ci0JCWRl dl9lcnIocnRkLT5kZXYsICJBU29DOiB1bm1hdGNoZWQgc2FtcGxlIGJpdHMgc3ltbWV0cnk6ICVk IC0gJWRcbiIsCi0JCQkJY3B1X2RhaS0+c2FtcGxlX2JpdHMsIHNhbXBsZV9iaXRzKTsKLQkJcmV0 dXJuIC1FSU5WQUw7Ci0JfQorCWlmIChzeW1tZXRyeSkKKwkJZm9yX2VhY2hfcnRkX2NwdV9kYWlz KHJ0ZCwgaSwgY3B1X2RhaSkKKwkJCWlmIChjcHVfZGFpLT5zYW1wbGVfYml0cyAmJgorCQkJICAg IGNwdV9kYWktPnNhbXBsZV9iaXRzICE9IHNhbXBsZV9iaXRzKSB7CisJCQkJZGV2X2VycihydGQt PmRldiwgIkFTb0M6IHVubWF0Y2hlZCBzYW1wbGUgYml0cyBzeW1tZXRyeTogJWQgLSAlZFxuIiwK KwkJCQkJY3B1X2RhaS0+c2FtcGxlX2JpdHMsIHNhbXBsZV9iaXRzKTsKKwkJCQlyZXR1cm4gLUVJ TlZBTDsKKwkJCX0KIAogCXJldHVybiAwOwogfQpAQCAtNDg2LDE0ICs1MDQsMjAgQEAgc3RhdGlj IGludCBzb2NfcGNtX3BhcmFtc19zeW1tZXRyeShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1 YnN0cmVhbSwKIHN0YXRpYyBib29sIHNvY19wY21faGFzX3N5bW1ldHJ5KHN0cnVjdCBzbmRfcGNt X3N1YnN0cmVhbSAqc3Vic3RyZWFtKQogewogCXN0cnVjdCBzbmRfc29jX3BjbV9ydW50aW1lICpy dGQgPSBzdWJzdHJlYW0tPnByaXZhdGVfZGF0YTsKLQlzdHJ1Y3Qgc25kX3NvY19kYWlfZHJpdmVy ICpjcHVfZHJpdmVyID0gcnRkLT5jcHVfZGFpLT5kcml2ZXI7CiAJc3RydWN0IHNuZF9zb2NfZGFp X2xpbmsgKmxpbmsgPSBydGQtPmRhaV9saW5rOworCXN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2Rh aTsKIAlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNvZGVjX2RhaTsKIAl1bnNpZ25lZCBpbnQgc3ltbWV0 cnksIGk7CiAKLQlzeW1tZXRyeSA9IGNwdV9kcml2ZXItPnN5bW1ldHJpY19yYXRlcyB8fCBsaW5r LT5zeW1tZXRyaWNfcmF0ZXMgfHwKLQkJY3B1X2RyaXZlci0+c3ltbWV0cmljX2NoYW5uZWxzIHx8 IGxpbmstPnN5bW1ldHJpY19jaGFubmVscyB8fAotCQljcHVfZHJpdmVyLT5zeW1tZXRyaWNfc2Ft cGxlYml0cyB8fCBsaW5rLT5zeW1tZXRyaWNfc2FtcGxlYml0czsKKwlzeW1tZXRyeSA9IGxpbmst PnN5bW1ldHJpY19yYXRlcyB8fAorCQkgICBsaW5rLT5zeW1tZXRyaWNfY2hhbm5lbHMgfHwKKwkJ ICAgbGluay0+c3ltbWV0cmljX3NhbXBsZWJpdHM7CisKKwlmb3JfZWFjaF9ydGRfY3B1X2RhaXMo cnRkLCBpLCBjcHVfZGFpKQorCQlzeW1tZXRyeSA9IHN5bW1ldHJ5IHx8CisJCQljcHVfZGFpLT5k cml2ZXItPnN5bW1ldHJpY19yYXRlcyB8fAorCQkJY3B1X2RhaS0+ZHJpdmVyLT5zeW1tZXRyaWNf Y2hhbm5lbHMgfHwKKwkJCWNwdV9kYWktPmRyaXZlci0+c3ltbWV0cmljX3NhbXBsZWJpdHM7CiAK IAlmb3JfZWFjaF9ydGRfY29kZWNfZGFpcyhydGQsIGksIGNvZGVjX2RhaSkKIAkJc3ltbWV0cnkg PSBzeW1tZXRyeSB8fApAQCAtNTIxLDEyICs1NDUsMTIgQEAgc3RhdGljIHZvaWQgc29jX3BjbV9z ZXRfbXNiKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBpbnQgYml0cykKIHN0 YXRpYyB2b2lkIHNvY19wY21fYXBwbHlfbXNiKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vi c3RyZWFtKQogewogCXN0cnVjdCBzbmRfc29jX3BjbV9ydW50aW1lICpydGQgPSBzdWJzdHJlYW0t PnByaXZhdGVfZGF0YTsKLQlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWkgPSBydGQtPmNwdV9k YWk7CisJc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpOwogCXN0cnVjdCBzbmRfc29jX2RhaSAq Y29kZWNfZGFpOwogCXN0cnVjdCBzbmRfc29jX3BjbV9zdHJlYW0gKnBjbV9jb2RlYywgKnBjbV9j cHU7CiAJaW50IHN0cmVhbSA9IHN1YnN0cmVhbS0+c3RyZWFtOwogCWludCBpOwotCXVuc2lnbmVk IGludCBiaXRzID0gMCwgY3B1X2JpdHM7CisJdW5zaWduZWQgaW50IGJpdHMgPSAwOwogCiAJZm9y X2VhY2hfcnRkX2NvZGVjX2RhaXMocnRkLCBpLCBjb2RlY19kYWkpIHsKIAkJcGNtX2NvZGVjID0g c25kX3NvY19kYWlfZ2V0X3BjbV9zdHJlYW0oY29kZWNfZGFpLCBzdHJlYW0pOwpAQCAtNTM3LDEy ICs1NjEsMTkgQEAgc3RhdGljIHZvaWQgc29jX3BjbV9hcHBseV9tc2Ioc3RydWN0IHNuZF9wY21f c3Vic3RyZWFtICpzdWJzdHJlYW0pCiAJCX0KIAkJYml0cyA9IG1heChwY21fY29kZWMtPnNpZ19i aXRzLCBiaXRzKTsKIAl9CisJc29jX3BjbV9zZXRfbXNiKHN1YnN0cmVhbSwgYml0cyk7CiAKLQlw Y21fY3B1ID0gc25kX3NvY19kYWlfZ2V0X3BjbV9zdHJlYW0oY3B1X2RhaSwgc3RyZWFtKTsKLQlj cHVfYml0cyA9IHBjbV9jcHUtPnNpZ19iaXRzOworCWJpdHMgPSAwOworCWZvcl9lYWNoX3J0ZF9j cHVfZGFpcyhydGQsIGksIGNwdV9kYWkpIHsKKwkJcGNtX2NwdSA9IHNuZF9zb2NfZGFpX2dldF9w Y21fc3RyZWFtKGNwdV9kYWksIHN0cmVhbSk7CiAKKwkJaWYgKHBjbV9jcHUtPnNpZ19iaXRzID09 IDApIHsKKwkJCWJpdHMgPSAwOworCQkJYnJlYWs7CisJCX0KKwkJYml0cyA9IG1heChwY21fY3B1 LT5zaWdfYml0cywgYml0cyk7CisJfQogCXNvY19wY21fc2V0X21zYihzdWJzdHJlYW0sIGJpdHMp OwotCXNvY19wY21fc2V0X21zYihzdWJzdHJlYW0sIGNwdV9iaXRzKTsKIH0KIAogc3RhdGljIHZv aWQgc29jX3BjbV9pbml0X3J1bnRpbWVfaHcoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJz dHJlYW0pCkBAIC01NjAsNiArNTkxLDEwIEBAIHN0YXRpYyB2b2lkIHNvY19wY21faW5pdF9ydW50 aW1lX2h3KHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQogCWludCBzdHJlYW0g PSBzdWJzdHJlYW0tPnN0cmVhbTsKIAlpbnQgaTsKIAorCWlmIChydGQtPm51bV9jcHVzID4gMSkK KwkJZGV2X3dhcm4ocnRkLT5kZXYsCisJCQkgIiVzIGRvZXNuJ3Qgc3VwcG9ydCBNdWx0aSBDUFUg eWV0XG4iLCBfX2Z1bmNfXyk7CisKIAljcHVfc3RyZWFtID0gc25kX3NvY19kYWlfZ2V0X3BjbV9z dHJlYW0ocnRkLT5jcHVfZGFpLCBzdHJlYW0pOwogCiAJLyogZmlyc3QgY2FsY3VsYXRlIG1pbi9t YXggb25seSBmb3IgQ09ERUNzIGluIHRoZSBEQUkgbGluayAqLwpAQCAtNjU1LDcgKzY5MCw3IEBA IHN0YXRpYyBpbnQgc29jX3BjbV9jbG9zZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0 cmVhbSkKIHsKIAlzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkID0gc3Vic3RyZWFtLT5w cml2YXRlX2RhdGE7CiAJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQ7Ci0Jc3Ry dWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpID0gcnRkLT5jcHVfZGFpOworCXN0cnVjdCBzbmRfc29j X2RhaSAqY3B1X2RhaTsKIAlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNvZGVjX2RhaTsKIAlpbnQgaTsK IApAQCAtNjYzLDcgKzY5OCw4IEBAIHN0YXRpYyBpbnQgc29jX3BjbV9jbG9zZShzdHJ1Y3Qgc25k X3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIAogCXNuZF9zb2NfcnVudGltZV9kZWFjdGl2YXRl KHJ0ZCwgc3Vic3RyZWFtLT5zdHJlYW0pOwogCi0Jc25kX3NvY19kYWlfc2h1dGRvd24oY3B1X2Rh aSwgc3Vic3RyZWFtKTsKKwlmb3JfZWFjaF9ydGRfY3B1X2RhaXMocnRkLCBpLCBjcHVfZGFpKQor CQlzbmRfc29jX2RhaV9zaHV0ZG93bihjcHVfZGFpLCBzdWJzdHJlYW0pOwogCiAJZm9yX2VhY2hf cnRkX2NvZGVjX2RhaXMocnRkLCBpLCBjb2RlY19kYWkpCiAJCXNuZF9zb2NfZGFpX3NodXRkb3du KGNvZGVjX2RhaSwgc3Vic3RyZWFtKTsKQEAgLTY5OCw4ICs3MzQsOSBAQCBzdGF0aWMgaW50IHNv Y19wY21fb3BlbihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIAlzdHJ1Y3Qg c25kX3NvY19wY21fcnVudGltZSAqcnRkID0gc3Vic3RyZWFtLT5wcml2YXRlX2RhdGE7CiAJc3Ry dWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKIAlzdHJ1 Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudDsKLQlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNw dV9kYWkgPSBydGQtPmNwdV9kYWk7CisJc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpOwogCXN0 cnVjdCBzbmRfc29jX2RhaSAqY29kZWNfZGFpOworCWNvbnN0IGNoYXIgKmNwdV9kYWlfbmFtZSA9 ICJtdWx0aWNwdSI7CiAJY29uc3QgY2hhciAqY29kZWNfZGFpX25hbWUgPSAibXVsdGljb2RlYyI7 CiAJaW50IGksIHJldCA9IDA7CiAKQEAgLTcyMywxMCArNzYwLDEwIEBAIHN0YXRpYyBpbnQgc29j X3BjbV9vcGVuKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQogCX0KIAogCS8q IHN0YXJ0dXAgdGhlIGF1ZGlvIHN1YnN5c3RlbSAqLwotCXJldCA9IHNuZF9zb2NfZGFpX3N0YXJ0 dXAoY3B1X2RhaSwgc3Vic3RyZWFtKTsKKwlmb3JfZWFjaF9ydGRfY3B1X2RhaXMocnRkLCBpLCBj cHVfZGFpKQorCQlyZXQgfD0gc25kX3NvY19kYWlfc3RhcnR1cChjcHVfZGFpLCBzdWJzdHJlYW0p OwogCWlmIChyZXQgPCAwKSB7Ci0JCWRldl9lcnIoY3B1X2RhaS0+ZGV2LCAiQVNvQzogY2FuJ3Qg b3BlbiBpbnRlcmZhY2UgJXM6ICVkXG4iLAotCQkJY3B1X2RhaS0+bmFtZSwgcmV0KTsKKwkJZGV2 X2VycihydGQtPmRldiwgIkFTb0M6IGNhbid0IG9wZW4gQ1BVIGludGVyZmFjZSAlZFxuIiwgcmV0 KTsKIAkJZ290byBjcHVfZGFpX2VycjsKIAl9CiAKQEAgLTc1MSw2ICs3ODgsOCBAQCBzdGF0aWMg aW50IHNvY19wY21fb3BlbihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIAkv KiBDaGVjayB0aGF0IHRoZSBjb2RlYyBhbmQgY3B1IERBSXMgYXJlIGNvbXBhdGlibGUgKi8KIAlz b2NfcGNtX2luaXRfcnVudGltZV9odyhzdWJzdHJlYW0pOwogCisJaWYgKHJ0ZC0+bnVtX2NwdXMg PT0gMSkKKwkJY3B1X2RhaV9uYW1lID0gcnRkLT5jcHVfZGFpLT5uYW1lOwogCWlmIChydGQtPm51 bV9jb2RlY3MgPT0gMSkKIAkJY29kZWNfZGFpX25hbWUgPSBydGQtPmNvZGVjX2RhaS0+bmFtZTsK IApAQCAtNzYwLDI4ICs3OTksMzAgQEAgc3RhdGljIGludCBzb2NfcGNtX29wZW4oc3RydWN0IHNu ZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiAJcmV0ID0gLUVJTlZBTDsKIAlpZiAoIXJ1bnRp bWUtPmh3LnJhdGVzKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiQVNvQzogJXMgPC0+ICVzIE5vIG1h dGNoaW5nIHJhdGVzXG4iLAotCQkJY29kZWNfZGFpX25hbWUsIGNwdV9kYWktPm5hbWUpOworCQkJ Y29kZWNfZGFpX25hbWUsIGNwdV9kYWlfbmFtZSk7CiAJCWdvdG8gY29uZmlnX2VycjsKIAl9CiAJ aWYgKCFydW50aW1lLT5ody5mb3JtYXRzKSB7CiAJCXByaW50ayhLRVJOX0VSUiAiQVNvQzogJXMg PC0+ICVzIE5vIG1hdGNoaW5nIGZvcm1hdHNcbiIsCi0JCQljb2RlY19kYWlfbmFtZSwgY3B1X2Rh aS0+bmFtZSk7CisJCQljb2RlY19kYWlfbmFtZSwgY3B1X2RhaV9uYW1lKTsKIAkJZ290byBjb25m aWdfZXJyOwogCX0KIAlpZiAoIXJ1bnRpbWUtPmh3LmNoYW5uZWxzX21pbiB8fCAhcnVudGltZS0+ aHcuY2hhbm5lbHNfbWF4IHx8CiAJICAgIHJ1bnRpbWUtPmh3LmNoYW5uZWxzX21pbiA+IHJ1bnRp bWUtPmh3LmNoYW5uZWxzX21heCkgewogCQlwcmludGsoS0VSTl9FUlIgIkFTb0M6ICVzIDwtPiAl cyBObyBtYXRjaGluZyBjaGFubmVsc1xuIiwKLQkJCQljb2RlY19kYWlfbmFtZSwgY3B1X2RhaS0+ bmFtZSk7CisJCQkJY29kZWNfZGFpX25hbWUsIGNwdV9kYWlfbmFtZSk7CiAJCWdvdG8gY29uZmln X2VycjsKIAl9CiAKIAlzb2NfcGNtX2FwcGx5X21zYihzdWJzdHJlYW0pOwogCiAJLyogU3ltbWV0 cnkgb25seSBhcHBsaWVzIGlmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFjdGl2ZSBzdHJlYW0uICov Ci0JaWYgKGNwdV9kYWktPmFjdGl2ZSkgewotCQlyZXQgPSBzb2NfcGNtX2FwcGx5X3N5bW1ldHJ5 KHN1YnN0cmVhbSwgY3B1X2RhaSk7Ci0JCWlmIChyZXQgIT0gMCkKLQkJCWdvdG8gY29uZmlnX2Vy cjsKKwlmb3JfZWFjaF9ydGRfY3B1X2RhaXMocnRkLCBpLCBjcHVfZGFpKSB7CisJCWlmIChjcHVf ZGFpLT5hY3RpdmUpIHsKKwkJCXJldCA9IHNvY19wY21fYXBwbHlfc3ltbWV0cnkoc3Vic3RyZWFt LCBjcHVfZGFpKTsKKwkJCWlmIChyZXQgIT0gMCkKKwkJCQlnb3RvIGNvbmZpZ19lcnI7CisJCX0K IAl9CiAKIAlmb3JfZWFjaF9ydGRfY29kZWNfZGFpcyhydGQsIGksIGNvZGVjX2RhaSkgewpAQCAt NzkzLDcgKzgzNCw3IEBAIHN0YXRpYyBpbnQgc29jX3BjbV9vcGVuKHN0cnVjdCBzbmRfcGNtX3N1 YnN0cmVhbSAqc3Vic3RyZWFtKQogCX0KIAogCXByX2RlYnVnKCJBU29DOiAlcyA8LT4gJXMgaW5m bzpcbiIsCi0JCQljb2RlY19kYWlfbmFtZSwgY3B1X2RhaS0+bmFtZSk7CisJCQljb2RlY19kYWlf bmFtZSwgY3B1X2RhaV9uYW1lKTsKIAlwcl9kZWJ1ZygiQVNvQzogcmF0ZSBtYXNrIDB4JXhcbiIs IHJ1bnRpbWUtPmh3LnJhdGVzKTsKIAlwcl9kZWJ1ZygiQVNvQzogbWluIGNoICVkIG1heCBjaCAl ZFxuIiwgcnVudGltZS0+aHcuY2hhbm5lbHNfbWluLAogCQkgcnVudGltZS0+aHcuY2hhbm5lbHNf bWF4KTsKQEAgLTgxMSw3ICs4NTIsOCBAQCBzdGF0aWMgaW50IHNvY19wY21fb3BlbihzdHJ1Y3Qg c25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIAlmb3JfZWFjaF9ydGRfY29kZWNfZGFpcyhy dGQsIGksIGNvZGVjX2RhaSkKIAkJc25kX3NvY19kYWlfc2h1dGRvd24oY29kZWNfZGFpLCBzdWJz dHJlYW0pOwogY3B1X2RhaV9lcnI6Ci0Jc25kX3NvY19kYWlfc2h1dGRvd24oY3B1X2RhaSwgc3Vi c3RyZWFtKTsKKwlmb3JfZWFjaF9ydGRfY3B1X2RhaXMocnRkLCBpLCBjcHVfZGFpKQorCQlzbmRf c29jX2RhaV9zaHV0ZG93bihjcHVfZGFpLCBzdWJzdHJlYW0pOwogcnRkX2VycjoKIAlzb2NfcnRk X3NodXRkb3duKHJ0ZCwgc3Vic3RyZWFtKTsKIGNvbXBvbmVudF9lcnI6CkBAIC04NTAsNyArODky LDcgQEAgc3RhdGljIGludCBzb2NfcGNtX3ByZXBhcmUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFt ICpzdWJzdHJlYW0pCiB7CiAJc3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKnJ0ZCA9IHN1YnN0 cmVhbS0+cHJpdmF0ZV9kYXRhOwogCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50 OwotCXN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSA9IHJ0ZC0+Y3B1X2RhaTsKKwlzdHJ1Y3Qg c25kX3NvY19kYWkgKmNwdV9kYWk7CiAJc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19kYWk7CiAJ aW50IGksIHJldCA9IDA7CiAKQEAgLTg4MSwxMiArOTIzLDEzIEBAIHN0YXRpYyBpbnQgc29jX3Bj bV9wcmVwYXJlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQogCQkJZ290byBv dXQ7CiAJCX0KIAl9Ci0KLQlyZXQgPSBzbmRfc29jX2RhaV9wcmVwYXJlKGNwdV9kYWksIHN1YnN0 cmVhbSk7Ci0JaWYgKHJldCA8IDApIHsKLQkJZGV2X2VycihjcHVfZGFpLT5kZXYsCi0JCQkiQVNv QzogY3B1IERBSSBwcmVwYXJlIGVycm9yOiAlZFxuIiwgcmV0KTsKLQkJZ290byBvdXQ7CisJZm9y X2VhY2hfcnRkX2NwdV9kYWlzKHJ0ZCwgaSwgY3B1X2RhaSkgeworCQlyZXQgPSBzbmRfc29jX2Rh aV9wcmVwYXJlKGNwdV9kYWksIHN1YnN0cmVhbSk7CisJCWlmIChyZXQgPCAwKSB7CisJCQlkZXZf ZXJyKGNwdV9kYWktPmRldiwKKwkJCQkiQVNvQzogY3B1IERBSSBwcmVwYXJlIGVycm9yOiAlZFxu IiwgcmV0KTsKKwkJCWdvdG8gb3V0OworCQl9CiAJfQogCiAJLyogY2FuY2VsIGFueSBkZWxheWVk IHN0cmVhbSBzaHV0ZG93biB0aGF0IGlzIHBlbmRpbmcgKi8KQEAgLTkwMiw3ICs5NDUsOCBAQCBz dGF0aWMgaW50IHNvY19wY21fcHJlcGFyZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0 cmVhbSkKIAlmb3JfZWFjaF9ydGRfY29kZWNfZGFpcyhydGQsIGksIGNvZGVjX2RhaSkKIAkJc25k X3NvY19kYWlfZGlnaXRhbF9tdXRlKGNvZGVjX2RhaSwgMCwKIAkJCQkJIHN1YnN0cmVhbS0+c3Ry ZWFtKTsKLQlzbmRfc29jX2RhaV9kaWdpdGFsX211dGUoY3B1X2RhaSwgMCwgc3Vic3RyZWFtLT5z dHJlYW0pOworCWZvcl9lYWNoX3J0ZF9jcHVfZGFpcyhydGQsIGksIGNwdV9kYWkpCisJCXNuZF9z b2NfZGFpX2RpZ2l0YWxfbXV0ZShjcHVfZGFpLCAwLCBzdWJzdHJlYW0tPnN0cmVhbSk7CiAKIG91 dDoKIAltdXRleF91bmxvY2soJnJ0ZC0+Y2FyZC0+cGNtX211dGV4KTsKQEAgLTk0NywxMCArOTkx LDExIEBAIHN0YXRpYyBpbnQgc29jX3BjbV9od19wYXJhbXMoc3RydWN0IHNuZF9wY21fc3Vic3Ry ZWFtICpzdWJzdHJlYW0sCiB7CiAJc3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKnJ0ZCA9IHN1 YnN0cmVhbS0+cHJpdmF0ZV9kYXRhOwogCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9u ZW50OwotCXN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSA9IHJ0ZC0+Y3B1X2RhaTsKKwlzdHJ1 Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWk7CiAJc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19kYWk7 CiAJaW50IGksIHJldCA9IDA7CiAJaW50IGNvZGVjX2VyciA9IDA7CisJaW50IGNwdV9lcnIgPSAw OwogCiAJbXV0ZXhfbG9ja19uZXN0ZWQoJnJ0ZC0+Y2FyZC0+cGNtX211dGV4LCBydGQtPmNhcmQt PnBjbV9zdWJjbGFzcyk7CiAKQEAgLTEwMTYsOSArMTA2MSwyNSBAQCBzdGF0aWMgaW50IHNvY19w Y21faHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCQlnb3Rv IGNvZGVjX2VycjsKIAl9CiAKLQlyZXQgPSBzbmRfc29jX2RhaV9od19wYXJhbXMoY3B1X2RhaSwg c3Vic3RyZWFtLCBwYXJhbXMpOwotCWlmIChyZXQgPCAwKQotCQlnb3RvIGNvZGVjX2VycjsKKwlm b3JfZWFjaF9ydGRfY3B1X2RhaXMocnRkLCBpLCBjcHVfZGFpKSB7CisJCWlmICghc25kX3NvY19k YWlfc3RyZWFtX3ZhbGlkKGNwdV9kYWksIHN1YnN0cmVhbS0+c3RyZWFtKSkKKwkJCWNvbnRpbnVl OworCisJCXJldCA9IHNuZF9zb2NfZGFpX2h3X3BhcmFtcyhjcHVfZGFpLCBzdWJzdHJlYW0sIHBh cmFtcyk7CisJCWlmIChyZXQgPCAwKQorCQkJY3B1X2VyciA9IHJldDsKKwl9CisJaWYgKGNwdV9l cnIpIHsKKwkJcmV0ID0gY3B1X2VycjsKKwkJZ290byBjcHVfZXJyOworCX0KKworCS8qIGhvdyB0 byBoYW5kbGUgdGhlc2UgZm9yIE11bHRpIENQVSA/ICovCisJaWYgKHJ0ZC0+bnVtX2NwdXMgPiAx KQorCQlkZXZfd2FybihydGQtPmRldiwKKwkJCSAiJXMgZG9lc24ndCBzdXBwb3J0IE11bHRpIENQ VSB5ZXRcbiIsIF9fZnVuY19fKTsKKworCWNwdV9kYWkgPSBydGQtPmNwdV9kYWk7CiAKIAkvKiBz dG9yZSB0aGUgcGFyYW1ldGVycyBmb3IgZWFjaCBEQUlzICovCiAJY3B1X2RhaS0+cmF0ZSA9IHBh cmFtc19yYXRlKHBhcmFtcyk7CkBAIC0xMDQ2LDkgKzExMDcsMTQgQEAgc3RhdGljIGludCBzb2Nf cGNtX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIGNvbXBv bmVudF9lcnI6CiAJc29jX3BjbV9jb21wb25lbnRzX2h3X2ZyZWUoc3Vic3RyZWFtLCBjb21wb25l bnQpOwogCi0Jc25kX3NvY19kYWlfaHdfZnJlZShjcHVfZGFpLCBzdWJzdHJlYW0pOwotCWNwdV9k YWktPnJhdGUgPSAwOworY3B1X2VycjoKKwlmb3JfZWFjaF9ydGRfY3B1X2RhaXMocnRkLCBpLCBj cHVfZGFpKSB7CisJCWlmICghc25kX3NvY19kYWlfc3RyZWFtX3ZhbGlkKGNwdV9kYWksIHN1YnN0 cmVhbS0+c3RyZWFtKSkKKwkJCWNvbnRpbnVlOwogCisJCXNuZF9zb2NfZGFpX2h3X2ZyZWUoY3B1 X2RhaSwgc3Vic3RyZWFtKTsKKwkJY3B1X2RhaS0+cmF0ZSA9IDA7CisJfQogY29kZWNfZXJyOgog CWZvcl9lYWNoX3J0ZF9jb2RlY19kYWlzKHJ0ZCwgaSwgY29kZWNfZGFpKSB7CiAJCWlmICghc25k X3NvY19kYWlfc3RyZWFtX3ZhbGlkKGNvZGVjX2RhaSwgc3Vic3RyZWFtLT5zdHJlYW0pKQpAQCAt MTA3MCwxOSArMTEzNiwyMCBAQCBzdGF0aWMgaW50IHNvY19wY21faHdfcGFyYW1zKHN0cnVjdCBz bmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogc3RhdGljIGludCBzb2NfcGNtX2h3X2ZyZWUo c3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiB7CiAJc3RydWN0IHNuZF9zb2Nf cGNtX3J1bnRpbWUgKnJ0ZCA9IHN1YnN0cmVhbS0+cHJpdmF0ZV9kYXRhOwotCXN0cnVjdCBzbmRf c29jX2RhaSAqY3B1X2RhaSA9IHJ0ZC0+Y3B1X2RhaTsKKwlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNw dV9kYWk7CiAJc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19kYWk7CiAJaW50IGk7CiAKIAltdXRl eF9sb2NrX25lc3RlZCgmcnRkLT5jYXJkLT5wY21fbXV0ZXgsIHJ0ZC0+Y2FyZC0+cGNtX3N1YmNs YXNzKTsKIAogCS8qIGNsZWFyIHRoZSBjb3JyZXNwb25kaW5nIERBSXMgcGFyYW1ldGVycyB3aGVu IGdvaW5nIHRvIGJlIGluYWN0aXZlICovCi0JaWYgKGNwdV9kYWktPmFjdGl2ZSA9PSAxKSB7Ci0J CWNwdV9kYWktPnJhdGUgPSAwOwotCQljcHVfZGFpLT5jaGFubmVscyA9IDA7Ci0JCWNwdV9kYWkt PnNhbXBsZV9iaXRzID0gMDsKKwlmb3JfZWFjaF9ydGRfY3B1X2RhaXMocnRkLCBpLCBjcHVfZGFp KSB7CisJCWlmIChjcHVfZGFpLT5hY3RpdmUgPT0gMSkgeworCQkJY3B1X2RhaS0+cmF0ZSA9IDA7 CisJCQljcHVfZGFpLT5jaGFubmVscyA9IDA7CisJCQljcHVfZGFpLT5zYW1wbGVfYml0cyA9IDA7 CisJCX0KIAl9Ci0KIAlmb3JfZWFjaF9ydGRfY29kZWNfZGFpcyhydGQsIGksIGNvZGVjX2RhaSkg ewogCQlpZiAoY29kZWNfZGFpLT5hY3RpdmUgPT0gMSkgewogCQkJY29kZWNfZGFpLT5yYXRlID0g MDsKQEAgLTEwOTcsOCArMTE2NCwxMCBAQCBzdGF0aWMgaW50IHNvY19wY21faHdfZnJlZShzdHJ1 Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIAkJCXNuZF9zb2NfZGFpX2RpZ2l0YWxf bXV0ZShjb2RlY19kYWksIDEsCiAJCQkJCQkgc3Vic3RyZWFtLT5zdHJlYW0pOwogCX0KLQlpZiAo Y3B1X2RhaS0+YWN0aXZlID09IDEpCi0JCXNuZF9zb2NfZGFpX2RpZ2l0YWxfbXV0ZShjcHVfZGFp LCAxLCBzdWJzdHJlYW0tPnN0cmVhbSk7CisJZm9yX2VhY2hfcnRkX2NwdV9kYWlzKHJ0ZCwgaSwg Y3B1X2RhaSkgeworCQlpZiAoY3B1X2RhaS0+YWN0aXZlID09IDEpCisJCQlzbmRfc29jX2RhaV9k aWdpdGFsX211dGUoY3B1X2RhaSwgMSwgc3Vic3RyZWFtLT5zdHJlYW0pOworCX0KIAogCS8qIGZy ZWUgYW55IG1hY2hpbmUgaHcgcGFyYW1zICovCiAJc29jX3J0ZF9od19mcmVlKHJ0ZCwgc3Vic3Ry ZWFtKTsKQEAgLTExMTQsNyArMTE4MywxMiBAQCBzdGF0aWMgaW50IHNvY19wY21faHdfZnJlZShz dHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKIAkJc25kX3NvY19kYWlfaHdfZnJl ZShjb2RlY19kYWksIHN1YnN0cmVhbSk7CiAJfQogCi0Jc25kX3NvY19kYWlfaHdfZnJlZShjcHVf ZGFpLCBzdWJzdHJlYW0pOworCWZvcl9lYWNoX3J0ZF9jcHVfZGFpcyhydGQsIGksIGNwdV9kYWkp IHsKKwkJaWYgKCFzbmRfc29jX2RhaV9zdHJlYW1fdmFsaWQoY3B1X2RhaSwgc3Vic3RyZWFtLT5z dHJlYW0pKQorCQkJY29udGludWU7CisKKwkJc25kX3NvY19kYWlfaHdfZnJlZShjcHVfZGFpLCBz dWJzdHJlYW0pOworCX0KIAogCW11dGV4X3VubG9jaygmcnRkLT5jYXJkLT5wY21fbXV0ZXgpOwog CXJldHVybiAwOwpAQCAtMTEyNCw3ICsxMTk4LDcgQEAgc3RhdGljIGludCBzb2NfcGNtX3RyaWdn ZXJfc3RhcnQoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sIGludCBjbWQpCiB7 CiAJc3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKnJ0ZCA9IHN1YnN0cmVhbS0+cHJpdmF0ZV9k YXRhOwogCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50OwotCXN0cnVjdCBzbmRf c29jX2RhaSAqY3B1X2RhaSA9IHJ0ZC0+Y3B1X2RhaTsKKwlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNw dV9kYWk7CiAJc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19kYWk7CiAJaW50IGksIHJldDsKIApA QCAtMTEzOCw5ICsxMjEyLDExIEBAIHN0YXRpYyBpbnQgc29jX3BjbV90cmlnZ2VyX3N0YXJ0KHN0 cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBpbnQgY21kKQogCQkJcmV0dXJuIHJl dDsKIAl9CiAKLQlyZXQgPSBzbmRfc29jX2RhaV90cmlnZ2VyKGNwdV9kYWksIHN1YnN0cmVhbSwg Y21kKTsKLQlpZiAocmV0IDwgMCkKLQkJcmV0dXJuIHJldDsKKwlmb3JfZWFjaF9ydGRfY3B1X2Rh aXMocnRkLCBpLCBjcHVfZGFpKSB7CisJCXJldCA9IHNuZF9zb2NfZGFpX3RyaWdnZXIoY3B1X2Rh aSwgc3Vic3RyZWFtLCBjbWQpOworCQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisJfQog CiAJZm9yX2VhY2hfcnRkX2NvZGVjX2RhaXMocnRkLCBpLCBjb2RlY19kYWkpIHsKIAkJcmV0ID0g c25kX3NvY19kYWlfdHJpZ2dlcihjb2RlY19kYWksIHN1YnN0cmVhbSwgY21kKTsKQEAgLTExNTUs NyArMTIzMSw3IEBAIHN0YXRpYyBpbnQgc29jX3BjbV90cmlnZ2VyX3N0b3Aoc3RydWN0IHNuZF9w Y21fc3Vic3RyZWFtICpzdWJzdHJlYW0sIGludCBjbWQpCiB7CiAJc3RydWN0IHNuZF9zb2NfcGNt X3J1bnRpbWUgKnJ0ZCA9IHN1YnN0cmVhbS0+cHJpdmF0ZV9kYXRhOwogCXN0cnVjdCBzbmRfc29j X2NvbXBvbmVudCAqY29tcG9uZW50OwotCXN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSA9IHJ0 ZC0+Y3B1X2RhaTsKKwlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWk7CiAJc3RydWN0IHNuZF9z b2NfZGFpICpjb2RlY19kYWk7CiAJaW50IGksIHJldDsKIApAQCAtMTE2NSw5ICsxMjQxLDExIEBA IHN0YXRpYyBpbnQgc29jX3BjbV90cmlnZ2VyX3N0b3Aoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFt ICpzdWJzdHJlYW0sIGludCBjbWQpCiAJCQlyZXR1cm4gcmV0OwogCX0KIAotCXJldCA9IHNuZF9z b2NfZGFpX3RyaWdnZXIoY3B1X2RhaSwgc3Vic3RyZWFtLCBjbWQpOwotCWlmIChyZXQgPCAwKQot CQlyZXR1cm4gcmV0OworCWZvcl9lYWNoX3J0ZF9jcHVfZGFpcyhydGQsIGksIGNwdV9kYWkpIHsK KwkJcmV0ID0gc25kX3NvY19kYWlfdHJpZ2dlcihjcHVfZGFpLCBzdWJzdHJlYW0sIGNtZCk7CisJ CWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwl9CiAKIAlmb3JfZWFjaF9ydGRfY29tcG9u ZW50cyhydGQsIGksIGNvbXBvbmVudCkgewogCQlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF90cmln Z2VyKGNvbXBvbmVudCwgc3Vic3RyZWFtLCBjbWQpOwpAQCAtMTIwOCw3ICsxMjg2LDcgQEAgc3Rh dGljIGludCBzb2NfcGNtX2Jlc3Bva2VfdHJpZ2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0g KnN1YnN0cmVhbSwKIAkJCQkgICBpbnQgY21kKQogewogCXN0cnVjdCBzbmRfc29jX3BjbV9ydW50 aW1lICpydGQgPSBzdWJzdHJlYW0tPnByaXZhdGVfZGF0YTsKLQlzdHJ1Y3Qgc25kX3NvY19kYWkg KmNwdV9kYWkgPSBydGQtPmNwdV9kYWk7CisJc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpOwog CXN0cnVjdCBzbmRfc29jX2RhaSAqY29kZWNfZGFpOwogCWludCBpLCByZXQ7CiAKQEAgLTEyMTgs OSArMTI5NiwxMSBAQCBzdGF0aWMgaW50IHNvY19wY21fYmVzcG9rZV90cmlnZ2VyKHN0cnVjdCBz bmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCQkJcmV0dXJuIHJldDsKIAl9CiAKLQlyZXQg PSBzbmRfc29jX2RhaV9iZXNwb2tlX3RyaWdnZXIoY3B1X2RhaSwgc3Vic3RyZWFtLCBjbWQpOwot CWlmIChyZXQgPCAwKQotCQlyZXR1cm4gcmV0OworCWZvcl9lYWNoX3J0ZF9jcHVfZGFpcyhydGQs IGksIGNwdV9kYWkpIHsKKwkJcmV0ID0gc25kX3NvY19kYWlfYmVzcG9rZV90cmlnZ2VyKGNwdV9k YWksIHN1YnN0cmVhbSwgY21kKTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCX0K IAogCXJldHVybiAwOwogfQpAQCAtMTIzMiwxMSArMTMxMiwxMiBAQCBzdGF0aWMgaW50IHNvY19w Y21fYmVzcG9rZV90cmlnZ2VyKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAog c3RhdGljIHNuZF9wY21fdWZyYW1lc190IHNvY19wY21fcG9pbnRlcihzdHJ1Y3Qgc25kX3BjbV9z dWJzdHJlYW0gKnN1YnN0cmVhbSkKIHsKIAlzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRk ID0gc3Vic3RyZWFtLT5wcml2YXRlX2RhdGE7Ci0Jc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFp ID0gcnRkLT5jcHVfZGFpOworCXN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaTsKIAlzdHJ1Y3Qg c25kX3NvY19kYWkgKmNvZGVjX2RhaTsKIAlzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1l ID0gc3Vic3RyZWFtLT5ydW50aW1lOwogCXNuZF9wY21fdWZyYW1lc190IG9mZnNldCA9IDA7CiAJ c25kX3BjbV9zZnJhbWVzX3QgZGVsYXkgPSAwOworCXNuZF9wY21fc2ZyYW1lc190IGNwdV9kZWxh eSA9IDA7CiAJc25kX3BjbV9zZnJhbWVzX3QgY29kZWNfZGVsYXkgPSAwOwogCWludCBpOwogCkBA IC0xMjQ4LDEzICsxMzI5LDE2IEBAIHN0YXRpYyBzbmRfcGNtX3VmcmFtZXNfdCBzb2NfcGNtX3Bv aW50ZXIoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCiAJLyogYmFzZSBkZWxh eSBpZiBhc3NpZ25lZCBpbiBwb2ludGVyIGNhbGxiYWNrICovCiAJZGVsYXkgPSBydW50aW1lLT5k ZWxheTsKIAotCWRlbGF5ICs9IHNuZF9zb2NfZGFpX2RlbGF5KGNwdV9kYWksIHN1YnN0cmVhbSk7 CisJZm9yX2VhY2hfcnRkX2NwdV9kYWlzKHJ0ZCwgaSwgY3B1X2RhaSkgeworCQljcHVfZGVsYXkg PSBtYXgoY3B1X2RlbGF5LAorCQkJCXNuZF9zb2NfZGFpX2RlbGF5KGNwdV9kYWksIHN1YnN0cmVh bSkpOworCX0KIAogCWZvcl9lYWNoX3J0ZF9jb2RlY19kYWlzKHJ0ZCwgaSwgY29kZWNfZGFpKSB7 CiAJCWNvZGVjX2RlbGF5ID0gbWF4KGNvZGVjX2RlbGF5LAogCQkJCSAgc25kX3NvY19kYWlfZGVs YXkoY29kZWNfZGFpLCBzdWJzdHJlYW0pKTsKIAl9Ci0JZGVsYXkgKz0gY29kZWNfZGVsYXk7CisJ ZGVsYXkgKz0gY3B1X2RlbGF5ICsgY29kZWNfZGVsYXk7CiAKIAlydW50aW1lLT5kZWxheSA9IGRl bGF5OwogCkBAIC0xMzcxLDEzICsxNDU1LDE1IEBAIHN0YXRpYyBzdHJ1Y3Qgc25kX3NvY19wY21f cnVudGltZSAqZHBjbV9nZXRfYmUoc3RydWN0IHNuZF9zb2NfY2FyZCAqY2FyZCwKIAkJaWYgKCFi ZS0+ZGFpX2xpbmstPm5vX3BjbSkKIAkJCWNvbnRpbnVlOwogCi0JCXcgPSBzbmRfc29jX2RhaV9n ZXRfd2lkZ2V0KGJlLT5jcHVfZGFpLCBzdHJlYW0pOworCQlmb3JfZWFjaF9ydGRfY3B1X2RhaXMo YmUsIGksIGRhaSkgeworCQkJdyA9IHNuZF9zb2NfZGFpX2dldF93aWRnZXQoZGFpLCBzdHJlYW0p OwogCi0JCWRldl9kYmcoY2FyZC0+ZGV2LCAiQVNvQzogdHJ5IEJFIDogJXNcbiIsCi0JCQl3ID8g dy0+bmFtZSA6ICIobm90IHNldCkiKTsKKwkJCWRldl9kYmcoY2FyZC0+ZGV2LCAiQVNvQzogdHJ5 IEJFIDogJXNcbiIsCisJCQkJdyA/IHctPm5hbWUgOiAiKG5vdCBzZXQpIik7CiAKLQkJaWYgKHcg PT0gd2lkZ2V0KQotCQkJcmV0dXJuIGJlOworCQkJaWYgKHcgPT0gd2lkZ2V0KQorCQkJCXJldHVy biBiZTsKKwkJfQogCiAJCWZvcl9lYWNoX3J0ZF9jb2RlY19kYWlzKGJlLCBpLCBkYWkpIHsKIAkJ CXcgPSBzbmRfc29jX2RhaV9nZXRfd2lkZ2V0KGRhaSwgc3RyZWFtKTsKQEAgLTE0MzIsNiArMTUx OCwxMCBAQCBpbnQgZHBjbV9wYXRoX2dldChzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqZmUs CiAJc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpID0gZmUtPmNwdV9kYWk7CiAJaW50IHBhdGhz OwogCisJaWYgKGZlLT5udW1fY3B1cyA+IDEpCisJCWRldl93YXJuKGZlLT5kZXYsCisJCQkgIiVz IGRvZXNuJ3Qgc3VwcG9ydCBNdWx0aSBDUFUgeWV0XG4iLCBfX2Z1bmNfXyk7CisKIAkvKiBnZXQg bnVtYmVyIG9mIHZhbGlkIERBSSBwYXRocyBhbmQgdGhlaXIgd2lkZ2V0cyAqLwogCXBhdGhzID0g c25kX3NvY19kYXBtX2RhaV9nZXRfY29ubmVjdGVkX3dpZGdldHMoY3B1X2RhaSwgc3RyZWFtLCBs aXN0LAogCQkJZHBjbV9lbmRfd2Fsa19hdF9iZSk7CkBAIC0xNDYyLDEwICsxNTUyLDE1IEBAIHN0 YXRpYyBpbnQgZHBjbV9wcnVuZV9wYXRocyhzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqZmUs IGludCBzdHJlYW0sCiAJCXVuc2lnbmVkIGludCBpOwogCiAJCS8qIGlzIHRoZXJlIGEgdmFsaWQg Q1BVIERBSSB3aWRnZXQgZm9yIHRoaXMgQkUgKi8KLQkJd2lkZ2V0ID0gc25kX3NvY19kYWlfZ2V0 X3dpZGdldChkcGNtLT5iZS0+Y3B1X2RhaSwgc3RyZWFtKTsKKwkJZG9fcHJ1bmUgPSAxOworCQlm b3JfZWFjaF9ydGRfY3B1X2RhaXMoZHBjbS0+YmUsIGksIGRhaSkgeworCQkJd2lkZ2V0ID0gc25k X3NvY19kYWlfZ2V0X3dpZGdldChkYWksIHN0cmVhbSk7CiAKLQkJLyogcHJ1bmUgdGhlIEJFIGlm IGl0J3Mgbm8gbG9uZ2VyIGluIG91ciBhY3RpdmUgbGlzdCAqLwotCQlpZiAod2lkZ2V0ICYmIHdp ZGdldF9pbl9saXN0KGxpc3QsIHdpZGdldCkpCisJCQkvKiBwcnVuZSB0aGUgQkUgaWYgaXQncyBu byBsb25nZXIgaW4gb3VyIGFjdGl2ZSBsaXN0ICovCisJCQlpZiAod2lkZ2V0ICYmIHdpZGdldF9p bl9saXN0KGxpc3QsIHdpZGdldCkpCisJCQkJZG9fcHJ1bmUgPSAwOworCQl9CisJCWlmICghZG9f cHJ1bmUpCiAJCQljb250aW51ZTsKIAogCQkvKiBpcyB0aGVyZSBhIHZhbGlkIENPREVDIERBSSB3 aWRnZXQgZm9yIHRoaXMgQkUgKi8KQEAgLTE3MjMsNiArMTgxOCwxMCBAQCBzdGF0aWMgdm9pZCBk cGNtX3J1bnRpbWVfbWVyZ2VfY2hhbihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVh bSwKIAkJc3RydWN0IHNuZF9zb2NfcGNtX3N0cmVhbSAqY29kZWNfc3RyZWFtOwogCQlzdHJ1Y3Qg c25kX3NvY19wY21fc3RyZWFtICpjcHVfc3RyZWFtOwogCisJCWlmIChiZS0+bnVtX2NwdXMgPiAx KQorCQkJZGV2X3dhcm4oYmUtPmRldiwKKwkJCQkgIiVzIGRvZXNuJ3Qgc3VwcG9ydCBNdWx0aSBD UFUgeWV0XG4iLCBfX2Z1bmNfXyk7CisKIAkJY3B1X3N0cmVhbSA9IHNuZF9zb2NfZGFpX2dldF9w Y21fc3RyZWFtKGJlLT5jcHVfZGFpLCBzdHJlYW0pOwogCiAJCSpjaGFubmVsc19taW4gPSBtYXgo KmNoYW5uZWxzX21pbiwgY3B1X3N0cmVhbS0+Y2hhbm5lbHNfbWluKTsKQEAgLTE3NjcsMTEgKzE4 NjYsMjAgQEAgc3RhdGljIHZvaWQgZHBjbV9ydW50aW1lX21lcmdlX3JhdGUoc3RydWN0IHNuZF9w Y21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCiAJCXN0cnVjdCBzbmRfc29jX2RhaSAqZGFpOwogCQlp bnQgaTsKIAotCQljcHVfc3RyZWFtID0gc25kX3NvY19kYWlfZ2V0X3BjbV9zdHJlYW0oYmUtPmNw dV9kYWksIHN0cmVhbSk7CisJCWZvcl9lYWNoX3J0ZF9jcHVfZGFpcyhiZSwgaSwgZGFpKSB7CisJ CQkvKgorCQkJICogU2tpcCBDUFVzIHdoaWNoIGRvbid0IHN1cHBvcnQgdGhlIGN1cnJlbnQgc3Ry ZWFtCisJCQkgKiB0eXBlLiBTZWUgc29jX3BjbV9pbml0X3J1bnRpbWVfaHcoKSBmb3IgbW9yZSBk ZXRhaWxzCisJCQkgKi8KKwkJCWlmICghc25kX3NvY19kYWlfc3RyZWFtX3ZhbGlkKGRhaSwgc3Ry ZWFtKSkKKwkJCQljb250aW51ZTsKIAotCQkqcmF0ZV9taW4gPSBtYXgoKnJhdGVfbWluLCBjcHVf c3RyZWFtLT5yYXRlX21pbik7Ci0JCSpyYXRlX21heCA9IG1pbl9ub3RfemVybygqcmF0ZV9tYXgs IGNwdV9zdHJlYW0tPnJhdGVfbWF4KTsKLQkJKnJhdGVzID0gc25kX3BjbV9yYXRlX21hc2tfaW50 ZXJzZWN0KCpyYXRlcywgY3B1X3N0cmVhbS0+cmF0ZXMpOworCQkJY3B1X3N0cmVhbSA9IHNuZF9z b2NfZGFpX2dldF9wY21fc3RyZWFtKGRhaSwgc3RyZWFtKTsKKworCQkJKnJhdGVfbWluID0gbWF4 KCpyYXRlX21pbiwgY3B1X3N0cmVhbS0+cmF0ZV9taW4pOworCQkJKnJhdGVfbWF4ID0gbWluX25v dF96ZXJvKCpyYXRlX21heCwgY3B1X3N0cmVhbS0+cmF0ZV9tYXgpOworCQkJKnJhdGVzID0gc25k X3BjbV9yYXRlX21hc2tfaW50ZXJzZWN0KCpyYXRlcywgY3B1X3N0cmVhbS0+cmF0ZXMpOworCQl9 CiAKIAkJZm9yX2VhY2hfcnRkX2NvZGVjX2RhaXMoYmUsIGksIGRhaSkgewogCQkJLyoKQEAgLTE3 OTksNiArMTkwNywxMCBAQCBzdGF0aWMgdm9pZCBkcGNtX3NldF9mZV9ydW50aW1lKHN0cnVjdCBz bmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQogCXN0cnVjdCBzbmRfc29jX3BjbV9zdHJlYW0g KnN0cmVhbSA9IHNuZF9zb2NfZGFpX2dldF9wY21fc3RyZWFtKAogCQlydGQtPmNwdV9kYWksIHN1 YnN0cmVhbS0+c3RyZWFtKTsKIAorCWlmIChydGQtPm51bV9jcHVzID4gMSkKKwkJZGV2X3dhcm4o cnRkLT5kZXYsCisJCQkgIiVzIGRvZXNuJ3Qgc3VwcG9ydCBNdWx0aSBDUFUgeWV0XG4iLCBfX2Z1 bmNfXyk7CisKIAlydW50aW1lLT5ody5yYXRlX21pbiA9IHN0cmVhbS0+cmF0ZV9taW47CiAJcnVu dGltZS0+aHcucmF0ZV9tYXggPSBtaW5fbm90X3plcm8oc3RyZWFtLT5yYXRlX21heCwgVUlOVF9N QVgpOwogCXJ1bnRpbWUtPmh3LmNoYW5uZWxzX21pbiA9IHN0cmVhbS0+Y2hhbm5lbHNfbWluOwpA QCAtMTg0Nyw2ICsxOTU5LDEwIEBAIHN0YXRpYyBpbnQgZHBjbV9hcHBseV9zeW1tZXRyeShzdHJ1 Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKmZlX3N1YnN0cmVhbSwKIAlzdHJ1Y3Qgc25kX3NvY19kYWkg KmZlX2NwdV9kYWkgPSBmZS0+Y3B1X2RhaTsKIAlpbnQgZXJyOwogCisJaWYgKGZlLT5udW1fY3B1 cyA+IDEpCisJCWRldl93YXJuKGZlLT5kZXYsCisJCQkgIiVzIGRvZXNuJ3Qgc3VwcG9ydCBNdWx0 aSBDUFUgeWV0XG4iLCBfX2Z1bmNfXyk7CisKIAkvKiBhcHBseSBzeW1tZXRyeSBmb3IgRkUgKi8K IAlpZiAoc29jX3BjbV9oYXNfc3ltbWV0cnkoZmVfc3Vic3RyZWFtKSkKIAkJZmVfc3Vic3RyZWFt LT5ydW50aW1lLT5ody5pbmZvIHw9IFNORFJWX1BDTV9JTkZPX0pPSU5UX0RVUExFWDsKQEAgLTE4 NjQsNiArMTk4MCw3IEBAIHN0YXRpYyBpbnQgZHBjbV9hcHBseV9zeW1tZXRyeShzdHJ1Y3Qgc25k X3BjbV9zdWJzdHJlYW0gKmZlX3N1YnN0cmVhbSwKIAkJc3RydWN0IHNuZF9wY21fc3Vic3RyZWFt ICpiZV9zdWJzdHJlYW0gPQogCQkJc25kX3NvY19kcGNtX2dldF9zdWJzdHJlYW0oYmUsIHN0cmVh bSk7CiAJCXN0cnVjdCBzbmRfc29jX3BjbV9ydW50aW1lICpydGQ7CisJCXN0cnVjdCBzbmRfc29j X2RhaSAqY3B1X2RhaTsKIAkJc3RydWN0IHNuZF9zb2NfZGFpICpjb2RlY19kYWk7CiAJCWludCBp OwogCkBAIC0xODc5LDEzICsxOTk2LDE0IEBAIHN0YXRpYyBpbnQgZHBjbV9hcHBseV9zeW1tZXRy eShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKmZlX3N1YnN0cmVhbSwKIAkJCWJlX3N1YnN0cmVh bS0+cnVudGltZS0+aHcuaW5mbyB8PSBTTkRSVl9QQ01fSU5GT19KT0lOVF9EVVBMRVg7CiAKIAkJ LyogU3ltbWV0cnkgb25seSBhcHBsaWVzIGlmIHdlJ3ZlIGdvdCBhbiBhY3RpdmUgc3RyZWFtLiAq LwotCQlpZiAocnRkLT5jcHVfZGFpLT5hY3RpdmUpIHsKLQkJCWVyciA9IHNvY19wY21fYXBwbHlf c3ltbWV0cnkoZmVfc3Vic3RyZWFtLAotCQkJCQkJICAgICBydGQtPmNwdV9kYWkpOwotCQkJaWYg KGVyciA8IDApCi0JCQkJcmV0dXJuIGVycjsKKwkJZm9yX2VhY2hfcnRkX2NwdV9kYWlzKHJ0ZCwg aSwgY3B1X2RhaSkgeworCQkJaWYgKGNwdV9kYWktPmFjdGl2ZSkgeworCQkJCWVyciA9IHNvY19w Y21fYXBwbHlfc3ltbWV0cnkoZmVfc3Vic3RyZWFtLAorCQkJCQkJCSAgICAgY3B1X2RhaSk7CisJ CQkJaWYgKGVyciA8IDApCisJCQkJCXJldHVybiBlcnI7CisJCQl9CiAJCX0KLQogCQlmb3JfZWFj aF9ydGRfY29kZWNfZGFpcyhydGQsIGksIGNvZGVjX2RhaSkgewogCQkJaWYgKGNvZGVjX2RhaS0+ YWN0aXZlKSB7CiAJCQkJZXJyID0gc29jX3BjbV9hcHBseV9zeW1tZXRyeShmZV9zdWJzdHJlYW0s CkBAIC0yNjMwLDIxICsyNzQ4LDI0IEBAIHN0YXRpYyBpbnQgZHBjbV9mZV9ydW50aW1lX3VwZGF0 ZShzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqZmUsCiAJCQkJICBpbnQgbmV3LCBpbnQgc3Ry ZWFtKQogewogCXN0cnVjdCBzbmRfc29jX2RhaSAqY29kZWNfZGFpOworCXN0cnVjdCBzbmRfc29j X2RhaSAqY3B1X2RhaTsKIAlzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldF9saXN0ICpsaXN0Owog CWludCBjb3VudCwgcGF0aHM7CiAJaW50IGk7CiAKIAkvKiBza2lwIGlmIEZFIGRvZXNuJ3QgaGF2 ZSBwbGF5YmFjayBjYXBhYmlsaXR5ICovCi0JaWYgKCFzbmRfc29jX2RhaV9zdHJlYW1fdmFsaWQo ZmUtPmNwdV9kYWksIHN0cmVhbSkpCi0JCXJldHVybiAwOworCWZvcl9lYWNoX3J0ZF9jcHVfZGFp cyhmZSwgaSwgY3B1X2RhaSkKKwkJaWYgKCFzbmRfc29jX2RhaV9zdHJlYW1fdmFsaWQoY3B1X2Rh aSwgc3RyZWFtKSkKKwkJCXJldHVybiAwOwogCiAJZm9yX2VhY2hfcnRkX2NvZGVjX2RhaXMoZmUs IGksIGNvZGVjX2RhaSkKIAkJaWYgKCFzbmRfc29jX2RhaV9zdHJlYW1fdmFsaWQoY29kZWNfZGFp LCBzdHJlYW0pKQogCQkJcmV0dXJuIDA7CiAKIAkvKiBza2lwIGlmIEZFIGlzbid0IGN1cnJlbnRs eSBwbGF5aW5nICovCi0JaWYgKCFmZS0+Y3B1X2RhaS0+c3RyZWFtX2FjdGl2ZVtzdHJlYW1dKQot CQlyZXR1cm4gMDsKKwlmb3JfZWFjaF9ydGRfY3B1X2RhaXMoZmUsIGksIGNwdV9kYWkpCisJCWlm ICghY3B1X2RhaS0+c3RyZWFtX2FjdGl2ZVtzdHJlYW1dKQorCQkJcmV0dXJuIDA7CiAKIAlmb3Jf ZWFjaF9ydGRfY29kZWNfZGFpcyhmZSwgaSwgY29kZWNfZGFpKQogCQlpZiAoIWNvZGVjX2RhaS0+ c3RyZWFtX2FjdGl2ZVtzdHJlYW1dKQpAQCAtMjY4Myw2ICsyODA0LDEwIEBAIHN0YXRpYyBpbnQg c29jX2RwY21fZmVfcnVudGltZV91cGRhdGUoc3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKmZl LCBpbnQgbmV3KQogCWludCBzdHJlYW07CiAJaW50IHJldDsKIAorCWlmIChmZS0+bnVtX2NwdXMg PiAxKQorCQlkZXZfd2FybihmZS0+ZGV2LAorCQkJICIlcyBkb2Vzbid0IHN1cHBvcnQgTXVsdGkg Q1BVIHlldFxuIiwgX19mdW5jX18pOworCiAJaWYgKCFmZS0+ZGFpX2xpbmstPmR5bmFtaWMpCiAJ CXJldHVybiAwOwogCkBAIC0yNzk2LDcgKzI5MjEsNyBAQCBzdGF0aWMgaW50IGRwY21fZmVfZGFp X29wZW4oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpmZV9zdWJzdHJlYW0pCiBpbnQgc29jX25l d19wY20oc3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKnJ0ZCwgaW50IG51bSkKIHsKIAlzdHJ1 Y3Qgc25kX3NvY19kYWkgKmNvZGVjX2RhaTsKLQlzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWkg PSBydGQtPmNwdV9kYWk7CisJc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpOwogCXN0cnVjdCBz bmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50OwogCXN0cnVjdCBzbmRfcGNtICpwY207CiAJY2hh ciBuZXdfbmFtZVs2NF07CkBAIC0yODA3LDIzICsyOTMyLDM0IEBAIGludCBzb2NfbmV3X3BjbShz dHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkLCBpbnQgbnVtKQogCQlwbGF5YmFjayA9IHJ0 ZC0+ZGFpX2xpbmstPmRwY21fcGxheWJhY2s7CiAJCWNhcHR1cmUgPSBydGQtPmRhaV9saW5rLT5k cGNtX2NhcHR1cmU7CiAJfSBlbHNlIHsKKwkJaW50IHN0cmVhbV9wbGF5YmFjazsKKwkJaW50IHN0 cmVhbV9jYXB0dXJlOworCiAJCS8qIEFkYXB0IHN0cmVhbSBmb3IgY29kZWMyY29kZWMgbGlua3Mg Ki8KLQkJc3RydWN0IHNuZF9zb2NfcGNtX3N0cmVhbSAqY3B1X2NhcHR1cmUgPSBydGQtPmRhaV9s aW5rLT5wYXJhbXMgPwotCQkJJmNwdV9kYWktPmRyaXZlci0+cGxheWJhY2sgOiAmY3B1X2RhaS0+ ZHJpdmVyLT5jYXB0dXJlOwotCQlzdHJ1Y3Qgc25kX3NvY19wY21fc3RyZWFtICpjcHVfcGxheWJh Y2sgPSBydGQtPmRhaV9saW5rLT5wYXJhbXMgPwotCQkJJmNwdV9kYWktPmRyaXZlci0+Y2FwdHVy ZSA6ICZjcHVfZGFpLT5kcml2ZXItPnBsYXliYWNrOworCQlpZiAocnRkLT5kYWlfbGluay0+cGFy YW1zKSB7CisJCQlzdHJlYW1fcGxheWJhY2sgPSBTTkRSVl9QQ01fU1RSRUFNX0NBUFRVUkU7CisJ CQlzdHJlYW1fY2FwdHVyZSAgPSBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLOworCQl9IGVsc2Ug eworCQkJc3RyZWFtX3BsYXliYWNrID0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSzsKKwkJCXN0 cmVhbV9jYXB0dXJlICA9IFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRTsKKwkJfQogCi0JCWZvcl9l YWNoX3J0ZF9jb2RlY19kYWlzKHJ0ZCwgaSwgY29kZWNfZGFpKSB7Ci0JCQlpZiAoc25kX3NvY19k YWlfc3RyZWFtX3ZhbGlkKGNvZGVjX2RhaSwgU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSykgJiYK LQkJCSAgICBzbmRfc29jX2RhaV9zdHJlYW1fdmFsaWQoY3B1X2RhaSwgICBTTkRSVl9QQ01fU1RS RUFNX1BMQVlCQUNLKSkKLQkJCQlwbGF5YmFjayA9IDE7Ci0JCQlpZiAoc25kX3NvY19kYWlfc3Ry ZWFtX3ZhbGlkKGNvZGVjX2RhaSwgU05EUlZfUENNX1NUUkVBTV9DQVBUVVJFKSAmJgotCQkJICAg IHNuZF9zb2NfZGFpX3N0cmVhbV92YWxpZChjcHVfZGFpLCAgIFNORFJWX1BDTV9TVFJFQU1fQ0FQ VFVSRSkpCi0JCQkJY2FwdHVyZSA9IDE7CisJCXBsYXliYWNrID0gMTsKKwkJY2FwdHVyZSA9IDE7 CisKKwkJZm9yX2VhY2hfcnRkX2NwdV9kYWlzKHJ0ZCwgaSwgY3B1X2RhaSkgeworCQkJaWYgKCFz bmRfc29jX2RhaV9zdHJlYW1fdmFsaWQoY3B1X2RhaSwgICBzdHJlYW1fcGxheWJhY2spKQorCQkJ CXBsYXliYWNrID0gMDsKKwkJCWlmICghc25kX3NvY19kYWlfc3RyZWFtX3ZhbGlkKGNwdV9kYWks ICAgc3RyZWFtX2NhcHR1cmUpKQorCQkJCWNhcHR1cmUgPSAwOwogCQl9CiAKLQkJY2FwdHVyZSA9 IGNhcHR1cmUgJiYgY3B1X2NhcHR1cmUtPmNoYW5uZWxzX21pbjsKLQkJcGxheWJhY2sgPSBwbGF5 YmFjayAmJiBjcHVfcGxheWJhY2stPmNoYW5uZWxzX21pbjsKKwkJZm9yX2VhY2hfcnRkX2NvZGVj X2RhaXMocnRkLCBpLCBjb2RlY19kYWkpIHsKKwkJCWlmICghc25kX3NvY19kYWlfc3RyZWFtX3Zh bGlkKGNvZGVjX2RhaSwgU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSykpCisJCQkJcGxheWJhY2sg PSAwOworCQkJaWYgKCFzbmRfc29jX2RhaV9zdHJlYW1fdmFsaWQoY29kZWNfZGFpLCBTTkRSVl9Q Q01fU1RSRUFNX0NBUFRVUkUpKQorCQkJCWNhcHR1cmUgPSAwOworCQl9CiAJfQogCiAJaWYgKHJ0 ZC0+ZGFpX2xpbmstPnBsYXliYWNrX29ubHkpIHsKQEAgLTI5MzcsNyArMzA3Myw3IEBAIGludCBz b2NfbmV3X3BjbShzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkLCBpbnQgbnVtKQogb3V0 OgogCWRldl9pbmZvKHJ0ZC0+Y2FyZC0+ZGV2LCAiJXMgPC0+ICVzIG1hcHBpbmcgb2tcbiIsCiAJ CSAocnRkLT5udW1fY29kZWNzID4gMSkgPyAibXVsdGljb2RlYyIgOiBydGQtPmNvZGVjX2RhaS0+ bmFtZSwKLQkJIGNwdV9kYWktPm5hbWUpOworCQkgKHJ0ZC0+bnVtX2NwdXMgPiAxKSAgID8gIm11 bHRpY3B1IiAgIDogcnRkLT5jcHVfZGFpLT5uYW1lKTsKIAlyZXR1cm4gcmV0OwogfQogCg== --Multipart_Thu_Dec_26_17:16:47_2019-1 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel --Multipart_Thu_Dec_26_17:16:47_2019-1--