From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id CeU3Ek1lHmrdNy8AWB0awg (envelope-from ) for ; Tue, 02 Jun 2026 01:08:29 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=sankhya-com.20251104.gappssmtp.com header.i=@sankhya-com.20251104.gappssmtp.com header.a=rsa-sha256 header.s=20251104 header.b=QzOUuwFf; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 441331E0A3; Tue, 02 Jun 2026 01:08:29 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=unavailable autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id A87041E024 for ; Tue, 02 Jun 2026 01:08:25 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4CD324BA2E12 for ; Tue, 2 Jun 2026 05:08:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4CD324BA2E12 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=sankhya-com.20251104.gappssmtp.com header.i=@sankhya-com.20251104.gappssmtp.com header.a=rsa-sha256 header.s=20251104 header.b=QzOUuwFf Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by sourceware.org (Postfix) with ESMTPS id 219034BA2E12 for ; Tue, 2 Jun 2026 05:07:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 219034BA2E12 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=sankhya.com Authentication-Results: sourceware.org; spf=none smtp.mailfrom=sankhya.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 219034BA2E12 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=2a00:1450:4864:20::62e ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1780376858; cv=pass; b=hi9XhTGPFY22WhuwS6/nPdYkc6HxiVrriFC3sMAHxcQ4SQoP5i9mmklAqOrtKGNts/pQl4eJaQXF2HGClvWf7q+dh/6joevQ7cVyeMb8Pdfj3FqMRGOvrZ/4F2lJAQJjWv0PfF6B9IcF7+ndQEC2ts+OTgRuzpq1eFjzzfVRSzo= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1780376858; c=relaxed/simple; bh=gjAe7GTPkDBf0FRDGeYjzvFmLQqlTr9X/l/LMSH2g5k=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=bSE4yYda4O7I8WtQjDxfLaJDEVZ0Wx9mqIJaG8RQE5sky7H6QV8TZYpS0OwVEPD37A/h9ev7iOSv+rzNMcwvTt8B34KMeqgSpuDEtBCtn9looe1vnuHiuKjikFzTtzJFmz+c2Z8ZHNQeN65XErXryn7K2n1VG2sMPGaOMl6W3Bk= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=sankhya-com.20251104.gappssmtp.com header.i=@sankhya-com.20251104.gappssmtp.com header.a=rsa-sha256 header.s=20251104 header.b=QzOUuwFf DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 219034BA2E12 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-bec429c2bb1so285930466b.1 for ; Mon, 01 Jun 2026 22:07:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780376857; cv=none; d=google.com; s=arc-20240605; b=U/C/r9H9so7oFppvLgomBNJtROageu5wco6D+IF7xc1f2Fbr1ADu4c8TtmxdZZ0zQh i9LjnIVJKILQuDdC01dH5gqWsyPgmVQRQpStzLzZewRZMfl2fkiG3k4cs6jEzsNRofmF jsY5JtZp1VbrjcxxrHH+pR87btZTx7wyWvk3lugopOXJArwjd3MkC5QYNoF3Psh5sQ56 o8HzRRkg/czPGRD24TMQ7UnZcgx/lIbLaYjFWWF48wQyCjVUhUvX0rQ48ZgOr+JJyqwg pECG9pofSzFTRk0pay4MyzkR0QklZeXGnWDl41jIgoJXBA+mIHW7ZWKJKRghBza86o1x 0wOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=NadbkOgagXJ009AdHhbAYQyKPH6vA02z22zGSigX/4w=; fh=VHhK8FrB+SuoCKqdKi4hL8GV5FTI0VoAJyGHdRTnsIc=; b=Bdqc08KH6XK21fHi2jAY068Yu3nHM3iwsiyXxgtZG9DN9XJIcClVsBKCGi+524uFIQ hwGSfEET0205B5G17863FsDCiFO+vCHgcKFDouiB21S1FNJpV7HazPYx0Uuf8WZy1ByG 8vggriHAb2ZQ87TytzBKTpXfum3g4sa4HfuYsIpsjZ2jqf2NEPIimJbXAYDK8kPdiPsB iCnwTkHJzyuPGKSx8XM6/yXdmeRZmPGdmh3g7kepE9rnX2zAfmmfLvB3NVXDVAlGf5Sw WX5kITVFUDF6Lhz+3BkwFaK0SNOy6mtFWHXopboBOGVBYLrLHxK/MZLPMtlOrS1legsI uarQ==; darn=sourceware.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sankhya-com.20251104.gappssmtp.com; s=20251104; t=1780376857; x=1780981657; darn=sourceware.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=NadbkOgagXJ009AdHhbAYQyKPH6vA02z22zGSigX/4w=; b=QzOUuwFfrBTkL5Scni5ao1CYLlSixSiJryPHgW3d23QMAJyDeqfq/NljwYgsCM3jNv 7VqXAR9jloG1AEMARJvzABxvWof+ClB6dynr7PXGcSdng1qCAVnOq2uJ74O/yk8/dRxM WCBFG/vUDgwef09aGV/Ig+svW93yjdyx+anmra0to+1k+0fLjwjgd6qIGQyfsp1Dy452 +g0Lx+ELaV3NoKvMgNs/Z9kTT3V0p/EfWL/yQm0nyX3H/ucpQ0qmNL0fLW0WyBRzgQhr DAcupTpKFlurnVMgWweA8bJEhUySZvLKx24asjgrumwKOEWd7kK+JlKvhgHpLUt9yjhF /QOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780376857; x=1780981657; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=NadbkOgagXJ009AdHhbAYQyKPH6vA02z22zGSigX/4w=; b=cW5/H7DD7mxMkNSZ0lBXomhCvLBf/NyRIvjAs5rgtu/35tO4Y0EKPpfqLmGRoVsb96 wLsl3Tt22SAqDhgk+EwLzQSyxa1ljcXJ5wZjZPrBbzlyLdx3oKwdlh3otmdxB/Q090iy Lm5UYMgqSse6OdGMmXinhRcDwtVLRbFddYtsJttb1Vr6aLUyPZveInzSh16rW48aZ/9F iW4MGl+4XCjyXCFji0ZTVXxjTl0SGIly0JnD+mDl668dnwMFwJHmlj37+vuH5K5xmXwJ 2122C5ZmiuVnziqOKIxxMbQ2pHv1MIIuuAq6ygW7FUKuNFMMWrtbwBix4q+1cRFBiUE/ XZBw== X-Forwarded-Encrypted: i=1; AFNElJ9DZ7UW4iV81i/zFgjty+RQkPAu0eUaIWIib/a1aOpWiUmVdJVqpwq1Lbe5tkMC6j/4Azi9JaSDLdvBjg==@sourceware.org X-Gm-Message-State: AOJu0YzDkPszoWoEfDURnXKa97IeXLZYvK2JZRJP9e/3yS+0fzwTZEhj kMO3shulPfYNPbGO2RFHSs8bdQzz87oJz7BRS9HaBYWwWgOmWQq5D/8pWHUa8q9JR+Z0QXT9Nt/ FQ+XKd77Dgg41qjOkvIh0DOP2mk/la/xZznwpczrPoBvtfMcXAm8NSDM= X-Gm-Gg: Acq92OHcgiE+LbnG3ZurtyRxFZbTImTWpdC7KP7N5BhqO3ioAGn2bsH+WVmebU9C4uQ VuwxRSIM9S1Prk88Ji8iMsp7yHhAsLXnI+vdFvyDUbwjmDLxhJjrUCfoOBnnTh9ecjPnFYntX1P fkFoMkL11sgydvLRRuKrDRrBRew8ZPp95OWk15Z/qjKn1AT2TN3WMZM++UIm+APYOZ2TAXDxu42 270vTfwcmX97eblJq81gDY5yAEaHTyxhAlQMhPzfjvgUt/cQgiQRsNnLNV9PW/fL3RM307fuBxo eWocscrBtOKrU7eP64JR8hYDAetB6DeWes+ps6EIyj2FQvbp3hpxB4xUTSau0ZVei0Vtd14fmjj my/lV5wCgtQzw7+XFApJtSty+Kzh1+z01HyGCUQIn08/msepR0asUlIvg7dcc9cB/JurSXiJAfA == X-Received: by 2002:a17:906:45a0:b0:bef:12f:346b with SMTP id a640c23a62f3a-bef012f3d62mr116391166b.15.1780376856595; Mon, 01 Jun 2026 22:07:36 -0700 (PDT) MIME-Version: 1.0 References: <874ijq5knu.fsf@tromey.com> In-Reply-To: From: Gopi Kumar Bulusu Date: Tue, 2 Jun 2026 10:35:00 +0530 X-Gm-Features: AVHnY4JGct666XrmPvN82KG-zsvWIiJn2y7-cSwzdro7ZyazZIKhqnPoi3wS0lo Message-ID: Subject: [PATCH v2] gdb/MicroBlaze: Add support for native linux gdb To: binutils@sourceware.org, gdb-patches@sourceware.org Cc: Tom Tromey , Simon Marchi , Michael Eager Content-Type: multipart/mixed; boundary="0000000000001af34706533e4a8e" X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org --0000000000001af34706533e4a8e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable namaskaaram Attached is the updated patch. All the changes suggested on PATCH v1 have been made and tested. I did not remove the (sal.line !=3D 0) check as it seemed trivial. However, I can make that a separate patch if necessary. Our sysadm In the process of setting up a git compatible email - the process may take more time; until then appreciate your patience with the attachments. Important Note: 1) gdb appears to have an elaborate scheme to handle C++ exceptions and "tunnel" them through exception unaware C code. This code is with readline. Anytime an error is discovered (even a syntax error) by a module, gdb_exception_error() thrown is tunneled through readline using the TRY_SJLJ/CATCH_SJLJ macros implemented using setjmp/longjmp. 2) There is an issue that I came across while testing; native gdb goes into an infinite loop when handling errors. I analyzed it and found it to be an obvious glibc sysdeps/unix/sysv/linux/microblaze/____longjmp_chk.S issue and reported it to AMD. It is possible I missed out a glibc patch; At this time - this is not a gdb issue. 3) Plan to follow through [2] and ensure a gcc/glibc defect report is created if needed. dhanyavaadaaha gopi On Tue, Jun 2, 2026 at 5:58=E2=80=AFAM Michael Eager wro= te: > > Please post an updated patch for review. > > On 5/31/26 11:38 PM, Gopi Kumar Bulusu wrote: > > On Fri, May 29, 2026 at 8:26=E2=80=AFPM Tom Tromey wro= te: > >> > >>>>>>> Gopi Kumar Bulusu writes: > >> > >>> Attached is a patch to add native linux support for gdb including > >>> cache target support.. > >> > >> Thanks for the patch. > >> > >> I read through it and have some nits. There's nothing very serious > >> except this: > >> > >>> The original sources for the patch come from Xilinx/AMD Yocto git > >>> repository (2025.2) > >> > >> Who wrote them and are they covered by the copyright assignment? > >> > >> This is the most important consideration, the patch can't land without > >> this being clear. > > > > This work is being performed under a contract with Xilinx/AMD as > > confirmed in a different response to > > Simon and therefore covered by the copyright assignment. > > > > I will make the changes as described below and retest. > > > > Approved for commit ? > > > > dhanyavaadaaha > > gopi > > > >> > >>> From a3328b4cdfc58783b5f290f22255b36e26a6fb14 Mon Sep 17 00:00:00 20= 01 > >>> From: Gopi Kumar Bulusu > >>> Date: Thu, 7 May 2026 17:47:40 +0530 > >>> Subject: [PATCH] gdb/MicroBlaze: Add support for native linux gdb > >> > >> It's best to just git send-email rather than using an attachment. > >> > >>> bfd/ChangeLog: > >> > >>> * elf32-microblaze.c (microblaze_elf_grok_prstatus): New functio= n. > >>> (microblaze_elf_grok_psinfo): Likewise. > >> > >>> gdb/ChangeLog: > >> > >>> * Makefile.in (HFILES_NO_SRCDIR): Add microblaze-linux-tdep.h > >>> ALLDEPFILES: Add microblaze-linux-nat.c > >> > >> gdb doesn't use ChangeLogs any more and this text should all be remove= d. > >> > >>> +#define MICROBLAZE_TARGET_HAS_GETREGS 0 > >>> +#define MICROBLAZE_TARGET_HAS_SETREGS 0 > >> > >> This seems weird: > >> > >>> +/* Wrapper function around ptrace. */ > >>> + > >>> +static void > >>> +fetch_target_gp_regs (int tid, elf_gregset_t *gregs) > >>> +{ > >>> + elf_greg_t *gregp =3D *gregs; > >>> + > >>> +#if MICROBLAZE_TARGET_HAS_GETREGS > >>> + if (ptrace (PTRACE_GETREGS, tid, 0, (long) gregp) < 0) > >>> + { > >>> + perror_with_name (_("Couldn't get registers")); > >>> + return; > >>> + } > >>> +#error "this configuration did not work during testing" > >> > >> Normally we don't put new dead code into gdb. > >> > >> I think this and the defines could just be replaced with a comment > >> explaining that PTRACE_GETREGS doesn't work on this platform. > >> > >>> +++ b/gdb/microblaze-linux-tdep.h > >>> @@ -0,0 +1,24 @@ > >>> +/* Target-dependent code for GNU/Linux on MicroBlaze. > >>> + > >>> + Copyright (C) 2021-2026 Free Software Foundation, Inc. > >>> + > >>> + This file is part of GDB. > >>> + > >>> + This program is free software; you can redistribute it and/or mod= ify > >>> + it under the terms of the GNU General Public License as published= by > >>> + the Free Software Foundation; either version 3 of the License, or > >>> + (at your option) any later version. > >>> + > >>> + This program is distributed in the hope that it will be useful, > >>> + but WITHOUT ANY WARRANTY; without even the implied warranty of > >>> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > >>> + GNU General Public License for more details. > >>> + > >>> + You should have received a copy of the GNU General Public License > >>> + along with this program. If not, see . */ > >>> +#ifndef MICROBLAZE_LINUX_TDEP_H > >>> +#define MICROBLAZE_LINUX_TDEP_H > >>> + /* Target descriptions. */ > >>> + extern struct target_desc *tdesc_microblaze_linux; > >> > >> Blank line between the #define and the comment. > >> > >> Also this define should have a slightly different name, see > >> check-include-guards.py. > >> > >>> non_stack_instruction_found =3D 0; > >>> + cache->register_offsets[rd] =3D -imm; > >>> continue; > >> > >> Indentation looks wrong, probably not using tabs. > >> > >>> @@ -399,8 +400,7 @@ microblaze_skip_prologue (struct gdbarch *gdbarch= , CORE_ADDR start_pc) > >>> { > >>> sal =3D find_sal_for_pc (func_start, 0); > >> > >>> - if (sal.end < func_end > >>> - && start_pc <=3D sal.end) > >>> + if (sal.line !=3D 0 && sal.end <=3D func_end && start_pc <=3D= sal.end) > >>> start_pc =3D sal.end; > >> > >> No objection from me but this seems somewhat unrelated. > >> > >> > >>> /* Call for side effects. */ > >>> - get_frame_func (next_frame); > >>> + cache->pc =3D get_frame_func (next_frame); > >> > >> Please remove that comment as it is now wrong. > >> > >>> + if (regnum =3D=3D MICROBLAZE_SP_REGNUM) > >>> + regnum =3D 1; > >> > >> Wrong indentation. > >> > >>> + if (regnum =3D=3D -1) { > >>> + int i; > >>> + > >>> + for (i =3D 0; i < MICROBLAZE_REDR_REGNUM; i++) { > >>> + regcache->raw_supply (i, regs + i * MICROBLAZE_REGISTER_SIZE); > >>> + } > >> > >> Wrong brace placement in this hunk. > >> > >>> + cb (".reg", tdep->sizeof_gregset, tdep->sizeof_gregset, tdep->greg= set, NULL, > >>> + cb_data); > >> > >> Normally in new code we're using 'nullptr' now. Best would be to go > >> through the whole patch and check for this. You don't have to fix > >> pre-existing code that is using NULL though. > >> > >>> gdbarch *gdbarch > >>> =3D gdbarch_alloc (&info, gdbarch_tdep_up (new microblaze_gdbar= ch_tdep)); > >> > >>> + microblaze_gdbarch_tdep *tdep > >>> + =3D gdbarch_tdep (gdbarch); > >>> + > >>> + tdep->gregset =3D NULL; > >>> + tdep->sizeof_gregset =3D 0; > >>> + tdep->fpregset =3D NULL; > >>> + tdep->sizeof_fpregset =3D 0; > >> > >> Here it would be better to just add inline initializers to the new > >> fields in microblaze_gdbarch_tdep. Then they'll automatically be > >> initialized by the 'new'. > >> > >> Tom > > > --0000000000001af34706533e4a8e Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-gdb-MicroBlaze-Add-support-for-native-linux-gdb.patch" Content-Disposition: attachment; filename="v2-0001-gdb-MicroBlaze-Add-support-for-native-linux-gdb.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpw5payl0 RnJvbSA3NTA4OWExMDczMDhkYWQxNWUxMGIwMTNmZjQzMWVhMzFhMDVmZjkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHb3BpIEt1bWFyIEJ1bHVzdSA8Z29waUBzYW5raHlhLmNvbT4K RGF0ZTogVGh1LCA3IE1heSAyMDI2IDE3OjQ3OjQwICswNTMwClN1YmplY3Q6IFtQQVRDSCB2Ml0g Z2RiL01pY3JvQmxhemU6IEFkZCBzdXBwb3J0IGZvciBuYXRpdmUgbGludXggZ2RiCgpUaGlzIHBh dGNoIGFkZHMgc3VwcG9ydCBmb3IgbmF0aXZlIG1pY3JvYmxhemVlbC1saW51eC1nZGIgaW5jbHVk aW5nCnN1cHBvcnQgZm9yIGRlYnVnZ2luZyB3aXRoIGNvcmUgZHVtcCBmaWxlcy4gQ29kZSBpcyBi YXNlZCBvbiBYaWxpbngvQU1ECmdpdCByZXBvc2l0b3J5IHVzZWQgZm9yIFlvY3RvIGJ1aWxkcyB3 aXRoIGNoYW5nZXMgZm9yIHByb3BlciBpbmRlbnRhdGlvbgphbmQgcmVtb3ZhbCBvZiBjb21tZW50 ZWQgb3V0IGNvZGUuCgpUZXN0aW5nIHdpdGggbmF0aXZlIGdkYiBoYXMgYmVlbiBjaGVja2VkIHRv IGJlIHdvcmtpbmcuIENhbiBsb2FkIGFuZCBydW4KYSBwcm9ncmFtIHVzaW5nIGNvbW1hbmRzIGxp a2UgYnJlYWssIHN0ZXAgYW5kIGZpbmlzaC4gV2hlbiBhIGNvcmUgZmlsZSBpcwpzcGVjaWZpZWQg dG8gZ2RiOyByZWdpc3RlcnMgY2FuIGJlIGV4YW1pbmVkIHVzaW5nIGluZm8gcmVnLiBUZXN0ZWQg dXNpbmcKcWVtdS1zeXN0ZW0tbWljcm9ibGF6ZWVsIGZyb20gQU1EL1hpbGlueCBZb2N0byAyMDI1 LjIgcmVsZWFzZS4KClNpZ25lZC1vZmYtYnk6IERhdmlkIEhvbHNncm92ZSA8ZGF2aWQuaG9sc2dy b3ZlQHBldGFsb2dpeC5jb20+ClNpZ25lZC1vZmYtYnk6IE5hdGhhbiBSb3NzaSA8bmF0aGFuLnJv c3NpQHBldGFsb2dpeC5jb20+ClNpZ25lZC1vZmYtYnk6IE1haGVzaCBCb2RhcGF0aSA8bWJvZGFw YXRAeGlsaW54LmNvbT4KU2lnbmVkLW9mZi1ieTogR29waSBLdW1hciBCdWx1c3UgPGdvcGlAc2Fu a2h5YS5jb20+Ci0tLQogYmZkL2VsZjMyLW1pY3JvYmxhemUuYyAgICAgIHwgIDY3ICsrKysrKysr KysrKwogZ2RiL01ha2VmaWxlLmluICAgICAgICAgICAgIHwgICAyICsKIGdkYi9jb25maWd1cmUu aG9zdCAgICAgICAgICB8ICAgMyArCiBnZGIvY29uZmlndXJlLm5hdCAgICAgICAgICAgfCAgIDQg KwogZ2RiL2NvbmZpZ3VyZS50Z3QgICAgICAgICAgIHwgICAzICstCiBnZGIvbWljcm9ibGF6ZS1s aW51eC1uYXQuYyAgfCAyMDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBn ZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmMgfCAgMjggKysrKysKIGdkYi9taWNyb2JsYXplLWxp bnV4LXRkZXAuaCB8ICAyNiArKysrKwogZ2RiL21pY3JvYmxhemUtdGRlcC5jICAgICAgIHwgIDk1 ICsrKysrKysrKysrKysrLS0tCiBnZGIvbWljcm9ibGF6ZS10ZGVwLmggICAgICAgfCAgMTUgKyst CiAxMCBmaWxlcyBjaGFuZ2VkLCA0MzAgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA3NTUgZ2RiL21pY3JvYmxhemUtbGludXgtbmF0LmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmgKCmRpZmYgLS1naXQgYS9iZmQvZWxm MzItbWljcm9ibGF6ZS5jIGIvYmZkL2VsZjMyLW1pY3JvYmxhemUuYwppbmRleCAyZjgxNjdjNGQ5 Yy4uNDJjNmE1YzFjNjAgMTAwNjQ0Ci0tLSBhL2JmZC9lbGYzMi1taWNyb2JsYXplLmMKKysrIGIv YmZkL2VsZjMyLW1pY3JvYmxhemUuYwpAQCAtNzY4LDYgKzc2OCw3MCBAQCBtaWNyb2JsYXplX2Vs Zl9pc19sb2NhbF9sYWJlbF9uYW1lIChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKm5hbWUpCiAgIHJl dHVybiBfYmZkX2VsZl9pc19sb2NhbF9sYWJlbF9uYW1lIChhYmZkLCBuYW1lKTsKIH0KIAorLyog U3VwcG9ydCBmb3IgY29yZSBkdW1wIE5PVEUgc2VjdGlvbnMuICAqLworCitzdGF0aWMgYm9vbAor bWljcm9ibGF6ZV9lbGZfZ3Jva19wcnN0YXR1cyAoYmZkICphYmZkLCBFbGZfSW50ZXJuYWxfTm90 ZSAqbm90ZSkKK3sKKyAgaW50IG9mZnNldDsKKyAgdW5zaWduZWQgaW50IHNpemU7CisKKyAgc3dp dGNoIChub3RlLT5kZXNjc3opCisgICAgeworICAgICAgZGVmYXVsdDoKKwlyZXR1cm4gZmFsc2U7 CisKKyAgICAgIGNhc2UgMjI4OiAgICAgICAgIC8qIExpbnV4L01pY3JvQmxhemUgKi8KKwkvKiBw cl9jdXJzaWcgKi8KKwllbGZfdGRhdGEgKGFiZmQpLT5jb3JlLT5zaWduYWwgPSBiZmRfZ2V0XzE2 IChhYmZkLCBub3RlLT5kZXNjZGF0YSArIDEyKTsKKworCS8qIHByX3BpZCAqLworCWVsZl90ZGF0 YSAoYWJmZCktPmNvcmUtPnBpZCA9IGJmZF9nZXRfMzIgKGFiZmQsIG5vdGUtPmRlc2NkYXRhICsg MjQpOworCisJLyogcHJfcmVnICovCisJb2Zmc2V0ID0gNzI7CisJc2l6ZSA9IDUwICogNDsKKwor CWJyZWFrOworICAgIH0KKworICAvKiBNYWtlIGEgIi5yZWcvOTk5IiBzZWN0aW9uLiAgKi8KKyAg cmV0dXJuIF9iZmRfZWxmY29yZV9tYWtlX3BzZXVkb3NlY3Rpb24gKGFiZmQsICIucmVnIiwKKwkJ CQkJICBzaXplLCBub3RlLT5kZXNjcG9zICsgb2Zmc2V0KTsKK30KKworLyogU3VwcG9ydCBmb3Ig Y29yZSBkdW1wIHBzaW5mby4gICovCisKK3N0YXRpYyBib29sCittaWNyb2JsYXplX2VsZl9ncm9r X3BzaW5mbyAoYmZkICphYmZkLCBFbGZfSW50ZXJuYWxfTm90ZSAqbm90ZSkKK3sKKyAgc3dpdGNo IChub3RlLT5kZXNjc3opCisgICAgeworICAgICAgZGVmYXVsdDoKKwlyZXR1cm4gZmFsc2U7CisK KyAgICAgIGNhc2UgMTI4OiAgICAgICAgIC8qIExpbnV4L01pY3JvQmxhemUgZWxmX3BycHNpbmZv ICovCisJZWxmX3RkYXRhIChhYmZkKS0+Y29yZS0+cHJvZ3JhbQorCSA9IF9iZmRfZWxmY29yZV9z dHJuZHVwIChhYmZkLCBub3RlLT5kZXNjZGF0YSArIDMyLCAxNik7CisJZWxmX3RkYXRhIChhYmZk KS0+Y29yZS0+Y29tbWFuZAorCSA9IF9iZmRfZWxmY29yZV9zdHJuZHVwIChhYmZkLCBub3RlLT5k ZXNjZGF0YSArIDQ4LCA4MCk7CisgICAgfQorCisgIC8qIE5vdGUgdGhhdCBmb3Igc29tZSByZWFz b24sIGEgc3B1cmlvdXMgc3BhY2UgaXMgdGFja2VkCisgICAgIG9udG8gdGhlIGVuZCBvZiB0aGUg YXJncyBpbiBzb21lIChhdCBsZWFzdCBvbmUgYW55d2F5KQorICAgICBpbXBsZW1lbnRhdGlvbnMs IHNvIHN0cmlwIGl0IG9mZiBpZiBpdCBleGlzdHMuICAqLworCisgIHsKKyAgICBjaGFyICpjb21t YW5kID0gZWxmX3RkYXRhIChhYmZkKS0+Y29yZS0+Y29tbWFuZDsKKyAgICBpbnQgbiA9IHN0cmxl biAoY29tbWFuZCk7CisKKyAgICBpZiAoMCA8IG4gJiYgY29tbWFuZFtuIC0gMV0gPT0gJyAnKQor ICAgICAgY29tbWFuZFtuIC0gMV0gPSAnXDAnOworICB9CisKKyAgcmV0dXJuIHRydWU7Cit9CisK IC8qIEVMRiBsaW5rZXIgaGFzaCBlbnRyeS4gICovCiAKIHN0cnVjdCBlbGYzMl9tYl9saW5rX2hh c2hfZW50cnkKQEAgLTM0OTAsNCArMzU1NCw3IEBAIG1pY3JvYmxhemVfZWxmX2FkZF9zeW1ib2xf aG9vayAoYmZkICphYmZkLAogI2RlZmluZSBlbGZfYmFja2VuZF9sYXRlX3NpemVfc2VjdGlvbnMJ CW1pY3JvYmxhemVfZWxmX2xhdGVfc2l6ZV9zZWN0aW9ucwogI2RlZmluZSBlbGZfYmFja2VuZF9h ZGRfc3ltYm9sX2hvb2sJCW1pY3JvYmxhemVfZWxmX2FkZF9zeW1ib2xfaG9vawogCisjZGVmaW5l IGVsZl9iYWNrZW5kX2dyb2tfcHJzdGF0dXMgICAgICAgICAgICAgICBtaWNyb2JsYXplX2VsZl9n cm9rX3Byc3RhdHVzCisjZGVmaW5lIGVsZl9iYWNrZW5kX2dyb2tfcHNpbmZvICAgICAgICAgICAg ICAgICBtaWNyb2JsYXplX2VsZl9ncm9rX3BzaW5mbworCiAjaW5jbHVkZSAiZWxmMzItdGFyZ2V0 LmgiCmRpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KaW5kZXgg YjJiN2VmM2Q2MDYuLmU5YmEzY2EyMzVlIDEwMDY0NAotLS0gYS9nZGIvTWFrZWZpbGUuaW4KKysr IGIvZ2RiL01ha2VmaWxlLmluCkBAIC0xNTE4LDYgKzE1MTgsNyBAQCBIRklMRVNfTk9fU1JDRElS ID0gXAogCW1lbXJhbmdlLmggXAogCW1lbXRhZy5oIFwKIAltaWNyb2JsYXplLXRkZXAuaCBcCisJ bWljcm9ibGF6ZS1saW51eC10ZGVwLmggXAogCW1pL21pLWNtZC1icmVhay5oIFwKIAltaS9taS1j bWRzLmggXAogCW1pL21pLWNvbW1vbi5oIFwKQEAgLTE4ODYsNiArMTg4Nyw3IEBAIEFMTERFUEZJ TEVTID0gXAogCW02OGstbGludXgtbmF0LmMgXAogCW02OGstbGludXgtdGRlcC5jIFwKIAltNjhr LXRkZXAuYyBcCisJbWljcm9ibGF6ZS1saW51eC1uYXQuYyBcCiAJbWljcm9ibGF6ZS1saW51eC10 ZGVwLmMgXAogCW1pY3JvYmxhemUtdGRlcC5jIFwKIAltaW5ndy1oZGVwLmMgXApkaWZmIC0tZ2l0 IGEvZ2RiL2NvbmZpZ3VyZS5ob3N0IGIvZ2RiL2NvbmZpZ3VyZS5ob3N0CmluZGV4IGU4M2I5NDRj MGI4Li5jOTMzOTBiOTE3MSAxMDA2NDQKLS0tIGEvZ2RiL2NvbmZpZ3VyZS5ob3N0CisrKyBiL2dk Yi9jb25maWd1cmUuaG9zdApAQCAtNjAsNiArNjAsNyBAQCBocHBhKikJCQlnZGJfaG9zdF9jcHU9 cGEgOzsKIGlbMzQ1NjddODYqKQkJZ2RiX2hvc3RfY3B1PWkzODYgOzsKIGxvb25nYXJjaCopCQln ZGJfaG9zdF9jcHU9bG9vbmdhcmNoIDs7CiBtNjgqKQkJCWdkYl9ob3N0X2NwdT1tNjhrIDs7Citt aWNyb2JsYXplKikJCWdkYl9ob3N0X2NwdT1taWNyb2JsYXplIDs7CiBtaXBzKikJCQlnZGJfaG9z dF9jcHU9bWlwcyA7OwogcG93ZXJwYyogfCByczYwMDApCWdkYl9ob3N0X2NwdT1wb3dlcnBjIDs7 CiBzcGFyY3Y5IHwgc3BhcmM2NCkJZ2RiX2hvc3RfY3B1PXNwYXJjIDs7CkBAIC0xMjksNiArMTMw LDggQEAgbTY4Ki0qLW9wZW5ic2QqKQlnZGJfaG9zdD1vYnNkIDs7CiAKIG04OCotKi1vcGVuYnNk KikJZ2RiX2hvc3Q9b2JzZCA7OwogCittaWNyb2JsYXplKi0qLWxpbnV4KikJZ2RiX2hvc3Q9bGlu dXggOzsKKwogbWlwcyotKi1saW51eCopCQlnZGJfaG9zdD1saW51eCA7OwogbWlwcyotKi1uZXRi c2Rhb3V0KiB8IG1pcHMqLSota25ldGJzZCotZ251KQogCQkJZ2RiX2hvc3Q9bmJzZCA7OwpkaWZm IC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5uYXQgYi9nZGIvY29uZmlndXJlLm5hdAppbmRleCAzOGRk NDE3OTUxMS4uNGY1YzE2MWM4NTQgMTAwNjQ0Ci0tLSBhL2dkYi9jb25maWd1cmUubmF0CisrKyBi L2dkYi9jb25maWd1cmUubmF0CkBAIC0zMDUsNiArMzA1LDEwIEBAIGNhc2UgJHtnZGJfaG9zdH0g aW4KIAkJIyBIb3N0OiBNb3Rvcm9sYSBtNjhrIHJ1bm5pbmcgR05VL0xpbnV4LgogCQlOQVRERVBG SUxFUz0iJHtOQVRERVBGSUxFU30gbTY4ay1saW51eC1uYXQubyIKIAkJOzsKKwkgICAgbWljcm9i bGF6ZSkKKwkJIyBIb3N0OiBNaWNyb2JsYXplIHJ1bm5pbmcgR05VL0xpbnV4LgorCQlOQVRERVBG SUxFUz0iJHtOQVRERVBGSUxFU30gbWljcm9ibGF6ZS1saW51eC1uYXQubyIKKwkJOzsKIAkgICAg bWlwcykKIAkJIyBIb3N0OiBMaW51eC9NSVBTCiAJCU5BVERFUEZJTEVTPSIke05BVERFUEZJTEVT fSBsaW51eC1uYXQtdHJhZC5vIFwKZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUudGd0IGIvZ2Ri L2NvbmZpZ3VyZS50Z3QKaW5kZXggYmE0MTg2NTNlODYuLjIxZmM5ZDk1OTc4IDEwMDY0NAotLS0g YS9nZGIvY29uZmlndXJlLnRndAorKysgYi9nZGIvY29uZmlndXJlLnRndApAQCAtNDI3LDcgKzQy Nyw4IEBAIG1lcC0qLSopCiBtaWNyb2JsYXplKi1saW51eC0qfG1pY3JvYmxhemUqLSotbGludXgq KQogCSMgVGFyZ2V0OiBYaWxpbnggTWljcm9CbGF6ZSBydW5uaW5nIExpbnV4CiAJZ2RiX3Rhcmdl dF9vYnM9Im1pY3JvYmxhemUtdGRlcC5vIG1pY3JvYmxhemUtbGludXgtdGRlcC5vIHNvbGliLXN2 cjQubyBcCi0JCQlzb2xpYi1zdnI0LWxpbnV4Lm8gc3ltZmlsZS1tZW0ubyBsaW51eC10ZGVwLm8i CisJCQlnbGliYy10ZGVwLm8gc29saWItc3ZyNC1saW51eC5vIHN5bWZpbGUtbWVtLm8gXAorCQkJ bGludXgtdGRlcC5vIgogCTs7CiBtaWNyb2JsYXplKi0qLSopCiAJIyBUYXJnZXQ6IFhpbGlueCBN aWNyb0JsYXplIHJ1bm5pbmcgc3RhbmRhbG9uZQpkaWZmIC0tZ2l0IGEvZ2RiL21pY3JvYmxhemUt bGludXgtbmF0LmMgYi9nZGIvbWljcm9ibGF6ZS1saW51eC1uYXQuYwpuZXcgZmlsZSBtb2RlIDEw MDc1NQppbmRleCAwMDAwMDAwMDAwMC4uMWRhMGMwNDM2NmQKLS0tIC9kZXYvbnVsbAorKysgYi9n ZGIvbWljcm9ibGF6ZS1saW51eC1uYXQuYwpAQCAtMCwwICsxLDIwNSBAQAorLyogTmF0aXZlLWRl cGVuZGVudCBjb2RlIGZvciBHTlUvTGludXggTWljcm9CbGF6ZS4KKyAgIENvcHlyaWdodCAoQykg MjAyMS0yMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIGZpbGUg aXMgcGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNs dWRlICJyZWdjYWNoZS5oIgorI2luY2x1ZGUgImdyZWdzZXQuaCIKKyNpbmNsdWRlICJsaW51eC1u YXQuaCIKKyNpbmNsdWRlICJtaWNyb2JsYXplLXRkZXAuaCIKKyNpbmNsdWRlICJtaWNyb2JsYXpl LWxpbnV4LXRkZXAuaCIKKyNpbmNsdWRlICJuYXQvZ2RiX3B0cmFjZS5oIgorCisvKiBFTEZfTkdS RUcgZnJvbSBwcm9jZnMuaCAoZG9lcyBub3Qgd29yaykgY29uZmxpY3RzIHdpdGggYXNtL2VsZi5o ICh3b3JrcykKKyAgIGp1c3QgdXNlIE1JQ1JPQkxBWkVfRlNSX1JFR05VTSBhcyBOR1JFRy4gICov CisKK3N0YXRpYyBjb25zdCBpbnQgbWljcm9ibGF6ZV9ncmVnX2JlZ2luID0gTUlDUk9CTEFaRV9S MV9SRUdOVU07CitzdGF0aWMgY29uc3QgaW50IG1pY3JvYmxhemVfZ3JlZ19lbmQgPSBNSUNST0JM QVpFX0ZTUl9SRUdOVU07CisKKy8qIE1pY3JvQmxhemUgTGludXggbmF0aXZlIGFkZGl0aW9ucyB0 byB0aGUgZGVmYXVsdCBsaW51eCBzdXBwb3J0LiAgKi8KKworY2xhc3MgbWljcm9ibGF6ZV9saW51 eF9uYXRfdGFyZ2V0IGZpbmFsIDogcHVibGljIGxpbnV4X25hdF90YXJnZXQKK3sKK3B1YmxpYzoK KyAgLyogQWRkIG91ciByZWdpc3RlciBhY2Nlc3MgbWV0aG9kcy4gICovCisgIHZvaWQgZmV0Y2hf cmVnaXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtKSBvdmVycmlk ZTsKKyAgdm9pZCBzdG9yZV9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGlu dCByZWdudW0pIG92ZXJyaWRlOworCisgIC8qIFJlYWQgc3VpdGFibGUgdGFyZ2V0IGRlc2NyaXB0 aW9uLiAgKi8KKyAgY29uc3Qgc3RydWN0IHRhcmdldF9kZXNjICpyZWFkX2Rlc2NyaXB0aW9uICgp IG92ZXJyaWRlOworfTsKKworc3RhdGljIG1pY3JvYmxhemVfbGludXhfbmF0X3RhcmdldCB0aGVf bWljcm9ibGF6ZV9saW51eF9uYXRfdGFyZ2V0OworCisvKiBDb3B5IGdlbmVyYWwgcHVycG9zZSBy ZWdpc3RlciBSRUdOVU0gKG9yIGFsbCBncCByZWdzIGlmIFJFR05VTSA9PSAtMSkKKyAgIGZyb20g cmVnc2V0IEdSRUdTIGludG8gUkVHQ0FDSEUuICAqLworCitzdGF0aWMgdm9pZAorc3VwcGx5X2dy ZWdzZXRfcmVnbnVtIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBjb25zdCBwcmdyZWdzZXRf dCAqZ3JlZ3MsCisJCSAgICBpbnQgcmVnbnVtKQoreworICBjb25zdCBlbGZfZ3JlZ190ICpyZWdw ID0gKmdyZWdzOworCisgIC8qIEFjY2VzcyBhbGwgcmVnaXN0ZXJzICovCisgIGlmIChyZWdudW0g PT0gLTEpCisgICAgeworICAgICAgLyogV2UgZmlsbCB0aGUgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lz dGVycy4gICovCisgICAgICBmb3IgKGludCBpID0gbWljcm9ibGF6ZV9ncmVnX2JlZ2luOyBpIDwg bWljcm9ibGF6ZV9ncmVnX2VuZDsgaSsrKQorCXJlZ2NhY2hlLT5yYXdfc3VwcGx5IChpLCByZWdw ICsgaSk7CisKKyAgICAgIC8qIEZpbGwgdGhlIGluYWNjZXNzaWJsZSB6ZXJvIHJlZ2lzdGVyIHdp dGggemVyby4gICovCisgICAgICByZWdjYWNoZS0+cmF3X3N1cHBseV96ZXJvZWQgKDApOworICAg IH0KKyAgZWxzZSBpZiAocmVnbnVtID09IE1JQ1JPQkxBWkVfUjBfUkVHTlVNKQorICAgIHJlZ2Nh Y2hlLT5yYXdfc3VwcGx5X3plcm9lZCAoMCk7CisgIGVsc2UgaWYgKHJlZ251bSA+PSBtaWNyb2Js YXplX2dyZWdfYmVnaW4gJiYgcmVnbnVtIDwgbWljcm9ibGF6ZV9ncmVnX2VuZCkKKyAgICByZWdj YWNoZS0+cmF3X3N1cHBseSAocmVnbnVtLCByZWdwICsgcmVnbnVtKTsKK30KKworLyogQ29weSBh bGwgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycyBmcm9tIHJlZ3NldCBHUkVHUyBpbnRvIFJFR0NB Q0hFLiAgKi8KKwordm9pZAorc3VwcGx5X2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUsIGNvbnN0IHByZ3JlZ3NldF90ICpncmVncykKK3sKKyAgc3VwcGx5X2dyZWdzZXRfcmVnbnVt IChyZWdjYWNoZSwgZ3JlZ3MsIC0xKTsKK30KKworLyogQ29weSBnZW5lcmFsIHB1cnBvc2UgcmVn aXN0ZXIgUkVHTlVNIChvciBhbGwgZ3AgcmVncyBpZiBSRUdOVU0gPT0gLTEpCisgICBmcm9tIFJF R0NBQ0hFIGludG8gcmVnc2V0IEdSRUdTLiAgKi8KKwordm9pZAorZmlsbF9ncmVnc2V0IChjb25z dCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBwcmdyZWdzZXRfdCAqZ3JlZ3MsIGludCByZWdu dW0pCit7CisgIGVsZl9ncmVnX3QgKnJlZ3AgPSAqZ3JlZ3M7CisgIGlmIChyZWdudW0gPT0gLTEp CisgICAgeworICAgICAgLyogV2UgZmlsbCB0aGUgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4g ICovCisgICAgICBmb3IgKGludCBpID0gbWljcm9ibGF6ZV9ncmVnX2JlZ2luOyBpIDwgbWljcm9i bGF6ZV9ncmVnX2VuZDsgaSsrKQorCXJlZ2NhY2hlLT5yYXdfY29sbGVjdCAoaSwgcmVncCArIGkp OworICAgIH0KKyAgZWxzZSBpZiAocmVnbnVtID49IG1pY3JvYmxhemVfZ3JlZ19iZWdpbiAmJiBy ZWdudW0gPCBtaWNyb2JsYXplX2dyZWdfZW5kKQorICAgIHJlZ2NhY2hlLT5yYXdfY29sbGVjdCAo cmVnbnVtLCByZWdwICsgcmVnbnVtKTsKK30KKworLyogVHJhbnNmZXJpbmcgZmxvYXRpbmctcG9p bnQgcmVnaXN0ZXJzIGJldHdlZW4gR0RCLCBpbmZlcmlvcnMgYW5kIGNvcmVzLgorICAgU2luY2Ug TWljcm9CbGF6ZSBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMgYXJlIHRoZSBzYW1lIGFzIEdQUnMg dGhlc2UgZG8KKyAgIG5vdGhpbmcuICAqLworCit2b2lkCitzdXBwbHlfZnByZWdzZXQgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIGNvbnN0IGdkYl9mcHJlZ3NldF90ICpmcHJlZ3MpCit7Cit9 CisKK3ZvaWQKK2ZpbGxfZnByZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs CisJICAgICAgIGdkYl9mcHJlZ3NldF90ICpmcHJlZ3MsIGludCByZWdubykKK3sKK30KKworLyog V3JhcHBlciBmdW5jdGlvbiBhcm91bmQgcHRyYWNlLiAgKi8KKworc3RhdGljIHZvaWQKK2ZldGNo X3RhcmdldF9ncF9yZWdzIChpbnQgdGlkLCBlbGZfZ3JlZ3NldF90ICpncmVncykKK3sKKyAgZWxm X2dyZWdfdCAqZ3JlZ3AgPSAqZ3JlZ3M7CisKKyAgLyogVXNpbmcgUFRSQUNFX1BFRUtVU0VSIGFz IFBUUkFDRV9HRVRSRUdTIGRpZCBub3Qgd29yay4gICovCisgIGZvciAoaW50IGkgPSBtaWNyb2Js YXplX2dyZWdfYmVnaW47IGkgPCBtaWNyb2JsYXplX2dyZWdfZW5kOyBpKyspCisgICAgeworICAg ICAgZXJybm8gPSAwOworICAgICAgZ3JlZ3BbaV0gPSBwdHJhY2UgKFBUUkFDRV9QRUVLVVNFUiwg dGlkLAorCQkJIChQVFJBQ0VfVFlQRV9BUkczKSAoaSAqIHNpemVvZihlbGZfZ3JlZ190KSksIDAp OworICAgICAgaWYgKGVycm5vICE9IDApCisJeworCSAgcGVycm9yX3dpdGhfbmFtZSAoXygiQ291 bGRuJ3QgZ2V0IHJlZ2lzdGVyIikpOworCX0KKyAgICB9Cit9CisKKworLyogV3JhcHBlciBmdW5j dGlvbiBhcm91bmQgcHRyYWNlLiAgKi8KKworc3RhdGljIHZvaWQKK3N0b3JlX3RhcmdldF9ncF9y ZWdzICggaW50IHRpZCwgZWxmX2dyZWdzZXRfdCAqZ3JlZ3MpCit7CisgIGVsZl9ncmVnX3QgKmdy ZWdwID0gKmdyZWdzOworCisgIC8qIFVzaW5nIFBUUkFDRV9QT0tFVVNFUiBhcyBQVFJBQ0VfU0VU UkVHUyBkaWQgbm90IHdvcmsuICAqLworICBmb3IgKGludCBpID0gbWljcm9ibGF6ZV9ncmVnX2Jl Z2luOyBpIDwgbWljcm9ibGF6ZV9ncmVnX2VuZDsgaSsrKQorICAgIHsKKyAgICAgIGxvbmcgbDsK KyAgICAgIGwgPSBncmVncFtpXTsKKyAgICAgIGVycm5vID0gMDsKKyAgICAgIHB0cmFjZSAoUFRS QUNFX1BPS0VVU0VSLCB0aWQsCisJICAgICAgKFBUUkFDRV9UWVBFX0FSRzMpIChpICogc2l6ZW9m KGVsZl9ncmVnX3QpKSwgbCk7CisgICAgICBpZiAoZXJybm8gIT0gMCkKKwl7CisJICBwZXJyb3Jf d2l0aF9uYW1lIChfKCJDb3VsZG4ndCBzZXQgcmVnaXN0ZXIiKSk7CisJfQorICAgIH0KK30KKwor LyogUmV0dXJuIGEgdGFyZ2V0IGRlc2NyaXB0aW9uIGZvciB0aGUgY3VycmVudCB0YXJnZXQuICAq LworCitjb25zdCBzdHJ1Y3QgdGFyZ2V0X2Rlc2MgKgorbWljcm9ibGF6ZV9saW51eF9uYXRfdGFy Z2V0OjpyZWFkX2Rlc2NyaXB0aW9uICgpCit7CisgIHJldHVybiB0ZGVzY19taWNyb2JsYXplX2xp bnV4OworfQorCisvKiBGZXRjaCBSRUdOVU0gKG9yIGFsbCByZWdpc3RlcnMgaWYgUkVHTlVNID09 IC0xKSBmcm9tIHRoZSB0YXJnZXQKKyAgIGludG8gUkVHQ0FDSEUgdXNpbmcgUFRSQUNFX0dFVFJF R1NFVC4gICovCisKK3ZvaWQKK21pY3JvYmxhemVfbGludXhfbmF0X3RhcmdldDo6ZmV0Y2hfcmVn aXN0ZXJzIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorCQkJCQkgICAgICBpbnQgcmVnbm8p Cit7CisgIGludCB0aWQ7CisgIGVsZl9ncmVnc2V0X3QgZ3JlZ3M7CisKKyAgdGlkID0gZ2V0X3B0 cmFjZV9waWQgKHJlZ2NhY2hlLT5wdGlkKCkpOworCisgIGZldGNoX3RhcmdldF9ncF9yZWdzICh0 aWQsICZncmVncyk7CisKKyAgc3VwcGx5X2dyZWdzZXRfcmVnbnVtIChyZWdjYWNoZSwgJmdyZWdz LCByZWdubyk7Cit9CisKKworLyogU3RvcmUgUkVHTlVNIChvciBhbGwgcmVnaXN0ZXJzIGlmIFJF R05VTSA9PSAtMSkgdG8gdGhlIHRhcmdldAorICAgZnJvbSBSRUdDQUNIRSB1c2luZyBQVFJBQ0Vf U0VUUkVHU0VULiAgKi8KKwordm9pZAorbWljcm9ibGF6ZV9saW51eF9uYXRfdGFyZ2V0OjpzdG9y ZV9yZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisJCQkJCSAgICAgIGludCBy ZWdubykKK3sKKyAgaW50IHRpZDsKKyAgZWxmX2dyZWdzZXRfdCBncmVnczsKKworICB0aWQgPSBn ZXRfcHRyYWNlX3BpZCAocmVnY2FjaGUtPnB0aWQoKSk7CisKKyAgZmV0Y2hfdGFyZ2V0X2dwX3Jl Z3MgKHRpZCwgJmdyZWdzKTsKKyAgZmlsbF9ncmVnc2V0IChyZWdjYWNoZSwgJmdyZWdzLCByZWdu byk7CisgIHN0b3JlX3RhcmdldF9ncF9yZWdzICh0aWQsICZncmVncyk7Cit9CisKKy8qIEluaXRp YWxpemUgTWljcm9CbGF6ZSBMaW51eCBuYXRpdmUgc3VwcG9ydC4gICovCisKK0lOSVRfR0RCX0ZJ TEUgKG1pY3JvYmxhemVfbGludXhfbmF0KQoreworICAvKiBSZWdpc3RlciB0aGUgdGFyZ2V0LiAg Ki8KKyAgbGludXhfdGFyZ2V0ID0gJnRoZV9taWNyb2JsYXplX2xpbnV4X25hdF90YXJnZXQ7Cisg IGFkZF9pbmZfY2hpbGRfdGFyZ2V0ICgmdGhlX21pY3JvYmxhemVfbGludXhfbmF0X3RhcmdldCk7 Cit9CmRpZmYgLS1naXQgYS9nZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmMgYi9nZGIvbWljcm9i bGF6ZS1saW51eC10ZGVwLmMKaW5kZXggZjNiMDI2ZmI2ODEuLjNjODNmYWFiN2Q0IDEwMDY0NAot LS0gYS9nZGIvbWljcm9ibGF6ZS1saW51eC10ZGVwLmMKKysrIGIvZ2RiL21pY3JvYmxhemUtbGlu dXgtdGRlcC5jCkBAIC0zNSw3ICszNSw5IEBACiAjaW5jbHVkZSAiZnJhbWUtdW53aW5kLmgiCiAj aW5jbHVkZSAidHJhbXAtZnJhbWUuaCIKICNpbmNsdWRlICJsaW51eC10ZGVwLmgiCisjaW5jbHVk ZSAiZ2xpYmMtdGRlcC5oIgogI2luY2x1ZGUgInNvbGliLXN2cjQtbGludXguaCIKKyNpbmNsdWRl ICJmZWF0dXJlcy9taWNyb2JsYXplLWxpbnV4LmMiCiAKIHN0YXRpYyBpbnQKIG1pY3JvYmxhemVf bGludXhfbWVtb3J5X3JlbW92ZV9icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK QEAgLTExNSwxMSArMTE3LDIyIEBAIHN0YXRpYyBzdHJ1Y3QgdHJhbXBfZnJhbWUgbWljcm9ibGF6 ZV9saW51eF9zaWdoYW5kbGVyX3RyYW1wX2ZyYW1lID0KICAgbWljcm9ibGF6ZV9saW51eF9zaWdo YW5kbGVyX2NhY2hlX2luaXQKIH07CiAKK3N0YXRpYyBzdHJ1Y3QgcmVnc2V0IG1pY3JvYmxhemVf bGludXhfZ3JlZ3NldCA9CisgIHsKKyAgICBudWxscHRyLAorICAgIG1pY3JvYmxhemVfc3VwcGx5 X2dyZWdzZXQKKyAgfTsKIAogc3RhdGljIHZvaWQKIG1pY3JvYmxhemVfbGludXhfaW5pdF9hYmkg KHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywKIAkJCSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo KQogeworICBzdHJ1Y3QgbWljcm9ibGF6ZV9nZGJhcmNoX3RkZXAgKnRkZXAgPQorCSAgZ2RiYXJj aF90ZGVwPG1pY3JvYmxhemVfZ2RiYXJjaF90ZGVwPiAoZ2RiYXJjaCk7CisKKyAgdGRlcC0+Z3Jl Z3NldCA9ICZtaWNyb2JsYXplX2xpbnV4X2dyZWdzZXQ7CisgIHRkZXAtPnNpemVvZl9ncmVnc2V0 ID0gTUlDUk9CTEFaRV9SRUdJU1RFUl9TSVpFICogTUlDUk9CTEFaRV9SRURSX1JFR05VTTsKKwog ICBsaW51eF9pbml0X2FiaSAoaW5mbywgZ2RiYXJjaCwgMCk7CiAKICAgc2V0X2dkYmFyY2hfbWVt b3J5X3JlbW92ZV9icmVha3BvaW50IChnZGJhcmNoLApAQCAtMTMxLDEwICsxNDQsMjUgQEAgbWlj cm9ibGF6ZV9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLAogICAvKiBU cmFtcG9saW5lcy4gICovCiAgIHRyYW1wX2ZyYW1lX3ByZXBlbmRfdW53aW5kZXIgKGdkYmFyY2gs CiAJCQkJJm1pY3JvYmxhemVfbGludXhfc2lnaGFuZGxlcl90cmFtcF9mcmFtZSk7CisKKyAgLyog QkZEIHRhcmdldCBmb3IgY29yZSBmaWxlcy4gICovCisgIGlmIChnZGJhcmNoX2J5dGVfb3JkZXIg KGdkYmFyY2gpID09IEJGRF9FTkRJQU5fQklHKQorICAgIHNldF9nZGJhcmNoX2djb3JlX2JmZF90 YXJnZXQgKGdkYmFyY2gsICJlbGYzMi1taWNyb2JsYXplIik7CisgIGVsc2UKKyAgICBzZXRfZ2Ri YXJjaF9nY29yZV9iZmRfdGFyZ2V0IChnZGJhcmNoLCAiZWxmMzItbWljcm9ibGF6ZWVsIik7CisK KworICAvKiBTaGFyZWQgbGlicmFyeSBoYW5kbGluZy4gICovCisgIHNldF9nZGJhcmNoX3NraXBf dHJhbXBvbGluZV9jb2RlIChnZGJhcmNoLCBmaW5kX3NvbGliX3RyYW1wb2xpbmVfdGFyZ2V0KTsK KyAgc2V0X2dkYmFyY2hfc2tpcF9zb2xpYl9yZXNvbHZlciAoZ2RiYXJjaCwgZ2xpYmNfc2tpcF9z b2xpYl9yZXNvbHZlcik7CisKIH0KIAogSU5JVF9HREJfRklMRSAobWljcm9ibGF6ZV9saW51eF90 ZGVwKQogewogICBnZGJhcmNoX3JlZ2lzdGVyX29zYWJpIChiZmRfYXJjaF9taWNyb2JsYXplLCAw LCBHREJfT1NBQklfTElOVVgsCiAJCQkgIG1pY3JvYmxhemVfbGludXhfaW5pdF9hYmkpOworCisg IC8qIEluaXRpYWxpemUgbGludXggdGFyZ2V0IGRlc2NyaXB0aW9uLiAgKi8KKyAgaW5pdGlhbGl6 ZV90ZGVzY19taWNyb2JsYXplX2xpbnV4ICgpOwogfQpkaWZmIC0tZ2l0IGEvZ2RiL21pY3JvYmxh emUtbGludXgtdGRlcC5oIGIvZ2RiL21pY3JvYmxhemUtbGludXgtdGRlcC5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMGU3M2EwNjM3NQotLS0gL2Rldi9udWxsCisr KyBiL2dkYi9taWNyb2JsYXplLWxpbnV4LXRkZXAuaApAQCAtMCwwICsxLDI2IEBACisvKiBUYXJn ZXQtZGVwZW5kZW50IGNvZGUgZm9yIEdOVS9MaW51eCBvbiBNaWNyb0JsYXplLgorCisgICBDb3B5 cmlnaHQgKEMpIDIwMjEtMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor CisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LworCisjaWZuZGVmIEdEQl9NSUNST0JMQVpFX0xJTlVYX1RERVBfSAorI2RlZmluZSBHREJfTUlD Uk9CTEFaRV9MSU5VWF9UREVQX0gKKworLyogVGFyZ2V0IGRlc2NyaXB0aW9ucy4gICovCitleHRl cm4gc3RydWN0IHRhcmdldF9kZXNjICp0ZGVzY19taWNyb2JsYXplX2xpbnV4OworCisjZW5kaWYg LyogR0RCX01JQ1JPQkxBWkVfTElOVVhfVERFUF9IICovCmRpZmYgLS1naXQgYS9nZGIvbWljcm9i bGF6ZS10ZGVwLmMgYi9nZGIvbWljcm9ibGF6ZS10ZGVwLmMKaW5kZXggMzUyZDZjMTcxMDUuLjFk MTg4MDYwNjE0IDEwMDY0NAotLS0gYS9nZGIvbWljcm9ibGF6ZS10ZGVwLmMKKysrIGIvZ2RiL21p Y3JvYmxhemUtdGRlcC5jCkBAIC0yNTIsNiArMjUyLDcgQEAgbWljcm9ibGF6ZV9hbmFseXplX3By b2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjLAogCSAgY2FjaGUt PmZyYW1lbGVzc19wID0gMDsgLyogRnJhbWUgZm91bmQuICAqLwogCSAgc2F2ZV9oaWRkZW5fcG9p bnRlcl9mb3VuZCA9IDA7CiAJICBub25fc3RhY2tfaW5zdHJ1Y3Rpb25fZm91bmQgPSAwOworCSAg Y2FjaGUtPnJlZ2lzdGVyX29mZnNldHNbcmRdID0gLWltbTsKIAkgIGNvbnRpbnVlOwogCX0KICAg ICAgIGVsc2UgaWYgKElTX1NQSUxMX1NQKG9wLCByZCwgcmEpKQpAQCAtMzk5LDggKzQwMCw3IEBA IG1pY3JvYmxhemVfc2tpcF9wcm9sb2d1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVf QUREUiBzdGFydF9wYykKICAgICB7CiAgICAgICBzYWwgPSBmaW5kX3NhbF9mb3JfcGMgKGZ1bmNf c3RhcnQsIDApOwogCi0gICAgICBpZiAoc2FsLmVuZCA8IGZ1bmNfZW5kCi0JICAmJiBzdGFydF9w YyA8PSBzYWwuZW5kKQorICAgICAgaWYgKHNhbC5saW5lICE9IDAgJiYgc2FsLmVuZCA8PSBmdW5j X2VuZCAgJiYgc3RhcnRfcGMgPD0gc2FsLmVuZCkKIAlzdGFydF9wYyA9IHNhbC5lbmQ7CiAgICAg fQogCkBAIC00MjAsNiArNDIwLDcgQEAgbWljcm9ibGF6ZV9mcmFtZV9jYWNoZSAoY29uc3QgZnJh bWVfaW5mb19wdHIgJm5leHRfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQogICBzdHJ1Y3QgbWlj cm9ibGF6ZV9mcmFtZV9jYWNoZSAqY2FjaGU7CiAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0g Z2V0X2ZyYW1lX2FyY2ggKG5leHRfZnJhbWUpOwogICBpbnQgcm47CisgIENPUkVfQUREUiBjdXJy ZW50X3BjOwogCiAgIGlmICgqdGhpc19jYWNoZSkKICAgICByZXR1cm4gKHN0cnVjdCBtaWNyb2Js YXplX2ZyYW1lX2NhY2hlICopICp0aGlzX2NhY2hlOwpAQCAtNDMyLDEwICs0MzMsMTUgQEAgbWlj cm9ibGF6ZV9mcmFtZV9jYWNoZSAoY29uc3QgZnJhbWVfaW5mb19wdHIgJm5leHRfZnJhbWUsIHZv aWQgKip0aGlzX2NhY2hlKQogICBmb3IgKHJuID0gMDsgcm4gPCBnZGJhcmNoX251bV9yZWdzIChn ZGJhcmNoKTsgcm4rKykKICAgICBjYWNoZS0+cmVnaXN0ZXJfb2Zmc2V0c1tybl0gPSAtMTsKIAot ICAvKiBDYWxsIGZvciBzaWRlIGVmZmVjdHMuICAqLwotICBnZXRfZnJhbWVfZnVuYyAobmV4dF9m cmFtZSk7CisgIGNhY2hlLT5wYyA9IGdldF9mcmFtZV9mdW5jIChuZXh0X2ZyYW1lKTsKIAotICBj YWNoZS0+cGMgPSBnZXRfZnJhbWVfYWRkcmVzc19pbl9ibG9jayAobmV4dF9mcmFtZSk7CisgIGN1 cnJlbnRfcGMgPSBnZXRfZnJhbWVfcGMgKG5leHRfZnJhbWUpOworICBpZiAoY2FjaGUtPnBjKQor ICAgICBtaWNyb2JsYXplX2FuYWx5emVfcHJvbG9ndWUgKGdkYmFyY2gsIGNhY2hlLT5wYywgY3Vy cmVudF9wYywgY2FjaGUpOworCisgIGNhY2hlLT5zYXZlZF9zcCA9IGNhY2hlLT5iYXNlICsgY2Fj aGUtPmZyYW1lc2l6ZTsKKyAgY2FjaGUtPnJlZ2lzdGVyX29mZnNldHNbTUlDUk9CTEFaRV9QUkVW X1BDX1JFR05VTV0gPSBjYWNoZS0+YmFzZTsKKyAgY2FjaGUtPnJlZ2lzdGVyX29mZnNldHNbTUlD Uk9CTEFaRV9TUF9SRUdOVU1dID0gY2FjaGUtPnNhdmVkX3NwOwogCiAgIHJldHVybiBjYWNoZTsK IH0KQEAgLTQ2MSwxOSArNDY3LDMwIEBAIG1pY3JvYmxhemVfZnJhbWVfcHJldl9yZWdpc3RlciAo Y29uc3QgZnJhbWVfaW5mb19wdHIgJnRoaXNfZnJhbWUsCiAgIHN0cnVjdCBtaWNyb2JsYXplX2Zy YW1lX2NhY2hlICpjYWNoZSA9CiAgICAgbWljcm9ibGF6ZV9mcmFtZV9jYWNoZSAodGhpc19mcmFt ZSwgdGhpc19jYWNoZSk7CiAKLSAgaWYgKGNhY2hlLT5mcmFtZWxlc3NfcCkKKyAgaWYgKChyZWdu dW0gPT0gTUlDUk9CTEFaRV9TUF9SRUdOVU0gfHwgcmVnbnVtID09IE1JQ1JPQkxBWkVfRlBfUkVH TlVNKQorICAgICAgJiYgY2FjaGUtPnJlZ2lzdGVyX29mZnNldHNbTUlDUk9CTEFaRV9TUF9SRUdO VU1dKQogICAgIHsKLSAgICAgIGlmIChyZWdudW0gPT0gTUlDUk9CTEFaRV9QQ19SRUdOVU0pCi0J cmVnbnVtID0gMTU7Ci0gICAgICBpZiAocmVnbnVtID09IE1JQ1JPQkxBWkVfU1BfUkVHTlVNKQot CXJlZ251bSA9IDE7Ci0gICAgICByZXR1cm4gdHJhZF9mcmFtZV9nZXRfcHJldl9yZWdpc3RlciAo dGhpc19mcmFtZSwKLQkJCQkJICAgY2FjaGUtPnNhdmVkX3JlZ3MsIHJlZ251bSk7CisgICAgICBy ZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9jb25zdGFudAorCSAgICAgICAodGhpc19mcmFtZSwgcmVn bnVtLAorCQljYWNoZS0+cmVnaXN0ZXJfb2Zmc2V0c1tNSUNST0JMQVpFX1NQX1JFR05VTV0pOwor ICAgIH0KKworICBpZiAocmVnbnVtID09IE1JQ1JPQkxBWkVfUENfUkVHTlVNKQorICAgIHsKKyAg ICAgIHJlZ251bSA9IE1JQ1JPQkxBWkVfUFJFVl9QQ19SRUdOVU07CisKKyAgICAgIG1pY3JvYmxh emVfZGVidWcgKCJwcmV2IHBjIGlzIHIxNSBAIGZyYW1lIG9mZnNldCAweCV4XG4iLAorICAgICAg ICAgICAgICAgICAgICAgICAgIChpbnQpIGNhY2hlLT5yZWdpc3Rlcl9vZmZzZXRzW3JlZ251bV0g KTsKKworICAgICAgcmV0dXJuIGZyYW1lX3Vud2luZF9nb3RfbWVtb3J5CisJICAgICAgICh0aGlz X2ZyYW1lLCByZWdudW0sCisJCWNhY2hlLT5yZWdpc3Rlcl9vZmZzZXRzW01JQ1JPQkxBWkVfUFJF Vl9QQ19SRUdOVU1dKTsKICAgICB9Ci0gIGVsc2UKLSAgICByZXR1cm4gdHJhZF9mcmFtZV9nZXRf cHJldl9yZWdpc3RlciAodGhpc19mcmFtZSwgY2FjaGUtPnNhdmVkX3JlZ3MsCi0JCQkJCSByZWdu dW0pOwogCisgIGlmIChyZWdudW0gPT0gTUlDUk9CTEFaRV9TUF9SRUdOVU0pCisgICAgcmVnbnVt ID0gMTsKKworICByZXR1cm4gdHJhZF9mcmFtZV9nZXRfcHJldl9yZWdpc3RlciAodGhpc19mcmFt ZSwgY2FjaGUtPnNhdmVkX3JlZ3MsIHJlZ251bSk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZnJhbWVfdW53aW5kX2xlZ2FjeSBtaWNyb2JsYXplX2ZyYW1lX3Vud2luZCAoCkBAIC03MTgsNiAr NzM1LDQzIEBAIG1pY3JvYmxhemVfcmVnaXN0ZXJfZ19wYWNrZXRfZ3Vlc3NlcyAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gpCiAJCQkJICB0ZGVzY19taWNyb2JsYXplX3dpdGhfc3RhY2tfcHJvdGVj dC5nZXQgKCkpOwogfQogCit2b2lkCittaWNyb2JsYXplX3N1cHBseV9ncmVnc2V0IChjb25zdCBz dHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCisJCQkgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAor CQkJICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZ3JlZ3MsIHNpemVfdCBzaXplKQoreworICBj b25zdCBnZGJfYnl0ZSAqcmVncyA9IChjb25zdCBnZGJfYnl0ZSAqKSBncmVnczsKKworICBpZiAo cmVnbnVtID49IDApCisgICAgcmVnY2FjaGUtPnJhd19zdXBwbHkgKHJlZ251bSwgcmVncyArIHJl Z251bSAqIE1JQ1JPQkxBWkVfUkVHSVNURVJfU0laRSk7CisKKyAgaWYgKHJlZ251bSA9PSAtMSkg eworICAgIGludCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IE1JQ1JPQkxBWkVfUkVEUl9SRUdO VU07IGkrKykKKyAgICAgIHsKKwlyZWdjYWNoZS0+cmF3X3N1cHBseSAoaSwgcmVncyArIGkgKiBN SUNST0JMQVpFX1JFR0lTVEVSX1NJWkUpOworICAgICAgfQorICB9Cit9CisKKworLyogUmV0dXJu IHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlciBzZXQgZm9yIHRoZSBjb3JlIHNlY3Rpb24gaWRlbnRp ZmllZAorICAgYnkgU0VDVF9OQU1FIGFuZCBTRUNUX1NJWkUuICAqLworCitzdGF0aWMgdm9pZAor bWljcm9ibGF6ZV9pdGVyYXRlX292ZXJfcmVnc2V0X3NlY3Rpb25zIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRlX292 ZXJfcmVnc2V0X3NlY3Rpb25zX2NiICpjYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICpjYl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpCit7CisgIG1pY3JvYmxhemVfZ2Ri YXJjaF90ZGVwICp0ZGVwCisgICAgPSBnZGJhcmNoX3RkZXA8bWljcm9ibGF6ZV9nZGJhcmNoX3Rk ZXA+IChnZGJhcmNoKTsKKworICBjYiAoIi5yZWciLCB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCwgdGRl cC0+c2l6ZW9mX2dyZWdzZXQsIHRkZXAtPmdyZWdzZXQsCisgICAgICBudWxscHRyLCBjYl9kYXRh KTsKK30KKwogc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKIG1pY3JvYmxhemVfZ2RiYXJjaF9pbml0 IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykK IHsKQEAgLTc0Miw2ICs3OTYsNyBAQCBtaWNyb2JsYXplX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdk YmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCiAJCQkJICAgICJv cmcuZ251LmdkYi5taWNyb2JsYXplLmNvcmUiKTsKICAgICAgIGlmIChmZWF0dXJlID09IE5VTEwp CiAJcmV0dXJuIE5VTEw7CisKICAgICAgIHRkZXNjX2RhdGEgPSB0ZGVzY19kYXRhX2FsbG9jICgp OwogCiAgICAgICB2YWxpZF9wID0gMTsKQEAgLTc2OSw2ICs4MjQsOSBAQCBtaWNyb2JsYXplX2dk YmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0 ICphcmNoZXMpCiAgIGdkYmFyY2ggKmdkYmFyY2gKICAgICA9IGdkYmFyY2hfYWxsb2MgKCZpbmZv LCBnZGJhcmNoX3RkZXBfdXAgKG5ldyBtaWNyb2JsYXplX2dkYmFyY2hfdGRlcCkpOwogCisgIG1p Y3JvYmxhemVfZ2RiYXJjaF90ZGVwICp0ZGVwCisgICAgPSBnZGJhcmNoX3RkZXA8bWljcm9ibGF6 ZV9nZGJhcmNoX3RkZXA+IChnZGJhcmNoKTsKKwogICBzZXRfZ2RiYXJjaF9sb25nX2RvdWJsZV9i aXQgKGdkYmFyY2gsIDEyOCk7CiAKICAgc2V0X2dkYmFyY2hfbnVtX3JlZ3MgKGdkYmFyY2gsIE1J Q1JPQkxBWkVfTlVNX1JFR1MpOwpAQCAtODE3LDYgKzg3NSwxMyBAQCBtaWNyb2JsYXplX2dkYmFy Y2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICph cmNoZXMpCiAgIGlmICh0ZGVzY19kYXRhICE9IE5VTEwpCiAgICAgdGRlc2NfdXNlX3JlZ2lzdGVy cyAoZ2RiYXJjaCwgdGRlc2MsIHN0ZDo6bW92ZSAodGRlc2NfZGF0YSkpOwogCisgIC8qIElmIHdl IGhhdmUgcmVnaXN0ZXIgc2V0cywgZW5hYmxlIHRoZSBnZW5lcmljIGNvcmUgZmlsZSBzdXBwb3J0 LiAgKi8KKyAgaWYgKHRkZXAtPmdyZWdzZXQpCisgICAgeworICAgICAgc2V0X2dkYmFyY2hfaXRl cmF0ZV9vdmVyX3JlZ3NldF9zZWN0aW9ucworICAgICAgICAoZ2RiYXJjaCwgbWljcm9ibGF6ZV9p dGVyYXRlX292ZXJfcmVnc2V0X3NlY3Rpb25zKTsKKyAgICB9CisKICAgcmV0dXJuIGdkYmFyY2g7 CiB9CiAKZGlmZiAtLWdpdCBhL2dkYi9taWNyb2JsYXplLXRkZXAuaCBiL2dkYi9taWNyb2JsYXpl LXRkZXAuaAppbmRleCBlZjU0Mzk4NTRkMC4uZDdiZjVkMjI2MmYgMTAwNjQ0Ci0tLSBhL2dkYi9t aWNyb2JsYXplLXRkZXAuaAorKysgYi9nZGIvbWljcm9ibGF6ZS10ZGVwLmgKQEAgLTIzLDggKzIz LDE0IEBACiAjaW5jbHVkZSAiZ2RiYXJjaC5oIgogCiAvKiBNaWNyb2JsYXplIGFyY2hpdGVjdHVy ZS1zcGVjaWZpYyBpbmZvcm1hdGlvbi4gICovCisKIHN0cnVjdCBtaWNyb2JsYXplX2dkYmFyY2hf dGRlcCA6IGdkYmFyY2hfdGRlcF9iYXNlCiB7CisgIC8qIFJlZ2lzdGVyIHNldHMuICAqLworICBz dHJ1Y3QgcmVnc2V0ICpncmVnc2V0ID0gbnVsbHB0cjsKKyAgc2l6ZV90IHNpemVvZl9ncmVnc2V0 ID0gMDsKKyAgc3RydWN0IHJlZ3NldCAqZnByZWdzZXQgPSBudWxscHRyOworICBzaXplX3Qgc2l6 ZW9mX2ZwcmVnc2V0ID0gMDsKIH07CiAKIC8qIFJlZ2lzdGVyIG51bWJlcnMuICAqLwpAQCAtNDUs MTEgKzUxLDExIEBAIGVudW0gbWljcm9ibGF6ZV9yZWdudW0KICAgTUlDUk9CTEFaRV9SMTJfUkVH TlVNLAogICBNSUNST0JMQVpFX1IxM19SRUdOVU0sCiAgIE1JQ1JPQkxBWkVfUjE0X1JFR05VTSwK LSAgTUlDUk9CTEFaRV9SMTVfUkVHTlVNLAorICBNSUNST0JMQVpFX1IxNV9SRUdOVU0sTUlDUk9C TEFaRV9QUkVWX1BDX1JFR05VTSA9IE1JQ1JPQkxBWkVfUjE1X1JFR05VTSwKICAgTUlDUk9CTEFa RV9SMTZfUkVHTlVNLAogICBNSUNST0JMQVpFX1IxN19SRUdOVU0sCiAgIE1JQ1JPQkxBWkVfUjE4 X1JFR05VTSwKLSAgTUlDUk9CTEFaRV9SMTlfUkVHTlVNLAorICBNSUNST0JMQVpFX1IxOV9SRUdO VU0sTUlDUk9CTEFaRV9GUF9SRUdOVU0gPSBNSUNST0JMQVpFX1IxOV9SRUdOVU0sCiAgIE1JQ1JP QkxBWkVfUjIwX1JFR05VTSwKICAgTUlDUk9CTEFaRV9SMjFfUkVHTlVNLAogICBNSUNST0JMQVpF X1IyMl9SRUdOVU0sCkBAIC05OCw2ICsxMDQsNyBAQCBzdHJ1Y3QgbWljcm9ibGF6ZV9mcmFtZV9j YWNoZQogICBDT1JFX0FERFIgYmFzZTsKICAgQ09SRV9BRERSIHBjOwogCisgIENPUkVfQUREUiBz YXZlZF9zcDsKICAgLyogRG8gd2UgaGF2ZSBhIGZyYW1lPyAgKi8KICAgaW50IGZyYW1lbGVzc19w OwogCkBAIC0xMjAsNCArMTI3LDggQEAgc3RydWN0IG1pY3JvYmxhemVfZnJhbWVfY2FjaGUKICAg IE9ubHkgdXNlZCBmb3IgbmF0aXZlIGRlYnVnZ2luZy4gICovCiAjZGVmaW5lIE1JQ1JPQkxBWkVf QlJFQUtQT0lOVCB7MHhiYSwgMHgwYywgMHgwMCwgMHgxOH0KIAorZXh0ZXJuIHZvaWQgbWljcm9i bGF6ZV9zdXBwbHlfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAorCQkJCSAg ICAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLAorCQkJCSAgICAgICBj b25zdCB2b2lkICpncmVncywgc2l6ZV90IHNpemUpOworCiAjZW5kaWYgLyogR0RCX01JQ1JPQkxB WkVfVERFUF9IICovCi0tIAoyLjQ3LjMKCg== --0000000000001af34706533e4a8e--