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=-18.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_IN_DEF_DKIM_WL 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 BC410C433E0 for ; Tue, 16 Mar 2021 11:45:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 82B2864FB5 for ; Tue, 16 Mar 2021 11:45:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237444AbhCPLpI (ORCPT ); Tue, 16 Mar 2021 07:45:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44214 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237403AbhCPLoc (ORCPT ); Tue, 16 Mar 2021 07:44:32 -0400 Received: from mail-qv1-xf2b.google.com (mail-qv1-xf2b.google.com [IPv6:2607:f8b0:4864:20::f2b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 90230C06174A for ; Tue, 16 Mar 2021 04:44:31 -0700 (PDT) Received: by mail-qv1-xf2b.google.com with SMTP id t16so9311351qvr.12 for ; Tue, 16 Mar 2021 04:44:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=NTsYJCryBLJmBTqd/Py0Dz+f5uiVV4FtLBaghBowCOY=; b=TBnl/KM9TU9p3coDdCDbo4TpBTM+I6Lu4+vfs0NooyhGrAknmu42FsT84Ix0sGuAPt Lng68vrtJgMiw4W9CmAOvLdv3JoK+52MrGC0LFf4EkPb0xm5cCTzSz7g5xW+EqEYV/6S WMNY+pXa3zNE8eMcjELxJzryDHFWzXAeKlmSNWWt2xEas8Fv7dfXt4nkwnWgGPNwhwo4 lxMLXOSyYZZ5KDMD06BaYUNWDasIuZ7tEf1MsgK8NTj4enGU1PTYc+uJiqdZWoXeum8v jHqTLJ0IO2DhGJ9bpb2lBAjJisQyIxy351+bwq1wx/CbyLgbmKXCJSh7QnInr/GaP8uF uofQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=NTsYJCryBLJmBTqd/Py0Dz+f5uiVV4FtLBaghBowCOY=; b=RRY6ZkNkk0dEJ1etpXHfedpXRDckfkNu++M9eYuMr/R4oaQzr8YNGs7sKllzWragpW KgUMCsGKjmUqmM3jlzlcYgZLEA/lrtMU1G8JlfggK6E2WYnszEvZJ02ZrKXYSdJGPB5i GbITultnQS1bbHIZGQvcA1Wj+C5xzNNgPmOU4qfvWeBODYgbtV9Cb3cR/BpZDTKVe7HA ooDvPW56VfiiNaehjKCiMi6VRCRDIpJHjhNmB8dKWXm26jAYoByqF906Qx+Cz1MjBLW0 NBgeGKOBw96uKVLZmsN4fqNG/3y3mcPcNmEda07HZwwbxdCVaSuejrRWvd9oxesO5HGJ 2YkA== X-Gm-Message-State: AOAM530fn5Z6U0FZ89lD1iGsr9RjwXxvFTPxgLMCMx6odFwLkcKVXKhh 5pnMkRg/eX0LU7wqk+cLGOKM1uv9QPdcs2wlKE3T8A== X-Google-Smtp-Source: ABdhPJyLRD4J+HqEmUtaqMButRCVbSTrKpNp4w0KfbKrtVqm1s3EXPUUKtGMxrNEt0zw7/mWKpAol9HqLdnV+mDLyTg= X-Received: by 2002:ad4:50d0:: with SMTP id e16mr29583746qvq.37.1615895070392; Tue, 16 Mar 2021 04:44:30 -0700 (PDT) MIME-Version: 1.0 References: <000000000000b74f1b05bd316729@google.com> <84b0471d-42c1-175f-ae1d-a18c310c7f77@codethink.co.uk> <795597a1-ec87-e09e-d073-3daf10422abb@ghiti.fr> <12d4137e-6c14-bc41-4bbc-955ce46198d2@codethink.co.uk> <8ebea51d-b03c-e6de-fa1c-d47091c54e45@codethink.co.uk> In-Reply-To: <8ebea51d-b03c-e6de-fa1c-d47091c54e45@codethink.co.uk> From: Dmitry Vyukov Date: Tue, 16 Mar 2021 12:44:18 +0100 Message-ID: Subject: Re: [syzbot] BUG: unable to handle kernel access to user memory in schedule_tail To: Ben Dooks Cc: Alex Ghiti , syzbot , Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv , Daniel Bristot de Oliveira , Benjamin Segall , dietmar.eggemann@arm.com, Juri Lelli , LKML , Mel Gorman , Ingo Molnar , Peter Zijlstra , Steven Rostedt , syzkaller-bugs , Vincent Guittot Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 16, 2021 at 12:35 PM Ben Dooks wrot= e: > >>>> On 12/03/2021 16:25, Alex Ghiti wrote: > >>>>> > >>>>> > >>>>> Le 3/12/21 =C3=A0 10:12 AM, Dmitry Vyukov a =C3=A9crit : > >>>>>> On Fri, Mar 12, 2021 at 2:50 PM Ben Dooks > >>>>>> wrote: > >>>>>>> > >>>>>>> On 10/03/2021 17:16, Dmitry Vyukov wrote: > >>>>>>>> On Wed, Mar 10, 2021 at 5:46 PM syzbot > >>>>>>>> wrote: > >>>>>>>>> > >>>>>>>>> Hello, > >>>>>>>>> > >>>>>>>>> syzbot found the following issue on: > >>>>>>>>> > >>>>>>>>> HEAD commit: 0d7588ab riscv: process: Fix no prototype for > >>>>>>>>> arch_dup_tas.. > >>>>>>>>> git tree: > >>>>>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git f= ixes > >>>>>>>>> console output: > >>>>>>>>> https://syzkaller.appspot.com/x/log.txt?x=3D1212c6e6d00000 > >>>>>>>>> kernel config: > >>>>>>>>> https://syzkaller.appspot.com/x/.config?x=3De3c595255fb2d136 > >>>>>>>>> dashboard link: > >>>>>>>>> https://syzkaller.appspot.com/bug?extid=3De74b94fe601ab9552d69 > >>>>>>>>> userspace arch: riscv64 > >>>>>>>>> > >>>>>>>>> Unfortunately, I don't have any reproducer for this issue yet. > >>>>>>>>> > >>>>>>>>> IMPORTANT: if you fix the issue, please add the following tag t= o > >>>>>>>>> the commit: > >>>>>>>>> Reported-by: syzbot+e74b94fe601ab9552d69@syzkaller.appspotmail.= com > >>>>>>>> > >>>>>>>> +riscv maintainers > >>>>>>>> > >>>>>>>> This is riscv64-specific. > >>>>>>>> I've seen similar crashes in put_user in other places. It looks = like > >>>>>>>> put_user crashes in the user address is not mapped/protected (?)= . > >>>>>>> > >>>>>>> I've been having a look, and this seems to be down to access of t= he > >>>>>>> tsk->set_child_tid variable. I assume the fuzzing here is to pass= a > >>>>>>> bad address to clone? > >>>>>>> > >>>>>>> From looking at the code, the put_user() code should have set= the > >>>>>>> relevant SR_SUM bit (the value for this, which is 1<<18 is in the > >>>>>>> s2 register in the crash report) and from looking at the compiler > >>>>>>> output from my gcc-10, the code looks to be dong the relevant csr= s > >>>>>>> and then csrc around the put_user > >>>>>>> > >>>>>>> So currently I do not understand how the above could have happene= d > >>>>>>> over than something re-tried the code seqeunce and ended up retry= ing > >>>>>>> the faulting instruction without the SR_SUM bit set. > >>>>>> > >>>>>> I would maybe blame qemu for randomly resetting SR_SUM, but it's > >>>>>> strange that 99% of these crashes are in schedule_tail. If it woul= d be > >>>>>> qemu, then they would be more evenly distributed... > >>>>>> > >>>>>> Another observation: looking at a dozen of crash logs, in none of > >>>>>> these cases fuzzer was actually trying to fuzz clone with some ins= ane > >>>>>> arguments. So it looks like completely normal clone's (e..g coming > >>>>>> from pthread_create) result in this crash. > >>>>>> > >>>>>> I also wonder why there is ret_from_exception, is it normal? I see > >>>>>> handle_exception disables SR_SUM: > >>>>> > >>>>> csrrc does the right thing: it cleans SR_SUM bit in status but save= s the > >>>>> previous value that will get correctly restored. > >>>>> > >>>>> ("The CSRRC (Atomic Read and Clear Bits in CSR) instruction reads t= he > >>>>> value of the CSR, zero-extends the value to XLEN bits, and writes i= t to > >>>>> integer registerrd. The initial value in integerregisterrs1is trea= ted > >>>>> as a bit mask that specifies bit positions to be cleared in the CSR= . Any > >>>>> bitthat is high inrs1will cause the corresponding bit to be cleared= in > >>>>> the CSR, if that CSR bit iswritable. Other bits in the CSR are > >>>>> unaffected.") > >>>> > >>>> I think there may also be an understanding issue on what the SR_SUM > >>>> bit does. I thought if it is set, M->U accesses would fault, which i= s > >>>> why it gets set early on. But from reading the uaccess code it looks > >>>> like the uaccess code sets it on entry and then clears on exit. > >>>> > >>>> I am very confused. Is there a master reference for rv64? > >>>> > >>>> https://people.eecs.berkeley.edu/~krste/papers/riscv-privileged-v1.9= .pdf > >>>> seems to state PUM is the SR_SUM bit, and that (if set) disabled > >>>> > >>>> Quote: > >>>> The PUM (Protect User Memory) bit modifies the privilege with wh= ich > >>>> S-mode loads, stores, and instruction fetches access virtual memory. > >>>> When PUM=3D0, translation and protection behave as normal. When PUM= =3D1, > >>>> S-mode memory accesses to pages that are accessible by U-mode (U=3D1= in > >>>> Figure 4.19) will fault. PUM has no effect when executing in U-mode > >>>> > >>>> > >>>>>> https://elixir.bootlin.com/linux/v5.12-rc2/source/arch/riscv/kerne= l/entry.S#L73 > >>>>>> > >>>>> > >>>>> Still no luck for the moment, can't reproduce it locally, my test i= s > >>>>> maybe not that good (I created threads all day long in order to tri= gger > >>>>> the put_user of schedule_tail). > >>>> > >>>> It may of course depend on memory and other stuff. I did try to see = if > >>>> it was possible to clone() with the child_tid address being a valid = but > >>>> not mapped page... > >>>> > >>>>> Given that the path you mention works most of the time, and that th= e > >>>>> status register in the stack trace shows the SUM bit is not set whe= reas > >>>>> it is set in put_user, I'm leaning toward some race condition (mayb= e an > >>>>> interrupt that arrives at the "wrong" time) or a qemu issue as you > >>>>> mentioned. > >>>> > >>>> I suppose this is possible. From what I read it should get to the > >>>> point of being there with the SUM flag cleared, so either something > >>>> went wrong in trying to fix the instruction up or there's some other > >>>> error we're missing. > >>>> > >>>>> To eliminate qemu issues, do you have access to some HW ? Or to > >>>>> different qemu versions ? > >>>> > >>>> I do have access to a Microchip Polarfire board. I just need the > >>>> instructions on how to setup the test-code to make it work on the > >>>> hardware. > >>> > >>> For full syzkaller support, it would need to know how to reboot these > >>> boards and get access to the console. > >>> syzkaller has a stop-gap VM backend which just uses ssh to a physical > >>> machine and expects the kernel to reboot on its own after any crashes= . > >>> > >>> But I actually managed to reproduce it in an even simpler setup. > >>> Assuming you have Go 1.15 and riscv64 cross-compiler gcc installed > >>> > >>> $ go get -u -d github.com/google/syzkaller/... > >>> $ cd $GOPATH/src/github.com/google/syzkaller > >>> $ make stress executor TARGETARCH=3Driscv64 > >>> $ scp bin/linux_riscv64/syz-execprog bin/linux_riscv64/syz-executor > >>> your_machine:/ > >>> > >>> Then run ./syz-stress on the machine. > >>> On the first run it crashed it with some other bug, on the second run > >>> I got the crash in schedule_tail. > >>> With qemu tcg I also added -slowdown=3D10 flag to syz-stress to scale > >>> all timeouts, if native execution is faster, then you don't need it. > >> > >> Ok, not sure what's going on. I get a lot of errors similar to: > >>> > >>> 2021/03/15 21:35:20 transitively unsupported: ioctl$SNAPSHOT_CREATE_I= MAGE: no syscalls can create resource fd_snapshot, enable some syscalls tha= t can create it [openat$snapshot] > > > > This is not an error, just a notification that some syscalls are not > > enabled in the kernel and won't be fuzzed. > > > >> Followed by: > >> > >>> 2021/03/15 21:35:48 executed 0 programs > >>> 2021/03/15 21:35:48 failed to create execution environment: failed to= mmap shm file: invalid argument > >> > >> The qemu is 5.2.0 and root is Debian/unstable riscv64 (same as chroot > >> used to build the syz tools) > > > > This is an error. But I see it the first time ever. > > It comes from here: > > https://github.com/google/syzkaller/blob/fdb2bb2c23ee709880407f56307e28= 00ad27e9ae/pkg/osutil/osutil_unix.go#L119-L121 > > There should be pretty simple logic inside of syscall.Mmap. Perhaps > > you are using some older Go toolchain with incomplete riscv support? > > I think I've used 1.14 and 1.15. But there is already 1.16. You can > > always download a toolchain here: > > https://golang.org/dl/ > > Hmm it would have been useful to print out what file it failed to map. What do you want to do with the file name? It's not one of pre-existing files, so the name won't tell the user much. It's just a temp file, it won't exist afterwards and it's easy to create an equivalent file. It was created in that function with: f, err =3D ioutil.TempFile("./", "syzkaller-shm") if err !=3D nil { err =3D fmt.Errorf("failed to create temp file: %v", err) return } if err =3D f.Truncate(int64(size)); err !=3D nil { err =3D fmt.Errorf("failed to truncate shm file: %v", err) f.Close() os.Remove(f.Name()) return } f.Close() fname :=3D f.Name() f, err =3D os.OpenFile(f.Name(), os.O_RDWR, DefaultFilePerm) if err !=3D nil { err =3D fmt.Errorf("failed to open shm file: %v", err) os.Remove(fname) return } > I've got go 1.15 from the debian/unstable riscv64 chroot. > I'll have a look at this in a bit to see if it throws the same issue on > a real system. > > > -- > Ben Dooks http://www.codethink.co.uk/ > Senior Engineer Codethink - Providing Genius > > https://www.codethink.co.uk/privacy.html > > -- > You received this message because you are subscribed to the Google Groups= "syzkaller-bugs" group. > To unsubscribe from this group and stop receiving emails from it, send an= email to syzkaller-bugs+unsubscribe@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgi= d/syzkaller-bugs/8ebea51d-b03c-e6de-fa1c-d47091c54e45%40codethink.co.uk. 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=-9.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 68EB0C433E0 for ; Tue, 16 Mar 2021 11:44:58 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 C0BD465020 for ; Tue, 16 Mar 2021 11:44:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C0BD465020 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; 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=t7yPlxtepmu6BjH85nUTqInVNAbj39yjz6uAEk+MV4M=; b=Pf1v9qXWP4rSfH8eV7GMgeVBp OYhgimrgl5c80tOXe9jWkoRXjkUQ1/XZnHbOT/7Q7JfzTlMP117cV5LN/WtnkIuXY+7N88YPK6f66 PpX/EIB95R6HiExDo4nBUyBcyGgQm/vyknJm+ucQCsbgj2rEj6xUC5X32KAOIXs9lsnTQvPvhgorq 873pjEjCoUMQx7nahEtYeIcvsPH4rWUWns3i3VEp8Cbqq3TgsaeZ1n95w72D4VNnXmyE4OxG8hC3I Yn/TbEUAmcp/hRSOulhP9+KUWkUjgFJYy7osOYxFj0Dl2yw1PyvYsHDFmB9vWLvlwmeshuy+5PJgA 033Wq8V0g==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lM87x-000buO-7I; Tue, 16 Mar 2021 11:44:45 +0000 Received: from mail-qv1-xf2f.google.com ([2607:f8b0:4864:20::f2f]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lM87n-000btJ-Nm for linux-riscv@lists.infradead.org; Tue, 16 Mar 2021 11:44:38 +0000 Received: by mail-qv1-xf2f.google.com with SMTP id q9so3853576qvm.6 for ; Tue, 16 Mar 2021 04:44:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=NTsYJCryBLJmBTqd/Py0Dz+f5uiVV4FtLBaghBowCOY=; b=TBnl/KM9TU9p3coDdCDbo4TpBTM+I6Lu4+vfs0NooyhGrAknmu42FsT84Ix0sGuAPt Lng68vrtJgMiw4W9CmAOvLdv3JoK+52MrGC0LFf4EkPb0xm5cCTzSz7g5xW+EqEYV/6S WMNY+pXa3zNE8eMcjELxJzryDHFWzXAeKlmSNWWt2xEas8Fv7dfXt4nkwnWgGPNwhwo4 lxMLXOSyYZZ5KDMD06BaYUNWDasIuZ7tEf1MsgK8NTj4enGU1PTYc+uJiqdZWoXeum8v jHqTLJ0IO2DhGJ9bpb2lBAjJisQyIxy351+bwq1wx/CbyLgbmKXCJSh7QnInr/GaP8uF uofQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=NTsYJCryBLJmBTqd/Py0Dz+f5uiVV4FtLBaghBowCOY=; b=X2k5ILjdaqnm2EsbNWglzxDFJkDmRXZVZf8q96vOVP8bQeMzffJQ1IyAD1xJrWbVAm HkDLT7SKJQ/St0kX+PjIRxjCIh3+GRHUCjc3QAAgTTdTrJc1Nw7WkXCcGATpMVZrzrxZ rfFfh2R+7WBrAHOWB7e32Y55AqqC9B3+xYzTnzfxeSJXz+zRsJUjV5b1Qej6+DRZwaw5 07BXYa6Qo5IrNqEkt3zCAQuw3ahpxLI7RVv5Cj9/3+Qooc5wG6VR3UdW5EwfInp5Np+h /ckpJ0dXsJPvNw6bzKjrkqUDOUXzHzMHJdEb/rtBzWgbbwdQ2iZpY0oXk+Jbcn9/h8wr a8jg== X-Gm-Message-State: AOAM530qMZhm2lX7zAL9ShFUfJHo8iefo51iCaHfcxh2DjbCld9ix6H0 Zsz+kl0GmwQ/OH155Qhop/foQwY5NhRwSQD4KMxYXw== X-Google-Smtp-Source: ABdhPJyLRD4J+HqEmUtaqMButRCVbSTrKpNp4w0KfbKrtVqm1s3EXPUUKtGMxrNEt0zw7/mWKpAol9HqLdnV+mDLyTg= X-Received: by 2002:ad4:50d0:: with SMTP id e16mr29583746qvq.37.1615895070392; Tue, 16 Mar 2021 04:44:30 -0700 (PDT) MIME-Version: 1.0 References: <000000000000b74f1b05bd316729@google.com> <84b0471d-42c1-175f-ae1d-a18c310c7f77@codethink.co.uk> <795597a1-ec87-e09e-d073-3daf10422abb@ghiti.fr> <12d4137e-6c14-bc41-4bbc-955ce46198d2@codethink.co.uk> <8ebea51d-b03c-e6de-fa1c-d47091c54e45@codethink.co.uk> In-Reply-To: <8ebea51d-b03c-e6de-fa1c-d47091c54e45@codethink.co.uk> From: Dmitry Vyukov Date: Tue, 16 Mar 2021 12:44:18 +0100 Message-ID: Subject: Re: [syzbot] BUG: unable to handle kernel access to user memory in schedule_tail To: Ben Dooks Cc: Alex Ghiti , syzbot , Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv , Daniel Bristot de Oliveira , Benjamin Segall , dietmar.eggemann@arm.com, Juri Lelli , LKML , Mel Gorman , Ingo Molnar , Peter Zijlstra , Steven Rostedt , syzkaller-bugs , Vincent Guittot X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210316_114436_105944_43AC2DF3 X-CRM114-Status: GOOD ( 65.82 ) 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 T24gVHVlLCBNYXIgMTYsIDIwMjEgYXQgMTI6MzUgUE0gQmVuIERvb2tzIDxiZW4uZG9va3NAY29k ZXRoaW5rLmNvLnVrPiB3cm90ZToKPiA+Pj4+IE9uIDEyLzAzLzIwMjEgMTY6MjUsIEFsZXggR2hp dGkgd3JvdGU6Cj4gPj4+Pj4KPiA+Pj4+Pgo+ID4+Pj4+IExlIDMvMTIvMjEgw6AgMTA6MTIgQU0s IERtaXRyeSBWeXVrb3YgYSDDqWNyaXQgOgo+ID4+Pj4+PiBPbiBGcmksIE1hciAxMiwgMjAyMSBh dCAyOjUwIFBNIEJlbiBEb29rcyA8YmVuLmRvb2tzQGNvZGV0aGluay5jby51az4KPiA+Pj4+Pj4g d3JvdGU6Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gT24gMTAvMDMvMjAyMSAxNzoxNiwgRG1pdHJ5IFZ5 dWtvdiB3cm90ZToKPiA+Pj4+Pj4+PiBPbiBXZWQsIE1hciAxMCwgMjAyMSBhdCA1OjQ2IFBNIHN5 emJvdAo+ID4+Pj4+Pj4+IDxzeXpib3QrZTc0Yjk0ZmU2MDFhYjk1NTJkNjlAc3l6a2FsbGVyLmFw cHNwb3RtYWlsLmNvbT4gd3JvdGU6Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IEhlbGxvLAo+ID4+ Pj4+Pj4+Pgo+ID4+Pj4+Pj4+PiBzeXpib3QgZm91bmQgdGhlIGZvbGxvd2luZyBpc3N1ZSBvbjoK PiA+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4gSEVBRCBjb21taXQ6ICAgIDBkNzU4OGFiIHJpc2N2OiBw cm9jZXNzOiBGaXggbm8gcHJvdG90eXBlIGZvcgo+ID4+Pj4+Pj4+PiBhcmNoX2R1cF90YXMuLgo+ ID4+Pj4+Pj4+PiBnaXQgdHJlZToKPiA+Pj4+Pj4+Pj4gZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHVi L3NjbS9saW51eC9rZXJuZWwvZ2l0L3Jpc2N2L2xpbnV4LmdpdCBmaXhlcwo+ID4+Pj4+Pj4+PiBj b25zb2xlIG91dHB1dDoKPiA+Pj4+Pj4+Pj4gaHR0cHM6Ly9zeXprYWxsZXIuYXBwc3BvdC5jb20v eC9sb2cudHh0P3g9MTIxMmM2ZTZkMDAwMDAKPiA+Pj4+Pj4+Pj4ga2VybmVsIGNvbmZpZzoKPiA+ Pj4+Pj4+Pj4gaHR0cHM6Ly9zeXprYWxsZXIuYXBwc3BvdC5jb20veC8uY29uZmlnP3g9ZTNjNTk1 MjU1ZmIyZDEzNgo+ID4+Pj4+Pj4+PiBkYXNoYm9hcmQgbGluazoKPiA+Pj4+Pj4+Pj4gaHR0cHM6 Ly9zeXprYWxsZXIuYXBwc3BvdC5jb20vYnVnP2V4dGlkPWU3NGI5NGZlNjAxYWI5NTUyZDY5Cj4g Pj4+Pj4+Pj4+IHVzZXJzcGFjZSBhcmNoOiByaXNjdjY0Cj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+ IFVuZm9ydHVuYXRlbHksIEkgZG9uJ3QgaGF2ZSBhbnkgcmVwcm9kdWNlciBmb3IgdGhpcyBpc3N1 ZSB5ZXQuCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IElNUE9SVEFOVDogaWYgeW91IGZpeCB0aGUg aXNzdWUsIHBsZWFzZSBhZGQgdGhlIGZvbGxvd2luZyB0YWcgdG8KPiA+Pj4+Pj4+Pj4gdGhlIGNv bW1pdDoKPiA+Pj4+Pj4+Pj4gUmVwb3J0ZWQtYnk6IHN5emJvdCtlNzRiOTRmZTYwMWFiOTU1MmQ2 OUBzeXprYWxsZXIuYXBwc3BvdG1haWwuY29tCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiArcmlzY3Yg bWFpbnRhaW5lcnMKPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IFRoaXMgaXMgcmlzY3Y2NC1zcGVjaWZp Yy4KPiA+Pj4+Pj4+PiBJJ3ZlIHNlZW4gc2ltaWxhciBjcmFzaGVzIGluIHB1dF91c2VyIGluIG90 aGVyIHBsYWNlcy4gSXQgbG9va3MgbGlrZQo+ID4+Pj4+Pj4+IHB1dF91c2VyIGNyYXNoZXMgaW4g dGhlIHVzZXIgYWRkcmVzcyBpcyBub3QgbWFwcGVkL3Byb3RlY3RlZCAoPykuCj4gPj4+Pj4+Pgo+ ID4+Pj4+Pj4gSSd2ZSBiZWVuIGhhdmluZyBhIGxvb2ssIGFuZCB0aGlzIHNlZW1zIHRvIGJlIGRv d24gdG8gYWNjZXNzIG9mIHRoZQo+ID4+Pj4+Pj4gdHNrLT5zZXRfY2hpbGRfdGlkIHZhcmlhYmxl LiBJIGFzc3VtZSB0aGUgZnV6emluZyBoZXJlIGlzIHRvIHBhc3MgYQo+ID4+Pj4+Pj4gYmFkIGFk ZHJlc3MgdG8gY2xvbmU/Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gICAgIEZyb20gbG9va2luZyBhdCB0 aGUgY29kZSwgdGhlIHB1dF91c2VyKCkgY29kZSBzaG91bGQgaGF2ZSBzZXQgdGhlCj4gPj4+Pj4+ PiByZWxldmFudCBTUl9TVU0gYml0ICh0aGUgdmFsdWUgZm9yIHRoaXMsIHdoaWNoIGlzIDE8PDE4 IGlzIGluIHRoZQo+ID4+Pj4+Pj4gczIgcmVnaXN0ZXIgaW4gdGhlIGNyYXNoIHJlcG9ydCkgYW5k IGZyb20gbG9va2luZyBhdCB0aGUgY29tcGlsZXIKPiA+Pj4+Pj4+IG91dHB1dCBmcm9tIG15IGdj Yy0xMCwgdGhlIGNvZGUgbG9va3MgdG8gYmUgZG9uZyB0aGUgcmVsZXZhbnQgY3Nycwo+ID4+Pj4+ Pj4gYW5kIHRoZW4gY3NyYyBhcm91bmQgdGhlIHB1dF91c2VyCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4g U28gY3VycmVudGx5IEkgZG8gbm90IHVuZGVyc3RhbmQgaG93IHRoZSBhYm92ZSBjb3VsZCBoYXZl IGhhcHBlbmVkCj4gPj4+Pj4+PiBvdmVyIHRoYW4gc29tZXRoaW5nIHJlLXRyaWVkIHRoZSBjb2Rl IHNlcWV1bmNlIGFuZCBlbmRlZCB1cCByZXRyeWluZwo+ID4+Pj4+Pj4gdGhlIGZhdWx0aW5nIGlu c3RydWN0aW9uIHdpdGhvdXQgdGhlIFNSX1NVTSBiaXQgc2V0Lgo+ID4+Pj4+Pgo+ID4+Pj4+PiBJ IHdvdWxkIG1heWJlIGJsYW1lIHFlbXUgZm9yIHJhbmRvbWx5IHJlc2V0dGluZyBTUl9TVU0sIGJ1 dCBpdCdzCj4gPj4+Pj4+IHN0cmFuZ2UgdGhhdCA5OSUgb2YgdGhlc2UgY3Jhc2hlcyBhcmUgaW4g c2NoZWR1bGVfdGFpbC4gSWYgaXQgd291bGQgYmUKPiA+Pj4+Pj4gcWVtdSwgdGhlbiB0aGV5IHdv dWxkIGJlIG1vcmUgZXZlbmx5IGRpc3RyaWJ1dGVkLi4uCj4gPj4+Pj4+Cj4gPj4+Pj4+IEFub3Ro ZXIgb2JzZXJ2YXRpb246IGxvb2tpbmcgYXQgYSBkb3plbiBvZiBjcmFzaCBsb2dzLCBpbiBub25l IG9mCj4gPj4+Pj4+IHRoZXNlIGNhc2VzIGZ1enplciB3YXMgYWN0dWFsbHkgdHJ5aW5nIHRvIGZ1 enogY2xvbmUgd2l0aCBzb21lIGluc2FuZQo+ID4+Pj4+PiBhcmd1bWVudHMuIFNvIGl0IGxvb2tz IGxpa2UgY29tcGxldGVseSBub3JtYWwgY2xvbmUncyAoZS4uZyBjb21pbmcKPiA+Pj4+Pj4gZnJv bSBwdGhyZWFkX2NyZWF0ZSkgcmVzdWx0IGluIHRoaXMgY3Jhc2guCj4gPj4+Pj4+Cj4gPj4+Pj4+ IEkgYWxzbyB3b25kZXIgd2h5IHRoZXJlIGlzIHJldF9mcm9tX2V4Y2VwdGlvbiwgaXMgaXQgbm9y bWFsPyBJIHNlZQo+ID4+Pj4+PiBoYW5kbGVfZXhjZXB0aW9uIGRpc2FibGVzIFNSX1NVTToKPiA+ Pj4+Pgo+ID4+Pj4+IGNzcnJjIGRvZXMgdGhlIHJpZ2h0IHRoaW5nOiBpdCBjbGVhbnMgU1JfU1VN IGJpdCBpbiBzdGF0dXMgYnV0IHNhdmVzIHRoZQo+ID4+Pj4+IHByZXZpb3VzIHZhbHVlIHRoYXQg d2lsbCBnZXQgY29ycmVjdGx5IHJlc3RvcmVkLgo+ID4+Pj4+Cj4gPj4+Pj4gKCJUaGUgQ1NSUkMg KEF0b21pYyBSZWFkIGFuZCBDbGVhciBCaXRzIGluIENTUikgaW5zdHJ1Y3Rpb24gcmVhZHMgdGhl Cj4gPj4+Pj4gdmFsdWUgb2YgdGhlIENTUiwgemVyby1leHRlbmRzIHRoZSB2YWx1ZSB0byBYTEVO IGJpdHMsIGFuZCB3cml0ZXMgaXQgdG8KPiA+Pj4+PiBpbnRlZ2VyIHJlZ2lzdGVycmQuICBUaGUg aW5pdGlhbCB2YWx1ZSBpbiBpbnRlZ2VycmVnaXN0ZXJyczFpcyB0cmVhdGVkCj4gPj4+Pj4gYXMg YSBiaXQgbWFzayB0aGF0IHNwZWNpZmllcyBiaXQgcG9zaXRpb25zIHRvIGJlIGNsZWFyZWQgaW4g dGhlIENTUi4gQW55Cj4gPj4+Pj4gYml0dGhhdCBpcyBoaWdoIGlucnMxd2lsbCBjYXVzZSB0aGUg Y29ycmVzcG9uZGluZyBiaXQgdG8gYmUgY2xlYXJlZCBpbgo+ID4+Pj4+IHRoZSBDU1IsIGlmIHRo YXQgQ1NSIGJpdCBpc3dyaXRhYmxlLiAgT3RoZXIgYml0cyBpbiB0aGUgQ1NSIGFyZQo+ID4+Pj4+ IHVuYWZmZWN0ZWQuIikKPiA+Pj4+Cj4gPj4+PiBJIHRoaW5rIHRoZXJlIG1heSBhbHNvIGJlIGFu IHVuZGVyc3RhbmRpbmcgaXNzdWUgb24gd2hhdCB0aGUgU1JfU1VNCj4gPj4+PiBiaXQgZG9lcy4g SSB0aG91Z2h0IGlmIGl0IGlzIHNldCwgTS0+VSBhY2Nlc3NlcyB3b3VsZCBmYXVsdCwgd2hpY2gg aXMKPiA+Pj4+IHdoeSBpdCBnZXRzIHNldCBlYXJseSBvbi4gQnV0IGZyb20gcmVhZGluZyB0aGUg dWFjY2VzcyBjb2RlIGl0IGxvb2tzCj4gPj4+PiBsaWtlIHRoZSB1YWNjZXNzIGNvZGUgc2V0cyBp dCBvbiBlbnRyeSBhbmQgdGhlbiBjbGVhcnMgb24gZXhpdC4KPiA+Pj4+Cj4gPj4+PiBJIGFtIHZl cnkgY29uZnVzZWQuIElzIHRoZXJlIGEgbWFzdGVyIHJlZmVyZW5jZSBmb3IgcnY2ND8KPiA+Pj4+ Cj4gPj4+PiBodHRwczovL3Blb3BsZS5lZWNzLmJlcmtlbGV5LmVkdS9+a3JzdGUvcGFwZXJzL3Jp c2N2LXByaXZpbGVnZWQtdjEuOS5wZGYKPiA+Pj4+IHNlZW1zIHRvIHN0YXRlIFBVTSBpcyB0aGUg U1JfU1VNIGJpdCwgYW5kIHRoYXQgKGlmIHNldCkgZGlzYWJsZWQKPiA+Pj4+Cj4gPj4+PiBRdW90 ZToKPiA+Pj4+ICAgICBUaGUgUFVNIChQcm90ZWN0IFVzZXIgTWVtb3J5KSBiaXQgbW9kaWZpZXMg dGhlIHByaXZpbGVnZSB3aXRoIHdoaWNoCj4gPj4+PiBTLW1vZGUgbG9hZHMsIHN0b3JlcywgYW5k IGluc3RydWN0aW9uIGZldGNoZXMgYWNjZXNzIHZpcnR1YWwgbWVtb3J5Lgo+ID4+Pj4gV2hlbiBQ VU09MCwgdHJhbnNsYXRpb24gYW5kIHByb3RlY3Rpb24gYmVoYXZlIGFzIG5vcm1hbC4gV2hlbiBQ VU09MSwKPiA+Pj4+IFMtbW9kZSBtZW1vcnkgYWNjZXNzZXMgdG8gcGFnZXMgdGhhdCBhcmUgYWNj ZXNzaWJsZSBieSBVLW1vZGUgKFU9MSBpbgo+ID4+Pj4gRmlndXJlIDQuMTkpIHdpbGwgZmF1bHQu IFBVTSBoYXMgbm8gZWZmZWN0IHdoZW4gZXhlY3V0aW5nIGluIFUtbW9kZQo+ID4+Pj4KPiA+Pj4+ Cj4gPj4+Pj4+IGh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L3Y1LjEyLXJjMi9zb3Vy Y2UvYXJjaC9yaXNjdi9rZXJuZWwvZW50cnkuUyNMNzMKPiA+Pj4+Pj4KPiA+Pj4+Pgo+ID4+Pj4+ IFN0aWxsIG5vIGx1Y2sgZm9yIHRoZSBtb21lbnQsIGNhbid0IHJlcHJvZHVjZSBpdCBsb2NhbGx5 LCBteSB0ZXN0IGlzCj4gPj4+Pj4gbWF5YmUgbm90IHRoYXQgZ29vZCAoSSBjcmVhdGVkIHRocmVh ZHMgYWxsIGRheSBsb25nIGluIG9yZGVyIHRvIHRyaWdnZXIKPiA+Pj4+PiB0aGUgcHV0X3VzZXIg b2Ygc2NoZWR1bGVfdGFpbCkuCj4gPj4+Pgo+ID4+Pj4gSXQgbWF5IG9mIGNvdXJzZSBkZXBlbmQg b24gbWVtb3J5IGFuZCBvdGhlciBzdHVmZi4gSSBkaWQgdHJ5IHRvIHNlZSBpZgo+ID4+Pj4gaXQg d2FzIHBvc3NpYmxlIHRvIGNsb25lKCkgd2l0aCB0aGUgY2hpbGRfdGlkIGFkZHJlc3MgYmVpbmcg YSB2YWxpZCBidXQKPiA+Pj4+IG5vdCBtYXBwZWQgcGFnZS4uLgo+ID4+Pj4KPiA+Pj4+PiBHaXZl biB0aGF0IHRoZSBwYXRoIHlvdSBtZW50aW9uIHdvcmtzIG1vc3Qgb2YgdGhlIHRpbWUsIGFuZCB0 aGF0IHRoZQo+ID4+Pj4+IHN0YXR1cyByZWdpc3RlciBpbiB0aGUgc3RhY2sgdHJhY2Ugc2hvd3Mg dGhlIFNVTSBiaXQgaXMgbm90IHNldCB3aGVyZWFzCj4gPj4+Pj4gaXQgaXMgc2V0IGluIHB1dF91 c2VyLCBJJ20gbGVhbmluZyB0b3dhcmQgc29tZSByYWNlIGNvbmRpdGlvbiAobWF5YmUgYW4KPiA+ Pj4+PiBpbnRlcnJ1cHQgdGhhdCBhcnJpdmVzIGF0IHRoZSAid3JvbmciIHRpbWUpIG9yIGEgcWVt dSBpc3N1ZSBhcyB5b3UKPiA+Pj4+PiBtZW50aW9uZWQuCj4gPj4+Pgo+ID4+Pj4gSSBzdXBwb3Nl IHRoaXMgaXMgcG9zc2libGUuIEZyb20gd2hhdCBJIHJlYWQgaXQgc2hvdWxkIGdldCB0byB0aGUK PiA+Pj4+IHBvaW50IG9mIGJlaW5nIHRoZXJlIHdpdGggdGhlIFNVTSBmbGFnIGNsZWFyZWQsIHNv IGVpdGhlciBzb21ldGhpbmcKPiA+Pj4+IHdlbnQgd3JvbmcgaW4gdHJ5aW5nIHRvIGZpeCB0aGUg aW5zdHJ1Y3Rpb24gdXAgb3IgdGhlcmUncyBzb21lIG90aGVyCj4gPj4+PiBlcnJvciB3ZSdyZSBt aXNzaW5nLgo+ID4+Pj4KPiA+Pj4+PiBUbyBlbGltaW5hdGUgcWVtdSBpc3N1ZXMsIGRvIHlvdSBo YXZlIGFjY2VzcyB0byBzb21lIEhXID8gT3IgdG8KPiA+Pj4+PiBkaWZmZXJlbnQgcWVtdSB2ZXJz aW9ucyA/Cj4gPj4+Pgo+ID4+Pj4gSSBkbyBoYXZlIGFjY2VzcyB0byBhIE1pY3JvY2hpcCBQb2xh cmZpcmUgYm9hcmQuIEkganVzdCBuZWVkIHRoZQo+ID4+Pj4gaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0 byBzZXR1cCB0aGUgdGVzdC1jb2RlIHRvIG1ha2UgaXQgd29yayBvbiB0aGUKPiA+Pj4+IGhhcmR3 YXJlLgo+ID4+Pgo+ID4+PiBGb3IgZnVsbCBzeXprYWxsZXIgc3VwcG9ydCwgaXQgd291bGQgbmVl ZCB0byBrbm93IGhvdyB0byByZWJvb3QgdGhlc2UKPiA+Pj4gYm9hcmRzIGFuZCBnZXQgYWNjZXNz IHRvIHRoZSBjb25zb2xlLgo+ID4+PiBzeXprYWxsZXIgaGFzIGEgc3RvcC1nYXAgVk0gYmFja2Vu ZCB3aGljaCBqdXN0IHVzZXMgc3NoIHRvIGEgcGh5c2ljYWwKPiA+Pj4gbWFjaGluZSBhbmQgZXhw ZWN0cyB0aGUga2VybmVsIHRvIHJlYm9vdCBvbiBpdHMgb3duIGFmdGVyIGFueSBjcmFzaGVzLgo+ ID4+Pgo+ID4+PiBCdXQgSSBhY3R1YWxseSBtYW5hZ2VkIHRvIHJlcHJvZHVjZSBpdCBpbiBhbiBl dmVuIHNpbXBsZXIgc2V0dXAuCj4gPj4+IEFzc3VtaW5nIHlvdSBoYXZlIEdvIDEuMTUgYW5kIHJp c2N2NjQgY3Jvc3MtY29tcGlsZXIgZ2NjIGluc3RhbGxlZAo+ID4+Pgo+ID4+PiAkIGdvIGdldCAt dSAtZCBnaXRodWIuY29tL2dvb2dsZS9zeXprYWxsZXIvLi4uCj4gPj4+ICQgY2QgJEdPUEFUSC9z cmMvZ2l0aHViLmNvbS9nb29nbGUvc3l6a2FsbGVyCj4gPj4+ICQgbWFrZSBzdHJlc3MgZXhlY3V0 b3IgVEFSR0VUQVJDSD1yaXNjdjY0Cj4gPj4+ICQgc2NwIGJpbi9saW51eF9yaXNjdjY0L3N5ei1l eGVjcHJvZyBiaW4vbGludXhfcmlzY3Y2NC9zeXotZXhlY3V0b3IKPiA+Pj4geW91cl9tYWNoaW5l Oi8KPiA+Pj4KPiA+Pj4gVGhlbiBydW4gLi9zeXotc3RyZXNzIG9uIHRoZSBtYWNoaW5lLgo+ID4+ PiBPbiB0aGUgZmlyc3QgcnVuIGl0IGNyYXNoZWQgaXQgd2l0aCBzb21lIG90aGVyIGJ1Zywgb24g dGhlIHNlY29uZCBydW4KPiA+Pj4gSSBnb3QgdGhlIGNyYXNoIGluIHNjaGVkdWxlX3RhaWwuCj4g Pj4+IFdpdGggcWVtdSB0Y2cgSSBhbHNvIGFkZGVkIC1zbG93ZG93bj0xMCBmbGFnIHRvIHN5ei1z dHJlc3MgdG8gc2NhbGUKPiA+Pj4gYWxsIHRpbWVvdXRzLCBpZiBuYXRpdmUgZXhlY3V0aW9uIGlz IGZhc3RlciwgdGhlbiB5b3UgZG9uJ3QgbmVlZCBpdC4KPiA+Pgo+ID4+IE9rLCBub3Qgc3VyZSB3 aGF0J3MgZ29pbmcgb24uIEkgZ2V0IGEgbG90IG9mIGVycm9ycyBzaW1pbGFyIHRvOgo+ID4+Pgo+ ID4+PiAyMDIxLzAzLzE1IDIxOjM1OjIwIHRyYW5zaXRpdmVseSB1bnN1cHBvcnRlZDogaW9jdGwk U05BUFNIT1RfQ1JFQVRFX0lNQUdFOiBubyBzeXNjYWxscyBjYW4gY3JlYXRlIHJlc291cmNlIGZk X3NuYXBzaG90LCBlbmFibGUgc29tZSBzeXNjYWxscyB0aGF0IGNhbiBjcmVhdGUgaXQgW29wZW5h dCRzbmFwc2hvdF0KPiA+Cj4gPiBUaGlzIGlzIG5vdCBhbiBlcnJvciwganVzdCBhIG5vdGlmaWNh dGlvbiB0aGF0IHNvbWUgc3lzY2FsbHMgYXJlIG5vdAo+ID4gZW5hYmxlZCBpbiB0aGUga2VybmVs IGFuZCB3b24ndCBiZSBmdXp6ZWQuCj4gPgo+ID4+IEZvbGxvd2VkIGJ5Ogo+ID4+Cj4gPj4+IDIw MjEvMDMvMTUgMjE6MzU6NDggZXhlY3V0ZWQgMCBwcm9ncmFtcwo+ID4+PiAyMDIxLzAzLzE1IDIx OjM1OjQ4IGZhaWxlZCB0byBjcmVhdGUgZXhlY3V0aW9uIGVudmlyb25tZW50OiBmYWlsZWQgdG8g bW1hcCBzaG0gZmlsZTogaW52YWxpZCBhcmd1bWVudAo+ID4+Cj4gPj4gVGhlIHFlbXUgaXMgNS4y LjAgYW5kIHJvb3QgaXMgRGViaWFuL3Vuc3RhYmxlIHJpc2N2NjQgKHNhbWUgYXMgY2hyb290Cj4g Pj4gdXNlZCB0byBidWlsZCB0aGUgc3l6IHRvb2xzKQo+ID4KPiA+IFRoaXMgaXMgYW4gZXJyb3Iu IEJ1dCBJIHNlZSBpdCB0aGUgZmlyc3QgdGltZSBldmVyLgo+ID4gSXQgY29tZXMgZnJvbSBoZXJl Ogo+ID4gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9zeXprYWxsZXIvYmxvYi9mZGIyYmIyYzIz ZWU3MDk4ODA0MDdmNTYzMDdlMjgwMGFkMjdlOWFlL3BrZy9vc3V0aWwvb3N1dGlsX3VuaXguZ28j TDExOS1MMTIxCj4gPiBUaGVyZSBzaG91bGQgYmUgcHJldHR5IHNpbXBsZSBsb2dpYyBpbnNpZGUg b2Ygc3lzY2FsbC5NbWFwLiBQZXJoYXBzCj4gPiB5b3UgYXJlIHVzaW5nIHNvbWUgb2xkZXIgR28g dG9vbGNoYWluIHdpdGggaW5jb21wbGV0ZSByaXNjdiBzdXBwb3J0Pwo+ID4gSSB0aGluayBJJ3Zl IHVzZWQgMS4xNCBhbmQgMS4xNS4gQnV0IHRoZXJlIGlzIGFscmVhZHkgMS4xNi4gWW91IGNhbgo+ ID4gYWx3YXlzIGRvd25sb2FkIGEgdG9vbGNoYWluIGhlcmU6Cj4gPiBodHRwczovL2dvbGFuZy5v cmcvZGwvCj4KPiBIbW0gaXQgd291bGQgaGF2ZSBiZWVuIHVzZWZ1bCB0byBwcmludCBvdXQgd2hh dCBmaWxlIGl0IGZhaWxlZCB0byBtYXAuCgpXaGF0IGRvIHlvdSB3YW50IHRvIGRvIHdpdGggdGhl IGZpbGUgbmFtZT8gSXQncyBub3Qgb25lIG9mCnByZS1leGlzdGluZyBmaWxlcywgc28gdGhlIG5h bWUgd29uJ3QgdGVsbCB0aGUgdXNlciBtdWNoLiBJdCdzIGp1c3QgYQp0ZW1wIGZpbGUsIGl0IHdv bid0IGV4aXN0IGFmdGVyd2FyZHMgYW5kIGl0J3MgZWFzeSB0byBjcmVhdGUgYW4KZXF1aXZhbGVu dCBmaWxlLgpJdCB3YXMgY3JlYXRlZCBpbiB0aGF0IGZ1bmN0aW9uIHdpdGg6CgogICAgZiwgZXJy ID0gaW91dGlsLlRlbXBGaWxlKCIuLyIsICJzeXprYWxsZXItc2htIikKICAgIGlmIGVyciAhPSBu aWwgewogICAgICAgIGVyciA9IGZtdC5FcnJvcmYoImZhaWxlZCB0byBjcmVhdGUgdGVtcCBmaWxl OiAldiIsIGVycikKICAgICAgICByZXR1cm4KICAgIH0KICAgIGlmIGVyciA9IGYuVHJ1bmNhdGUo aW50NjQoc2l6ZSkpOyBlcnIgIT0gbmlsIHsKICAgICAgICBlcnIgPSBmbXQuRXJyb3JmKCJmYWls ZWQgdG8gdHJ1bmNhdGUgc2htIGZpbGU6ICV2IiwgZXJyKQogICAgICAgIGYuQ2xvc2UoKQogICAg ICAgIG9zLlJlbW92ZShmLk5hbWUoKSkKICAgICAgICByZXR1cm4KICAgIH0KICAgIGYuQ2xvc2Uo KQogICAgZm5hbWUgOj0gZi5OYW1lKCkKICAgIGYsIGVyciA9IG9zLk9wZW5GaWxlKGYuTmFtZSgp LCBvcy5PX1JEV1IsIERlZmF1bHRGaWxlUGVybSkKICAgIGlmIGVyciAhPSBuaWwgewogICAgICAg IGVyciA9IGZtdC5FcnJvcmYoImZhaWxlZCB0byBvcGVuIHNobSBmaWxlOiAldiIsIGVycikKICAg ICAgICBvcy5SZW1vdmUoZm5hbWUpCiAgICAgICAgcmV0dXJuCiAgICB9Cgo+IEkndmUgZ290IGdv IDEuMTUgZnJvbSB0aGUgZGViaWFuL3Vuc3RhYmxlIHJpc2N2NjQgY2hyb290Lgo+IEknbGwgaGF2 ZSBhIGxvb2sgYXQgdGhpcyBpbiBhIGJpdCB0byBzZWUgaWYgaXQgdGhyb3dzIHRoZSBzYW1lIGlz c3VlIG9uCj4gYSByZWFsIHN5c3RlbS4KPgo+Cj4gLS0KPiBCZW4gRG9va3MgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5jb2RldGhpbmsuY28udWsvCj4gU2VuaW9yIEVu Z2luZWVyICAgICAgICAgICAgICAgICAgICAgICAgIENvZGV0aGluayAtIFByb3ZpZGluZyBHZW5p dXMKPgo+IGh0dHBzOi8vd3d3LmNvZGV0aGluay5jby51ay9wcml2YWN5Lmh0bWwKPgo+IC0tCj4g WW91IHJlY2VpdmVkIHRoaXMgbWVzc2FnZSBiZWNhdXNlIHlvdSBhcmUgc3Vic2NyaWJlZCB0byB0 aGUgR29vZ2xlIEdyb3VwcyAic3l6a2FsbGVyLWJ1Z3MiIGdyb3VwLgo+IFRvIHVuc3Vic2NyaWJl IGZyb20gdGhpcyBncm91cCBhbmQgc3RvcCByZWNlaXZpbmcgZW1haWxzIGZyb20gaXQsIHNlbmQg YW4gZW1haWwgdG8gc3l6a2FsbGVyLWJ1Z3MrdW5zdWJzY3JpYmVAZ29vZ2xlZ3JvdXBzLmNvbS4K PiBUbyB2aWV3IHRoaXMgZGlzY3Vzc2lvbiBvbiB0aGUgd2ViIHZpc2l0IGh0dHBzOi8vZ3JvdXBz Lmdvb2dsZS5jb20vZC9tc2dpZC9zeXprYWxsZXItYnVncy84ZWJlYTUxZC1iMDNjLWU2ZGUtZmEx Yy1kNDcwOTFjNTRlNDUlNDBjb2RldGhpbmsuY28udWsuCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgt cmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==