From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1005BC2D0CD for ; Tue, 17 Dec 2019 17:36:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D52562465E for ; Tue, 17 Dec 2019 17:36:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=fb.com header.i=@fb.com header.b="FOjVICZb"; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="XQU5kYB8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727567AbfLQRge (ORCPT ); Tue, 17 Dec 2019 12:36:34 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:17832 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727101AbfLQRge (ORCPT ); Tue, 17 Dec 2019 12:36:34 -0500 Received: from pps.filterd (m0109334.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xBHHOHfG020369; Tue, 17 Dec 2019 09:36:16 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=facebook; bh=0KKEbOCvBfYLkUkUtwKBwbvYK589EVkrNCeflROIPHw=; b=FOjVICZbL3lFUNlCOTzSih8COVk/hJenlh2wGW1kRXXkNJGf0qxJWymEmMPPOSxaVAKB A72kzMS4Vf5MSBUddlyJwpa4ACdVATnrSlSCKrKMgiWZ/P5bTU4PTX6GsQfP7lL4jZDV zzz3oapB9IYYXy8e//FTFsVBVg6v+oM4eJk= Received: from maileast.thefacebook.com ([163.114.130.16]) by mx0a-00082601.pphosted.com with ESMTP id 2wy1qrgkex-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Tue, 17 Dec 2019 09:36:16 -0800 Received: from ash-exhub203.TheFacebook.com (2620:10d:c0a8:83::5) by ash-exhub102.TheFacebook.com (2620:10d:c0a8:82::f) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 17 Dec 2019 09:36:14 -0800 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (100.104.31.183) by o365-in.thefacebook.com (100.104.36.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 17 Dec 2019 09:36:14 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=knRb4jHVlSS+1zLb7blbVknBGNgyiBw5V+/dd15bo6gSNPna7bfTFavMXzZV2F4V+Cfh77udocbzzOoXl+85EYhAINqYMcQLgw4n274NfhUhDp1R+XwiS0xlmKS64ijGq+0lJzsAYsjW6TdvO6RK+Ne9L+UT4NvTu8pw3efHFwmwmBX8tP6FwCtWKfMHVOgRqwdJn2pdgGPFqjV0eNZ2zCHfEWlvaW0wOlNEH3M2g2IcmpRfm/iKlDs4vW8kW4sgDcKVefvxLMwHS5gsTL14IbRu8fdNCOZW7XGXV/VfFJCvj62WOfl4evrtIgJkXpOyOKEnpKHhxcbamziHAxcKmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0KKEbOCvBfYLkUkUtwKBwbvYK589EVkrNCeflROIPHw=; b=bTWj0Y50LP9GBeU3G0d1JP9YavOO+KbLmgSXLf7sBIjqkfTWcG8awLYwAIO+QS5z5GpHRTaw80i+HBMRSugDnZqFvH1GodnGvQHK/oP9/E+1VDDv/MHQG2+th+xfmw7E2kj7+MtgMWf+PoxIEVEG7F1EfTLSjFg3X1QsUQ4W3HEh8XYobrl2kvgj5XGjw9VH3rFIR0RwEcK+WaawRHkkqpTOpMLPiKKTBKVHP0ob4gd/TkXA3ALKLvBNhdRIhB9sQ4bzK54syHMr+uNYQYzN7QFlBujHZUSeaAY48WZjz8+puoo4ATM3xLhV0zBWhLMW/lAztkZX60j925riYpLLtQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fb.com; dmarc=pass action=none header.from=fb.com; dkim=pass header.d=fb.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector2-fb-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0KKEbOCvBfYLkUkUtwKBwbvYK589EVkrNCeflROIPHw=; b=XQU5kYB8IL6KVCnfm0YQSU6USzYsSCbhSP0oAht02XKV9F8A77e5hsZYuA5XqgSTX6QIz6fycj+sG5G9eGehvQZ7CwEoeLWrtYVBb506VsUe1GEJcNaScDD0oN1y+s/PDTSVzPHufp5d+Piv+InNbivh9KcT45FLJ8nObsmVFMA= Received: from DM5PR15MB1675.namprd15.prod.outlook.com (10.175.107.145) by DM5PR15MB1740.namprd15.prod.outlook.com (10.174.106.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2538.20; Tue, 17 Dec 2019 17:36:13 +0000 Received: from DM5PR15MB1675.namprd15.prod.outlook.com ([fe80::2844:b18d:c296:c23]) by DM5PR15MB1675.namprd15.prod.outlook.com ([fe80::2844:b18d:c296:c23%8]) with mapi id 15.20.2538.019; Tue, 17 Dec 2019 17:36:13 +0000 From: Yonghong Song To: Martin Lau , "bpf@vger.kernel.org" CC: Alexei Starovoitov , Daniel Borkmann , David Miller , Kernel Team , "netdev@vger.kernel.org" Subject: Re: [PATCH bpf-next 07/13] bpf: tcp: Support tcp_congestion_ops in bpf Thread-Topic: [PATCH bpf-next 07/13] bpf: tcp: Support tcp_congestion_ops in bpf Thread-Index: AQHVshg0MHOtq9zalE6k1wsDTfMYF6e+nMAA Date: Tue, 17 Dec 2019 17:36:13 +0000 Message-ID: References: <20191214004737.1652076-1-kafai@fb.com> <20191214004753.1653075-1-kafai@fb.com> In-Reply-To: <20191214004753.1653075-1-kafai@fb.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: MWHPR10CA0016.namprd10.prod.outlook.com (2603:10b6:301::26) To DM5PR15MB1675.namprd15.prod.outlook.com (2603:10b6:3:11f::17) x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [2620:10d:c090:200::1:c02c] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0219c892-e134-4729-b30a-08d783179cd2 x-ms-traffictypediagnostic: DM5PR15MB1740: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4502; x-forefront-prvs: 02543CD7CD x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(346002)(376002)(366004)(396003)(39860400002)(136003)(189003)(199004)(316002)(110136005)(31686004)(52116002)(31696002)(86362001)(6506007)(53546011)(186003)(66556008)(66446008)(64756008)(66476007)(66946007)(6486002)(54906003)(5660300002)(36756003)(478600001)(8936002)(8676002)(6512007)(81166006)(4326008)(2616005)(71200400001)(81156014)(2906002);DIR:OUT;SFP:1102;SCL:1;SRVR:DM5PR15MB1740;H:DM5PR15MB1675.namprd15.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: fb.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /TMhwNrtiy1+v/fpokipTrJJ07zGTNbQaMaTuk+yiT0+QMha+VfQeNQneA/sLKyv38N0JIlq11655skbcDCpMK/KN4/iXaz3OErZRe1Qxj3SlAnzv8WB/tK5Thh/Yd17zxCvoeapg0AXvagFR/ajx8QWUxV50emR0WMFomZSMX8APdLjNzOztfUU4kALKO77d4q6EuA9B31/8mhJr7U9Wn9OoJUR1u7Tym5+BrDuE69HL4WYMS/pQc9yRVbh7nbWTJkqQLMJLN2sp8jlNLuifI3PTcAsDO21CdlWKnKix5tGkGbdkvYg+UKGdq8mQziJ3EVez0ZpMqsTYdFopMmn8yAwe8E9NWwm/Ofj84hcH7nnmsaufaerg4C2oH1FBK4ECd269EK+bvy4ZimWibzRGM15R6vFhsgB+u3tR/NMK3GxZytgdKG+mdrKGVhxpyjo Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 0219c892-e134-4729-b30a-08d783179cd2 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Dec 2019 17:36:13.7044 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: /gq5shasTzyCNULBbv7ByRBvBWSdI2wUS3tQP+FUQXSc66Oh5Jkhf3MF6HqzDqgc X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR15MB1740 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-12-17_03:2019-12-17,2019-12-17 signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 suspectscore=0 lowpriorityscore=0 adultscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 mlxlogscore=999 spamscore=0 mlxscore=0 phishscore=0 malwarescore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1912170138 X-FB-Internal: deliver Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQoNCk9uIDEyLzEzLzE5IDQ6NDcgUE0sIE1hcnRpbiBLYUZhaSBMYXUgd3JvdGU6DQo+IFRoaXMg cGF0Y2ggbWFrZXMgInN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMiIHRvIGJlIHRoZSBmaXJzdCB1 c2VyDQo+IG9mIEJQRiBTVFJVQ1RfT1BTLiAgSXQgYWxsb3dzIGltcGxlbWVudGluZyBhIHRjcF9j b25nZXN0aW9uX29wcw0KPiBpbiBicGYuDQo+IA0KPiBUaGUgQlBGIGltcGxlbWVudGVkIHRjcF9j b25nZXN0aW9uX29wcyBjYW4gYmUgdXNlZCBsaWtlDQo+IHJlZ3VsYXIga2VybmVsIHRjcC1jYyB0 aHJvdWdoIHN5c2N0bCBhbmQgc2V0c29ja29wdC4gIGUuZy4NCj4gW3Jvb3RAYXJjaC1mYi12bTEg YnBmXSMgc3lzY3RsIC1hIHwgZWdyZXAgY29uZ2VzdGlvbg0KPiBuZXQuaXB2NC50Y3BfYWxsb3dl ZF9jb25nZXN0aW9uX2NvbnRyb2wgPSByZW5vIGN1YmljIGJwZl9jdWJpYw0KPiBuZXQuaXB2NC50 Y3BfYXZhaWxhYmxlX2Nvbmdlc3Rpb25fY29udHJvbCA9IHJlbm8gYmljIGN1YmljIGJwZl9jdWJp Yw0KPiBuZXQuaXB2NC50Y3BfY29uZ2VzdGlvbl9jb250cm9sID0gYnBmX2N1YmljDQo+IA0KPiBU aGVyZSBoYXMgYmVlbiBhdHRlbXB0IHRvIG1vdmUgdGhlIFRDUCBDQyB0byB0aGUgdXNlciBzcGFj ZQ0KPiAoZS5nLiBDQ1AgaW4gVENQKS4gICBUaGUgY29tbW9uIGFyZ3VtZW50cyBhcmUgZmFzdGVy IHR1cm4gYXJvdW5kLA0KPiBnZXQgYXdheSBmcm9tIGxvbmctdGFpbCBrZXJuZWwgdmVyc2lvbnMg aW4gcHJvZHVjdGlvbi4uLmV0YywNCj4gd2hpY2ggYXJlIGxlZ2l0IHBvaW50cy4NCj4gDQo+IEJQ RiBoYXMgYmVlbiB0aGUgY29udGludW91cyBlZmZvcnQgdG8gam9pbiBib3RoIGtlcm5lbCBhbmQN Cj4gdXNlcnNwYWNlIHVwc2lkZXMgdG9nZXRoZXIgKGUuZy4gWERQIHRvIGdhaW4gdGhlIHBlcmZv cm1hbmNlDQo+IGFkdmFudGFnZSB3aXRob3V0IGJ5cGFzc2luZyB0aGUga2VybmVsKS4gIFRoZSBy ZWNlbnQgQlBGDQo+IGFkdmFuY2VtZW50cyAoaW4gcGFydGljdWxhciBCVEYtYXdhcmUgdmVyaWZp ZXIsIEJQRiB0cmFtcG9saW5lLA0KPiBCUEYgQ08tUkUuLi4pIG1hZGUgaW1wbGVtZW50aW5nIGtl cm5lbCBzdHJ1Y3Qgb3BzIChlLmcuIHRjcCBjYykNCj4gcG9zc2libGUgaW4gQlBGLiAgSXQgYWxs b3dzIGEgZmFzdGVyIHR1cm5hcm91bmQgZm9yIHRlc3RpbmcgYWxnb3JpdGhtDQo+IGluIHRoZSBw cm9kdWN0aW9uIHdoaWxlIGxldmVyYWdpbmcgdGhlIGV4aXN0aW5nIChhbmQgY29udGludWUgZ3Jv d2luZykNCj4gQlBGIGZlYXR1cmUvZnJhbWV3b3JrIGluc3RlYWQgb2YgYnVpbGRpbmcgb25lIHNw ZWNpZmljYWxseSBmb3INCj4gdXNlcnNwYWNlIFRDUCBDQy4NCj4gDQo+IFRoaXMgcGF0Y2ggYWxs b3dzIHdyaXRlIGFjY2VzcyB0byBhIGZldyBmaWVsZHMgaW4gdGNwLXNvY2sNCj4gKGluIGJwZl90 Y3BfY2FfYnRmX3N0cnVjdF9hY2Nlc3MoKSkuDQo+IA0KPiBUaGUgb3B0aW9uYWwgImdldF9pbmZv IiBpcyB1bnN1cHBvcnRlZCBub3cuICBJdCBjYW4gYmUgYWRkZWQNCj4gbGF0ZXIuICBPbmUgcG9z c2libGUgd2F5IGlzIHRvIG91dHB1dCB0aGUgaW5mbyB3aXRoIGEgYnRmLWlkDQo+IHRvIGRlc2Ny aWJlIHRoZSBjb250ZW50Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogTWFydGluIEthRmFpIExhdSA8 a2FmYWlAZmIuY29tPg0KPiAtLS0NCj4gICBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oICAgICAgICAg ICAgfCAgIDIgKw0KPiAgIGluY2x1ZGUvbmV0L3RjcC5oICAgICAgICAgICAgICAgICB8ICAgMSAr DQo+ICAga2VybmVsL2JwZi9icGZfc3RydWN0X29wc190eXBlcy5oIHwgICA3ICstDQo+ICAgbmV0 L2NvcmUvZmlsdGVyLmMgICAgICAgICAgICAgICAgIHwgICAyICstDQo+ICAgbmV0L2lwdjQvTWFr ZWZpbGUgICAgICAgICAgICAgICAgIHwgICA0ICsNCj4gICBuZXQvaXB2NC9icGZfdGNwX2NhLmMg ICAgICAgICAgICAgfCAyMjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAgbmV0 L2lwdjQvdGNwX2NvbmcuYyAgICAgICAgICAgICAgIHwgIDE0ICstDQo+ICAgbmV0L2lwdjQvdGNw X2lwdjQuYyAgICAgICAgICAgICAgIHwgICA2ICstDQo+ICAgbmV0L2lwdjQvdGNwX21pbmlzb2Nr cy5jICAgICAgICAgIHwgICA0ICstDQo+ICAgbmV0L2lwdjQvdGNwX291dHB1dC5jICAgICAgICAg ICAgIHwgICA0ICstDQo+ICAgMTAgZmlsZXMgY2hhbmdlZCwgMjU0IGluc2VydGlvbnMoKyksIDE1 IGRlbGV0aW9ucygtKQ0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXQvaXB2NC9icGZfdGNwX2Nh LmMNCj4gDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZpbHRlci5oIGIvaW5jbHVkZS9s aW51eC9maWx0ZXIuaA0KPiBpbmRleCAzN2FjNzAyNTAzMWQuLjdjMjJjNWU2NTI4ZCAxMDA2NDQN Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9maWx0ZXIuaA0KPiArKysgYi9pbmNsdWRlL2xpbnV4L2Zp bHRlci5oDQo+IEBAIC04NDQsNiArODQ0LDggQEAgaW50IGJwZl9wcm9nX2NyZWF0ZShzdHJ1Y3Qg YnBmX3Byb2cgKipwZnAsIHN0cnVjdCBzb2NrX2Zwcm9nX2tlcm4gKmZwcm9nKTsNCj4gICBpbnQg YnBmX3Byb2dfY3JlYXRlX2Zyb21fdXNlcihzdHJ1Y3QgYnBmX3Byb2cgKipwZnAsIHN0cnVjdCBz b2NrX2Zwcm9nICpmcHJvZywNCj4gICAJCQkgICAgICBicGZfYXV4X2NsYXNzaWNfY2hlY2tfdCB0 cmFucywgYm9vbCBzYXZlX29yaWcpOw0KPiAgIHZvaWQgYnBmX3Byb2dfZGVzdHJveShzdHJ1Y3Qg YnBmX3Byb2cgKmZwKTsNCj4gK2NvbnN0IHN0cnVjdCBicGZfZnVuY19wcm90byAqDQo+ICticGZf YmFzZV9mdW5jX3Byb3RvKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCk7DQo+ICAgDQo+ICAgaW50 IHNrX2F0dGFjaF9maWx0ZXIoc3RydWN0IHNvY2tfZnByb2cgKmZwcm9nLCBzdHJ1Y3Qgc29jayAq c2spOw0KPiAgIGludCBza19hdHRhY2hfYnBmKHUzMiB1ZmQsIHN0cnVjdCBzb2NrICpzayk7DQo+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oDQo+IGlu ZGV4IDg2YjlhODc2NjY0OC4uZmQ4N2ZhMWRmNjAzIDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL25l dC90Y3AuaA0KPiArKysgYi9pbmNsdWRlL25ldC90Y3AuaA0KPiBAQCAtMTAwNyw2ICsxMDA3LDcg QEAgZW51bSB0Y3BfY2FfYWNrX2V2ZW50X2ZsYWdzIHsNCj4gICAjZGVmaW5lIFRDUF9DT05HX05P Tl9SRVNUUklDVEVEIDB4MQ0KPiAgIC8qIFJlcXVpcmVzIEVDTi9FQ1Qgc2V0IG9uIGFsbCBwYWNr ZXRzICovDQo+ICAgI2RlZmluZSBUQ1BfQ09OR19ORUVEU19FQ04JMHgyDQo+ICsjZGVmaW5lIFRD UF9DT05HX01BU0sJKFRDUF9DT05HX05PTl9SRVNUUklDVEVEIHwgVENQX0NPTkdfTkVFRFNfRUNO KQ0KPiAgIA0KPiAgIHVuaW9uIHRjcF9jY19pbmZvOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEva2Vy bmVsL2JwZi9icGZfc3RydWN0X29wc190eXBlcy5oIGIva2VybmVsL2JwZi9icGZfc3RydWN0X29w c190eXBlcy5oDQo+IGluZGV4IDdiYjEzZmY0OWVjMi4uMDY2ZDgzZWExYzk5IDEwMDY0NA0KPiAt LS0gYS9rZXJuZWwvYnBmL2JwZl9zdHJ1Y3Rfb3BzX3R5cGVzLmgNCj4gKysrIGIva2VybmVsL2Jw Zi9icGZfc3RydWN0X29wc190eXBlcy5oDQo+IEBAIC0xLDQgKzEsOSBAQA0KPiAgIC8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovDQo+ICAgLyogaW50ZXJuYWwgZmlsZSAtIGRv IG5vdCBpbmNsdWRlIGRpcmVjdGx5ICovDQo+ICAgDQo+IC0vKiBUbyBiZSBmaWxsZWQgaW4gYSBs YXRlciBwYXRjaCAqLw0KPiArI2lmZGVmIENPTkZJR19CUEZfSklUDQo+ICsjaWZkZWYgQ09ORklH X0lORVQNCj4gKyNpbmNsdWRlIDxuZXQvdGNwLmg+DQo+ICtCUEZfU1RSVUNUX09QU19UWVBFKHRj cF9jb25nZXN0aW9uX29wcykNCj4gKyNlbmRpZg0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9u ZXQvY29yZS9maWx0ZXIuYyBiL25ldC9jb3JlL2ZpbHRlci5jDQo+IGluZGV4IGE0MTFmNzgzNWRl ZS4uZmJiMzY5ODAyNmJkIDEwMDY0NA0KPiAtLS0gYS9uZXQvY29yZS9maWx0ZXIuYw0KPiArKysg Yi9uZXQvY29yZS9maWx0ZXIuYw0KPiBAQCAtNTk3NSw3ICs1OTc1LDcgQEAgYm9vbCBicGZfaGVs cGVyX2NoYW5nZXNfcGt0X2RhdGEodm9pZCAqZnVuYykNCj4gICAJcmV0dXJuIGZhbHNlOw0KPiAg IH0NCj4gICANCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnBmX2Z1bmNfcHJvdG8gKg0KPiArY29u c3Qgc3RydWN0IGJwZl9mdW5jX3Byb3RvICoNCj4gICBicGZfYmFzZV9mdW5jX3Byb3RvKGVudW0g YnBmX2Z1bmNfaWQgZnVuY19pZCkNCj4gICB7DQo+ICAgCXN3aXRjaCAoZnVuY19pZCkgew0KPiBk aWZmIC0tZ2l0IGEvbmV0L2lwdjQvTWFrZWZpbGUgYi9uZXQvaXB2NC9NYWtlZmlsZQ0KPiBpbmRl eCBkNTdlY2ZhZjg5ZDQuLjczNjBkOWIzZWFhZCAxMDA2NDQNCj4gLS0tIGEvbmV0L2lwdjQvTWFr ZWZpbGUNCj4gKysrIGIvbmV0L2lwdjQvTWFrZWZpbGUNCj4gQEAgLTY1LDMgKzY1LDcgQEAgb2Jq LSQoQ09ORklHX05FVExBQkVMKSArPSBjaXBzb19pcHY0Lm8NCj4gICANCj4gICBvYmotJChDT05G SUdfWEZSTSkgKz0geGZybTRfcG9saWN5Lm8geGZybTRfc3RhdGUubyB4ZnJtNF9pbnB1dC5vIFwN Cj4gICAJCSAgICAgIHhmcm00X291dHB1dC5vIHhmcm00X3Byb3RvY29sLm8NCj4gKw0KPiAraWZl cSAoJChDT05GSUdfQlBGX1NZU0NBTEwpLHkpDQo+ICtvYmotJChDT05GSUdfQlBGX0pJVCkgKz0g YnBmX3RjcF9jYS5vDQo+ICtlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvYnBmX3RjcF9j YS5jIGIvbmV0L2lwdjQvYnBmX3RjcF9jYS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uOTY3YWY5ODdiYzI2DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIv bmV0L2lwdjQvYnBmX3RjcF9jYS5jDQo+IEBAIC0wLDAgKzEsMjI1IEBADQo+ICsvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiArLyogQ29weXJpZ2h0IChjKSAyMDE5IEZhY2Vi b29rICAqLw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCj4gKyNpbmNsdWRlIDxs aW51eC9icGZfdmVyaWZpZXIuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9icGYuaD4NCj4gKyNpbmNs dWRlIDxsaW51eC9idGYuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9maWx0ZXIuaD4NCj4gKyNpbmNs dWRlIDxuZXQvdGNwLmg+DQo+ICsNCj4gK3N0YXRpYyB1MzIgb3B0aW9uYWxfb3BzW10gPSB7DQo+ ICsJb2Zmc2V0b2Yoc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcywgaW5pdCksDQo+ICsJb2Zmc2V0 b2Yoc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcywgcmVsZWFzZSksDQo+ICsJb2Zmc2V0b2Yoc3Ry dWN0IHRjcF9jb25nZXN0aW9uX29wcywgc2V0X3N0YXRlKSwNCj4gKwlvZmZzZXRvZihzdHJ1Y3Qg dGNwX2Nvbmdlc3Rpb25fb3BzLCBjd25kX2V2ZW50KSwNCj4gKwlvZmZzZXRvZihzdHJ1Y3QgdGNw X2Nvbmdlc3Rpb25fb3BzLCBpbl9hY2tfZXZlbnQpLA0KPiArCW9mZnNldG9mKHN0cnVjdCB0Y3Bf Y29uZ2VzdGlvbl9vcHMsIHBrdHNfYWNrZWQpLA0KPiArCW9mZnNldG9mKHN0cnVjdCB0Y3BfY29u Z2VzdGlvbl9vcHMsIG1pbl90c29fc2VncyksDQo+ICsJb2Zmc2V0b2Yoc3RydWN0IHRjcF9jb25n ZXN0aW9uX29wcywgc25kYnVmX2V4cGFuZCksDQo+ICsJb2Zmc2V0b2Yoc3RydWN0IHRjcF9jb25n ZXN0aW9uX29wcywgY29uZ19jb250cm9sKSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyB1MzIgdW5z dXBwb3J0ZWRfb3BzW10gPSB7DQo+ICsJb2Zmc2V0b2Yoc3RydWN0IHRjcF9jb25nZXN0aW9uX29w cywgZ2V0X2luZm8pLA0KPiArfTsNCg0KQ291bGQgeW91IGVsYWJvcmF0ZSBieSBhZGRpbmcgc29t ZSBjb21tZW50cyBhdCBsZWFzdCBob3cNCnJlcXVpcmVkIGZpZWxkcyBhcmUgaGFuZGxlZD8NCg0K PiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0Y3Bfc29ja190eXBlOw0KPiAr c3RhdGljIHUzMiB0Y3Bfc29ja19pZCwgc29ja19pZDsNCj4gKw0KPiArc3RhdGljIGludCBicGZf dGNwX2NhX2luaXQoc3RydWN0IGJ0ZiAqX2J0Zl92bWxpbnV4KQ0KPiArew0KPiArCXMzMiB0eXBl X2lkOw0KPiArDQo+ICsJdHlwZV9pZCA9IGJ0Zl9maW5kX2J5X25hbWVfa2luZChfYnRmX3ZtbGlu dXgsICJzb2NrIiwgQlRGX0tJTkRfU1RSVUNUKTsNCj4gKwlpZiAodHlwZV9pZCA8IDApDQo+ICsJ CXJldHVybiAtRUlOVkFMOw0KPiArCXNvY2tfaWQgPSB0eXBlX2lkOw0KPiArDQo+ICsJdHlwZV9p ZCA9IGJ0Zl9maW5kX2J5X25hbWVfa2luZChfYnRmX3ZtbGludXgsICJ0Y3Bfc29jayIsDQo+ICsJ CQkJCUJURl9LSU5EX1NUUlVDVCk7DQo+ICsJaWYgKHR5cGVfaWQgPCAwKQ0KPiArCQlyZXR1cm4g LUVJTlZBTDsNCj4gKwl0Y3Bfc29ja19pZCA9IHR5cGVfaWQ7DQo+ICsJdGNwX3NvY2tfdHlwZSA9 IGJ0Zl90eXBlX2J5X2lkKF9idGZfdm1saW51eCwgdGNwX3NvY2tfaWQpOw0KPiArDQo+ICsJcmV0 dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBib29sIGNoZWNrX29wdGlvbmFsKHUzMiBtZW1i ZXJfb2Zmc2V0KQ0KPiArew0KPiArCXVuc2lnbmVkIGludCBpOw0KPiArDQo+ICsJZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUob3B0aW9uYWxfb3BzKTsgaSsrKSB7DQo+ICsJCWlmIChtZW1iZXJf b2Zmc2V0ID09IG9wdGlvbmFsX29wc1tpXSkNCj4gKwkJCXJldHVybiB0cnVlOw0KPiArCX0NCj4g Kw0KPiArCXJldHVybiBmYWxzZTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGJvb2wgY2hlY2tfdW5z dXBwb3J0ZWQodTMyIG1lbWJlcl9vZmZzZXQpDQo+ICt7DQo+ICsJdW5zaWduZWQgaW50IGk7DQo+ ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh1bnN1cHBvcnRlZF9vcHMpOyBpKysp IHsNCj4gKwkJaWYgKG1lbWJlcl9vZmZzZXQgPT0gdW5zdXBwb3J0ZWRfb3BzW2ldKQ0KPiArCQkJ cmV0dXJuIHRydWU7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIGZhbHNlOw0KPiArfQ0KPiArDQpb Li4uXQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGJwZl92ZXJpZmllcl9vcHMgYnBmX3Rj cF9jYV92ZXJpZmllcl9vcHMgPSB7DQo+ICsJLmdldF9mdW5jX3Byb3RvCQk9IGJwZl90Y3BfY2Ff Z2V0X2Z1bmNfcHJvdG8sDQo+ICsJLmlzX3ZhbGlkX2FjY2Vzcwk9IGJwZl90Y3BfY2FfaXNfdmFs aWRfYWNjZXNzLA0KPiArCS5idGZfc3RydWN0X2FjY2Vzcwk9IGJwZl90Y3BfY2FfYnRmX3N0cnVj dF9hY2Nlc3MsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IGJwZl90Y3BfY2FfaW5pdF9tZW1i ZXIoY29uc3Qgc3RydWN0IGJ0Zl90eXBlICp0LA0KPiArCQkJCSAgY29uc3Qgc3RydWN0IGJ0Zl9t ZW1iZXIgKm1lbWJlciwNCj4gKwkJCQkgIHZvaWQgKmtkYXRhLCBjb25zdCB2b2lkICp1ZGF0YSkN Cj4gK3sNCj4gKwljb25zdCBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICp1dGNwX2NhOw0KPiAr CXN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKnRjcF9jYTsNCj4gKwlzaXplX3QgdGNwX2NhX25h bWVfbGVuOw0KPiArCWludCBwcm9nX2ZkOw0KPiArCXUzMiBtb2ZmOw0KPiArDQo+ICsJdXRjcF9j YSA9IChjb25zdCBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICopdWRhdGE7DQo+ICsJdGNwX2Nh ID0gKHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKilrZGF0YTsNCj4gKw0KPiArCW1vZmYgPSBi dGZfbWVtYmVyX2JpdF9vZmZzZXQodCwgbWVtYmVyKSAvIDg7DQo+ICsJc3dpdGNoIChtb2ZmKSB7 DQo+ICsJY2FzZSBvZmZzZXRvZihzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzLCBmbGFncyk6DQo+ ICsJCWlmICh1dGNwX2NhLT5mbGFncyAmIH5UQ1BfQ09OR19NQVNLKQ0KPiArCQkJcmV0dXJuIC1F SU5WQUw7DQo+ICsJCXRjcF9jYS0+ZmxhZ3MgPSB1dGNwX2NhLT5mbGFnczsNCj4gKwkJcmV0dXJu IDE7DQo+ICsJY2FzZSBvZmZzZXRvZihzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzLCBuYW1lKToN Cj4gKwkJdGNwX2NhX25hbWVfbGVuID0gc3Rybmxlbih1dGNwX2NhLT5uYW1lLCBzaXplb2YodXRj cF9jYS0+bmFtZSkpOw0KPiArCQlpZiAoIXRjcF9jYV9uYW1lX2xlbiB8fA0KPiArCQkgICAgdGNw X2NhX25hbWVfbGVuID09IHNpemVvZih1dGNwX2NhLT5uYW1lKSkNCj4gKwkJCXJldHVybiAtRUlO VkFMOw0KPiArCQltZW1jcHkodGNwX2NhLT5uYW1lLCB1dGNwX2NhLT5uYW1lLCBzaXplb2YodGNw X2NhLT5uYW1lKSk7DQo+ICsJCXJldHVybiAxOw0KPiArCX0NCj4gKw0KPiArCWlmICghYnRmX3R5 cGVfcmVzb2x2ZV9mdW5jX3B0cihidGZfdm1saW51eCwgbWVtYmVyLT50eXBlLCBOVUxMKSkNCj4g KwkJcmV0dXJuIDA7DQo+ICsNCj4gKwlwcm9nX2ZkID0gKGludCkoKih1bnNpZ25lZCBsb25nICop KHVkYXRhICsgbW9mZikpOw0KPiArCWlmICghcHJvZ19mZCAmJiAhY2hlY2tfb3B0aW9uYWwobW9m ZikgJiYgIWNoZWNrX3Vuc3VwcG9ydGVkKG1vZmYpKQ0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCg0K U28gaWYgYSBtZW1iZXIgaXMgb3B0aW9uIG9yIHVuc3VwcG9ydGVkLCB3ZSB3aWxsIHJldHVybiAt RUlOVkFMPw0KSSBwcm9iYWJseSBtaXNzIHNvbWV0aGluZyBoZXJlLg0KDQo+ICsNCj4gKwlyZXR1 cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBicGZfdGNwX2NhX2NoZWNrX21lbWJlcihj b25zdCBzdHJ1Y3QgYnRmX3R5cGUgKnQsDQo+ICsJCQkJICAgY29uc3Qgc3RydWN0IGJ0Zl9tZW1i ZXIgKm1lbWJlcikNCj4gK3sNCj4gKwlpZiAoY2hlY2tfdW5zdXBwb3J0ZWQoYnRmX21lbWJlcl9i aXRfb2Zmc2V0KHQsIG1lbWJlcikgLyA4KSkNCj4gKwkJcmV0dXJuIC1FTk9UU1VQUDsNCj4gKwly ZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBicGZfdGNwX2NhX3JlZyh2b2lkICpr ZGF0YSkNCj4gK3sNCj4gKwlyZXR1cm4gdGNwX3JlZ2lzdGVyX2Nvbmdlc3Rpb25fY29udHJvbChr ZGF0YSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGJwZl90Y3BfY2FfdW5yZWcodm9pZCAq a2RhdGEpDQo+ICt7DQo+ICsJdGNwX3VucmVnaXN0ZXJfY29uZ2VzdGlvbl9jb250cm9sKGtkYXRh KTsNCj4gK30NCj4gKw0KWy4uLl0NCg==