From owner-freebsd-transport@freebsd.org Thu Jun 6 15:34:52 2019 Return-Path: Delivered-To: freebsd-transport@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4926E15B735A; Thu, 6 Jun 2019 15:34:51 +0000 (UTC) (envelope-from Richard.Scheffenegger@netapp.com) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-eopbgr800045.outbound.protection.outlook.com [40.107.80.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "GlobalSign Organization Validation CA - SHA256 - G3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DE35C71F8D; Thu, 6 Jun 2019 15:34:49 +0000 (UTC) (envelope-from Richard.Scheffenegger@netapp.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netapp.onmicrosoft.com; s=selector2-netapp-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=43b4D0qNK65WLZvVR8T35tL9f1v/rg2wg7Phb/+4ink=; b=MudCDCiQTlw7LqI5NcUxmOZW0Sip8sI+14vUPTvO9tFb7DSHN9/SbSQzT2GXEOZ7GgBU0bal8L8yVpIufut6cx66K1AFM+G0J94LCH+ghKhwjyadIxkpAhEEKhbXqLlRGyqBUmEThRMc1m4i+64ruYHERW8FBJFgPXm4tvJ0kFA= Received: from SN4PR0601MB3728.namprd06.prod.outlook.com (10.167.151.152) by SN6SPR01MB12.namprd06.prod.outlook.com (52.135.97.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.14; Thu, 6 Jun 2019 15:34:47 +0000 Received: from SN4PR0601MB3728.namprd06.prod.outlook.com ([fe80::70f4:9194:a05e:67b5]) by SN4PR0601MB3728.namprd06.prod.outlook.com ([fe80::70f4:9194:a05e:67b5%7]) with mapi id 15.20.1965.011; Thu, 6 Jun 2019 15:34:47 +0000 From: "Scheffenegger, Richard" To: Yu He , Gopakumar Pillai CC: Lars Eggert , "freebsd-net@freebsd.org" , "freebsd-transport@freebsd.org" , "Cui, Cheng" , "Yoon, Suyoung" Subject: RE: Some question about DCTCP implementation in FreeBSD Thread-Topic: Some question about DCTCP implementation in FreeBSD Thread-Index: AQHVGwAamSY93F0qjkW3q8GaycoLraaOunwhgAAD0bA= Date: Thu, 6 Jun 2019 15:34:47 +0000 Message-ID: References: <2F719086-68CA-46CB-AE01-40E2AAB6E964@vmware.com> <60507CB3-52A6-482B-BF96-36CFEEDA4B0B@eggert.org> In-Reply-To: <60507CB3-52A6-482B-BF96-36CFEEDA4B0B@eggert.org> Accept-Language: de-AT, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-ref: PG1ldGE+PGF0IG5tPSJib2R5Lmh0bWwiIHA9ImM6XHVzZXJzXHNyaWNoYXJkXGFwcGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02Yjg0YmEyOWUzNWJcbXNnc1xtc2ctOWI5NzJmYmQtODg3MC0xMWU5LWI1ZjgtMDAxOWQyZTRlY2Q3XGFtZS10ZXN0XDliOTcyZmJlLTg4NzAtMTFlOS1iNWY4LTAwMTlkMmU0ZWNkN2JvZHkuaHRtbCIgc3o9IjU3MzAwIiB0PSIxMzIwNDMwODg4NTExODY0NDYiIGg9ImxrUmJDeHFXRkw2SWlCSElxTmhuMlhIT21IOD0iIGlkPSIiIGJsPSIwIiBibz0iMSIvPjwvbWV0YT4= x-dg-rorf: x-originating-ip: [213.143.121.76] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2778f28f-cba9-4909-c2fd-08d6ea9481bc x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:SN6SPR01MB12; x-ms-traffictypediagnostic: SN6SPR01MB12: x-ms-exchange-purlcount: 4 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 00603B7EEF x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(376002)(366004)(396003)(39860400002)(136003)(199004)(189003)(476003)(186003)(11346002)(486006)(99286004)(110136005)(30864003)(33656002)(4326008)(5660300002)(8936002)(478600001)(72206003)(68736007)(7736002)(107886003)(236005)(86362001)(53946003)(966005)(6246003)(66446008)(64756008)(66556008)(66476007)(73956011)(66946007)(76116006)(25786009)(6506007)(71190400001)(71200400001)(26005)(6306002)(316002)(54896002)(14454004)(53936002)(54906003)(6436002)(81156014)(81166006)(8676002)(9686003)(102836004)(446003)(55016002)(14444005)(7696005)(76176011)(229853002)(2906002)(52536014)(606006)(256004)(74316002)(3846002)(6116002)(790700001)(66066001)(24704002)(579004)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6SPR01MB12; H:SN4PR0601MB3728.namprd06.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: netapp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: eAqn4GclqIU/3qZz2j72e3W8z9AcZvrRF2V27sB28LhHp2Oy/RFfg4lTtnBVyRDNf1tayfRMcarIWjLDHBiv2yfOCpjTpJ7V2B5dPdNgUMO5gX5p/ItKDEMeZysacJ8yHIswyWwVWwLFMiHfpu34NGh1i68zpB3zlEmOXwUe4bnmMJnFXz0NHDBp9UYCZbvX+X9pS6wlCpl7lPBf55kbuH61ce5FEG236ojtbiABeIw/8puVuTwwIH/ToM+Ei8E4c8vz7rSevHQodEf2HCmIA5PnSyAjTECB9vt4NXOMn8D21nVxCXAu+cSYJSfLQIXxCJzw20mz+iFtFnqsbTMjfiIW+KH5KDsMHBYtRqQmCot1v/FJsipvg1w4esZcrHS+0/NxW/CNWY47elypI4+Vj2FEbdVlfD7KP6nKOtWTb+s= MIME-Version: 1.0 X-OriginatorOrg: netapp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2778f28f-cba9-4909-c2fd-08d6ea9481bc X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jun 2019 15:34:47.0435 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4b0911a0-929b-4715-944b-c03745165b3a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: srichard@netapp.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6SPR01MB12 X-Rspamd-Queue-Id: DE35C71F8D X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=netapp.onmicrosoft.com header.s=selector2-netapp-onmicrosoft-com header.b=MudCDCiQ; spf=pass (mx1.freebsd.org: domain of Richard.Scheffenegger@netapp.com designates 40.107.80.45 as permitted sender) smtp.mailfrom=Richard.Scheffenegger@netapp.com X-Spamd-Result: default: False [-2.76 / 15.00]; ARC_NA(0.00)[]; TO_DN_EQ_ADDR_SOME(0.00)[]; R_DKIM_ALLOW(-0.20)[netapp.onmicrosoft.com:s=selector2-netapp-onmicrosoft-com]; HAS_XOIP(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:40.107.0.0/16]; NEURAL_HAM_LONG(-1.00)[-0.998,0]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; DMARC_NA(0.00)[netapp.com]; NEURAL_HAM_MEDIUM(-0.99)[-0.990,0]; RCVD_COUNT_THREE(0.00)[3]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DKIM_TRACE(0.00)[netapp.onmicrosoft.com:+]; MIME_BASE64_TEXT(0.10)[]; RCPT_COUNT_SEVEN(0.00)[7]; MX_GOOD(-0.01)[cached: mx1.netapp.iphmx.com]; RCVD_IN_DNSWL_NONE(0.00)[45.80.107.40.list.dnswl.org : 127.0.3.0]; NEURAL_HAM_SHORT(-0.36)[-0.358,0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+]; RCVD_TLS_LAST(0.00)[] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-transport@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussions of transport level network protocols in FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Jun 2019 15:34:52 -0000 DQpIaSBZdSBIZSwNCg0KVGhpcyBjb2RlIGlzIHNpbXBseSB1c2luZyBpbnRlZ2VyIGFyaXRobWV0 aWNzIChmbG9hdCBpcyBub3QgcmVhbGx5IHBvc3NpYmxlIGluIHRoZSBrZXJuZWwpLCBsZWZ0LXNo aWZ0aW5nIHRoZSBmcmFjdGlvbmFsIHZhbHVlIG9mIGcgYnkgMTAyNCAoMTAgYml0cykuDQoNCk1h eF9hbHBoYV92YWx1ZSA9IDEwMjQgaXMg4oCcMeKAnSBzaGlmdGVkIGxlZnQgYnkgMTAuDQoNCkFn cmVlZCB0aGF0IHRoaXMgaXMgbm90IGNsZWFybHkgZG9jdW1lbnRlZCwgYW5kIEkgYmVsaWV2ZSB0 aGUgc3lzY3RsIGhhbmRsZXIgYWxzbyBpcyBub3QgcHJvcGVybHkgaW1wbGVtZW50ZWQgdG8gYWRq dXN0IHRoaXMgdmFsdWUuDQoNCkkgdGhvdWdodCBJIGhhZCBiZWVuIHdvcmtpbmcgb24gdGhpc+KA pg0KDQpBaCwgaGVyZSBpcyBpdC4gSSB3YXMgdHJ5aW5nIHRvIGltcGxlbWVudCB0aGUgRmx1aWQt bW9kZWwgRENUQ1AgZm9yIG11Y2ggYmV0dGVyIFJUVCBmYWlybmVzcywgYnV0IGFwcGFyZW50bHkg Z290IGRpc3RyYWN0ZWQgYmVmb3JlIHB1dHRpbmcgb24gYSBEaWZmLg0KRmx1aWQtbW9kZWwgRENU Q1Agd2FzIGFuYWx5emVkIGJ5IHRoZSBvcmlnaW5hbCBhdXRob3JzIG9mIERDVENQLCBhbmQgYmFz aWNhbGx5IGFkanVzdHMgY3duZCBmcmFjdGlvbmFsbHkgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBDRSBp cyByZWNlaXZlZCwgaW5zdGVhZCBvZiBvbmNlIGF0IHRoZSBlbmQgb2YgYSB3aW5kb3cuIFRoZSB1 cGRhdGUgdG8gQWxwaGEgaXMga2VwdCB0byBvbmNlIHBlciB3aW5kb3csIHRvIGtlZXAgdGhlIGJv b2trZWVwaW5nIGVhc3kgYW5kIHN0cmFpZ2h0IGZvcndhcmQuDQoNCkZvciByZWZlcmVuY2UsIGhl cmUgaXMgdGhlIHBhcnRpYWwgY29kZSBJIGNhbWUgdXAgd2l0aC4NCg0KSeKAmWxsIGJyZWFrIHRo aXMgaW50byBhbiBpbml0aWFsIERpZmYgdG8gZml4IHRoZSBzeXNjdGwgdHVuYWJsZXMsIGFzIHNv b24gYXMgSSBjYW4uIFdvdWxkIGFwcHJlY2lhdGUgYW55IGhlbHAgaW4gZ2V0dGluZyB0aGUgZmx1 aWQtbW9kZWwgaW1wcm92ZW1lbnQgZnVsbHkgdGVzdGVkIHRob3VnaC4NCg0KDQpbcm9vdEBmcmVl YnNkIH4vbmV0aW5ldC9jY10jIGdpdCBkaWZmIG1hc3RlciBjY19kY3RjcC5jDQpkaWZmIC0tZ2l0 IGEvc3lzL25ldGluZXQvY2MvY2NfZGN0Y3AuYyBiL3N5cy9uZXRpbmV0L2NjL2NjX2RjdGNwLmMN CmluZGV4IDlhZmZkMGRhMmIzLi43NzhmZjdhODQ3NyAxMDA2NDQNCi0tLSBhL3N5cy9uZXRpbmV0 L2NjL2NjX2RjdGNwLmMNCisrKyBiL3N5cy9uZXRpbmV0L2NjL2NjX2RjdGNwLmMNCkBAIC01Niw3 ICs1NiwzOCBAQCBfX0ZCU0RJRCgiJEZyZWVCU0QkIik7DQojaW5jbHVkZSA8bmV0aW5ldC9jYy9j Yy5oPg0KI2luY2x1ZGUgPG5ldGluZXQvY2MvY2NfbW9kdWxlLmg+DQoNCi0jZGVmaW5lIE1BWF9B TFBIQV9WQUxVRSAxMDI0DQorI2RlZmluZSBEQ1RDUF9TSElGVCAxMA0KKyNkZWZpbmUgTUFYX0FM UEhBX1ZBTFVFIDE8PERDVENQX1NISUZUDQpWTkVUX0RFRklORV9TVEFUSUModWludDMyX3QsIGRj dGNwX2FscGhhKSA9IDA7DQojZGVmaW5lIFZfZGN0Y3BfYWxwaGEgICAgICBWTkVUKGRjdGNwX2Fs cGhhKQ0KVk5FVF9ERUZJTkVfU1RBVElDKHVpbnQzMl90LCBkY3RjcF9zaGlmdF9nKSA9IDQ7DQpA QCAtNjUsMTQgKzk2LDE1IEBAIFZORVRfREVGSU5FX1NUQVRJQyh1aW50MzJfdCwgZGN0Y3Bfc2xv d3N0YXJ0KSA9IDA7DQojZGVmaW5lICAgICAgICBWX2RjdGNwX3Nsb3dzdGFydCAgIFZORVQoZGN0 Y3Bfc2xvd3N0YXJ0KQ0KDQpzdHJ1Y3QgZGN0Y3Agew0KLSAgICAgICBpbnQgICAgIGJ5dGVzX2Vj bjsgICAgICAvKiAjIG9mIG1hcmtlZCBieXRlcyBkdXJpbmcgYSBSVFQgKi8NCi0gICAgICAgaW50 ICAgICBieXRlc190b3RhbDsgICAgLyogIyBvZiBhY2tlZCBieXRlcyBkdXJpbmcgYSBSVFQgKi8N Ci0gICAgICAgaW50ICAgICBhbHBoYTsgICAgICAgICAgLyogdGhlIGZyYWN0aW9uIG9mIG1hcmtl ZCBieXRlcyAqLw0KLSAgICAgICBpbnQgICAgIGNlX3ByZXY7ICAgICAgICAvKiBDRSBzdGF0ZSBv ZiB0aGUgbGFzdCBzZWdtZW50ICovDQotICAgICAgIGludCAgICAgc2F2ZV9zbmRueHQ7ICAgIC8q IGVuZCBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGN1cnJlbnQgd2luZG93ICovDQotICAgICAgIGlu dCAgICAgZWNlX2N1cnI7ICAgICAgIC8qIEVDRSBmbGFnIGluIHRoaXMgc2VnbWVudCAqLw0KLSAg ICAgICBpbnQgICAgIGVjZV9wcmV2OyAgICAgICAvKiBFQ0UgZmxhZyBpbiB0aGUgbGFzdCBzZWdt ZW50ICovDQotICAgICAgIHVpbnQzMl90ICAgIG51bV9jb25nX2V2ZW50czsgLyogIyBvZiBjb25n ZXN0aW9uIGV2ZW50cyAqLw0KKyAgICAgICB1aW50MzJfdCBieXRlc19lY247ICAgICAvKiAjIG9m IG1hcmtlZCBieXRlcyBkdXJpbmcgYSBSVFQgKi8NCisgICAgICAgdWludDMyX3QgYnl0ZXNfdG90 YWw7ICAgLyogIyBvZiBhY2tlZCBieXRlcyBkdXJpbmcgYSBSVFQgKi8NCisgICAgICAgaW50ICAg ICAgYWxwaGE7ICAgICAgICAgLyogdGhlIGZyYWN0aW9uIG9mIG1hcmtlZCBieXRlcyAqLw0KKyAg ICAgICBpbnQgICAgICBjZV9wcmV2OyAgICAgICAvKiBDRSBzdGF0ZSBvZiB0aGUgbGFzdCBzZWdt ZW50ICovDQorICAgICAgIHRjcF9zZXEgIHNhdmVfc25kbnh0OyAgIC8qIGVuZCBzZXF1ZW5jZSBu dW1iZXIgb2YgdGhlIGN1cnJlbnQgd2luZG93ICovDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFhYUk1TOiBjYW4ndCBhIHJ0dF93aW5kb3cgbWFya2VyIGluIHRjcGNiIGJlIHJl dXNlZD8NCisgICAgICAgaW50ICAgICAgZWNlX2N1cnI7ICAgICAgLyogRUNFIGZsYWcgaW4gdGhp cyBzZWdtZW50ICovDQorICAgICAgIGludCAgICAgIGVjZV9wcmV2OyAgICAgIC8qIEVDRSBmbGFn IGluIHRoZSBsYXN0IHNlZ21lbnQgKi8NCisgICAgICAgdWludDMyX3QgbnVtX2NvbmdfZXZlbnRz OyAvKiAjIG9mIGNvbmdlc3Rpb24gZXZlbnRzICovDQp9Ow0KDQpzdGF0aWMgTUFMTE9DX0RFRklO RShNX2RjdGNwLCAiZGN0Y3AgZGF0YSIsDQpAQCAtMTA3LDYgKzEzOSw4IEBAIGRjdGNwX2Fja19y ZWNlaXZlZChzdHJ1Y3QgY2NfdmFyICpjY3YsIHVpbnQxNl90IHR5cGUpDQogICAgICAgIGludCBi eXRlc19hY2tlZCA9IDA7DQoNCiAgICAgICAgZGN0Y3BfZGF0YSA9IGNjdi0+Y2NfZGF0YTsNCg0K ICAgICAgICBpZiAoQ0NWKGNjdiwgdF9mbGFncykgJiBURl9FQ05fUEVSTUlUKSB7DQogICAgICAg ICAgICAgICAgLyoNCkBAIC0xMjIsNyArMTU2LDcgQEAgZGN0Y3BfYWNrX3JlY2VpdmVkKHN0cnVj dCBjY192YXIgKmNjdiwgdWludDE2X3QgdHlwZSkNCiAgICAgICAgICAgICAgICAgICAgICAgIG5l d3Jlbm9fY2NfYWxnby5hY2tfcmVjZWl2ZWQoY2N2LCB0eXBlKTsNCg0KICAgICAgICAgICAgICAg IGlmICh0eXBlID09IENDX0RVUEFDSykNCi0gICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2Fj a2VkID0gQ0NWKGNjdiwgdF9tYXhzZWcpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNf YWNrZWQgPSBDQ1YoY2N2LCB0X21heHNlZyk7IC8vWFhSTVM6IHRvZG8sIHVzZSBzYWNrZWQgZGF0 YT8NCg0KICAgICAgICAgICAgICAgIGlmICh0eXBlID09IENDX0FDSykNCiAgICAgICAgICAgICAg ICAgICAgICAgIGJ5dGVzX2Fja2VkID0gY2N2LT5ieXRlc190aGlzX2FjazsNCkBAIC0xMzIsNiAr MTY2LDcgQEAgZGN0Y3BfYWNrX3JlY2VpdmVkKHN0cnVjdCBjY192YXIgKmNjdiwgdWludDE2X3Qg dHlwZSkNCg0KICAgICAgICAgICAgICAgIC8qIFVwZGF0ZSB0b3RhbCBtYXJrZWQgYnl0ZXMuICov DQogICAgICAgICAgICAgICAgaWYgKGRjdGNwX2RhdGEtPmVjZV9jdXJyKSB7DQorICAgICAgICAg ICAgICAgICAgICAgICAvLyBGbHVpZC1tb2RlbCBvZiBEQ1RDUCBmb3IgUlRUIGZhaXJuZXNzIGhl cmUgKGFkanVzdCBjd25kIG9uIGVhY2ggQUNLLCByYXRoZXIgdGhhbiBvbmNlIHBlciB3aW5kb3cp DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRjdGNwX2RhdGEtPmVjZV9wcmV2DQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgJiYgYnl0ZXNfYWNrZWQgPiBDQ1YoY2N2LCB0X21heHNl ZykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGN0Y3BfZGF0YS0+Ynl0ZXNf ZWNuICs9DQpAQCAtMTQzLDEwICsxNzgsMTMgQEAgZGN0Y3BfYWNrX3JlY2VpdmVkKHN0cnVjdCBj Y192YXIgKmNjdiwgdWludDE2X3QgdHlwZSkNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChk Y3RjcF9kYXRhLT5lY2VfcHJldg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGJ5dGVz X2Fja2VkID4gQ0NWKGNjdiwgdF9tYXhzZWcpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkY3RjcF9kYXRhLT5ieXRlc19lY24gKz0gQ0NWKGNjdiwgdF9tYXhzZWcpOw0KKy8vICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGVzX2Fja2VkIC0gQ0NWKGNjdiwgdF9t YXhzZWcpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGRjdGNwX2RhdGEtPmVjZV9wcmV2ID0g MDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZGN0Y3BfZGF0YS0+ZWNlX2N1 cnIgPSAwOw0KDQogICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICAgKiBVcGRhdGUg dGhlIGZyYWN0aW9uIG9mIG1hcmtlZCBieXRlcyBhdCB0aGUgZW5kIG9mDQogICAgICAgICAgICAg ICAgICogY3VycmVudCB3aW5kb3cgc2l6ZS4NCg0Kc3RhdGljIHZvaWQNCkBAIC0xNjUsMTggKzIw NSwyMSBAQCBkY3RjcF9hZnRlcl9pZGxlKHN0cnVjdCBjY192YXIgKmNjdikNCnsNCiAgICAgICAg c3RydWN0IGRjdGNwICpkY3RjcF9kYXRhOw0KDQotICAgICAgIGRjdGNwX2RhdGEgPSBjY3YtPmNj X2RhdGE7DQorICAgICAgIGlmIChDQ1YoY2N2LCB0X2ZsYWdzKSAmIFRGX0VDTl9QRVJNSVQpIHsN Cg0KLSAgICAgICAvKiBJbml0aWFsaXplIGludGVybmFsIHBhcmFtZXRlcnMgYWZ0ZXIgaWRsZSB0 aW1lICovDQotICAgICAgIGRjdGNwX2RhdGEtPmJ5dGVzX2VjbiA9IDA7DQotICAgICAgIGRjdGNw X2RhdGEtPmJ5dGVzX3RvdGFsID0gMDsNCi0gICAgICAgZGN0Y3BfZGF0YS0+c2F2ZV9zbmRueHQg PSBDQ1YoY2N2LCBzbmRfbnh0KTsNCi0gICAgICAgZGN0Y3BfZGF0YS0+YWxwaGEgPSBWX2RjdGNw X2FscGhhOw0KLSAgICAgICBkY3RjcF9kYXRhLT5lY2VfY3VyciA9IDA7DQotICAgICAgIGRjdGNw X2RhdGEtPmVjZV9wcmV2ID0gMDsNCi0gICAgICAgZGN0Y3BfZGF0YS0+bnVtX2NvbmdfZXZlbnRz ID0gMDsNCisgICAgICAgICAgICAgICBkY3RjcF9kYXRhID0gY2N2LT5jY19kYXRhOw0KDQotICAg ICAgIGRjdGNwX2NjX2FsZ28uYWZ0ZXJfaWRsZSA9IG5ld3Jlbm9fY2NfYWxnby5hZnRlcl9pZGxl Ow0KKyAgICAgICAgICAgICAgIC8qIEluaXRpYWxpemUgaW50ZXJuYWwgcGFyYW1ldGVycyBhZnRl ciBpZGxlIHRpbWUgKi8NCisgICAgICAgICAgICAgICBkY3RjcF9kYXRhLT5ieXRlc19lY24gPSAw Ow0KKyAgICAgICAgICAgICAgIGRjdGNwX2RhdGEtPmJ5dGVzX3RvdGFsID0gMDsNCisgICAgICAg ICAgICAgICBkY3RjcF9kYXRhLT5zYXZlX3NuZG54dCA9IENDVihjY3YsIHNuZF9ueHQpOw0KKyAg ICAgICAgICAgICAgIGRjdGNwX2RhdGEtPmFscGhhID0gVl9kY3RjcF9hbHBoYSA8PCBEQ1RDUF9T SElGVDsNCisgICAgICAgICAgICAgICBkY3RjcF9kYXRhLT5lY2VfY3VyciA9IDA7DQorICAgICAg ICAgICAgICAgZGN0Y3BfZGF0YS0+ZWNlX3ByZXYgPSAwOw0KKyAgICAgICAgICAgICAgIGRjdGNw X2RhdGEtPm51bV9jb25nX2V2ZW50cyA9IDA7DQorICAgICAgIH0NCisNCisgICAgICAgbmV3cmVu b19jY19hbGdvLmFmdGVyX2lkbGUoY2N2KTsNCn0NCg0Kc3RhdGljIHZvaWQNCkBAIC0yMDksNyAr MjUyLDcgQEAgZGN0Y3BfY2JfaW5pdChzdHJ1Y3QgY2NfdmFyICpjY3YpDQogICAgICAgICAqIE5v dGU6IERDVENQIGRyYWZ0IHN1Z2dlc3RzIGluaXRpYWwgYWxwaGEgdG8gYmUgMSBidXQgd2UndmUg ZGVjaWRlZCB0bw0KICAgICAgICAgKiBrZWVwIGl0IDAgYXMgZGVmYXVsdC4NCiAgICAgICAgICov DQotICAgICAgIGRjdGNwX2RhdGEtPmFscGhhID0gVl9kY3RjcF9hbHBoYTsNCisgICAgICAgZGN0 Y3BfZGF0YS0+YWxwaGEgPSBWX2RjdGNwX2FscGhhIDw8IERDVENQX1NISUZUOw0KICAgICAgICBk Y3RjcF9kYXRhLT5zYXZlX3NuZG54dCA9IDA7DQogICAgICAgIGRjdGNwX2RhdGEtPmNlX3ByZXYg PSAwOw0KICAgICAgICBkY3RjcF9kYXRhLT5lY2VfY3VyciA9IDA7DQpAQCAtMjI3LDYzICsyNzAs NzMgQEAgc3RhdGljIHZvaWQNCmRjdGNwX2Nvbmdfc2lnbmFsKHN0cnVjdCBjY192YXIgKmNjdiwg dWludDMyX3QgdHlwZSkNCnsNCiAgICAgICAgc3RydWN0IGRjdGNwICpkY3RjcF9kYXRhOw0KLSAg ICAgICB1X2ludCB3aW4sIG1zczsNCisgICAgICAgdV9pbnQgY3duZCwgbXNzOw0KDQotICAgICAg IGRjdGNwX2RhdGEgPSBjY3YtPmNjX2RhdGE7DQotICAgICAgIHdpbiA9IENDVihjY3YsIHNuZF9j d25kKTsNCi0gICAgICAgbXNzID0gQ0NWKGNjdiwgdF9tYXhzZWcpOw0KKyAgICAgICBpZiAoQ0NW KGNjdiwgdF9mbGFncykgJiBURl9FQ05fUEVSTUlUKSB7DQoNCi0gICAgICAgc3dpdGNoICh0eXBl KSB7DQotICAgICAgIGNhc2UgQ0NfTkRVUEFDSzoNCi0gICAgICAgICAgICAgICBpZiAoIUlOX0ZB U1RSRUNPVkVSWShDQ1YoY2N2LCB0X2ZsYWdzKSkpIHsNCisgICAgICAgICAgICAgICBkY3RjcF9k YXRhID0gY2N2LT5jY19kYXRhOw0KKyAgICAgICAgICAgICAgIGN3bmQgPSBDQ1YoY2N2LCBzbmRf Y3duZCk7DQorICAgICAgICAgICAgICAgbXNzID0gQ0NWKGNjdiwgdF9tYXhzZWcpOw0KKw0KKyAg ICAgICAgICAgICAgIC8vWFhSTVM6IGNoZWNrIGlmIHNlc3Npb24gaXMgRUNOLWVuYWJsZWQsIGVs c2UgZG8gbmV3cmVubw0KKw0KKyAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgew0KKyAgICAg ICAgICAgICAgIGNhc2UgQ0NfTkRVUEFDSzoNCisgICAgICAgICAgICAgICAgICAgICAgIGlmICgh SU5fRkFTVFJFQ09WRVJZKENDVihjY3YsIHRfZmxhZ3MpKSkgew0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiAoIUlOX0NPTkdSRUNPVkVSWShDQ1YoY2N2LCB0X2ZsYWdzKSkpIHsN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ1YoY2N2LCBzbmRfc3N0 aHJlc2gpID0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4 KGN3bmQgLyAyLCAyICogbXNzKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkY3RjcF9kYXRhLT5udW1fY29uZ19ldmVudHMrKzsNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBjd25kIGhhcyBhbHJlYWR5IHVwZGF0ZWQgYXMgY29uZ2VzdGlvbg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlY292ZXJ5LiBSZXZlcnNlIGN3bmQg dmFsdWUgdXNpbmcNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBz bmRfY3duZF9wcmV2IGFuZCByZWNhbGN1bGF0ZSBzbmRfc3N0aHJlc2gNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjd25kID0gQ0NWKGNjdiwgc25kX2N3bmRfcHJldik7DQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NWKGNjdiwgc25kX3NzdGhyZXNoKSA9DQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heChjd25kIC8gMiwg MiAqIG1zcyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRU5URVJfUkVDT1ZFUlkoQ0NWKGNjdiwgdF9mbGFncykpOw0K KyAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 DQorICAgICAgICAgICAgICAgY2FzZSBDQ19FQ046DQorICAgICAgICAgICAgICAgICAgICAgICAv Kg0KKyAgICAgICAgICAgICAgICAgICAgICAgICogU2F2ZSBjdXJyZW50IHNuZF9jd25kIHdoZW4g dGhlIGhvc3QgZW5jb3VudGVycyBib3RoDQorICAgICAgICAgICAgICAgICAgICAgICAgKiBjb25n ZXN0aW9uIHJlY292ZXJ5IGFuZCBmYXN0IHJlY292ZXJ5Lg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICovDQorICAgICAgICAgICAgICAgICAgICAgICBDQ1YoY2N2LCBzbmRfY3duZF9wcmV2KSA9 IGN3bmQ7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUlOX0NPTkdSRUNPVkVSWShDQ1Yo Y2N2LCB0X2ZsYWdzKSkpIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NWKGNj diwgc25kX3NzdGhyZXNoKSA9IG1zcyAqDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtYXgod2luIC8gMiAvIG1zcywgMik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChWX2RjdGNwX3Nsb3dzdGFydCAmJg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGN0Y3BfZGF0YS0+bnVtX2NvbmdfZXZlbnRzKysgPT0gMCkgew0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDVihjY3YsIHNuZF9zc3RocmVzaCkgPQ0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgoY3duZCAvIDIs IDIgKiBtc3MpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjdGNw X2RhdGEtPmFscGhhID0gTUFYX0FMUEhBX1ZBTFVFOw0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRjdGNwX2RhdGEtPmJ5dGVzX2VjbiA9IDA7DQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGN0Y3BfZGF0YS0+Ynl0ZXNfdG90YWwgPSAwOw0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjdGNwX2RhdGEtPnNhdmVf c25kbnh0ID0gQ0NWKGNjdiwgc25kX254dCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0gZWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDVihj Y3YsIHNuZF9zc3RocmVzaCkgPQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtYXgoKGN3bmQgLSAoKCh1aW50NjRfdCljd25kICoNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGN0Y3BfZGF0YS0+YWxwaGEpID4+IERDVENQX1NI SUZUKS8yKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAq IG1zcyk7IC8vWFhSTVM6IGRlZmluZSBtYWdpYyBudW1iZXIgZm9yIHNoaWZ0DQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENDVihjY3YsIHNuZF9jd25kKSA9IENDVihjY3YsIHNuZF9z c3RocmVzaCk7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOVEVSX0NPTkdSRUNP VkVSWShDQ1YoY2N2LCB0X2ZsYWdzKSk7DQorICAgICAgICAgICAgICAgICAgICAgICB9DQorICAg ICAgICAgICAgICAgICAgICAgICBkY3RjcF9kYXRhLT5lY2VfY3VyciA9IDE7DQorICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICBjYXNlIENDX1JUTzoNCisgICAg ICAgICAgICAgICAgICAgICAgIGlmIChDQ1YoY2N2LCB0X2ZsYWdzKSAmIFRGX0VDTl9QRVJNSVQp IHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NWKGNjdiwgdF9mbGFncykgfD0g VEZfRUNOX1NORF9DV1I7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjdGNwX3Vw ZGF0ZV9hbHBoYShjY3YpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkY3RjcF9k YXRhLT5zYXZlX3NuZG54dCArPSBDQ1YoY2N2LCB0X21heHNlZyk7DQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRjdGNwX2RhdGEtPm51bV9jb25nX2V2ZW50cysrOw0KLSAgICAgICAg ICAgICAgICAgICAgICAgfSBlbHNlIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogY3duZCBoYXMgYWxyZWFkeSB1cGRhdGVkIGFzIGNvbmdlc3Rpb24NCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICogcmVjb3ZlcnkuIFJldmVyc2UgY3duZCB2YWx1ZSB1c2luZw0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzbmRfY3duZF9wcmV2IGFuZCByZWNh bGN1bGF0ZSBzbmRfc3N0aHJlc2gNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbiA9IENDVihjY3YsIHNuZF9jd25k X3ByZXYpOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ1YoY2N2LCBzbmRfc3N0 aHJlc2gpID0NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCh3aW4gLyAy IC8gbXNzLCAyKSAqIG1zczsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAg ICAgICAgICAgICAgIEVOVEVSX1JFQ09WRVJZKENDVihjY3YsIHRfZmxhZ3MpKTsNCi0gICAgICAg ICAgICAgICB9DQotICAgICAgICAgICAgICAgYnJlYWs7DQotICAgICAgIGNhc2UgQ0NfRUNOOg0K LSAgICAgICAgICAgICAgIC8qDQotICAgICAgICAgICAgICAgICogU2F2ZSBjdXJyZW50IHNuZF9j d25kIHdoZW4gdGhlIGhvc3QgZW5jb3VudGVycyBib3RoDQotICAgICAgICAgICAgICAgICogY29u Z2VzdGlvbiByZWNvdmVyeSBhbmQgZmFzdCByZWNvdmVyeS4NCi0gICAgICAgICAgICAgICAgKi8N Ci0gICAgICAgICAgICAgICBDQ1YoY2N2LCBzbmRfY3duZF9wcmV2KSA9IHdpbjsNCi0gICAgICAg ICAgICAgICBpZiAoIUlOX0NPTkdSRUNPVkVSWShDQ1YoY2N2LCB0X2ZsYWdzKSkpIHsNCi0gICAg ICAgICAgICAgICAgICAgICAgIGlmIChWX2RjdGNwX3Nsb3dzdGFydCAmJg0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRjdGNwX2RhdGEtPm51bV9jb25nX2V2ZW50cysrID09IDApIHsNCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NWKGNjdiwgc25kX3NzdGhyZXNoKSA9DQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3MgKiBtYXgod2luIC8gMiAvIG1z cywgMik7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjdGNwX2RhdGEtPmFscGhh ID0gTUFYX0FMUEhBX1ZBTFVFOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkY3Rj cF9kYXRhLT5ieXRlc19lY24gPSAwOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk Y3RjcF9kYXRhLT5ieXRlc190b3RhbCA9IDA7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRjdGNwX2RhdGEtPnNhdmVfc25kbnh0ID0gQ0NWKGNjdiwgc25kX254dCk7DQotICAgICAg ICAgICAgICAgICAgICAgICB9IGVsc2UNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Q0NWKGNjdiwgc25kX3NzdGhyZXNoKSA9IG1heCgod2luIC0gKCh3aW4gKg0KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGN0Y3BfZGF0YS0+YWxwaGEpID4+IDExKSkgLyBtc3Ms IDIpICogbXNzOw0KLSAgICAgICAgICAgICAgICAgICAgICAgQ0NWKGNjdiwgc25kX2N3bmQpID0g Q0NWKGNjdiwgc25kX3NzdGhyZXNoKTsNCi0gICAgICAgICAgICAgICAgICAgICAgIEVOVEVSX0NP TkdSRUNPVkVSWShDQ1YoY2N2LCB0X2ZsYWdzKSk7DQotICAgICAgICAgICAgICAgfQ0KLSAgICAg ICAgICAgICAgIGRjdGNwX2RhdGEtPmVjZV9jdXJyID0gMTsNCi0gICAgICAgICAgICAgICBicmVh azsNCi0gICAgICAgY2FzZSBDQ19SVE86DQotICAgICAgICAgICAgICAgaWYgKENDVihjY3YsIHRf ZmxhZ3MpICYgVEZfRUNOX1BFUk1JVCkgew0KLSAgICAgICAgICAgICAgICAgICAgICAgQ0NWKGNj diwgdF9mbGFncykgfD0gVEZfRUNOX1NORF9DV1I7DQotICAgICAgICAgICAgICAgICAgICAgICBk Y3RjcF91cGRhdGVfYWxwaGEoY2N2KTsNCi0gICAgICAgICAgICAgICAgICAgICAgIGRjdGNwX2Rh dGEtPnNhdmVfc25kbnh0ICs9IENDVihjY3YsIHRfbWF4c2VnKTsNCi0gICAgICAgICAgICAgICAg ICAgICAgIGRjdGNwX2RhdGEtPm51bV9jb25nX2V2ZW50cysrOw0KKyAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgIGJyZWFrOw0K LSAgICAgICB9DQorICAgICAgIH0gZWxzZQ0KKyAgICAgICAgICAgICAgIG5ld3Jlbm9fY2NfYWxn by5uZXdyZW5vX2Nvbmdfc2lnbmFsKGNjdiwgdHlwZSk7DQp9DQoNCnN0YXRpYyB2b2lkDQpAQCAt MzAzLDcgKzM1Niw3IEBAIGRjdGNwX2Nvbm5faW5pdChzdHJ1Y3QgY2NfdmFyICpjY3YpDQpzdGF0 aWMgdm9pZA0KZGN0Y3BfcG9zdF9yZWNvdmVyeShzdHJ1Y3QgY2NfdmFyICpjY3YpDQp7DQotICAg ICAgIGRjdGNwX2NjX2FsZ28ucG9zdF9yZWNvdmVyeSA9IG5ld3Jlbm9fY2NfYWxnby5wb3N0X3Jl Y292ZXJ5Ow0KKyAgICAgICBuZXdyZW5vX2NjX2FsZ28ucG9zdF9yZWNvdmVyeShjY3YpOw0KDQog ICAgICAgIGlmIChDQ1YoY2N2LCB0X2ZsYWdzKSAmIFRGX0VDTl9QRVJNSVQpDQogICAgICAgICAg ICAgICAgZGN0Y3BfdXBkYXRlX2FscGhhKGNjdik7DQpAQCAtMzI4LDkgKzM4MSwxMiBAQCBkY3Rj cF9lY25wa3RfaGFuZGxlcihzdHJ1Y3QgY2NfdmFyICpjY3YpDQogICAgICAgIGNjZmxhZyA9IGNj di0+ZmxhZ3M7DQogICAgICAgIGRlbGF5X2FjayA9IDE7DQoNCiAgICAgICAgLyoNCi0gICAgICAg ICogRENUQ1AgcmVzcG9uc2VzIGFuIEFDSyBpbW1lZGlhdGVseSB3aGVuIHRoZSBDRSBzdGF0ZQ0K LSAgICAgICAgKiBpbiBiZXR3ZWVuIHRoaXMgc2VnbWVudCBhbmQgdGhlIGxhc3Qgc2VnbWVudCBp cyBub3Qgc2FtZS4NCisgICAgICAgICogRENUQ1AgcmVzcG9uZHMgd2l0aCBhbiBBQ0sgaW1tZWRp YXRlbHkgd2hlbiB0aGUgQ0Ugc3RhdGUNCisgICAgICAgICogaW4gYmV0d2VlbiB0aGlzIHNlZ21l bnQgYW5kIHRoZSBsYXN0IHNlZ21lbnQgaGFzIGNoYW5nZWQuDQogICAgICAgICAqLw0KICAgICAg ICBpZiAoY2NmbGFnICYgQ0NGX0lQSERSX0NFKSB7DQogICAgICAgICAgICAgICAgaWYgKCFkY3Rj cF9kYXRhLT5jZV9wcmV2ICYmIChjY2ZsYWcgJiBDQ0ZfREVMQUNLKSkNCkBAIC0zNTAsOCArNDA2 LDExIEBAIGRjdGNwX2VjbnBrdF9oYW5kbGVyKHN0cnVjdCBjY192YXIgKmNjdikNCg0KICAgICAg ICBpZiAoZGVsYXlfYWNrID09IDApDQogICAgICAgICAgICAgICAgY2N2LT5mbGFncyB8PSBDQ0Zf QUNLTk9XOw0KLSAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgY2N2LT5mbGFncyAmPSB+Q0NG X0FDS05PVzsNCisvLyAgICAgZWxzZQ0KKy8vICAgICAgICAgICAgIGNjdi0+ZmxhZ3MgJj0gfkND Rl9BQ0tOT1c7IC8vWFhSTVM6IHNob3VsZG4ndCB3ZSBsZWF2ZSB0aGlzIGFsb25lIGhlcmU/DQp9 DQoNCi8qDQpAQCAtMzY2LDcgKzQyNSw4IEBAIGRjdGNwX3VwZGF0ZV9hbHBoYShzdHJ1Y3QgY2Nf dmFyICpjY3YpDQoNCiAgICAgICAgZGN0Y3BfZGF0YSA9IGNjdi0+Y2NfZGF0YTsNCiAgICAgICAg YWxwaGFfcHJldiA9IGRjdGNwX2RhdGEtPmFscGhhOw0KLSAgICAgICBkY3RjcF9kYXRhLT5ieXRl c190b3RhbCA9IG1heChkY3RjcF9kYXRhLT5ieXRlc190b3RhbCwgMSk7DQorICAgICAgIGlmIChk Y3RjcF9kYXRhLT5ieXRlc190b3RhbCA8IDEpDQorICAgICAgICAgICAgICAgZGN0Y3BfZGF0YS0+ Ynl0ZXNfdG90YWwgPSAxOw0KDQogICAgICAgIC8qDQogICAgICAgICAqIFVwZGF0ZSBhbHBoYTog YWxwaGEgPSAoMSAtIGcpICogYWxwaGEgKyBnICogRi4NCkBAIC0zNzksOCArNDM5LDggQEAgZGN0 Y3BfdXBkYXRlX2FscGhhKHN0cnVjdCBjY192YXIgKmNjdikNCiAgICAgICAgICogICAgICB1cGRh dGVkIGV2ZXJ5IFJUVA0KICAgICAgICAgKiBBbHBoYSBtdXN0IGJlIHJvdW5kIHRvIDAgLSBNQVhf QUxQSEFfVkFMVUUuDQogICAgICAgICAqLw0KLSAgICAgICBkY3RjcF9kYXRhLT5hbHBoYSA9IG1p bihhbHBoYV9wcmV2IC0gKGFscGhhX3ByZXYgPj4gVl9kY3RjcF9zaGlmdF9nKSArDQotICAgICAg ICAgICAoZGN0Y3BfZGF0YS0+Ynl0ZXNfZWNuIDw8ICgxMCAtIFZfZGN0Y3Bfc2hpZnRfZykpIC8N CisgICAgICAgZGN0Y3BfZGF0YS0+YWxwaGEgPSB1bG1pbihhbHBoYV9wcmV2IC0gKGFscGhhX3By ZXYgPj4gVl9kY3RjcF9zaGlmdF9nKSArDQorICAgICAgICAgICAoKHVpbnQ2NF90KWRjdGNwX2Rh dGEtPmJ5dGVzX2VjbiA8PCAoRENUQ1BfU0hJRlQgLSBWX2RjdGNwX3NoaWZ0X2cpKSAvDQogICAg ICAgICAgICBkY3RjcF9kYXRhLT5ieXRlc190b3RhbCwgTUFYX0FMUEhBX1ZBTFVFKTsNCg0KICAg ICAgICAvKiBJbml0aWFsaXplIGludGVybmFsIHBhcmFtZXRlcnMgZm9yIG5leHQgYWxwaGEgY2Fs Y3VsYXRpb24gKi8NCkBAIC0zOTgsMTQgKzQ1OCwxMCBAQCBkY3RjcF9hbHBoYV9oYW5kbGVyKFNZ U0NUTF9IQU5ETEVSX0FSR1MpDQogICAgICAgIG5ldyA9IFZfZGN0Y3BfYWxwaGE7DQogICAgICAg IGVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJm5ldywgMCwgcmVxKTsNCiAgICAgICAg aWYgKGVycm9yID09IDAgJiYgcmVxLT5uZXdwdHIgIT0gTlVMTCkgew0KLSAgICAgICAgICAgICAg IGlmIChuZXcgPiAxKQ0KKyAgICAgICAgICAgICAgIGlmIChuZXcgPiAxKSAvL1hYUk1TOiB0aGlz IG9ubHkgZWZmZWN0aXZlbHkgYWxsb3dzIGRjdGNwX2FscGhhIHRvIGJlIHNldCB0byAwIG9yIDE/ DQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IEVJTlZBTDsNCi0gICAgICAgICAgICAg ICBlbHNlIHsNCi0gICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXcgPiBNQVhfQUxQSEFfVkFM VUUpDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZfZGN0Y3BfYWxwaGEgPSBNQVhf QUxQSEFfVkFMVUU7DQotICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFZfZGN0Y3BfYWxwaGEgPSBuZXc7DQotICAgICAgICAgICAgICAg fQ0KKyAgICAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAgICAgICAgIFZfZGN0Y3Bf YWxwaGEgPSBuZXc7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gKGVycm9yKTsNCkBAIC00 MjAsMTAgKzQ3NiwxNSBAQCBkY3RjcF9zaGlmdF9nX2hhbmRsZXIoU1lTQ1RMX0hBTkRMRVJfQVJH UykNCiAgICAgICAgbmV3ID0gVl9kY3RjcF9zaGlmdF9nOw0KICAgICAgICBlcnJvciA9IHN5c2N0 bF9oYW5kbGVfaW50KG9pZHAsICZuZXcsIDAsIHJlcSk7DQogICAgICAgIGlmIChlcnJvciA9PSAw ICYmIHJlcS0+bmV3cHRyICE9IE5VTEwpIHsNCi0gICAgICAgICAgICAgICBpZiAobmV3ID4gMSkN CisgICAgICAgICAgICAgICBpZiAobmV3IDwgMCkgLy9YWFJNUzogZGl0dG8NCiAgICAgICAgICAg ICAgICAgICAgICAgIGVycm9yID0gRUlOVkFMOw0KLSAgICAgICAgICAgICAgIGVsc2UNCi0gICAg ICAgICAgICAgICAgICAgICAgIFZfZGN0Y3Bfc2hpZnRfZyA9IG5ldzsNCisgICAgICAgICAgICAg ICBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXcgPiBEQ1RDUF9TSElGVCkg ew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWX2RjdGNwX3NoaWZ0X2cgPSBEQ1RD UF9TSElGVDsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBFSU5WQUw7 DQorICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVl9kY3RjcF9zaGlmdF9nID0gbmV3Ow0KKyAgICAgICAgICAgICAgIH0NCiAgICAg ICAgfQ0KDQogICAgICAgIHJldHVybiAoZXJyb3IpOw0KQEAgLTQzOCw3ICs0OTksNyBAQCBkY3Rj cF9zbG93c3RhcnRfaGFuZGxlcihTWVNDVExfSEFORExFUl9BUkdTKQ0KICAgICAgICBuZXcgPSBW X2RjdGNwX3Nsb3dzdGFydDsNCiAgICAgICAgZXJyb3IgPSBzeXNjdGxfaGFuZGxlX2ludChvaWRw LCAmbmV3LCAwLCByZXEpOw0KICAgICAgICBpZiAoZXJyb3IgPT0gMCAmJiByZXEtPm5ld3B0ciAh PSBOVUxMKSB7DQotICAgICAgICAgICAgICAgaWYgKG5ldyA+IDEpDQorICAgICAgICAgICAgICAg aWYgKChuZXcgPiAxKSB8fCAobmV3IDwgMCkpDQogICAgICAgICAgICAgICAgICAgICAgICBlcnJv ciA9IEVJTlZBTDsNCiAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAg ICBWX2RjdGNwX3Nsb3dzdGFydCA9IG5ldzsNCkBAIC00NTQsNyArNTE1LDcgQEAgU1lTQ1RMX05P REUoX25ldF9pbmV0X3RjcF9jYywgT0lEX0FVVE8sIGRjdGNwLCBDVExGTEFHX1JXLCBOVUxMLA0K U1lTQ1RMX1BST0MoX25ldF9pbmV0X3RjcF9jY19kY3RjcCwgT0lEX0FVVE8sIGFscGhhLA0KICAg ICBDVExGTEFHX1ZORVR8Q1RMVFlQRV9VSU5UfENUTEZMQUdfUlcsICZWTkVUX05BTUUoZGN0Y3Bf YWxwaGEpLCAwLA0KICAgICAmZGN0Y3BfYWxwaGFfaGFuZGxlciwNCi0gICAgIklVIiwgImRjdGNw IGFscGhhIHBhcmFtZXRlciIpOw0KKyAgICAiSVUiLCAiZGN0Y3AgYWxwaGEgcGFyYW1ldGVyIGF0 IHN0YXJ0IG9mIHNlc3Npb24iKTsNCg0KU1lTQ1RMX1BST0MoX25ldF9pbmV0X3RjcF9jY19kY3Rj cCwgT0lEX0FVVE8sIHNoaWZ0X2csDQogICAgIENUTEZMQUdfVk5FVHxDVExUWVBFX1VJTlR8Q1RM RkxBR19SVywgJlZORVRfTkFNRShkY3RjcF9zaGlmdF9nKSwgNCwNCg0KDQpSaWNoYXJkIFNjaGVm ZmVuZWdnZXINCg0KDQpCZWdpbiBmb3J3YXJkZWQgbWVzc2FnZToNCg0KRnJvbTogWXUgSGUgdmlh IGZyZWVic2QtbmV0IDxmcmVlYnNkLW5ldEBmcmVlYnNkLm9yZzxtYWlsdG86ZnJlZWJzZC1uZXRA ZnJlZWJzZC5vcmc+Pg0KU3ViamVjdDogU29tZSBxdWVzdGlvbiBhYm91dCBEQ1RDUCBpbXBsZW1l bnRhdGlvbiBpbiBGcmVlQlNEDQpEYXRlOiBKdW5lIDQsIDIwMTkgYXQgMTE6MDU6MzQgUERUDQpU bzogImZyZWVic2QtbmV0QGZyZWVic2Qub3JnPG1haWx0bzpmcmVlYnNkLW5ldEBmcmVlYnNkLm9y Zz4iIDxmcmVlYnNkLW5ldEBmcmVlYnNkLm9yZzxtYWlsdG86ZnJlZWJzZC1uZXRAZnJlZWJzZC5v cmc+Pg0KQ2M6IEdvcGFrdW1hciBQaWxsYWkgPGdwaWxsYWlAdm13YXJlLmNvbTxtYWlsdG86Z3Bp bGxhaUB2bXdhcmUuY29tPj4NClJlcGx5LVRvOiBZdSBIZSA8eXVoZUB2bXdhcmUuY29tPG1haWx0 bzp5dWhlQHZtd2FyZS5jb20+Pg0KDQpHcmVldGluZ3MhDQoNCknigJltIGEgZ3JhZHVhdGUgc3R1 ZGVudCBmcm9tIENhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5LCBhbmQgY3VycmVudGx5IGFuIGlu dGVybiBpbiBWTXdhcmUuIEnigJltIG5vdyB3b3JraW5nIG9uIHNvbWUgaW50ZXJuYWwgcHJvamVj dCBhYm91dCBpbXBsZW1lbnRpbmcgRENUQ1AgYWxnb3JpdGhtIGFuZCBjb21pbmcgYWNyb3NzIHRo ZSBpbXBsZW1lbnRhdGlvbiBpbiBodHRwczovL3Jldmlld3MuZnJlZWJzZC5vcmcvclMyNzcwNTQu IFRoZXJlIGlzIG9uZSB0aGluZyBJ4oCZbSBxdWl0ZSBjdXJpb3VzIGFib3V0Lg0KDQpJbiBsaW5l IDM4NyBvZiBmaWxlIGNjX3RjcC5jLCB0aGUgdXBkYXRlIG9mIGFscGhhIGlzIGNhbGN1bGF0ZWQg YnkgZm9sbG93aW5nIGNvZGU6DQoNCiAgICBkY3RjcF9kYXRhLT5hbHBoYSA9IG1pbihhbHBoYV9w cmV2IC0gKGFscGhhX3ByZXYgPj4gVl9kY3RjcF9zaGlmdF9nKSArDQogICAgICAgIChkY3RjcF9k YXRhLT5ieXRlc19lY24gPDwgKDEwIC0gVl9kY3RjcF9zaGlmdF9nKSkgLw0KICAgICAgICBkY3Rj cF9kYXRhLT5ieXRlc190b3RhbCwgTUFYX0FMUEhBX1ZBTFVFKTsNCg0KQXMgdGhlIHVwZGF0ZSBm b3JtdWxhIGZyb20gdGhlIG9yaWdpbmFsIHBhcGVyIGlzIGFscGhhID0gKDEgLSBnKSAqIGFscGhh ICsgZyAqIEYsIEnigJltIHdhbmRlcmluZyBhYm91dCB3aGF0IHRoZSBpbnRlbnRpb24gaXMgb2Yg dXNpbmcgbGVmdC1zaGlmdCB3aGVuIGNhbGN1bGF0aW5nIHRoZSBnICogRiBwYXJ0LCB3aGljaCBt aWdodCBzZWVtaW5nbHkgbXVsdGlwbHlpbmcgdGhlIHZhbHVlIHJhdGhlciB0aGFuIGRpdmlkaW5n IGl0IGFzIHN1Z2dlc3RlZCBieSB0aGUgcHJldmlvdXMgY29kZS4gTGV0IGFsb25lIHRoZSBvcGVy YW5kICgxMCAtICAgVl9kY3RjcF9zaGlmdF9nKSBtaWdodCBiZSBhIG5lZ2F0aXZlIHZhbHVlLCB3 aGljaCB3aWxsIGxlYWQgdG8gYW4gdW5kZWZpbmVkIGJlaGF2aW9yIGluIEMuDQoNCkJlY2F1c2Ug dGhpcyBpcyB0aGUgdmVyeSBjZW50cmFsIGZvcm11bGEgb2YgRENUQ1AgYWxnb3JpdGhtLCBJ4oCZ bSBmZWVsaW5nIGl0IG5lY2Vzc2FyeSB0byBoYXZlIGFuIGV4cGxhbmF0aW9uIGZyb20gdGhlIG9y aWdpbmFsIGF1dGhvcnMuDQoNCk9yIGlmIGluIGFub3RoZXIgd2F5IHRoaXMgaXMgYWN0dWFsbHkg YSBidWcsIEnigJltIHdpbGxpbmcgdG8gaW1wcm92ZSBpdC4NCg0KQmVzdCwNCg0KWXUgSGUNCklu dGVybi1Qcm9kdWN0IERldmVsb3BtZW50LU5TQlUsDQpWTXdhcmUNCg0KTWFzdGVyIG9mIFNjaWVu Y2UsIEluZm9ybWF0aW9uIE5ldHdvcmtpbmcsDQpDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eQ0K DQoNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCmZy ZWVic2QtbmV0QGZyZWVic2Qub3JnPG1haWx0bzpmcmVlYnNkLW5ldEBmcmVlYnNkLm9yZz4gbWFp bGluZyBsaXN0DQpodHRwczovL2xpc3RzLmZyZWVic2Qub3JnL21haWxtYW4vbGlzdGluZm8vZnJl ZWJzZC1uZXQNClRvIHVuc3Vic2NyaWJlLCBzZW5kIGFueSBtYWlsIHRvICJmcmVlYnNkLW5ldC11 bnN1YnNjcmliZUBmcmVlYnNkLm9yZzxtYWlsdG86ZnJlZWJzZC1uZXQtdW5zdWJzY3JpYmVAZnJl ZWJzZC5vcmc+Ig0KDQo=