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 795B7CFB442 for ; Mon, 7 Oct 2024 09:30:35 +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=RN1w2FgE+w1iVEi/0SzUuz/+Rd8pZ7UcTGxBH4N2eSw=; b=bwC5s4by4cUsxU 4ALmydGiCTi0uDlDedygWMI73BAd1sgMu5fIhQ3AJt6jA9EAmgeRyLQfE/6Priua482NMmvFF0gBL 8SbZ2oNwLAqOufiEE/rHrCnBTd3kDgN3JnaxV9NO68JIltWxYzuPfconN4XVWrPl422jRzhYkX+fA VIb/CLTRXZ1FokkgnfDsrngvQebY141scHwoCQx7pNsTMV3E3BJl9569PIvHZ/r5CFHbQ+GQntezb 26vIfVFsneFEfB16kEPmlFsQ/gqIprCEoU9xwgQHQgvE4YpIFll1cgfB9TBNPygCjrvtF8r3PvdWi yS3Ex8yi0ruSVD7jjvYg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1sxk4U-00000001uc1-41ui; Mon, 07 Oct 2024 09:30:30 +0000 Received: from mail-io1-xd36.google.com ([2607:f8b0:4864:20::d36]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1sxiwK-00000001iVU-0gnn for linux-riscv@lists.infradead.org; Mon, 07 Oct 2024 08:18:01 +0000 Received: by mail-io1-xd36.google.com with SMTP id ca18e2360f4ac-82aad6c83ecso150581339f.3 for ; Mon, 07 Oct 2024 01:17:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1728289078; x=1728893878; 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=vV5iKTZRSVTQUCoJBZzYZK+9ejJVraol8LawWsL5uGA=; b=KYLqadSTFSNlVsp2Bx+Gso9Kmxvse6wbzDOjHbwDSxhn8izTzp9uqtLq8sKnjvdwAw 817BvfRLbnPfPa3qe+RtGxKmkfvpstwG3MXveLb1Jn6KUqmbG9vRdUNLV4vM1DH57O/m AU8Ac1c2/aLbNaUyrKbYBarQAEYcHL74LJY9Sv3Co0NdS8j2PDTJtAwxRxJ4qw7wtxdp uDoD3IH0yP2Zmyt3+D4TCHH4+cM3zJVs//jB2SG/hPKoDX9rl6akqqqvQ50gIODvDkvd 8TaAqWjWq0zrPRo+u4Q2y2vVUjbfWydrEQpCQriAoxf8owD2eOJoNVevePbDKCG6oZsI pymg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728289078; x=1728893878; 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=vV5iKTZRSVTQUCoJBZzYZK+9ejJVraol8LawWsL5uGA=; b=iQWDDxqdUhOIPQ9RYtgQy9QFKHzmPRSGYgBFeIehHp6ygu7CuOxge8BxrOik40zADI gWIRL+sojOFNmec9UlXdD/6kTCfWJJ+954SC4fvqhEJWrOYnkvN9U0xXo7x2XtK7o1Nd w6GAHkT6TkjrSf0qA8Cughrr4kVIK159EQ2ioeDGKT7atTzoi5sK95SmcM81jZz6JVfm bdymkkFUzCiU4t2ljovjM8GakbZgQxUQpbtLVPwRr1uFYVwGErkYrUy9b6vq3GGHqHXy 1t3qT3ASDpikZqRULrYCm7WlHrO4H6JfoxHv7kQsoBZY0z39iZK1kJv+tpFzGXf0BpKe hzXw== X-Forwarded-Encrypted: i=1; AJvYcCXq/Xq0OFqh2sv4qQW/ZpgdjrOx72N8ZJkYGV8XLahTWybo74lg9RmfuboqjfqNaodTcueS8T7oPEOICw==@lists.infradead.org X-Gm-Message-State: AOJu0YyQAcDK7sbzbzJuElYBtjJa6b8oJy0f4TQkwMphjhG+ltJd96/J BEghbSBlug3A8cQUkG0SkFj9xFg3ZISGJ7pisFg2mNIrKkr5YDF84bMLVVhAPT6b4jGp6/Em7I5 y2TKA3a2eC9Bi4hKp/LDzHRdKaS4LskBqZdortw== X-Google-Smtp-Source: AGHT+IGbrFX2fkGwh4/hSUi/bswFsAwHoZTucK0BPSJDYS8wpDCXqS1WF3XKaDolR3S9yJug1dqVltHjNKSJeho3ET0= X-Received: by 2002:a05:6602:14c1:b0:806:31ee:132 with SMTP id ca18e2360f4ac-834f7ca6040mr1014345639f.4.1728289078482; Mon, 07 Oct 2024 01:17:58 -0700 (PDT) MIME-Version: 1.0 References: <20241001-v5_user_cfi_series-v1-0-3ba65b6e550f@rivosinc.com> <20241001-v5_user_cfi_series-v1-16-3ba65b6e550f@rivosinc.com> In-Reply-To: <20241001-v5_user_cfi_series-v1-16-3ba65b6e550f@rivosinc.com> From: Zong Li Date: Mon, 7 Oct 2024 16:17:47 +0800 Message-ID: Subject: Re: [PATCH 16/33] riscv/shstk: If needed allocate a new shadow stack on clone To: Deepak Gupta Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Andrew Morton , "Liam R. Howlett" , Vlastimil Babka , Lorenzo Stoakes , Paul Walmsley , Palmer Dabbelt , Albert Ou , Conor Dooley , Rob Herring , Krzysztof Kozlowski , Arnd Bergmann , Christian Brauner , Peter Zijlstra , Oleg Nesterov , Eric Biederman , Kees Cook , Jonathan Corbet , Shuah Khan , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-arch@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, alistair.francis@wdc.com, richard.henderson@linaro.org, jim.shu@sifive.com, andybnac@gmail.com, kito.cheng@sifive.com, charlie@rivosinc.com, atishp@rivosinc.com, evan@rivosinc.com, cleger@rivosinc.com, alexghiti@rivosinc.com, samitolvanen@google.com, broonie@kernel.org, rick.p.edgecombe@intel.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241007_011800_268408_865CA250 X-CRM114-Status: GOOD ( 43.80 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gV2VkLCBPY3QgMiwgMjAyNCBhdCAxMjoyMOKAr0FNIERlZXBhayBHdXB0YSA8ZGVidWdAcml2 b3NpbmMuY29tPiB3cm90ZToKPgo+IFVzZXJzcGFjZSBzcGVjaWZpZXMgQ0xPTkVfVk0gdG8gc2hh cmUgYWRkcmVzcyBzcGFjZSBhbmQgc3Bhd24gbmV3IHRocmVhZC4KPiBgY2xvbmVgIGFsbG93IHVz ZXJzcGFjZSB0byBzcGVjaWZ5IGEgbmV3IHN0YWNrIGZvciBuZXcgdGhyZWFkLiBIb3dldmVyCj4g dGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgbmV3IHNoYWRvdyBzdGFjayBiYXNlIGFkZHJlc3Mg d2l0aG91dCBjaGFuZ2luZwo+IEFQSS4gVGhpcyBwYXRjaCBhbGxvY2F0ZXMgYSBuZXcgc2hhZG93 IHN0YWNrIHdoZW5ldmVyIENMT05FX1ZNIGlzIGdpdmVuLgo+Cj4gSW4gY2FzZSBvZiBDTE9ORV9W Rk9SSywgcGFyZW50IGlzIHN1c3BlbmRlZCB1bnRpbCBjaGlsZCBmaW5pc2hlcyBhbmQgdGh1cwo+ IGNhbiBjaGlsZCB1c2UgcGFyZW50IHNoYWRvdyBzdGFjay4gSW4gY2FzZSBvZiAhQ0xPTkVfVk0s IENPVyBraWNrcyBpbgo+IGJlY2F1c2UgZW50aXJlIGFkZHJlc3Mgc3BhY2UgaXMgY29waWVkIGZy b20gcGFyZW50IHRvIGNoaWxkLgo+Cj4gYGNsb25lM2AgaXMgZXh0ZW5zaWJsZSBhbmQgY2FuIHBy b3ZpZGUgbWVjaGFuaXNtcyB1c2luZyB3aGljaCBzaGFkb3cgc3RhY2sKPiBhcyBhbiBpbnB1dCBw YXJhbWV0ZXIgY2FuIGJlIHByb3ZpZGVkLiBUaGlzIGlzIG5vdCBzZXR0bGVkIHlldCBhbmQgYmVp bmcKPiBleHRlbnNpdmVseSBkaXNjdXNzZWQgb24gbWFpbGluZyBsaXN0LiBPbmNlIHRoYXQncyBz ZXR0bGVkLCB0aGlzIGNvbW1pdAo+IHdpbGwgYWRhcHQgdG8gdGhhdC4KPgo+IFNpZ25lZC1vZmYt Ynk6IERlZXBhayBHdXB0YSA8ZGVidWdAcml2b3NpbmMuY29tPgo+IC0tLQo+ICBhcmNoL3Jpc2N2 L2luY2x1ZGUvYXNtL3VzZXJjZmkuaCB8ICAyNSArKysrKysrKwo+ICBhcmNoL3Jpc2N2L2tlcm5l bC9wcm9jZXNzLmMgICAgICB8ICAxMSArKystCj4gIGFyY2gvcmlzY3Yva2VybmVsL3VzZXJjZmku YyAgICAgIHwgMTIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAz IGZpbGVzIGNoYW5nZWQsIDE1NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4KPiBkaWZm IC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91c2VyY2ZpLmggYi9hcmNoL3Jpc2N2L2lu Y2x1ZGUvYXNtL3VzZXJjZmkuaAo+IGluZGV4IDRmYTIwMWI0ZmM0ZS4uNzE5ZTI4ZTA0M2M4IDEw MDY0NAo+IC0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdXNlcmNmaS5oCj4gKysrIGIvYXJj aC9yaXNjdi9pbmNsdWRlL2FzbS91c2VyY2ZpLmgKPiBAQCAtOCw2ICs4LDkgQEAKPiAgI2lmbmRl ZiBfX0FTU0VNQkxZX18KPiAgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4KPiArc3RydWN0IHRh c2tfc3RydWN0Owo+ICtzdHJ1Y3Qga2VybmVsX2Nsb25lX2FyZ3M7Cj4gKwo+ICAjaWZkZWYgQ09O RklHX1JJU0NWX1VTRVJfQ0ZJCj4gIHN0cnVjdCBjZmlfc3RhdHVzIHsKPiAgICAgICAgIHVuc2ln bmVkIGxvbmcgdWJjZmlfZW4gOiAxOyAvKiBFbmFibGUgZm9yIGJhY2t3YXJkIGNmaS4gKi8KPiBA QCAtMTcsNiArMjAsMjggQEAgc3RydWN0IGNmaV9zdGF0dXMgewo+ICAgICAgICAgdW5zaWduZWQg bG9uZyBzaGR3X3N0a19zaXplOyAvKiBzaXplIG9mIHNoYWRvdyBzdGFjayAqLwo+ICB9Owo+Cj4g K3Vuc2lnbmVkIGxvbmcgc2hzdGtfYWxsb2NfdGhyZWFkX3N0YWNrKHN0cnVjdCB0YXNrX3N0cnVj dCAqdHNrLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IGtlcm5lbF9jbG9uZV9hcmdzICphcmdzKTsKPiArdm9pZCBz aHN0a19yZWxlYXNlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKPiArdm9pZCBzZXRfc2hzdGtf YmFzZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGxvbmcgc2hzdGtfYWRkciwg dW5zaWduZWQgbG9uZyBzaXplKTsKPiArdW5zaWduZWQgbG9uZyBnZXRfc2hzdGtfYmFzZShzdHJ1 Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGxvbmcgKnNpemUpOwo+ICt2b2lkIHNldF9h Y3RpdmVfc2hzdGsoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCB1bnNpZ25lZCBsb25nIHNoc3Rr X2FkZHIpOwo+ICtib29sIGlzX3Noc3RrX2VuYWJsZWQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNr KTsKPiArCj4gKyNlbHNlCj4gKwo+ICsjZGVmaW5lIHNoc3RrX2FsbG9jX3RocmVhZF9zdGFjayh0 c2ssIGFyZ3MpIDAKPiArCj4gKyNkZWZpbmUgc2hzdGtfcmVsZWFzZSh0c2spCj4gKwo+ICsjZGVm aW5lIGdldF9zaHN0a19iYXNlKHRhc2ssIHNpemUpIDAKPiArCj4gKyNkZWZpbmUgc2V0X3Noc3Rr X2Jhc2UodGFzaywgc2hzdGtfYWRkciwgc2l6ZSkKPiArCj4gKyNkZWZpbmUgc2V0X2FjdGl2ZV9z aHN0ayh0YXNrLCBzaHN0a19hZGRyKQo+ICsKPiArI2RlZmluZSBpc19zaHN0a19lbmFibGVkKHRh c2spIGZhbHNlCj4gKwo+ICAjZW5kaWYgLyogQ09ORklHX1JJU0NWX1VTRVJfQ0ZJICovCj4KPiAg I2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwo+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5l bC9wcm9jZXNzLmMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9jZXNzLmMKPiBpbmRleCAxZjI1NzRm YjJlZGIuLmY2ZjU4YjFlZDkwNSAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9j ZXNzLmMKPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9jZXNzLmMKPiBAQCAtMjgsNiArMjgs NyBAQAo+ICAjaW5jbHVkZSA8YXNtL3ZlY3Rvci5oPgo+ICAjaW5jbHVkZSA8YXNtL2NwdWZlYXR1 cmUuaD4KPiAgI2luY2x1ZGUgPGFzbS9leGVjLmg+Cj4gKyNpbmNsdWRlIDxhc20vdXNlcmNmaS5o Pgo+Cj4gICNpZiBkZWZpbmVkKENPTkZJR19TVEFDS1BST1RFQ1RPUikgJiYgIWRlZmluZWQoQ09O RklHX1NUQUNLUFJPVEVDVE9SX1BFUl9UQVNLKQo+ICAjaW5jbHVkZSA8bGludXgvc3RhY2twcm90 ZWN0b3IuaD4KPiBAQCAtMjAzLDcgKzIwNCw3IEBAIGludCBhcmNoX2R1cF90YXNrX3N0cnVjdChz dHJ1Y3QgdGFza19zdHJ1Y3QgKmRzdCwgc3RydWN0IHRhc2tfc3RydWN0ICpzcmMpCj4KPiAgdm9p ZCBleGl0X3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKPiAgewo+IC0KPiArICAgICAg IHNoc3RrX3JlbGVhc2UodHNrKTsKPiAgfQo+Cj4gIGludCBjb3B5X3RocmVhZChzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnAsIGNvbnN0IHN0cnVjdCBrZXJuZWxfY2xvbmVfYXJncyAqYXJncykKPiBAQCAt MjExLDYgKzIxMiw3IEBAIGludCBjb3B5X3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGNv bnN0IHN0cnVjdCBrZXJuZWxfY2xvbmVfYXJncyAqYXJncykKPiAgICAgICAgIHVuc2lnbmVkIGxv bmcgY2xvbmVfZmxhZ3MgPSBhcmdzLT5mbGFnczsKPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdXNw ID0gYXJncy0+c3RhY2s7Cj4gICAgICAgICB1bnNpZ25lZCBsb25nIHRscyA9IGFyZ3MtPnRsczsK PiArICAgICAgIHVuc2lnbmVkIGxvbmcgc3NwID0gMDsKPiAgICAgICAgIHN0cnVjdCBwdF9yZWdz ICpjaGlsZHJlZ3MgPSB0YXNrX3B0X3JlZ3MocCk7Cj4KPiAgICAgICAgIG1lbXNldCgmcC0+dGhy ZWFkLnMsIDAsIHNpemVvZihwLT50aHJlYWQucykpOwo+IEBAIC0yMjUsMTEgKzIyNywxOCBAQCBp bnQgY29weV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBjb25zdCBzdHJ1Y3Qga2VybmVs X2Nsb25lX2FyZ3MgKmFyZ3MpCj4gICAgICAgICAgICAgICAgIHAtPnRocmVhZC5zWzBdID0gKHVu c2lnbmVkIGxvbmcpYXJncy0+Zm47Cj4gICAgICAgICAgICAgICAgIHAtPnRocmVhZC5zWzFdID0g KHVuc2lnbmVkIGxvbmcpYXJncy0+Zm5fYXJnOwo+ICAgICAgICAgfSBlbHNlIHsKPiArICAgICAg ICAgICAgICAgLyogYWxsb2NhdGUgbmV3IHNoYWRvdyBzdGFjayBpZiBuZWVkZWQuIEluIGNhc2Ug b2YgQ0xPTkVfVk0gd2UgaGF2ZSB0byAqLwo+ICsgICAgICAgICAgICAgICBzc3AgPSBzaHN0a19h bGxvY190aHJlYWRfc3RhY2socCwgYXJncyk7Cj4gKyAgICAgICAgICAgICAgIGlmIChJU19FUlJf VkFMVUUoc3NwKSkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUigodm9p ZCAqKXNzcCk7Cj4gKwo+ICAgICAgICAgICAgICAgICAqY2hpbGRyZWdzID0gKihjdXJyZW50X3B0 X3JlZ3MoKSk7Cj4gICAgICAgICAgICAgICAgIC8qIFR1cm4gb2ZmIHN0YXR1cy5WUyAqLwo+ICAg ICAgICAgICAgICAgICByaXNjdl92X3ZzdGF0ZV9vZmYoY2hpbGRyZWdzKTsKPiAgICAgICAgICAg ICAgICAgaWYgKHVzcCkgLyogVXNlciBmb3JrICovCj4gICAgICAgICAgICAgICAgICAgICAgICAg Y2hpbGRyZWdzLT5zcCA9IHVzcDsKPiArICAgICAgICAgICAgICAgLyogaWYgbmVlZGVkLCBzZXQg bmV3IHNzcCAqLwo+ICsgICAgICAgICAgICAgICBzc3AgPyBzZXRfYWN0aXZlX3Noc3RrKHAsIHNz cCkgOiAwOwo+ICAgICAgICAgICAgICAgICBpZiAoY2xvbmVfZmxhZ3MgJiBDTE9ORV9TRVRUTFMp Cj4gICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZWdzLT50cCA9IHRsczsKPiAgICAgICAg ICAgICAgICAgY2hpbGRyZWdzLT5hMCA9IDA7IC8qIFJldHVybiB2YWx1ZSBvZiBmb3JrKCkgKi8K PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvdXNlcmNmaS5jIGIvYXJjaC9yaXNjdi9r ZXJuZWwvdXNlcmNmaS5jCj4gaW5kZXggY2UwMDJlYWJiZGMxLi43YTdmMGI1N2IyZDQgMTAwNjQ0 Cj4gLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwvdXNlcmNmaS5jCj4gKysrIGIvYXJjaC9yaXNjdi9r ZXJuZWwvdXNlcmNmaS5jCj4gQEAgLTE5LDYgKzE5LDQxIEBACj4KPiAgI2RlZmluZSBTSFNUS19F TlRSWV9TSVpFIHNpemVvZih2b2lkICopCj4KPiArYm9vbCBpc19zaHN0a19lbmFibGVkKHN0cnVj dCB0YXNrX3N0cnVjdCAqdGFzaykKPiArewo+ICsgICAgICAgcmV0dXJuIHRhc2stPnRocmVhZF9p bmZvLnVzZXJfY2ZpX3N0YXRlLnViY2ZpX2VuID8gdHJ1ZSA6IGZhbHNlOwo+ICt9Cj4gKwo+ICt2 b2lkIHNldF9zaHN0a19iYXNlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgdW5zaWduZWQgbG9u ZyBzaHN0a19hZGRyLCB1bnNpZ25lZCBsb25nIHNpemUpCj4gK3sKPiArICAgICAgIHRhc2stPnRo cmVhZF9pbmZvLnVzZXJfY2ZpX3N0YXRlLnNoZHdfc3RrX2Jhc2UgPSBzaHN0a19hZGRyOwo+ICsg ICAgICAgdGFzay0+dGhyZWFkX2luZm8udXNlcl9jZmlfc3RhdGUuc2hkd19zdGtfc2l6ZSA9IHNp emU7Cj4gK30KPiArCj4gK3Vuc2lnbmVkIGxvbmcgZ2V0X3Noc3RrX2Jhc2Uoc3RydWN0IHRhc2tf c3RydWN0ICp0YXNrLCB1bnNpZ25lZCBsb25nICpzaXplKQo+ICt7Cj4gKyAgICAgICBpZiAoc2l6 ZSkKPiArICAgICAgICAgICAgICAgKnNpemUgPSB0YXNrLT50aHJlYWRfaW5mby51c2VyX2NmaV9z dGF0ZS5zaGR3X3N0a19zaXplOwo+ICsgICAgICAgcmV0dXJuIHRhc2stPnRocmVhZF9pbmZvLnVz ZXJfY2ZpX3N0YXRlLnNoZHdfc3RrX2Jhc2U7Cj4gK30KPiArCj4gK3ZvaWQgc2V0X2FjdGl2ZV9z aHN0ayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGxvbmcgc2hzdGtfYWRkcikK PiArewo+ICsgICAgICAgdGFzay0+dGhyZWFkX2luZm8udXNlcl9jZmlfc3RhdGUudXNlcl9zaGR3 X3N0ayA9IHNoc3RrX2FkZHI7Cj4gK30KPiArCj4gKy8qCj4gKyAqIElmIHNpemUgaXMgMCwgdGhl biB0byBiZSBjb21wYXRpYmxlIHdpdGggcmVndWxhciBzdGFjayB3ZSB3YW50IGl0IHRvIGJlIGFz IGJpZyBhcwo+ICsgKiByZWd1bGFyIHN0YWNrLiBFbHNlIFBBR0VfQUxJR04gaXQgYW5kIHJldHVy biBiYWNrCj4gKyAqLwo+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBjYWxjX3Noc3RrX3NpemUodW5z aWduZWQgbG9uZyBzaXplKQo+ICt7Cj4gKyAgICAgICBpZiAoc2l6ZSkKPiArICAgICAgICAgICAg ICAgcmV0dXJuIFBBR0VfQUxJR04oc2l6ZSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIFBBR0VfQUxJ R04obWluX3QodW5zaWduZWQgbG9uZyBsb25nLCBybGltaXQoUkxJTUlUX1NUQUNLKSwgU1pfNEcp KTsKPiArfQo+ICsKPiAgLyoKPiAgICogV3JpdGVzIG9uIHNoYWRvdyBzdGFjayBjYW4gZWl0aGVy IGJlIGBzc3B1c2hgIG9yIGBzc2Ftb3N3YXBgLiBgc3NwdXNoYCBjYW4gaGFwcGVuCj4gICAqIGlt cGxpY2l0bHkgb24gY3VycmVudCBzaGFkb3cgc3RhY2sgcG9pbnRlZCB0byBieSBDU1JfU1NQLiBg c3NhbW9zd2FwYCB0YWtlcyBwb2ludGVyIHRvCj4gQEAgLTE0MywzICsxNzgsODkgQEAgU1lTQ0FM TF9ERUZJTkUzKG1hcF9zaGFkb3dfc3RhY2ssIHVuc2lnbmVkIGxvbmcsIGFkZHIsIHVuc2lnbmVk IGxvbmcsIHNpemUsIHVuc2kKPgo+ICAgICAgICAgcmV0dXJuIGFsbG9jYXRlX3NoYWRvd19zdGFj ayhhZGRyLCBhbGlnbmVkX3NpemUsIHNpemUsIHNldF90b2spOwo+ICB9Cj4gKwo+ICsvKgo+ICsg KiBUaGlzIGdldHMgY2FsbGVkIGR1cmluZyBjbG9uZS9jbG9uZTMvZm9yay4gQW5kIGlzIG5lZWRl ZCB0byBhbGxvY2F0ZSBhIHNoYWRvdyBzdGFjayBmb3IKPiArICogY2FzZXMgd2hlcmUgQ0xPTkVf Vk0gaXMgc3BlY2lmaWVkIGFuZCB0aHVzIGEgZGlmZmVyZW50IHN0YWNrIGlzIHNwZWNpZmllZCBi eSB1c2VyLiBXZQo+ICsgKiB0aHVzIG5lZWQgYSBzZXBhcmF0ZSBzaGFkb3cgc3RhY2sgdG9vLiBI b3cgZG9lcyBzZXBhcmF0ZSBzaGFkb3cgc3RhY2sgaXMgc3BlY2lmaWVkIGJ5Cj4gKyAqIHVzZXIg aXMgc3RpbGwgYmVpbmcgZGViYXRlZC4gT25jZSB0aGF0J3Mgc2V0dGxlZCwgcmVtb3ZlIHRoaXMg cGFydCBvZiB0aGUgY29tbWVudC4KPiArICogVGhpcyBmdW5jdGlvbiBzaW1wbHkgcmV0dXJucyAw IGlmIHNoYWRvdyBzdGFjayBhcmUgbm90IHN1cHBvcnRlZCBvciBpZiBzZXBhcmF0ZSBzaGFkb3cK PiArICogc3RhY2sgYWxsb2NhdGlvbiBpcyBub3QgbmVlZGVkIChsaWtlIGluIGNhc2Ugb2YgIUNM T05FX1ZNKQo+ICsgKi8KPiArdW5zaWduZWQgbG9uZyBzaHN0a19hbGxvY190aHJlYWRfc3RhY2so c3RydWN0IHRhc2tfc3RydWN0ICp0c2ssCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBrZXJuZWxfY2xvbmVfYXJncyAqYXJncykKPiArewo+ ICsgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyLCBzaXplOwo+ICsKPiArICAgICAgIC8qIElmIHNo YWRvdyBzdGFjayBpcyBub3Qgc3VwcG9ydGVkLCByZXR1cm4gMCAqLwo+ICsgICAgICAgaWYgKCFj cHVfc3VwcG9ydHNfc2hhZG93X3N0YWNrKCkpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBJZiBzaGFkb3cgc3RhY2sgaXMgbm90IGVuYWJs ZWQgb24gdGhlIG5ldyB0aHJlYWQsIHNraXAgYW55Cj4gKyAgICAgICAgKiBzd2l0Y2ggdG8gYSBu ZXcgc2hhZG93IHN0YWNrLgo+ICsgICAgICAgICovCj4gKyAgICAgICBpZiAoaXNfc2hzdGtfZW5h YmxlZCh0c2spKQoKSGkgRGVlcGFrLApTaG91bGQgaXQgYmUgJyEnIGlzX3Noc3RrX2VuYWJsZWQo dHNrKT8KCj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgICAgIC8qCj4gKyAg ICAgICAgKiBGb3IgQ0xPTkVfVkZPUksgdGhlIGNoaWxkIHdpbGwgc2hhcmUgdGhlIHBhcmVudHMg c2hhZG93IHN0YWNrLgo+ICsgICAgICAgICogU2V0IGJhc2UgPSAwIGFuZCBzaXplID0gMCwgdGhp cyBpcyBzcGVjaWFsIG1lYW5zIHRvIHRyYWNrIHRoaXMgc3RhdGUKPiArICAgICAgICAqIHNvIHRo ZSBmcmVlaW5nIGxvZ2ljIHJ1biBmb3IgY2hpbGQga25vd3MgdG8gbGVhdmUgaXQgYWxvbmUuCj4g KyAgICAgICAgKi8KPiArICAgICAgIGlmIChhcmdzLT5mbGFncyAmIENMT05FX1ZGT1JLKSB7Cj4g KyAgICAgICAgICAgICAgIHNldF9zaHN0a19iYXNlKHRzaywgMCwgMCk7Cj4gKyAgICAgICAgICAg ICAgIHJldHVybiAwOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIC8qCj4gKyAgICAgICAgKiBG b3IgIUNMT05FX1ZNIHRoZSBjaGlsZCB3aWxsIHVzZSBhIGNvcHkgb2YgdGhlIHBhcmVudHMgc2hh ZG93Cj4gKyAgICAgICAgKiBzdGFjay4KPiArICAgICAgICAqLwo+ICsgICAgICAgaWYgKCEoYXJn cy0+ZmxhZ3MgJiBDTE9ORV9WTSkpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOwo+ICsKPiAr ICAgICAgIC8qCj4gKyAgICAgICAgKiByZWFjaGluZyBoZXJlIG1lYW5zLCBDTE9ORV9WTSB3YXMg c3BlY2lmaWVkIGFuZCB0aHVzIGEgc2VwYXJhdGUgc2hhZG93Cj4gKyAgICAgICAgKiBzdGFjayBp cyBuZWVkZWQgZm9yIG5ldyBjbG9uZWQgdGhyZWFkLiBOb3RlOiBiZWxvdyBhbGxvY2F0aW9uIGlz IGhhcHBlbmluZwo+ICsgICAgICAgICogdXNpbmcgY3VycmVudCBtbS4KPiArICAgICAgICAqLwo+ ICsgICAgICAgc2l6ZSA9IGNhbGNfc2hzdGtfc2l6ZShhcmdzLT5zdGFja19zaXplKTsKPiArICAg ICAgIGFkZHIgPSBhbGxvY2F0ZV9zaGFkb3dfc3RhY2soMCwgc2l6ZSwgMCwgZmFsc2UpOwo+ICsg ICAgICAgaWYgKElTX0VSUl9WQUxVRShhZGRyKSkKPiArICAgICAgICAgICAgICAgcmV0dXJuIGFk ZHI7Cj4gKwo+ICsgICAgICAgc2V0X3Noc3RrX2Jhc2UodHNrLCBhZGRyLCBzaXplKTsKPiArCj4g KyAgICAgICByZXR1cm4gYWRkciArIHNpemU7Cj4gK30KPiArCj4gK3ZvaWQgc2hzdGtfcmVsZWFz ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKPiArewo+ICsgICAgICAgdW5zaWduZWQgbG9uZyBi YXNlID0gMCwgc2l6ZSA9IDA7Cj4gKyAgICAgICAvKiBJZiBzaGFkb3cgc3RhY2sgaXMgbm90IHN1 cHBvcnRlZCBvciBub3QgZW5hYmxlZCwgbm90aGluZyB0byByZWxlYXNlICovCj4gKyAgICAgICBp ZiAoIWNwdV9zdXBwb3J0c19zaGFkb3dfc3RhY2soKSB8fAo+ICsgICAgICAgICAgICAgICAhaXNf c2hzdGtfZW5hYmxlZCh0c2spKQo+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAg ICAgLyoKPiArICAgICAgICAqIFdoZW4gZm9yaygpIHdpdGggQ0xPTkVfVk0gZmFpbHMsIHRoZSBj aGlsZCAodHNrKSBhbHJlYWR5IGhhcyBhCj4gKyAgICAgICAgKiBzaGFkb3cgc3RhY2sgYWxsb2Nh dGVkLCBhbmQgZXhpdF90aHJlYWQoKSBjYWxscyB0aGlzIGZ1bmN0aW9uIHRvCj4gKyAgICAgICAg KiBmcmVlIGl0LiAgSW4gdGhpcyBjYXNlIHRoZSBwYXJlbnQgKGN1cnJlbnQpIGFuZCB0aGUgY2hp bGQgc2hhcmUKPiArICAgICAgICAqIHRoZSBzYW1lIG1tIHN0cnVjdC4gTW92ZSBmb3J3YXJkIG9u bHkgd2hlbiB0aGV5J3JlIHNhbWUuCj4gKyAgICAgICAgKi8KPiArICAgICAgIGlmICghdHNrLT5t bSB8fCB0c2stPm1tICE9IGN1cnJlbnQtPm1tKQo+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4g Kwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIFdlIGtub3cgc2hhZG93IHN0YWNrIGlzIGVuYWJs ZWQgYnV0IGlmIGJhc2UgaXMgTlVMTCwgdGhlbgo+ICsgICAgICAgICogdGhpcyB0YXNrIGlzIG5v dCBtYW5hZ2luZyBpdHMgb3duIHNoYWRvdyBzdGFjayAoQ0xPTkVfVkZPUkspLiBTbwo+ICsgICAg ICAgICogc2tpcCBmcmVlaW5nIGl0Lgo+ICsgICAgICAgICovCj4gKyAgICAgICBiYXNlID0gZ2V0 X3Noc3RrX2Jhc2UodHNrLCAmc2l6ZSk7Cj4gKyAgICAgICBpZiAoIWJhc2UpCj4gKyAgICAgICAg ICAgICAgIHJldHVybjsKPiArCj4gKyAgICAgICB2bV9tdW5tYXAoYmFzZSwgc2l6ZSk7Cj4gKyAg ICAgICBzZXRfc2hzdGtfYmFzZSh0c2ssIDAsIDApOwo+ICt9Cj4KPiAtLQo+IDIuNDUuMAo+Cj4K PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGxpbnV4 LXJpc2N2IG1haWxpbmcgbGlzdAo+IGxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKPiBo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNj diBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==