From owner-freebsd-virtualization@FreeBSD.ORG Tue Sep 16 17:45:07 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 94DAE106566B for ; Tue, 16 Sep 2008 17:45:07 +0000 (UTC) (envelope-from bzeeb-lists@lists.zabbadoz.net) Received: from mail.cksoft.de (mail.cksoft.de [62.111.66.27]) by mx1.freebsd.org (Postfix) with ESMTP id 4E6A88FC23 for ; Tue, 16 Sep 2008 17:45:07 +0000 (UTC) (envelope-from bzeeb-lists@lists.zabbadoz.net) Received: from localhost (amavis.str.cksoft.de [192.168.74.71]) by mail.cksoft.de (Postfix) with ESMTP id 7E89641C647; Tue, 16 Sep 2008 19:45:06 +0200 (CEST) X-Virus-Scanned: amavisd-new at cksoft.de Received: from mail.cksoft.de ([62.111.66.27]) by localhost (amavis.str.cksoft.de [192.168.74.71]) (amavisd-new, port 10024) with ESMTP id u1ufIvkk+pAl; Tue, 16 Sep 2008 19:45:06 +0200 (CEST) Received: by mail.cksoft.de (Postfix, from userid 66) id 2BF0341C66F; Tue, 16 Sep 2008 19:45:06 +0200 (CEST) Received: from maildrop.int.zabbadoz.net (maildrop.int.zabbadoz.net [10.111.66.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.int.zabbadoz.net (Postfix) with ESMTP id CB5FB44487F; Tue, 16 Sep 2008 17:43:09 +0000 (UTC) Date: Tue, 16 Sep 2008 17:43:09 +0000 (UTC) From: "Bjoern A. Zeeb" X-X-Sender: bz@maildrop.int.zabbadoz.net To: Julian Elischer In-Reply-To: <48C780E4.2050207@elischer.org> Message-ID: <20080916174040.Y65801@maildrop.int.zabbadoz.net> References: <200809081655.m88GtxbV000906@repoman.freebsd.org> <48C780E4.2050207@elischer.org> X-OpenPGP-Key: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Marko Zec , FreeBSD virtualization mailing list Subject: Re: Vnet iteration X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Sep 2008 17:45:07 -0000 > Marko Zec wrote: Hi, >> http://perforce.freebsd.org/chv.cgi?CH=149433 >> >> Change 149433 by zec@zec_tpx32 on 2008/09/08 16:55:34 >> >> First-cut replacement of VNET_ITERLOOP_BEGIN() / >> VNET_ITERLOOP_END() kludges with VNET_FOREACH() constructs >> discussed at freebsd-virtualization@ >> Needs a bit more testing before merging over to >> vimage-commit2 branch. >> >> Differences ... > > [...] > >> + VNET_FOREACH(vnet_iter) { >> + CURVNET_SET(vnet_iter); /* XXX CURVNET_SET_QUIET() ? */ >> + INIT_VNET_NET(vnet_iter); >> + TAILQ_FOREACH(ifp, &V_ifnet, if_link) >> + (void)ifaddr_event_handler(NULL, ifp); >> + CURVNET_RESTORE(); >> } > > this looks great.. > > I'd like to see as much of this as possible in commit2 > and then I'd like to see it committed as soon as brokk, bz and others have > kicked the t[yi]res a bit. > :-) So can anyone bring it over to commit2? Marko, are you around? I had been generating a diff last weekend again to push this and found that the diff size changed from ~200k to ~800k so I suspect there was a mis-integration or someone forgot to set the label? /bz -- Bjoern A. Zeeb Stop bit received. Insert coin for new game. From owner-freebsd-virtualization@FreeBSD.ORG Tue Sep 16 20:10:06 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E2DF0106566C; Tue, 16 Sep 2008 20:10:06 +0000 (UTC) (envelope-from bzeeb-lists@lists.zabbadoz.net) Received: from mail.cksoft.de (mail.cksoft.de [62.111.66.27]) by mx1.freebsd.org (Postfix) with ESMTP id 9BE048FC12; Tue, 16 Sep 2008 20:10:06 +0000 (UTC) (envelope-from bzeeb-lists@lists.zabbadoz.net) Received: from localhost (amavis.str.cksoft.de [192.168.74.71]) by mail.cksoft.de (Postfix) with ESMTP id 4462E41C6BB; Tue, 16 Sep 2008 22:10:05 +0200 (CEST) X-Virus-Scanned: amavisd-new at cksoft.de Received: from mail.cksoft.de ([62.111.66.27]) by localhost (amavis.str.cksoft.de [192.168.74.71]) (amavisd-new, port 10024) with ESMTP id bhiaJ7gwZWyf; Tue, 16 Sep 2008 22:10:04 +0200 (CEST) Received: by mail.cksoft.de (Postfix, from userid 66) id EFD7D41C6B4; Tue, 16 Sep 2008 22:10:04 +0200 (CEST) Received: from maildrop.int.zabbadoz.net (maildrop.int.zabbadoz.net [10.111.66.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.int.zabbadoz.net (Postfix) with ESMTP id BFBFB44487F; Tue, 16 Sep 2008 20:08:57 +0000 (UTC) Date: Tue, 16 Sep 2008 20:08:57 +0000 (UTC) From: "Bjoern A. Zeeb" X-X-Sender: bz@maildrop.int.zabbadoz.net To: FreeBSD current mailing list Message-ID: <20080916200015.X65801@maildrop.int.zabbadoz.net> X-OpenPGP-Key: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-jail@FreeBSD.org, FreeBSD virtualization mailing list Subject: [CFR/T] multi-/no-IP jail patch for HEAD X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: freebsd-jail@FreeBSD.org List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Sep 2008 20:10:07 -0000 Hi, I have put a close to be commit candidate (if ipv4 src addr selection is in upfront) online here: http://people.freebsd.org/~bz/bz_jail-20080915-02-svn.diff This is for HEAD, for review and testing. Changes since last release: - SCTP enabled (again) for IPv4 and on for v6 as well. Might need another pari of eyes or someone to write regression tests. - jls -a/-v implemented/documented - updated ipv4 source address selection (changes semantics, please test/review carefully) - minor cleanup Please report anything you want/that need sto be/... changed/fixed/... Thanks. /bz PS: for anyone crying for RELENG_7. I am trying to put a patch together the next days. -- Bjoern A. Zeeb Stop bit received. Insert coin for new game. From owner-freebsd-virtualization@FreeBSD.ORG Tue Sep 16 21:06:10 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 012171065679 for ; Tue, 16 Sep 2008 21:06:10 +0000 (UTC) (envelope-from reddvinylene@gmail.com) Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.191]) by mx1.freebsd.org (Postfix) with ESMTP id 7B7C48FC17 for ; Tue, 16 Sep 2008 21:06:09 +0000 (UTC) (envelope-from reddvinylene@gmail.com) Received: by nf-out-0910.google.com with SMTP id h3so1610249nfh.33 for ; Tue, 16 Sep 2008 14:06:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type:references; bh=aIjjePRyDZYu/9M5iV0G9VScdtRRY+u8qTJzR7aspc8=; b=P1qDiQjf1vAnWgV8i8XMWL0RcV5i6nx/17PlcbEnjmq+HQO/mhfjKF/zri5yQvkFvE MAkt4wNWJAYdPjx/V42tenvxzFzzh3wFoUhUhQS4IKRHFAk2gAvhE7A/tIX6s8wg7xn9 V9agRbVmdhEhrk/ClHav794+kPpkANKCIUdhc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:references; b=g12cbw0UkCmiEvOmAGr6q89kVszm8rGlrjmXkvgPVfdnsh12K4yjc5UbmkInw+kcSG Up42rFgPcZ4xOZPE3p2a4CBB1C60CEGgDzO/tnFY/9Pj97i9p1cdi6F8lH5izJb4X4GT PzdKp7p+AzomJF4N8RDiyUONB4+HUOIIvih/0= Received: by 10.187.161.10 with SMTP id n10mr102797fao.43.1221597840034; Tue, 16 Sep 2008 13:44:00 -0700 (PDT) Received: by 10.187.180.9 with HTTP; Tue, 16 Sep 2008 13:43:59 -0700 (PDT) Message-ID: Date: Tue, 16 Sep 2008 22:43:59 +0200 From: "Redd Vinylene" To: freebsd-jail@freebsd.org In-Reply-To: <20080916200015.X65801@maildrop.int.zabbadoz.net> MIME-Version: 1.0 References: <20080916200015.X65801@maildrop.int.zabbadoz.net> X-Mailman-Approved-At: Tue, 16 Sep 2008 21:22:34 +0000 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: FreeBSD current mailing list , FreeBSD virtualization mailing list Subject: Re: [CFR/T] multi-/no-IP jail patch for HEAD X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Sep 2008 21:06:10 -0000 On Tue, Sep 16, 2008 at 10:08 PM, Bjoern A. Zeeb < bzeeb-lists@lists.zabbadoz.net> wrote: > Hi, > > I have put a close to be commit candidate (if ipv4 src addr selection > is in upfront) online here: > > http://people.freebsd.org/~bz/bz_jail-20080915-02-svn.diff > > This is for HEAD, for review and testing. > > Changes since last release: > - SCTP enabled (again) for IPv4 and on for v6 as well. Might need > another pari of eyes or someone to write regression tests. > - jls -a/-v implemented/documented > - updated ipv4 source address selection (changes semantics, please > test/review carefully) > - minor cleanup > > Please report anything you want/that need sto be/... changed/fixed/... > > Thanks. > /bz > > > PS: for anyone crying for RELENG_7. I am trying to put a patch > together the next days. > > -- > Bjoern A. Zeeb Stop bit received. Insert coin for new game. > > Excellent work! Keep it up bro! -- http://www.home.no/reddvinylene From owner-freebsd-virtualization@FreeBSD.ORG Wed Sep 17 01:11:34 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A9D75106566C for ; Wed, 17 Sep 2008 01:11:34 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outW.internet-mail-service.net (outw.internet-mail-service.net [216.240.47.246]) by mx1.freebsd.org (Postfix) with ESMTP id 8DD048FC12 for ; Wed, 17 Sep 2008 01:11:29 +0000 (UTC) (envelope-from julian@elischer.org) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id A3693242D; Tue, 16 Sep 2008 18:11:29 -0700 (PDT) Received: from julian-mac.elischer.org (localhost [127.0.0.1]) by idiom.com (Postfix) with ESMTP id E7DA22D6013; Tue, 16 Sep 2008 18:11:28 -0700 (PDT) Message-ID: <48D0593F.6050005@elischer.org> Date: Tue, 16 Sep 2008 18:11:27 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.16 (Macintosh/20080707) MIME-Version: 1.0 To: "Bjoern A. Zeeb" References: <200809081655.m88GtxbV000906@repoman.freebsd.org> <48C780E4.2050207@elischer.org> <20080916174040.Y65801@maildrop.int.zabbadoz.net> In-Reply-To: <20080916174040.Y65801@maildrop.int.zabbadoz.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Marko Zec , FreeBSD virtualization mailing list Subject: Re: Vnet iteration X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Sep 2008 01:11:34 -0000 Bjoern A. Zeeb wrote: >> Marko Zec wrote: > > Hi, > >>> http://perforce.freebsd.org/chv.cgi?CH=149433 >>> >>> Change 149433 by zec@zec_tpx32 on 2008/09/08 16:55:34 >>> >>> First-cut replacement of VNET_ITERLOOP_BEGIN() / >>> VNET_ITERLOOP_END() kludges with VNET_FOREACH() constructs >>> discussed at freebsd-virtualization@ >>> Needs a bit more testing before merging over to >>> vimage-commit2 branch. >>> >>> Differences ... >> >> [...] >> >>> + VNET_FOREACH(vnet_iter) { >>> + CURVNET_SET(vnet_iter); /* XXX CURVNET_SET_QUIET() ? */ >>> + INIT_VNET_NET(vnet_iter); >>> + TAILQ_FOREACH(ifp, &V_ifnet, if_link) >>> + (void)ifaddr_event_handler(NULL, ifp); >>> + CURVNET_RESTORE(); >>> } >> >> this looks great.. >> >> I'd like to see as much of this as possible in commit2 >> and then I'd like to see it committed as soon as brokk, bz and others >> have kicked the t[yi]res a bit. >> :-) > > > So can anyone bring it over to commit2? Marko, are you around? I'm busy at work right now. > > I had been generating a diff last weekend again to push this and found > that the diff size changed from ~200k to ~800k so I suspect there was > a mis-integration or someone forgot to set the label? rerun the update script and select a change around the time of the last integration and it should correct the label. (on the other hand I think it's time for an update anyhow..) > > > > /bz > From owner-freebsd-virtualization@FreeBSD.ORG Thu Sep 18 17:38:11 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B67E8106564A; Thu, 18 Sep 2008 17:38:11 +0000 (UTC) (envelope-from steve@energistic.com) Received: from energistic.com (mail.energistic.com [216.54.148.60]) by mx1.freebsd.org (Postfix) with ESMTP id 76BAB8FC14; Thu, 18 Sep 2008 17:38:11 +0000 (UTC) (envelope-from steve@energistic.com) Received: from inlafpc31 (208-103-61-141.indianafiber.net [208.103.61.141] (may be forged)) (authenticated bits=0) by energistic.com (8.14.3/8.14.2) with ESMTP id m8IHc38u042794; Thu, 18 Sep 2008 13:38:05 -0400 (EDT) (envelope-from steve@energistic.com) Message-ID: From: "Steve Ames" To: "Steve Ames" , "Kip Macy" References: <3c1674c90808222138v12d7b9f8q5230273b076b3b43@mail.gmail.com> <20080912033401.GA61061@energistic.com> Date: Thu, 18 Sep 2008 13:38:02 -0400 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5512 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-Spam-Status: No, score=-4.8 required=5.0 tests=AWL,BAYES_50,DOS_OE_TO_MX, RDNS_NONE, STOX_REPLY_TYPE, TW_BF, TW_XB, USER_IN_WHITELIST_TO autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on energistic.com Cc: freebsd-virtualization@freebsd.org Subject: Re: xen update X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Sep 2008 17:38:11 -0000 Hi, can anyone point me in the right direction so I can do further testing? Steve Ames wrote: > Hello, just now getting a chance to test. I am likely doing > something wrong :) > > I did the following: > > 1. Installed a fresh FreeBSD 8-CURRENT system using the > latest snapshot ISO > 2. Updated code and did makeworld && make installworld > 3. Built a kernel using the stock XEN kernel config file > 4. On blank partition I created an image in the following > manner: > > dd if=/dev/zero of=xen.img bs=1024k count=5132 > mdconfig -a -t vnode -f xen.img -u 3 > bsdlabel -w md3 > bsdlabel -e md3 (where I created 2 partitions: / on a and swap on b) > newfs /dev/md3a > mount /dev/md3a /mnt > (copied all data from theFreebsd8 partition to /dev/md3a using backup > | restor) > > 5. Modified /mnt/etc/fstab and /mnt/etc/ttys > 6. Copied /mnt/boo/kernel/kernel and my newly created xen.img > files to a CentOS 5 server which has Xen 3.1 I believe. > 7. Created a xen load file: > > name = "fbsd8" > kernel = "/root/kernel.bsd8" > vif = [ 'bridge=xenbr1' ] > memory = 256 > disk = [ 'file://root/xen.img,0x01,w' ] > vcpus=1 > on_crash = 'preserve' > > 8. started the image using 'xm create fbsd8 -c' > > 9. receivd the following break to debugger: > > > Started domain fbsd8 > WARNING: loader(8) metadata is missing! > GDB: no debug ports present > KDB: debugger backends: ddb > KDB: current backend: ddb > Copyright (c) 1992-2008 The FreeBSD Project. > Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, > 1994 The Regents of the University of California. All rights > reserved. > FreeBSD is a registered trademark of The FreeBSD Foundation. > FreeBSD 8.0-CURRENT #0: Wed Sep 10 17:01:33 EDT 2008 > root@:/usr/obj/usr/src/sys/XEN > WARNING: WITNESS option enabled, expect reduced performance. > Xen reported: 3000.102 MHz processor. > Timecounter "ixen" frequency 1000000000 Hz quality 0 > CPU: Intel(R) Xeon(TM) CPU 3.00GHz (3000.10-MHz 686-class CPU) > Origin = "GenuineIntel" Id = 0xf4a Stepping = 10 > > Features=0xbfebfbff > Features2=0x641d > AMD Features=0x20000000 > AMD Features2=0x1 > Logical CPUs per core: 2 > real memory = 268435456 (256 MB) > avail memory = 255057920 (243 MB) > > > Fatal trap 12: page fault while in kernel mode > cpuid = 0; apic id = 00 > fault virtual address = 0xbffffc00 > fault code = supervisor read, page not present > instruction pointer = 0x21:0xc02f429d > stack pointer = 0x29:0xc0580d28 > frame pointer = 0x29:0xc0580d30 > code segment = base 0x0, limit 0xf9800, type 0x1b > = DPL 1, pres 1, def32 1, gran 1 > processor eflags = resume, IOPL = 0 > current process = 0 () > [thread pid 0 tid 0 ] > Stopped at MPentry+0x6d: cmpl $0x5f504d5f,kernbase(%eax) > db> > > So... where did I go wrong? Thanks. > > -Steve > > _______________________________________________ > freebsd-virtualization@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-virtualization > To unsubscribe, send any mail to > "freebsd-virtualization-unsubscribe@freebsd.org" From owner-freebsd-virtualization@FreeBSD.ORG Thu Sep 18 18:58:06 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DFA2A106564A for ; Thu, 18 Sep 2008 18:58:06 +0000 (UTC) (envelope-from antipsychic@gmail.com) Received: from qw-out-2122.google.com (qw-out-2122.google.com [74.125.92.25]) by mx1.freebsd.org (Postfix) with ESMTP id 95EEB8FC0A for ; Thu, 18 Sep 2008 18:58:06 +0000 (UTC) (envelope-from antipsychic@gmail.com) Received: by qw-out-2122.google.com with SMTP id 9so7079qwb.7 for ; Thu, 18 Sep 2008 11:58:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:from:to :content-type:content-transfer-encoding:x-mailer:mime-version :subject:date; bh=2NwO22pOCCIH5dSnZ691liRh+TjPcj3kkm9OUaXQS48=; b=B2wZNEejIocdedZpsPji0zl4xbZKy+Cz7xvTWrhwMd/lKu9DTpXSMrU/tLw/XiO6V3 uChwL5+i/STN0YIM8d/Of4gqUHmTFjvobD8jbmTaLBhMMtuG1W17kTVYimYGIFyFufGV dLf9BI4ElmIbQB/EZpxwDQ5hvScvs4H4T3aOY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:from:to:content-type:content-transfer-encoding:x-mailer :mime-version:subject:date; b=HWow4DkJOowLp1QtW/QhrcScLiaBsDS+hnJSXGUP9HLCW5Nl1mgVlO6li1oWKTDT/G 4E1UtTv+fqDmMRFplbu+UDJqwA6Ch42SsilmY/4oVvXIYt9mXvsaJZzP9wlGXZ6p5jbd FCUytjO5CUJFgrwcZQGIOIj0ATHGFNf9r72xQ= Received: by 10.214.9.8 with SMTP id 8mr4383561qai.51.1221762911563; Thu, 18 Sep 2008 11:35:11 -0700 (PDT) Received: from ?10.97.21.192? ( [32.159.138.103]) by mx.google.com with ESMTPS id 6sm14853384qwd.4.2008.09.18.11.35.06 (version=TLSv1/SSLv3 cipher=RC4-MD5); Thu, 18 Sep 2008 11:35:10 -0700 (PDT) Message-Id: From: antipsychic To: "freebsd-virtualization@freebsd.org" Content-Type: text/plain; charset=us-ascii; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit X-Mailer: iPhone Mail (5F136) Mime-Version: 1.0 (iPhone Mail 5F136) Date: Thu, 18 Sep 2008 11:34:42 -0700 Subject: natd & vimage X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Sep 2008 18:58:07 -0000 tried making a custom kernel with IPFIREWALL and IPDIVERT options enabled, as per natd man page. build croaked on netinet/ip_divert.c: ipstat undeclared. 7-0-prerelease. have been using vimage for a test environment now since May, no serious problems, found it to be far more stable than the vmware environment was using before. need to nat now though. have no problem moving to current or whatever. going to upgrade test box to multi-core machine soon as time permits. any advise is appreciated! thanks, Jake From owner-freebsd-virtualization@FreeBSD.ORG Thu Sep 18 20:29:57 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE21D106564A for ; Thu, 18 Sep 2008 20:29:57 +0000 (UTC) (envelope-from jeffrey.m.ahrenholz@boeing.com) Received: from blv-smtpout-01.boeing.com (blv-smtpout-01.boeing.com [130.76.32.69]) by mx1.freebsd.org (Postfix) with ESMTP id 8F8B08FC08 for ; Thu, 18 Sep 2008 20:29:57 +0000 (UTC) (envelope-from jeffrey.m.ahrenholz@boeing.com) Received: from slb-av-01.boeing.com (slb-av-01.boeing.com [129.172.13.4]) by blv-smtpout-01.ns.cs.boeing.com (8.14.0/8.14.0/8.14.0/SMTPOUT) with ESMTP id m8IK6FFX022447 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 18 Sep 2008 13:06:16 -0700 (PDT) Received: from slb-av-01.boeing.com (localhost [127.0.0.1]) by slb-av-01.boeing.com (8.14.0/8.14.0/DOWNSTREAM_RELAY) with ESMTP id m8IK6FEC006705; Thu, 18 Sep 2008 13:06:15 -0700 (PDT) Received: from XCH-NWBH-11.nw.nos.boeing.com (xch-nwbh-11.nw.nos.boeing.com [130.247.55.84]) by slb-av-01.boeing.com (8.14.0/8.14.0/UPSTREAM_RELAY) with ESMTP id m8IK6Dn3006626; Thu, 18 Sep 2008 13:06:15 -0700 (PDT) Received: from XCH-NW-6V1.nw.nos.boeing.com ([130.247.55.53]) by XCH-NWBH-11.nw.nos.boeing.com with Microsoft SMTPSVC(6.0.3790.3959); Thu, 18 Sep 2008 13:06:14 -0700 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Date: Thu, 18 Sep 2008 13:06:07 -0700 Message-ID: <0DF156EE7414494187B087A3C279BDB40A93F94B@XCH-NW-6V1.nw.nos.boeing.com> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: natd & vimage Thread-Index: AckZwIIrQO+aj0ppS0yM76a/CvuYjwACC8cg References: From: "Ahrenholz, Jeffrey M" To: "antipsychic" , X-OriginalArrivalTime: 18 Sep 2008 20:06:14.0508 (UTC) FILETIME=[00D902C0:01C919CA] Cc: Subject: RE: natd & vimage X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Sep 2008 20:29:57 -0000 Jake, > tried making a custom kernel with IPFIREWALL and IPDIVERT options =20 > enabled, as per natd man page. build croaked on=20 > netinet/ip_divert.c: =20 > ipstat undeclared. 7-0-prerelease. >=20 > have been using vimage for a test environment now since May, no =20 > serious problems, found it to be far more stable than the vmware =20 > environment was using before. if you want to use 7.0-RELEASE and the vimage_7-20080228 kernel found here http://imunes.tel.fer.hr/virtnet/, I have made a patch that allows you to load the ipdivert module with 'kldload ipdivert'. This patch may not work for compiling in the option IPDIVERT but seems to work fine as a module. Let me know and I'll post it... (if you try to kldload ipdivert with the vimage_7-20080228 kernel, it complains about that missing ipstat identifier) also this patch enables ip_mroute, but I am still debugging that part... -Jeff From owner-freebsd-virtualization@FreeBSD.ORG Fri Sep 19 01:00:33 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5519F106564A for ; Fri, 19 Sep 2008 01:00:33 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outE.internet-mail-service.net (oute.internet-mail-service.net [216.240.47.228]) by mx1.freebsd.org (Postfix) with ESMTP id 3AC408FC1F for ; Fri, 19 Sep 2008 01:00:33 +0000 (UTC) (envelope-from julian@elischer.org) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id 910C424CC; Thu, 18 Sep 2008 18:00:33 -0700 (PDT) Received: from julian-mac.elischer.org (localhost [127.0.0.1]) by idiom.com (Postfix) with ESMTP id 77D382D6013; Thu, 18 Sep 2008 18:00:32 -0700 (PDT) Message-ID: <48D2F9B1.8020507@elischer.org> Date: Thu, 18 Sep 2008 18:00:33 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.16 (Macintosh/20080707) MIME-Version: 1.0 To: "Ahrenholz, Jeffrey M" References: <0DF156EE7414494187B087A3C279BDB40A93F94B@XCH-NW-6V1.nw.nos.boeing.com> In-Reply-To: <0DF156EE7414494187B087A3C279BDB40A93F94B@XCH-NW-6V1.nw.nos.boeing.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: antipsychic , freebsd-virtualization@freebsd.org Subject: Re: natd & vimage X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Sep 2008 01:00:33 -0000 Ahrenholz, Jeffrey M wrote: > Jake, > >> tried making a custom kernel with IPFIREWALL and IPDIVERT options >> enabled, as per natd man page. build croaked on >> netinet/ip_divert.c: >> ipstat undeclared. 7-0-prerelease. >> >> have been using vimage for a test environment now since May, no >> serious problems, found it to be far more stable than the vmware >> environment was using before. > > if you want to use 7.0-RELEASE and the vimage_7-20080228 kernel found > here http://imunes.tel.fer.hr/virtnet/, I have made a patch that allows > you to load the ipdivert module with 'kldload ipdivert'. This patch may > not work for compiling in the option IPDIVERT but seems to work fine as > a module. Let me know and I'll post it... > > (if you try to kldload ipdivert with the vimage_7-20080228 kernel, it > complains about that missing ipstat identifier) > > also this patch enables ip_mroute, but I am still debugging that part... please make sure that your fixes go into the vimage branch.. we need all the help we can get :-) > > -Jeff > _______________________________________________ > freebsd-virtualization@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-virtualization > To unsubscribe, send any mail to "freebsd-virtualization-unsubscribe@freebsd.org" From owner-freebsd-virtualization@FreeBSD.ORG Fri Sep 19 17:55:06 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4B8421065687 for ; Fri, 19 Sep 2008 17:55:06 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outA.internet-mail-service.net (outa.internet-mail-service.net [216.240.47.224]) by mx1.freebsd.org (Postfix) with ESMTP id 3789D8FC12 for ; Fri, 19 Sep 2008 17:55:06 +0000 (UTC) (envelope-from julian@elischer.org) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id B7C522416; Fri, 19 Sep 2008 10:55:05 -0700 (PDT) Received: from julian-mac.elischer.org (localhost [127.0.0.1]) by idiom.com (Postfix) with ESMTP id 57D292D6024; Fri, 19 Sep 2008 10:55:05 -0700 (PDT) Message-ID: <48D3E778.3020305@elischer.org> Date: Fri, 19 Sep 2008 10:55:04 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.16 (Macintosh/20080707) MIME-Version: 1.0 To: Marko Zec References: <200809191743.m8JHhZj8009388@repoman.freebsd.org> In-Reply-To: <200809191743.m8JHhZj8009388@repoman.freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews , FreeBSD virtualization mailing list Subject: vimage and curvnet. X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Sep 2008 17:55:06 -0000 Marko Zec wrote: > http://perforce.freebsd.org/chv.cgi?CH=150125 > > Change 150125 by zec@zec_tpx32 on 2008/09/19 17:43:14 > > curvnet is never set on entry to sysctl handlers, thus > set the vnet context via TD_TO_VNET(curthread), because > all threads must have a cred->vimage->vnet context set. it seems to me that vnet is an important enough variable that we could put it in the pcpu structure and have the scheduler set it up on context switches when vimage is compiled in. thus it would always be directly available. i.e. %gs:CURVNET_OFFSET or whatever the syntax is on x86 and the equivalent on other architectures. > > Affected files ... > > .. //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#14 edit > > Differences ... > > ==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#14 (text+ko) ==== > > @@ -119,7 +119,7 @@ > static int > sysctl_net_inet_tcp_mss_check(SYSCTL_HANDLER_ARGS) > { > - INIT_VNET_INET(curvnet); > + INIT_VNET_INET(TD_TO_VNET(curthread)); > int error, new; > > new = V_tcp_mssdflt; > @@ -141,7 +141,7 @@ > static int > sysctl_net_inet_tcp_mss_v6_check(SYSCTL_HANDLER_ARGS) > { > - INIT_VNET_INET6(curvnet); > + INIT_VNET_INET6(TD_TO_VNET(curthread)); > int error, new; > > new = V_tcp_v6mssdflt; From owner-freebsd-virtualization@FreeBSD.ORG Fri Sep 19 18:44:18 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7364C106564A for ; Fri, 19 Sep 2008 18:44:18 +0000 (UTC) (envelope-from zec@freebsd.org) Received: from xaqua.tel.fer.hr (xaqua.tel.fer.hr [161.53.19.25]) by mx1.freebsd.org (Postfix) with ESMTP id 04DDE8FC0C for ; Fri, 19 Sep 2008 18:44:12 +0000 (UTC) (envelope-from zec@freebsd.org) Received: by xaqua.tel.fer.hr (Postfix, from userid 20006) id 27F5C9B645; Fri, 19 Sep 2008 20:23:55 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on xaqua.tel.fer.hr X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.7 Received: from [192.168.200.110] (zec2.tel.fer.hr [161.53.19.79]) by xaqua.tel.fer.hr (Postfix) with ESMTP id D5B659B644; Fri, 19 Sep 2008 20:23:53 +0200 (CEST) From: Marko Zec To: Julian Elischer Date: Fri, 19 Sep 2008 20:23:42 +0200 User-Agent: KMail/1.9.7 References: <200809191743.m8JHhZj8009388@repoman.freebsd.org> <48D3E778.3020305@elischer.org> In-Reply-To: <48D3E778.3020305@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200809192023.42904.zec@freebsd.org> Cc: Perforce Change Reviews , FreeBSD virtualization mailing list Subject: Re: vimage and curvnet. X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Sep 2008 18:44:18 -0000 On Friday 19 September 2008 19:55:04 Julian Elischer wrote: > Marko Zec wrote: > > http://perforce.freebsd.org/chv.cgi?CH=150125 > > > > Change 150125 by zec@zec_tpx32 on 2008/09/19 17:43:14 > > > > curvnet is never set on entry to sysctl handlers, thus > > set the vnet context via TD_TO_VNET(curthread), because > > all threads must have a cred->vimage->vnet context set. > > it seems to me that vnet is an important enough variable that we ^^^^ I guess you meant curvnet? > could put it in the pcpu structure and have the scheduler set it up > on context switches when vimage is compiled in. Right now curvnet is defined in vimage.h as #define curvnet curthread->td_vnet Note that there's also a helper field in struct thread called td_vnet_lpush aimed at tracing CURVNET_SET() stacking as well as finding places when CURVNET_RESTORE() is not called after CURVNET_SET(). Both td_vnet and td_vnet_lpush _must_ be stored with each thread anyhow, given that threads can migrate practically at any time. So, if pcpu shadowing of curthread->td_vnet could yield performace improvements than this would make sense, but we would still need to keep td_vnet as a field in struct thread, and have CURVNET_SET() and CURVNET_RESTORE() macros atomically update both the td_ field and its pcpu shadow, which would require each CURVNET_XXX() macro to include critical_enter() / _exit() invocations... > thus it would always be directly available. > i.e. %gs:CURVNET_OFFSET or whatever the syntax is on x86 > and the equivalent on other architectures. > > > Affected files ... > > > > .. //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#14 > > edit > > > > Differences ... > > > > ==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#14 > > (text+ko) ==== > > > > @@ -119,7 +119,7 @@ > > static int > > sysctl_net_inet_tcp_mss_check(SYSCTL_HANDLER_ARGS) > > { > > - INIT_VNET_INET(curvnet); > > + INIT_VNET_INET(TD_TO_VNET(curthread)); > > int error, new; > > > > new = V_tcp_mssdflt; > > @@ -141,7 +141,7 @@ > > static int > > sysctl_net_inet_tcp_mss_v6_check(SYSCTL_HANDLER_ARGS) > > { > > - INIT_VNET_INET6(curvnet); > > + INIT_VNET_INET6(TD_TO_VNET(curthread)); > > int error, new; > > > > new = V_tcp_v6mssdflt; From owner-freebsd-virtualization@FreeBSD.ORG Fri Sep 19 19:36:54 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D0892106567E for ; Fri, 19 Sep 2008 19:36:54 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outK.internet-mail-service.net (outk.internet-mail-service.net [216.240.47.234]) by mx1.freebsd.org (Postfix) with ESMTP id B837C8FC1B for ; Fri, 19 Sep 2008 19:36:54 +0000 (UTC) (envelope-from julian@elischer.org) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id D5E8524A8; Fri, 19 Sep 2008 12:36:54 -0700 (PDT) Received: from julian-mac.elischer.org (localhost [127.0.0.1]) by idiom.com (Postfix) with ESMTP id 5708D2D601C; Fri, 19 Sep 2008 12:36:53 -0700 (PDT) Message-ID: <48D3FF54.2010802@elischer.org> Date: Fri, 19 Sep 2008 12:36:52 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.16 (Macintosh/20080707) MIME-Version: 1.0 To: Marko Zec References: <200809191743.m8JHhZj8009388@repoman.freebsd.org> <48D3E778.3020305@elischer.org> <200809192023.42904.zec@freebsd.org> In-Reply-To: <200809192023.42904.zec@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Perforce Change Reviews , FreeBSD virtualization mailing list Subject: Re: vimage and curvnet. X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Sep 2008 19:36:54 -0000 Marko Zec wrote: > On Friday 19 September 2008 19:55:04 Julian Elischer wrote: >> Marko Zec wrote: >>> http://perforce.freebsd.org/chv.cgi?CH=150125 >>> >>> Change 150125 by zec@zec_tpx32 on 2008/09/19 17:43:14 >>> >>> curvnet is never set on entry to sysctl handlers, thus >>> set the vnet context via TD_TO_VNET(curthread), because >>> all threads must have a cred->vimage->vnet context set. >> it seems to me that vnet is an important enough variable that we > ^^^^ > I guess you meant curvnet? > >> could put it in the pcpu structure and have the scheduler set it up >> on context switches when vimage is compiled in. > > Right now curvnet is defined in vimage.h as > > #define curvnet curthread->td_vnet > > Note that there's also a helper field in struct thread called > td_vnet_lpush aimed at tracing CURVNET_SET() stacking as well as > finding places when CURVNET_RESTORE() is not called after > CURVNET_SET(). Both td_vnet and td_vnet_lpush _must_ be stored with > each thread anyhow, given that threads can migrate practically at any > time. not without the scheduler knowing about it they can't. i.e. if the scheduler changes curvnet when it changes curthread then it will always be correct. > > So, if pcpu shadowing of curthread->td_vnet could yield performace > improvements than this would make sense, It might, and it may remove some requirements for files to include proc.h but we would still need to > keep td_vnet as a field in struct thread, and have CURVNET_SET() and > CURVNET_RESTORE() macros atomically update both the td_ field and its > pcpu shadow, which would require each CURVNET_XXX() macro to include > critical_enter() / _exit() invocations... sure, well, if a running thread has curvnet in the pcpu field and it is put back in the the thread struct on deschedule. then what in td_vnet while the thread is running is not really important. anyhow, it's just an idea. > > >> thus it would always be directly available. >> i.e. %gs:CURVNET_OFFSET or whatever the syntax is on x86 >> and the equivalent on other architectures. >> >>> Affected files ... >>> >>> .. //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#14 >>> edit >>> >>> Differences ... >>> >>> ==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#14 >>> (text+ko) ==== >>> >>> @@ -119,7 +119,7 @@ >>> static int >>> sysctl_net_inet_tcp_mss_check(SYSCTL_HANDLER_ARGS) >>> { >>> - INIT_VNET_INET(curvnet); >>> + INIT_VNET_INET(TD_TO_VNET(curthread)); >>> int error, new; >>> >>> new = V_tcp_mssdflt; >>> @@ -141,7 +141,7 @@ >>> static int >>> sysctl_net_inet_tcp_mss_v6_check(SYSCTL_HANDLER_ARGS) >>> { >>> - INIT_VNET_INET6(curvnet); >>> + INIT_VNET_INET6(TD_TO_VNET(curthread)); >>> int error, new; >>> >>> new = V_tcp_v6mssdflt; > From owner-freebsd-virtualization@FreeBSD.ORG Fri Sep 19 20:52:30 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EC3A61065671; Fri, 19 Sep 2008 20:52:30 +0000 (UTC) (envelope-from zec@freebsd.org) Received: from xaqua.tel.fer.hr (xaqua.tel.fer.hr [161.53.19.25]) by mx1.freebsd.org (Postfix) with ESMTP id A9E768FC08; Fri, 19 Sep 2008 20:52:30 +0000 (UTC) (envelope-from zec@freebsd.org) Received: by xaqua.tel.fer.hr (Postfix, from userid 20006) id 942409B648; Fri, 19 Sep 2008 22:52:29 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on xaqua.tel.fer.hr X-Spam-Level: X-Spam-Status: No, score=-4.3 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.7 Received: from [192.168.200.110] (zec2.tel.fer.hr [161.53.19.79]) by xaqua.tel.fer.hr (Postfix) with ESMTP id B2E6D9B644; Fri, 19 Sep 2008 22:52:28 +0200 (CEST) From: Marko Zec To: freebsd-virtualization@freebsd.org Date: Fri, 19 Sep 2008 22:52:22 +0200 User-Agent: KMail/1.9.7 References: <200809191743.m8JHhZj8009388@repoman.freebsd.org> <200809192023.42904.zec@freebsd.org> <48D3FF54.2010802@elischer.org> In-Reply-To: <48D3FF54.2010802@elischer.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200809192252.22640.zec@freebsd.org> Cc: Perforce Change Reviews , Julian Elischer Subject: Re: vimage and curvnet. X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Sep 2008 20:52:31 -0000 On Friday 19 September 2008 21:36:52 Julian Elischer wrote: .... > sure, well, if a running thread has curvnet in the pcpu field > and it is put back in the the thread struct on deschedule. > then what in td_vnet while the thread is running is not really > important. Yes this makes sense, and should be worth experimenting with. It's only that I feel reluctant to start touching anything in our scheduler(s) until all the other big changes settle in a bit first. Marko From owner-freebsd-virtualization@FreeBSD.ORG Fri Sep 19 23:24:18 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 38DEA1065681 for ; Fri, 19 Sep 2008 23:24:18 +0000 (UTC) (envelope-from jeffrey.m.ahrenholz@boeing.com) Received: from slb-smtpout-01.boeing.com (slb-smtpout-01.boeing.com [130.76.64.48]) by mx1.freebsd.org (Postfix) with ESMTP id 125AF8FC1A for ; Fri, 19 Sep 2008 23:24:17 +0000 (UTC) (envelope-from jeffrey.m.ahrenholz@boeing.com) Received: from stl-av-01.boeing.com (stl-av-01.boeing.com [192.76.190.6]) by slb-smtpout-01.ns.cs.boeing.com (8.14.0/8.14.0/8.14.0/SMTPOUT) with ESMTP id m8JNNtA8000496 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Fri, 19 Sep 2008 16:23:55 -0700 (PDT) Received: from stl-av-01.boeing.com (localhost [127.0.0.1]) by stl-av-01.boeing.com (8.14.0/8.14.0/DOWNSTREAM_RELAY) with ESMTP id m8JNNtNf000149; Fri, 19 Sep 2008 18:23:55 -0500 (CDT) Received: from XCH-NWBH-11.nw.nos.boeing.com (xch-nwbh-11.nw.nos.boeing.com [130.247.55.84]) by stl-av-01.boeing.com (8.14.0/8.14.0/UPSTREAM_RELAY) with ESMTP id m8JNNsUM000145; Fri, 19 Sep 2008 18:23:54 -0500 (CDT) Received: from XCH-NW-6V1.nw.nos.boeing.com ([130.247.55.53]) by XCH-NWBH-11.nw.nos.boeing.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 19 Sep 2008 16:23:54 -0700 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable x-mimeole: Produced By Microsoft Exchange V6.5 Date: Fri, 19 Sep 2008 16:23:39 -0700 Message-ID: <0DF156EE7414494187B087A3C279BDB40A94021D@XCH-NW-6V1.nw.nos.boeing.com> In-reply-to: <48D2F9B1.8020507@elischer.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: natd & vimage Thread-Index: AckZ8x92pioOHx2/RImU2b/ChtqP7gAuuh3g References: <0DF156EE7414494187B087A3C279BDB40A93F94B@XCH-NW-6V1.nw.nos.boeing.com> <48D2F9B1.8020507@elischer.org> From: "Ahrenholz, Jeffrey M" To: "Julian Elischer" X-OriginalArrivalTime: 19 Sep 2008 23:23:54.0643 (UTC) FILETIME=[C873BE30:01C91AAE] Cc: antipsychic , freebsd-virtualization@freebsd.org Subject: RE: natd & vimage X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Sep 2008 23:24:18 -0000 > please make sure that your fixes go into the vimage branch.. > we need all the help we can get :-) I got the latest vimage branch using cvsup and was able to cleanly apply my patch, looks like nothing has changed in the divert/mroute files. Unfortunately it seems that I spoke too soon because my patch locks up on a dual-core system (I must've been testing with a non-SMP box). So I'll have to write back when I have something that actually works. Another trick, if you just want to nat between vimages, you could probably use the ng_nat netgraph node... -Jeff From owner-freebsd-virtualization@FreeBSD.ORG Fri Sep 19 23:48:53 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4CDC8106564A for ; Fri, 19 Sep 2008 23:48:53 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outP.internet-mail-service.net (outp.internet-mail-service.net [216.240.47.239]) by mx1.freebsd.org (Postfix) with ESMTP id 3615A8FC14 for ; Fri, 19 Sep 2008 23:48:53 +0000 (UTC) (envelope-from julian@elischer.org) Received: from idiom.com (mx0.idiom.com [216.240.32.160]) by out.internet-mail-service.net (Postfix) with ESMTP id 607DE24BA; Fri, 19 Sep 2008 16:48:53 -0700 (PDT) Received: from julian-mac.elischer.org (localhost [127.0.0.1]) by idiom.com (Postfix) with ESMTP id DBC172D6013; Fri, 19 Sep 2008 16:48:51 -0700 (PDT) Message-ID: <48D43A63.8080808@elischer.org> Date: Fri, 19 Sep 2008 16:48:51 -0700 From: Julian Elischer User-Agent: Thunderbird 2.0.0.16 (Macintosh/20080707) MIME-Version: 1.0 To: "Ahrenholz, Jeffrey M" References: <0DF156EE7414494187B087A3C279BDB40A93F94B@XCH-NW-6V1.nw.nos.boeing.com> <48D2F9B1.8020507@elischer.org> <0DF156EE7414494187B087A3C279BDB40A94021D@XCH-NW-6V1.nw.nos.boeing.com> In-Reply-To: <0DF156EE7414494187B087A3C279BDB40A94021D@XCH-NW-6V1.nw.nos.boeing.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: antipsychic , freebsd-virtualization@freebsd.org Subject: Re: natd & vimage X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Sep 2008 23:48:53 -0000 Ahrenholz, Jeffrey M wrote: >> please make sure that your fixes go into the vimage branch.. >> we need all the help we can get :-) > > I got the latest vimage branch using cvsup and was able to cleanly apply > my patch, looks like nothing has changed in the divert/mroute files. > Unfortunately it seems that I spoke too soon because my patch locks up > on a dual-core system (I must've been testing with a non-SMP box). So > I'll have to write back when I have something that actually works. > > Another trick, if you just want to nat between vimages, you could > probably use the ng_nat netgraph node... that's why netgraph is the "official" way to connect vimages :-) can you send your diffs anyhow? I never completed the virtualisation of divert. I'll see what I can do with them. > > -Jeff From owner-freebsd-virtualization@FreeBSD.ORG Fri Sep 19 23:59:10 2008 Return-Path: Delivered-To: freebsd-virtualization@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3016E106566B for ; Fri, 19 Sep 2008 23:59:10 +0000 (UTC) (envelope-from jeffrey.m.ahrenholz@boeing.com) Received: from slb-smtpout-01.boeing.com (slb-smtpout-01.boeing.com [130.76.64.48]) by mx1.freebsd.org (Postfix) with ESMTP id 01F9F8FC14 for ; Fri, 19 Sep 2008 23:59:09 +0000 (UTC) (envelope-from jeffrey.m.ahrenholz@boeing.com) Received: from slb-av-01.boeing.com (slb-av-01.boeing.com [129.172.13.4]) by slb-smtpout-01.ns.cs.boeing.com (8.14.0/8.14.0/8.14.0/SMTPOUT) with ESMTP id m8JNx9uO008832 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 19 Sep 2008 16:59:09 -0700 (PDT) Received: from slb-av-01.boeing.com (localhost [127.0.0.1]) by slb-av-01.boeing.com (8.14.0/8.14.0/DOWNSTREAM_RELAY) with ESMTP id m8JNx8PO000763; Fri, 19 Sep 2008 16:59:08 -0700 (PDT) Received: from XCH-NWBH-11.nw.nos.boeing.com (xch-nwbh-11.nw.nos.boeing.com [130.247.55.84]) by slb-av-01.boeing.com (8.14.0/8.14.0/UPSTREAM_RELAY) with ESMTP id m8JNx8Ut000758; Fri, 19 Sep 2008 16:59:08 -0700 (PDT) Received: from XCH-NW-6V1.nw.nos.boeing.com ([130.247.55.53]) by XCH-NWBH-11.nw.nos.boeing.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 19 Sep 2008 16:59:08 -0700 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C91AB3.B40A9061" x-mimeole: Produced By Microsoft Exchange V6.5 Date: Fri, 19 Sep 2008 16:58:26 -0700 Message-ID: <0DF156EE7414494187B087A3C279BDB40A94023E@XCH-NW-6V1.nw.nos.boeing.com> In-reply-to: <48D43A63.8080808@elischer.org> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: natd & vimage Thread-Index: AckaskcTT7O3qGiKS1W4Tdfz3VYIIQAACebQ References: <0DF156EE7414494187B087A3C279BDB40A93F94B@XCH-NW-6V1.nw.nos.boeing.com> <48D2F9B1.8020507@elischer.org> <0DF156EE7414494187B087A3C279BDB40A94021D@XCH-NW-6V1.nw.nos.boeing.com> <48D43A63.8080808@elischer.org> From: "Ahrenholz, Jeffrey M" To: "Julian Elischer" X-OriginalArrivalTime: 19 Sep 2008 23:59:08.0214 (UTC) FILETIME=[B43D1560:01C91AB3] Cc: antipsychic , freebsd-virtualization@freebsd.org Subject: RE: natd & vimage X-BeenThere: freebsd-virtualization@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussion of various virtualization techniques FreeBSD supports." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Sep 2008 23:59:10 -0000 This is a multi-part message in MIME format. ------_=_NextPart_001_01C91AB3.B40A9061 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > can you send your diffs anyhow? > I never completed the virtualisation of divert. > I'll see what I can do with them. OK, here it is, good luck! I had divert working on a non-SMP system, could divert packets to a userspace program that touches them. Then the mroute part is a little bigger. Currently testing with XORP PIM. Known bug during system reboot it crashes during ip_mroute module unload. Haven't tested IPv6 multicast forwarding yet. (slightly off-topic/wrong list, but you can crash a 7.0-GENERIC kernel if you install the Xorp package from ports and set it up as a rendezvous point!) -Jeff ------_=_NextPart_001_01C91AB3.B40A9061 Content-Type: application/octet-stream; name="mroutedivert-20080908.patch" Content-Transfer-Encoding: base64 Content-Description: mroutedivert-20080908.patch Content-Disposition: attachment; filename="mroutedivert-20080908.patch" ZGlmZiAtdXIgbmV0aW5ldDYvaXA2X2lucHV0LmMub3JpZyBuZXRpbmV0Ni9pcDZfaW5wdXQuYwot LS0gbmV0aW5ldDYvaXA2X2lucHV0LmMub3JpZwkyMDA3LTExLTE5IDA5OjA5OjM5LjAwMDAwMDAw MCAtMDgwMAorKysgbmV0aW5ldDYvaXA2X2lucHV0LmMJMjAwOC0wNy0yOSAxMjo1ODoyNi4wMDAw MDAwMDAgLTA3MDAKQEAgLTE5MCw2ICsxOTAsMTkgQEAKIAluZDZfaW5pdCgpOwogCWZyYWc2X2lu aXQoKTsKIAorCVZfaXA2X21yb3V0ZXJfdmVyID0gMDsKKwliemVybygmVl9tcnQ2c3RhdCwgc2l6 ZW9mKFZfbXJ0NnN0YXQpKTsKKwliemVybygoY2FkZHJfdClWX21mNmN0YWJsZSwgc2l6ZW9mKFZf bWY2Y3RhYmxlKSk7CisJYnplcm8oKGNhZGRyX3QpVl9uNmV4cGlyZSwgc2l6ZW9mKFZfbjZleHBp cmUpKTsKKwliemVybygoY2FkZHJfdClWX21pZjZ0YWJsZSwgc2l6ZW9mKFZfbWlmNnRhYmxlKSk7 CisJVl9tcnQ2ZGVidWcgPSAwOworCVZfbXVsdGljYXN0X3JlZ2lzdGVyX2lmNiA9IE5VTEw7CisJ Vl9udW1taWZzID0gMDsKKwlWX3JlZ19taWZfbnVtID0gKG1pZmlfdCktMTsKKwliemVybygmVl9w aW02c3RhdCwgc2l6ZW9mKFZfcGltNnN0YXQpKTsKKwlWX3BpbTYgPSAwOworCWJ6ZXJvKChjYWRk cl90KVZfdXBjYWxsX2RhdGEsIHNpemVvZihWX3VwY2FsbF9kYXRhKSk7CisKICNpZmRlZiBWSU1B R0UKIAkvKiBTa2lwIGdsb2JhbCBpbml0aWFsaXphdGlvbiBzdHVmZiBmb3Igbm9uLWRlZmF1bHQg aW5zdGFuY2VzLiAqLwogCWlmICghSVNfREVGQVVMVF9WTkVUKGN1cnZuZXQpKQpkaWZmIC11ciBu ZXRpbmV0Ni9pcDZfbXJvdXRlLmMub3JpZyBuZXRpbmV0Ni9pcDZfbXJvdXRlLmMKLS0tIG5ldGlu ZXQ2L2lwNl9tcm91dGUuYy5vcmlnCTIwMDctMTEtMTkgMDk6MDk6MzkuMDAwMDAwMDAwIC0wODAw CisrKyBuZXRpbmV0Ni9pcDZfbXJvdXRlLmMJMjAwOC0wNy0yOSAxMzozOTozMS4wMDAwMDAwMDAg LTA3MDAKQEAgLTc2LDYgKzc2LDcgQEAKICAqIE1vZGlmaWVkIGJ5IFZhbiBKYWNvYnNvbiwgTEJM LCBKYW51YXJ5IDE5OTMKICAqIE1vZGlmaWVkIGJ5IEFqaXQgVGh5YWdhcmFqYW4sIFBBUkMsIEF1 Z3VzdCAxOTkzCiAgKiBNb2RpZmllZCBieSBCaWxsIEZlbm5lciwgUEFSQywgQXByaWwgMTk5NAor ICogTW9kaWZpZWQgYnkgSmVmZiBBaHJlbmhvbHosIEJvZWluZywgSnVseSAyMDA4LiAodmlydHVh bGl6YXRpb24gc3VwcG9ydCkKICAqCiAgKiBNUk9VVElORyBSZXZpc2lvbjogMy41LjEuMiArIFBJ TS1TTXYyIChwaW1kKSBTdXBwb3J0CiAgKi8KQEAgLTE1OSwxNCArMTYwLDE3IEBACiBTWVNDVExf REVDTChfbmV0X2luZXQ2X2lwNik7CiBTWVNDVExfTk9ERShfbmV0X2luZXQ2LCBJUFBST1RPX1BJ TSwgcGltLCBDVExGTEFHX1JXLCAwLCAiUElNIik7CiAKKyNpZm5kZWYgVklNQUdFCiBzdGF0aWMg c3RydWN0IG1ydDZzdGF0IG1ydDZzdGF0OwotU1lTQ1RMX1NUUlVDVChfbmV0X2luZXQ2X2lwNiwg T0lEX0FVVE8sIG1ydDZzdGF0LCBDVExGTEFHX1JXLAotICAgICZtcnQ2c3RhdCwgbXJ0NnN0YXQs CisjZW5kaWYgLyogIVZJTUFHRSAqLworU1lTQ1RMX1ZfU1RSVUNUKFZfTkVULCB2bmV0X2luZXQ2 LCBfbmV0X2luZXQ2X2lwNiwgT0lEX0FVVE8sIG1ydDZzdGF0LAorICAgIENUTEZMQUdfUlcsIG1y dDZzdGF0LCBtcnQ2c3RhdCwKICAgICAiTXVsdGljYXN0IFJvdXRpbmcgU3RhdGlzdGljcyAoc3Ry dWN0IG1ydDZzdGF0LCBuZXRpbmV0Ni9pcDZfbXJvdXRlLmgpIik7CiAKICNkZWZpbmUgTk9fUlRF X0ZPVU5ECTB4MQogI2RlZmluZSBSVEVfRk9VTkQJMHgyCiAKKyNpZm5kZWYgVklNQUdFCiBzdGF0 aWMgc3RydWN0IG1mNmMgKm1mNmN0YWJsZVtNRjZDVEJMU0laXTsKIFNZU0NUTF9PUEFRVUUoX25l dF9pbmV0Nl9pcDYsIE9JRF9BVVRPLCBtZjZjdGFibGUsIENUTEZMQUdfUkQsCiAgICAgJm1mNmN0 YWJsZSwgc2l6ZW9mKG1mNmN0YWJsZSksICJTLCptZjZjdGFibGVbTUY2Q1RCTFNJWl0iLApAQCAt MTc5LDYgKzE4Myw3IEBACiBTWVNDVExfT1BBUVVFKF9uZXRfaW5ldDZfaXA2LCBPSURfQVVUTywg bWlmNnRhYmxlLCBDVExGTEFHX1JELAogICAgICZtaWY2dGFibGUsIHNpemVvZihtaWY2dGFibGUp LCAiUyx2aWZbTUFYTUlGU10iLAogICAgICJNdWx0aWNhc3QgSW50ZXJmYWNlcyAoc3RydWN0IG1p ZltNQVhNSUZTXSwgbmV0aW5ldDYvaXA2X21yb3V0ZS5oKSIpOworI2VuZGlmIC8qICFWSU1BR0Ug Ki8KIAogI2lmZGVmIE1SVDZERUJVRwogI2lmbmRlZiBWSU1BR0UKQEAgLTE5OCw3ICsyMDMsOSBA QAogCiAjaWZkZWYgSU5FVAogI2lmZGVmIE1ST1VUSU5HCisjaWZuZGVmIFZJTUFHRQogZXh0ZXJu IHN0cnVjdCBzb2NrZXQgKmlwX21yb3V0ZXI7CisjZW5kaWYgLyogIVZJTUFHRSAqLwogI2VuZGlm CiAjZW5kaWYKIApAQCAtMjEzLDE5ICsyMjAsMjMgQEAKICAqIG9ubHkgZXhpc3QgYXMgYSBwbGFj ZWhvbGRlciBmb3IgbXVsdGljYXN0IHNvdXJjZQogICogdmVyaWZpY2F0aW9uLgogICovCisjaWZu ZGVmIFZJTUFHRQogc3RhdGljIHN0cnVjdCBpZm5ldCAqbXVsdGljYXN0X3JlZ2lzdGVyX2lmNjsK KyNlbmRpZiAvKiAhVklNQUdFICovCiAKICNkZWZpbmUgRU5DQVBfSE9QUyA2NAogCiAvKgogICog UHJpdmF0ZSB2YXJpYWJsZXMuCiAgKi8KKyNpZm5kZWYgVklNQUdFCiBzdGF0aWMgbWlmaV90IG51 bW1pZnMgPSAwOwogc3RhdGljIG1pZmlfdCByZWdfbWlmX251bSA9IChtaWZpX3QpLTE7CiAKIHN0 YXRpYyBzdHJ1Y3QgcGltNnN0YXQgcGltNnN0YXQ7Ci1TWVNDVExfU1RSVUNUKF9uZXRfaW5ldDZf cGltLCBQSU02Q1RMX1NUQVRTLCBzdGF0cywgQ1RMRkxBR19SRCwKLSAgICAmcGltNnN0YXQsIHBp bTZzdGF0LAorI2VuZGlmIC8qICFWSU1BR0UgKi8KK1NZU0NUTF9WX1NUUlVDVChWX05FVCwgdm5l dF9pbmV0NiwgX25ldF9pbmV0Nl9waW0sIFBJTTZDVExfU1RBVFMsIHN0YXRzLAorICAgIENUTEZM QUdfUkQsIHBpbTZzdGF0LCBwaW02c3RhdCwKICAgICAiUElNIFN0YXRpc3RpY3MgKHN0cnVjdCBw aW02c3RhdCwgbmV0aW5ldDYvcGltX3Zhci5oKSIpOwogCiAjaWZuZGVmIFZJTUFHRQpAQCAtMjQ0 LDkgKzI1NSw5IEBACiAgKiBGaW5kIGEgcm91dGUgZm9yIGEgZ2l2ZW4gb3JpZ2luIElQdjYgYWRk cmVzcyBhbmQgTXVsdGljYXN0IGdyb3VwIGFkZHJlc3MuCiAgKi8KICNkZWZpbmUgTUY2Q0ZJTkQo bywgZywgcnQpIGRvIHsgXAotCXN0cnVjdCBtZjZjICpfcnQgPSBtZjZjdGFibGVbTUY2Q0hBU0go byxnKV07IFwKKwlzdHJ1Y3QgbWY2YyAqX3J0ID0gVl9tZjZjdGFibGVbTUY2Q0hBU0gobyxnKV07 IFwKIAlydCA9IE5VTEw7IFwKLQltcnQ2c3RhdC5tcnQ2c19tZmNfbG9va3VwcysrOyBcCisJVl9t cnQ2c3RhdC5tcnQ2c19tZmNfbG9va3VwcysrOyBcCiAJd2hpbGUgKF9ydCkgeyBcCiAJCWlmIChJ TjZfQVJFX0FERFJfRVFVQUwoJl9ydC0+bWY2Y19vcmlnaW4uc2luNl9hZGRyLCAmKG8pKSAmJiBc CiAJCSAgICBJTjZfQVJFX0FERFJfRVFVQUwoJl9ydC0+bWY2Y19tY2FzdGdycC5zaW42X2FkZHIs ICYoZykpICYmIFwKQEAgLTI1Nyw3ICsyNjgsNyBAQAogCQlfcnQgPSBfcnQtPm1mNmNfbmV4dDsg XAogCX0gXAogCWlmIChydCA9PSBOVUxMKSB7IFwKLQkJbXJ0NnN0YXQubXJ0NnNfbWZjX21pc3Nl cysrOyBcCisJCVZfbXJ0NnN0YXQubXJ0NnNfbWZjX21pc3NlcysrOyBcCiAJfSBcCiB9IHdoaWxl ICgvKkNPTlNUQ09ORCovIDApCiAKQEAgLTI5MCw3ICszMDEsOSBAQAogCiAjaWZkZWYgVVBDQUxM X1RJTUlORwogI2RlZmluZSBVUENBTExfTUFYCTUwCisjaWZuZGVmIFZJTUFHRQogc3RhdGljIHVf bG9uZyB1cGNhbGxfZGF0YVtVUENBTExfTUFYICsgMV07CisjZW5kaWYgLyogIVZJTUFHRSAqLwog c3RhdGljIHZvaWQgY29sbGF0ZSgpOwogI2VuZGlmIC8qIFVQQ0FMTF9USU1JTkcgKi8KIApAQCAt MzEwLDYgKzMyMyw3IEBACiBpbnQgWF9pcDZfbXJvdXRlcl9nZXQoc3RydWN0IHNvY2tldCAqc28s IHN0cnVjdCBzb2Nrb3B0ICpzb3B0KTsKIGludCBYX21ydDZfaW9jdGwoaW50IGNtZCwgY2FkZHJf dCBkYXRhKTsKIAorCiAvKgogICogSGFuZGxlIE1SVCBzZXRzb2Nrb3B0IGNvbW1hbmRzIHRvIG1v ZGlmeSB0aGUgbXVsdGljYXN0IHJvdXRpbmcgdGFibGVzLgogICovCkBAIC0zODQsNyArMzk4LDcg QEAKIGludAogWF9pcDZfbXJvdXRlcl9nZXQoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nr b3B0ICpzb3B0KQogewotCUlOSVRfVk5FVF9JTkVUNihjdXJ2bmV0KTsKKwlJTklUX1ZORVRfSU5F VDYoc28tPnNvX3ZuZXQpOwogCWludCBlcnJvciA9IDA7CiAKIAlpZiAoc28gIT0gaXA2X21yb3V0 ZXIpCkBAIC00MjAsNiArNDM0LDcgQEAKIHN0YXRpYyBpbnQKIGdldF9zZ19jbnQoc3RydWN0IHNp b2Nfc2dfcmVxNiAqcmVxKQogeworCUlOSVRfVk5FVF9JTkVUNihjdXJ2bmV0KTsKIAlzdHJ1Y3Qg bWY2YyAqcnQ7CiAJaW50IHM7CiAKQEAgLTQ0NSwxNSArNDYwLDE2IEBACiBzdGF0aWMgaW50CiBn ZXRfbWlmNl9jbnQoc3RydWN0IHNpb2NfbWlmX3JlcTYgKnJlcSkKIHsKKwlJTklUX1ZORVRfSU5F VDYoY3Vydm5ldCk7CiAJbWlmaV90IG1pZmkgPSByZXEtPm1pZmk7CiAKLQlpZiAobWlmaSA+PSBu dW1taWZzKQorCWlmIChtaWZpID49IFZfbnVtbWlmcykKIAkJcmV0dXJuIChFSU5WQUwpOwogCi0J cmVxLT5pY291bnQgPSBtaWY2dGFibGVbbWlmaV0ubTZfcGt0X2luOwotCXJlcS0+b2NvdW50ID0g bWlmNnRhYmxlW21pZmldLm02X3BrdF9vdXQ7Ci0JcmVxLT5pYnl0ZXMgPSBtaWY2dGFibGVbbWlm aV0ubTZfYnl0ZXNfaW47Ci0JcmVxLT5vYnl0ZXMgPSBtaWY2dGFibGVbbWlmaV0ubTZfYnl0ZXNf b3V0OworCXJlcS0+aWNvdW50ID0gVl9taWY2dGFibGVbbWlmaV0ubTZfcGt0X2luOworCXJlcS0+ b2NvdW50ID0gVl9taWY2dGFibGVbbWlmaV0ubTZfcGt0X291dDsKKwlyZXEtPmlieXRlcyA9IFZf bWlmNnRhYmxlW21pZmldLm02X2J5dGVzX2luOworCXJlcS0+b2J5dGVzID0gVl9taWY2dGFibGVb bWlmaV0ubTZfYnl0ZXNfb3V0OwogCiAJcmV0dXJuICgwKTsKIH0KQEAgLTQ3Niw5ICs0OTIsMTEg QEAKIHN0YXRpYyBpbnQKIGlwNl9tcm91dGVyX2luaXQoc3RydWN0IHNvY2tldCAqc28sIGludCB2 LCBpbnQgY21kKQogewotCUlOSVRfVk5FVF9JTkVUNihjdXJ2bmV0KTsKKwlJTklUX1ZORVRfSU5F VDYoc28tPnNvX3ZuZXQpOwogCiAJVl9pcDZfbXJvdXRlcl92ZXIgPSAwOworCVZfbnVtbWlmcyA9 IDA7CisJVl9yZWdfbWlmX251bSA9IChtaWZpX3QpLTE7CiAKICNpZmRlZiBNUlQ2REVCVUcKIAlW X21ydDZkZWJ1ZyA9IDA7CkBAIC01MDIsMTQgKzUyMCwyMCBAQAogCWlwNl9tcm91dGVyID0gc287 CiAJVl9pcDZfbXJvdXRlcl92ZXIgPSBjbWQ7CiAKLQliemVybygoY2FkZHJfdCltZjZjdGFibGUs IHNpemVvZihtZjZjdGFibGUpKTsKLQliemVybygoY2FkZHJfdCluNmV4cGlyZSwgc2l6ZW9mKG42 ZXhwaXJlKSk7CisJYnplcm8oKGNhZGRyX3QpVl9tZjZjdGFibGUsIHNpemVvZihWX21mNmN0YWJs ZSkpOworCWJ6ZXJvKChjYWRkcl90KVZfbjZleHBpcmUsIHNpemVvZihWX242ZXhwaXJlKSk7CiAK IAlWX3BpbTYgPSAwOy8qIHVzZWQgZm9yIHN0dWJiaW5nIG91dC9pbiBwaW0gc3R1ZmYgKi8KIAot CWNhbGxvdXRfaW5pdCgmZXhwaXJlX3VwY2FsbHNfY2gsIDApOwotCWNhbGxvdXRfcmVzZXQoJmV4 cGlyZV91cGNhbGxzX2NoLCBFWFBJUkVfVElNRU9VVCwKLQkgICAgZXhwaXJlX3VwY2FsbHMsIE5V TEwpOworI2lmZGVmIFZJTUFHRQorCWlmIChJU19ERUZBVUxUX1ZORVQoc28tPnNvX3ZuZXQpKSB7 CisjZW5kaWYgLyogVklNQUdFICovCisJICAgIGNhbGxvdXRfaW5pdCgmZXhwaXJlX3VwY2FsbHNf Y2gsIDApOworCSAgICBjYWxsb3V0X3Jlc2V0KCZleHBpcmVfdXBjYWxsc19jaCwgRVhQSVJFX1RJ TUVPVVQsCisJCWV4cGlyZV91cGNhbGxzLCBOVUxMKTsKKyNpZmRlZiBWSU1BR0UKKwl9CisjZW5k aWYgLyogVklNQUdFICovCiAKICNpZmRlZiBNUlQ2REVCVUcKIAlpZiAoVl9tcnQ2ZGVidWcpCkBA IC01NDYsMjkgKzU3MCwzNSBAQAogCSAqIFhYWDogdGhlcmUgbWF5IGJlIGFuIGludGVyZmFjZSBp biB3aGljaCB0aGUgSVB2NCBtdWx0aWNhc3QKIAkgKiBkYWVtb24gaXMgbm90IGludGVyZXN0ZWQu Li4KIAkgKi8KLQlpZiAoIWlwX21yb3V0ZXIpCisJaWYgKCFWX2lwX21yb3V0ZXIpCiAjZW5kaWYK ICNlbmRpZgogCXsKLQkJZm9yIChtaWZpID0gMDsgbWlmaSA8IG51bW1pZnM7IG1pZmkrKykgewot CQkJaWYgKG1pZjZ0YWJsZVttaWZpXS5tNl9pZnAgJiYKLQkJCSAgICAhKG1pZjZ0YWJsZVttaWZp XS5tNl9mbGFncyAmIE1JRkZfUkVHSVNURVIpKSB7Ci0JCQkJaWZfYWxsbXVsdGkobWlmNnRhYmxl W21pZmldLm02X2lmcCwgMCk7CisJCWZvciAobWlmaSA9IDA7IG1pZmkgPCBWX251bW1pZnM7IG1p ZmkrKykgeworCQkJaWYgKFZfbWlmNnRhYmxlW21pZmldLm02X2lmcCAmJgorCQkJICAgICEoVl9t aWY2dGFibGVbbWlmaV0ubTZfZmxhZ3MgJiBNSUZGX1JFR0lTVEVSKSkgeworCQkJCWlmX2FsbG11 bHRpKFZfbWlmNnRhYmxlW21pZmldLm02X2lmcCwgMCk7CiAJCQl9CiAJCX0KIAl9Ci0JYnplcm8o KGNhZGRyX3QpbWlmNnRhYmxlLCBzaXplb2YobWlmNnRhYmxlKSk7Ci0JbnVtbWlmcyA9IDA7CisJ Ynplcm8oKGNhZGRyX3QpVl9taWY2dGFibGUsIHNpemVvZihWX21pZjZ0YWJsZSkpOworCVZfbnVt bWlmcyA9IDA7CiAKIAlWX3BpbTYgPSAwOyAvKiB1c2VkIHRvIHN0dWIgb3V0L2luIHBpbSBzcGVj aWZpYyBjb2RlICovCiAKLQljYWxsb3V0X3N0b3AoJmV4cGlyZV91cGNhbGxzX2NoKTsKKyNpZmRl ZiBWSU1BR0UKKwlpZiAoSVNfREVGQVVMVF9WTkVUKGN1cnZuZXQpKSB7CisjZW5kaWYgLyogVklN QUdFICovCisJICAgIGNhbGxvdXRfc3RvcCgmZXhwaXJlX3VwY2FsbHNfY2gpOworI2lmZGVmIFZJ TUFHRQorCX0KKyNlbmRpZiAvKiBWSU1BR0UgKi8KIAogCS8qCiAJICogRnJlZSBhbGwgbXVsdGlj YXN0IGZvcndhcmRpbmcgY2FjaGUgZW50cmllcy4KIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgTUY2 Q1RCTFNJWjsgaSsrKSB7Ci0JCXJ0ID0gbWY2Y3RhYmxlW2ldOworCQlydCA9IFZfbWY2Y3RhYmxl W2ldOwogCQl3aGlsZSAocnQpIHsKIAkJCXN0cnVjdCBtZjZjICpmcnQ7CiAKQEAgLTU4NSwxNiAr NjE1LDE2IEBACiAJCX0KIAl9CiAKLQliemVybygoY2FkZHJfdCltZjZjdGFibGUsIHNpemVvZiht ZjZjdGFibGUpKTsKKwliemVybygoY2FkZHJfdClWX21mNmN0YWJsZSwgc2l6ZW9mKFZfbWY2Y3Rh YmxlKSk7CiAKIAkvKgogCSAqIFJlc2V0IHJlZ2lzdGVyIGludGVyZmFjZQogCSAqLwotCWlmIChy ZWdfbWlmX251bSAhPSAobWlmaV90KS0xICYmIG11bHRpY2FzdF9yZWdpc3Rlcl9pZjYgIT0gTlVM TCkgewotCQlpZl9kZXRhY2gobXVsdGljYXN0X3JlZ2lzdGVyX2lmNik7Ci0JCWlmX2ZyZWUobXVs dGljYXN0X3JlZ2lzdGVyX2lmNik7Ci0JCXJlZ19taWZfbnVtID0gKG1pZmlfdCktMTsKLQkJbXVs dGljYXN0X3JlZ2lzdGVyX2lmNiA9IE5VTEw7CisJaWYgKFZfcmVnX21pZl9udW0gIT0gKG1pZmlf dCktMSAmJiBWX211bHRpY2FzdF9yZWdpc3Rlcl9pZjYgIT0gTlVMTCkgeworCQlpZl9kZXRhY2go Vl9tdWx0aWNhc3RfcmVnaXN0ZXJfaWY2KTsKKwkJaWZfZnJlZShWX211bHRpY2FzdF9yZWdpc3Rl cl9pZjYpOworCQlWX3JlZ19taWZfbnVtID0gKG1pZmlfdCktMTsKKwkJVl9tdWx0aWNhc3RfcmVn aXN0ZXJfaWY2ID0gTlVMTDsKIAl9CiAKIAlpcDZfbXJvdXRlciA9IE5VTEw7CkBAIC02MTksMTMg KzY0OSwxNCBAQAogYWRkX202aWYoc3RydWN0IG1pZjZjdGwgKm1pZmNwKQogewogCUlOSVRfVk5F VF9ORVQoY3Vydm5ldCk7CisJSU5JVF9WTkVUX0lORVQ2KGN1cnZuZXQpOwogCXN0cnVjdCBtaWY2 ICptaWZwOwogCXN0cnVjdCBpZm5ldCAqaWZwOwogCWludCBlcnJvciwgczsKIAogCWlmIChtaWZj cC0+bWlmNmNfbWlmaSA+PSBNQVhNSUZTKQogCQlyZXR1cm4gKEVJTlZBTCk7Ci0JbWlmcCA9IG1p ZjZ0YWJsZSArIG1pZmNwLT5taWY2Y19taWZpOworCW1pZnAgPSBWX21pZjZ0YWJsZSArIG1pZmNw LT5taWY2Y19taWZpOwogCWlmIChtaWZwLT5tNl9pZnApCiAJCXJldHVybiAoRUFERFJJTlVTRSk7 IC8qIFhYWDogaXMgaXQgYXBwcm9wcmlhdGU/ICovCiAJaWYgKG1pZmNwLT5taWY2Y19waWZpID09 IDAgfHwgbWlmY3AtPm1pZjZjX3BpZmkgPiBWX2lmX2luZGV4KQpAQCAtNjMzLDE0ICs2NjQsMTQg QEAKIAlpZnAgPSBpZm5ldF9ieWluZGV4KG1pZmNwLT5taWY2Y19waWZpKTsKIAogCWlmIChtaWZj cC0+bWlmNmNfZmxhZ3MgJiBNSUZGX1JFR0lTVEVSKSB7Ci0JCWlmIChyZWdfbWlmX251bSA9PSAo bWlmaV90KS0xKSB7CisJCWlmIChWX3JlZ19taWZfbnVtID09IChtaWZpX3QpLTEpIHsKIAkJCWlm cCA9IGlmX2FsbG9jKElGVF9PVEhFUik7CiAKIAkJCWlmX2luaXRuYW1lKGlmcCwgInJlZ2lzdGVy X21pZiIsIDApOwogCQkJaWZwLT5pZl9mbGFncyB8PSBJRkZfTE9PUEJBQ0s7CiAJCQlpZl9hdHRh Y2goaWZwKTsKLQkJCW11bHRpY2FzdF9yZWdpc3Rlcl9pZjYgPSBpZnA7Ci0JCQlyZWdfbWlmX251 bSA9IG1pZmNwLT5taWY2Y19taWZpOworCQkJVl9tdWx0aWNhc3RfcmVnaXN0ZXJfaWY2ID0gaWZw OworCQkJVl9yZWdfbWlmX251bSA9IG1pZmNwLT5taWY2Y19taWZpOwogCQkJLyoKIAkJCSAqIGl0 IGlzIGltcG9zc2libGUgdG8gZ3Vlc3MgdGhlIGlmaW5kZXggb2YgdGhlCiAJCQkgKiByZWdpc3Rl ciBpbnRlcmZhY2UuICBTbyBtaWY2Y19waWZpIGlzIGF1dG9tYXRpY2FsbHkKQEAgLTY0OCw3ICs2 NzksNyBAQAogCQkJICovCiAJCQltaWZjcC0+bWlmNmNfcGlmaSA9IGlmcC0+aWZfaW5kZXg7CiAJ CX0gZWxzZSB7Ci0JCQlpZnAgPSBtdWx0aWNhc3RfcmVnaXN0ZXJfaWY2OworCQkJaWZwID0gVl9t dWx0aWNhc3RfcmVnaXN0ZXJfaWY2OwogCQl9CiAKIAl9IC8qIGlmIFJFR0lTVEVSICovCkBAIC02 NzUsOSArNzA2LDkgQEAKIAltaWZwLT5tNl9ieXRlc19vdXQgPSAwOwogCXNwbHgocyk7CiAKLQkv KiBBZGp1c3QgbnVtbWlmcyB1cCBpZiB0aGUgbWlmaSBpcyBoaWdoZXIgdGhhbiBudW1taWZzICov Ci0JaWYgKG51bW1pZnMgPD0gbWlmY3AtPm1pZjZjX21pZmkpCi0JCW51bW1pZnMgPSBtaWZjcC0+ bWlmNmNfbWlmaSArIDE7CisJLyogQWRqdXN0IFZfbnVtbWlmcyB1cCBpZiB0aGUgbWlmaSBpcyBo aWdoZXIgdGhhbiBWX251bW1pZnMgKi8KKwlpZiAoVl9udW1taWZzIDw9IG1pZmNwLT5taWY2Y19t aWZpKQorCQlWX251bW1pZnMgPSBtaWZjcC0+bWlmNmNfbWlmaSArIDE7CiAKICNpZmRlZiBNUlQ2 REVCVUcKIAlpZiAoVl9tcnQ2ZGVidWcpCkBAIC02OTYsMTIgKzcyNywxMyBAQAogc3RhdGljIGlu dAogZGVsX202aWYobWlmaV90ICptaWZpcCkKIHsKLQlzdHJ1Y3QgbWlmNiAqbWlmcCA9IG1pZjZ0 YWJsZSArICptaWZpcDsKKwlJTklUX1ZORVRfSU5FVDYoY3Vydm5ldCk7CisJc3RydWN0IG1pZjYg Km1pZnAgPSBWX21pZjZ0YWJsZSArICptaWZpcDsKIAltaWZpX3QgbWlmaTsKIAlzdHJ1Y3QgaWZu ZXQgKmlmcDsKIAlpbnQgczsKIAotCWlmICgqbWlmaXAgPj0gbnVtbWlmcykKKwlpZiAoKm1pZmlw ID49IFZfbnVtbWlmcykKIAkJcmV0dXJuIChFSU5WQUwpOwogCWlmIChtaWZwLT5tNl9pZnAgPT0g TlVMTCkKIAkJcmV0dXJuIChFSU5WQUwpOwpAQCAtNzE3LDI4ICs3NDksMjggQEAKIAogCQlpZl9h bGxtdWx0aShpZnAsIDApOwogCX0gZWxzZSB7Ci0JCWlmIChyZWdfbWlmX251bSAhPSAobWlmaV90 KS0xICYmCi0JCSAgICBtdWx0aWNhc3RfcmVnaXN0ZXJfaWY2ICE9IE5VTEwpIHsKLQkJCWlmX2Rl dGFjaChtdWx0aWNhc3RfcmVnaXN0ZXJfaWY2KTsKLQkJCWlmX2ZyZWUobXVsdGljYXN0X3JlZ2lz dGVyX2lmNik7Ci0JCQlyZWdfbWlmX251bSA9IChtaWZpX3QpLTE7Ci0JCQltdWx0aWNhc3RfcmVn aXN0ZXJfaWY2ID0gTlVMTDsKKwkJaWYgKFZfcmVnX21pZl9udW0gIT0gKG1pZmlfdCktMSAmJgor CQkgICAgVl9tdWx0aWNhc3RfcmVnaXN0ZXJfaWY2ICE9IE5VTEwpIHsKKwkJCWlmX2RldGFjaChW X211bHRpY2FzdF9yZWdpc3Rlcl9pZjYpOworCQkJaWZfZnJlZShWX211bHRpY2FzdF9yZWdpc3Rl cl9pZjYpOworCQkJVl9yZWdfbWlmX251bSA9IChtaWZpX3QpLTE7CisJCQlWX211bHRpY2FzdF9y ZWdpc3Rlcl9pZjYgPSBOVUxMOwogCQl9CiAJfQogCiAJYnplcm8oKGNhZGRyX3QpbWlmcCwgc2l6 ZW9mKCptaWZwKSk7CiAKLQkvKiBBZGp1c3QgbnVtbWlmcyBkb3duICovCi0JZm9yIChtaWZpID0g bnVtbWlmczsgbWlmaSA+IDA7IG1pZmktLSkKLQkJaWYgKG1pZjZ0YWJsZVttaWZpIC0gMV0ubTZf aWZwKQorCS8qIEFkanVzdCBWX251bW1pZnMgZG93biAqLworCWZvciAobWlmaSA9IFZfbnVtbWlm czsgbWlmaSA+IDA7IG1pZmktLSkKKwkJaWYgKFZfbWlmNnRhYmxlW21pZmkgLSAxXS5tNl9pZnAp CiAJCQlicmVhazsKLQludW1taWZzID0gbWlmaTsKKwlWX251bW1pZnMgPSBtaWZpOwogCiAJc3Bs eChzKTsKIAogI2lmZGVmIE1SVDZERUJVRwogCWlmIChWX21ydDZkZWJ1ZykKLQkJbG9nKExPR19E RUJVRywgImRlbF9tNmlmICVkLCBudW1taWZzICVkXG4iLCAqbWlmaXAsIG51bW1pZnMpOworCQls b2coTE9HX0RFQlVHLCAiZGVsX202aWYgJWQsIG51bW1pZnMgJWRcbiIsICptaWZpcCwgVl9udW1t aWZzKTsKICNlbmRpZgogCiAJcmV0dXJuICgwKTsKQEAgLTc4Niw3ICs4MTgsNyBAQAogCXMgPSBz cGxuZXQoKTsKIAloYXNoID0gTUY2Q0hBU0gobWZjY3AtPm1mNmNjX29yaWdpbi5zaW42X2FkZHIs CiAJCQltZmNjcC0+bWY2Y2NfbWNhc3RncnAuc2luNl9hZGRyKTsKLQlmb3IgKHJ0ID0gbWY2Y3Rh YmxlW2hhc2hdLCBuc3RsID0gMDsgcnQ7IHJ0ID0gcnQtPm1mNmNfbmV4dCkgeworCWZvciAocnQg PSBWX21mNmN0YWJsZVtoYXNoXSwgbnN0bCA9IDA7IHJ0OyBydCA9IHJ0LT5tZjZjX25leHQpIHsK IAkJaWYgKElONl9BUkVfQUREUl9FUVVBTCgmcnQtPm1mNmNfb3JpZ2luLnNpbjZfYWRkciwKIAkJ CQkgICAgICAgJm1mY2NwLT5tZjZjY19vcmlnaW4uc2luNl9hZGRyKSAmJgogCQkgICAgSU42X0FS RV9BRERSX0VRVUFMKCZydC0+bWY2Y19tY2FzdGdycC5zaW42X2FkZHIsCkBAIC04MjQsNyArODU2 LDcgQEAKIAkJCXJ0LT5tZjZjX3dyb25nX2lmICAgPSAwOwogCiAJCQlydC0+bWY2Y19leHBpcmUg PSAwOwkvKiBEb24ndCBjbGVhbiB0aGlzIGd1eSB1cCAqLwotCQkJbjZleHBpcmVbaGFzaF0tLTsK KwkJCVZfbjZleHBpcmVbaGFzaF0tLTsKIAogCQkJLyogZnJlZSBwYWNrZXRzIFFlZCBhdCB0aGUg ZW5kIG9mIHRoaXMgZW50cnkgKi8KIAkJCWZvciAocnRlID0gcnQtPm1mNmNfc3RhbGw7IHJ0ZSAh PSBOVUxMOyApIHsKQEAgLTg1NSw3ICs4ODcsNyBAQAogCQkJbWZjY3AtPm1mNmNjX3BhcmVudCk7 CiAjZW5kaWYKIAotCQlmb3IgKHJ0ID0gbWY2Y3RhYmxlW2hhc2hdOyBydDsgcnQgPSBydC0+bWY2 Y19uZXh0KSB7CisJCWZvciAocnQgPSBWX21mNmN0YWJsZVtoYXNoXTsgcnQ7IHJ0ID0gcnQtPm1m NmNfbmV4dCkgewogCiAJCQlpZiAoSU42X0FSRV9BRERSX0VRVUFMKCZydC0+bWY2Y19vcmlnaW4u c2luNl9hZGRyLAogCQkJCQkgICAgICAgJm1mY2NwLT5tZjZjY19vcmlnaW4uc2luNl9hZGRyKSYm CkBAIC04NzIsNyArOTA0LDcgQEAKIAkJCQlydC0+bWY2Y193cm9uZ19pZiAgID0gMDsKIAogCQkJ CWlmIChydC0+bWY2Y19leHBpcmUpCi0JCQkJCW42ZXhwaXJlW2hhc2hdLS07CisJCQkJCVZfbjZl eHBpcmVbaGFzaF0tLTsKIAkJCQlydC0+bWY2Y19leHBpcmUJICAgPSAwOwogCQkJfQogCQl9CkBA IC04OTgsOCArOTMwLDggQEAKIAkJCXJ0LT5tZjZjX3N0YWxsID0gTlVMTDsKIAogCQkJLyogbGlu ayBpbnRvIHRhYmxlICovCi0JCQlydC0+bWY2Y19uZXh0ICA9IG1mNmN0YWJsZVtoYXNoXTsKLQkJ CW1mNmN0YWJsZVtoYXNoXSA9IHJ0OworCQkJcnQtPm1mNmNfbmV4dCAgPSBWX21mNmN0YWJsZVto YXNoXTsKKwkJCVZfbWY2Y3RhYmxlW2hhc2hdID0gcnQ7CiAJCX0KIAl9CiAJc3BseChzKTsKQEAg LTkxMyw2ICs5NDUsNyBAQAogc3RhdGljIHZvaWQKIGNvbGxhdGUoc3RydWN0IHRpbWV2YWwgKnQp CiB7CisJSU5JVF9WTkVUX0lORVQ2KGN1cnZuZXQpOwogCXVfbG9uZyBkOwogCXN0cnVjdCB0aW1l dmFsIHRwOwogCXVfbG9uZyBkZWx0YTsKQEAgLTkyNyw3ICs5NjAsNyBAQAogCQlpZiAoZCA+IFVQ Q0FMTF9NQVgpCiAJCQlkID0gVVBDQUxMX01BWDsKIAotCQkrK3VwY2FsbF9kYXRhW2RdOworCQkr K1ZfdXBjYWxsX2RhdGFbZF07CiAJfQogfQogI2VuZGlmIC8qIFVQQ0FMTF9USU1JTkcgKi8KQEAg LTk2MSw3ICs5OTQsNyBAQAogCiAJcyA9IHNwbG5ldCgpOwogCi0JbnB0ciA9ICZtZjZjdGFibGVb aGFzaF07CisJbnB0ciA9ICZWX21mNmN0YWJsZVtoYXNoXTsKIAl3aGlsZSAoKHJ0ID0gKm5wdHIp ICE9IE5VTEwpIHsKIAkJaWYgKElONl9BUkVfQUREUl9FUVVBTCgmb3JpZ2luLnNpbjZfYWRkciwK IAkJCQkgICAgICAgJnJ0LT5tZjZjX29yaWdpbi5zaW42X2FkZHIpICYmCkBAIC0xMDk2LDcgKzEx MjksNyBAQAogCQlHRVRfVElNRSh0cCk7CiAjZW5kaWYgLyogVVBDQUxMX1RJTUlORyAqLwogCi0J CW1ydDZzdGF0Lm1ydDZzX25vX3JvdXRlKys7CisJCVZfbXJ0NnN0YXQubXJ0NnNfbm9fcm91dGUr KzsKICNpZmRlZiBNUlQ2REVCVUcKIAkJaWYgKFZfbXJ0NmRlYnVnICYgKERFQlVHX0ZPUldBUkQg fCBERUJVR19NRkMpKQogCQkJbG9nKExPR19ERUJVRywgImlwNl9tZm9yd2FyZDogbm8gcnRlIHMg JXMgZyAlc1xuIiwKQEAgLTExMzAsNyArMTE2Myw3IEBACiAKIAkJLyogaXMgdGhlcmUgYW4gdXBj YWxsIHdhaXRpbmcgZm9yIHRoaXMgcGFja2V0PyAqLwogCQloYXNoID0gTUY2Q0hBU0goaXA2LT5p cDZfc3JjLCBpcDYtPmlwNl9kc3QpOwotCQlmb3IgKHJ0ID0gbWY2Y3RhYmxlW2hhc2hdOyBydDsg cnQgPSBydC0+bWY2Y19uZXh0KSB7CisJCWZvciAocnQgPSBWX21mNmN0YWJsZVtoYXNoXTsgcnQ7 IHJ0ID0gcnQtPm1mNmNfbmV4dCkgewogCQkJaWYgKElONl9BUkVfQUREUl9FUVVBTCgmaXA2LT5p cDZfc3JjLAogCQkJCQkgICAgICAgJnJ0LT5tZjZjX29yaWdpbi5zaW42X2FkZHIpICYmCiAJCQkg ICAgSU42X0FSRV9BRERSX0VRVUFMKCZpcDYtPmlwNl9kc3QsCkBAIC0xMjA0LDggKzEyMzcsOCBA QAogCQkJCSAgICAiZ2V0dGluZyB0aGUgaWlmIGluZm8gaW4gdGhlIGtlcm5lbFxuIik7CiAjZW5k aWYKIAotCQkJZm9yIChtaWZwID0gbWlmNnRhYmxlLCBtaWZpID0gMDsKLQkJCSAgICAgbWlmaSA8 IG51bW1pZnMgJiYgbWlmcC0+bTZfaWZwICE9IGlmcDsKKwkJCWZvciAobWlmcCA9IFZfbWlmNnRh YmxlLCBtaWZpID0gMDsKKwkJCSAgICAgbWlmaSA8IFZfbnVtbWlmcyAmJiBtaWZwLT5tNl9pZnAg IT0gaWZwOwogCQkJICAgICBtaWZwKyssIG1pZmkrKykKIAkJCQk7CiAKQEAgLTEyMjMsNyArMTI1 Niw3IEBACiAJCQlpZiAoc29ja2V0X3NlbmQoaXA2X21yb3V0ZXIsIG1tLCAmc2luNikgPCAwKSB7 CiAJCQkJbG9nKExPR19XQVJOSU5HLCAiaXA2X21mb3J3YXJkOiBpcDZfbXJvdXRlciAiCiAJCQkJ ICAgICJzb2NrZXQgcXVldWUgZnVsbFxuIik7Ci0JCQkJbXJ0NnN0YXQubXJ0NnNfdXBxX3NvY2tm dWxsKys7CisJCQkJVl9tcnQ2c3RhdC5tcnQ2c191cHFfc29ja2Z1bGwrKzsKIAkJCQlmcmVlKHJ0 ZSwgTV9NUlRBQkxFNik7CiAJCQkJbV9mcmVlbShtYjApOwogCQkJCWZyZWUocnQsIE1fTVJUQUJM RTYpOwpAQCAtMTIzMSw3ICsxMjY0LDcgQEAKIAkJCQlyZXR1cm4gKEVOT0JVRlMpOwogCQkJfQog Ci0JCQltcnQ2c3RhdC5tcnQ2c191cGNhbGxzKys7CisJCQlWX21ydDZzdGF0Lm1ydDZzX3VwY2Fs bHMrKzsKIAogCQkJLyogaW5zZXJ0IG5ldyBlbnRyeSBhdCBoZWFkIG9mIGhhc2ggY2hhaW4gKi8K IAkJCWJ6ZXJvKHJ0LCBzaXplb2YoKnJ0KSk7CkBAIC0xMjQyLDEyICsxMjc1LDEyIEBACiAJCQly dC0+bWY2Y19tY2FzdGdycC5zaW42X2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsK IAkJCXJ0LT5tZjZjX21jYXN0Z3JwLnNpbjZfYWRkciA9IGlwNi0+aXA2X2RzdDsKIAkJCXJ0LT5t ZjZjX2V4cGlyZSA9IFVQQ0FMTF9FWFBJUkU7Ci0JCQluNmV4cGlyZVtoYXNoXSsrOworCQkJVl9u NmV4cGlyZVtoYXNoXSsrOwogCQkJcnQtPm1mNmNfcGFyZW50ID0gTUY2Q19JTkNPTVBMRVRFX1BB UkVOVDsKIAogCQkJLyogbGluayBpbnRvIHRhYmxlICovCi0JCQlydC0+bWY2Y19uZXh0ICA9IG1m NmN0YWJsZVtoYXNoXTsKLQkJCW1mNmN0YWJsZVtoYXNoXSA9IHJ0OworCQkJcnQtPm1mNmNfbmV4 dCAgPSBWX21mNmN0YWJsZVtoYXNoXTsKKwkJCVZfbWY2Y3RhYmxlW2hhc2hdID0gcnQ7CiAJCQkv KiBBZGQgdGhpcyBlbnRyeSB0byB0aGUgZW5kIG9mIHRoZSBxdWV1ZSAqLwogCQkJcnQtPm1mNmNf c3RhbGwgPSBydGU7CiAJCX0gZWxzZSB7CkBAIC0xMjU3LDcgKzEyOTAsNyBAQAogCiAJCQlmb3Ig KHAgPSAmcnQtPm1mNmNfc3RhbGw7ICpwICE9IE5VTEw7IHAgPSAmKCpwKS0+bmV4dCkKIAkJCQlp ZiAoKytucGt0cyA+IE1BWF9VUFE2KSB7Ci0JCQkJCW1ydDZzdGF0Lm1ydDZzX3VwcV9vdmZsdysr OworCQkJCQlWX21ydDZzdGF0Lm1ydDZzX3VwcV9vdmZsdysrOwogCQkJCQlmcmVlKHJ0ZSwgTV9N UlRBQkxFNik7CiAJCQkJCW1fZnJlZW0obWIwKTsKIAkJCQkJc3BseChzKTsKQEAgLTEyODgsMTcg KzEzMjEsMTggQEAKIHN0YXRpYyB2b2lkCiBleHBpcmVfdXBjYWxscyh2b2lkICp1bnVzZWQpCiB7 Ci0JSU5JVF9WTkVUX0lORVQ2KGN1cnZuZXQpOwogCXN0cnVjdCBydGRldHEgKnJ0ZTsKIAlzdHJ1 Y3QgbWY2YyAqbWZjLCAqKm5wdHI7CiAJaW50IGk7CiAJaW50IHM7CiAKIAlzID0gc3BsbmV0KCk7 CisJVk5FVF9JVEVSTE9PUF9CRUdJTigpOworCUlOSVRfVk5FVF9JTkVUNihjdXJ2bmV0KTsKIAlm b3IgKGkgPSAwOyBpIDwgTUY2Q1RCTFNJWjsgaSsrKSB7Ci0JCWlmIChuNmV4cGlyZVtpXSA9PSAw KQorCQlpZiAoVl9uNmV4cGlyZVtpXSA9PSAwKQogCQkJY29udGludWU7Ci0JCW5wdHIgPSAmbWY2 Y3RhYmxlW2ldOworCQlucHRyID0gJlZfbWY2Y3RhYmxlW2ldOwogCQl3aGlsZSAoKG1mYyA9ICpu cHRyKSAhPSBOVUxMKSB7CiAJCQlydGUgPSBtZmMtPm1mNmNfc3RhbGw7CiAJCQkvKgpAQCAtMTMy OCw4ICsxMzYyLDggQEAKIAkJCQkJZnJlZShydGUsIE1fTVJUQUJMRTYpOwogCQkJCQlydGUgPSBu OwogCQkJCX0gd2hpbGUgKHJ0ZSAhPSBOVUxMKTsKLQkJCQltcnQ2c3RhdC5tcnQ2c19jYWNoZV9j bGVhbnVwcysrOwotCQkJCW42ZXhwaXJlW2ldLS07CisJCQkJVl9tcnQ2c3RhdC5tcnQ2c19jYWNo ZV9jbGVhbnVwcysrOworCQkJCVZfbjZleHBpcmVbaV0tLTsKIAogCQkJCSpucHRyID0gbWZjLT5t ZjZjX25leHQ7CiAJCQkJZnJlZShtZmMsIE1fTVJUQUJMRTYpOwpAQCAtMTMzOCw5ICsxMzcyLDkg QEAKIAkJCX0KIAkJfQogCX0KKwlWTkVUX0lURVJMT09QX0VORCgpOworCWNhbGxvdXRfcmVzZXQo JmV4cGlyZV91cGNhbGxzX2NoLCBFWFBJUkVfVElNRU9VVCwgZXhwaXJlX3VwY2FsbHMsIE5VTEwp OwogCXNwbHgocyk7Ci0JY2FsbG91dF9yZXNldCgmZXhwaXJlX3VwY2FsbHNfY2gsIEVYUElSRV9U SU1FT1VULAotCSAgICBleHBpcmVfdXBjYWxscywgTlVMTCk7CiB9CiAKIC8qCkBAIC0xMzc2LDE2 ICsxNDEwLDE2IEBACiAJICogZm9yIGl0cyBvcmlnaW4uCiAJICovCiAJbWlmaSA9IHJ0LT5tZjZj X3BhcmVudDsKLQlpZiAoKG1pZmkgPj0gbnVtbWlmcykgfHwgKG1pZjZ0YWJsZVttaWZpXS5tNl9p ZnAgIT0gaWZwKSkgeworCWlmICgobWlmaSA+PSBWX251bW1pZnMpIHx8IChWX21pZjZ0YWJsZVtt aWZpXS5tNl9pZnAgIT0gaWZwKSkgewogCQkvKiBjYW1lIGluIHRoZSB3cm9uZyBpbnRlcmZhY2Ug Ki8KICNpZmRlZiBNUlQ2REVCVUcKIAkJaWYgKFZfbXJ0NmRlYnVnICYgREVCVUdfRk9SV0FSRCkK IAkJCWxvZyhMT0dfREVCVUcsCiAJCQkgICAgIndyb25nIGlmOiBpZmlkICVkIG1pZmkgJWQgbWlm aWZpZCAleFxuIiwKIAkJCSAgICBpZnAtPmlmX2luZGV4LCBtaWZpLAotCQkJICAgIG1pZjZ0YWJs ZVttaWZpXS5tNl9pZnAtPmlmX2luZGV4KTsKKwkJCSAgICBWX21pZjZ0YWJsZVttaWZpXS5tNl9p ZnAtPmlmX2luZGV4KTsKICNlbmRpZgotCQltcnQ2c3RhdC5tcnQ2c193cm9uZ19pZisrOworCQlW X21ydDZzdGF0Lm1ydDZzX3dyb25nX2lmKys7CiAJCXJ0LT5tZjZjX3dyb25nX2lmKys7CiAJCS8q CiAJCSAqIElmIHdlIGFyZSBkb2luZyBQSU0gcHJvY2Vzc2luZywgYW5kIHdlIGFyZSBmb3J3YXJk aW5nCkBAIC0xMzkzLDcgKzE0MjcsNyBAQAogCQkgKiByb3V0aW5nIGRhZW1vbi4KIAkJICovCiAJ CS8qIGhhdmUgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYSB2YWxpZCBtaWYgKi8KLQkJaWYgKG1pZmkg PCBudW1taWZzICYmIG1pZjZ0YWJsZVttaWZpXS5tNl9pZnApCisJCWlmIChtaWZpIDwgVl9udW1t aWZzICYmIFZfbWlmNnRhYmxlW21pZmldLm02X2lmcCkKIAkJCWlmIChWX3BpbTYgJiYgKG0tPm1f ZmxhZ3MgJiBNX0xPT1ApID09IDApIHsKIAkJCQkvKgogCQkJCSAqIENoZWNrIHRoZSBNX0xPT1Ag ZmxhZyB0byBhdm9pZCBhbgpAQCAtMTQzOSw4ICsxNDczLDggQEAKIAkJCQkJcmV0dXJuIChFSU5W QUwpOwogCQkJCX0KIAotCQkJCWZvciAobWlmcCA9IG1pZjZ0YWJsZSwgaWlmID0gMDsKLQkJCQkg ICAgIGlpZiA8IG51bW1pZnMgJiYgbWlmcCAmJgorCQkJCWZvciAobWlmcCA9IFZfbWlmNnRhYmxl LCBpaWYgPSAwOworCQkJCSAgICAgaWlmIDwgVl9udW1taWZzICYmIG1pZnAgJiYKIAkJCQkJICAg ICBtaWZwLT5tNl9pZnAgIT0gaWZwOwogCQkJCSAgICAgbWlmcCsrLCBpaWYrKykKIAkJCQkJOwpA QCAtMTQ1OCwxNCArMTQ5MiwxNCBAQAogCQkJCQlicmVhazsKIAkJCQl9CiAKLQkJCQltcnQ2c3Rh dC5tcnQ2c191cGNhbGxzKys7CisJCQkJVl9tcnQ2c3RhdC5tcnQ2c191cGNhbGxzKys7CiAKIAkJ CQlpZiAoc29ja2V0X3NlbmQoaXA2X21yb3V0ZXIsIG1tLCAmc2luNikgPCAwKSB7CiAjaWZkZWYg TVJUNkRFQlVHCiAJCQkJCWlmIChWX21ydDZkZWJ1ZykKIAkJCQkJCWxvZyhMT0dfV0FSTklORywg Im1kcSwgaXA2X21yb3V0ZXIgc29ja2V0IHF1ZXVlIGZ1bGxcbiIpOwogI2VuZGlmCi0JCQkJCSsr bXJ0NnN0YXQubXJ0NnNfdXBxX3NvY2tmdWxsOworCQkJCQkrK1ZfbXJ0NnN0YXQubXJ0NnNfdXBx X3NvY2tmdWxsOwogCQkJCQlyZXR1cm4gKEVOT0JVRlMpOwogCQkJCX0JLyogaWYgc29ja2V0IFEg ZnVsbCAqLwogCQkJfQkJLyogaWYgUElNICovCkBAIC0xNDc1LDExICsxNTA5LDExIEBACiAJLyog SWYgSSBzb3VyY2VkIHRoaXMgcGFja2V0LCBpdCBjb3VudHMgYXMgb3V0cHV0LCBlbHNlIGl0IHdh cyBpbnB1dC4gKi8KIAlpZiAobS0+bV9wa3RoZHIucmN2aWYgPT0gTlVMTCkgewogCQkvKiBYWFg6 IGlzIHJjdmlmIHJlYWxseSBOVUxMIHdoZW4gb3V0cHV0Pz8gKi8KLQkJbWlmNnRhYmxlW21pZmld Lm02X3BrdF9vdXQrKzsKLQkJbWlmNnRhYmxlW21pZmldLm02X2J5dGVzX291dCArPSBwbGVuOwor CQlWX21pZjZ0YWJsZVttaWZpXS5tNl9wa3Rfb3V0Kys7CisJCVZfbWlmNnRhYmxlW21pZmldLm02 X2J5dGVzX291dCArPSBwbGVuOwogCX0gZWxzZSB7Ci0JCW1pZjZ0YWJsZVttaWZpXS5tNl9wa3Rf aW4rKzsKLQkJbWlmNnRhYmxlW21pZmldLm02X2J5dGVzX2luICs9IHBsZW47CisJCVZfbWlmNnRh YmxlW21pZmldLm02X3BrdF9pbisrOworCQlWX21pZjZ0YWJsZVttaWZpXS5tNl9ieXRlc19pbiAr PSBwbGVuOwogCX0KIAlydC0+bWY2Y19wa3RfY250Kys7CiAJcnQtPm1mNmNfYnl0ZV9jbnQgKz0g cGxlbjsKQEAgLTE0OTUsNyArMTUyOSw3IEBACiAJCVZfaXA2c3RhdC5pcDZzX2JhZHNjb3BlKys7 CiAJCXJldHVybiAoZXJyb3IpOwogCX0KLQlmb3IgKG1pZnAgPSBtaWY2dGFibGUsIG1pZmkgPSAw OyBtaWZpIDwgbnVtbWlmczsgbWlmcCsrLCBtaWZpKyspIHsKKwlmb3IgKG1pZnAgPSBWX21pZjZ0 YWJsZSwgbWlmaSA9IDA7IG1pZmkgPCBWX251bW1pZnM7IG1pZnArKywgbWlmaSsrKSB7CiAJCWlm IChJRl9JU1NFVChtaWZpLCAmcnQtPm1mNmNfaWZzZXQpKSB7CiAJCQkvKgogCQkJICogY2hlY2sg aWYgdGhlIG91dGdvaW5nIHBhY2tldCBpcyBnb2luZyB0byBicmVhawpAQCAtMTUwMywxMiArMTUz NywxMiBAQAogCQkJICogWFhYIEZvciBwYWNrZXRzIHRocm91Z2ggUElNIHJlZ2lzdGVyIHR1bm5l bAogCQkJICogaW50ZXJmYWNlLCB3ZSBiZWxpZXZlIGEgcm91dGluZyBkYWVtb24uCiAJCQkgKi8K LQkJCWlmICghKG1pZjZ0YWJsZVtydC0+bWY2Y19wYXJlbnRdLm02X2ZsYWdzICYKKwkJCWlmICgh KFZfbWlmNnRhYmxlW3J0LT5tZjZjX3BhcmVudF0ubTZfZmxhZ3MgJgogCQkJICAgICAgTUlGRl9S RUdJU1RFUikgJiYKLQkJCSAgICAhKG1pZjZ0YWJsZVttaWZpXS5tNl9mbGFncyAmIE1JRkZfUkVH SVNURVIpKSB7Ci0JCQkJaWYgKGluNl9zZXRzY29wZSgmc3JjMCwgbWlmNnRhYmxlW21pZmldLm02 X2lmcCwKKwkJCSAgICAhKFZfbWlmNnRhYmxlW21pZmldLm02X2ZsYWdzICYgTUlGRl9SRUdJU1RF UikpIHsKKwkJCQlpZiAoaW42X3NldHNjb3BlKCZzcmMwLCBWX21pZjZ0YWJsZVttaWZpXS5tNl9p ZnAsCiAJCQkJICAgICZvc3pvbmUpIHx8Ci0JCQkJICAgIGluNl9zZXRzY29wZSgmZHN0MCwgbWlm NnRhYmxlW21pZmldLm02X2lmcCwKKwkJCQkgICAgaW42X3NldHNjb3BlKCZkc3QwLCBWX21pZjZ0 YWJsZVttaWZpXS5tNl9pZnAsCiAJCQkJICAgICZvZHpvbmUpIHx8CiAJCQkJICAgIGlzem9uZSAh PSBvc3pvbmUgfHwKIAkJCQkgICAgaWR6b25lICE9IG9kem9uZSkgewpAQCAtMTU3NCw3ICsxNjA4 LDcgQEAKICNpZmRlZiBNUlQ2REVCVUcKIAkJaWYgKFZfbXJ0NmRlYnVnICYgREVCVUdfWE1JVCkK IAkJCWxvZyhMT0dfREVCVUcsICJwaHlpbnRfc2VuZCBvbiBtaWYgJWQgZXJyICVkXG4iLAotCQkJ ICAgIG1pZnAgLSBtaWY2dGFibGUsIGVycm9yKTsKKwkJCSAgICBtaWZwIC0gVl9taWY2dGFibGUs IGVycm9yKTsKICNlbmRpZgogCQlzcGx4KHMpOwogCQlyZXR1cm47CkBAIC0xNjEwLDcgKzE2NDQs NyBAQAogI2lmZGVmIE1SVDZERUJVRwogCQlpZiAoVl9tcnQ2ZGVidWcgJiBERUJVR19YTUlUKQog CQkJbG9nKExPR19ERUJVRywgInBoeWludF9zZW5kIG9uIG1pZiAlZCBlcnIgJWRcbiIsCi0JCQkg ICAgbWlmcCAtIG1pZjZ0YWJsZSwgZXJyb3IpOworCQkJICAgIG1pZnAgLSBWX21pZjZ0YWJsZSwg ZXJyb3IpOwogI2VuZGlmCiAJfSBlbHNlIHsKIAkJLyoKQEAgLTE2NTgsNyArMTY5Miw3IEBACiAJ CSAgICBpcDZfc3ByaW50ZihpcDZidWZkLCAmaXA2LT5pcDZfZHN0KSk7CiAJfQogI2VuZGlmCi0J KytwaW02c3RhdC5waW02c19zbmRfcmVnaXN0ZXJzOworCSsrVl9waW02c3RhdC5waW02c19zbmRf cmVnaXN0ZXJzOwogCiAJLyogTWFrZSBhIGNvcHkgb2YgdGhlIHBhY2tldCB0byBzZW5kIHRvIHRo ZSB1c2VyIGxldmVsIHByb2Nlc3MgKi8KIAlNR0VUSERSKG1tLCBNX0RPTlRXQUlULCBNVF9IRUFE RVIpOwpAQCAtMTY5MCwxMCArMTcyNCwxMCBAQAogCWltNi0+aW02X21zZ3R5cGUgICAgICA9IE1S VDZNU0dfV0hPTEVQS1Q7CiAJaW02LT5pbTZfbWJ6ICAgICAgICAgID0gMDsKIAotCWltNi0+aW02 X21pZiA9IG1pZiAtIG1pZjZ0YWJsZTsKKwlpbTYtPmltNl9taWYgPSBtaWYgLSBWX21pZjZ0YWJs ZTsKIAogCS8qIGlpZiBpbmZvIGlzIG5vdCBnaXZlbiBmb3IgcmVnLiBlbmNhcC5uICovCi0JbXJ0 NnN0YXQubXJ0NnNfdXBjYWxscysrOworCVZfbXJ0NnN0YXQubXJ0NnNfdXBjYWxscysrOwogCiAJ aWYgKHNvY2tldF9zZW5kKGlwNl9tcm91dGVyLCBtbSwgJnNpbjYpIDwgMCkgewogI2lmZGVmIE1S VDZERUJVRwpAQCAtMTcwMSw3ICsxNzM1LDcgQEAKIAkJCWxvZyhMT0dfV0FSTklORywKIAkJCSAg ICAicmVnaXN0ZXJfc2VuZDogaXA2X21yb3V0ZXIgc29ja2V0IHF1ZXVlIGZ1bGxcbiIpOwogI2Vu ZGlmCi0JCSsrbXJ0NnN0YXQubXJ0NnNfdXBxX3NvY2tmdWxsOworCQkrK1ZfbXJ0NnN0YXQubXJ0 NnNfdXBxX3NvY2tmdWxsOwogCQlyZXR1cm4gKEVOT0JVRlMpOwogCX0KIAlyZXR1cm4gKDApOwpA QCAtMTcyNSw3ICsxNzU5LDcgQEAKIAlpbnQgbWlubGVuOwogCWludCBvZmYgPSAqb2ZmcDsKIAot CSsrcGltNnN0YXQucGltNnNfcmN2X3RvdGFsOworCSsrVl9waW02c3RhdC5waW02c19yY3ZfdG90 YWw7CiAKIAlpcDYgPSBtdG9kKG0sIHN0cnVjdCBpcDZfaGRyICopOwogCXBpbWxlbiA9IG0tPm1f cGt0aGRyLmxlbiAtICpvZmZwOwpAQCAtMTczNCw3ICsxNzY4LDcgQEAKIAkgKiBWYWxpZGF0ZSBs ZW5ndGhzCiAJICovCiAJaWYgKHBpbWxlbiA8IFBJTV9NSU5MRU4pIHsKLQkJKytwaW02c3RhdC5w aW02c19yY3ZfdG9vc2hvcnQ7CisJCSsrVl9waW02c3RhdC5waW02c19yY3ZfdG9vc2hvcnQ7CiAj aWZkZWYgTVJUNkRFQlVHCiAJCWlmIChWX21ydDZkZWJ1ZyAmIERFQlVHX1BJTSkKIAkJCWxvZyhM T0dfREVCVUcsInBpbTZfaW5wdXQ6IFBJTSBwYWNrZXQgdG9vIHNob3J0XG4iKTsKQEAgLTE3Njcs NyArMTgwMSw3IEBACiAjZWxzZQogCUlQNl9FWFRIRFJfR0VUKHBpbSwgc3RydWN0IHBpbSAqLCBt LCBvZmYsIG1pbmxlbik7CiAJaWYgKHBpbSA9PSBOVUxMKSB7Ci0JCXBpbTZzdGF0LnBpbTZzX3Jj dl90b29zaG9ydCsrOworCQlWX3BpbTZzdGF0LnBpbTZzX3Jjdl90b29zaG9ydCsrOwogCQlyZXR1 cm4gKElQUFJPVE9fRE9ORSk7CiAJfQogI2VuZGlmCkBAIC0xNzg3LDcgKzE4MjEsNyBAQAogCQkJ Y2tzdW1sZW4gPSBwaW1sZW47CiAKIAkJaWYgKGluNl9ja3N1bShtLCBJUFBST1RPX1BJTSwgb2Zm LCBja3N1bWxlbikpIHsKLQkJCSsrcGltNnN0YXQucGltNnNfcmN2X2JhZHN1bTsKKwkJCSsrVl9w aW02c3RhdC5waW02c19yY3ZfYmFkc3VtOwogI2lmZGVmIE1SVDZERUJVRwogCQkJaWYgKFZfbXJ0 NmRlYnVnICYgREVCVUdfUElNKQogCQkJCWxvZyhMT0dfREVCVUcsCkBAIC0xODAxLDcgKzE4MzUs NyBAQAogCiAJLyogUElNIHZlcnNpb24gY2hlY2sgKi8KIAlpZiAocGltLT5waW1fdmVyICE9IFBJ TV9WRVJTSU9OKSB7Ci0JCSsrcGltNnN0YXQucGltNnNfcmN2X2JhZHZlcnNpb247CisJCSsrVl9w aW02c3RhdC5waW02c19yY3ZfYmFkdmVyc2lvbjsKICNpZmRlZiBNUlQ2REVCVUcKIAkJbG9nKExP R19FUlIsCiAJCSAgICAicGltNl9pbnB1dDogaW5jb3JyZWN0IHZlcnNpb24gJWQsIGV4cGVjdGlu ZyAlZFxuIiwKQEAgLTE4MjcsMTQgKzE4NjEsMTQgQEAKIAkJY2hhciBpcDZidWZzW0lORVQ2X0FE RFJTVFJMRU5dLCBpcDZidWZkW0lORVQ2X0FERFJTVFJMRU5dOwogI2VuZGlmCiAKLQkJKytwaW02 c3RhdC5waW02c19yY3ZfcmVnaXN0ZXJzOworCQkrK1ZfcGltNnN0YXQucGltNnNfcmN2X3JlZ2lz dGVyczsKIAotCQlpZiAoKHJlZ19taWZfbnVtID49IG51bW1pZnMpIHx8IChyZWdfbWlmX251bSA9 PSAobWlmaV90KSAtMSkpIHsKKwkJaWYgKChWX3JlZ19taWZfbnVtID49IFZfbnVtbWlmcykgfHwg KFZfcmVnX21pZl9udW0gPT0gKG1pZmlfdCkgLTEpKSB7CiAjaWZkZWYgTVJUNkRFQlVHCiAJCQlp ZiAoVl9tcnQ2ZGVidWcgJiBERUJVR19QSU0pCiAJCQkJbG9nKExPR19ERUJVRywKIAkJCQkgICAg InBpbTZfaW5wdXQ6IHJlZ2lzdGVyIG1pZiBub3Qgc2V0OiAlZFxuIiwKLQkJCQkgICAgcmVnX21p Zl9udW0pOworCQkJCSAgICBWX3JlZ19taWZfbnVtKTsKICNlbmRpZgogCQkJbV9mcmVlbShtKTsK IAkJCXJldHVybiAoSVBQUk9UT19ET05FKTsKQEAgLTE4NDksOCArMTg4Myw4IEBACiAJCSAqIFZh bGlkYXRlIGxlbmd0aAogCQkgKi8KIAkJaWYgKHBpbWxlbiA8IFBJTTZfUkVHX01JTkxFTikgewot CQkJKytwaW02c3RhdC5waW02c19yY3ZfdG9vc2hvcnQ7Ci0JCQkrK3BpbTZzdGF0LnBpbTZzX3Jj dl9iYWRyZWdpc3RlcnM7CisJCQkrK1ZfcGltNnN0YXQucGltNnNfcmN2X3Rvb3Nob3J0OworCQkJ KytWX3BpbTZzdGF0LnBpbTZzX3Jjdl9iYWRyZWdpc3RlcnM7CiAjaWZkZWYgTVJUNkRFQlVHCiAJ CQlsb2coTE9HX0VSUiwKIAkJCSAgICAicGltNl9pbnB1dDogcmVnaXN0ZXIgcGFja2V0IHNpemUg dG9vICIKQEAgLTE4NzQsNyArMTkwOCw3IEBACiAKIAkJLyogdmVyaWZ5IHRoZSB2ZXJzaW9uIG51 bWJlciBvZiB0aGUgaW5uZXIgcGFja2V0ICovCiAJCWlmICgoZWlwNi0+aXA2X3ZmYyAmIElQVjZf VkVSU0lPTl9NQVNLKSAhPSBJUFY2X1ZFUlNJT04pIHsKLQkJCSsrcGltNnN0YXQucGltNnNfcmN2 X2JhZHJlZ2lzdGVyczsKKwkJCSsrVl9waW02c3RhdC5waW02c19yY3ZfYmFkcmVnaXN0ZXJzOwog I2lmZGVmIE1SVDZERUJVRwogCQkJbG9nKExPR19ERUJVRywgInBpbTZfaW5wdXQ6IGludmFsaWQg SVAgdmVyc2lvbiAoJWQpICIKIAkJCSAgICAib2YgdGhlIGlubmVyIHBhY2tldFxuIiwKQEAgLTE4 ODYsNyArMTkyMCw3IEBACiAKIAkJLyogdmVyaWZ5IHRoZSBpbm5lciBwYWNrZXQgaXMgZGVzdGlu ZWQgdG8gYSBtY2FzdCBncm91cCAqLwogCQlpZiAoIUlONl9JU19BRERSX01VTFRJQ0FTVCgmZWlw Ni0+aXA2X2RzdCkpIHsKLQkJCSsrcGltNnN0YXQucGltNnNfcmN2X2JhZHJlZ2lzdGVyczsKKwkJ CSsrVl9waW02c3RhdC5waW02c19yY3ZfYmFkcmVnaXN0ZXJzOwogI2lmZGVmIE1SVDZERUJVRwog CQkJaWYgKFZfbXJ0NmRlYnVnICYgREVCVUdfUElNKQogCQkJCWxvZyhMT0dfREVCVUcsCkBAIC0x OTIzLDExICsxOTU3LDExIEBACiAJCQkgICAgInNyYyAlcywgZHN0ICVzLCBtaWYgJWRcbiIsCiAJ CQkgICAgaXA2X3NwcmludGYoaXA2YnVmcywgJmVpcDYtPmlwNl9zcmMpLAogCQkJICAgIGlwNl9z cHJpbnRmKGlwNmJ1ZmQsICZlaXA2LT5pcDZfZHN0KSwKLQkJCSAgICByZWdfbWlmX251bSk7CisJ CQkgICAgVl9yZWdfbWlmX251bSk7CiAJCX0KICNlbmRpZgogCi0JCXJjID0gaWZfc2ltbG9vcCht aWY2dGFibGVbcmVnX21pZl9udW1dLm02X2lmcCwgbSwKKwkJcmMgPSBpZl9zaW1sb29wKFZfbWlm NnRhYmxlW1ZfcmVnX21pZl9udW1dLm02X2lmcCwgbSwKIAkJCQlkc3Quc2luNl9mYW1pbHksIDAp OwogCiAJCS8qIHByZXBhcmUgdGhlIHJlZ2lzdGVyIGhlYWQgdG8gc2VuZCB0byB0aGUgbXJvdXRp bmcgZGFlbW9uICovCmRpZmYgLXVyIG5ldGluZXQ2L2lwNl9tcm91dGUuaC5vcmlnIG5ldGluZXQ2 L2lwNl9tcm91dGUuaAotLS0gbmV0aW5ldDYvaXA2X21yb3V0ZS5oLm9yaWcJMjAwNy0xMS0xOSAw Njo0OToxNS4wMDAwMDAwMDAgLTA4MDAKKysrIG5ldGluZXQ2L2lwNl9tcm91dGUuaAkyMDA4LTA3 LTI5IDEzOjM5OjQzLjAwMDAwMDAwMCAtMDcwMApAQCAtNDAsNiArNDAsNyBAQAogICogTW9kaWZp ZWQgYnkgQWppdCBUaHlhZ2FyYWphbiwgUEFSQywgQXVndXN0IDE5OTMuCiAgKiBNb2RpZmllZCBi eSBBaml0IFRoeWFnYXJhamFuLCBQQVJDLCBBdWd1c3QgMTk5NC4KICAqIE1vZGlmaWVkIGJ5IEFo bWVkIEhlbG15LCBVU0MsIFNlcHRlbWJlciAxOTk2LgorICogTW9kaWZpZWQgYnkgSmVmZiBBaHJl bmhvbHosIEJvZWluZywgSnVseSAyMDA4LiAodmlydHVhbGl6YXRpb24gc3VwcG9ydCkKICAqCiAg KiBNUk9VVElORyBSZXZpc2lvbjogMS4yCiAgKi8KQEAgLTI2Niw2ICsyNjcsNyBAQAogZXh0ZXJu IGludAkoKmlwNl9tcm91dGVyX2dldCkoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBzb2Nrb3B0 ICpzb3B0KTsKIGV4dGVybiBpbnQJKCppcDZfbXJvdXRlcl9kb25lKSh2b2lkKTsKIGV4dGVybiBp bnQJKCptcnQ2X2lvY3RsKShpbnQsIGNhZGRyX3QpOworCiAjZW5kaWYgLyogX0tFUk5FTCAqLwog CiAjZW5kaWYgLyogIV9ORVRJTkVUNl9JUDZfTVJPVVRFX0hfICovCmRpZmYgLXVyIG5ldGluZXQ2 L3ZpbmV0Ni5oLm9yaWcgbmV0aW5ldDYvdmluZXQ2LmgKLS0tIG5ldGluZXQ2L3ZpbmV0Ni5oLm9y aWcJMjAwOC0wNy0yMiAxMjozOTo0MS4wMDAwMDAwMDAgLTA3MDAKKysrIG5ldGluZXQ2L3ZpbmV0 Ni5oCTIwMDgtMDctMjkgMTI6MDI6NTMuMDAwMDAwMDAwIC0wNzAwCkBAIC00Myw2ICs0Myw4IEBA CiAjaW5jbHVkZSA8bmV0aW5ldDYvc2NvcGU2X3Zhci5oPgogI2luY2x1ZGUgPG5ldGluZXQ2L2lu Nl9pZmF0dGFjaC5oPgogI2luY2x1ZGUgPG5ldGluZXQ2L25kNi5oPgorI2luY2x1ZGUgPG5ldGlu ZXQ2L2lwNl9tcm91dGUuaD4KKyNpbmNsdWRlIDxuZXRpbmV0Ni9waW02X3Zhci5oPiAvKiBzdHJ1 Y3QgcGltNnN0YXQgKi8KIAogI2RlZmluZSBJTklUX1ZORVRfSU5FVDYodm5ldCkgXAogCUlOSVRf RlJPTV9WTkVUKHZuZXQsIFZORVRfTU9EX0lORVQ2LCBcCkBAIC0xNDgsMTQgKzE1MCwyNCBAQAog CXVfaW50MzJfdAkJCV9pcDZfdGVtcF9wcmVmZXJyZWRfbGlmZXRpbWU7CiAJdV9pbnQzMl90CQkJ X2lwNl90ZW1wX3ZhbGlkX2xpZmV0aW1lOwogCi0JaW50CQkJCV9pcDZfbXJvdXRlcl92ZXI7Ci0J aW50CQkJCV9waW02OwotCXVfaW50CQkJCV9tcnQ2ZGVidWc7Ci0KIAlpbnQJCQkJX2lwNl90ZW1w X3JlZ2VuX2FkdmFuY2U7CiAJaW50CQkJCV9pcDZfdXNlX2RlZnpvbmU7CiAKIAlzdHJ1Y3QgaXA2 X3BrdG9wdHMJCV9pcDZfb3B0czsKKworCS8qIGZyb20gaXA2X21yb3V0ZS5jICovCisJaW50CQkJ CV9pcDZfbXJvdXRlcl92ZXI7IC8qID0gMDsgKi8KKwlzdHJ1Y3QgbXJ0NnN0YXQJCQlfbXJ0NnN0 YXQ7CisJc3RydWN0IG1mNmMgKgkJCV9tZjZjdGFibGVbTUY2Q1RCTFNJWl07CisJdV9jaGFyCQkJ CV9uNmV4cGlyZVtNRjZDVEJMU0laXTsKKwlzdHJ1Y3QgbWlmNiAJCQlfbWlmNnRhYmxlW01BWE1J RlNdOworCXVfaW50CQkJCV9tcnQ2ZGVidWc7CisJc3RydWN0IGlmbmV0ICoJCQlfbXVsdGljYXN0 X3JlZ2lzdGVyX2lmNjsKKwltaWZpX3QgCQkJCV9udW1taWZzOyAvKiA9IDA7ICovCisJbWlmaV90 IAkJCQlfcmVnX21pZl9udW07IC8qID0gKG1pZmlfdCktMTsgKi8KKwlzdHJ1Y3QgcGltNnN0YXQJ CQlfcGltNnN0YXQ7CisJaW50IAkJCQlfcGltNjsKKwl1X2xvbmcJCQkJX3VwY2FsbF9kYXRhWzUx XTsKIH07CiAjZW5kaWYKIApAQCAtMjU4LDEzICsyNzAsMjMgQEAKICNkZWZpbmUgVl9pcDZfdGVt cF9wcmVmZXJyZWRfbGlmZXRpbWUJVk5FVF9JTkVUNihpcDZfdGVtcF9wcmVmZXJyZWRfbGlmZXRp bWUpCiAjZGVmaW5lIFZfaXA2X3RlbXBfdmFsaWRfbGlmZXRpbWUJVk5FVF9JTkVUNihpcDZfdGVt cF92YWxpZF9saWZldGltZSkKIAotI2RlZmluZSBWX2lwNl9tcm91dGVyX3ZlcgkJVk5FVF9JTkVU NihpcDZfbXJvdXRlcl92ZXIpCi0jZGVmaW5lIFZfcGltNgkJCQlWTkVUX0lORVQ2KHBpbTYpCi0j ZGVmaW5lIFZfbXJ0NmRlYnVnCQkJVk5FVF9JTkVUNihtcnQ2ZGVidWcpCiAjZGVmaW5lIFZfaXA2 X3RlbXBfcmVnZW5fYWR2YW5jZQlWTkVUX0lORVQ2KGlwNl90ZW1wX3JlZ2VuX2FkdmFuY2UpCiAK ICNkZWZpbmUgVl9pcDZfdXNlX2RlZnpvbmUJCVZORVRfSU5FVDYoaXA2X3VzZV9kZWZ6b25lKQog CiAjZGVmaW5lIFZfaXA2X29wdHMJCQlWTkVUX0lORVQ2KGlwNl9vcHRzKQogCisjZGVmaW5lIFZf aXA2X21yb3V0ZXJfdmVyCQlWTkVUX0lORVQ2KGlwNl9tcm91dGVyX3ZlcikKKyNkZWZpbmUgVl9t cnQ2c3RhdAkJCVZORVRfSU5FVDYobXJ0NnN0YXQpCisjZGVmaW5lIFZfbWY2Y3RhYmxlCQkJVk5F VF9JTkVUNihtZjZjdGFibGUpCisjZGVmaW5lIFZfbjZleHBpcmUJCQlWTkVUX0lORVQ2KG42ZXhw aXJlKQorI2RlZmluZSBWX21pZjZ0YWJsZQkJCVZORVRfSU5FVDYobWlmNnRhYmxlKQorI2RlZmlu ZSBWX21ydDZkZWJ1ZwkJCVZORVRfSU5FVDYobXJ0NmRlYnVnKQorI2RlZmluZSBWX211bHRpY2Fz dF9yZWdpc3Rlcl9pZjYJVk5FVF9JTkVUNihtdWx0aWNhc3RfcmVnaXN0ZXJfaWY2KQorI2RlZmlu ZSBWX251bW1pZnMJCQlWTkVUX0lORVQ2KG51bW1pZnMpCisjZGVmaW5lIFZfcmVnX21pZl9udW0J CQlWTkVUX0lORVQ2KHJlZ19taWZfbnVtKQorI2RlZmluZSBWX3BpbTZzdGF0CQkJVk5FVF9JTkVU NihwaW02c3RhdCkKKyNkZWZpbmUgVl9waW02CQkJCVZORVRfSU5FVDYocGltNikKKyNkZWZpbmUg Vl91cGNhbGxfZGF0YQkJCVZORVRfSU5FVDYodXBjYWxsX2RhdGEpCisKICNlbmRpZiAvKiAhX05F VElORVQ2X1ZJTkVUNl9IXyAqLwpkaWZmIC11ciBuZXRpbmV0L2lwX2lucHV0LmMub3JpZyBuZXRp bmV0L2lwX2lucHV0LmMKZGlmZiAtdXIgbmV0aW5ldC9pcF9tcm91dGUuYy5vcmlnIG5ldGluZXQv aXBfbXJvdXRlLmMKLS0tIG5ldGluZXQvaXBfbXJvdXRlLmMub3JpZwkyMDA4LTA3LTIxIDE1OjIy OjI1LjAwMDAwMDAwMCAtMDcwMAorKysgbmV0aW5ldC9pcF9tcm91dGUuYwkyMDA4LTA3LTI5IDE0 OjUyOjU2LjAwMDAwMDAwMCAtMDcwMApAQCAtNDcsNiArNDcsNyBAQAogICogTW9kaWZpZWQgYnkg UGF2bGluIFJhZG9zbGF2b3YsIFVTQy9JU0ksIE1heSAxOTk4LCBBdWd1c3QgMTk5OSwgT2N0b2Jl ciAyMDAwCiAgKiBNb2RpZmllZCBieSBIaXRvc2hpIEFzYWVkYSwgV0lERSwgQXVndXN0IDIwMDAK ICAqIE1vZGlmaWVkIGJ5IFBhdmxpbiBSYWRvc2xhdm92LCBJQ1NJLCBPY3RvYmVyIDIwMDIKKyAq IE1vZGlmaWVkIGJ5IEplZmYgQWhyZW5ob2x6LCBCb2VpbmcsIEp1bHkgMjAwOC4gKHZpcnR1YWxp emF0aW9uIHN1cHBvcnQpCiAgKgogICogTVJPVVRJTkcgUmV2aXNpb246IDMuNQogICogYW5kIFBJ TS1TTXYyIGFuZCBQSU0tRE0gc3VwcG9ydCwgYWR2YW5jZWQgQVBJIHN1cHBvcnQsCkBAIC0xMTIs MTYgKzExMywyMCBAQAogICogQ29udHJvbCBkZWJ1Z2dpbmcgY29kZSBmb3IgcnN2cCBhbmQgbXVs dGljYXN0IHJvdXRpbmcgY29kZS4KICAqIENhbiBvbmx5IHNldCB0aGVtIHdpdGggdGhlIGRlYnVn Z2VyLgogICovCisjaWZuZGVmIFZJTUFHRQogc3RhdGljIHVfaW50ICAgIHJzdnBkZWJ1ZzsJCS8q IG5vbi16ZXJvIGVuYWJsZXMgZGVidWdnaW5nCSovCiAKIHN0YXRpYyB1X2ludAltcnRkZWJ1ZzsJ CS8qIGFueSBzZXQgb2YgdGhlIGZsYWdzIGJlbG93CSovCisjZW5kaWYgLyogIVZJTUFHRSAqLwog I2RlZmluZQkJREVCVUdfTUZDCTB4MDIKICNkZWZpbmUJCURFQlVHX0ZPUldBUkQJMHgwNAogI2Rl ZmluZQkJREVCVUdfRVhQSVJFCTB4MDgKICNkZWZpbmUJCURFQlVHX1hNSVQJMHgxMAogI2RlZmlu ZQkJREVCVUdfUElNCTB4MjAKIAorI2lmbmRlZiBWSU1BR0UKICNkZWZpbmUJCVZJRklfSU5WQUxJ RAkoKHZpZmlfdCkgLTEpCisjZW5kaWYgLyogIVZJTUFHRSAqLwogCiAjZGVmaW5lIE1fSEFTQ0wo bSkJKChtKS0+bV9mbGFncyAmIE1fRVhUKQogCkBAIC0xNDAsMTUgKzE0NSwxOSBAQAogICoKICAq LwogCisjaWZuZGVmIFZJTUFHRQogc3RhdGljIHN0cnVjdCBtcnRzdGF0CW1ydHN0YXQ7Ci1TWVND VExfU1RSVUNUKF9uZXRfaW5ldF9pcCwgT0lEX0FVVE8sIG1ydHN0YXQsIENUTEZMQUdfUlcsCi0g ICAgJm1ydHN0YXQsIG1ydHN0YXQsCisjZW5kaWYgLyogIVZJTUFHRSAqLworU1lTQ1RMX1ZfU1RS VUNUKFZfTkVULCB2bmV0X2luZXQsIF9uZXRfaW5ldF9pcCwgT0lEX0FVVE8sIG1ydHN0YXQsCisg ICAgQ1RMRkxBR19SVywgbXJ0c3RhdCwgbXJ0c3RhdCwKICAgICAiTXVsdGljYXN0IFJvdXRpbmcg U3RhdGlzdGljcyAoc3RydWN0IG1ydHN0YXQsIG5ldGluZXQvaXBfbXJvdXRlLmgpIik7Ci0KKyNp Zm5kZWYgVklNQUdFCiBzdGF0aWMgc3RydWN0IG1mYwkqbWZjdGFibGVbTUZDVEJMU0laXTsKLVNZ U0NUTF9PUEFRVUUoX25ldF9pbmV0X2lwLCBPSURfQVVUTywgbWZjdGFibGUsIENUTEZMQUdfUkQs Ci0gICAgJm1mY3RhYmxlLCBzaXplb2YobWZjdGFibGUpLCAiUywqbWZjW01GQ1RCTFNJWl0iLAor U1lTQ1RMX1ZfT0lEKFZfTkVULCB2bmV0X2luZXQsIF9uZXRfaW5ldF9pcCwgQ1RMVFlQRV9PUEFR VUV8T0lEX0FVVE8sCisgICAgbWZjdGFibGUsIENUTEZMQUdfUkQsIG1mY3RhYmxlLCBzaXplb2Yo bWZjdGFibGUpLCBzeXNjdGxfaGFuZGxlX29wYXF1ZSwKKyAgICAiUywqbWZjW01GQ1RCTFNJWl0i LAogICAgICJNdWx0aWNhc3QgRm9yd2FyZGluZyBUYWJsZSAoc3RydWN0ICptZmNbTUZDVEJMU0la XSwgbmV0aW5ldC9pcF9tcm91dGUuaCkiKTsKKyNlbmRpZiAvKiAhVklNQUdFICovCiAKIHN0YXRp YyBzdHJ1Y3QgbXR4IG1yb3V0ZXJfbXR4OwogI2RlZmluZQlNUk9VVEVSX0xPQ0soKQkJbXR4X2xv Y2soJm1yb3V0ZXJfbXR4KQpAQCAtMTY1LDEwICsxNzQsMTMgQEAKICNkZWZpbmUJTUZDX0xPQ0tf SU5JVCgpCW10eF9pbml0KCZtZmNfbXR4LCAibXJvdXRlIG1mYyB0YWJsZSIsIE5VTEwsIE1UWF9E RUYpCiAjZGVmaW5lCU1GQ19MT0NLX0RFU1RST1koKQltdHhfZGVzdHJveSgmbWZjX210eCkKIAor I2lmbmRlZiBWSU1BR0UKIHN0YXRpYyBzdHJ1Y3QgdmlmCXZpZnRhYmxlW01BWFZJRlNdOwotU1lT Q1RMX09QQVFVRShfbmV0X2luZXRfaXAsIE9JRF9BVVRPLCB2aWZ0YWJsZSwgQ1RMRkxBR19SRCwK LSAgICAmdmlmdGFibGUsIHNpemVvZih2aWZ0YWJsZSksICJTLHZpZltNQVhWSUZTXSIsCitTWVND VExfVl9PSUQoVl9ORVQsIHZuZXRfaW5ldCwgX25ldF9pbmV0X2lwLCBDVExUWVBFX09QQVFVRXxP SURfQVVUTywgdmlmdGFibGUsCisgICAgQ1RMRkxBR19SRCwgdmlmdGFibGUsIHNpemVvZih2aWZ0 YWJsZSksIHN5c2N0bF9oYW5kbGVfb3BhcXVlLCAKKyAgICAiUyx2aWZbTUFYVklGU10iLAogICAg ICJNdWx0aWNhc3QgVmlydHVhbCBJbnRlcmZhY2VzIChzdHJ1Y3QgdmlmW01BWFZJRlNdLCBuZXRp bmV0L2lwX21yb3V0ZS5oKSIpOworI2VuZGlmIC8qICFWSU1BR0UgKi8KIAogc3RhdGljIHN0cnVj dCBtdHggdmlmX210eDsKICNkZWZpbmUJVklGX0xPQ0soKQltdHhfbG9jaygmdmlmX210eCkKQEAg LTE3Nyw5ICsxODksMTEgQEAKICNkZWZpbmUJVklGX0xPQ0tfSU5JVCgpCW10eF9pbml0KCZ2aWZf bXR4LCAibXJvdXRlIHZpZiB0YWJsZSIsIE5VTEwsIE1UWF9ERUYpCiAjZGVmaW5lCVZJRl9MT0NL X0RFU1RST1koKQltdHhfZGVzdHJveSgmdmlmX210eCkKIAorI2lmbmRlZiBWSU1BR0UKIHN0YXRp YyB1X2NoYXIJCW5leHBpcmVbTUZDVEJMU0laXTsKIAogc3RhdGljIGV2ZW50aGFuZGxlcl90YWcg aWZfZGV0YWNoX2V2ZW50X3RhZyA9IE5VTEw7CisjZW5kaWYgLyogIVZJTUFHRSAqLwogCiBzdGF0 aWMgc3RydWN0IGNhbGxvdXQgZXhwaXJlX3VwY2FsbHNfY2g7CiAKQEAgLTE5Niw4ICsyMTAsMTAg QEAKICAqIFBlbmRpbmcgdGltZW91dHMgYXJlIHN0b3JlZCBpbiBhIGhhc2ggdGFibGUsIHRoZSBr ZXkgYmVpbmcgdGhlCiAgKiBleHBpcmF0aW9uIHRpbWUuIFBlcmlvZGljYWxseSwgdGhlIGVudHJp ZXMgYXJlIGFuYWx5c2VkIGFuZCBwcm9jZXNzZWQuCiAgKi8KKyNpZm5kZWYgVklNQUdFCiAjZGVm aW5lIEJXX01FVEVSX0JVQ0tFVFMJMTAyNAogc3RhdGljIHN0cnVjdCBid19tZXRlciAqYndfbWV0 ZXJfdGltZXJzW0JXX01FVEVSX0JVQ0tFVFNdOworI2VuZGlmIC8qICFWSU1BR0UgKi8KIHN0YXRp YyBzdHJ1Y3QgY2FsbG91dCBid19tZXRlcl9jaDsKICNkZWZpbmUgQldfTUVURVJfUEVSSU9EICho eikJCS8qIHBlcmlvZGljYWwgaGFuZGxpbmcgb2YgYncgbWV0ZXJzICovCiAKQEAgLTIwNSwxNiAr MjIxLDIwIEBACiAgKiBQZW5kaW5nIHVwY2FsbHMgYXJlIHN0b3JlZCBpbiBhIHZlY3RvciB3aGlj aCBpcyBmbHVzaGVkIHdoZW4KICAqIGZ1bGwsIG9yIHBlcmlvZGljYWxseQogICovCisjaWZuZGVm IFZJTUFHRQogc3RhdGljIHN0cnVjdCBid191cGNhbGwJYndfdXBjYWxsc1tCV19VUENBTExTX01B WF07CiBzdGF0aWMgdV9pbnQJYndfdXBjYWxsc19uOyAvKiAjIG9mIHBlbmRpbmcgdXBjYWxscyAq LworI2VuZGlmIC8qICFWSU1BR0UgKi8KIHN0YXRpYyBzdHJ1Y3QgY2FsbG91dCBid191cGNhbGxz X2NoOwogI2RlZmluZSBCV19VUENBTExTX1BFUklPRCAoaHopCQkvKiBwZXJpb2RpY2FsIGZsdXNo IG9mIGJ3IHVwY2FsbHMgKi8KIAorI2lmbmRlZiBWSU1BR0UKIHN0YXRpYyBzdHJ1Y3QgcGltc3Rh dCBwaW1zdGF0OworI2VuZGlmIC8qICFWSU1BR0UgKi8KIAogU1lTQ1RMX05PREUoX25ldF9pbmV0 LCBJUFBST1RPX1BJTSwgcGltLCBDVExGTEFHX1JXLCAwLCAiUElNIik7Ci1TWVNDVExfU1RSVUNU KF9uZXRfaW5ldF9waW0sIFBJTUNUTF9TVEFUUywgc3RhdHMsIENUTEZMQUdfUkQsCi0gICAgJnBp bXN0YXQsIHBpbXN0YXQsCitTWVNDVExfVl9TVFJVQ1QoVl9ORVQsIHZuZXRfaW5ldCwgX25ldF9p bmV0X3BpbSwgUElNQ1RMX1NUQVRTLCBzdGF0cywKKyAgICBDVExGTEFHX1JELCBwaW1zdGF0LCBw aW1zdGF0LAogICAgICJQSU0gU3RhdGlzdGljcyAoc3RydWN0IHBpbXN0YXQsIG5ldGluZXQvcGlt X3Zhci5oKSIpOwogCiBzdGF0aWMgdV9sb25nCXBpbV9zcXVlbGNoX3dob2xlcGt0ID0gMDsKQEAg LTIyMiw2ICsyNDIsMTEgQEAKICAgICAmcGltX3NxdWVsY2hfd2hvbGVwa3QsIDAsCiAgICAgIkRp c2FibGUgSUdNUF9XSE9MRVBLVCBub3RpZmljYXRpb25zIGlmIHJlbmRlenZvdXMgcG9pbnQgaXMg dW5zcGVjaWZpZWQiKTsKIAorI2lmZGVmIFZJTUFHRQorc3RhdGljIHZvaWQgaXBfbXJvdXRlcl9y ZXNldCh2b2lkKTsKK3N0YXRpYyB2b2lkIGlwX21yb3V0ZXJfZGVzdHJveSh2b2lkKTsKKyNlbmRp ZiAvKiBWSU1BR0UgKi8KKwogZXh0ZXJuICBzdHJ1Y3QgZG9tYWluIGluZXRkb21haW47CiBzdHJ1 Y3QgcHJvdG9zdyBpbl9waW1fcHJvdG9zdyA9IHsKIAkucHJfdHlwZSA9CQlTT0NLX1JBVywKQEAg LTIzMSw2ICsyNTYsMTAgQEAKIAkucHJfaW5wdXQgPQkJcGltX2lucHV0LAogCS5wcl9vdXRwdXQg PQkJKHByX291dHB1dF90KilyaXBfb3V0cHV0LAogCS5wcl9jdGxvdXRwdXQgPQkJcmlwX2N0bG91 dHB1dCwKKyNpZmRlZiBWSU1BR0UKKwkucHJfaW5pdCA9CQlpcF9tcm91dGVyX3Jlc2V0LAorCS5w cl9kZXN0cm95ID0JCWlwX21yb3V0ZXJfZGVzdHJveSwKKyNlbmRpZiAvKiBWSU1BR0UgKi8KIAku cHJfdXNycmVxcyA9CQkmcmlwX3VzcnJlcXMKIH07CiBzdGF0aWMgY29uc3Qgc3RydWN0IGVuY2Fw dGFiICpwaW1fZW5jYXBfY29va2llOwpAQCAtMjkxLDEzICszMjAsMTcgQEAKICAgICAwCQkJCS8q IGZsYWdzICovCiB9OwogCisjaWZuZGVmIFZJTUFHRQogc3RhdGljIHN0cnVjdCBpZm5ldCBtdWx0 aWNhc3RfcmVnaXN0ZXJfaWY7CiBzdGF0aWMgdmlmaV90IHJlZ192aWZfbnVtID0gVklGSV9JTlZB TElEOworI2VuZGlmIC8qICFWSU1BR0UgKi8KIAogLyoKICAqIFByaXZhdGUgdmFyaWFibGVzLgog ICovCisjaWZuZGVmIFZJTUFHRQogc3RhdGljIHZpZmlfdAkgICBudW12aWZzOworI2VuZGlmIC8q ICFWSU1BR0UgKi8KIAogc3RhdGljIHVfbG9uZwlYX2lwX21jYXN0X3NyYyhpbnQgdmlmaSk7CiBz dGF0aWMgaW50CVhfaXBfbWZvcndhcmQoc3RydWN0IGlwICppcCwgc3RydWN0IGlmbmV0ICppZnAs CkBAIC0zNTIsNyArMzg1LDkgQEAKIC8qCiAgKiB3aGV0aGVyIG9yIG5vdCBzcGVjaWFsIFBJTSBh c3NlcnQgcHJvY2Vzc2luZyBpcyBlbmFibGVkLgogICovCisjaWZuZGVmIFZJTUFHRQogc3RhdGlj IGludCBwaW1fYXNzZXJ0OworI2VuZGlmIC8qICFWSU1BR0UgKi8KIC8qCiAgKiBSYXRlIGxpbWl0 IGZvciBhc3NlcnQgbm90aWZpY2F0aW9uIG1lc3NhZ2VzLCBpbiB1c2VjCiAgKi8KQEAgLTM2Nyw3 ICs0MDIsOSBAQAogCQkJCQkgTVJUX01GQ19GTEFHU19CT1JERVJfVklGIHwKIAkJCQkJIE1SVF9N RkNfUlAgfAogCQkJCQkgTVJUX01GQ19CV19VUENBTEwpOworI2lmbmRlZiBWSU1BR0UKIHN0YXRp YyB1aW50MzJfdCBtcnRfYXBpX2NvbmZpZyA9IDA7CisjZW5kaWYgLyogIVZJTUFHRSAqLwogCiAv KgogICogSGFzaCBmdW5jdGlvbiBmb3IgYSBzb3VyY2UsIGdyb3VwIGVudHJ5CkBAIC0zODMsMTEg KzQyMCwxMiBAQAogc3RhdGljIHN0cnVjdCBtZmMgKgogbWZjX2ZpbmQoaW5fYWRkcl90IG8sIGlu X2FkZHJfdCBnKQogeworICAgIElOSVRfVk5FVF9JTkVUKGN1cnZuZXQpOwogICAgIHN0cnVjdCBt ZmMgKnJ0OwogCiAgICAgTUZDX0xPQ0tfQVNTRVJUKCk7CiAKLSAgICBmb3IgKHJ0ID0gbWZjdGFi bGVbTUZDSEFTSChvLGcpXTsgcnQ7IHJ0ID0gcnQtPm1mY19uZXh0KQorICAgIGZvciAocnQgPSBW X21mY3RhYmxlW01GQ0hBU0gobyxnKV07IHJ0OyBydCA9IHJ0LT5tZmNfbmV4dCkKIAlpZiAoKHJ0 LT5tZmNfb3JpZ2luLnNfYWRkciA9PSBvKSAmJgogCQkocnQtPm1mY19tY2FzdGdycC5zX2FkZHIg PT0gZykgJiYgKHJ0LT5tZmNfc3RhbGwgPT0gTlVMTCkpCiAJICAgIGJyZWFrOwpAQCAtNDI0LDcg KzQ2Miw3IEBACiBzdGF0aWMgaW50CiBYX2lwX21yb3V0ZXJfc2V0KHN0cnVjdCBzb2NrZXQgKnNv LCBzdHJ1Y3Qgc29ja29wdCAqc29wdCkKIHsKLSAgICBJTklUX1ZORVRfSU5FVChjdXJ2bmV0KTsK KyAgICBJTklUX1ZORVRfSU5FVChzby0+c29fdm5ldCk7CiAgICAgaW50CWVycm9yLCBvcHR2YWw7 CiAgICAgdmlmaV90CXZpZmk7CiAgICAgc3RydWN0CXZpZmN0bCB2aWZjOwpAQCAtNDY4LDcgKzUw Niw3IEBACiAJICogc2VsZWN0IGRhdGEgc2l6ZSBkZXBlbmRpbmcgb24gQVBJIHZlcnNpb24uCiAJ ICovCiAJaWYgKHNvcHQtPnNvcHRfbmFtZSA9PSBNUlRfQUREX01GQyAmJgotCQltcnRfYXBpX2Nv bmZpZyAmIE1SVF9BUElfRkxBR1NfQUxMKSB7CisJCVZfbXJ0X2FwaV9jb25maWcgJiBNUlRfQVBJ X0ZMQUdTX0FMTCkgewogCSAgICBlcnJvciA9IHNvb3B0Y29weWluKHNvcHQsICZtZmMsIHNpemVv ZihzdHJ1Y3QgbWZjY3RsMiksCiAJCQkJc2l6ZW9mKHN0cnVjdCBtZmNjdGwyKSk7CiAJfSBlbHNl IHsKQEAgLTUyNSw2ICs1NjMsNyBAQAogc3RhdGljIGludAogWF9pcF9tcm91dGVyX2dldChzdHJ1 Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2tvcHQgKnNvcHQpCiB7CisgICAgSU5JVF9WTkVUX0lO RVQoc28tPnNvX3ZuZXQpOwogICAgIGludCBlcnJvcjsKICAgICBzdGF0aWMgaW50IHZlcnNpb24g PSAweDAzMDU7IC8qICEhISB3aHkgaXMgdGhpcyBoZXJlPyBYWFggKi8KIApAQCAtNTM0LDcgKzU3 Myw3IEBACiAJYnJlYWs7CiAKICAgICBjYXNlIE1SVF9BU1NFUlQ6Ci0JZXJyb3IgPSBzb29wdGNv cHlvdXQoc29wdCwgJnBpbV9hc3NlcnQsIHNpemVvZiBwaW1fYXNzZXJ0KTsKKwllcnJvciA9IHNv b3B0Y29weW91dChzb3B0LCAmVl9waW1fYXNzZXJ0LCBzaXplb2YgVl9waW1fYXNzZXJ0KTsKIAli cmVhazsKIAogICAgIGNhc2UgTVJUX0FQSV9TVVBQT1JUOgpAQCAtNTQyLDcgKzU4MSw3IEBACiAJ YnJlYWs7CiAKICAgICBjYXNlIE1SVF9BUElfQ09ORklHOgotCWVycm9yID0gc29vcHRjb3B5b3V0 KHNvcHQsICZtcnRfYXBpX2NvbmZpZywgc2l6ZW9mIG1ydF9hcGlfY29uZmlnKTsKKwllcnJvciA9 IHNvb3B0Y29weW91dChzb3B0LCAmVl9tcnRfYXBpX2NvbmZpZywgc2l6ZW9mIFZfbXJ0X2FwaV9j b25maWcpOwogCWJyZWFrOwogCiAgICAgZGVmYXVsdDoKQEAgLTYxMiwxOCArNjUxLDE5IEBACiBz dGF0aWMgaW50CiBnZXRfdmlmX2NudChzdHJ1Y3Qgc2lvY192aWZfcmVxICpyZXEpCiB7CisgICAg SU5JVF9WTkVUX0lORVQoY3Vydm5ldCk7CiAgICAgdmlmaV90IHZpZmkgPSByZXEtPnZpZmk7CiAK ICAgICBWSUZfTE9DSygpOwotICAgIGlmICh2aWZpID49IG51bXZpZnMpIHsKKyAgICBpZiAodmlm aSA+PSBWX251bXZpZnMpIHsKIAlWSUZfVU5MT0NLKCk7CiAJcmV0dXJuIEVJTlZBTDsKICAgICB9 CiAKLSAgICByZXEtPmljb3VudCA9IHZpZnRhYmxlW3ZpZmldLnZfcGt0X2luOwotICAgIHJlcS0+ b2NvdW50ID0gdmlmdGFibGVbdmlmaV0udl9wa3Rfb3V0OwotICAgIHJlcS0+aWJ5dGVzID0gdmlm dGFibGVbdmlmaV0udl9ieXRlc19pbjsKLSAgICByZXEtPm9ieXRlcyA9IHZpZnRhYmxlW3ZpZmld LnZfYnl0ZXNfb3V0OworICAgIHJlcS0+aWNvdW50ID0gVl92aWZ0YWJsZVt2aWZpXS52X3BrdF9p bjsKKyAgICByZXEtPm9jb3VudCA9IFZfdmlmdGFibGVbdmlmaV0udl9wa3Rfb3V0OworICAgIHJl cS0+aWJ5dGVzID0gVl92aWZ0YWJsZVt2aWZpXS52X2J5dGVzX2luOworICAgIHJlcS0+b2J5dGVz ID0gVl92aWZ0YWJsZVt2aWZpXS52X2J5dGVzX291dDsKICAgICBWSUZfVU5MT0NLKCk7CiAKICAg ICByZXR1cm4gMDsKQEAgLTYzMiwxNiArNjcyLDI1IEBACiBzdGF0aWMgdm9pZAogaXBfbXJvdXRl cl9yZXNldCh2b2lkKQogewotICAgIGJ6ZXJvKChjYWRkcl90KW1mY3RhYmxlLCBzaXplb2YobWZj dGFibGUpKTsKLSAgICBiemVybygoY2FkZHJfdCluZXhwaXJlLCBzaXplb2YobmV4cGlyZSkpOwot Ci0gICAgcGltX2Fzc2VydCA9IDA7Ci0gICAgbXJ0X2FwaV9jb25maWcgPSAwOwotCisgICAgSU5J VF9WTkVUX0lORVQoY3Vydm5ldCk7CisgICAgYnplcm8oKGNhZGRyX3QpVl9tZmN0YWJsZSwgc2l6 ZW9mKFZfbWZjdGFibGUpKTsKKyAgICBiemVybygoY2FkZHJfdClWX25leHBpcmUsIHNpemVvZihW X25leHBpcmUpKTsKKyAgICBpZiAoVl9yZWdfdmlmX251bSAhPSBWSUZJX0lOVkFMSUQpCisJSUZf QUREUl9MT0NLX0RFU1RST1koJlZfbXVsdGljYXN0X3JlZ2lzdGVyX2lmKTsKKyAgICBiemVybygm Vl9tdWx0aWNhc3RfcmVnaXN0ZXJfaWYsIHNpemVvZihWX211bHRpY2FzdF9yZWdpc3Rlcl9pZikp OworCisgICAgVl9yZWdfdmlmX251bSA9IFZJRklfSU5WQUxJRDsKKyAgICBWX3BpbV9hc3NlcnQg PSAwOworICAgIFZfbXJ0X2FwaV9jb25maWcgPSAwOworCisgICAgVl9id191cGNhbGxzX24gPSAw OworICAgIGJ6ZXJvKChjYWRkcl90KVZfYndfbWV0ZXJfdGltZXJzLCBzaXplb2YoVl9id19tZXRl cl90aW1lcnMpKTsKKyNpZmRlZiBWSU1BR0UKKyAgICBpZiAoIUlTX0RFRkFVTFRfVk5FVChjdXJ2 bmV0KSkgeworCXJldHVybjsKKyAgICB9CisjZW5kaWYgLyogVklNQUdFICovCiAgICAgY2FsbG91 dF9pbml0KCZleHBpcmVfdXBjYWxsc19jaCwgQ0FMTE9VVF9NUFNBRkUpOwotCi0gICAgYndfdXBj YWxsc19uID0gMDsKLSAgICBiemVybygoY2FkZHJfdClid19tZXRlcl90aW1lcnMsIHNpemVvZihi d19tZXRlcl90aW1lcnMpKTsKICAgICBjYWxsb3V0X2luaXQoJmJ3X3VwY2FsbHNfY2gsIENBTExP VVRfTVBTQUZFKTsKICAgICBjYWxsb3V0X2luaXQoJmJ3X21ldGVyX2NoLCBDQUxMT1VUX01QU0FG RSk7CiB9CkBAIC02NzYsMTIgKzcyNSwxMiBAQAogICAgICAqLwogICAgIFZJRl9MT0NLKCk7CiAg ICAgTUZDX0xPQ0soKTsKLSAgICBmb3IgKHZpZmkgPSAwOyB2aWZpIDwgbnVtdmlmczsgdmlmaSsr KSB7Ci0JaWYgKHZpZnRhYmxlW3ZpZmldLnZfaWZwICE9IGlmcCkKKyAgICBmb3IgKHZpZmkgPSAw OyB2aWZpIDwgVl9udW12aWZzOyB2aWZpKyspIHsKKwlpZiAoVl92aWZ0YWJsZVt2aWZpXS52X2lm cCAhPSBpZnApCiAJCWNvbnRpbnVlOwogCWZvciAoaSA9IDA7IGkgPCBNRkNUQkxTSVo7IGkrKykg ewotCSAgICBwcG1mYyA9ICZtZmN0YWJsZVtpXTsKLQkgICAgZm9yIChtZmMgPSBtZmN0YWJsZVtp XTsgbWZjICE9IE5VTEw7ICkgeworCSAgICBwcG1mYyA9ICZWX21mY3RhYmxlW2ldOworCSAgICBm b3IgKG1mYyA9IFZfbWZjdGFibGVbaV07IG1mYyAhPSBOVUxMOyApIHsKIAkJbm1mYyA9IG1mYy0+ bWZjX25leHQ7CiAJCWlmIChtZmMtPm1mY19wYXJlbnQgPT0gdmlmaSkgewogCQkgICAgZm9yIChw cSA9IG1mYy0+bWZjX3N0YWxsOyBwcSAhPSBOVUxMOyApIHsKQEAgLTcxMyw5ICs3NjIsOSBAQAog c3RhdGljIGludAogaXBfbXJvdXRlcl9pbml0KHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQgdmVyc2lv bikKIHsKLSAgICBJTklUX1ZORVRfSU5FVChjdXJ2bmV0KTsKKyAgICBJTklUX1ZORVRfSU5FVChz by0+c29fdm5ldCk7CiAKLSAgICBpZiAobXJ0ZGVidWcpCisgICAgaWYgKFZfbXJ0ZGVidWcpCiAJ bG9nKExPR19ERUJVRywgImlwX21yb3V0ZXJfaW5pdDogc29fdHlwZSA9ICVkLCBwcl9wcm90b2Nv bCA9ICVkXG4iLAogCSAgICBzby0+c29fdHlwZSwgc28tPnNvX3Byb3RvLT5wcl9wcm90b2NvbCk7 CiAKQEAgLTczMiwyNCArNzgxLDMxIEBACiAJcmV0dXJuIEVBRERSSU5VU0U7CiAgICAgfQogCi0g ICAgaWZfZGV0YWNoX2V2ZW50X3RhZyA9IEVWRU5USEFORExFUl9SRUdJU1RFUihpZm5ldF9kZXBh cnR1cmVfZXZlbnQsIAorICAgIFZfaWZfZGV0YWNoX2V2ZW50X3RhZyA9IEVWRU5USEFORExFUl9S RUdJU1RFUihpZm5ldF9kZXBhcnR1cmVfZXZlbnQsIAogICAgICAgICBpZl9kZXRhY2hlZF9ldmVu dCwgTlVMTCwgRVZFTlRIQU5ETEVSX1BSSV9BTlkpOwotICAgIGlmIChpZl9kZXRhY2hfZXZlbnRf dGFnID09IE5VTEwpIHsKKyAgICBpZiAoVl9pZl9kZXRhY2hfZXZlbnRfdGFnID09IE5VTEwpIHsK IAlNUk9VVEVSX1VOTE9DSygpOwogCXJldHVybiAoRU5PTUVNKTsKICAgICB9CiAKLSAgICBjYWxs b3V0X3Jlc2V0KCZleHBpcmVfdXBjYWxsc19jaCwgRVhQSVJFX1RJTUVPVVQsIGV4cGlyZV91cGNh bGxzLCBOVUxMKTsKLQotICAgIGNhbGxvdXRfcmVzZXQoJmJ3X3VwY2FsbHNfY2gsIEJXX1VQQ0FM TFNfUEVSSU9ELAotCWV4cGlyZV9id191cGNhbGxzX3NlbmQsIE5VTEwpOwotICAgIGNhbGxvdXRf cmVzZXQoJmJ3X21ldGVyX2NoLCBCV19NRVRFUl9QRVJJT0QsIGV4cGlyZV9id19tZXRlcl9wcm9j ZXNzLCBOVUxMKTsKKyNpZmRlZiBWSU1BR0UKKyAgICBpZiAoSVNfREVGQVVMVF9WTkVUKHNvLT5z b192bmV0KSkgeworI2VuZGlmIC8qIFZJTUFHRSAqLworCWNhbGxvdXRfcmVzZXQoJmV4cGlyZV91 cGNhbGxzX2NoLCBFWFBJUkVfVElNRU9VVCwgZXhwaXJlX3VwY2FsbHMsCisJCU5VTEwpOworCWNh bGxvdXRfcmVzZXQoJmJ3X3VwY2FsbHNfY2gsIEJXX1VQQ0FMTFNfUEVSSU9ELAorCQlleHBpcmVf YndfdXBjYWxsc19zZW5kLCBOVUxMKTsKKwljYWxsb3V0X3Jlc2V0KCZid19tZXRlcl9jaCwgQldf TUVURVJfUEVSSU9ELAorCQlleHBpcmVfYndfbWV0ZXJfcHJvY2VzcywgTlVMTCk7CisjaWZkZWYg VklNQUdFCisgICAgfQorI2VuZGlmIC8qIFZJTUFHRSAqLwogCiAgICAgVl9pcF9tcm91dGVyID0g c287CiAKICAgICBNUk9VVEVSX1VOTE9DSygpOwogCi0gICAgaWYgKG1ydGRlYnVnKQorICAgIGlm IChWX21ydGRlYnVnKQogCWxvZyhMT0dfREVCVUcsICJpcF9tcm91dGVyX2luaXRcbiIpOwogCiAg ICAgcmV0dXJuIDA7CkBAIC03ODAsNDEgKzgzNiw0NyBAQAogICAgICAqIERldGFjaC9kaXNhYmxl IGhvb2tzIHRvIHRoZSByZXNldCBvZiB0aGUgc3lzdGVtLgogICAgICAqLwogICAgIFZfaXBfbXJv dXRlciA9IE5VTEw7Ci0gICAgbXJ0X2FwaV9jb25maWcgPSAwOworICAgIFZfbXJ0X2FwaV9jb25m aWcgPSAwOwogCiAgICAgVklGX0xPQ0soKTsKICAgICAvKgogICAgICAqIEZvciBlYWNoIHBoeWlu dCBpbiB1c2UsIGRpc2FibGUgcHJvbWlzY3VvdXMgcmVjZXB0aW9uIG9mIGFsbCBJUAogICAgICAq IG11bHRpY2FzdHMuCiAgICAgICovCi0gICAgZm9yICh2aWZpID0gMDsgdmlmaSA8IG51bXZpZnM7 IHZpZmkrKykgewotCWlmICh2aWZ0YWJsZVt2aWZpXS52X2xjbF9hZGRyLnNfYWRkciAhPSAwICYm Ci0JCSEodmlmdGFibGVbdmlmaV0udl9mbGFncyAmIChWSUZGX1RVTk5FTCB8IFZJRkZfUkVHSVNU RVIpKSkgeworICAgIGZvciAodmlmaSA9IDA7IHZpZmkgPCBWX251bXZpZnM7IHZpZmkrKykgewor CWlmIChWX3ZpZnRhYmxlW3ZpZmldLnZfbGNsX2FkZHIuc19hZGRyICE9IDAgJiYKKwkJIShWX3Zp ZnRhYmxlW3ZpZmldLnZfZmxhZ3MgJiAoVklGRl9UVU5ORUwgfCBWSUZGX1JFR0lTVEVSKSkpIHsK IAkgICAgc3RydWN0IHNvY2thZGRyX2luICpzbyA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikmKGlm ci5pZnJfYWRkcik7CiAKIAkgICAgc28tPnNpbl9sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRy X2luKTsKIAkgICAgc28tPnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogCSAgICBzby0+c2luX2FkZHIu c19hZGRyID0gSU5BRERSX0FOWTsKLQkgICAgaWZwID0gdmlmdGFibGVbdmlmaV0udl9pZnA7CisJ ICAgIGlmcCA9IFZfdmlmdGFibGVbdmlmaV0udl9pZnA7CiAJICAgIGlmX2FsbG11bHRpKGlmcCwg MCk7CiAJfQogICAgIH0KLSAgICBiemVybygoY2FkZHJfdCl2aWZ0YWJsZSwgc2l6ZW9mKHZpZnRh YmxlKSk7Ci0gICAgbnVtdmlmcyA9IDA7Ci0gICAgcGltX2Fzc2VydCA9IDA7CisgICAgYnplcm8o KGNhZGRyX3QpVl92aWZ0YWJsZSwgc2l6ZW9mKFZfdmlmdGFibGUpKTsKKyAgICBWX251bXZpZnMg PSAwOworICAgIFZfcGltX2Fzc2VydCA9IDA7CiAgICAgVklGX1VOTE9DSygpOwotICAgIEVWRU5U SEFORExFUl9ERVJFR0lTVEVSKGlmbmV0X2RlcGFydHVyZV9ldmVudCwgaWZfZGV0YWNoX2V2ZW50 X3RhZyk7CisgICAgRVZFTlRIQU5ETEVSX0RFUkVHSVNURVIoaWZuZXRfZGVwYXJ0dXJlX2V2ZW50 LCBWX2lmX2RldGFjaF9ldmVudF90YWcpOwogCiAgICAgLyoKICAgICAgKiBGcmVlIGFsbCBtdWx0 aWNhc3QgZm9yd2FyZGluZyBjYWNoZSBlbnRyaWVzLgogICAgICAqLwotICAgIGNhbGxvdXRfc3Rv cCgmZXhwaXJlX3VwY2FsbHNfY2gpOwotICAgIGNhbGxvdXRfc3RvcCgmYndfdXBjYWxsc19jaCk7 Ci0gICAgY2FsbG91dF9zdG9wKCZid19tZXRlcl9jaCk7CisjaWZkZWYgVklNQUdFCisgICAgaWYg KElTX0RFRkFVTFRfVk5FVChjdXJ2bmV0KSkgeworI2VuZGlmIC8qIFZJTUFHRSAqLworCWNhbGxv dXRfc3RvcCgmZXhwaXJlX3VwY2FsbHNfY2gpOworCWNhbGxvdXRfc3RvcCgmYndfdXBjYWxsc19j aCk7CisJY2FsbG91dF9zdG9wKCZid19tZXRlcl9jaCk7CisjaWZkZWYgVklNQUdFCisgICAgfQor I2VuZGlmIC8qIFZJTUFHRSAqLwogCiAgICAgTUZDX0xPQ0soKTsKICAgICBmb3IgKGkgPSAwOyBp IDwgTUZDVEJMU0laOyBpKyspIHsKLQlmb3IgKHJ0ID0gbWZjdGFibGVbaV07IHJ0ICE9IE5VTEw7 ICkgeworCWZvciAocnQgPSBWX21mY3RhYmxlW2ldOyBydCAhPSBOVUxMOyApIHsKIAkgICAgc3Ry dWN0IG1mYyAqbnIgPSBydC0+bWZjX25leHQ7CiAKIAkgICAgZm9yIChydGUgPSBydC0+bWZjX3N0 YWxsOyBydGUgIT0gTlVMTDsgKSB7CkBAIC04MjksMTcgKzg5MSwxOSBAQAogCSAgICBydCA9IG5y OwogCX0KICAgICB9Ci0gICAgYnplcm8oKGNhZGRyX3QpbWZjdGFibGUsIHNpemVvZihtZmN0YWJs ZSkpOwotICAgIGJ6ZXJvKChjYWRkcl90KW5leHBpcmUsIHNpemVvZihuZXhwaXJlKSk7Ci0gICAg YndfdXBjYWxsc19uID0gMDsKLSAgICBiemVybyhid19tZXRlcl90aW1lcnMsIHNpemVvZihid19t ZXRlcl90aW1lcnMpKTsKKyAgICBiemVybygoY2FkZHJfdClWX21mY3RhYmxlLCBzaXplb2YoVl9t ZmN0YWJsZSkpOworICAgIGJ6ZXJvKChjYWRkcl90KVZfbmV4cGlyZSwgc2l6ZW9mKFZfbmV4cGly ZSkpOworICAgIFZfYndfdXBjYWxsc19uID0gMDsKKyAgICBiemVybyhWX2J3X21ldGVyX3RpbWVy cywgc2l6ZW9mKFZfYndfbWV0ZXJfdGltZXJzKSk7CiAgICAgTUZDX1VOTE9DSygpOwogCi0gICAg cmVnX3ZpZl9udW0gPSBWSUZJX0lOVkFMSUQ7CisgICAgaWYgKFZfcmVnX3ZpZl9udW0gIT0gVklG SV9JTlZBTElEKQorCUlGX0FERFJfTE9DS19ERVNUUk9ZKCZWX211bHRpY2FzdF9yZWdpc3Rlcl9p Zik7CisgICAgVl9yZWdfdmlmX251bSA9IFZJRklfSU5WQUxJRDsKIAogICAgIE1ST1VURVJfVU5M T0NLKCk7CiAKLSAgICBpZiAobXJ0ZGVidWcpCisgICAgaWYgKFZfbXJ0ZGVidWcpCiAJbG9nKExP R19ERUJVRywgImlwX21yb3V0ZXJfZG9uZVxuIik7CiAKICAgICByZXR1cm4gMDsKQEAgLTg1MSwx MCArOTE1LDExIEBACiBzdGF0aWMgaW50CiBzZXRfYXNzZXJ0KGludCBpKQogeworICAgIElOSVRf Vk5FVF9JTkVUKGN1cnZuZXQpOwogICAgIGlmICgoaSAhPSAxKSAmJiAoaSAhPSAwKSkKIAlyZXR1 cm4gRUlOVkFMOwogCi0gICAgcGltX2Fzc2VydCA9IGk7CisgICAgVl9waW1fYXNzZXJ0ID0gaTsK IAogICAgIHJldHVybiAwOwogfQpAQCAtODY1LDYgKzkzMCw3IEBACiBpbnQKIHNldF9hcGlfY29u ZmlnKHVpbnQzMl90ICphcGl2YWwpCiB7CisgICAgSU5JVF9WTkVUX0lORVQoY3Vydm5ldCk7CiAg ICAgaW50IGk7CiAKICAgICAvKgpAQCAtODc0LDIzICs5NDAsMjMgQEAKICAgICAgKiAgLSBwaW1f YXNzZXJ0IGlzIG5vdCBlbmFibGVkCiAgICAgICogIC0gdGhlIE1GQyB0YWJsZSBpcyBlbXB0eQog ICAgICAqLwotICAgIGlmIChudW12aWZzID4gMCkgeworICAgIGlmIChWX251bXZpZnMgPiAwKSB7 CiAJKmFwaXZhbCA9IDA7CiAJcmV0dXJuIEVQRVJNOwogICAgIH0KLSAgICBpZiAocGltX2Fzc2Vy dCkgeworICAgIGlmIChWX3BpbV9hc3NlcnQpIHsKIAkqYXBpdmFsID0gMDsKIAlyZXR1cm4gRVBF Uk07CiAgICAgfQogICAgIGZvciAoaSA9IDA7IGkgPCBNRkNUQkxTSVo7IGkrKykgewotCWlmICht ZmN0YWJsZVtpXSAhPSBOVUxMKSB7CisJaWYgKFZfbWZjdGFibGVbaV0gIT0gTlVMTCkgewogCSAg ICAqYXBpdmFsID0gMDsKIAkgICAgcmV0dXJuIEVQRVJNOwogCX0KICAgICB9CiAKLSAgICBtcnRf YXBpX2NvbmZpZyA9ICphcGl2YWwgJiBtcnRfYXBpX3N1cHBvcnQ7Ci0gICAgKmFwaXZhbCA9IG1y dF9hcGlfY29uZmlnOworICAgIFZfbXJ0X2FwaV9jb25maWcgPSAqYXBpdmFsICYgbXJ0X2FwaV9z dXBwb3J0OworICAgICphcGl2YWwgPSBWX21ydF9hcGlfY29uZmlnOwogCiAgICAgcmV0dXJuIDA7 CiB9CkBAIC05MDEsNyArOTY3LDggQEAKIHN0YXRpYyBpbnQKIGFkZF92aWYoc3RydWN0IHZpZmN0 bCAqdmlmY3ApCiB7Ci0gICAgc3RydWN0IHZpZiAqdmlmcCA9IHZpZnRhYmxlICsgdmlmY3AtPnZp ZmNfdmlmaTsKKyAgICBJTklUX1ZORVRfSU5FVChjdXJ2bmV0KTsKKyAgICBzdHJ1Y3QgdmlmICp2 aWZwID0gVl92aWZ0YWJsZSArIHZpZmNwLT52aWZjX3ZpZmk7CiAgICAgc3RydWN0IHNvY2thZGRy X2luIHNpbiA9IHtzaXplb2Ygc2luLCBBRl9JTkVUfTsKICAgICBzdHJ1Y3QgaWZhZGRyICppZmE7 CiAgICAgc3RydWN0IGlmbmV0ICppZnA7CkBAIC05NTAsMTQgKzEwMTcsMTkgQEAKIAlWSUZfVU5M T0NLKCk7CiAJcmV0dXJuIEVPUE5PVFNVUFA7CiAgICAgfSBlbHNlIGlmICh2aWZjcC0+dmlmY19m bGFncyAmIFZJRkZfUkVHSVNURVIpIHsKLQlpZnAgPSAmbXVsdGljYXN0X3JlZ2lzdGVyX2lmOwot CWlmIChtcnRkZWJ1ZykKKwlpZnAgPSAmVl9tdWx0aWNhc3RfcmVnaXN0ZXJfaWY7CisJaWYgKFZf bXJ0ZGVidWcpCiAJICAgIGxvZyhMT0dfREVCVUcsICJBZGRpbmcgYSByZWdpc3RlciB2aWYsIGlm cDogJXBcbiIsCi0JCSAgICAodm9pZCAqKSZtdWx0aWNhc3RfcmVnaXN0ZXJfaWYpOwotCWlmIChy ZWdfdmlmX251bSA9PSBWSUZJX0lOVkFMSUQpIHsKLQkgICAgaWZfaW5pdG5hbWUoJm11bHRpY2Fz dF9yZWdpc3Rlcl9pZiwgInJlZ2lzdGVyX3ZpZiIsIDApOwotCSAgICBtdWx0aWNhc3RfcmVnaXN0 ZXJfaWYuaWZfZmxhZ3MgPSBJRkZfTE9PUEJBQ0s7Ci0JICAgIHJlZ192aWZfbnVtID0gdmlmY3At PnZpZmNfdmlmaTsKKwkJICAgICh2b2lkICopJlZfbXVsdGljYXN0X3JlZ2lzdGVyX2lmKTsKKwlp ZiAoVl9yZWdfdmlmX251bSA9PSBWSUZJX0lOVkFMSUQpIHsKKwkgICAgaWZfaW5pdG5hbWUoJlZf bXVsdGljYXN0X3JlZ2lzdGVyX2lmLCAicmVnaXN0ZXJfdmlmIiwgMCk7CisJICAgIFZfbXVsdGlj YXN0X3JlZ2lzdGVyX2lmLmlmX2ZsYWdzID0gSUZGX0xPT1BCQUNLOworCSAgICBWX3JlZ192aWZf bnVtID0gdmlmY3AtPnZpZmNfdmlmaTsKKwkgICAgSUZfQUREUl9MT0NLX0lOSVQoJlZfbXVsdGlj YXN0X3JlZ2lzdGVyX2lmKTsKKyNpZmRlZiBWSU1BR0UKKwkgICAgVl9tdWx0aWNhc3RfcmVnaXN0 ZXJfaWYuaWZfdm5ldCA9IGN1cnZuZXQ7CisJICAgIFZfbXVsdGljYXN0X3JlZ2lzdGVyX2lmLmlm X2hvbWVfdm5ldCA9IGN1cnZuZXQ7CisjZW5kaWYgLyogVklNQUdFICovCiAJfQogICAgIH0gZWxz ZSB7CQkvKiBNYWtlIHN1cmUgdGhlIGludGVyZmFjZSBzdXBwb3J0cyBtdWx0aWNhc3QgKi8KIAlp ZiAoKGlmcC0+aWZfZmxhZ3MgJiBJRkZfTVVMVElDQVNUKSA9PSAwKSB7CkBAIC05ODgsMTEgKzEw NjAsMTEgQEAKICAgICBiemVybygmdmlmcC0+dl9yb3V0ZSwgc2l6ZW9mKHZpZnAtPnZfcm91dGUp KTsKIAogICAgIC8qIEFkanVzdCBudW12aWZzIHVwIGlmIHRoZSB2aWZpIGlzIGhpZ2hlciB0aGFu IG51bXZpZnMgKi8KLSAgICBpZiAobnVtdmlmcyA8PSB2aWZjcC0+dmlmY192aWZpKSBudW12aWZz ID0gdmlmY3AtPnZpZmNfdmlmaSArIDE7CisgICAgaWYgKFZfbnVtdmlmcyA8PSB2aWZjcC0+dmlm Y192aWZpKSBWX251bXZpZnMgPSB2aWZjcC0+dmlmY192aWZpICsgMTsKIAogICAgIFZJRl9VTkxP Q0soKTsKIAotICAgIGlmIChtcnRkZWJ1ZykKKyAgICBpZiAoVl9tcnRkZWJ1ZykKIAlsb2coTE9H X0RFQlVHLCAiYWRkX3ZpZiAjJWQsIGxjbGFkZHIgJWx4LCAlcyAlbHgsIHRocmVzaCAleFxuIiwK IAkgICAgdmlmY3AtPnZpZmNfdmlmaSwKIAkgICAgKHVfbG9uZyludG9obCh2aWZjcC0+dmlmY19s Y2xfYWRkci5zX2FkZHIpLApAQCAtMTAwOSwxNCArMTA4MSwxNSBAQAogc3RhdGljIGludAogZGVs X3ZpZl9sb2NrZWQodmlmaV90IHZpZmkpCiB7CisgICAgSU5JVF9WTkVUX0lORVQoY3Vydm5ldCk7 CiAgICAgc3RydWN0IHZpZiAqdmlmcDsKIAogICAgIFZJRl9MT0NLX0FTU0VSVCgpOwogCi0gICAg aWYgKHZpZmkgPj0gbnVtdmlmcykgeworICAgIGlmICh2aWZpID49IFZfbnVtdmlmcykgewogCXJl dHVybiBFSU5WQUw7CiAgICAgfQotICAgIHZpZnAgPSAmdmlmdGFibGVbdmlmaV07CisgICAgdmlm cCA9ICZWX3ZpZnRhYmxlW3ZpZmldOwogICAgIGlmICh2aWZwLT52X2xjbF9hZGRyLnNfYWRkciA9 PSBJTkFERFJfQU5ZKSB7CiAJcmV0dXJuIEVBRERSTk9UQVZBSUw7CiAgICAgfQpAQCAtMTAyNCwx OSArMTA5NywyMiBAQAogICAgIGlmICghKHZpZnAtPnZfZmxhZ3MgJiAoVklGRl9UVU5ORUwgfCBW SUZGX1JFR0lTVEVSKSkpCiAJaWZfYWxsbXVsdGkodmlmcC0+dl9pZnAsIDApOwogCi0gICAgaWYg KHZpZnAtPnZfZmxhZ3MgJiBWSUZGX1JFR0lTVEVSKQotCXJlZ192aWZfbnVtID0gVklGSV9JTlZB TElEOworICAgIGlmICh2aWZwLT52X2ZsYWdzICYgVklGRl9SRUdJU1RFUikgeworCWlmIChWX3Jl Z192aWZfbnVtICE9IFZJRklfSU5WQUxJRCkKKwkgICAgSUZfQUREUl9MT0NLX0RFU1RST1koJlZf bXVsdGljYXN0X3JlZ2lzdGVyX2lmKTsKKwlWX3JlZ192aWZfbnVtID0gVklGSV9JTlZBTElEOwor ICAgIH0KIAogICAgIGJ6ZXJvKChjYWRkcl90KXZpZnAsIHNpemVvZiAoKnZpZnApKTsKIAotICAg IGlmIChtcnRkZWJ1ZykKLQlsb2coTE9HX0RFQlVHLCAiZGVsX3ZpZiAlZCwgbnVtdmlmcyAlZFxu IiwgdmlmaSwgbnVtdmlmcyk7CisgICAgaWYgKFZfbXJ0ZGVidWcpCisJbG9nKExPR19ERUJVRywg ImRlbF92aWYgJWQsIG51bXZpZnMgJWRcbiIsIHZpZmksIFZfbnVtdmlmcyk7CiAKICAgICAvKiBB ZGp1c3QgbnVtdmlmcyBkb3duICovCi0gICAgZm9yICh2aWZpID0gbnVtdmlmczsgdmlmaSA+IDA7 IHZpZmktLSkKLQlpZiAodmlmdGFibGVbdmlmaS0xXS52X2xjbF9hZGRyLnNfYWRkciAhPSBJTkFE RFJfQU5ZKQorICAgIGZvciAodmlmaSA9IFZfbnVtdmlmczsgdmlmaSA+IDA7IHZpZmktLSkKKwlp ZiAoVl92aWZ0YWJsZVt2aWZpLTFdLnZfbGNsX2FkZHIuc19hZGRyICE9IElOQUREUl9BTlkpCiAJ ICAgIGJyZWFrOwotICAgIG51bXZpZnMgPSB2aWZpOworICAgIFZfbnVtdmlmcyA9IHZpZmk7CiAK ICAgICByZXR1cm4gMDsKIH0KQEAgLTEwNTksMTYgKzExMzUsMTcgQEAKIHN0YXRpYyB2b2lkCiB1 cGRhdGVfbWZjX3BhcmFtcyhzdHJ1Y3QgbWZjICpydCwgc3RydWN0IG1mY2N0bDIgKm1mY2NwKQog eworICAgIElOSVRfVk5FVF9JTkVUKGN1cnZuZXQpOwogICAgIGludCBpOwogCiAgICAgcnQtPm1m Y19wYXJlbnQgPSBtZmNjcC0+bWZjY19wYXJlbnQ7Ci0gICAgZm9yIChpID0gMDsgaSA8IG51bXZp ZnM7IGkrKykgeworICAgIGZvciAoaSA9IDA7IGkgPCBWX251bXZpZnM7IGkrKykgewogCXJ0LT5t ZmNfdHRsc1tpXSA9IG1mY2NwLT5tZmNjX3R0bHNbaV07Ci0JcnQtPm1mY19mbGFnc1tpXSA9IG1m Y2NwLT5tZmNjX2ZsYWdzW2ldICYgbXJ0X2FwaV9jb25maWcgJgorCXJ0LT5tZmNfZmxhZ3NbaV0g PSBtZmNjcC0+bWZjY19mbGFnc1tpXSAmIFZfbXJ0X2FwaV9jb25maWcgJgogCSAgICBNUlRfTUZD X0ZMQUdTX0FMTDsKICAgICB9CiAgICAgLyogc2V0IHRoZSBSUCBhZGRyZXNzICovCi0gICAgaWYg KG1ydF9hcGlfY29uZmlnICYgTVJUX01GQ19SUCkKKyAgICBpZiAoVl9tcnRfYXBpX2NvbmZpZyAm IE1SVF9NRkNfUlApCiAJcnQtPm1mY19ycCA9IG1mY2NwLT5tZmNjX3JwOwogICAgIGVsc2UKIAly dC0+bWZjX3JwLnNfYWRkciA9IElOQUREUl9BTlk7CkBAIC0xMDk5LDYgKzExNzYsNyBAQAogc3Rh dGljIGludAogYWRkX21mYyhzdHJ1Y3QgbWZjY3RsMiAqbWZjY3ApCiB7CisgICAgSU5JVF9WTkVU X0lORVQoY3Vydm5ldCk7CiAgICAgc3RydWN0IG1mYyAqcnQ7CiAgICAgdV9sb25nIGhhc2g7CiAg ICAgc3RydWN0IHJ0ZGV0cSAqcnRlOwpAQCAtMTExMSw3ICsxMTg5LDcgQEAKIAogICAgIC8qIElm IGFuIGVudHJ5IGFscmVhZHkgZXhpc3RzLCBqdXN0IHVwZGF0ZSB0aGUgZmllbGRzICovCiAgICAg aWYgKHJ0KSB7Ci0JaWYgKG1ydGRlYnVnICYgREVCVUdfTUZDKQorCWlmIChWX21ydGRlYnVnICYg REVCVUdfTUZDKQogCSAgICBsb2coTE9HX0RFQlVHLCJhZGRfbWZjIHVwZGF0ZSBvICVseCBnICVs eCBwICV4XG4iLAogCQkodV9sb25nKW50b2hsKG1mY2NwLT5tZmNjX29yaWdpbi5zX2FkZHIpLAog CQkodV9sb25nKW50b2hsKG1mY2NwLT5tZmNjX21jYXN0Z3JwLnNfYWRkciksCkBAIC0xMTI3LDcg KzEyMDUsNyBAQAogICAgICAqIEZpbmQgdGhlIGVudHJ5IGZvciB3aGljaCB0aGUgdXBjYWxsIHdh cyBtYWRlIGFuZCB1cGRhdGUKICAgICAgKi8KICAgICBoYXNoID0gTUZDSEFTSChtZmNjcC0+bWZj Y19vcmlnaW4uc19hZGRyLCBtZmNjcC0+bWZjY19tY2FzdGdycC5zX2FkZHIpOwotICAgIGZvciAo cnQgPSBtZmN0YWJsZVtoYXNoXSwgbnN0bCA9IDA7IHJ0OyBydCA9IHJ0LT5tZmNfbmV4dCkgewor ICAgIGZvciAocnQgPSBWX21mY3RhYmxlW2hhc2hdLCBuc3RsID0gMDsgcnQ7IHJ0ID0gcnQtPm1m Y19uZXh0KSB7CiAKIAlpZiAoKHJ0LT5tZmNfb3JpZ2luLnNfYWRkciA9PSBtZmNjcC0+bWZjY19v cmlnaW4uc19hZGRyKSAmJgogCQkocnQtPm1mY19tY2FzdGdycC5zX2FkZHIgPT0gbWZjY3AtPm1m Y2NfbWNhc3RncnAuc19hZGRyKSAmJgpAQCAtMTE0MCw3ICsxMjE4LDcgQEAKIAkJICAgICh1X2xv bmcpbnRvaGwobWZjY3AtPm1mY2NfbWNhc3RncnAuc19hZGRyKSwKIAkJICAgIG1mY2NwLT5tZmNj X3BhcmVudCwgKHZvaWQgKilydC0+bWZjX3N0YWxsKTsKIAotCSAgICBpZiAobXJ0ZGVidWcgJiBE RUJVR19NRkMpCisJICAgIGlmIChWX21ydGRlYnVnICYgREVCVUdfTUZDKQogCQlsb2coTE9HX0RF QlVHLCJhZGRfbWZjIG8gJWx4IGcgJWx4IHAgJXggZGJnICVwXG4iLAogCQkgICAgKHVfbG9uZylu dG9obChtZmNjcC0+bWZjY19vcmlnaW4uc19hZGRyKSwKIAkJICAgICh1X2xvbmcpbnRvaGwobWZj Y3AtPm1mY2NfbWNhc3RncnAuc19hZGRyKSwKQEAgLTExNDksNyArMTIyNyw3IEBACiAJICAgIGlu aXRfbWZjX3BhcmFtcyhydCwgbWZjY3ApOwogCiAJICAgIHJ0LT5tZmNfZXhwaXJlID0gMDsJLyog RG9uJ3QgY2xlYW4gdGhpcyBndXkgdXAgKi8KLQkgICAgbmV4cGlyZVtoYXNoXS0tOworCSAgICBW X25leHBpcmVbaGFzaF0tLTsKIAogCSAgICAvKiBmcmVlIHBhY2tldHMgUWVkIGF0IHRoZSBlbmQg b2YgdGhpcyBlbnRyeSAqLwogCSAgICBmb3IgKHJ0ZSA9IHJ0LT5tZmNfc3RhbGw7IHJ0ZSAhPSBO VUxMOyApIHsKQEAgLTExNjgsMTggKzEyNDYsMTggQEAKICAgICAgKiBJdCBpcyBwb3NzaWJsZSB0 aGF0IGFuIGVudHJ5IGlzIGJlaW5nIGluc2VydGVkIHdpdGhvdXQgYW4gdXBjYWxsCiAgICAgICov CiAgICAgaWYgKG5zdGwgPT0gMCkgewotCWlmIChtcnRkZWJ1ZyAmIERFQlVHX01GQykKKwlpZiAo Vl9tcnRkZWJ1ZyAmIERFQlVHX01GQykKIAkgICAgbG9nKExPR19ERUJVRywiYWRkX21mYyBubyB1 cGNhbGwgaCAlbHUgbyAlbHggZyAlbHggcCAleFxuIiwKIAkJaGFzaCwgKHVfbG9uZyludG9obCht ZmNjcC0+bWZjY19vcmlnaW4uc19hZGRyKSwKIAkJKHVfbG9uZyludG9obChtZmNjcC0+bWZjY19t Y2FzdGdycC5zX2FkZHIpLAogCQltZmNjcC0+bWZjY19wYXJlbnQpOwogCi0JZm9yIChydCA9IG1m Y3RhYmxlW2hhc2hdOyBydCAhPSBOVUxMOyBydCA9IHJ0LT5tZmNfbmV4dCkgeworCWZvciAocnQg PSBWX21mY3RhYmxlW2hhc2hdOyBydCAhPSBOVUxMOyBydCA9IHJ0LT5tZmNfbmV4dCkgewogCSAg ICBpZiAoKHJ0LT5tZmNfb3JpZ2luLnNfYWRkciA9PSBtZmNjcC0+bWZjY19vcmlnaW4uc19hZGRy KSAmJgogCQkgICAgKHJ0LT5tZmNfbWNhc3RncnAuc19hZGRyID09IG1mY2NwLT5tZmNjX21jYXN0 Z3JwLnNfYWRkcikpIHsKIAkJaW5pdF9tZmNfcGFyYW1zKHJ0LCBtZmNjcCk7CiAJCWlmIChydC0+ bWZjX2V4cGlyZSkKLQkJICAgIG5leHBpcmVbaGFzaF0tLTsKKwkJICAgIFZfbmV4cGlyZVtoYXNo XS0tOwogCQlydC0+bWZjX2V4cGlyZSA9IDA7CiAJCWJyZWFrOyAvKiBYWFggKi8KIAkgICAgfQpA QCAtMTE5OCw4ICsxMjc2LDggQEAKIAogCSAgICBydC0+bWZjX2J3X21ldGVyID0gTlVMTDsKIAkg ICAgLyogaW5zZXJ0IG5ldyBlbnRyeSBhdCBoZWFkIG9mIGhhc2ggY2hhaW4gKi8KLQkgICAgcnQt Pm1mY19uZXh0ID0gbWZjdGFibGVbaGFzaF07Ci0JICAgIG1mY3RhYmxlW2hhc2hdID0gcnQ7CisJ ICAgIHJ0LT5tZmNfbmV4dCA9IFZfbWZjdGFibGVbaGFzaF07CisJICAgIFZfbWZjdGFibGVbaGFz aF0gPSBydDsKIAl9CiAgICAgfQogICAgIE1GQ19VTkxPQ0soKTsKQEAgLTEyMTMsNiArMTI5MSw3 IEBACiBzdGF0aWMgaW50CiBkZWxfbWZjKHN0cnVjdCBtZmNjdGwyICptZmNjcCkKIHsKKyAgICBJ TklUX1ZORVRfSU5FVChjdXJ2bmV0KTsKICAgICBzdHJ1Y3QgaW5fYWRkcglvcmlnaW47CiAgICAg c3RydWN0IGluX2FkZHIJbWNhc3RncnA7CiAgICAgc3RydWN0IG1mYwkJKnJ0OwpAQCAtMTIyMywx NCArMTMwMiwxNCBAQAogICAgIG9yaWdpbiA9IG1mY2NwLT5tZmNjX29yaWdpbjsKICAgICBtY2Fz dGdycCA9IG1mY2NwLT5tZmNjX21jYXN0Z3JwOwogCi0gICAgaWYgKG1ydGRlYnVnICYgREVCVUdf TUZDKQorICAgIGlmIChWX21ydGRlYnVnICYgREVCVUdfTUZDKQogCWxvZyhMT0dfREVCVUcsImRl bF9tZmMgb3JpZyAlbHggbWNhc3RncnAgJWx4XG4iLAogCSAgICAodV9sb25nKW50b2hsKG9yaWdp bi5zX2FkZHIpLCAodV9sb25nKW50b2hsKG1jYXN0Z3JwLnNfYWRkcikpOwogCiAgICAgTUZDX0xP Q0soKTsKIAogICAgIGhhc2ggPSBNRkNIQVNIKG9yaWdpbi5zX2FkZHIsIG1jYXN0Z3JwLnNfYWRk cik7Ci0gICAgZm9yIChucHRyID0gJm1mY3RhYmxlW2hhc2hdOyAocnQgPSAqbnB0cikgIT0gTlVM TDsgbnB0ciA9ICZydC0+bWZjX25leHQpCisgICAgZm9yIChucHRyID0gJlZfbWZjdGFibGVbaGFz aF07IChydCA9ICpucHRyKSAhPSBOVUxMOyBucHRyID0gJnJ0LT5tZmNfbmV4dCkKIAlpZiAob3Jp Z2luLnNfYWRkciA9PSBydC0+bWZjX29yaWdpbi5zX2FkZHIgJiYKIAkJbWNhc3RncnAuc19hZGRy ID09IHJ0LT5tZmNfbWNhc3RncnAuc19hZGRyICYmCiAJCXJ0LT5tZmNfc3RhbGwgPT0gTlVMTCkK QEAgLTEyOTgsNyArMTM3Nyw3IEBACiAgICAgaW50IGVycm9yOwogICAgIHZpZmlfdCB2aWZpOwog Ci0gICAgaWYgKG1ydGRlYnVnICYgREVCVUdfRk9SV0FSRCkKKyAgICBpZiAoVl9tcnRkZWJ1ZyAm IERFQlVHX0ZPUldBUkQpCiAJbG9nKExPR19ERUJVRywgImlwX21mb3J3YXJkOiBzcmMgJWx4LCBk c3QgJWx4LCBpZnAgJXBcbiIsCiAJICAgICh1X2xvbmcpbnRvaGwoaXAtPmlwX3NyYy5zX2FkZHIp LCAodV9sb25nKW50b2hsKGlwLT5pcF9kc3Quc19hZGRyKSwKIAkgICAgKHZvaWQgKilpZnApOwpA QCAtMTMyNiwxMSArMTQwNSwxMSBAQAogCiAgICAgVklGX0xPQ0soKTsKICAgICBNRkNfTE9DSygp OwotICAgIGlmIChpbW8gJiYgKCh2aWZpID0gaW1vLT5pbW9fbXVsdGljYXN0X3ZpZikgPCBudW12 aWZzKSkgeworICAgIGlmIChpbW8gJiYgKCh2aWZpID0gaW1vLT5pbW9fbXVsdGljYXN0X3ZpZikg PCBWX251bXZpZnMpKSB7CiAJaWYgKGlwLT5pcF90dGwgPCBNQVhUVEwpCiAJICAgIGlwLT5pcF90 dGwrKzsJLyogY29tcGVuc2F0ZSBmb3IgLTEgaW4gKl9zZW5kIHJvdXRpbmVzICovCi0JaWYgKHJz dnBkZWJ1ZyAmJiBpcC0+aXBfcCA9PSBJUFBST1RPX1JTVlApIHsKLQkgICAgc3RydWN0IHZpZiAq dmlmcCA9IHZpZnRhYmxlICsgdmlmaTsKKwlpZiAoVl9yc3ZwZGVidWcgJiYgaXAtPmlwX3AgPT0g SVBQUk9UT19SU1ZQKSB7CisJICAgIHN0cnVjdCB2aWYgKnZpZnAgPSBWX3ZpZnRhYmxlICsgdmlm aTsKIAogCSAgICBwcmludGYoIlNlbmRpbmcgSVBQUk9UT19SU1ZQIGZyb20gJWx4IHRvICVseCBv biB2aWYgJWQgKCVzJXMpXG4iLAogCQkobG9uZyludG9obChpcC0+aXBfc3JjLnNfYWRkciksIChs b25nKW50b2hsKGlwLT5pcF9kc3Quc19hZGRyKSwKQEAgLTEzNDMsNyArMTQyMiw3IEBACiAJVklG X1VOTE9DSygpOwogCXJldHVybiBlcnJvcjsKICAgICB9Ci0gICAgaWYgKHJzdnBkZWJ1ZyAmJiBp cC0+aXBfcCA9PSBJUFBST1RPX1JTVlApIHsKKyAgICBpZiAoVl9yc3ZwZGVidWcgJiYgaXAtPmlw X3AgPT0gSVBQUk9UT19SU1ZQKSB7CiAJcHJpbnRmKCJXYXJuaW5nOiBJUFBST1RPX1JTVlAgZnJv bSAlbHggdG8gJWx4IHdpdGhvdXQgdmlmIG9wdGlvblxuIiwKIAkgICAgKGxvbmcpbnRvaGwoaXAt PmlwX3NyYy5zX2FkZHIpLCAobG9uZyludG9obChpcC0+aXBfZHN0LnNfYWRkcikpOwogCWlmICgh aW1vKQpAQCAtMTM2Myw3ICsxNDQyLDcgQEAKICAgICAvKgogICAgICAqIERldGVybWluZSBmb3J3 YXJkaW5nIHZpZnMgZnJvbSB0aGUgZm9yd2FyZGluZyBjYWNoZSB0YWJsZQogICAgICAqLwotICAg ICsrbXJ0c3RhdC5tcnRzX21mY19sb29rdXBzOworICAgICsrVl9tcnRzdGF0Lm1ydHNfbWZjX2xv b2t1cHM7CiAgICAgcnQgPSBtZmNfZmluZChpcC0+aXBfc3JjLnNfYWRkciwgaXAtPmlwX2RzdC5z X2FkZHIpOwogCiAgICAgLyogRW50cnkgZXhpc3RzLCBzbyBmb3J3YXJkIGlmIG5lY2Vzc2FyeSAq LwpAQCAtMTM4MywxMCArMTQ2MiwxMCBAQAogCXVfbG9uZyBoYXNoOwogCWludCBobGVuID0gaXAt PmlwX2hsIDw8IDI7CiAKLQkrK21ydHN0YXQubXJ0c19tZmNfbWlzc2VzOworCSsrVl9tcnRzdGF0 Lm1ydHNfbWZjX21pc3NlczsKIAotCW1ydHN0YXQubXJ0c19ub19yb3V0ZSsrOwotCWlmIChtcnRk ZWJ1ZyAmIChERUJVR19GT1JXQVJEIHwgREVCVUdfTUZDKSkKKwlWX21ydHN0YXQubXJ0c19ub19y b3V0ZSsrOworCWlmIChWX21ydGRlYnVnICYgKERFQlVHX0ZPUldBUkQgfCBERUJVR19NRkMpKQog CSAgICBsb2coTE9HX0RFQlVHLCAiaXBfbWZvcndhcmQ6IG5vIHJ0ZSBzICVseCBnICVseFxuIiwK IAkJKHVfbG9uZyludG9obChpcC0+aXBfc3JjLnNfYWRkciksCiAJCSh1X2xvbmcpbnRvaGwoaXAt PmlwX2RzdC5zX2FkZHIpKTsKQEAgLTE0MTQsNyArMTQ5Myw3IEBACiAKIAkvKiBpcyB0aGVyZSBh biB1cGNhbGwgd2FpdGluZyBmb3IgdGhpcyBmbG93ID8gKi8KIAloYXNoID0gTUZDSEFTSChpcC0+ aXBfc3JjLnNfYWRkciwgaXAtPmlwX2RzdC5zX2FkZHIpOwotCWZvciAocnQgPSBtZmN0YWJsZVto YXNoXTsgcnQ7IHJ0ID0gcnQtPm1mY19uZXh0KSB7CisJZm9yIChydCA9IFZfbWZjdGFibGVbaGFz aF07IHJ0OyBydCA9IHJ0LT5tZmNfbmV4dCkgewogCSAgICBpZiAoKGlwLT5pcF9zcmMuc19hZGRy ID09IHJ0LT5tZmNfb3JpZ2luLnNfYWRkcikgJiYKIAkJICAgIChpcC0+aXBfZHN0LnNfYWRkciA9 PSBydC0+bWZjX21jYXN0Z3JwLnNfYWRkcikgJiYKIAkJICAgIChydC0+bWZjX3N0YWxsICE9IE5V TEwpKQpAQCAtMTQzMSw5ICsxNTEwLDkgQEAKIAkgICAgICogTG9jYXRlIHRoZSB2aWZpIGZvciB0 aGUgaW5jb21pbmcgaW50ZXJmYWNlIGZvciB0aGlzIHBhY2tldC4KIAkgICAgICogSWYgbm9uZSBm b3VuZCwgZHJvcCBwYWNrZXQuCiAJICAgICAqLwotCSAgICBmb3IgKHZpZmk9MDsgdmlmaSA8IG51 bXZpZnMgJiYgdmlmdGFibGVbdmlmaV0udl9pZnAgIT0gaWZwOyB2aWZpKyspCisJICAgIGZvciAo dmlmaT0wOyB2aWZpIDwgVl9udW12aWZzICYmIFZfdmlmdGFibGVbdmlmaV0udl9pZnAgIT0gaWZw OyB2aWZpKyspCiAJCTsKLQkgICAgaWYgKHZpZmkgPj0gbnVtdmlmcykJLyogdmlmIG5vdCBmb3Vu ZCwgZHJvcCBwYWNrZXQgKi8KKwkgICAgaWYgKHZpZmkgPj0gVl9udW12aWZzKQkvKiB2aWYgbm90 IGZvdW5kLCBkcm9wIHBhY2tldCAqLwogCQlnb3RvIG5vbl9mYXRhbDsKIAogCSAgICAvKiBubyB1 cGNhbGwsIHNvIG1ha2UgYSBuZXcgZW50cnkgKi8KQEAgLTE0NTUsMTIgKzE1MzQsMTIgQEAKIAkg ICAgaW0tPmltX21ieiA9IDA7CiAJICAgIGltLT5pbV92aWYgPSB2aWZpOwogCi0JICAgIG1ydHN0 YXQubXJ0c191cGNhbGxzKys7CisJICAgIFZfbXJ0c3RhdC5tcnRzX3VwY2FsbHMrKzsKIAogCSAg ICBrX2lnbXBzcmMuc2luX2FkZHIgPSBpcC0+aXBfc3JjOwogCSAgICBpZiAoc29ja2V0X3NlbmQo Vl9pcF9tcm91dGVyLCBtbSwgJmtfaWdtcHNyYykgPCAwKSB7CiAJCWxvZyhMT0dfV0FSTklORywg ImlwX21mb3J3YXJkOiBpcF9tcm91dGVyIHNvY2tldCBxdWV1ZSBmdWxsXG4iKTsKLQkJKyttcnRz dGF0Lm1ydHNfdXBxX3NvY2tmdWxsOworCQkrK1ZfbXJ0c3RhdC5tcnRzX3VwcV9zb2NrZnVsbDsK IGZhaWwxOgogCQlmcmVlKHJ0LCBNX01SVEFCTEUpOwogZmFpbDoKQEAgLTE0NzUsOCArMTU1NCw4 IEBACiAJICAgIHJ0LT5tZmNfb3JpZ2luLnNfYWRkciAgICAgPSBpcC0+aXBfc3JjLnNfYWRkcjsK IAkgICAgcnQtPm1mY19tY2FzdGdycC5zX2FkZHIgICA9IGlwLT5pcF9kc3Quc19hZGRyOwogCSAg ICBydC0+bWZjX2V4cGlyZQkgICAgICA9IFVQQ0FMTF9FWFBJUkU7Ci0JICAgIG5leHBpcmVbaGFz aF0rKzsKLQkgICAgZm9yIChpID0gMDsgaSA8IG51bXZpZnM7IGkrKykgeworCSAgICBWX25leHBp cmVbaGFzaF0rKzsKKwkgICAgZm9yIChpID0gMDsgaSA8IFZfbnVtdmlmczsgaSsrKSB7CiAJCXJ0 LT5tZmNfdHRsc1tpXSA9IDA7CiAJCXJ0LT5tZmNfZmxhZ3NbaV0gPSAwOwogCSAgICB9CkBAIC0x NDg3LDggKzE1NjYsOCBAQAogCSAgICBydC0+bWZjX2J3X21ldGVyID0gTlVMTDsKIAogCSAgICAv KiBsaW5rIGludG8gdGFibGUgKi8KLQkgICAgcnQtPm1mY19uZXh0ICAgPSBtZmN0YWJsZVtoYXNo XTsKLQkgICAgbWZjdGFibGVbaGFzaF0gPSBydDsKKwkgICAgcnQtPm1mY19uZXh0ICAgPSBWX21m Y3RhYmxlW2hhc2hdOworCSAgICBWX21mY3RhYmxlW2hhc2hdID0gcnQ7CiAJICAgIHJ0LT5tZmNf c3RhbGwgPSBydGU7CiAKIAl9IGVsc2UgewpAQCAtMTUwNSw3ICsxNTg0LDcgQEAKIAkJbnBrdHMr KzsKIAogCSAgICBpZiAobnBrdHMgPiBNQVhfVVBRKSB7Ci0JCW1ydHN0YXQubXJ0c191cHFfb3Zm bHcrKzsKKwkJVl9tcnRzdGF0Lm1ydHNfdXBxX292Zmx3Kys7CiBub25fZmF0YWw6CiAJCWZyZWUo cnRlLCBNX01SVEFCTEUpOwogCQltX2ZyZWVtKG1iMCk7CkBAIC0xNTQwLDEwICsxNjE5LDEyIEBA CiAgICAgaW50IGk7CiAKICAgICBNRkNfTE9DSygpOworICAgIFZORVRfSVRFUkxPT1BfQkVHSU4o KTsKKyAgICBJTklUX1ZORVRfSU5FVChjdXJ2bmV0KTsKICAgICBmb3IgKGkgPSAwOyBpIDwgTUZD VEJMU0laOyBpKyspIHsKLQlpZiAobmV4cGlyZVtpXSA9PSAwKQorCWlmIChWX25leHBpcmVbaV0g PT0gMCkKIAkgICAgY29udGludWU7Ci0JbnB0ciA9ICZtZmN0YWJsZVtpXTsKKwlucHRyID0gJlZf bWZjdGFibGVbaV07CiAJZm9yIChtZmMgPSAqbnB0cjsgbWZjICE9IE5VTEw7IG1mYyA9ICpucHRy KSB7CiAJICAgIC8qCiAJICAgICAqIFNraXAgcmVhbCBjYWNoZSBlbnRyaWVzCkBAIC0xNTUyLDcg KzE2MzMsNyBAQAogCSAgICAgKi8KIAkgICAgaWYgKG1mYy0+bWZjX3N0YWxsICE9IE5VTEwgJiYg bWZjLT5tZmNfZXhwaXJlICE9IDAgJiYKIAkJICAgIC0tbWZjLT5tZmNfZXhwaXJlID09IDApIHsK LQkJaWYgKG1ydGRlYnVnICYgREVCVUdfRVhQSVJFKQorCQlpZiAoVl9tcnRkZWJ1ZyAmIERFQlVH X0VYUElSRSkKIAkJICAgIGxvZyhMT0dfREVCVUcsICJleHBpcmVfdXBjYWxsczogZXhwaXJpbmcg KCVseCAlbHgpXG4iLAogCQkJKHVfbG9uZyludG9obChtZmMtPm1mY19vcmlnaW4uc19hZGRyKSwK IAkJCSh1X2xvbmcpbnRvaGwobWZjLT5tZmNfbWNhc3RncnAuc19hZGRyKSk7CkBAIC0xNTY3LDgg KzE2NDgsOCBAQAogCQkgICAgZnJlZShydGUsIE1fTVJUQUJMRSk7CiAJCSAgICBydGUgPSBuOwog CQl9Ci0JCSsrbXJ0c3RhdC5tcnRzX2NhY2hlX2NsZWFudXBzOwotCQluZXhwaXJlW2ldLS07CisJ CSsrVl9tcnRzdGF0Lm1ydHNfY2FjaGVfY2xlYW51cHM7CisJCVZfbmV4cGlyZVtpXS0tOwogCiAJ CS8qCiAJCSAqIGZyZWUgdGhlIGJ3X21ldGVyIGVudHJpZXMKQEAgLTE1ODcsOSArMTY2OCw5IEBA CiAJICAgIH0KIAl9CiAgICAgfQotICAgIE1GQ19VTkxPQ0soKTsKLQorICAgIFZORVRfSVRFUkxP T1BfRU5EKCk7CiAgICAgY2FsbG91dF9yZXNldCgmZXhwaXJlX3VwY2FsbHNfY2gsIEVYUElSRV9U SU1FT1VULCBleHBpcmVfdXBjYWxscywgTlVMTCk7CisgICAgTUZDX1VOTE9DSygpOwogfQogCiAv KgpAQCAtMTYxMCwxMSArMTY5MSwxMSBAQAogICAgICAqCiAgICAgICogKHNpbmNlIHZpZmlfdCBp cyB1X3Nob3J0LCAtMSBiZWNvbWVzIE1BWFVTSE9SVCwgd2hpY2ggPiBudW12aWZzLikKICAgICAg Ki8KLSAgICBpZiAoeG10X3ZpZiA8IG51bXZpZnMpIHsKLQlpZiAodmlmdGFibGVbeG10X3ZpZl0u dl9mbGFncyAmIFZJRkZfUkVHSVNURVIpCi0JCXBpbV9yZWdpc3Rlcl9zZW5kKGlwLCB2aWZ0YWJs ZSArIHhtdF92aWYsIG0sIHJ0KTsKKyAgICBpZiAoeG10X3ZpZiA8IFZfbnVtdmlmcykgeworCWlm IChWX3ZpZnRhYmxlW3htdF92aWZdLnZfZmxhZ3MgJiBWSUZGX1JFR0lTVEVSKQorCQlwaW1fcmVn aXN0ZXJfc2VuZChpcCwgVl92aWZ0YWJsZSArIHhtdF92aWYsIG0sIHJ0KTsKIAllbHNlCi0JCXBo eWludF9zZW5kKGlwLCB2aWZ0YWJsZSArIHhtdF92aWYsIG0pOworCQlwaHlpbnRfc2VuZChpcCwg Vl92aWZ0YWJsZSArIHhtdF92aWYsIG0pOwogCXJldHVybiAxOwogICAgIH0KIApAQCAtMTYyMiwx MiArMTcwMywxMiBAQAogICAgICAqIERvbid0IGZvcndhcmQgaWYgaXQgZGlkbid0IGFycml2ZSBm cm9tIHRoZSBwYXJlbnQgdmlmIGZvciBpdHMgb3JpZ2luLgogICAgICAqLwogICAgIHZpZmkgPSBy dC0+bWZjX3BhcmVudDsKLSAgICBpZiAoKHZpZmkgPj0gbnVtdmlmcykgfHwgKHZpZnRhYmxlW3Zp ZmldLnZfaWZwICE9IGlmcCkpIHsKKyAgICBpZiAoKHZpZmkgPj0gVl9udW12aWZzKSB8fCAoVl92 aWZ0YWJsZVt2aWZpXS52X2lmcCAhPSBpZnApKSB7CiAJLyogY2FtZSBpbiB0aGUgd3JvbmcgaW50 ZXJmYWNlICovCi0JaWYgKG1ydGRlYnVnICYgREVCVUdfRk9SV0FSRCkKKwlpZiAoVl9tcnRkZWJ1 ZyAmIERFQlVHX0ZPUldBUkQpCiAJICAgIGxvZyhMT0dfREVCVUcsICJ3cm9uZyBpZjogaWZwICVw IHZpZmkgJWQgdmlmaWZwICVwXG4iLAotCQkodm9pZCAqKWlmcCwgdmlmaSwgKHZvaWQgKil2aWZ0 YWJsZVt2aWZpXS52X2lmcCk7Ci0JKyttcnRzdGF0Lm1ydHNfd3JvbmdfaWY7CisJCSh2b2lkICop aWZwLCB2aWZpLCAodm9pZCAqKVZfdmlmdGFibGVbdmlmaV0udl9pZnApOworCSsrVl9tcnRzdGF0 Lm1ydHNfd3JvbmdfaWY7CiAJKytydC0+bWZjX3dyb25nX2lmOwogCS8qCiAJICogSWYgd2UgYXJl IGRvaW5nIFBJTSBhc3NlcnQgcHJvY2Vzc2luZywgc2VuZCBhIG1lc3NhZ2UKQEAgLTE2MzcsMTcg KzE3MTgsMTggQEAKIAkgKiBjYW4gY29tcGxldGUgdGhlIFNQVCBzd2l0Y2gsIHJlZ2FyZGxlc3Mg b2YgdGhlIHR5cGUKIAkgKiBvZiB0aGUgaWlmIChicm9hZGNhc3QgbWVkaWEsIEdSRSB0dW5uZWws IGV0YykuCiAJICovCi0JaWYgKHBpbV9hc3NlcnQgJiYgKHZpZmkgPCBudW12aWZzKSAmJiB2aWZ0 YWJsZVt2aWZpXS52X2lmcCkgeworCWlmIChWX3BpbV9hc3NlcnQgJiYgKHZpZmkgPCBWX251bXZp ZnMpICYmIFZfdmlmdGFibGVbdmlmaV0udl9pZnApIHsKIAkgICAgc3RydWN0IHRpbWV2YWwgbm93 OwogCSAgICB1X2xvbmcgZGVsdGE7CiAKLQkgICAgaWYgKGlmcCA9PSAmbXVsdGljYXN0X3JlZ2lz dGVyX2lmKQotCQlwaW1zdGF0LnBpbXNfcmN2X3JlZ2lzdGVyc193cm9uZ2lpZisrOworCSAgICBp ZiAoaWZwID09ICZWX211bHRpY2FzdF9yZWdpc3Rlcl9pZikKKwkJVl9waW1zdGF0LnBpbXNfcmN2 X3JlZ2lzdGVyc193cm9uZ2lpZisrOwogCiAJICAgIC8qIEdldCB2aWZpIGZvciB0aGUgaW5jb21p bmcgcGFja2V0ICovCi0JICAgIGZvciAodmlmaT0wOyB2aWZpIDwgbnVtdmlmcyAmJiB2aWZ0YWJs ZVt2aWZpXS52X2lmcCAhPSBpZnA7IHZpZmkrKykKKwkgICAgZm9yICh2aWZpPTA7IHZpZmkgPCBW X251bXZpZnMgJiYgVl92aWZ0YWJsZVt2aWZpXS52X2lmcCAhPSBpZnA7CisJCXZpZmkrKykKIAkJ OwotCSAgICBpZiAodmlmaSA+PSBudW12aWZzKQorCSAgICBpZiAodmlmaSA+PSBWX251bXZpZnMp CiAJCXJldHVybiAwOwkvKiBUaGUgaWlmIGlzIG5vdCBmb3VuZDogaWdub3JlIHRoZSBwYWNrZXQu ICovCiAKIAkgICAgaWYgKHJ0LT5tZmNfZmxhZ3NbdmlmaV0gJiBNUlRfTUZDX0ZMQUdTX0RJU0FC TEVfV1JPTkdWSUYpCkBAIC0xNjc1LDEzICsxNzU3LDEzIEBACiAJCWltLT5pbV9tYnoJCT0gMDsK IAkJaW0tPmltX3ZpZgkJPSB2aWZpOwogCi0JCW1ydHN0YXQubXJ0c191cGNhbGxzKys7CisJCVZf bXJ0c3RhdC5tcnRzX3VwY2FsbHMrKzsKIAogCQlrX2lnbXBzcmMuc2luX2FkZHIgPSBpbS0+aW1f c3JjOwogCQlpZiAoc29ja2V0X3NlbmQoVl9pcF9tcm91dGVyLCBtbSwgJmtfaWdtcHNyYykgPCAw KSB7CiAJCSAgICBsb2coTE9HX1dBUk5JTkcsCiAJCQkiaXBfbWZvcndhcmQ6IGlwX21yb3V0ZXIg c29ja2V0IHF1ZXVlIGZ1bGxcbiIpOwotCQkgICAgKyttcnRzdGF0Lm1ydHNfdXBxX3NvY2tmdWxs OworCQkgICAgKytWX21ydHN0YXQubXJ0c191cHFfc29ja2Z1bGw7CiAJCSAgICByZXR1cm4gRU5P QlVGUzsKIAkJfQogCSAgICB9CkBAIC0xNjkwLDEyICsxNzcyLDEyIEBACiAgICAgfQogCiAgICAg LyogSWYgSSBzb3VyY2VkIHRoaXMgcGFja2V0LCBpdCBjb3VudHMgYXMgb3V0cHV0LCBlbHNlIGl0 IHdhcyBpbnB1dC4gKi8KLSAgICBpZiAoaXAtPmlwX3NyYy5zX2FkZHIgPT0gdmlmdGFibGVbdmlm aV0udl9sY2xfYWRkci5zX2FkZHIpIHsKLQl2aWZ0YWJsZVt2aWZpXS52X3BrdF9vdXQrKzsKLQl2 aWZ0YWJsZVt2aWZpXS52X2J5dGVzX291dCArPSBwbGVuOworICAgIGlmIChpcC0+aXBfc3JjLnNf YWRkciA9PSBWX3ZpZnRhYmxlW3ZpZmldLnZfbGNsX2FkZHIuc19hZGRyKSB7CisJVl92aWZ0YWJs ZVt2aWZpXS52X3BrdF9vdXQrKzsKKwlWX3ZpZnRhYmxlW3ZpZmldLnZfYnl0ZXNfb3V0ICs9IHBs ZW47CiAgICAgfSBlbHNlIHsKLQl2aWZ0YWJsZVt2aWZpXS52X3BrdF9pbisrOwotCXZpZnRhYmxl W3ZpZmldLnZfYnl0ZXNfaW4gKz0gcGxlbjsKKwlWX3ZpZnRhYmxlW3ZpZmldLnZfcGt0X2luKys7 CisJVl92aWZ0YWJsZVt2aWZpXS52X2J5dGVzX2luICs9IHBsZW47CiAgICAgfQogICAgIHJ0LT5t ZmNfcGt0X2NudCsrOwogICAgIHJ0LT5tZmNfYnl0ZV9jbnQgKz0gcGxlbjsKQEAgLTE3MDYsMTQg KzE3ODgsMTQgQEAKICAgICAgKgkJLSB0aGUgdHRsIGV4Y2VlZHMgdGhlIHZpZidzIHRocmVzaG9s ZAogICAgICAqCQktIHRoZXJlIGFyZSBncm91cCBtZW1iZXJzIGRvd25zdHJlYW0gb24gaW50ZXJm YWNlCiAgICAgICovCi0gICAgZm9yICh2aWZpID0gMDsgdmlmaSA8IG51bXZpZnM7IHZpZmkrKykK KyAgICBmb3IgKHZpZmkgPSAwOyB2aWZpIDwgVl9udW12aWZzOyB2aWZpKyspCiAJaWYgKChydC0+ bWZjX3R0bHNbdmlmaV0gPiAwKSAmJiAoaXAtPmlwX3R0bCA+IHJ0LT5tZmNfdHRsc1t2aWZpXSkp IHsKLQkgICAgdmlmdGFibGVbdmlmaV0udl9wa3Rfb3V0Kys7Ci0JICAgIHZpZnRhYmxlW3ZpZmld LnZfYnl0ZXNfb3V0ICs9IHBsZW47Ci0JICAgIGlmICh2aWZ0YWJsZVt2aWZpXS52X2ZsYWdzICYg VklGRl9SRUdJU1RFUikKLQkJcGltX3JlZ2lzdGVyX3NlbmQoaXAsIHZpZnRhYmxlICsgdmlmaSwg bSwgcnQpOworCSAgICBWX3ZpZnRhYmxlW3ZpZmldLnZfcGt0X291dCsrOworCSAgICBWX3ZpZnRh YmxlW3ZpZmldLnZfYnl0ZXNfb3V0ICs9IHBsZW47CisJICAgIGlmIChWX3ZpZnRhYmxlW3ZpZmld LnZfZmxhZ3MgJiBWSUZGX1JFR0lTVEVSKQorCQlwaW1fcmVnaXN0ZXJfc2VuZChpcCwgVl92aWZ0 YWJsZSArIHZpZmksIG0sIHJ0KTsKIAkgICAgZWxzZQotCQlwaHlpbnRfc2VuZChpcCwgdmlmdGFi bGUgKyB2aWZpLCBtKTsKKwkJcGh5aW50X3NlbmQoaXAsIFZfdmlmdGFibGUgKyB2aWZpLCBtKTsK IAl9CiAKICAgICAvKgpAQCAtMTczOCw4ICsxODIwLDkgQEAKIHN0YXRpYyBpbnQKIFhfbGVnYWxf dmlmX251bShpbnQgdmlmKQogeworICAgIElOSVRfVk5FVF9JTkVUKGN1cnZuZXQpOwogICAgIC8q IFhYWCB1bmxvY2tlZCwgbWF0dGVyPyAqLwotICAgIHJldHVybiAodmlmID49IDAgJiYgdmlmIDwg bnVtdmlmcyk7CisgICAgcmV0dXJuICh2aWYgPj0gMCAmJiB2aWYgPCBWX251bXZpZnMpOwogfQog CiAvKgpAQCAtMTc0OCw5ICsxODMxLDEwIEBACiBzdGF0aWMgdV9sb25nCiBYX2lwX21jYXN0X3Ny YyhpbnQgdmlmaSkKIHsKKyAgICBJTklUX1ZORVRfSU5FVChjdXJ2bmV0KTsKICAgICAvKiBYWFgg dW5sb2NrZWQsIG1hdHRlcj8gKi8KLSAgICBpZiAodmlmaSA+PSAwICYmIHZpZmkgPCBudW12aWZz KQotCXJldHVybiB2aWZ0YWJsZVt2aWZpXS52X2xjbF9hZGRyLnNfYWRkcjsKKyAgICBpZiAodmlm aSA+PSAwICYmIHZpZmkgPCBWX251bXZpZnMpCisJcmV0dXJuIFZfdmlmdGFibGVbdmlmaV0udl9s Y2xfYWRkci5zX2FkZHI7CiAgICAgZWxzZQogCXJldHVybiBJTkFERFJfQU5ZOwogfQpAQCAtMTc4 MCw2ICsxODY0LDcgQEAKIHN0YXRpYyB2b2lkCiBzZW5kX3BhY2tldChzdHJ1Y3QgdmlmICp2aWZw LCBzdHJ1Y3QgbWJ1ZiAqbSkKIHsKKwlJTklUX1ZORVRfSU5FVChjdXJ2bmV0KTsKIAlzdHJ1Y3Qg aXBfbW9wdGlvbnMgaW1vOwogCXN0cnVjdCBpbl9tdWx0aSAqaW1tWzJdOwogCWludCBlcnJvcjsK QEAgLTE4MDEsMTYgKzE4ODYsMTYgQEAKIAkgKiB0aGUgbG9vcGJhY2sgaW50ZXJmYWNlLCB0aHVz IHByZXZlbnRpbmcgbG9vcGluZy4KIAkgKi8KIAllcnJvciA9IGlwX291dHB1dChtLCBOVUxMLCAm dmlmcC0+dl9yb3V0ZSwgSVBfRk9SV0FSRElORywgJmltbywgTlVMTCk7Ci0JaWYgKG1ydGRlYnVn ICYgREVCVUdfWE1JVCkgeworCWlmIChWX21ydGRlYnVnICYgREVCVUdfWE1JVCkgewogCSAgICBs b2coTE9HX0RFQlVHLCAicGh5aW50X3NlbmQgb24gdmlmICV0ZCBlcnIgJWRcbiIsCi0JCXZpZnAg LSB2aWZ0YWJsZSwgZXJyb3IpOworCQl2aWZwIC0gVl92aWZ0YWJsZSwgZXJyb3IpOwogCX0KIH0K IAogc3RhdGljIGludAogWF9pcF9yc3ZwX3ZpZihzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNv Y2tvcHQgKnNvcHQpCiB7Ci0gICAgSU5JVF9WTkVUX0lORVQoY3Vydm5ldCk7CisgICAgSU5JVF9W TkVUX0lORVQoc28tPnNvX3ZuZXQpOwogICAgIGludCBlcnJvciwgdmlmaTsKIAogICAgIGlmIChz by0+c29fdHlwZSAhPSBTT0NLX1JBVyB8fCBzby0+c29fcHJvdG8tPnByX3Byb3RvY29sICE9IElQ UFJPVE9fUlNWUCkKQEAgLTE4MjIsMzkgKzE5MDcsMzkgQEAKIAogICAgIFZJRl9MT0NLKCk7CiAK LSAgICBpZiAodmlmaSA8IDAgfHwgdmlmaSA+PSBudW12aWZzKSB7CS8qIEVycm9yIGlmIHZpZiBp cyBpbnZhbGlkICovCisgICAgaWYgKHZpZmkgPCAwIHx8IHZpZmkgPj0gVl9udW12aWZzKSB7CS8q IEVycm9yIGlmIHZpZiBpcyBpbnZhbGlkICovCiAJVklGX1VOTE9DSygpOwogCXJldHVybiBFQURE Uk5PVEFWQUlMOwogICAgIH0KIAogICAgIGlmIChzb3B0LT5zb3B0X25hbWUgPT0gSVBfUlNWUF9W SUZfT04pIHsKIAkvKiBDaGVjayBpZiBzb2NrZXQgaXMgYXZhaWxhYmxlLiAqLwotCWlmICh2aWZ0 YWJsZVt2aWZpXS52X3JzdnBkICE9IE5VTEwpIHsKKwlpZiAoVl92aWZ0YWJsZVt2aWZpXS52X3Jz dnBkICE9IE5VTEwpIHsKIAkgICAgVklGX1VOTE9DSygpOwogCSAgICByZXR1cm4gRUFERFJJTlVT RTsKIAl9CiAKLQl2aWZ0YWJsZVt2aWZpXS52X3JzdnBkID0gc287CisJVl92aWZ0YWJsZVt2aWZp XS52X3JzdnBkID0gc287CiAJLyogVGhpcyBtYXkgc2VlbSBzaWxseSwgYnV0IHdlIG5lZWQgdG8g YmUgc3VyZSB3ZSBkb24ndCBvdmVyLWluY3JlbWVudAogCSAqIHRoZSBSU1ZQIGNvdW50ZXIsIGlu IGNhc2Ugc29tZXRoaW5nIHNsaXBzIHVwLgogCSAqLwotCWlmICghdmlmdGFibGVbdmlmaV0udl9y c3ZwX29uKSB7Ci0JICAgIHZpZnRhYmxlW3ZpZmldLnZfcnN2cF9vbiA9IDE7CisJaWYgKCFWX3Zp ZnRhYmxlW3ZpZmldLnZfcnN2cF9vbikgeworCSAgICBWX3ZpZnRhYmxlW3ZpZmldLnZfcnN2cF9v biA9IDE7CiAJICAgIFZfcnN2cF9vbisrOwogCX0KICAgICB9IGVsc2UgeyAvKiBtdXN0IGJlIFZJ Rl9PRkYgKi8KIAkvKgogCSAqIFhYWCBhcyBhbiBhZGRpdGlvbmFsIGNvbnNpc3RlbmN5IGNoZWNr LCBvbmUgY291bGQgbWFrZSBzdXJlCi0JICogdGhhdCB2aWZ0YWJsZVt2aWZpXS52X3JzdnBkID09 IHNvLCBvdGhlcndpc2UgcGFzc2luZyBzbyBhcworCSAqIHRoYXQgVl92aWZ0YWJsZVt2aWZpXS52 X3JzdnBkID09IHNvLCBvdGhlcndpc2UgcGFzc2luZyBzbyBhcwogCSAqIGZpcnN0IHBhcmFtZXRl ciBpcyBwcmV0dHkgdXNlbGVzcy4KIAkgKi8KLQl2aWZ0YWJsZVt2aWZpXS52X3JzdnBkID0gTlVM TDsKKwlWX3ZpZnRhYmxlW3ZpZmldLnZfcnN2cGQgPSBOVUxMOwogCS8qCiAJICogVGhpcyBtYXkg c2VlbSBzaWxseSwgYnV0IHdlIG5lZWQgdG8gYmUgc3VyZSB3ZSBkb24ndCBvdmVyLWRlY3JlbWVu dAogCSAqIHRoZSBSU1ZQIGNvdW50ZXIsIGluIGNhc2Ugc29tZXRoaW5nIHNsaXBzIHVwLgogCSAq LwotCWlmICh2aWZ0YWJsZVt2aWZpXS52X3JzdnBfb24pIHsKLQkgICAgdmlmdGFibGVbdmlmaV0u dl9yc3ZwX29uID0gMDsKKwlpZiAoVl92aWZ0YWJsZVt2aWZpXS52X3JzdnBfb24pIHsKKwkgICAg Vl92aWZ0YWJsZVt2aWZpXS52X3JzdnBfb24gPSAwOwogCSAgICBWX3JzdnBfb24tLTsKIAl9CiAg ICAgfQpAQCAtMTg2NSw3ICsxOTUwLDcgQEAKIHN0YXRpYyB2b2lkCiBYX2lwX3JzdnBfZm9yY2Vf ZG9uZShzdHJ1Y3Qgc29ja2V0ICpzbykKIHsKLSAgICBJTklUX1ZORVRfSU5FVChjdXJ2bmV0KTsK KyAgICBJTklUX1ZORVRfSU5FVChzby0+c29fdm5ldCk7CiAgICAgaW50IHZpZmk7CiAKICAgICAv KiBEb24ndCBib3RoZXIgaWYgaXQgaXMgbm90IHRoZSByaWdodCB0eXBlIG9mIHNvY2tldC4gKi8K QEAgLTE4NzcsMTQgKzE5NjIsMTQgQEAKICAgICAvKiBUaGUgc29ja2V0IG1heSBiZSBhdHRhY2hl ZCB0byBtb3JlIHRoYW4gb25lIHZpZi4uLnRoaXMKICAgICAgKiBpcyBwZXJmZWN0bHkgbGVnYWwu CiAgICAgICovCi0gICAgZm9yICh2aWZpID0gMDsgdmlmaSA8IG51bXZpZnM7IHZpZmkrKykgewot CWlmICh2aWZ0YWJsZVt2aWZpXS52X3JzdnBkID09IHNvKSB7Ci0JICAgIHZpZnRhYmxlW3ZpZmld LnZfcnN2cGQgPSBOVUxMOworICAgIGZvciAodmlmaSA9IDA7IHZpZmkgPCBWX251bXZpZnM7IHZp ZmkrKykgeworCWlmIChWX3ZpZnRhYmxlW3ZpZmldLnZfcnN2cGQgPT0gc28pIHsKKwkgICAgVl92 aWZ0YWJsZVt2aWZpXS52X3JzdnBkID0gTlVMTDsKIAkgICAgLyogVGhpcyBtYXkgc2VlbSBzaWxs eSwgYnV0IHdlIG5lZWQgdG8gYmUgc3VyZSB3ZSBkb24ndAogCSAgICAgKiBvdmVyLWRlY3JlbWVu dCB0aGUgUlNWUCBjb3VudGVyLCBpbiBjYXNlIHNvbWV0aGluZyBzbGlwcyB1cC4KIAkgICAgICov Ci0JICAgIGlmICh2aWZ0YWJsZVt2aWZpXS52X3JzdnBfb24pIHsKLQkJdmlmdGFibGVbdmlmaV0u dl9yc3ZwX29uID0gMDsKKwkgICAgaWYgKFZfdmlmdGFibGVbdmlmaV0udl9yc3ZwX29uKSB7CisJ CVZfdmlmdGFibGVbdmlmaV0udl9yc3ZwX29uID0gMDsKIAkJVl9yc3ZwX29uLS07CiAJICAgIH0K IAl9CkBAIC0xOTAyLDcgKzE5ODcsNyBAQAogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiByc3ZwX3Ny YyA9IHsgc2l6ZW9mIHJzdnBfc3JjLCBBRl9JTkVUIH07CiAgICAgc3RydWN0IGlmbmV0ICppZnA7 CiAKLSAgICBpZiAocnN2cGRlYnVnKQorICAgIGlmIChWX3JzdnBkZWJ1ZykKIAlwcmludGYoInJz dnBfaW5wdXQ6IHJzdnBfb24gJWRcbiIsIFZfcnN2cF9vbik7CiAKICAgICAvKiBDYW4gc3RpbGwg Z2V0IHBhY2tldHMgd2l0aCByc3ZwX29uID0gMCBpZiB0aGVyZSBpcyBhIGxvY2FsIG1lbWJlcgpA QCAtMTkxNCw3ICsxOTk5LDcgQEAKIAlyZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHJzdnBkZWJ1 ZykKKyAgICBpZiAoVl9yc3ZwZGVidWcpCiAJcHJpbnRmKCJyc3ZwX2lucHV0OiBjaGVjayB2aWZz XG4iKTsKIAogI2lmZGVmIERJQUdOT1NUSUMKQEAgLTE5MjUsMTQgKzIwMTAsMTQgQEAKIAogICAg IFZJRl9MT0NLKCk7CiAgICAgLyogRmluZCB3aGljaCB2aWYgdGhlIHBhY2tldCBhcnJpdmVkIG9u LiAqLwotICAgIGZvciAodmlmaSA9IDA7IHZpZmkgPCBudW12aWZzOyB2aWZpKyspCi0JaWYgKHZp ZnRhYmxlW3ZpZmldLnZfaWZwID09IGlmcCkKKyAgICBmb3IgKHZpZmkgPSAwOyB2aWZpIDwgVl9u dW12aWZzOyB2aWZpKyspCisJaWYgKFZfdmlmdGFibGVbdmlmaV0udl9pZnAgPT0gaWZwKQogCSAg ICBicmVhazsKIAotICAgIGlmICh2aWZpID09IG51bXZpZnMgfHwgdmlmdGFibGVbdmlmaV0udl9y c3ZwZCA9PSBOVUxMKSB7CisgICAgaWYgKHZpZmkgPT0gVl9udW12aWZzIHx8IFZfdmlmdGFibGVb dmlmaV0udl9yc3ZwZCA9PSBOVUxMKSB7CiAJLyoKIAkgKiBEcm9wIHRoZSBsb2NrIGhlcmUgdG8g YXZvaWQgaG9sZGluZyBpdCBhY3Jvc3MgcmlwX2lucHV0LgotCSAqIFRoaXMgY291bGQgbWFrZSBy c3ZwZGVidWcgcHJpbnRmcyB3cm9uZy4gIElmIHlvdSBjYXJlLAorCSAqIFRoaXMgY291bGQgbWFr ZSBWX3JzdnBkZWJ1ZyBwcmludGZzIHdyb25nLiAgSWYgeW91IGNhcmUsCiAJICogcmVjb3JkIHRo ZSBzdGF0ZSBvZiBzdHVmZiBiZWZvcmUgZHJvcHBpbmcgdGhlIGxvY2suCiAJICovCiAJVklGX1VO TE9DSygpOwpAQCAtMTk0MiwxMyArMjAyNywxMyBAQAogCSAqIGlzIG5vIHNwZWNpZmljIHNvY2tl dCBmb3IgdGhpcyB2aWYuCiAJICovCiAJaWYgKFZfaXBfcnN2cGQgIT0gTlVMTCkgewotCSAgICBp ZiAocnN2cGRlYnVnKQorCSAgICBpZiAoVl9yc3ZwZGVidWcpCiAJCXByaW50ZigicnN2cF9pbnB1 dDogU2VuZGluZyBwYWNrZXQgdXAgb2xkLXN0eWxlIHNvY2tldFxuIik7CiAJICAgIHJpcF9pbnB1 dChtLCBvZmYpOyAgLyogeHh4ICovCiAJfSBlbHNlIHsKLQkgICAgaWYgKHJzdnBkZWJ1ZyAmJiB2 aWZpID09IG51bXZpZnMpCisJICAgIGlmIChWX3JzdnBkZWJ1ZyAmJiB2aWZpID09IFZfbnVtdmlm cykKIAkJcHJpbnRmKCJyc3ZwX2lucHV0OiBDYW4ndCBmaW5kIHZpZiBmb3IgcGFja2V0LlxuIik7 Ci0JICAgIGVsc2UgaWYgKHJzdnBkZWJ1ZyAmJiB2aWZ0YWJsZVt2aWZpXS52X3JzdnBkID09IE5V TEwpCisJICAgIGVsc2UgaWYgKFZfcnN2cGRlYnVnICYmIFZfdmlmdGFibGVbdmlmaV0udl9yc3Zw ZCA9PSBOVUxMKQogCQlwcmludGYoInJzdnBfaW5wdXQ6IE5vIHNvY2tldCBkZWZpbmVkIGZvciB2 aWYgJWRcbiIsdmlmaSk7CiAJICAgIG1fZnJlZW0obSk7CiAJfQpAQCAtMTk1NiwxNSArMjA0MSwx NSBAQAogICAgIH0KICAgICByc3ZwX3NyYy5zaW5fYWRkciA9IGlwLT5pcF9zcmM7CiAKLSAgICBp ZiAocnN2cGRlYnVnICYmIG0pCisgICAgaWYgKFZfcnN2cGRlYnVnICYmIG0pCiAJcHJpbnRmKCJy c3ZwX2lucHV0OiBtLT5tX2xlbiA9ICVkLCBzYnNwYWNlKCkgPSAlbGRcbiIsCi0JICAgICAgIG0t Pm1fbGVuLHNic3BhY2UoJih2aWZ0YWJsZVt2aWZpXS52X3JzdnBkLT5zb19yY3YpKSk7CisJICAg ICAgIG0tPm1fbGVuLHNic3BhY2UoJihWX3ZpZnRhYmxlW3ZpZmldLnZfcnN2cGQtPnNvX3Jjdikp KTsKIAotICAgIGlmIChzb2NrZXRfc2VuZCh2aWZ0YWJsZVt2aWZpXS52X3JzdnBkLCBtLCAmcnN2 cF9zcmMpIDwgMCkgewotCWlmIChyc3ZwZGVidWcpCisgICAgaWYgKHNvY2tldF9zZW5kKFZfdmlm dGFibGVbdmlmaV0udl9yc3ZwZCwgbSwgJnJzdnBfc3JjKSA8IDApIHsKKwlpZiAoVl9yc3ZwZGVi dWcpCiAJICAgIHByaW50ZigicnN2cF9pbnB1dDogRmFpbGVkIHRvIGFwcGVuZCB0byBzb2NrZXRc biIpOwogICAgIH0gZWxzZSB7Ci0JaWYgKHJzdnBkZWJ1ZykKKwlpZiAoVl9yc3ZwZGVidWcpCiAJ ICAgIHByaW50ZigicnN2cF9pbnB1dDogc2VuZCBwYWNrZXQgdXBcbiIpOwogICAgIH0KICAgICBW SUZfVU5MT0NLKCk7CkBAIC0yMDA0LDYgKzIwODksNyBAQAogc3RhdGljIGludAogYWRkX2J3X3Vw Y2FsbChzdHJ1Y3QgYndfdXBjYWxsICpyZXEpCiB7CisgICAgSU5JVF9WTkVUX0lORVQoY3Vydm5l dCk7CiAgICAgc3RydWN0IG1mYyAqbWZjOwogICAgIHN0cnVjdCB0aW1ldmFsIGRlbHRhID0geyBC V19VUENBTExfVEhSRVNIT0xEX0lOVEVSVkFMX01JTl9TRUMsCiAJCUJXX1VQQ0FMTF9USFJFU0hP TERfSU5URVJWQUxfTUlOX1VTRUMgfTsKQEAgLTIwMTEsNyArMjA5Nyw3IEBACiAgICAgc3RydWN0 IGJ3X21ldGVyICp4OwogICAgIHVpbnQzMl90IGZsYWdzOwogCi0gICAgaWYgKCEobXJ0X2FwaV9j b25maWcgJiBNUlRfTUZDX0JXX1VQQ0FMTCkpCisgICAgaWYgKCEoVl9tcnRfYXBpX2NvbmZpZyAm IE1SVF9NRkNfQldfVVBDQUxMKSkKIAlyZXR1cm4gRU9QTk9UU1VQUDsKIAogICAgIC8qIFRlc3Qg aWYgdGhlIGZsYWdzIGFyZSB2YWxpZCAqLwpAQCAtMjA5NiwxMCArMjE4MiwxMSBAQAogc3RhdGlj IGludAogZGVsX2J3X3VwY2FsbChzdHJ1Y3QgYndfdXBjYWxsICpyZXEpCiB7CisgICAgSU5JVF9W TkVUX0lORVQoY3Vydm5ldCk7CiAgICAgc3RydWN0IG1mYyAqbWZjOwogICAgIHN0cnVjdCBid19t ZXRlciAqeDsKIAotICAgIGlmICghKG1ydF9hcGlfY29uZmlnICYgTVJUX01GQ19CV19VUENBTEwp KQorICAgIGlmICghKFZfbXJ0X2FwaV9jb25maWcgJiBNUlRfTUZDX0JXX1VQQ0FMTCkpCiAJcmV0 dXJuIEVPUE5PVFNVUFA7CiAKICAgICBNRkNfTE9DSygpOwpAQCAtMjI1Miw2ICsyMzM5LDcgQEAK IHN0YXRpYyB2b2lkCiBid19tZXRlcl9wcmVwYXJlX3VwY2FsbChzdHJ1Y3QgYndfbWV0ZXIgKngs IHN0cnVjdCB0aW1ldmFsICpub3dwKQogeworICAgIElOSVRfVk5FVF9JTkVUKGN1cnZuZXQpOwog ICAgIHN0cnVjdCB0aW1ldmFsIGRlbHRhOwogICAgIHN0cnVjdCBid191cGNhbGwgKnU7CiAKQEAg LTIyNjYsMTMgKzIzNTQsMTMgQEAKICAgICAvKgogICAgICAqIElmIHRoZXJlIGFyZSB0b28gbWFu eSBwZW5kaW5nIHVwY2FsbHMsIGRlbGl2ZXIgdGhlbSBub3cKICAgICAgKi8KLSAgICBpZiAoYndf dXBjYWxsc19uID49IEJXX1VQQ0FMTFNfTUFYKQorICAgIGlmIChWX2J3X3VwY2FsbHNfbiA+PSBC V19VUENBTExTX01BWCkKIAlid191cGNhbGxzX3NlbmQoKTsKIAogICAgIC8qCiAgICAgICogU2V0 IHRoZSBid191cGNhbGwgZW50cnkKICAgICAgKi8KLSAgICB1ID0gJmJ3X3VwY2FsbHNbYndfdXBj YWxsc19uKytdOworICAgIHUgPSAmVl9id191cGNhbGxzW1ZfYndfdXBjYWxsc19uKytdOwogICAg IHUtPmJ1X3NyYyA9IHgtPmJtX21mYy0+bWZjX29yaWdpbjsKICAgICB1LT5idV9kc3QgPSB4LT5i bV9tZmMtPm1mY19tY2FzdGdycDsKICAgICB1LT5idV90aHJlc2hvbGQuYl90aW1lID0geC0+Ym1f dGhyZXNob2xkLmJfdGltZTsKQEAgLTIzMDAsNyArMjM4OCw3IEBACiB7CiAgICAgSU5JVF9WTkVU X0lORVQoY3Vydm5ldCk7CiAgICAgc3RydWN0IG1idWYgKm07Ci0gICAgaW50IGxlbiA9IGJ3X3Vw Y2FsbHNfbiAqIHNpemVvZihid191cGNhbGxzWzBdKTsKKyAgICBpbnQgbGVuID0gVl9id191cGNh bGxzX24gKiBzaXplb2YoVl9id191cGNhbGxzWzBdKTsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4g a19pZ21wc3JjID0geyBzaXplb2Yga19pZ21wc3JjLCBBRl9JTkVUIH07CiAgICAgc3RhdGljIHN0 cnVjdCBpZ21wbXNnIGlnbXBtc2cgPSB7IDAsCQkvKiB1bnVzZWQxICovCiAJCQkJICAgICAgMCwJ CS8qIHVudXNlZDIgKi8KQEAgLTIzMTMsMTAgKzI0MDEsMTAgQEAKIAogICAgIE1GQ19MT0NLX0FT U0VSVCgpOwogCi0gICAgaWYgKGJ3X3VwY2FsbHNfbiA9PSAwKQorICAgIGlmIChWX2J3X3VwY2Fs bHNfbiA9PSAwKQogCXJldHVybjsJCQkvKiBObyBwZW5kaW5nIHVwY2FsbHMgKi8KIAotICAgIGJ3 X3VwY2FsbHNfbiA9IDA7CisgICAgVl9id191cGNhbGxzX24gPSAwOwogCiAgICAgLyoKICAgICAg KiBBbGxvY2F0ZSBhIG5ldyBtYnVmLCBpbml0aWFsaXplIGl0IHdpdGggdGhlIGhlYWRlciBhbmQK QEAgLTIzMzAsMTYgKzI0MTgsMTYgQEAKIAogICAgIG0tPm1fbGVuID0gbS0+bV9wa3RoZHIubGVu ID0gMDsKICAgICBtX2NvcHliYWNrKG0sIDAsIHNpemVvZihzdHJ1Y3QgaWdtcG1zZyksIChjYWRk cl90KSZpZ21wbXNnKTsKLSAgICBtX2NvcHliYWNrKG0sIHNpemVvZihzdHJ1Y3QgaWdtcG1zZyks IGxlbiwgKGNhZGRyX3QpJmJ3X3VwY2FsbHNbMF0pOworICAgIG1fY29weWJhY2sobSwgc2l6ZW9m KHN0cnVjdCBpZ21wbXNnKSwgbGVuLCAoY2FkZHJfdCkmVl9id191cGNhbGxzWzBdKTsKIAogICAg IC8qCiAgICAgICogU2VuZCB0aGUgdXBjYWxscwogICAgICAqIFhYWCBkbyB3ZSBuZWVkIHRvIHNl dCB0aGUgYWRkcmVzcyBpbiBrX2lnbXBzcmMgPwogICAgICAqLwotICAgIG1ydHN0YXQubXJ0c191 cGNhbGxzKys7CisgICAgVl9tcnRzdGF0Lm1ydHNfdXBjYWxscysrOwogICAgIGlmIChzb2NrZXRf c2VuZChWX2lwX21yb3V0ZXIsIG0sICZrX2lnbXBzcmMpIDwgMCkgewogCWxvZyhMT0dfV0FSTklO RywgImJ3X3VwY2FsbHNfc2VuZDogaXBfbXJvdXRlciBzb2NrZXQgcXVldWUgZnVsbFxuIik7Ci0J KyttcnRzdGF0Lm1ydHNfdXBxX3NvY2tmdWxsOworCSsrVl9tcnRzdGF0Lm1ydHNfdXBxX3NvY2tm dWxsOwogICAgIH0KIH0KIApAQCAtMjM2NCw2ICsyNDUyLDcgQEAKIHN0YXRpYyB2b2lkCiBzY2hl ZHVsZV9id19tZXRlcihzdHJ1Y3QgYndfbWV0ZXIgKngsIHN0cnVjdCB0aW1ldmFsICpub3dwKQog eworICAgIElOSVRfVk5FVF9JTkVUKGN1cnZuZXQpOwogICAgIGludCB0aW1lX2hhc2g7CiAKICAg ICBNRkNfTE9DS19BU1NFUlQoKTsKQEAgLTIzODMsOCArMjQ3Miw4IEBACiAgICAgICogQ29tcHV0 ZSB0aGUgdGltZW91dCBoYXNoIHZhbHVlIGFuZCBpbnNlcnQgdGhlIGVudHJ5CiAgICAgICovCiAg ICAgQldfTUVURVJfVElNRUhBU0goeCwgdGltZV9oYXNoKTsKLSAgICB4LT5ibV90aW1lX25leHQg PSBid19tZXRlcl90aW1lcnNbdGltZV9oYXNoXTsKLSAgICBid19tZXRlcl90aW1lcnNbdGltZV9o YXNoXSA9IHg7CisgICAgeC0+Ym1fdGltZV9uZXh0ID0gVl9id19tZXRlcl90aW1lcnNbdGltZV9o YXNoXTsKKyAgICBWX2J3X21ldGVyX3RpbWVyc1t0aW1lX2hhc2hdID0geDsKICAgICB4LT5ibV90 aW1lX2hhc2ggPSB0aW1lX2hhc2g7CiB9CiAKQEAgLTIzOTUsNiArMjQ4NCw3IEBACiBzdGF0aWMg dm9pZAogdW5zY2hlZHVsZV9id19tZXRlcihzdHJ1Y3QgYndfbWV0ZXIgKngpCiB7CisgICAgSU5J VF9WTkVUX0lORVQoY3Vydm5ldCk7CiAgICAgaW50IHRpbWVfaGFzaDsKICAgICBzdHJ1Y3QgYndf bWV0ZXIgKnByZXYsICp0bXA7CiAKQEAgLTI0MTAsNyArMjUwMCw3IEBACiAgICAgaWYgKHRpbWVf aGFzaCA+PSBCV19NRVRFUl9CVUNLRVRTKQogCXJldHVybjsJCS8qIEVudHJ5IHdhcyBub3Qgc2No ZWR1bGVkICovCiAKLSAgICBmb3IgKHByZXYgPSBOVUxMLCB0bXAgPSBid19tZXRlcl90aW1lcnNb dGltZV9oYXNoXTsKKyAgICBmb3IgKHByZXYgPSBOVUxMLCB0bXAgPSBWX2J3X21ldGVyX3RpbWVy c1t0aW1lX2hhc2hdOwogCSAgICAgdG1wICE9IE5VTEw7IHByZXYgPSB0bXAsIHRtcCA9IHRtcC0+ Ym1fdGltZV9uZXh0KQogCWlmICh0bXAgPT0geCkKIAkgICAgYnJlYWs7CkBAIC0yNDIxLDcgKzI1 MTEsNyBAQAogICAgIGlmIChwcmV2ICE9IE5VTEwpCiAJcHJldi0+Ym1fdGltZV9uZXh0ID0geC0+ Ym1fdGltZV9uZXh0OwogICAgIGVsc2UKLQlid19tZXRlcl90aW1lcnNbdGltZV9oYXNoXSA9IHgt PmJtX3RpbWVfbmV4dDsKKwlWX2J3X21ldGVyX3RpbWVyc1t0aW1lX2hhc2hdID0geC0+Ym1fdGlt ZV9uZXh0OwogCiAgICAgeC0+Ym1fdGltZV9uZXh0ID0gTlVMTDsKICAgICB4LT5ibV90aW1lX2hh c2ggPSBCV19NRVRFUl9CVUNLRVRTOwpAQCAtMjQ0MCw2ICsyNTMwLDcgQEAKIHN0YXRpYyB2b2lk CiBid19tZXRlcl9wcm9jZXNzKCkKIHsKKyAgICBJTklUX1ZORVRfSU5FVChjdXJ2bmV0KTsKICAg ICBzdGF0aWMgdWludDMyX3QgbGFzdF90dl9zZWM7CS8qIGxhc3QgdGltZSB3ZSBwcm9jZXNzZWQg dGhpcyAqLwogCiAgICAgdWludDMyX3QgbG9vcHM7CkBAIC0yNDY4LDggKzI1NTksOCBAQAogCSAg ICBpID0gMDsKIAogCS8qIERpc2Nvbm5lY3QgdGhlIGxpc3Qgb2YgYndfbWV0ZXIgZW50cmllcyBm cm9tIHRoZSBiaW4gKi8KLQl0bXBfbGlzdCA9IGJ3X21ldGVyX3RpbWVyc1tpXTsKLQlid19tZXRl cl90aW1lcnNbaV0gPSBOVUxMOworCXRtcF9saXN0ID0gVl9id19tZXRlcl90aW1lcnNbaV07CisJ Vl9id19tZXRlcl90aW1lcnNbaV0gPSBOVUxMOwogCiAJLyogUHJvY2VzcyB0aGUgbGlzdCBvZiBi d19tZXRlciBlbnRyaWVzICovCiAJd2hpbGUgKHRtcF9saXN0ICE9IE5VTEwpIHsKQEAgLTI0OTIs OCArMjU4Myw4IEBACiAJCSAgICBpZiAoKyt0aW1lX2hhc2ggPj0gQldfTUVURVJfQlVDS0VUUykK IAkJCXRpbWVfaGFzaCA9IDA7CiAJCX0KLQkJeC0+Ym1fdGltZV9uZXh0ID0gYndfbWV0ZXJfdGlt ZXJzW3RpbWVfaGFzaF07Ci0JCWJ3X21ldGVyX3RpbWVyc1t0aW1lX2hhc2hdID0geDsKKwkJeC0+ Ym1fdGltZV9uZXh0ID0gVl9id19tZXRlcl90aW1lcnNbdGltZV9oYXNoXTsKKwkJVl9id19tZXRl cl90aW1lcnNbdGltZV9oYXNoXSA9IHg7CiAJCXgtPmJtX3RpbWVfaGFzaCA9IHRpbWVfaGFzaDsK IAogCQljb250aW51ZTsKQEAgLTI1MzAsMTEgKzI2MjEsMTIgQEAKIGV4cGlyZV9id191cGNhbGxz X3NlbmQodm9pZCAqdW51c2VkKQogewogICAgIE1GQ19MT0NLKCk7CisgICAgVk5FVF9JVEVSTE9P UF9CRUdJTigpOwogICAgIGJ3X3VwY2FsbHNfc2VuZCgpOwotICAgIE1GQ19VTkxPQ0soKTsKLQor ICAgIFZORVRfSVRFUkxPT1BfRU5EKCk7CiAgICAgY2FsbG91dF9yZXNldCgmYndfdXBjYWxsc19j aCwgQldfVVBDQUxMU19QRVJJT0QsCiAJZXhwaXJlX2J3X3VwY2FsbHNfc2VuZCwgTlVMTCk7Cisg ICAgTUZDX1VOTE9DSygpOwogfQogCiAvKgpAQCAtMjU0NCw4ICsyNjM2LDExIEBACiBzdGF0aWMg dm9pZAogZXhwaXJlX2J3X21ldGVyX3Byb2Nlc3Modm9pZCAqdW51c2VkKQogewotICAgIGlmICht cnRfYXBpX2NvbmZpZyAmIE1SVF9NRkNfQldfVVBDQUxMKQorICAgIFZORVRfSVRFUkxPT1BfQkVH SU4oKTsKKyAgICBJTklUX1ZORVRfSU5FVChjdXJ2bmV0KTsKKyAgICBpZiAoVl9tcnRfYXBpX2Nv bmZpZyAmIE1SVF9NRkNfQldfVVBDQUxMKQogCWJ3X21ldGVyX3Byb2Nlc3MoKTsKKyAgICBWTkVU X0lURVJMT09QX0VORCgpOwogCiAgICAgY2FsbG91dF9yZXNldCgmYndfbWV0ZXJfY2gsIEJXX01F VEVSX1BFUklPRCwgZXhwaXJlX2J3X21ldGVyX3Byb2Nlc3MsIE5VTEwpOwogfQpAQCAtMjU2Miwx NiArMjY1NywxNyBAQAogcGltX3JlZ2lzdGVyX3NlbmQoc3RydWN0IGlwICppcCwgc3RydWN0IHZp ZiAqdmlmcCwgc3RydWN0IG1idWYgKm0sCiAgICAgc3RydWN0IG1mYyAqcnQpCiB7CisgICAgSU5J VF9WTkVUX0lORVQoY3Vydm5ldCk7CiAgICAgc3RydWN0IG1idWYgKm1iX2NvcHksICptbTsKIAot ICAgIGlmIChtcnRkZWJ1ZyAmIERFQlVHX1BJTSkKKyAgICBpZiAoVl9tcnRkZWJ1ZyAmIERFQlVH X1BJTSkKIAlsb2coTE9HX0RFQlVHLCAicGltX3JlZ2lzdGVyX3NlbmQ6ICIpOwogCiAgICAgLyoK ICAgICAgKiBEbyBub3Qgc2VuZCBJR01QX1dIT0xFUEtUIG5vdGlmaWNhdGlvbnMgdG8gdXNlcmxh bmQsIGlmIHRoZQogICAgICAqIHJlbmRlenZvdXMgcG9pbnQgd2FzIHVuc3BlY2lmaWVkLCBhbmQg d2Ugd2VyZSB0b2xkIG5vdCB0by4KICAgICAgKi8KLSAgICBpZiAocGltX3NxdWVsY2hfd2hvbGVw a3QgIT0gMCAmJiAobXJ0X2FwaV9jb25maWcgJiBNUlRfTUZDX1JQKSAmJgorICAgIGlmIChwaW1f c3F1ZWxjaF93aG9sZXBrdCAhPSAwICYmIChWX21ydF9hcGlfY29uZmlnICYgTVJUX01GQ19SUCkg JiYKIAkocnQtPm1mY19ycC5zX2FkZHIgPT0gSU5BRERSX0FOWSkpCiAJcmV0dXJuIDA7CiAKQEAg LTI1ODksNyArMjY4NSw3IEBACiAJbW0gPSBtX3B1bGx1cChtbSwgc2l6ZW9mKHN0cnVjdCBpcCkp OwogCWlmIChtbSAhPSBOVUxMKSB7CiAJICAgIGlwID0gbXRvZChtbSwgc3RydWN0IGlwICopOwot CSAgICBpZiAoKG1ydF9hcGlfY29uZmlnICYgTVJUX01GQ19SUCkgJiYKKwkgICAgaWYgKChWX21y dF9hcGlfY29uZmlnICYgTVJUX01GQ19SUCkgJiYKIAkJKHJ0LT5tZmNfcnAuc19hZGRyICE9IElO QUREUl9BTlkpKSB7CiAJCXBpbV9yZWdpc3Rlcl9zZW5kX3JwKGlwLCB2aWZwLCBtbSwgcnQpOwog CSAgICB9IGVsc2UgewpAQCAtMjY4NCwyNSArMjc4MCwyNSBAQAogICAgIGltID0gbXRvZChtYl9m aXJzdCwgc3RydWN0IGlnbXBtc2cgKik7CiAgICAgaW0tPmltX21zZ3R5cGUJPSBJR01QTVNHX1dI T0xFUEtUOwogICAgIGltLT5pbV9tYnoJCT0gMDsKLSAgICBpbS0+aW1fdmlmCQk9IHZpZnAgLSB2 aWZ0YWJsZTsKKyAgICBpbS0+aW1fdmlmCQk9IHZpZnAgLSBWX3ZpZnRhYmxlOwogICAgIGltLT5p bV9zcmMJCT0gaXAtPmlwX3NyYzsKICAgICBpbS0+aW1fZHN0CQk9IGlwLT5pcF9kc3Q7CiAKICAg ICBrX2lnbXBzcmMuc2luX2FkZHIJPSBpcC0+aXBfc3JjOwogCi0gICAgbXJ0c3RhdC5tcnRzX3Vw Y2FsbHMrKzsKKyAgICBWX21ydHN0YXQubXJ0c191cGNhbGxzKys7CiAKICAgICBpZiAoc29ja2V0 X3NlbmQoVl9pcF9tcm91dGVyLCBtYl9maXJzdCwgJmtfaWdtcHNyYykgPCAwKSB7Ci0JaWYgKG1y dGRlYnVnICYgREVCVUdfUElNKQorCWlmIChWX21ydGRlYnVnICYgREVCVUdfUElNKQogCSAgICBs b2coTE9HX1dBUk5JTkcsCiAJCSJtY2FzdDogcGltX3JlZ2lzdGVyX3NlbmRfdXBjYWxsOiBpcF9t cm91dGVyIHNvY2tldCBxdWV1ZSBmdWxsIik7Ci0JKyttcnRzdGF0Lm1ydHNfdXBxX3NvY2tmdWxs OworCSsrVl9tcnRzdGF0Lm1ydHNfdXBxX3NvY2tmdWxsOwogCXJldHVybiBFTk9CVUZTOwogICAg IH0KIAogICAgIC8qIEtlZXAgc3RhdGlzdGljcyAqLwotICAgIHBpbXN0YXQucGltc19zbmRfcmVn aXN0ZXJzX21zZ3MrKzsKLSAgICBwaW1zdGF0LnBpbXNfc25kX3JlZ2lzdGVyc19ieXRlcyArPSBs ZW47CisgICAgVl9waW1zdGF0LnBpbXNfc25kX3JlZ2lzdGVyc19tc2dzKys7CisgICAgVl9waW1z dGF0LnBpbXNfc25kX3JlZ2lzdGVyc19ieXRlcyArPSBsZW47CiAKICAgICByZXR1cm4gMDsKIH0K QEAgLTI3MjMsNyArMjgxOSw3IEBACiAKICAgICBWSUZfTE9DS19BU1NFUlQoKTsKIAotICAgIGlm ICgodmlmaSA+PSBudW12aWZzKSB8fCAodmlmdGFibGVbdmlmaV0udl9sY2xfYWRkci5zX2FkZHIg PT0gMCkpIHsKKyAgICBpZiAoKHZpZmkgPj0gVl9udW12aWZzKSB8fCAoVl92aWZ0YWJsZVt2aWZp XS52X2xjbF9hZGRyLnNfYWRkciA9PSAwKSkgewogCW1fZnJlZW0obWJfY29weSk7CiAJcmV0dXJu IEVBRERSTk9UQVZBSUw7CQkvKiBUaGUgaWlmIHZpZiBpcyBpbnZhbGlkICovCiAgICAgfQpAQCAt Mjc0OSw3ICsyODQ1LDcgQEAKICAgICAqaXBfb3V0ZXIgPSBwaW1fZW5jYXBfaXBoZHI7CiAgICAg aXBfb3V0ZXItPmlwX2lkID0gaXBfbmV3aWQoKTsKICAgICBpcF9vdXRlci0+aXBfbGVuID0gbGVu ICsgc2l6ZW9mKHBpbV9lbmNhcF9pcGhkcikgKyBzaXplb2YocGltX2VuY2FwX3BpbWhkcik7Ci0g ICAgaXBfb3V0ZXItPmlwX3NyYyA9IHZpZnRhYmxlW3ZpZmldLnZfbGNsX2FkZHI7CisgICAgaXBf b3V0ZXItPmlwX3NyYyA9IFZfdmlmdGFibGVbdmlmaV0udl9sY2xfYWRkcjsKICAgICBpcF9vdXRl ci0+aXBfZHN0ID0gcnQtPm1mY19ycDsKICAgICAvKgogICAgICAqIENvcHkgdGhlIGlubmVyIGhl YWRlciBUT1MgdG8gdGhlIG91dGVyIGhlYWRlciwgYW5kIHRha2UgY2FyZSBvZiB0aGUKQEAgLTI3 NjIsNyArMjg1OCw3IEBACiAJCQkJCSArIHNpemVvZihwaW1fZW5jYXBfaXBoZHIpKTsKICAgICAq cGltaGRyID0gcGltX2VuY2FwX3BpbWhkcjsKICAgICAvKiBJZiB0aGUgaWlmIGNyb3NzZXMgYSBi b3JkZXIsIHNldCB0aGUgQm9yZGVyLWJpdCAqLwotICAgIGlmIChydC0+bWZjX2ZsYWdzW3ZpZmld ICYgTVJUX01GQ19GTEFHU19CT1JERVJfVklGICYgbXJ0X2FwaV9jb25maWcpCisgICAgaWYgKHJ0 LT5tZmNfZmxhZ3NbdmlmaV0gJiBNUlRfTUZDX0ZMQUdTX0JPUkRFUl9WSUYgJiBWX21ydF9hcGlf Y29uZmlnKQogCXBpbWhkci0+ZmxhZ3MgfD0gaHRvbmwoUElNX0JPUkRFUl9SRUdJU1RFUik7CiAK ICAgICBtYl9maXJzdC0+bV9kYXRhICs9IHNpemVvZihwaW1fZW5jYXBfaXBoZHIpOwpAQCAtMjc3 Miw4ICsyODY4LDggQEAKICAgICBzZW5kX3BhY2tldCh2aWZwLCBtYl9maXJzdCk7CiAKICAgICAv KiBLZWVwIHN0YXRpc3RpY3MgKi8KLSAgICBwaW1zdGF0LnBpbXNfc25kX3JlZ2lzdGVyc19tc2dz Kys7Ci0gICAgcGltc3RhdC5waW1zX3NuZF9yZWdpc3RlcnNfYnl0ZXMgKz0gbGVuOworICAgIFZf cGltc3RhdC5waW1zX3NuZF9yZWdpc3RlcnNfbXNncysrOworICAgIFZfcGltc3RhdC5waW1zX3Nu ZF9yZWdpc3RlcnNfYnl0ZXMgKz0gbGVuOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yODA3LDYg KzI5MDMsNyBAQAogdm9pZAogcGltX2lucHV0KHN0cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogewor ICAgIElOSVRfVk5FVF9JTkVUKGN1cnZuZXQpOwogICAgIHN0cnVjdCBpcCAqaXAgPSBtdG9kKG0s IHN0cnVjdCBpcCAqKTsKICAgICBzdHJ1Y3QgcGltICpwaW07CiAgICAgaW50IG1pbmxlbjsKQEAg LTI4MTUsMTQgKzI5MTIsMTQgQEAKICAgICBpbnQgaXBobGVuID0gb2ZmOwogCiAgICAgLyogS2Vl cCBzdGF0aXN0aWNzICovCi0gICAgcGltc3RhdC5waW1zX3Jjdl90b3RhbF9tc2dzKys7Ci0gICAg cGltc3RhdC5waW1zX3Jjdl90b3RhbF9ieXRlcyArPSBkYXRhbGVuOworICAgIFZfcGltc3RhdC5w aW1zX3Jjdl90b3RhbF9tc2dzKys7CisgICAgVl9waW1zdGF0LnBpbXNfcmN2X3RvdGFsX2J5dGVz ICs9IGRhdGFsZW47CiAKICAgICAvKgogICAgICAqIFZhbGlkYXRlIGxlbmd0aHMKICAgICAgKi8K ICAgICBpZiAoZGF0YWxlbiA8IFBJTV9NSU5MRU4pIHsKLQlwaW1zdGF0LnBpbXNfcmN2X3Rvb3No b3J0Kys7CisJVl9waW1zdGF0LnBpbXNfcmN2X3Rvb3Nob3J0Kys7CiAJbG9nKExPR19FUlIsICJw aW1faW5wdXQ6IHBhY2tldCBzaXplIHRvbyBzbWFsbCAlZCBmcm9tICVseFxuIiwKIAkgICAgZGF0 YWxlbiwgKHVfbG9uZylpcC0+aXBfc3JjLnNfYWRkcik7CiAJbV9mcmVlbShtKTsKQEAgLTI4NjYs OCArMjk2Myw4IEBACiAgICAgaWYgKFBJTV9WVF9UKHBpbS0+cGltX3Z0KSA9PSBQSU1fUkVHSVNU RVIgJiYgaW5fY2tzdW0obSwgUElNX01JTkxFTikgPT0gMCkgewogCS8qIGRvIG5vdGhpbmcsIGNo ZWNrc3VtIG9rYXkgKi8KICAgICB9IGVsc2UgaWYgKGluX2Nrc3VtKG0sIGRhdGFsZW4pKSB7Ci0J cGltc3RhdC5waW1zX3Jjdl9iYWRzdW0rKzsKLQlpZiAobXJ0ZGVidWcgJiBERUJVR19QSU0pCisJ Vl9waW1zdGF0LnBpbXNfcmN2X2JhZHN1bSsrOworCWlmIChWX21ydGRlYnVnICYgREVCVUdfUElN KQogCSAgICBsb2coTE9HX0RFQlVHLCAicGltX2lucHV0OiBpbnZhbGlkIGNoZWNrc3VtIik7CiAJ bV9mcmVlbShtKTsKIAlyZXR1cm47CkBAIC0yODc1LDcgKzI5NzIsNyBAQAogCiAgICAgLyogUElN IHZlcnNpb24gY2hlY2sgKi8KICAgICBpZiAoUElNX1ZUX1YocGltLT5waW1fdnQpIDwgUElNX1ZF UlNJT04pIHsKLQlwaW1zdGF0LnBpbXNfcmN2X2JhZHZlcnNpb24rKzsKKwlWX3BpbXN0YXQucGlt c19yY3ZfYmFkdmVyc2lvbisrOwogCWxvZyhMT0dfRVJSLCAicGltX2lucHV0OiBpbmNvcnJlY3Qg dmVyc2lvbiAlZCwgZXhwZWN0aW5nICVkXG4iLAogCSAgICBQSU1fVlRfVihwaW0tPnBpbV92dCks IFBJTV9WRVJTSU9OKTsKIAltX2ZyZWVtKG0pOwpAQCAtMjg5OSwyNCArMjk5NiwyNCBAQAogCXN0 cnVjdCBpZm5ldCAqdmlmcDsKIAogCVZJRl9MT0NLKCk7Ci0JaWYgKChyZWdfdmlmX251bSA+PSBu dW12aWZzKSB8fCAocmVnX3ZpZl9udW0gPT0gVklGSV9JTlZBTElEKSkgeworCWlmICgoVl9yZWdf dmlmX251bSA+PSBWX251bXZpZnMpIHx8IChWX3JlZ192aWZfbnVtID09IFZJRklfSU5WQUxJRCkp IHsKIAkgICAgVklGX1VOTE9DSygpOwotCSAgICBpZiAobXJ0ZGVidWcgJiBERUJVR19QSU0pCisJ ICAgIGlmIChWX21ydGRlYnVnICYgREVCVUdfUElNKQogCQlsb2coTE9HX0RFQlVHLAotCQkgICAg InBpbV9pbnB1dDogcmVnaXN0ZXIgdmlmIG5vdCBzZXQ6ICVkXG4iLCByZWdfdmlmX251bSk7CisJ CSAgICAicGltX2lucHV0OiByZWdpc3RlciB2aWYgbm90IHNldDogJWRcbiIsIFZfcmVnX3ZpZl9u dW0pOwogCSAgICBtX2ZyZWVtKG0pOwogCSAgICByZXR1cm47CiAJfQogCS8qIFhYWCBuZWVkIHJl ZmNudD8gKi8KLQl2aWZwID0gdmlmdGFibGVbcmVnX3ZpZl9udW1dLnZfaWZwOworCXZpZnAgPSBW X3ZpZnRhYmxlW1ZfcmVnX3ZpZl9udW1dLnZfaWZwOwogCVZJRl9VTkxPQ0soKTsKIAogCS8qCiAJ ICogVmFsaWRhdGUgbGVuZ3RoCiAJICovCiAJaWYgKGRhdGFsZW4gPCBQSU1fUkVHX01JTkxFTikg ewotCSAgICBwaW1zdGF0LnBpbXNfcmN2X3Rvb3Nob3J0Kys7Ci0JICAgIHBpbXN0YXQucGltc19y Y3ZfYmFkcmVnaXN0ZXJzKys7CisJICAgIFZfcGltc3RhdC5waW1zX3Jjdl90b29zaG9ydCsrOwor CSAgICBWX3BpbXN0YXQucGltc19yY3ZfYmFkcmVnaXN0ZXJzKys7CiAJICAgIGxvZyhMT0dfRVJS LAogCQkicGltX2lucHV0OiByZWdpc3RlciBwYWNrZXQgc2l6ZSB0b28gc21hbGwgJWQgZnJvbSAl bHhcbiIsCiAJCWRhdGFsZW4sICh1X2xvbmcpaXAtPmlwX3NyYy5zX2FkZHIpOwpAQCAtMjkyNyw3 ICszMDI0LDcgQEAKIAlyZWdoZHIgPSAodV9pbnQzMl90ICopKHBpbSArIDEpOwogCWVuY2FwX2lw ID0gKHN0cnVjdCBpcCAqKShyZWdoZHIgKyAxKTsKIAotCWlmIChtcnRkZWJ1ZyAmIERFQlVHX1BJ TSkgeworCWlmIChWX21ydGRlYnVnICYgREVCVUdfUElNKSB7CiAJICAgIGxvZyhMT0dfREVCVUcs CiAJCSJwaW1faW5wdXRbcmVnaXN0ZXJdLCBlbmNhcF9pcDogJWx4IC0+ICVseCwgZW5jYXBfaXAg bGVuICVkXG4iLAogCQkodV9sb25nKW50b2hsKGVuY2FwX2lwLT5pcF9zcmMuc19hZGRyKSwKQEAg LTI5MzcsOCArMzAzNCw4IEBACiAKIAkvKiB2ZXJpZnkgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRo ZSBpbm5lciBwYWNrZXQgKi8KIAlpZiAoZW5jYXBfaXAtPmlwX3YgIT0gSVBWRVJTSU9OKSB7Ci0J ICAgIHBpbXN0YXQucGltc19yY3ZfYmFkcmVnaXN0ZXJzKys7Ci0JICAgIGlmIChtcnRkZWJ1ZyAm IERFQlVHX1BJTSkgeworCSAgICBWX3BpbXN0YXQucGltc19yY3ZfYmFkcmVnaXN0ZXJzKys7CisJ ICAgIGlmIChWX21ydGRlYnVnICYgREVCVUdfUElNKSB7CiAJCWxvZyhMT0dfREVCVUcsICJwaW1f aW5wdXQ6IGludmFsaWQgSVAgdmVyc2lvbiAoJWQpICIKIAkJICAgICJvZiB0aGUgaW5uZXIgcGFj a2V0XG4iLCBlbmNhcF9pcC0+aXBfdik7CiAJICAgIH0KQEAgLTI5NDgsOCArMzA0NSw4IEBACiAK IAkvKiB2ZXJpZnkgdGhlIGlubmVyIHBhY2tldCBpcyBkZXN0aW5lZCB0byBhIG1jYXN0IGdyb3Vw ICovCiAJaWYgKCFJTl9NVUxUSUNBU1QobnRvaGwoZW5jYXBfaXAtPmlwX2RzdC5zX2FkZHIpKSkg ewotCSAgICBwaW1zdGF0LnBpbXNfcmN2X2JhZHJlZ2lzdGVycysrOwotCSAgICBpZiAobXJ0ZGVi dWcgJiBERUJVR19QSU0pCisJICAgIFZfcGltc3RhdC5waW1zX3Jjdl9iYWRyZWdpc3RlcnMrKzsK KwkgICAgaWYgKFZfbXJ0ZGVidWcgJiBERUJVR19QSU0pCiAJCWxvZyhMT0dfREVCVUcsCiAJCSAg ICAicGltX2lucHV0OiBpbm5lciBwYWNrZXQgb2YgcmVnaXN0ZXIgaXMgbm90ICIKIAkJICAgICJt dWx0aWNhc3QgJWx4XG4iLApAQCAtMzAwMCwyMSArMzA5NywyMSBAQAogCiAJLyogS2VlcCBzdGF0 aXN0aWNzICovCiAJLyogWFhYOiByZWdpc3RlcnNfYnl0ZXMgaW5jbHVkZSBvbmx5IHRoZSBlbmNh cC4gbWNhc3QgcGt0ICovCi0JcGltc3RhdC5waW1zX3Jjdl9yZWdpc3RlcnNfbXNncysrOwotCXBp bXN0YXQucGltc19yY3ZfcmVnaXN0ZXJzX2J5dGVzICs9IG50b2hzKGVuY2FwX2lwLT5pcF9sZW4p OworCVZfcGltc3RhdC5waW1zX3Jjdl9yZWdpc3RlcnNfbXNncysrOworCVZfcGltc3RhdC5waW1z X3Jjdl9yZWdpc3RlcnNfYnl0ZXMgKz0gbnRvaHMoZW5jYXBfaXAtPmlwX2xlbik7CiAKIAkvKgog CSAqIGZvcndhcmQgdGhlIGlubmVyIGlwIHBhY2tldDsgcG9pbnQgbV9kYXRhIGF0IHRoZSBpbm5l ciBpcC4KIAkgKi8KIAltX2FkaihtLCBpcGhsZW4gKyBQSU1fTUlOTEVOKTsKIAotCWlmIChtcnRk ZWJ1ZyAmIERFQlVHX1BJTSkgeworCWlmIChWX21ydGRlYnVnICYgREVCVUdfUElNKSB7CiAJICAg IGxvZyhMT0dfREVCVUcsCiAJCSJwaW1faW5wdXQ6IGZvcndhcmRpbmcgZGVjYXBzdWxhdGVkIHJl Z2lzdGVyOiAiCiAJCSJzcmMgJWx4LCBkc3QgJWx4LCB2aWYgJWRcbiIsCiAJCSh1X2xvbmcpbnRv aGwoZW5jYXBfaXAtPmlwX3NyYy5zX2FkZHIpLAogCQkodV9sb25nKW50b2hsKGVuY2FwX2lwLT5p cF9kc3Quc19hZGRyKSwKLQkJcmVnX3ZpZl9udW0pOworCQlWX3JlZ192aWZfbnVtKTsKIAl9CiAJ LyogTkI6IHZpZnAgd2FzIGNvbGxlY3RlZCBhYm92ZTsgY2FuIGl0IGNoYW5nZSBvbiB1cz8gKi8K IAlpZl9zaW1sb29wKHZpZnAsIG0sIGRzdC5zaW5fZmFtaWx5LCAwKTsKQEAgLTMwMzcsNiArMzEz NCwxNCBAQAogICAgIHJldHVybjsKIH0KIAorI2lmZGVmIFZJTUFHRQordm9pZCAKK2lwX21yb3V0 ZXJfZGVzdHJveSgpCit7CisJWF9pcF9tcm91dGVyX2RvbmUoKTsKK30KKyNlbmRpZiAvKiBWSU1B R0UgKi8KKwogLyoKICAqIFhYWDogVGhpcyBpcyBjb21tb24gY29kZSBmb3IgZGVhbGluZyB3aXRo IGluaXRpYWxpemF0aW9uIGZvciBib3RoCiAgKiB0aGUgSVB2NCBhbmQgSVB2NiBtdWx0aWNhc3Qg Zm9yd2FyZGluZyBwYXRocy4gSXQgY291bGQgZG8gd2l0aCBjbGVhbnVwLgpAQCAtMzA0Nyw5ICsz MTUyLDE1IEBACiAgICAgSU5JVF9WTkVUX0lORVQoY3Vydm5ldCk7CiAgICAgc3dpdGNoICh0eXBl KSB7CiAgICAgY2FzZSBNT0RfTE9BRDoKLQlNUk9VVEVSX0xPQ0tfSU5JVCgpOwotCU1GQ19MT0NL X0lOSVQoKTsKLQlWSUZfTE9DS19JTklUKCk7CisjaWZkZWYgVklNQUdFCisJaWYgKElTX0RFRkFV TFRfVk5FVChjdXJ2bmV0KSkgeworI2VuZGlmIC8qIFZJTUFHRSAqLworCSAgICBNUk9VVEVSX0xP Q0tfSU5JVCgpOworCSAgICBNRkNfTE9DS19JTklUKCk7CisJICAgIFZJRl9MT0NLX0lOSVQoKTsK KyNpZmRlZiBWSU1BR0UKKwl9CisjZW5kaWYgLyogVklNQUdFICovCiAJaXBfbXJvdXRlcl9yZXNl dCgpOwogCVRVTkFCTEVfVUxPTkdfRkVUQ0goIm5ldC5pbmV0LnBpbS5zcXVlbGNoX3dob2xlcGt0 IiwKIAkgICAgJnBpbV9zcXVlbGNoX3dob2xlcGt0KTsKQEAgLTMwNTgsOSArMzE2OSwxNSBAQAog CSAgICBwaW1fZW5jYXBjaGVjaywgJmluX3BpbV9wcm90b3N3LCBOVUxMKTsKIAlpZiAocGltX2Vu Y2FwX2Nvb2tpZSA9PSBOVUxMKSB7CiAJCXByaW50ZigiaXBfbXJvdXRlOiB1bmFibGUgdG8gYXR0 YWNoIHBpbSBlbmNhcFxuIik7Ci0JCVZJRl9MT0NLX0RFU1RST1koKTsKLQkJTUZDX0xPQ0tfREVT VFJPWSgpOwotCQlNUk9VVEVSX0xPQ0tfREVTVFJPWSgpOworI2lmZGVmIFZJTUFHRQorCQlpZiAo SVNfREVGQVVMVF9WTkVUKGN1cnZuZXQpKSB7CisjZW5kaWYgLyogVklNQUdFICovCisJCSAgICBW SUZfTE9DS19ERVNUUk9ZKCk7CisJCSAgICBNRkNfTE9DS19ERVNUUk9ZKCk7CisJCSAgICBNUk9V VEVSX0xPQ0tfREVTVFJPWSgpOworI2lmZGVmIFZJTUFHRQorCQl9CisjZW5kaWYgLyogVklNQUdF ICovCiAJCXJldHVybiAoRUlOVkFMKTsKIAl9CiAKQEAgLTMwNzMsOSArMzE5MCwxNSBAQAogCQkg ICAgZW5jYXBfZGV0YWNoKHBpbV9lbmNhcF9jb29raWUpOwogCQkgICAgcGltX2VuY2FwX2Nvb2tp ZSA9IE5VTEw7CiAJCX0KLQkJVklGX0xPQ0tfREVTVFJPWSgpOwotCQlNRkNfTE9DS19ERVNUUk9Z KCk7Ci0JCU1ST1VURVJfTE9DS19ERVNUUk9ZKCk7CisjaWZkZWYgVklNQUdFCisJCWlmIChJU19E RUZBVUxUX1ZORVQoY3Vydm5ldCkpIHsKKyNlbmRpZiAvKiBWSU1BR0UgKi8KKwkJICAgIFZJRl9M T0NLX0RFU1RST1koKTsKKwkJICAgIE1GQ19MT0NLX0RFU1RST1koKTsKKwkJICAgIE1ST1VURVJf TE9DS19ERVNUUk9ZKCk7CisjaWZkZWYgVklNQUdFCisJCX0KKyNlbmRpZiAvKiBWSU1BR0UgKi8K IAkJcmV0dXJuIChFSU5WQUwpOwogCX0KICNlbmRpZgpAQCAtMzEzMSw2ICszMjU0LDggQEAKIAlt cnQ2X2lvY3RsID0gTlVMTDsKICNlbmRpZgogCisJaWYgKFZfcmVnX3ZpZl9udW0gIT0gVklGSV9J TlZBTElEKQorCSAgICBJRl9BRERSX0xPQ0tfREVTVFJPWSgmVl9tdWx0aWNhc3RfcmVnaXN0ZXJf aWYpOwogCWlmIChwaW1fZW5jYXBfY29va2llKSB7CiAJICAgIGVuY2FwX2RldGFjaChwaW1fZW5j YXBfY29va2llKTsKIAkgICAgcGltX2VuY2FwX2Nvb2tpZSA9IE5VTEw7CkBAIC0zMTQ5LDkgKzMy NzQsMTUgQEAKIAltcnRfaW9jdGwgPSBOVUxMOwogCXJzdnBfaW5wdXRfcCA9IE5VTEw7CiAKLQlW SUZfTE9DS19ERVNUUk9ZKCk7Ci0JTUZDX0xPQ0tfREVTVFJPWSgpOwotCU1ST1VURVJfTE9DS19E RVNUUk9ZKCk7CisjaWZkZWYgVklNQUdFCisJaWYgKElTX0RFRkFVTFRfVk5FVChjdXJ2bmV0KSkg eworI2VuZGlmIC8qIFZJTUFHRSAqLworCSAgICBWSUZfTE9DS19ERVNUUk9ZKCk7CisJICAgIE1G Q19MT0NLX0RFU1RST1koKTsKKwkgICAgTVJPVVRFUl9MT0NLX0RFU1RST1koKTsKKyNpZmRlZiBW SU1BR0UKKwl9CisjZW5kaWYgLyogVklNQUdFICovCiAJYnJlYWs7CiAKICAgICBkZWZhdWx0Ogpk aWZmIC11ciBuZXRpbmV0L2lwX21yb3V0ZS5oLm9yaWcgbmV0aW5ldC9pcF9tcm91dGUuaAotLS0g bmV0aW5ldC9pcF9tcm91dGUuaC5vcmlnCTIwMDgtMDctMjEgMTU6MzQ6MjIuMDAwMDAwMDAwIC0w NzAwCisrKyBuZXRpbmV0L2lwX21yb3V0ZS5oCTIwMDgtMDctMjkgMTM6Mzc6NTYuMDAwMDAwMDAw IC0wNzAwCkBAIC00Niw2ICs0Niw3IEBACiAgKiBNb2RpZmllZCBieSBBaml0IFRoeWFnYXJhamFu LCBQQVJDLCBBdWd1c3QgMTk5NC4KICAqIE1vZGlmaWVkIGJ5IEFobWVkIEhlbG15LCBTR0ksIEp1 bmUgMTk5Ni4KICAqIE1vZGlmaWVkIGJ5IFBhdmxpbiBSYWRvc2xhdm92LCBJQ1NJLCBPY3RvYmVy IDIwMDIuCisgKiBNb2RpZmllZCBieSBKZWZmIEFocmVuaG9seiwgQm9laW5nLCBKdWx5IDIwMDgu ICh2aXJ0dWFsaXphdGlvbiBzdXBwb3J0KQogICoKICAqIE1ST1VUSU5HIFJldmlzaW9uOiAzLjMu MS4zCiAgKiBhbmQgUElNLVNNdjIgYW5kIFBJTS1ETSBzdXBwb3J0LCBhZHZhbmNlZCBBUEkgc3Vw cG9ydCwKQEAgLTgwLDYgKzgxLDkgQEAKIHR5cGVkZWYgdV9sb25nIHZpZmJpdG1hcF90OwogdHlw ZWRlZiB1X3Nob3J0IHZpZmlfdDsJCS8qIHR5cGUgb2YgYSB2aWYgaW5kZXggKi8KICNkZWZpbmUg QUxMX1ZJRlMgKHZpZmlfdCktMQorI2lmZGVmIFZJTUFHRQorI2RlZmluZQkJVklGSV9JTlZBTElE CSgodmlmaV90KSAtMSkKKyNlbmRpZiAvKiBWSU1BR0UgKi8KIAogI2RlZmluZQlWSUZNX1NFVChu LCBtKQkJKChtKSB8PSAoMSA8PCAobikpKQogI2RlZmluZQlWSUZNX0NMUihuLCBtKQkJKChtKSAm PSB+KDEgPDwgKG4pKSkKQEAgLTIwNSw2ICsyMDksMTAgQEAKICNkZWZpbmUgQldfVVBDQUxMX1RI UkVTSE9MRF9JTlRFUlZBTF9NSU5fU0VDCTMKICNkZWZpbmUgQldfVVBDQUxMX1RIUkVTSE9MRF9J TlRFUlZBTF9NSU5fVVNFQwkwCiAKKyNpZmRlZiBWSU1BR0UKKyNkZWZpbmUgQldfTUVURVJfQlVD S0VUUwkxMDI0CisjZW5kaWYgLyogVklNQUdFICovCisKIC8qCiAgKiBUaGUga2VybmVsJ3MgbXVs dGljYXN0IHJvdXRpbmcgc3RhdGlzdGljcy4KICAqLwpkaWZmIC11ciBuZXRpbmV0L3BpbV92YXIu aC5vcmlnIG5ldGluZXQvcGltX3Zhci5oCi0tLSBuZXRpbmV0L3BpbV92YXIuaC5vcmlnCTIwMDgt MDctMjIgMDk6MDU6NTguMDAwMDAwMDAwIC0wNzAwCisrKyBuZXRpbmV0L3BpbV92YXIuaAkyMDA4 LTA3LTIyIDA5OjA2OjI0LjAwMDAwMDAwMCAtMDcwMApAQCAtNzMsNyArNzMsOSBAQAogI2lmZGVm IF9LRVJORUwKIAogdm9pZCBwaW1faW5wdXQoc3RydWN0IG1idWYgKiwgaW50KTsKKyNpZmRlZiBT WVNDVExfREVDTAogU1lTQ1RMX0RFQ0woX25ldF9pbmV0X3BpbSk7CiAjZW5kaWYKKyNlbmRpZgog CiAjZW5kaWYgLyogX05FVElORVRfUElNX1ZBUl9IXyAqLwpkaWZmIC11ciBuZXRpbmV0L3ZpbmV0 Lmgub3JpZyBuZXRpbmV0L3ZpbmV0LmgKLS0tIG5ldGluZXQvdmluZXQuaC5vcmlnCTIwMDctMTEt MTkgMTI6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyBuZXRpbmV0L3ZpbmV0LmgJMjAwOC0wOS0w NCAxNjozMDoyMy4wMDAwMDAwMDAgLTA3MDAKQEAgLTUzLDYgKzUzLDkgQEAKICNpbmNsdWRlIDxu ZXRpbmV0L3RjcF9zeW5jYWNoZS5oPgogI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+CiAjaW5jbHVk ZSA8bmV0aW5ldC91ZHBfdmFyLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcF9tcm91dGUuaD4KKyNp bmNsdWRlIDxuZXRpbmV0L3BpbS5oPgorI2luY2x1ZGUgPG5ldGluZXQvcGltX3Zhci5oPgogCiBz dHJ1Y3Qgdm5ldF9pbmV0IHsKIAlzdHJ1Y3QJaW5faWZhZGRyaGFzaGhlYWQgKl9pbl9pZmFkZHJo YXNodGJsOwpAQCAtODksNiArOTIsOCBAQAogCXN0cnVjdAl0Y3BfaG9zdGNhY2hlIF90Y3BfaG9z dGNhY2hlOwogCXN0cnVjdCAgY2FsbG91dCBfdGNwX2hjX2NhbGxvdXQ7CiAJc3RydWN0CXRjcF9z eW5jYWNoZSBfdGNwX3N5bmNhY2hlOworCXN0cnVjdAlpbnBjYmhlYWQgX2RpdmNiOwkvKiBpcF9k aXZlcnQuYyAqLworCXN0cnVjdAlpbnBjYmluZm8gX2RpdmNiaW5mbzsJLyogaXBfZGl2ZXJ0LmMg Ki8KIAlUQUlMUV9IRUFEKCwgdGNwdHcpIF90d3FfMm1zbDsKIAogCWludAlfdGNwX3NjX3JzdF9z b2NrX2ZhaWw7CkBAIC0xNzQsNiArMTc5LDI0IEBACiAJaW50CV9pcHBvcnRfc3RvcHJhbmRvbTsK IAlpbnQJX2lwcG9ydF90Y3BhbGxvY3M7CiAJaW50CV9pcHBvcnRfdGNwbGFzdGNvdW50OworCisJ LyogZnJvbSBpcF9tcm91dGUuYyAqLworCXVfaW50CV9yc3ZwZGVidWc7CisJdV9pbnQJX21ydGRl YnVnOworCXN0cnVjdCAJbXJ0c3RhdCBfbXJ0c3RhdDsKKwlzdHJ1Y3QJbWZjICpfbWZjdGFibGVb TUZDVEJMU0laXTsKKwlzdHJ1Y3QJdmlmIF92aWZ0YWJsZVtNQVhWSUZTXTsKKwl1X2NoYXIJX25l eHBpcmVbTUZDVEJMU0laXTsKKwlldmVudGhhbmRsZXJfdGFnIF9pZl9kZXRhY2hfZXZlbnRfdGFn OworCXN0cnVjdAlid19tZXRlciAqX2J3X21ldGVyX3RpbWVyc1tCV19NRVRFUl9CVUNLRVRTXTsK KwlzdHJ1Y3QJYndfdXBjYWxsIF9id191cGNhbGxzW0JXX1VQQ0FMTFNfTUFYXTsKKwl1X2ludAlf YndfdXBjYWxsc19uOworCXN0cnVjdAlwaW1zdGF0IF9waW1zdGF0OworCXN0cnVjdAlpZm5ldCBf bXVsdGljYXN0X3JlZ2lzdGVyX2lmOworCXZpZmlfdAlfcmVnX3ZpZl9udW07CisJdmlmaV90CV9u dW12aWZzOworCWludAlfcGltX2Fzc2VydDsKKwl1aW50MzJfdCBfbXJ0X2FwaV9jb25maWc7CiB9 OwogI2VuZGlmCiAKQEAgLTIyMyw2ICsyNDYsOCBAQAogI2RlZmluZSBWX3RjcF9ob3N0Y2FjaGUJ CVZORVRfSU5FVCh0Y3BfaG9zdGNhY2hlKQogI2RlZmluZSBWX3RjcF9oY19jYWxsb3V0CVZORVRf SU5FVCh0Y3BfaGNfY2FsbG91dCkKICNkZWZpbmUgVl90Y3Bfc3luY2FjaGUJCVZORVRfSU5FVCh0 Y3Bfc3luY2FjaGUpCisjZGVmaW5lIFZfZGl2Y2IJCQlWTkVUX0lORVQoZGl2Y2IpCisjZGVmaW5l IFZfZGl2Y2JpbmZvCQlWTkVUX0lORVQoZGl2Y2JpbmZvKQogI2RlZmluZSBWX3RjcF9zY19yc3Rf c29ja19mYWlsCVZORVRfSU5FVCh0Y3Bfc2NfcnN0X3NvY2tfZmFpbCkKIAogI2RlZmluZSBWX3Rj cF9tc3NkZmx0CQlWTkVUX0lORVQodGNwX21zc2RmbHQpCkBAIC0zMDgsNCArMzMzLDIxIEBACiAj ZGVmaW5lIFZfaXBwb3J0X3RjcGFsbG9jcwlWTkVUX0lORVQoaXBwb3J0X3RjcGFsbG9jcykKICNk ZWZpbmUgVl9pcHBvcnRfdGNwbGFzdGNvdW50CVZORVRfSU5FVChpcHBvcnRfdGNwbGFzdGNvdW50 KQogCisjZGVmaW5lIFZfcnN2cGRlYnVnCQlWTkVUX0lORVQocnN2cGRlYnVnKQorI2RlZmluZSBW X21ydGRlYnVnCQlWTkVUX0lORVQobXJ0ZGVidWcpCisjZGVmaW5lIFZfbXJ0c3RhdAkJVk5FVF9J TkVUKG1ydHN0YXQpCisjZGVmaW5lIFZfbWZjdGFibGUJCVZORVRfSU5FVChtZmN0YWJsZSkKKyNk ZWZpbmUgVl92aWZ0YWJsZQkJVk5FVF9JTkVUKHZpZnRhYmxlKQorI2RlZmluZSBWX25leHBpcmUJ CVZORVRfSU5FVChuZXhwaXJlKQorI2RlZmluZSBWX2lmX2RldGFjaF9ldmVudF90YWcJVk5FVF9J TkVUKGlmX2RldGFjaF9ldmVudF90YWcpCisjZGVmaW5lIFZfYndfbWV0ZXJfdGltZXJzCVZORVRf SU5FVChid19tZXRlcl90aW1lcnMpCisjZGVmaW5lIFZfYndfdXBjYWxscwkJVk5FVF9JTkVUKGJ3 X3VwY2FsbHMpCisjZGVmaW5lIFZfYndfdXBjYWxsc19uCQlWTkVUX0lORVQoYndfdXBjYWxsc19u KQorI2RlZmluZSBWX3BpbXN0YXQJCVZORVRfSU5FVChwaW1zdGF0KQorI2RlZmluZSBWX211bHRp Y2FzdF9yZWdpc3Rlcl9pZglWTkVUX0lORVQobXVsdGljYXN0X3JlZ2lzdGVyX2lmKQorI2RlZmlu ZSBWX3JlZ192aWZfbnVtCQlWTkVUX0lORVQocmVnX3ZpZl9udW0pCisjZGVmaW5lIFZfbnVtdmlm cwkJVk5FVF9JTkVUKG51bXZpZnMpCisjZGVmaW5lIFZfcGltX2Fzc2VydAkJVk5FVF9JTkVUKHBp bV9hc3NlcnQpCisjZGVmaW5lIFZfbXJ0X2FwaV9jb25maWcJVk5FVF9JTkVUKG1ydF9hcGlfY29u ZmlnKQorCiAjZW5kaWYgLyogIV9ORVRJTkVUX1ZJTkVUX0hfICovCmRpZmYgLXVyIG5ldC92bmV0 Lmgub3JpZyBuZXQvdm5ldC5oCmRpZmYgLXVyIHN5cy92aW1hZ2UuaC5vcmlnIHN5cy92aW1hZ2Uu aApkaWZmIC11ciBuZXRpbmV0L2lwX2RpdmVydC5jLm9yaWcgbmV0aW5ldC9pcF9kaXZlcnQuYwot LS0gbmV0aW5ldC9pcF9kaXZlcnQuYy5vcmlnCTIwMDgtMDktMDQgMTY6Mjk6MzYuMDAwMDAwMDAw IC0wNzAwCisrKyBuZXRpbmV0L2lwX2RpdmVydC5jCTIwMDgtMDktMDQgMTY6MzA6MjMuMDAwMDAw MDAwIC0wNzAwCkBAIC0yOSwxMiArMjksMTIgQEAKIAogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgog X19GQlNESUQoIiRGcmVlQlNEOiBzcmMvc3lzL25ldGluZXQvaXBfZGl2ZXJ0LmMsdiAxLjEzMCAy MDA3LzEwLzA3IDIwOjQ0OjIyIHNpbGJ5IEV4cCAkIik7Ci0KLSNpZiAhZGVmaW5lZChLTERfTU9E VUxFKQogI2luY2x1ZGUgIm9wdF9pbmV0LmgiCiAjaW5jbHVkZSAib3B0X2lwZncuaCIKICNpbmNs dWRlICJvcHRfbWFjLmgiCiAjaW5jbHVkZSAib3B0X3ZpbWFnZS5oIgorCisjaWYgIWRlZmluZWQo S0xEX01PRFVMRSkKICNpZm5kZWYgSU5FVAogI2Vycm9yICJJUERJVkVSVCByZXF1aXJlcyBJTkVU LiIKICNlbmRpZgpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgPHN5cy9zeC5oPgogI2luY2x1 ZGUgPHN5cy9zeXNjdGwuaD4KICNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMv dmltYWdlLmg+CiAKICNpbmNsdWRlIDx2bS91bWEuaD4KIApAQCAtNjcsNiArNjgsNyBAQAogI2lu Y2x1ZGUgPG5ldC9uZXRpc3IuaD4gCiAjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CiAKKyNpbmNsdWRl IDxuZXRpbmV0L3ZpbmV0Lmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPG5l dGluZXQvaW5fcGNiLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPgpAQCAtMTEyLDkg KzExNCwxMiBAQAogICogd2lsbCBjYXVzZSBpdCB0byBiZSBlZmZlY3RpdmVseSBjb25zaWRlcmVk IGFzIGEgc3RhbmRhcmQgcGFja2V0KS4KICAqLwogCisjaWZuZGVmIFZJTUFHRQogLyogSW50ZXJu YWwgdmFyaWFibGVzLiAqLwogc3RhdGljIHN0cnVjdCBpbnBjYmhlYWQgZGl2Y2I7CiBzdGF0aWMg c3RydWN0IGlucGNiaW5mbyBkaXZjYmluZm87CisjZW5kaWYKK3N0YXRpYyBzdHJ1Y3QgdW1hX3pv bmUgKmRpdmNiem9uZTsKIAogc3RhdGljIHVfbG9uZwlkaXZfc2VuZHNwYWNlID0gRElWU05EUTsJ LyogWFhYIHN5c2N0bCA/ICovCiBzdGF0aWMgdV9sb25nCWRpdl9yZWN2c3BhY2UgPSBESVZSQ1ZR OwkvKiBYWFggc3lzY3RsID8gKi8KQEAgLTEyNiw3ICsxMzEsNyBAQAogZGl2X3pvbmVfY2hhbmdl KHZvaWQgKnRhZykKIHsKIAotCXVtYV96b25lX3NldF9tYXgoZGl2Y2JpbmZvLmlwaV96b25lLCBt YXhzb2NrZXRzKTsKKwl1bWFfem9uZV9zZXRfbWF4KGRpdmNiem9uZSwgbWF4c29ja2V0cyk7CiB9 CiAKIHN0YXRpYyBpbnQKQEAgLTE0OSwyNCArMTU0LDM0IEBACiB2b2lkCiBkaXZfaW5pdCh2b2lk KQogeworCUlOSVRfVk5FVF9JTkVUKGN1cnZuZXQpOwogCi0JSU5QX0lORk9fTE9DS19JTklUKCZk aXZjYmluZm8sICJkaXYiKTsKLQlMSVNUX0lOSVQoJmRpdmNiKTsKLQlkaXZjYmluZm8uaXBpX2xp c3RoZWFkID0gJmRpdmNiOworI2lmZGVmIFZJTUFHRQorCWlmIChJU19ERUZBVUxUX1ZORVQoY3Vy dm5ldCkpIHsKKyNlbmRpZgorCS8qIFhYWCBnZXQgcmlkIG9mIFZfZGl2Y2JpbmZvLmlwaV96b25l ICovCisJZGl2Y2J6b25lID0gdW1hX3pjcmVhdGUoImRpdmNiIiwgc2l6ZW9mKHN0cnVjdCBpbnBj YiksCisJICAgIE5VTEwsIE5VTEwsIGRpdl9pbnBjYl9pbml0LCBkaXZfaW5wY2JfZmluaSwgVU1B X0FMSUdOX1BUUiwKKwkgICAgVU1BX1pPTkVfTk9GUkVFKTsKKwl1bWFfem9uZV9zZXRfbWF4KGRp dmNiem9uZSwgbWF4c29ja2V0cyk7CisJRVZFTlRIQU5ETEVSX1JFR0lTVEVSKG1heHNvY2tldHNf Y2hhbmdlLCBkaXZfem9uZV9jaGFuZ2UsCisJCU5VTEwsIEVWRU5USEFORExFUl9QUklfQU5ZKTsK KyNpZmRlZiBWSU1BR0UKKwl9CisJVl9kaXZjYmluZm8uaXBpX3ZuZXQgPSBjdXJ2bmV0OworI2Vu ZGlmCisJSU5QX0lORk9fTE9DS19JTklUKCZWX2RpdmNiaW5mbywgImRpdiIpOworCUxJU1RfSU5J VCgmVl9kaXZjYik7CisJVl9kaXZjYmluZm8uaXBpX2xpc3RoZWFkID0gJlZfZGl2Y2I7CiAJLyoK IAkgKiBYWFggV2UgZG9uJ3QgdXNlIHRoZSBoYXNoIGxpc3QgZm9yIGRpdmVydCBJUCwgYnV0IGl0 J3MgZWFzaWVyCiAJICogdG8gYWxsb2NhdGUgYSBvbmUgZW50cnkgaGFzaCBsaXN0IHRoYW4gaXQg aXMgdG8gY2hlY2sgYWxsCiAJICogb3ZlciB0aGUgcGxhY2UgZm9yIGhhc2hiYXNlID09IE5VTEwu CiAJICovCi0JZGl2Y2JpbmZvLmlwaV9oYXNoYmFzZSA9IGhhc2hpbml0KDEsIE1fUENCLCAmZGl2 Y2JpbmZvLmlwaV9oYXNobWFzayk7Ci0JZGl2Y2JpbmZvLmlwaV9wb3J0aGFzaGJhc2UgPSBoYXNo aW5pdCgxLCBNX1BDQiwKLQkgICAgJmRpdmNiaW5mby5pcGlfcG9ydGhhc2htYXNrKTsKLQlkaXZj YmluZm8uaXBpX3pvbmUgPSB1bWFfemNyZWF0ZSgiZGl2Y2IiLCBzaXplb2Yoc3RydWN0IGlucGNi KSwKLQkgICAgTlVMTCwgTlVMTCwgZGl2X2lucGNiX2luaXQsIGRpdl9pbnBjYl9maW5pLCBVTUFf QUxJR05fUFRSLAotCSAgICBVTUFfWk9ORV9OT0ZSRUUpOwotCXVtYV96b25lX3NldF9tYXgoZGl2 Y2JpbmZvLmlwaV96b25lLCBtYXhzb2NrZXRzKTsKLQlFVkVOVEhBTkRMRVJfUkVHSVNURVIobWF4 c29ja2V0c19jaGFuZ2UsIGRpdl96b25lX2NoYW5nZSwKLQkJTlVMTCwgRVZFTlRIQU5ETEVSX1BS SV9BTlkpOworCVZfZGl2Y2JpbmZvLmlwaV9oYXNoYmFzZSA9IGhhc2hpbml0KDEsIE1fUENCLAor CSAgICAmVl9kaXZjYmluZm8uaXBpX2hhc2htYXNrKTsKKwlWX2RpdmNiaW5mby5pcGlfcG9ydGhh c2hiYXNlID0gaGFzaGluaXQoMSwgTV9QQ0IsCisJICAgICZWX2RpdmNiaW5mby5pcGlfcG9ydGhh c2htYXNrKTsKIH0KIAogLyoKQEAgLTE3Niw3ICsxOTEsOCBAQAogdm9pZAogZGl2X2lucHV0KHN0 cnVjdCBtYnVmICptLCBpbnQgb2ZmKQogewotCWlwc3RhdC5pcHNfbm9wcm90bysrOworCUlOSVRf Vk5FVF9JTkVUKGN1cnZuZXQpOworCVZfaXBzdGF0Lmlwc19ub3Byb3RvKys7CiAJbV9mcmVlbSht KTsKIH0KIApAQCAtMTg5LDYgKzIwNSw3IEBACiBzdGF0aWMgdm9pZAogZGl2ZXJ0X3BhY2tldChz dHJ1Y3QgbWJ1ZiAqbSwgaW50IGluY29taW5nKQogeworCUlOSVRfVk5FVF9JTkVUKGN1cnZuZXQp OwogCXN0cnVjdCBpcCAqaXA7CiAJc3RydWN0IGlucGNiICppbnA7CiAJc3RydWN0IHNvY2tldCAq c2E7CkBAIC0yNjgsMTEgKzI4NSwxMSBAQAogCS8qIFB1dCBwYWNrZXQgb24gc29ja2V0IHF1ZXVl LCBpZiBhbnkgKi8KIAlzYSA9IE5VTEw7CiAJbnBvcnQgPSBodG9ucygodV9pbnQxNl90KWRpdmVy dF9pbmZvKG10YWcpKTsKLQlJTlBfSU5GT19STE9DSygmZGl2Y2JpbmZvKTsKLQlMSVNUX0ZPUkVB Q0goaW5wLCAmZGl2Y2IsIGlucF9saXN0KSB7Ci0JCUlOUF9MT0NLKGlucCk7CisJSU5QX0lORk9f UkxPQ0soJlZfZGl2Y2JpbmZvKTsKKwlMSVNUX0ZPUkVBQ0goaW5wLCAmVl9kaXZjYiwgaW5wX2xp c3QpIHsKIAkJLyogWFhYIHdoeSBkb2VzIG9ubHkgb25lIHNvY2tldCBtYXRjaD8gKi8KIAkJaWYg KGlucC0+aW5wX2xwb3J0ID09IG5wb3J0KSB7CisJCQlJTlBfTE9DSyhpbnApOwogCQkJc2EgPSBp bnAtPmlucF9zb2NrZXQ7CiAJCQlTT0NLQlVGX0xPQ0soJnNhLT5zb19yY3YpOwogCQkJaWYgKHNi YXBwZW5kYWRkcl9sb2NrZWQoJnNhLT5zb19yY3YsCkBAIC0yODUsMTMgKzMwMiwxMiBAQAogCQkJ SU5QX1VOTE9DSyhpbnApOwogCQkJYnJlYWs7CiAJCX0KLQkJSU5QX1VOTE9DSyhpbnApOwogCX0K LQlJTlBfSU5GT19SVU5MT0NLKCZkaXZjYmluZm8pOworCUlOUF9JTkZPX1JVTkxPQ0soJlZfZGl2 Y2JpbmZvKTsKIAlpZiAoc2EgPT0gTlVMTCkgewogCQltX2ZyZWVtKG0pOwotCQlpcHN0YXQuaXBz X25vcHJvdG8rKzsKLQkJaXBzdGF0Lmlwc19kZWxpdmVyZWQtLTsKKwkJVl9pcHN0YXQuaXBzX25v cHJvdG8rKzsKKwkJVl9pcHN0YXQuaXBzX2RlbGl2ZXJlZC0tOwogICAgICAgICB9CiB9CiAKQEAg LTMwNiw2ICszMjIsNyBAQAogZGl2X291dHB1dChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1i dWYgKm0sIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luLAogICAgIHN0cnVjdCBtYnVmICpjb250cm9s KQogeworCUlOSVRfVk5FVF9JTkVUKHNvLT5zb192bmV0KTsKIAlzdHJ1Y3QgbV90YWcgKm10YWc7 CiAJc3RydWN0IGRpdmVydF90YWcgKmR0OwogCWludCBlcnJvciA9IDA7CkBAIC0zNTYsNyArMzcz LDcgQEAKIAkJc3RydWN0IGlucGNiICppbnA7CiAKIAkJZHQtPmluZm8gfD0gSVBfRldfRElWRVJU X09VVFBVVF9GTEFHOwotCQlJTlBfSU5GT19XTE9DSygmZGl2Y2JpbmZvKTsKKwkJSU5QX0lORk9f V0xPQ0soJlZfZGl2Y2JpbmZvKTsKIAkJaW5wID0gc290b2lucGNiKHNvKTsKIAkJSU5QX0xPQ0so aW5wKTsKIAkJLyoKQEAgLTM2Nyw3ICszODQsNyBAQAogCQkgICAgICgodV9zaG9ydCludG9ocyhp cC0+aXBfbGVuKSA+IG0tPm1fcGt0aGRyLmxlbikpIHsKIAkJCWVycm9yID0gRUlOVkFMOwogCQkJ SU5QX1VOTE9DSyhpbnApOwotCQkJSU5QX0lORk9fV1VOTE9DSygmZGl2Y2JpbmZvKTsKKwkJCUlO UF9JTkZPX1dVTkxPQ0soJlZfZGl2Y2JpbmZvKTsKIAkJCW1fZnJlZW0obSk7CiAJCX0gZWxzZSB7 CiAJCQkvKiBDb252ZXJ0IGZpZWxkcyB0byBob3N0IG9yZGVyIGZvciBpcF9vdXRwdXQoKSAqLwpA QCAtMzc1LDcgKzM5Miw3IEBACiAJCQlpcC0+aXBfb2ZmID0gbnRvaHMoaXAtPmlwX29mZik7CiAK IAkJCS8qIFNlbmQgcGFja2V0IHRvIG91dHB1dCBwcm9jZXNzaW5nICovCi0JCQlpcHN0YXQuaXBz X3Jhd291dCsrOwkJCS8qIFhYWCAqLworCQkJVl9pcHN0YXQuaXBzX3Jhd291dCsrOwkJCS8qIFhY WCAqLwogCiAjaWZkZWYgTUFDCiAJCQltYWNfY3JlYXRlX21idWZfZnJvbV9pbnBjYihpbnAsIG0p OwpAQCAtNDA4LDcgKzQyNSw3IEBACiAJCQkJCWVycm9yID0gRU5PQlVGUzsKIAkJCX0KIAkJCUlO UF9VTkxPQ0soaW5wKTsKLQkJCUlOUF9JTkZPX1dVTkxPQ0soJmRpdmNiaW5mbyk7CisJCQlJTlBf SU5GT19XVU5MT0NLKCZWX2RpdmNiaW5mbyk7CiAJCQlpZiAoZXJyb3IgPT0gRU5PQlVGUykgewog CQkJCW1fZnJlZW0obSk7CiAJCQkJcmV0dXJuIChlcnJvcik7CkBAIC00NTgsNiArNDc1LDcgQEAK IHN0YXRpYyBpbnQKIGRpdl9hdHRhY2goc3RydWN0IHNvY2tldCAqc28sIGludCBwcm90bywgc3Ry dWN0IHRocmVhZCAqdGQpCiB7CisJSU5JVF9WTkVUX0lORVQoc28tPnNvX3ZuZXQpOwogCXN0cnVj dCBpbnBjYiAqaW5wOwogCWludCBlcnJvcjsKIApAQCAtNDcxLDE0ICs0ODksMTQgQEAKIAllcnJv ciA9IHNvcmVzZXJ2ZShzbywgZGl2X3NlbmRzcGFjZSwgZGl2X3JlY3ZzcGFjZSk7CiAJaWYgKGVy cm9yKQogCQlyZXR1cm4gZXJyb3I7Ci0JSU5QX0lORk9fV0xPQ0soJmRpdmNiaW5mbyk7Ci0JZXJy b3IgPSBpbl9wY2JhbGxvYyhzbywgJmRpdmNiaW5mbyk7CisJSU5QX0lORk9fV0xPQ0soJlZfZGl2 Y2JpbmZvKTsKKwllcnJvciA9IGluX3BjYmFsbG9jKHNvLCAmVl9kaXZjYmluZm8pOwogCWlmIChl cnJvcikgewotCQlJTlBfSU5GT19XVU5MT0NLKCZkaXZjYmluZm8pOworCQlJTlBfSU5GT19XVU5M T0NLKCZWX2RpdmNiaW5mbyk7CiAJCXJldHVybiBlcnJvcjsKIAl9CiAJaW5wID0gKHN0cnVjdCBp bnBjYiAqKXNvLT5zb19wY2I7Ci0JSU5QX0lORk9fV1VOTE9DSygmZGl2Y2JpbmZvKTsKKwlJTlBf SU5GT19XVU5MT0NLKCZWX2RpdmNiaW5mbyk7CiAJaW5wLT5pbnBfaXBfcCA9IHByb3RvOwogCWlu cC0+aW5wX3ZmbGFnIHw9IElOUF9JUFY0OwogCWlucC0+aW5wX2ZsYWdzIHw9IElOUF9IRFJJTkNM OwpAQCAtNDg5LDIwICs1MDcsMjIgQEAKIHN0YXRpYyB2b2lkCiBkaXZfZGV0YWNoKHN0cnVjdCBz b2NrZXQgKnNvKQogeworCUlOSVRfVk5FVF9JTkVUKHNvLT5zb192bmV0KTsKIAlzdHJ1Y3QgaW5w Y2IgKmlucDsKIAogCWlucCA9IHNvdG9pbnBjYihzbyk7CiAJS0FTU0VSVChpbnAgIT0gTlVMTCwg KCJkaXZfZGV0YWNoOiBpbnAgPT0gTlVMTCIpKTsKLQlJTlBfSU5GT19XTE9DSygmZGl2Y2JpbmZv KTsKKwlJTlBfSU5GT19XTE9DSygmVl9kaXZjYmluZm8pOwogCUlOUF9MT0NLKGlucCk7CiAJaW5f cGNiZGV0YWNoKGlucCk7CiAJaW5fcGNiZnJlZShpbnApOwotCUlOUF9JTkZPX1dVTkxPQ0soJmRp dmNiaW5mbyk7CisJSU5QX0lORk9fV1VOTE9DSygmVl9kaXZjYmluZm8pOwogfQogCiBzdGF0aWMg aW50CiBkaXZfYmluZChzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IHNvY2thZGRyICpuYW0sIHN0 cnVjdCB0aHJlYWQgKnRkKQogeworCUlOSVRfVk5FVF9JTkVUKHNvLT5zb192bmV0KTsKIAlzdHJ1 Y3QgaW5wY2IgKmlucDsKIAlpbnQgZXJyb3I7CiAKQEAgLTUxOCwxMSArNTM4LDExIEBACiAJaWYg KG5hbS0+c2FfZmFtaWx5ICE9IEFGX0lORVQpCiAJCXJldHVybiBFQUZOT1NVUFBPUlQ7CiAJKChz dHJ1Y3Qgc29ja2FkZHJfaW4gKiluYW0pLT5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOwot CUlOUF9JTkZPX1dMT0NLKCZkaXZjYmluZm8pOworCUlOUF9JTkZPX1dMT0NLKCZWX2RpdmNiaW5m byk7CiAJSU5QX0xPQ0soaW5wKTsKIAllcnJvciA9IGluX3BjYmJpbmQoaW5wLCBuYW0sIHRkLT50 ZF91Y3JlZCk7CiAJSU5QX1VOTE9DSyhpbnApOwotCUlOUF9JTkZPX1dVTkxPQ0soJmRpdmNiaW5m byk7CisJSU5QX0lORk9fV1VOTE9DSygmVl9kaXZjYmluZm8pOwogCXJldHVybiBlcnJvcjsKIH0K IApAQCAtNTQzLDEwICs1NjMsMTEgQEAKIGRpdl9zZW5kKHN0cnVjdCBzb2NrZXQgKnNvLCBpbnQg ZmxhZ3MsIHN0cnVjdCBtYnVmICptLCBzdHJ1Y3Qgc29ja2FkZHIgKm5hbSwKICAgICBzdHJ1Y3Qg bWJ1ZiAqY29udHJvbCwgc3RydWN0IHRocmVhZCAqdGQpCiB7CisJSU5JVF9WTkVUX0lORVQoc28t PnNvX3ZuZXQpOwogCS8qIFBhY2tldCBtdXN0IGhhdmUgYSBoZWFkZXIgKGJ1dCB0aGF0J3MgYWJv dXQgaXQpICovCiAJaWYgKG0tPm1fbGVuIDwgc2l6ZW9mIChzdHJ1Y3QgaXApICYmCiAJICAgICht ID0gbV9wdWxsdXAobSwgc2l6ZW9mIChzdHJ1Y3QgaXApKSkgPT0gMCkgewotCQlpcHN0YXQuaXBz X3Rvb3NtYWxsKys7CisJCVZfaXBzdGF0Lmlwc190b29zbWFsbCsrOwogCQltX2ZyZWVtKG0pOwog CQlyZXR1cm4gRUlOVkFMOwogCX0KQEAgLTU3MCw2ICs1OTEsNyBAQAogc3RhdGljIGludAogZGl2 X3BjYmxpc3QoU1lTQ1RMX0hBTkRMRVJfQVJHUykKIHsKKwlJTklUX1ZORVRfSU5FVChjdXJ2bmV0 KTsKIAlpbnQgZXJyb3IsIGksIG47CiAJc3RydWN0IGlucGNiICppbnAsICoqaW5wX2xpc3Q7CiAJ aW5wX2dlbl90IGdlbmNudDsKQEAgLTU4MCw3ICs2MDIsNyBAQAogCSAqIHJlc291cmNlLWludGVu c2l2ZSB0byByZXBlYXQgdHdpY2Ugb24gZXZlcnkgcmVxdWVzdC4KIAkgKi8KIAlpZiAocmVxLT5v bGRwdHIgPT0gMCkgewotCQluID0gZGl2Y2JpbmZvLmlwaV9jb3VudDsKKwkJbiA9IFZfZGl2Y2Jp bmZvLmlwaV9jb3VudDsKIAkJcmVxLT5vbGRpZHggPSAyICogKHNpemVvZiB4aWcpCiAJCQkrIChu ICsgbi84KSAqIHNpemVvZihzdHJ1Y3QgeGlucGNiKTsKIAkJcmV0dXJuIDA7CkBAIC01OTIsMTAg KzYxNCwxMCBAQAogCS8qCiAJICogT0ssIG5vdyB3ZSdyZSBjb21taXR0ZWQgdG8gZG9pbmcgc29t ZXRoaW5nLgogCSAqLwotCUlOUF9JTkZPX1JMT0NLKCZkaXZjYmluZm8pOwotCWdlbmNudCA9IGRp dmNiaW5mby5pcGlfZ2VuY250OwotCW4gPSBkaXZjYmluZm8uaXBpX2NvdW50OwotCUlOUF9JTkZP X1JVTkxPQ0soJmRpdmNiaW5mbyk7CisJSU5QX0lORk9fUkxPQ0soJlZfZGl2Y2JpbmZvKTsKKwln ZW5jbnQgPSBWX2RpdmNiaW5mby5pcGlfZ2VuY250OworCW4gPSBWX2RpdmNiaW5mby5pcGlfY291 bnQ7CisJSU5QX0lORk9fUlVOTE9DSygmVl9kaXZjYmluZm8pOwogCiAJZXJyb3IgPSBzeXNjdGxf d2lyZV9vbGRfYnVmZmVyKHJlcSwKIAkgICAgMiAqIHNpemVvZih4aWcpICsgbipzaXplb2Yoc3Ry dWN0IHhpbnBjYikpOwpAQCAtNjE0LDggKzYzNiw4IEBACiAJaWYgKGlucF9saXN0ID09IDApCiAJ CXJldHVybiBFTk9NRU07CiAJCi0JSU5QX0lORk9fUkxPQ0soJmRpdmNiaW5mbyk7Ci0JZm9yIChp bnAgPSBMSVNUX0ZJUlNUKGRpdmNiaW5mby5pcGlfbGlzdGhlYWQpLCBpID0gMDsgaW5wICYmIGkg PCBuOworCUlOUF9JTkZPX1JMT0NLKCZWX2RpdmNiaW5mbyk7CisJZm9yIChpbnAgPSBMSVNUX0ZJ UlNUKFZfZGl2Y2JpbmZvLmlwaV9saXN0aGVhZCksIGkgPSAwOyBpbnAgJiYgaSA8IG47CiAJICAg ICBpbnAgPSBMSVNUX05FWFQoaW5wLCBpbnBfbGlzdCkpIHsKIAkJSU5QX0xPQ0soaW5wKTsKIAkJ aWYgKGlucC0+aW5wX2dlbmNudCA8PSBnZW5jbnQgJiYKQEAgLTYyMyw3ICs2NDUsNyBAQAogCQkJ aW5wX2xpc3RbaSsrXSA9IGlucDsKIAkJSU5QX1VOTE9DSyhpbnApOwogCX0KLQlJTlBfSU5GT19S VU5MT0NLKCZkaXZjYmluZm8pOworCUlOUF9JTkZPX1JVTkxPQ0soJlZfZGl2Y2JpbmZvKTsKIAlu ID0gaTsKIAogCWVycm9yID0gMDsKQEAgLTY1MSwxMSArNjczLDExIEBACiAJCSAqIHdoaWxlIHdl IHdlcmUgcHJvY2Vzc2luZyB0aGlzIHJlcXVlc3QsIGFuZCBpdAogCQkgKiBtaWdodCBiZSBuZWNl c3NhcnkgdG8gcmV0cnkuCiAJCSAqLwotCQlJTlBfSU5GT19STE9DSygmZGl2Y2JpbmZvKTsKLQkJ eGlnLnhpZ19nZW4gPSBkaXZjYmluZm8uaXBpX2dlbmNudDsKKwkJSU5QX0lORk9fUkxPQ0soJlZf ZGl2Y2JpbmZvKTsKKwkJeGlnLnhpZ19nZW4gPSBWX2RpdmNiaW5mby5pcGlfZ2VuY250OwogCQl4 aWcueGlnX3NvZ2VuID0gc29fZ2VuY250OwotCQl4aWcueGlnX2NvdW50ID0gZGl2Y2JpbmZvLmlw aV9jb3VudDsKLQkJSU5QX0lORk9fUlVOTE9DSygmZGl2Y2JpbmZvKTsKKwkJeGlnLnhpZ19jb3Vu dCA9IFZfZGl2Y2JpbmZvLmlwaV9jb3VudDsKKwkJSU5QX0lORk9fUlVOTE9DSygmVl9kaXZjYmlu Zm8pOwogCQllcnJvciA9IFNZU0NUTF9PVVQocmVxLCAmeGlnLCBzaXplb2YgeGlnKTsKIAl9CiAJ ZnJlZShpbnBfbGlzdCwgTV9URU1QKTsKQEAgLTY5NCw2ICs3MTYsNyBAQAogc3RhdGljIGludAog ZGl2X21vZGV2ZW50KG1vZHVsZV90IG1vZCwgaW50IHR5cGUsIHZvaWQgKnVudXNlZCkKIHsKKwlJ TklUX1ZORVRfSU5FVChjdXJ2bmV0KTsKIAlpbnQgZXJyID0gMDsKIAlpbnQgbjsKIApAQCAtNzI3 LDE4ICs3NTAsMTggQEAKIAkJICogc29ja2V0IG9wZW4gcmVxdWVzdCBjb3VsZCBiZSBzcGlubmlu ZyBvbiB0aGUgbG9jayBhbmQgdGhlbgogCQkgKiB3ZSBkZXN0cm95IHRoZSBsb2NrLgogCQkgKi8K LQkJSU5QX0lORk9fV0xPQ0soJmRpdmNiaW5mbyk7Ci0JCW4gPSBkaXZjYmluZm8uaXBpX2NvdW50 OworCQlJTlBfSU5GT19XTE9DSygmVl9kaXZjYmluZm8pOworCQluID0gVl9kaXZjYmluZm8uaXBp X2NvdW50OwogCQlpZiAobiAhPSAwKSB7CiAJCQllcnIgPSBFQlVTWTsKLQkJCUlOUF9JTkZPX1dV TkxPQ0soJmRpdmNiaW5mbyk7CisJCQlJTlBfSU5GT19XVU5MT0NLKCZWX2RpdmNiaW5mbyk7CiAJ CQlicmVhazsKIAkJfQogCQlpcF9kaXZlcnRfcHRyID0gTlVMTDsKIAkJZXJyID0gcGZfcHJvdG9f dW5yZWdpc3RlcihQRl9JTkVULCBJUFBST1RPX0RJVkVSVCwgU09DS19SQVcpOwotCQlJTlBfSU5G T19XVU5MT0NLKCZkaXZjYmluZm8pOwotCQlJTlBfSU5GT19MT0NLX0RFU1RST1koJmRpdmNiaW5m byk7Ci0JCXVtYV96ZGVzdHJveShkaXZjYmluZm8uaXBpX3pvbmUpOworCQlJTlBfSU5GT19XVU5M T0NLKCZWX2RpdmNiaW5mbyk7CisJCUlOUF9JTkZPX0xPQ0tfREVTVFJPWSgmVl9kaXZjYmluZm8p OworCQl1bWFfemRlc3Ryb3koZGl2Y2J6b25lKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJZXJy ID0gRU9QTk9UU1VQUDsK ------_=_NextPart_001_01C91AB3.B40A9061--