From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D09E72459D5 for ; Fri, 25 Apr 2025 11:42:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745581370; cv=none; b=SSb9D0loZucItldc9dSxeGhtdFzX58GRr7H2BC8pnjinRyNlFQFJMvzvaBqrWWGsGg5SDId4h82+52F5jno4J++rev1o90ADV7FvEyhmy+nMt6wQsroGgL4m5vclfVUgAz3MPTzQDeT2jntBYAnl3Z2kNaA6dXwGEesRVsMhyWk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745581370; c=relaxed/simple; bh=3Ji49cbT2gfSvIq8CYcUaaNLPtr+CzcaLLKg5QrQiT8=; h=Mime-Version:Content-Type:Date:Message-Id:Subject:Cc:To:From: References:In-Reply-To; b=Bw15Ga/fGkJbqTI01naFUxA7mAypCWbOcFMCtyGURgRTHKVdncpo3Ur1yOKDk3OGgdLUy0ucNaEo2qhxIzbjVyag09yH4fgFyw7+YUgm6W/WG+sRPh3kU032DT1uFz3bh+zznlKNWccEZCTlG1JKCLApgQlS0+bLpuxgsqZNfBs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=nH89DDly; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="nH89DDly" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-43eeb4e09b5so2340465e9.1 for ; Fri, 25 Apr 2025 04:42:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1745581366; x=1746186166; darn=vger.kernel.org; h=in-reply-to:references:from:to:cc:subject:message-id:date :content-transfer-encoding:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=RyVQraiD8choursJseiRmBXZoIZWNTeRkqd4Ai9q43w=; b=nH89DDlyI9q4NUmPG6uPGSIMY5PE3mHWQaGnwuDjzhIpFtGqZltNEeVSOMeVa3SRM2 g7xOdBFxjtVrckTTvBVgyYJXhwJ7XkUHp0bliIaSFY0SEbKl33L40+Gx5gZyqll0Uj1k W8reo0a4FE8SuyO746giZhk3U2tI6Ay2Pxo4hiF9gI0DFyu0jpwx8keDmtDboBcsNqxr lGAbfEV/ym6CSFmy1ogXzThNGMSAbhCnMVcFU9918rAMWsxa5xB6pSR52vYxT7BrmXAv yiguZdBGYAB3ll3wElZKKLKXP+sx59peEi1bnf1Nu0WTq43Q0tJl0R+s2n9MAM4rhMBZ +UwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745581366; x=1746186166; h=in-reply-to:references:from:to:cc:subject:message-id:date :content-transfer-encoding:mime-version:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RyVQraiD8choursJseiRmBXZoIZWNTeRkqd4Ai9q43w=; b=qQWvliSPzcya3exU2y3U8hEPb4R+qWhgcb47MuIoTGVJwi+NkuEYwFgWYIhTA4ySN3 VDIbCU4e1e28kn6qiv9J7clYaqt/ZDnHVmSTvZcUtYjrJofFnZY1rX1Jd03XIMEAZEDd 19Sp+oeTAAU5T/bT0UY3Iqk7lca2F9Qs9l2pTlyvhZHqw3LCw3XFdt1EXVPxJARVF56n aDsgFesP5qMoLbTEuylMMTJHhhZy5hJ5NPv9enghAKoF1liI4sSTHJq37dMfJFcQYw37 hBU75S5I7Kk7AvF+U/rI5ovbH0FmKEaCrzpdUOYm7Fy+8FpxWqSPcgFjHgtnsewEkDDS gGhg== X-Forwarded-Encrypted: i=1; AJvYcCXNGU//opapUbrDCyeXUAF/2FvuT2t7HpSv5SQRI2FL8/qkYkrWhb7iPfBVa6jCLUDXEat3gbwX5KFD@vger.kernel.org X-Gm-Message-State: AOJu0Ywa6giry8DR9HD+us1bBv7mdGqrUvxpiLxBZNEiHQPcQlbuWaV6 SFVuL/DOsbsqbX0YB0zRiBkCemElG0axXHeh7c9s+ycnx3KC2Q5vYXWWYVT6+6c= X-Gm-Gg: ASbGncvXf0Pxw3ecVDapqwIJlKmZWLNV6JcIBpfBlXzMEaKicJZeP+bdqeFKTiCWUT0 KCrzVgAzZC2fxrNogNevWG8zoMjWSmkT35E+AJoU2oMQoDg8lIaEMhmxcFaX07dPxgHTUl9NdpN jt9KcZo+Wt9vc5Iz3hrBK6/PXxRk1xCLuMnzUrBlipdn3lABhrJczC2VQv2+08GdnQOPDSAzV7V dysQBGL0Nk4ySBcv9hy/s1jNd6wOi9jcdJcUrzI36tVqwcVuIPOZ/JLmhT3NEBS5gBXdMd0X8oQ 09gMvGo752o3iYNfKgfMRK94v06eYc4pZevPZVzYj9giVqVx X-Google-Smtp-Source: AGHT+IHSwXKm2b0KR1kACN9BXrADFLHJi8d2f8OL0xZ1T0iAnfUkAWtBlFVbUnZ2xOUkCinbSJhTAg== X-Received: by 2002:a05:600c:1d01:b0:43d:fa5e:50e6 with SMTP id 5b1f17b1804b1-440a66c250dmr6293955e9.9.1745581365815; Fri, 25 Apr 2025 04:42:45 -0700 (PDT) Received: from localhost ([2a02:8308:a00c:e200:84a3:2b0a:bdb8:ce08]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a073e4698csm2104230f8f.62.2025.04.25.04.42.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 04:42:45 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-arch@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Fri, 25 Apr 2025 13:42:44 +0200 Message-Id: Subject: Re: [PATCH v12 12/28] riscv: Implements arch agnostic shadow stack prctls Cc: "Thomas Gleixner" , "Ingo Molnar" , "Borislav Petkov" , "Dave Hansen" , , "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" , "Jann Horn" , "Conor Dooley" , , , , , , , , , , , , , , , , , , , , , , "linux-riscv" To: "Deepak Gupta" From: =?utf-8?q?Radim_Kr=C4=8Dm=C3=A1=C5=99?= References: <20250314-v5_user_cfi_series-v12-0-e51202b53138@rivosinc.com> <20250314-v5_user_cfi_series-v12-12-e51202b53138@rivosinc.com> In-Reply-To: 2025-04-24T11:16:19-07:00, Deepak Gupta : > On Thu, Apr 24, 2025 at 03:36:54PM +0200, Radim Kr=C4=8Dm=C3=A1=C5=99 wro= te: >>2025-04-23T21:44:09-07:00, Deepak Gupta : >>> On Thu, Apr 10, 2025 at 11:45:58AM +0200, Radim Kr=C4=8Dm=C3=A1=C5=99 w= rote: >>>>2025-03-14T14:39:31-07:00, Deepak Gupta : >>>>> diff --git a/arch/riscv/include/asm/usercfi.h b/arch/riscv/include/as= m/usercfi.h >>>>> @@ -14,7 +15,8 @@ struct kernel_clone_args; >>>>> struct cfi_status { >>>>> unsigned long ubcfi_en : 1; /* Enable for backward cfi. */ >>>>> - unsigned long rsvd : ((sizeof(unsigned long) * 8) - 1); >>>>> + unsigned long ubcfi_locked : 1; >>>>> + unsigned long rsvd : ((sizeof(unsigned long) * 8) - 2); >>>> >>>>The rsvd field shouldn't be necessary as the container for the bitfield >>>>is 'unsigned long' sized. >>>> >>>>Why don't we use bools here, though? >>>>It might produce a better binary and we're not hurting for struct size. >>> >>> If you remember one of the previous patch discussion, this goes into >>> `thread_info` Don't want to bloat it. Even if we end shoving into task_= struct, >>> don't want to bloat that either. I can just convert it into bitmask if >>> bitfields are an eyesore here. >> >> "unsigned long rsvd : ((sizeof(unsigned long) * 8) - 2);" >> >>is an eyesore that defines exactly the same as the two lines alone >> >> unsigned long ubcfi_en : 1; >> unsigned long ubcfi_locked : 1; >> >>That one should be removed. >> >>If we have only 4 bits in 4/8 bytes, then bitfields do generate worse >>code than 4 bools and a 0/4 byte hole. The struct size stays the same. >> >>I don't care much about the switch to bools, though, because this code >>is not called often. > > I'll remove the bitfields, have single `unsigned long cfi_control_state` > And do `#define RISCV_UBCFI_EN 1` and so on. I might have seemed too much against the bitfieds, sorry. I am against the rsvd fields, because it is a pointless cognitive overhead and even this series already had a bug in them. #defines should generate the same code as bitfields (worse than bools), so the source code is really a matter of personal preference. (I do prefer bitfields.) >>>>> @@ -262,3 +292,83 @@ void shstk_release(struct task_struct *tsk) >>>>> +int arch_lock_shadow_stack_status(struct task_struct *task, >>>>> + unsigned long arg) >>>>> +{ >>>>> + /* If shtstk not supported or not enabled on task, nothing to lock = here */ >>>>> + if (!cpu_supports_shadow_stack() || >>>>> + !is_shstk_enabled(task) || arg !=3D 0) >>>>> + return -EINVAL; >>>> >>>>The task might want to prevent shadow stack from being enabled? >>> >>> But Why would it want to do that? Task can simply not issue the prctl. = There >>> are glibc tunables as well using which it can be disabled. >> >>The task might do it as some last resort to prevent a buggy code from >>enabling shadow stacks that would just crash. Or whatever complicated >>reason userspace can think of. >> >>It's more the other way around. I wonder why we're removing this option >>when we don't really care what userspace does to itself. >>I think it's complicating the kernel without an obvious gain. > > It just feels wierd. There isn't anything like this for other features li= t-up > via envcfg. Does hwprobe allow this on per-task basis? I'll look into it. I think PMM doesn't allow to lock and the rest don't seem configurable from userspace. It's not that important and we hopefully won't be breaking any userspace if we decided to allow it later, so I'm fine with this version. 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 219D5C369C2 for ; Fri, 25 Apr 2025 13:08:02 +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:In-Reply-To:References:From:To:Cc: Subject:Message-Id:Date:Mime-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=g3dGqMsOPPCX+3a9KabZwaunO51v2CiDbKcDiVCrCGs=; b=VB9C206bmcvYkZ vNs5zszqKfQ6AiydLXqtnJF0ya/ex8M4fsNDE7dCzb2WWwNxW6yO4Ud5LGtWdzccnm2sTn9Bad3lT nkDP2Okwc0FUtaf1FAmWnTZvBZPOhLi1UF66t6JXxkLXjd91+GU2dYpf70MjYz9ukAEVJFaxtYZM7 LCs+edR6a8W3Dv71R2VcV2M2auvcSz2i5M3W4NbQVx/BtQaMxY0FnR+nmYbFnj2qbEZpUTEr5JeCj upED+KgXX+V8BaVxPdgIq6KveDEv+0WUzagdRi7RXDjAQ8lHf01fPRINHD8D2DZK898fZw5+XrlYX wAjSX6+GtMmqPeJuAlxQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u8Ima-0000000HDub-3215; Fri, 25 Apr 2025 13:07:56 +0000 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u8HSB-0000000H0Hs-2hcR for linux-riscv@lists.infradead.org; Fri, 25 Apr 2025 11:42:48 +0000 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-43f106a3591so2062575e9.3 for ; Fri, 25 Apr 2025 04:42:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1745581366; x=1746186166; darn=lists.infradead.org; h=in-reply-to:references:from:to:cc:subject:message-id:date :content-transfer-encoding:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=RyVQraiD8choursJseiRmBXZoIZWNTeRkqd4Ai9q43w=; b=J6sA7Q4S0t2HHLdcGEYNeji8K+gdUay8iV5JJjVK7iiw8GV3l6q77G+09uFVrVesjN 88O462B3EYQCDYceqBnGJK+Ir6hfVaWbxLQlw8YJOXFyPC/OGGLf9c3BtdJLNW3+D0Ns ovWSQQWuzgVtrICH1mA6sLfrj9MLP1IHiOsLIJUEmV5KOt7CZ6oWUOi3M13YjE5aPa1b mvT4IZ4Ut7vX76oWDI8n3/W33d5UmfOloVP8SmTzm19wiISh+J0hMNAeMs5N/gkUcW5d fwxB7+TI1kmWkrymzr0n/HlvqB4qtDqjHeGKqOeFuJGkuDHZT0RlJ5aMNKpC2f+zFlzb 0pVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745581366; x=1746186166; h=in-reply-to:references:from:to:cc:subject:message-id:date :content-transfer-encoding:mime-version:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RyVQraiD8choursJseiRmBXZoIZWNTeRkqd4Ai9q43w=; b=YZn9bBBGbPupHXPX7CmlUQ7JJDzrAIcxIBWD6QxGAb6AtO6oJGwe/4AVfSaM03eLpT koJmn3u3Sja05xaDdFf1IbSZ29W5TH2vw+zNUMvqdKMuPiCMP9jBnp5gDseLNaxK8wwX DzHkAmtxwQ19ZYGQfQlznNjDCdPYm9CrMVbC/v1ty7/EcolOv4RmXwrdB71BLjF7jS0z jbaxaOYYBjX5FvyACKvn62kVgyX/4NikdBr7a3uzmmzOiF3h9sHgmCek1CpnteijIUiw k3U/poWn6+Nh05wdCpMImihS1DN6GF5FHJqGRJTRO6kKbPDdMe7OB707L4HZk3xMr5iY GQxQ== X-Forwarded-Encrypted: i=1; AJvYcCUnYcflSOiwayRxU0ZFZJSYt2FhS3o71hyW8lci0m37WnzBpRXCD/pcySoHHe6MNxcQCWtMA/kZ987mbA==@lists.infradead.org X-Gm-Message-State: AOJu0Yzotpjd6T//RK8lMImmRaaXrXMVM6qresd3WyU6hlBkznwGahPx fgR5mGH6Xyf91sCuh0ct+eifPXRB74iCgTeXJ/s8FSxC2SfK5JvB4O9FGuntKj0= X-Gm-Gg: ASbGncs2dBskPynKCmXS7R6A+H2rB/T1TSeafWMddVcNBLqEY97jrfJgcWpxEuPXNSm MfgL/hl6dfdi4PjNAf/l5tYKvTn9XKdIF6spn1SbRh6/6wi4w225ogI4IeLfqhJ4XKVzhAU7KCq jUEoAHGkiwtGFYCXJ/eMCWenVlzU5yUNaag5XZ4wXdRQjFJK84LvwX2dGI2mBBDuT+GsZKMcMPv 33b3WmiJ+V70rnVBX4sNwnjIq/Xh3qF5kOMFPvtERmy0+SVDD4aAduG2j4TGY6jw29cGGRzjRtF aqxB8+3IJ0fnNjBiyXE9Kp/qa2vfRrJrsBzmmgzbpJjT1sDG X-Google-Smtp-Source: AGHT+IHSwXKm2b0KR1kACN9BXrADFLHJi8d2f8OL0xZ1T0iAnfUkAWtBlFVbUnZ2xOUkCinbSJhTAg== X-Received: by 2002:a05:600c:1d01:b0:43d:fa5e:50e6 with SMTP id 5b1f17b1804b1-440a66c250dmr6293955e9.9.1745581365815; Fri, 25 Apr 2025 04:42:45 -0700 (PDT) Received: from localhost ([2a02:8308:a00c:e200:84a3:2b0a:bdb8:ce08]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a073e4698csm2104230f8f.62.2025.04.25.04.42.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Apr 2025 04:42:45 -0700 (PDT) Mime-Version: 1.0 Date: Fri, 25 Apr 2025 13:42:44 +0200 Message-Id: Subject: Re: [PATCH v12 12/28] riscv: Implements arch agnostic shadow stack prctls Cc: "Thomas Gleixner" , "Ingo Molnar" , "Borislav Petkov" , "Dave Hansen" , , "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" , "Jann Horn" , "Conor Dooley" , , , , , , , , , , , , , , , , , , , , , , "linux-riscv" To: "Deepak Gupta" From: =?utf-8?q?Radim_Kr=C4=8Dm=C3=A1=C5=99?= References: <20250314-v5_user_cfi_series-v12-0-e51202b53138@rivosinc.com> <20250314-v5_user_cfi_series-v12-12-e51202b53138@rivosinc.com> In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250425_044247_690227_612EEC85 X-CRM114-Status: GOOD ( 20.76 ) 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 MjAyNS0wNC0yNFQxMToxNjoxOS0wNzowMCwgRGVlcGFrIEd1cHRhIDxkZWJ1Z0ByaXZvc2luYy5j b20+Ogo+IE9uIFRodSwgQXByIDI0LCAyMDI1IGF0IDAzOjM2OjU0UE0gKzAyMDAsIFJhZGltIEty xI1tw6HFmSB3cm90ZToKPj4yMDI1LTA0LTIzVDIxOjQ0OjA5LTA3OjAwLCBEZWVwYWsgR3VwdGEg PGRlYnVnQHJpdm9zaW5jLmNvbT46Cj4+PiBPbiBUaHUsIEFwciAxMCwgMjAyNSBhdCAxMTo0NTo1 OEFNICswMjAwLCBSYWRpbSBLcsSNbcOhxZkgd3JvdGU6Cj4+Pj4yMDI1LTAzLTE0VDE0OjM5OjMx LTA3OjAwLCBEZWVwYWsgR3VwdGEgPGRlYnVnQHJpdm9zaW5jLmNvbT46Cj4+Pj4+IGRpZmYgLS1n aXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3VzZXJjZmkuaCBiL2FyY2gvcmlzY3YvaW5jbHVk ZS9hc20vdXNlcmNmaS5oCj4+Pj4+IEBAIC0xNCw3ICsxNSw4IEBAIHN0cnVjdCBrZXJuZWxfY2xv bmVfYXJnczsKPj4+Pj4gIHN0cnVjdCBjZmlfc3RhdHVzIHsKPj4+Pj4gIAl1bnNpZ25lZCBsb25n IHViY2ZpX2VuIDogMTsgLyogRW5hYmxlIGZvciBiYWNrd2FyZCBjZmkuICovCj4+Pj4+IC0JdW5z aWduZWQgbG9uZyByc3ZkIDogKChzaXplb2YodW5zaWduZWQgbG9uZykgKiA4KSAtIDEpOwo+Pj4+ PiArCXVuc2lnbmVkIGxvbmcgdWJjZmlfbG9ja2VkIDogMTsKPj4+Pj4gKwl1bnNpZ25lZCBsb25n IHJzdmQgOiAoKHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDgpIC0gMik7Cj4+Pj4KPj4+PlRoZSBy c3ZkIGZpZWxkIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkgYXMgdGhlIGNvbnRhaW5lciBmb3IgdGhl IGJpdGZpZWxkCj4+Pj5pcyAndW5zaWduZWQgbG9uZycgc2l6ZWQuCj4+Pj4KPj4+PldoeSBkb24n dCB3ZSB1c2UgYm9vbHMgaGVyZSwgdGhvdWdoPwo+Pj4+SXQgbWlnaHQgcHJvZHVjZSBhIGJldHRl ciBiaW5hcnkgYW5kIHdlJ3JlIG5vdCBodXJ0aW5nIGZvciBzdHJ1Y3Qgc2l6ZS4KPj4+Cj4+PiBJ ZiB5b3UgcmVtZW1iZXIgb25lIG9mIHRoZSBwcmV2aW91cyBwYXRjaCBkaXNjdXNzaW9uLCB0aGlz IGdvZXMgaW50bwo+Pj4gYHRocmVhZF9pbmZvYCBEb24ndCB3YW50IHRvIGJsb2F0IGl0LiBFdmVu IGlmIHdlIGVuZCBzaG92aW5nIGludG8gdGFza19zdHJ1Y3QsCj4+PiBkb24ndCB3YW50IHRvIGJs b2F0IHRoYXQgZWl0aGVyLiBJIGNhbiBqdXN0IGNvbnZlcnQgaXQgaW50byBiaXRtYXNrIGlmCj4+ PiBiaXRmaWVsZHMgYXJlIGFuIGV5ZXNvcmUgaGVyZS4KPj4KPj4gICJ1bnNpZ25lZCBsb25nIHJz dmQgOiAoKHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDgpIC0gMik7Igo+Pgo+PmlzIGFuIGV5ZXNv cmUgdGhhdCBkZWZpbmVzIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIHR3byBsaW5lcyBhbG9uZQo+ Pgo+PiAgdW5zaWduZWQgbG9uZyB1YmNmaV9lbiA6IDE7Cj4+ICB1bnNpZ25lZCBsb25nIHViY2Zp X2xvY2tlZCA6IDE7Cj4+Cj4+VGhhdCBvbmUgc2hvdWxkIGJlIHJlbW92ZWQuCj4+Cj4+SWYgd2Ug aGF2ZSBvbmx5IDQgYml0cyBpbiA0LzggYnl0ZXMsIHRoZW4gYml0ZmllbGRzIGRvIGdlbmVyYXRl IHdvcnNlCj4+Y29kZSB0aGFuIDQgYm9vbHMgYW5kIGEgMC80IGJ5dGUgaG9sZS4gIFRoZSBzdHJ1 Y3Qgc2l6ZSBzdGF5cyB0aGUgc2FtZS4KPj4KPj5JIGRvbid0IGNhcmUgbXVjaCBhYm91dCB0aGUg c3dpdGNoIHRvIGJvb2xzLCB0aG91Z2gsIGJlY2F1c2UgdGhpcyBjb2RlCj4+aXMgbm90IGNhbGxl ZCBvZnRlbi4KPgo+IEknbGwgcmVtb3ZlIHRoZSBiaXRmaWVsZHMsIGhhdmUgc2luZ2xlIGB1bnNp Z25lZCBsb25nIGNmaV9jb250cm9sX3N0YXRlYAo+IEFuZCBkbyBgI2RlZmluZSBSSVNDVl9VQkNG SV9FTiAxYCBhbmQgc28gb24uCgpJIG1pZ2h0IGhhdmUgc2VlbWVkIHRvbyBtdWNoIGFnYWluc3Qg dGhlIGJpdGZpZWRzLCBzb3JyeS4gIEkgYW0gYWdhaW5zdAp0aGUgcnN2ZCBmaWVsZHMsIGJlY2F1 c2UgaXQgaXMgYSBwb2ludGxlc3MgY29nbml0aXZlIG92ZXJoZWFkIGFuZCBldmVuCnRoaXMgc2Vy aWVzIGFscmVhZHkgaGFkIGEgYnVnIGluIHRoZW0uCgojZGVmaW5lcyBzaG91bGQgZ2VuZXJhdGUg dGhlIHNhbWUgY29kZSBhcyBiaXRmaWVsZHMgKHdvcnNlIHRoYW4gYm9vbHMpLApzbyB0aGUgc291 cmNlIGNvZGUgaXMgcmVhbGx5IGEgbWF0dGVyIG9mIHBlcnNvbmFsIHByZWZlcmVuY2UuCihJIGRv IHByZWZlciBiaXRmaWVsZHMuKQoKPj4+Pj4gQEAgLTI2MiwzICsyOTIsODMgQEAgdm9pZCBzaHN0 a19yZWxlYXNlKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQo+Pj4+PiAraW50IGFyY2hfbG9ja19z aGFkb3dfc3RhY2tfc3RhdHVzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywKPj4+Pj4gKwkJCQkg IHVuc2lnbmVkIGxvbmcgYXJnKQo+Pj4+PiArewo+Pj4+PiArCS8qIElmIHNodHN0ayBub3Qgc3Vw cG9ydGVkIG9yIG5vdCBlbmFibGVkIG9uIHRhc2ssIG5vdGhpbmcgdG8gbG9jayBoZXJlICovCj4+ Pj4+ICsJaWYgKCFjcHVfc3VwcG9ydHNfc2hhZG93X3N0YWNrKCkgfHwKPj4+Pj4gKwkgICAgIWlz X3Noc3RrX2VuYWJsZWQodGFzaykgfHwgYXJnICE9IDApCj4+Pj4+ICsJCXJldHVybiAtRUlOVkFM Owo+Pj4+Cj4+Pj5UaGUgdGFzayBtaWdodCB3YW50IHRvIHByZXZlbnQgc2hhZG93IHN0YWNrIGZy b20gYmVpbmcgZW5hYmxlZD8KPj4+Cj4+PiBCdXQgV2h5IHdvdWxkIGl0IHdhbnQgdG8gZG8gdGhh dD8gVGFzayBjYW4gc2ltcGx5IG5vdCBpc3N1ZSB0aGUgcHJjdGwuIFRoZXJlCj4+PiBhcmUgZ2xp YmMgdHVuYWJsZXMgYXMgd2VsbCB1c2luZyB3aGljaCBpdCBjYW4gYmUgZGlzYWJsZWQuCj4+Cj4+ VGhlIHRhc2sgbWlnaHQgZG8gaXQgYXMgc29tZSBsYXN0IHJlc29ydCB0byBwcmV2ZW50IGEgYnVn Z3kgY29kZSBmcm9tCj4+ZW5hYmxpbmcgc2hhZG93IHN0YWNrcyB0aGF0IHdvdWxkIGp1c3QgY3Jh c2guICBPciB3aGF0ZXZlciBjb21wbGljYXRlZAo+PnJlYXNvbiB1c2Vyc3BhY2UgY2FuIHRoaW5r IG9mLgo+Pgo+Pkl0J3MgbW9yZSB0aGUgb3RoZXIgd2F5IGFyb3VuZC4gIEkgd29uZGVyIHdoeSB3 ZSdyZSByZW1vdmluZyB0aGlzIG9wdGlvbgo+PndoZW4gd2UgZG9uJ3QgcmVhbGx5IGNhcmUgd2hh dCB1c2Vyc3BhY2UgZG9lcyB0byBpdHNlbGYuCj4+SSB0aGluayBpdCdzIGNvbXBsaWNhdGluZyB0 aGUga2VybmVsIHdpdGhvdXQgYW4gb2J2aW91cyBnYWluLgo+Cj4gSXQganVzdCBmZWVscyB3aWVy ZC4gVGhlcmUgaXNuJ3QgYW55dGhpbmcgbGlrZSB0aGlzIGZvciBvdGhlciBmZWF0dXJlcyBsaXQt dXAKPiB2aWEgZW52Y2ZnLiBEb2VzIGh3cHJvYmUgYWxsb3cgdGhpcyBvbiBwZXItdGFzayBiYXNp cz8gSSdsbCBsb29rIGludG8gaXQuCgpJIHRoaW5rIFBNTSBkb2Vzbid0IGFsbG93IHRvIGxvY2sg YW5kIHRoZSByZXN0IGRvbid0IHNlZW0gY29uZmlndXJhYmxlCmZyb20gdXNlcnNwYWNlLgoKSXQn cyBub3QgdGhhdCBpbXBvcnRhbnQgYW5kIHdlIGhvcGVmdWxseSB3b24ndCBiZSBicmVha2luZyBh bnkgdXNlcnNwYWNlCmlmIHdlIGRlY2lkZWQgdG8gYWxsb3cgaXQgbGF0ZXIsIHNvIEknbSBmaW5l IHdpdGggdGhpcyB2ZXJzaW9uLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1yaXNjdgo=