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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1A81FC3A59D for ; Sun, 7 Apr 2024 04:50:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=UpJhcPcv8qiIafLUW0xf6cdVQvoCUp8gyGFYcXysdlw=; b=uH3vXXvWybi3OH b9VjItlZGW0AEwd3+4i2dayrbp3BDLFquneVr8X0JXu9M9HynW3BfJQkYI1nNAVp/sZZyJwB9+uHk 2SJ4bqw4NjastGYCrh6+CEcqVwL//NtW0Xt13Q6EnF6V/o+KsU6ZrVvE9OXbMBHAzdwwoIjgveKn1 u043fCLlSXk7EmA8hydYQMF5Nzb1M+P0/+FRFLlNhg4MHbq58WCtnpcjlX2qPKm/W16ad1CtDrhx+ YiSI/eNzOzV6DXAvRqOucaGHI07puq/GSDApuWvqYEU8Rff6aNMHSFJYnA0UIdqQIHbwg5BvkAB4p N55g2K9VPDkTRUWPLobg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rtKU6-0000000BkLx-1GJJ; Sun, 07 Apr 2024 04:50:26 +0000 Received: from mail-il1-x132.google.com ([2607:f8b0:4864:20::132]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rtKU1-0000000BkJN-2c4K for linux-arm-kernel@lists.infradead.org; Sun, 07 Apr 2024 04:50:24 +0000 Received: by mail-il1-x132.google.com with SMTP id e9e14a558f8ab-36a205e0f16so514365ab.1 for ; Sat, 06 Apr 2024 21:50:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brainfault-org.20230601.gappssmtp.com; s=20230601; t=1712465417; x=1713070217; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=eSOyMWuiKoh8+FxVm+reFs1vh/ly1S0wriyHj88dOco=; b=0PSHgKad0I+j2bLLcTQnuPTqG+EhJhN8VzMdqsrwaBoO2hNCkqhkvPqXPTei2+QkHm n9v4vYgLYRJ6HL7/i/+SFmMoc8iMFvLntMjAnANHRcXwXEzo4D65hTag7VYVH3bk69ZE 2BKDJ6RPolMEZcJNsTsfQzv17Gr7TeIKs8CG0Xy6SHVB17wYH3i1H73becvuxwHF6zzj y+05eXx/7HsbJ5twkULsj7pKAEGPUrllrVXkIouclQJtOXgq8UERc+jkM9zsogdhqyKH HsE4OI8zflVwVLmngFFR41ek1N/2fzacsd2DOt2NDp9UGzffIgXFBAW4fm1weBFpymFV xkMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712465417; x=1713070217; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eSOyMWuiKoh8+FxVm+reFs1vh/ly1S0wriyHj88dOco=; b=Sbbv4WfLKFDCZwIjuEpFG/FBl8m6wcPCopm61Vz/x/xDHm9M6CK2mJ1lrMh60uGEft XjgQYuFcmP4Jww7jYMSkehgunUsvFd9l6/jfncAXacN7bEiuQq6+guvac53kBaf7iVkV C4nL4RSrKfiJvilNt1vZgXEBUPpB6RHKKlMJdf9aCUGHl23FvDee0kDbAeW7mfEn6OZG PKGNHpuhe2uAsJonHN34B67ecR2kk6movmuCurfxlLvRjxTd8f7EKvC6MxSg7dIZMsXn EsCYe2XdQPKMmjfS37WqnUXbW1xSZ7/1/L6lZDknMaYYe7j1bVPSLORq3SaiLmxCKfdW sj3g== X-Forwarded-Encrypted: i=1; AJvYcCVsTFw21bHEAGnVvnERsKcI8FD7fUzsWmVOPkWeyaAKbU7D/zaRhSjlJkAeXrbA2Yg1MkZc08XHIAkPeNoDB5SC7O+dfOPJ/NUf+n6U8Jd7gkzAZ24= X-Gm-Message-State: AOJu0YymRlUkXQdzIlaHRxe6hqN1aipFgJkzt8dJaavlEpaHGmbE6nTx 5MuobYd0Eq43Dbwu4q6WOGOg+NVi8mQTYXdqqxPa5nM6am+tYH+seqGt5kkRmN9fcqxdqlaEByz DacUinQ21Eg4Vt3RjlZKDJK19JEWfzNbyyogL1Q== X-Google-Smtp-Source: AGHT+IEziIiZJFv2t0jKP6V2qifN/y4SuoxWAqldWlR3rrZlBX9Z/5AfdEzJNFyrwauRwTlIhTShFzey1rao1yYt3Lc= X-Received: by 2002:a05:6e02:1cae:b0:369:f8b7:f5a6 with SMTP id x14-20020a056e021cae00b00369f8b7f5a6mr6303460ill.8.1712465416867; Sat, 06 Apr 2024 21:50:16 -0700 (PDT) MIME-Version: 1.0 References: <20240405115815.3226315-1-pbonzini@redhat.com> <20240405115815.3226315-2-pbonzini@redhat.com> In-Reply-To: <20240405115815.3226315-2-pbonzini@redhat.com> From: Anup Patel Date: Sun, 7 Apr 2024 10:20:05 +0530 Message-ID: Subject: Re: [PATCH 1/4] KVM: delete .change_pte MMU notifier callback To: Paolo Bonzini Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Marc Zyngier , Oliver Upton , Tianrui Zhao , Bibo Mao , Thomas Bogendoerfer , Nicholas Piggin , Atish Patra , Sean Christopherson , Andrew Morton , David Hildenbrand , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240406_215021_881857_69AB7F5B X-CRM114-Status: GOOD ( 31.25 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBBcHIgNSwgMjAyNCBhdCA1OjI44oCvUE0gUGFvbG8gQm9uemluaSA8cGJvbnppbmlA cmVkaGF0LmNvbT4gd3JvdGU6Cj4KPiBUaGUgLmNoYW5nZV9wdGUoKSBNTVUgbm90aWZpZXIgY2Fs bGJhY2sgd2FzIGludGVuZGVkIGFzIGFuCj4gb3B0aW1pemF0aW9uLiBUaGUgb3JpZ2luYWwgcG9p bnQgb2YgaXQgd2FzIHRoYXQgS1NNIGNvdWxkIHRlbGwgS1ZNIHRvIGZsaXAKPiBpdHMgc2Vjb25k YXJ5IFBURSB0byBhIG5ldyBsb2NhdGlvbiB3aXRob3V0IGhhdmluZyB0byBmaXJzdCB6YXAgaXQu IEF0Cj4gdGhlIHRpbWUgdGhlcmUgd2FzIGFsc28gYW4gLmludmFsaWRhdGVfcGFnZSgpIGNhbGxi YWNrOyBib3RoIG9mIHRoZW0gd2VyZQo+ICpub3QqIGJyYWNrZXRlZCBieSBjYWxscyB0byBtbXVf bm90aWZpZXJfaW52YWxpZGF0ZV9yYW5nZV97c3RhcnQsZW5kfSgpLAo+IGFuZCAuaW52YWxpZGF0 ZV9wYWdlKCkgYWxzbyBkb3VibGVkIGFzIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YKPiAu Y2hhbmdlX3B0ZSgpLgo+Cj4gTGF0ZXIgb24sIGhvd2V2ZXIsIGJvdGggY2FsbGJhY2tzIHdlcmUg Y2hhbmdlZCB0byBvY2N1ciB3aXRoaW4gYW4KPiBpbnZhbGlkYXRlX3JhbmdlX3N0YXJ0L2VuZCgp IGJsb2NrLgo+Cj4gSW4gdGhlIGNhc2Ugb2YgLmNoYW5nZV9wdGUoKSwgY29tbWl0IDZiZGI5MTNm MGE3MCAoIm1tOiB3cmFwIGNhbGxzIHRvCj4gc2V0X3B0ZV9hdF9ub3RpZnkgd2l0aCBpbnZhbGlk YXRlX3JhbmdlX3N0YXJ0IGFuZCBpbnZhbGlkYXRlX3JhbmdlX2VuZCIsCj4gMjAxMi0xMC0wOSkg ZGlkIHNvIHRvIHJlbW92ZSB0aGUgZmFsbGJhY2sgZnJvbSAuaW52YWxpZGF0ZV9wYWdlKCkgdG8K PiAuY2hhbmdlX3B0ZSgpIGFuZCBhbGxvdyBzbGVlcGFibGUgLmludmFsaWRhdGVfcGFnZSgpIGhv b2tzLgo+Cj4gVGhpcyBob3dldmVyIG1hZGUgS1ZNJ3MgdXNhZ2Ugb2YgdGhlIC5jaGFuZ2VfcHRl KCkgY2FsbGJhY2sgY29tcGxldGVseQo+IG1vb3QsIGJlY2F1c2UgS1ZNIHVubWFwcyB0aGUgc1BU RXMgZHVyaW5nIC5pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KCkKPiBhbmQgdGhlcmVmb3JlIC5jaGFu Z2VfcHRlKCkgaGFzIG5vIGhvcGUgb2YgZmluZGluZyBhIHNQVEUgdG8gY2hhbmdlLgo+IERyb3Ag dGhlIGdlbmVyaWMgS1ZNIGNvZGUgdGhhdCBkaXNwYXRjaGVzIHRvIGt2bV9zZXRfc3B0ZV9nZm4o KSwgYXMKPiB3ZWxsIGFzIGFsbCB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGltcGxlbWVudGF0 aW9ucy4KPgo+IFNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5j b20+CgpGb3IgS1ZNIFJJU0MtVjoKQWNrZWQtYnk6IEFudXAgUGF0ZWwgPGFudXBAYnJhaW5mYXVs dC5vcmc+CgpSZWdhcmRzLApBbnVwCgo+IC0tLQo+ICBhcmNoL2FybTY0L2t2bS9tbXUuYyAgICAg ICAgICAgICAgICAgIHwgMzQgLS0tLS0tLS0tLS0tLS0tLS0KPiAgYXJjaC9sb29uZ2FyY2gvaW5j bHVkZS9hc20va3ZtX2hvc3QuaCB8ICAxIC0KPiAgYXJjaC9sb29uZ2FyY2gva3ZtL21tdS5jICAg ICAgICAgICAgICB8IDMyIC0tLS0tLS0tLS0tLS0tLS0KPiAgYXJjaC9taXBzL2t2bS9tbXUuYyAg ICAgICAgICAgICAgICAgICB8IDMwIC0tLS0tLS0tLS0tLS0tLQo+ICBhcmNoL3Bvd2VycGMvaW5j bHVkZS9hc20va3ZtX3BwYy5oICAgIHwgIDEgLQo+ICBhcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5j ICAgICAgICAgICAgIHwgIDUgLS0tCj4gIGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmggICAgICAg ICAgICAgfCAgMSAtCj4gIGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9odi5jICAgfCAx MiAtLS0tLS0KPiAgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYyAgICAgICAgICB8ICAxIC0K PiAgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYyAgICAgICAgICB8ICA3IC0tLS0KPiAgYXJj aC9wb3dlcnBjL2t2bS9lNTAwX21tdV9ob3N0LmMgICAgICB8ICA2IC0tLQo+ICBhcmNoL3Jpc2N2 L2t2bS9tbXUuYyAgICAgICAgICAgICAgICAgIHwgMjAgLS0tLS0tLS0tLQo+ICBhcmNoL3g4Ni9r dm0vbW11L21tdS5jICAgICAgICAgICAgICAgIHwgNTQgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4gIGFyY2gveDg2L2t2bS9tbXUvc3B0ZS5jICAgICAgICAgICAgICAgfCAxNiAtLS0tLS0t LQo+ICBhcmNoL3g4Ni9rdm0vbW11L3NwdGUuaCAgICAgICAgICAgICAgIHwgIDIgLQo+ICBhcmNo L3g4Ni9rdm0vbW11L3RkcF9tbXUuYyAgICAgICAgICAgIHwgNDYgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiAgYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmggICAgICAgICAgICB8ICAxIC0KPiAg aW5jbHVkZS9saW51eC9rdm1faG9zdC5oICAgICAgICAgICAgICB8ICAyIC0KPiAgaW5jbHVkZS90 cmFjZS9ldmVudHMva3ZtLmggICAgICAgICAgICB8IDE1IC0tLS0tLS0tCj4gIHZpcnQva3ZtL2t2 bV9tYWluLmMgICAgICAgICAgICAgICAgICAgfCA0MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAg MjAgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzMjcgZGVsZXRpb25zKC0pCj4KPiBk aWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vbW11LmMgYi9hcmNoL2FybTY0L2t2bS9tbXUuYwo+ IGluZGV4IGRjMDRiYzc2Nzg2NS4uZmYxNzg0OWJlOWY0IDEwMDY0NAo+IC0tLSBhL2FyY2gvYXJt NjQva3ZtL21tdS5jCj4gKysrIGIvYXJjaC9hcm02NC9rdm0vbW11LmMKPiBAQCAtMTc2OCw0MCAr MTc2OCw2IEBAIGJvb2wga3ZtX3VubWFwX2dmbl9yYW5nZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVj dCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSkKPiAgICAgICAgIHJldHVybiBmYWxzZTsKPiAgfQo+Cj4g LWJvb2wga3ZtX3NldF9zcHRlX2dmbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3Jh bmdlICpyYW5nZSkKPiAtewo+IC0gICAgICAga3ZtX3Bmbl90IHBmbiA9IHB0ZV9wZm4ocmFuZ2Ut PmFyZy5wdGUpOwo+IC0KPiAtICAgICAgIGlmICgha3ZtLT5hcmNoLm1tdS5wZ3QpCj4gLSAgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKPiAtCj4gLSAgICAgICBXQVJOX09OKHJhbmdlLT5lbmQg LSByYW5nZS0+c3RhcnQgIT0gMSk7Cj4gLQo+IC0gICAgICAgLyoKPiAtICAgICAgICAqIElmIHRo ZSBwYWdlIGlzbid0IHRhZ2dlZCwgZGVmZXIgdG8gdXNlcl9tZW1fYWJvcnQoKSBmb3Igc2FuaXRp c2luZwo+IC0gICAgICAgICogdGhlIE1URSB0YWdzLiBUaGUgUzIgcHRlIHNob3VsZCBoYXZlIGJl ZW4gdW5tYXBwZWQgYnkKPiAtICAgICAgICAqIG1tdV9ub3RpZmllcl9pbnZhbGlkYXRlX3Jhbmdl X2VuZCgpLgo+IC0gICAgICAgICovCj4gLSAgICAgICBpZiAoa3ZtX2hhc19tdGUoa3ZtKSAmJiAh cGFnZV9tdGVfdGFnZ2VkKHBmbl90b19wYWdlKHBmbikpKQo+IC0gICAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7Cj4gLQo+IC0gICAgICAgLyoKPiAtICAgICAgICAqIFdlJ3ZlIG1vdmVkIGEgcGFn ZSBhcm91bmQsIHByb2JhYmx5IHRocm91Z2ggQ29XLCBzbyBsZXQncyB0cmVhdAo+IC0gICAgICAg ICogaXQganVzdCBsaWtlIGEgdHJhbnNsYXRpb24gZmF1bHQgYW5kIHRoZSBtYXAgaGFuZGxlciB3 aWxsIGNsZWFuCj4gLSAgICAgICAgKiB0aGUgY2FjaGUgdG8gdGhlIFBvQy4KPiAtICAgICAgICAq Cj4gLSAgICAgICAgKiBUaGUgTU1VIG5vdGlmaWVycyB3aWxsIGhhdmUgdW5tYXBwZWQgYSBodWdl IFBNRCBiZWZvcmUgY2FsbGluZwo+IC0gICAgICAgICogLT5jaGFuZ2VfcHRlKCkgKHdoaWNoIGlu IHR1cm4gY2FsbHMga3ZtX3NldF9zcHRlX2dmbigpKSBhbmQKPiAtICAgICAgICAqIHRoZXJlZm9y ZSB3ZSBuZXZlciBuZWVkIHRvIGNsZWFyIG91dCBhIGh1Z2UgUE1EIHRocm91Z2ggdGhpcwo+IC0g ICAgICAgICogY2FsbGluZyBwYXRoIGFuZCBhIG1lbWNhY2hlIGlzIG5vdCByZXF1aXJlZC4KPiAt ICAgICAgICAqLwo+IC0gICAgICAga3ZtX3BndGFibGVfc3RhZ2UyX21hcChrdm0tPmFyY2gubW11 LnBndCwgcmFuZ2UtPnN0YXJ0IDw8IFBBR0VfU0hJRlQsCj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBBR0VfU0laRSwgX19wZm5fdG9fcGh5cyhwZm4pLAo+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBLVk1fUEdUQUJMRV9QUk9UX1IsIE5VTEwsIDApOwo+IC0KPiAtICAg ICAgIHJldHVybiBmYWxzZTsKPiAtfQo+IC0KPiAgYm9vbCBrdm1fYWdlX2dmbihzdHJ1Y3Qga3Zt ICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSkKPiAgewo+ICAgICAgICAgdTY0IHNp emUgPSAocmFuZ2UtPmVuZCAtIHJhbmdlLT5zdGFydCkgPDwgUEFHRV9TSElGVDsKPiBkaWZmIC0t Z2l0IGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvbG9vbmdh cmNoL2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKPiBpbmRleCAyZDYyZjdiMGQzNzcuLjY5MzA1NDQx ZjQwZCAxMDA2NDQKPiAtLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9rdm1faG9zdC5o Cj4gKysrIGIvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAo+IEBAIC0yMDMs NyArMjAzLDYgQEAgdm9pZCBrdm1fZmx1c2hfdGxiX2FsbCh2b2lkKTsKPiAgdm9pZCBrdm1fZmx1 c2hfdGxiX2dwYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgZ3BhKTsKPiAg aW50IGt2bV9oYW5kbGVfbW1fZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBs b25nIGJhZHYsIGJvb2wgd3JpdGUpOwo+Cj4gLXZvaWQga3ZtX3NldF9zcHRlX2h2YShzdHJ1Y3Qg a3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgaHZhLCBwdGVfdCBwdGUpOwo+ICBpbnQga3ZtX3VubWFw X2h2YV9yYW5nZShzdHJ1Y3Qga3ZtICprdm0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVk IGxvbmcgZW5kLCBib29sIGJsb2NrYWJsZSk7Cj4gIGludCBrdm1fYWdlX2h2YShzdHJ1Y3Qga3Zt ICprdm0sIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTsKPiAgaW50IGt2 bV90ZXN0X2FnZV9odmEoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBsb25nIGh2YSk7Cj4gZGlm ZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS9tbXUuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9t bXUuYwo+IGluZGV4IGE1NTZjZmYzNTc0MC4uOTg4ODNhYTIzYWI4IDEwMDY0NAo+IC0tLSBhL2Fy Y2gvbG9vbmdhcmNoL2t2bS9tbXUuYwo+ICsrKyBiL2FyY2gvbG9vbmdhcmNoL2t2bS9tbXUuYwo+ IEBAIC00OTQsMzggKzQ5NCw2IEBAIGJvb2wga3ZtX3VubWFwX2dmbl9yYW5nZShzdHJ1Y3Qga3Zt ICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSkKPiAgICAgICAgICAgICAgICAgICAg ICAgICByYW5nZS0+ZW5kIDw8IFBBR0VfU0hJRlQsICZjdHgpOwo+ICB9Cj4KPiAtYm9vbCBrdm1f c2V0X3NwdGVfZ2ZuKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9nZm5fcmFuZ2UgKnJhbmdl KQo+IC17Cj4gLSAgICAgICB1bnNpZ25lZCBsb25nIHByb3RfYml0czsKPiAtICAgICAgIGt2bV9w dGVfdCAqcHRlcDsKPiAtICAgICAgIGt2bV9wZm5fdCBwZm4gPSBwdGVfcGZuKHJhbmdlLT5hcmcu cHRlKTsKPiAtICAgICAgIGdwYV90IGdwYSA9IHJhbmdlLT5zdGFydCA8PCBQQUdFX1NISUZUOwo+ IC0KPiAtICAgICAgIHB0ZXAgPSBrdm1fcG9wdWxhdGVfZ3BhKGt2bSwgTlVMTCwgZ3BhLCAwKTsK PiAtICAgICAgIGlmICghcHRlcCkKPiAtICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+IC0K PiAtICAgICAgIC8qIFJlcGxhY2luZyBhbiBhYnNlbnQgb3Igb2xkIHBhZ2UgZG9lc24ndCBuZWVk IGZsdXNoZXMgKi8KPiAtICAgICAgIGlmICgha3ZtX3B0ZV9wcmVzZW50KE5VTEwsIHB0ZXApIHx8 ICFrdm1fcHRlX3lvdW5nKCpwdGVwKSkgewo+IC0gICAgICAgICAgICAgICBrdm1fc2V0X3B0ZShw dGVwLCAwKTsKPiAtICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+IC0gICAgICAgfQo+IC0K PiAtICAgICAgIC8qIEZpbGwgbmV3IHB0ZSBpZiB3cml0ZSBwcm90ZWN0ZWQgb3IgcGFnZSBtaWdy YXRlZCAqLwo+IC0gICAgICAgcHJvdF9iaXRzID0gX1BBR0VfUFJFU0VOVCB8IF9fUkVBREFCTEU7 Cj4gLSAgICAgICBwcm90X2JpdHMgfD0gX0NBQ0hFX01BU0sgJiBwdGVfdmFsKHJhbmdlLT5hcmcu cHRlKTsKPiAtCj4gLSAgICAgICAvKgo+IC0gICAgICAgICogU2V0IF9QQUdFX1dSSVRFIG9yIF9Q QUdFX0RJUlRZIGlmZiBvbGQgYW5kIG5ldyBwdGUgYm90aCBzdXBwb3J0Cj4gLSAgICAgICAgKiBf UEFHRV9XUklURSBmb3IgbWFwX3BhZ2VfZmFzdCBpZiBuZXh0IHBhZ2Ugd3JpdGUgZmF1bHQKPiAt ICAgICAgICAqIF9QQUdFX0RJUlRZIHNpbmNlIGdwYSBoYXMgYWxyZWFkeSByZWNvcmRlZCBhcyBk aXJ0eSBwYWdlCj4gLSAgICAgICAgKi8KPiAtICAgICAgIHByb3RfYml0cyB8PSBfX1dSSVRFQUJM RSAmICpwdGVwICYgcHRlX3ZhbChyYW5nZS0+YXJnLnB0ZSk7Cj4gLSAgICAgICBrdm1fc2V0X3B0 ZShwdGVwLCBrdm1fcGZuX3B0ZShwZm4sIF9fcGdwcm90KHByb3RfYml0cykpKTsKPiAtCj4gLSAg ICAgICByZXR1cm4gdHJ1ZTsKPiAtfQo+IC0KPiAgYm9vbCBrdm1fYWdlX2dmbihzdHJ1Y3Qga3Zt ICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSkKPiAgewo+ICAgICAgICAga3ZtX3B0 d19jdHggY3R4Owo+IGRpZmYgLS1naXQgYS9hcmNoL21pcHMva3ZtL21tdS5jIGIvYXJjaC9taXBz L2t2bS9tbXUuYwo+IGluZGV4IDQ2N2VlNmI5NWFlMS4uYzE3MTU3ZTcwMGMwIDEwMDY0NAo+IC0t LSBhL2FyY2gvbWlwcy9rdm0vbW11LmMKPiArKysgYi9hcmNoL21pcHMva3ZtL21tdS5jCj4gQEAg LTQ0NCwzNiArNDQ0LDYgQEAgYm9vbCBrdm1fdW5tYXBfZ2ZuX3JhbmdlKHN0cnVjdCBrdm0gKmt2 bSwgc3RydWN0IGt2bV9nZm5fcmFuZ2UgKnJhbmdlKQo+ICAgICAgICAgcmV0dXJuIHRydWU7Cj4g IH0KPgo+IC1ib29sIGt2bV9zZXRfc3B0ZV9nZm4oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3Zt X2dmbl9yYW5nZSAqcmFuZ2UpCj4gLXsKPiAtICAgICAgIGdwYV90IGdwYSA9IHJhbmdlLT5zdGFy dCA8PCBQQUdFX1NISUZUOwo+IC0gICAgICAgcHRlX3QgaHZhX3B0ZSA9IHJhbmdlLT5hcmcucHRl Owo+IC0gICAgICAgcHRlX3QgKmdwYV9wdGUgPSBrdm1fbWlwc19wdGVfZm9yX2dwYShrdm0sIE5V TEwsIGdwYSk7Cj4gLSAgICAgICBwdGVfdCBvbGRfcHRlOwo+IC0KPiAtICAgICAgIGlmICghZ3Bh X3B0ZSkKPiAtICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+IC0KPiAtICAgICAgIC8qIE1h cHBpbmcgbWF5IG5lZWQgYWRqdXN0aW5nIGRlcGVuZGluZyBvbiBtZW1zbG90IGZsYWdzICovCj4g LSAgICAgICBvbGRfcHRlID0gKmdwYV9wdGU7Cj4gLSAgICAgICBpZiAocmFuZ2UtPnNsb3QtPmZs YWdzICYgS1ZNX01FTV9MT0dfRElSVFlfUEFHRVMgJiYgIXB0ZV9kaXJ0eShvbGRfcHRlKSkKPiAt ICAgICAgICAgICAgICAgaHZhX3B0ZSA9IHB0ZV9ta2NsZWFuKGh2YV9wdGUpOwo+IC0gICAgICAg ZWxzZSBpZiAocmFuZ2UtPnNsb3QtPmZsYWdzICYgS1ZNX01FTV9SRUFET05MWSkKPiAtICAgICAg ICAgICAgICAgaHZhX3B0ZSA9IHB0ZV93cnByb3RlY3QoaHZhX3B0ZSk7Cj4gLQo+IC0gICAgICAg c2V0X3B0ZShncGFfcHRlLCBodmFfcHRlKTsKPiAtCj4gLSAgICAgICAvKiBSZXBsYWNpbmcgYW4g YWJzZW50IG9yIG9sZCBwYWdlIGRvZXNuJ3QgbmVlZCBmbHVzaGVzICovCj4gLSAgICAgICBpZiAo IXB0ZV9wcmVzZW50KG9sZF9wdGUpIHx8ICFwdGVfeW91bmcob2xkX3B0ZSkpCj4gLSAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKPiAtCj4gLSAgICAgICAvKiBQYWdlcyBzd2FwcGVkLCBhZ2Vk LCBtb3ZlZCwgb3IgY2xlYW5lZCByZXF1aXJlIGZsdXNoZXMgKi8KPiAtICAgICAgIHJldHVybiAh cHRlX3ByZXNlbnQoaHZhX3B0ZSkgfHwKPiAtICAgICAgICAgICAgICAhcHRlX3lvdW5nKGh2YV9w dGUpIHx8Cj4gLSAgICAgICAgICAgICAgcHRlX3BmbihvbGRfcHRlKSAhPSBwdGVfcGZuKGh2YV9w dGUpIHx8Cj4gLSAgICAgICAgICAgICAgKHB0ZV9kaXJ0eShvbGRfcHRlKSAmJiAhcHRlX2RpcnR5 KGh2YV9wdGUpKTsKPiAtfQo+IC0KPiAgYm9vbCBrdm1fYWdlX2dmbihzdHJ1Y3Qga3ZtICprdm0s IHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSkKPiAgewo+ICAgICAgICAgcmV0dXJuIGt2bV9t aXBzX21rb2xkX2dwYV9wdChrdm0sIHJhbmdlLT5zdGFydCwgcmFuZ2UtPmVuZCk7Cj4gZGlmZiAt LWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmggYi9hcmNoL3Bvd2VycGMv aW5jbHVkZS9hc20va3ZtX3BwYy5oCj4gaW5kZXggMzI4MTIxNTA5N2NjLi5jYTM4MjlkNDdhYjcg MTAwNjQ0Cj4gLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wcGMuaAo+ICsrKyBi L2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rdm1fcHBjLmgKPiBAQCAtMjg3LDcgKzI4Nyw2IEBA IHN0cnVjdCBrdm1wcGNfb3BzIHsKPiAgICAgICAgIGJvb2wgKCp1bm1hcF9nZm5fcmFuZ2UpKHN0 cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9nZm5fcmFuZ2UgKnJhbmdlKTsKPiAgICAgICAgIGJv b2wgKCphZ2VfZ2ZuKShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5n ZSk7Cj4gICAgICAgICBib29sICgqdGVzdF9hZ2VfZ2ZuKShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVj dCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSk7Cj4gLSAgICAgICBib29sICgqc2V0X3NwdGVfZ2ZuKShz dHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSk7Cj4gICAgICAgICB2 b2lkICgqZnJlZV9tZW1zbG90KShzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90KTsKPiAgICAg ICAgIGludCAoKmluaXRfdm0pKHN0cnVjdCBrdm0gKmt2bSk7Cj4gICAgICAgICB2b2lkICgqZGVz dHJveV92bSkoc3RydWN0IGt2bSAqa3ZtKTsKPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2 bS9ib29rM3MuYyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzLmMKPiBpbmRleCA4YWNlYzE0NDEy MGUuLjBkMDYyNDA4OGU2YiAxMDA2NDQKPiAtLS0gYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5j Cj4gKysrIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuYwo+IEBAIC04OTksMTEgKzg5OSw2IEBA IGJvb2wga3ZtX3Rlc3RfYWdlX2dmbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3Jh bmdlICpyYW5nZSkKPiAgICAgICAgIHJldHVybiBrdm0tPmFyY2gua3ZtX29wcy0+dGVzdF9hZ2Vf Z2ZuKGt2bSwgcmFuZ2UpOwo+ICB9Cj4KPiAtYm9vbCBrdm1fc2V0X3NwdGVfZ2ZuKHN0cnVjdCBr dm0gKmt2bSwgc3RydWN0IGt2bV9nZm5fcmFuZ2UgKnJhbmdlKQo+IC17Cj4gLSAgICAgICByZXR1 cm4ga3ZtLT5hcmNoLmt2bV9vcHMtPnNldF9zcHRlX2dmbihrdm0sIHJhbmdlKTsKPiAtfQo+IC0K PiAgaW50IGt2bXBwY19jb3JlX2luaXRfdm0oc3RydWN0IGt2bSAqa3ZtKQo+ICB7Cj4KPiBkaWZm IC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3MuaCBiL2FyY2gvcG93ZXJwYy9rdm0vYm9v azNzLmgKPiBpbmRleCA1ODM5MWI0YjMyZWQuLjRhYTJhYjg5YWZiYyAxMDA2NDQKPiAtLS0gYS9h cmNoL3Bvd2VycGMva3ZtL2Jvb2szcy5oCj4gKysrIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3Mu aAo+IEBAIC0xMiw3ICsxMiw2IEBAIGV4dGVybiB2b2lkIGt2bXBwY19jb3JlX2ZsdXNoX21lbXNs b3RfaHYoc3RydWN0IGt2bSAqa3ZtLAo+ICBleHRlcm4gYm9vbCBrdm1fdW5tYXBfZ2ZuX3Jhbmdl X2h2KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9nZm5fcmFuZ2UgKnJhbmdlKTsKPiAgZXh0 ZXJuIGJvb2wga3ZtX2FnZV9nZm5faHYoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2dmbl9y YW5nZSAqcmFuZ2UpOwo+ICBleHRlcm4gYm9vbCBrdm1fdGVzdF9hZ2VfZ2ZuX2h2KHN0cnVjdCBr dm0gKmt2bSwgc3RydWN0IGt2bV9nZm5fcmFuZ2UgKnJhbmdlKTsKPiAtZXh0ZXJuIGJvb2wga3Zt X3NldF9zcHRlX2dmbl9odihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpy YW5nZSk7Cj4KPiAgZXh0ZXJuIGludCBrdm1wcGNfbW11X2luaXRfcHIoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1KTsKPiAgZXh0ZXJuIHZvaWQga3ZtcHBjX21tdV9kZXN0cm95X3ByKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSk7Cj4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21t dV9odi5jIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfNjRfbW11X2h2LmMKPiBpbmRleCAyYjFm MGNkZDhjMTguLjFiNTFiMWM0NzEzYiAxMDA2NDQKPiAtLS0gYS9hcmNoL3Bvd2VycGMva3ZtL2Jv b2szc182NF9tbXVfaHYuYwo+ICsrKyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzXzY0X21tdV9o di5jCj4gQEAgLTEwMTAsMTggKzEwMTAsNiBAQCBib29sIGt2bV90ZXN0X2FnZV9nZm5faHYoc3Ry dWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2dmbl9yYW5nZSAqcmFuZ2UpCj4gICAgICAgICAgICAg ICAgIHJldHVybiBrdm1fdGVzdF9hZ2Vfcm1hcHAoa3ZtLCByYW5nZS0+c2xvdCwgcmFuZ2UtPnN0 YXJ0KTsKPiAgfQo+Cj4gLWJvb2wga3ZtX3NldF9zcHRlX2dmbl9odihzdHJ1Y3Qga3ZtICprdm0s IHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSkKPiAtewo+IC0gICAgICAgV0FSTl9PTihyYW5n ZS0+c3RhcnQgKyAxICE9IHJhbmdlLT5lbmQpOwo+IC0KPiAtICAgICAgIGlmIChrdm1faXNfcmFk aXgoa3ZtKSkKPiAtICAgICAgICAgICAgICAga3ZtX3VubWFwX3JhZGl4KGt2bSwgcmFuZ2UtPnNs b3QsIHJhbmdlLT5zdGFydCk7Cj4gLSAgICAgICBlbHNlCj4gLSAgICAgICAgICAgICAgIGt2bV91 bm1hcF9ybWFwcChrdm0sIHJhbmdlLT5zbG90LCByYW5nZS0+c3RhcnQpOwo+IC0KPiAtICAgICAg IHJldHVybiBmYWxzZTsKPiAtfQo+IC0KPiAgc3RhdGljIGludCB2Y3B1c19ydW5uaW5nKHN0cnVj dCBrdm0gKmt2bSkKPiAgewo+ICAgICAgICAgcmV0dXJuIGF0b21pY19yZWFkKCZrdm0tPmFyY2gu dmNwdXNfcnVubmluZykgIT0gMDsKPiBkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2t2bS9ib29r M3NfaHYuYyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2LmMKPiBpbmRleCA4ZTg2ZWI1Nzdl YjguLjM1Y2IwMTRhMGM1MSAxMDA2NDQKPiAtLS0gYS9hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19o di5jCj4gKysrIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHYuYwo+IEBAIC02MzY0LDcgKzYz NjQsNiBAQCBzdGF0aWMgc3RydWN0IGt2bXBwY19vcHMga3ZtX29wc19odiA9IHsKPiAgICAgICAg IC51bm1hcF9nZm5fcmFuZ2UgPSBrdm1fdW5tYXBfZ2ZuX3JhbmdlX2h2LAo+ICAgICAgICAgLmFn ZV9nZm4gPSBrdm1fYWdlX2dmbl9odiwKPiAgICAgICAgIC50ZXN0X2FnZV9nZm4gPSBrdm1fdGVz dF9hZ2VfZ2ZuX2h2LAo+IC0gICAgICAgLnNldF9zcHRlX2dmbiA9IGt2bV9zZXRfc3B0ZV9nZm5f aHYsCj4gICAgICAgICAuZnJlZV9tZW1zbG90ID0ga3ZtcHBjX2NvcmVfZnJlZV9tZW1zbG90X2h2 LAo+ICAgICAgICAgLmluaXRfdm0gPSAga3ZtcHBjX2NvcmVfaW5pdF92bV9odiwKPiAgICAgICAg IC5kZXN0cm95X3ZtID0ga3ZtcHBjX2NvcmVfZGVzdHJveV92bV9odiwKPiBkaWZmIC0tZ2l0IGEv YXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfcHIuYyBiL2FyY2gvcG93ZXJwYy9rdm0vYm9vazNzX3By LmMKPiBpbmRleCA1YjkyNjE5YTA1ZmQuLmE3ZDcxMzdlYTBjOCAxMDA2NDQKPiAtLS0gYS9hcmNo L3Bvd2VycGMva3ZtL2Jvb2szc19wci5jCj4gKysrIGIvYXJjaC9wb3dlcnBjL2t2bS9ib29rM3Nf cHIuYwo+IEBAIC00NjEsMTIgKzQ2MSw2IEBAIHN0YXRpYyBib29sIGt2bV90ZXN0X2FnZV9nZm5f cHIoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2dmbl9yYW5nZSAqcmFuZ2UpCj4gICAgICAg ICByZXR1cm4gZmFsc2U7Cj4gIH0KPgo+IC1zdGF0aWMgYm9vbCBrdm1fc2V0X3NwdGVfZ2ZuX3By KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9nZm5fcmFuZ2UgKnJhbmdlKQo+IC17Cj4gLSAg ICAgICAvKiBUaGUgcGFnZSB3aWxsIGdldCByZW1hcHBlZCBwcm9wZXJseSBvbiBpdHMgbmV4dCBm YXVsdCAqLwo+IC0gICAgICAgcmV0dXJuIGRvX2t2bV91bm1hcF9nZm4oa3ZtLCByYW5nZSk7Cj4g LX0KPiAtCj4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KPgo+ ICBzdGF0aWMgdm9pZCBrdm1wcGNfc2V0X21zcl9wcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2 NCBtc3IpCj4gQEAgLTIwNzEsNyArMjA2NSw2IEBAIHN0YXRpYyBzdHJ1Y3Qga3ZtcHBjX29wcyBr dm1fb3BzX3ByID0gewo+ICAgICAgICAgLnVubWFwX2dmbl9yYW5nZSA9IGt2bV91bm1hcF9nZm5f cmFuZ2VfcHIsCj4gICAgICAgICAuYWdlX2dmbiAgPSBrdm1fYWdlX2dmbl9wciwKPiAgICAgICAg IC50ZXN0X2FnZV9nZm4gPSBrdm1fdGVzdF9hZ2VfZ2ZuX3ByLAo+IC0gICAgICAgLnNldF9zcHRl X2dmbiA9IGt2bV9zZXRfc3B0ZV9nZm5fcHIsCj4gICAgICAgICAuZnJlZV9tZW1zbG90ID0ga3Zt cHBjX2NvcmVfZnJlZV9tZW1zbG90X3ByLAo+ICAgICAgICAgLmluaXRfdm0gPSBrdm1wcGNfY29y ZV9pbml0X3ZtX3ByLAo+ICAgICAgICAgLmRlc3Ryb3lfdm0gPSBrdm1wcGNfY29yZV9kZXN0cm95 X3ZtX3ByLAo+IGRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva3ZtL2U1MDBfbW11X2hvc3QuYyBi L2FyY2gvcG93ZXJwYy9rdm0vZTUwMF9tbXVfaG9zdC5jCj4gaW5kZXggY2NiOGYxNmZmZTQxLi5j NjY0ZmRlYzc1YjEgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9wb3dlcnBjL2t2bS9lNTAwX21tdV9ob3N0 LmMKPiArKysgYi9hcmNoL3Bvd2VycGMva3ZtL2U1MDBfbW11X2hvc3QuYwo+IEBAIC03NDcsMTIg Kzc0Nyw2IEBAIGJvb2wga3ZtX3Rlc3RfYWdlX2dmbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBr dm1fZ2ZuX3JhbmdlICpyYW5nZSkKPiAgICAgICAgIHJldHVybiBmYWxzZTsKPiAgfQo+Cj4gLWJv b2wga3ZtX3NldF9zcHRlX2dmbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3Jhbmdl ICpyYW5nZSkKPiAtewo+IC0gICAgICAgLyogVGhlIHBhZ2Ugd2lsbCBnZXQgcmVtYXBwZWQgcHJv cGVybHkgb24gaXRzIG5leHQgZmF1bHQgKi8KPiAtICAgICAgIHJldHVybiBrdm1fZTUwMF9tbXVf dW5tYXBfZ2ZuKGt2bSwgcmFuZ2UpOwo+IC19Cj4gLQo+ICAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCj4KPiAgaW50IGU1MDBfbW11X2hvc3RfaW5pdChzdHJ1Y3Qg a3ZtcHBjX3ZjcHVfZTUwMCAqdmNwdV9lNTAwKQo+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2t2 bS9tbXUuYyBiL2FyY2gvcmlzY3Yva3ZtL21tdS5jCj4gaW5kZXggYTllMmZkNzI0NWUxLi5iNjM2 NTBmOWI5NjYgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9yaXNjdi9rdm0vbW11LmMKPiArKysgYi9hcmNo L3Jpc2N2L2t2bS9tbXUuYwo+IEBAIC01NTAsMjYgKzU1MCw2IEBAIGJvb2wga3ZtX3VubWFwX2dm bl9yYW5nZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSkKPiAg ICAgICAgIHJldHVybiBmYWxzZTsKPiAgfQo+Cj4gLWJvb2wga3ZtX3NldF9zcHRlX2dmbihzdHJ1 Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSkKPiAtewo+IC0gICAgICAg aW50IHJldDsKPiAtICAgICAgIGt2bV9wZm5fdCBwZm4gPSBwdGVfcGZuKHJhbmdlLT5hcmcucHRl KTsKPiAtCj4gLSAgICAgICBpZiAoIWt2bS0+YXJjaC5wZ2QpCj4gLSAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKPiAtCj4gLSAgICAgICBXQVJOX09OKHJhbmdlLT5lbmQgLSByYW5nZS0+c3Rh cnQgIT0gMSk7Cj4gLQo+IC0gICAgICAgcmV0ID0gZ3N0YWdlX21hcF9wYWdlKGt2bSwgTlVMTCwg cmFuZ2UtPnN0YXJ0IDw8IFBBR0VfU0hJRlQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX19wZm5fdG9fcGh5cyhwZm4pLCBQQUdFX1NJWkUsIHRydWUsIHRydWUpOwo+IC0gICAgICAg aWYgKHJldCkgewo+IC0gICAgICAgICAgICAgICBrdm1fZGVidWcoIkZhaWxlZCB0byBtYXAgRy1z dGFnZSBwYWdlIChlcnJvciAlZClcbiIsIHJldCk7Cj4gLSAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOwo+IC0gICAgICAgfQo+IC0KPiAtICAgICAgIHJldHVybiBmYWxzZTsKPiAtfQo+IC0KPiAg Ym9vbCBrdm1fYWdlX2dmbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpy YW5nZSkKPiAgewo+ICAgICAgICAgcHRlX3QgKnB0ZXA7Cj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2 L2t2bS9tbXUvbW11LmMgYi9hcmNoL3g4Ni9rdm0vbW11L21tdS5jCj4gaW5kZXggMDA0OWQ0OWFh OTEzLi44N2JhMmE5ZGExOTYgMTAwNjQ0Cj4gLS0tIGEvYXJjaC94ODYva3ZtL21tdS9tbXUuYwo+ ICsrKyBiL2FyY2gveDg2L2t2bS9tbXUvbW11LmMKPiBAQCAtNDMyLDggKzQzMiw4IEBAIHN0YXRp YyB1NjQgX191cGRhdGVfY2xlYXJfc3B0ZV9zbG93KHU2NCAqc3B0ZXAsIHU2NCBzcHRlKQo+ICAg KiBUaGUgaWRlYSB1c2luZyB0aGUgbGlnaHQgd2F5IGdldCB0aGUgc3B0ZSBvbiB4ODZfMzIgZ3Vl c3QgaXMgZnJvbQo+ICAgKiBndXBfZ2V0X3B0ZSAobW0vZ3VwLmMpLgo+ICAgKgo+IC0gKiBBbiBz cHRlIHRsYiBmbHVzaCBtYXkgYmUgcGVuZGluZywgYmVjYXVzZSBrdm1fc2V0X3B0ZV9ybWFwCj4g LSAqIGNvYWxlc2NlcyB0aGVtIGFuZCB3ZSBhcmUgcnVubmluZyBvdXQgb2YgdGhlIE1NVSBsb2Nr LiAgVGhlcmVmb3JlCj4gKyAqIEFuIHNwdGUgdGxiIGZsdXNoIG1heSBiZSBwZW5kaW5nLCBiZWNh dXNlIHRoZXkgYXJlIGNvYWxlc2NlZCBhbmQKPiArICogd2UgYXJlIHJ1bm5pbmcgb3V0IG9mIHRo ZSBNTVUgbG9jay4gIFRoZXJlZm9yZQo+ICAgKiB3ZSBuZWVkIHRvIHByb3RlY3QgYWdhaW5zdCBp bi1wcm9ncmVzcyB1cGRhdGVzIG9mIHRoZSBzcHRlLgo+ICAgKgo+ICAgKiBSZWFkaW5nIHRoZSBz cHRlIHdoaWxlIGFuIHVwZGF0ZSBpcyBpbiBwcm9ncmVzcyBtYXkgZ2V0IHRoZSBvbGQgdmFsdWUK PiBAQCAtMTQ1NCw0MyArMTQ1NCw2IEBAIHN0YXRpYyBib29sIGt2bV96YXBfcm1hcChzdHJ1Y3Qg a3ZtICprdm0sIHN0cnVjdCBrdm1fcm1hcF9oZWFkICpybWFwX2hlYWQsCj4gICAgICAgICByZXR1 cm4gX19rdm1femFwX3JtYXAoa3ZtLCBybWFwX2hlYWQsIHNsb3QpOwo+ICB9Cj4KPiAtc3RhdGlj IGJvb2wga3ZtX3NldF9wdGVfcm1hcChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fcm1hcF9o ZWFkICpybWFwX2hlYWQsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga3Zt X21lbW9yeV9zbG90ICpzbG90LCBnZm5fdCBnZm4sIGludCBsZXZlbCwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHB0ZV90IHB0ZSkKPiAtewo+IC0gICAgICAgdTY0ICpzcHRlcDsKPiAt ICAgICAgIHN0cnVjdCBybWFwX2l0ZXJhdG9yIGl0ZXI7Cj4gLSAgICAgICBib29sIG5lZWRfZmx1 c2ggPSBmYWxzZTsKPiAtICAgICAgIHU2NCBuZXdfc3B0ZTsKPiAtICAgICAgIGt2bV9wZm5fdCBu ZXdfcGZuOwo+IC0KPiAtICAgICAgIFdBUk5fT05fT05DRShwdGVfaHVnZShwdGUpKTsKPiAtICAg ICAgIG5ld19wZm4gPSBwdGVfcGZuKHB0ZSk7Cj4gLQo+IC1yZXN0YXJ0Ogo+IC0gICAgICAgZm9y X2VhY2hfcm1hcF9zcHRlKHJtYXBfaGVhZCwgJml0ZXIsIHNwdGVwKSB7Cj4gLSAgICAgICAgICAg ICAgIG5lZWRfZmx1c2ggPSB0cnVlOwo+IC0KPiAtICAgICAgICAgICAgICAgaWYgKHB0ZV93cml0 ZShwdGUpKSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAga3ZtX3phcF9vbmVfcm1hcF9zcHRl KGt2bSwgcm1hcF9oZWFkLCBzcHRlcCk7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgZ290byBy ZXN0YXJ0Owo+IC0gICAgICAgICAgICAgICB9IGVsc2Ugewo+IC0gICAgICAgICAgICAgICAgICAg ICAgIG5ld19zcHRlID0ga3ZtX21tdV9jaGFuZ2VkX3B0ZV9ub3RpZmllcl9tYWtlX3NwdGUoCj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzcHRlcCwgbmV3X3Bmbik7 Cj4gLQo+IC0gICAgICAgICAgICAgICAgICAgICAgIG1tdV9zcHRlX2NsZWFyX3RyYWNrX2JpdHMo a3ZtLCBzcHRlcCk7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgbW11X3NwdGVfc2V0KHNwdGVw LCBuZXdfc3B0ZSk7Cj4gLSAgICAgICAgICAgICAgIH0KPiAtICAgICAgIH0KPiAtCj4gLSAgICAg ICBpZiAobmVlZF9mbHVzaCAmJiBrdm1fYXZhaWxhYmxlX2ZsdXNoX3JlbW90ZV90bGJzX3Jhbmdl KCkpIHsKPiAtICAgICAgICAgICAgICAga3ZtX2ZsdXNoX3JlbW90ZV90bGJzX2dmbihrdm0sIGdm biwgbGV2ZWwpOwo+IC0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gLSAgICAgICB9Cj4g LQo+IC0gICAgICAgcmV0dXJuIG5lZWRfZmx1c2g7Cj4gLX0KPiAtCj4gIHN0cnVjdCBzbG90X3Jt YXBfd2Fsa19pdGVyYXRvciB7Cj4gICAgICAgICAvKiBpbnB1dCBmaWVsZHMuICovCj4gICAgICAg ICBjb25zdCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90Owo+IEBAIC0xNTk2LDE5ICsxNTU5 LDYgQEAgYm9vbCBrdm1fdW5tYXBfZ2ZuX3JhbmdlKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2 bV9nZm5fcmFuZ2UgKnJhbmdlKQo+ICAgICAgICAgcmV0dXJuIGZsdXNoOwo+ICB9Cj4KPiAtYm9v bCBrdm1fc2V0X3NwdGVfZ2ZuKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9nZm5fcmFuZ2Ug KnJhbmdlKQo+IC17Cj4gLSAgICAgICBib29sIGZsdXNoID0gZmFsc2U7Cj4gLQo+IC0gICAgICAg aWYgKGt2bV9tZW1zbG90c19oYXZlX3JtYXBzKGt2bSkpCj4gLSAgICAgICAgICAgICAgIGZsdXNo ID0ga3ZtX2hhbmRsZV9nZm5fcmFuZ2Uoa3ZtLCByYW5nZSwga3ZtX3NldF9wdGVfcm1hcCk7Cj4g LQo+IC0gICAgICAgaWYgKHRkcF9tbXVfZW5hYmxlZCkKPiAtICAgICAgICAgICAgICAgZmx1c2gg fD0ga3ZtX3RkcF9tbXVfc2V0X3NwdGVfZ2ZuKGt2bSwgcmFuZ2UpOwo+IC0KPiAtICAgICAgIHJl dHVybiBmbHVzaDsKPiAtfQo+IC0KPiAgc3RhdGljIGJvb2wga3ZtX2FnZV9ybWFwKHN0cnVjdCBr dm0gKmt2bSwgc3RydWN0IGt2bV9ybWFwX2hlYWQgKnJtYXBfaGVhZCwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGt2bV9tZW1vcnlfc2xvdCAqc2xvdCwgZ2ZuX3QgZ2ZuLCBpbnQg bGV2ZWwsCj4gICAgICAgICAgICAgICAgICAgICAgICAgIHB0ZV90IHVudXNlZCkKPiBkaWZmIC0t Z2l0IGEvYXJjaC94ODYva3ZtL21tdS9zcHRlLmMgYi9hcmNoL3g4Ni9rdm0vbW11L3NwdGUuYwo+ IGluZGV4IDMxODEzNWRhZjY4NS4uMjgzYWY1YjkwMDE2IDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2 L2t2bS9tbXUvc3B0ZS5jCj4gKysrIGIvYXJjaC94ODYva3ZtL21tdS9zcHRlLmMKPiBAQCAtMzIy LDIyICszMjIsNiBAQCB1NjQgbWFrZV9ub25sZWFmX3NwdGUodTY0ICpjaGlsZF9wdCwgYm9vbCBh ZF9kaXNhYmxlZCkKPiAgICAgICAgIHJldHVybiBzcHRlOwo+ICB9Cj4KPiAtdTY0IGt2bV9tbXVf Y2hhbmdlZF9wdGVfbm90aWZpZXJfbWFrZV9zcHRlKHU2NCBvbGRfc3B0ZSwga3ZtX3Bmbl90IG5l d19wZm4pCj4gLXsKPiAtICAgICAgIHU2NCBuZXdfc3B0ZTsKPiAtCj4gLSAgICAgICBuZXdfc3B0 ZSA9IG9sZF9zcHRlICYgflNQVEVfQkFTRV9BRERSX01BU0s7Cj4gLSAgICAgICBuZXdfc3B0ZSB8 PSAodTY0KW5ld19wZm4gPDwgUEFHRV9TSElGVDsKPiAtCj4gLSAgICAgICBuZXdfc3B0ZSAmPSB+ UFRfV1JJVEFCTEVfTUFTSzsKPiAtICAgICAgIG5ld19zcHRlICY9IH5zaGFkb3dfaG9zdF93cml0 YWJsZV9tYXNrOwo+IC0gICAgICAgbmV3X3NwdGUgJj0gfnNoYWRvd19tbXVfd3JpdGFibGVfbWFz azsKPiAtCj4gLSAgICAgICBuZXdfc3B0ZSA9IG1hcmtfc3B0ZV9mb3JfYWNjZXNzX3RyYWNrKG5l d19zcHRlKTsKPiAtCj4gLSAgICAgICByZXR1cm4gbmV3X3NwdGU7Cj4gLX0KPiAtCj4gIHU2NCBt YXJrX3NwdGVfZm9yX2FjY2Vzc190cmFjayh1NjQgc3B0ZSkKPiAgewo+ICAgICAgICAgaWYgKHNw dGVfYWRfZW5hYmxlZChzcHRlKSkKPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS9zcHRl LmggYi9hcmNoL3g4Ni9rdm0vbW11L3NwdGUuaAo+IGluZGV4IDFhMTYzYWVlOWVjNi4uOTJkYTRj NDE5MTcxIDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2L2t2bS9tbXUvc3B0ZS5oCj4gKysrIGIvYXJj aC94ODYva3ZtL21tdS9zcHRlLmgKPiBAQCAtNTExLDggKzUxMSw2IEBAIHN0YXRpYyBpbmxpbmUg dTY0IHJlc3RvcmVfYWNjX3RyYWNrX3NwdGUodTY0IHNwdGUpCj4gICAgICAgICByZXR1cm4gc3B0 ZTsKPiAgfQo+Cj4gLXU2NCBrdm1fbW11X2NoYW5nZWRfcHRlX25vdGlmaWVyX21ha2Vfc3B0ZSh1 NjQgb2xkX3NwdGUsIGt2bV9wZm5fdCBuZXdfcGZuKTsKPiAtCj4gIHZvaWQgX19pbml0IGt2bV9t bXVfc3B0ZV9tb2R1bGVfaW5pdCh2b2lkKTsKPiAgdm9pZCBrdm1fbW11X3Jlc2V0X2FsbF9wdGVf bWFza3Modm9pZCk7Cj4KPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMg Yi9hcmNoL3g4Ni9rdm0vbW11L3RkcF9tbXUuYwo+IGluZGV4IDM2Mjc3NDRmY2FiNi4uZmJiODY5 MzJiNzY2IDEwMDY0NAo+IC0tLSBhL2FyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5jCj4gKysrIGIv YXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmMKPiBAQCAtMTI1MCw1MiArMTI1MCw2IEBAIGJvb2wg a3ZtX3RkcF9tbXVfdGVzdF9hZ2VfZ2ZuKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9nZm5f cmFuZ2UgKnJhbmdlKQo+ICAgICAgICAgcmV0dXJuIGt2bV90ZHBfbW11X2hhbmRsZV9nZm4oa3Zt LCByYW5nZSwgdGVzdF9hZ2VfZ2ZuKTsKPiAgfQo+Cj4gLXN0YXRpYyBib29sIHNldF9zcHRlX2dm bihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB0ZHBfaXRlciAqaXRlciwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGt2bV9nZm5fcmFuZ2UgKnJhbmdlKQo+IC17Cj4gLSAgICAgICB1 NjQgbmV3X3NwdGU7Cj4gLQo+IC0gICAgICAgLyogSHVnZSBwYWdlcyBhcmVuJ3QgZXhwZWN0ZWQg dG8gYmUgbW9kaWZpZWQgd2l0aG91dCBmaXJzdCBiZWluZyB6YXBwZWQuICovCj4gLSAgICAgICBX QVJOX09OX09OQ0UocHRlX2h1Z2UocmFuZ2UtPmFyZy5wdGUpIHx8IHJhbmdlLT5zdGFydCArIDEg IT0gcmFuZ2UtPmVuZCk7Cj4gLQo+IC0gICAgICAgaWYgKGl0ZXItPmxldmVsICE9IFBHX0xFVkVM XzRLIHx8Cj4gLSAgICAgICAgICAgIWlzX3NoYWRvd19wcmVzZW50X3B0ZShpdGVyLT5vbGRfc3B0 ZSkpCj4gLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPiAtCj4gLSAgICAgICAvKgo+IC0g ICAgICAgICogTm90ZSwgd2hlbiBjaGFuZ2luZyBhIHJlYWQtb25seSBTUFRFLCBpdCdzIG5vdCBz dHJpY3RseSBuZWNlc3NhcnkgdG8KPiAtICAgICAgICAqIHplcm8gdGhlIFNQVEUgYmVmb3JlIHNl dHRpbmcgdGhlIG5ldyBQRk4sIGJ1dCBkb2luZyBzbyBwcmVzZXJ2ZXMgdGhlCj4gLSAgICAgICAg KiBpbnZhcmlhbnQgdGhhdCB0aGUgUEZOIG9mIGEgcHJlc2VudCAqIGxlYWYgU1BURSBjYW4gbmV2 ZXIgY2hhbmdlLgo+IC0gICAgICAgICogU2VlIGhhbmRsZV9jaGFuZ2VkX3NwdGUoKS4KPiAtICAg ICAgICAqLwo+IC0gICAgICAgdGRwX21tdV9pdGVyX3NldF9zcHRlKGt2bSwgaXRlciwgU0hBRE9X X05PTlBSRVNFTlRfVkFMVUUpOwo+IC0KPiAtICAgICAgIGlmICghcHRlX3dyaXRlKHJhbmdlLT5h cmcucHRlKSkgewo+IC0gICAgICAgICAgICAgICBuZXdfc3B0ZSA9IGt2bV9tbXVfY2hhbmdlZF9w dGVfbm90aWZpZXJfbWFrZV9zcHRlKGl0ZXItPm9sZF9zcHRlLAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0ZV9wZm4o cmFuZ2UtPmFyZy5wdGUpKTsKPiAtCj4gLSAgICAgICAgICAgICAgIHRkcF9tbXVfaXRlcl9zZXRf c3B0ZShrdm0sIGl0ZXIsIG5ld19zcHRlKTsKPiAtICAgICAgIH0KPiAtCj4gLSAgICAgICByZXR1 cm4gdHJ1ZTsKPiAtfQo+IC0KPiAtLyoKPiAtICogSGFuZGxlIHRoZSBjaGFuZ2VkX3B0ZSBNTVUg bm90aWZpZXIgZm9yIHRoZSBURFAgTU1VLgo+IC0gKiBkYXRhIGlzIGEgcG9pbnRlciB0byB0aGUg bmV3IHB0ZV90IG1hcHBpbmcgdGhlIEhWQSBzcGVjaWZpZWQgYnkgdGhlIE1NVQo+IC0gKiBub3Rp Zmllci4KPiAtICogUmV0dXJucyBub24temVybyBpZiBhIGZsdXNoIGlzIG5lZWRlZCBiZWZvcmUg cmVsZWFzaW5nIHRoZSBNTVUgbG9jay4KPiAtICovCj4gLWJvb2wga3ZtX3RkcF9tbXVfc2V0X3Nw dGVfZ2ZuKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9nZm5fcmFuZ2UgKnJhbmdlKQo+IC17 Cj4gLSAgICAgICAvKgo+IC0gICAgICAgICogTm8gbmVlZCB0byBoYW5kbGUgdGhlIHJlbW90ZSBU TEIgZmx1c2ggdW5kZXIgUkNVIHByb3RlY3Rpb24sIHRoZQo+IC0gICAgICAgICogdGFyZ2V0IFNQ VEUgX211c3RfIGJlIGEgbGVhZiBTUFRFLCBpLmUuIGNhbm5vdCByZXN1bHQgaW4gZnJlZWluZyBh Cj4gLSAgICAgICAgKiBzaGFkb3cgcGFnZS4gU2VlIHRoZSBXQVJOIG9uIHBmbl9jaGFuZ2VkIGlu IGhhbmRsZV9jaGFuZ2VkX3NwdGUoKS4KPiAtICAgICAgICAqLwo+IC0gICAgICAgcmV0dXJuIGt2 bV90ZHBfbW11X2hhbmRsZV9nZm4oa3ZtLCByYW5nZSwgc2V0X3NwdGVfZ2ZuKTsKPiAtfQo+IC0K PiAgLyoKPiAgICogUmVtb3ZlIHdyaXRlIGFjY2VzcyBmcm9tIGFsbCBTUFRFcyBhdCBvciBhYm92 ZSBtaW5fbGV2ZWwgdGhhdCBtYXAgR0ZOcwo+ICAgKiBbc3RhcnQsIGVuZCkuIFJldHVybnMgdHJ1 ZSBpZiBhbiBTUFRFIGhhcyBiZWVuIGNoYW5nZWQgYW5kIHRoZSBUTEJzIG5lZWQgdG8KPiBkaWZm IC0tZ2l0IGEvYXJjaC94ODYva3ZtL21tdS90ZHBfbW11LmggYi9hcmNoL3g4Ni9rdm0vbW11L3Rk cF9tbXUuaAo+IGluZGV4IDZlMWVhMDRjYTg4NS4uNThiNTVlNjFiZDMzIDEwMDY0NAo+IC0tLSBh L2FyY2gveDg2L2t2bS9tbXUvdGRwX21tdS5oCj4gKysrIGIvYXJjaC94ODYva3ZtL21tdS90ZHBf bW11LmgKPiBAQCAtMzEsNyArMzEsNiBAQCBib29sIGt2bV90ZHBfbW11X3VubWFwX2dmbl9yYW5n ZShzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsdXNoKTsKPiAgYm9vbCBrdm1fdGRwX21t dV9hZ2VfZ2ZuX3JhbmdlKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9nZm5fcmFuZ2UgKnJh bmdlKTsKPiAgYm9vbCBrdm1fdGRwX21tdV90ZXN0X2FnZV9nZm4oc3RydWN0IGt2bSAqa3ZtLCBz dHJ1Y3Qga3ZtX2dmbl9yYW5nZSAqcmFuZ2UpOwo+IC1ib29sIGt2bV90ZHBfbW11X3NldF9zcHRl X2dmbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSk7Cj4KPiAg Ym9vbCBrdm1fdGRwX21tdV93cnByb3Rfc2xvdChzdHJ1Y3Qga3ZtICprdm0sCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90LCBp bnQgbWluX2xldmVsKTsKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oIGIv aW5jbHVkZS9saW51eC9rdm1faG9zdC5oCj4gaW5kZXggYWI0Mzk3MDZlYTJmLi44ZGVhMTE3MDFh YjIgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oCj4gKysrIGIvaW5jbHVk ZS9saW51eC9rdm1faG9zdC5oCj4gQEAgLTI1OSw3ICsyNTksNiBAQCBpbnQga3ZtX2FzeW5jX3Bm X3dha2V1cF9hbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKPgo+ICAjaWZkZWYgQ09ORklHX0tW TV9HRU5FUklDX01NVV9OT1RJRklFUgo+ICB1bmlvbiBrdm1fbW11X25vdGlmaWVyX2FyZyB7Cj4g LSAgICAgICBwdGVfdCBwdGU7Cj4gICAgICAgICB1bnNpZ25lZCBsb25nIGF0dHJpYnV0ZXM7Cj4g IH07Cj4KPiBAQCAtMjczLDcgKzI3Miw2IEBAIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlIHsKPiAgYm9v bCBrdm1fdW5tYXBfZ2ZuX3JhbmdlKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9nZm5fcmFu Z2UgKnJhbmdlKTsKPiAgYm9vbCBrdm1fYWdlX2dmbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBr dm1fZ2ZuX3JhbmdlICpyYW5nZSk7Cj4gIGJvb2wga3ZtX3Rlc3RfYWdlX2dmbihzdHJ1Y3Qga3Zt ICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSk7Cj4gLWJvb2wga3ZtX3NldF9zcHRl X2dmbihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSk7Cj4gICNl bmRpZgo+Cj4gIGVudW0gewo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3RyYWNlL2V2ZW50cy9rdm0u aCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2t2bS5oCj4gaW5kZXggMDExZmJhNmI1NTUyLi43NGU0 MGQ1ZDRhZjQgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMva3ZtLmgKPiArKysg Yi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9rdm0uaAo+IEBAIC00NTYsMjEgKzQ1Niw2IEBAIFRSQUNF X0VWRU5UKGt2bV91bm1hcF9odmFfcmFuZ2UsCj4gICAgICAgICAgICAgICAgICAgX19lbnRyeS0+ c3RhcnQsIF9fZW50cnktPmVuZCkKPiAgKTsKPgo+IC1UUkFDRV9FVkVOVChrdm1fc2V0X3NwdGVf aHZhLAo+IC0gICAgICAgVFBfUFJPVE8odW5zaWduZWQgbG9uZyBodmEpLAo+IC0gICAgICAgVFBf QVJHUyhodmEpLAo+IC0KPiAtICAgICAgIFRQX1NUUlVDVF9fZW50cnkoCj4gLSAgICAgICAgICAg ICAgIF9fZmllbGQoICAgICAgICB1bnNpZ25lZCBsb25nLCAgaHZhICAgICAgICAgICAgICkKPiAt ICAgICAgICksCj4gLQo+IC0gICAgICAgVFBfZmFzdF9hc3NpZ24oCj4gLSAgICAgICAgICAgICAg IF9fZW50cnktPmh2YSAgICAgICAgICAgID0gaHZhOwo+IC0gICAgICAgKSwKPiAtCj4gLSAgICAg ICBUUF9wcmludGsoIm1tdSBub3RpZmllciBzZXQgcHRlIGh2YTogJSMwMTZseCIsIF9fZW50cnkt Pmh2YSkKPiAtKTsKPiAtCj4gIFRSQUNFX0VWRU5UKGt2bV9hZ2VfaHZhLAo+ICAgICAgICAgVFBf UFJPVE8odW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpLAo+ICAgICAgICAg VFBfQVJHUyhzdGFydCwgZW5kKSwKPiBkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtX21haW4uYyBi L3ZpcnQva3ZtL2t2bV9tYWluLmMKPiBpbmRleCA0ZWI4YWZkMGI5NjEuLjJmY2Q5OTc5NzUyYSAx MDA2NDQKPiAtLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jCj4gKysrIGIvdmlydC9rdm0va3ZtX21h aW4uYwo+IEBAIC03MTcsNDggKzcxNyw2IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgaW50IGt2 bV9oYW5kbGVfaHZhX3JhbmdlX25vX2ZsdXNoKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uCj4gICAg ICAgICByZXR1cm4gX19rdm1faGFuZGxlX2h2YV9yYW5nZShrdm0sICZyYW5nZSkucmV0Owo+ICB9 Cj4KPiAtc3RhdGljIGJvb2wga3ZtX2NoYW5nZV9zcHRlX2dmbihzdHJ1Y3Qga3ZtICprdm0sIHN0 cnVjdCBrdm1fZ2ZuX3JhbmdlICpyYW5nZSkKPiAtewo+IC0gICAgICAgLyoKPiAtICAgICAgICAq IFNraXBwaW5nIGludmFsaWQgbWVtc2xvdHMgaXMgY29ycmVjdCBpZiBhbmQgb25seSBjaGFuZ2Vf cHRlKCkgaXMKPiAtICAgICAgICAqIHN1cnJvdW5kZWQgYnkgaW52YWxpZGF0ZV9yYW5nZV97c3Rh cnQsZW5kfSgpLCB3aGljaCBpcyBjdXJyZW50bHkKPiAtICAgICAgICAqIGd1YXJhbnRlZWQgYnkg dGhlIHByaW1hcnkgTU1VLiAgSWYgdGhhdCBldmVyIGNoYW5nZXMsIEtWTSBuZWVkcyB0bwo+IC0g ICAgICAgICogdW5tYXAgdGhlIG1lbXNsb3QgaW5zdGVhZCBvZiBza2lwcGluZyB0aGUgbWVtc2xv dCB0byBlbnN1cmUgdGhhdCBLVk0KPiAtICAgICAgICAqIGRvZXNuJ3QgaG9sZCByZWZlcmVuY2Vz IHRvIHRoZSBvbGQgUEZOLgo+IC0gICAgICAgICovCj4gLSAgICAgICBXQVJOX09OX09OQ0UoIVJF QURfT05DRShrdm0tPm1uX2FjdGl2ZV9pbnZhbGlkYXRlX2NvdW50KSk7Cj4gLQo+IC0gICAgICAg aWYgKHJhbmdlLT5zbG90LT5mbGFncyAmIEtWTV9NRU1TTE9UX0lOVkFMSUQpCj4gLSAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKPiAtCj4gLSAgICAgICByZXR1cm4ga3ZtX3NldF9zcHRlX2dm bihrdm0sIHJhbmdlKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQga3ZtX21tdV9ub3RpZmllcl9j aGFuZ2VfcHRlKHN0cnVjdCBtbXVfbm90aWZpZXIgKm1uLAo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzLAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdGVfdCBwdGUpCj4gLXsKPiAtICAg ICAgIHN0cnVjdCBrdm0gKmt2bSA9IG1tdV9ub3RpZmllcl90b19rdm0obW4pOwo+IC0gICAgICAg Y29uc3QgdW5pb24ga3ZtX21tdV9ub3RpZmllcl9hcmcgYXJnID0geyAucHRlID0gcHRlIH07Cj4g LQo+IC0gICAgICAgdHJhY2Vfa3ZtX3NldF9zcHRlX2h2YShhZGRyZXNzKTsKPiAtCj4gLSAgICAg ICAvKgo+IC0gICAgICAgICogLmNoYW5nZV9wdGUoKSBtdXN0IGJlIHN1cnJvdW5kZWQgYnkgLmlu dmFsaWRhdGVfcmFuZ2Vfe3N0YXJ0LGVuZH0oKS4KPiAtICAgICAgICAqIElmIG1tdV9pbnZhbGlk YXRlX2luX3Byb2dyZXNzIGlzIHplcm8sIHRoZW4gbm8gaW4tcHJvZ3Jlc3MKPiAtICAgICAgICAq IGludmFsaWRhdGlvbnMsIGluY2x1ZGluZyB0aGlzIG9uZSwgZm91bmQgYSByZWxldmFudCBtZW1z bG90IGF0Cj4gLSAgICAgICAgKiBzdGFydCgpOyByZWNoZWNraW5nIG1lbXNsb3RzIGhlcmUgaXMg dW5uZWNlc3NhcnkuICBOb3RlLCBhIGZhbHNlCj4gLSAgICAgICAgKiBwb3NpdGl2ZSAoY291bnQg ZWxldmF0ZWQgYnkgYSBkaWZmZXJlbnQgaW52YWxpZGF0aW9uKSBpcyBzdWItb3B0aW1hbAo+IC0g ICAgICAgICogYnV0IGZ1bmN0aW9uYWxseSBvay4KPiAtICAgICAgICAqLwo+IC0gICAgICAgV0FS Tl9PTl9PTkNFKCFSRUFEX09OQ0Uoa3ZtLT5tbl9hY3RpdmVfaW52YWxpZGF0ZV9jb3VudCkpOwo+ IC0gICAgICAgaWYgKCFSRUFEX09OQ0Uoa3ZtLT5tbXVfaW52YWxpZGF0ZV9pbl9wcm9ncmVzcykp Cj4gLSAgICAgICAgICAgICAgIHJldHVybjsKPiAtCj4gLSAgICAgICBrdm1faGFuZGxlX2h2YV9y YW5nZShtbiwgYWRkcmVzcywgYWRkcmVzcyArIDEsIGFyZywga3ZtX2NoYW5nZV9zcHRlX2dmbik7 Cj4gLX0KPiAtCj4gIHZvaWQga3ZtX21tdV9pbnZhbGlkYXRlX2JlZ2luKHN0cnVjdCBrdm0gKmt2 bSkKPiAgewo+ICAgICAgICAgbG9ja2RlcF9hc3NlcnRfaGVsZF93cml0ZSgma3ZtLT5tbXVfbG9j ayk7Cj4gQEAgLTk3Niw3ICs5MzQsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmll cl9vcHMga3ZtX21tdV9ub3RpZmllcl9vcHMgPSB7Cj4gICAgICAgICAuY2xlYXJfZmx1c2hfeW91 bmcgICAgICA9IGt2bV9tbXVfbm90aWZpZXJfY2xlYXJfZmx1c2hfeW91bmcsCj4gICAgICAgICAu Y2xlYXJfeW91bmcgICAgICAgICAgICA9IGt2bV9tbXVfbm90aWZpZXJfY2xlYXJfeW91bmcsCj4g ICAgICAgICAudGVzdF95b3VuZyAgICAgICAgICAgICA9IGt2bV9tbXVfbm90aWZpZXJfdGVzdF95 b3VuZywKPiAtICAgICAgIC5jaGFuZ2VfcHRlICAgICAgICAgICAgID0ga3ZtX21tdV9ub3RpZmll cl9jaGFuZ2VfcHRlLAo+ICAgICAgICAgLnJlbGVhc2UgICAgICAgICAgICAgICAgPSBrdm1fbW11 X25vdGlmaWVyX3JlbGVhc2UsCj4gIH07Cj4KPiAtLQo+IDIuNDMuMAo+Cj4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFp bGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK