From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id eVyzMRn102n3jgoAWB0awg (envelope-from ) for ; Mon, 06 Apr 2026 14:02:01 -0400 Received: by simark.ca (Postfix, from userid 112) id AE2331E0BC; Mon, 06 Apr 2026 14:02:01 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id E13B41E04F for ; Mon, 06 Apr 2026 14:01:57 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 22BB74BA2E39 for ; Mon, 6 Apr 2026 18:01:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 22BB74BA2E39 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by sourceware.org (Postfix) with ESMTPS id 59C8E4BA2E15 for ; Mon, 6 Apr 2026 18:01:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 59C8E4BA2E15 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=palves.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 59C8E4BA2E15 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775498483; cv=none; b=PMLGUHEwZyo27pkGg1Z3s/R0/qv6xxB4yr5RHj0mQkuIzblwgtXmAGJmpJ5/x9dJxfNRzqge6khyUvYkjRdpy6/BVrT4br9XeJ/rSvg3dqPDDFnZWwrY8l1Cm5rMc0MUrV6a2d1fwbCX5VVl+mNx9cFfzIiu3OBA7qVig77eaIg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775498483; c=relaxed/simple; bh=PXHa5ubgKVPbQCRLRabHJ9PEaG5B4QwSeYXYtaRlS2g=; h=Message-ID:Date:MIME-Version:Subject:From:To; b=P2WYJclhWdx7aWh67p1Z0jCnekEj3yER2D8rVI26dIRXDaw+3ePMhVMOYMbgqoB4SIM590VY5eN5ONK7Mil+np1CP+xxRmM5veLWPIKZf+VtkOM0NepH2xIobFhJjK1+ZWrOT9rEGJJhwG1nREyVP28qX3MTZMpxFSl4Vy+g9LU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 59C8E4BA2E15 Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-43cfd1f9fd1so2209147f8f.3 for ; Mon, 06 Apr 2026 11:01:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775498482; x=1776103282; h=in-reply-to:content-language:references:to:from:subject:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sg0G14erY3vuc1PprrNby+JkRuHeHQDa0zcOC/4VuVQ=; b=K71cPZo/bsnaV4FZreYSE8iGNt+ZuDTRvfIemZf/ckmDnqBJJLTjKDBhQLiV2QBxGI p+pgAq2spcEECbRm0e3bXIFvIh5QRTUszsehbCcEzEZNahGBTaOokdXyWjCO7xYGacLo uD9CLdpUuBQhFKXa83fGm+Whe73T8KqvGDCKkhteN2Sp1ImS+P+Q0GhjJ+G6KJ7P6PMs zQtly+w6XrUMNucPpk2Zx8uzSBDhq7dbt2ueH95/JJlw58ZgjoQ/MU6TAV5sC1R9MlCd D4K71xRDa5GBoFaU/c1gE4hFdrjJOnI3XYsFcwzjgiO76sHps0eFePqDnewZ5CmXXosp LOzw== X-Gm-Message-State: AOJu0YzOQTzwuD+AYWN6UAGStqvNxmZE6WlQL6BSYEaJ69i7PpGPlNQk VwlTyZb2qNPp6TdunScYX3E2RlbR5pGtlyJgQQiEbb6bkOdcwd8Qc1mGQhQ0uQ== X-Gm-Gg: AeBDiesffY9BDcuODqo0h7oTVMiLhahn9t8r+dnMZGfcW6IqEfyE3YhEW73A2ELTQ03 3lFhsIqj25MC0jglbg8oufJc9hcvwj5nw8M2vyE/sUEkAVYt5+krqrQ2b1xZ3scneIp+3vBQzeh ro8VIr49Xu37YRjX34tnfcR0DLGe3suH1SNeO8Ms2cxR4qcl+kzYqlsKUaoYZD9AJzXromcMm/J NKGTCcbalDFM1EbtMxH940l6KMnb+ksNpJ1zbSs6Cm/KTf1gBO2cWkkS0Bmz4AV9UaJ2N7vOQO/ 50rxbSvk4vBhB+O2VzmmR37NUkkUlBOKQ/Fw1rPa5SpYMPG2z1Uo80RKMsErlGZ5TJYnQ8HN27F tCn24JUGmwZBnhwLYqyS+iBYj4+yeRN+zRK/stFCt9cY54FvLvF2QqGuQkchDDU33p0/Y9O6c8x VuKz+3yLmevux+rgW29A8o5u9mBBzpF+l0yCcyVN26y65mBQ3XV32YgRdwijqAu6VYPg== X-Received: by 2002:a05:6000:4382:b0:43d:60d:944b with SMTP id ffacd0b85a97d-43d292f1452mr21769658f8f.37.1775498481800; Mon, 06 Apr 2026 11:01:21 -0700 (PDT) Received: from ?IPV6:2001:8a0:fac8:3000:7350:2ce3:8979:9fcb? ([2001:8a0:fac8:3000:7350:2ce3:8979:9fcb]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d1e2a6f13sm43442625f8f.3.2026.04.06.11.01.20 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 06 Apr 2026 11:01:21 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------bKA1scsER4wM0Wym7T1L3NLh" Message-ID: Date: Mon, 6 Apr 2026 19:01:19 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 05/47] thread_info::executing+resumed -> thread_info::internal_state From: Pedro Alves To: gdb-patches@sourceware.org References: <20250519132308.3553663-1-pedro@palves.net> <20250519132308.3553663-6-pedro@palves.net> Content-Language: en-US In-Reply-To: <20250519132308.3553663-6-pedro@palves.net> X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org This is a multi-part message in MIME format. --------------bKA1scsER4wM0Wym7T1L3NLh Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 2025-05-19 14:22, Pedro Alves wrote: > While working on Windows non-stop support, I ran into a > very-hard-to-track-down bug. > ... > The patch adds getters/setters for both (user) state and > internal_state, and adds assertions around state transitions, ensuring > that internal_state doesn't get out of sync with > thread::have_pending_wait_status(). I've rebased this on current master and I've now merged it, after retesting on native and gdbserver linux. The rebase only required mechanical changes around thread_info pointer to thread_info references. > It also adds an assertion to > clear_proceed_status_thread, making sure that we don't try to proceed > a thread that is already running. Turns out that catches > attach_command calling init_wait_for_inferior too late, after > attaching has already created already-running threads. I've ended up splitting this part into a separate preparatory patch, to help with archaeology and bisecting if this ever creates a problem. I've attached the two patches as they were merged. Pedro Alves --------------bKA1scsER4wM0Wym7T1L3NLh Content-Type: text/x-patch; charset=UTF-8; name="0001-init_wait_for_inferior-doesn-t-imply-proceed.patch" Content-Disposition: attachment; filename="0001-init_wait_for_inferior-doesn-t-imply-proceed.patch" Content-Transfer-Encoding: base64 RnJvbSBmZGIxZjA4ODEzMThjODNkOWRiODM2Yzk1NThjMzM0MDdhY2ExNzNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZWRybyBBbHZlcyA8cGVkcm9AcGFsdmVzLm5ldD4K RGF0ZTogV2VkLCAxOSBGZWIgMjAyNSAxNDozNzozOSArMDAwMApTdWJqZWN0OiBbUEFUQ0gg MS8yXSBpbml0X3dhaXRfZm9yX2luZmVyaW9yIGRvZXNuJ3QgaW1wbHkgcHJvY2VlZAoKVGhl IG5leHQgcGF0Y2ggYWRkcyBhbiBhc3NlcnRpb24gdG8gY2xlYXJfcHJvY2VlZF9zdGF0dXNf dGhyZWFkLAptYWtpbmcgc3VyZSB0aGF0IHdlIGRvbid0IHRyeSB0byBwcm9jZWVkIGEgdGhy ZWFkIHRoYXQgaXMgYWxyZWFkeQpydW5uaW5nLiAgVHVybnMgb3V0IHRoYXQgY2F0Y2hlcyBh dHRhY2hfY29tbWFuZCBjYWxsaW5nCmluaXRfd2FpdF9mb3JfaW5mZXJpb3IgdG9vIGxhdGUs IGFmdGVyIGF0dGFjaGluZyBoYXMgYWxyZWFkeSBjcmVhdGVkCmFscmVhZHktcnVubmluZyB0 aHJlYWRzLiAgVGhpcyBwYXRjaCBmaXhlcy4KCkhvd2V2ZXIsIHRoYXQgYWxvbmUgY2hhbmdl cyBNSSBvdXRwdXQgd2hlbiBhdHRhY2hpbmcgKGFzIGNhdWdodCBieQplLmcuIGdkYi5yb2Nt L21pLWF0dGFjaC5leHApLiAgV2UnZCBnbyBmcm9tOgoKIC10YXJnZXQtYXR0YWNoIDI0Njg1 ODcKID10aHJlYWQtZ3JvdXAtc3RhcnRlZCxpZD0iaTEiLHBpZD0iMjQ2ODU4NyIKID10aHJl YWQtY3JlYXRlZCxpZD0iMSIsZ3JvdXAtaWQ9ImkxIgogXmRvbmUKCnRvOgoKIC10YXJnZXQt YXR0YWNoIDI0NDMyODgKID10aHJlYWQtZ3JvdXAtc3RhcnRlZCxpZD0iaTEiLHBpZD0iMjQ0 MzI4OCIKID10aHJlYWQtY3JlYXRlZCxpZD0iMSIsZ3JvdXAtaWQ9ImkxIgogPXRocmVhZC1j cmVhdGVkLGlkPSIyIixncm91cC1pZD0iaTEiCiB+IltOZXcgTFdQIDI0NDMzMTcgKGlkIDIp XVxuIgogXnJ1bm5pbmcKICpydW5uaW5nLHRocmVhZC1pZD0iMiIKIChnZGIpCgpUaGF0IGNo YW5nZSB3b3VsZCBoYXBwZW4gYmVjYXVzZSBpbml0X3dhaXRfZm9yX2luZmVyaW9yIGNhbGxz CmNsZWFyX3Byb2NlZWRfc3RhdHVzLCB3aGljaCBjYWxscyBub3RpZnlfYWJvdXRfdG9fcHJv Y2VlZCwgd2hlcmUgd2UKZW5kIHVwIGluIG1pX2ludGVycDo6b25fYWJvdXRfdG9fcHJvY2Vl ZCgpLCBzZXR0aW5nIHRoZSBtaV9wcm9jZWVkZWQKZmxhZy4gIElmIHRoYXQgaGFwcGVucyBi ZWZvcmUgbGludXhfbmF0X3RhcmdldDo6YXR0YWNoIGlzIGNhbGxlZCwgdGhlbgp0aGUgc2V0 X3J1bm5pbmcgY2FsbHMgaW5zaWRlIGxpbnV4X25hdF90YXJnZXQ6OmF0dGFjaCByZXN1bHQg aW4KZW1pdGluZyBecnVubmluZyBpbiBNSSBpbnN0ZWFkIG9mIF5kb25lIGR1ZSB0byB0aGUg YmFjay1jb21wYXRpYmlsaXR5CmhhY2sgaW4gbWlfb25fcmVzdW1lXzEuCgpOb3csIGluaXRf d2FpdF9pbmZlcmlvciByZWFsbHkgZG9lcyBub3QgaW1wbHkgd2UncmUgYWJvdXQgdG8gY2Fs bApwcm9jZWVkLiAgU28gcmVzdG9yZSB0aGUgTUkgb3V0cHV0IGJ5IGFkZGluZyBhIG5ldyBw YXJhbWV0ZXIgdG8KY2xlYXJfcHJvY2VlZF9zdGF0dXMgdGhhdCBsZXRzIGluaXRfd2FpdF9p bmZlcmlvciB0ZWxsCmNsZWFyX3Byb2NlZWRfc3RhdHVzIHRvIHNraXAgbm90aWZ5aW5nIHRo ZSBhYm91dF90b19wcm9jZWVkIG9ic2VydmVycy4KCkkgYXVkaXRlZCBhbGwgaW5pdF93YWl0 X2luZmVyaW9yIGNhbGxzLCBhbmQgdGhpcyBtYWRlIHNlbnNlIGluIGFsbCBvZgp0aGVtLiAg VGhlIHBsYWNlcyBkbyBjYWxsIHByb2NlZWQgYWZ0ZXIgaW5pdF93YWl0X2luZmVyaW9yLCBh bHJlYWR5CmV4cGxpY2l0bHkgY2xlYXJfcHJvY2VlZF9zdGF0dXMgYWZ0ZXIgaW5pdF93YWl0 X2luZmVyaW9yLiAgRS5nLiwKcnVuX2NvbW1hbmRfMS4KClRlc3RlZCBvbiB4ODZfNjQtbGlu dXgtZ251LCBuYXRpdmUgYW5kIGdkYnNlcnZlci4KCkNoYW5nZS1JZDogSTRmNTA5N2Q2OGY0 Njk0ZDQ0ZTFhZTIzZmVhM2U5YmNlNDVmYjA3OGMKY29tbWl0LWlkOjEyM2Y5MDIwCi0tLQog Z2RiL2luZmNtZC5jIHwgOCArKysrLS0tLQogZ2RiL2luZnJ1bi5jIHwgNyArKysrLS0tCiBn ZGIvaW5mcnVuLmggfCA1ICsrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMo KyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL2luZmNtZC5jIGIvZ2RiL2lu ZmNtZC5jCmluZGV4IDk4YjQ1Zjg4NGIxLi4yYmUyZjQzNzZjMCAxMDA2NDQKLS0tIGEvZ2Ri L2luZmNtZC5jCisrKyBiL2dkYi9pbmZjbWQuYwpAQCAtMjg2Miw2ICsyODYyLDEwIEBAIGF0 dGFjaF9jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgICAgIHRo aXMgZnVuY3Rpb24gc2hvdWxkIHByb2JhYmx5IGJlIG1vdmVkIGludG8gdGFyZ2V0X3ByZV9p bmZlcmlvci4gICovCiAgIHRhcmdldF9wcmVfaW5mZXJpb3IgKCk7CiAKKyAgLyogU2V0IHVw IGV4ZWN1dGlvbiBjb250ZXh0IHRvIGtub3cgdGhhdCB3ZSBzaG91bGQgcmV0dXJuIGZyb20K KyAgICAgd2FpdF9mb3JfaW5mZXJpb3IgYXMgc29vbiBhcyB0aGUgdGFyZ2V0IHJlcG9ydHMg YSBzdG9wLiAgKi8KKyAgaW5pdF93YWl0X2Zvcl9pbmZlcmlvciAoKTsKKwogICBnZGI6OnVu aXF1ZV94bWFsbG9jX3B0cjxjaGFyPiBzdHJpcHBlZCA9IHN0cmlwX2JnX2NoYXIgKGFyZ3Ms ICZhc3luY19leGVjKTsKICAgYXJncyA9IHN0cmlwcGVkLmdldCAoKTsKIApAQCAtMjkwNCwx MCArMjkwOCw2IEBAIGF0dGFjaF9jb21tYW5kIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJv bV90dHkpCiAgICAgICAgZmluaXNoZWQuICAqLwogICB0YXJnZXRfdGVybWluYWw6OmluZmVy aW9yICgpOwogCi0gIC8qIFNldCB1cCBleGVjdXRpb24gY29udGV4dCB0byBrbm93IHRoYXQg d2Ugc2hvdWxkIHJldHVybiBmcm9tCi0gICAgIHdhaXRfZm9yX2luZmVyaW9yIGFzIHNvb24g YXMgdGhlIHRhcmdldCByZXBvcnRzIGEgc3RvcC4gICovCi0gIGluaXRfd2FpdF9mb3JfaW5m ZXJpb3IgKCk7Ci0KICAgaW5mZXJpb3ItPm5lZWRzX3NldHVwID0gdHJ1ZTsKIAogICBpZiAo dGFyZ2V0X2lzX25vbl9zdG9wX3AgKCkpCmRpZmYgLS1naXQgYS9nZGIvaW5mcnVuLmMgYi9n ZGIvaW5mcnVuLmMKaW5kZXggMmU1M2QyYTZjMzAuLmE2YjVkYjNlZGQ1IDEwMDY0NAotLS0g YS9nZGIvaW5mcnVuLmMKKysrIGIvZ2RiL2luZnJ1bi5jCkBAIC0zMTIzLDcgKzMxMjMsNyBA QCBub3RpZnlfYWJvdXRfdG9fcHJvY2VlZCAoKQogfQogCiB2b2lkCi1jbGVhcl9wcm9jZWVk X3N0YXR1cyAoaW50IHN0ZXApCitjbGVhcl9wcm9jZWVkX3N0YXR1cyAoaW50IHN0ZXAsIGJv b2wgYWJvdXRfdG9fcHJvY2VlZCkKIHsKICAgLyogV2l0aCBzY2hlZHVsZXItbG9ja2luZyBy ZXBsYXksIHN0b3AgcmVwbGF5aW5nIG90aGVyIHRocmVhZHMgaW4gdGhlCiAgICAgIHNhbWUg cHJvY2VzcyBpZiB3ZSdyZSBub3QgcmVwbGF5aW5nIHRoZSBzZWxlY3RlZCB0aHJlYWQuCkBA IC0zMTYyLDcgKzMxNjIsOCBAQCBjbGVhcl9wcm9jZWVkX3N0YXR1cyAoaW50IHN0ZXApCiAg ICAgICBpbmZlcmlvci0+Y29udHJvbC5zdG9wX3Nvb24gPSBOT19TVE9QX1FVSUVUTFk7CiAg ICAgfQogCi0gIG5vdGlmeV9hYm91dF90b19wcm9jZWVkICgpOworICBpZiAoYWJvdXRfdG9f cHJvY2VlZCkKKyAgICBub3RpZnlfYWJvdXRfdG9fcHJvY2VlZCAoKTsKIH0KIAogLyogUmV0 dXJucyB0cnVlIGlmIFRQIGlzIHN0aWxsIHN0b3BwZWQgYXQgYSBicmVha3BvaW50IHRoYXQg bmVlZHMKQEAgLTM4NTEsNyArMzg1Miw3IEBAIGluaXRfd2FpdF9mb3JfaW5mZXJpb3IgKHZv aWQpCiAKICAgYnJlYWtwb2ludF9pbml0X2luZmVyaW9yIChjdXJyZW50X2luZmVyaW9yICgp LCBpbmZfc3RhcnRpbmcpOwogCi0gIGNsZWFyX3Byb2NlZWRfc3RhdHVzICgwKTsKKyAgY2xl YXJfcHJvY2VlZF9zdGF0dXMgKDAsIGZhbHNlKTsKIAogICBudWxsaWZ5X2xhc3RfdGFyZ2V0 X3dhaXRfcHRpZCAoKTsKIApkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5oIGIvZ2RiL2luZnJ1 bi5oCmluZGV4IDdlMmI2NTJlNGYxLi45ZWFhNTM4N2VmMCAxMDA2NDQKLS0tIGEvZ2RiL2lu ZnJ1bi5oCisrKyBiL2dkYi9pbmZydW4uaApAQCAtMTI5LDggKzEyOSw5IEBAIGV4dGVybiB2 b2lkIHN0YXJ0X3JlbW90ZSAoaW50IGZyb21fdHR5KTsKIC8qIENsZWFyIG91dCBhbGwgdmFy aWFibGVzIHNheWluZyB3aGF0IHRvIGRvIHdoZW4gaW5mZXJpb3IgaXMKICAgIGNvbnRpbnVl ZCBvciBzdGVwcGVkLiAgRmlyc3QgZG8gdGhpcywgdGhlbiBzZXQgdGhlIG9uZXMgeW91IHdh bnQsCiAgICB0aGVuIGNhbGwgYHByb2NlZWQnLiAgU1RFUCBpbmRpY2F0ZXMgd2hldGhlciB3 ZSdyZSBwcmVwYXJpbmcgZm9yIGEKLSAgIHN0ZXAvc3RlcGkgY29tbWFuZC4gICovCi1leHRl cm4gdm9pZCBjbGVhcl9wcm9jZWVkX3N0YXR1cyAoaW50IHN0ZXApOworICAgc3RlcC9zdGVw aSBjb21tYW5kLiAgU2V0IEFCT1VUX1RPX1BST0NFRUQgdG8gZmFsc2UgaWYgd2UncmUgbm90 CisgICBjYWxsaW5nIGBwcm9jZWVlZGAgeWV0LiAgKi8KK2V4dGVybiB2b2lkIGNsZWFyX3By b2NlZWRfc3RhdHVzIChpbnQgc3RlcCwgYm9vbCBhYm91dF90b19wcm9jZWVkID0gdHJ1ZSk7 CiAKIGV4dGVybiB2b2lkIHByb2NlZWQgKENPUkVfQUREUiwgZW51bSBnZGJfc2lnbmFsKTsK IAoKYmFzZS1jb21taXQ6IDczNDM0MDk0YWQ4YTg2MWZlNTU1MDQ1ODA0ZTk0M2QxODZmZjY4 NzkKLS0gCjIuNTMuMAoK --------------bKA1scsER4wM0Wym7T1L3NLh Content-Type: text/x-patch; charset=UTF-8; name="0002-thread_info-executing-resumed-thread_info-internal_s.patch" Content-Disposition: attachment; filename*0="0002-thread_info-executing-resumed-thread_info-internal_s.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyOTU0ZGQyYjczNDUyNjE2NWI5MjBlYjU3NWJjZDBmYzA3ZTBhYTI0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZWRybyBBbHZlcyA8cGVkcm9AcGFsdmVzLm5ldD4K RGF0ZTogV2VkLCAxOSBGZWIgMjAyNSAxNDozNzozOSArMDAwMApTdWJqZWN0OiBbUEFUQ0gg Mi8yXSB0aHJlYWRfaW5mbzo6ZXhlY3V0aW5nK3Jlc3VtZWQgLT4KIHRocmVhZF9pbmZvOjpp bnRlcm5hbF9zdGF0ZQoKV2hpbGUgd29ya2luZyBvbiBXaW5kb3dzIG5vbi1zdG9wIHN1cHBv cnQsIEkgcmFuIGludG8gYQp2ZXJ5LWhhcmQtdG8tdHJhY2stZG93biBidWcuCgpUaGUgcHJv YmxlbSB0dXJuZWQgb3V0IHRvIGJlIHRoYXQKaW5mcnVuLmM6cHJvY2VlZF9yZXN1bWVfdGhy ZWFkX2NoZWNrZWQgcmVzdW1lZCBhbiBhbHJlYWR5LWV4ZWN1dGluZwp0aHJlYWQgYmVjYXVz ZSB0aGUgdGhyZWFkIHdhcyBtYXJrZWQgYXMgImV4ZWN1dGluZz10cnVlLApyZXN1bWVkPWZh bHNlIiwgYW5kIHRoYXQgZnVuY3Rpb24gb25seSBza2lwcyByZXN1bWluZyB0aHJlYWRzIHRo YXQgYXJlCm1hcmtlZCByZXN1bWVkPXRydWUuICBUaGUgY29uc2VxdWVuY2Ugd2FzIHRoYXQg R0RCIGNvcnJ1cHRlZCB0aGUKcmVnaXN0ZXJzIG9mIHRoZSBXaW5kb3dzIERMTCBsb2FkZXIg dGhyZWFkcywgZXZlbnR1YWxseSBsZWFkaW5nIHRvIGEKR0RCK2luZmVyaW9yIGRlYWRsb2Nr LgoKT3JpZ2luYWxseSwgdGhlICJyZXN1bWVkIiBmbGFnIHdhcyBvbmx5IGV2ZXIgc2V0IHdo ZW4gaW5mcnVuIGRlY2lkZWQKaXMgd2FzIHJlYWR5IHRvIHByb2Nlc3MgYSB0aHJlYWQncyBw ZW5kaW5nIHdhaXQgc3RhdHVzLiAgaW5mcnVuIGhhcwpzaW5jZSBldm9sdmVkIHRvIHNldCB0 aGUgcmVzdW1lZCBmbGFnIHdoZW4gd2Ugc2V0IGEgdGhyZWFkJ3MgZXhlY3V0aW5nCmZsYWcg dG9vLiAgV2UgYXJlIG5vdCBhbHdheXMgY29uc2lzdGVudCB0aHJvdWdob3V0IGluIGd1YXJh bnRlZWluZwp0aGF0IGEgdGhyZWFkIGlzIG1hcmtlZCByZXN1bWVkPXRydWUgd2hlbmV2ZXIg aXQgaXMgbWFya2VkCmV4ZWN1dGluZz10cnVlLCB0aG91Z2guICBGb3IgaW5zdGFuY2UsIG5v IHRhcmdldCBjb2RlIHRoYXQgc3VwcG9ydHMKbm9uLXN0b3AgbW9kZSAobGludXgtbmF0LCBy ZW1vdGUsIGFuZCB3aW5kb3dzLW5hdCB3aXRoIHRoaXMgc2VyaWVzKSBpcwptYWtpbmcgc3Vy ZSB0aGF0IG5ldyB0aHJlYWRzIGFyZSBtYXJrZWQgcmVzdW1lZD10cnVlIHdoZW4gdGhleSBh cmUKYWRkZWQgdG8gdGhlIHRocmVhZCBsaXN0LiAgVGhleSBhcmUgb25seSBtYXJrZWQgYXMg e3N0YXRlPXJ1bm5pbmcsCmV4ZWN1dGluZz10cnVlfSwgdGhlICJyZXN1bWVkIiBmbGFnIGlz IG5vdCB0b3VjaGVkLgoKTWFraW5nIHByb2NlZWRfcmVzdW1lX3RocmVhZF9jaGVja2VkIGNo ZWNrIHRoci0+ZXhlY3V0aW5nKCkgaW4KYWRkaXRpb24gdG8gdGhyLT5yZXN1bWVkKCksIGZl ZWxzIGxpa2UgcGFwZXJpbmcgb3ZlciBhIGNvbWJpbmF0aW9uIG9mCnN0YXRlcyB0aGF0IHNo b3VsZG4ndCBoYXBwZW4gbm93YWRheXMuCgpPVE9ILCBoYXZpbmcgdG8gaGF2ZSB0aGUgdGFy Z2V0IGJhY2tlbmRzIG1hcmsgbmV3IHRocmVhZHMgYXMKcmVzdW1lZD10cnVlIGp1c3QgZmVl bHMgbGlrZSB0b28gbWFueSBkaWZmZXJlbnQgc3RhdGVzICh0aHJlZSkgdG8gc2V0OgoKICBh ZGRfdGhyZWFkICguLi4pOwogIHNldF9ydW5uaW5nICguLi4pOwogIHNldF9leGVjdXRpbmcg KC4uLik7CiAgc2V0X3Jlc3VtZWQgKC4uLik7CgpZdWNrLiAgSSB0aGluayB3ZSBjYW4gZG8g YmV0dGVyLgoKV2UgcmVhbGx5IGhhdmUgdG9vIG1hbnkgInN0YXRlIHRyYWNraW5nIiBmbGFn cyBpbiBhIHRocmVhZC4KQmFzaWNhbGx5OgoKIC0gd2hldGhlciBhIHRocmVhZCBpcyAicnVu bmluZy9zdG9wcGVkL2V4aXRlZCIgKGZyb20gdGhlIHVzZXIncwogICBwZXJzcGVjdGl2ZSku ICBUaGlzIGlzIHRoZSB0aHJlYWRfaW5mbzo6c3RhdGUgZmllbGQuCgogLSB3aGV0aGVyIGEg dGhyZWFkIGlzICJleGVjdXRpbmciIChpbmZydW4gYXNrZWQgdGhlIHRhcmdldCB0byBzZXQg dGhlCiAgIHRocmVhZCBleGVjdXRpbmcpLiAgVGhpcyBpcyB0aHJlYWRfaW5mbzo6ZXhlY3V0 aW5nKCkuCgogLSB3aGV0aGVyIGEgdGhyZWFkIGlzICJyZXN1bWVkIiAoaW5mcnVuIHdhbnRz IHRoZSB0aHJlYWQgdG8gYmUKICAgcmVzdW1lZCwgYnV0IG1heWJlIGNhbid0IHlldCBiZWNh dXNlIHRoZSB0aHJlYWQgaGFzIGEgcGVuZGluZyB3YWl0CiAgIHN0YXR1cykuICBUaGlzIGlz IHRocmVhZF9pbmZvOjpyZXN1bWVkKCkKCiJydW5uaW5nIiwgImV4ZWN1dGluZyIsIGFuZCAi cmVzdW1lZCIgYXJlIGFsbW9zdCBzeW5vbnltcywgc28gdGhpcyBjYW4KYmUgaGlnaGx5IGNv bmZ1c2luZyBFbmdsaXNoLXdpc2UgdG9vLgoKRm9yICJydW5uaW5nIiB2cyAiZXhlY3V0aW5n IiwgaW4gY29tbWVudHMsIHdlIHRpcGljYWxseSBuZWVkIHRvCmV4cGxhaW4gdGhhdCAicnVu bmluZy9zdG9wcGVkL2V4aXRlZCIgaXMgZm9yIHRoZSB1c2VyL2Zyb250ZW5kCnBlcnNwZWN0 aXZlLCB3aGlsZSAiZXhlY3V0aW5nIHRydWUvZmFsc2UiIGlzIGZvciBnZGIncyBpbnRlcm5h bCBydW4KY29udHJvbC4KCihBbHNvLCAiZXhlY3V0aW5nIG9yIG5vdCIgY2FuIGFsc28gbWVh biBzb21ldGhpbmcgZWxzZSBpbiBHREIncwpjb2RlYmFzZSAtLSAidGFyZ2V0IGhhcyBleGVj dXRpb24iIGRvZXMgbm90IG1lYW4gdGhhdCB0aHJlYWRzIGFyZQphY3R1YWxseSBydW5uaW5n IHJpZ2h0IG5vdyAtLSBpdCdzIGEgdGVzdCBmb3Igd2hldGhlciB3ZSBoYXZlIGEgbGl2ZQpw cm9jZXNzIHZzIGEgY29yZSBkdW1wISkKCk9uZSBzaW1wbGlmaWNhdGlvbiB3ZSBjYW4gZG8g dGhhdCBhdm9pZHMgdGhpcyBydW5uaW5nIHZzIGV4ZWN1dGluZwphbWJpZ3VpdHkgaXMgdG8g cmVwbGFjZSB0aGUgImV4ZWN1dGluZyIgZmllbGQgd2l0aCBhbiAiaW50ZXJuYWxfc3RhdGUi CmZpZWxkLCBzaW1pbGFyIHRvIHRoZSB0aHJlYWRfaW5mbzo6c3RhdGUgZmllbGQsIGFuZCBt YWtlIHRoYXQgbmV3CmludGVybmFsX3N0YXRlIGZpZWxkIHJldXNlIHRoZSBzYW1lIGVudW0g dGhyZWFkX3N0YXRlIHR5cGUgdGhhdCBpcwp1c2VkIGJ5IHRocmVhZF9pbmZvOjpzdGF0ZS4g IExpa2U6CgogIHN0cnVjdCB0aHJlYWRfaW5mbwogIHsKICAuLi4KICAgIC8qIEZyb250ZW5k L3B1YmxpYy9leHRlcm5hbC91c2VyIHZpZXcgb2YgdGhlIHRocmVhZCBzdGF0ZS4gICovCiAg ICBlbnVtIHRocmVhZF9zdGF0ZSBtX3N0YXRlID0gVEhSRUFEX1NUT1BQRUQ7CgogICAgLyog VGhlIHRocmVhZCdzIGludGVybmFsIHN0YXRlLiAgV2hlbiB0aGUgdGhyZWFkIGlzIHN0b3Bw ZWQKICAgICAgIGludGVybmFsbHkgd2hpbGUgaGFuZGxpbmcgYW4gaW50ZXJuYWwgZXZlbnQs IGxpa2UgYSBzb2Z0d2FyZQogICAgICAgc2luZ2xlLXN0ZXAgYnJlYWtwb2ludCwgdGhlIGlu dGVybmFsIHN0YXRlIHdpbGwgYmUKICAgICAgIFRIUkVBRF9TVE9QUEVELCBidXQgdGhlIGV4 dGVybmFsIHN0YXRlIHdpbGwgc3RpbGwgYmUKICAgICAgIFRIUkVBRF9SVU5OSU5HLiAgKi8K ICAgIGVudW0gdGhyZWFkX3N0YXRlIG1faW50ZXJuYWxfc3RhdGUgPSBUSFJFQURfU1RPUFBF RDsKICB9OwoKKEFzc3VtZSB3ZSdkIGFkZCBzdGF0ZSgpIGFuZCBpbnRlcm5hbF9zdGF0ZSgp IGdldHRlcnMuKQoKV2l0aCB0aGF0LCBldmVyeSBjaGVjayBmb3IgdGhyLT5leGVjdXRpbmco KSBpcyByZXBsYWNlZCB3aXRoIGEKJ3Roci0+aW50ZXJuYWxfc3RhdGUoKSA9PSBUSFJFQURf UlVOTklORycgY2hlY2ssIGFuZCB0aGUgY29kZSBpcwpjbGVhcmVyIGJ5IGRlc2lnbi4gIFRo ZXJlIGlzIG5vIGNvbmZ1c2lvbiBiZXR3ZWVuICJydW5uaW5nIiB2cwoiZXhlY3V0aW5nIiBh bnkgbW9yZSwgYmVjYXVzZSB0aGV5IG5vdyBtZWFuIHRoZSBleGFjdCBzYW1lIHRoaW5nLgpJ bnN0ZWFkLCB3ZSBzYXkgZS5nLiwgJ3RocmVhZCBoYXMgKHVzZXIpIHN0YXRlICJydW5uaW5n IiwgYW5kIGludGVybmFsCnN0YXRlICJzdG9wcGVkIicuICBPciBzaW1wbGVyLCAndGhyZWFk IGlzIHJ1bm5pbmcgKGZyb20gdGhlIHVzZXIncwpwZXJzcGVjdGl2ZSksIGJ1dCBpbnRlcm5h bGx5IHN0b3BwZWQnLiAgVGhhdCBpcyBhZnRlciBhbGwgd2hhdCB3ZQp3b3VsZCB3YXkgaW4g Y29tbWVudHMgdG9kYXkgYWxyZWFkeS4KClRoYXQgc3RpbGwgbGVhdmVzIHRoZSAncmVzdW1l ZCcgZmxhZywgdGhvdWdoLiAgVGhhdCdzIHRoZSBsZWFzdApvYnZpb3VzIG9uZS4gIFR1cm5z IG91dCB3ZSBjYW4gZ2V0IHJpZCBvZiBpdCwgYW5kIG1ha2UgaXQgYSBuZXcgc3RhdGUKdHJh Y2tlZCBieSB0aHJlYWRfaW5mbzo6aW50ZXJuYWxfc3RhdGUuICBUaGF0IGlzLCB3ZSBtYWtl CmludGVybmFsX3N0YXRlIGhhdmUgaXRzIG93biBlbnVtZXJhdGlvbiB0eXBlIChkZWNvdXBs ZWQgZnJvbQp0aHJlYWRfaW5mbzo6c3RhdGUncyB0eXBlKSwgYW5kIGNvbnZlcnQgdGhlIHJl c3VtZWQgdHJ1ZS9mYWxzZSBmbGFnIHRvCmEgbmV3IGVudW1lcmF0b3Igb2YgdGhpcyBuZXcg ZW51bWVyYXRpb24uICBMaWtlIHNvOgoKICBlbnVtIHRocmVhZF9pbnRfc3RhdGUKICB7CiAg ICBUSFJFQURfSU5UX1NUT1BQRUQsCiAgICBUSFJFQURfSU5UX1JVTk5JTkcsCiArICAgVEhS RUFEX0lOVF9SRVNVTUVEX1BFTkRJTkdfU1RBVFVTLAogICAgVEhSRUFEX0lOVF9FWElURUQs CiAgfTsKClRoYXQgaXMgd2hhdCB0aGlzIHBhdGNoIGRvZXMuICBTbyBpbiBzdW1tYXJ5LCB3 ZSBnbyBmcm9tOgoKIHRocmVhZF9pbmZvOjpzdGF0ZSB7VEhSRUFEX1NUT1BQRUQsIFRIUkVB RF9SVU5OSU5HLCBUSFJFQURfRVhJVEVEfQogdGhyZWFkX2luZm86OmV4ZWN1dGluZyB7ZmFs c2UsIHRydWV9CiB0aHJlYWRfaW5mbzo6cmVzdW1lZCB7ZmFsc2UsIHRydWV9Cgp0bzoKCiB0 aHJlYWRfaW5mbzo6c3RhdGUge1RIUkVBRF9TVE9QUEVELCBUSFJFQURfUlVOTklORywgVEhS RUFEX0VYSVRFRH0KIHRocmVhZF9pbmZvOjppbnRlcm5hbF9zdGF0ZSB7VEhSRUFEX0lOVF9T VE9QUEVELCBUSFJFQURfSU5UX1JVTk5JTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRIUkVBRF9JTlRfUkVTVU1FRF9QRU5ESU5HX1NUQVRVUywKCQkJICAgICAgVEhSRUFE X0lOVF9FWElURUR9CgpUaGUgcGF0Y2ggYWRkcyBnZXR0ZXJzL3NldHRlcnMgZm9yIGJvdGgg KHVzZXIpIHN0YXRlIGFuZAppbnRlcm5hbF9zdGF0ZSwgYW5kIGFkZHMgYXNzZXJ0aW9ucyBh cm91bmQgc3RhdGUgdHJhbnNpdGlvbnMsIGVuc3VyaW5nCnRoYXQgaW50ZXJuYWxfc3RhdGUg ZG9lc24ndCBnZXQgb3V0IG9mIHN5bmMgd2l0aAp0aHJlYWQ6OmhhdmVfcGVuZGluZ193YWl0 X3N0YXR1cygpLgoKVGhlIGNvZGUgdGhhdCBhZGRzL3JlbW92ZXMgdGhyZWFkcyBmcm9tIHRo ZSBwcm9jX3RhcmdldCdzCnJlc3VtZWRfd2l0aF9wZW5kaW5nX3dhaXRfc3RhdHVzIGxpc3Qg aXMgYWxsIGNlbnRyYWxpemVkIHdpdGhpbgp0aHJlYWRfaW5mbzo6c2V0X2ludGVybmFsX3N0 YXRlLCB3aGVuIHdlIHN3aXRjaCB0by9mcm9tIHRoZQpyZXN1bWVkLXBlbmRpbmctc3RhdHVz IHN0YXRlLiAgV2l0aCB0aGUgYXNzZXJ0aW9ucyBpbiBwbGFjZSwgaXQgc2hvdWxkCmJlIGlt cG9zc2libGUgdG8gZW5kIHVwIHdpdGggYSBUSFJFQURfSU5UX1JVTk5JTkcgdGhyZWFkIHdp dGggYQpwZW5kaW5nIHN0YXR1cy4KClRoZSB0aHJlYWQuYzpzZXRfcnVubmluZywgdGhyZWFk LmM6c2V0X2V4ZWN1dGluZywgdGhyZWFkLmM6c2V0X3Jlc3VtZWQKZ2xvYmFsIGZ1bmN0aW9u cyBhcmUgYWxsIGdvbmUsIHJlcGxhY2VkIHdpdGggbmV3IHRocmVhZC5jOnNldF9zdGF0ZQph bmQgdGhyZWFkLmM6c2V0X2ludGVybmFsX3N0YXRlIGZ1bmN0aW9ucy4KClRlc3RlZCBvbiB4 ODZfNjQtbGludXgtZ251LCBuYXRpdmUgYW5kIGdkYnNlcnZlci4KCkNoYW5nZS1JZDogSTRm NTA5N2Q2OGY0Njk0ZDQ0ZTFhZTIzZmVhM2U5YmNlNDVmYjA3OGMKY29tbWl0LWlkOjQyYmE5 N2Q0Ci0tLQogZ2RiL2FhcmNoNjQtdGRlcC5jICAgICAgICAgICB8ICAgMiArLQogZ2RiL2Ft ZC1kYmdhcGktdGFyZ2V0LmMgICAgICB8ICAgOCArLQogZ2RiL2JyZWFrcG9pbnQuYyAgICAg ICAgICAgICB8ICAxMCArLQogZ2RiL2JzZC11dGhyZWFkLmMgICAgICAgICAgICB8ICAgNCAr LQogZ2RiL2ZvcmstY2hpbGQuYyAgICAgICAgICAgICB8ICAgNCArLQogZ2RiL2ZyYW1lLmMg ICAgICAgICAgICAgICAgICB8ICAgNCArLQogZ2RiL2djb3JlLmMgICAgICAgICAgICAgICAg ICB8ICAgNCArLQogZ2RiL2dkYnRocmVhZC5oICAgICAgICAgICAgICB8IDE0NiArKysrKysr KystLS0tLS0tLQogZ2RiL2kzODYtdGRlcC5jICAgICAgICAgICAgICB8ICAgNCArLQogZ2Ri L2luZi1wdHJhY2UuYyAgICAgICAgICAgICB8ICAgMiArLQogZ2RiL2luZmNhbGwuYyAgICAg ICAgICAgICAgICB8ICAgOCArLQogZ2RiL2luZmNtZC5jICAgICAgICAgICAgICAgICB8ICAz MSArKy0tCiBnZGIvaW5mZXJpb3IuaCAgICAgICAgICAgICAgIHwgICA0ICstCiBnZGIvaW5m bG93LmMgICAgICAgICAgICAgICAgIHwgICAyICstCiBnZGIvaW5mcnVuLmMgICAgICAgICAg ICAgICAgIHwgMTU0ICsrKysrKysrKy0tLS0tLS0tLQogZ2RiL2luZnJ1bi5oICAgICAgICAg ICAgICAgICB8ICAgNyArLQogZ2RiL2xpbnV4LWZvcmsuYyAgICAgICAgICAgICB8ICAgOSAr LQogZ2RiL2xpbnV4LW5hdC5jICAgICAgICAgICAgICB8ICAgOCArLQogZ2RiL2xpbnV4LXRo cmVhZC1kYi5jICAgICAgICB8ICAgNCArLQogZ2RiL21pL21pLWNtZC12YXIuYyAgICAgICAg ICB8ICAgNCArLQogZ2RiL21pL21pLWludGVycC5jICAgICAgICAgICB8ICAgMiArLQogZ2Ri L21pL21pLW1haW4uYyAgICAgICAgICAgICB8ICAgOCArLQogZ2RiL3Byb2Nlc3Mtc3RyYXR1 bS10YXJnZXQuYyB8ICAgNiArLQogZ2RiL3B5dGhvbi9weS1pbmZ0aHJlYWQuYyAgICB8ICAg NiArLQogZ2RiL3JlY29yZC1idHJhY2UuYyAgICAgICAgICB8ICAyNiArLS0KIGdkYi9yZWNv cmQtZnVsbC5jICAgICAgICAgICAgfCAgIDYgKy0KIGdkYi9yZWdjYWNoZS5jICAgICAgICAg ICAgICAgfCAgIDIgKy0KIGdkYi9yZW1vdGUuYyAgICAgICAgICAgICAgICAgfCAgNzYgKysr KystLS0tCiBnZGIvc29sLXRocmVhZC5jICAgICAgICAgICAgIHwgICA0ICstCiBnZGIvdGFy Z2V0LmMgICAgICAgICAgICAgICAgIHwgIDE1ICstCiBnZGIvdGhyZWFkLWl0ZXIuaCAgICAg ICAgICAgIHwgICAyICstCiBnZGIvdGhyZWFkLmMgICAgICAgICAgICAgICAgIHwgMjk5ICsr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBnZGIvdG9wLmMgICAgICAgICAg ICAgICAgICAgIHwgICAyICstCiAzMyBmaWxlcyBjaGFuZ2VkLCA0NzYgaW5zZXJ0aW9ucygr KSwgMzk3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dkYi9hYXJjaDY0LXRkZXAuYyBi L2dkYi9hYXJjaDY0LXRkZXAuYwppbmRleCBjZTAwZjUxODI5OS4uNGJlZmFhMjcyMGQgMTAw NjQ0Ci0tLSBhL2dkYi9hYXJjaDY0LXRkZXAuYworKysgYi9nZGIvYWFyY2g2NC10ZGVwLmMK QEAgLTQzNTUsNyArNDM1NSw3IEBAIGFhcmNoNjRfcmVtb3ZlX25vbl9hZGRyZXNzX2JpdHMg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcG9pbnRlcikKIAogICAgICAg LyogSWYgdGhlIHRocmVhZCBpcyBydW5uaW5nLCB3ZSB3aWxsIG5vdCBiZSBhYmxlIHRvIGZl dGNoIHRoZSBtYXNrCiAJIHJlZ2lzdGVycy4gICovCi0gICAgICBpZiAodGhyZWFkICE9IG51 bGxwdHIgJiYgdGhyZWFkLT5zdGF0ZSAhPSBUSFJFQURfUlVOTklORykKKyAgICAgIGlmICh0 aHJlYWQgIT0gbnVsbHB0ciAmJiB0aHJlYWQtPnN0YXRlICgpICE9IFRIUkVBRF9SVU5OSU5H KQogCXsKIAkgIC8qIE90aGVyd2lzZSwgZmV0Y2ggdGhlIHJlZ2lzdGVyIGNhY2hlIGFuZCB0 aGUgbWFza3MuICAqLwogCSAgc3RydWN0IHJlZ2NhY2hlICpyZWdzCmRpZmYgLS1naXQgYS9n ZGIvYW1kLWRiZ2FwaS10YXJnZXQuYyBiL2dkYi9hbWQtZGJnYXBpLXRhcmdldC5jCmluZGV4 IDY1NWRkZGQzNmVkLi44MTFlMjIxODJjNiAxMDA2NDQKLS0tIGEvZ2RiL2FtZC1kYmdhcGkt dGFyZ2V0LmMKKysrIGIvZ2RiL2FtZC1kYmdhcGktdGFyZ2V0LmMKQEAgLTExNjAsNyArMTE2 MCw3IEBAIGFtZF9kYmdhcGlfdGFyZ2V0OjpzdG9wIChwdGlkX3QgcHRpZCkKICAgICAvKiBV c2UgdGhlIHRocmVhZHNfc2FmZSBpdGVyYXRvciBzaW5jZSBzdG9wX29uZV90aHJlYWQgbWF5 IGRlbGV0ZSB0aGUKICAgICAgICB0aHJlYWQgaWYgaXQgaGFzIGV4aXRlZC4gICovCiAgICAg Zm9yIChhdXRvICZ0aHJlYWQgOiBpbmYtPnRocmVhZHNfc2FmZSAoKSkKLSAgICAgIGlmICh0 aHJlYWQuc3RhdGUgIT0gVEhSRUFEX0VYSVRFRCAmJiB0aHJlYWQucHRpZC5tYXRjaGVzIChw dGlkKQorICAgICAgaWYgKHRocmVhZC5zdGF0ZSAoKSAhPSBUSFJFQURfRVhJVEVEICYmIHRo cmVhZC5wdGlkLm1hdGNoZXMgKHB0aWQpCiAJICAmJiBwdGlkX2lzX2dwdSAodGhyZWFkLnB0 aWQpKQogCXN0b3Bfb25lX3RocmVhZCAoJnRocmVhZCk7CiB9CkBAIC0xMzg4LDggKzEzODgs OCBAQCBhZGRfZ3B1X3RocmVhZCAoaW5mZXJpb3IgKmluZiwgcHRpZF90IHdhdmVfcHRpZCkK ICAgLyogQ3JlYXRlIG5ldyBHUFUgdGhyZWFkcyBzaWxlbnRseSB0byBhdm9pZCBzcGFtbWlu ZyB0aGUgdGVybWluYWwKICAgICAgd2l0aCB0aG91c2FuZHMgb2YgIltOZXcgVGhyZWFkIC4u Ll0iIG1lc3NhZ2VzLiAgKi8KICAgdGhyZWFkX2luZm8gKnRocmVhZCA9IGFkZF90aHJlYWRf c2lsZW50IChwcm9jX3RhcmdldCwgd2F2ZV9wdGlkKTsKLSAgc2V0X3J1bm5pbmcgKHByb2Nf dGFyZ2V0LCB3YXZlX3B0aWQsIHRydWUpOwotICBzZXRfZXhlY3V0aW5nIChwcm9jX3Rhcmdl dCwgd2F2ZV9wdGlkLCB0cnVlKTsKKyAgc2V0X3N0YXRlIChwcm9jX3RhcmdldCwgd2F2ZV9w dGlkLCBUSFJFQURfUlVOTklORyk7CisgIHNldF9pbnRlcm5hbF9zdGF0ZSAocHJvY190YXJn ZXQsIHdhdmVfcHRpZCwgVEhSRUFEX0lOVF9SVU5OSU5HKTsKICAgcmV0dXJuIHRocmVhZDsK IH0KIApAQCAtMjExMiw3ICsyMTEyLDcgQEAgYW1kX2RiZ2FwaV90YXJnZXQ6OnVwZGF0ZV90 aHJlYWRfbGlzdCAoKQogCSB3aGljaCBkb2VzIG5vdCBoYXZlIGEgY29ycmVzcG9uZGluZyB3 YXZlX2lkIHJlcHJlc2VudHMgYSB3YXZlIHdoaWNoCiAJIGlzIGdvbmUgYXQgdGhpcyBwb2lu dCBhbmQgc2hvdWxkIGJlIGRlbGV0ZWQuICAqLwogICAgICAgZm9yICh0aHJlYWRfaW5mbyAm dHAgOiBpbmYtPnRocmVhZHNfc2FmZSAoKSkKLQlpZiAocHRpZF9pc19ncHUgKHRwLnB0aWQp ICYmIHRwLnN0YXRlICE9IFRIUkVBRF9FWElURUQpCisJaWYgKHB0aWRfaXNfZ3B1ICh0cC5w dGlkKSAmJiB0cC5zdGF0ZSAoKSAhPSBUSFJFQURfRVhJVEVEKQogCSAgewogCSAgICBhdXRv IGl0ID0gdGhyZWFkcy5maW5kICh0cC5wdGlkLnRpZCAoKSk7CiAKZGlmZiAtLWdpdCBhL2dk Yi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCmluZGV4IGQ3YmUxYjQ0MjI5Li4z MTgxMWUzYTU1MyAxMDA2NDQKLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYworKysgYi9nZGIvYnJl YWtwb2ludC5jCkBAIC02MjAsOSArNjIwLDkgQEAgYnJlYWtwb2ludHNfc2hvdWxkX2JlX2lu c2VydGVkX25vdyAodm9pZCkKIAkgIHJldHVybiAxOwogCiAgICAgICAvKiBEb24ndCByZW1v dmUgYnJlYWtwb2ludHMgeWV0IGlmLCBldmVuIHRob3VnaCBhbGwgdGhyZWFkcyBhcmUKLQkg c3RvcHBlZCwgd2Ugc3RpbGwgaGF2ZSBldmVudHMgdG8gcHJvY2Vzcy4gICovCisJIHN0b3Bw ZWQsIHNvbWUgc3RpbGwgaGF2ZSBwZW5kaW5nIGV2ZW50cyB0byBwcm9jZXNzLiAgKi8KICAg ICAgIGZvciAodGhyZWFkX2luZm8gJnRwIDogYWxsX25vbl9leGl0ZWRfdGhyZWFkcyAoKSkK LQlpZiAodHAucmVzdW1lZCAoKSAmJiB0cC5oYXNfcGVuZGluZ193YWl0c3RhdHVzICgpKQor CWlmICh0cC5pbnRlcm5hbF9zdGF0ZSAoKSA9PSBUSFJFQURfSU5UX1JFU1VNRURfUEVORElO R19TVEFUVVMpCiAJICByZXR1cm4gMTsKICAgICB9CiAgIHJldHVybiAwOwpAQCAtMjA1MCw3 ICsyMDUwLDggQEAgd2F0Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUgKHN0cnVjdCB3YXRjaHBv aW50ICpiKQogICByZXR1cm4gKGItPnBzcGFjZSA9PSBjdXJyZW50X3Byb2dyYW1fc3BhY2UK IAkgICYmIChiLT53YXRjaHBvaW50X3RocmVhZCA9PSBudWxsX3B0aWQKIAkgICAgICB8fCAo aW5mZXJpb3JfcHRpZCA9PSBiLT53YXRjaHBvaW50X3RocmVhZAotCQkgICYmICFpbmZlcmlv cl90aHJlYWQgKCktPmV4ZWN1dGluZyAoKSkpKTsKKwkJICAmJiAoaW5mZXJpb3JfdGhyZWFk ICgpLT5pbnRlcm5hbF9zdGF0ZSAoKQorCQkgICAgICAhPSBUSFJFQURfSU5UX1JVTk5JTkcp KSkpOwogfQogCiAvKiBTZXQgd2F0Y2hwb2ludCBCIHRvIGRpc3BfZGVsX2F0X25leHRfc3Rv cCwgZXZlbiBpbmNsdWRpbmcgaXRzIHBvc3NpYmxlCkBAIC00OTkxLDcgKzQ5OTIsOCBAQCBn ZXRfYnBzdGF0X3RocmVhZCAoKQogICAgIHJldHVybiBOVUxMOwogCiAgIHRocmVhZF9pbmZv ICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKLSAgaWYgKHRwLT5zdGF0ZSA9PSBUSFJFQURf RVhJVEVEIHx8IHRwLT5leGVjdXRpbmcgKCkpCisgIGlmICh0cC0+aW50ZXJuYWxfc3RhdGUg KCkgPT0gVEhSRUFEX0lOVF9FWElURUQKKyAgICAgIHx8IHRwLT5pbnRlcm5hbF9zdGF0ZSAo KSA9PSBUSFJFQURfSU5UX1JVTk5JTkcpCiAgICAgcmV0dXJuIE5VTEw7CiAgIHJldHVybiB0 cDsKIH0KZGlmZiAtLWdpdCBhL2dkYi9ic2QtdXRocmVhZC5jIGIvZ2RiL2JzZC11dGhyZWFk LmMKaW5kZXggZTRjNWM5ZWUzZTMuLjBhYThlYmRhNTU4IDEwMDY0NAotLS0gYS9nZGIvYnNk LXV0aHJlYWQuYworKysgYi9nZGIvYnNkLXV0aHJlYWQuYwpAQCAtNDEzLDcgKzQxMyw3IEBA IGJzZF91dGhyZWFkX3RhcmdldDo6d2FpdCAocHRpZF90IHB0aWQsIHN0cnVjdCB0YXJnZXRf d2FpdHN0YXR1cyAqc3RhdHVzLAogCiAgIC8qIERvbid0IGxldCB0aGUgY29yZSBzZWUgYSBw dGlkIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIHRocmVhZC4gICovCiAgIHRocmVhZF9pbmZv ICp0aHJlYWQgPSBiZW5lYXRoLT5maW5kX3RocmVhZCAocHRpZCk7Ci0gIGlmICh0aHJlYWQg PT0gTlVMTCB8fCB0aHJlYWQtPnN0YXRlID09IFRIUkVBRF9FWElURUQpCisgIGlmICh0aHJl YWQgPT0gTlVMTCB8fCB0aHJlYWQtPnN0YXRlICgpID09IFRIUkVBRF9FWElURUQpCiAgICAg YWRkX3RocmVhZCAoYmVuZWF0aCwgcHRpZCk7CiAKICAgcmV0dXJuIHB0aWQ7CkBAIC00NjQs NyArNDY0LDcgQEAgYnNkX3V0aHJlYWRfdGFyZ2V0Ojp1cGRhdGVfdGhyZWFkX2xpc3QgKCkK ICAgICAgIHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnByb2NfdGFyZ2V0CiAJPSBhc19wcm9j ZXNzX3N0cmF0dW1fdGFyZ2V0ICh0aGlzLT5iZW5lYXRoICgpKTsKICAgICAgIHRocmVhZF9p bmZvICp0aHJlYWQgPSBwcm9jX3RhcmdldC0+ZmluZF90aHJlYWQgKHB0aWQpOwotICAgICAg aWYgKHRocmVhZCA9PSBudWxscHRyIHx8IHRocmVhZC0+c3RhdGUgPT0gVEhSRUFEX0VYSVRF RCkKKyAgICAgIGlmICh0aHJlYWQgPT0gbnVsbHB0ciB8fCB0aHJlYWQtPnN0YXRlICgpID09 IFRIUkVBRF9FWElURUQpCiAJewogCSAgLyogSWYgSU5GRVJJT1JfUFRJRCBkb2Vzbid0IGhh dmUgYSB0aWQgbWVtYmVyIHlldCwgdGhlbiBwdGlkCiAJICAgICBpcyBzdGlsbCB0aGUgaW5p dGlhbCB0aHJlYWQgb2YgdGhlIHByb2Nlc3MuICBOb3RpZnkgR0RCCmRpZmYgLS1naXQgYS9n ZGIvZm9yay1jaGlsZC5jIGIvZ2RiL2ZvcmstY2hpbGQuYwppbmRleCBiZDc1YTk1OTNhYS4u YTlkMGJmZmI4ZTEgMTAwNjQ0Ci0tLSBhL2dkYi9mb3JrLWNoaWxkLmMKKysrIGIvZ2RiL2Zv cmstY2hpbGQuYwpAQCAtMTMwLDggKzEzMCw4IEBAIGdkYl9zdGFydHVwX2luZmVyaW9yIChw aWRfdCBwaWQsIGludCBudW1fdHJhcHMpCiAKICAgcHRpZF90IHB0aWQgPSBzdGFydHVwX2lu ZmVyaW9yIChwcm9jX3RhcmdldCwgcGlkLCBudW1fdHJhcHMsIE5VTEwsIE5VTEwpOwogCi0g IC8qIE1hcmsgYWxsIHRocmVhZHMgbm9uLWV4ZWN1dGluZy4gICovCi0gIHNldF9leGVjdXRp bmcgKHByb2NfdGFyZ2V0LCBwdGlkLCBmYWxzZSk7CisgIC8qIE1hcmsgYWxsIHRocmVhZHMg aW50ZXJuYWxseSBzdG9wcGVkLiAgKi8KKyAgc2V0X2ludGVybmFsX3N0YXRlIChwcm9jX3Rh cmdldCwgcHRpZCwgVEhSRUFEX0lOVF9TVE9QUEVEKTsKIAogICByZXR1cm4gcHRpZDsKIH0K ZGlmZiAtLWdpdCBhL2dkYi9mcmFtZS5jIGIvZ2RiL2ZyYW1lLmMKaW5kZXggY2VmYWE4N2Zl YzMuLjdhODNmNWU2MWMwIDEwMDY0NAotLS0gYS9nZGIvZnJhbWUuYworKysgYi9nZGIvZnJh bWUuYwpAQCAtMTk0MCwxMSArMTk0MCwxMSBAQCBoYXNfc3RhY2tfZnJhbWVzICgpCiAKICAg ICAgIHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKICAgICAgIC8qIERv bid0IHRyeSB0byByZWFkIGZyb20gYSBkZWFkIHRocmVhZC4gICovCi0gICAgICBpZiAodHAt PnN0YXRlID09IFRIUkVBRF9FWElURUQpCisgICAgICBpZiAodHAtPmludGVybmFsX3N0YXRl ICgpID09IFRIUkVBRF9JTlRfRVhJVEVEKQogCXJldHVybiBmYWxzZTsKIAogICAgICAgLyog Li4uIG9yIGZyb20gYSBzcGlubmluZyB0aHJlYWQuICAqLwotICAgICAgaWYgKHRwLT5leGVj dXRpbmcgKCkpCisgICAgICBpZiAodHAtPmludGVybmFsX3N0YXRlICgpID09IFRIUkVBRF9J TlRfUlVOTklORykKIAlyZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9nZGIv Z2NvcmUuYyBiL2dkYi9nY29yZS5jCmluZGV4IDQ4ZTQzMWVkOGY5Li5hYzNiNDRlYjgxMiAx MDA2NDQKLS0tIGEvZ2RiL2djb3JlLmMKKysrIGIvZ2RiL2djb3JlLmMKQEAgLTg5NCw3ICs4 OTQsNyBAQCB0aHJlYWRfaW5mbyAqCiBnY29yZV9maW5kX3NpZ25hbGxlZF90aHJlYWQgKCkK IHsKICAgdGhyZWFkX2luZm8gKmN1cnJfdGhyID0gaW5mZXJpb3JfdGhyZWFkICgpOwotICBp ZiAoY3Vycl90aHItPnN0YXRlICE9IFRIUkVBRF9FWElURUQKKyAgaWYgKGN1cnJfdGhyLT5z dGF0ZSAoKSAhPSBUSFJFQURfRVhJVEVECiAgICAgICAmJiBjdXJyX3Roci0+c3RvcF9zaWdu YWwgKCkgIT0gR0RCX1NJR05BTF8wKQogICAgIHJldHVybiBjdXJyX3RocjsKIApAQCAtOTAz LDcgKzkwMyw3IEBAIGdjb3JlX2ZpbmRfc2lnbmFsbGVkX3RocmVhZCAoKQogICAgICAgcmV0 dXJuICZ0aHI7CiAKICAgLyogRGVmYXVsdCB0byB0aGUgY3VycmVudCB0aHJlYWQsIHVubGVz cyBpdCBoYXMgZXhpdGVkLiAgKi8KLSAgaWYgKGN1cnJfdGhyLT5zdGF0ZSAhPSBUSFJFQURf RVhJVEVEKQorICBpZiAoY3Vycl90aHItPnN0YXRlICgpICE9IFRIUkVBRF9FWElURUQpCiAg ICAgcmV0dXJuIGN1cnJfdGhyOwogCiAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv Z2RiL2dkYnRocmVhZC5oIGIvZ2RiL2dkYnRocmVhZC5oCmluZGV4IDc2NDQ5MjRiNjE0Li5k NjRiZjZlNWEwMSAxMDA2NDQKLS0tIGEvZ2RiL2dkYnRocmVhZC5oCisrKyBiL2dkYi9nZGJ0 aHJlYWQuaApAQCAtNTEsOCArNTEsOCBAQCBleHRlcm4gYm9vbCBkZWJ1Z190aHJlYWRzOwog I2RlZmluZSB0aHJlYWRzX2RlYnVnX3ByaW50ZihmbXQsIC4uLikgXAogICBkZWJ1Z19wcmVm aXhlZF9wcmludGZfY29uZCAoZGVidWdfdGhyZWFkcywgInRocmVhZHMiLCBmbXQsICMjX19W QV9BUkdTX18pCiAKLS8qIEZyb250ZW5kIHZpZXcgb2YgdGhlIHRocmVhZCBzdGF0ZS4gIFBv c3NpYmxlIGV4dGVuc2lvbnM6IHN0ZXBwaW5nLAotICAgZmluaXNoaW5nLCB1bnRpbChsaW5n KSwuLi4KKy8qIFVzZXIvZnJvbnRlbmQgdmlldyBvZiB0aGUgdGhyZWFkIHN0YXRlLiAgUG9z c2libGUgZXh0ZW5zaW9uczoKKyAgIHN0ZXBwaW5nLCBmaW5pc2hpbmcsIHVudGlsKGxpbmcp LC4uLgogCiAgICBOT1RFOiBTaW5jZSB0aGUgdGhyZWFkIHN0YXRlIGlzIG5vdCBhIGJvb2xl YW4sIG1vc3QgdGltZXMsIHlvdSBkbwogICAgbm90IHdhbnQgdG8gY2hlY2sgaXQgd2l0aCBu ZWdhdGlvbi4gIElmIHlvdSByZWFsbHkgd2FudCB0byBjaGVjayBpZgpAQCAtODEsNiArODEs MzQgQEAgZW51bSB0aHJlYWRfc3RhdGUKICAgVEhSRUFEX0VYSVRFRCwKIH07CiAKKy8qIElu dGVybmFsIHZpZXcgb2YgdGhlIHRocmVhZCdzIHJ1bm5pbmcgc3RhdGUuICBXaGVuIGEgdGhy ZWFkIGlzCisgICBydW5uaW5nIGZyb20gdGhlIHVzZXIncyBwZXJzcGVjdGl2ZSwgaXQgd2ls bCBzdGlsbCBvY2Nhc2lvbmFsbHkKKyAgIHN0b3AsIGR1ZSB0byBicmVha3BvaW50IGhpdHMs IHNpbmdsZS1zdGVwcGluZywgZXRjLiAgT2Z0ZW4gdGhvc2UKKyAgIHN0b3BzIGFyZSBub3Qg bWVhbnQgdG8gYmUgdXNlci12aXNpYmxlLiAgSW4gc3VjaCBzaXR1YXRpb25zLCB0aGUKKyAg IHVzZXIgc3RhdGUgd2lsbCBiZSBUSFJFQURfUlVOTklORywgd2hpbGUgdGhlIGludGVybmFs IHN0YXRlCisgICB0cmFuc2l0aW9ucyBiZXR3ZWVuIHN0b3BwZWQsIHJ1bm5pbmcsIGV0Yy4g ICovCisKK2VudW0gdGhyZWFkX2ludF9zdGF0ZQoreworICAvKiBUaGUgdGhyZWFkIGlzIHN0 b3BwZWQuICBJZiB0aGUgdGhyZWFkIGhhcyBhIHBlbmRpbmcgd2FpdCBzdGF0dXMsCisgICAg IHdlIHNob3VsZCBub3QgcHJvY2VzcyBpdCB1bnRpbCB3ZSB0cnkgdG8gbGV0IHRoZSB0aHJl YWQgcnVuLCBpbgorICAgICB3aGljaCBjYXNlIHdlIHN3aXRjaCB0aGUgdGhyZWFkIHRvCisg ICAgIFRIUkVBRF9JTlRfUkVTVU1FRF9QRU5ESU5HX1NUQVRVUyBzdGF0ZS4gICovCisgIFRI UkVBRF9JTlRfU1RPUFBFRCwKKworICAvKiBUaGUgdGhyZWFkIGlzIHJ1bm5pbmcuICAqLwor ICBUSFJFQURfSU5UX1JVTk5JTkcsCisKKyAgLyogaW5mcnVuIHdhbnRzIHRoZSB0aHJlYWQg dG8gYmUgcmVzdW1lZCwgYnV0IGRpZG4ndCBzZXQgaXQgcnVubmluZworICAgICB5ZXQsIGJl Y2F1c2UgdGhlIHRocmVhZCBoYXMgYSBwZW5kaW5nIHdhaXQgc3RhdHVzIHRvIHByb2Nlc3Mu ICBXZQorICAgICBzaG91bGRuJ3QgbGV0IHRoZSB0aHJlYWQgcmVhbGx5IHJ1biB1bnRpbCB0 aGF0IHdhaXQgc3RhdHVzIGhhcworICAgICBiZWVuIHByb2Nlc3NlZC4gICovCisgIFRIUkVB RF9JTlRfUkVTVU1FRF9QRU5ESU5HX1NUQVRVUywKKworICAvKiBUaGUgdGhyZWFkIGlzIGxp c3RlZCwgYnV0IGtub3duIHRvIGhhdmUgZXhpdGVkLiAgKi8KKyAgVEhSRUFEX0lOVF9FWElU RUQsCit9OworCiAvKiBTVEVQX09WRVJfQUxMIG1lYW5zIHN0ZXAgb3ZlciBhbGwgc3Vicm91 dGluZSBjYWxscy4KICAgIFNURVBfT1ZFUl9VTkRFQlVHR0FCTEUgbWVhbnMgc3RlcCBvdmVy IGNhbGxzIHRvIHVuZGVidWdnYWJsZSBmdW5jdGlvbnMuCiAgICBTVEVQX09WRVJfTk9ORSBt ZWFucyBkb24ndCBzdGVwIG92ZXIgYW55IHN1YnJvdXRpbmUgY2FsbHMuICAqLwpAQCAtMjE4 LDEwICsyNDYsMTAgQEAgc3RydWN0IHRocmVhZF9zdXNwZW5kX3N0YXRlCiAgICAgICAgbGFz dCBzdG9wcGVkLCBhIHBlbmRpbmcgYnJlYWtwb2ludCB3YWl0c3RhdHVzIGlzIGRpc2NhcmRl ZC4KIAogICAgICAtIElmIHRoZSB0aHJlYWQgaXMgcnVubmluZywgdGhlbiB0aGlzIGZpZWxk IGhhcyBpdHMgdmFsdWUgcmVtb3ZlZCBieQotICAgICAgIGNhbGxpbmcgc3RvcF9wYy5yZXNl dCgpIChzZWUgdGhyZWFkX2luZm86OnNldF9leGVjdXRpbmcoKSkuCisgICAgICAgY2FsbGlu ZyBzdG9wX3BjLnJlc2V0KCkgKHNlZSB0aHJlYWRfaW5mbzo6c2V0X2ludGVybmFsX3N0YXRl KCkpLgogICAgICAgIEF0dGVtcHRpbmcgdG8gcmVhZCBhIHN0ZDo6b3B0aW9uYWwgd2l0aCBu byB2YWx1ZSBpcyB1bmRlZmluZWQKICAgICAgICBiZWhhdmlvciBhbmQgd2lsbCB0cmlnZ2Vy IGFuIGFzc2VydGlvbiBlcnJvciB3aGVuIF9HTElCQ1hYX0RFQlVHIGlzCi0gICAgICAgZGVm aW5lZCwgd2hpY2ggc2hvdWxkIG1ha2UgZXJyb3IgZWFzaWVyIHRvIHRyYWNrIGRvd24uICAq LworICAgICAgIGRlZmluZWQsIHdoaWNoIHNob3VsZCBtYWtlIGVycm9ycyBlYXNpZXIgdG8g dHJhY2sgZG93bi4gICovCiAgIHN0ZDo6b3B0aW9uYWw8Q09SRV9BRERSPiBzdG9wX3BjOwog fTsKIApAQCAtMjYzLDggKzI5MSwyMyBAQCBjbGFzcyB0aHJlYWRfaW5mbyA6IHB1YmxpYyBp bnRydXNpdmVfbGlzdF9ub2RlPHRocmVhZF9pbmZvPiwKIAogICBib29sIGRlbGV0YWJsZSAo KSBjb25zdDsKIAotICAvKiBNYXJrIHRoaXMgdGhyZWFkIGFzIHJ1bm5pbmcgYW5kIG5vdGlm eSBvYnNlcnZlcnMuICAqLwotICB2b2lkIHNldF9ydW5uaW5nIChib29sIHJ1bm5pbmcpOwor ICAvKiBHZXQgdGhlIHRocmVhZCdzICh1c2VyLXZpc2libGUpIHN0YXRlLiAgKi8KKyAgdGhy ZWFkX3N0YXRlIHN0YXRlICgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAvKiBT ZXQgdGhpcyB0aHJlYWQncyAodXNlci12aXNpYmxlKSBzdGF0ZS4gIElmIHRoZSB0aHJlYWQg aXMgc2V0CisgICAgIHJ1bm5pbmcsIG5vdGlmeSBvYnNlcnZlcnMuICAqLworICB2b2lkIHNl dF9zdGF0ZSAodGhyZWFkX3N0YXRlIHN0YXRlKSB7IHNldF9zdGF0ZSAoc3RhdGUsIGZhbHNl KTsgfQorCisgIC8qIEdldCB0aGUgdGhyZWFkJ3MgaW50ZXJuYWwgc3RhdGUuICAqLworICB0 aHJlYWRfaW50X3N0YXRlIGludGVybmFsX3N0YXRlICgpIGNvbnN0IHsgcmV0dXJuIG1faW50 ZXJuYWxfc3RhdGU7IH0KKworICAvKiBTZXQgdGhlIHRocmVhZCdzIGludGVybmFsIHN0YXRl IGZyb20gU1RBVEUuICBJZiB0aGUgc3RhdGUKKyAgICAgc3dpdGNoZXMgdG8gVEhSRUFEX0lO VF9SVU5OSU5HLCBhbHNvIGNsZWFycyB0aGUgdGhyZWFkJ3Mgc3RvcF9wYy4KKyAgICAgVGhl IHRocmVhZCBtYXkgYWxzbyBiZSBhZGRlZCB0byAod2hlbiBzd2l0Y2hpbmcgdG8KKyAgICAg VEhSRUFEX0lOVF9SRVNVTUVEX1BFTkRJTkdfU1RBVFVTKSwgb3IgcmVtb3ZlZCBmcm9tICh3 aGVuCisgICAgIHN3aXRjaGluZyBmcm9tIFRIUkVBRF9JTlRfUkVTVU1FRF9QRU5ESU5HX1NU QVRVUyksIHRoZSBsaXN0IG9mCisgICAgIHRocmVhZHMgd2l0aCBhIHBlbmRpbmcgd2FpdCBz dGF0dXMuICAqLworICB2b2lkIHNldF9pbnRlcm5hbF9zdGF0ZSAodGhyZWFkX2ludF9zdGF0 ZSBzdGF0ZSk7CiAKICAgcHRpZF90IHB0aWQ7CQkJLyogIkFjdHVhbCBwcm9jZXNzIGlkIjsK IAkJCQkgICAgSW4gZmFjdCwgdGhpcyBtYXkgYmUgb3ZlcmxvYWRlZCB3aXRoCkBAIC0zMjYs MjggKzM2OSw2IEBAIGNsYXNzIHRocmVhZF9pbmZvIDogcHVibGljIGludHJ1c2l2ZV9saXN0 X25vZGU8dGhyZWFkX2luZm8+LAogICAgIG1fbmFtZSA9IHN0ZDo6bW92ZSAobmFtZSk7CiAg IH0KIAotICBib29sIGV4ZWN1dGluZyAoKSBjb25zdAotICB7IHJldHVybiBtX2V4ZWN1dGlu ZzsgfQotCi0gIC8qIFNldCB0aGUgdGhyZWFkJ3MgJ21fZXhlY3V0aW5nJyBmaWVsZCBmcm9t IEVYRUNVVElORywgYW5kIGlmIEVYRUNVVElORwotICAgICBpcyB0cnVlIGFsc28gY2xlYXJz IHRoZSB0aHJlYWQncyBzdG9wX3BjLiAgKi8KLSAgdm9pZCBzZXRfZXhlY3V0aW5nIChib29s IGV4ZWN1dGluZyk7Ci0KLSAgYm9vbCByZXN1bWVkICgpIGNvbnN0Ci0gIHsgcmV0dXJuIG1f cmVzdW1lZDsgfQotCi0gIC8qIFNldCB0aGUgdGhyZWFkJ3MgJ21fcmVzdW1lZCcgZmllbGQg ZnJvbSBSRVNVTUVELiAgVGhlIHRocmVhZCBtYXkgYWxzbwotICAgICBiZSBhZGRlZCB0byAo d2hlbiBSRVNVTUVEIGlzIHRydWUpLCBvciByZW1vdmVkIGZyb20gKHdoZW4gUkVTVU1FRCBp cwotICAgICBmYWxzZSksIHRoZSBsaXN0IG9mIHRocmVhZHMgd2l0aCBhIHBlbmRpbmcgd2Fp dCBzdGF0dXMuICAqLwotICB2b2lkIHNldF9yZXN1bWVkIChib29sIHJlc3VtZWQpOwotCi0g IC8qIEZyb250ZW5kIHZpZXcgb2YgdGhlIHRocmVhZCBzdGF0ZS4gIE5vdGUgdGhhdCB0aGUg VEhSRUFEX1JVTk5JTkcvCi0gICAgIFRIUkVBRF9TVE9QUEVEIHN0YXRlcyBhcmUgZGlmZmVy ZW50IGZyb20gRVhFQ1VUSU5HLiAgV2hlbiB0aGUKLSAgICAgdGhyZWFkIGlzIHN0b3BwZWQg aW50ZXJuYWxseSB3aGlsZSBoYW5kbGluZyBhbiBpbnRlcm5hbCBldmVudCwKLSAgICAgbGlr ZSBhIHNvZnR3YXJlIHNpbmdsZS1zdGVwIGJyZWFrcG9pbnQsIEVYRUNVVElORyB3aWxsIGJl IGZhbHNlLAotICAgICBidXQgU1RBVEUgd2lsbCBzdGlsbCBiZSBUSFJFQURfUlVOTklORy4g ICovCi0gIGVudW0gdGhyZWFkX3N0YXRlIHN0YXRlID0gVEhSRUFEX1NUT1BQRUQ7Ci0KICAg LyogU3RhdGUgb2YgR0RCIGNvbnRyb2wgb2YgaW5mZXJpb3IgdGhyZWFkIGV4ZWN1dGlvbi4K ICAgICAgU2VlIGBzdHJ1Y3QgdGhyZWFkX2NvbnRyb2xfc3RhdGUnLiAgKi8KICAgdGhyZWFk X2NvbnRyb2xfc3RhdGUgY29udHJvbDsKQEAgLTU3MywyMCArNTk0LDIyIEBAIGNsYXNzIHRo cmVhZF9pbmZvIDogcHVibGljIGludHJ1c2l2ZV9saXN0X25vZGU8dGhyZWFkX2luZm8+LAog ICBkaXNwbGFjZWRfc3RlcF90aHJlYWRfc3RhdGUgZGlzcGxhY2VkX3N0ZXBfc3RhdGU7CiAK IHByaXZhdGU6Ci0gIC8qIFRydWUgaWYgdGhpcyB0aHJlYWQgaXMgcmVzdW1lZCBmcm9tIGlu ZnJ1bidzIHBlcnNwZWN0aXZlLgotICAgICBOb3RlIHRoYXQgYSB0aHJlYWQgY2FuIGJlIG1h cmtlZCBib3RoIGFzIG5vdC1leGVjdXRpbmcgYW5kCi0gICAgIHJlc3VtZWQgYXQgdGhlIHNh bWUgdGltZS4gIFRoaXMgaGFwcGVucyBpZiB3ZSB0cnkgdG8gcmVzdW1lIGEKLSAgICAgdGhy ZWFkIHRoYXQgaGFzIGEgd2FpdCBzdGF0dXMgcGVuZGluZy4gIFdlIHNob3VsZG4ndCBsZXQg dGhlCi0gICAgIHRocmVhZCByZWFsbHkgcnVuIHVudGlsIHRoYXQgd2FpdCBzdGF0dXMgaGFz IGJlZW4gcHJvY2Vzc2VkLCBidXQKLSAgICAgd2Ugc2hvdWxkIG5vdCBwcm9jZXNzIHRoYXQg d2FpdCBzdGF0dXMgaWYgd2UgZGlkbid0IHRyeSB0byBsZXQKLSAgICAgdGhlIHRocmVhZCBy dW4uICAqLwotICBib29sIG1fcmVzdW1lZCA9IGZhbHNlOwotCi0gIC8qIFRydWUgbWVhbnMg dGhlIHRocmVhZCBpcyBleGVjdXRpbmcuICBOb3RlOiB0aGlzIGlzIGRpZmZlcmVudAotICAg ICBmcm9tIHNheWluZyB0aGF0IHRoZXJlIGlzIGFuIGFjdGl2ZSB0YXJnZXQgYW5kIHdlIGFy ZSBzdG9wcGVkIGF0Ci0gICAgIGEgYnJlYWtwb2ludCwgZm9yIGluc3RhbmNlLiAgVGhpcyBp cyBhIHJlYWwgaW5kaWNhdG9yIHdoZXRoZXIgdGhlCi0gICAgIHRocmVhZCBpcyBvZmYgYW5k IHJ1bm5pbmcuICAqLwotICBib29sIG1fZXhlY3V0aW5nID0gZmFsc2U7CisgIC8qIFNldCB0 aGlzIHRocmVhZCdzICh1c2VyLXZpc2libGUpIHN0YXRlLiAgSWYgdGhlIHRocmVhZCBpcyBz ZXQKKyAgICAgcnVubmluZywgbm90aWZ5IG9ic2VydmVycywgdW5sZXNzIFNVUFBSRVNTX05P VElGSUNBVElPTiBpcyB0cnVlLgorICAgICBSZXR1cm5zIHRoZSB0aHJlYWQncyBwcmV2aW91 cyBzdGF0ZS4gICovCisgIHRocmVhZF9zdGF0ZSBzZXRfc3RhdGUgKHRocmVhZF9zdGF0ZSBz dGF0ZSwgYm9vbCBzdXBwcmVzc19ub3RpZmljYXRpb24pOworICBmcmllbmQgdm9pZCBzZXRf c3RhdGUgKHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnRhcmcsCisJCQkgcHRpZF90IHB0aWQs CisJCQkgdGhyZWFkX3N0YXRlIHN0YXRlKTsKKyAgZnJpZW5kIHZvaWQgZmluaXNoX3RocmVh ZF9zdGF0ZSAocHJvY2Vzc19zdHJhdHVtX3RhcmdldCAqdGFyZywKKwkJCQkgICBwdGlkX3Qg cHRpZCk7CisKKyAgLyogVXNlciB2aWV3IG9mIHRoZSB0aHJlYWQncyBzdG9wcGVkL3J1bm5p bmcvZXhpdGVkIHN0YXRlLiAgKi8KKyAgZW51bSB0aHJlYWRfc3RhdGUgbV9zdGF0ZSA9IFRI UkVBRF9TVE9QUEVEOworCisgIC8qIFRoZSB0aHJlYWQncyBpbnRlcm5hbCBzdGF0ZS4gIFNl ZSBkZWZpbml0aW9uIG9mCisgICAgIHRocmVhZF9pbnRfc3RhdGUuICAqLworICBlbnVtIHRo cmVhZF9pbnRfc3RhdGUgbV9pbnRlcm5hbF9zdGF0ZSA9IFRIUkVBRF9JTlRfU1RPUFBFRDsK IAogICAvKiBTdGF0ZSBvZiBpbmZlcmlvciB0aHJlYWQgdG8gcmVzdG9yZSBhZnRlciBHREIg aXMgZG9uZSB3aXRoIGFuIGluZmVyaW9yCiAgICAgIGNhbGwuICBTZWUgYHN0cnVjdCB0aHJl YWRfc3VzcGVuZF9zdGF0ZScuICAqLwpAQCAtODE4LDE3ICs4NDEsMTUgQEAgZXh0ZXJuIHZv aWQgc3dpdGNoX3RvX25vX3RocmVhZCAoKTsKIC8qIFN3aXRjaCBmcm9tIG9uZSB0aHJlYWQg dG8gYW5vdGhlci4gIERvZXMgbm90IHJlYWQgcmVnaXN0ZXJzLiAgKi8KIGV4dGVybiB2b2lk IHN3aXRjaF90b190aHJlYWRfbm9fcmVncyAoc3RydWN0IHRocmVhZF9pbmZvICp0aHJlYWQp OwogCi0vKiBNYXJrcyBvciBjbGVhcnMgdGhyZWFkKHMpIFBUSUQgb2YgVEFSRyBhcyByZXN1 bWVkLiAgSWYgUFRJRCBpcwotICAgTUlOVVNfT05FX1BUSUQsIGFwcGxpZXMgdG8gYWxsIHRo cmVhZHMgb2YgVEFSRy4gIElmCi0gICBwdGlkX2lzX3BpZChQVElEKSBpcyB0cnVlLCBhcHBs aWVzIHRvIGFsbCB0aHJlYWRzIG9mIHRoZSBwcm9jZXNzCi0gICBwb2ludGVkIGF0IGJ5IHtU QVJHLFBUSUR9LiAgKi8KLWV4dGVybiB2b2lkIHNldF9yZXN1bWVkIChwcm9jZXNzX3N0cmF0 dW1fdGFyZ2V0ICp0YXJnLAotCQkJIHB0aWRfdCBwdGlkLCBib29sIHJlc3VtZWQpOworLyog TWFya3MgdGhyZWFkIFBUSUQgb2YgVEFSRyB3aXRoIHVzZXIgc3RhdGUgU1RBVEUuICBJZiBQ VElEIGlzCisgICBtaW51c19vbmVfcHRpZCwgbWFya3MgYWxsIHRocmVhZHMgb2YgVEFSRy4g ICovCitleHRlcm4gdm9pZCBzZXRfc3RhdGUgKHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnRh cmcsCisJCSAgICAgICBwdGlkX3QgcHRpZCwgdGhyZWFkX3N0YXRlIHN0YXRlKTsKIAotLyog TWFya3MgdGhyZWFkIFBUSUQgb2YgVEFSRyBhcyBydW5uaW5nLCBvciBhcyBzdG9wcGVkLiAg SWYgUFRJRCBpcworLyogTWFya3MgdGhyZWFkIFBUSUQgb2YgVEFSRyB3aXRoIGludGVybmFs IHN0YXRlIFNUQVRFLiAgSWYgUFRJRCBpcwogICAgbWludXNfb25lX3B0aWQsIG1hcmtzIGFs bCB0aHJlYWRzIG9mIFRBUkcuICAqLwotZXh0ZXJuIHZvaWQgc2V0X3J1bm5pbmcgKHByb2Nl c3Nfc3RyYXR1bV90YXJnZXQgKnRhcmcsCi0JCQkgcHRpZF90IHB0aWQsIGJvb2wgcnVubmlu Zyk7CitleHRlcm4gdm9pZCBzZXRfaW50ZXJuYWxfc3RhdGUgKHByb2Nlc3Nfc3RyYXR1bV90 YXJnZXQgKnRhcmcsCisJCQkJcHRpZF90IHB0aWQsIHRocmVhZF9pbnRfc3RhdGUgc3RhdGUp OwogCiAvKiBNYXJrcyBvciBjbGVhcnMgdGhyZWFkKHMpIFBUSUQgb2YgVEFSRyBhcyBoYXZp bmcgYmVlbiByZXF1ZXN0ZWQgdG8KICAgIHN0b3AuICBJZiBQVElEIGlzIE1JTlVTX09ORV9Q VElELCBhcHBsaWVzIHRvIGFsbCB0aHJlYWRzIG9mIFRBUkcuCkBAIC04MzgsMjUgKzg1OSwx OSBAQCBleHRlcm4gdm9pZCBzZXRfcnVubmluZyAocHJvY2Vzc19zdHJhdHVtX3RhcmdldCAq dGFyZywKIGV4dGVybiB2b2lkIHNldF9zdG9wX3JlcXVlc3RlZCAocHJvY2Vzc19zdHJhdHVt X3RhcmdldCAqdGFyZywKIAkJCQlwdGlkX3QgcHRpZCwgYm9vbCBzdG9wKTsKIAotLyogTWFy a3MgdGhyZWFkIFBUSUQgb2YgVEFSRyBhcyBleGVjdXRpbmcsIG9yIG5vdC4gIElmIFBUSUQg aXMKLSAgIG1pbnVzX29uZV9wdGlkLCBtYXJrcyBhbGwgdGhyZWFkcyBvZiBUQVJHLgotCi0g ICBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgcnVubmluZyBzdGF0ZS4g IFNlZSB0aGUKLSAgIGRlc2NyaXB0aW9uIG9mIHN0YXRlIGFuZCBleGVjdXRpbmcgZmllbGRz IG9mIHN0cnVjdAotICAgdGhyZWFkX2luZm8uICAqLwotZXh0ZXJuIHZvaWQgc2V0X2V4ZWN1 dGluZyAocHJvY2Vzc19zdHJhdHVtX3RhcmdldCAqdGFyZywKLQkJCSAgIHB0aWRfdCBwdGlk LCBib29sIGV4ZWN1dGluZyk7Ci0KIC8qIFRydWUgaWYgYW55IChrbm93biBvciB1bmtub3du KSB0aHJlYWQgb2YgVEFSRyBpcyBvciBtYXkgYmUKICAgIGV4ZWN1dGluZy4gICovCiBleHRl cm4gYm9vbCB0aHJlYWRzX2FyZV9leGVjdXRpbmcgKHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQg KnRhcmcpOwogCi0vKiBNZXJnZSB0aGUgZXhlY3V0aW5nIHByb3BlcnR5IG9mIHRocmVhZCBQ VElEIG9mIFRBUkcgb3ZlciB0byBpdHMKLSAgIHRocmVhZCBzdGF0ZSBwcm9wZXJ0eSAoZnJv bnRlbmQgcnVubmluZy9zdG9wcGVkIHZpZXcpLgorLyogUHJvcGFnYXRlIHRoZSBpbnRlcm5h bCB0aHJlYWQgc3RhdGUgb2YgdGhyZWFkIFBUSUQgb2YgVEFSRyBvdmVyIHRvCisgICBpdHMg KHVzZXIpIHRocmVhZCBzdGF0ZS4KIAotICAgIm5vdCBleGVjdXRpbmciIC0+ICJzdG9wcGVk IgotICAgImV4ZWN1dGluZyIgICAgIC0+ICJydW5uaW5nIgotICAgImV4aXRlZCIgICAgICAg IC0+ICJleGl0ZWQiCisgICAgIHVzZXIgICAgPC0gaW50ZXJuYWwKKyAgICAtLS0tLS0tICAg ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBzdG9wcGVkICA8LSBzdG9wcGVkCisg ICAgcnVubmluZyAgPC0gcnVubmluZworICAgIHJ1bm5pbmcgIDwtIGNvbnRpbnVlZC1wZW5k aW5nLXN0YXR1cworICAgIGV4aXRlZCAgIDwtIGV4aXRlZAogCiAgICBJZiBQVElEIGlzIG1p bnVzX29uZV9wdGlkLCBnbyBvdmVyIGFsbCB0aHJlYWRzIG9mIFRBUkcuCiAKQEAgLTEwNjYs NSArMTA4MSw2IEBAIGV4dGVybiB2b2lkIHRocmVhZF90cnlfY2F0Y2hfY21kICh0aHJlYWRf aW5mbyAqdGhyLAogLyogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIFNUQVRF LiAgKi8KIAogZXh0ZXJuIGNvbnN0IGNoYXIgKnRocmVhZF9zdGF0ZV9zdHJpbmcgKGVudW0g dGhyZWFkX3N0YXRlIHN0YXRlKTsKK2V4dGVybiBjb25zdCBjaGFyICp0aHJlYWRfaW50X3N0 YXRlX3N0cmluZyAoZW51bSB0aHJlYWRfaW50X3N0YXRlIHN0YXRlKTsKIAogI2VuZGlmIC8q IEdEQl9HREJUSFJFQURfSCAqLwpkaWZmIC0tZ2l0IGEvZ2RiL2kzODYtdGRlcC5jIGIvZ2Ri L2kzODYtdGRlcC5jCmluZGV4IDkzMzU3YjQxYjEwLi5mYTkzNWI1ZmNkYiAxMDA2NDQKLS0t IGEvZ2RiL2kzODYtdGRlcC5jCisrKyBiL2dkYi9pMzg2LXRkZXAuYwpAQCAtNDc2NSw4ICs0 NzY1LDggQEAgaTM4Nl9yZWNvcmRfdmV4IChzdHJ1Y3QgaTM4Nl9yZWNvcmRfcyAqaXIsIHVp bnQ4X3QgdmV4X3csIHVpbnQ4X3QgdmV4X3IsCiAgIC8qIFNpbmNlIHdlIGFyZSByZWFkaW5n IHBzZXVkbyByZWdpc3RlcnMsIHdlIG5lZWQgdG8gdGVsbCBHREIgdGhhdCBpdCBpcwogICAg ICBzYWZlIHRvIGRvIHNvLCBieSBzYXlpbmcgd2UgYXJlbid0IF9yZWFsbHlfIHJ1bm5pbmcg dGhlIGluZmVyaW9yIHJpZ2h0CiAgICAgIG5vdy4gICovCi0gIFNDT1BFX0VYSVQgeyBpbmZl cmlvcl90aHJlYWQgKCktPnNldF9leGVjdXRpbmcgKHRydWUpOyB9OwotICBpbmZlcmlvcl90 aHJlYWQgKCkgLT4gc2V0X2V4ZWN1dGluZyAoZmFsc2UpOworICBTQ09QRV9FWElUIHsgaW5m ZXJpb3JfdGhyZWFkICgpLT5zZXRfaW50ZXJuYWxfc3RhdGUgKFRIUkVBRF9JTlRfUlVOTklO Ryk7IH07CisgIGluZmVyaW9yX3RocmVhZCAoKS0+c2V0X2ludGVybmFsX3N0YXRlIChUSFJF QURfSU5UX1NUT1BQRUQpOwogCiAgIHVpbnQ4X3Qgb3Bjb2RlOwogICBpZiAocmVjb3JkX3Jl YWRfbWVtb3J5IChnZGJhcmNoLCBpci0+YWRkciwgJm9wY29kZSwgMSkpCmRpZmYgLS1naXQg YS9nZGIvaW5mLXB0cmFjZS5jIGIvZ2RiL2luZi1wdHJhY2UuYwppbmRleCA5OGNjMTA5NGUy NC4uNTM2MzcxNzIwOGUgMTAwNjQ0Ci0tLSBhL2dkYi9pbmYtcHRyYWNlLmMKKysrIGIvZ2Ri L2luZi1wdHJhY2UuYwpAQCAtMTc1LDcgKzE3NSw3IEBAIGluZl9wdHJhY2VfdGFyZ2V0Ojph dHRhY2ggKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKIAogICAvKiBEb24ndCBj b25zaWRlciB0aGUgdGhyZWFkIHN0b3BwZWQgdW50aWwgd2UndmUgcHJvY2Vzc2VkIGl0cwog ICAgICBpbml0aWFsIFNJR1NUT1Agc3RvcC4gICovCi0gIHNldF9leGVjdXRpbmcgKHRoaXMs IHRoci0+cHRpZCwgdHJ1ZSk7CisgIHNldF9pbnRlcm5hbF9zdGF0ZSAodGhpcywgdGhyLT5w dGlkLCBUSFJFQURfSU5UX1JVTk5JTkcpOwogCiAgIHVucHVzaGVyLnJlbGVhc2UgKCk7CiB9 CmRpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2RiL2luZmNhbGwuYwppbmRleCA5NDFi MGE5NWM1Yi4uZjE2YTFmMzc2YjMgMTAwNjQ0Ci0tLSBhL2dkYi9pbmZjYWxsLmMKKysrIGIv Z2RiL2luZmNhbGwuYwpAQCAtODA3LDcgKzgwNyw3IEBAIHJ1bl9pbmZlcmlvcl9jYWxsIChz dGQ6OnVuaXF1ZV9wdHI8Y2FsbF90aHJlYWRfZnNtPiBzbSwKIAogICBzdHJ1Y3QgZ2RiX2V4 Y2VwdGlvbiBjYXVnaHRfZXJyb3I7CiAgIHB0aWRfdCBjYWxsX3RocmVhZF9wdGlkID0gY2Fs bF90aHJlYWQtPnB0aWQ7Ci0gIGludCB3YXNfcnVubmluZyA9IGNhbGxfdGhyZWFkLT5zdGF0 ZSA9PSBUSFJFQURfUlVOTklORzsKKyAgaW50IHdhc19ydW5uaW5nID0gY2FsbF90aHJlYWQt PnN0YXRlICgpID09IFRIUkVBRF9SVU5OSU5HOwogICAqdGltZWRfb3V0X3AgPSBmYWxzZTsK IAogICBpbmZjYWxsX2RlYnVnX3ByaW50ZiAoImNhbGwgZnVuY3Rpb24gYXQgJXMgaW4gdGhy ZWFkICVzLCB3YXNfcnVubmluZyA9ICVkIiwKQEAgLTk0Niw3ICs5NDYsNyBAQCBydW5faW5m ZXJpb3JfY2FsbCAoc3RkOjp1bmlxdWVfcHRyPGNhbGxfdGhyZWFkX2ZzbT4gc20sCiAgICAg IG9mIGVycm9yIG91dCBvZiByZXN1bWUoKSksIHRoZW4gd2Ugd291bGRuJ3QgbmVlZCB0aGlz LiAgKi8KICAgaWYgKGNhdWdodF9lcnJvci5yZWFzb24gPCAwKQogICAgIHsKLSAgICAgIGlm IChjYWxsX3RocmVhZC0+c3RhdGUgIT0gVEhSRUFEX0VYSVRFRCkKKyAgICAgIGlmIChjYWxs X3RocmVhZC0+c3RhdGUgKCkgIT0gVEhSRUFEX0VYSVRFRCkKIAlicmVha3BvaW50X2F1dG9f ZGVsZXRlIChjYWxsX3RocmVhZC0+Y29udHJvbC5zdG9wX2Jwc3RhdCk7CiAgICAgfQogCkBA IC0xNTg5LDcgKzE1ODksNyBAQCBjYWxsX2Z1bmN0aW9uX2J5X2hhbmRfZHVtbXkgKHN0cnVj dCB2YWx1ZSAqZnVuY3Rpb24sCiAgICAgICBpbmZjYWxsX2RlYnVnX3ByaW50ZiAoImFmdGVy IGluZmVyaW9yIGNhbGwsIGV4Y2VwdGlvbiAoJWQpOiAlcyIsCiAJCQkgICAgZS5yZWFzb24s IGUud2hhdCAoKSk7CiAgICAgaW5mY2FsbF9kZWJ1Z19wcmludGYgKCJhZnRlciBpbmZlcmlv ciBjYWxsLCB0aHJlYWQgc3RhdGUgaXM6ICVzIiwKLQkJCSAgdGhyZWFkX3N0YXRlX3N0cmlu ZyAoY2FsbF90aHJlYWQtPnN0YXRlKSk7CisJCQkgIHRocmVhZF9zdGF0ZV9zdHJpbmcgKGNh bGxfdGhyZWFkLT5zdGF0ZSAoKSkpOwogCiAgICAgZ2RiOjpvYnNlcnZlcnM6OmluZmVyaW9y X2NhbGxfcG9zdC5ub3RpZnkgKGNhbGxfdGhyZWFkX3B0aWQsIGZ1bmFkZHIpOwogCkBAIC0x NjAwLDcgKzE2MDAsNyBAQCBjYWxsX2Z1bmN0aW9uX2J5X2hhbmRfZHVtbXkgKHN0cnVjdCB2 YWx1ZSAqZnVuY3Rpb24sCiAgICAgICAgdGhyZWFkcyBhcHBlYXIgYWZ0ZXIgR0RCIGhhcyBy ZXBvcnRlZCBhIHN0b3AuICAqLwogICAgIHVwZGF0ZV90aHJlYWRfbGlzdCAoKTsKIAotICAg IGlmIChjYWxsX3RocmVhZC0+c3RhdGUgIT0gVEhSRUFEX0VYSVRFRCkKKyAgICBpZiAoY2Fs bF90aHJlYWQtPnN0YXRlICgpICE9IFRIUkVBRF9FWElURUQpCiAgICAgICB7CiAJLyogVGhl IEZTTSBzaG91bGQgc3RpbGwgYmUgdGhlIHNhbWUuICAqLwogCWdkYl9hc3NlcnQgKGNhbGxf dGhyZWFkLT50aHJlYWRfZnNtICgpID09IHNtKTsKZGlmZiAtLWdpdCBhL2dkYi9pbmZjbWQu YyBiL2dkYi9pbmZjbWQuYwppbmRleCAyYmUyZjQzNzZjMC4uYjUxZDJlNjRmODAgMTAwNjQ0 Ci0tLSBhL2dkYi9pbmZjbWQuYworKysgYi9nZGIvaW5mY21kLmMKQEAgLTY5MiwxMiArNjky LDEyIEBAIHByb2NlZWRfdGhyZWFkX2NhbGxiYWNrIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRo cmVhZCkKICAgICAgaW50byBhIHNpbmdsZSB0YXJnZXQgYHJlc3VtZV9hbGwnIHJlcXVlc3Qs IGJlY2F1c2Ugc29tZSB0aHJlYWRzCiAgICAgIG1heSBiZSBzdG9wcGVkIGluIGludGVybmFs IGJyZWFrcG9pbnRzL2V2ZW50cywgb3Igc3RvcHBlZCB3YWl0aW5nCiAgICAgIGZvciBpdHMg dHVybiBpbiB0aGUgZGlzcGxhY2VkIHN0ZXBwaW5nIHF1ZXVlICh0aGF0IGlzLCB0aGV5IGFy ZQotICAgICBydW5uaW5nICYmICFleGVjdXRpbmcpLiAgVGhlIHRhcmdldCBzaWRlIGhhcyBu byBpZGVhIGFib3V0IHdoeQotICAgICB0aGUgdGhyZWFkIGlzIHN0b3BwZWQsIHNvIGEgYHJl c3VtZV9hbGwnIGNvbW1hbmQgd291bGQgcmVzdW1lIHRvbwotICAgICBtdWNoLiAgSWYvd2hl biBHREIgZ2FpbnMgYSB3YXkgdG8gdGVsbCB0aGUgdGFyZ2V0IGBob2xkIHRoaXMKLSAgICAg dGhyZWFkIHN0b3BwZWQgdW50aWwgSSBzYXkgb3RoZXJ3aXNlJywgdGhlbiB3ZSBjYW4gb3B0 aW1pemUKLSAgICAgdGhpcy4gICovCi0gIGlmICh0aHJlYWQtPnN0YXRlICE9IFRIUkVBRF9T VE9QUEVEKQorICAgICBydW5uaW5nIGZyb20gdGhlIHVzZXIncyBwZXJzcGVjdGl2ZSBidXQg aW50ZXJuYWxseSBzdG9wcGVkKS4gIFRoZQorICAgICB0YXJnZXQgc2lkZSBoYXMgbm8gaWRl YSBhYm91dCB3aHkgdGhlIHRocmVhZCBpcyBzdG9wcGVkLCBzbyBhCisgICAgIGByZXN1bWVf YWxsJyBjb21tYW5kIHdvdWxkIHJlc3VtZSB0b28gbXVjaC4gIElmL3doZW4gR0RCIGdhaW5z IGEKKyAgICAgd2F5IHRvIHRlbGwgdGhlIHRhcmdldCBgaG9sZCB0aGlzIHRocmVhZCBzdG9w cGVkIHVudGlsIEkgc2F5CisgICAgIG90aGVyd2lzZScsIHRoZW4gd2UgY2FuIG9wdGltaXpl IHRoaXMuICAqLworICBpZiAodGhyZWFkLT5zdGF0ZSAoKSAhPSBUSFJFQURfU1RPUFBFRCkK ICAgICByZXR1cm4gZmFsc2U7CiAKICAgaWYgKCF0aHJlYWQtPmluZi0+aGFzX2V4ZWN1dGlv biAoKSkKQEAgLTcxMyw3ICs3MTMsNyBAQCBzdGF0aWMgdm9pZAogZW5zdXJlX3ZhbGlkX3Ro cmVhZCAodm9pZCkKIHsKICAgaWYgKGluZmVyaW9yX3B0aWQgPT0gbnVsbF9wdGlkCi0gICAg ICB8fCBpbmZlcmlvcl90aHJlYWQgKCktPnN0YXRlID09IFRIUkVBRF9FWElURUQpCisgICAg ICB8fCBpbmZlcmlvcl90aHJlYWQgKCktPnN0YXRlICgpID09IFRIUkVBRF9FWElURUQpCiAg ICAgZXJyb3IgKF8oIkNhbm5vdCBleGVjdXRlIHRoaXMgY29tbWFuZCB3aXRob3V0IGEgbGl2 ZSBzZWxlY3RlZCB0aHJlYWQuIikpOwogfQogCkBAIC03NDIsNyArNzQyLDcgQEAgZXJyb3Jf aXNfcnVubmluZyAodm9pZCkKIHN0YXRpYyB2b2lkCiBlbnN1cmVfbm90X3J1bm5pbmcgKHZv aWQpCiB7Ci0gIGlmIChpbmZlcmlvcl90aHJlYWQgKCktPnN0YXRlID09IFRIUkVBRF9SVU5O SU5HKQorICBpZiAoaW5mZXJpb3JfdGhyZWFkICgpLT5zdGF0ZSAoKSA9PSBUSFJFQURfUlVO TklORykKICAgICBlcnJvcl9pc19ydW5uaW5nICgpOwogfQogCkBAIC0xMTAwLDcgKzExMDAs OCBAQCBwcmVwYXJlX29uZV9zdGVwICh0aHJlYWRfaW5mbyAqdHAsIHN0cnVjdCBzdGVwX2Nv bW1hbmRfZnNtICpzbSkKIAogCSAgICAgIC8qIFByZXRlbmQgdGhhdCB3ZSd2ZSByYW4uICAq LwogCSAgICAgIHJlc3VtZV9wdGlkID0gdXNlcl92aXNpYmxlX3Jlc3VtZV9wdGlkICgxKTsK LQkgICAgICBzZXRfcnVubmluZyAodHAtPmluZi0+cHJvY2Vzc190YXJnZXQgKCksIHJlc3Vt ZV9wdGlkLCB0cnVlKTsKKwkgICAgICBzZXRfc3RhdGUgKHRwLT5pbmYtPnByb2Nlc3NfdGFy Z2V0ICgpLCByZXN1bWVfcHRpZCwKKwkJCSBUSFJFQURfUlVOTklORyk7CiAKIAkgICAgICBz dGVwX2ludG9faW5saW5lX2ZyYW1lICh0cCk7CiAKQEAgLTIwNzgsMTIgKzIwNzksMTIgQEAg aW5mb19wcm9ncmFtX2NvbW1hbmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkK IAkJICBwcmludF90aHJlYWRfaWQgKHRwKSwKIAkJICB0YXJnZXRfcGlkX3RvX3N0ciAodHAt PnB0aWQpLmNfc3RyICgpKTsKIAotICAgICAgaWYgKHRwLT5zdGF0ZSA9PSBUSFJFQURfRVhJ VEVEKQorICAgICAgaWYgKHRwLT5zdGF0ZSAoKSA9PSBUSFJFQURfRVhJVEVEKQogCXsKIAkg IGdkYl9wcmludGYgKF8oIlNlbGVjdGVkIHRocmVhZCBoYXMgZXhpdGVkLlxuIikpOwogCSAg cmV0dXJuOwogCX0KLSAgICAgIGVsc2UgaWYgKHRwLT5zdGF0ZSA9PSBUSFJFQURfUlVOTklO RykKKyAgICAgIGVsc2UgaWYgKHRwLT5zdGF0ZSAoKSA9PSBUSFJFQURfUlVOTklORykKIAl7 CiAJICBnZGJfcHJpbnRmIChfKCJTZWxlY3RlZCB0aHJlYWQgaXMgcnVubmluZy5cbiIpKTsK IAkgIHJldHVybjsKQEAgLTIxMDUsMTMgKzIxMDYsMTMgQEAgaW5mb19wcm9ncmFtX2NvbW1h bmQgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKIAkJICBwcmludF90aHJlYWRf aWQgKHRwKSwKIAkJICB0YXJnZXRfcGlkX3RvX3N0ciAodHAtPnB0aWQpLmNfc3RyICgpKTsK IAotICAgICAgaWYgKHRwLT5zdGF0ZSA9PSBUSFJFQURfRVhJVEVEKQorICAgICAgaWYgKHRw LT5zdGF0ZSAoKSA9PSBUSFJFQURfRVhJVEVEKQogCXsKIAkgIGdkYl9wcmludGYgKF8oIlRo cmVhZCBoYXMgc2luY2UgZXhpdGVkLlxuIikpOwogCSAgcmV0dXJuOwogCX0KIAotICAgICAg aWYgKHRwLT5zdGF0ZSA9PSBUSFJFQURfUlVOTklORykKKyAgICAgIGlmICh0cC0+c3RhdGUg KCkgPT0gVEhSRUFEX1JVTk5JTkcpCiAJewogCSAgZ2RiX3ByaW50ZiAoXygiVGhyZWFkIGlz IG5vdyBydW5uaW5nLlxuIikpOwogCSAgcmV0dXJuOwpAQCAtMjcwNyw3ICsyNzA4LDcgQEAg cHJvY2VlZF9hZnRlcl9hdHRhY2ggKGluZmVyaW9yICppbmYpCiAgIHNjb3BlZF9yZXN0b3Jl X2N1cnJlbnRfdGhyZWFkIHJlc3RvcmVfdGhyZWFkOwogCiAgIGZvciAodGhyZWFkX2luZm8g JnRocmVhZCA6IGluZi0+bm9uX2V4aXRlZF90aHJlYWRzICgpKQotICAgIGlmICghdGhyZWFk LmV4ZWN1dGluZyAoKQorICAgIGlmICh0aHJlYWQuaW50ZXJuYWxfc3RhdGUgKCkgIT0gVEhS RUFEX0lOVF9SVU5OSU5HCiAJJiYgIXRocmVhZC5zdG9wX3JlcXVlc3RlZAogCSYmIHRocmVh ZC5zdG9wX3NpZ25hbCAoKSA9PSBHREJfU0lHTkFMXzApCiAgICAgICB7CkBAIC0yOTkwLDcg KzI5OTEsNyBAQCBub3RpY2VfbmV3X2luZmVyaW9yICh0aHJlYWRfaW5mbyAqdGhyLCBib29s IGxlYXZlX3J1bm5pbmcsIGludCBmcm9tX3R0eSkKICAgLyogV2hlbiB3ZSAibm90aWNlIiBh IG5ldyBpbmZlcmlvciB3ZSBuZWVkIHRvIGRvIGFsbCB0aGUgdGhpbmdzIHdlCiAgICAgIHdv dWxkIG5vcm1hbGx5IGRvIGlmIHdlIGhhZCBqdXN0IGF0dGFjaGVkIHRvIGl0LiAgKi8KIAot ICBpZiAodGhyLT5leGVjdXRpbmcgKCkpCisgIGlmICh0aHItPmludGVybmFsX3N0YXRlICgp ID09IFRIUkVBRF9JTlRfUlVOTklORykKICAgICB7CiAgICAgICBzdHJ1Y3QgaW5mZXJpb3Ig KmluZmVyaW9yID0gY3VycmVudF9pbmZlcmlvciAoKTsKIApkaWZmIC0tZ2l0IGEvZ2RiL2lu ZmVyaW9yLmggYi9nZGIvaW5mZXJpb3IuaAppbmRleCBmYmY5NzY1ZmIwZS4uOWMwMzEwMzVh MjMgMTAwNjQ0Ci0tLSBhL2dkYi9pbmZlcmlvci5oCisrKyBiL2dkYi9pbmZlcmlvci5oCkBA IC0yMDAsOCArMjAwLDggQEAgZXh0ZXJuIHZvaWQgY2hpbGRfaW50ZXJydXB0IChzdHJ1Y3Qg dGFyZ2V0X29wcyAqc2VsZik7CiAvKiBGcm9tIGZvcmstY2hpbGQuYyAqLwogCiAvKiBIZWxw ZXIgZnVuY3Rpb24gdG8gY2FsbCBTVEFSVFVQX0lORkVSSU9SIHdpdGggUElEIGFuZCBOVU1f VFJBUFMuCi0gICBUaGlzIGZ1bmN0aW9uIGFscmVhZHkgY2FsbHMgc2V0X2V4ZWN1dGluZy4g IFJldHVybiB0aGUgcHRpZF90IGZyb20KLSAgIFNUQVJUVVBfSU5GRVJJT1IuICAqLworICAg VGhpcyBmdW5jdGlvbiBhbHJlYWR5IHNldHMgdGhlIHRocmVhZHMnIGludGVybmFsIHN0YXRl IHRvCisgICBUSFJFQURfU1RPUFBFRC4gIFJldHVybiB0aGUgcHRpZF90IGZyb20gU1RBUlRV UF9JTkZFUklPUi4gICovCiBleHRlcm4gcHRpZF90IGdkYl9zdGFydHVwX2luZmVyaW9yIChw aWRfdCBwaWQsIGludCBudW1fdHJhcHMpOwogCiAvKiBGcm9tIGluZmNtZC5jICovCmRpZmYg LS1naXQgYS9nZGIvaW5mbG93LmMgYi9nZGIvaW5mbG93LmMKaW5kZXggZmYxMThiNTU4Y2Eu LmM0MGFkMmNmNTI5IDEwMDY0NAotLS0gYS9nZGIvaW5mbG93LmMKKysrIGIvZ2RiL2luZmxv dy5jCkBAIC01NTIsNyArNTUyLDcgQEAgY2hpbGRfaW50ZXJydXB0IChzdHJ1Y3QgdGFyZ2V0 X29wcyAqc2VsZikKICAgdGhyZWFkX2luZm8gKnJlc3VtZWQgPSBOVUxMOwogICBmb3IgKHRo cmVhZF9pbmZvICZ0aHIgOiBhbGxfbm9uX2V4aXRlZF90aHJlYWRzICgpKQogICAgIHsKLSAg ICAgIGlmICh0aHIuZXhlY3V0aW5nICgpKQorICAgICAgaWYgKHRoci5pbnRlcm5hbF9zdGF0 ZSAoKSA9PSBUSFJFQURfSU5UX1JVTk5JTkcpCiAJewogCSAgcmVzdW1lZCA9ICZ0aHI7CiAJ ICBicmVhazsKZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYwppbmRl eCBhNmI1ZGIzZWRkNS4uMmM5YTI3MzI1YWYgMTAwNjQ0Ci0tLSBhL2dkYi9pbmZydW4uYwor KysgYi9nZGIvaW5mcnVuLmMKQEAgLTEwMDcsMTQgKzEwMDcsMTQgQEAgZm9sbG93X2luZmVy aW9yX3Jlc2V0X2JyZWFrcG9pbnRzICh2b2lkKQogICBpbnNlcnRfYnJlYWtwb2ludHMgKCk7 CiB9CiAKLS8qIFRoZSBjaGlsZCBoYXMgZXhpdGVkIG9yIGV4ZWNlZDogcmVzdW1lIFRIUkVB RCwgYSB0aHJlYWQgb2YgdGhlIHBhcmVudCwKLSAgIGlmIGl0IHdhcyBtZWFudCB0byBiZSBl eGVjdXRpbmcuICAqLworLyogVGhlIGNoaWxkIGhhcyBleGl0ZWQgb3IgZXhlY2VkOiByZXN1 bWUgVEhSRUFELCBhIHRocmVhZCBvZiB0aGUKKyAgIHBhcmVudCwgaWYgaXQgd2FzIG1lYW50 IHRvIGJlIHJ1bm5pbmcuICAqLwogCiBzdGF0aWMgdm9pZAogcHJvY2VlZF9hZnRlcl92Zm9y a19kb25lICh0aHJlYWRfaW5mbyAqdGhyZWFkKQogewotICBpZiAodGhyZWFkLT5zdGF0ZSA9 PSBUSFJFQURfUlVOTklORwotICAgICAgJiYgIXRocmVhZC0+ZXhlY3V0aW5nICgpCisgIGlm ICh0aHJlYWQtPnN0YXRlICgpID09IFRIUkVBRF9SVU5OSU5HCisgICAgICAmJiB0aHJlYWQt PmludGVybmFsX3N0YXRlICgpICE9IFRIUkVBRF9JTlRfUlVOTklORwogICAgICAgJiYgIXRo cmVhZC0+c3RvcF9yZXF1ZXN0ZWQKICAgICAgICYmIHRocmVhZC0+c3RvcF9zaWduYWwgKCkg PT0gR0RCX1NJR05BTF8wKQogICAgIHsKQEAgLTIyNDcsMTUgKzIyNDcsMTQgQEAgc3RhcnRf c3RlcF9vdmVyICh2b2lkKQogCX0KIAogICAgICAgaWYgKHRwLmNvbnRyb2wudHJhcF9leHBl Y3RlZAotCSAgfHwgdHAucmVzdW1lZCAoKQotCSAgfHwgdHAuZXhlY3V0aW5nICgpKQorCSAg fHwgdHAuaW50ZXJuYWxfc3RhdGUgKCkgPT0gVEhSRUFEX0lOVF9SRVNVTUVEX1BFTkRJTkdf U1RBVFVTCisJICB8fCB0cC5pbnRlcm5hbF9zdGF0ZSAoKSA9PSBUSFJFQURfSU5UX1JVTk5J TkcpCiAJewogCSAgaW50ZXJuYWxfZXJyb3IgKCJbJXNdIGhhcyBpbmNvbnNpc3RlbnQgc3Rh dGU6ICIKLQkJCSAgInRyYXBfZXhwZWN0ZWQ9JWQsIHJlc3VtZWQ9JWQsIGV4ZWN1dGluZz0l ZFxuIiwKKwkJCSAgInRyYXBfZXhwZWN0ZWQ9JWQsIGludGVybmFsX3N0YXRlPSVzXG4iLAog CQkJICB0cC5wdGlkLnRvX3N0cmluZyAoKS5jX3N0ciAoKSwKIAkJCSAgdHAuY29udHJvbC50 cmFwX2V4cGVjdGVkLAotCQkJICB0cC5yZXN1bWVkICgpLAotCQkJICB0cC5leGVjdXRpbmcg KCkpOworCQkJICB0aHJlYWRfaW50X3N0YXRlX3N0cmluZyAodHAuaW50ZXJuYWxfc3RhdGUg KCkpKTsKIAl9CiAKICAgICAgIGluZnJ1bl9kZWJ1Z19wcmludGYgKCJyZXN1bWluZyBbJXNd IGZvciBzdGVwLW92ZXIiLApAQCAtMjI3OSw3ICsyMjc4LDcgQEAgc3RhcnRfc3RlcF9vdmVy ICh2b2lkKQogCiAgICAgICAvKiBJZiB0aGUgdGhyZWFkJ3Mgc3RlcCBvdmVyIGNvdWxkIG5v dCBiZSBpbml0aWF0ZWQgYmVjYXVzZSBubyBidWZmZXJzCiAJIHdlcmUgYXZhaWxhYmxlLCBp dCB3YXMgcmUtYWRkZWQgdG8gdGhlIGdsb2JhbCBzdGVwIG92ZXIgY2hhaW4uICAqLwotICAg ICAgaWYgKHRwLnJlc3VtZWQgICgpKQorICAgICAgaWYgKHRwLmludGVybmFsX3N0YXRlICgp ICE9IFRIUkVBRF9JTlRfU1RPUFBFRCkKIAl7CiAJICBpbmZydW5fZGVidWdfcHJpbnRmICgi WyVzXSB3YXMgcmVzdW1lZC4iLAogCQkJICAgICAgIHRwLnB0aWQudG9fc3RyaW5nICgpLmNf c3RyICgpKTsKQEAgLTI2NzksNyArMjY3OCw3IEBAIHJlc3VtZV8xIChlbnVtIGdkYl9zaWdu YWwgc2lnKQogCSB0cC0+Y29udHJvbC5jdXJyZW50bHlfc3RlcHBpbmcpOwogCiAgICAgICB0 cC0+aW5mLT5wcm9jZXNzX3RhcmdldCAoKS0+dGhyZWFkc19leGVjdXRpbmcgPSB0cnVlOwot ICAgICAgdHAtPnNldF9yZXN1bWVkICh0cnVlKTsKKyAgICAgIHRwLT5zZXRfaW50ZXJuYWxf c3RhdGUgKFRIUkVBRF9JTlRfUkVTVU1FRF9QRU5ESU5HX1NUQVRVUyk7CiAKICAgICAgIC8q IEZJWE1FOiBXaGF0IHNob3VsZCB3ZSBkbyBpZiB3ZSBhcmUgc3VwcG9zZWQgdG8gcmVzdW1l IHRoaXMKIAkgdGhyZWFkIHdpdGggYSBzaWduYWw/ICBNYXliZSB3ZSBzaG91bGQgbWFpbnRh aW4gYSBxdWV1ZSBvZgpAQCAtMjgwNSw3ICsyODA0LDYgQEAgcmVzdW1lXzEgKGVudW0gZ2Ri X3NpZ25hbCBzaWcpCiAKIAkgICAgICByZXN1bWVfcHRpZCA9IGludGVybmFsX3Jlc3VtZV9w dGlkICh1c2VyX3N0ZXApOwogCSAgICAgIGRvX3RhcmdldF9yZXN1bWUgKHJlc3VtZV9wdGlk LCBmYWxzZSwgR0RCX1NJR05BTF8wKTsKLQkgICAgICB0cC0+c2V0X3Jlc3VtZWQgKHRydWUp OwogCSAgICAgIHJldHVybjsKIAkgICAgfQogCX0KQEAgLTI5OTcsNyArMjk5NSw2IEBAIHJl c3VtZV8xIChlbnVtIGdkYl9zaWduYWwgc2lnKQogICAgIH0KIAogICBkb190YXJnZXRfcmVz dW1lIChyZXN1bWVfcHRpZCwgc3RlcCwgc2lnKTsKLSAgdHAtPnNldF9yZXN1bWVkICh0cnVl KTsKIH0KIAogLyogUmVzdW1lIHRoZSBpbmZlcmlvci4gIFNJRyBpcyB0aGUgc2lnbmFsIHRv IGdpdmUgdGhlIGluZmVyaW9yCkBAIC0zMDYxLDYgKzMwNTgsNyBAQCBzdGF0aWMgdm9pZAog Y2xlYXJfcHJvY2VlZF9zdGF0dXNfdGhyZWFkIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwKQog ewogICBpbmZydW5fZGVidWdfcHJpbnRmICgiJXMiLCB0cC0+cHRpZC50b19zdHJpbmcgKCku Y19zdHIgKCkpOworICBnZGJfYXNzZXJ0ICh0cC0+aW50ZXJuYWxfc3RhdGUgKCkgIT0gVEhS RUFEX0lOVF9SVU5OSU5HKTsKIAogICAvKiBJZiB3ZSdyZSBzdGFydGluZyBhIG5ldyBzZXF1 ZW5jZSwgdGhlbiB0aGUgcHJldmlvdXMgZmluaXNoZWQKICAgICAgc2luZ2xlLXN0ZXAgaXMg bm8gbG9uZ2VyIHJlbGV2YW50LiAgKi8KQEAgLTMwNzIsNiArMzA3MCw3IEBAIGNsZWFyX3By b2NlZWRfc3RhdHVzX3RocmVhZCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCkKIAkJCSAgICAg ICAiRGlzY2FyZGluZy4iLAogCQkJICAgICAgIHRwLT5wdGlkLnRvX3N0cmluZyAoKS5jX3N0 ciAoKSk7CiAKKwkgIHRwLT5zZXRfaW50ZXJuYWxfc3RhdGUgKFRIUkVBRF9JTlRfU1RPUFBF RCk7CiAJICB0cC0+Y2xlYXJfcGVuZGluZ193YWl0c3RhdHVzICgpOwogCSAgdHAtPnNldF9z dG9wX3JlYXNvbiAoVEFSR0VUX1NUT1BQRURfQllfTk9fUkVBU09OKTsKIAl9CkBAIC0zMTQ0 LDcgKzMxNDMsOCBAQCBjbGVhcl9wcm9jZWVkX3N0YXR1cyAoaW50IHN0ZXAsIGJvb2wgYWJv dXRfdG9fcHJvY2VlZCkKICAgICAgIC8qIEluIGFsbC1zdG9wIG1vZGUsIGRlbGV0ZSB0aGUg cGVyLXRocmVhZCBzdGF0dXMgb2YgYWxsIHRocmVhZHMKIAkgd2UncmUgYWJvdXQgdG8gcmVz dW1lLCBpbXBsaWNpdGx5IGFuZCBleHBsaWNpdGx5LiAgKi8KICAgICAgIGZvciAodGhyZWFk X2luZm8gJnRwIDogYWxsX25vbl9leGl0ZWRfdGhyZWFkcyAocmVzdW1lX3RhcmdldCwgcmVz dW1lX3B0aWQpKQotCWNsZWFyX3Byb2NlZWRfc3RhdHVzX3RocmVhZCAoJnRwKTsKKwlpZiAo dHAuaW50ZXJuYWxfc3RhdGUgKCkgIT0gVEhSRUFEX0lOVF9SVU5OSU5HKQorCSAgY2xlYXJf cHJvY2VlZF9zdGF0dXNfdGhyZWFkICgmdHApOwogICAgIH0KIAogICBpZiAoaW5mZXJpb3Jf cHRpZCAhPSBudWxsX3B0aWQpCkBAIC0zNTA0LDYgKzM1MDQsOCBAQCBjaGVja19tdWx0aV90 YXJnZXRfcmVzdW1wdGlvbiAocHJvY2Vzc19zdHJhdHVtX3RhcmdldCAqcmVzdW1lX3Rhcmdl dCkKIHN0YXRpYyB2b2lkCiBwcm9jZWVkX3Jlc3VtZV90aHJlYWRfY2hlY2tlZCAodGhyZWFk X2luZm8gKnRwKQogeworICBnZGJfYXNzZXJ0ICh0cC0+aW50ZXJuYWxfc3RhdGUgKCkgIT0g VEhSRUFEX0lOVF9FWElURUQpOworCiAgIGlmICghdHAtPmluZi0+aGFzX2V4ZWN1dGlvbiAo KSkKICAgICB7CiAgICAgICBpbmZydW5fZGVidWdfcHJpbnRmICgiWyVzXSB0YXJnZXQgaGFz IG5vIGV4ZWN1dGlvbiIsCkBAIC0zNTExLDExICszNTEzLDEwIEBAIHByb2NlZWRfcmVzdW1l X3RocmVhZF9jaGVja2VkICh0aHJlYWRfaW5mbyAqdHApCiAgICAgICByZXR1cm47CiAgICAg fQogCi0gIGlmICh0cC0+cmVzdW1lZCAoKSkKKyAgaWYgKHRwLT5pbnRlcm5hbF9zdGF0ZSAo KSAhPSBUSFJFQURfSU5UX1NUT1BQRUQpCiAgICAgewogICAgICAgaW5mcnVuX2RlYnVnX3By aW50ZiAoIlslc10gcmVzdW1lZCIsCiAJCQkgICB0cC0+cHRpZC50b19zdHJpbmcgKCkuY19z dHIgKCkpOwotICAgICAgZ2RiX2Fzc2VydCAodHAtPmV4ZWN1dGluZyAoKSB8fCB0cC0+aGFz X3BlbmRpbmdfd2FpdHN0YXR1cyAoKSk7CiAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0z NjkxLDcgKzM2OTIsNyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSBnZGJfc2ln bmFsIHNpZ2duYWwpCiAgICAgIGluZmVyaW9yIGZ1bmN0aW9uLCBhcyBpbiB0aGF0IGNhc2Ug d2UgcHJldGVuZCB0aGUgaW5mZXJpb3IKICAgICAgZG9lc24ndCBydW4gYXQgYWxsLiAgKi8K ICAgaWYgKCFjdXJfdGhyLT5jb250cm9sLmluX2luZmNhbGwpCi0gICAgc2V0X3J1bm5pbmcg KHJlc3VtZV90YXJnZXQsIHJlc3VtZV9wdGlkLCB0cnVlKTsKKyAgICBzZXRfc3RhdGUgKHJl c3VtZV90YXJnZXQsIHJlc3VtZV9wdGlkLCBUSFJFQURfUlVOTklORyk7CiAKICAgaW5mcnVu X2RlYnVnX3ByaW50ZiAoImFkZHI9JXMsIHNpZ25hbD0lcywgcmVzdW1lX3B0aWQ9JXMiLAog CQkgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIGFkZHIpLApAQCAtMzg5Miw5ICszODkzLDkg QEAgaW5mcnVuX3RocmVhZF9zdG9wX3JlcXVlc3RlZCAocHRpZF90IHB0aWQpCiAgICAgIGZv ciByZXBvcnRpbmcgdGhlIHN0b3Agbm93LiAgKi8KICAgZm9yICh0aHJlYWRfaW5mbyAmdHAg OiBhbGxfdGhyZWFkcyAoY3Vycl90YXJnZXQsIHB0aWQpKQogICAgIHsKLSAgICAgIGlmICh0 cC5zdGF0ZSAhPSBUSFJFQURfUlVOTklORykKKyAgICAgIGlmICh0cC5zdGF0ZSAoKSAhPSBU SFJFQURfUlVOTklORykKIAljb250aW51ZTsKLSAgICAgIGlmICh0cC5leGVjdXRpbmcgKCkp CisgICAgICBpZiAodHAuaW50ZXJuYWxfc3RhdGUgKCkgPT0gVEhSRUFEX0lOVF9SVU5OSU5H KQogCWNvbnRpbnVlOwogCiAgICAgICAvKiBSZW1vdmUgbWF0Y2hpbmcgdGhyZWFkcyBmcm9t IHRoZSBzdGVwLW92ZXIgcXVldWUsIHNvCkBAIC0zOTI1LDEwICszOTI2LDEwIEBAIGluZnJ1 bl90aHJlYWRfc3RvcF9yZXF1ZXN0ZWQgKHB0aWRfdCBwdGlkKQogICAgICAgaWYgKHN0ZXBf b3Zlcl9pbmZvX3ZhbGlkX3AgKCkpCiAJY29udGludWU7CiAKLSAgICAgIC8qIE90aGVyd2lz ZSB3ZSBjYW4gcHJvY2VzcyB0aGUgKG5ldykgcGVuZGluZyBldmVudCBub3cuICBTZXQKLQkg aXQgc28gdGhpcyBwZW5kaW5nIGV2ZW50IGlzIGNvbnNpZGVyZWQgYnkKKyAgICAgIC8qIE90 aGVyd2lzZSB3ZSBjYW4gcHJvY2VzcyB0aGUgKG5ldykgcGVuZGluZyBldmVudCBub3cuICBT d2l0Y2gKKwkgc3RhdGUgc28gdGhpcyBwZW5kaW5nIGV2ZW50IGlzIGNvbnNpZGVyZWQgYnkK IAkgZG9fdGFyZ2V0X3dhaXQuICAqLwotICAgICAgdHAuc2V0X3Jlc3VtZWQgKHRydWUpOwor ICAgICAgdHAuc2V0X2ludGVybmFsX3N0YXRlIChUSFJFQURfSU5UX1JFU1VNRURfUEVORElO R19TVEFUVVMpOwogICAgIH0KIH0KIApAQCAtNDAzNCw3ICs0MDM1LDcgQEAgcmFuZG9tX3Bl bmRpbmdfZXZlbnRfdGhyZWFkIChpbmZlcmlvciAqaW5mLCBwdGlkX3Qgd2FpdG9uX3B0aWQp CiAgICAgfQogCiAgIGluZnJ1bl9kZWJ1Z19wcmludGYgKCJGb3VuZCAlcy4iLCB0aHJlYWQt PnB0aWQudG9fc3RyaW5nICgpLmNfc3RyICgpKTsKLSAgZ2RiX2Fzc2VydCAodGhyZWFkLT5y ZXN1bWVkICgpKTsKKyAgZ2RiX2Fzc2VydCAodGhyZWFkLT5pbnRlcm5hbF9zdGF0ZSAoKSA9 PSBUSFJFQURfSU5UX1JFU1VNRURfUEVORElOR19TVEFUVVMpOwogICBnZGJfYXNzZXJ0ICh0 aHJlYWQtPmhhc19wZW5kaW5nX3dhaXRzdGF0dXMgKCkpOwogCiAgIHJldHVybiB0aHJlYWQ7 CkBAIC00MTQ3LDYgKzQxNDgsNyBAQCBkb190YXJnZXRfd2FpdF8xIChpbmZlcmlvciAqaW5m LCBwdGlkX3QgcHRpZCwKIAogICAgICAgdHAtPnNldF9zdG9wX3JlYXNvbiAoVEFSR0VUX1NU T1BQRURfQllfTk9fUkVBU09OKTsKICAgICAgICpzdGF0dXMgPSB0cC0+cGVuZGluZ193YWl0 c3RhdHVzICgpOworICAgICAgdHAtPnNldF9pbnRlcm5hbF9zdGF0ZSAoVEhSRUFEX0lOVF9T VE9QUEVEKTsKICAgICAgIHRwLT5jbGVhcl9wZW5kaW5nX3dhaXRzdGF0dXMgKCk7CiAKICAg ICAgIC8qIFdha2UgdXAgdGhlIGV2ZW50IGxvb3AgYWdhaW4sIHVudGlsIGFsbCBwZW5kaW5n IGV2ZW50cyBhcmUKQEAgLTQzNDUsNyArNDM0Nyw3IEBAIHByZXBhcmVfZm9yX2RldGFjaCAo dm9pZCkKIAl7CiAJICBpZiAodGhyLmRpc3BsYWNlZF9zdGVwX3N0YXRlLmluX3Byb2dyZXNz ICgpKQogCSAgICB7Ci0JICAgICAgaWYgKHRoci5leGVjdXRpbmcgKCkpCisJICAgICAgaWYg KHRoci5pbnRlcm5hbF9zdGF0ZSAoKSA9PSBUSFJFQURfSU5UX1JVTk5JTkcpCiAJCXsKIAkJ ICBpZiAoIXRoci5zdG9wX3JlcXVlc3RlZCkKIAkJICAgIHsKQEAgLTQzNTMsOCArNDM1NSw2 IEBAIHByZXBhcmVfZm9yX2RldGFjaCAodm9pZCkKIAkJICAgICAgdGhyLnN0b3BfcmVxdWVz dGVkID0gdHJ1ZTsKIAkJICAgIH0KIAkJfQotCSAgICAgIGVsc2UKLQkJdGhyLnNldF9yZXN1 bWVkIChmYWxzZSk7CiAJICAgIH0KIAl9CiAKQEAgLTQ0ODgsNyArNDQ4OCw3IEBAIGNsZWFu X3VwX2p1c3Rfc3RvcHBlZF90aHJlYWRzX2ZzbXMgKHN0cnVjdCBleGVjdXRpb25fY29udHJv bF9zdGF0ZSAqZWNzKQogCiAgICAgICBmb3IgKHRocmVhZF9pbmZvICZ0aHIgOiBhbGxfdGhy ZWFkc19zYWZlICgpKQogCXsKLQkgIGlmICh0aHIuc3RhdGUgPT0gVEhSRUFEX0VYSVRFRCkK KwkgIGlmICh0aHIuc3RhdGUgKCkgPT0gVEhSRUFEX0VYSVRFRCkKIAkgICAgY29udGludWU7 CiAKIAkgIGlmICgmdGhyID09IGVjcy0+ZXZlbnRfdGhyZWFkKQpAQCAtNDgyNCw3ICs0ODI0 LDcgQEAgZmV0Y2hfaW5mZXJpb3JfZXZlbnQgKCkKICAgaWYgKGNtZF9kb25lCiAgICAgICAm JiBleGVjX2RvbmVfZGlzcGxheV9wCiAgICAgICAmJiAoaW5mZXJpb3JfcHRpZCA9PSBudWxs X3B0aWQKLQkgIHx8IGluZmVyaW9yX3RocmVhZCAoKS0+c3RhdGUgIT0gVEhSRUFEX1JVTk5J TkcpKQorCSAgfHwgaW5mZXJpb3JfdGhyZWFkICgpLT5zdGF0ZSAoKSAhPSBUSFJFQURfUlVO TklORykpCiAgICAgZ2RiX3ByaW50ZiAoXygiY29tcGxldGVkLlxuIikpOwogfQogCkBAIC01 Mzg3LDE0ICs1Mzg3LDE0IEBAIHNhdmVfd2FpdHN0YXR1cyAoc3RydWN0IHRocmVhZF9pbmZv ICp0cCwgY29uc3QgdGFyZ2V0X3dhaXRzdGF0dXMgJndzKQogICAgIH0KIH0KIAotLyogTWFy ayB0aGUgbm9uLWV4ZWN1dGluZyB0aHJlYWRzIGFjY29yZGluZ2x5LiAgSW4gYWxsLXN0b3As IGFsbAorLyogTWFyayB0aGUgaW50ZXJuYWxseSBzdG9wcGVkIHRocmVhZHMgYWNjb3JkaW5n bHkuICBJbiBhbGwtc3RvcCwgYWxsCiAgICB0aHJlYWRzIG9mIGFsbCBwcm9jZXNzZXMgYXJl IHN0b3BwZWQgd2hlbiB3ZSBnZXQgYW55IGV2ZW50CiAgICByZXBvcnRlZC4gIEluIG5vbi1z dG9wIG1vZGUsIG9ubHkgdGhlIGV2ZW50IHRocmVhZCBzdG9wcy4gICovCiAKIHN0YXRpYyB2 b2lkCi1tYXJrX25vbl9leGVjdXRpbmdfdGhyZWFkcyAocHJvY2Vzc19zdHJhdHVtX3Rhcmdl dCAqdGFyZ2V0LAotCQkJICAgIHB0aWRfdCBldmVudF9wdGlkLAotCQkJICAgIGNvbnN0IHRh cmdldF93YWl0c3RhdHVzICZ3cykKK21hcmtfaW50ZXJuYWxseV9zdG9wcGVkX3RocmVhZHMg KHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnRhcmdldCwKKwkJCQkgcHRpZF90IGV2ZW50X3B0 aWQsCisJCQkJIGNvbnN0IHRhcmdldF93YWl0c3RhdHVzICZ3cykKIHsKICAgcHRpZF90IG1h cmtfcHRpZDsKIApAQCAtNTQxNCwxOCArNTQxNCwxNSBAQCBtYXJrX25vbl9leGVjdXRpbmdf dGhyZWFkcyAocHJvY2Vzc19zdHJhdHVtX3RhcmdldCAqdGFyZ2V0LAogCSB0YXJnZXRfbW91 cm5faW5mZXJpb3IsIGJ5IGFzc29jaWF0aW5nIHRoZSBzYW1lCiAJIGluZmVyaW9yL3RocmVh ZCB0byBhbm90aGVyIGZvcmsuICBXZSBoYXZlbid0IG1vdXJuZWQgeWV0IGF0CiAJIHRoaXMg cG9pbnQsIGJ1dCB3ZSBtdXN0IG1hcmsgYW55IHRocmVhZHMgbGVmdCBpbiB0aGUKLQkgcHJv Y2VzcyBhcyBub3QtZXhlY3V0aW5nIHNvIHRoYXQgZmluaXNoX3RocmVhZF9zdGF0ZSBtYXJr cwotCSB0aGVtIHN0b3BwZWQgKGluIHRoZSB1c2VyJ3MgcGVyc3BlY3RpdmUpIGlmL3doZW4g d2UgcHJlc2VudAorCSBwcm9jZXNzIGFzIGludGVybmFsbHkgc3RvcHBlZCBzbyB0aGF0IGZp bmlzaF90aHJlYWRfc3RhdGUgbWFya3MKKwkgdGhlbSBzdG9wcGVkIGluIHRoZSB1c2VyJ3Mg cGVyc3BlY3RpdmUgaWYvd2hlbiB3ZSBwcmVzZW50CiAJIHRoZSBzdG9wIHRvIHRoZSB1c2Vy LiAgKi8KICAgICAgIG1hcmtfcHRpZCA9IHB0aWRfdCAoZXZlbnRfcHRpZC5waWQgKCkpOwog ICAgIH0KICAgZWxzZQogICAgIG1hcmtfcHRpZCA9IGV2ZW50X3B0aWQ7CiAKLSAgc2V0X2V4 ZWN1dGluZyAodGFyZ2V0LCBtYXJrX3B0aWQsIGZhbHNlKTsKLQotICAvKiBMaWtld2lzZSB0 aGUgcmVzdW1lZCBmbGFnLiAgKi8KLSAgc2V0X3Jlc3VtZWQgKHRhcmdldCwgbWFya19wdGlk LCBmYWxzZSk7CisgIHNldF9pbnRlcm5hbF9zdGF0ZSAodGFyZ2V0LCBtYXJrX3B0aWQsIFRI UkVBRF9JTlRfU1RPUFBFRCk7CiB9CiAKIC8qIEhhbmRsZSBvbmUgZXZlbnQgYWZ0ZXIgc3Rv cHBpbmcgdGhyZWFkcy4gIElmIHRoZSBldmVudGluZyB0aHJlYWQKQEAgLTU0OTEsMTEgKzU0 ODgsMTEgQEAgaGFuZGxlX29uZSAoY29uc3Qgd2FpdF9vbmVfZXZlbnQgJmV2ZW50KQogCiAg ICAgICBpZiAodCAhPSBudWxscHRyKQogCXsKLQkgIC8qIFNldCB0aGUgdGhyZWFkcyBhcyBu b24tZXhlY3V0aW5nIHRvIGF2b2lkCi0JICAgICBhbm90aGVyIHN0b3AgYXR0ZW1wdCBvbiB0 aGVtLiAgKi8KKwkgIC8qIFNldCB0aGUgdGhyZWFkcyBhcyBpbnRlcm5hbGx5IHN0b3BwZWQg dG8gYXZvaWQgYW5vdGhlcgorCSAgICAgc3RvcCBhdHRlbXB0IG9uIHRoZW0uICAqLwogCSAg c3dpdGNoX3RvX3RocmVhZF9ub19yZWdzICh0KTsKLQkgIG1hcmtfbm9uX2V4ZWN1dGluZ190 aHJlYWRzIChldmVudC50YXJnZXQsIGV2ZW50LnB0aWQsCi0JCQkJICAgICAgZXZlbnQud3Mp OworCSAgbWFya19pbnRlcm5hbGx5X3N0b3BwZWRfdGhyZWFkcyAoZXZlbnQudGFyZ2V0LCBl dmVudC5wdGlkLAorCQkJCQkgICBldmVudC53cyk7CiAJICBzYXZlX3dhaXRzdGF0dXMgKHQs IGV2ZW50LndzKTsKIAkgIHQtPnN0b3BfcmVxdWVzdGVkID0gZmFsc2U7CiAKQEAgLTU1MTcs OCArNTUxNCw3IEBAIGhhbmRsZV9vbmUgKGNvbnN0IHdhaXRfb25lX2V2ZW50ICZldmVudCkK IAl0ID0gYWRkX3RocmVhZCAoZXZlbnQudGFyZ2V0LCBldmVudC5wdGlkKTsKIAogICAgICAg dC0+c3RvcF9yZXF1ZXN0ZWQgPSBmYWxzZTsKLSAgICAgIHQtPnNldF9leGVjdXRpbmcgKGZh bHNlKTsKLSAgICAgIHQtPnNldF9yZXN1bWVkIChmYWxzZSk7CisgICAgICB0LT5zZXRfaW50 ZXJuYWxfc3RhdGUgKFRIUkVBRF9JTlRfU1RPUFBFRCk7CiAgICAgICB0LT5jb250cm9sLm1h eV9yYW5nZV9zdGVwID0gMDsKIAogICAgICAgLyogVGhpcyBtYXkgYmUgdGhlIGZpcnN0IHRp bWUgd2Ugc2VlIHRoZSBpbmZlcmlvciByZXBvcnQKQEAgLTU3NDksNyArNTc0NSw3IEBAIHN0 b3BfYWxsX3RocmVhZHMgKGNvbnN0IGNoYXIgKnJlYXNvbiwgaW5mZXJpb3IgKmluZikKIAkg ICAgICBpZiAoIXRhcmdldF9pc19ub25fc3RvcF9wICgpKQogCQljb250aW51ZTsKIAotCSAg ICAgIGlmICh0LmV4ZWN1dGluZyAoKSkKKwkgICAgICBpZiAodC5pbnRlcm5hbF9zdGF0ZSAo KSA9PSBUSFJFQURfSU5UX1JVTk5JTkcpCiAJCXsKIAkJICAvKiBJZiBhbHJlYWR5IHN0b3Bw aW5nLCBkb24ndCByZXF1ZXN0IGEgc3RvcCBhZ2Fpbi4KIAkJICAgICBXZSBqdXN0IGhhdmVu J3Qgc2VlbiB0aGUgbm90aWZpY2F0aW9uIHlldC4gICovCkBAIC01Nzc2LDcgKzU3NzIsNyBA QCBzdG9wX2FsbF90aHJlYWRzIChjb25zdCBjaGFyICpyZWFzb24sIGluZmVyaW9yICppbmYp CiAKIAkJICAvKiBUaGUgdGhyZWFkIG1heSBiZSBub3QgZXhlY3V0aW5nLCBidXQgc3RpbGwg YmUKIAkJICAgICByZXN1bWVkIHdpdGggYSBwZW5kaW5nIHN0YXR1cyB0byBwcm9jZXNzLiAg Ki8KLQkJICB0LnNldF9yZXN1bWVkIChmYWxzZSk7CisJCSAgdC5zZXRfaW50ZXJuYWxfc3Rh dGUgKFRIUkVBRF9JTlRfU1RPUFBFRCk7CiAJCX0KIAkgICAgfQogCkBAIC01ODkyLDcgKzU4 ODgsNyBAQCBoYW5kbGVfbm9fcmVzdW1lZCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0 YXRlICplY3MpCiAKICAgZm9yICh0aHJlYWRfaW5mbyAmdGhyZWFkIDogYWxsX25vbl9leGl0 ZWRfdGhyZWFkcyAoKSkKICAgICB7Ci0gICAgICBpZiAoc3dhcF90ZXJtaW5hbCAmJiB0aHJl YWQuZXhlY3V0aW5nICgpKQorICAgICAgaWYgKHN3YXBfdGVybWluYWwgJiYgdGhyZWFkLmlu dGVybmFsX3N0YXRlICgpID09IFRIUkVBRF9JTlRfUlVOTklORykKIAl7CiAJICBpZiAodGhy ZWFkLmluZiAhPSBjdXJyX2luZikKIAkgICAgewpAQCAtNTkwNCw3ICs1OTAwLDcgQEAgaGFu ZGxlX25vX3Jlc3VtZWQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQog CSAgc3dhcF90ZXJtaW5hbCA9IGZhbHNlOwogCX0KIAotICAgICAgaWYgKCFpZ25vcmVfZXZl bnQgJiYgdGhyZWFkLnJlc3VtZWQgKCkpCisgICAgICBpZiAoIWlnbm9yZV9ldmVudCAmJiB0 aHJlYWQuaW50ZXJuYWxfc3RhdGUgKCkgIT0gVEhSRUFEX0lOVF9TVE9QUEVEKQogCXsKIAkg IC8qIEVpdGhlciB0aGVyZSB3ZXJlIG5vIHVud2FpdGVkLWZvciBjaGlsZHJlbiBsZWZ0IGlu IHRoZQogCSAgICAgdGFyZ2V0IGF0IHNvbWUgcG9pbnQsIGJ1dCB0aGVyZSBhcmUgbm93LCBv ciBzb21lIHRhcmdldApAQCAtNjE3Niw3ICs2MTcyLDcgQEAgaGFuZGxlX2luZmVyaW9yX2V2 ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKIAl9CiAgICAgfQog Ci0gIG1hcmtfbm9uX2V4ZWN1dGluZ190aHJlYWRzIChlY3MtPnRhcmdldCwgZWNzLT5wdGlk LCBlY3MtPndzKTsKKyAgbWFya19pbnRlcm5hbGx5X3N0b3BwZWRfdGhyZWFkcyAoZWNzLT50 YXJnZXQsIGVjcy0+cHRpZCwgZWNzLT53cyk7CiAKICAgc3dpdGNoIChlY3MtPndzLmtpbmQg KCkpCiAgICAgewpAQCAtNjQ0MCw3ICs2NDM2LDcgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50 IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKIAkgIC8qIElmIG5vdCBy ZXN1bWluZyB0aGUgcGFyZW50LCBtYXJrIGl0IHN0b3BwZWQuICAqLwogCSAgaWYgKGVjcy0+ d3Mua2luZCAoKSAhPSBUQVJHRVRfV0FJVEtJTkRfVEhSRUFEX0NMT05FRAogCSAgICAgICYm IGZvbGxvd19jaGlsZCAmJiAhZGV0YWNoX2ZvcmsgJiYgIW5vbl9zdG9wICYmICFzY2hlZF9t dWx0aSkKLQkgICAgcGFyZW50LT5zZXRfcnVubmluZyAoZmFsc2UpOworCSAgICBwYXJlbnQt PnNldF9zdGF0ZSAoVEhSRUFEX1NUT1BQRUQpOwogCiAJICAvKiBJZiByZXN1bWluZyB0aGUg Y2hpbGQsIG1hcmsgaXQgcnVubmluZy4gICovCiAJICBpZiAoKGVjcy0+d3Mua2luZCAoKSA9 PSBUQVJHRVRfV0FJVEtJTkRfVEhSRUFEX0NMT05FRApAQCAtNjQ0OCw3ICs2NDQ0LDcgQEAg aGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUg KmVjcykKIAkgICAgICB8fCAoZWNzLT53cy5raW5kICgpICE9IFRBUkdFVF9XQUlUS0lORF9U SFJFQURfQ0xPTkVECiAJCSAgJiYgKGZvbGxvd19jaGlsZAogCQkgICAgICB8fCAoIWRldGFj aF9mb3JrICYmIChub25fc3RvcCB8fCBzY2hlZF9tdWx0aSkpKSkpCi0JICAgIGNoaWxkLT5z ZXRfcnVubmluZyAodHJ1ZSk7CisJICAgIGNoaWxkLT5zZXRfc3RhdGUgKFRIUkVBRF9SVU5O SU5HKTsKIAogCSAgLyogSW4gbm9uLXN0b3AgbW9kZSwgYWxzbyByZXN1bWUgdGhlIG90aGVy IGJyYW5jaC4gICovCiAJICBpZiAoKGVjcy0+d3Mua2luZCAoKSA9PSBUQVJHRVRfV0FJVEtJ TkRfVEhSRUFEX0NMT05FRApAQCAtNjY0MCwxOCArNjYzNiwxNyBAQCByZXN0YXJ0X3RocmVh ZHMgKHN0cnVjdCB0aHJlYWRfaW5mbyAqZXZlbnRfdGhyZWFkLCBpbmZlcmlvciAqaW5mKQog CSAgY29udGludWU7CiAJfQogCi0gICAgICBpZiAoISh0cC5zdGF0ZSA9PSBUSFJFQURfUlVO TklORyB8fCB0cC5jb250cm9sLmluX2luZmNhbGwpKQorICAgICAgaWYgKCEodHAuc3RhdGUg KCkgPT0gVEhSRUFEX1JVTk5JTkcgfHwgdHAuY29udHJvbC5pbl9pbmZjYWxsKSkKIAl7CiAJ ICBpbmZydW5fZGVidWdfcHJpbnRmICgicmVzdGFydCB0aHJlYWRzOiBbJXNdIG5vdCBtZWFu dCB0byBiZSBydW5uaW5nIiwKIAkJCSAgICAgICB0cC5wdGlkLnRvX3N0cmluZyAoKS5jX3N0 ciAoKSk7CiAJICBjb250aW51ZTsKIAl9CiAKLSAgICAgIGlmICh0cC5yZXN1bWVkICgpKQor ICAgICAgaWYgKHRwLmludGVybmFsX3N0YXRlICgpICE9IFRIUkVBRF9JTlRfU1RPUFBFRCkK IAl7Ci0JICBpbmZydW5fZGVidWdfcHJpbnRmICgicmVzdGFydCB0aHJlYWRzOiBbJXNdIHJl c3VtZWQiLAorCSAgaW5mcnVuX2RlYnVnX3ByaW50ZiAoInJlc3RhcnQgdGhyZWFkczogWyVz XSBhbHJlYWR5IHJlc3VtZWQiLAogCQkJICAgICAgdHAucHRpZC50b19zdHJpbmcgKCkuY19z dHIgKCkpOwotCSAgZ2RiX2Fzc2VydCAodHAuZXhlY3V0aW5nICgpIHx8IHRwLmhhc19wZW5k aW5nX3dhaXRzdGF0dXMgKCkpOwogCSAgY29udGludWU7CiAJfQogCkBAIC02NjU5LDcgKzY2 NTQsNiBAQCByZXN0YXJ0X3RocmVhZHMgKHN0cnVjdCB0aHJlYWRfaW5mbyAqZXZlbnRfdGhy ZWFkLCBpbmZlcmlvciAqaW5mKQogCXsKIAkgIGluZnJ1bl9kZWJ1Z19wcmludGYgKCJyZXN0 YXJ0IHRocmVhZHM6IFslc10gbmVlZHMgc3RlcC1vdmVyIiwKIAkJCSAgICAgICB0cC5wdGlk LnRvX3N0cmluZyAoKS5jX3N0ciAoKSk7Ci0JICBnZGJfYXNzZXJ0ICghdHAucmVzdW1lZCAo KSk7CiAJICBjb250aW51ZTsKIAl9CiAKQEAgLTY2NjgsNyArNjY2Miw3IEBAIHJlc3RhcnRf dGhyZWFkcyAoc3RydWN0IHRocmVhZF9pbmZvICpldmVudF90aHJlYWQsIGluZmVyaW9yICpp bmYpCiAJewogCSAgaW5mcnVuX2RlYnVnX3ByaW50ZiAoInJlc3RhcnQgdGhyZWFkczogWyVz XSBoYXMgcGVuZGluZyBzdGF0dXMiLAogCQkJICAgICAgIHRwLnB0aWQudG9fc3RyaW5nICgp LmNfc3RyICgpKTsKLQkgIHRwLnNldF9yZXN1bWVkICh0cnVlKTsKKwkgIHRwLnNldF9pbnRl cm5hbF9zdGF0ZSAoVEhSRUFEX0lOVF9SRVNVTUVEX1BFTkRJTkdfU1RBVFVTKTsKIAkgIGNv bnRpbnVlOwogCX0KIApAQCAtNjcwNyw3ICs2NzAxLDcgQEAgcmVzdGFydF90aHJlYWRzIChz dHJ1Y3QgdGhyZWFkX2luZm8gKmV2ZW50X3RocmVhZCwgaW5mZXJpb3IgKmluZikKIHN0YXRp YyBib29sCiByZXN1bWVkX3RocmVhZF93aXRoX3BlbmRpbmdfc3RhdHVzIChzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRwKQogewotICByZXR1cm4gdHAtPnJlc3VtZWQgKCkgJiYgdHAtPmhhc19w ZW5kaW5nX3dhaXRzdGF0dXMgKCk7CisgIHJldHVybiB0cC0+aW50ZXJuYWxfc3RhdGUgKCkg PT0gVEhSRUFEX0lOVF9SRVNVTUVEX1BFTkRJTkdfU1RBVFVTOwogfQogCiAvKiBDYWxsZWQg d2hlbiB3ZSBnZXQgYW4gZXZlbnQgdGhhdCBtYXkgZmluaXNoIGFuIGluLWxpbmUgb3IKQEAg LTY3OTYsMTIgKzY3OTAsMTIgQEAgZmluaXNoX3N0ZXBfb3ZlciAoc3RydWN0IGV4ZWN1dGlv bl9jb250cm9sX3N0YXRlICplY3MpCiAKIAkgIC8qIFJlY29yZCB0aGUgZXZlbnQgdGhyZWFk J3MgZXZlbnQgZm9yIGxhdGVyLiAgKi8KIAkgIHNhdmVfd2FpdHN0YXR1cyAodHAsIGVjcy0+ d3MpOwotCSAgLyogVGhpcyB3YXMgY2xlYXJlZCBlYXJseSwgYnkgaGFuZGxlX2luZmVyaW9y X2V2ZW50LiAgU2V0IGl0CisJICAvKiBUaGUgaW50ZXJuYWwgc3RhdGUgd2FzIHJlc2V0IHRv IHN0b3BwZWQgZWFybHksIGJ5CisJICAgICBoYW5kbGVfaW5mZXJpb3JfZXZlbnQuICBTd2l0 Y2ggdG8gcmVzdW1lZC1wZW5kaW5nLXN0YXR1cwogCSAgICAgc28gdGhpcyBwZW5kaW5nIGV2 ZW50IGlzIGNvbnNpZGVyZWQgYnkKIAkgICAgIGRvX3RhcmdldF93YWl0LiAgKi8KLQkgIHRw LT5zZXRfcmVzdW1lZCAodHJ1ZSk7Ci0KLQkgIGdkYl9hc3NlcnQgKCF0cC0+ZXhlY3V0aW5n ICgpKTsKKwkgIGdkYl9hc3NlcnQgKHRwLT5pbnRlcm5hbF9zdGF0ZSAoKSA9PSBUSFJFQURf SU5UX1NUT1BQRUQpOworCSAgdHAtPnNldF9pbnRlcm5hbF9zdGF0ZSAoVEhSRUFEX0lOVF9S RVNVTUVEX1BFTkRJTkdfU1RBVFVTKTsKIAogCSAgcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3Jl Z2NhY2hlICh0cCk7CiAJICB0cC0+c2V0X3N0b3BfcGMgKHJlZ2NhY2hlX3JlYWRfcGMgKHJl Z2NhY2hlKSk7CkBAIC04NDY0LDcgKzg0NTgsNyBAQCByZXN0YXJ0X3N0ZXBwZWRfdGhyZWFk IChwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpyZXN1bWVfdGFyZ2V0LAogCiAgIGZvciAodGhy ZWFkX2luZm8gJnRwIDogYWxsX3RocmVhZHNfc2FmZSAoKSkKICAgICB7Ci0gICAgICBpZiAo dHAuc3RhdGUgIT0gVEhSRUFEX1JVTk5JTkcpCisgICAgICBpZiAodHAuc3RhdGUgKCkgPT0g VEhSRUFEX0VYSVRFRCkKIAljb250aW51ZTsKIAogICAgICAgaWYgKHRwLmhhc19wZW5kaW5n X3dhaXRzdGF0dXMgKCkpCkBAIC04NDg4LDcgKzg0ODIsNyBAQCByZXN0YXJ0X3N0ZXBwZWRf dGhyZWFkIChwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpyZXN1bWVfdGFyZ2V0LAogCiAgIGZv ciAodGhyZWFkX2luZm8gJnRwIDogYWxsX3RocmVhZHNfc2FmZSAoKSkKICAgICB7Ci0gICAg ICBpZiAodHAuc3RhdGUgIT0gVEhSRUFEX1JVTk5JTkcpCisgICAgICBpZiAodHAuc3RhdGUg KCkgPT0gVEhSRUFEX0VYSVRFRCkKIAljb250aW51ZTsKIAogICAgICAgaWYgKHRwLmhhc19w ZW5kaW5nX3dhaXRzdGF0dXMgKCkpCkBAIC04NTIzLDI2ICs4NTE3LDI3IEBAIHJlc3RhcnRf YWZ0ZXJfYWxsX3N0b3BfZGV0YWNoIChwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3Rh cmdldCkKICAgICAgY3VycmVudCBpbmZlcmlvciBtYXkgbm8gbG9uZ2VyIGhhdmUgYSBwcm9j ZXNzX3N0cmF0dW0gdGFyZ2V0CiAgICAgIHB1c2hlZCwgYXMgd2UganVzdCBkZXRhY2hlZC4g ICovCiAKLSAgLyogU2VlIGlmIHdlIGhhdmUgYSBUSFJFQURfUlVOTklORyB0aHJlYWQgdGhh dCBuZWVkIHRvIGJlCi0gICAgIHJlLXJlc3VtZWQuICBJZiB3ZSBoYXZlIGFueSB0aHJlYWQg dGhhdCBpcyBhbHJlYWR5IGV4ZWN1dGluZywKLSAgICAgdGhlbiB3ZSBkb24ndCBuZWVkIHRv IHJlc3VtZSB0aGUgdGFyZ2V0IC0tIGl0IGlzIGFscmVhZHkgYmVlbgotICAgICByZXN1bWVk LiAgV2l0aCB0aGUgcmVtb3RlIHRhcmdldCAoaW4gYWxsLXN0b3ApLCBpdCdzIGV2ZW4KLSAg ICAgaW1wb3NzaWJsZSB0byBpc3N1ZSBhbm90aGVyIHJlc3VtcHRpb24gaWYgdGhlIHRhcmdl dCBpcyBhbHJlYWR5Ci0gICAgIHJlc3VtZWQsIHVudGlsIHRoZSB0YXJnZXQgcmVwb3J0cyBh IHN0b3AuICAqLworICAvKiBTZWUgaWYgd2UgaGF2ZSBhIHRocmVhZCB0aGF0IGlzIHJ1bm5p bmcgZnJvbSB0aGUgdXNlcidzCisgICAgIHBlcnNwZWN0aXZlIHRoYXQgbmVlZCB0byBiZSBy ZS1yZXN1bWVkLiAgSWYgd2UgaGF2ZSBhbnkgdGhyZWFkCisgICAgIHRoYXQgaXMgYWxyZWFk eSBleGVjdXRpbmcsIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byByZXN1bWUgdGhlCisgICAgIHRh cmdldCAtLSBpdCBpcyBhbHJlYWR5IGJlZW4gcmVzdW1lZC4gIFdpdGggdGhlIHJlbW90ZSB0 YXJnZXQgKGluCisgICAgIGFsbC1zdG9wKSwgaXQncyBldmVuIGltcG9zc2libGUgdG8gaXNz dWUgYW5vdGhlciByZXN1bXB0aW9uIGlmCisgICAgIHRoZSB0YXJnZXQgaXMgYWxyZWFkeSBy ZXN1bWVkLCB1bnRpbCB0aGUgdGFyZ2V0IHJlcG9ydHMgYQorICAgICBzdG9wLiAgKi8KICAg Zm9yICh0aHJlYWRfaW5mbyAmdGhyIDogYWxsX3RocmVhZHMgKHByb2NfdGFyZ2V0KSkKICAg ICB7Ci0gICAgICBpZiAodGhyLnN0YXRlICE9IFRIUkVBRF9SVU5OSU5HKQorICAgICAgaWYg KHRoci5zdGF0ZSAoKSAhPSBUSFJFQURfUlVOTklORykKIAljb250aW51ZTsKIAogICAgICAg LyogSWYgd2UgaGF2ZSBhbnkgdGhyZWFkIHRoYXQgaXMgYWxyZWFkeSBleGVjdXRpbmcsIHRo ZW4gd2UKIAkgZG9uJ3QgbmVlZCB0byByZXN1bWUgdGhlIHRhcmdldCAtLSBpdCBpcyBhbHJl YWR5IGJlZW4KIAkgcmVzdW1lZC4gICovCi0gICAgICBpZiAodGhyLmV4ZWN1dGluZyAoKSkK KyAgICAgIGlmICh0aHIuaW50ZXJuYWxfc3RhdGUgKCkgPT0gVEhSRUFEX0lOVF9SVU5OSU5H KQogCXJldHVybjsKIAotICAgICAgLyogSWYgd2UgaGF2ZSBhIHBlbmRpbmcgZXZlbnQgdG8g cHJvY2Vzcywgc2tpcCByZXN1bWluZyB0aGUKKyAgICAgIC8qIElmIHdlIGhhdmUgYSBwZW5k aW5nIHN0YXR1cyB0byBwcm9jZXNzLCBza2lwIHJlc3VtaW5nIHRoZQogCSB0YXJnZXQgYW5k IGdvIHN0cmFpZ2h0IHRvIHByb2Nlc3NpbmcgaXQuICAqLwotICAgICAgaWYgKHRoci5yZXN1 bWVkICgpICYmIHRoci5oYXNfcGVuZGluZ193YWl0c3RhdHVzICgpKQorICAgICAgaWYgKHRo ci5pbnRlcm5hbF9zdGF0ZSAoKSA9PSBUSFJFQURfSU5UX1JFU1VNRURfUEVORElOR19TVEFU VVMpCiAJcmV0dXJuOwogICAgIH0KIApAQCAtODU1NSw3ICs4NTUwLDcgQEAgcmVzdGFydF9h ZnRlcl9hbGxfc3RvcF9kZXRhY2ggKHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnByb2NfdGFy Z2V0KQogICAgICBpdC4gICovCiAgIGZvciAodGhyZWFkX2luZm8gJnRociA6IGFsbF90aHJl YWRzIChwcm9jX3RhcmdldCkpCiAgICAgewotICAgICAgaWYgKHRoci5zdGF0ZSAhPSBUSFJF QURfUlVOTklORykKKyAgICAgIGlmICh0aHIuc3RhdGUgKCkgIT0gVEhSRUFEX1JVTk5JTkcp CiAJY29udGludWU7CiAKICAgICAgIGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlIGVjcyAoJnRo cik7CkBAIC04NTkyLDcgKzg1ODcsNyBAQCBrZWVwX2dvaW5nX3N0ZXBwZWRfdGhyZWFkIChz dHJ1Y3QgdGhyZWFkX2luZm8gKnRwKQogICAgICAgIHN0ZXBwaW5nIHRocmVhZCBpcyBzdGls bCBhbGl2ZS4gIEZvciB0aGF0IHJlYXNvbiwgd2UgbmVlZCB0bwogICAgICAgIHN5bmNocm9u b3VzbHkgcXVlcnkgdGhlIHRhcmdldCBub3cuICAqLwogCi0gIGlmICh0cC0+c3RhdGUgPT0g VEhSRUFEX0VYSVRFRCB8fCAhdGFyZ2V0X3RocmVhZF9hbGl2ZSAodHAtPnB0aWQpKQorICBp ZiAodHAtPnN0YXRlICgpID09IFRIUkVBRF9FWElURUQgfHwgIXRhcmdldF90aHJlYWRfYWxp dmUgKHRwLT5wdGlkKSkKICAgICB7CiAgICAgICBpbmZydW5fZGVidWdfcHJpbnRmICgibm90 IHJlc3VtaW5nIHByZXZpb3VzbHkgc3RlcHBlZCB0aHJlYWQsIGl0IGhhcyAiCiAJCQkgICAi dmFuaXNoZWQiKTsKQEAgLTg2NDUsNyArODY0MCw2IEBAIGtlZXBfZ29pbmdfc3RlcHBlZF90 aHJlYWQgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCiAJCQkJICAgICBnZXRfZnJhbWVfYWRk cmVzc19zcGFjZSAoZnJhbWUpLAogCQkJCSAgICAgdHAtPnN0b3BfcGMgKCkpOwogCi0gICAg ICB0cC0+c2V0X3Jlc3VtZWQgKHRydWUpOwogICAgICAgcmVzdW1lX3B0aWQgPSBpbnRlcm5h bF9yZXN1bWVfcHRpZCAodHAtPmNvbnRyb2wuc3RlcHBpbmdfY29tbWFuZCk7CiAgICAgICBk b190YXJnZXRfcmVzdW1lIChyZXN1bWVfcHRpZCwgZmFsc2UsIEdEQl9TSUdOQUxfMCk7CiAg ICAgfQpAQCAtOTA1NCw3ICs5MDQ4LDcgQEAgc3RhdGljIHZvaWQKIGtlZXBfZ29pbmdfcGFz c19zaWduYWwgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQogewogICBn ZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+cHRpZCA9PSBpbmZlcmlvcl9wdGlkKTsK LSAgZ2RiX2Fzc2VydCAoIWVjcy0+ZXZlbnRfdGhyZWFkLT5yZXN1bWVkICgpKTsKKyAgZ2Ri X2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPmludGVybmFsX3N0YXRlICgpID09IFRIUkVB RF9JTlRfU1RPUFBFRCk7CiAKICAgLyogU2F2ZSB0aGUgcGMgYmVmb3JlIGV4ZWN1dGlvbiwg dG8gY29tcGFyZSB3aXRoIHBjIGFmdGVyIHN0b3AuICAqLwogICBlY3MtPmV2ZW50X3RocmVh ZC0+cHJldl9wYwpAQCAtOTUyNSw3ICs5NTE5LDcgQEAgc3RvcF9jb250ZXh0OjpjaGFuZ2Vk ICgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiAgIGlmIChpbmZfbnVtICE9IGN1cnJlbnRf aW5mZXJpb3IgKCktPm51bSkKICAgICByZXR1cm4gdHJ1ZTsKLSAgaWYgKHRocmVhZCAhPSBu dWxscHRyICYmIHRocmVhZC0+c3RhdGUgIT0gVEhSRUFEX1NUT1BQRUQpCisgIGlmICh0aHJl YWQgIT0gbnVsbHB0ciAmJiB0aHJlYWQtPnN0YXRlICgpICE9IFRIUkVBRF9TVE9QUEVEKQog ICAgIHJldHVybiB0cnVlOwogICBpZiAoZ2V0X3N0b3BfaWQgKCkgIT0gc3RvcF9pZCkKICAg ICByZXR1cm4gdHJ1ZTsKQEAgLTk2MTksNyArOTYxMyw3IEBAIG5vcm1hbF9zdG9wICgpCiAJ IHRvIGEgc3B1cmlvdXMgc3RvcCBldmVudC4gIFRoZSB0aHJlYWQgZXhpdGluZyB3aWxsIGhh dmUgYWxyZWFkeQogCSBiZWVuIHJlcG9ydGVkICh3aGVuIHRoZSB0aHJlYWQgbGlzdCB3YXMg cGFyc2VkKSwgc28gbWFraW5nIHRoaXMgYQogCSBzcHVyaW91cyBzdG9wIHdpbGwgY2F1c2Ug R0RCIHRvIGRyb3AgYmFjayB0byB0aGUgcHJvbXB0LiAgKi8KLSAgICAgIGlmIChpbmZlcmlv cl90aHJlYWQgKCktPnN0YXRlICE9IFRIUkVBRF9FWElURUQpCisgICAgICBpZiAoaW5mZXJp b3JfdGhyZWFkICgpLT5zdGF0ZSAoKSAhPSBUSFJFQURfRVhJVEVEKQogCW5vdGlmeV9zaWdu YWxfcmVjZWl2ZWQgKGluZmVyaW9yX3RocmVhZCAoKS0+c3RvcF9zaWduYWwgKCkpOwogICAg ICAgZWxzZQogCXsKZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uaCBiL2dkYi9pbmZydW4uaApp bmRleCA5ZWFhNTM4N2VmMC4uZjE1NjYyZDViYzkgMTAwNjQ0Ci0tLSBhL2dkYi9pbmZydW4u aAorKysgYi9nZGIvaW5mcnVuLmgKQEAgLTY2LDEyICs2NiwxMSBAQCBpbmZydW5fZGVidWdf c2hvd190aHJlYWRzIChjb25zdCBjaGFyICp0aXRsZSwgVGhyZWFkUmFuZ2UgdGhyZWFkcykK IAogICAgICAgaW5mcnVuX2RlYnVnX3ByaW50ZiAoIiVzOiIsIHRpdGxlKTsKICAgICAgIGZv ciAodGhyZWFkX2luZm8gJnRocmVhZCA6IHRocmVhZHMpCi0JaW5mcnVuX2RlYnVnX3ByaW50 ZiAoIiAgdGhyZWFkICVzLCBleGVjdXRpbmcgPSAlZCwgcmVzdW1lZCA9ICVkLCAiCisJaW5m cnVuX2RlYnVnX3ByaW50ZiAoIiAgdGhyZWFkICVzLCBpbnRlcm5hbF9zdGF0ZSA9ICVzLCAi CiAJCQkgICAgICJzdGF0ZSA9ICVzIiwKIAkJCSAgICAgdGhyZWFkLnB0aWQudG9fc3RyaW5n ICgpLmNfc3RyICgpLAotCQkJICAgICB0aHJlYWQuZXhlY3V0aW5nICgpLAotCQkJICAgICB0 aHJlYWQucmVzdW1lZCAoKSwKLQkJCSAgICAgdGhyZWFkX3N0YXRlX3N0cmluZyAodGhyZWFk LnN0YXRlKSk7CisJCQkgICAgIHRocmVhZF9pbnRfc3RhdGVfc3RyaW5nICh0aHJlYWQuaW50 ZXJuYWxfc3RhdGUgKCkpLAorCQkJICAgICB0aHJlYWRfc3RhdGVfc3RyaW5nICh0aHJlYWQu c3RhdGUgKCkpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2dkYi9saW51eC1mb3JrLmMg Yi9nZGIvbGludXgtZm9yay5jCmluZGV4IDk2MDk5NWQ5NGYxLi45MmFmYTRkZGU2ZCAxMDA2 NDQKLS0tIGEvZ2RiL2xpbnV4LWZvcmsuYworKysgYi9nZGIvbGludXgtZm9yay5jCkBAIC0z NTYsOCArMzU2LDcgQEAgZm9ya19sb2FkX2luZnJ1bl9zdGF0ZSAoc3RydWN0IGZvcmtfaW5m byAqZnApCiAKICAgaW5mZXJpb3JfdGhyZWFkICgpLT5zZXRfc3RvcF9wYwogICAgIChyZWdj YWNoZV9yZWFkX3BjIChnZXRfdGhyZWFkX3JlZ2NhY2hlIChpbmZlcmlvcl90aHJlYWQgKCkp KSk7Ci0gIGluZmVyaW9yX3RocmVhZCAoKS0+c2V0X2V4ZWN1dGluZyAoZmFsc2UpOwotICBp bmZlcmlvcl90aHJlYWQgKCktPnNldF9yZXN1bWVkIChmYWxzZSk7CisgIGluZmVyaW9yX3Ro cmVhZCAoKS0+c2V0X2ludGVybmFsX3N0YXRlIChUSFJFQURfSU5UX1NUT1BQRUQpOwogICBu dWxsaWZ5X2xhc3RfdGFyZ2V0X3dhaXRfcHRpZCAoKTsKIAogICAvKiBOb3cgcmVzdG9yZSB0 aGUgZmlsZSBwb3NpdGlvbnMgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzLiAgKi8KQEAgLTcx OSw3ICs3MTgsNyBAQCBkZWxldGVfY2hlY2twb2ludF9jb21tYW5kIChjb25zdCBjaGFyICph cmdzLCBpbnQgZnJvbV90dHkpCiAgICAgIHB0aWQuICAqLwogICB0aHJlYWRfaW5mbyAqcGFy ZW50ID0gbGludXhfdGFyZ2V0LT5maW5kX3RocmVhZCAocHB0aWQpOwogICBpZiAoKHBhcmVu dCA9PSBOVUxMICYmIGZpbmRfZm9ya19wdGlkIChwcHRpZCkuZmlyc3QgIT0gbnVsbHB0cikK LSAgICAgIHx8IChwYXJlbnQgIT0gTlVMTCAmJiBwYXJlbnQtPnN0YXRlID09IFRIUkVBRF9T VE9QUEVEKSkKKyAgICAgIHx8IChwYXJlbnQgIT0gTlVMTCAmJiBwYXJlbnQtPnN0YXRlICgp ID09IFRIUkVBRF9TVE9QUEVEKSkKICAgICB7CiAgICAgICBpZiAoaW5mZXJpb3JfY2FsbF93 YWl0cGlkIChwcHRpZCwgcHRpZC5waWQgKCkpKQogCXdhcm5pbmcgKF8oIlVuYWJsZSB0byB3 YWl0IHBpZCAlcyIpLApAQCAtODU5LDcgKzg1OCw3IEBAIHByaW50X2NoZWNrcG9pbnRzIChz dHJ1Y3QgdWlfb3V0ICp1aW91dCwgaW5mZXJpb3IgKnJlcV9pbmYsIGZvcmtfaW5mbyAqcmVx X2ZpKQogCSAgdWlvdXQtPmZpZWxkX3N0cmluZwogCSAgICAoInRhcmdldC1pZCIsIHRhcmdl dF9waWRfdG9fc3RyIChwcm9jX3B0aWQgKGZpLnB0aWQpKS5jX3N0ciAoKSk7CiAKLQkgIGlm ICh0LT5zdGF0ZSA9PSBUSFJFQURfUlVOTklORyAmJiBpc19jdXJyZW50KQorCSAgaWYgKHQt PnN0YXRlICgpID09IFRIUkVBRF9SVU5OSU5HICYmIGlzX2N1cnJlbnQpCiAJICAgIHVpb3V0 LT50ZXh0ICgiKHJ1bm5pbmcpIik7CiAJICBlbHNlCiAJICAgIHsKQEAgLTExMDEsNyArMTEw MCw3IEBAIHJlc3RhcnRfY29tbWFuZCAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5 KQogICAvKiBEb24ndCBhbGxvdyBzd2l0Y2hpbmcgZnJvbSBhIHRocmVhZC9mb3JrIHRoYXQn cyBydW5uaW5nLiAgKi8KICAgaW5mZXJpb3IgKmN1cmluZiA9IGN1cnJlbnRfaW5mZXJpb3Ig KCk7CiAgIGlmIChjdXJpbmYtPnBpZCAhPSAwCi0gICAgICAmJiBhbnlfdGhyZWFkX29mX2lu ZmVyaW9yIChjdXJpbmYpLT5zdGF0ZSA9PSBUSFJFQURfUlVOTklORykKKyAgICAgICYmIGFu eV90aHJlYWRfb2ZfaW5mZXJpb3IgKGN1cmluZiktPnN0YXRlICgpID09IFRIUkVBRF9SVU5O SU5HKQogICAgIGVycm9yIChfKCJDYW5ub3QgZXhlY3V0ZSB0aGlzIGNvbW1hbmQgd2hpbGUg IgogCSAgICAgInRoZSBzZWxlY3RlZCB0aHJlYWQgaXMgcnVubmluZy4iKSk7CiAKZGlmZiAt LWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQuYwppbmRleCAxZDBhNDYw OWEzYS4uOWE0OWQ1M2VhMmEgMTAwNjQ0Ci0tLSBhL2dkYi9saW51eC1uYXQuYworKysgYi9n ZGIvbGludXgtbmF0LmMKQEAgLTEyNDIsOCArMTI0Miw5IEBAIGxpbnV4X25hdF90YXJnZXQ6 OmF0dGFjaCAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogCQkgICAgICAgaWYg KGx3cC0+cHRpZC5waWQgKCkgIT0gbHdwLT5wdGlkLmx3cCAoKSkKIAkJCSB7CiAJCQkgICBh ZGRfdGhyZWFkIChsaW51eF90YXJnZXQsIGx3cC0+cHRpZCk7Ci0JCQkgICBzZXRfcnVubmlu ZyAobGludXhfdGFyZ2V0LCBsd3AtPnB0aWQsIHRydWUpOwotCQkJICAgc2V0X2V4ZWN1dGlu ZyAobGludXhfdGFyZ2V0LCBsd3AtPnB0aWQsIHRydWUpOworCQkJICAgc2V0X3N0YXRlIChs aW51eF90YXJnZXQsIGx3cC0+cHRpZCwgVEhSRUFEX1JVTk5JTkcpOworCQkJICAgc2V0X2lu dGVybmFsX3N0YXRlIChsaW51eF90YXJnZXQsIGx3cC0+cHRpZCwKKwkJCQkJICAgICAgIFRI UkVBRF9JTlRfUlVOTklORyk7CiAJCQkgfQogCQkgICAgICAgcmV0dXJuIDA7CiAJCSAgICAg fSk7CkBAIC0xMzI3LDcgKzEzMjgsOCBAQCBnZXRfZGV0YWNoX3NpZ25hbCAoc3RydWN0IGx3 cF9pbmZvICpscCkKICAgICB7CiAgICAgICB0aHJlYWRfaW5mbyAqdHAgPSBsaW51eF90YXJn ZXQtPmZpbmRfdGhyZWFkIChscC0+cHRpZCk7CiAKLSAgICAgIGlmICh0YXJnZXRfaXNfbm9u X3N0b3BfcCAoKSAmJiAhdHAtPmV4ZWN1dGluZyAoKSkKKyAgICAgIGlmICh0YXJnZXRfaXNf bm9uX3N0b3BfcCAoKQorCSAgJiYgdHAtPmludGVybmFsX3N0YXRlICgpICE9IFRIUkVBRF9J TlRfUlVOTklORykKIAl7CiAJICBpZiAodHAtPmhhc19wZW5kaW5nX3dhaXRzdGF0dXMgKCkp CiAJICAgIHsKZGlmZiAtLWdpdCBhL2dkYi9saW51eC10aHJlYWQtZGIuYyBiL2dkYi9saW51 eC10aHJlYWQtZGIuYwppbmRleCAwNzUzZDJlNzkxNS4uNTViOTk1M2FlNGYgMTAwNjQ0Ci0t LSBhL2dkYi9saW51eC10aHJlYWQtZGIuYworKysgYi9nZGIvbGludXgtdGhyZWFkLWRiLmMK QEAgLTEzNjEsNyArMTM2MSw3IEBAIHJlY29yZF90aHJlYWQgKHN0cnVjdCB0aHJlYWRfZGJf aW5mbyAqaW5mbywKICAgLyogQWRkIHRoZSB0aHJlYWQgdG8gR0RCJ3MgdGhyZWFkIGxpc3Qu ICBJZiB3ZSBhbHJlYWR5IGtub3cgYWJvdXQgYQogICAgICB0aHJlYWQgd2l0aCB0aGlzIFBU SUQsIGJ1dCBpdCdzIG1hcmtlZCBleGl0ZWQsIHRoZW4gdGhlIGtlcm5lbAogICAgICByZXVz ZWQgdGhlIHRpZCBvZiBhbiBvbGQgdGhyZWFkLiAgKi8KLSAgaWYgKHRwID09IE5VTEwgfHwg dHAtPnN0YXRlID09IFRIUkVBRF9FWElURUQpCisgIGlmICh0cCA9PSBOVUxMIHx8IHRwLT5z dGF0ZSAoKSA9PSBUSFJFQURfRVhJVEVEKQogICAgIHRwID0gYWRkX3RocmVhZF93aXRoX2lu Zm8gKGluZm8tPnByb2Nlc3NfdGFyZ2V0LCBwdGlkLAogCQkJICAgICAgIHByaXZhdGVfdGhy ZWFkX2luZm9fdXAgKHByaXYpKTsKICAgZWxzZQpAQCAtMTYyNSw3ICsxNjI1LDcgQEAgdGhy ZWFkX2RiX3RhcmdldDo6dXBkYXRlX3RocmVhZF9saXN0ICgpCiAJY29udGludWU7CiAKICAg ICAgIHRocmVhZF9pbmZvICp0aHJlYWQgPSBhbnlfbGl2ZV90aHJlYWRfb2ZfaW5mZXJpb3Ig KGluZik7Ci0gICAgICBpZiAodGhyZWFkID09IE5VTEwgfHwgdGhyZWFkLT5leGVjdXRpbmcg KCkpCisgICAgICBpZiAodGhyZWFkID09IE5VTEwgfHwgdGhyZWFkLT5pbnRlcm5hbF9zdGF0 ZSAoKSA9PSBUSFJFQURfSU5UX1JVTk5JTkcpCiAJY29udGludWU7CiAKICAgICAgIC8qIEl0 J3MgYmVzdCB0byBhdm9pZCB0ZF90YV90aHJfaXRlciBpZiBwb3NzaWJsZS4gIFRoYXQgd2Fs a3MKZGlmZiAtLWdpdCBhL2dkYi9taS9taS1jbWQtdmFyLmMgYi9nZGIvbWkvbWktY21kLXZh ci5jCmluZGV4IGYxZjE2MzdiNzRiLi4xZjdlMGZkZmUzZCAxMDA2NDQKLS0tIGEvZ2RiL21p L21pLWNtZC12YXIuYworKysgYi9nZGIvbWkvbWktY21kLXZhci5jCkBAIC02MDcsMTQgKzYw NywxNCBAQCBtaV9jbWRfdmFyX3VwZGF0ZV9pdGVyIChzdHJ1Y3QgdmFyb2JqICp2YXIsIGJv b2wgb25seV9mbG9hdGluZywKICAgaWYgKHRocmVhZF9pZCA9PSAtMSkKICAgICB7CiAgICAg ICB0aHJlYWRfc3RvcHBlZCA9IChpbmZlcmlvcl9wdGlkID09IG51bGxfcHRpZAotCQkJfHwg aW5mZXJpb3JfdGhyZWFkICgpLT5zdGF0ZSA9PSBUSFJFQURfU1RPUFBFRCk7CisJCQl8fCBp bmZlcmlvcl90aHJlYWQgKCktPnN0YXRlICgpID09IFRIUkVBRF9TVE9QUEVEKTsKICAgICB9 CiAgIGVsc2UKICAgICB7CiAgICAgICB0aHJlYWRfaW5mbyAqdHAgPSBmaW5kX3RocmVhZF9n bG9iYWxfaWQgKHRocmVhZF9pZCk7CiAKICAgICAgIHRocmVhZF9zdG9wcGVkID0gKHRwID09 IE5VTEwKLQkJCXx8IHRwLT5zdGF0ZSA9PSBUSFJFQURfU1RPUFBFRCk7CisJCQl8fCB0cC0+ c3RhdGUgKCkgPT0gVEhSRUFEX1NUT1BQRUQpOwogICAgIH0KIAogICBpZiAodGhyZWFkX3N0 b3BwZWQKZGlmZiAtLWdpdCBhL2dkYi9taS9taS1pbnRlcnAuYyBiL2dkYi9taS9taS1pbnRl cnAuYwppbmRleCBhN2I5NmM2YTY0Yy4uOGIzMDQ4YzVhNDYgMTAwNjQ0Ci0tLSBhL2dkYi9t aS9taS1pbnRlcnAuYworKysgYi9nZGIvbWkvbWktaW50ZXJwLmMKQEAgLTg1OCw3ICs4NTgs NyBAQCBtaV9pbnRlcnA6Om9uX3VzZXJfc2VsZWN0ZWRfY29udGV4dF9jaGFuZ2VkICh1c2Vy X3NlbGVjdGVkX3doYXQgc2VsZWN0aW9uKQogICAgICAgZ2RiX3ByaW50ZiAodGhpcy0+ZXZl bnRfY2hhbm5lbCwgInRocmVhZC1zZWxlY3RlZCxpZD1cIiVkXCIiLAogCQkgIHRwLT5nbG9i YWxfbnVtKTsKIAotICAgICAgaWYgKHRwLT5zdGF0ZSAhPSBUSFJFQURfUlVOTklORykKKyAg ICAgIGlmICh0cC0+c3RhdGUgKCkgIT0gVEhSRUFEX1JVTk5JTkcpCiAJewogCSAgaWYgKGhh c19zdGFja19mcmFtZXMgKCkpCiAJICAgIHByaW50X3N0YWNrX2ZyYW1lX3RvX3Vpb3V0ICht aV91aW91dCwgZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSwKZGlmZiAtLWdpdCBhL2dkYi9t aS9taS1tYWluLmMgYi9nZGIvbWkvbWktbWFpbi5jCmluZGV4IGMwM2NiZmU1MTE3Li5iZjA4 ZmU4MjJiMyAxMDA2NDQKLS0tIGEvZ2RiL21pL21pLW1haW4uYworKysgYi9nZGIvbWkvbWkt bWFpbi5jCkBAIC0yMzgsNyArMjM4LDcgQEAgbWlfY21kX2V4ZWNfanVtcCAoY29uc3QgY2hh ciAqYXJncywgY29uc3QgY2hhciAqY29uc3QgKmFyZ3YsIGludCBhcmdjKQogc3RhdGljIHZv aWQKIHByb2NlZWRfdGhyZWFkIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgaW50IHBp ZCkKIHsKLSAgaWYgKHRocmVhZC0+c3RhdGUgIT0gVEhSRUFEX1NUT1BQRUQpCisgIGlmICh0 aHJlYWQtPnN0YXRlICgpICE9IFRIUkVBRF9TVE9QUEVEKQogICAgIHJldHVybjsKIAogICBp ZiAocGlkICE9IDAgJiYgdGhyZWFkLT5wdGlkLnBpZCAoKSAhPSBwaWQpCkBAIC0zNjYsNyAr MzY2LDcgQEAgbWlfY21kX2V4ZWNfaW50ZXJydXB0IChjb25zdCBjaGFyICpjb21tYW5kLCBj b25zdCBjaGFyICpjb25zdCAqYXJndiwgaW50IGFyZ2MpCiAKICAgICAgIGl0ZXJhdGVfb3Zl cl90aHJlYWRzIChbJl0gKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGhyZWFkKQogCXsKLQkgIGlm ICh0aHJlYWQtPnN0YXRlICE9IFRIUkVBRF9SVU5OSU5HKQorCSAgaWYgKHRocmVhZC0+c3Rh dGUgKCkgIT0gVEhSRUFEX1JVTk5JTkcpCiAJICAgIHJldHVybiBmYWxzZTsKIAogCSAgaWYg KHRocmVhZC0+cHRpZC5waWQgKCkgIT0gaW5mLT5waWQpCkBAIC01MDcsNyArNTA3LDcgQEAg bWlfY21kX3RhcmdldF9kZXRhY2ggKGNvbnN0IGNoYXIgKmNvbW1hbmQsIGNvbnN0IGNoYXIg KmNvbnN0ICphcmd2LCBpbnQgYXJnYykKIAkgdGFyZ2V0X2RldGFjaCBkZXRhY2hlcyBmcm9t IHRoZSBwYXJlbnQgb2YgaW5mZXJpb3JfcHRpZC4gICovCiAgICAgICB0cCA9IGl0ZXJhdGVf b3Zlcl90aHJlYWRzIChbJl0gKHN0cnVjdCB0aHJlYWRfaW5mbyAqdGkpCiAJewotCSAgcmV0 dXJuIHRpLT5wdGlkLnBpZCAoKSA9PSBwaWQgJiYgdGktPnN0YXRlICE9IFRIUkVBRF9FWElU RUQ7CisJICByZXR1cm4gdGktPnB0aWQucGlkICgpID09IHBpZCAmJiB0aS0+c3RhdGUgKCkg IT0gVEhSRUFEX0VYSVRFRDsKIAl9KTsKICAgICAgIGlmICghdHApCiAJZXJyb3IgKF8oIlRo cmVhZCBncm91cCBpcyBlbXB0eSIpKTsKQEAgLTIwNjAsNyArMjA2MCw3IEBAIG1pX2NtZF9l eGVjdXRlIChzdHJ1Y3QgbWlfcGFyc2UgKnBhcnNlKQogICAgICAgaWYgKHRwID09IE5VTEwp CiAJZXJyb3IgKF8oIkludmFsaWQgdGhyZWFkIGlkOiAlZCIpLCBwYXJzZS0+dGhyZWFkKTsK IAotICAgICAgaWYgKHRwLT5zdGF0ZSA9PSBUSFJFQURfRVhJVEVEKQorICAgICAgaWYgKHRw LT5zdGF0ZSAoKSA9PSBUSFJFQURfRVhJVEVEKQogCWVycm9yIChfKCJUaHJlYWQgaWQ6ICVk IGhhcyB0ZXJtaW5hdGVkIiksIHBhcnNlLT50aHJlYWQpOwogCiAgICAgICBpZiAocGFyc2Ut PmNtZC0+cHJlc2VydmVfdXNlcl9zZWxlY3RlZF9jb250ZXh0ICgpKQpkaWZmIC0tZ2l0IGEv Z2RiL3Byb2Nlc3Mtc3RyYXR1bS10YXJnZXQuYyBiL2dkYi9wcm9jZXNzLXN0cmF0dW0tdGFy Z2V0LmMKaW5kZXggZDVjMTM2ZDBiODEuLjZhMjA1YjMxZWVlIDEwMDY0NAotLS0gYS9nZGIv cHJvY2Vzcy1zdHJhdHVtLXRhcmdldC5jCisrKyBiL2dkYi9wcm9jZXNzLXN0cmF0dW0tdGFy Z2V0LmMKQEAgLTExNCw4ICsxMTQsOSBAQCBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0OjptYXli ZV9hZGRfcmVzdW1lZF93aXRoX3BlbmRpbmdfd2FpdF9zdGF0dXMKIHsKICAgZ2RiX2Fzc2Vy dCAoIXRocmVhZC0+cmVzdW1lZF93aXRoX3BlbmRpbmdfd2FpdF9zdGF0dXNfbm9kZS5pc19s aW5rZWQgKCkpOwogCi0gIGlmICh0aHJlYWQtPnJlc3VtZWQgKCkgJiYgdGhyZWFkLT5oYXNf cGVuZGluZ193YWl0c3RhdHVzICgpKQorICBpZiAodGhyZWFkLT5pbnRlcm5hbF9zdGF0ZSAo KSA9PSBUSFJFQURfSU5UX1JFU1VNRURfUEVORElOR19TVEFUVVMpCiAgICAgeworICAgICAg Z2RiX2Fzc2VydCAodGhyZWFkLT5oYXNfcGVuZGluZ193YWl0c3RhdHVzICgpKTsKICAgICAg IGluZnJ1bl9kZWJ1Z19wcmludGYgKCJhZGRpbmcgdG8gcmVzdW1lZCB0aHJlYWRzIHdpdGgg ZXZlbnQgbGlzdDogJXMiLAogCQkJICAgdGhyZWFkLT5wdGlkLnRvX3N0cmluZyAoKS5jX3N0 ciAoKSk7CiAgICAgICBtX3Jlc3VtZWRfd2l0aF9wZW5kaW5nX3dhaXRfc3RhdHVzLnB1c2hf YmFjayAoKnRocmVhZCk7CkBAIC0xMjgsOCArMTI5LDkgQEAgdm9pZAogcHJvY2Vzc19zdHJh dHVtX3RhcmdldDo6bWF5YmVfcmVtb3ZlX3Jlc3VtZWRfd2l0aF9wZW5kaW5nX3dhaXRfc3Rh dHVzCiAgICh0aHJlYWRfaW5mbyAqdGhyZWFkKQogewotICBpZiAodGhyZWFkLT5yZXN1bWVk ICgpICYmIHRocmVhZC0+aGFzX3BlbmRpbmdfd2FpdHN0YXR1cyAoKSkKKyAgaWYgKHRocmVh ZC0+aW50ZXJuYWxfc3RhdGUgKCkgPT0gVEhSRUFEX0lOVF9SRVNVTUVEX1BFTkRJTkdfU1RB VFVTKQogICAgIHsKKyAgICAgIGdkYl9hc3NlcnQgKHRocmVhZC0+aGFzX3BlbmRpbmdfd2Fp dHN0YXR1cyAoKSk7CiAgICAgICBpbmZydW5fZGVidWdfcHJpbnRmICgicmVtb3ZpbmcgZnJv bSByZXN1bWVkIHRocmVhZHMgd2l0aCBldmVudCBsaXN0OiAlcyIsCiAJCQkgICB0aHJlYWQt PnB0aWQudG9fc3RyaW5nICgpLmNfc3RyICgpKTsKICAgICAgIGdkYl9hc3NlcnQgKHRocmVh ZC0+cmVzdW1lZF93aXRoX3BlbmRpbmdfd2FpdF9zdGF0dXNfbm9kZS5pc19saW5rZWQgKCkp OwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1pbmZ0aHJlYWQuYyBiL2dkYi9weXRob24v cHktaW5mdGhyZWFkLmMKaW5kZXggY2Q5ZTIzMDRiYTguLjRhZGZhYTcxYWUyIDEwMDY0NAot LS0gYS9nZGIvcHl0aG9uL3B5LWluZnRocmVhZC5jCisrKyBiL2dkYi9weXRob24vcHktaW5m dGhyZWFkLmMKQEAgLTI1OSw3ICsyNTksNyBAQCB0aHB5X2lzX3N0b3BwZWQgKFB5T2JqZWN0 ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIAogICBUSFBZX1JFUVVJUkVfVkFMSUQgKHRocmVh ZF9vYmopOwogCi0gIGlmICh0aHJlYWRfb2JqLT50aHJlYWQtPnN0YXRlID09IFRIUkVBRF9T VE9QUEVEKQorICBpZiAodGhyZWFkX29iai0+dGhyZWFkLT5zdGF0ZSAoKSA9PSBUSFJFQURf U1RPUFBFRCkKICAgICBQeV9SRVRVUk5fVFJVRTsKIAogICBQeV9SRVRVUk5fRkFMU0U7CkBA IC0yNzUsNyArMjc1LDcgQEAgdGhweV9pc19ydW5uaW5nIChQeU9iamVjdCAqc2VsZiwgUHlP YmplY3QgKmFyZ3MpCiAKICAgVEhQWV9SRVFVSVJFX1ZBTElEICh0aHJlYWRfb2JqKTsKIAot ICBpZiAodGhyZWFkX29iai0+dGhyZWFkLT5zdGF0ZSA9PSBUSFJFQURfUlVOTklORykKKyAg aWYgKHRocmVhZF9vYmotPnRocmVhZC0+c3RhdGUgKCkgPT0gVEhSRUFEX1JVTk5JTkcpCiAg ICAgUHlfUkVUVVJOX1RSVUU7CiAKICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMjkxLDcgKzI5 MSw3IEBAIHRocHlfaXNfZXhpdGVkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3Mp CiAKICAgVEhQWV9SRVFVSVJFX1ZBTElEICh0aHJlYWRfb2JqKTsKIAotICBpZiAodGhyZWFk X29iai0+dGhyZWFkLT5zdGF0ZSA9PSBUSFJFQURfRVhJVEVEKQorICBpZiAodGhyZWFkX29i ai0+dGhyZWFkLT5zdGF0ZSAoKSA9PSBUSFJFQURfRVhJVEVEKQogICAgIFB5X1JFVFVSTl9U UlVFOwogCiAgIFB5X1JFVFVSTl9GQUxTRTsKZGlmZiAtLWdpdCBhL2dkYi9yZWNvcmQtYnRy YWNlLmMgYi9nZGIvcmVjb3JkLWJ0cmFjZS5jCmluZGV4IGJkZWQyMmFmOGU2Li5kMTJkODYx NjE0MCAxMDA2NDQKLS0tIGEvZ2RiL3JlY29yZC1idHJhY2UuYworKysgYi9nZGIvcmVjb3Jk LWJ0cmFjZS5jCkBAIC00MTMsNyArNDEzLDcgQEAgcmVjb3JkX2J0cmFjZV90YXJnZXQ6OnN0 b3BfcmVjb3JkaW5nICgpCiAKICAgLyogQ2hlY2sgdGhhdCBiZWZvcmUgc28gc3RvcCByZWNv cmRpbmcgaXMgYXRvbWljLiAgKi8KICAgZm9yICh0aHJlYWRfaW5mbyAmdHAgOiBjdXJyZW50 X2luZmVyaW9yICgpLT5ub25fZXhpdGVkX3RocmVhZHMgKCkpCi0gICAgaWYgKHRwLnN0YXRl ID09IFRIUkVBRF9SVU5OSU5HKQorICAgIGlmICh0cC5zdGF0ZSAoKSA9PSBUSFJFQURfUlVO TklORykKICAgICAgIGVycm9yIChfKCJZb3UgY2Fubm90IHN0b3AgcmVjb3JkaW5nIHdoaWxl IHRocmVhZHMgYXJlIHJ1bm5pbmcuIikpOwogCiAgIGJvb2wgaXNfcmVwbGF5aW5nID0gcmVj b3JkX2lzX3JlcGxheWluZyAoaW5mZXJpb3JfcHRpZCk7CkBAIC0xOTk1LDE4ICsxOTk1LDE4 IEBAIGdldF90aHJlYWRfY3VycmVudF9mcmFtZV9pZCAoc3RydWN0IHRocmVhZF9pbmZvICp0 cCkKIAogICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldCA9IHRwLT5pbmYt PnByb2Nlc3NfdGFyZ2V0ICgpOwogCi0gIC8qIENsZWFyIHRoZSBleGVjdXRpbmcgZmxhZyB0 byBhbGxvdyBjaGFuZ2VzIHRvIHRoZSBjdXJyZW50IGZyYW1lLgotICAgICBXZSBhcmUgbm90 IGFjdHVhbGx5IHJ1bm5pbmcsIHlldC4gIFdlIGp1c3Qgc3RhcnRlZCBhIHJldmVyc2UgZXhl Y3V0aW9uCi0gICAgIGNvbW1hbmQgb3IgYSByZWNvcmQgZ290byBjb21tYW5kLgotICAgICBG b3IgdGhlIGxhdHRlciwgRVhFQ1VUSU5HIGlzIGZhbHNlIGFuZCB0aGlzIGhhcyBubyBlZmZl Y3QuCi0gICAgIEZvciB0aGUgZm9ybWVyLCBFWEVDVVRJTkcgaXMgdHJ1ZSBhbmQgd2UncmUg aW4gd2FpdCwgYWJvdXQgdG8KLSAgICAgbW92ZSB0aGUgdGhyZWFkLiAgU2luY2Ugd2UgbmVl ZCB0byByZWNvbXB1dGUgdGhlIHN0YWNrLCB3ZSB0ZW1wb3JhcmlseQotICAgICBzZXQgRVhF Q1VUSU5HIHRvIGZhbHNlLiAgKi8KLSAgYm9vbCBleGVjdXRpbmcgPSB0cC0+ZXhlY3V0aW5n ICgpOwotICBzZXRfZXhlY3V0aW5nIChwcm9jX3RhcmdldCwgaW5mZXJpb3JfcHRpZCwgZmFs c2UpOworICAvKiBUZW1wb3JhcmlseSBzZXQgdGhlIHRocmVhZCB0byBpbnRlcm5hbGx5IHN0 b3BwZWQgdG8gYWxsb3cgY2hhbmdlcworICAgICB0byB0aGUgY3VycmVudCBmcmFtZS4gIFdl IGFyZSBub3QgYWN0dWFsbHkgcnVubmluZywgeWV0LiAgV2UganVzdAorICAgICBzdGFydGVk IGEgcmV2ZXJzZSBleGVjdXRpb24gY29tbWFuZCBvciBhIHJlY29yZCBnb3RvIGNvbW1hbmQu CisgICAgIEZvciB0aGUgbGF0dGVyLCB0aGUgdGhyZWFkIGlzIHN0b3BwZWQgYW5kIHRoaXMg aGFzIG5vIGVmZmVjdC4KKyAgICAgRm9yIHRoZSBmb3JtZXIsIHRoZSB0aHJlYWQgaXMgcnVu bmluZyBhbmQgd2UncmUgaW4gd2FpdCwgYWJvdXQgdG8KKyAgICAgbW92ZSB0aGUgdGhyZWFk LiAgU2luY2Ugd2UgbmVlZCB0byByZWNvbXB1dGUgdGhlIHN0YWNrLCB3ZQorICAgICB0ZW1w b3JhcmlseSBzZXQgdGhlIHRocmVhZCB0byBpbnRlcm5hbGx5IHN0b3BwZWQuICAqLworICB0 aHJlYWRfaW50X3N0YXRlIHByZXZfaW50X3N0YXRlID0gdHAtPmludGVybmFsX3N0YXRlICgp OworICBzZXRfaW50ZXJuYWxfc3RhdGUgKHByb2NfdGFyZ2V0LCBpbmZlcmlvcl9wdGlkLCBU SFJFQURfSU5UX1NUT1BQRUQpOwogICBTQ09QRV9FWElUCiAgICAgewotICAgICAgc2V0X2V4 ZWN1dGluZyAocHJvY190YXJnZXQsIGluZmVyaW9yX3B0aWQsIGV4ZWN1dGluZyk7CisgICAg ICBzZXRfaW50ZXJuYWxfc3RhdGUgKHByb2NfdGFyZ2V0LCBpbmZlcmlvcl9wdGlkLCBwcmV2 X2ludF9zdGF0ZSk7CiAgICAgfTsKICAgcmV0dXJuIGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJl bnRfZnJhbWUgKCkpOwogfQpAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgcmVjb3JkX2J0cmFjZV9z dG9wX3JlcGxheWluZyAoc3RydWN0IHRocmVhZF9pbmZvICp0cCkKICAgaWYgKGJ0aW5mby0+ cmVwbGF5ID09IG51bGxwdHIpCiAgICAgcmV0dXJuOwogCi0gIHN3aXRjaCAodHAtPnN0YXRl KQorICBzd2l0Y2ggKHRwLT5zdGF0ZSAoKSkKICAgICB7CiAgICAgY2FzZSBUSFJFQURfU1RP UFBFRDoKICAgICAgIC8qIEZvcmdldCB3aHkgd2Ugc3RvcHBlZDsgaXQgd2FzIGF0IGEgZGlm ZmVyZW50IGxvY2F0aW9uLiAgKi8KQEAgLTI3NzcsNyArMjc3Nyw3IEBAIHJlY29yZF9idHJh Y2Vfc2V0X3JlcGxheSAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKIHsKICAgc3RydWN0IGJ0 cmFjZV90aHJlYWRfaW5mbyAqYnRpbmZvOwogCi0gIGlmICh0cC0+c3RhdGUgPT0gVEhSRUFE X1JVTk5JTkcpCisgIGlmICh0cC0+c3RhdGUgKCkgPT0gVEhSRUFEX1JVTk5JTkcpCiAgICAg ZXJyb3IgKF8oIllvdSBjYW5ub3QgZG8gdGhhdCB3aGlsZSB0aGUgdGhyZWFkIGlzIHJ1bm5p bmcuIikpOwogCiAgIGJ0aW5mbyA9ICZ0cC0+YnRyYWNlOwpkaWZmIC0tZ2l0IGEvZ2RiL3Jl Y29yZC1mdWxsLmMgYi9nZGIvcmVjb3JkLWZ1bGwuYwppbmRleCBlMGFmMzc2ZjNlYi4uNTI1 OGMzYzVmODQgMTAwNjQ0Ci0tLSBhL2dkYi9yZWNvcmQtZnVsbC5jCisrKyBiL2dkYi9yZWNv cmQtZnVsbC5jCkBAIC0xMjcyLDEwICsxMjcyLDEyIEBAIHJlY29yZF9mdWxsX3dhaXRfMSAo c3RydWN0IHRhcmdldF9vcHMgKm9wcywKIAkJCXsKIAkJCSAgLyogVHJ5IHRvIGluc2VydCB0 aGUgc29mdHdhcmUgc2luZ2xlIHN0ZXAgYnJlYWtwb2ludC4KIAkJCSAgICAgSWYgaW5zZXJ0 IHN1Y2Nlc3MsIHNldCBzdGVwIHRvIDAuICAqLwotCQkJICBzZXRfZXhlY3V0aW5nIChwcm9j X3RhcmdldCwgaW5mZXJpb3JfcHRpZCwgZmFsc2UpOworCQkJICBzZXRfaW50ZXJuYWxfc3Rh dGUgKHByb2NfdGFyZ2V0LCBpbmZlcmlvcl9wdGlkLAorCQkJCQkgICAgICBUSFJFQURfSU5U X1NUT1BQRUQpOwogCQkJICBTQ09QRV9FWElUCiAJCQkgICAgewotCQkJICAgICAgc2V0X2V4 ZWN1dGluZyAocHJvY190YXJnZXQsIGluZmVyaW9yX3B0aWQsIHRydWUpOworCQkJICAgICAg c2V0X2ludGVybmFsX3N0YXRlIChwcm9jX3RhcmdldCwgaW5mZXJpb3JfcHRpZCwKKwkJCQkJ CSAgVEhSRUFEX0lOVF9SVU5OSU5HKTsKIAkJCSAgICB9OwogCiAJCQkgIHJlaW5pdF9mcmFt ZV9jYWNoZSAoKTsKZGlmZiAtLWdpdCBhL2dkYi9yZWdjYWNoZS5jIGIvZ2RiL3JlZ2NhY2hl LmMKaW5kZXggY2NkMjRkNTg4ZDMuLmU5NGE5NGM0OGViIDEwMDY0NAotLS0gYS9nZGIvcmVn Y2FjaGUuYworKysgYi9nZGIvcmVnY2FjaGUuYwpAQCAtNDI5LDcgKzQyOSw3IEBAIGdldF90 aHJlYWRfcmVnY2FjaGUgKHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnRhcmdldCwgcHRpZF90 IHB0aWQpCiBzdHJ1Y3QgcmVnY2FjaGUgKgogZ2V0X3RocmVhZF9yZWdjYWNoZSAodGhyZWFk X2luZm8gKnRocmVhZCkKIHsKLSAgZ2RiX2Fzc2VydCAodGhyZWFkLT5zdGF0ZSAhPSBUSFJF QURfRVhJVEVEKTsKKyAgZ2RiX2Fzc2VydCAodGhyZWFkLT5zdGF0ZSAoKSAhPSBUSFJFQURf RVhJVEVEKTsKIAogICByZXR1cm4gZ2V0X3RocmVhZF9yZWdjYWNoZSAodGhyZWFkLT5pbmYt PnByb2Nlc3NfdGFyZ2V0ICgpLAogCQkJICAgICAgdGhyZWFkLT5wdGlkKTsKZGlmZiAtLWdp dCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUuYwppbmRleCAzZWM1NmE2ZDYxYi4uYzI1 NTVkNTI4ZmEgMTAwNjQ0Ci0tLSBhL2dkYi9yZW1vdGUuYworKysgYi9nZGIvcmVtb3RlLmMK QEAgLTEzMjksMTIgKzEzMjksMTUgQEAgY2xhc3MgcmVtb3RlX3RhcmdldCA6IHB1YmxpYyBw cm9jZXNzX3N0cmF0dW1fdGFyZ2V0CiAgIHB0aWRfdCBzZWxlY3RfdGhyZWFkX2Zvcl9hbWJp Z3VvdXNfc3RvcF9yZXBseQogICAgIChjb25zdCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMg JnN0YXR1cyk7CiAKLSAgdm9pZCByZW1vdGVfbm90aWNlX25ld19pbmZlcmlvciAocHRpZF90 IGN1cnJ0aHJlYWQsIGJvb2wgZXhlY3V0aW5nKTsKKyAgdm9pZCByZW1vdGVfbm90aWNlX25l d19pbmZlcmlvciAocHRpZF90IGN1cnJ0aHJlYWQsCisJCQkJICAgdGhyZWFkX2ludF9zdGF0 ZSBpbnRlcm5hbF9zdGF0ZSk7CiAKICAgdm9pZCBwcmludF9vbmVfc3RvcHBlZF90aHJlYWQg KHRocmVhZF9pbmZvICp0aHJlYWQpOwogICB2b2lkIHByb2Nlc3NfaW5pdGlhbF9zdG9wX3Jl cGxpZXMgKGludCBmcm9tX3R0eSk7CiAKLSAgdGhyZWFkX2luZm8gKnJlbW90ZV9hZGRfdGhy ZWFkIChwdGlkX3QgcHRpZCwgYm9vbCBydW5uaW5nLCBib29sIGV4ZWN1dGluZywKKyAgdGhy ZWFkX2luZm8gKnJlbW90ZV9hZGRfdGhyZWFkIChwdGlkX3QgcHRpZCwKKwkJCQkgIHRocmVh ZF9zdGF0ZSBzdGF0ZSwKKwkJCQkgIHRocmVhZF9pbnRfc3RhdGUgaW50ZXJuYWxfc3RhdGUs CiAJCQkJICBib29sIHNpbGVudF9wKTsKIAogICB2b2lkIGJ0cmFjZV9zeW5jX2NvbmYgKGNv bnN0IGJ0cmFjZV9jb25maWcgKmNvbmYpOwpAQCAtMzE1MSwxMyArMzE1NCwxNiBAQCBzdGF0 aWMgcmVtb3RlX3RocmVhZF9pbmZvICpnZXRfcmVtb3RlX3RocmVhZF9pbmZvICh0aHJlYWRf aW5mbyAqdGhyZWFkKTsKIHN0YXRpYyByZW1vdGVfdGhyZWFkX2luZm8gKmdldF9yZW1vdGVf dGhyZWFkX2luZm8gKHJlbW90ZV90YXJnZXQgKnRhcmdldCwKIAkJCQkJCSAgIHB0aWRfdCBw dGlkKTsKIAotLyogQWRkIHRocmVhZCBQVElEIHRvIEdEQidzIHRocmVhZCBsaXN0LiAgVGFn IGl0IGFzIGV4ZWN1dGluZy9ydW5uaW5nCi0gICBhY2NvcmRpbmcgdG8gRVhFQ1VUSU5HIGFu ZCBSVU5OSU5HIHJlc3BlY3RpdmVseS4gIElmIFNJTEVOVF9QIChvciB0aGUKLSAgIHJlbW90 ZV9zdGF0ZTo6c3RhcnRpbmdfdXAgZmxhZykgaXMgdHJ1ZSB0aGVuIHRoZSBuZXcgdGhyZWFk IGlzIGFkZGVkCi0gICBzaWxlbnRseSwgb3RoZXJ3aXNlIHRoZSBuZXcgdGhyZWFkIHdpbGwg YmUgYW5ub3VuY2VkIHRvIHRoZSB1c2VyLiAgKi8KKy8qIEFkZCB0aHJlYWQgUFRJRCB0byBH REIncyB0aHJlYWQgbGlzdC4gIFRhZyBpdHMgdXNlciBhbmQgaW50ZXJuYWwKKyAgIHN0YXRl cyBhY2NvcmRpbmcgdG8gU1RBVEUgYW5kIElOVEVSTkFMX1NUQVRFIHJlc3BlY3RpdmVseS4g IElmCisgICBTSUxFTlRfUCAob3IgdGhlIHJlbW90ZV9zdGF0ZTo6c3RhcnRpbmdfdXAgZmxh ZykgaXMgdHJ1ZSB0aGVuIHRoZQorICAgbmV3IHRocmVhZCBpcyBhZGRlZCBzaWxlbnRseSwg b3RoZXJ3aXNlIHRoZSBuZXcgdGhyZWFkIHdpbGwgYmUKKyAgIGFubm91bmNlZCB0byB0aGUg dXNlci4gICovCiAKIHRocmVhZF9pbmZvICoKLXJlbW90ZV90YXJnZXQ6OnJlbW90ZV9hZGRf dGhyZWFkIChwdGlkX3QgcHRpZCwgYm9vbCBydW5uaW5nLCBib29sIGV4ZWN1dGluZywKK3Jl bW90ZV90YXJnZXQ6OnJlbW90ZV9hZGRfdGhyZWFkIChwdGlkX3QgcHRpZCwKKwkJCQkgIHRo cmVhZF9zdGF0ZSBzdGF0ZSwKKwkJCQkgIHRocmVhZF9pbnRfc3RhdGUgaW50ZXJuYWxfc3Rh dGUsCiAJCQkJICBib29sIHNpbGVudF9wKQogewogICBzdHJ1Y3QgcmVtb3RlX3N0YXRlICpy cyA9IGdldF9yZW1vdGVfc3RhdGUgKCk7CkBAIC0zMTc0LDEwICszMTgwLDEwIEBAIHJlbW90 ZV90YXJnZXQ6OnJlbW90ZV9hZGRfdGhyZWFkIChwdGlkX3QgcHRpZCwgYm9vbCBydW5uaW5n LCBib29sIGV4ZWN1dGluZywKICAgZWxzZQogICAgIHRocmVhZCA9IGFkZF90aHJlYWQgKHRo aXMsIHB0aWQpOwogCi0gIGlmIChleGVjdXRpbmcpCisgIGlmIChpbnRlcm5hbF9zdGF0ZSA9 PSBUSFJFQURfSU5UX1JVTk5JTkcpCiAgICAgZ2V0X3JlbW90ZV90aHJlYWRfaW5mbyAodGhy ZWFkKS0+c2V0X3Jlc3VtZWQgKCk7Ci0gIHNldF9leGVjdXRpbmcgKHRoaXMsIHB0aWQsIGV4 ZWN1dGluZyk7Ci0gIHNldF9ydW5uaW5nICh0aGlzLCBwdGlkLCBydW5uaW5nKTsKKyAgc2V0 X2ludGVybmFsX3N0YXRlICh0aGlzLCBwdGlkLCBpbnRlcm5hbF9zdGF0ZSk7CisgIHNldF9z dGF0ZSAodGhpcywgcHRpZCwgc3RhdGUpOwogCiAgIHJldHVybiB0aHJlYWQ7CiB9CkBAIC0z MTg2LDI2ICszMTkyLDI5IEBAIHJlbW90ZV90YXJnZXQ6OnJlbW90ZV9hZGRfdGhyZWFkIChw dGlkX3QgcHRpZCwgYm9vbCBydW5uaW5nLCBib29sIGV4ZWN1dGluZywKICAgIEl0IG1heSBi ZSB0aGUgZmlyc3QgdGltZSB3ZSBoZWFyIGFib3V0IHN1Y2ggdGhyZWFkLCBzbyB0YWtlIHRo ZQogICAgb3Bwb3J0dW5pdHkgdG8gYWRkIGl0IHRvIEdEQidzIHRocmVhZCBsaXN0LiAgSW4g Y2FzZSB0aGlzIGlzIHRoZQogICAgZmlyc3QgdGltZSB3ZSdyZSBub3RpY2luZyBpdHMgY29y cmVzcG9uZGluZyBpbmZlcmlvciwgYWRkIGl0IHRvCi0gICBHREIncyBpbmZlcmlvciBsaXN0 IGFzIHdlbGwuICBFWEVDVVRJTkcgaW5kaWNhdGVzIHdoZXRoZXIgdGhlCi0gICB0aHJlYWQg aXMgKGludGVybmFsbHkpIGV4ZWN1dGluZyBvciBzdG9wcGVkLiAgKi8KKyAgIEdEQidzIGlu ZmVyaW9yIGxpc3QgYXMgd2VsbC4gIElOVEVSTkFMX1NUQVRFIGluZGljYXRlcyB3aGV0aGVy IHRoZQorICAgdGhyZWFkIGlzIGludGVybmFsbHkgcnVubmluZyBvciBzdG9wcGVkLiAgKi8K IAogdm9pZAotcmVtb3RlX3RhcmdldDo6cmVtb3RlX25vdGljZV9uZXdfaW5mZXJpb3IgKHB0 aWRfdCBjdXJydGhyZWFkLCBib29sIGV4ZWN1dGluZykKK3JlbW90ZV90YXJnZXQ6OnJlbW90 ZV9ub3RpY2VfbmV3X2luZmVyaW9yIChwdGlkX3QgY3VycnRocmVhZCwKKwkJCQkJICAgdGhy ZWFkX2ludF9zdGF0ZSBpbnRlcm5hbF9zdGF0ZSkKIHsKICAgLyogSW4gbm9uLXN0b3AgbW9k ZSwgd2UgYXNzdW1lIG5ldyBmb3VuZCB0aHJlYWRzIGFyZSAoZXh0ZXJuYWxseSkKICAgICAg cnVubmluZyB1bnRpbCBwcm92ZW4gb3RoZXJ3aXNlIHdpdGggYSBzdG9wIHJlcGx5LiAgSW4g YWxsLXN0b3AsCiAgICAgIHdlIGNhbiBvbmx5IGdldCBoZXJlIGlmIGFsbCB0aHJlYWRzIGFy ZSBzdG9wcGVkLiAgKi8KLSAgYm9vbCBydW5uaW5nID0gdGFyZ2V0X2lzX25vbl9zdG9wX3Ag KCk7CisgIHRocmVhZF9zdGF0ZSBzdGF0ZSA9ICh0YXJnZXRfaXNfbm9uX3N0b3BfcCAoKQor CQkJPyBUSFJFQURfUlVOTklORworCQkJOiBUSFJFQURfU1RPUFBFRCk7CiAKICAgLyogSWYg dGhpcyBpcyBhIG5ldyB0aHJlYWQsIGFkZCBpdCB0byBHREIncyB0aHJlYWQgbGlzdC4KICAg ICAgSWYgd2UgbGVhdmUgaXQgdXAgdG8gV0ZJIHRvIGRvIHRoaXMsIGJhZCB0aGluZ3Mgd2ls bCBoYXBwZW4uICAqLwogCiAgIHRocmVhZF9pbmZvICp0cCA9IHRoaXMtPmZpbmRfdGhyZWFk IChjdXJydGhyZWFkKTsKLSAgaWYgKHRwICE9IE5VTEwgJiYgdHAtPnN0YXRlID09IFRIUkVB RF9FWElURUQpCisgIGlmICh0cCAhPSBOVUxMICYmIHRwLT5zdGF0ZSAoKSA9PSBUSFJFQURf RVhJVEVEKQogICAgIHsKICAgICAgIC8qIFdlJ3JlIHNlZWluZyBhbiBldmVudCBvbiBhIHRo cmVhZCBpZCB3ZSBrbmV3IGhhZCBleGl0ZWQuCiAJIFRoaXMgaGFzIHRvIGJlIGEgbmV3IHRo cmVhZCByZXVzaW5nIHRoZSBvbGQgaWQuICBBZGQgaXQuICAqLwotICAgICAgcmVtb3RlX2Fk ZF90aHJlYWQgKGN1cnJ0aHJlYWQsIHJ1bm5pbmcsIGV4ZWN1dGluZywgZmFsc2UpOworICAg ICAgcmVtb3RlX2FkZF90aHJlYWQgKGN1cnJ0aHJlYWQsIHN0YXRlLCBpbnRlcm5hbF9zdGF0 ZSwgZmFsc2UpOwogICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzIyNyw3ICszMjM2LDcg QEAgcmVtb3RlX3RhcmdldDo6cmVtb3RlX25vdGljZV9uZXdfaW5mZXJpb3IgKHB0aWRfdCBj dXJydGhyZWFkLCBib29sIGV4ZWN1dGluZykKIAkgIGVsc2UKIAkgICAgewogCSAgICAgIHRo cmVhZF9pbmZvICp0aHIKLQkJPSByZW1vdGVfYWRkX3RocmVhZCAoY3VycnRocmVhZCwgcnVu bmluZywgZXhlY3V0aW5nLCBmYWxzZSk7CisJCT0gcmVtb3RlX2FkZF90aHJlYWQgKGN1cnJ0 aHJlYWQsIHN0YXRlLCBpbnRlcm5hbF9zdGF0ZSwgZmFsc2UpOwogCSAgICAgIHN3aXRjaF90 b190aHJlYWQgKHRocik7CiAJICAgIH0KIAkgIHJldHVybjsKQEAgLTMyNjQsNyArMzI3Myw3 IEBAIHJlbW90ZV90YXJnZXQ6OnJlbW90ZV9ub3RpY2VfbmV3X2luZmVyaW9yIChwdGlkX3Qg Y3VycnRocmVhZCwgYm9vbCBleGVjdXRpbmcpCiAKICAgICAgIC8qIFRoaXMgaXMgcmVhbGx5 IGEgbmV3IHRocmVhZC4gIEFkZCBpdC4gICovCiAgICAgICB0aHJlYWRfaW5mbyAqbmV3X3Ro cgotCT0gcmVtb3RlX2FkZF90aHJlYWQgKGN1cnJ0aHJlYWQsIHJ1bm5pbmcsIGV4ZWN1dGlu ZywgZmFsc2UpOworCT0gcmVtb3RlX2FkZF90aHJlYWQgKGN1cnJ0aHJlYWQsIHN0YXRlLCBp bnRlcm5hbF9zdGF0ZSwgZmFsc2UpOwogCiAgICAgICAvKiBJZiB3ZSBmb3VuZCBhIG5ldyBp bmZlcmlvciwgbGV0IHRoZSBjb21tb24gY29kZSBkbyB3aGF0ZXZlcgogCSBpdCBuZWVkcyB0 byB3aXRoIGl0IChlLmcuLCByZWFkIHNoYXJlZCBsaWJyYXJpZXMsIGluc2VydApAQCAtMzI3 NSw3ICszMjg0LDcgQEAgcmVtb3RlX3RhcmdldDo6cmVtb3RlX25vdGljZV9uZXdfaW5mZXJp b3IgKHB0aWRfdCBjdXJydGhyZWFkLCBib29sIGV4ZWN1dGluZykKIAkgIHN0cnVjdCByZW1v dGVfc3RhdGUgKnJzID0gZ2V0X3JlbW90ZV9zdGF0ZSAoKTsKIAogCSAgaWYgKCFycy0+c3Rh cnRpbmdfdXApCi0JICAgIG5vdGljZV9uZXdfaW5mZXJpb3IgKG5ld190aHIsIGV4ZWN1dGlu ZywgMCk7CisJICAgIG5vdGljZV9uZXdfaW5mZXJpb3IgKG5ld190aHIsIGludGVybmFsX3N0 YXRlLCAwKTsKIAl9CiAgICAgfQogfQpAQCAtNDYxNiwxMiArNDYyNSwxNCBAQCByZW1vdGVf dGFyZ2V0Ojp1cGRhdGVfdGhyZWFkX2xpc3QgKCkKIAkgIGlmIChpdGVtLnB0aWQgIT0gbnVs bF9wdGlkKQogCSAgICB7CiAJICAgICAgLyogSW4gbm9uLXN0b3AgbW9kZSwgd2UgYXNzdW1l IG5ldyBmb3VuZCB0aHJlYWRzIGFyZQotCQkgZXhlY3V0aW5nIHVudGlsIHByb3ZlbiBvdGhl cndpc2Ugd2l0aCBhIHN0b3AgcmVwbHkuCi0JCSBJbiBhbGwtc3RvcCwgd2UgY2FuIG9ubHkg Z2V0IGhlcmUgaWYgYWxsIHRocmVhZHMgYXJlCisJCSBydW5uaW5nIHVudGlsIHByb3ZlbiBv dGhlcndpc2Ugd2l0aCBhIHN0b3AgcmVwbHkuICBJbgorCQkgYWxsLXN0b3AsIHdlIGNhbiBv bmx5IGdldCBoZXJlIGlmIGFsbCB0aHJlYWRzIGFyZQogCQkgc3RvcHBlZC4gICovCi0JICAg ICAgYm9vbCBleGVjdXRpbmcgPSB0YXJnZXRfaXNfbm9uX3N0b3BfcCAoKTsKKwkgICAgICB0 aHJlYWRfaW50X3N0YXRlIGludGVybmFsX3N0YXRlID0gKHRhcmdldF9pc19ub25fc3RvcF9w ICgpCisJCQkJCQkgPyBUSFJFQURfSU5UX1JVTk5JTkcKKwkJCQkJCSA6IFRIUkVBRF9JTlRf U1RPUFBFRCk7CiAKLQkgICAgICByZW1vdGVfbm90aWNlX25ld19pbmZlcmlvciAoaXRlbS5w dGlkLCBleGVjdXRpbmcpOworCSAgICAgIHJlbW90ZV9ub3RpY2VfbmV3X2luZmVyaW9yIChp dGVtLnB0aWQsIGludGVybmFsX3N0YXRlKTsKIAogCSAgICAgIHRocmVhZF9pbmZvICp0cCA9 IHRoaXMtPmZpbmRfdGhyZWFkIChpdGVtLnB0aWQpOwogCSAgICAgIHJlbW90ZV90aHJlYWRf aW5mbyAqaW5mbyA9IGdldF9yZW1vdGVfdGhyZWFkX2luZm8gKHRwKTsKQEAgLTUyMzcsOCAr NTI0OCw4IEBAIHJlbW90ZV90YXJnZXQ6OnByb2Nlc3NfaW5pdGlhbF9zdG9wX3JlcGxpZXMg KGludCBmcm9tX3R0eSkKIAkgIHx8IHdzLnNpZyAoKSAhPSBHREJfU0lHTkFMXzApCiAJZXZ0 aHJlYWQtPnNldF9wZW5kaW5nX3dhaXRzdGF0dXMgKHdzKTsKIAotICAgICAgc2V0X2V4ZWN1 dGluZyAodGhpcywgZXZlbnRfcHRpZCwgZmFsc2UpOwotICAgICAgc2V0X3J1bm5pbmcgKHRo aXMsIGV2ZW50X3B0aWQsIGZhbHNlKTsKKyAgICAgIHNldF9pbnRlcm5hbF9zdGF0ZSAodGhp cywgZXZlbnRfcHRpZCwgVEhSRUFEX0lOVF9TVE9QUEVEKTsKKyAgICAgIHNldF9zdGF0ZSAo dGhpcywgZXZlbnRfcHRpZCwgVEhSRUFEX1NUT1BQRUQpOwogICAgICAgZ2V0X3JlbW90ZV90 aHJlYWRfaW5mbyAoZXZ0aHJlYWQpLT5zZXRfbm90X3Jlc3VtZWQgKCk7CiAgICAgfQogCkBA IC01MjUxLDcgKzUyNjIsNyBAQCByZW1vdGVfdGFyZ2V0Ojpwcm9jZXNzX2luaXRpYWxfc3Rv cF9yZXBsaWVzIChpbnQgZnJvbV90dHkpCiAgICAgICBpZiAobm9uX3N0b3ApCiAJewogCSAg dGhyZWFkX2luZm8gKnRocmVhZCA9IGFueV9saXZlX3RocmVhZF9vZl9pbmZlcmlvciAoaW5m KTsKLQkgIG5vdGljZV9uZXdfaW5mZXJpb3IgKHRocmVhZCwgdGhyZWFkLT5zdGF0ZSA9PSBU SFJFQURfUlVOTklORywKKwkgIG5vdGljZV9uZXdfaW5mZXJpb3IgKHRocmVhZCwgdGhyZWFk LT5zdGF0ZSAoKSA9PSBUSFJFQURfUlVOTklORywKIAkJCSAgICAgICBmcm9tX3R0eSk7CiAJ fQogICAgIH0KQEAgLTUzMTEsOCArNTMyMiw4IEBAIHJlbW90ZV90YXJnZXQ6OnByb2Nlc3Nf aW5pdGlhbF9zdG9wX3JlcGxpZXMgKGludCBmcm9tX3R0eSkKIAlmaXJzdCA9ICZ0aHJlYWQ7 CiAKICAgICAgIGlmICghbm9uX3N0b3ApCi0JdGhyZWFkLnNldF9ydW5uaW5nIChmYWxzZSk7 Ci0gICAgICBlbHNlIGlmICh0aHJlYWQuc3RhdGUgIT0gVEhSRUFEX1NUT1BQRUQpCisJdGhy ZWFkLnNldF9zdGF0ZSAoVEhSRUFEX1NUT1BQRUQpOworICAgICAgZWxzZSBpZiAodGhyZWFk LnN0YXRlICgpICE9IFRIUkVBRF9TVE9QUEVEKQogCWNvbnRpbnVlOwogCiAgICAgICBpZiAo c2VsZWN0ZWQgPT0gbnVsbHB0ciAmJiB0aHJlYWQuaGFzX3BlbmRpbmdfd2FpdHN0YXR1cyAo KSkKQEAgLTcwMTEsNyArNzAyMiw3IEBAIHJlbW90ZV90YXJnZXQ6OmZvbGxvd19mb3JrIChp bmZlcmlvciAqY2hpbGRfaW5mLCBwdGlkX3QgY2hpbGRfcHRpZCwKIHZvaWQKIHJlbW90ZV90 YXJnZXQ6OmZvbGxvd19jbG9uZSAocHRpZF90IGNoaWxkX3B0aWQpCiB7Ci0gIHJlbW90ZV9h ZGRfdGhyZWFkIChjaGlsZF9wdGlkLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgcmVtb3Rl X2FkZF90aHJlYWQgKGNoaWxkX3B0aWQsIFRIUkVBRF9TVE9QUEVELCBUSFJFQURfSU5UX1NU T1BQRUQsIGZhbHNlKTsKIH0KIAogLyogVGFyZ2V0IGZvbGxvdy1leGVjIGZ1bmN0aW9uIGZv ciByZW1vdGUgdGFyZ2V0cy4gIFNhdmUgRVhFQ0RfUEFUSE5BTUUKQEAgLTcxMjAsNyArNzEz MSw4IEBAIGV4dGVuZGVkX3JlbW90ZV90YXJnZXQ6OmF0dGFjaCAoY29uc3QgY2hhciAqYXJn cywgaW50IGZyb21fdHR5KQogCiAgICAgICAvKiBBZGQgdGhlIG1haW4gdGhyZWFkIHRvIHRo ZSB0aHJlYWQgbGlzdC4gIFdlIGFkZCB0aGUgdGhyZWFkCiAJIHNpbGVudGx5IGluIHRoaXMg Y2FzZSAodGhlIGZpbmFsIHRydWUgcGFyYW1ldGVyKS4gICovCi0gICAgICB0aHJlYWRfaW5m byAqdGhyID0gcmVtb3RlX2FkZF90aHJlYWQgKGN1cnJfcHRpZCwgdHJ1ZSwgdHJ1ZSwgdHJ1 ZSk7CisgICAgICB0aHJlYWRfaW5mbyAqdGhyID0gcmVtb3RlX2FkZF90aHJlYWQgKGN1cnJf cHRpZCwgVEhSRUFEX1JVTk5JTkcsCisJCQkJCSAgICBUSFJFQURfSU5UX1JVTk5JTkcsIHRy dWUpOwogCiAgICAgICBzd2l0Y2hfdG9fdGhyZWFkICh0aHIpOwogICAgIH0KQEAgLTg5OTgs NyArOTAxMCw3IEBAIHJlbW90ZV90YXJnZXQ6OnByb2Nlc3Nfc3RvcF9yZXBseSAoc3RvcF9y ZXBseV91cCBzdG9wX3JlcGx5LAogICAgICAgJiYgc3RhdHVzLT5raW5kICgpICE9IFRBUkdF VF9XQUlUS0lORF9TSUdOQUxMRUQKICAgICAgICYmIHN0YXR1cy0+a2luZCAoKSAhPSBUQVJH RVRfV0FJVEtJTkRfTk9fUkVTVU1FRCkKICAgICB7Ci0gICAgICByZW1vdGVfbm90aWNlX25l d19pbmZlcmlvciAocHRpZCwgZmFsc2UpOworICAgICAgcmVtb3RlX25vdGljZV9uZXdfaW5m ZXJpb3IgKHB0aWQsIFRIUkVBRF9JTlRfU1RPUFBFRCk7CiAKICAgICAgIC8qIEV4cGVkaXRl ZCByZWdpc3RlcnMuICAqLwogICAgICAgaWYgKCFzdG9wX3JlcGx5LT5yZWdjYWNoZS5lbXB0 eSAoKSkKQEAgLTkxMDQsNyArOTExNiw3IEBAIHN0YXRpYyBwdGlkX3QKIGZpcnN0X3JlbW90 ZV9yZXN1bWVkX3RocmVhZCAocmVtb3RlX3RhcmdldCAqdGFyZ2V0KQogewogICBmb3IgKHRo cmVhZF9pbmZvICZ0cCA6IGFsbF9ub25fZXhpdGVkX3RocmVhZHMgKHRhcmdldCwgbWludXNf b25lX3B0aWQpKQotICAgIGlmICh0cC5yZXN1bWVkICgpKQorICAgIGlmICh0cC5pbnRlcm5h bF9zdGF0ZSAoKSAhPSBUSFJFQURfSU5UX1NUT1BQRUQpCiAgICAgICByZXR1cm4gdHAucHRp ZDsKICAgcmV0dXJuIG51bGxfcHRpZDsKIH0KZGlmZiAtLWdpdCBhL2dkYi9zb2wtdGhyZWFk LmMgYi9nZGIvc29sLXRocmVhZC5jCmluZGV4IGVjNDgwMTg2YjU5Li5jNzY1YTQyMDVhMCAx MDA2NDQKLS0tIGEvZ2RiL3NvbC10aHJlYWQuYworKysgYi9nZGIvc29sLXRocmVhZC5jCkBA IC00NTEsNyArNDUxLDcgQEAgc29sX3RocmVhZF90YXJnZXQ6OndhaXQgKHB0aWRfdCBwdGlk LCBzdHJ1Y3QgdGFyZ2V0X3dhaXRzdGF0dXMgKm91cnN0YXR1cywKICAgICAgIGlmIChydG52 YWwudGlkX3AgKCkpCiAJewogCSAgdGhyZWFkX2luZm8gKnRociA9IGN1cnJlbnRfaW5mZXJp b3IgKCktPmZpbmRfdGhyZWFkIChydG52YWwpOwotCSAgaWYgKHRociA9PSBOVUxMIHx8IHRo ci0+c3RhdGUgPT0gVEhSRUFEX0VYSVRFRCkKKwkgIGlmICh0aHIgPT0gTlVMTCB8fCB0aHIt PnN0YXRlICgpID09IFRIUkVBRF9FWElURUQpCiAJICAgIHsKIAkgICAgICBwcm9jZXNzX3N0 cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldAogCQk9IGN1cnJlbnRfaW5mZXJpb3IgKCktPnBy b2Nlc3NfdGFyZ2V0ICgpOwpAQCAtOTk4LDcgKzk5OCw3IEBAIHNvbF91cGRhdGVfdGhyZWFk X2xpc3RfY2FsbGJhY2sgKGNvbnN0IHRkX3RocmhhbmRsZV90ICp0aCwgdm9pZCAqaWdub3Jl ZCkKIAogICBwdGlkX3QgcHRpZCA9IHB0aWRfdCAoY3VycmVudF9pbmZlcmlvciAoKS0+cGlk LCAwLCB0aS50aV90aWQpOwogICB0aHJlYWRfaW5mbyAqdGhyID0gY3VycmVudF9pbmZlcmlv ciAoKS0+ZmluZF90aHJlYWQgKHB0aWQpOwotICBpZiAodGhyID09IE5VTEwgfHwgdGhyLT5z dGF0ZSA9PSBUSFJFQURfRVhJVEVEKQorICBpZiAodGhyID09IE5VTEwgfHwgdGhyLT5zdGF0 ZSAoKSA9PSBUSFJFQURfRVhJVEVEKQogICAgIHsKICAgICAgIHByb2Nlc3Nfc3RyYXR1bV90 YXJnZXQgKnByb2NfdGFyZ2V0CiAJPSBjdXJyZW50X2luZmVyaW9yICgpLT5wcm9jZXNzX3Rh cmdldCAoKTsKZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuYyBiL2dkYi90YXJnZXQuYwppbmRl eCAzNTk2MThlODAwZi4uYjM4YTA1MzY1MjUgMTAwNjQ0Ci0tLSBhL2dkYi90YXJnZXQuYwor KysgYi9nZGIvdGFyZ2V0LmMKQEAgLTI2NjIsMTAgKzI2NjIsMTAgQEAgdGFyZ2V0X3Jlc3Vt ZSAocHRpZF90IHNjb3BlX3B0aWQsIGludCBzdGVwLCBlbnVtIGdkYl9zaWduYWwgc2lnbmFs KQogICBjdXJyZW50X2luZmVyaW9yICgpLT50b3BfdGFyZ2V0ICgpLT5yZXN1bWUgKHNjb3Bl X3B0aWQsIHN0ZXAsIHNpZ25hbCk7CiAKICAgcmVnaXN0ZXJzX2NoYW5nZWRfcHRpZCAoY3Vy cl90YXJnZXQsIHNjb3BlX3B0aWQpOwotICAvKiBXZSBvbmx5IHNldCB0aGUgaW50ZXJuYWwg ZXhlY3V0aW5nIHN0YXRlIGhlcmUuICBUaGUgdXNlci9mcm9udGVuZAotICAgICBydW5uaW5n IHN0YXRlIGlzIHNldCBhdCBhIGhpZ2hlciBsZXZlbC4gIFRoaXMgYWxzbyBjbGVhcnMgdGhl Ci0gICAgIHRocmVhZCdzIHN0b3BfcGMgYXMgc2lkZSBlZmZlY3QuICAqLwotICBzZXRfZXhl Y3V0aW5nIChjdXJyX3RhcmdldCwgc2NvcGVfcHRpZCwgdHJ1ZSk7CisgIC8qIFdlIG9ubHkg c2V0IHRoZSBpbnRlcm5hbCBzdGF0ZSBoZXJlLiAgVGhlIHVzZXIvZnJvbnRlbmQgc3RhdGUg aXMKKyAgICAgc2V0IGF0IGEgaGlnaGVyIGxldmVsLiAgVGhpcyBhbHNvIGNsZWFycyB0aGUg dGhyZWFkJ3Mgc3RvcF9wYyBhcworICAgICBzaWRlIGVmZmVjdC4gICovCisgIHNldF9pbnRl cm5hbF9zdGF0ZSAoY3Vycl90YXJnZXQsIHNjb3BlX3B0aWQsIFRIUkVBRF9JTlRfUlVOTklO Ryk7CiAgIGNsZWFyX2lubGluZV9mcmFtZV9zdGF0ZSAoY3Vycl90YXJnZXQsIHNjb3BlX3B0 aWQpOwogCiAgIGlmICh0YXJnZXRfY2FuX2FzeW5jX3AgKCkpCkBAIC0zODAyLDkgKzM4MDIs MTAgQEAgdGFyZ2V0X3Bhc3NfY3RybGMgKHZvaWQpCiAKICAgICAgIGZvciAodGhyZWFkX2lu Zm8gJnRociA6IGluZi0+bm9uX2V4aXRlZF90aHJlYWRzICgpKQogCXsKLQkgIC8qIEEgdGhy ZWFkIGNhbiBiZSBUSFJFQURfU1RPUFBFRCBhbmQgZXhlY3V0aW5nLCB3aGlsZQotCSAgICAg cnVubmluZyBhbiBpbmZjYWxsLiAgKi8KLQkgIGlmICh0aHIuc3RhdGUgPT0gVEhSRUFEX1JV Tk5JTkcgfHwgdGhyLmV4ZWN1dGluZyAoKSkKKwkgIC8qIEEgdGhyZWFkIGNhbiBiZSBleHRl cm5hbGx5IFRIUkVBRF9TVE9QUEVEIGFuZCBpbnRlcm5hbGx5CisJICAgICBUSFJFQURfSU5U X1JVTk5JTkcsIHdoaWxlIHJ1bm5pbmcgYW4gaW5mY2FsbC4gICovCisJICBpZiAodGhyLnN0 YXRlICgpID09IFRIUkVBRF9SVU5OSU5HCisJICAgICAgfHwgdGhyLmludGVybmFsX3N0YXRl ICgpID09IFRIUkVBRF9JTlRfUlVOTklORykKIAkgICAgewogCSAgICAgIC8qIFdlIGNhbiBn ZXQgaGVyZSBxdWl0ZSBkZWVwIGluIHRhcmdldCBsYXllcnMuICBBdm9pZAogCQkgc3dpdGNo aW5nIHRocmVhZCBjb250ZXh0IG9yIGFueXRoaW5nIHRoYXQgd291bGQKZGlmZiAtLWdpdCBh L2dkYi90aHJlYWQtaXRlci5oIGIvZ2RiL3RocmVhZC1pdGVyLmgKaW5kZXggY2FhZjcyMjBl MjcuLjNjMTVhZGExY2JiIDEwMDY0NAotLS0gYS9nZGIvdGhyZWFkLWl0ZXIuaAorKysgYi9n ZGIvdGhyZWFkLWl0ZXIuaApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0cnVjdCBub25fZXhpdGVk X3RocmVhZF9maWx0ZXIKIHsKICAgYm9vbCBvcGVyYXRvcigpIChzdHJ1Y3QgdGhyZWFkX2lu Zm8gJnRocikgY29uc3QKICAgewotICAgIHJldHVybiB0aHIuc3RhdGUgIT0gVEhSRUFEX0VY SVRFRDsKKyAgICByZXR1cm4gdGhyLnN0YXRlICgpICE9IFRIUkVBRF9FWElURUQ7CiAgIH0K IH07CiAKZGlmZiAtLWdpdCBhL2dkYi90aHJlYWQuYyBiL2dkYi90aHJlYWQuYwppbmRleCA5 NmUzYmI3YjUwZi4uYTZhZTJhNzUxMzkgMTAwNjQ0Ci0tLSBhL2dkYi90aHJlYWQuYworKysg Yi9nZGIvdGhyZWFkLmMKQEAgLTIyOCwyMyArMjI4LDEzIEBAIHNldF90aHJlYWRfZXhpdGVk ICh0aHJlYWRfaW5mbyAqdHAsIHN0ZDo6b3B0aW9uYWw8VUxPTkdFU1Q+IGV4aXRfY29kZSwK ICAgaWYgKHRocmVhZF9pc19pbl9zdGVwX292ZXJfY2hhaW4gKHRwKSkKICAgICBnbG9iYWxf dGhyZWFkX3N0ZXBfb3Zlcl9jaGFpbl9yZW1vdmUgKHRwKTsKIAotICBpZiAodHAtPnN0YXRl ICE9IFRIUkVBRF9FWElURUQpCisgIGlmICh0cC0+c3RhdGUgKCkgIT0gVEhSRUFEX0VYSVRF RCkKICAgICB7Ci0gICAgICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpwcm9jX3RhcmdldCA9 IHRwLT5pbmYtPnByb2Nlc3NfdGFyZ2V0ICgpOwotCi0gICAgICAvKiBTb21lIHRhcmdldHMg dW5wdXNoIHRoZW1zZWx2ZXMgZnJvbSB0aGUgaW5mZXJpb3IncyB0YXJnZXQgc3RhY2sgYmVm b3JlCi0JIGNsZWFyaW5nIHRoZSBpbmZlcmlvcidzIHRocmVhZCBsaXN0ICh3aGljaCBtYXJr cyBhbGwgdGhyZWFkcyBhcyBleGl0ZWQsCi0JIGFuZCB0aGVyZWZvcmUgbGVhZHMgdG8gdGhp cyBmdW5jdGlvbikuICBJbiB0aGlzIGNhc2UsIHRoZSBpbmZlcmlvcidzCi0JIHByb2Nlc3Mg dGFyZ2V0IHdpbGwgYmUgbnVsbHB0ciB3aGVuIHdlIGFycml2ZSBoZXJlLgotCi0JIFNlZSBh bHNvIHRoZSBjb21tZW50IGluIGluZmVyaW9yOjp1bnB1c2hfdGFyZ2V0LiAgKi8KLSAgICAg IGlmIChwcm9jX3RhcmdldCAhPSBudWxscHRyKQotCXByb2NfdGFyZ2V0LT5tYXliZV9yZW1v dmVfcmVzdW1lZF93aXRoX3BlbmRpbmdfd2FpdF9zdGF0dXMgKHRwKTsKLQogICAgICAgbm90 aWZ5X3RocmVhZF9leGl0ZWQgKHRwLCBleGl0X2NvZGUsIHNpbGVudCk7CiAKICAgICAgIC8q IFRhZyBpdCBhcyBleGl0ZWQuICAqLwotICAgICAgdHAtPnN0YXRlID0gVEhSRUFEX0VYSVRF RDsKKyAgICAgIHRwLT5zZXRfc3RhdGUgKFRIUkVBRF9FWElURUQpOworICAgICAgdHAtPnNl dF9pbnRlcm5hbF9zdGF0ZSAoVEhSRUFEX0lOVF9FWElURUQpOwogCiAgICAgICAvKiBDbGVh ciBicmVha3BvaW50cywgZXRjLiBhc3NvY2lhdGVkIHdpdGggdGhpcyB0aHJlYWQuICAqLwog ICAgICAgY2xlYXJfdGhyZWFkX2luZmVyaW9yX3Jlc291cmNlcyAodHApOwpAQCAtMzc5LDM0 ICszNjksNTAgQEAgdGhyZWFkX2luZm86OmRlbGV0YWJsZSAoKSBjb25zdAogLyogU2VlIGdk YnRocmVhZC5oLiAgKi8KIAogdm9pZAotdGhyZWFkX2luZm86OnNldF9leGVjdXRpbmcgKGJv b2wgZXhlY3V0aW5nKQotewotICBtX2V4ZWN1dGluZyA9IGV4ZWN1dGluZzsKLSAgaWYgKGV4 ZWN1dGluZykKLSAgICB0aGlzLT5jbGVhcl9zdG9wX3BjICgpOwotfQotCi0vKiBTZWUgZ2Ri dGhyZWFkLmguICAqLwotCi12b2lkCi10aHJlYWRfaW5mbzo6c2V0X3Jlc3VtZWQgKGJvb2wg cmVzdW1lZCkKK3RocmVhZF9pbmZvOjpzZXRfaW50ZXJuYWxfc3RhdGUgKHRocmVhZF9pbnRf c3RhdGUgc3RhdGUpCiB7Ci0gIGlmIChyZXN1bWVkID09IG1fcmVzdW1lZCkKKyAgaWYgKG1f aW50ZXJuYWxfc3RhdGUgPT0gc3RhdGUpCiAgICAgcmV0dXJuOwogCi0gIHByb2Nlc3Nfc3Ry YXR1bV90YXJnZXQgKnByb2NfdGFyZ2V0ID0gdGhpcy0+aW5mLT5wcm9jZXNzX3RhcmdldCAo KTsKLQotICAvKiBJZiB3ZSB0cmFuc2l0aW9uIGZyb20gcmVzdW1lZCB0byBub3QgcmVzdW1l ZCwgd2UgbWlnaHQgbmVlZCB0byByZW1vdmUKLSAgICAgdGhlIHRocmVhZCBmcm9tIHRoZSBy ZXN1bWVkIHRocmVhZHMgd2l0aCBwZW5kaW5nIHN0YXR1c2VzIGxpc3QuICAqLwotICBpZiAo IXJlc3VtZWQpCi0gICAgcHJvY190YXJnZXQtPm1heWJlX3JlbW92ZV9yZXN1bWVkX3dpdGhf cGVuZGluZ193YWl0X3N0YXR1cyAodGhpcyk7CisgIGlmIChzdGF0ZSA9PSBUSFJFQURfSU5U X1JVTk5JTkcpCisgICAgdGhpcy0+Y2xlYXJfc3RvcF9wYyAoKTsKIAotICBtX3Jlc3VtZWQg PSByZXN1bWVkOworICBpZiAoc3RhdGUgPT0gVEhSRUFEX0lOVF9SRVNVTUVEX1BFTkRJTkdf U1RBVFVTKQorICAgIGdkYl9hc3NlcnQgKHRoaXMtPmhhc19wZW5kaW5nX3dhaXRzdGF0dXMg KCkpOworICBlbHNlIGlmIChzdGF0ZSA9PSBUSFJFQURfSU5UX1JVTk5JTkcpCisgICAgZ2Ri X2Fzc2VydCAoIXRoaXMtPmhhc19wZW5kaW5nX3dhaXRzdGF0dXMgKCkpOwogCi0gIC8qIElm IHdlIHRyYW5zaXRpb24gZnJvbSBub3QgcmVzdW1lZCB0byByZXN1bWVkLCB3ZSBtaWdodCBu ZWVkIHRvIGFkZAorICAvKiBJZiB3ZSB0cmFuc2l0aW9uIGZyb20gcmVzdW1lZC1wZW5kaW5n LXN0YXR1cyB0byBhbm90aGVyIHN0YXRlLCB3ZQorICAgICBtaWdodCBuZWVkIHRvIHJlbW92 ZSB0aGUgdGhyZWFkIGZyb20gdGhlIHJlc3VtZWQgdGhyZWFkcyB3aXRoCisgICAgIHBlbmRp bmcgc3RhdHVzZXMgbGlzdC4gIENvbnZlcnNlbHksIGlmIHdlIHRyYW5zaXRpb24gdG8KKyAg ICAgcmVzdW1lZC1wZW5kaW5nLXN0YXR1cyBmcm9tIGFub3RoZXIgc3RhdGUsIHdlIG1pZ2h0 IG5lZWQgdG8gYWRkCiAgICAgIHRoZSB0aHJlYWQgdG8gdGhlIHJlc3VtZWQgdGhyZWFkcyB3 aXRoIHBlbmRpbmcgc3RhdHVzZXMgbGlzdC4gICovCi0gIGlmIChyZXN1bWVkKQotICAgIHBy b2NfdGFyZ2V0LT5tYXliZV9hZGRfcmVzdW1lZF93aXRoX3BlbmRpbmdfd2FpdF9zdGF0dXMg KHRoaXMpOworICBpZiAoc3RhdGUgPT0gVEhSRUFEX0lOVF9SRVNVTUVEX1BFTkRJTkdfU1RB VFVTCisgICAgICB8fCBtX2ludGVybmFsX3N0YXRlID09IFRIUkVBRF9JTlRfUkVTVU1FRF9Q RU5ESU5HX1NUQVRVUykKKyAgICB7CisgICAgICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICpw cm9jX3RhcmdldCA9IHRoaXMtPmluZi0+cHJvY2Vzc190YXJnZXQgKCk7CisKKyAgICAgIC8q IFdlIG5lZWQgdGhlIHByb2NfdGFyZ2V0IE5VTEwgY2hlY2tzIGJlbG93LCBiZWNhdXNlIHNv bWUKKwkgdGFyZ2V0cyB1bnB1c2ggdGhlbXNlbHZlcyBmcm9tIHRoZSBpbmZlcmlvcidzIHRh cmdldCBzdGFjaworCSBiZWZvcmUgY2xlYXJpbmcgdGhlIGluZmVyaW9yJ3MgdGhyZWFkIGxp c3QgKHdoaWNoIG1hcmtzIGFsbAorCSB0aHJlYWRzIGFzIGV4aXRlZCwgYW5kIHRoZXJlZm9y ZSBsZWFkcyB0byB0aGlzIGZ1bmN0aW9uKS4gIEluCisJIHRoaXMgY2FzZSwgdGhlIGluZmVy aW9yJ3MgcHJvY2VzcyB0YXJnZXQgd2lsbCBiZSBudWxscHRyIHdoZW4KKwkgd2UgYXJyaXZl IGhlcmUuICBTZWUgYWxzbyB0aGUgY29tbWVudCBpbgorCSBpbmZlcmlvcjo6dW5wdXNoX3Rh cmdldC4gICovCisKKyAgICAgIGlmIChzdGF0ZSAhPSBUSFJFQURfSU5UX1JFU1VNRURfUEVO RElOR19TVEFUVVMgJiYgcHJvY190YXJnZXQgIT0gbnVsbHB0cikKKwlwcm9jX3RhcmdldC0+ bWF5YmVfcmVtb3ZlX3Jlc3VtZWRfd2l0aF9wZW5kaW5nX3dhaXRfc3RhdHVzICh0aGlzKTsK KworICAgICAgLyogTm90ZSBtYXliZV9yZW1vdmVfcmVzdW1lZF93aXRoX3BlbmRpbmdfd2Fp dF9zdGF0dXMgaW50ZXJuYWxseQorCSByZWFkcyB0aGlzIHN0YXRlLiAgVGh1cyBpdCBtdXN0 IGJlIHVwZGF0ZWQgYWZ0ZXIgdGhlIGNhbGwKKwkgYWJvdmUsIGFuZCBiZWZvcmUgdGhlIGNh bGwgYmVsb3cuICAqLworICAgICAgbV9pbnRlcm5hbF9zdGF0ZSA9IHN0YXRlOworCisgICAg ICBpZiAoc3RhdGUgPT0gVEhSRUFEX0lOVF9SRVNVTUVEX1BFTkRJTkdfU1RBVFVTICYmIHBy b2NfdGFyZ2V0ICE9IG51bGxwdHIpCisJcHJvY190YXJnZXQtPm1heWJlX2FkZF9yZXN1bWVk X3dpdGhfcGVuZGluZ193YWl0X3N0YXR1cyAodGhpcyk7CisgICAgfQorICBlbHNlCisgICAg bV9pbnRlcm5hbF9zdGF0ZSA9IHN0YXRlOwogfQogCiAvKiBTZWUgZ2RidGhyZWFkLmguICAq LwpAQCAtNDE1LDEyICs0MjEsMTMgQEAgdm9pZAogdGhyZWFkX2luZm86OnNldF9wZW5kaW5n X3dhaXRzdGF0dXMgKGNvbnN0IHRhcmdldF93YWl0c3RhdHVzICZ3cykKIHsKICAgZ2RiX2Fz c2VydCAoIXRoaXMtPmhhc19wZW5kaW5nX3dhaXRzdGF0dXMgKCkpOworICAvKiBEb2Vzbid0 IG1ha2Ugc2Vuc2UgdG8gc2V0IGEgcGVuZGluZyBzdGF0dXMgb24gYW4gZXhpdGVkIG9yCisg ICAgIHJ1bm5pbmcgdGhyZWFkLiAgKi8KKyAgZ2RiX2Fzc2VydCAodGhpcy0+aW50ZXJuYWxf c3RhdGUgKCkgPT0gVEhSRUFEX0lOVF9TVE9QUEVECisJICAgICAgfHwgdGhpcy0+aW50ZXJu YWxfc3RhdGUgKCkgPT0gVEhSRUFEX0lOVF9SRVNVTUVEX1BFTkRJTkdfU1RBVFVTKTsKIAog ICBtX3N1c3BlbmQud2FpdHN0YXR1cyA9IHdzOwogICBtX3N1c3BlbmQud2FpdHN0YXR1c19w ZW5kaW5nX3AgPSAxOwotCi0gIHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnByb2NfdGFyZ2V0 ID0gdGhpcy0+aW5mLT5wcm9jZXNzX3RhcmdldCAoKTsKLSAgcHJvY190YXJnZXQtPm1heWJl X2FkZF9yZXN1bWVkX3dpdGhfcGVuZGluZ193YWl0X3N0YXR1cyAodGhpcyk7CiB9CiAKIC8q IFNlZSBnZGJ0aHJlYWQuaC4gICovCkBAIC00MzAsOSArNDM3LDYgQEAgdGhyZWFkX2luZm86 OmNsZWFyX3BlbmRpbmdfd2FpdHN0YXR1cyAoKQogewogICBnZGJfYXNzZXJ0ICh0aGlzLT5o YXNfcGVuZGluZ193YWl0c3RhdHVzICgpKTsKIAotICBwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0 ICpwcm9jX3RhcmdldCA9IHRoaXMtPmluZi0+cHJvY2Vzc190YXJnZXQgKCk7Ci0gIHByb2Nf dGFyZ2V0LT5tYXliZV9yZW1vdmVfcmVzdW1lZF93aXRoX3BlbmRpbmdfd2FpdF9zdGF0dXMg KHRoaXMpOwotCiAgIG1fc3VzcGVuZC53YWl0c3RhdHVzX3BlbmRpbmdfcCA9IDA7CiB9CiAK QEAgLTQ0MSw4ICs0NDUsOCBAQCB0aHJlYWRfaW5mbzo6Y2xlYXJfcGVuZGluZ193YWl0c3Rh dHVzICgpCiB2b2lkCiB0aHJlYWRfaW5mbzo6c2V0X3RocmVhZF9vcHRpb25zIChnZGJfdGhy ZWFkX29wdGlvbnMgdGhyZWFkX29wdGlvbnMpCiB7Ci0gIGdkYl9hc3NlcnQgKHRoaXMtPnN0 YXRlICE9IFRIUkVBRF9FWElURUQpOwotICBnZGJfYXNzZXJ0ICghdGhpcy0+ZXhlY3V0aW5n ICgpKTsKKyAgZ2RiX2Fzc2VydCAodGhpcy0+c3RhdGUgKCkgIT0gVEhSRUFEX0VYSVRFRCk7 CisgIGdkYl9hc3NlcnQgKHRoaXMtPmludGVybmFsX3N0YXRlICgpID09IFRIUkVBRF9JTlRf U1RPUFBFRCk7CiAKICAgaWYgKG1fdGhyZWFkX29wdGlvbnMgPT0gdGhyZWFkX29wdGlvbnMp CiAgICAgcmV0dXJuOwpAQCAtNjg4LDMwICs2OTIsMzAgQEAgYW55X3RocmVhZF9vZl9pbmZl cmlvciAoaW5mZXJpb3IgKmluZikKIHRocmVhZF9pbmZvICoKIGFueV9saXZlX3RocmVhZF9v Zl9pbmZlcmlvciAoaW5mZXJpb3IgKmluZikKIHsKLSAgc3RydWN0IHRocmVhZF9pbmZvICpj dXJyX3RwID0gTlVMTDsKLSAgc3RydWN0IHRocmVhZF9pbmZvICp0cF9leGVjdXRpbmcgPSBO VUxMOworICB0aHJlYWRfaW5mbyAqY3Vycl90cCA9IE5VTEw7CisgIHRocmVhZF9pbmZvICp0 cF9ydW5uaW5nID0gTlVMTDsKIAogICBnZGJfYXNzZXJ0IChpbmYgIT0gTlVMTCAmJiBpbmYt PnBpZCAhPSAwKTsKIAotICAvKiBQcmVmZXIgdGhlIGN1cnJlbnQgdGhyZWFkIGlmIGl0J3Mg bm90IGV4ZWN1dGluZy4gICovCisgIC8qIFByZWZlciB0aGUgY3VycmVudCB0aHJlYWQgaWYg aXQncyBzdG9wcGVkLiAgKi8KICAgaWYgKGluZmVyaW9yX3B0aWQgIT0gbnVsbF9wdGlkICYm IGN1cnJlbnRfaW5mZXJpb3IgKCkgPT0gaW5mKQogICAgIHsKLSAgICAgIC8qIElmIHRoZSBj dXJyZW50IHRocmVhZCBpcyBkZWFkLCBmb3JnZXQgaXQuICBJZiBpdCdzIG5vdAotCSBleGVj dXRpbmcsIHVzZSBpdC4gIE90aGVyd2lzZSwgc3RpbGwgY2hvb3NlIGl0IChiZWxvdyksIGJ1 dAotCSBvbmx5IGlmIG5vIG90aGVyIG5vbi1leGVjdXRpbmcgdGhyZWFkIGlzIGZvdW5kLiAg Ki8KKyAgICAgIC8qIElmIHRoZSBjdXJyZW50IHRocmVhZCBpcyBkZWFkLCBmb3JnZXQgaXQu ICBJZiBpdCdzIHN0b3BwZWQsCisJIHVzZSBpdC4gIE90aGVyd2lzZSwgc3RpbGwgY2hvb3Nl IGl0IChiZWxvdyksIGJ1dCBvbmx5IGlmIG5vCisJIG90aGVyIHJ1bm5pbmcgdGhyZWFkIGlz IGZvdW5kLiAgKi8KICAgICAgIGN1cnJfdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7Ci0gICAg ICBpZiAoY3Vycl90cC0+c3RhdGUgPT0gVEhSRUFEX0VYSVRFRCkKKyAgICAgIGlmIChjdXJy X3RwLT5pbnRlcm5hbF9zdGF0ZSAoKSA9PSBUSFJFQURfSU5UX0VYSVRFRCkKIAljdXJyX3Rw ID0gTlVMTDsKLSAgICAgIGVsc2UgaWYgKCFjdXJyX3RwLT5leGVjdXRpbmcgKCkpCisgICAg ICBlbHNlIGlmIChjdXJyX3RwLT5pbnRlcm5hbF9zdGF0ZSAoKSAhPSBUSFJFQURfSU5UX1JV Tk5JTkcpCiAJcmV0dXJuIGN1cnJfdHA7CiAgICAgfQogCiAgIGZvciAodGhyZWFkX2luZm8g JnRwIDogaW5mLT5ub25fZXhpdGVkX3RocmVhZHMgKCkpCiAgICAgewotICAgICAgaWYgKCF0 cC5leGVjdXRpbmcgKCkpCisgICAgICBpZiAodHAuaW50ZXJuYWxfc3RhdGUgKCkgIT0gVEhS RUFEX0lOVF9SVU5OSU5HKQogCXJldHVybiAmdHA7CiAKLSAgICAgIHRwX2V4ZWN1dGluZyA9 ICZ0cDsKKyAgICAgIHRwX3J1bm5pbmcgPSAmdHA7CiAgICAgfQogCiAgIC8qIElmIGJvdGgg dGhlIGN1cnJlbnQgdGhyZWFkIGFuZCBhbGwgbGl2ZSB0aHJlYWRzIGFyZSBleGVjdXRpbmcs CkBAIC03MTksMTUgKzcyMywxNSBAQCBhbnlfbGl2ZV90aHJlYWRfb2ZfaW5mZXJpb3IgKGlu ZmVyaW9yICppbmYpCiAgIGlmIChjdXJyX3RwICE9IE5VTEwpCiAgICAgcmV0dXJuIGN1cnJf dHA7CiAKLSAgLyogT3RoZXJ3aXNlLCBqdXN0IHJldHVybiBhbiBleGVjdXRpbmcgdGhyZWFk LCBpZiBhbnkuICAqLwotICByZXR1cm4gdHBfZXhlY3V0aW5nOworICAvKiBPdGhlcndpc2Us IGp1c3QgcmV0dXJuIGEgcnVubmluZyB0aHJlYWQsIGlmIGFueS4gICovCisgIHJldHVybiB0 cF9ydW5uaW5nOwogfQogCiAvKiBSZXR1cm4gdHJ1ZSBpZiBUUCBpcyBhbiBhY3RpdmUgdGhy ZWFkLiAgKi8KIHN0YXRpYyBib29sCiB0aHJlYWRfYWxpdmUgKHRocmVhZF9pbmZvICp0cCkK IHsKLSAgaWYgKHRwLT5zdGF0ZSA9PSBUSFJFQURfRVhJVEVEKQorICBpZiAodHAtPnN0YXRl ICgpID09IFRIUkVBRF9FWElURUQpCiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIC8qIEVuc3Vy ZSB3ZSdyZSBsb29raW5nIGF0IHRoZSByaWdodCB0YXJnZXQgc3RhY2suICAqLwpAQCAtNzc5 LDcgKzc4Myw3IEBAIHZvaWQKIGRlbGV0ZV9leGl0ZWRfdGhyZWFkcyAodm9pZCkKIHsKICAg Zm9yICh0aHJlYWRfaW5mbyAmdHAgOiBhbGxfdGhyZWFkc19zYWZlICgpKQotICAgIGlmICh0 cC5zdGF0ZSA9PSBUSFJFQURfRVhJVEVEKQorICAgIGlmICh0cC5zdGF0ZSAoKSA9PSBUSFJF QURfRVhJVEVEKQogICAgICAgZGVsZXRlX3RocmVhZCAoJnRwKTsKIH0KIApAQCAtODU4LDQz ICs4NjIsNiBAQCB0aHJlYWRfY2hhbmdlX3B0aWQgKHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQg KnRhcmcsCiAgIGdkYjo6b2JzZXJ2ZXJzOjp0aHJlYWRfcHRpZF9jaGFuZ2VkLm5vdGlmeSAo dGFyZywgb2xkX3B0aWQsIG5ld19wdGlkKTsKIH0KIAotLyogU2VlIGdkYnRocmVhZC5oLiAg Ki8KLQotdm9pZAotc2V0X3Jlc3VtZWQgKHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnRhcmcs IHB0aWRfdCBwdGlkLCBib29sIHJlc3VtZWQpCi17Ci0gIGZvciAodGhyZWFkX2luZm8gJnRw IDogYWxsX25vbl9leGl0ZWRfdGhyZWFkcyAodGFyZywgcHRpZCkpCi0gICAgdHAuc2V0X3Jl c3VtZWQgKHJlc3VtZWQpOwotfQotCi0vKiBIZWxwZXIgZm9yIHNldF9ydW5uaW5nLCB0aGF0 IG1hcmtzIG9uZSB0aHJlYWQgZWl0aGVyIHJ1bm5pbmcgb3IKLSAgIHN0b3BwZWQuICAqLwot Ci1zdGF0aWMgYm9vbAotc2V0X3J1bm5pbmdfdGhyZWFkIChzdHJ1Y3QgdGhyZWFkX2luZm8g KnRwLCBib29sIHJ1bm5pbmcpCi17Ci0gIGJvb2wgc3RhcnRlZCA9IGZhbHNlOwotCi0gIGlm IChydW5uaW5nICYmIHRwLT5zdGF0ZSA9PSBUSFJFQURfU1RPUFBFRCkKLSAgICBzdGFydGVk ID0gdHJ1ZTsKLSAgdHAtPnN0YXRlID0gcnVubmluZyA/IFRIUkVBRF9SVU5OSU5HIDogVEhS RUFEX1NUT1BQRUQ7Ci0KLSAgdGhyZWFkc19kZWJ1Z19wcmludGYgKCJ0aHJlYWQ6ICVzLCBy dW5uaW5nPyAlZCVzIiwKLQkJCXRwLT5wdGlkLnRvX3N0cmluZyAoKS5jX3N0ciAoKSwgcnVu bmluZywKLQkJCShzdGFydGVkID8gIiAoc3RhcnRlZCkiIDogIiIpKTsKLQotICBpZiAoIXJ1 bm5pbmcpCi0gICAgewotICAgICAgLyogSWYgdGhlIHRocmVhZCBpcyBub3cgbWFya2VkIHN0 b3BwZWQsIHJlbW92ZSBpdCBmcm9tCi0JIHRoZSBzdGVwLW92ZXIgcXVldWUsIHNvIHRoYXQg d2UgZG9uJ3QgdHJ5IHRvIHJlc3VtZQotCSBpdCB1bnRpbCB0aGUgdXNlciB3YW50cyBpdCB0 by4gICovCi0gICAgICBpZiAodGhyZWFkX2lzX2luX3N0ZXBfb3Zlcl9jaGFpbiAodHApKQot CWdsb2JhbF90aHJlYWRfc3RlcF9vdmVyX2NoYWluX3JlbW92ZSAodHApOwotICAgIH0KLQot ICByZXR1cm4gc3RhcnRlZDsKLX0KLQogLyogTm90aWZ5IGludGVycHJldGVycyBhbmQgb2Jz ZXJ2ZXJzIHRoYXQgdGhlIHRhcmdldCB3YXMgcmVzdW1lZC4gICovCiAKIHN0YXRpYyB2b2lk CkBAIC05MTEsNDEgKzg3OCw3MyBAQCBub3RpZnlfdGFyZ2V0X3Jlc3VtZWQgKHB0aWRfdCBw dGlkKQogCiAvKiBTZWUgZ2RidGhyZWFkLmguICAqLwogCi12b2lkCi10aHJlYWRfaW5mbzo6 c2V0X3J1bm5pbmcgKGJvb2wgcnVubmluZykKK3RocmVhZF9zdGF0ZQordGhyZWFkX2luZm86 OnNldF9zdGF0ZSAodGhyZWFkX3N0YXRlIHN0YXRlLAorCQkJYm9vbCBzdXBwcmVzc19ub3Rp ZmljYXRpb24pCiB7Ci0gIGlmIChzZXRfcnVubmluZ190aHJlYWQgKHRoaXMsIHJ1bm5pbmcp KQotICAgIG5vdGlmeV90YXJnZXRfcmVzdW1lZCAodGhpcy0+cHRpZCk7CisgIHRocmVhZF9z dGF0ZSBwcmV2X3N0YXRlID0gbV9zdGF0ZTsKKworICBpZiAocHJldl9zdGF0ZSA9PSBzdGF0 ZSkKKyAgICByZXR1cm4gcHJldl9zdGF0ZTsKKworICB0aHJlYWRzX2RlYnVnX3ByaW50ZiAo InRocmVhZDogJXMsICVzIC0+ICVzIiwKKwkJCXRoaXMtPnB0aWQudG9fc3RyaW5nICgpLmNf c3RyICgpLAorCQkJdGhyZWFkX3N0YXRlX3N0cmluZyAobV9zdGF0ZSksCisJCQl0aHJlYWRf c3RhdGVfc3RyaW5nIChzdGF0ZSkpOworCisgIG1fc3RhdGUgPSBzdGF0ZTsKKworICBzd2l0 Y2ggKG1fc3RhdGUpCisgICAgeworICAgIGNhc2UgVEhSRUFEX0VYSVRFRDoKKyAgICAgIGJy ZWFrOworCisgICAgY2FzZSBUSFJFQURfU1RPUFBFRDoKKyAgICAgIC8qIElmIHRoZSB0aHJl YWQgaXMgbm93IG1hcmtlZCBzdG9wcGVkLCByZW1vdmUgaXQgZnJvbQorCSB0aGUgc3RlcC1v dmVyIHF1ZXVlLCBzbyB0aGF0IHdlIGRvbid0IHRyeSB0byByZXN1bWUKKwkgaXQgdW50aWwg dGhlIHVzZXIgd2FudHMgaXQgdG8uICAqLworICAgICAgaWYgKHRocmVhZF9pc19pbl9zdGVw X292ZXJfY2hhaW4gKHRoaXMpKQorCWdsb2JhbF90aHJlYWRfc3RlcF9vdmVyX2NoYWluX3Jl bW92ZSAodGhpcyk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgVEhSRUFEX1JVTk5JTkc6 CisgICAgICBpZiAoIXN1cHByZXNzX25vdGlmaWNhdGlvbikKKwlub3RpZnlfdGFyZ2V0X3Jl c3VtZWQgKHRoaXMtPnB0aWQpOworICAgICAgYnJlYWs7CisgICAgfQorCisgIHJldHVybiBw cmV2X3N0YXRlOwogfQogCiB2b2lkCi1zZXRfcnVubmluZyAocHJvY2Vzc19zdHJhdHVtX3Rh cmdldCAqdGFyZywgcHRpZF90IHB0aWQsIGJvb2wgcnVubmluZykKK3NldF9zdGF0ZSAocHJv Y2Vzc19zdHJhdHVtX3RhcmdldCAqdGFyZywgcHRpZF90IHB0aWQsIHRocmVhZF9zdGF0ZSBz dGF0ZSkKIHsKICAgLyogV2UgdHJ5IG5vdCB0byBub3RpZnkgdGhlIG9ic2VydmVyIGlmIG5v IHRocmVhZCBoYXMgYWN0dWFsbHkKLSAgICAgY2hhbmdlZCB0aGUgcnVubmluZyBzdGF0ZSAt LSBtZXJlbHkgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YKKyAgICAgY2hhbmdlZCBpdHMgcHVi bGljIHN0YXRlIC0tIG1lcmVseSB0byByZWR1Y2UgdGhlIG51bWJlciBvZgogICAgICBtZXNz YWdlcyB0byB0aGUgTUkgZnJvbnRlbmQuICBBIGZyb250ZW5kIGlzIHN1cHBvc2VkIHRvIGhh bmRsZQogICAgICBtdWx0aXBsZSAqcnVubmluZyBub3RpZmljYXRpb25zIGp1c3QgZmluZS4g ICovCi0gIGJvb2wgYW55X3N0YXJ0ZWQgPSBmYWxzZTsKKyAgYm9vbCBhbnlfY2hhbmdlZCA9 IGZhbHNlOwogCiAgIGZvciAodGhyZWFkX2luZm8gJnRwIDogYWxsX25vbl9leGl0ZWRfdGhy ZWFkcyAodGFyZywgcHRpZCkpCi0gICAgaWYgKHNldF9ydW5uaW5nX3RocmVhZCAoJnRwLCBy dW5uaW5nKSkKLSAgICAgIGFueV9zdGFydGVkID0gdHJ1ZTsKKyAgICBpZiAodHAuc2V0X3N0 YXRlIChzdGF0ZSwgdHJ1ZSkgIT0gc3RhdGUpCisgICAgICBhbnlfY2hhbmdlZCA9IHRydWU7 CiAKLSAgaWYgKGFueV9zdGFydGVkKQorICBpZiAoYW55X2NoYW5nZWQgJiYgc3RhdGUgPT0g VEhSRUFEX1JVTk5JTkcpCiAgICAgbm90aWZ5X3RhcmdldF9yZXN1bWVkIChwdGlkKTsKIH0K IAogdm9pZAotc2V0X2V4ZWN1dGluZyAocHJvY2Vzc19zdHJhdHVtX3RhcmdldCAqdGFyZywg cHRpZF90IHB0aWQsIGJvb2wgZXhlY3V0aW5nKQorc2V0X2ludGVybmFsX3N0YXRlIChwcm9j ZXNzX3N0cmF0dW1fdGFyZ2V0ICp0YXJnLCBwdGlkX3QgcHRpZCwKKwkJICAgIHRocmVhZF9p bnRfc3RhdGUgc3RhdGUpCiB7CiAgIGZvciAodGhyZWFkX2luZm8gJnRwIDogYWxsX25vbl9l eGl0ZWRfdGhyZWFkcyAodGFyZywgcHRpZCkpCi0gICAgdHAuc2V0X2V4ZWN1dGluZyAoZXhl Y3V0aW5nKTsKKyAgICB0cC5zZXRfaW50ZXJuYWxfc3RhdGUgKHN0YXRlKTsKIAogICAvKiBJ dCBvbmx5IHRha2VzIG9uZSBydW5uaW5nIHRocmVhZCB0byBzcGF3biBtb3JlIHRocmVhZHMu ICAqLwotICBpZiAoZXhlY3V0aW5nKQorICBpZiAoc3RhdGUgPT0gVEhSRUFEX0lOVF9SVU5O SU5HKQogICAgIHRhcmctPnRocmVhZHNfZXhlY3V0aW5nID0gdHJ1ZTsKICAgLyogT25seSBj bGVhciB0aGUgZmxhZyBpZiB0aGUgY2FsbGVyIGlzIHRlbGxpbmcgdXMgZXZlcnl0aGluZyBp cwotICAgICBzdG9wcGVkLiAgKi8KKyAgICAgc3RvcHBlZCBvciBkZWFkLiAgKi8KICAgZWxz ZSBpZiAobWludXNfb25lX3B0aWQgPT0gcHRpZCkKICAgICB0YXJnLT50aHJlYWRzX2V4ZWN1 dGluZyA9IGZhbHNlOwogfQpAQCAtOTcwLDE0ICs5NjksNDEgQEAgc2V0X3N0b3BfcmVxdWVz dGVkIChwcm9jZXNzX3N0cmF0dW1fdGFyZ2V0ICp0YXJnLCBwdGlkX3QgcHRpZCwgYm9vbCBz dG9wKQogICAgIGdkYjo6b2JzZXJ2ZXJzOjp0aHJlYWRfc3RvcF9yZXF1ZXN0ZWQubm90aWZ5 IChwdGlkKTsKIH0KIAorLyogTWFwIElOVF9TVEFURSB0byBhIHVzZXIgc3RhdGUuICAqLwor CitzdGF0aWMgdGhyZWFkX3N0YXRlCitzdGF0ZV9mcm9tX2ludF9zdGF0ZSAodGhyZWFkX2lu dF9zdGF0ZSBpbnRfc3RhdGUpCit7CisgIHN3aXRjaCAoaW50X3N0YXRlKQorICAgIHsKKyAg ICBjYXNlIFRIUkVBRF9JTlRfUlVOTklORzoKKyAgICBjYXNlIFRIUkVBRF9JTlRfUkVTVU1F RF9QRU5ESU5HX1NUQVRVUzoKKyAgICAgIHJldHVybiBUSFJFQURfUlVOTklORzsKKyAgICBj YXNlIFRIUkVBRF9JTlRfU1RPUFBFRDoKKyAgICAgIHJldHVybiBUSFJFQURfU1RPUFBFRDsK KyAgICBjYXNlIFRIUkVBRF9JTlRfRVhJVEVEOgorICAgICAgcmV0dXJuIFRIUkVBRF9FWElU RUQ7CisgICAgfQorCisgIGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJ1bmtub3duIHRocmVh ZF9pbnRfc3RhdGU6ICVkIiwgaW50X3N0YXRlKTsKK30KKworLyogU2VlIGdkYnRocmVhZC5o LiAgTm90ZSB0aGlzIGlzIGEgZnJpZW5kIG9mIHRocmVhZF9pbmZvIHNvIHRoYXQgaXQKKyAg IGNhbiBhY2Nlc3MgdGhlIHRocmVhZF9pbmZvOjpzZXRfc3RhdGUgb3ZlcmxvYWQgdGhhdCBs ZXRzIHVzCisgICBzdXBwcmVzcyB0aGUgdGFyZ2V0X3Jlc3VtZWQgbm90aWZpY2F0aW9uLiAg Ki8KKwogdm9pZAogZmluaXNoX3RocmVhZF9zdGF0ZSAocHJvY2Vzc19zdHJhdHVtX3Rhcmdl dCAqdGFyZywgcHRpZF90IHB0aWQpCiB7CiAgIGJvb2wgYW55X3N0YXJ0ZWQgPSBmYWxzZTsK IAogICBmb3IgKHRocmVhZF9pbmZvICZ0cCA6IGFsbF9ub25fZXhpdGVkX3RocmVhZHMgKHRh cmcsIHB0aWQpKQotICAgIGlmIChzZXRfcnVubmluZ190aHJlYWQgKCZ0cCwgdHAuZXhlY3V0 aW5nICgpKSkKLSAgICAgIGFueV9zdGFydGVkID0gdHJ1ZTsKKyAgICB7CisgICAgICB0aHJl YWRfc3RhdGUgbmV3X3N0YXRlID0gc3RhdGVfZnJvbV9pbnRfc3RhdGUgKHRwLmludGVybmFs X3N0YXRlICgpKTsKKyAgICAgIHRocmVhZF9zdGF0ZSBwcmV2X3N0YXRlID0gdHAuc2V0X3N0 YXRlIChuZXdfc3RhdGUsIHRydWUpOworICAgICAgaWYgKHByZXZfc3RhdGUgIT0gbmV3X3N0 YXRlICYmIG5ld19zdGF0ZSA9PSBUSFJFQURfUlVOTklORykKKwlhbnlfc3RhcnRlZCA9IHRy dWU7CisgICAgfQogCiAgIGlmIChhbnlfc3RhcnRlZCkKICAgICBub3RpZnlfdGFyZ2V0X3Jl c3VtZWQgKHB0aWQpOwpAQCAtOTk1LDcgKzEwMjEsNyBAQCB2YWxpZGF0ZV9yZWdpc3RlcnNf YWNjZXNzICh2b2lkKQogICB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7 CiAKICAgLyogRG9uJ3QgdHJ5IHRvIHJlYWQgZnJvbSBhIGRlYWQgdGhyZWFkLiAgKi8KLSAg aWYgKHRwLT5zdGF0ZSA9PSBUSFJFQURfRVhJVEVEKQorICBpZiAodHAtPnN0YXRlICgpID09 IFRIUkVBRF9FWElURUQpCiAgICAgZXJyb3IgKF8oIlRoZSBjdXJyZW50IHRocmVhZCBoYXMg dGVybWluYXRlZCIpKTsKIAogICAvKiAuLi4gb3IgZnJvbSBhIHNwaW5uaW5nIHRocmVhZC4g IEZJWE1FOiBUaGlzIGlzbid0IGFjdHVhbGx5IGZ1bGx5CkBAIC0xMDAzLDcgKzEwMjksNyBA QCB2YWxpZGF0ZV9yZWdpc3RlcnNfYWNjZXNzICh2b2lkKQogICAgICBhdCB0aGUgcHJvbXB0 KSB3aGVuIGEgdGhyZWFkIGlzIG5vdCBleGVjdXRpbmcgZm9yIHNvbWUgaW50ZXJuYWwKICAg ICAgcmVhc29uLCBidXQgaXMgbWFya2VkIHJ1bm5pbmcgZnJvbSB0aGUgdXNlcidzIHBlcnNw ZWN0aXZlLiAgRS5nLiwKICAgICAgdGhlIHRocmVhZCBpcyB3YWl0aW5nIGZvciBpdHMgdHVy biBpbiB0aGUgc3RlcC1vdmVyIHF1ZXVlLiAgKi8KLSAgaWYgKHRwLT5leGVjdXRpbmcgKCkp CisgIGlmICh0cC0+aW50ZXJuYWxfc3RhdGUgKCkgPT0gVEhSRUFEX0lOVF9SVU5OSU5HKQog ICAgIHsKICAgICAgIC8qIElmIHdlIGFyZSByZXBsYXlpbmcgd2l0aCB0aGUgcmVjb3JkLWZ1 bGwgc3Vic3lzdGVtLCBldmVuIHRob3VnaAogCSB0aGUgdGhyZWFkIGlzIGV4ZWN1dGluZywg aXQgaXMgYWx3YXlzIHNhZmUgdG8gcmVhZCBmcm9tIGl0IHNpbmNlCkBAIC0xMDIzLDExICsx MDQ5LDExIEBAIGNhbl9hY2Nlc3NfcmVnaXN0ZXJzX3RocmVhZCAodGhyZWFkX2luZm8gKnRo cmVhZCkKICAgICByZXR1cm4gZmFsc2U7CiAKICAgLyogRG9uJ3QgdHJ5IHRvIHJlYWQgZnJv bSBhIGRlYWQgdGhyZWFkLiAgKi8KLSAgaWYgKHRocmVhZC0+c3RhdGUgPT0gVEhSRUFEX0VY SVRFRCkKKyAgaWYgKHRocmVhZC0+c3RhdGUgKCkgPT0gVEhSRUFEX0VYSVRFRCkKICAgICBy ZXR1cm4gZmFsc2U7CiAKICAgLyogLi4uIG9yIGZyb20gYSBzcGlubmluZyB0aHJlYWQuICBG SVhNRTogc2VlIHZhbGlkYXRlX3JlZ2lzdGVyc19hY2Nlc3MuICAqLwotICBpZiAodGhyZWFk LT5leGVjdXRpbmcgKCkpCisgIGlmICh0aHJlYWQtPmludGVybmFsX3N0YXRlICgpID09IFRI UkVBRF9JTlRfUlVOTklORykKICAgICB7CiAgICAgICAvKiBTZWUgdmFsaWRhdGVfcmVnaXN0 ZXJzX2FjY2Vzcy4gICovCiAgICAgICBpZiAoIXJlY29yZF9mdWxsX2lzX3JlcGxheWluZyAo KSkKQEAgLTExMTEsMTQgKzExMzcsMTQgQEAgc2hvdWxkX3ByaW50X3RocmVhZCAoY29uc3Qg Y2hhciAqcmVxdWVzdGVkX3RocmVhZHMsCiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog Ci0gIGlmICh0aHItPnN0YXRlID09IFRIUkVBRF9FWElURUQpCisgIGlmICh0aHItPnN0YXRl ICgpID09IFRIUkVBRF9FWElURUQpCiAgICAgcmV0dXJuIGZhbHNlOwogCi0gIGJvb2wgaXNf c3RvcHBlZCA9ICh0aHItPnN0YXRlID09IFRIUkVBRF9TVE9QUEVEKTsKKyAgYm9vbCBpc19z dG9wcGVkID0gKHRoci0+c3RhdGUgKCkgPT0gVEhSRUFEX1NUT1BQRUQpOwogICBpZiAob3B0 cy5zaG93X3N0b3BwZWRfdGhyZWFkcyAmJiBpc19zdG9wcGVkKQogICAgIHJldHVybiB0cnVl OwogCi0gIGJvb2wgaXNfcnVubmluZyA9ICh0aHItPnN0YXRlID09IFRIUkVBRF9SVU5OSU5H KTsKKyAgYm9vbCBpc19ydW5uaW5nID0gKHRoci0+c3RhdGUgKCkgPT0gVEhSRUFEX1JVTk5J TkcpOwogICBpZiAob3B0cy5zaG93X3J1bm5pbmdfdGhyZWFkcyAmJiBpc19ydW5uaW5nKQog ICAgIHJldHVybiB0cnVlOwogCkBAIC0xMjA5LDcgKzEyMzUsNyBAQCBkb19wcmludF90aHJl YWQgKHVpX291dCAqdWlvdXQsIGNvbnN0IGNoYXIgKnJlcXVlc3RlZF90aHJlYWRzLAogICAg ICAgdWlvdXQtPmZpZWxkX3N0cmluZyAoInRhcmdldC1pZCIsIHRocmVhZF90YXJnZXRfaWRf c3RyICh0cCkpOwogICAgIH0KIAotICBpZiAodHAtPnN0YXRlID09IFRIUkVBRF9SVU5OSU5H KQorICBpZiAodHAtPnN0YXRlICgpID09IFRIUkVBRF9SVU5OSU5HKQogICAgIHVpb3V0LT50 ZXh0ICgiKHJ1bm5pbmcpXG4iKTsKICAgZWxzZQogICAgIHsKQEAgLTEyMjUsNyArMTI1MSw3 IEBAIGRvX3ByaW50X3RocmVhZCAodWlfb3V0ICp1aW91dCwgY29uc3QgY2hhciAqcmVxdWVz dGVkX3RocmVhZHMsCiAgICAgewogICAgICAgY29uc3QgY2hhciAqc3RhdGUgPSAic3RvcHBl ZCI7CiAKLSAgICAgIGlmICh0cC0+c3RhdGUgPT0gVEhSRUFEX1JVTk5JTkcpCisgICAgICBp ZiAodHAtPnN0YXRlICgpID09IFRIUkVBRF9SVU5OSU5HKQogCXN0YXRlID0gInJ1bm5pbmci OwogICAgICAgdWlvdXQtPmZpZWxkX3N0cmluZyAoInN0YXRlIiwgc3RhdGUpOwogICAgIH0K QEAgLTEzMzYsNyArMTM2Miw3IEBAIHByaW50X3RocmVhZF9pbmZvXzEgKHN0cnVjdCB1aV9v dXQgKnVpb3V0LCBjb25zdCBjaGFyICpyZXF1ZXN0ZWRfdGhyZWFkcywKICAgICBmb3IgKGlu ZmVyaW9yICppbmYgOiBhbGxfaW5mZXJpb3JzICgpKQogICAgICAgZm9yICh0aHJlYWRfaW5m byAmdHAgOiBpbmYtPnRocmVhZHMgKCkpCiAJewotCSAgaWYgKCZ0cCA9PSBjdXJyZW50X3Ro cmVhZCAmJiB0cC5zdGF0ZSA9PSBUSFJFQURfRVhJVEVEKQorCSAgaWYgKCZ0cCA9PSBjdXJy ZW50X3RocmVhZCAmJiB0cC5zdGF0ZSAoKSA9PSBUSFJFQURfRVhJVEVEKQogCSAgICBjdXJy ZW50X2V4aXRlZCA9IHRydWU7CiAKIAkgIHByaW50X3RocmVhZCAodWlvdXQsIHJlcXVlc3Rl ZF90aHJlYWRzLCBvcHRzLCBnbG9iYWxfaWRzLCBwaWQsCkBAIC0xNTAxLDcgKzE1MjcsNyBA QCBzY29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZDo6cmVzdG9yZSAoKQogICAgICBjaGFu Z2VkLCBzbyB3ZSBoYXZlIHRvIHJlY2hlY2sgaXQgaGVyZS4gICovCiAgIGlmIChpbmZlcmlv cl9wdGlkICE9IG51bGxfcHRpZAogICAgICAgJiYgbV93YXNfc3RvcHBlZAotICAgICAgJiYg bV90aHJlYWQtPnN0YXRlID09IFRIUkVBRF9TVE9QUEVECisgICAgICAmJiBtX3RocmVhZC0+ c3RhdGUgKCkgPT0gVEhSRUFEX1NUT1BQRUQKICAgICAgICYmIHRhcmdldF9oYXNfcmVnaXN0 ZXJzICgpCiAgICAgICAmJiB0YXJnZXRfaGFzX3N0YWNrICgpCiAgICAgICAmJiB0YXJnZXRf aGFzX21lbW9yeSAoKSkKQEAgLTE1MjQsNyArMTU1MCw3IEBAIHNjb3BlZF9yZXN0b3JlX2N1 cnJlbnRfdGhyZWFkOjpzY29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZCAoKQogICAgIHsK ICAgICAgIG1fdGhyZWFkID0gdGhyZWFkX2luZm9fcmVmOjpuZXdfcmVmZXJlbmNlIChpbmZl cmlvcl90aHJlYWQgKCkpOwogCi0gICAgICBtX3dhc19zdG9wcGVkID0gbV90aHJlYWQtPnN0 YXRlID09IFRIUkVBRF9TVE9QUEVEOworICAgICAgbV93YXNfc3RvcHBlZCA9IG1fdGhyZWFk LT5zdGF0ZSAoKSA9PSBUSFJFQURfU1RPUFBFRDsKICAgICAgIHNhdmVfc2VsZWN0ZWRfZnJh bWUgKCZtX3NlbGVjdGVkX2ZyYW1lX2lkLCAmbV9zZWxlY3RlZF9mcmFtZV9sZXZlbCk7CiAg ICAgfQogfQpAQCAtMTk3MCw3ICsxOTk2LDcgQEAgdGhyZWFkX2NvbW1hbmQgKGNvbnN0IGNo YXIgKnRpZHN0ciwgaW50IGZyb21fdHR5KQogCXsKIAkgIHN0cnVjdCB0aHJlYWRfaW5mbyAq dHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7CiAKLQkgIGlmICh0cC0+c3RhdGUgPT0gVEhSRUFE X0VYSVRFRCkKKwkgIGlmICh0cC0+c3RhdGUgKCkgPT0gVEhSRUFEX0VYSVRFRCkKIAkgICAg Z2RiX3ByaW50ZiAoXygiW0N1cnJlbnQgdGhyZWFkIGlzICVzICglcykgKGV4aXRlZCldXG4i KSwKIAkJCXByaW50X3RocmVhZF9pZCAodHApLAogCQkJdGFyZ2V0X3BpZF90b19zdHIgKGlu ZmVyaW9yX3B0aWQpLmNfc3RyICgpKTsKQEAgLTIxMTUsNyArMjE0MSw3IEBAIHByaW50X3Nl bGVjdGVkX3RocmVhZF9mcmFtZSAoc3RydWN0IHVpX291dCAqdWlvdXQsCiAJfQogICAgIH0K IAotICBpZiAodHAtPnN0YXRlID09IFRIUkVBRF9SVU5OSU5HKQorICBpZiAodHAtPnN0YXRl ICgpID09IFRIUkVBRF9SVU5OSU5HKQogICAgIHsKICAgICAgIGlmIChzZWxlY3Rpb24gJiBV U0VSX1NFTEVDVEVEX1RIUkVBRCkKIAl1aW91dC0+dGV4dCAoIihydW5uaW5nKVxuIik7CkBA IC0yMTYwLDcgKzIxODYsNyBAQCB1cGRhdGVfdGhyZWFkc19leGVjdXRpbmcgKHZvaWQpCiAK ICAgICAgIGZvciAodGhyZWFkX2luZm8gJnRwIDogaW5mLT5ub25fZXhpdGVkX3RocmVhZHMg KCkpCiAJewotCSAgaWYgKHRwLmV4ZWN1dGluZyAoKSkKKwkgIGlmICh0cC5pbnRlcm5hbF9z dGF0ZSAoKSA9PSBUSFJFQURfSU5UX1JVTk5JTkcpCiAJICAgIHsKIAkgICAgICB0YXJnLT50 aHJlYWRzX2V4ZWN1dGluZyA9IHRydWU7CiAJICAgICAgcmV0dXJuOwpAQCAtMjIxNCw2ICsy MjQwLDI5IEBAIHRocmVhZF9zdGF0ZV9zdHJpbmcgKGVudW0gdGhyZWFkX3N0YXRlIHN0YXRl KQogICBnZGJfYXNzZXJ0X25vdF9yZWFjaGVkICgidW5rbm93biB0aHJlYWQgc3RhdGUiKTsK IH0KIAorLyogU2VlIGdkYnRocmVhZC5oLiAgKi8KKworY29uc3QgY2hhciAqCit0aHJlYWRf aW50X3N0YXRlX3N0cmluZyAodGhyZWFkX2ludF9zdGF0ZSBzdGF0ZSkKK3sKKyAgc3dpdGNo IChzdGF0ZSkKKyAgICB7CisgICAgY2FzZSBUSFJFQURfSU5UX1NUT1BQRUQ6CisgICAgICBy ZXR1cm4gIklOVF9TVE9QUEVEIjsKKworICAgIGNhc2UgVEhSRUFEX0lOVF9SVU5OSU5HOgor ICAgICAgcmV0dXJuICJJTlRfUlVOTklORyI7CisKKyAgICBjYXNlIFRIUkVBRF9JTlRfUkVT VU1FRF9QRU5ESU5HX1NUQVRVUzoKKyAgICAgIHJldHVybiAiSU5UX1JFU1VNRURfUEVORElO R19TVEFUVVMiOworCisgICAgY2FzZSBUSFJFQURfSU5UX0VYSVRFRDoKKyAgICAgIHJldHVy biAiSU5UX0VYSVRFRCI7CisgICAgfQorCisgIGdkYl9hc3NlcnRfbm90X3JlYWNoZWQgKCJ1 bmtub3duIHRocmVhZCBpbnRlcm5hbCBzdGF0ZSIpOworfQorCiAvKiBSZXR1cm4gYSBuZXcg dmFsdWUgZm9yIHRoZSBzZWxlY3RlZCB0aHJlYWQncyBpZC4gIFJldHVybiBhIHZhbHVlIG9m CiAgICAwIGlmIG5vIHRocmVhZCBpcyBzZWxlY3RlZC4gIElmIEdMT0JBTCBpcyB0cnVlLCBy ZXR1cm4gdGhlIHRocmVhZCdzCiAgICBnbG9iYWwgbnVtYmVyLiAgT3RoZXJ3aXNlIHJldHVy biB0aGUgcGVyLWluZmVyaW9yIG51bWJlci4gICovCmRpZmYgLS1naXQgYS9nZGIvdG9wLmMg Yi9nZGIvdG9wLmMKaW5kZXggNTEwZTY1YzFkMDkuLjc1MjZjMDdhODdiIDEwMDY0NAotLS0g YS9nZGIvdG9wLmMKKysrIGIvZ2RiL3RvcC5jCkBAIC02NTQsNyArNjU0LDcgQEAgZXhlY3V0 ZV9jb21tYW5kIChjb25zdCBjaGFyICpwLCBpbnQgZnJvbV90dHkpCiAgICAgIHdlIGp1c3Qg ZmluaXNoZWQgZXhlY3V0aW5nIGRpZCBub3QgcmVzdW1lIHRoZSBpbmZlcmlvcidzIGV4ZWN1 dGlvbi4KICAgICAgSWYgaXQgZGlkIHJlc3VtZSB0aGUgaW5mZXJpb3IsIHdlIHdpbGwgZG8g dGhhdCBjaGVjayBhZnRlcgogICAgICB0aGUgaW5mZXJpb3Igc3RvcHBlZC4gICovCi0gIGlm IChoYXNfc3RhY2tfZnJhbWVzICgpICYmIGluZmVyaW9yX3RocmVhZCAoKS0+c3RhdGUgIT0g VEhSRUFEX1JVTk5JTkcpCisgIGlmIChoYXNfc3RhY2tfZnJhbWVzICgpICYmIGluZmVyaW9y X3RocmVhZCAoKS0+c3RhdGUgKCkgIT0gVEhSRUFEX1JVTk5JTkcpCiAgICAgY2hlY2tfZnJh bWVfbGFuZ3VhZ2VfY2hhbmdlICgpOwogCiAgIGNsZWFudXBfaWZfZXJyb3IucmVsZWFzZSAo KTsKLS0gCjIuNTMuMAoK --------------bKA1scsER4wM0Wym7T1L3NLh--