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.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 0368FC34056 for ; Wed, 19 Feb 2020 18:01:55 +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 B846E24656 for ; Wed, 19 Feb 2020 18:01:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="AQrVlVCW" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B846E24656 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]:57792 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4TfV-0002WK-WA for qemu-devel@archiver.kernel.org; Wed, 19 Feb 2020 13:01:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:54241) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j4TcC-0005qX-GD for qemu-devel@nongnu.org; Wed, 19 Feb 2020 12:58:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j4TcA-00014O-A1 for qemu-devel@nongnu.org; Wed, 19 Feb 2020 12:58:28 -0500 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:58894 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j4TcA-000143-5N for qemu-devel@nongnu.org; Wed, 19 Feb 2020 12:58:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582135105; 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; bh=deNTBYqUy33T+P3rGlVgVGPpYeM7lEAdm080kyCI4cc=; b=AQrVlVCWGkdbu+YqLCOPSdCJBZ3U7W2DkxbsZ28OwvCDKnN84+7rvzs2+68YenMjwgG3sM /9IEcKEd0+Wwr5OhmImXNogvuSZ4IsbOdcc3ULxJM0hs0gwqKcwac9mUBmtwTO2l0ivp9o gI4V16CckV50VrwBNFUz00iSoRUsiiA= 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-425-vPKJgjFPNwiNoH7uwWodHQ-1; Wed, 19 Feb 2020 12:58:20 -0500 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 9408C8017CC; Wed, 19 Feb 2020 17:58:19 +0000 (UTC) Received: from localhost (unknown [10.36.118.184]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4AEC75C651; Wed, 19 Feb 2020 17:58:16 +0000 (UTC) From: Stefan Hajnoczi To: qemu-devel@nongnu.org Subject: [PATCH v2] util/async: make bh_aio_poll() O(1) Date: Wed, 19 Feb 2020 17:53:48 +0000 Message-Id: <20200219175348.1161536-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-MC-Unique: vPKJgjFPNwiNoH7uwWodHQ-1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: base64 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.81 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 , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , Paolo Bonzini Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" VGhlIGN0eC0+Zmlyc3RfYmggbGlzdCBjb250YWlucyBhbGwgY3JlYXRlZCBCSHMsIGluY2x1ZGlu ZyB0aG9zZSB0aGF0CmFyZSBub3Qgc2NoZWR1bGVkLiAgVGhlIGxpc3QgaXMgaXRlcmF0ZWQgYnkg dGhlIGV2ZW50IGxvb3AgYW5kIHRoZXJlZm9yZQpoYXMgTyhuKSB0aW1lIGNvbXBsZXhpdHkgd2l0 aCByZXNwZWN0ZWQgdG8gdGhlIG51bWJlciBvZiBjcmVhdGVkIEJIcy4KClJld3JpdGUgQkhzIHNv IHRoYXQgb25seSBzY2hlZHVsZWQgb3IgZGVsZXRlZCBCSHMgYXJlIGVucXVldWVkLgpPbmx5IEJI cyB0aGF0IGFjdHVhbGx5IHJlcXVpcmUgYWN0aW9uIHdpbGwgYmUgaXRlcmF0ZWQuCgpPbmUgc2Vt YW50aWMgY2hhbmdlIGlzIHJlcXVpcmVkOiBxZW11X2JoX2RlbGV0ZSgpIGVucXVldWVzIHRoZSBC SCBhbmQKdGhlcmVmb3JlIGludm9rZXMgYWlvX25vdGlmeSgpLiAgVGhlCnRlc3RzL3Rlc3QtYWlv LmM6dGVzdF9zb3VyY2VfYmhfZGVsZXRlX2Zyb21fY2IoKSB0ZXN0IGNhc2UgYXNzdW1lZCB0aGF0 CmdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihOVUxMLCBmYWxzZSkgcmV0dXJucyBmYWxzZSBhZnRl cgpxZW11X2JoX2RlbGV0ZSgpIGJ1dCBpdCBub3cgcmV0dXJucyB0cnVlIGZvciBvbmUgaXRlcmF0 aW9uLiAgRml4IHVwIHRoZQp0ZXN0IGNhc2UuCgpUaGlzIHBhdGNoIG1ha2VzIGFpb19jb21wdXRl X3RpbWVvdXQoKSBhbmQgYWlvX2JoX3BvbGwoKSBkcm9wIGZyb20gYSBDUFUKcHJvZmlsZSByZXBv cnRlZCBieSBwZXJmLXRvcCgxKS4gIFByZXZpb3VzbHkgdGhleSBjb21iaW5lZCB0byA5JSBDUFUK dXRpbGl6YXRpb24gd2hlbiBBaW9Db250ZXh0IHBvbGxpbmcgaXMgY29tbWVudGVkIG91dCBhbmQg dGhlIGd1ZXN0IGhhcyAyCnZpcnRpby1ibGssbnVtLXF1ZXVlcz0xIGFuZCA5OSB2aXJ0aW8tYmxr LG51bS1xdWV1ZXM9MzIgZGV2aWNlcy4KClNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBIYWpub2N6aSA8 c3RlZmFuaGFAcmVkaGF0LmNvbT4KLS0tCnYyOgogKiBVc2UgUVNMSVNUIGZvciBCSHMgYW5kIFFT SU1QTEVRIGZvciBCSExpc3RTbGljZXMgW1Bhb2xvXQogICAoTm90ZSB0aGF0IEkgcmVwbGFjZWQg YmggPSBhdG9taWNfcmN1X3JlYWQoJmZpcnN0X2JoKSB3aXRoCiAgICBRU0xJU1RfRk9SRUFDSCgm YmhfbGlzdCkgc28gdGhlcmUgaXMgbm8gbWVtb3J5IG9yZGVyaW5nIGJ1dCBJIHRoaW5rCiAgICB0 aGlzIGlzIHNhZmUuKQogKiBDb21tZW50IGNsYXJpZmljYXRpb25zIFtQYW9sb10KLS0tCiBpbmNs dWRlL2Jsb2NrL2Fpby5oIHwgIDIwICsrKy0KIHRlc3RzL3Rlc3QtYWlvLmMgICAgfCAgIDMgKy0K IHV0aWwvYXN5bmMuYyAgICAgICAgfCAyMzYgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTU3IGluc2VydGlvbnMoKyksIDEwMiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2Jsb2NrL2Fpby5oIGIvaW5jbHVkZS9i bG9jay9haW8uaAppbmRleCA3YmE5YmQ3ODc0Li4xYTJjZTljYTI2IDEwMDY0NAotLS0gYS9pbmNs dWRlL2Jsb2NrL2Fpby5oCisrKyBiL2luY2x1ZGUvYmxvY2svYWlvLmgKQEAgLTUxLDYgKzUxLDE5 IEBAIHN0cnVjdCBUaHJlYWRQb29sOwogc3RydWN0IExpbnV4QWlvU3RhdGU7CiBzdHJ1Y3QgTHVy aW5nU3RhdGU7CiAKKy8qCisgKiBFYWNoIGFpb19iaF9wb2xsKCkgY2FsbCBjYXJ2ZXMgb2ZmIGEg c2xpY2Ugb2YgdGhlIEJIIGxpc3QsIHNvIHRoYXQgbmV3bHkKKyAqIHNjaGVkdWxlZCBCSHMgYXJl IG5vdCBwcm9jZXNzZWQgdW50aWwgdGhlIG5leHQgYWlvX2JoX3BvbGwoKSBjYWxsLiAgQWxsCisg KiBhY3RpdmUgYWlvX2JoX3BvbGwoKSBjYWxscyBjaGFpbiB0aGVpciBzbGljZXMgdG9nZXRoZXIg aW4gYSBsaXN0LCBzbyB0aGF0CisgKiBuZXN0ZWQgYWlvX2JoX3BvbGwoKSBjYWxscyBwcm9jZXNz IGFsbCBzY2hlZHVsZWQgYm90dG9tIGhhbHZlcy4KKyAqLwordHlwZWRlZiBRU0xJU1RfSEVBRCgs IFFFTVVCSCkgQkhMaXN0OwordHlwZWRlZiBzdHJ1Y3QgQkhMaXN0U2xpY2UgQkhMaXN0U2xpY2U7 CitzdHJ1Y3QgQkhMaXN0U2xpY2UgeworICAgIEJITGlzdCBiaF9saXN0OworICAgIFFTSU1QTEVR X0VOVFJZKEJITGlzdFNsaWNlKSBuZXh0OworfTsKKwogc3RydWN0IEFpb0NvbnRleHQgewogICAg IEdTb3VyY2Ugc291cmNlOwogCkBAIC05MSw4ICsxMDQsMTEgQEAgc3RydWN0IEFpb0NvbnRleHQg ewogICAgICAqLwogICAgIFFlbXVMb2NrQ250IGxpc3RfbG9jazsKIAotICAgIC8qIEFuY2hvciBv ZiB0aGUgbGlzdCBvZiBCb3R0b20gSGFsdmVzIGJlbG9uZ2luZyB0byB0aGUgY29udGV4dCAqLwot ICAgIHN0cnVjdCBRRU1VQkggKmZpcnN0X2JoOworICAgIC8qIEJvdHRvbSBIYWx2ZXMgcGVuZGlu ZyBhaW9fYmhfcG9sbCgpIHByb2Nlc3NpbmcgKi8KKyAgICBCSExpc3QgYmhfbGlzdDsKKworICAg IC8qIENoYWluZWQgQkggbGlzdCBzbGljZXMgZm9yIGVhY2ggbmVzdGVkIGFpb19iaF9wb2xsKCkg Y2FsbCAqLworICAgIFFTSU1QTEVRX0hFQUQoLCBCSExpc3RTbGljZSkgYmhfc2xpY2VfbGlzdDsK IAogICAgIC8qIFVzZWQgYnkgYWlvX25vdGlmeS4KICAgICAgKgpkaWZmIC0tZ2l0IGEvdGVzdHMv dGVzdC1haW8uYyBiL3Rlc3RzL3Rlc3QtYWlvLmMKaW5kZXggODZmYjczYjNkNS4uOGE0NjA3ODQ2 MyAxMDA2NDQKLS0tIGEvdGVzdHMvdGVzdC1haW8uYworKysgYi90ZXN0cy90ZXN0LWFpby5jCkBA IC02MTUsNyArNjE1LDggQEAgc3RhdGljIHZvaWQgdGVzdF9zb3VyY2VfYmhfZGVsZXRlX2Zyb21f Y2Iodm9pZCkKICAgICBnX2Fzc2VydF9jbXBpbnQoZGF0YTEubiwgPT0sIGRhdGExLm1heCk7CiAg ICAgZ19hc3NlcnQoZGF0YTEuYmggPT0gTlVMTCk7CiAKLSAgICBnX2Fzc2VydCghZ19tYWluX2Nv bnRleHRfaXRlcmF0aW9uKE5VTEwsIGZhbHNlKSk7CisgICAgYXNzZXJ0KGdfbWFpbl9jb250ZXh0 X2l0ZXJhdGlvbihOVUxMLCBmYWxzZSkpOworICAgIGFzc2VydCghZ19tYWluX2NvbnRleHRfaXRl cmF0aW9uKE5VTEwsIGZhbHNlKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3Rfc291cmNlX2JoX2Rl bGV0ZV9mcm9tX2NiX21hbnkodm9pZCkKZGlmZiAtLWdpdCBhL3V0aWwvYXN5bmMuYyBiL3V0aWwv YXN5bmMuYwppbmRleCBjMTkyYTI0YTYxLi4yYzg0OTljYzI5IDEwMDY0NAotLS0gYS91dGlsL2Fz eW5jLmMKKysrIGIvdXRpbC9hc3luYy5jCkBAIC0zNiwxNiArMzYsNzYgQEAKIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIGJv dHRvbSBoYWx2ZXMgKGNhbiBiZSBzZWVuIGFzIHRpbWVycyB3aGljaCBleHBpcmUgQVNBUCkgKi8K IAorLyogUUVNVUJIOjpmbGFncyB2YWx1ZXMgKi8KK2VudW0geworICAgIC8qIEFscmVhZHkgZW5x dWV1ZWQgYW5kIHdhaXRpbmcgZm9yIGFpb19iaF9wb2xsKCkgKi8KKyAgICBCSF9QRU5ESU5HICAg PSAoMSA8PCAwKSwKKworICAgIC8qIEludm9rZSB0aGUgY2FsbGJhY2sgKi8KKyAgICBCSF9TQ0hF RFVMRUQgPSAoMSA8PCAxKSwKKworICAgIC8qIERlbGV0ZSB3aXRob3V0IGludm9raW5nIGNhbGxi YWNrICovCisgICAgQkhfREVMRVRFRCAgID0gKDEgPDwgMiksCisKKyAgICAvKiBEZWxldGUgYWZ0 ZXIgaW52b2tpbmcgY2FsbGJhY2sgKi8KKyAgICBCSF9PTkVTSE9UICAgPSAoMSA8PCAzKSwKKwor ICAgIC8qIFNjaGVkdWxlIHBlcmlvZGljYWxseSB3aGVuIHRoZSBldmVudCBsb29wIGlzIGlkbGUg Ki8KKyAgICBCSF9JRExFICAgICAgPSAoMSA8PCA0KSwKK307CisKIHN0cnVjdCBRRU1VQkggewog ICAgIEFpb0NvbnRleHQgKmN0eDsKICAgICBRRU1VQkhGdW5jICpjYjsKICAgICB2b2lkICpvcGFx dWU7Ci0gICAgUUVNVUJIICpuZXh0OwotICAgIGJvb2wgc2NoZWR1bGVkOwotICAgIGJvb2wgaWRs ZTsKLSAgICBib29sIGRlbGV0ZWQ7CisgICAgUVNMSVNUX0VOVFJZKFFFTVVCSCkgbmV4dDsKKyAg ICB1bnNpZ25lZCBmbGFnczsKIH07CiAKKy8qIENhbGxlZCBjb25jdXJyZW50bHkgZnJvbSBhbnkg dGhyZWFkICovCitzdGF0aWMgdm9pZCBhaW9fYmhfZW5xdWV1ZShRRU1VQkggKmJoLCB1bnNpZ25l ZCBuZXdfZmxhZ3MpCit7CisgICAgQWlvQ29udGV4dCAqY3R4ID0gYmgtPmN0eDsKKyAgICB1bnNp Z25lZCBvbGRfZmxhZ3M7CisKKyAgICAvKgorICAgICAqIFRoZSBtZW1vcnkgYmFycmllciBpbXBs aWNpdCBpbiBhdG9taWNfZmV0Y2hfb3IgbWFrZXMgc3VyZSB0aGF0OgorICAgICAqIDEuIGlkbGUg JiBhbnkgd3JpdGVzIG5lZWRlZCBieSB0aGUgY2FsbGJhY2sgYXJlIGRvbmUgYmVmb3JlIHRoZQor ICAgICAqICAgIGxvY2F0aW9ucyBhcmUgcmVhZCBpbiB0aGUgYWlvX2JoX3BvbGwuCisgICAgICog Mi4gY3R4IGlzIGxvYWRlZCBiZWZvcmUgdGhlIGNhbGxiYWNrIGhhcyBhIGNoYW5jZSB0byBleGVj dXRlIGFuZCBiaAorICAgICAqICAgIGNvdWxkIGJlIGZyZWVkLgorICAgICAqLworICAgIG9sZF9m bGFncyA9IGF0b21pY19mZXRjaF9vcigmYmgtPmZsYWdzLCBCSF9QRU5ESU5HIHwgbmV3X2ZsYWdz KTsKKyAgICBpZiAoIShvbGRfZmxhZ3MgJiBCSF9QRU5ESU5HKSkgeworICAgICAgICBRU0xJU1Rf SU5TRVJUX0hFQURfQVRPTUlDKCZjdHgtPmJoX2xpc3QsIGJoLCBuZXh0KTsKKyAgICB9CisKKyAg ICBhaW9fbm90aWZ5KGN0eCk7Cit9CisKKy8qIE9ubHkgY2FsbGVkIGZyb20gYWlvX2JoX3BvbGwo KSBhbmQgYWlvX2N0eF9maW5hbGl6ZSgpICovCitzdGF0aWMgUUVNVUJIICphaW9fYmhfZGVxdWV1 ZShCSExpc3QgKmhlYWQsIHVuc2lnbmVkICpmbGFncykKK3sKKyAgICBRRU1VQkggKmJoID0gUVNM SVNUX0ZJUlNUKGhlYWQpOworCisgICAgaWYgKCFiaCkgeworICAgICAgICByZXR1cm4gTlVMTDsK KyAgICB9CisKKyAgICBRU0xJU1RfUkVNT1ZFX0hFQUQoaGVhZCwgbmV4dCk7CisKKyAgICAvKgor ICAgICAqIFRoZSBhdG9taWNfYW5kIGlzIHBhaXJlZCB3aXRoIGFpb19iaF9lbnF1ZXVlKCkuICBU aGUgaW1wbGljaXQgbWVtb3J5CisgICAgICogYmFycmllciBlbnN1cmVzIHRoYXQgdGhlIGNhbGxi YWNrIHNlZXMgYWxsIHdyaXRlcyBkb25lIGJ5IHRoZSBzY2hlZHVsaW5nCisgICAgICogdGhyZWFk LiAgSXQgYWxzbyBlbnN1cmVzIHRoYXQgdGhlIHNjaGVkdWxpbmcgdGhyZWFkIHNlZXMgdGhlIGNs ZWFyZWQKKyAgICAgKiBmbGFnIGJlZm9yZSBiaC0+Y2IgaGFzIHJ1biwgYW5kIHRodXMgd2lsbCBj YWxsIGFpb19ub3RpZnkgYWdhaW4gaWYKKyAgICAgKiBuZWNlc3NhcnkuCisgICAgICovCisgICAg KmZsYWdzID0gYXRvbWljX2ZldGNoX2FuZCgmYmgtPmZsYWdzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfihCSF9QRU5ESU5HIHwgQkhfU0NIRURVTEVEIHwgQkhfSURMRSkpOworICAg IHJldHVybiBiaDsKK30KKwogdm9pZCBhaW9fYmhfc2NoZWR1bGVfb25lc2hvdChBaW9Db250ZXh0 ICpjdHgsIFFFTVVCSEZ1bmMgKmNiLCB2b2lkICpvcGFxdWUpCiB7CiAgICAgUUVNVUJIICpiaDsK QEAgLTU1LDE1ICsxMTUsNyBAQCB2b2lkIGFpb19iaF9zY2hlZHVsZV9vbmVzaG90KEFpb0NvbnRl eHQgKmN0eCwgUUVNVUJIRnVuYyAqY2IsIHZvaWQgKm9wYXF1ZSkKICAgICAgICAgLmNiID0gY2Is CiAgICAgICAgIC5vcGFxdWUgPSBvcGFxdWUsCiAgICAgfTsKLSAgICBxZW11X2xvY2tjbnRfbG9j aygmY3R4LT5saXN0X2xvY2spOwotICAgIGJoLT5uZXh0ID0gY3R4LT5maXJzdF9iaDsKLSAgICBi aC0+c2NoZWR1bGVkID0gMTsKLSAgICBiaC0+ZGVsZXRlZCA9IDE7Ci0gICAgLyogTWFrZSBzdXJl IHRoYXQgdGhlIG1lbWJlcnMgYXJlIHJlYWR5IGJlZm9yZSBwdXR0aW5nIGJoIGludG8gbGlzdCAq LwotICAgIHNtcF93bWIoKTsKLSAgICBjdHgtPmZpcnN0X2JoID0gYmg7Ci0gICAgcWVtdV9sb2Nr Y250X3VubG9jaygmY3R4LT5saXN0X2xvY2spOwotICAgIGFpb19ub3RpZnkoY3R4KTsKKyAgICBh aW9fYmhfZW5xdWV1ZShiaCwgQkhfU0NIRURVTEVEIHwgQkhfT05FU0hPVCk7CiB9CiAKIFFFTVVC SCAqYWlvX2JoX25ldyhBaW9Db250ZXh0ICpjdHgsIFFFTVVCSEZ1bmMgKmNiLCB2b2lkICpvcGFx dWUpCkBAIC03NSwxMiArMTI3LDYgQEAgUUVNVUJIICphaW9fYmhfbmV3KEFpb0NvbnRleHQgKmN0 eCwgUUVNVUJIRnVuYyAqY2IsIHZvaWQgKm9wYXF1ZSkKICAgICAgICAgLmNiID0gY2IsCiAgICAg ICAgIC5vcGFxdWUgPSBvcGFxdWUsCiAgICAgfTsKLSAgICBxZW11X2xvY2tjbnRfbG9jaygmY3R4 LT5saXN0X2xvY2spOwotICAgIGJoLT5uZXh0ID0gY3R4LT5maXJzdF9iaDsKLSAgICAvKiBNYWtl IHN1cmUgdGhhdCB0aGUgbWVtYmVycyBhcmUgcmVhZHkgYmVmb3JlIHB1dHRpbmcgYmggaW50byBs aXN0ICovCi0gICAgc21wX3dtYigpOwotICAgIGN0eC0+Zmlyc3RfYmggPSBiaDsKLSAgICBxZW11 X2xvY2tjbnRfdW5sb2NrKCZjdHgtPmxpc3RfbG9jayk7CiAgICAgcmV0dXJuIGJoOwogfQogCkBA IC04OSw5MSArMTM1LDU2IEBAIHZvaWQgYWlvX2JoX2NhbGwoUUVNVUJIICpiaCkKICAgICBiaC0+ Y2IoYmgtPm9wYXF1ZSk7CiB9CiAKLS8qIE11bHRpcGxlIG9jY3VycmVuY2VzIG9mIGFpb19iaF9w b2xsIGNhbm5vdCBiZSBjYWxsZWQgY29uY3VycmVudGx5LgotICogVGhlIGNvdW50IGluIGN0eC0+ bGlzdF9sb2NrIGlzIGluY3JlbWVudGVkIGJlZm9yZSB0aGUgY2FsbCwgYW5kIGlzCi0gKiBub3Qg YWZmZWN0ZWQgYnkgdGhlIGNhbGwuCi0gKi8KKy8qIE11bHRpcGxlIG9jY3VycmVuY2VzIG9mIGFp b19iaF9wb2xsIGNhbm5vdCBiZSBjYWxsZWQgY29uY3VycmVudGx5LiAqLwogaW50IGFpb19iaF9w b2xsKEFpb0NvbnRleHQgKmN0eCkKIHsKLSAgICBRRU1VQkggKmJoLCAqKmJocCwgKm5leHQ7Ci0g ICAgaW50IHJldDsKLSAgICBib29sIGRlbGV0ZWQgPSBmYWxzZTsKLQotICAgIHJldCA9IDA7Ci0g ICAgZm9yIChiaCA9IGF0b21pY19yY3VfcmVhZCgmY3R4LT5maXJzdF9iaCk7IGJoOyBiaCA9IG5l eHQpIHsKLSAgICAgICAgbmV4dCA9IGF0b21pY19yY3VfcmVhZCgmYmgtPm5leHQpOwotICAgICAg ICAvKiBUaGUgYXRvbWljX3hjaGcgaXMgcGFpcmVkIHdpdGggdGhlIG9uZSBpbiBxZW11X2JoX3Nj aGVkdWxlLiAgVGhlCi0gICAgICAgICAqIGltcGxpY2l0IG1lbW9yeSBiYXJyaWVyIGVuc3VyZXMg dGhhdCB0aGUgY2FsbGJhY2sgc2VlcyBhbGwgd3JpdGVzCi0gICAgICAgICAqIGRvbmUgYnkgdGhl IHNjaGVkdWxpbmcgdGhyZWFkLiAgSXQgYWxzbyBlbnN1cmVzIHRoYXQgdGhlIHNjaGVkdWxpbmcK LSAgICAgICAgICogdGhyZWFkIHNlZXMgdGhlIHplcm8gYmVmb3JlIGJoLT5jYiBoYXMgcnVuLCBh bmQgdGh1cyB3aWxsIGNhbGwKLSAgICAgICAgICogYWlvX25vdGlmeSBhZ2FpbiBpZiBuZWNlc3Nh cnkuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoYXRvbWljX3hjaGcoJmJoLT5zY2hlZHVsZWQs IDApKSB7CisgICAgQkhMaXN0U2xpY2Ugc2xpY2U7CisgICAgQkhMaXN0U2xpY2UgKnM7CisgICAg aW50IHJldCA9IDA7CisKKyAgICBRU0xJU1RfTU9WRV9BVE9NSUMoJnNsaWNlLmJoX2xpc3QsICZj dHgtPmJoX2xpc3QpOworICAgIFFTSU1QTEVRX0lOU0VSVF9UQUlMKCZjdHgtPmJoX3NsaWNlX2xp c3QsICZzbGljZSwgbmV4dCk7CisKKyAgICB3aGlsZSAoKHMgPSBRU0lNUExFUV9GSVJTVCgmY3R4 LT5iaF9zbGljZV9saXN0KSkpIHsKKyAgICAgICAgUUVNVUJIICpiaDsKKyAgICAgICAgdW5zaWdu ZWQgZmxhZ3M7CisKKyAgICAgICAgYmggPSBhaW9fYmhfZGVxdWV1ZSgmcy0+YmhfbGlzdCwgJmZs YWdzKTsKKyAgICAgICAgaWYgKCFiaCkgeworICAgICAgICAgICAgUVNJTVBMRVFfUkVNT1ZFX0hF QUQoJmN0eC0+Ymhfc2xpY2VfbGlzdCwgbmV4dCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg ICAgICAgfQorCisgICAgICAgIGlmICgoZmxhZ3MgJiAoQkhfU0NIRURVTEVEIHwgQkhfREVMRVRF RCkpID09IEJIX1NDSEVEVUxFRCkgewogICAgICAgICAgICAgLyogSWRsZSBCSHMgZG9uJ3QgY291 bnQgYXMgcHJvZ3Jlc3MgKi8KLSAgICAgICAgICAgIGlmICghYmgtPmlkbGUpIHsKKyAgICAgICAg ICAgIGlmICghKGZsYWdzICYgQkhfSURMRSkpIHsKICAgICAgICAgICAgICAgICByZXQgPSAxOwog ICAgICAgICAgICAgfQotICAgICAgICAgICAgYmgtPmlkbGUgPSAwOwogICAgICAgICAgICAgYWlv X2JoX2NhbGwoYmgpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChiaC0+ZGVsZXRlZCkgewotICAg ICAgICAgICAgZGVsZXRlZCA9IHRydWU7CisgICAgICAgIGlmIChmbGFncyAmIChCSF9ERUxFVEVE IHwgQkhfT05FU0hPVCkpIHsKKyAgICAgICAgICAgIGdfZnJlZShiaCk7CiAgICAgICAgIH0KICAg ICB9CiAKLSAgICAvKiByZW1vdmUgZGVsZXRlZCBiaHMgKi8KLSAgICBpZiAoIWRlbGV0ZWQpIHsK LSAgICAgICAgcmV0dXJuIHJldDsKLSAgICB9Ci0KLSAgICBpZiAocWVtdV9sb2NrY250X2RlY19p Zl9sb2NrKCZjdHgtPmxpc3RfbG9jaykpIHsKLSAgICAgICAgYmhwID0gJmN0eC0+Zmlyc3RfYmg7 Ci0gICAgICAgIHdoaWxlICgqYmhwKSB7Ci0gICAgICAgICAgICBiaCA9ICpiaHA7Ci0gICAgICAg ICAgICBpZiAoYmgtPmRlbGV0ZWQgJiYgIWJoLT5zY2hlZHVsZWQpIHsKLSAgICAgICAgICAgICAg ICAqYmhwID0gYmgtPm5leHQ7Ci0gICAgICAgICAgICAgICAgZ19mcmVlKGJoKTsKLSAgICAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYmhwID0gJmJoLT5uZXh0OwotICAgICAgICAg ICAgfQotICAgICAgICB9Ci0gICAgICAgIHFlbXVfbG9ja2NudF9pbmNfYW5kX3VubG9jaygmY3R4 LT5saXN0X2xvY2spOwotICAgIH0KICAgICByZXR1cm4gcmV0OwogfQogCiB2b2lkIHFlbXVfYmhf c2NoZWR1bGVfaWRsZShRRU1VQkggKmJoKQogewotICAgIGJoLT5pZGxlID0gMTsKLSAgICAvKiBN YWtlIHN1cmUgdGhhdCBpZGxlICYgYW55IHdyaXRlcyBuZWVkZWQgYnkgdGhlIGNhbGxiYWNrIGFy ZSBkb25lCi0gICAgICogYmVmb3JlIHRoZSBsb2NhdGlvbnMgYXJlIHJlYWQgaW4gdGhlIGFpb19i aF9wb2xsLgotICAgICAqLwotICAgIGF0b21pY19tYl9zZXQoJmJoLT5zY2hlZHVsZWQsIDEpOwor ICAgIGFpb19iaF9lbnF1ZXVlKGJoLCBCSF9TQ0hFRFVMRUQgfCBCSF9JRExFKTsKIH0KIAogdm9p ZCBxZW11X2JoX3NjaGVkdWxlKFFFTVVCSCAqYmgpCiB7Ci0gICAgQWlvQ29udGV4dCAqY3R4Owot Ci0gICAgY3R4ID0gYmgtPmN0eDsKLSAgICBiaC0+aWRsZSA9IDA7Ci0gICAgLyogVGhlIG1lbW9y eSBiYXJyaWVyIGltcGxpY2l0IGluIGF0b21pY194Y2hnIG1ha2VzIHN1cmUgdGhhdDoKLSAgICAg KiAxLiBpZGxlICYgYW55IHdyaXRlcyBuZWVkZWQgYnkgdGhlIGNhbGxiYWNrIGFyZSBkb25lIGJl Zm9yZSB0aGUKLSAgICAgKiAgICBsb2NhdGlvbnMgYXJlIHJlYWQgaW4gdGhlIGFpb19iaF9wb2xs LgotICAgICAqIDIuIGN0eCBpcyBsb2FkZWQgYmVmb3JlIHNjaGVkdWxlZCBpcyBzZXQgYW5kIHRo ZSBjYWxsYmFjayBoYXMgYSBjaGFuY2UKLSAgICAgKiAgICB0byBleGVjdXRlLgotICAgICAqLwot ICAgIGlmIChhdG9taWNfeGNoZygmYmgtPnNjaGVkdWxlZCwgMSkgPT0gMCkgewotICAgICAgICBh aW9fbm90aWZ5KGN0eCk7Ci0gICAgfQorICAgIGFpb19iaF9lbnF1ZXVlKGJoLCBCSF9TQ0hFRFVM RUQpOwogfQogCi0KIC8qIFRoaXMgZnVuYyBpcyBhc3luYy4KICAqLwogdm9pZCBxZW11X2JoX2Nh bmNlbChRRU1VQkggKmJoKQogewotICAgIGF0b21pY19tYl9zZXQoJmJoLT5zY2hlZHVsZWQsIDAp OworICAgIGF0b21pY19hbmQoJmJoLT5mbGFncywgfkJIX1NDSEVEVUxFRCk7CiB9CiAKIC8qIFRo aXMgZnVuYyBpcyBhc3luYy5UaGUgYm90dG9tIGhhbGYgd2lsbCBkbyB0aGUgZGVsZXRlIGFjdGlv biBhdCB0aGUgZmluaWFsCkBAIC0xODEsMjEgKzE5MiwxNiBAQCB2b2lkIHFlbXVfYmhfY2FuY2Vs KFFFTVVCSCAqYmgpCiAgKi8KIHZvaWQgcWVtdV9iaF9kZWxldGUoUUVNVUJIICpiaCkKIHsKLSAg ICBiaC0+c2NoZWR1bGVkID0gMDsKLSAgICBiaC0+ZGVsZXRlZCA9IDE7CisgICAgYWlvX2JoX2Vu cXVldWUoYmgsIEJIX0RFTEVURUQpOwogfQogCi1pbnQ2NF90Ci1haW9fY29tcHV0ZV90aW1lb3V0 KEFpb0NvbnRleHQgKmN0eCkKK3N0YXRpYyBpbnQ2NF90IGFpb19jb21wdXRlX2JoX3RpbWVvdXQo QkhMaXN0ICpoZWFkLCBpbnQgdGltZW91dCkKIHsKLSAgICBpbnQ2NF90IGRlYWRsaW5lOwotICAg IGludCB0aW1lb3V0ID0gLTE7CiAgICAgUUVNVUJIICpiaDsKIAotICAgIGZvciAoYmggPSBhdG9t aWNfcmN1X3JlYWQoJmN0eC0+Zmlyc3RfYmgpOyBiaDsKLSAgICAgICAgIGJoID0gYXRvbWljX3Jj dV9yZWFkKCZiaC0+bmV4dCkpIHsKLSAgICAgICAgaWYgKGJoLT5zY2hlZHVsZWQpIHsKLSAgICAg ICAgICAgIGlmIChiaC0+aWRsZSkgeworICAgIFFTTElTVF9GT1JFQUNIKGJoLCBoZWFkLCBuZXh0 KSB7CisgICAgICAgIGlmICgoYmgtPmZsYWdzICYgKEJIX1NDSEVEVUxFRCB8IEJIX0RFTEVURUQp KSA9PSBCSF9TQ0hFRFVMRUQpIHsKKyAgICAgICAgICAgIGlmIChiaC0+ZmxhZ3MgJiBCSF9JRExF KSB7CiAgICAgICAgICAgICAgICAgLyogaWRsZSBib3R0b20gaGFsdmVzIHdpbGwgYmUgcG9sbGVk IGF0IGxlYXN0CiAgICAgICAgICAgICAgICAgICogZXZlcnkgMTBtcyAqLwogICAgICAgICAgICAg ICAgIHRpbWVvdXQgPSAxMDAwMDAwMDsKQEAgLTIwNyw2ICsyMTMsMjggQEAgYWlvX2NvbXB1dGVf dGltZW91dChBaW9Db250ZXh0ICpjdHgpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICByZXR1cm4g dGltZW91dDsKK30KKworaW50NjRfdAorYWlvX2NvbXB1dGVfdGltZW91dChBaW9Db250ZXh0ICpj dHgpCit7CisgICAgQkhMaXN0U2xpY2UgKnM7CisgICAgaW50NjRfdCBkZWFkbGluZTsKKyAgICBp bnQgdGltZW91dCA9IC0xOworCisgICAgdGltZW91dCA9IGFpb19jb21wdXRlX2JoX3RpbWVvdXQo JmN0eC0+YmhfbGlzdCwgdGltZW91dCk7CisgICAgaWYgKHRpbWVvdXQgPT0gMCkgeworICAgICAg ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBRU0lNUExFUV9GT1JFQUNIKHMsICZjdHgtPmJoX3Ns aWNlX2xpc3QsIG5leHQpIHsKKyAgICAgICAgdGltZW91dCA9IGFpb19jb21wdXRlX2JoX3RpbWVv dXQoJnMtPmJoX2xpc3QsIHRpbWVvdXQpOworICAgICAgICBpZiAodGltZW91dCA9PSAwKSB7Cisg ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGRlYWRsaW5lID0g dGltZXJsaXN0Z3JvdXBfZGVhZGxpbmVfbnMoJmN0eC0+dGxnKTsKICAgICBpZiAoZGVhZGxpbmUg PT0gMCkgewogICAgICAgICByZXR1cm4gMDsKQEAgLTIzNywxNSArMjY1LDI0IEBAIGFpb19jdHhf Y2hlY2soR1NvdXJjZSAqc291cmNlKQogewogICAgIEFpb0NvbnRleHQgKmN0eCA9IChBaW9Db250 ZXh0ICopIHNvdXJjZTsKICAgICBRRU1VQkggKmJoOworICAgIEJITGlzdFNsaWNlICpzOwogCiAg ICAgYXRvbWljX2FuZCgmY3R4LT5ub3RpZnlfbWUsIH4xKTsKICAgICBhaW9fbm90aWZ5X2FjY2Vw dChjdHgpOwogCi0gICAgZm9yIChiaCA9IGN0eC0+Zmlyc3RfYmg7IGJoOyBiaCA9IGJoLT5uZXh0 KSB7Ci0gICAgICAgIGlmIChiaC0+c2NoZWR1bGVkKSB7CisgICAgUVNMSVNUX0ZPUkVBQ0goYmgs ICZjdHgtPmJoX2xpc3QsIG5leHQpIHsKKyAgICAgICAgaWYgKChiaC0+ZmxhZ3MgJiAoQkhfU0NI RURVTEVEIHwgQkhfREVMRVRFRCkpID09IEJIX1NDSEVEVUxFRCkgewogICAgICAgICAgICAgcmV0 dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBRU0lNUExFUV9GT1JFQUNIKHMsICZj dHgtPmJoX3NsaWNlX2xpc3QsIG5leHQpIHsKKyAgICAgICAgUVNMSVNUX0ZPUkVBQ0goYmgsICZz LT5iaF9saXN0LCBuZXh0KSB7CisgICAgICAgICAgICBpZiAoKGJoLT5mbGFncyAmIChCSF9TQ0hF RFVMRUQgfCBCSF9ERUxFVEVEKSkgPT0gQkhfU0NIRURVTEVEKSB7CisgICAgICAgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJu IGFpb19wZW5kaW5nKGN0eCkgfHwgKHRpbWVybGlzdGdyb3VwX2RlYWRsaW5lX25zKCZjdHgtPnRs ZykgPT0gMCk7CiB9CiAKQEAgLTI2NSw2ICszMDIsOCBAQCBzdGF0aWMgdm9pZAogYWlvX2N0eF9m aW5hbGl6ZShHU291cmNlICAgICAqc291cmNlKQogewogICAgIEFpb0NvbnRleHQgKmN0eCA9IChB aW9Db250ZXh0ICopIHNvdXJjZTsKKyAgICBRRU1VQkggKmJoOworICAgIHVuc2lnbmVkIGZsYWdz OwogCiAgICAgdGhyZWFkX3Bvb2xfZnJlZShjdHgtPnRocmVhZF9wb29sKTsKIApAQCAtMjg3LDE4 ICszMjYsMTUgQEAgYWlvX2N0eF9maW5hbGl6ZShHU291cmNlICAgICAqc291cmNlKQogICAgIGFz c2VydChRU0xJU1RfRU1QVFkoJmN0eC0+c2NoZWR1bGVkX2Nvcm91dGluZXMpKTsKICAgICBxZW11 X2JoX2RlbGV0ZShjdHgtPmNvX3NjaGVkdWxlX2JoKTsKIAotICAgIHFlbXVfbG9ja2NudF9sb2Nr KCZjdHgtPmxpc3RfbG9jayk7Ci0gICAgYXNzZXJ0KCFxZW11X2xvY2tjbnRfY291bnQoJmN0eC0+ bGlzdF9sb2NrKSk7Ci0gICAgd2hpbGUgKGN0eC0+Zmlyc3RfYmgpIHsKLSAgICAgICAgUUVNVUJI ICpuZXh0ID0gY3R4LT5maXJzdF9iaC0+bmV4dDsKKyAgICAvKiBUaGVyZSBtdXN0IGJlIG5vIGFp b19iaF9wb2xsKCkgY2FsbHMgZ29pbmcgb24gKi8KKyAgICBhc3NlcnQoUVNJTVBMRVFfRU1QVFko JmN0eC0+Ymhfc2xpY2VfbGlzdCkpOwogCisgICAgd2hpbGUgKChiaCA9IGFpb19iaF9kZXF1ZXVl KCZjdHgtPmJoX2xpc3QsICZmbGFncykpKSB7CiAgICAgICAgIC8qIHFlbXVfYmhfZGVsZXRlKCkg bXVzdCBoYXZlIGJlZW4gY2FsbGVkIG9uIEJIcyBpbiB0aGlzIEFpb0NvbnRleHQgKi8KLSAgICAg ICAgYXNzZXJ0KGN0eC0+Zmlyc3RfYmgtPmRlbGV0ZWQpOworICAgICAgICBhc3NlcnQoZmxhZ3Mg JiBCSF9ERUxFVEVEKTsKIAotICAgICAgICBnX2ZyZWUoY3R4LT5maXJzdF9iaCk7Ci0gICAgICAg IGN0eC0+Zmlyc3RfYmggPSBuZXh0OworICAgICAgICBnX2ZyZWUoYmgpOwogICAgIH0KLSAgICBx ZW11X2xvY2tjbnRfdW5sb2NrKCZjdHgtPmxpc3RfbG9jayk7CiAKICAgICBhaW9fc2V0X2V2ZW50 X25vdGlmaWVyKGN0eCwgJmN0eC0+bm90aWZpZXIsIGZhbHNlLCBOVUxMLCBOVUxMKTsKICAgICBl dmVudF9ub3RpZmllcl9jbGVhbnVwKCZjdHgtPm5vdGlmaWVyKTsKQEAgLTQ0NSw2ICs0ODEsOCBA QCBBaW9Db250ZXh0ICphaW9fY29udGV4dF9uZXcoRXJyb3IgKiplcnJwKQogICAgIEFpb0NvbnRl eHQgKmN0eDsKIAogICAgIGN0eCA9IChBaW9Db250ZXh0ICopIGdfc291cmNlX25ldygmYWlvX3Nv dXJjZV9mdW5jcywgc2l6ZW9mKEFpb0NvbnRleHQpKTsKKyAgICBRU0xJU1RfSU5JVCgmY3R4LT5i aF9saXN0KTsKKyAgICBRU0lNUExFUV9JTklUKCZjdHgtPmJoX3NsaWNlX2xpc3QpOwogICAgIGFp b19jb250ZXh0X3NldHVwKGN0eCk7CiAKICAgICByZXQgPSBldmVudF9ub3RpZmllcl9pbml0KCZj dHgtPm5vdGlmaWVyLCBmYWxzZSk7Ci0tIAoyLjI0LjEKCg==