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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C37D4C433EF for ; Fri, 3 Jun 2022 05:43:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239979AbiFCFnp (ORCPT ); Fri, 3 Jun 2022 01:43:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235472AbiFCFnn (ORCPT ); Fri, 3 Jun 2022 01:43:43 -0400 Received: from mail.sberdevices.ru (mail.sberdevices.ru [45.89.227.171]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D28836168; Thu, 2 Jun 2022 22:43:40 -0700 (PDT) Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mail.sberdevices.ru (Postfix) with ESMTP id AF4565FD02; Fri, 3 Jun 2022 08:43:38 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1654235018; bh=31aArHMi6k3CN1KZl/Pk9cGvfNS9fx544j+j68Hm13w=; h=From:To:Subject:Date:Message-ID:Content-Type:MIME-Version; b=f/hL/Hc39ZWEAQyiSDIXMw80WCszsm7g4wqhBDnS1UF7H79c5XyGXYM+0j7MfBI3d qLjC8a4urAxSbTgm9yiTJZEsRbeDs1QH6bj2qAz5quwRAbQHZexvv5IxWF85VLC6s5 TsX/EgZ4px21zUsJXUJS60qy0ouZdFZcFhcaThf1ms6SgKmhVGSNCdE3Dp+FMW8NBN 8mE2kfz+lLJmDSWeGQhG6G9hqnAprSt1G0lJ29yAeeMnQHq9d7slcje7UXdqO+ZloJ c1Xrp06jQsWenF8mkmpSPzdKfiJCU1kLuJLBJT/LTNxf/Fj8d8D1e2B20ck1xtQFDQ BK+jBk6GXEvtw== Received: from S-MS-EXCH01.sberdevices.ru (S-MS-EXCH01.sberdevices.ru [172.16.1.4]) by mail.sberdevices.ru (Postfix) with ESMTP; Fri, 3 Jun 2022 08:43:38 +0300 (MSK) From: Arseniy Krasnov To: Stefano Garzarella , Stefan Hajnoczi , "Michael S. Tsirkin" , Jason Wang , "David S. Miller" , "Jakub Kicinski" , Paolo Abeni CC: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "virtualization@lists.linux-foundation.org" , "netdev@vger.kernel.org" , kernel , Krasnov Arseniy , Arseniy Krasnov Subject: [RFC PATCH v2 7/8] test/vsock: add receive zerocopy tests Thread-Topic: [RFC PATCH v2 7/8] test/vsock: add receive zerocopy tests Thread-Index: AQHYdwzPsutMge28Gk6KqBi/6Tb/AQ== Date: Fri, 3 Jun 2022 05:43:11 +0000 Message-ID: <277175af-8240-0fc7-0cde-66cdbaaa47fa@sberdevices.ru> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.16.1.12] Content-Type: text/plain; charset="utf-8" Content-ID: <72B69E96C56B154B99943A6A71475BD6@sberdevices.ru> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2022/06/03 01:19:00 #19656765 X-KSMG-AntiVirus-Status: Clean, skipped Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org VGhpcyBhZGRzIHRlc3RzIGZvciB6ZXJvY29weSBmZWF0dXJlOiBvbmUgdGVzdA0KY2hlY2tzIGRh dGEgdHJhbnNtaXNzaW9uIHdpdGggc2ltcGxlIGludGVncml0eQ0KY29udHJvbC4gU2Vjb25kIHRl c3QgY292ZXJzICdlcnJvcicgYnJhbmNoZXMgaW4NCnplcm9jb3B5IGxvZ2ljKHRvIGNoZWNrIGlu dmFsaWQgYXJndW1lbnRzIGhhbmRsaW5nKS4NCg0KU2lnbmVkLW9mZi1ieTogQXJzZW5peSBLcmFz bm92IDxBVktyYXNub3ZAc2JlcmRldmljZXMucnU+DQotLS0NCiB0b29scy9pbmNsdWRlL3VhcGkv bGludXgvdmlydGlvX3Zzb2NrLmggfCAgMTEgKw0KIHRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC92 bV9zb2NrZXRzLmggICB8ICAgOCArDQogdG9vbHMvdGVzdGluZy92c29jay9jb250cm9sLmMgICAg ICAgICAgIHwgIDM0ICsrKw0KIHRvb2xzL3Rlc3RpbmcvdnNvY2svY29udHJvbC5oICAgICAgICAg ICB8ICAgMiArDQogdG9vbHMvdGVzdGluZy92c29jay92c29ja190ZXN0LmMgICAgICAgIHwgMjk1 ICsrKysrKysrKysrKysrKysrKysrKysrKw0KIDUgZmlsZXMgY2hhbmdlZCwgMzUwIGluc2VydGlv bnMoKykNCiBjcmVhdGUgbW9kZSAxMDA2NDQgdG9vbHMvaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRp b192c29jay5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2luY2x1ZGUvdWFwaS9saW51eC92 bV9zb2NrZXRzLmgNCg0KZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC92aXJ0 aW9fdnNvY2suaCBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9fdnNvY2suaA0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uYzIzZDg1ZTczZDA0DQotLS0g L2Rldi9udWxsDQorKysgYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX3Zzb2NrLmgN CkBAIC0wLDAgKzEsMTEgQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1v bmx5ICovDQorI2lmbmRlZiBfVUFQSV9MSU5VWF9WSVJUSU9fVlNPQ0tfSA0KKyNkZWZpbmUgX1VB UElfTElOVVhfVklSVElPX1ZTT0NLX0gNCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCisNCitz dHJ1Y3QgdmlydGlvX3Zzb2NrX3Vzcl9oZHIgew0KKwl1MzIgZmxhZ3M7DQorCXUzMiBsZW47DQor CXUzMiBjb3B5X2xlbjsNCit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOw0KKyNlbmRpZiAvKiBf VUFQSV9MSU5VWF9WSVJUSU9fVlNPQ0tfSCAqLw0KZGlmZiAtLWdpdCBhL3Rvb2xzL2luY2x1ZGUv dWFwaS9saW51eC92bV9zb2NrZXRzLmggYi90b29scy9pbmNsdWRlL3VhcGkvbGludXgvdm1fc29j a2V0cy5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5jYWMwYmMz YTcwNDENCi0tLSAvZGV2L251bGwNCisrKyBiL3Rvb2xzL2luY2x1ZGUvdWFwaS9saW51eC92bV9z b2NrZXRzLmgNCkBAIC0wLDAgKzEsOCBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9ubHkgKi8NCisjaWZuZGVmIF9VQVBJX0xJTlVYX1ZNX1NPQ0tFVFNfSA0KKyNkZWZp bmUgX1VBUElfTElOVVhfVk1fU09DS0VUU19IDQorDQorI2RlZmluZSBTT19WTV9TT0NLRVRTX01B UF9SWCA5DQorI2RlZmluZSBTT19WTV9TT0NLRVRTX1pFUk9DT1BZIDEwDQorDQorI2VuZGlmIC8q IF9VQVBJX0xJTlVYX1ZNX1NPQ0tFVFNfSCAqLw0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcv dnNvY2svY29udHJvbC5jIGIvdG9vbHMvdGVzdGluZy92c29jay9jb250cm9sLmMNCmluZGV4IDQ4 NzQ4NzJmYzVhMy4uMDBhNjU0ZThmMTM3IDEwMDY0NA0KLS0tIGEvdG9vbHMvdGVzdGluZy92c29j ay9jb250cm9sLmMNCisrKyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svY29udHJvbC5jDQpAQCAtMTQx LDYgKzE0MSw0MCBAQCB2b2lkIGNvbnRyb2xfd3JpdGVsbihjb25zdCBjaGFyICpzdHIpDQogCXRp bWVvdXRfZW5kKCk7DQogfQ0KIA0KK3ZvaWQgY29udHJvbF93cml0ZWxvbmcobG9uZyB2YWx1ZSkN Cit7DQorCWNoYXIgc3RyWzMyXTsNCisNCisJaWYgKHNucHJpbnRmKHN0ciwgc2l6ZW9mKHN0ciks ICIlbGkiLCB2YWx1ZSkgPj0gc2l6ZW9mKHN0cikpIHsNCisJCXBlcnJvcigic25wcmludGYiKTsN CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwljb250cm9sX3dyaXRlbG4oc3RyKTsN Cit9DQorDQorbG9uZyBjb250cm9sX3JlYWRsb25nKGJvb2wgKm9rKQ0KK3sNCisJbG9uZyB2YWx1 ZSA9IC0xOw0KKwljaGFyICpzdHI7DQorDQorCWlmIChvaykNCisJCSpvayA9IGZhbHNlOw0KKw0K KwlzdHIgPSBjb250cm9sX3JlYWRsbigpOw0KKw0KKwlpZiAoc3RyID09IE5VTEwpDQorCQlyZXR1 cm4gdmFsdWU7DQorDQorCXZhbHVlID0gc3RydG9sKHN0ciwgTlVMTCwgMTApOw0KKwlmcmVlKHN0 cik7DQorDQorCWlmIChvaykNCisJCSpvayA9IHRydWU7DQorDQorCXJldHVybiB2YWx1ZTsNCit9 DQorDQogLyogUmV0dXJuIHRoZSBuZXh0IGxpbmUgZnJvbSB0aGUgY29udHJvbCBzb2NrZXQgKHdp dGhvdXQgdGhlIHRyYWlsaW5nIG5ld2xpbmUpLg0KICAqDQogICogVGhlIHByb2dyYW0gdGVybWlu YXRlcyBpZiBhIHRpbWVvdXQgb2NjdXJzLg0KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3RpbmcvdnNv Y2svY29udHJvbC5oIGIvdG9vbHMvdGVzdGluZy92c29jay9jb250cm9sLmgNCmluZGV4IDUxODE0 YjRmOWFjMS4uNTI3MmFkMjBlODUwIDEwMDY0NA0KLS0tIGEvdG9vbHMvdGVzdGluZy92c29jay9j b250cm9sLmgNCisrKyBiL3Rvb2xzL3Rlc3RpbmcvdnNvY2svY29udHJvbC5oDQpAQCAtOSw3ICs5 LDkgQEAgdm9pZCBjb250cm9sX2luaXQoY29uc3QgY2hhciAqY29udHJvbF9ob3N0LCBjb25zdCBj aGFyICpjb250cm9sX3BvcnQsDQogdm9pZCBjb250cm9sX2NsZWFudXAodm9pZCk7DQogdm9pZCBj b250cm9sX3dyaXRlbG4oY29uc3QgY2hhciAqc3RyKTsNCiBjaGFyICpjb250cm9sX3JlYWRsbih2 b2lkKTsNCitsb25nIGNvbnRyb2xfcmVhZGxvbmcoYm9vbCAqb2spOw0KIHZvaWQgY29udHJvbF9l eHBlY3Rsbihjb25zdCBjaGFyICpzdHIpOw0KIGJvb2wgY29udHJvbF9jbXBsbihjaGFyICpsaW5l LCBjb25zdCBjaGFyICpzdHIsIGJvb2wgZmFpbCk7DQordm9pZCBjb250cm9sX3dyaXRlbG9uZyhs b25nIHZhbHVlKTsNCiANCiAjZW5kaWYgLyogQ09OVFJPTF9IICovDQpkaWZmIC0tZ2l0IGEvdG9v bHMvdGVzdGluZy92c29jay92c29ja190ZXN0LmMgYi90b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2Nr X3Rlc3QuYw0KaW5kZXggZGM1Nzc0NjFhZmMyLi4xYjhjNDBiYWIzM2UgMTAwNjQ0DQotLS0gYS90 b29scy90ZXN0aW5nL3Zzb2NrL3Zzb2NrX3Rlc3QuYw0KKysrIGIvdG9vbHMvdGVzdGluZy92c29j ay92c29ja190ZXN0LmMNCkBAIC0xOCwxMSArMTgsMTYgQEANCiAjaW5jbHVkZSA8c3lzL3NvY2tl dC5oPg0KICNpbmNsdWRlIDx0aW1lLmg+DQogI2luY2x1ZGUgPHN5cy9tbWFuLmg+DQorI2luY2x1 ZGUgPHBvbGwuaD4NCisjaW5jbHVkZSA8dWFwaS9saW51eC92aXJ0aW9fdnNvY2suaD4NCisjaW5j bHVkZSA8dWFwaS9saW51eC92bV9zb2NrZXRzLmg+DQogDQogI2luY2x1ZGUgInRpbWVvdXQuaCIN CiAjaW5jbHVkZSAiY29udHJvbC5oIg0KICNpbmNsdWRlICJ1dGlsLmgiDQogDQorI2RlZmluZSBQ QUdFX1NJWkUgNDA5Ng0KKw0KIHN0YXRpYyB2b2lkIHRlc3Rfc3RyZWFtX2Nvbm5lY3Rpb25fcmVz ZXQoY29uc3Qgc3RydWN0IHRlc3Rfb3B0cyAqb3B0cykNCiB7DQogCXVuaW9uIHsNCkBAIC01OTYs NiArNjAxLDI4NSBAQCBzdGF0aWMgdm9pZCB0ZXN0X3NlcXBhY2tldF9pbnZhbGlkX3JlY19idWZm ZXJfc2VydmVyKGNvbnN0IHN0cnVjdCB0ZXN0X29wdHMgKm9wdA0KIAljbG9zZShmZCk7DQogfQ0K IA0KK3N0YXRpYyB2b2lkIHRlc3Rfc3RyZWFtX3plcm9jb3B5X3J4X2NsaWVudChjb25zdCBzdHJ1 Y3QgdGVzdF9vcHRzICpvcHRzKQ0KK3sNCisJdW5zaWduZWQgbG9uZyB0b3RhbF9zdW07DQorCXVu c2lnbmVkIGxvbmcgemNfb24gPSAxOw0KKwlzaXplX3QgcnhfbWFwX2xlbjsNCisJbG9uZyByZWNf dmFsdWU7DQorCXZvaWQgKnJ4X3ZhOw0KKwlpbnQgZmQ7DQorDQorCWZkID0gdnNvY2tfc3RyZWFt X2Nvbm5lY3Qob3B0cy0+cGVlcl9jaWQsIDEyMzQpOw0KKwlpZiAoZmQgPCAwKSB7DQorCQlwZXJy b3IoImNvbm5lY3QiKTsNCisJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwlpZiAoc2V0 c29ja29wdChmZCwgQUZfVlNPQ0ssIFNPX1ZNX1NPQ0tFVFNfWkVST0NPUFksDQorCQkJCSh2b2lk ICopJnpjX29uLCBzaXplb2YoemNfb24pKSkgew0KKwkJcGVycm9yKCJzZXRzb2Nrb3B0Iik7DQor CQlleGl0KEVYSVRfRkFJTFVSRSk7DQorCX0NCisNCisJcnhfbWFwX2xlbiA9IFBBR0VfU0laRSAq IDM7DQorDQorCXJ4X3ZhID0gbW1hcChOVUxMLCByeF9tYXBfbGVuLCBQUk9UX1JFQUQsIE1BUF9T SEFSRUQsIGZkLCAwKTsNCisJaWYgKHJ4X3ZhID09IE1BUF9GQUlMRUQpIHsNCisJCXBlcnJvcigi bW1hcCIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCXRvdGFsX3N1bSA9IDA7 DQorDQorCXdoaWxlICgxKSB7DQorCQlzdHJ1Y3QgcG9sbGZkIGZkcyA9IHsgMCB9Ow0KKwkJaW50 IGh1bmd1cCA9IDA7DQorCQlpbnQgcmVzOw0KKw0KKwkJZmRzLmZkID0gZmQ7DQorCQlmZHMuZXZl bnRzID0gUE9MTElOIHwgUE9MTEVSUiB8IFBPTExIVVAgfA0KKwkJCSAgICAgUE9MTFJESFVQIHwg UE9MTE5WQUw7DQorDQorCQlyZXMgPSBwb2xsKCZmZHMsIDEsIC0xKTsNCisNCisJCWlmIChyZXMg PCAwKSB7DQorCQkJcGVycm9yKCJwb2xsIik7DQorCQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwkJ fQ0KKw0KKwkJaWYgKGZkcy5yZXZlbnRzICYgUE9MTEVSUikgew0KKwkJCXBlcnJvcigicG9sbCBl cnJvciIpOw0KKwkJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJCX0NCisNCisJCWlmIChmZHMucmV2 ZW50cyAmIFBPTExJTikgew0KKwkJCXN0cnVjdCB2aXJ0aW9fdnNvY2tfdXNyX2hkciAqaGRyOw0K KwkJCXVpbnRwdHJfdCB0bXBfcnhfdmEgPSAodWludHB0cl90KXJ4X3ZhOw0KKwkJCXVuc2lnbmVk IGNoYXIgKmRhdGFfdmE7DQorCQkJdW5zaWduZWQgY2hhciAqZW5kX3ZhOw0KKwkJCXNvY2tsZW5f dCBsZW4gPSBzaXplb2YodG1wX3J4X3ZhKTsNCisNCisJCQlpZiAoZ2V0c29ja29wdChmZCwgQUZf VlNPQ0ssDQorCQkJCQlTT19WTV9TT0NLRVRTX01BUF9SWCwNCisJCQkJCSZ0bXBfcnhfdmEsICZs ZW4pIDwgMCkgew0KKwkJCQlwZXJyb3IoImdldHNvY2tvcHQiKTsNCisJCQkJZXhpdChFWElUX0ZB SUxVUkUpOw0KKwkJCX0NCisNCisJCQloZHIgPSAoc3RydWN0IHZpcnRpb192c29ja191c3JfaGRy ICopcnhfdmE7DQorCQkJLyogU2tpcCBoZWFkZXJzIHBhZ2UgZm9yIGRhdGEuICovDQorCQkJZGF0 YV92YSA9IHJ4X3ZhICsgUEFHRV9TSVpFOw0KKwkJCWVuZF92YSA9ICh1bnNpZ25lZCBjaGFyICop KHRtcF9yeF92YSArIHJ4X21hcF9sZW4pOw0KKw0KKwkJCXdoaWxlIChkYXRhX3ZhICE9IGVuZF92 YSkgew0KKwkJCQlpbnQgZGF0YV9sZW4gPSBoZHItPmxlbjsNCisNCisJCQkJaWYgKCFoZHItPmxl bikgew0KKwkJCQkJaWYgKGZkcy5yZXZlbnRzICYgKFBPTExIVVAgfCBQT0xMUkRIVVApKSB7DQor CQkJCQkJaWYgKGhkciA9PSByeF92YSkNCisJCQkJCQkJaHVuZ3VwID0gMTsNCisJCQkJCX0NCisN CisJCQkJCWJyZWFrOw0KKwkJCQl9DQorDQorCQkJCXdoaWxlIChkYXRhX2xlbiA+IDApIHsNCisJ CQkJCWludCBpOw0KKwkJCQkJaW50IHRvX3JlYWQgPSAoZGF0YV9sZW4gPCBQQUdFX1NJWkUpID8N CisJCQkJCQkJZGF0YV9sZW4gOiBQQUdFX1NJWkU7DQorDQorCQkJCQlmb3IgKGkgPSAwOyBpIDwg dG9fcmVhZDsgaSsrKQ0KKwkJCQkJCXRvdGFsX3N1bSArPSBkYXRhX3ZhW2ldOw0KKw0KKwkJCQkJ ZGF0YV92YSArPSBQQUdFX1NJWkU7DQorCQkJCQlkYXRhX2xlbiAtPSBQQUdFX1NJWkU7DQorCQkJ CX0NCisNCisJCQkJaGRyKys7DQorCQkJfQ0KKw0KKwkJCWlmIChtYWR2aXNlKCh2b2lkICopcnhf dmEsIHJ4X21hcF9sZW4sDQorCQkJCQlNQURWX0RPTlRORUVEKSkgew0KKwkJCQlwZXJyb3IoIm1h ZHZpc2UiKTsNCisJCQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwkJCX0NCisNCisJCQlpZiAoaHVu Z3VwKQ0KKwkJCQlicmVhazsNCisJCX0NCisJfQ0KKw0KKwlpZiAobXVubWFwKHJ4X3ZhLCByeF9t YXBfbGVuKSkgew0KKwkJcGVycm9yKCJtdW5tYXAiKTsNCisJCWV4aXQoRVhJVF9GQUlMVVJFKTsN CisJfQ0KKw0KKwlyZWNfdmFsdWUgPSBjb250cm9sX3JlYWRsb25nKE5VTEwpOw0KKw0KKwlpZiAo dG90YWxfc3VtICE9IHJlY192YWx1ZSkgew0KKwkJZnByaW50ZihzdGRlcnIsICJzdW0gbWlzbWF0 Y2ggJWx1ICE9ICVsdVxuIiwNCisJCQkJdG90YWxfc3VtLCByZWNfdmFsdWUpOw0KKwkJZXhpdChF WElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCWNsb3NlKGZkKTsNCit9DQorDQorc3RhdGljIHZvaWQg dGVzdF9zdHJlYW1femVyb2NvcHlfcnhfc2VydmVyKGNvbnN0IHN0cnVjdCB0ZXN0X29wdHMgKm9w dHMpDQorew0KKwlzaXplX3QgbWF4X2J1Zl9zaXplID0gNDAwMDA7DQorCWxvbmcgdG90YWxfc3Vt ID0gMDsNCisJaW50IG4gPSAxMDsNCisJaW50IGZkOw0KKw0KKwlmZCA9IHZzb2NrX3N0cmVhbV9h Y2NlcHQoVk1BRERSX0NJRF9BTlksIDEyMzQsIE5VTEwpOw0KKwlpZiAoZmQgPCAwKSB7DQorCQlw ZXJyb3IoImFjY2VwdCIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCXdoaWxl IChuKSB7DQorCQl1bnNpZ25lZCBjaGFyICpkYXRhOw0KKwkJc2l6ZV90IGJ1Zl9zaXplOw0KKwkJ aW50IGk7DQorDQorCQlidWZfc2l6ZSA9IDEgKyByYW5kKCkgJSBtYXhfYnVmX3NpemU7DQorDQor CQlkYXRhID0gbWFsbG9jKGJ1Zl9zaXplKTsNCisNCisJCWlmICghZGF0YSkgew0KKwkJCXBlcnJv cigibWFsbG9jIik7DQorCQkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwkJfQ0KKw0KKwkJZm9yIChp ID0gMDsgaSA8IGJ1Zl9zaXplOyBpKyspIHsNCisJCQlkYXRhW2ldID0gcmFuZCgpICYgMHhmZjsN CisJCQl0b3RhbF9zdW0gKz0gZGF0YVtpXTsNCisJCX0NCisNCisJCWlmICh3cml0ZShmZCwgZGF0 YSwgYnVmX3NpemUpICE9IGJ1Zl9zaXplKSB7DQorCQkJcGVycm9yKCJ3cml0ZSIpOw0KKwkJCWV4 aXQoRVhJVF9GQUlMVVJFKTsNCisJCX0NCisNCisJCWZyZWUoZGF0YSk7DQorCQluLS07DQorCX0N CisNCisJY29udHJvbF93cml0ZWxvbmcodG90YWxfc3VtKTsNCisNCisJY2xvc2UoZmQpOw0KK30N CisNCitzdGF0aWMgdm9pZCB0ZXN0X3N0cmVhbV96ZXJvY29weV9yeF9pbnZfY2xpZW50KGNvbnN0 IHN0cnVjdCB0ZXN0X29wdHMgKm9wdHMpDQorew0KKwlzaXplX3QgbWFwX3NpemUgPSBQQUdFX1NJ WkUgKiA1Ow0KKwl1bnNpZ25lZCBsb25nIHpjX29uID0gMTsNCisJc29ja2xlbl90IGxlbjsNCisJ dm9pZCAqbWFwX3ZhOw0KKwlpbnQgZmQ7DQorDQorCWZkID0gdnNvY2tfc3RyZWFtX2Nvbm5lY3Qo b3B0cy0+cGVlcl9jaWQsIDEyMzQpOw0KKwlpZiAoZmQgPCAwKSB7DQorCQlwZXJyb3IoImNvbm5l Y3QiKTsNCisJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwlsZW4gPSBzaXplb2YobWFw X3ZhKTsNCisJbWFwX3ZhID0gMDsNCisNCisJaWYgKHNldHNvY2tvcHQoZmQsIEFGX1ZTT0NLLCBT T19WTV9TT0NLRVRTX1pFUk9DT1BZLA0KKwkJCQkodm9pZCAqKSZ6Y19vbiwgc2l6ZW9mKHpjX29u KSkpIHsNCisJCXBlcnJvcigic2V0c29ja29wdCIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0K Kwl9DQorDQorCS8qIFRyeSB6ZXJvY29weSB3aXRoIGludmFsaWQgbWFwcGluZyBhZGRyZXNzLiAq Lw0KKwlpZiAoZ2V0c29ja29wdChmZCwgQUZfVlNPQ0ssIFNPX1ZNX1NPQ0tFVFNfTUFQX1JYLA0K KwkJCSZtYXBfdmEsICZsZW4pID09IDApIHsNCisJCXBlcnJvcigiZ2V0c29ja29wdCIpOw0KKwkJ ZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCS8qIFRyeSB6ZXJvY29weSB3aXRoIHZhbGlk LCBidXQgbm90IHNvY2tldCBtYXBwaW5nLiAqLw0KKwltYXBfdmEgPSBtbWFwKE5VTEwsIG1hcF9z aXplLCBQUk9UX1JFQUQsDQorCQkgICAgICAgTUFQX0FOT05ZTU9VUyB8IE1BUF9QUklWQVRFLCAt MSwgMCk7DQorCWlmIChtYXBfdmEgPT0gTUFQX0ZBSUxFRCkgew0KKwkJcGVycm9yKCJhbm9uIG1t YXAiKTsNCisJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwlpZiAoZ2V0c29ja29wdChm ZCwgQUZfVlNPQ0ssIFNPX1ZNX1NPQ0tFVFNfTUFQX1JYLA0KKwkJCSZtYXBfdmEsICZsZW4pID09 IDApIHsNCisJCXBlcnJvcigiZ2V0c29ja29wdCIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0K Kwl9DQorDQorCWlmIChtdW5tYXAobWFwX3ZhLCBtYXBfc2l6ZSkpIHsNCisJCXBlcnJvcigibXVu bWFwIik7DQorCQlleGl0KEVYSVRfRkFJTFVSRSk7DQorCX0NCisNCisJLyogVHJ5IHplcm9jb3B5 IHdpdGggdmFsaWQsIGJ1dCB0b28gc21hbGwgbWFwcGluZy4gKi8NCisJbWFwX3ZhID0gbW1hcChO VUxMLCBQQUdFX1NJWkUsIFBST1RfUkVBRCwgTUFQX1NIQVJFRCwgZmQsIDApOw0KKwlpZiAobWFw X3ZhID09IE1BUF9GQUlMRUQpIHsNCisJCXBlcnJvcigic29ja2V0IG1tYXAiKTsNCisJCWV4aXQo RVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwlpZiAoZ2V0c29ja29wdChmZCwgQUZfVlNPQ0ssIFNP X1ZNX1NPQ0tFVFNfTUFQX1JYLA0KKwkJCSZtYXBfdmEsICZsZW4pID09IDApIHsNCisJCXBlcnJv cigiZ2V0c29ja29wdCIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCWlmICht dW5tYXAobWFwX3ZhLCBQQUdFX1NJWkUpKSB7DQorCQlwZXJyb3IoIm11bm1hcCIpOw0KKwkJZXhp dChFWElUX0ZBSUxVUkUpOw0KKwl9DQorDQorCS8qIFRyeSB6ZXJvY29weSB3aXRoIHZhbGlkIG1h cHBpbmcsIGJ1dCBub3QgZnJvbSBmaXJzdCBieXRlLiAqLw0KKwltYXBfdmEgPSBtbWFwKE5VTEws IG1hcF9zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIGZkLCAwKTsNCisJaWYgKG1hcF92YSA9 PSBNQVBfRkFJTEVEKSB7DQorCQlwZXJyb3IoInNvY2tldCBtbWFwIik7DQorCQlleGl0KEVYSVRf RkFJTFVSRSk7DQorCX0NCisNCisJbWFwX3ZhICs9IFBBR0VfU0laRTsNCisNCisJaWYgKGdldHNv Y2tvcHQoZmQsIEFGX1ZTT0NLLCBTT19WTV9TT0NLRVRTX01BUF9SWCwNCisJCQkmbWFwX3ZhLCAm bGVuKSA9PSAwKSB7DQorCQlwZXJyb3IoImdldHNvY2tvcHQiKTsNCisJCWV4aXQoRVhJVF9GQUlM VVJFKTsNCisJfQ0KKw0KKwlpZiAobXVubWFwKG1hcF92YSAtIFBBR0VfU0laRSwgbWFwX3NpemUp KSB7DQorCQlwZXJyb3IoIm11bm1hcCIpOw0KKwkJZXhpdChFWElUX0ZBSUxVUkUpOw0KKwl9DQor DQorCWNvbnRyb2xfd3JpdGVsbigiRE9ORSIpOw0KKw0KKwljbG9zZShmZCk7DQorfQ0KKw0KK3N0 YXRpYyB2b2lkIHRlc3Rfc3RyZWFtX3plcm9jb3B5X3J4X2ludl9zZXJ2ZXIoY29uc3Qgc3RydWN0 IHRlc3Rfb3B0cyAqb3B0cykNCit7DQorCWludCBmZDsNCisNCisJZmQgPSB2c29ja19zdHJlYW1f YWNjZXB0KFZNQUREUl9DSURfQU5ZLCAxMjM0LCBOVUxMKTsNCisNCisJaWYgKGZkIDwgMCkgew0K KwkJcGVycm9yKCJhY2NlcHQiKTsNCisJCWV4aXQoRVhJVF9GQUlMVVJFKTsNCisJfQ0KKw0KKwlj b250cm9sX2V4cGVjdGxuKCJET05FIik7DQorDQorCWNsb3NlKGZkKTsNCit9DQorDQogc3RhdGlj IHN0cnVjdCB0ZXN0X2Nhc2UgdGVzdF9jYXNlc1tdID0gew0KIAl7DQogCQkubmFtZSA9ICJTT0NL X1NUUkVBTSBjb25uZWN0aW9uIHJlc2V0IiwNCkBAIC02NDYsNiArOTMwLDE2IEBAIHN0YXRpYyBz dHJ1Y3QgdGVzdF9jYXNlIHRlc3RfY2FzZXNbXSA9IHsNCiAJCS5ydW5fY2xpZW50ID0gdGVzdF9z ZXFwYWNrZXRfaW52YWxpZF9yZWNfYnVmZmVyX2NsaWVudCwNCiAJCS5ydW5fc2VydmVyID0gdGVz dF9zZXFwYWNrZXRfaW52YWxpZF9yZWNfYnVmZmVyX3NlcnZlciwNCiAJfSwNCisJew0KKwkJLm5h bWUgPSAiU09DS19TVFJFQU0gemVyb2NvcHkgcmVjZWl2ZSIsDQorCQkucnVuX2NsaWVudCA9IHRl c3Rfc3RyZWFtX3plcm9jb3B5X3J4X2NsaWVudCwNCisJCS5ydW5fc2VydmVyID0gdGVzdF9zdHJl YW1femVyb2NvcHlfcnhfc2VydmVyLA0KKwl9LA0KKwl7DQorCQkubmFtZSA9ICJTT0NLX1NUUkVB TSB6ZXJvY29weSBpbnZhbGlkIiwNCisJCS5ydW5fY2xpZW50ID0gdGVzdF9zdHJlYW1femVyb2Nv cHlfcnhfaW52X2NsaWVudCwNCisJCS5ydW5fc2VydmVyID0gdGVzdF9zdHJlYW1femVyb2NvcHlf cnhfaW52X3NlcnZlciwNCisJfSwNCiAJe30sDQogfTsNCiANCkBAIC03MjksNiArMTAyMyw3IEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikNCiAJCS5wZWVyX2NpZCA9IFZNQUREUl9D SURfQU5ZLA0KIAl9Ow0KIA0KKwlzcmFuZCh0aW1lKE5VTEwpKTsNCiAJaW5pdF9zaWduYWxzKCk7 DQogDQogCWZvciAoOzspIHsNCi0tIA0KMi4yNS4xDQo=