From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-il1-f178.google.com (mail-il1-f178.google.com [209.85.166.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E31061D0DFC for ; Mon, 18 Nov 2024 20:40:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.178 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731962409; cv=none; b=TL07pixJZXn91EDPsha26s3eFRieAnmn7KZUvTvK5Hext4f6G4v//EJwfAbaIMGlKhcY0tMsY1A/+K6gIHulEw+5IXzHNtsowxZE9cma45sW1Wfen28huH6vBYz5XRwF5l9/Zlz9M8JelOPfZ72e9iuL/0d/NRl2wsQYY0RXgX0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731962409; c=relaxed/simple; bh=HIZHzjJnNxx32ji9KilZ15+nKMu2UtzS/phIToeH0CE=; h=Content-Type:Message-ID:Date:MIME-Version:To:Cc:From:Subject; b=jrLrviwD1cGiRHIaINSSMZ7xNuo1PDrxLgRWsrimqQArS+20qzpLI1eQLZvSAmqrUCcit6CBdHF4sdyg3axvhqtiysy0mopfrueOExesHTtk1ILUguHzUsdQXfdbNig8N2ihjVhs4hm9NopkbzyS3nWDJHXIoVFgAVZtjMZEag0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linuxfoundation.org; spf=pass smtp.mailfrom=linuxfoundation.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=CFDeVrV4; arc=none smtp.client-ip=209.85.166.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linuxfoundation.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linuxfoundation.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="CFDeVrV4" Received: by mail-il1-f178.google.com with SMTP id e9e14a558f8ab-3a6e960fb5dso9335595ab.0 for ; Mon, 18 Nov 2024 12:40:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1731962404; x=1732567204; darn=vger.kernel.org; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=fOQ2jXSdv2ycxlsP1Mr5X6/TWIL755wGUV0bA30E7uY=; b=CFDeVrV4RS/yI43VqQK4um6jGkvRdQaoSwNZOX41sR6VJg70d5CvJGXIv1eBaNCrl8 HcBGNDv5eeB9nb9fUARFHQcrsN4lRsLkwXjJLfMP/d7soULBtWyt+W6lgaU1XXmpF1hO ii4ErwI6JmPt3eP225oIN6KqYlKCQnkpTsADU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731962404; x=1732567204; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fOQ2jXSdv2ycxlsP1Mr5X6/TWIL755wGUV0bA30E7uY=; b=xTObsVW9P2uzsLVPShpXhnbg/kogCYAG3vUnkLex8X41qPCVFnLaDAUtifwtwJFiXO E+9HRnA8ykr9W4M4CyoZM1a/CWNF0g/6J1WJFt/jFrFxvcl/OdaAGXutsqzZGy2dnEV8 uBekqlyEp9szvD1RM7uz/uZlIoWC92z7vd+PK4Ux7aqibyfzXZRU39sdr0RYEXY6GRFm uw9v+cDrQKqb0zKbW+pNLvGCqm+Uf/D16kl8dYFEwMG5lWVlqusEKiQws4+rzVt1QXHF Scz3JtcnxyyJnagt8fm4iIE1AWX5KjpAd2iToItw7MyYyalQEUozUZT7j6UlRq5ZJqtL 3sEw== X-Forwarded-Encrypted: i=1; AJvYcCXNGyC/BxNDp5HtICmcOd5f7TCHogpbjjgMAVKFW9ZaPxA5wkUM8MbACwpv9/L+NIBiX0zI5aEa1QAftVs=@vger.kernel.org X-Gm-Message-State: AOJu0YwQOB7FTa/LkCGEv3wQA7M67BOHnRAv9DIn5EkAtmUvpqSEPxos 77dLEs5+9fDkpPR78BErUx1FtyKN4IPBdOPntuAAZdwYua07gEC1oHN4/fwO4p8= X-Google-Smtp-Source: AGHT+IFW3kbBoRyJ6IWt8A3LdIs2fJMqkYLw7bTzOt3OJVFRAYC7Bcn4+k8t58OetoZ+HPvQGo3Qtg== X-Received: by 2002:a05:6e02:1a6b:b0:3a7:6dde:c78b with SMTP id e9e14a558f8ab-3a76ddec9a6mr37249965ab.8.1731962403901; Mon, 18 Nov 2024 12:40:03 -0800 (PST) Received: from [192.168.1.128] ([38.175.170.29]) by smtp.gmail.com with ESMTPSA id e9e14a558f8ab-3a7586150a2sm15842955ab.32.2024.11.18.12.40.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 18 Nov 2024 12:40:03 -0800 (PST) Content-Type: multipart/mixed; boundary="------------v8upExji9lbeNmEC9zZ6NCja" Message-ID: <4c781cbc-d77b-4ddb-8a6b-72514f55b6c8@linuxfoundation.org> Date: Mon, 18 Nov 2024 13:40:02 -0700 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: Linus Torvalds Cc: shuah , Shuah Khan , linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org From: Shuah Khan Subject: [GIT PULL] Kselftest update for Linux 6.13-rc1 This is a multi-part message in MIME format. --------------v8upExji9lbeNmEC9zZ6NCja Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Linus, Please pull the following kselftest fixes update for Linux 6.13-rc1. kselftest update for Linux 6.13-rc1 -- timers test - removes duplicates defines -- timers test - fixes to improve error reporting -- rtc test - adds check rtc alarm status to alarm test -- resctrl test - adds array overrun checks during iMC config parsing code -- resctrl test - adds array overflow checks when reading strings -- resctrl test - fixes and reorganizing code Looks like I forgot to mention signal test changes in my tag message. :( diff is attached. Tests passed on my kselftest next branch: - Individual test runs of signal, timers, rtc, and resctrl thanks, -- Shuah ---------------------------------------------------------------- The following changes since commit 8e929cb546ee42c9a61d24fae60605e9e3192354: Linux 6.12-rc3 (2024-10-13 14:33:32 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest tags/linux_kselftest-next-6.13-rc1 for you to fetch changes up to a44c26d7fa74a5f4d2795a5c55a2d6ec1ebf1e38: selftests/resctrl: Replace magic constants used as array size (2024-11-04 17:02:03 -0700) ---------------------------------------------------------------- linux_kselftest-next-6.13-rc1 kselftest update for Linux 6.13-rc1 -- timers test - removes duplicates defines -- timers test - fixes to improve error reporting -- rtc test - adds check rtc alarm status to alarm test -- resctrl test - adds array overrun checks during iMC config parsing code -- resctrl test - adds array overflow checks when reading strings -- resctrl test - fixes and reorganizing code ---------------------------------------------------------------- Chen Ni (1): selftests: timers: Remove unneeded semicolon Dev Jain (2): selftests: Rename sigaltstack to generic signal selftests: Add a test mangling with uc_sigmask Gianfranco Trad (1): selftests: timers: improve timer_create failure message Joseph Jang (1): selftest: rtc: Add to check rtc alarm status for alarm related test NĂ­colas F. R. A. Prado (1): docs: dev-tools: Add documentation for the device focused kselftests Reinette Chatre (15): selftests/resctrl: Make functions only used in same file static selftests/resctrl: Print accurate buffer size as part of MBM results selftests/resctrl: Fix memory overflow due to unhandled wraparound selftests/resctrl: Protect against array overrun during iMC config parsing selftests/resctrl: Protect against array overflow when reading strings selftests/resctrl: Make wraparound handling obvious selftests/resctrl: Remove "once" parameter required to be false selftests/resctrl: Only support measured read operation selftests/resctrl: Remove unused measurement code selftests/resctrl: Make benchmark parameter passing robust selftests/resctrl: Ensure measurements skip initialization of default benchmark selftests/resctrl: Use cache size to determine "fill_buf" buffer size selftests/resctrl: Do not compare performance counters and resctrl at low bandwidth selftests/resctrl: Keep results from first test run selftests/resctrl: Replace magic constants used as array size Shuah Khan (2): selftests: timers: Remove local NSEC_PER_SEC and USEC_PER_SEC defines selftests:timers: remove local CLOCKID defines Documentation/dev-tools/kselftest.rst | 9 + Documentation/dev-tools/testing-devices.rst | 47 +++ tools/testing/selftests/Makefile | 2 +- tools/testing/selftests/resctrl/cmt_test.c | 37 +- tools/testing/selftests/resctrl/fill_buf.c | 45 +-- tools/testing/selftests/resctrl/mba_test.c | 54 ++- tools/testing/selftests/resctrl/mbm_test.c | 37 +- tools/testing/selftests/resctrl/resctrl.h | 79 +++- tools/testing/selftests/resctrl/resctrl_tests.c | 95 ++++- tools/testing/selftests/resctrl/resctrl_val.c | 447 ++++++--------------- tools/testing/selftests/resctrl/resctrlfs.c | 19 +- tools/testing/selftests/rtc/Makefile | 2 +- tools/testing/selftests/rtc/rtctest.c | 64 +++ .../selftests/{sigaltstack => signal}/.gitignore | 1 + .../selftests/{sigaltstack => signal}/Makefile | 3 +- .../current_stack_pointer.h | 0 tools/testing/selftests/signal/mangle_uc_sigmask.c | 184 +++++++++ .../selftests/{sigaltstack => signal}/sas.c | 0 tools/testing/selftests/timers/Makefile | 2 +- tools/testing/selftests/timers/adjtick.c | 6 +- .../testing/selftests/timers/alarmtimer-suspend.c | 22 +- .../testing/selftests/timers/inconsistency-check.c | 21 +- tools/testing/selftests/timers/leap-a-day.c | 2 +- tools/testing/selftests/timers/mqueue-lat.c | 2 +- tools/testing/selftests/timers/nanosleep.c | 21 +- tools/testing/selftests/timers/nsleep-lat.c | 22 +- tools/testing/selftests/timers/posix_timers.c | 15 +- tools/testing/selftests/timers/raw_skew.c | 4 +- tools/testing/selftests/timers/set-2038.c | 3 +- tools/testing/selftests/timers/set-timer-lat.c | 21 +- tools/testing/selftests/timers/valid-adjtimex.c | 4 +- 31 files changed, 701 insertions(+), 569 deletions(-) create mode 100644 Documentation/dev-tools/testing-devices.rst rename tools/testing/selftests/{sigaltstack => signal}/.gitignore (70%) rename tools/testing/selftests/{sigaltstack => signal}/Makefile (56%) rename tools/testing/selftests/{sigaltstack => signal}/current_stack_pointer.h (100%) create mode 100644 tools/testing/selftests/signal/mangle_uc_sigmask.c rename tools/testing/selftests/{sigaltstack => signal}/sas.c (100%) ---------------------------------------------------------------- --------------v8upExji9lbeNmEC9zZ6NCja Content-Type: text/x-patch; charset=UTF-8; name="linux_kselftest-next-6.13-rc1.diff" Content-Disposition: attachment; filename="linux_kselftest-next-6.13-rc1.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2tzZWxmdGVzdC5yc3QgYi9E b2N1bWVudGF0aW9uL2Rldi10b29scy9rc2VsZnRlc3QucnN0CmluZGV4IGYzNzY2ZTMyNmQx ZS4uZmRiMWRmODY3ODNhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2Rldi10b29scy9r c2VsZnRlc3QucnN0CisrKyBiL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL2tzZWxmdGVzdC5y c3QKQEAgLTMxLDYgKzMxLDE1IEBAIGtzZWxmdGVzdCBydW5zIGFzIGEgdXNlcnNwYWNlIHBy b2Nlc3MuICBUZXN0cyB0aGF0IGNhbiBiZSB3cml0dGVuL3J1biBpbgogdXNlcnNwYWNlIG1h eSB3aXNoIHRvIHVzZSB0aGUgYFRlc3QgSGFybmVzc2BfLiAgVGVzdHMgdGhhdCBuZWVkIHRv IGJlCiBydW4gaW4ga2VybmVsIHNwYWNlIG1heSB3aXNoIHRvIHVzZSBhIGBUZXN0IE1vZHVs ZWBfLgogCitEb2N1bWVudGF0aW9uIG9uIHRoZSB0ZXN0cworPT09PT09PT09PT09PT09PT09 PT09PT09PT0KKworRm9yIGRvY3VtZW50YXRpb24gb24gdGhlIGtzZWxmdGVzdHMgdGhlbXNl bHZlcywgc2VlOgorCisuLiB0b2N0cmVlOjoKKworICAgdGVzdGluZy1kZXZpY2VzCisKIFJ1 bm5pbmcgdGhlIHNlbGZ0ZXN0cyAoaG90cGx1ZyB0ZXN0cyBhcmUgcnVuIGluIGxpbWl0ZWQg bW9kZSkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMv dGVzdGluZy1kZXZpY2VzLnJzdCBiL0RvY3VtZW50YXRpb24vZGV2LXRvb2xzL3Rlc3Rpbmct ZGV2aWNlcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5h YjI2YWRiOTkwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Rldi10b29s cy90ZXN0aW5nLWRldmljZXMucnN0CkBAIC0wLDAgKzEsNDcgQEAKKy4uIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wCisuLiBDb3B5cmlnaHQgKGMpIDIwMjQgQ29sbGFib3Jh IEx0ZAorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRGV2aWNlIHRlc3Rpbmcg d2l0aCBrc2VsZnRlc3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworVGhl cmUgYXJlIGEgZmV3IGRpZmZlcmVudCBrc2VsZnRlc3RzIGF2YWlsYWJsZSBmb3IgdGVzdGlu ZyBkZXZpY2VzIGdlbmVyaWNhbGx5LAord2l0aCBzb21lIG92ZXJsYXAgaW4gY292ZXJhZ2Ug YW5kIGRpZmZlcmVudCByZXF1aXJlbWVudHMuIFRoaXMgZG9jdW1lbnQgYWltcyB0bworZ2l2 ZSBhbiBvdmVydmlldyBvZiBlYWNoIG9uZS4KKworTm90ZTogUGF0aHMgaW4gdGhpcyBkb2N1 bWVudCBhcmUgcmVsYXRpdmUgdG8gdGhlIGtzZWxmdGVzdCBmb2xkZXIKKyhgYHRvb2xzL3Rl c3Rpbmcvc2VsZnRlc3RzYGApLgorCitEZXZpY2Ugb3JpZW50ZWQga3NlbGZ0ZXN0czoKKwor KiBEZXZpY2V0cmVlIChgYGR0YGApCisKKyAgKiAqKkNvdmVyYWdlKio6IFByb2JlIHN0YXR1 cyBmb3IgZGV2aWNlcyBkZXNjcmliZWQgaW4gRGV2aWNldHJlZQorICAqICoqUmVxdWlyZW1l bnRzKio6IE5vbmUKKworKiBFcnJvciBsb2dzIChgYGRldmljZXMvZXJyb3JfbG9nc2BgKQor CisgICogKipDb3ZlcmFnZSoqOiBFcnJvciAob3IgbW9yZSBjcml0aWNhbCkgbG9nIG1lc3Nh Z2VzIHByZXNlbmNlIGNvbWluZyBmcm9tIGFueQorICAgIGRldmljZQorICAqICoqUmVxdWly ZW1lbnRzKio6IE5vbmUKKworKiBEaXNjb3ZlcmFibGUgYnVzIChgYGRldmljZXMvcHJvYmVg YCkKKworICAqICoqQ292ZXJhZ2UqKjogUHJlc2VuY2UgYW5kIHByb2JlIHN0YXR1cyBvZiBV U0Igb3IgUENJIGRldmljZXMgdGhhdCBoYXZlIGJlZW4KKyAgICBkZXNjcmliZWQgaW4gdGhl IHJlZmVyZW5jZSBmaWxlCisgICogKipSZXF1aXJlbWVudHMqKjogTWFudWFsbHkgZGVzY3Jp YmUgdGhlIGRldmljZXMgdGhhdCBzaG91bGQgYmUgdGVzdGVkIGluIGEKKyAgICBZQU1MIHJl ZmVyZW5jZSBmaWxlIChzZWUgYGBkZXZpY2VzL3Byb2JlL2JvYXJkcy9nb29nbGUsc3BoZXJp b24ueWFtbGBgIGZvcgorICAgIGFuIGV4YW1wbGUpCisKKyogRXhpc3QgKGBgZGV2aWNlcy9l eGlzdGBgKQorCisgICogKipDb3ZlcmFnZSoqOiBQcmVzZW5jZSBvZiBhbGwgZGV2aWNlcwor ICAqICoqUmVxdWlyZW1lbnRzKio6IEdlbmVyYXRlIHRoZSByZWZlcmVuY2UgKHNlZSBgYGRl dmljZXMvZXhpc3QvUkVBRE1FLnJzdGBgCisgICAgZm9yIGRldGFpbHMpIG9uIGEga25vd24t Z29vZCBrZXJuZWwKKworVGhlcmVmb3JlLCB0aGUgc3VnZ2VzdGlvbiBpcyB0byBlbmFibGUg dGhlIGVycm9yIGxvZyBhbmQgZGV2aWNldHJlZSB0ZXN0cyBvbiBhbGwKKyhEVC1iYXNlZCkg cGxhdGZvcm1zLCBzaW5jZSB0aGV5IGRvbid0IGhhdmUgYW55IHJlcXVpcmVtZW50cy4gVGhl biB0byBncmVhdGx5CitpbXByb3ZlIGNvdmVyYWdlLCBnZW5lcmF0ZSB0aGUgcmVmZXJlbmNl IGZvciBlYWNoIHBsYXRmb3JtIGFuZCBlbmFibGUgdGhlIGV4aXN0Cit0ZXN0LiBUaGUgZGlz Y292ZXJhYmxlIGJ1cyB0ZXN0IGNhbiBiZSB1c2VkIHRvIHZlcmlmeSB0aGUgcHJvYmUgc3Rh dHVzIG9mCitzcGVjaWZpYyBVU0Igb3IgUENJIGRldmljZXMsIGJ1dCBpcyBwcm9iYWJseSBu b3Qgd29ydGggaXQgZm9yIG1vc3QgY2FzZXMuCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5n L3NlbGZ0ZXN0cy9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL01ha2VmaWxl CmluZGV4IGIzODE5OTk2NWY5OS4uM2NmYWQwNGQwYjVjIDEwMDY0NAotLS0gYS90b29scy90 ZXN0aW5nL3NlbGZ0ZXN0cy9NYWtlZmlsZQorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0 cy9NYWtlZmlsZQpAQCAtOTAsNyArOTAsNyBAQCBUQVJHRVRTICs9IHJ0YwogVEFSR0VUUyAr PSBydXN0CiBUQVJHRVRTICs9IHNlY2NvbXAKIFRBUkdFVFMgKz0gc2d4Ci1UQVJHRVRTICs9 IHNpZ2FsdHN0YWNrCitUQVJHRVRTICs9IHNpZ25hbAogVEFSR0VUUyArPSBzaXplCiBUQVJH RVRTICs9IHNwYXJjNjQKIFRBUkdFVFMgKz0gc3BsaWNlCmRpZmYgLS1naXQgYS90b29scy90 ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL2NtdF90ZXN0LmMgYi90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9yZXNjdHJsL2NtdF90ZXN0LmMKaW5kZXggMGMwNDUwODBkODA4Li4zYmJmMzA0 MmZiMDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvY210 X3Rlc3QuYworKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL2NtdF90ZXN0 LmMKQEAgLTk5LDE0ICs5OSwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX3Jlc3VsdHMoc3RydWN0 IHJlc2N0cmxfdmFsX3BhcmFtICpwYXJhbSwgc2l6ZV90IHNwYW4sIGludCBub19vZgogCQl9 CiAKIAkJLyogRmllbGQgMyBpcyBsbGMgb2NjIHJlc2MgdmFsdWUgKi8KLQkJaWYgKHJ1bnMg PiAwKQotCQkJc3VtX2xsY19vY2N1X3Jlc2MgKz0gc3RydG91bCh0b2tlbl9hcnJheVszXSwg TlVMTCwgMCk7CisJCXN1bV9sbGNfb2NjdV9yZXNjICs9IHN0cnRvdWwodG9rZW5fYXJyYXlb M10sIE5VTEwsIDApOwogCQlydW5zKys7CiAJfQogCWZjbG9zZShmcCk7CiAKIAlyZXR1cm4g c2hvd19yZXN1bHRzX2luZm8oc3VtX2xsY19vY2N1X3Jlc2MsIG5vX29mX2JpdHMsIHNwYW4s Ci0JCQkJIE1BWF9ESUZGLCBNQVhfRElGRl9QRVJDRU5ULCBydW5zIC0gMSwgdHJ1ZSk7CisJ CQkJIE1BWF9ESUZGLCBNQVhfRElGRl9QRVJDRU5ULCBydW5zLCB0cnVlKTsKIH0KIAogc3Rh dGljIHZvaWQgY210X3Rlc3RfY2xlYW51cCh2b2lkKQpAQCAtMTE2LDE1ICsxMTUsMTMgQEAg c3RhdGljIHZvaWQgY210X3Rlc3RfY2xlYW51cCh2b2lkKQogCiBzdGF0aWMgaW50IGNtdF9y dW5fdGVzdChjb25zdCBzdHJ1Y3QgcmVzY3RybF90ZXN0ICp0ZXN0LCBjb25zdCBzdHJ1Y3Qg dXNlcl9wYXJhbXMgKnVwYXJhbXMpCiB7Ci0JY29uc3QgY2hhciAqIGNvbnN0ICpjbWQgPSB1 cGFyYW1zLT5iZW5jaG1hcmtfY21kOwotCWNvbnN0IGNoYXIgKm5ld19jbWRbQkVOQ0hNQVJL X0FSR1NdOworCXN0cnVjdCBmaWxsX2J1Zl9wYXJhbSBmaWxsX2J1ZiA9IHt9OwogCXVuc2ln bmVkIGxvbmcgY2FjaGVfdG90YWxfc2l6ZSA9IDA7CiAJaW50IG4gPSB1cGFyYW1zLT5iaXRz ID8gOiA1OwogCXVuc2lnbmVkIGxvbmcgbG9uZ19tYXNrOwotCWNoYXIgKnNwYW5fc3RyID0g TlVMTDsKIAlpbnQgY291bnRfb2ZfYml0czsKIAlzaXplX3Qgc3BhbjsKLQlpbnQgcmV0LCBp OworCWludCByZXQ7CiAKIAlyZXQgPSBnZXRfZnVsbF9jYm0oIkwzIiwgJmxvbmdfbWFzayk7 CiAJaWYgKHJldCkKQEAgLTE1NSwzMiArMTUyLDI2IEBAIHN0YXRpYyBpbnQgY210X3J1bl90 ZXN0KGNvbnN0IHN0cnVjdCByZXNjdHJsX3Rlc3QgKnRlc3QsIGNvbnN0IHN0cnVjdCB1c2Vy X3BhcmFtCiAKIAlzcGFuID0gY2FjaGVfcG9ydGlvbl9zaXplKGNhY2hlX3RvdGFsX3NpemUs IHBhcmFtLm1hc2ssIGxvbmdfbWFzayk7CiAKLQlpZiAoc3RyY21wKGNtZFswXSwgImZpbGxf YnVmIikgPT0gMCkgewotCQkvKiBEdXBsaWNhdGUgdGhlIGNvbW1hbmQgdG8gYmUgYWJsZSB0 byByZXBsYWNlIHNwYW4gaW4gaXQgKi8KLQkJZm9yIChpID0gMDsgdXBhcmFtcy0+YmVuY2ht YXJrX2NtZFtpXTsgaSsrKQotCQkJbmV3X2NtZFtpXSA9IHVwYXJhbXMtPmJlbmNobWFya19j bWRbaV07Ci0JCW5ld19jbWRbaV0gPSBOVUxMOwotCi0JCXJldCA9IGFzcHJpbnRmKCZzcGFu X3N0ciwgIiV6dSIsIHNwYW4pOwotCQlpZiAocmV0IDwgMCkKLQkJCXJldHVybiAtMTsKLQkJ bmV3X2NtZFsxXSA9IHNwYW5fc3RyOwotCQljbWQgPSBuZXdfY21kOworCWlmICh1cGFyYW1z LT5maWxsX2J1ZikgeworCQlmaWxsX2J1Zi5idWZfc2l6ZSA9IHNwYW47CisJCWZpbGxfYnVm Lm1lbWZsdXNoID0gdXBhcmFtcy0+ZmlsbF9idWYtPm1lbWZsdXNoOworCQlwYXJhbS5maWxs X2J1ZiA9ICZmaWxsX2J1ZjsKKwl9IGVsc2UgaWYgKCF1cGFyYW1zLT5iZW5jaG1hcmtfY21k WzBdKSB7CisJCWZpbGxfYnVmLmJ1Zl9zaXplID0gc3BhbjsKKwkJZmlsbF9idWYubWVtZmx1 c2ggPSB0cnVlOworCQlwYXJhbS5maWxsX2J1ZiA9ICZmaWxsX2J1ZjsKIAl9CiAKIAlyZW1v dmUoUkVTVUxUX0ZJTEVfTkFNRSk7CiAKLQlyZXQgPSByZXNjdHJsX3ZhbCh0ZXN0LCB1cGFy YW1zLCBjbWQsICZwYXJhbSk7CisJcmV0ID0gcmVzY3RybF92YWwodGVzdCwgdXBhcmFtcywg JnBhcmFtKTsKIAlpZiAocmV0KQotCQlnb3RvIG91dDsKKwkJcmV0dXJuIHJldDsKIAogCXJl dCA9IGNoZWNrX3Jlc3VsdHMoJnBhcmFtLCBzcGFuLCBuKTsKIAlpZiAocmV0ICYmIChnZXRf dmVuZG9yKCkgPT0gQVJDSF9JTlRFTCkpCiAJCWtzZnRfcHJpbnRfbXNnKCJJbnRlbCBDTVQg bWF5IGJlIGluYWNjdXJhdGUgd2hlbiBTdWItTlVNQSBDbHVzdGVyaW5nIGlzIGVuYWJsZWQu IENoZWNrIEJJT1MgY29uZmlndXJhdGlvbi5cbiIpOwogCi1vdXQ6Ci0JZnJlZShzcGFuX3N0 cik7Ci0KIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9yZXNjdHJsL2ZpbGxfYnVmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9y ZXNjdHJsL2ZpbGxfYnVmLmMKaW5kZXggYWUxMjBmMTczNWMwLi4xOWEwMWE1MmRjMWEgMTAw NjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvZmlsbF9idWYuYwor KysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL2ZpbGxfYnVmLmMKQEAgLTg4 LDE4ICs4OCw2IEBAIHN0YXRpYyBpbnQgZmlsbF9vbmVfc3Bhbl9yZWFkKHVuc2lnbmVkIGNo YXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9zaXplKQogCXJldHVybiBzdW07CiB9CiAKLXN0YXRpYyB2 b2lkIGZpbGxfb25lX3NwYW5fd3JpdGUodW5zaWduZWQgY2hhciAqYnVmLCBzaXplX3QgYnVm X3NpemUpCi17Ci0JdW5zaWduZWQgY2hhciAqZW5kX3B0ciA9IGJ1ZiArIGJ1Zl9zaXplOwot CXVuc2lnbmVkIGNoYXIgKnA7Ci0KLQlwID0gYnVmOwotCXdoaWxlIChwIDwgZW5kX3B0cikg ewotCQkqcCA9ICcxJzsKLQkJcCArPSAoQ0xfU0laRSAvIDIpOwotCX0KLX0KLQogdm9pZCBm aWxsX2NhY2hlX3JlYWQodW5zaWduZWQgY2hhciAqYnVmLCBzaXplX3QgYnVmX3NpemUsIGJv b2wgb25jZSkKIHsKIAlpbnQgcmV0ID0gMDsKQEAgLTExNCwyMCArMTAyLDExIEBAIHZvaWQg ZmlsbF9jYWNoZV9yZWFkKHVuc2lnbmVkIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9zaXplLCBi b29sIG9uY2UpCiAJKnZhbHVlX3NpbmsgPSByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGZpbGxf Y2FjaGVfd3JpdGUodW5zaWduZWQgY2hhciAqYnVmLCBzaXplX3QgYnVmX3NpemUsIGJvb2wg b25jZSkKLXsKLQl3aGlsZSAoMSkgewotCQlmaWxsX29uZV9zcGFuX3dyaXRlKGJ1ZiwgYnVm X3NpemUpOwotCQlpZiAob25jZSkKLQkJCWJyZWFrOwotCX0KLX0KLQotdW5zaWduZWQgY2hh ciAqYWxsb2NfYnVmZmVyKHNpemVfdCBidWZfc2l6ZSwgaW50IG1lbWZsdXNoKQordW5zaWdu ZWQgY2hhciAqYWxsb2NfYnVmZmVyKHNpemVfdCBidWZfc2l6ZSwgYm9vbCBtZW1mbHVzaCkK IHsKIAl2b2lkICpidWYgPSBOVUxMOwogCXVpbnQ2NF90ICpwNjQ7Ci0Jc2l6ZV90IHM2NDsK Kwlzc2l6ZV90IHM2NDsKIAlpbnQgcmV0OwogCiAJcmV0ID0gcG9zaXhfbWVtYWxpZ24oJmJ1 ZiwgUEFHRV9TSVpFLCBidWZfc2l6ZSk7CkBAIC0xNTEsMTkgKzEzMCwxNSBAQCB1bnNpZ25l ZCBjaGFyICphbGxvY19idWZmZXIoc2l6ZV90IGJ1Zl9zaXplLCBpbnQgbWVtZmx1c2gpCiAJ cmV0dXJuIGJ1ZjsKIH0KIAotaW50IHJ1bl9maWxsX2J1ZihzaXplX3QgYnVmX3NpemUsIGlu dCBtZW1mbHVzaCwgaW50IG9wLCBib29sIG9uY2UpCitzc2l6ZV90IGdldF9maWxsX2J1Zl9z aXplKGludCBjcHVfbm8sIGNvbnN0IGNoYXIgKmNhY2hlX3R5cGUpCiB7Ci0JdW5zaWduZWQg Y2hhciAqYnVmOwotCi0JYnVmID0gYWxsb2NfYnVmZmVyKGJ1Zl9zaXplLCBtZW1mbHVzaCk7 Ci0JaWYgKCFidWYpCi0JCXJldHVybiAtMTsKKwl1bnNpZ25lZCBsb25nIGNhY2hlX3RvdGFs X3NpemUgPSAwOworCWludCByZXQ7CiAKLQlpZiAob3AgPT0gMCkKLQkJZmlsbF9jYWNoZV9y ZWFkKGJ1ZiwgYnVmX3NpemUsIG9uY2UpOwotCWVsc2UKLQkJZmlsbF9jYWNoZV93cml0ZShi dWYsIGJ1Zl9zaXplLCBvbmNlKTsKLQlmcmVlKGJ1Zik7CisJcmV0ID0gZ2V0X2NhY2hlX3Np emUoY3B1X25vLCBjYWNoZV90eXBlLCAmY2FjaGVfdG90YWxfc2l6ZSk7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKIAotCXJldHVybiAwOworCXJldHVybiBjYWNoZV90b3RhbF9zaXpl ICogMiA+IE1JTklNVU1fU1BBTiA/CisJCQljYWNoZV90b3RhbF9zaXplICogMiA6IE1JTklN VU1fU1BBTjsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0 cmwvbWJhX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvbWJhX3Rl c3QuYwppbmRleCBhYjg0OTZhNDkyNWIuLjUzNmQ5MDg5ZDJmNiAxMDA2NDQKLS0tIGEvdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9tYmFfdGVzdC5jCisrKyBiL3Rvb2xzL3Rl c3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvbWJhX3Rlc3QuYwpAQCAtMjEsNyArMjEsNyBAQCBz dGF0aWMgaW50IG1iYV9pbml0KGNvbnN0IHN0cnVjdCByZXNjdHJsX3ZhbF9wYXJhbSAqcGFy YW0sIGludCBkb21haW5faWQpCiB7CiAJaW50IHJldDsKIAotCXJldCA9IGluaXRpYWxpemVf bWVtX2J3X2ltYygpOworCXJldCA9IGluaXRpYWxpemVfcmVhZF9tZW1fYndfaW1jKCk7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMzksNyArMzksOCBAQCBzdGF0aWMgaW50 IG1iYV9zZXR1cChjb25zdCBzdHJ1Y3QgcmVzY3RybF90ZXN0ICp0ZXN0LAogCQkgICAgIGNv bnN0IHN0cnVjdCB1c2VyX3BhcmFtcyAqdXBhcmFtcywKIAkJICAgICBzdHJ1Y3QgcmVzY3Ry bF92YWxfcGFyYW0gKnApCiB7Ci0Jc3RhdGljIGludCBydW5zX3Blcl9hbGxvY2F0aW9uLCBh bGxvY2F0aW9uID0gMTAwOworCXN0YXRpYyB1bnNpZ25lZCBpbnQgYWxsb2NhdGlvbiA9IEFM TE9DQVRJT05fTUlOOworCXN0YXRpYyBpbnQgcnVuc19wZXJfYWxsb2NhdGlvbjsKIAljaGFy IGFsbG9jYXRpb25fc3RyWzY0XTsKIAlpbnQgcmV0OwogCkBAIC01MCw3ICs1MSw3IEBAIHN0 YXRpYyBpbnQgbWJhX3NldHVwKGNvbnN0IHN0cnVjdCByZXNjdHJsX3Rlc3QgKnRlc3QsCiAJ aWYgKHJ1bnNfcGVyX2FsbG9jYXRpb24rKyAhPSAwKQogCQlyZXR1cm4gMDsKIAotCWlmIChh bGxvY2F0aW9uIDwgQUxMT0NBVElPTl9NSU4gfHwgYWxsb2NhdGlvbiA+IEFMTE9DQVRJT05f TUFYKQorCWlmIChhbGxvY2F0aW9uID4gQUxMT0NBVElPTl9NQVgpCiAJCXJldHVybiBFTkRf T0ZfVEVTVFM7CiAKIAlzcHJpbnRmKGFsbG9jYXRpb25fc3RyLCAiJWQiLCBhbGxvY2F0aW9u KTsKQEAgLTU5LDcgKzYwLDcgQEAgc3RhdGljIGludCBtYmFfc2V0dXAoY29uc3Qgc3RydWN0 IHJlc2N0cmxfdGVzdCAqdGVzdCwKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKIAot CWFsbG9jYXRpb24gLT0gQUxMT0NBVElPTl9TVEVQOworCWFsbG9jYXRpb24gKz0gQUxMT0NB VElPTl9TVEVQOwogCiAJcmV0dXJuIDA7CiB9CkBAIC02NywxMyArNjgsMTQgQEAgc3RhdGlj IGludCBtYmFfc2V0dXAoY29uc3Qgc3RydWN0IHJlc2N0cmxfdGVzdCAqdGVzdCwKIHN0YXRp YyBpbnQgbWJhX21lYXN1cmUoY29uc3Qgc3RydWN0IHVzZXJfcGFyYW1zICp1cGFyYW1zLAog CQkgICAgICAgc3RydWN0IHJlc2N0cmxfdmFsX3BhcmFtICpwYXJhbSwgcGlkX3QgYm1fcGlk KQogewotCXJldHVybiBtZWFzdXJlX21lbV9idyh1cGFyYW1zLCBwYXJhbSwgYm1fcGlkLCAi cmVhZHMiKTsKKwlyZXR1cm4gbWVhc3VyZV9yZWFkX21lbV9idyh1cGFyYW1zLCBwYXJhbSwg Ym1fcGlkKTsKIH0KIAogc3RhdGljIGJvb2wgc2hvd19tYmFfaW5mbyh1bnNpZ25lZCBsb25n ICpid19pbWMsIHVuc2lnbmVkIGxvbmcgKmJ3X3Jlc2MpCiB7Ci0JaW50IGFsbG9jYXRpb24s IHJ1bnM7CisJdW5zaWduZWQgaW50IGFsbG9jYXRpb247CiAJYm9vbCByZXQgPSBmYWxzZTsK KwlpbnQgcnVuczsKIAogCWtzZnRfcHJpbnRfbXNnKCJSZXN1bHRzIGFyZSBkaXNwbGF5ZWQg aW4gKE1CKVxuIik7CiAJLyogTWVtb3J5IGJhbmR3aWR0aCBmcm9tIDEwMCUgZG93biB0byAx MCUgKi8KQEAgLTg0LDE4ICs4NiwyMSBAQCBzdGF0aWMgYm9vbCBzaG93X21iYV9pbmZvKHVu c2lnbmVkIGxvbmcgKmJ3X2ltYywgdW5zaWduZWQgbG9uZyAqYndfcmVzYykKIAkJaW50IGF2 Z19kaWZmX3BlcjsKIAkJZmxvYXQgYXZnX2RpZmY7CiAKLQkJLyoKLQkJICogVGhlIGZpcnN0 IHJ1biBpcyBkaXNjYXJkZWQgZHVlIHRvIGluYWNjdXJhdGUgdmFsdWUgZnJvbQotCQkgKiBw aGFzZSB0cmFuc2l0aW9uLgotCQkgKi8KLQkJZm9yIChydW5zID0gTlVNX09GX1JVTlMgKiBh bGxvY2F0aW9uICsgMTsKKwkJZm9yIChydW5zID0gTlVNX09GX1JVTlMgKiBhbGxvY2F0aW9u OwogCQkgICAgIHJ1bnMgPCBOVU1fT0ZfUlVOUyAqIGFsbG9jYXRpb24gKyBOVU1fT0ZfUlVO UyA7IHJ1bnMrKykgewogCQkJc3VtX2J3X2ltYyArPSBid19pbWNbcnVuc107CiAJCQlzdW1f YndfcmVzYyArPSBid19yZXNjW3J1bnNdOwogCQl9CiAKLQkJYXZnX2J3X2ltYyA9IHN1bV9i d19pbWMgLyAoTlVNX09GX1JVTlMgLSAxKTsKLQkJYXZnX2J3X3Jlc2MgPSBzdW1fYndfcmVz YyAvIChOVU1fT0ZfUlVOUyAtIDEpOworCQlhdmdfYndfaW1jID0gc3VtX2J3X2ltYyAvIE5V TV9PRl9SVU5TOworCQlhdmdfYndfcmVzYyA9IHN1bV9id19yZXNjIC8gTlVNX09GX1JVTlM7 CisJCWlmIChhdmdfYndfaW1jIDwgVEhST1RUTEVfVEhSRVNIT0xEIHx8IGF2Z19id19yZXNj IDwgVEhST1RUTEVfVEhSRVNIT0xEKSB7CisJCQlrc2Z0X3ByaW50X21zZygiQmFuZHdpZHRo IGJlbG93IHRocmVzaG9sZCAoJWQgTWlCKS4gRHJvcHBpbmcgcmVzdWx0cyBmcm9tIE1CQSBz Y2hlbWF0YSAldS5cbiIsCisJCQkJICAgICAgIFRIUk9UVExFX1RIUkVTSE9MRCwKKwkJCQkg ICAgICAgQUxMT0NBVElPTl9NSU4gKyBBTExPQ0FUSU9OX1NURVAgKiBhbGxvY2F0aW9uKTsK KwkJCWNvbnRpbnVlOworCQl9CisKIAkJYXZnX2RpZmYgPSAoZmxvYXQpbGFicyhhdmdfYndf cmVzYyAtIGF2Z19id19pbWMpIC8gYXZnX2J3X2ltYzsKIAkJYXZnX2RpZmZfcGVyID0gKGlu dCkoYXZnX2RpZmYgKiAxMDApOwogCkBAIC0xMDMsNyArMTA4LDcgQEAgc3RhdGljIGJvb2wg c2hvd19tYmFfaW5mbyh1bnNpZ25lZCBsb25nICpid19pbWMsIHVuc2lnbmVkIGxvbmcgKmJ3 X3Jlc2MpCiAJCQkgICAgICAgYXZnX2RpZmZfcGVyID4gTUFYX0RJRkZfUEVSQ0VOVCA/CiAJ CQkgICAgICAgIkZhaWw6IiA6ICJQYXNzOiIsCiAJCQkgICAgICAgTUFYX0RJRkZfUEVSQ0VO VCwKLQkJCSAgICAgICBBTExPQ0FUSU9OX01BWCAtIEFMTE9DQVRJT05fU1RFUCAqIGFsbG9j YXRpb24pOworCQkJICAgICAgIEFMTE9DQVRJT05fTUlOICsgQUxMT0NBVElPTl9TVEVQICog YWxsb2NhdGlvbik7CiAKIAkJa3NmdF9wcmludF9tc2coImF2Z19kaWZmX3BlcjogJWQlJVxu IiwgYXZnX2RpZmZfcGVyKTsKIAkJa3NmdF9wcmludF9tc2coImF2Z19id19pbWM6ICVsdVxu IiwgYXZnX2J3X2ltYyk7CkBAIC0xMjIsOCArMTI3LDkgQEAgc3RhdGljIGJvb2wgc2hvd19t YmFfaW5mbyh1bnNpZ25lZCBsb25nICpid19pbWMsIHVuc2lnbmVkIGxvbmcgKmJ3X3Jlc2Mp CiAKIHN0YXRpYyBpbnQgY2hlY2tfcmVzdWx0cyh2b2lkKQogeworCXVuc2lnbmVkIGxvbmcg YndfcmVzY1tOVU1fT0ZfUlVOUyAqIEFMTE9DQVRJT05fTUFYIC8gQUxMT0NBVElPTl9TVEVQ XTsKKwl1bnNpZ25lZCBsb25nIGJ3X2ltY1tOVU1fT0ZfUlVOUyAqIEFMTE9DQVRJT05fTUFY IC8gQUxMT0NBVElPTl9TVEVQXTsKIAljaGFyICp0b2tlbl9hcnJheVs4XSwgb3V0cHV0W10g PSBSRVNVTFRfRklMRV9OQU1FLCB0ZW1wWzUxMl07Ci0JdW5zaWduZWQgbG9uZyBid19pbWNb MTAyNF0sIGJ3X3Jlc2NbMTAyNF07CiAJaW50IHJ1bnM7CiAJRklMRSAqZnA7CiAKQEAgLTE3 MCwxMSArMTc2LDI3IEBAIHN0YXRpYyBpbnQgbWJhX3J1bl90ZXN0KGNvbnN0IHN0cnVjdCBy ZXNjdHJsX3Rlc3QgKnRlc3QsIGNvbnN0IHN0cnVjdCB1c2VyX3BhcmFtCiAJCS5zZXR1cAkJ PSBtYmFfc2V0dXAsCiAJCS5tZWFzdXJlCT0gbWJhX21lYXN1cmUsCiAJfTsKKwlzdHJ1Y3Qg ZmlsbF9idWZfcGFyYW0gZmlsbF9idWYgPSB7fTsKIAlpbnQgcmV0OwogCiAJcmVtb3ZlKFJF U1VMVF9GSUxFX05BTUUpOwogCi0JcmV0ID0gcmVzY3RybF92YWwodGVzdCwgdXBhcmFtcywg dXBhcmFtcy0+YmVuY2htYXJrX2NtZCwgJnBhcmFtKTsKKwlpZiAodXBhcmFtcy0+ZmlsbF9i dWYpIHsKKwkJZmlsbF9idWYuYnVmX3NpemUgPSB1cGFyYW1zLT5maWxsX2J1Zi0+YnVmX3Np emU7CisJCWZpbGxfYnVmLm1lbWZsdXNoID0gdXBhcmFtcy0+ZmlsbF9idWYtPm1lbWZsdXNo OworCQlwYXJhbS5maWxsX2J1ZiA9ICZmaWxsX2J1ZjsKKwl9IGVsc2UgaWYgKCF1cGFyYW1z LT5iZW5jaG1hcmtfY21kWzBdKSB7CisJCXNzaXplX3QgYnVmX3NpemU7CisKKwkJYnVmX3Np emUgPSBnZXRfZmlsbF9idWZfc2l6ZSh1cGFyYW1zLT5jcHUsICJMMyIpOworCQlpZiAoYnVm X3NpemUgPCAwKQorCQkJcmV0dXJuIGJ1Zl9zaXplOworCQlmaWxsX2J1Zi5idWZfc2l6ZSA9 IGJ1Zl9zaXplOworCQlmaWxsX2J1Zi5tZW1mbHVzaCA9IHRydWU7CisJCXBhcmFtLmZpbGxf YnVmID0gJmZpbGxfYnVmOworCX0KKworCXJldCA9IHJlc2N0cmxfdmFsKHRlc3QsIHVwYXJh bXMsICZwYXJhbSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApkaWZmIC0tZ2l0IGEv dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9tYm1fdGVzdC5jIGIvdG9vbHMvdGVz dGluZy9zZWxmdGVzdHMvcmVzY3RybC9tYm1fdGVzdC5jCmluZGV4IDZiNWEzYjUyZDg2MS4u MzE1YjJlZjNiM2JjIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNj dHJsL21ibV90ZXN0LmMKKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9t Ym1fdGVzdC5jCkBAIC0yMiwxNyArMjIsMTMgQEAgc2hvd19id19pbmZvKHVuc2lnbmVkIGxv bmcgKmJ3X2ltYywgdW5zaWduZWQgbG9uZyAqYndfcmVzYywgc2l6ZV90IHNwYW4pCiAJaW50 IHJ1bnMsIHJldCwgYXZnX2RpZmZfcGVyOwogCWZsb2F0IGF2Z19kaWZmID0gMDsKIAotCS8q Ci0JICogRGlzY2FyZCB0aGUgZmlyc3QgdmFsdWUgd2hpY2ggaXMgaW5hY2N1cmF0ZSBkdWUg dG8gbW9uaXRvcmluZyBzZXR1cAotCSAqIHRyYW5zaXRpb24gcGhhc2UuCi0JICovCi0JZm9y IChydW5zID0gMTsgcnVucyA8IE5VTV9PRl9SVU5TIDsgcnVucysrKSB7CisJZm9yIChydW5z ID0gMDsgcnVucyA8IE5VTV9PRl9SVU5TOyBydW5zKyspIHsKIAkJc3VtX2J3X2ltYyArPSBi d19pbWNbcnVuc107CiAJCXN1bV9id19yZXNjICs9IGJ3X3Jlc2NbcnVuc107CiAJfQogCi0J YXZnX2J3X2ltYyA9IHN1bV9id19pbWMgLyA0OwotCWF2Z19id19yZXNjID0gc3VtX2J3X3Jl c2MgLyA0OworCWF2Z19id19pbWMgPSBzdW1fYndfaW1jIC8gTlVNX09GX1JVTlM7CisJYXZn X2J3X3Jlc2MgPSBzdW1fYndfcmVzYyAvIE5VTV9PRl9SVU5TOwogCWF2Z19kaWZmID0gKGZs b2F0KWxhYnMoYXZnX2J3X3Jlc2MgLSBhdmdfYndfaW1jKSAvIGF2Z19id19pbWM7CiAJYXZn X2RpZmZfcGVyID0gKGludCkoYXZnX2RpZmYgKiAxMDApOwogCkBAIC00MCw3ICszNiw4IEBA IHNob3dfYndfaW5mbyh1bnNpZ25lZCBsb25nICpid19pbWMsIHVuc2lnbmVkIGxvbmcgKmJ3 X3Jlc2MsIHNpemVfdCBzcGFuKQogCWtzZnRfcHJpbnRfbXNnKCIlcyBDaGVjayBNQk0gZGlm ZiB3aXRoaW4gJWQlJVxuIiwKIAkJICAgICAgIHJldCA/ICJGYWlsOiIgOiAiUGFzczoiLCBN QVhfRElGRl9QRVJDRU5UKTsKIAlrc2Z0X3ByaW50X21zZygiYXZnX2RpZmZfcGVyOiAlZCUl XG4iLCBhdmdfZGlmZl9wZXIpOwotCWtzZnRfcHJpbnRfbXNnKCJTcGFuIChNQik6ICV6dVxu Iiwgc3BhbiAvIE1CKTsKKwlpZiAoc3BhbikKKwkJa3NmdF9wcmludF9tc2coIlNwYW4gKE1C KTogJXp1XG4iLCBzcGFuIC8gTUIpOwogCWtzZnRfcHJpbnRfbXNnKCJhdmdfYndfaW1jOiAl bHVcbiIsIGF2Z19id19pbWMpOwogCWtzZnRfcHJpbnRfbXNnKCJhdmdfYndfcmVzYzogJWx1 XG4iLCBhdmdfYndfcmVzYyk7CiAKQEAgLTkwLDcgKzg3LDcgQEAgc3RhdGljIGludCBtYm1f aW5pdChjb25zdCBzdHJ1Y3QgcmVzY3RybF92YWxfcGFyYW0gKnBhcmFtLCBpbnQgZG9tYWlu X2lkKQogewogCWludCByZXQ7CiAKLQlyZXQgPSBpbml0aWFsaXplX21lbV9id19pbWMoKTsK KwlyZXQgPSBpbml0aWFsaXplX3JlYWRfbWVtX2J3X2ltYygpOwogCWlmIChyZXQpCiAJCXJl dHVybiByZXQ7CiAKQEAgLTEyMSw3ICsxMTgsNyBAQCBzdGF0aWMgaW50IG1ibV9zZXR1cChj b25zdCBzdHJ1Y3QgcmVzY3RybF90ZXN0ICp0ZXN0LAogc3RhdGljIGludCBtYm1fbWVhc3Vy ZShjb25zdCBzdHJ1Y3QgdXNlcl9wYXJhbXMgKnVwYXJhbXMsCiAJCSAgICAgICBzdHJ1Y3Qg cmVzY3RybF92YWxfcGFyYW0gKnBhcmFtLCBwaWRfdCBibV9waWQpCiB7Ci0JcmV0dXJuIG1l YXN1cmVfbWVtX2J3KHVwYXJhbXMsIHBhcmFtLCBibV9waWQsICJyZWFkcyIpOworCXJldHVy biBtZWFzdXJlX3JlYWRfbWVtX2J3KHVwYXJhbXMsIHBhcmFtLCBibV9waWQpOwogfQogCiBz dGF0aWMgdm9pZCBtYm1fdGVzdF9jbGVhbnVwKHZvaWQpCkBAIC0xMzgsMTUgKzEzNSwzMSBA QCBzdGF0aWMgaW50IG1ibV9ydW5fdGVzdChjb25zdCBzdHJ1Y3QgcmVzY3RybF90ZXN0ICp0 ZXN0LCBjb25zdCBzdHJ1Y3QgdXNlcl9wYXJhbQogCQkuc2V0dXAJCT0gbWJtX3NldHVwLAog CQkubWVhc3VyZQk9IG1ibV9tZWFzdXJlLAogCX07CisJc3RydWN0IGZpbGxfYnVmX3BhcmFt IGZpbGxfYnVmID0ge307CiAJaW50IHJldDsKIAogCXJlbW92ZShSRVNVTFRfRklMRV9OQU1F KTsKIAotCXJldCA9IHJlc2N0cmxfdmFsKHRlc3QsIHVwYXJhbXMsIHVwYXJhbXMtPmJlbmNo bWFya19jbWQsICZwYXJhbSk7CisJaWYgKHVwYXJhbXMtPmZpbGxfYnVmKSB7CisJCWZpbGxf YnVmLmJ1Zl9zaXplID0gdXBhcmFtcy0+ZmlsbF9idWYtPmJ1Zl9zaXplOworCQlmaWxsX2J1 Zi5tZW1mbHVzaCA9IHVwYXJhbXMtPmZpbGxfYnVmLT5tZW1mbHVzaDsKKwkJcGFyYW0uZmls bF9idWYgPSAmZmlsbF9idWY7CisJfSBlbHNlIGlmICghdXBhcmFtcy0+YmVuY2htYXJrX2Nt ZFswXSkgeworCQlzc2l6ZV90IGJ1Zl9zaXplOworCisJCWJ1Zl9zaXplID0gZ2V0X2ZpbGxf YnVmX3NpemUodXBhcmFtcy0+Y3B1LCAiTDMiKTsKKwkJaWYgKGJ1Zl9zaXplIDwgMCkKKwkJ CXJldHVybiBidWZfc2l6ZTsKKwkJZmlsbF9idWYuYnVmX3NpemUgPSBidWZfc2l6ZTsKKwkJ ZmlsbF9idWYubWVtZmx1c2ggPSB0cnVlOworCQlwYXJhbS5maWxsX2J1ZiA9ICZmaWxsX2J1 ZjsKKwl9CisKKwlyZXQgPSByZXNjdHJsX3ZhbCh0ZXN0LCB1cGFyYW1zLCAmcGFyYW0pOwog CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBjaGVja19yZXN1bHRzKERFRkFV TFRfU1BBTik7CisJcmV0ID0gY2hlY2tfcmVzdWx0cyhwYXJhbS5maWxsX2J1ZiA/IHBhcmFt LmZpbGxfYnVmLT5idWZfc2l6ZSA6IDApOwogCWlmIChyZXQgJiYgKGdldF92ZW5kb3IoKSA9 PSBBUkNIX0lOVEVMKSkKIAkJa3NmdF9wcmludF9tc2coIkludGVsIE1CTSBtYXkgYmUgaW5h Y2N1cmF0ZSB3aGVuIFN1Yi1OVU1BIENsdXN0ZXJpbmcgaXMgZW5hYmxlZC4gQ2hlY2sgQklP UyBjb25maWd1cmF0aW9uLlxuIik7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2Vs ZnRlc3RzL3Jlc2N0cmwvcmVzY3RybC5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmVz Y3RybC9yZXNjdHJsLmgKaW5kZXggMmRkYTU2MDg0NTg4Li5kYWIxOTUzZmM3YTAgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvcmVzY3RybC5oCisrKyBi L3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvcmVzY3RybC5oCkBAIC00MSwxOCAr NDEsNDggQEAKIAogI2RlZmluZSBCRU5DSE1BUktfQVJHUwkJNjQKIAotI2RlZmluZSBERUZB VUxUX1NQQU4JCSgyNTAgKiBNQikKKyNkZWZpbmUgTUlOSU1VTV9TUEFOCQkoMjUwICogTUIp CisKKy8qCisgKiBNZW1vcnkgYmFuZHdpZHRoIChpbiBNaUIpIGJlbG93IHdoaWNoIHRoZSBi YW5kd2lkdGggY29tcGFyaXNvbnMKKyAqIGJldHdlZW4gaU1DIGFuZCByZXNjdHJsIGFyZSBj b25zaWRlcmVkIHVucmVsaWFibGUuIEZvciBleGFtcGxlIFJBUworICogZmVhdHVyZXMgb3Ig bWVtb3J5IHBlcmZvcm1hbmNlIGZlYXR1cmVzIHRoYXQgZ2VuZXJhdGUgbWVtb3J5IHRyYWZm aWMKKyAqIG1heSBkcml2ZSBhY2Nlc3NlcyB0aGF0IGFyZSBjb3VudGVkIGRpZmZlcmVudGx5 IGJ5IHBlcmZvcm1hbmNlIGNvdW50ZXJzCisgKiBhbmQgTUJNIHJlc3BlY3RpdmVseSwgZm9y IGluc3RhbmNlIGdlbmVyYXRpbmcgIm92ZXJoZWFkIiB0cmFmZmljIHdoaWNoCisgKiBpcyBu b3QgY291bnRlZCBhZ2FpbnN0IGFueSBzcGVjaWZpYyBSTUlELgorICovCisjZGVmaW5lIFRI Uk9UVExFX1RIUkVTSE9MRAk3NTAKKworLyoKKyAqIGZpbGxfYnVmX3BhcmFtOgkiZmlsbF9i dWYiIGJlbmNobWFyayBwYXJhbWV0ZXJzCisgKiBAYnVmX3NpemU6CQlTaXplIChpbiBieXRl cykgb2YgYnVmZmVyIHVzZWQgaW4gYmVuY2htYXJrLgorICoJCQkiZmlsbF9idWYiIGFsbG9j YXRlcyBhbmQgaW5pdGlhbGl6ZXMgYnVmZmVyIG9mCisgKgkJCUBidWZfc2l6ZS4gVXNlciBj YW4gY2hhbmdlIHZhbHVlIHZpYSBjb21tYW5kIGxpbmUuCisgKiBAbWVtZmx1c2g6CQlJZiBm YWxzZSB0aGUgYnVmZmVyIHdpbGwgbm90IGJlIGZsdXNoZWQgYWZ0ZXIKKyAqCQkJYWxsb2Nh dGlvbiBhbmQgaW5pdGlhbGl6YXRpb24sIG90aGVyd2lzZSB0aGUKKyAqCQkJYnVmZmVyIHdp bGwgYmUgZmx1c2hlZC4gVXNlciBjYW4gY2hhbmdlIHZhbHVlIHZpYQorICoJCQljb21tYW5k IGxpbmUgKHZpYSBpbnRlZ2VycyB3aXRoIDAgaW50ZXJwcmV0ZWQgYXMKKyAqCQkJZmFsc2Ug YW5kIGFueXRoaW5nIGVsc2UgYXMgdHJ1ZSkuCisgKi8KK3N0cnVjdCBmaWxsX2J1Zl9wYXJh bSB7CisJc2l6ZV90CQlidWZfc2l6ZTsKKwlib29sCQltZW1mbHVzaDsKK307CiAKIC8qCiAg KiB1c2VyX3BhcmFtczoJCVVzZXIgc3VwcGxpZWQgcGFyYW1ldGVycwogICogQGNwdToJCUNQ VSBudW1iZXIgdG8gd2hpY2ggdGhlIGJlbmNobWFyayB3aWxsIGJlIGJvdW5kIHRvCiAgKiBA Yml0czoJCU51bWJlciBvZiBiaXRzIHVzZWQgZm9yIGNhY2hlIGFsbG9jYXRpb24gc2l6ZQog ICogQGJlbmNobWFya19jbWQ6CUJlbmNobWFyayBjb21tYW5kIHRvIHJ1biBkdXJpbmcgKHNv bWUgb2YgdGhlKSB0ZXN0cworICogQGZpbGxfYnVmOgkJUG9pbnRlciB0byB1c2VyIHByb3Zp ZGVkIHBhcmFtZXRlcnMgZm9yICJmaWxsX2J1ZiIsCisgKgkJCU5VTEwgaWYgdXNlciBkaWQg bm90IHByb3ZpZGUgcGFyYW1ldGVycyBhbmQgdGVzdAorICoJCQlzcGVjaWZpYyBkZWZhdWx0 cyBzaG91bGQgYmUgdXNlZC4KICAqLwogc3RydWN0IHVzZXJfcGFyYW1zIHsKIAlpbnQgY3B1 OwogCWludCBiaXRzOwogCWNvbnN0IGNoYXIgKmJlbmNobWFya19jbWRbQkVOQ0hNQVJLX0FS R1NdOworCWNvbnN0IHN0cnVjdCBmaWxsX2J1Zl9wYXJhbSAqZmlsbF9idWY7CiB9OwogCiAv KgpAQCAtODcsMjEgKzExNywyOSBAQCBzdHJ1Y3QgcmVzY3RybF90ZXN0IHsKICAqIEBpbml0 OgkJQ2FsbGJhY2sgZnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSB0ZXN0IGVudmlyb25tZW50CiAg KiBAc2V0dXA6CQlDYWxsYmFjayBmdW5jdGlvbiB0byBzZXR1cCBwZXIgdGVzdCBydW4gZW52 aXJvbm1lbnQKICAqIEBtZWFzdXJlOgkJQ2FsbGJhY2sgdGhhdCBwZXJmb3JtcyB0aGUgbWVh c3VyZW1lbnQgKGEgc2luZ2xlIHRlc3QpCisgKiBAZmlsbF9idWY6CQlQYXJhbWV0ZXJzIGZv ciBkZWZhdWx0ICJmaWxsX2J1ZiIgYmVuY2htYXJrLgorICoJCQlJbml0aWFsaXplZCB3aXRo IHVzZXIgcHJvdmlkZWQgcGFyYW1ldGVycywgcG9zc2libHkKKyAqCQkJYWRhcHRlZCB0byBi ZSByZWxldmFudCB0byB0aGUgdGVzdC4gSWYgdXNlciBkb2VzCisgKgkJCW5vdCBwcm92aWRl IHBhcmFtZXRlcnMgZm9yICJmaWxsX2J1ZiIgbm9yIGEKKyAqCQkJcmVwbGFjZW1lbnQgYmVu Y2htYXJrIHRoZW4gaW5pdGlhbGl6ZWQgd2l0aCBkZWZhdWx0cworICoJCQlhcHByb3ByaWF0 ZSBmb3IgdGVzdC4gTlVMTCBpZiB1c2VyIHByb3ZpZGVkCisgKgkJCWJlbmNobWFyay4KICAq Lwogc3RydWN0IHJlc2N0cmxfdmFsX3BhcmFtIHsKLQljb25zdCBjaGFyCSpjdHJsZ3JwOwot CWNvbnN0IGNoYXIJKm1vbmdycDsKLQljaGFyCQlmaWxlbmFtZVs2NF07Ci0JdW5zaWduZWQg bG9uZwltYXNrOwotCWludAkJbnVtX29mX3J1bnM7Ci0JaW50CQkoKmluaXQpKGNvbnN0IHN0 cnVjdCByZXNjdHJsX3ZhbF9wYXJhbSAqcGFyYW0sCi0JCQkJaW50IGRvbWFpbl9pZCk7Ci0J aW50CQkoKnNldHVwKShjb25zdCBzdHJ1Y3QgcmVzY3RybF90ZXN0ICp0ZXN0LAotCQkJCSBj b25zdCBzdHJ1Y3QgdXNlcl9wYXJhbXMgKnVwYXJhbXMsCi0JCQkJIHN0cnVjdCByZXNjdHJs X3ZhbF9wYXJhbSAqcGFyYW0pOwotCWludAkJKCptZWFzdXJlKShjb25zdCBzdHJ1Y3QgdXNl cl9wYXJhbXMgKnVwYXJhbXMsCi0JCQkJICAgc3RydWN0IHJlc2N0cmxfdmFsX3BhcmFtICpw YXJhbSwKLQkJCQkgICBwaWRfdCBibV9waWQpOworCWNvbnN0IGNoYXIJCSpjdHJsZ3JwOwor CWNvbnN0IGNoYXIJCSptb25ncnA7CisJY2hhcgkJCWZpbGVuYW1lWzY0XTsKKwl1bnNpZ25l ZCBsb25nCQltYXNrOworCWludAkJCW51bV9vZl9ydW5zOworCWludAkJCSgqaW5pdCkoY29u c3Qgc3RydWN0IHJlc2N0cmxfdmFsX3BhcmFtICpwYXJhbSwKKwkJCQkJaW50IGRvbWFpbl9p ZCk7CisJaW50CQkJKCpzZXR1cCkoY29uc3Qgc3RydWN0IHJlc2N0cmxfdGVzdCAqdGVzdCwK KwkJCQkJIGNvbnN0IHN0cnVjdCB1c2VyX3BhcmFtcyAqdXBhcmFtcywKKwkJCQkJIHN0cnVj dCByZXNjdHJsX3ZhbF9wYXJhbSAqcGFyYW0pOworCWludAkJCSgqbWVhc3VyZSkoY29uc3Qg c3RydWN0IHVzZXJfcGFyYW1zICp1cGFyYW1zLAorCQkJCQkgICBzdHJ1Y3QgcmVzY3RybF92 YWxfcGFyYW0gKnBhcmFtLAorCQkJCQkgICBwaWRfdCBibV9waWQpOworCXN0cnVjdCBmaWxs X2J1Zl9wYXJhbQkqZmlsbF9idWY7CiB9OwogCiBzdHJ1Y3QgcGVyZl9ldmVudF9yZWFkIHsK QEAgLTEyNiw3ICsxNjQsNiBAQCBpbnQgZmlsdGVyX2RtZXNnKHZvaWQpOwogaW50IGdldF9k b21haW5faWQoY29uc3QgY2hhciAqcmVzb3VyY2UsIGludCBjcHVfbm8sIGludCAqZG9tYWlu X2lkKTsKIGludCBtb3VudF9yZXNjdHJsZnModm9pZCk7CiBpbnQgdW1vdW50X3Jlc2N0cmxm cyh2b2lkKTsKLWNvbnN0IGNoYXIgKmdldF9id19yZXBvcnRfdHlwZShjb25zdCBjaGFyICpi d19yZXBvcnQpOwogYm9vbCByZXNjdHJsX3Jlc291cmNlX2V4aXN0cyhjb25zdCBjaGFyICpy ZXNvdXJjZSk7CiBib29sIHJlc2N0cmxfbW9uX2ZlYXR1cmVfZXhpc3RzKGNvbnN0IGNoYXIg KnJlc291cmNlLCBjb25zdCBjaGFyICpmZWF0dXJlKTsKIGJvb2wgcmVzb3VyY2VfaW5mb19m aWxlX2V4aXN0cyhjb25zdCBjaGFyICpyZXNvdXJjZSwgY29uc3QgY2hhciAqZmlsZSk7CkBA IC0xMzksMTkgKzE3NiwxNyBAQCBpbnQgd3JpdGVfc2NoZW1hdGEoY29uc3QgY2hhciAqY3Ry bGdycCwgY2hhciAqc2NoZW1hdGEsIGludCBjcHVfbm8sCiBpbnQgd3JpdGVfYm1fcGlkX3Rv X3Jlc2N0cmwocGlkX3QgYm1fcGlkLCBjb25zdCBjaGFyICpjdHJsZ3JwLCBjb25zdCBjaGFy ICptb25ncnApOwogaW50IHBlcmZfZXZlbnRfb3BlbihzdHJ1Y3QgcGVyZl9ldmVudF9hdHRy ICpod19ldmVudCwgcGlkX3QgcGlkLCBpbnQgY3B1LAogCQkgICAgaW50IGdyb3VwX2ZkLCB1 bnNpZ25lZCBsb25nIGZsYWdzKTsKLXVuc2lnbmVkIGNoYXIgKmFsbG9jX2J1ZmZlcihzaXpl X3QgYnVmX3NpemUsIGludCBtZW1mbHVzaCk7Cit1bnNpZ25lZCBjaGFyICphbGxvY19idWZm ZXIoc2l6ZV90IGJ1Zl9zaXplLCBib29sIG1lbWZsdXNoKTsKIHZvaWQgbWVtX2ZsdXNoKHVu c2lnbmVkIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9zaXplKTsKIHZvaWQgZmlsbF9jYWNoZV9y ZWFkKHVuc2lnbmVkIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9zaXplLCBib29sIG9uY2UpOwot aW50IHJ1bl9maWxsX2J1ZihzaXplX3QgYnVmX3NpemUsIGludCBtZW1mbHVzaCwgaW50IG9w LCBib29sIG9uY2UpOwotaW50IGluaXRpYWxpemVfbWVtX2J3X2ltYyh2b2lkKTsKLWludCBt ZWFzdXJlX21lbV9idyhjb25zdCBzdHJ1Y3QgdXNlcl9wYXJhbXMgKnVwYXJhbXMsCi0JCSAg IHN0cnVjdCByZXNjdHJsX3ZhbF9wYXJhbSAqcGFyYW0sIHBpZF90IGJtX3BpZCwKLQkJICAg Y29uc3QgY2hhciAqYndfcmVwb3J0KTsKK3NzaXplX3QgZ2V0X2ZpbGxfYnVmX3NpemUoaW50 IGNwdV9ubywgY29uc3QgY2hhciAqY2FjaGVfdHlwZSk7CitpbnQgaW5pdGlhbGl6ZV9yZWFk X21lbV9id19pbWModm9pZCk7CitpbnQgbWVhc3VyZV9yZWFkX21lbV9idyhjb25zdCBzdHJ1 Y3QgdXNlcl9wYXJhbXMgKnVwYXJhbXMsCisJCQlzdHJ1Y3QgcmVzY3RybF92YWxfcGFyYW0g KnBhcmFtLCBwaWRfdCBibV9waWQpOwogdm9pZCBpbml0aWFsaXplX21lbV9id19yZXNjdHJs KGNvbnN0IHN0cnVjdCByZXNjdHJsX3ZhbF9wYXJhbSAqcGFyYW0sCiAJCQkgICAgICAgaW50 IGRvbWFpbl9pZCk7CiBpbnQgcmVzY3RybF92YWwoY29uc3Qgc3RydWN0IHJlc2N0cmxfdGVz dCAqdGVzdCwKIAkJY29uc3Qgc3RydWN0IHVzZXJfcGFyYW1zICp1cGFyYW1zLAotCQljb25z dCBjaGFyICogY29uc3QgKmJlbmNobWFya19jbWQsCiAJCXN0cnVjdCByZXNjdHJsX3ZhbF9w YXJhbSAqcGFyYW0pOwogdW5zaWduZWQgbG9uZyBjcmVhdGVfYml0X21hc2sodW5zaWduZWQg aW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbGVuKTsKIHVuc2lnbmVkIGludCBjb3VudF9jb250 aWd1b3VzX2JpdHModW5zaWduZWQgbG9uZyB2YWwsIHVuc2lnbmVkIGludCAqc3RhcnQpOwpk aWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9yZXNjdHJsX3Rl c3RzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL3Jlc2N0cmxfdGVzdHMu YwppbmRleCBlY2JiNzYwNWE5ODEuLjMzMzVhZjgxNWIyMSAxMDA2NDQKLS0tIGEvdG9vbHMv dGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9yZXNjdHJsX3Rlc3RzLmMKKysrIGIvdG9vbHMv dGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9yZXNjdHJsX3Rlc3RzLmMKQEAgLTE0OCw2ICsx NDgsNzggQEAgc3RhdGljIHZvaWQgcnVuX3NpbmdsZV90ZXN0KGNvbnN0IHN0cnVjdCByZXNj dHJsX3Rlc3QgKnRlc3QsIGNvbnN0IHN0cnVjdCB1c2VyX3AKIAl0ZXN0X2NsZWFudXAodGVz dCk7CiB9CiAKKy8qCisgKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhIHN0cnVjdCBmaWxs X2J1Zl9wYXJhbSB3aXRoIHVzZXIgcHJvdmlkZWQKKyAqICh2aWEgIi1iIGZpbGxfYnVmIDxm aWxsX2J1ZiBwYXJhbWV0ZXJzPiIpIHBhcmFtZXRlcnMuCisgKgorICogVXNlIGRlZmF1bHRz ICh0aGF0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIGFsbCB0ZXN0cykgZm9yIGFueQor ICogZmlsbF9idWYgcGFyYW1ldGVycyBvbWl0dGVkIGJ5IHRoZSB1c2VyLgorICoKKyAqIEhp c3RvcmljYWxseSBpdCBtYXkgaGF2ZSBiZWVuIHBvc3NpYmxlIGZvciB1c2VyIHNwYWNlIHRv IHByb3ZpZGUKKyAqIGFkZGl0aW9uYWwgcGFyYW1ldGVycywgIm9wZXJhdGlvbiIgKCJyZWFk IiB2cyAid3JpdGUiKSBpbgorICogYmVuY2htYXJrX2NtZFszXSBhbmQgIm9uY2UiIChydW4g Im9uY2UiIG9yIHVudGlsIHRlcm1pbmF0ZWQpIGluCisgKiBiZW5jaG1hcmtfY21kWzRdLiBD aGFuZ2luZyB0aGVzZSBwYXJhbWV0ZXJzIGhhdmUgbmV2ZXIgYmVlbgorICogc3VwcG9ydGVk IHdpdGggdGhlIGRlZmF1bHQgb2YgInJlYWQiIG9wZXJhdGlvbiBhbmQgcnVubmluZyB1bnRp bAorICogdGVybWluYXRlZCBidWlsdCBpbnRvIHRoZSB0ZXN0cy4gQW55IHVuc3VwcG9ydGVk IHZhbHVlcyBmb3IKKyAqIChvcmlnaW5hbCkgImZpbGxfYnVmIiBwYXJhbWV0ZXJzIGFyZSB0 cmVhdGVkIGFzIGZhaWx1cmUuCisgKgorICogUmV0dXJuOiBPbiBmYWlsdXJlLCBmb3JjaWJs eSBleGl0cyB0aGUgdGVzdCBvbiBhbnkgcGFyc2luZyBmYWlsdXJlLAorICogICAgICAgICBy ZXR1cm5zIE5VTEwgaWYgbm8gcGFyc2luZyBuZWVkZWQgKHVzZXIgZGlkIG5vdCBhY3R1YWxs eSBwcm92aWRlCisgKiAgICAgICAgICItYiBmaWxsX2J1ZiIpLgorICogICAgICAgICBPbiBz dWNjZXNzLCByZXR1cm5zIHBvaW50ZXIgdG8gbmV3bHkgYWxsb2NhdGVkIGFuZCBmdWxseQor ICogICAgICAgICBpbml0aWFsaXplZCBzdHJ1Y3QgZmlsbF9idWZfcGFyYW0gdGhhdCBjYWxs ZXIgbXVzdCBmcmVlLgorICovCitzdGF0aWMgc3RydWN0IGZpbGxfYnVmX3BhcmFtICphbGxv Y19maWxsX2J1Zl9wYXJhbShzdHJ1Y3QgdXNlcl9wYXJhbXMgKnVwYXJhbXMpCit7CisJc3Ry dWN0IGZpbGxfYnVmX3BhcmFtICpmaWxsX3BhcmFtID0gTlVMTDsKKwljaGFyICplbmRwdHIg PSBOVUxMOworCisJaWYgKCF1cGFyYW1zLT5iZW5jaG1hcmtfY21kWzBdIHx8IHN0cmNtcCh1 cGFyYW1zLT5iZW5jaG1hcmtfY21kWzBdLCAiZmlsbF9idWYiKSkKKwkJcmV0dXJuIE5VTEw7 CisKKwlmaWxsX3BhcmFtID0gbWFsbG9jKHNpemVvZigqZmlsbF9wYXJhbSkpOworCWlmICgh ZmlsbF9wYXJhbSkKKwkJa3NmdF9leGl0X3NraXAoIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1v cnkgZm9yIGZpbGxfYnVmIHBhcmFtZXRlcnMuXG4iKTsKKworCWlmICh1cGFyYW1zLT5iZW5j aG1hcmtfY21kWzFdICYmICp1cGFyYW1zLT5iZW5jaG1hcmtfY21kWzFdICE9ICdcMCcpIHsK KwkJZXJybm8gPSAwOworCQlmaWxsX3BhcmFtLT5idWZfc2l6ZSA9IHN0cnRvdWwodXBhcmFt cy0+YmVuY2htYXJrX2NtZFsxXSwgJmVuZHB0ciwgMTApOworCQlpZiAoZXJybm8gfHwgKmVu ZHB0ciAhPSAnXDAnKSB7CisJCQlmcmVlKGZpbGxfcGFyYW0pOworCQkJa3NmdF9leGl0X3Nr aXAoIlVuYWJsZSB0byBwYXJzZSBiZW5jaG1hcmsgYnVmZmVyIHNpemUuXG4iKTsKKwkJfQor CX0gZWxzZSB7CisJCWZpbGxfcGFyYW0tPmJ1Zl9zaXplID0gTUlOSU1VTV9TUEFOOworCX0K KworCWlmICh1cGFyYW1zLT5iZW5jaG1hcmtfY21kWzJdICYmICp1cGFyYW1zLT5iZW5jaG1h cmtfY21kWzJdICE9ICdcMCcpIHsKKwkJZXJybm8gPSAwOworCQlmaWxsX3BhcmFtLT5tZW1m bHVzaCA9IHN0cnRvbCh1cGFyYW1zLT5iZW5jaG1hcmtfY21kWzJdLCAmZW5kcHRyLCAxMCkg IT0gMDsKKwkJaWYgKGVycm5vIHx8ICplbmRwdHIgIT0gJ1wwJykgeworCQkJZnJlZShmaWxs X3BhcmFtKTsKKwkJCWtzZnRfZXhpdF9za2lwKCJVbmFibGUgdG8gcGFyc2UgYmVuY2htYXJr IG1lbWZsdXNoIHBhcmFtZXRlci5cbiIpOworCQl9CisJfSBlbHNlIHsKKwkJZmlsbF9wYXJh bS0+bWVtZmx1c2ggPSB0cnVlOworCX0KKworCWlmICh1cGFyYW1zLT5iZW5jaG1hcmtfY21k WzNdICYmICp1cGFyYW1zLT5iZW5jaG1hcmtfY21kWzNdICE9ICdcMCcpIHsKKwkJaWYgKHN0 cmNtcCh1cGFyYW1zLT5iZW5jaG1hcmtfY21kWzNdLCAiMCIpKSB7CisJCQlmcmVlKGZpbGxf cGFyYW0pOworCQkJa3NmdF9leGl0X3NraXAoIk9ubHkgcmVhZCBvcGVyYXRpb25zIHN1cHBv cnRlZC5cbiIpOworCQl9CisJfQorCisJaWYgKHVwYXJhbXMtPmJlbmNobWFya19jbWRbNF0g JiYgKnVwYXJhbXMtPmJlbmNobWFya19jbWRbNF0gIT0gJ1wwJykgeworCQlpZiAoc3RyY21w KHVwYXJhbXMtPmJlbmNobWFya19jbWRbNF0sICJmYWxzZSIpKSB7CisJCQlmcmVlKGZpbGxf cGFyYW0pOworCQkJa3NmdF9leGl0X3NraXAoImZpbGxfYnVmIGlzIHJlcXVpcmVkIHRvIHJ1 biB1bnRpbCB0ZXJtaW5hdGlvbi5cbiIpOworCQl9CisJfQorCisJcmV0dXJuIGZpbGxfcGFy YW07Cit9CisKIHN0YXRpYyB2b2lkIGluaXRfdXNlcl9wYXJhbXMoc3RydWN0IHVzZXJfcGFy YW1zICp1cGFyYW1zKQogewogCW1lbXNldCh1cGFyYW1zLCAwLCBzaXplb2YoKnVwYXJhbXMp KTsKQEAgLTE1OCwxMSArMjMwLDExIEBAIHN0YXRpYyB2b2lkIGluaXRfdXNlcl9wYXJhbXMo c3RydWN0IHVzZXJfcGFyYW1zICp1cGFyYW1zKQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiB7CisJc3RydWN0IGZpbGxfYnVmX3BhcmFtICpmaWxsX3BhcmFtID0gTlVM TDsKIAlpbnQgdGVzdHMgPSBBUlJBWV9TSVpFKHJlc2N0cmxfdGVzdHMpOwogCWJvb2wgdGVz dF9wYXJhbV9zZWVuID0gZmFsc2U7CiAJc3RydWN0IHVzZXJfcGFyYW1zIHVwYXJhbXM7Ci0J Y2hhciAqc3Bhbl9zdHIgPSBOVUxMOwotCWludCByZXQsIGMsIGk7CisJaW50IGMsIGk7CiAK IAlpbml0X3VzZXJfcGFyYW1zKCZ1cGFyYW1zKTsKIApAQCAtMjM5LDYgKzMxMSwxMCBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJfQogbGFzdF9hcmc6CiAKKwlmaWxs X3BhcmFtID0gYWxsb2NfZmlsbF9idWZfcGFyYW0oJnVwYXJhbXMpOworCWlmIChmaWxsX3Bh cmFtKQorCQl1cGFyYW1zLmZpbGxfYnVmID0gZmlsbF9wYXJhbTsKKwogCWtzZnRfcHJpbnRf aGVhZGVyKCk7CiAKIAkvKgpAQCAtMjU3LDI0ICszMzMsMTEgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCiAJZmlsdGVyX2RtZXNnKCk7CiAKLQlpZiAoIXVwYXJhbXMu YmVuY2htYXJrX2NtZFswXSkgewotCQkvKiBJZiBubyBiZW5jaG1hcmsgaXMgZ2l2ZW4gYnkg Ii1iIiBhcmd1bWVudCwgdXNlIGZpbGxfYnVmLiAqLwotCQl1cGFyYW1zLmJlbmNobWFya19j bWRbMF0gPSAiZmlsbF9idWYiOwotCQlyZXQgPSBhc3ByaW50Zigmc3Bhbl9zdHIsICIldSIs IERFRkFVTFRfU1BBTik7Ci0JCWlmIChyZXQgPCAwKQotCQkJa3NmdF9leGl0X2ZhaWxfbXNn KCJPdXQgb2YgbWVtb3J5IVxuIik7Ci0JCXVwYXJhbXMuYmVuY2htYXJrX2NtZFsxXSA9IHNw YW5fc3RyOwotCQl1cGFyYW1zLmJlbmNobWFya19jbWRbMl0gPSAiMSI7Ci0JCXVwYXJhbXMu YmVuY2htYXJrX2NtZFszXSA9ICIwIjsKLQkJdXBhcmFtcy5iZW5jaG1hcmtfY21kWzRdID0g ImZhbHNlIjsKLQkJdXBhcmFtcy5iZW5jaG1hcmtfY21kWzVdID0gTlVMTDsKLQl9Ci0KIAlr c2Z0X3NldF9wbGFuKHRlc3RzKTsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHJl c2N0cmxfdGVzdHMpOyBpKyspCiAJCXJ1bl9zaW5nbGVfdGVzdChyZXNjdHJsX3Rlc3RzW2ld LCAmdXBhcmFtcyk7CiAKLQlmcmVlKHNwYW5fc3RyKTsKKwlmcmVlKGZpbGxfcGFyYW0pOwog CWtzZnRfZmluaXNoZWQoKTsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3Jlc2N0cmwvcmVzY3RybF92YWwuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jl c2N0cmwvcmVzY3RybF92YWwuYwppbmRleCA4YzI3NWY2YjRkZDcuLjdjMDhlOTM2NTcyZCAx MDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmVzY3RybC9yZXNjdHJsX3Zh bC5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvcmVzY3RybF92YWwu YwpAQCAtMTIsMTMgKzEyLDEwIEBACiAKICNkZWZpbmUgVU5DT1JFX0lNQwkJInVuY29yZV9p bWMiCiAjZGVmaW5lIFJFQURfRklMRV9OQU1FCQkiZXZlbnRzL2Nhc19jb3VudF9yZWFkIgot I2RlZmluZSBXUklURV9GSUxFX05BTUUJCSJldmVudHMvY2FzX2NvdW50X3dyaXRlIgogI2Rl ZmluZSBEWU5fUE1VX1BBVEgJCSIvc3lzL2J1cy9ldmVudF9zb3VyY2UvZGV2aWNlcyIKICNk ZWZpbmUgU0NBTEUJCQkwLjAwMDA2MTAzNTE1NjI1CiAjZGVmaW5lIE1BWF9JTUNTCQkyMAog I2RlZmluZSBNQVhfVE9LRU5TCQk1Ci0jZGVmaW5lIFJFQUQJCQkwCi0jZGVmaW5lIFdSSVRF CQkJMQogCiAjZGVmaW5lIENPTl9NQk1fTE9DQUxfQllURVNfUEFUSAkJXAogCSIlcy8lcy9t b25fZGF0YS9tb25fTDNfJTAyZC9tYm1fbG9jYWxfYnl0ZXMiCkBAIC00MSw4NSArMzgsNzEg QEAgc3RydWN0IGltY19jb3VudGVyX2NvbmZpZyB7CiAKIHN0YXRpYyBjaGFyIG1ibV90b3Rh bF9wYXRoWzEwMjRdOwogc3RhdGljIGludCBpbWNzOwotc3RhdGljIHN0cnVjdCBpbWNfY291 bnRlcl9jb25maWcgaW1jX2NvdW50ZXJzX2NvbmZpZ1tNQVhfSU1DU11bMl07CitzdGF0aWMg c3RydWN0IGltY19jb3VudGVyX2NvbmZpZyBpbWNfY291bnRlcnNfY29uZmlnW01BWF9JTUNT XTsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVzY3RybF90ZXN0ICpjdXJyZW50X3Rlc3Q7CiAK LXZvaWQgbWVtYndfaW5pdGlhbGl6ZV9wZXJmX2V2ZW50X2F0dHIoaW50IGksIGludCBqKQor c3RhdGljIHZvaWQgcmVhZF9tZW1fYndfaW5pdGlhbGl6ZV9wZXJmX2V2ZW50X2F0dHIoaW50 IGkpCiB7Ci0JbWVtc2V0KCZpbWNfY291bnRlcnNfY29uZmlnW2ldW2pdLnBlLCAwLAorCW1l bXNldCgmaW1jX2NvdW50ZXJzX2NvbmZpZ1tpXS5wZSwgMCwKIAkgICAgICAgc2l6ZW9mKHN0 cnVjdCBwZXJmX2V2ZW50X2F0dHIpKTsKLQlpbWNfY291bnRlcnNfY29uZmlnW2ldW2pdLnBl LnR5cGUgPSBpbWNfY291bnRlcnNfY29uZmlnW2ldW2pdLnR5cGU7Ci0JaW1jX2NvdW50ZXJz X2NvbmZpZ1tpXVtqXS5wZS5zaXplID0gc2l6ZW9mKHN0cnVjdCBwZXJmX2V2ZW50X2F0dHIp OwotCWltY19jb3VudGVyc19jb25maWdbaV1bal0ucGUuZGlzYWJsZWQgPSAxOwotCWltY19j b3VudGVyc19jb25maWdbaV1bal0ucGUuaW5oZXJpdCA9IDE7Ci0JaW1jX2NvdW50ZXJzX2Nv bmZpZ1tpXVtqXS5wZS5leGNsdWRlX2d1ZXN0ID0gMDsKLQlpbWNfY291bnRlcnNfY29uZmln W2ldW2pdLnBlLmNvbmZpZyA9Ci0JCWltY19jb3VudGVyc19jb25maWdbaV1bal0udW1hc2sg PDwgOCB8Ci0JCWltY19jb3VudGVyc19jb25maWdbaV1bal0uZXZlbnQ7Ci0JaW1jX2NvdW50 ZXJzX2NvbmZpZ1tpXVtqXS5wZS5zYW1wbGVfdHlwZSA9IFBFUkZfU0FNUExFX0lERU5USUZJ RVI7Ci0JaW1jX2NvdW50ZXJzX2NvbmZpZ1tpXVtqXS5wZS5yZWFkX2Zvcm1hdCA9CisJaW1j X2NvdW50ZXJzX2NvbmZpZ1tpXS5wZS50eXBlID0gaW1jX2NvdW50ZXJzX2NvbmZpZ1tpXS50 eXBlOworCWltY19jb3VudGVyc19jb25maWdbaV0ucGUuc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg cGVyZl9ldmVudF9hdHRyKTsKKwlpbWNfY291bnRlcnNfY29uZmlnW2ldLnBlLmRpc2FibGVk ID0gMTsKKwlpbWNfY291bnRlcnNfY29uZmlnW2ldLnBlLmluaGVyaXQgPSAxOworCWltY19j b3VudGVyc19jb25maWdbaV0ucGUuZXhjbHVkZV9ndWVzdCA9IDA7CisJaW1jX2NvdW50ZXJz X2NvbmZpZ1tpXS5wZS5jb25maWcgPQorCQlpbWNfY291bnRlcnNfY29uZmlnW2ldLnVtYXNr IDw8IDggfAorCQlpbWNfY291bnRlcnNfY29uZmlnW2ldLmV2ZW50OworCWltY19jb3VudGVy c19jb25maWdbaV0ucGUuc2FtcGxlX3R5cGUgPSBQRVJGX1NBTVBMRV9JREVOVElGSUVSOwor CWltY19jb3VudGVyc19jb25maWdbaV0ucGUucmVhZF9mb3JtYXQgPQogCQlQRVJGX0ZPUk1B VF9UT1RBTF9USU1FX0VOQUJMRUQgfCBQRVJGX0ZPUk1BVF9UT1RBTF9USU1FX1JVTk5JTkc7 CiB9CiAKLXZvaWQgbWVtYndfaW9jdGxfcGVyZl9ldmVudF9pb2NfcmVzZXRfZW5hYmxlKGlu dCBpLCBpbnQgaikKK3N0YXRpYyB2b2lkIHJlYWRfbWVtX2J3X2lvY3RsX3BlcmZfZXZlbnRf aW9jX3Jlc2V0X2VuYWJsZShpbnQgaSkKIHsKLQlpb2N0bChpbWNfY291bnRlcnNfY29uZmln W2ldW2pdLmZkLCBQRVJGX0VWRU5UX0lPQ19SRVNFVCwgMCk7Ci0JaW9jdGwoaW1jX2NvdW50 ZXJzX2NvbmZpZ1tpXVtqXS5mZCwgUEVSRl9FVkVOVF9JT0NfRU5BQkxFLCAwKTsKKwlpb2N0 bChpbWNfY291bnRlcnNfY29uZmlnW2ldLmZkLCBQRVJGX0VWRU5UX0lPQ19SRVNFVCwgMCk7 CisJaW9jdGwoaW1jX2NvdW50ZXJzX2NvbmZpZ1tpXS5mZCwgUEVSRl9FVkVOVF9JT0NfRU5B QkxFLCAwKTsKIH0KIAotdm9pZCBtZW1id19pb2N0bF9wZXJmX2V2ZW50X2lvY19kaXNhYmxl KGludCBpLCBpbnQgaikKK3N0YXRpYyB2b2lkIHJlYWRfbWVtX2J3X2lvY3RsX3BlcmZfZXZl bnRfaW9jX2Rpc2FibGUoaW50IGkpCiB7Ci0JaW9jdGwoaW1jX2NvdW50ZXJzX2NvbmZpZ1tp XVtqXS5mZCwgUEVSRl9FVkVOVF9JT0NfRElTQUJMRSwgMCk7CisJaW9jdGwoaW1jX2NvdW50 ZXJzX2NvbmZpZ1tpXS5mZCwgUEVSRl9FVkVOVF9JT0NfRElTQUJMRSwgMCk7CiB9CiAKIC8q Ci0gKiBnZXRfZXZlbnRfYW5kX3VtYXNrOglQYXJzZSBjb25maWcgaW50byBldmVudCBhbmQg dW1hc2sKKyAqIGdldF9yZWFkX2V2ZW50X2FuZF91bWFzazoJUGFyc2UgY29uZmlnIGludG8g ZXZlbnQgYW5kIHVtYXNrCiAgKiBAY2FzX2NvdW50X2NmZzoJQ29uZmlnCiAgKiBAY291bnQ6 CQlpTUMgbnVtYmVyCi0gKiBAb3A6CQkJT3BlcmF0aW9uIChyZWFkL3dyaXRlKQogICovCi12 b2lkIGdldF9ldmVudF9hbmRfdW1hc2soY2hhciAqY2FzX2NvdW50X2NmZywgaW50IGNvdW50 LCBib29sIG9wKQorc3RhdGljIHZvaWQgZ2V0X3JlYWRfZXZlbnRfYW5kX3VtYXNrKGNoYXIg KmNhc19jb3VudF9jZmcsIGludCBjb3VudCkKIHsKIAljaGFyICp0b2tlbltNQVhfVE9LRU5T XTsKIAlpbnQgaSA9IDA7CiAKLQlzdHJjYXQoY2FzX2NvdW50X2NmZywgIiwiKTsKIAl0b2tl blswXSA9IHN0cnRvayhjYXNfY291bnRfY2ZnLCAiPSwiKTsKIAogCWZvciAoaSA9IDE7IGkg PCBNQVhfVE9LRU5TOyBpKyspCiAJCXRva2VuW2ldID0gc3RydG9rKE5VTEwsICI9LCIpOwog Ci0JZm9yIChpID0gMDsgaSA8IE1BWF9UT0tFTlM7IGkrKykgeworCWZvciAoaSA9IDA7IGkg PCBNQVhfVE9LRU5TIC0gMTsgaSsrKSB7CiAJCWlmICghdG9rZW5baV0pCiAJCQlicmVhazsK LQkJaWYgKHN0cmNtcCh0b2tlbltpXSwgImV2ZW50IikgPT0gMCkgewotCQkJaWYgKG9wID09 IFJFQUQpCi0JCQkJaW1jX2NvdW50ZXJzX2NvbmZpZ1tjb3VudF1bUkVBRF0uZXZlbnQgPQot CQkJCXN0cnRvbCh0b2tlbltpICsgMV0sIE5VTEwsIDE2KTsKLQkJCWVsc2UKLQkJCQlpbWNf Y291bnRlcnNfY29uZmlnW2NvdW50XVtXUklURV0uZXZlbnQgPQotCQkJCXN0cnRvbCh0b2tl bltpICsgMV0sIE5VTEwsIDE2KTsKLQkJfQotCQlpZiAoc3RyY21wKHRva2VuW2ldLCAidW1h c2siKSA9PSAwKSB7Ci0JCQlpZiAob3AgPT0gUkVBRCkKLQkJCQlpbWNfY291bnRlcnNfY29u ZmlnW2NvdW50XVtSRUFEXS51bWFzayA9Ci0JCQkJc3RydG9sKHRva2VuW2kgKyAxXSwgTlVM TCwgMTYpOwotCQkJZWxzZQotCQkJCWltY19jb3VudGVyc19jb25maWdbY291bnRdW1dSSVRF XS51bWFzayA9Ci0JCQkJc3RydG9sKHRva2VuW2kgKyAxXSwgTlVMTCwgMTYpOwotCQl9CisJ CWlmIChzdHJjbXAodG9rZW5baV0sICJldmVudCIpID09IDApCisJCQlpbWNfY291bnRlcnNf Y29uZmlnW2NvdW50XS5ldmVudCA9IHN0cnRvbCh0b2tlbltpICsgMV0sIE5VTEwsIDE2KTsK KwkJaWYgKHN0cmNtcCh0b2tlbltpXSwgInVtYXNrIikgPT0gMCkKKwkJCWltY19jb3VudGVy c19jb25maWdbY291bnRdLnVtYXNrID0gc3RydG9sKHRva2VuW2kgKyAxXSwgTlVMTCwgMTYp OwogCX0KIH0KIAotc3RhdGljIGludCBvcGVuX3BlcmZfZXZlbnQoaW50IGksIGludCBjcHVf bm8sIGludCBqKQorc3RhdGljIGludCBvcGVuX3BlcmZfcmVhZF9ldmVudChpbnQgaSwgaW50 IGNwdV9ubykKIHsKLQlpbWNfY291bnRlcnNfY29uZmlnW2ldW2pdLmZkID0KLQkJcGVyZl9l dmVudF9vcGVuKCZpbWNfY291bnRlcnNfY29uZmlnW2ldW2pdLnBlLCAtMSwgY3B1X25vLCAt MSwKKwlpbWNfY291bnRlcnNfY29uZmlnW2ldLmZkID0KKwkJcGVyZl9ldmVudF9vcGVuKCZp bWNfY291bnRlcnNfY29uZmlnW2ldLnBlLCAtMSwgY3B1X25vLCAtMSwKIAkJCQlQRVJGX0ZM QUdfRkRfQ0xPRVhFQyk7CiAKLQlpZiAoaW1jX2NvdW50ZXJzX2NvbmZpZ1tpXVtqXS5mZCA9 PSAtMSkgeworCWlmIChpbWNfY291bnRlcnNfY29uZmlnW2ldLmZkID09IC0xKSB7CiAJCWZw cmludGYoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyBsZWFkZXIgJWxseFxuIiwKLQkJCWltY19j b3VudGVyc19jb25maWdbaV1bal0ucGUuY29uZmlnKTsKKwkJCWltY19jb3VudGVyc19jb25m aWdbaV0ucGUuY29uZmlnKTsKIAogCQlyZXR1cm4gLTE7CiAJfQpAQCAtMTI3LDcgKzExMCw3 IEBAIHN0YXRpYyBpbnQgb3Blbl9wZXJmX2V2ZW50KGludCBpLCBpbnQgY3B1X25vLCBpbnQg aikKIAlyZXR1cm4gMDsKIH0KIAotLyogR2V0IHR5cGUgYW5kIGNvbmZpZyAocmVhZCBhbmQg d3JpdGUpIG9mIGFuIGlNQyBjb3VudGVyICovCisvKiBHZXQgdHlwZSBhbmQgY29uZmlnIG9m IGFuIGlNQyBjb3VudGVyJ3MgcmVhZCBldmVudC4gKi8KIHN0YXRpYyBpbnQgcmVhZF9mcm9t X2ltY19kaXIoY2hhciAqaW1jX2RpciwgaW50IGNvdW50KQogewogCWNoYXIgY2FzX2NvdW50 X2NmZ1sxMDI0XSwgaW1jX2NvdW50ZXJfY2ZnWzEwMjRdLCBpbWNfY291bnRlcl90eXBlWzEw MjRdOwpAQCAtMTQxLDcgKzEyNCw3IEBAIHN0YXRpYyBpbnQgcmVhZF9mcm9tX2ltY19kaXIo Y2hhciAqaW1jX2RpciwgaW50IGNvdW50KQogCiAJCXJldHVybiAtMTsKIAl9Ci0JaWYgKGZz Y2FuZihmcCwgIiV1IiwgJmltY19jb3VudGVyc19jb25maWdbY291bnRdW1JFQURdLnR5cGUp IDw9IDApIHsKKwlpZiAoZnNjYW5mKGZwLCAiJXUiLCAmaW1jX2NvdW50ZXJzX2NvbmZpZ1tj b3VudF0udHlwZSkgPD0gMCkgewogCQlrc2Z0X3BlcnJvcigiQ291bGQgbm90IGdldCBpTUMg dHlwZSIpOwogCQlmY2xvc2UoZnApOwogCkBAIC0xNDksOSArMTMyLDYgQEAgc3RhdGljIGlu dCByZWFkX2Zyb21faW1jX2RpcihjaGFyICppbWNfZGlyLCBpbnQgY291bnQpCiAJfQogCWZj bG9zZShmcCk7CiAKLQlpbWNfY291bnRlcnNfY29uZmlnW2NvdW50XVtXUklURV0udHlwZSA9 Ci0JCQkJaW1jX2NvdW50ZXJzX2NvbmZpZ1tjb3VudF1bUkVBRF0udHlwZTsKLQogCS8qIEdl dCByZWFkIGNvbmZpZyAqLwogCXNwcmludGYoaW1jX2NvdW50ZXJfY2ZnLCAiJXMlcyIsIGlt Y19kaXIsIFJFQURfRklMRV9OQU1FKTsKIAlmcCA9IGZvcGVuKGltY19jb3VudGVyX2NmZywg InIiKTsKQEAgLTE2MCw3ICsxNDAsNyBAQCBzdGF0aWMgaW50IHJlYWRfZnJvbV9pbWNfZGly KGNoYXIgKmltY19kaXIsIGludCBjb3VudCkKIAogCQlyZXR1cm4gLTE7CiAJfQotCWlmIChm c2NhbmYoZnAsICIlcyIsIGNhc19jb3VudF9jZmcpIDw9IDApIHsKKwlpZiAoZnNjYW5mKGZw LCAiJTEwMjNzIiwgY2FzX2NvdW50X2NmZykgPD0gMCkgewogCQlrc2Z0X3BlcnJvcigiQ291 bGQgbm90IGdldCBpTUMgY2FzIGNvdW50IHJlYWQiKTsKIAkJZmNsb3NlKGZwKTsKIApAQCAt MTY4LDM0ICsxNDgsMTkgQEAgc3RhdGljIGludCByZWFkX2Zyb21faW1jX2RpcihjaGFyICpp bWNfZGlyLCBpbnQgY291bnQpCiAJfQogCWZjbG9zZShmcCk7CiAKLQlnZXRfZXZlbnRfYW5k X3VtYXNrKGNhc19jb3VudF9jZmcsIGNvdW50LCBSRUFEKTsKLQotCS8qIEdldCB3cml0ZSBj b25maWcgKi8KLQlzcHJpbnRmKGltY19jb3VudGVyX2NmZywgIiVzJXMiLCBpbWNfZGlyLCBX UklURV9GSUxFX05BTUUpOwotCWZwID0gZm9wZW4oaW1jX2NvdW50ZXJfY2ZnLCAiciIpOwot CWlmICghZnApIHsKLQkJa3NmdF9wZXJyb3IoIkZhaWxlZCB0byBvcGVuIGlNQyBjb25maWcg ZmlsZSIpOwotCi0JCXJldHVybiAtMTsKLQl9Ci0JaWYgIChmc2NhbmYoZnAsICIlcyIsIGNh c19jb3VudF9jZmcpIDw9IDApIHsKLQkJa3NmdF9wZXJyb3IoIkNvdWxkIG5vdCBnZXQgaU1D IGNhcyBjb3VudCB3cml0ZSIpOwotCQlmY2xvc2UoZnApOwotCi0JCXJldHVybiAtMTsKLQl9 Ci0JZmNsb3NlKGZwKTsKLQotCWdldF9ldmVudF9hbmRfdW1hc2soY2FzX2NvdW50X2NmZywg Y291bnQsIFdSSVRFKTsKKwlnZXRfcmVhZF9ldmVudF9hbmRfdW1hc2soY2FzX2NvdW50X2Nm ZywgY291bnQpOwogCiAJcmV0dXJuIDA7CiB9CiAKIC8qCiAgKiBBIHN5c3RlbSBjYW4gaGF2 ZSAnbicgbnVtYmVyIG9mIGlNQyAoSW50ZWdyYXRlZCBNZW1vcnkgQ29udHJvbGxlcikKLSAq IGNvdW50ZXJzLCBnZXQgdGhhdCAnbicuIEZvciBlYWNoIGlNQyBjb3VudGVyIGdldCBpdCdz IHR5cGUgYW5kIGNvbmZpZy4KLSAqIEFsc28sIGVhY2ggY291bnRlciBoYXMgdHdvIGNvbmZp Z3MsIG9uZSBmb3IgcmVhZCBhbmQgdGhlIG90aGVyIGZvciB3cml0ZS4KLSAqIEEgY29uZmln IGFnYWluIGhhcyB0d28gcGFydHMsIGV2ZW50IGFuZCB1bWFzay4KKyAqIGNvdW50ZXJzLCBn ZXQgdGhhdCAnbicuIERpc2NvdmVyIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBhdmFpbGFibGUK KyAqIGNvdW50ZXJzIGluIHN1cHBvcnQgb2YgbmVlZGVkIHBlcmZvcm1hbmNlIG1lYXN1cmVt ZW50IHZpYSBwZXJmLgorICogRm9yIGVhY2ggaU1DIGNvdW50ZXIgZ2V0IGl0J3MgdHlwZSBh bmQgY29uZmlnLiBBbHNvIG9idGFpbiBlYWNoCisgKiBjb3VudGVyJ3MgZXZlbnQgYW5kIHVt YXNrIGZvciB0aGUgbWVtb3J5IHJlYWQgZXZlbnRzIHRoYXQgd2lsbCBiZQorICogbWVhc3Vy ZWQuCisgKgogICogRW51bWVyYXRlIGFsbCB0aGVzZSBkZXRhaWxzIGludG8gYW4gYXJyYXkg b2Ygc3RydWN0dXJlcy4KICAqCiAgKiBSZXR1cm46ID49IDAgb24gc3VjY2Vzcy4gPCAwIG9u IGZhaWx1cmUuCkBAIC0yNTYsNTUgKzIyMSw0NiBAQCBzdGF0aWMgaW50IG51bV9vZl9pbWNz KHZvaWQpCiAJcmV0dXJuIGNvdW50OwogfQogCi1pbnQgaW5pdGlhbGl6ZV9tZW1fYndfaW1j KHZvaWQpCitpbnQgaW5pdGlhbGl6ZV9yZWFkX21lbV9id19pbWModm9pZCkKIHsKLQlpbnQg aW1jLCBqOworCWludCBpbWM7CiAKIAlpbWNzID0gbnVtX29mX2ltY3MoKTsKIAlpZiAoaW1j cyA8PSAwKQogCQlyZXR1cm4gaW1jczsKIAogCS8qIEluaXRpYWxpemUgcGVyZl9ldmVudF9h dHRyIHN0cnVjdHVyZXMgZm9yIGFsbCBpTUMncyAqLwotCWZvciAoaW1jID0gMDsgaW1jIDwg aW1jczsgaW1jKyspIHsKLQkJZm9yIChqID0gMDsgaiA8IDI7IGorKykKLQkJCW1lbWJ3X2lu aXRpYWxpemVfcGVyZl9ldmVudF9hdHRyKGltYywgaik7Ci0JfQorCWZvciAoaW1jID0gMDsg aW1jIDwgaW1jczsgaW1jKyspCisJCXJlYWRfbWVtX2J3X2luaXRpYWxpemVfcGVyZl9ldmVu dF9hdHRyKGltYyk7CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgcGVyZl9jbG9z ZV9pbWNfbWVtX2J3KHZvaWQpCitzdGF0aWMgdm9pZCBwZXJmX2Nsb3NlX2ltY19yZWFkX21l bV9idyh2b2lkKQogewogCWludCBtYzsKIAogCWZvciAobWMgPSAwOyBtYyA8IGltY3M7IG1j KyspIHsKLQkJaWYgKGltY19jb3VudGVyc19jb25maWdbbWNdW1JFQURdLmZkICE9IC0xKQot CQkJY2xvc2UoaW1jX2NvdW50ZXJzX2NvbmZpZ1ttY11bUkVBRF0uZmQpOwotCQlpZiAoaW1j X2NvdW50ZXJzX2NvbmZpZ1ttY11bV1JJVEVdLmZkICE9IC0xKQotCQkJY2xvc2UoaW1jX2Nv dW50ZXJzX2NvbmZpZ1ttY11bV1JJVEVdLmZkKTsKKwkJaWYgKGltY19jb3VudGVyc19jb25m aWdbbWNdLmZkICE9IC0xKQorCQkJY2xvc2UoaW1jX2NvdW50ZXJzX2NvbmZpZ1ttY10uZmQp OwogCX0KIH0KIAogLyoKLSAqIHBlcmZfb3Blbl9pbWNfbWVtX2J3IC0gT3BlbiBwZXJmIGZk cyBmb3IgSU1DcworICogcGVyZl9vcGVuX2ltY19yZWFkX21lbV9idyAtIE9wZW4gcGVyZiBm ZHMgZm9yIElNQ3MKICAqIEBjcHVfbm86IENQVSBudW1iZXIgdGhhdCB0aGUgYmVuY2htYXJr IFBJRCBpcyBib3VuZCB0bwogICoKICAqIFJldHVybjogPSAwIG9uIHN1Y2Nlc3MuIDwgMCBv biBmYWlsdXJlLgogICovCi1zdGF0aWMgaW50IHBlcmZfb3Blbl9pbWNfbWVtX2J3KGludCBj cHVfbm8pCitzdGF0aWMgaW50IHBlcmZfb3Blbl9pbWNfcmVhZF9tZW1fYncoaW50IGNwdV9u bykKIHsKIAlpbnQgaW1jLCByZXQ7CiAKLQlmb3IgKGltYyA9IDA7IGltYyA8IGltY3M7IGlt YysrKSB7Ci0JCWltY19jb3VudGVyc19jb25maWdbaW1jXVtSRUFEXS5mZCA9IC0xOwotCQlp bWNfY291bnRlcnNfY29uZmlnW2ltY11bV1JJVEVdLmZkID0gLTE7Ci0JfQorCWZvciAoaW1j ID0gMDsgaW1jIDwgaW1jczsgaW1jKyspCisJCWltY19jb3VudGVyc19jb25maWdbaW1jXS5m ZCA9IC0xOwogCiAJZm9yIChpbWMgPSAwOyBpbWMgPCBpbWNzOyBpbWMrKykgewotCQlyZXQg PSBvcGVuX3BlcmZfZXZlbnQoaW1jLCBjcHVfbm8sIFJFQUQpOwotCQlpZiAocmV0KQotCQkJ Z290byBjbG9zZV9mZHM7Ci0JCXJldCA9IG9wZW5fcGVyZl9ldmVudChpbWMsIGNwdV9ubywg V1JJVEUpOworCQlyZXQgPSBvcGVuX3BlcmZfcmVhZF9ldmVudChpbWMsIGNwdV9ubyk7CiAJ CWlmIChyZXQpCiAJCQlnb3RvIGNsb3NlX2ZkczsKIAl9CkBAIC0zMTIsNjAgKzI2OCw1MiBA QCBzdGF0aWMgaW50IHBlcmZfb3Blbl9pbWNfbWVtX2J3KGludCBjcHVfbm8pCiAJcmV0dXJu IDA7CiAKIGNsb3NlX2ZkczoKLQlwZXJmX2Nsb3NlX2ltY19tZW1fYncoKTsKKwlwZXJmX2Ns b3NlX2ltY19yZWFkX21lbV9idygpOwogCXJldHVybiAtMTsKIH0KIAogLyoKLSAqIGRvX21l bV9id190ZXN0IC0gUGVyZm9ybSBtZW1vcnkgYmFuZHdpZHRoIHRlc3QKKyAqIGRvX2ltY19y ZWFkX21lbV9id190ZXN0IC0gUGVyZm9ybSBtZW1vcnkgYmFuZHdpZHRoIHRlc3QKICAqCiAg KiBSdW5zIG1lbW9yeSBiYW5kd2lkdGggdGVzdCBvdmVyIG9uZSBzZWNvbmQgcGVyaW9kLiBB bHNvLCBoYW5kbGVzIHN0YXJ0aW5nCiAgKiBhbmQgc3RvcHBpbmcgb2YgdGhlIElNQyBwZXJm IGNvdW50ZXJzIGFyb3VuZCB0aGUgdGVzdC4KICAqLwotc3RhdGljIHZvaWQgZG9faW1jX21l bV9id190ZXN0KHZvaWQpCitzdGF0aWMgdm9pZCBkb19pbWNfcmVhZF9tZW1fYndfdGVzdCh2 b2lkKQogewogCWludCBpbWM7CiAKLQlmb3IgKGltYyA9IDA7IGltYyA8IGltY3M7IGltYysr KSB7Ci0JCW1lbWJ3X2lvY3RsX3BlcmZfZXZlbnRfaW9jX3Jlc2V0X2VuYWJsZShpbWMsIFJF QUQpOwotCQltZW1id19pb2N0bF9wZXJmX2V2ZW50X2lvY19yZXNldF9lbmFibGUoaW1jLCBX UklURSk7Ci0JfQorCWZvciAoaW1jID0gMDsgaW1jIDwgaW1jczsgaW1jKyspCisJCXJlYWRf bWVtX2J3X2lvY3RsX3BlcmZfZXZlbnRfaW9jX3Jlc2V0X2VuYWJsZShpbWMpOwogCiAJc2xl ZXAoMSk7CiAKLQkvKiBTdG9wIGNvdW50ZXJzIGFmdGVyIGEgc2Vjb25kIHRvIGdldCByZXN1 bHRzIChib3RoIHJlYWQgYW5kIHdyaXRlKSAqLwotCWZvciAoaW1jID0gMDsgaW1jIDwgaW1j czsgaW1jKyspIHsKLQkJbWVtYndfaW9jdGxfcGVyZl9ldmVudF9pb2NfZGlzYWJsZShpbWMs IFJFQUQpOwotCQltZW1id19pb2N0bF9wZXJmX2V2ZW50X2lvY19kaXNhYmxlKGltYywgV1JJ VEUpOwotCX0KKwkvKiBTdG9wIGNvdW50ZXJzIGFmdGVyIGEgc2Vjb25kIHRvIGdldCByZXN1 bHRzLiAqLworCWZvciAoaW1jID0gMDsgaW1jIDwgaW1jczsgaW1jKyspCisJCXJlYWRfbWVt X2J3X2lvY3RsX3BlcmZfZXZlbnRfaW9jX2Rpc2FibGUoaW1jKTsKIH0KIAogLyoKLSAqIGdl dF9tZW1fYndfaW1jIC0gTWVtb3J5IGJhbmR3aWR0aCBhcyByZXBvcnRlZCBieSBpTUMgY291 bnRlcnMKLSAqIEBid19yZXBvcnQ6IEJhbmR3aWR0aCByZXBvcnQgdHlwZSAocmVhZHMsIHdy aXRlcykKKyAqIGdldF9yZWFkX21lbV9id19pbWMgLSBNZW1vcnkgcmVhZCBiYW5kd2lkdGgg YXMgcmVwb3J0ZWQgYnkgaU1DIGNvdW50ZXJzCiAgKgotICogTWVtb3J5IGJhbmR3aWR0aCB1 dGlsaXplZCBieSBhIHByb2Nlc3Mgb24gYSBzb2NrZXQgY2FuIGJlIGNhbGN1bGF0ZWQKLSAq IHVzaW5nIGlNQyBjb3VudGVycy4gUGVyZiBldmVudHMgYXJlIHVzZWQgdG8gcmVhZCB0aGVz ZSBjb3VudGVycy4KKyAqIE1lbW9yeSByZWFkIGJhbmR3aWR0aCB1dGlsaXplZCBieSBhIHBy b2Nlc3Mgb24gYSBzb2NrZXQgY2FuIGJlIGNhbGN1bGF0ZWQKKyAqIHVzaW5nIGlNQyBjb3Vu dGVycycgcmVhZCBldmVudHMuIFBlcmYgZXZlbnRzIGFyZSB1c2VkIHRvIHJlYWQgdGhlc2UK KyAqIGNvdW50ZXJzLgogICoKICAqIFJldHVybjogPSAwIG9uIHN1Y2Nlc3MuIDwgMCBvbiBm YWlsdXJlLgogICovCi1zdGF0aWMgaW50IGdldF9tZW1fYndfaW1jKGNvbnN0IGNoYXIgKmJ3 X3JlcG9ydCwgZmxvYXQgKmJ3X2ltYykKK3N0YXRpYyBpbnQgZ2V0X3JlYWRfbWVtX2J3X2lt YyhmbG9hdCAqYndfaW1jKQogewotCWZsb2F0IHJlYWRzLCB3cml0ZXMsIG9mX211bF9yZWFk LCBvZl9tdWxfd3JpdGU7CisJZmxvYXQgcmVhZHMgPSAwLCBvZl9tdWxfcmVhZCA9IDE7CiAJ aW50IGltYzsKIAotCS8qIFN0YXJ0IGFsbCBpTUMgY291bnRlcnMgdG8gbG9nIHZhbHVlcyAo Ym90aCByZWFkIGFuZCB3cml0ZSkgKi8KLQlyZWFkcyA9IDAsIHdyaXRlcyA9IDAsIG9mX211 bF9yZWFkID0gMSwgb2ZfbXVsX3dyaXRlID0gMTsKLQogCS8qCi0JICogR2V0IHJlc3VsdHMg d2hpY2ggYXJlIHN0b3JlZCBpbiBzdHJ1Y3QgdHlwZSBpbWNfY291bnRlcl9jb25maWcKKwkg KiBMb2cgcmVhZCBldmVudCB2YWx1ZXMgZnJvbSBhbGwgaU1DIGNvdW50ZXJzIGludG8KKwkg KiBzdHJ1Y3QgaW1jX2NvdW50ZXJfY29uZmlnLgogCSAqIFRha2Ugb3ZlcmZsb3cgaW50byBj b25zaWRlcmF0aW9uIGJlZm9yZSBjYWxjdWxhdGluZyB0b3RhbCBiYW5kd2lkdGguCiAJICov CiAJZm9yIChpbWMgPSAwOyBpbWMgPCBpbWNzOyBpbWMrKykgewogCQlzdHJ1Y3QgaW1jX2Nv dW50ZXJfY29uZmlnICpyID0KLQkJCSZpbWNfY291bnRlcnNfY29uZmlnW2ltY11bUkVBRF07 Ci0JCXN0cnVjdCBpbWNfY291bnRlcl9jb25maWcgKncgPQotCQkJJmltY19jb3VudGVyc19j b25maWdbaW1jXVtXUklURV07CisJCQkmaW1jX2NvdW50ZXJzX2NvbmZpZ1tpbWNdOwogCiAJ CWlmIChyZWFkKHItPmZkLCAmci0+cmV0dXJuX3ZhbHVlLAogCQkJIHNpemVvZihzdHJ1Y3Qg bWVtYndfcmVhZF9mb3JtYXQpKSA9PSAtMSkgewpAQCAtMzczLDEyICszMjEsNiBAQCBzdGF0 aWMgaW50IGdldF9tZW1fYndfaW1jKGNvbnN0IGNoYXIgKmJ3X3JlcG9ydCwgZmxvYXQgKmJ3 X2ltYykKIAkJCXJldHVybiAtMTsKIAkJfQogCi0JCWlmIChyZWFkKHctPmZkLCAmdy0+cmV0 dXJuX3ZhbHVlLAotCQkJIHNpemVvZihzdHJ1Y3QgbWVtYndfcmVhZF9mb3JtYXQpKSA9PSAt MSkgewotCQkJa3NmdF9wZXJyb3IoIkNvdWxkbid0IGdldCB3cml0ZSBiYW5kd2lkdGggdGhy b3VnaCBpTUMiKTsKLQkJCXJldHVybiAtMTsKLQkJfQotCiAJCV9fdTY0IHJfdGltZV9lbmFi bGVkID0gci0+cmV0dXJuX3ZhbHVlLnRpbWVfZW5hYmxlZDsKIAkJX191NjQgcl90aW1lX3J1 bm5pbmcgPSByLT5yZXR1cm5fdmFsdWUudGltZV9ydW5uaW5nOwogCkBAIC0zODYsMjcgKzMy OCwxMCBAQCBzdGF0aWMgaW50IGdldF9tZW1fYndfaW1jKGNvbnN0IGNoYXIgKmJ3X3JlcG9y dCwgZmxvYXQgKmJ3X2ltYykKIAkJCW9mX211bF9yZWFkID0gKGZsb2F0KXJfdGltZV9lbmFi bGVkIC8KIAkJCQkJKGZsb2F0KXJfdGltZV9ydW5uaW5nOwogCi0JCV9fdTY0IHdfdGltZV9l bmFibGVkID0gdy0+cmV0dXJuX3ZhbHVlLnRpbWVfZW5hYmxlZDsKLQkJX191NjQgd190aW1l X3J1bm5pbmcgPSB3LT5yZXR1cm5fdmFsdWUudGltZV9ydW5uaW5nOwotCi0JCWlmICh3X3Rp bWVfZW5hYmxlZCAhPSB3X3RpbWVfcnVubmluZykKLQkJCW9mX211bF93cml0ZSA9IChmbG9h dCl3X3RpbWVfZW5hYmxlZCAvCi0JCQkJCShmbG9hdCl3X3RpbWVfcnVubmluZzsKIAkJcmVh ZHMgKz0gci0+cmV0dXJuX3ZhbHVlLnZhbHVlICogb2ZfbXVsX3JlYWQgKiBTQ0FMRTsKLQkJ d3JpdGVzICs9IHctPnJldHVybl92YWx1ZS52YWx1ZSAqIG9mX211bF93cml0ZSAqIFNDQUxF OwogCX0KIAotCWlmIChzdHJjbXAoYndfcmVwb3J0LCAicmVhZHMiKSA9PSAwKSB7Ci0JCSpi d19pbWMgPSByZWFkczsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JaWYgKHN0cmNtcChid19yZXBv cnQsICJ3cml0ZXMiKSA9PSAwKSB7Ci0JCSpid19pbWMgPSB3cml0ZXM7Ci0JCXJldHVybiAw OwotCX0KLQotCSpid19pbWMgPSByZWFkcyArIHdyaXRlczsKKwkqYndfaW1jID0gcmVhZHM7 CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTQ0OCw3ICszNzMsNyBAQCBzdGF0aWMgaW50IGdldF9t ZW1fYndfcmVzY3RybChGSUxFICpmcCwgdW5zaWduZWQgbG9uZyAqbWJtX3RvdGFsKQogCXJl dHVybiAwOwogfQogCi1zdGF0aWMgcGlkX3QgYm1fcGlkLCBwcGlkOworc3RhdGljIHBpZF90 IGJtX3BpZDsKIAogdm9pZCBjdHJsY19oYW5kbGVyKGludCBzaWdudW0sIHNpZ2luZm9fdCAq aW5mbywgdm9pZCAqcHRyKQogewpAQCAtNTA2LDEzICs0MzEsNiBAQCB2b2lkIHNpZ25hbF9o YW5kbGVyX3VucmVnaXN0ZXIodm9pZCkKIAl9CiB9CiAKLXN0YXRpYyB2b2lkIHBhcmVudF9l eGl0KHBpZF90IHBwaWQpCi17Ci0Ja2lsbChwcGlkLCBTSUdLSUxMKTsKLQl1bW91bnRfcmVz Y3RybGZzKCk7Ci0JZXhpdChFWElUX0ZBSUxVUkUpOwotfQotCiAvKgogICogcHJpbnRfcmVz dWx0c19idzoJdGhlIG1lbW9yeSBiYW5kd2lkdGggcmVzdWx0cyBhcmUgc3RvcmVkIGluIGEg ZmlsZQogICogQGZpbGVuYW1lOgkJZmlsZSB0aGF0IHN0b3JlcyB0aGUgcmVzdWx0cwpAQCAt NTUyLDM1ICs0NzAsMzEgQEAgc3RhdGljIGludCBwcmludF9yZXN1bHRzX2J3KGNoYXIgKmZp bGVuYW1lLCBwaWRfdCBibV9waWQsIGZsb2F0IGJ3X2ltYywKIH0KIAogLyoKLSAqIG1lYXN1 cmVfbWVtX2J3IC0gTWVhc3VyZXMgbWVtb3J5IGJhbmR3aWR0aCBudW1iZXJzIHdoaWxlIGJl bmNobWFyayBydW5zCisgKiBtZWFzdXJlX3JlYWRfbWVtX2J3IC0gTWVhc3VyZXMgcmVhZCBt ZW1vcnkgYmFuZHdpZHRoIG51bWJlcnMgd2hpbGUgYmVuY2htYXJrIHJ1bnMKICAqIEB1cGFy YW1zOgkJVXNlciBzdXBwbGllZCBwYXJhbWV0ZXJzCiAgKiBAcGFyYW06CQlQYXJhbWV0ZXJz IHBhc3NlZCB0byByZXNjdHJsX3ZhbCgpCiAgKiBAYm1fcGlkOgkJUElEIHRoYXQgcnVucyB0 aGUgYmVuY2htYXJrCi0gKiBAYndfcmVwb3J0OgkJQmFuZHdpZHRoIHJlcG9ydCB0eXBlIChy ZWFkcywgd3JpdGVzKQogICoKICAqIE1lYXN1cmUgbWVtb3J5IGJhbmR3aWR0aCBmcm9tIHJl c2N0cmwgYW5kIGZyb20gYW5vdGhlciBzb3VyY2Ugd2hpY2ggaXMKICAqIHBlcmYgaW1jIHZh bHVlIG9yIGNvdWxkIGJlIHNvbWV0aGluZyBlbHNlIGlmIHBlcmYgaW1jIGV2ZW50IGlzIG5v dAogICogYXZhaWxhYmxlLiBDb21wYXJlIHRoZSB0d28gdmFsdWVzIHRvIHZhbGlkYXRlIHJl c2N0cmwgdmFsdWUuIEl0IHRha2VzCiAgKiAxIHNlYyB0byBtZWFzdXJlIHRoZSBkYXRhLgor ICogcmVzY3RybCBkb2VzIG5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHJlYWQgYW5kIHdyaXRl IG9wZXJhdGlvbnMgc28KKyAqIGl0cyBkYXRhIGluY2x1ZGVzIGFsbCBtZW1vcnkgb3BlcmF0 aW9ucy4KICAqLwotaW50IG1lYXN1cmVfbWVtX2J3KGNvbnN0IHN0cnVjdCB1c2VyX3BhcmFt cyAqdXBhcmFtcywKLQkJICAgc3RydWN0IHJlc2N0cmxfdmFsX3BhcmFtICpwYXJhbSwgcGlk X3QgYm1fcGlkLAotCQkgICBjb25zdCBjaGFyICpid19yZXBvcnQpCitpbnQgbWVhc3VyZV9y ZWFkX21lbV9idyhjb25zdCBzdHJ1Y3QgdXNlcl9wYXJhbXMgKnVwYXJhbXMsCisJCQlzdHJ1 Y3QgcmVzY3RybF92YWxfcGFyYW0gKnBhcmFtLCBwaWRfdCBibV9waWQpCiB7CiAJdW5zaWdu ZWQgbG9uZyBid19yZXNjLCBid19yZXNjX3N0YXJ0LCBid19yZXNjX2VuZDsKIAlGSUxFICpt ZW1fYndfZnA7CiAJZmxvYXQgYndfaW1jOwogCWludCByZXQ7CiAKLQlid19yZXBvcnQgPSBn ZXRfYndfcmVwb3J0X3R5cGUoYndfcmVwb3J0KTsKLQlpZiAoIWJ3X3JlcG9ydCkKLQkJcmV0 dXJuIC0xOwotCiAJbWVtX2J3X2ZwID0gb3Blbl9tZW1fYndfcmVzY3RybChtYm1fdG90YWxf cGF0aCk7CiAJaWYgKCFtZW1fYndfZnApCiAJCXJldHVybiAtMTsKIAotCXJldCA9IHBlcmZf b3Blbl9pbWNfbWVtX2J3KHVwYXJhbXMtPmNwdSk7CisJcmV0ID0gcGVyZl9vcGVuX2ltY19y ZWFkX21lbV9idyh1cGFyYW1zLT5jcHUpOwogCWlmIChyZXQgPCAwKQogCQlnb3RvIGNsb3Nl X2ZwOwogCkBAIC01OTAsMTcgKzUwNCwxNyBAQCBpbnQgbWVhc3VyZV9tZW1fYncoY29uc3Qg c3RydWN0IHVzZXJfcGFyYW1zICp1cGFyYW1zLAogCiAJcmV3aW5kKG1lbV9id19mcCk7CiAK LQlkb19pbWNfbWVtX2J3X3Rlc3QoKTsKKwlkb19pbWNfcmVhZF9tZW1fYndfdGVzdCgpOwog CiAJcmV0ID0gZ2V0X21lbV9id19yZXNjdHJsKG1lbV9id19mcCwgJmJ3X3Jlc2NfZW5kKTsK IAlpZiAocmV0IDwgMCkKIAkJZ290byBjbG9zZV9pbWM7CiAKLQlyZXQgPSBnZXRfbWVtX2J3 X2ltYyhid19yZXBvcnQsICZid19pbWMpOworCXJldCA9IGdldF9yZWFkX21lbV9id19pbWMo JmJ3X2ltYyk7CiAJaWYgKHJldCA8IDApCiAJCWdvdG8gY2xvc2VfaW1jOwogCi0JcGVyZl9j bG9zZV9pbWNfbWVtX2J3KCk7CisJcGVyZl9jbG9zZV9pbWNfcmVhZF9tZW1fYncoKTsKIAlm Y2xvc2UobWVtX2J3X2ZwKTsKIAogCWJ3X3Jlc2MgPSAoYndfcmVzY19lbmQgLSBid19yZXNj X3N0YXJ0KSAvIE1COwpAQCAtNjA4LDg3ICs1MjIsMzAgQEAgaW50IG1lYXN1cmVfbWVtX2J3 KGNvbnN0IHN0cnVjdCB1c2VyX3BhcmFtcyAqdXBhcmFtcywKIAlyZXR1cm4gcHJpbnRfcmVz dWx0c19idyhwYXJhbS0+ZmlsZW5hbWUsIGJtX3BpZCwgYndfaW1jLCBid19yZXNjKTsKIAog Y2xvc2VfaW1jOgotCXBlcmZfY2xvc2VfaW1jX21lbV9idygpOworCXBlcmZfY2xvc2VfaW1j X3JlYWRfbWVtX2J3KCk7CiBjbG9zZV9mcDoKIAlmY2xvc2UobWVtX2J3X2ZwKTsKIAlyZXR1 cm4gcmV0OwogfQogCi0vKgotICogcnVuX2JlbmNobWFyayAtIFJ1biBhIHNwZWNpZmllZCBi ZW5jaG1hcmsgb3IgZmlsbF9idWYgKGRlZmF1bHQgYmVuY2htYXJrKQotICoJCSAgIGluIHNw ZWNpZmllZCBzaWduYWwuIERpcmVjdCBiZW5jaG1hcmsgc3RkaW8gdG8gL2Rldi9udWxsLgot ICogQHNpZ251bToJc2lnbmFsIG51bWJlcgotICogQGluZm86CXNpZ25hbCBpbmZvCi0gKiBA dWNvbnRleHQ6CXVzZXIgY29udGV4dCBpbiBzaWduYWwgaGFuZGxpbmcKLSAqLwotc3RhdGlj IHZvaWQgcnVuX2JlbmNobWFyayhpbnQgc2lnbnVtLCBzaWdpbmZvX3QgKmluZm8sIHZvaWQg KnVjb250ZXh0KQotewotCWludCBvcGVyYXRpb24sIHJldCwgbWVtZmx1c2g7Ci0JY2hhciAq KmJlbmNobWFya19jbWQ7Ci0Jc2l6ZV90IHNwYW47Ci0JYm9vbCBvbmNlOwotCUZJTEUgKmZw OwotCi0JYmVuY2htYXJrX2NtZCA9IGluZm8tPnNpX3B0cjsKLQotCS8qCi0JICogRGlyZWN0 IHN0ZGlvIG9mIGNoaWxkIHRvIC9kZXYvbnVsbCwgc28gdGhhdCBvbmx5IHBhcmVudCB3cml0 ZXMgdG8KLQkgKiBzdGRpbyAoY29uc29sZSkKLQkgKi8KLQlmcCA9IGZyZW9wZW4oIi9kZXYv bnVsbCIsICJ3Iiwgc3Rkb3V0KTsKLQlpZiAoIWZwKSB7Ci0JCWtzZnRfcGVycm9yKCJVbmFi bGUgdG8gZGlyZWN0IGJlbmNobWFyayBzdGF0dXMgdG8gL2Rldi9udWxsIik7Ci0JCXBhcmVu dF9leGl0KHBwaWQpOwotCX0KLQotCWlmIChzdHJjbXAoYmVuY2htYXJrX2NtZFswXSwgImZp bGxfYnVmIikgPT0gMCkgewotCQkvKiBFeGVjdXRlIGRlZmF1bHQgZmlsbF9idWYgYmVuY2ht YXJrICovCi0JCXNwYW4gPSBzdHJ0b3VsKGJlbmNobWFya19jbWRbMV0sIE5VTEwsIDEwKTsK LQkJbWVtZmx1c2ggPSAgYXRvaShiZW5jaG1hcmtfY21kWzJdKTsKLQkJb3BlcmF0aW9uID0g YXRvaShiZW5jaG1hcmtfY21kWzNdKTsKLQkJaWYgKCFzdHJjbXAoYmVuY2htYXJrX2NtZFs0 XSwgInRydWUiKSkgewotCQkJb25jZSA9IHRydWU7Ci0JCX0gZWxzZSBpZiAoIXN0cmNtcChi ZW5jaG1hcmtfY21kWzRdLCAiZmFsc2UiKSkgewotCQkJb25jZSA9IGZhbHNlOwotCQl9IGVs c2UgewotCQkJa3NmdF9wcmludF9tc2coIkludmFsaWQgb25jZSBwYXJhbWV0ZXJcbiIpOwot CQkJcGFyZW50X2V4aXQocHBpZCk7Ci0JCX0KLQotCQlpZiAocnVuX2ZpbGxfYnVmKHNwYW4s IG1lbWZsdXNoLCBvcGVyYXRpb24sIG9uY2UpKQotCQkJZnByaW50ZihzdGRlcnIsICJFcnJv ciBpbiBydW5uaW5nIGZpbGwgYnVmZmVyXG4iKTsKLQl9IGVsc2UgewotCQkvKiBFeGVjdXRl IHNwZWNpZmllZCBiZW5jaG1hcmsgKi8KLQkJcmV0ID0gZXhlY3ZwKGJlbmNobWFya19jbWRb MF0sIGJlbmNobWFya19jbWQpOwotCQlpZiAocmV0KQotCQkJa3NmdF9wZXJyb3IoImV4ZWN2 cCIpOwotCX0KLQotCWZjbG9zZShzdGRvdXQpOwotCWtzZnRfcHJpbnRfbXNnKCJVbmFibGUg dG8gcnVuIHNwZWNpZmllZCBiZW5jaG1hcmtcbiIpOwotCXBhcmVudF9leGl0KHBwaWQpOwot fQotCiAvKgogICogcmVzY3RybF92YWw6CWV4ZWN1dGUgYmVuY2htYXJrIGFuZCBtZWFzdXJl IG1lbW9yeSBiYW5kd2lkdGggb24KICAqCQkJdGhlIGJlbmNobWFyawogICogQHRlc3Q6CQl0 ZXN0IGluZm9ybWF0aW9uIHN0cnVjdHVyZQogICogQHVwYXJhbXM6CQl1c2VyIHN1cHBsaWVk IHBhcmFtZXRlcnMKLSAqIEBiZW5jaG1hcmtfY21kOgliZW5jaG1hcmsgY29tbWFuZCBhbmQg aXRzIGFyZ3VtZW50cwogICogQHBhcmFtOgkJcGFyYW1ldGVycyBwYXNzZWQgdG8gcmVzY3Ry bF92YWwoKQogICoKICAqIFJldHVybjoJCTAgd2hlbiB0aGUgdGVzdCB3YXMgcnVuLCA8IDAg b24gZXJyb3IuCiAgKi8KIGludCByZXNjdHJsX3ZhbChjb25zdCBzdHJ1Y3QgcmVzY3RybF90 ZXN0ICp0ZXN0LAogCQljb25zdCBzdHJ1Y3QgdXNlcl9wYXJhbXMgKnVwYXJhbXMsCi0JCWNv bnN0IGNoYXIgKiBjb25zdCAqYmVuY2htYXJrX2NtZCwKIAkJc3RydWN0IHJlc2N0cmxfdmFs X3BhcmFtICpwYXJhbSkKIHsKLQlzdHJ1Y3Qgc2lnYWN0aW9uIHNpZ2FjdDsKLQlpbnQgcmV0 ID0gMCwgcGlwZWZkWzJdOwotCWNoYXIgcGlwZV9tZXNzYWdlID0gMDsKLQl1bmlvbiBzaWd2 YWwgdmFsdWU7CisJdW5zaWduZWQgY2hhciAqYnVmID0gTlVMTDsKKwljcHVfc2V0X3Qgb2xk X2FmZmluaXR5OwogCWludCBkb21haW5faWQ7CisJaW50IHJldCA9IDA7CisJcGlkX3QgcHBp ZDsKIAogCWlmIChzdHJjbXAocGFyYW0tPmZpbGVuYW1lLCAiIikgPT0gMCkKIAkJc3ByaW50 ZihwYXJhbS0+ZmlsZW5hbWUsICJzdGRpbyIpOwpAQCAtNjk5LDExMSArNTU2LDY1IEBAIGlu dCByZXNjdHJsX3ZhbChjb25zdCBzdHJ1Y3QgcmVzY3RybF90ZXN0ICp0ZXN0LAogCQlyZXR1 cm4gcmV0OwogCX0KIAotCS8qCi0JICogSWYgYmVuY2htYXJrIHdhc24ndCBzdWNjZXNzZnVs bHkgc3RhcnRlZCBieSBjaGlsZCwgdGhlbiBjaGlsZCBzaG91bGQKLQkgKiBraWxsIHBhcmVu dCwgc28gc2F2ZSBwYXJlbnQncyBwaWQKLQkgKi8KIAlwcGlkID0gZ2V0cGlkKCk7CiAKLQlp ZiAocGlwZShwaXBlZmQpKSB7Ci0JCWtzZnRfcGVycm9yKCJVbmFibGUgdG8gY3JlYXRlIHBp cGUiKTsKKwkvKiBUYXNrc2V0IHRlc3QgdG8gc3BlY2lmaWVkIENQVS4gKi8KKwlyZXQgPSB0 YXNrc2V0X2JlbmNobWFyayhwcGlkLCB1cGFyYW1zLT5jcHUsICZvbGRfYWZmaW5pdHkpOwor CWlmIChyZXQpCisJCXJldHVybiByZXQ7CiAKLQkJcmV0dXJuIC0xOworCS8qIFdyaXRlIHRl c3QgdG8gc3BlY2lmaWVkIGNvbnRyb2wgJiBtb25pdG9yaW5nIGdyb3VwIGluIHJlc2N0cmwg RlMuICovCisJcmV0ID0gd3JpdGVfYm1fcGlkX3RvX3Jlc2N0cmwocHBpZCwgcGFyYW0tPmN0 cmxncnAsIHBhcmFtLT5tb25ncnApOworCWlmIChyZXQpCisJCWdvdG8gcmVzZXRfYWZmaW5p dHk7CisKKwlpZiAocGFyYW0tPmluaXQpIHsKKwkJcmV0ID0gcGFyYW0tPmluaXQocGFyYW0s IGRvbWFpbl9pZCk7CisJCWlmIChyZXQpCisJCQlnb3RvIHJlc2V0X2FmZmluaXR5OwogCX0K IAogCS8qCi0JICogRm9yayB0byBzdGFydCBiZW5jaG1hcmssIHNhdmUgY2hpbGQncyBwaWQg c28gdGhhdCBpdCBjYW4gYmUga2lsbGVkCi0JICogd2hlbiBuZWVkZWQKKwkgKiBJZiBub3Qg cnVubmluZyB1c2VyIHByb3ZpZGVkIGJlbmNobWFyaywgcnVuIHRoZSBkZWZhdWx0CisJICog ImZpbGxfYnVmIi4gRmlyc3QgcGhhc2Ugb2YgImZpbGxfYnVmIiBpcyB0byBwcmVwYXJlIHRo ZQorCSAqIGJ1ZmZlciB0aGF0IHRoZSBiZW5jaG1hcmsgd2lsbCBvcGVyYXRlIG9uLiBObyBt ZWFzdXJlbWVudHMKKwkgKiBhcmUgbmVlZGVkIGR1cmluZyB0aGlzIHBoYXNlIGFuZCBwcmVw YXJlZCBtZW1vcnkgd2lsbCBiZQorCSAqIHBhc3NlZCB0byBuZXh0IHBhcnQgb2YgYmVuY2ht YXJrIHZpYSBjb3B5LW9uLXdyaXRlIHRodXMKKwkgKiBubyBpbXBhY3Qgb24gdGhlIGJlbmNo bWFyayB0aGF0IHJlbGllcyBvbiByZWFkaW5nIGZyb20KKwkgKiBtZW1vcnkgb25seS4KIAkg Ki8KKwlpZiAocGFyYW0tPmZpbGxfYnVmKSB7CisJCWJ1ZiA9IGFsbG9jX2J1ZmZlcihwYXJh bS0+ZmlsbF9idWYtPmJ1Zl9zaXplLAorCQkJCSAgIHBhcmFtLT5maWxsX2J1Zi0+bWVtZmx1 c2gpOworCQlpZiAoIWJ1ZikgeworCQkJcmV0ID0gLUVOT01FTTsKKwkJCWdvdG8gcmVzZXRf YWZmaW5pdHk7CisJCX0KKwl9CisKIAlmZmx1c2goc3Rkb3V0KTsKIAlibV9waWQgPSBmb3Jr KCk7CiAJaWYgKGJtX3BpZCA9PSAtMSkgeworCQlyZXQgPSAtZXJybm87CiAJCWtzZnRfcGVy cm9yKCJVbmFibGUgdG8gZm9yayIpOwotCi0JCXJldHVybiAtMTsKKwkJZ290byBmcmVlX2J1 ZjsKIAl9CiAKLQlpZiAoYm1fcGlkID09IDApIHsKLQkJLyoKLQkJICogTWFzayBhbGwgc2ln bmFscyBleGNlcHQgU0lHVVNSMSwgcGFyZW50IHVzZXMgU0lHVVNSMSB0bwotCQkgKiBzdGFy dCBiZW5jaG1hcmsKLQkJICovCi0JCXNpZ2ZpbGxzZXQoJnNpZ2FjdC5zYV9tYXNrKTsKLQkJ c2lnZGVsc2V0KCZzaWdhY3Quc2FfbWFzaywgU0lHVVNSMSk7Ci0KLQkJc2lnYWN0LnNhX3Np Z2FjdGlvbiA9IHJ1bl9iZW5jaG1hcms7Ci0JCXNpZ2FjdC5zYV9mbGFncyA9IFNBX1NJR0lO Rk87Ci0KLQkJLyogUmVnaXN0ZXIgZm9yICJTSUdVU1IxIiBzaWduYWwgZnJvbSBwYXJlbnQg Ki8KLQkJaWYgKHNpZ2FjdGlvbihTSUdVU1IxLCAmc2lnYWN0LCBOVUxMKSkgewotCQkJa3Nm dF9wZXJyb3IoIkNhbid0IHJlZ2lzdGVyIGNoaWxkIGZvciBzaWduYWwiKTsKLQkJCXBhcmVu dF9leGl0KHBwaWQpOwotCQl9Ci0KLQkJLyogVGVsbCBwYXJlbnQgdGhhdCBjaGlsZCBpcyBy ZWFkeSAqLwotCQljbG9zZShwaXBlZmRbMF0pOwotCQlwaXBlX21lc3NhZ2UgPSAxOwotCQlp ZiAod3JpdGUocGlwZWZkWzFdLCAmcGlwZV9tZXNzYWdlLCBzaXplb2YocGlwZV9tZXNzYWdl KSkgPAotCQkgICAgc2l6ZW9mKHBpcGVfbWVzc2FnZSkpIHsKLQkJCWtzZnRfcGVycm9yKCJG YWlsZWQgc2lnbmFsaW5nIHBhcmVudCBwcm9jZXNzIik7Ci0JCQljbG9zZShwaXBlZmRbMV0p OwotCQkJcmV0dXJuIC0xOwotCQl9Ci0JCWNsb3NlKHBpcGVmZFsxXSk7Ci0KLQkJLyogU3Vz cGVuZCBjaGlsZCB1bnRpbCBkZWxpdmVyeSBvZiAiU0lHVVNSMSIgZnJvbSBwYXJlbnQgKi8K LQkJc2lnc3VzcGVuZCgmc2lnYWN0LnNhX21hc2spOwotCi0JCWtzZnRfcGVycm9yKCJDaGls ZCBpcyBkb25lIik7Ci0JCXBhcmVudF9leGl0KHBwaWQpOwotCX0KLQotCWtzZnRfcHJpbnRf bXNnKCJCZW5jaG1hcmsgUElEOiAlZFxuIiwgKGludClibV9waWQpOwotCiAJLyoKLQkgKiBU aGUgY2FzdCByZW1vdmVzIGNvbnN0bmVzcyBidXQgbm90aGluZyBtdXRhdGVzIGJlbmNobWFy a19jbWQgd2l0aGluCi0JICogdGhlIGNvbnRleHQgb2YgdGhpcyBwcm9jZXNzLiBBdCB0aGUg cmVjZWl2aW5nIHByb2Nlc3MsIGl0IGJlY29tZXMKLQkgKiBhcmd2LCB3aGljaCBpcyBtdXRh YmxlLCBvbiBleGVjKCkgYnV0IHRoYXQncyBhZnRlciBmb3JrKCkgc28gaXQKLQkgKiBkb2Vz bid0IG1hdHRlciBmb3IgdGhlIHByb2Nlc3MgcnVubmluZyB0aGUgdGVzdHMuCisJICogV2hh dCBuZWVkcyB0byBiZSBtZWFzdXJlZCBydW5zIGluIHNlcGFyYXRlIHByb2Nlc3MgdW50aWwK KwkgKiB0ZXJtaW5hdGVkLgogCSAqLwotCXZhbHVlLnNpdmFsX3B0ciA9ICh2b2lkICopYmVu Y2htYXJrX2NtZDsKLQotCS8qIFRhc2tzZXQgYmVuY2htYXJrIHRvIHNwZWNpZmllZCBjcHUg Ki8KLQlyZXQgPSB0YXNrc2V0X2JlbmNobWFyayhibV9waWQsIHVwYXJhbXMtPmNwdSwgTlVM TCk7Ci0JaWYgKHJldCkKLQkJZ290byBvdXQ7Ci0KLQkvKiBXcml0ZSBiZW5jaG1hcmsgdG8g c3BlY2lmaWVkIGNvbnRyb2wmbW9uaXRvcmluZyBncnAgaW4gcmVzY3RybCBGUyAqLwotCXJl dCA9IHdyaXRlX2JtX3BpZF90b19yZXNjdHJsKGJtX3BpZCwgcGFyYW0tPmN0cmxncnAsIHBh cmFtLT5tb25ncnApOwotCWlmIChyZXQpCi0JCWdvdG8gb3V0OwotCi0JaWYgKHBhcmFtLT5p bml0KSB7Ci0JCXJldCA9IHBhcmFtLT5pbml0KHBhcmFtLCBkb21haW5faWQpOwotCQlpZiAo cmV0KQotCQkJZ290byBvdXQ7Ci0JfQotCi0JLyogUGFyZW50IHdhaXRzIGZvciBjaGlsZCB0 byBiZSByZWFkeS4gKi8KLQljbG9zZShwaXBlZmRbMV0pOwotCXdoaWxlIChwaXBlX21lc3Nh Z2UgIT0gMSkgewotCQlpZiAocmVhZChwaXBlZmRbMF0sICZwaXBlX21lc3NhZ2UsIHNpemVv ZihwaXBlX21lc3NhZ2UpKSA8Ci0JCSAgICBzaXplb2YocGlwZV9tZXNzYWdlKSkgewotCQkJ a3NmdF9wZXJyb3IoIkZhaWxlZCByZWFkaW5nIG1lc3NhZ2UgZnJvbSBjaGlsZCBwcm9jZXNz Iik7Ci0JCQljbG9zZShwaXBlZmRbMF0pOwotCQkJZ290byBvdXQ7Ci0JCX0KKwlpZiAoYm1f cGlkID09IDApIHsKKwkJaWYgKHBhcmFtLT5maWxsX2J1ZikKKwkJCWZpbGxfY2FjaGVfcmVh ZChidWYsIHBhcmFtLT5maWxsX2J1Zi0+YnVmX3NpemUsIGZhbHNlKTsKKwkJZWxzZSBpZiAo dXBhcmFtcy0+YmVuY2htYXJrX2NtZFswXSkKKwkJCWV4ZWN2cCh1cGFyYW1zLT5iZW5jaG1h cmtfY21kWzBdLCAoY2hhciAqKil1cGFyYW1zLT5iZW5jaG1hcmtfY21kKTsKKwkJZXhpdChF WElUX1NVQ0NFU1MpOwogCX0KLQljbG9zZShwaXBlZmRbMF0pOwogCi0JLyogU2lnbmFsIGNo aWxkIHRvIHN0YXJ0IGJlbmNobWFyayAqLwotCWlmIChzaWdxdWV1ZShibV9waWQsIFNJR1VT UjEsIHZhbHVlKSA9PSAtMSkgewotCQlrc2Z0X3BlcnJvcigic2lncXVldWUgU0lHVVNSMSB0 byBjaGlsZCIpOwotCQlyZXQgPSAtMTsKLQkJZ290byBvdXQ7Ci0JfQorCWtzZnRfcHJpbnRf bXNnKCJCZW5jaG1hcmsgUElEOiAlZFxuIiwgKGludClibV9waWQpOwogCi0JLyogR2l2ZSBi ZW5jaG1hcmsgZW5vdWdoIHRpbWUgdG8gZnVsbHkgcnVuICovCisJLyogR2l2ZSBiZW5jaG1h cmsgZW5vdWdoIHRpbWUgdG8gZnVsbHkgcnVuLiAqLwogCXNsZWVwKDEpOwogCiAJLyogVGVz dCBydW5zIHVudGlsIHRoZSBjYWxsYmFjayBzZXR1cCgpIHRlbGxzIHRoZSB0ZXN0IHRvIHN0 b3AuICovCkBAIC04MjEsOCArNjMyLDEwIEBAIGludCByZXNjdHJsX3ZhbChjb25zdCBzdHJ1 Y3QgcmVzY3RybF90ZXN0ICp0ZXN0LAogCQkJYnJlYWs7CiAJfQogCi1vdXQ6CiAJa2lsbChi bV9waWQsIFNJR0tJTEwpOwotCitmcmVlX2J1ZjoKKwlmcmVlKGJ1Zik7CityZXNldF9hZmZp bml0eToKKwl0YXNrc2V0X3Jlc3RvcmUocHBpZCwgJm9sZF9hZmZpbml0eSk7CiAJcmV0dXJu IHJldDsKIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwv cmVzY3RybGZzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL3Jlc2N0cmxm cy5jCmluZGV4IDI1MGMzMjAzNDlhNy4uZDM4ZDZkZDkwYmU0IDEwMDY0NAotLS0gYS90b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy9yZXNjdHJsL3Jlc2N0cmxmcy5jCisrKyBiL3Rvb2xzL3Rl c3Rpbmcvc2VsZnRlc3RzL3Jlc2N0cmwvcmVzY3RybGZzLmMKQEAgLTE4Miw3ICsxODIsNyBA QCBpbnQgZ2V0X2NhY2hlX3NpemUoaW50IGNwdV9ubywgY29uc3QgY2hhciAqY2FjaGVfdHlw ZSwgdW5zaWduZWQgbG9uZyAqY2FjaGVfc2l6ZQogCiAJCXJldHVybiAtMTsKIAl9Ci0JaWYg KGZzY2FuZihmcCwgIiVzIiwgY2FjaGVfc3RyKSA8PSAwKSB7CisJaWYgKGZzY2FuZihmcCwg IiU2M3MiLCBjYWNoZV9zdHIpIDw9IDApIHsKIAkJa3NmdF9wZXJyb3IoIkNvdWxkIG5vdCBn ZXQgY2FjaGVfc2l6ZSIpOwogCQlmY2xvc2UoZnApOwogCkBAIC04MzEsMjMgKzgzMSw2IEBA IGludCBmaWx0ZXJfZG1lc2codm9pZCkKIAlyZXR1cm4gMDsKIH0KIAotY29uc3QgY2hhciAq Z2V0X2J3X3JlcG9ydF90eXBlKGNvbnN0IGNoYXIgKmJ3X3JlcG9ydCkKLXsKLQlpZiAoc3Ry Y21wKGJ3X3JlcG9ydCwgInJlYWRzIikgPT0gMCkKLQkJcmV0dXJuIGJ3X3JlcG9ydDsKLQlp ZiAoc3RyY21wKGJ3X3JlcG9ydCwgIndyaXRlcyIpID09IDApCi0JCXJldHVybiBid19yZXBv cnQ7Ci0JaWYgKHN0cmNtcChid19yZXBvcnQsICJudC13cml0ZXMiKSA9PSAwKSB7Ci0JCXJl dHVybiAid3JpdGVzIjsKLQl9Ci0JaWYgKHN0cmNtcChid19yZXBvcnQsICJ0b3RhbCIpID09 IDApCi0JCXJldHVybiBid19yZXBvcnQ7Ci0KLQlmcHJpbnRmKHN0ZGVyciwgIlJlcXVlc3Rl ZCBpTUMgYmFuZHdpZHRoIHJlcG9ydCB0eXBlIHVuYXZhaWxhYmxlXG4iKTsKLQotCXJldHVy biBOVUxMOwotfQotCiBpbnQgcGVyZl9ldmVudF9vcGVuKHN0cnVjdCBwZXJmX2V2ZW50X2F0 dHIgKmh3X2V2ZW50LCBwaWRfdCBwaWQsIGludCBjcHUsCiAJCSAgICBpbnQgZ3JvdXBfZmQs IHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiB7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3Nl bGZ0ZXN0cy9ydGMvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9ydGMvTWFr ZWZpbGUKaW5kZXggNTUxOThlY2MwNGRiLi45ZGJiMzk1YzVjNzkgMTAwNjQ0Ci0tLSBhL3Rv b2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3J0Yy9NYWtlZmlsZQorKysgYi90b29scy90ZXN0aW5n L3NlbGZ0ZXN0cy9ydGMvTWFrZWZpbGUKQEAgLTEsNSArMSw1IEBACiAjIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wCi1DRkxBR1MgKz0gLU8zIC1XbCwtbm8tYXMtbmVlZGVk IC1XYWxsCitDRkxBR1MgKz0gLU8zIC1XbCwtbm8tYXMtbmVlZGVkIC1XYWxsIC1JJCh0b3Bf c3JjZGlyKS91c3IvaW5jbHVkZQogTERMSUJTICs9IC1scnQgLWxwdGhyZWFkIC1sbQogCiBU RVNUX0dFTl9QUk9HUyA9IHJ0Y3Rlc3QKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2Vs ZnRlc3RzL3J0Yy9ydGN0ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9ydGMvcnRj dGVzdC5jCmluZGV4IDM4YThlNjdkZTc3ZC4uZTEwMzA5N2QwYjViIDEwMDY0NAotLS0gYS90 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9ydGMvcnRjdGVzdC5jCisrKyBiL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL3J0Yy9ydGN0ZXN0LmMKQEAgLTI1LDYgKzI1LDEyIEBACiAKIHN0YXRp YyBjaGFyICpydGNfZmlsZSA9ICIvZGV2L3J0YzAiOwogCitlbnVtIHJ0Y19hbGFybV9zdGF0 ZSB7CisJUlRDX0FMQVJNX1VOS05PV04sCisJUlRDX0FMQVJNX0VOQUJMRUQsCisJUlRDX0FM QVJNX0RJU0FCTEVELAorfTsKKwogRklYVFVSRShydGMpIHsKIAlpbnQgZmQ7CiB9OwpAQCAt ODIsNiArODgsMjQgQEAgc3RhdGljIHZvaWQgbmFub3NsZWVwX3dpdGhfcmV0cmllcyhsb25n IG5zKQogCX0KIH0KIAorc3RhdGljIGVudW0gcnRjX2FsYXJtX3N0YXRlIGdldF9ydGNfYWxh cm1fc3RhdGUoaW50IGZkKQoreworCXN0cnVjdCBydGNfcGFyYW0gcGFyYW0gPSB7IDAgfTsK KwlpbnQgcmM7CisKKwkvKiBWYWxpZGF0ZSBrZXJuZWwgcmVmbGVjdHMgdW5zdXBwb3J0ZWQg UlRDIGFsYXJtIHN0YXRlICovCisJcGFyYW0ucGFyYW0gPSBSVENfUEFSQU1fRkVBVFVSRVM7 CisJcGFyYW0uaW5kZXggPSAwOworCXJjID0gaW9jdGwoZmQsIFJUQ19QQVJBTV9HRVQsICZw YXJhbSk7CisJaWYgKHJjIDwgMCkKKwkJcmV0dXJuIFJUQ19BTEFSTV9VTktOT1dOOworCisJ aWYgKChwYXJhbS51dmFsdWUgJiBfQklUVUwoUlRDX0ZFQVRVUkVfQUxBUk0pKSA9PSAwKQor CQlyZXR1cm4gUlRDX0FMQVJNX0RJU0FCTEVEOworCisJcmV0dXJuIFJUQ19BTEFSTV9FTkFC TEVEOworfQorCiBURVNUX0ZfVElNRU9VVChydGMsIGRhdGVfcmVhZF9sb29wLCBSRUFEX0xP T1BfRFVSQVRJT05fU0VDICsgMikgewogCWludCByYzsKIAlsb25nIGl0ZXJfY291bnQgPSAw OwpAQCAtMTk3LDExICsyMjEsMTYgQEAgVEVTVF9GKHJ0YywgYWxhcm1fYWxtX3NldCkgewog CWZkX3NldCByZWFkZmRzOwogCXRpbWVfdCBzZWNzLCBuZXc7CiAJaW50IHJjOworCWVudW0g cnRjX2FsYXJtX3N0YXRlIGFsYXJtX3N0YXRlID0gUlRDX0FMQVJNX1VOS05PV047CiAKIAlp ZiAoc2VsZi0+ZmQgPT0gLTEgJiYgZXJybm8gPT0gRU5PRU5UKQogCQlTS0lQKHJldHVybiwg IlNraXBwaW5nIHRlc3Qgc2luY2UgJXMgZG9lcyBub3QgZXhpc3QiLCBydGNfZmlsZSk7CiAJ QVNTRVJUX05FKC0xLCBzZWxmLT5mZCk7CiAKKwlhbGFybV9zdGF0ZSA9IGdldF9ydGNfYWxh cm1fc3RhdGUoc2VsZi0+ZmQpOworCWlmIChhbGFybV9zdGF0ZSA9PSBSVENfQUxBUk1fRElT QUJMRUQpCisJCVNLSVAocmV0dXJuLCAiU2tpcHBpbmcgdGVzdCBzaW5jZSBhbGFybXMgYXJl IG5vdCBzdXBwb3J0ZWQuIik7CisKIAlyYyA9IGlvY3RsKHNlbGYtPmZkLCBSVENfUkRfVElN RSwgJnRtKTsKIAlBU1NFUlRfTkUoLTEsIHJjKTsKIApAQCAtMjEwLDYgKzIzOSwxMSBAQCBU RVNUX0YocnRjLCBhbGFybV9hbG1fc2V0KSB7CiAKIAlyYyA9IGlvY3RsKHNlbGYtPmZkLCBS VENfQUxNX1NFVCwgJnRtKTsKIAlpZiAocmMgPT0gLTEpIHsKKwkJLyoKKwkJICogUmVwb3J0 IGVycm9yIGlmIHJ0YyBhbGFybSB3YXMgZW5hYmxlZC4gRmFsbGJhY2sgdG8gY2hlY2sgaW9j dGwKKwkJICogZXJyb3IgbnVtYmVyIGlmIHJ0YyBhbGFybSBzdGF0ZSBpcyB1bmtub3duLgor CQkgKi8KKwkJQVNTRVJUX0VRKFJUQ19BTEFSTV9VTktOT1dOLCBhbGFybV9zdGF0ZSk7CiAJ CUFTU0VSVF9FUShFSU5WQUwsIGVycm5vKTsKIAkJVEhfTE9HKCJza2lwIGFsYXJtcyBhcmUg bm90IHN1cHBvcnRlZC4iKTsKIAkJcmV0dXJuOwpAQCAtMjU1LDExICsyODksMTYgQEAgVEVT VF9GKHJ0YywgYWxhcm1fd2thbG1fc2V0KSB7CiAJZmRfc2V0IHJlYWRmZHM7CiAJdGltZV90 IHNlY3MsIG5ldzsKIAlpbnQgcmM7CisJZW51bSBydGNfYWxhcm1fc3RhdGUgYWxhcm1fc3Rh dGUgPSBSVENfQUxBUk1fVU5LTk9XTjsKIAogCWlmIChzZWxmLT5mZCA9PSAtMSAmJiBlcnJu byA9PSBFTk9FTlQpCiAJCVNLSVAocmV0dXJuLCAiU2tpcHBpbmcgdGVzdCBzaW5jZSAlcyBk b2VzIG5vdCBleGlzdCIsIHJ0Y19maWxlKTsKIAlBU1NFUlRfTkUoLTEsIHNlbGYtPmZkKTsK IAorCWFsYXJtX3N0YXRlID0gZ2V0X3J0Y19hbGFybV9zdGF0ZShzZWxmLT5mZCk7CisJaWYg KGFsYXJtX3N0YXRlID09IFJUQ19BTEFSTV9ESVNBQkxFRCkKKwkJU0tJUChyZXR1cm4sICJT a2lwcGluZyB0ZXN0IHNpbmNlIGFsYXJtcyBhcmUgbm90IHN1cHBvcnRlZC4iKTsKKwogCXJj ID0gaW9jdGwoc2VsZi0+ZmQsIFJUQ19SRF9USU1FLCAmYWxhcm0udGltZSk7CiAJQVNTRVJU X05FKC0xLCByYyk7CiAKQEAgLTI3MCw2ICszMDksMTEgQEAgVEVTVF9GKHJ0YywgYWxhcm1f d2thbG1fc2V0KSB7CiAKIAlyYyA9IGlvY3RsKHNlbGYtPmZkLCBSVENfV0tBTE1fU0VULCAm YWxhcm0pOwogCWlmIChyYyA9PSAtMSkgeworCQkvKgorCQkgKiBSZXBvcnQgZXJyb3IgaWYg cnRjIGFsYXJtIHdhcyBlbmFibGVkLiBGYWxsYmFjayB0byBjaGVjayBpb2N0bAorCQkgKiBl cnJvciBudW1iZXIgaWYgcnRjIGFsYXJtIHN0YXRlIGlzIHVua25vd24uCisJCSAqLworCQlB U1NFUlRfRVEoUlRDX0FMQVJNX1VOS05PV04sIGFsYXJtX3N0YXRlKTsKIAkJQVNTRVJUX0VR KEVJTlZBTCwgZXJybm8pOwogCQlUSF9MT0coInNraXAgYWxhcm1zIGFyZSBub3Qgc3VwcG9y dGVkLiIpOwogCQlyZXR1cm47CkBAIC0zMDcsMTEgKzM1MSwxNiBAQCBURVNUX0ZfVElNRU9V VChydGMsIGFsYXJtX2FsbV9zZXRfbWludXRlLCA2NSkgewogCWZkX3NldCByZWFkZmRzOwog CXRpbWVfdCBzZWNzLCBuZXc7CiAJaW50IHJjOworCWVudW0gcnRjX2FsYXJtX3N0YXRlIGFs YXJtX3N0YXRlID0gUlRDX0FMQVJNX1VOS05PV047CiAKIAlpZiAoc2VsZi0+ZmQgPT0gLTEg JiYgZXJybm8gPT0gRU5PRU5UKQogCQlTS0lQKHJldHVybiwgIlNraXBwaW5nIHRlc3Qgc2lu Y2UgJXMgZG9lcyBub3QgZXhpc3QiLCBydGNfZmlsZSk7CiAJQVNTRVJUX05FKC0xLCBzZWxm LT5mZCk7CiAKKwlhbGFybV9zdGF0ZSA9IGdldF9ydGNfYWxhcm1fc3RhdGUoc2VsZi0+ZmQp OworCWlmIChhbGFybV9zdGF0ZSA9PSBSVENfQUxBUk1fRElTQUJMRUQpCisJCVNLSVAocmV0 dXJuLCAiU2tpcHBpbmcgdGVzdCBzaW5jZSBhbGFybXMgYXJlIG5vdCBzdXBwb3J0ZWQuIik7 CisKIAlyYyA9IGlvY3RsKHNlbGYtPmZkLCBSVENfUkRfVElNRSwgJnRtKTsKIAlBU1NFUlRf TkUoLTEsIHJjKTsKIApAQCAtMzIwLDYgKzM2OSwxMSBAQCBURVNUX0ZfVElNRU9VVChydGMs IGFsYXJtX2FsbV9zZXRfbWludXRlLCA2NSkgewogCiAJcmMgPSBpb2N0bChzZWxmLT5mZCwg UlRDX0FMTV9TRVQsICZ0bSk7CiAJaWYgKHJjID09IC0xKSB7CisJCS8qCisJCSAqIFJlcG9y dCBlcnJvciBpZiBydGMgYWxhcm0gd2FzIGVuYWJsZWQuIEZhbGxiYWNrIHRvIGNoZWNrIGlv Y3RsCisJCSAqIGVycm9yIG51bWJlciBpZiBydGMgYWxhcm0gc3RhdGUgaXMgdW5rbm93bi4K KwkJICovCisJCUFTU0VSVF9FUShSVENfQUxBUk1fVU5LTk9XTiwgYWxhcm1fc3RhdGUpOwog CQlBU1NFUlRfRVEoRUlOVkFMLCBlcnJubyk7CiAJCVRIX0xPRygic2tpcCBhbGFybXMgYXJl IG5vdCBzdXBwb3J0ZWQuIik7CiAJCXJldHVybjsKQEAgLTM2NSwxMSArNDE5LDE2IEBAIFRF U1RfRl9USU1FT1VUKHJ0YywgYWxhcm1fd2thbG1fc2V0X21pbnV0ZSwgNjUpIHsKIAlmZF9z ZXQgcmVhZGZkczsKIAl0aW1lX3Qgc2VjcywgbmV3OwogCWludCByYzsKKwllbnVtIHJ0Y19h bGFybV9zdGF0ZSBhbGFybV9zdGF0ZSA9IFJUQ19BTEFSTV9VTktOT1dOOwogCiAJaWYgKHNl bGYtPmZkID09IC0xICYmIGVycm5vID09IEVOT0VOVCkKIAkJU0tJUChyZXR1cm4sICJTa2lw cGluZyB0ZXN0IHNpbmNlICVzIGRvZXMgbm90IGV4aXN0IiwgcnRjX2ZpbGUpOwogCUFTU0VS VF9ORSgtMSwgc2VsZi0+ZmQpOwogCisJYWxhcm1fc3RhdGUgPSBnZXRfcnRjX2FsYXJtX3N0 YXRlKHNlbGYtPmZkKTsKKwlpZiAoYWxhcm1fc3RhdGUgPT0gUlRDX0FMQVJNX0RJU0FCTEVE KQorCQlTS0lQKHJldHVybiwgIlNraXBwaW5nIHRlc3Qgc2luY2UgYWxhcm1zIGFyZSBub3Qg c3VwcG9ydGVkLiIpOworCiAJcmMgPSBpb2N0bChzZWxmLT5mZCwgUlRDX1JEX1RJTUUsICZh bGFybS50aW1lKTsKIAlBU1NFUlRfTkUoLTEsIHJjKTsKIApAQCAtMzgwLDYgKzQzOSwxMSBA QCBURVNUX0ZfVElNRU9VVChydGMsIGFsYXJtX3drYWxtX3NldF9taW51dGUsIDY1KSB7CiAK IAlyYyA9IGlvY3RsKHNlbGYtPmZkLCBSVENfV0tBTE1fU0VULCAmYWxhcm0pOwogCWlmIChy YyA9PSAtMSkgeworCQkvKgorCQkgKiBSZXBvcnQgZXJyb3IgaWYgcnRjIGFsYXJtIHdhcyBl bmFibGVkLiBGYWxsYmFjayB0byBjaGVjayBpb2N0bAorCQkgKiBlcnJvciBudW1iZXIgaWYg cnRjIGFsYXJtIHN0YXRlIGlzIHVua25vd24uCisJCSAqLworCQlBU1NFUlRfRVEoUlRDX0FM QVJNX1VOS05PV04sIGFsYXJtX3N0YXRlKTsKIAkJQVNTRVJUX0VRKEVJTlZBTCwgZXJybm8p OwogCQlUSF9MT0coInNraXAgYWxhcm1zIGFyZSBub3Qgc3VwcG9ydGVkLiIpOwogCQlyZXR1 cm47CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zaWdhbHRzdGFjay8u Z2l0aWdub3JlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc2lnbmFsLy5naXRpZ25vcmUK c2ltaWxhcml0eSBpbmRleCA3MCUKcmVuYW1lIGZyb20gdG9vbHMvdGVzdGluZy9zZWxmdGVz dHMvc2lnYWx0c3RhY2svLmdpdGlnbm9yZQpyZW5hbWUgdG8gdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvc2lnbmFsLy5naXRpZ25vcmUKaW5kZXggNTBhMTlhODg4OGNlLi4zZjMzOTg2NWEz YjYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3NpZ2FsdHN0YWNrLy5n aXRpZ25vcmUKKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc2lnbmFsLy5naXRpZ25v cmUKQEAgLTEsMiArMSwzIEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w LW9ubHkKK21hbmdsZV91Y19zaWdtYXNrCiBzYXMKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL3NpZ2FsdHN0YWNrL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvc2lnbmFsL01ha2VmaWxlCnNpbWlsYXJpdHkgaW5kZXggNTYlCnJlbmFtZSBmcm9t IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3NpZ2FsdHN0YWNrL01ha2VmaWxlCnJlbmFtZSB0 byB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zaWduYWwvTWFrZWZpbGUKaW5kZXggM2U5NmQ1 ZDQ3MDM2Li5lMGJmNzA1OGQxOWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3NpZ2FsdHN0YWNrL01ha2VmaWxlCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Rz L3NpZ25hbC9NYWtlZmlsZQpAQCAtMSw2ICsxLDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAtb25seQogQ0ZMQUdTID0gLVdhbGwKLVRFU1RfR0VOX1BST0dTID0g c2FzCitURVNUX0dFTl9QUk9HUyA9IG1hbmdsZV91Y19zaWdtYXNrCitURVNUX0dFTl9QUk9H UyArPSBzYXMKIAogaW5jbHVkZSAuLi9saWIubWsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVz dGluZy9zZWxmdGVzdHMvc2lnYWx0c3RhY2svY3VycmVudF9zdGFja19wb2ludGVyLmggYi90 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zaWduYWwvY3VycmVudF9zdGFja19wb2ludGVyLmgK c2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3NpZ2FsdHN0YWNrL2N1cnJlbnRfc3RhY2tfcG9pbnRlci5oCnJlbmFtZSB0byB0b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy9zaWduYWwvY3VycmVudF9zdGFja19wb2ludGVyLmgKZGlm ZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3NpZ25hbC9tYW5nbGVfdWNfc2ln bWFzay5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc2lnbmFsL21hbmdsZV91Y19zaWdt YXNrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNzlhYjky MTc4YTgKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zaWdu YWwvbWFuZ2xlX3VjX3NpZ21hc2suYwpAQCAtMCwwICsxLDE4NCBAQAorLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy NCBBUk0gTHRkLgorICoKKyAqIEF1dGhvcjogRGV2IEphaW4gPGRldi5qYWluQGFybS5jb20+ CisgKgorICogVGVzdCBkZXNjcmliaW5nIGEgY2xlYXIgZGlzdGluY3Rpb24gYmV0d2VlbiBz aWduYWwgc3RhdGVzIC0gZGVsaXZlcmVkIGFuZAorICogYmxvY2tlZCwgYW5kIHRoZWlyIHJl bGF0aW9uIHdpdGggdWNvbnRleHQuCisgKgorICogQSBwcm9jZXNzIGNhbiByZXF1ZXN0IGJs b2NraW5nIG9mIGEgc2lnbmFsIGJ5IG1hc2tpbmcgaXQgaW50byBpdHMgc2V0IG9mCisgKiBi bG9ja2VkIHNpZ25hbHM7IHN1Y2ggYSBzaWduYWwsIHdoZW4gc2VudCB0byB0aGUgcHJvY2Vz cyBieSB0aGUga2VybmVsLAorICogd2lsbCBnZXQgYmxvY2tlZCBieSB0aGUgcHJvY2VzcyBh bmQgaXQgbWF5IGxhdGVyIHVuYmxvY2sgaXQgYW5kIHRha2UgYW4KKyAqIGFjdGlvbi4gQXQg dGhhdCBwb2ludCwgdGhlIHNpZ25hbCB3aWxsIGJlIGRlbGl2ZXJlZC4KKyAqCisgKiBXZSB0 ZXN0IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBrZXJuZWw6CisgKgor ICogdWNvbnRleHRfdCBkZXNjcmliZXMgdGhlIGludGVycnVwdGVkIGNvbnRleHQgb2YgdGhl IHRocmVhZDsgdGhpcyBpbXBsaWVzCisgKiB0aGF0LCBpbiBjYXNlIG9mIHJlZ2lzdGVyaW5n IGEgaGFuZGxlciBhbmQgY2F0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcKKyAqIHNpZ25hbCwg dGhhdCBzdGF0ZSBpcyBiZWZvcmUgd2hhdCB3YXMganVtcGluZyBpbnRvIHRoZSBoYW5kbGVy LgorICoKKyAqIFRoZSB0aHJlYWQncyBtYXNrIG9mIGJsb2NrZWQgc2lnbmFscyBjYW4gYmUg cGVybWFuZW50bHkgY2hhbmdlZCwgaS5lLCBub3QKKyAqIGp1c3QgZHVyaW5nIHRoZSBleGVj dXRpb24gb2YgdGhlIGhhbmRsZXIsIGJ5IG1hbmdsaW5nIHdpdGggdWNfc2lnbWFzaworICog ZnJvbSBpbnNpZGUgdGhlIGhhbmRsZXIuCisgKgorICogQXNzdW1lIHRoYXQgd2UgYmxvY2sg dGhlIHNldCBvZiBzaWduYWxzLCBTMSwgYnkgc2lnYWN0aW9uKCksIGFuZCBzYXksIHRoZQor ICogc2lnbmFsIGZvciB3aGljaCB0aGUgaGFuZGxlciB3YXMgaW5zdGFsbGVkLCBpcyBTMi4g V2hlbiBTMiBpcyBzZW50IHRvIHRoZQorICogcHJvZ3JhbSwgaXQgd2lsbCBiZSBjb25zaWRl cmVkICJkZWxpdmVyZWQiLCBzaW5jZSB3ZSB3aWxsIGFjdCBvbiB0aGUKKyAqIHNpZ25hbCBh bmQganVtcCB0byB0aGUgaGFuZGxlci4gQW55IGluc3RhbmNlcyBvZiBTMSBvciBTMiByYWlz ZWQsIHdoaWxlIHRoZQorICogcHJvZ3JhbSBpcyBleGVjdXRpbmcgaW5zaWRlIHRoZSBoYW5k bGVyLCB3aWxsIGJlIGJsb2NrZWQ7IHRoZXkgd2lsbCBiZQorICogZGVsaXZlcmVkIGltbWVk aWF0ZWx5IHVwb24gdGVybWluYXRpb24gb2YgdGhlIGhhbmRsZXIuCisgKgorICogRm9yIHN0 YW5kYXJkIHNpZ25hbHMgKGFsc28gc2VlIHJlYWwtdGltZSBzaWduYWxzIGluIHRoZSBtYW4g cGFnZSksIG11bHRpcGxlCisgKiBibG9ja2VkIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBzaWdu YWwgYXJlIG5vdCBxdWV1ZWQ7IHN1Y2ggYSBzaWduYWwgd2lsbAorICogYmUgZGVsaXZlcmVk IGp1c3Qgb25jZS4KKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRs aWIuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDx1Y29udGV4dC5oPgorCisj aW5jbHVkZSAiLi4va3NlbGZ0ZXN0LmgiCisKK3ZvaWQgaGFuZGxlcl92ZXJpZnlfdWNvbnRl eHQoaW50IHNpZ25vLCBzaWdpbmZvX3QgKmluZm8sIHZvaWQgKnVjKQoreworCWludCByZXQ7 CisKKwkvKiBLZXJuZWwgZHVtcHMgdWNvbnRleHQgd2l0aCBVU1IyIGJsb2NrZWQgKi8KKwly ZXQgPSBzaWdpc21lbWJlcigmKCgodWNvbnRleHRfdCAqKXVjKS0+dWNfc2lnbWFzayksIFNJ R1VTUjIpOworCWtzZnRfdGVzdF9yZXN1bHQocmV0ID09IDEsICJVU1IyIGJsb2NrZWQgaW4g dWNvbnRleHRcbiIpOworCisJLyoKKwkgKiBVU1IyIGlzIGJsb2NrZWQ7IGNhbiBiZSBkZWxp dmVyZWQgbmVpdGhlciBoZXJlLCBub3IgYWZ0ZXIKKwkgKiBleGl0IGZyb20gaGFuZGxlcgor CSAqLworCWlmIChyYWlzZShTSUdVU1IyKSkKKwkJa3NmdF9leGl0X2ZhaWxfcGVycm9yKCJy YWlzZSIpOworfQorCit2b2lkIGhhbmRsZXJfc2VndihpbnQgc2lnbm8sIHNpZ2luZm9fdCAq aW5mbywgdm9pZCAqdWMpCit7CisJLyoKKwkgKiBUaHJlZSBjYXNlcyBwb3NzaWJsZToKKwkg KiAxLiBQcm9ncmFtIGFscmVhZHkgdGVybWluYXRlZCBkdWUgdG8gc2VnbWVudGF0aW9uIGZh dWx0LgorCSAqIDIuIFNFR1Ygd2FzIGJsb2NrZWQgZXZlbiBhZnRlciByZXR1cm5pbmcgZnJv bSBoYW5kbGVyX3Vzci4KKwkgKiAzLiBTRUdWIHdhcyBkZWxpdmVyZWQgb24gcmV0dXJuaW5n IGZyb20gaGFuZGxlcl91c3IuCisJICogVGhlIGxhc3Qgb3B0aW9uIG11c3QgaGFwcGVuLgor CSAqLworCWtzZnRfdGVzdF9yZXN1bHRfcGFzcygiU0VHViBkZWxpdmVyZWRcbiIpOworfQor CitzdGF0aWMgaW50IGNudDsKKwordm9pZCBoYW5kbGVyX3VzcihpbnQgc2lnbm8sIHNpZ2lu Zm9fdCAqaW5mbywgdm9pZCAqdWMpCit7CisJaW50IHJldDsKKworCS8qCisJICogQnJlYWsg b3V0IG9mIGluZmluaXRlIHJlY3Vyc2lvbiBjYXVzZWQgYnkgcmFpc2UoU0lHVVNSMSkgaW52 b2tlZAorCSAqIGZyb20gaW5zaWRlIHRoZSBoYW5kbGVyCisJICovCisJKytjbnQ7CisJaWYg KGNudCA+IDEpCisJCXJldHVybjsKKworCS8qIFNFR1YgYmxvY2tlZCBkdXJpbmcgaGFuZGxl ciBleGVjdXRpb24sIGRlbGl2ZXJlZCBvbiByZXR1cm4gKi8KKwlpZiAocmFpc2UoU0lHU0VH VikpCisJCWtzZnRfZXhpdF9mYWlsX3BlcnJvcigicmFpc2UiKTsKKworCWtzZnRfcHJpbnRf bXNnKCJTRUdWIGJ5cGFzc2VkIHN1Y2Nlc3NmdWxseVxuIik7CisKKwkvKgorCSAqIFNpZ25h bCByZXNwb25zaWJsZSBmb3IgaGFuZGxlciBpbnZvY2F0aW9uIGlzIGJsb2NrZWQgYnkgZGVm YXVsdDsKKwkgKiBkZWxpdmVyZWQgb24gcmV0dXJuLCBsZWFkaW5nIHRvIHJlY3Vyc2lvbgor CSAqLworCWlmIChyYWlzZShTSUdVU1IxKSkKKwkJa3NmdF9leGl0X2ZhaWxfcGVycm9yKCJy YWlzZSIpOworCisJa3NmdF90ZXN0X3Jlc3VsdChjbnQgPT0gMSwKKwkJCSAiVVNSMSBpcyBi bG9ja2VkLCBjYW5ub3QgaW52b2tlIGhhbmRsZXIgcmlnaHQgbm93XG4iKTsKKworCS8qIFJh aXNlIFVTUjEgYWdhaW47IG9ubHkgb25lIGluc3RhbmNlIG11c3QgYmUgZGVsaXZlcmVkIHVw b24gZXhpdCAqLworCWlmIChyYWlzZShTSUdVU1IxKSkKKwkJa3NmdF9leGl0X2ZhaWxfcGVy cm9yKCJyYWlzZSIpOworCisJLyogU0VHViBoYXMgYmVlbiBibG9ja2VkIGluIHNhX21hc2ss IGJ1dCB1Y29udGV4dCBpcyBlbXB0eSAqLworCXJldCA9IHNpZ2lzbWVtYmVyKCYoKCh1Y29u dGV4dF90ICopdWMpLT51Y19zaWdtYXNrKSwgU0lHU0VHVik7CisJa3NmdF90ZXN0X3Jlc3Vs dChyZXQgPT0gMCwgIlNFR1Ygbm90IGJsb2NrZWQgaW4gdWNvbnRleHRcbiIpOworCisJLyog VVNSMSBoYXMgYmVlbiBibG9ja2VkLCBidXQgdWNvbnRleHQgaXMgZW1wdHkgKi8KKwlyZXQg PSBzaWdpc21lbWJlcigmKCgodWNvbnRleHRfdCAqKXVjKS0+dWNfc2lnbWFzayksIFNJR1VT UjEpOworCWtzZnRfdGVzdF9yZXN1bHQocmV0ID09IDAsICJVU1IxIG5vdCBibG9ja2VkIGlu IHVjb250ZXh0XG4iKTsKKworCS8qCisJICogTWFuZ2xlIHVjb250ZXh0OyB0aGlzIHdpbGwg YmUgY29waWVkIGJhY2sgaW50byAmY3VycmVudC0+YmxvY2tlZAorCSAqIG9uIHJldHVybiBm cm9tIHRoZSBoYW5kbGVyLgorCSAqLworCWlmIChzaWdhZGRzZXQoJigodWNvbnRleHRfdCAq KXVjKS0+dWNfc2lnbWFzaywgU0lHVVNSMikpCisJCWtzZnRfZXhpdF9mYWlsX3BlcnJvcigi c2lnYWRkc2V0Iik7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7 CisJc3RydWN0IHNpZ2FjdGlvbiBhY3QsIGFjdDI7CisJc2lnc2V0X3Qgc2V0LCBvbGRzZXQ7 CisKKwlrc2Z0X3ByaW50X2hlYWRlcigpOworCWtzZnRfc2V0X3BsYW4oNyk7CisKKwlhY3Qu c2FfZmxhZ3MgPSBTQV9TSUdJTkZPOworCWFjdC5zYV9zaWdhY3Rpb24gPSAmaGFuZGxlcl91 c3I7CisKKwkvKiBBZGQgU0VHViB0byBibG9ja2VkIG1hc2sgKi8KKwlpZiAoc2lnZW1wdHlz ZXQoJmFjdC5zYV9tYXNrKSB8fCBzaWdhZGRzZXQoJmFjdC5zYV9tYXNrLCBTSUdTRUdWKQor CSAgICB8fCAoc2lnaXNtZW1iZXIoJmFjdC5zYV9tYXNrLCBTSUdTRUdWKSAhPSAxKSkKKwkJ a3NmdF9leGl0X2ZhaWxfbXNnKCJDYW5ub3QgYWRkIFNFR1YgdG8gYmxvY2tlZCBtYXNrXG4i KTsKKworCWlmIChzaWdhY3Rpb24oU0lHVVNSMSwgJmFjdCwgTlVMTCkpCisJCWtzZnRfZXhp dF9mYWlsX3BlcnJvcigiQ2Fubm90IGluc3RhbGwgaGFuZGxlciIpOworCisJYWN0Mi5zYV9m bGFncyA9IFNBX1NJR0lORk87CisJYWN0Mi5zYV9zaWdhY3Rpb24gPSAmaGFuZGxlcl9zZWd2 OworCisJaWYgKHNpZ2FjdGlvbihTSUdTRUdWLCAmYWN0MiwgTlVMTCkpCisJCWtzZnRfZXhp dF9mYWlsX3BlcnJvcigiQ2Fubm90IGluc3RhbGwgaGFuZGxlciIpOworCisJLyogSW52b2tl IGhhbmRsZXIgKi8KKwlpZiAocmFpc2UoU0lHVVNSMSkpCisJCWtzZnRfZXhpdF9mYWlsX3Bl cnJvcigicmFpc2UiKTsKKworCS8qIFVTUjEgbXVzdCBub3QgYmUgcXVldWVkICovCisJa3Nm dF90ZXN0X3Jlc3VsdChjbnQgPT0gMiwgImhhbmRsZXIgaW52b2tlZCBvbmx5IHR3aWNlXG4i KTsKKworCS8qIE1hbmdsZWQgdWNvbnRleHQgaW1wbGllcyBVU1IyIGlzIGJsb2NrZWQgZm9y IGN1cnJlbnQgdGhyZWFkICovCisJaWYgKHJhaXNlKFNJR1VTUjIpKQorCQlrc2Z0X2V4aXRf ZmFpbF9wZXJyb3IoInJhaXNlIik7CisKKwlrc2Z0X3ByaW50X21zZygiVVNSMiBieXBhc3Nl ZCBzdWNjZXNzZnVsbHlcbiIpOworCisJYWN0LnNhX3NpZ2FjdGlvbiA9ICZoYW5kbGVyX3Zl cmlmeV91Y29udGV4dDsKKwlpZiAoc2lnYWN0aW9uKFNJR1VTUjEsICZhY3QsIE5VTEwpKQor CQlrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoIkNhbm5vdCBpbnN0YWxsIGhhbmRsZXIiKTsKKwor CWlmIChyYWlzZShTSUdVU1IxKSkKKwkJa3NmdF9leGl0X2ZhaWxfcGVycm9yKCJyYWlzZSIp OworCisJLyoKKwkgKiBSYWlzaW5nIFVTUjIgaW4gaGFuZGxlcl92ZXJpZnlfdWNvbnRleHQg aXMgcmVkdW5kYW50IHNpbmNlIGl0CisJICogaXMgYmxvY2tlZAorCSAqLworCWtzZnRfcHJp bnRfbXNnKCJVU1IyIHN0aWxsIGJsb2NrZWQgb24gcmV0dXJuIGZyb20gaGFuZGxlclxuIik7 CisKKwkvKiBDb25maXJtIFVTUjIgYmxvY2thZ2UgYnkgc2lncHJvY21hc2soKSB0b28gKi8K KwlpZiAoc2lnZW1wdHlzZXQoJnNldCkpCisJCWtzZnRfZXhpdF9mYWlsX3BlcnJvcigic2ln ZW1wdHlzZXQiKTsKKworCWlmIChzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzZXQsICZvbGRz ZXQpKQorCQlrc2Z0X2V4aXRfZmFpbF9wZXJyb3IoInNpZ3Byb2NtYXNrIik7CisKKwlrc2Z0 X3Rlc3RfcmVzdWx0KHNpZ2lzbWVtYmVyKCZvbGRzZXQsIFNJR1VTUjIpID09IDEsCisJCQkg IlVTUjIgcHJlc2VudCBpbiAmY3VycmVudC0+YmxvY2tlZFxuIik7CisKKwlrc2Z0X2Zpbmlz aGVkKCk7Cit9CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9zaWdhbHRz dGFjay9zYXMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3NpZ25hbC9zYXMuYwpzaW1p bGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv c2lnYWx0c3RhY2svc2FzLmMKcmVuYW1lIHRvIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Np Z25hbC9zYXMuYwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJz L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL01ha2VmaWxlCmlu ZGV4IDBlNzNhMTY4NzRjNC4uMzIyMDM1OTNjNjJlIDEwMDY0NAotLS0gYS90b29scy90ZXN0 aW5nL3NlbGZ0ZXN0cy90aW1lcnMvTWFrZWZpbGUKKysrIGIvdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvdGltZXJzL01ha2VmaWxlCkBAIC0xLDUgKzEsNSBAQAogIyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMAotQ0ZMQUdTICs9IC1PMyAtV2wsLW5vLWFzLW5lZWRlZCAt V2FsbAorQ0ZMQUdTICs9IC1PMyAtV2wsLW5vLWFzLW5lZWRlZCAtV2FsbCAtSSAkKHRvcF9z cmNkaXIpCiBMRExJQlMgKz0gLWxydCAtbHB0aHJlYWQgLWxtCiAKICMgdGhlc2UgYXJlIGFs bCAic2FmZSIgdGVzdHMgdGhhdCBkb24ndCBtb2RpZnkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rl c3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9hZGp0aWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy90aW1lcnMvYWRqdGljay5jCmluZGV4IDIwNWI3NmE0YWJiNC4uNzc3ZDk0OTRiNjgz IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvYWRqdGljay5j CisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9hZGp0aWNrLmMKQEAgLTIy LDE0ICsyMiwxMCBAQAogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAjaW5jbHVkZSA8c3lzL3Rp bWV4Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPGluY2x1ZGUvdmRzby90aW1l NjQuaD4KIAogI2luY2x1ZGUgIi4uL2tzZWxmdGVzdC5oIgogCi0jZGVmaW5lIENMT0NLX01P Tk9UT05JQ19SQVcJNAotCi0jZGVmaW5lIE5TRUNfUEVSX1NFQwkJMTAwMDAwMDAwMExMCi0j ZGVmaW5lIFVTRUNfUEVSX1NFQwkJMTAwMDAwMAotCiAjZGVmaW5lIE1JTExJT04JCQkxMDAw MDAwCiAKIGxvbmcgc3lzdGljazsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3RpbWVycy9hbGFybXRpbWVyLXN1c3BlbmQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3RpbWVycy9hbGFybXRpbWVyLXN1c3BlbmQuYwppbmRleCBhZDUyZTYwOGI4OGUuLmE5 ZWY3NmVhNjA1MSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJz L2FsYXJtdGltZXItc3VzcGVuZC5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Rp bWVycy9hbGFybXRpbWVyLXN1c3BlbmQuYwpAQCAtMjgsMjQgKzI4LDEwIEBACiAjaW5jbHVk ZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8cHRocmVhZC5o PgorI2luY2x1ZGUgPGluY2x1ZGUvdmRzby90aW1lNjQuaD4KKyNpbmNsdWRlIDxlcnJuby5o PgogI2luY2x1ZGUgIi4uL2tzZWxmdGVzdC5oIgogCi0jZGVmaW5lIENMT0NLX1JFQUxUSU1F CQkJMAotI2RlZmluZSBDTE9DS19NT05PVE9OSUMJCQkxCi0jZGVmaW5lIENMT0NLX1BST0NF U1NfQ1BVVElNRV9JRAkyCi0jZGVmaW5lIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECQkzCi0j ZGVmaW5lIENMT0NLX01PTk9UT05JQ19SQVcJCTQKLSNkZWZpbmUgQ0xPQ0tfUkVBTFRJTUVf Q09BUlNFCQk1Ci0jZGVmaW5lIENMT0NLX01PTk9UT05JQ19DT0FSU0UJCTYKLSNkZWZpbmUg Q0xPQ0tfQk9PVFRJTUUJCQk3Ci0jZGVmaW5lIENMT0NLX1JFQUxUSU1FX0FMQVJNCQk4Ci0j ZGVmaW5lIENMT0NLX0JPT1RUSU1FX0FMQVJNCQk5Ci0jZGVmaW5lIENMT0NLX0hXU1BFQ0lG SUMJCTEwCi0jZGVmaW5lIENMT0NLX1RBSQkJCTExCi0jZGVmaW5lIE5SX0NMT0NLSURTCQkJ MTIKLQotCi0jZGVmaW5lIE5TRUNfUEVSX1NFQyAxMDAwMDAwMDAwVUxMCiAjZGVmaW5lIFVO UkVBU09OQUJMRV9MQVQgKE5TRUNfUEVSX1NFQyAqIDUpIC8qIGhvcGVmdWxseSB3ZSByZXN1 bWUgaW4gNSBzZWNzICovCiAKICNkZWZpbmUgU1VTUEVORF9TRUNTIDE1CkBAIC0xNDIsOCAr MTI4LDggQEAgaW50IG1haW4odm9pZCkKIAogCQlhbGFybWNvdW50ID0gMDsKIAkJaWYgKHRp bWVyX2NyZWF0ZShhbGFybV9jbG9ja19pZCwgJnNlLCAmdG0xKSA9PSAtMSkgewotCQkJcHJp bnRmKCJ0aW1lcl9jcmVhdGUgZmFpbGVkLCAlcyB1bnN1cHBvcnRlZD9cbiIsCi0JCQkJCWNs b2Nrc3RyaW5nKGFsYXJtX2Nsb2NrX2lkKSk7CisJCQlwcmludGYoInRpbWVyX2NyZWF0ZSBm YWlsZWQsICVzIHVuc3VwcG9ydGVkPzogJXNcbiIsCisJCQkJCWNsb2Nrc3RyaW5nKGFsYXJt X2Nsb2NrX2lkKSwgc3RyZXJyb3IoZXJybm8pKTsKIAkJCWJyZWFrOwogCQl9CiAKZGlmZiAt LWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9pbmNvbnNpc3RlbmN5LWNo ZWNrLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvaW5jb25zaXN0ZW5jeS1j aGVjay5jCmluZGV4IDM2YTQ5ZmJhNmM5Yi4uOWQxNTczNzY5ZDU1IDEwMDY0NAotLS0gYS90 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvaW5jb25zaXN0ZW5jeS1jaGVjay5jCisr KyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9pbmNvbnNpc3RlbmN5LWNoZWNr LmMKQEAgLTI4LDI0ICsyOCwxMyBAQAogI2luY2x1ZGUgPHN5cy90aW1leC5oPgogI2luY2x1 ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPGluY2x1ZGUv dmRzby90aW1lNjQuaD4KICNpbmNsdWRlICIuLi9rc2VsZnRlc3QuaCIKIAotI2RlZmluZSBD QUxMU19QRVJfTE9PUCA2NAotI2RlZmluZSBOU0VDX1BFUl9TRUMgMTAwMDAwMDAwMFVMTAot Ci0jZGVmaW5lIENMT0NLX1JFQUxUSU1FCQkJMAotI2RlZmluZSBDTE9DS19NT05PVE9OSUMJ CQkxCi0jZGVmaW5lIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRAkyCi0jZGVmaW5lIENMT0NL X1RIUkVBRF9DUFVUSU1FX0lECQkzCi0jZGVmaW5lIENMT0NLX01PTk9UT05JQ19SQVcJCTQK LSNkZWZpbmUgQ0xPQ0tfUkVBTFRJTUVfQ09BUlNFCQk1Ci0jZGVmaW5lIENMT0NLX01PTk9U T05JQ19DT0FSU0UJCTYKLSNkZWZpbmUgQ0xPQ0tfQk9PVFRJTUUJCQk3Ci0jZGVmaW5lIENM T0NLX1JFQUxUSU1FX0FMQVJNCQk4Ci0jZGVmaW5lIENMT0NLX0JPT1RUSU1FX0FMQVJNCQk5 CisvKiBDTE9DS19IV1NQRUNJRklDID09IENMT0NLX1NHSV9DWUNMRSAoRGVwcmVjYXRlZCkg Ki8KICNkZWZpbmUgQ0xPQ0tfSFdTUEVDSUZJQwkJMTAKLSNkZWZpbmUgQ0xPQ0tfVEFJCQkJ MTEKLSNkZWZpbmUgTlJfQ0xPQ0tJRFMJCQkxMgorCisjZGVmaW5lIENBTExTX1BFUl9MT09Q IDY0CiAKIGNoYXIgKmNsb2Nrc3RyaW5nKGludCBjbG9ja2lkKQogewpAQCAtMTUyLDcgKzE0 MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAJaW50IGNsb2Nr aWQsIG9wdDsKIAlpbnQgdXNlcmNsb2NrID0gQ0xPQ0tfUkVBTFRJTUU7Ci0JaW50IG1heGNs b2NrcyA9IE5SX0NMT0NLSURTOworCWludCBtYXhjbG9ja3MgPSBDTE9DS19UQUkgKyAxOwog CWludCBydW50aW1lID0gMTA7CiAJc3RydWN0IHRpbWVzcGVjIHRzOwogCmRpZmYgLS1naXQg YS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvbGVhcC1hLWRheS5jIGIvdG9vbHMv dGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL2xlYXAtYS1kYXkuYwppbmRleCA5ODZhYmJkYjE1 MjEuLjA0MDA0YTdjMDkzNCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv dGltZXJzL2xlYXAtYS1kYXkuYworKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1l cnMvbGVhcC1hLWRheS5jCkBAIC00OCw5ICs0OCw5IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+ CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8 aW5jbHVkZS92ZHNvL3RpbWU2NC5oPgogI2luY2x1ZGUgIi4uL2tzZWxmdGVzdC5oIgogCi0j ZGVmaW5lIE5TRUNfUEVSX1NFQyAxMDAwMDAwMDAwVUxMCiAjZGVmaW5lIENMT0NLX1RBSSAx MQogCiB0aW1lX3QgbmV4dF9sZWFwOwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxm dGVzdHMvdGltZXJzL21xdWV1ZS1sYXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Rp bWVycy9tcXVldWUtbGF0LmMKaW5kZXggZjMxNzlhNjA1YmJhLi42M2RlMjMzNGEyOTEgMTAw NjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9tcXVldWUtbGF0LmMK KysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL21xdWV1ZS1sYXQuYwpAQCAt MjksOSArMjksOSBAQAogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPGVycm5vLmg+ CiAjaW5jbHVkZSA8bXF1ZXVlLmg+CisjaW5jbHVkZSA8aW5jbHVkZS92ZHNvL3RpbWU2NC5o PgogI2luY2x1ZGUgIi4uL2tzZWxmdGVzdC5oIgogCi0jZGVmaW5lIE5TRUNfUEVSX1NFQyAx MDAwMDAwMDAwVUxMCiAKICNkZWZpbmUgVEFSR0VUX1RJTUVPVVQJCTEwMDAwMDAwMAkvKiAx MDBtcyBpbiBuYW5vc2Vjb25kcyAqLwogI2RlZmluZSBVTlJFU09OQUJMRV9MQVRFTkNZCTQw MDAwMDAwCS8qIDQwbXMgaW4gbmFub3NlY3MgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL3RpbWVycy9uYW5vc2xlZXAuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3RpbWVycy9uYW5vc2xlZXAuYwppbmRleCBkZjFkMDM1MTZlN2IuLjI1MmM2MzA4YzU2 OSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL25hbm9zbGVl cC5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9uYW5vc2xlZXAuYwpA QCAtMjcsMjMgKzI3LDExIEBACiAjaW5jbHVkZSA8c3lzL3RpbWV4Lmg+CiAjaW5jbHVkZSA8 c3RyaW5nLmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8aW5jbHVkZS92ZHNv L3RpbWU2NC5oPgogI2luY2x1ZGUgIi4uL2tzZWxmdGVzdC5oIgogCi0jZGVmaW5lIE5TRUNf UEVSX1NFQyAxMDAwMDAwMDAwVUxMCi0KLSNkZWZpbmUgQ0xPQ0tfUkVBTFRJTUUJCQkwCi0j ZGVmaW5lIENMT0NLX01PTk9UT05JQwkJCTEKLSNkZWZpbmUgQ0xPQ0tfUFJPQ0VTU19DUFVU SU1FX0lECTIKLSNkZWZpbmUgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQJCTMKLSNkZWZpbmUg Q0xPQ0tfTU9OT1RPTklDX1JBVwkJNAotI2RlZmluZSBDTE9DS19SRUFMVElNRV9DT0FSU0UJ CTUKLSNkZWZpbmUgQ0xPQ0tfTU9OT1RPTklDX0NPQVJTRQkJNgotI2RlZmluZSBDTE9DS19C T09UVElNRQkJCTcKLSNkZWZpbmUgQ0xPQ0tfUkVBTFRJTUVfQUxBUk0JCTgKLSNkZWZpbmUg Q0xPQ0tfQk9PVFRJTUVfQUxBUk0JCTkKKy8qIENMT0NLX0hXU1BFQ0lGSUMgPT0gQ0xPQ0tf U0dJX0NZQ0xFIChEZXByZWNhdGVkKSAqLwogI2RlZmluZSBDTE9DS19IV1NQRUNJRklDCQkx MAotI2RlZmluZSBDTE9DS19UQUkJCQkxMQotI2RlZmluZSBOUl9DTE9DS0lEUwkJCTEyCiAK ICNkZWZpbmUgVU5TVVBQT1JURUQgMHhmMDBmCiAKQEAgLTEzMiwxMSArMTIwLDEyIEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKIAlsb25nIGxvbmcgbGVuZ3RoOwog CWludCBjbG9ja2lkLCByZXQ7CisJaW50IG1heF9jbG9ja3MgPSBDTE9DS19UQUkgKyAxOwog CiAJa3NmdF9wcmludF9oZWFkZXIoKTsKLQlrc2Z0X3NldF9wbGFuKE5SX0NMT0NLSURTKTsK Kwlrc2Z0X3NldF9wbGFuKG1heF9jbG9ja3MpOwogCi0JZm9yIChjbG9ja2lkID0gQ0xPQ0tf UkVBTFRJTUU7IGNsb2NraWQgPCBOUl9DTE9DS0lEUzsgY2xvY2tpZCsrKSB7CisJZm9yIChj bG9ja2lkID0gQ0xPQ0tfUkVBTFRJTUU7IGNsb2NraWQgPCBtYXhfY2xvY2tzOyBjbG9ja2lk KyspIHsKIAogCQkvKiBTa2lwIGNwdXRpbWUgY2xvY2tpZHMgc2luY2UgbmFub3NsZWVwIHdv bid0IGluY3JlbWVudCBjcHV0aW1lICovCiAJCWlmIChjbG9ja2lkID09IENMT0NLX1BST0NF U1NfQ1BVVElNRV9JRCB8fApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv dGltZXJzL25zbGVlcC1sYXQuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9u c2xlZXAtbGF0LmMKaW5kZXggZWRiNWFjYWNmMjE0Li5kZTIzZGMwYzlmOTcgMTAwNjQ0Ci0t LSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9uc2xlZXAtbGF0LmMKKysrIGIv dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL25zbGVlcC1sYXQuYwpAQCAtMjQsMjYg KzI0LDEzIEBACiAjaW5jbHVkZSA8c3lzL3RpbWV4Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+ CiAjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8aW5jbHVkZS92ZHNvL3RpbWU2NC5o PgogI2luY2x1ZGUgIi4uL2tzZWxmdGVzdC5oIgogCi0jZGVmaW5lIE5TRUNfUEVSX1NFQyAx MDAwMDAwMDAwVUxMCi0KICNkZWZpbmUgVU5SRVNPTkFCTEVfTEFURU5DWSA0MDAwMDAwMCAv KiA0MG1zIGluIG5hbm9zZWNzICovCiAKLQotI2RlZmluZSBDTE9DS19SRUFMVElNRQkJCTAK LSNkZWZpbmUgQ0xPQ0tfTU9OT1RPTklDCQkJMQotI2RlZmluZSBDTE9DS19QUk9DRVNTX0NQ VVRJTUVfSUQJMgotI2RlZmluZSBDTE9DS19USFJFQURfQ1BVVElNRV9JRAkJMwotI2RlZmlu ZSBDTE9DS19NT05PVE9OSUNfUkFXCQk0Ci0jZGVmaW5lIENMT0NLX1JFQUxUSU1FX0NPQVJT RQkJNQotI2RlZmluZSBDTE9DS19NT05PVE9OSUNfQ09BUlNFCQk2Ci0jZGVmaW5lIENMT0NL X0JPT1RUSU1FCQkJNwotI2RlZmluZSBDTE9DS19SRUFMVElNRV9BTEFSTQkJOAotI2RlZmlu ZSBDTE9DS19CT09UVElNRV9BTEFSTQkJOQorLyogQ0xPQ0tfSFdTUEVDSUZJQyA9PSBDTE9D S19TR0lfQ1lDTEUgKERlcHJlY2F0ZWQpICovCiAjZGVmaW5lIENMT0NLX0hXU1BFQ0lGSUMJ CTEwCi0jZGVmaW5lIENMT0NLX1RBSQkJCTExCi0jZGVmaW5lIE5SX0NMT0NLSURTCQkJMTIK IAogI2RlZmluZSBVTlNVUFBPUlRFRCAweGYwMGYKIApAQCAtMTQ1LDExICsxMzIsMTIgQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCWxvbmcgbG9uZyBsZW5ndGg7 CiAJaW50IGNsb2NraWQsIHJldDsKKwlpbnQgbWF4X2Nsb2NrcyA9IENMT0NLX1RBSSArIDE7 CiAKIAlrc2Z0X3ByaW50X2hlYWRlcigpOwotCWtzZnRfc2V0X3BsYW4oTlJfQ0xPQ0tJRFMg LSBDTE9DS19SRUFMVElNRSAtIFNLSVBQRURfQ0xPQ0tfQ09VTlQpOworCWtzZnRfc2V0X3Bs YW4obWF4X2Nsb2NrcyAtIENMT0NLX1JFQUxUSU1FIC0gU0tJUFBFRF9DTE9DS19DT1VOVCk7 CiAKLQlmb3IgKGNsb2NraWQgPSBDTE9DS19SRUFMVElNRTsgY2xvY2tpZCA8IE5SX0NMT0NL SURTOyBjbG9ja2lkKyspIHsKKwlmb3IgKGNsb2NraWQgPSBDTE9DS19SRUFMVElNRTsgY2xv Y2tpZCA8IG1heF9jbG9ja3M7IGNsb2NraWQrKykgewogCiAJCS8qIFNraXAgY3B1dGltZSBj bG9ja2lkcyBzaW5jZSBuYW5vc2xlZXAgd29uJ3QgaW5jcmVtZW50IGNwdXRpbWUgKi8KIAkJ aWYgKGNsb2NraWQgPT0gQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEIHx8CmRpZmYgLS1naXQg YS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMgYi90b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMKaW5kZXggZGRiMWNl YmM4NDRlLi45ODE0YjNhMWM3N2QgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYworKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0 cy90aW1lcnMvcG9zaXhfdGltZXJzLmMKQEAgLTE1LDEzICsxNSwxMiBAQAogI2luY2x1ZGUg PHN0cmluZy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHRpbWUuaD4KKyNp bmNsdWRlIDxpbmNsdWRlL3Zkc28vdGltZTY0Lmg+CiAjaW5jbHVkZSA8cHRocmVhZC5oPgog CiAjaW5jbHVkZSAiLi4va3NlbGZ0ZXN0LmgiCiAKICNkZWZpbmUgREVMQVkgMgotI2RlZmlu ZSBVU0VDU19QRVJfU0VDIDEwMDAwMDAKLSNkZWZpbmUgTlNFQ1NfUEVSX1NFQyAxMDAwMDAw MDAwCiAKIHN0YXRpYyB2b2lkIF9fZmF0YWxfZXJyb3IoY29uc3QgY2hhciAqdGVzdCwgY29u c3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqd2hhdCkKIHsKQEAgLTg2LDkgKzg1LDkgQEAg c3RhdGljIGludCBjaGVja19kaWZmKHN0cnVjdCB0aW1ldmFsIHN0YXJ0LCBzdHJ1Y3QgdGlt ZXZhbCBlbmQpCiAJbG9uZyBsb25nIGRpZmY7CiAKIAlkaWZmID0gZW5kLnR2X3VzZWMgLSBz dGFydC50dl91c2VjOwotCWRpZmYgKz0gKGVuZC50dl9zZWMgLSBzdGFydC50dl9zZWMpICog VVNFQ1NfUEVSX1NFQzsKKwlkaWZmICs9IChlbmQudHZfc2VjIC0gc3RhcnQudHZfc2VjKSAq IFVTRUNfUEVSX1NFQzsKIAotCWlmIChsbGFicyhkaWZmIC0gREVMQVkgKiBVU0VDU19QRVJf U0VDKSA+IFVTRUNTX1BFUl9TRUMgLyAyKSB7CisJaWYgKGxsYWJzKGRpZmYgLSBERUxBWSAq IFVTRUNfUEVSX1NFQykgPiBVU0VDX1BFUl9TRUMgLyAyKSB7CiAJCXByaW50ZigiRGlmZiB0 b28gaGlnaDogJWxsZC4uIiwgZGlmZik7CiAJCXJldHVybiAtMTsKIAl9CkBAIC00NDgsNyAr NDQ3LDcgQEAgc3RhdGljIGlubGluZSBpbnQ2NF90IGNhbGNkaWZmX25zKHN0cnVjdCB0aW1l c3BlYyB0MSwgc3RydWN0IHRpbWVzcGVjIHQyKQogewogCWludDY0X3QgZGlmZjsKIAotCWRp ZmYgPSBOU0VDU19QRVJfU0VDICogKGludDY0X3QpKChpbnQpIHQxLnR2X3NlYyAtIChpbnQp IHQyLnR2X3NlYyk7CisJZGlmZiA9IE5TRUNfUEVSX1NFQyAqIChpbnQ2NF90KSgoaW50KSB0 MS50dl9zZWMgLSAoaW50KSB0Mi50dl9zZWMpOwogCWRpZmYgKz0gKChpbnQpIHQxLnR2X25z ZWMgLSAoaW50KSB0Mi50dl9uc2VjKTsKIAlyZXR1cm4gZGlmZjsKIH0KQEAgLTQ3OSw3ICs0 NzgsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19zaWdldl9ub25lKGludCB3aGljaCwgY29uc3Qg Y2hhciAqbmFtZSkKIAlkbyB7CiAJCWlmIChjbG9ja19nZXR0aW1lKHdoaWNoLCAmbm93KSkK IAkJCWZhdGFsX2Vycm9yKG5hbWUsICJjbG9ja19nZXR0aW1lKCkiKTsKLQl9IHdoaWxlIChj YWxjZGlmZl9ucyhub3csIHN0YXJ0KSA8IE5TRUNTX1BFUl9TRUMpOworCX0gd2hpbGUgKGNh bGNkaWZmX25zKG5vdywgc3RhcnQpIDwgTlNFQ19QRVJfU0VDKTsKIAogCWlmICh0aW1lcl9n ZXR0aW1lKHRpbWVyaWQsICZpdHMpKQogCQlmYXRhbF9lcnJvcihuYW1lLCAidGltZXJfZ2V0 dGltZSgpIik7CkBAIC01MzYsNyArNTM1LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfZ2V0dGlt ZShpbnQgd2hpY2gsIGNvbnN0IGNoYXIgKm5hbWUpCiAJCQl3cmFwcysrOwogCQlwcmV2ID0g aXRzOwogCi0JfSB3aGlsZSAoY2FsY2RpZmZfbnMobm93LCBzdGFydCkgPCBOU0VDU19QRVJf U0VDKTsKKwl9IHdoaWxlIChjYWxjZGlmZl9ucyhub3csIHN0YXJ0KSA8IE5TRUNfUEVSX1NF Qyk7CiAKIAlpZiAodGltZXJfZGVsZXRlKHRpbWVyaWQpKQogCQlmYXRhbF9lcnJvcihuYW1l LCAidGltZXJfZGVsZXRlKCkiKTsKQEAgLTU4Nyw3ICs1ODYsNyBAQCBzdGF0aWMgdm9pZCBj aGVja19vdmVycnVuKGludCB3aGljaCwgY29uc3QgY2hhciAqbmFtZSkKIAlkbyB7CiAJCWlm IChjbG9ja19nZXR0aW1lKHdoaWNoLCAmbm93KSkKIAkJCWZhdGFsX2Vycm9yKG5hbWUsICJj bG9ja19nZXR0aW1lKCkiKTsKLQl9IHdoaWxlIChjYWxjZGlmZl9ucyhub3csIHN0YXJ0KSA8 IE5TRUNTX1BFUl9TRUMpOworCX0gd2hpbGUgKGNhbGNkaWZmX25zKG5vdywgc3RhcnQpIDwg TlNFQ19QRVJfU0VDKTsKIAogCS8qIFVuYmxvY2sgaXQsIHdoaWNoIHNob3VsZCBkZWxpdmVy IGEgc2lnbmFsICovCiAJaWYgKHNpZ3Byb2NtYXNrKFNJR19VTkJMT0NLLCAmc2V0LCBOVUxM KSkKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9yYXdfc2tl dy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Jhd19za2V3LmMKaW5kZXgg MDMwMTQzZWIwOWI0Li45NTdmN2NkMjljYjEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcv c2VsZnRlc3RzL3RpbWVycy9yYXdfc2tldy5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRl c3RzL3RpbWVycy9yYXdfc2tldy5jCkBAIC0yNSwxMSArMjUsOSBAQAogI2luY2x1ZGUgPHN5 cy90aW1lLmg+CiAjaW5jbHVkZSA8c3lzL3RpbWV4Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgor I2luY2x1ZGUgPGluY2x1ZGUvdmRzby90aW1lNjQuaD4KICNpbmNsdWRlICIuLi9rc2VsZnRl c3QuaCIKIAotI2RlZmluZSBDTE9DS19NT05PVE9OSUNfUkFXCQk0Ci0jZGVmaW5lIE5TRUNf UEVSX1NFQyAxMDAwMDAwMDAwTEwKLQogI2RlZmluZSBzaGlmdF9yaWdodCh4LCBzKSAoewkJ XAogCV9fdHlwZW9mX18oeCkgX194ID0gKHgpOwlcCiAJX190eXBlb2ZfXyhzKSBfX3MgPSAo cyk7CVwKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQt MjAzOC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3NldC0yMDM4LmMKaW5k ZXggZjdkOTc4NzIxYjllLi5lZDI0NDMxNWUxMWMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtMjAzOC5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2Vs ZnRlc3RzL3RpbWVycy9zZXQtMjAzOC5jCkBAIC0yNywxMCArMjcsOSBAQAogI2luY2x1ZGUg PHVuaXN0ZC5oPgogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgor I2luY2x1ZGUgPGluY2x1ZGUvdmRzby90aW1lNjQuaD4KICNpbmNsdWRlICIuLi9rc2VsZnRl c3QuaCIKIAotI2RlZmluZSBOU0VDX1BFUl9TRUMgMTAwMDAwMDAwMExMCi0KICNkZWZpbmUg S1RJTUVfTUFYCSgobG9uZyBsb25nKX4oKHVuc2lnbmVkIGxvbmcgbG9uZykxIDw8IDYzKSkK ICNkZWZpbmUgS1RJTUVfU0VDX01BWAkoS1RJTUVfTUFYIC8gTlNFQ19QRVJfU0VDKQogCmRp ZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvc2V0LXRpbWVyLWxh dC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3NldC10aW1lci1sYXQuYwpp bmRleCA3Y2UyNDBjODliMjEuLjlkODQzN2MxMzkyOSAxMDA2NDQKLS0tIGEvdG9vbHMvdGVz dGluZy9zZWxmdGVzdHMvdGltZXJzL3NldC10aW1lci1sYXQuYworKysgYi90b29scy90ZXN0 aW5nL3NlbGZ0ZXN0cy90aW1lcnMvc2V0LXRpbWVyLWxhdC5jCkBAIC0yOCwyNCArMjgsMTIg QEAKICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRl IDxwdGhyZWFkLmg+CisjaW5jbHVkZSA8aW5jbHVkZS92ZHNvL3RpbWU2NC5oPgogI2luY2x1 ZGUgIi4uL2tzZWxmdGVzdC5oIgogCi0jZGVmaW5lIENMT0NLX1JFQUxUSU1FCQkJMAotI2Rl ZmluZSBDTE9DS19NT05PVE9OSUMJCQkxCi0jZGVmaW5lIENMT0NLX1BST0NFU1NfQ1BVVElN RV9JRAkyCi0jZGVmaW5lIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECQkzCi0jZGVmaW5lIENM T0NLX01PTk9UT05JQ19SQVcJCTQKLSNkZWZpbmUgQ0xPQ0tfUkVBTFRJTUVfQ09BUlNFCQk1 Ci0jZGVmaW5lIENMT0NLX01PTk9UT05JQ19DT0FSU0UJCTYKLSNkZWZpbmUgQ0xPQ0tfQk9P VFRJTUUJCQk3Ci0jZGVmaW5lIENMT0NLX1JFQUxUSU1FX0FMQVJNCQk4Ci0jZGVmaW5lIENM T0NLX0JPT1RUSU1FX0FMQVJNCQk5CisvKiBDTE9DS19IV1NQRUNJRklDID09IENMT0NLX1NH SV9DWUNMRSAoRGVwcmVjYXRlZCkgKi8KICNkZWZpbmUgQ0xPQ0tfSFdTUEVDSUZJQwkJMTAK LSNkZWZpbmUgQ0xPQ0tfVEFJCQkJMTEKLSNkZWZpbmUgTlJfQ0xPQ0tJRFMJCQkxMgogCi0K LSNkZWZpbmUgTlNFQ19QRVJfU0VDIDEwMDAwMDAwMDBVTEwKICNkZWZpbmUgVU5SRVNPTkFC TEVfTEFURU5DWSA0MDAwMDAwMCAvKiA0MG1zIGluIG5hbm9zZWNzICovCiAKICNkZWZpbmUg VElNRVJfU0VDUyAxCkBAIC04MCw3ICs2OCw3IEBAIGNoYXIgKmNsb2Nrc3RyaW5nKGludCBj bG9ja2lkKQogCQlyZXR1cm4gIkNMT0NLX0JPT1RUSU1FX0FMQVJNIjsKIAljYXNlIENMT0NL X1RBSToKIAkJcmV0dXJuICJDTE9DS19UQUkiOwotCX07CisJfQogCXJldHVybiAiVU5LTk9X Tl9DTE9DS0lEIjsKIH0KIApAQCAtMjU0LDYgKzI0Miw3IEBAIGludCBtYWluKHZvaWQpCiAJ c3RydWN0IHNpZ2FjdGlvbiBhY3Q7CiAJaW50IHNpZ251bSA9IFNJR1JUTUFYOwogCWludCBy ZXQgPSAwOworCWludCBtYXhfY2xvY2tzID0gQ0xPQ0tfVEFJICsgMTsKIAogCS8qIFNldCB1 cCBzaWduYWwgaGFuZGxlcjogKi8KIAlzaWdmaWxsc2V0KCZhY3Quc2FfbWFzayk7CkBAIC0y NjIsNyArMjUxLDcgQEAgaW50IG1haW4odm9pZCkKIAlzaWdhY3Rpb24oc2lnbnVtLCAmYWN0 LCBOVUxMKTsKIAogCXByaW50ZigiU2V0dGluZyB0aW1lcnMgZm9yIGV2ZXJ5ICVpIHNlY29u ZHNcbiIsIFRJTUVSX1NFQ1MpOwotCWZvciAoY2xvY2tfaWQgPSAwOyBjbG9ja19pZCA8IE5S X0NMT0NLSURTOyBjbG9ja19pZCsrKSB7CisJZm9yIChjbG9ja19pZCA9IDA7IGNsb2NrX2lk IDwgbWF4X2Nsb2NrczsgY2xvY2tfaWQrKykgewogCiAJCWlmICgoY2xvY2tfaWQgPT0gQ0xP Q0tfUFJPQ0VTU19DUFVUSU1FX0lEKSB8fAogCQkJCShjbG9ja19pZCA9PSBDTE9DS19USFJF QURfQ1BVVElNRV9JRCkgfHwKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Rz L3RpbWVycy92YWxpZC1hZGp0aW1leC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGlt ZXJzL3ZhbGlkLWFkanRpbWV4LmMKaW5kZXggZDUwMDg4NDgwMWQ4Li42Yjc4MDEwNTVhZDEg MTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0 aW1leC5jCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy92YWxpZC1hZGp0 aW1leC5jCkBAIC0yOSwxMSArMjksOSBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1 ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGluY2x1ZGUv dmRzby90aW1lNjQuaD4KICNpbmNsdWRlICIuLi9rc2VsZnRlc3QuaCIKIAotI2RlZmluZSBO U0VDX1BFUl9TRUMgMTAwMDAwMDAwMExMCi0jZGVmaW5lIFVTRUNfUEVSX1NFQyAxMDAwMDAw TEwKLQogI2RlZmluZSBBREpfU0VUT0ZGU0VUIDB4MDEwMAogCiAjaW5jbHVkZSA8c3lzL3N5 c2NhbGwuaD4K --------------v8upExji9lbeNmEC9zZ6NCja--