Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vEjPN-00Grvc-90 for pgsql-hackers@arkaria.postgresql.org; Fri, 31 Oct 2025 07:18:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vEjPL-00CXCz-Vr for pgsql-hackers@arkaria.postgresql.org; Fri, 31 Oct 2025 07:18:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vEjPL-00CXCr-E0 for pgsql-hackers@lists.postgresql.org; Fri, 31 Oct 2025 07:18:46 +0000 Received: from mail-qt1-x835.google.com ([2607:f8b0:4864:20::835]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vEjPH-005CpL-1e for pgsql-hackers@lists.postgresql.org; Fri, 31 Oct 2025 07:18:46 +0000 Received: by mail-qt1-x835.google.com with SMTP id d75a77b69052e-4ed02d102e2so22050001cf.1 for ; Fri, 31 Oct 2025 00:18:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fittl.com; s=google; t=1761895122; x=1762499922; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=KbD8PHC+Hvt+KO9sIZJBDT7nKBmBGs/r2N8f1Tvfb3o=; b=DNvzq3PY5LQViU0IT25nAQ1GOw+3zDwQldhOeasg6ZBYb8jcO2K6Cy8SY4kDlP0e6c r4/BgiImECMPxQ7Nx2V6Ou6ajGs/RlFLFHVud4MBxCITqsJfncxSv/sdPW7sQF3hZf5a Y/aI1N343RiVwkJFRzcN61iJ9ZO0WAFgMOvFA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761895122; x=1762499922; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=KbD8PHC+Hvt+KO9sIZJBDT7nKBmBGs/r2N8f1Tvfb3o=; b=uyc9P7kAWLtMJAi6gnRe2rMKNqUpsruUE2tDY4XuIFUpePHdwqtl78m/JMheyaqQ/B ioDdfnE7aMv3UWWxsSSwQmRnfcCOBZ8+8TtxHYTs0UGErun9pX13RbumodYg337jD3a0 1KvP2d4viM1Xdv08CJDpqduHnEw8pan1sscdub/h4rvgS6uI0BVux9dv8Dyg8QHrabp7 3Wzgao8WmdRxnQR54QN8MuD78NaCcu/l62TU1yKhqjonyCETTLxvLTEMoaB2Y9l00xQY zZtn/CGG0k22LQrcCF80aB2uLEhHSihNcfyNWkHjwlF8MVDp56XEOTGH8+YZaxnoW6K1 Iz9w== X-Gm-Message-State: AOJu0YxKC21tQPVCMTchzyVirpafNdiwZIM2jbGuDGq0bWezY0+JEpVF 0SkbH2tmnzfUsP7a51BzcfNYQjq+gf9W/EoF4E92jO1+mR5emPxp+aOMQ9fu9F0Zrm7afjIEigf L8OWLVUcZ+vqwJ2zpjmKcZ08418BIlkJzt04tyDBm X-Gm-Gg: ASbGncstw3k+EFZKaFEGc6y8a439hW1pLEuhneNqnW48ak89AUndf2C64Bk5lkVsYL6 jH/XHCmzQLLWjvibKW9UBxIBEOvXTa4ZY6qipfC/bB71y2m9LKuADmuCAqstq7Fxds5A6NK0rLu 49Buuj1tBMiwXvpNLC7G83lTCN73IWxIyRuR5/wlgUvF9wNsWuOtVSvFNlPfMfxhSnseBvD/++7 tusv2/Pw4B8/RLAZyEQGp7RscpvCwGF7VDKqJozZXoYYefo539isl5cndF9uSgrO/o0N3UobSM0 Yyq3GZTGBCBy2JeH6bkmTUQR1hOz X-Google-Smtp-Source: AGHT+IGuTpWevgOWRB2dL77lly0CTIGnWXwoumAXFA+QzkOiwWv4AAMsDv4YFG98Dh8lTiHCOxQGfldL2UfAbMk4/3s= X-Received: by 2002:a05:622a:5e15:b0:4ed:18dd:fd4 with SMTP id d75a77b69052e-4ed30dd65a7mr31474971cf.19.1761895121708; Fri, 31 Oct 2025 00:18:41 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Lukas Fittl Date: Fri, 31 Oct 2025 00:18:04 -0700 X-Gm-Features: AWmQ_bkmUOvS1OopE8O2TVAvaAV0DImNf3F1wS3Om29ZySZRd06_sqku-FqP5Mw Message-ID: Subject: Re: Stack-based tracking of per-node WAL/buffer usage To: Andres Freund Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000dd059506426f2cb7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000dd059506426f2cb7 Content-Type: multipart/alternative; boundary="000000000000dd059406426f2cb5" --000000000000dd059406426f2cb5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Andres, Thanks for the detailed review! Attached v4 patchset that addresses feedback (unless otherwise noted below) and is rebased on master. Other changes: - Ensured each patch is individually pgindent clean (and compiles) - Refactored 0003 a bit to consistently use InstrPushStack/InstrPopStack helpers for modifying the active stack entry - Building on that refactoring, merged v3/0006 "Introduce alternate Instrumentation stack mechanism relying on PG_FINALLY" into the main commit introducing the stack mechanism (the "alternate" mechanism is just using these helpers directly and making sure InstrPopStack is called via PG_FINALLY, instead of using resource owners) - Per our off-list conversation at PGConf.EU, added a patch (v4/0007) that illustrates how the stack mechanism can be used to separate index and table buffer accesses in the EXPLAIN for Index Scans On Wed, Oct 22, 2025 at 5:59=E2=80=AFAM Andres Freund = wrote: > > +/* > > + * General purpose instrumentation that can capture time, WAL/buffer > usage and tuples > > + * > > + * Initialized through InstrAlloc, followed by one or more calls to a > pair of > > + * InstrStart/InstrStop (activity is measured inbetween). > > + */ > > typedef struct Instrumentation > > +{ > > + /* Parameters set at creation: */ > > + bool need_timer; /* true if we need timer > data */ > > + bool need_bufusage; /* true if we need buffer usage > data */ > > + bool need_walusage; /* true if we need WAL usage data > */ > > + /* Internal state keeping: */ > > + instr_time starttime; /* start time of last > InstrStart */ > > + BufferUsage bufusage_start; /* buffer usage at start */ > > + WalUsage walusage_start; /* WAL usage at start */ > > + /* Accumulated statistics: */ > > + instr_time total; /* total runtime */ > > + double ntuples; /* total tuples counted i= n > InstrStop */ > > + BufferUsage bufusage; /* total buffer usage */ > > + WalUsage walusage; /* total WAL usage */ > > +} Instrumentation; > > Maybe add a comment explaining why ntuples is in here? > After thinking about this some more, I'd think we should just go ahead and special case trigger instrumentation, and specifically count firings of the trigger (which was counted in "ntuples" before). I've adjusted the 0002 patch accordingly to split out both node and trigger instrumentation. > > > > > --- > > .../pg_stat_statements/pg_stat_statements.c | 4 +- > > src/backend/commands/explain.c | 8 +- > > src/backend/commands/trigger.c | 4 +- > > src/backend/executor/execMain.c | 25 ++- > > src/backend/executor/execProcnode.c | 29 +++ > > src/backend/executor/instrument.c | 199 ++++++++++++++---- > > src/include/executor/executor.h | 1 + > > src/include/executor/instrument.h | 53 ++++- > > 8 files changed, 260 insertions(+), 63 deletions(-) > > > > diff --git a/contrib/pg_stat_statements/pg_stat_statements.c > b/contrib/pg_stat_statements/pg_stat_statements.c > > index f43a33b3787..eeabd820d8e 100644 > > --- a/contrib/pg_stat_statements/pg_stat_statements.c > > +++ b/contrib/pg_stat_statements/pg_stat_statements.c > > @@ -1089,8 +1089,8 @@ pgss_ExecutorEnd(QueryDesc *queryDesc) > > PGSS_EXEC, > > > INSTR_TIME_GET_MILLISEC(queryDesc->totaltime->total), > > queryDesc->estate->es_total_processed, > > - &queryDesc->totaltime->bufusage, > > - &queryDesc->totaltime->walusage, > > + > &INSTR_GET_BUFUSAGE(queryDesc->totaltime), > > + > &INSTR_GET_WALUSAGE(queryDesc->totaltime), > > Getting a pointer to something returned by a macro is a bit ugly... Perha= ps > it'd be better to just pass the &queryDesc->totaltime? But ugh, that's no= t > easily possible given how pgss_planner() currently tracks things :( > > Maybe it's worth refactoring this a bit in a precursor patch? > I've dropped the macro (its just one additional indirection after all) - I think we could refactor this further (i.e. pass the stack), but that doesn't seem strictly necessary. > /* > ------------------------------------------------------------------------ > > @@ -828,6 +829,34 @@ ExecShutdownNode_walker(PlanState *node, void > *context) > > return false; > > } > > > > +/* > > + * ExecAccumNodeInstrumentation > > + * > > + * Accumulate instrumentation stats from all execution nodes to their > respective > > + * parents (or the original parent instrumentation stack). > > + */ > > +void > > +ExecAccumNodeInstrumentation(PlanState *node) > > +{ > > + (void) ExecAccumNodeInstrumentation_walker(node, NULL); > > +} > > I wonder if this is too narrow a name. There might be other uses of a pas= s > across the node tree at that point. OTOH, it's probably better to just > rename > it at that later point. > Yeah, I can't think of a better name, so I've left this the same for now. > > > + if (node->instrument && node->instrument->stack.previous) > > + InstrStackAdd(node->instrument->stack.previous, > &node->instrument->stack); > > + > > + return false; > > +} > > E.g. in ExecShutdownNode_walker we use planstate_tree_walker(), but then > also > have special handling for a few node types. Do we need something like tha= t > here too? It probably is ok, but it's worth explicitly checking and > adding a > comment. > I went through and double checked - we don't need to special case these node types in my understanding, and I couldn't see any specific cases where intermediary nodes would be removed in shutdown either (o.e. causing dropped stats since a node was removed with its associated stats not being added to the parent yet). I added a comment to make it clear this must run after ExecShutdownNode. > > +/* > > + * Use ResourceOwner mechanism to correctly reset pgInstrStack on abor= t. > > + */ > > +static void ResOwnerReleaseInstrumentation(Datum res); > > +static const ResourceOwnerDesc instrumentation_resowner_desc =3D > > +{ > > + .name =3D "instrumentation", > > + .release_phase =3D RESOURCE_RELEASE_BEFORE_LOCKS, > > + .release_priority =3D RELEASE_PRIO_FIRST, > > + .ReleaseResource =3D ResOwnerReleaseInstrumentation, > > + .DebugPrint =3D NULL, /* default message is f= ine > */ > > +}; > > Is there a reason to do the release here before the lock release? And why > _FIRST? > Adjusted to have its own phase, and after lock release. > > + if (pgInstrStack && !StackIsParent(pgInstrStack, &instr->stack)) > > + pgInstrStack =3D instr->stack.previous; > > Hm - this is effectively O(stack-depth^2), right? It's probably fine, > given > that we have fairly limited nesting (explain + pg_stat_statements + > auto_explain is probably the current max), but seems worth noting in a > comment? > Yeah, I added a comment - I don't see a case where this is a bottleneck today given the limited nesting of resource owner using stacks. > > + /* > > + * Always accumulate all collected stats before the abort, even i= f > we > > + * already walked up the stack with an earlier resource. > > + */ > > + if (pgInstrStack) > > + InstrStackAdd(pgInstrStack, &instr->stack); > > Why are we accumulating stats in case of errors? It's probably fine, but > doing > less as part of cleanup is pre ferrable... > In my understanding, we need to do this in case of functions called in a query that catch a rollback/error, since we'd otherwise not account for that function's activity as part of the top-level query. > /* General purpose instrumentation handling */ > > Instrumentation * > > InstrAlloc(int n, int instrument_options) > > { > ... > > + if (need_buffers || need_wal) > > + instr =3D MemoryContextAllocZero(CurTransactionContext, n= * > sizeof(Instrumentation)); > > + else > > + instr =3D palloc0(n * sizeof(Instrumentation)); > > Is this long-lived enough? I'm e.g. wondering about utility statements th= at > internally starting transactions, wouldn't that cause problems with a use= r > like pgss tracking something like CIC? > I ended up refactoring this a bit, since it seemed useful to do an explicit pfree at InstrStop or when aborting, both to avoid leaks, and to theoretically support using TopMemoryContext here. That said, from my testing I think CurTransactionContext is sufficient, because we just need something that lives long enough during resource owner abort situations (e.g. per-query context doesn't work, since the abort frees it before we do our resource owner handling). The pgss+CIC case isn't relevant here (I think), because utility statements don't use the resource owner mechanism at all (with the exception of EXPLAIN which calls into ExecutorStart), instead we use a PG_TRY/PG_FINALLY in pg_stat_statements to pop the stack. > > +void > > +InstrStackAdd(InstrStack * dst, InstrStack * add) > > +{ > > + Assert(dst !=3D NULL); > > + Assert(add !=3D NULL); > > + > > + BufferUsageAdd(&dst->bufusage, &add->bufusage); > > + WalUsageAdd(&dst->walusage, &add->walusage); > > } > > > > Do we want to do BufferUsageAdd() etc even if we are not tracking buffer > usage? Those operations aren't cheap... > I briefly considered whether we could add this to the InstrStack itself (i.e. whether we actually care about buffer, WAL usage or both), but I think where it gets messy is that we can have indirect requirements to track this - you might have pg_stat_statements capturing both, but e.g. the utility statement being executed only caring about emitting WAL usage in the log. I'm also not familiar with an in-core use case today where only WAL (but not buffers) is needed, short of doing something like "EXPLAIN (ANALYZE, BUFFERS OFF, WAL ON)" without having pg_stat_statements or similar enabled. Do you have a specific example where this could help? > /* note current values during parallel executor startup */ > > @@ -281,6 +386,14 @@ InstrEndParallelQuery(BufferUsage *bufusage, > WalUsage *walusage) > > void > > InstrAccumParallelQuery(BufferUsage *bufusage, WalUsage *walusage) > > { > > + if (pgInstrStack !=3D NULL) > > + { > > + InstrStack *dst =3D pgInstrStack; > > + > > + BufferUsageAdd(&dst->bufusage, bufusage); > > + WalUsageAdd(&dst->walusage, walusage); > > + } > > + > > BufferUsageAdd(&pgBufferUsage, bufusage); > > WalUsageAdd(&pgWalUsage, walusage); > > } > > Is the pgInstrStack =3D=3D NULL case actually reachable? > In my reading of the code, its necessary because we unconditionally track WAL/buffer usage in parallel workers, even if the leader doesn't actually need it. We could be smarter about this (i.e. tell the workers not to collect the information in the first place), but for now it seemed easiest to just discard it. Thanks, Lukas --=20 Lukas Fittl --000000000000dd059406426f2cb5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Andres,

= Thanks for the detailed review!

Attached v4 patchs= et that addresses feedback (unless otherwise noted below) and is rebased on= master. Other changes:

- Ensured each patch is in= dividually pgindent clean (and compiles)
- Refactored 0003 a bit = to consistently use InstrPushStack/InstrPopStack helpers for modifying the = active stack entry
- Building on that refactoring, merged v3/0006= "Introduce alternate Instrumentation stack mechanism relying on PG_FI= NALLY" into the main commit introducing the stack mechanism (the "= ;alternate" mechanism is just using these helpers directly and making = sure=C2=A0InstrPopStack is called via PG_FINALLY, instead of using resource= owners)
- Per our off-list conversation at PGConf.EU, adde= d a patch (v4/0007) that illustrates how the stack mechanism can be used to= separate index and table buffer accesses in the EXPLAIN for Index Scans

On Wed, Oct 22, 2025 at 5:59=E2=80=AFAM Andre= s Freund <andres@anarazel.de&g= t; wrote:
> += /*
> + * General purpose instrumentation that can capture time, WAL/buffer = usage and tuples
> + *
> + * Initialized through InstrAlloc, followed by one or more calls to a= pair of
> + * InstrStart/InstrStop (activity is measured inbetween).
> + */
>=C2=A0 typedef struct Instrumentation
> +{
> +=C2=A0 =C2=A0 =C2=A0/* Parameters set at creation: */
> +=C2=A0 =C2=A0 =C2=A0bool=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 nee= d_timer;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* true if we need = timer data */
> +=C2=A0 =C2=A0 =C2=A0bool=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 nee= d_bufusage;=C2=A0 /* true if we need buffer usage data */
> +=C2=A0 =C2=A0 =C2=A0bool=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 nee= d_walusage;=C2=A0 /* true if we need WAL usage data */
> +=C2=A0 =C2=A0 =C2=A0/* Internal state keeping: */
> +=C2=A0 =C2=A0 =C2=A0instr_time=C2=A0 =C2=A0 =C2=A0 starttime;=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* start time of last InstrStart = */
> +=C2=A0 =C2=A0 =C2=A0BufferUsage bufusage_start; /* buffer usage at st= art */
> +=C2=A0 =C2=A0 =C2=A0WalUsage=C2=A0 =C2=A0 =C2=A0 =C2=A0 walusage_star= t; /* WAL usage at start */
> +=C2=A0 =C2=A0 =C2=A0/* Accumulated statistics: */
> +=C2=A0 =C2=A0 =C2=A0instr_time=C2=A0 =C2=A0 =C2=A0 total;=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* total runtime */ > +=C2=A0 =C2=A0 =C2=A0double=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ntuples;= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* total tuples cou= nted in InstrStop */
> +=C2=A0 =C2=A0 =C2=A0BufferUsage bufusage;=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0/* total buffer usage */
> +=C2=A0 =C2=A0 =C2=A0WalUsage=C2=A0 =C2=A0 =C2=A0 =C2=A0 walusage;=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* total WAL usage */ > +} Instrumentation;

Maybe add a comment explaining why ntuples is in here?

After thinking about this some more, I'd think we shoul= d just go ahead and special case trigger instrumentation, and specifically = count firings of the trigger (which was counted in "ntuples" befo= re).

I've adjusted the 0002 patch accordingly = to split out both node and trigger instrumentation.
=C2=A0


> ---
>=C2=A0 .../pg_stat_statements/pg_stat_statements.c=C2=A0 =C2=A0|=C2=A0 = =C2=A04 +-
>=C2=A0 src/backend/commands/explain.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A08 +-
>=C2=A0 src/backend/commands/trigger.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A04 +-
>=C2=A0 src/backend/executor/execMain.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 25 ++-
>=C2=A0 src/backend/executor/execProcnode.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0|=C2=A0 29 +++
>=C2=A0 src/backend/executor/instrument.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0| 199 ++++++++++++++----
>=C2=A0 src/include/executor/executor.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A01 +
>=C2=A0 src/include/executor/instrument.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0|=C2=A0 53 ++++-
>=C2=A0 8 files changed, 260 insertions(+), 63 deletions(-)
>
> diff --git a/contrib/pg_stat_statements/pg_stat_statements.c b/contrib= /pg_stat_statements/pg_stat_statements.c
> index f43a33b3787..eeabd820d8e 100644
> --- a/contrib/pg_stat_statements/pg_stat_statements.c
> +++ b/contrib/pg_stat_statements/pg_stat_statements.c
> @@ -1089,8 +1089,8 @@ pgss_ExecutorEnd(QueryDesc *queryDesc)
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 PGSS_EXEC,
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 INSTR_TIME_GET_MILLISEC(qu= eryDesc->totaltime->total),
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 queryDesc->estate->e= s_total_processed,
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &queryDesc->totaltime->= ;bufusage,
> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &queryDesc->totaltime->= ;walusage,
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &INSTR_GET_BUFUSAGE(queryDes= c->totaltime),
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &INSTR_GET_WALUSAGE(queryDes= c->totaltime),

Getting a pointer to something returned by a macro is a bit ugly... Perhaps=
it'd be better to just pass the &queryDesc->totaltime? But ugh, = that's not
easily possible given how pgss_planner() currently tracks things :(

Maybe it's worth refactoring this a bit in a precursor patch?

I've dropped the macro (its just one additio= nal indirection after all) - I think we could refactor this further (i.e. p= ass the stack), but that doesn't seem strictly necessary.
>=C2=A0 /* -------------------------------------------------------------= -----------
> @@ -828,6 +829,34 @@ ExecShutdownNode_walker(PlanState *node, void *co= ntext)
>=C2=A0 =C2=A0 =C2=A0 =C2=A0return false;
>=C2=A0 }
>
> +/*
> + * ExecAccumNodeInstrumentation
> + *
> + * Accumulate instrumentation stats from all execution nodes to their= respective
> + * parents (or the original parent instrumentation stack).
> + */
> +void
> +ExecAccumNodeInstrumentation(PlanState *node)
> +{
> +=C2=A0 =C2=A0 =C2=A0(void) ExecAccumNodeInstrumentation_walker(node, = NULL);
> +}

I wonder if this is too narrow a name. There might be other uses of a pass<= br> across the node tree at that point. OTOH, it's probably better to just = rename
it at that later point.

Yeah, I can'= ;t think of a better name, so I've left this the same for now.
=C2=A0

> +=C2=A0 =C2=A0 =C2=A0if (node->instrument && node->instr= ument->stack.previous)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0InstrStackAdd(node-&g= t;instrument->stack.previous, &node->instrument->stack);
> +
> +=C2=A0 =C2=A0 =C2=A0return false;
> +}

E.g. in ExecShutdownNode_walker we use planstate_tree_walker(), but then al= so
have special handling for a few node types. Do we need something like that<= br> here too?=C2=A0 It probably is ok, but it's worth explicitly checking a= nd adding a
comment.

I went through and double chec= ked - we don't need to special case these node types in my understandin= g, and I couldn't see any specific cases where intermediary nodes would= be removed in shutdown either (o.e.=C2=A0
causing dropped stats = since a node was removed with its associated stats not being added to the p= arent yet).

I added a comment to make it clear thi= s must run after=C2=A0ExecShutdownNode.
=C2=A0
> +/*
> + * Use ResourceOwner mechanism to correctly reset pgInstrStack on abo= rt.
> + */
> +static void ResOwnerReleaseInstrumentation(Datum res);
> +static const ResourceOwnerDesc instrumentation_resowner_desc =3D
> +{
> +=C2=A0 =C2=A0 =C2=A0.name =3D "instrumentation",
> +=C2=A0 =C2=A0 =C2=A0.release_phase =3D RESOURCE_RELEASE_BEFORE_LOCKS,=
> +=C2=A0 =C2=A0 =C2=A0.release_priority =3D RELEASE_PRIO_FIRST,
> +=C2=A0 =C2=A0 =C2=A0.ReleaseResource =3D ResOwnerReleaseInstrumentati= on,
> +=C2=A0 =C2=A0 =C2=A0.DebugPrint =3D NULL,=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* default message is fine = */
> +};

Is there a reason to do the release here before the lock release? And why _FIRST?

Adjusted to have its own phase,= and after lock release.
=C2=A0
> +=C2=A0 =C2=A0 =C2=A0if (pgInstrStack && !StackIsParent(pgInst= rStack, &instr->stack))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pgInstrStack =3D inst= r->stack.previous;

Hm - this is effectively O(stack-depth^2), right?=C2=A0 It's probably f= ine, given
that we have fairly limited nesting (explain + pg_stat_statements +
auto_explain is probably the current max), but seems worth noting in a
comment?

Yeah, I added a comment - I do= n't see a case where this is a bottleneck today given the limited nesti= ng of resource owner using stacks.
=C2=A0
> +=C2=A0 =C2=A0 =C2=A0/*
> +=C2=A0 =C2=A0 =C2=A0 * Always accumulate all collected stats before t= he abort, even if we
> +=C2=A0 =C2=A0 =C2=A0 * already walked up the stack with an earlier re= source.
> +=C2=A0 =C2=A0 =C2=A0 */
> +=C2=A0 =C2=A0 =C2=A0if (pgInstrStack)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0InstrStackAdd(pgInstr= Stack, &instr->stack);

Why are we accumulating stats in case of errors? It's probably fine, bu= t doing
less as part of cleanup is pre ferrable...

<= div>In my understanding, we need to do this in case of functions called in = a query that catch a rollback/error, since we'd otherwise not account f= or that function's activity as part of the top-level query.
<= br>
>=C2=A0 /* General purpose instrumentation handling */
>=C2=A0 Instrumentation *
>=C2=A0 InstrAlloc(int n, int instrument_options)
>=C2=A0 {
...
> +=C2=A0 =C2=A0 =C2=A0if (need_buffers || need_wal)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0instr =3D MemoryConte= xtAllocZero(CurTransactionContext, n * sizeof(Instrumentation));
> +=C2=A0 =C2=A0 =C2=A0else
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0instr =3D palloc0(n *= sizeof(Instrumentation));

Is this long-lived enough? I'm e.g. wondering about utility statements = that
internally starting transactions, wouldn't that cause problems with a u= ser
like pgss tracking something like CIC?

= I ended up refactoring this a bit, since it seemed useful to do an explicit= pfree at InstrStop or when aborting, both to avoid leaks, and to theoretic= ally support using=C2=A0TopMemoryContext here.

Tha= t said, from my testing I think=C2=A0CurTransactionContext is sufficient, b= ecause we just need something that lives long enough during resource owner = abort situations (e.g. per-query context doesn't work, since the abort = frees it before we do our resource owner handling).

The pgss+CIC case isn't relevant here (I think), because utility stat= ements don't use the resource owner mechanism at all (with the exceptio= n of EXPLAIN which calls into ExecutorStart), instead we use a PG_TRY/PG_FI= NALLY in pg_stat_statements to pop the stack.
=C2=A0
> +void
> +InstrStackAdd(InstrStack * dst, InstrStack * add)
> +{
> +=C2=A0 =C2=A0 =C2=A0Assert(dst !=3D NULL);
> +=C2=A0 =C2=A0 =C2=A0Assert(add !=3D NULL);
> +
> +=C2=A0 =C2=A0 =C2=A0BufferUsageAdd(&dst->bufusage, &add-&g= t;bufusage);
> +=C2=A0 =C2=A0 =C2=A0WalUsageAdd(&dst->walusage, &add->w= alusage);
>=C2=A0 }
>

Do we want to do BufferUsageAdd() etc even if we are not tracking buffer usage? Those operations aren't cheap...

=
I briefly considered whether we could add this to the InstrStack itsel= f (i.e. whether we actually care about buffer, WAL usage or both), but I th= ink where it gets messy is that we can have indirect requirements to track = this - you might have pg_stat_statements capturing both, but e.g. the utili= ty statement being executed only caring about emitting WAL usage in the log= .

I'm also not familiar with an in-core use ca= se today where only WAL (but not buffers) is needed, short of doing somethi= ng like "EXPLAIN (ANALYZE, BUFFERS OFF, WAL ON)" without having p= g_stat_statements or similar enabled. Do you have a specific example where = this could help?

>=C2=A0 /* note current values during parallel executor startup */
> @@ -281,6 +386,14 @@ InstrEndParallelQuery(BufferUsage *bufusage, WalU= sage *walusage)
>=C2=A0 void
>=C2=A0 InstrAccumParallelQuery(BufferUsage *bufusage, WalUsage *walusag= e)
>=C2=A0 {
> +=C2=A0 =C2=A0 =C2=A0if (pgInstrStack !=3D NULL)
> +=C2=A0 =C2=A0 =C2=A0{
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0InstrStack *dst =3D p= gInstrStack;
> +
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0BufferUsageAdd(&d= st->bufusage, bufusage);
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0WalUsageAdd(&dst-= >walusage, walusage);
> +=C2=A0 =C2=A0 =C2=A0}
> +
>=C2=A0 =C2=A0 =C2=A0 =C2=A0BufferUsageAdd(&pgBufferUsage, bufusage)= ;
>=C2=A0 =C2=A0 =C2=A0 =C2=A0WalUsageAdd(&pgWalUsage, walusage);
>=C2=A0 }

Is the pgInstrStack =3D=3D NULL case actually reachable?

In my reading of the code, its necessary because we uncon= ditionally track WAL/buffer usage in parallel workers, even if the leader d= oesn't actually need it.

We could be smarter a= bout this (i.e. tell the workers not to collect the information in the firs= t place), but for now it seemed easiest to just discard it.

<= /div>
Thanks,
Lukas

--
Luka= s Fittl
--000000000000dd059406426f2cb5-- --000000000000dd059506426f2cb7 Content-Type: application/octet-stream; name="v4-0003-Replace-direct-changes-of-pgBufferUsage-pgWalUsag.patch" Content-Disposition: attachment; filename="v4-0003-Replace-direct-changes-of-pgBufferUsage-pgWalUsag.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mheislv82 RnJvbSA3NGY0NGFkYzUwNWE0MzZhNjVkNjA2OWIyODZjOGE4NzhkNGZlNGFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDMxIEF1ZyAyMDI1IDE2OjM0OjQyIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2NCAzLzddIFJl cGxhY2UgZGlyZWN0IGNoYW5nZXMgb2YgcGdCdWZmZXJVc2FnZS9wZ1dhbFVzYWdlCiB3aXRoIElO U1RSXyogbWFjcm9zCgpUaGlzIGVuY2Fwc3VsYXRlcyB0aGUgb3duZXJzaGlwIG9mIHRoZXNlIGds b2JhbHMgYmV0dGVyLCBhbmQgd2lsbCBhbGxvdwphIHN1YnNlcXVlbnQgcmVmYWN0b3JpbmcuCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgfCAxMCArKysrKy0tLS0t CiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyAgICB8IDI0ICsrKysrKysrKysr Ky0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYyAgfCAg NiArKystLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMgICAgIHwgIDggKysr Ky0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jIHwgIDggKysrKy0t LS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgICAgIHwgMTkgKysrKysrKysr KysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggZmQ5MWJjZDY4ZWMuLjhiMzY5 N2Q4ODIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC0xMDc5LDEwICsxMDc5LDEw IEBAIFhMb2dJbnNlcnRSZWNvcmQoWExvZ1JlY0RhdGEgKnJkYXRhLAogCS8qIFJlcG9ydCBXQUwg dHJhZmZpYyB0byB0aGUgaW5zdHJ1bWVudGF0aW9uLiAqLwogCWlmIChpbnNlcnRlZCkKIAl7Ci0J CXBnV2FsVXNhZ2Uud2FsX2J5dGVzICs9IHJlY2hkci0+eGxfdG90X2xlbjsKLQkJcGdXYWxVc2Fn ZS53YWxfcmVjb3JkcysrOwotCQlwZ1dhbFVzYWdlLndhbF9mcGkgKz0gbnVtX2ZwaTsKLQkJcGdX YWxVc2FnZS53YWxfZnBpX2J5dGVzICs9IGZwaV9ieXRlczsKKwkJSU5TVFJfV0FMVVNBR0VfQURE KHdhbF9ieXRlcywgcmVjaGRyLT54bF90b3RfbGVuKTsKKwkJSU5TVFJfV0FMVVNBR0VfSU5DUih3 YWxfcmVjb3Jkcyk7CisJCUlOU1RSX1dBTFVTQUdFX0FERCh3YWxfZnBpLCBudW1fZnBpKTsKKwkJ SU5TVFJfV0FMVVNBR0VfQUREKHdhbF9mcGlfYnl0ZXMsIGZwaV9ieXRlcyk7CiAKIAkJLyogUmVx dWlyZWQgZm9yIHRoZSBmbHVzaCBvZiBwZW5kaW5nIHN0YXRzIFdBTCBkYXRhICovCiAJCXBnc3Rh dF9yZXBvcnRfZml4ZWQgPSB0cnVlOwpAQCAtMjA2Miw3ICsyMDYyLDcgQEAgQWR2YW5jZVhMSW5z ZXJ0QnVmZmVyKFhMb2dSZWNQdHIgdXB0bywgVGltZUxpbmVJRCB0bGksIGJvb2wgb3Bwb3J0dW5p c3RpYykKIAkJCQkJV3JpdGVScXN0LkZsdXNoID0gMDsKIAkJCQkJWExvZ1dyaXRlKFdyaXRlUnFz dCwgdGxpLCBmYWxzZSk7CiAJCQkJCUxXTG9ja1JlbGVhc2UoV0FMV3JpdGVMb2NrKTsKLQkJCQkJ cGdXYWxVc2FnZS53YWxfYnVmZmVyc19mdWxsKys7CisJCQkJCUlOU1RSX1dBTFVTQUdFX0lOQ1Io d2FsX2J1ZmZlcnNfZnVsbCk7CiAJCQkJCVRSQUNFX1BPU1RHUkVTUUxfV0FMX0JVRkZFUl9XUklU RV9ESVJUWV9ET05FKCk7CiAKIAkJCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMK aW5kZXggZTg1NDRhY2I3ODQuLjkyY2I0ZWE1NjQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2J1ZmZlci9idWZtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9i dWZtZ3IuYwpAQCAtNzA2LDcgKzcwNiw3IEBAIFJlYWRSZWNlbnRCdWZmZXIoUmVsRmlsZUxvY2F0 b3IgcmxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1iZXIgYmxvY2tOCiAJCXsK IAkJCVBpbkxvY2FsQnVmZmVyKGJ1ZkhkciwgdHJ1ZSk7CiAKLQkJCXBnQnVmZmVyVXNhZ2UubG9j YWxfYmxrc19oaXQrKzsKKwkJCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9jYWxfYmxrc19oaXQpOwog CiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQpAQCAtNzI3LDcgKzcyNyw3IEBAIFJlYWRSZWNlbnRCdWZm ZXIoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEZvcmtOdW1iZXIgZm9ya051bSwgQmxvY2tOdW1i ZXIgYmxvY2tOCiAJCXsKIAkJCWlmIChCdWZmZXJUYWdzRXF1YWwoJnRhZywgJmJ1Zkhkci0+dGFn KSkKIAkJCXsKLQkJCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2hpdCsrOworCQkJCUlOU1RS X0JVRlVTQUdFX0lOQ1Ioc2hhcmVkX2Jsa3NfaGl0KTsKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0K IAkJCVVucGluQnVmZmVyKGJ1Zkhkcik7CkBAIC0xMTI4LDE0ICsxMTI4LDE0IEBAIFBpbkJ1ZmZl ckZvckJsb2NrKFJlbGF0aW9uIHJlbCwKIAl7CiAJCWJ1ZkhkciA9IExvY2FsQnVmZmVyQWxsb2Mo c21nciwgZm9ya051bSwgYmxvY2tOdW0sIGZvdW5kUHRyKTsKIAkJaWYgKCpmb3VuZFB0cikKLQkJ CXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrc19oaXQrKzsKKwkJCUlOU1RSX0JVRlVTQUdFX0lOQ1Io bG9jYWxfYmxrc19oaXQpOwogCX0KIAllbHNlCiAJewogCQlidWZIZHIgPSBCdWZmZXJBbGxvYyhz bWdyLCBwZXJzaXN0ZW5jZSwgZm9ya051bSwgYmxvY2tOdW0sCiAJCQkJCQkJIHN0cmF0ZWd5LCBm b3VuZFB0ciwgaW9fY29udGV4dCk7CiAJCWlmICgqZm91bmRQdHIpCi0JCQlwZ0J1ZmZlclVzYWdl LnNoYXJlZF9ibGtzX2hpdCsrOworCQkJSU5TVFJfQlVGVVNBR0VfSU5DUihzaGFyZWRfYmxrc19o aXQpOwogCX0KIAlpZiAocmVsKQogCXsKQEAgLTE4NjksOSArMTg2OSw5IEBAIEFzeW5jUmVhZEJ1 ZmZlcnMoUmVhZEJ1ZmZlcnNPcGVyYXRpb24gKm9wZXJhdGlvbiwgaW50ICpuYmxvY2tzX3Byb2dy ZXNzKQogCQkJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJaWYgKHBlcnNpc3RlbmNlID09IFJFTFBFUlNJ U1RFTkNFX1RFTVApCi0JCQlwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa3NfaGl0ICs9IDE7CisJCQlJ TlNUUl9CVUZVU0FHRV9JTkNSKGxvY2FsX2Jsa3NfaGl0KTsKIAkJZWxzZQotCQkJcGdCdWZmZXJV c2FnZS5zaGFyZWRfYmxrc19oaXQgKz0gMTsKKwkJCUlOU1RSX0JVRlVTQUdFX0lOQ1Ioc2hhcmVk X2Jsa3NfaGl0KTsKIAogCQlpZiAob3BlcmF0aW9uLT5yZWwpCiAJCQlwZ3N0YXRfY291bnRfYnVm ZmVyX2hpdChvcGVyYXRpb24tPnJlbCk7CkBAIC0xOTM5LDkgKzE5MzksOSBAQCBBc3luY1JlYWRC dWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVyYXRpb24sIGludCAqbmJsb2Nrc19wcm9n cmVzcykKIAkJCQkJCQkJaW9fc3RhcnQsIDEsIGlvX2J1ZmZlcnNfbGVuICogQkxDS1NaKTsKIAog CQlpZiAocGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKLQkJCXBnQnVmZmVyVXNh Z2UubG9jYWxfYmxrc19yZWFkICs9IGlvX2J1ZmZlcnNfbGVuOworCQkJSU5TVFJfQlVGVVNBR0Vf QUREKGxvY2FsX2Jsa3NfcmVhZCwgaW9fYnVmZmVyc19sZW4pOwogCQllbHNlCi0JCQlwZ0J1ZmZl clVzYWdlLnNoYXJlZF9ibGtzX3JlYWQgKz0gaW9fYnVmZmVyc19sZW47CisJCQlJTlNUUl9CVUZV U0FHRV9BREQoc2hhcmVkX2Jsa3NfcmVhZCwgaW9fYnVmZmVyc19sZW4pOwogCiAJCS8qCiAJCSAq IFRyYWNrIHZhY3V1bSBjb3N0IHdoZW4gaXNzdWluZyBJTywgbm90IGFmdGVyIHdhaXRpbmcgZm9y IGl0LgpAQCAtMjgxOSw3ICsyODE5LDcgQEAgRXh0ZW5kQnVmZmVyZWRSZWxTaGFyZWQoQnVmZmVy TWFuYWdlclJlbGF0aW9uIGJtciwKIAkJVGVybWluYXRlQnVmZmVySU8oYnVmX2hkciwgZmFsc2Us IEJNX1ZBTElELCB0cnVlLCBmYWxzZSk7CiAJfQogCi0JcGdCdWZmZXJVc2FnZS5zaGFyZWRfYmxr c193cml0dGVuICs9IGV4dGVuZF9ieTsKKwlJTlNUUl9CVUZVU0FHRV9BREQoc2hhcmVkX2Jsa3Nf d3JpdHRlbiwgZXh0ZW5kX2J5KTsKIAogCSpleHRlbmRlZF9ieSA9IGV4dGVuZF9ieTsKIApAQCAt Mjk3NSw3ICsyOTc1LDcgQEAgTWFya0J1ZmZlckRpcnR5KEJ1ZmZlciBidWZmZXIpCiAJICovCiAJ aWYgKCEob2xkX2J1Zl9zdGF0ZSAmIEJNX0RJUlRZKSkKIAl7Ci0JCXBnQnVmZmVyVXNhZ2Uuc2hh cmVkX2Jsa3NfZGlydGllZCsrOworCQlJTlNUUl9CVUZVU0FHRV9JTkNSKHNoYXJlZF9ibGtzX2Rp cnRpZWQpOwogCQlpZiAoVmFjdXVtQ29zdEFjdGl2ZSkKIAkJCVZhY3V1bUNvc3RCYWxhbmNlICs9 IFZhY3V1bUNvc3RQYWdlRGlydHk7CiAJfQpAQCAtNDM5NCw3ICs0Mzk0LDcgQEAgRmx1c2hCdWZm ZXIoQnVmZmVyRGVzYyAqYnVmLCBTTWdyUmVsYXRpb24gcmVsbiwgSU9PYmplY3QgaW9fb2JqZWN0 LAogCXBnc3RhdF9jb3VudF9pb19vcF90aW1lKElPT0JKRUNUX1JFTEFUSU9OLCBpb19jb250ZXh0 LAogCQkJCQkJCUlPT1BfV1JJVEUsIGlvX3N0YXJ0LCAxLCBCTENLU1opOwogCi0JcGdCdWZmZXJV c2FnZS5zaGFyZWRfYmxrc193cml0dGVuKys7CisJSU5TVFJfQlVGVVNBR0VfSU5DUihzaGFyZWRf Ymxrc193cml0dGVuKTsKIAogCS8qCiAJICogTWFyayB0aGUgYnVmZmVyIGFzIGNsZWFuICh1bmxl c3MgQk1fSlVTVF9ESVJUSUVEIGhhcyBiZWNvbWUgc2V0KSBhbmQKQEAgLTU1NTcsNyArNTU1Nyw3 IEBAIE1hcmtCdWZmZXJEaXJ0eUhpbnQoQnVmZmVyIGJ1ZmZlciwgYm9vbCBidWZmZXJfc3RkKQog CiAJCWlmIChkaXJ0aWVkKQogCQl7Ci0JCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2RpcnRp ZWQrKzsKKwkJCUlOU1RSX0JVRlVTQUdFX0lOQ1Ioc2hhcmVkX2Jsa3NfZGlydGllZCk7CiAJCQlp ZiAoVmFjdXVtQ29zdEFjdGl2ZSkKIAkJCQlWYWN1dW1Db3N0QmFsYW5jZSArPSBWYWN1dW1Db3N0 UGFnZURpcnR5OwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9s b2NhbGJ1Zi5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxidWYuYwppbmRleCAx NWFhYzdkMWM5Zi4uNDQ4MTkyMGVhNWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2xvY2FsYnVmLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvbG9jYWxi dWYuYwpAQCAtMjE3LDcgKzIxNyw3IEBAIEZsdXNoTG9jYWxCdWZmZXIoQnVmZmVyRGVzYyAqYnVm SGRyLCBTTWdyUmVsYXRpb24gcmVsbikKIAkvKiBNYXJrIG5vdC1kaXJ0eSAqLwogCVRlcm1pbmF0 ZUxvY2FsQnVmZmVySU8oYnVmSGRyLCB0cnVlLCAwLCBmYWxzZSk7CiAKLQlwZ0J1ZmZlclVzYWdl LmxvY2FsX2Jsa3Nfd3JpdHRlbisrOworCUlOU1RSX0JVRlVTQUdFX0lOQ1IobG9jYWxfYmxrc193 cml0dGVuKTsKIH0KIAogc3RhdGljIEJ1ZmZlcgpAQCAtNDc4LDcgKzQ3OCw3IEBAIEV4dGVuZEJ1 ZmZlcmVkUmVsTG9jYWwoQnVmZmVyTWFuYWdlclJlbGF0aW9uIGJtciwKIAogCSpleHRlbmRlZF9i eSA9IGV4dGVuZF9ieTsKIAotCXBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrc193cml0dGVuICs9IGV4 dGVuZF9ieTsKKwlJTlNUUl9CVUZVU0FHRV9BREQobG9jYWxfYmxrc193cml0dGVuLCBleHRlbmRf YnkpOwogCiAJcmV0dXJuIGZpcnN0X2Jsb2NrOwogfQpAQCAtNTA5LDcgKzUwOSw3IEBAIE1hcmtM b2NhbEJ1ZmZlckRpcnR5KEJ1ZmZlciBidWZmZXIpCiAJYnVmX3N0YXRlID0gcGdfYXRvbWljX3Jl YWRfdTMyKCZidWZIZHItPnN0YXRlKTsKIAogCWlmICghKGJ1Zl9zdGF0ZSAmIEJNX0RJUlRZKSkK LQkJcGdCdWZmZXJVc2FnZS5sb2NhbF9ibGtzX2RpcnRpZWQrKzsKKwkJSU5TVFJfQlVGVVNBR0Vf SU5DUihsb2NhbF9ibGtzX2RpcnRpZWQpOwogCiAJYnVmX3N0YXRlIHw9IEJNX0RJUlRZOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvYnVmZmlsZS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYwppbmRleCAzNjZkNzBkMzhhMS4uOWQzOWRmOTk4Y2Ig MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9idWZmaWxlLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9maWxlL2J1ZmZpbGUuYwpAQCAtNDc0LDEzICs0NzQsMTMgQEAgQnVm RmlsZUxvYWRCdWZmZXIoQnVmRmlsZSAqZmlsZSkKIAlpZiAodHJhY2tfaW9fdGltaW5nKQogCXsK IAkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChpb190aW1lKTsKLQkJSU5TVFJfVElNRV9BQ0NVTV9E SUZGKHBnQnVmZmVyVXNhZ2UudGVtcF9ibGtfcmVhZF90aW1lLCBpb190aW1lLCBpb19zdGFydCk7 CisJCUlOU1RSX0JVRlVTQUdFX1RJTUVfQUNDVU1fRElGRih0ZW1wX2Jsa19yZWFkX3RpbWUsIGlv X3RpbWUsIGlvX3N0YXJ0KTsKIAl9CiAKIAkvKiB3ZSBjaG9vc2Ugbm90IHRvIGFkdmFuY2UgY3Vy T2Zmc2V0IGhlcmUgKi8KIAogCWlmIChmaWxlLT5uYnl0ZXMgPiAwKQotCQlwZ0J1ZmZlclVzYWdl LnRlbXBfYmxrc19yZWFkKys7CisJCUlOU1RSX0JVRlVTQUdFX0lOQ1IodGVtcF9ibGtzX3JlYWQp OwogfQogCiAvKgpAQCAtNTQ4LDEzICs1NDgsMTMgQEAgQnVmRmlsZUR1bXBCdWZmZXIoQnVmRmls ZSAqZmlsZSkKIAkJaWYgKHRyYWNrX2lvX3RpbWluZykKIAkJewogCQkJSU5TVFJfVElNRV9TRVRf Q1VSUkVOVChpb190aW1lKTsKLQkJCUlOU1RSX1RJTUVfQUNDVU1fRElGRihwZ0J1ZmZlclVzYWdl LnRlbXBfYmxrX3dyaXRlX3RpbWUsIGlvX3RpbWUsIGlvX3N0YXJ0KTsKKwkJCUlOU1RSX0JVRlVT QUdFX1RJTUVfQUNDVU1fRElGRih0ZW1wX2Jsa193cml0ZV90aW1lLCBpb190aW1lLCBpb19zdGFy dCk7CiAJCX0KIAogCQlmaWxlLT5jdXJPZmZzZXQgKz0gYnl0ZXN0b3dyaXRlOwogCQl3cG9zICs9 IGJ5dGVzdG93cml0ZTsKIAotCQlwZ0J1ZmZlclVzYWdlLnRlbXBfYmxrc193cml0dGVuKys7CisJ CUlOU1RSX0JVRlVTQUdFX0lOQ1IodGVtcF9ibGtzX3dyaXR0ZW4pOwogCX0KIAlmaWxlLT5kaXJ0 eSA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0 YXRfaW8uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9pby5jCmluZGV4IDEz YWU1N2VkNjQ5Li40ZjYyNzRlYjU3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvcGdzdGF0X2lvLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X2lvLmMKQEAgLTEzNSwxNyArMTM1LDE3IEBAIHBnc3RhdF9jb3VudF9pb19vcF90aW1lKElPT2Jq ZWN0IGlvX29iamVjdCwgSU9Db250ZXh0IGlvX2NvbnRleHQsIElPT3AgaW9fb3AsCiAJCQl7CiAJ CQkJcGdzdGF0X2NvdW50X2J1ZmZlcl93cml0ZV90aW1lKElOU1RSX1RJTUVfR0VUX01JQ1JPU0VD KGlvX3RpbWUpKTsKIAkJCQlpZiAoaW9fb2JqZWN0ID09IElPT0JKRUNUX1JFTEFUSU9OKQotCQkJ CQlJTlNUUl9USU1FX0FERChwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtfd3JpdGVfdGltZSwgaW9f dGltZSk7CisJCQkJCUlOU1RSX0JVRlVTQUdFX1RJTUVfQUREKHNoYXJlZF9ibGtfd3JpdGVfdGlt ZSwgaW9fdGltZSk7CiAJCQkJZWxzZSBpZiAoaW9fb2JqZWN0ID09IElPT0JKRUNUX1RFTVBfUkVM QVRJT04pCi0JCQkJCUlOU1RSX1RJTUVfQUREKHBnQnVmZmVyVXNhZ2UubG9jYWxfYmxrX3dyaXRl X3RpbWUsIGlvX3RpbWUpOworCQkJCQlJTlNUUl9CVUZVU0FHRV9USU1FX0FERChsb2NhbF9ibGtf d3JpdGVfdGltZSwgaW9fdGltZSk7CiAJCQl9CiAJCQllbHNlIGlmIChpb19vcCA9PSBJT09QX1JF QUQpCiAJCQl7CiAJCQkJcGdzdGF0X2NvdW50X2J1ZmZlcl9yZWFkX3RpbWUoSU5TVFJfVElNRV9H RVRfTUlDUk9TRUMoaW9fdGltZSkpOwogCQkJCWlmIChpb19vYmplY3QgPT0gSU9PQkpFQ1RfUkVM QVRJT04pCi0JCQkJCUlOU1RSX1RJTUVfQUREKHBnQnVmZmVyVXNhZ2Uuc2hhcmVkX2Jsa19yZWFk X3RpbWUsIGlvX3RpbWUpOworCQkJCQlJTlNUUl9CVUZVU0FHRV9USU1FX0FERChzaGFyZWRfYmxr X3JlYWRfdGltZSwgaW9fdGltZSk7CiAJCQkJZWxzZSBpZiAoaW9fb2JqZWN0ID09IElPT0JKRUNU X1RFTVBfUkVMQVRJT04pCi0JCQkJCUlOU1RSX1RJTUVfQUREKHBnQnVmZmVyVXNhZ2UubG9jYWxf YmxrX3JlYWRfdGltZSwgaW9fdGltZSk7CisJCQkJCUlOU1RSX0JVRlVTQUdFX1RJTUVfQUREKGxv Y2FsX2Jsa19yZWFkX3RpbWUsIGlvX3RpbWUpOwogCQkJfQogCQl9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2lu c3RydW1lbnQuaAppbmRleCA0OTg2ZjZjZWE1NC4uOGU0MzVlMWY5MmMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9pbnN0cnVtZW50LmgKQEAgLTE2MSw0ICsxNjEsMjMgQEAgZXh0ZXJuIHZvaWQgQnVmZmVyVXNh Z2VBY2N1bURpZmYoQnVmZmVyVXNhZ2UgKmRzdCwKIGV4dGVybiB2b2lkIFdhbFVzYWdlQWNjdW1E aWZmKFdhbFVzYWdlICpkc3QsIGNvbnN0IFdhbFVzYWdlICphZGQsCiAJCQkJCQkJICBjb25zdCBX YWxVc2FnZSAqc3ViKTsKIAorI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9JTkNSKGZsZCkgZG8geyBc CisJCXBnQnVmZmVyVXNhZ2UuZmxkKys7IFwKKwl9IHdoaWxlKDApCisjZGVmaW5lIElOU1RSX0JV RlVTQUdFX0FERChmbGQsdmFsKSBkbyB7IFwKKwkJcGdCdWZmZXJVc2FnZS5mbGQgKz0gdmFsOyBc CisJfSB3aGlsZSgwKQorI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9USU1FX0FERChmbGQsdmFsKSBk byB7IFwKKwlJTlNUUl9USU1FX0FERChwZ0J1ZmZlclVzYWdlLmZsZCwgdmFsKTsgXAorCX0gd2hp bGUgKDApCisjZGVmaW5lIElOU1RSX0JVRlVTQUdFX1RJTUVfQUNDVU1fRElGRihmbGQsZW5kdmFs LHN0YXJ0dmFsKSBkbyB7IFwKKwlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZmZXJVc2FnZS5m bGQsIGVuZHZhbCwgc3RhcnR2YWwpOyBcCisJfSB3aGlsZSAoMCkKKyNkZWZpbmUgSU5TVFJfV0FM VVNBR0VfSU5DUihmbGQpIGRvIHsgXAorCQlwZ1dhbFVzYWdlLmZsZCsrOyBcCisJfSB3aGlsZSgw KQorI2RlZmluZSBJTlNUUl9XQUxVU0FHRV9BREQoZmxkLHZhbCkgZG8geyBcCisJCXBnV2FsVXNh Z2UuZmxkICs9IHZhbDsgXAorCX0gd2hpbGUoMCkKKwogI2VuZGlmCQkJCQkJCS8qIElOU1RSVU1F TlRfSCAqLwotLSAKMi40Ny4xCgo= --000000000000dd059506426f2cb7 Content-Type: application/octet-stream; name="v4-0001-Instrumentation-Keep-time-fields-as-instrtime-req.patch" Content-Disposition: attachment; filename="v4-0001-Instrumentation-Keep-time-fields-as-instrtime-req.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mheislux0 RnJvbSAxZThlMmQ1NDk5NzYwMmNmYzI4OWQ4ZWI4NTBiMmE4ZTk3NDUwNDBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT dW4sIDMxIEF1ZyAyMDI1IDE2OjM3OjA1IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2NCAxLzddIElu c3RydW1lbnRhdGlvbjogS2VlcCB0aW1lIGZpZWxkcyBhcyBpbnN0cnRpbWUsCiByZXF1aXJlIGNh bGxlciB0byBjb252ZXJ0CgpQcmV2aW91c2x5IHRoZSBJbnN0cnVtZW50YXRpb24gbG9naWMgYWx3 YXlzIGNvbnZlcnRlZCB0byBzZWNvbmRzLCBvbmx5IGZvciBtYW55Cm9mIHRoZSBjYWxsZXJzIHRv IGRvIHVubmVjZXNzYXJ5IGRpdmlzaW9uIHRvIGdldCB0byBtaWxsaXNlY29uZHMuIFNpbmNlIGFu IHVwY29taW5nCnJlZmFjdG9yaW5nIHdpbGwgc3BsaXQgdGhlIEluc3RydW1lbnRhdGlvbiBzdHJ1 Y3QsIHV0aWxpemUgaW5zdHJ0aW1lIGFsd2F5cyB0bwprZWVwIHRoaW5ncyBzaW1wbGVyLgotLS0K IGNvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jICAgICAgICAgICB8ICAyICstCiAu Li4vcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAgMiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgMTIgKysrKystLS0t LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYyAgICAgICAgICAgICB8IDIwICsr KysrKysrLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgICAg ICAgICAgICB8ICA2ICsrKy0tLQogc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5o ICAgICAgICAgIHwgIDIgKysKIDYgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMjMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBs YWluLmMgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRleCAxZjRiYWRi NDkyOC4uYzEwZjJmYzBmMjUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9f ZXhwbGFpbi5jCisrKyBiL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCkBAIC0z ODgsNyArMzg4LDcgQEAgZXhwbGFpbl9FeGVjdXRvckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykK IAkJSW5zdHJFbmRMb29wKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKIAogCQkvKiBMb2cgcGxhbiBp ZiBkdXJhdGlvbiBpcyBleGNlZWRlZC4gKi8KLQkJbXNlYyA9IHF1ZXJ5RGVzYy0+dG90YWx0aW1l LT50b3RhbCAqIDEwMDAuMDsKKwkJbXNlYyA9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHF1ZXJ5 RGVzYy0+dG90YWx0aW1lLT50b3RhbCk7CiAJCWlmIChtc2VjID49IGF1dG9fZXhwbGFpbl9sb2df bWluX2R1cmF0aW9uKQogCQl7CiAJCQlFeHBsYWluU3RhdGUgKmVzID0gTmV3RXhwbGFpblN0YXRl KCk7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRl bWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5j CmluZGV4IDM5MjA4ZjgwYjViLi40N2RlNGM5OGFlMyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0 X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTEwOTMsNyArMTA5Myw3IEBAIHBn c3NfRXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJCQkJICAgcXVlcnlEZXNjLT5w bGFubmVkc3RtdC0+c3RtdF9sb2NhdGlvbiwKIAkJCQkgICBxdWVyeURlc2MtPnBsYW5uZWRzdG10 LT5zdG10X2xlbiwKIAkJCQkgICBQR1NTX0VYRUMsCi0JCQkJICAgcXVlcnlEZXNjLT50b3RhbHRp bWUtPnRvdGFsICogMTAwMC4wLAkvKiBjb252ZXJ0IHRvIG1zZWMgKi8KKwkJCQkgICBJTlNUUl9U SU1FX0dFVF9NSUxMSVNFQyhxdWVyeURlc2MtPnRvdGFsdGltZS0+dG90YWwpLAogCQkJCSAgIHF1 ZXJ5RGVzYy0+ZXN0YXRlLT5lc190b3RhbF9wcm9jZXNzZWQsCiAJCQkJICAgJnF1ZXJ5RGVzYy0+ dG90YWx0aW1lLT5idWZ1c2FnZSwKIAkJCQkgICAmcXVlcnlEZXNjLT50b3RhbHRpbWUtPndhbHVz YWdlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDdlNjk5Zjg1OTVlLi5iYTM0Y2NlMjZlYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMTEzNiw3ICsxMTM2LDcgQEAgcmVwb3J0X3RyaWdn ZXJzKFJlc3VsdFJlbEluZm8gKnJJbmZvLCBib29sIHNob3dfcmVsbmFtZSwgRXhwbGFpblN0YXRl ICplcykKIAkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIgb24gJXMiLCByZWxuYW1lKTsK IAkJCWlmIChlcy0+dGltaW5nKQogCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIjogdGlt ZT0lLjNmIGNhbGxzPSUuMGZcbiIsCi0JCQkJCQkJCSAxMDAwLjAgKiBpbnN0ci0+dG90YWwsIGlu c3RyLT5udHVwbGVzKTsKKwkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGluc3RyLT50 b3RhbCksIGluc3RyLT5udHVwbGVzKTsKIAkJCWVsc2UKIAkJCQlhcHBlbmRTdHJpbmdJbmZvKGVz LT5zdHIsICI6IGNhbGxzPSUuMGZcbiIsIGluc3RyLT5udHVwbGVzKTsKIAkJfQpAQCAtMTE0Nyw3 ICsxMTQ3LDcgQEAgcmVwb3J0X3RyaWdnZXJzKFJlc3VsdFJlbEluZm8gKnJJbmZvLCBib29sIHNo b3dfcmVsbmFtZSwgRXhwbGFpblN0YXRlICplcykKIAkJCQlFeHBsYWluUHJvcGVydHlUZXh0KCJD b25zdHJhaW50IE5hbWUiLCBjb25uYW1lLCBlcyk7CiAJCQlFeHBsYWluUHJvcGVydHlUZXh0KCJS ZWxhdGlvbiIsIHJlbG5hbWUsIGVzKTsKIAkJCWlmIChlcy0+dGltaW5nKQotCQkJCUV4cGxhaW5Q cm9wZXJ0eUZsb2F0KCJUaW1lIiwgIm1zIiwgMTAwMC4wICogaW5zdHItPnRvdGFsLCAzLAorCQkJ CUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJUaW1lIiwgIm1zIiwgSU5TVFJfVElNRV9HRVRfTUlMTElT RUMoaW5zdHItPnRvdGFsKSwgMywKIAkJCQkJCQkJCSBlcyk7CiAJCQlFeHBsYWluUHJvcGVydHlG bG9hdCgiQ2FsbHMiLCBOVUxMLCBpbnN0ci0+bnR1cGxlcywgMCwgZXMpOwogCQl9CkBAIC0xODM1 LDggKzE4MzUsOCBAQCBFeHBsYWluTm9kZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5j ZXN0b3JzLAogCQlwbGFuc3RhdGUtPmluc3RydW1lbnQgJiYgcGxhbnN0YXRlLT5pbnN0cnVtZW50 LT5ubG9vcHMgPiAwKQogCXsKIAkJZG91YmxlCQlubG9vcHMgPSBwbGFuc3RhdGUtPmluc3RydW1l bnQtPm5sb29wczsKLQkJZG91YmxlCQlzdGFydHVwX21zID0gMTAwMC4wICogcGxhbnN0YXRlLT5p bnN0cnVtZW50LT5zdGFydHVwIC8gbmxvb3BzOwotCQlkb3VibGUJCXRvdGFsX21zID0gMTAwMC4w ICogcGxhbnN0YXRlLT5pbnN0cnVtZW50LT50b3RhbCAvIG5sb29wczsKKwkJZG91YmxlCQlzdGFy dHVwX21zID0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocGxhbnN0YXRlLT5pbnN0cnVtZW50LT5z dGFydHVwKSAvIG5sb29wczsKKwkJZG91YmxlCQl0b3RhbF9tcyA9IElOU1RSX1RJTUVfR0VUX01J TExJU0VDKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudC0+dG90YWwpIC8gbmxvb3BzOwogCQlkb3VibGUJ CXJvd3MgPSBwbGFuc3RhdGUtPmluc3RydW1lbnQtPm50dXBsZXMgLyBubG9vcHM7CiAKIAkJaWYg KGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKQEAgLTE5MDEsOCArMTkwMSw4IEBA IEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAKIAkJ CWlmIChubG9vcHMgPD0gMCkKIAkJCQljb250aW51ZTsKLQkJCXN0YXJ0dXBfbXMgPSAxMDAwLjAg KiBpbnN0cnVtZW50LT5zdGFydHVwIC8gbmxvb3BzOwotCQkJdG90YWxfbXMgPSAxMDAwLjAgKiBp bnN0cnVtZW50LT50b3RhbCAvIG5sb29wczsKKwkJCXN0YXJ0dXBfbXMgPSBJTlNUUl9USU1FX0dF VF9NSUxMSVNFQyhpbnN0cnVtZW50LT5zdGFydHVwKSAvIG5sb29wczsKKwkJCXRvdGFsX21zID0g SU5TVFJfVElNRV9HRVRfTUlMTElTRUMoaW5zdHJ1bWVudC0+dG90YWwpIC8gbmxvb3BzOwogCQkJ cm93cyA9IGluc3RydW1lbnQtPm50dXBsZXMgLyBubG9vcHM7CiAKIAkJCUV4cGxhaW5PcGVuV29y a2VyKG4sIGVzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRleCA5ZTExYzY2MmE3Yy4u MjA2NTNhNWM0YzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKQEAgLTExNCw3ICsxMTQs NyBAQCBJbnN0clN0b3BOb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVz KQogCWlmICghaW5zdHItPnJ1bm5pbmcpCiAJewogCQlpbnN0ci0+cnVubmluZyA9IHRydWU7Ci0J CWluc3RyLT5maXJzdHR1cGxlID0gSU5TVFJfVElNRV9HRVRfRE9VQkxFKGluc3RyLT5jb3VudGVy KTsKKwkJaW5zdHItPmZpcnN0dHVwbGUgPSBpbnN0ci0+Y291bnRlcjsKIAl9CiAJZWxzZQogCXsK QEAgLTEyMyw3ICsxMjMsNyBAQCBJbnN0clN0b3BOb2RlKEluc3RydW1lbnRhdGlvbiAqaW5zdHIs IGRvdWJsZSBuVHVwbGVzKQogCQkgKiB0aGlzIG1pZ2h0IGJlIHRoZSBmaXJzdCB0dXBsZQogCQkg Ki8KIAkJaWYgKGluc3RyLT5hc3luY19tb2RlICYmIHNhdmVfdHVwbGVjb3VudCA8IDEuMCkKLQkJ CWluc3RyLT5maXJzdHR1cGxlID0gSU5TVFJfVElNRV9HRVRfRE9VQkxFKGluc3RyLT5jb3VudGVy KTsKKwkJCWluc3RyLT5maXJzdHR1cGxlID0gaW5zdHItPmNvdW50ZXI7CiAJfQogfQogCkBAIC0x MzksOCArMTM5LDYgQEAgSW5zdHJVcGRhdGVUdXBsZUNvdW50KEluc3RydW1lbnRhdGlvbiAqaW5z dHIsIGRvdWJsZSBuVHVwbGVzKQogdm9pZAogSW5zdHJFbmRMb29wKEluc3RydW1lbnRhdGlvbiAq aW5zdHIpCiB7Ci0JZG91YmxlCQl0b3RhbHRpbWU7Ci0KIAkvKiBTa2lwIGlmIG5vdGhpbmcgaGFz IGhhcHBlbmVkLCBvciBhbHJlYWR5IHNodXQgZG93biAqLwogCWlmICghaW5zdHItPnJ1bm5pbmcp CiAJCXJldHVybjsKQEAgLTE0OSwxMCArMTQ3LDggQEAgSW5zdHJFbmRMb29wKEluc3RydW1lbnRh dGlvbiAqaW5zdHIpCiAJCWVsb2coRVJST1IsICJJbnN0ckVuZExvb3AgY2FsbGVkIG9uIHJ1bm5p bmcgbm9kZSIpOwogCiAJLyogQWNjdW11bGF0ZSBwZXItY3ljbGUgc3RhdGlzdGljcyBpbnRvIHRv dGFscyAqLwotCXRvdGFsdGltZSA9IElOU1RSX1RJTUVfR0VUX0RPVUJMRShpbnN0ci0+Y291bnRl cik7Ci0KLQlpbnN0ci0+c3RhcnR1cCArPSBpbnN0ci0+Zmlyc3R0dXBsZTsKLQlpbnN0ci0+dG90 YWwgKz0gdG90YWx0aW1lOworCUlOU1RSX1RJTUVfQUREKGluc3RyLT5zdGFydHVwLCBpbnN0ci0+ Zmlyc3R0dXBsZSk7CisJSU5TVFJfVElNRV9BREQoaW5zdHItPnRvdGFsLCBpbnN0ci0+Y291bnRl cik7CiAJaW5zdHItPm50dXBsZXMgKz0gaW5zdHItPnR1cGxlY291bnQ7CiAJaW5zdHItPm5sb29w cyArPSAxOwogCkBAIC0xNjAsNyArMTU2LDcgQEAgSW5zdHJFbmRMb29wKEluc3RydW1lbnRhdGlv biAqaW5zdHIpCiAJaW5zdHItPnJ1bm5pbmcgPSBmYWxzZTsKIAlJTlNUUl9USU1FX1NFVF9aRVJP KGluc3RyLT5zdGFydHRpbWUpOwogCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPmNvdW50ZXIp OwotCWluc3RyLT5maXJzdHR1cGxlID0gMDsKKwlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5m aXJzdHR1cGxlKTsKIAlpbnN0ci0+dHVwbGVjb3VudCA9IDA7CiB9CiAKQEAgLTE3MywxNCArMTY5 LDE0IEBAIEluc3RyQWdnTm9kZShJbnN0cnVtZW50YXRpb24gKmRzdCwgSW5zdHJ1bWVudGF0aW9u ICphZGQpCiAJCWRzdC0+cnVubmluZyA9IHRydWU7CiAJCWRzdC0+Zmlyc3R0dXBsZSA9IGFkZC0+ Zmlyc3R0dXBsZTsKIAl9Ci0JZWxzZSBpZiAoZHN0LT5ydW5uaW5nICYmIGFkZC0+cnVubmluZyAm JiBkc3QtPmZpcnN0dHVwbGUgPiBhZGQtPmZpcnN0dHVwbGUpCisJZWxzZSBpZiAoZHN0LT5ydW5u aW5nICYmIGFkZC0+cnVubmluZyAmJiBJTlNUUl9USU1FX0xUKGRzdC0+Zmlyc3R0dXBsZSwgYWRk LT5maXJzdHR1cGxlKSkKIAkJZHN0LT5maXJzdHR1cGxlID0gYWRkLT5maXJzdHR1cGxlOwogCiAJ SU5TVFJfVElNRV9BREQoZHN0LT5jb3VudGVyLCBhZGQtPmNvdW50ZXIpOwogCiAJZHN0LT50dXBs ZWNvdW50ICs9IGFkZC0+dHVwbGVjb3VudDsKLQlkc3QtPnN0YXJ0dXAgKz0gYWRkLT5zdGFydHVw OwotCWRzdC0+dG90YWwgKz0gYWRkLT50b3RhbDsKKwlJTlNUUl9USU1FX0FERChkc3QtPnN0YXJ0 dXAsIGFkZC0+c3RhcnR1cCk7CisJSU5TVFJfVElNRV9BREQoZHN0LT50b3RhbCwgYWRkLT50b3Rh bCk7CiAJZHN0LT5udHVwbGVzICs9IGFkZC0+bnR1cGxlczsKIAlkc3QtPm50dXBsZXMyICs9IGFk ZC0+bnR1cGxlczI7CiAJZHN0LT5ubG9vcHMgKz0gYWRkLT5ubG9vcHM7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9p bnN0cnVtZW50LmgKaW5kZXggZmZlNDcwZjJiODQuLmRmYzhiM2M5NzY1IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvaW5zdHJ1bWVudC5oCkBAIC03OCwxMyArNzgsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5zdHJ1 bWVudGF0aW9uCiAJYm9vbAkJcnVubmluZzsJCS8qIHRydWUgaWYgd2UndmUgY29tcGxldGVkIGZp cnN0IHR1cGxlICovCiAJaW5zdHJfdGltZQlzdGFydHRpbWU7CQkvKiBzdGFydCB0aW1lIG9mIGN1 cnJlbnQgaXRlcmF0aW9uIG9mIG5vZGUgKi8KIAlpbnN0cl90aW1lCWNvdW50ZXI7CQkvKiBhY2N1 bXVsYXRlZCBydW50aW1lIGZvciB0aGlzIG5vZGUgKi8KLQlkb3VibGUJCWZpcnN0dHVwbGU7CQkv KiB0aW1lIGZvciBmaXJzdCB0dXBsZSBvZiB0aGlzIGN5Y2xlICovCisJaW5zdHJfdGltZQlmaXJz dHR1cGxlOwkJLyogdGltZSBmb3IgZmlyc3QgdHVwbGUgb2YgdGhpcyBjeWNsZSAqLwogCWRvdWJs ZQkJdHVwbGVjb3VudDsJCS8qICMgb2YgdHVwbGVzIGVtaXR0ZWQgc28gZmFyIHRoaXMgY3ljbGUg Ki8KIAlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydDsgLyogYnVmZmVyIHVzYWdlIGF0IHN0YXJ0 ICovCiAJV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQ7IC8qIFdBTCB1c2FnZSBhdCBzdGFydCAqLwog CS8qIEFjY3VtdWxhdGVkIHN0YXRpc3RpY3MgYWNyb3NzIGFsbCBjb21wbGV0ZWQgY3ljbGVzOiAq LwotCWRvdWJsZQkJc3RhcnR1cDsJCS8qIHRvdGFsIHN0YXJ0dXAgdGltZSAoaW4gc2Vjb25kcykg Ki8KLQlkb3VibGUJCXRvdGFsOwkJCS8qIHRvdGFsIHRpbWUgKGluIHNlY29uZHMpICovCisJaW5z dHJfdGltZQlzdGFydHVwOwkJLyogdG90YWwgc3RhcnR1cCB0aW1lICovCisJaW5zdHJfdGltZQl0 b3RhbDsJCQkvKiB0b3RhbCB0aW1lICovCiAJZG91YmxlCQludHVwbGVzOwkJLyogdG90YWwgdHVw bGVzIHByb2R1Y2VkICovCiAJZG91YmxlCQludHVwbGVzMjsJCS8qIHNlY29uZGFyeSBub2RlLXNw ZWNpZmljIHR1cGxlIGNvdW50ZXIgKi8KIAlkb3VibGUJCW5sb29wczsJCQkvKiAjIG9mIHJ1biBj eWNsZXMgZm9yIHRoaXMgbm9kZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9ydGFiaWxp dHkvaW5zdHJfdGltZS5oIGIvc3JjL2luY2x1ZGUvcG9ydGFiaWxpdHkvaW5zdHJfdGltZS5oCmlu ZGV4IGY3MWE4NTFiMThkLi4xYzFjMThmNzgwYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9y dGFiaWxpdHkvaW5zdHJfdGltZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BvcnRhYmlsaXR5L2luc3Ry X3RpbWUuaApAQCAtMTg0LDYgKzE4NCw4IEBAIEdldFRpbWVyRnJlcXVlbmN5KHZvaWQpCiAjZGVm aW5lIElOU1RSX1RJTUVfQUNDVU1fRElGRih4LHkseikgXAogCSgoeCkudGlja3MgKz0gKHkpLnRp Y2tzIC0gKHopLnRpY2tzKQogCisjZGVmaW5lIElOU1RSX1RJTUVfTFQoeCx5KSBcCisJKCh4KS50 aWNrcyA+ICh5KS50aWNrcykKIAogI2RlZmluZSBJTlNUUl9USU1FX0dFVF9ET1VCTEUodCkgXAog CSgoZG91YmxlKSBJTlNUUl9USU1FX0dFVF9OQU5PU0VDKHQpIC8gTlNfUEVSX1MpCi0tIAoyLjQ3 LjEKCg== --000000000000dd059506426f2cb7 Content-Type: application/octet-stream; name="v4-0005-Use-Instrumentation-stack-for-parallel-query-aggr.patch" Content-Disposition: attachment; filename="v4-0005-Use-Instrumentation-stack-for-parallel-query-aggr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mheislvb4 RnJvbSBjZDQzZWQ1ZjgxZDkyOWVkMjFiOGQzYjAxNWIzNjI1YWJkZmRlZWJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDkgU2VwIDIwMjUgMDI6MjQ6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIIHY0IDUvN10gVXNl IEluc3RydW1lbnRhdGlvbiBzdGFjayBmb3IgcGFyYWxsZWwgcXVlcnkKIGFnZ3JlZ2F0aW9uIGlu IHdvcmtlcnMKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICB8ICA2 ICsrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYyAgICB8ICA2ICsrKyst LQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICB8ICA2ICsrKystLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyB8ICA2ICsrKystLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICB8ICA2ICsrKystLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvaW5zdHJ1bWVudC5jICAgICB8IDE5ICsrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNs dWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaCAgICAgfCAgNCArKy0tCiA3IGZpbGVzIGNoYW5nZWQs IDMxIGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9icmluL2JyaW4uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9icmluL2JyaW4uYwpp bmRleCAyZjdkMTQzNzkxOS4uYTM2NjA2ZWVkMGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW4uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKQEAg LTI4NzAsNiArMjg3MCw3IEBAIF9icmluX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQg KnNlZywgc2htX3RvYyAqdG9jKQogCVJlbGF0aW9uCWluZGV4UmVsOwogCUxPQ0tNT0RFCWhlYXBM b2NrbW9kZTsKIAlMT0NLTU9ERQlpbmRleExvY2ttb2RlOworCUluc3RydW1lbnRhdGlvbiAqaW5z dHI7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwog CWludAkJCXNvcnRtZW07CkBAIC0yOTE5LDcgKzI5MjAsNyBAQCBfYnJpbl9wYXJhbGxlbF9idWls ZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAl0dXBsZXNvcnRfYXR0YWNo X3NoYXJlZChzaGFyZWRzb3J0LCBzZWcpOwogCiAJLyogUHJlcGFyZSB0byB0cmFjayBidWZmZXIg dXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCUluc3RyU3RhcnRQYXJhbGxlbFF1 ZXJ5KCk7CisJaW5zdHIgPSBJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSgpOwogCiAJLyoKIAkgKiBN aWdodCBhcyB3ZWxsIHVzZSByZWxpYWJsZSBmaWd1cmUgd2hlbiBkb2xpbmcgb3V0IG1haW50ZW5h bmNlX3dvcmtfbWVtCkBAIC0yOTM0LDcgKzI5MzUsOCBAQCBfYnJpbl9wYXJhbGxlbF9idWlsZF9t YWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBSZXBvcnQgV0FML2J1ZmZl ciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWx1 c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFsc2Up OwotCUluc3RyRW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1i ZXJdLAorCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKKwkJCQkJCSAgJmJ1ZmZlcnVzYWdl W1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKIAkJCQkJCSAgJndhbHVzYWdlW1BhcmFsbGVsV29ya2Vy TnVtYmVyXSk7CiAKIAlpbmRleF9jbG9zZShpbmRleFJlbCwgaW5kZXhMb2NrbW9kZSk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCAzZDcxYjQ0MmFhOS4uYjQ1NDkzNGMxMDkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjA4Myw2ICsyMDgzLDcgQEAgX2dpbl9w YXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlSZWxh dGlvbglpbmRleFJlbDsKIAlMT0NLTU9ERQloZWFwTG9ja21vZGU7CiAJTE9DS01PREUJaW5kZXhM b2NrbW9kZTsKKwlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCVdhbFVzYWdlICAgKndhbHVzYWdl OwogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlpbnQJCQlzb3J0bWVtOwpAQCAtMjE1MSw3 ICsyMTUyLDcgQEAgX2dpbl9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNo bV90b2MgKnRvYykKIAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcpOwog CiAJLyogUHJlcGFyZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1 dGlvbiAqLwotCUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CisJaW5zdHIgPSBJbnN0clN0YXJ0 UGFyYWxsZWxRdWVyeSgpOwogCiAJLyoKIAkgKiBNaWdodCBhcyB3ZWxsIHVzZSByZWxpYWJsZSBm aWd1cmUgd2hlbiBkb2xpbmcgb3V0IG1haW50ZW5hbmNlX3dvcmtfbWVtCkBAIC0yMTY2LDcgKzIx NjcsOCBAQCBfZ2luX3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3Rv YyAqdG9jKQogCS8qIFJlcG9ydCBXQUwvYnVmZmVyIHVzYWdlIGR1cmluZyBwYXJhbGxlbCBleGVj dXRpb24gKi8KIAlidWZmZXJ1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X0JVRkZFUl9VU0FHRSwgZmFsc2UpOwogCXdhbHVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQ QVJBTExFTF9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KCZi dWZmZXJ1c2FnZVtQYXJhbGxlbFdvcmtlck51bWJlcl0sCisJSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5 KGluc3RyLAorCQkJCQkJICAmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAogCQkJ CQkJICAmd2FsdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsKIAogCWluZGV4X2Nsb3NlKGlu ZGV4UmVsLCBpbmRleExvY2ttb2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMKaW5k ZXggZTkwOTY0MDgwY2EuLjcxN2Q2YzFhMTFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNv cnQuYwpAQCAtMTc1MCw2ICsxNzUwLDcgQEAgX2J0X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3Nl Z21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCVJlbGF0aW9uCWluZGV4UmVsOwogCUxPQ0tNT0RF CWhlYXBMb2NrbW9kZTsKIAlMT0NLTU9ERQlpbmRleExvY2ttb2RlOworCUluc3RydW1lbnRhdGlv biAqaW5zdHI7CiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVz YWdlOwogCWludAkJCXNvcnRtZW07CkBAIC0xODI1LDcgKzE4MjYsNyBAQCBfYnRfcGFyYWxsZWxf YnVpbGRfbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJfQogCiAJLyogUHJl cGFyZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwot CUluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CisJaW5zdHIgPSBJbnN0clN0YXJ0UGFyYWxsZWxR dWVyeSgpOwogCiAJLyogUGVyZm9ybSBzb3J0aW5nIG9mIHNwb29sLCBhbmQgcG9zc2libHkgYSBz cG9vbDIgKi8KIAlzb3J0bWVtID0gbWFpbnRlbmFuY2Vfd29ya19tZW0gLyBidHNoYXJlZC0+c2Nh bnR1cGxlc29ydHN0YXRlczsKQEAgLTE4MzUsNyArMTgzNiw4IEBAIF9idF9wYXJhbGxlbF9idWls ZF9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBSZXBvcnQgV0FML2J1 ZmZlciB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uICovCiAJYnVmZmVydXNhZ2UgPSBz aG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3 YWx1c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dBTF9VU0FHRSwgZmFs c2UpOwotCUluc3RyRW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVydXNhZ2VbUGFyYWxsZWxXb3JrZXJO dW1iZXJdLAorCUluc3RyRW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKKwkJCQkJCSAgJmJ1ZmZlcnVz YWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSwKIAkJCQkJCSAgJndhbHVzYWdlW1BhcmFsbGVsV29y a2VyTnVtYmVyXSk7CiAKICNpZmRlZiBCVFJFRV9CVUlMRF9TVEFUUwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggMGZlZWExZDMwZWMuLmM1MzA5YTAxNWU2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTk5NCw2ICs5OTQsNyBAQCBwYXJhbGxl bF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJUFZJbmRTdGF0 cyAqaW5kc3RhdHM7CiAJUFZTaGFyZWQgICAqc2hhcmVkOwogCVRpZFN0b3JlICAgKmRlYWRfaXRl bXM7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0cjsKIAlCdWZmZXJVc2FnZSAqYnVmZmVyX3VzYWdl OwogCVdhbFVzYWdlICAgKndhbF91c2FnZTsKIAlpbnQJCQluaW5kZXhlczsKQEAgLTEwODMsNyAr MTA4NCw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9tYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2Mg KnRvYykKIAllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOwogCiAJLyogUHJlcGFy ZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwotCUlu c3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CisJaW5zdHIgPSBJbnN0clN0YXJ0UGFyYWxsZWxRdWVy eSgpOwogCiAJLyogUHJvY2VzcyBpbmRleGVzIHRvIHBlcmZvcm0gdmFjdXVtL2NsZWFudXAgKi8K IAlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19zYWZlX2luZGV4ZXMoJnB2cyk7CkBAIC0xMDkxLDcg KzEwOTIsOCBAQCBwYXJhbGxlbF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9j ICp0b2MpCiAJLyogUmVwb3J0IGJ1ZmZlci9XQUwgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1 dGlvbiAqLwogCWJ1ZmZlcl91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfVkFD VVVNX0tFWV9CVUZGRVJfVVNBR0UsIGZhbHNlKTsKIAl3YWxfdXNhZ2UgPSBzaG1fdG9jX2xvb2t1 cCh0b2MsIFBBUkFMTEVMX1ZBQ1VVTV9LRVlfV0FMX1VTQUdFLCBmYWxzZSk7Ci0JSW5zdHJFbmRQ YXJhbGxlbFF1ZXJ5KCZidWZmZXJfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAorCUluc3Ry RW5kUGFyYWxsZWxRdWVyeShpbnN0ciwKKwkJCQkJCSAgJmJ1ZmZlcl91c2FnZVtQYXJhbGxlbFdv cmtlck51bWJlcl0sCiAJCQkJCQkgICZ3YWxfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdKTsK IAogCS8qIFJlcG9ydCBhbnkgcmVtYWluaW5nIGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5IHRpbWUg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggZTg3ODEwZDI5MmUuLjA2MWM2 YTRhYTY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTQzNCw2ICsxNDM0 LDcgQEAgdm9pZAogUGFyYWxsZWxRdWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAq dG9jKQogewogCUZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlICpmcGVzOworCUluc3RydW1lbnRh dGlvbiAqaW5zdHI7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcl91c2FnZTsKIAlXYWxVc2FnZSAgICp3 YWxfdXNhZ2U7CiAJRGVzdFJlY2VpdmVyICpyZWNlaXZlcjsKQEAgLTE0OTQsNyArMTQ5NSw3IEBA IFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkgKiBs ZWFkZXIsIHdoaWNoIGFsc28gZG9lc24ndCBjb3VudCBidWZmZXIgYWNjZXNzZXMgYW5kIFdBTCBh Y3Rpdml0eSB0aGF0CiAJICogb2NjdXIgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAuCiAJICovCi0J SW5zdHJTdGFydFBhcmFsbGVsUXVlcnkoKTsKKwlpbnN0ciA9IEluc3RyU3RhcnRQYXJhbGxlbFF1 ZXJ5KCk7CiAKIAkvKgogCSAqIFJ1biB0aGUgcGxhbi4gIElmIHdlIHNwZWNpZmllZCBhIHR1cGxl IGJvdW5kLCBiZSBjYXJlZnVsIG5vdCB0byBkZW1hbmQKQEAgLTE1MTAsNyArMTUxMSw4IEBAIFBh cmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAkvKiBSZXBv cnQgYnVmZmVyL1dBTCB1c2FnZSBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0aW9uLiAqLwogCWJ1ZmZl cl91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX0JVRkZFUl9VU0FHRSwg ZmFsc2UpOwogCXdhbF91c2FnZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1dB TF9VU0FHRSwgZmFsc2UpOwotCUluc3RyRW5kUGFyYWxsZWxRdWVyeSgmYnVmZmVyX3VzYWdlW1Bh cmFsbGVsV29ya2VyTnVtYmVyXSwKKwlJbnN0ckVuZFBhcmFsbGVsUXVlcnkoaW5zdHIsCisJCQkJ CQkgICZidWZmZXJfdXNhZ2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdLAogCQkJCQkJICAmd2FsX3Vz YWdlW1BhcmFsbGVsV29ya2VyTnVtYmVyXSk7CiAKIAkvKiBSZXBvcnQgaW5zdHJ1bWVudGF0aW9u IGRhdGEgaWYgYW55IGluc3RydW1lbnRhdGlvbiBvcHRpb25zIGFyZSBzZXQuICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9pbnN0cnVtZW50LmMKaW5kZXggMzcwNTVkMDFmNjEuLjAyYzMzYjdkZWFkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvaW5zdHJ1bWVudC5jCkBAIC0yMCwxMCArMjAsOCBAQAogI2luY2x1ZGUgInV0aWxz L3Jlc293bmVyLmgiCiAKIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7Ci1zdGF0aWMgQnVmZmVy VXNhZ2Ugc2F2ZV9wZ0J1ZmZlclVzYWdlOwogV2FsVXNhZ2UJcGdXYWxVc2FnZTsKIEluc3RyU3Rh Y2sgKnBnSW5zdHJTdGFjayA9IE5VTEw7Ci1zdGF0aWMgV2FsVXNhZ2Ugc2F2ZV9wZ1dhbFVzYWdl OwogCiBzdGF0aWMgdm9pZCBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2FnZSAqZHN0LCBjb25zdCBC dWZmZXJVc2FnZSAqYWRkKTsKIHN0YXRpYyB2b2lkIFdhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3Qs IFdhbFVzYWdlICphZGQpOwpAQCAtNDAwLDIxICszOTgsMjIgQEAgSW5zdHJBZ2dOb2RlKE5vZGVJ bnN0cnVtZW50YXRpb24gKiBkc3QsIE5vZGVJbnN0cnVtZW50YXRpb24gKiBhZGQpCiB9CiAKIC8q IHN0YXJ0IGluc3RydW1lbnRhdGlvbiBkdXJpbmcgcGFyYWxsZWwgZXhlY3V0b3Igc3RhcnR1cCAq Lwotdm9pZAorSW5zdHJ1bWVudGF0aW9uICoKIEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQp CiB7Ci0Jc2F2ZV9wZ0J1ZmZlclVzYWdlID0gcGdCdWZmZXJVc2FnZTsKLQlzYXZlX3BnV2FsVXNh Z2UgPSBwZ1dhbFVzYWdlOworCUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBJbnN0ckFsbG9jKDEs IElOU1RSVU1FTlRfQlVGRkVSUyB8IElOU1RSVU1FTlRfV0FMKTsKKworCUluc3RyU3RhcnQoaW5z dHIpOworCXJldHVybiBpbnN0cjsKIH0KIAogLyogcmVwb3J0IHVzYWdlIGFmdGVyIHBhcmFsbGVs IGV4ZWN1dG9yIHNodXRkb3duICovCiB2b2lkCi1JbnN0ckVuZFBhcmFsbGVsUXVlcnkoQnVmZmVy VXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCitJbnN0ckVuZFBhcmFsbGVsUXVl cnkoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2Fn ZSAqd2FsdXNhZ2UpCiB7Ci0JbWVtc2V0KGJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2Up KTsKLQlCdWZmZXJVc2FnZUFjY3VtRGlmZihidWZ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZzYXZl X3BnQnVmZmVyVXNhZ2UpOwotCW1lbXNldCh3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7 Ci0JV2FsVXNhZ2VBY2N1bURpZmYod2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmc2F2ZV9wZ1dhbFVz YWdlKTsKKwlJbnN0clN0b3AoaW5zdHIsIHRydWUpOworCW1lbWNweShidWZ1c2FnZSwgJmluc3Ry LT5zdGFjay0+YnVmdXNhZ2UsIHNpemVvZihCdWZmZXJVc2FnZSkpOworCW1lbWNweSh3YWx1c2Fn ZSwgJmluc3RyLT5zdGFjay0+d2FsdXNhZ2UsIHNpemVvZihXYWxVc2FnZSkpOwogfQogCiAvKiBh Y2N1bXVsYXRlIHdvcmsgZG9uZSBieSB3b3JrZXJzIGluIGxlYWRlcidzIHN0YXRzICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggYi9zcmMvaW5jbHVkZS9l eGVjdXRvci9pbnN0cnVtZW50LmgKaW5kZXggMzBkODFmY2VhYWEuLmFkY2JjNzVhNzU3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKKysrIGIvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCkBAIC0xODYsOCArMTg2LDggQEAgZXh0ZXJuIHZvaWQg SW5zdHJVcGRhdGVUdXBsZUNvdW50KE5vZGVJbnN0cnVtZW50YXRpb24gKiBpbnN0ciwgZG91Ymxl IG5UdXBsZXMpOwogZXh0ZXJuIHZvaWQgSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVtZW50YXRpb24g KiBpbnN0cik7CiBleHRlcm4gdm9pZCBJbnN0ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAq IGRzdCwgTm9kZUluc3RydW1lbnRhdGlvbiAqIGFkZCk7CiAKLWV4dGVybiB2b2lkIEluc3RyU3Rh cnRQYXJhbGxlbFF1ZXJ5KHZvaWQpOwotZXh0ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5 KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKK2V4dGVybiBJbnN0 cnVtZW50YXRpb24gKkluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpOworZXh0ZXJuIHZvaWQg SW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIEJ1ZmZlclVzYWdl ICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKIGV4dGVybiB2b2lkIEluc3RyQWNjdW1Q YXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsK IGV4dGVybiB2b2lkIEJ1ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZlclVzYWdlICpkc3QsCiAJCQkJ CQkJCSBjb25zdCBCdWZmZXJVc2FnZSAqYWRkLCBjb25zdCBCdWZmZXJVc2FnZSAqc3ViKTsKLS0g CjIuNDcuMQoK --000000000000dd059506426f2cb7 Content-Type: application/octet-stream; name="v4-0002-Separate-node-and-trigger-instrumentation-from-ot.patch" Content-Disposition: attachment; filename="v4-0002-Separate-node-and-trigger-instrumentation-from-ot.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mheislv51 RnJvbSAzMjQ2NjZiMzVkNDUxMzY3Njc4M2YwYzM1MmFkM2EyNzM3MWMwOGQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBT YXQsIDEgTWFyIDIwMjUgMTk6MzE6MzAgLTA4MDAKU3ViamVjdDogW1BBVENIIHY0IDIvN10gU2Vw YXJhdGUgbm9kZSBhbmQgdHJpZ2dlciBpbnN0cnVtZW50YXRpb24gZnJvbSBvdGhlcgogdXNlIG9m IEluc3RydW1lbnRhdGlvbiBzdHJ1Y3QKClByZXZpb3VzbHkgZGlmZmVyZW50IHBsYWNlcyAoZS5n LiBxdWVyeSAidG90YWwgdGltZSIpIHdlcmUgcmVwdXJwb3NpbmcKdGhlIEluc3RydW1lbnRhdGlv biBzdHJ1Y3QgaW5pdGlhbGx5IGludHJvZHVjZWQgZm9yIGNhcHR1cmluZyBwZXItbm9kZQpzdGF0 aXN0aWNzIGR1cmluZyBleGVjdXRpb24uIFRoaXMgb3ZlcnVzZSBvZiB0aGUgc2FtZSBzdHJ1Y3Qg aXMgY29uZnVzaW5nLAplLmcuIGJ5IGNsdXR0ZXJpbmcgY2FsbHMgb2YgSW5zdHJTdGFydE5vZGUv SW5zdHJTdG9wTm9kZSBpbiB1bnJlbGF0ZWQKY29kZSBwYXRocywgYW5kIHByZXZlbnRzIGZ1dHVy ZSByZWZhY3RvcmluZ3MuCgpJbnN0ZWFkLCBzaW1wbGlmeSB0aGUgSW5zdHJ1bWVudGF0aW9uIHN0 cnVjdCB0byBvbmx5IHRyYWNrIHRpbWUgYW5kCldBTC9idWZmZXIgdXNhZ2UuIFNpbWlsYXJseSwg ZHJvcCB0aGUgdXNlIG9mIEluc3RyRW5kTG9vcCBvdXRzaWRlIG9mCnBlci1ub2RlIGluc3RydW1l bnRhdGlvbiAtIHRoZXNlIGNhbGxzIHdlcmUgYWRkZWQgd2l0aG91dCBhbnkgYXBwYXJlbnQKYmVu ZWZpdCBzaW5jZSB0aGUgcmVsZXZhbnQgZmllbGRzIHdlcmUgbmV2ZXIgcmVhZC4KCkludHJvZHVj ZSB0aGUgTm9kZUluc3RydW1lbnRhdGlvbiBzdHJ1Y3QgdG8gY2FycnkgZm9yd2FyZCB0aGUgcGVy LW5vZGUKaW5zdHJ1bWVudGF0aW9uIGluZm9ybWF0aW9uLCBhbmQgaW50cm9kdWNlIFRyaWdnZXJJ bnN0cnVtZW50YXRpb24gdG8KY2FwdHVyZSB0cmlnZ2VyIHRpbWluZyBhbmQgZmlyaW5ncyAocHJl dmlvdXNseSBjb3VudGVkIGluICJudHVwbGVzIikuCi0tLQogY29udHJpYi9hdXRvX2V4cGxhaW4v YXV0b19leHBsYWluLmMgICAgICAgICAgIHwgICA4ICstCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRz L3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAgIDggKy0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jICAgICAgICAgICAgICAgIHwgIDIxICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJp Z2dlci5jICAgICAgICAgICAgICAgIHwgIDIyICsrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1BhcmFsbGVsLmMgICAgICAgICAgIHwgIDIyICsrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQcm9jbm9kZS5jICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5z dHJ1bWVudC5jICAgICAgICAgICAgIHwgMTIwICsrKysrKysrKysrKysrKystLQogc3JjL2luY2x1 ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oICAgICAgICAgICAgIHwgIDYyICsrKysrKystLQogc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICA1ICstCiAxMSBm aWxlcyBjaGFuZ2VkLCAyMDkgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgYi9jb250cmliL2F1dG9f ZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRleCBjMTBmMmZjMGYyNS4uZWUwYzNiNGM5MWIgMTAw NjQ0Ci0tLSBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCisrKyBiL2NvbnRy aWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCkBAIC0zMTUsNyArMzE1LDcgQEAgZXhwbGFp bl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJTWVt b3J5Q29udGV4dCBvbGRjeHQ7CiAKIAkJCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhx dWVyeURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1l ID0gSW5zdHJBbGxvYygxLCBJTlNUUlVNRU5UX0FMTCwgZmFsc2UpOworCQkJcXVlcnlEZXNjLT50 b3RhbHRpbWUgPSBJbnN0ckFsbG9jKDEsIElOU1RSVU1FTlRfQUxMKTsKIAkJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjeHQpOwogCQl9CiAJfQpAQCAtMzgxLDEyICszODEsNiBAQCBleHBsYWlu X0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQkgKi8KIAkJb2xkY3h0ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19xdWVyeV9jeHQpOwogCi0J CS8qCi0JCSAqIE1ha2Ugc3VyZSBzdGF0cyBhY2N1bXVsYXRpb24gaXMgZG9uZS4gIChOb3RlOiBp dCdzIG9rYXkgaWYgc2V2ZXJhbAotCQkgKiBsZXZlbHMgb2YgaG9vayBhbGwgZG8gdGhpcy4pCi0J CSAqLwotCQlJbnN0ckVuZExvb3AocXVlcnlEZXNjLT50b3RhbHRpbWUpOwotCiAJCS8qIExvZyBw bGFuIGlmIGR1cmF0aW9uIGlzIGV4Y2VlZGVkLiAqLwogCQltc2VjID0gSU5TVFJfVElNRV9HRVRf TUlMTElTRUMocXVlcnlEZXNjLT50b3RhbHRpbWUtPnRvdGFsKTsKIAkJaWYgKG1zZWMgPj0gYXV0 b19leHBsYWluX2xvZ19taW5fZHVyYXRpb24pCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDQ3ZGU0Yzk4YWUzLi43ZjU2NTkyZjUzNiAx MDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRz LmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMK QEAgLTEwMjMsNyArMTAyMyw3IEBAIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIAkJCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCiAJCQlvbGRjeHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocXVlcnlEZXNjLT5lc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7 Ci0JCQlxdWVyeURlc2MtPnRvdGFsdGltZSA9IEluc3RyQWxsb2MoMSwgSU5TVFJVTUVOVF9BTEws IGZhbHNlKTsKKwkJCXF1ZXJ5RGVzYy0+dG90YWx0aW1lID0gSW5zdHJBbGxvYygxLCBJTlNUUlVN RU5UX0FMTCk7CiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAkJfQogCX0KQEAg LTEwODIsMTIgKzEwODIsNiBAQCBwZ3NzX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNj KQogCWlmIChxdWVyeUlkICE9IElOVDY0Q09OU1QoMCkgJiYgcXVlcnlEZXNjLT50b3RhbHRpbWUg JiYKIAkJcGdzc19lbmFibGVkKG5lc3RpbmdfbGV2ZWwpKQogCXsKLQkJLyoKLQkJICogTWFrZSBz dXJlIHN0YXRzIGFjY3VtdWxhdGlvbiBpcyBkb25lLiAgKE5vdGU6IGl0J3Mgb2theSBpZiBzZXZl cmFsCi0JCSAqIGxldmVscyBvZiBob29rIGFsbCBkbyB0aGlzLikKLQkJICovCi0JCUluc3RyRW5k TG9vcChxdWVyeURlc2MtPnRvdGFsdGltZSk7Ci0KIAkJcGdzc19zdG9yZShxdWVyeURlc2MtPnNv dXJjZVRleHQsCiAJCQkJICAgcXVlcnlJZCwKIAkJCQkgICBxdWVyeURlc2MtPnBsYW5uZWRzdG10 LT5zdG10X2xvY2F0aW9uLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCA0NTZi MjY3ZjcwYi4uNzYxOWFjNDg2YzAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBA IC0yNzc4LDcgKzI3NzgsNyBAQCBwb3N0Z3Jlc0l0ZXJhdGVEaXJlY3RNb2RpZnkoRm9yZWlnblNj YW5TdGF0ZSAqbm9kZSkKIAlpZiAoIXJlc3VsdFJlbEluZm8tPnJpX3Byb2plY3RSZXR1cm5pbmcp CiAJewogCQlUdXBsZVRhYmxlU2xvdCAqc2xvdCA9IG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Q7 Ci0JCUluc3RydW1lbnRhdGlvbiAqaW5zdHIgPSBub2RlLT5zcy5wcy5pbnN0cnVtZW50OworCQlO b2RlSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IG5vZGUtPnNzLnBzLmluc3RydW1lbnQ7CiAKIAkJ QXNzZXJ0KCFkbXN0YXRlLT5oYXNfcmV0dXJuaW5nKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmlu ZGV4IGJhMzRjY2UyNmViLi5mZWU3ODJkMWM1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAt MTA5OSwxOCArMTA5OSwxNSBAQCByZXBvcnRfdHJpZ2dlcnMoUmVzdWx0UmVsSW5mbyAqckluZm8s IGJvb2wgc2hvd19yZWxuYW1lLCBFeHBsYWluU3RhdGUgKmVzKQogCWZvciAobnQgPSAwOyBudCA8 IHJJbmZvLT5yaV9UcmlnRGVzYy0+bnVtdHJpZ2dlcnM7IG50KyspCiAJewogCQlUcmlnZ2VyICAg ICp0cmlnID0gckluZm8tPnJpX1RyaWdEZXNjLT50cmlnZ2VycyArIG50OwotCQlJbnN0cnVtZW50 YXRpb24gKmluc3RyID0gckluZm8tPnJpX1RyaWdJbnN0cnVtZW50ICsgbnQ7CisJCVRyaWdnZXJJ bnN0cnVtZW50YXRpb24gKnRnaW5zdHIgPSBySW5mby0+cmlfVHJpZ0luc3RydW1lbnQgKyBudDsK IAkJY2hhcgkgICAqcmVsbmFtZTsKIAkJY2hhcgkgICAqY29ubmFtZSA9IE5VTEw7CiAKLQkJLyog TXVzdCBjbGVhbiB1cCBpbnN0cnVtZW50YXRpb24gc3RhdGUgKi8KLQkJSW5zdHJFbmRMb29wKGlu c3RyKTsKLQogCQkvKgogCQkgKiBXZSBpZ25vcmUgdHJpZ2dlcnMgdGhhdCB3ZXJlIG5ldmVyIGlu dm9rZWQ7IHRoZXkgbGlrZWx5IGFyZW4ndAogCQkgKiByZWxldmFudCB0byB0aGUgY3VycmVudCBx dWVyeSB0eXBlLgogCQkgKi8KLQkJaWYgKGluc3RyLT5udHVwbGVzID09IDApCisJCWlmICh0Z2lu c3RyLT5maXJpbmdzID09IDApCiAJCQljb250aW51ZTsKIAogCQlFeHBsYWluT3Blbkdyb3VwKCJU cmlnZ2VyIiwgTlVMTCwgdHJ1ZSwgZXMpOwpAQCAtMTEzNSwxMCArMTEzMiwxMCBAQCByZXBvcnRf dHJpZ2dlcnMoUmVzdWx0UmVsSW5mbyAqckluZm8sIGJvb2wgc2hvd19yZWxuYW1lLCBFeHBsYWlu U3RhdGUgKmVzKQogCQkJaWYgKHNob3dfcmVsbmFtZSkKIAkJCQlhcHBlbmRTdHJpbmdJbmZvKGVz LT5zdHIsICIgb24gJXMiLCByZWxuYW1lKTsKIAkJCWlmIChlcy0+dGltaW5nKQotCQkJCWFwcGVu ZFN0cmluZ0luZm8oZXMtPnN0ciwgIjogdGltZT0lLjNmIGNhbGxzPSUuMGZcbiIsCi0JCQkJCQkJ CSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhpbnN0ci0+dG90YWwpLCBpbnN0ci0+bnR1cGxlcyk7 CisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiOiB0aW1lPSUuM2YgY2FsbHM9JWRcbiIs CisJCQkJCQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh0Z2luc3RyLT5pbnN0ci50b3RhbCks IHRnaW5zdHItPmZpcmluZ3MpOwogCQkJZWxzZQotCQkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0 ciwgIjogY2FsbHM9JS4wZlxuIiwgaW5zdHItPm50dXBsZXMpOworCQkJCWFwcGVuZFN0cmluZ0lu Zm8oZXMtPnN0ciwgIjogY2FsbHM9JWRcbiIsIHRnaW5zdHItPmZpcmluZ3MpOwogCQl9CiAJCWVs c2UKIAkJewpAQCAtMTE0Nyw5ICsxMTQ0LDkgQEAgcmVwb3J0X3RyaWdnZXJzKFJlc3VsdFJlbElu Zm8gKnJJbmZvLCBib29sIHNob3dfcmVsbmFtZSwgRXhwbGFpblN0YXRlICplcykKIAkJCQlFeHBs YWluUHJvcGVydHlUZXh0KCJDb25zdHJhaW50IE5hbWUiLCBjb25uYW1lLCBlcyk7CiAJCQlFeHBs YWluUHJvcGVydHlUZXh0KCJSZWxhdGlvbiIsIHJlbG5hbWUsIGVzKTsKIAkJCWlmIChlcy0+dGlt aW5nKQotCQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJUaW1lIiwgIm1zIiwgSU5TVFJfVElNRV9H RVRfTUlMTElTRUMoaW5zdHItPnRvdGFsKSwgMywKKwkJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgi VGltZSIsICJtcyIsIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHRnaW5zdHItPmluc3RyLnRvdGFs KSwgMywKIAkJCQkJCQkJCSBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiQ2FsbHMiLCBO VUxMLCBpbnN0ci0+bnR1cGxlcywgMCwgZXMpOworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigi Q2FsbHMiLCBOVUxMLCB0Z2luc3RyLT5maXJpbmdzLCBlcyk7CiAJCX0KIAogCQlpZiAoY29ubmFt ZSkKQEAgLTE4OTMsNyArMTg5MCw3IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRl LCBMaXN0ICphbmNlc3RvcnMsCiAKIAkJZm9yIChpbnQgbiA9IDA7IG4gPCB3LT5udW1fd29ya2Vy czsgbisrKQogCQl7Ci0JCQlJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1 bWVudFtuXTsKKwkJCU5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1 bWVudFtuXTsKIAkJCWRvdWJsZQkJbmxvb3BzID0gaW5zdHJ1bWVudC0+bmxvb3BzOwogCQkJZG91 YmxlCQlzdGFydHVwX21zOwogCQkJZG91YmxlCQl0b3RhbF9tczsKQEAgLTIzMDAsNyArMjI5Nyw3 IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAK IAkJZm9yIChpbnQgbiA9IDA7IG4gPCB3LT5udW1fd29ya2VyczsgbisrKQogCQl7Ci0JCQlJbnN0 cnVtZW50YXRpb24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1bWVudFtuXTsKKwkJCU5vZGVJbnN0 cnVtZW50YXRpb24gKmluc3RydW1lbnQgPSAmdy0+aW5zdHJ1bWVudFtuXTsKIAkJCWRvdWJsZQkJ bmxvb3BzID0gaW5zdHJ1bWVudC0+bmxvb3BzOwogCiAJCQlpZiAobmxvb3BzIDw9IDApCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90cmlnZ2VyLmMKaW5kZXggNTc5YWM4ZDc2YWUuLjE5ZDQ5ZWFjYWZiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdHJpZ2dlci5jCkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBib29sIFRyaWdnZXJFbmFibGVk KEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogc3RhdGljIEhlYXBUdXBs ZSBFeGVjQ2FsbFRyaWdnZXJGdW5jKFRyaWdnZXJEYXRhICp0cmlnZGF0YSwKIAkJCQkJCQkJCSBp bnQgdGdpbmR4LAogCQkJCQkJCQkJIEZtZ3JJbmZvICpmaW5mbywKLQkJCQkJCQkJCSBJbnN0cnVt ZW50YXRpb24gKmluc3RyLAorCQkJCQkJCQkJIFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKiBpbnN0 ciwKIAkJCQkJCQkJCSBNZW1vcnlDb250ZXh0IHBlcl90dXBsZV9jb250ZXh0KTsKIHN0YXRpYyB2 b2lkIEFmdGVyVHJpZ2dlclNhdmVFdmVudChFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAq cmVsaW5mbywKIAkJCQkJCQkJICBSZXN1bHRSZWxJbmZvICpzcmNfcGFydGluZm8sCkBAIC0yMzA5 LDcgKzIzMDksNyBAQCBzdGF0aWMgSGVhcFR1cGxlCiBFeGVjQ2FsbFRyaWdnZXJGdW5jKFRyaWdn ZXJEYXRhICp0cmlnZGF0YSwKIAkJCQkJaW50IHRnaW5keCwKIAkJCQkJRm1nckluZm8gKmZpbmZv LAotCQkJCQlJbnN0cnVtZW50YXRpb24gKmluc3RyLAorCQkJCQlUcmlnZ2VySW5zdHJ1bWVudGF0 aW9uICogaW5zdHIsCiAJCQkJCU1lbW9yeUNvbnRleHQgcGVyX3R1cGxlX2NvbnRleHQpCiB7CiAJ TE9DQUxfRkNJTkZPKGZjaW5mbywgMCk7CkBAIC0yMzQ0LDcgKzIzNDQsNyBAQCBFeGVjQ2FsbFRy aWdnZXJGdW5jKFRyaWdnZXJEYXRhICp0cmlnZGF0YSwKIAkgKiBJZiBkb2luZyBFWFBMQUlOIEFO QUxZWkUsIHN0YXJ0IGNoYXJnaW5nIHRpbWUgdG8gdGhpcyB0cmlnZ2VyLgogCSAqLwogCWlmIChp bnN0cikKLQkJSW5zdHJTdGFydE5vZGUoaW5zdHIgKyB0Z2luZHgpOworCQlJbnN0clN0YXJ0VHJp Z2dlcihpbnN0ciArIHRnaW5keCk7CiAKIAkvKgogCSAqIERvIHRoZSBmdW5jdGlvbiBldmFsdWF0 aW9uIGluIHRoZSBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQsIHNvIHRoYXQKQEAgLTIzODksMTAg KzIzODksMTAgQEAgRXhlY0NhbGxUcmlnZ2VyRnVuYyhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsCiAK IAkvKgogCSAqIElmIGRvaW5nIEVYUExBSU4gQU5BTFlaRSwgc3RvcCBjaGFyZ2luZyB0aW1lIHRv IHRoaXMgdHJpZ2dlciwgYW5kIGNvdW50Ci0JICogb25lICJ0dXBsZSByZXR1cm5lZCIgKHJlYWxs eSB0aGUgbnVtYmVyIG9mIGZpcmluZ3MpLgorCSAqIHRoZSBmaXJpbmcgb2YgdGhlIHRyaWdnZXIu CiAJICovCiAJaWYgKGluc3RyKQotCQlJbnN0clN0b3BOb2RlKGluc3RyICsgdGdpbmR4LCAxKTsK KwkJSW5zdHJTdG9wVHJpZ2dlcihpbnN0ciArIHRnaW5keCwgMSk7CiAKIAlyZXR1cm4gKEhlYXBU dXBsZSkgRGF0dW1HZXRQb2ludGVyKHJlc3VsdCk7CiB9CkBAIC0zOTQ3LDcgKzM5NDcsNyBAQCBz dGF0aWMgdm9pZCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQlS ZXN1bHRSZWxJbmZvICpkc3RfcmVsSW5mbywKIAkJCQkJCQkJVHJpZ2dlckRlc2MgKnRyaWdkZXNj LAogCQkJCQkJCQlGbWdySW5mbyAqZmluZm8sCi0JCQkJCQkJCUluc3RydW1lbnRhdGlvbiAqaW5z dHIsCisJCQkJCQkJCVRyaWdnZXJJbnN0cnVtZW50YXRpb24gKiBpbnN0ciwKIAkJCQkJCQkJTWVt b3J5Q29udGV4dCBwZXJfdHVwbGVfY29udGV4dCwKIAkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnRy aWdfdHVwbGVfc2xvdDEsCiAJCQkJCQkJCVR1cGxlVGFibGVTbG90ICp0cmlnX3R1cGxlX3Nsb3Qy KTsKQEAgLTQzNDAsNyArNDM0MCw3IEBAIEFmdGVyVHJpZ2dlckV4ZWN1dGUoRVN0YXRlICplc3Rh dGUsCiAJCQkJCVJlc3VsdFJlbEluZm8gKnNyY19yZWxJbmZvLAogCQkJCQlSZXN1bHRSZWxJbmZv ICpkc3RfcmVsSW5mbywKIAkJCQkJVHJpZ2dlckRlc2MgKnRyaWdkZXNjLAotCQkJCQlGbWdySW5m byAqZmluZm8sIEluc3RydW1lbnRhdGlvbiAqaW5zdHIsCisJCQkJCUZtZ3JJbmZvICpmaW5mbywg VHJpZ2dlckluc3RydW1lbnRhdGlvbiAqIGluc3RyLAogCQkJCQlNZW1vcnlDb250ZXh0IHBlcl90 dXBsZV9jb250ZXh0LAogCQkJCQlUdXBsZVRhYmxlU2xvdCAqdHJpZ190dXBsZV9zbG90MSwKIAkJ CQkJVHVwbGVUYWJsZVNsb3QgKnRyaWdfdHVwbGVfc2xvdDIpCkBAIC00MzgxLDcgKzQzODEsNyBA QCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRlLAogCSAqIHRvIGluY2x1ZGUgdGlt ZSBzcGVudCByZS1mZXRjaGluZyB0dXBsZXMgaW4gdGhlIHRyaWdnZXIgY29zdC4KIAkgKi8KIAlp ZiAoaW5zdHIpCi0JCUluc3RyU3RhcnROb2RlKGluc3RyICsgdGdpbmR4KTsKKwkJSW5zdHJTdGFy dFRyaWdnZXIoaW5zdHIgKyB0Z2luZHgpOwogCiAJLyoKIAkgKiBGZXRjaCB0aGUgcmVxdWlyZWQg dHVwbGUocykuCkBAIC00NjA0LDEwICs0NjA0LDEwIEBAIEFmdGVyVHJpZ2dlckV4ZWN1dGUoRVN0 YXRlICplc3RhdGUsCiAKIAkvKgogCSAqIElmIGRvaW5nIEVYUExBSU4gQU5BTFlaRSwgc3RvcCBj aGFyZ2luZyB0aW1lIHRvIHRoaXMgdHJpZ2dlciwgYW5kIGNvdW50Ci0JICogb25lICJ0dXBsZSBy ZXR1cm5lZCIgKHJlYWxseSB0aGUgbnVtYmVyIG9mIGZpcmluZ3MpLgorCSAqIHRoZSBmaXJpbmcg b2YgdGhlIHRyaWdnZXIuCiAJICovCiAJaWYgKGluc3RyKQotCQlJbnN0clN0b3BOb2RlKGluc3Ry ICsgdGdpbmR4LCAxKTsKKwkJSW5zdHJTdG9wVHJpZ2dlcihpbnN0ciArIHRnaW5keCwgMSk7CiB9 CiAKIApAQCAtNDcyMyw3ICs0NzIzLDcgQEAgYWZ0ZXJUcmlnZ2VySW52b2tlRXZlbnRzKEFmdGVy VHJpZ2dlckV2ZW50TGlzdCAqZXZlbnRzLAogCVJlbGF0aW9uCXJlbCA9IE5VTEw7CiAJVHJpZ2dl ckRlc2MgKnRyaWdkZXNjID0gTlVMTDsKIAlGbWdySW5mbyAgICpmaW5mbyA9IE5VTEw7Ci0JSW5z dHJ1bWVudGF0aW9uICppbnN0ciA9IE5VTEw7CisJVHJpZ2dlckluc3RydW1lbnRhdGlvbiAqaW5z dHIgPSBOVUxMOwogCVR1cGxlVGFibGVTbG90ICpzbG90MSA9IE5VTEwsCiAJCQkgICAqc2xvdDIg PSBOVUxMOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAyN2M5ZWVjNjk3Yi4uYTk3OTc3 ZDk4OGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YW5k YXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCiAJLyogQWxsb3cgaW5zdHJ1 bWVudGF0aW9uIG9mIEV4ZWN1dG9yIG92ZXJhbGwgcnVudGltZSAqLwogCWlmIChxdWVyeURlc2Mt PnRvdGFsdGltZSkKLQkJSW5zdHJTdGFydE5vZGUocXVlcnlEZXNjLT50b3RhbHRpbWUpOworCQlJ bnN0clN0YXJ0KHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKIAogCS8qCiAJICogZXh0cmFjdCBpbmZv cm1hdGlvbiBmcm9tIHRoZSBxdWVyeSBkZXNjcmlwdG9yIGFuZCB0aGUgcXVlcnkgZmVhdHVyZS4K QEAgLTM4Myw3ICszODMsNyBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5 RGVzYywKIAkJZGVzdC0+clNodXRkb3duKGRlc3QpOwogCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0 aW1lKQotCQlJbnN0clN0b3BOb2RlKHF1ZXJ5RGVzYy0+dG90YWx0aW1lLCBlc3RhdGUtPmVzX3By b2Nlc3NlZCk7CisJCUluc3RyU3RvcChxdWVyeURlc2MtPnRvdGFsdGltZSk7CiAKIAlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiB9CkBAIC00MzMsNyArNDMzLDcgQEAgc3RhbmRh cmRfRXhlY3V0b3JGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2MpCiAKIAkvKiBBbGxvdyBpbnN0 cnVtZW50YXRpb24gb2YgRXhlY3V0b3Igb3ZlcmFsbCBydW50aW1lICovCiAJaWYgKHF1ZXJ5RGVz Yy0+dG90YWx0aW1lKQotCQlJbnN0clN0YXJ0Tm9kZShxdWVyeURlc2MtPnRvdGFsdGltZSk7CisJ CUluc3RyU3RhcnQocXVlcnlEZXNjLT50b3RhbHRpbWUpOwogCiAJLyogUnVuIE1vZGlmeVRhYmxl IG5vZGVzIHRvIGNvbXBsZXRpb24gKi8KIAlFeGVjUG9zdHByb2Nlc3NQbGFuKGVzdGF0ZSk7CkBA IC00NDMsNyArNDQzLDcgQEAgc3RhbmRhcmRfRXhlY3V0b3JGaW5pc2goUXVlcnlEZXNjICpxdWVy eURlc2MpCiAJCUFmdGVyVHJpZ2dlckVuZFF1ZXJ5KGVzdGF0ZSk7CiAKIAlpZiAocXVlcnlEZXNj LT50b3RhbHRpbWUpCi0JCUluc3RyU3RvcE5vZGUocXVlcnlEZXNjLT50b3RhbHRpbWUsIDApOwor CQlJbnN0clN0b3AocXVlcnlEZXNjLT50b3RhbHRpbWUpOwogCiAJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOwogCkBAIC0xMjY2LDcgKzEyNjYsNyBAQCBJbml0UmVzdWx0UmVsSW5m byhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQlyZXN1bHRSZWxJbmZvLT5yaV9Ucmln V2hlbkV4cHJzID0gKEV4cHJTdGF0ZSAqKikKIAkJCXBhbGxvYzAobiAqIHNpemVvZihFeHByU3Rh dGUgKikpOwogCQlpZiAoaW5zdHJ1bWVudF9vcHRpb25zKQotCQkJcmVzdWx0UmVsSW5mby0+cmlf VHJpZ0luc3RydW1lbnQgPSBJbnN0ckFsbG9jKG4sIGluc3RydW1lbnRfb3B0aW9ucywgZmFsc2Up OworCQkJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0luc3RydW1lbnQgPSBJbnN0ckFsbG9jVHJpZ2dl cihuLCBpbnN0cnVtZW50X29wdGlvbnMpOwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUGFyYWxsZWwuYwppbmRleCBmMDk4YTU1NTdjZi4uZTg3ODEwZDI5MmUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC04NSw3ICs4NSw3IEBAIHR5cGVkZWYgc3RydWN0IEZp eGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlCiAgKiBpbnN0cnVtZW50X29wdGlvbnM6IFNhbWUgbWVh bmluZyBoZXJlIGFzIGluIGluc3RydW1lbnQuYy4KICAqCiAgKiBpbnN0cnVtZW50X29mZnNldDog T2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhpcyBzdHJ1Y3R1cmUsCi0gKiBvZiB0 aGUgZmlyc3QgSW5zdHJ1bWVudGF0aW9uIG9iamVjdC4gIFRoaXMgd2lsbCBkZXBlbmQgb24gdGhl IGxlbmd0aCBvZgorICogb2YgdGhlIGZpcnN0IE5vZGVJbnN0cnVtZW50YXRpb24gb2JqZWN0LiAg VGhpcyB3aWxsIGRlcGVuZCBvbiB0aGUgbGVuZ3RoIG9mCiAgKiB0aGUgcGxhbl9ub2RlX2lkIGFy cmF5LgogICoKICAqIG51bV93b3JrZXJzOiBOdW1iZXIgb2Ygd29ya2Vycy4KQEAgLTEwMiwxMSAr MTAyLDE1IEBAIHN0cnVjdCBTaGFyZWRFeGVjdXRvckluc3RydW1lbnRhdGlvbgogCWludAkJCW51 bV93b3JrZXJzOwogCWludAkJCW51bV9wbGFuX25vZGVzOwogCWludAkJCXBsYW5fbm9kZV9pZFtG TEVYSUJMRV9BUlJBWV9NRU1CRVJdOwotCS8qIGFycmF5IG9mIG51bV9wbGFuX25vZGVzICogbnVt X3dvcmtlcnMgSW5zdHJ1bWVudGF0aW9uIG9iamVjdHMgZm9sbG93cyAqLworCisJLyoKKwkgKiBh cnJheSBvZiBudW1fcGxhbl9ub2RlcyAqIG51bV93b3JrZXJzIE5vZGVJbnN0cnVtZW50YXRpb24g b2JqZWN0cworCSAqIGZvbGxvd3MKKwkgKi8KIH07CiAjZGVmaW5lIEdldEluc3RydW1lbnRhdGlv bkFycmF5KHNlaSkgXAogCShBc3NlcnRWYXJpYWJsZUlzT2ZUeXBlTWFjcm8oc2VpLCBTaGFyZWRF eGVjdXRvckluc3RydW1lbnRhdGlvbiAqKSwgXAotCSAoSW5zdHJ1bWVudGF0aW9uICopICgoKGNo YXIgKikgc2VpKSArIHNlaS0+aW5zdHJ1bWVudF9vZmZzZXQpKQorCSAoTm9kZUluc3RydW1lbnRh dGlvbiAqKSAoKChjaGFyICopIHNlaSkgKyBzZWktPmluc3RydW1lbnRfb2Zmc2V0KSkKIAogLyog Q29udGV4dCBvYmplY3QgZm9yIEV4ZWNQYXJhbGxlbEVzdGltYXRlLiAqLwogdHlwZWRlZiBzdHJ1 Y3QgRXhlY1BhcmFsbGVsRXN0aW1hdGVDb250ZXh0CkBAIC03MTMsNyArNzE3LDcgQEAgRXhlY0lu aXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQlp bnN0cnVtZW50YXRpb25fbGVuID0gTUFYQUxJR04oaW5zdHJ1bWVudGF0aW9uX2xlbik7CiAJCWlu c3RydW1lbnRfb2Zmc2V0ID0gaW5zdHJ1bWVudGF0aW9uX2xlbjsKIAkJaW5zdHJ1bWVudGF0aW9u X2xlbiArPQotCQkJbXVsX3NpemUoc2l6ZW9mKEluc3RydW1lbnRhdGlvbiksCisJCQltdWxfc2l6 ZShzaXplb2YoTm9kZUluc3RydW1lbnRhdGlvbiksCiAJCQkJCSBtdWxfc2l6ZShlLm5ub2Rlcywg bndvcmtlcnMpKTsKIAkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBp bnN0cnVtZW50YXRpb25fbGVuKTsKIAkJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3Rp bWF0b3IsIDEpOwpAQCAtNzk5LDcgKzgwMyw3IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAkgKi8KIAlpZiAoZXN0YXRlLT5lc19p bnN0cnVtZW50KQogCXsKLQkJSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50OworCQlOb2RlSW5z dHJ1bWVudGF0aW9uICppbnN0cnVtZW50OwogCQlpbnQJCQlpOwogCiAJCWluc3RydW1lbnRhdGlv biA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBpbnN0cnVtZW50YXRpb25fbGVuKTsKQEAg LTgwOSw3ICs4MTMsNyBAQCBFeGVjSW5pdFBhcmFsbGVsUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwgRVN0YXRlICplc3RhdGUsCiAJCWluc3RydW1lbnRhdGlvbi0+bnVtX3BsYW5fbm9kZXMgPSBl Lm5ub2RlczsKIAkJaW5zdHJ1bWVudCA9IEdldEluc3RydW1lbnRhdGlvbkFycmF5KGluc3RydW1l bnRhdGlvbik7CiAJCWZvciAoaSA9IDA7IGkgPCBud29ya2VycyAqIGUubm5vZGVzOyArK2kpCi0J CQlJbnN0ckluaXQoJmluc3RydW1lbnRbaV0sIGVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCk7CisJCQlJ bnN0ckluaXROb2RlKCZpbnN0cnVtZW50W2ldLCBlc3RhdGUtPmVzX2luc3RydW1lbnQpOwogCQlz aG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9JTlNUUlVNRU5UQVRJT04sCiAJ CQkJCSAgIGluc3RydW1lbnRhdGlvbik7CiAJCXBlaS0+aW5zdHJ1bWVudGF0aW9uID0gaW5zdHJ1 bWVudGF0aW9uOwpAQCAtMTAzNiw3ICsxMDQwLDcgQEAgc3RhdGljIGJvb2wKIEV4ZWNQYXJhbGxl bFJldHJpZXZlSW5zdHJ1bWVudGF0aW9uKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJ U2hhcmVkRXhlY3V0b3JJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnRhdGlvbikKIHsKLQlJbnN0 cnVtZW50YXRpb24gKmluc3RydW1lbnQ7CisJTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVu dDsKIAlpbnQJCQlpOwogCWludAkJCW47CiAJaW50CQkJaWJ5dGVzOwpAQCAtMTA2NCw3ICsxMDY4 LDcgQEAgRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRlICpwbGFu c3RhdGUsCiAJICogU3dpdGNoIGludG8gcGVyLXF1ZXJ5IG1lbW9yeSBjb250ZXh0LgogCSAqLwog CW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbnN0YXRlLT5zdGF0ZS0+ZXNf cXVlcnlfY3h0KTsKLQlpYnl0ZXMgPSBtdWxfc2l6ZShpbnN0cnVtZW50YXRpb24tPm51bV93b3Jr ZXJzLCBzaXplb2YoSW5zdHJ1bWVudGF0aW9uKSk7CisJaWJ5dGVzID0gbXVsX3NpemUoaW5zdHJ1 bWVudGF0aW9uLT5udW1fd29ya2Vycywgc2l6ZW9mKE5vZGVJbnN0cnVtZW50YXRpb24pKTsKIAlw bGFuc3RhdGUtPndvcmtlcl9pbnN0cnVtZW50ID0KIAkJcGFsbG9jKGlieXRlcyArIG9mZnNldG9m KFdvcmtlckluc3RydW1lbnRhdGlvbiwgaW5zdHJ1bWVudCkpOwogCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjb250ZXh0KTsKQEAgLTEyOTYsNyArMTMwMCw3IEBAIEV4ZWNQYXJhbGxlbFJlcG9y dEluc3RydW1lbnRhdGlvbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIHsKIAlpbnQJCQlpOwogCWlu dAkJCXBsYW5fbm9kZV9pZCA9IHBsYW5zdGF0ZS0+cGxhbi0+cGxhbl9ub2RlX2lkOwotCUluc3Ry dW1lbnRhdGlvbiAqaW5zdHJ1bWVudDsKKwlOb2RlSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50 OwogCiAJSW5zdHJFbmRMb29wKHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggZjVmOWNmYmVlYWQuLmQyODY0NzEyNTRiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUHJvY25vZGUuYwpAQCAtNDEzLDggKzQxMyw4IEBAIEV4ZWNJbml0Tm9k ZShQbGFuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIFNldCB1cCBp bnN0cnVtZW50YXRpb24gZm9yIHRoaXMgbm9kZSBpZiByZXF1ZXN0ZWQgKi8KIAlpZiAoZXN0YXRl LT5lc19pbnN0cnVtZW50KQotCQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jKDEsIGVz dGF0ZS0+ZXNfaW5zdHJ1bWVudCwKLQkJCQkJCQkJCQlyZXN1bHQtPmFzeW5jX2NhcGFibGUpOwor CQlyZXN1bHQtPmluc3RydW1lbnQgPSBJbnN0ckFsbG9jTm9kZSgxLCBlc3RhdGUtPmVzX2luc3Ry dW1lbnQsCisJCQkJCQkJCQkJCXJlc3VsdC0+YXN5bmNfY2FwYWJsZSk7CiAKIAlyZXR1cm4gcmVz dWx0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IDIwNjUzYTVjNGM0Li40MWEz NDJjYWI3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpAQCAtMjYsOSArMjYsOSBAQCBz dGF0aWMgdm9pZCBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2FnZSAqZHN0LCBjb25zdCBCdWZmZXJV c2FnZSAqYWRkKTsKIHN0YXRpYyB2b2lkIFdhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIFdhbFVz YWdlICphZGQpOwogCiAKLS8qIEFsbG9jYXRlIG5ldyBpbnN0cnVtZW50YXRpb24gc3RydWN0dXJl KHMpICovCisvKiBHZW5lcmFsIHB1cnBvc2UgaW5zdHJ1bWVudGF0aW9uIGhhbmRsaW5nICovCiBJ bnN0cnVtZW50YXRpb24gKgotSW5zdHJBbGxvYyhpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9u cywgYm9vbCBhc3luY19tb2RlKQorSW5zdHJBbGxvYyhpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0 aW9ucykKIHsKIAlJbnN0cnVtZW50YXRpb24gKmluc3RyOwogCkBAIC00MSw2ICs0MSwxMDggQEAg SW5zdHJBbGxvYyhpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucywgYm9vbCBhc3luY19tb2Rl KQogCQlib29sCQluZWVkX3RpbWVyID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRf VElNRVIpICE9IDA7CiAJCWludAkJCWk7CiAKKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwkJ eworCQkJaW5zdHJbaV0ubmVlZF9idWZ1c2FnZSA9IG5lZWRfYnVmZmVyczsKKwkJCWluc3RyW2ld Lm5lZWRfd2FsdXNhZ2UgPSBuZWVkX3dhbDsKKwkJCWluc3RyW2ldLm5lZWRfdGltZXIgPSBuZWVk X3RpbWVyOworCQl9CisJfQorCisJcmV0dXJuIGluc3RyOworfQorCit2b2lkCitJbnN0clN0YXJ0 KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCit7CisJaWYgKGluc3RyLT5uZWVkX3RpbWVyICYmCisJ CSFJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0xBWlkoaW5zdHItPnN0YXJ0dGltZSkpCisJCWVsb2co RVJST1IsICJJbnN0clN0YXJ0IGNhbGxlZCB0d2ljZSBpbiBhIHJvdyIpOworCisJaWYgKGluc3Ry LT5uZWVkX2J1ZnVzYWdlKQorCQlpbnN0ci0+YnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdl OworCisJaWYgKGluc3RyLT5uZWVkX3dhbHVzYWdlKQorCQlpbnN0ci0+d2FsdXNhZ2Vfc3RhcnQg PSBwZ1dhbFVzYWdlOworfQorCit2b2lkCitJbnN0clN0b3AoSW5zdHJ1bWVudGF0aW9uICppbnN0 cikKK3sKKwlpbnN0cl90aW1lCWVuZHRpbWU7CisKKwkvKiBsZXQncyB1cGRhdGUgdGhlIHRpbWUg b25seSBpZiB0aGUgdGltZXIgd2FzIHJlcXVlc3RlZCAqLworCWlmIChpbnN0ci0+bmVlZF90aW1l cikKKwl7CisJCWlmIChJTlNUUl9USU1FX0lTX1pFUk8oaW5zdHItPnN0YXJ0dGltZSkpCisJCQll bG9nKEVSUk9SLCAiSW5zdHJTdG9wIGNhbGxlZCB3aXRob3V0IHN0YXJ0Iik7CisKKwkJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVChlbmR0aW1lKTsKKwkJSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGluc3Ry LT50b3RhbCwgZW5kdGltZSwgaW5zdHItPnN0YXJ0dGltZSk7CisKKwkJSU5TVFJfVElNRV9TRVRf WkVSTyhpbnN0ci0+c3RhcnR0aW1lKTsKKwl9CisKKwkvKiBBZGQgZGVsdGEgb2YgYnVmZmVyIHVz YWdlIHNpbmNlIGVudHJ5IHRvIG5vZGUncyB0b3RhbHMgKi8KKwlpZiAoaW5zdHItPm5lZWRfYnVm dXNhZ2UpCisJCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZpbnN0ci0+YnVmdXNhZ2UsCisJCQkJCQkJ ICZwZ0J1ZmZlclVzYWdlLCAmaW5zdHItPmJ1ZnVzYWdlX3N0YXJ0KTsKKworCWlmIChpbnN0ci0+ bmVlZF93YWx1c2FnZSkKKwkJV2FsVXNhZ2VBY2N1bURpZmYoJmluc3RyLT53YWx1c2FnZSwKKwkJ CQkJCSAgJnBnV2FsVXNhZ2UsICZpbnN0ci0+d2FsdXNhZ2Vfc3RhcnQpOworfQorCisvKiBUcmln Z2VyIGluc3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLworVHJpZ2dlckluc3RydW1lbnRhdGlvbiAq CitJbnN0ckFsbG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKK3sKKwlU cmlnZ2VySW5zdHJ1bWVudGF0aW9uICp0Z2luc3RyID0gcGFsbG9jMChuICogc2l6ZW9mKFRyaWdn ZXJJbnN0cnVtZW50YXRpb24pKTsKKwlib29sCQluZWVkX2J1ZmZlcnMgPSAoaW5zdHJ1bWVudF9v cHRpb25zICYgSU5TVFJVTUVOVF9CVUZGRVJTKSAhPSAwOworCWJvb2wJCW5lZWRfd2FsID0gKGlu c3RydW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRfV0FMKSAhPSAwOworCWJvb2wJCW5lZWRfdGlt ZXIgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5TVFJVTUVOVF9USU1FUikgIT0gMDsKKwlpbnQJ CQlpOworCisJZm9yIChpID0gMDsgaSA8IG47IGkrKykKKwl7CisJCXRnaW5zdHJbaV0uaW5zdHIu bmVlZF9idWZ1c2FnZSA9IG5lZWRfYnVmZmVyczsKKwkJdGdpbnN0cltpXS5pbnN0ci5uZWVkX3dh bHVzYWdlID0gbmVlZF93YWw7CisJCXRnaW5zdHJbaV0uaW5zdHIubmVlZF90aW1lciA9IG5lZWRf dGltZXI7CisJfQorCisJcmV0dXJuIHRnaW5zdHI7Cit9CisKK3ZvaWQKK0luc3RyU3RhcnRUcmln Z2VyKFRyaWdnZXJJbnN0cnVtZW50YXRpb24gKiB0Z2luc3RyKQoreworCUluc3RyU3RhcnQoJnRn aW5zdHItPmluc3RyKTsKK30KKwordm9pZAorSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1 bWVudGF0aW9uICogdGdpbnN0ciwgaW50IGZpcmluZ3MpCit7CisJSW5zdHJTdG9wKCZ0Z2luc3Ry LT5pbnN0cik7CisJdGdpbnN0ci0+ZmlyaW5ncyArPSBmaXJpbmdzOworfQorCisvKiBOb2RlIGlu c3RydW1lbnRhdGlvbiBoYW5kbGluZyAqLworCisvKiBBbGxvY2F0ZSBuZXcgbm9kZSBpbnN0cnVt ZW50YXRpb24gc3RydWN0dXJlKHMpICovCitOb2RlSW5zdHJ1bWVudGF0aW9uICoKK0luc3RyQWxs b2NOb2RlKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zLCBib29sIGFzeW5jX21vZGUpCit7 CisJTm9kZUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CisKKwkvKiBpbml0aWFsaXplIGFsbCBmaWVs ZHMgdG8gemVyb2VzLCB0aGVuIG1vZGlmeSBhcyBuZWVkZWQgKi8KKwlpbnN0ciA9IHBhbGxvYzAo biAqIHNpemVvZihOb2RlSW5zdHJ1bWVudGF0aW9uKSk7CisJaWYgKGluc3RydW1lbnRfb3B0aW9u cyAmIChJTlNUUlVNRU5UX0JVRkZFUlMgfCBJTlNUUlVNRU5UX1RJTUVSIHwgSU5TVFJVTUVOVF9X QUwpKQorCXsKKwkJYm9vbAkJbmVlZF9idWZmZXJzID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElO U1RSVU1FTlRfQlVGRkVSUykgIT0gMDsKKwkJYm9vbAkJbmVlZF93YWwgPSAoaW5zdHJ1bWVudF9v cHRpb25zICYgSU5TVFJVTUVOVF9XQUwpICE9IDA7CisJCWJvb2wJCW5lZWRfdGltZXIgPSAoaW5z dHJ1bWVudF9vcHRpb25zICYgSU5TVFJVTUVOVF9USU1FUikgIT0gMDsKKwkJaW50CQkJaTsKKwog CQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogCQl7CiAJCQlpbnN0cltpXS5uZWVkX2J1ZnVzYWdl ID0gbmVlZF9idWZmZXJzOwpAQCAtNTUsOSArMTU3LDkgQEAgSW5zdHJBbGxvYyhpbnQgbiwgaW50 IGluc3RydW1lbnRfb3B0aW9ucywgYm9vbCBhc3luY19tb2RlKQogCiAvKiBJbml0aWFsaXplIGEg cHJlLWFsbG9jYXRlZCBpbnN0cnVtZW50YXRpb24gc3RydWN0dXJlLiAqLwogdm9pZAotSW5zdHJJ bml0KEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGludCBpbnN0cnVtZW50X29wdGlvbnMpCitJbnN0 ckluaXROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKiBpbnN0ciwgaW50IGluc3RydW1lbnRfb3B0 aW9ucykKIHsKLQltZW1zZXQoaW5zdHIsIDAsIHNpemVvZihJbnN0cnVtZW50YXRpb24pKTsKKwlt ZW1zZXQoaW5zdHIsIDAsIHNpemVvZihOb2RlSW5zdHJ1bWVudGF0aW9uKSk7CiAJaW5zdHItPm5l ZWRfYnVmdXNhZ2UgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5TVFJVTUVOVF9CVUZGRVJTKSAh PSAwOwogCWluc3RyLT5uZWVkX3dhbHVzYWdlID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RS VU1FTlRfV0FMKSAhPSAwOwogCWluc3RyLT5uZWVkX3RpbWVyID0gKGluc3RydW1lbnRfb3B0aW9u cyAmIElOU1RSVU1FTlRfVElNRVIpICE9IDA7CkBAIC02NSw3ICsxNjcsNyBAQCBJbnN0ckluaXQo SW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRfb3B0aW9ucykKIAogLyogRW50 cnkgdG8gYSBwbGFuIG5vZGUgKi8KIHZvaWQKLUluc3RyU3RhcnROb2RlKEluc3RydW1lbnRhdGlv biAqaW5zdHIpCitJbnN0clN0YXJ0Tm9kZShOb2RlSW5zdHJ1bWVudGF0aW9uICogaW5zdHIpCiB7 CiAJaWYgKGluc3RyLT5uZWVkX3RpbWVyICYmCiAJCSFJTlNUUl9USU1FX1NFVF9DVVJSRU5UX0xB WlkoaW5zdHItPnN0YXJ0dGltZSkpCkBAIC04MSw3ICsxODMsNyBAQCBJbnN0clN0YXJ0Tm9kZShJ bnN0cnVtZW50YXRpb24gKmluc3RyKQogCiAvKiBFeGl0IGZyb20gYSBwbGFuIG5vZGUgKi8KIHZv aWQKLUluc3RyU3RvcE5vZGUoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91YmxlIG5UdXBsZXMp CitJbnN0clN0b3BOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKiBpbnN0ciwgZG91YmxlIG5UdXBs ZXMpCiB7CiAJZG91YmxlCQlzYXZlX3R1cGxlY291bnQgPSBpbnN0ci0+dHVwbGVjb3VudDsKIAlp bnN0cl90aW1lCWVuZHRpbWU7CkBAIC0xMjksNyArMjMxLDcgQEAgSW5zdHJTdG9wTm9kZShJbnN0 cnVtZW50YXRpb24gKmluc3RyLCBkb3VibGUgblR1cGxlcykKIAogLyogVXBkYXRlIHR1cGxlIGNv dW50ICovCiB2b2lkCi1JbnN0clVwZGF0ZVR1cGxlQ291bnQoSW5zdHJ1bWVudGF0aW9uICppbnN0 ciwgZG91YmxlIG5UdXBsZXMpCitJbnN0clVwZGF0ZVR1cGxlQ291bnQoTm9kZUluc3RydW1lbnRh dGlvbiAqIGluc3RyLCBkb3VibGUgblR1cGxlcykKIHsKIAkvKiBjb3VudCB0aGUgcmV0dXJuZWQg dHVwbGVzICovCiAJaW5zdHItPnR1cGxlY291bnQgKz0gblR1cGxlczsKQEAgLTEzNyw3ICsyMzks NyBAQCBJbnN0clVwZGF0ZVR1cGxlQ291bnQoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgZG91Ymxl IG5UdXBsZXMpCiAKIC8qIEZpbmlzaCBhIHJ1biBjeWNsZSBmb3IgYSBwbGFuIG5vZGUgKi8KIHZv aWQKLUluc3RyRW5kTG9vcChJbnN0cnVtZW50YXRpb24gKmluc3RyKQorSW5zdHJFbmRMb29wKE5v ZGVJbnN0cnVtZW50YXRpb24gKiBpbnN0cikKIHsKIAkvKiBTa2lwIGlmIG5vdGhpbmcgaGFzIGhh cHBlbmVkLCBvciBhbHJlYWR5IHNodXQgZG93biAqLwogCWlmICghaW5zdHItPnJ1bm5pbmcpCkBA IC0xNjIsNyArMjY0LDcgQEAgSW5zdHJFbmRMb29wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpCiAK IC8qIGFnZ3JlZ2F0ZSBpbnN0cnVtZW50YXRpb24gaW5mb3JtYXRpb24gKi8KIHZvaWQKLUluc3Ry QWdnTm9kZShJbnN0cnVtZW50YXRpb24gKmRzdCwgSW5zdHJ1bWVudGF0aW9uICphZGQpCitJbnN0 ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqIGRzdCwgTm9kZUluc3RydW1lbnRhdGlvbiAq IGFkZCkKIHsKIAlpZiAoIWRzdC0+cnVubmluZyAmJiBhZGQtPnJ1bm5pbmcpCiAJewpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IGRmYzhiM2M5NzY1Li40OTg2ZjZjZWE1NCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtNjcsNyArNjcsNDAgQEAgdHlwZWRlZiBlbnVtIElu c3RydW1lbnRPcHRpb24KIAlJTlNUUlVNRU5UX0FMTCA9IFBHX0lOVDMyX01BWAogfSBJbnN0cnVt ZW50T3B0aW9uOwogCisvKgorICogR2VuZXJhbCBwdXJwb3NlIGluc3RydW1lbnRhdGlvbiB0aGF0 IGNhbiBjYXB0dXJlIHRpbWUgYW5kIFdBTC9idWZmZXIgdXNhZ2UKKyAqCisgKiBJbml0aWFsaXpl ZCB0aHJvdWdoIEluc3RyQWxsb2MsIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGNhbGxzIHRvIGEg cGFpciBvZgorICogSW5zdHJTdGFydC9JbnN0clN0b3AgKGFjdGl2aXR5IGlzIG1lYXN1cmVkIGlu YmV0d2VlbikuCisgKi8KIHR5cGVkZWYgc3RydWN0IEluc3RydW1lbnRhdGlvbgoreworCS8qIFBh cmFtZXRlcnMgc2V0IGF0IGNyZWF0aW9uOiAqLworCWJvb2wJCW5lZWRfdGltZXI7CQkvKiB0cnVl IGlmIHdlIG5lZWQgdGltZXIgZGF0YSAqLworCWJvb2wJCW5lZWRfYnVmdXNhZ2U7CS8qIHRydWUg aWYgd2UgbmVlZCBidWZmZXIgdXNhZ2UgZGF0YSAqLworCWJvb2wJCW5lZWRfd2FsdXNhZ2U7CS8q IHRydWUgaWYgd2UgbmVlZCBXQUwgdXNhZ2UgZGF0YSAqLworCS8qIEludGVybmFsIHN0YXRlIGtl ZXBpbmc6ICovCisJaW5zdHJfdGltZQlzdGFydHRpbWU7CQkvKiBzdGFydCB0aW1lIG9mIGxhc3Qg SW5zdHJTdGFydCAqLworCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0OyAvKiBidWZmZXIgdXNh Z2UgYXQgc3RhcnQgKi8KKwlXYWxVc2FnZQl3YWx1c2FnZV9zdGFydDsgLyogV0FMIHVzYWdlIGF0 IHN0YXJ0ICovCisJLyogQWNjdW11bGF0ZWQgc3RhdGlzdGljczogKi8KKwlpbnN0cl90aW1lCXRv dGFsOwkJCS8qIHRvdGFsIHJ1bnRpbWUgKi8KKwlCdWZmZXJVc2FnZSBidWZ1c2FnZTsJCS8qIHRv dGFsIGJ1ZmZlciB1c2FnZSAqLworCVdhbFVzYWdlCXdhbHVzYWdlOwkJLyogdG90YWwgV0FMIHVz YWdlICovCit9IEluc3RydW1lbnRhdGlvbjsKKworLyogVHJpZ2dlciBpbnN0cnVtZW50YXRpb24g Ki8KK3R5cGVkZWYgc3RydWN0IFRyaWdnZXJJbnN0cnVtZW50YXRpb24KK3sKKwlJbnN0cnVtZW50 YXRpb24gaW5zdHI7CisJaW50CQkJZmlyaW5nczsJCS8qIG51bWJlciBvZiB0aW1lcyB0aGUgaW5z dHJ1bWVudGVkIHRyaWdnZXIKKwkJCQkJCQkJICogd2FzIGZpcmVkICovCit9CQkJVHJpZ2dlcklu c3RydW1lbnRhdGlvbjsKKworLyoKKyAqIFNwZWNpYWxpemVkIGluc3RydW1lbnRhdGlvbiBmb3Ig cGVyLW5vZGUgZXhlY3V0aW9uIHN0YXRpc3RpY3MKKyAqLwordHlwZWRlZiBzdHJ1Y3QgTm9kZUlu c3RydW1lbnRhdGlvbgogewogCS8qIFBhcmFtZXRlcnMgc2V0IGF0IG5vZGUgY3JlYXRpb246ICov CiAJYm9vbAkJbmVlZF90aW1lcjsJCS8qIHRydWUgaWYgd2UgbmVlZCB0aW1lciBkYXRhICovCkBA IC05MiwyNSArMTI1LDM0IEBAIHR5cGVkZWYgc3RydWN0IEluc3RydW1lbnRhdGlvbgogCWRvdWJs ZQkJbmZpbHRlcmVkMjsJCS8qICMgb2YgdHVwbGVzIHJlbW92ZWQgYnkgIm90aGVyIiBxdWFscyAq LwogCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlOwkJLyogdG90YWwgYnVmZmVyIHVzYWdlICovCiAJV2Fs VXNhZ2UJd2FsdXNhZ2U7CQkvKiB0b3RhbCBXQUwgdXNhZ2UgKi8KLX0gSW5zdHJ1bWVudGF0aW9u OworfQkJCU5vZGVJbnN0cnVtZW50YXRpb247CiAKIHR5cGVkZWYgc3RydWN0IFdvcmtlckluc3Ry dW1lbnRhdGlvbgogewogCWludAkJCW51bV93b3JrZXJzOwkvKiAjIG9mIHN0cnVjdHVyZXMgdGhh dCBmb2xsb3cgKi8KLQlJbnN0cnVtZW50YXRpb24gaW5zdHJ1bWVudFtGTEVYSUJMRV9BUlJBWV9N RU1CRVJdOworCU5vZGVJbnN0cnVtZW50YXRpb24gaW5zdHJ1bWVudFtGTEVYSUJMRV9BUlJBWV9N RU1CRVJdOwogfSBXb3JrZXJJbnN0cnVtZW50YXRpb247CiAKIGV4dGVybiBQR0RMTElNUE9SVCBC dWZmZXJVc2FnZSBwZ0J1ZmZlclVzYWdlOwogZXh0ZXJuIFBHRExMSU1QT1JUIFdhbFVzYWdlIHBn V2FsVXNhZ2U7CiAKLWV4dGVybiBJbnN0cnVtZW50YXRpb24gKkluc3RyQWxsb2MoaW50IG4sIGlu dCBpbnN0cnVtZW50X29wdGlvbnMsCi0JCQkJCQkJCSAgIGJvb2wgYXN5bmNfbW9kZSk7Ci1leHRl cm4gdm9pZCBJbnN0ckluaXQoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgaW50IGluc3RydW1lbnRf b3B0aW9ucyk7Ci1leHRlcm4gdm9pZCBJbnN0clN0YXJ0Tm9kZShJbnN0cnVtZW50YXRpb24gKmlu c3RyKTsKLWV4dGVybiB2b2lkIEluc3RyU3RvcE5vZGUoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwg ZG91YmxlIG5UdXBsZXMpOwotZXh0ZXJuIHZvaWQgSW5zdHJVcGRhdGVUdXBsZUNvdW50KEluc3Ry dW1lbnRhdGlvbiAqaW5zdHIsIGRvdWJsZSBuVHVwbGVzKTsKLWV4dGVybiB2b2lkIEluc3RyRW5k TG9vcChJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKLWV4dGVybiB2b2lkIEluc3RyQWdnTm9kZShJ bnN0cnVtZW50YXRpb24gKmRzdCwgSW5zdHJ1bWVudGF0aW9uICphZGQpOworZXh0ZXJuIEluc3Ry dW1lbnRhdGlvbiAqSW5zdHJBbGxvYyhpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9ucyk7Citl eHRlcm4gdm9pZCBJbnN0clN0YXJ0KEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworZXh0ZXJuIHZv aWQgSW5zdHJTdG9wKEluc3RydW1lbnRhdGlvbiAqaW5zdHIpOworCitleHRlcm4gVHJpZ2dlcklu c3RydW1lbnRhdGlvbiAqIEluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9v cHRpb25zKTsKK2V4dGVybiB2b2lkIEluc3RyU3RhcnRUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50 YXRpb24gKiB0Z2luc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyU3RvcFRyaWdnZXIoVHJpZ2dlcklu c3RydW1lbnRhdGlvbiAqIHRnaW5zdHIsIGludCBmaXJpbmdzKTsKKworZXh0ZXJuIE5vZGVJbnN0 cnVtZW50YXRpb24gKiBJbnN0ckFsbG9jTm9kZShpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9u cywKKwkJCQkJCQkJCQkJYm9vbCBhc3luY19tb2RlKTsKK2V4dGVybiB2b2lkIEluc3RySW5pdE5v ZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqIGluc3RyLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsK K2V4dGVybiB2b2lkIEluc3RyU3RhcnROb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKiBpbnN0cik7 CitleHRlcm4gdm9pZCBJbnN0clN0b3BOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKiBpbnN0ciwg ZG91YmxlIG5UdXBsZXMpOworZXh0ZXJuIHZvaWQgSW5zdHJVcGRhdGVUdXBsZUNvdW50KE5vZGVJ bnN0cnVtZW50YXRpb24gKiBpbnN0ciwgZG91YmxlIG5UdXBsZXMpOworZXh0ZXJuIHZvaWQgSW5z dHJFbmRMb29wKE5vZGVJbnN0cnVtZW50YXRpb24gKiBpbnN0cik7CitleHRlcm4gdm9pZCBJbnN0 ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqIGRzdCwgTm9kZUluc3RydW1lbnRhdGlvbiAq IGFkZCk7CisKIGV4dGVybiB2b2lkIEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQpOwogZXh0 ZXJuIHZvaWQgSW5zdHJFbmRQYXJhbGxlbFF1ZXJ5KEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwgV2Fs VXNhZ2UgKndhbHVzYWdlKTsKIGV4dGVybiB2b2lkIEluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KEJ1 ZmZlclVzYWdlICpidWZ1c2FnZSwgV2FsVXNhZ2UgKndhbHVzYWdlKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKaW5kZXggMThhZThmMGQ0YmIuLjZkNTM0NTZkZGM4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApA QCAtNTIxLDcgKzUyMSw3IEBAIHR5cGVkZWYgc3RydWN0IFJlc3VsdFJlbEluZm8KIAlFeHByU3Rh dGUgKipyaV9UcmlnV2hlbkV4cHJzOwogCiAJLyogb3B0aW9uYWwgcnVudGltZSBtZWFzdXJlbWVu dHMgZm9yIHRyaWdnZXJzICovCi0JSW5zdHJ1bWVudGF0aW9uICpyaV9UcmlnSW5zdHJ1bWVudDsK KwlUcmlnZ2VySW5zdHJ1bWVudGF0aW9uICpyaV9UcmlnSW5zdHJ1bWVudDsKIAogCS8qIE9uLWRl bWFuZCBjcmVhdGVkIHNsb3RzIGZvciB0cmlnZ2VycyAvIHJldHVybmluZyBwcm9jZXNzaW5nICov CiAJVHVwbGVUYWJsZVNsb3QgKnJpX1JldHVybmluZ1Nsb3Q7CS8qIGZvciB0cmlnZ2VyIG91dHB1 dCB0dXBsZXMgKi8KQEAgLTExNzIsNyArMTE3Miw4IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5TdGF0 ZQogCUV4ZWNQcm9jTm9kZU10ZCBFeGVjUHJvY05vZGVSZWFsOwkvKiBhY3R1YWwgZnVuY3Rpb24s IGlmIGFib3ZlIGlzIGEKIAkJCQkJCQkJCQkgKiB3cmFwcGVyICovCiAKLQlJbnN0cnVtZW50YXRp b24gKmluc3RydW1lbnQ7CS8qIE9wdGlvbmFsIHJ1bnRpbWUgc3RhdHMgZm9yIHRoaXMgbm9kZSAq LworCU5vZGVJbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQ7CS8qIE9wdGlvbmFsIHJ1bnRpbWUg c3RhdHMgZm9yIHRoaXMKKwkJCQkJCQkJCQkgKiBub2RlICovCiAJV29ya2VySW5zdHJ1bWVudGF0 aW9uICp3b3JrZXJfaW5zdHJ1bWVudDsJLyogcGVyLXdvcmtlciBpbnN0cnVtZW50YXRpb24gKi8K IAogCS8qIFBlci13b3JrZXIgSklUIGluc3RydW1lbnRhdGlvbiAqLwotLSAKMi40Ny4xCgo= --000000000000dd059506426f2cb7 Content-Type: application/octet-stream; name="v4-0004-Optimize-measuring-WAL-buffer-usage-through-stack.patch" Content-Disposition: attachment; filename="v4-0004-Optimize-measuring-WAL-buffer-usage-through-stack.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mheislv93 RnJvbSBlMDNjOTZjYmQzMDc5YzAzYWU2M2I2NDI3OTM3Yjc5ZWRhYTk1NjJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDkgU2VwIDIwMjUgMDI6MTY6NTkgLTA3MDAKU3ViamVjdDogW1BBVENIIHY0IDQvN10gT3B0 aW1pemUgbWVhc3VyaW5nIFdBTC9idWZmZXIgdXNhZ2UgdGhyb3VnaAogc3RhY2stYmFzZWQgaW5z dHJ1bWVudGF0aW9uCgpQcmV2aW91c2x5LCBpbiBvcmRlciB0byBkZXRlcm1pbmUgdGhlIGJ1ZmZl ci9XQUwgdXNhZ2Ugb2YgYSBnaXZlbiBjb2RlIHNlY3Rpb24sCndlIHV0aWxpemVkIGNvbnRpbnVv dXNseSBpbmNyZW1lbnRpbmcgZ2xvYmFsIGNvdW50ZXJzIHRoYXQgZ2V0IHVwZGF0ZWQgd2hlbiB0 aGUKYWN0dWFsIGFjdGl2aXR5IChlLmcuIHNoYXJlZCBibG9jayByZWFkKSBvY2N1cnJlZCwgYW5k IHRoZW4gY2FsY3VsYXRlZCBhIGRpZmYgd2hlbgp0aGUgY29kZSBzZWN0aW9uIGVuZGVkLiBUaGlz IHJlc3VsdGVkIGluIGEgYm90dGxlbmVjayBmb3IgZXhlY3V0b3Igbm9kZSBpbnN0cnVtZW50YXRp b24Kc3BlY2lmaWNhbGx5LCB3aXRoIHRoZSBmdW5jdGlvbiBCdWZmZXJVc2FnZUFjY3VtRGlmZiBz aG93aW5nIHVwIGluIHByb2ZpbGVzIGFuZAppbiBzb21lIGNhc2VzIGFkZGluZyB1cCB0byAxMCUg b3ZlcmhlYWQgdG8gYW4gRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUykgcnVuLgoKSW5zdGVhZCwg aW50cm9kdWNlIGEgc3RhY2stYmFzZWQgbWVjaGFuaXNtLCB3aGVyZSB0aGUgYWN0dWFsIGFjdGl2 aXR5IHdyaXRlcwppbnRvIHRoZSBjdXJyZW50IHN0YWNrIGVudHJ5LiBJbiB0aGUgY2FzZSBvZiBl eGVjdXRvciBub2RlcywgdGhpcyBtZWFucyB0aGF0CmVhY2ggbm9kZSBnZXRzIGl0cyBvd24gc3Rh Y2sgZW50cnkgdGhhdCBpcyBwdXNoZWQgYXQgSW5zdHJTdGFydE5vZGUsIGFuZCBwb3BwZWQKYXQg SW5zdHJFbmROb2RlLiBTdGFjayBlbnRyaWVzIGFyZSB6ZXJvIGluaXRpYWxpemVkIChhdm9pZGlu ZyB0aGUgZGlmZiBtZWNoYW5pc20pCmFuZCBnZXQgYWRkZWQgdG8gdGhlaXIgcGFyZW50IGVudHJ5 IHdoZW4gdGhleSBhcmUgZmluYWxpemVkLCBpLmUuIG5vIG1vcmUKbW9kaWZpY2F0aW9ucyBjYW4g b2NjdXIuCgpUbyBjb3JyZWN0bHkgaGFuZGxlIGFib3J0IHNpdHVhdGlvbnMsIGFueSB1c2Ugb2Yg aW5zdHJ1bWVudGF0aW9uIHN0YWNrcyBtdXN0Cmludm9sdmUgZWl0aGVyIGEgdG9wLWxldmVsIElu c3RydW1lbnRhdGlvbiBzdHJ1Y3QsIGFuZCBpdHMgYXNzb2NpYXRlZCBJbnN0clN0YXJ0LwpJbnN0 clN0b3AgaGVscGVycyAod2hpY2ggdXNlIHJlc291cmNlIG93bmVycyB0byBoYW5kbGUgYWJvcnRz KSwgb3IgZGVkaWNhdGVkClBHX1RSWS9QR19GSU5BTExZIGNhbGxzIHRoYXQgZW5zdXJlIHRoZSBz dGFjayBpcyBpbiBhIGNvbnNpc3RlbnQgc3RhdGUgYWZ0ZXIKYW4gYWJvcnQuCi0tLQogLi4uL3Bn X3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgMTA1ICsrKystLS0tLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgICA4ICstCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgMjggKystCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAgMzEgKysrCiBz cmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMgICAgICAgICAgICAgfCAyMTggKysrKysr KysrKysrKystLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oICAgICAgICAgICAg IHwgIDY0ICsrKystCiBzcmMvaW5jbHVkZS91dGlscy9yZXNvd25lci5oICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogOCBmaWxlcyBjaGFuZ2VkLCAzMzMgaW5zZXJ0aW9ucygrKSwgMTIzIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRf c3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1l bnRzLmMKaW5kZXggN2Y1NjU5MmY1MzYuLjFlZDM2NjBjZjliIDEwMDY0NAotLS0gYS9jb250cmli L3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmliL3Bn X3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwpAQCAtOTExLDIxICs5MTEsMTMg QEAgcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAl7CiAJCWluc3RyX3RpbWUJc3RhcnQ7CiAJ CWluc3RyX3RpbWUJZHVyYXRpb247Ci0JCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAotCQkJ CQlidWZ1c2FnZTsKLQkJV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQsCi0JCQkJCXdhbHVzYWdlOwor CQlJbnN0clN0YWNrCXN0YWNrID0gezB9OwogCi0JCS8qIFdlIG5lZWQgdG8gdHJhY2sgYnVmZmVy IHVzYWdlIGFzIHRoZSBwbGFubmVyIGNhbiBhY2Nlc3MgdGhlbS4gKi8KLQkJYnVmdXNhZ2Vfc3Rh cnQgPSBwZ0J1ZmZlclVzYWdlOwotCi0JCS8qCi0JCSAqIFNpbWlsYXJseSB0aGUgcGxhbm5lciBj b3VsZCB3cml0ZSBzb21lIFdBTCByZWNvcmRzIGluIHNvbWUgY2FzZXMKLQkJICogKGUuZy4gc2V0 dGluZyBhIGhpbnQgYml0IHdpdGggdGhvc2UgYmVpbmcgV0FMLWxvZ2dlZCkKLQkJICovCi0JCXdh bHVzYWdlX3N0YXJ0ID0gcGdXYWxVc2FnZTsKIAkJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChzdGFy dCk7CiAKKwkJLyogV2UgbmVlZCB0byB0cmFjayBidWZmZXIvV0FMIHVzYWdlIGFzIHRoZSBwbGFu bmVyIGNhbiBhY2Nlc3MgdGhlbS4gKi8KKwkJSW5zdHJQdXNoU3RhY2soJnN0YWNrKTsKKwogCQlu ZXN0aW5nX2xldmVsKys7CiAJCVBHX1RSWSgpOwogCQl7CkBAIC05MzgsNiArOTMwLDcgQEAgcGdz c19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAkJfQogCQlQR19GSU5BTExZKCk7CiAJCXsKKwkJCUlu c3RyUG9wU3RhY2soJnN0YWNrLCB0cnVlKTsKIAkJCW5lc3RpbmdfbGV2ZWwtLTsKIAkJfQogCQlQ R19FTkRfVFJZKCk7CkBAIC05NDUsMTQgKzkzOCw2IEBAIHBnc3NfcGxhbm5lcihRdWVyeSAqcGFy c2UsCiAJCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZHVyYXRpb24pOwogCQlJTlNUUl9USU1FX1NV QlRSQUNUKGR1cmF0aW9uLCBzdGFydCk7CiAKLQkJLyogY2FsYyBkaWZmZXJlbmNlcyBvZiBidWZm ZXIgY291bnRlcnMuICovCi0JCW1lbXNldCgmYnVmdXNhZ2UsIDAsIHNpemVvZihCdWZmZXJVc2Fn ZSkpOwotCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAm YnVmdXNhZ2Vfc3RhcnQpOwotCi0JCS8qIGNhbGMgZGlmZmVyZW5jZXMgb2YgV0FMIGNvdW50ZXJz LiAqLwotCQltZW1zZXQoJndhbHVzYWdlLCAwLCBzaXplb2YoV2FsVXNhZ2UpKTsKLQkJV2FsVXNh Z2VBY2N1bURpZmYoJndhbHVzYWdlLCAmcGdXYWxVc2FnZSwgJndhbHVzYWdlX3N0YXJ0KTsKLQog CQlwZ3NzX3N0b3JlKHF1ZXJ5X3N0cmluZywKIAkJCQkgICBwYXJzZS0+cXVlcnlJZCwKIAkJCQkg ICBwYXJzZS0+c3RtdF9sb2NhdGlvbiwKQEAgLTk2MCw4ICs5NDUsOCBAQCBwZ3NzX3BsYW5uZXIo UXVlcnkgKnBhcnNlLAogCQkJCSAgIFBHU1NfUExBTiwKIAkJCQkgICBJTlNUUl9USU1FX0dFVF9N SUxMSVNFQyhkdXJhdGlvbiksCiAJCQkJICAgMCwKLQkJCQkgICAmYnVmdXNhZ2UsCi0JCQkJICAg JndhbHVzYWdlLAorCQkJCSAgICZzdGFjay5idWZ1c2FnZSwKKwkJCQkgICAmc3RhY2sud2FsdXNh Z2UsCiAJCQkJICAgTlVMTCwKIAkJCQkgICBOVUxMLAogCQkJCSAgIDAsCkBAIC0xMDg5LDggKzEw NzQsMTMgQEAgcGdzc19FeGVjdXRvckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAkJCQkgICBQ R1NTX0VYRUMsCiAJCQkJICAgSU5TVFJfVElNRV9HRVRfTUlMTElTRUMocXVlcnlEZXNjLT50b3Rh bHRpbWUtPnRvdGFsKSwKIAkJCQkgICBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfdG90YWxfcHJvY2Vz c2VkLAotCQkJCSAgICZxdWVyeURlc2MtPnRvdGFsdGltZS0+YnVmdXNhZ2UsCi0JCQkJICAgJnF1 ZXJ5RGVzYy0+dG90YWx0aW1lLT53YWx1c2FnZSwKKworCQkvKgorCQkgKiBDaGVjayBpZiBzdGFj ayBpcyBpbml0aWFsaXplZCAtIGl0IGlzIG5vdCB3aGVuIEV4ZWN1dG9yUnVuIHdhc24ndAorCQkg KiBjYWxsZWQKKwkJICovCisJCQkJICAgcXVlcnlEZXNjLT50b3RhbHRpbWUtPnN0YWNrID8gJnF1 ZXJ5RGVzYy0+dG90YWx0aW1lLT5zdGFjay0+YnVmdXNhZ2UgOiBOVUxMLAorCQkJCSAgIHF1ZXJ5 RGVzYy0+dG90YWx0aW1lLT5zdGFjayA/ICZxdWVyeURlc2MtPnRvdGFsdGltZS0+c3RhY2stPndh bHVzYWdlIDogTlVMTCwKIAkJCQkgICBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfaml0ID8gJnF1ZXJ5 RGVzYy0+ZXN0YXRlLT5lc19qaXQtPmluc3RyIDogTlVMTCwKIAkJCQkgICBOVUxMLAogCQkJCSAg IHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wYXJhbGxlbF93b3JrZXJzX3RvX2xhdW5jaCwKQEAgLTEx NTcsMTQgKzExNDcsMTAgQEAgcGdzc19Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQs IGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQlpbnN0cl90aW1lCXN0YXJ0OwogCQlpbnN0cl90 aW1lCWR1cmF0aW9uOwogCQl1aW50NjQJCXJvd3M7Ci0JCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0 YXJ0LAotCQkJCQlidWZ1c2FnZTsKLQkJV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQsCi0JCQkJCXdh bHVzYWdlOworCQlJbnN0clN0YWNrCXN0YWNrID0gezB9OwogCi0JCWJ1ZnVzYWdlX3N0YXJ0ID0g cGdCdWZmZXJVc2FnZTsKLQkJd2FsdXNhZ2Vfc3RhcnQgPSBwZ1dhbFVzYWdlOwogCQlJTlNUUl9U SU1FX1NFVF9DVVJSRU5UKHN0YXJ0KTsKKwkJSW5zdHJQdXNoU3RhY2soJnN0YWNrKTsKIAogCQlu ZXN0aW5nX2xldmVsKys7CiAJCVBHX1RSWSgpOwpAQCAtMTE4MCw2ICsxMTY2LDcgQEAgcGdzc19Q cm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5n LAogCQl9CiAJCVBHX0ZJTkFMTFkoKTsKIAkJeworCQkJSW5zdHJQb3BTdGFjaygmc3RhY2ssIHRy dWUpOwogCQkJbmVzdGluZ19sZXZlbC0tOwogCQl9CiAJCVBHX0VORF9UUlkoKTsKQEAgLTEyMDgs MTQgKzExOTUsNiBAQCBwZ3NzX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwgY29u c3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCSAgIHFjLT5jb21tYW5kVGFnID09IENNRFRBR19S RUZSRVNIX01BVEVSSUFMSVpFRF9WSUVXKSkgPwogCQkJcWMtPm5wcm9jZXNzZWQgOiAwOwogCi0J CS8qIGNhbGMgZGlmZmVyZW5jZXMgb2YgYnVmZmVyIGNvdW50ZXJzLiAqLwotCQltZW1zZXQoJmJ1 ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYo JmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKLQotCQkvKiBjYWxj IGRpZmZlcmVuY2VzIG9mIFdBTCBjb3VudGVycy4gKi8KLQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwg c2l6ZW9mKFdhbFVzYWdlKSk7Ci0JCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2Fs VXNhZ2UsICZ3YWx1c2FnZV9zdGFydCk7Ci0KIAkJcGdzc19zdG9yZShxdWVyeVN0cmluZywKIAkJ CQkgICBzYXZlZF9xdWVyeUlkLAogCQkJCSAgIHNhdmVkX3N0bXRfbG9jYXRpb24sCkBAIC0xMjIz LDggKzEyMDIsOCBAQCBwZ3NzX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwgY29u c3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJICAgUEdTU19FWEVDLAogCQkJCSAgIElOU1RSX1RJ TUVfR0VUX01JTExJU0VDKGR1cmF0aW9uKSwKIAkJCQkgICByb3dzLAotCQkJCSAgICZidWZ1c2Fn ZSwKLQkJCQkgICAmd2FsdXNhZ2UsCisJCQkJICAgJnN0YWNrLmJ1ZnVzYWdlLAorCQkJCSAgICZz dGFjay53YWx1c2FnZSwKIAkJCQkgICBOVUxMLAogCQkJCSAgIE5VTEwsCiAJCQkJICAgMCwKQEAg LTE0NTQsMjcgKzE0MzMsMzMgQEAgcGdzc19zdG9yZShjb25zdCBjaGFyICpxdWVyeSwgaW50NjQg cXVlcnlJZCwKIAkJCX0KIAkJfQogCQllbnRyeS0+Y291bnRlcnMucm93cyArPSByb3dzOwotCQll bnRyeS0+Y291bnRlcnMuc2hhcmVkX2Jsa3NfaGl0ICs9IGJ1ZnVzYWdlLT5zaGFyZWRfYmxrc19o aXQ7Ci0JCWVudHJ5LT5jb3VudGVycy5zaGFyZWRfYmxrc19yZWFkICs9IGJ1ZnVzYWdlLT5zaGFy ZWRfYmxrc19yZWFkOwotCQllbnRyeS0+Y291bnRlcnMuc2hhcmVkX2Jsa3NfZGlydGllZCArPSBi dWZ1c2FnZS0+c2hhcmVkX2Jsa3NfZGlydGllZDsKLQkJZW50cnktPmNvdW50ZXJzLnNoYXJlZF9i bGtzX3dyaXR0ZW4gKz0gYnVmdXNhZ2UtPnNoYXJlZF9ibGtzX3dyaXR0ZW47Ci0JCWVudHJ5LT5j b3VudGVycy5sb2NhbF9ibGtzX2hpdCArPSBidWZ1c2FnZS0+bG9jYWxfYmxrc19oaXQ7Ci0JCWVu dHJ5LT5jb3VudGVycy5sb2NhbF9ibGtzX3JlYWQgKz0gYnVmdXNhZ2UtPmxvY2FsX2Jsa3NfcmVh ZDsKLQkJZW50cnktPmNvdW50ZXJzLmxvY2FsX2Jsa3NfZGlydGllZCArPSBidWZ1c2FnZS0+bG9j YWxfYmxrc19kaXJ0aWVkOwotCQllbnRyeS0+Y291bnRlcnMubG9jYWxfYmxrc193cml0dGVuICs9 IGJ1ZnVzYWdlLT5sb2NhbF9ibGtzX3dyaXR0ZW47Ci0JCWVudHJ5LT5jb3VudGVycy50ZW1wX2Js a3NfcmVhZCArPSBidWZ1c2FnZS0+dGVtcF9ibGtzX3JlYWQ7Ci0JCWVudHJ5LT5jb3VudGVycy50 ZW1wX2Jsa3Nfd3JpdHRlbiArPSBidWZ1c2FnZS0+dGVtcF9ibGtzX3dyaXR0ZW47Ci0JCWVudHJ5 LT5jb3VudGVycy5zaGFyZWRfYmxrX3JlYWRfdGltZSArPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNF QyhidWZ1c2FnZS0+c2hhcmVkX2Jsa19yZWFkX3RpbWUpOwotCQllbnRyeS0+Y291bnRlcnMuc2hh cmVkX2Jsa193cml0ZV90aW1lICs9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGJ1ZnVzYWdlLT5z aGFyZWRfYmxrX3dyaXRlX3RpbWUpOwotCQllbnRyeS0+Y291bnRlcnMubG9jYWxfYmxrX3JlYWRf dGltZSArPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhidWZ1c2FnZS0+bG9jYWxfYmxrX3JlYWRf dGltZSk7Ci0JCWVudHJ5LT5jb3VudGVycy5sb2NhbF9ibGtfd3JpdGVfdGltZSArPSBJTlNUUl9U SU1FX0dFVF9NSUxMSVNFQyhidWZ1c2FnZS0+bG9jYWxfYmxrX3dyaXRlX3RpbWUpOwotCQllbnRy eS0+Y291bnRlcnMudGVtcF9ibGtfcmVhZF90aW1lICs9IElOU1RSX1RJTUVfR0VUX01JTExJU0VD KGJ1ZnVzYWdlLT50ZW1wX2Jsa19yZWFkX3RpbWUpOwotCQllbnRyeS0+Y291bnRlcnMudGVtcF9i bGtfd3JpdGVfdGltZSArPSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyhidWZ1c2FnZS0+dGVtcF9i bGtfd3JpdGVfdGltZSk7CisJCWlmIChidWZ1c2FnZSkKKwkJeworCQkJZW50cnktPmNvdW50ZXJz LnNoYXJlZF9ibGtzX2hpdCArPSBidWZ1c2FnZS0+c2hhcmVkX2Jsa3NfaGl0OworCQkJZW50cnkt PmNvdW50ZXJzLnNoYXJlZF9ibGtzX3JlYWQgKz0gYnVmdXNhZ2UtPnNoYXJlZF9ibGtzX3JlYWQ7 CisJCQllbnRyeS0+Y291bnRlcnMuc2hhcmVkX2Jsa3NfZGlydGllZCArPSBidWZ1c2FnZS0+c2hh cmVkX2Jsa3NfZGlydGllZDsKKwkJCWVudHJ5LT5jb3VudGVycy5zaGFyZWRfYmxrc193cml0dGVu ICs9IGJ1ZnVzYWdlLT5zaGFyZWRfYmxrc193cml0dGVuOworCQkJZW50cnktPmNvdW50ZXJzLmxv Y2FsX2Jsa3NfaGl0ICs9IGJ1ZnVzYWdlLT5sb2NhbF9ibGtzX2hpdDsKKwkJCWVudHJ5LT5jb3Vu dGVycy5sb2NhbF9ibGtzX3JlYWQgKz0gYnVmdXNhZ2UtPmxvY2FsX2Jsa3NfcmVhZDsKKwkJCWVu dHJ5LT5jb3VudGVycy5sb2NhbF9ibGtzX2RpcnRpZWQgKz0gYnVmdXNhZ2UtPmxvY2FsX2Jsa3Nf ZGlydGllZDsKKwkJCWVudHJ5LT5jb3VudGVycy5sb2NhbF9ibGtzX3dyaXR0ZW4gKz0gYnVmdXNh Z2UtPmxvY2FsX2Jsa3Nfd3JpdHRlbjsKKwkJCWVudHJ5LT5jb3VudGVycy50ZW1wX2Jsa3NfcmVh ZCArPSBidWZ1c2FnZS0+dGVtcF9ibGtzX3JlYWQ7CisJCQllbnRyeS0+Y291bnRlcnMudGVtcF9i bGtzX3dyaXR0ZW4gKz0gYnVmdXNhZ2UtPnRlbXBfYmxrc193cml0dGVuOworCQkJZW50cnktPmNv dW50ZXJzLnNoYXJlZF9ibGtfcmVhZF90aW1lICs9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGJ1 ZnVzYWdlLT5zaGFyZWRfYmxrX3JlYWRfdGltZSk7CisJCQllbnRyeS0+Y291bnRlcnMuc2hhcmVk X2Jsa193cml0ZV90aW1lICs9IElOU1RSX1RJTUVfR0VUX01JTExJU0VDKGJ1ZnVzYWdlLT5zaGFy ZWRfYmxrX3dyaXRlX3RpbWUpOworCQkJZW50cnktPmNvdW50ZXJzLmxvY2FsX2Jsa19yZWFkX3Rp bWUgKz0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoYnVmdXNhZ2UtPmxvY2FsX2Jsa19yZWFkX3Rp bWUpOworCQkJZW50cnktPmNvdW50ZXJzLmxvY2FsX2Jsa193cml0ZV90aW1lICs9IElOU1RSX1RJ TUVfR0VUX01JTExJU0VDKGJ1ZnVzYWdlLT5sb2NhbF9ibGtfd3JpdGVfdGltZSk7CisJCQllbnRy eS0+Y291bnRlcnMudGVtcF9ibGtfcmVhZF90aW1lICs9IElOU1RSX1RJTUVfR0VUX01JTExJU0VD KGJ1ZnVzYWdlLT50ZW1wX2Jsa19yZWFkX3RpbWUpOworCQkJZW50cnktPmNvdW50ZXJzLnRlbXBf YmxrX3dyaXRlX3RpbWUgKz0gSU5TVFJfVElNRV9HRVRfTUlMTElTRUMoYnVmdXNhZ2UtPnRlbXBf YmxrX3dyaXRlX3RpbWUpOworCQl9CiAJCWVudHJ5LT5jb3VudGVycy51c2FnZSArPSBVU0FHRV9F WEVDKHRvdGFsX3RpbWUpOwotCQllbnRyeS0+Y291bnRlcnMud2FsX3JlY29yZHMgKz0gd2FsdXNh Z2UtPndhbF9yZWNvcmRzOwotCQllbnRyeS0+Y291bnRlcnMud2FsX2ZwaSArPSB3YWx1c2FnZS0+ d2FsX2ZwaTsKLQkJZW50cnktPmNvdW50ZXJzLndhbF9ieXRlcyArPSB3YWx1c2FnZS0+d2FsX2J5 dGVzOwotCQllbnRyeS0+Y291bnRlcnMud2FsX2J1ZmZlcnNfZnVsbCArPSB3YWx1c2FnZS0+d2Fs X2J1ZmZlcnNfZnVsbDsKKwkJaWYgKHdhbHVzYWdlKQorCQl7CisJCQllbnRyeS0+Y291bnRlcnMu d2FsX3JlY29yZHMgKz0gd2FsdXNhZ2UtPndhbF9yZWNvcmRzOworCQkJZW50cnktPmNvdW50ZXJz LndhbF9mcGkgKz0gd2FsdXNhZ2UtPndhbF9mcGk7CisJCQllbnRyeS0+Y291bnRlcnMud2FsX2J5 dGVzICs9IHdhbHVzYWdlLT53YWxfYnl0ZXM7CisJCQllbnRyeS0+Y291bnRlcnMud2FsX2J1ZmZl cnNfZnVsbCArPSB3YWx1c2FnZS0+d2FsX2J1ZmZlcnNfZnVsbDsKKwkJfQogCQlpZiAoaml0dXNh Z2UpCiAJCXsKIAkJCWVudHJ5LT5jb3VudGVycy5qaXRfZnVuY3Rpb25zICs9IGppdHVzYWdlLT5j cmVhdGVkX2Z1bmN0aW9uczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBmZWU3ODJkMWM1NS4u NTQ1MTg1MTQ4YWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTIyODYsOSArMjI4Niw5IEBA IEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAKIAkv KiBTaG93IGJ1ZmZlci9XQUwgdXNhZ2UgKi8KIAlpZiAoZXMtPmJ1ZmZlcnMgJiYgcGxhbnN0YXRl LT5pbnN0cnVtZW50KQotCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5zdHJ1 bWVudC0+YnVmdXNhZ2UpOworCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJnBsYW5zdGF0ZS0+aW5z dHJ1bWVudC0+c3RhY2suYnVmdXNhZ2UpOwogCWlmIChlcy0+d2FsICYmIHBsYW5zdGF0ZS0+aW5z dHJ1bWVudCkKLQkJc2hvd193YWxfdXNhZ2UoZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPndh bHVzYWdlKTsKKwkJc2hvd193YWxfdXNhZ2UoZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPnN0 YWNrLndhbHVzYWdlKTsKIAogCS8qIFByZXBhcmUgcGVyLXdvcmtlciBidWZmZXIvV0FMIHVzYWdl ICovCiAJaWYgKGVzLT53b3JrZXJzX3N0YXRlICYmIChlcy0+YnVmZmVycyB8fCBlcy0+d2FsKSAm JiBlcy0+dmVyYm9zZSkKQEAgLTIzMDUsOSArMjMwNSw5IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0 ZSAqcGxhbnN0YXRlLCBMaXN0ICphbmNlc3RvcnMsCiAKIAkJCUV4cGxhaW5PcGVuV29ya2VyKG4s IGVzKTsKIAkJCWlmIChlcy0+YnVmZmVycykKLQkJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJmlu c3RydW1lbnQtPmJ1ZnVzYWdlKTsKKwkJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJmluc3RydW1l bnQtPnN0YWNrLmJ1ZnVzYWdlKTsKIAkJCWlmIChlcy0+d2FsKQotCQkJCXNob3dfd2FsX3VzYWdl KGVzLCAmaW5zdHJ1bWVudC0+d2FsdXNhZ2UpOworCQkJCXNob3dfd2FsX3VzYWdlKGVzLCAmaW5z dHJ1bWVudC0+c3RhY2sud2FsdXNhZ2UpOwogCQkJRXhwbGFpbkNsb3NlV29ya2VyKG4sIGVzKTsK IAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGE5Nzk3N2Q5ODhhLi5iYWYyYmVm MTdkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0zMjksNiArMzI5LDEzIEBAIHN0YW5k YXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCSAqLwogCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOwogCisJLyoKKwkg KiBTdGFydCB1cCByZXF1aXJlZCB0b3AtbGV2ZWwgaW5zdHJ1bWVudGF0aW9uIHN0YWNrIGZvciBX QUwvYnVmZmVyCisJICogdHJhY2tpbmcKKwkgKi8KKwlpZiAoIXF1ZXJ5RGVzYy0+dG90YWx0aW1l ICYmIChlc3RhdGUtPmVzX2luc3RydW1lbnQgJiAoSU5TVFJVTUVOVF9CVUZGRVJTIHwgSU5TVFJV TUVOVF9XQUwpKSkKKwkJcXVlcnlEZXNjLT50b3RhbHRpbWUgPSBJbnN0ckFsbG9jKDEsIGVzdGF0 ZS0+ZXNfaW5zdHJ1bWVudCk7CisKIAkvKiBBbGxvdyBpbnN0cnVtZW50YXRpb24gb2YgRXhlY3V0 b3Igb3ZlcmFsbCBydW50aW1lICovCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQogCQlJbnN0 clN0YXJ0KHF1ZXJ5RGVzYy0+dG90YWx0aW1lKTsKQEAgLTM4Myw3ICszOTAsNyBAQCBzdGFuZGFy ZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJZGVzdC0+clNodXRkb3duKGRl c3QpOwogCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0b3AocXVlcnlEZXNj LT50b3RhbHRpbWUpOworCQlJbnN0clN0b3AocXVlcnlEZXNjLT50b3RhbHRpbWUsIGZhbHNlKTsK IAogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KQEAgLTQ0Miw4ICs0NDks MTUgQEAgc3RhbmRhcmRfRXhlY3V0b3JGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJaWYg KCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlMpKQogCQlB ZnRlclRyaWdnZXJFbmRRdWVyeShlc3RhdGUpOwogCisJLyoKKwkgKiBBY2N1bXVsYXRlIHBlciBu b2RlIHN0YXRpc3RpY3MsIGFuZCB0aGVuIHNodXQgZG93biBpbnN0cnVtZW50YXRpb24KKwkgKiBz dGFjaworCSAqLworCWlmIChxdWVyeURlc2MtPnRvdGFsdGltZSAmJiBlc3RhdGUtPmVzX2luc3Ry dW1lbnQpCisJCUV4ZWNBY2N1bU5vZGVJbnN0cnVtZW50YXRpb24ocXVlcnlEZXNjLT5wbGFuc3Rh dGUpOworCiAJaWYgKHF1ZXJ5RGVzYy0+dG90YWx0aW1lKQotCQlJbnN0clN0b3AocXVlcnlEZXNj LT50b3RhbHRpbWUpOworCQlJbnN0clN0b3AocXVlcnlEZXNjLT50b3RhbHRpbWUsIHRydWUpOwog CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCkBAIC0xMjY2LDcgKzEyODAs MTUgQEAgSW5pdFJlc3VsdFJlbEluZm8oUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJ cmVzdWx0UmVsSW5mby0+cmlfVHJpZ1doZW5FeHBycyA9IChFeHByU3RhdGUgKiopCiAJCQlwYWxs b2MwKG4gKiBzaXplb2YoRXhwclN0YXRlICopKTsKIAkJaWYgKGluc3RydW1lbnRfb3B0aW9ucykK LQkJCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdJbnN0cnVtZW50ID0gSW5zdHJBbGxvY1RyaWdnZXIo biwgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwkJeworCQkJLyoKKwkJCSAqIFRyaWdnZXJzIGRvIG5v dCBpbmRpdmlkdWFsbHkgdHJhY2sgYnVmZmVyL1dBTCB1c2FnZSwgZXZlbiBpZgorCQkJICogb3Ro ZXJ3aXNlIHRyYWNrZWQKKwkJCSAqLworCQkJaW50CQkJb3B0cyA9IChpbnN0cnVtZW50X29wdGlv bnMgJiBJTlNUUlVNRU5UX1RJTUVSKSAhPSAwID8gSU5TVFJVTUVOVF9USU1FUiA6IElOU1RSVU1F TlRfUk9XUzsKKworCQkJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0luc3RydW1lbnQgPSBJbnN0ckFs bG9jVHJpZ2dlcihuLCBvcHRzKTsKKwkJfQogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUHJvY25vZGUuYwppbmRleCBkMjg2NDcxMjU0Yi4uZDAwY2Y4MjBhMjcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0xMjIsNiArMTIyLDcgQEAKIHN0YXRpYyBUdXBsZVRh YmxlU2xvdCAqRXhlY1Byb2NOb2RlRmlyc3QoUGxhblN0YXRlICpub2RlKTsKIHN0YXRpYyBUdXBs ZVRhYmxlU2xvdCAqRXhlY1Byb2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlKTsKIHN0YXRpYyBi b29sIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4 dCk7CitzdGF0aWMgYm9vbCBFeGVjQWNjdW1Ob2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihQbGFu U3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt ODI4LDYgKzgyOSwzNiBAQCBFeGVjU2h1dGRvd25Ob2RlX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUs IHZvaWQgKmNvbnRleHQpCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogRXhlY0FjY3VtTm9k ZUluc3RydW1lbnRhdGlvbgorICoKKyAqIEFjY3VtdWxhdGUgaW5zdHJ1bWVudGF0aW9uIHN0YXRz IGZyb20gYWxsIGV4ZWN1dGlvbiBub2RlcyB0byB0aGVpciByZXNwZWN0aXZlCisgKiBwYXJlbnRz IChvciB0aGUgb3JpZ2luYWwgcGFyZW50IGluc3RydW1lbnRhdGlvbiBzdGFjaykuCisgKgorICog VGhpcyBtdXN0IHJ1biBhZnRlciB0aGUgY2xlYW51cCBkb25lIGJ5IEV4ZWNTaHV0ZG93bk5vZGUs IGFuZCBub3QgcmVseSBvbiBhbnkKKyAqIHJlc291cmNlcyBjbGVhbmVkIHVwIGJ5IGl0LiBXZSBh bHNvIGV4cGVjdCBzaHV0ZG93biBhY3Rpb25zIHRvIGhhdmUgb2NjdXJyZWQsCisgKiBlLmcuIHBh cmFsbGVsIHdvcmtlciBpbnN0cnVtZW50YXRpb24gdG8gaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBs ZWFkZXIuCisgKi8KK3ZvaWQKK0V4ZWNBY2N1bU5vZGVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRl ICpub2RlKQoreworCSh2b2lkKSBFeGVjQWNjdW1Ob2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlcihu b2RlLCBOVUxMKTsKK30KKworc3RhdGljIGJvb2wKK0V4ZWNBY2N1bU5vZGVJbnN0cnVtZW50YXRp b25fd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKK3sKKwlpZiAobm9kZSA9 PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwlwbGFuc3RhdGVfdHJlZV93YWxrZXIobm9kZSwg RXhlY0FjY3VtTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIsIGNvbnRleHQpOworCisJaWYgKG5v ZGUtPmluc3RydW1lbnQgJiYgbm9kZS0+aW5zdHJ1bWVudC0+c3RhY2sucHJldmlvdXMpCisJCUlu c3RyU3RhY2tBZGQobm9kZS0+aW5zdHJ1bWVudC0+c3RhY2sucHJldmlvdXMsICZub2RlLT5pbnN0 cnVtZW50LT5zdGFjayk7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiBFeGVjU2V0VHVw bGVCb3VuZAogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwppbmRleCA0MWEzNDJjYWI3Zi4u MzcwNTVkMDFmNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKQEAgLTE2LDM3ICsxNiwx MDMgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1l bnQuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293 bmVyLmgiCiAKIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CiBzdGF0aWMgQnVmZmVyVXNhZ2Ug c2F2ZV9wZ0J1ZmZlclVzYWdlOwogV2FsVXNhZ2UJcGdXYWxVc2FnZTsKK0luc3RyU3RhY2sgKnBn SW5zdHJTdGFjayA9IE5VTEw7CiBzdGF0aWMgV2FsVXNhZ2Ugc2F2ZV9wZ1dhbFVzYWdlOwogCiBz dGF0aWMgdm9pZCBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2FnZSAqZHN0LCBjb25zdCBCdWZmZXJV c2FnZSAqYWRkKTsKIHN0YXRpYyB2b2lkIFdhbFVzYWdlQWRkKFdhbFVzYWdlICpkc3QsIFdhbFVz YWdlICphZGQpOwogCisvKgorICogVXNlIFJlc291cmNlT3duZXIgbWVjaGFuaXNtIHRvIGNvcnJl Y3RseSByZXNldCBwZ0luc3RyU3RhY2sgb24gYWJvcnQuCisgKi8KK3N0YXRpYyB2b2lkIFJlc093 bmVyUmVsZWFzZUluc3RydW1lbnRhdGlvbihEYXR1bSByZXMpOworc3RhdGljIGNvbnN0IFJlc291 cmNlT3duZXJEZXNjIGluc3RydW1lbnRhdGlvbl9yZXNvd25lcl9kZXNjID0KK3sKKwkubmFtZSA9 ICJpbnN0cnVtZW50YXRpb24iLAorCS5yZWxlYXNlX3BoYXNlID0gUkVTT1VSQ0VfUkVMRUFTRV9B RlRFUl9MT0NLUywKKwkucmVsZWFzZV9wcmlvcml0eSA9IFJFTEVBU0VfUFJJT19JTlNUUlVNRU5U QVRJT04sCisJLlJlbGVhc2VSZXNvdXJjZSA9IFJlc093bmVyUmVsZWFzZUluc3RydW1lbnRhdGlv biwKKwkuRGVidWdQcmludCA9IE5VTEwsCQkJLyogZGVmYXVsdCBtZXNzYWdlIGlzIGZpbmUgKi8K K307CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorUmVzb3VyY2VPd25lclJlbWVtYmVySW5zdHJTdGFj ayhSZXNvdXJjZU93bmVyIG93bmVyLCBJbnN0clN0YWNrICogc3RhY2spCit7CisJUmVzb3VyY2VP d25lclJlbWVtYmVyKG93bmVyLCBQb2ludGVyR2V0RGF0dW0oc3RhY2spLCAmaW5zdHJ1bWVudGF0 aW9uX3Jlc293bmVyX2Rlc2MpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK1Jlc291cmNlT3du ZXJGb3JnZXRJbnN0clN0YWNrKFJlc291cmNlT3duZXIgb3duZXIsIEluc3RyU3RhY2sgKiBzdGFj aykKK3sKKwlSZXNvdXJjZU93bmVyRm9yZ2V0KG93bmVyLCBQb2ludGVyR2V0RGF0dW0oc3RhY2sp LCAmaW5zdHJ1bWVudGF0aW9uX3Jlc293bmVyX2Rlc2MpOworfQorCitzdGF0aWMgYm9vbAorU3Rh Y2tJc1BhcmVudChJbnN0clN0YWNrICogc3RhY2ssIEluc3RyU3RhY2sgKiBlbnRyeSkKK3sKKwlp ZiAoZW50cnktPnByZXZpb3VzID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChlbnRy eS0+cHJldmlvdXMgPT0gc3RhY2spCisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIFN0YWNrSXNQ YXJlbnQoc3RhY2ssIGVudHJ5LT5wcmV2aW91cyk7Cit9CisKK3N0YXRpYyB2b2lkCitSZXNPd25l clJlbGVhc2VJbnN0cnVtZW50YXRpb24oRGF0dW0gcmVzKQoreworCUluc3RyU3RhY2sgKnN0YWNr ID0gKEluc3RyU3RhY2sgKikgRGF0dW1HZXRQb2ludGVyKHJlcyk7CisKKwlpZiAocGdJbnN0clN0 YWNrKQorCXsKKwkJLyoKKwkJICogQmVjYXVzZSByZWdpc3RlcmVkIHJlc291cmNlcyBhcmUgKm5v dCogY2xlYW5lZCB1cCBpbiBhIGd1YXJhbnRlZWQKKwkJICogb3JkZXIsIHdlIG1heSBnZXQgYSBj aGlsZCBjb250ZXh0IGFmdGVyIHdlJ3ZlIHByb2Nlc3NlZCB0aGUgcGFyZW50LgorCQkgKiBUaHVz LCB3ZSBvbmx5IGNoYW5nZSB0aGUgc3RhY2sgaWYgaXRzIG5vdCBhbHJlYWR5IGEgcGFyZW50IG9m IHRoZQorCQkgKiBzdGFjayBiZWluZyByZWxlYXNlZC4KKwkJICoKKwkJICogSWYgd2UgYWxyZWFk eSB3YWxrZWQgdXAgdGhlIHN0YWNrIHdpdGggYW4gZWFybGllciByZXNvdXJjZSwgc2ltcGx5CisJ CSAqIGFjY3VtdWxhdGUgYWxsIGNvbGxlY3RlZCBzdGF0cyBiZWZvcmUgdGhlIGFib3J0IHRvIHRo ZSBjdXJyZW50CisJCSAqIHN0YWNrLgorCQkgKgorCQkgKiBOb3RlIHRoYXQgU3RhY2tJc1BhcmVu dCB3aWxsIHJlY3Vyc2UgYXMgbmVlZGVkLCBzbyBpdCBpcworCQkgKiBpbmFkdmlzaWJsZSB0byB1 c2UgZGVlcGx5IG5lc3RlZCBzdGFja3MuCisJCSAqLworCQlpZiAoIVN0YWNrSXNQYXJlbnQocGdJ bnN0clN0YWNrLCBzdGFjaykpCisJCQlJbnN0clBvcFN0YWNrKHN0YWNrLCB0cnVlKTsKKwkJZWxz ZQorCQkJSW5zdHJTdGFja0FkZChwZ0luc3RyU3RhY2ssIHN0YWNrKTsKKwl9CisKKwkvKgorCSAq IEVuc3VyZSBsb25nLWxpdmVkIG1lbW9yeSBpcyBmcmVlZCBub3csIGFzIHdlIGRvbid0IGV4cGVj dCBJbnN0clN0b3AgdG8KKwkgKiBiZSBjYWxsZWQKKwkgKi8KKwlwZnJlZShzdGFjayk7Cit9CiAK IC8qIEdlbmVyYWwgcHVycG9zZSBpbnN0cnVtZW50YXRpb24gaGFuZGxpbmcgKi8KIEluc3RydW1l bnRhdGlvbiAqCiBJbnN0ckFsbG9jKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKQogewot CUluc3RydW1lbnRhdGlvbiAqaW5zdHI7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IHBhbGxv YzAobiAqIHNpemVvZihJbnN0cnVtZW50YXRpb24pKTsKKwlib29sCQluZWVkX2J1ZmZlcnMgPSAo aW5zdHJ1bWVudF9vcHRpb25zICYgSU5TVFJVTUVOVF9CVUZGRVJTKSAhPSAwOworCWJvb2wJCW5l ZWRfd2FsID0gKGluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RSVU1FTlRfV0FMKSAhPSAwOworCWJv b2wJCW5lZWRfdGltZXIgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5TVFJVTUVOVF9USU1FUikg IT0gMDsKKwlpbnQJCQlpOwogCi0JLyogaW5pdGlhbGl6ZSBhbGwgZmllbGRzIHRvIHplcm9lcywg dGhlbiBtb2RpZnkgYXMgbmVlZGVkICovCi0JaW5zdHIgPSBwYWxsb2MwKG4gKiBzaXplb2YoSW5z dHJ1bWVudGF0aW9uKSk7Ci0JaWYgKGluc3RydW1lbnRfb3B0aW9ucyAmIChJTlNUUlVNRU5UX0JV RkZFUlMgfCBJTlNUUlVNRU5UX1RJTUVSIHwgSU5TVFJVTUVOVF9XQUwpKQorCWZvciAoaSA9IDA7 IGkgPCBuOyBpKyspCiAJewotCQlib29sCQluZWVkX2J1ZmZlcnMgPSAoaW5zdHJ1bWVudF9vcHRp b25zICYgSU5TVFJVTUVOVF9CVUZGRVJTKSAhPSAwOwotCQlib29sCQluZWVkX3dhbCA9IChpbnN0 cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX1dBTCkgIT0gMDsKLQkJYm9vbAkJbmVlZF90aW1l ciA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX1RJTUVSKSAhPSAwOwotCQlpbnQJ CQlpOwotCi0JCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCi0JCXsKLQkJCWluc3RyW2ldLm5lZWRf YnVmdXNhZ2UgPSBuZWVkX2J1ZmZlcnM7Ci0JCQlpbnN0cltpXS5uZWVkX3dhbHVzYWdlID0gbmVl ZF93YWw7Ci0JCQlpbnN0cltpXS5uZWVkX3RpbWVyID0gbmVlZF90aW1lcjsKLQkJfQorCQlpbnN0 cltpXS5uZWVkX2J1ZnVzYWdlID0gbmVlZF9idWZmZXJzOworCQlpbnN0cltpXS5uZWVkX3dhbHVz YWdlID0gbmVlZF93YWw7CisJCWluc3RyW2ldLm5lZWRfdGltZXIgPSBuZWVkX3RpbWVyOwogCX0K IAogCXJldHVybiBpbnN0cjsKQEAgLTU5LDE1ICsxMjUsMzEgQEAgSW5zdHJTdGFydChJbnN0cnVt ZW50YXRpb24gKmluc3RyKQogCQkhSU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9MQVpZKGluc3RyLT5z dGFydHRpbWUpKQogCQllbG9nKEVSUk9SLCAiSW5zdHJTdGFydCBjYWxsZWQgdHdpY2UgaW4gYSBy b3ciKTsKIAotCWlmIChpbnN0ci0+bmVlZF9idWZ1c2FnZSkKLQkJaW5zdHItPmJ1ZnVzYWdlX3N0 YXJ0ID0gcGdCdWZmZXJVc2FnZTsKKwlpZiAoaW5zdHItPm5lZWRfYnVmdXNhZ2UgfHwgaW5zdHIt Pm5lZWRfd2FsdXNhZ2UpCisJeworCQlBc3NlcnQoQ3VycmVudFJlc291cmNlT3duZXIgIT0gTlVM TCk7CisJCWluc3RyLT5vd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOworCisJCS8qCisJCSAq IEFsbG9jYXRlIHRoZSBzdGFjayByZXNvdXJjZSBpbiBhIG1lbW9yeSBjb250ZXh0IHRoYXQgc3Vy dml2ZXMKKwkJICogZHVyaW5nIGFuIGFib3J0LiBUaGlzIHdpbGwgYmUgZnJlZWQgYnkgSW5zdHJT dG9wIChyZWd1bGFyCisJCSAqIGV4ZWN1dGlvbikgb3IgUmVzT3duZXJSZWxlYXNlSW5zdHJ1bWVu dGF0aW9uIChhYm9ydCkuCisJCSAqCisJCSAqIFdlIGRvbid0IGRvIHRoaXMgaW4gSW5zdHJBbGxv YyB0byBhdm9pZCBsZWFraW5nIHdoZW4gSW5zdHJTdGFydCArCisJCSAqIEluc3RyU3RvcCBpc24n dCBjYWxsZWQuCisJCSAqLworCQlpZiAoaW5zdHItPnN0YWNrID09IE5VTEwpCisJCQlpbnN0ci0+ c3RhY2sgPSBNZW1vcnlDb250ZXh0QWxsb2NaZXJvKEN1clRyYW5zYWN0aW9uQ29udGV4dCwgc2l6 ZW9mKEluc3RyU3RhY2spKTsKIAotCWlmIChpbnN0ci0+bmVlZF93YWx1c2FnZSkKLQkJaW5zdHIt PndhbHVzYWdlX3N0YXJ0ID0gcGdXYWxVc2FnZTsKKwkJUmVzb3VyY2VPd25lckVubGFyZ2UoaW5z dHItPm93bmVyKTsKKwkJUmVzb3VyY2VPd25lclJlbWVtYmVySW5zdHJTdGFjayhpbnN0ci0+b3du ZXIsIGluc3RyLT5zdGFjayk7CisKKwkJSW5zdHJQdXNoU3RhY2soaW5zdHItPnN0YWNrKTsKKwl9 CiB9CiAKIHZvaWQKLUluc3RyU3RvcChJbnN0cnVtZW50YXRpb24gKmluc3RyKQorSW5zdHJTdG9w KEluc3RydW1lbnRhdGlvbiAqaW5zdHIsIGJvb2wgZmluYWxpemUpCiB7CiAJaW5zdHJfdGltZQll bmR0aW1lOwogCkBAIC04MywxNCArMTY1LDI4IEBAIEluc3RyU3RvcChJbnN0cnVtZW50YXRpb24g Kmluc3RyKQogCQlJTlNUUl9USU1FX1NFVF9aRVJPKGluc3RyLT5zdGFydHRpbWUpOwogCX0KIAot CS8qIEFkZCBkZWx0YSBvZiBidWZmZXIgdXNhZ2Ugc2luY2UgZW50cnkgdG8gbm9kZSdzIHRvdGFs cyAqLwotCWlmIChpbnN0ci0+bmVlZF9idWZ1c2FnZSkKLQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYo Jmluc3RyLT5idWZ1c2FnZSwKLQkJCQkJCQkgJnBnQnVmZmVyVXNhZ2UsICZpbnN0ci0+YnVmdXNh Z2Vfc3RhcnQpOworCWlmIChpbnN0ci0+bmVlZF9idWZ1c2FnZSB8fCBpbnN0ci0+bmVlZF93YWx1 c2FnZSkKKwl7CisJCUluc3RyUG9wU3RhY2soaW5zdHItPnN0YWNrLCBmaW5hbGl6ZSk7CiAKLQlp ZiAoaW5zdHItPm5lZWRfd2FsdXNhZ2UpCi0JCVdhbFVzYWdlQWNjdW1EaWZmKCZpbnN0ci0+d2Fs dXNhZ2UsCi0JCQkJCQkgICZwZ1dhbFVzYWdlLCAmaW5zdHItPndhbHVzYWdlX3N0YXJ0KTsKKwkJ QXNzZXJ0KGluc3RyLT5vd25lciAhPSBOVUxMKTsKKwkJUmVzb3VyY2VPd25lckZvcmdldEluc3Ry U3RhY2soaW5zdHItPm93bmVyLCBpbnN0ci0+c3RhY2spOworCQlpbnN0ci0+b3duZXIgPSBOVUxM OworCisJCWlmIChmaW5hbGl6ZSkKKwkJeworCQkJLyoKKwkJCSAqIFRvIGF2b2lkIGtlZXBpbmcg bWVtb3J5IGFsbG9jYXRlZCBiZXlvbmQgd2hlbiBpdHMgbmVlZGVkLCBjb3B5CisJCQkgKiB0aGUg cmVzdWx0IHRvIHRoZSBjdXJyZW50IG1lbW9yeSBjb250ZXh0LCBhbmQgZnJlZSBpdCBpbiB0aGUK KwkJCSAqIHRyYW5zYWN0aW9uIGNvbnRleHQuCisJCQkgKi8KKwkJCUluc3RyU3RhY2sgKnN0YWNr ID0gcGFsbG9jKHNpemVvZihJbnN0clN0YWNrKSk7CisKKwkJCW1lbWNweShzdGFjaywgaW5zdHIt PnN0YWNrLCBzaXplb2YoSW5zdHJTdGFjaykpOworCQkJcGZyZWUoaW5zdHItPnN0YWNrKTsKKwkJ CWluc3RyLT5zdGFjayA9IHN0YWNrOworCQl9CisJfQogfQogCiAvKiBUcmlnZ2VyIGluc3RydW1l bnRhdGlvbiBoYW5kbGluZyAqLwpAQCAtOTgsMTUgKzE5NCwyMCBAQCBUcmlnZ2VySW5zdHJ1bWVu dGF0aW9uICoKIEluc3RyQWxsb2NUcmlnZ2VyKGludCBuLCBpbnQgaW5zdHJ1bWVudF9vcHRpb25z KQogewogCVRyaWdnZXJJbnN0cnVtZW50YXRpb24gKnRnaW5zdHIgPSBwYWxsb2MwKG4gKiBzaXpl b2YoVHJpZ2dlckluc3RydW1lbnRhdGlvbikpOwotCWJvb2wJCW5lZWRfYnVmZmVycyA9IChpbnN0 cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX0JVRkZFUlMpICE9IDA7Ci0JYm9vbAkJbmVlZF93 YWwgPSAoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5TVFJVTUVOVF9XQUwpICE9IDA7CiAJYm9vbAkJ bmVlZF90aW1lciA9IChpbnN0cnVtZW50X29wdGlvbnMgJiBJTlNUUlVNRU5UX1RJTUVSKSAhPSAw OwogCWludAkJCWk7CiAKKwkvKgorCSAqIFRvIGF2b2lkIGhhdmluZyB0byBkZXRlcm1pbmUgd2hl biB0aGUgbGFzdCB0cmlnZ2VyIGZpcmVkLCB3ZSBuZXZlcgorCSAqIHRyYWNrIFdBTC9idWZmZXIg dXNhZ2UgZm9yIG5vdworCSAqLworCUFzc2VydCgoaW5zdHJ1bWVudF9vcHRpb25zICYgSU5TVFJV TUVOVF9CVUZGRVJTKSA9PSAwKTsKKwlBc3NlcnQoKGluc3RydW1lbnRfb3B0aW9ucyAmIElOU1RS VU1FTlRfV0FMKSA9PSAwKTsKKwogCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAJewotCQl0Z2lu c3RyW2ldLmluc3RyLm5lZWRfYnVmdXNhZ2UgPSBuZWVkX2J1ZmZlcnM7Ci0JCXRnaW5zdHJbaV0u aW5zdHIubmVlZF93YWx1c2FnZSA9IG5lZWRfd2FsOworCQl0Z2luc3RyW2ldLmluc3RyLm5lZWRf YnVmdXNhZ2UgPSBmYWxzZTsKKwkJdGdpbnN0cltpXS5pbnN0ci5uZWVkX3dhbHVzYWdlID0gZmFs c2U7CiAJCXRnaW5zdHJbaV0uaW5zdHIubmVlZF90aW1lciA9IG5lZWRfdGltZXI7CiAJfQogCkBA IC0xMjIsNyArMjIzLDExIEBAIEluc3RyU3RhcnRUcmlnZ2VyKFRyaWdnZXJJbnN0cnVtZW50YXRp b24gKiB0Z2luc3RyKQogdm9pZAogSW5zdHJTdG9wVHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0 aW9uICogdGdpbnN0ciwgaW50IGZpcmluZ3MpCiB7Ci0JSW5zdHJTdG9wKCZ0Z2luc3RyLT5pbnN0 cik7CisJLyoKKwkgKiB0cmlnZ2VyIGluc3RydW1lbnRhdGlvbiBkb2VzIG5vdCB0cmFjayBXQUwv YnVmZmVyIHVzYWdlLCBzbyBpdHMgb2theSB0bworCSAqIG5ldmVyIGZpbmFsaXplCisJICovCisJ SW5zdHJTdG9wKCZ0Z2luc3RyLT5pbnN0ciwgZmFsc2UpOwogCXRnaW5zdHItPmZpcmluZ3MgKz0g ZmlyaW5nczsKIH0KIApAQCAtMTczLDEyICsyNzgsMTMgQEAgSW5zdHJTdGFydE5vZGUoTm9kZUlu c3RydW1lbnRhdGlvbiAqIGluc3RyKQogCQkhSU5TVFJfVElNRV9TRVRfQ1VSUkVOVF9MQVpZKGlu c3RyLT5zdGFydHRpbWUpKQogCQllbG9nKEVSUk9SLCAiSW5zdHJTdGFydE5vZGUgY2FsbGVkIHR3 aWNlIGluIGEgcm93Iik7CiAKLQkvKiBzYXZlIGJ1ZmZlciB1c2FnZSB0b3RhbHMgYXQgbm9kZSBl bnRyeSwgaWYgbmVlZGVkICovCi0JaWYgKGluc3RyLT5uZWVkX2J1ZnVzYWdlKQotCQlpbnN0ci0+ YnVmdXNhZ2Vfc3RhcnQgPSBwZ0J1ZmZlclVzYWdlOworCWlmIChpbnN0ci0+bmVlZF9idWZ1c2Fn ZSB8fCBpbnN0ci0+bmVlZF93YWx1c2FnZSkKKwl7CisJCS8qIEVuc3VyZSB0aGF0IHdlIGFsd2F5 cyBoYXZlIGEgcGFyZW50LCBldmVuIGF0IHRoZSB0b3AgbW9zdCBub2RlICovCisJCUFzc2VydChw Z0luc3RyU3RhY2sgIT0gTlVMTCk7CiAKLQlpZiAoaW5zdHItPm5lZWRfd2FsdXNhZ2UpCi0JCWlu c3RyLT53YWx1c2FnZV9zdGFydCA9IHBnV2FsVXNhZ2U7CisJCUluc3RyUHVzaFN0YWNrKCZpbnN0 ci0+c3RhY2spOworCX0KIH0KIAogLyogRXhpdCBmcm9tIGEgcGxhbiBub2RlICovCkBAIC0yMDMs MTQgKzMwOSwxNCBAQCBJbnN0clN0b3BOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKiBpbnN0ciwg ZG91YmxlIG5UdXBsZXMpCiAJCUlOU1RSX1RJTUVfU0VUX1pFUk8oaW5zdHItPnN0YXJ0dGltZSk7 CiAJfQogCi0JLyogQWRkIGRlbHRhIG9mIGJ1ZmZlciB1c2FnZSBzaW5jZSBlbnRyeSB0byBub2Rl J3MgdG90YWxzICovCi0JaWYgKGluc3RyLT5uZWVkX2J1ZnVzYWdlKQotCQlCdWZmZXJVc2FnZUFj Y3VtRGlmZigmaW5zdHItPmJ1ZnVzYWdlLAotCQkJCQkJCSAmcGdCdWZmZXJVc2FnZSwgJmluc3Ry LT5idWZ1c2FnZV9zdGFydCk7CisJaWYgKGluc3RyLT5uZWVkX2J1ZnVzYWdlIHx8IGluc3RyLT5u ZWVkX3dhbHVzYWdlKQorCXsKKwkJLyogRW5zdXJlIHRoYXQgd2UgYWx3YXlzIGhhdmUgYSBwYXJl bnQsIGV2ZW4gYXQgdGhlIHRvcCBtb3N0IG5vZGUgKi8KKwkJQXNzZXJ0KGluc3RyLT5zdGFjay5w cmV2aW91cyAhPSBOVUxMKTsKIAotCWlmIChpbnN0ci0+bmVlZF93YWx1c2FnZSkKLQkJV2FsVXNh Z2VBY2N1bURpZmYoJmluc3RyLT53YWx1c2FnZSwKLQkJCQkJCSAgJnBnV2FsVXNhZ2UsICZpbnN0 ci0+d2FsdXNhZ2Vfc3RhcnQpOworCQkvKiBBZGRpbmcgdG8gcGFyZW50IGlzIGhhbmRsZWQgYnkg RXhlY0FjY3VtTm9kZUluc3RydW1lbnRhdGlvbiAqLworCQlJbnN0clBvcFN0YWNrKCZpbnN0ci0+ c3RhY2ssIGZhbHNlKTsKKwl9CiAKIAkvKiBJcyB0aGlzIHRoZSBmaXJzdCB0dXBsZSBvZiB0aGlz IGN5Y2xlPyAqLwogCWlmICghaW5zdHItPnJ1bm5pbmcpCkBAIC0yODcsMTMgKzM5MywxMyBAQCBJ bnN0ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqIGRzdCwgTm9kZUluc3RydW1lbnRhdGlv biAqIGFkZCkKIAogCS8qIEFkZCBkZWx0YSBvZiBidWZmZXIgdXNhZ2Ugc2luY2UgZW50cnkgdG8g bm9kZSdzIHRvdGFscyAqLwogCWlmIChkc3QtPm5lZWRfYnVmdXNhZ2UpCi0JCUJ1ZmZlclVzYWdl QWRkKCZkc3QtPmJ1ZnVzYWdlLCAmYWRkLT5idWZ1c2FnZSk7CisJCUJ1ZmZlclVzYWdlQWRkKCZk c3QtPnN0YWNrLmJ1ZnVzYWdlLCAmYWRkLT5zdGFjay5idWZ1c2FnZSk7CiAKIAlpZiAoZHN0LT5u ZWVkX3dhbHVzYWdlKQotCQlXYWxVc2FnZUFkZCgmZHN0LT53YWx1c2FnZSwgJmFkZC0+d2FsdXNh Z2UpOworCQlXYWxVc2FnZUFkZCgmZHN0LT5zdGFjay53YWx1c2FnZSwgJmFkZC0+c3RhY2sud2Fs dXNhZ2UpOwogfQogCi0vKiBub3RlIGN1cnJlbnQgdmFsdWVzIGR1cmluZyBwYXJhbGxlbCBleGVj dXRvciBzdGFydHVwICovCisvKiBzdGFydCBpbnN0cnVtZW50YXRpb24gZHVyaW5nIHBhcmFsbGVs IGV4ZWN1dG9yIHN0YXJ0dXAgKi8KIHZvaWQKIEluc3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KHZvaWQp CiB7CkBAIC0zMTUsMTAgKzQyMSwyOCBAQCBJbnN0ckVuZFBhcmFsbGVsUXVlcnkoQnVmZmVyVXNh Z2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpCiB2b2lkCiBJbnN0ckFjY3VtUGFyYWxs ZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKIHsKKwlp ZiAocGdJbnN0clN0YWNrICE9IE5VTEwpCisJeworCQlJbnN0clN0YWNrICpkc3QgPSBwZ0luc3Ry U3RhY2s7CisKKwkJQnVmZmVyVXNhZ2VBZGQoJmRzdC0+YnVmdXNhZ2UsIGJ1ZnVzYWdlKTsKKwkJ V2FsVXNhZ2VBZGQoJmRzdC0+d2FsdXNhZ2UsIHdhbHVzYWdlKTsKKwl9CisKIAlCdWZmZXJVc2Fn ZUFkZCgmcGdCdWZmZXJVc2FnZSwgYnVmdXNhZ2UpOwogCVdhbFVzYWdlQWRkKCZwZ1dhbFVzYWdl LCB3YWx1c2FnZSk7CiB9CiAKK3ZvaWQKK0luc3RyU3RhY2tBZGQoSW5zdHJTdGFjayAqIGRzdCwg SW5zdHJTdGFjayAqIGFkZCkKK3sKKwlBc3NlcnQoZHN0ICE9IE5VTEwpOworCUFzc2VydChhZGQg IT0gTlVMTCk7CisKKwlCdWZmZXJVc2FnZUFkZCgmZHN0LT5idWZ1c2FnZSwgJmFkZC0+YnVmdXNh Z2UpOworCVdhbFVzYWdlQWRkKCZkc3QtPndhbHVzYWdlLCAmYWRkLT53YWx1c2FnZSk7Cit9CisK IC8qIGRzdCArPSBhZGQgKi8KIHN0YXRpYyB2b2lkCiBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2Fn ZSAqZHN0LCBjb25zdCBCdWZmZXJVc2FnZSAqYWRkKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5k ZXggOGU3YTU0NTMwNjQuLjY5MmUzMTgyZTYyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAg LTI5Nyw2ICsyOTcsNyBAQCBleHRlcm4gdm9pZCBFeGVjU2V0RXhlY1Byb2NOb2RlKFBsYW5TdGF0 ZSAqbm9kZSwgRXhlY1Byb2NOb2RlTXRkIGZ1bmN0aW9uKTsKIGV4dGVybiBOb2RlICpNdWx0aUV4 ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUoUGxh blN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRlICpu b2RlKTsKK2V4dGVybiB2b2lkIEV4ZWNBY2N1bU5vZGVJbnN0cnVtZW50YXRpb24oUGxhblN0YXRl ICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVk ZWQsIFBsYW5TdGF0ZSAqY2hpbGRfbm9kZSk7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvaW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5o CmluZGV4IDhlNDM1ZTFmOTJjLi4zMGQ4MWZjZWFhYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvaW5zdHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1l bnQuaApAQCAtNjcsMTIgKzY3LDI1IEBAIHR5cGVkZWYgZW51bSBJbnN0cnVtZW50T3B0aW9uCiAJ SU5TVFJVTUVOVF9BTEwgPSBQR19JTlQzMl9NQVgKIH0gSW5zdHJ1bWVudE9wdGlvbjsKIAorLyog U3RhY2sgb2YgV0FML2J1ZmZlciB1c2FnZSB1c2VkIGZvciBwZXItbm9kZSBpbnN0cnVtZW50YXRp b24gKi8KK3R5cGVkZWYgc3RydWN0IEluc3RyU3RhY2sKK3sKKwlzdHJ1Y3QgSW5zdHJTdGFjayAq cHJldmlvdXM7CisJQnVmZmVyVXNhZ2UgYnVmdXNhZ2U7CisJV2FsVXNhZ2UJd2FsdXNhZ2U7Cit9 CQkJSW5zdHJTdGFjazsKKwogLyoKICAqIEdlbmVyYWwgcHVycG9zZSBpbnN0cnVtZW50YXRpb24g dGhhdCBjYW4gY2FwdHVyZSB0aW1lIGFuZCBXQUwvYnVmZmVyIHVzYWdlCiAgKgogICogSW5pdGlh bGl6ZWQgdGhyb3VnaCBJbnN0ckFsbG9jLCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBjYWxscyB0 byBhIHBhaXIgb2YKICAqIEluc3RyU3RhcnQvSW5zdHJTdG9wIChhY3Rpdml0eSBpcyBtZWFzdXJl ZCBpbmJldHdlZW4pLgorICoKKyAqIFVzZXMgcmVzb3VyY2Ugb3duZXIgbWVjaGFuaXNtIGZvciBo YW5kbGluZyBhYm9ydHMsIGFzIHN1Y2gsIHRoZSBjYWxsZXIgKm11c3QqIG5vdCBleGl0IG91dCBv ZgorICogdG9wIGxldmVsIHRyYW5zYWN0aW9uIGJldHdlZW4gSW5zdHJTdGFydC9JbnN0clN0b3Ag Y2FsbHMgaW4gcmVndWxhciBleGVjdXRpb24uIElmIHRoaXMgaXMgbmVlZGVkLAorICogZGlyZWN0 bHkgdXNlIEluc3RyUHVzaFN0YWNrL0luc3RyUG9wU3RhY2sgaW4gYSBQR19UUlkvUEdfRklOQUxM WSBibG9jayBpbnN0ZWFkLgogICovCitzdHJ1Y3QgUmVzb3VyY2VPd25lckRhdGE7CiB0eXBlZGVm IHN0cnVjdCBJbnN0cnVtZW50YXRpb24KIHsKIAkvKiBQYXJhbWV0ZXJzIHNldCBhdCBjcmVhdGlv bjogKi8KQEAgLTgxLDEyICs5NCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBJbnN0cnVtZW50YXRpb24K IAlib29sCQluZWVkX3dhbHVzYWdlOwkvKiB0cnVlIGlmIHdlIG5lZWQgV0FMIHVzYWdlIGRhdGEg Ki8KIAkvKiBJbnRlcm5hbCBzdGF0ZSBrZWVwaW5nOiAqLwogCWluc3RyX3RpbWUJc3RhcnR0aW1l OwkJLyogc3RhcnQgdGltZSBvZiBsYXN0IEluc3RyU3RhcnQgKi8KLQlCdWZmZXJVc2FnZSBidWZ1 c2FnZV9zdGFydDsgLyogYnVmZmVyIHVzYWdlIGF0IHN0YXJ0ICovCi0JV2FsVXNhZ2UJd2FsdXNh Z2Vfc3RhcnQ7IC8qIFdBTCB1c2FnZSBhdCBzdGFydCAqLwogCS8qIEFjY3VtdWxhdGVkIHN0YXRp c3RpY3M6ICovCiAJaW5zdHJfdGltZQl0b3RhbDsJCQkvKiB0b3RhbCBydW50aW1lICovCi0JQnVm ZmVyVXNhZ2UgYnVmdXNhZ2U7CQkvKiB0b3RhbCBidWZmZXIgdXNhZ2UgKi8KLQlXYWxVc2FnZQl3 YWx1c2FnZTsJCS8qIHRvdGFsIFdBTCB1c2FnZSAqLworCUluc3RyU3RhY2sgKnN0YWNrOwkJCS8q IHN0YWNrIHRyYWNraW5nIGJ1ZmZlci9XQUwgdXNhZ2UgKi8KKwlzdHJ1Y3QgUmVzb3VyY2VPd25l ckRhdGEgKm93bmVyOwogfSBJbnN0cnVtZW50YXRpb247CiAKIC8qIFRyaWdnZXIgaW5zdHJ1bWVu dGF0aW9uICovCkBAIC05OSw2ICsxMTAsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckluc3Ry dW1lbnRhdGlvbgogCiAvKgogICogU3BlY2lhbGl6ZWQgaW5zdHJ1bWVudGF0aW9uIGZvciBwZXIt bm9kZSBleGVjdXRpb24gc3RhdGlzdGljcworICoKKyAqIFJlcXVpcmVzIHVzZSBvZiBhbiBvdXRl ciBJbnN0clN0YXJ0L0luc3RyU3RvcCB0byBoYW5kbGUgdGhlIHN0YWNrIHVzZWQgZm9yIFdBTC9i dWZmZXIKKyAqIHVzYWdlIHN0YXRpc3RpY3MsIGFuZCByZWxpZXMgb24gaXQgZm9yIG1hbmFnaW5n IGFib3J0cy4gU29sZWx5IGludGVuZGVkIGZvcgorICogdGhlIGV4ZWN1dG9yIGFuZCBhbnlvbmUg cmVwb3J0aW5nIGFib3V0IGl0cyBhY3Rpdml0aWVzIChlLmcuIEVYUExBSU4gQU5BTFlaRSkuCiAg Ki8KIHR5cGVkZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50YXRpb24KIHsKQEAgLTExMyw4ICsxMjgs NiBAQCB0eXBlZGVmIHN0cnVjdCBOb2RlSW5zdHJ1bWVudGF0aW9uCiAJaW5zdHJfdGltZQljb3Vu dGVyOwkJLyogYWNjdW11bGF0ZWQgcnVudGltZSBmb3IgdGhpcyBub2RlICovCiAJaW5zdHJfdGlt ZQlmaXJzdHR1cGxlOwkJLyogdGltZSBmb3IgZmlyc3QgdHVwbGUgb2YgdGhpcyBjeWNsZSAqLwog CWRvdWJsZQkJdHVwbGVjb3VudDsJCS8qICMgb2YgdHVwbGVzIGVtaXR0ZWQgc28gZmFyIHRoaXMg Y3ljbGUgKi8KLQlCdWZmZXJVc2FnZSBidWZ1c2FnZV9zdGFydDsgLyogYnVmZmVyIHVzYWdlIGF0 IHN0YXJ0ICovCi0JV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQ7IC8qIFdBTCB1c2FnZSBhdCBzdGFy dCAqLwogCS8qIEFjY3VtdWxhdGVkIHN0YXRpc3RpY3MgYWNyb3NzIGFsbCBjb21wbGV0ZWQgY3lj bGVzOiAqLwogCWluc3RyX3RpbWUJc3RhcnR1cDsJCS8qIHRvdGFsIHN0YXJ0dXAgdGltZSAqLwog CWluc3RyX3RpbWUJdG90YWw7CQkJLyogdG90YWwgdGltZSAqLwpAQCAtMTIzLDggKzEzNiw3IEBA IHR5cGVkZWYgc3RydWN0IE5vZGVJbnN0cnVtZW50YXRpb24KIAlkb3VibGUJCW5sb29wczsJCQkv KiAjIG9mIHJ1biBjeWNsZXMgZm9yIHRoaXMgbm9kZSAqLwogCWRvdWJsZQkJbmZpbHRlcmVkMTsJ CS8qICMgb2YgdHVwbGVzIHJlbW92ZWQgYnkgc2NhbnF1YWwgb3Igam9pbnF1YWwgKi8KIAlkb3Vi bGUJCW5maWx0ZXJlZDI7CQkvKiAjIG9mIHR1cGxlcyByZW1vdmVkIGJ5ICJvdGhlciIgcXVhbHMg Ki8KLQlCdWZmZXJVc2FnZSBidWZ1c2FnZTsJCS8qIHRvdGFsIGJ1ZmZlciB1c2FnZSAqLwotCVdh bFVzYWdlCXdhbHVzYWdlOwkJLyogdG90YWwgV0FMIHVzYWdlICovCisJSW5zdHJTdGFjawlzdGFj azsJCQkvKiBzdGFjayB0cmFja2luZyBidWZmZXIvV0FMIHVzYWdlICovCiB9CQkJTm9kZUluc3Ry dW1lbnRhdGlvbjsKIAogdHlwZWRlZiBzdHJ1Y3QgV29ya2VySW5zdHJ1bWVudGF0aW9uCkBAIC0x MzUsMTAgKzE0NywzMSBAQCB0eXBlZGVmIHN0cnVjdCBXb3JrZXJJbnN0cnVtZW50YXRpb24KIAog ZXh0ZXJuIFBHRExMSU1QT1JUIEJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7CiBleHRlcm4gUEdE TExJTVBPUlQgV2FsVXNhZ2UgcGdXYWxVc2FnZTsKK2V4dGVybiBQR0RMTElNUE9SVCBJbnN0clN0 YWNrICogcGdJbnN0clN0YWNrOworCitleHRlcm4gdm9pZCBJbnN0clN0YWNrQWRkKEluc3RyU3Rh Y2sgKiBkc3QsIEluc3RyU3RhY2sgKiBhZGQpOworCitzdGF0aWMgaW5saW5lIHZvaWQKK0luc3Ry UHVzaFN0YWNrKEluc3RyU3RhY2sgKiBzdGFjaykKK3sKKwlzdGFjay0+cHJldmlvdXMgPSBwZ0lu c3RyU3RhY2s7CisJcGdJbnN0clN0YWNrID0gc3RhY2s7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZAorSW5zdHJQb3BTdGFjayhJbnN0clN0YWNrICogc3RhY2ssIGJvb2wgYWRkX3RvX3BhcmVudCkK K3sKKwlBc3NlcnQoc3RhY2sgIT0gTlVMTCk7CisKKwlwZ0luc3RyU3RhY2sgPSBzdGFjay0+cHJl dmlvdXM7CisKKwlpZiAocGdJbnN0clN0YWNrICYmIGFkZF90b19wYXJlbnQpCisJCUluc3RyU3Rh Y2tBZGQocGdJbnN0clN0YWNrLCBzdGFjayk7Cit9CiAKIGV4dGVybiBJbnN0cnVtZW50YXRpb24g Kkluc3RyQWxsb2MoaW50IG4sIGludCBpbnN0cnVtZW50X29wdGlvbnMpOwogZXh0ZXJuIHZvaWQg SW5zdHJTdGFydChJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKLWV4dGVybiB2b2lkIEluc3RyU3Rv cChJbnN0cnVtZW50YXRpb24gKmluc3RyKTsKK2V4dGVybiB2b2lkIEluc3RyU3RvcChJbnN0cnVt ZW50YXRpb24gKmluc3RyLCBib29sIGZpbmFsaXplKTsKIAogZXh0ZXJuIFRyaWdnZXJJbnN0cnVt ZW50YXRpb24gKiBJbnN0ckFsbG9jVHJpZ2dlcihpbnQgbiwgaW50IGluc3RydW1lbnRfb3B0aW9u cyk7CiBleHRlcm4gdm9pZCBJbnN0clN0YXJ0VHJpZ2dlcihUcmlnZ2VySW5zdHJ1bWVudGF0aW9u ICogdGdpbnN0cik7CkBAIC0xNjMsMjEgKzE5NiwzNCBAQCBleHRlcm4gdm9pZCBXYWxVc2FnZUFj Y3VtRGlmZihXYWxVc2FnZSAqZHN0LCBjb25zdCBXYWxVc2FnZSAqYWRkLAogCiAjZGVmaW5lIElO U1RSX0JVRlVTQUdFX0lOQ1IoZmxkKSBkbyB7IFwKIAkJcGdCdWZmZXJVc2FnZS5mbGQrKzsgXAor CQlpZiAocGdJbnN0clN0YWNrKSBcCisJCQlwZ0luc3RyU3RhY2stPmJ1ZnVzYWdlLmZsZCsrOyBc CiAJfSB3aGlsZSgwKQogI2RlZmluZSBJTlNUUl9CVUZVU0FHRV9BREQoZmxkLHZhbCkgZG8geyBc CiAJCXBnQnVmZmVyVXNhZ2UuZmxkICs9IHZhbDsgXAorCQlpZiAocGdJbnN0clN0YWNrKSBcCisJ CQlwZ0luc3RyU3RhY2stPmJ1ZnVzYWdlLmZsZCArPSB2YWw7IFwKIAl9IHdoaWxlKDApCiAjZGVm aW5lIElOU1RSX0JVRlVTQUdFX1RJTUVfQUREKGZsZCx2YWwpIGRvIHsgXAogCUlOU1RSX1RJTUVf QUREKHBnQnVmZmVyVXNhZ2UuZmxkLCB2YWwpOyBcCisJaWYgKHBnSW5zdHJTdGFjaykgXAorCQlJ TlNUUl9USU1FX0FERChwZ0luc3RyU3RhY2stPmJ1ZnVzYWdlLmZsZCwgdmFsKTsgXAogCX0gd2hp bGUgKDApCiAjZGVmaW5lIElOU1RSX0JVRlVTQUdFX1RJTUVfQUNDVU1fRElGRihmbGQsZW5kdmFs LHN0YXJ0dmFsKSBkbyB7IFwKIAlJTlNUUl9USU1FX0FDQ1VNX0RJRkYocGdCdWZmZXJVc2FnZS5m bGQsIGVuZHZhbCwgc3RhcnR2YWwpOyBcCisJaWYgKHBnSW5zdHJTdGFjaykgXAorCQlJTlNUUl9U SU1FX0FDQ1VNX0RJRkYocGdJbnN0clN0YWNrLT5idWZ1c2FnZS5mbGQsIGVuZHZhbCwgc3RhcnR2 YWwpOyBcCiAJfSB3aGlsZSAoMCkKKwogI2RlZmluZSBJTlNUUl9XQUxVU0FHRV9JTkNSKGZsZCkg ZG8geyBcCiAJCXBnV2FsVXNhZ2UuZmxkKys7IFwKKwkJaWYgKHBnSW5zdHJTdGFjaykgXAorCQkJ cGdJbnN0clN0YWNrLT53YWx1c2FnZS5mbGQrKzsgXAogCX0gd2hpbGUoMCkKICNkZWZpbmUgSU5T VFJfV0FMVVNBR0VfQUREKGZsZCx2YWwpIGRvIHsgXAogCQlwZ1dhbFVzYWdlLmZsZCArPSB2YWw7 IFwKKwkJaWYgKHBnSW5zdHJTdGFjaykgXAorCQkJcGdJbnN0clN0YWNrLT53YWx1c2FnZS5mbGQg Kz0gdmFsOyBcCiAJfSB3aGlsZSgwKQogCiAjZW5kaWYJCQkJCQkJLyogSU5TVFJVTUVOVF9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZXNvd25lci5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvcmVzb3duZXIuaAppbmRleCBhZWRlNGJmYzgyMC4uYzAyYjc1NDgwZmYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL3Jlc293bmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv cmVzb3duZXIuaApAQCAtNzUsNiArNzUsNyBAQCB0eXBlZGVmIHVpbnQzMiBSZXNvdXJjZVJlbGVh c2VQcmlvcml0eTsKICNkZWZpbmUgUkVMRUFTRV9QUklPX1NOQVBTSE9UX1JFRlMJCQk1MDAKICNk ZWZpbmUgUkVMRUFTRV9QUklPX0ZJTEVTCQkJCQk2MDAKICNkZWZpbmUgUkVMRUFTRV9QUklPX1dB SVRFVkVOVFNFVFMJCQk3MDAKKyNkZWZpbmUgUkVMRUFTRV9QUklPX0lOU1RSVU1FTlRBVElPTgkJ ODAwCiAKIC8qIDAgaXMgY29uc2lkZXJlZCBpbnZhbGlkICovCiAjZGVmaW5lIFJFTEVBU0VfUFJJ T19GSVJTVAkJCQkJMQotLSAKMi40Ny4xCgo= --000000000000dd059506426f2cb7 Content-Type: application/octet-stream; name="v4-0006-Convert-remaining-users-of-pgBufferUsage-to-use-I.patch" Content-Disposition: attachment; filename="v4-0006-Convert-remaining-users-of-pgBufferUsage-to-use-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mheislvd5 RnJvbSAzOGQ0NGEzYWYwZGE5NTc5NjM3NGEwNjNhMjBhM2NkMzhhM2E2ZDBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU dWUsIDkgU2VwIDIwMjUgMDI6MjY6NTYgLTA3MDAKU3ViamVjdDogW1BBVENIIHY0IDYvN10gQ29u dmVydCByZW1haW5pbmcgdXNlcnMgb2YgcGdCdWZmZXJVc2FnZSB0byB1c2UKIEluc3RyU3RhcnQv SW5zdHJTdG9wLCBkcm9wIHRoZSBnbG9iYWwKCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jIHwgMjkgKysrKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2FuYWx5emUuYyAgICAgICB8IDMxICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgIHwgMjYgKysrKysrKy0tLS0tLS0tLS0t LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX2RyLmMgICAgfCAzMSArKysrKysrKysr KysrLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICB8IDI2 ICsrKysrKystLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5j ICAgIHwgMzUgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0 b3IvaW5zdHJ1bWVudC5oICAgIHwgIDggKy0tLS0tLQogNyBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNl cnRpb25zKCspLCAxMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IGQyYjAzMWZkZDA2Li5mMjlmMmMwNzg0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwpAQCAtNjQxLDggKzY0MSw3IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlv biByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJVGltZXN0YW1wVHogc3RhcnR0aW1l ID0gMDsKIAlQZ1N0YXRfQ291bnRlciBzdGFydHJlYWR0aW1lID0gMCwKIAkJCQlzdGFydHdyaXRl dGltZSA9IDA7Ci0JV2FsVXNhZ2UJc3RhcnR3YWx1c2FnZSA9IHBnV2FsVXNhZ2U7Ci0JQnVmZmVy VXNhZ2Ugc3RhcnRidWZmZXJ1c2FnZSA9IHBnQnVmZmVyVXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9u ICppbnN0ciA9IE5VTEw7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CiAJY2hh cgkgICoqaW5kbmFtZXMgPSBOVUxMOwogCkBAIC02NTcsNiArNjU2LDggQEAgaGVhcF92YWN1dW1f cmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJCXN0YXJ0cmVh ZHRpbWUgPSBwZ1N0YXRCbG9ja1JlYWRUaW1lOwogCQkJc3RhcnR3cml0ZXRpbWUgPSBwZ1N0YXRC bG9ja1dyaXRlVGltZTsKIAkJfQorCQlpbnN0ciA9IEluc3RyQWxsb2MoMSwgSU5TVFJVTUVOVF9C VUZGRVJTIHwgSU5TVFJVTUVOVF9XQUwpOworCQlJbnN0clN0YXJ0KGluc3RyKTsKIAl9CiAKIAkv KiBVc2VkIGZvciBpbnN0cnVtZW50YXRpb24gYW5kIHN0YXRzIHJlcG9ydCAqLwpAQCAtOTU5LDE0 ICs5NjAsMTQgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFy YW1zIHBhcmFtcywKIAl7CiAJCVRpbWVzdGFtcFR6IGVuZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0 YW1wKCk7CiAKKwkJSW5zdHJTdG9wKGluc3RyLCB0cnVlKTsKKwogCQlpZiAodmVyYm9zZSB8fCBw YXJhbXMubG9nX3ZhY3V1bV9taW5fZHVyYXRpb24gPT0gMCB8fAogCQkJVGltZXN0YW1wRGlmZmVy ZW5jZUV4Y2VlZHMoc3RhcnR0aW1lLCBlbmR0aW1lLAogCQkJCQkJCQkJICAgcGFyYW1zLmxvZ192 YWN1dW1fbWluX2R1cmF0aW9uKSkKIAkJewogCQkJbG9uZwkJc2Vjc19kdXI7CiAJCQlpbnQJCQl1 c2Vjc19kdXI7Ci0JCQlXYWxVc2FnZQl3YWx1c2FnZTsKLQkJCUJ1ZmZlclVzYWdlIGJ1ZmZlcnVz YWdlOwogCQkJU3RyaW5nSW5mb0RhdGEgYnVmOwogCQkJY2hhcgkgICAqbXNnZm10OwogCQkJaW50 MzIJCWRpZmY7CkBAIC05NzUsMTkgKzk3NiwxNyBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24g cmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJaW50NjQJCXRvdGFsX2Jsa3NfaGl0 OwogCQkJaW50NjQJCXRvdGFsX2Jsa3NfcmVhZDsKIAkJCWludDY0CQl0b3RhbF9ibGtzX2RpcnRp ZWQ7CisJCQlCdWZmZXJVc2FnZSBidWZ1c2FnZSA9IGluc3RyLT5zdGFjay0+YnVmdXNhZ2U7CisJ CQlXYWxVc2FnZQl3YWx1c2FnZSA9IGluc3RyLT5zdGFjay0+d2FsdXNhZ2U7CiAKIAkJCVRpbWVz dGFtcERpZmZlcmVuY2Uoc3RhcnR0aW1lLCBlbmR0aW1lLCAmc2Vjc19kdXIsICZ1c2Vjc19kdXIp OwotCQkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6ZW9mKFdhbFVzYWdlKSk7Ci0JCQlXYWxVc2Fn ZUFjY3VtRGlmZigmd2FsdXNhZ2UsICZwZ1dhbFVzYWdlLCAmc3RhcnR3YWx1c2FnZSk7Ci0JCQlt ZW1zZXQoJmJ1ZmZlcnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJCUJ1ZmZlclVz YWdlQWNjdW1EaWZmKCZidWZmZXJ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZzdGFydGJ1ZmZlcnVz YWdlKTsKLQotCQkJdG90YWxfYmxrc19oaXQgPSBidWZmZXJ1c2FnZS5zaGFyZWRfYmxrc19oaXQg KwotCQkJCWJ1ZmZlcnVzYWdlLmxvY2FsX2Jsa3NfaGl0OwotCQkJdG90YWxfYmxrc19yZWFkID0g YnVmZmVydXNhZ2Uuc2hhcmVkX2Jsa3NfcmVhZCArCi0JCQkJYnVmZmVydXNhZ2UubG9jYWxfYmxr c19yZWFkOwotCQkJdG90YWxfYmxrc19kaXJ0aWVkID0gYnVmZmVydXNhZ2Uuc2hhcmVkX2Jsa3Nf ZGlydGllZCArCi0JCQkJYnVmZmVydXNhZ2UubG9jYWxfYmxrc19kaXJ0aWVkOworCisJCQl0b3Rh bF9ibGtzX2hpdCA9IGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX2hpdCArCisJCQkJYnVmdXNhZ2UubG9j YWxfYmxrc19oaXQ7CisJCQl0b3RhbF9ibGtzX3JlYWQgPSBidWZ1c2FnZS5zaGFyZWRfYmxrc19y ZWFkICsKKwkJCQlidWZ1c2FnZS5sb2NhbF9ibGtzX3JlYWQ7CisJCQl0b3RhbF9ibGtzX2RpcnRp ZWQgPSBidWZ1c2FnZS5zaGFyZWRfYmxrc19kaXJ0aWVkICsKKwkJCQlidWZ1c2FnZS5sb2NhbF9i bGtzX2RpcnRpZWQ7CiAKIAkJCWluaXRTdHJpbmdJbmZvKCZidWYpOwogCQkJaWYgKHZlcmJvc2Up CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9hbmFseXplLmMKaW5kZXggYzJlMjE2NTYzYzYuLmM5YTI1YjRkZjdiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvYW5hbHl6ZS5jCkBAIC0zMDIsOSArMzAyLDcgQEAgZG9fYW5hbHl6ZV9yZWwoUmVs YXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCU9pZAkJCXNhdmVfdXNl cmlkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7Ci0J V2FsVXNhZ2UJc3RhcnR3YWx1c2FnZSA9IHBnV2FsVXNhZ2U7Ci0JQnVmZmVyVXNhZ2Ugc3RhcnRi dWZmZXJ1c2FnZSA9IHBnQnVmZmVyVXNhZ2U7Ci0JQnVmZmVyVXNhZ2UgYnVmZmVydXNhZ2U7CisJ SW5zdHJ1bWVudGF0aW9uICppbnN0ciA9IE5VTEw7CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnRyZWFk dGltZSA9IDA7CiAJUGdTdGF0X0NvdW50ZXIgc3RhcnR3cml0ZXRpbWUgPSAwOwogCkBAIC0zNTUs NiArMzUzLDkgQEAgZG9fYW5hbHl6ZV9yZWwoUmVsYXRpb24gb25lcmVsLCBjb25zdCBWYWN1dW1Q YXJhbXMgcGFyYW1zLAogCQl9CiAKIAkJcGdfcnVzYWdlX2luaXQoJnJ1MCk7CisKKwkJaW5zdHIg PSBJbnN0ckFsbG9jKDEsIElOU1RSVU1FTlRfQlVGRkVSUyB8IElOU1RSVU1FTlRfV0FMKTsKKwkJ SW5zdHJTdGFydChpbnN0cik7CiAJfQogCiAJLyogVXNlZCBmb3IgaW5zdHJ1bWVudGF0aW9uIGFu ZCBzdGF0cyByZXBvcnQgKi8KQEAgLTczNSwxMiArNzM2LDEzIEBAIGRvX2FuYWx5emVfcmVsKFJl bGF0aW9uIG9uZXJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAl7CiAJCVRpbWVzdGFt cFR6IGVuZHRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKKwkJSW5zdHJTdG9wKGluc3Ry LCB0cnVlKTsKKwogCQlpZiAodmVyYm9zZSB8fCBwYXJhbXMubG9nX2FuYWx5emVfbWluX2R1cmF0 aW9uID09IDAgfHwKIAkJCVRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0dGltZSwgZW5k dGltZSwKIAkJCQkJCQkJCSAgIHBhcmFtcy5sb2dfYW5hbHl6ZV9taW5fZHVyYXRpb24pKQogCQl7 CiAJCQlsb25nCQlkZWxheV9pbl9tczsKLQkJCVdhbFVzYWdlCXdhbHVzYWdlOwogCQkJZG91Ymxl CQlyZWFkX3JhdGUgPSAwOwogCQkJZG91YmxlCQl3cml0ZV9yYXRlID0gMDsKIAkJCWNoYXIJICAg Km1zZ2ZtdDsKQEAgLTc0OCwxOCArNzUwLDE1IEBAIGRvX2FuYWx5emVfcmVsKFJlbGF0aW9uIG9u ZXJlbCwgY29uc3QgVmFjdXVtUGFyYW1zIHBhcmFtcywKIAkJCWludDY0CQl0b3RhbF9ibGtzX2hp dDsKIAkJCWludDY0CQl0b3RhbF9ibGtzX3JlYWQ7CiAJCQlpbnQ2NAkJdG90YWxfYmxrc19kaXJ0 aWVkOwotCi0JCQltZW1zZXQoJmJ1ZmZlcnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsK LQkJCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZidWZmZXJ1c2FnZSwgJnBnQnVmZmVyVXNhZ2UsICZz dGFydGJ1ZmZlcnVzYWdlKTsKLQkJCW1lbXNldCgmd2FsdXNhZ2UsIDAsIHNpemVvZihXYWxVc2Fn ZSkpOwotCQkJV2FsVXNhZ2VBY2N1bURpZmYoJndhbHVzYWdlLCAmcGdXYWxVc2FnZSwgJnN0YXJ0 d2FsdXNhZ2UpOwotCi0JCQl0b3RhbF9ibGtzX2hpdCA9IGJ1ZmZlcnVzYWdlLnNoYXJlZF9ibGtz X2hpdCArCi0JCQkJYnVmZmVydXNhZ2UubG9jYWxfYmxrc19oaXQ7Ci0JCQl0b3RhbF9ibGtzX3Jl YWQgPSBidWZmZXJ1c2FnZS5zaGFyZWRfYmxrc19yZWFkICsKLQkJCQlidWZmZXJ1c2FnZS5sb2Nh bF9ibGtzX3JlYWQ7Ci0JCQl0b3RhbF9ibGtzX2RpcnRpZWQgPSBidWZmZXJ1c2FnZS5zaGFyZWRf Ymxrc19kaXJ0aWVkICsKLQkJCQlidWZmZXJ1c2FnZS5sb2NhbF9ibGtzX2RpcnRpZWQ7CisJCQlC dWZmZXJVc2FnZSBidWZ1c2FnZSA9IGluc3RyLT5zdGFjay0+YnVmdXNhZ2U7CisJCQlXYWxVc2Fn ZQl3YWx1c2FnZSA9IGluc3RyLT5zdGFjay0+d2FsdXNhZ2U7CisKKwkJCXRvdGFsX2Jsa3NfaGl0 ID0gYnVmdXNhZ2Uuc2hhcmVkX2Jsa3NfaGl0ICsKKwkJCQlidWZ1c2FnZS5sb2NhbF9ibGtzX2hp dDsKKwkJCXRvdGFsX2Jsa3NfcmVhZCA9IGJ1ZnVzYWdlLnNoYXJlZF9ibGtzX3JlYWQgKworCQkJ CWJ1ZnVzYWdlLmxvY2FsX2Jsa3NfcmVhZDsKKwkJCXRvdGFsX2Jsa3NfZGlydGllZCA9IGJ1ZnVz YWdlLnNoYXJlZF9ibGtzX2RpcnRpZWQgKworCQkJCWJ1ZnVzYWdlLmxvY2FsX2Jsa3NfZGlydGll ZDsKIAogCQkJLyoKIAkJCSAqIFdlIGRvIG5vdCBleHBlY3QgYW4gYW5hbHl6ZSB0byB0YWtlID4g MjUgZGF5cyBhbmQgaXQgc2ltcGxpZmllcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDU0NTE4 NTE0OGFjLi5kZDNiZjYxNTU4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzIyLDE0ICsz MjIsMTYgQEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNv ck9wdGlvbnMsCiAJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCiB7CiAJUGxhbm5l ZFN0bXQgKnBsYW47Ci0JaW5zdHJfdGltZQlwbGFuc3RhcnQsCi0JCQkJcGxhbmR1cmF0aW9uOwot CUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LAotCQkJCWJ1ZnVzYWdlOworCUluc3RydW1lbnRh dGlvbiAqaW5zdHIgPSBOVUxMOwogCU1lbW9yeUNvbnRleHRDb3VudGVycyBtZW1fY291bnRlcnM7 CiAJTWVtb3J5Q29udGV4dCBwbGFubmVyX2N0eCA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBzYXZl ZF9jdHggPSBOVUxMOwogCisJaWYgKGVzLT5idWZmZXJzKQorCQlpbnN0ciA9IEluc3RyQWxsb2Mo MSwgSU5TVFJVTUVOVF9USU1FUiB8IElOU1RSVU1FTlRfQlVGRkVSUyk7CisJZWxzZQorCQlpbnN0 ciA9IEluc3RyQWxsb2MoMSwgSU5TVFJVTUVOVF9USU1FUik7CisKIAlpZiAoZXMtPm1lbW9yeSkK IAl7CiAJCS8qCkBAIC0zNDYsMTUgKzM0OCwxMiBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnko UXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJc2F2ZWRfY3R4ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKHBsYW5uZXJfY3R4KTsKIAl9CiAKLQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCWJ1 ZnVzYWdlX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKLQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBs YW5zdGFydCk7CisJSW5zdHJTdGFydChpbnN0cik7CiAKIAkvKiBwbGFuIHRoZSBxdWVyeSAqLwog CXBsYW4gPSBwZ19wbGFuX3F1ZXJ5KHF1ZXJ5LCBxdWVyeVN0cmluZywgY3Vyc29yT3B0aW9ucywg cGFyYW1zLCBlcyk7CiAKLQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHBsYW5kdXJhdGlvbik7Ci0J SU5TVFJfVElNRV9TVUJUUkFDVChwbGFuZHVyYXRpb24sIHBsYW5zdGFydCk7CisJSW5zdHJTdG9w KGluc3RyLCB0cnVlKTsKIAogCWlmIChlcy0+bWVtb3J5KQogCXsKQEAgLTM2MiwxNiArMzYxLDkg QEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlv bnMsCiAJCU1lbW9yeUNvbnRleHRNZW1Db25zdW1lZChwbGFubmVyX2N0eCwgJm1lbV9jb3VudGVy cyk7CiAJfQogCi0JLyogY2FsYyBkaWZmZXJlbmNlcyBvZiBidWZmZXIgY291bnRlcnMuICovCi0J aWYgKGVzLT5idWZmZXJzKQotCXsKLQkJbWVtc2V0KCZidWZ1c2FnZSwgMCwgc2l6ZW9mKEJ1ZmZl clVzYWdlKSk7Ci0JCUJ1ZmZlclVzYWdlQWNjdW1EaWZmKCZidWZ1c2FnZSwgJnBnQnVmZmVyVXNh Z2UsICZidWZ1c2FnZV9zdGFydCk7Ci0JfQotCiAJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFuZCBw cm9kdWNlIG91dHB1dCAqLwogCUV4cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0 cmluZywgcGFyYW1zLCBxdWVyeUVudiwKLQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZl cnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKKwkJCQkgICAmaW5zdHItPnRvdGFsLCAoZXMtPmJ1ZmZl cnMgPyAmaW5zdHItPnN0YWNrLT5idWZ1c2FnZSA6IE5VTEwpLAogCQkJCSAgIGVzLT5tZW1vcnkg PyAmbWVtX2NvdW50ZXJzIDogTlVMTCk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW5fZHIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fZHIuYwpp bmRleCA5NTY4NWQ3ZTg4ZC4uNTZlOTI0YjllYzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW5fZHIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX2Ry LmMKQEAgLTExMCwxNSArMTEwLDIwIEBAIHNlcmlhbGl6ZUFuYWx5emVSZWNlaXZlKFR1cGxlVGFi bGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNlbGYpCiAJTWVtb3J5Q29udGV4dCBvbGRjb250 ZXh0OwogCVN0cmluZ0luZm8JYnVmID0gJm15U3RhdGUtPmJ1ZjsKIAlpbnQJCQluYXR0cyA9IHR5 cGVpbmZvLT5uYXR0czsKLQlpbnN0cl90aW1lCXN0YXJ0LAotCQkJCWVuZDsKLQlCdWZmZXJVc2Fn ZSBpbnN0cl9zdGFydDsKKwlJbnN0cnVtZW50YXRpb24gKmluc3RyID0gTlVMTDsKIAogCS8qIG9u bHkgbWVhc3VyZSB0aW1lLCBidWZmZXJzIGlmIHJlcXVlc3RlZCAqLwotCWlmIChteVN0YXRlLT5l cy0+dGltaW5nKQotCQlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0KTsKLQlpZiAobXlTdGF0 ZS0+ZXMtPmJ1ZmZlcnMpCi0JCWluc3RyX3N0YXJ0ID0gcGdCdWZmZXJVc2FnZTsKKwlpZiAobXlT dGF0ZS0+ZXMtPnRpbWluZyB8fCBteVN0YXRlLT5lcy0+YnVmZmVycykKKwl7CisJCUluc3RydW1l bnRPcHRpb24gaW5zdHJ1bWVudF9vcHRpb25zID0gMDsKKworCQlpZiAobXlTdGF0ZS0+ZXMtPnRp bWluZykKKwkJCWluc3RydW1lbnRfb3B0aW9ucyB8PSBJTlNUUlVNRU5UX1RJTUVSOworCQlpZiAo bXlTdGF0ZS0+ZXMtPmJ1ZmZlcnMpCisJCQlpbnN0cnVtZW50X29wdGlvbnMgfD0gSU5TVFJVTUVO VF9CVUZGRVJTOworCQlpbnN0ciA9IEluc3RyQWxsb2MoMSwgaW5zdHJ1bWVudF9vcHRpb25zKTsK KwkJSW5zdHJTdGFydChpbnN0cik7CisJfQogCiAJLyogU2V0IG9yIHVwZGF0ZSBteSBkZXJpdmVk IGF0dHJpYnV0ZSBpbmZvLCBpZiBuZWVkZWQgKi8KIAlpZiAobXlTdGF0ZS0+YXR0cmluZm8gIT0g dHlwZWluZm8gfHwgbXlTdGF0ZS0+bmF0dHJzICE9IG5hdHRzKQpAQCAtMTg2LDE4ICsxOTEsMTYg QEAgc2VyaWFsaXplQW5hbHl6ZVJlY2VpdmUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIERlc3RSZWNl aXZlciAqc2VsZikKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAJTWVtb3J5 Q29udGV4dFJlc2V0KG15U3RhdGUtPnRtcGNvbnRleHQpOwogCisJaWYgKG15U3RhdGUtPmVzLT50 aW1pbmcgfHwgbXlTdGF0ZS0+ZXMtPmJ1ZmZlcnMpCisJCUluc3RyU3RvcChpbnN0ciwgdHJ1ZSk7 CisKIAkvKiBVcGRhdGUgdGltaW5nIGRhdGEgKi8KIAlpZiAobXlTdGF0ZS0+ZXMtPnRpbWluZykK LQl7Ci0JCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQoZW5kKTsKLQkJSU5TVFJfVElNRV9BQ0NVTV9E SUZGKG15U3RhdGUtPm1ldHJpY3MudGltZVNwZW50LCBlbmQsIHN0YXJ0KTsKLQl9CisJCUlOU1RS X1RJTUVfQUREKG15U3RhdGUtPm1ldHJpY3MudGltZVNwZW50LCBpbnN0ci0+dG90YWwpOwogCiAJ LyogVXBkYXRlIGJ1ZmZlciBtZXRyaWNzICovCiAJaWYgKG15U3RhdGUtPmVzLT5idWZmZXJzKQot CQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmbXlTdGF0ZS0+bWV0cmljcy5idWZmZXJVc2FnZSwKLQkJ CQkJCQkgJnBnQnVmZmVyVXNhZ2UsCi0JCQkJCQkJICZpbnN0cl9zdGFydCk7CisJCUJ1ZmZlclVz YWdlQWRkKCZteVN0YXRlLT5tZXRyaWNzLmJ1ZmZlclVzYWdlLCAmaW5zdHItPnN0YWNrLT5idWZ1 c2FnZSk7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAzNGI2 NDEwZDZhMi4uNzdiNGM1OWU3MWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTU3OCwxNCAr NTc4LDE2IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRv Q2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCUxpc3RDZWxsICAgKnA7CiAJUGFyYW1M aXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IE5VTEw7Ci0JaW5z dHJfdGltZQlwbGFuc3RhcnQ7Ci0JaW5zdHJfdGltZQlwbGFuZHVyYXRpb247Ci0JQnVmZmVyVXNh Z2UgYnVmdXNhZ2Vfc3RhcnQsCi0JCQkJYnVmdXNhZ2U7CisJSW5zdHJ1bWVudGF0aW9uICppbnN0 ciA9IE5VTEw7CiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudGVyczsKIAlNZW1vcnlD b250ZXh0IHBsYW5uZXJfY3R4ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IHNhdmVkX2N0eCA9IE5V TEw7CiAKKwlpZiAoZXMtPmJ1ZmZlcnMpCisJCWluc3RyID0gSW5zdHJBbGxvYygxLCBJTlNUUlVN RU5UX1RJTUVSIHwgSU5TVFJVTUVOVF9CVUZGRVJTKTsKKwllbHNlCisJCWluc3RyID0gSW5zdHJB bGxvYygxLCBJTlNUUlVNRU5UX1RJTUVSKTsKKwogCWlmIChlcy0+bWVtb3J5KQogCXsKIAkJLyog U2VlIEV4cGxhaW5PbmVRdWVyeSBhYm91dCB0aGlzICovCkBAIC01OTYsOSArNTk4LDcgQEAgRXhw bGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8s IEV4cGxhaW5TdGF0ZSAqZXMsCiAJCXNhdmVkX2N0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhw bGFubmVyX2N0eCk7CiAJfQogCi0JaWYgKGVzLT5idWZmZXJzKQotCQlidWZ1c2FnZV9zdGFydCA9 IHBnQnVmZmVyVXNhZ2U7Ci0JSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChwbGFuc3RhcnQpOworCUlu c3RyU3RhcnQoaW5zdHIpOwogCiAJLyogTG9vayBpdCB1cCBpbiB0aGUgaGFzaCB0YWJsZSAqLwog CWVudHJ5ID0gRmV0Y2hQcmVwYXJlZFN0YXRlbWVudChleGVjc3RtdC0+bmFtZSwgdHJ1ZSk7CkBA IC02MzMsOCArNjMzLDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0 bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJY3BsYW4gPSBHZXRDYWNo ZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLAogCQkJCQkJICBDdXJyZW50UmVzb3Vy Y2VPd25lciwgcHN0YXRlLT5wX3F1ZXJ5RW52KTsKIAotCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQo cGxhbmR1cmF0aW9uKTsKLQlJTlNUUl9USU1FX1NVQlRSQUNUKHBsYW5kdXJhdGlvbiwgcGxhbnN0 YXJ0KTsKKwlJbnN0clN0b3AoaW5zdHIsIHRydWUpOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpA QCAtNjQyLDEzICs2NDEsNiBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVj c3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJTWVtb3J5Q29udGV4 dE1lbUNvbnN1bWVkKHBsYW5uZXJfY3R4LCAmbWVtX2NvdW50ZXJzKTsKIAl9CiAKLQkvKiBjYWxj IGRpZmZlcmVuY2VzIG9mIGJ1ZmZlciBjb3VudGVycy4gKi8KLQlpZiAoZXMtPmJ1ZmZlcnMpCi0J ewotCQltZW1zZXQoJmJ1ZnVzYWdlLCAwLCBzaXplb2YoQnVmZmVyVXNhZ2UpKTsKLQkJQnVmZmVy VXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0 KTsKLQl9Ci0KIAlwbGFuX2xpc3QgPSBjcGxhbi0+c3RtdF9saXN0OwogCiAJLyogRXhwbGFpbiBl YWNoIHF1ZXJ5ICovCkBAIC02NTgsNyArNjUwLDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVj dXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAK IAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKIAkJCUV4cGxhaW5PbmVQ bGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBwc3RhdGUtPnBfcXVl cnlFbnYsCi0JCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2Ug OiBOVUxMKSwKKwkJCQkJCSAgICZpbnN0ci0+dG90YWwsIChlcy0+YnVmZmVycyA/ICZpbnN0ci0+ c3RhY2stPmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3Vu dGVycyA6IE5VTEwpOwogCQllbHNlCiAJCQlFeHBsYWluT25lVXRpbGl0eShwc3RtdC0+dXRpbGl0 eVN0bXQsIGludG8sIGVzLCBwc3RhdGUsIHBhcmFtTEkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVu dC5jCmluZGV4IDAyYzMzYjdkZWFkLi4yYTE0MWZkYWUwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2luc3Ry dW1lbnQuYwpAQCAtMTksMTEgKzE5LDkgQEAKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgog I2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCiAKLUJ1ZmZlclVzYWdlIHBnQnVmZmVyVXNhZ2U7 CiBXYWxVc2FnZQlwZ1dhbFVzYWdlOwogSW5zdHJTdGFjayAqcGdJbnN0clN0YWNrID0gTlVMTDsK IAotc3RhdGljIHZvaWQgQnVmZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVm ZmVyVXNhZ2UgKmFkZCk7CiBzdGF0aWMgdm9pZCBXYWxVc2FnZUFkZChXYWxVc2FnZSAqZHN0LCBX YWxVc2FnZSAqYWRkKTsKIAogLyoKQEAgLTQyOCw3ICs0MjYsNiBAQCBJbnN0ckFjY3VtUGFyYWxs ZWxRdWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSkKIAkJV2Fs VXNhZ2VBZGQoJmRzdC0+d2FsdXNhZ2UsIHdhbHVzYWdlKTsKIAl9CiAKLQlCdWZmZXJVc2FnZUFk ZCgmcGdCdWZmZXJVc2FnZSwgYnVmdXNhZ2UpOwogCVdhbFVzYWdlQWRkKCZwZ1dhbFVzYWdlLCB3 YWx1c2FnZSk7CiB9CiAKQEAgLTQ0Myw3ICs0NDAsNyBAQCBJbnN0clN0YWNrQWRkKEluc3RyU3Rh Y2sgKiBkc3QsIEluc3RyU3RhY2sgKiBhZGQpCiB9CiAKIC8qIGRzdCArPSBhZGQgKi8KLXN0YXRp YyB2b2lkCit2b2lkCiBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2FnZSAqZHN0LCBjb25zdCBCdWZm ZXJVc2FnZSAqYWRkKQogewogCWRzdC0+c2hhcmVkX2Jsa3NfaGl0ICs9IGFkZC0+c2hhcmVkX2Js a3NfaGl0OwpAQCAtNDY0LDM2ICs0NjEsNiBAQCBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2FnZSAq ZHN0LCBjb25zdCBCdWZmZXJVc2FnZSAqYWRkKQogCUlOU1RSX1RJTUVfQUREKGRzdC0+dGVtcF9i bGtfd3JpdGVfdGltZSwgYWRkLT50ZW1wX2Jsa193cml0ZV90aW1lKTsKIH0KIAotLyogZHN0ICs9 IGFkZCAtIHN1YiAqLwotdm9pZAotQnVmZmVyVXNhZ2VBY2N1bURpZmYoQnVmZmVyVXNhZ2UgKmRz dCwKLQkJCQkJIGNvbnN0IEJ1ZmZlclVzYWdlICphZGQsCi0JCQkJCSBjb25zdCBCdWZmZXJVc2Fn ZSAqc3ViKQotewotCWRzdC0+c2hhcmVkX2Jsa3NfaGl0ICs9IGFkZC0+c2hhcmVkX2Jsa3NfaGl0 IC0gc3ViLT5zaGFyZWRfYmxrc19oaXQ7Ci0JZHN0LT5zaGFyZWRfYmxrc19yZWFkICs9IGFkZC0+ c2hhcmVkX2Jsa3NfcmVhZCAtIHN1Yi0+c2hhcmVkX2Jsa3NfcmVhZDsKLQlkc3QtPnNoYXJlZF9i bGtzX2RpcnRpZWQgKz0gYWRkLT5zaGFyZWRfYmxrc19kaXJ0aWVkIC0gc3ViLT5zaGFyZWRfYmxr c19kaXJ0aWVkOwotCWRzdC0+c2hhcmVkX2Jsa3Nfd3JpdHRlbiArPSBhZGQtPnNoYXJlZF9ibGtz X3dyaXR0ZW4gLSBzdWItPnNoYXJlZF9ibGtzX3dyaXR0ZW47Ci0JZHN0LT5sb2NhbF9ibGtzX2hp dCArPSBhZGQtPmxvY2FsX2Jsa3NfaGl0IC0gc3ViLT5sb2NhbF9ibGtzX2hpdDsKLQlkc3QtPmxv Y2FsX2Jsa3NfcmVhZCArPSBhZGQtPmxvY2FsX2Jsa3NfcmVhZCAtIHN1Yi0+bG9jYWxfYmxrc19y ZWFkOwotCWRzdC0+bG9jYWxfYmxrc19kaXJ0aWVkICs9IGFkZC0+bG9jYWxfYmxrc19kaXJ0aWVk IC0gc3ViLT5sb2NhbF9ibGtzX2RpcnRpZWQ7Ci0JZHN0LT5sb2NhbF9ibGtzX3dyaXR0ZW4gKz0g YWRkLT5sb2NhbF9ibGtzX3dyaXR0ZW4gLSBzdWItPmxvY2FsX2Jsa3Nfd3JpdHRlbjsKLQlkc3Qt PnRlbXBfYmxrc19yZWFkICs9IGFkZC0+dGVtcF9ibGtzX3JlYWQgLSBzdWItPnRlbXBfYmxrc19y ZWFkOwotCWRzdC0+dGVtcF9ibGtzX3dyaXR0ZW4gKz0gYWRkLT50ZW1wX2Jsa3Nfd3JpdHRlbiAt IHN1Yi0+dGVtcF9ibGtzX3dyaXR0ZW47Ci0JSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGRzdC0+c2hh cmVkX2Jsa19yZWFkX3RpbWUsCi0JCQkJCQkgIGFkZC0+c2hhcmVkX2Jsa19yZWFkX3RpbWUsIHN1 Yi0+c2hhcmVkX2Jsa19yZWFkX3RpbWUpOwotCUlOU1RSX1RJTUVfQUNDVU1fRElGRihkc3QtPnNo YXJlZF9ibGtfd3JpdGVfdGltZSwKLQkJCQkJCSAgYWRkLT5zaGFyZWRfYmxrX3dyaXRlX3RpbWUs IHN1Yi0+c2hhcmVkX2Jsa193cml0ZV90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoZHN0 LT5sb2NhbF9ibGtfcmVhZF90aW1lLAotCQkJCQkJICBhZGQtPmxvY2FsX2Jsa19yZWFkX3RpbWUs IHN1Yi0+bG9jYWxfYmxrX3JlYWRfdGltZSk7Ci0JSU5TVFJfVElNRV9BQ0NVTV9ESUZGKGRzdC0+ bG9jYWxfYmxrX3dyaXRlX3RpbWUsCi0JCQkJCQkgIGFkZC0+bG9jYWxfYmxrX3dyaXRlX3RpbWUs IHN1Yi0+bG9jYWxfYmxrX3dyaXRlX3RpbWUpOwotCUlOU1RSX1RJTUVfQUNDVU1fRElGRihkc3Qt PnRlbXBfYmxrX3JlYWRfdGltZSwKLQkJCQkJCSAgYWRkLT50ZW1wX2Jsa19yZWFkX3RpbWUsIHN1 Yi0+dGVtcF9ibGtfcmVhZF90aW1lKTsKLQlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoZHN0LT50ZW1w X2Jsa193cml0ZV90aW1lLAotCQkJCQkJICBhZGQtPnRlbXBfYmxrX3dyaXRlX3RpbWUsIHN1Yi0+ dGVtcF9ibGtfd3JpdGVfdGltZSk7Ci19Ci0KIC8qIGhlbHBlciBmdW5jdGlvbnMgZm9yIFdBTCB1 c2FnZSBhY2N1bXVsYXRpb24gKi8KIHN0YXRpYyB2b2lkCiBXYWxVc2FnZUFkZChXYWxVc2FnZSAq ZHN0LCBXYWxVc2FnZSAqYWRkKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5z dHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4IGFkY2Jj NzVhNzU3Li5hNjI3Y2ZjYWMyZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5z dHJ1bWVudC5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2luc3RydW1lbnQuaApAQCAtMTQ1 LDcgKzE0NSw2IEBAIHR5cGVkZWYgc3RydWN0IFdvcmtlckluc3RydW1lbnRhdGlvbgogCU5vZGVJ bnN0cnVtZW50YXRpb24gaW5zdHJ1bWVudFtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSBXb3Jr ZXJJbnN0cnVtZW50YXRpb247CiAKLWV4dGVybiBQR0RMTElNUE9SVCBCdWZmZXJVc2FnZSBwZ0J1 ZmZlclVzYWdlOwogZXh0ZXJuIFBHRExMSU1QT1JUIFdhbFVzYWdlIHBnV2FsVXNhZ2U7CiBleHRl cm4gUEdETExJTVBPUlQgSW5zdHJTdGFjayAqIHBnSW5zdHJTdGFjazsKIApAQCAtMTg5LDI4ICsx ODgsMjMgQEAgZXh0ZXJuIHZvaWQgSW5zdHJBZ2dOb2RlKE5vZGVJbnN0cnVtZW50YXRpb24gKiBk c3QsIE5vZGVJbnN0cnVtZW50YXRpb24gKiBhZGQpOwogZXh0ZXJuIEluc3RydW1lbnRhdGlvbiAq SW5zdHJTdGFydFBhcmFsbGVsUXVlcnkodm9pZCk7CiBleHRlcm4gdm9pZCBJbnN0ckVuZFBhcmFs bGVsUXVlcnkoSW5zdHJ1bWVudGF0aW9uICppbnN0ciwgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBX YWxVc2FnZSAqd2FsdXNhZ2UpOwogZXh0ZXJuIHZvaWQgSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnko QnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLCBXYWxVc2FnZSAqd2FsdXNhZ2UpOwotZXh0ZXJuIHZvaWQg QnVmZmVyVXNhZ2VBY2N1bURpZmYoQnVmZmVyVXNhZ2UgKmRzdCwKLQkJCQkJCQkJIGNvbnN0IEJ1 ZmZlclVzYWdlICphZGQsIGNvbnN0IEJ1ZmZlclVzYWdlICpzdWIpOworZXh0ZXJuIHZvaWQgQnVm ZmVyVXNhZ2VBZGQoQnVmZmVyVXNhZ2UgKmRzdCwgY29uc3QgQnVmZmVyVXNhZ2UgKmFkZCk7CiBl eHRlcm4gdm9pZCBXYWxVc2FnZUFjY3VtRGlmZihXYWxVc2FnZSAqZHN0LCBjb25zdCBXYWxVc2Fn ZSAqYWRkLAogCQkJCQkJCSAgY29uc3QgV2FsVXNhZ2UgKnN1Yik7CiAKICNkZWZpbmUgSU5TVFJf QlVGVVNBR0VfSU5DUihmbGQpIGRvIHsgXAotCQlwZ0J1ZmZlclVzYWdlLmZsZCsrOyBcCiAJCWlm IChwZ0luc3RyU3RhY2spIFwKIAkJCXBnSW5zdHJTdGFjay0+YnVmdXNhZ2UuZmxkKys7IFwKIAl9 IHdoaWxlKDApCiAjZGVmaW5lIElOU1RSX0JVRlVTQUdFX0FERChmbGQsdmFsKSBkbyB7IFwKLQkJ cGdCdWZmZXJVc2FnZS5mbGQgKz0gdmFsOyBcCiAJCWlmIChwZ0luc3RyU3RhY2spIFwKIAkJCXBn SW5zdHJTdGFjay0+YnVmdXNhZ2UuZmxkICs9IHZhbDsgXAogCX0gd2hpbGUoMCkKICNkZWZpbmUg SU5TVFJfQlVGVVNBR0VfVElNRV9BREQoZmxkLHZhbCkgZG8geyBcCi0JSU5TVFJfVElNRV9BREQo cGdCdWZmZXJVc2FnZS5mbGQsIHZhbCk7IFwKIAlpZiAocGdJbnN0clN0YWNrKSBcCiAJCUlOU1RS X1RJTUVfQUREKHBnSW5zdHJTdGFjay0+YnVmdXNhZ2UuZmxkLCB2YWwpOyBcCiAJfSB3aGlsZSAo MCkKICNkZWZpbmUgSU5TVFJfQlVGVVNBR0VfVElNRV9BQ0NVTV9ESUZGKGZsZCxlbmR2YWwsc3Rh cnR2YWwpIGRvIHsgXAotCUlOU1RSX1RJTUVfQUNDVU1fRElGRihwZ0J1ZmZlclVzYWdlLmZsZCwg ZW5kdmFsLCBzdGFydHZhbCk7IFwKIAlpZiAocGdJbnN0clN0YWNrKSBcCiAJCUlOU1RSX1RJTUVf QUNDVU1fRElGRihwZ0luc3RyU3RhY2stPmJ1ZnVzYWdlLmZsZCwgZW5kdmFsLCBzdGFydHZhbCk7 IFwKIAl9IHdoaWxlICgwKQotLSAKMi40Ny4xCgo= --000000000000dd059506426f2cb7 Content-Type: application/octet-stream; name="v4-0007-Index-scans-Split-heap-and-index-buffer-access-re.patch" Content-Disposition: attachment; filename="v4-0007-Index-scans-Split-heap-and-index-buffer-access-re.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mheislve6 RnJvbSBjY2VhNmU0NTM4NzJhMGFlNjMzNTFiM2JhNDM2MDg0NTAzNWVjNjIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWthcyBGaXR0bCA8bHVrYXNAZml0dGwuY29tPgpEYXRlOiBU aHUsIDMwIE9jdCAyMDI1IDIyOjI3OjMwIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2NCA3LzddIElu ZGV4IHNjYW5zOiBTcGxpdCBoZWFwIGFuZCBpbmRleCBidWZmZXIgYWNjZXNzCiByZXBvcnRpbmcg aW4gRVhQTEFJTgoKVGhpcyBtYWtlcyBpdCBjbGVhciB3aGV0aGVyIGFjdGl2aXR5IHdhcyBvbiB0 aGUgaW5kZXggZGlyZWN0bHksIG9yCm9uIHRoZSB0YWJsZSBiYXNlZCBvbiBoZWFwIGZldGNoZXMu Ci0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgIHwgNTYgKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMg IHwgMTMgKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jICAgIHwgMjUg KysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jIHwgMTUg KysrKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oICAgICAgICAgICB8ICAzICsrCiBz cmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggICAgfCAgMyArKwogNiBmaWxlcyBjaGFu Z2VkLCA5MSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMKaW5kZXggZGQzYmY2MTU1ODEuLmZiOTZkZDUyNDhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIHZvaWQgc2hvd19pbnN0cnVtZW50YXRpb25fY291 bnQoY29uc3QgY2hhciAqcWxhYmVsLCBpbnQgd2hpY2gsCiBzdGF0aWMgdm9pZCBzaG93X2ZvcmVp Z25zY2FuX2luZm8oRm9yZWlnblNjYW5TdGF0ZSAqZnNzdGF0ZSwgRXhwbGFpblN0YXRlICplcyk7 CiBzdGF0aWMgY29uc3QgY2hhciAqZXhwbGFpbl9nZXRfaW5kZXhfbmFtZShPaWQgaW5kZXhJZCk7 CiBzdGF0aWMgYm9vbCBwZWVrX2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBC dWZmZXJVc2FnZSAqdXNhZ2UpOwotc3RhdGljIHZvaWQgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFp blN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKTsKK3N0YXRpYyB2b2lkIHNob3df YnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSwg Y29uc3QgY2hhciAqdGl0bGUpOwogc3RhdGljIHZvaWQgc2hvd193YWxfdXNhZ2UoRXhwbGFpblN0 YXRlICplcywgY29uc3QgV2FsVXNhZ2UgKnVzYWdlKTsKIHN0YXRpYyB2b2lkIHNob3dfbWVtb3J5 X2NvdW50ZXJzKEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkJCQkJCSBjb25zdCBNZW1vcnlDb250ZXh0 Q291bnRlcnMgKm1lbV9jb3VudGVycyk7CkBAIC02MDMsNyArNjAzLDcgQEAgRXhwbGFpbk9uZVBs YW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAogCQl9CiAKIAkJaWYgKGJ1ZnVzYWdlKQotCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMs IGJ1ZnVzYWdlKTsKKwkJCXNob3dfYnVmZmVyX3VzYWdlKGVzLCBidWZ1c2FnZSwgTlVMTCk7CiAK IAkJaWYgKG1lbV9jb3VudGVycykKIAkJCXNob3dfbWVtb3J5X2NvdW50ZXJzKGVzLCBtZW1fY291 bnRlcnMpOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgRXhwbGFpblByaW50U2VyaWFsaXplKEV4cGxh aW5TdGF0ZSAqZXMsIFNlcmlhbGl6ZU1ldHJpY3MgKm1ldHJpY3MpCiAJCWlmIChlcy0+YnVmZmVy cyAmJiBwZWVrX2J1ZmZlcl91c2FnZShlcywgJm1ldHJpY3MtPmJ1ZmZlclVzYWdlKSkKIAkJewog CQkJZXMtPmluZGVudCsrOwotCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5idWZm ZXJVc2FnZSk7CisJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJm1ldHJpY3MtPmJ1ZmZlclVzYWdl LCBOVUxMKTsKIAkJCWVzLT5pbmRlbnQtLTsKIAkJfQogCX0KQEAgLTEwMzQsNyArMTAzNCw3IEBA IEV4cGxhaW5QcmludFNlcmlhbGl6ZShFeHBsYWluU3RhdGUgKmVzLCBTZXJpYWxpemVNZXRyaWNz ICptZXRyaWNzKQogCQkJCQkJCQlCWVRFU19UT19LSUxPQllURVMobWV0cmljcy0+Ynl0ZXNTZW50 KSwgZXMpOwogCQlFeHBsYWluUHJvcGVydHlUZXh0KCJGb3JtYXQiLCBmb3JtYXQsIGVzKTsKIAkJ aWYgKGVzLT5idWZmZXJzKQotCQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZtZXRyaWNzLT5idWZm ZXJVc2FnZSk7CisJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJm1ldHJpY3MtPmJ1ZmZlclVzYWdl LCBOVUxMKTsKIAl9CiAKIAlFeHBsYWluQ2xvc2VHcm91cCgiU2VyaWFsaXphdGlvbiIsICJTZXJp YWxpemF0aW9uIiwgdHJ1ZSwgZXMpOwpAQCAtMTk2MCw2ICsxOTYwLDkgQEAgRXhwbGFpbk5vZGUo UGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkJCQlzaG93X2luc3RydW1l bnRhdGlvbl9jb3VudCgiUm93cyBSZW1vdmVkIGJ5IEZpbHRlciIsIDEsCiAJCQkJCQkJCQkJICAg cGxhbnN0YXRlLCBlcyk7CiAJCQlzaG93X2luZGV4c2VhcmNoZXNfaW5mbyhwbGFuc3RhdGUsIGVz KTsKKworCQkJaWYgKGVzLT5idWZmZXJzICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkKKwkJCQlz aG93X2J1ZmZlcl91c2FnZShlcywgJigoSW5kZXhTY2FuU3RhdGUgKikgcGxhbnN0YXRlKS0+aXNz X0luc3RydW1lbnQudGFibGVfc3RhY2suYnVmdXNhZ2UsICJUYWJsZSIpOwogCQkJYnJlYWs7CiAJ CWNhc2UgVF9JbmRleE9ubHlTY2FuOgogCQkJc2hvd19zY2FuX3F1YWwoKChJbmRleE9ubHlTY2Fu ICopIHBsYW4pLT5pbmRleHF1YWwsCkBAIC0yMjc4LDcgKzIyODEsOCBAQCBFeHBsYWluTm9kZShQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwgTGlzdCAqYW5jZXN0b3JzLAogCiAJLyogU2hvdyBidWZmZXIv V0FMIHVzYWdlICovCiAJaWYgKGVzLT5idWZmZXJzICYmIHBsYW5zdGF0ZS0+aW5zdHJ1bWVudCkK LQkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQtPnN0YWNrLmJ1 ZnVzYWdlKTsKKwkJc2hvd19idWZmZXJfdXNhZ2UoZXMsICZwbGFuc3RhdGUtPmluc3RydW1lbnQt PnN0YWNrLmJ1ZnVzYWdlLAorCQkJCQkJICBJc0EocGxhbiwgSW5kZXhTY2FuKSA/ICJJbmRleCIg OiBOVUxMKTsKIAlpZiAoZXMtPndhbCAmJiBwbGFuc3RhdGUtPmluc3RydW1lbnQpCiAJCXNob3df d2FsX3VzYWdlKGVzLCAmcGxhbnN0YXRlLT5pbnN0cnVtZW50LT5zdGFjay53YWx1c2FnZSk7CiAK QEAgLTIyOTcsNyArMjMwMSw3IEBAIEV4cGxhaW5Ob2RlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBM aXN0ICphbmNlc3RvcnMsCiAKIAkJCUV4cGxhaW5PcGVuV29ya2VyKG4sIGVzKTsKIAkJCWlmIChl cy0+YnVmZmVycykKLQkJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJmluc3RydW1lbnQtPnN0YWNr LmJ1ZnVzYWdlKTsKKwkJCQlzaG93X2J1ZmZlcl91c2FnZShlcywgJmluc3RydW1lbnQtPnN0YWNr LmJ1ZnVzYWdlLCBOVUxMKTsKIAkJCWlmIChlcy0+d2FsKQogCQkJCXNob3dfd2FsX3VzYWdlKGVz LCAmaW5zdHJ1bWVudC0+c3RhY2sud2FsdXNhZ2UpOwogCQkJRXhwbGFpbkNsb3NlV29ya2VyKG4s IGVzKTsKQEAgLTQwOTcsNyArNDEwMSw3IEBAIHBlZWtfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0 ZSAqZXMsIGNvbnN0IEJ1ZmZlclVzYWdlICp1c2FnZSkKICAqIFNob3cgYnVmZmVyIHVzYWdlIGRl dGFpbHMuICBUaGlzIGJldHRlciBiZSBzeW5jIHdpdGggcGVla19idWZmZXJfdXNhZ2UuCiAgKi8K IHN0YXRpYyB2b2lkCi1zaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBC dWZmZXJVc2FnZSAqdXNhZ2UpCitzaG93X2J1ZmZlcl91c2FnZShFeHBsYWluU3RhdGUgKmVzLCBj b25zdCBCdWZmZXJVc2FnZSAqdXNhZ2UsIGNvbnN0IGNoYXIgKnRpdGxlKQogewogCWlmIChlcy0+ Zm9ybWF0ID09IEVYUExBSU5fRk9STUFUX1RFWFQpCiAJewpAQCAtNDEyMiw2ICs0MTI2LDggQEAg c2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVz YWdlKQogCQlpZiAoaGFzX3NoYXJlZCB8fCBoYXNfbG9jYWwgfHwgaGFzX3RlbXApCiAJCXsKIAkJ CUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKKwkJCWlmICh0aXRsZSkKKwkJCQlhcHBlbmRTdHJpbmdJ bmZvKGVzLT5zdHIsICIlcyAiLCB0aXRsZSk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGVz LT5zdHIsICJCdWZmZXJzOiIpOwogCiAJCQlpZiAoaGFzX3NoYXJlZCkKQEAgLTQxNzcsNiArNDE4 Myw4IEBAIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0IEJ1ZmZlclVz YWdlICp1c2FnZSkKIAkJaWYgKGhhc19zaGFyZWRfdGltaW5nIHx8IGhhc19sb2NhbF90aW1pbmcg fHwgaGFzX3RlbXBfdGltaW5nKQogCQl7CiAJCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CisJCQlp ZiAodGl0bGUpCisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLCAiJXMgIiwgdGl0bGUpOwog CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhlcy0+c3RyLCAiSS9PIFRpbWluZ3M6Iik7CiAKIAkJ CWlmIChoYXNfc2hhcmVkX3RpbWluZykKQEAgLTQyMTgsNDQgKzQyMjYsNDYgQEAgc2hvd19idWZm ZXJfdXNhZ2UoRXhwbGFpblN0YXRlICplcywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlKQogCX0K IAllbHNlCiAJewotCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJTaGFyZWQgSGl0IEJsb2NrcyIs IE5VTEwsCisJCWNoYXIJICAgKnByZWZpeCA9IHRpdGxlID8gcHNwcmludGYoIiVzICIsIHRpdGxl KSA6IHBzdHJkdXAoIiIpOworCisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIocHNwcmludGYoIiVz U2hhcmVkIEhpdCBCbG9ja3MiLCBwcmVmaXgpLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT5zaGFy ZWRfYmxrc19oaXQsIGVzKTsKLQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiU2hhcmVkIFJlYWQg QmxvY2tzIiwgTlVMTCwKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcihwc3ByaW50ZigiJXNTaGFy ZWQgUmVhZCBCbG9ja3MiLCBwcmVmaXgpLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT5zaGFyZWRf Ymxrc19yZWFkLCBlcyk7Ci0JCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlNoYXJlZCBEaXJ0aWVk IEJsb2NrcyIsIE5VTEwsCisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIocHNwcmludGYoIiVzU2hh cmVkIERpcnRpZWQgQmxvY2tzIiwgcHJlZml4KSwgTlVMTCwKIAkJCQkJCQkgICB1c2FnZS0+c2hh cmVkX2Jsa3NfZGlydGllZCwgZXMpOwotCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJTaGFyZWQg V3JpdHRlbiBCbG9ja3MiLCBOVUxMLAorCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKHBzcHJpbnRm KCIlc1NoYXJlZCBXcml0dGVuIEJsb2NrcyIsIHByZWZpeCksIE5VTEwsCiAJCQkJCQkJICAgdXNh Z2UtPnNoYXJlZF9ibGtzX3dyaXR0ZW4sIGVzKTsKLQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigi TG9jYWwgSGl0IEJsb2NrcyIsIE5VTEwsCisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIocHNwcmlu dGYoIiVzTG9jYWwgSGl0IEJsb2NrcyIsIHByZWZpeCksIE5VTEwsCiAJCQkJCQkJICAgdXNhZ2Ut PmxvY2FsX2Jsa3NfaGl0LCBlcyk7Ci0JCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIkxvY2FsIFJl YWQgQmxvY2tzIiwgTlVMTCwKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcihwc3ByaW50ZigiJXNM b2NhbCBSZWFkIEJsb2NrcyIsIHByZWZpeCksIE5VTEwsCiAJCQkJCQkJICAgdXNhZ2UtPmxvY2Fs X2Jsa3NfcmVhZCwgZXMpOwotCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJMb2NhbCBEaXJ0aWVk IEJsb2NrcyIsIE5VTEwsCisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIocHNwcmludGYoIiVzTG9j YWwgRGlydGllZCBCbG9ja3MiLCBwcmVmaXgpLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT5sb2Nh bF9ibGtzX2RpcnRpZWQsIGVzKTsKLQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTG9jYWwgV3Jp dHRlbiBCbG9ja3MiLCBOVUxMLAorCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKHBzcHJpbnRmKCIl c0xvY2FsIFdyaXR0ZW4gQmxvY2tzIiwgcHJlZml4KSwgTlVMTCwKIAkJCQkJCQkgICB1c2FnZS0+ bG9jYWxfYmxrc193cml0dGVuLCBlcyk7Ci0JCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIlRlbXAg UmVhZCBCbG9ja3MiLCBOVUxMLAorCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKHBzcHJpbnRmKCIl c1RlbXAgUmVhZCBCbG9ja3MiLCBwcmVmaXgpLCBOVUxMLAogCQkJCQkJCSAgIHVzYWdlLT50ZW1w X2Jsa3NfcmVhZCwgZXMpOwotCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJUZW1wIFdyaXR0ZW4g QmxvY2tzIiwgTlVMTCwKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcihwc3ByaW50ZigiJXNUZW1w IFdyaXR0ZW4gQmxvY2tzIiwgcHJlZml4KSwgTlVMTCwKIAkJCQkJCQkgICB1c2FnZS0+dGVtcF9i bGtzX3dyaXR0ZW4sIGVzKTsKIAkJaWYgKHRyYWNrX2lvX3RpbWluZykKIAkJewotCQkJRXhwbGFp blByb3BlcnR5RmxvYXQoIlNoYXJlZCBJL08gUmVhZCBUaW1lIiwgIm1zIiwKKwkJCUV4cGxhaW5Q cm9wZXJ0eUZsb2F0KHBzcHJpbnRmKCIlc1NoYXJlZCBJL08gUmVhZCBUaW1lIiwgcHJlZml4KSwg Im1zIiwKIAkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5zaGFyZWRfYmxr X3JlYWRfdGltZSksCiAJCQkJCQkJCSAzLCBlcyk7Ci0JCQlFeHBsYWluUHJvcGVydHlGbG9hdCgi U2hhcmVkIEkvTyBXcml0ZSBUaW1lIiwgIm1zIiwKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KHBz cHJpbnRmKCIlc1NoYXJlZCBJL08gV3JpdGUgVGltZSIsIHByZWZpeCksICJtcyIsCiAJCQkJCQkJ CSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+c2hhcmVkX2Jsa193cml0ZV90aW1lKSwK IAkJCQkJCQkJIDMsIGVzKTsKLQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJMb2NhbCBJL08gUmVh ZCBUaW1lIiwgIm1zIiwKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KHBzcHJpbnRmKCIlc0xvY2Fs IEkvTyBSZWFkIFRpbWUiLCBwcmVmaXgpLCAibXMiLAogCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRf TUlMTElTRUModXNhZ2UtPmxvY2FsX2Jsa19yZWFkX3RpbWUpLAogCQkJCQkJCQkgMywgZXMpOwot CQkJRXhwbGFpblByb3BlcnR5RmxvYXQoIkxvY2FsIEkvTyBXcml0ZSBUaW1lIiwgIm1zIiwKKwkJ CUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KHBzcHJpbnRmKCIlc0xvY2FsIEkvTyBXcml0ZSBUaW1lIiwg cHJlZml4KSwgIm1zIiwKIAkJCQkJCQkJIElOU1RSX1RJTUVfR0VUX01JTExJU0VDKHVzYWdlLT5s b2NhbF9ibGtfd3JpdGVfdGltZSksCiAJCQkJCQkJCSAzLCBlcyk7Ci0JCQlFeHBsYWluUHJvcGVy dHlGbG9hdCgiVGVtcCBJL08gUmVhZCBUaW1lIiwgIm1zIiwKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZs b2F0KHBzcHJpbnRmKCIlc1RlbXAgSS9PIFJlYWQgVGltZSIsIHByZWZpeCksICJtcyIsCiAJCQkJ CQkJCSBJTlNUUl9USU1FX0dFVF9NSUxMSVNFQyh1c2FnZS0+dGVtcF9ibGtfcmVhZF90aW1lKSwK IAkJCQkJCQkJIDMsIGVzKTsKLQkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJUZW1wIEkvTyBXcml0 ZSBUaW1lIiwgIm1zIiwKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KHBzcHJpbnRmKCIlc1RlbXAg SS9PIFdyaXRlIFRpbWUiLCBwcmVmaXgpLCAibXMiLAogCQkJCQkJCQkgSU5TVFJfVElNRV9HRVRf TUlMTElTRUModXNhZ2UtPnRlbXBfYmxrX3dyaXRlX3RpbWUpLAogCQkJCQkJCQkgMywgZXMpOwog CQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IGQwMGNmODIwYTI3Li5mMTlh ZjQyOGQ5NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTg1NCw3ICs4NTQs MjAgQEAgRXhlY0FjY3VtTm9kZUluc3RydW1lbnRhdGlvbl93YWxrZXIoUGxhblN0YXRlICpub2Rl LCB2b2lkICpjb250ZXh0KQogCXBsYW5zdGF0ZV90cmVlX3dhbGtlcihub2RlLCBFeGVjQWNjdW1O b2RlSW5zdHJ1bWVudGF0aW9uX3dhbGtlciwgY29udGV4dCk7CiAKIAlpZiAobm9kZS0+aW5zdHJ1 bWVudCAmJiBub2RlLT5pbnN0cnVtZW50LT5zdGFjay5wcmV2aW91cykKKwl7CisJCS8qCisJCSAq IEluZGV4IFNjYW4gbm9kZXMgYWNjb3VudCBmb3IgaGVhcCBidWZmZXIgdXNhZ2Ugc2VwYXJhdGVs eSwgc28gd2UKKwkJICogbmVlZCB0byBleHBsaXRseSBhZGQgaGVyZQorCQkgKi8KKwkJaWYgKElz QShub2RlLCBJbmRleFNjYW5TdGF0ZSkpCisJCXsKKwkJCUluZGV4U2NhblN0YXRlICppc3MgPSBj YXN0Tm9kZShJbmRleFNjYW5TdGF0ZSwgbm9kZSk7CisKKwkJCUluc3RyU3RhY2tBZGQobm9kZS0+ aW5zdHJ1bWVudC0+c3RhY2sucHJldmlvdXMsICZpc3MtPmlzc19JbnN0cnVtZW50LnRhYmxlX3N0 YWNrKTsKKwkJfQorCiAJCUluc3RyU3RhY2tBZGQobm9kZS0+aW5zdHJ1bWVudC0+c3RhY2sucHJl dmlvdXMsICZub2RlLT5pbnN0cnVtZW50LT5zdGFjayk7CisJfQogCiAJcmV0dXJuIGZhbHNlOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IDJhMTQxZmRhZTA3Li5mNmFiYzhkMGMx OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2luc3RydW1lbnQuYwpAQCAtMzk1LDYgKzM5NSwzMSBAQCBJbnN0 ckFnZ05vZGUoTm9kZUluc3RydW1lbnRhdGlvbiAqIGRzdCwgTm9kZUluc3RydW1lbnRhdGlvbiAq IGFkZCkKIAkJV2FsVXNhZ2VBZGQoJmRzdC0+c3RhY2sud2FsdXNhZ2UsICZhZGQtPnN0YWNrLndh bHVzYWdlKTsKIH0KIAordm9pZAorSW5zdHJTdGFydE5vZGVTdGFjayhOb2RlSW5zdHJ1bWVudGF0 aW9uICogaW5zdHIsIEluc3RyU3RhY2sgKiBzdGFjaykKK3sKKwlpZiAoaW5zdHItPm5lZWRfYnVm dXNhZ2UgfHwgaW5zdHItPm5lZWRfd2FsdXNhZ2UpCisJeworCQkvKiBFbnN1cmUgdGhhdCB3ZSBh bHdheXMgaGF2ZSBhIHBhcmVudCwgZXZlbiBhdCB0aGUgdG9wIG1vc3Qgbm9kZSAqLworCQlBc3Nl cnQocGdJbnN0clN0YWNrICE9IE5VTEwpOworCisJCUluc3RyUHVzaFN0YWNrKHN0YWNrKTsKKwl9 Cit9CisKK3ZvaWQKK0luc3RyU3RvcE5vZGVTdGFjayhOb2RlSW5zdHJ1bWVudGF0aW9uICogaW5z dHIsIEluc3RyU3RhY2sgKiBzdGFjaykKK3sKKwlpZiAoaW5zdHItPm5lZWRfYnVmdXNhZ2UgfHwg aW5zdHItPm5lZWRfd2FsdXNhZ2UpCisJeworCQkvKiBFbnN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2 ZSBhIHBhcmVudCwgZXZlbiBhdCB0aGUgdG9wIG1vc3Qgbm9kZSAqLworCQlBc3NlcnQoc3RhY2st PnByZXZpb3VzICE9IE5VTEwpOworCisJCS8qIEFkZGluZyB0byBwYXJlbnQgaXMgaGFuZGxlZCBi eSBFeGVjQWNjdW1Ob2RlSW5zdHJ1bWVudGF0aW9uICovCisJCUluc3RyUG9wU3RhY2soc3RhY2ss IGZhbHNlKTsKKwl9Cit9CisKIC8qIHN0YXJ0IGluc3RydW1lbnRhdGlvbiBkdXJpbmcgcGFyYWxs ZWwgZXhlY3V0b3Igc3RhcnR1cCAqLwogSW5zdHJ1bWVudGF0aW9uICoKIEluc3RyU3RhcnRQYXJh bGxlbFF1ZXJ5KHZvaWQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggN2Zj YWEzN2ZlNjIuLmZjYjYxMWFjYjRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5j CkBAIC04Myw2ICs4Myw3IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAlFeHBy Q29udGV4dCAqZWNvbnRleHQ7CiAJU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb247CiAJSW5kZXhTY2Fu RGVzYyBzY2FuZGVzYzsKKwlJdGVtUG9pbnRlciB0aWQ7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7 CiAKIAkvKgpAQCAtMTI4LDggKzEyOSwyMCBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5v ZGUpCiAJLyoKIAkgKiBvaywgbm93IHRoYXQgd2UgaGF2ZSB3aGF0IHdlIG5lZWQsIGZldGNoIHRo ZSBuZXh0IHR1cGxlLgogCSAqLwotCXdoaWxlIChpbmRleF9nZXRuZXh0X3Nsb3Qoc2NhbmRlc2Ms IGRpcmVjdGlvbiwgc2xvdCkpCisJd2hpbGUgKCh0aWQgPSBpbmRleF9nZXRuZXh0X3RpZChzY2Fu ZGVzYywgZGlyZWN0aW9uKSkgIT0gTlVMTCkKIAl7CisJCWlmIChub2RlLT5zcy5wcy5pbnN0cnVt ZW50KQorCQkJSW5zdHJTdGFydE5vZGVTdGFjayhub2RlLT5zcy5wcy5pbnN0cnVtZW50LCAmbm9k ZS0+aXNzX0luc3RydW1lbnQudGFibGVfc3RhY2spOworCisJCWlmICh1bmxpa2VseSghaW5kZXhf ZmV0Y2hfaGVhcChzY2FuZGVzYywgc2xvdCkpKQorCQkJY29udGludWU7CisKKwkJaWYgKG5vZGUt PnNzLnBzLmluc3RydW1lbnQpCisJCQlJbnN0clN0b3BOb2RlU3RhY2sobm9kZS0+c3MucHMuaW5z dHJ1bWVudCwgJm5vZGUtPmlzc19JbnN0cnVtZW50LnRhYmxlX3N0YWNrKTsKKworCQlpZiAoc2Nh bmRlc2MtPnhzX2hlYXBfY29udGludWUpCisJCQllbG9nKEVSUk9SLCAibm9uLU1WQ0Mgc25hcHNo b3RzIGFyZSBub3Qgc3VwcG9ydGVkIGluIGluZGV4LW9ubHkgc2NhbnMiKTsKKwogCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOwogCiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv Z2VuYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCmluZGV4IDkyMDBhMjJiZDlmLi43 ODEzYjQ2ODhmNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MvaHR1cC5oIgogI2luY2x1ZGUgImFjY2Vzcy9zZGlyLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3NrZXkuaCIKKyNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5jbHVkZSAibm9k ZXMvdGlkYml0bWFwLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWYuaCIKICNpbmNsdWRlICJzdG9y YWdlL2xvY2tkZWZzLmgiCkBAIC00MCw2ICs0MSw4IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U2Nh bkluc3RydW1lbnRhdGlvbgogewogCS8qIEluZGV4IHNlYXJjaCBjb3VudCAoaW5jcmVtZW50ZWQg d2l0aCBwZ3N0YXRfY291bnRfaW5kZXhfc2NhbiBjYWxsKSAqLwogCXVpbnQ2NAkJbnNlYXJjaGVz OworCS8qIEJ1ZmZlciB1c2FnZSBvZiBoZWFwIGFjY2VzcyBkdXJpbmcgaW5kZXggc2NhbnMgKi8K KwlJbnN0clN0YWNrCXRhYmxlX3N0YWNrOwogfSBJbmRleFNjYW5JbnN0cnVtZW50YXRpb247CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmggYi9zcmMv aW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKaW5kZXggYTYyN2NmY2FjMmQuLjliZmY2ZDgz MDNmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50LmgKKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCkBAIC0xODUsNiArMTg1LDkgQEAgZXh0 ZXJuIHZvaWQgSW5zdHJVcGRhdGVUdXBsZUNvdW50KE5vZGVJbnN0cnVtZW50YXRpb24gKiBpbnN0 ciwgZG91YmxlIG5UdXBsZXMpOwogZXh0ZXJuIHZvaWQgSW5zdHJFbmRMb29wKE5vZGVJbnN0cnVt ZW50YXRpb24gKiBpbnN0cik7CiBleHRlcm4gdm9pZCBJbnN0ckFnZ05vZGUoTm9kZUluc3RydW1l bnRhdGlvbiAqIGRzdCwgTm9kZUluc3RydW1lbnRhdGlvbiAqIGFkZCk7CiAKK2V4dGVybiB2b2lk IEluc3RyU3RhcnROb2RlU3RhY2soTm9kZUluc3RydW1lbnRhdGlvbiAqIGRzdCwgSW5zdHJTdGFj ayAqIHN0YWNrKTsKK2V4dGVybiB2b2lkIEluc3RyU3RvcE5vZGVTdGFjayhOb2RlSW5zdHJ1bWVu dGF0aW9uICogZHN0LCBJbnN0clN0YWNrICogc3RhY2spOworCiBleHRlcm4gSW5zdHJ1bWVudGF0 aW9uICpJbnN0clN0YXJ0UGFyYWxsZWxRdWVyeSh2b2lkKTsKIGV4dGVybiB2b2lkIEluc3RyRW5k UGFyYWxsZWxRdWVyeShJbnN0cnVtZW50YXRpb24gKmluc3RyLCBCdWZmZXJVc2FnZSAqYnVmdXNh Z2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7CiBleHRlcm4gdm9pZCBJbnN0ckFjY3VtUGFyYWxsZWxR dWVyeShCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsIFdhbFVzYWdlICp3YWx1c2FnZSk7Ci0tIAoyLjQ3 LjEKCg== --000000000000dd059506426f2cb7--