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=-7.8 required=3.0 tests=BAYES_00,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 D54B1C2BBD1 for ; Thu, 17 Sep 2020 09:49:51 +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 5AD7320770 for ; Thu, 17 Sep 2020 09:49:51 +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="FQLY4Hcz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5AD7320770 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]:51800 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kIqY2-0004g2-Fp for qemu-devel@archiver.kernel.org; Thu, 17 Sep 2020 05:49:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53200) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kIqTd-0000Pt-Rp for qemu-devel@nongnu.org; Thu, 17 Sep 2020 05:45:18 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:20628) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kIqTb-0008Lh-Ao for qemu-devel@nongnu.org; Thu, 17 Sep 2020 05:45:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1600335914; 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=GXRsrGWsmlBoJZmsyF+RCojaSi3s3GmzeK2MQrcwdpI=; b=FQLY4HczOWm14DqKkg602oAQ4Tj5WX7VpvD7t4gXr+Li7KTDV7SFtBu7MJ8hPa2JITmnXs mPjQW6saNUwximmNX3vLMM049dkC5AAQ6D9WoattjujqHKcXAzGq5RmztUd5eTl0eoMbtb /sGxhWkTSzXeHKEOS18xz9iWs6AeooA= 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-549-D4Erl-bcO9GsnfmLsXWEuQ-1; Thu, 17 Sep 2020 05:45:12 -0400 X-MC-Unique: D4Erl-bcO9GsnfmLsXWEuQ-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 94E5780B702; Thu, 17 Sep 2020 09:45:11 +0000 (UTC) Received: from localhost (ovpn-114-232.ams2.redhat.com [10.36.114.232]) by smtp.corp.redhat.com (Postfix) with ESMTP id 59D677880D; Thu, 17 Sep 2020 09:45:04 +0000 (UTC) From: Stefan Hajnoczi To: qemu-devel@nongnu.org Subject: [PATCH v2 1/3] util/iov: add iov_discard_undo() Date: Thu, 17 Sep 2020 10:44:53 +0100 Message-Id: <20200917094455.822379-2-stefanha@redhat.com> In-Reply-To: <20200917094455.822379-1-stefanha@redhat.com> References: <20200917094455.822379-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=stefanha@redhat.com X-Mimecast-Spam-Score: 0.003 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=216.205.24.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/17 02:01:40 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -33 X-Spam_score: -3.4 X-Spam_bar: --- X-Spam_report: (-3.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-2.999, 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_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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 , qemu-block@nongnu.org, "Michael S. Tsirkin" , Li Qiang , Max Reitz , Alexander Bulekov , "Gonglei \(Arei\)" , Stefan Hajnoczi Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" VGhlIGlvdl9kaXNjYXJkX2Zyb250L2JhY2soKSBvcGVyYXRpb25zIGFyZSB1c2VmdWwgZm9yIHBh cnNpbmcgaW92ZWNzCmJ1dCB0aGV5IG1vZGlmeSB0aGUgYXJyYXkgZWxlbWVudHMuIElmIHRoZSBv cmlnaW5hbCBhcnJheSBpcyBuZWVkZWQKYWZ0ZXIgcGFyc2luZyBmaW5pc2hlcyB0aGVyZSBpcyBj dXJyZW50bHkgbm8gd2F5IHRvIHJlc3RvcmUgaXQuCgpBbHRob3VnaCBnX21lbWR1cCgpIGNhbiBi ZSB1c2VkIGJlZm9yZSBwZXJmb3JtaW5nIGRlc3RydWN0aXZlCmlvdl9kaXNjYXJkX2Zyb250L2Jh Y2soKSBvcGVyYXRpb25zLCB0aGlzIGlzIGluZWZmaWNpZW50LgoKSW50cm9kdWNlIGlvdl9kaXNj YXJkX3VuZG8oKSB0byByZXN0b3JlIHRoZSBhcnJheSB0byB0aGUgc3RhdGUgcHJpb3IgdG8KYW4g aW92X2Rpc2NhcmRfZnJvbnQvYmFjaygpIG9wZXJhdGlvbi4KClJldmlld2VkLWJ5OiBMaSBRaWFu ZyA8bGlxM2VhQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogU3RlZmFuIEhham5vY3ppIDxzdGVm YW5oYUByZWRoYXQuY29tPgotLS0KIGluY2x1ZGUvcWVtdS9pb3YuaCB8ICAyMyArKysrKysrCiB0 ZXN0cy90ZXN0LWlvdi5jICAgfCAxNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiB1dGlsL2lvdi5jICAgICAgICAgfCAgNTAgKysrKysrKysrKysrLS0KIDMg ZmlsZXMgY2hhbmdlZCwgMjM0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9xZW11L2lvdi5oIGIvaW5jbHVkZS9xZW11L2lvdi5oCmluZGV4IGJmZmMx NTEyODIuLmI2YjI4M2E1ZTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvcWVtdS9pb3YuaAorKysgYi9p bmNsdWRlL3FlbXUvaW92LmgKQEAgLTEzMCw2ICsxMzAsMjkgQEAgc2l6ZV90IGlvdl9kaXNjYXJk X2Zyb250KHN0cnVjdCBpb3ZlYyAqKmlvdiwgdW5zaWduZWQgaW50ICppb3ZfY250LAogc2l6ZV90 IGlvdl9kaXNjYXJkX2JhY2soc3RydWN0IGlvdmVjICppb3YsIHVuc2lnbmVkIGludCAqaW92X2Nu dCwKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlcyk7CiAKKy8qIEluZm9ybWF0 aW9uIG5lZWRlZCB0byB1bmRvIGFuIGlvdl9kaXNjYXJkXyooKSBvcGVyYXRpb24gKi8KK3R5cGVk ZWYgc3RydWN0IHsKKyAgICBzdHJ1Y3QgaW92ZWMgKm1vZGlmaWVkX2lvdjsKKyAgICBzdHJ1Y3Qg aW92ZWMgb3JpZzsKK30gSU9WRGlzY2FyZFVuZG87CisKKy8qCisgKiBVbmRvIGFuIGlvdl9kaXNj YXJkX2Zyb250X3VuZG9hYmxlKCkgb3IgaW92X2Rpc2NhcmRfYmFja191bmRvYWJsZSgpCisgKiBv cGVyYXRpb24uIElmIG11bHRpcGxlIG9wZXJhdGlvbnMgYXJlIG1hZGUgdGhlbiBlYWNoIG9uZSBu ZWVkcyBhIHNlcGFyYXRlCisgKiBJT1ZEaXNjYXJkVW5kbyBhbmQgaW92X2Rpc2NhcmRfdW5kbygp IG11c3QgYmUgY2FsbGVkIGluIHRoZSByZXZlcnNlIG9yZGVyCisgKiB0aGF0IHRoZSBvcGVyYXRp b25zIHdlcmUgbWFkZS4KKyAqLwordm9pZCBpb3ZfZGlzY2FyZF91bmRvKElPVkRpc2NhcmRVbmRv ICp1bmRvKTsKKworLyoKKyAqIFVuZG9hYmxlIHZlcnNpb25zIG9mIGlvdl9kaXNjYXJkX2Zyb250 KCkgYW5kIGlvdl9kaXNjYXJkX2JhY2soKS4gVXNlCisgKiBpb3ZfZGlzY2FyZF91bmRvKCkgdG8g cmVzZXQgdG8gdGhlIHN0YXRlIGJlZm9yZSB0aGUgZGlzY2FyZCBvcGVyYXRpb25zLgorICovCitz aXplX3QgaW92X2Rpc2NhcmRfZnJvbnRfdW5kb2FibGUoc3RydWN0IGlvdmVjICoqaW92LCB1bnNp Z25lZCBpbnQgKmlvdl9jbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90IGJ5dGVzLCBJT1ZEaXNjYXJkVW5kbyAqdW5kbyk7CitzaXplX3QgaW92X2Rpc2NhcmRfYmFj a191bmRvYWJsZShzdHJ1Y3QgaW92ZWMgKmlvdiwgdW5zaWduZWQgaW50ICppb3ZfY250LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ5dGVzLCBJT1ZEaXNjYXJkVW5k byAqdW5kbyk7CisKIHR5cGVkZWYgc3RydWN0IFFFTVVJT1ZlY3RvciB7CiAgICAgc3RydWN0IGlv dmVjICppb3Y7CiAgICAgaW50IG5pb3Y7CmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0LWlvdi5jIGIv dGVzdHMvdGVzdC1pb3YuYwppbmRleCA0NThjYTI1MDk5Li45YzQxNWUyZjFmIDEwMDY0NAotLS0g YS90ZXN0cy90ZXN0LWlvdi5jCisrKyBiL3Rlc3RzL3Rlc3QtaW92LmMKQEAgLTI2LDYgKzI2LDEy IEBAIHN0YXRpYyB2b2lkIGlvdl9mcmVlKHN0cnVjdCBpb3ZlYyAqaW92LCB1bnNpZ25lZCBuaW92 KQogICAgIGdfZnJlZShpb3YpOwogfQogCitzdGF0aWMgYm9vbCBpb3ZfZXF1YWxzKGNvbnN0IHN0 cnVjdCBpb3ZlYyAqYSwgY29uc3Qgc3RydWN0IGlvdmVjICpiLAorICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBuaW92KQoreworICAgIHJldHVybiBtZW1jbXAoYSwgYiwgc2l6ZW9mKGFb MF0pICogbmlvdikgPT0gMDsKK30KKwogc3RhdGljIHZvaWQgdGVzdF9pb3ZfYnl0ZXMoc3RydWN0 IGlvdmVjICppb3YsIHVuc2lnbmVkIG5pb3YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplX3Qgb2Zmc2V0LCBzaXplX3QgYnl0ZXMpCiB7CkBAIC0zMzUsNiArMzQxLDg3IEBAIHN0YXRp YyB2b2lkIHRlc3RfZGlzY2FyZF9mcm9udCh2b2lkKQogICAgIGlvdl9mcmVlKGlvdiwgaW92X2Nu dCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RfZGlzY2FyZF9mcm9udF91bmRvKHZvaWQpCit7Cisg ICAgSU9WRGlzY2FyZFVuZG8gdW5kbzsKKyAgICBzdHJ1Y3QgaW92ZWMgKmlvdjsKKyAgICBzdHJ1 Y3QgaW92ZWMgKmlvdl90bXA7CisgICAgc3RydWN0IGlvdmVjICppb3Zfb3JpZzsKKyAgICB1bnNp Z25lZCBpbnQgaW92X2NudDsKKyAgICB1bnNpZ25lZCBpbnQgaW92X2NudF90bXA7CisgICAgc2l6 ZV90IHNpemU7CisKKyAgICAvKiBEaXNjYXJkIHplcm8gYnl0ZXMgKi8KKyAgICBpb3ZfcmFuZG9t KCZpb3YsICZpb3ZfY250KTsKKyAgICBpb3Zfb3JpZyA9IGdfbWVtZHVwKGlvdiwgc2l6ZW9mKGlv dlswXSkgKiBpb3ZfY250KTsKKyAgICBpb3ZfdG1wID0gaW92OworICAgIGlvdl9jbnRfdG1wID0g aW92X2NudDsKKyAgICBpb3ZfZGlzY2FyZF9mcm9udF91bmRvYWJsZSgmaW92X3RtcCwgJmlvdl9j bnRfdG1wLCAwLCAmdW5kbyk7CisgICAgaW92X2Rpc2NhcmRfdW5kbygmdW5kbyk7CisgICAgYXNz ZXJ0KGlvdl9lcXVhbHMoaW92LCBpb3Zfb3JpZywgaW92X2NudCkpOworICAgIGdfZnJlZShpb3Zf b3JpZyk7CisgICAgaW92X2ZyZWUoaW92LCBpb3ZfY250KTsKKworICAgIC8qIERpc2NhcmQgbW9y ZSBieXRlcyB0aGFuIHZlY3RvciBzaXplICovCisgICAgaW92X3JhbmRvbSgmaW92LCAmaW92X2Nu dCk7CisgICAgaW92X29yaWcgPSBnX21lbWR1cChpb3YsIHNpemVvZihpb3ZbMF0pICogaW92X2Nu dCk7CisgICAgaW92X3RtcCA9IGlvdjsKKyAgICBpb3ZfY250X3RtcCA9IGlvdl9jbnQ7CisgICAg c2l6ZSA9IGlvdl9zaXplKGlvdiwgaW92X2NudCk7CisgICAgaW92X2Rpc2NhcmRfZnJvbnRfdW5k b2FibGUoJmlvdl90bXAsICZpb3ZfY250X3RtcCwgc2l6ZSArIDEsICZ1bmRvKTsKKyAgICBpb3Zf ZGlzY2FyZF91bmRvKCZ1bmRvKTsKKyAgICBhc3NlcnQoaW92X2VxdWFscyhpb3YsIGlvdl9vcmln LCBpb3ZfY250KSk7CisgICAgZ19mcmVlKGlvdl9vcmlnKTsKKyAgICBpb3ZfZnJlZShpb3YsIGlv dl9jbnQpOworCisgICAgLyogRGlzY2FyZCBlbnRpcmUgdmVjdG9yICovCisgICAgaW92X3JhbmRv bSgmaW92LCAmaW92X2NudCk7CisgICAgaW92X29yaWcgPSBnX21lbWR1cChpb3YsIHNpemVvZihp b3ZbMF0pICogaW92X2NudCk7CisgICAgaW92X3RtcCA9IGlvdjsKKyAgICBpb3ZfY250X3RtcCA9 IGlvdl9jbnQ7CisgICAgc2l6ZSA9IGlvdl9zaXplKGlvdiwgaW92X2NudCk7CisgICAgaW92X2Rp c2NhcmRfZnJvbnRfdW5kb2FibGUoJmlvdl90bXAsICZpb3ZfY250X3RtcCwgc2l6ZSwgJnVuZG8p OworICAgIGlvdl9kaXNjYXJkX3VuZG8oJnVuZG8pOworICAgIGFzc2VydChpb3ZfZXF1YWxzKGlv diwgaW92X29yaWcsIGlvdl9jbnQpKTsKKyAgICBnX2ZyZWUoaW92X29yaWcpOworICAgIGlvdl9m cmVlKGlvdiwgaW92X2NudCk7CisKKyAgICAvKiBEaXNjYXJkIHdpdGhpbiBmaXJzdCBlbGVtZW50 ICovCisgICAgaW92X3JhbmRvbSgmaW92LCAmaW92X2NudCk7CisgICAgaW92X29yaWcgPSBnX21l bWR1cChpb3YsIHNpemVvZihpb3ZbMF0pICogaW92X2NudCk7CisgICAgaW92X3RtcCA9IGlvdjsK KyAgICBpb3ZfY250X3RtcCA9IGlvdl9jbnQ7CisgICAgc2l6ZSA9IGdfdGVzdF9yYW5kX2ludF9y YW5nZSgxLCBpb3YtPmlvdl9sZW4pOworICAgIGlvdl9kaXNjYXJkX2Zyb250X3VuZG9hYmxlKCZp b3ZfdG1wLCAmaW92X2NudF90bXAsIHNpemUsICZ1bmRvKTsKKyAgICBpb3ZfZGlzY2FyZF91bmRv KCZ1bmRvKTsKKyAgICBhc3NlcnQoaW92X2VxdWFscyhpb3YsIGlvdl9vcmlnLCBpb3ZfY250KSk7 CisgICAgZ19mcmVlKGlvdl9vcmlnKTsKKyAgICBpb3ZfZnJlZShpb3YsIGlvdl9jbnQpOworCisg ICAgLyogRGlzY2FyZCBlbnRpcmUgZmlyc3QgZWxlbWVudCAqLworICAgIGlvdl9yYW5kb20oJmlv diwgJmlvdl9jbnQpOworICAgIGlvdl9vcmlnID0gZ19tZW1kdXAoaW92LCBzaXplb2YoaW92WzBd KSAqIGlvdl9jbnQpOworICAgIGlvdl90bXAgPSBpb3Y7CisgICAgaW92X2NudF90bXAgPSBpb3Zf Y250OworICAgIGlvdl9kaXNjYXJkX2Zyb250X3VuZG9hYmxlKCZpb3ZfdG1wLCAmaW92X2NudF90 bXAsIGlvdi0+aW92X2xlbiwgJnVuZG8pOworICAgIGlvdl9kaXNjYXJkX3VuZG8oJnVuZG8pOwor ICAgIGFzc2VydChpb3ZfZXF1YWxzKGlvdiwgaW92X29yaWcsIGlvdl9jbnQpKTsKKyAgICBnX2Zy ZWUoaW92X29yaWcpOworICAgIGlvdl9mcmVlKGlvdiwgaW92X2NudCk7CisKKyAgICAvKiBEaXNj YXJkIHdpdGhpbiBzZWNvbmQgZWxlbWVudCAqLworICAgIGlvdl9yYW5kb20oJmlvdiwgJmlvdl9j bnQpOworICAgIGlvdl9vcmlnID0gZ19tZW1kdXAoaW92LCBzaXplb2YoaW92WzBdKSAqIGlvdl9j bnQpOworICAgIGlvdl90bXAgPSBpb3Y7CisgICAgaW92X2NudF90bXAgPSBpb3ZfY250OworICAg IHNpemUgPSBpb3YtPmlvdl9sZW4gKyBnX3Rlc3RfcmFuZF9pbnRfcmFuZ2UoMSwgaW92WzFdLmlv dl9sZW4pOworICAgIGlvdl9kaXNjYXJkX2Zyb250X3VuZG9hYmxlKCZpb3ZfdG1wLCAmaW92X2Nu dF90bXAsIHNpemUsICZ1bmRvKTsKKyAgICBpb3ZfZGlzY2FyZF91bmRvKCZ1bmRvKTsKKyAgICBh c3NlcnQoaW92X2VxdWFscyhpb3YsIGlvdl9vcmlnLCBpb3ZfY250KSk7CisgICAgZ19mcmVlKGlv dl9vcmlnKTsKKyAgICBpb3ZfZnJlZShpb3YsIGlvdl9jbnQpOworfQorCiBzdGF0aWMgdm9pZCB0 ZXN0X2Rpc2NhcmRfYmFjayh2b2lkKQogewogICAgIHN0cnVjdCBpb3ZlYyAqaW92OwpAQCAtNDA0 LDYgKzQ5MSw4MiBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Rpc2NhcmRfYmFjayh2b2lkKQogICAgIGlv dl9mcmVlKGlvdiwgaW92X2NudCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RfZGlzY2FyZF9iYWNr X3VuZG8odm9pZCkKK3sKKyAgICBJT1ZEaXNjYXJkVW5kbyB1bmRvOworICAgIHN0cnVjdCBpb3Zl YyAqaW92OworICAgIHN0cnVjdCBpb3ZlYyAqaW92X29yaWc7CisgICAgdW5zaWduZWQgaW50IGlv dl9jbnQ7CisgICAgdW5zaWduZWQgaW50IGlvdl9jbnRfdG1wOworICAgIHNpemVfdCBzaXplOwor CisgICAgLyogRGlzY2FyZCB6ZXJvIGJ5dGVzICovCisgICAgaW92X3JhbmRvbSgmaW92LCAmaW92 X2NudCk7CisgICAgaW92X29yaWcgPSBnX21lbWR1cChpb3YsIHNpemVvZihpb3ZbMF0pICogaW92 X2NudCk7CisgICAgaW92X2NudF90bXAgPSBpb3ZfY250OworICAgIGlvdl9kaXNjYXJkX2JhY2tf dW5kb2FibGUoaW92LCAmaW92X2NudF90bXAsIDAsICZ1bmRvKTsKKyAgICBpb3ZfZGlzY2FyZF91 bmRvKCZ1bmRvKTsKKyAgICBhc3NlcnQoaW92X2VxdWFscyhpb3YsIGlvdl9vcmlnLCBpb3ZfY250 KSk7CisgICAgZ19mcmVlKGlvdl9vcmlnKTsKKyAgICBpb3ZfZnJlZShpb3YsIGlvdl9jbnQpOwor CisgICAgLyogRGlzY2FyZCBtb3JlIGJ5dGVzIHRoYW4gdmVjdG9yIHNpemUgKi8KKyAgICBpb3Zf cmFuZG9tKCZpb3YsICZpb3ZfY250KTsKKyAgICBpb3Zfb3JpZyA9IGdfbWVtZHVwKGlvdiwgc2l6 ZW9mKGlvdlswXSkgKiBpb3ZfY250KTsKKyAgICBpb3ZfY250X3RtcCA9IGlvdl9jbnQ7CisgICAg c2l6ZSA9IGlvdl9zaXplKGlvdiwgaW92X2NudCk7CisgICAgaW92X2Rpc2NhcmRfYmFja191bmRv YWJsZShpb3YsICZpb3ZfY250X3RtcCwgc2l6ZSArIDEsICZ1bmRvKTsKKyAgICBpb3ZfZGlzY2Fy ZF91bmRvKCZ1bmRvKTsKKyAgICBhc3NlcnQoaW92X2VxdWFscyhpb3YsIGlvdl9vcmlnLCBpb3Zf Y250KSk7CisgICAgZ19mcmVlKGlvdl9vcmlnKTsKKyAgICBpb3ZfZnJlZShpb3YsIGlvdl9jbnQp OworCisgICAgLyogRGlzY2FyZCBlbnRpcmUgdmVjdG9yICovCisgICAgaW92X3JhbmRvbSgmaW92 LCAmaW92X2NudCk7CisgICAgaW92X29yaWcgPSBnX21lbWR1cChpb3YsIHNpemVvZihpb3ZbMF0p ICogaW92X2NudCk7CisgICAgaW92X2NudF90bXAgPSBpb3ZfY250OworICAgIHNpemUgPSBpb3Zf c2l6ZShpb3YsIGlvdl9jbnQpOworICAgIGlvdl9kaXNjYXJkX2JhY2tfdW5kb2FibGUoaW92LCAm aW92X2NudF90bXAsIHNpemUsICZ1bmRvKTsKKyAgICBpb3ZfZGlzY2FyZF91bmRvKCZ1bmRvKTsK KyAgICBhc3NlcnQoaW92X2VxdWFscyhpb3YsIGlvdl9vcmlnLCBpb3ZfY250KSk7CisgICAgZ19m cmVlKGlvdl9vcmlnKTsKKyAgICBpb3ZfZnJlZShpb3YsIGlvdl9jbnQpOworCisgICAgLyogRGlz Y2FyZCB3aXRoaW4gbGFzdCBlbGVtZW50ICovCisgICAgaW92X3JhbmRvbSgmaW92LCAmaW92X2Nu dCk7CisgICAgaW92X29yaWcgPSBnX21lbWR1cChpb3YsIHNpemVvZihpb3ZbMF0pICogaW92X2Nu dCk7CisgICAgaW92X2NudF90bXAgPSBpb3ZfY250OworICAgIHNpemUgPSBnX3Rlc3RfcmFuZF9p bnRfcmFuZ2UoMSwgaW92W2lvdl9jbnQgLSAxXS5pb3ZfbGVuKTsKKyAgICBpb3ZfZGlzY2FyZF9i YWNrX3VuZG9hYmxlKGlvdiwgJmlvdl9jbnRfdG1wLCBzaXplLCAmdW5kbyk7CisgICAgaW92X2Rp c2NhcmRfdW5kbygmdW5kbyk7CisgICAgYXNzZXJ0KGlvdl9lcXVhbHMoaW92LCBpb3Zfb3JpZywg aW92X2NudCkpOworICAgIGdfZnJlZShpb3Zfb3JpZyk7CisgICAgaW92X2ZyZWUoaW92LCBpb3Zf Y250KTsKKworICAgIC8qIERpc2NhcmQgZW50aXJlIGxhc3QgZWxlbWVudCAqLworICAgIGlvdl9y YW5kb20oJmlvdiwgJmlvdl9jbnQpOworICAgIGlvdl9vcmlnID0gZ19tZW1kdXAoaW92LCBzaXpl b2YoaW92WzBdKSAqIGlvdl9jbnQpOworICAgIGlvdl9jbnRfdG1wID0gaW92X2NudDsKKyAgICBz aXplID0gaW92W2lvdl9jbnQgLSAxXS5pb3ZfbGVuOworICAgIGlvdl9kaXNjYXJkX2JhY2tfdW5k b2FibGUoaW92LCAmaW92X2NudF90bXAsIHNpemUsICZ1bmRvKTsKKyAgICBpb3ZfZGlzY2FyZF91 bmRvKCZ1bmRvKTsKKyAgICBhc3NlcnQoaW92X2VxdWFscyhpb3YsIGlvdl9vcmlnLCBpb3ZfY250 KSk7CisgICAgZ19mcmVlKGlvdl9vcmlnKTsKKyAgICBpb3ZfZnJlZShpb3YsIGlvdl9jbnQpOwor CisgICAgLyogRGlzY2FyZCB3aXRoaW4gc2Vjb25kLXRvLWxhc3QgZWxlbWVudCAqLworICAgIGlv dl9yYW5kb20oJmlvdiwgJmlvdl9jbnQpOworICAgIGlvdl9vcmlnID0gZ19tZW1kdXAoaW92LCBz aXplb2YoaW92WzBdKSAqIGlvdl9jbnQpOworICAgIGlvdl9jbnRfdG1wID0gaW92X2NudDsKKyAg ICBzaXplID0gaW92W2lvdl9jbnQgLSAxXS5pb3ZfbGVuICsKKyAgICAgICAgICAgZ190ZXN0X3Jh bmRfaW50X3JhbmdlKDEsIGlvdltpb3ZfY250IC0gMl0uaW92X2xlbik7CisgICAgaW92X2Rpc2Nh cmRfYmFja191bmRvYWJsZShpb3YsICZpb3ZfY250X3RtcCwgc2l6ZSwgJnVuZG8pOworICAgIGlv dl9kaXNjYXJkX3VuZG8oJnVuZG8pOworICAgIGFzc2VydChpb3ZfZXF1YWxzKGlvdiwgaW92X29y aWcsIGlvdl9jbnQpKTsKKyAgICBnX2ZyZWUoaW92X29yaWcpOworICAgIGlvdl9mcmVlKGlvdiwg aW92X2NudCk7Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKICAgICBn X3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOwpAQCAtNDEyLDUgKzU3NSw3IEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi9iYXNpYy9p b3YvaW8iLCB0ZXN0X2lvKTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi9iYXNpYy9pb3YvZGlzY2Fy ZC1mcm9udCIsIHRlc3RfZGlzY2FyZF9mcm9udCk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvYmFz aWMvaW92L2Rpc2NhcmQtYmFjayIsIHRlc3RfZGlzY2FyZF9iYWNrKTsKKyAgICBnX3Rlc3RfYWRk X2Z1bmMoIi9iYXNpYy9pb3YvZGlzY2FyZC1mcm9udC11bmRvIiwgdGVzdF9kaXNjYXJkX2Zyb250 X3VuZG8pOworICAgIGdfdGVzdF9hZGRfZnVuYygiL2Jhc2ljL2lvdi9kaXNjYXJkLWJhY2stdW5k byIsIHRlc3RfZGlzY2FyZF9iYWNrX3VuZG8pOwogICAgIHJldHVybiBnX3Rlc3RfcnVuKCk7CiB9 CmRpZmYgLS1naXQgYS91dGlsL2lvdi5jIGIvdXRpbC9pb3YuYwppbmRleCBhZTYxZDY5NmFhLi5m M2E5ZTkyYTM3IDEwMDY0NAotLS0gYS91dGlsL2lvdi5jCisrKyBiL3V0aWwvaW92LmMKQEAgLTYz NiwxNCArNjM2LDMzIEBAIHZvaWQgcWVtdV9pb3ZlY19jbG9uZShRRU1VSU9WZWN0b3IgKmRlc3Qs IGNvbnN0IFFFTVVJT1ZlY3RvciAqc3JjLCB2b2lkICpidWYpCiAgICAgfQogfQogCi1zaXplX3Qg aW92X2Rpc2NhcmRfZnJvbnQoc3RydWN0IGlvdmVjICoqaW92LCB1bnNpZ25lZCBpbnQgKmlvdl9j bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ5dGVzKQordm9pZCBpb3ZfZGlz Y2FyZF91bmRvKElPVkRpc2NhcmRVbmRvICp1bmRvKQoreworICAgIC8qIFJlc3RvcmUgb3JpZ2lu YWwgaW92ZWMgaWYgaXQgd2FzIG1vZGlmaWVkICovCisgICAgaWYgKHVuZG8tPm1vZGlmaWVkX2lv dikgeworICAgICAgICAqdW5kby0+bW9kaWZpZWRfaW92ID0gdW5kby0+b3JpZzsKKyAgICB9Cit9 CisKK3NpemVfdCBpb3ZfZGlzY2FyZF9mcm9udF91bmRvYWJsZShzdHJ1Y3QgaW92ZWMgKippb3Ys CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICppb3ZfY250 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBieXRlcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT1ZEaXNjYXJkVW5kbyAqdW5kbykKIHsKICAg ICBzaXplX3QgdG90YWwgPSAwOwogICAgIHN0cnVjdCBpb3ZlYyAqY3VyOwogCisgICAgaWYgKHVu ZG8pIHsKKyAgICAgICAgdW5kby0+bW9kaWZpZWRfaW92ID0gTlVMTDsKKyAgICB9CisKICAgICBm b3IgKGN1ciA9ICppb3Y7ICppb3ZfY250ID4gMDsgY3VyKyspIHsKICAgICAgICAgaWYgKGN1ci0+ aW92X2xlbiA+IGJ5dGVzKSB7CisgICAgICAgICAgICBpZiAodW5kbykgeworICAgICAgICAgICAg ICAgIHVuZG8tPm1vZGlmaWVkX2lvdiA9IGN1cjsKKyAgICAgICAgICAgICAgICB1bmRvLT5vcmln ID0gKmN1cjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY3VyLT5pb3ZfYmFzZSArPSBi eXRlczsKICAgICAgICAgICAgIGN1ci0+aW92X2xlbiAtPSBieXRlczsKICAgICAgICAgICAgIHRv dGFsICs9IGJ5dGVzOwpAQCAtNjU5LDEyICs2NzgsMjQgQEAgc2l6ZV90IGlvdl9kaXNjYXJkX2Zy b250KHN0cnVjdCBpb3ZlYyAqKmlvdiwgdW5zaWduZWQgaW50ICppb3ZfY250LAogICAgIHJldHVy biB0b3RhbDsKIH0KIAotc2l6ZV90IGlvdl9kaXNjYXJkX2JhY2soc3RydWN0IGlvdmVjICppb3Ys IHVuc2lnbmVkIGludCAqaW92X2NudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBi eXRlcykKK3NpemVfdCBpb3ZfZGlzY2FyZF9mcm9udChzdHJ1Y3QgaW92ZWMgKippb3YsIHVuc2ln bmVkIGludCAqaW92X2NudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnl0ZXMp Cit7CisgICAgcmV0dXJuIGlvdl9kaXNjYXJkX2Zyb250X3VuZG9hYmxlKGlvdiwgaW92X2NudCwg Ynl0ZXMsIE5VTEwpOworfQorCitzaXplX3QgaW92X2Rpc2NhcmRfYmFja191bmRvYWJsZShzdHJ1 Y3QgaW92ZWMgKmlvdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCAqaW92X2NudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBi eXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPVkRpc2NhcmRVbmRvICp1 bmRvKQogewogICAgIHNpemVfdCB0b3RhbCA9IDA7CiAgICAgc3RydWN0IGlvdmVjICpjdXI7CiAK KyAgICBpZiAodW5kbykgeworICAgICAgICB1bmRvLT5tb2RpZmllZF9pb3YgPSBOVUxMOworICAg IH0KKwogICAgIGlmICgqaW92X2NudCA9PSAwKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K QEAgLTY3Myw2ICs3MDQsMTEgQEAgc2l6ZV90IGlvdl9kaXNjYXJkX2JhY2soc3RydWN0IGlvdmVj ICppb3YsIHVuc2lnbmVkIGludCAqaW92X2NudCwKIAogICAgIHdoaWxlICgqaW92X2NudCA+IDAp IHsKICAgICAgICAgaWYgKGN1ci0+aW92X2xlbiA+IGJ5dGVzKSB7CisgICAgICAgICAgICBpZiAo dW5kbykgeworICAgICAgICAgICAgICAgIHVuZG8tPm1vZGlmaWVkX2lvdiA9IGN1cjsKKyAgICAg ICAgICAgICAgICB1bmRvLT5vcmlnID0gKmN1cjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAg ICAgY3VyLT5pb3ZfbGVuIC09IGJ5dGVzOwogICAgICAgICAgICAgdG90YWwgKz0gYnl0ZXM7CiAg ICAgICAgICAgICBicmVhazsKQEAgLTY4Nyw2ICs3MjMsMTIgQEAgc2l6ZV90IGlvdl9kaXNjYXJk X2JhY2soc3RydWN0IGlvdmVjICppb3YsIHVuc2lnbmVkIGludCAqaW92X2NudCwKICAgICByZXR1 cm4gdG90YWw7CiB9CiAKK3NpemVfdCBpb3ZfZGlzY2FyZF9iYWNrKHN0cnVjdCBpb3ZlYyAqaW92 LCB1bnNpZ25lZCBpbnQgKmlvdl9jbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg Ynl0ZXMpCit7CisgICAgcmV0dXJuIGlvdl9kaXNjYXJkX2JhY2tfdW5kb2FibGUoaW92LCBpb3Zf Y250LCBieXRlcywgTlVMTCk7Cit9CisKIHZvaWQgcWVtdV9pb3ZlY19kaXNjYXJkX2JhY2soUUVN VUlPVmVjdG9yICpxaW92LCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgc2l6ZV90IHRvdGFsOwotLSAK Mi4yNi4yCgo=