From owner-freebsd-hackers@freebsd.org Sun Feb 11 06:39:10 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 992EDF1AE5F for ; Sun, 11 Feb 2018 06:39:10 +0000 (UTC) (envelope-from sblachmann@gmail.com) Received: from mail-qk0-x235.google.com (mail-qk0-x235.google.com [IPv6:2607:f8b0:400d:c09::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1EFAB86FD7; Sun, 11 Feb 2018 06:39:10 +0000 (UTC) (envelope-from sblachmann@gmail.com) Received: by mail-qk0-x235.google.com with SMTP id c128so14980871qkb.4; Sat, 10 Feb 2018 22:39:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=hvvaqyI+GYNCAjgNp58NYo2Bq2Y4HbCEpBdRZsJPFac=; b=ki5xiGLkc+QWYmrwyNE4D77OP/qujDW09/S3voyoHS0XOb1bVF9MWF0q9lBNogNJlz 3edf1tBFoMl28dmUhnJqtOBht2NN23mJMiUi7OaImbhWYLdfV/rvPMy+R+0OXeQbQh8T l/MBfGnjMiiwOOKzZ3zYFVJPnpn8unhh0QNmo93QHfjiU4NjWbmQ0LtqBwE9SXPvbCjL dwX3HHcchjgxmNRJ7wMGjpKCZGM2vO3A9TcHtAjFb+5elolLH0I+d7JaAberaDhobpAr JCtA/87clkbQpjmFCjd7oY4gOV44z02KWDmhaS25mOD9cpOSA+ZADrbM2o+TyO9tqfyF jtIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=hvvaqyI+GYNCAjgNp58NYo2Bq2Y4HbCEpBdRZsJPFac=; b=eQZe0GxNJ9qFl748duI2advDs/KJRG1TdLZ1uEVHe4nBUKyTikIX+AkBhScGMirvDI j0dyhrHcc1+LIR+TEjdB40OqG4ZHHrV2jsEqsWGo0YmFV2VuHaAZQKlvHaLu2WrT6Cwt EkhUjje1Lrh4qQULSIBTIBHulFn5eDg3OEEKaSqcvT24Y+wiY1E7Y2MF2gsJBdZe5eVn EuWIZ5xVrE8E3iT0n7/t4RFhMDAId6SJG3xOir6+X1H832ULmPiZfREou+iGwFq3DbY3 xKx+N1RdkL/DQlVVJ6nvrI15L8J4tQ9QATadJ5iX6i+Qt1yWhBo+FvRh3I/NFLdKhBdy gJLA== X-Gm-Message-State: APf1xPAYKtsYc+JweMZEwOWzCR3Tdfjn4Y9iXJNI/xEwyHThz2RUIk/Z HUhB1lrfcSZNFJ9Z84XD2vUmgB2V1jwrLlG27y+C6g== X-Google-Smtp-Source: AH8x224mCbKEO7FH+pamdqZrLdaAvJt5KMfh0ZCdBAX/equIiWrrDt1b5mgAGBpXr94Ems876R1aeEKJbOmt4BykprQ= X-Received: by 10.55.103.197 with SMTP id b188mr12600500qkc.244.1518331149413; Sat, 10 Feb 2018 22:39:09 -0800 (PST) MIME-Version: 1.0 Received: by 10.140.28.36 with HTTP; Sat, 10 Feb 2018 22:39:08 -0800 (PST) In-Reply-To: <4db65b52-5a82-15ff-1629-0371a619f89b@freebsd.org> References: <4db65b52-5a82-15ff-1629-0371a619f89b@freebsd.org> From: Stefan Blachmann Date: Sun, 11 Feb 2018 07:39:08 +0100 Message-ID: Subject: Re: New microcode updating tool for FreeBSD To: Sean Bruno Cc: freebsd-hackers@freebsd.org Content-Type: text/plain; charset="UTF-8" X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Feb 2018 06:39:10 -0000 On 2/11/18, Sean Bruno wrote: > > > On 02/08/18 23:15, Stefan Blachmann wrote: >> Hello, >> >> I would like to introduce you to my new microcode updater for FreeBSD. >> >> As the old devcpu-data port has serious bug and does not support the >> new multi-blobbed Intel microcode format, I have made this new tool. > > devcpu-data is a bunch of microcode files and a parser for the intel > legacy microcode.dat file. Do you mean cpucontrol in the base system > has a bug? I found reference to this in the code at the github download > link pointing at a patchless comment-type bugzilla entry here: > > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=192487 > > > Do you feel like trying to come up with a patchset or modification to > the existing usr.sbin/cpucontrol (which appears to be the basis of the > code in this github repository)? We could start using the Phabricator > review system to try and get your work into a form that would be > accepted into the base system. > > sean > > On 2/11/18, Sean Bruno wrote: > > > On 02/08/18 23:15, Stefan Blachmann wrote: >> Hello, >> >> I would like to introduce you to my new microcode updater for FreeBSD. >> >> As the old devcpu-data port has serious bug and does not support the >> new multi-blobbed Intel microcode format, I have made this new tool. > > devcpu-data is a bunch of microcode files and a parser for the intel > legacy microcode.dat file. Do you mean cpucontrol in the base system > has a bug? I found reference to this in the code at the github download > link pointing at a patchless comment-type bugzilla entry here: > > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=192487 > > > Do you feel like trying to come up with a patchset or modification to > the existing usr.sbin/cpucontrol (which appears to be the basis of the > code in this github repository)? We could start using the Phabricator > review system to try and get your work into a form that would be > accepted into the base system. > > sean > > I think I should start with the background first: Because of the Meltdown/Spectre issues, I took a look into devcpu-data. The PR was written by the guy doing the Linux kernel microcode update stuff. No FreeBSD guy, not even the author of devcpu-data, cared about that important PR for more than three years! That bug is indeed serious, as while testing I myself observed the processor occasionally being incorrectly identified due to this. This indicated to me that devcpu-data is very littly tested and nobody actually seemed interested in dealing with it. Thus I concluded that the microcode update process should be *completely* reviewed and verified that each and every step is actually done *exactly* to Intel's specifications. The cpupdate program is the result of this work. I decided first to untangle the sparsely commented spaghetti code of devcpu-data, and to walk through the CPU identification/updating process step-by-step, while consulting the Intel manuals to make sure it is done according to Intel's specs. While doing this, I found that there are other issues with devcpu-data for which no PRs yet exist. For example, using bits that are reserved by Intel, instead of only using the bits that Intel specified to actually be used. Another thing I noticed when testing the new tool was that there is a not-yet-documented format change by Intel (at least I could not find any "official" reference). This regards microcode files which contain multiple update blobs (currently up to 7) which are targeted to CPUs of same model-family-stepping, but different CPU flags. There was a post from a Dell guy on Phabricator, hinting that in case one wonders why there are less files in intel-ucode/ than being created by iucode-tool, that this is because Intel now packs updates for same Family-Model-Stepping files into one single file containing multiple blobs, each for different processor flags. Sadly that thread got closed before I found it. So I could not post that devcpu-data would just fail these update files as invalid. (BTW: You can check the number of blobs in the update files yourself by using "cpupdate -I -vv -c ") The reason for me to practically completely rewrite the update functionality, instead of just fixing devcpu-data was that when I worked on it, aside of the bugs mentioned above, I found that it has just too many issues: 1. It is hard to understand. Few comments. Horrible spaghetti code. 2. It gives poor to no meaningful error information, making difficult to impossible for users to determine cause of problems. 3. It has no functionality to get information about cpu ID and revision. update files, and their contents. Please take a look at the intel.c module of devcpu-data. See how many gotos there are in the intel_update() function! In my eyes this is BASIC style spaghetti at its worst. And then compare this with cpupdate's intel.c module to see that the new code bears *very little* resemblance to this. Of course, the module is larger because of more functionality. Thus I do not see much sense in attempting to fix/patch devcpu-data's microcode update functionality. Instead I'd suggest to just remove/strip the microcode update functionality from devcpu-data. Then we would have two programs that do only one thing each, and do this good: - cpucontrol (= devcpu-data) for setting/reading CPU MSR registers - cpupdate for handling microcode updating related stuff. The cpupdate program, as it is now, is just an unpolished suggestion/proposal I am offering to the community. If there is interest in adding it to ports/system, I'd be very willing to make it "perfect". This would particularly include beautification/clean-up of code and output, stripping code and functionality of what can/should be stripped, creating manual page etc, adding AMD and VIA support, maybe later others like ARM, too. Regarding "getting my work into a form that would be accepted into the base system", I would appreciate if it could be reviewed, either by mailing list users or in the Phabricator, as suggestions and feedback would be very helpful to make the tool "perfect". Greetings, Stefan From owner-freebsd-hackers@freebsd.org Mon Feb 12 20:53:34 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id F1BFAF1BD02 for ; Mon, 12 Feb 2018 20:53:33 +0000 (UTC) (envelope-from rpokala@mac.com) Received: from mr11p00im-asmtp001.me.com (mr11p00im-asmtp001.me.com [17.110.69.252]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 920DC6D3CC for ; Mon, 12 Feb 2018 20:53:33 +0000 (UTC) (envelope-from rpokala@mac.com) Received: from process-dkim-sign-daemon.mr11p00im-asmtp001.me.com by mr11p00im-asmtp001.me.com (Oracle Communications Messaging Server 8.0.1.2.20170607 64bit (built Jun 7 2017)) id <0P42009001121F00@mr11p00im-asmtp001.me.com> for freebsd-hackers@freebsd.org; Mon, 12 Feb 2018 20:52:58 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mac.com; s=04042017; t=1518468778; bh=fAPZ/sQXLnWNGeEMRPz93JNauMYjW6UjNdiRSGvCG9c=; h=Date:Subject:From:To:Message-id:MIME-version:Content-type; b=dmGMZWSdL6eoEQLDUGREegpYyAZFkO3R8K5B9bWFhs4bMOh+q5IuwlbjmhbMa9G1r c98t8ZyfTfcEb6c2v+exxt6dYbfrz8693ixa/cRV7jw93jpHavzkAJXzUNf3UZGSoi U/CPJW+Ky3EK39UAf7XnCQIgr1AXHXPT5QJStkNwRNRx0MceR6URpqjtGBTZvBXAZ1 PXTse3IyMjK1yrc+yE30sddlyu+Tvl9Fh7LMOghrZjLfOUb63Jz4vjxBrNeuL4bzZI YcS+Bkf3rghdVDS7OrCOWVmsGOurhrVhkLcxKywOqsN125S27Igt+3KRaWrZJ/p7Gg eaACGSJyV6fVQ== Received: from icloud.com ([127.0.0.1]) by mr11p00im-asmtp001.me.com (Oracle Communications Messaging Server 8.0.1.2.20170607 64bit (built Jun 7 2017)) with ESMTPSA id <0P42009IV206LG00@mr11p00im-asmtp001.me.com> for freebsd-hackers@freebsd.org; Mon, 12 Feb 2018 20:52:58 +0000 (GMT) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-02-12_08:,, signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 clxscore=1015 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000 definitions=main-1802120265 User-Agent: Microsoft-MacOutlook/10.9.0.180116 Date: Mon, 12 Feb 2018 12:52:53 -0800 Subject: Request for information: quad- and/or octal-socket *bridge and/or *well systems From: Ravi Pokala To: "freebsd-hackers@freebsd.org" Message-id: <8B689420-111B-46B6-8A65-B3ECED3FAF79@mac.com> Thread-topic: Request for information: quad- and/or octal-socket *bridge and/or *well systems MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: quoted-printable X-Mailman-Approved-At: Mon, 12 Feb 2018 21:26:02 +0000 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Feb 2018 20:53:34 -0000 Hi folks, If you have access to a quad- or octal-socket =EF=BB=BF(Ivy|Sandy)bridge or (Has|= Broad)well system, could you run these commands and send me the output: pciconf -l | egrep ':(19|20|21|22|23|24):' egrep '^CPU| memory|FreeBSD/SMP' /var/run/dmesg.boot I'm working on a driver for a component of the integrated Memory Controller= , which is built into those CPUs, and I want to make sure I understand the w= ay things are enumerated on multi-socket systems. I'd even be satisfied with the Linux equivalents; the first gets the list o= f PCI devices whose device number is [19-24], along with their device-id inf= o; the second gets the CPU name, system memory, and socket / core / thread b= reakdown. Thanks, Ravi (rpokala@) From owner-freebsd-hackers@freebsd.org Mon Feb 12 21:40:56 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AB572F1F8B1 for ; Mon, 12 Feb 2018 21:40:56 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from mx2.catspoiler.org (mx2.catspoiler.org [IPv6:2607:f740:16::d18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "amnesiac", Issuer "amnesiac" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4F2366F4DB; Mon, 12 Feb 2018 21:40:56 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from gw.catspoiler.org ([76.212.85.177]) by mx2.catspoiler.org (8.15.2/8.15.2) with ESMTPS id w1CLfVg5066433 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 12 Feb 2018 21:41:33 GMT (envelope-from truckman@FreeBSD.org) Received: from mousie.catspoiler.org (mousie.catspoiler.org [192.168.101.2]) by gw.catspoiler.org (8.15.2/8.15.2) with ESMTPS id w1CLejaT069529 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 12 Feb 2018 13:40:46 -0800 (PST) (envelope-from truckman@FreeBSD.org) Date: Mon, 12 Feb 2018 13:40:40 -0800 (PST) From: Don Lewis Subject: Re: Stale memory during post fork cow pmap update To: Konstantin Belousov cc: Elliott.Rabe@dell.com, alc@freebsd.org, freebsd-hackers@freebsd.org, markj@freebsd.org, Eric.Van.Gyzen@dell.com In-Reply-To: <20180210225608.GM33564@kib.kiev.ua> Message-ID: References: <5A7E7F2B.80900@dell.com> <20180210111848.GL33564@kib.kiev.ua> <5A7F6A7C.80607@dell.com> <20180210225608.GM33564@kib.kiev.ua> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=us-ascii Content-Disposition: INLINE X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Feb 2018 21:40:56 -0000 On 11 Feb, Konstantin Belousov wrote: > On Sat, Feb 10, 2018 at 09:56:20PM +0000, Elliott.Rabe@dell.com wrote: >> On 02/10/2018 05:18 AM, Konstantin Belousov wrote: >> > On Sat, Feb 10, 2018 at 05:12:11AM +0000, Elliott.Rabe@dell.com wrote: >> >> Greetings- >> >> >> >> I've been hunting for the root cause of elusive, slight memory >> >> corruptions in a large, complex process that manages many threads. All >> >> failures and experimentation thus far has been on x86_64 architecture >> >> machines, and pmap_pcid is not in use. >> >> >> >> I believe I have stumbled into a very unlikely race condition in the way >> >> the vm code updates the pmap during write fault processing following a >> >> fork of the process. In this situation, when the process is forked, >> >> appropriate vm entries are marked copy-on-write. One such entry >> >> allocated by static process initialization is frequently used by many >> >> threads in the process. This makes it a prime candidate to write-fault >> >> shortly after a fork system call is made. In this scenario, such a >> >> fault normally burdens the faulting thread with the task of allocating a >> >> new page, entering the page as part of managed memory, and updating the >> >> pmap with the new physical address and the change to writeable status. >> >> This action is followed with an invalidation of the TLB on the current >> >> CPU, and in this case is also followed by IPI_INVLPG IPIs to do the same >> >> on other CPUs (there are often many active threads in this process). >> >> Before this remote TLB invalidation has completed, other CPUs are free >> >> to act on either the old OR new page characteristics. If other threads >> >> are alive and using contents of the faulting page on other CPUs, bad >> >> things can occur. >> >> >> >> In one simplified and somewhat contrived example, one thread attempts to >> >> write to a location on the faulting page under the protection of a lock >> >> while another thread attempts to read from the same location twice in >> >> succession under the protection of the same lock. If both the writing >> >> thread and reading thread are running on different CPUs, and if the >> >> write is directed to the new physical address, the reads may come from >> >> different physical addresses if a TLB invalidation occurs between them. >> >> This seemingly violates the guarantees provided by the locking >> >> primitives and can result in subtle memory corruption symptoms. >> >> >> >> It took me quite a while to chase these symptoms from user-space down >> >> into the operating system, and even longer to end up with a stand-alone >> >> test fixture able to reproduce the situation described above on demand. >> >> If I alter the kernel code to perform a two-stage update of the pmap >> >> entry, the observed corruption symptoms disappear. This two-stage >> >> mechanism updates and invalidates the new physical address in a >> >> read-only state first, and then does a second pmap update and >> >> invalidation to change the status to writeable. The intended effect was >> >> to cause any other threads writing to the faulting page to become >> >> obstructed until the earlier fault is complete, thus eliminating the >> >> possibility of the physical pages having different contents until the >> >> new physical address was fully visible. This is goofy, and from an >> >> efficiency standpoint it is obviously undesirable, but it was the first >> >> thing that came to mind, and it seems to be working fine. >> >> >> >> I am not terribly familliar with the higher level design here, so it is >> >> unclear to me if this problem is simply a very unlikely race condition >> >> that hasn't yet been diagnosed or if this is instead the breakdown of >> >> some other mechanism of which I am not aware. I would appreciate the >> >> insights of those of you who have more history and experience with this >> >> area of the code. >> > You are right describing the operation of the memory copy on fork. But I >> > cannot understand what parts of it, exactly, are problematic, from your >> > description. It is necessary for you to provide the test and provide >> > some kind of the test trace or the output which illustrates the issue >> > you found. >> > >> > Do you mean something like that: >> > - after fork >> > - thread A writes into the page, causing page fault and COW because the >> > entry has write permissions removed >> > - thread B reads from the page, and since invalidation IPI was not yet >> > delivered, it reads from the need-copy page, effectively seeing the >> > old content, before thread A write >> > >> > And you claim is that you can create a situation where both threads A >> > and B owns the same lock around the write and read ? I do not understand >> > this, since if thread A owns a (usermode) lock, it prevents thread B from >> > taking the same lock until fault is fully handled, in particular, the IPI >> > is delivered. >> >> Here is the sequence of actions I am referring to. There is only one >> lock, and all the writes/reads are on one logical page. >> >> +The process is forked transitioning a map entry to COW >> +Thread A writes to a page on the map entry, faults, updates the pmap to >> writable at a new phys addr, and starts TLB invalidations... >> +Thread B acquires a lock, writes to a location on the new phys addr, >> and releases the lock >> +Thread C acquires the lock, reads from the location on the old phys addr... >> +Thread A ...continues the TLB invalidations which are completed >> +Thread C ...reads from the location on the new phys addr, and releases >> the lock >> >> In this example Thread B and C [lock, use and unlock] properly and >> neither own the lock at the same time. Thread A was writing somewhere >> else on the page and so never had/needed the lock. Thread B sees a >> location that is only ever read|modified under a lock change beneath it >> while it is the lock owner. > I believe you mean 'Thread C' in the last sentence. > >> >> I will get a test patch together and make it available as soon as I can. > Please. > > So I agree that doing two-stage COW, with the first stage copying page > but keeping it read-only, is the right solution. Below is my take. > During the smoke boot, I noted that there is somewhat related issue in > reevaluation of the map entry permissions. > > diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c > index 83e12a588ee..149a15f1d9d 100644 > --- a/sys/vm/vm_fault.c > +++ b/sys/vm/vm_fault.c > @@ -1135,6 +1157,10 @@ RetryFault:; > */ > pmap_copy_page(fs.m, fs.first_m); > fs.first_m->valid = VM_PAGE_BITS_ALL; > + if ((fault_flags & VM_FAULT_WIRE) == 0) { > + prot &= ~VM_PROT_WRITE; > + fault_type &= ~VM_PROT_WRITE; > + } > if (wired && (fault_flags & > VM_FAULT_WIRE) == 0) { > vm_page_lock(fs.first_m); > @@ -1219,6 +1245,12 @@ RetryFault:; > * write-enabled after all. > */ > prot &= retry_prot; > + fault_type &= retry_prot; > + if (prot == 0) { > + release_page(&fs); > + unlock_and_deallocate(&fs); > + goto RetryFault; > + } > } > } > I'm seeing really good results with this patch on my Ryzen package build machine. I have a set of 1782 ports that I build on a regular basis. I just did three consecutive poudriere runs and other than five ports that hard fail due to incompatibility with clang 6, and one gmake-related build runaway of lang/rust on one run that I think is another issue, I saw none of the flakey build issues that I've had with this machine. I've seen no recurrance of the lang/go build problems that I've had since day 1 on this machine (but not my AMD FX-8320E machine), and also no sign of guile-related build failures that I've seen both on this machine and the FX-8320E. I also didn't see the net/samba build hangs that seem to be caused by a heavily threaded python process getting deadlocked. From owner-freebsd-hackers@freebsd.org Tue Feb 13 09:11:48 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8DFB7F0D2AB for ; Tue, 13 Feb 2018 09:11:47 +0000 (UTC) (envelope-from Elliott.Rabe@dell.com) Received: from esa3.dell-outbound.iphmx.com (esa3.dell-outbound.iphmx.com [68.232.153.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.dell-outbound.iphmx.com", Issuer "Go Daddy Secure Certificate Authority - G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7317E6D0DB; Tue, 13 Feb 2018 09:11:46 +0000 (UTC) (envelope-from Elliott.Rabe@dell.com) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=dell.com; i=@dell.com; q=dns/txt; s=smtpout; t=1518512807; x=1550048807; h=from:cc:to:subject:date:message-id:references: in-reply-to:mime-version; bh=g45/xpQZrPGLdQIu/S0GNrn7vLe9lYBb8Zqg+TN+lms=; b=K0piFiDaGlISwsVURW9qpTaXJbzOInbaL9iFJ/Rgx03jYeVv7htzw7es mXyYW/enujVl2FReANKIQEdvT7UpeDldlv/ylWXbPpnGs9nxRdqX9AJOi 0evX07c1F/f+2BDpMZbEpkme75/KRrVUK1Cu3puatTZoyS7mPyc7sAKcH 4=; X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2EyAgANq4Jah8mZ6ERcGQEBAQEBAQEBA?= =?us-ascii?q?QEBAQcBAQEBAYMlgQNQMCgKg1uYS4ICfBuYWQqBXAGDXgIagj1XFQECAQEBAQE?= =?us-ascii?q?BAgECEAEBAQoLCQgoL4I4IoJKAQEBAQMaAQgEQA0EARACAQgRAQIBAgEJFgsCA?= =?us-ascii?q?gIHAwIBAgE3BggCBBMOiiewEYFtKBKIf4IRAQEBAQEFAQEBAQEUD4R+ghWDPgG?= =?us-ascii?q?CIFg2hGtOCQYGgmuCZQEEilYah12BdoVjiggJhGiHQIlcgh+GKoQZh2KLFI0Eg?= =?us-ascii?q?Tw1gXRwgxiCVQMNDIEKAQJ5eIoJAgIjB4EGgRcBAQE?= X-IPAS-Result: =?us-ascii?q?A2EyAgANq4Jah8mZ6ERcGQEBAQEBAQEBAQEBAQcBAQEBAYM?= =?us-ascii?q?lgQNQMCgKg1uYS4ICfBuYWQqBXAGDXgIagj1XFQECAQEBAQEBAgECEAEBAQoLC?= =?us-ascii?q?QgoL4I4IoJKAQEBAQMaAQgEQA0EARACAQgRAQIBAgEJFgsCAgIHAwIBAgE3Bgg?= =?us-ascii?q?CBBMOiiewEYFtKBKIf4IRAQEBAQEFAQEBAQEUD4R+ghWDPgGCIFg2hGtOCQYGg?= =?us-ascii?q?muCZQEEilYah12BdoVjiggJhGiHQIlcgh+GKoQZh2KLFI0EgTw1gXRwgxiCVQM?= =?us-ascii?q?NDIEKAQJ5eIoJAgIjB4EGgRcBAQE?= Received: from esa1.dell-outbound2.iphmx.com ([68.232.153.201]) by esa3.dell-outbound.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Feb 2018 03:05:37 -0600 From: Cc: , , , , Received: from ausxippc110.us.dell.com ([143.166.85.200]) by esa1.dell-outbound2.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Feb 2018 15:05:28 +0600 X-LoopCount0: from 10.166.135.91 X-IronPort-AV: E=Sophos;i="5.46,507,1511848800"; d="scan'208,223";a="616880699" X-DLP: DLP_GlobalPCIDSS To: Subject: Re: Stale memory during post fork cow pmap update Thread-Topic: Stale memory during post fork cow pmap update Thread-Index: AQHToi21ONrV41etXEyYDT4ce+JxhKOd4hEAgACyFgCAABC/AIAD0EUA Date: Tue, 13 Feb 2018 09:10:21 +0000 Message-ID: <5A82AB7C.6090404@dell.com> References: <5A7E7F2B.80900@dell.com> <20180210111848.GL33564@kib.kiev.ua> <5A7F6A7C.80607@dell.com> <20180210225608.GM33564@kib.kiev.ua> In-Reply-To: <20180210225608.GM33564@kib.kiev.ua> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.143.18.86] Content-Type: multipart/mixed; boundary="_003_5A82AB7C6090404dellcom_" MIME-Version: 1.0 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Feb 2018 09:11:48 -0000 --_003_5A82AB7C6090404dellcom_ Content-Type: text/plain; charset="utf-8" Content-ID: <3B969E07ED0FE9448795295A6E6E9CD3@dell.com> Content-Transfer-Encoding: base64 DQpPbiAwMi8xMC8yMDE4IDA0OjU2IFBNLCBLb25zdGFudGluIEJlbG91c292IHdyb3RlOg0KPiBP biBTYXQsIEZlYiAxMCwgMjAxOCBhdCAwOTo1NjoyMFBNICswMDAwLCBFbGxpb3R0LlJhYmVAZGVs bC5jb20gd3JvdGU6DQo+PiBPbiAwMi8xMC8yMDE4IDA1OjE4IEFNLCBLb25zdGFudGluIEJlbG91 c292IHdyb3RlOg0KPj4+IE9uIFNhdCwgRmViIDEwLCAyMDE4IGF0IDA1OjEyOjExQU0gKzAwMDAs IEVsbGlvdHQuUmFiZUBkZWxsLmNvbSB3cm90ZToNCj4+Pj4gLi4uDQo+Pj4+IEkndmUgYmVlbiBo dW50aW5nIGZvciB0aGUgcm9vdCBjYXVzZSBvZiBlbHVzaXZlLCBzbGlnaHQgbWVtb3J5DQo+Pj4+ IGNvcnJ1cHRpb25zIGluIGEgbGFyZ2UsIGNvbXBsZXggcHJvY2VzcyB0aGF0IG1hbmFnZXMgbWFu eSB0aHJlYWRzLiBBbGwNCj4+Pj4gZmFpbHVyZXMgYW5kIGV4cGVyaW1lbnRhdGlvbiB0aHVzIGZh ciBoYXMgYmVlbiBvbiB4ODZfNjQgYXJjaGl0ZWN0dXJlDQo+Pj4+IG1hY2hpbmVzLCBhbmQgcG1h cF9wY2lkIGlzIG5vdCBpbiB1c2UuDQo+Pj4+IC4uLg0KPj4+IEl0IGlzIG5lY2Vzc2FyeSBmb3Ig eW91IHRvIHByb3ZpZGUgdGhlIHRlc3QgYW5kIHByb3ZpZGUNCj4+PiBzb21lIGtpbmQgb2YgdGhl IHRlc3QgdHJhY2Ugb3IgdGhlIG91dHB1dCB3aGljaCBpbGx1c3RyYXRlcyB0aGUgaXNzdWUNCj4+ PiB5b3UgZm91bmQuDQo+PiBIZXJlIGlzIHRoZSBzZXF1ZW5jZSBvZiBhY3Rpb25zIEkgYW0gcmVm ZXJyaW5nIHRvLiAgVGhlcmUgaXMgb25seSBvbmUNCj4+IGxvY2ssIGFuZCBhbGwgdGhlIHdyaXRl cy9yZWFkcyBhcmUgb24gb25lIGxvZ2ljYWwgcGFnZS4NCj4+DQo+PiArVGhlIHByb2Nlc3MgaXMg Zm9ya2VkIHRyYW5zaXRpb25pbmcgYSBtYXAgZW50cnkgdG8gQ09XDQo+PiArVGhyZWFkIEEgd3Jp dGVzIHRvIGEgcGFnZSBvbiB0aGUgbWFwIGVudHJ5LCBmYXVsdHMsIHVwZGF0ZXMgdGhlIHBtYXAg dG8NCj4+IHdyaXRhYmxlIGF0IGEgbmV3IHBoeXMgYWRkciwgYW5kIHN0YXJ0cyBUTEIgaW52YWxp ZGF0aW9ucy4uLg0KPj4gK1RocmVhZCBCIGFjcXVpcmVzIGEgbG9jaywgd3JpdGVzIHRvIGEgbG9j YXRpb24gb24gdGhlIG5ldyBwaHlzIGFkZHIsDQo+PiBhbmQgcmVsZWFzZXMgdGhlIGxvY2sNCj4+ ICtUaHJlYWQgQyBhY3F1aXJlcyB0aGUgbG9jaywgcmVhZHMgZnJvbSB0aGUgbG9jYXRpb24gb24g dGhlIG9sZCBwaHlzIGFkZHIuLi4NCj4+ICtUaHJlYWQgQSAuLi5jb250aW51ZXMgdGhlIFRMQiBp bnZhbGlkYXRpb25zIHdoaWNoIGFyZSBjb21wbGV0ZWQNCj4+ICtUaHJlYWQgQyAuLi5yZWFkcyBm cm9tIHRoZSBsb2NhdGlvbiBvbiB0aGUgbmV3IHBoeXMgYWRkciwgYW5kIHJlbGVhc2VzDQo+PiB0 aGUgbG9jaw0KPj4NCj4+IEluIHRoaXMgZXhhbXBsZSBUaHJlYWQgQiBhbmQgQyBbbG9jaywgdXNl IGFuZCB1bmxvY2tdIHByb3Blcmx5IGFuZA0KPj4gbmVpdGhlciBvd24gdGhlIGxvY2sgYXQgdGhl IHNhbWUgdGltZS4gIFRocmVhZCBBIHdhcyB3cml0aW5nIHNvbWV3aGVyZQ0KPj4gZWxzZSBvbiB0 aGUgcGFnZSBhbmQgc28gbmV2ZXIgaGFkL25lZWRlZCB0aGUgbG9jay4gIFRocmVhZCBCIHNlZXMg YQ0KPj4gbG9jYXRpb24gdGhhdCBpcyBvbmx5IGV2ZXIgcmVhZHxtb2RpZmllZCB1bmRlciBhIGxv Y2sgY2hhbmdlIGJlbmVhdGggaXQNCj4+IHdoaWxlIGl0IGlzIHRoZSBsb2NrIG93bmVyLg0KPiBJ IGJlbGlldmUgeW91IG1lYW4gJ1RocmVhZCBDJyBpbiB0aGUgbGFzdCBzZW50ZW5jZS4NCllvdSBh cmUgY29ycmVjdCwgSSBkaWQgbWVhbiBUaHJlYWQgQy4NCj4+IEkgd2lsbCBnZXQgYSB0ZXN0IHBh dGNoIHRvZ2V0aGVyIGFuZCBtYWtlIGl0IGF2YWlsYWJsZSBhcyBzb29uIGFzIEkgY2FuLg0KPiBQ bGVhc2UuDQoNClNvcnJ5IGZvciBteSBkZWxheWVkIHJlc3BvbnNlOyBJIGhhZCBiZWVuIHdvcmtp bmcgb2ZmIGEgc2VwYXJhdGUgcHJvamVjdCANCmJhc2VkIG9uIHJlbGVuZy8xMS4xIGFuZCBpdCB0 b29rIG1lIGxvbmdlciB0aGVuIEkgZXhwZWN0ZWQgdG8gZ2V0IGEgZGV2IA0KcmlnIHNldHVwIG9m ZiBvZiBtYXN0ZXIgb24gd2hpY2ggSSBjb3VsZCByZS1ldmFsdWF0ZSB0aGUgc2l0dWF0aW9uLg0K DQpJIGFtIGF0dGFjaGluZyBteSB0ZXN0IGFwcGFyYXR1cywgaG93ZXZlciwgY2FsbGluZyBpdCBh IHRlc3QgaXMgcHJvYmFibHkgDQphIGRpc3NlcnZpY2UgdG8gdGVzdHMgZXZlcnl3aGVyZS4gIEkg Y29uc2lkZXIgdGhpcyBlbnRpcmUgZml4dHVyZSANCmRpc3Bvc2FibGUsIHNvIEkgZGlkbid0IGdl dCBjYXJyaWVkIGF3YXkgdHJ5aW5nIHRvIHByb3Blcmx5IA0Kc3R5bGUvcGFydGl0aW9uL2xvY2F0 ZSB0aGUgY29kZS4gIEkgbmV2ZXIgd2FudGVkIGFueXRoaW5nIHRoaXMgDQpjb21wbGljYXRlZCBl aXRoZXI7IGl0IHByZXR0eSBtdWNoIGp1c3QgZXZvbHZlZCBpbnRvIGEgZGV2ZWxvcG1lbnQgYWlk IA0KdG8gc3BlbHVuayBhcm91bmQgaW4gdGhlIGZhdWx0L3BtYXAgaGFuZGxpbmcuICBNeSBhdHRl bXB0cyB0aHVzLWZhciBhdCANCnJlZHVjaW5nIHRoZSBmaXh0dXJlIHRvIGJlIHVzZXItc3BhY2Ug b25seSBoYXZlIG5vdCBiZWVuIHN1Y2Nlc3NmdWwuICANCkFkZGl0aW9uYWxseSwgSSBoYXZlIG5v dGljZWQgdGhhdCB0aGUgZml4dHVyZSBpcyAvdmVyeS8gc2Vuc2l0aXZlIHRvIGFueSANCmNoYW5n ZXMgaW4gdGltaW5nOyBzZXZlcmFsIG9mIHRoZSBkZWJ1Z2dpbmcgZW50cmllcyBldmVuIHNlZW0g a2V5IHRvIA0KaGl0dGluZyB0aGUgcHJvYmxlbS4gIEkgZGlkbid0IGhhdmUgbXVjaCBsdWNrIGdl dHRpbmcgdGhlIHByb2JsZW0gdG8gDQptYW5pZmVzdCBvbiBhIHZpcnR1YWwgbWFjaGluZSBndWVz dCB3LyBhIFZpcnR1YWxCb3ggaG9zdCBlaXRoZXIuICBGb3IgDQphbGwgb2YgdGhlc2UgcmVhc29u cywgSSBkb24ndCB0aGluayB0aGVyZSBpcyB2YWx1ZSBoZXJlIGluIHRyeWluZyB0byB1c2UgDQp0 aGlzIGFzIGFueSBzb3J0IG9mIHJlZ3Jlc3Npb24gZml4dHVyZSwgdW5sZXNzIHBlcmhhcHMgaWYg c29tZW9uZSBpcyANCndpbGxpbmcgdG8gdHJ5IHRvIHR1cm4gaXQgaW50byBzb21ldGhpbmcgbGVz cyByaWRpY3Vsb3VzLiAgRGVzcGl0ZSBhbGwgDQpzaG9ydGNvbWluZ3MsIG9uIG15IGhhcmR3YXJl IGFueXdheXMsIGl0IGlzIGFibGUgdG8gcmVwcm9kdWNlIHRoZSANCmV4YW1wbGUgSSBkZXNjcmli ZWQgcHJldHR5IG11Y2ggaW1tZWRpYXRlbHkgd2hlbiBJIHVzZSBpdCB3aXRoIHRoZSANCmRlYnVn Z2luZyBrbm9iICItdiIuIEluc3RydWN0aW9ucyBhbmQgZXhwZWN0YXRpb25zIGFyZSBhdCB0aGUg dG9wIG9mIHRoZSANCm1haW4gdGVzdCBmaXh0dXJlIHNvdXJjZSBmaWxlLg0KDQpJIGFtIGFsc28g YXR0YWNoaW5nIGEgcGF0Y2ggdGhhdCBJIGhhdmUgYmVlbiB1c2luZyB0byBwcmV2ZW50IHRoZSAN CnByb2JsZW0uICBJIHdhcyBsb29raW5nIGF0IHRoaW5ncyB3aXRoIGEgbXVjaCBuYXJyb3dlciB2 aWV3IGFuZCBtYWRlIHRoZSANCmNoYW5nZXMgZGlyZWN0bHkgaW4gcG1hcF9lbnRlci4gIEkgc3Vz cGVjdCB0aGUgaW50ZXJuYWwgDQpkb3VibGUtdXBkYXRlLWludmFsaWRhdGUgaXMgc2xpZ2h0bHkg YmV0dGVyIHBlcmZvcm1hbmNlIHdpc2UgdGhlbiB0YWtpbmcgDQp0d28gd2hvbGUgZmF1bHRzLCBi dXQgSSBoYXZlbid0IGJlbmNobWFya2VkIGl0LCBpdCBwcm9iYWJseSBkb2Vzbid0IA0KbWF0dGVy IG11Y2ggY29tcGFyZWQgdG8gdGhlIGNvc3QgYW5kIGZyZXF1ZW5jeSBvZiB0aGUgYWN0dWFsIGNv cGllcywgYW5kIA0KaXQgYWxzbyBoYXMgdGhlIGRpc2FkdmFudGFnZSBvZiBiZWluZyBhcmNoaXRl Y3R1cmUgc3BlY2lmaWMuICBJIGFsc28gDQpkb24ndCBmZWVsIGxpa2UgSSBoYXZlIGVub3VnaCBl eHBlcmllbmNlIHdpdGggdGhlIHZtIGZhdWx0IGNvZGUgaW4gDQpnZW5lcmFsIGZvciBteSBjb21t ZW50YXJ5IHRvIGJlIHZlcnkgdmFsdWFibGUgaGVyZS4gIEhvd2V2ZXIsIEkgZG8gDQp3b25kZXI6 IDEpIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc2NlbmFyaW9zIHdoZXJlIGEgcG90ZW50aWFsbHkg DQphY2Nlc3NpYmxlIHBhZ2UgbWlnaHQgYmUgdW5kZXJnb2luZyBhbiBbYWRkcmVzcyt3cml0YWJs ZV0gY2hhbmdlIGluIHRoZSANCnNhbWUgd2F5ICh0aGlzIHNvcnQgb2YgdGhpbmcgc2VlbXMgaGFy ZCB0byByZWFkIG91dCBvZiBjb2RlKSwgYW5kIDIpIGlmIA0KdGhlcmUgaXMgZXZlciBhbnkgbGVn YWwgcmVhc29uIHdoeSBhbiBhY2Nlc3NpYmxlIHBhZ2Ugc2hvdWxkIGJlIA0KdW5kZXJnb2luZyBz dWNoIGEgY2hhbmdlPyAgSWYgbm90LCBwZXJoYXBzIHdlIGNvdWxkIGNvbWUgdXAgd2l0aCBhbiAN CmFwcHJvcHJpYXRlIHNhbml0eS1jaGVjayBjb25kaXRpb24gdG8gZ3VhcmQgYWdhaW5zdCBhbnkg Y2FzZXMgb2YgdGhpcyANCnNvcnQgb2YgdGhpbmcgYWNjaWRlbnRhbGx5IHNsaXBwaW5nIGluIHRo ZSBmdXR1cmUuDQoNClRoZSBhdHRhY2hlZCBnaXQgcGF0Y2hlcyBzaG91bGQgYXBwbHkgYW5kIGJ1 aWxkIGNsZWFubHkgb24gbWFzdGVyIGNvbW1pdCANCmZlMGVlNWMuICBJIGhhdmUgdmVyaWZpZWQg YXQgbGVhc3QgdGhlc2UgdGhyZWUgc2NlbmFyaW9zIGluIG15IGVudmlyb25tZW50Og0KMSkgdGhl IGZpeHR1cmUgYWxvbmUgcmVwcm9kdWNlcyB0aGUgcHJvYmxlbS4NCjIpIHRoZSBmaXh0dXJlIHdp dGggbXkgcGF0Y2ggZG9lcyBub3QgcmVwcm9kdWNlIHRoZSBwcm9ibGVtLg0KMykgdGhlIGZpeHR1 cmUgd2l0aCB5b3VyIHBhdGNoIGRvZXMgbm90IHJlcHJvZHVjZSB0aGUgcHJvYmxlbS4NCg0KVGhh bmtzIQ0K --_003_5A82AB7C6090404dellcom_ Content-Type: text/x-patch; name="0001-DISPOSABLE-A-test-fixture-that-can-repro-a-pmap-upda.patch" Content-Description: 0001-DISPOSABLE-A-test-fixture-that-can-repro-a-pmap-upda.patch Content-Disposition: attachment; filename="0001-DISPOSABLE-A-test-fixture-that-can-repro-a-pmap-upda.patch"; size=70608; creation-date="Tue, 13 Feb 2018 09:10:21 GMT"; modification-date="Tue, 13 Feb 2018 09:10:21 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSAzMDkwYjgyMzJmNmY0MjFjMGM2ZGUyMTAyYjE4Y2ZhYzU3MDBiNTFhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogRWxsaW90dCBSYWJlIDxlbGxpb3R0LnJhYmVAZGVsbC5jb20+ DQpEYXRlOiBTdW4sIDExIEZlYiAyMDE4IDE3OjE5OjI2IC0wNjAwDQpTdWJqZWN0OiBbUEFUQ0gg MS8zXSBESVNQT1NBQkxFOiBBIHRlc3QgZml4dHVyZSB0aGF0IGNhbiByZXBybyBhIHBtYXANCiB1 cGRhdGUtaW52YWxpZGF0ZSByYWNlIGNvbmRpdGlvbg0KDQpBIGhpZ2gtbGV2ZWwgZGVzY3JpcHRp b24gb2YgdGhlIGZpeHR1cmUgaXMgYXZhaWxhYmxlIGluIGZvcmtpbmdfc3RhbGUuYw0KLS0tDQog c3RhbmQvbGlic2EvcHJpbnRmLmMgICB8ICAgMTYgKw0KIHN0YW5kL2xpYnNhL3N0YW5kLmggICAg fCAgICAxICsNCiBzeXMvYW1kNjQvYW1kNjQvcG1hcC5jIHwgICAxNSArDQogc3lzL2FtZDY0L2Nv bmYvR0VORVJJQyB8ICAgMTkgKy0NCiBzeXMvdm0vZm9ya2luZ19zdGFsZS5jIHwgMTA1NCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCiBzeXMvdm0vZm9y a2luZ19zdGFsZS5oIHwgIDI5NiArKysrKysrKysrKysrKw0KIHN5cy92bS92bV9mYXVsdC5jICAg ICAgfCAgIDE2ICsNCiBzeXMvdm0vdm1fcGFnZS5jICAgICAgIHwgIDQ1OSArKysrKysrKysrKysr KysrKysrKysNCiBzeXMvdm0vdm1fcGFnZS5oICAgICAgIHwgICAgNSArDQogOSBmaWxlcyBjaGFu Z2VkLCAxODcyIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pDQogY3JlYXRlIG1vZGUgMTAw NzU1IHN5cy92bS9mb3JraW5nX3N0YWxlLmMNCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3lzL3ZtL2Zv cmtpbmdfc3RhbGUuaA0KDQpkaWZmIC0tZ2l0IGEvc3RhbmQvbGlic2EvcHJpbnRmLmMgYi9zdGFu ZC9saWJzYS9wcmludGYuYw0KaW5kZXggZDBjNDA5ZC4uYzc3ZTk0MSAxMDA2NDQNCi0tLSBhL3N0 YW5kL2xpYnNhL3ByaW50Zi5jDQorKysgYi9zdGFuZC9saWJzYS9wcmludGYuYw0KQEAgLTE0OSw2 ICsxNDksMjIgQEAgdnNwcmludGYoY2hhciAqYnVmLCBjb25zdCBjaGFyICpjZm10LCB2YV9saXN0 IGFwKQ0KIAlidWZbcmV0dmFsXSA9ICdcMCc7DQogfQ0KIA0KK2ludA0KK3ZzbnByaW50ZihjaGFy ICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpjZm10LCB2YV9saXN0IGFwKQ0KK3sNCisg ICAgaW50IHJldHZhbDsNCisgICAgc3RydWN0IHByaW50X2J1ZiBhcmc7DQorDQorICAgIGFyZy5i dWYgPSBidWY7DQorICAgIGFyZy5zaXplID0gc2l6ZTsNCisNCisgICAgcmV0dmFsID0ga3Zwcmlu dGYoY2ZtdCwgJnNucHJpbnRfZnVuYywgJmFyZywgMTAsIGFwKTsNCisNCisgICAgaWYgKGFyZy5z aXplID49IDEpDQorICAgICAgICAqKGFyZy5idWYpKysgPSAwOw0KKyAgICByZXR1cm4gcmV0dmFs Ow0KK30NCisNCiAvKg0KICAqIFB1dCBhIE5VTC10ZXJtaW5hdGVkIEFTQ0lJIG51bWJlciAoYmFz ZSA8PSAzNikgaW4gYSBidWZmZXIgaW4gcmV2ZXJzZQ0KICAqIG9yZGVyOyByZXR1cm4gYW4gb3B0 aW9uYWwgbGVuZ3RoIGFuZCBhIHBvaW50ZXIgdG8gdGhlIGxhc3QgY2hhcmFjdGVyDQpkaWZmIC0t Z2l0IGEvc3RhbmQvbGlic2Evc3RhbmQuaCBiL3N0YW5kL2xpYnNhL3N0YW5kLmgNCmluZGV4IGY2 YTYxMmIuLjhkNTBlZmUgMTAwNjQ0DQotLS0gYS9zdGFuZC9saWJzYS9zdGFuZC5oDQorKysgYi9z dGFuZC9saWJzYS9zdGFuZC5oDQpAQCAtMjc0LDYgKzI3NCw3IEBAIGV4dGVybiB2b2lkCXZwcmlu dGYoY29uc3QgY2hhciAqZm10LCBfX3ZhX2xpc3QpOw0KIGV4dGVybiBpbnQJc3ByaW50ZihjaGFy ICpidWYsIGNvbnN0IGNoYXIgKmNmbXQsIC4uLikgX19wcmludGZsaWtlKDIsIDMpOw0KIGV4dGVy biBpbnQJc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqY2ZtdCwg Li4uKSBfX3ByaW50Zmxpa2UoMywgNCk7DQogZXh0ZXJuIHZvaWQJdnNwcmludGYoY2hhciAqYnVm LCBjb25zdCBjaGFyICpjZm10LCBfX3ZhX2xpc3QpOw0KK2V4dGVybiBpbnQgIHZzbnByaW50Zihj aGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBjaGFyICpjZm10LCBfX3ZhX2xpc3QpOw0KIA0K IGV4dGVybiB2b2lkCXR3aWRkbGUodV9pbnQgY2FsbGVyZGl2KTsNCiBleHRlcm4gdm9pZAl0d2lk ZGxlX2Rpdmlzb3IodV9pbnQgZ2xvYmFsZGl2KTsNCmRpZmYgLS1naXQgYS9zeXMvYW1kNjQvYW1k NjQvcG1hcC5jIGIvc3lzL2FtZDY0L2FtZDY0L3BtYXAuYw0KaW5kZXggYjk4ODllMy4uN2JiOWMx YiAxMDA2NDQNCi0tLSBhL3N5cy9hbWQ2NC9hbWQ2NC9wbWFwLmMNCisrKyBiL3N5cy9hbWQ2NC9h bWQ2NC9wbWFwLmMNCkBAIC00NjI4LDYgKzQ2MjgsOCBAQCBpbnQNCiBwbWFwX2VudGVyKHBtYXBf dCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgdm1fcGFnZV90IG0sIHZtX3Byb3RfdCBwcm90LA0KICAg ICB1X2ludCBmbGFncywgaW50OF90IHBzaW5kKQ0KIHsNCisJZnN0Zl9jb25kaXRpb25hbF9mYXVs dF9kZWJ1ZyhfX0ZJTEVfXywgX19MSU5FX18sIHBtYXAsIHZhLCBwcm90KTsNCisNCiAJc3RydWN0 IHJ3bG9jayAqbG9jazsNCiAJcGRfZW50cnlfdCAqcGRlOw0KIAlwdF9lbnRyeV90ICpwdGUsIFBH X0csIFBHX0EsIFBHX00sIFBHX1JXLCBQR19WOw0KQEAgLTQ3OTIsOSArNDc5NCwyMCBAQCBwbWFw X2VudGVyKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgdm1fcGFnZV90IG0sIHZtX3Byb3Rf dCBwcm90LA0KIAkvKg0KIAkgKiBVcGRhdGUgdGhlIFBURS4NCiAJICovDQorCWZzdGZfY29uZGl0 aW9uYWxfcG9pbnRfZGVidWcoX19GSUxFX18sIF9fTElORV9fLCBwbWFwLCB2YSk7DQorDQogCWlm ICgob3JpZ3B0ZSAmIFBHX1YpICE9IDApIHsNCiB2YWxpZGF0ZToNCisJCWZzdGZfY29uZGl0aW9u YWxfcG1hcG1vZF9hZHZhbmNlKF9fRklMRV9fLA0KKwkJCQkJCSBfX0xJTkVfXywNCisJCQkJCQkg dmEsDQorCQkJCQkJIFBIWVNfVE9fVk1fUEFHRShuZXdwdGUgJiBQR19GUkFNRSkpOw0KKw0KIAkJ b3JpZ3B0ZSA9IHB0ZV9sb2FkX3N0b3JlKHB0ZSwgbmV3cHRlKTsNCisNCisJCWZzdGZfY29uZGl0 aW9uYWxfcHRlX2RlYnVnKF9fRklMRV9fLCBfX0xJTkVfXywgcG1hcCwgdmEsIG9yaWdwdGUpOw0K KwkJZnN0Zl9jb25kaXRpb25hbF9wdGVfZGVidWcoX19GSUxFX18sIF9fTElORV9fLCBwbWFwLCB2 YSwgbmV3cHRlKTsNCisNCiAJCW9wYSA9IG9yaWdwdGUgJiBQR19GUkFNRTsNCiAJCWlmIChvcGEg IT0gcGEpIHsNCiAJCQlpZiAoKG9yaWdwdGUgJiBQR19NQU5BR0VEKSAhPSAwKSB7DQpAQCAtNDgz Myw2ICs0ODQ2LDggQEAgcG1hcF9lbnRlcihwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsIHZt X3BhZ2VfdCBtLCB2bV9wcm90X3QgcHJvdCwNCiAJfSBlbHNlDQogCQlwdGVfc3RvcmUocHRlLCBu ZXdwdGUpOw0KIA0KKwlmc3RmX2NvbmRpdGlvbmFsX3BvaW50X2RlYnVnKF9fRklMRV9fLCBfX0xJ TkVfXywgcG1hcCwgdmEpOw0KKw0KIHVuY2hhbmdlZDoNCiANCiAjaWYgVk1fTlJFU0VSVkxFVkVM ID4gMA0KZGlmZiAtLWdpdCBhL3N5cy9hbWQ2NC9jb25mL0dFTkVSSUMgYi9zeXMvYW1kNjQvY29u Zi9HRU5FUklDDQppbmRleCAxYWY3YjdiLi40YzQ1MjkwIDEwMDY0NA0KLS0tIGEvc3lzL2FtZDY0 L2NvbmYvR0VORVJJQw0KKysrIGIvc3lzL2FtZDY0L2NvbmYvR0VORVJJQw0KQEAgLTg2LDE2ICs4 NiwxNiBAQCBvcHRpb25zIAlSQ1RMCQkJIyBSZXNvdXJjZSBsaW1pdHMNCiBvcHRpb25zIAlLREIJ CQkjIEVuYWJsZSBrZXJuZWwgZGVidWdnZXIgc3VwcG9ydC4NCiBvcHRpb25zIAlLREJfVFJBQ0UJ CSMgUHJpbnQgYSBzdGFjayB0cmFjZSBmb3IgYSBwYW5pYy4NCiAjIEZvciBmdWxsIGRlYnVnZ2Vy IHN1cHBvcnQgdXNlICh0dXJuIG9mZiBpbiBzdGFibGUgYnJhbmNoKToNCi1vcHRpb25zIAlCVUZf VFJBQ0tJTkcJCSMgVHJhY2sgYnVmZmVyIGhpc3RvcnkNCi1vcHRpb25zIAlEREIJCQkjIFN1cHBv cnQgRERCLg0KLW9wdGlvbnMgCUZVTExfQlVGX1RSQUNLSU5HCSMgVHJhY2sgbW9yZSBidWZmZXIg aGlzdG9yeQ0KKyNvcHRpb25zIAlCVUZfVFJBQ0tJTkcJCSMgVHJhY2sgYnVmZmVyIGhpc3RvcnkN Cisjb3B0aW9ucyAJRERCCQkJIyBTdXBwb3J0IEREQi4NCisjb3B0aW9ucyAJRlVMTF9CVUZfVFJB Q0tJTkcJIyBUcmFjayBtb3JlIGJ1ZmZlciBoaXN0b3J5DQogb3B0aW9ucyAJR0RCCQkJIyBTdXBw b3J0IHJlbW90ZSBHREIuDQotb3B0aW9ucyAJREVBRExLUkVTCQkjIEVuYWJsZSB0aGUgZGVhZGxv Y2sgcmVzb2x2ZXINCi1vcHRpb25zIAlJTlZBUklBTlRTCQkjIEVuYWJsZSBjYWxscyBvZiBleHRy YSBzYW5pdHkgY2hlY2tpbmcNCi1vcHRpb25zIAlJTlZBUklBTlRfU1VQUE9SVAkjIEV4dHJhIHNh bml0eSBjaGVja3Mgb2YgaW50ZXJuYWwgc3RydWN0dXJlcywgcmVxdWlyZWQgYnkgSU5WQVJJQU5U Uw0KLW9wdGlvbnMgCVdJVE5FU1MJCQkjIEVuYWJsZSBjaGVja3MgdG8gZGV0ZWN0IGRlYWRsb2Nr cyBhbmQgY3ljbGVzDQotb3B0aW9ucyAJV0lUTkVTU19TS0lQU1BJTgkjIERvbid0IHJ1biB3aXRu ZXNzIG9uIHNwaW5sb2NrcyBmb3Igc3BlZWQNCi1vcHRpb25zIAlNQUxMT0NfREVCVUdfTUFYWk9O RVM9OAkjIFNlcGFyYXRlIG1hbGxvYyg5KSB6b25lcw0KKyNvcHRpb25zIAlERUFETEtSRVMJCSMg RW5hYmxlIHRoZSBkZWFkbG9jayByZXNvbHZlcg0KKyNvcHRpb25zIAlJTlZBUklBTlRTCQkjIEVu YWJsZSBjYWxscyBvZiBleHRyYSBzYW5pdHkgY2hlY2tpbmcNCisjb3B0aW9ucyAJSU5WQVJJQU5U X1NVUFBPUlQJIyBFeHRyYSBzYW5pdHkgY2hlY2tzIG9mIGludGVybmFsIHN0cnVjdHVyZXMsIHJl cXVpcmVkIGJ5IElOVkFSSUFOVFMNCisjb3B0aW9ucyAJV0lUTkVTUwkJCSMgRW5hYmxlIGNoZWNr cyB0byBkZXRlY3QgZGVhZGxvY2tzIGFuZCBjeWNsZXMNCisjb3B0aW9ucyAJV0lUTkVTU19TS0lQ U1BJTgkjIERvbid0IHJ1biB3aXRuZXNzIG9uIHNwaW5sb2NrcyBmb3Igc3BlZWQNCisjb3B0aW9u cyAJTUFMTE9DX0RFQlVHX01BWFpPTkVTPTgJIyBTZXBhcmF0ZSBtYWxsb2MoOSkgem9uZXMNCiAN CiAjIE1ha2UgYW4gU01QLWNhcGFibGUga2VybmVsIGJ5IGRlZmF1bHQNCiBvcHRpb25zIAlTTVAJ CQkjIFN5bW1ldHJpYyBNdWx0aVByb2Nlc3NvciBLZXJuZWwNCkBAIC0xMDMsNiArMTAzLDcgQEAg b3B0aW9ucyAJRUFSTFlfQVBfU1RBUlRVUA0KIA0KICMgQ1BVIGZyZXF1ZW5jeSBjb250cm9sDQog ZGV2aWNlCQljcHVmcmVxDQorZGV2aWNlICAgICAgY3B1Y3RsDQogDQogIyBCdXMgc3VwcG9ydC4N CiBkZXZpY2UJCWFjcGkNCmRpZmYgLS1naXQgYS9zeXMvdm0vZm9ya2luZ19zdGFsZS5jIGIvc3lz L3ZtL2Zvcmtpbmdfc3RhbGUuYw0KbmV3IGZpbGUgbW9kZSAxMDA3NTUNCmluZGV4IDAwMDAwMDAu LjQ3YTFiYjkNCi0tLSAvZGV2L251bGwNCisrKyBiL3N5cy92bS9mb3JraW5nX3N0YWxlLmMNCkBA IC0wLDAgKzEsMTA1NCBAQA0KKy8qDQorICogRlNURg0KKyAqDQorICogZm9ya2luZyBzdGFsZSB0 ZXN0IGZpeHR1cmUNCisgKg0KKyAqIEEgdGVzdCBmaXh0dXJlIHRvIHJlcHJvIGEgc3BlY2lmaWMg cmFjZSBjb25kaXRpb24gaW4gdGhlDQorICogRnJlZUJTRCBrZXJuZWwgYW1kNjQgcG1hcCBjb2Rl Lg0KKyAqDQorICogVGhlIHRlc3QgZml4dHVyZSBoYXMgY29tcG9uZW50cyBpbiB0aGUga2VybmVs IGFuZCB1c2Vyc3BhY2UuDQorICogQSBzeXNjdGwgaG9vayBpbiB0aGUga2VybmVsIGlzIGNhbGxl ZCBmcm9tIHVzZXJzcGFjZSB0byBhbGxvY2F0ZQ0KKyAqIGEgcmVnaW9uIG9mIG1lbW9yeSBpbiB0 aGUga2VybmVsLCB0aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB3aGljaA0KKyAqIGlzIG1tYXBlZCBz b21ld2hlcmUgaW50byB0aGUgdGVzdCBwcm9jZXNzLiAgNjQtYml0cyBvZiB0aGlzIHJlZ2lvbg0K KyAqIGlzIHRoZW4gYXRvbWljYWxseSBtYW5pcHVsYXRlZCBpbiBib3RoIGtlcm5lbCBhbmQgdXNl cnNwYWNlIHRvDQorICogaGVscCBjb29yZGluYXRlIHRlc3QgYWN0aW9ucy4gIFRoaXMgY29vcmRp bmF0aW9uIGlzIG5vdGhpbmcgbW9yZQ0KKyAqIHRoZW4gYml0LWZsYWcgY2hhbmdpbmcgJiAic3Bp bi13YWl0IiBsb29wcyBpbnRlbmRlZCB0byBhZHZhbmNlDQorICogYWN0aW9ucyBpbiBhIHNwZWNp ZmljIHNlcXVlbmNlLiAgVGhlIHRlc3QgY3JlYXRlcyB0aHJlZSB0aHJlYWRzOg0KKyAqIGEgZmF1 bHRlciwgYSB3cml0ZXIsIGFuZCBhIHJlYWRlci4gIFRoZSBtYWluIHByb2Nlc3MgdXBkYXRlcw0K KyAqIHRoZSB2YWx1ZSBhdCBhIHZpcnR1YWwgYWRkcmVzcyB0byBhIGtub3duIHN0YXRlIHVuZGVy IGEgbG9jay4NCisgKiBUaGUgcHJvY2VzcyBpcyBmb3JrZWQgYW5kIGhlbGQgdG8ga2VlcCB0aGUg dm0gZW50cmllcyBpbiBhDQorICogY29weS1vbi13cml0ZSBzdGF0ZS4gIFRoZSBmYXVsdGVyIHRo cmVhZCBpcyBhd29rZW4gdG8gdHJhcCBpbg0KKyAqIHRoZSBrZXJuZWwgdG8gcGVyZm9ybSB0aGUg Y29weS1vbi13cml0ZSBvcGVyYXRpb24gZm9yIGEgcGFnZS4NCisgKiBPbmNlIHRoZSBwbWFwIHBh Z2UgdXBkYXRlIHRoYXQgYXBwbGllcyB0aGUgbmV3IHBoeXNpY2FsIGFkZHJlc3MNCisgKiBBTkQg dGhlIGNsZWFyaW5nIG9mIHRoZSByZWFkLW9ubHkgc3RhdGUgaGFzIG9jY3VycmVkIHRoZSB3cml0 ZXINCisgKiBhbmQgcmVhZGVyIHRocmVhZHMgYXJlIHJlbGVhc2VkLiAgVGhlIHJlYWRlciB0aHJl YWQgY29udGludWFsbHkNCisgKiByZWFkcyB0aGUgdmFsdWUgdW5kZXIgbG9jayB0d2ljZSBhbmQg ZW5zdXJlcyB0aGUgdmFsdWVzIHJlYWQgYXJlDQorICogdGhlIHNhbWUuICBUaGUgd3JpdGVyIHRo cmVhZCBjaGFuZ2VzIHRoZSB2YWx1ZSB1bmRlciB0aGUgbG9jay4NCisgKiBUaGUgaXRlcmF0aW9u IHN0b3BzIG9uY2UgdGhlIGZhdWx0IGhhbmRsaW5nIGhhcyBiZWVuIGNvbXBsZXRlZC4NCisgKiBU aGlzIHdob2xlIHRlc3QgY3ljbGUgaXMgcmVwZWF0ZWQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBp dGVyYXRpb25zLg0KKyAqDQorICogVGhlIGV4cGVjdGVkICJ3b3JraW5nIiBiZWhhdmlvciBmcm9t IHRoZSBPUyBpcyB0aGF0IGJlY2F1c2UgdGhlDQorICogdGVzdCB2YWx1ZSBpcyBhbHdheXMgbW9k aWZpZWQgYW5kIHJlYWQgdW5kZXIgdGhlIHNhbWUgbG9jaywgdGhhdCBpdA0KKyAqIHNob3VsZCBu b3QgYmUgcG9zc2libGUgZm9yIGEgdGhyZWFkIHRvIHJlYWQgdGhlIHZhbHVlIHR3aWNlIGFuZCBz ZWUNCisgKiBhIGNoYW5nZSBpbiB2YWx1ZS4gIEluIHByYWN0aWNlIGEgIm1pc21hdGNoIiBjYW4g YmUgb2JzZXJ2ZWQsIHByZXN1bWFibHkNCisgKiBpZiB0aGUgVExCIGlzIGludmFsaWRhdGVkIGZv ciB0aGUgQ1BVIHRoZSByZWFkZXIgdGhyZWFkIGlzIHJ1bm5pbmcNCisgKiBvbiBpbi1iZXR3ZWVu IHN1Y2Nlc3NpdmUgcmVhZHMuDQorICoNCisgKiBUaGUgZXhwZWN0ZWQgIndvcmtpbmciIGJlaGF2 aW9yIGZyb20gdGhlIHRlc3QgZml4dHVyZSBiZWxvdyB3aGVuIGl0DQorICogZGV0ZWN0cyB0aGUg cHJvYmxlbSBpcyB0byBlcnJvciBvdXQgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZQ0KKyAqIGRp c3BsYXlpbmcgImNvbXBsZXRlIE1JU01BVENIIiB3aGVuIHRoZSByZWFkZXIgdGhyZWFkIHNlZXMg dGhlDQorICogaWxsZWdhbCB2YWx1ZSBjaGFuZ2UuDQorICoNCisgKiBUaGlzIHRlc3QgaXMgZXhw ZWN0ZWQgdG8gcnVuIG9ubHkgb24gYW4geDg2XzY0IHBsYXRmb3JtIHdpdGggYXQNCisgKiBsZWFz dCA0IENQVXMgY29uZmlndXJlZCBmb3IgU01QLiAgSXQgaXMgbm90IGV4cGVjdGVkIHRvIHdvcmsg KG5vcg0KKyAqIHdhcyBpdCBldmVyIHRyaWVkKSBvbiBhbnkgb3RoZXIgYXJjaGl0ZWN0dXJlIHR5 cGVzIG9yIHBsYXRmb3JtcyB3aXRoDQorICogc21hbGxlciBDUFUgY291bnRzLiAgSXQgYWxzbyB1 c2VzIHRoZSAicmR0c2NwIiBpbnN0cnVjdGlvbg0KKyAqIHdoZW4gZ2VuZXJhdGluZyBkZWJ1Z2dp bmcgaW5mbyB0byBoZWxwIGNvcnJlbGF0ZSBhY3Rpb25zIG9jY3VycmluZw0KKyAqIGFjcm9zcyBk aWZmZXJlbnQgQ1BVcy9UU0NzLiAgSWYgdGhpcyBpcyBub3QgYXZhaWxhYmxlLCB0aGUgZml4dHVy ZQ0KKyAqIHdpbGwgY29yZSBhdHRlbXB0aW5nIHRvIGV4ZWN1dGUgYW4gaWxsZWdhbCBpbnN0cnVj dGlvbi4gIFRoZSBUU0MNCisgKiBNU1IgQVVYIGNhbiBiZSBzZWVkZWQgd2l0aCB0aGUgQ1BVIElE IGZyb20gYSBzaGVsbCBsaWtlIHRoaXM6DQorICogcm9vdEA6L3Vzci9zcmMvc3lzL3ZtICMgbXNy X3RzY19hdXg9MHhjMDAwMDEwMzsgbWF4X2NwdV9pZD1gc3lzY3RsIC1uIGtlcm4uc21wLm1heGlk YDsgY3B1PTANCisgKiByb290QDovdXNyL3NyYy9zeXMvdm0gIyB3aGlsZSBbICR7Y3B1fSAtbGUg JHttYXhfY3B1X2lkfSBdOyBkbyBjcHVoZXg9YHByaW50ZiAweCV4ICR7Y3B1fWA7IGNwdWNvbnRy b2wgLW0gIiR7bXNyX3RzY19hdXh9PSR7Y3B1aGV4fSIgIi9kZXYvY3B1Y3RsJHtjcHV9IjsgY3B1 PWBleHByICIke2NwdX0iICsgMWA7IGRvbmUNCisgKg0KKyAqIE5PVEU6ICBBbHRob3VnaCBJIGhh dmUgc2VlbiBpdCBmYWlsIG9jY2FzaW9uYWxseSBvbiB0ZXN0IHZpcnR1YWwgbWFjaGluZXMsDQor ICogdGhlIGZpeHR1cmUgaXMgZmFyIG1vcmUgcmVsaWFibGUgb24gcmVhbCBoYXJkd2FyZSAodXN1 YWxseSBmYWlscyBpbiBhIGZldyBzZWNvbmRzKS4NCisgKiBUaGUgdGltaW5nIG5lY2Vzc2FyeSB0 byBoaXQgdGhpcyByYWNlIGNvbmRpdGlvbiBzZWVtcyB2ZXJ5IGRlbGljYXRlLg0KKyAqDQorICog VGhlIHRlc3QgZml4dHVyZSByZXF1aXJlcyBhIGtlcm5lbCBidWlsdCB3LyB0aGUgdGVzdCBob29r cyBhcyB3ZWxsLg0KKyAqIEFwcGx5IHRoZSB0ZXN0IGNvZGUgcGF0Y2ggZnJvbSAvdXNyL3NyYywg cmVidWlsZCBhbmQgYm9vdCBpbnRvIHRoZSBrZXJuZWwuDQorICogVGhlIHRlc3QgZml4dHVyZSBj YW4gYmUgYnVpbHQgZnJvbSB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoNCisgKiByb290QDov dXNyL3NyYy9zeXMvdm0gIyBjbGFuZyAtV2FsbCAtZyAtTzAgZm9ya2luZ19zdGFsZS5jIC1vIGZv cmtpbmdfc3RhbGUgLWxwdGhyZWFkDQorICoNCisgKiBFeGFtcGxlIG91dHB1dCBpZiB0aGUgZml4 dHVyZSBkZXRlY3RzIHRoZSBwcm9ibGVtOg0KKyAqDQorICogcm9vdEA6L3Vzci9zcmMvc3lzL3Zt ICMgLi9mb3JraW5nX3N0YWxlIC12ID4gL2Rldi9udWxsDQorICogUlVOVElNRSBQQVJBTVM6bml0 ZXJzIDEwMDAwMA0KKyAqIEVSUk9SOiBNaXNtYXRjaDogT2xkPTAsIE5ldz0xDQorICogcnVudGlt ZSAoc2VjKSAwLjM3ODY2Nw0KKyAqIGZvcmtzIDExNDkNCisgKiBmYXVsdGVyIGl0ZXJzIDExNDkN CisgKiB3cml0ZXIgaXRlcnMgMTE0OQ0KKyAqIHJlYWRlciBpdGVycyA5MDYzDQorICogcmVhZGVy IHZhbHVlIG9sZCA2NDk4DQorICogcmVhZGVyIHZhbHVlIG5ldyAyNTY1DQorICogcG1hcHN0YWxs cyAxMTQ5DQorICogbWlzbWF0Y2hlcyAxDQorICogY29tcGxldGlvbiByZWFzb24gTUlTTUFUQ0gN CisgKiBleGl0IDENCisgKg0KKyAqIERlYnVnZ2luZzoNCisgKg0KKyAqIFRoZSBmaXh0dXJlIGNh biBiZSBkaXJlY3RlZCB0byBjYXB0dXJlIHJ1bnRpbWUgZGVidWdnaW5nIGFib3V0IHRoZSB0aW1p bmcgYW5kDQorICogYWN0aW9ucyBsZWFkaW5nIHVwIHRvIHRoZSBtaXNtYXRjaC4gIFRvIHVzZSB0 aGlzLCBhIGNvbW1hbmQgbGlrZSB0aGlzIHdpbGwNCisgKiBpbnRlcmxlYXZlIGJvdGggdXNlcnNw YWNlIGFuZCBrZXJuZWwgZGVidWdnaW5nIGluZm86DQorICoNCisgKiBFeGFtcGxlIGNvbW1hbmQg dG8gZ2VuZXJhdGUgZGVidWcgdGltaW5nIGRhdGEgaW4gYSBmaWxlIG5hbWVkICdmcl9zb3J0ZWQu dHh0Jw0KKyAqIC4vZm9ya2luZ19zdGFsZSAtdiA+IGZyLnR4dDsgc3lzY3RsIC1uIGtlcm4uZnN0 Zl9kZWJ1Z19vdXRwdXQgPj4gZnIudHh0ICYmIGNhdCBmci50eHQgfCBzb3J0ID4gZnJfc29ydGVk LnR4dA0KKyAqDQorICogT3V0cHV0IGFib3ZlIHRoZSBmb2xsb3dpbmcgbGluZSBpcyBmcm9tIGEg cHJldmlvdXMgaXRlcmF0aW9uIGFuZCBzaG91bGQgYmUgaWdub3JlZDoNCisgKiBUU0M6ICAgIDQw MjU2MDY1MDc1MTc1IENQVTowMCBUSUQ6MTAwMTg3IEZvcmtlciAgICAgQ09ERTpmb3JraW5nX3N0 YWxlLmM6MDQ4MSBTVEFURToweDAwMDAwMDAwMDAwMDAwMDcgTVNHOlRlc3QgaG9vayBhY3RpdmUu Li4NCisgKg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxwdGhyZWFkLmg+DQorI2luY2x1ZGUgPHB0aHJl YWRfbnAuaD4NCisjaW5jbHVkZSA8dW5pc3RkLmg+DQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNp bmNsdWRlIDxzdHJpbmcuaD4NCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3RkaW50 Lmg+DQorI2luY2x1ZGUgPGVycm5vLmg+DQorI2luY2x1ZGUgPGZjbnRsLmg+DQorI2luY2x1ZGUg PHNpZ25hbC5oPg0KKw0KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4NCisjaW5jbHVkZSA8c3lzL2Nw dXNldC5oPg0KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCisjaW5jbHVkZSA8c3lzL3dhaXQuaD4N CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4NCisjaW5j bHVkZSA8c3lzL21tYW4uaD4NCisNCisjaW5jbHVkZSA8bWFjaGluZS9hdG9taWMuaD4NCisjaW5j bHVkZSA8bWFjaGluZS9zdGRhcmcuaD4NCisNCisjaW5jbHVkZSAiZm9ya2luZ19zdGFsZS5oIg0K Kw0KKyNkZWZpbmUgdmFsdWVfb2xkIDANCisjZGVmaW5lIHZhbHVlX25ldyAxDQorDQorI2RlZmlu ZSBvcHRfaXRlcmF0aW9uc19kZWZhdWx0IDEwMDAwMGx1DQorDQorc3RhdGljIGludCBmb3JrX2Z1 bmMoKTsNCitzdGF0aWMgdm9pZCAqIG1haW5fZnVuYyh2b2lkICopOw0KK3N0YXRpYyB2b2lkICog ZmF1bHRlcl9mdW5jKHZvaWQgKik7DQorc3RhdGljIHZvaWQgKiB3cml0ZXJfZnVuYyh2b2lkICop Ow0KK3N0YXRpYyB2b2lkICogcmVhZGVyX2Z1bmModm9pZCAqKTsNCisNCisvLyBBIHN0cnVjdHVy ZSBob3VzZWQgb24gdGhlIG1lbW9yeSBwYWdlIHdlIHdpbGwgYmUgdGVzdGluZw0KK3N0cnVjdCB0 ZXN0X2RhdGENCit7DQorICAgIHVpbnQ2NF90IHZhbHVlOw0KKyAgICB1aW50NjRfdCBzb21ldGhp bmdfZWxzZTsNCit9Ow0KKw0KKy8vIFRoZSBtaXNjZWxsYW5lb3VzIHN0dWZmIG5lY2Vzc2FyeSB0 byBwZXJmb3JtIHRoZSB0ZXN0aW5nDQorc3RydWN0IHRlc3RfbWFjaGluZXJ5DQorew0KKyAgICBw dGhyZWFkX211dGV4YXR0cl90IG1hdHRyOw0KKyAgICBwdGhyZWFkX211dGV4X3QgbXV0ZXg7DQor ICAgIHB0aHJlYWRfYXR0cl90IHRhdHRyOw0KKyAgICBpbnQgbWFpbl90aWQ7DQorICAgIHB0aHJl YWRfdCBmYXVsdGVyOw0KKyAgICBpbnQgZmF1bHRlcl90aWQ7DQorICAgIHVpbnQ2NF90IGZhdWx0 ZXJfaXRlcnM7DQorICAgIHB0aHJlYWRfdCB3cml0ZXI7DQorICAgIGludCB3cml0ZXJfdGlkOw0K KyAgICB1aW50NjRfdCB3cml0ZXJfaXRlcnM7DQorICAgIHB0aHJlYWRfdCByZWFkZXI7DQorICAg IGludCByZWFkZXJfdGlkOw0KKyAgICB1aW50NjRfdCByZWFkZXJfaXRlcnM7DQorICAgIGludCBm b3JrX3RpZDsNCisgICAgdWludDY0X3QgdHNjX2ZyZXE7DQorICAgIHVpbnQ2NF90IGZvcmtzOw0K KyAgICB1aW50NjRfdCBwbWFwc3RhbGxzOw0KKyAgICB1aW50NjRfdCBvbGRfZGF0YTsNCisgICAg dWludDY0X3QgbmV3X2RhdGE7DQorICAgIHVpbnQ2NF90IG1pc21hdGNoZXM7DQorICAgIHVpbnQ2 NF90IGRlYnVnX3ZhbHVlOw0KKyAgICBsb25nIG9wdF9pdGVyYXRpb25zOw0KKyAgICBpbnQgb3B0 X2Vhcmx5X2Vycm9yX2V4aXQ7DQorICAgIGludCBvcHRfd2lyZWQ7DQorICAgIHN0cnVjdCB0ZXN0 X2RhdGEgKiB0ZXN0X2RhdGE7DQorICAgIHZvbGF0aWxlIHVpbnQ2NF90ICogc3RhdGVfY29udHJv bDsNCisgICAgdWludDY0X3Qgc3RhdGVfY29udHJvbF9waHlzOw0KKyAgICBzdHJ1Y3QgZnN0Zl9k ZWJ1Z19kYXRhIGRlYnVnX2VudHJpZXNbRlNURl9ERUJVR19OVU1CRVJfRU5UUklFU107DQorICAg IHVfaW50IGRlYnVnX3Bvc2l0aW9uOw0KK30gKiB0ZXN0Ow0KKw0KK3N0YXRpYyBfX3RocmVhZCBp bnQgbGNsX3RpZCA9IDA7DQorDQorLy8gSW5pdGlhbGl6ZSBhbnkgJ3Rlc3RfbWFjaGluZXJ5JyB2 YWx1ZXMNCitzdGF0aWMgdm9pZCB0ZXN0X21hY2hpbmVyeV9pbml0KHZvaWQpDQorew0KKyAgICBt ZW1zZXQodGVzdCwgMHgwLCBzaXplb2Yoc3RydWN0IHRlc3RfbWFjaGluZXJ5KSk7DQorICAgIHRl c3QtPm9wdF9pdGVyYXRpb25zID0gb3B0X2l0ZXJhdGlvbnNfZGVmYXVsdDsNCisgICAgdGVzdC0+ b3B0X2Vhcmx5X2Vycm9yX2V4aXQgPSAxOw0KK30NCisNCisvLyBEZXNjcmliZSBhIHRpZCB0byBt YWtlIGRlYnVnIG91dHB1dCBtb3JlIHJlYWRhYmxlDQorc3RhdGljIGNvbnN0IGNoYXIgKiB0ZXN0 X2FjdG9yX2Rlc2NyKGludCB0aWQpDQorew0KKyAgICBjaGFyICogZGVzYyA9ICI8dW5rbm93bj4i Ow0KKyAgICBpZiAodGlkID09IHRlc3QtPm1haW5fdGlkKQ0KKyAgICB7DQorICAgICAgICBkZXNj ID0gIkZvcmtlciI7DQorICAgIH0NCisgICAgZWxzZSBpZiAodGlkID09IHRlc3QtPmZhdWx0ZXJf dGlkKQ0KKyAgICB7DQorICAgICAgICBkZXNjID0gIkZhdWx0ZXIiOw0KKyAgICB9DQorICAgIGVs c2UgaWYgKHRpZCA9PSB0ZXN0LT53cml0ZXJfdGlkKQ0KKyAgICB7DQorICAgICAgICBkZXNjID0g IldyaXRlciI7DQorICAgIH0NCisgICAgZWxzZSBpZiAodGlkID09IHRlc3QtPnJlYWRlcl90aWQp DQorICAgIHsNCisgICAgICAgIGRlc2MgPSAiUmVhZGVyIjsNCisgICAgfQ0KKyAgICBlbHNlIGlm ICh0aWQgPT0gdGVzdC0+Zm9ya190aWQpDQorICAgIHsNCisgICAgICAgIGRlc2MgPSAiRm9ya2Vl IjsNCisgICAgfQ0KKyAgICByZXR1cm4gKGRlc2MpOw0KK30NCisNCisvLyBSZXRyaWV2ZSB0aGUg dGlkIGZvciB0aGUgY3VycmVudCB0aHJlYWQNCitzdGF0aWMgaW50IGdldF9jdXJyZW50X3RpZCh2 b2lkKQ0KK3sNCisgICAgaWYgKGxjbF90aWQgPT0gMCkNCisgICAgew0KKyAgICAgICAgbGNsX3Rp ZCA9IHB0aHJlYWRfZ2V0dGhyZWFkaWRfbnAoKTsNCisgICAgfQ0KKyAgICByZXR1cm4gKGxjbF90 aWQpOw0KK30NCisNCisvLyBCZXN0IGVmZm9ydCBzZXQgb2YgdGhlIG5hbWUgb2YgdGhlIGN1cnJl bnQgdGhyZWFkDQorc3RhdGljIHZvaWQgc2V0X2N1cnJlbnRfdGhyZWFkX25hbWUodm9pZCkNCit7 DQorICAgIHB0aHJlYWRfc2V0X25hbWVfbnAocHRocmVhZF9zZWxmKCksIHRlc3RfYWN0b3JfZGVz Y3IoZ2V0X2N1cnJlbnRfdGlkKCkpKTsNCit9DQorDQorLy8gR2V0IHRoZSBsb2NhdGlvbiBvZiBh IDY0LWJpdCByZWdpb24gc3RhdGUvY29udHJvbCByZWdpb24gc2hhcmVkIGJ5IHVzZXJzcGFjZSBh bmQgdGhlIGtlcm5lbA0KK3ZvbGF0aWxlIHVpbnQ2NF90ICogZnN0Zl9zdGF0ZV9jb250cm9sKHZv aWQpDQorew0KKyAgICByZXR1cm4gKHRlc3QtPnN0YXRlX2NvbnRyb2wpOw0KK30NCisNCisvLyBH ZXQgdGhlIHRzYyBmcmVxdWVuY3kNCit1aW50NjRfdCBmc3RmX3RzY19mcmVxdWVuY3lfc2Vjb25k cyh2b2lkKQ0KK3sNCisgICAgcmV0dXJuICh0ZXN0LT50c2NfZnJlcSk7DQorfQ0KKw0KKy8vIEZh c3QgZm9ybWF0dGVkIGRlYnVnDQordm9pZCBmc3RmX2RlYnVnX2Zhc3QoY29uc3QgY2hhciAqIGZp bGUsIGludCBsaW5lLCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBzdGF0ZSkNCit7DQorICAgIGlm ICh0ZXN0LT5kZWJ1Z192YWx1ZSkNCisgICAgew0KKyAgICAgICAgaW50IHBvcyA9IEZTVEZfREVC VUdfUE9TSVRJT05fSU5ERVgoYXRvbWljX2ZldGNoYWRkX2ludCgmdGVzdC0+ZGVidWdfcG9zaXRp b24sIDEpKTsNCisNCisgICAgICAgIHRlc3QtPmRlYnVnX2VudHJpZXNbcG9zXS50c2MgPSBmc3Rm X3RzY19hbmRfYXV4KCZ0ZXN0LT5kZWJ1Z19lbnRyaWVzW3Bvc10uYXV4KTsNCisgICAgICAgIHRl c3QtPmRlYnVnX2VudHJpZXNbcG9zXS50aWQgPSBnZXRfY3VycmVudF90aWQoKTsNCisgICAgICAg IHRlc3QtPmRlYnVnX2VudHJpZXNbcG9zXS5maWxlID0gZmlsZTsNCisgICAgICAgIHRlc3QtPmRl YnVnX2VudHJpZXNbcG9zXS5saW5lID0gbGluZTsNCisgICAgICAgIHRlc3QtPmRlYnVnX2VudHJp ZXNbcG9zXS5zdGF0ZSA9IHN0YXRlOw0KKyAgICAgICAgdGVzdC0+ZGVidWdfZW50cmllc1twb3Nd LmRiZ190eXBlID0gdHlwZTsNCisgICAgfQ0KK30NCisNCisvLyBNaXNjIHRleHQgZGVidWcNCit2 b2lkIGZzdGZfZGVidWdfbWlzYyhjb25zdCBjaGFyICogZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNo YXIgKmZtdCwgLi4uKQ0KK3sNCisgICAgaWYgKHRlc3QtPmRlYnVnX3ZhbHVlKQ0KKyAgICB7DQor ICAgICAgICBjaGFyIGJ1ZmZlclsxMDI0XTsNCisgICAgICAgIHZhX2xpc3QgYXA7DQorDQorICAg ICAgICB2YV9zdGFydChhcCwgZm10KTsNCisNCisgICAgICAgIHZzbnByaW50ZihidWZmZXIsIHNp emVvZihidWZmZXIpLCBmbXQsIGFwKTsNCisNCisgICAgICAgIHZhX2VuZChhcCk7DQorDQorICAg ICAgICB1aW50NjRfdCB0c3QgPSBmc3RmX3N0YXRlX3ZhbHVlKCk7DQorDQorICAgICAgICBpbnQg cG9zID0gRlNURl9ERUJVR19QT1NJVElPTl9JTkRFWChhdG9taWNfZmV0Y2hhZGRfaW50KCZ0ZXN0 LT5kZWJ1Z19wb3NpdGlvbiwgMSkpOw0KKw0KKyAgICAgICAgdWludDMyX3QgYXV4Ow0KKyAgICAg ICAgdWludDY0X3QgdHNjID0gZnN0Zl90c2NfYW5kX2F1eCgmYXV4KTsNCisgICAgICAgIHRlc3Qt PmRlYnVnX2VudHJpZXNbcG9zXS5kYmdfdHlwZSA9IEZTVEZfREVCVUdfVFlQRV9NSVNDRUxMQU5F T1VTOw0KKw0KKyAgICAgICAgdmFfc3RhcnQoYXAsIGZtdCk7DQorDQorICAgICAgICBpbnQgdGlk ID0gZ2V0X2N1cnJlbnRfdGlkKCk7DQorDQorICAgICAgICBzbnByaW50Zih0ZXN0LT5kZWJ1Z19l bnRyaWVzW3Bvc10ubWlzYywNCisgICAgICAgICAgICAgICAgIHNpemVvZih0ZXN0LT5kZWJ1Z19l bnRyaWVzW3Bvc10ubWlzYyksDQorICAgICAgICAgICAgICAgICBGU1RGX0RFQlVHX0ZPUk1BVF9T VFIsDQorICAgICAgICAgICAgICAgICB0c2MsDQorICAgICAgICAgICAgICAgICBhdXgsDQorICAg ICAgICAgICAgICAgICB0aWQsDQorICAgICAgICAgICAgICAgICB0ZXN0X2FjdG9yX2Rlc2NyKHRp ZCksDQorICAgICAgICAgICAgICAgICBmaWxlLA0KKyAgICAgICAgICAgICAgICAgbGluZSwNCisg ICAgICAgICAgICAgICAgIHRzdCwNCisgICAgICAgICAgICAgICAgIGJ1ZmZlcik7DQorDQorICAg ICAgICB2YV9lbmQoYXApOw0KKyAgICB9DQorfQ0KKw0KKy8vIEdlbmVyYWwgZGVidWdnaW5nL3Rl eHQgb3V0cHV0DQorc3RhdGljIHZvaWQgZGVidWdfb3V0cHV0KGNvbnN0IGNoYXIgKmZtdCwgLi4u KQ0KK3sNCisgICAgdmFfbGlzdCBhcDsNCisNCisgICAgdmFfc3RhcnQoYXAsIGZtdCk7DQorDQor ICAgIHZwcmludGYoZm10LCBhcCk7DQorDQorICAgIHZhX2VuZChhcCk7DQorfQ0KKw0KKy8vIEdl bmVyYWwgc3RhdHMvZXJyb3Igb3V0cHV0DQorc3RhdGljIHZvaWQgY29uc29sZV9vdXRwdXQoY29u c3QgY2hhciAqZm10LCAuLi4pDQorew0KKyAgICB2YV9saXN0IGFwOw0KKw0KKyAgICB2YV9zdGFy dChhcCwgZm10KTsNCisNCisgICAgdmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTsNCisNCisgICAg dmFfZW5kKGFwKTsNCit9DQorDQorLy8gVHJhdmVyc2UgdGhlIGNhcHR1cmVkIGRlYnVnIGVudHJp ZXMgYW5kIG91dHB1dCB0aGVtDQorc3RhdGljIHZvaWQgZHVtcF9kZWJ1Zyh2b2lkKQ0KK3sNCisg ICAgaW50IG51bTsNCisgICAgZm9yIChudW0gPSAwOyBudW0gPCBGU1RGX0RFQlVHX05VTUJFUl9F TlRSSUVTOyBudW0rKykNCisgICAgew0KKyAgICAgICAgaWYgKHRlc3QtPmRlYnVnX2VudHJpZXNb bnVtXS5kYmdfdHlwZSAhPSBGU1RGX0RFQlVHX1RZUEVfVU5VU0VEKQ0KKyAgICAgICAgew0KKyAg ICAgICAgICAgIGlmICh0ZXN0LT5kZWJ1Z19lbnRyaWVzW251bV0uZGJnX3R5cGUgPT0gRlNURl9E RUJVR19UWVBFX01JU0NFTExBTkVPVVMpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAg ICBkZWJ1Z19vdXRwdXQoIiVzIiwgdGVzdC0+ZGVidWdfZW50cmllc1tudW1dLm1pc2MpOw0KKyAg ICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgew0KKyAgICAgICAg ICAgICAgICBjaGFyIG1zZ1sxMDI0XTsNCisgICAgICAgICAgICAgICAgY2hhciB0ZW1wWzEwMjRd Ow0KKyAgICAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsxMDI0XTsNCisNCisgICAgICAgICAgICAg ICAgZnN0Zl9kZWJ1Z19maWxsX3N0YXRlX2Rlc2NyKHRlc3QtPmRlYnVnX2VudHJpZXNbbnVtXS5z dGF0ZSwgdGVtcCwgc2l6ZW9mKGJ1ZmZlcikpOw0KKw0KKyAgICAgICAgICAgICAgICBzbnByaW50 Zihtc2csDQorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihtc2cpLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAiU3RhdGU6ICVzICgweCUwMTZseCkgWyVzXVxuIiwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgdGVtcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC0+ ZGVidWdfZW50cmllc1tudW1dLnN0YXRlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBmc3Rm X2RlYnVnX3R5cGVfZGVzY3IodGVzdC0+ZGVidWdfZW50cmllc1tudW1dLmRiZ190eXBlKSk7DQor DQorICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZW9mKGJ1ZmZlciksDQorICAgICAgICAgICAgICAgICAgICAgICAgIEZTVEZfREVC VUdfRk9STUFUX1NUUiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC0+ZGVidWdfZW50 cmllc1tudW1dLnRzYywNCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC0+ZGVidWdfZW50 cmllc1tudW1dLmF1eCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC0+ZGVidWdfZW50 cmllc1tudW1dLnRpZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9hY3Rvcl9kZXNj cih0ZXN0LT5kZWJ1Z19lbnRyaWVzW251bV0udGlkKSwNCisgICAgICAgICAgICAgICAgICAgICAg ICAgZnN0Zl9zdHJpcF9maWxlX3BhdGgoX19GSUxFX18pLA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICB0ZXN0LT5kZWJ1Z19lbnRyaWVzW251bV0ubGluZSwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgdGVzdC0+ZGVidWdfZW50cmllc1tudW1dLnN0YXRlLA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICBtc2cpOw0KKw0KKyAgICAgICAgICAgICAgICBkZWJ1Z19vdXRwdXQoIiVzIiwgYnVm ZmVyKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCit9DQorDQorLy8gR2V0 IHRoZSBmZCBpbnQgZm9yIC9kZXYvbWVtDQorc3RhdGljIGludCBkZXZfbWVtX2ZkKHZvaWQpDQor ew0KKyAgICBzdGF0aWMgaW50IG1lbWZkID0gLTE7DQorICAgIGlmIChtZW1mZCA8IDApDQorICAg IHsNCisgICAgICAgIG1lbWZkID0gb3BlbigiL2Rldi9tZW0iLCBPX1JEV1J8T19DTE9FWEVDKTsN CisgICAgfQ0KKyAgICByZXR1cm4gKG1lbWZkKTsNCit9DQorDQorLy8gUHJlcGFyZSBzb21lIHN0 dWZmIGZvciB0aHJlYWRpbmcNCitzdGF0aWMgaW50IHRocmVhZF9wcmVwKHZvaWQpDQorew0KKyAg ICBpZiAoKHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQoJnRlc3QtPm1hdHRyKSAhPSAwKSB8fA0KKyAg ICAgICAgKHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJnRlc3QtPm1hdHRyLCBQVEhSRUFEX01V VEVYX0FEQVBUSVZFX05QKSAhPSAwKSkNCisNCisgICAgew0KKyAgICAgICAgY29uc29sZV9vdXRw dXQoIkVSUk9SOiB0ZXN0IHNldHRpbmcgdXAgbXV0ZXggYXR0cmlidXRlIGZvciBBZGFwdGl2ZU5Q XG4iKTsNCisgICAgICAgIHJldHVybiAoMSk7DQorICAgIH0NCisNCisgICAgaWYgKHB0aHJlYWRf bXV0ZXhfaW5pdCgmdGVzdC0+bXV0ZXgsICZ0ZXN0LT5tYXR0cikgIT0gMCkNCisgICAgew0KKyAg ICAgICAgY29uc29sZV9vdXRwdXQoIkVSUk9SOiB0ZXN0IGluaXRpYWxpemluZyBtdXRleFxuIik7 DQorICAgICAgICByZXR1cm4gKDEpOw0KKyAgICB9DQorDQorICAgIGlmIChwdGhyZWFkX2F0dHJf aW5pdCgmdGVzdC0+dGF0dHIpICE9IDApDQorICAgIHsNCisgICAgICAgIGNvbnNvbGVfb3V0cHV0 KCJFUlJPUjogdGVzdCBpbml0aWFsaXppbmcgcHRocmVhZCBhdHRyXG4iKTsNCisgICAgICAgIHJl dHVybiAoMSk7DQorICAgIH0NCisNCisgICAgaWYgKHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0 ZSgmdGVzdC0+dGF0dHIsIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFKSAhPSAwKQ0KKyAgICB7DQor ICAgICAgICBjb25zb2xlX291dHB1dCgiRVJST1I6IHRlc3Qgc2V0dGluZyBwdGhyZWFkIGF0dHIg am9pbmFibGVcbiIpOw0KKyAgICAgICAgcmV0dXJuICgxKTsNCisgICAgfQ0KKw0KKyAgICByZXR1 cm4gKDApOw0KK30NCisNCisvLyBDcmVhdGUgYW5kIHN0YXJ0IHRlc3QgdGhlcmFkcyBhbmQgc2V0 dXAgYWZmaW5pdGllcw0KK3N0YXRpYyBpbnQgc3RhcnRfdGhyZWFkcyh2b2lkKQ0KK3sNCisgICAg aW50IHJjOw0KKyAgICBjcHVzZXRfdCB0aGVjcHVzZXQ7DQorDQorICAgIENQVV9aRVJPKCZ0aGVj cHVzZXQpOw0KKyAgICBDUFVfU0VUKDAsICZ0aGVjcHVzZXQpOw0KKyAgICByYyA9IHB0aHJlYWRf c2V0YWZmaW5pdHlfbnAocHRocmVhZF9zZWxmKCksIHNpemVvZihjcHVzZXRfdCksICZ0aGVjcHVz ZXQpOw0KKyAgICBpZiAocmMgIT0gMCkNCisgICAgew0KKyAgICAgICAgY29uc29sZV9vdXRwdXQo IkVSUk9SOiBwdGhyZWFkX3NldGFmZmluaXR5X25wKCkgbWFpblxuIik7DQorICAgICAgICByZXR1 cm4gKDEpOw0KKyAgICB9DQorDQorICAgIHJjID0gcHRocmVhZF9jcmVhdGUoJnRlc3QtPmZhdWx0 ZXIsICZ0ZXN0LT50YXR0ciwgZmF1bHRlcl9mdW5jLCBOVUxMKTsNCisgICAgaWYgKHJjICE9IDAp DQorICAgIHsNCisgICAgICAgIGNvbnNvbGVfb3V0cHV0KCJFUlJPUjogcHRocmVhZF9jcmVhdGUo KSBmYXVsdGVyXG4iKTsNCisgICAgICAgIHJldHVybiAoMSk7DQorICAgIH0NCisgICAgQ1BVX1pF Uk8oJnRoZWNwdXNldCk7DQorICAgIENQVV9TRVQoMSwgJnRoZWNwdXNldCk7DQorICAgIHJjID0g cHRocmVhZF9zZXRhZmZpbml0eV9ucCh0ZXN0LT5mYXVsdGVyLCBzaXplb2YoY3B1c2V0X3QpLCAm dGhlY3B1c2V0KTsNCisgICAgaWYgKHJjICE9IDApDQorICAgIHsNCisgICAgICAgIGNvbnNvbGVf b3V0cHV0KCJFUlJPUjogcHRocmVhZF9zZXRhZmZpbml0eV9ucCgpIGZhdWx0ZXJcbiIpOw0KKyAg ICAgICAgcmV0dXJuICgxKTsNCisgICAgfQ0KKw0KKyAgICByYyA9IHB0aHJlYWRfY3JlYXRlKCZ0 ZXN0LT53cml0ZXIsICZ0ZXN0LT50YXR0ciwgd3JpdGVyX2Z1bmMsIE5VTEwpOw0KKyAgICBpZiAo cmMgIT0gMCkNCisgICAgew0KKyAgICAgICAgY29uc29sZV9vdXRwdXQoIkVSUk9SOiBwdGhyZWFk X2NyZWF0ZSgpIHdyaXRlclxuIik7DQorICAgICAgICByZXR1cm4gKDEpOw0KKyAgICB9DQorICAg IENQVV9aRVJPKCZ0aGVjcHVzZXQpOw0KKyAgICBDUFVfU0VUKDIsICZ0aGVjcHVzZXQpOw0KKyAg ICByYyA9IHB0aHJlYWRfc2V0YWZmaW5pdHlfbnAodGVzdC0+d3JpdGVyLCBzaXplb2YoY3B1c2V0 X3QpLCAmdGhlY3B1c2V0KTsNCisgICAgaWYgKHJjICE9IDApDQorICAgIHsNCisgICAgICAgIGNv bnNvbGVfb3V0cHV0KCJFUlJPUjogcHRocmVhZF9zZXRhZmZpbml0eV9ucCgpIHdyaXRlclxuIik7 DQorICAgICAgICByZXR1cm4gKDEpOw0KKyAgICB9DQorDQorICAgIHJjID0gcHRocmVhZF9jcmVh dGUoJnRlc3QtPnJlYWRlciwgJnRlc3QtPnRhdHRyLCByZWFkZXJfZnVuYywgTlVMTCk7DQorICAg IGlmIChyYyAhPSAwKQ0KKyAgICB7DQorICAgICAgICBjb25zb2xlX291dHB1dCgiRVJST1I6IHB0 aHJlYWRfY3JlYXRlKCkgcmVhZGVyXG4iKTsNCisgICAgICAgIHJldHVybiAoMSk7DQorICAgIH0N CisgICAgQ1BVX1pFUk8oJnRoZWNwdXNldCk7DQorICAgIENQVV9TRVQoMywgJnRoZWNwdXNldCk7 DQorICAgIHJjID0gcHRocmVhZF9zZXRhZmZpbml0eV9ucCh0ZXN0LT5yZWFkZXIsIHNpemVvZihj cHVzZXRfdCksICZ0aGVjcHVzZXQpOw0KKyAgICBpZiAocmMgIT0gMCkNCisgICAgew0KKyAgICAg ICAgY29uc29sZV9vdXRwdXQoIkVSUk9SOiBwdGhyZWFkX3NldGFmZmluaXR5X25wKCkgcmVhZGVy XG4iKTsNCisgICAgICAgIHJldHVybiAoMSk7DQorICAgIH0NCisNCisgICAgcmV0dXJuICgwKTsN Cit9DQorDQorLy8gbWFpbiBwcm9jZXNzaW5nIGZ1bmN0aW9uOyBkbyBhcyBtYW55ICdmb3JrJyBp dGVyYXRpb25zIGFzIHJlcXVlc3RlZCBvciB1bnRpbCBkb25lDQorc3RhdGljIHZvaWQgKiBtYWlu X2Z1bmModm9pZCAqbSkNCit7DQorICAgIGludCBmOw0KKyAgICBsb25nIGk7DQorDQorICAgIGZv ciAoaSA9IDA7IGkgPCB0ZXN0LT5vcHRfaXRlcmF0aW9uczsgaSsrKQ0KKyAgICB7DQorICAgICAg ICBtZW1zZXQodGVzdC0+ZGVidWdfZW50cmllcywgMHgwMCwgc2l6ZW9mKHRlc3QtPmRlYnVnX2Vu dHJpZXMpKTsNCisNCisgICAgICAgIEZTVEZfREVCVUdfTUlTQygiVGVzdCBob29rIGFjdGl2ZS4g dHNjX2ZyZXE6JWx1LCBjb250cm9sIHZhZGRyOiVwLCBjb250cm9sIHBhZGRyOjB4JWx4LCB0ZXN0 X2RhdGEgdmFkZHI6MHglbHgsIHRlc3RfZGF0YSB2YWx1ZSBsb2NhdGlvbjolcFxuIiwNCisgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0LT50c2NfZnJlcSwNCisgICAgICAgICAgICAgICAgICAg ICAgICB0ZXN0LT5zdGF0ZV9jb250cm9sLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Qt PnN0YXRlX2NvbnRyb2xfcGh5cywNCisgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopRlNU Rl9DT05TVEFOVF9WQUREUiwNCisgICAgICAgICAgICAgICAgICAgICAgICAmdGVzdC0+dGVzdF9k YXRhLT52YWx1ZSk7DQorDQorICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJnRlc3QtPm11dGV4 KTsNCisNCisgICAgICAgICAgICB0ZXN0LT50ZXN0X2RhdGEtPnZhbHVlID0gdmFsdWVfb2xkOw0K Kw0KKyAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJnRlc3QtPm11dGV4KTsNCisNCisgICAg ICAgIGlmICgoZiA9IGZvcmtfZnVuYygpKSA8IDApDQorICAgICAgICB7DQorICAgICAgICAgICAg Y29uc29sZV9vdXRwdXQoIkVycm9yIGZvcmtpbmc6ICVkLCBFcnJubzogJWRcbiIsIGYsIGVycm5v KTsNCisgICAgICAgICAgICBnb3RvIERvbmU7DQorICAgICAgICB9DQorDQorICAgICAgICB0ZXN0 LT5mb3JrcysrOw0KKw0KKyAgICAgICAgaWYgKGZzdGZfc3RhdGVfaW1wZWRpbWVudF9hbGwoRlNU Rl9TVEFURV9CSVRTX0lETEUpICYgRlNURl9TVEFURV9CSVRTX0ZJTklTSEVEKQ0KKyAgICAgICAg ew0KKyAgICAgICAgICAgIGdvdG8gRG9uZTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBm c3RmX3N0YXRlX3RyYW5zaXRpb24oMCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZTVEZf U1RBVEVfQklUX0NPTVBMRVRFKTsNCisNCitEb25lOg0KKw0KKyAgICByZXR1cm4gKDApOw0KK30N CisNCisvLyBmb3JrIHByb2Nlc3NpbmcgZnVuY3Rpb247IGNvb3JkaW5hdGUgdGhlIHRlc3Rpbmcg Zm9yIHRoZSByYWNlDQorc3RhdGljIGludCBmb3JrX2Z1bmModm9pZCkNCit7DQorICAgIHBpZF90 IHBpZCwgc2F2ZWRwaWQ7DQorICAgIGludCBwc3RhdDsNCisNCisgICAgc3dpdGNoKHBpZCA9IGZv cmsoKSkNCisgICAgew0KKyAgICAgICAgY2FzZSAtMToNCisgICAgICAgICAgICAvLyBlcnJvcg0K KyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgY2FzZSAwOg0KKyAgICAgICAgew0KKyAgICAg ICAgICAgIC8vIGNoaWxkDQorICAgICAgICAgICAgdGVzdC0+Zm9ya190aWQgPSBnZXRfY3VycmVu dF90aWQoKTsNCisgICAgICAgICAgICBzZXRfY3VycmVudF90aHJlYWRfbmFtZSgpOw0KKw0KKyAg ICAgICAgICAgIC8vIHRlbGwgdGhyZWFkcyB3ZSBoYXZlIGZvcmtlZCBhbmQgdGhleSBjYW4gZ2V0 IHJlYWR5DQorICAgICAgICAgICAgZnN0Zl9zdGF0ZV90cmFuc2l0aW9uKChGU1RGX1NUQVRFX0JJ VFNfUFJJTUVEIHwgRlNURl9TVEFURV9CSVRfVEVTVF9BQ1RJVkUpLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBGU1RGX1NUQVRFX0JJVF9SRUFEWV9UT19QUklNRSk7DQorDQor ICAgICAgICAgICAgLy8gd2FpdCBmb3IgdGhyZWFkcyB0byBiZSBpbiB0aGUgcmlnaHQgc3RhdGUN CisgICAgICAgICAgICBpZiAoZnN0Zl9zdGF0ZV9pbXBlZGltZW50X2FsbChGU1RGX1NUQVRFX0JJ VFNfUFJJTUVEKSAmIEZTVEZfU1RBVEVfQklUU19GSU5JU0hFRCkNCisgICAgICAgICAgICB7DQor ICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAg ICAgLy8gdGVsbCB0aGUgZmF1bHRlciBoZSBjYW4gZ28NCisgICAgICAgICAgICBmc3RmX3N0YXRl X3RyYW5zaXRpb24oRlNURl9TVEFURV9CSVRfUkVBRFlfVE9fUFJJTUUsDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEZTVEZfU1RBVEVfQklUX1RFU1RfQUNUSVZFKTsNCisNCisg ICAgICAgICAgICAvLyB3YWl0IGZvciB0aGUgZmF1bHRlciB0byBiZSBkb25lLCBhdCB0aGF0IHBv aW50IHRoZSBpdGVyYXRpb24gaXMgb3Zlcg0KKyAgICAgICAgICAgIGlmIChmc3RmX3N0YXRlX2lt cGVkaW1lbnRfYWxsKEZTVEZfU1RBVEVfQklUX0ZBVUxURVJfRE9ORSkgJiBGU1RGX1NUQVRFX0JJ VFNfRklOSVNIRUQpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBnb3RvIERvbmU7 DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIC8vIGNsZWFudXANCisgICAgICAgICAg ICB1aW50NjRfdCBzdCA9IGZzdGZfc3RhdGVfaW1wZWRpbWVudF9hbGwoRlNURl9TVEFURV9CSVRT X0lETEUpOw0KKyAgICAgICAgICAgIGlmIChzdCAmIEZTVEZfU1RBVEVfQklUX0tFUk5FTF9QTUFQ TU9EKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgdGVzdC0+cG1hcHN0YWxscysr Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoc3QgJiBGU1RGX1NUQVRFX0JJVFNf RklOSVNIRUQpDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBnb3RvIERvbmU7DQor ICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGZzdGZfc3RhdGVfdHJhbnNpdGlvbihGU1RGX1NU QVRFX0JJVFNfUkVTRVQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOw0K Kw0KKyAgICAgICAgICAgIERvbmU6DQorICAgICAgICAgICAgICAgIF9leGl0KDEyNyk7DQorICAg ICAgICB9DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgew0KKyAgICAgICAgICAgIC8vIHBh cmVudA0KKyAgICAgICAgICAgIHNhdmVkcGlkID0gcGlkOw0KKyAgICAgICAgICAgIGRvDQorICAg ICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBwaWQgPSB3YWl0NChzYXZlZHBpZCwgJnBzdGF0 LCAwLCAoc3RydWN0IHJ1c2FnZSAqKTApOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB3 aGlsZSAocGlkID09IC0xICYmIGVycm5vID09IEVJTlRSKTsNCisgICAgICAgICAgICBicmVhazsN CisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICByZXR1cm4ocGlkID09IC0xID8gLTEgOiBwc3Rh dCk7DQorfQ0KKw0KKy8vIGZhdWx0ZXIgdGhyZWFkIHByb2Nlc3NpbmcgZnVuY3Rpb24NCitzdGF0 aWMgdm9pZCAqIGZhdWx0ZXJfZnVuYyh2b2lkICp0KQ0KK3sNCisgICAgdGVzdC0+ZmF1bHRlcl90 aWQgPSBnZXRfY3VycmVudF90aWQoKTsNCisgICAgc2V0X2N1cnJlbnRfdGhyZWFkX25hbWUoKTsN CisNCisgICAgZm9yICg7OykNCisgICAgew0KKyAgICAgICAgLy8gaW5kaWNhdGUgd2UgaGF2ZSBy ZWFjaGVkIHRoZSAnaWRsZScgc3RhdGUNCisgICAgICAgIGZzdGZfc3RhdGVfdHJhbnNpdGlvbigw LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZTVEZfU1RBVEVfQklUX0ZBVUxURVJf SURMRSk7DQorDQorICAgICAgICAvLyB3YWl0IHRvIGJlIHRvbGQgd2UgY2FuIHByZXBhcmUNCisg ICAgICAgIGlmIChmc3RmX3N0YXRlX2ltcGVkaW1lbnRfYW55KEZTVEZfU1RBVEVfQklUX1JFQURZ X1RPX1BSSU1FKSAmIEZTVEZfU1RBVEVfQklUU19GSU5JU0hFRCkNCisgICAgICAgIHsNCisgICAg ICAgICAgICBnb3RvIERvbmU7DQorICAgICAgICB9DQorDQorICAgICAgICBwdGhyZWFkX211dGV4 X2xvY2soJnRlc3QtPm11dGV4KTsNCisgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ0ZXN0 LT5tdXRleCk7DQorDQorICAgICAgICB0ZXN0LT5mYXVsdGVyX2l0ZXJzKys7DQorICAgICAgICB0 ZXN0LT5mYXVsdGVyX2l0ZXJzLS07DQorDQorICAgICAgICAvLyBpbmRpY2F0ZSB3ZSBhcmUgcHJl cGFyZWQNCisgICAgICAgIGZzdGZfc3RhdGVfdHJhbnNpdGlvbihGU1RGX1NUQVRFX0JJVF9GQVVM VEVSX0lETEUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlNURl9TVEFURV9CSVRf RkFVTFRFUl9QUklNRUQpOw0KKw0KKyAgICAgICAgLy8gd2FpdCB0byBiZSB0b2xkIHdlIGNhbiB3 cml0ZS1mYXVsdA0KKyAgICAgICAgaWYgKGZzdGZfc3RhdGVfaW1wZWRpbWVudF9hbGwoRlNURl9T VEFURV9CSVRfVEVTVF9BQ1RJVkUpICYgRlNURl9TVEFURV9CSVRTX0ZJTklTSEVEKQ0KKyAgICAg ICAgew0KKyAgICAgICAgICAgIGdvdG8gRG9uZTsNCisgICAgICAgIH0NCisNCisgICAgICAgIC8v IGFjdHVhbGx5IGRvIHRoZSB3cml0ZSBmYXVsdA0KKyAgICAgICAgRlNURl9ERUJVR19NSVNDKCJX cml0aW5nIHRvIGFkZHJlc3M6ICVwXG4iLCAmdGVzdC0+dGVzdF9kYXRhLT5zb21ldGhpbmdfZWxz ZSk7DQorICAgICAgICB0ZXN0LT50ZXN0X2RhdGEtPnNvbWV0aGluZ19lbHNlID0gMTsNCisNCisg ICAgICAgIGZzdGZfc3RhdGVfdHJhbnNpdGlvbigwLA0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEZTVEZfU1RBVEVfQklUX0ZBVUxURVJfRE9ORSk7DQorDQorICAgICAgICB0ZXN0LT5m YXVsdGVyX2l0ZXJzKys7DQorICAgIH0NCisNCitEb25lOg0KKw0KKyAgICByZXR1cm4gKDApOw0K K30NCisNCisvLyB3cml0ZXIgdGhyZWFkIHByb2Nlc3NpbmcgZnVuY3Rpb24NCitzdGF0aWMgdm9p ZCAqIHdyaXRlcl9mdW5jKHZvaWQgKnQpDQorew0KKyAgICB0ZXN0LT53cml0ZXJfdGlkID0gZ2V0 X2N1cnJlbnRfdGlkKCk7DQorICAgIHNldF9jdXJyZW50X3RocmVhZF9uYW1lKCk7DQorDQorICAg IGZvciAoOzspDQorICAgIHsNCisgICAgICAgIC8vIGluZGljYXRlIHdlIGhhdmUgcmVhY2hlZCB0 aGUgJ2lkbGUnIHN0YXRlDQorICAgICAgICBmc3RmX3N0YXRlX3RyYW5zaXRpb24oMCwNCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGU1RGX1NUQVRFX0JJVF9XUklURVJfSURMRSk7DQor DQorICAgICAgICAvLyB3YWl0IHRvIGJlIHRvbGQgd2UgY2FuIHByZXBhcmUNCisgICAgICAgIGlm IChmc3RmX3N0YXRlX2ltcGVkaW1lbnRfYW55KEZTVEZfU1RBVEVfQklUX1JFQURZX1RPX1BSSU1F KSAmIEZTVEZfU1RBVEVfQklUU19GSU5JU0hFRCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBn b3RvIERvbmU7DQorICAgICAgICB9DQorDQorICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJnRl c3QtPm11dGV4KTsNCisgICAgICAgICAgICAodm9pZCl0ZXN0LT50ZXN0X2RhdGEtPnZhbHVlOw0K KyAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJnRlc3QtPm11dGV4KTsNCisNCisgICAgICAg IHRlc3QtPndyaXRlcl9pdGVycysrOw0KKyAgICAgICAgdGVzdC0+d3JpdGVyX2l0ZXJzLS07DQor DQorICAgICAgICAvLyBpbmRpY2F0ZSB3ZSBhcmUgcHJlcGFyZWQNCisgICAgICAgIGZzdGZfc3Rh dGVfdHJhbnNpdGlvbihGU1RGX1NUQVRFX0JJVF9XUklURVJfSURMRSwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGU1RGX1NUQVRFX0JJVF9XUklURVJfUFJJTUVEKTsNCisNCisgICAg ICAgIC8vIHdhaXQgZm9yIGVpdGhlciB0aGUga2VybmVsIGNvZGUgdG8gaGF2ZSBtb2RpZmllZCB0 aGUgcG1hcCBvciB0aGUgZmF1bHQgdG8gYmUgb3Zlcg0KKyAgICAgICAgaWYgKGZzdGZfc3RhdGVf aW1wZWRpbWVudF9hbnkoRlNURl9TVEFURV9CSVRfS0VSTkVMX1BNQVBNT0QgfCBGU1RGX1NUQVRF X0JJVF9GQVVMVEVSX0RPTkUpICYgRlNURl9TVEFURV9CSVRTX0ZJTklTSEVEKQ0KKyAgICAgICAg ew0KKyAgICAgICAgICAgIGdvdG8gRG9uZTsNCisgICAgICAgIH0NCisNCisgICAgICAgIC8vIGNo YW5nZSB0aGUgdmFsdWUgYXQgdGhlIHRlc3QgbG9jYXRpb24gdG8gc29tZXRoaW5nIGVsc2UNCisg ICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmdGVzdC0+bXV0ZXgpOw0KKw0KKyAgICAgICAgICAg ICh2b2lkKXRlc3QtPnRlc3RfZGF0YS0+dmFsdWU7DQorDQorICAgICAgICAgICAgRlNURl9ERUJV R19NSVNDKCJXcml0aW5nIHRvIGFkZHJlc3M6ICVwXG4iLCAmdGVzdC0+dGVzdF9kYXRhLT52YWx1 ZSk7DQorDQorICAgICAgICAgICAgdGVzdC0+dGVzdF9kYXRhLT52YWx1ZSA9IHZhbHVlX25ldzsN CisNCisgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ0ZXN0LT5tdXRleCk7DQorDQorICAg ICAgICB0ZXN0LT53cml0ZXJfaXRlcnMrKzsNCisgICAgfQ0KKw0KK0RvbmU6DQorDQorICAgIHJl dHVybiAoMCk7DQorfQ0KKw0KKy8vIHJlYWRlciB0aHJlYWQgcHJvY2Vzc2luZyBmdW5jdGlvbg0K K3N0YXRpYyB2b2lkICogcmVhZGVyX2Z1bmModm9pZCAqdDMpDQorew0KKyAgICB0ZXN0LT5yZWFk ZXJfdGlkID0gZ2V0X2N1cnJlbnRfdGlkKCk7DQorICAgIHNldF9jdXJyZW50X3RocmVhZF9uYW1l KCk7DQorDQorICAgIGZvciAoOzspDQorICAgIHsNCisgICAgICAgIC8vIGluZGljYXRlIHdlIGhh dmUgcmVhY2hlZCB0aGUgJ2lkbGUnIHN0YXRlDQorICAgICAgICBmc3RmX3N0YXRlX3RyYW5zaXRp b24oMCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1RGX1NUQVRFX0JJVF9SRUFE RVJfSURMRSk7DQorDQorICAgICAgICAvLyB3YWl0IHRvIGJlIHRvbGQgd2UgY2FuIHByZXBhcmUN CisgICAgICAgIGlmIChmc3RmX3N0YXRlX2ltcGVkaW1lbnRfYW55KEZTVEZfU1RBVEVfQklUX1JF QURZX1RPX1BSSU1FKSAmIEZTVEZfU1RBVEVfQklUU19GSU5JU0hFRCkNCisgICAgICAgIHsNCisg ICAgICAgICAgICBnb3RvIERvbmU7DQorICAgICAgICB9DQorDQorICAgICAgICBwdGhyZWFkX211 dGV4X2xvY2soJnRlc3QtPm11dGV4KTsNCisgICAgICAgICAgICAodm9pZCl0ZXN0LT50ZXN0X2Rh dGEtPnZhbHVlOw0KKyAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJnRlc3QtPm11dGV4KTsN CisNCisgICAgICAgIHRlc3QtPnJlYWRlcl9pdGVycysrOw0KKyAgICAgICAgdGVzdC0+cmVhZGVy X2l0ZXJzLS07DQorDQorICAgICAgICAvLyBpbmRpY2F0ZSB3ZSBhcmUgcHJlcGFyZWQNCisgICAg ICAgIGZzdGZfc3RhdGVfdHJhbnNpdGlvbihGU1RGX1NUQVRFX0JJVF9SRUFERVJfSURMRSwNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1RGX1NUQVRFX0JJVF9SRUFERVJfUFJJTUVE KTsNCisNCisgICAgICAgIC8vIHdhaXQgZm9yIGVpdGhlciB0aGUga2VybmVsIGNvZGUgdG8gaGF2 ZSBtb2RpZmllZCB0aGUgcG1hcCBvciB0aGUgZmF1bHQgdG8gYmUgb3Zlcg0KKyAgICAgICAgaWYg KGZzdGZfc3RhdGVfaW1wZWRpbWVudF9hbnkoRlNURl9TVEFURV9CSVRfVEVTVF9BQ1RJVkUpICYg RlNURl9TVEFURV9CSVRTX0ZJTklTSEVEKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGdvdG8g RG9uZTsNCisgICAgICAgIH0NCisNCisgICAgICAgIHdoaWxlICghZnN0Zl9zdGF0ZV9jaGVja19h bnkoRlNURl9TVEFURV9CSVRfRkFVTFRFUl9ET05FIHwgRlNURl9TVEFURV9CSVRTX0ZJTklTSEVE KSkNCisgICAgICAgIHsNCisgICAgICAgICAgICAvLyByZWFkIHRoZSB2YWx1ZSBhdCB0aGUgdGVz dCBsb2NhdGlvbiB0d2ljZSBhbmQgY29tcGxhaW4gaWYgaXQgaXMgZGlmZmVyZW50DQorICAgICAg ICAgICAgaWYgKHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmdGVzdC0+bXV0ZXgpID09IDApDQorICAg ICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgaW5pdGlhbFZhbHVlID0g dGVzdC0+dGVzdF9kYXRhLT52YWx1ZTsNCisNCisgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90 IG5leHRWYWx1ZSA9IHRlc3QtPnRlc3RfZGF0YS0+dmFsdWU7DQorDQorICAgICAgICAgICAgICAg ICAgICBpZiAoaW5pdGlhbFZhbHVlICE9IG5leHRWYWx1ZSkNCisgICAgICAgICAgICAgICAgICAg IHsNCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0LT5taXNtYXRjaGVzKys7DQorDQorICAg ICAgICAgICAgICAgICAgICAgICAgRlNURl9ERUJVR19NSVNDKCJNaXNtYXRjaCBkZXRlY3RlZCEg T2xkPSVsdSwgTmV3PSVsdVxuIiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5pdGlhbFZhbHVlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuZXh0VmFsdWUpOw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXN0LT5v cHRfZWFybHlfZXJyb3JfZXhpdCkNCisgICAgICAgICAgICAgICAgICAgICAgICB7DQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVfb3V0cHV0KCJFUlJPUjogTWlzbWF0Y2g6IE9s ZD0lbHUsIE5ldz0lbHVcbiIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluaXRpYWxWYWx1ZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmV4dFZhbHVlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnN0Zl9z dGF0ZV90cmFuc2l0aW9uKDAsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBGU1RGX1NUQVRFX0JJVF9NSVNNQVRDSCk7DQorICAgICAgICAgICAgICAg ICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgICAgICAg ICAgaWYgKG5leHRWYWx1ZSA9PSB2YWx1ZV9vbGQpDQorICAgICAgICAgICAgICAgICAgICB7DQor ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC0+b2xkX2RhdGErKzsNCisgICAgICAgICAgICAg ICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5leHRWYWx1ZSA9PSB2YWx1 ZV9uZXcpDQorICAgICAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgICAgICAg dGVzdC0+bmV3X2RhdGErKzsNCisgICAgICAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAg ICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJnRlc3QtPm11dGV4KTsNCisNCisgICAgICAgICAg ICAgICAgdGVzdC0+cmVhZGVyX2l0ZXJzKys7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0K KyAgICB9DQorDQorRG9uZToNCisNCisgICAgcmV0dXJuICgwKTsNCit9DQorDQorLy8gc2h1dGRv d24vam9pbiB0aHJlYWRzIGZvciBjb21wbGV0aW9uDQorc3RhdGljIGludCBmaW5pc2hfdGhyZWFk cyh2b2lkKQ0KK3sNCisgICAgaW50IGVyciA9IDA7DQorICAgIGlmIChwdGhyZWFkX2pvaW4odGVz dC0+ZmF1bHRlciwgIE5VTEwpKQ0KKyAgICB7DQorICAgICAgICBjb25zb2xlX291dHB1dCgiRVJS T1I6IHB0aHJlYWRfam9pbigpIGZhdWx0ZXJcbiIpOw0KKyAgICAgICAgZXJyID0gMTsNCisgICAg fQ0KKyAgICBpZiAocHRocmVhZF9qb2luKHRlc3QtPndyaXRlciwgIE5VTEwpKQ0KKyAgICB7DQor ICAgICAgICBjb25zb2xlX291dHB1dCgiRVJST1I6IHB0aHJlYWRfam9pbigpIHdyaXRlclxuIik7 DQorICAgICAgICBlcnIgPSAxOw0KKyAgICB9DQorICAgIGlmIChwdGhyZWFkX2pvaW4odGVzdC0+ cmVhZGVyLCAgTlVMTCkpDQorICAgIHsNCisgICAgICAgIGNvbnNvbGVfb3V0cHV0KCJFUlJPUjog cHRocmVhZF9qb2luKCkgcmVhZGVyXG4iKTsNCisgICAgICAgIGVyciA9IDE7DQorICAgIH0NCisg ICAgcmV0dXJuIChlcnIpOw0KK30NCisNCisvLyBDbGVhbnVwIHN0dWZmIGZvciB0aHJlYWRpbmcN CitzdGF0aWMgaW50IHRocmVhZF9jbGVhbnVwKHZvaWQpDQorew0KKyAgICBwdGhyZWFkX211dGV4 X2Rlc3Ryb3koJnRlc3QtPm11dGV4KTsNCisgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJnRlc3Qt PnRhdHRyKTsNCisgICAgcmV0dXJuICgwKTsNCit9DQorDQorLy8gZG8gdGhlIGFjdHVhbCB0ZXN0 aW5nDQorc3RhdGljIGludCBydW5fdGVzdCh2b2lkKQ0KK3sNCisgICAgaW50IGVyciA9IDA7DQor DQorICAgIGlmICh0aHJlYWRfcHJlcCgpKQ0KKyAgICB7DQorICAgICAgICBlcnIgPSAxOw0KKyAg ICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgaWYgKHN0YXJ0X3RocmVhZHMoKSkNCisg ICAgICAgIHsNCisgICAgICAgICAgICBlcnIgPSAxOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAg bWFpbl9mdW5jKDApOw0KKw0KKyAgICAgICAgaWYgKGZpbmlzaF90aHJlYWRzKCkpDQorICAgICAg ICB7DQorICAgICAgICAgICAgZXJyID0gMTsNCisgICAgICAgIH0NCisNCisgICAgICAgIHRocmVh ZF9jbGVhbnVwKCk7DQorICAgIH0NCisgICAgcmV0dXJuIChlcnIpOw0KK30NCisNCisvLyBvdXRw dXQgYmFzaWMgaGVscCBpbmZvDQorc3RhdGljIHZvaWQgdXNhZ2UoY29uc3QgY2hhciAqIHByb2du YW1lKQ0KK3sNCisgICAgY29uc29sZV9vdXRwdXQoIlVzYWdlOiAlcyBbb3B0c11cbiINCisgICAg ICAgICAgICAgICAgICAgIk9QVElPTlM6XG4iDQorICAgICAgICAgICAgICAgICAgICIgICAgLW4g TiAuLi4uLi4uLiBzZXQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMsIGRlZmF1bHQ9JWx1XG4iDQorICAg ICAgICAgICAgICAgICAgICIgICAgLXYgICAuLi4uLi4uLiBvdXRwdXQgZGVidWdnaW5nIGRhdGEg YXQgdGhlIGVuZCBvZiB0aGUgcnVuXG4iDQorICAgICAgICAgICAgICAgICAgICIgICAgLWQgICAu Li4uLi4uLiByZXF1ZXN0IGhlYXZpZXIgZGVidWdnaW5nIGluIHRoZSBrZXJuZWxcbiINCisgICAg ICAgICAgICAgICAgICAgIiAgICAtayAgIC4uLi4uLi4uIGtlZXAgcnVubmluZzsgZG9uJ3QgZXhp dCBlYXJseSBvbiBtaXNtYXRjaFxuIg0KKyAgICAgICAgICAgICAgICAgICAiICAgIC13ICAgLi4u Li4uLi4gd2lyZSB0aGUgbWVtb3J5IHdpdGggbWxvY2thbGxcbiINCisgICAgICAgICAgICAgICAg ICAgIiAgICAtaCAuLi4uLi4uLi4uIHNob3cgdGhpcyBoZWxwXG4iLA0KKyAgICAgICAgICAgICAg ICAgICBwcm9nbmFtZSwNCisgICAgICAgICAgICAgICAgICAgb3B0X2l0ZXJhdGlvbnNfZGVmYXVs dCk7DQorfQ0KKw0KKy8vIGEgY2FuY2VsIGhhbmRsZXIgc28gYSBjdHJsLWMnZWQgbG9uZyBydW5u aW5nIHRlc3QgY2FuIHN0aWxsIG91dHB1dCB1c2VmdWwgaW5mbw0KK3N0YXRpYyB2b2lkIGNhbmNl bF9mdW5jdGlvbihpbnQgc2lnbm8pDQorew0KKyAgICBmc3RmX3N0YXRlX3RyYW5zaXRpb24oMCwN CisgICAgICAgICAgICAgICAgICAgICAgICAgIEZTVEZfU1RBVEVfQklUX0NBTkNFTExFRCk7DQor fQ0KKw0KKy8vIG1haW4NCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KK3sNCisg ICAgdWludDY0X3QgdG0xLCB0bTIsIHRkaWZmOw0KKyAgICBpbnQgb3B0LCBlcnI7DQorICAgIGNo YXIgKiBwRW5kOw0KKw0KKyAgICAvLyBzZXR1cCBvdXIgY2FuY2VsIGhhbmRsZXINCisgICAgaWYg KHNpZ25hbChTSUdJTlQsIGNhbmNlbF9mdW5jdGlvbikgPT0gU0lHX0VSUikNCisgICAgew0KKyAg ICAgICAgY29uc29sZV9vdXRwdXQoIkVSUk9SOiBzZXR0aW5nIHNpZ25hbCBoYW5kbGVyIGNhbmNl bFxuIik7DQorICAgICAgICBleGl0KDEpOw0KKyAgICB9DQorDQorICAgIC8vIGFsbG9jYXRlIG1l bW9yeSBmb3IgdGhlIHRlc3QgbWFjaGluZXJ5OyB3ZSBkb24ndCBjYXJlIHdoZXJlIGl0IGlzIGJ1 dCB3YW50IGl0IHNoYXJlZCAobm9uLUNPVykNCisgICAgdm9pZCAqbWFjaGluZXJ5X21lbSA9IG1t YXAoTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCB0 ZXN0X21hY2hpbmVyeSksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVB RCB8IFBST1RfV1JJVEUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BUF9TSEFS RUQgfCBNQVBfQU5PTiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOw0KKyAgICBpZiAobWFjaGluZXJ5X21lbSA9 PSBOVUxMKQ0KKyAgICB7DQorICAgICAgICBjb25zb2xlX291dHB1dCgiRVJST1I6IGFsbG9jYXRp bmcgbWVtb3J5IGZvciB0ZXN0IG1hY2hpbmVyeVxuIik7DQorICAgICAgICBleGl0KDEpOw0KKyAg ICB9DQorDQorICAgIHRlc3QgPSBtYWNoaW5lcnlfbWVtOw0KKyAgICB0ZXN0X21hY2hpbmVyeV9p bml0KCk7DQorDQorICAgIHRlc3QtPm1haW5fdGlkID0gZ2V0X2N1cnJlbnRfdGlkKCk7DQorICAg IHNldF9jdXJyZW50X3RocmVhZF9uYW1lKCk7DQorDQorICAgIHdoaWxlICgob3B0ID0gZ2V0b3B0 KGFyZ2MsIGFyZ3YsICJodmRrZnduOiIpKSAhPSAtMSkNCisgICAgew0KKyAgICAgICAgc3dpdGNo IChvcHQpDQorICAgICAgICB7DQorICAgICAgICAgICAgY2FzZSAnbic6DQorICAgICAgICAgICAg ICAgIHRlc3QtPm9wdF9pdGVyYXRpb25zID0gc3RydG9sKG9wdGFyZywgJnBFbmQsIDEwKTsNCisg ICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgY2FzZSAndic6DQorICAgICAgICAg ICAgICAgIHRlc3QtPmRlYnVnX3ZhbHVlIHw9IEZTVEZfU1lTQ1RMX0RFQlVHX09OOw0KKyAgICAg ICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlICdkJzoNCisgICAgICAgICAgICAg ICAgdGVzdC0+ZGVidWdfdmFsdWUgfD0gRlNURl9TWVNDVExfREVCVUdfSEVBVlk7DQorICAgICAg ICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGNhc2UgJ2snOg0KKyAgICAgICAgICAgICAg ICB0ZXN0LT5vcHRfZWFybHlfZXJyb3JfZXhpdCA9IDA7DQorICAgICAgICAgICAgICAgIGJyZWFr Ow0KKyAgICAgICAgICAgIGNhc2UgJ3cnOg0KKyAgICAgICAgICAgICAgICB0ZXN0LT5vcHRfd2ly ZWQgPSAxOw0KKyAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICBjYXNlICdoJzoN CisgICAgICAgICAgICAgICAgdXNhZ2UoYXJndlswXSk7DQorICAgICAgICAgICAgICAgIGV4aXQo MCk7DQorICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgIGRlZmF1bHQgOiB1c2Fn ZShhcmd2WzBdKTsNCisgICAgICAgICAgICAgICAgZXhpdCgtMSk7DQorICAgICAgICAgICAgICAg IGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIGNvbnNvbGVfb3V0cHV0KCJSVU5U SU1FIFBBUkFNUzoiDQorICAgICAgICAgICAgICAgICAgICJuaXRlcnMgJS0yMGx1XG4iLA0KKyAg ICAgICAgICAgICAgICAgICB0ZXN0LT5vcHRfaXRlcmF0aW9ucyk7DQorDQorICAgIHNpemVfdCBz aXplOw0KKyAgICBwaWRfdCBwaWQ7DQorICAgIHVpbnQ2NF90IG9sZDsNCisgICAgdWludDY0X3Qg bmV3Ow0KKw0KKyAgICAvLyBvYnRhaW4gdGhlIHRzYyBmcmVxdWVuY3kgZnJvbSB0aGUgc3lzY3Rs DQorICAgIHNpemUgPSBzaXplb2Yob2xkKTsNCisgICAgZXJyID0gc3lzY3RsYnluYW1lKCJtYWNo ZGVwLnRzY19mcmVxIiwgJm9sZCwgJnNpemUsIE5VTEwsIDApOw0KKyAgICBpZiAoZXJyKQ0KKyAg ICB7DQorICAgICAgICBjb25zb2xlX291dHB1dCgiRVJST1I6IGNhbGxpbmcgbWFjaGRlcC50c2Nf ZnJlcVxuIik7DQorICAgICAgICBleGl0KDEpOw0KKyAgICB9DQorICAgIHRlc3QtPnRzY19mcmVx ID0gb2xkOw0KKw0KKyAgICAvLyBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSB0ZXN0IHJlZ2lvbjsg IHB1dCBpdCBhdCBhIGZpeGVkIGFkZHJlc3MgYW5kIENPVy4NCisgICAgdm9pZCAqdGVzdF9kYXRh X21lbSA9IG1tYXAoKHZvaWQqKUZTVEZfQ09OU1RBTlRfVkFERFIsDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgdGVzdF9kYXRhKSwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTUFQX0ZJWEVEIHwgTUFQX0FOT04gfCBNQVBfUFJJVkFURSwNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDApOw0KKyAgICBpZiAodGVzdF9kYXRhX21lbSA9PSBOVUxMKQ0KKyAgICB7DQor ICAgICAgICBjb25zb2xlX291dHB1dCgiRVJST1I6IG51bGwgdGVzdCBzdHJ1Y3QgYWRkclxuIik7 DQorICAgICAgICBleGl0KDEpOw0KKyAgICB9DQorICAgIHRlc3QtPnRlc3RfZGF0YSA9IHRlc3Rf ZGF0YV9tZW07DQorICAgIHRlc3QtPnRlc3RfZGF0YS0+dmFsdWUgPSAweGZmZmZmZmZmZmZmZmZm ZmZ1bGw7DQorDQorICAgIC8vIGNhbGwgaW50byB0aGUgc3lzY3RsIHRvIHByZXBhcmUgdGhlIHRl c3Q7ICBwYXNzIHRoZSBkZXNpcmVkIGRlYnVnZ2luZyBvcHRpb25zDQorICAgIHNpemUgPSBzaXpl b2Yob2xkKTsNCisgICAgcGlkID0gZ2V0cGlkKCk7DQorICAgIG5ldyA9ICgodWludDY0X3QpcGlk KTsNCisgICAgaWYgKHRlc3QtPmRlYnVnX3ZhbHVlKQ0KKyAgICB7DQorICAgICAgICBuZXcgPSB0 ZXN0LT5kZWJ1Z192YWx1ZSB8ICgodWludDY0X3QpcGlkKTsNCisgICAgfQ0KKyAgICBlcnIgPSBz eXNjdGxieW5hbWUoImtlcm4uZnN0Zl9zZXR1cCIsICZvbGQsICZzaXplLCAmbmV3LCBzaXplb2Yo bmV3KSk7DQorICAgIGlmIChlcnIpDQorICAgIHsNCisgICAgICAgIGNvbnNvbGVfb3V0cHV0KCJF UlJPUjogY2FsbGluZyBrZXJuZWwgdGVzdCBob29rLCBuZXc6IDB4JWx4XG4iLCBuZXcpOw0KKyAg ICAgICAgZXhpdCgxKTsNCisgICAgfQ0KKw0KKyAgICAvLyBjYWxsIGludG8gYSBzeXNjdGwgdG8g Z2V0IHRoZSBwaHlzaWNhbCBhZGRyZXNzIHRoZSBrZXJuZWwgc2V0dXANCisgICAgc2l6ZSA9IHNp emVvZihvbGQpOw0KKyAgICBlcnIgPSBzeXNjdGxieW5hbWUoImtlcm4uZnN0Zl9jb250cm9sX3Bh ZGRyIiwgJm9sZCwgJnNpemUsIE5VTEwsIDApOw0KKyAgICBpZiAoZXJyKQ0KKyAgICB7DQorICAg ICAgICBjb25zb2xlX291dHB1dCgiRVJST1I6IGNhbGxpbmcga2VybmVsIHRlc3QgYWRkclxuIik7 DQorICAgICAgICBleGl0KDEpOw0KKyAgICB9DQorICAgIHRlc3QtPnN0YXRlX2NvbnRyb2xfcGh5 cyA9IG9sZDsNCisNCisgICAgLy8gbWFwIHRoZSBwaHlzaWNhbCBjb250cm9sIGFkZHJlc3MgaW50 byBvdXIgYWRkcmVzcyBzcGFjZSBzbyB3ZSBjYW4gY29vcmRpbmF0ZQ0KKyAgICB2b2lkICpjb250 cm9sX21lbSA9IG1tYXAoTlVMTCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0Vf U0laRSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJ VEUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfU0hBUkVELA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGV2X21lbV9mZCgpLA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG9mZl90KXRlc3QtPnN0YXRlX2NvbnRyb2xfcGh5cyk7DQorICAgIGlmIChjb250 cm9sX21lbSA9PSBOVUxMKQ0KKyAgICB7DQorICAgICAgICBjb25zb2xlX291dHB1dCgiRVJST1I6 IG1tYXBpbmcgY29udHJvbCByZWdpb25cbiIpOw0KKyAgICAgICAgZXhpdCgxKTsNCisgICAgfQ0K KyAgICB0ZXN0LT5zdGF0ZV9jb250cm9sID0gY29udHJvbF9tZW07DQorDQorICAgIC8vIGFsbG93 IGEgcnVudGltZSB0b2dnbGUgdG8gJ2xvY2snIHRoZSB0ZXN0IHJlZ2lvbiB0byBkZW1vbnN0cmF0 ZSBpdCAiZml4ZXMgdGhlIGdsaXRjaCINCisgICAgaWYgKHRlc3QtPm9wdF93aXJlZCkNCisgICAg ew0KKyAgICAgICAgZXJyID0gbWxvY2thbGwoTUNMX0NVUlJFTlQpOw0KKyAgICAgICAgaWYgKGVy cikNCisgICAgICAgIHsNCisgICAgICAgICAgICBjb25zb2xlX291dHB1dCgiRVJST1I6IGNhbGxp bmcgbWxvY2thbGxcbiIpOw0KKyAgICAgICAgICAgIGV4aXQoMSk7DQorICAgICAgICB9DQorICAg IH0NCisNCisgICAgLy8gcnVuIHRoZSB0ZXN0DQorICAgIHVpbnQzMl90IGF1eDsNCisgICAgdG0x ID0gZnN0Zl90c2NfYW5kX2F1eCgmYXV4KTsNCisgICAgZXJyID0gcnVuX3Rlc3QoKTsNCisgICAg dG0yID0gZnN0Zl90c2NfYW5kX2F1eCgmYXV4KTsNCisgICAgdGRpZmYgPSAodG0yIC0gdG0xKTsN CisNCisgICAgLy8gZXJyb3IgaWYgd2UgZm91bmQgYW55IGRpc2NyZXBhbmNpZXMNCisgICAgcHRo cmVhZF9tdXRleF9sb2NrKCZ0ZXN0LT5tdXRleCk7DQorICAgICAgICB1aW50NjRfdCBtaXNtYXRj aGV6ID0gdGVzdC0+bWlzbWF0Y2hlczsNCisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJnRlc3Qt Pm11dGV4KTsNCisgICAgaWYgKG1pc21hdGNoZXopDQorICAgIHsNCisgICAgICAgIGVyciA9IDE7 DQorICAgIH0NCisNCisgICAgLy8gb3V0cHV0IHRoZSBkZWJ1Z2dpbmcgZnJvbSB0aGUgdGVzdA0K KyAgICBkdW1wX2RlYnVnKCk7DQorDQorICAgIC8vIG91dHB1dCBzdGF0dXMgaW5mb3JtYXRpb24g YWJvdXQgdGhlIHRlc3QgcnVuDQorICAgIGNoYXIgc3RhdHVzWzEwMjRdOw0KKyAgICBmc3RmX2Rl YnVnX2ZpbGxfc3RhdGVfZGVzY3IoKGZzdGZfc3RhdGVfdmFsdWUoKSAmIEZTVEZfU1RBVEVfQklU U19GSU5JU0hFRCksIHN0YXR1cywgc2l6ZW9mKHN0YXR1cykpOw0KKyAgICBjb25zdCBjaGFyICog cmVhc29uID0gc3RhdHVzOw0KKyAgICB3aGlsZSAoKnJlYXNvbiA9PSAnICcpIHsgcmVhc29uKys7 IH0NCisgICAgY29uc29sZV9vdXRwdXQoInJ1bnRpbWUgKHNlYykgJWxmXG4iDQorICAgICAgICAg ICAgICAgICAgICJmb3JrcyAlbHVcbiINCisgICAgICAgICAgICAgICAgICAgImZhdWx0ZXIgaXRl cnMgJWx1XG4iDQorICAgICAgICAgICAgICAgICAgICJ3cml0ZXIgaXRlcnMgJWx1XG4iDQorICAg ICAgICAgICAgICAgICAgICJyZWFkZXIgaXRlcnMgJWx1XG4iDQorICAgICAgICAgICAgICAgICAg ICJyZWFkZXIgdmFsdWUgb2xkICVsdVxuIg0KKyAgICAgICAgICAgICAgICAgICAicmVhZGVyIHZh bHVlIG5ldyAlbHVcbiINCisgICAgICAgICAgICAgICAgICAgInBtYXBzdGFsbHMgJWx1XG4iDQor ICAgICAgICAgICAgICAgICAgICJtaXNtYXRjaGVzICVsdVxuIg0KKyAgICAgICAgICAgICAgICAg ICAiY29tcGxldGlvbiByZWFzb24gJXNcbiINCisgICAgICAgICAgICAgICAgICAgImV4aXQgJWRc biIsDQorICAgICAgICAgICAgICAgICAgICgoMS4wKnRkaWZmKS9mc3RmX3RzY19mcmVxdWVuY3lf c2Vjb25kcygpKSwNCisgICAgICAgICAgICAgICAgICAgdGVzdC0+Zm9ya3MsDQorICAgICAgICAg ICAgICAgICAgIHRlc3QtPmZhdWx0ZXJfaXRlcnMsDQorICAgICAgICAgICAgICAgICAgIHRlc3Qt PndyaXRlcl9pdGVycywNCisgICAgICAgICAgICAgICAgICAgdGVzdC0+cmVhZGVyX2l0ZXJzLA0K KyAgICAgICAgICAgICAgICAgICB0ZXN0LT5vbGRfZGF0YSwNCisgICAgICAgICAgICAgICAgICAg dGVzdC0+bmV3X2RhdGEsDQorICAgICAgICAgICAgICAgICAgIHRlc3QtPnBtYXBzdGFsbHMsDQor ICAgICAgICAgICAgICAgICAgIG1pc21hdGNoZXosDQorICAgICAgICAgICAgICAgICAgIHJlYXNv biwNCisgICAgICAgICAgICAgICAgICAgZXJyKTsNCisNCisgICAgaWYgKG1hY2hpbmVyeV9tZW0p DQorICAgIHsNCisgICAgICAgIG11bm1hcChtYWNoaW5lcnlfbWVtLCBzaXplb2Yoc3RydWN0IHRl c3RfbWFjaGluZXJ5KSk7DQorICAgIH0NCisgICAgaWYgKGNvbnRyb2xfbWVtKQ0KKyAgICB7DQor ICAgICAgICBtdW5tYXAoY29udHJvbF9tZW0sIFBBR0VfU0laRSk7DQorICAgIH0NCisgICAgaWYg KHRlc3RfZGF0YV9tZW0pDQorICAgIHsNCisgICAgICAgIG11bm1hcCh0ZXN0X2RhdGFfbWVtLCBz aXplb2Yoc3RydWN0IHRlc3RfZGF0YSkpOw0KKyAgICB9DQorDQorICAgIHJldHVybiAoZXJyKTsN Cit9DQpkaWZmIC0tZ2l0IGEvc3lzL3ZtL2Zvcmtpbmdfc3RhbGUuaCBiL3N5cy92bS9mb3JraW5n X3N0YWxlLmgNCm5ldyBmaWxlIG1vZGUgMTAwNzU1DQppbmRleCAwMDAwMDAwLi41Y2ZkZTgzDQot LS0gL2Rldi9udWxsDQorKysgYi9zeXMvdm0vZm9ya2luZ19zdGFsZS5oDQpAQCAtMCwwICsxLDI5 NiBAQA0KKy8qDQorICogRlNURg0KKyAqDQorICogZm9ya2luZyBzdGFsZSB0ZXN0IGZpeHR1cmUg aGVhZGVyDQorICoNCisgKiBDb21tb24gY29uc3RhbnRzIGZvciB1c2Vyc3BhY2Uva2VybmVsIGZv cmstY293LWJ1ZyByZXBybw0KKyAqLw0KKw0KKyNpZm5kZWYgX0ZPUktJTkdfU1RBTEVfXw0KKyNk ZWZpbmUgX0ZPUktJTkdfU1RBTEVfXw0KKw0KKyNpbmNsdWRlIDxtYWNoaW5lL2F0b21pYy5oPg0K Kw0KKy8vIEEgY29tbW9uIHZpcnR1YWwgYWRkcmVzcyB0byB0YXJnZXQNCisjZGVmaW5lIEZTVEZf Q09OU1RBTlRfT0ZGU0VUIDMxMzM3DQorI2RlZmluZSBGU1RGX0NPTlNUQU5UX1ZBRERSICgzMTMz NyAqIFBBR0VfU0laRSkNCisjZGVmaW5lIEZTVEZfQ09OU1RBTlRfVElNRU9VVF9TRUNPTkRTIDEN CisNCisvLyBWYXJpb3VzIGJpdHMgb2Ygc3RhdGUgaW5mb3JtYXRpb24gZWFzaWx5IGFjY2Vzc2Vk L3NoYXJlZCBpbiBhIHVpbnQ2NF90IHNpemUgdmFsdWUNCisjZGVmaW5lIEZTVEZfU1RBVEVfQklU X0NPTVBMRVRFICAgICAgICAgIDB4ODAwMDAwMDAwMDAwMDAwMGxsdSAgIC8vIE5hdHVyYWwgdGVy bWluYXRpb24gKGl0ZXJhdGlvbiBjb3VudCByZWFjaGVkKQ0KKyNkZWZpbmUgRlNURl9TVEFURV9C SVRfVElNRU9VVCAgICAgICAgICAgMHg0MDAwMDAwMDAwMDAwMDAwbGx1ICAgLy8gU3RhdGUgY2hh bmdlIHRpbWVvdXQgKHVuZXhwZWN0ZWQgdGVzdCBjb25kaXRpb24pDQorI2RlZmluZSBGU1RGX1NU QVRFX0JJVF9NSVNNQVRDSCAgICAgICAgICAweDIwMDAwMDAwMDAwMDAwMDBsbHUgICAvLyBNaXNt YXRjaCBkZXRlY3RlZCAocmVhbCBwcm9ibGVtIGZvdW5kKQ0KKyNkZWZpbmUgRlNURl9TVEFURV9C SVRfQ0FOQ0VMTEVEICAgICAgICAgMHgxMDAwMDAwMDAwMDAwMDAwbGx1ICAgLy8gRWFybHkgY2Fu Y2VsbGF0aW9uIHJlcXVlc3RlZCBieSB0aGUgdXNlcg0KKyNkZWZpbmUgRlNURl9TVEFURV9CSVRf RkFVTFRFUl9JRExFICAgICAgMHgwMDAwMDAwMDAwMDAwMDAxbGx1ICAgLy8gVGhlIGZhdWx0ZXIg dGhyZWFkIGF0IHRoZSBiZWdpbm5pbmcNCisjZGVmaW5lIEZTVEZfU1RBVEVfQklUX1dSSVRFUl9J RExFICAgICAgIDB4MDAwMDAwMDAwMDAwMDAwMmxsdSAgIC8vIFRoZSB3cml0ZXIgdGhyZWFkIGF0 IHRoZSBiZWdpbm5pbmcNCisjZGVmaW5lIEZTVEZfU1RBVEVfQklUX1JFQURFUl9JRExFICAgICAg IDB4MDAwMDAwMDAwMDAwMDAwNGxsdSAgIC8vIFRoZSByZWFkZXIgdGhyZWFkIGF0IHRoZSBiZWdp bm5pbmcNCisjZGVmaW5lIEZTVEZfU1RBVEVfQklUX1JFQURZX1RPX1BSSU1FICAgIDB4MDAwMDAw MDAwMDAwMDAwOGxsdSAgIC8vIEZvcmsgaXMgcmVhZHkgZm9yIHRocmVhZCB0byBwcmVwYXJlICh2 bV9tYXAgaW4gQ09XIHN0YXRlKQ0KKyNkZWZpbmUgRlNURl9TVEFURV9CSVRfRkFVTFRFUl9QUklN RUQgICAgMHgwMDAwMDAwMDAwMDAwMDEwbGx1ICAgLy8gVGhlIGZhdWx0ZXIgdGhyZWFkIGhhcyAi cHJpbWVkIiB2YXJpYWJsZXMgaXQgaW50ZW5kcyB0byB1c2UNCisjZGVmaW5lIEZTVEZfU1RBVEVf QklUX1dSSVRFUl9QUklNRUQgICAgIDB4MDAwMDAwMDAwMDAwMDAyMGxsdSAgIC8vIFRoZSB3cml0 ZXIgdGhyZWFkIGhhcyAicHJpbWVkIiB2YXJpYWJsZXMgaXQgaW50ZW5kcyB0byB1c2UNCisjZGVm aW5lIEZTVEZfU1RBVEVfQklUX1JFQURFUl9QUklNRUQgICAgIDB4MDAwMDAwMDAwMDAwMDA0MGxs dSAgIC8vIFRoZSByZWFkZXIgdGhyZWFkIGhhcyAicHJpbWVkIiB2YXJpYWJsZXMgaXQgaW50ZW5k cyB0byB1c2UNCisjZGVmaW5lIEZTVEZfU1RBVEVfQklUX1RFU1RfQUNUSVZFICAgICAgIDB4MDAw MDAwMDAwMDAwMDA4MGxsdSAgIC8vIFRoZSByYWNlIGlzIG9uDQorI2RlZmluZSBGU1RGX1NUQVRF X0JJVF9LRVJORUxfUE1BUE1PRCAgICAweDAwMDAwMDAwMDAwMDAxMDBsbHUgICAvLyBUaGUgcG1h cCBoYXMgYmVlbiB1cGRhdGVkIGluIHRoZSBrZXJuZWwNCisjZGVmaW5lIEZTVEZfU1RBVEVfQklU X0ZBVUxURVJfRE9ORSAgICAgIDB4MDAwMDAwMDAwMDAwMDIwMGxsdSAgIC8vIFRoZSBmYXVsdGVy IHRocmVhZCBoYXMgImNvbXBsZXRlZCIgaXRzIHVwZGF0ZQ0KKw0KKy8vIFZhcmlvdXMgY29tYmlu YXRpb25zIG9mIHRoZSBhYm92ZSBiaXRzDQorI2RlZmluZSBGU1RGX1NUQVRFX0JJVFNfQUxMICAg ICAgICAgICAgICAweGZmZmZmZmZmZmZmZmZmZmZsbHUNCisjZGVmaW5lIEZTVEZfU1RBVEVfQklU U19GSU5JU0hFRCAgICAgICAgIDB4ZjAwMDAwMDAwMDAwMDAwMGxsdQ0KKyNkZWZpbmUgRlNURl9T VEFURV9CSVRTX0lETEUgICAgICAgICAgICAgKEZTVEZfU1RBVEVfQklUX0ZBVUxURVJfSURMRSB8 IEZTVEZfU1RBVEVfQklUX1dSSVRFUl9JRExFIHwgRlNURl9TVEFURV9CSVRfUkVBREVSX0lETEUp DQorI2RlZmluZSBGU1RGX1NUQVRFX0JJVFNfUFJJTUVEICAgICAgICAgICAoRlNURl9TVEFURV9C SVRfRkFVTFRFUl9QUklNRUQgfCBGU1RGX1NUQVRFX0JJVF9XUklURVJfUFJJTUVEIHwgRlNURl9T VEFURV9CSVRfUkVBREVSX1BSSU1FRCkNCisjZGVmaW5lIEZTVEZfU1RBVEVfQklUU19ET05FICAg ICAgICAgICAgIChGU1RGX1NUQVRFX0JJVF9GQVVMVEVSX0RPTkUpDQorI2RlZmluZSBGU1RGX1NU QVRFX0JJVFNfUkVTRVQgICAgICAgICAgICAoRlNURl9TVEFURV9CSVRTX1BSSU1FRCB8IEZTVEZf U1RBVEVfQklUX0tFUk5FTF9QTUFQTU9EIHwgRlNURl9TVEFURV9CSVRTX0RPTkUgfCBGU1RGX1NU QVRFX0JJVF9URVNUX0FDVElWRSkNCisNCisvLyBTb21lIHByZS1kZXRlcm1pbmVkICJmYXN0ZXIi IGRlYnVnZ2luZyBtb2Rlcw0KKyNkZWZpbmUgRlNURl9ERUJVR19UWVBFX1VOVVNFRCAgICAgICAg ICAgICAgICAgMA0KKyNkZWZpbmUgRlNURl9ERUJVR19UWVBFX01JU0NFTExBTkVPVVMgICAgICAg ICAgMQ0KKyNkZWZpbmUgRlNURl9ERUJVR19UWVBFX1RSQU5TSVRJT05fSU5JVElBTCAgICAgMg0K KyNkZWZpbmUgRlNURl9ERUJVR19UWVBFX1RSQU5TSVRJT05fRklOQUwgICAgICAgMw0KKyNkZWZp bmUgRlNURl9ERUJVR19UWVBFX0lNUEVESU1FTlRfSU5JVElBTCAgICAgNA0KKyNkZWZpbmUgRlNU Rl9ERUJVR19UWVBFX0lNUEVESU1FTlRfRklOQUwgICAgICAgNQ0KKyNkZWZpbmUgRlNURl9ERUJV R19UWVBFX0NIRUNLX1NUQVRFICAgICAgICAgICAgNg0KKw0KKy8vIHN5c2N0bCB0ZXN0IGhvb2sg ZmxhZ3MNCisjZGVmaW5lIEZTVEZfU1lTQ1RMX1BJRF9NQVNLICAgICAgMHgwMDAwMDAwMGZmZmZm ZmZmdWxsDQorI2RlZmluZSBGU1RGX1NZU0NUTF9ERUJVR19NQVNLICAgIDB4ZmZmZmZmZmYwMDAw MDAwMHVsbA0KKyNkZWZpbmUgRlNURl9TWVNDVExfREVCVUdfT04gICAgICAweDgwMDAwMDAwMDAw MDAwMDB1bGwNCisjZGVmaW5lIEZTVEZfU1lTQ1RMX0RFQlVHX0hFQVZZICAgMHhDMDAwMDAwMDAw MDAwMDAwdWxsDQorDQorLy8gRGVidWcgY29uc3RhbnRzDQorI2RlZmluZSBGU1RGX0RFQlVHX0NP TlNUX01JU0NfU0laRSA4MDANCisjZGVmaW5lIEZTVEZfREVCVUdfRk9STUFUX1NUUiAiVFNDOiUx OGx1IENQVTolMDJkIFRJRDolMDZkICUtMTBzIENPREU6JTE1czolMDRkIFNUQVRFOjB4JTAxNmx4 IE1TRzolcyINCisNCisvLyBoZWxwZXIgbWFjcm9zIHRvIGRvIGNvbnNpc3RlbnQgZGVidWdnaW5n DQorI2RlZmluZSBGU1RGX0RFQlVHX0VOVFJZX1BPRjIgOQ0KKyNkZWZpbmUgRlNURl9ERUJVR19O VU1CRVJfRU5UUklFUyAoMSA8PCBGU1RGX0RFQlVHX0VOVFJZX1BPRjIpDQorI2RlZmluZSBGU1RG X0RFQlVHX1BPU0lUSU9OX0lOREVYKG51bSkgKG51bSAmIChGU1RGX0RFQlVHX05VTUJFUl9FTlRS SUVTLTEpKQ0KKyNkZWZpbmUgRlNURl9ERUJVR19NSVNDKGZtdCwgLi4uKSBmc3RmX2RlYnVnX21p c2MoX19GSUxFX18sIF9fTElORV9fLCBmbXQsICMjX19WQV9BUkdTX18pOw0KKw0KKy8vIFN0cnVj dHVyZSBjb250YWluaW5nIGRhdGEgZm9yIGRlYnVnIG1lc3NhZ2VzDQorc3RydWN0IGZzdGZfZGVi dWdfZGF0YQ0KK3sNCisgICAgdWludDY0X3QgdHNjOw0KKyAgICB1aW50MzJfdCBhdXg7DQorICAg IGludCB0aWQ7DQorICAgIGNvbnN0IGNoYXIgKiBmaWxlOw0KKyAgICBpbnQgbGluZTsNCisgICAg dWludDY0X3Qgc3RhdGU7DQorICAgIHVpbnQzMl90IGRiZ190eXBlOw0KKyAgICBjaGFyIG1pc2Nb RlNURl9ERUJVR19DT05TVF9NSVNDX1NJWkVdOw0KK307DQorDQorLy8gQSAic2xpbSIgZGVidWdn aW5nIHZhcmlhbnQNCit2b2lkIGZzdGZfZGVidWdfZmFzdChjb25zdCBjaGFyICogZmlsZSwgaW50 IGxpbmUsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IHN0YXRlKTsNCisNCisvLyBBICJtaXNjIiBk ZWJ1Z2dpbmcgdmFyaWFudA0KK3ZvaWQgZnN0Zl9kZWJ1Z19taXNjKGNvbnN0IGNoYXIgKiBmaWxl LCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOw0KKw0KKy8vIEEgbG9jYXRpb24gd2hl cmUgdGhlIHN0YXRlIHZhcmlhYmxlIGNhbiBiZSBhY2Nlc3NlZA0KK3ZvbGF0aWxlIHVpbnQ2NF90 ICogZnN0Zl9zdGF0ZV9jb250cm9sKHZvaWQpOw0KKw0KKy8vIEdldCB0aGUgdHNjIGZyZXF1ZW5j eQ0KK3VpbnQ2NF90IGZzdGZfdHNjX2ZyZXF1ZW5jeV9zZWNvbmRzKHZvaWQpOw0KKw0KKy8vIEdl dCB0aGUgImN1cnJlbnQiIHN0YXRlIHZhbHVlDQorc3RhdGljIHVpbnQ2NF90IGZzdGZfc3RhdGVf dmFsdWUodm9pZCkNCit7DQorICAgIHZvbGF0aWxlIHVpbnQ2NF90ICogY29udHJvbCA9IGZzdGZf c3RhdGVfY29udHJvbCgpOw0KKyAgICB1aW50NjRfdCBzdGF0ZSA9IDA7DQorICAgIGlmIChjb250 cm9sKQ0KKyAgICB7DQorICAgICAgICBzdGF0ZSA9IGF0b21pY19sb2FkX2FjcV82NChjb250cm9s KTsNCisgICAgfQ0KKyAgICByZXR1cm4gKHN0YXRlKTsNCit9DQorDQorLy8gUHVzaGVzIGEgdGV4 dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgc3RhdGUgZmxhZ3MgaW50byBhIHN1cHBsaWVkIGJ1ZmZl cg0KK3N0YXRpYyB2b2lkIGZzdGZfZGVidWdfZmlsbF9zdGF0ZV9kZXNjcih1aW50NjRfdCBzdGF0 ZSwgY2hhciAqIGJ1ZiwgaW50IGxlbikNCit7DQorICAgIHNucHJpbnRmKGJ1ZiwNCisgICAgICAg ICAgICAgbGVuLA0KKyAgICAgICAgICAgICAiJTE0cyAlMTRzICUxNHMgJTE0cyAlMTRzICUxNHMg JTE0cyAlMTRzICUxNHMgJTE0cyAlMTRzICUxNHMgJTE0cyAlMTRzIiwNCisgICAgICAgICAgICAg KChzdGF0ZSAmIEZTVEZfU1RBVEVfQklUX0NPTVBMRVRFKSA/ICAgICAgICAgICAgICAiQ09NUExF VEUiIDogIiIpLA0KKyAgICAgICAgICAgICAoKHN0YXRlICYgRlNURl9TVEFURV9CSVRfVElNRU9V VCkgPyAgICAgICAgICAgICAgICJUSU1FT1VUIiA6ICIiKSwNCisgICAgICAgICAgICAgKChzdGF0 ZSAmIEZTVEZfU1RBVEVfQklUX01JU01BVENIKSA/ICAgICAgICAgICAgICAiTUlTTUFUQ0giIDog IiIpLA0KKyAgICAgICAgICAgICAoKHN0YXRlICYgRlNURl9TVEFURV9CSVRfQ0FOQ0VMTEVEKSA/ ICAgICAgICAgICAgICJDQU5DRUxMRUQiIDogIiIpLA0KKyAgICAgICAgICAgICAoKHN0YXRlICYg RlNURl9TVEFURV9CSVRfRkFVTFRFUl9JRExFKSA/ICAgICAgICAgICJGQVVMVEVSX0lETEUiIDog IiIpLA0KKyAgICAgICAgICAgICAoKHN0YXRlICYgRlNURl9TVEFURV9CSVRfV1JJVEVSX0lETEUp ID8gICAgICAgICAgICJXUklURVJfSURMRSIgOiAiIiksDQorICAgICAgICAgICAgICgoc3RhdGUg JiBGU1RGX1NUQVRFX0JJVF9SRUFERVJfSURMRSkgPyAgICAgICAgICAgIlJFQURFUl9JRExFIiA6 ICIiKSwNCisgICAgICAgICAgICAgKChzdGF0ZSAmIEZTVEZfU1RBVEVfQklUX1JFQURZX1RPX1BS SU1FKSA/ICAgICAgICAiUkVBRFlfVE9fUFJJTUUiIDogIiIpLA0KKyAgICAgICAgICAgICAoKHN0 YXRlICYgRlNURl9TVEFURV9CSVRfRkFVTFRFUl9QUklNRUQpID8gICAgICAgICJGQVVMVEVSX1BS SU1FRCIgOiAiIiksDQorICAgICAgICAgICAgICgoc3RhdGUgJiBGU1RGX1NUQVRFX0JJVF9XUklU RVJfUFJJTUVEKSA/ICAgICAgICAgIldSSVRFUl9QUklNRUQiIDogIiIpLA0KKyAgICAgICAgICAg ICAoKHN0YXRlICYgRlNURl9TVEFURV9CSVRfUkVBREVSX1BSSU1FRCkgPyAgICAgICAgICJSRUFE RVJfUFJJTUVEIiA6ICIiKSwNCisgICAgICAgICAgICAgKChzdGF0ZSAmIEZTVEZfU1RBVEVfQklU X1RFU1RfQUNUSVZFKSA/ICAgICAgICAgICAiVEVTVF9BQ1RJVkUiIDogIiIpLA0KKyAgICAgICAg ICAgICAoKHN0YXRlICYgRlNURl9TVEFURV9CSVRfS0VSTkVMX1BNQVBNT0QpID8gICAgICAgICJL RVJORUxfUE1BUE1PRCIgOiAiIiksDQorICAgICAgICAgICAgICgoc3RhdGUgJiBGU1RGX1NUQVRF X0JJVF9GQVVMVEVSX0RPTkUpID8gICAgICAgICAgIkZBVUxURVJfRE9ORSIgOiAiIikpOw0KK30N CisNCisvLyBEZXNjcmliZSB0aGUgZGVidWcgYWN0aW9uDQorc3RhdGljIGNvbnN0IGNoYXIgKiBm c3RmX2RlYnVnX3R5cGVfZGVzY3IodWludDMyX3QgdHlwZSkNCit7DQorICAgIHN3aXRjaCh0eXBl KQ0KKyAgICB7DQorICAgIGNhc2UgRlNURl9ERUJVR19UWVBFX01JU0NFTExBTkVPVVM6DQorICAg ICAgICByZXR1cm4gKCJNaXNjZWxsYW5lb3VzIik7DQorICAgIGNhc2UgRlNURl9ERUJVR19UWVBF X1RSQU5TSVRJT05fSU5JVElBTDoNCisgICAgICAgIHJldHVybiAoIlRyYW5zaXRpb24gSW5pdGlh bCIpOw0KKyAgICBjYXNlIEZTVEZfREVCVUdfVFlQRV9UUkFOU0lUSU9OX0ZJTkFMOg0KKyAgICAg ICAgcmV0dXJuICgiVHJhbnNpdGlvbiBGaW5hbCIpOw0KKyAgICBjYXNlIEZTVEZfREVCVUdfVFlQ RV9JTVBFRElNRU5UX0lOSVRJQUw6DQorICAgICAgICByZXR1cm4gKCJJbXBlZGltZW50IEluaXRp YWwiKTsNCisgICAgY2FzZSBGU1RGX0RFQlVHX1RZUEVfSU1QRURJTUVOVF9GSU5BTDoNCisgICAg ICAgIHJldHVybiAoIkltcGVkaW1lbnQgRmluYWwiKTsNCisgICAgY2FzZSBGU1RGX0RFQlVHX1RZ UEVfQ0hFQ0tfU1RBVEU6DQorICAgICAgICByZXR1cm4gKCJDaGVjayBTdGF0ZSIpOw0KKyAgICBk ZWZhdWx0Og0KKyAgICAgICAgYnJlYWs7DQorICAgIH0NCisgICAgcmV0dXJuICgiVW5rbm93biIp Ow0KK30NCisNCisvLyBzdHJpcCAibWlzYyIgcGF0aCBpbmZvcm1hdGlvbiBmcm9tIGEgZmlsZSBu YW1lIGxlYXZpbmcganVzdCB0aGUgZmlsZSBlbGVtZW50IG5hbWUNCitzdGF0aWMgY29uc3QgY2hh ciAqIGZzdGZfc3RyaXBfZmlsZV9wYXRoKGNvbnN0IGNoYXIgKiBmaWxlKQ0KK3sNCisgICAgY29u c3QgY2hhciAqIHA7DQorICAgIGNvbnN0IGNoYXIgKiBmbjsNCisgICAgc2l6ZV90IGxlbjsNCisN CisgICAgZm4gPSBmaWxlOw0KKyAgICBpZiAoZm4gIT0gMCkNCisgICAgew0KKyAgICAgICAgZm9y IChwID0gZm4sIGxlbiA9IHN0cmxlbihmbik7DQorICAgICAgICAgICAgbGVuID4gMDsNCisgICAg ICAgICAgICBsZW4tLSwgcCsrKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmICgqcCA9PSAn LycgfHwgKnAgPT0gJ1xcJykNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIGZuID0g cCArIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVy biAoZm4pOw0KK30NCisNCisvLyAicmR0c2NwIg0KK3N0YXRpYyB1aW50NjRfdCBmc3RmX3RzY19h bmRfYXV4KHVpbnQzMl90ICppcEF1eCkNCit7DQorLy8gICAgdWludDMyX3QgYSwgZDsNCisvLyAg ICAqaXBBdXggPSAwOw0KKy8vICAgIF9fYXNtX18gdm9sYXRpbGUoInJkdHNjIiA6ICI9YSIgKGEp LCAiPWQiIChkKSk7DQorLy8gICAgcmV0dXJuICgodWludDY0X3QpYSkgfCAoKCh1aW50NjRfdClk KSA8PCAzMik7DQorICAgIHVpbnQ2NF90IGEsIGQ7DQorICAgIF9fYXNtX18gdm9sYXRpbGUoInJk dHNjcCIgOiAiPWEiIChhKSwgIj1kIiAoZCksICI9YyIgKCppcEF1eCkpOw0KKyAgICByZXR1cm4g KGQgPDwgMzIpICsgYTsNCit9DQorDQorLy8gVXBkYXRlcyB0aGUgc3RhdGUgZGF0YSB0byByZW1v dmUgJ3JlbW92ZV9iaXRzJyBhbmQgYWRkICdpbmNsdWRlX2JpdHMnDQorc3RhdGljIHVpbnQ2NF90 IGZzdGZfY2hhbmdlX3N0YXRlX2JpdHModWludDY0X3QgcmVtb3ZlX2JpdHMsIHVpbnQ2NF90IGlu Y2x1ZGVfYml0cykNCit7DQorICAgIHVpbnQ2NF90IG9sZF92YWw7DQorICAgIHVpbnQ2NF90IG5l d192YWw7DQorDQorICAgIGRvDQorICAgIHsNCisgICAgICAgIG9sZF92YWwgPSBhdG9taWNfbG9h ZF9hY3FfNjQoZnN0Zl9zdGF0ZV9jb250cm9sKCkpOw0KKyAgICAgICAgbmV3X3ZhbCA9ICgob2xk X3ZhbCAmICh+cmVtb3ZlX2JpdHMpKSB8IGluY2x1ZGVfYml0cyk7DQorICAgICAgICBpZiAob2xk X3ZhbCA9PSBuZXdfdmFsKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAg ICAgfQ0KKw0KKyAgICB9IHdoaWxlICghYXRvbWljX2NtcHNldF82NChmc3RmX3N0YXRlX2NvbnRy b2woKSwgb2xkX3ZhbCwgbmV3X3ZhbCkpOw0KKw0KKyAgICByZXR1cm4gKG5ld192YWwpOw0KK30N CisNCisvLyBXYWl0cyBmb3IgdGhlIHN0YXRlIGRhdGEgdG8gbWF0Y2ggYSBjZXJ0YWluIGJpdG1h c2sNCisvLyBvcHRzID09IGZzdGZfb3B0X2FsbCAtLT4gd2FpdCBmb3Igc3RhdGUgY29udHJvbCB0 byBoYXZlIGFsbCBiaXRzIGluIGJpdF9tYXNrDQorLy8gb3B0cyA9PSBmc3RmX29wdF9hbnkgLS0+ IHdhaXQgZm9yIHN0YXRlIGNvbnRyb2wgdG8gaGF2ZSBhbnkgYml0cyBpbiBiaXRfbWFzaw0KK3N0 YXRpYyBpbnQgZnN0Zl9vcHRfYWxsID0gMDsNCitzdGF0aWMgaW50IGZzdGZfb3B0X2FueSA9IDE7 DQorc3RhdGljIHVpbnQ2NF90IGZzdGZfd2FpdF9mb3Jfc3RhdGVfYml0cyh1aW50NjRfdCB3YWl0 X2Zvcl9iaXRfbWFzaywgaW50IG9wdHMpDQorew0KKyAgICB1aW50NjRfdCBtYXhfd2FpdCA9IEZT VEZfQ09OU1RBTlRfVElNRU9VVF9TRUNPTkRTICogZnN0Zl90c2NfZnJlcXVlbmN5X3NlY29uZHMo KTsNCisgICAgdWludDY0X3Qgbm93Ow0KKyAgICB1aW50MzJfdCBhdXg7DQorICAgIHVpbnQ2NF90 IHN0YXJ0X2N5Y2xlcyA9IGZzdGZfdHNjX2FuZF9hdXgoJmF1eCk7DQorICAgIHVpbnQ2NF90IGVu ZF9jeWNsZXMgPSBzdGFydF9jeWNsZXMgKyBtYXhfd2FpdDsNCisgICAgdWludDY0X3QgdHN0Ow0K KyAgICBkbw0KKyAgICB7DQorICAgICAgICBfX2FzbV9fIHZvbGF0aWxlKCJwYXVzZVxuIjogOiA6 Im1lbW9yeSIpOw0KKw0KKyAgICAgICAgdHN0ID0gYXRvbWljX2xvYWRfYWNxXzY0KGZzdGZfc3Rh dGVfY29udHJvbCgpKTsNCisgICAgICAgIGlmICh0c3QgJiBGU1RGX1NUQVRFX0JJVFNfRklOSVNI RUQpDQorICAgICAgICB7DQorICAgICAgICAgICAgcmV0dXJuICh0c3QpOw0KKyAgICAgICAgfQ0K KyAgICAgICAgaWYgKG9wdHMgPT0gZnN0Zl9vcHRfYWxsKQ0KKyAgICAgICAgew0KKyAgICAgICAg ICAgIGlmICgodHN0ICYgd2FpdF9mb3JfYml0X21hc2spID09IHdhaXRfZm9yX2JpdF9tYXNrKQ0K KyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuICh0c3QpOw0KKyAgICAgICAg ICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGVsc2UgaWYgKG9wdHMgPT0gZnN0Zl9vcHRfYW55 KQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmICgodHN0ICYgd2FpdF9mb3JfYml0X21hc2sp KQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuICh0c3QpOw0KKyAgICAg ICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIG5vdyA9IGZzdGZfdHNjX2FuZF9hdXgoJmF1 eCk7DQorICAgIH0gd2hpbGUgKG5vdyA8IGVuZF9jeWNsZXMpOw0KKw0KKyAgICB0c3QgPSBmc3Rm X2NoYW5nZV9zdGF0ZV9iaXRzKDAsIEZTVEZfU1RBVEVfQklUX1RJTUVPVVQpOw0KKw0KKyAgICBy ZXR1cm4gKHRzdCk7DQorfQ0KKw0KKy8vIFdpbmRvdyBkcmVzc2luZyBmb3IgZnN0Zl9jaGFuZ2Vf c3RhdGVfYml0cw0KK3N0YXRpYyB1aW50NjRfdCBmc3RmX3dyYXBfc3RhdGVfdHJhbnNpdGlvbihj b25zdCBjaGFyICogZmlsZSwgaW50IGxpbmUsIHVpbnQ2NF90IHJlbW92ZV9iaXRzLCB1aW50NjRf dCBpbmNsdWRlX2JpdHMpDQorew0KKyAgICBmc3RmX2RlYnVnX2Zhc3QoZmlsZSwgbGluZSwgRlNU Rl9ERUJVR19UWVBFX1RSQU5TSVRJT05fSU5JVElBTCwgZnN0Zl9zdGF0ZV92YWx1ZSgpKTsNCisg ICAgdWludDY0X3QgbmV3c3RhdGUgPSBmc3RmX2NoYW5nZV9zdGF0ZV9iaXRzKHJlbW92ZV9iaXRz LCBpbmNsdWRlX2JpdHMpOw0KKyAgICBmc3RmX2RlYnVnX2Zhc3QoZmlsZSwgbGluZSwgRlNURl9E RUJVR19UWVBFX1RSQU5TSVRJT05fRklOQUwsICAgbmV3c3RhdGUpOw0KKyAgICByZXR1cm4gKG5l d3N0YXRlKTsNCit9DQorDQorLy8gV2luZG93IGRyZXNzaW5nIGZvciBmc3RmX3dhaXRfZm9yX3N0 YXRlX2JpdHMNCitzdGF0aWMgdWludDY0X3QgZnN0Zl93cmFwX3N0YXRlX2ltcGVkaW1lbnQoY29u c3QgY2hhciAqIGZpbGUsIGludCBsaW5lLCB1aW50NjRfdCB3YWl0X2Zvcl9iaXRtYXNrLCBpbnQg b3B0cykNCit7DQorICAgIGZzdGZfZGVidWdfZmFzdChmaWxlLCBsaW5lLCBGU1RGX0RFQlVHX1RZ UEVfSU1QRURJTUVOVF9JTklUSUFMLCBmc3RmX3N0YXRlX3ZhbHVlKCkpOw0KKyAgICB1aW50NjRf dCBuZXdzdGF0ZSA9IGZzdGZfd2FpdF9mb3Jfc3RhdGVfYml0cyh3YWl0X2Zvcl9iaXRtYXNrLCBv cHRzKTsNCisgICAgZnN0Zl9kZWJ1Z19mYXN0KGZpbGUsIGxpbmUsIEZTVEZfREVCVUdfVFlQRV9J TVBFRElNRU5UX0ZJTkFMLCAgIG5ld3N0YXRlKTsNCisgICAgcmV0dXJuIChuZXdzdGF0ZSk7DQor fQ0KKw0KKy8vIFdpbmRvdyBkcmVzc2luZyBmb3IgZnN0Zl93cmFwX2NoZWNrX2Zvcl9iaXRzDQor c3RhdGljIGludCBmc3RmX3dyYXBfY2hlY2tfZm9yX2JpdHMoY29uc3QgY2hhciAqIGZpbGUsIGlu dCBsaW5lLCB1aW50NjRfdCBjaGVja19mb3JfYml0bWFzaywgaW50IG9wdHMpDQorew0KKyAgICB1 aW50NjRfdCBzdGF0ZSA9IGZzdGZfc3RhdGVfdmFsdWUoKTsNCisgICAgZnN0Zl9kZWJ1Z19mYXN0 KGZpbGUsIGxpbmUsIEZTVEZfREVCVUdfVFlQRV9DSEVDS19TVEFURSwgc3RhdGUpOw0KKyAgICBp ZiAob3B0cyA9PSBmc3RmX29wdF9hbGwpDQorICAgIHsNCisgICAgICAgIGlmICgoc3RhdGUgJiBj aGVja19mb3JfYml0bWFzaykgPT0gY2hlY2tfZm9yX2JpdG1hc2spDQorICAgICAgICB7DQorICAg ICAgICAgICAgcmV0dXJuICgxKTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBlbHNlIGlmIChv cHRzID09IGZzdGZfb3B0X2FueSkNCisgICAgew0KKyAgICAgICAgaWYgKChzdGF0ZSAmIGNoZWNr X2Zvcl9iaXRtYXNrKSkNCisgICAgICAgIHsNCisgICAgICAgICAgICByZXR1cm4gKDEpOw0KKyAg ICAgICAgfQ0KKyAgICB9DQorICAgIHJldHVybiAoMCk7DQorfQ0KKw0KKyNkZWZpbmUgZnN0Zl9z dGF0ZV9pbXBlZGltZW50X2FsbCh3YWl0X2ZvcikgZnN0Zl93cmFwX3N0YXRlX2ltcGVkaW1lbnQo X19GSUxFX18sIF9fTElORV9fLCB3YWl0X2ZvciwgZnN0Zl9vcHRfYWxsKQ0KKyNkZWZpbmUgZnN0 Zl9zdGF0ZV9pbXBlZGltZW50X2FueSh3YWl0X2ZvcikgZnN0Zl93cmFwX3N0YXRlX2ltcGVkaW1l bnQoX19GSUxFX18sIF9fTElORV9fLCB3YWl0X2ZvciwgZnN0Zl9vcHRfYW55KQ0KKyNkZWZpbmUg ZnN0Zl9zdGF0ZV90cmFuc2l0aW9uKHJlbW92ZSwgYWRkKSAgZnN0Zl93cmFwX3N0YXRlX3RyYW5z aXRpb24oX19GSUxFX18sIF9fTElORV9fLCByZW1vdmUsIGFkZCkNCisjZGVmaW5lIGZzdGZfc3Rh dGVfY2hlY2tfYWxsKGNoZWNrX2ZvcikgZnN0Zl93cmFwX2NoZWNrX2Zvcl9iaXRzKF9fRklMRV9f LCBfX0xJTkVfXywgY2hlY2tfZm9yLCBmc3RmX29wdF9hbGwpDQorI2RlZmluZSBmc3RmX3N0YXRl X2NoZWNrX2FueShjaGVja19mb3IpIGZzdGZfd3JhcF9jaGVja19mb3JfYml0cyhfX0ZJTEVfXywg X19MSU5FX18sIGNoZWNrX2ZvciwgZnN0Zl9vcHRfYW55KQ0KKw0KKyNlbmRpZg0KZGlmZiAtLWdp dCBhL3N5cy92bS92bV9mYXVsdC5jIGIvc3lzL3ZtL3ZtX2ZhdWx0LmMNCmluZGV4IDgzZTEyYTUu LmVhYWI5YzYgMTAwNjQ0DQotLS0gYS9zeXMvdm0vdm1fZmF1bHQuYw0KKysrIGIvc3lzL3ZtL3Zt X2ZhdWx0LmMNCkBAIC01NDQsNiArNTQ0LDkgQEAgdm1fZmF1bHRfaG9sZCh2bV9tYXBfdCBtYXAs IHZtX29mZnNldF90IHZhZGRyLCB2bV9wcm90X3QgZmF1bHRfdHlwZSwNCiANCiBSZXRyeUZhdWx0 OjsNCiANCisJZnN0Zl9jb25kaXRpb25hbF9wb2ludF9kZWJ1ZyhfX0ZJTEVfXywgX19MSU5FX18s IG1hcC0+cG1hcCwgdmFkZHIpOw0KKw0KKw0KIAkvKg0KIAkgKiBGaW5kIHRoZSBiYWNraW5nIHN0 b3JlIG9iamVjdCBhbmQgb2Zmc2V0IGludG8gaXQgdG8gYmVnaW4gdGhlDQogCSAqIHNlYXJjaC4N CkBAIC01NTgsNiArNTYxLDcgQEAgUmV0cnlGYXVsdDo7DQogCX0NCiANCiAJZnMubWFwX2dlbmVy YXRpb24gPSBmcy5tYXAtPnRpbWVzdGFtcDsNCisJZnN0Zl9jb25kaXRpb25hbF9mYXVsdF9kZWJ1 ZyhfX0ZJTEVfXywgX19MSU5FX18sIG1hcC0+cG1hcCwgdmFkZHIsIHByb3QpOw0KIA0KIAlpZiAo ZnMuZW50cnktPmVmbGFncyAmIE1BUF9FTlRSWV9OT0ZBVUxUKSB7DQogCQlwYW5pYygiJXM6IGZh dWx0IG9uIG5vZmF1bHQgZW50cnksIGFkZHI6ICUjbHgiLA0KQEAgLTYwNyw2ICs2MTEsNyBAQCBS ZXRyeUZhdWx0OjsNCiAJCSAgICAoZnMuZmlyc3Rfb2JqZWN0LT50eXBlICE9IE9CSlRfVk5PREUg JiYNCiAJCSAgICAoZnMuZmlyc3Rfb2JqZWN0LT5mbGFncyAmIE9CSl9UTVBGU19OT0RFKSA9PSAw KSB8fA0KIAkJICAgIChmcy5maXJzdF9vYmplY3QtPmZsYWdzICYgT0JKX01JR0hUQkVESVJUWSkg IT0gMCkgew0KKwkJCWZzdGZfY29uZGl0aW9uYWxfcG9pbnRfZGVidWcoX19GSUxFX18sIF9fTElO RV9fLCBtYXAtPnBtYXAsIHZhZGRyKTsNCiAJCQlydiA9IHZtX2ZhdWx0X3NvZnRfZmFzdCgmZnMs IHZhZGRyLCBwcm90LCBmYXVsdF90eXBlLA0KIAkJCSAgICBmYXVsdF9mbGFncywgd2lyZWQsIG1f aG9sZCk7DQogCQkJaWYgKHJ2ID09IEtFUk5fU1VDQ0VTUykNCkBAIC03MjEsNiArNzI2LDkgQEAg UmV0cnlGYXVsdDo7DQogCQkJICogZm91bmQgdGhlIHBhZ2UgKS4NCiAJCQkgKi8NCiAJCQl2bV9w YWdlX3hidXN5KGZzLm0pOw0KKwkJCWlmIChmcy5tYXApIHsNCisJCQkJZnN0Zl9jb25kaXRpb25h bF9wb2ludF9kZWJ1ZyhfX0ZJTEVfXywgX19MSU5FX18sIGZzLm1hcC0+cG1hcCwgdmFkZHIpOw0K KwkJCX0NCiAJCQlpZiAoZnMubS0+dmFsaWQgIT0gVk1fUEFHRV9CSVRTX0FMTCkNCiAJCQkJZ290 byByZWFkcmVzdDsNCiAJCQlicmVhazsNCkBAIC03ODQsNiArNzkyLDkgQEAgUmV0cnlGYXVsdDo7 DQogCQkJCQlhbGxvY19yZXEgfD0gVk1fQUxMT0NfWkVSTzsNCiAJCQkJZnMubSA9IHZtX3BhZ2Vf YWxsb2MoZnMub2JqZWN0LCBmcy5waW5kZXgsDQogCQkJCSAgICBhbGxvY19yZXEpOw0KKwkJCQlp ZiAoZnMubSAhPSBOVUxMICYmIGZzLm1hcCAhPSBOVUxMKSB7DQorCQkJCQlmc3RmX2NvbmRpdGlv bmFsX3BvaW50X2RlYnVnKF9fRklMRV9fLCBfX0xJTkVfXywgZnMubWFwLT5wbWFwLCB2YWRkcik7 DQorCQkJCX0NCiAJCQl9DQogCQkJaWYgKGZzLm0gPT0gTlVMTCkgew0KIAkJCQl1bmxvY2tfYW5k X2RlYWxsb2NhdGUoJmZzKTsNCkBAIC0xMTMzLDYgKzExNDQsNyBAQCBSZXRyeUZhdWx0OjsNCiAJ CQkJLyoNCiAJCQkJICogT2gsIHdlbGwsIGxldHMgY29weSBpdC4NCiAJCQkJICovDQorCQkJCWZz dGZfY29uZGl0aW9uYWxfcG9pbnRfZGVidWcoX19GSUxFX18sIF9fTElORV9fLCBmcy5tYXAtPnBt YXAsIHZhZGRyKTsNCiAJCQkJcG1hcF9jb3B5X3BhZ2UoZnMubSwgZnMuZmlyc3RfbSk7DQogCQkJ CWZzLmZpcnN0X20tPnZhbGlkID0gVk1fUEFHRV9CSVRTX0FMTDsNCiAJCQkJaWYgKHdpcmVkICYm IChmYXVsdF9mbGFncyAmDQpAQCAtMTE2OCw2ICsxMTgwLDcgQEAgUmV0cnlGYXVsdDo7DQogCQkJ Y3VydGhyZWFkLT50ZF9jb3crKzsNCiAJCX0gZWxzZSB7DQogCQkJcHJvdCAmPSB+Vk1fUFJPVF9X UklURTsNCisJCQlmc3RmX2NvbmRpdGlvbmFsX2ZhdWx0X2RlYnVnKF9fRklMRV9fLCBfX0xJTkVf XywgbWFwLT5wbWFwLCB2YWRkciwgcHJvdCk7DQogCQl9DQogCX0NCiANCkBAIC0xMTg1LDYgKzEx OTgsNyBAQCBSZXRyeUZhdWx0OjsNCiAJCWlmIChmcy5tYXAtPnRpbWVzdGFtcCAhPSBmcy5tYXBf Z2VuZXJhdGlvbikgew0KIAkJCXJlc3VsdCA9IHZtX21hcF9sb29rdXBfbG9ja2VkKCZmcy5tYXAs IHZhZGRyLCBmYXVsdF90eXBlLA0KIAkJCSAgICAmZnMuZW50cnksICZyZXRyeV9vYmplY3QsICZy ZXRyeV9waW5kZXgsICZyZXRyeV9wcm90LCAmd2lyZWQpOw0KKwkJCWZzdGZfY29uZGl0aW9uYWxf ZmF1bHRfZGVidWcoX19GSUxFX18sIF9fTElORV9fLCBtYXAtPnBtYXAsIHZhZGRyLCByZXRyeV9w cm90KTsNCiANCiAJCQkvKg0KIAkJCSAqIElmIHdlIGRvbid0IG5lZWQgdGhlIHBhZ2UgYW55IGxv bmdlciwgcHV0IGl0IG9uIHRoZSBpbmFjdGl2ZQ0KQEAgLTExOTQsNiArMTIwOCw3IEBAIFJldHJ5 RmF1bHQ6Ow0KIAkJCWlmIChyZXN1bHQgIT0gS0VSTl9TVUNDRVNTKSB7DQogCQkJCXJlbGVhc2Vf cGFnZSgmZnMpOw0KIAkJCQl1bmxvY2tfYW5kX2RlYWxsb2NhdGUoJmZzKTsNCisJCQkJZnN0Zl9j b25kaXRpb25hbF9wb2ludF9kZWJ1ZyhfX0ZJTEVfXywgX19MSU5FX18sIG1hcC0+cG1hcCwgdmFk ZHIpOw0KIA0KIAkJCQkvKg0KIAkJCQkgKiBJZiByZXRyeSBvZiBtYXAgbG9va3VwIHdvdWxkIGhh dmUgYmxvY2tlZCB0aGVuDQpAQCAtMTIxOSw2ICsxMjM0LDcgQEAgUmV0cnlGYXVsdDo7DQogCQkJ ICogd3JpdGUtZW5hYmxlZCBhZnRlciBhbGwuDQogCQkJICovDQogCQkJcHJvdCAmPSByZXRyeV9w cm90Ow0KKwkJCWZzdGZfY29uZGl0aW9uYWxfZmF1bHRfZGVidWcoX19GSUxFX18sIF9fTElORV9f LCBtYXAtPnBtYXAsIHZhZGRyLCBwcm90KTsNCiAJCX0NCiAJfQ0KIA0KZGlmZiAtLWdpdCBhL3N5 cy92bS92bV9wYWdlLmMgYi9zeXMvdm0vdm1fcGFnZS5jDQppbmRleCBmMTdhOTgxLi44MmM1ZmQ3 ZiAxMDA2NDQNCi0tLSBhL3N5cy92bS92bV9wYWdlLmMNCisrKyBiL3N5cy92bS92bV9wYWdlLmMN CkBAIC00MDk0LDYgKzQwOTQsNDY1IEBAIHZtX3BhZ2VfdHJ5bG9ja19LQkkodm1fcGFnZV90IG0s IGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKQ0KIAlyZXR1cm4gKG10eF90cnlsb2NrX2ZsYWdz Xyh2bV9wYWdlX2xvY2twdHIobSksIDAsIGZpbGUsIGxpbmUpKTsNCiB9DQogDQorDQorDQorDQor DQorDQorDQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KKyNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+ DQorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4NCisjaW5jbHVkZSA8dm0vdm1fbWFwLmg+DQorI2lu Y2x1ZGUgPG1hY2hpbmUvYXRvbWljLmg+DQorI2luY2x1ZGUgPG1hY2hpbmUvc3RkYXJnLmg+DQor DQorI2luY2x1ZGUgPHZtL2Zvcmtpbmdfc3RhbGUuaD4NCisNCitleHRlcm4gIHVpbnQ2NF90IHRz Y19mcmVxOw0KKw0KK01BTExPQ19ERUZJTkUoTV9GU1RGLCAiZnN0ZiIsICJGU1RGIFRlc3QgSG9v ayIpOw0KKw0KK3N0YXRpYyBwbWFwX3QgdGVzdF9wbWFwID0gTlVMTDsNCitzdGF0aWMgdWludHB0 cl90IHRlc3RfdmFkZHIgPSBGU1RGX0NPTlNUQU5UX1ZBRERSOw0KK3N0cnVjdCBmc3RmX2RlYnVn X2RhdGEgZGVidWdfZW50cmllc1tGU1RGX0RFQlVHX05VTUJFUl9FTlRSSUVTXTsNCitzdGF0aWMg dV9pbnQgZGVidWdfcG9zaXRpb247DQorc3RhdGljIHVpbnQ2NF90IGRlYnVnX3ZhbHVlID0gMDsN CitzdGF0aWMgdm9pZCAqIHN0YXRlX2NvbnRyb2xfYWxsb2MgPSAwOw0KK3N0YXRpYyBzaXplX3Qg c3RhdGVfY29udHJvbF9hbGxvY19sZW5ndGggPSBQQUdFX1NJWkU7DQorc3RhdGljIHZtX3BhZGRy X3Qgc3RhdGVfY29udHJvbF9wYWRkciA9IDA7DQorc3RhdGljIHZvbGF0aWxlIHVpbnQ2NF90ICog c3RhdGVfY29udHJvbCA9IDA7DQorDQorc3RhdGljIGludCBzeXNjdGxfZnN0Zl9zZXR1cChTWVND VExfSEFORExFUl9BUkdTKTsNCitzdGF0aWMgaW50IHN5c2N0bF9kZWJ1Z19vdXRwdXQoU1lTQ1RM X0hBTkRMRVJfQVJHUyk7DQorDQorU1lTQ1RMX05PREUoX2tlcm4sDQorICAgICAgICAgICAgT0lE X0FVVE8sDQorICAgICAgICAgICAgZnN0Zl9zZXR1cCwNCisgICAgICAgICAgICBDVExGTEFHX1JX LA0KKyAgICAgICAgICAgIHN5c2N0bF9mc3RmX3NldHVwLA0KKyAgICAgICAgICAgICJUZXN0IGhv b2sgdG8gc2V0dXAgdG8gaGVscCBkZWJ1ZyBhIHJhY2UgY29uZGl0aW9uIik7DQorDQorU1lTQ1RM X1U2NChfa2VybiwNCisgICAgICAgICAgIE9JRF9BVVRPLA0KKyAgICAgICAgICAgZnN0Zl9jb250 cm9sX3BhZGRyLA0KKyAgICAgICAgICAgQ1RMRkxBR19SRCwNCisgICAgICAgICAgICZzdGF0ZV9j b250cm9sX3BhZGRyLA0KKyAgICAgICAgICAgMCwNCisgICAgICAgICAgICJSZWFkIHRoZSBwaHlz aWNhbCBtZW1vcnkgYWRkcmVzcyBhbGxvY2F0ZWQgZm9yIHRoZSB0ZXN0Iik7DQorDQorU1lTQ1RM X09JRChfa2VybiwNCisgICAgICAgICAgIE9JRF9BVVRPLA0KKyAgICAgICAgICAgZnN0Zl9kZWJ1 Z19vdXRwdXQsDQorICAgICAgICAgICBDVExUWVBFX1NUUklORyB8IENUTEZMQUdfUkQsDQorICAg ICAgICAgICBOVUxMLA0KKyAgICAgICAgICAgMCwNCisgICAgICAgICAgIHN5c2N0bF9kZWJ1Z19v dXRwdXQsDQorICAgICAgICAgICAiQSIsDQorICAgICAgICAgICAiT3V0cHV0IHRlc3QgZml4dHVy ZSBkZWJ1Z2dpbmciKTsNCisNCisvKiBPdXRwdXQgZGVidWdnaW5nIGNhcHR1cmVkIGluIG1lbW9y eSBpbiB0aGUga2VybmVsIGR1cmluZyB0aGUgbGFzdCB0ZXN0IHJ1biAqLw0KK3N0YXRpYyBpbnQN CitzeXNjdGxfZGVidWdfb3V0cHV0KFNZU0NUTF9IQU5ETEVSX0FSR1MpDQorew0KKyAgICAgICAg c3RydWN0IHNidWYgc2J1ZjsNCisgICAgICAgIGludCBudW0sIGVycm9yOw0KKw0KKyAgICAgICAg ZXJyb3IgPSBzeXNjdGxfd2lyZV9vbGRfYnVmZmVyKHJlcSwgMCk7DQorICAgICAgICBpZiAoZXJy b3IgIT0gMCkgew0KKyAgICAgICAgICAgIHJldHVybiAoZXJyb3IpOw0KKyAgICAgICAgfQ0KKw0K KyAgICAgICAgc2J1Zl9uZXdfZm9yX3N5c2N0bCgmc2J1ZiwgTlVMTCwgc2l6ZW9mKGRlYnVnX2Vu dHJpZXNbMF0ubWlzYykgKyAxMDI0LCByZXEpOw0KKw0KKyAgICAgICAgc2J1Zl9wcmludGYoJnNi dWYsICJcbiIpOw0KKw0KKyAgICAgICAgZm9yIChudW0gPSAwOyBudW0gPCBGU1RGX0RFQlVHX05V TUJFUl9FTlRSSUVTOyBudW0rKykgew0KKyAgICAgICAgICAgIGlmIChkZWJ1Z19lbnRyaWVzW251 bV0uZGJnX3R5cGUgIT0gRlNURl9ERUJVR19UWVBFX1VOVVNFRCkgew0KKyAgICAgICAgICAgICAg ICBpZiAoZGVidWdfZW50cmllc1tudW1dLmRiZ190eXBlID09IEZTVEZfREVCVUdfVFlQRV9NSVND RUxMQU5FT1VTKSB7DQorDQorICAgICAgICAgICAgICAgICAgICBlcnJvciA9IHNidWZfcHJpbnRm KCZzYnVmLCAiJXMiLCBkZWJ1Z19lbnRyaWVzW251bV0ubWlzYyk7DQorICAgICAgICAgICAgICAg ICAgICBpZiAoZXJyb3IpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIkVycm9y OiAlZCBoYW5kbGluZyBzeXNjdGwgcHJpbnRmXG4iLCBlcnJvcik7DQorICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAg ICAgIH0gZWxzZSB7DQorDQorICAgICAgICAgICAgICAgICAgICBjaGFyIHN0YnVmWzUxMl07DQor ICAgICAgICAgICAgICAgICAgICBjaGFyIHN0YXRlX3N0clsxMDI0XTsNCisgICAgICAgICAgICAg ICAgICAgIGZzdGZfZGVidWdfZmlsbF9zdGF0ZV9kZXNjcihkZWJ1Z19lbnRyaWVzW251bV0uc3Rh dGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RidWYsDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0YnVmKSk7DQorDQorICAgICAg ICAgICAgICAgICAgICBzbnByaW50ZihzdGF0ZV9zdHIsDQorICAgICAgICAgICAgICAgICAgICAg c2l6ZW9mKHN0YXRlX3N0ciksDQorICAgICAgICAgICAgICAgICAgICAgIlN0YXRlOiAlcyAoMHgl MDE2bHgpIFslc11cbiIsDQorICAgICAgICAgICAgICAgICAgICAgc3RidWYsDQorICAgICAgICAg ICAgICAgICAgICAgZGVidWdfZW50cmllc1tudW1dLnN0YXRlLA0KKyAgICAgICAgICAgICAgICAg ICAgIGZzdGZfZGVidWdfdHlwZV9kZXNjcihkZWJ1Z19lbnRyaWVzW251bV0uZGJnX3R5cGUpKTsN CisNCisgICAgICAgICAgICAgICAgICAgIGVycm9yID0gc2J1Zl9wcmludGYoJnNidWYsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1RGX0RFQlVHX0ZPUk1BVF9TVFIsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19lbnRyaWVzW251bV0udHNjLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfZW50cmllc1tudW1dLmF1eCwNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2VudHJpZXNbbnVtXS50aWQsDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZzdGZfc3RyaXBfZmlsZV9wYXRoKGRlYnVnX2VudHJpZXNbbnVtXS5maWxl KSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2VudHJpZXNbbnVtXS5s aW5lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfZW50cmllc1tudW1d LnN0YXRlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVfc3RyKTsNCisg ICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikgew0KKyAgICAgICAgICAgICAgICAgICAgICAg IHByaW50ZigiRXJyb3I6ICVkIGhhbmRsaW5nIHN5c2N0bCBwcmludGZcbiIsIGVycm9yKTsNCisg ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgICAgIH0NCisg ICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisNCisgICAgICAg IGVycm9yID0gc2J1Zl9maW5pc2goJnNidWYpOw0KKw0KKyAgICAgICAgc2J1Zl9kZWxldGUoJnNi dWYpOw0KKyAgICAgICAgcmV0dXJuIChlcnJvcik7DQorfQ0KKw0KKy8qIFNldHVwIGZvciB0ZXN0 aW5nIHRoZSByYWNlIGNvbmRpdGlvbiAqLw0KK3N0YXRpYyBpbnQNCitzeXNjdGxfZnN0Zl9zZXR1 cChTWVNDVExfSEFORExFUl9BUkdTKQ0KK3sNCisgICAgICAgIGludCBlcnJvcjsNCisgICAgICAg IHBpZF90IHBpZDsNCisgICAgICAgIHVpbnQ2NF90IHBpZG1vcmU7DQorICAgICAgICBzdHJ1Y3Qg cHJvYyAqcDsNCisNCisgICAgICAgIC8qIEdldCB0aGUgdmFsdWUgc3VwcGxpZWQ7IGFuIDY0IGJp dCBpbnRlZ2VyIHdpdGggPGRlYnVnIHwgcGlkPiAqLw0KKw0KKyAgICAgICAgZXJyb3IgPSBzeXNj dGxfaGFuZGxlXzY0KG9pZHAsICZwaWRtb3JlLCAwLCByZXEpOw0KKyAgICAgICAgaWYgKGVycm9y IHx8IHJlcS0+bmV3cHRyID09IE5VTEwpIHsNCisgICAgICAgICAgICByZXR1cm4gKGVycm9yKTsN CisgICAgICAgIH0NCisNCisgICAgICAgIEZTVEZfREVCVUdfTUlTQygiVGVzdCBIb29rOiBFbnRy eTogJTBseFxuIiwgcGlkbW9yZSk7DQorDQorICAgICAgICBwaWQgPSAocGlkX3QpKEZTVEZfU1lT Q1RMX1BJRF9NQVNLICYgcGlkbW9yZSk7DQorICAgICAgICBkZWJ1Z192YWx1ZSA9IChGU1RGX1NZ U0NUTF9ERUJVR19NQVNLICYgcGlkbW9yZSk7DQorDQorICAgICAgICBGU1RGX0RFQlVHX01JU0Mo IlRlc3QgSG9vazogSW5pdGlhbCBwaWQ9JWQgZGJnPSVsdVxuIiwNCisgICAgICAgICAgICAgICAg ICAgICAgICBwaWQsDQorICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfdmFsdWUpOw0KKw0K KyAgICAgICAgLyogQ29uZmlybSB0aGF0IHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgY29ycmVjdCAm IGxvb2sgaXQgdXAgKi8NCisgICAgICAgIGVycm9yID0gcGdldChwaWQsIFBHRVRfQ0FOU0VFIHwg UEdFVF9JU0NVUlJFTlQgfCBQR0VUX0NBTkRFQlVHIHwgUEdFVF9OT1RXRVhJVCB8IFBHRVRfTk9U SUQsICZwKTsNCisgICAgICAgIGlmIChlcnJvciAhPSAwKSB7DQorICAgICAgICAgICAgcHJpbnRm KCJUZXN0IEhvb2s6IFNldHVwIEVycm9yLCB1bmFibGUgdG8gbG9va3VwL21hdGNoIFBJRC4gIEVy cm9yOiAlZFxuIiwgZXJyb3IpOw0KKyAgICAgICAgICAgIHJldHVybiAoZXJyb3IpOw0KKyAgICAg ICAgfQ0KKw0KKyAgICAgICAgRlNURl9ERUJVR19NSVNDKCJUZXN0IEhvb2s6IFByb2Nlc3MgTG9j YXRlZCBwaWQ9JWQgbmFtZT0lc1xuIiwNCisgICAgICAgICAgICAgICAgICAgICAgICBwaWQsDQor ICAgICAgICAgICAgICAgICAgICAgICAgcC0+cF9jb21tKTsNCisNCisgICAgICAgIC8qIFJlbGVh c2UgYW55IHByZXZpb3VzIHRlc3QgcmVzb3J1Y2VzICovDQorICAgICAgICBpZiAoc3RhdGVfY29u dHJvbF9hbGxvYykgew0KKyAgICAgICAgICAgIGNvbnRpZ2ZyZWUoc3RhdGVfY29udHJvbF9hbGxv YywNCisgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlX2NvbnRyb2xfYWxsb2NfbGVuZ3RoLA0K KyAgICAgICAgICAgICAgICAgICAgICAgTV9GU1RGKTsNCisgICAgICAgICAgICBzdGF0ZV9jb250 cm9sID0gTlVMTDsNCisgICAgICAgICAgICBzdGF0ZV9jb250cm9sX2FsbG9jID0gTlVMTDsNCisg ICAgICAgIH0NCisNCisgICAgICAgIC8qIEFsbG9jYXRlIGEgY29udHJvbCByZWdpb24gJiBtYWtl IHRoZSBwaHlzaWNhbCBhZGRyZXNzIGF2YWlsYWJsZSB2aWEgYSBzeXNjdGwgKi8NCisgICAgICAg IHN0YXRlX2NvbnRyb2xfYWxsb2MgPSBjb250aWdtYWxsb2Moc3RhdGVfY29udHJvbF9hbGxvY19s ZW5ndGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1fRlNU RiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTV9XQUlUT0sg fCBNX1pFUk8sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB1 bCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfjB1bCwNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9TSVpFLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsNCisgICAgICAgIGlm IChzdGF0ZV9jb250cm9sX2FsbG9jID09IE5VTEwpIHsNCisgICAgICAgICAgICBlcnJvciA9IDE7 DQorICAgICAgICAgICAgcHJpbnRmKCJUZXN0IEhvb2s6IFNldHVwIEVycm9yLCB1bmFibGUgdG8g YWxsb2NhdGUga2VybmVsIGNvbnRyb2wgbWVtb3J5LlxuIik7DQorICAgICAgICAgICAgZ290byBE b25lOw0KKyAgICAgICAgfQ0KKyAgICAgICAgc3RhdGVfY29udHJvbCA9IHN0YXRlX2NvbnRyb2xf YWxsb2M7DQorICAgICAgICBzdGF0ZV9jb250cm9sX3BhZGRyID0gdnRvcGh5cyhzdGF0ZV9jb250 cm9sX2FsbG9jKTsNCisNCisgICAgICAgIC8qIFNxdWlycmVsIGF3YXkgdGhlIHByb2Nlc3MgcG1h cCBhbmQgdmFkZHI7IHdlIHVzZSB0aGVzZSB0byBtYWtlIHRoZQ0KKyAgICAgICAgICogdGVzdCBo b29rcyBjb25kaXRpb25hbCBvbmx5IG9uIHNlbGVjdCBhY2Nlc3MgKi8NCisgICAgICAgIHRlc3Rf cG1hcCA9IHZtc3BhY2VfcG1hcChwLT5wX3Ztc3BhY2UpOw0KKyAgICAgICAgdGVzdF92YWRkciA9 IEZTVEZfQ09OU1RBTlRfVkFERFI7DQorDQorICAgICAgICAvKiBDbGVhciB0aGUgZGVidWdnaW5n IG91dCBmcm9tIGFueSBwcmV2b3VzIHJ1bnMgKi8NCisgICAgICAgIGludCBudW07DQorICAgICAg ICBmb3IgKG51bSA9IDA7IG51bSA8IEZTVEZfREVCVUdfTlVNQkVSX0VOVFJJRVM7IG51bSsrKSB7 DQorICAgICAgICAgICAgZGVidWdfZW50cmllc1tudW1dLmRiZ190eXBlID0gRlNURl9ERUJVR19U WVBFX1VOVVNFRDsNCisgICAgICAgIH0NCisNCisgICAgICAgIEZTVEZfREVCVUdfTUlTQygiVGVz dCBIb29rOiBJbml0aWF0ZWQgcGlkPSVkLCBuYW1lPSVzLCBwbWFwPSVwLCB2YWRkcj0weCVqeCwg Ig0KKyAgICAgICAgICAgICAgICAgICAgICAgICJjb250cm9sIHZhZGRyPTB4JWp4LCBjb250cm9s IHBhZGRyPTB4JWp4XG4iLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwNCisgICAgICAg ICAgICAgICAgICAgICAgICBwLT5wX2NvbW0sDQorICAgICAgICAgICAgICAgICAgICAgICAgdGVz dF9wbWFwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICh1aW50bWF4X3QpdGVzdF92YWRkciwN CisgICAgICAgICAgICAgICAgICAgICAgICAodWludG1heF90KXN0YXRlX2NvbnRyb2wsDQorICAg ICAgICAgICAgICAgICAgICAgICAgKHVpbnRtYXhfdClzdGF0ZV9jb250cm9sX3BhZGRyKTsNCisN CisgICAgICAgIERvbmU6DQorDQorICAgICAgICBQUk9DX1VOTE9DSyhwKTsNCisNCisgICAgICAg IHJldHVybiAoZXJyb3IpOw0KK30NCisNCisvKiBUaGUgc3RhdGUvY29udHJvbCByZWdpb24gKi8N Cit2b2xhdGlsZSB1aW50NjRfdCAqIGZzdGZfc3RhdGVfY29udHJvbCh2b2lkKQ0KK3sNCisgICAg ICAgIHJldHVybiAoc3RhdGVfY29udHJvbCk7DQorfQ0KKw0KKy8qIEdldCB0aGUgdHNjIGZyZXF1 ZW5jeSBpbiBzZWNvbmRzICovDQordWludDY0X3QgZnN0Zl90c2NfZnJlcXVlbmN5X3NlY29uZHMo dm9pZCkNCit7DQorICAgICAgICB1aW50NjRfdCBmcmVxID0gYXRvbWljX2xvYWRfYWNxXzY0KCZ0 c2NfZnJlcSk7DQorICAgICAgICByZXR1cm4gKGZyZXEpOw0KK30NCisNCisvKiBBIGZhc3QgcHJl LWRldGVybWluZWQgZGVidWdnaW5nIGZ1bmN0aW9uICovDQordm9pZCBmc3RmX2RlYnVnX2Zhc3Qo Y29uc3QgY2hhciAqIGZpbGUsIGludCBsaW5lLCB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBzdGF0 ZSkNCit7DQorICAgICAgICBpZiAoZGVidWdfdmFsdWUpIHsNCisNCisgICAgICAgICAgICBzdHJ1 Y3QgdGhyZWFkICp0ZCA9IGN1cnRocmVhZDsNCisgICAgICAgICAgICBpZiAoKHRkICE9IE5VTEwp KSB7DQorDQorICAgICAgICAgICAgICAgIGludCBwb3MgPSBGU1RGX0RFQlVHX1BPU0lUSU9OX0lO REVYKGF0b21pY19mZXRjaGFkZF9pbnQoJmRlYnVnX3Bvc2l0aW9uLCAxKSk7DQorDQorICAgICAg ICAgICAgICAgIGRlYnVnX2VudHJpZXNbcG9zXS50c2MgPSBmc3RmX3RzY19hbmRfYXV4KCZkZWJ1 Z19lbnRyaWVzW3Bvc10uYXV4KTsNCisgICAgICAgICAgICAgICAgZGVidWdfZW50cmllc1twb3Nd LnRpZCA9IHRkLT50ZF90aWQ7DQorICAgICAgICAgICAgICAgIGRlYnVnX2VudHJpZXNbcG9zXS5m aWxlID0gZmlsZTsNCisgICAgICAgICAgICAgICAgZGVidWdfZW50cmllc1twb3NdLmxpbmUgPSBs aW5lOw0KKyAgICAgICAgICAgICAgICBkZWJ1Z19lbnRyaWVzW3Bvc10uc3RhdGUgPSBzdGF0ZTsN CisgICAgICAgICAgICAgICAgZGVidWdfZW50cmllc1twb3NdLmRiZ190eXBlID0gdHlwZTsNCisg ICAgICAgICAgICB9DQorICAgICAgICB9DQorfQ0KKw0KKy8qIEEgbWlzYyB0ZXh0IGRlYnVnZ2lu ZyBmdW5jdGlvbiAqLw0KK3ZvaWQgZnN0Zl9kZWJ1Z19taXNjKGNvbnN0IGNoYXIgKiBmaWxlLCBp bnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pDQorew0KKyAgICAgICAgaWYgKGRlYnVnX3Zh bHVlKSB7DQorDQorICAgICAgICAgICAgc3RydWN0IHRocmVhZCAqdGQgPSBjdXJ0aHJlYWQ7DQor ICAgICAgICAgICAgaWYgKCh0ZCAhPSBOVUxMKSkgew0KKw0KKyAgICAgICAgICAgICAgICBjaGFy IGJ1ZmZlcls1MTJdOw0KKyAgICAgICAgICAgICAgICB2YV9saXN0IGFwOw0KKw0KKyAgICAgICAg ICAgICAgICB2YV9zdGFydChhcCwgZm10KTsNCisNCisgICAgICAgICAgICAgICAgdnNucHJpbnRm KGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGZtdCwgYXApOw0KKw0KKyAgICAgICAgICAgICAgICB2 YV9lbmQoYXApOw0KKw0KKyAgICAgICAgICAgICAgICB1aW50NjRfdCBzdGF0ZSA9IGZzdGZfc3Rh dGVfdmFsdWUoKTsNCisNCisgICAgICAgICAgICAgICAgaW50IHBvcyA9IEZTVEZfREVCVUdfUE9T SVRJT05fSU5ERVgoYXRvbWljX2ZldGNoYWRkX2ludCgmZGVidWdfcG9zaXRpb24sIDEpKTsNCisN CisgICAgICAgICAgICAgICAgdWludDMyX3QgYXV4Ow0KKyAgICAgICAgICAgICAgICB1aW50NjRf dCB0c2MgPSBmc3RmX3RzY19hbmRfYXV4KCZhdXgpOw0KKw0KKyAgICAgICAgICAgICAgICBkZWJ1 Z19lbnRyaWVzW3Bvc10uZGJnX3R5cGUgPSBGU1RGX0RFQlVHX1RZUEVfTUlTQ0VMTEFORU9VUzsN CisNCisgICAgICAgICAgICAgICAgc25wcmludGYoZGVidWdfZW50cmllc1twb3NdLm1pc2MsDQor ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRlYnVnX2VudHJpZXNbcG9zXS5taXNjKSwNCisg ICAgICAgICAgICAgICAgICAgICBGU1RGX0RFQlVHX0ZPUk1BVF9TVFIsDQorICAgICAgICAgICAg ICAgICAgICAgdHNjLA0KKyAgICAgICAgICAgICAgICAgICAgIGF1eCwNCisgICAgICAgICAgICAg ICAgICAgICAodGQgPT0gTlVMTCA/IDAgOiB0ZC0+dGRfdGlkKSwNCisgICAgICAgICAgICAgICAg ICAgICAodGQgPT0gTlVMTCA/ICIiIDogdGQtPnRkX25hbWUpLA0KKyAgICAgICAgICAgICAgICAg ICAgIGZzdGZfc3RyaXBfZmlsZV9wYXRoKGZpbGUpLA0KKyAgICAgICAgICAgICAgICAgICAgIGxp bmUsDQorICAgICAgICAgICAgICAgICAgICAgc3RhdGUsDQorICAgICAgICAgICAgICAgICAgICAg YnVmZmVyKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorfQ0KKw0KKy8qIEEgJ2dvdCBo ZXJlJyBkZWJ1Z2dpbmcgZnVuY3Rpb24gKi8NCit2b2lkIGZzdGZfY29uZGl0aW9uYWxfcG9pbnRf ZGVidWcoY29uc3QgY2hhciAqIGZpbGUsIGludCBsaW5lLCBwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0 X3QgdmFkZHIpDQorew0KKyAgICBpZiAoKHBtYXAgIT0gTlVMTCkgJiYNCisgICAgICAgIChwbWFw ID09IHRlc3RfcG1hcCkgJiYNCisgICAgICAgICgoKGRlYnVnX3ZhbHVlICYgRlNURl9TWVNDVExf REVCVUdfSEVBVlkpID09IEZTVEZfU1lTQ1RMX0RFQlVHX0hFQVZZKSB8fA0KKyAgICAgICAgICAo KHRlc3RfdmFkZHIgPD0gdmFkZHIpICYmICh2YWRkciA8ICh0ZXN0X3ZhZGRyICsgUEFHRV9TSVpF KSkpKSkgew0KKw0KKyAgICAgICAgZnN0Zl9kZWJ1Z19taXNjKGZpbGUsDQorICAgICAgICAgICAg ICAgIGxpbmUsDQorICAgICAgICAgICAgICAgICJEZWJ1ZzogcG1hcD0lcCB2YWRkcj0weCVqeFxu IiwNCisgICAgICAgICAgICAgICAgcG1hcCwNCisgICAgICAgICAgICAgICAgdmFkZHIpOw0KKyAg ICB9DQorfQ0KKw0KKy8qIEEgdm1fcGFnZV90IGluZm8gZGVidWdnaW5nIGZ1bmN0aW9uICovDQor c3RhdGljIHZvaWQgZnN0Zl9kZWJ1Z19wYWdlKGNvbnN0IGNoYXIgKiBmaWxlLCBpbnQgbGluZSwg dm1fb2Zmc2V0X3QgdmFkZHIsIHZtX3BhZ2VfdCBtKQ0KK3sNCisgICAgZnN0Zl9kZWJ1Z19taXNj KGZpbGUsDQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSwNCisgICAgICAgICAgICAgICAg ICAgICAgICAiRGVidWc6IFZBZGRyOjB4JWp4IHBhZ2UgJXAgb2JqICVwIHBpZHggMHglanggcGh5 cyAweCVqeCBxICVkIGhvbGQgJWQgd2lyZSAlZCINCisgICAgICAgICAgICAgICAgICAgICAgICAi ICBhZiAweCV4IG9mIDB4JXggZiAweCV4IGFjdCAlZCBidXN5ICV4IHZhbGlkIDB4JXggZGlydHkg MHgleFxuIiwNCisgICAgICAgICAgICAgICAgICAgICAgICAodWludG1heF90KXZhZGRyLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgIG0sDQorICAgICAgICAgICAgICAgICAgICAgICAgbS0+b2Jq ZWN0LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICh1aW50bWF4X3QpbS0+cGluZGV4LA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICh1aW50bWF4X3QpbS0+cGh5c19hZGRyLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgIG0tPnF1ZXVlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIG0tPmhv bGRfY291bnQsDQorICAgICAgICAgICAgICAgICAgICAgICAgbS0+d2lyZV9jb3VudCwNCisgICAg ICAgICAgICAgICAgICAgICAgICBtLT5hZmxhZ3MsDQorICAgICAgICAgICAgICAgICAgICAgICAg bS0+b2ZsYWdzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIG0tPmZsYWdzLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgIG0tPmFjdF9jb3VudCwNCisgICAgICAgICAgICAgICAgICAgICAgICBt LT5idXN5X2xvY2ssDQorICAgICAgICAgICAgICAgICAgICAgICAgbS0+dmFsaWQsDQorICAgICAg ICAgICAgICAgICAgICAgICAgbS0+ZGlydHkpOw0KK30NCisNCisvKiBBIHB0X2VudHJ5X3QgaW5m byBkZWJ1Z2dpbmcgZnVuY3Rpb24gKi8NCit2b2lkIGZzdGZfY29uZGl0aW9uYWxfcHRlX2RlYnVn KGNvbnN0IGNoYXIgKiBmaWxlLCBpbnQgbGluZSwgcG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZh ZGRyLCBwdF9lbnRyeV90IHB0ZSkNCit7DQorICAgIGlmICgocG1hcCAhPSBOVUxMKSAmJg0KKyAg ICAgICAgKHBtYXAgPT0gdGVzdF9wbWFwKSAmJg0KKyAgICAgICAgKCgoZGVidWdfdmFsdWUgJiBG U1RGX1NZU0NUTF9ERUJVR19IRUFWWSkgPT0gRlNURl9TWVNDVExfREVCVUdfSEVBVlkpIHx8DQor ICAgICAgICAgICAgICAoKHRlc3RfdmFkZHIgPD0gdmFkZHIpICYmICh2YWRkciA8ICh0ZXN0X3Zh ZGRyICsgUEFHRV9TSVpFKSkpKSkgew0KKw0KKyAgICAgICAgdm1fcGFnZV90IG0gPSBQSFlTX1RP X1ZNX1BBR0UocHRlICYgUEdfRlJBTUUpOw0KKyAgICAgICAgZnN0Zl9kZWJ1Z19taXNjKGZpbGUs DQorICAgICAgICAgICAgICAgIGxpbmUsDQorICAgICAgICAgICAgICAgICJEZWJ1ZzogSGl0W3Bt YXA6JXAgVkFkZHI6MHglanggUDoweCVqeCBGOiUwMTZseF0gJXN8JXN8JXN8JXN8JXN8JXN8JXN8 JXN8JXN8JXN8JXN8JXN8JXNcbiIsDQorICAgICAgICAgICAgICAgIHBtYXAsDQorICAgICAgICAg ICAgICAgICh1aW50bWF4X3QpdmFkZHIsDQorICAgICAgICAgICAgICAgICh1aW50bWF4X3QpKHB0 ZSAmIFBHX0ZSQU1FKSwNCisgICAgICAgICAgICAgICAgcHRlLA0KKyAgICAgICAgICAgICAgICAo KHB0ZSAmIFBHX1YpID8gICAgICAgICAgICAgIlZhbGlkIiA6ICAgICAgICAgICAgICAgIkludmFs aWQiKSwNCisgICAgICAgICAgICAgICAgKChwdGUgJiBQR19SVykgPyAgICAgICAgICAgICJSZWFk LVdyaXRlIiA6ICAgICAgICAgICJOby1SZWFkLVdyaXRlIiksDQorICAgICAgICAgICAgICAgICgo cHRlICYgUEdfQSkgPyAgICAgICAgICAgICAiQWNjZXNzZWQiIDogICAgICAgICAgICAiTm90LUFj Y2Vzc2VkIiksDQorICAgICAgICAgICAgICAgICgocHRlICYgUEdfTSkgPyAgICAgICAgICAgICAi RGlydHkiIDogICAgICAgICAgICAgICAiTm90LURpcnR5IiksDQorICAgICAgICAgICAgICAgICgo cHRlICYgUEdfUFMpID8gICAgICAgICAgICAiNEstUGFnZS1TaXplIiA6ICAgICAgICAiMk0tUGFn ZS1TaXplIiksDQorICAgICAgICAgICAgICAgICgocHRlICYgUEdfRykgPyAgICAgICAgICAgICAi R2xvYmFsIiA6ICAgICAgICAgICAgICAiTm90LUdsb2JhbCIpLA0KKyAgICAgICAgICAgICAgICAo KHB0ZSAmIFBHX0FWQUlMMSkgPyAgICAgICAgIkF2YWlsMSIgOiAgICAgICAgICAgICAgIk5vLUF2 YWlsMSIpLA0KKyAgICAgICAgICAgICAgICAoKHB0ZSAmIFBHX0FWQUlMMikgPyAgICAgICAgIk1h bmFnZWQiIDogICAgICAgICAgICAgIlVubWFuYWdlZCIpLA0KKyAgICAgICAgICAgICAgICAoKHB0 ZSAmIFBHX0FWQUlMMykgPyAgICAgICAgIldpcmVkIiA6ICAgICAgICAgICAgICAgIk5vdC1XaXJl ZCIpLA0KKyAgICAgICAgICAgICAgICAoKHB0ZSAmIFBHX1UpID8gICAgICAgICAgICAgIlVzZXIt U3VwZXJ2aXNvciIgOiAgICAgIk5vLVVzZXItU3VwZXJ2aXNvciIpLA0KKyAgICAgICAgICAgICAg ICAoKHB0ZSAmIFBHX05DX1BXVCkgPyAgICAgICAgIldyaXRlLVRocm91Z2giIDogICAgICAgIk5v LVdyaXRlLVRocm91Z2giKSwNCisgICAgICAgICAgICAgICAgKChwdGUgJiBQR19OQ19QQ0QpID8g ICAgICAgICJDYWNoZS1EaXNhYmxlIiA6ICAgICAgICJOby1DYWNoZS1EaXNhYmxlIiksDQorICAg ICAgICAgICAgICAgICgocHRlICYgUEdfUFRFX1BBVCkgPyAgICAgICAiUEFULUluZGV4IiA6ICAg ICAgICAgICAiTm8tUEFULUluZGV4IikpOw0KKyAgICAgICAgaWYgKG0gIT0gTlVMTCkNCisgICAg ICAgIHsNCisgICAgICAgICAgICBmc3RmX2RlYnVnX3BhZ2UoZmlsZSwgbGluZSwgdmFkZHIsIG0p Ow0KKyAgICAgICAgfQ0KKyAgICB9DQorfQ0KKw0KKy8qIEEgJ2dvdCBoZXJlJyBkZWJ1Z2dpbmcg ZnVuY3Rpb24gKi8NCit2b2lkIGZzdGZfY29uZGl0aW9uYWxfZmF1bHRfZGVidWcoY29uc3QgY2hh ciAqIGZpbGUsIGludCBsaW5lLCBwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmFkZHIsIHZtX3By b3RfdCBwcm90KQ0KK3sNCisgICAgaWYgKChwbWFwICE9IE5VTEwpICYmDQorICAgICAgICAocG1h cCA9PSB0ZXN0X3BtYXApICYmDQorICAgICAgICAoKChkZWJ1Z192YWx1ZSAmIEZTVEZfU1lTQ1RM X0RFQlVHX0hFQVZZKSA9PSBGU1RGX1NZU0NUTF9ERUJVR19IRUFWWSkgfHwNCisgICAgICAgICAg KCh0ZXN0X3ZhZGRyIDw9IHZhZGRyKSAmJiAodmFkZHIgPCAodGVzdF92YWRkciArIFBBR0VfU0la RSkpKSkpIHsNCisNCisgICAgICAgIGZzdGZfZGVidWdfbWlzYyhmaWxlLA0KKyAgICAgICAgICAg ICAgICBsaW5lLA0KKyAgICAgICAgICAgICAgICAiRGVidWc6IHBtYXA9JXAgdmFkZHI9MHglangg cHJvdD0lc3wlc3wlc3wlc3wlc1xuIiwNCisgICAgICAgICAgICAgICAgcG1hcCwNCisgICAgICAg ICAgICAgICAgdmFkZHIsDQorICAgICAgICAgICAgICAgICgocHJvdCAmIFZNX1BST1RfUkVBRCkg PyAiUmVhZCIgOiAiTm8tUmVhZCIpLA0KKyAgICAgICAgICAgICAgICAoKHByb3QgJiBWTV9QUk9U X1dSSVRFKSA/ICJXcml0ZSIgOiAiTm8tV3JpdGUiKSwNCisgICAgICAgICAgICAgICAgKChwcm90 ICYgVk1fUFJPVF9FWEVDVVRFKSA/ICJFeGVjdXRlIiA6ICJOby1FeGVjdXRlIiksDQorICAgICAg ICAgICAgICAgICgocHJvdCAmIFZNX1BST1RfQ09QWSkgPyAiQ29weSIgOiAiTm8tQ29weSIpLA0K KyAgICAgICAgICAgICAgICAoKHByb3QgJiBWTV9QUk9UX0ZBVUxUX0xPT0tVUCkgPyAiTG9va3Vw IiA6ICJOby1Mb29rdXAiKSk7DQorICAgIH0NCit9DQorDQorLyogQSBoZWxwZXIgdG8gY2hlY2sg aWYgYSBzdXBwbGllZCBwbWFwIGFuZCB2YWRkciBtYXRjaCBhbmQgc2hvdWxkIHRyaWdnZXIgdGVz dCBjb2RlICovDQorc3RhdGljIGludCBmc3RmX2NvbmRpdGlvbmFsKHBtYXBfdCBwbWFwLCB2bV9v ZmZzZXRfdCB2YWRkcikNCit7DQorICAgIGlmICgocG1hcCAhPSBOVUxMKSAmJg0KKyAgICAgICAg KHBtYXAgPT0gdGVzdF9wbWFwKSAmJg0KKyAgICAgICAgKCh0ZXN0X3ZhZGRyIDw9IHZhZGRyKSAm JiAodmFkZHIgPCAodGVzdF92YWRkciArIFBBR0VfU0laRSkpKSkgew0KKw0KKyAgICAgICAgcmV0 dXJuICgxKTsNCisgICAgfQ0KKyAgICByZXR1cm4gKDApOw0KK30NCisNCisvKiBEZWJ1ZyAmIGFk dmFuY2UgdGhlIHN0YXRlIG9uY2UgYXQgdGhlIGFwcHJvcHJpYXRlIGVycm9yLWdlbiBzdGF0ZSAq Lw0KK2ludCBmc3RmX2NvbmRpdGlvbmFsX3BtYXBtb2RfYWR2YW5jZShjb25zdCBjaGFyICogZmls ZSwgaW50IGxpbmUsIHZtX29mZnNldF90IHZhZGRyLCB2bV9wYWdlX3QgbSkNCit7DQorICAgICAg ICBpbnQgc3RhdHVzID0gMDsNCisgICAgICAgIHBtYXBfdCBwbWFwID0gUENQVV9HRVQoY3VycG1h cCk7DQorICAgICAgICBpZiAoZnN0Zl9jb25kaXRpb25hbChwbWFwLCB2YWRkcikpIHsNCisNCisg ICAgICAgICAgICBpZiAoc3RhdGVfY29udHJvbCkgew0KKw0KKyAgICAgICAgICAgICAgICB1aW50 NjRfdCBvbGRfdmFsOw0KKyAgICAgICAgICAgICAgICB1aW50NjRfdCBuZXdfdmFsOw0KKw0KKyAg ICAgICAgICAgICAgICBmc3RmX2RlYnVnX2Zhc3QoZmlsZSwNCisgICAgICAgICAgICAgICAgICAg ICAgICBsaW5lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZTVEZfREVCVUdfVFlQRV9UUkFO U0lUSU9OX0lOSVRJQUwsDQorICAgICAgICAgICAgICAgICAgICAgICAgZnN0Zl9zdGF0ZV92YWx1 ZSgpKTsNCisNCisgICAgICAgICAgICAgICAgZnN0Zl9kZWJ1Z19wYWdlKGZpbGUsIGxpbmUsIHZh ZGRyLCBtKTsNCisNCisgICAgICAgICAgICAgICAgZG8NCisgICAgICAgICAgICAgICAgew0KKyAg ICAgICAgICAgICAgICAgICAgb2xkX3ZhbCA9IGF0b21pY19sb2FkX2FjcV82NChzdGF0ZV9jb250 cm9sKTsNCisgICAgICAgICAgICAgICAgICAgIGlmICgob2xkX3ZhbCAmIEZTVEZfU1RBVEVfQklU U19QUklNRUQpICE9IEZTVEZfU1RBVEVfQklUU19QUklNRUQpDQorICAgICAgICAgICAgICAgICAg ICB7DQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsNCisgICAgICAgICAgICAg ICAgICAgICAgICBnb3RvIERvbmU7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAg ICAgICAgICAgICBpZiAob2xkX3ZhbCAmIEZTVEZfU1RBVEVfQklUU19GSU5JU0hFRCkNCisgICAg ICAgICAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwOw0K KyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsNCisgICAgICAgICAgICAgICAgICAg IH0NCisgICAgICAgICAgICAgICAgICAgIG5ld192YWwgPSAob2xkX3ZhbCB8IEZTVEZfU1RBVEVf QklUX0tFUk5FTF9QTUFQTU9EKTsNCisNCisgICAgICAgICAgICAgICAgfSB3aGlsZSAoIWF0b21p Y19jbXBzZXRfNjQoc3RhdGVfY29udHJvbCwgb2xkX3ZhbCwgbmV3X3ZhbCkpOw0KKw0KKyAgICAg ICAgICAgICAgICBmc3RmX2RlYnVnX2Zhc3QoZmlsZSwNCisgICAgICAgICAgICAgICAgICAgICAg ICBsaW5lLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZTVEZfREVCVUdfVFlQRV9UUkFOU0lU SU9OX0ZJTkFMLA0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld192YWwpOw0KKyAgICAgICAg ICAgICAgICBzdGF0dXMgPSAxOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisNCisgICAg ICAgIERvbmU6DQorDQorICAgICAgICByZXR1cm4gKHN0YXR1cyk7DQorfQ0KKw0KKw0KKw0KKw0K Kw0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KKw0KICNpZiBkZWZpbmVkKElO VkFSSUFOVFMpIHx8IGRlZmluZWQoSU5WQVJJQU5UX1NVUFBPUlQpDQogdm9pZA0KIHZtX3BhZ2Vf YXNzZXJ0X2xvY2tlZF9LQkkodm1fcGFnZV90IG0sIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5l KQ0KZGlmZiAtLWdpdCBhL3N5cy92bS92bV9wYWdlLmggYi9zeXMvdm0vdm1fcGFnZS5oDQppbmRl eCA2Y2E4MDhiLi5lMjUwYmUwIDEwMDY0NA0KLS0tIGEvc3lzL3ZtL3ZtX3BhZ2UuaA0KKysrIGIv c3lzL3ZtL3ZtX3BhZ2UuaA0KQEAgLTQ1Miw2ICs0NTIsMTEgQEAgbWFsbG9jMnZtX2ZsYWdzKGlu dCBtYWxsb2NfZmxhZ3MpDQogI2RlZmluZQlQU19BTExfVkFMSUQJMHgyDQogI2RlZmluZQlQU19O T05FX0JVU1kJMHg0DQogDQordm9pZCBmc3RmX2NvbmRpdGlvbmFsX3BvaW50X2RlYnVnKGNvbnN0 IGNoYXIgKiBmaWxlLCBpbnQgbGluZSwgcG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhZGRyKTsN Cit2b2lkIGZzdGZfY29uZGl0aW9uYWxfZmF1bHRfZGVidWcoY29uc3QgY2hhciAqIGZpbGUsIGlu dCBsaW5lLCBwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmFkZHIsIHZtX3Byb3RfdCBwcm90KTsN Cit2b2lkIGZzdGZfY29uZGl0aW9uYWxfcHRlX2RlYnVnKGNvbnN0IGNoYXIgKiBmaWxlLCBpbnQg bGluZSwgcG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhZGRyLCBwdF9lbnRyeV90IHB0ZSk7DQor aW50IGZzdGZfY29uZGl0aW9uYWxfcG1hcG1vZF9hZHZhbmNlKGNvbnN0IGNoYXIgKiBmaWxlLCBp bnQgbGluZSwgdm1fb2Zmc2V0X3QgdmFkZHIsIHZtX3BhZ2VfdCBtKTsNCisNCiB2b2lkIHZtX3Bh Z2VfYnVzeV9kb3duZ3JhZGUodm1fcGFnZV90IG0pOw0KIHZvaWQgdm1fcGFnZV9idXN5X3NsZWVw KHZtX3BhZ2VfdCBtLCBjb25zdCBjaGFyICptc2csIGJvb2wgbm9uc2hhcmVkKTsNCiB2b2lkIHZt X3BhZ2VfZmxhc2godm1fcGFnZV90IG0pOw0KLS0gDQoyLjEwLjINCg0K --_003_5A82AB7C6090404dellcom_ Content-Type: text/x-patch; name="0002-TRIAL-Double-invalidate-when-finishing-COW-pmap-upda.patch" Content-Description: 0002-TRIAL-Double-invalidate-when-finishing-COW-pmap-upda.patch Content-Disposition: attachment; filename="0002-TRIAL-Double-invalidate-when-finishing-COW-pmap-upda.patch"; size=3688; creation-date="Tue, 13 Feb 2018 09:10:21 GMT"; modification-date="Tue, 13 Feb 2018 09:10:21 GMT" Content-ID: <66A7CD139204C34089CCB0755404B2EF@dell.com> Content-Transfer-Encoding: base64 RnJvbSAwMDRkM2U4NzljZGY4OTQ3NzFlMjYwZmFkYWY5MmM0OGU0ODE4MGZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogRWxsaW90dCBSYWJlIDxlbGxpb3R0LnJhYmVAZGVsbC5jb20+ DQpEYXRlOiBTdW4sIDExIEZlYiAyMDE4IDE3OjI5OjE1IC0wNjAwDQpTdWJqZWN0OiBbUEFUQ0gg Mi8zXSBUUklBTDogRG91YmxlIGludmFsaWRhdGUgd2hlbiBmaW5pc2hpbmcgQ09XIHBtYXAgdXBk YXRlDQoNCldoZW4gYSBwcm9jZXNzIGZvcmtzIHRoZSBmaXJzdCB3cml0ZSB0byBhIHBhZ2Ugb2Yg bWVtb3J5IHN0YXJ0cyBhIGNvcHktb24td3JpdGUNCm9wZXJhdGlvbi4gIFRoZSBwbWFwIGlzIGN1 cnJlbnRseSB1cGRhdGVkIHdpdGggdGhlIG5ldyBwaHlzaWNhbCBhZGRyZXNzIGFuZCB0aGUNCndy aXRhYmxlIHN0YXR1cyBpbiBhIHNpbmdsZSBhdG9taWMgb3BlcmF0aW9uIGZvbGxvd2VkIGJ5IHRo ZSBuZWNlc3NhcnkgVExCDQppbnZhbGlkYXRpb25zLiAgTWFya2luZyB0aGUgcGFnZSB3cml0ZWFi bGUgYmVmb3JlIHRoZSBpbnZhbGlkYXRpb25zIGFyZSBjb21wbGV0ZQ0KYWxsb3dzIHRoZSBwYWdl IGNvbnRlbnRzIHRvIGJlIGNoYW5nZWQgYmVmb3JlIHRoZXkgYXJlIGd1YXJhbnRlZWQgdG8gYmUg ZnVsbHkNCnZpc2libGUuICBUaGlzIGNhbiByZXN1bHQgaW4gc3VidGxlIG1lbW9yeSBjb3JydXB0 aW9ucy4NCg0KSGVyZSBpcyBhIHNpbXBsaWZpZWQgZXhhbXBsZSBvZiB3aGF0IGNhbiBvY2N1cjoN Cg0KICArQSBwcm9jZXNzIGlzIGZvcmtlZCB3aGljaCB0cmFuc2l0aW9ucyBhIG1hcCBlbnRyeSB0 byBDT1cNCiAgK1RocmVhZCBBIHdyaXRlcyB0byBhIHBhZ2Ugb24gdGhlIG1hcCBlbnRyeSwgZmF1 bHRzLCB1cGRhdGVzIHRoZSBwbWFwIHRvDQogICB3cml0YWJsZSBhdCBhIG5ldyBwaHlzIGFkZHIs IGFuZCBzdGFydHMgVExCIGludmFsaWRhdGlvbnMuLi4NCiAgK1RocmVhZCBCIGFjcXVpcmVzIGEg bG9jaywgd3JpdGVzIHRvIGEgbG9jYXRpb24gb24gdGhlIG5ldyBwaHlzIGFkZHIsDQogICBhbmQg cmVsZWFzZXMgdGhlIGxvY2sNCiAgK1RocmVhZCBDIGFjcXVpcmVzIHRoZSBsb2NrLCByZWFkcyBm cm9tIHRoZSBsb2NhdGlvbiBvbiB0aGUgb2xkIHBoeXMgYWRkci4uLg0KICArVGhyZWFkIEEgLi4u Y29udGludWVzIHRoZSBUTEIgaW52YWxpZGF0aW9ucyB3aGljaCBhcmUgY29tcGxldGVkDQogICtU aHJlYWQgQyAuLi5yZWFkcyBmcm9tIHRoZSBsb2NhdGlvbiBvbiB0aGUgbmV3IHBoeXMgYWRkciwg YW5kIHJlbGVhc2VzDQogICB0aGUgbG9jaw0KDQpJbiB0aGlzIGV4YW1wbGUgVGhyZWFkIEIgYW5k IEMgbG9jaywgdXNlIG1lbW9yeSBhbmQgdW5sb2NrIHByb3Blcmx5IGFuZCBuZWl0aGVyDQpvd24g dGhlIGxvY2sgYXQgdGhlIHNhbWUgdGltZS4gIFRocmVhZCBDIHNlZXMgZGF0YSBwcm90ZWN0ZWQg YnkgYSBsb2NrIGNoYW5nZQ0KYmVuZWF0aCBpdCB3aGlsZSBpdCBpcyB0aGUgbG9jayBvd25lci4g IFRocmVhZCBBIHdhcyB3cml0aW5nIHNvbWV3aGVyZSBlbHNlIG9uDQp0aGUgcGFnZSBhbmQgc28g bmV2ZXIgbmVlZGVkIHRoZSBsb2NrLg0KDQpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIGEgZG91Ymxl LXVwZGF0ZS1pbnZhbGlkYXRpb24gZm9yIHRoZSBzY2VuYXJpbyBhYm92ZS4gIFRoZQ0KcG1hcCB1 cGRhdGUgd2lsbCBmaXJzdCBhcHBseSB0aGUgbmV3IGFkZHJlc3MgaW4gYSByZWFkLW9ubHkgc3Rh dGUgYW5kIHBlcmZvcm0gdGhlDQpUTEIgaW52YWxpZGF0aW9ucy4gIEltbWVkaWF0ZWx5IGFmdGVy d2FyZHMsIHRoZSBwbWFwIHdpbGwgYmUgdXBkYXRlZCBhZ2FpbiBtYXJraW5nDQp0aGUgcmVnaW9u IGFzIHdyaXRlYWJsZS4gIFRoaXMgc3RyYXRlZ3kgZW5zdXJlcyB0aGUgcGFnZSBjb250ZW50cyBh cmUgaW1tdXRhYmxlDQp1bnRpbCBhbGwgQ1BVcyBrbm93IHRoZSBjb3JyZWN0IGxvY2F0aW9uLg0K LS0tDQogc3lzL2FtZDY0L2FtZDY0L3BtYXAuYyB8IDE5ICsrKysrKysrKysrKysrKysrKy0NCiAx IGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KDQpkaWZmIC0t Z2l0IGEvc3lzL2FtZDY0L2FtZDY0L3BtYXAuYyBiL3N5cy9hbWQ2NC9hbWQ2NC9wbWFwLmMNCmlu ZGV4IDdiYjljMWIuLmFhOTFjYjEgMTAwNjQ0DQotLS0gYS9zeXMvYW1kNjQvYW1kNjQvcG1hcC5j DQorKysgYi9zeXMvYW1kNjQvYW1kNjQvcG1hcC5jDQpAQCAtNDYzOCw3ICs0NjM4LDcgQEAgcG1h cF9lbnRlcihwbWFwX3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsIHZtX3BhZ2VfdCBtLCB2bV9wcm90 X3QgcHJvdCwNCiAJdm1fcGFkZHJfdCBvcGEsIHBhOw0KIAl2bV9wYWdlX3QgbXB0ZSwgb207DQog CWludCBydjsNCi0JYm9vbGVhbl90IG5vc2xlZXA7DQorCWJvb2xlYW5fdCBub3NsZWVwLCBkZWxh eXJ3Ow0KIA0KIAlQR19BID0gcG1hcF9hY2Nlc3NlZF9iaXQocG1hcCk7DQogCVBHX0cgPSBwbWFw X2dsb2JhbF9iaXQocG1hcCk7DQpAQCAtNDcyOCw2ICs0NzI4LDcgQEAgcG1hcF9lbnRlcihwbWFw X3QgcG1hcCwgdm1fb2Zmc2V0X3QgdmEsIHZtX3BhZ2VfdCBtLCB2bV9wcm90X3QgcHJvdCwNCiAJ CXBhbmljKCJwbWFwX2VudGVyOiBpbnZhbGlkIHBhZ2UgZGlyZWN0b3J5IHZhPSUjbHgiLCB2YSk7 DQogDQogCW9yaWdwdGUgPSAqcHRlOw0KKwlkZWxheXJ3ID0gMDsNCiANCiAJLyoNCiAJICogSXMg dGhlIHNwZWNpZmllZCB2aXJ0dWFsIGFkZHJlc3MgYWxyZWFkeSBtYXBwZWQ/DQpAQCAtNDc2OCw2 ICs0NzY5LDExIEBAIHBtYXBfZW50ZXIocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhLCB2bV9w YWdlX3QgbSwgdm1fcHJvdF90IHByb3QsDQogCQkJaWYgKCgob3JpZ3B0ZSBeIG5ld3B0ZSkgJiB+ KFBHX00gfCBQR19BKSkgPT0gMCkNCiAJCQkJZ290byB1bmNoYW5nZWQ7DQogCQkJZ290byB2YWxp ZGF0ZTsNCisJCX0gZWxzZSBpZiAoKChvcmlncHRlICYgUEdfTUFOQUdFRCkgIT0gMCkgJiYNCisJ CQkgICAoKG9yaWdwdGUgJiBQR19SVykgPT0gMCkgJiYNCisJCQkgICAoKG5ld3B0ZSAmIFBHX1JX KSAhPSAwKSkgew0KKwkJCW5ld3B0ZSAmPSB+UEdfUlc7DQorCQkJZGVsYXlydyA9IDE7DQogCQl9 DQogCX0gZWxzZSB7DQogCQkvKg0KQEAgLTQ4NDEsNiArNDg0NywxNyBAQCBwbWFwX2VudGVyKHBt YXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgdm1fcGFnZV90IG0sIHZtX3Byb3RfdCBwcm90LA0K IAkJCSAqLw0KIAkJCWdvdG8gdW5jaGFuZ2VkOw0KIAkJfQ0KKwkJaWYgKGRlbGF5cncpIHsNCisJ CQkvKg0KKwkJCSAqIElmIGJvdGggdGhlIHBoeXNpY2FsIGFkZHJlc3MgaGFzIGNoYW5nZWQgYW5k IHdlJ3JlIGFkZGluZw0KKwkJCSAqIFJXLCB3ZSBkbyBhIHR3by1zdGFnZSB1cGRhdGUgc28gdGhl IHJlZ2lvbiBpcyBpbW11dGFibGUNCisJCQkgKiB1bnRpbCBhbGwgQ1BVcyBoYXZlIHZpc2liaWxp dHkgdG8gdGhlIG5ldyBhZGRyZXNzLg0KKwkJCSAqLw0KKwkJCWlmICgob3JpZ3B0ZSAmIFBHX0Ep ICE9IDApDQorCQkJCXBtYXBfaW52YWxpZGF0ZV9wYWdlKHBtYXAsIHZhKTsNCisJCQluZXdwdGUg fD0gUEdfUlc7DQorCQkJb3JpZ3B0ZSA9IHB0ZV9sb2FkX3N0b3JlKHB0ZSwgbmV3cHRlKTsNCisJ CX0NCiAJCWlmICgob3JpZ3B0ZSAmIFBHX0EpICE9IDApDQogCQkJcG1hcF9pbnZhbGlkYXRlX3Bh Z2UocG1hcCwgdmEpOw0KIAl9IGVsc2UNCi0tIA0KMi4xMC4yDQoNCg== --_003_5A82AB7C6090404dellcom_-- From owner-freebsd-hackers@freebsd.org Tue Feb 13 12:03:18 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 16DB4F1BAA8 for ; Tue, 13 Feb 2018 12:03:18 +0000 (UTC) (envelope-from mike@sentex.net) Received: from smarthost2.sentex.ca (smarthost2.sentex.ca [IPv6:2607:f3e0:80:80::2]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "smarthost.sentex.ca", Issuer "smarthost.sentex.ca" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 8F68874909; Tue, 13 Feb 2018 12:03:17 +0000 (UTC) (envelope-from mike@sentex.net) Received: from lava.sentex.ca (lava.sentex.ca [IPv6:2607:f3e0:0:5::11]) by smarthost2.sentex.ca (8.15.2/8.15.2) with ESMTPS id w1DC3Glb060917 (version=TLSv1 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Tue, 13 Feb 2018 07:03:16 -0500 (EST) (envelope-from mike@sentex.net) Received: from [192.168.43.26] (saphire3.sentex.ca [192.168.43.26]) by lava.sentex.ca (8.15.2/8.15.2) with ESMTP id w1DC3FLL027639; Tue, 13 Feb 2018 07:03:15 -0500 (EST) (envelope-from mike@sentex.net) Subject: Re: Stale memory during post fork cow pmap update To: Konstantin Belousov , Elliott.Rabe@dell.com Cc: alc@freebsd.org, freebsd-hackers@freebsd.org, markj@freebsd.org, Eric.Van.Gyzen@dell.com References: <5A7E7F2B.80900@dell.com> <20180210111848.GL33564@kib.kiev.ua> <5A7F6A7C.80607@dell.com> <20180210225608.GM33564@kib.kiev.ua> From: Mike Tancsa Organization: Sentex Communications Message-ID: <51a330e1-10fa-e5cb-e8a9-c519680fdbcd@sentex.net> Date: Tue, 13 Feb 2018 07:03:14 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180210225608.GM33564@kib.kiev.ua> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.78 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Feb 2018 12:03:18 -0000 On 2/10/2018 5:56 PM, Konstantin Belousov wrote: > On Sat, Feb 10, 2018 at 09:56:20PM +0000, Elliott.Rabe@dell.com wrote: >> On 02/10/2018 05:18 AM, Konstantin Belousov wrote: >>> On Sat, Feb 10, 2018 at 05:12:11AM +0000, Elliott.Rabe@dell.com wrote: >>>> Greetings- >>>> >>>> I've been hunting for the root cause of elusive, slight memory >>>> corruptions in a large, complex process that manages many threads. All >>>> failures and experimentation thus far has been on x86_64 architecture >>>> machines, and pmap_pcid is not in use. >>>> The patch below seems to fix the issues I was seeing in https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225584 at least I have not been able to reproduce it. It would normally take 2-3 builds of net/samba47 to manifest, but I was able to do 70 over night without fail. For some reason, this issue was far more acute on AMD Ryzen CPUs than any of the Intel CPUs I had been testing on. > So I agree that doing two-stage COW, with the first stage copying page > but keeping it read-only, is the right solution. Below is my take. > During the smoke boot, I noted that there is somewhat related issue in > reevaluation of the map entry permissions. > > diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c > index 83e12a588ee..149a15f1d9d 100644 > --- a/sys/vm/vm_fault.c > +++ b/sys/vm/vm_fault.c > @@ -1135,6 +1157,10 @@ RetryFault:; > */ > pmap_copy_page(fs.m, fs.first_m); > fs.first_m->valid = VM_PAGE_BITS_ALL; > + if ((fault_flags & VM_FAULT_WIRE) == 0) { > + prot &= ~VM_PROT_WRITE; > + fault_type &= ~VM_PROT_WRITE; > + } > if (wired && (fault_flags & > VM_FAULT_WIRE) == 0) { > vm_page_lock(fs.first_m); > @@ -1219,6 +1245,12 @@ RetryFault:; > * write-enabled after all. > */ > prot &= retry_prot; > + fault_type &= retry_prot; > + if (prot == 0) { > + release_page(&fs); > + unlock_and_deallocate(&fs); > + goto RetryFault; > + } > } > } > > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > > -- ------------------- Mike Tancsa, tel +1 519 651 3400 x203 Sentex Communications, mike@sentex.net Providing Internet services since 1994 www.sentex.net Cambridge, Ontario Canada From owner-freebsd-hackers@freebsd.org Tue Feb 13 13:30:26 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 908BCF22B62 for ; Tue, 13 Feb 2018 13:30:26 +0000 (UTC) (envelope-from kib@freebsd.org) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id F1A07786F8; Tue, 13 Feb 2018 13:30:25 +0000 (UTC) (envelope-from kib@freebsd.org) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id w1DDUBcX031103 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 13 Feb 2018 15:30:14 +0200 (EET) (envelope-from kib@freebsd.org) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua w1DDUBcX031103 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id w1DDUAYZ031093; Tue, 13 Feb 2018 15:30:10 +0200 (EET) (envelope-from kib@freebsd.org) X-Authentication-Warning: tom.home: kostik set sender to kib@freebsd.org using -f Date: Tue, 13 Feb 2018 15:30:10 +0200 From: Konstantin Belousov To: Elliott.Rabe@dell.com Cc: freebsd-hackers@freebsd.org, Eric.Van.Gyzen@dell.com, alc@FreeBSD.org, markj@FreeBSD.org, truckman@FreeBSD.org Subject: Re: Stale memory during post fork cow pmap update Message-ID: <20180213133010.GD94212@kib.kiev.ua> References: <5A7E7F2B.80900@dell.com> <20180210111848.GL33564@kib.kiev.ua> <5A7F6A7C.80607@dell.com> <20180210225608.GM33564@kib.kiev.ua> <5A82AB7C.6090404@dell.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5A82AB7C.6090404@dell.com> User-Agent: Mutt/1.9.3 (2018-01-21) X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Feb 2018 13:30:26 -0000 On Tue, Feb 13, 2018 at 09:10:21AM +0000, Elliott.Rabe@dell.com wrote: > > On 02/10/2018 04:56 PM, Konstantin Belousov wrote: > > On Sat, Feb 10, 2018 at 09:56:20PM +0000, Elliott.Rabe@dell.com wrote: > >> On 02/10/2018 05:18 AM, Konstantin Belousov wrote: > >>> On Sat, Feb 10, 2018 at 05:12:11AM +0000, Elliott.Rabe@dell.com wrote: > >>>> ... > >>>> I've been hunting for the root cause of elusive, slight memory > >>>> corruptions in a large, complex process that manages many threads. All > >>>> failures and experimentation thus far has been on x86_64 architecture > >>>> machines, and pmap_pcid is not in use. > >>>> ... > >>> It is necessary for you to provide the test and provide > >>> some kind of the test trace or the output which illustrates the issue > >>> you found. > >> Here is the sequence of actions I am referring to. There is only one > >> lock, and all the writes/reads are on one logical page. > >> > >> +The process is forked transitioning a map entry to COW > >> +Thread A writes to a page on the map entry, faults, updates the pmap to > >> writable at a new phys addr, and starts TLB invalidations... > >> +Thread B acquires a lock, writes to a location on the new phys addr, > >> and releases the lock > >> +Thread C acquires the lock, reads from the location on the old phys addr... > >> +Thread A ...continues the TLB invalidations which are completed > >> +Thread C ...reads from the location on the new phys addr, and releases > >> the lock > >> > >> In this example Thread B and C [lock, use and unlock] properly and > >> neither own the lock at the same time. Thread A was writing somewhere > >> else on the page and so never had/needed the lock. Thread B sees a > >> location that is only ever read|modified under a lock change beneath it > >> while it is the lock owner. > > I believe you mean 'Thread C' in the last sentence. > You are correct, I did mean Thread C. > >> I will get a test patch together and make it available as soon as I can. > > Please. > > Sorry for my delayed response; I had been working off a separate project > based on releng/11.1 and it took me longer then I expected to get a dev > rig setup off of master on which I could re-evaluate the situation. > > I am attaching my test apparatus, however, calling it a test is probably > a disservice to tests everywhere. I consider this entire fixture > disposable, so I didn't get carried away trying to properly > style/partition/locate the code. I never wanted anything this > complicated either; it pretty much just evolved into a development aid > to spelunk around in the fault/pmap handling. My attempts thus-far at > reducing the fixture to be user-space only have not been successful. > Additionally, I have noticed that the fixture is /very/ sensitive to any > changes in timing; several of the debugging entries even seem key to > hitting the problem. I didn't have much luck getting the problem to > manifest on a virtual machine guest w/ a VirtualBox host either. For > all of these reasons, I don't think there is value here in trying to use > this as any sort of regression fixture, unless perhaps if someone is > willing to try to turn it into something less ridiculous. Despite all > shortcomings, on my hardware anyways, it is able to reproduce the > example I described pretty much immediately when I use it with the > debugging knob "-v". Instructions and expectations are at the top of the > main test fixture source file. Apparently Ryzen CPUs are able to demonstrate it quite reliably with the python driver for the samba build. It was very surprising to me, esp. because I tried to understand the Ryzen bug for the whole last week and thought that it is more likely CPU store/load inconsistency than a software thing. See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225584. > > I am also attaching a patch that I have been using to prevent the > problem. I was looking at things with a much narrower view and made the > changes directly in pmap_enter. I suspect the internal > double-update-invalidate is slightly better performance wise then taking > two whole faults, but I haven't benchmarked it, it probably doesn't > matter much compared to the cost and frequency of the actual copies, and > it also has the disadvantage of being architecture specific. I also > don't feel like I have enough experience with the vm fault code in > general for my commentary to be very valuable here. However, I do > wonder: 1) if there are any other scenarios where a potentially > accessible page might be undergoing an [address+writable] change in the > same way (this sort of thing seems hard to read out of code), and 2) if > there is ever any legal reason why an accessible page should be > undergoing such a change? If not, perhaps we could come up with an > appropriate sanity-check condition to guard against any cases of this > sort of thing accidentally slipping in the future. I am not sure how to formulate such check. I believe there is now other place in kernel, except the COW handling, which can create similar situation, but I cannot guarantee it. I also believe that the problem exists for all SMP hardware, so fixing pmaps would create a lot of work, which is also quite hard to validate. Note that system generally considers the faults which do not cause disk io as 'easy', they are accounted as the 'soft faults'. Sure, not causing the second fault for write would be more efficient than arranging for it, if only because we would not need to lookup and lock the map and shadow chain of vm objects and pages, but fork is quite costly already and code simplicity there is also important. > > The attached git patches should apply and build cleanly on master commit > fe0ee5c. I have verified at least these three scenarios in my environment: > 1) the fixture alone reproduces the problem. > 2) the fixture with my patch does not reproduce the problem. > 3) the fixture with your patch does not reproduce the problem. I put the review with the patch at https://reviews.freebsd.org/D14347. You have to add yourself as subsriber or reviewer. From owner-freebsd-hackers@freebsd.org Tue Feb 13 18:03:06 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7DDB0F164D3 for ; Tue, 13 Feb 2018 18:03:06 +0000 (UTC) (envelope-from Elliott.Rabe@dell.com) Received: from esa1.dell-outbound.iphmx.com (esa1.dell-outbound.iphmx.com [68.232.153.90]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "*.dell-outbound.iphmx.com", Issuer "Go Daddy Secure Certificate Authority - G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B4FD987AE0; Tue, 13 Feb 2018 18:03:05 +0000 (UTC) (envelope-from Elliott.Rabe@dell.com) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=dell.com; i=@dell.com; q=dns/txt; s=smtpout; t=1518544354; x=1550080354; h=from:cc:to:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=qRr/Bg6EQacNSLcxYA7okJF8BeQtKQwgFS1bBtCY08I=; b=GTkrOV7XeZ11b1/xwAkXTs+tufI8cPVcv2nvCkeHlCw5l2DibGhAG8Mt 2Yf9OSeI/0VcMbKt3gdFvUmAK4UJGp2NmfN2S9zxz/KFpjh43ZOoopYCf jS3Dp/78enp7u34BqWT/DcnMlYSU5EE5tYJyldVYtO0cWxSQI3lrut73G o=; X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2HIBgBaJ4Nah8uZ6ERdHAEBAQQBAQoBA?= =?us-ascii?q?YQoEHAoCoNbmEmCAoEXmFkKI4FegzoCGoJOWBQBAgEBAQEBAQIBAhABAQEKCwk?= =?us-ascii?q?IKC9CEAGBZSIRS1kBAQEBAQEjAg1eAQUjEUQBEAIBCBIGAgIFFgsCAgIHAwIBA?= =?us-ascii?q?gE1Ag4CBIpIELAkghUSiHuCEQEBAQEBBQIBIAWBD4NyghWGbYMvBBmBVhc1gku?= =?us-ascii?q?CZQWkLgmIII1kgh+KQ4diixSCawOKFoE8NoFzcIMZgmSCEngBh2mECSyBBoEXA?= =?us-ascii?q?QEB?= X-IPAS-Result: =?us-ascii?q?A2HIBgBaJ4Nah8uZ6ERdHAEBAQQBAQoBAYQoEHAoCoNbmEm?= =?us-ascii?q?CAoEXmFkKI4FegzoCGoJOWBQBAgEBAQEBAQIBAhABAQEKCwkIKC9CEAGBZSIRS?= =?us-ascii?q?1kBAQEBAQEjAg1eAQUjEUQBEAIBCBIGAgIFFgsCAgIHAwIBAgE1Ag4CBIpIELA?= =?us-ascii?q?kghUSiHuCEQEBAQEBBQIBIAWBD4NyghWGbYMvBBmBVhc1gkuCZQWkLgmIII1kg?= =?us-ascii?q?h+KQ4diixSCawOKFoE8NoFzcIMZgmSCEngBh2mECSyBBoEXAQEB?= Received: from esa5.dell-outbound2.iphmx.com ([68.232.153.203]) by esa1.dell-outbound.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Feb 2018 11:52:27 -0600 From: Cc: , , , Received: from ausxippc106.us.dell.com ([143.166.85.156]) by esa5.dell-outbound2.iphmx.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Feb 2018 23:56:22 +0600 X-LoopCount0: from 10.166.135.94 X-IronPort-AV: E=Sophos;i="5.46,508,1511848800"; d="scan'208";a="213943789" X-DLP: DLP_GlobalPCIDSS To: Subject: Re: Stale memory during post fork cow pmap update Thread-Topic: Stale memory during post fork cow pmap update Thread-Index: AQHToi21ONrV41etXEyYDT4ce+JxhKOd4hEAgACyFgCAABC/AIAD0EUAgABImACAAEw1gA== Date: Tue, 13 Feb 2018 18:02:56 +0000 Message-ID: <5A83284F.5070208@dell.com> References: <5A7E7F2B.80900@dell.com> <20180210111848.GL33564@kib.kiev.ua> <5A7F6A7C.80607@dell.com> <20180210225608.GM33564@kib.kiev.ua> <5A82AB7C.6090404@dell.com> <20180213133010.GD94212@kib.kiev.ua> In-Reply-To: <20180213133010.GD94212@kib.kiev.ua> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.143.18.86] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Feb 2018 18:03:06 -0000 DQpPbiAwMi8xMy8yMDE4IDA3OjMwIEFNLCBLb25zdGFudGluIEJlbG91c292IHdyb3RlOg0KPiBB cHBhcmVudGx5IFJ5emVuIENQVXMgYXJlIGFibGUgdG8gZGVtb25zdHJhdGUgaXQgcXVpdGUgcmVs aWFibHkgd2l0aCB0aGUNCj4gcHl0aG9uIGRyaXZlciBmb3IgdGhlIHNhbWJhIGJ1aWxkLiAgSXQg d2FzIHZlcnkgc3VycHJpc2luZyB0byBtZSwgZXNwLg0KPiBiZWNhdXNlIEkgdHJpZWQgdG8gdW5k ZXJzdGFuZCB0aGUgUnl6ZW4gYnVnIGZvciB0aGUgd2hvbGUgbGFzdCB3ZWVrIGFuZA0KPiB0aG91 Z2h0IHRoYXQgaXQgaXMgbW9yZSBsaWtlbHkgQ1BVIHN0b3JlL2xvYWQgaW5jb25zaXN0ZW5jeSB0 aGFuIGEgc29mdHdhcmUNCj4gdGhpbmcuICBTZWUgaHR0cHM6Ly9idWdzLmZyZWVic2Qub3JnL2J1 Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMjU1ODQuDQpDb29sLCBpdCBpcyBnb29kIHRvIGhhdmUg b3RoZXIgdmFsaWRhdGlvbnMuICBBcyBmb3IgdGhlIGdvb3NlLWNoYXNlLCANCml0J3MgdG90YWxs eSB1bmRlcnN0YW5kYWJsZTsgdGhlIHN1YnRsZSBuYXR1cmUgb2YgdGhlIGNvcnJ1cHRpb25zIChp ZS4gDQpzdGFsZSByZWFkcykgb2Z0ZW4gY2F1c2VzIHRoZSBzeW1wdG9tcyB0byBtYW5pZmVzdCBh cyBhbiANCk1QLWNhY2hpbmctc3RvcmUvbG9hZCBwcm9ibGVtLg0KPj4gSSBhbSBhbHNvIGF0dGFj aGluZyBhIHBhdGNoIHRoYXQgSSBoYXZlIGJlZW4gdXNpbmcgdG8gcHJldmVudCB0aGUNCj4+IHBy b2JsZW0uICBJIHdhcyBsb29raW5nIGF0IHRoaW5ncyB3aXRoIGEgbXVjaCBuYXJyb3dlciB2aWV3 IGFuZCBtYWRlIHRoZQ0KPj4gY2hhbmdlcyBkaXJlY3RseSBpbiBwbWFwX2VudGVyLiAgSSBzdXNw ZWN0IHRoZSBpbnRlcm5hbA0KPj4gZG91YmxlLXVwZGF0ZS1pbnZhbGlkYXRlIGlzIHNsaWdodGx5 IGJldHRlciBwZXJmb3JtYW5jZSB3aXNlIHRoZW4gdGFraW5nDQo+PiB0d28gd2hvbGUgZmF1bHRz LCBidXQgSSBoYXZlbid0IGJlbmNobWFya2VkIGl0LCBpdCBwcm9iYWJseSBkb2Vzbid0DQo+PiBt YXR0ZXIgbXVjaCBjb21wYXJlZCB0byB0aGUgY29zdCBhbmQgZnJlcXVlbmN5IG9mIHRoZSBhY3R1 YWwgY29waWVzLCBhbmQNCj4+IGl0IGFsc28gaGFzIHRoZSBkaXNhZHZhbnRhZ2Ugb2YgYmVpbmcg YXJjaGl0ZWN0dXJlIHNwZWNpZmljLiAgSSBhbHNvDQo+PiBkb24ndCBmZWVsIGxpa2UgSSBoYXZl IGVub3VnaCBleHBlcmllbmNlIHdpdGggdGhlIHZtIGZhdWx0IGNvZGUgaW4NCj4+IGdlbmVyYWwg Zm9yIG15IGNvbW1lbnRhcnkgdG8gYmUgdmVyeSB2YWx1YWJsZSBoZXJlLiAgSG93ZXZlciwgSSBk bw0KPj4gd29uZGVyOiAxKSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHNjZW5hcmlvcyB3aGVyZSBh IHBvdGVudGlhbGx5DQo+PiBhY2Nlc3NpYmxlIHBhZ2UgbWlnaHQgYmUgdW5kZXJnb2luZyBhbiBb YWRkcmVzcyt3cml0YWJsZV0gY2hhbmdlIGluIHRoZQ0KPj4gc2FtZSB3YXkgKHRoaXMgc29ydCBv ZiB0aGluZyBzZWVtcyBoYXJkIHRvIHJlYWQgb3V0IG9mIGNvZGUpLCBhbmQgMikgaWYNCj4+IHRo ZXJlIGlzIGV2ZXIgYW55IGxlZ2FsIHJlYXNvbiB3aHkgYW4gYWNjZXNzaWJsZSBwYWdlIHNob3Vs ZCBiZQ0KPj4gdW5kZXJnb2luZyBzdWNoIGEgY2hhbmdlPyAgSWYgbm90LCBwZXJoYXBzIHdlIGNv dWxkIGNvbWUgdXAgd2l0aCBhbg0KPj4gYXBwcm9wcmlhdGUgc2FuaXR5LWNoZWNrIGNvbmRpdGlv biB0byBndWFyZCBhZ2FpbnN0IGFueSBjYXNlcyBvZiB0aGlzDQo+PiBzb3J0IG9mIHRoaW5nIGFj Y2lkZW50YWxseSBzbGlwcGluZyBpbiB0aGUgZnV0dXJlLg0KPiBJIGFtIG5vdCBzdXJlIGhvdyB0 byBmb3JtdWxhdGUgc3VjaCBjaGVjay4gSSBiZWxpZXZlIHRoZXJlIGlzIG5vdyBvdGhlcg0KPiBw bGFjZSBpbiBrZXJuZWwsIGV4Y2VwdCB0aGUgQ09XIGhhbmRsaW5nLCB3aGljaCBjYW4gY3JlYXRl IHNpbWlsYXINCj4gc2l0dWF0aW9uLCBidXQgSSBjYW5ub3QgZ3VhcmFudGVlIGl0Lg0KPg0KPiBJ IGFsc28gYmVsaWV2ZSB0aGF0IHRoZSBwcm9ibGVtIGV4aXN0cyBmb3IgYWxsIFNNUCBoYXJkd2Fy ZSwgc28gZml4aW5nDQo+IHBtYXBzIHdvdWxkIGNyZWF0ZSBhIGxvdCBvZiB3b3JrLCB3aGljaCBp cyBhbHNvIHF1aXRlIGhhcmQgdG8gdmFsaWRhdGUuDQo+IE5vdGUgdGhhdCBzeXN0ZW0gZ2VuZXJh bGx5IGNvbnNpZGVycyB0aGUgZmF1bHRzIHdoaWNoIGRvIG5vdCBjYXVzZSBkaXNrDQo+IGlvIGFz ICdlYXN5JywgdGhleSBhcmUgYWNjb3VudGVkIGFzIHRoZSAnc29mdCBmYXVsdHMnLiAgU3VyZSwg bm90IGNhdXNpbmcNCj4gdGhlIHNlY29uZCBmYXVsdCBmb3Igd3JpdGUgd291bGQgYmUgbW9yZSBl ZmZpY2llbnQgdGhhbiBhcnJhbmdpbmcgZm9yIGl0LA0KPiBpZiBvbmx5IGJlY2F1c2Ugd2Ugd291 bGQgbm90IG5lZWQgdG8gbG9va3VwIGFuZCBsb2NrIHRoZSBtYXAgYW5kIHNoYWRvdw0KPiBjaGFp biBvZiB2bSBvYmplY3RzIGFuZCBwYWdlcywgYnV0IGZvcmsgaXMgcXVpdGUgY29zdGx5IGFscmVh ZHkgYW5kIGNvZGUNCj4gc2ltcGxpY2l0eSB0aGVyZSBpcyBhbHNvIGltcG9ydGFudC4NCkZhaXIg ZW5vdWdoLCB0aGFua3MgZm9yIHRoaXMgcGVyc3BlY3RpdmUuICBJIG5vdyBwbGFuIHRvIGFwcGx5 IGp1c3QgeW91ciANCnBhdGNoIGJhY2sgaW4gdGhlIG9yaWdpbmFsIGVudmlyb25tZW50IGFuZCBj b25maXJtIHN0YWJpbGl0eSBmb2xsb3dzLg0KPiBJIHB1dCB0aGUgcmV2aWV3IHdpdGggdGhlIHBh dGNoIGF0IGh0dHBzOi8vcmV2aWV3cy5mcmVlYnNkLm9yZy9EMTQzNDcuDQo+IFlvdSBoYXZlIHRv IGFkZCB5b3Vyc2VsZiBhcyBzdWJzcmliZXIgb3IgcmV2aWV3ZXIuDQpEb25lLCB0aGFua3MgYWdh aW4hDQo= From owner-freebsd-hackers@freebsd.org Tue Feb 13 18:46:42 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 57882F19A0D for ; Tue, 13 Feb 2018 18:46:42 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from mx2.catspoiler.org (mx2.catspoiler.org [IPv6:2607:f740:16::d18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "amnesiac", Issuer "amnesiac" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id DB7D369B13 for ; Tue, 13 Feb 2018 18:46:41 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from gw.catspoiler.org ([76.212.85.177]) by mx2.catspoiler.org (8.15.2/8.15.2) with ESMTPS id w1DIlIZf069377 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL) for ; Tue, 13 Feb 2018 18:47:20 GMT (envelope-from truckman@FreeBSD.org) Received: from mousie.catspoiler.org (mousie.catspoiler.org [192.168.101.2]) by gw.catspoiler.org (8.15.2/8.15.2) with ESMTPS id w1DGecm7013488 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 13 Feb 2018 10:46:32 -0800 (PST) (envelope-from truckman@FreeBSD.org) Date: Tue, 13 Feb 2018 10:46:32 -0800 (PST) From: Don Lewis Subject: rare gmake jobserver hangs, lost SIGCHLD? To: freebsd-hackers@freebsd.org Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=us-ascii Content-Disposition: INLINE X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Feb 2018 18:46:42 -0000 I have ALLOW_MAKE_JOBS=yes in poudriere.conf on my package build machine so that large ports like chromium will build more quickly at the end of the poudriere run when they are the last ports to build. A downside of this is that the load average can get pretty high (in the 40's) earlier in the poudriere run, but I've got plenty of RAM and swap so that doesn't seem to cause any obvious problems. My package build box has an AMD FX-8320E Eight-Core Processor, but I'm breaking in a Ryzen 7 1700X replacement. Both run 12.0-CURRENT, which is updated on an irregular basis every month or so. I generally build a set of ~1700 ports for three different jails, and the average poudriere run probably builds about 500 ports on average. Starting in December 2016, I've seen three build runaway failures on different ports. The first two are on my older machine, the last on the Ryzen. The one thing they all have in common is that there are one or more gmake processes in a wait state and they have a number of zombified child processes: December 2016 - 10-STABLE jail: USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND root 76087 0.0 0.0 9132 1336 0 I+J 8:51AM 0:00.04 /usr/bin/make -C /usr/p orts/multimedia/gstreamer-plugins-good build root 76113 0.0 0.0 14680 1896 0 I+J 8:51AM 0:00.01 - gmake -f Makefile -j8 DESTDIR=/wrkdirs/usr/ports/multimedia/gstreamer-plugins-good/work/stage all root 76129 0.0 0.0 14680 1916 0 I+J 8:51AM 0:00.01 |-- gmake -C videofilte r root 76148 0.0 0.0 0 0 0 Z+J 8:51AM 0:00.59 | `-- root 76156 0.0 0.0 14680 1968 0 I+J 8:51AM 0:00.01 |-- gmake -C audiofx root 76625 0.0 0.0 0 0 0 Z+J 8:51AM 0:00.34 | `-- root 76164 0.0 0.0 14680 1912 0 I+J 8:51AM 0:00.01 |-- gmake -C audioparse rs root 78664 0.0 0.0 0 0 0 Z+J 8:51AM 0:00.43 | `-- root 77796 0.0 0.0 14680 1948 0 I+J 8:51AM 0:00.01 |-- gmake -C debugutils root 78663 0.0 0.0 0 0 0 Z+J 8:51AM 0:00.00 | `-- root 78193 0.0 0.0 14680 1920 0 I+J 8:51AM 0:00.01 |-- gmake -C deinterlac e root 78232 0.0 0.0 14680 1952 0 I+J 8:51AM 0:00.01 | `-- gmake all-am root 78566 0.0 0.0 0 0 0 Z+J 8:51AM 0:01.45 | `-- root 78681 0.0 0.0 14680 1940 0 I+J 8:51AM 0:00.01 |-- gmake -C effectv root 78819 0.0 0.0 0 0 0 Z+J 8:51AM 0:00.28 | `-- root 78830 0.0 0.0 14680 1916 0 I+J 8:51AM 0:00.01 |-- gmake -C equalizer root 78834 0.0 0.0 0 0 0 Z+J 8:51AM 0:00.43 | `-- root 78952 0.0 0.0 14680 1912 0 I+J 8:51AM 0:00.01 `-- gmake -C flv root 79075 0.0 0.0 0 0 0 Z+J 8:51AM 0:00.00 `-- September 2017 - 12-CURRENT jail: USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND root 8279 0.0 0.0 10832 0 1 IW+J - 0:00.00 /usr/bin/make -C /usr/ ports/editors/openoffice-devel build root 8550 0.0 0.0 24852 0 1 IW+J - 0:00.00 - perl -S /wrkdirs/usr /ports/editors/openoffice-devel/work/aoo-4.2.0/main/solenv/bin/build.pl --all -P 2 -- -P4 root 64577 0.0 0.0 24852 0 1 IW+J - 0:00.00 `-- perl -S /wrkdirs/u sr/ports/editors/openoffice-devel/work/aoo-4.2.0/main/solenv/bin/build.pl --all -P2 -- -P4 root 64578 0.0 0.0 11700 0 1 IW+J - 0:00.00 `-- dmake -P4 root 64583 0.0 0.0 12688 0 1 IW+J - 0:00.00 `-- /usr/local/bin /bash -c cd .. && gmake -r -j4 && gmake -r deliverlog root 64584 0.0 0.1 53556 44532 1 I+J 20:32 0:29.23 `-- gmake -r -j4 root 30217 0.0 0.0 0 0 1 Z+J 20:49 0:00.01 |-- root 30220 0.0 0.0 0 0 1 Z+J 20:49 0:00.01 |-- root 30234 0.0 0.0 0 0 1 Z+J 20:49 0:00.01 |-- root 30236 0.0 0.0 0 0 1 Z+J 20:49 0:00.01 `-- USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND nobody 43355 0.0 0.0 10500 1596 1 I+J 11:09 0:00.05 /usr/bin/make -C /usr/ports/lang/rust build nobody 43444 0.0 0.1 46368 36944 1 I+J 11:09 0:07.20 - /usr/local/bin/python2.7 /wrkdirs/usr/ports/lang/rust/work/rustc-1.23.0-src/x.py build --verbose --config ./config.toml --jobs 7 nobody 71768 0.0 0.0 25436 11536 1 I+J 11:10 0:00.21 `-- /wrkdirs/usr/ports/lang/rust/work/rustc-1.23.0-src/build/bootstrap/debug/bootstrap build --verbose --config ./config.toml --jobs 7 nobody 9694 0.0 0.0 23260 13172 1 I+J 11:14 0:00.01 `-- cmake --build . --target install --config Release -- -j 7 nobody 9746 0.0 0.0 11976 2412 1 I+J 11:14 0:00.01 `-- /usr/local/bin/gmake -j 7 install nobody 9784 0.0 0.0 12624 3292 1 I+J 11:14 0:00.08 `-- /usr/local/bin/gmake -f CMakeFiles/Makefile2 all nobody 9539 0.0 0.0 11976 2404 1 I+J 11:16 0:00.02 |-- /usr/local/bin/gmake -f lib/DebugInfo/CodeView/CMakeFiles/LLVMDebugInfoCodeView.dir/build.make lib/DebugInfo/CodeView/CMakeFiles/LLVMDebugInfoCodeView.dir/build nobody 10364 0.0 0.0 0 0 1 Z+J 11:17 0:02.12 | `-- nobody 10119 0.0 0.0 11908 2264 1 I+J 11:14 0:00.01 |-- /usr/local/bin/gmake -f lib/TableGen/CMakeFiles/LLVMTableGen.dir/build.make lib/TableGen/CMakeFiles/LLVMTableGen.dir/build nobody 10231 0.0 0.0 0 0 1 Z+J 11:14 0:00.95 | `-- nobody 10420 0.0 0.0 12020 2524 1 I+J 11:14 0:00.02 |-- /usr/local/bin/gmake -f lib/MC/MCParser/CMakeFiles/LLVMMCParser.dir/build.make lib/MC/MCParser/CMakeFiles/LLVMMCParser.dir/build nobody 9353 0.0 0.0 0 0 1 Z+J 11:16 0:00.86 | `-- nobody 10667 0.0 0.0 12476 2800 1 I+J 11:14 0:00.03 |-- /usr/local/bin/gmake -f lib/Support/CMakeFiles/LLVMSupport.dir/build.make lib/Support/CMakeFiles/LLVMSupport.dir/build nobody 10766 0.0 0.0 0 0 1 Z+J 11:14 0:04.21 | `-- nobody 10726 0.0 0.0 12120 2576 1 I+J 11:14 0:00.03 |-- /usr/local/bin/gmake -f utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/build.make utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/build nobody 9446 0.0 0.0 0 0 1 Z+J 11:16 0:03.01 | `-- nobody 10743 0.0 0.0 12140 2652 1 I+J 11:14 0:00.04 |-- /usr/local/bin/gmake -f lib/MC/CMakeFiles/LLVMMC.dir/build.make lib/MC/CMakeFiles/LLVMMC.dir/build nobody 10795 0.0 0.0 0 0 1 Z+J 11:14 0:02.35 | `-- nobody 10790 0.0 0.0 12412 2828 1 I+J 11:17 0:00.05 `-- /usr/local/bin/gmake -f lib/DebugInfo/PDB/CMakeFiles/LLVMDebugInfoPDB.dir/build.make lib/DebugInfo/PDB/CMakeFiles/LLVMDebugInfoPDB.dir/build nobody 17155 0.0 0.0 0 0 1 Z+J 11:17 0:00.01 `-- At least the first and third failures sound like the potential deadlock described in the GNU make jobserver algorithm description here: http://make.mad-scientist.net/papers/jobserver-implementation/ The description of the algorithm will make more sense if you renumber the sub-steps under step 4 from 1-5 to a-e. What happens if we enter the read() in step 4e, and between the time we check the fd for validity and the time the read sees there is no data and goes to sleep if a SIGCHLD arrives and closes fd? Is that even possible or is the SIGCHLD delivery deferred until the sycall goes to sleep? Could we sometimes lose the SIGCHLD? It looks like losing duplicate signals should be OK and receiving one per child should not be necessary. If multiple children exit after step 4a, as long as SIGCHLD is delivered at least once before step 4e, then the handler should close the duplicate fd and step 4e should get EBADF. The cited document says that the deadlock can occur only if two instances of make run into this problem. Because of that I'm suspicious that this failure is actually more common. If I watch top during a poudriere run, I often see long stretches of time when the count of zombie processes is in the mid single digits. I haven't yet dug into the code, but I thought I should share my observations to date. From owner-freebsd-hackers@freebsd.org Tue Feb 13 21:49:09 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DBF24F03D68 for ; Tue, 13 Feb 2018 21:49:09 +0000 (UTC) (envelope-from mike@sentex.net) Received: from smarthost2.sentex.ca (smarthost2.sentex.ca [IPv6:2607:f3e0:80:80::2]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "smarthost.sentex.ca", Issuer "smarthost.sentex.ca" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 680B9739C9; Tue, 13 Feb 2018 21:49:09 +0000 (UTC) (envelope-from mike@sentex.net) Received: from lava.sentex.ca (lava.sentex.ca [IPv6:2607:f3e0:0:5::11]) by smarthost2.sentex.ca (8.15.2/8.15.2) with ESMTPS id w1DLn820066589 (version=TLSv1 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Tue, 13 Feb 2018 16:49:09 -0500 (EST) (envelope-from mike@sentex.net) Received: from [192.168.43.26] (saphire3.sentex.ca [192.168.43.26]) by lava.sentex.ca (8.15.2/8.15.2) with ESMTP id w1DLn6uu031327; Tue, 13 Feb 2018 16:49:06 -0500 (EST) (envelope-from mike@sentex.net) Subject: Re: Stale memory during post fork cow pmap update To: Konstantin Belousov , Elliott.Rabe@dell.com Cc: Eric.Van.Gyzen@dell.com, freebsd-hackers@freebsd.org, truckman@FreeBSD.org, markj@FreeBSD.org, alc@FreeBSD.org References: <5A7E7F2B.80900@dell.com> <20180210111848.GL33564@kib.kiev.ua> <5A7F6A7C.80607@dell.com> <20180210225608.GM33564@kib.kiev.ua> <5A82AB7C.6090404@dell.com> <20180213133010.GD94212@kib.kiev.ua> From: Mike Tancsa Organization: Sentex Communications Message-ID: Date: Tue, 13 Feb 2018 16:49:08 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180213133010.GD94212@kib.kiev.ua> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.78 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Feb 2018 21:49:10 -0000 On 2/13/2018 8:30 AM, Konstantin Belousov wrote: > Apparently Ryzen CPUs are able to demonstrate it quite reliably with the > python driver for the samba build. It was very surprising to me, esp. > because I tried to understand the Ryzen bug for the whole last week and > thought that it is more likely CPU store/load inconsistency than a software > thing. See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225584. Just tested on an AMD EPYC 7281 (16/32 cores), and it runs into this bug every time on the samba build. Applying the referenced patch fixes the problem, at least I was able to test 4 builds in a row without issue. ---Mike -- ------------------- Mike Tancsa, tel +1 519 651 3400 x203 Sentex Communications, mike@sentex.net Providing Internet services since 1994 www.sentex.net Cambridge, Ontario Canada From owner-freebsd-hackers@freebsd.org Tue Feb 13 22:19:39 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 41D49F060C6 for ; Tue, 13 Feb 2018 22:19:39 +0000 (UTC) (envelope-from joerg@bec.de) Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net [IPv6:2001:4b98:c:538::195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D8B07751C1; Tue, 13 Feb 2018 22:19:38 +0000 (UTC) (envelope-from joerg@bec.de) Received: from britannica.bec.de (p200300D2ABCCC4104639C4FFFE599710.dip0.t-ipconnect.de [IPv6:2003:d2:abcc:c410:4639:c4ff:fe59:9710]) (Authenticated sender: joerg@bec.de) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 47CEFA80C4; Tue, 13 Feb 2018 23:19:36 +0100 (CET) Date: Tue, 13 Feb 2018 23:18:38 +0100 From: Joerg Sonnenberger To: Don Lewis Cc: freebsd-hackers@freebsd.org Subject: Re: rare gmake jobserver hangs, lost SIGCHLD? Message-ID: <20180213221838.GA7424@britannica.bec.de> Mail-Followup-To: Don Lewis , freebsd-hackers@freebsd.org References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.0 (2017-09-02) X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Feb 2018 22:19:39 -0000 On Tue, Feb 13, 2018 at 10:46:32AM -0800, Don Lewis wrote: > Starting in December 2016, I've seen three build runaway failures on > different ports. https://savannah.gnu.org/bugs/?49014 might be your problem. Joerg From owner-freebsd-hackers@freebsd.org Tue Feb 13 23:21:07 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B0C31F0A7E2 for ; Tue, 13 Feb 2018 23:21:07 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from mx2.catspoiler.org (mx2.catspoiler.org [IPv6:2607:f740:16::d18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "amnesiac", Issuer "amnesiac" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 3847F77E20 for ; Tue, 13 Feb 2018 23:21:07 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from gw.catspoiler.org ([76.212.85.177]) by mx2.catspoiler.org (8.15.2/8.15.2) with ESMTPS id w1DNLgCS069943 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 13 Feb 2018 23:21:43 GMT (envelope-from truckman@FreeBSD.org) Received: from mousie.catspoiler.org (mousie.catspoiler.org [192.168.101.2]) by gw.catspoiler.org (8.15.2/8.15.2) with ESMTPS id w1DMJv6O025648 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 13 Feb 2018 15:20:56 -0800 (PST) (envelope-from truckman@FreeBSD.org) Date: Tue, 13 Feb 2018 15:20:56 -0800 (PST) From: Don Lewis Subject: Re: rare gmake jobserver hangs, lost SIGCHLD? To: Joerg Sonnenberger cc: freebsd-hackers@freebsd.org In-Reply-To: <20180213221838.GA7424@britannica.bec.de> Message-ID: References: <20180213221838.GA7424@britannica.bec.de> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=us-ascii Content-Disposition: INLINE X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Feb 2018 23:21:07 -0000 On 13 Feb, Joerg Sonnenberger wrote: > On Tue, Feb 13, 2018 at 10:46:32AM -0800, Don Lewis wrote: >> Starting in December 2016, I've seen three build runaway failures on >> different ports. > > https://savannah.gnu.org/bugs/?49014 might be your problem. Thanks! That looks promising. From owner-freebsd-hackers@freebsd.org Tue Feb 13 23:24:08 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 14331F0AC56 for ; Tue, 13 Feb 2018 23:24:08 +0000 (UTC) (envelope-from freebsd-rwg@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8B188781D7; Tue, 13 Feb 2018 23:24:07 +0000 (UTC) (envelope-from freebsd-rwg@pdx.rh.CN85.dnsmgr.net) Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1]) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w1DNNvXu050852; Tue, 13 Feb 2018 15:23:57 -0800 (PST) (envelope-from freebsd-rwg@pdx.rh.CN85.dnsmgr.net) Received: (from freebsd-rwg@localhost) by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w1DNNv93050851; Tue, 13 Feb 2018 15:23:57 -0800 (PST) (envelope-from freebsd-rwg) From: "Rodney W. Grimes" Message-Id: <201802132323.w1DNNv93050851@pdx.rh.CN85.dnsmgr.net> Subject: Re: rare gmake jobserver hangs, lost SIGCHLD? In-Reply-To: <20180213221838.GA7424@britannica.bec.de> To: Joerg Sonnenberger Date: Tue, 13 Feb 2018 15:23:57 -0800 (PST) CC: Don Lewis , freebsd-hackers@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-Mailman-Approved-At: Tue, 13 Feb 2018 23:52:18 +0000 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Feb 2018 23:24:08 -0000 > On Tue, Feb 13, 2018 at 10:46:32AM -0800, Don Lewis wrote: > > Starting in December 2016, I've seen three build runaway failures on > > different ports. > > https://savannah.gnu.org/bugs/?49014 might be your problem. And given you said Ryzen earlier there is also this issue just found and fixed: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225584 > Joerg -- Rod Grimes rgrimes@freebsd.org From owner-freebsd-hackers@freebsd.org Wed Feb 14 02:37:42 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0E164F1988A for ; Wed, 14 Feb 2018 02:37:42 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from mx2.catspoiler.org (mx2.catspoiler.org [IPv6:2607:f740:16::d18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "amnesiac", Issuer "amnesiac" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 98D8B7F197 for ; Wed, 14 Feb 2018 02:37:41 +0000 (UTC) (envelope-from truckman@FreeBSD.org) Received: from gw.catspoiler.org ([76.212.85.177]) by mx2.catspoiler.org (8.15.2/8.15.2) with ESMTPS id w1E2cH6x070350 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 14 Feb 2018 02:38:18 GMT (envelope-from truckman@FreeBSD.org) Received: from mousie.catspoiler.org (mousie.catspoiler.org [192.168.101.2]) by gw.catspoiler.org (8.15.2/8.15.2) with ESMTPS id w1E2bUur034536 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 13 Feb 2018 18:37:31 -0800 (PST) (envelope-from truckman@FreeBSD.org) Date: Tue, 13 Feb 2018 18:37:24 -0800 (PST) From: Don Lewis Subject: Re: rare gmake jobserver hangs, lost SIGCHLD? To: "Rodney W. Grimes" cc: Joerg Sonnenberger , freebsd-hackers@freebsd.org In-Reply-To: <201802132323.w1DNNv93050851@pdx.rh.CN85.dnsmgr.net> Message-ID: References: <20180213221838.GA7424@britannica.bec.de> <201802132323.w1DNNv93050851@pdx.rh.CN85.dnsmgr.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=us-ascii Content-Disposition: INLINE X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 02:37:42 -0000 On 13 Feb, Rodney W. Grimes wrote: >> On Tue, Feb 13, 2018 at 10:46:32AM -0800, Don Lewis wrote: >> > Starting in December 2016, I've seen three build runaway failures on >> > different ports. >> >> https://savannah.gnu.org/bugs/?49014 might be your problem. > > And given you said Ryzen earlier there is also this issue just found > and fixed: > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225584 Yes, I tested that patch and found that it got rid of several different semi-random port build failures. I just happened to get this gmake-related build runaway on my first poudriere run after applying the VM patch. From owner-freebsd-hackers@freebsd.org Wed Feb 14 07:14:31 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 8D2A2F06618 for ; Wed, 14 Feb 2018 07:14:31 +0000 (UTC) (envelope-from lists@eitanadler.com) Received: from mail-yw0-x229.google.com (mail-yw0-x229.google.com [IPv6:2607:f8b0:4002:c05::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 26BB687D87 for ; Wed, 14 Feb 2018 07:14:31 +0000 (UTC) (envelope-from lists@eitanadler.com) Received: by mail-yw0-x229.google.com with SMTP id p2so470233ywg.10 for ; Tue, 13 Feb 2018 23:14:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eitanadler.com; s=0xdeadbeef; h=mime-version:from:date:message-id:subject:to; bh=sS6O1fAjLh/jmeiVCyJ4wpBNomKvI1A3tK01sdzPQwU=; b=inkOo5Zm6SC0AVkWCTNblCvXX+dLslw4FMldtauh7Ni9Xwceviv0cRvAsdck6IStvI RlP5Jhw1goBwtxKlN9BDckmLoXxqBFkvLSEksnhNoWEGd7OEgzH6XcbmAj3T9JuD17qe hXFhnQE6oVv5vs3FIAsWGOe2ipUS6t7k74MxQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=sS6O1fAjLh/jmeiVCyJ4wpBNomKvI1A3tK01sdzPQwU=; b=jPCTKA8IYw33C62qPGMEqoEnqOA+qHxaC/3tMKtXkSJ/iRpDsGsdaHdxyT0O7iCu2h 6e6j6gnw2BlI0PUB7hiM9kg5/b7r7dqzBV6ba5KhlRt05F6LN0jAmsV6R6U9/Y8vWYYN zDRgJQXnfwy9hj5rIgKZVFNyvRlNAsQm4o94rDaJ/SJFBlFHwUDkBVAhM+rppIp3sOpW /bB48e9GPLdbDTXyRSmJ9rTeu+JrJI6hM9AS/4SV5lfavaRZfUjnyS0GeWigic65UaJd GE4k2A097CenxSbHxw/6OFDPyfbI0IbEKFkHqPXeeBp+RUzehAkuS/xCKPX/617zNmZz sn+w== X-Gm-Message-State: APf1xPAyYzClogggs6FVTtvZUSewGtT/9aJMTbG3gho36e97uEh8bhLO d56fqmwAidFkqZgl9U5koO+dVIWQQs/0AtkCIf1ORTA2 X-Google-Smtp-Source: AH8x227I/YH96YxHVWB8UYerZJswqbtRVqRGP+zPbtTCw1rMCiN6BMQUmYLdLBW0YAff/BtCk/4XK/WUa99xKqlkWnk= X-Received: by 10.37.189.135 with SMTP id f7mr2552167ybh.486.1518592470021; Tue, 13 Feb 2018 23:14:30 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a25:7107:0:0:0:0:0 with HTTP; Tue, 13 Feb 2018 23:13:59 -0800 (PST) From: Eitan Adler Date: Tue, 13 Feb 2018 23:13:59 -0800 Message-ID: Subject: select call in devd To: FreeBSD Hackers , Warner Losh , zrj@dragonflybsd.org Content-Type: text/plain; charset="UTF-8" X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 07:14:31 -0000 Hi all, select(2) is declared with restrict for the pointers for fd. Can y'all confirm this is the correct fix? It is only lightly tested (it seems to do its job on my machine) Index: devd.cc =================================================================== --- devd.cc (revision 329192) +++ devd.cc (working copy) @@ -1021,7 +1021,7 @@ event_loop(void) tv.tv_usec = 0; FD_ZERO(&fds); FD_SET(fd, &fds); - rv = select(fd + 1, &fds, &fds, &fds, &tv); + rv = select(fd + 1, &fds, NULL, NULL, &tv); // No events -> we've processed all pending events if (rv == 0) { devdlog(LOG_DEBUG, "Calling daemon\n"); -- Eitan Adler From owner-freebsd-hackers@freebsd.org Wed Feb 14 07:16:37 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 023C6F06805 for ; Wed, 14 Feb 2018 07:16:37 +0000 (UTC) (envelope-from agapon@gmail.com) Received: from mail-lf0-f44.google.com (mail-lf0-f44.google.com [209.85.215.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6357287E8E for ; Wed, 14 Feb 2018 07:16:36 +0000 (UTC) (envelope-from agapon@gmail.com) Received: by mail-lf0-f44.google.com with SMTP id w10so15299845lfc.9 for ; Tue, 13 Feb 2018 23:16:36 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version:content-language:content-transfer-encoding; bh=wDk7PKxVIq7dhILFQKnzmO0/4e1rc1VkyEVib5Hiz/E=; b=S+RvjLrAK5f5xyCP1XVdzvlc0qE+nSDMOtoisshDV8Myjcwuwl7cz149PNlYz3ddl8 ot4RkpslXREf1tSDI/l/amCvRFCOMuBTb/Pckwnmabapf+o1IXX2CvT71KdbscFSfZLo /ha+VOZ+KQcg8r/6LNx3yb3aAKST02bcgomm2Lq0LoyaUeBTqMVSGdOYZ0X66n9OiFDF QIiconGUejFzkneS5b7SbP7EePwZVE1gSuSQ1Hwj/BN0d775GZtt+ANugEjG7RqBuwnB B3GFYF1WzCrvjq2POy6eiE8e6GLnYTB4F+bkUnH6AP/QhHXVk/q8byBUoXPMfDx6hWXx EFSw== X-Gm-Message-State: APf1xPCxHH4uELn19qh/JhgO09AVf7gsMqczFjVnP4qLhsfA0bHKNvHn 0OgyBK4xWoMagLz0WMAH6i5ObnZQ X-Google-Smtp-Source: AH8x226PXPyzoN323jbRHPLG22aAiEc/a1JId4oEavUfLPlaN73TUVJTnt4C2RletaJJIt/AJPvq2g== X-Received: by 10.46.36.21 with SMTP id k21mr442525ljk.14.1518592588952; Tue, 13 Feb 2018 23:16:28 -0800 (PST) Received: from [192.168.0.88] (east.meadow.volia.net. [93.72.151.96]) by smtp.googlemail.com with ESMTPSA id q24sm2537966lff.8.2018.02.13.23.16.27 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Feb 2018 23:16:28 -0800 (PST) To: FreeBSD Hackers From: Andriy Gapon Subject: IO-APIC interrupt delivery mode on Ryzen Message-ID: Date: Wed, 14 Feb 2018 09:16:26 +0200 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 07:16:37 -0000 A while ago I discovered that all AMD IO-APICs (in separate southbridges and in FCHs) had a bug with respect to how the interrupt delivery mode got interpreted. I am curious if the problem has been fixed in Ryzen or if it is being carried on. I would appreciate any help with testing that. The discussion of the problem and the tests I used can be found in this thread: https://mail.coreboot.org/pipermail/coreboot/2016-October/082148.html https://mail.coreboot.org/pipermail/coreboot/2016-October/082156.html If you are interested and it's not really clear how to conduct a test, please write me. Thank you! -- Andriy Gapon From owner-freebsd-hackers@freebsd.org Wed Feb 14 07:56:41 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 51E59F09630 for ; Wed, 14 Feb 2018 07:56:41 +0000 (UTC) (envelope-from 6yearold@gmail.com) Received: from mail-pl0-x22a.google.com (mail-pl0-x22a.google.com [IPv6:2607:f8b0:400e:c01::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C46A7695BE for ; Wed, 14 Feb 2018 07:56:40 +0000 (UTC) (envelope-from 6yearold@gmail.com) Received: by mail-pl0-x22a.google.com with SMTP id 31so2603931ple.9 for ; Tue, 13 Feb 2018 23:56:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=f0X+piOfwIvja6v/aqTlx93j1Bl3K6CedgqGTZrfdzY=; b=Y9QkK98GXoBlfavyBocnU7AkIaZhVlXCSV/zDUGBpk//9/bqWsnnBU1pE3lKAqDVjC t0ZF8xcc+Yy2PVx8XdUJq0CI6g41ruCHpenWrEPwjFVyNvktC5KNRWcOweD6g9NQcU+r AyYAouLtML0jfMcHUt7q2/HglvCE0gj0l0XrZ62Bv7V6qWF90RTgKEF65rRp6z/8JtB2 u5e2HmXmgwVRfoxrTKWNSWKpAGOWqTLwcEfRw2A1/baifbgNgFsHFHwjCtMiWL425jEn B3UiqinwQDjaSZjljTEYoswGm7iF0aza2+dzb7J+TfVDvZCMOvYkU5iqo5ycGIBfXKIS zOCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=f0X+piOfwIvja6v/aqTlx93j1Bl3K6CedgqGTZrfdzY=; b=NlqZbjyzSeWOOvOhS0HsT/k2A0ZI9M4GEKx6Zg4WCgXdGbLU25TyRQgKvMkTha154o 8Mggl9cZ2Z+uokCqyBfk2kkc1leVGilxPG0u0AdGvzYRb0zf4skzSmN6wKbE+j1526ky Q0VlaU52Ha1uFkFI9zzpkoXTOpEap29JSHcuA5LlLEZUC5Nc/mHUpXpMDzi0uyI1AM58 IXXTH/gE6efW3k8g5DiuAIHqkZuNe8iTyWSHqlUorMo/Ei/V1I1GjWlKE2hJUaXpemhc NiuwFmNzre/ZOmp5cOAHF/4+FexIOR+TdzbJ3pkXJR9Oz110aaRKbOqvFHPMP52S4vir aDIw== X-Gm-Message-State: APf1xPAL+D4HEoqpg11eIhEIo7tjzEeD7lCGQVBpyS/e5vPmSJaOVnZx tsa1q8N+sh9vMLJGVxa1EKGtohaZ0oqnBfFPIVzrdg== X-Google-Smtp-Source: AH8x225DO6R7WEBNZH23/95I6YeWu0Hm2HiftHXROU1i0gAHyrpbBLFjKfJXaZuMBAeKWFnDTwtlReQq/vVSiHGlCsw= X-Received: by 2002:a17:902:36a:: with SMTP id 97-v6mr3724893pld.365.1518594999646; Tue, 13 Feb 2018 23:56:39 -0800 (PST) MIME-Version: 1.0 Received: by 10.100.155.47 with HTTP; Tue, 13 Feb 2018 23:56:09 -0800 (PST) In-Reply-To: References: From: Gleb Popov <6yearold@gmail.com> Date: Wed, 14 Feb 2018 10:56:09 +0300 Message-ID: Subject: Re: select call in devd To: Eitan Adler Cc: FreeBSD Hackers Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 07:56:41 -0000 On Wed, Feb 14, 2018 at 10:13 AM, Eitan Adler wrote: > Hi all, > > select(2) is declared with restrict for the pointers for fd. Can y'all > confirm this is the correct fix? > > It is only lightly tested (it seems to do its job on my machine) > > Index: devd.cc > =================================================================== > --- devd.cc (revision 329192) > +++ devd.cc (working copy) > @@ -1021,7 +1021,7 @@ event_loop(void) > tv.tv_usec = 0; > FD_ZERO(&fds); > FD_SET(fd, &fds); > - rv = select(fd + 1, &fds, &fds, &fds, &tv); > + rv = select(fd + 1, &fds, NULL, NULL, &tv); > // No events -> we've processed all pending events > if (rv == 0) { > devdlog(LOG_DEBUG, "Calling daemon\n"); > > > -- > Eitan Adler > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" > Haven't looked at code at all, but why is it using select and not kqueue/kevent? From owner-freebsd-hackers@freebsd.org Wed Feb 14 08:13:23 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 64D63F0AC02 for ; Wed, 14 Feb 2018 08:13:23 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: from mail-it0-f41.google.com (mail-it0-f41.google.com [209.85.214.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EBA366A331 for ; Wed, 14 Feb 2018 08:13:22 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: by mail-it0-f41.google.com with SMTP id d10so8118237itj.2 for ; Wed, 14 Feb 2018 00:13:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:reply-to:in-reply-to:references :from:date:message-id:subject:to:cc; bh=1ZhLuRzMpnBo1T9q5/WfIbZDvxAT4DAdHjz/A5EIVr4=; b=eA1vMyBcle+ahAaw5PMLc7+TknEvA8m9zR9kqwK1kctm+/KSVd6ZJrSeKHLmN/KTXE 9uX6xnmWXXLwZ3LweBsNAh8OQ+RRB8f200x4RP7yLo3YB//M0CcdG1AQbpxkd5bF3nrQ DKXfqPF84TE294fcFLVnpoZyWUec3DA0IFRJLkJmppTHPm1UCshoEumFGDHVzku6rqbr /5D1PX7igGdoxDH0oZZ+tS4NULF1TaBuusKEAVm4nbD6gX3q7g2xuocPQ14utUDKs9mY JdtZjlBhaTRDD6vljyGM7b8CS/UPfbzjtEI34LW3T+bLn8fPNtJzCkNyntAvrqshud/i 0/cw== X-Gm-Message-State: APf1xPA+iDdyXdsLS32z2koOWHEK0RNzeoL4inyHVMXd188CuKpfvov2 SWx/sDYLK/RMRfI+JW8p+XPt6WSX X-Google-Smtp-Source: AH8x224tflOH4Qmr8Ov1RsBDb0MklqMrtjX3+oPqYfLwQ+C4Ogyfso8XYRv/Rxrj+VYfn6ORBIGl3A== X-Received: by 10.36.58.6 with SMTP id m6mr4871077itm.138.1518595612279; Wed, 14 Feb 2018 00:06:52 -0800 (PST) Received: from mail-io0-f172.google.com (mail-io0-f172.google.com. [209.85.223.172]) by smtp.gmail.com with ESMTPSA id d186sm12398467itd.22.2018.02.14.00.06.52 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Feb 2018 00:06:52 -0800 (PST) Received: by mail-io0-f172.google.com with SMTP id t22so24261920ioa.7 for ; Wed, 14 Feb 2018 00:06:52 -0800 (PST) X-Received: by 10.107.35.84 with SMTP id j81mr4344468ioj.226.1518595611963; Wed, 14 Feb 2018 00:06:51 -0800 (PST) MIME-Version: 1.0 Reply-To: cem@freebsd.org Received: by 10.2.30.149 with HTTP; Wed, 14 Feb 2018 00:06:51 -0800 (PST) In-Reply-To: References: From: Conrad Meyer Date: Wed, 14 Feb 2018 00:06:51 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: select call in devd To: Gleb Popov <6yearold@gmail.com> Cc: FreeBSD Hackers Content-Type: text/plain; charset="UTF-8" X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 08:13:23 -0000 On Tue, Feb 13, 2018 at 11:56 PM, Gleb Popov <6yearold@gmail.com> wrote: > Haven't looked at code at all, but why is it using select and not > kqueue/kevent? Because select/poll are a lot easier to use for one-off monitoring of a single descriptor, and devd isn't trying to scale to 10k descriptors here. From owner-freebsd-hackers@freebsd.org Wed Feb 14 09:06:20 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 69207F0F12B for ; Wed, 14 Feb 2018 09:06:20 +0000 (UTC) (envelope-from killing@multiplay.co.uk) Received: from mail-wr0-x230.google.com (mail-wr0-x230.google.com [IPv6:2a00:1450:400c:c0c::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DF4F86C5D4 for ; Wed, 14 Feb 2018 09:06:19 +0000 (UTC) (envelope-from killing@multiplay.co.uk) Received: by mail-wr0-x230.google.com with SMTP id v65so14552319wrc.11 for ; Wed, 14 Feb 2018 01:06:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=multiplay-co-uk.20150623.gappssmtp.com; s=20150623; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=siex4p9VSEgejp0hBXrBw5AzZ8jIc/xzlFf9xXe51/A=; b=Z3BfKSn7QHTHIeiecCXdmBY2GPF28Z3bRZJEmHRZiFDFqp5LcGtj5lvd4Y6CXd0Jig X0LcoCw8+R8T1ESmZ+eJIKaIUUeKIUFQ2Rq+x9lj5YwmU0p09fRZ1WWO05tTeLNLAYlM V+Fk9Fh84FI2o/YO5dnVXgdJ3b9jxGZFCYkuXvXQAFsdBO/Z7lSoOL6SMbZBkTjiGHuK LBzVqpr6QfPkMsnL1qTvsbyJAqiU5Umcf01sxFLK4ISH2XnmA1uVbRNEfbsUMKJZ/P4J gv2bOwhNP9bwSxjn/2xMqbA8NItc0dsbNHF2PBdoYtwvt3uklgujkQclrlcoQnehzWRQ YMzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=siex4p9VSEgejp0hBXrBw5AzZ8jIc/xzlFf9xXe51/A=; b=HNPYt4U4XB/sjNbA/k4zxP8plINQtBxTuh2XM8BbAW1ZYTsqV72AgYbxbbhrClhl7w gBI7fqBsWS0/HxDyND25rdpRz0dh1Xpsoj0ed8jK40LnmsV3uXTcLocCmrwR8l22sxiR GTW+ML5ZSiscnjIB7bRBerxiR9Ngv/IonOFmcnBMMFOOfMp47GQ3Z1+NUqxp5/2fYwR+ 6NiUSLhW9Ug8bn1r4ZNA6vhE9U49Fvzy6uZr0ZusAqxESpLsqtmm8UrFWvbcePN7FkuL XS2jPIyCpYoJuob0D8npFASCUhvW7pFhaKIP57LjVkVGyCcnqJygxcTimq/VEnYbRbOU 0E0w== X-Gm-Message-State: APf1xPA/9G19oxTMgr0OXoPOlI7s2/KRkonBfte2jZrLfOhdGvQvapYp diMzzXzv8q9tae1nlkcLOVt7EjqMfa4= X-Google-Smtp-Source: AH8x226XgU2qS9NhylSzO//aJM2RPKcYU6+x4O5iD5Qr2RvHjmZurvvzx1JbLzknJO7Rk9t05QSQZQ== X-Received: by 10.223.162.220 with SMTP id t28mr3601543wra.220.1518599178227; Wed, 14 Feb 2018 01:06:18 -0800 (PST) Received: from [10.10.1.111] ([185.97.61.1]) by smtp.gmail.com with ESMTPSA id t4sm10060757wmt.16.2018.02.14.01.06.16 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Feb 2018 01:06:16 -0800 (PST) Subject: Re: Stale memory during post fork cow pmap update To: freebsd-hackers@freebsd.org References: <5A7E7F2B.80900@dell.com> <20180210111848.GL33564@kib.kiev.ua> <5A7F6A7C.80607@dell.com> <20180210225608.GM33564@kib.kiev.ua> <5A82AB7C.6090404@dell.com> <20180213133010.GD94212@kib.kiev.ua> From: Steven Hartland Message-ID: <16f4ce10-70d3-12f4-2246-e8ab44ba511f@multiplay.co.uk> Date: Wed, 14 Feb 2018 09:06:18 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 09:06:20 -0000 @kib do you think this issue could be the cause of the golang crashes during fork that we spoke about a while back https://github.com/golang/go/issues/15658 If its possible is there anything specific I could do to force a regular occurrence in order to confirm or deny it? On 13/02/2018 21:49, Mike Tancsa wrote: > On 2/13/2018 8:30 AM, Konstantin Belousov wrote: >> Apparently Ryzen CPUs are able to demonstrate it quite reliably with the >> python driver for the samba build. It was very surprising to me, esp. >> because I tried to understand the Ryzen bug for the whole last week and >> thought that it is more likely CPU store/load inconsistency than a software >> thing. See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225584. > Just tested on an AMD EPYC 7281 (16/32 cores), and it runs into this bug > every time on the samba build. Applying the referenced patch fixes the > problem, at least I was able to test 4 builds in a row without issue. > > ---Mike > > From owner-freebsd-hackers@freebsd.org Wed Feb 14 10:35:00 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 34CB9F1504A for ; Wed, 14 Feb 2018 10:35:00 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A35536FC60 for ; Wed, 14 Feb 2018 10:34:59 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from tom.home (kib@localhost [127.0.0.1]) by kib.kiev.ua (8.15.2/8.15.2) with ESMTPS id w1EAYqw8015340 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Wed, 14 Feb 2018 12:34:55 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua w1EAYqw8015340 Received: (from kostik@localhost) by tom.home (8.15.2/8.15.2/Submit) id w1EAYpta015339; Wed, 14 Feb 2018 12:34:51 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Wed, 14 Feb 2018 12:34:51 +0200 From: Konstantin Belousov To: Steven Hartland Cc: freebsd-hackers@freebsd.org Subject: Re: Stale memory during post fork cow pmap update Message-ID: <20180214103451.GF94212@kib.kiev.ua> References: <5A7E7F2B.80900@dell.com> <20180210111848.GL33564@kib.kiev.ua> <5A7F6A7C.80607@dell.com> <20180210225608.GM33564@kib.kiev.ua> <5A82AB7C.6090404@dell.com> <20180213133010.GD94212@kib.kiev.ua> <16f4ce10-70d3-12f4-2246-e8ab44ba511f@multiplay.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <16f4ce10-70d3-12f4-2246-e8ab44ba511f@multiplay.co.uk> User-Agent: Mutt/1.9.3 (2018-01-21) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on tom.home X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 10:35:00 -0000 On Wed, Feb 14, 2018 at 09:06:18AM +0000, Steven Hartland wrote: > @kib do you think this issue could be the cause of the golang crashes > during fork that we spoke about a while back > https://github.com/golang/go/issues/15658 > > If its possible is there anything specific I could do to force a regular > occurrence in order to confirm or deny it? I have no idea. It is much easier to check then to try plotting theories about applicability. I will be not surprised by either outcome. From owner-freebsd-hackers@freebsd.org Wed Feb 14 15:01:55 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A2763F05313 for ; Wed, 14 Feb 2018 15:01:55 +0000 (UTC) (envelope-from eric@vangyzen.net) Received: from smtp.vangyzen.net (hotblack.vangyzen.net [199.48.133.146]) by mx1.freebsd.org (Postfix) with ESMTP id 4BB807C2E6 for ; Wed, 14 Feb 2018 15:01:54 +0000 (UTC) (envelope-from eric@vangyzen.net) Received: from sweettea.beer.town (unknown [76.164.8.130]) by smtp.vangyzen.net (Postfix) with ESMTPSA id 88AF25646B; Wed, 14 Feb 2018 09:01:53 -0600 (CST) Subject: Re: select call in devd To: Eitan Adler , FreeBSD Hackers , Warner Losh , zrj@dragonflybsd.org References: From: Eric van Gyzen Message-ID: Date: Wed, 14 Feb 2018 09:01:49 -0600 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 15:01:55 -0000 On 02/14/2018 01:13, Eitan Adler wrote: > Hi all, > > select(2) is declared with restrict for the pointers for fd. Can y'all > confirm this is the correct fix? > > It is only lightly tested (it seems to do its job on my machine) > > Index: devd.cc > =================================================================== > --- devd.cc (revision 329192) > +++ devd.cc (working copy) > @@ -1021,7 +1021,7 @@ event_loop(void) > tv.tv_usec = 0; > FD_ZERO(&fds); > FD_SET(fd, &fds); > - rv = select(fd + 1, &fds, &fds, &fds, &tv); > + rv = select(fd + 1, &fds, NULL, NULL, &tv); > // No events -> we've processed all pending events > if (rv == 0) { > devdlog(LOG_DEBUG, "Calling daemon\n"); Looks good to me. Eric From owner-freebsd-hackers@freebsd.org Wed Feb 14 15:13:56 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4F612F062C9 for ; Wed, 14 Feb 2018 15:13:56 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-io0-x22f.google.com (mail-io0-x22f.google.com [IPv6:2607:f8b0:4001:c06::22f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D69947D0B8 for ; Wed, 14 Feb 2018 15:13:55 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-io0-x22f.google.com with SMTP id n7so25504944iob.0 for ; Wed, 14 Feb 2018 07:13:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=bt83h21qclGemDPJogupNaweYP9ukKEIKXg2gDdAWHU=; b=SFbn11Qgb5HhXHicYkOfP/tJzdkh76mCx7ilGfZ9u6UG2Jpfy45TR8el/S9EJ7+QhT SDEAfqbFiCb4zC4EaBDLyPjc7I8Jp9RhCDdy1WCNIOwRQXs+FygL5LEMbLwVRe1DmJIR GYaArCYlc1UqxixVqr2ogo16dOlwBzh5jNTbZ6BVBU0eA+5Mx2GFMZtx9gvw/Wh9WfKE jzZ6TZjMYArgqhAPc9DI5nDfTwaObGk/AdBMF+kkXC0nfBs6kp8coCX7fVxEb+WTPoHz xXwqLWNNjSaF+2BICuG6NkaNjt7/1NdmOYtzvp4hTRsgLEwUqZSyAVtY3Bk5gQAnwCm/ bQDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=bt83h21qclGemDPJogupNaweYP9ukKEIKXg2gDdAWHU=; b=a0i+qJghs59IcLRbZuTatABkaQONlUlqdwgWLU9IWcrKKxkvcbN866fJ0AYqxdO7kr zvehvOyhgiZKmhG6UOpF3poIwHk4Xo4yT4gSru4QbBvxvbUGABeHaIYtDW+CIupH6Zzh RUKwaMlpw2wqA1nV1PQJn5hXUn4zQ94ubVtBzJB0IAKYbec7UUt6pneRt5kK2vrqCSHD TzR0/xjcHPXGyWSzhcj0iPKVxVxVis9tXWyE2Up1HRdOmu0DnmFr5Shy3jElIQrOb4Zt WpUY9kPQeFuA1pksOQnPCYZip2WC4Yg5IwDetRVVjnbGkZ3sO6g9Nu6yuyr9KVPTFWAA Oouw== X-Gm-Message-State: APf1xPAGCoyiBfiKUWNtLZTqIlMzM8+YdlgCKFBcav03zu2GkJdn/WTC VOguTpsRB2vA8ga6Dyt99IPVTzS01dHF+tCZw7a+Ug== X-Google-Smtp-Source: AH8x225N4ceXGxUnqyhy5pVLPvKLe2AuraCeXe0l2jrNdIjaii9aOLA5SAMtAqxXR0V3wsjJMqq/7ujYmBHZ2GN4eiQ= X-Received: by 10.107.107.1 with SMTP id g1mr5749272ioc.63.1518621235113; Wed, 14 Feb 2018 07:13:55 -0800 (PST) MIME-Version: 1.0 Sender: wlosh@bsdimp.com Received: by 10.79.201.67 with HTTP; Wed, 14 Feb 2018 07:13:54 -0800 (PST) X-Originating-IP: [2603:300b:6:5100:18a2:a4f7:170:8dd9] In-Reply-To: References: From: Warner Losh Date: Wed, 14 Feb 2018 08:13:54 -0700 X-Google-Sender-Auth: qaR4ColaZ99qoRNqjUs8Etjsuh4 Message-ID: Subject: Re: select call in devd To: Eitan Adler Cc: FreeBSD Hackers , zrj@dragonflybsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 15:13:56 -0000 On Wed, Feb 14, 2018 at 12:13 AM, Eitan Adler wrote: > Hi all, > > select(2) is declared with restrict for the pointers for fd. Can y'all > confirm this is the correct fix? > No. It's not. Select is not declared with restrict parameters. pselect is, but select is not. There's no real call to change it. Warner > It is only lightly tested (it seems to do its job on my machine) > > Index: devd.cc > =================================================================== > --- devd.cc (revision 329192) > +++ devd.cc (working copy) > @@ -1021,7 +1021,7 @@ event_loop(void) > tv.tv_usec = 0; > FD_ZERO(&fds); > FD_SET(fd, &fds); > - rv = select(fd + 1, &fds, &fds, &fds, &tv); > + rv = select(fd + 1, &fds, NULL, NULL, &tv); > // No events -> we've processed all pending events > if (rv == 0) { > devdlog(LOG_DEBUG, "Calling daemon\n"); > > > -- > Eitan Adler > From owner-freebsd-hackers@freebsd.org Wed Feb 14 15:30:16 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 95C04F07A40 for ; Wed, 14 Feb 2018 15:30:16 +0000 (UTC) (envelope-from eric@vangyzen.net) Received: from smtp.vangyzen.net (hotblack.vangyzen.net [199.48.133.146]) by mx1.freebsd.org (Postfix) with ESMTP id 3A76C7DF43 for ; Wed, 14 Feb 2018 15:30:15 +0000 (UTC) (envelope-from eric@vangyzen.net) Received: from sweettea.beer.town (unknown [76.164.8.130]) by smtp.vangyzen.net (Postfix) with ESMTPSA id E837B5646B; Wed, 14 Feb 2018 09:30:14 -0600 (CST) Subject: Re: select call in devd To: Warner Losh , Eitan Adler Cc: FreeBSD Hackers , zrj@dragonflybsd.org References: From: Eric van Gyzen Message-ID: <76665530-c7f1-cbe7-252b-a1d146b0f51d@vangyzen.net> Date: Wed, 14 Feb 2018 09:30:12 -0600 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 15:30:16 -0000 On 02/14/2018 09:13, Warner Losh wrote: > On Wed, Feb 14, 2018 at 12:13 AM, Eitan Adler wrote: > >> Hi all, >> >> select(2) is declared with restrict for the pointers for fd. Can y'all >> confirm this is the correct fix? >> > > No. It's not. Select is not declared with restrict parameters. pselect is, > but select is not. You're right, it's not, but it /should/ be: http://pubs.opengroup.org/onlinepubs/9699919799/functions/select.html Issue 6 The restrict keyword is added to the select() prototype for alignment with the ISO/IEC 9899:1999 standard. > There's no real call to change it. ...unless he intends to mount a valiant effort to fix our declaration. Eric From owner-freebsd-hackers@freebsd.org Wed Feb 14 16:35:44 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3E112F0C8F3 for ; Wed, 14 Feb 2018 16:35:44 +0000 (UTC) (envelope-from ian@freebsd.org) Received: from pmta2.delivery6.ore.mailhop.org (pmta2.delivery6.ore.mailhop.org [54.200.129.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BCF3C80C81 for ; Wed, 14 Feb 2018 16:35:43 +0000 (UTC) (envelope-from ian@freebsd.org) X-MHO-User: 0a25691d-11a5-11e8-b951-f99fef315fd9 X-Report-Abuse-To: https://support.duocircle.com/support/solutions/articles/5000540958-duocircle-standard-smtp-abuse-information X-Originating-IP: 67.177.211.60 X-Mail-Handler: DuoCircle Outbound SMTP Received: from ilsoft.org (unknown [67.177.211.60]) by outbound2.ore.mailhop.org (Halon) with ESMTPSA id 0a25691d-11a5-11e8-b951-f99fef315fd9; Wed, 14 Feb 2018 16:35:17 +0000 (UTC) Received: from rev (rev [172.22.42.240]) by ilsoft.org (8.15.2/8.15.2) with ESMTP id w1EGZcPe040863; Wed, 14 Feb 2018 09:35:38 -0700 (MST) (envelope-from ian@freebsd.org) Message-ID: <1518626138.72050.29.camel@freebsd.org> Subject: Re: select call in devd From: Ian Lepore To: Eric van Gyzen , Warner Losh , Eitan Adler Cc: FreeBSD Hackers , zrj@dragonflybsd.org Date: Wed, 14 Feb 2018 09:35:38 -0700 In-Reply-To: <76665530-c7f1-cbe7-252b-a1d146b0f51d@vangyzen.net> References: <76665530-c7f1-cbe7-252b-a1d146b0f51d@vangyzen.net> Content-Type: text/plain; charset="ASCII" X-Mailer: Evolution 3.18.5.1 FreeBSD GNOME Team Port Mime-Version: 1.0 Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 16:35:44 -0000 On Wed, 2018-02-14 at 09:30 -0600, Eric van Gyzen wrote: > On 02/14/2018 09:13, Warner Losh wrote: > > > > On Wed, Feb 14, 2018 at 12:13 AM, Eitan Adler wrote: > > > > > > > > Hi all, > > > > > > select(2) is declared with restrict for the pointers for fd. Can y'all > > > confirm this is the correct fix? > > > > > No. It's not. Select is not declared with restrict parameters. pselect is, > > but select is not. > You're right, it's not, but it /should/ be: > > http://pubs.opengroup.org/onlinepubs/9699919799/functions/select.html > > Issue 6 > The restrict keyword is added to the select() prototype for > alignment with the ISO/IEC 9899:1999 standard. > > > > > There's no real call to change it. > ...unless he intends to mount a valiant effort to fix our declaration. > > Eric The fix isn't correct because of posix and/or a restrict keyword so much as being the right thing to do because the only fd in the fdset is open O_RDONLY, and it's not a socket that can provide OOB notifications, so the fdset should be passed only as the readfds argument because the other two types of events just can't happen. -- Ian From owner-freebsd-hackers@freebsd.org Wed Feb 14 16:51:55 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 32565F0DC5D for ; Wed, 14 Feb 2018 16:51:55 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-io0-x242.google.com (mail-io0-x242.google.com [IPv6:2607:f8b0:4001:c06::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B76B1819A8 for ; Wed, 14 Feb 2018 16:51:54 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-io0-x242.google.com with SMTP id 72so25830331iom.10 for ; Wed, 14 Feb 2018 08:51:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=jPxaHsuA0jmkOPN1Ja91SjqcKpBsOZssGop2duUCUlQ=; b=Ttr5MVSuvAjMIRWQDT0SyoqI5owtZpEj1vNCUFK8iQUIIOCi64ZudOgmPjGgZpgg5s EvW0aWXgDKO8ulJRvRnBwUJxO+LB2z8t8+DXf0Fa+Jn694Nw27WKgQfDkg1HEf1v7pp8 JK0OvYZWWplDEMCe1UkoUiXmSGD78TINNe+X+71rsf6bhauvsjOZZfzwYZzaPfchk8JS CaSfS/jG5Fa3aNnCMqMHXCtNmSAbfBOd5UbOqQRGK/r5a+VfnNdmbtESjRwbl1Zogagh 3rwpMnf9AHVuOy+YcDxYgPCZ/dT3qjGhENocaObnfSLIkMOiIlRp5kCABppwq4M3sfYE 9gFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=jPxaHsuA0jmkOPN1Ja91SjqcKpBsOZssGop2duUCUlQ=; b=Pr1cbig6VpfXwlIto4SWz9A9pxOt6fjU3HnSGpBgNUOh3TlxWwC1DFcYonNlLu54ZK uJzTvXzXTvxGYaxlPyZQFDDP/cxVCcKrj/nPm0IbvYyQ168446LBQetVjRb4Ko+Pv1Rv KfZkYIjSyo3bq4er54zeSKYWDV1wWU2rrlgVQHniPdv/sjDBIfkWNUHkeqGZ/KzGhPG2 igZLkvuJ7OemHpGSR7OAyOYuFzGHBkws6AxKPB4WL+dTW2E2Zgc9nnxBIzOJVMSLHqWo SmWKs9SaCrzgXJaMwSXi16W4O0Pgj2EUKqso1JU9lwH+n88U7oSM3/r6x4N0dSobmhHJ GtHw== X-Gm-Message-State: APf1xPAL3RNtcT8rNwHliVGvuyIvZp19WiFd0m4KzjeDiXUHYmVhveTf N133Yi+KlKWc3FY8KY6SHxNoZ2xhmC3O/GB++GjwWw== X-Google-Smtp-Source: AH8x226EIkaulc1/m3XnfzYsw+j0za762TLSnPkoBVVqw0mQs4GgOqICB18/CRwRy6EvYX2pvNDlcxs36XpFWgJczX0= X-Received: by 10.107.167.69 with SMTP id q66mr6085669ioe.130.1518627113934; Wed, 14 Feb 2018 08:51:53 -0800 (PST) MIME-Version: 1.0 Sender: wlosh@bsdimp.com Received: by 10.79.201.67 with HTTP; Wed, 14 Feb 2018 08:51:53 -0800 (PST) X-Originating-IP: [50.253.99.174] In-Reply-To: <1518626138.72050.29.camel@freebsd.org> References: <76665530-c7f1-cbe7-252b-a1d146b0f51d@vangyzen.net> <1518626138.72050.29.camel@freebsd.org> From: Warner Losh Date: Wed, 14 Feb 2018 09:51:53 -0700 X-Google-Sender-Auth: sbrccHxfuqjH8x_viGIzWcImls4 Message-ID: Subject: Re: select call in devd To: Ian Lepore Cc: Eric van Gyzen , Eitan Adler , FreeBSD Hackers , zrj@dragonflybsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2018 16:51:55 -0000 On Wed, Feb 14, 2018 at 9:35 AM, Ian Lepore wrote: > On Wed, 2018-02-14 at 09:30 -0600, Eric van Gyzen wrote: > > On 02/14/2018 09:13, Warner Losh wrote: > > > > > > On Wed, Feb 14, 2018 at 12:13 AM, Eitan Adler > wrote: > > > > > > > > > > > Hi all, > > > > > > > > select(2) is declared with restrict for the pointers for fd. Can > y'all > > > > confirm this is the correct fix? > > > > > > > No. It's not. Select is not declared with restrict parameters. pselect > is, > > > but select is not. > > You're right, it's not, but it /should/ be: > > > > http://pubs.opengroup.org/onlinepubs/9699919799/functions/select.html > > > > Issue 6 > > The restrict keyword is added to the select() prototype for > > alignment with the ISO/IEC 9899:1999 standard. > > > > > > > > There's no real call to change it. > > ...unless he intends to mount a valiant effort to fix our declaration. > > > > Eric > > The fix isn't correct because of posix and/or a restrict keyword so > much as being the right thing to do because the only fd in the fdset is > open O_RDONLY, and it's not a socket that can provide OOB > notifications, so the fdset should be passed only as the readfds > argument because the other two types of events just can't happen. > Yea. Poll is likely a better interface. Warner From owner-freebsd-hackers@freebsd.org Thu Feb 15 08:10:51 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A86B7F05F6B for ; Thu, 15 Feb 2018 08:10:51 +0000 (UTC) (envelope-from lists@eitanadler.com) Received: from mail-yw0-x22d.google.com (mail-yw0-x22d.google.com [IPv6:2607:f8b0:4002:c05::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4CD3E683D6 for ; Thu, 15 Feb 2018 08:10:51 +0000 (UTC) (envelope-from lists@eitanadler.com) Received: by mail-yw0-x22d.google.com with SMTP id e65so8060565ywh.9 for ; Thu, 15 Feb 2018 00:10:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eitanadler.com; s=0xdeadbeef; h=mime-version:from:date:message-id:subject:to; bh=qHdtZVPrVLjizC7UeFuCXHILaFssjqC8C2QD2KtK2gg=; b=gLdkT7bNFqNYX6FYGMJSbUKq35Aprd7Wmb/325Ba8Gg6oZUMk4XEcYsqZLYYP0l2zs TyOIPSXykV8Rxqg9g6WjMS8Pzzbl9CS9C0Ceq08WolOQrb12Ssp8UDZfm/KXjAKwXHcT l5tKLptHDZ/HQHfSel99uCogmoMMP5dLZHHLU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=qHdtZVPrVLjizC7UeFuCXHILaFssjqC8C2QD2KtK2gg=; b=Rp34oXXeSZOGV/5LSwvGr2PrQan4ZeyUN/9QogVUM/U5NoiE+D1Rcn8/jqH76itd7Q zZ5O4U+7AUXc3UhBR54Pe03U/5II7CxthRq/I+oFUIpCw5suaWJQYG5FplLJUZirzC+/ T0UT7A40B+4mv9OIGSaOXU275j97SE58tv9c/IRvaArHGpKrZb7sKqMsUZFppjGqDiqG 7/BsTE7kqa8j6QB9PwwPu6f/0BG3H0KMqmQBt9Aug+gddAmvh0/NNzcTI1x561e+Z1UZ rKbUBccut9Iyq7JS4n1IbBUMpfm7qhS6ofJLtV3Yhf7qE0HpjpzEM+uJ13HVXvhag3o3 9hXw== X-Gm-Message-State: APf1xPARZhqOvxF8maKCGm1JeDtoSbjhEW6ZC556CBL2ldrkyzdFjDIJ z1wGO2O0HrSMcDYCJentjsR2BQvZO0Ewx8W0WxloNsl3 X-Google-Smtp-Source: AH8x225ihSIQ21Y4hqWubzAZsCEQa+SzlLj1/zBrgfOEr2Abn+ED7eUfCpM/3ca/ky1bR8YphoOjuTRqMiUhDRa3+lc= X-Received: by 10.37.189.135 with SMTP id f7mr1388193ybh.486.1518682250301; Thu, 15 Feb 2018 00:10:50 -0800 (PST) MIME-Version: 1.0 Received: by 2002:a25:7107:0:0:0:0:0 with HTTP; Thu, 15 Feb 2018 00:10:19 -0800 (PST) From: Eitan Adler Date: Thu, 15 Feb 2018 00:10:19 -0800 Message-ID: Subject: Marking select(2) as restrict To: FreeBSD Hackers , Warner Losh Content-Type: text/plain; charset="UTF-8" X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Feb 2018 08:10:52 -0000 Hi all, POSIX requires that the fd_set arguments in select(2) be marked as restrict. This patch attempts to implement that. (a) Am I missing anything? (b) Anything in particular to watch out for? (c) Assuming an exp-run passes any reason not to commit? Index: lib/libc/sys/select.2 =================================================================== --- lib/libc/sys/select.2 (revision 329296) +++ lib/libc/sys/select.2 (working copy) @@ -39,7 +39,7 @@ .Sh SYNOPSIS .In sys/select.h .Ft int -.Fn select "int nfds" "fd_set *readfds" "fd_set *writefds" "fd_set *exceptfds" "struct timeval *timeout" +.Fn select "int nfds" "fd_set * restrict readfds" "fd_set * restrict writefds" "fd_set * restrict exceptfds" "struct timeval *timeout" .Fn FD_SET fd &fdset .Fn FD_CLR fd &fdset .Fn FD_ISSET fd &fdset Index: lib/libc/sys/select.c =================================================================== --- lib/libc/sys/select.c (revision 329296) +++ lib/libc/sys/select.c (working copy) @@ -41,7 +41,7 @@ __weak_reference(__sys_select, __select); #pragma weak select int -select(int n, fd_set *rs, fd_set *ws, fd_set *es, struct timeval *t) +select(int n, fd_set * restrict rs, fd_set * restrict ws, fd_set * restrict es, struct timeval *t) { return (((int (*)(int, fd_set *, fd_set *, fd_set *, struct timeval *)) Index: sys/sys/select.h =================================================================== --- sys/sys/select.h (revision 329296) +++ sys/sys/select.h (working copy) @@ -101,8 +101,7 @@ int pselect(int, fd_set *__restrict, fd_set *__res const struct timespec *__restrict, const sigset_t *__restrict); #ifndef _SELECT_DECLARED #define _SELECT_DECLARED -/* XXX missing restrict type-qualifier */ -int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); +int select(int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, struct timeval *); #endif __END_DECLS #endif /* !_KERNEL */ -- Eitan Adler From owner-freebsd-hackers@freebsd.org Fri Feb 16 11:09:39 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4C8E1F08385 for ; Fri, 16 Feb 2018 11:09:39 +0000 (UTC) (envelope-from embaudarm@gmail.com) Received: from mail-oi0-x236.google.com (mail-oi0-x236.google.com [IPv6:2607:f8b0:4003:c06::236]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D8884735BD for ; Fri, 16 Feb 2018 11:09:38 +0000 (UTC) (envelope-from embaudarm@gmail.com) Received: by mail-oi0-x236.google.com with SMTP id 8so2014981oix.7 for ; Fri, 16 Feb 2018 03:09:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=ib24Y2Sav/FYo7VlEwhjOfnoIa3Pmamu5vUH3OsBfzY=; b=oHHnWE2HZHT4PbpZQEz8iJXAPVSnXs6RNi9CJ7VCLHpxSQJ5mYBFHogC19sbLnKayH 5eFBRTaRuwa8Pt0L4H81wqe1/KlOl/zRhS2OFxjx8dI4weuQvdz+6VfOF6otRwQB/Z2c xD0UOUvr0tADWQkugjI3ytVWAm8G5koOSx6wou/L9vYf++Jwyw/MrE591lF+4Egsojaz vKzU2kcZ6KKeoE8Kxci55YrY1JvEdOpFAbrbmXHerBqvzDd7vwVjTvhFDcnyZdH9I5oA nvgjOIkxbJ+R9aayJxOXPWxMT+oHzjHfPaJYISykfMACEi85fuXfr63pDNR6EACKPu0q eIKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ib24Y2Sav/FYo7VlEwhjOfnoIa3Pmamu5vUH3OsBfzY=; b=N4/SB3OZNAJB6gD4+sY/dNlcJRlFQSTSOT4+rvLQnIIHMCIQWt8f9YyuD9usilxphs yai4U2hjnR8jG0Qit6104z6gLUytSrieNsAdDUqmw8xIG+ZBBk1CuaP1x+P3SqmtIPTR x0Rj9sOjFT+LrLstdbBlq5GwN/hHywUoK0ewT6u6B5kTiVIj3OPue6EzDjBJqKqUAxXr XEhKg5ia+m0QfGQJNBrPJcbbq9pzxmmsaAuWFO1YYFh/1Lp1Tz7Q4xvFaxl2ThaZWjYV I70WQ2DNz2rKJMW5eyb7Mk1+8voUnUMwKgcoPn5EQ5WHks5CH4lVQsmRGZZKt6YkiXSr krYQ== X-Gm-Message-State: APf1xPDwBrphPDgtFrLwAQ3sCrWxfPJzLsyYWetRR10MPk8DoRhZrIjp 1Q/sj/r4aKqCNTmckexmrcmJXWdXLx/QnBdnKS8= X-Google-Smtp-Source: AH8x227QIv6/6YTkjbIgs26LHaBtK14HejjtItz+2L6BXwc/9SDuL/aC6oG+0Ik858b+GBWP6kGwO/d7Z7KzYqaCiXU= X-Received: by 10.202.243.84 with SMTP id r81mr3842527oih.5.1518779378047; Fri, 16 Feb 2018 03:09:38 -0800 (PST) MIME-Version: 1.0 Received: by 10.157.6.77 with HTTP; Fri, 16 Feb 2018 03:08:57 -0800 (PST) From: Lee D Date: Fri, 16 Feb 2018 06:08:57 -0500 Message-ID: Subject: How to set various locales with setlocale()? To: freebsd-hackers@freebsd.org Content-Type: text/plain; charset="UTF-8" X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Feb 2018 11:09:39 -0000 Hi, I have a C program that needs to print the date in the correct form for the appropriate locale. Unfortunately, setlocale() will not accept any of the locale names in /usr/share/locale/, (which is documented in the man page for setlocale()). This is an embedded program running on custom arm hardware, not a normal user system, so I am trying to do everything from within the C program. Setting an environment variable and rebooting would be cumbersome. Do you folks have any suggestions on how to accomplish this goal, or how to make setlocale accept the locales listed on the system? Thanks. From owner-freebsd-hackers@freebsd.org Fri Feb 16 19:29:40 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E381DF0AF43 for ; Fri, 16 Feb 2018 19:29:39 +0000 (UTC) (envelope-from leeb@ratnaling.org) Received: from mail-it0-x230.google.com (mail-it0-x230.google.com [IPv6:2607:f8b0:4001:c0b::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7AD916DCE2 for ; Fri, 16 Feb 2018 19:29:39 +0000 (UTC) (envelope-from leeb@ratnaling.org) Received: by mail-it0-x230.google.com with SMTP id o13so2990680ito.2 for ; Fri, 16 Feb 2018 11:29:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ratnaling-org.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=kpIO82StTtWmRj6vvFJGqHWwE6sPX+TGjuxe2S03Mj0=; b=iHxubR0asxcIn/BYvJwMdBRwQs5cJFVfTChMf4vG1ke9iX//StX9QwRsb7lO+G9ljl 5L3RAjIJHqT3Rumw9ir8bV3oUa+oSo/dv8ORtB1fwf5f1ley4H1S8nhw28U1hRthpfzO PJ13x5BHlcd0Aev79r9kQtwUwvzPzgTtuDdb5nha90Sb3DaWJgVilvcGgDOBbe1fYl6R BtyoOHJxLLo0sdvF2moVL6264mRwfIroGq9i2NoomYF9L6+8nVHEE9El4QT5pLrDW2HX iQaBlwHfw/U/3PkAbV4o4YloHpCsSn7INxegpMHPSML2uZED6u1SCh223vQY6CnIqPl2 bKJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=kpIO82StTtWmRj6vvFJGqHWwE6sPX+TGjuxe2S03Mj0=; b=p9gCOjYiXLj+P33fmM4l4hC6EmzIlcamHlCwqSFZkKNq4DO6xEnKzBzrbiI0Xd4CpQ UpMIZcCLEzxkGnOxQn7lT21CwvtCg8dkuQg379TSZmWOPSBydEj1PUYbWKWo7xlxA4Ha n7Rr99WS7tdk41/Y3KBqlTQKkzkunSebQPMqV9yYUVLUGtXXWG9VhIwbIqr3SucnWZSl OondykJM3bvOv5bJg4kJMrGyA3Y1mgtDzWi2kZrwzr9SLoelev+RDJaI2BoBgr4zcRwQ n+zXOr4+OFym6e+WDHJ0ZtMBUwGBj156DZDAypyncivhpNbKrBzw62ZB8a6TDXEakTU9 bVRw== X-Gm-Message-State: APf1xPCVbIsTKbBQnjNSBNxv0PcWs8+Pn0ou/xIf2jK9lRRiG+N9rvgI czEQRhVaXcm875mqG4rjZ/7TQx6fN7wkAAm2Pw/FG4AQ X-Google-Smtp-Source: AH8x226omVHaKlyW2dchQIk6nrO25RaNk4/TVQOCzUE3M5F5OyMwv0EFNZG8yz2Cxvu/KWLuY4mliWE8XhyQqfEDqZg= X-Received: by 10.36.208.4 with SMTP id m4mr10271462itg.69.1518809378580; Fri, 16 Feb 2018 11:29:38 -0800 (PST) MIME-Version: 1.0 Received: by 10.79.225.66 with HTTP; Fri, 16 Feb 2018 11:29:37 -0800 (PST) In-Reply-To: References: From: Lee Brown Date: Fri, 16 Feb 2018 11:29:37 -0800 Message-ID: Subject: Re: How to set various locales with setlocale()? To: FreeBSD Hackers Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Feb 2018 19:29:40 -0000 On Fri, Feb 16, 2018 at 3:08 AM, Lee D wrote: > Hi, > > I have a C program that needs to print the date in the correct form > for the appropriate locale. > > Unfortunately, setlocale() will not accept any of the locale names in > /usr/share/locale/, (which is documented in the man page for > setlocale()). > > This is an embedded program running on custom arm hardware, not a > normal user system, so I am trying to do everything from within the C > program. Setting an environment variable and rebooting would be > cumbersome. > > Do you folks have any suggestions on how to accomplish this goal, or > how to make setlocale accept the locales listed on the system? > > > Different architecture, it works as advertised. Maybe ask the arm folks? $ cat a.c #include #include #include int main() { time_t now; char *s; s =3D setlocale(LC_ALL,"en_US.US-ASCII"); char buf[100]; time(&now); strftime(buf,99,"%c",localtime(&now)); printf("%s\n", buf); s =3D setlocale(LC_ALL,"zh_TW.UTF-8"); strftime(buf,99,"%c",localtime(&now)); printf("%s\n", buf); } $ cc a.c $ ./a.out Fri Feb 16 11:26:58 2018 =E9=80=B1=E4=BA=94 2=E6=9C=88/16 11:26:58 2018 FreeBSD apron.ad.nyingma.org 11.1-RELEASE-p6 FreeBSD 11.1-RELEASE-p6 #0 r328506M: Sat Jan 27 23:09:57 PST 2018 root@apron.ad.nyingma.org:/usr/obj/usr/src/sys/GENERIC amd64 From owner-freebsd-hackers@freebsd.org Sat Feb 17 15:07:27 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 76972F169BC for ; Sat, 17 Feb 2018 15:07:27 +0000 (UTC) (envelope-from oshogbo.vx@gmail.com) Received: from mail-lf0-x22d.google.com (mail-lf0-x22d.google.com [IPv6:2a00:1450:4010:c07::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D2CAB83C12 for ; Sat, 17 Feb 2018 15:07:26 +0000 (UTC) (envelope-from oshogbo.vx@gmail.com) Received: by mail-lf0-x22d.google.com with SMTP id t204so5067630lff.9 for ; Sat, 17 Feb 2018 07:07:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=P+Mxq0E6VqBQMrIV6eZo4C0sL0KNprT9y5x/UXlUbCI=; b=fqV87ka+p/aAxsdX2HRb4nBhkdyU+weuviywa5j6VL4iiZDCDgm/5OXM1ppF68f1H/ bguqUs8XB8heBxcl0DO2kdaoV89WfhLOM6TeqcKi8oWTUlT01NlTUAbjiA2nK0+MG9Vh rRLa2dgaWR+/X6EvQCfUBNA8KtKC6cJau1igbtKo7fFTS7U9ttFRkDkXHC4C9Hn7vh8L Tw9y6jZf6tlSmXAwSKQ5y0C3e92z1FKxgt1/1Ij7/R12Gr9K/MLoPu3FDodtMgbHRXKv Kem5KRCtIOJZs9/JHMD4nMutqE6+vYYfaogM0COcjxukvqbKc+4b/+QogCXfWmcEQC6M 6cbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:subject:message-id :mime-version:content-disposition:user-agent; bh=P+Mxq0E6VqBQMrIV6eZo4C0sL0KNprT9y5x/UXlUbCI=; b=iPU4eTwQnLMe7c+VGCZq1zj360x/5FCnpjCslZ3goc1daILay/EfXkvlKdNU/d9gUO IUnVRyf7OhX0f7xYLONXZwKTEdHXvvMWNcVblB1HFou8SyGuubyGv2TXZvz69vyRIDNa i2YUP69vLQOvIuSvF4PCvCu1lXwvVdilZrHoPWd4cnKGHWPFgWchDGX1jzg0cr8WXRaT 2aHOAj7t0tpb/iu9fxm84wo1niV1n0KwGU777n+yAZMT4O61SzMJ9wY6IG1/ivt03/hN 0l1ziOvAuNdBxjMZswlhJZibAu6s5TErNXj6r1BLLAA0/QccA2EdPONxOhZ4EFtK08Zu 5y4g== X-Gm-Message-State: APf1xPBYxTqHo5zQuNJQ4fb4NPvrzAJzoAG/v2TiXVn44dVMY+0AtKWP 4ZtrCYBgk3pwNCj2l7MMRG3V/mSC X-Google-Smtp-Source: AH8x226r2h0dPvwI+WhN0vkpsp+X3aWOGCgSAMZUXF6qSq+QDoBBKHaAQ81lKCgtq4dWlGTF+9PyIg== X-Received: by 10.46.80.6 with SMTP id e6mr1562920ljb.129.1518879737772; Sat, 17 Feb 2018 07:02:17 -0800 (PST) Received: from x-wing (87-206-170-77.dynamic.chello.pl. [87.206.170.77]) by smtp.gmail.com with ESMTPSA id s14sm3979921ljs.1.2018.02.17.07.02.16 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 17 Feb 2018 07:02:16 -0800 (PST) Sender: Mariusz Zaborski Date: Sat, 17 Feb 2018 16:02:24 +0100 From: Mariusz Zaborski To: freebsd-hackers@freebsd.org Subject: Where KASASERT fd < fdp->fd_nfiles should be? Message-ID: <20180217150224.GA61118@x-wing> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="lrZ03NoBR/3+SXJZ" Content-Disposition: inline User-Agent: Mutt/1.9.2 (2017-12-15) X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Feb 2018 15:07:27 -0000 --lrZ03NoBR/3+SXJZ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Some time ago mjg@ had an idea to cleanup use of the fget_locked function in the sys_capability. I implemented most of it and pjd@ accepted almost all changes (with one suggestion with I didn't figure out what to do with it). In my patch I remove one KASSERT from the cap_ioctl_check: int cap_ioctl_check(struct filedesc *fdp, int fd, u_long cmd) { u_long *cmds; ssize_t ncmds; long i; FILEDESC_LOCK_ASSERT(fdp); KASSERT(fd >=3D 0 && fd < fdp->fd_nfiles, ("%s: invalid fd=3D%d", __func__, fd)); ncmds =3D fdp->fd_ofiles[fd].fde_nioctls; if (ncmds =3D=3D -1) return (0); cmds =3D fdp->fd_ofiles[fd].fde_ioctls; for (i =3D 0; i < ncmds; i++) { if (cmds[i] =3D=3D cmd) return (0); } return (ENOTCAPABLE); } My question and problem is do we need this KASSERT? The fdget_locked checks if the fd is not larger then fd_lastfile. But the code from fdinit suggest that fd_lastfile can be larger then fd_nfi= les. pjd@ suggested that it can go over size of the table fd_ofiles array: while (fdp->fd_lastfile >=3D newfdp->fd_nfiles) { FILEDESC_SUNLOCK(fdp); fdgrowtable(newfdp, fdp->fd_lastfile + 1); FILEDESC_SLOCK(fdp); } So the question is do we need this assertion here or maybe should we move i= t to the fget_locked()/fdget_locked() functions? Thanks, --=20 Mariusz Zaborski oshogbo//vx | http://oshogbo.vexillium.org FreeBSD commiter | https://freebsd.org Software developer | http://wheelsystems.com If it's not broken, let's fix it till it is!!1 --lrZ03NoBR/3+SXJZ Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEkD1x0xkJXVVY1Gwf38KEGuLGxWQFAlqIQ/oACgkQ38KEGuLG xWTwaA/9Hu63Q3Q/iQhWicJNBOgXxsrhTfEoTAGybhNfq2FwH5QsHGHu7sIHZj2M dxCe//FzTdu03JIY9QunCblcXLEqdJhwwlkE8lHvj+WSEHqUMcertfGIc61MYhzw p7QHJMAL6mCmWNrFi8kan02C8KisyIBmjONksRGY1faxEQpaFJGj0PkupNJbn2FE xs9psn/JZEm3gnF09l6Uh+mosJ2kKuIfFZO7AcvdAMv9roHsvpQMznw1DckytJ/b u78/nidSVHlDjXr6aYr8tw6o/8XU7ukcxwDC+JwoXmREldQvphpotO68myFRXTUR PMSaHy81L9QTXv3I4I6i0pnjfBB4hz+7ptJsIfG4DRUh8vwb+8/4ffFIW3rrcYiZ pTVacUsNksGYp5xfHO/NZtu1262IgKJ8Lruj93NUYXOET2vsCdDILJLc/jyMvykf Bqxjg9ISJZ0nktF4ENRcXpof6991UKM65rMAgRNlgQ5O+LAFgsmpGc9XT7zXmIdB x/f1BHrlY/HnmsakxMZHqy74oTIUfJ5gwIDuzCGwUXbHyxDnUrdVkLfba3cDc9Mx 238WGfTtSaXwJ++wrzwmP/P2lvcCiWX6rqH93gorygmdjgysIAq6u+vliXzDc4pk BZJ+c9AIhiiG8wb8Wmf+DmI73VF/J3ee8pK5p1346FuLqUMxFzs= =MYn4 -----END PGP SIGNATURE----- --lrZ03NoBR/3+SXJZ-- From owner-freebsd-hackers@freebsd.org Sat Feb 17 15:23:42 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 14E87F1844D for ; Sat, 17 Feb 2018 15:23:42 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-qk0-x242.google.com (mail-qk0-x242.google.com [IPv6:2607:f8b0:400d:c09::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AD57C84F14; Sat, 17 Feb 2018 15:23:41 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-qk0-x242.google.com with SMTP id z197so7388671qkb.6; Sat, 17 Feb 2018 07:23:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=PvyAoorYC6eh7RgX5lFicBHTckBDijLGRqtbiaHg6Ws=; b=HeV+N+SKVq5VC4/4b8Rmt3scRbmSKWYEiCybiWCreD/CHGym1WdihToEuBtTJ7N4Tp tZym8d9aB4sAy1nQx9om9J8rpTHx+4meqZmmUqUjafsfw4WF7lMTIDaXvF4Tv9rvUKZ1 Rqn6w3vM45A02tO56jUXLAtYnAyy2WcC4/t0SgnuUDxaMe6EZJGZ04ubazCjOJuV7rN5 LyoH2vU9Yd3XfIClQBWJyoroZtlTDta/RW45ixlAknF9x8Mtqo1oRPM9nR8VHEe+vkbT UVabgIXN4z5WiY5d31R2J3cZM0OJyGCAkjtANlMHQw2OmqCClQbvHMGQtKv2vg4UgCXz YLwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=PvyAoorYC6eh7RgX5lFicBHTckBDijLGRqtbiaHg6Ws=; b=Gt/kYDmiAirxvJs9cXF6W6BLMEEfH2QCZu7jZdwxTIy2Op/Z+NraC4vsKgTbaTCrh3 +ESoM+nAZY/zcUoxunWjKWCI8lw5P8PRk3aSwK/optVCCxmKacJN5vGBZFy7eLOhU7FM Ajb2bq6hB2LDNgu8PXzRuv6CPnB27rYvK4hHuLlKVxBZjCBF4ogbqKRTwWxceLVrJg6I zPoHj2UKHlzjxYMQpvc4Vfkoaju3vd5jwmRk/ubK0aD3BAk6d8pS/5u8JiCqEaVowBgt 6uLkEvFYvrXc50ZxOE9BxPUdR3RbQV4w2FOJzvtRcE6Ppf9aQgGcDKwS4xDBXe9vHDFU 7qlw== X-Gm-Message-State: APf1xPD7X+LbVJY+MCT/9laSnnZk5ypDxCAfFkFzgIN4k0o9kti/kYFo uQyqxgbZYdv8ttx3/qrpL7WS6ItoALlSzPll2SPXYA== X-Google-Smtp-Source: AH8x226h89pYrkPaGXVlPwvsp9owIiQYzuJp5wW7S2K20wGstPlyPQqR7n7nOAXd21u3nlwu/rlU04f2mRmod/fX6Ko= X-Received: by 10.55.222.9 with SMTP id h9mr15650942qkj.58.1518881021190; Sat, 17 Feb 2018 07:23:41 -0800 (PST) MIME-Version: 1.0 Received: by 10.237.58.99 with HTTP; Sat, 17 Feb 2018 07:23:40 -0800 (PST) In-Reply-To: <20180217150224.GA61118@x-wing> References: <20180217150224.GA61118@x-wing> From: Mateusz Guzik Date: Sat, 17 Feb 2018 16:23:40 +0100 Message-ID: Subject: Re: Where KASASERT fd < fdp->fd_nfiles should be? To: Mariusz Zaborski Cc: freebsd-hackers@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Feb 2018 15:23:42 -0000 On Sat, Feb 17, 2018 at 04:02:24PM +0100, Mariusz Zaborski wrote: > > KASSERT(fd >= 0 && fd < fdp->fd_nfiles, > ("%s: invalid fd=%d", __func__, fd)); > > > My question and problem is do we need this KASSERT? > The fdget_locked checks if the fd is not larger then fd_lastfile. > But the code from fdinit suggest that fd_lastfile can be larger then fd_nfiles. > pjd@ suggested that it can go over size of the table fd_ofiles array: > while (fdp->fd_lastfile >= newfdp->fd_nfiles) { > FILEDESC_SUNLOCK(fdp); > fdgrowtable(newfdp, fdp->fd_lastfile + 1); > FILEDESC_SLOCK(fdp); > } > > So the question is do we need this assertion here or maybe should we move it to > the fget_locked()/fdget_locked() functions? > While the assertion arguably can be removed, it is most definitely valid. fd_nfiles signifies the size of the table, while fd_lastfile the highest used slot. By definition it must fit the table. The code sample is used on fork where the existing table is duplicated. Allocation of the new table is performed with locks dropped, which means the old one can grow in the meantime. The while loop ensures the new table will have the right size no matter what. -- Mateusz Guzik From owner-freebsd-hackers@freebsd.org Sat Feb 17 15:38:20 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 55AC9F198C7 for ; Sat, 17 Feb 2018 15:38:20 +0000 (UTC) (envelope-from oshogbo.vx@gmail.com) Received: from mail-lf0-x22d.google.com (mail-lf0-x22d.google.com [IPv6:2a00:1450:4010:c07::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A293585C77 for ; Sat, 17 Feb 2018 15:38:19 +0000 (UTC) (envelope-from oshogbo.vx@gmail.com) Received: by mail-lf0-x22d.google.com with SMTP id h78so7783319lfg.6 for ; Sat, 17 Feb 2018 07:38:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=ATKsVdUIJk6Vr1tpxNKi1PSD+vnONmnhgXFaDrishs0=; b=l72JkXUPsdB16MxtjGxPcd3ZkD69Jn8cmzTF+e+K+h3kAnGj213sAxDiJOVroAW5rs IUUx9N5lLf3bPPEdXqvztqu6RO6VdF2IncHrU1ukSfNZnTRj+jY4gbsG9isCOGyHKE/Q xpSHVhGRoxiOiXfqLgUPqFOES1aUW+Odv+675lrUnDAazYVEK82HIchI7N8t+b/ejacT H2QmKIGT9BHc1L3HjsaBOpeHX6RsQZ0ZKoBMViP7RuuSlAbVjnvRcH6kg6Hj9LswNHJ+ ruUHC0ygaNeURsc3ZpV8Utek8Hbawh8zsxXst/aSfCL+LLn0PeJs8iZxltL79ayZL0Hr G7qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=ATKsVdUIJk6Vr1tpxNKi1PSD+vnONmnhgXFaDrishs0=; b=oVDfmY6Hzogqwzk8lSzZ2R49PnK6B7hiGh6bAwrTWkW5NjurWNlA44OvCxagcWueBz 7uJJF/bqXTTo1v/8p+Emt+Gu28PMWNLkhpkZGl/D1dN6tO1DVoodS9AoQrAT1fOwwn9E ByhuKhboLvz9+ADL75moenHkX5ljZNM4e4i9jVNMxkExw6sEPYyuivSpWKsUTsngG88V S4fml+Rop4Nb8YqXVP113ttbJ82av5ruzU0x//astgXibIgWoai4/fJYq90uBrzzQ3Vz NG57e+GAJgmfZ4gdVLX8/8kez1Gk6c3BzrflMlwKEOb6FRGlbztMFvW5j1qdJcCDkWc9 HGdw== X-Gm-Message-State: APf1xPBb1Dslkj8+9hFfKiBAsBMiJujhVoNH+meZrY2HIcdubDaj6SJZ t2ptqPjTfRL91nX34xr3WcU= X-Google-Smtp-Source: AH8x224rw2Vfj2My6YpgQscWJPCYzaehd39imiJFwB2ye7sU28M2Qx8R0XGnRrKqrjqhbrLsehhFbg== X-Received: by 10.25.205.148 with SMTP id d142mr6217020lfg.9.1518881898334; Sat, 17 Feb 2018 07:38:18 -0800 (PST) Received: from x-wing (87-206-170-77.dynamic.chello.pl. [87.206.170.77]) by smtp.gmail.com with ESMTPSA id r9sm3990927ljc.18.2018.02.17.07.38.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 17 Feb 2018 07:38:17 -0800 (PST) Sender: Mariusz Zaborski Date: Sat, 17 Feb 2018 16:38:25 +0100 From: Mariusz Zaborski To: Mateusz Guzik Cc: freebsd-hackers@freebsd.org Subject: Re: Where KASASERT fd < fdp->fd_nfiles should be? Message-ID: <20180217153825.GB61118@x-wing> References: <20180217150224.GA61118@x-wing> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="6sX45UoQRIJXqkqR" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.2 (2017-12-15) X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Feb 2018 15:38:20 -0000 --6sX45UoQRIJXqkqR Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, Feb 17, 2018 at 04:23:40PM +0100, Mateusz Guzik wrote: > On Sat, Feb 17, 2018 at 04:02:24PM +0100, Mariusz Zaborski wrote: > > > > KASSERT(fd >=3D 0 && fd < fdp->fd_nfiles, > > ("%s: invalid fd=3D%d", __func__, fd)); > > > > > > My question and problem is do we need this KASSERT? > > The fdget_locked checks if the fd is not larger then fd_lastfile. > > But the code from fdinit suggest that fd_lastfile can be larger then > fd_nfiles. > > pjd@ suggested that it can go over size of the table fd_ofiles array: > > while (fdp->fd_lastfile >=3D newfdp->fd_nfiles) { > > FILEDESC_SUNLOCK(fdp); > > fdgrowtable(newfdp, fdp->fd_lastfile + 1); > > FILEDESC_SLOCK(fdp); > > } > > > > So the question is do we need this assertion here or maybe should we mo= ve > it to > > the fget_locked()/fdget_locked() functions? > > >=20 > While the assertion arguably can be removed, it is most definitely > valid. >=20 > fd_nfiles signifies the size of the table, while fd_lastfile the highest > used slot. By definition it must fit the table. >=20 > The code sample is used on fork where the existing table is duplicated. > Allocation of the new table is performed with locks dropped, which means > the old one can grow in the meantime. The while loop ensures the new > table will have the right size no matter what. So maybe we should go in more general approach and move this KASSERT to the fget_locked and fdget_locked functions? Thanks, --=20 Mariusz Zaborski oshogbo//vx | http://oshogbo.vexillium.org FreeBSD commiter | https://freebsd.org Software developer | http://wheelsystems.com If it's not broken, let's fix it till it is!!1 --6sX45UoQRIJXqkqR Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEkD1x0xkJXVVY1Gwf38KEGuLGxWQFAlqITG0ACgkQ38KEGuLG xWRtrQ/+IsfQ4Z3+6tVzIsPzRAlRh6h6dxydBcZn0EsgJDLt+m2IJ/7aKflltWTv FhC8uf01sY/32f7lBODHDGYcToUS3gxmS/QRNkm4kV86fzXVmz8q2/nsPVajFJZa Wz0zoBfOIsf/4/BReG89w2kQE9qMXI5fy2H2t/3CWs6MjO38KaEVK7KGhZJtfvjM eROaJdz6qJeD1lbxvE2jeMWT1HU6pysttoV8ra1MUUJpGs5vVUT1sWD16O3YVSRK KdtmGIATIjzRHCiaMZoXr1ul1vrKOjV/O8kaF01lptneKkOJ6H7l5t6CSestUfFG KupLQYhvsUhGXXU+BoPDmIao4tUbwxIjHtR5BRM60lqUFeQr47Rflnyz2u67fQXz YzeVIr6zXKCzwALmYbPS6CBr/SM9rToUobjQlN+RLNG9qZ5LMAqm7uB9BfXT0gpU TkgQFvVCRHrrtGt0v3asCJvBCgLVTC4CxzAR1SBfJwv0VOamb5yiaEZ+AF6A2/Fu psgZUEgnfbsvfj6QWXHMvYO9j3xebCmEFL+xXUc65RyKmeKhXrLy3iVDU6Npsqma gI7grNnxisVfs/WdR2+3GH85Aoh8dH1ARehq6PXGqfcX/rHlpeiQNvkZpp/TkxJf 10HjrYpoh5jB7fKOpVELMc+BV6ptSh7qeMl1LtJZal/ECvyNsfU= =LrUW -----END PGP SIGNATURE----- --6sX45UoQRIJXqkqR-- From owner-freebsd-hackers@freebsd.org Sat Feb 17 16:02:20 2018 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BC498F1B8DD for ; Sat, 17 Feb 2018 16:02:20 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-qk0-x242.google.com (mail-qk0-x242.google.com [IPv6:2607:f8b0:400d:c09::242]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5A8F886D5A; Sat, 17 Feb 2018 16:02:20 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-qk0-x242.google.com with SMTP id g2so7440151qkd.12; Sat, 17 Feb 2018 08:02:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Qsl7oUiHG2KEboXg711eEv547emj+AHEGLvvbkb0iXA=; b=e/cNRcFZ6xcI6fzg+rrS4PG3v88CgP/Fe+RYSZ1l6Fx4MmEs43UNVHaaml+Ft88b8g 3/oE0SE1dUnFphiJVkOhAdKY775ReruAYU1SNOPycroFvl1NQE7irH7G4kuEQIZ0U089 QBppM6OKOS42MjdG3QSA12rKMQsAzdll7vIFKbrw5pIyTnUd1yTLLsNBqZY9j8gpfWXC v7ycK1Dix7UhMIgwTug2bXDXkjwPJAQ1SACoiAyunJ8VkMPzPoD+PEGi/twyURDaGr5f ireFHwex0OUkgzqR5mAFHioPHcoWX2By/IPERWg4orGWcWmD+tcZdwF7lUtndgUXj0Xm HBcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Qsl7oUiHG2KEboXg711eEv547emj+AHEGLvvbkb0iXA=; b=b9Kz0UfD7V23tqrBPg6rHdQmT4ZPPtR3GOx6aXc7FuSu1keU9SFqJNW+Nn5+DtyNo3 h7KSdzOlsZJ0UdwNjcvHE8lyJFklxQQ2o9WnY6LNsK2oTZoxq5S/OWiqqiusGkmntFwP xuXNX0yJ5VmHz9EuRD3iSvu5CC2/TUHysb84iRnmYfdmmNzoPsXYIafNQDELaqTvdNkL KLyXAVw5NLku+xgj4Tps+Uu1GUna66KsIYENh43fon2vC1UESvaWYsFsFzmZ2VfpsOS4 TH1MY9qZIyrdnFGJakFdZ2gpDSCHM+u1IL1Z7+sjCwvMC4FNQDcrJpmIOAdA5LyGfqq/ GnDA== X-Gm-Message-State: APf1xPCjF5YWMh7kRBrMsyXHq+/PnbW3XrYF7lV/1IGgoA5qSjjRx3wT G4T5LSGMX0oclLNbm5K7l2+AVRSRPd6YhqpnBHtSew== X-Google-Smtp-Source: AH8x227l70ghKLsD190Ovzy/ue01uyak6MOlgJLH+5ooHneesweeuxVp8Vi0NC+yUV4Pa/GsVysLi7yyVEB5DETTxYk= X-Received: by 10.55.74.2 with SMTP id x2mr14840672qka.314.1518883339957; Sat, 17 Feb 2018 08:02:19 -0800 (PST) MIME-Version: 1.0 Received: by 10.237.58.99 with HTTP; Sat, 17 Feb 2018 08:02:19 -0800 (PST) In-Reply-To: <20180217153825.GB61118@x-wing> References: <20180217150224.GA61118@x-wing> <20180217153825.GB61118@x-wing> From: Mateusz Guzik Date: Sat, 17 Feb 2018 17:02:19 +0100 Message-ID: Subject: Re: Where KASASERT fd < fdp->fd_nfiles should be? To: Mariusz Zaborski Cc: freebsd-hackers@freebsd.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.25 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Feb 2018 16:02:21 -0000 On Sat, Feb 17, 2018 at 4:38 PM, Mariusz Zaborski wrote: > So maybe we should go in more general approach and move this KASSERT to the > fget_locked and fdget_locked functions? > > If anyone is going to do anything with fd_lastfile, the right course of action is to whack it. A soft prerequisite is that someone takes care of the current hand-rolled bitmap implementation. -- Mateusz Guzik