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 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 01F55C3B1A1 for ; Fri, 14 Feb 2020 17:23:02 +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 C658C20637 for ; Fri, 14 Feb 2020 17:23:01 +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="IzPhanVW" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C658C20637 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]:42120 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j2eg9-0000sS-0j for qemu-devel@archiver.kernel.org; Fri, 14 Feb 2020 12:23:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49225) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j2ebH-0001HK-Me for qemu-devel@nongnu.org; Fri, 14 Feb 2020 12:18:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j2ebG-0007sf-44 for qemu-devel@nongnu.org; Fri, 14 Feb 2020 12:17:59 -0500 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:47155 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j2ebF-0007rG-Sy for qemu-devel@nongnu.org; Fri, 14 Feb 2020 12:17:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1581700677; 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=OnSEfRGmRliVSiKT2mcNbQ5S8FcvsiuOgfaoBZf3qzc=; b=IzPhanVW9+SL0OWDqJuEyYkL4JL6tBfXStu4noUD2otYip0rCkpTCakVvPZpuVj0kuKlhx VV9e2+OpexgVh94k0JLTn5DikbDa74rg6zCBLDWeC0KucVZlLy5ZLVvAJNTq2r8G6YbZHb 69hbYqFqUJ6yXf9Ymy7lBFEER1f/0KA= 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-394-s3250BkROFKRDPf6AzzoPQ-1; Fri, 14 Feb 2020 12:17:55 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 6CB2E800D55; Fri, 14 Feb 2020 17:17:54 +0000 (UTC) Received: from localhost (ovpn-116-135.ams2.redhat.com [10.36.116.135]) by smtp.corp.redhat.com (Postfix) with ESMTP id D57D05DA81; Fri, 14 Feb 2020 17:17:48 +0000 (UTC) From: Stefan Hajnoczi To: qemu-devel@nongnu.org Subject: [PATCH 5/5] aio-posix: make AioHandler dispatch O(1) with epoll Date: Fri, 14 Feb 2020 17:17:12 +0000 Message-Id: <20200214171712.541358-6-stefanha@redhat.com> In-Reply-To: <20200214171712.541358-1-stefanha@redhat.com> References: <20200214171712.541358-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-MC-Unique: s3250BkROFKRDPf6AzzoPQ-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] X-Received-From: 205.139.110.120 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: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Paolo Bonzini Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" RmlsZSBkZXNjcmlwdG9yIG1vbml0b3JpbmcgaXMgTygxKSB3aXRoIGVwb2xsKDcpLCBidXQKYWlv X2Rpc3BhdGNoX2hhbmRsZXJzKCkgc3RpbGwgc2NhbnMgYWxsIEFpb0hhbmRsZXJzIGluc3RlYWQg b2YKZGlzcGF0Y2hpbmcganVzdCB0aG9zZSB0aGF0IGFyZSByZWFkeS4gIFRoaXMgbWFrZXMgYWlv X3BvbGwoKSBPKG4pIHdpdGgKcmVzcGVjdCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHJlZ2lzdGVy ZWQgaGFuZGxlcnMuCgpBZGQgYSBsb2NhbCByZWFkeV9saXN0IHRvIGFpb19wb2xsKCkgc28gdGhh dCBlYWNoIG5lc3RlZCBhaW9fcG9sbCgpCmJ1aWxkcyBhIGxpc3Qgb2YgaGFuZGxlcnMgcmVhZHkg dG8gYmUgZGlzcGF0Y2hlZC4gIFNpbmNlIGZpbGUgZGVzY3JpcHRvcgpwb2xsaW5nIGlzIGxldmVs LXRyaWdnZXJlZCwgbmVzdGVkIGFpb19wb2xsKCkgY2FsbHMgYWxzbyBzZWUgZmRzIHRoYXQKd2Vy ZSByZWFkeSBpbiB0aGUgcGFyZW50IGJ1dCBub3QgeWV0IGRpc3BhdGNoZWQuICBUaGlzIGd1YXJh bnRlZXMgdGhhdApuZXN0ZWQgYWlvX3BvbGwoKSBpbnZvY2F0aW9ucyB3aWxsIGRpc3BhdGNoIGFs bCBmZHMsIGV2ZW4gdGhvc2UgdGhhdApiZWNhbWUgcmVhZHkgYmVmb3JlIHRoZSBuZXN0ZWQgaW52 b2NhdGlvbi4KClNpbmNlIG9ubHkgaGFuZGxlcnMgcmVhZHkgdG8gYmUgZGlzcGF0Y2hlZCBhcmUg cGxhY2VkIG9udG8gdGhlCnJlYWR5X2xpc3QsIHRoZSBuZXcgYWlvX2Rpc3BhdGNoX3JlYWR5X2hh bmRsZXJzKCkgZnVuY3Rpb24gcHJvdmlkZXMgTygxKQpkaXNwYXRjaC4KCk5vdGUgdGhhdCBBaW9D b250ZXh0IHBvbGxpbmcgaXMgc3RpbGwgTyhuKSBhbmQgY3VycmVudGx5IGNhbm5vdCBiZSBmdWxs eQpkaXNhYmxlZC4gIFRoaXMgc3RpbGwgbmVlZHMgdG8gYmUgZml4ZWQgYmVmb3JlIGFpb19wb2xs KCkgaXMgZnVsbHkgTygxKS4KClNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBIYWpub2N6aSA8c3RlZmFu aGFAcmVkaGF0LmNvbT4KLS0tCiB1dGlsL2Fpby1wb3NpeC5jIHwgMTA2ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzYgaW5z ZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdXRpbC9haW8tcG9zaXgu YyBiL3V0aWwvYWlvLXBvc2l4LmMKaW5kZXggM2E5OGEyYWNiOS4uZGMzM2NhMDhhNiAxMDA2NDQK LS0tIGEvdXRpbC9haW8tcG9zaXguYworKysgYi91dGlsL2Fpby1wb3NpeC5jCkBAIC0zNCw2ICsz NCw3IEBAIHN0cnVjdCBBaW9IYW5kbGVyCiAgICAgdm9pZCAqb3BhcXVlOwogICAgIGJvb2wgaXNf ZXh0ZXJuYWw7CiAgICAgUUxJU1RfRU5UUlkoQWlvSGFuZGxlcikgbm9kZTsKKyAgICBRTElTVF9F TlRSWShBaW9IYW5kbGVyKSBub2RlX3JlYWR5OyAvKiBvbmx5IHVzZWQgZHVyaW5nIGFpb19wb2xs KCkgKi8KICAgICBRTElTVF9FTlRSWShBaW9IYW5kbGVyKSBub2RlX2RlbGV0ZWQ7CiB9OwogCkBA IC0xMDQsNyArMTA1LDE4IEBAIHN0YXRpYyB2b2lkIGFpb19lcG9sbF91cGRhdGUoQWlvQ29udGV4 dCAqY3R4LCBBaW9IYW5kbGVyICpub2RlLCBib29sIGlzX25ldykKICAgICB9CiB9CiAKLXN0YXRp YyBpbnQgYWlvX2Vwb2xsKEFpb0NvbnRleHQgKmN0eCwgaW50NjRfdCB0aW1lb3V0KQorLyogQWRk IGEgaGFuZGxlciB0byBhIHJlYWR5IGxpc3QgKi8KK3N0YXRpYyB2b2lkIGFkZF9yZWFkeV9oYW5k bGVyKEFpb0hhbmRsZXJMaXN0ICpyZWFkeV9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQWlvSGFuZGxlciAqbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCByZXZlbnRzKQoreworICAgIFFMSVNUX1NBRkVfUkVNT1ZFKG5vZGUsIG5vZGVfcmVhZHkpOyAv KiByZW1vdmUgZnJvbSBuZXN0ZWQgcGFyZW50J3MgbGlzdCAqLworICAgIG5vZGUtPnBmZC5yZXZl bnRzID0gcmV2ZW50czsKKyAgICBRTElTVF9JTlNFUlRfSEVBRChyZWFkeV9saXN0LCBub2RlLCBu b2RlX3JlYWR5KTsKK30KKworc3RhdGljIGludCBhaW9fZXBvbGwoQWlvQ29udGV4dCAqY3R4LCBB aW9IYW5kbGVyTGlzdCAqcmVhZHlfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgIGludDY0X3Qg dGltZW91dCkKIHsKICAgICBHUG9sbEZEIHBmZCA9IHsKICAgICAgICAgLmZkID0gY3R4LT5lcG9s bGZkLApAQCAtMTI5LDExICsxNDEsMTMgQEAgc3RhdGljIGludCBhaW9fZXBvbGwoQWlvQ29udGV4 dCAqY3R4LCBpbnQ2NF90IHRpbWVvdXQpCiAgICAgICAgIH0KICAgICAgICAgZm9yIChpID0gMDsg aSA8IHJldDsgaSsrKSB7CiAgICAgICAgICAgICBpbnQgZXYgPSBldmVudHNbaV0uZXZlbnRzOwor ICAgICAgICAgICAgaW50IHJldmVudHMgPSAoZXYgJiBFUE9MTElOID8gR19JT19JTiA6IDApIHwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ICYgRVBPTExPVVQgPyBHX0lPX09VVCA6IDAp IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ICYgRVBPTExIVVAgPyBHX0lPX0hVUCA6 IDApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ICYgRVBPTExFUlIgPyBHX0lPX0VS UiA6IDApOworCiAgICAgICAgICAgICBub2RlID0gZXZlbnRzW2ldLmRhdGEucHRyOwotICAgICAg ICAgICAgbm9kZS0+cGZkLnJldmVudHMgPSAoZXYgJiBFUE9MTElOID8gR19JT19JTiA6IDApIHwK LSAgICAgICAgICAgICAgICAoZXYgJiBFUE9MTE9VVCA/IEdfSU9fT1VUIDogMCkgfAotICAgICAg ICAgICAgICAgIChldiAmIEVQT0xMSFVQID8gR19JT19IVVAgOiAwKSB8Ci0gICAgICAgICAgICAg ICAgKGV2ICYgRVBPTExFUlIgPyBHX0lPX0VSUiA6IDApOworICAgICAgICAgICAgYWRkX3JlYWR5 X2hhbmRsZXIocmVhZHlfbGlzdCwgbm9kZSwgcmV2ZW50cyk7CiAgICAgICAgIH0KICAgICB9CiBv dXQ6CkBAIC00MzcsMzYgKzQ1MSw2MyBAQCBzdGF0aWMgdm9pZCBhaW9fZnJlZV9kZWxldGVkX2hh bmRsZXJzKEFpb0NvbnRleHQgKmN0eCkKICAgICBxZW11X2xvY2tjbnRfaW5jX2FuZF91bmxvY2so JmN0eC0+bGlzdF9sb2NrKTsKIH0KIAotc3RhdGljIGJvb2wgYWlvX2Rpc3BhdGNoX2hhbmRsZXJz KEFpb0NvbnRleHQgKmN0eCkKK3N0YXRpYyBib29sIGFpb19kaXNwYXRjaF9oYW5kbGVyKEFpb0Nv bnRleHQgKmN0eCwgQWlvSGFuZGxlciAqbm9kZSkKIHsKLSAgICBBaW9IYW5kbGVyICpub2RlLCAq dG1wOwogICAgIGJvb2wgcHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBpbnQgcmV2ZW50czsKIAotICAg IFFMSVNUX0ZPUkVBQ0hfU0FGRV9SQ1Uobm9kZSwgJmN0eC0+YWlvX2hhbmRsZXJzLCBub2RlLCB0 bXApIHsKLSAgICAgICAgaW50IHJldmVudHM7CisgICAgcmV2ZW50cyA9IG5vZGUtPnBmZC5yZXZl bnRzICYgbm9kZS0+cGZkLmV2ZW50czsKKyAgICBub2RlLT5wZmQucmV2ZW50cyA9IDA7CiAKLSAg ICAgICAgcmV2ZW50cyA9IG5vZGUtPnBmZC5yZXZlbnRzICYgbm9kZS0+cGZkLmV2ZW50czsKLSAg ICAgICAgbm9kZS0+cGZkLnJldmVudHMgPSAwOworICAgIGlmICghUUxJU1RfSVNfSU5TRVJURUQo bm9kZSwgbm9kZV9kZWxldGVkKSAmJgorICAgICAgICAocmV2ZW50cyAmIChHX0lPX0lOIHwgR19J T19IVVAgfCBHX0lPX0VSUikpICYmCisgICAgICAgIGFpb19ub2RlX2NoZWNrKGN0eCwgbm9kZS0+ aXNfZXh0ZXJuYWwpICYmCisgICAgICAgIG5vZGUtPmlvX3JlYWQpIHsKKyAgICAgICAgbm9kZS0+ aW9fcmVhZChub2RlLT5vcGFxdWUpOwogCi0gICAgICAgIGlmICghUUxJU1RfSVNfSU5TRVJURUQo bm9kZSwgbm9kZV9kZWxldGVkKSAmJgotICAgICAgICAgICAgKHJldmVudHMgJiAoR19JT19JTiB8 IEdfSU9fSFVQIHwgR19JT19FUlIpKSAmJgotICAgICAgICAgICAgYWlvX25vZGVfY2hlY2soY3R4 LCBub2RlLT5pc19leHRlcm5hbCkgJiYKLSAgICAgICAgICAgIG5vZGUtPmlvX3JlYWQpIHsKLSAg ICAgICAgICAgIG5vZGUtPmlvX3JlYWQobm9kZS0+b3BhcXVlKTsKLQotICAgICAgICAgICAgLyog YWlvX25vdGlmeSgpIGRvZXMgbm90IGNvdW50IGFzIHByb2dyZXNzICovCi0gICAgICAgICAgICBp ZiAobm9kZS0+b3BhcXVlICE9ICZjdHgtPm5vdGlmaWVyKSB7Ci0gICAgICAgICAgICAgICAgcHJv Z3Jlc3MgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmICghUUxJ U1RfSVNfSU5TRVJURUQobm9kZSwgbm9kZV9kZWxldGVkKSAmJgotICAgICAgICAgICAgKHJldmVu dHMgJiAoR19JT19PVVQgfCBHX0lPX0VSUikpICYmCi0gICAgICAgICAgICBhaW9fbm9kZV9jaGVj ayhjdHgsIG5vZGUtPmlzX2V4dGVybmFsKSAmJgotICAgICAgICAgICAgbm9kZS0+aW9fd3JpdGUp IHsKLSAgICAgICAgICAgIG5vZGUtPmlvX3dyaXRlKG5vZGUtPm9wYXF1ZSk7CisgICAgICAgIC8q IGFpb19ub3RpZnkoKSBkb2VzIG5vdCBjb3VudCBhcyBwcm9ncmVzcyAqLworICAgICAgICBpZiAo bm9kZS0+b3BhcXVlICE9ICZjdHgtPm5vdGlmaWVyKSB7CiAgICAgICAgICAgICBwcm9ncmVzcyA9 IHRydWU7CiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKCFRTElTVF9JU19JTlNFUlRFRChub2Rl LCBub2RlX2RlbGV0ZWQpICYmCisgICAgICAgIChyZXZlbnRzICYgKEdfSU9fT1VUIHwgR19JT19F UlIpKSAmJgorICAgICAgICBhaW9fbm9kZV9jaGVjayhjdHgsIG5vZGUtPmlzX2V4dGVybmFsKSAm JgorICAgICAgICBub2RlLT5pb193cml0ZSkgeworICAgICAgICBub2RlLT5pb193cml0ZShub2Rl LT5vcGFxdWUpOworICAgICAgICBwcm9ncmVzcyA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJu IHByb2dyZXNzOworfQorCisvKgorICogSWYgd2UgaGF2ZSBhIGxpc3Qgb2YgcmVhZHkgaGFuZGxl cnMgdGhlbiB0aGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4KKyAqIHNjYW5uaW5nIGFsbCBoYW5k bGVycyB3aXRoIGFpb19kaXNwYXRjaF9oYW5kbGVycygpLgorICovCitzdGF0aWMgYm9vbCBhaW9f ZGlzcGF0Y2hfcmVhZHlfaGFuZGxlcnMoQWlvQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEFpb0hhbmRsZXJMaXN0ICpyZWFkeV9saXN0KQorewor ICAgIGJvb2wgcHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBBaW9IYW5kbGVyICpub2RlOworCisgICAg d2hpbGUgKChub2RlID0gUUxJU1RfRklSU1QocmVhZHlfbGlzdCkpKSB7CisgICAgICAgIFFMSVNU X1NBRkVfUkVNT1ZFKG5vZGUsIG5vZGVfcmVhZHkpOworICAgICAgICBwcm9ncmVzcyA9IGFpb19k aXNwYXRjaF9oYW5kbGVyKGN0eCwgbm9kZSkgfHwgcHJvZ3Jlc3M7CisgICAgfQorCisgICAgcmV0 dXJuIHByb2dyZXNzOworfQorCisvKiBTbG93ZXIgdGhhbiBhaW9fZGlzcGF0Y2hfcmVhZHlfaGFu ZGxlcnMoKSBidXQgb25seSB1c2VkIHZpYSBnbGliICovCitzdGF0aWMgYm9vbCBhaW9fZGlzcGF0 Y2hfaGFuZGxlcnMoQWlvQ29udGV4dCAqY3R4KQoreworICAgIEFpb0hhbmRsZXIgKm5vZGUsICp0 bXA7CisgICAgYm9vbCBwcm9ncmVzcyA9IGZhbHNlOworCisgICAgUUxJU1RfRk9SRUFDSF9TQUZF X1JDVShub2RlLCAmY3R4LT5haW9faGFuZGxlcnMsIG5vZGUsIHRtcCkgeworICAgICAgICBwcm9n cmVzcyA9IGFpb19kaXNwYXRjaF9oYW5kbGVyKGN0eCwgbm9kZSkgfHwgcHJvZ3Jlc3M7CisgICAg fQogCiAgICAgcmV0dXJuIHByb2dyZXNzOwogfQpAQCAtNjI4LDYgKzY2OSw3IEBAIHN0YXRpYyBi b29sIHRyeV9wb2xsX21vZGUoQWlvQ29udGV4dCAqY3R4LCBpbnQ2NF90ICp0aW1lb3V0KQogCiBi b29sIGFpb19wb2xsKEFpb0NvbnRleHQgKmN0eCwgYm9vbCBibG9ja2luZykKIHsKKyAgICBBaW9I YW5kbGVyTGlzdCByZWFkeV9saXN0ID0gUUxJU1RfSEVBRF9JTklUSUFMSVpFUihyZWFkeV9saXN0 KTsKICAgICBBaW9IYW5kbGVyICpub2RlOwogICAgIGludCBpOwogICAgIGludCByZXQgPSAwOwpA QCAtNjc4LDcgKzcyMCw3IEBAIGJvb2wgYWlvX3BvbGwoQWlvQ29udGV4dCAqY3R4LCBib29sIGJs b2NraW5nKQogICAgICAgICAvKiB3YWl0IHVudGlsIG5leHQgZXZlbnQgKi8KICAgICAgICAgaWYg KGFpb19lcG9sbF9jaGVja19wb2xsKGN0eCwgcG9sbGZkcywgbnBmZCwgdGltZW91dCkpIHsKICAg ICAgICAgICAgIG5wZmQgPSAwOyAvKiBwb2xsZmRzW10gaXMgbm90IGJlaW5nIHVzZWQgKi8KLSAg ICAgICAgICAgIHJldCA9IGFpb19lcG9sbChjdHgsIHRpbWVvdXQpOworICAgICAgICAgICAgcmV0 ID0gYWlvX2Vwb2xsKGN0eCwgJnJlYWR5X2xpc3QsIHRpbWVvdXQpOwogICAgICAgICB9IGVsc2Ug IHsKICAgICAgICAgICAgIHJldCA9IHFlbXVfcG9sbF9ucyhwb2xsZmRzLCBucGZkLCB0aW1lb3V0 KTsKICAgICAgICAgfQpAQCAtNzMzLDcgKzc3NSwxMSBAQCBib29sIGFpb19wb2xsKEFpb0NvbnRl eHQgKmN0eCwgYm9vbCBibG9ja2luZykKICAgICAvKiBpZiB3ZSBoYXZlIGFueSByZWFkYWJsZSBm ZHMsIGRpc3BhdGNoIGV2ZW50ICovCiAgICAgaWYgKHJldCA+IDApIHsKICAgICAgICAgZm9yIChp ID0gMDsgaSA8IG5wZmQ7IGkrKykgewotICAgICAgICAgICAgbm9kZXNbaV0tPnBmZC5yZXZlbnRz ID0gcG9sbGZkc1tpXS5yZXZlbnRzOworICAgICAgICAgICAgaW50IHJldmVudHMgPSBwb2xsZmRz W2ldLnJldmVudHM7CisKKyAgICAgICAgICAgIGlmIChyZXZlbnRzKSB7CisgICAgICAgICAgICAg ICAgYWRkX3JlYWR5X2hhbmRsZXIoJnJlYWR5X2xpc3QsIG5vZGVzW2ldLCByZXZlbnRzKTsKKyAg ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtNzQyLDcgKzc4OCw3IEBAIGJvb2wg YWlvX3BvbGwoQWlvQ29udGV4dCAqY3R4LCBib29sIGJsb2NraW5nKQogICAgIHByb2dyZXNzIHw9 IGFpb19iaF9wb2xsKGN0eCk7CiAKICAgICBpZiAocmV0ID4gMCkgewotICAgICAgICBwcm9ncmVz cyB8PSBhaW9fZGlzcGF0Y2hfaGFuZGxlcnMoY3R4KTsKKyAgICAgICAgcHJvZ3Jlc3MgfD0gYWlv X2Rpc3BhdGNoX3JlYWR5X2hhbmRsZXJzKGN0eCwgJnJlYWR5X2xpc3QpOwogICAgIH0KIAogICAg IGFpb19mcmVlX2RlbGV0ZWRfaGFuZGxlcnMoY3R4KTsKLS0gCjIuMjQuMQoK