Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id C168A200C15 for ; Wed, 25 Jan 2017 01:41:38 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id C0350160B4B; Wed, 25 Jan 2017 00:41:38 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id CECB4160B3E for ; Wed, 25 Jan 2017 01:41:36 +0100 (CET) Received: (qmail 75442 invoked by uid 500); 25 Jan 2017 00:41:35 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 75432 invoked by uid 99); 25 Jan 2017 00:41:35 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 25 Jan 2017 00:41:35 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 3A54B180661 for ; Wed, 25 Jan 2017 00:41:35 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.179 X-Spam-Level: * X-Spam-Status: No, score=1.179 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, KAM_ASCII_DIVIDERS=0.8, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd3-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id cymVBn2y_3Cq for ; Wed, 25 Jan 2017 00:41:28 +0000 (UTC) Received: from mail-qk0-f181.google.com (mail-qk0-f181.google.com [209.85.220.181]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 619125F4EC for ; Wed, 25 Jan 2017 00:41:27 +0000 (UTC) Received: by mail-qk0-f181.google.com with SMTP id u25so59813680qki.2 for ; Tue, 24 Jan 2017 16:41:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=vLEGDhcqDV+rZXx2bpKNkp6ExoA7FIj7nJ+fONT3Z7U=; b=sviFawxVsqhKLHDw/l+miUSnMAgvTO1cQyoiFoQH3yZT7G2frdY6q1IajnRpHvr6kX 3H3kSqUGIV2T4snsMYF958k/4ZYoT9CARIDA8R67CEWW7YTaJ7W/Gq0/y51lLmVEVlJA q7HUAyMjCh/SrbacF0xGSd3FNlYxp5KsEaoLA99Fk9FHFVJZuG+2gBjCE7Vsj29QxnxW HbR89kUbJFYruYFNIHicdjTL3YxUmRoT1fLmUuXTrwuPj/wguVkJ+RqdZQ1VFWEOzVQQ daOH1yU57fmM0BkRgci+A1HO2fnhKiGUXO1KnETQ9b1diGsOLjLFSTEahHuLfTCN3y3C MxIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=vLEGDhcqDV+rZXx2bpKNkp6ExoA7FIj7nJ+fONT3Z7U=; b=MLAlEozj5MG/T9lm+iNF1XIBJ5x83cuE394Lci+/d2+YMsNzyh71CJVU4mE4c7zxSk //zu/Ew1//3i2jnAiUWJdLz9CIHy5Bu00z36qVDwjieoWaq4DpsiHSuaOJ6y0mG7iCgj m4XKvg411JO8s0oilXLkeFODV46fyerOu3FOdD8SRnmBv3b1X1t60PJgyN3fp7fJbL9g zzvkcNt5h/jG2T+ZhP6Ej73b6cecAwmRgNye4rQilnweGim6Getgl5QIJoayxGwjK4aV eg6yxCAZPZTq8Fk0ROOwdLJ1NPkOVBxFo+9cEKksD+DaLZZgGUlSQFfP1F2gC+rIVa2A 8DqA== X-Gm-Message-State: AIkVDXLJ4XvGCU6TXeDOfk9fYjLCO3FJjBOQQ0HYCTicS91Lh1u5NoKRNzouUIf6ekevFCaoIKweATJyZOA2IA== X-Received: by 10.55.181.6 with SMTP id e6mr30991322qkf.298.1485304884671; Tue, 24 Jan 2017 16:41:24 -0800 (PST) MIME-Version: 1.0 Received: by 10.55.102.18 with HTTP; Tue, 24 Jan 2017 16:41:24 -0800 (PST) In-Reply-To: <9630D68E-E7B9-4BC9-8C78-61092775C87F@greenbytes.de> References: <73c1b14f-18f6-af45-c8ea-3584d6652d7a@profihost.ag> <21cd5f8f-a2c7-8aba-ccfb-5f3c399edebc@profihost.ag> <289b946c-9114-0eac-e470-67c0de909fd5@profihost.ag> <86e616ec-271c-3576-d4a1-08143e04976e@profihost.ag> <02B166CD-4D82-4F87-94AB-F4603723BDBA@greenbytes.de> <50cfac51-1c47-b2c1-4348-bc0b21dfcbac@profihost.ag> <1d8d1ff9-a3ca-4488-4cde-e093b3942db7@profihost.ag> <94698d9e-bad4-bd20-cfac-bf4b945203b7@profihost.ag> <8823CE4D-1357-4939-8FD7-108167BA75E9@greenbytes.de> <46a0b743-ef81-d326-63c8-1202741c5bbb@profihost.ag> <96062a1b-c18d-b243-0de5-2e9c4451b315@profihost.ag> <0B30BB55-F1AC-41F6-BD5A-9076CB4D9B61@greenbytes.de> <9630D68E-E7B9-4BC9-8C78-61092775C87F@greenbytes.de> From: Yann Ylavic Date: Wed, 25 Jan 2017 01:41:24 +0100 Message-ID: Subject: Re: mod_http2 and Frequent wake-ups for mpm_event To: httpd-dev Content-Type: multipart/mixed; boundary=94eb2c065a00090d140546e07e62 archived-at: Wed, 25 Jan 2017 00:41:38 -0000 --94eb2c065a00090d140546e07e62 Content-Type: text/plain; charset=UTF-8 Hi Stefan, On Tue, Jan 24, 2017 at 1:37 PM, Stefan Eissing wrote: > Yann, thanks for the patch. I agree that the cleanups need to be killed in the right place. Not certain if it was wrong before, but that part is not easy to see for every combination. > > I did some rework and hope this makes it more readable. If you find the time to look at it, feedback welcome. I still fear that if beam->pool gets destroyed while both beam_send_cleanup() and beam_cleanup() are registered, the former is called twice. I'd change: if (safe_send) { if (beam->send_pool && beam->send_pool != beam->pool) { apr_pool_cleanup_kill(beam->send_pool, beam, beam_send_cleanup); } status = beam_send_cleanup(beam); } with: if (safe_send) { if (beam->send_pool) { if (beam->send_pool != beam->pool) { apr_pool_cleanup_kill(beam->send_pool, beam, beam_send_cleanup); } status = beam_send_cleanup(beam); } } since in the above case beam_send_cleanup is run first and sets send_pool=NULL. Attached v3 with this only change w.r.t. v2. Otherwise, looks good to me, thanks! --94eb2c065a00090d140546e07e62 Content-Type: text/plain; charset=US-ASCII; name="h2_beams_cleanup_v3.diff" Content-Disposition: attachment; filename="h2_beams_cleanup_v3.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iyc812gh1 SW5kZXg6IG1vZHVsZXMvaHR0cDIvaDJfYnVja2V0X2JlYW0uYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtb2R1 bGVzL2h0dHAyL2gyX2J1Y2tldF9iZWFtLmMJKHJldmlzaW9uIDE3ODAxMjkpCisrKyBtb2R1bGVz L2h0dHAyL2gyX2J1Y2tldF9iZWFtLmMJKHdvcmtpbmcgY29weSkKQEAgLTQzOCwxOCArNDM4LDM3 IEBAIHN0YXRpYyBhcHJfc3RhdHVzX3QgYmVhbV9yZWN2X2NsZWFudXAodm9pZCAqZGF0YSkKICAg ICByZXR1cm4gQVBSX1NVQ0NFU1M7CiB9CiAKK3N0YXRpYyBpbnQgcG9vbF9yZWdpc3RlcihoMl9i dWNrZXRfYmVhbSAqYmVhbSwgYXByX3Bvb2xfdCAqcG9vbCwgCisgICAgICAgICAgICAgICAgICAg ICAgICAgYXByX3N0YXR1c190ICgqY2xlYW51cCkodm9pZCAqKSkKK3sKKyAgICBpZiAocG9vbCAm JiBwb29sICE9IGJlYW0tPnBvb2wpIHsKKyAgICAgICAgYXByX3Bvb2xfcHJlX2NsZWFudXBfcmVn aXN0ZXIocG9vbCwgYmVhbSwgY2xlYW51cCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAg ICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwb29sX2tpbGwoaDJfYnVja2V0X2JlYW0gKmJl YW0sIGFwcl9wb29sX3QgKnBvb2wsCisgICAgICAgICAgICAgICAgICAgICBhcHJfc3RhdHVzX3Qg KCpjbGVhbnVwKSh2b2lkICopKSB7CisgICAgaWYgKHBvb2wgJiYgcG9vbCAhPSBiZWFtLT5wb29s KSB7CisgICAgICAgIGFwcl9wb29sX2NsZWFudXBfa2lsbChwb29sLCBiZWFtLCBjbGVhbnVwKTsK KyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgdm9p ZCBiZWFtX3NldF9yZWN2X3Bvb2woaDJfYnVja2V0X2JlYW0gKmJlYW0sIGFwcl9wb29sX3QgKnBv b2wpIAogewotICAgIC8qIGlmIHRoZSBiZWFtIG93bmVyIGlzIHRoZSBzZW5kZXIsIG1vbml0b3Ig cmVjZWl2ZXIgcG9vbCBsaWZldGltZSAqLyAKLSAgICBpZiAoYmVhbS0+b3duZXIgPT0gSDJfQkVB TV9PV05FUl9TRU5EICYmIGJlYW0tPnJlY3ZfcG9vbCAhPSBwb29sKSB7Ci0gICAgICAgIGlmIChi ZWFtLT5yZWN2X3Bvb2wpIHsKLSAgICAgICAgICAgIGFwcl9wb29sX2NsZWFudXBfa2lsbChiZWFt LT5yZWN2X3Bvb2wsIGJlYW0sIGJlYW1fcmVjdl9jbGVhbnVwKTsKLSAgICAgICAgfQotICAgICAg ICBiZWFtLT5yZWN2X3Bvb2wgPSBwb29sOwotICAgICAgICBpZiAoYmVhbS0+cmVjdl9wb29sKSB7 Ci0gICAgICAgICAgICBhcHJfcG9vbF9wcmVfY2xlYW51cF9yZWdpc3RlcihiZWFtLT5yZWN2X3Bv b2wsIGJlYW0sIGJlYW1fcmVjdl9jbGVhbnVwKTsKLSAgICAgICAgfQorICAgIGlmIChiZWFtLT5y ZWN2X3Bvb2wgPT0gcG9vbCB8fCAKKyAgICAgICAgKGJlYW0tPnJlY3ZfcG9vbCAmJiBwb29sIAor ICAgICAgICAgJiYgYXByX3Bvb2xfaXNfYW5jZXN0b3IoYmVhbS0+cmVjdl9wb29sLCBwb29sKSkp IHsKKyAgICAgICAgLyogd2hlbiByZWNlaXZlciBzYW1lIG9yIHN1Yi1wb29sIG9mIGV4aXN0aW5n LCBzdGljaworICAgICAgICAgKiB0byB0aGUgdGhlIHBvb2wgd2UgYWxyZWFkeSBoYXZlLiAqLwor ICAgICAgICByZXR1cm47CiAgICAgfQorICAgIHBvb2xfa2lsbChiZWFtLCBiZWFtLT5yZWN2X3Bv b2wsIGJlYW1fcmVjdl9jbGVhbnVwKTsKKyAgICBiZWFtLT5yZWN2X3Bvb2wgPSBwb29sOworICAg IHBvb2xfcmVnaXN0ZXIoYmVhbSwgYmVhbS0+cmVjdl9wb29sLCBiZWFtX3JlY3ZfY2xlYW51cCk7 CiB9CiAKIHN0YXRpYyBhcHJfc3RhdHVzX3QgYmVhbV9zZW5kX2NsZWFudXAodm9pZCAqZGF0YSkK QEAgLTQ3MywyMiArNDkyLDE2IEBAIHN0YXRpYyBhcHJfc3RhdHVzX3QgYmVhbV9zZW5kX2NsZWFu dXAodm9pZCAqZGF0YSkKIAogc3RhdGljIHZvaWQgYmVhbV9zZXRfc2VuZF9wb29sKGgyX2J1Y2tl dF9iZWFtICpiZWFtLCBhcHJfcG9vbF90ICpwb29sKSAKIHsKLSAgICAvKiBpZiB0aGUgYmVhbSBv d25lciBpcyB0aGUgcmVjZWl2ZXIsIG1vbml0b3Igc2VuZGVyIHBvb2wgbGlmZXRpbWUgKi8KLSAg ICBpZiAoYmVhbS0+b3duZXIgPT0gSDJfQkVBTV9PV05FUl9SRUNWICYmIGJlYW0tPnNlbmRfcG9v bCAhPSBwb29sKSB7Ci0gICAgICAgIGlmIChiZWFtLT5zZW5kX3Bvb2wgJiYgcG9vbCAKLSAgICAg ICAgICAgICYmIGFwcl9wb29sX2lzX2FuY2VzdG9yKGJlYW0tPnNlbmRfcG9vbCwgcG9vbCkpIHsK LSAgICAgICAgICAgIC8qIHdoZW4gc2VuZGVyIHVzZXMgc3ViLXBvb2xzIHRvIHRyYW5zbWl0IGRh dGEsIHN0aWNrCi0gICAgICAgICAgICAgKiB0byB0aGUgbGlmZXRpbWUgb2YgdGhlIHBvb2wgd2Ug YWxyZWFkeSBoYXZlLiAqLwotICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg ICBpZiAoYmVhbS0+c2VuZF9wb29sKSB7Ci0gICAgICAgICAgICBhcHJfcG9vbF9jbGVhbnVwX2tp bGwoYmVhbS0+c2VuZF9wb29sLCBiZWFtLCBiZWFtX3NlbmRfY2xlYW51cCk7Ci0gICAgICAgIH0K LSAgICAgICAgYmVhbS0+c2VuZF9wb29sID0gcG9vbDsKLSAgICAgICAgaWYgKGJlYW0tPnNlbmRf cG9vbCkgewotICAgICAgICAgICAgYXByX3Bvb2xfcHJlX2NsZWFudXBfcmVnaXN0ZXIoYmVhbS0+ c2VuZF9wb29sLCBiZWFtLCBiZWFtX3NlbmRfY2xlYW51cCk7Ci0gICAgICAgIH0KKyAgICBpZiAo YmVhbS0+c2VuZF9wb29sID09IHBvb2wgfHwgCisgICAgICAgIChiZWFtLT5zZW5kX3Bvb2wgJiYg cG9vbCAKKyAgICAgICAgICYmIGFwcl9wb29sX2lzX2FuY2VzdG9yKGJlYW0tPnNlbmRfcG9vbCwg cG9vbCkpKSB7CisgICAgICAgIC8qIHdoZW4gc2VuZGVyIGlzIHNhbWUgb3Igc3ViLXBvb2wgb2Yg ZXhpc3RpbmcsIHN0aWNrCisgICAgICAgICAqIHRvIHRoZSB0aGUgcG9vbCB3ZSBhbHJlYWR5IGhh dmUuICovCisgICAgICAgIHJldHVybjsKICAgICB9CisgICAgcG9vbF9raWxsKGJlYW0sIGJlYW0t PnNlbmRfcG9vbCwgYmVhbV9zZW5kX2NsZWFudXApOworICAgIGJlYW0tPnNlbmRfcG9vbCA9IHBv b2w7CisgICAgcG9vbF9yZWdpc3RlcihiZWFtLCBiZWFtLT5zZW5kX3Bvb2wsIGJlYW1fc2VuZF9j bGVhbnVwKTsKIH0KIAogc3RhdGljIGFwcl9zdGF0dXNfdCBiZWFtX2NsZWFudXAodm9pZCAqZGF0 YSkKQEAgLTQ5NSw0NCArNTA4LDU3IEBAIHN0YXRpYyBhcHJfc3RhdHVzX3QgYmVhbV9jbGVhbnVw KHZvaWQgKmRhdGEpCiB7CiAgICAgaDJfYnVja2V0X2JlYW0gKmJlYW0gPSBkYXRhOwogICAgIGFw cl9zdGF0dXNfdCBzdGF0dXMgPSBBUFJfU1VDQ0VTUzsKLSAgICAvKiBvd25lciBvZiB0aGUgYmVh bSBpcyBnb2luZyBhd2F5LCBkZXBlbmRpbmcgb24gaXRzIHJvbGUsIGNsZWFudXAKLSAgICAgKiBz dHJhdGVnaWVzIGRpZmZlci4gKi8KLSAgICBiZWFtX2Nsb3NlKGJlYW0pOwotICAgIHN3aXRjaCAo YmVhbS0+b3duZXIpIHsKLSAgICAgICAgY2FzZSBIMl9CRUFNX09XTkVSX1NFTkQ6Ci0gICAgICAg ICAgICBzdGF0dXMgPSBiZWFtX3NlbmRfY2xlYW51cChiZWFtKTsKLSAgICAgICAgICAgIGJlYW0t PnJlY3ZfYnVmZmVyID0gTlVMTDsKKyAgICBpbnQgc2FmZV9zZW5kID0gIWJlYW0tPm1fZW50ZXIg fHwgKGJlYW0tPm93bmVyID09IEgyX0JFQU1fT1dORVJfU0VORCk7CisgICAgaW50IHNhZmVfcmVj diA9ICFiZWFtLT5tX2VudGVyIHx8IChiZWFtLT5vd25lciA9PSBIMl9CRUFNX09XTkVSX1JFQ1Yp OworICAgIAorICAgIC8qIAorICAgICAqIE93bmVyIG9mIHRoZSBiZWFtIGlzIGdvaW5nIGF3YXks IGRlcGVuZGluZyBvbiB3aGljaCBzaWRlIGl0IG93bnMsCisgICAgICogY2xlYW51cCBzdHJhdGVn aWVzIHdpbGwgZGlmZmVyIHdpdGggbXVsdGktdGhyZWFkIHByb3RlY3Rpb24KKyAgICAgKiBzdGls bCBpbiBwbGFjZSAoYmVhbS0+bV9lbnRlcikuCisgICAgICoKKyAgICAgKiBJbiBnZW5lcmFsLCBy ZWNlaXZlciBob2xkcyByZWZlcmVuY2VzIHRvIG1lbW9yeSBmcm9tIHNlbmRlci4gCisgICAgICog Q2xlYW4gdXAgcmVjZWl2ZXIgZmlyc3QsIGlmIHNhZmUsIHRoZW4gY2xlYW51cCBzZW5kZXIsIGlm IHNhZmUuCisgICAgICovCisgICAgIAorICAgIC8qIFdoZW4gbW9kaWZ5IHNlbmQgaXMgbm90IHNh ZmUsIHRoaXMgbWVhbnMgd2Ugc3RpbGwgaGF2ZSBtdWx0aS10aHJlYWQKKyAgICAgKiBwcm90ZWN0 aW9uIGFuZCB0aGUgb3duZXIgaXMgcmVjZWl2aW5nIHRoZSBidWNrZXRzLiBJZiB0aGUgc2VuZGlu ZworICAgICAqIHNpZGUgaGFzIG5vdCBnb25lIGF3YXksIHRoaXMgbWVhbnMgd2UgY291bGQgaGF2 ZSBkYW5nbGluZyBidWNrZXRzCisgICAgICogaW4gb3VyIGxpc3RzIHRoYXQgbmV2ZXIgZ2V0IGRl c3Ryb3llZC4gVGhpcyBzaG91bGQgbm90IGhhcHBlbi4gKi8KKyAgICBhcF9hc3NlcnQoc2FmZV9z ZW5kIHx8ICFiZWFtLT5zZW5kX3Bvb2wpOworICAgIGlmICghSDJfQkxJU1RfRU1QVFkoJmJlYW0t PnNlbmRfbGlzdCkpIHsKKyAgICAgICAgYXBfYXNzZXJ0KGJlYW0tPnNlbmRfcG9vbCk7CisgICAg fQorICAgIAorICAgIGlmIChzYWZlX3JlY3YpIHsKKyAgICAgICAgaWYgKGJlYW0tPnJlY3ZfcG9v bCkgeworICAgICAgICAgICAgYXByX3Bvb2xfY2xlYW51cF9raWxsKGJlYW0tPnJlY3ZfcG9vbCwg YmVhbSwgYmVhbV9yZWN2X2NsZWFudXApOwogICAgICAgICAgICAgYmVhbS0+cmVjdl9wb29sID0g TlVMTDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEgyX0JFQU1fT1dORVJfUkVD VjoKLSAgICAgICAgICAgIGlmIChiZWFtLT5yZWN2X2J1ZmZlcikgewotICAgICAgICAgICAgICAg IGFwcl9icmlnYWRlX2Rlc3Ryb3koYmVhbS0+cmVjdl9idWZmZXIpOwotICAgICAgICAgICAgfQor ICAgICAgICB9CisgICAgICAgIGlmIChiZWFtLT5yZWN2X2J1ZmZlcikgeworICAgICAgICAgICAg YXByX2JyaWdhZGVfZGVzdHJveShiZWFtLT5yZWN2X2J1ZmZlcik7CiAgICAgICAgICAgICBiZWFt LT5yZWN2X2J1ZmZlciA9IE5VTEw7Ci0gICAgICAgICAgICBiZWFtLT5yZWN2X3Bvb2wgPSBOVUxM OwotICAgICAgICAgICAgaWYgKCFIMl9CTElTVF9FTVBUWSgmYmVhbS0+c2VuZF9saXN0KSkgewot ICAgICAgICAgICAgICAgIGFwX2Fzc2VydChiZWFtLT5zZW5kX3Bvb2wpOwotICAgICAgICAgICAg fQotICAgICAgICAgICAgaWYgKGJlYW0tPnNlbmRfcG9vbCkgewotICAgICAgICAgICAgICAgIC8q IHNlbmRlciBoYXMgbm90IGNsZWFuZWQgdXAsIGl0cyBwb29sIHN0aWxsIGxpdmVzLgotICAgICAg ICAgICAgICAgICAqIHRoaXMgaXMgbm9ybWFsIGlmIHRoZSBzZW5kZXIgdXNlcyBjbGVhbnVwIHZp YSBhIGJ1Y2tldAotICAgICAgICAgICAgICAgICAqIHN1Y2ggYXMgdGhlIEJVQ0tFVF9FT1IgZm9y IHJlcXVlc3RzLiBJbiB0aGF0IGNhc2UsIHRoZQotICAgICAgICAgICAgICAgICAqIGJlYW0gc2hv dWxkIGhhdmUgbG9zdCBpdHMgbXV0ZXggcHJvdGVjdGlvbiwgbWVhbmluZwotICAgICAgICAgICAg ICAgICAqIGl0IGlzIG5vIGxvbmdlciB1c2VkIG11bHRpLXRocmVhZGVkIGFuZCB3ZSBjYW4gc2Fm ZWx5Ci0gICAgICAgICAgICAgICAgICogcHVyZ2UgYWxsIHJlbWFpbmluZyBzZW5kZXIgYnVja2V0 cy4gKi8KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYmVhbS0+cmVjdl9i dWZmZXIgPSBOVUxMOworICAgICAgICBiZWFtLT5yZWN2X3Bvb2wgPSBOVUxMOworICAgIH0KKyAg ICAKKyAgICBpZiAoc2FmZV9zZW5kKSB7CisgICAgICAgIGlmIChiZWFtLT5zZW5kX3Bvb2wpIHsK KyAgICAgICAgICAgIGlmIChiZWFtLT5zZW5kX3Bvb2wgIT0gYmVhbS0+cG9vbCkgewogICAgICAg ICAgICAgICAgIGFwcl9wb29sX2NsZWFudXBfa2lsbChiZWFtLT5zZW5kX3Bvb2wsIGJlYW0sIGJl YW1fc2VuZF9jbGVhbnVwKTsKLSAgICAgICAgICAgICAgICBhcF9hc3NlcnQoIWJlYW0tPm1fZW50 ZXIpOwotICAgICAgICAgICAgICAgIGJlYW1fc2VuZF9jbGVhbnVwKGJlYW0pOwogICAgICAgICAg ICAgfQotICAgICAgICAgICAgYXBfYXNzZXJ0KEgyX0JQUk9YWV9MSVNUX0VNUFRZKCZiZWFtLT5w cm94aWVzKSk7Ci0gICAgICAgICAgICBhcF9hc3NlcnQoSDJfQkxJU1RfRU1QVFkoJmJlYW0tPnNl bmRfbGlzdCkpOwotICAgICAgICAgICAgYXBfYXNzZXJ0KEgyX0JMSVNUX0VNUFRZKCZiZWFtLT5o b2xkX2xpc3QpKTsKLSAgICAgICAgICAgIGFwX2Fzc2VydChIMl9CTElTVF9FTVBUWSgmYmVhbS0+ cHVyZ2VfbGlzdCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg ICAgICAgICBhcF9hc3NlcnQoTlVMTCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg IHN0YXR1cyA9IGJlYW1fc2VuZF9jbGVhbnVwKGJlYW0pOworICAgICAgICB9CiAgICAgfQorICAg IAorICAgIGlmIChzYWZlX3JlY3YpIHsKKyAgICAgICAgYXBfYXNzZXJ0KEgyX0JQUk9YWV9MSVNU X0VNUFRZKCZiZWFtLT5wcm94aWVzKSk7CisgICAgICAgIGFwX2Fzc2VydChIMl9CTElTVF9FTVBU WSgmYmVhbS0+c2VuZF9saXN0KSk7CisgICAgICAgIGFwX2Fzc2VydChIMl9CTElTVF9FTVBUWSgm YmVhbS0+aG9sZF9saXN0KSk7CisgICAgICAgIGFwX2Fzc2VydChIMl9CTElTVF9FTVBUWSgmYmVh bS0+cHVyZ2VfbGlzdCkpOworICAgIH0KICAgICByZXR1cm4gc3RhdHVzOwogfQogCkluZGV4OiBt b2R1bGVzL3Byb3h5L21vZF9wcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1vZHVsZXMvcHJveHkvbW9k X3Byb3h5LmgJKHJldmlzaW9uIDE3ODAxMjkpCisrKyBtb2R1bGVzL3Byb3h5L21vZF9wcm94eS5o CSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsOSArMzQ3LDkgQEAgUFJPWFlfV09SS0VSX0hDX0ZBSUwg KQogI2RlZmluZSBQUk9YWV9XT1JLRVJfTUFYX1NDSEVNRV9TSVpFICAgIDE2CiAjZGVmaW5lIFBS T1hZX1dPUktFUl9NQVhfUk9VVEVfU0laRSAgICAgNjQKICNkZWZpbmUgUFJPWFlfQkFMQU5DRVJf TUFYX1JPVVRFX1NJWkUgUFJPWFlfV09SS0VSX01BWF9ST1VURV9TSVpFCi0jZGVmaW5lIFBST1hZ X1dPUktFUl9NQVhfTkFNRV9TSVpFICAgICAgOTYKKyNkZWZpbmUgUFJPWFlfV09SS0VSX01BWF9O QU1FX1NJWkUgICAgICA1NDQKICNkZWZpbmUgUFJPWFlfQkFMQU5DRVJfTUFYX05BTUVfU0laRSBQ Uk9YWV9XT1JLRVJfTUFYX05BTUVfU0laRQotI2RlZmluZSBQUk9YWV9XT1JLRVJfTUFYX0hPU1RO QU1FX1NJWkUgIDY0CisjZGVmaW5lIFBST1hZX1dPUktFUl9NQVhfSE9TVE5BTUVfU0laRSAgNTEy CiAjZGVmaW5lIFBST1hZX0JBTEFOQ0VSX01BWF9IT1NUTkFNRV9TSVpFIFBST1hZX1dPUktFUl9N QVhfSE9TVE5BTUVfU0laRQogI2RlZmluZSBQUk9YWV9CQUxBTkNFUl9NQVhfU1RJQ0tZX1NJWkUg IDY0CiAKSW5kZXg6IG1vZHVsZXMvc2xvdG1lbS9tb2Rfc2xvdG1lbV9zaG0uYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBtb2R1bGVzL3Nsb3RtZW0vbW9kX3Nsb3RtZW1fc2htLmMJKHJldmlzaW9uIDE3ODAxMjkp CisrKyBtb2R1bGVzL3Nsb3RtZW0vbW9kX3Nsb3RtZW1fc2htLmMJKHdvcmtpbmcgY29weSkKQEAg LTM4NiwyMiArMzg2LDI2IEBAIHN0YXRpYyBhcHJfc3RhdHVzX3Qgc2xvdG1lbV9jcmVhdGUoYXBf c2xvdG1lbV9pbnN0CiAgICAgICAgIGlmIChhcHJfc2htX3NpemVfZ2V0KHNobSkgIT0gc2l6ZSkg ewogICAgICAgICAgICAgYXByX3NobV9kZXRhY2goc2htKTsKICAgICAgICAgICAgIGFwX2xvZ19l cnJvcihBUExPR19NQVJLLCBBUExPR19FUlIsIDAsIGFwX3NlcnZlcl9jb25mLCBBUExPR05PKDAy NTk5KQotICAgICAgICAgICAgICAgICAgICAgICAgICJleGlzdGluZyBzaGFyZWQgbWVtb3J5IGZv ciAlcyBjb3VsZCBub3QgYmUgdXNlZCAoZmFpbGVkIHNpemUgY2hlY2spIiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAiZXhpc3Rpbmcgc2hhcmVkIG1lbW9yeSBmb3IgJXMgY291bGQgbm90IGJl IHJldXNlZCAoZmFpbGVkIHNpemUgY2hlY2spIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBm bmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gQVBSX0VJTlZBTDsKKyAgICAgICAgICAgIHJ2ID0g QVBSX0VJTlZBTDsKICAgICAgICAgfQotICAgICAgICBwdHIgPSAoY2hhciAqKWFwcl9zaG1fYmFz ZWFkZHJfZ2V0KHNobSk7Ci0gICAgICAgIG1lbWNweSgmZGVzYywgcHRyLCBzaXplb2YoZGVzYykp OwotICAgICAgICBpZiAoZGVzYy5zaXplICE9IGl0ZW1fc2l6ZSB8fCBkZXNjLm51bSAhPSBpdGVt X251bSkgewotICAgICAgICAgICAgYXByX3NobV9kZXRhY2goc2htKTsKLSAgICAgICAgICAgIGFw X2xvZ19lcnJvcihBUExPR19NQVJLLCBBUExPR19FUlIsIDAsIGFwX3NlcnZlcl9jb25mLCBBUExP R05PKDAyNjAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICJleGlzdGluZyBzaGFyZWQgbWVt b3J5IGZvciAlcyBjb3VsZCBub3QgYmUgdXNlZCAoZmFpbGVkIGNvbnRlbnRzIGNoZWNrKSIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIEFQUl9F SU5WQUw7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcHRyID0gKGNoYXIgKilhcHJfc2ht X2Jhc2VhZGRyX2dldChzaG0pOworICAgICAgICAgICAgbWVtY3B5KCZkZXNjLCBwdHIsIHNpemVv ZihkZXNjKSk7CisgICAgICAgICAgICBpZiAoZGVzYy5zaXplICE9IGl0ZW1fc2l6ZSB8fCBkZXNj Lm51bSAhPSBpdGVtX251bSkgeworICAgICAgICAgICAgICAgIGFwcl9zaG1fZGV0YWNoKHNobSk7 CisgICAgICAgICAgICAgICAgYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX0VSUiwgMCwg YXBfc2VydmVyX2NvbmYsIEFQTE9HTk8oMDI2MDApCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJleGlzdGluZyBzaGFyZWQgbWVtb3J5IGZvciAlcyBjb3VsZCBub3QgYmUgcmV1c2VkIChm YWlsZWQgY29udGVudHMgY2hlY2spIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm5h bWUpOworICAgICAgICAgICAgICAgIHJ2ID0gQVBSX0VJTlZBTDsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHB0ciArPSBBUF9TTE9UTUVNX09GRlNF VDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBwdHIgKz0gQVBfU0xPVE1FTV9P RkZTRVQ7CiAgICAgfQotICAgIGVsc2UgeworICAgIGlmIChydiAhPSBBUFJfU1VDQ0VTUykgewog ICAgICAgICBhcHJfc2l6ZV90IGRzaXplID0gc2l6ZSAtIEFQX1NMT1RNRU1fT0ZGU0VUOwogICAg ICAgICBpZiAoZmJhc2VkKSB7CiAgICAgICAgICAgICBhcHJfc2htX3JlbW92ZShmbmFtZSwgZ3Bv b2wpOwpJbmRleDogc2VydmVyL21wbS9ldmVudC9ldmVudC5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNlcnZl ci9tcG0vZXZlbnQvZXZlbnQuYwkocmV2aXNpb24gMTc4MDEyOSkKKysrIHNlcnZlci9tcG0vZXZl bnQvZXZlbnQuYwkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYgKzE3Nyw3IEBAIHN0YXRpYyBpbnQg ZHlpbmcgPSAwOwogc3RhdGljIGludCB3b3JrZXJzX21heV9leGl0ID0gMDsKIHN0YXRpYyBpbnQg c3RhcnRfdGhyZWFkX21heV9leGl0ID0gMDsKIHN0YXRpYyBpbnQgbGlzdGVuZXJfbWF5X2V4aXQg PSAwOworc3RhdGljIGludCBsaXN0ZW5lcl9pc193YWtlYWJsZSA9IDA7ICAgICAgICAvKiBQb2xs c2V0IHN1cHBvcnRzIEFQUl9QT0xMU0VUX1dBS0VBQkxFICovCiBzdGF0aWMgaW50IG51bV9saXN0 ZW5zb2NrcyA9IDA7CiBzdGF0aWMgYXByX2ludDMyX3QgY29ubnNfdGhpc19jaGlsZDsgICAgICAg IC8qIE1heENvbm5lY3Rpb25zUGVyQ2hpbGQsIG9ubHkgYWNjZXNzCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGxpc3RlbmVyIHRocmVhZCAqLwpAQCAt MTk5LDYgKzIwMCwxOSBAQCBtb2R1bGUgQVBfTU9EVUxFX0RFQ0xBUkVfREFUQSBtcG1fZXZlbnRf bW9kdWxlOwogc3RydWN0IGV2ZW50X3Nydl9jZmdfczsKIHR5cGVkZWYgc3RydWN0IGV2ZW50X3Ny dl9jZmdfcyBldmVudF9zcnZfY2ZnOwogCitzdGF0aWMgYXByX3BvbGxmZF90ICpsaXN0ZW5lcl9w b2xsZmQ7CisKKy8qCisgKiBUaGUgcG9sbHNldCBmb3Igc29ja2V0cyB0aGF0IGFyZSBpbiBhbnkg b2YgdGhlIHRpbWVvdXQgcXVldWVzLiBDdXJyZW50bHkKKyAqIHdlIHVzZSB0aGUgdGltZW91dF9t dXRleCB0byBtYWtlIHN1cmUgdGhhdCBjb25uZWN0aW9ucyBhcmUgYWRkZWQvcmVtb3ZlZAorICog YXRvbWljYWxseSB0by9mcm9tIGJvdGggZXZlbnRfcG9sbHNldCBhbmQgYSB0aW1lb3V0IHF1ZXVl LiBPdGhlcndpc2UKKyAqIHNvbWUgY29uZnVzaW9uIGNhbiBoYXBwZW4gdW5kZXIgaGlnaCBsb2Fk IGlmIHRpbWVvdXQgcXVldWVzIGFuZCBwb2xsc2V0CisgKiBnZXQgb3V0IG9mIHN5bmMuCisgKiBY WFg6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBtYWtlIHRoZSBsb2NrIHVubmVjZXNzYXJ5IGlu IG1hbnkgb3IgZXZlbiBhbGwKKyAqIFhYWDogY2FzZXMuCisgKi8KK3N0YXRpYyBhcHJfcG9sbHNl dF90ICpldmVudF9wb2xsc2V0OworCiBzdHJ1Y3QgZXZlbnRfY29ubl9zdGF0ZV90IHsKICAgICAv KiogQVBSX1JJTkcgb2YgZXhwaXJhdGlvbiB0aW1lb3V0cyAqLwogICAgIEFQUl9SSU5HX0VOVFJZ KGV2ZW50X2Nvbm5fc3RhdGVfdCkgdGltZW91dF9saXN0OwpAQCAtMjI4LDkgKzI0MiwxMCBAQCBB UFJfUklOR19IRUFEKHRpbWVvdXRfaGVhZF90LCBldmVudF9jb25uX3N0YXRlX3QpOwogCiBzdHJ1 Y3QgdGltZW91dF9xdWV1ZSB7CiAgICAgc3RydWN0IHRpbWVvdXRfaGVhZF90IGhlYWQ7Ci0gICAg aW50IGNvdW50LCAqdG90YWw7CiAgICAgYXByX2ludGVydmFsX3RpbWVfdCB0aW1lb3V0OwotICAg IHN0cnVjdCB0aW1lb3V0X3F1ZXVlICpuZXh0OworICAgIGFwcl91aW50MzJfdCBjb3VudDsgICAg ICAgICAvKiBmb3IgdGhpcyBxdWV1ZSAqLworICAgIGFwcl91aW50MzJfdCAqdG90YWw7ICAgICAg ICAvKiBmb3IgYWxsIGNoYWluZWQvcmVsYXRlZCBxdWV1ZXMgKi8KKyAgICBzdHJ1Y3QgdGltZW91 dF9xdWV1ZSAqbmV4dDsgLyogY2hhaW5pbmcgKi8KIH07CiAvKgogICogU2V2ZXJhbCB0aW1lb3V0 IHF1ZXVlcyB0aGF0IHVzZSBkaWZmZXJlbnQgdGltZW91dHMsIHNvIHRoYXQgd2UgYWx3YXlzIGNh bgpAQCAtMjQ0LDUyICsyNTksNjUgQEAgc3RhdGljIHN0cnVjdCB0aW1lb3V0X3F1ZXVlICp3cml0 ZV9jb21wbGV0aW9uX3EsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmtlZXBhbGl2ZV9x LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsaW5nZXJfcSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqc2hvcnRfbGluZ2VyX3E7CitzdGF0aWMgdm9sYXRpbGUgYXByX3RpbWVf dCAgcXVldWVzX25leHRfZXhwaXJ5OwogCi1zdGF0aWMgYXByX3BvbGxmZF90ICpsaXN0ZW5lcl9w b2xsZmQ7CisvKiBQcmV2ZW50IGV4dHJhIHBvbGwvd2FrZXVwIGNhbGxzIGZvciB0aW1lb3V0cyBj bG9zZSBpbiB0aGUgZnV0dXJlIChxdWV1ZXMKKyAqIGhhdmUgdGhlIGdyYW51bGFyaXR5IG9mIGEg c2Vjb25kIGFueXdheSkuCisgKiBYWFg6IFdvdWxkbid0IDAuNXMgKGluc3RlYWQgb2YgMC4xcykg YmUgImVub3VnaCI/CisgKi8KKyNkZWZpbmUgVElNRU9VVF9GVURHRV9GQUNUT1IgYXByX3RpbWVf ZnJvbV9tc2VjKDEwMCkKIAogLyoKICAqIE1hY3JvcyBmb3IgYWNjZXNzaW5nIHN0cnVjdCB0aW1l b3V0X3F1ZXVlLgogICogRm9yIFRPX1FVRVVFX0FQUEVORCBhbmQgVE9fUVVFVUVfUkVNT1ZFLCB0 aW1lb3V0X211dGV4IG11c3QgYmUgaGVsZC4KICAqLwotI2RlZmluZSBUT19RVUVVRV9BUFBFTkQo cSwgZWwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBBUFJfUklOR19JTlNFUlRfVEFJTCgmKHEp LT5oZWFkLCBlbCwgZXZlbnRfY29ubl9zdGF0ZV90LCAgICAgICAgICAgICAgXAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X2xpc3QpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICArKyoocSktPnRvdGFsOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICArKyhxKS0+Y291 bnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgIH0gd2hpbGUgKDApCitzdGF0aWMgdm9pZCBUT19RVUVVRV9BUFBFTkQoc3RydWN0 IHRpbWVvdXRfcXVldWUgKnEsIGV2ZW50X2Nvbm5fc3RhdGVfdCAqZWwpCit7CisgICAgYXByX3Rp bWVfdCBxX2V4cGlyeTsKKyAgICBhcHJfdGltZV90IG5leHRfZXhwaXJ5OwogCi0jZGVmaW5lIFRP X1FVRVVFX1JFTU9WRShxLCBlbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIEFQUl9SSU5HX1JF TU9WRShlbCwgdGltZW91dF9saXN0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0gICAgICAgIC0tKihxKS0+dG90YWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIC0tKHEpLT5jb3VudDsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg fSB3aGlsZSAoMCkKKyAgICBBUFJfUklOR19JTlNFUlRfVEFJTCgmcS0+aGVhZCwgZWwsIGV2ZW50 X2Nvbm5fc3RhdGVfdCwgdGltZW91dF9saXN0KTsKKyAgICBhcHJfYXRvbWljX2luYzMyKHEtPnRv dGFsKTsKKyAgICArK3EtPmNvdW50OwogCi0jZGVmaW5lIFRPX1FVRVVFX0lOSVQocSwgcCwgdCwg dikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZG8g eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgIHN0cnVjdCB0aW1lb3V0X3F1ZXVlICpiID0gKHYpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChxKSA9IGFw cl9wYWxsb2MoKHApLCBzaXplb2YgKihxKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgICAgIEFQUl9SSU5HX0lOSVQoJihxKS0+aGVhZCwgZXZlbnRfY29ubl9zdGF0 ZV90LCB0aW1lb3V0X2xpc3QpOyAgICAgICAgICBcCi0gICAgICAgIChxKS0+dG90YWwgPSAoYikg PyAoYiktPnRvdGFsIDogYXByX3BjYWxsb2MoKHApLCBzaXplb2YgKihxKS0+dG90YWwpOyBcCi0g ICAgICAgIChxKS0+Y291bnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChxKS0+dGltZW91dCA9ICh0KTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChx KS0+bmV4dCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoMCkKKyAgICAvKiBDaGVhcGx5IHVwZGF0ZSB0aGUg b3ZlcmFsbCBxdWV1ZXMnIG5leHQgZXhwaXJ5IGFjY29yZGluZyB0byB0aGUKKyAgICAgKiBmaXJz dCBlbnRyeSBvZiB0aGlzIHF1ZXVlIChvbGRlc3QpLCBpZiBuZWNlc3NhcnkuCisgICAgICovCisg ICAgZWwgPSBBUFJfUklOR19GSVJTVCgmcS0+aGVhZCk7CisgICAgcV9leHBpcnkgPSBlbC0+cXVl dWVfdGltZXN0YW1wICsgcS0+dGltZW91dDsKKyAgICBuZXh0X2V4cGlyeSA9IHF1ZXVlc19uZXh0 X2V4cGlyeTsKKyAgICBpZiAoIW5leHRfZXhwaXJ5IHx8IG5leHRfZXhwaXJ5ID4gcV9leHBpcnkg KyBUSU1FT1VUX0ZVREdFX0ZBQ1RPUikgeworICAgICAgICBxdWV1ZXNfbmV4dF9leHBpcnkgPSBx X2V4cGlyeTsKKyAgICAgICAgLyogVW5ibG9jayB0aGUgcG9sbCgpaW5nIGxpc3RlbmVyIGZvciBp dCB0byB1cGRhdGUgaXRzIHRpbWVvdXQuICovCisgICAgICAgIGlmIChsaXN0ZW5lcl9pc193YWtl YWJsZSkgeworICAgICAgICAgICAgYXByX3BvbGxzZXRfd2FrZXVwKGV2ZW50X3BvbGxzZXQpOwor ICAgICAgICB9CisgICAgfQorfQogCi0jZGVmaW5lIFRPX1FVRVVFX0VMRU1fSU5JVChlbCkgQVBS X1JJTkdfRUxFTV9JTklUKGVsLCB0aW1lb3V0X2xpc3QpCitzdGF0aWMgdm9pZCBUT19RVUVVRV9S RU1PVkUoc3RydWN0IHRpbWVvdXRfcXVldWUgKnEsIGV2ZW50X2Nvbm5fc3RhdGVfdCAqZWwpCit7 CisgICAgQVBSX1JJTkdfUkVNT1ZFKGVsLCB0aW1lb3V0X2xpc3QpOworICAgIGFwcl9hdG9taWNf ZGVjMzIocS0+dG90YWwpOworICAgIC0tcS0+Y291bnQ7Cit9CiAKLS8qCi0gKiBUaGUgcG9sbHNl dCBmb3Igc29ja2V0cyB0aGF0IGFyZSBpbiBhbnkgb2YgdGhlIHRpbWVvdXQgcXVldWVzLiBDdXJy ZW50bHkKLSAqIHdlIHVzZSB0aGUgdGltZW91dF9tdXRleCB0byBtYWtlIHN1cmUgdGhhdCBjb25u ZWN0aW9ucyBhcmUgYWRkZWQvcmVtb3ZlZAotICogYXRvbWljYWxseSB0by9mcm9tIGJvdGggZXZl bnRfcG9sbHNldCBhbmQgYSB0aW1lb3V0IHF1ZXVlLiBPdGhlcndpc2UKLSAqIHNvbWUgY29uZnVz aW9uIGNhbiBoYXBwZW4gdW5kZXIgaGlnaCBsb2FkIGlmIHRpbWVvdXQgcXVldWVzIGFuZCBwb2xs c2V0Ci0gKiBnZXQgb3V0IG9mIHN5bmMuCi0gKiBYWFg6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0 byBtYWtlIHRoZSBsb2NrIHVubmVjZXNzYXJ5IGluIG1hbnkgb3IgZXZlbiBhbGwKLSAqIFhYWDog Y2FzZXMuCi0gKi8KLXN0YXRpYyBhcHJfcG9sbHNldF90ICpldmVudF9wb2xsc2V0Oworc3RhdGlj IHN0cnVjdCB0aW1lb3V0X3F1ZXVlICpUT19RVUVVRV9NQUtFKGFwcl9wb29sX3QgKnAsIGFwcl90 aW1lX3QgdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgdGltZW91dF9xdWV1ZSAqcmVmKQoreworICAgIHN0cnVjdCB0aW1lb3V0X3F1ZXVlICpxOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHEgPSBhcHJf cGNhbGxvYyhwLCBzaXplb2YgKnEpOworICAgIEFQUl9SSU5HX0lOSVQoJnEtPmhlYWQsIGV2ZW50 X2Nvbm5fc3RhdGVfdCwgdGltZW91dF9saXN0KTsKKyAgICBxLT50b3RhbCA9IChyZWYpID8gcmVm LT50b3RhbCA6IGFwcl9wY2FsbG9jKHAsIHNpemVvZiAqcS0+dG90YWwpOworICAgIHEtPnRpbWVv dXQgPSB0OwogCisgICAgcmV0dXJuIHE7Cit9CisKKyNkZWZpbmUgVE9fUVVFVUVfRUxFTV9JTklU KGVsKSBcCisgICAgQVBSX1JJTkdfRUxFTV9JTklUKChlbCksIHRpbWVvdXRfbGlzdCkKKwogLyog VGhlIHN0cnVjdHVyZSB1c2VkIHRvIHBhc3MgdW5pcXVlIGluaXRpYWxpemF0aW9uIGluZm8gdG8g ZWFjaCB0aHJlYWQgKi8KIHR5cGVkZWYgc3RydWN0CiB7CkBAIC00NzQsNiArNTAyLDExIEBAIHN0 YXRpYyB2b2lkIHdha2V1cF9saXN0ZW5lcih2b2lkKQogICAgICAgICByZXR1cm47CiAgICAgfQog CisgICAgLyogVW5ibG9jayB0aGUgbGlzdGVuZXIgaWYgaXQncyBwb2xsKClpbmcgKi8KKyAgICBp ZiAobGlzdGVuZXJfaXNfd2FrZWFibGUpIHsKKyAgICAgICAgYXByX3BvbGxzZXRfd2FrZXVwKGV2 ZW50X3BvbGxzZXQpOworICAgIH0KKwogICAgIC8qIHVuYmxvY2sgdGhlIGxpc3RlbmVyIGlmIGl0 J3Mgd2FpdGluZyBmb3IgYSB3b3JrZXIgKi8KICAgICBhcF9xdWV1ZV9pbmZvX3Rlcm0od29ya2Vy X3F1ZXVlX2luZm8pOwogCkBAIC02NDcsNyArNjgwLDExIEBAIHN0YXRpYyBhcHJfc3RhdHVzX3Qg ZGVjcmVtZW50X2Nvbm5lY3Rpb25fY291bnQodm9pCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg ICAgICBicmVhazsKICAgICB9Ci0gICAgYXByX2F0b21pY19kZWMzMigmY29ubmVjdGlvbl9jb3Vu dCk7CisgICAgLyogVW5ibG9jayB0aGUgbGlzdGVuZXIgaWYgaXQncyB3YWl0aW5nIGZvciBjb25u ZWN0aW9uX2NvdW50ID0gMCAqLworICAgIGlmICghYXByX2F0b21pY19kZWMzMigmY29ubmVjdGlv bl9jb3VudCkKKyAgICAgICAgICAgICAmJiBsaXN0ZW5lcl9pc193YWtlYWJsZSAmJiBsaXN0ZW5l cl9tYXlfZXhpdCkgeworICAgICAgICBhcHJfcG9sbHNldF93YWtldXAoZXZlbnRfcG9sbHNldCk7 CisgICAgfQogICAgIHJldHVybiBBUFJfU1VDQ0VTUzsKIH0KIApAQCAtODEwLDYgKzg0Nyw3IEBA IHN0YXRpYyB2b2lkIG5vdGlmeV9yZXN1bWUoZXZlbnRfY29ubl9zdGF0ZV90ICpjcywKIAogc3Rh dGljIGludCBzdGFydF9saW5nZXJpbmdfY2xvc2VfY29tbW9uKGV2ZW50X2Nvbm5fc3RhdGVfdCAq Y3MsIGludCBpbl93b3JrZXIpCiB7CisgICAgaW50IGRvbmUgPSAwOwogICAgIGFwcl9zdGF0dXNf dCBydjsKICAgICBzdHJ1Y3QgdGltZW91dF9xdWV1ZSAqcTsKICAgICBhcHJfc29ja2V0X3QgKmNz ZCA9IGNzLT5wZmQuZGVzYy5zOwpAQCAtODQyLDI1ICs4ODAsMjQgQEAgc3RhdGljIGludCBzdGFy dF9saW5nZXJpbmdfY2xvc2VfY29tbW9uKGV2ZW50X2Nvbm4KICAgICBlbHNlIHsKICAgICAgICAg Y3MtPmMtPnNiaCA9IE5VTEw7CiAgICAgfQotICAgIGFwcl90aHJlYWRfbXV0ZXhfbG9jayh0aW1l b3V0X211dGV4KTsKLSAgICBUT19RVUVVRV9BUFBFTkQocSwgY3MpOwogICAgIGNzLT5wZmQucmVx ZXZlbnRzID0gKAogICAgICAgICAgICAgY3MtPnB1Yi5zZW5zZSA9PSBDT05OX1NFTlNFX1dBTlRf V1JJVEUgPyBBUFJfUE9MTE9VVCA6CiAgICAgICAgICAgICAgICAgICAgIEFQUl9QT0xMSU4pIHwg QVBSX1BPTExIVVAgfCBBUFJfUE9MTEVSUjsKICAgICBjcy0+cHViLnNlbnNlID0gQ09OTl9TRU5T RV9ERUZBVUxUOworICAgIGFwcl90aHJlYWRfbXV0ZXhfbG9jayh0aW1lb3V0X211dGV4KTsKICAg ICBydiA9IGFwcl9wb2xsc2V0X2FkZChldmVudF9wb2xsc2V0LCAmY3MtPnBmZCk7CisgICAgaWYg KHJ2ID09IEFQUl9TVUNDRVNTIHx8IEFQUl9TVEFUVVNfSVNfRUVYSVNUKHJ2KSkgeworICAgICAg ICBUT19RVUVVRV9BUFBFTkQocSwgY3MpOworICAgICAgICBkb25lID0gMTsKKyAgICB9CiAgICAg YXByX3RocmVhZF9tdXRleF91bmxvY2sodGltZW91dF9tdXRleCk7Ci0gICAgaWYgKHJ2ICE9IEFQ Ul9TVUNDRVNTICYmICFBUFJfU1RBVFVTX0lTX0VFWElTVChydikpIHsKKyAgICBpZiAoIWRvbmUp IHsKICAgICAgICAgYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX0VSUiwgcnYsIGFwX3Nl cnZlcl9jb25mLCBBUExPR05PKDAzMDkyKQogICAgICAgICAgICAgICAgICAgICAgInN0YXJ0X2xp bmdlcmluZ19jbG9zZTogYXByX3BvbGxzZXRfYWRkIGZhaWx1cmUiKTsKLSAgICAgICAgYXByX3Ro cmVhZF9tdXRleF9sb2NrKHRpbWVvdXRfbXV0ZXgpOwotICAgICAgICBUT19RVUVVRV9SRU1PVkUo cSwgY3MpOwotICAgICAgICBhcHJfdGhyZWFkX211dGV4X3VubG9jayh0aW1lb3V0X211dGV4KTsK ICAgICAgICAgYXByX3NvY2tldF9jbG9zZShjcy0+cGZkLmRlc2Mucyk7CiAgICAgICAgIGFwX3B1 c2hfcG9vbCh3b3JrZXJfcXVldWVfaW5mbywgY3MtPnApOwotICAgICAgICByZXR1cm4gMDsKICAg ICB9Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGRvbmU7CiB9CiAKIC8qCkBAIC0xMTI0LDE2 ICsxMTYxLDI3IEBAIHJlYWRfcmVxdWVzdDoKICAgICAgICAgICAgICAqIFNldCBhIHdyaXRlIHRp bWVvdXQgZm9yIHRoaXMgY29ubmVjdGlvbiwgYW5kIGxldCB0aGUKICAgICAgICAgICAgICAqIGV2 ZW50IHRocmVhZCBwb2xsIGZvciB3cml0ZWFiaWxpdHkuCiAgICAgICAgICAgICAgKi8KKyAgICAg ICAgICAgIGludCBkb25lID0gMDsKICAgICAgICAgICAgIGNzLT5xdWV1ZV90aW1lc3RhbXAgPSBh cHJfdGltZV9ub3coKTsKICAgICAgICAgICAgIG5vdGlmeV9zdXNwZW5kKGNzKTsKLSAgICAgICAg ICAgIGFwcl90aHJlYWRfbXV0ZXhfbG9jayh0aW1lb3V0X211dGV4KTsKLSAgICAgICAgICAgIFRP X1FVRVVFX0FQUEVORChjcy0+c2MtPndjX3EsIGNzKTsKICAgICAgICAgICAgIGNzLT5wZmQucmVx ZXZlbnRzID0gKAogICAgICAgICAgICAgICAgICAgICBjcy0+cHViLnNlbnNlID09IENPTk5fU0VO U0VfV0FOVF9SRUFEID8gQVBSX1BPTExJTiA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QVBSX1BPTExPVVQpIHwgQVBSX1BPTExIVVAgfCBBUFJfUE9MTEVSUjsKICAgICAgICAgICAgIGNz LT5wdWIuc2Vuc2UgPSBDT05OX1NFTlNFX0RFRkFVTFQ7CisgICAgICAgICAgICBhcHJfdGhyZWFk X211dGV4X2xvY2sodGltZW91dF9tdXRleCk7CiAgICAgICAgICAgICByYyA9IGFwcl9wb2xsc2V0 X2FkZChldmVudF9wb2xsc2V0LCAmY3MtPnBmZCk7CisgICAgICAgICAgICBpZiAocmMgPT0gQVBS X1NVQ0NFU1MgfHwgQVBSX1NUQVRVU19JU19FRVhJU1QocmMpKSB7CisgICAgICAgICAgICAgICAg VE9fUVVFVUVfQVBQRU5EKGNzLT5zYy0+d2NfcSwgY3MpOworICAgICAgICAgICAgICAgIGRvbmUg PSAxOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYXByX3RocmVhZF9tdXRleF91bmxvY2so dGltZW91dF9tdXRleCk7CisgICAgICAgICAgICBpZiAoIWRvbmUpIHsKKyAgICAgICAgICAgICAg ICBhcF9sb2dfZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfRVJSLCByYywgYXBfc2VydmVyX2NvbmYs IEFQTE9HTk8oMDM0NjUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9jZXNzX3Nv Y2tldDogYXByX3BvbGxzZXRfYWRkIGZhaWx1cmUgZm9yICIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIndyaXRlIGNvbXBsZXRpb24iKTsKKyAgICAgICAgICAgICAgICBhcHJfc29ja2V0 X2Nsb3NlKGNzLT5wZmQuZGVzYy5zKTsKKyAgICAgICAgICAgICAgICBhcF9wdXNoX3Bvb2wod29y a2VyX3F1ZXVlX2luZm8sIGNzLT5wKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVy bjsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjLT5rZWVwYWxpdmUgIT0gQVBfQ09OTl9L RUVQQUxJVkUgfHwgYy0+YWJvcnRlZCB8fApAQCAtMTE2MSwyMCArMTIwOSwyNiBAQCByZWFkX3Jl cXVlc3Q6CiAgICAgICAgICAqIHRpbWVvdXQgdG9kYXkuICBXaXRoIGEgbm9ybWFsIGNsaWVudCwg dGhlIHNvY2tldCB3aWxsIGJlIHJlYWRhYmxlIGluCiAgICAgICAgICAqIGEgZmV3IG1pbGxpc2Vj b25kcyBhbnl3YXkuCiAgICAgICAgICAqLworICAgICAgICBpbnQgZG9uZSA9IDA7CiAgICAgICAg IGNzLT5xdWV1ZV90aW1lc3RhbXAgPSBhcHJfdGltZV9ub3coKTsKICAgICAgICAgbm90aWZ5X3N1 c3BlbmQoY3MpOwotICAgICAgICBhcHJfdGhyZWFkX211dGV4X2xvY2sodGltZW91dF9tdXRleCk7 Ci0gICAgICAgIFRPX1FVRVVFX0FQUEVORChjcy0+c2MtPmthX3EsIGNzKTsKIAogICAgICAgICAv KiBBZGQgd29yayB0byBwb2xsc2V0LiAqLwogICAgICAgICBjcy0+cGZkLnJlcWV2ZW50cyA9IEFQ Ul9QT0xMSU47CisgICAgICAgIGFwcl90aHJlYWRfbXV0ZXhfbG9jayh0aW1lb3V0X211dGV4KTsK ICAgICAgICAgcmMgPSBhcHJfcG9sbHNldF9hZGQoZXZlbnRfcG9sbHNldCwgJmNzLT5wZmQpOwor ICAgICAgICBpZiAocmMgPT0gQVBSX1NVQ0NFU1MgfHwgQVBSX1NUQVRVU19JU19FRVhJU1QocmMp KSB7CisgICAgICAgICAgICBUT19RVUVVRV9BUFBFTkQoY3MtPnNjLT5rYV9xLCBjcyk7CisgICAg ICAgICAgICBkb25lID0gMTsKKyAgICAgICAgfQogICAgICAgICBhcHJfdGhyZWFkX211dGV4X3Vu bG9jayh0aW1lb3V0X211dGV4KTsKLQotICAgICAgICBpZiAocmMgIT0gQVBSX1NVQ0NFU1MpIHsK KyAgICAgICAgaWYgKCFkb25lKSB7CiAgICAgICAgICAgICBhcF9sb2dfZXJyb3IoQVBMT0dfTUFS SywgQVBMT0dfRVJSLCByYywgYXBfc2VydmVyX2NvbmYsIEFQTE9HTk8oMDMwOTMpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgInByb2Nlc3Nfc29ja2V0OiBhcHJfcG9sbHNldF9hZGQgZmFpbHVy ZSIpOwotICAgICAgICAgICAgQVBfREVCVUdfQVNTRVJUKHJjID09IEFQUl9TVUNDRVNTKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAicHJvY2Vzc19zb2NrZXQ6IGFwcl9wb2xsc2V0X2FkZCBm YWlsdXJlIGZvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImtlZXAgYWxpdmUiKTsKKyAg ICAgICAgICAgIGFwcl9zb2NrZXRfY2xvc2UoY3MtPnBmZC5kZXNjLnMpOworICAgICAgICAgICAg YXBfcHVzaF9wb29sKHdvcmtlcl9xdWV1ZV9pbmZvLCBjcy0+cCk7CisgICAgICAgICAgICByZXR1 cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAoY3MtPnB1Yi5zdGF0ZSA9PSBDT05O X1NUQVRFX1NVU1BFTkRFRCkgewpAQCAtMTM0NSw3ICsxMzk5LDE0IEBAIHN0YXRpYyB2b2lkIGdl dF93b3JrZXIoaW50ICpoYXZlX2lkbGVfd29ya2VyX3AsIGluCiBzdGF0aWMgQVBSX1JJTkdfSEVB RCh0aW1lcl9mcmVlX3JpbmdfdCwgdGltZXJfZXZlbnRfdCkgdGltZXJfZnJlZV9yaW5nOwogCiBz dGF0aWMgYXByX3NraXBsaXN0ICp0aW1lcl9za2lwbGlzdDsKK3N0YXRpYyB2b2xhdGlsZSBhcHJf dGltZV90IHRpbWVyc19uZXh0X2V4cGlyeTsKIAorLyogU2FtZSBnb2FsIGFzIGZvciBUSU1FT1VU X0ZVREdFX0ZBQ1RPUiAoYXZvaWQgZXh0cmEgcG9sbCBjYWxscyksIGJ1dCBhcHBsaWVkCisgKiB0 byB0aW1lcnMuIFNpbmNlIHRoZWlyIHRpbWVvdXRzIGFyZSBjdXN0b20gKHVzZXIgZGVmaW5lZCks IHdlIGNhbid0IGJlIHRvbworICogYXBwcm94aW1hdGl2ZSBoZXJlIChoZW5jZSB1c2luZyAwLjAx cykuCisgKi8KKyNkZWZpbmUgRVZFTlRfRlVER0VfRkFDVE9SIGFwcl90aW1lX2Zyb21fbXNlYygx MCkKKwogLyogVGhlIGZvbGxvd2luZyBjb21wYXJlIGZ1bmN0aW9uIGlzIHVzZWQgYnkgYXByX3Nr aXBsaXN0X2luc2VydCgpIHRvIGtlZXAgdGhlCiAgKiBlbGVtZW50cyAodGltZXJzKSBzb3J0ZWQg YW5kIHByb3ZpZGUgTyhsb2cgbikgY29tcGxleGl0eSAodGhpcyBpcyBhbHNvIHRydWUKICAqIGZv ciBhcHJfc2tpcGxpc3Rfe2ZpbmQscmVtb3ZlfSgpLCBidXQgdGhvc2UgYXJlIG5vdCB1c2VkIGlu IE1QTSBldmVudCB3aGVyZQpAQCAtMTM5MSw5ICsxNDUyLDI1IEBAIHN0YXRpYyBhcHJfc3RhdHVz X3QgZXZlbnRfcmVnaXN0ZXJfdGltZWRfY2FsbGJhY2soCiAgICAgLyogWFhYWFg6IG9wdGltaXpl ICovCiAgICAgdGUtPndoZW4gPSB0ICsgYXByX3RpbWVfbm93KCk7CiAKLSAgICAvKiBPa2F5LCBh ZGQgc29ydGVkIGJ5IHdoZW4uLiAqLwotICAgIGFwcl9za2lwbGlzdF9pbnNlcnQodGltZXJfc2tp cGxpc3QsIHRlKTsKKyAgICB7IAorICAgICAgICBhcHJfdGltZV90IG5leHRfZXhwaXJ5OwogCisg ICAgICAgIC8qIE9rYXksIGFkZCBzb3J0ZWQgYnkgd2hlbi4uICovCisgICAgICAgIGFwcl9za2lw bGlzdF9pbnNlcnQodGltZXJfc2tpcGxpc3QsIHRlKTsKKworICAgICAgICAvKiBDaGVhcGx5IHVw ZGF0ZSB0aGUgb3ZlcmFsbCB0aW1lcnMnIG5leHQgZXhwaXJ5IGFjY29yZGluZyB0bworICAgICAg ICAgKiB0aGlzIGV2ZW50LCBpZiBuZWNlc3NhcnkuCisgICAgICAgICAqLworICAgICAgICBuZXh0 X2V4cGlyeSA9IHRpbWVyc19uZXh0X2V4cGlyeTsKKyAgICAgICAgaWYgKCFuZXh0X2V4cGlyeSB8 fCBuZXh0X2V4cGlyeSA+IHRlLT53aGVuICsgRVZFTlRfRlVER0VfRkFDVE9SKSB7CisgICAgICAg ICAgICB0aW1lcnNfbmV4dF9leHBpcnkgPSB0ZS0+d2hlbjsKKyAgICAgICAgICAgIC8qIFVuYmxv Y2sgdGhlIHBvbGwoKWluZyBsaXN0ZW5lciBmb3IgaXQgdG8gdXBkYXRlIGl0cyB0aW1lb3V0LiAq LworICAgICAgICAgICAgaWYgKGxpc3RlbmVyX2lzX3dha2VhYmxlKSB7CisgICAgICAgICAgICAg ICAgYXByX3BvbGxzZXRfd2FrZXVwKGV2ZW50X3BvbGxzZXQpOworICAgICAgICAgICAgfQorICAg ICAgICB9CisgICAgfQorCiAgICAgYXByX3RocmVhZF9tdXRleF91bmxvY2soZ190aW1lcl9za2lw bGlzdF9tdHgpOwogCiAgICAgcmV0dXJuIEFQUl9TVUNDRVNTOwpAQCAtMTQyNywxNSArMTUwNCwx NCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2xpbmdlcmluZ19jbG9zZShldmVudF9jb25uX3N0YQog CiAgICAgYXByX3RocmVhZF9tdXRleF9sb2NrKHRpbWVvdXRfbXV0ZXgpOwogICAgIHJ2ID0gYXBy X3BvbGxzZXRfcmVtb3ZlKGV2ZW50X3BvbGxzZXQsIHBmZCk7Ci0gICAgQVBfREVCVUdfQVNTRVJU KHJ2ID09IEFQUl9TVUNDRVNTKTsKKyAgICBUT19RVUVVRV9SRU1PVkUocSwgY3MpOworICAgIGFw cl90aHJlYWRfbXV0ZXhfdW5sb2NrKHRpbWVvdXRfbXV0ZXgpOworICAgIEFQX0RFQlVHX0FTU0VS VChydiA9PSBBUFJfU1VDQ0VTUyB8fCAgQVBSX1NUQVRVU19JU19OT1RGT1VORChydikpOworICAg IFRPX1FVRVVFX0VMRU1fSU5JVChjcyk7CiAKICAgICBydiA9IGFwcl9zb2NrZXRfY2xvc2UoY3Nk KTsKICAgICBBUF9ERUJVR19BU1NFUlQocnYgPT0gQVBSX1NVQ0NFU1MpOwogCi0gICAgVE9fUVVF VUVfUkVNT1ZFKHEsIGNzKTsKLSAgICBhcHJfdGhyZWFkX211dGV4X3VubG9jayh0aW1lb3V0X211 dGV4KTsKLSAgICBUT19RVUVVRV9FTEVNX0lOSVQoY3MpOwotCiAgICAgYXBfcHVzaF9wb29sKHdv cmtlcl9xdWV1ZV9pbmZvLCBjcy0+cCk7CiAgICAgaWYgKGR5aW5nKQogICAgICAgICBhcF9xdWV1 ZV9pbnRlcnJ1cHRfb25lKHdvcmtlcl9xdWV1ZSk7CkBAIC0xNDQ5LDEzICsxNTI1LDEzIEBAIHN0 YXRpYyB2b2lkIHByb2Nlc3NfdGltZW91dF9xdWV1ZShzdHJ1Y3QgdGltZW91dF9xCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXByX3RpbWVfdCB0aW1lb3V0X3RpbWUsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqZnVuYykoZXZlbnRfY29ubl9zdGF0 ZV90ICopKQogewotICAgIGludCB0b3RhbCA9IDAsIGNvdW50OworICAgIGFwcl91aW50MzJfdCB0 b3RhbCA9IDAsIGNvdW50OwogICAgIGV2ZW50X2Nvbm5fc3RhdGVfdCAqZmlyc3QsICpjcywgKmxh c3Q7CiAgICAgc3RydWN0IHRpbWVvdXRfaGVhZF90IHRyYXNoOwogICAgIHN0cnVjdCB0aW1lb3V0 X3F1ZXVlICpxcDsKICAgICBhcHJfc3RhdHVzX3QgcnY7CiAKLSAgICBpZiAoISpxLT50b3RhbCkg eworICAgIGlmICghYXByX2F0b21pY19yZWFkMzIocS0+dG90YWwpKSB7CiAgICAgICAgIHJldHVy bjsKICAgICB9CiAKQEAgLTE0NjQsMjAgKzE1NDAsMzIgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc190 aW1lb3V0X3F1ZXVlKHN0cnVjdCB0aW1lb3V0X3EKICAgICAgICAgY291bnQgPSAwOwogICAgICAg ICBjcyA9IGZpcnN0ID0gbGFzdCA9IEFQUl9SSU5HX0ZJUlNUKCZxcC0+aGVhZCk7CiAgICAgICAg IHdoaWxlIChjcyAhPSBBUFJfUklOR19TRU5USU5FTCgmcXAtPmhlYWQsIGV2ZW50X2Nvbm5fc3Rh dGVfdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfbGlz dCkKLSAgICAgICAgICAgICAgIC8qIFRyYXNoIHRoZSBlbnRyeSBpZjoKLSAgICAgICAgICAgICAg ICAqIC0gbm8gdGltZW91dF90aW1lIHdhcyBnaXZlbiAoYXNrZWQgZm9yIGFsbCksIG9yCi0gICAg ICAgICAgICAgICAgKiAtIGl0IGV4cGlyZWQgKGFjY29yZGluZyB0byB0aGUgcXVldWUgdGltZW91 dCksIG9yCi0gICAgICAgICAgICAgICAgKiAtIHRoZSBzeXN0ZW0gY2xvY2sgc2tld2VkIGluIHRo ZSBwYXN0OiBubyBlbnRyeSBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAqICAgcmVnaXN0ZXJl ZCBhYm92ZSB0aGUgZ2l2ZW4gdGltZW91dF90aW1lICh+bm93KSArIHRoZSBxdWV1ZQotICAgICAg ICAgICAgICAgICogICB0aW1lb3V0LCB3ZSB3b24ndCBrZWVwIGFueSBoZXJlIChlZy4gZm9yIGNl bnR1cmllcykuCi0gICAgICAgICAgICAgICAgKiBTdG9wIG90aGVyd2lzZSwgbm8gZm9sbG93aW5n IGVudHJ5IHdpbGwgbWF0Y2ggdGhhbmtzIHRvIHRoZQotICAgICAgICAgICAgICAgICogc2luZ2xl IHRpbWVvdXQgcGVyIHF1ZXVlIChlbnRyaWVzIGFyZSBhZGRlZCB0byB0aGUgZW5kISkuCi0gICAg ICAgICAgICAgICAgKiBUaGlzIGFsbG93cyBtYWludGVuYW5jZSBpbiBPKDEpLgotICAgICAgICAg ICAgICAgICovCi0gICAgICAgICAgICAgICAmJiAoIXRpbWVvdXRfdGltZQotICAgICAgICAgICAg ICAgICAgIHx8IGNzLT5xdWV1ZV90aW1lc3RhbXAgKyBxcC0+dGltZW91dCA8IHRpbWVvdXRfdGlt ZQotICAgICAgICAgICAgICAgICAgIHx8IGNzLT5xdWV1ZV90aW1lc3RhbXAgPiB0aW1lb3V0X3Rp bWUgKyBxcC0+dGltZW91dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRpbWVvdXRfbGlzdCkpIHsKKyAgICAgICAgICAgIC8qIFRyYXNoIHRoZSBlbnRyeSBpZjoK KyAgICAgICAgICAgICAqIC0gbm8gdGltZW91dF90aW1lIHdhcyBnaXZlbiAoYXNrZWQgZm9yIGFs bCksIG9yCisgICAgICAgICAgICAgKiAtIGl0IGV4cGlyZWQgKGFjY29yZGluZyB0byB0aGUgcXVl dWUgdGltZW91dCksIG9yCisgICAgICAgICAgICAgKiAtIHRoZSBzeXN0ZW0gY2xvY2sgc2tld2Vk IGluIHRoZSBwYXN0OiBubyBlbnRyeSBzaG91bGQgYmUKKyAgICAgICAgICAgICAqICAgcmVnaXN0 ZXJlZCBhYm92ZSB0aGUgZ2l2ZW4gdGltZW91dF90aW1lICh+bm93KSArIHRoZSBxdWV1ZQorICAg ICAgICAgICAgICogICB0aW1lb3V0LCB3ZSB3b24ndCBrZWVwIGFueSBoZXJlIChlZy4gZm9yIGNl bnR1cmllcykuCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogT3RoZXJ3aXNlIHN0b3As IG5vIGZvbGxvd2luZyBlbnRyeSB3aWxsIG1hdGNoIHRoYW5rcyB0byB0aGUKKyAgICAgICAgICAg ICAqIHNpbmdsZSB0aW1lb3V0IHBlciBxdWV1ZSAoZW50cmllcyBhcmUgYWRkZWQgdG8gdGhlIGVu ZCEpLgorICAgICAgICAgICAgICogVGhpcyBhbGxvd3MgbWFpbnRlbmFuY2UgaW4gTygxKS4KKyAg ICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHRpbWVvdXRfdGltZQorICAgICAgICAgICAg ICAgICAgICAmJiBjcy0+cXVldWVfdGltZXN0YW1wICsgcXAtPnRpbWVvdXQgPiB0aW1lb3V0X3Rp bWUKKyAgICAgICAgICAgICAgICAgICAgJiYgY3MtPnF1ZXVlX3RpbWVzdGFtcCA8IHRpbWVvdXRf dGltZSArIHFwLT50aW1lb3V0KSB7CisgICAgICAgICAgICAgICAgLyogU2luY2UgdGhpcyBpcyB0 aGUgbmV4dCBleHBpcmluZyBvZiB0aGlzIHF1ZXVlLCB1cGRhdGUgdGhlCisgICAgICAgICAgICAg ICAgICogb3ZlcmFsbCBxdWV1ZXMnIG5leHQgZXhwaXJ5IGlmIGl0J3MgbGF0ZXIgdGhhbiB0aGlz IG9uZS4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBhcHJfdGltZV90IHFf ZXhwaXJ5ID0gY3MtPnF1ZXVlX3RpbWVzdGFtcCArIHFwLT50aW1lb3V0OworICAgICAgICAgICAg ICAgIGFwcl90aW1lX3QgbmV4dF9leHBpcnkgPSBxdWV1ZXNfbmV4dF9leHBpcnk7CisgICAgICAg ICAgICAgICAgaWYgKCFuZXh0X2V4cGlyeSB8fCBuZXh0X2V4cGlyeSA+IHFfZXhwaXJ5KSB7Cisg ICAgICAgICAgICAgICAgICAgIHF1ZXVlc19uZXh0X2V4cGlyeSA9IHFfZXhwaXJ5OworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKwogICAg ICAgICAgICAgbGFzdCA9IGNzOwogICAgICAgICAgICAgcnYgPSBhcHJfcG9sbHNldF9yZW1vdmUo ZXZlbnRfcG9sbHNldCwgJmNzLT5wZmQpOwogICAgICAgICAgICAgaWYgKHJ2ICE9IEFQUl9TVUND RVNTICYmICFBUFJfU1RBVFVTX0lTX05PVEZPVU5EKHJ2KSkgewpAQCAtMTQ5Myw2ICsxNTgxLDgg QEAgc3RhdGljIHZvaWQgcHJvY2Vzc190aW1lb3V0X3F1ZXVlKHN0cnVjdCB0aW1lb3V0X3EKICAg ICAgICAgQVBSX1JJTkdfVU5TUExJQ0UoZmlyc3QsIGxhc3QsIHRpbWVvdXRfbGlzdCk7CiAgICAg ICAgIEFQUl9SSU5HX1NQTElDRV9UQUlMKCZ0cmFzaCwgZmlyc3QsIGxhc3QsIGV2ZW50X2Nvbm5f c3RhdGVfdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9saXN0KTsKKyAg ICAgICAgQVBfREVCVUdfQVNTRVJUKGFwcl9hdG9taWNfcmVhZDMyKHEtPnRvdGFsKSA+PSBjb3Vu dCk7CisgICAgICAgIGFwcl9hdG9taWNfc3ViMzIocS0+dG90YWwsIGNvdW50KTsKICAgICAgICAg cXAtPmNvdW50IC09IGNvdW50OwogICAgICAgICB0b3RhbCArPSBjb3VudDsKICAgICB9CkBAIC0x NDk5LDggKzE1ODksNiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3RpbWVvdXRfcXVldWUoc3RydWN0 IHRpbWVvdXRfcQogICAgIGlmICghdG90YWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFQX0RF QlVHX0FTU0VSVCgqcS0+dG90YWwgPj0gdG90YWwpOwotICAgICpxLT50b3RhbCAtPSB0b3RhbDsK ICAgICBhcHJfdGhyZWFkX211dGV4X3VubG9jayh0aW1lb3V0X211dGV4KTsKICAgICBmaXJzdCA9 IEFQUl9SSU5HX0ZJUlNUKCZ0cmFzaCk7CiAgICAgZG8gewpAQCAtMTUxMiwxMyArMTYwMCwyOCBA QCBzdGF0aWMgdm9pZCBwcm9jZXNzX3RpbWVvdXRfcXVldWUoc3RydWN0IHRpbWVvdXRfcQogICAg IGFwcl90aHJlYWRfbXV0ZXhfbG9jayh0aW1lb3V0X211dGV4KTsKIH0KIAorc3RhdGljIHZvaWQg cHJvY2Vzc19rZWVwYWxpdmVfcXVldWUoYXByX3RpbWVfdCB0aW1lb3V0X3RpbWUpCit7CisgICAg LyogSWYgYWxsIHdvcmtlcnMgYXJlIGJ1c3ksIHdlIGtpbGwgb2xkZXIga2VlcC1hbGl2ZSBjb25u ZWN0aW9ucyBzbworICAgICAqIHRoYXQgdGhleSBtYXkgY29ubmVjdCB0byBhbm90aGVyIHByb2Nl c3MuCisgICAgICovCisgICAgaWYgKCF0aW1lb3V0X3RpbWUpIHsKKyAgICAgICAgYXBfbG9nX2Vy cm9yKEFQTE9HX01BUkssIEFQTE9HX1RSQUNFMSwgMCwgYXBfc2VydmVyX2NvbmYsCisgICAgICAg ICAgICAgICAgICAgICAiQWxsIHdvcmtlcnMgYXJlIGJ1c3kgb3IgZHlpbmcsIHdpbGwgY2xvc2Ug JXUgIgorICAgICAgICAgICAgICAgICAgICAgImtlZXAtYWxpdmUgY29ubmVjdGlvbnMiLAorICAg ICAgICAgICAgICAgICAgICAgYXByX2F0b21pY19yZWFkMzIoa2VlcGFsaXZlX3EtPnRvdGFsKSk7 CisgICAgfQorICAgIHByb2Nlc3NfdGltZW91dF9xdWV1ZShrZWVwYWxpdmVfcSwgdGltZW91dF90 aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5nZXJpbmdfY2xvc2Vfbm9u YmxvY2tpbmcpOworfQorCiBzdGF0aWMgdm9pZCAqIEFQUl9USFJFQURfRlVOQyBsaXN0ZW5lcl90 aHJlYWQoYXByX3RocmVhZF90ICogdGhkLCB2b2lkICpkdW1teSkKIHsKLSAgICB0aW1lcl9ldmVu dF90ICplcDsKICAgICB0aW1lcl9ldmVudF90ICp0ZTsKICAgICBhcHJfc3RhdHVzX3QgcmM7CiAg ICAgcHJvY19pbmZvICp0aSA9IGR1bW15OwogICAgIGludCBwcm9jZXNzX3Nsb3QgPSB0aS0+cHNs b3Q7CisgICAgc3RydWN0IHByb2Nlc3Nfc2NvcmUgKnBzID0gYXBfZ2V0X3Njb3JlYm9hcmRfcHJv Y2Vzcyhwcm9jZXNzX3Nsb3QpOwogICAgIGFwcl9wb29sX3QgKnRwb29sID0gYXByX3RocmVhZF9w b29sX2dldCh0aGQpOwogICAgIHZvaWQgKmNzZCA9IE5VTEw7CiAgICAgYXByX3Bvb2xfdCAqcHRy YW5zOyAgICAgICAgIC8qIFBvb2wgZm9yIHBlci10cmFuc2FjdGlvbiBzdHVmZiAqLwpAQCAtMTUz NCwxNCArMTYzNyw2IEBAIHN0YXRpYyB2b2lkICogQVBSX1RIUkVBRF9GVU5DIGxpc3RlbmVyX3Ro cmVhZChhcHJfCiAgICAgbGFzdF9sb2cgPSBhcHJfdGltZV9ub3coKTsKICAgICBmcmVlKHRpKTsK IAotICAgIC8qIHRoZSBmb2xsb3dpbmcgdGltZXMgb3V0IGV2ZW50cyB0aGF0IGFyZSByZWFsbHkg Y2xvc2UgaW4gdGhlIGZ1dHVyZQotICAgICAqICAgdG8gcHJldmVudCBleHRyYSBwb2xsIGNhbGxz Ci0gICAgICoKLSAgICAgKiBjdXJyZW50IHZhbHVlIGlzIC4xIHNlY29uZAotICAgICAqLwotI2Rl ZmluZSBUSU1FT1VUX0ZVREdFX0ZBQ1RPUiAxMDAwMDAKLSNkZWZpbmUgRVZFTlRfRlVER0VfRkFD VE9SIDEwMDAwCi0KICAgICByYyA9IGluaXRfcG9sbHNldCh0cG9vbCk7CiAgICAgaWYgKHJjICE9 IEFQUl9TVUNDRVNTKSB7CiAgICAgICAgIGFwX2xvZ19lcnJvcihBUExPR19NQVJLLCBBUExPR19F UlIsIHJjLCBhcF9zZXJ2ZXJfY29uZiwKQEAgLTE1NTksNiArMTY1NCw3IEBAIHN0YXRpYyB2b2lk ICogQVBSX1RIUkVBRF9GVU5DIGxpc3RlbmVyX3RocmVhZChhcHJfCiAKICAgICBmb3IgKDs7KSB7 CiAgICAgICAgIGludCB3b3JrZXJzX3dlcmVfYnVzeSA9IDA7CisKICAgICAgICAgaWYgKGxpc3Rl bmVyX21heV9leGl0KSB7CiAgICAgICAgICAgICBjbG9zZV9saXN0ZW5lcnMocHJvY2Vzc19zbG90 LCAmY2xvc2VkKTsKICAgICAgICAgICAgIGlmICh0ZXJtaW5hdGVfbW9kZSA9PSBTVF9VTkdSQUNF RlVMCkBAIC0xNTcyLDcgKzE2NjgsNyBAQCBzdGF0aWMgdm9pZCAqIEFQUl9USFJFQURfRlVOQyBs aXN0ZW5lcl90aHJlYWQoYXByXwogICAgICAgICBub3cgPSBhcHJfdGltZV9ub3coKTsKICAgICAg ICAgaWYgKEFQTE9HdHJhY2U2KGFwX3NlcnZlcl9jb25mKSkgewogICAgICAgICAgICAgLyogdHJh Y2UgbG9nIHN0YXR1cyBldmVyeSBzZWNvbmQgKi8KLSAgICAgICAgICAgIGlmIChub3cgLSBsYXN0 X2xvZyA+IGFwcl90aW1lX2Zyb21fbXNlYygxMDAwKSkgeworICAgICAgICAgICAgaWYgKG5vdyAt IGxhc3RfbG9nID4gYXByX3RpbWVfZnJvbV9zZWMoMSkpIHsKICAgICAgICAgICAgICAgICBsYXN0 X2xvZyA9IG5vdzsKICAgICAgICAgICAgICAgICBhcHJfdGhyZWFkX211dGV4X2xvY2sodGltZW91 dF9tdXRleCk7CiAgICAgICAgICAgICAgICAgYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9H X1RSQUNFNiwgMCwgYXBfc2VydmVyX2NvbmYsCkBAIC0xNTgwLDggKzE2NzYsOCBAQCBzdGF0aWMg dm9pZCAqIEFQUl9USFJFQURfRlVOQyBsaXN0ZW5lcl90aHJlYWQoYXByXwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAia2VlcC1hbGl2ZTogJWQgbGluZ2VyaW5nOiAlZCBzdXNwZW5kZWQ6 ICV1KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcl9hdG9taWNfcmVhZDMyKCZj b25uZWN0aW9uX2NvdW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXByX2F0b21p Y19yZWFkMzIoJmNsb2dnZWRfY291bnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq d3JpdGVfY29tcGxldGlvbl9xLT50b3RhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KmtlZXBhbGl2ZV9xLT50b3RhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXByX2F0 b21pY19yZWFkMzIod3JpdGVfY29tcGxldGlvbl9xLT50b3RhbCksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFwcl9hdG9taWNfcmVhZDMyKGtlZXBhbGl2ZV9xLT50b3RhbCksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFwcl9hdG9taWNfcmVhZDMyKCZsaW5nZXJpbmdfY291 bnQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHJfYXRvbWljX3JlYWQzMigmc3Vz cGVuZGVkX2NvdW50KSk7CiAgICAgICAgICAgICAgICAgaWYgKGR5aW5nKSB7CkBAIC0xNTk0LDMy ICsxNjkwLDcxIEBAIHN0YXRpYyB2b2lkICogQVBSX1RIUkVBRF9GVU5DIGxpc3RlbmVyX3RocmVh ZChhcHJfCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBhcHJfdGhyZWFkX211 dGV4X2xvY2soZ190aW1lcl9za2lwbGlzdF9tdHgpOwotICAgICAgICB0ZSA9IGFwcl9za2lwbGlz dF9wZWVrKHRpbWVyX3NraXBsaXN0KTsKLSAgICAgICAgaWYgKHRlKSB7Ci0gICAgICAgICAgICBp ZiAodGUtPndoZW4gPiBub3cpIHsKLSAgICAgICAgICAgICAgICB0aW1lb3V0X2ludGVydmFsID0g dGUtPndoZW4gLSBub3c7CisgICAgICAgIC8qIFN0YXJ0IHdpdGggYW4gaW5maW5pdGUgcG9sbCgp IHRpbWVvdXQgYW5kIHVwZGF0ZSBpdCBhY2NvcmRpbmcgdG8KKyAgICAgICAgICogdGhlIG5leHQg ZXhwaXJpbmcgdGltZXIgb3IgcXVldWUgZW50cnkuIElmIHRoZXJlIGFyZSBub25lLCBlaXRoZXIK KyAgICAgICAgICogdGhlIGxpc3RlbmVyIGlzIHdha2VhYmxlIGFuZCBpdCBjYW4gcG9sbCgpIGlu ZGVmaW5pdGVseSB1bnRpbCBhIHdha2UKKyAgICAgICAgICogdXAgb2NjdXJzLCBvdGhlcndpc2Ug cGVyaW9kaWMgY2hlY2tzIChtYWludGVuYW5jZSwgc2h1dGRvd24sIC4uLikKKyAgICAgICAgICog bXVzdCBiZSBwZXJmb3JtZWQuCisgICAgICAgICAqLworICAgICAgICB0aW1lb3V0X2ludGVydmFs ID0gLTE7CisKKyAgICAgICAgLyogUHVzaCBleHBpcmVkIHRpbWVycyB0byBhIHdvcmtlciwgdGhl IGZpcnN0IHJlbWFpbmluZyBvbmUgZGV0ZXJtaW5lcworICAgICAgICAgKiB0aGUgbWF4aW11bSB0 aW1lIHRvIHBvbGwoKSBiZWxvdywgaWYgYW55LgorICAgICAgICAgKi8KKyAgICAgICAgdGltZW91 dF90aW1lID0gdGltZXJzX25leHRfZXhwaXJ5OworICAgICAgICBpZiAodGltZW91dF90aW1lICYm IHRpbWVvdXRfdGltZSA8IG5vdyArIEVWRU5UX0ZVREdFX0ZBQ1RPUikgeworICAgICAgICAgICAg YXByX3RocmVhZF9tdXRleF9sb2NrKGdfdGltZXJfc2tpcGxpc3RfbXR4KTsKKyAgICAgICAgICAg IHdoaWxlICgodGUgPSBhcHJfc2tpcGxpc3RfcGVlayh0aW1lcl9za2lwbGlzdCkpKSB7CisgICAg ICAgICAgICAgICAgaWYgKHRlLT53aGVuID4gbm93ICsgRVZFTlRfRlVER0VfRkFDVE9SKSB7Cisg ICAgICAgICAgICAgICAgICAgIHRpbWVyc19uZXh0X2V4cGlyeSA9IHRlLT53aGVuOworICAgICAg ICAgICAgICAgICAgICB0aW1lb3V0X2ludGVydmFsID0gdGUtPndoZW4gLSBub3c7CisgICAgICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBh cHJfc2tpcGxpc3RfcG9wKHRpbWVyX3NraXBsaXN0LCBOVUxMKTsKKyAgICAgICAgICAgICAgICBw dXNoX3RpbWVyMndvcmtlcih0ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsK LSAgICAgICAgICAgICAgICB0aW1lb3V0X2ludGVydmFsID0gMTsKKyAgICAgICAgICAgIGlmICgh dGUpIHsKKyAgICAgICAgICAgICAgICB0aW1lcnNfbmV4dF9leHBpcnkgPSAwOwogICAgICAgICAg ICAgfQorICAgICAgICAgICAgYXByX3RocmVhZF9tdXRleF91bmxvY2soZ190aW1lcl9za2lwbGlz dF9tdHgpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGltZW91dF9p bnRlcnZhbCA9IGFwcl90aW1lX2Zyb21fbXNlYygxMDApOworCisgICAgICAgIC8qIFNhbWUgZm9y IHF1ZXVlcywgdXNlIHRoZWlyIG5leHQgZXhwaXJ5LCBpZiBhbnkuICovCisgICAgICAgIHRpbWVv dXRfdGltZSA9IHF1ZXVlc19uZXh0X2V4cGlyeTsKKyAgICAgICAgaWYgKHRpbWVvdXRfdGltZQor ICAgICAgICAgICAgICAgICYmICh0aW1lb3V0X2ludGVydmFsIDwgMAorICAgICAgICAgICAgICAg ICAgICB8fCB0aW1lb3V0X3RpbWUgPD0gbm93CisgICAgICAgICAgICAgICAgICAgIHx8IHRpbWVv dXRfaW50ZXJ2YWwgPiB0aW1lb3V0X3RpbWUgLSBub3cpKSB7CisgICAgICAgICAgICB0aW1lb3V0 X2ludGVydmFsID0gdGltZW91dF90aW1lID4gbm93ID8gdGltZW91dF90aW1lIC0gbm93IDogMTsK ICAgICAgICAgfQotICAgICAgICBhcHJfdGhyZWFkX211dGV4X3VubG9jayhnX3RpbWVyX3NraXBs aXN0X210eCk7CiAKKyAgICAgICAgLyogV2hlbiBub24td2FrZWFibGUsIGRvbid0IHdhaXQgbW9y ZSB0aGFuIDEwMCBtcywgaW4gYW55IGNhc2UuICovCisjZGVmaW5lIE5PTl9XQUtFQUJMRV9QT0xM X1RJTUVPVVQgYXByX3RpbWVfZnJvbV9tc2VjKDEwMCkKKyAgICAgICAgaWYgKCFsaXN0ZW5lcl9p c193YWtlYWJsZQorICAgICAgICAgICAgICAgICYmICh0aW1lb3V0X2ludGVydmFsIDwgMAorICAg ICAgICAgICAgICAgICAgICB8fCB0aW1lb3V0X2ludGVydmFsID4gTk9OX1dBS0VBQkxFX1BPTExf VElNRU9VVCkpIHsKKyAgICAgICAgICAgIHRpbWVvdXRfaW50ZXJ2YWwgPSBOT05fV0FLRUFCTEVf UE9MTF9USU1FT1VUOworICAgICAgICB9CisKICAgICAgICAgcmMgPSBhcHJfcG9sbHNldF9wb2xs KGV2ZW50X3BvbGxzZXQsIHRpbWVvdXRfaW50ZXJ2YWwsICZudW0sICZvdXRfcGZkKTsKICAgICAg ICAgaWYgKHJjICE9IEFQUl9TVUNDRVNTKSB7CiAgICAgICAgICAgICBpZiAoQVBSX1NUQVRVU19J U19FSU5UUihyYykpIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg ICAvKiBXb2tlbiB1cCwgaWYgd2UgYXJlIGV4aXRpbmcgd2UgbXVzdCBmYWxsIHRocm91Z2ggdG8g a2lsbAorICAgICAgICAgICAgICAgICAqIGtlcHQtYWxpdmUgY29ubmVjdGlvbnMsIG90aGVyd2lz ZSB3ZSBvbmx5IG5lZWQgdG8gdXBkYXRlCisgICAgICAgICAgICAgICAgICogdGltZW91dHMgKGxv Z2ljIGlzIGFib3ZlLCBzbyByZXN0YXJ0IHRoZSBsb29wKS4KKyAgICAgICAgICAgICAgICAgKi8K KyAgICAgICAgICAgICAgICBpZiAoIWxpc3RlbmVyX21heV9leGl0KSB7CisgICAgICAgICAgICAg ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aW1l b3V0X3RpbWUgPSAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFBUFJfU1RBVFVT X0lTX1RJTUVVUChyYykpIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFBUFJfU1RBVFVTX0lTX1RJ TUVVUChyYykpIHsKICAgICAgICAgICAgICAgICBhcF9sb2dfZXJyb3IoQVBMT0dfTUFSSywgQVBM T0dfQ1JJVCwgcmMsIGFwX3NlcnZlcl9jb25mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiYXByX3BvbGxzZXRfcG9sbCBmYWlsZWQuICBBdHRlbXB0aW5nIHRvICIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInNodXRkb3duIHByb2Nlc3MgZ3JhY2VmdWxseSIpOwogICAgICAg ICAgICAgICAgIHNpZ25hbF90aHJlYWRzKFNUX0dSQUNFRlVMKTsKICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIG51bSA9IDA7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobGlzdGVuZXJfbWF5 X2V4aXQpIHsKQEAgLTE2MjksMjEgKzE3NjQsNiBAQCBzdGF0aWMgdm9pZCAqIEFQUl9USFJFQURf RlVOQyBsaXN0ZW5lcl90aHJlYWQoYXByXwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICB9CiAKLSAgICAgICAgbm93ID0gYXByX3RpbWVfbm93KCk7Ci0gICAgICAgIGFwcl90aHJlYWRf bXV0ZXhfbG9jayhnX3RpbWVyX3NraXBsaXN0X210eCk7Ci0gICAgICAgIGVwID0gYXByX3NraXBs aXN0X3BlZWsodGltZXJfc2tpcGxpc3QpOwotICAgICAgICB3aGlsZSAoZXApIHsKLSAgICAgICAg ICAgIGlmIChlcC0+d2hlbiA8IG5vdyArIEVWRU5UX0ZVREdFX0ZBQ1RPUikgewotICAgICAgICAg ICAgICAgIGFwcl9za2lwbGlzdF9wb3AodGltZXJfc2tpcGxpc3QsIE5VTEwpOwotICAgICAgICAg ICAgICAgIHB1c2hfdGltZXIyd29ya2VyKGVwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg IGVsc2UgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAg ICAgZXAgPSBhcHJfc2tpcGxpc3RfcGVlayh0aW1lcl9za2lwbGlzdCk7Ci0gICAgICAgIH0KLSAg ICAgICAgYXByX3RocmVhZF9tdXRleF91bmxvY2soZ190aW1lcl9za2lwbGlzdF9tdHgpOwotCiAg ICAgICAgIHdoaWxlIChudW0pIHsKICAgICAgICAgICAgIHB0ID0gKGxpc3RlbmVyX3BvbGxfdHlw ZSAqKSBvdXRfcGZkLT5jbGllbnRfZGF0YTsKICAgICAgICAgICAgIGlmIChwdC0+dHlwZSA9PSBQ VF9DU0QpIHsKQEAgLTE2NjYsNyArMTc4Niw2IEBAIHN0YXRpYyB2b2lkICogQVBSX1RIUkVBRF9G VU5DIGxpc3RlbmVyX3RocmVhZChhcHJfCiAgICAgICAgICAgICAgICAgICAgIFRPX1FVRVVFX1JF TU9WRShyZW1vdmVfZnJvbV9xLCBjcyk7CiAgICAgICAgICAgICAgICAgICAgIHJjID0gYXByX3Bv bGxzZXRfcmVtb3ZlKGV2ZW50X3BvbGxzZXQsICZjcy0+cGZkKTsKICAgICAgICAgICAgICAgICAg ICAgYXByX3RocmVhZF9tdXRleF91bmxvY2sodGltZW91dF9tdXRleCk7Ci0KICAgICAgICAgICAg ICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICogU29tZSBvZiB0aGUgcG9sbHNldCBi YWNrZW5kcywgbGlrZSBLUXVldWUgb3IgRXBvbGwKICAgICAgICAgICAgICAgICAgICAgICogYXV0 b21hZ2ljYWxseSByZW1vdmUgdGhlIEZEIGlmIHRoZSBzb2NrZXQgaXMgY2xvc2VkLApAQCAtMTgw OCw1MiArMTkyNyw1NSBAQCBzdGF0aWMgdm9pZCAqIEFQUl9USFJFQURfRlVOQyBsaXN0ZW5lcl90 aHJlYWQoYXByXwogICAgICAgICAvKiBYWFggcG9zc2libGUgb3B0aW1pemF0aW9uOiBzdGFzaCB0 aGUgY3VycmVudCB0aW1lIGZvciB1c2UgYXMKICAgICAgICAgICogci0+cmVxdWVzdF90aW1lIGZv ciBuZXcgcmVxdWVzdHMKICAgICAgICAgICovCi0gICAgICAgIG5vdyA9IGFwcl90aW1lX25vdygp OwotICAgICAgICAvKiBXZSBvbmx5IGRvIHRoaXMgb25jZSBwZXIgMC4xcyAoVElNRU9VVF9GVURH RV9GQUNUT1IpLCBvciBvbiBhIGNsb2NrCi0gICAgICAgICAqIHNrZXcgKGlmIHRoZSBzeXN0ZW0g dGltZSBpcyBzZXQgYmFjayBpbiB0aGUgbWVhbnRpbWUsIHRpbWVvdXRfdGltZQotICAgICAgICAg KiB3aWxsIGV4Y2VlZCBub3cgKyBUSU1FT1VUX0ZVREdFX0ZBQ1RPUiwgY2FuJ3QgaGFwcGVuIG90 aGVyd2lzZSkuCisgICAgICAgIC8qIFdlIHByb2Nlc3MgdGhlIHRpbWVvdXQgcXVldWVzIGhlcmUg b25seSB3aGVuIHRoZWlyIG92ZXJhbGwgbmV4dAorICAgICAgICAgKiBleHBpcnkgKHJlYWQgb25j ZSBhYm92ZSkgaXMgb3Zlci4gVGhpcyBoYXBwZW5zIGFjY3VyYXRlbHkgc2luY2UKKyAgICAgICAg ICogYWRkaW5nIHRvIHRoZSBxdWV1ZXMgKGluIHdvcmtlcnMpIGNhbiBvbmx5IGRlY3JlYXNlIHRo aXMgZXhwaXJ5LAorICAgICAgICAgKiB3aGlsZSBsYXRlc3Qgb25lcyBhcmUgb25seSB0YWtlbiBp bnRvIGFjY291bnQgaGVyZSAoaW4gbGlzdGVuZXIpCisgICAgICAgICAqIGR1cmluZyBxdWV1ZXMn IHByb2Nlc3NpbmcsIHdpdGggdGhlIGxvY2sgaGVsZC4gVGhpcyB3b3JrcyBib3RoCisgICAgICAg ICAqIHdpdGggYW5kIHdpdGhvdXQgd2FrZS1hYmlsaXR5LgogICAgICAgICAgKi8KLSAgICAgICAg aWYgKG5vdyA+IHRpbWVvdXRfdGltZSB8fCBub3cgKyBUSU1FT1VUX0ZVREdFX0ZBQ1RPUiA8IHRp bWVvdXRfdGltZSApIHsKLSAgICAgICAgICAgIHN0cnVjdCBwcm9jZXNzX3Njb3JlICpwczsKKyAg ICAgICAgaWYgKHRpbWVvdXRfdGltZSAmJiB0aW1lb3V0X3RpbWUgPCAobm93ID0gYXByX3RpbWVf bm93KCkpKSB7CiAgICAgICAgICAgICB0aW1lb3V0X3RpbWUgPSBub3cgKyBUSU1FT1VUX0ZVREdF X0ZBQ1RPUjsKIAogICAgICAgICAgICAgLyogaGFuZGxlIHRpbWVkIG91dCBzb2NrZXRzICovCiAg ICAgICAgICAgICBhcHJfdGhyZWFkX211dGV4X2xvY2sodGltZW91dF9tdXRleCk7CiAKKyAgICAg ICAgICAgIC8qIFByb2Nlc3NpbmcgYWxsIHRoZSBxdWV1ZXMgYmVsb3cgd2lsbCByZWNvbXB1dGUg dGhpcy4gKi8KKyAgICAgICAgICAgIHF1ZXVlc19uZXh0X2V4cGlyeSA9IDA7CisKICAgICAgICAg ICAgIC8qIFN0ZXAgMToga2VlcGFsaXZlIHRpbWVvdXRzICovCi0gICAgICAgICAgICAvKiBJZiBh bGwgd29ya2VycyBhcmUgYnVzeSwgd2Uga2lsbCBvbGRlciBrZWVwLWFsaXZlIGNvbm5lY3Rpb25z IHNvIHRoYXQgdGhleQotICAgICAgICAgICAgICogbWF5IGNvbm5lY3QgdG8gYW5vdGhlciBwcm9j ZXNzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoKHdvcmtlcnNfd2VyZV9idXN5 IHx8IGR5aW5nKSAmJiAqa2VlcGFsaXZlX3EtPnRvdGFsKSB7Ci0gICAgICAgICAgICAgICAgaWYg KCFkeWluZykKLSAgICAgICAgICAgICAgICAgICAgYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQ TE9HX1RSQUNFMSwgMCwgYXBfc2VydmVyX2NvbmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiQWxsIHdvcmtlcnMgYXJlIGJ1c3ksIHdpbGwgY2xvc2UgJWQga2VlcC1hbGl2ZSAi Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29ubmVjdGlvbnMiLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmtlZXBhbGl2ZV9xLT50b3RhbCk7Ci0gICAgICAg ICAgICAgICAgcHJvY2Vzc190aW1lb3V0X3F1ZXVlKGtlZXBhbGl2ZV9xLCAwLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9saW5nZXJpbmdfY2xvc2Vfbm9uYmxv Y2tpbmcpOworICAgICAgICAgICAgaWYgKHdvcmtlcnNfd2VyZV9idXN5IHx8IGR5aW5nKSB7Cisg ICAgICAgICAgICAgICAgcHJvY2Vzc19rZWVwYWxpdmVfcXVldWUoMCk7IC8qIGtpbGwnZW0gYWxs IFxtLyAqLwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg ICAgcHJvY2Vzc190aW1lb3V0X3F1ZXVlKGtlZXBhbGl2ZV9xLCB0aW1lb3V0X3RpbWUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2xpbmdlcmluZ19jbG9zZV9u b25ibG9ja2luZyk7CisgICAgICAgICAgICAgICAgcHJvY2Vzc19rZWVwYWxpdmVfcXVldWUodGlt ZW91dF90aW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIFN0ZXAgMjogd3JpdGUg Y29tcGxldGlvbiB0aW1lb3V0cyAqLwogICAgICAgICAgICAgcHJvY2Vzc190aW1lb3V0X3F1ZXVl KHdyaXRlX2NvbXBsZXRpb25fcSwgdGltZW91dF90aW1lLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0YXJ0X2xpbmdlcmluZ19jbG9zZV9ub25ibG9ja2luZyk7CiAgICAgICAg ICAgICAvKiBTdGVwIDM6IChub3JtYWwpIGxpbmdlcmluZyBjbG9zZSBjb21wbGV0aW9uIHRpbWVv dXRzICovCi0gICAgICAgICAgICBwcm9jZXNzX3RpbWVvdXRfcXVldWUobGluZ2VyX3EsIHRpbWVv dXRfdGltZSwgc3RvcF9saW5nZXJpbmdfY2xvc2UpOworICAgICAgICAgICAgcHJvY2Vzc190aW1l b3V0X3F1ZXVlKGxpbmdlcl9xLCB0aW1lb3V0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RvcF9saW5nZXJpbmdfY2xvc2UpOwogICAgICAgICAgICAgLyogU3RlcCA0 OiAoc2hvcnQpIGxpbmdlcmluZyBjbG9zZSBjb21wbGV0aW9uIHRpbWVvdXRzICovCi0gICAgICAg ICAgICBwcm9jZXNzX3RpbWVvdXRfcXVldWUoc2hvcnRfbGluZ2VyX3EsIHRpbWVvdXRfdGltZSwg c3RvcF9saW5nZXJpbmdfY2xvc2UpOworICAgICAgICAgICAgcHJvY2Vzc190aW1lb3V0X3F1ZXVl KHNob3J0X2xpbmdlcl9xLCB0aW1lb3V0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RvcF9saW5nZXJpbmdfY2xvc2UpOwogCi0gICAgICAgICAgICBwcyA9IGFwX2dl dF9zY29yZWJvYXJkX3Byb2Nlc3MocHJvY2Vzc19zbG90KTsKLSAgICAgICAgICAgIHBzLT53cml0 ZV9jb21wbGV0aW9uID0gKndyaXRlX2NvbXBsZXRpb25fcS0+dG90YWw7Ci0gICAgICAgICAgICBw cy0+a2VlcF9hbGl2ZSA9ICprZWVwYWxpdmVfcS0+dG90YWw7CiAgICAgICAgICAgICBhcHJfdGhy ZWFkX211dGV4X3VubG9jayh0aW1lb3V0X211dGV4KTsKIAorICAgICAgICAgICAgcHMtPmtlZXBf YWxpdmUgPSBhcHJfYXRvbWljX3JlYWQzMihrZWVwYWxpdmVfcS0+dG90YWwpOworICAgICAgICAg ICAgcHMtPndyaXRlX2NvbXBsZXRpb24gPSBhcHJfYXRvbWljX3JlYWQzMih3cml0ZV9jb21wbGV0 aW9uX3EtPnRvdGFsKTsKICAgICAgICAgICAgIHBzLT5jb25uZWN0aW9ucyA9IGFwcl9hdG9taWNf cmVhZDMyKCZjb25uZWN0aW9uX2NvdW50KTsKICAgICAgICAgICAgIHBzLT5zdXNwZW5kZWQgPSBh cHJfYXRvbWljX3JlYWQzMigmc3VzcGVuZGVkX2NvdW50KTsKICAgICAgICAgICAgIHBzLT5saW5n ZXJpbmdfY2xvc2UgPSBhcHJfYXRvbWljX3JlYWQzMigmbGluZ2VyaW5nX2NvdW50KTsKICAgICAg ICAgfQorICAgICAgICBlbHNlIGlmICgod29ya2Vyc193ZXJlX2J1c3kgfHwgZHlpbmcpCisgICAg ICAgICAgICAgICAgICYmIGFwcl9hdG9taWNfcmVhZDMyKGtlZXBhbGl2ZV9xLT50b3RhbCkpIHsK KyAgICAgICAgICAgIGFwcl90aHJlYWRfbXV0ZXhfbG9jayh0aW1lb3V0X211dGV4KTsKKyAgICAg ICAgICAgIHByb2Nlc3Nfa2VlcGFsaXZlX3F1ZXVlKDApOyAvKiBraWxsJ2VtIGFsbCBcbS8gKi8K KyAgICAgICAgICAgIGFwcl90aHJlYWRfbXV0ZXhfdW5sb2NrKHRpbWVvdXRfbXV0ZXgpOworICAg ICAgICAgICAgcHMtPmtlZXBfYWxpdmUgPSBhcHJfYXRvbWljX3JlYWQzMihrZWVwYWxpdmVfcS0+ dG90YWwpOworICAgICAgICB9CisKICAgICAgICAgaWYgKGxpc3RlbmVyc19kaXNhYmxlZCAmJiAh d29ya2Vyc193ZXJlX2J1c3kKICAgICAgICAgICAgICYmIChpbnQpYXByX2F0b21pY19yZWFkMzIo JmNvbm5lY3Rpb25fY291bnQpCiAgICAgICAgICAgICAgICAtIChpbnQpYXByX2F0b21pY19yZWFk MzIoJmxpbmdlcmluZ19jb3VudCkKQEAgLTIwNjQsNiArMjE4Niw4IEBAIHN0YXRpYyB2b2lkICpB UFJfVEhSRUFEX0ZVTkMgc3RhcnRfdGhyZWFkcyhhcHJfdGhyCiAgICAgaW50IHByZXZfdGhyZWFk c19jcmVhdGVkOwogICAgIGludCBtYXhfcmVjeWNsZWRfcG9vbHMgPSAtMTsKICAgICBpbnQgZ29v ZF9tZXRob2RzW10gPSB7QVBSX1BPTExTRVRfS1FVRVVFLCBBUFJfUE9MTFNFVF9QT1JULCBBUFJf UE9MTFNFVF9FUE9MTH07CisgICAgLyogWFhYIGRvbid0IHdlIG5lZWQgbW9yZSB0byBoYW5kbGUg Sy1BIG9yIGxpbmdlcmluZyBjbG9zZT8gKi8KKyAgICBjb25zdCBhcHJfdWludDMyX3QgcG9sbHNl dF9zaXplID0gdGhyZWFkc19wZXJfY2hpbGQgKiAyOwogCiAgICAgLyogV2UgbXVzdCBjcmVhdGUg dGhlIGZkIHF1ZXVlcyBiZWZvcmUgd2Ugc3RhcnQgdXAgdGhlIGxpc3RlbmVyCiAgICAgICogYW5k IHdvcmtlciB0aHJlYWRzLiAqLwpAQCAtMjEwMywyNCArMjIyNywyNCBAQCBzdGF0aWMgdm9pZCAq QVBSX1RIUkVBRF9GVU5DIHN0YXJ0X3RocmVhZHMoYXByX3RocgogCiAgICAgLyogQ3JlYXRlIHRo ZSBtYWluIHBvbGxzZXQgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGdvb2RfbWV0aG9k cykgLyBzaXplb2YoZ29vZF9tZXRob2RzWzBdKTsgaSsrKSB7Ci0gICAgICAgIHJ2ID0gYXByX3Bv bGxzZXRfY3JlYXRlX2V4KCZldmVudF9wb2xsc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRocmVhZHNfcGVyX2NoaWxkKjIsIC8qIFhYWCBkb24ndCB3ZSBuZWVkIG1vcmUsIHRvIGhh bmRsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBj b25uZWN0aW9ucyBpbiBLLUEgb3IgbGluZ2VyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqIGNsb3NlPwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw Y2hpbGQsIEFQUl9QT0xMU0VUX1RIUkVBRFNBRkUgfCBBUFJfUE9MTFNFVF9OT0NPUFkgfCBBUFJf UE9MTFNFVF9OT0RFRkFVTFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29vZF9tZXRo b2RzW2ldKTsKKyAgICAgICAgYXByX3VpbnQzMl90IGZsYWdzID0gQVBSX1BPTExTRVRfVEhSRUFE U0FGRSB8IEFQUl9QT0xMU0VUX05PQ09QWSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEFQUl9QT0xMU0VUX05PREVGQVVMVCB8IEFQUl9QT0xMU0VUX1dBS0VBQkxFOworICAgICAgICBy diA9IGFwcl9wb2xsc2V0X2NyZWF0ZV9leCgmZXZlbnRfcG9sbHNldCwgcG9sbHNldF9zaXplLCBw Y2hpbGQsIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb29kX21l dGhvZHNbaV0pOwogICAgICAgICBpZiAocnYgPT0gQVBSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAg IGxpc3RlbmVyX2lzX3dha2VhYmxlID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9 CisgICAgICAgIGZsYWdzICY9IH5BUFJfUE9MTFNFVF9XQUtFQUJMRTsKKyAgICAgICAgcnYgPSBh cHJfcG9sbHNldF9jcmVhdGVfZXgoJmV2ZW50X3BvbGxzZXQsIHBvbGxzZXRfc2l6ZSwgcGNoaWxk LCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29vZF9tZXRob2Rz W2ldKTsKKyAgICAgICAgaWYgKHJ2ID09IEFQUl9TVUNDRVNTKSB7CisgICAgICAgICAgICBicmVh azsKKyAgICAgICAgfQogICAgIH0KICAgICBpZiAocnYgIT0gQVBSX1NVQ0NFU1MpIHsKLSAgICAg ICAgcnYgPSBhcHJfcG9sbHNldF9jcmVhdGUoJmV2ZW50X3BvbGxzZXQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGhyZWFkc19wZXJfY2hpbGQqMiwgLyogWFhYIGRvbid0IHdlIG5l ZWQgbW9yZSwgdG8gaGFuZGxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICogY29ubmVjdGlvbnMgaW4gSy1BIG9yIGxpbmdlcmluZwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGNsb3NlPwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjaGlsZCwgQVBSX1BPTExTRVRfVEhSRUFE U0FGRSB8IEFQUl9QT0xMU0VUX05PQ09QWSk7CisgICAgICAgIHJ2ID0gYXByX3BvbGxzZXRfY3Jl YXRlKCZldmVudF9wb2xsc2V0LCBwb2xsc2V0X3NpemUsIHBjaGlsZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQVBSX1BPTExTRVRfVEhSRUFEU0FGRSB8IEFQUl9QT0xMU0VUX05P Q09QWSk7CiAgICAgfQogICAgIGlmIChydiAhPSBBUFJfU1VDQ0VTUykgewogICAgICAgICBhcF9s b2dfZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfRVJSLCBydiwgYXBfc2VydmVyX2NvbmYsIEFQTE9H Tk8oMDMxMDMpCkBAIC0yMTI5LDcgKzIyNTMsOSBAQCBzdGF0aWMgdm9pZCAqQVBSX1RIUkVBRF9G VU5DIHN0YXJ0X3RocmVhZHMoYXByX3RocgogICAgIH0KIAogICAgIGFwX2xvZ19lcnJvcihBUExP R19NQVJLLCBBUExPR19ERUJVRywgMCwgYXBfc2VydmVyX2NvbmYsIEFQTE9HTk8oMDI0NzEpCi0g ICAgICAgICAgICAgICAgICJzdGFydF90aHJlYWRzOiBVc2luZyAlcyIsIGFwcl9wb2xsc2V0X21l dGhvZF9uYW1lKGV2ZW50X3BvbGxzZXQpKTsKKyAgICAgICAgICAgICAgICAgInN0YXJ0X3RocmVh ZHM6IFVzaW5nICVzICglc3dha2VhYmxlKSIsCisgICAgICAgICAgICAgICAgIGFwcl9wb2xsc2V0 X21ldGhvZF9uYW1lKGV2ZW50X3BvbGxzZXQpLAorICAgICAgICAgICAgICAgICBsaXN0ZW5lcl9p c193YWtlYWJsZSA/ICIiIDogIm5vdCAiKTsKICAgICB3b3JrZXJfc29ja2V0cyA9IGFwcl9wY2Fs bG9jKHBjaGlsZCwgdGhyZWFkc19wZXJfY2hpbGQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICogc2l6ZW9mKGFwcl9zb2NrZXRfdCAqKSk7CiAKQEAgLTMyNjIsMTAgKzMzODgsMTAg QEAgc3RhdGljIGludCBldmVudF9wb3N0X2NvbmZpZyhhcHJfcG9vbF90ICpwY29uZiwgYXAKICAg ICB3Yy5oYXNoID0gYXByX2hhc2hfbWFrZShwdGVtcCk7CiAgICAga2EuaGFzaCA9IGFwcl9oYXNo X21ha2UocHRlbXApOwogCi0gICAgVE9fUVVFVUVfSU5JVChsaW5nZXJfcSwgcGNvbmYsCi0gICAg ICAgICAgICAgICAgICBhcHJfdGltZV9mcm9tX3NlYyhNQVhfU0VDU19UT19MSU5HRVIpLCBOVUxM KTsKLSAgICBUT19RVUVVRV9JTklUKHNob3J0X2xpbmdlcl9xLCBwY29uZiwKLSAgICAgICAgICAg ICAgICAgIGFwcl90aW1lX2Zyb21fc2VjKFNFQ09ORFNfVE9fTElOR0VSKSwgTlVMTCk7CisgICAg bGluZ2VyX3EgPSBUT19RVUVVRV9NQUtFKHBjb25mLCBhcHJfdGltZV9mcm9tX3NlYyhNQVhfU0VD U19UT19MSU5HRVIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBz aG9ydF9saW5nZXJfcSA9IFRPX1FVRVVFX01BS0UocGNvbmYsIGFwcl90aW1lX2Zyb21fc2VjKFNF Q09ORFNfVE9fTElOR0VSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCk7CiAKICAgICBmb3IgKDsgczsgcyA9IHMtPm5leHQpIHsKICAgICAgICAgZXZlbnRfc3J2X2Nm ZyAqc2MgPSBhcHJfcGNhbGxvYyhwY29uZiwgc2l6ZW9mICpzYyk7CkBAIC0zMjczLDExICszMzk5 LDExIEBAIHN0YXRpYyBpbnQgZXZlbnRfcG9zdF9jb25maWcoYXByX3Bvb2xfdCAqcGNvbmYsIGFw CiAgICAgICAgIGFwX3NldF9tb2R1bGVfY29uZmlnKHMtPm1vZHVsZV9jb25maWcsICZtcG1fZXZl bnRfbW9kdWxlLCBzYyk7CiAgICAgICAgIGlmICghd2MudGFpbCkgewogICAgICAgICAgICAgLyog VGhlIG1haW4gc2VydmVyIHVzZXMgdGhlIGdsb2JhbCBxdWV1ZXMgKi8KLSAgICAgICAgICAgIFRP X1FVRVVFX0lOSVQod2MucSwgcGNvbmYsIHMtPnRpbWVvdXQsIE5VTEwpOworICAgICAgICAgICAg d2MucSA9IFRPX1FVRVVFX01BS0UocGNvbmYsIHMtPnRpbWVvdXQsIE5VTEwpOwogICAgICAgICAg ICAgYXByX2hhc2hfc2V0KHdjLmhhc2gsICZzLT50aW1lb3V0LCBzaXplb2Ygcy0+dGltZW91dCwg d2MucSk7CiAgICAgICAgICAgICB3Yy50YWlsID0gd3JpdGVfY29tcGxldGlvbl9xID0gd2MucTsK IAotICAgICAgICAgICAgVE9fUVVFVUVfSU5JVChrYS5xLCBwY29uZiwgcy0+a2VlcF9hbGl2ZV90 aW1lb3V0LCBOVUxMKTsKKyAgICAgICAgICAgIGthLnEgPSBUT19RVUVVRV9NQUtFKHBjb25mLCBz LT5rZWVwX2FsaXZlX3RpbWVvdXQsIE5VTEwpOwogICAgICAgICAgICAgYXByX2hhc2hfc2V0KGth Lmhhc2gsICZzLT5rZWVwX2FsaXZlX3RpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZW9mIHMtPmtlZXBfYWxpdmVfdGltZW91dCwga2EucSk7CiAgICAgICAgICAgICBrYS50YWls ID0ga2VlcGFsaXZlX3EgPSBrYS5xOwpAQCAtMzI4Nyw3ICszNDEzLDcgQEAgc3RhdGljIGludCBl dmVudF9wb3N0X2NvbmZpZyhhcHJfcG9vbF90ICpwY29uZiwgYXAKICAgICAgICAgICAgICAqIG9y IHRoZWlyIG93biBxdWV1ZShzKSBpZiB0aGVyZSBpc24ndCAqLwogICAgICAgICAgICAgd2MucSA9 IGFwcl9oYXNoX2dldCh3Yy5oYXNoLCAmcy0+dGltZW91dCwgc2l6ZW9mIHMtPnRpbWVvdXQpOwog ICAgICAgICAgICAgaWYgKCF3Yy5xKSB7Ci0gICAgICAgICAgICAgICAgVE9fUVVFVUVfSU5JVCh3 Yy5xLCBwY29uZiwgcy0+dGltZW91dCwgd2MudGFpbCk7CisgICAgICAgICAgICAgICAgd2MucSA9 IFRPX1FVRVVFX01BS0UocGNvbmYsIHMtPnRpbWVvdXQsIHdjLnRhaWwpOwogICAgICAgICAgICAg ICAgIGFwcl9oYXNoX3NldCh3Yy5oYXNoLCAmcy0+dGltZW91dCwgc2l6ZW9mIHMtPnRpbWVvdXQs IHdjLnEpOwogICAgICAgICAgICAgICAgIHdjLnRhaWwgPSB3Yy50YWlsLT5uZXh0ID0gd2MucTsK ICAgICAgICAgICAgIH0KQEAgLTMyOTUsNyArMzQyMSw3IEBAIHN0YXRpYyBpbnQgZXZlbnRfcG9z dF9jb25maWcoYXByX3Bvb2xfdCAqcGNvbmYsIGFwCiAgICAgICAgICAgICBrYS5xID0gYXByX2hh c2hfZ2V0KGthLmhhc2gsICZzLT5rZWVwX2FsaXZlX3RpbWVvdXQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVvZiBzLT5rZWVwX2FsaXZlX3RpbWVvdXQpOwogICAgICAgICAg ICAgaWYgKCFrYS5xKSB7Ci0gICAgICAgICAgICAgICAgVE9fUVVFVUVfSU5JVChrYS5xLCBwY29u Ziwgcy0+a2VlcF9hbGl2ZV90aW1lb3V0LCBrYS50YWlsKTsKKyAgICAgICAgICAgICAgICBrYS5x ID0gVE9fUVVFVUVfTUFLRShwY29uZiwgcy0+a2VlcF9hbGl2ZV90aW1lb3V0LCBrYS50YWlsKTsK ICAgICAgICAgICAgICAgICBhcHJfaGFzaF9zZXQoa2EuaGFzaCwgJnMtPmtlZXBfYWxpdmVfdGlt ZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIHMtPmtlZXBfYWxpdmVf dGltZW91dCwga2EucSk7CiAgICAgICAgICAgICAgICAga2EudGFpbCA9IGthLnRhaWwtPm5leHQg PSBrYS5xOwpJbmRleDogc2VydmVyL21wbS9ldmVudC9mZHF1ZXVlLmMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g c2VydmVyL21wbS9ldmVudC9mZHF1ZXVlLmMJKHJldmlzaW9uIDE3ODAxMjkpCisrKyBzZXJ2ZXIv bXBtL2V2ZW50L2ZkcXVldWUuYwkod29ya2luZyBjb3B5KQpAQCAtMjY5LDkgKzI2OSw4IEBAIHZv aWQgYXBfcG9wX3Bvb2woYXByX3Bvb2xfdCAqKiByZWN5Y2xlZF9wb29sLCBmZF9xCiAgICAgICAg IGlmIChmaXJzdF9wb29sID09IE5VTEwpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9 Ci0gICAgICAgIGlmIChhcHJfYXRvbWljX2Nhc3B0cgotICAgICAgICAgICAgKCh2b2lkKikgJihx dWV1ZV9pbmZvLT5yZWN5Y2xlZF9wb29scyksCi0gICAgICAgICAgICAgZmlyc3RfcG9vbC0+bmV4 dCwgZmlyc3RfcG9vbCkgPT0gZmlyc3RfcG9vbCkgeworICAgICAgICBpZiAoYXByX2F0b21pY19j YXNwdHIoKHZvaWQqKSAmKHF1ZXVlX2luZm8tPnJlY3ljbGVkX3Bvb2xzKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZpcnN0X3Bvb2wtPm5leHQsIGZpcnN0X3Bvb2wpID09IGZpcnN0 X3Bvb2wpIHsKICAgICAgICAgICAgICpyZWN5Y2xlZF9wb29sID0gZmlyc3RfcG9vbC0+cG9vbDsK ICAgICAgICAgICAgIGlmIChxdWV1ZV9pbmZvLT5tYXhfcmVjeWNsZWRfcG9vbHMgPj0gMCkKICAg ICAgICAgICAgICAgICBhcHJfYXRvbWljX2RlYzMyKCZxdWV1ZV9pbmZvLT5yZWN5Y2xlZF9wb29s c19jb3VudCk7Cg== --94eb2c065a00090d140546e07e62--