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=-11.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MIME_BASE64_TEXT,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 648A3C433C1 for ; Wed, 31 Mar 2021 09:53:25 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 B84A161962 for ; Wed, 31 Mar 2021 09:53:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B84A161962 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:57112 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lRXXP-0001Iw-Mc for qemu-devel@archiver.kernel.org; Wed, 31 Mar 2021 05:53:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51592) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lRXVl-0008QN-Ii for qemu-devel@nongnu.org; Wed, 31 Mar 2021 05:51:41 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:60325) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lRXVd-0001E6-5v for qemu-devel@nongnu.org; Wed, 31 Mar 2021 05:51:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1617184292; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zwtDVEdWFIqQ1efWKGsC2baQhZmklAripYMZ3Jpc9Zg=; b=CVy0JOjve7zCRE37dJuNGm0vovia49hedC9Goj3DwtNKUmWohPtdS/EBPdV8yzLHDRoKKg EMntoin47POxBuNVogpsSAvDEO/iUj0GAH2ZPbruHJfGy/VM0n1W4RWBZZDpS//AZPqE9d WDpUb7VrXTBh027JVzpt3Iyg0vN+guc= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-530-nguSOEALPz6B2k9Dl9fyog-1; Wed, 31 Mar 2021 05:51:30 -0400 X-MC-Unique: nguSOEALPz6B2k9Dl9fyog-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id ECE248189C6; Wed, 31 Mar 2021 09:51:28 +0000 (UTC) Received: from localhost (ovpn-115-85.ams2.redhat.com [10.36.115.85]) by smtp.corp.redhat.com (Postfix) with ESMTP id 620555F705; Wed, 31 Mar 2021 09:51:28 +0000 (UTC) From: Stefan Hajnoczi To: Peter Maydell , qemu-devel@nongnu.org Subject: [PULL for-6.0 4/6] coroutine-lock: Reimplement CoRwlock to fix downgrade bug Date: Wed, 31 Mar 2021 10:50:57 +0100 Message-Id: <20210331095059.303996-5-stefanha@redhat.com> In-Reply-To: <20210331095059.303996-1-stefanha@redhat.com> References: <20210331095059.303996-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=stefanha@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="US-ASCII" Received-SPF: pass client-ip=63.128.21.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MIME_BASE64_TEXT=1.741, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , Vladimir Sementsov-Ogievskiy , qemu-block@nongnu.org, Juan Quintela , David Edmondson , Stefan Weil , "Michael S. Tsirkin" , "Dr. David Alan Gilbert" , Max Reitz , John Snow , Stefan Hajnoczi , Paolo Bonzini , Eduardo Habkost Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" RnJvbTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KCkFuIGludmFyaWFudCBv ZiB0aGUgY3VycmVudCByd2xvY2sgaXMgdGhhdCBpZiBtdWx0aXBsZSBjb3JvdXRpbmVzIGhvbGQg YQpyZWFkZXIgbG9jaywgYWxsIG11c3QgYmUgcnVubmFibGUuIFRoZSB1bmxvY2sgaW1wbGVtZW50 YXRpb24gcmVsaWVzIG9uCnRoaXMsIGNob29zaW5nIHRvIHdha2UgYSBzaW5nbGUgY29yb3V0aW5l IHdoZW4gdGhlIGZpbmFsIHJlYWQgbG9jawpob2xkZXIgZXhpdHMgdGhlIGNyaXRpY2FsIHNlY3Rp b24sIGFzc3VtaW5nIHRoYXQgaXQgd2lsbCB3YWtlIGEKY29yb3V0aW5lIGF0dGVtcHRpbmcgdG8g YWNxdWlyZSBhIHdyaXRlIGxvY2suCgpUaGUgZG93bmdyYWRlIGltcGxlbWVudGF0aW9uIHZpb2xh dGVzIHRoaXMgYXNzdW1wdGlvbiBieSBjcmVhdGluZyBhCnJlYWQgbG9jayBvd25pbmcgY29yb3V0 aW5lIHRoYXQgaXMgZXhjbHVzaXZlbHkgcnVubmFibGUgLSBhbnkgb3RoZXIKY29yb3V0aW5lcyB0 aGF0IGFyZSB3YWl0aW5nIHRvIGFjcXVpcmUgYSByZWFkIGxvY2sgYXJlICpub3QqIG1hZGUKcnVu bmFibGUgd2hlbiB0aGUgd3JpdGUgbG9jayBob2xkZXIgY29udmVydHMgaXRzIG93bmVyc2hpcCB0 byByZWFkCm9ubHkuCgpNb3JlIGluIGdlbmVyYWwsIHRoZSBvbGQgaW1wbGVtZW50YXRpb24gaGFk IGxvdHMgb2Ygb3RoZXIgZmFpcm5lc3MgYnVncy4KVGhlIHJvb3QgY2F1c2Ugb2YgdGhlIGJ1Z3Mg d2FzIHRoYXQgQ29RdWV1ZSB3b3VsZCB3YWtlIHVwIHJlYWRlcnMgZXZlbgppZiB0aGVyZSB3ZXJl IHBlbmRpbmcgd3JpdGVycywgYW5kIHdvdWxkIHdha2UgdXAgd3JpdGVycyBldmVuIGlmIHRoZXJl CndlcmUgcmVhZGVycy4gIEluIHRoYXQgY2FzZSwgdGhlIGNvcm91dGluZSB3b3VsZCBnbyBiYWNr IHRvIHNsZWVwICphdAp0aGUgZW5kKiBvZiB0aGUgQ29RdWV1ZSwgbG9zaW5nIGl0cyBwbGFjZSBh dCB0aGUgaGVhZCBvZiB0aGUgbGluZS4KClRvIGZpeCB0aGlzLCBrZWVwIHRoZSBxdWV1ZSBvZiB3 YWl0ZXJzIGV4cGxpY2l0bHkgaW4gdGhlIENvUndsb2NrCmluc3RlYWQgb2YgdXNpbmcgQ29RdWV1 ZSwgYW5kIHN0b3JlIGZvciBlYWNoIHdoZXRoZXIgaXQgaXMgYQpwb3RlbnRpYWwgcmVhZGVyIG9y IGEgd3JpdGVyLiAgVGhpcyB3YXksIGRvd25ncmFkZSBjYW4gbG9vayBhdCB0aGUKZmlyc3QgcXVl dWVkIGNvcm91dGluZXMgYW5kIHdha2UgaXQgb25seSBpZiBpdCBpcyBhIHJlYWRlciwgY2F1c2lu ZwphbGwgb3RoZXIgcmVhZGVycyBpbiBsaW5lIHRvIGJlIHJlbGVhc2VkIGluIHR1cm4uCgpSZXBv cnRlZC1ieTogRGF2aWQgRWRtb25kc29uIDxkYXZpZC5lZG1vbmRzb25Ab3JhY2xlLmNvbT4KUmV2 aWV3ZWQtYnk6IERhdmlkIEVkbW9uZHNvbiA8ZGF2aWQuZWRtb25kc29uQG9yYWNsZS5jb20+ClNp Z25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+Ck1lc3NhZ2Ut aWQ6IDIwMjEwMzI1MTEyOTQxLjM2NTIzOC01LXBib256aW5pQHJlZGhhdC5jb20KU2lnbmVkLW9m Zi1ieTogU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgotLS0KIGluY2x1ZGUv cWVtdS9jb3JvdXRpbmUuaCAgIHwgIDE3ICsrLS0KIHV0aWwvcWVtdS1jb3JvdXRpbmUtbG9jay5j IHwgMTY0ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hh bmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvcWVtdS9jb3JvdXRpbmUuaCBiL2luY2x1ZGUvcWVtdS9jb3JvdXRpbmUuaAppbmRleCA4 NGVhYjZlM2JmLi5jZTViOWM2ODUxIDEwMDY0NAotLS0gYS9pbmNsdWRlL3FlbXUvY29yb3V0aW5l LmgKKysrIGIvaW5jbHVkZS9xZW11L2Nvcm91dGluZS5oCkBAIC0yMzcsMTEgKzIzNywxNSBAQCBi b29sIHFlbXVfY29fZW50ZXJfbmV4dF9pbXBsKENvUXVldWUgKnF1ZXVlLCBRZW11TG9ja2FibGUg KmxvY2spOwogYm9vbCBxZW11X2NvX3F1ZXVlX2VtcHR5KENvUXVldWUgKnF1ZXVlKTsKIAogCit0 eXBlZGVmIHN0cnVjdCBDb1J3VGlja2V0IENvUndUaWNrZXQ7CiB0eXBlZGVmIHN0cnVjdCBDb1J3 bG9jayB7Ci0gICAgaW50IHBlbmRpbmdfd3JpdGVyOwotICAgIGludCByZWFkZXI7CiAgICAgQ29N dXRleCBtdXRleDsKLSAgICBDb1F1ZXVlIHF1ZXVlOworCisgICAgLyogTnVtYmVyIG9mIHJlYWRl cnMsIG9yIC0xIGlmIG93bmVkIGZvciB3cml0aW5nLiAgKi8KKyAgICBpbnQgb3duZXJzOworCisg ICAgLyogV2FpdGluZyBjb3JvdXRpbmVzLiAgKi8KKyAgICBRU0lNUExFUV9IRUFEKCwgQ29Sd1Rp Y2tldCkgdGlja2V0czsKIH0gQ29Sd2xvY2s7CiAKIC8qKgpAQCAtMjYwLDEwICsyNjQsOSBAQCB2 b2lkIHFlbXVfY29fcndsb2NrX3JkbG9jayhDb1J3bG9jayAqbG9jayk7CiAvKioKICAqIFdyaXRl IExvY2tzIHRoZSBDb1J3bG9jayBmcm9tIGEgcmVhZGVyLiAgVGhpcyBpcyBhIGJpdCBtb3JlIGVm ZmljaWVudCB0aGFuCiAgKiBAcWVtdV9jb19yd2xvY2tfdW5sb2NrIGZvbGxvd2VkIGJ5IGEgc2Vw YXJhdGUgQHFlbXVfY29fcndsb2NrX3dybG9jay4KLSAqIEhvd2V2ZXIsIGlmIHRoZSBsb2NrIGNh bm5vdCBiZSB1cGdyYWRlZCBpbW1lZGlhdGVseSwgY29udHJvbCBpcyB0cmFuc2ZlcnJlZAotICog dG8gdGhlIGNhbGxlciBvZiB0aGUgY3VycmVudCBjb3JvdXRpbmUuICBBbHNvLCBAcWVtdV9jb19y d2xvY2tfdXBncmFkZQotICogb25seSBvdmVycmlkZXMgQ29Sd2xvY2sgZmFpcm5lc3MgaWYgdGhl cmUgYXJlIG5vIGNvbmN1cnJlbnQgcmVhZGVycywgc28KLSAqIGFub3RoZXIgd3JpdGVyIG1pZ2h0 IHJ1biB3aGlsZSBAcWVtdV9jb19yd2xvY2tfdXBncmFkZSBibG9ja3MuCisgKiBOb3RlIHRoYXQg aWYgdGhlIGxvY2sgY2Fubm90IGJlIHVwZ3JhZGVkIGltbWVkaWF0ZWx5LCBjb250cm9sIGlzIHRy YW5zZmVycmVkCisgKiB0byB0aGUgY2FsbGVyIG9mIHRoZSBjdXJyZW50IGNvcm91dGluZTsgYW5v dGhlciB3cml0ZXIgbWlnaHQgcnVuIHdoaWxlCisgKiBAcWVtdV9jb19yd2xvY2tfdXBncmFkZSBi bG9ja3MuCiAgKi8KIHZvaWQgcWVtdV9jb19yd2xvY2tfdXBncmFkZShDb1J3bG9jayAqbG9jayk7 CiAKZGlmZiAtLWdpdCBhL3V0aWwvcWVtdS1jb3JvdXRpbmUtbG9jay5jIGIvdXRpbC9xZW11LWNv cm91dGluZS1sb2NrLmMKaW5kZXggZWI3M2NmMTFkYy4uMjY2OTQwMzgzOSAxMDA2NDQKLS0tIGEv dXRpbC9xZW11LWNvcm91dGluZS1sb2NrLmMKKysrIGIvdXRpbC9xZW11LWNvcm91dGluZS1sb2Nr LmMKQEAgLTMyNywxMSArMzI3LDUxIEBAIHZvaWQgY29yb3V0aW5lX2ZuIHFlbXVfY29fbXV0ZXhf dW5sb2NrKENvTXV0ZXggKm11dGV4KQogICAgIHRyYWNlX3FlbXVfY29fbXV0ZXhfdW5sb2NrX3Jl dHVybihtdXRleCwgc2VsZik7CiB9CiAKK3N0cnVjdCBDb1J3VGlja2V0IHsKKyAgICBib29sIHJl YWQ7CisgICAgQ29yb3V0aW5lICpjbzsKKyAgICBRU0lNUExFUV9FTlRSWShDb1J3VGlja2V0KSBu ZXh0OworfTsKKwogdm9pZCBxZW11X2NvX3J3bG9ja19pbml0KENvUndsb2NrICpsb2NrKQogewot ICAgIG1lbXNldChsb2NrLCAwLCBzaXplb2YoKmxvY2spKTsKLSAgICBxZW11X2NvX3F1ZXVlX2lu aXQoJmxvY2stPnF1ZXVlKTsKICAgICBxZW11X2NvX211dGV4X2luaXQoJmxvY2stPm11dGV4KTsK KyAgICBsb2NrLT5vd25lcnMgPSAwOworICAgIFFTSU1QTEVRX0lOSVQoJmxvY2stPnRpY2tldHMp OworfQorCisvKiBSZWxlYXNlcyB0aGUgaW50ZXJuYWwgQ29NdXRleC4gICovCitzdGF0aWMgdm9p ZCBxZW11X2NvX3J3bG9ja19tYXliZV93YWtlX29uZShDb1J3bG9jayAqbG9jaykKK3sKKyAgICBD b1J3VGlja2V0ICp0a3QgPSBRU0lNUExFUV9GSVJTVCgmbG9jay0+dGlja2V0cyk7CisgICAgQ29y b3V0aW5lICpjbyA9IE5VTEw7CisKKyAgICAvKgorICAgICAqIFNldHRpbmcgbG9jay0+b3duZXJz IGhlcmUgcHJldmVudHMgcmRsb2NrIGFuZCB3cmxvY2sgZnJvbQorICAgICAqIHNuZWFraW5nIGlu IGJldHdlZW4gdW5sb2NrIGFuZCB3YWtlLgorICAgICAqLworCisgICAgaWYgKHRrdCkgeworICAg ICAgICBpZiAodGt0LT5yZWFkKSB7CisgICAgICAgICAgICBpZiAobG9jay0+b3duZXJzID49IDAp IHsKKyAgICAgICAgICAgICAgICBsb2NrLT5vd25lcnMrKzsKKyAgICAgICAgICAgICAgICBjbyA9 IHRrdC0+Y287CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp ZiAobG9jay0+b3duZXJzID09IDApIHsKKyAgICAgICAgICAgICAgICBsb2NrLT5vd25lcnMgPSAt MTsKKyAgICAgICAgICAgICAgICBjbyA9IHRrdC0+Y287CisgICAgICAgICAgICB9CisgICAgICAg IH0KKyAgICB9CisKKyAgICBpZiAoY28pIHsKKyAgICAgICAgUVNJTVBMRVFfUkVNT1ZFX0hFQUQo JmxvY2stPnRpY2tldHMsIG5leHQpOworICAgICAgICBxZW11X2NvX211dGV4X3VubG9jaygmbG9j ay0+bXV0ZXgpOworICAgICAgICBhaW9fY29fd2FrZShjbyk7CisgICAgfSBlbHNlIHsKKyAgICAg ICAgcWVtdV9jb19tdXRleF91bmxvY2soJmxvY2stPm11dGV4KTsKKyAgICB9CiB9CiAKIHZvaWQg cWVtdV9jb19yd2xvY2tfcmRsb2NrKENvUndsb2NrICpsb2NrKQpAQCAtMzQwLDg0ICszODAsODgg QEAgdm9pZCBxZW11X2NvX3J3bG9ja19yZGxvY2soQ29Sd2xvY2sgKmxvY2spCiAKICAgICBxZW11 X2NvX211dGV4X2xvY2soJmxvY2stPm11dGV4KTsKICAgICAvKiBGb3IgZmFpcm5lc3MsIHdhaXQg aWYgYSB3cml0ZXIgaXMgaW4gbGluZS4gICovCi0gICAgd2hpbGUgKGxvY2stPnBlbmRpbmdfd3Jp dGVyKSB7Ci0gICAgICAgIHFlbXVfY29fcXVldWVfd2FpdCgmbG9jay0+cXVldWUsICZsb2NrLT5t dXRleCk7Ci0gICAgfQotICAgIGxvY2stPnJlYWRlcisrOwotICAgIHFlbXVfY29fbXV0ZXhfdW5s b2NrKCZsb2NrLT5tdXRleCk7Ci0KLSAgICAvKiBUaGUgcmVzdCBvZiB0aGUgcmVhZC1zaWRlIGNy aXRpY2FsIHNlY3Rpb24gaXMgcnVuIHdpdGhvdXQgdGhlIG11dGV4LiAgKi8KLSAgICBzZWxmLT5s b2Nrc19oZWxkKys7Ci19Ci0KLXZvaWQgcWVtdV9jb19yd2xvY2tfdW5sb2NrKENvUndsb2NrICps b2NrKQotewotICAgIENvcm91dGluZSAqc2VsZiA9IHFlbXVfY29yb3V0aW5lX3NlbGYoKTsKLQot ICAgIGFzc2VydChxZW11X2luX2Nvcm91dGluZSgpKTsKLSAgICBpZiAoIWxvY2stPnJlYWRlcikg ewotICAgICAgICAvKiBUaGUgY3JpdGljYWwgc2VjdGlvbiBzdGFydGVkIGluIHFlbXVfY29fcnds b2NrX3dybG9jay4gICovCi0gICAgICAgIHFlbXVfY29fcXVldWVfcmVzdGFydF9hbGwoJmxvY2st PnF1ZXVlKTsKKyAgICBpZiAobG9jay0+b3duZXJzID09IDAgfHwgKGxvY2stPm93bmVycyA+IDAg JiYgUVNJTVBMRVFfRU1QVFkoJmxvY2stPnRpY2tldHMpKSkgeworICAgICAgICBsb2NrLT5vd25l cnMrKzsKKyAgICAgICAgcWVtdV9jb19tdXRleF91bmxvY2soJmxvY2stPm11dGV4KTsKICAgICB9 IGVsc2UgewotICAgICAgICBzZWxmLT5sb2Nrc19oZWxkLS07CisgICAgICAgIENvUndUaWNrZXQg bXlfdGlja2V0ID0geyB0cnVlLCBzZWxmIH07CiAKKyAgICAgICAgUVNJTVBMRVFfSU5TRVJUX1RB SUwoJmxvY2stPnRpY2tldHMsICZteV90aWNrZXQsIG5leHQpOworICAgICAgICBxZW11X2NvX211 dGV4X3VubG9jaygmbG9jay0+bXV0ZXgpOworICAgICAgICBxZW11X2Nvcm91dGluZV95aWVsZCgp OworICAgICAgICBhc3NlcnQobG9jay0+b3duZXJzID49IDEpOworCisgICAgICAgIC8qIFBvc3Np Ymx5IHdha2UgYW5vdGhlciByZWFkZXIsIHdoaWNoIHdpbGwgd2FrZSB0aGUgbmV4dCBpbiBsaW5l LiAgKi8KICAgICAgICAgcWVtdV9jb19tdXRleF9sb2NrKCZsb2NrLT5tdXRleCk7Ci0gICAgICAg IGxvY2stPnJlYWRlci0tOwotICAgICAgICBhc3NlcnQobG9jay0+cmVhZGVyID49IDApOwotICAg ICAgICAvKiBXYWtldXAgb25seSBvbmUgd2FpdGluZyB3cml0ZXIgKi8KLSAgICAgICAgaWYgKCFs b2NrLT5yZWFkZXIpIHsKLSAgICAgICAgICAgIHFlbXVfY29fcXVldWVfbmV4dCgmbG9jay0+cXVl dWUpOwotICAgICAgICB9CisgICAgICAgIHFlbXVfY29fcndsb2NrX21heWJlX3dha2Vfb25lKGxv Y2spOwogICAgIH0KLSAgICBxZW11X2NvX211dGV4X3VubG9jaygmbG9jay0+bXV0ZXgpOworCisg ICAgc2VsZi0+bG9ja3NfaGVsZCsrOworfQorCit2b2lkIHFlbXVfY29fcndsb2NrX3VubG9jayhD b1J3bG9jayAqbG9jaykKK3sKKyAgICBDb3JvdXRpbmUgKnNlbGYgPSBxZW11X2Nvcm91dGluZV9z ZWxmKCk7CisKKyAgICBhc3NlcnQocWVtdV9pbl9jb3JvdXRpbmUoKSk7CisgICAgc2VsZi0+bG9j a3NfaGVsZC0tOworCisgICAgcWVtdV9jb19tdXRleF9sb2NrKCZsb2NrLT5tdXRleCk7CisgICAg aWYgKGxvY2stPm93bmVycyA+IDApIHsKKyAgICAgICAgbG9jay0+b3duZXJzLS07CisgICAgfSBl bHNlIHsKKyAgICAgICAgYXNzZXJ0KGxvY2stPm93bmVycyA9PSAtMSk7CisgICAgICAgIGxvY2st Pm93bmVycyA9IDA7CisgICAgfQorCisgICAgcWVtdV9jb19yd2xvY2tfbWF5YmVfd2FrZV9vbmUo bG9jayk7CiB9CiAKIHZvaWQgcWVtdV9jb19yd2xvY2tfZG93bmdyYWRlKENvUndsb2NrICpsb2Nr KQogewotICAgIENvcm91dGluZSAqc2VsZiA9IHFlbXVfY29yb3V0aW5lX3NlbGYoKTsKKyAgICBx ZW11X2NvX211dGV4X2xvY2soJmxvY2stPm11dGV4KTsKKyAgICBhc3NlcnQobG9jay0+b3duZXJz ID09IC0xKTsKKyAgICBsb2NrLT5vd25lcnMgPSAxOwogCi0gICAgLyogbG9jay0+bXV0ZXggY3Jp dGljYWwgc2VjdGlvbiBzdGFydGVkIGluIHFlbXVfY29fcndsb2NrX3dybG9jayBvcgotICAgICAq IHFlbXVfY29fcndsb2NrX3VwZ3JhZGUuCi0gICAgICovCi0gICAgYXNzZXJ0KGxvY2stPnJlYWRl ciA9PSAwKTsKLSAgICBsb2NrLT5yZWFkZXIrKzsKLSAgICBxZW11X2NvX211dGV4X3VubG9jaygm bG9jay0+bXV0ZXgpOwotCi0gICAgLyogVGhlIHJlc3Qgb2YgdGhlIHJlYWQtc2lkZSBjcml0aWNh bCBzZWN0aW9uIGlzIHJ1biB3aXRob3V0IHRoZSBtdXRleC4gICovCi0gICAgc2VsZi0+bG9ja3Nf aGVsZCsrOworICAgIC8qIFBvc3NpYmx5IHdha2UgYW5vdGhlciByZWFkZXIsIHdoaWNoIHdpbGwg d2FrZSB0aGUgbmV4dCBpbiBsaW5lLiAgKi8KKyAgICBxZW11X2NvX3J3bG9ja19tYXliZV93YWtl X29uZShsb2NrKTsKIH0KIAogdm9pZCBxZW11X2NvX3J3bG9ja193cmxvY2soQ29Sd2xvY2sgKmxv Y2spCiB7CisgICAgQ29yb3V0aW5lICpzZWxmID0gcWVtdV9jb3JvdXRpbmVfc2VsZigpOworCiAg ICAgcWVtdV9jb19tdXRleF9sb2NrKCZsb2NrLT5tdXRleCk7Ci0gICAgbG9jay0+cGVuZGluZ193 cml0ZXIrKzsKLSAgICB3aGlsZSAobG9jay0+cmVhZGVyKSB7Ci0gICAgICAgIHFlbXVfY29fcXVl dWVfd2FpdCgmbG9jay0+cXVldWUsICZsb2NrLT5tdXRleCk7CisgICAgaWYgKGxvY2stPm93bmVy cyA9PSAwKSB7CisgICAgICAgIGxvY2stPm93bmVycyA9IC0xOworICAgICAgICBxZW11X2NvX211 dGV4X3VubG9jaygmbG9jay0+bXV0ZXgpOworICAgIH0gZWxzZSB7CisgICAgICAgIENvUndUaWNr ZXQgbXlfdGlja2V0ID0geyBmYWxzZSwgcWVtdV9jb3JvdXRpbmVfc2VsZigpIH07CisKKyAgICAg ICAgUVNJTVBMRVFfSU5TRVJUX1RBSUwoJmxvY2stPnRpY2tldHMsICZteV90aWNrZXQsIG5leHQp OworICAgICAgICBxZW11X2NvX211dGV4X3VubG9jaygmbG9jay0+bXV0ZXgpOworICAgICAgICBx ZW11X2Nvcm91dGluZV95aWVsZCgpOworICAgICAgICBhc3NlcnQobG9jay0+b3duZXJzID09IC0x KTsKICAgICB9Ci0gICAgbG9jay0+cGVuZGluZ193cml0ZXItLTsKIAotICAgIC8qIFRoZSByZXN0 IG9mIHRoZSB3cml0ZS1zaWRlIGNyaXRpY2FsIHNlY3Rpb24gaXMgcnVuIHdpdGgKLSAgICAgKiB0 aGUgbXV0ZXggdGFrZW4sIHNvIHRoYXQgbG9jay0+cmVhZGVyIHJlbWFpbnMgemVyby4KLSAgICAg KiBUaGVyZSBpcyBubyBuZWVkIHRvIHVwZGF0ZSBzZWxmLT5sb2Nrc19oZWxkLgotICAgICAqLwor ICAgIHNlbGYtPmxvY2tzX2hlbGQrKzsKIH0KIAogdm9pZCBxZW11X2NvX3J3bG9ja191cGdyYWRl KENvUndsb2NrICpsb2NrKQogewotICAgIENvcm91dGluZSAqc2VsZiA9IHFlbXVfY29yb3V0aW5l X3NlbGYoKTsKLQogICAgIHFlbXVfY29fbXV0ZXhfbG9jaygmbG9jay0+bXV0ZXgpOwotICAgIGFz c2VydChsb2NrLT5yZWFkZXIgPiAwKTsKLSAgICBsb2NrLT5yZWFkZXItLTsKLSAgICBsb2NrLT5w ZW5kaW5nX3dyaXRlcisrOwotICAgIHdoaWxlIChsb2NrLT5yZWFkZXIpIHsKLSAgICAgICAgcWVt dV9jb19xdWV1ZV93YWl0KCZsb2NrLT5xdWV1ZSwgJmxvY2stPm11dGV4KTsKKyAgICBhc3NlcnQo bG9jay0+b3duZXJzID4gMCk7CisgICAgLyogRm9yIGZhaXJuZXNzLCB3YWl0IGlmIGEgd3JpdGVy IGlzIGluIGxpbmUuICAqLworICAgIGlmIChsb2NrLT5vd25lcnMgPT0gMSAmJiBRU0lNUExFUV9F TVBUWSgmbG9jay0+dGlja2V0cykpIHsKKyAgICAgICAgbG9jay0+b3duZXJzID0gLTE7CisgICAg ICAgIHFlbXVfY29fbXV0ZXhfdW5sb2NrKCZsb2NrLT5tdXRleCk7CisgICAgfSBlbHNlIHsKKyAg ICAgICAgQ29Sd1RpY2tldCBteV90aWNrZXQgPSB7IGZhbHNlLCBxZW11X2Nvcm91dGluZV9zZWxm KCkgfTsKKworICAgICAgICBsb2NrLT5vd25lcnMtLTsKKyAgICAgICAgUVNJTVBMRVFfSU5TRVJU X1RBSUwoJmxvY2stPnRpY2tldHMsICZteV90aWNrZXQsIG5leHQpOworICAgICAgICBxZW11X2Nv X3J3bG9ja19tYXliZV93YWtlX29uZShsb2NrKTsKKyAgICAgICAgcWVtdV9jb3JvdXRpbmVfeWll bGQoKTsKKyAgICAgICAgYXNzZXJ0KGxvY2stPm93bmVycyA9PSAtMSk7CiAgICAgfQotICAgIGxv Y2stPnBlbmRpbmdfd3JpdGVyLS07Ci0KLSAgICAvKiBUaGUgcmVzdCBvZiB0aGUgd3JpdGUtc2lk ZSBjcml0aWNhbCBzZWN0aW9uIGlzIHJ1biB3aXRoCi0gICAgICogdGhlIG11dGV4IHRha2VuLCBz aW1pbGFyIHRvIHFlbXVfY29fcndsb2NrX3dybG9jay4gIERvCi0gICAgICogbm90IGFjY291bnQg Zm9yIHRoZSBsb2NrIHR3aWNlIGluIHNlbGYtPmxvY2tzX2hlbGQuCi0gICAgICovCi0gICAgc2Vs Zi0+bG9ja3NfaGVsZC0tOwogfQotLSAKMi4zMC4yCgo=